172172}
173173EOF
174174
175+ node -e '
176+ const fs = require("fs")
177+ const pkg = JSON.parse(fs.readFileSync("package.json", "utf8"))
178+ if (pkg.scripts?.check) {
179+ pkg.scripts.check = "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --compiler-warnings \"a11y_autofocus:ignore\""
180+ }
181+ if (pkg.scripts?.["check:watch"]) {
182+ pkg.scripts["check:watch"] = "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --compiler-warnings \"a11y_autofocus:ignore\" --watch"
183+ }
184+ fs.writeFileSync("package.json", JSON.stringify(pkg, null, "\t") + "\n")
185+ '
186+
175187 cat > .prettierrc<< EOF
176188{
177189 "useTabs": false,
180192 "printWidth": 100,
181193 "semi": false,
182194}
195+ EOF
196+
197+ cat > svelte.config.js<< EOF
198+ import adapter from '@sveltejs/adapter-static'
199+ import { vitePreprocess } from '@sveltejs/vite-plugin-svelte'
200+
201+ /** @type {import('@sveltejs/kit').Config} */
202+ const config = {
203+ preprocess: vitePreprocess(),
204+ onwarn(warning, handler) {
205+ if (warning.code === 'a11y_autofocus') return
206+ handler(warning)
207+ },
208+ kit: {
209+ adapter: adapter({
210+ fallback: 'index.html',
211+ }),
212+ prerender: {
213+ entries: [],
214+ },
215+ },
216+ }
217+
218+ export default config
183219EOF
184220
185221 npm update --save
@@ -330,7 +366,7 @@ project.mk
330366vars.mk
331367EOF
332368
333- npm install --save-dev @zerodevx/svelte-toast @ freenit-framework/core @sveltejs/adapter-node @mdi/js
369+ npm install --save-dev @zerodevx/svelte-toast freenit @sveltejs/adapter-static @mdi/js
334370
335371 rm -rf src/lib
336372 rm -rf src/routes/about src/routes/sverdle src/routes/* .svelte src/app.css
@@ -363,6 +399,41 @@ body {
363399 --font-family-sans: sans-serif;
364400 --font-family-mono: monaco, "Consolas", "Lucida Console", monospace;
365401}
402+
403+ [data-theme='dark'] {
404+ --bg-color: #1b2433;
405+ --bg-secondary-color: #2a3546;
406+ --color-primary: #5b8bf7;
407+ --color-lightGrey: #3a4a5e;
408+ --color-grey: #8a9ab0;
409+ --color-darkGrey: #d9e0eb;
410+ --color-error: #e85d5d;
411+ --color-success: #4cd137;
412+ --font-color: #e0e6ed;
413+ }
414+
415+ [data-theme='dark']
416+ input:not(
417+ [type='checkbox'],
418+ [type='radio'],
419+ [type='submit'],
420+ [type='color'],
421+ [type='button'],
422+ [type='reset']
423+ ),
424+ [data-theme='dark'] textarea,
425+ [data-theme='dark'] select {
426+ background-color: var(--bg-color);
427+ color: var(--font-color);
428+ }
429+
430+ [data-theme='dark'] select {
431+ background-color: var(--bg-color);
432+ }
433+
434+ [data-theme='dark'] a {
435+ color: #7aa2ff;
436+ }
366437EOF
367438
368439 cat > src/routes/+layout.svelte<< EOF
371442 import 'chota'
372443 import { onMount } from 'svelte'
373444 import { SvelteToast } from '@zerodevx/svelte-toast'
374- import { LeftPane, MenuItems, MenuBar } from '@ freenit-framework/core '
445+ import { LeftPane, MenuItems, MenuBar } from 'freenit'
375446 import store from '\$ lib/store'
376447
377448 const options = {}
431502 mkdir src/routes/login
432503 cat > src/routes/login/+page.svelte << EOF
433504<script lang="ts">
434- import { Login } from '@ freenit-framework/core '
505+ import { Login } from 'freenit'
435506 import store from '\$ lib/store'
436507</script>
437508
441512 mkdir src/routes/register
442513 cat > src/routes/register/+page.svelte << EOF
443514<script lang="ts">
444- import { Register } from '@ freenit-framework/core '
515+ import { Register } from 'freenit'
445516 import store from '\$ lib/store'
446517</script>
447518
@@ -499,7 +570,7 @@ export const load = ({ params }) => {
499570EOF
500571 cat > ' src/routes/domains/[pk]/+page.svelte' << EOF
501572<script lang="ts">
502- import { Domain } from '@ freenit-framework/core '
573+ import { Domain } from 'freenit'
503574 import store from '\$ lib/store'
504575
505576 const { data: props } = \$ props()
509580EOF
510581 cat > ' src/routes/domains/+page.svelte' << EOF
511582<script lang="ts">
512- import { Domains } from '@ freenit-framework/core '
583+ import { Domains } from 'freenit'
513584 import store from '\$ lib/store'
514585</script>
515586
@@ -526,7 +597,7 @@ export const load = ({ params }) => {
526597EOF
527598 cat > ' src/routes/themes/[pk]/+page.svelte' << EOF
528599<script lang="ts">
529- import { Theme } from '@ freenit-framework/core '
600+ import { Theme } from 'freenit'
530601 import store from '\$ lib/store'
531602
532603 const { data: props } = \$ props()
536607EOF
537608 cat > ' src/routes/themes/+page.svelte' << EOF
538609<script lang="ts">
539- import { Themes } from '@ freenit-framework/core '
610+ import { Themes } from 'freenit'
540611 import store from '\$ lib/store'
541612</script>
542613
@@ -553,7 +624,7 @@ export const load = ({ params }) => {
553624EOF
554625 cat > ' src/routes/users/[pk]/+page.svelte' << EOF
555626<script lang="ts">
556- import { User } from '@ freenit-framework/core '
627+ import { User } from 'freenit'
557628 import store from '\$ lib/store'
558629
559630 const { data: props } = \$ props()
563634EOF
564635 cat > ' src/routes/users/+page.svelte' << EOF
565636<script lang="ts">
566- import { Users } from '@ freenit-framework/core '
637+ import { Users } from 'freenit'
567638 import store from '\$ lib/store'
568639</script>
569640
@@ -580,7 +651,7 @@ export const load = ({ params }) => {
580651EOF
581652 cat > ' src/routes/roles/[pk]/+page.svelte' << EOF
582653<script lang="ts">
583- import { Role } from '@ freenit-framework/core '
654+ import { Role } from 'freenit'
584655 import store from '\$ lib/store'
585656
586657 const { data: props } = \$ props()
590661EOF
591662 cat > ' src/routes/roles/+page.svelte' << EOF
592663<script lang="ts">
593- import { Roles } from '@ freenit-framework/core '
664+ import { Roles } from 'freenit'
594665 import store from '\$ lib/store'
595666</script>
596667
600671 mkdir -p ' src/routes/profile/password'
601672 cat > ' src/routes/profile/+page.svelte' << EOF
602673<script lang="ts">
603- import { Profile } from '@ freenit-framework/core '
674+ import { Profile } from 'freenit'
604675 import store from '\$ lib/store'
605676</script>
606677
@@ -609,16 +680,81 @@ EOF
609680EOF
610681 cat > ' src/routes/profile/password/+page.svelte' << EOF
611682<script lang="ts">
612- import { Password } from '@ freenit-framework/core '
683+ import { Password } from 'freenit'
613684 import store from '\$ lib/store'
614685</script>
615686
616687<Password store={store} />
688+ EOF
689+
690+ mkdir -p src/routes/jabber
691+ cat > src/routes/jabber/+page.svelte<< EOF
692+ <script lang="ts">
693+ import { Jabber } from 'freenit'
694+ </script>
695+
696+ <svelte:head>
697+ <title>Jabber</title>
698+ </svelte:head>
699+
700+ <Jabber />
701+ EOF
702+
703+ mkdir -p src/routes/calendar
704+ cat > src/routes/calendar/+page.svelte<< EOF
705+ <script lang="ts">
706+ import { Calendar } from 'freenit'
707+ </script>
708+
709+ <svelte:head>
710+ <title>Calendar</title>
711+ </svelte:head>
712+
713+ <Calendar />
714+ EOF
715+
716+ mkdir -p src/routes/contacts
717+ cat > src/routes/contacts/+page.svelte<< EOF
718+ <script lang="ts">
719+ import { Contacts } from 'freenit'
720+ </script>
721+
722+ <svelte:head>
723+ <title>Contacts</title>
724+ </svelte:head>
725+
726+ <Contacts />
727+ EOF
728+
729+ mkdir -p src/routes/files
730+ cat > src/routes/files/+page.svelte<< EOF
731+ <script lang="ts">
732+ import { Files } from 'freenit'
733+ </script>
734+
735+ <svelte:head>
736+ <title>Files</title>
737+ </svelte:head>
738+
739+ <Files />
740+ EOF
741+
742+ mkdir -p src/routes/sieve
743+ cat > src/routes/sieve/+page.svelte<< EOF
744+ <script lang="ts">
745+ import { Sieve } from 'freenit'
746+ </script>
747+
748+ <svelte:head>
749+ <title>Filters</title>
750+ </svelte:head>
751+
752+ <Sieve />
617753EOF
618754
619755 mkdir -p src/lib/store
620756 cat > ' src/lib/store/index.ts' << EOF
621- import { BaseStore } from '@ freenit-framework/core '
757+ import { BaseStore } from 'freenit'
622758
623759class Store extends BaseStore {
624760 constructor(prefix='/api/v1') {
0 commit comments