create-saasicat-admin 0.22.2 → 0.24.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-saasicat-admin",
3
- "version": "0.22.2",
3
+ "version": "0.24.0",
4
4
  "description": "Scaffolding CLI for SuperAdmin frontend projects (Vue 3 + Quasar + Vite). Generates a minimal working admin app built on @saasicat/ui-vue. Usage: `pnpm create saasicat-admin <dir>`.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -4,7 +4,7 @@ import 'quasar/src/css/index.sass';
4
4
  import '@quasar/extras/material-icons/material-icons.css';
5
5
  // Platform page styles (sa-* classes + CSS variables). Without it the
6
6
  // standard pages render unstyled.
7
- import '@saasicat/ui-vue/sa-theme.css';
7
+ import '@saasicat/ui-vue/theme.css';
8
8
 
9
9
  import { createSuperAdminApp } from '@saasicat/ui-vue/quasar';
10
10
  import App from './App.vue';
@@ -37,7 +37,7 @@ const handle = createSuperAdminApp({
37
37
  extensions: {},
38
38
  // Starting UI language — the shell's header switcher lets the user change
39
39
  // it from there and remembers the pick. `overrides` replaces individual
40
- // strings (handbook §8.6).
40
+ // strings (handbook §8.7).
41
41
  i18n: { locale: 'de' },
42
42
  });
43
43
 
@@ -1,8 +1,30 @@
1
1
  // Quasar theme variables — override your branding here.
2
- $primary: #1e40af;
2
+ //
3
+ // `$primary` is the ONE place your admin's brand colour is decided. SaaSiCat has
4
+ // no palette of its own for it: `--sa-color-accent` reads Quasar's `--q-primary`,
5
+ // which Quasar publishes from this variable. Change it and the hero, the buttons,
6
+ // the focus ring, the tinted surfaces, Quasar's own components and the
7
+ // tenant-facing pages all follow — there is no second switch.
8
+ //
9
+ // The four status colours are NOT read from here, and that is deliberate: each
10
+ // SaaSiCat status tone is a family of six contrast-tuned values (solid, strong,
11
+ // text, two tints, border), and a single Quasar variable cannot say which rung it
12
+ // is — `$warning` is a bright graphic amber, while warning TEXT has to be dark
13
+ // enough to read on it. They are set below to the values the platform's own roles
14
+ // use, so Quasar's components and the admin pages agree out of the box. To change
15
+ // them, override the `--sa-color-<tone>*` roles as a set.
16
+ //
17
+ // The defaults are SaaSiCat's own, so a freshly scaffolded admin looks like the
18
+ // documentation until you decide otherwise.
19
+ // One caveat if you pick a LIGHT brand: text on accent-filled controls is white
20
+ // by default, and CSS cannot work out that white on a light amber is 2.15:1. Set
21
+ // `--sa-color-fg-on-accent` to a dark colour in your own CSS if so — in both
22
+ // themes, like any role.
23
+ $primary: #3f6bff;
3
24
  $secondary: #475569;
4
25
  $accent: #0ea5e9;
5
26
 
6
- $positive: #16a34a;
27
+ $positive: #047857;
7
28
  $negative: #dc2626;
8
- $warning: #d97706;
29
+ $warning: #f59e0b;
30
+ $info: #2563eb;
@@ -13,6 +13,27 @@ export default defineConfig({
13
13
  sassVariables: fileURLToPath(new URL('./src/styles/theme.scss', import.meta.url)),
14
14
  }),
15
15
  ],
16
+ // Exactly one copy of each of these, always.
17
+ //
18
+ // `createSuperAdminApp()` CREATES the router, the Pinia instance and the
19
+ // Quasar plugin; this app's own pages then consume them through
20
+ // `useRoute()`, `useRouter()` and store hooks. Those APIs work by module
21
+ // identity — `provide`/`inject` with a key that is a module-level symbol —
22
+ // so two copies of the library do not share one, and the lookup silently
23
+ // returns `undefined`.
24
+ //
25
+ // The platform ships its pages as `.vue` SOURCE (decision E3), so their
26
+ // `import … from 'vue-router'` resolves relative to the platform package,
27
+ // while this app's own files resolve relative to here. Without dedupe the
28
+ // bundle ends up with both, and every consumer page that reads a route
29
+ // param throws `Cannot read properties of undefined (reading 'params')` —
30
+ // the shell renders, the content area is blank.
31
+ //
32
+ // The list is `@saasicat/ui-vue`'s peerDependencies: a peer is precisely a
33
+ // dependency the host is expected to own exactly one of.
34
+ resolve: {
35
+ dedupe: ['vue', 'vue-router', 'pinia', 'quasar'],
36
+ },
16
37
  server: {
17
38
  port: __DEV_PORT__,
18
39
  proxy: {