@pantoken/scaffold 1.0.1 → 1.1.0
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.
- package/README.md +4 -2
- package/dist/cli.d.mts +19 -5
- package/dist/cli.mjs +222 -11
- package/dist/index.mjs +1 -1
- package/dist/{src-DSGZRyeb.mjs → src-CdZxIoo2.mjs} +16 -8
- package/package.json +15 -11
package/README.md
CHANGED
|
@@ -29,8 +29,9 @@ npx @pantoken/scaffold --lang hu
|
|
|
29
29
|
```
|
|
30
30
|
|
|
31
31
|
`npx` works regardless of which package manager you use. Substitute `pnpm dlx`, `yarn dlx`,
|
|
32
|
-
`bunx`, or `deno run npm:` for `npx` if you prefer —
|
|
33
|
-
|
|
32
|
+
`bunx`, or `deno run npm:` for `npx` if you prefer — dependencies are installed automatically with
|
|
33
|
+
whichever one invoked the CLI (detected from `npm_config_user_agent`), leaving "start the dev
|
|
34
|
+
server" as the only manual step. Pass `--no-install` to skip the automatic install.
|
|
34
35
|
|
|
35
36
|
Run `npx @pantoken/scaffold --help` for the full flag reference, or `npx @pantoken/scaffold
|
|
36
37
|
completion <shell>` to generate a bash/zsh/fish/PowerShell completion script.
|
|
@@ -61,6 +62,7 @@ await scaffoldProject("react", "./my-app");
|
|
|
61
62
|
| `[platform]` | Platform to scaffold (prompted interactively if omitted on a TTY) |
|
|
62
63
|
| `-d, --dir <path>` | Target directory (prompted interactively if omitted on a TTY) |
|
|
63
64
|
| `-y, --yes` | Never prompt; error instead of prompting for a missing platform/directory |
|
|
65
|
+
| `--no-install` | Skip automatically installing dependencies after scaffolding |
|
|
64
66
|
| `-l, --lang <tag>` | Override the auto-detected display language (e.g. `"hu"`) |
|
|
65
67
|
| `--theme <name>` | Token theme: `rebrand` (default), `canvas`, `canvasHighContrast` |
|
|
66
68
|
| `--theme-mode <mode>` | Rebrand token mode: `light` (default) or `adaptive` |
|
package/dist/cli.d.mts
CHANGED
|
@@ -120,20 +120,34 @@ export type PackageManager = "npm" | "pnpm" | "yarn" | "bun" | "deno" | "vp";
|
|
|
120
120
|
* @returns Detected package manager, or undefined
|
|
121
121
|
*/
|
|
122
122
|
export declare function detectPackageManager(env?: NodeJS.ProcessEnv, execPath?: string): PackageManager | undefined;
|
|
123
|
+
/**
|
|
124
|
+
* Runs the detected package manager's install command in `dir`, wrapped in a clack spinner.
|
|
125
|
+
* Failures are reported but non-fatal — the project is still usable, just not installed — so the
|
|
126
|
+
* caller decides how `printNextSteps` should reflect the outcome via the returned boolean.
|
|
127
|
+
*
|
|
128
|
+
* @param dir - The scaffold directory to install into
|
|
129
|
+
* @param pm - The detected package manager (defaults to npm's command when undefined)
|
|
130
|
+
* @param t - Localized string lookup
|
|
131
|
+
* @returns Whether the install command exited successfully
|
|
132
|
+
*/
|
|
133
|
+
export declare function installWithSpinner(dir: string, pm: PackageManager | undefined, t: LocaleLookup["t"]): boolean;
|
|
123
134
|
/**
|
|
124
135
|
* Prints the post-scaffold "Next steps" block (plus any template-authored notes/caveats).
|
|
125
136
|
*
|
|
126
|
-
* When `
|
|
127
|
-
*
|
|
128
|
-
*
|
|
129
|
-
*
|
|
137
|
+
* When `installed` is true (dependencies were already installed automatically), the block collapses
|
|
138
|
+
* to the single remaining manual action — starting the dev server, prefixed with `cd <dir>` when
|
|
139
|
+
* needed — regardless of platform. Otherwise, when `platform` has a `scaffold.json`-derived entry in
|
|
140
|
+
* `SCAFFOLD_METADATA`, next steps/notes/caveats are rendered from its (localized, `{{var}}`-
|
|
141
|
+
* substituted) authored strings; failing that, a generic cd/install/run-script fallback is used,
|
|
142
|
+
* with the run script itself detected from the scaffolded `package.json` (`dev`, else `preview`).
|
|
130
143
|
*
|
|
131
144
|
* @param dir - The scaffold directory
|
|
132
145
|
* @param written - The paths written by scaffoldProject
|
|
133
146
|
* @param t - Localized string lookup
|
|
134
147
|
* @param platform - The resolved (alias-free) scaffold platform, used to look up `scaffold.json` metadata
|
|
148
|
+
* @param installed - Whether dependencies were already installed automatically
|
|
135
149
|
*/
|
|
136
|
-
export declare function printNextSteps(dir: string, written: string[], t: LocaleLookup["t"], platform?: string): void;
|
|
150
|
+
export declare function printNextSteps(dir: string, written: string[], t: LocaleLookup["t"], platform?: string, installed?: boolean): void;
|
|
137
151
|
/**
|
|
138
152
|
* Shared commander Argument validator for the platform positional.
|
|
139
153
|
* Used by all three CLIs (scaffold, create-pantoken-app, pantoken-ai scaffold)
|
package/dist/cli.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { i as scaffoldProject, n as isScaffoldPlatform, o as validateThemeMode, r as resolveScaffoldPlatform, s as validateThemeVariant, t as SCAFFOLD_PLATFORMS } from "./src-
|
|
1
|
+
import { i as scaffoldProject, n as isScaffoldPlatform, o as validateThemeMode, r as resolveScaffoldPlatform, s as validateThemeVariant, t as SCAFFOLD_PLATFORMS } from "./src-CdZxIoo2.mjs";
|
|
2
2
|
import { readFileSync } from "node:fs";
|
|
3
3
|
import { basename, join } from "node:path";
|
|
4
4
|
import { CDN_PROVIDERS } from "@pantoken/canvas-theme-editor";
|
|
@@ -6,6 +6,7 @@ import { Argument, Command, CommanderError, InvalidArgumentError } from "command
|
|
|
6
6
|
import { cancel, isCancel, select, spinner, text } from "@clack/prompts";
|
|
7
7
|
import tab from "@bomb.sh/tab/commander";
|
|
8
8
|
import { homedir } from "node:os";
|
|
9
|
+
import { execFileSync } from "node:child_process";
|
|
9
10
|
//#region src/locale.ts
|
|
10
11
|
/**
|
|
11
12
|
* Resolves the active locale: --lang flag \> LC_ALL/LANG env \> Intl \> "en".
|
|
@@ -60,6 +61,10 @@ const MESSAGES = {
|
|
|
60
61
|
"nextStepsNav": "cd {{dir}}",
|
|
61
62
|
"nextStepsInstall": "تثبيت التبعيات: {{command}}",
|
|
62
63
|
"nextStepsDevServer": "شغّل خادم التطوير (إذا كان القالب يحتوي واحدًا)",
|
|
64
|
+
"getStartedHeading": "Get started:",
|
|
65
|
+
"installSpinnerStart": "Installing dependencies...",
|
|
66
|
+
"installSpinnerStop": "Dependencies installed.",
|
|
67
|
+
"installSpinnerFailed": "Failed to install dependencies:",
|
|
63
68
|
"notesHeading": "ملاحظة:",
|
|
64
69
|
"caveatsHeading": "تنبيه:",
|
|
65
70
|
"errorMissingPlatform": "الوسيط المطلوب \"platform\" مفقود. متوقع أحد القيم: {{platforms}}",
|
|
@@ -114,6 +119,10 @@ const MESSAGES = {
|
|
|
114
119
|
"nextStepsNav": "cd {{dir}}",
|
|
115
120
|
"nextStepsInstall": "Տեղադրել կախվածությունները՝ {{command}}",
|
|
116
121
|
"nextStepsDevServer": "Ստարտ վարել dev սերվերը (եթե ձեր տեմպլեյթը ունի մեկը)",
|
|
122
|
+
"getStartedHeading": "Get started:",
|
|
123
|
+
"installSpinnerStart": "Installing dependencies...",
|
|
124
|
+
"installSpinnerStop": "Dependencies installed.",
|
|
125
|
+
"installSpinnerFailed": "Failed to install dependencies:",
|
|
117
126
|
"notesHeading": "Նշում:",
|
|
118
127
|
"caveatsHeading": "Ուշադրություն:",
|
|
119
128
|
"errorMissingPlatform": "Բացակայում է պարտադիր արգումենտը \"platform\". Ապահովված լիներ այս մեկը՝ {{platforms}}",
|
|
@@ -168,6 +177,10 @@ const MESSAGES = {
|
|
|
168
177
|
"nextStepsNav": "cd {{dir}}",
|
|
169
178
|
"nextStepsInstall": "Instal·la les dependències: {{command}}",
|
|
170
179
|
"nextStepsDevServer": "Inicia el servidor de desenvolupament (si la plantilla en té un)",
|
|
180
|
+
"getStartedHeading": "Get started:",
|
|
181
|
+
"installSpinnerStart": "Installing dependencies...",
|
|
182
|
+
"installSpinnerStop": "Dependencies installed.",
|
|
183
|
+
"installSpinnerFailed": "Failed to install dependencies:",
|
|
171
184
|
"notesHeading": "Nota:",
|
|
172
185
|
"caveatsHeading": "Advertència:",
|
|
173
186
|
"errorMissingPlatform": "Falta l'argument obligatori \"platform\". S'esperava un de: {{platforms}}",
|
|
@@ -222,6 +235,10 @@ const MESSAGES = {
|
|
|
222
235
|
"nextStepsNav": "cd {{dir}}",
|
|
223
236
|
"nextStepsInstall": "Installer afhængigheder: {{command}}",
|
|
224
237
|
"nextStepsDevServer": "Start dev-serveren (hvis din skabelon har en)",
|
|
238
|
+
"getStartedHeading": "Get started:",
|
|
239
|
+
"installSpinnerStart": "Installing dependencies...",
|
|
240
|
+
"installSpinnerStop": "Dependencies installed.",
|
|
241
|
+
"installSpinnerFailed": "Failed to install dependencies:",
|
|
225
242
|
"notesHeading": "Bemærk:",
|
|
226
243
|
"caveatsHeading": "Forbehold:",
|
|
227
244
|
"errorMissingPlatform": "Mangler krævet argument \"platform\". Forventet en af: {{platforms}}",
|
|
@@ -276,6 +293,10 @@ const MESSAGES = {
|
|
|
276
293
|
"nextStepsNav": "cd {{dir}}",
|
|
277
294
|
"nextStepsInstall": "Installeer afhankelijkheden: {{command}}",
|
|
278
295
|
"nextStepsDevServer": "Start de dev-server (als je template er één heeft)",
|
|
296
|
+
"getStartedHeading": "Get started:",
|
|
297
|
+
"installSpinnerStart": "Installing dependencies...",
|
|
298
|
+
"installSpinnerStop": "Dependencies installed.",
|
|
299
|
+
"installSpinnerFailed": "Failed to install dependencies:",
|
|
279
300
|
"notesHeading": "Opmerking:",
|
|
280
301
|
"caveatsHeading": "Opmerking / waarschuwing:",
|
|
281
302
|
"errorMissingPlatform": "Ontbrekend verplicht argument \"platform\". Verwacht één van: {{platforms}}",
|
|
@@ -330,6 +351,10 @@ const MESSAGES = {
|
|
|
330
351
|
"nextStepsNav": "cd {{dir}}",
|
|
331
352
|
"nextStepsInstall": "Install dependencies: {{command}}",
|
|
332
353
|
"nextStepsDevServer": "Start the dev server (if your template has one)",
|
|
354
|
+
"getStartedHeading": "Get started:",
|
|
355
|
+
"installSpinnerStart": "Installing dependencies...",
|
|
356
|
+
"installSpinnerStop": "Dependencies installed.",
|
|
357
|
+
"installSpinnerFailed": "Failed to install dependencies:",
|
|
333
358
|
"notesHeading": "Note:",
|
|
334
359
|
"caveatsHeading": "Caveat:",
|
|
335
360
|
"errorMissingPlatform": "Missing required argument \"platform\". Expected one of: {{platforms}}",
|
|
@@ -384,6 +409,10 @@ const MESSAGES = {
|
|
|
384
409
|
"nextStepsNav": "cd {{dir}}",
|
|
385
410
|
"nextStepsInstall": "Install dependencies: {{command}}",
|
|
386
411
|
"nextStepsDevServer": "Start the dev server (if your template has one)",
|
|
412
|
+
"getStartedHeading": "Get started:",
|
|
413
|
+
"installSpinnerStart": "Installing dependencies...",
|
|
414
|
+
"installSpinnerStop": "Dependencies installed.",
|
|
415
|
+
"installSpinnerFailed": "Failed to install dependencies:",
|
|
387
416
|
"notesHeading": "Note:",
|
|
388
417
|
"caveatsHeading": "Caveat:",
|
|
389
418
|
"errorMissingPlatform": "Missing required argument \"platform\". Expected one of: {{platforms}}",
|
|
@@ -438,6 +467,10 @@ const MESSAGES = {
|
|
|
438
467
|
"nextStepsNav": "cd {{dir}}",
|
|
439
468
|
"nextStepsInstall": "Install dependencies: {{command}}",
|
|
440
469
|
"nextStepsDevServer": "Start the dev server (if your template has one)",
|
|
470
|
+
"getStartedHeading": "Get started:",
|
|
471
|
+
"installSpinnerStart": "Installing dependencies...",
|
|
472
|
+
"installSpinnerStop": "Dependencies installed.",
|
|
473
|
+
"installSpinnerFailed": "Failed to install dependencies:",
|
|
441
474
|
"notesHeading": "Note:",
|
|
442
475
|
"caveatsHeading": "Caveat:",
|
|
443
476
|
"errorMissingPlatform": "Missing required argument \"platform\". Expected one of: {{platforms}}",
|
|
@@ -492,6 +525,10 @@ const MESSAGES = {
|
|
|
492
525
|
"nextStepsNav": "cd {{dir}}",
|
|
493
526
|
"nextStepsInstall": "Install dependencies: {{command}}",
|
|
494
527
|
"nextStepsDevServer": "Start the dev server (if your template has one)",
|
|
528
|
+
"getStartedHeading": "Get started:",
|
|
529
|
+
"installSpinnerStart": "Installing dependencies...",
|
|
530
|
+
"installSpinnerStop": "Dependencies installed.",
|
|
531
|
+
"installSpinnerFailed": "Failed to install dependencies:",
|
|
495
532
|
"notesHeading": "Note:",
|
|
496
533
|
"caveatsHeading": "Caveat:",
|
|
497
534
|
"errorMissingPlatform": "Missing required argument \"platform\". Expected one of: {{platforms}}",
|
|
@@ -546,6 +583,10 @@ const MESSAGES = {
|
|
|
546
583
|
"nextStepsNav": "cd {{dir}}",
|
|
547
584
|
"nextStepsInstall": "Asenna riippuvuudet: {{command}}",
|
|
548
585
|
"nextStepsDevServer": "Käynnistä kehityspalvelin (jos mallissasi on)",
|
|
586
|
+
"getStartedHeading": "Get started:",
|
|
587
|
+
"installSpinnerStart": "Installing dependencies...",
|
|
588
|
+
"installSpinnerStop": "Dependencies installed.",
|
|
589
|
+
"installSpinnerFailed": "Failed to install dependencies:",
|
|
549
590
|
"notesHeading": "Huom:",
|
|
550
591
|
"caveatsHeading": "Varoitus:",
|
|
551
592
|
"errorMissingPlatform": "Puuttuu vaadittu argumentti \"platform\". Odotettu yksi seuraavista: {{platforms}}",
|
|
@@ -600,6 +641,10 @@ const MESSAGES = {
|
|
|
600
641
|
"nextStepsNav": "cd {{dir}}",
|
|
601
642
|
"nextStepsInstall": "Installer les dépendances : {{command}}",
|
|
602
643
|
"nextStepsDevServer": "Démarrer le serveur de développement (si votre modèle en propose un)",
|
|
644
|
+
"getStartedHeading": "Get started:",
|
|
645
|
+
"installSpinnerStart": "Installing dependencies...",
|
|
646
|
+
"installSpinnerStop": "Dependencies installed.",
|
|
647
|
+
"installSpinnerFailed": "Failed to install dependencies:",
|
|
603
648
|
"notesHeading": "Remarque :",
|
|
604
649
|
"caveatsHeading": "Précaution :",
|
|
605
650
|
"errorMissingPlatform": "Argument requis manquant \"platform\". Attendu : l'un des suivants : {{platforms}}",
|
|
@@ -654,6 +699,10 @@ const MESSAGES = {
|
|
|
654
699
|
"nextStepsNav": "cd {{dir}}",
|
|
655
700
|
"nextStepsInstall": "Installer les dépendances : {{command}}",
|
|
656
701
|
"nextStepsDevServer": "Démarrer le serveur de développement (si votre modèle en fournit un)",
|
|
702
|
+
"getStartedHeading": "Get started:",
|
|
703
|
+
"installSpinnerStart": "Installing dependencies...",
|
|
704
|
+
"installSpinnerStop": "Dependencies installed.",
|
|
705
|
+
"installSpinnerFailed": "Failed to install dependencies:",
|
|
657
706
|
"notesHeading": "Remarque :",
|
|
658
707
|
"caveatsHeading": "Précaution :",
|
|
659
708
|
"errorMissingPlatform": "Argument requis manquant \"platform\". Attendu : l'un de : {{platforms}}",
|
|
@@ -708,6 +757,10 @@ const MESSAGES = {
|
|
|
708
757
|
"nextStepsNav": "cd {{dir}}",
|
|
709
758
|
"nextStepsInstall": "Suiteáil spleáchais: {{command}}",
|
|
710
759
|
"nextStepsDevServer": "Tosaigh an freastalaí forbartha (má tá ceann sa téama agat)",
|
|
760
|
+
"getStartedHeading": "Get started:",
|
|
761
|
+
"installSpinnerStart": "Installing dependencies...",
|
|
762
|
+
"installSpinnerStop": "Dependencies installed.",
|
|
763
|
+
"installSpinnerFailed": "Failed to install dependencies:",
|
|
711
764
|
"notesHeading": "Nóta:",
|
|
712
765
|
"caveatsHeading": "Rabhadh:",
|
|
713
766
|
"errorMissingPlatform": "Easpa argóint riachtanach \"platform\". Bhíothas ag súil le ceann de: {{platforms}}",
|
|
@@ -762,6 +815,10 @@ const MESSAGES = {
|
|
|
762
815
|
"nextStepsNav": "cd {{dir}}",
|
|
763
816
|
"nextStepsInstall": "Abhängigkeiten installieren: {{command}}",
|
|
764
817
|
"nextStepsDevServer": "Entwicklungsserver starten (falls die Vorlage einen enthält)",
|
|
818
|
+
"getStartedHeading": "Get started:",
|
|
819
|
+
"installSpinnerStart": "Installing dependencies...",
|
|
820
|
+
"installSpinnerStop": "Dependencies installed.",
|
|
821
|
+
"installSpinnerFailed": "Failed to install dependencies:",
|
|
765
822
|
"notesHeading": "Hinweis:",
|
|
766
823
|
"caveatsHeading": "Einschränkung:",
|
|
767
824
|
"errorMissingPlatform": "Fehlendes erforderliches Argument \"platform\". Erwartet eines von: {{platforms}}",
|
|
@@ -816,6 +873,10 @@ const MESSAGES = {
|
|
|
816
873
|
"nextStepsNav": "cd {{dir}}",
|
|
817
874
|
"nextStepsInstall": "Εγκατάσταση εξαρτήσεων: {{command}}",
|
|
818
875
|
"nextStepsDevServer": "Εκκίνηση του dev server (αν το πρότυπό σας έχει έναν)",
|
|
876
|
+
"getStartedHeading": "Get started:",
|
|
877
|
+
"installSpinnerStart": "Installing dependencies...",
|
|
878
|
+
"installSpinnerStop": "Dependencies installed.",
|
|
879
|
+
"installSpinnerFailed": "Failed to install dependencies:",
|
|
819
880
|
"notesHeading": "Σημείωση:",
|
|
820
881
|
"caveatsHeading": "Προειδοποίηση:",
|
|
821
882
|
"errorMissingPlatform": "Λείπει η απαιτούμενη παράμετρος \"platform\". Αναμένονται μία από: {{platforms}}",
|
|
@@ -870,6 +931,10 @@ const MESSAGES = {
|
|
|
870
931
|
"nextStepsNav": "cd {{dir}}",
|
|
871
932
|
"nextStepsInstall": "Enstale depandans: {{command}}",
|
|
872
933
|
"nextStepsDevServer": "Kòmanse sèvè dev (si modèl ou a gen youn)",
|
|
934
|
+
"getStartedHeading": "Get started:",
|
|
935
|
+
"installSpinnerStart": "Installing dependencies...",
|
|
936
|
+
"installSpinnerStop": "Dependencies installed.",
|
|
937
|
+
"installSpinnerFailed": "Failed to install dependencies:",
|
|
873
938
|
"notesHeading": "Remak:",
|
|
874
939
|
"caveatsHeading": "Avètisman:",
|
|
875
940
|
"errorMissingPlatform": "Agiman obligatwa \"platform\" manke. Atann youn nan: {{platforms}}",
|
|
@@ -924,6 +989,10 @@ const MESSAGES = {
|
|
|
924
989
|
"nextStepsNav": "cd {{dir}}",
|
|
925
990
|
"nextStepsInstall": "התקן תלותים: {{command}}",
|
|
926
991
|
"nextStepsDevServer": "הפעל את שרת הפיתוח (אם התבנית שלך כוללת אחד)",
|
|
992
|
+
"getStartedHeading": "Get started:",
|
|
993
|
+
"installSpinnerStart": "Installing dependencies...",
|
|
994
|
+
"installSpinnerStop": "Dependencies installed.",
|
|
995
|
+
"installSpinnerFailed": "Failed to install dependencies:",
|
|
927
996
|
"notesHeading": "הערה:",
|
|
928
997
|
"caveatsHeading": "אזהרה:",
|
|
929
998
|
"errorMissingPlatform": "חסר ארגומנט דרוש \"platform\". צפוי אחד מ: {{platforms}}",
|
|
@@ -978,6 +1047,10 @@ const MESSAGES = {
|
|
|
978
1047
|
"nextStepsNav": "cd {{dir}}",
|
|
979
1048
|
"nextStepsInstall": "निर्भरता स्थापित करें: {{command}}",
|
|
980
1049
|
"nextStepsDevServer": "डेव सर्वर शुरू करें (यदि आपके टेम्पलेट में है)",
|
|
1050
|
+
"getStartedHeading": "Get started:",
|
|
1051
|
+
"installSpinnerStart": "Installing dependencies...",
|
|
1052
|
+
"installSpinnerStop": "Dependencies installed.",
|
|
1053
|
+
"installSpinnerFailed": "Failed to install dependencies:",
|
|
981
1054
|
"notesHeading": "नोट:",
|
|
982
1055
|
"caveatsHeading": "ध्यान दें:",
|
|
983
1056
|
"errorMissingPlatform": "आवश्यक तर्क \"platform\" गायब है। अपेक्षित में से एक: {{platforms}}",
|
|
@@ -1032,6 +1105,10 @@ const MESSAGES = {
|
|
|
1032
1105
|
"nextStepsNav": "cd {{dir}}",
|
|
1033
1106
|
"nextStepsInstall": "Függőségek telepítése: {{command}}",
|
|
1034
1107
|
"nextStepsDevServer": "Indítsd el a fejlesztői szervert (ha a sablonod tartalmaz ilyet)",
|
|
1108
|
+
"getStartedHeading": "Következő lépések:",
|
|
1109
|
+
"installSpinnerStart": "Függőségek telepítése: {{command}}",
|
|
1110
|
+
"installSpinnerStop": "Függőségek telepítve.",
|
|
1111
|
+
"installSpinnerFailed": "Függőségek telepítése: {{command}}",
|
|
1035
1112
|
"notesHeading": "Megjegyzés:",
|
|
1036
1113
|
"caveatsHeading": "Figyelmeztetés:",
|
|
1037
1114
|
"errorMissingPlatform": "Hiányzó kötelező argumentum \"platform\". Egyik várható: {{platforms}}",
|
|
@@ -1086,6 +1163,10 @@ const MESSAGES = {
|
|
|
1086
1163
|
"nextStepsNav": "cd {{dir}}",
|
|
1087
1164
|
"nextStepsInstall": "Settu upp háður: {{command}}",
|
|
1088
1165
|
"nextStepsDevServer": "Ræstu þróunarþjóninn (ef sniðmátið inniheldur einn)",
|
|
1166
|
+
"getStartedHeading": "Get started:",
|
|
1167
|
+
"installSpinnerStart": "Installing dependencies...",
|
|
1168
|
+
"installSpinnerStop": "Dependencies installed.",
|
|
1169
|
+
"installSpinnerFailed": "Failed to install dependencies:",
|
|
1089
1170
|
"notesHeading": "Athugið:",
|
|
1090
1171
|
"caveatsHeading": "Ábending:",
|
|
1091
1172
|
"errorMissingPlatform": "Vantar nauðsynlegt rök \"platform\". Búist var við einu af: {{platforms}}",
|
|
@@ -1140,6 +1221,10 @@ const MESSAGES = {
|
|
|
1140
1221
|
"nextStepsNav": "cd {{dir}}",
|
|
1141
1222
|
"nextStepsInstall": "Pasang dependensi: {{command}}",
|
|
1142
1223
|
"nextStepsDevServer": "Jalankan server pengembangan (jika template Anda memilikinya)",
|
|
1224
|
+
"getStartedHeading": "Get started:",
|
|
1225
|
+
"installSpinnerStart": "Installing dependencies...",
|
|
1226
|
+
"installSpinnerStop": "Dependencies installed.",
|
|
1227
|
+
"installSpinnerFailed": "Failed to install dependencies:",
|
|
1143
1228
|
"notesHeading": "Catatan:",
|
|
1144
1229
|
"caveatsHeading": "Peringatan:",
|
|
1145
1230
|
"errorMissingPlatform": "Argumen wajib \"platform\" hilang. Diharapkan salah satu: {{platforms}}",
|
|
@@ -1194,6 +1279,10 @@ const MESSAGES = {
|
|
|
1194
1279
|
"nextStepsNav": "cd {{dir}}",
|
|
1195
1280
|
"nextStepsInstall": "Installa le dipendenze: {{command}}",
|
|
1196
1281
|
"nextStepsDevServer": "Avvia il server di sviluppo (se il template ne prevede uno)",
|
|
1282
|
+
"getStartedHeading": "Get started:",
|
|
1283
|
+
"installSpinnerStart": "Installing dependencies...",
|
|
1284
|
+
"installSpinnerStop": "Dependencies installed.",
|
|
1285
|
+
"installSpinnerFailed": "Failed to install dependencies:",
|
|
1197
1286
|
"notesHeading": "Nota:",
|
|
1198
1287
|
"caveatsHeading": "Avvertenza:",
|
|
1199
1288
|
"errorMissingPlatform": "Argomento obbligatorio mancante \"platform\". Atteso uno dei seguenti: {{platforms}}",
|
|
@@ -1248,6 +1337,10 @@ const MESSAGES = {
|
|
|
1248
1337
|
"nextStepsNav": "cd {{dir}}",
|
|
1249
1338
|
"nextStepsInstall": "依存関係をインストール: {{command}}",
|
|
1250
1339
|
"nextStepsDevServer": "開発サーバーを起動(テンプレートにある場合)",
|
|
1340
|
+
"getStartedHeading": "Get started:",
|
|
1341
|
+
"installSpinnerStart": "Installing dependencies...",
|
|
1342
|
+
"installSpinnerStop": "Dependencies installed.",
|
|
1343
|
+
"installSpinnerFailed": "Failed to install dependencies:",
|
|
1251
1344
|
"notesHeading": "注意:",
|
|
1252
1345
|
"caveatsHeading": "留意事項:",
|
|
1253
1346
|
"errorMissingPlatform": "必須引数 \"platform\" がありません。予期される値: {{platforms}}",
|
|
@@ -1302,6 +1395,10 @@ const MESSAGES = {
|
|
|
1302
1395
|
"nextStepsNav": "cd {{dir}}",
|
|
1303
1396
|
"nextStepsInstall": "의존성 설치: {{command}}",
|
|
1304
1397
|
"nextStepsDevServer": "개발 서버 시작 (템플릿에 해당 기능이 있는 경우)",
|
|
1398
|
+
"getStartedHeading": "Get started:",
|
|
1399
|
+
"installSpinnerStart": "Installing dependencies...",
|
|
1400
|
+
"installSpinnerStop": "Dependencies installed.",
|
|
1401
|
+
"installSpinnerFailed": "Failed to install dependencies:",
|
|
1305
1402
|
"notesHeading": "참고:",
|
|
1306
1403
|
"caveatsHeading": "주의:",
|
|
1307
1404
|
"errorMissingPlatform": "필수 인수 \"platform\" 누락. 다음 중 하나여야 합니다: {{platforms}}",
|
|
@@ -1356,6 +1453,10 @@ const MESSAGES = {
|
|
|
1356
1453
|
"nextStepsNav": "cd {{dir}}",
|
|
1357
1454
|
"nextStepsInstall": "Tāuta ngā whakawhirinaki: {{command}}",
|
|
1358
1455
|
"nextStepsDevServer": "Tīmatahia te tūmau whakawhanake (mēnā kei tō tauira)",
|
|
1456
|
+
"getStartedHeading": "Get started:",
|
|
1457
|
+
"installSpinnerStart": "Installing dependencies...",
|
|
1458
|
+
"installSpinnerStop": "Dependencies installed.",
|
|
1459
|
+
"installSpinnerFailed": "Failed to install dependencies:",
|
|
1359
1460
|
"notesHeading": "Tuhipoka:",
|
|
1360
1461
|
"caveatsHeading": "Whakatūpato:",
|
|
1361
1462
|
"errorMissingPlatform": "Kua ngaro te kupu whakahau hiahia \"platform\". Me kotahi o ēnei: {{platforms}}",
|
|
@@ -1410,6 +1511,10 @@ const MESSAGES = {
|
|
|
1410
1511
|
"nextStepsNav": "cd {{dir}}",
|
|
1411
1512
|
"nextStepsInstall": "Pasang kebergantungan: {{command}}",
|
|
1412
1513
|
"nextStepsDevServer": "Mulakan pelayan pembangunan (jika templat anda mempunyainya)",
|
|
1514
|
+
"getStartedHeading": "Get started:",
|
|
1515
|
+
"installSpinnerStart": "Installing dependencies...",
|
|
1516
|
+
"installSpinnerStop": "Dependencies installed.",
|
|
1517
|
+
"installSpinnerFailed": "Failed to install dependencies:",
|
|
1413
1518
|
"notesHeading": "Nota:",
|
|
1414
1519
|
"caveatsHeading": "Amaran:",
|
|
1415
1520
|
"errorMissingPlatform": "Argumen diperlukan \"platform\" hilang. Dijangka salah satu: {{platforms}}",
|
|
@@ -1464,6 +1569,10 @@ const MESSAGES = {
|
|
|
1464
1569
|
"nextStepsNav": "cd {{dir}}",
|
|
1465
1570
|
"nextStepsInstall": "Installera beroenden: {{command}}",
|
|
1466
1571
|
"nextStepsDevServer": "Starta dev-servern (om din mall har en)",
|
|
1572
|
+
"getStartedHeading": "Get started:",
|
|
1573
|
+
"installSpinnerStart": "Installing dependencies...",
|
|
1574
|
+
"installSpinnerStop": "Dependencies installed.",
|
|
1575
|
+
"installSpinnerFailed": "Failed to install dependencies:",
|
|
1467
1576
|
"notesHeading": "Notering:",
|
|
1468
1577
|
"caveatsHeading": "Varning:",
|
|
1469
1578
|
"errorMissingPlatform": "Saknad obligatorisk argument \"platform\". Förväntat ett av: {{platforms}}",
|
|
@@ -1518,6 +1627,10 @@ const MESSAGES = {
|
|
|
1518
1627
|
"nextStepsNav": "cd {{dir}}",
|
|
1519
1628
|
"nextStepsInstall": "Installer avhengigheter: {{command}}",
|
|
1520
1629
|
"nextStepsDevServer": "Start utviklingsserveren (hvis malen din har en)",
|
|
1630
|
+
"getStartedHeading": "Get started:",
|
|
1631
|
+
"installSpinnerStart": "Installing dependencies...",
|
|
1632
|
+
"installSpinnerStop": "Dependencies installed.",
|
|
1633
|
+
"installSpinnerFailed": "Failed to install dependencies:",
|
|
1521
1634
|
"notesHeading": "Merk:",
|
|
1522
1635
|
"caveatsHeading": "Forbehold:",
|
|
1523
1636
|
"errorMissingPlatform": "Mangler påkrevd argument \"platform\". Forventet en av: {{platforms}}",
|
|
@@ -1572,6 +1685,10 @@ const MESSAGES = {
|
|
|
1572
1685
|
"nextStepsNav": "cd {{dir}}",
|
|
1573
1686
|
"nextStepsInstall": "Installer avhengigheiter: {{command}}",
|
|
1574
1687
|
"nextStepsDevServer": "Start utviklarserveren (om malen har ein)",
|
|
1688
|
+
"getStartedHeading": "Get started:",
|
|
1689
|
+
"installSpinnerStart": "Installing dependencies...",
|
|
1690
|
+
"installSpinnerStop": "Dependencies installed.",
|
|
1691
|
+
"installSpinnerFailed": "Failed to install dependencies:",
|
|
1575
1692
|
"notesHeading": "Merk:",
|
|
1576
1693
|
"caveatsHeading": "Forbehald:",
|
|
1577
1694
|
"errorMissingPlatform": "Manglande påkravd argument \"platform\". Forventa éin av: {{platforms}}",
|
|
@@ -1626,6 +1743,10 @@ const MESSAGES = {
|
|
|
1626
1743
|
"nextStepsNav": "cd {{dir}}",
|
|
1627
1744
|
"nextStepsInstall": "نصب وابستگیها: {{command}}",
|
|
1628
1745
|
"nextStepsDevServer": "راهاندازی سرور توسعه (در صورت وجود در قالب شما)",
|
|
1746
|
+
"getStartedHeading": "Get started:",
|
|
1747
|
+
"installSpinnerStart": "Installing dependencies...",
|
|
1748
|
+
"installSpinnerStop": "Dependencies installed.",
|
|
1749
|
+
"installSpinnerFailed": "Failed to install dependencies:",
|
|
1629
1750
|
"notesHeading": "توجه:",
|
|
1630
1751
|
"caveatsHeading": "ملاحظات:",
|
|
1631
1752
|
"errorMissingPlatform": "آرگومان اجباری \"platform\" مفقود است. انتظار یکی از موارد: {{platforms}}",
|
|
@@ -1680,6 +1801,10 @@ const MESSAGES = {
|
|
|
1680
1801
|
"nextStepsNav": "cd {{dir}}",
|
|
1681
1802
|
"nextStepsInstall": "Zainstaluj zależności: {{command}}",
|
|
1682
1803
|
"nextStepsDevServer": "Uruchom serwer deweloperski (jeśli szablon go zawiera)",
|
|
1804
|
+
"getStartedHeading": "Get started:",
|
|
1805
|
+
"installSpinnerStart": "Installing dependencies...",
|
|
1806
|
+
"installSpinnerStop": "Dependencies installed.",
|
|
1807
|
+
"installSpinnerFailed": "Failed to install dependencies:",
|
|
1683
1808
|
"notesHeading": "Uwaga:",
|
|
1684
1809
|
"caveatsHeading": "Ograniczenie:",
|
|
1685
1810
|
"errorMissingPlatform": "Brakuje wymaganego argumentu \"platform\". Oczekiwano jednego z: {{platforms}}",
|
|
@@ -1734,6 +1859,10 @@ const MESSAGES = {
|
|
|
1734
1859
|
"nextStepsNav": "cd {{dir}}",
|
|
1735
1860
|
"nextStepsInstall": "Instalar dependências: {{command}}",
|
|
1736
1861
|
"nextStepsDevServer": "Inicie o servidor de desenvolvimento (se o seu template tiver um)",
|
|
1862
|
+
"getStartedHeading": "Get started:",
|
|
1863
|
+
"installSpinnerStart": "Installing dependencies...",
|
|
1864
|
+
"installSpinnerStop": "Dependencies installed.",
|
|
1865
|
+
"installSpinnerFailed": "Failed to install dependencies:",
|
|
1737
1866
|
"notesHeading": "Observação:",
|
|
1738
1867
|
"caveatsHeading": "Atenção:",
|
|
1739
1868
|
"errorMissingPlatform": "Argumento obrigatório \"platform\" ausente. Esperado um dos: {{platforms}}",
|
|
@@ -1788,6 +1917,10 @@ const MESSAGES = {
|
|
|
1788
1917
|
"nextStepsNav": "cd {{dir}}",
|
|
1789
1918
|
"nextStepsInstall": "Instalar dependências: {{command}}",
|
|
1790
1919
|
"nextStepsDevServer": "Iniciar o servidor de desenvolvimento (se o template tiver um)",
|
|
1920
|
+
"getStartedHeading": "Get started:",
|
|
1921
|
+
"installSpinnerStart": "Installing dependencies...",
|
|
1922
|
+
"installSpinnerStop": "Dependencies installed.",
|
|
1923
|
+
"installSpinnerFailed": "Failed to install dependencies:",
|
|
1791
1924
|
"notesHeading": "Observação:",
|
|
1792
1925
|
"caveatsHeading": "Atenção:",
|
|
1793
1926
|
"errorMissingPlatform": "Argumento obrigatório \"platform\" ausente. Esperado um de: {{platforms}}",
|
|
@@ -1842,6 +1975,10 @@ const MESSAGES = {
|
|
|
1842
1975
|
"nextStepsNav": "cd {{dir}}",
|
|
1843
1976
|
"nextStepsInstall": "Установите зависимости: {{command}}",
|
|
1844
1977
|
"nextStepsDevServer": "Запустите dev-сервер (если он есть в шаблоне)",
|
|
1978
|
+
"getStartedHeading": "Get started:",
|
|
1979
|
+
"installSpinnerStart": "Installing dependencies...",
|
|
1980
|
+
"installSpinnerStop": "Dependencies installed.",
|
|
1981
|
+
"installSpinnerFailed": "Failed to install dependencies:",
|
|
1845
1982
|
"notesHeading": "Примечание:",
|
|
1846
1983
|
"caveatsHeading": "Ограничения:",
|
|
1847
1984
|
"errorMissingPlatform": "Отсутствует обязательный аргумент \"platform\". Ожидалось одно из: {{platforms}}",
|
|
@@ -1896,6 +2033,10 @@ const MESSAGES = {
|
|
|
1896
2033
|
"nextStepsNav": "cd {{dir}}",
|
|
1897
2034
|
"nextStepsInstall": "安装依赖:{{command}}",
|
|
1898
2035
|
"nextStepsDevServer": "启动开发服务器(如果你的模板提供)",
|
|
2036
|
+
"getStartedHeading": "Get started:",
|
|
2037
|
+
"installSpinnerStart": "Installing dependencies...",
|
|
2038
|
+
"installSpinnerStop": "Dependencies installed.",
|
|
2039
|
+
"installSpinnerFailed": "Failed to install dependencies:",
|
|
1899
2040
|
"notesHeading": "注意:",
|
|
1900
2041
|
"caveatsHeading": "注意事项:",
|
|
1901
2042
|
"errorMissingPlatform": "缺少必需参数 \"platform\"。期望其中之一:{{platforms}}",
|
|
@@ -1950,6 +2091,10 @@ const MESSAGES = {
|
|
|
1950
2091
|
"nextStepsNav": "cd {{dir}}",
|
|
1951
2092
|
"nextStepsInstall": "Namestite odvisnosti: {{command}}",
|
|
1952
2093
|
"nextStepsDevServer": "Zaženite razvojni strežnik (če ga ima predloga)",
|
|
2094
|
+
"getStartedHeading": "Get started:",
|
|
2095
|
+
"installSpinnerStart": "Installing dependencies...",
|
|
2096
|
+
"installSpinnerStop": "Dependencies installed.",
|
|
2097
|
+
"installSpinnerFailed": "Failed to install dependencies:",
|
|
1953
2098
|
"notesHeading": "Opomba:",
|
|
1954
2099
|
"caveatsHeading": "Opozorilo:",
|
|
1955
2100
|
"errorMissingPlatform": "Manjka zahtevan argument \"platform\". Pričakovana ena od: {{platforms}}",
|
|
@@ -2004,6 +2149,10 @@ const MESSAGES = {
|
|
|
2004
2149
|
"nextStepsNav": "cd {{dir}}",
|
|
2005
2150
|
"nextStepsInstall": "Instalar dependencias: {{command}}",
|
|
2006
2151
|
"nextStepsDevServer": "Iniciar el servidor de desarrollo (si la plantilla tiene uno)",
|
|
2152
|
+
"getStartedHeading": "Get started:",
|
|
2153
|
+
"installSpinnerStart": "Installing dependencies...",
|
|
2154
|
+
"installSpinnerStop": "Dependencies installed.",
|
|
2155
|
+
"installSpinnerFailed": "Failed to install dependencies:",
|
|
2007
2156
|
"notesHeading": "Nota:",
|
|
2008
2157
|
"caveatsHeading": "Precaución:",
|
|
2009
2158
|
"errorMissingPlatform": "Falta el argumento requerido \"platform\". Se esperaba uno de: {{platforms}}",
|
|
@@ -2058,6 +2207,10 @@ const MESSAGES = {
|
|
|
2058
2207
|
"nextStepsNav": "cd {{dir}}",
|
|
2059
2208
|
"nextStepsInstall": "Installera beroenden: {{command}}",
|
|
2060
2209
|
"nextStepsDevServer": "Starta dev-servern (om din mall har en)",
|
|
2210
|
+
"getStartedHeading": "Get started:",
|
|
2211
|
+
"installSpinnerStart": "Installing dependencies...",
|
|
2212
|
+
"installSpinnerStop": "Dependencies installed.",
|
|
2213
|
+
"installSpinnerFailed": "Failed to install dependencies:",
|
|
2061
2214
|
"notesHeading": "Notera:",
|
|
2062
2215
|
"caveatsHeading": "Varning:",
|
|
2063
2216
|
"errorMissingPlatform": "Saknas obligatoriskt argument \"platform\". Förväntat ett av: {{platforms}}",
|
|
@@ -2112,6 +2265,10 @@ const MESSAGES = {
|
|
|
2112
2265
|
"nextStepsNav": "cd {{dir}}",
|
|
2113
2266
|
"nextStepsInstall": "ติดตั้ง dependencies: {{command}}",
|
|
2114
2267
|
"nextStepsDevServer": "เริ่มเซิร์ฟเวอร์สำหรับพัฒนา (ถ้าเทมเพลตมี)",
|
|
2268
|
+
"getStartedHeading": "Get started:",
|
|
2269
|
+
"installSpinnerStart": "Installing dependencies...",
|
|
2270
|
+
"installSpinnerStop": "Dependencies installed.",
|
|
2271
|
+
"installSpinnerFailed": "Failed to install dependencies:",
|
|
2115
2272
|
"notesHeading": "หมายเหตุ:",
|
|
2116
2273
|
"caveatsHeading": "ข้อควรระวัง:",
|
|
2117
2274
|
"errorMissingPlatform": "ขาดอาร์กิวเมนต์ที่จำเป็น \"platform\". คาดหวังหนึ่งใน: {{platforms}}",
|
|
@@ -2166,6 +2323,10 @@ const MESSAGES = {
|
|
|
2166
2323
|
"nextStepsNav": "cd {{dir}}",
|
|
2167
2324
|
"nextStepsInstall": "安裝相依套件:{{command}}",
|
|
2168
2325
|
"nextStepsDevServer": "啟動開發伺服器(若範本有提供)",
|
|
2326
|
+
"getStartedHeading": "Get started:",
|
|
2327
|
+
"installSpinnerStart": "Installing dependencies...",
|
|
2328
|
+
"installSpinnerStop": "Dependencies installed.",
|
|
2329
|
+
"installSpinnerFailed": "Failed to install dependencies:",
|
|
2169
2330
|
"notesHeading": "注意:",
|
|
2170
2331
|
"caveatsHeading": "注意事項:",
|
|
2171
2332
|
"errorMissingPlatform": "遺漏必要參數 \"platform\"。預期其中一項:{{platforms}}",
|
|
@@ -2220,6 +2381,10 @@ const MESSAGES = {
|
|
|
2220
2381
|
"nextStepsNav": "cd {{dir}}",
|
|
2221
2382
|
"nextStepsInstall": "Bağımlılıkları kurun: {{command}}",
|
|
2222
2383
|
"nextStepsDevServer": "Geliştirme sunucusunu başlatın (şablonunuzda varsa)",
|
|
2384
|
+
"getStartedHeading": "Get started:",
|
|
2385
|
+
"installSpinnerStart": "Installing dependencies...",
|
|
2386
|
+
"installSpinnerStop": "Dependencies installed.",
|
|
2387
|
+
"installSpinnerFailed": "Failed to install dependencies:",
|
|
2223
2388
|
"notesHeading": "Not:",
|
|
2224
2389
|
"caveatsHeading": "Uyarı:",
|
|
2225
2390
|
"errorMissingPlatform": "Gerekli argüman \"platform\" eksik. Beklenenler: {{platforms}}",
|
|
@@ -2274,6 +2439,10 @@ const MESSAGES = {
|
|
|
2274
2439
|
"nextStepsNav": "cd {{dir}}",
|
|
2275
2440
|
"nextStepsInstall": "Встановити залежності: {{command}}",
|
|
2276
2441
|
"nextStepsDevServer": "Запустити dev‑сервер (якщо шаблон його має)",
|
|
2442
|
+
"getStartedHeading": "Get started:",
|
|
2443
|
+
"installSpinnerStart": "Installing dependencies...",
|
|
2444
|
+
"installSpinnerStop": "Dependencies installed.",
|
|
2445
|
+
"installSpinnerFailed": "Failed to install dependencies:",
|
|
2277
2446
|
"notesHeading": "Примітка:",
|
|
2278
2447
|
"caveatsHeading": "Попередження:",
|
|
2279
2448
|
"errorMissingPlatform": "Відсутній обовʼязковий аргумент \"platform\". Очікується один з: {{platforms}}",
|
|
@@ -2328,6 +2497,10 @@ const MESSAGES = {
|
|
|
2328
2497
|
"nextStepsNav": "cd {{dir}}",
|
|
2329
2498
|
"nextStepsInstall": "Cài đặt phụ thuộc: {{command}}",
|
|
2330
2499
|
"nextStepsDevServer": "Khởi động máy chủ dev (nếu mẫu có)",
|
|
2500
|
+
"getStartedHeading": "Get started:",
|
|
2501
|
+
"installSpinnerStart": "Installing dependencies...",
|
|
2502
|
+
"installSpinnerStop": "Dependencies installed.",
|
|
2503
|
+
"installSpinnerFailed": "Failed to install dependencies:",
|
|
2331
2504
|
"notesHeading": "Lưu ý:",
|
|
2332
2505
|
"caveatsHeading": "Cảnh báo:",
|
|
2333
2506
|
"errorMissingPlatform": "Thiếu tham số bắt buộc \"platform\". Mong đợi một trong: {{platforms}}",
|
|
@@ -2382,6 +2555,10 @@ const MESSAGES = {
|
|
|
2382
2555
|
"nextStepsNav": "cd {{dir}}",
|
|
2383
2556
|
"nextStepsInstall": "Gosod dibyniaethau: {{command}}",
|
|
2384
2557
|
"nextStepsDevServer": "Cychwyn y gweinydd datblyg (os oes gan eich templed un)",
|
|
2558
|
+
"getStartedHeading": "Get started:",
|
|
2559
|
+
"installSpinnerStart": "Installing dependencies...",
|
|
2560
|
+
"installSpinnerStop": "Dependencies installed.",
|
|
2561
|
+
"installSpinnerFailed": "Failed to install dependencies:",
|
|
2385
2562
|
"notesHeading": "Nodyn:",
|
|
2386
2563
|
"caveatsHeading": "Rhybudd:",
|
|
2387
2564
|
"errorMissingPlatform": "Diffyg y dadleuon gofynnol \"platform\". Disgwylir un o: {{platforms}}",
|
|
@@ -2646,6 +2823,32 @@ function pmCommands(pm) {
|
|
|
2646
2823
|
return PM_COMMANDS[pm ?? "npm"];
|
|
2647
2824
|
}
|
|
2648
2825
|
/**
|
|
2826
|
+
* Runs the detected package manager's install command in `dir`, wrapped in a clack spinner.
|
|
2827
|
+
* Failures are reported but non-fatal — the project is still usable, just not installed — so the
|
|
2828
|
+
* caller decides how `printNextSteps` should reflect the outcome via the returned boolean.
|
|
2829
|
+
*
|
|
2830
|
+
* @param dir - The scaffold directory to install into
|
|
2831
|
+
* @param pm - The detected package manager (defaults to npm's command when undefined)
|
|
2832
|
+
* @param t - Localized string lookup
|
|
2833
|
+
* @returns Whether the install command exited successfully
|
|
2834
|
+
*/
|
|
2835
|
+
function installWithSpinner(dir, pm, t) {
|
|
2836
|
+
const [command, ...args] = pmCommands(pm).install.split(" ");
|
|
2837
|
+
const s = spinner();
|
|
2838
|
+
s.start(t("installSpinnerStart"));
|
|
2839
|
+
try {
|
|
2840
|
+
execFileSync(command, args, {
|
|
2841
|
+
cwd: dir,
|
|
2842
|
+
stdio: "ignore"
|
|
2843
|
+
});
|
|
2844
|
+
s.stop(t("installSpinnerStop"));
|
|
2845
|
+
return true;
|
|
2846
|
+
} catch (err) {
|
|
2847
|
+
s.stop(`${t("installSpinnerFailed")} ${err instanceof Error ? err.message : String(err)}`);
|
|
2848
|
+
return false;
|
|
2849
|
+
}
|
|
2850
|
+
}
|
|
2851
|
+
/**
|
|
2649
2852
|
* Finds the scaffolded `package.json` among `written` and returns its preferred run script name
|
|
2650
2853
|
* (`dev`, else `preview`), or `undefined` if no such file/script exists (or can't be read).
|
|
2651
2854
|
*/
|
|
@@ -2665,20 +2868,27 @@ function detectRunScript(written) {
|
|
|
2665
2868
|
function substituteVars(text, vars) {
|
|
2666
2869
|
return text.replace(/\{\{(\w+)\}\}/g, (match, name) => vars[name] ?? match);
|
|
2667
2870
|
}
|
|
2871
|
+
/** The one remaining manual step after an automatic install: `cd <dir> && <dev>`, or just `<dev>` when `dir` is `.`. */
|
|
2872
|
+
function buildDevStep(dir, dev) {
|
|
2873
|
+
return dir === "." ? dev : `cd ${dir} && ${dev}`;
|
|
2874
|
+
}
|
|
2668
2875
|
/**
|
|
2669
2876
|
* Prints the post-scaffold "Next steps" block (plus any template-authored notes/caveats).
|
|
2670
2877
|
*
|
|
2671
|
-
* When `
|
|
2672
|
-
*
|
|
2673
|
-
*
|
|
2674
|
-
*
|
|
2878
|
+
* When `installed` is true (dependencies were already installed automatically), the block collapses
|
|
2879
|
+
* to the single remaining manual action — starting the dev server, prefixed with `cd <dir>` when
|
|
2880
|
+
* needed — regardless of platform. Otherwise, when `platform` has a `scaffold.json`-derived entry in
|
|
2881
|
+
* `SCAFFOLD_METADATA`, next steps/notes/caveats are rendered from its (localized, `{{var}}`-
|
|
2882
|
+
* substituted) authored strings; failing that, a generic cd/install/run-script fallback is used,
|
|
2883
|
+
* with the run script itself detected from the scaffolded `package.json` (`dev`, else `preview`).
|
|
2675
2884
|
*
|
|
2676
2885
|
* @param dir - The scaffold directory
|
|
2677
2886
|
* @param written - The paths written by scaffoldProject
|
|
2678
2887
|
* @param t - Localized string lookup
|
|
2679
2888
|
* @param platform - The resolved (alias-free) scaffold platform, used to look up `scaffold.json` metadata
|
|
2889
|
+
* @param installed - Whether dependencies were already installed automatically
|
|
2680
2890
|
*/
|
|
2681
|
-
function printNextSteps(dir, written, t, platform) {
|
|
2891
|
+
function printNextSteps(dir, written, t, platform, installed) {
|
|
2682
2892
|
const pm = detectPackageManager();
|
|
2683
2893
|
const { install, run } = pmCommands(pm);
|
|
2684
2894
|
const script = detectRunScript(written);
|
|
@@ -2692,13 +2902,13 @@ function printNextSteps(dir, written, t, platform) {
|
|
|
2692
2902
|
dev
|
|
2693
2903
|
};
|
|
2694
2904
|
const meta = platform ? SCAFFOLD_METADATA[platform] : void 0;
|
|
2695
|
-
const steps = meta?.nextStepsKeys.length ? meta.nextStepsKeys.map((key) => substituteVars(t(key), vars)) : [
|
|
2905
|
+
const steps = installed ? [buildDevStep(dir, dev)] : meta?.nextStepsKeys.length ? meta.nextStepsKeys.map((key) => substituteVars(t(key), vars)) : [
|
|
2696
2906
|
t("nextStepsNav", { dir }),
|
|
2697
2907
|
t("nextStepsInstall", { command: install }),
|
|
2698
2908
|
dev
|
|
2699
2909
|
];
|
|
2700
2910
|
console.log();
|
|
2701
|
-
console.log(t("nextStepsHeading"));
|
|
2911
|
+
console.log(installed ? t("getStartedHeading") : t("nextStepsHeading"));
|
|
2702
2912
|
steps.forEach((step, i) => console.log(`${i + 1}. ${step}`));
|
|
2703
2913
|
if (meta?.notesKey) console.log(`\n${t("notesHeading")} ${substituteVars(t(meta.notesKey), vars)}`);
|
|
2704
2914
|
if (meta?.caveatsKey) console.log(`${t("caveatsHeading")} ${substituteVars(t(meta.caveatsKey), vars)}`);
|
|
@@ -2736,7 +2946,7 @@ function createScaffoldCommand(options) {
|
|
|
2736
2946
|
const program = new Command(programName).exitOverride().configureOutput({
|
|
2737
2947
|
writeOut: (s) => process.stdout.write(s),
|
|
2738
2948
|
writeErr: (s) => process.stderr.write(s)
|
|
2739
|
-
}).addArgument(new Argument("[platform]", `Platform to scaffold (${SCAFFOLD_PLATFORMS.join("|")}; "html" is an alias for "components")`).argParser(validateScaffoldPlatform)).option("-d, --dir <path>", "Target directory (prompts interactively on a TTY if omitted)").option("-y, --yes", "Never prompt; error instead of prompting for a missing platform/directory", false).option("-l, --lang <tag>", "Override the auto-detected display language (e.g. \"hu\")").option("--theme <name>", "Token theme: rebrand (default), canvas, canvasHighContrast", validateThemeVariant).option("--theme-mode <mode>", "Rebrand token mode: light (default) or adaptive; ignored outside the rebrand theme", validateThemeMode).option("--cdn <provider>", "CDN provider for canvas-theme-editor's theme.css/theme.js: jsdelivr (default), unpkg, esmsh", validateCdnProviderId);
|
|
2949
|
+
}).addArgument(new Argument("[platform]", `Platform to scaffold (${SCAFFOLD_PLATFORMS.join("|")}; "html" is an alias for "components")`).argParser(validateScaffoldPlatform)).option("-d, --dir <path>", "Target directory (prompts interactively on a TTY if omitted)").option("-y, --yes", "Never prompt; error instead of prompting for a missing platform/directory", false).option("-l, --lang <tag>", "Override the auto-detected display language (e.g. \"hu\")").option("--theme <name>", "Token theme: rebrand (default), canvas, canvasHighContrast", validateThemeVariant).option("--theme-mode <mode>", "Rebrand token mode: light (default) or adaptive; ignored outside the rebrand theme", validateThemeMode).option("--cdn <provider>", "CDN provider for canvas-theme-editor's theme.css/theme.js: jsdelivr (default), unpkg, esmsh", validateCdnProviderId).option("--no-install", "Skip automatically installing dependencies after scaffolding");
|
|
2740
2950
|
if (options?.version) program.version(options.version, "-v, --version");
|
|
2741
2951
|
program.action(async (platformArg, opts) => {
|
|
2742
2952
|
const locale = detectLocale({ langFlag: opts.lang });
|
|
@@ -2755,7 +2965,8 @@ function createScaffoldCommand(options) {
|
|
|
2755
2965
|
cdn: opts.cdn
|
|
2756
2966
|
});
|
|
2757
2967
|
for (const path of written) console.log(t("wroteFile", { path }));
|
|
2758
|
-
|
|
2968
|
+
const installed = opts.install !== false && installWithSpinner(expandedDir, detectPackageManager(), t);
|
|
2969
|
+
printNextSteps(expandedDir, written, t, resolveScaffoldPlatform(platform), installed);
|
|
2759
2970
|
} catch (err) {
|
|
2760
2971
|
if (err instanceof ScaffoldCliError) throw err;
|
|
2761
2972
|
throw err;
|
|
@@ -2793,4 +3004,4 @@ async function runScaffoldCli(argv, options) {
|
|
|
2793
3004
|
}
|
|
2794
3005
|
}
|
|
2795
3006
|
//#endregion
|
|
2796
|
-
export { MESSAGES, SCAFFOLD_PLATFORMS, ScaffoldCliError, createLocaleLookup, createScaffoldCommand, detectLocale, detectPackageManager, expandHome, isScaffoldPlatform, printNextSteps, resolveScaffoldPlatform, resolveScaffoldTarget, runScaffoldCli, scaffoldProject, scaffoldWithSpinner, shouldPrompt, validateCdnProviderId, validateScaffoldPlatform };
|
|
3007
|
+
export { MESSAGES, SCAFFOLD_PLATFORMS, ScaffoldCliError, createLocaleLookup, createScaffoldCommand, detectLocale, detectPackageManager, expandHome, installWithSpinner, isScaffoldPlatform, printNextSteps, resolveScaffoldPlatform, resolveScaffoldTarget, runScaffoldCli, scaffoldProject, scaffoldWithSpinner, shouldPrompt, validateCdnProviderId, validateScaffoldPlatform };
|
package/dist/index.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as themeStylesheetImport, i as scaffoldProject, n as isScaffoldPlatform, o as validateThemeMode, r as resolveScaffoldPlatform, s as validateThemeVariant, t as SCAFFOLD_PLATFORMS } from "./src-
|
|
1
|
+
import { a as themeStylesheetImport, i as scaffoldProject, n as isScaffoldPlatform, o as validateThemeMode, r as resolveScaffoldPlatform, s as validateThemeVariant, t as SCAFFOLD_PLATFORMS } from "./src-CdZxIoo2.mjs";
|
|
2
2
|
export { SCAFFOLD_PLATFORMS, isScaffoldPlatform, resolveScaffoldPlatform, scaffoldProject, themeStylesheetImport, validateThemeMode, validateThemeVariant };
|
|
@@ -15,7 +15,8 @@ const SCAFFOLDS = {
|
|
|
15
15
|
".gitignore": "node_modules\ndist\n",
|
|
16
16
|
"README.md": "# {{projectName}}\n\nScaffolded with `pantoken-scaffold angular` (or `pantoken-ai scaffold angular`) — a standalone\nAngular app (via Vite + `@analogjs/vite-plugin-angular`, no Angular CLI) styled with\n[`@pantoken/components`](https://www.npmjs.com/package/@pantoken/components) and\n[`@pantoken/angular`](https://www.npmjs.com/package/@pantoken/angular) (pantoken custom elements\nfor Angular).\n\n## Develop\n\n```sh\nnpm install\nnpm run dev\n```\n\n## What's here\n\n- `src/main.ts` calls `registerPantokenElements()` (from `@pantoken/angular`) once at bootstrap so\n elements like `<instui-icon>` work in templates, and imports the token/component CSS plus\n `@pantoken/plugin-layouts/layouts.css`.\n- `src/app.component.ts` is a standalone component (`CUSTOM_ELEMENTS_SCHEMA` lets the template\n compiler accept pantoken's custom element tags) whose template follows the `wrapper` app-shell\n layout from `@pantoken/plugin-layouts` (`.container` / `.header` / `.content` parts).\n- Apply classes like `class=\"instui-button\"` to markup; see the\n [component reference](https://pantoken.app/api/css) for the full class list.\n",
|
|
17
17
|
"index.html": "<!doctype html>\n<html lang=\"en\">\n <head>\n <meta charset=\"UTF-8\" />\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n <title>{{projectName}}</title>\n </head>\n <body class=\"instui-display-flex\">\n <app-root></app-root>\n <script type=\"module\" src=\"/src/main.ts\"><\/script>\n </body>\n</html>\n",
|
|
18
|
-
"package.json": "{\n \"name\": \"{{projectName}}\",\n \"version\": \"0.0.0\",\n \"private\": true,\n \"type\": \"module\",\n \"scripts\": {\n \"dev\": \"vite\",\n \"build\": \"vite build\",\n \"preview\": \"vite preview\"\n },\n \"dependencies\": {\n \"@angular/common\": \"^22.1.3\",\n \"@angular/compiler\": \"^22.1.3\",\n \"@angular/core\": \"^22.1.3\",\n \"@angular/platform-browser\": \"^22.1.3\",\n \"@pantoken/angular\": \"latest\",\n \"@pantoken/plugin-layouts\": \"latest\",\n \"rxjs\": \"^7.8.2\",\n \"zone.js\": \"^0.16.2\"\n },\n \"devDependencies\": {\n \"@analogjs/vite-plugin-angular\": \"^2.7.0\",\n \"@pantoken/pantoken\": \"latest\",\n \"typescript\": \"^7.0.2\",\n \"vite\": \"^8.2.2\"\n }\n}\n",
|
|
18
|
+
"package.json": "{\n \"name\": \"{{projectName}}\",\n \"version\": \"0.0.0\",\n \"private\": true,\n \"type\": \"module\",\n \"scripts\": {\n \"dev\": \"vite\",\n \"build\": \"vite build\",\n \"preview\": \"vite preview\"\n },\n \"dependencies\": {\n \"@angular/common\": \"^22.1.3\",\n \"@angular/compiler\": \"^22.1.3\",\n \"@angular/core\": \"^22.1.3\",\n \"@angular/platform-browser\": \"^22.1.3\",\n \"@pantoken/angular\": \"latest\",\n \"@pantoken/plugin-layouts\": \"latest\",\n \"rxjs\": \"^7.8.2\",\n \"zone.js\": \"^0.16.2\"\n },\n \"devDependencies\": {\n \"@analogjs/vite-plugin-angular\": \"^2.7.0\",\n \"@pantoken/pantoken\": \"latest\",\n \"typescript\": \"^7.0.2\",\n \"vite\": \"^8.2.2\"\n },\n \"allowScripts\": {\n \"core-js\": true,\n \"ttf2woff2\": true\n },\n \"trustedDependencies\": [\n \"core-js\",\n \"ttf2woff2\"\n ]\n}\n",
|
|
19
|
+
"pnpm-workspace.yaml": "# core-js/ttf2woff2 arrive transitively via @pantoken/pantoken; pre-approve their install scripts\n# so `pnpm install` doesn't fail/warn under pnpm's default strictDepBuilds gate.\nallowBuilds:\n core-js: true\n ttf2woff2: true\n",
|
|
19
20
|
"tsconfig.json": "{\n \"compilerOptions\": {\n \"target\": \"ES2022\",\n \"lib\": [\"ES2022\", \"DOM\", \"DOM.Iterable\"],\n \"module\": \"ESNext\",\n \"moduleResolution\": \"Bundler\",\n \"experimentalDecorators\": true,\n \"useDefineForClassFields\": false,\n \"strict\": true,\n \"skipLibCheck\": true\n },\n \"include\": [\"src\"]\n}\n",
|
|
20
21
|
"vite.config.ts": "import angular from \"@analogjs/vite-plugin-angular\";\nimport { defineConfig } from \"vite\";\n\nexport default defineConfig({\n plugins: [angular()],\n});\n",
|
|
21
22
|
".vscode/extensions.json": "{\n \"recommendations\": [\"cssdoc.cssdoc-vscode\", \"angular.ng-template\"]\n}\n",
|
|
@@ -28,7 +29,8 @@ const SCAFFOLDS = {
|
|
|
28
29
|
".gitignore": "node_modules\ndist\n",
|
|
29
30
|
"README.md": "# {{projectName}}\n\nScaffolded with `pantoken-scaffold canvas-theme-editor` (or `pantoken-ai scaffold canvas-theme-editor`)\n— upload-ready assets for Canvas LMS's **Theme Editor**, plus a local preview for authoring Rich\nContent Editor (RCE) page templates styled with\n[`@pantoken/components`](https://www.npmjs.com/package/@pantoken/components).\n\n## What's here\n\n- `theme.css` / `theme.js` — upload these two files under **Theme Editor → Advanced** in Canvas.\n They're built for the CDN provider/theme/mode you chose when scaffolding (`--cdn`/`--theme`/\n `--theme-mode`; jsDelivr/rebrand/light by default) and include a loader for\n `@pantoken/interactions` (wires up component behaviors like modal, tooltip, and drilldown).\n- `index.html` / `src/main.ts` — a local, TinyMCE-based editor (`npm run dev`) that mirrors Canvas's\n RCE so you can author page templates against pantoken's classes before copying them into Canvas.\n The page itself is built with pantoken's `wrapper` layout: click **Edit theme** to open a tray\n with **Config** / **CSS** / **JS** tabs (CDN provider/theme/mode selects, and syntax-highlighted,\n hand-editable copies of `theme.css`/`theme.js` that feed the live preview), and the **?** button\n for full instructions. Use the **Layouts** toolbar button to start from one of pantoken's bundled\n starter page layouts (hero, callout, two-column, rubric note, testimonial), sourced from\n [`@pantoken/plugin-layouts`](https://www.npmjs.com/package/@pantoken/plugin-layouts).\n\n## Develop\n\n```sh\nnpm install\nnpm run dev\n```\n\nThis opens a Vite dev server with:\n\n- An **editor** pane (TinyMCE, matching the version/config\n [instructure/canvas-lms](https://github.com/instructure/canvas-lms) itself uses — see below).\n Use the **Layouts** button to load one of the bundled starter layouts (this replaces the whole\n document, after a confirm, rather than inserting at the cursor), and the **Source code** toggle\n to hand-edit the raw HTML in a syntax-highlighted (CodeMirror) view alongside the editor, with\n the preview pane updating live as you type — unlike TinyMCE's stock `code` plugin, which edits in\n a one-shot modal dialog with no live preview.\n- A **preview** pane showing the editor's content with the current CSS/JS tab's stylesheet/script\n applied (not just the resolved CDN URLs), wrapped to match Canvas's own content-area background\n and max width — a faithful \"what this will look like once uploaded to Canvas\" check, updated\n live as you type or edit the theme.\n- The editor and preview panes sit in a split view you can resize by dragging the divider, stack\n vertically instead of side by side, and swap the order of (drag a pane's toolbar onto the other,\n or use the **Swap panes** button). Each pane has its own fullscreen button.\n- The **Edit theme** tray's **Config** tab holds the CDN provider/theme/mode selects and\n **Download theme.css** / **Download theme.js** links; its **CSS**/**JS** tabs are editable copies\n of the generated files — hand-edit them and the preview picks up your changes directly. Changing\n a Config select re-generates the CSS/JS tabs unless you've already edited them, in which case a\n **Regenerate from config** button appears instead of silently overwriting your edit.\n\n## Workflow\n\n1. Upload `theme.css` and `theme.js` to Canvas's Theme Editor (**Advanced → CSS / JavaScript**) so\n pantoken's classes are available on every page.\n2. Run `npm run dev`, use **Layouts** to start from a bundled starter, and edit it like you\n would in Canvas's own RCE.\n3. Click **Copy HTML** and paste the result into a Canvas page's RCE (switch to the HTML editor\n view first). Canvas sanitizes pasted HTML server-side — this scaffold doesn't attempt to\n replicate that, so always verify the pasted result in Canvas (see \"Notes on Canvas's RCE\"\n below).\n\n## Notes on Canvas's RCE\n\nThe Canvas Rich Content Editor runs TinyMCE and sanitizes submitted HTML on the server against an\nallowlist (`gems/canvas_sanitize` in canvas-lms, kept in sync with TinyMCE's own\n`valid_elements`/`extended_valid_elements`). What that allowlist means for templates built here:\n\n- `class`, `id`, `style`, `title`, `role`, and `aria-*` attributes are allowed on every element —\n pantoken's `class=\"instui-*\"` styling hooks (and inline `style`, e.g. for CSS anchor positioning)\n **do** survive being pasted and saved, contrary to older guidance in this file. `<script>` tags\n are always stripped.\n- **RCE-safe pantoken components**: static/display components — alert, view, heading, text, table,\n a button-as-`<a>` (not a real `<button>`), blockquote. Stick to semantic HTML pantoken already\n supports (`div`, `p`, `span`, `a`, `img`, headings, lists, tables).\n- **RCE-unsafe**: anything from `@pantoken/interactions`'s behavior set — modal, tooltip,\n drilldown, close-button, or any other component driven by the native `popover`/`popovertarget`/\n `command`/`commandfor` attributes. Those attributes aren't in Canvas's sanitizer allowlist, so\n the markup survives but the interactive behavior silently breaks the first time the page is\n saved in Canvas, even with `theme.js`'s `@pantoken/interactions` loader present. Real form\n elements (`input`, `form`, `button`, `select`, `textarea`, `label`) and inline `<svg>` are\n stripped outright — none of the bundled starter templates use them.\n\n`theme.js` loads `@pantoken/interactions` from the CDN, which runs in Canvas's global page scope —\nuseful for interactions on pages you build directly in Canvas's RCE with raw HTML edits, but (per\nabove) any `popover`/`command`-attribute-driven markup pasted from the RCE preview here won't stay\ninteractive once saved.\n",
|
|
30
31
|
"index.html": "<!doctype html>\n<html lang=\"en\">\n <head>\n <meta charset=\"UTF-8\" />\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n <title>{{projectName}} — RCE template authoring</title>\n </head>\n <body class=\"instui-display-flex\">\n <div id=\"app\"></div>\n <script type=\"module\" src=\"/src/main.ts\"><\/script>\n </body>\n</html>\n",
|
|
31
|
-
"package.json": "{\n \"name\": \"{{projectName}}\",\n \"version\": \"0.0.0\",\n \"private\": true,\n \"type\": \"module\",\n \"scripts\": {\n \"dev\": \"vite\",\n \"build\": \"vite build\",\n \"preview\": \"vite preview\"\n },\n \"dependencies\": {\n \"@pantoken/canvas-theme-editor\": \"latest\",\n \"@pantoken/cdn\": \"latest\",\n \"@pantoken/components\": \"latest\",\n \"@pantoken/css\": \"latest\",\n \"@pantoken/plugin-layouts\": \"latest\",\n \"@pantoken/tinymce\": \"latest\"\n },\n \"devDependencies\": {\n \"@codemirror/lang-css\": \"catalog:\",\n \"@codemirror/lang-html\": \"catalog:\",\n \"@codemirror/lang-javascript\": \"catalog:\",\n \"codemirror\": \"catalog:\",\n \"tinymce\": \"catalog:\",\n \"typescript\": \"^7.0.2\",\n \"vite\": \"^8.2.2\"\n }\n}\n",
|
|
32
|
+
"package.json": "{\n \"name\": \"{{projectName}}\",\n \"version\": \"0.0.0\",\n \"private\": true,\n \"type\": \"module\",\n \"scripts\": {\n \"dev\": \"vite\",\n \"build\": \"vite build\",\n \"preview\": \"vite preview\"\n },\n \"dependencies\": {\n \"@pantoken/canvas-theme-editor\": \"latest\",\n \"@pantoken/cdn\": \"latest\",\n \"@pantoken/components\": \"latest\",\n \"@pantoken/css\": \"latest\",\n \"@pantoken/plugin-layouts\": \"latest\",\n \"@pantoken/tinymce\": \"latest\"\n },\n \"devDependencies\": {\n \"@codemirror/lang-css\": \"catalog:\",\n \"@codemirror/lang-html\": \"catalog:\",\n \"@codemirror/lang-javascript\": \"catalog:\",\n \"codemirror\": \"catalog:\",\n \"tinymce\": \"catalog:\",\n \"typescript\": \"^7.0.2\",\n \"vite\": \"^8.2.2\"\n },\n \"allowScripts\": {\n \"core-js\": true,\n \"ttf2woff2\": true\n },\n \"trustedDependencies\": [\n \"core-js\",\n \"ttf2woff2\"\n ]\n}\n",
|
|
33
|
+
"pnpm-workspace.yaml": "# core-js/ttf2woff2 arrive transitively via @pantoken/pantoken; pre-approve their install scripts\n# so `pnpm install` doesn't fail/warn under pnpm's default strictDepBuilds gate.\nallowBuilds:\n core-js: true\n ttf2woff2: true\n",
|
|
32
34
|
"tsconfig.json": "{\n \"compilerOptions\": {\n \"target\": \"ES2022\",\n \"lib\": [\"ES2022\", \"DOM\", \"DOM.Iterable\"],\n \"module\": \"ESNext\",\n \"moduleResolution\": \"Bundler\",\n \"types\": [\"vite/client\"],\n \"strict\": true,\n \"skipLibCheck\": true,\n \"noEmit\": true\n },\n \"include\": [\"src\"]\n}\n",
|
|
33
35
|
"vite.config.ts": "import { defineConfig } from \"vite\";\n\nexport default defineConfig({});\n",
|
|
34
36
|
"src/app.css": "/* Layout for this scaffold's own authoring UI (not part of any Canvas-pasted RCE content). */\n\n.instui-tray .list {\n display: flex;\n gap: 0.5rem;\n}\n\n.instui-tray .panel[hidden] {\n display: none;\n}\n\n.code-editor {\n border: var(--instui-component-tray-border-width, 1px) solid\n var(--instui-component-tray-border-color, #ccc);\n min-height: 20rem;\n}\n\n.split-pane {\n display: flex;\n flex-direction: row;\n gap: 0;\n min-height: 30rem;\n}\n\n.split-pane.-orientation-column {\n flex-direction: column;\n}\n\n.pane {\n flex: 1 1 50%;\n min-width: 0;\n min-height: 0;\n display: flex;\n flex-direction: column;\n}\n\n.pane:fullscreen {\n padding: 1rem;\n background: var(--instui-background-color-page, #fff);\n}\n\n.pane-toolbar {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 0.5rem;\n /* Also the drag handle for reordering panes (not resizing — see .split-handle for that). */\n cursor: grab;\n}\n\n.pane-toolbar.-dragging {\n cursor: grabbing;\n opacity: 0.6;\n}\n\n.pane.-drop-target {\n outline: 2px dashed var(--instui-color-stroke-brand, #0374b5);\n}\n\n#editor,\n#css-editor,\n#js-editor,\n#preview {\n flex: 1 1 auto;\n min-height: 0;\n width: 100%;\n}\n\n#preview {\n border: 1px solid #ccc;\n}\n\n.split-handle {\n flex: 0 0 0.375rem;\n cursor: col-resize;\n background: var(--instui-color-stroke-base, #d3d3d3);\n}\n\n.split-pane.-orientation-column > .split-handle {\n cursor: row-resize;\n}\n\n.split-handle:hover,\n.split-handle.-dragging {\n background: var(--instui-color-stroke-brand, #0374b5);\n}\n",
|
|
@@ -41,7 +43,8 @@ const SCAFFOLDS = {
|
|
|
41
43
|
".gitignore": "node_modules\ndist\n",
|
|
42
44
|
"README.md": "# {{projectName}}\n\nScaffolded with `pantoken-scaffold components` (or `pantoken-ai scaffold components`) — a plain\nTypeScript app (via Vite) styled with\n[`@pantoken/components`](https://www.npmjs.com/package/@pantoken/components), Instructure's\ndesign tokens and icons.\n\n## Develop\n\n```sh\nnpm install\nnpm run dev\n```\n\n## What's here\n\n- `src/main.ts` imports `@pantoken/components/base.css` (document defaults + focus ring),\n `components.css` (`.instui-*` classes), and `@pantoken/plugin-layouts/layouts.css`, then renders\n markup into `#app`.\n- The markup follows the `wrapper` app-shell layout from `@pantoken/plugin-layouts` (`.container` /\n `.header` / `.content` parts) — see that package's README for what each part is for.\n- Apply classes like `class=\"instui-button\"` to markup; see the\n [component reference](https://pantoken.app/api/css) for the full class list.\n",
|
|
43
45
|
"index.html": "<!doctype html>\n<html lang=\"en\">\n <head>\n <meta charset=\"UTF-8\" />\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n <title>{{projectName}}</title>\n </head>\n <body class=\"instui-display-flex\">\n <div id=\"app\"></div>\n <script type=\"module\" src=\"/src/main.ts\"><\/script>\n </body>\n</html>\n",
|
|
44
|
-
"package.json": "{\n \"name\": \"{{projectName}}\",\n \"version\": \"0.0.0\",\n \"private\": true,\n \"type\": \"module\",\n \"scripts\": {\n \"dev\": \"vite\",\n \"build\": \"vite build\",\n \"preview\": \"vite preview\"\n },\n \"dependencies\": {\n \"@pantoken/components\": \"latest\",\n \"@pantoken/plugin-layouts\": \"latest\"\n },\n \"devDependencies\": {\n \"@pantoken/pantoken\": \"latest\",\n \"typescript\": \"^7.0.2\",\n \"vite\": \"^8.2.2\"\n }\n}\n",
|
|
46
|
+
"package.json": "{\n \"name\": \"{{projectName}}\",\n \"version\": \"0.0.0\",\n \"private\": true,\n \"type\": \"module\",\n \"scripts\": {\n \"dev\": \"vite\",\n \"build\": \"vite build\",\n \"preview\": \"vite preview\"\n },\n \"dependencies\": {\n \"@pantoken/components\": \"latest\",\n \"@pantoken/plugin-layouts\": \"latest\"\n },\n \"devDependencies\": {\n \"@pantoken/pantoken\": \"latest\",\n \"typescript\": \"^7.0.2\",\n \"vite\": \"^8.2.2\"\n },\n \"allowScripts\": {\n \"core-js\": true,\n \"ttf2woff2\": true\n },\n \"trustedDependencies\": [\n \"core-js\",\n \"ttf2woff2\"\n ]\n}\n",
|
|
47
|
+
"pnpm-workspace.yaml": "# core-js/ttf2woff2 arrive transitively via @pantoken/pantoken; pre-approve their install scripts\n# so `pnpm install` doesn't fail/warn under pnpm's default strictDepBuilds gate.\nallowBuilds:\n core-js: true\n ttf2woff2: true\n",
|
|
45
48
|
"tsconfig.json": "{\n \"compilerOptions\": {\n \"target\": \"ES2022\",\n \"lib\": [\"ES2022\", \"DOM\", \"DOM.Iterable\"],\n \"module\": \"ESNext\",\n \"moduleResolution\": \"Bundler\",\n \"strict\": true,\n \"skipLibCheck\": true\n },\n \"include\": [\"src\"]\n}\n",
|
|
46
49
|
"vite.config.ts": "import { defineConfig } from \"vite\";\n\nexport default defineConfig({});\n",
|
|
47
50
|
".vscode/extensions.json": "{\n \"recommendations\": [\"cssdoc.cssdoc-vscode\"]\n}\n",
|
|
@@ -53,7 +56,8 @@ const SCAFFOLDS = {
|
|
|
53
56
|
".gitignore": "node_modules\n.next\n",
|
|
54
57
|
"README.md": "# {{projectName}}\n\nScaffolded with `pantoken-scaffold next` (or `pantoken-ai scaffold next`) — a Next.js (App Router) app styled with\n[`@pantoken/next`](https://www.npmjs.com/package/@pantoken/next), Instructure's design tokens and\nicons.\n\n## Develop\n\n```sh\nnpm install\nnpm run dev\n```\n\n## What's here\n\n- `next.config.mjs` wraps the config with `withPantoken(...)` (adds pantoken to\n `transpilePackages`).\n- `app/layout.tsx` imports `@pantoken/css/inject`, which defines every `--instui-*` custom\n property, at the root so it's available on every page, plus `@pantoken/plugin-layouts/layouts.css`\n and the `wrapper` layout's root class on `<body>`.\n- `app/page.tsx` renders markup following the `wrapper` app-shell layout from\n [`@pantoken/plugin-layouts`](https://www.npmjs.com/package/@pantoken/plugin-layouts)\n (`.container` / `.header` / `.content` parts) styled with `instui-*` classes.\n",
|
|
55
58
|
"next.config.mjs": "import { withPantoken } from \"@pantoken/next\";\n\n/** @type {import('next').NextConfig} */\nconst nextConfig = {};\n\nexport default withPantoken(nextConfig);\n",
|
|
56
|
-
"package.json": "{\n \"name\": \"{{projectName}}\",\n \"version\": \"0.0.0\",\n \"private\": true,\n \"type\": \"module\",\n \"scripts\": {\n \"dev\": \"next dev\",\n \"build\": \"next build\",\n \"start\": \"next start\"\n },\n \"dependencies\": {\n \"@pantoken/next\": \"latest\",\n \"@pantoken/plugin-layouts\": \"latest\",\n \"next\": \"^16.2.11\",\n \"react\": \"^19.2.8\",\n \"react-dom\": \"^19.2.8\"\n },\n \"devDependencies\": {\n \"@pantoken/pantoken\": \"latest\",\n \"typescript\": \"^7.0.2\"\n }\n}\n",
|
|
59
|
+
"package.json": "{\n \"name\": \"{{projectName}}\",\n \"version\": \"0.0.0\",\n \"private\": true,\n \"type\": \"module\",\n \"scripts\": {\n \"dev\": \"next dev\",\n \"build\": \"next build\",\n \"start\": \"next start\"\n },\n \"dependencies\": {\n \"@pantoken/next\": \"latest\",\n \"@pantoken/plugin-layouts\": \"latest\",\n \"next\": \"^16.2.11\",\n \"react\": \"^19.2.8\",\n \"react-dom\": \"^19.2.8\"\n },\n \"devDependencies\": {\n \"@pantoken/pantoken\": \"latest\",\n \"typescript\": \"^7.0.2\"\n },\n \"allowScripts\": {\n \"core-js\": true,\n \"ttf2woff2\": true\n },\n \"trustedDependencies\": [\n \"core-js\",\n \"ttf2woff2\"\n ]\n}\n",
|
|
60
|
+
"pnpm-workspace.yaml": "# core-js/ttf2woff2 arrive transitively via @pantoken/pantoken; pre-approve their install scripts\n# so `pnpm install` doesn't fail/warn under pnpm's default strictDepBuilds gate.\nallowBuilds:\n core-js: true\n ttf2woff2: true\n",
|
|
57
61
|
"tsconfig.json": "{\n \"compilerOptions\": {\n \"target\": \"ES2022\",\n \"lib\": [\"ES2022\", \"DOM\", \"DOM.Iterable\"],\n \"module\": \"ESNext\",\n \"moduleResolution\": \"Bundler\",\n \"jsx\": \"preserve\",\n \"strict\": true,\n \"skipLibCheck\": true,\n \"plugins\": [{ \"name\": \"next\" }]\n },\n \"include\": [\"app\", \"next-env.d.ts\"]\n}\n",
|
|
58
62
|
".vscode/extensions.json": "{\n \"recommendations\": [\"cssdoc.cssdoc-vscode\"]\n}\n",
|
|
59
63
|
".vscode/settings.json": "{\n \"html.customData\": [\"./node_modules/@pantoken/pantoken/dist/html-custom-data.json\"],\n \"css.customData\": [\"./node_modules/@pantoken/pantoken/dist/css-custom-data.json\"]\n}\n",
|
|
@@ -65,7 +69,8 @@ const SCAFFOLDS = {
|
|
|
65
69
|
".gitignore": "node_modules\ndist\n",
|
|
66
70
|
"README.md": "# {{projectName}}\n\nScaffolded with `pantoken-scaffold react` (or `pantoken-ai scaffold react`) — a Vite + React app styled with\n[`@pantoken/react`](https://www.npmjs.com/package/@pantoken/react) and\n[`@pantoken/css`](https://www.npmjs.com/package/@pantoken/css), Instructure's design tokens and\nicons.\n\n## Develop\n\n```sh\nnpm install\nnpm run dev\n```\n\n## What's here\n\n- `src/main.tsx` imports `@pantoken/css/inject`, which defines every `--instui-*` custom property.\n- `src/App.tsx` renders markup following the `wrapper` app-shell layout from\n [`@pantoken/plugin-layouts`](https://www.npmjs.com/package/@pantoken/plugin-layouts)\n (`.container` / `.header` / `.content` parts) styled with `instui-*` classes.\n- For InstUI's full React component library (buttons, modals, etc. — including `@pantoken/react`'s\n `<Icon>`), add the specific `@instructure/ui-*` packages you need — see <https://instructure.design>.\n",
|
|
67
71
|
"index.html": "<!doctype html>\n<html lang=\"en\">\n <head>\n <meta charset=\"UTF-8\" />\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n <title>{{projectName}}</title>\n </head>\n <body>\n <div id=\"root\"></div>\n <script type=\"module\" src=\"/src/main.tsx\"><\/script>\n </body>\n</html>\n",
|
|
68
|
-
"package.json": "{\n \"name\": \"{{projectName}}\",\n \"version\": \"0.0.0\",\n \"private\": true,\n \"type\": \"module\",\n \"scripts\": {\n \"dev\": \"vite\",\n \"build\": \"vite build\",\n \"preview\": \"vite preview\"\n },\n \"dependencies\": {\n \"@pantoken/css\": \"latest\",\n \"@pantoken/plugin-layouts\": \"latest\",\n \"@pantoken/react\": \"latest\",\n \"react\": \"^19.2.8\",\n \"react-dom\": \"^19.2.8\"\n },\n \"devDependencies\": {\n \"@pantoken/pantoken\": \"latest\",\n \"@types/react\": \"^19.2.18\",\n \"@types/react-dom\": \"^19.2.5\",\n \"@vitejs/plugin-react\": \"^6.1.0\",\n \"typescript\": \"^7.0.2\",\n \"vite\": \"^8.2.2\"\n }\n}\n",
|
|
72
|
+
"package.json": "{\n \"name\": \"{{projectName}}\",\n \"version\": \"0.0.0\",\n \"private\": true,\n \"type\": \"module\",\n \"scripts\": {\n \"dev\": \"vite\",\n \"build\": \"vite build\",\n \"preview\": \"vite preview\"\n },\n \"dependencies\": {\n \"@pantoken/css\": \"latest\",\n \"@pantoken/plugin-layouts\": \"latest\",\n \"@pantoken/react\": \"latest\",\n \"react\": \"^19.2.8\",\n \"react-dom\": \"^19.2.8\"\n },\n \"devDependencies\": {\n \"@pantoken/pantoken\": \"latest\",\n \"@types/react\": \"^19.2.18\",\n \"@types/react-dom\": \"^19.2.5\",\n \"@vitejs/plugin-react\": \"^6.1.0\",\n \"typescript\": \"^7.0.2\",\n \"vite\": \"^8.2.2\"\n },\n \"allowScripts\": {\n \"core-js\": true,\n \"ttf2woff2\": true\n },\n \"trustedDependencies\": [\n \"core-js\",\n \"ttf2woff2\"\n ]\n}\n",
|
|
73
|
+
"pnpm-workspace.yaml": "# core-js/ttf2woff2 arrive transitively via @pantoken/pantoken; pre-approve their install scripts\n# so `pnpm install` doesn't fail/warn under pnpm's default strictDepBuilds gate.\nallowBuilds:\n core-js: true\n ttf2woff2: true\n",
|
|
69
74
|
"tsconfig.json": "{\n \"compilerOptions\": {\n \"target\": \"ES2022\",\n \"lib\": [\"ES2022\", \"DOM\", \"DOM.Iterable\"],\n \"module\": \"ESNext\",\n \"moduleResolution\": \"Bundler\",\n \"jsx\": \"react-jsx\",\n \"strict\": true,\n \"skipLibCheck\": true\n },\n \"include\": [\"src\"]\n}\n",
|
|
70
75
|
"vite.config.ts": "import { defineConfig } from \"vite\";\nimport react from \"@vitejs/plugin-react\";\n\nexport default defineConfig({\n plugins: [react()],\n});\n",
|
|
71
76
|
".vscode/extensions.json": "{\n \"recommendations\": [\"cssdoc.cssdoc-vscode\"]\n}\n",
|
|
@@ -78,7 +83,8 @@ const SCAFFOLDS = {
|
|
|
78
83
|
".gitignore": "node_modules\ndist\n",
|
|
79
84
|
"README.md": "# {{projectName}}\n\nScaffolded with `pantoken-scaffold svelte` (or `pantoken-ai scaffold svelte`) — a Vite + Svelte app\nstyled with [`@pantoken/components`](https://www.npmjs.com/package/@pantoken/components) and\n[`@pantoken/svelte`](https://www.npmjs.com/package/@pantoken/svelte) (icon action + token reads).\n\n## Develop\n\n```sh\nnpm install\nnpm run dev\n```\n\n## What's here\n\n- `src/main.ts` calls `register()` (from `@pantoken/svelte`) once at bootstrap so elements like\n `<instui-icon>` work in templates, and imports the token/component CSS plus\n `@pantoken/plugin-layouts/layouts.css`.\n- `src/App.svelte`'s markup follows the `wrapper` app-shell layout from\n `@pantoken/plugin-layouts` (`.container` / `.header` / `.content` parts).\n- Apply classes like `class=\"instui-button\"` to markup; see the\n [component reference](https://pantoken.app/api/css) for the full class list.\n",
|
|
80
85
|
"index.html": "<!doctype html>\n<html lang=\"en\">\n <head>\n <meta charset=\"UTF-8\" />\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n <title>{{projectName}}</title>\n </head>\n <body>\n <div id=\"app\"></div>\n <script type=\"module\" src=\"/src/main.ts\"><\/script>\n </body>\n</html>\n",
|
|
81
|
-
"package.json": "{\n \"name\": \"{{projectName}}\",\n \"version\": \"0.0.0\",\n \"private\": true,\n \"type\": \"module\",\n \"scripts\": {\n \"dev\": \"vite\",\n \"build\": \"vite build\",\n \"preview\": \"vite preview\"\n },\n \"dependencies\": {\n \"@pantoken/css\": \"latest\",\n \"@pantoken/plugin-layouts\": \"latest\",\n \"@pantoken/svelte\": \"latest\"\n },\n \"devDependencies\": {\n \"@pantoken/pantoken\": \"latest\",\n \"@sveltejs/vite-plugin-svelte\": \"^7.3.0\",\n \"svelte\": \"^5.56.10\",\n \"typescript\": \"^7.0.2\",\n \"vite\": \"^8.2.2\"\n }\n}\n",
|
|
86
|
+
"package.json": "{\n \"name\": \"{{projectName}}\",\n \"version\": \"0.0.0\",\n \"private\": true,\n \"type\": \"module\",\n \"scripts\": {\n \"dev\": \"vite\",\n \"build\": \"vite build\",\n \"preview\": \"vite preview\"\n },\n \"dependencies\": {\n \"@pantoken/css\": \"latest\",\n \"@pantoken/plugin-layouts\": \"latest\",\n \"@pantoken/svelte\": \"latest\"\n },\n \"devDependencies\": {\n \"@pantoken/pantoken\": \"latest\",\n \"@sveltejs/vite-plugin-svelte\": \"^7.3.0\",\n \"svelte\": \"^5.56.10\",\n \"typescript\": \"^7.0.2\",\n \"vite\": \"^8.2.2\"\n },\n \"allowScripts\": {\n \"core-js\": true,\n \"ttf2woff2\": true\n },\n \"trustedDependencies\": [\n \"core-js\",\n \"ttf2woff2\"\n ]\n}\n",
|
|
87
|
+
"pnpm-workspace.yaml": "# core-js/ttf2woff2 arrive transitively via @pantoken/pantoken; pre-approve their install scripts\n# so `pnpm install` doesn't fail/warn under pnpm's default strictDepBuilds gate.\nallowBuilds:\n core-js: true\n ttf2woff2: true\n",
|
|
82
88
|
"tsconfig.json": "{\n \"compilerOptions\": {\n \"target\": \"ES2022\",\n \"lib\": [\"ES2022\", \"DOM\", \"DOM.Iterable\"],\n \"module\": \"ESNext\",\n \"moduleResolution\": \"Bundler\",\n \"strict\": true,\n \"skipLibCheck\": true\n },\n \"include\": [\"src\"]\n}\n",
|
|
83
89
|
"vite.config.ts": "import { defineConfig } from \"vite\";\nimport { svelte } from \"@sveltejs/vite-plugin-svelte\";\n\nexport default defineConfig({\n plugins: [svelte()],\n});\n",
|
|
84
90
|
".vscode/extensions.json": "{\n \"recommendations\": [\"cssdoc.cssdoc-vscode\", \"svelte.svelte-vscode\"]\n}\n",
|
|
@@ -91,7 +97,8 @@ const SCAFFOLDS = {
|
|
|
91
97
|
".gitignore": "node_modules\ndist\n",
|
|
92
98
|
"README.md": "# {{projectName}}\n\nScaffolded with `pantoken-scaffold vue` (or `pantoken-ai scaffold vue`) — a Vite + Vue 3 app styled\nwith [`@pantoken/components`](https://www.npmjs.com/package/@pantoken/components) and\n[`@pantoken/vue`](https://www.npmjs.com/package/@pantoken/vue) (the pantoken Vue plugin).\n\n## Develop\n\n```sh\nnpm install\nnpm run dev\n```\n\n## What's here\n\n- `src/main.ts` calls `app.use(PantokenVue)` (from `@pantoken/vue`) so elements like\n `<instui-icon>` work in templates, and imports the token/component CSS plus\n `@pantoken/plugin-layouts/layouts.css`.\n- `src/App.vue`'s template follows the `wrapper` app-shell layout from\n `@pantoken/plugin-layouts` (`.container` / `.header` / `.content` parts).\n- Apply classes like `class=\"instui-button\"` to markup; see the\n [component reference](https://pantoken.app/api/css) for the full class list.\n",
|
|
93
99
|
"index.html": "<!doctype html>\n<html lang=\"en\">\n <head>\n <meta charset=\"UTF-8\" />\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n <title>{{projectName}}</title>\n </head>\n <body>\n <div id=\"app\"></div>\n <script type=\"module\" src=\"/src/main.ts\"><\/script>\n </body>\n</html>\n",
|
|
94
|
-
"package.json": "{\n \"name\": \"{{projectName}}\",\n \"version\": \"0.0.0\",\n \"private\": true,\n \"type\": \"module\",\n \"scripts\": {\n \"dev\": \"vite\",\n \"build\": \"vite build\",\n \"preview\": \"vite preview\"\n },\n \"dependencies\": {\n \"@pantoken/css\": \"latest\",\n \"@pantoken/plugin-layouts\": \"latest\",\n \"@pantoken/vue\": \"latest\",\n \"vue\": \"^3.5.41\"\n },\n \"devDependencies\": {\n \"@pantoken/pantoken\": \"latest\",\n \"@vitejs/plugin-vue\": \"^6.0.8\",\n \"typescript\": \"^7.0.2\",\n \"vite\": \"^8.2.2\",\n \"vue-tsc\": \"^3.3.11\"\n }\n}\n",
|
|
100
|
+
"package.json": "{\n \"name\": \"{{projectName}}\",\n \"version\": \"0.0.0\",\n \"private\": true,\n \"type\": \"module\",\n \"scripts\": {\n \"dev\": \"vite\",\n \"build\": \"vite build\",\n \"preview\": \"vite preview\"\n },\n \"dependencies\": {\n \"@pantoken/css\": \"latest\",\n \"@pantoken/plugin-layouts\": \"latest\",\n \"@pantoken/vue\": \"latest\",\n \"vue\": \"^3.5.41\"\n },\n \"devDependencies\": {\n \"@pantoken/pantoken\": \"latest\",\n \"@vitejs/plugin-vue\": \"^6.0.8\",\n \"typescript\": \"^7.0.2\",\n \"vite\": \"^8.2.2\",\n \"vue-tsc\": \"^3.3.11\"\n },\n \"allowScripts\": {\n \"core-js\": true,\n \"ttf2woff2\": true\n },\n \"trustedDependencies\": [\n \"core-js\",\n \"ttf2woff2\"\n ]\n}\n",
|
|
101
|
+
"pnpm-workspace.yaml": "# core-js/ttf2woff2 arrive transitively via @pantoken/pantoken; pre-approve their install scripts\n# so `pnpm install` doesn't fail/warn under pnpm's default strictDepBuilds gate.\nallowBuilds:\n core-js: true\n ttf2woff2: true\n",
|
|
95
102
|
"tsconfig.json": "{\n \"compilerOptions\": {\n \"target\": \"ES2022\",\n \"lib\": [\"ES2022\", \"DOM\", \"DOM.Iterable\"],\n \"module\": \"ESNext\",\n \"moduleResolution\": \"Bundler\",\n \"strict\": true,\n \"skipLibCheck\": true\n },\n \"include\": [\"src\"]\n}\n",
|
|
96
103
|
"vite.config.ts": "import { defineConfig } from \"vite\";\nimport vue from \"@vitejs/plugin-vue\";\n\nexport default defineConfig({\n plugins: [vue()],\n});\n",
|
|
97
104
|
".vscode/extensions.json": "{\n \"recommendations\": [\"cssdoc.cssdoc-vscode\", \"Vue.volar\"]\n}\n",
|
|
@@ -104,7 +111,8 @@ const SCAFFOLDS = {
|
|
|
104
111
|
".gitignore": "node_modules\ndist\n",
|
|
105
112
|
"README.md": "# {{projectName}}\n\nScaffolded with `pantoken-scaffold web-components` (or `pantoken-ai scaffold web-components`) — a\nplain TypeScript app (via Vite) styled with\n[`@pantoken/components`](https://www.npmjs.com/package/@pantoken/components) and using framework-agnostic\ncustom elements from [`@pantoken/web-components`](https://www.npmjs.com/package/@pantoken/web-components).\n\n## Develop\n\n```sh\nnpm install\nnpm run dev\n```\n\n## What's here\n\n- `src/main.ts` imports `@pantoken/components/base.css` + `components.css` (`.instui-*` classes),\n `@pantoken/plugin-layouts/layouts.css`, and `@pantoken/web-components` (auto-registers elements\n like `<instui-icon>`), then renders markup into `#app`.\n- The markup follows the `wrapper` app-shell layout from `@pantoken/plugin-layouts` (`.container` /\n `.header` / `.content` parts) — see that package's README for what each part is for.\n- Use custom elements directly in markup, e.g. `<instui-button>`, `<instui-alert variant=\"success\">` —\n see the [`@pantoken/web-components` README](https://www.npmjs.com/package/@pantoken/web-components)\n for the full element list.\n",
|
|
106
113
|
"index.html": "<!doctype html>\n<html lang=\"en\">\n <head>\n <meta charset=\"UTF-8\" />\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n <title>{{projectName}}</title>\n </head>\n <body class=\"instui-display-flex\">\n <div id=\"app\"></div>\n <script type=\"module\" src=\"/src/main.ts\"><\/script>\n </body>\n</html>\n",
|
|
107
|
-
"package.json": "{\n \"name\": \"{{projectName}}\",\n \"version\": \"0.0.0\",\n \"private\": true,\n \"type\": \"module\",\n \"scripts\": {\n \"dev\": \"vite\",\n \"build\": \"vite build\",\n \"preview\": \"vite preview\"\n },\n \"dependencies\": {\n \"@pantoken/components\": \"latest\",\n \"@pantoken/plugin-layouts\": \"latest\",\n \"@pantoken/web-components\": \"latest\"\n },\n \"devDependencies\": {\n \"@pantoken/pantoken\": \"latest\",\n \"typescript\": \"^7.0.2\",\n \"vite\": \"^8.2.2\"\n }\n}\n",
|
|
114
|
+
"package.json": "{\n \"name\": \"{{projectName}}\",\n \"version\": \"0.0.0\",\n \"private\": true,\n \"type\": \"module\",\n \"scripts\": {\n \"dev\": \"vite\",\n \"build\": \"vite build\",\n \"preview\": \"vite preview\"\n },\n \"dependencies\": {\n \"@pantoken/components\": \"latest\",\n \"@pantoken/plugin-layouts\": \"latest\",\n \"@pantoken/web-components\": \"latest\"\n },\n \"devDependencies\": {\n \"@pantoken/pantoken\": \"latest\",\n \"typescript\": \"^7.0.2\",\n \"vite\": \"^8.2.2\"\n },\n \"allowScripts\": {\n \"core-js\": true,\n \"ttf2woff2\": true\n },\n \"trustedDependencies\": [\n \"core-js\",\n \"ttf2woff2\"\n ]\n}\n",
|
|
115
|
+
"pnpm-workspace.yaml": "# core-js/ttf2woff2 arrive transitively via @pantoken/pantoken; pre-approve their install scripts\n# so `pnpm install` doesn't fail/warn under pnpm's default strictDepBuilds gate.\nallowBuilds:\n core-js: true\n ttf2woff2: true\n",
|
|
108
116
|
"tsconfig.json": "{\n \"compilerOptions\": {\n \"target\": \"ES2022\",\n \"lib\": [\"ES2022\", \"DOM\", \"DOM.Iterable\"],\n \"module\": \"ESNext\",\n \"moduleResolution\": \"Bundler\",\n \"strict\": true,\n \"skipLibCheck\": true\n },\n \"include\": [\"src\"]\n}\n",
|
|
109
117
|
"vite.config.ts": "import { defineConfig } from \"vite\";\n\nexport default defineConfig({});\n",
|
|
110
118
|
".vscode/extensions.json": "{\n \"recommendations\": [\"cssdoc.cssdoc-vscode\"]\n}\n",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pantoken/scaffold",
|
|
3
|
-
"version": "1.0
|
|
3
|
+
"version": "1.1.0",
|
|
4
4
|
"description": "npx @pantoken/scaffold <platform> — scaffold a starter project (html, react, next, angular, web-components, ...) with pantoken already installed and wired in.",
|
|
5
5
|
"homepage": "https://pantoken.app",
|
|
6
6
|
"bugs": "https://github.com/thedannywahl/pantoken/issues",
|
|
@@ -31,19 +31,19 @@
|
|
|
31
31
|
"dependencies": {
|
|
32
32
|
"@bomb.sh/tab": "^0.0.22",
|
|
33
33
|
"@clack/prompts": "^1.8.0",
|
|
34
|
-
"@pantoken/angular": "0.1.
|
|
34
|
+
"@pantoken/angular": "0.1.29",
|
|
35
35
|
"@pantoken/canvas-theme-editor": "0.2.0",
|
|
36
|
-
"@pantoken/components": "1.1.
|
|
37
|
-
"@pantoken/react": "0.1.
|
|
36
|
+
"@pantoken/components": "1.1.1",
|
|
37
|
+
"@pantoken/react": "0.1.30",
|
|
38
38
|
"@pantoken/scaffold-base": "0.2.1",
|
|
39
|
-
"@pantoken/svelte": "0.1.
|
|
40
|
-
"@pantoken/vue": "0.1.
|
|
41
|
-
"@pantoken/web-components": "0.6.
|
|
39
|
+
"@pantoken/svelte": "0.1.30",
|
|
40
|
+
"@pantoken/vue": "0.1.30",
|
|
41
|
+
"@pantoken/web-components": "0.6.1",
|
|
42
42
|
"bingo-stratum": "^0.5.13",
|
|
43
43
|
"commander": "^15.0.0"
|
|
44
44
|
},
|
|
45
45
|
"devDependencies": {
|
|
46
|
-
"@pantoken/i18n-engine": "0.
|
|
46
|
+
"@pantoken/i18n-engine": "0.2.0",
|
|
47
47
|
"@pantoken/plugin-layouts": "0.3.0",
|
|
48
48
|
"@types/node": "^26.5.0",
|
|
49
49
|
"typescript": "^7.0.2",
|
|
@@ -56,9 +56,13 @@
|
|
|
56
56
|
"scripts": {
|
|
57
57
|
"scan": "node scripts/scan-presets.ts",
|
|
58
58
|
"generate": "node scripts/generate.ts",
|
|
59
|
-
"
|
|
60
|
-
"translate
|
|
61
|
-
"translate:
|
|
59
|
+
"extract": "i18n --config \"$(git rev-parse --show-toplevel)/i18n.config.json\" extract cli.scaffold",
|
|
60
|
+
"translate": "i18n --config \"$(git rev-parse --show-toplevel)/i18n.config.json\" translate cli.scaffold --provider claude",
|
|
61
|
+
"translate:agy": "i18n --config \"$(git rev-parse --show-toplevel)/i18n.config.json\" translate cli.scaffold --provider agy",
|
|
62
|
+
"translate:copilot": "i18n --config \"$(git rev-parse --show-toplevel)/i18n.config.json\" translate cli.scaffold --provider copilot",
|
|
63
|
+
"translate:force": "i18n --config \"$(git rev-parse --show-toplevel)/i18n.config.json\" translate cli.scaffold --provider claude --force",
|
|
64
|
+
"translate:force:agy": "i18n --config \"$(git rev-parse --show-toplevel)/i18n.config.json\" translate cli.scaffold --provider agy --force",
|
|
65
|
+
"translate:force:copilot": "i18n --config \"$(git rev-parse --show-toplevel)/i18n.config.json\" translate cli.scaffold --provider copilot --force",
|
|
62
66
|
"check:drift": "i18n --config \"$(git rev-parse --show-toplevel)/i18n.config.json\" check cli.scaffold",
|
|
63
67
|
"dev": "vp pack --watch",
|
|
64
68
|
"test": "vp run scan && vp run generate && vp test",
|