@mohasinac/appkit 3.6.4 → 3.7.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/dist/_internal/client/features/layout/DashboardLayoutClient.d.ts +17 -3
- package/dist/_internal/client/features/layout/DashboardLayoutClient.js +7 -2
- package/dist/_internal/client/features/tour/TourProvider.d.ts +5 -2
- package/dist/_internal/client/features/tour/TourProvider.js +125 -12
- package/dist/_internal/client/theme/ThemeProvider.js +1 -1
- package/dist/_internal/server/features/faqs/og.js +5 -1
- package/dist/_internal/server/features/reviews/og.js +5 -1
- package/dist/_internal/server/features/seo/manifest.js +2 -1
- package/dist/_internal/server/features/seo/og.js +7 -1
- package/dist/_internal/server/features/tester/visibility.d.ts +13 -0
- package/dist/_internal/server/features/tester/visibility.js +28 -0
- package/dist/_internal/server/functions/scheduled.d.ts +2 -1
- package/dist/_internal/server/functions/scheduled.js +9 -1
- package/dist/_internal/server/jobs/core/jobRunners.js +5 -0
- package/dist/_internal/server/jobs/core/resetOtpVerification.d.ts +17 -0
- package/dist/_internal/server/jobs/core/resetOtpVerification.js +88 -0
- package/dist/_internal/server/jobs/core/testerSandboxCleanup.d.ts +6 -0
- package/dist/_internal/server/jobs/core/testerSandboxCleanup.js +35 -0
- package/dist/_internal/server/jobs/handlers/_helpers.d.ts +6 -0
- package/dist/_internal/server/jobs/handlers/_helpers.js +12 -0
- package/dist/_internal/server/jobs/handlers/index.d.ts +1 -0
- package/dist/_internal/server/jobs/handlers/index.js +2 -0
- package/dist/_internal/server/jobs/handlers/messages.d.ts +2 -0
- package/dist/_internal/server/jobs/handlers/messages.js +2 -0
- package/dist/_internal/server/jobs/handlers/testerSandboxCleanup.d.ts +2 -0
- package/dist/_internal/server/jobs/handlers/testerSandboxCleanup.js +2 -0
- package/dist/_internal/shared/actions/action-registry.d.ts +1 -1
- package/dist/_internal/shared/actions/action-registry.js +48 -0
- package/dist/_internal/shared/tokens/index.d.ts +12 -12
- package/dist/client.d.ts +15 -3
- package/dist/client.js +10 -2
- package/dist/constants/api-endpoints.d.ts +36 -12
- package/dist/constants/api-endpoints.js +16 -8
- package/dist/constants/field-names.d.ts +9 -0
- package/dist/constants/field-names.js +12 -0
- package/dist/constants/index.d.ts +1 -1
- package/dist/constants/index.js +1 -1
- package/dist/features/account/components/LinkedAccountsSection.d.ts +11 -0
- package/dist/features/account/components/LinkedAccountsSection.js +11 -0
- package/dist/features/account/components/UserSidebar.d.ts +3 -1
- package/dist/features/account/components/UserSidebar.js +11 -15
- package/dist/features/account/hooks/useCollapsedSections.d.ts +20 -0
- package/dist/features/account/hooks/useCollapsedSections.js +63 -0
- package/dist/features/account/hooks/useProfile.d.ts +8 -0
- package/dist/features/account/index.d.ts +1 -0
- package/dist/features/account/index.js +1 -0
- package/dist/features/admin/components/AdminAddressEditorView.js +2 -2
- package/dist/features/admin/components/AdminCarouselView.js +2 -2
- package/dist/features/admin/components/AdminCategoryEditorView.js +2 -2
- package/dist/features/admin/components/AdminProductEditorView.js +5 -2
- package/dist/features/admin/components/AdminSectionsView.js +3 -18
- package/dist/features/admin/components/AdminSidebar.js +10 -8
- package/dist/features/admin/components/AdminSiteSettingsView.js +133 -127
- package/dist/features/admin/components/AdminTesterChecklistItemEditorView.d.ts +9 -0
- package/dist/features/admin/components/AdminTesterChecklistItemEditorView.js +129 -0
- package/dist/features/admin/components/AdminTesterChecklistView.d.ts +6 -0
- package/dist/features/admin/components/AdminTesterChecklistView.js +93 -0
- package/dist/features/admin/components/AdminUserEditorView.d.ts +3 -1
- package/dist/features/admin/components/AdminUserEditorView.js +7 -1
- package/dist/features/admin/components/AdminUsersView.js +1 -1
- package/dist/features/admin/components/DataListingView.js +2 -2
- package/dist/features/admin/components/analytics/AdminPageViewsReportView.d.ts +8 -0
- package/dist/features/admin/components/analytics/AdminPageViewsReportView.js +41 -0
- package/dist/features/admin/components/index.d.ts +6 -0
- package/dist/features/admin/components/index.js +3 -0
- package/dist/features/admin/schemas/firestore.d.ts +0 -7
- package/dist/features/admin/schemas/firestore.js +6 -6
- package/dist/features/analytics/components/PageViewTracker.d.ts +12 -0
- package/dist/features/analytics/components/PageViewTracker.js +22 -0
- package/dist/features/analytics/repository/page-views.repository.d.ts +32 -0
- package/dist/features/analytics/repository/page-views.repository.js +43 -0
- package/dist/features/analytics/types.d.ts +6 -0
- package/dist/features/analytics/types.js +13 -0
- package/dist/features/auth/components/SocialAuthButtons.js +1 -1
- package/dist/features/auth/hooks/useAuth.d.ts +12 -0
- package/dist/features/auth/hooks/useAuth.js +109 -0
- package/dist/features/auth/permissions/constants.d.ts +1 -1
- package/dist/features/auth/schemas/firestore.d.ts +17 -1
- package/dist/features/auth/schemas/firestore.js +2 -0
- package/dist/features/blog/components/BlogIndexListing.js +2 -2
- package/dist/features/blog/schemas/firestore.d.ts +4 -0
- package/dist/features/cart/actions/cart-actions.js +20 -2
- package/dist/features/categories/components/CategoriesIndexListing.js +2 -2
- package/dist/features/categories/components/CategoryBundlesListing.js +2 -2
- package/dist/features/categories/components/CategoryDetailPageView.js +3 -1
- package/dist/features/categories/components/CategoryProductsListing.js +2 -2
- package/dist/features/categories/schemas/firestore.d.ts +4 -0
- package/dist/features/classified/components/ClassifiedIndexListing.js +2 -2
- package/dist/features/digital-codes/components/DigitalCodesIndexListing.js +2 -2
- package/dist/features/email/primitives.d.ts +2 -2
- package/dist/features/email/primitives.js +2 -2
- package/dist/features/events/components/EventsIndexListing.js +2 -2
- package/dist/features/events/schemas/firestore.d.ts +4 -0
- package/dist/features/layout/BackToTop.d.ts +6 -1
- package/dist/features/layout/BackToTop.js +31 -6
- package/dist/features/live/components/LiveItemsIndexListing.js +2 -2
- package/dist/features/media/MediaVideo.js +5 -1
- package/dist/features/pre-orders/components/PreOrdersIndexListing.js +2 -2
- package/dist/features/products/components/AuctionsIndexListing.js +2 -2
- package/dist/features/products/components/PrizeDrawsIndexListing.js +2 -2
- package/dist/features/products/components/ProductsIndexListing.js +2 -2
- package/dist/features/products/constants/action-defs.d.ts +2 -0
- package/dist/features/products/constants/action-defs.js +2 -0
- package/dist/features/products/schemas/firestore.d.ts +4 -0
- package/dist/features/promotions/components/CouponsIndexListing.js +2 -2
- package/dist/features/reviews/components/ReviewsIndexListing.js +2 -2
- package/dist/features/seller/actions/seller-actions.js +11 -6
- package/dist/features/seller/components/SellerAddressesView.js +2 -2
- package/dist/features/seller/components/SellerBidsView.js +2 -2
- package/dist/features/seller/components/SellerOrdersView.js +2 -2
- package/dist/features/seller/components/SellerProductsView.js +2 -2
- package/dist/features/seller/components/SellerSidebar.d.ts +3 -1
- package/dist/features/seller/components/SellerSidebar.js +11 -10
- package/dist/features/seller/components/SellerStoreCategoriesView.js +2 -2
- package/dist/features/seller/components/SellerTemplatesView.js +2 -2
- package/dist/features/shell/StepForm.js +4 -4
- package/dist/features/stores/actions/store-query-actions.d.ts +5 -4
- package/dist/features/stores/actions/store-query-actions.js +11 -8
- package/dist/features/stores/components/StoreAuctionsListing.js +2 -2
- package/dist/features/stores/components/StoreClassifiedsListing.js +2 -2
- package/dist/features/stores/components/StoreDigitalCodesListing.js +2 -2
- package/dist/features/stores/components/StoreLiveItemsListing.js +2 -2
- package/dist/features/stores/components/StorePreOrdersListing.js +2 -2
- package/dist/features/stores/components/StoreProductsListing.js +2 -2
- package/dist/features/stores/components/StoreReviewsListing.js +2 -2
- package/dist/features/stores/components/StoresIndexListing.js +2 -2
- package/dist/features/stores/schemas/firestore.d.ts +4 -0
- package/dist/features/tester/actions/checklist-item-actions.d.ts +69 -0
- package/dist/features/tester/actions/checklist-item-actions.js +42 -0
- package/dist/features/tester/actions/index.d.ts +1 -0
- package/dist/features/tester/actions/index.js +1 -0
- package/dist/features/tester/components/AdminTesterFeedbackIssuesView.d.ts +2 -0
- package/dist/features/tester/components/AdminTesterFeedbackIssuesView.js +22 -0
- package/dist/features/tester/components/AdminTesterFeedbackListView.d.ts +3 -0
- package/dist/features/tester/components/AdminTesterFeedbackListView.js +100 -0
- package/dist/features/tester/components/AdminTesterFeedbackReportView.d.ts +2 -0
- package/dist/features/tester/components/AdminTesterFeedbackReportView.js +30 -0
- package/dist/features/tester/components/AdminTesterFeedbackView.d.ts +2 -0
- package/dist/features/tester/components/AdminTesterFeedbackView.js +9 -0
- package/dist/features/tester/components/TesterChecklistStepRow.d.ts +18 -0
- package/dist/features/tester/components/TesterChecklistStepRow.js +29 -0
- package/dist/features/tester/components/TesterFeedbackChart.d.ts +14 -0
- package/dist/features/tester/components/TesterFeedbackChart.js +18 -0
- package/dist/features/tester/components/TesterHubView.d.ts +5 -0
- package/dist/features/tester/components/TesterHubView.js +71 -0
- package/dist/features/tester/components/index.d.ts +11 -0
- package/dist/features/tester/components/index.js +7 -0
- package/dist/features/tester/index.d.ts +2 -0
- package/dist/features/tester/index.js +2 -0
- package/dist/features/tester/repository/index.d.ts +2 -0
- package/dist/features/tester/repository/index.js +2 -0
- package/dist/features/tester/repository/tester-checklist-item.repository.d.ts +13 -0
- package/dist/features/tester/repository/tester-checklist-item.repository.js +55 -0
- package/dist/features/tester/repository/tester-checklist-response.repository.d.ts +42 -0
- package/dist/features/tester/repository/tester-checklist-response.repository.js +98 -0
- package/dist/features/tester/schemas/firestore.d.ts +85 -0
- package/dist/features/tester/schemas/firestore.js +93 -0
- package/dist/features/tester/schemas/index.d.ts +1 -0
- package/dist/features/tester/schemas/index.js +1 -0
- package/dist/features/tester/seed-data/blog-tester-seed-data.d.ts +2 -0
- package/dist/features/tester/seed-data/blog-tester-seed-data.js +40 -0
- package/dist/features/tester/seed-data/categories-tester-seed-data.d.ts +2 -0
- package/dist/features/tester/seed-data/categories-tester-seed-data.js +177 -0
- package/dist/features/tester/seed-data/events-tester-seed-data.d.ts +2 -0
- package/dist/features/tester/seed-data/events-tester-seed-data.js +50 -0
- package/dist/features/tester/seed-data/index.d.ts +6 -0
- package/dist/features/tester/seed-data/index.js +6 -0
- package/dist/features/tester/seed-data/products-tester-seed-data.d.ts +2 -0
- package/dist/features/tester/seed-data/products-tester-seed-data.js +151 -0
- package/dist/features/tester/seed-data/stores-tester-seed-data.d.ts +2 -0
- package/dist/features/tester/seed-data/stores-tester-seed-data.js +40 -0
- package/dist/features/tester/seed-data/tester-checklist-seed-data.d.ts +2 -0
- package/dist/features/tester/seed-data/tester-checklist-seed-data.js +248 -0
- package/dist/features/tester/seed-data/tester-ttl.d.ts +4 -0
- package/dist/features/tester/seed-data/tester-ttl.js +6 -0
- package/dist/features/tester/server.d.ts +9 -0
- package/dist/features/tester/server.js +8 -0
- package/dist/index.d.ts +28 -2
- package/dist/index.js +51 -1
- package/dist/next/api/api-response.js +5 -1
- package/dist/next/api/routeHandler.js +10 -1
- package/dist/next/middleware/chain.js +1 -1
- package/dist/next/routing/route-map.d.ts +6 -7
- package/dist/next/routing/route-map.js +3 -7
- package/dist/providers/payment-manual/index.d.ts +2 -2
- package/dist/providers/payment-manual/index.js +2 -2
- package/dist/react/contexts/SessionContext.d.ts +4 -0
- package/dist/react/contexts/SessionContext.js +4 -0
- package/dist/repositories/index.d.ts +4 -0
- package/dist/repositories/index.js +3 -0
- package/dist/security/pii-encrypt.js +12 -2
- package/dist/seed/addresses-seed-data.js +1 -1
- package/dist/seed/bids-seed-data.js +1 -1
- package/dist/seed/blog-posts-seed-data.js +1 -1
- package/dist/seed/carousel-slides-seed-data.js +22 -16
- package/dist/seed/carousels-seed-data.js +1 -1
- package/dist/seed/cart-seed-data.js +1 -1
- package/dist/seed/categories-seed-data.js +1 -1
- package/dist/seed/claimed-coupons-seed-data.js +1 -1
- package/dist/seed/conversations-seed-data.js +1 -1
- package/dist/seed/coupon-usage-seed-data.js +1 -1
- package/dist/seed/coupons-seed-data.js +1 -1
- package/dist/seed/events-seed-data.js +1 -1
- package/dist/seed/faq-seed-data.js +119 -3
- package/dist/seed/grouped-listings-seed-data.d.ts +2 -0
- package/dist/seed/grouped-listings-seed-data.js +1 -1
- package/dist/seed/history-seed-data.js +1 -1
- package/dist/seed/homepage-sections-seed-data.js +1 -1
- package/dist/seed/index.d.ts +2 -2
- package/dist/seed/index.js +7 -3
- package/dist/seed/lottery-entries-seed-data.js +1 -1
- package/dist/seed/manifest.d.ts +4 -3
- package/dist/seed/manifest.js +13 -6
- package/dist/seed/notifications-seed-data.js +1 -1
- package/dist/seed/offers-seed-data.js +1 -1
- package/dist/seed/orders-seed-data.js +1 -1
- package/dist/seed/payouts-seed-data.js +1 -1
- package/dist/seed/products-art-seed-data.js +1 -1
- package/dist/seed/products-auctions-seed-data.js +1 -1
- package/dist/seed/products-classifieds-seed-data.js +1 -1
- package/dist/seed/products-digital-codes-seed-data.js +1 -1
- package/dist/seed/products-live-items-seed-data.js +1 -1
- package/dist/seed/products-preorders-seed-data.d.ts +2 -0
- package/dist/seed/products-preorders-seed-data.js +1 -1
- package/dist/seed/products-prize-draws-seed-data.js +1 -1
- package/dist/seed/products-standard-seed-data.js +1 -1
- package/dist/seed/products-stickers-seed-data.js +1 -1
- package/dist/seed/reviews-seed-data.js +1 -1
- package/dist/seed/scammers-seed-data.js +1 -1
- package/dist/seed/sessions-seed-data.js +1 -1
- package/dist/seed/site-settings-seed-data.js +22 -16
- package/dist/seed/store-addresses-seed-data.js +1 -1
- package/dist/seed/store-extensions-seed-data.js +1 -1
- package/dist/seed/stores-seed-data.js +1 -1
- package/dist/seed/support-tickets-seed-data.js +1 -1
- package/dist/seed/tester-checklist-seed-data.d.ts +2 -0
- package/dist/seed/tester-checklist-seed-data.js +248 -0
- package/dist/seed/users-seed-data.js +1 -1
- package/dist/seed/wishlists-seed-data.js +1 -1
- package/dist/server.d.ts +7 -2
- package/dist/server.js +19 -12
- package/dist/styles.css +163 -147
- package/dist/tailwind-utilities.css +1 -1
- package/dist/tokens/color-pairs.d.ts +46 -0
- package/dist/tokens/color-pairs.js +93 -0
- package/dist/tokens/index.d.ts +60 -60
- package/dist/tokens/index.js +30 -30
- package/dist/tokens/themes/cobalt-night.d.ts +3 -2
- package/dist/tokens/themes/cobalt-night.js +3 -2
- package/dist/tokens/themes/default-dark.d.ts +4 -1
- package/dist/tokens/themes/default-dark.js +44 -41
- package/dist/tokens/themes/default-light.d.ts +5 -1
- package/dist/tokens/themes/default-light.js +39 -35
- package/dist/tokens/themes/sunset.js +4 -4
- package/dist/tokens/tokens.css +110 -104
- package/dist/ui/components/CollapsibleSection.d.ts +15 -0
- package/dist/ui/components/CollapsibleSection.js +13 -0
- package/dist/ui/components/ListingToolbar.js +2 -1
- package/dist/ui/components/Semantic.style.css +3 -3
- package/dist/ui/components/SideDrawer.style.css +19 -19
- package/dist/ui/components/Slider.js +1 -1
- package/dist/ui/components/StickyToolbar.d.ts +36 -7
- package/dist/ui/components/StickyToolbar.js +63 -5
- package/dist/ui/components/Tabs.js +17 -1
- package/dist/ui/components/Tabs.style.css +10 -0
- package/dist/ui/components/Typography.js +7 -0
- package/dist/ui/components/surface-tokens.d.ts +0 -7
- package/dist/ui/components/surface-tokens.js +7 -0
- package/dist/ui/index.d.ts +6 -0
- package/dist/ui/index.js +3 -0
- package/dist/ui/rich-text/RichText.style.css +20 -20
- package/dist/utils/id-generators.d.ts +13 -0
- package/dist/utils/id-generators.js +17 -0
- package/package.json +1 -1
- package/scripts/seed-cli-loader.mjs +15 -0
- package/scripts/seed-cli.mjs +71 -17
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Built-in light theme —
|
|
2
|
+
* Built-in light theme — teal-blue primary + magenta secondary-highlight.
|
|
3
|
+
* Rebranded 2026-08-17 from the previous cobalt+lime identity to match the
|
|
4
|
+
* teal/magenta Beyblade reference art supplied for the rebrand (turquoise
|
|
5
|
+
* metallic body + magenta energy-ring highlight + silver accents), paired
|
|
6
|
+
* with the new red/cyan dark theme.
|
|
3
7
|
* Mirrors the `:root` block in `appkit/src/tokens/tokens.css`.
|
|
4
8
|
* Cannot be deleted; can be cloned by the admin into a new theme.
|
|
5
9
|
*
|
|
@@ -8,35 +12,35 @@
|
|
|
8
12
|
*/
|
|
9
13
|
export const DEFAULT_LIGHT_THEME = {
|
|
10
14
|
id: "default-light",
|
|
11
|
-
name: "Default Light (
|
|
15
|
+
name: "Default Light (Teal + Magenta)",
|
|
12
16
|
mode: "light",
|
|
13
17
|
builtIn: true,
|
|
14
18
|
tokens: {
|
|
15
|
-
"appkit-color-primary": "#
|
|
16
|
-
"appkit-color-primary-50": "#
|
|
17
|
-
"appkit-color-primary-100": "#
|
|
18
|
-
"appkit-color-primary-200": "#
|
|
19
|
-
"appkit-color-primary-300": "#
|
|
20
|
-
"appkit-color-primary-400": "#
|
|
21
|
-
"appkit-color-primary-500": "#
|
|
22
|
-
"appkit-color-primary-600": "#
|
|
23
|
-
"appkit-color-primary-700": "#
|
|
24
|
-
"appkit-color-primary-800": "#
|
|
25
|
-
"appkit-color-primary-900": "#
|
|
26
|
-
"appkit-color-primary-950": "#
|
|
27
|
-
"appkit-color-secondary": "#
|
|
28
|
-
"appkit-color-secondary-50": "#
|
|
29
|
-
"appkit-color-secondary-100": "#
|
|
30
|
-
"appkit-color-secondary-200": "#
|
|
31
|
-
"appkit-color-secondary-300": "#
|
|
32
|
-
"appkit-color-secondary-400": "#
|
|
33
|
-
"appkit-color-secondary-500": "#
|
|
34
|
-
"appkit-color-secondary-600": "#
|
|
35
|
-
"appkit-color-secondary-700": "#
|
|
36
|
-
"appkit-color-secondary-800": "#
|
|
37
|
-
"appkit-color-secondary-900": "#
|
|
38
|
-
"appkit-color-secondary-950": "#
|
|
39
|
-
"appkit-color-cobalt": "#
|
|
19
|
+
"appkit-color-primary": "#0d9488",
|
|
20
|
+
"appkit-color-primary-50": "#f0fdfa",
|
|
21
|
+
"appkit-color-primary-100": "#ccfbf1",
|
|
22
|
+
"appkit-color-primary-200": "#99f6e4",
|
|
23
|
+
"appkit-color-primary-300": "#5eead4",
|
|
24
|
+
"appkit-color-primary-400": "#2dd4bf",
|
|
25
|
+
"appkit-color-primary-500": "#14b8a6",
|
|
26
|
+
"appkit-color-primary-600": "#0d9488",
|
|
27
|
+
"appkit-color-primary-700": "#0f766e",
|
|
28
|
+
"appkit-color-primary-800": "#115e59",
|
|
29
|
+
"appkit-color-primary-900": "#134e4a",
|
|
30
|
+
"appkit-color-primary-950": "#042f2e",
|
|
31
|
+
"appkit-color-secondary": "#c026d3",
|
|
32
|
+
"appkit-color-secondary-50": "#fdf4ff",
|
|
33
|
+
"appkit-color-secondary-100": "#fae8ff",
|
|
34
|
+
"appkit-color-secondary-200": "#f5d0fe",
|
|
35
|
+
"appkit-color-secondary-300": "#f0abfc",
|
|
36
|
+
"appkit-color-secondary-400": "#e879f9",
|
|
37
|
+
"appkit-color-secondary-500": "#d946ef",
|
|
38
|
+
"appkit-color-secondary-600": "#c026d3",
|
|
39
|
+
"appkit-color-secondary-700": "#a21caf",
|
|
40
|
+
"appkit-color-secondary-800": "#86198f",
|
|
41
|
+
"appkit-color-secondary-900": "#701a75",
|
|
42
|
+
"appkit-color-secondary-950": "#4a044e",
|
|
43
|
+
"appkit-color-cobalt": "#0d9488",
|
|
40
44
|
"appkit-color-accent": "#8393b2",
|
|
41
45
|
"appkit-color-bg": "#fafafa",
|
|
42
46
|
"appkit-color-surface": "#ffffff",
|
|
@@ -48,20 +52,20 @@ export const DEFAULT_LIGHT_THEME = {
|
|
|
48
52
|
"appkit-color-text-muted": "#71717a",
|
|
49
53
|
"appkit-color-text-faint": "#87878f",
|
|
50
54
|
"appkit-color-text-on-primary": "#ffffff",
|
|
51
|
-
"appkit-color-success": "#
|
|
52
|
-
"appkit-color-success-surface": "#
|
|
53
|
-
"appkit-color-warning": "#
|
|
55
|
+
"appkit-color-success": "#15803d",
|
|
56
|
+
"appkit-color-success-surface": "#f0fdf4",
|
|
57
|
+
"appkit-color-warning": "#b45309",
|
|
54
58
|
"appkit-color-warning-surface": "#fffbeb",
|
|
55
|
-
"appkit-color-error": "#
|
|
59
|
+
"appkit-color-error": "#b91c1c",
|
|
56
60
|
"appkit-color-error-surface": "#fef2f2",
|
|
57
|
-
"appkit-color-info": "#
|
|
61
|
+
"appkit-color-info": "#0369a1",
|
|
58
62
|
"appkit-color-info-surface": "#f0f9ff",
|
|
59
63
|
"appkit-color-star": "#facc15",
|
|
60
64
|
"appkit-color-whatsapp-light": "#1ebe5d",
|
|
61
65
|
"appkit-color-whatsapp-bg": "#ECE5DD",
|
|
62
|
-
"appkit-color-focus-ring": "#
|
|
63
|
-
"appkit-shadow-glow": "0 0 0 1px rgba(
|
|
64
|
-
"appkit-shadow-glow-pink": "0 0 0 1px rgba(
|
|
66
|
+
"appkit-color-focus-ring": "#0d9488",
|
|
67
|
+
"appkit-shadow-glow": "0 0 0 1px rgba(13,148,136,0.10), 0 4px 16px -4px rgba(13,148,136,0.20)",
|
|
68
|
+
"appkit-shadow-glow-pink": "0 0 0 1px rgba(192,38,211,0.12), 0 4px 16px -4px rgba(192,38,211,0.22)",
|
|
65
69
|
"appkit-font-display": "var(--font-display), \"Poppins\", ui-sans-serif, system-ui, sans-serif",
|
|
66
70
|
"appkit-font-sans": "var(--font-body), ui-sans-serif, system-ui, -apple-system, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif",
|
|
67
71
|
"appkit-font-editorial": "var(--font-editorial), \"Georgia\", serif",
|
|
@@ -35,13 +35,13 @@ export const SUNSET_THEME = {
|
|
|
35
35
|
"appkit-color-text": "#431407",
|
|
36
36
|
"appkit-color-text-muted": "#9a3412",
|
|
37
37
|
"appkit-color-text-faint": "#c2410c",
|
|
38
|
-
"appkit-color-success": "#
|
|
38
|
+
"appkit-color-success": "#15803d",
|
|
39
39
|
"appkit-color-success-surface": "#f0fdf4",
|
|
40
|
-
"appkit-color-warning": "#
|
|
40
|
+
"appkit-color-warning": "#b45309",
|
|
41
41
|
"appkit-color-warning-surface": "#fef3c7",
|
|
42
|
-
"appkit-color-error": "#
|
|
42
|
+
"appkit-color-error": "#b91c1c",
|
|
43
43
|
"appkit-color-error-surface": "#fef2f2",
|
|
44
|
-
"appkit-color-info": "#
|
|
44
|
+
"appkit-color-info": "#0369a1",
|
|
45
45
|
"appkit-color-info-surface": "#f0f9ff",
|
|
46
46
|
"appkit-color-focus-ring": "#f59e0b",
|
|
47
47
|
"appkit-shadow-glow": "0 0 0 1px rgba(245,158,11,0.18), 0 4px 16px -4px rgba(245,158,11,0.30)",
|
package/dist/tokens/tokens.css
CHANGED
|
@@ -11,61 +11,65 @@
|
|
|
11
11
|
* --appkit-color-secondary: #your-secondary;
|
|
12
12
|
* }
|
|
13
13
|
*
|
|
14
|
-
* Default values reflect a
|
|
14
|
+
* Default values reflect a teal + magenta / crimson + cyan palette (override
|
|
15
|
+
* --appkit-color-primary etc. to rebrand).
|
|
15
16
|
*/
|
|
16
17
|
|
|
17
18
|
/* --- Colour — Brand ------------------------------------------------------- */
|
|
18
19
|
/*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
* secondary = Lime Green (blade / accent colour)
|
|
20
|
+
* Rebranded 2026-08-17 to match two Beyblade reference images (silver/chrome
|
|
21
|
+
* frame shared across both, distinguishing body + energy-ring colours):
|
|
22
22
|
*
|
|
23
|
-
*
|
|
24
|
-
* primary =
|
|
25
|
-
* secondary =
|
|
23
|
+
* Light mode (teal/magenta blade — turquoise body + magenta squiggle highlight):
|
|
24
|
+
* primary = Teal (dominant body colour)
|
|
25
|
+
* secondary = Magenta (energy-ring / accent colour)
|
|
26
|
+
*
|
|
27
|
+
* Dark mode (red/cyan blade — crimson body + cyan squiggle highlight):
|
|
28
|
+
* primary = Crimson Red (dominant body colour) ← overridden in [data-theme="default-dark"] below
|
|
29
|
+
* secondary = Cyan (energy-ring / accent colour) ← overridden in [data-theme="default-dark"] below
|
|
26
30
|
*/
|
|
27
31
|
:root {
|
|
28
|
-
/* Primary —
|
|
29
|
-
--appkit-color-primary: #
|
|
30
|
-
--appkit-color-primary-50: #
|
|
31
|
-
--appkit-color-primary-100: #
|
|
32
|
-
--appkit-color-primary-200: #
|
|
33
|
-
--appkit-color-primary-300: #
|
|
34
|
-
--appkit-color-primary-400: #
|
|
35
|
-
--appkit-color-primary-500: #
|
|
36
|
-
--appkit-color-primary-600: #
|
|
37
|
-
--appkit-color-primary-700: #
|
|
38
|
-
--appkit-color-primary-800: #
|
|
39
|
-
--appkit-color-primary-900: #
|
|
40
|
-
--appkit-color-primary-950: #
|
|
41
|
-
|
|
42
|
-
/* Secondary —
|
|
43
|
-
--appkit-color-secondary: #
|
|
44
|
-
--appkit-color-secondary-50: #
|
|
45
|
-
--appkit-color-secondary-100: #
|
|
46
|
-
--appkit-color-secondary-200: #
|
|
47
|
-
--appkit-color-secondary-300: #
|
|
48
|
-
--appkit-color-secondary-400: #
|
|
49
|
-
--appkit-color-secondary-500: #
|
|
50
|
-
--appkit-color-secondary-600: #
|
|
51
|
-
--appkit-color-secondary-700: #
|
|
52
|
-
--appkit-color-secondary-800: #
|
|
53
|
-
--appkit-color-secondary-900: #
|
|
54
|
-
--appkit-color-secondary-950: #
|
|
55
|
-
|
|
56
|
-
/* Cobalt —
|
|
57
|
-
--appkit-color-cobalt: #
|
|
58
|
-
--appkit-color-cobalt-50: #
|
|
59
|
-
--appkit-color-cobalt-100: #
|
|
60
|
-
--appkit-color-cobalt-200: #
|
|
61
|
-
--appkit-color-cobalt-300: #
|
|
62
|
-
--appkit-color-cobalt-400: #
|
|
63
|
-
--appkit-color-cobalt-500: #
|
|
64
|
-
--appkit-color-cobalt-600: #
|
|
65
|
-
--appkit-color-cobalt-700: #
|
|
66
|
-
--appkit-color-cobalt-800: #
|
|
67
|
-
--appkit-color-cobalt-900: #
|
|
68
|
-
--appkit-color-cobalt-950: #
|
|
32
|
+
/* Primary — Teal (light mode dominant, matches the teal/magenta Beyblade's turquoise body) */
|
|
33
|
+
--appkit-color-primary: #0d9488;
|
|
34
|
+
--appkit-color-primary-50: #f0fdfa;
|
|
35
|
+
--appkit-color-primary-100: #ccfbf1;
|
|
36
|
+
--appkit-color-primary-200: #99f6e4;
|
|
37
|
+
--appkit-color-primary-300: #5eead4;
|
|
38
|
+
--appkit-color-primary-400: #2dd4bf;
|
|
39
|
+
--appkit-color-primary-500: #14b8a6;
|
|
40
|
+
--appkit-color-primary-600: #0d9488;
|
|
41
|
+
--appkit-color-primary-700: #0f766e;
|
|
42
|
+
--appkit-color-primary-800: #115e59;
|
|
43
|
+
--appkit-color-primary-900: #134e4a;
|
|
44
|
+
--appkit-color-primary-950: #042f2e;
|
|
45
|
+
|
|
46
|
+
/* Secondary — Magenta (light mode highlight, matches the teal/magenta Beyblade's squiggle accent) */
|
|
47
|
+
--appkit-color-secondary: #c026d3;
|
|
48
|
+
--appkit-color-secondary-50: #fdf4ff;
|
|
49
|
+
--appkit-color-secondary-100: #fae8ff;
|
|
50
|
+
--appkit-color-secondary-200: #f5d0fe;
|
|
51
|
+
--appkit-color-secondary-300: #f0abfc;
|
|
52
|
+
--appkit-color-secondary-400: #e879f9;
|
|
53
|
+
--appkit-color-secondary-500: #d946ef;
|
|
54
|
+
--appkit-color-secondary-600: #c026d3;
|
|
55
|
+
--appkit-color-secondary-700: #a21caf;
|
|
56
|
+
--appkit-color-secondary-800: #86198f;
|
|
57
|
+
--appkit-color-secondary-900: #701a75;
|
|
58
|
+
--appkit-color-secondary-950: #4a044e;
|
|
59
|
+
|
|
60
|
+
/* Cobalt — legacy alias, now mirrors primary teal (links, nav) */
|
|
61
|
+
--appkit-color-cobalt: #0d9488;
|
|
62
|
+
--appkit-color-cobalt-50: #f0fdfa;
|
|
63
|
+
--appkit-color-cobalt-100: #ccfbf1;
|
|
64
|
+
--appkit-color-cobalt-200: #99f6e4;
|
|
65
|
+
--appkit-color-cobalt-300: #5eead4;
|
|
66
|
+
--appkit-color-cobalt-400: #2dd4bf;
|
|
67
|
+
--appkit-color-cobalt-500: #14b8a6;
|
|
68
|
+
--appkit-color-cobalt-600: #0d9488;
|
|
69
|
+
--appkit-color-cobalt-700: #0f766e;
|
|
70
|
+
--appkit-color-cobalt-800: #115e59;
|
|
71
|
+
--appkit-color-cobalt-900: #134e4a;
|
|
72
|
+
--appkit-color-cobalt-950: #042f2e;
|
|
69
73
|
|
|
70
74
|
/* Accent — Metallic Steel (frame silver) */
|
|
71
75
|
--appkit-color-accent: #8393b2;
|
|
@@ -267,20 +271,20 @@
|
|
|
267
271
|
--appkit-color-text-on-primary: #ffffff;
|
|
268
272
|
--appkit-color-text-on-dark: #ffffff;
|
|
269
273
|
|
|
270
|
-
--appkit-color-success: #
|
|
271
|
-
--appkit-color-success-surface: #
|
|
272
|
-
--appkit-color-warning: #
|
|
274
|
+
--appkit-color-success: #15803d; /* green-700 — 4.5:1 AA against success-surface, distinct from the new teal primary */
|
|
275
|
+
--appkit-color-success-surface: #f0fdf4; /* green-50 */
|
|
276
|
+
--appkit-color-warning: #b45309; /* amber-700 — 4.5:1 AA against warning-surface */
|
|
273
277
|
--appkit-color-warning-surface: #fffbeb; /* amber-50 */
|
|
274
|
-
--appkit-color-error: #
|
|
278
|
+
--appkit-color-error: #b91c1c; /* red-700 — 4.5:1 AA against error-surface */
|
|
275
279
|
--appkit-color-error-hover: #ef4444; /* red-500 — danger button hover */
|
|
276
280
|
--appkit-color-error-surface: #fef2f2; /* red-50 */
|
|
277
281
|
--appkit-color-error-title: #7f1d1d; /* red-900 */
|
|
278
282
|
--appkit-color-error-text: #991b1b; /* red-800 */
|
|
279
|
-
--appkit-color-info: #
|
|
283
|
+
--appkit-color-info: #0369a1; /* sky-700 — 4.5:1 AA against info-surface */
|
|
280
284
|
--appkit-color-info-surface: #f0f9ff; /* sky-50 */
|
|
281
285
|
--appkit-color-star: #facc15; /* yellow-400 — star ratings (decorative convention) */
|
|
282
286
|
|
|
283
|
-
--appkit-color-focus-ring: #
|
|
287
|
+
--appkit-color-focus-ring: #0d9488; /* primary-600 = teal */
|
|
284
288
|
}
|
|
285
289
|
|
|
286
290
|
/* --- Gradients — default-light defaults (overridden at runtime by ThemeProvider) - */
|
|
@@ -312,40 +316,42 @@
|
|
|
312
316
|
}
|
|
313
317
|
|
|
314
318
|
/* --- Theme — Dark ([data-theme="default-dark"]) ---------------------------- */
|
|
315
|
-
/* Dark mode:
|
|
319
|
+
/* Dark mode: primary = Crimson Red, secondary = Cyan (the red/cyan Beyblade
|
|
320
|
+
reference art's body + energy-ring highlight). Rebranded 2026-08-17 from
|
|
321
|
+
the previous unified Hot Pink identity.
|
|
316
322
|
Selector MUST match ThemeRecord.id ("default-dark"), not the ThemeMode ("dark") —
|
|
317
323
|
ThemeProvider.applyTheme() sets data-theme to the record id, never "dark" literally.
|
|
318
324
|
A prior mismatch here left this whole block unreachable (dead CSS), which also
|
|
319
325
|
caused a "swamp green" FOUC flash: the anti-FOUC script sets .dark + the correct
|
|
320
326
|
data-theme id before hydration, but with no matching CSS selector the page kept
|
|
321
|
-
painting :root's light-mode secondary
|
|
322
|
-
|
|
327
|
+
painting :root's light-mode secondary until React's inline styles landed a
|
|
328
|
+
moment later. */
|
|
323
329
|
[data-theme="default-dark"] {
|
|
324
|
-
--appkit-color-primary: #
|
|
325
|
-
--appkit-color-primary-50: #
|
|
326
|
-
--appkit-color-primary-100: #
|
|
327
|
-
--appkit-color-primary-200: #
|
|
328
|
-
--appkit-color-primary-300: #
|
|
329
|
-
--appkit-color-primary-400: #
|
|
330
|
-
--appkit-color-primary-500: #
|
|
331
|
-
--appkit-color-primary-600: #
|
|
332
|
-
--appkit-color-primary-700: #
|
|
333
|
-
--appkit-color-primary-800: #
|
|
334
|
-
--appkit-color-primary-900: #
|
|
335
|
-
--appkit-color-primary-950: #
|
|
336
|
-
|
|
337
|
-
--appkit-color-secondary: #
|
|
338
|
-
--appkit-color-secondary-50: #
|
|
339
|
-
--appkit-color-secondary-100: #
|
|
340
|
-
--appkit-color-secondary-200: #
|
|
341
|
-
--appkit-color-secondary-300: #
|
|
342
|
-
--appkit-color-secondary-400: #
|
|
343
|
-
--appkit-color-secondary-500: #
|
|
344
|
-
--appkit-color-secondary-600: #
|
|
345
|
-
--appkit-color-secondary-700: #
|
|
346
|
-
--appkit-color-secondary-800: #
|
|
347
|
-
--appkit-color-secondary-900: #
|
|
348
|
-
--appkit-color-secondary-950: #
|
|
330
|
+
--appkit-color-primary: #ef4444;
|
|
331
|
+
--appkit-color-primary-50: #fef2f2;
|
|
332
|
+
--appkit-color-primary-100: #fee2e2;
|
|
333
|
+
--appkit-color-primary-200: #fecaca;
|
|
334
|
+
--appkit-color-primary-300: #fca5a5;
|
|
335
|
+
--appkit-color-primary-400: #f87171;
|
|
336
|
+
--appkit-color-primary-500: #ef4444;
|
|
337
|
+
--appkit-color-primary-600: #dc2626;
|
|
338
|
+
--appkit-color-primary-700: #b91c1c;
|
|
339
|
+
--appkit-color-primary-800: #991b1b;
|
|
340
|
+
--appkit-color-primary-900: #7f1d1d;
|
|
341
|
+
--appkit-color-primary-950: #450a0a;
|
|
342
|
+
|
|
343
|
+
--appkit-color-secondary: #06b6d4;
|
|
344
|
+
--appkit-color-secondary-50: #ecfeff;
|
|
345
|
+
--appkit-color-secondary-100: #cffafe;
|
|
346
|
+
--appkit-color-secondary-200: #a5f3fc;
|
|
347
|
+
--appkit-color-secondary-300: #67e8f9;
|
|
348
|
+
--appkit-color-secondary-400: #22d3ee;
|
|
349
|
+
--appkit-color-secondary-500: #06b6d4;
|
|
350
|
+
--appkit-color-secondary-600: #0891b2;
|
|
351
|
+
--appkit-color-secondary-700: #0e7490;
|
|
352
|
+
--appkit-color-secondary-800: #155e75;
|
|
353
|
+
--appkit-color-secondary-900: #164e63;
|
|
354
|
+
--appkit-color-secondary-950: #083344;
|
|
349
355
|
|
|
350
356
|
--appkit-color-bg: #020617; /* slate-950 */
|
|
351
357
|
--appkit-color-surface: #0f172a; /* slate-900 */
|
|
@@ -363,41 +369,41 @@
|
|
|
363
369
|
--appkit-color-success-surface: rgba(6, 78, 59, 0.25);
|
|
364
370
|
--appkit-color-warning: #fbbf24; /* amber-400 */
|
|
365
371
|
--appkit-color-warning-surface: #1c1508; /* dark amber tint */
|
|
366
|
-
--appkit-color-error: #
|
|
372
|
+
--appkit-color-error: #fb7185; /* rose-400 — distinct from the new red primary */
|
|
367
373
|
--appkit-color-error-surface: rgba(127, 29, 29, 0.25);
|
|
368
374
|
--appkit-color-error-title: #fecaca; /* red-200 */
|
|
369
375
|
--appkit-color-error-text: #fca5a5; /* red-300 */
|
|
370
376
|
--appkit-color-info: #38bdf8; /* sky-400 */
|
|
371
377
|
--appkit-color-info-surface: rgba(12, 74, 110, 0.25);
|
|
372
378
|
|
|
373
|
-
--appkit-color-focus-ring: #
|
|
374
|
-
--appkit-shadow-glow: 0 0 0 1px rgba(
|
|
375
|
-
--appkit-shadow-glow-pink: 0 0 0 1px rgba(
|
|
379
|
+
--appkit-color-focus-ring: #f87171; /* primary-400 */
|
|
380
|
+
--appkit-shadow-glow: 0 0 0 1px rgba(239,68,68,0.12), 0 4px 16px -4px rgba(239,68,68,0.22);
|
|
381
|
+
--appkit-shadow-glow-pink: 0 0 0 1px rgba(6,182,212,0.14), 0 4px 20px -4px rgba(6,182,212,0.28);
|
|
376
382
|
|
|
377
383
|
/* Dark-mode gradient overrides */
|
|
378
|
-
--appkit-gradient-brand: linear-gradient(to right, var(--appkit-color-primary), var(--appkit-color-
|
|
384
|
+
--appkit-gradient-brand: linear-gradient(to right, var(--appkit-color-primary), var(--appkit-color-secondary));
|
|
379
385
|
--appkit-gradient-brand-tri: linear-gradient(to right, var(--appkit-color-primary), var(--appkit-color-secondary), var(--appkit-color-info));
|
|
380
|
-
--appkit-gradient-accent: linear-gradient(to right, var(--appkit-color-
|
|
386
|
+
--appkit-gradient-accent: linear-gradient(to right, var(--appkit-color-secondary), var(--appkit-color-primary));
|
|
381
387
|
--appkit-gradient-accent-divider: linear-gradient(to right, transparent, var(--appkit-color-primary), transparent);
|
|
382
|
-
--appkit-gradient-page-header: linear-gradient(to bottom right, rgba(
|
|
388
|
+
--appkit-gradient-page-header: linear-gradient(to bottom right, rgba(239,68,68,0.10), transparent 60%, transparent);
|
|
383
389
|
--appkit-gradient-section-warm: linear-gradient(to bottom right, var(--appkit-color-warning-surface), transparent);
|
|
384
|
-
--appkit-gradient-section-cool: linear-gradient(to bottom right, rgba(
|
|
385
|
-
--appkit-gradient-section-mesh: radial-gradient(ellipse at top, rgba(
|
|
386
|
-
--appkit-gradient-accent-banner: linear-gradient(to right, var(--appkit-color-primary), var(--appkit-color-
|
|
390
|
+
--appkit-gradient-section-cool: linear-gradient(to bottom right, rgba(6,182,212,0.10), transparent);
|
|
391
|
+
--appkit-gradient-section-mesh: radial-gradient(ellipse at top, rgba(239,68,68,0.10), var(--appkit-color-surface), rgba(6,182,212,0.08));
|
|
392
|
+
--appkit-gradient-accent-banner: linear-gradient(to right, var(--appkit-color-primary), var(--appkit-color-secondary));
|
|
387
393
|
--appkit-gradient-promotion: linear-gradient(to bottom right, var(--appkit-color-error), var(--appkit-color-primary), var(--appkit-color-warning));
|
|
388
|
-
--appkit-gradient-spotlight: linear-gradient(to bottom right, rgba(
|
|
394
|
+
--appkit-gradient-spotlight: linear-gradient(to bottom right, rgba(6,182,212,0.10), var(--appkit-color-bg), rgba(6,182,212,0.10));
|
|
389
395
|
--appkit-gradient-whatsapp-card: linear-gradient(to bottom right, var(--appkit-color-success), var(--appkit-color-success));
|
|
390
396
|
--appkit-gradient-glass: linear-gradient(to bottom right, color-mix(in srgb, var(--appkit-color-surface) 85%, transparent), color-mix(in srgb, var(--appkit-color-surface) 65%, transparent));
|
|
391
|
-
--appkit-gradient-card-indigo: linear-gradient(to bottom right, rgba(
|
|
392
|
-
--appkit-gradient-card-teal: linear-gradient(to bottom right, rgba(
|
|
397
|
+
--appkit-gradient-card-indigo: linear-gradient(to bottom right, rgba(239,68,68,0.10), var(--appkit-color-surface), var(--appkit-color-surface));
|
|
398
|
+
--appkit-gradient-card-teal: linear-gradient(to bottom right, rgba(6,182,212,0.10), var(--appkit-color-surface), var(--appkit-color-surface));
|
|
393
399
|
--appkit-gradient-card-amber: linear-gradient(to bottom right, var(--appkit-color-warning-surface), var(--appkit-color-surface), var(--appkit-color-surface));
|
|
394
400
|
--appkit-gradient-card-rose: linear-gradient(to bottom right, var(--appkit-color-error-surface), var(--appkit-color-surface), var(--appkit-color-surface));
|
|
395
|
-
--appkit-gradient-logo: linear-gradient(to right, var(--appkit-color-primary-300) 0%, var(--appkit-color-primary-400) 55%, var(--appkit-color-
|
|
396
|
-
--appkit-gradient-sidebar: linear-gradient(to bottom, var(--appkit-color-primary), var(--appkit-color-
|
|
401
|
+
--appkit-gradient-logo: linear-gradient(to right, var(--appkit-color-primary-300) 0%, var(--appkit-color-primary-400) 55%, var(--appkit-color-secondary) 100%);
|
|
402
|
+
--appkit-gradient-sidebar: linear-gradient(to bottom, var(--appkit-color-primary), var(--appkit-color-secondary));
|
|
397
403
|
/* Logo stop overrides — lighter shades visible on dark (#020617) background */
|
|
398
404
|
--appkit-logo-stop-from: var(--appkit-color-primary-300);
|
|
399
405
|
--appkit-logo-stop-mid: var(--appkit-color-primary-400);
|
|
400
|
-
--appkit-logo-stop-to: var(--appkit-color-
|
|
406
|
+
--appkit-logo-stop-to: var(--appkit-color-secondary);
|
|
401
407
|
|
|
402
408
|
/* Spacing + font-size scale — identical to :root; declared here only so the
|
|
403
409
|
built-in dark theme record can satisfy audit-theme-drift (which diffs
|
|
@@ -494,13 +500,13 @@
|
|
|
494
500
|
--appkit-color-text-muted: #9a3412; /* orange-800 */
|
|
495
501
|
--appkit-color-text-faint: #c2410c; /* orange-700 */
|
|
496
502
|
|
|
497
|
-
--appkit-color-success: #
|
|
503
|
+
--appkit-color-success: #15803d;
|
|
498
504
|
--appkit-color-success-surface: #f0fdf4;
|
|
499
|
-
--appkit-color-warning: #
|
|
505
|
+
--appkit-color-warning: #b45309;
|
|
500
506
|
--appkit-color-warning-surface: #fef3c7;
|
|
501
|
-
--appkit-color-error: #
|
|
507
|
+
--appkit-color-error: #b91c1c;
|
|
502
508
|
--appkit-color-error-surface: #fef2f2;
|
|
503
|
-
--appkit-color-info: #
|
|
509
|
+
--appkit-color-info: #0369a1;
|
|
504
510
|
--appkit-color-info-surface: #f0f9ff;
|
|
505
511
|
|
|
506
512
|
--appkit-color-focus-ring: #f59e0b;
|
|
@@ -581,8 +587,8 @@
|
|
|
581
587
|
--appkit-shadow-xl: 0 20px 25px -5px rgba(0,0,0,0.1), 0 8px 10px -6px rgba(0,0,0,0.1);
|
|
582
588
|
--appkit-shadow-soft: 0 2px 15px -3px rgba(0,0,0,0.07), 0 10px 20px -2px rgba(0,0,0,0.04);
|
|
583
589
|
/* Themed glow: tight ring + soft bloom — no bleed into neighbours */
|
|
584
|
-
--appkit-shadow-glow: 0 0 0 1px rgba(
|
|
585
|
-
--appkit-shadow-glow-pink: 0 0 0 1px rgba(
|
|
590
|
+
--appkit-shadow-glow: 0 0 0 1px rgba(13,148,136,0.10), 0 4px 16px -4px rgba(13,148,136,0.20);
|
|
591
|
+
--appkit-shadow-glow-pink: 0 0 0 1px rgba(192,38,211,0.12), 0 4px 16px -4px rgba(192,38,211,0.22);
|
|
586
592
|
}
|
|
587
593
|
|
|
588
594
|
/* --- Z-index -------------------------------------------------------------- */
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
export interface CollapsibleSectionProps {
|
|
3
|
+
title: React.ReactNode;
|
|
4
|
+
isCollapsed: boolean;
|
|
5
|
+
onToggle: () => void;
|
|
6
|
+
/** Optional right-aligned content next to the title (badges, counts). */
|
|
7
|
+
renderHeaderExtra?: () => React.ReactNode;
|
|
8
|
+
className?: string;
|
|
9
|
+
children?: React.ReactNode;
|
|
10
|
+
}
|
|
11
|
+
/** Dashboard-section wrapper backed by useCollapsedSections — a persisted,
|
|
12
|
+
* per-user, accordion-scoped collapse state (see that hook for the
|
|
13
|
+
* server-side merge/default-collapsed semantics). Purely presentational
|
|
14
|
+
* here: isCollapsed/onToggle are always controlled by the caller. */
|
|
15
|
+
export declare function CollapsibleSection({ title, isCollapsed, onToggle, renderHeaderExtra, className, children, }: CollapsibleSectionProps): React.JSX.Element;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Button } from "./Button";
|
|
3
|
+
import { Div } from "./Div";
|
|
4
|
+
import { Row } from "./Layout";
|
|
5
|
+
import { Span } from "./Typography";
|
|
6
|
+
import { Collapse } from "./Motion";
|
|
7
|
+
/** Dashboard-section wrapper backed by useCollapsedSections — a persisted,
|
|
8
|
+
* per-user, accordion-scoped collapse state (see that hook for the
|
|
9
|
+
* server-side merge/default-collapsed semantics). Purely presentational
|
|
10
|
+
* here: isCollapsed/onToggle are always controlled by the caller. */
|
|
11
|
+
export function CollapsibleSection({ title, isCollapsed, onToggle, renderHeaderExtra, className = "", children, }) {
|
|
12
|
+
return (_jsxs(Div, { className: className, rounded: "xl", border: "default", surface: "default", children: [_jsxs(Row, { align: "center", justify: "between", paddingX: "x-md", paddingY: "y-sm", children: [_jsx(Button, { type: "button", variant: "ghost", onClick: onToggle, paddingX: "none", paddingY: "none", rounded: "none", className: "min-w-0 flex-1", "aria-expanded": !isCollapsed, children: _jsxs(Row, { align: "center", justify: "between", className: "w-full", children: [_jsx(Span, { weight: "semibold", size: "sm", children: title }), _jsx("svg", { className: `w-4 h-4 transition-transform duration-150 ${isCollapsed ? "" : "rotate-180"}`, fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", "aria-hidden": "true", children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M19 9l-7 7-7-7" }) })] }) }), renderHeaderExtra && _jsx(Div, { className: "ml-3 shrink-0", children: renderHeaderExtra() })] }), _jsx(Collapse, { isOpen: !isCollapsed, children: _jsx(Div, { padding: "md", border: "top", children: children }) })] }));
|
|
13
|
+
}
|
|
@@ -4,6 +4,7 @@ import { CheckSquare, Search, SlidersHorizontal, LayoutGrid, List, Table2, Rotat
|
|
|
4
4
|
import { SortDropdown } from "./SortDropdown";
|
|
5
5
|
import { Div } from "./Div";
|
|
6
6
|
import { Span } from "./Typography";
|
|
7
|
+
import { StickyToolbar } from "./StickyToolbar";
|
|
7
8
|
const CLS_CLEAR_LINK = "text-xs text-zinc-400 hover:text-error text-[var(--appkit-color-text-muted)] transition-colors";
|
|
8
9
|
const CLS_CLEAR_ICON_BTN = "flex shrink-0 items-center justify-center rounded-lg border border-[var(--appkit-color-border)] p-1.5 sm:p-2 text-[var(--appkit-color-text-muted)] hover:bg-zinc-50 hover:bg-[var(--appkit-color-surface-elevated)] hover:text-error dark:hover:text-error transition-colors";
|
|
9
10
|
const DEFAULT_LABELS = {
|
|
@@ -33,7 +34,7 @@ export function ListingToolbar({ filterCount = 0, onFiltersClick, searchValue =
|
|
|
33
34
|
}
|
|
34
35
|
};
|
|
35
36
|
const allSelected = bulkTotalCount > 0 && bulkSelectedCount === bulkTotalCount;
|
|
36
|
-
return (_jsx(
|
|
37
|
+
return (_jsx(StickyToolbar, { dataTestId: "listing-toolbar", offset: "header", tone: "translucent", border: true, padding: "none", z: "above-toolbar", className: `py-2 px-3 sm:py-2.5 sm:px-4 ${className}`, children: _jsxs("div", { className: "flex flex-col sm:flex-row sm:items-center gap-2 sm:gap-2.5", children: [bulkMode ? (_jsxs("div", { className: "flex flex-1 items-center gap-2", children: [_jsxs("button", { type: "button", onClick: onBulkSelectAll, className: "flex items-center gap-1.5 rounded-lg border border-[var(--appkit-color-border)] px-3 py-1.5 text-sm font-medium text-[var(--appkit-color-text-muted)] hover:bg-zinc-50 hover:bg-[var(--appkit-color-surface-elevated)] transition-colors", children: [allSelected
|
|
37
38
|
? _jsx(CheckSquare, { className: "h-4 w-4 text-[var(--appkit-color-primary)]" })
|
|
38
39
|
: _jsx(Square, { className: "h-4 w-4" }), allSelected ? l.deselectAll : l.selectAll(bulkTotalCount)] }), _jsx(Span, { size: "sm", color: "muted", children: l.selected(bulkSelectedCount) }), _jsx("button", { type: "button", onClick: onBulkClear, className: CLS_CLEAR_LINK, children: l.clearSelection })] })) : onSearchChange ? (_jsxs("div", { className: "flex flex-1 items-center overflow-hidden rounded-lg border border-[var(--appkit-color-border)] bg-[var(--appkit-color-surface)] min-w-0", children: [_jsx("input", { type: "text", value: searchValue, onChange: (e) => onSearchChange(e.target.value), onKeyDown: handleKeyDown, placeholder: searchPlaceholder, className: "min-w-0 flex-1 bg-transparent px-3 py-2 text-sm text-[var(--appkit-color-text)] placeholder-zinc-400 outline-none" }), _jsx("button", { type: "button", onClick: onSearchCommit, className: "flex shrink-0 items-center justify-center px-2.5 py-2 text-zinc-400 hover:text-[var(--appkit-color-primary)] transition-colors", "aria-label": l.search, children: _jsx(Search, { className: "h-4 w-4" }) })] })) : null, _jsxs("div", { className: "flex items-center gap-1.5 sm:gap-2 shrink-0", children: [onFiltersClick && (_jsxs("button", { type: "button", onClick: onFiltersClick, className: "relative flex shrink-0 items-center gap-1.5 rounded-lg border border-[var(--appkit-color-border)] px-2.5 py-1.5 sm:px-3.5 sm:py-2 text-sm font-medium text-[var(--appkit-color-text-muted)] hover:bg-zinc-50 hover:bg-[var(--appkit-color-surface-elevated)] transition-colors", children: [_jsx(SlidersHorizontal, { className: "h-4 w-4" }), _jsx("span", { className: "hidden sm:inline", children: l.filters }), filterCount > 0 && (_jsx(Span, { weight: "bold", className: "absolute -top-1.5 -right-1.5 flex h-4 w-4 items-center justify-center rounded-full bg-[var(--appkit-color-primary)] text-[10px] text-white", children: filterCount }))] })), sortOptions && sortValue !== undefined && onSortChange && (_jsxs(Div, { className: "flex items-center gap-1.5 text-[var(--appkit-color-text-muted)]", children: [_jsx(Span, { size: "xs", className: "hidden md:inline whitespace-nowrap", children: l.sort }), _jsx(SortDropdown, { value: sortValue, onChange: onSortChange, options: sortOptions })] })), !hideViewToggle && onViewChange && (_jsxs("div", { className: "flex items-center rounded-lg border border-[var(--appkit-color-border)] overflow-hidden", children: [_jsx("button", { type: "button", onClick: () => onViewChange("grid"), "aria-label": l.gridView, className: `${VIEW_BTN_BASE} ${view === "grid" ? VIEW_BTN_ACTIVE : VIEW_BTN_INACTIVE}`, children: _jsx(LayoutGrid, { className: "h-4 w-4" }) }), _jsx("button", { type: "button", onClick: () => onViewChange("list"), "aria-label": l.listView, className: `${VIEW_BTN_BASE} ${view === "list" ? VIEW_BTN_ACTIVE : VIEW_BTN_INACTIVE}`, children: _jsx(List, { className: "h-4 w-4" }) }), showTableView && (_jsx("button", { type: "button", onClick: () => onViewChange("table"), "aria-label": l.tableView, className: `${VIEW_BTN_BASE} ${view === "table" ? VIEW_BTN_ACTIVE : VIEW_BTN_INACTIVE}`, children: _jsx(Table2, { className: "h-4 w-4" }) }))] })), onResetAll && hasActiveState && (_jsx("button", { type: "button", onClick: onResetAll, "aria-label": l.resetAll, title: l.resetAll, className: CLS_CLEAR_ICON_BTN, children: _jsx(RotateCcw, { className: "h-4 w-4" }) })), toggles && toggles.length > 0 && (_jsx("div", { className: "flex items-center gap-1", children: toggles.map((t) => (_jsx("button", { type: "button", role: "switch", "aria-checked": t.active, onClick: () => t.onChange(!t.active), className: `rounded-full border px-2.5 py-1 text-xs font-medium transition-colors whitespace-nowrap ${t.active
|
|
39
40
|
? "border-transparent bg-[var(--appkit-color-primary)] text-white"
|
|
@@ -114,8 +114,8 @@
|
|
|
114
114
|
}
|
|
115
115
|
|
|
116
116
|
.appkit-code--primary {
|
|
117
|
-
background: var(--appkit-color-primary-50
|
|
118
|
-
color: var(--appkit-color-primary-700
|
|
117
|
+
background: var(--appkit-color-primary-50);
|
|
118
|
+
color: var(--appkit-color-primary-700);
|
|
119
119
|
}
|
|
120
120
|
|
|
121
121
|
.dark .appkit-code--primary {
|
|
@@ -179,7 +179,7 @@
|
|
|
179
179
|
|
|
180
180
|
.appkit-blockquote--primary {
|
|
181
181
|
border-left-color: var(--appkit-color-primary);
|
|
182
|
-
color: var(--appkit-color-primary-700
|
|
182
|
+
color: var(--appkit-color-primary-700);
|
|
183
183
|
}
|
|
184
184
|
|
|
185
185
|
.dark .appkit-blockquote--primary {
|
|
@@ -53,9 +53,9 @@
|
|
|
53
53
|
height: 3px;
|
|
54
54
|
background: linear-gradient(
|
|
55
55
|
to right,
|
|
56
|
-
var(--appkit-color-primary-700
|
|
57
|
-
var(--appkit-color-
|
|
58
|
-
var(--appkit-color-secondary-400
|
|
56
|
+
var(--appkit-color-primary-700) 0%,
|
|
57
|
+
var(--appkit-color-primary) 55%,
|
|
58
|
+
var(--appkit-color-secondary-400) 100%
|
|
59
59
|
);
|
|
60
60
|
pointer-events: none;
|
|
61
61
|
}
|
|
@@ -69,42 +69,42 @@
|
|
|
69
69
|
border-color: var(--appkit-color-border);
|
|
70
70
|
}
|
|
71
71
|
|
|
72
|
-
/* create — soft
|
|
72
|
+
/* create — soft primary-to-secondary wash, echoes the wordmark gradient */
|
|
73
73
|
.appkit-side-drawer__header--create {
|
|
74
74
|
background: linear-gradient(
|
|
75
75
|
135deg,
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
76
|
+
color-mix(in srgb, var(--appkit-color-primary) 7%, transparent) 0%,
|
|
77
|
+
color-mix(in srgb, var(--appkit-color-primary) 5%, transparent) 55%,
|
|
78
|
+
color-mix(in srgb, var(--appkit-color-secondary) 4%, transparent) 100%
|
|
79
79
|
);
|
|
80
|
-
border-color:
|
|
80
|
+
border-color: color-mix(in srgb, var(--appkit-color-primary) 20%, transparent);
|
|
81
81
|
}
|
|
82
82
|
:is(.dark) .appkit-side-drawer__header--create {
|
|
83
83
|
background: linear-gradient(
|
|
84
84
|
135deg,
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
85
|
+
color-mix(in srgb, var(--appkit-color-primary) 18%, transparent) 0%,
|
|
86
|
+
color-mix(in srgb, var(--appkit-color-primary) 12%, transparent) 55%,
|
|
87
|
+
color-mix(in srgb, var(--appkit-color-secondary) 6%, transparent) 100%
|
|
88
88
|
);
|
|
89
|
-
border-color:
|
|
89
|
+
border-color: color-mix(in srgb, var(--appkit-color-primary) 25%, transparent);
|
|
90
90
|
}
|
|
91
91
|
|
|
92
|
-
/* edit — warmer
|
|
92
|
+
/* edit — warmer primary wash */
|
|
93
93
|
.appkit-side-drawer__header--edit {
|
|
94
94
|
background: linear-gradient(
|
|
95
95
|
135deg,
|
|
96
|
-
|
|
97
|
-
|
|
96
|
+
color-mix(in srgb, var(--appkit-color-primary) 6%, transparent) 0%,
|
|
97
|
+
color-mix(in srgb, var(--appkit-color-secondary) 4%, transparent) 100%
|
|
98
98
|
);
|
|
99
|
-
border-color:
|
|
99
|
+
border-color: color-mix(in srgb, var(--appkit-color-primary) 15%, transparent);
|
|
100
100
|
}
|
|
101
101
|
:is(.dark) .appkit-side-drawer__header--edit {
|
|
102
102
|
background: linear-gradient(
|
|
103
103
|
135deg,
|
|
104
|
-
|
|
105
|
-
|
|
104
|
+
color-mix(in srgb, var(--appkit-color-primary) 14%, transparent) 0%,
|
|
105
|
+
color-mix(in srgb, var(--appkit-color-secondary) 6%, transparent) 100%
|
|
106
106
|
);
|
|
107
|
-
border-color:
|
|
107
|
+
border-color: color-mix(in srgb, var(--appkit-color-primary) 20%, transparent);
|
|
108
108
|
}
|
|
109
109
|
|
|
110
110
|
.appkit-side-drawer__header--delete {
|
|
@@ -28,7 +28,7 @@ export function Slider({ value: controlledValue, defaultValue = 0, min = 0, max
|
|
|
28
28
|
"pointer-events-none absolute inset-x-0 top-1/2 -translate-y-1/2 overflow-hidden rounded-full bg-zinc-200 bg-[var(--appkit-color-border)]",
|
|
29
29
|
SIZE_CLASSES[size],
|
|
30
30
|
].join(" "), "data-section": "slider-div-610", children: _jsx("div", { className: [
|
|
31
|
-
"h-full rounded-full bg-
|
|
31
|
+
"h-full rounded-full bg-primary",
|
|
32
32
|
SIZE_CLASSES[size],
|
|
33
33
|
].join(" "), style: { width: `${Math.max(0, Math.min(100, percentage))}%` } }) }), _jsx("input", { id: inputId, type: "range", min: min, max: max, step: step, value: value, disabled: disabled, onChange: handleChange, onMouseUp: handleChangeEnd,
|
|
34
34
|
// audit-touch-handler-ok: native <input type="range"> owns its own
|