@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.
Files changed (276) hide show
  1. package/dist/_internal/client/features/layout/DashboardLayoutClient.d.ts +17 -3
  2. package/dist/_internal/client/features/layout/DashboardLayoutClient.js +7 -2
  3. package/dist/_internal/client/features/tour/TourProvider.d.ts +5 -2
  4. package/dist/_internal/client/features/tour/TourProvider.js +125 -12
  5. package/dist/_internal/client/theme/ThemeProvider.js +1 -1
  6. package/dist/_internal/server/features/faqs/og.js +5 -1
  7. package/dist/_internal/server/features/reviews/og.js +5 -1
  8. package/dist/_internal/server/features/seo/manifest.js +2 -1
  9. package/dist/_internal/server/features/seo/og.js +7 -1
  10. package/dist/_internal/server/features/tester/visibility.d.ts +13 -0
  11. package/dist/_internal/server/features/tester/visibility.js +28 -0
  12. package/dist/_internal/server/functions/scheduled.d.ts +2 -1
  13. package/dist/_internal/server/functions/scheduled.js +9 -1
  14. package/dist/_internal/server/jobs/core/jobRunners.js +5 -0
  15. package/dist/_internal/server/jobs/core/resetOtpVerification.d.ts +17 -0
  16. package/dist/_internal/server/jobs/core/resetOtpVerification.js +88 -0
  17. package/dist/_internal/server/jobs/core/testerSandboxCleanup.d.ts +6 -0
  18. package/dist/_internal/server/jobs/core/testerSandboxCleanup.js +35 -0
  19. package/dist/_internal/server/jobs/handlers/_helpers.d.ts +6 -0
  20. package/dist/_internal/server/jobs/handlers/_helpers.js +12 -0
  21. package/dist/_internal/server/jobs/handlers/index.d.ts +1 -0
  22. package/dist/_internal/server/jobs/handlers/index.js +2 -0
  23. package/dist/_internal/server/jobs/handlers/messages.d.ts +2 -0
  24. package/dist/_internal/server/jobs/handlers/messages.js +2 -0
  25. package/dist/_internal/server/jobs/handlers/testerSandboxCleanup.d.ts +2 -0
  26. package/dist/_internal/server/jobs/handlers/testerSandboxCleanup.js +2 -0
  27. package/dist/_internal/shared/actions/action-registry.d.ts +1 -1
  28. package/dist/_internal/shared/actions/action-registry.js +48 -0
  29. package/dist/_internal/shared/tokens/index.d.ts +12 -12
  30. package/dist/client.d.ts +15 -3
  31. package/dist/client.js +10 -2
  32. package/dist/constants/api-endpoints.d.ts +36 -12
  33. package/dist/constants/api-endpoints.js +16 -8
  34. package/dist/constants/field-names.d.ts +9 -0
  35. package/dist/constants/field-names.js +12 -0
  36. package/dist/constants/index.d.ts +1 -1
  37. package/dist/constants/index.js +1 -1
  38. package/dist/features/account/components/LinkedAccountsSection.d.ts +11 -0
  39. package/dist/features/account/components/LinkedAccountsSection.js +11 -0
  40. package/dist/features/account/components/UserSidebar.d.ts +3 -1
  41. package/dist/features/account/components/UserSidebar.js +11 -15
  42. package/dist/features/account/hooks/useCollapsedSections.d.ts +20 -0
  43. package/dist/features/account/hooks/useCollapsedSections.js +63 -0
  44. package/dist/features/account/hooks/useProfile.d.ts +8 -0
  45. package/dist/features/account/index.d.ts +1 -0
  46. package/dist/features/account/index.js +1 -0
  47. package/dist/features/admin/components/AdminAddressEditorView.js +2 -2
  48. package/dist/features/admin/components/AdminCarouselView.js +2 -2
  49. package/dist/features/admin/components/AdminCategoryEditorView.js +2 -2
  50. package/dist/features/admin/components/AdminProductEditorView.js +5 -2
  51. package/dist/features/admin/components/AdminSectionsView.js +3 -18
  52. package/dist/features/admin/components/AdminSidebar.js +10 -8
  53. package/dist/features/admin/components/AdminSiteSettingsView.js +133 -127
  54. package/dist/features/admin/components/AdminTesterChecklistItemEditorView.d.ts +9 -0
  55. package/dist/features/admin/components/AdminTesterChecklistItemEditorView.js +129 -0
  56. package/dist/features/admin/components/AdminTesterChecklistView.d.ts +6 -0
  57. package/dist/features/admin/components/AdminTesterChecklistView.js +93 -0
  58. package/dist/features/admin/components/AdminUserEditorView.d.ts +3 -1
  59. package/dist/features/admin/components/AdminUserEditorView.js +7 -1
  60. package/dist/features/admin/components/AdminUsersView.js +1 -1
  61. package/dist/features/admin/components/DataListingView.js +2 -2
  62. package/dist/features/admin/components/analytics/AdminPageViewsReportView.d.ts +8 -0
  63. package/dist/features/admin/components/analytics/AdminPageViewsReportView.js +41 -0
  64. package/dist/features/admin/components/index.d.ts +6 -0
  65. package/dist/features/admin/components/index.js +3 -0
  66. package/dist/features/admin/schemas/firestore.d.ts +0 -7
  67. package/dist/features/admin/schemas/firestore.js +6 -6
  68. package/dist/features/analytics/components/PageViewTracker.d.ts +12 -0
  69. package/dist/features/analytics/components/PageViewTracker.js +22 -0
  70. package/dist/features/analytics/repository/page-views.repository.d.ts +32 -0
  71. package/dist/features/analytics/repository/page-views.repository.js +43 -0
  72. package/dist/features/analytics/types.d.ts +6 -0
  73. package/dist/features/analytics/types.js +13 -0
  74. package/dist/features/auth/components/SocialAuthButtons.js +1 -1
  75. package/dist/features/auth/hooks/useAuth.d.ts +12 -0
  76. package/dist/features/auth/hooks/useAuth.js +109 -0
  77. package/dist/features/auth/permissions/constants.d.ts +1 -1
  78. package/dist/features/auth/schemas/firestore.d.ts +17 -1
  79. package/dist/features/auth/schemas/firestore.js +2 -0
  80. package/dist/features/blog/components/BlogIndexListing.js +2 -2
  81. package/dist/features/blog/schemas/firestore.d.ts +4 -0
  82. package/dist/features/cart/actions/cart-actions.js +20 -2
  83. package/dist/features/categories/components/CategoriesIndexListing.js +2 -2
  84. package/dist/features/categories/components/CategoryBundlesListing.js +2 -2
  85. package/dist/features/categories/components/CategoryDetailPageView.js +3 -1
  86. package/dist/features/categories/components/CategoryProductsListing.js +2 -2
  87. package/dist/features/categories/schemas/firestore.d.ts +4 -0
  88. package/dist/features/classified/components/ClassifiedIndexListing.js +2 -2
  89. package/dist/features/digital-codes/components/DigitalCodesIndexListing.js +2 -2
  90. package/dist/features/email/primitives.d.ts +2 -2
  91. package/dist/features/email/primitives.js +2 -2
  92. package/dist/features/events/components/EventsIndexListing.js +2 -2
  93. package/dist/features/events/schemas/firestore.d.ts +4 -0
  94. package/dist/features/layout/BackToTop.d.ts +6 -1
  95. package/dist/features/layout/BackToTop.js +31 -6
  96. package/dist/features/live/components/LiveItemsIndexListing.js +2 -2
  97. package/dist/features/media/MediaVideo.js +5 -1
  98. package/dist/features/pre-orders/components/PreOrdersIndexListing.js +2 -2
  99. package/dist/features/products/components/AuctionsIndexListing.js +2 -2
  100. package/dist/features/products/components/PrizeDrawsIndexListing.js +2 -2
  101. package/dist/features/products/components/ProductsIndexListing.js +2 -2
  102. package/dist/features/products/constants/action-defs.d.ts +2 -0
  103. package/dist/features/products/constants/action-defs.js +2 -0
  104. package/dist/features/products/schemas/firestore.d.ts +4 -0
  105. package/dist/features/promotions/components/CouponsIndexListing.js +2 -2
  106. package/dist/features/reviews/components/ReviewsIndexListing.js +2 -2
  107. package/dist/features/seller/actions/seller-actions.js +11 -6
  108. package/dist/features/seller/components/SellerAddressesView.js +2 -2
  109. package/dist/features/seller/components/SellerBidsView.js +2 -2
  110. package/dist/features/seller/components/SellerOrdersView.js +2 -2
  111. package/dist/features/seller/components/SellerProductsView.js +2 -2
  112. package/dist/features/seller/components/SellerSidebar.d.ts +3 -1
  113. package/dist/features/seller/components/SellerSidebar.js +11 -10
  114. package/dist/features/seller/components/SellerStoreCategoriesView.js +2 -2
  115. package/dist/features/seller/components/SellerTemplatesView.js +2 -2
  116. package/dist/features/shell/StepForm.js +4 -4
  117. package/dist/features/stores/actions/store-query-actions.d.ts +5 -4
  118. package/dist/features/stores/actions/store-query-actions.js +11 -8
  119. package/dist/features/stores/components/StoreAuctionsListing.js +2 -2
  120. package/dist/features/stores/components/StoreClassifiedsListing.js +2 -2
  121. package/dist/features/stores/components/StoreDigitalCodesListing.js +2 -2
  122. package/dist/features/stores/components/StoreLiveItemsListing.js +2 -2
  123. package/dist/features/stores/components/StorePreOrdersListing.js +2 -2
  124. package/dist/features/stores/components/StoreProductsListing.js +2 -2
  125. package/dist/features/stores/components/StoreReviewsListing.js +2 -2
  126. package/dist/features/stores/components/StoresIndexListing.js +2 -2
  127. package/dist/features/stores/schemas/firestore.d.ts +4 -0
  128. package/dist/features/tester/actions/checklist-item-actions.d.ts +69 -0
  129. package/dist/features/tester/actions/checklist-item-actions.js +42 -0
  130. package/dist/features/tester/actions/index.d.ts +1 -0
  131. package/dist/features/tester/actions/index.js +1 -0
  132. package/dist/features/tester/components/AdminTesterFeedbackIssuesView.d.ts +2 -0
  133. package/dist/features/tester/components/AdminTesterFeedbackIssuesView.js +22 -0
  134. package/dist/features/tester/components/AdminTesterFeedbackListView.d.ts +3 -0
  135. package/dist/features/tester/components/AdminTesterFeedbackListView.js +100 -0
  136. package/dist/features/tester/components/AdminTesterFeedbackReportView.d.ts +2 -0
  137. package/dist/features/tester/components/AdminTesterFeedbackReportView.js +30 -0
  138. package/dist/features/tester/components/AdminTesterFeedbackView.d.ts +2 -0
  139. package/dist/features/tester/components/AdminTesterFeedbackView.js +9 -0
  140. package/dist/features/tester/components/TesterChecklistStepRow.d.ts +18 -0
  141. package/dist/features/tester/components/TesterChecklistStepRow.js +29 -0
  142. package/dist/features/tester/components/TesterFeedbackChart.d.ts +14 -0
  143. package/dist/features/tester/components/TesterFeedbackChart.js +18 -0
  144. package/dist/features/tester/components/TesterHubView.d.ts +5 -0
  145. package/dist/features/tester/components/TesterHubView.js +71 -0
  146. package/dist/features/tester/components/index.d.ts +11 -0
  147. package/dist/features/tester/components/index.js +7 -0
  148. package/dist/features/tester/index.d.ts +2 -0
  149. package/dist/features/tester/index.js +2 -0
  150. package/dist/features/tester/repository/index.d.ts +2 -0
  151. package/dist/features/tester/repository/index.js +2 -0
  152. package/dist/features/tester/repository/tester-checklist-item.repository.d.ts +13 -0
  153. package/dist/features/tester/repository/tester-checklist-item.repository.js +55 -0
  154. package/dist/features/tester/repository/tester-checklist-response.repository.d.ts +42 -0
  155. package/dist/features/tester/repository/tester-checklist-response.repository.js +98 -0
  156. package/dist/features/tester/schemas/firestore.d.ts +85 -0
  157. package/dist/features/tester/schemas/firestore.js +93 -0
  158. package/dist/features/tester/schemas/index.d.ts +1 -0
  159. package/dist/features/tester/schemas/index.js +1 -0
  160. package/dist/features/tester/seed-data/blog-tester-seed-data.d.ts +2 -0
  161. package/dist/features/tester/seed-data/blog-tester-seed-data.js +40 -0
  162. package/dist/features/tester/seed-data/categories-tester-seed-data.d.ts +2 -0
  163. package/dist/features/tester/seed-data/categories-tester-seed-data.js +177 -0
  164. package/dist/features/tester/seed-data/events-tester-seed-data.d.ts +2 -0
  165. package/dist/features/tester/seed-data/events-tester-seed-data.js +50 -0
  166. package/dist/features/tester/seed-data/index.d.ts +6 -0
  167. package/dist/features/tester/seed-data/index.js +6 -0
  168. package/dist/features/tester/seed-data/products-tester-seed-data.d.ts +2 -0
  169. package/dist/features/tester/seed-data/products-tester-seed-data.js +151 -0
  170. package/dist/features/tester/seed-data/stores-tester-seed-data.d.ts +2 -0
  171. package/dist/features/tester/seed-data/stores-tester-seed-data.js +40 -0
  172. package/dist/features/tester/seed-data/tester-checklist-seed-data.d.ts +2 -0
  173. package/dist/features/tester/seed-data/tester-checklist-seed-data.js +248 -0
  174. package/dist/features/tester/seed-data/tester-ttl.d.ts +4 -0
  175. package/dist/features/tester/seed-data/tester-ttl.js +6 -0
  176. package/dist/features/tester/server.d.ts +9 -0
  177. package/dist/features/tester/server.js +8 -0
  178. package/dist/index.d.ts +28 -2
  179. package/dist/index.js +51 -1
  180. package/dist/next/api/api-response.js +5 -1
  181. package/dist/next/api/routeHandler.js +10 -1
  182. package/dist/next/middleware/chain.js +1 -1
  183. package/dist/next/routing/route-map.d.ts +6 -7
  184. package/dist/next/routing/route-map.js +3 -7
  185. package/dist/providers/payment-manual/index.d.ts +2 -2
  186. package/dist/providers/payment-manual/index.js +2 -2
  187. package/dist/react/contexts/SessionContext.d.ts +4 -0
  188. package/dist/react/contexts/SessionContext.js +4 -0
  189. package/dist/repositories/index.d.ts +4 -0
  190. package/dist/repositories/index.js +3 -0
  191. package/dist/security/pii-encrypt.js +12 -2
  192. package/dist/seed/addresses-seed-data.js +1 -1
  193. package/dist/seed/bids-seed-data.js +1 -1
  194. package/dist/seed/blog-posts-seed-data.js +1 -1
  195. package/dist/seed/carousel-slides-seed-data.js +22 -16
  196. package/dist/seed/carousels-seed-data.js +1 -1
  197. package/dist/seed/cart-seed-data.js +1 -1
  198. package/dist/seed/categories-seed-data.js +1 -1
  199. package/dist/seed/claimed-coupons-seed-data.js +1 -1
  200. package/dist/seed/conversations-seed-data.js +1 -1
  201. package/dist/seed/coupon-usage-seed-data.js +1 -1
  202. package/dist/seed/coupons-seed-data.js +1 -1
  203. package/dist/seed/events-seed-data.js +1 -1
  204. package/dist/seed/faq-seed-data.js +119 -3
  205. package/dist/seed/grouped-listings-seed-data.d.ts +2 -0
  206. package/dist/seed/grouped-listings-seed-data.js +1 -1
  207. package/dist/seed/history-seed-data.js +1 -1
  208. package/dist/seed/homepage-sections-seed-data.js +1 -1
  209. package/dist/seed/index.d.ts +2 -2
  210. package/dist/seed/index.js +7 -3
  211. package/dist/seed/lottery-entries-seed-data.js +1 -1
  212. package/dist/seed/manifest.d.ts +4 -3
  213. package/dist/seed/manifest.js +13 -6
  214. package/dist/seed/notifications-seed-data.js +1 -1
  215. package/dist/seed/offers-seed-data.js +1 -1
  216. package/dist/seed/orders-seed-data.js +1 -1
  217. package/dist/seed/payouts-seed-data.js +1 -1
  218. package/dist/seed/products-art-seed-data.js +1 -1
  219. package/dist/seed/products-auctions-seed-data.js +1 -1
  220. package/dist/seed/products-classifieds-seed-data.js +1 -1
  221. package/dist/seed/products-digital-codes-seed-data.js +1 -1
  222. package/dist/seed/products-live-items-seed-data.js +1 -1
  223. package/dist/seed/products-preorders-seed-data.d.ts +2 -0
  224. package/dist/seed/products-preorders-seed-data.js +1 -1
  225. package/dist/seed/products-prize-draws-seed-data.js +1 -1
  226. package/dist/seed/products-standard-seed-data.js +1 -1
  227. package/dist/seed/products-stickers-seed-data.js +1 -1
  228. package/dist/seed/reviews-seed-data.js +1 -1
  229. package/dist/seed/scammers-seed-data.js +1 -1
  230. package/dist/seed/sessions-seed-data.js +1 -1
  231. package/dist/seed/site-settings-seed-data.js +22 -16
  232. package/dist/seed/store-addresses-seed-data.js +1 -1
  233. package/dist/seed/store-extensions-seed-data.js +1 -1
  234. package/dist/seed/stores-seed-data.js +1 -1
  235. package/dist/seed/support-tickets-seed-data.js +1 -1
  236. package/dist/seed/tester-checklist-seed-data.d.ts +2 -0
  237. package/dist/seed/tester-checklist-seed-data.js +248 -0
  238. package/dist/seed/users-seed-data.js +1 -1
  239. package/dist/seed/wishlists-seed-data.js +1 -1
  240. package/dist/server.d.ts +7 -2
  241. package/dist/server.js +19 -12
  242. package/dist/styles.css +163 -147
  243. package/dist/tailwind-utilities.css +1 -1
  244. package/dist/tokens/color-pairs.d.ts +46 -0
  245. package/dist/tokens/color-pairs.js +93 -0
  246. package/dist/tokens/index.d.ts +60 -60
  247. package/dist/tokens/index.js +30 -30
  248. package/dist/tokens/themes/cobalt-night.d.ts +3 -2
  249. package/dist/tokens/themes/cobalt-night.js +3 -2
  250. package/dist/tokens/themes/default-dark.d.ts +4 -1
  251. package/dist/tokens/themes/default-dark.js +44 -41
  252. package/dist/tokens/themes/default-light.d.ts +5 -1
  253. package/dist/tokens/themes/default-light.js +39 -35
  254. package/dist/tokens/themes/sunset.js +4 -4
  255. package/dist/tokens/tokens.css +110 -104
  256. package/dist/ui/components/CollapsibleSection.d.ts +15 -0
  257. package/dist/ui/components/CollapsibleSection.js +13 -0
  258. package/dist/ui/components/ListingToolbar.js +2 -1
  259. package/dist/ui/components/Semantic.style.css +3 -3
  260. package/dist/ui/components/SideDrawer.style.css +19 -19
  261. package/dist/ui/components/Slider.js +1 -1
  262. package/dist/ui/components/StickyToolbar.d.ts +36 -7
  263. package/dist/ui/components/StickyToolbar.js +63 -5
  264. package/dist/ui/components/Tabs.js +17 -1
  265. package/dist/ui/components/Tabs.style.css +10 -0
  266. package/dist/ui/components/Typography.js +7 -0
  267. package/dist/ui/components/surface-tokens.d.ts +0 -7
  268. package/dist/ui/components/surface-tokens.js +7 -0
  269. package/dist/ui/index.d.ts +6 -0
  270. package/dist/ui/index.js +3 -0
  271. package/dist/ui/rich-text/RichText.style.css +20 -20
  272. package/dist/utils/id-generators.d.ts +13 -0
  273. package/dist/utils/id-generators.js +17 -0
  274. package/package.json +1 -1
  275. package/scripts/seed-cli-loader.mjs +15 -0
  276. package/scripts/seed-cli.mjs +71 -17
