create-routify 0.0.0-reserve → 1.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (112) hide show
  1. package/README.md +23 -0
  2. package/package.json +27 -14
  3. package/src/bin.js +14 -0
  4. package/src/index.js +108 -0
  5. package/src/utils/prompts.js +10 -0
  6. package/src/versions/three/examples/buildtime-data/index.html +31 -0
  7. package/src/versions/three/examples/buildtime-data/package.json +15 -0
  8. package/src/versions/three/examples/buildtime-data/src/App.svelte +6 -0
  9. package/src/versions/three/examples/buildtime-data/src/main.js +5 -0
  10. package/src/versions/three/examples/buildtime-data/src/routes/index.meta.js +40 -0
  11. package/src/versions/three/examples/buildtime-data/src/routes/index.svelte +26 -0
  12. package/src/versions/three/examples/buildtime-data/vite.config.js +24 -0
  13. package/src/versions/three/examples/experiment/index.html +31 -0
  14. package/src/versions/three/examples/experiment/jsconfig.json +20 -0
  15. package/src/versions/three/examples/experiment/package.json +18 -0
  16. package/src/versions/three/examples/experiment/src/App.svelte +6 -0
  17. package/src/versions/three/examples/experiment/src/main.js +5 -0
  18. package/src/versions/three/examples/experiment/src/routes/[page].svelte +41 -0
  19. package/src/versions/three/examples/experiment/src/routes/_navigation.svelte +17 -0
  20. package/src/versions/three/examples/experiment/src/routes/index.svelte +3 -0
  21. package/src/versions/three/examples/experiment/src/routes/pages/contact/index.md +1 -0
  22. package/src/versions/three/examples/experiment/src/routes/pages/gallery/galcontent/foo.svelte +1 -0
  23. package/src/versions/three/examples/experiment/src/routes/pages/gallery/galcontent/index.md +3 -0
  24. package/src/versions/three/examples/experiment/src/routes/pages/gallery/index.svelte +15 -0
  25. package/src/versions/three/examples/experiment/src/routes/pages/home/index.md +1 -0
  26. package/src/versions/three/examples/experiment/vite.config.js +27 -0
  27. package/src/versions/three/examples/kitchensink/index.html +18 -0
  28. package/src/versions/three/examples/kitchensink/package.json +16 -0
  29. package/src/versions/three/examples/kitchensink/src/App.svelte +6 -0
  30. package/src/versions/three/examples/kitchensink/src/components/Navigation.svelte +29 -0
  31. package/src/versions/three/examples/kitchensink/src/main.js +5 -0
  32. package/src/versions/three/examples/kitchensink/src/routes/_module.svelte +8 -0
  33. package/src/versions/three/examples/kitchensink/src/routes/composition/index.svelte +5 -0
  34. package/src/versions/three/examples/kitchensink/src/routes/composition/reset/_module.svelte +2 -0
  35. package/src/versions/three/examples/kitchensink/src/routes/composition/reset/index.svelte +7 -0
  36. package/src/versions/three/examples/kitchensink/src/routes/index.md +2 -0
  37. package/src/versions/three/examples/kitchensink/src/routes/multi-router/_module.md +4 -0
  38. package/src/versions/three/examples/kitchensink/src/routes/multi-router/basic.svelte +13 -0
  39. package/src/versions/three/examples/kitchensink/src/routes/multi-router/index.svelte +0 -0
  40. package/src/versions/three/examples/kitchensink/src/routes/multi-router/rootnode.svelte +15 -0
  41. package/src/versions/three/examples/kitchensink/src/routes/redirect/index.svelte +10 -0
  42. package/src/versions/three/examples/kitchensink/vite.config.js +24 -0
  43. package/src/versions/three/examples/microframework/app/index.html +31 -0
  44. package/src/versions/three/examples/microframework/app/package.json +15 -0
  45. package/src/versions/three/examples/microframework/app/src/App.svelte +24 -0
  46. package/src/versions/three/examples/microframework/app/src/main.js +5 -0
  47. package/src/versions/three/examples/microframework/app/src/routes/_module.md +3 -0
  48. package/src/versions/three/examples/microframework/app/src/routes/index.md +1 -0
  49. package/src/versions/three/examples/microframework/app/src/routes/internal-module/index.md +1 -0
  50. package/src/versions/three/examples/microframework/app/vite.config.js +29 -0
  51. package/src/versions/three/examples/microframework/module/index.html +31 -0
  52. package/src/versions/three/examples/microframework/module/package.json +15 -0
  53. package/src/versions/three/examples/microframework/module/src/App.svelte +6 -0
  54. package/src/versions/three/examples/microframework/module/src/main.js +5 -0
  55. package/src/versions/three/examples/microframework/module/src/routes/external-page.md +1 -0
  56. package/src/versions/three/examples/microframework/module/src/routes/index.svelte +7 -0
  57. package/src/versions/three/examples/microframework/module/vite.config.js +24 -0
  58. package/src/versions/three/examples/multi-router/index.html +24 -0
  59. package/src/versions/three/examples/multi-router/package.json +16 -0
  60. package/src/versions/three/examples/multi-router/src/App.svelte +8 -0
  61. package/src/versions/three/examples/multi-router/src/main.js +5 -0
  62. package/src/versions/three/examples/multi-router/src/routes/_module.svelte +5 -0
  63. package/src/versions/three/examples/multi-router/src/routes/index.md +4 -0
  64. package/src/versions/three/examples/multi-router/src/routes/page-with-widget.svelte +7 -0
  65. package/src/versions/three/examples/multi-router/src/widget/_module.svelte +7 -0
  66. package/src/versions/three/examples/multi-router/src/widget/index.md +1 -0
  67. package/src/versions/three/examples/multi-router/src/widget/page1.md +1 -0
  68. package/src/versions/three/examples/multi-router/src/widget/page2.md +1 -0
  69. package/src/versions/three/examples/multi-router/vite.config.js +29 -0
  70. package/src/versions/three/examples/portfolio/.persistent/src/pages/2.projects/_module.svelte/fetchRepos_reponames-27-4zq41g.json +735 -0
  71. package/src/versions/three/examples/portfolio/package.json +23 -0
  72. package/src/versions/three/examples/portfolio/src/app.html +18 -0
  73. package/src/versions/three/examples/portfolio/src/global.d.ts +1 -0
  74. package/src/versions/three/examples/portfolio/src/pages/1.home/index.svelte +3 -0
  75. package/src/versions/three/examples/portfolio/src/pages/2.projects/[project].svelte +41 -0
  76. package/src/versions/three/examples/portfolio/src/pages/2.projects/_module.meta.js +36 -0
  77. package/src/versions/three/examples/portfolio/src/pages/2.projects/_module.svelte +28 -0
  78. package/src/versions/three/examples/portfolio/src/pages/3.about-me/_module.svelte +3 -0
  79. package/src/versions/three/examples/portfolio/src/pages/3.about-me/index.svelte +1 -0
  80. package/src/versions/three/examples/portfolio/src/pages/_loader.svelte +15 -0
  81. package/src/versions/three/examples/portfolio/src/pages/_module.svelte +41 -0
  82. package/src/versions/three/examples/portfolio/src/pages/_navigation.svelte +30 -0
  83. package/src/versions/three/examples/portfolio/src/pages/index.svelte +5 -0
  84. package/src/versions/three/examples/portfolio/src/routes/[...index].svelte +12 -0
  85. package/src/versions/three/examples/portfolio/src/utils/github.js +21 -0
  86. package/src/versions/three/examples/portfolio/static/favicon.png +0 -0
  87. package/src/versions/three/examples/portfolio/svelte.config.js +26 -0
  88. package/src/versions/three/examples/subpath/index.html +31 -0
  89. package/src/versions/three/examples/subpath/package.json +16 -0
  90. package/src/versions/three/examples/subpath/src/App.svelte +12 -0
  91. package/src/versions/three/examples/subpath/src/main.js +5 -0
  92. package/src/versions/three/examples/subpath/src/routes/foo.svelte +1 -0
  93. package/src/versions/three/examples/subpath/src/routes/index.svelte +7 -0
  94. package/src/versions/three/examples/subpath/vite.config.js +24 -0
  95. package/src/versions/three/examples/sveltekit/package.json +20 -0
  96. package/src/versions/three/examples/sveltekit/src/app.html +12 -0
  97. package/src/versions/three/examples/sveltekit/src/global.d.ts +1 -0
  98. package/src/versions/three/examples/sveltekit/src/pages/a/page.svelte +1 -0
  99. package/src/versions/three/examples/sveltekit/src/pages/index.svelte +6 -0
  100. package/src/versions/three/examples/sveltekit/src/routes/[...index].svelte +11 -0
  101. package/src/versions/three/examples/sveltekit/static/favicon.png +0 -0
  102. package/src/versions/three/examples/sveltekit/svelte.config.js +20 -0
  103. package/src/versions/three/index.js +81 -0
  104. package/src/versions/three/skeleton/index.html +31 -0
  105. package/src/versions/three/skeleton/package.json +16 -0
  106. package/src/versions/three/skeleton/src/App.svelte +6 -0
  107. package/src/versions/three/skeleton/src/main.js +5 -0
  108. package/src/versions/three/skeleton/src/routes/index.md +1 -0
  109. package/src/versions/three/skeleton/vite.config.js +24 -0
  110. package/src/versions/two.js +3 -0
  111. package/bin/routify-cli.js +0 -31
  112. package/readme.md +0 -1
