Compare commits
No commits in common. "master" and "pages" have entirely different histories.
|
@ -1,13 +0,0 @@
|
|||
.DS_Store
|
||||
node_modules
|
||||
/build
|
||||
/.svelte-kit
|
||||
/package
|
||||
.env
|
||||
.env.*
|
||||
!.env.example
|
||||
|
||||
# Ignore files for PNPM, NPM and YARN
|
||||
pnpm-lock.yaml
|
||||
package-lock.json
|
||||
yarn.lock
|
|
@ -1,31 +0,0 @@
|
|||
/** @type { import("eslint").Linter.Config } */
|
||||
module.exports = {
|
||||
root: true,
|
||||
extends: [
|
||||
'eslint:recommended',
|
||||
'plugin:@typescript-eslint/recommended',
|
||||
'plugin:svelte/recommended',
|
||||
'prettier'
|
||||
],
|
||||
parser: '@typescript-eslint/parser',
|
||||
plugins: ['@typescript-eslint'],
|
||||
parserOptions: {
|
||||
sourceType: 'module',
|
||||
ecmaVersion: 2020,
|
||||
extraFileExtensions: ['.svelte']
|
||||
},
|
||||
env: {
|
||||
browser: true,
|
||||
es2017: true,
|
||||
node: true
|
||||
},
|
||||
overrides: [
|
||||
{
|
||||
files: ['*.svelte'],
|
||||
parser: 'svelte-eslint-parser',
|
||||
parserOptions: {
|
||||
parser: '@typescript-eslint/parser'
|
||||
}
|
||||
}
|
||||
]
|
||||
};
|
|
@ -1,34 +0,0 @@
|
|||
name: Build & Deploy
|
||||
on:
|
||||
push:
|
||||
pull_request:
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
- name: Install pnpm
|
||||
uses: pnpm/action-setup@v3
|
||||
with:
|
||||
version: 8
|
||||
|
||||
- name: Install Node.js
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
cache: pnpm
|
||||
node-version: 20
|
||||
- name: Install dependencies
|
||||
run: pnpm install
|
||||
- name: Vite
|
||||
run: pnpm build
|
||||
|
||||
- name: Deploy
|
||||
uses: peaceiris/actions-gh-pages@v4
|
||||
if: github.ref == 'refs/heads/master'
|
||||
with:
|
||||
github_token: ${{ secrets.GITHUB_TOKEN }}
|
||||
publish_dir: ./build
|
||||
force_orphan: true
|
||||
publish_branch: pages
|
|
@ -1,10 +0,0 @@
|
|||
.DS_Store
|
||||
node_modules
|
||||
/build
|
||||
/.svelte-kit
|
||||
/package
|
||||
.env
|
||||
.env.*
|
||||
!.env.example
|
||||
vite.config.js.timestamp-*
|
||||
vite.config.ts.timestamp-*
|
|
@ -1,4 +0,0 @@
|
|||
# Ignore files for PNPM, NPM and YARN
|
||||
pnpm-lock.yaml
|
||||
package-lock.json
|
||||
yarn.lock
|
|
@ -1,8 +0,0 @@
|
|||
{
|
||||
"useTabs": true,
|
||||
"singleQuote": true,
|
||||
"trailingComma": "none",
|
||||
"printWidth": 100,
|
||||
"plugins": ["prettier-plugin-svelte"],
|
||||
"overrides": [{ "files": "*.svelte", "options": { "parser": "svelte" } }]
|
||||
}
|
|
@ -1,118 +0,0 @@
|
|||
{
|
||||
"prettier.documentSelectors": ["**/*.svelte"],
|
||||
"tailwindCSS.classAttributes": [
|
||||
"class",
|
||||
"accent",
|
||||
"active",
|
||||
"animIndeterminate",
|
||||
"aspectRatio",
|
||||
"background",
|
||||
"badge",
|
||||
"bgBackdrop",
|
||||
"bgDark",
|
||||
"bgDrawer",
|
||||
"bgLight",
|
||||
"blur",
|
||||
"border",
|
||||
"button",
|
||||
"buttonAction",
|
||||
"buttonBack",
|
||||
"buttonClasses",
|
||||
"buttonComplete",
|
||||
"buttonDismiss",
|
||||
"buttonNeutral",
|
||||
"buttonNext",
|
||||
"buttonPositive",
|
||||
"buttonTextCancel",
|
||||
"buttonTextConfirm",
|
||||
"buttonTextFirst",
|
||||
"buttonTextLast",
|
||||
"buttonTextNext",
|
||||
"buttonTextPrevious",
|
||||
"buttonTextSubmit",
|
||||
"caretClosed",
|
||||
"caretOpen",
|
||||
"chips",
|
||||
"color",
|
||||
"controlSeparator",
|
||||
"controlVariant",
|
||||
"cursor",
|
||||
"display",
|
||||
"element",
|
||||
"fill",
|
||||
"fillDark",
|
||||
"fillLight",
|
||||
"flex",
|
||||
"flexDirection",
|
||||
"gap",
|
||||
"gridColumns",
|
||||
"height",
|
||||
"hover",
|
||||
"inactive",
|
||||
"indent",
|
||||
"justify",
|
||||
"meter",
|
||||
"padding",
|
||||
"position",
|
||||
"regionAnchor",
|
||||
"regionBackdrop",
|
||||
"regionBody",
|
||||
"regionCaption",
|
||||
"regionCaret",
|
||||
"regionCell",
|
||||
"regionChildren",
|
||||
"regionChipList",
|
||||
"regionChipWrapper",
|
||||
"regionCone",
|
||||
"regionContent",
|
||||
"regionControl",
|
||||
"regionDefault",
|
||||
"regionDrawer",
|
||||
"regionFoot",
|
||||
"regionFootCell",
|
||||
"regionFooter",
|
||||
"regionHead",
|
||||
"regionHeadCell",
|
||||
"regionHeader",
|
||||
"regionIcon",
|
||||
"regionInput",
|
||||
"regionInterface",
|
||||
"regionInterfaceText",
|
||||
"regionLabel",
|
||||
"regionLead",
|
||||
"regionLegend",
|
||||
"regionList",
|
||||
"regionListItem",
|
||||
"regionNavigation",
|
||||
"regionPage",
|
||||
"regionPanel",
|
||||
"regionRowHeadline",
|
||||
"regionRowMain",
|
||||
"regionSummary",
|
||||
"regionSymbol",
|
||||
"regionTab",
|
||||
"regionTrail",
|
||||
"ring",
|
||||
"rounded",
|
||||
"select",
|
||||
"shadow",
|
||||
"slotDefault",
|
||||
"slotFooter",
|
||||
"slotHeader",
|
||||
"slotLead",
|
||||
"slotMessage",
|
||||
"slotMeta",
|
||||
"slotPageContent",
|
||||
"slotPageFooter",
|
||||
"slotPageHeader",
|
||||
"slotSidebarLeft",
|
||||
"slotSidebarRight",
|
||||
"slotTrail",
|
||||
"spacing",
|
||||
"text",
|
||||
"track",
|
||||
"transition",
|
||||
"width",
|
||||
"zIndex"
|
||||
]
|
||||
}
|
|
@ -0,0 +1 @@
|
|||
<!doctype html> <html class=dark lang=en> <head> <title>Froth Pages</title> <meta charset=utf-8> <link href=/favicon.png rel=icon> <meta content="width=device-width" name=viewport> <link href=/_app/immutable/entry/start.D-zEssk8.js rel=modulepreload> <link href=/_app/immutable/chunks/entry.CDaYBwFn.js rel=modulepreload> <link href=/_app/immutable/chunks/scheduler.BMKC9Qcs.js rel=modulepreload> <link href=/_app/immutable/chunks/index.Cfk6EvZr.js rel=modulepreload> <link href=/_app/immutable/entry/app.liZPI5cI.js rel=modulepreload> <link href=/_app/immutable/chunks/index.CivusM5b.js rel=modulepreload> </head> <body data-sveltekit-preload-data=hover data-theme=froth-noire> <div class="h-full overflow-hidden" style=display:contents> <script>{__sveltekit_1sa6hch={base:""};const t=document.currentScript.parentElement;Promise.all([import("/_app/immutable/entry/start.D-zEssk8.js"),import("/_app/immutable/entry/app.liZPI5cI.js")]).then((([e,a])=>{e.start(a,t)}))}</script> </div>
|
38
README.md
38
README.md
|
@ -1,38 +0,0 @@
|
|||
# create-svelte
|
||||
|
||||
Everything you need to build a Svelte project, powered by [`create-svelte`](https://github.com/sveltejs/kit/tree/main/packages/create-svelte).
|
||||
|
||||
## Creating a project
|
||||
|
||||
If you're seeing this, you've probably already done this step. Congrats!
|
||||
|
||||
```bash
|
||||
# create a new project in the current directory
|
||||
npm create svelte@latest
|
||||
|
||||
# create a new project in my-app
|
||||
npm create svelte@latest my-app
|
||||
```
|
||||
|
||||
## Developing
|
||||
|
||||
Once you've created a project and installed dependencies with `npm install` (or `pnpm install` or `yarn`), start a development server:
|
||||
|
||||
```bash
|
||||
npm run dev
|
||||
|
||||
# or start the server and open the app in a new browser tab
|
||||
npm run dev -- --open
|
||||
```
|
||||
|
||||
## Building
|
||||
|
||||
To create a production version of your app:
|
||||
|
||||
```bash
|
||||
npm run build
|
||||
```
|
||||
|
||||
You can preview the production build with `npm run preview`.
|
||||
|
||||
> To deploy your app, you may need to install an [adapter](https://kit.svelte.dev/docs/adapters) for your target environment.
|
|
@ -0,0 +1 @@
|
|||
export const env={}
|
File diff suppressed because one or more lines are too long
|
@ -0,0 +1 @@
|
|||
.anim-indeterminate.svelte-12wvf64{transform-origin:0% 50%;animation:svelte-12wvf64-anim-indeterminate 2s infinite linear}@keyframes svelte-12wvf64-anim-indeterminate{0%{transform:translate(0) scaleX(0)}40%{transform:translate(0) scaleX(.4)}to{transform:translate(100%) scaleX(.5)}}
|
File diff suppressed because one or more lines are too long
|
@ -0,0 +1,2 @@
|
|||
import{w as S,r as h}from"./index.Cfk6EvZr.js";import{x as M}from"./scheduler.BMKC9Qcs.js";const d={};function p(e){return e==="local"?localStorage:sessionStorage}function u(e,n,a){const o=JSON,l="local";function f(s,i){p(l).setItem(s,o.stringify(i))}if(!d[e]){const s=S(n,t=>{const r=p(l).getItem(e);r&&t(o.parse(r));{const g=c=>{c.key===e&&t(c.newValue?o.parse(c.newValue):null)};return window.addEventListener("storage",g),()=>window.removeEventListener("storage",g)}}),{subscribe:i,set:m}=s;d[e]={set(t){f(e,t),m(t)},update(t){const r=t(M(s));f(e,r),m(r)},subscribe:i}}return d[e]}u("modeOsPrefers",!1);u("modeUserPrefers",void 0);u("modeCurrent",!1);const w="(prefers-reduced-motion: reduce)";function v(){return window.matchMedia(w).matches}const E=h(v(),e=>{{const n=o=>{e(o.matches)},a=window.matchMedia(w);return a.addEventListener("change",n),()=>{a.removeEventListener("change",n)}}});export{E as p};
|
||||
//# sourceMappingURL=ProgressBar.svelte_svelte_type_style_lang.MplOcq4z.js.map
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -0,0 +1,2 @@
|
|||
import{n as b,s as l}from"./scheduler.BMKC9Qcs.js";const n=[];function h(e,o){return{subscribe:p(e,o).subscribe}}function p(e,o=b){let r;const i=new Set;function u(t){if(l(e,t)&&(e=t,r)){const c=!n.length;for(const s of i)s[1](),n.push(s,e);if(c){for(let s=0;s<n.length;s+=2)n[s][0](n[s+1]);n.length=0}}}function f(t){u(t(e))}function a(t,c=b){const s=[t,c];return i.add(s),i.size===1&&(r=o(u,f)||b),t(e),()=>{i.delete(s),i.size===0&&r&&(r(),r=null)}}return{set:u,update:f,subscribe:a}}export{h as r,p as w};
|
||||
//# sourceMappingURL=index.Cfk6EvZr.js.map
|
File diff suppressed because one or more lines are too long
|
@ -0,0 +1,5 @@
|
|||
var Q=Object.defineProperty;var T=(t,e,n)=>e in t?Q(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n;var I=(t,e,n)=>(T(t,typeof e!="symbol"?e+"":e,n),n);import{n as w,H as W,f as L,I as X,J as v,K as R,L as k,M as Y,N as U,O as z,b as q,P as G,Q as Z,R as tt,S as et,T as A,U as nt,V as it,W as st,X as rt,Y as at}from"./scheduler.BMKC9Qcs.js";const V=typeof window<"u";let B=V?()=>window.performance.now():()=>Date.now(),N=V?t=>requestAnimationFrame(t):w;const p=new Set;function D(t){p.forEach(e=>{e.c(t)||(p.delete(e),e.f())}),p.size!==0&&N(D)}function F(t){let e;return p.size===0&&N(D),{promise:new Promise(n=>{p.add(e={c:t,f:n})}),abort(){p.delete(e)}}}const O=new Map;let b=0;function ot(t){let e=5381,n=t.length;for(;n--;)e=(e<<5)-e^t.charCodeAt(n);return e>>>0}function ft(t,e){const n={stylesheet:X(e),rules:{}};return O.set(t,n),n}function H(t,e,n,i,r,a,u,l=0){const d=16.666/i;let s=`{
|
||||
`;for(let g=0;g<=1;g+=d){const m=e+(n-e)*a(g);s+=g*100+`%{${u(m,1-m)}}
|
||||
`}const f=s+`100% {${u(n,1-n)}}
|
||||
}`,o=`__svelte_${ot(f)}_${l}`,_=W(t),{stylesheet:c,rules:$}=O.get(_)||ft(_,t);$[o]||($[o]=!0,c.insertRule(`@keyframes ${o} ${f}`,c.cssRules.length));const h=t.style.animation||"";return t.style.animation=`${h?`${h}, `:""}${o} ${i}ms linear ${r}ms 1 both`,b+=1,o}function M(t,e){const n=(t.style.animation||"").split(", "),i=n.filter(e?a=>a.indexOf(e)<0:a=>a.indexOf("__svelte")===-1),r=n.length-i.length;r&&(t.style.animation=i.join(", "),b-=r,b||ut())}function ut(){N(()=>{b||(O.forEach(t=>{const{ownerNode:e}=t.stylesheet;e&&L(e)}),O.clear())})}let x;function J(){return x||(x=Promise.resolve(),x.then(()=>{x=null})),x}function P(t,e,n){t.dispatchEvent(Y(`${e?"intro":"outro"}${n}`))}const E=new Set;let y;function gt(){y={r:0,c:[],p:y}}function yt(){y.r||v(y.c),y=y.p}function ct(t,e){t&&t.i&&(E.delete(t),t.i(e))}function pt(t,e,n,i){if(t&&t.o){if(E.has(t))return;E.add(t),y.c.push(()=>{E.delete(t),i&&(n&&t.d(1),i())}),t.o(e)}else i&&i()}const K={duration:0};function wt(t,e,n){const i={direction:"in"};let r=e(t,n,i),a=!1,u,l,d=0;function s(){u&&M(t,u)}function f(){const{delay:_=0,duration:c=300,easing:$=U,tick:h=w,css:g}=r||K;g&&(u=H(t,0,1,c,_,$,g,d++)),h(0,1);const m=B()+_,S=m+c;l&&l.abort(),a=!0,k(()=>P(t,!0,"start")),l=F(C=>{if(a){if(C>=S)return h(1,0),P(t,!0,"end"),s(),a=!1;if(C>=m){const j=$((C-m)/c);h(j,1-j)}}return a})}let o=!1;return{start(){o||(o=!0,M(t),R(r)?(r=r(i),J().then(f)):f())},invalidate(){o=!1},end(){a&&(s(),a=!1)}}}function xt(t,e,n){const i={direction:"out"};let r=e(t,n,i),a=!0,u;const l=y;l.r+=1;let d;function s(){const{delay:f=0,duration:o=300,easing:_=U,tick:c=w,css:$}=r||K;$&&(u=H(t,1,0,o,f,_,$));const h=B()+f,g=h+o;k(()=>P(t,!1,"start")),"inert"in t&&(d=t.inert,t.inert=!0),F(m=>{if(a){if(m>=g)return c(0,1),P(t,!1,"end"),--l.r||v(l.c),!1;if(m>=h){const S=_((m-h)/o);c(1-S,S)}}return a})}return R(r)?J().then(()=>{r=r(i),s()}):s(),{end(f){f&&"inert"in t&&(t.inert=d),f&&r.tick&&r.tick(1,0),a&&(u&&M(t,u),a=!1)}}}function vt(t){t&&t.c()}function St(t,e){t&&t.l(e)}function lt(t,e,n){const{fragment:i,after_update:r}=t.$$;i&&i.m(e,n),k(()=>{const a=t.$$.on_mount.map(nt).filter(R);t.$$.on_destroy?t.$$.on_destroy.push(...a):v(a),t.$$.on_mount=[]}),r.forEach(k)}function dt(t,e){const n=t.$$;n.fragment!==null&&(tt(n.after_update),v(n.on_destroy),n.fragment&&n.fragment.d(e),n.on_destroy=n.fragment=null,n.ctx=[])}function _t(t,e){t.$$.dirty[0]===-1&&(it.push(t),st(),t.$$.dirty.fill(0)),t.$$.dirty[e/31|0]|=1<<e%31}function Et(t,e,n,i,r,a,u=null,l=[-1]){const d=et;A(t);const s=t.$$={fragment:null,ctx:[],props:a,update:w,not_equal:r,bound:z(),on_mount:[],on_destroy:[],on_disconnect:[],before_update:[],after_update:[],context:new Map(e.context||(d?d.$$.context:[])),callbacks:z(),dirty:l,skip_bound:!1,root:e.target||d.$$.root};u&&u(s.root);let f=!1;if(s.ctx=n?n(t,e.props||{},(o,_,...c)=>{const $=c.length?c[0]:_;return s.ctx&&r(s.ctx[o],s.ctx[o]=$)&&(!s.skip_bound&&s.bound[o]&&s.bound[o]($),f&&_t(t,o)),_}):[],s.update(),f=!0,v(s.before_update),s.fragment=i?i(s.ctx):!1,e.target){if(e.hydrate){rt();const o=q(e.target);s.fragment&&s.fragment.l(o),o.forEach(L)}else s.fragment&&s.fragment.c();e.intro&&ct(t.$$.fragment),lt(t,e.target,e.anchor),at(),G()}A(d)}class kt{constructor(){I(this,"$$");I(this,"$$set")}$destroy(){dt(this,1),this.$destroy=w}$on(e,n){if(!R(n))return w;const i=this.$$.callbacks[e]||(this.$$.callbacks[e]=[]);return i.push(n),()=>{const r=i.indexOf(n);r!==-1&&i.splice(r,1)}}$set(e){this.$$set&&!Z(e)&&(this.$$.skip_bound=!0,this.$$set(e),this.$$.skip_bound=!1)}}const $t="4";typeof window<"u"&&(window.__svelte||(window.__svelte={v:new Set})).v.add($t);export{kt as S,ct as a,vt as b,yt as c,St as d,dt as e,wt as f,gt as g,xt as h,Et as i,lt as m,pt as t};
|
||||
//# sourceMappingURL=index.CivusM5b.js.map
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -0,0 +1 @@
|
|||
{"version":3,"mappings":";ozCAAaA,GAAW,2BC+CC,IAAAC,EAAAC,KAAa,CAAC,qCAAmCA,EAAM,2JAAvD,GAAAC,EAAA,GAAAF,OAAAC,KAAa,CAAC,yLAAmCA,EAAM,uKAJvD,IAAAD,EAAAC,KAAa,CAAC,qCAAmCA,EAAM,wLAAvD,GAAAC,EAAA,GAAAF,OAAAC,KAAa,CAAC,yLAAmCA,EAAM,yLACtD,IAAAD,EAAAC,KAAa,CAAC,qCAAmCA,EAAM,2JAAvD,GAAAC,EAAA,GAAAF,OAAAC,KAAa,CAAC,0LAAmCA,EAAM,qKAQ1EA,EAAS,IAAAE,EAAAF,CAAA,0cADfG,EAIKC,EAAAC,EAAAC,CAAA,yBAHCN,EAAS,wHACZA,EAAK,gBAALA,EAAK,wCAALA,EAAK,oFAXJ,OAAAA,KAAa,CAAC,kCAQdA,EAAO,IAAAO,EAAAP,CAAA,wRAAPA,EAAO,2KA3CA,OAAAQ,CAAM,EAAAC,GACN,KAAAC,CAAI,EAAAD,GAEJ,aAAAE,CAAY,EAAAF,GACZ,WAAAG,EAAU,IAAAH,GACV,KAAAI,CAAI,EAAAJ,EACJ,QAAAK,EAAS,IAAI,EAAAL,EACb,QAAAM,EAAS,IAAI,EAAAN,EAOxBO,EAAYR,EAAO,KAAK,MAAM,EAE1B,IAAAS,EAAU,GACVC,EAAY,GACZC,EAAQ,KAEZC,EAAO,KACA,MAAAC,EAAcb,EAAO,KAAK,UAAS,KACpCS,IACHK,EAAA,EAAAJ,EAAY,EAAI,EAChBK,EAAI,EAAG,KAAI,KACVD,EAAA,EAAAH,EAAQ,SAAS,OAAS,eAAe,OAK5C,OAAAG,EAAA,EAAAL,EAAU,EAAI,EACPI,6CAM6CT,EAAW,CAAC,EAAAY,oDADbZ,EAAW,CAAC,EAAAY,oDAIZZ,EAAW,CAAC,EAAAY,8RA3B7DhB,EAAO,KAAK,IAAIE,CAAI,mKClBZ,MAACe,GAAQ,CACpB,UAAM,OAAO,wBAAW,oDACxB,UAAM,OAAO,wBAAW,gDACxB,IAAMC,EAAA,WAAO,wBAAW,EAAC,+CAC1B,EAEaC,GAAe,CAAG,EAElBC,GAAa,CACxB,IAAK,CAAC,CAAC,CACN,EAEUC,GAAQ,CACpB,YAAc,CAAC,CAAE,MAAAC,CAAO,IAAK,CAAE,QAAQ,MAAMA,CAAK,GAElD,QAAU,IAAM,EACjB","names":["matchers","switch_value","ctx","dirty","create_if_block_1","insert_hydration","target","div","anchor","create_if_block","stores","$$props","page","constructors","components","form","data_0","data_1","afterUpdate","mounted","navigated","title","onMount","unsubscribe","$$invalidate","tick","$$value","nodes","__vitePreload","server_loads","dictionary","hooks","error"],"ignoreList":[],"sources":["../../../../../generated/client-optimized/matchers.js","../../../../../generated/root.svelte","../../../../../generated/client-optimized/app.js"],"sourcesContent":["export const matchers = {};","<!-- This file is generated by @sveltejs/kit — do not edit it! -->\n\n<script>\n\timport { setContext, afterUpdate, onMount, tick } from 'svelte';\n\timport { browser } from '$app/environment';\n\n\t// stores\n\texport let stores;\n\texport let page;\n\t\n\texport let constructors;\n\texport let components = [];\n\texport let form;\n\texport let data_0 = null;\n\texport let data_1 = null;\n\n\tif (!browser) {\n\t\tsetContext('__svelte__', stores);\n\t}\n\n\t$: stores.page.set(page);\n\tafterUpdate(stores.page.notify);\n\n\tlet mounted = false;\n\tlet navigated = false;\n\tlet title = null;\n\n\tonMount(() => {\n\t\tconst unsubscribe = stores.page.subscribe(() => {\n\t\t\tif (mounted) {\n\t\t\t\tnavigated = true;\n\t\t\t\ttick().then(() => {\n\t\t\t\t\ttitle = document.title || 'untitled page';\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\n\t\tmounted = true;\n\t\treturn unsubscribe;\n\t});\n</script>\n\n{#if constructors[1]}\n\t<svelte:component this={constructors[0]} bind:this={components[0]} data={data_0}>\n\t\t<svelte:component this={constructors[1]} bind:this={components[1]} data={data_1} {form} />\n\t</svelte:component>\n{:else}\n\t<svelte:component this={constructors[0]} bind:this={components[0]} data={data_0} {form} />\n{/if}\n\n{#if mounted}\n\t<div id=\"svelte-announcer\" aria-live=\"assertive\" aria-atomic=\"true\" style=\"position: absolute; left: 0; top: 0; clip: rect(0 0 0 0); clip-path: inset(50%); overflow: hidden; white-space: nowrap; width: 1px; height: 1px\">\n\t\t{#if navigated}\n\t\t\t{title}\n\t\t{/if}\n\t</div>\n{/if}","export { matchers } from './matchers.js';\n\nexport const nodes = [\n\t() => import('./nodes/0'),\n\t() => import('./nodes/1'),\n\t() => import('./nodes/2')\n];\n\nexport const server_loads = [];\n\nexport const dictionary = {\n\t\t\"/\": [2]\n\t};\n\nexport const hooks = {\n\thandleError: (({ error }) => { console.error(error) }),\n\n\treroute: (() => {})\n};\n\nexport { default as root } from '../root.svelte';"],"file":"_app/immutable/entry/app.liZPI5cI.js"}
|
|
@ -0,0 +1,2 @@
|
|||
import{a as t}from"../chunks/entry.CDaYBwFn.js";export{t as start};
|
||||
//# sourceMappingURL=start.D-zEssk8.js.map
|
|
@ -0,0 +1 @@
|
|||
{"version":3,"file":"start.D-zEssk8.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -0,0 +1,2 @@
|
|||
import{s as k,e as d,a as $,c as p,b as h,g as C,d as E,f as i,h as f,i as m,j as b,n as x,k as S,t as v,l as y}from"../chunks/scheduler.BMKC9Qcs.js";import{S as q,i as A}from"../chunks/index.CivusM5b.js";import{s as T}from"../chunks/entry.CDaYBwFn.js";const j=()=>{const r=T;return{page:{subscribe:r.page.subscribe},navigating:{subscribe:r.navigating.subscribe},updated:r.updated}},w={subscribe(r){return j().page.subscribe(r)}};function D(r){let e;return{c(){e=v("An unexpected error occurred.")},l(t){e=y(t,"An unexpected error occurred.")},m(t,o){m(t,e,o)},d(t){t&&i(e)}}}function H(r){let e;return{c(){e=v("The page you are trying to look for could not be found.")},l(t){e=y(t,"The page you are trying to look for could not be found.")},m(t,o){m(t,e,o)},d(t){t&&i(e)}}}function I(r){let e,t,o="404",l,c;function _(s,n){return s[0].status===404?H:D}let u=_(r),a=u(r);return{c(){e=d("div"),t=d("h1"),t.textContent=o,l=$(),c=d("p"),a.c(),this.h()},l(s){e=p(s,"DIV",{class:!0});var n=h(e);t=p(n,"H1",{class:!0,"data-svelte-h":!0}),C(t)!=="svelte-13aqgc6"&&(t.textContent=o),l=E(n),c=p(n,"P",{class:!0});var g=h(c);a.l(g),g.forEach(i),n.forEach(i),this.h()},h(){f(t,"class","text-4xl font-bold mt-8"),f(c,"class","py-4 text-xl"),f(e,"class","mx-auto max-w-page text-center")},m(s,n){m(s,e,n),b(e,t),b(e,l),b(e,c),a.m(c,null)},p(s,[n]){u!==(u=_(s))&&(a.d(1),a=u(s),a&&(a.c(),a.m(c,null)))},i:x,o:x,d(s){s&&i(e),a.d()}}}function P(r,e,t){let o;return S(r,w,l=>t(0,o=l)),[o]}let F=class extends q{constructor(e){super(),A(this,e,P,I,k,{})}};export{F as component};
|
||||
//# sourceMappingURL=1.BbzVPmQE.js.map
|
|
@ -0,0 +1 @@
|
|||
{"version":3,"file":"1.BbzVPmQE.js","sources":["../../../../../../node_modules/.pnpm/@sveltejs+kit@2.5.8_@sveltejs+vite-plugin-svelte@3.1.0_svelte@4.2.17_vite@5.2.11/node_modules/@sveltejs/kit/src/runtime/app/stores.js","../../../../../../src/routes/+error.svelte"],"sourcesContent":["import { getContext } from 'svelte';\nimport { BROWSER } from 'esm-env';\nimport { stores as browser_stores } from '../client/client.js';\n\n/**\n * A function that returns all of the contextual stores. On the server, this must be called during component initialization.\n * Only use this if you need to defer store subscription until after the component has mounted, for some reason.\n */\nexport const getStores = () => {\n\tconst stores = BROWSER ? browser_stores : getContext('__svelte__');\n\n\treturn {\n\t\t/** @type {typeof page} */\n\t\tpage: {\n\t\t\tsubscribe: stores.page.subscribe\n\t\t},\n\t\t/** @type {typeof navigating} */\n\t\tnavigating: {\n\t\t\tsubscribe: stores.navigating.subscribe\n\t\t},\n\t\t/** @type {typeof updated} */\n\t\tupdated: stores.updated\n\t};\n};\n\n/**\n * A readable store whose value contains page data.\n *\n * On the server, this store can only be subscribed to during component initialization. In the browser, it can be subscribed to at any time.\n *\n * @type {import('svelte/store').Readable<import('@sveltejs/kit').Page>}\n */\nexport const page = {\n\tsubscribe(fn) {\n\t\tconst store = __SVELTEKIT_DEV__ ? get_store('page') : getStores().page;\n\t\treturn store.subscribe(fn);\n\t}\n};\n\n/**\n * A readable store.\n * When navigating starts, its value is a `Navigation` object with `from`, `to`, `type` and (if `type === 'popstate'`) `delta` properties.\n * When navigating finishes, its value reverts to `null`.\n *\n * On the server, this store can only be subscribed to during component initialization. In the browser, it can be subscribed to at any time.\n * @type {import('svelte/store').Readable<import('@sveltejs/kit').Navigation | null>}\n */\nexport const navigating = {\n\tsubscribe(fn) {\n\t\tconst store = __SVELTEKIT_DEV__ ? get_store('navigating') : getStores().navigating;\n\t\treturn store.subscribe(fn);\n\t}\n};\n\n/**\n * A readable store whose initial value is `false`. If [`version.pollInterval`](https://kit.svelte.dev/docs/configuration#version) is a non-zero value, SvelteKit will poll for new versions of the app and update the store value to `true` when it detects one. `updated.check()` will force an immediate check, regardless of polling.\n *\n * On the server, this store can only be subscribed to during component initialization. In the browser, it can be subscribed to at any time.\n * @type {import('svelte/store').Readable<boolean> & { check(): Promise<boolean> }}\n */\nexport const updated = {\n\tsubscribe(fn) {\n\t\tconst store = __SVELTEKIT_DEV__ ? get_store('updated') : getStores().updated;\n\n\t\tif (BROWSER) {\n\t\t\tupdated.check = store.check;\n\t\t}\n\n\t\treturn store.subscribe(fn);\n\t},\n\tcheck: () => {\n\t\tthrow new Error(\n\t\t\tBROWSER\n\t\t\t\t? 'Cannot check updated store before subscribing'\n\t\t\t\t: 'Can only check updated store in browser'\n\t\t);\n\t}\n};\n\n/**\n * @template {keyof ReturnType<typeof getStores>} Name\n * @param {Name} name\n * @returns {ReturnType<typeof getStores>[Name]}\n */\nfunction get_store(name) {\n\ttry {\n\t\treturn getStores()[name];\n\t} catch (e) {\n\t\tthrow new Error(\n\t\t\t`Cannot subscribe to '${name}' store on the server outside of a Svelte component, as it is bound to the current request via component context. This prevents state from leaking between users.` +\n\t\t\t\t'For more information, see https://kit.svelte.dev/docs/state-management#avoid-shared-state-on-the-server'\n\t\t);\n\t}\n}\n","<script lang=\"ts\">\n\timport { page } from '$app/stores';\n</script>\n\n<div class=\"mx-auto max-w-page text-center\">\n\t<h1 class=\"text-4xl font-bold mt-8\">404</h1>\n\t<p class=\"py-4 text-xl\">\n\t\t{#if $page.status === 404}\n\t\t\tThe page you are trying to look for could not be found.\n\t\t{:else}\n\t\t\tAn unexpected error occurred.\n\t\t{/if}\n\t</p>\n</div>\n"],"names":["getStores","stores","browser_stores","page","fn","ctx","create_if_block","insert_hydration","target","div","anchor","append_hydration","h1","p"],"mappings":"6PAQO,MAAMA,EAAY,IAAM,CAC9B,MAAMC,EAAmBC,EAElB,MAAA,CAEN,KAAM,CACL,UAAWD,EAAO,KAAK,SACxB,EAEA,WAAY,CACX,UAAWA,EAAO,WAAW,SAC9B,EAEA,QAASA,EAAO,OAAA,CAElB,EASaE,EAAO,CACnB,UAAUC,EAAI,CAEN,OAD+CJ,EAAY,EAAA,KACrD,UAAUI,CAAE,CAC1B,CACD,qCC5BQ,+BAEN,cAFM,+BAEN,sEAJyB,yDAEzB,cAFyB,yDAEzB,4FAFKC,EAAK,CAAA,EAAC,SAAW,IAAGC,kbAH3BC,EASKC,EAAAC,EAAAC,CAAA,EARJC,EAA2CF,EAAAG,CAAA,SAC3CD,EAMGF,EAAAI,CAAA","x_google_ignoreList":[0]}
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -0,0 +1 @@
|
|||
{"version":"1715641342752"}
|
Before Width: | Height: | Size: 647 KiB After Width: | Height: | Size: 647 KiB |
|
@ -1,101 +0,0 @@
|
|||
import type { CustomThemeConfig } from '@skeletonlabs/tw-plugin';
|
||||
|
||||
export const frothNoire: CustomThemeConfig = {
|
||||
name: 'froth-noire',
|
||||
properties: {
|
||||
// =~= Theme Properties =~=
|
||||
'--theme-font-family-base': `system-ui`,
|
||||
'--theme-font-family-heading': `system-ui`,
|
||||
'--theme-font-color-base': '0 0 0',
|
||||
'--theme-font-color-dark': '255 255 255',
|
||||
'--theme-rounded-base': '4px',
|
||||
'--theme-rounded-container': '4px',
|
||||
'--theme-border-base': '1px',
|
||||
// =~= Theme On-X Colors =~=
|
||||
'--on-primary': '0 0 0',
|
||||
'--on-secondary': '0 0 0',
|
||||
'--on-tertiary': '0 0 0',
|
||||
'--on-success': '0 0 0',
|
||||
'--on-warning': '0 0 0',
|
||||
'--on-error': '0 0 0',
|
||||
'--on-surface': '255 255 255',
|
||||
// =~= Theme Colors =~=
|
||||
// primary | #A0A0A0
|
||||
'--color-primary-50': '241 241 241', // #f1f1f1
|
||||
'--color-primary-100': '236 236 236', // #ececec
|
||||
'--color-primary-200': '231 231 231', // #e7e7e7
|
||||
'--color-primary-300': '217 217 217', // #d9d9d9
|
||||
'--color-primary-400': '189 189 189', // #bdbdbd
|
||||
'--color-primary-500': '160 160 160', // #A0A0A0
|
||||
'--color-primary-600': '144 144 144', // #909090
|
||||
'--color-primary-700': '120 120 120', // #787878
|
||||
'--color-primary-800': '96 96 96', // #606060
|
||||
'--color-primary-900': '78 78 78', // #4e4e4e
|
||||
// secondary | #bcbcbc
|
||||
'--color-secondary-50': '245 245 245', // #f5f5f5
|
||||
'--color-secondary-100': '242 242 242', // #f2f2f2
|
||||
'--color-secondary-200': '238 238 238', // #eeeeee
|
||||
'--color-secondary-300': '228 228 228', // #e4e4e4
|
||||
'--color-secondary-400': '208 208 208', // #d0d0d0
|
||||
'--color-secondary-500': '188 188 188', // #bcbcbc
|
||||
'--color-secondary-600': '169 169 169', // #a9a9a9
|
||||
'--color-secondary-700': '141 141 141', // #8d8d8d
|
||||
'--color-secondary-800': '113 113 113', // #717171
|
||||
'--color-secondary-900': '92 92 92', // #5c5c5c
|
||||
// tertiary | #c0c0c0
|
||||
'--color-tertiary-50': '246 246 246', // #f6f6f6
|
||||
'--color-tertiary-100': '242 242 242', // #f2f2f2
|
||||
'--color-tertiary-200': '239 239 239', // #efefef
|
||||
'--color-tertiary-300': '230 230 230', // #e6e6e6
|
||||
'--color-tertiary-400': '211 211 211', // #d3d3d3
|
||||
'--color-tertiary-500': '192 192 192', // #c0c0c0
|
||||
'--color-tertiary-600': '173 173 173', // #adadad
|
||||
'--color-tertiary-700': '144 144 144', // #909090
|
||||
'--color-tertiary-800': '115 115 115', // #737373
|
||||
'--color-tertiary-900': '94 94 94', // #5e5e5e
|
||||
// success | #12984f
|
||||
'--color-success-50': '219 240 229', // #dbf0e5
|
||||
'--color-success-100': '208 234 220', // #d0eadc
|
||||
'--color-success-200': '196 229 211', // #c4e5d3
|
||||
'--color-success-300': '160 214 185', // #a0d6b9
|
||||
'--color-success-400': '89 183 132', // #59b784
|
||||
'--color-success-500': '18 152 79', // #12984f
|
||||
'--color-success-600': '16 137 71', // #108947
|
||||
'--color-success-700': '14 114 59', // #0e723b
|
||||
'--color-success-800': '11 91 47', // #0b5b2f
|
||||
'--color-success-900': '9 74 39', // #094a27
|
||||
// warning | #ffff0b
|
||||
'--color-warning-50': '255 255 218', // #ffffda
|
||||
'--color-warning-100': '255 255 206', // #ffffce
|
||||
'--color-warning-200': '255 255 194', // #ffffc2
|
||||
'--color-warning-300': '255 255 157', // #ffff9d
|
||||
'--color-warning-400': '255 255 84', // #ffff54
|
||||
'--color-warning-500': '255 255 11', // #ffff0b
|
||||
'--color-warning-600': '230 230 10', // #e6e60a
|
||||
'--color-warning-700': '191 191 8', // #bfbf08
|
||||
'--color-warning-800': '153 153 7', // #999907
|
||||
'--color-warning-900': '125 125 5', // #7d7d05
|
||||
// error | #EA3000
|
||||
'--color-error-50': '252 224 217', // #fce0d9
|
||||
'--color-error-100': '251 214 204', // #fbd6cc
|
||||
'--color-error-200': '250 203 191', // #facbbf
|
||||
'--color-error-300': '247 172 153', // #f7ac99
|
||||
'--color-error-400': '240 110 77', // #f06e4d
|
||||
'--color-error-500': '234 48 0', // #EA3000
|
||||
'--color-error-600': '211 43 0', // #d32b00
|
||||
'--color-error-700': '176 36 0', // #b02400
|
||||
'--color-error-800': '140 29 0', // #8c1d00
|
||||
'--color-error-900': '115 24 0', // #731800
|
||||
// surface | #262626
|
||||
'--color-surface-50': '222 222 222', // #dedede
|
||||
'--color-surface-100': '212 212 212', // #d4d4d4
|
||||
'--color-surface-200': '201 201 201', // #c9c9c9
|
||||
'--color-surface-300': '168 168 168', // #a8a8a8
|
||||
'--color-surface-400': '103 103 103', // #676767
|
||||
'--color-surface-500': '38 38 38', // #262626
|
||||
'--color-surface-600': '34 34 34', // #222222
|
||||
'--color-surface-700': '29 29 29', // #1d1d1d
|
||||
'--color-surface-800': '23 23 23', // #171717
|
||||
'--color-surface-900': '19 19 19' // #131313
|
||||
}
|
||||
};
|
|
@ -0,0 +1,2 @@
|
|||
<!doctype html> <html class=dark lang=en> <head> <title>Froth Pages</title> <meta charset=utf-8> <link href=./favicon.png rel=icon> <meta content="width=device-width" name=viewport> <link href=./_app/immutable/assets/0.BK0e5ymq.css rel=stylesheet> <link href=./_app/immutable/assets/ProgressBar.Cirlo5Z8.css rel=stylesheet> <link href=./_app/immutable/entry/start.D-zEssk8.js rel=modulepreload> <link href=./_app/immutable/chunks/entry.CDaYBwFn.js rel=modulepreload> <link href=./_app/immutable/chunks/scheduler.BMKC9Qcs.js rel=modulepreload> <link href=./_app/immutable/chunks/index.Cfk6EvZr.js rel=modulepreload> <link href=./_app/immutable/entry/app.liZPI5cI.js rel=modulepreload> <link href=./_app/immutable/chunks/index.CivusM5b.js rel=modulepreload> <link href=./_app/immutable/nodes/0.CSfd0-ok.js rel=modulepreload> <link href=./_app/immutable/chunks/ProgressBar.svelte_svelte_type_style_lang.MplOcq4z.js rel=modulepreload> <link href=./_app/immutable/nodes/2.C9LKif5l.js rel=modulepreload> </head> <body data-sveltekit-preload-data=hover data-theme=froth-noire> <div class="overflow-hidden h-full" style=display:contents> <div class="flex flex-col h-full overflow-hidden w-full" data-testid=app-shell id=appShell> <header class="z-10 flex-none" id=shell-header> <div class="flex flex-col app-bar bg-surface-100-800-token p-4 space-y-4" data-testid=app-bar aria-label="" aria-labelledby="" role=toolbar> <div class="items-center app-bar-row-main gap-4 grid grid-cols-3"> <div class="flex items-center flex-none app-bar-slot-lead justify-between"><strong class="text-xl uppercase" data-svelte-h=svelte-qj9wju><a href=/ >Froth Pages</a></strong></div> <div class="flex-auto app-bar-slot-default place-self-center"><noscript data-svelte-h=svelte-1wo7yrt><strong>Hey, you! This page is interactive and currently requires JavaScript!</strong> <br> Want a non-JS version? Bother <a href=https://matrix.to/#/@samme:schizo.cafe class=anchor>Sam</a> about it!</noscript></div> <div class="flex items-center flex-none app-bar-slot-trail place-content-end space-x-4"><a href=https://git.froth.zone/sam/static-pages class=anchor data-svelte-h=svelte-1x2v8no>Source Code</a></div></div> </div> </header> <div class="flex h-full overflow-hidden w-full flex-auto"> <div class="flex flex-col flex-1 overflow-x-hidden" id=page style=scrollbar-gutter:auto> <main class=flex-auto id=page-content> <div class="p-4 container md:text-center mx-auto text-left"><div class="pb-24 pt-32 relative space-y-6 z-[1]"><div class="font-bold text-4xl tracking-tight">Host <span class=text-tertiary-500 data-svelte-h=svelte-oana9b>static websites</span> with Froth Pages!</div> <p class="max-w-lg md:mx-auto opacity-90">It's quick, easy, free & fast - just put your project's homepage, developer blog or web experiment into a Git repository at <a href=https://git.froth.zone class=anchor>Froth Git</a> and we'll do the rest.</p> <br> <div class="flex flex-col gap-3 md:block md:space-x-3 md:w-6/12 mx-auto"><div class="space-y-4 stepper" data-testid=stepper> <div class=stepper-content> <div class="space-y-4 step" data-testid=step> <header class="font-bold step-header text-2xl">1 - Make a repository</header> <div class="space-y-4 step-content"><div class=space-y-2 data-svelte-h=svelte-1scoj80><p>Create a public repository named <code class=code>pages</code> to make the site available on the main subdomain.</p> <hr></div> <p data-svelte-h=svelte-14hmija>Or, create a branch named <code class=code>pages</code> in any public repository.</p> <p data-svelte-h=svelte-90vtyv><code class=code>git switch --orphan pages</code><br><code class=code>git rm --cached -r .</code></p> <div class="overflow-hidden shadow shadow bg-neutral-900/90 codeblock rounded-container-token text-sm text-white" data-testid=codeblock> <header class="flex items-center justify-between codeblock-header p-2 pl-4 text-white/50 text-xs uppercase"> <span class=codeblock-language>terminal</span> <button class="!text-white btn btn-sm codeblock-btn variant-soft" type=button>Copy</button></header> <pre class="p-4 break-all codeblock-pre pt-1 whitespace-pre-wrap"><code class="codeblock-code language-shell lineNumbers"><span class=line></span> git switch --orphan pages
|
||||
<span class=line></span> git rm --cached -r .</code></pre></div></div> </div> </div></div></div></div></div></main> </div> </div> </div> <script>{__sveltekit_1sa6hch={base:new URL(".",location).pathname.slice(0,-1)};const t=document.currentScript.parentElement,e=[null,null];Promise.all([import("./_app/immutable/entry/start.D-zEssk8.js"),import("./_app/immutable/entry/app.liZPI5cI.js")]).then((([l,a])=>{l.start(a,t,{node_ids:[0,2],data:e,form:null,error:null})}))}</script> </div>
|
46
package.json
46
package.json
|
@ -1,46 +0,0 @@
|
|||
{
|
||||
"name": "static-pages",
|
||||
"version": "0.0.1",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"dev": "vite dev",
|
||||
"build": "vite build",
|
||||
"preview": "vite preview",
|
||||
"check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json",
|
||||
"check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch",
|
||||
"lint": "prettier --check . && eslint .",
|
||||
"format": "prettier --write ."
|
||||
},
|
||||
"devDependencies": {
|
||||
"@skeletonlabs/skeleton": "2.10.0",
|
||||
"@skeletonlabs/tw-plugin": "0.4.0",
|
||||
"@sveltejs/adapter-auto": "^3.0.0",
|
||||
"@sveltejs/adapter-static": "^3.0.1",
|
||||
"@sveltejs/enhanced-img": "^0.2.0",
|
||||
"@sveltejs/kit": "^2.5.4",
|
||||
"@sveltejs/vite-plugin-svelte": "^3.0.0",
|
||||
"@tailwindcss/forms": "^0.5.7",
|
||||
"@tailwindcss/typography": "0.5.13",
|
||||
"@types/eslint": "^8.56.6",
|
||||
"@types/html-minifier-terser": "^7.0.2",
|
||||
"@types/node": "20.12.11",
|
||||
"@typescript-eslint/eslint-plugin": "^7.4.0",
|
||||
"@typescript-eslint/parser": "^7.4.0",
|
||||
"autoprefixer": "10.4.19",
|
||||
"eslint": "^9.0.0",
|
||||
"eslint-config-prettier": "^9.1.0",
|
||||
"eslint-plugin-svelte": "^2.35.1",
|
||||
"html-minifier-terser": "^7.2.0",
|
||||
"postcss": "8.4.38",
|
||||
"prettier": "^3.1.1",
|
||||
"prettier-plugin-svelte": "^3.1.2",
|
||||
"svelte": "^4.2.7",
|
||||
"svelte-check": "^3.6.8",
|
||||
"tailwindcss": "3.4.3",
|
||||
"tslib": "^2.4.1",
|
||||
"typescript": "^5.4.3",
|
||||
"vite": "^5.2.6",
|
||||
"vite-plugin-tailwind-purgecss": "0.3.3"
|
||||
},
|
||||
"type": "module"
|
||||
}
|
3133
pnpm-lock.yaml
3133
pnpm-lock.yaml
File diff suppressed because it is too large
Load Diff
|
@ -1,6 +0,0 @@
|
|||
module.exports = {
|
||||
plugins: {
|
||||
tailwindcss: {},
|
||||
autoprefixer: {}
|
||||
}
|
||||
};
|
|
@ -1,5 +0,0 @@
|
|||
{
|
||||
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
|
||||
"extends": ["config:recommended", ":pinSkipCi", ":enableVulnerabilityAlerts", ":semanticCommits"],
|
||||
"automerge": true
|
||||
}
|
|
@ -1,9 +0,0 @@
|
|||
// See https://kit.svelte.dev/docs/types#app
|
||||
// for information about these interfaces
|
||||
// and what to do when importing types
|
||||
declare namespace App {
|
||||
// interface Locals {}
|
||||
// interface PageData {}
|
||||
// interface Error {}
|
||||
// interface Platform {}
|
||||
}
|
13
src/app.html
13
src/app.html
|
@ -1,13 +0,0 @@
|
|||
<!doctype html>
|
||||
<html lang="en" class="dark">
|
||||
<head>
|
||||
<title>Froth Pages</title>
|
||||
<meta charset="utf-8" />
|
||||
<link rel="icon" href="%sveltekit.assets%/favicon.png" />
|
||||
<meta name="viewport" content="width=device-width" />
|
||||
%sveltekit.head%
|
||||
</head>
|
||||
<body data-sveltekit-preload-data="hover" data-theme="froth-noire">
|
||||
<div style="display: contents" class="h-full overflow-hidden">%sveltekit.body%</div>
|
||||
</body>
|
||||
</html>
|
|
@ -1,9 +0,0 @@
|
|||
@tailwind base;
|
||||
@tailwind components;
|
||||
@tailwind utilities;
|
||||
@tailwind variants;
|
||||
|
||||
html,
|
||||
body {
|
||||
@apply h-full overflow-hidden;
|
||||
}
|
|
@ -1,35 +0,0 @@
|
|||
import { minify } from 'html-minifier-terser';
|
||||
import { building } from '$app/environment';
|
||||
|
||||
const minification_options = {
|
||||
collapseBooleanAttributes: true,
|
||||
collapseWhitespace: true,
|
||||
conservativeCollapse: true,
|
||||
decodeEntities: true,
|
||||
html5: true,
|
||||
ignoreCustomComments: [/^#/],
|
||||
minifyCSS: true,
|
||||
minifyJS: true,
|
||||
removeAttributeQuotes: true,
|
||||
removeComments: true,
|
||||
removeOptionalTags: true,
|
||||
removeRedundantAttributes: true,
|
||||
removeScriptTypeAttributes: true,
|
||||
removeStyleLinkTypeAttributes: true,
|
||||
sortAttributes: true,
|
||||
sortClassName: true
|
||||
};
|
||||
|
||||
/** @type {import('@sveltejs/kit').Handle} */
|
||||
export async function handle({ event, resolve }) {
|
||||
let page = '';
|
||||
|
||||
return resolve(event, {
|
||||
transformPageChunk: ({ html, done }) => {
|
||||
page += html;
|
||||
if (done) {
|
||||
return building ? minify(page, minification_options) : page;
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
|
@ -1,8 +0,0 @@
|
|||
// place files you want to import through the `$lib` alias in this folder.
|
||||
|
||||
export const gitDomain = 'git.froth.zone';
|
||||
export const gitName = 'Froth Git';
|
||||
export const pagesDomain = 'pages.git.froth.zone';
|
||||
export const pagesName = 'Froth Pages';
|
||||
export const ipv4 = '150.136.112.69';
|
||||
export const ipv6 = '2603:c020:4004:62ee:d84c:2488:5bdb:99c1';
|
|
@ -1,148 +0,0 @@
|
|||
<script lang="ts">
|
||||
import { browser } from '$app/environment';
|
||||
import { gitDomain, ipv4, ipv6, pagesDomain } from '$lib';
|
||||
import { Accordion, AccordionItem, CodeBlock, Step, Stepper } from '@skeletonlabs/skeleton';
|
||||
|
||||
let username = '';
|
||||
let repository = '';
|
||||
let branch = '';
|
||||
|
||||
$: navDomain = `https://${username}.${pagesDomain}${!repository ? '' : `/${repository}`}${!branch ? '' : `/@${branch}`}`;
|
||||
$: dnsDomain = `${!branch ? '' : `${branch}.`}${!repository ? '' : `${repository}.`}${username}.${pagesDomain}`;
|
||||
|
||||
function codebergDocs() {
|
||||
if (browser) {
|
||||
window.open('https://docs.codeberg.org/codeberg-pages/', '_blank');
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<Stepper
|
||||
on:complete={codebergDocs}
|
||||
buttonCompleteLabel="Open Documentation"
|
||||
buttonComplete="variant-filled-success"
|
||||
>
|
||||
<Step>
|
||||
<svelte:fragment slot="navigation">
|
||||
<a href="https://{gitDomain}/repo/create" target="_blank" class="btn variant-filled-secondary"
|
||||
>Create a repository!</a
|
||||
>
|
||||
</svelte:fragment>
|
||||
<svelte:fragment slot="header">1 - Make a repository</svelte:fragment>
|
||||
<div class="space-y-2">
|
||||
<p>
|
||||
Create a public repository named <code class="code">pages</code> to make the site available on
|
||||
the main subdomain.
|
||||
</p>
|
||||
<hr />
|
||||
</div>
|
||||
<p>Or, create a branch named <code class="code">pages</code> in any public repository.</p>
|
||||
<p>
|
||||
<code class="code">git switch --orphan pages</code><br /><code class="code"
|
||||
>git rm --cached -r .</code
|
||||
>
|
||||
</p>
|
||||
<CodeBlock
|
||||
buttonCopied="Copied!"
|
||||
lineNumbers={true}
|
||||
language="shell"
|
||||
code={`git switch --orphan pages
|
||||
git rm --cached -r .`}
|
||||
></CodeBlock>
|
||||
</Step>
|
||||
<Step>
|
||||
<svelte:fragment slot="header">2 - Add your files</svelte:fragment>
|
||||
<p>Push your static content. HTML, CSS, fonts, images or anything else.</p>
|
||||
</Step>
|
||||
<Step>
|
||||
<svelte:fragment slot="header">3 - You're Done!</svelte:fragment>
|
||||
<div class="space-y-4">
|
||||
<p>Access your new website with this link:</p>
|
||||
<code class="code">https://USERNAME.{pagesDomain}[/REPOSITORY][/@BRANCH]</code>
|
||||
<p>or, use this handy form that can navigate for you!</p>
|
||||
<div class="space-y-1">
|
||||
<div class="input-group input-group-divider grid-cols-4">
|
||||
<input
|
||||
bind:value={username}
|
||||
class="input variant-form-material {username ? '' : 'input-error'}"
|
||||
title="Username"
|
||||
type="text"
|
||||
placeholder="Username (required)"
|
||||
required
|
||||
/>
|
||||
<div class="input-group-shim">.{pagesDomain}/</div>
|
||||
<input
|
||||
bind:value={repository}
|
||||
class="input variant-form-material"
|
||||
title="Repository"
|
||||
type="text"
|
||||
placeholder="Repository"
|
||||
/>
|
||||
<input
|
||||
bind:value={branch}
|
||||
class="input variant-form-material"
|
||||
title="Branch"
|
||||
type="text"
|
||||
placeholder="Branch"
|
||||
/>
|
||||
</div>
|
||||
<a href={navDomain} class="btn variant-filled-secondary">Take me there!</a>
|
||||
</div>
|
||||
<hr />
|
||||
<div>
|
||||
<h3 class="h3">What about custom domains?</h3>
|
||||
<p>
|
||||
To use custom domains, create a <code class="code">.domains</code> in the root of your repository
|
||||
with the domain name you would like to use.
|
||||
</p>
|
||||
<br />
|
||||
<p>Then, add a DNS record for that domain:</p>
|
||||
<em>(note): use the above form to auto-generate your DNS records!</em>
|
||||
<Accordion autocollapse>
|
||||
<AccordionItem open>
|
||||
<svelte:fragment slot="summary">CNAME (Prefered)</svelte:fragment>
|
||||
<svelte:fragment slot="content">
|
||||
<code class="code">CNAME [[branch.]repo.]user.{pagesDomain}.</code>
|
||||
<CodeBlock buttonCopied="Copied!" language="dns" code={`CNAME ${dnsDomain}.`}
|
||||
></CodeBlock>
|
||||
</svelte:fragment>
|
||||
</AccordionItem>
|
||||
<AccordionItem>
|
||||
<svelte:fragment slot="summary">ALIAS (If available)</svelte:fragment>
|
||||
<svelte:fragment slot="content">
|
||||
<p>For apex domains where CNAME does not work.</p>
|
||||
<p>
|
||||
<code class="code">ALIAS {pagesDomain}.</code><br /><code class="code"
|
||||
>TXT $[[branch.]repo.]user.{pagesDomain}</code
|
||||
>
|
||||
</p>
|
||||
<CodeBlock
|
||||
buttonCopied="Copied!"
|
||||
language="dns"
|
||||
code={`ALIAS ${pagesDomain}.
|
||||
TXT ${dnsDomain}`}
|
||||
></CodeBlock>
|
||||
</svelte:fragment>
|
||||
</AccordionItem>
|
||||
<AccordionItem>
|
||||
<svelte:fragment slot="summary">A/AAAA (Old reliable)</svelte:fragment>
|
||||
<svelte:fragment slot="content">
|
||||
<p>If CNAME will not work and ALIAS is not available</p>
|
||||
<p>
|
||||
<code class="code">A {ipv4}</code><br /><code class="code">AAAA {ipv6}</code><br
|
||||
/><code class="code">TXT $[[branch.]repo.]user.{pagesDomain}</code>
|
||||
</p>
|
||||
<CodeBlock
|
||||
buttonCopied="Copied!"
|
||||
language="dns"
|
||||
code={`A ${ipv4}
|
||||
AAAA ${ipv6}
|
||||
TXT ${dnsDomain}`}
|
||||
></CodeBlock>
|
||||
</svelte:fragment>
|
||||
</AccordionItem>
|
||||
</Accordion>
|
||||
</div>
|
||||
</div>
|
||||
</Step>
|
||||
</Stepper>
|
|
@ -1,14 +0,0 @@
|
|||
<script lang="ts">
|
||||
import { page } from '$app/stores';
|
||||
</script>
|
||||
|
||||
<div class="mx-auto max-w-page text-center">
|
||||
<h1 class="text-4xl font-bold mt-8">404</h1>
|
||||
<p class="py-4 text-xl">
|
||||
{#if $page.status === 404}
|
||||
The page you are trying to look for could not be found.
|
||||
{:else}
|
||||
An unexpected error occurred.
|
||||
{/if}
|
||||
</p>
|
||||
</div>
|
|
@ -1,28 +0,0 @@
|
|||
<script lang="ts">
|
||||
import '../app.postcss';
|
||||
import { AppShell, AppBar } from '@skeletonlabs/skeleton';
|
||||
</script>
|
||||
|
||||
<!-- App Shell -->
|
||||
<AppShell>
|
||||
<svelte:fragment slot="header">
|
||||
<!-- App Bar -->
|
||||
<AppBar gridColumns="grid-cols-3" slotDefault="place-self-center" slotTrail="place-content-end">
|
||||
<svelte:fragment slot="lead"
|
||||
><strong class="text-xl uppercase"><a href="/">Froth Pages</a></strong></svelte:fragment
|
||||
>
|
||||
<noscript
|
||||
><strong>Hey, you! This page is interactive and currently requires JavaScript!</strong>
|
||||
<br />
|
||||
Want a non-JS version? Bother
|
||||
<a class="anchor" href="https://matrix.to/#/@samme:schizo.cafe">Sam</a> about it!</noscript
|
||||
>
|
||||
<svelte:fragment slot="trail"
|
||||
><a class="anchor" href="https://git.froth.zone/sam/static-pages">Source Code</a
|
||||
></svelte:fragment
|
||||
>
|
||||
</AppBar>
|
||||
</svelte:fragment>
|
||||
<!-- Page Route Content -->
|
||||
<slot />
|
||||
</AppShell>
|
|
@ -1 +0,0 @@
|
|||
export const prerender = true;
|
|
@ -1,21 +0,0 @@
|
|||
<script lang="ts">
|
||||
import { gitDomain, gitName, pagesName } from '$lib';
|
||||
import Instructions from '$lib/instructions.svelte';
|
||||
</script>
|
||||
|
||||
<div class="container mx-auto text-left p-4 md:text-center">
|
||||
<div class="relative z-[1] space-y-6 pt-32 pb-24">
|
||||
<div class="font-bold text-4xl tracking-tight">
|
||||
Host <span class="text-tertiary-500">static websites</span> with {pagesName}!
|
||||
</div>
|
||||
<p class="max-w-lg opacity-90 md:mx-auto">
|
||||
It's quick, easy, free & fast - just put your project's homepage, developer blog or web
|
||||
experiment into a Git repository at <a class="anchor" href="https://{gitDomain}">{gitName}</a>
|
||||
and we'll do the rest.
|
||||
</p>
|
||||
<br />
|
||||
<div class="flex flex-col gap-3 md:space-x-3 md:block mx-auto md:w-6/12">
|
||||
<Instructions />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
|
@ -1,20 +0,0 @@
|
|||
import adapter from '@sveltejs/adapter-static';
|
||||
import { vitePreprocess } from '@sveltejs/vite-plugin-svelte';
|
||||
|
||||
/** @type {import('@sveltejs/kit').Config} */
|
||||
const config = {
|
||||
extensions: ['.svelte'],
|
||||
// Consult https://kit.svelte.dev/docs/integrations#preprocessors
|
||||
// for more information about preprocessors
|
||||
preprocess: [vitePreprocess()],
|
||||
|
||||
kit: {
|
||||
// adapter-auto only supports some environments, see https://kit.svelte.dev/docs/adapter-auto for a list.
|
||||
// If your environment is not supported or you settled on a specific environment, switch out the adapter.
|
||||
// See https://kit.svelte.dev/docs/adapters for more information about adapters.
|
||||
adapter: adapter({
|
||||
fallback: '404.html'
|
||||
})
|
||||
}
|
||||
};
|
||||
export default config;
|
|
@ -1,32 +0,0 @@
|
|||
import { join } from 'path';
|
||||
import type { Config } from 'tailwindcss';
|
||||
import forms from '@tailwindcss/forms';
|
||||
import typography from '@tailwindcss/typography';
|
||||
import { skeleton } from '@skeletonlabs/tw-plugin';
|
||||
import { frothNoire } from './froth-noire-skeleton';
|
||||
|
||||
export default {
|
||||
darkMode: 'class',
|
||||
content: [
|
||||
'./src/**/*.{html,js,svelte,ts}',
|
||||
join(require.resolve('@skeletonlabs/skeleton'), '../**/*.{html,js,svelte,ts}')
|
||||
],
|
||||
theme: {
|
||||
extend: {}
|
||||
},
|
||||
plugins: [
|
||||
forms,
|
||||
typography,
|
||||
skeleton({
|
||||
themes: {
|
||||
preset: [
|
||||
{
|
||||
name: 'skeleton',
|
||||
enhancements: true
|
||||
}
|
||||
],
|
||||
custom: [frothNoire]
|
||||
}
|
||||
})
|
||||
]
|
||||
} satisfies Config;
|
|
@ -1,18 +0,0 @@
|
|||
{
|
||||
"extends": "./.svelte-kit/tsconfig.json",
|
||||
"compilerOptions": {
|
||||
"allowJs": true,
|
||||
"checkJs": true,
|
||||
"esModuleInterop": true,
|
||||
"forceConsistentCasingInFileNames": true,
|
||||
"resolveJsonModule": true,
|
||||
"skipLibCheck": true,
|
||||
"sourceMap": true,
|
||||
"strict": true,
|
||||
"moduleResolution": "bundler"
|
||||
}
|
||||
// Path aliases are handled by https://kit.svelte.dev/docs/configuration#alias
|
||||
//
|
||||
// If you want to overwrite includes/excludes, make sure to copy over the relevant includes/excludes
|
||||
// from the referenced tsconfig.json - TypeScript does not merge them in
|
||||
}
|
|
@ -1,13 +0,0 @@
|
|||
import { purgeCss } from 'vite-plugin-tailwind-purgecss';
|
||||
import { sveltekit } from '@sveltejs/kit/vite';
|
||||
import { defineConfig } from 'vite';
|
||||
|
||||
export default defineConfig({
|
||||
build: {
|
||||
sourcemap: true
|
||||
},
|
||||
css: {
|
||||
devSourcemap: true
|
||||
},
|
||||
plugins: [sveltekit(), purgeCss()]
|
||||
});
|
Loading…
Reference in New Issue