@@ -0,0 +1,46 @@
1
+ import type { SurfaceKey } from "../ui/components/surface-tokens";
2
+ /**
3
+ * Colors as a function, not a convention.
4
+ *
5
+ * Every layout primitive that accepts a `surface` prop (Stack, Row, Grid,
6
+ * Container, Section, Div, Card) used to pick its background and its text
7
+ * color completely independently — nothing stopped a consumer from combining
8
+ * a light surface with light text, because there was no single source of
9
+ * truth pairing them. `getSurfaceTextPair` is that source of truth: one
10
+ * lookup, one entry per surface token, each entry a real CSS-var pair
11
+ * already used somewhere in this codebase (this is a consolidation of
12
+ * existing choices, not a new palette).
13
+ *
14
+ * `buildSurfaceClasses` (surface-tokens.ts) calls this automatically so
15
+ * every consumer of a `surface` prop gets a readable default text color for
16
+ * free. A child element's own explicit `color`/`text-*` class still wins
17
+ * (normal CSS specificity — the default only fills in when nothing more
18
+ * specific is set), so this is additive, not a breaking change.
19
+ */
20
+ export interface SurfaceTextPair {
21
+ /** CSS var reference for the surface's default (non-muted) text color. */
22
+ textVar: string;
23
+ /** CSS var reference for secondary/de-emphasized text on this surface. */
24
+ textMutedVar: string;
25
+ /** CSS var reference for the lowest-emphasis text on this surface. */
26
+ textFaintVar: string;
27
+ }
28
+ /**
29
+ * One entry per `SurfaceKey` (surface-tokens.ts). Surfaces that are light
30
+ * neutrals (default/muted/subtle/inset/card/elevated/interactive/form/
31
+ * sidePanel/skeleton/status-surfaces) pair with the theme's standard
32
+ * text/text-muted/text-faint triad, since those surfaces are always close
33
+ * to `--appkit-color-surface`/`--appkit-color-bg` in lightness regardless of
34
+ * theme. Surfaces that are dark overlays or near-black regardless of theme
35
+ * mode (overlay-*, media-dark) pair with on-primary (white-on-dark) text —
36
+ * they never lighten in dark mode, so a theme-relative text color would
37
+ * become unreadable exactly when the surface is at its darkest.
38
+ */
39
+ export declare const SURFACE_TEXT_PAIR_MAP: Record<SurfaceKey, SurfaceTextPair>;
40
+ export declare function getSurfaceTextPair(surface: SurfaceKey): SurfaceTextPair;
41
+ /**
42
+ * Tailwind class for the surface's default text color, e.g.
43
+ * `text-[var(--appkit-color-text)]`. `buildSurfaceClasses` appends this so
44
+ * every `surface`-bearing primitive gets a readable default.
45
+ */
46
+ export declare function getSurfaceTextClass(surface: SurfaceKey): string;
@@ -0,0 +1,93 @@
1
+ const DEFAULT_PAIR = {
2
+ textVar: "var(--appkit-color-text)",
3
+ textMutedVar: "var(--appkit-color-text-muted)",
4
+ textFaintVar: "var(--appkit-color-text-faint)",
5
+ };
6
+ const ON_PRIMARY_PAIR = {
7
+ textVar: "var(--appkit-color-text-on-primary)",
8
+ textMutedVar: "var(--appkit-color-text-on-primary)",
9
+ textFaintVar: "var(--appkit-color-text-on-primary)",
10
+ };
11
+ /**
12
+ * One entry per `SurfaceKey` (surface-tokens.ts). Surfaces that are light
13
+ * neutrals (default/muted/subtle/inset/card/elevated/interactive/form/
14
+ * sidePanel/skeleton/status-surfaces) pair with the theme's standard
15
+ * text/text-muted/text-faint triad, since those surfaces are always close
16
+ * to `--appkit-color-surface`/`--appkit-color-bg` in lightness regardless of
17
+ * theme. Surfaces that are dark overlays or near-black regardless of theme
18
+ * mode (overlay-*, media-dark) pair with on-primary (white-on-dark) text —
19
+ * they never lighten in dark mode, so a theme-relative text color would
20
+ * become unreadable exactly when the surface is at its darkest.
21
+ */
22
+ export const SURFACE_TEXT_PAIR_MAP = {
23
+ none: DEFAULT_PAIR,
24
+ default: DEFAULT_PAIR,
25
+ muted: DEFAULT_PAIR,
26
+ subtle: DEFAULT_PAIR,
27
+ inset: DEFAULT_PAIR,
28
+ card: DEFAULT_PAIR,
29
+ elevated: DEFAULT_PAIR,
30
+ interactive: DEFAULT_PAIR,
31
+ glass: DEFAULT_PAIR,
32
+ form: DEFAULT_PAIR,
33
+ sidePanel: DEFAULT_PAIR,
34
+ "success-surface": {
35
+ textVar: "var(--appkit-color-success)",
36
+ textMutedVar: "var(--appkit-color-success)",
37
+ textFaintVar: "var(--appkit-color-text-muted)",
38
+ },
39
+ "danger-surface": {
40
+ textVar: "var(--appkit-color-error)",
41
+ textMutedVar: "var(--appkit-color-error)",
42
+ textFaintVar: "var(--appkit-color-text-muted)",
43
+ },
44
+ "warning-surface": {
45
+ textVar: "var(--appkit-color-warning)",
46
+ textMutedVar: "var(--appkit-color-warning)",
47
+ textFaintVar: "var(--appkit-color-text-muted)",
48
+ },
49
+ "info-surface": {
50
+ textVar: "var(--appkit-color-info)",
51
+ textMutedVar: "var(--appkit-color-info)",
52
+ textFaintVar: "var(--appkit-color-text-muted)",
53
+ },
54
+ "overlay-xs": ON_PRIMARY_PAIR,
55
+ "overlay-sm": ON_PRIMARY_PAIR,
56
+ "overlay-md": ON_PRIMARY_PAIR,
57
+ "overlay-lg": ON_PRIMARY_PAIR,
58
+ "overlay-xl": ON_PRIMARY_PAIR,
59
+ skeleton: DEFAULT_PAIR,
60
+ "skeleton-light": DEFAULT_PAIR,
61
+ "media-dark": ON_PRIMARY_PAIR,
62
+ };
63
+ export function getSurfaceTextPair(surface) {
64
+ return SURFACE_TEXT_PAIR_MAP[surface] ?? DEFAULT_PAIR;
65
+ }
66
+ /**
67
+ * Fixed, statically-written Tailwind arbitrary-value classes — one per
68
+ * distinct `textVar` that can appear in `SURFACE_TEXT_PAIR_MAP`. Every class
69
+ * string below is a complete literal Tailwind can find via its static
70
+ * content scan. Building this string via runtime template-literal
71
+ * interpolation (`` `text-[${pair.textVar}]` ``) instead would make Tailwind's
72
+ * scanner unable to see it — no CSS rule would ever be generated — caught by
73
+ * `audit-dynamic-tailwind-arbitrary.mjs`.
74
+ */
75
+ const TEXT_VAR_TO_CLASS = {
76
+ "var(--appkit-color-text)": "text-[var(--appkit-color-text)]",
77
+ "var(--appkit-color-text-on-primary)": "text-[var(--appkit-color-text-on-primary)]",
78
+ "var(--appkit-color-success)": "text-[var(--appkit-color-success)]",
79
+ "var(--appkit-color-error)": "text-[var(--appkit-color-error)]",
80
+ "var(--appkit-color-warning)": "text-[var(--appkit-color-warning)]",
81
+ "var(--appkit-color-info)": "text-[var(--appkit-color-info)]",
82
+ };
83
+ /**
84
+ * Tailwind class for the surface's default text color, e.g.
85
+ * `text-[var(--appkit-color-text)]`. `buildSurfaceClasses` appends this so
86
+ * every `surface`-bearing primitive gets a readable default.
87
+ */
88
+ export function getSurfaceTextClass(surface) {
89
+ if (surface === "none")
90
+ return "";
91
+ const pair = getSurfaceTextPair(surface);
92
+ return TEXT_VAR_TO_CLASS[pair.textVar] ?? "";
93
+ }
@@ -9,32 +9,32 @@
9
9
  */
