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'
|
||||
}
|
||||
}
|
||||
]
|
||||
};
|
34
.github/workflows/build.yaml
vendored
34
.github/workflows/build.yaml
vendored
|
@ -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
|
10
.gitignore
vendored
10
.gitignore
vendored
|
@ -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" } }]
|
||||
}
|
118
.vscode/settings.json
vendored
118
.vscode/settings.json
vendored
|
@ -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"
|
||||
]
|
||||
}
|
1
404.html
Normal file
1
404.html
Normal file
|
@ -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.A4nLYfpG.js rel=modulepreload> <link href=/_app/immutable/chunks/scheduler.BDbnZvYM.js rel=modulepreload> <link href=/_app/immutable/chunks/index.DKr9RO91.js rel=modulepreload> <link href=/_app/immutable/entry/app.Sj7igkOj.js rel=modulepreload> <link href=/_app/immutable/chunks/index.DWbUv9L9.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_mjyy8n={base:""};const t=document.currentScript.parentElement;Promise.all([import("/_app/immutable/entry/start.A4nLYfpG.js"),import("/_app/immutable/entry/app.Sj7igkOj.js")]).then((([e,p])=>{e.start(p,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.
|
1
_app/env.js
Normal file
1
_app/env.js
Normal file
|
@ -0,0 +1 @@
|
|||
export const env={}
|
1
_app/immutable/assets/0.MVEJ9386.css
Normal file
1
_app/immutable/assets/0.MVEJ9386.css
Normal file
File diff suppressed because one or more lines are too long
1
_app/immutable/assets/ProgressBar.Cirlo5Z8.css
Normal file
1
_app/immutable/assets/ProgressBar.Cirlo5Z8.css
Normal file
|
@ -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)}}
|
1
_app/immutable/assets/_layout.BZSaqsnW.css
Normal file
1
_app/immutable/assets/_layout.BZSaqsnW.css
Normal file
File diff suppressed because one or more lines are too long
18
_app/immutable/chunks/2.Cgz_sMcA.js
Normal file
18
_app/immutable/chunks/2.Cgz_sMcA.js
Normal file
File diff suppressed because one or more lines are too long
1
_app/immutable/chunks/2.Cgz_sMcA.js.map
Normal file
1
_app/immutable/chunks/2.Cgz_sMcA.js.map
Normal file
File diff suppressed because one or more lines are too long
|
@ -0,0 +1,2 @@
|
|||
import{w as S,r as h}from"./index.DKr9RO91.js";import{u as M}from"./scheduler.BDbnZvYM.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.iaZV0XNJ.js.map
|
File diff suppressed because one or more lines are too long
2
_app/immutable/chunks/index.DKr9RO91.js
Normal file
2
_app/immutable/chunks/index.DKr9RO91.js
Normal file
|
@ -0,0 +1,2 @@
|
|||
import{n as b,s as l}from"./scheduler.BDbnZvYM.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.DKr9RO91.js.map
|
1
_app/immutable/chunks/index.DKr9RO91.js.map
Normal file
1
_app/immutable/chunks/index.DKr9RO91.js.map
Normal file
File diff suppressed because one or more lines are too long
5
_app/immutable/chunks/index.DWbUv9L9.js
Normal file
5
_app/immutable/chunks/index.DWbUv9L9.js
Normal file
|
@ -0,0 +1,5 @@
|
|||
var K=Object.defineProperty;var Q=(t,e,n)=>e in t?K(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n;var I=(t,e,n)=>Q(t,typeof e!="symbol"?e+"":e,n);import{n as w,G as T,d as L,H as W,I as v,J as b,K as k,L as X,M as U,N as z,h as q,O as Y,P as Z,Q as tt,R as et,S as A,T as nt,U as it,V as st,W as rt,X as at}from"./scheduler.BDbnZvYM.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 P=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:W(e),rules:{}};return O.set(t,n),n}function G(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}`,_=T(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`,P+=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(", "),P-=r,P||ut())}function ut(){N(()=>{P||(O.forEach(t=>{const{ownerNode:e}=t.stylesheet;e&&L(e)}),O.clear())})}let x;function H(){return x||(x=Promise.resolve(),x.then(()=>{x=null})),x}function R(t,e,n){t.dispatchEvent(X(`${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 J={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||J;g&&(u=G(t,0,1,c,_,$,g,d++)),h(0,1);const m=B()+_,S=m+c;l&&l.abort(),a=!0,k(()=>R(t,!0,"start")),l=F(C=>{if(a){if(C>=S)return h(1,0),R(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),b(r)?(r=r(i),H().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||J;$&&(u=G(t,1,0,o,f,_,$));const h=B()+f,g=h+o;k(()=>R(t,!1,"start")),"inert"in t&&(d=t.inert,t.inert=!0),F(m=>{if(a){if(m>=g)return c(0,1),R(t,!1,"end"),--l.r||v(l.c),!1;if(m>=h){const S=_((m-h)/o);c(1-S,S)}}return a})}return b(r)?H().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(b);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(),Y()}A(d)}class kt{constructor(){I(this,"$$");I(this,"$$set")}$destroy(){dt(this,1),this.$destroy=w}$on(e,n){if(!b(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.DWbUv9L9.js.map
|
1
_app/immutable/chunks/index.DWbUv9L9.js.map
Normal file
1
_app/immutable/chunks/index.DWbUv9L9.js.map
Normal file
File diff suppressed because one or more lines are too long
2
_app/immutable/chunks/scheduler.BDbnZvYM.js
Normal file
2
_app/immutable/chunks/scheduler.BDbnZvYM.js
Normal file
File diff suppressed because one or more lines are too long
1
_app/immutable/chunks/scheduler.BDbnZvYM.js.map
Normal file
1
_app/immutable/chunks/scheduler.BDbnZvYM.js.map
Normal file
File diff suppressed because one or more lines are too long
3
_app/immutable/entry/app.Sj7igkOj.js
Normal file
3
_app/immutable/entry/app.Sj7igkOj.js
Normal file
File diff suppressed because one or more lines are too long
1
_app/immutable/entry/app.Sj7igkOj.js.map
Normal file
1
_app/immutable/entry/app.Sj7igkOj.js.map
Normal file
|
@ -0,0 +1 @@
|
|||
{"version":3,"mappings":";s4CAAaA,GAAW,2BCkDC,IAAAC,EAAAC,KAAa,CAAC,qCAAmCA,EAAM,2JAAvD,GAAAC,EAAA,GAAAF,OAAAC,KAAa,CAAC,yLAAmCA,EAAM,uKALvD,IAAAD,EAAAC,KAAa,CAAC,qCAAmCA,EAAM,wLAAvD,GAAAC,EAAA,GAAAF,OAAAC,KAAa,CAAC,yLAAmCA,EAAM,yLAClD,IAAAD,EAAAC,KAAa,CAAC,qCAAmCA,EAAM,2JAAvD,GAAAC,EAAA,GAAAF,OAAAC,KAAa,CAAC,0LAAmCA,EAAM,qKAU9EA,EAAS,IAAAE,EAAAF,CAAA,0cADfG,EAIKC,EAAAC,EAAAC,CAAA,yBAHCN,EAAS,wHACZA,EAAK,gBAALA,EAAK,wCAALA,EAAK,oFAbJ,OAAAA,KAAa,CAAC,kCAUdA,EAAO,IAAAO,EAAAP,CAAA,wRAAPA,EAAO,2KA/CA,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,6CAQiDT,EAAW,CAAC,EAAAY,oDADjBZ,EAAW,CAAC,EAAAY,oDAKZZ,EAAW,CAAC,EAAAY,8RA9B7DhB,EAAO,KAAK,IAAIE,CAAI,mKClBZ,MAACe,GAAQ,CACpB,UAAM,OAAO,wBAAW,oDACxB,UAAM,OAAO,wBAAW,oDACxB,IAAMC,EAAA,WAAO,wBAAW,EAAC,iDAC1B,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\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\t\t\t\t<svelte:component this={constructors[1]} bind:this={components[1]} data={data_1} {form} />\n\t\t\t\t\t</svelte:component>\n\t\n{:else}\n\t<svelte:component this={constructors[0]} bind:this={components[0]} data={data_0} {form} />\n\t\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.Sj7igkOj.js"}
|
4
_app/immutable/entry/start.A4nLYfpG.js
Normal file
4
_app/immutable/entry/start.A4nLYfpG.js
Normal file
File diff suppressed because one or more lines are too long
1
_app/immutable/entry/start.A4nLYfpG.js.map
Normal file
1
_app/immutable/entry/start.A4nLYfpG.js.map
Normal file
File diff suppressed because one or more lines are too long
2
_app/immutable/nodes/0.6ML90REU.js
Normal file
2
_app/immutable/nodes/0.6ML90REU.js
Normal file
File diff suppressed because one or more lines are too long
1
_app/immutable/nodes/0.6ML90REU.js.map
Normal file
1
_app/immutable/nodes/0.6ML90REU.js.map
Normal file
File diff suppressed because one or more lines are too long
2
_app/immutable/nodes/1.CcZc9sDN.js
Normal file
2
_app/immutable/nodes/1.CcZc9sDN.js
Normal file
|
@ -0,0 +1,2 @@
|
|||
import{P as m}from"../chunks/2.Cgz_sMcA.js";export{m as component};
|
||||
//# sourceMappingURL=1.CcZc9sDN.js.map
|
1
_app/immutable/nodes/1.CcZc9sDN.js.map
Normal file
1
_app/immutable/nodes/1.CcZc9sDN.js.map
Normal file
|
@ -0,0 +1 @@
|
|||
{"version":3,"file":"1.CcZc9sDN.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
2
_app/immutable/nodes/2.CcZc9sDN.js
Normal file
2
_app/immutable/nodes/2.CcZc9sDN.js
Normal file
|
@ -0,0 +1,2 @@
|
|||
import{P as m}from"../chunks/2.Cgz_sMcA.js";export{m as component};
|
||||
//# sourceMappingURL=2.CcZc9sDN.js.map
|
1
_app/immutable/nodes/2.CcZc9sDN.js.map
Normal file
1
_app/immutable/nodes/2.CcZc9sDN.js.map
Normal file
|
@ -0,0 +1 @@
|
|||
{"version":3,"file":"2.CcZc9sDN.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
1
_app/version.json
Normal file
1
_app/version.json
Normal file
|
@ -0,0 +1 @@
|
|||
{"version":"1726599849770"}
|
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
|
||||
}
|
||||
};
|
2
index.html
Normal file
2
index.html
Normal file
|
@ -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.MVEJ9386.css rel=stylesheet> <link href=./_app/immutable/assets/ProgressBar.Cirlo5Z8.css rel=stylesheet> <link href=./_app/immutable/entry/start.A4nLYfpG.js rel=modulepreload> <link href=./_app/immutable/chunks/scheduler.BDbnZvYM.js rel=modulepreload> <link href=./_app/immutable/chunks/index.DKr9RO91.js rel=modulepreload> <link href=./_app/immutable/entry/app.Sj7igkOj.js rel=modulepreload> <link href=./_app/immutable/chunks/index.DWbUv9L9.js rel=modulepreload> <link href=./_app/immutable/nodes/0.6ML90REU.js rel=modulepreload> <link href=./_app/immutable/chunks/ProgressBar.svelte_svelte_type_style_lang.iaZV0XNJ.js rel=modulepreload> <link href=./_app/immutable/nodes/2.CcZc9sDN.js rel=modulepreload> <link href=./_app/immutable/chunks/2.Cgz_sMcA.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_mjyy8n={base:new URL(".",location).pathname.slice(0,-1)};const t=document.currentScript.parentElement,e=[null,null];Promise.all([import("./_app/immutable/entry/start.A4nLYfpG.js"),import("./_app/immutable/entry/app.Sj7igkOj.js")]).then((([n,l])=>{n.start(l,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.2",
|
||||
"@skeletonlabs/tw-plugin": "0.4.0",
|
||||
"@sveltejs/adapter-auto": "^3.0.0",
|
||||
"@sveltejs/adapter-static": "^3.0.1",
|
||||
"@sveltejs/enhanced-img": "^0.3.0",
|
||||
"@sveltejs/kit": "^2.5.4",
|
||||
"@sveltejs/vite-plugin-svelte": "^3.0.0",
|
||||
"@tailwindcss/forms": "^0.5.7",
|
||||
"@tailwindcss/typography": "0.5.15",
|
||||
"@types/eslint": "^9.0.0",
|
||||
"@types/html-minifier-terser": "^7.0.2",
|
||||
"@types/node": "20.16.5",
|
||||
"@typescript-eslint/eslint-plugin": "^8.0.0",
|
||||
"@typescript-eslint/parser": "^8.0.0",
|
||||
"autoprefixer": "10.4.20",
|
||||
"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.47",
|
||||
"prettier": "^3.1.1",
|
||||
"prettier-plugin-svelte": "^3.1.2",
|
||||
"svelte": "^4.2.7",
|
||||
"svelte-check": "^4.0.0",
|
||||
"tailwindcss": "3.4.12",
|
||||
"tslib": "^2.4.1",
|
||||
"typescript": "^5.4.3",
|
||||
"vite": "^5.2.6",
|
||||
"vite-plugin-tailwind-purgecss": "0.3.3"
|
||||
},
|
||||
"type": "module"
|
||||
}
|
2953
pnpm-lock.yaml
2953
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
|
||||
}
|
9
src/app.d.ts
vendored
9
src/app.d.ts
vendored
|
@ -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 +0,0 @@
|
|||
+page.svelte
|
|
@ -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 a new issue