@happyvertical/smrt-ui 0.30.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 (330) hide show
  1. package/AGENTS.md +50 -0
  2. package/CLAUDE.md +1 -0
  3. package/LICENSE +7 -0
  4. package/dist/actions/__tests__/ripple.test.js +28 -0
  5. package/dist/actions/permission.d.ts +34 -0
  6. package/dist/actions/permission.d.ts.map +1 -0
  7. package/dist/actions/permission.js +70 -0
  8. package/dist/actions/ripple.d.ts +7 -0
  9. package/dist/actions/ripple.d.ts.map +1 -0
  10. package/dist/actions/ripple.js +65 -0
  11. package/dist/components/calendar/Calendar.svelte +520 -0
  12. package/dist/components/calendar/Calendar.svelte.d.ts +17 -0
  13. package/dist/components/calendar/Calendar.svelte.d.ts.map +1 -0
  14. package/dist/components/calendar/DayView.svelte +389 -0
  15. package/dist/components/calendar/DayView.svelte.d.ts +13 -0
  16. package/dist/components/calendar/DayView.svelte.d.ts.map +1 -0
  17. package/dist/components/calendar/index.d.ts +6 -0
  18. package/dist/components/calendar/index.d.ts.map +1 -0
  19. package/dist/components/calendar/index.js +5 -0
  20. package/dist/components/chat/MessageBubble.svelte +126 -0
  21. package/dist/components/chat/MessageBubble.svelte.d.ts +30 -0
  22. package/dist/components/chat/MessageBubble.svelte.d.ts.map +1 -0
  23. package/dist/components/chat/ReactionPicker.svelte +89 -0
  24. package/dist/components/chat/ReactionPicker.svelte.d.ts +19 -0
  25. package/dist/components/chat/ReactionPicker.svelte.d.ts.map +1 -0
  26. package/dist/components/chat/TypingIndicator.svelte +90 -0
  27. package/dist/components/chat/TypingIndicator.svelte.d.ts +17 -0
  28. package/dist/components/chat/TypingIndicator.svelte.d.ts.map +1 -0
  29. package/dist/components/chat/__tests__/chat-primitives.test.js +67 -0
  30. package/dist/components/chat/index.d.ts +10 -0
  31. package/dist/components/chat/index.d.ts.map +1 -0
  32. package/dist/components/chat/index.js +9 -0
  33. package/dist/components/data/DataTable.svelte +519 -0
  34. package/dist/components/data/DataTable.svelte.d.ts +49 -0
  35. package/dist/components/data/DataTable.svelte.d.ts.map +1 -0
  36. package/dist/components/data/__tests__/DataTable.test.js +48 -0
  37. package/dist/components/data/__tests__/data-table-helpers.test.js +36 -0
  38. package/dist/components/data/index.d.ts +6 -0
  39. package/dist/components/data/index.d.ts.map +1 -0
  40. package/dist/components/data/index.js +5 -0
  41. package/dist/components/data/types.d.ts +104 -0
  42. package/dist/components/data/types.d.ts.map +1 -0
  43. package/dist/components/data/types.js +45 -0
  44. package/dist/components/display/ConfidenceBadge.svelte +142 -0
  45. package/dist/components/display/ConfidenceBadge.svelte.d.ts +25 -0
  46. package/dist/components/display/ConfidenceBadge.svelte.d.ts.map +1 -0
  47. package/dist/components/display/CurrencyDisplay.svelte +106 -0
  48. package/dist/components/display/CurrencyDisplay.svelte.d.ts +30 -0
  49. package/dist/components/display/CurrencyDisplay.svelte.d.ts.map +1 -0
  50. package/dist/components/display/DateDisplay.svelte +122 -0
  51. package/dist/components/display/DateDisplay.svelte.d.ts +24 -0
  52. package/dist/components/display/DateDisplay.svelte.d.ts.map +1 -0
  53. package/dist/components/display/Icon.svelte +77 -0
  54. package/dist/components/display/Icon.svelte.d.ts +28 -0
  55. package/dist/components/display/Icon.svelte.d.ts.map +1 -0
  56. package/dist/components/display/StatusBadge.svelte +256 -0
  57. package/dist/components/display/StatusBadge.svelte.d.ts +24 -0
  58. package/dist/components/display/StatusBadge.svelte.d.ts.map +1 -0
  59. package/dist/components/display/__tests__/ConfidenceBadge.test.js +96 -0
  60. package/dist/components/display/__tests__/CurrencyDisplay.test.js +114 -0
  61. package/dist/components/display/__tests__/DateDisplay.test.js +114 -0
  62. package/dist/components/display/__tests__/Icon.test.js +93 -0
  63. package/dist/components/display/__tests__/StatusBadge.test.js +98 -0
  64. package/dist/components/display/index.d.ts +10 -0
  65. package/dist/components/display/index.d.ts.map +1 -0
  66. package/dist/components/display/index.js +9 -0
  67. package/dist/components/display/types.d.ts +5 -0
  68. package/dist/components/display/types.d.ts.map +1 -0
  69. package/dist/components/display/types.js +4 -0
  70. package/dist/components/feedback/ConfirmDialog.svelte +226 -0
  71. package/dist/components/feedback/ConfirmDialog.svelte.d.ts +25 -0
  72. package/dist/components/feedback/ConfirmDialog.svelte.d.ts.map +1 -0
  73. package/dist/components/feedback/LoadingOverlay.svelte +281 -0
  74. package/dist/components/feedback/LoadingOverlay.svelte.d.ts +31 -0
  75. package/dist/components/feedback/LoadingOverlay.svelte.d.ts.map +1 -0
  76. package/dist/components/feedback/Modal.svelte +393 -0
  77. package/dist/components/feedback/Modal.svelte.d.ts +46 -0
  78. package/dist/components/feedback/Modal.svelte.d.ts.map +1 -0
  79. package/dist/components/feedback/ProgressBar.svelte +162 -0
  80. package/dist/components/feedback/ProgressBar.svelte.d.ts +21 -0
  81. package/dist/components/feedback/ProgressBar.svelte.d.ts.map +1 -0
  82. package/dist/components/feedback/__tests__/ConfirmDialog.test.js +111 -0
  83. package/dist/components/feedback/__tests__/LoadingOverlay.test.js +99 -0
  84. package/dist/components/feedback/__tests__/Modal.test.js +72 -0
  85. package/dist/components/feedback/__tests__/ProgressBar.test.js +89 -0
  86. package/dist/components/feedback/index.d.ts +8 -0
  87. package/dist/components/feedback/index.d.ts.map +1 -0
  88. package/dist/components/feedback/index.js +10 -0
  89. package/dist/components/layout/Container.svelte +53 -0
  90. package/dist/components/layout/Container.svelte.d.ts +11 -0
  91. package/dist/components/layout/Container.svelte.d.ts.map +1 -0
  92. package/dist/components/layout/EmptyState.svelte +187 -0
  93. package/dist/components/layout/EmptyState.svelte.d.ts +28 -0
  94. package/dist/components/layout/EmptyState.svelte.d.ts.map +1 -0
  95. package/dist/components/layout/Footer.svelte +63 -0
  96. package/dist/components/layout/Footer.svelte.d.ts +8 -0
  97. package/dist/components/layout/Footer.svelte.d.ts.map +1 -0
  98. package/dist/components/layout/Grid.svelte +241 -0
  99. package/dist/components/layout/Grid.svelte.d.ts +56 -0
  100. package/dist/components/layout/Grid.svelte.d.ts.map +1 -0
  101. package/dist/components/layout/Header.svelte +86 -0
  102. package/dist/components/layout/Header.svelte.d.ts +9 -0
  103. package/dist/components/layout/Header.svelte.d.ts.map +1 -0
  104. package/dist/components/layout/Masthead.svelte +219 -0
  105. package/dist/components/layout/Masthead.svelte.d.ts +13 -0
  106. package/dist/components/layout/Masthead.svelte.d.ts.map +1 -0
  107. package/dist/components/layout/PageHeader.svelte +131 -0
  108. package/dist/components/layout/PageHeader.svelte.d.ts +26 -0
  109. package/dist/components/layout/PageHeader.svelte.d.ts.map +1 -0
  110. package/dist/components/layout/SummaryCard.svelte +203 -0
  111. package/dist/components/layout/SummaryCard.svelte.d.ts +20 -0
  112. package/dist/components/layout/SummaryCard.svelte.d.ts.map +1 -0
  113. package/dist/components/layout/__tests__/Container.test.js +62 -0
  114. package/dist/components/layout/__tests__/EmptyState.test.js +83 -0
  115. package/dist/components/layout/__tests__/Footer.test.js +50 -0
  116. package/dist/components/layout/__tests__/Grid.test.js +121 -0
  117. package/dist/components/layout/__tests__/Header.test.js +48 -0
  118. package/dist/components/layout/__tests__/Masthead.test.js +93 -0
  119. package/dist/components/layout/__tests__/PageHeader.test.js +80 -0
  120. package/dist/components/layout/__tests__/SummaryCard.test.js +82 -0
  121. package/dist/components/layout/index.d.ts +12 -0
  122. package/dist/components/layout/index.d.ts.map +1 -0
  123. package/dist/components/layout/index.js +11 -0
  124. package/dist/components/memberships/MembershipCard.svelte +163 -0
  125. package/dist/components/memberships/MembershipCard.svelte.d.ts +12 -0
  126. package/dist/components/memberships/MembershipCard.svelte.d.ts.map +1 -0
  127. package/dist/components/memberships/MembershipList.svelte +98 -0
  128. package/dist/components/memberships/MembershipList.svelte.d.ts +19 -0
  129. package/dist/components/memberships/MembershipList.svelte.d.ts.map +1 -0
  130. package/dist/components/nav/FilterChips.svelte +152 -0
  131. package/dist/components/nav/FilterChips.svelte.d.ts +19 -0
  132. package/dist/components/nav/FilterChips.svelte.d.ts.map +1 -0
  133. package/dist/components/nav/Tabs.svelte +252 -0
  134. package/dist/components/nav/Tabs.svelte.d.ts +34 -0
  135. package/dist/components/nav/Tabs.svelte.d.ts.map +1 -0
  136. package/dist/components/nav/__tests__/FilterChips.test.js +94 -0
  137. package/dist/components/nav/__tests__/Tabs.test.js +128 -0
  138. package/dist/components/nav/index.d.ts +7 -0
  139. package/dist/components/nav/index.d.ts.map +1 -0
  140. package/dist/components/nav/index.js +6 -0
  141. package/dist/components/nav/types.d.ts +24 -0
  142. package/dist/components/nav/types.d.ts.map +1 -0
  143. package/dist/components/nav/types.js +4 -0
  144. package/dist/components/permissions/PermissionCheck.svelte +45 -0
  145. package/dist/components/permissions/PermissionCheck.svelte.d.ts +19 -0
  146. package/dist/components/permissions/PermissionCheck.svelte.d.ts.map +1 -0
  147. package/dist/components/roles/RoleBadge.svelte +84 -0
  148. package/dist/components/roles/RoleBadge.svelte.d.ts +13 -0
  149. package/dist/components/roles/RoleBadge.svelte.d.ts.map +1 -0
  150. package/dist/components/roles/RoleSelector.svelte +216 -0
  151. package/dist/components/roles/RoleSelector.svelte.d.ts +13 -0
  152. package/dist/components/roles/RoleSelector.svelte.d.ts.map +1 -0
  153. package/dist/components/theme/ThemeProvider.svelte +71 -0
  154. package/dist/components/theme/ThemeProvider.svelte.d.ts +10 -0
  155. package/dist/components/theme/ThemeProvider.svelte.d.ts.map +1 -0
  156. package/dist/components/theme/context.svelte.d.ts +15 -0
  157. package/dist/components/theme/context.svelte.d.ts.map +1 -0
  158. package/dist/components/theme/context.svelte.js +42 -0
  159. package/dist/components/theme/index.d.ts +3 -0
  160. package/dist/components/theme/index.d.ts.map +1 -0
  161. package/dist/components/theme/index.js +2 -0
  162. package/dist/components/ui/Avatar.svelte +167 -0
  163. package/dist/components/ui/Avatar.svelte.d.ts +26 -0
  164. package/dist/components/ui/Avatar.svelte.d.ts.map +1 -0
  165. package/dist/components/ui/Badge.svelte +70 -0
  166. package/dist/components/ui/Badge.svelte.d.ts +12 -0
  167. package/dist/components/ui/Badge.svelte.d.ts.map +1 -0
  168. package/dist/components/ui/Button.svelte +226 -0
  169. package/dist/components/ui/Button.svelte.d.ts +28 -0
  170. package/dist/components/ui/Button.svelte.d.ts.map +1 -0
  171. package/dist/components/ui/Card.svelte +122 -0
  172. package/dist/components/ui/Card.svelte.d.ts +15 -0
  173. package/dist/components/ui/Card.svelte.d.ts.map +1 -0
  174. package/dist/components/ui/Chip.svelte +167 -0
  175. package/dist/components/ui/Chip.svelte.d.ts +33 -0
  176. package/dist/components/ui/Chip.svelte.d.ts.map +1 -0
  177. package/dist/components/ui/Dropdown.svelte +250 -0
  178. package/dist/components/ui/Dropdown.svelte.d.ts +20 -0
  179. package/dist/components/ui/Dropdown.svelte.d.ts.map +1 -0
  180. package/dist/components/ui/Pagination.svelte +294 -0
  181. package/dist/components/ui/Pagination.svelte.d.ts +21 -0
  182. package/dist/components/ui/Pagination.svelte.d.ts.map +1 -0
  183. package/dist/components/ui/Skeleton.svelte +113 -0
  184. package/dist/components/ui/Skeleton.svelte.d.ts +24 -0
  185. package/dist/components/ui/Skeleton.svelte.d.ts.map +1 -0
  186. package/dist/components/ui/Tooltip.svelte +120 -0
  187. package/dist/components/ui/Tooltip.svelte.d.ts +24 -0
  188. package/dist/components/ui/Tooltip.svelte.d.ts.map +1 -0
  189. package/dist/components/ui/Tree.svelte +209 -0
  190. package/dist/components/ui/Tree.svelte.d.ts +17 -0
  191. package/dist/components/ui/Tree.svelte.d.ts.map +1 -0
  192. package/dist/components/ui/__tests__/Badge.test.js +76 -0
  193. package/dist/components/ui/__tests__/Button.test.js +69 -0
  194. package/dist/components/ui/__tests__/Card.test.js +103 -0
  195. package/dist/components/ui/__tests__/Pagination.test.js +99 -0
  196. package/dist/components/ui/__tests__/gap-primitives-interactive.test.js +112 -0
  197. package/dist/components/ui/__tests__/gap-primitives.test.js +84 -0
  198. package/dist/components/ui/index.d.ts +14 -0
  199. package/dist/components/ui/index.d.ts.map +1 -0
  200. package/dist/components/ui/index.js +18 -0
  201. package/dist/i18n/Trans.svelte +29 -0
  202. package/dist/i18n/Trans.svelte.d.ts +24 -0
  203. package/dist/i18n/Trans.svelte.d.ts.map +1 -0
  204. package/dist/i18n/__tests__/i18n.test.js +74 -0
  205. package/dist/i18n/__tests__/render-parity.spec.js +37 -0
  206. package/dist/i18n/context.svelte.d.ts +43 -0
  207. package/dist/i18n/context.svelte.d.ts.map +1 -0
  208. package/dist/i18n/context.svelte.js +69 -0
  209. package/dist/i18n/index.d.ts +17 -0
  210. package/dist/i18n/index.d.ts.map +1 -0
  211. package/dist/i18n/index.js +24 -0
  212. package/dist/i18n/registry.d.ts +44 -0
  213. package/dist/i18n/registry.d.ts.map +1 -0
  214. package/dist/i18n/registry.js +60 -0
  215. package/dist/i18n/render.d.ts +22 -0
  216. package/dist/i18n/render.d.ts.map +1 -0
  217. package/dist/i18n/render.js +44 -0
  218. package/dist/i18n/strings.d.ts +7 -0
  219. package/dist/i18n/strings.d.ts.map +1 -0
  220. package/dist/i18n/strings.js +19 -0
  221. package/dist/i18n/strings.ui.d.ts +34 -0
  222. package/dist/i18n/strings.ui.d.ts.map +1 -0
  223. package/dist/i18n/strings.ui.js +44 -0
  224. package/dist/i18n/use-i18n.d.ts +20 -0
  225. package/dist/i18n/use-i18n.d.ts.map +1 -0
  226. package/dist/i18n/use-i18n.js +21 -0
  227. package/dist/index.d.ts +28 -0
  228. package/dist/index.d.ts.map +1 -0
  229. package/dist/index.js +38 -0
  230. package/dist/registry/index.d.ts +6 -0
  231. package/dist/registry/index.d.ts.map +1 -0
  232. package/dist/registry/index.js +4 -0
  233. package/dist/registry/module-registry.d.ts +58 -0
  234. package/dist/registry/module-registry.d.ts.map +1 -0
  235. package/dist/registry/module-registry.js +94 -0
  236. package/dist/styles/index.d.ts +4 -0
  237. package/dist/styles/index.d.ts.map +1 -0
  238. package/dist/styles/index.js +6 -0
  239. package/dist/styles/tokens.css +76 -0
  240. package/dist/test-support/a11y.d.ts +16 -0
  241. package/dist/test-support/a11y.d.ts.map +1 -0
  242. package/dist/test-support/a11y.js +32 -0
  243. package/dist/test-support/setup.d.ts +11 -0
  244. package/dist/test-support/setup.d.ts.map +1 -0
  245. package/dist/test-support/setup.js +33 -0
  246. package/dist/theme/ThemeProvider.svelte +207 -0
  247. package/dist/theme/ThemeProvider.svelte.d.ts +22 -0
  248. package/dist/theme/ThemeProvider.svelte.d.ts.map +1 -0
  249. package/dist/theme/context.d.ts +49 -0
  250. package/dist/theme/context.d.ts.map +1 -0
  251. package/dist/theme/context.js +32 -0
  252. package/dist/theme/index.d.ts +7 -0
  253. package/dist/theme/index.d.ts.map +1 -0
  254. package/dist/theme/index.js +9 -0
  255. package/dist/theme/tokens.d.ts +309 -0
  256. package/dist/theme/tokens.d.ts.map +1 -0
  257. package/dist/theme/tokens.js +418 -0
  258. package/dist/themes/CUSTOM_THEME_GUIDE.md +341 -0
  259. package/dist/themes/README.md +675 -0
  260. package/dist/themes/ThemeProvider.svelte +275 -0
  261. package/dist/themes/ThemeProvider.svelte.d.ts +24 -0
  262. package/dist/themes/ThemeProvider.svelte.d.ts.map +1 -0
  263. package/dist/themes/__tests__/css-generator.test.js +32 -0
  264. package/dist/themes/__tests__/registry.test.js +43 -0
  265. package/dist/themes/__tests__/token-aliases.test.js +176 -0
  266. package/dist/themes/components/ColorSchemeToggle.svelte +205 -0
  267. package/dist/themes/components/ColorSchemeToggle.svelte.d.ts +14 -0
  268. package/dist/themes/components/ColorSchemeToggle.svelte.d.ts.map +1 -0
  269. package/dist/themes/components/ThemeSwitcher.svelte +188 -0
  270. package/dist/themes/components/ThemeSwitcher.svelte.d.ts +14 -0
  271. package/dist/themes/components/ThemeSwitcher.svelte.d.ts.map +1 -0
  272. package/dist/themes/components/index.d.ts +8 -0
  273. package/dist/themes/components/index.d.ts.map +1 -0
  274. package/dist/themes/components/index.js +7 -0
  275. package/dist/themes/context.svelte.d.ts +30 -0
  276. package/dist/themes/context.svelte.d.ts.map +1 -0
  277. package/dist/themes/context.svelte.js +42 -0
  278. package/dist/themes/create-theme.d.ts +99 -0
  279. package/dist/themes/create-theme.d.ts.map +1 -0
  280. package/dist/themes/create-theme.js +389 -0
  281. package/dist/themes/css-generator.d.ts +44 -0
  282. package/dist/themes/css-generator.d.ts.map +1 -0
  283. package/dist/themes/css-generator.js +226 -0
  284. package/dist/themes/glass/index.d.ts +14 -0
  285. package/dist/themes/glass/index.d.ts.map +1 -0
  286. package/dist/themes/glass/index.js +286 -0
  287. package/dist/themes/index.d.ts +31 -0
  288. package/dist/themes/index.d.ts.map +1 -0
  289. package/dist/themes/index.js +37 -0
  290. package/dist/themes/material/index.d.ts +13 -0
  291. package/dist/themes/material/index.d.ts.map +1 -0
  292. package/dist/themes/material/index.js +269 -0
  293. package/dist/themes/registry.d.ts +64 -0
  294. package/dist/themes/registry.d.ts.map +1 -0
  295. package/dist/themes/registry.js +122 -0
  296. package/dist/themes/shared.d.ts +78 -0
  297. package/dist/themes/shared.d.ts.map +1 -0
  298. package/dist/themes/shared.js +179 -0
  299. package/dist/themes/studio/index.d.ts +14 -0
  300. package/dist/themes/studio/index.d.ts.map +1 -0
  301. package/dist/themes/studio/index.js +270 -0
  302. package/dist/themes/styles/all.css +12 -0
  303. package/dist/themes/styles/glass.css +432 -0
  304. package/dist/themes/styles/index.d.ts +22 -0
  305. package/dist/themes/styles/index.d.ts.map +1 -0
  306. package/dist/themes/styles/index.js +23 -0
  307. package/dist/themes/styles/material.css +364 -0
  308. package/dist/themes/styles/studio.css +416 -0
  309. package/dist/themes/types.d.ts +273 -0
  310. package/dist/themes/types.d.ts.map +1 -0
  311. package/dist/themes/types.js +15 -0
  312. package/dist/types-generic.d.ts +75 -0
  313. package/dist/types-generic.d.ts.map +1 -0
  314. package/dist/types-generic.js +1 -0
  315. package/dist/utils/forms/__tests__/formatters.test.js +27 -0
  316. package/dist/utils/forms/formatters.d.ts +14 -0
  317. package/dist/utils/forms/formatters.d.ts.map +1 -0
  318. package/dist/utils/forms/formatters.js +77 -0
  319. package/dist/utils/import-optional.d.ts +5 -0
  320. package/dist/utils/import-optional.d.ts.map +1 -0
  321. package/dist/utils/import-optional.js +7 -0
  322. package/dist/utils/theme/__tests__/color.test.js +72 -0
  323. package/dist/utils/theme/__tests__/typography.test.js +11 -0
  324. package/dist/utils/theme/color.d.ts +70 -0
  325. package/dist/utils/theme/color.d.ts.map +1 -0
  326. package/dist/utils/theme/color.js +221 -0
  327. package/dist/utils/theme/typography.d.ts +27 -0
  328. package/dist/utils/theme/typography.d.ts.map +1 -0
  329. package/dist/utils/theme/typography.js +30 -0
  330. package/package.json +143 -0