10
10
  export declare const COLORS: {
11
11
  readonly primary: {
12
- readonly DEFAULT: "#84e122";
13
- readonly 50: "#f3ffe3";
14
- readonly 100: "#e4ffc5";
15
- readonly 200: "#c8ff90";
16
- readonly 300: "#a3f550";
17
- readonly 400: "#84e122";
18
- readonly 500: "#65c408";
19
- readonly 600: "#509c02";
20
- readonly 700: "#3e7708";
21
- readonly 800: "#345e0d";
22
- readonly 900: "#2c5011";
23
- readonly 950: "#142d03";
12
+ readonly DEFAULT: "#0d9488";
13
+ readonly 50: "#f0fdfa";
14
+ readonly 100: "#ccfbf1";
15
+ readonly 200: "#99f6e4";
16
+ readonly 300: "#5eead4";
17
+ readonly 400: "#2dd4bf";
18
+ readonly 500: "#14b8a6";
19
+ readonly 600: "#0d9488";
20
+ readonly 700: "#0f766e";
21
+ readonly 800: "#115e59";
22
+ readonly 900: "#134e4a";
23
+ readonly 950: "#042f2e";
24
24
  };
25
25
  readonly secondary: {
26
- readonly DEFAULT: "#e91e8c";
27
- readonly 50: "#fdf0f8";
28
- readonly 100: "#fce2f2";
29
- readonly 200: "#fac6e6";
30
- readonly 300: "#f79dd2";
31
- readonly 400: "#f063b9";
32
- readonly 500: "#e91e8c";
33
- readonly 600: "#d4107a";
34
- readonly 700: "#b00d66";
35
- readonly 800: "#900f56";
36
- readonly 900: "#771249";
37
- readonly 950: "#480525";
26
+ readonly DEFAULT: "#c026d3";
27
+ readonly 50: "#fdf4ff";
28
+ readonly 100: "#fae8ff";
29
+ readonly 200: "#f5d0fe";
30
+ readonly 300: "#f0abfc";
31
+ readonly 400: "#e879f9";
32
+ readonly 500: "#d946ef";
33
+ readonly 600: "#c026d3";
34
+ readonly 700: "#a21caf";
35
+ readonly 800: "#86198f";
36
+ readonly 900: "#701a75";
37
+ readonly 950: "#4a044e";
38
38
  };
39
39
  readonly cobalt: {
40
40
  readonly DEFAULT: "#3570fc";
@@ -65,10 +65,10 @@ export declare const COLORS: {
65
65
  readonly 950: "#222730";
66
66
  };
67
67
  readonly semantic: {
68
- readonly success: "#059669";
69
- readonly warning: "#d97706";
70
- readonly error: "#dc2626";
71
- readonly info: "#0284c7";
68
+ readonly success: "#15803d";
69
+ readonly warning: "#b45309";
70
+ readonly error: "#b91c1c";
71
+ readonly info: "#0369a1";
72
72
  };
73
73
  };
74
74
  export declare const RADIUS: {
@@ -88,8 +88,8 @@ export declare const SHADOWS: {
88
88
  readonly lg: "0 10px 15px -3px rgba(0,0,0,0.1), 0 4px 6px -4px rgba(0,0,0,0.1)";
89
89
  readonly xl: "0 20px 25px -5px rgba(0,0,0,0.1), 0 8px 10px -6px rgba(0,0,0,0.1)";
90
90
  readonly soft: "0 2px 15px -3px rgba(0,0,0,0.07), 0 10px 20px -2px rgba(0,0,0,0.04)";
91
- readonly glow: "0 0 20px rgba(80, 156, 2, 0.45)";
92
- readonly glowPink: "0 0 20px rgba(233, 30, 140, 0.5)";
91
+ readonly glow: "0 0 20px rgba(13, 148, 136, 0.45)";
92
+ readonly glowPink: "0 0 20px rgba(192, 38, 211, 0.5)";
93
93
  };
94
94
  export declare const Z_INDEX: {
95
95
  readonly dropdown: 30;
@@ -114,32 +114,32 @@ export declare function token(name: string): string;
114
114
  export declare const TOKENS: {
115
115
  readonly colors: {
116
116
  readonly primary: {
117
- readonly DEFAULT: "#84e122";
118
- readonly 50: "#f3ffe3";
119
- readonly 100: "#e4ffc5";
120
- readonly 200: "#c8ff90";
121
- readonly 300: "#a3f550";
122
- readonly 400: "#84e122";
123
- readonly 500: "#65c408";
124
- readonly 600: "#509c02";
125
- readonly 700: "#3e7708";
126
- readonly 800: "#345e0d";
127
- readonly 900: "#2c5011";
128
- readonly 950: "#142d03";
117
+ readonly DEFAULT: "#0d9488";
118
+ readonly 50: "#f0fdfa";
119
+ readonly 100: "#ccfbf1";
120
+ readonly 200: "#99f6e4";
121
+ readonly 300: "#5eead4";
122
+ readonly 400: "#2dd4bf";
123
+ readonly 500: "#14b8a6";
124
+ readonly 600: "#0d9488";
125
+ readonly 700: "#0f766e";
126
+ readonly 800: "#115e59";
127
+ readonly 900: "#134e4a";
128
+ readonly 950: "#042f2e";
129
129
  };
130
130
  readonly secondary: {
131
- readonly DEFAULT: "#e91e8c";
132
- readonly 50: "#fdf0f8";
133
- readonly 100: "#fce2f2";
134
- readonly 200: "#fac6e6";
135
- readonly 300: "#f79dd2";
136
- readonly 400: "#f063b9";
137
- readonly 500: "#e91e8c";
138
- readonly 600: "#d4107a";
139
- readonly 700: "#b00d66";
140
- readonly 800: "#900f56";
141
- readonly 900: "#771249";
142
- readonly 950: "#480525";
131
+ readonly DEFAULT: "#c026d3";
132
+ readonly 50: "#fdf4ff";
133
+ readonly 100: "#fae8ff";
134
+ readonly 200: "#f5d0fe";
135
+ readonly 300: "#f0abfc";
136
+ readonly 400: "#e879f9";
137
+ readonly 500: "#d946ef";
138
+ readonly 600: "#c026d3";
139
+ readonly 700: "#a21caf";
140
+ readonly 800: "#86198f";
141
+ readonly 900: "#701a75";
142
+ readonly 950: "#4a044e";
143
143
  };
144
144
  readonly cobalt: {
145
145
  readonly DEFAULT: "#3570fc";
@@ -170,10 +170,10 @@ export declare const TOKENS: {
170
170
  readonly 950: "#222730";
171
171
  };
172
172
  readonly semantic: {
173
- readonly success: "#059669";
174
- readonly warning: "#d97706";
175
- readonly error: "#dc2626";
176
- readonly info: "#0284c7";
173
+ readonly success: "#15803d";
174
+ readonly warning: "#b45309";
175
+ readonly error: "#b91c1c";
176
+ readonly info: "#0369a1";
177
177
  };
178
178
  };
179
179
  readonly radius: {
@@ -193,8 +193,8 @@ export declare const TOKENS: {
193
193
  readonly lg: "0 10px 15px -3px rgba(0,0,0,0.1), 0 4px 6px -4px rgba(0,0,0,0.1)";
194
194
  readonly xl: "0 20px 25px -5px rgba(0,0,0,0.1), 0 8px 10px -6px rgba(0,0,0,0.1)";
195
195
  readonly soft: "0 2px 15px -3px rgba(0,0,0,0.07), 0 10px 20px -2px rgba(0,0,0,0.04)";
196
- readonly glow: "0 0 20px rgba(80, 156, 2, 0.45)";
197
- readonly glowPink: "0 0 20px rgba(233, 30, 140, 0.5)";
196
+ readonly glow: "0 0 20px rgba(13, 148, 136, 0.45)";
197
+ readonly glowPink: "0 0 20px rgba(192, 38, 211, 0.5)";
198
198
  };
199
199
  readonly zIndex: {
200
200
  readonly dropdown: 30;
@@ -10,32 +10,32 @@
10
10
  // --- Brand Colors ----------------------------------------------------------
11
11
  export const COLORS = {
12
12
  primary: {
13
- DEFAULT: "#84e122",
14
- 50: "#f3ffe3",
15
- 100: "#e4ffc5",
16
- 200: "#c8ff90",
17
- 300: "#a3f550",
18
- 400: "#84e122",
19
- 500: "#65c408",
20
- 600: "#509c02",
21
- 700: "#3e7708",
22
- 800: "#345e0d",
23
- 900: "#2c5011",
24
- 950: "#142d03",
13
+ DEFAULT: "#0d9488",
14
+ 50: "#f0fdfa",
15
+ 100: "#ccfbf1",
16
+ 200: "#99f6e4",
17
+ 300: "#5eead4",
18
+ 400: "#2dd4bf",
19
+ 500: "#14b8a6",
20
+ 600: "#0d9488",
21
+ 700: "#0f766e",
22
+ 800: "#115e59",
23
+ 900: "#134e4a",
24
+ 950: "#042f2e",
25
25
  },
26
26
  secondary: {
27
- DEFAULT: "#e91e8c",
28
- 50: "#fdf0f8",
29
- 100: "#fce2f2",
30
- 200: "#fac6e6",
31
- 300: "#f79dd2",
32
- 400: "#f063b9",
33
- 500: "#e91e8c",
34
- 600: "#d4107a",
35
- 700: "#b00d66",
36
- 800: "#900f56",
37
- 900: "#771249",
38
- 950: "#480525",
27
+ DEFAULT: "#c026d3",
28
+ 50: "#fdf4ff",
29
+ 100: "#fae8ff",
30
+ 200: "#f5d0fe",
31
+ 300: "#f0abfc",
32
+ 400: "#e879f9",
33
+ 500: "#d946ef",
34
+ 600: "#c026d3",
35
+ 700: "#a21caf",
36
+ 800: "#86198f",
37
+ 900: "#701a75",
38
+ 950: "#4a044e",
39
39
  },
40
40
  cobalt: {
41
41
  DEFAULT: "#3570fc",
@@ -66,10 +66,10 @@ export const COLORS = {
66
66
  950: "#222730",
67
67
  },
68
68
  semantic: {
69
- success: "#059669",
70
- warning: "#d97706",
71
- error: "#dc2626",
72
- info: "#0284c7",
69
+ success: "#15803d",
70
+ warning: "#b45309",
71
+ error: "#b91c1c",
72
+ info: "#0369a1",
73
73
  },
74
74
  };
75
75
  // --- Border Radius ---------------------------------------------------------
@@ -91,8 +91,8 @@ export const SHADOWS = {
91
91
  lg: "0 10px 15px -3px rgba(0,0,0,0.1), 0 4px 6px -4px rgba(0,0,0,0.1)",
92
92
  xl: "0 20px 25px -5px rgba(0,0,0,0.1), 0 8px 10px -6px rgba(0,0,0,0.1)",
93
93
  soft: "0 2px 15px -3px rgba(0,0,0,0.07), 0 10px 20px -2px rgba(0,0,0,0.04)",
94
- glow: "0 0 20px rgba(80, 156, 2, 0.45)",
95
- glowPink: "0 0 20px rgba(233, 30, 140, 0.5)",
94
+ glow: "0 0 20px rgba(13, 148, 136, 0.45)",
95
+ glowPink: "0 0 20px rgba(192, 38, 211, 0.5)",
96
96
  };
97
97
  // --- Z-index ---------------------------------------------------------------
98
98
  export const Z_INDEX = {
@@ -1,7 +1,8 @@
1
1
  import type { ThemeRecord } from "./types";
2
2
  /**
3
- * Theme template — Cobalt Night. Keeps the cobalt primary but pairs it with
4
- * a deep-blue dark surface instead of hot pink. Mirrors the
3
+ * Theme template — Cobalt Night. Keeps a cobalt-blue primary but pairs it
4
+ * with a deep-blue dark surface a distinct alternate dark palette from the
5
+ * built-in `default-dark` (crimson + cyan since 2026-08-17). Mirrors the
5
6
  * `[data-theme="cobalt-night"]` block in `appkit/src/tokens/tokens.css`.
6
7
  *
7
8
  * Not a built-in (`builtIn: false`) — seeded into `siteSettings.theme.themes`
@@ -1,7 +1,8 @@
1
1
  import { DEFAULT_DARK_THEME } from "./default-dark";
2
2
  /**
3
- * Theme template — Cobalt Night. Keeps the cobalt primary but pairs it with
4
- * a deep-blue dark surface instead of hot pink. Mirrors the
3
+ * Theme template — Cobalt Night. Keeps a cobalt-blue primary but pairs it
4
+ * with a deep-blue dark surface a distinct alternate dark palette from the
5
+ * built-in `default-dark` (crimson + cyan since 2026-08-17). Mirrors the
5
6
  * `[data-theme="cobalt-night"]` block in `appkit/src/tokens/tokens.css`.
6
7
  *
7
8
  * Not a built-in (`builtIn: false`) — seeded into `siteSettings.theme.themes`
@@ -1,6 +1,9 @@
1
1
  import type { ThemeRecord } from "./types";
2
2
  /**
3
- * Built-in dark theme — hot pink unified primary + slate surfaces.
3
+ * Built-in dark theme — crimson red unified primary + cyan secondary-highlight.
4
+ * Rebranded 2026-08-17 from the previous hot-pink identity to match the
5
+ * red/cyan "Meteo L-Drago"-style Beyblade reference art supplied for the
6
+ * rebrand (red metallic body + cyan energy-ring highlight + silver accents).
4
7
  * Mirrors the `[data-theme="dark"]` block in `appkit/src/tokens/tokens.css`.
5
8
  * Cannot be deleted; can be cloned by the admin into a new theme.
6
9
  *
@@ -1,5 +1,8 @@
1
1
  /**
2
- * Built-in dark theme — hot pink unified primary + slate surfaces.
2
+ * Built-in dark theme — crimson red unified primary + cyan secondary-highlight.
3
+ * Rebranded 2026-08-17 from the previous hot-pink identity to match the
4
+ * red/cyan "Meteo L-Drago"-style Beyblade reference art supplied for the
5
+ * rebrand (red metallic body + cyan energy-ring highlight + silver accents).
3
6
  * Mirrors the `[data-theme="dark"]` block in `appkit/src/tokens/tokens.css`.
4
7
  * Cannot be deleted; can be cloned by the admin into a new theme.
5
8
  *
@@ -8,34 +11,34 @@
8
11
  */
9
12
  export const DEFAULT_DARK_THEME = {
10
13
  id: "default-dark",
11
- name: "Default Dark (Hot Pink)",
14
+ name: "Default Dark (Crimson + Cyan)",
12
15
  mode: "dark",
13
16
  builtIn: true,
14
17
  tokens: {
15
- "appkit-color-primary": "#e91e8c",
16
- "appkit-color-primary-50": "#fdf0f8",
17
- "appkit-color-primary-100": "#fce2f2",
18
- "appkit-color-primary-200": "#fac6e6",
19
- "appkit-color-primary-300": "#f79dd2",
20
- "appkit-color-primary-400": "#f063b9",
21
- "appkit-color-primary-500": "#e91e8c",
22
- "appkit-color-primary-600": "#d4107a",
23
- "appkit-color-primary-700": "#b00d66",
24
- "appkit-color-primary-800": "#900f56",
25
- "appkit-color-primary-900": "#771249",
26
- "appkit-color-primary-950": "#480525",
27
- "appkit-color-secondary": "#e91e8c",
28
- "appkit-color-secondary-50": "#fdf0f8",
29
- "appkit-color-secondary-100": "#fce2f2",
30
- "appkit-color-secondary-200": "#fac6e6",
31
- "appkit-color-secondary-300": "#f79dd2",
32
- "appkit-color-secondary-400": "#f063b9",
33
- "appkit-color-secondary-500": "#e91e8c",
34
- "appkit-color-secondary-600": "#d4107a",
35
- "appkit-color-secondary-700": "#b00d66",
36
- "appkit-color-secondary-800": "#900f56",
37
- "appkit-color-secondary-900": "#771249",
38
- "appkit-color-secondary-950": "#480525",
18
+ "appkit-color-primary": "#ef4444",
19
+ "appkit-color-primary-50": "#fef2f2",
20
+ "appkit-color-primary-100": "#fee2e2",
21
+ "appkit-color-primary-200": "#fecaca",
22
+ "appkit-color-primary-300": "#fca5a5",
23
+ "appkit-color-primary-400": "#f87171",
24
+ "appkit-color-primary-500": "#ef4444",
25
+ "appkit-color-primary-600": "#dc2626",
26
+ "appkit-color-primary-700": "#b91c1c",
27
+ "appkit-color-primary-800": "#991b1b",
28
+ "appkit-color-primary-900": "#7f1d1d",
29
+ "appkit-color-primary-950": "#450a0a",
30
+ "appkit-color-secondary": "#06b6d4",
31
+ "appkit-color-secondary-50": "#ecfeff",
32
+ "appkit-color-secondary-100": "#cffafe",
33
+ "appkit-color-secondary-200": "#a5f3fc",
34
+ "appkit-color-secondary-300": "#67e8f9",
35
+ "appkit-color-secondary-400": "#22d3ee",
36
+ "appkit-color-secondary-500": "#06b6d4",
37
+ "appkit-color-secondary-600": "#0891b2",
38
+ "appkit-color-secondary-700": "#0e7490",
39
+ "appkit-color-secondary-800": "#155e75",
40
+ "appkit-color-secondary-900": "#164e63",
41
+ "appkit-color-secondary-950": "#083344",
39
42
  "appkit-color-bg": "#020617",
40
43
  "appkit-color-surface": "#0f172a",
41
44
  "appkit-color-surface-elevated": "rgba(15, 23, 42, 0.9)",
@@ -49,13 +52,13 @@ export const DEFAULT_DARK_THEME = {
49
52
  "appkit-color-success-surface": "rgba(6, 78, 59, 0.25)",
50
53
  "appkit-color-warning": "#fbbf24",
51
54
  "appkit-color-warning-surface": "#1c1508",
52
- "appkit-color-error": "#f87171",
55
+ "appkit-color-error": "#fb7185",
53
56
  "appkit-color-error-surface": "rgba(127, 29, 29, 0.25)",
54
57
  "appkit-color-info": "#38bdf8",
55
58
  "appkit-color-info-surface": "rgba(12, 74, 110, 0.25)",
56
- "appkit-color-focus-ring": "#f063b9",
57
- "appkit-shadow-glow": "0 0 0 1px rgba(233,30,140,0.12), 0 4px 16px -4px rgba(233,30,140,0.22)",
58
- "appkit-shadow-glow-pink": "0 0 0 1px rgba(233,30,140,0.14), 0 4px 20px -4px rgba(233,30,140,0.28)",
59
+ "appkit-color-focus-ring": "#f87171",
60
+ "appkit-shadow-glow": "0 0 0 1px rgba(239,68,68,0.12), 0 4px 16px -4px rgba(239,68,68,0.22)",
61
+ "appkit-shadow-glow-pink": "0 0 0 1px rgba(6,182,212,0.14), 0 4px 20px -4px rgba(6,182,212,0.28)",
59
62
  "appkit-font-display": "var(--font-display), \"Poppins\", ui-sans-serif, system-ui, sans-serif",
60
63
  "appkit-font-sans": "var(--font-body), ui-sans-serif, system-ui, -apple-system, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif",
61
64
  "appkit-font-editorial": "var(--font-editorial), \"Georgia\", serif",
@@ -90,24 +93,24 @@ export const DEFAULT_DARK_THEME = {
90
93
  "appkit-text-5xl": "3rem",
91
94
  },
92
95
  gradients: {
93
- brand: "linear-gradient(to right, var(--appkit-color-primary), var(--appkit-color-info))",
96
+ brand: "linear-gradient(to right, var(--appkit-color-primary), var(--appkit-color-secondary))",
94
97
  "brand-tri": "linear-gradient(to right, var(--appkit-color-primary), var(--appkit-color-secondary), var(--appkit-color-info))",
95
- accent: "linear-gradient(to right, var(--appkit-color-info), var(--appkit-color-primary))",
98
+ accent: "linear-gradient(to right, var(--appkit-color-secondary), var(--appkit-color-primary))",
96
99
  "accent-divider": "linear-gradient(to right, transparent, var(--appkit-color-primary), transparent)",
97
- "page-header": "linear-gradient(to bottom right, rgba(233,30,140,0.10), transparent 60%, transparent)",
100
+ "page-header": "linear-gradient(to bottom right, rgba(239,68,68,0.10), transparent 60%, transparent)",
98
101
  "section-warm": "linear-gradient(to bottom right, var(--appkit-color-warning-surface), transparent)",
99
- "section-cool": "linear-gradient(to bottom right, rgba(56,189,248,0.10), transparent)",
100
- "section-mesh": "radial-gradient(ellipse at top, rgba(233,30,140,0.10), var(--appkit-color-surface), rgba(56,189,248,0.08))",
101
- "accent-banner": "linear-gradient(to right, var(--appkit-color-primary), var(--appkit-color-info))",
102
+ "section-cool": "linear-gradient(to bottom right, rgba(6,182,212,0.10), transparent)",
103
+ "section-mesh": "radial-gradient(ellipse at top, rgba(239,68,68,0.10), var(--appkit-color-surface), rgba(6,182,212,0.08))",
104
+ "accent-banner": "linear-gradient(to right, var(--appkit-color-primary), var(--appkit-color-secondary))",
102
105
  promotion: "linear-gradient(to bottom right, var(--appkit-color-error), var(--appkit-color-primary), var(--appkit-color-warning))",
103
- spotlight: "linear-gradient(to bottom right, rgba(56,189,248,0.10), var(--appkit-color-bg), rgba(56,189,248,0.10))",
106
+ spotlight: "linear-gradient(to bottom right, rgba(6,182,212,0.10), var(--appkit-color-bg), rgba(6,182,212,0.10))",
104
107
  "whatsapp-card": "linear-gradient(to bottom right, var(--appkit-color-success), var(--appkit-color-success))",
105
108
  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))",
106
- "card-indigo": "linear-gradient(to bottom right, rgba(233,30,140,0.10), var(--appkit-color-surface), var(--appkit-color-surface))",
107
- "card-teal": "linear-gradient(to bottom right, rgba(56,189,248,0.10), var(--appkit-color-surface), var(--appkit-color-surface))",
109
+ "card-indigo": "linear-gradient(to bottom right, rgba(239,68,68,0.10), var(--appkit-color-surface), var(--appkit-color-surface))",
110
+ "card-teal": "linear-gradient(to bottom right, rgba(6,182,212,0.10), var(--appkit-color-surface), var(--appkit-color-surface))",
108
111
  "card-amber": "linear-gradient(to bottom right, var(--appkit-color-warning-surface), var(--appkit-color-surface), var(--appkit-color-surface))",
109
112
  "card-rose": "linear-gradient(to bottom right, var(--appkit-color-error-surface), var(--appkit-color-surface), var(--appkit-color-surface))",
110
- logo: "linear-gradient(to right, var(--appkit-color-primary-300) 0%, var(--appkit-color-primary-400) 55%, var(--appkit-color-info) 100%)",
111
- sidebar: "linear-gradient(to bottom, var(--appkit-color-primary), var(--appkit-color-info))",
113
+ logo: "linear-gradient(to right, var(--appkit-color-primary-300) 0%, var(--appkit-color-primary-400) 55%, var(--appkit-color-secondary) 100%)",
114
+ sidebar: "linear-gradient(to bottom, var(--appkit-color-primary), var(--appkit-color-secondary))",
112
115
  },
113
116
  };
@@ -1,6 +1,10 @@
1
1
  import type { ThemeRecord } from "./types";
2
2
  /**
3
- * Built-in light theme — cobalt blue primary + lime green secondary.
3
+ * Built-in light theme — teal-blue primary + magenta secondary-highlight.
4
+ * Rebranded 2026-08-17 from the previous cobalt+lime identity to match the
5
+ * teal/magenta Beyblade reference art supplied for the rebrand (turquoise
6
+ * metallic body + magenta energy-ring highlight + silver accents), paired
7
+ * with the new red/cyan dark theme.
4
8
  * Mirrors the `:root` block in `appkit/src/tokens/tokens.css`.
5
9
  * Cannot be deleted; can be cloned by the admin into a new theme.
6
10
  *