package/README.md ADDED
@@ -0,0 +1,23 @@
1
+ # Create Routify
2
+
3
+ Welcome to the new Routiy CLI! This CLI currently supports both version 2 & 3 (beta) of Routify.
4
+
5
+ # Get Started
6
+
7
+ ```sh
8
+ npm init routify@latest
9
+ ```
10
+
11
+ # CLI Options
12
+
13
+ We have designed the cli to be able to be run in headless mode, as such the following options are available:
14
+
15
+ > Don't worry, most users won't need these as everyting is fully graphical first!
16
+
17
+ ```
18
+ npm init routify [directory-name]
19
+
20
+ -h, --help get the help menu
21
+ -v, --version use this to set the version of routify, e.g. 3
22
+ -f, --force this option bypasses directory checks, be careful as might overwrite files!
23
+ ```
package/package.json CHANGED
@@ -1,32 +1,45 @@
1
1
  {
2
2
  "name": "create-routify",
3
- "version": "0.0.0-reserve",
4
- "description": "A powerful cli for simplifying your routify development experience",
3
+ "version": "1.2.1",
4
+ "description": "A powerful cli for super-powering your routify development experience",
5
5
  "main": "index.js",
6
6
  "type": "module",
7
- "files": [],
7
+ "files": [
8
+ "src",
9
+ "LICENSE",
10
+ "README.md"
11
+ ],
8
12
  "bin": {
9
- "create-routify": "bin/routify-cli.js"
13
+ "create-routify": "./src/bin.js"
10
14
  },
11
15
  "repository": {
12
16
  "type": "git",
13
- "url": "git+https://github.com/roxiness/routify-cli.git"
17
+ "url": "git+https://github.com/roxiness/create-routify.git"
14
18
  },
15
19
  "homepage": "https://routify.dev",
16
20
  "keywords": [
17
21
  "routify",
18
- "routify-cli",
19
- "routify cli",
20
- "routify kit",
21
- "cli"
22
+ "create routify",
23
+ "npm init",
24
+ "@roxi/routify",
25
+ "npm init routify",
26
+ "routify 3",
27
+ "routify 2"
22
28
  ],
23
29
  "author": "ghostdevbusiness@gmail.com",
24
- "license": "ISC",
30
+ "license": "MIT",
25
31
  "bugs": {
26
- "url": "https://github.com/roxiness/routify-cli/issues"
32
+ "url": "https://github.com/roxiness/create-routify/issues"
27
33
  },
28
34
  "dependencies": {
29
- "dashargs": "^4.1.2",
30
- "update-notifier": "^5.0.1"
35
+ "kleur": "^4.1.4",
36
+ "log-symbols": "^5.1.0",
37
+ "minimist": "^1.2.5",
38
+ "prompts": "^2.4.2",
39
+ "update-notifier": "^5.1.0"
40
+ },
41
+ "devDependencies": {
42
+ "@types/prompts": "^2.0.14",
43
+ "@types/update-notifier": "^5.1.0"
31
44
  }
32
- }
45
+ }
package/src/bin.js ADDED
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env node
2
+ import updateNotifier from 'update-notifier';
3
+ import { readFile } from 'fs/promises';
4
+ import { run } from '../src/index.js';
5
+ import minimist from 'minimist';
6
+
7
+ const args = minimist(process.argv.slice(2));
8
+
9
+ run({ args });
10
+
11
+ try {
12
+ const pkg = await readFile('../package.json', 'utf-8');
13
+ updateNotifier({ pkg: JSON.parse(pkg) }).notify();
14
+ } catch {}
package/src/index.js ADDED
@@ -0,0 +1,108 @@
1
+ import { onCancel } from './utils/prompts.js';
2
+ import { existsSync, readdirSync } from 'fs';
3
+ import { mkdir } from 'fs/promises';
4
+ import symbols from 'log-symbols';
5
+ import { relative } from 'path';
6
+ import { resolve } from 'path';
7
+ import prompts from 'prompts';
8
+ import k from 'kleur';
9
+
10
+ const versions = {
11
+ 2: () => import('./versions/two.js'),
12
+ 3: () => import('./versions/three/index.js'),
13
+ };
14
+
15
+ const helpText = ` npm init routify [directory-name]
16
+
17
+ -h, --help get the help menu
18
+ -v, --version use this to set the version of routify, e.g. 3
19
+ -f, --force this option bypasses directory checks, be careful as might overwrite files!`;
20
+
21
+ async function getVersion(args) {
22
+ const argsVersion = args.v || args.version;
23
+ if (argsVersion) return argsVersion;
24
+
25
+ const { version } = await prompts(
26
+ {
27
+ type: 'select',
28
+ name: 'version',
29
+ message: 'Routify Version:',
30
+ choices: [
31
+ { title: 'Routify 2', value: 2 },
32
+ {
33
+ title: `Routify 3 ${k.bold().magenta('[BETA]')}`,
34
+ value: 3,
35
+ },
36
+ ],
37
+ },
38
+ { onCancel },
39
+ );
40
+
41
+ return version;
42
+ }
43
+
44
+ export const run = async ({ args }) => {
45
+ console.log(` ${k.dim(`v${'1.0.0'}`)}`);
46
+ console.log(` ${k.bold().magenta('Routify')} ${k.magenta().dim('CLI')}`);
47
+ console.log();
48
+
49
+ if (args.h || args.help) {
50
+ return console.log(helpText);
51
+ }
52
+
53
+ const version = await getVersion(args);
54
+ const force = args.f || args.force;
55
+
56
+ if (!Object.keys(versions).includes(version.toString()))
57
+ return console.log(` ${k.red(`Version ${version} not found`)}`);
58
+
59
+ const projectName = args._[0] || '.';
60
+ const projectDir = resolve(projectName.toString());
61
+
62
+ if (
63
+ existsSync(projectDir) &&
64
+ readdirSync(projectDir).length > 0 &&
65
+ !force
66
+ ) {
67
+ const { proceed } = await prompts(
68
+ {
69
+ type: 'confirm',
70
+ message: `Directory is not empty, continue?`,
71
+ name: 'proceed',
72
+ },
73
+ { onCancel },
74
+ );
75
+
76
+ if (!proceed) return onCancel();
77
+ }
78
+
79
+ await mkdir(projectDir, { recursive: true });
80
+
81
+ await runVersion(version, { args, projectDir });
82
+
83
+ console.log();
84
+ console.log(` ${k.green('All Done!')}`);
85
+ console.log();
86
+ console.log(` Now you can:`);
87
+
88
+ let i = 1;
89
+
90
+ if (relative(process.cwd(), projectDir) != '')
91
+ console.log(` ${i++}) cd ${relative(process.cwd(), projectDir)}`);
92
+
93
+ console.log(` ${i++}) npm install`);
94
+ console.log(` ${i++}) npm run dev`);
95
+
96
+ console.log();
97
+
98
+ console.log(
99
+ `${symbols.success} If you need help, ${k.blue(
100
+ 'join the Discord',
101
+ )}: https://discord.com/invite/ntKJD5B`,
102
+ );
103
+ };
104
+
105
+ const runVersion = async (version, args) => {
106
+ const { run } = await versions[version]();
107
+ return run(args);
108
+ };
@@ -0,0 +1,10 @@
1
+ import k from 'kleur';
2
+
3
+ export const onCancel = () => {
4
+ console.log();
5
+ console.log(
6
+ ` ${k.bold().red('Exited')} ${k.magenta().dim('create-routify')}`,
7
+ );
8
+
9
+ process.exit(0);
10
+ };
@@ -0,0 +1,31 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="utf-8" />
5
+ <meta name="viewport" content="width=device-width,initial-scale=1" />
6
+
7
+ <title>Svelte app</title>
8
+
9
+ <!-- Google Fonts -->
10
+ <link
11
+ rel="stylesheet"
12
+ href="https://fonts.googleapis.com/css?family=Roboto:300,300italic,700,700italic"
13
+ />
14
+
15
+ <!-- CSS Reset -->
16
+ <link
17
+ rel="stylesheet"
18
+ href="https://cdnjs.cloudflare.com/ajax/libs/normalize/8.0.1/normalize.css"
19
+ />
20
+
21
+ <!-- Milligram CSS -->
22
+ <link
23
+ rel="stylesheet"
24
+ href="https://cdnjs.cloudflare.com/ajax/libs/milligram/1.4.1/milligram.css"
25
+ />
26
+
27
+ <script type="module" src="/src/main.js"></script>
28
+ </head>
29
+
30
+ <body></body>
31
+ </html>
@@ -0,0 +1,15 @@
1
+ {
2
+ "type": "module",
3
+ "scripts": {
4
+ "build": "vite build",
5
+ "preview": "vite preview",
6
+ "dev": "vite"
7
+ },
8
+ "devDependencies": {
9
+ "@roxi/routify": "^3.0.0-next.1",
10
+ "@sveltejs/vite-plugin-svelte": "^1.0.0-next.13",
11
+ "mdsvex": "^0.9.3",
12
+ "svelte": "^3.39.0",
13
+ "vite": "^2.2.3"
14
+ }
15
+ }
@@ -0,0 +1,6 @@
1
+ <script>
2
+ import { Router } from '@roxi/routify'
3
+ import routes from '../.routify/routes.default.js'
4
+ </script>
5
+
6
+ <Router {routes} />
@@ -0,0 +1,5 @@
1
+ import App from './App.svelte'
2
+
3
+ const app = new App({ target: document.body })
4
+
5
+ export default app
@@ -0,0 +1,40 @@
1
+ /// <reference types="@roxi/routify" />
2
+
3
+ /**
4
+ * [file].meta.js files provides metadata for nodes.
5
+ * They can be used instead of - or along with - inlined metadata.
6
+ *
7
+ * Meta entries can use directives which enhance functionality.
8
+ * These can be added to the entry name with a pipe, Eg.:
9
+ *
10
+ * `'routify|scoped': 'version 3'`
11
+ *
12
+ * Here the entry would be available as `meta.routify` in the respective node
13
+ * and all its descendants.
14
+ *
15
+ * Current directives are:
16
+ * - scoped: provides the meta entry to all descendant nodes
17
+ * - split: uses codesplitting / dynamic import for the value. Entries that
18
+ * use the split tag must be accessed with `await` or `entry.then()`
19
+ */
20
+
21
+ import axios from 'axios'
22
+
23
+ /**
24
+ * @param {MetaContext} context
25
+ */
26
+ export default async ({ split }) => {
27
+ // fetch luke skywalker data
28
+ const luke = (await axios.get('https://swapi.dev/api/people/1/')).data
29
+ const { name, gender, ...rest } = luke
30
+
31
+ return {
32
+ luke: {
33
+ name,
34
+ gender,
35
+ // we're using `split` to exclude `rest` from the Routify bundle
36
+ // we can access it from our app with `await meta.luke.data()`
37
+ data: split(rest),
38
+ },
39
+ }
40
+ }
@@ -0,0 +1,26 @@
1
+ <script>
2
+ import { meta } from '@roxi/routify'
3
+ let show
4
+ console.log($meta)
5
+ </script>
6
+
7
+ <h1>Routify 3 App</h1>
8
+
9
+ <h4>Plain meta</h4>
10
+ <pre>
11
+ {JSON.stringify($meta, null, 2)}
12
+ </pre>
13
+
14
+ <br />
15
+ <br />
16
+
17
+ {#if !show}
18
+ <button on:click={() => (show = true)}>show dynamic imported meta</button>
19
+ {:else}
20
+ <h4>dynamic imported meta</h4>
21
+ <pre>
22
+ {#await $meta.luke.data() then data}
23
+ {JSON.stringify(data, null, 2)}
24
+ {/await}
25
+ </pre>
26
+ {/if}
@@ -0,0 +1,24 @@
1
+ import { svelte } from '@sveltejs/vite-plugin-svelte'
2
+ import routify from '@roxi/routify/vite-plugin'
3
+ import { defineConfig } from 'vite'
4
+ import { mdsvex } from 'mdsvex'
5
+
6
+ const production = process.env.NODE_ENV === 'production'
7
+
8
+ export default defineConfig({
9
+ clearScreen: false,
10
+
11
+ plugins: [
12
+ routify(),
13
+ svelte({
14
+ emitCss: true,
15
+ compilerOptions: {
16
+ dev: !production,
17
+ },
18
+ extensions: ['.md', '.svelte'],
19
+ preprocess: [mdsvex({ extension: 'md' })],
20
+ }),
21
+ ],
22
+
23
+ server: { port: 1337 },
24
+ })
@@ -0,0 +1,31 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="utf-8" />
5
+ <meta name="viewport" content="width=device-width,initial-scale=1" />
6
+
7
+ <title>Svelte app</title>
8
+
9
+ <!-- Google Fonts -->
10
+ <link
11
+ rel="stylesheet"
12
+ href="https://fonts.googleapis.com/css?family=Roboto:300,300italic,700,700italic"
13
+ />
14
+
15
+ <!-- CSS Reset -->
16
+ <link
17
+ rel="stylesheet"
18
+ href="https://cdnjs.cloudflare.com/ajax/libs/normalize/8.0.1/normalize.css"
19
+ />
20
+
21
+ <!-- Pico.css -->
22
+ <link
23
+ rel="stylesheet"
24
+ href="https://unpkg.com/@picocss/pico@1.3.3/css/pico.css"
25
+ />
26
+
27
+ <script type="module" src="/src/main.js"></script>
28
+ </head>
29
+
30
+ <body></body>
31
+ </html>
@@ -0,0 +1,20 @@
1
+ {
2
+ "compilerOptions": {
3
+ "checkJs": true,
4
+ "baseUrl": ".",
5
+ "paths": {
6
+ "#cmp/*": ["./src/cmp/*"],
7
+ "#root/*": ["./*"]
8
+ },
9
+ "target": "esnext",
10
+ "moduleResolution": "node"
11
+ },
12
+ "exclude": [
13
+ "**/node_modules",
14
+ "**/dist",
15
+ "**/example",
16
+ "**/temp",
17
+ "**/output",
18
+ "**/.history"
19
+ ]
20
+ }
@@ -0,0 +1,18 @@
1
+ {
2
+ "type": "module",
3
+ "imports": {
4
+ "#cmp/*": "./src/components/*"
5
+ },
6
+ "scripts": {
7
+ "build": "vite build",
8
+ "preview": "vite preview",
9
+ "dev": "vite"
10
+ },
11
+ "devDependencies": {
12
+ "@roxi/routify": "^3.0.0-next.1",
13
+ "@sveltejs/vite-plugin-svelte": "^1.0.0-next.13",
14
+ "mdsvex": "^0.9.3",
15
+ "svelte": "^3.39.0",
16
+ "vite": "^2.2.3"
17
+ }
18
+ }
@@ -0,0 +1,6 @@
1
+ <script>
2
+ import { Router } from '@roxi/routify'
3
+ import routes from '../.routify/routes.default.js'
4
+ </script>
5
+
6
+ <Router {routes} />
@@ -0,0 +1,5 @@
1
+ import App from './App.svelte'
2
+
3
+ const app = new App({ target: document.body })
4
+
5
+ export default app
@@ -0,0 +1,41 @@
1
+ <script>
2
+ import { node, params } from '@roxi/routify'
3
+ import Nav from './_navigation.svelte'
4
+ const pages = $node.traverse('../pages')
5
+ $: index = pages.children.findIndex(page => page.name === $params.page)
6
+ </script>
7
+
8
+ <div class="app-wrapper" style="--page-index: {index}">
9
+ <div id="app">
10
+ {#each pages.children as page}
11
+ <article class="page">
12
+ <svelte:component this={page.traverse('./index').component} />
13
+ </article>
14
+ {/each}
15
+ </div>
16
+ </div>
17
+
18
+ <Nav {pages} />
19
+
20
+ <style>
21
+ :global(html),
22
+ :global(body),
23
+ .app-wrapper,
24
+ #app {
25
+ height: 100%;
26
+ }
27
+ .app-wrapper {
28
+ overflow: hidden;
29
+ }
30
+ #app {
31
+ display: flex;
32
+ flex-direction: row;
33
+ transform: translateX(calc(25% + -50% * var(--page-index)));
34
+ transition: all 0.3s;
35
+ }
36
+ article {
37
+ margin-left: 20px;
38
+ margin-right: 20px;
39
+ flex: 0 0 50%;
40
+ }
41
+ </style>
@@ -0,0 +1,17 @@
1
+ <script>
2
+ export let pages
3
+ </script>
4
+
5
+ <nav>
6
+ {#each pages.children as page}
7
+ <a href="/{page.name}">{page.name}</a>
8
+ {/each}
9
+ </nav>
10
+
11
+ <style>
12
+ nav {
13
+ position: absolute;
14
+ bottom: 0;
15
+ /* background: white; */
16
+ }
17
+ </style>
@@ -0,0 +1,3 @@
1
+ <script context="module">
2
+ export const guard = ctx => ctx.router.url.replace('/home')
3
+ </script>
@@ -0,0 +1,15 @@
1
+ <script>
2
+ import { Router } from '@roxi/routify'
3
+ export let context
4
+ let instance, router
5
+ const galcontentNode = context.node.traverse('../galcontent')
6
+ $: console.log('instance', instance)
7
+ $: console.log('router', router)
8
+ console.log('galcontentNode', galcontentNode)
9
+ </script>
10
+
11
+ <h1>Gallery</h1>
12
+
13
+ r
14
+ <Router rootNode={galcontentNode} name="box" bind:instance bind:router />
15
+ /r
@@ -0,0 +1,27 @@
1
+ import { defineConfig } from 'vite'
2
+ import { svelte } from '@sveltejs/vite-plugin-svelte'
3
+ import { mdsvex } from 'mdsvex'
4
+ import routify from '@roxi/routify/vite-plugin'
5
+
6
+ const production = process.env.NODE_ENV === 'production'
7
+
8
+ export default defineConfig({
9
+ clearScreen: false,
10
+ plugins: [
11
+ routify(),
12
+ svelte({
13
+ emitCss: true,
14
+ compilerOptions: {
15
+ dev: !production,
16
+ },
17
+ extensions: ['.md', '.svelte'],
18
+ preprocess: [mdsvex({ extension: 'md' })],
19
+ }),
20
+ ],
21
+ server: { port: 1337 },
22
+ resolve: {
23
+ alias: {
24
+ '#cmp': process.cwd() + '/src/components',
25
+ },
26
+ },
27
+ })
@@ -0,0 +1,18 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+
4
+ <head>
5
+ <meta charset="utf-8" />
6
+ <meta name="viewport" content="width=device-width,initial-scale=1" />
7
+
8
+ <title>Svelte app</title>
9
+
10
+ <!-- Pico.css -->
11
+ <link rel="stylesheet" href="https://unpkg.com/@picocss/pico@1.3.3/css/pico.css" />
12
+
13
+ <script type="module" src="/src/main.js"></script>
14
+ </head>
15
+
16
+ <body></body>
17
+
18
+ </html>
@@ -0,0 +1,16 @@
1
+ {
2
+ "name": "kitchensink",
3
+ "type": "module",
4
+ "scripts": {
5
+ "build": "vite build",
6
+ "preview": "vite preview",
7
+ "dev": "vite"
8
+ },
9
+ "devDependencies": {
10
+ "@roxi/routify": "^3.0.0-next.1",
11
+ "@sveltejs/vite-plugin-svelte": "^1.0.0-next.13",
12
+ "mdsvex": "^0.9.3",
13
+ "svelte": "^3.39.0",
14
+ "vite": "^2.2.3"
15
+ }
16
+ }
@@ -0,0 +1,6 @@
1
+ <script>
2
+ import { Router } from '@roxi/routify'
3
+ import routes from '../.routify/routes.default.js'
4
+ </script>
5
+
6
+ <Router {routes} />
@@ -0,0 +1,29 @@
1
+ <script>
2
+ import { isActive, node } from '@roxi/routify'
3
+ export let pages
4
+ $: liveUrl = index => pages && pages[index]?.router?.url.external()
5
+ </script>
6
+
7
+ <nav class="container">
8
+ <ul>
9
+ <li>
10
+ <h1>
11
+ <a href="/">Portfolio</a>
12
+ </h1>
13
+ </li>
14
+ </ul>
15
+ <ul>
16
+ {#each $node.pages as childNode, index}
17
+ <li class:isActive={$isActive(childNode.path)}>
18
+ <a href={liveUrl(index) || childNode.path}
19
+ >{childNode.meta.title || childNode.name}</a>
20
+ </li>
21
+ {/each}
22
+ </ul>
23
+ </nav>
24
+
25
+ <style>
26
+ .isActive a {
27
+ text-decoration: underline;
28
+ }
29
+ </style>
@@ -0,0 +1,5 @@
1
+ import App from './App.svelte'
2
+
3
+ const app = new App({ target: document.body })
4
+
5
+ export default app