@@ -0,0 +1,64 @@
1
+ /**
2
+ * Theme Registry
3
+ *
4
+ * Central registry for all available themes. Provides utilities for
5
+ * theme lookup, validation, and management.
6
+ */
7
+ import type { Theme, ThemePreset } from './types.js';
8
+ /**
9
+ * Map of all built-in themes
10
+ */
11
+ export declare const themes: Record<ThemePreset, Theme>;
12
+ /**
13
+ * List of available theme presets (built-in only)
14
+ */
15
+ export declare const availablePresets: ThemePreset[];
16
+ /**
17
+ * Get a theme by preset name
18
+ * Checks built-in themes first, then custom registered themes
19
+ * @param preset - Theme preset identifier
20
+ * @returns The theme definition
21
+ * @throws Error if preset is invalid
22
+ */
23
+ export declare function getTheme(preset: ThemePreset): Theme;
24
+ /**
25
+ * Check if a preset is valid (built-in or custom)
26
+ * @param preset - Value to check
27
+ * @returns True if valid theme preset
28
+ */
29
+ export declare function isValidPreset(preset: string): preset is ThemePreset;
30
+ /**
31
+ * Get theme display name
32
+ * @param preset - Theme preset
33
+ * @returns Human-readable theme name
34
+ */
35
+ export declare function getThemeName(preset: ThemePreset): string;
36
+ /**
37
+ * Get all themes as array (built-in only)
38
+ * @returns Array of theme definitions
39
+ */
40
+ export declare function getAllThemes(): Theme[];
41
+ /**
42
+ * Get theme options for UI selection
43
+ * @returns Array of {value, label} objects
44
+ */
45
+ export declare function getThemeOptions(): {
46
+ value: ThemePreset;
47
+ label: string;
48
+ }[];
49
+ /**
50
+ * Register a custom theme in the registry
51
+ * @internal Use registerTheme from create-theme.ts instead
52
+ */
53
+ export declare function registerCustomTheme(theme: Theme): void;
54
+ /**
55
+ * Get a custom theme by id
56
+ * @internal
57
+ */
58
+ export declare function getCustomTheme(id: string): Theme | undefined;
59
+ /**
60
+ * Check if a custom theme is registered
61
+ * @internal
62
+ */
63
+ export declare function hasCustomTheme(id: string): boolean;
64
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/themes/registry.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAErD;;GAEG;AACH,eAAO,MAAM,MAAM,EAAE,MAAM,CAAC,WAAW,EAAE,KAAK,CAI7C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,WAAW,EAAoC,CAAC;AAE/E;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,KAAK,CAiBnD;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,IAAI,WAAW,CAInE;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAMxD;AAED;;;GAGG;AACH,wBAAgB,YAAY,IAAI,KAAK,EAAE,CAEtC;AAED;;;GAGG;AACH,wBAAgB,eAAe,IAAI;IAAE,KAAK,EAAE,WAAW,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EAAE,CASzE;AAOD;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAEtD;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,KAAK,GAAG,SAAS,CAE5D;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAElD"}
@@ -0,0 +1,122 @@
1
+ /**
2
+ * Theme Registry
3
+ *
4
+ * Central registry for all available themes. Provides utilities for
5
+ * theme lookup, validation, and management.
6
+ */
7
+ import { glassTheme } from './glass/index.js';
8
+ import { materialTheme } from './material/index.js';
9
+ import { studioTheme } from './studio/index.js';
10
+ /**
11
+ * Map of all built-in themes
12
+ */
13
+ export const themes = {
14
+ material: materialTheme,
15
+ glass: glassTheme,
16
+ studio: studioTheme,
17
+ };
18
+ /**
19
+ * List of available theme presets (built-in only)
20
+ */
21
+ export const availablePresets = ['material', 'glass', 'studio'];
22
+ /**
23
+ * Get a theme by preset name
24
+ * Checks built-in themes first, then custom registered themes
25
+ * @param preset - Theme preset identifier
26
+ * @returns The theme definition
27
+ * @throws Error if preset is invalid
28
+ */
29
+ export function getTheme(preset) {
30
+ // Check built-in themes first
31
+ const builtInTheme = themes[preset];
32
+ if (builtInTheme) {
33
+ return builtInTheme;
34
+ }
35
+ // Check custom themes (imported dynamically to avoid circular deps)
36
+ // This will be populated by registerTheme from create-theme.ts
37
+ const customTheme = getCustomTheme(preset);
38
+ if (customTheme) {
39
+ return customTheme;
40
+ }
41
+ throw new Error(`Unknown theme preset: ${preset}. Available: ${getAllPresetNames().join(', ')}`);
42
+ }
43
+ /**
44
+ * Check if a preset is valid (built-in or custom)
45
+ * @param preset - Value to check
46
+ * @returns True if valid theme preset
47
+ */
48
+ export function isValidPreset(preset) {
49
+ return (availablePresets.includes(preset) || hasCustomTheme(preset));
50
+ }
51
+ /**
52
+ * Get theme display name
53
+ * @param preset - Theme preset
54
+ * @returns Human-readable theme name
55
+ */
56
+ export function getThemeName(preset) {
57
+ const theme = themes[preset];
58
+ if (theme)
59
+ return theme.name;
60
+ const customTheme = getCustomTheme(preset);
61
+ return customTheme?.name ?? preset;
62
+ }
63
+ /**
64
+ * Get all themes as array (built-in only)
65
+ * @returns Array of theme definitions
66
+ */
67
+ export function getAllThemes() {
68
+ return Object.values(themes);
69
+ }
70
+ /**
71
+ * Get theme options for UI selection
72
+ * @returns Array of {value, label} objects
73
+ */
74
+ export function getThemeOptions() {
75
+ const builtInOptions = availablePresets.map((preset) => ({
76
+ value: preset,
77
+ label: themes[preset].name,
78
+ }));
79
+ const customOptions = getCustomThemeOptions();
80
+ return [...builtInOptions, ...customOptions];
81
+ }
82
+ // --- Custom Theme Support ---
83
+ // WeakMap to store custom themes without polluting module scope
84
+ const customThemeRegistry = new Map();
85
+ /**
86
+ * Register a custom theme in the registry
87
+ * @internal Use registerTheme from create-theme.ts instead
88
+ */
89
+ export function registerCustomTheme(theme) {
90
+ customThemeRegistry.set(theme.id, theme);
91
+ }
92
+ /**
93
+ * Get a custom theme by id
94
+ * @internal
95
+ */
96
+ export function getCustomTheme(id) {
97
+ return customThemeRegistry.get(id);
98
+ }
99
+ /**
100
+ * Check if a custom theme is registered
101
+ * @internal
102
+ */
103
+ export function hasCustomTheme(id) {
104
+ return customThemeRegistry.has(id);
105
+ }
106
+ /**
107
+ * Get all custom theme options for UI
108
+ * @internal
109
+ */
110
+ function getCustomThemeOptions() {
111
+ return Array.from(customThemeRegistry.entries()).map(([id, theme]) => ({
112
+ value: id,
113
+ label: theme.name,
114
+ }));
115
+ }
116
+ /**
117
+ * Get all preset names including custom themes
118
+ * @internal
119
+ */
120
+ function getAllPresetNames() {
121
+ return [...availablePresets, ...customThemeRegistry.keys()];
122
+ }
@@ -0,0 +1,78 @@
1
+ /**
2
+ * Shared Theme Tokens
3
+ *
4
+ * Common spacing, border radius, and duration scales used across all themes.
5
+ */
6
+ import type { BorderRadiusScale, DurationScale, EasingScale, SpacingScale } from './types.js';
7
+ /**
8
+ * Shared spacing scale (consistent across all themes)
9
+ */
10
+ export declare const spacingScale: SpacingScale;
11
+ /**
12
+ * Material-3 spacing aliases (issue #1431).
13
+ *
14
+ * Components authored against Material-3 vocabulary consume `--smrt-spacing-sm`
15
+ * / `-md` / `-xl` etc. The numeric scale above is canonical; these aliases map
16
+ * the named sizes onto numeric-scale keys so both vocabularies resolve. Emitted
17
+ * in addition to (never instead of) the numeric scale.
18
+ */
19
+ export declare const spacingAliases: Record<string, keyof SpacingScale>;
20
+ /**
21
+ * Shared border radius scale
22
+ */
23
+ export declare const borderRadiusScale: BorderRadiusScale;
24
+ /**
25
+ * Material-3 border-radius aliases (issue #1431).
26
+ *
27
+ * Maps Material-3 named radii (`extra-small` … `extra-large`) onto the
28
+ * canonical t-shirt scale. Emitted in addition to the canonical names.
29
+ */
30
+ export declare const borderRadiusAliases: Record<string, keyof BorderRadiusScale>;
31
+ /**
32
+ * Shared duration scale
33
+ */
34
+ export declare const durationScale: DurationScale;
35
+ /**
36
+ * Material-3 motion-duration aliases (issue #1431).
37
+ *
38
+ * Components consume Material-3 motion tokens (`short2`, `short3`, `medium1`…).
39
+ * These map onto absolute millisecond values following the M3 motion spec
40
+ * (short1=50 … long4=600). Emitted in addition to the canonical
41
+ * instant/fast/normal/slow/slower scale so both vocabularies resolve.
42
+ */
43
+ export declare const durationAliases: Record<string, string>;
44
+ /**
45
+ * Shared font-family aliases (issue #1431).
46
+ *
47
+ * The base body font is `--smrt-font-family`; components also reference a
48
+ * monospace family. Emitted as an explicit token so monospace surfaces (code,
49
+ * transcripts, module IDs) are themeable rather than frozen at a fallback.
50
+ */
51
+ export declare const fontFamilyAliases: Record<string, string>;
52
+ /**
53
+ * Shared named font-weight tokens (issue #1431).
54
+ *
55
+ * The typography scale exposes per-variant weights; these named weights cover
56
+ * generic emphasis (badges, progress labels) that aren't tied to a variant.
57
+ */
58
+ export declare const fontWeightTokens: Record<string, string>;
59
+ /**
60
+ * Shared z-index scale (issue #1431).
61
+ *
62
+ * Stacking-context tokens for overlay surfaces so consumers stop hardcoding
63
+ * magic numbers and overlays can be re-layered theme-wide.
64
+ */
65
+ export declare const zIndexTokens: Record<string, string>;
66
+ /**
67
+ * Material Design 3 easings
68
+ */
69
+ export declare const materialEasing: EasingScale;
70
+ /**
71
+ * Apple-style easings (for Glass theme)
72
+ */
73
+ export declare const appleEasing: EasingScale;
74
+ /**
75
+ * Studio-style easings (for Studio theme - snappier)
76
+ */
77
+ export declare const studioEasing: EasingScale;
78
+ //# sourceMappingURL=shared.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../src/themes/shared.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,iBAAiB,EACjB,aAAa,EACb,WAAW,EACX,YAAY,EACb,MAAM,YAAY,CAAC;AAEpB;;GAEG;AACH,eAAO,MAAM,YAAY,EAAE,YAsB1B,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,YAAY,CAQ7D,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,iBAS/B,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,iBAAiB,CAMvE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,aAM3B,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAalD,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAEpD,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAKnD,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAW/C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,WAO5B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,WAAW,EAAE,WAOzB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,YAAY,EAAE,WAO1B,CAAC"}
@@ -0,0 +1,179 @@
1
+ /**
2
+ * Shared Theme Tokens
3
+ *
4
+ * Common spacing, border radius, and duration scales used across all themes.
5
+ */
6
+ /**
7
+ * Shared spacing scale (consistent across all themes)
8
+ */
9
+ export const spacingScale = {
10
+ 0: '0',
11
+ 0.5: '0.125rem',
12
+ 1: '0.25rem',
13
+ 1.5: '0.375rem',
14
+ 2: '0.5rem',
15
+ 2.5: '0.625rem',
16
+ 3: '0.75rem',
17
+ 3.5: '0.875rem',
18
+ 4: '1rem',
19
+ 5: '1.25rem',
20
+ 6: '1.5rem',
21
+ 7: '1.75rem',
22
+ 8: '2rem',
23
+ 9: '2.25rem',
24
+ 10: '2.5rem',
25
+ 11: '2.75rem',
26
+ 12: '3rem',
27
+ 14: '3.5rem',
28
+ 16: '4rem',
29
+ 20: '5rem',
30
+ 24: '6rem',
31
+ };
32
+ /**
33
+ * Material-3 spacing aliases (issue #1431).
34
+ *
35
+ * Components authored against Material-3 vocabulary consume `--smrt-spacing-sm`
36
+ * / `-md` / `-xl` etc. The numeric scale above is canonical; these aliases map
37
+ * the named sizes onto numeric-scale keys so both vocabularies resolve. Emitted
38
+ * in addition to (never instead of) the numeric scale.
39
+ */
40
+ export const spacingAliases = {
41
+ xs: 1, // 0.25rem
42
+ sm: 2, // 0.5rem
43
+ md: 4, // 1rem
44
+ lg: 6, // 1.5rem
45
+ xl: 8, // 2rem
46
+ '2xl': 12, // 3rem
47
+ '3xl': 16, // 4rem
48
+ };
49
+ /**
50
+ * Shared border radius scale
51
+ */
52
+ export const borderRadiusScale = {
53
+ none: '0',
54
+ sm: '0.25rem',
55
+ md: '0.5rem',
56
+ lg: '0.75rem',
57
+ xl: '1rem',
58
+ '2xl': '1.5rem',
59
+ '3xl': '2rem',
60
+ full: '9999px',
61
+ };
62
+ /**
63
+ * Material-3 border-radius aliases (issue #1431).
64
+ *
65
+ * Maps Material-3 named radii (`extra-small` … `extra-large`) onto the
66
+ * canonical t-shirt scale. Emitted in addition to the canonical names.
67
+ */
68
+ export const borderRadiusAliases = {
69
+ 'extra-small': 'sm',
70
+ small: 'sm',
71
+ medium: 'md',
72
+ large: 'lg',
73
+ 'extra-large': 'xl',
74
+ };
75
+ /**
76
+ * Shared duration scale
77
+ */
78
+ export const durationScale = {
79
+ instant: '0ms',
80
+ fast: '100ms',
81
+ normal: '200ms',
82
+ slow: '300ms',
83
+ slower: '500ms',
84
+ };
85
+ /**
86
+ * Material-3 motion-duration aliases (issue #1431).
87
+ *
88
+ * Components consume Material-3 motion tokens (`short2`, `short3`, `medium1`…).
89
+ * These map onto absolute millisecond values following the M3 motion spec
90
+ * (short1=50 … long4=600). Emitted in addition to the canonical
91
+ * instant/fast/normal/slow/slower scale so both vocabularies resolve.
92
+ */
93
+ export const durationAliases = {
94
+ short1: '50ms',
95
+ short2: '100ms',
96
+ short3: '150ms',
97
+ short4: '200ms',
98
+ medium1: '250ms',
99
+ medium2: '300ms',
100
+ medium3: '350ms',
101
+ medium4: '400ms',
102
+ long1: '450ms',
103
+ long2: '500ms',
104
+ long3: '550ms',
105
+ long4: '600ms',
106
+ };
107
+ /**
108
+ * Shared font-family aliases (issue #1431).
109
+ *
110
+ * The base body font is `--smrt-font-family`; components also reference a
111
+ * monospace family. Emitted as an explicit token so monospace surfaces (code,
112
+ * transcripts, module IDs) are themeable rather than frozen at a fallback.
113
+ */
114
+ export const fontFamilyAliases = {
115
+ mono: 'ui-monospace, "SF Mono", "Monaco", "Cascadia Code", "Consolas", monospace',
116
+ };
117
+ /**
118
+ * Shared named font-weight tokens (issue #1431).
119
+ *
120
+ * The typography scale exposes per-variant weights; these named weights cover
121
+ * generic emphasis (badges, progress labels) that aren't tied to a variant.
122
+ */
123
+ export const fontWeightTokens = {
124
+ normal: '400',
125
+ medium: '500',
126
+ semibold: '600',
127
+ bold: '700',
128
+ };
129
+ /**
130
+ * Shared z-index scale (issue #1431).
131
+ *
132
+ * Stacking-context tokens for overlay surfaces so consumers stop hardcoding
133
+ * magic numbers and overlays can be re-layered theme-wide.
134
+ */
135
+ export const zIndexTokens = {
136
+ dropdown: '1000',
137
+ sticky: '1100',
138
+ overlay: '1200',
139
+ modal: '1300',
140
+ dialog: '1300',
141
+ popover: '1400',
142
+ toast: '1500',
143
+ tooltip: '1600',
144
+ // Full-screen blocking loaders must sit above ALL other layers (#1373).
145
+ loading: '1700',
146
+ };
147
+ /**
148
+ * Material Design 3 easings
149
+ */
150
+ export const materialEasing = {
151
+ standard: 'cubic-bezier(0.2, 0, 0, 1)',
152
+ standardDecelerate: 'cubic-bezier(0, 0, 0.2, 1)',
153
+ standardAccelerate: 'cubic-bezier(0.3, 0, 1, 1)',
154
+ emphasized: 'cubic-bezier(0.2, 0, 0, 1)',
155
+ emphasizedDecelerate: 'cubic-bezier(0.05, 0.7, 0.1, 1)',
156
+ emphasizedAccelerate: 'cubic-bezier(0.3, 0, 0.8, 0.15)',
157
+ };
158
+ /**
159
+ * Apple-style easings (for Glass theme)
160
+ */
161
+ export const appleEasing = {
162
+ standard: 'cubic-bezier(0.4, 0, 0.2, 1)',
163
+ standardDecelerate: 'cubic-bezier(0, 0, 0.2, 1)',
164
+ standardAccelerate: 'cubic-bezier(0.4, 0, 1, 1)',
165
+ emphasized: 'cubic-bezier(0.2, 0.8, 0.2, 1)',
166
+ emphasizedDecelerate: 'cubic-bezier(0.16, 1, 0.3, 1)',
167
+ emphasizedAccelerate: 'cubic-bezier(0.4, 0, 0.2, 1)',
168
+ };
169
+ /**
170
+ * Studio-style easings (for Studio theme - snappier)
171
+ */
172
+ export const studioEasing = {
173
+ standard: 'cubic-bezier(0.4, 0, 0.2, 1)',
174
+ standardDecelerate: 'cubic-bezier(0, 0, 0.2, 1)',
175
+ standardAccelerate: 'cubic-bezier(0.4, 0, 1, 1)',
176
+ emphasized: 'cubic-bezier(0.25, 0.1, 0.25, 1)',
177
+ emphasizedDecelerate: 'cubic-bezier(0.0, 0, 0.2, 1)',
178
+ emphasizedAccelerate: 'cubic-bezier(0.4, 0, 1, 1)',
179
+ };
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Studio Theme
3
+ *
4
+ * Google AI Studio-inspired flat design theme.
5
+ * Minimal shadows, monochromatic base with vibrant accents,
6
+ * clean lines, and a focus on content clarity.
7
+ */
8
+ import type { Theme } from '../types.js';
9
+ /**
10
+ * Studio theme definition
11
+ */
12
+ export declare const studioTheme: Theme;
13
+ export default studioTheme;
14
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/themes/studio/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAQH,OAAO,KAAK,EAGV,KAAK,EAEN,MAAM,aAAa,CAAC;AA+QrB;;GAEG;AACH,eAAO,MAAM,WAAW,EAAE,KAYzB,CAAC;AAEF,eAAe,WAAW,CAAC"}