@saasicat/ui-vue 1.0.0-rc.2 → 1.0.0-rc.20
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 +84 -19
- package/dist/.build-stamp +1 -1
- package/dist/assets/material-icons/material-icons.css +31 -0
- package/dist/assets/material-icons/web-font/flUhRq6tzZclQEJ-Vdg-IuiaDsNa.woff +0 -0
- package/dist/assets/material-icons/web-font/flUhRq6tzZclQEJ-Vdg-IuiaDsNcIhQ8tQ.woff2 +0 -0
- package/dist/assets/quasar.css +11696 -0
- package/dist/assets/ui-vue.css +6923 -0
- package/dist/auth/SuperAdminLoginPage.js +213 -0
- package/dist/auth/SuperAdminSetupWizard.js +5 -0
- package/dist/{batch-column-fetcher-Dk9X92db.d.cts → batch-column-fetcher-CFnqFxQU.d.ts} +5 -5
- package/dist/{batch-column-fetcher-VwjOxerL.d.ts → batch-column-fetcher-DmoujOET.d.cts} +5 -5
- package/dist/{catalog-C5VKGbxk.d.cts → catalog-DUdy_YZB.d.cts} +124 -86
- package/dist/{catalog-C5VKGbxk.d.ts → catalog-DUdy_YZB.d.ts} +124 -86
- package/dist/{chunk-4CJBABLZ.js → chunk-3GE35VVZ.js} +634 -196
- package/dist/{chunk-6X6AGH66.js → chunk-MPVQBEM6.js} +7 -4
- package/dist/{chunk-P4EJF43F.js → chunk-OH6IXCK7.js} +346 -297
- package/dist/{chunk-A7JICGQ5.js → chunk-S3I4ZLOQ.js} +16 -3
- package/dist/chunk-U7LNAX6T.js +35 -0
- package/dist/{chunk-L7HPDVHV.js → chunk-V4GZU757.js} +86 -7
- package/dist/chunks/AdminAccordion.vue_vue_type_script_setup_true_lang-DOwlTV5_.js +175 -0
- package/dist/chunks/AdminBanner.vue_vue_type_script_setup_true_lang-D27JEaak.js +83 -0
- package/dist/chunks/AdminBody.vue_vue_type_script_setup_true_lang-DxcVRzXE.js +41 -0
- package/dist/chunks/AdminDialog.vue_vue_type_script_setup_true_lang-CpxfSrx-.js +138 -0
- package/dist/chunks/AdminEmptyState.vue_vue_type_script_setup_true_lang-jaYkgNbE.js +48 -0
- package/dist/chunks/AdminErrorBanner.vue_vue_type_script_setup_true_lang-t-5uqt82.js +50 -0
- package/dist/chunks/AdminField.vue_vue_type_script_setup_true_lang-CtPByt2w.js +63 -0
- package/dist/chunks/AdminFieldGrid.vue_vue_type_script_setup_true_lang-BxuyHtBU.js +21 -0
- package/dist/chunks/AdminFilters.vue_vue_type_script_setup_true_lang-DSnzAlwj.js +18 -0
- package/dist/chunks/AdminFormDialog.vue_vue_type_script_setup_true_lang-BpWshaWv.js +84 -0
- package/dist/chunks/AdminHero.vue_vue_type_script_setup_true_lang-CoaRxXLF.js +46 -0
- package/dist/chunks/AdminKpi.vue_vue_type_script_setup_true_lang-CgCcGGmY.js +79 -0
- package/dist/chunks/AdminPage.vue_vue_type_script_setup_true_lang-L7St_zOY.js +15 -0
- package/dist/chunks/AdminPaginator.vue_vue_type_script_setup_true_lang-Cv8EEBGP.js +157 -0
- package/dist/chunks/AdminRefreshBtn.vue_vue_type_script_setup_true_lang-Bxk5GWOB.js +41 -0
- package/dist/chunks/AdminSection.vue_vue_type_script_setup_true_lang-DpjApOU-.js +62 -0
- package/dist/chunks/AdminStatistics.vue_vue_type_script_setup_true_lang-DwHeeYCX.js +32 -0
- package/dist/chunks/AdminStatusPill.vue_vue_type_script_setup_true_lang-09G3rCxN.js +32 -0
- package/dist/chunks/AdminTable.vue_vue_type_script_setup_true_lang-BzAusc-r.js +2007 -0
- package/dist/chunks/ClosePopup-iyFHWknU.js +48 -0
- package/dist/chunks/PromoCodeEditDialog.vue_vue_type_script_setup_true_lang-NiW-Ky7H.js +639 -0
- package/dist/chunks/QBadge-B8LYhEVv.js +43 -0
- package/dist/chunks/QBtn-CSVcAwrE.js +770 -0
- package/dist/chunks/QCard-g0Hwqx6i.js +30 -0
- package/dist/chunks/QCardSection-FvPMZdQ4.js +22 -0
- package/dist/chunks/QCheckbox-BwxH7EyE.js +63 -0
- package/dist/chunks/QDialog-CcwVEueo.js +331 -0
- package/dist/chunks/QIcon-DaxYRLz0.js +195 -0
- package/dist/chunks/QInput-SRRCebo8.js +1663 -0
- package/dist/chunks/QItem-DunhGoPO.js +127 -0
- package/dist/chunks/QList-D3jMUITp.js +37 -0
- package/dist/chunks/QMenu-BFP-qtEm.js +831 -0
- package/dist/chunks/QSelect-jOvICNCy.js +1885 -0
- package/dist/chunks/QSeparator-CrLemO5z.js +60 -0
- package/dist/chunks/QSpinner-DblEBRSQ.js +57 -0
- package/dist/chunks/QToggle-BBogOutP.js +40 -0
- package/dist/chunks/QTooltip-Ch_r2hMZ.js +320 -0
- package/dist/chunks/SuperAdminSetupWizard-UO4j4Eyu.js +465 -0
- package/dist/chunks/TenantActionConfirmDialog-DU11RlmB.js +201 -0
- package/dist/chunks/_plugin-vue_export-helper-1tPrXgE0.js +10 -0
- package/dist/chunks/catalog-i18n-tKlkm6-2.js +32 -0
- package/dist/chunks/create-Ck-e8kVF.js +42 -0
- package/dist/chunks/detached-fullscreen-DuM-R9uv.js +488 -0
- package/dist/chunks/focus-manager-Cc4uTjsQ.js +301 -0
- package/dist/chunks/format-BIQKj_qk.js +23 -0
- package/dist/chunks/is-DNOHJAOK.js +269 -0
- package/dist/chunks/plan-area-context-RiY4rHni.js +20 -0
- package/dist/chunks/private.use-form-BdJSI6of.js +30 -0
- package/dist/chunks/render-DSsuXum_.js +32 -0
- package/dist/chunks/symbols-Cy0ehVpr.js +67 -0
- package/dist/chunks/touch-B8tpYG34.js +162 -0
- package/dist/chunks/use-checkbox-CBtmpkdc.js +221 -0
- package/dist/chunks/use-dark-VmDF1SYZ.js +14 -0
- package/dist/chunks/use-hydration-PO-eh3w4.js +14 -0
- package/dist/chunks/use-prevent-scroll-B9A_pIzH.js +156 -0
- package/dist/chunks/use-render-cache-Bj5SbY5v.js +22 -0
- package/dist/chunks/use-size-C7KmPm4L.js +23 -0
- package/dist/chunks/vm-Dl-TBfKC.js +182 -0
- package/dist/client/index.cjs +472 -300
- package/dist/client/index.d.cts +106 -7
- package/dist/client/index.d.ts +106 -7
- package/dist/client/index.js +23 -3
- package/dist/index.cjs +1159 -530
- package/dist/index.d.cts +5 -5
- package/dist/index.d.ts +5 -5
- package/dist/index.js +49 -7
- package/dist/layouts/AdminLayout.js +1711 -0
- package/dist/pages/AdminManifestErrorPage.js +99 -0
- package/dist/pages/AuditPage.js +244 -0
- package/dist/pages/BundlesPage.js +2883 -0
- package/dist/pages/DashboardPage.js +299 -0
- package/dist/pages/DiscoveryPage.js +2563 -0
- package/dist/pages/EmailHistoryPage.js +509 -0
- package/dist/pages/MarketingCatalogPage.js +2093 -0
- package/dist/pages/PilotsPage.js +1197 -0
- package/dist/pages/PlanReviewPage.js +563 -0
- package/dist/pages/PlanVersionEditorPage.js +1626 -0
- package/dist/pages/PlansPage.js +6164 -0
- package/dist/pages/PlatformEmailPage.js +455 -0
- package/dist/pages/PromoCodeDetailPage.js +240 -0
- package/dist/pages/PromoCodesPage.js +557 -0
- package/dist/pages/SettingsPage.js +216 -0
- package/dist/pages/SubscriptionsPage.js +113 -0
- package/dist/pages/TenantDetailPage.js +393 -0
- package/dist/pages/TenantsPage.js +430 -0
- package/dist/pages/UsersPage.js +386 -0
- package/dist/pages/index.js +75 -0
- package/dist/quasar/index.cjs +386 -297
- package/dist/quasar/index.d.cts +13 -3
- package/dist/quasar/index.d.ts +13 -3
- package/dist/quasar/index.js +10 -6
- package/dist/{resource-registry-Cw_c0F11.d.ts → resource-registry-CYmBGVPK.d.cts} +32 -18
- package/dist/{resource-registry-CrHUvVx6.d.cts → resource-registry-bG2PxbM0.d.ts} +32 -18
- package/dist/testing/admin-pages-suite.cjs +4 -1
- package/dist/testing/admin-pages-suite.d.cts +10 -1
- package/dist/testing/admin-pages-suite.d.ts +10 -1
- package/dist/testing/admin-pages-suite.js +3 -1
- package/dist/testing/mount-with-quasar.cjs +65 -0
- package/dist/testing/mount-with-quasar.d.cts +7 -0
- package/dist/testing/mount-with-quasar.d.ts +7 -0
- package/dist/testing/mount-with-quasar.js +63 -0
- package/dist/ui/data/AdminKpi.js +4 -0
- package/dist/ui/data/AdminPaginator.js +4 -0
- package/dist/ui/data/AdminRowActions.js +37 -0
- package/dist/ui/data/AdminStatistics.js +4 -0
- package/dist/ui/data/AdminStatusPill.js +4 -0
- package/dist/ui/data/AdminTable.js +4 -0
- package/dist/ui/data/KvBlock.js +24 -0
- package/dist/ui/entitlement/FeatureGate.js +25 -0
- package/dist/ui/feedback/AdminBanner.js +4 -0
- package/dist/ui/feedback/AdminEmptyState.js +4 -0
- package/dist/ui/feedback/AdminErrorBanner.js +4 -0
- package/dist/ui/feedback/AdminRefreshBtn.js +4 -0
- package/dist/ui/overlay/AdminConfirmDialog.js +112 -0
- package/dist/ui/overlay/AdminDialog.js +4 -0
- package/dist/ui/overlay/AdminFormDialog.js +4 -0
- package/dist/ui/overlay/MfaPromptDialog.js +131 -0
- package/dist/ui/page/AdminAccordion.js +4 -0
- package/dist/ui/page/AdminBody.js +4 -0
- package/dist/ui/page/AdminField.js +4 -0
- package/dist/ui/page/AdminFieldGrid.js +4 -0
- package/dist/ui/page/AdminFilters.js +4 -0
- package/dist/ui/page/AdminHero.js +4 -0
- package/dist/ui/page/AdminPage.js +4 -0
- package/dist/ui/page/AdminSection.js +4 -0
- package/dist/ui/page/AdminToolbar.js +35 -0
- package/dist/ui/page/LocaleSwitcher.js +90 -0
- package/dist/ui/page/ThemeSwitcher.js +95 -0
- package/dist/ui/page/WizardStepper.js +55 -0
- package/dist/vue/index.cjs +1076 -524
- package/dist/vue/index.d.cts +479 -44
- package/dist/vue/index.d.ts +479 -44
- package/dist/vue/index.js +28 -6
- package/package.json +30 -15
- package/src/auth/SuperAdminLoginPage.vue +16 -16
- package/src/auth/SuperAdminSetupWizard.vue +33 -28
- package/src/client/admin-resource-client.ts +23 -8
- package/src/client/brand-bridge.ts +98 -0
- package/src/client/http/axios-http-client.ts +4 -3
- package/src/client/i18n/messages/audit.ts +1 -0
- package/src/client/i18n/messages/bundles.ts +17 -4
- package/src/client/i18n/messages/common.ts +1 -0
- package/src/client/i18n/messages/dashboard.ts +1 -0
- package/src/client/i18n/messages/discovery.ts +10 -19
- package/src/client/i18n/messages/email.ts +1 -0
- package/src/client/i18n/messages/errors.ts +1 -0
- package/src/client/i18n/messages/marketing.ts +7 -2
- package/src/client/i18n/messages/nav.ts +3 -0
- package/src/client/i18n/messages/pilots.ts +1 -0
- package/src/client/i18n/messages/plan-detail.ts +1 -0
- package/src/client/i18n/messages/plan-editor.ts +1 -0
- package/src/client/i18n/messages/plan-versions.ts +3 -4
- package/src/client/i18n/messages/plans.ts +9 -4
- package/src/client/i18n/messages/promos.ts +1 -0
- package/src/client/i18n/messages/settings.ts +75 -0
- package/src/client/i18n/messages/shell.ts +1 -0
- package/src/client/i18n/messages/tenants.ts +1 -0
- package/src/client/i18n/messages/users.ts +1 -0
- package/src/client/i18n/messages.ts +3 -0
- package/src/client/index.ts +10 -0
- package/src/client/mfa-header.ts +14 -0
- package/src/client/nav-builder.ts +7 -4
- package/src/client/reorder-priorities.ts +76 -0
- package/src/client/resources/bundles.resource.ts +24 -38
- package/src/client/resources/catalog.resource.ts +91 -113
- package/src/client/resources/define-resource.ts +2 -75
- package/src/client/resources/index.ts +3 -0
- package/src/client/resources/marketing.resource.ts +77 -80
- package/src/client/resources/pilots.resource.ts +1 -11
- package/src/client/resources/plans.resource.ts +47 -64
- package/src/client/resources/platform-email.resource.ts +1 -11
- package/src/client/resources/promotions.resource.ts +18 -25
- package/src/client/resources/settings.resource.ts +68 -0
- package/src/client/resources/tenants.resource.ts +10 -4
- package/src/client/resources/users.resource.ts +3 -2
- package/src/client/settings-view.ts +50 -0
- package/src/client/version-change-fields.ts +17 -0
- package/src/features/bundle/BundleVersionInlineEditor.vue +112 -155
- package/src/features/bundle/BundleVersionPublishDialog.vue +34 -16
- package/src/features/bundle/BundleVersionStrip.vue +25 -31
- package/src/features/bundle/VersionDiffPreview.vue +21 -15
- package/src/features/bundle/internal/BundleCreatePanel.vue +65 -119
- package/src/features/bundle/internal/BundleFeaturesEditor.vue +18 -31
- package/src/features/bundle/internal/BundlePlanCompatPicker.vue +23 -29
- package/src/features/bundle/internal/BundleQuotasEditor.vue +20 -41
- package/src/features/bundle/internal/BundleStatusBanner.vue +16 -70
- package/src/features/marketing/MarketingPromotionsTab.vue +155 -122
- package/src/features/plan/PlanCreateDialog.vue +49 -129
- package/src/features/plan/PlanDetail.vue +57 -76
- package/src/features/plan/PlanList.vue +81 -156
- package/src/features/plan/PlanMatrix.vue +89 -158
- package/src/features/plan/PlanReview.vue +62 -80
- package/src/features/plan/PlanVersionEditor.vue +134 -238
- package/src/features/plan/internal/PlanCatalogPreview.vue +22 -68
- package/src/features/plan/internal/PlanComponentPool.vue +18 -88
- package/src/features/plan/internal/PlanTitleEdit.vue +12 -9
- package/src/features/plan/internal/PlanVersionBasket.vue +65 -89
- package/src/features/plan/internal/PlanVersionEditorHeader.vue +16 -20
- package/src/features/plan/internal/PlanVersionsPanel.vue +29 -75
- package/src/features/tenant/TenantActionConfirmDialog.vue +4 -4
- package/src/index.ts +8 -0
- package/src/internal/bundles-page/BundleAccordionList.vue +32 -2
- package/src/internal/bundles-page/BundleDetailPanel.vue +37 -21
- package/src/internal/bundles-page/BundlesToolbar.vue +9 -5
- package/src/internal/dialogs/PilotCreateDialog.vue +65 -104
- package/src/internal/dialogs/PilotEditDialog.vue +22 -23
- package/src/internal/dialogs/PromoCodeCreateDialog.vue +27 -23
- package/src/internal/dialogs/PromoCodeDialogFields.vue +203 -252
- package/src/internal/dialogs/PromoCodeEditDialog.vue +52 -48
- package/src/internal/dialogs/pilot-dialog.css +16 -111
- package/src/internal/discovery-page/CatalogEntryTransPanel.vue +18 -18
- package/src/internal/discovery-page/DiscoveryCapList.vue +20 -20
- package/src/internal/discovery-page/DiscoveryFeatureCard.vue +20 -20
- package/src/internal/discovery-page/DiscoveryQuotaCard.vue +10 -10
- package/src/internal/discovery-page/DiscoveryStatusControl.vue +1 -1
- package/src/internal/marketing-catalog-page/MarketingCatalogAdmin.vue +660 -0
- package/src/internal/{marketing-catalog → marketing-catalog-page}/MarketingCatalogHeader.vue +21 -16
- package/src/internal/{marketing-catalog → marketing-catalog-page}/MarketingCatalogPreview.vue +26 -13
- package/src/internal/{marketing-catalog → marketing-catalog-page}/MarketingCatalogToolbar.vue +14 -10
- package/src/internal/plan-versions/PlanDiffCard.vue +15 -15
- package/src/internal/plan-versions/PlanVersionsDiff.vue +11 -11
- package/src/internal/plan-versions/PlanVersionsTimeline.vue +35 -31
- package/src/internal/plans-page/PlanBundleOverview.vue +8 -8
- package/src/internal/plans-page/PlanPublishDialog.vue +2 -2
- package/src/internal/tenant-detail/TenantUsage.vue +3 -3
- package/src/internal/tenant-detail/types.ts +2 -2
- package/src/layouts/AdminLayout.vue +22 -22
- package/src/pages/AdminManifestErrorPage.vue +7 -7
- package/src/pages/AuditPage.vue +2 -2
- package/src/pages/BundlesPage.vue +81 -89
- package/src/pages/DashboardPage.vue +106 -97
- package/src/pages/DiscoveryPage.vue +22 -28
- package/src/pages/EmailHistoryPage.vue +26 -34
- package/src/pages/MarketingCatalogPage.vue +280 -274
- package/src/pages/PilotsPage.vue +22 -35
- package/src/pages/PlanVersionEditorPage.vue +1 -1
- package/src/pages/PlansPage.vue +181 -107
- package/src/pages/PlatformEmailPage.vue +33 -41
- package/src/pages/PromoCodeDetailPage.vue +12 -18
- package/src/pages/PromoCodesPage.vue +14 -13
- package/src/pages/SettingsPage.vue +226 -0
- package/src/pages/TenantDetailPage.vue +28 -53
- package/src/pages/TenantsPage.vue +7 -7
- package/src/pages/UsersPage.vue +7 -20
- package/src/pages/index.ts +3 -1
- package/src/quasar/create-super-admin-app.ts +13 -2
- package/src/quasar/dark-bridge.ts +8 -4
- package/src/quasar/index.ts +11 -0
- package/src/testing/admin-pages-suite.ts +11 -1
- package/src/testing/mount-with-quasar.ts +73 -0
- package/src/ui/data/AdminPaginator.vue +30 -20
- package/src/ui/data/KvBlock.vue +4 -4
- package/src/ui/entitlement/FeatureGate.vue +2 -2
- package/src/ui/feedback/AdminRefreshBtn.vue +10 -7
- package/src/ui/overlay/MfaPromptDialog.vue +5 -6
- package/src/ui/page/AdminAccordion.vue +27 -10
- package/src/ui/page/WizardStepper.vue +7 -18
- package/src/ui/theme/base.css +31 -0
- package/src/ui/theme/components/accordion.css +9 -9
- package/src/ui/theme/components/button.css +10 -68
- package/src/ui/theme/components/card.css +0 -8
- package/src/ui/theme/components/paginator.css +14 -28
- package/src/ui/theme/tokens.semantic.dark.css +13 -0
- package/src/ui/theme/tokens.semantic.light.css +39 -0
- package/src/vue/index.ts +8 -0
- package/src/vue/platform-loaders.ts +1 -3
- package/src/vue/resource-registry.ts +0 -8
- package/src/vue/super-admin-context.ts +14 -15
- package/src/vue/use-applied-settings.ts +79 -0
- package/src/vue/use-bulk-publish.ts +2 -5
- package/src/vue/use-bundles.ts +6 -10
- package/src/vue/use-catalog-entries.ts +9 -16
- package/src/vue/use-dialog.ts +221 -0
- package/src/vue/use-marketing-projections.ts +5 -6
- package/src/vue/use-mfa-prompt.ts +61 -11
- package/src/vue/use-plans.ts +28 -21
- package/src/vue/use-promotions.ts +1 -7
- package/src/vue/use-row-reorder.ts +109 -0
- package/src/vue/use-sa-theme.ts +31 -0
- package/src/vue/use-steps.ts +109 -0
- package/src/vue/use-subscription-draft.ts +63 -60
- package/src/vue/use-tenant-billing.ts +250 -33
- package/src/vue/use-tenant-payment-method.ts +116 -0
- package/src/vue/use-tenant-subscription-bundles.ts +8 -0
- package/src/internal/marketing-catalog/MarketingCatalogAdmin.vue +0 -553
- package/src/internal/plans-page/PlansPageToast.vue +0 -69
- /package/src/internal/{marketing-catalog → marketing-catalog-page}/types.ts +0 -0
package/README.md
CHANGED
|
@@ -1,26 +1,78 @@
|
|
|
1
1
|
# @saasicat/ui-vue
|
|
2
2
|
|
|
3
|
+
## What this is
|
|
4
|
+
|
|
3
5
|
Vue 3 components + composables for the SuperAdmin UI shell. Provides the
|
|
4
6
|
boot loader, manifest loader (ETag cache), nav builder, action registry,
|
|
5
7
|
standard pages (Dashboard, Tenants, Plans, Discovery, …) and the tenant
|
|
6
8
|
self-service building blocks (`FeatureGate`, `useTenantManifest`,
|
|
7
9
|
`PlanChangeWizard`).
|
|
8
10
|
|
|
9
|
-
Peer dependencies: `vue` (required); `vue-router
|
|
10
|
-
|
|
11
|
+
Peer dependencies: `vue` (required); `vue-router` and `pinia` (optional — see
|
|
12
|
+
the layers below for what actually needs them). **Not `quasar`**: the components
|
|
13
|
+
are built and carry it as a dependency of this package, so you install
|
|
14
|
+
`@saasicat/ui-vue` and nothing else — no `@quasar/vite-plugin`, no Sass
|
|
15
|
+
([ADR 0011](../../docs/explanation/adr/0011-admin-ui-bundles-quasar.md)).
|
|
11
16
|
|
|
12
|
-
|
|
17
|
+
Three stylesheet imports, once, in your entry:
|
|
13
18
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
19
|
+
```ts
|
|
20
|
+
import '@saasicat/ui-vue/quasar.css'; // the framework's own reset
|
|
21
|
+
import '@saasicat/ui-vue/icons.css'; // the icon font the components render
|
|
22
|
+
import '@saasicat/ui-vue/theme.css'; // the design tokens
|
|
23
|
+
import '@saasicat/ui-vue/style.css'; // the components' own styles
|
|
24
|
+
```
|
|
17
25
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
26
|
+
Quasar's stylesheet restyles `html`, `body` and typography — 76 computed
|
|
27
|
+
properties across every element of a page that styles itself. That is why it is
|
|
28
|
+
an import you write rather than one the package hides inside its bundle.
|
|
29
|
+
|
|
30
|
+
## What this is not
|
|
31
|
+
|
|
32
|
+
Not a component library to pick from. It is the SuperAdmin application's
|
|
33
|
+
inside: complete pages, the shell around them, the theme they read and the
|
|
34
|
+
data layer beneath them. Taking one primitive out of context is possible and
|
|
35
|
+
rarely what you want.
|
|
36
|
+
|
|
37
|
+
Not a design system for your product, either. The `Admin*` roster exists for
|
|
38
|
+
admin surfaces; everything else is Quasar, styled through the theme.
|
|
39
|
+
|
|
40
|
+
Compiled, since 1.0: your bundler loads `dist/`. Your **type**checker still
|
|
41
|
+
reads the `.vue` sources through the `types` condition, which is why that source
|
|
42
|
+
stays within ES2021 and why the floor below still applies.
|
|
43
|
+
|
|
44
|
+
## Entry points
|
|
45
|
+
|
|
46
|
+
The package is layered so that each entry only loads what it names. Lower
|
|
47
|
+
layers never import upward, and ESLint enforces it — the reasoning is in
|
|
48
|
+
[ADR 0004](../../docs/explanation/adr/0004-ui-vue-layer-boundaries.md).
|
|
49
|
+
|
|
50
|
+
| Entry | Source | May import | When you take it |
|
|
51
|
+
| --------------------- | --------------- | ----------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
52
|
+
| `./client` | `src/client/` | `@saasicat/core` only | Framework-free: loaders, nav builder, action registry, the resource descriptors, `HttpClient`/`KvStore` with their `fetch` and axios adapters, `AdminError`. Usable from plain Node. |
|
|
53
|
+
| `.` | `src/vue/` | Vue, `vue-router`, Pinia | Composables, router guards, injection keys, `createAdminRoutes`, the store factory. No Quasar. |
|
|
54
|
+
| `./quasar` | `src/quasar/` | everything above, plus Quasar | `createSuperAdminApp()` and the Quasar implementations of the notify and confirm ports. |
|
|
55
|
+
| `./pages` | `src/pages/` | everything | `standardAdminChildren()` — the platform's own screens as route children. |
|
|
56
|
+
| `./pages/*.vue` | `src/pages/` | everything | One standard page, when you mount it yourself. |
|
|
57
|
+
| `./layouts/*.vue` | `src/layouts/` | everything | `AdminLayout` — the shell around the pages. |
|
|
58
|
+
| `./auth/*.vue` | `src/auth/` | everything | The login screen and the first-run setup wizard. |
|
|
59
|
+
| `./ui/*.vue` | `src/ui/` | everything | The `Admin*` primitives, when you build a page of your own. |
|
|
60
|
+
| `./theme.css` | `src/ui/theme/` | — | The design tokens. Import it once; without it the pages render unstyled. |
|
|
61
|
+
| `./style.css` | built | — | The components' own styles, extracted into one file. Import it once, beside the theme. |
|
|
62
|
+
| `./quasar.css` | built | — | Quasar's stylesheet, shipped so you do not install Quasar to get it. It restyles `html`, `body` and typography — which is why it stays an import you write rather than one we hide. |
|
|
63
|
+
| `./icons.css` | built | — | The Material icon font the components render through `q-icon`. Without it every icon renders as its ligature name. |
|
|
64
|
+
| `./theme/*` | `src/ui/theme/` | — | The individual token layers, for a consumer that overrides roles. |
|
|
65
|
+
| `./theme/breakpoints` | `src/ui/theme/` | — | The five breakpoint values, for a build that needs them in JavaScript. |
|
|
66
|
+
| `./vue` | `src/vue/` | Vue, `vue-router`, Pinia | The Vue layer alone, without the client re-exports. |
|
|
67
|
+
| `./testing/*` | `src/testing/` | everything | Fixtures for component and end-to-end tests against the pages. |
|
|
68
|
+
|
|
69
|
+
The four component subpaths keep their `.vue` specifier and resolve two ways:
|
|
70
|
+
your **type**checker reads the source, your **bundler** loads the build. That
|
|
71
|
+
split is what removed Quasar from your `package.json` without changing a single
|
|
72
|
+
import of yours —
|
|
73
|
+
[ADR 0011](../../docs/explanation/adr/0011-admin-ui-bundles-quasar.md). The
|
|
74
|
+
source is still yours to compile for types, so the floor below still holds
|
|
75
|
+
([ADR 0005](../../docs/explanation/adr/0005-ship-sfc-source-not-dist.md)).
|
|
24
76
|
|
|
25
77
|
### The shipped source has a language floor
|
|
26
78
|
|
|
@@ -34,7 +86,8 @@ minimum compiler. The language level is checked rather than promised:
|
|
|
34
86
|
`pnpm --filter @saasicat/ui-vue test:shipped-source` compiles the closure
|
|
35
87
|
reachable from every source-shipping subpath at that level, with
|
|
36
88
|
`isolatedModules`, `useDefineForClassFields` and `strictPropertyInitialization`
|
|
37
|
-
set the way a Vite app sets them, and CI runs it. The directories come from the export map, so a new
|
|
89
|
+
set the way a Vite app sets them, and CI runs it. The directories come from the export map, so a new
|
|
90
|
+
source subpath
|
|
38
91
|
is covered the day it is added. The compiler version is not checked — `satisfies`
|
|
39
92
|
in the shipped source needs 4.9 or newer whatever `lib` says, and testing that
|
|
40
93
|
would mean installing old compilers.
|
|
@@ -121,11 +174,13 @@ mount('#app');
|
|
|
121
174
|
The fastest way to a running admin app is the scaffolder:
|
|
122
175
|
|
|
123
176
|
```bash
|
|
124
|
-
pnpm create saasicat-admin admin --
|
|
177
|
+
pnpm create saasicat-admin admin --app-key=myapp
|
|
125
178
|
```
|
|
126
179
|
|
|
127
|
-
See the [quickstart](https://github.com/uelker70/saasicat/blob/main/docs/quickstart.md) (step 9) for
|
|
128
|
-
|
|
180
|
+
See the [quickstart](https://github.com/uelker70/saasicat/blob/main/docs/quickstart.md) (step 9) for
|
|
181
|
+
the full setup
|
|
182
|
+
and the [architecture](https://github.com/uelker70/saasicat/blob/main/docs/explanation/architecture.md)
|
|
183
|
+
for how the pieces fit.
|
|
129
184
|
|
|
130
185
|
## Language
|
|
131
186
|
|
|
@@ -145,7 +200,7 @@ own call: `i18n.locales` narrows the set, `i18n.additionalLocales` adds
|
|
|
145
200
|
languages the platform does not ship, `i18n.overrides` replaces individual
|
|
146
201
|
strings, and `i18n.switcher: false` drops the control entirely. Components read
|
|
147
202
|
the catalog via `useSaMessages('<namespace>')` / `useSuperAdminI18n()`.
|
|
148
|
-
See [
|
|
203
|
+
See [UI language](https://github.com/uelker70/saasicat/blob/main/docs/guides/build-the-admin-frontend.md#ui-language-i18n).
|
|
149
204
|
|
|
150
205
|
## Build
|
|
151
206
|
|
|
@@ -153,5 +208,15 @@ See [handbook §8.7](https://github.com/uelker70/saasicat/blob/main/docs/handboo
|
|
|
153
208
|
pnpm --filter @saasicat/ui-vue build
|
|
154
209
|
```
|
|
155
210
|
|
|
156
|
-
|
|
157
|
-
|
|
211
|
+
Two builders. tsup (`tsup.config.ts`) produces
|
|
212
|
+
`dist/{index,client/index,vue/index,quasar/index}.{js,cjs,d.ts}`; Vite
|
|
213
|
+
(`vite.build.config.ts`) compiles the components, one entry each, and copies
|
|
214
|
+
Quasar's stylesheet and the icon font beside them. `vue`, `vue-router` and
|
|
215
|
+
`pinia` stay external in both; `quasar` is external too and travels as a
|
|
216
|
+
dependency of this package.
|
|
217
|
+
|
|
218
|
+
## Next
|
|
219
|
+
|
|
220
|
+
- [Build the admin frontend](../../docs/guides/build-the-admin-frontend.md) — wiring it into an app
|
|
221
|
+
- [Design guide](../../docs/explanation/design-guide.md) — the page recipe and the colour roles
|
|
222
|
+
- [Pages take resources, not callbacks](../../docs/explanation/adr/0008-resource-ports-over-props.md)
|
package/dist/.build-stamp
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
e8f376ec180b1cf9e82413687a0ad2d83b23d267dbc7682b960e94e42fb0beaf
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
@font-face {
|
|
2
|
+
font-family: 'Material Icons';
|
|
3
|
+
font-style: normal;
|
|
4
|
+
font-weight: 400;
|
|
5
|
+
font-display: block;
|
|
6
|
+
src: url('./web-font/flUhRq6tzZclQEJ-Vdg-IuiaDsNcIhQ8tQ.woff2') format('woff2'), url('./web-font/flUhRq6tzZclQEJ-Vdg-IuiaDsNa.woff') format('woff');
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
.material-icons {
|
|
10
|
+
font-family: 'Material Icons';
|
|
11
|
+
font-weight: normal;
|
|
12
|
+
font-style: normal;
|
|
13
|
+
display: inline-block;
|
|
14
|
+
line-height: 1;
|
|
15
|
+
text-transform: none;
|
|
16
|
+
letter-spacing: normal;
|
|
17
|
+
word-wrap: normal;
|
|
18
|
+
white-space: nowrap;
|
|
19
|
+
direction: ltr;
|
|
20
|
+
|
|
21
|
+
/* Support for all WebKit browsers. */
|
|
22
|
+
-webkit-font-smoothing: antialiased;
|
|
23
|
+
/* Support for Safari and Chrome. */
|
|
24
|
+
text-rendering: optimizeLegibility;
|
|
25
|
+
|
|
26
|
+
/* Support for Firefox. */
|
|
27
|
+
-moz-osx-font-smoothing: grayscale;
|
|
28
|
+
|
|
29
|
+
/* Support for IE. */
|
|
30
|
+
font-feature-settings: 'liga';
|
|
31
|
+
}
|