@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,24 @@
1
+ /**
2
+ * @happyvertical/smrt-ui/i18n — client i18n layer (Sweep S13 #1418).
3
+ *
4
+ * Browser-safe. Provides `defineMessages` (register a package's English code
5
+ * defaults), `useI18n()` / `<Trans>` (read + render translations), and the
6
+ * context plumbing the `Provider` uses. The server-side snapshot builder lives
7
+ * on the `./i18n/server` subpath (it pulls the full languages resolver).
8
+ *
9
+ * See `docs/content/architecture/i18n.md` for the design.
10
+ */
11
+ export { createI18nContext, getI18nContext, I18nStore, setI18nContext, tryGetI18nContext, } from './context.svelte.js';
12
+ export { clearRegisteredMessages, defineMessages, getRegisteredDefault, getRegisteredDefaults, } from './registry.js';
13
+ export { default as Trans } from './Trans.svelte';
14
+ // Side-effect: register smrt-ui's own primitive (`ui.*`) English code defaults
15
+ // (DataTable etc.) so a single `@happyvertical/smrt-ui/i18n` import makes every
16
+ // library primitive key resolvable — including in a server snapshot built
17
+ // without loading the components themselves. `strings.ui.js` is registered via
18
+ // the `M` re-export below; this covers the `strings.ts` catalog too.
19
+ import './strings.js';
20
+ // smrt-ui primitive (`ui.*`) English code-default catalog. Re-exported so
21
+ // consumers (e.g. smrt-svelte composites) can register the same defaults via a
22
+ // single `@happyvertical/smrt-ui/i18n` import.
23
+ export { M } from './strings.ui.js';
24
+ export { useI18n } from './use-i18n.js';
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Client-safe message-default registry (i18n, Sweep S13 #1418).
3
+ *
4
+ * `defineMessages` records a package's English code defaults in a process-global
5
+ * map. This module imports nothing from `@happyvertical/smrt-languages` — it is
6
+ * safe in any bundle (browser included). Two consumers read the map:
7
+ *
8
+ * - The client `$t` / `<Trans>` fall back to the registered default when no
9
+ * server snapshot is present (standalone components, tests), so a string is
10
+ * never blank.
11
+ * - The server `buildI18nSnapshot` (`./i18n/server`) seeds
12
+ * `@happyvertical/smrt-languages`'s `LanguageRegistry` from these defaults
13
+ * before resolving the override/tenant/locale chain.
14
+ *
15
+ * Keys follow `<package>.<component>.<descriptor>` (see the i18n ADR); smrt-svelte
16
+ * primitives use the `ui` namespace.
17
+ */
18
+ /** A catalog of message keys → English code default templates. */
19
+ export type MessageCatalog = Record<string, string>;
20
+ /**
21
+ * Register a package's English code defaults. Idempotent for an identical
22
+ * template; throws if a key is redefined with a different default (mirrors
23
+ * `LanguageRegistry.register`, surfacing accidental key collisions loudly).
24
+ *
25
+ * Returns a typed **key map** (each key mapped to itself) so call sites get
26
+ * autocomplete and typo-safety, and so the import is a *used* binding that
27
+ * tree-shaking cannot drop (which would silently skip registration):
28
+ *
29
+ * ```ts
30
+ * export const M = defineMessages({ 'ui.data_table.empty': 'No data available' });
31
+ * // M['ui.data_table.empty'] === 'ui.data_table.empty' (typed as the literal)
32
+ * t(M['ui.data_table.empty']);
33
+ * ```
34
+ */
35
+ export declare function defineMessages<T extends MessageCatalog>(catalog: T): {
36
+ readonly [K in keyof T]: K;
37
+ };
38
+ /** The registered English default for a key, or `undefined`. */
39
+ export declare function getRegisteredDefault(key: string): string | undefined;
40
+ /** A snapshot of every registered `(key, English default)` pair. */
41
+ export declare function getRegisteredDefaults(): Record<string, string>;
42
+ /** Test-only: clear the registry so module-cache tests start clean. */
43
+ export declare function clearRegisteredMessages(): void;
44
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/i18n/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,kEAAkE;AAClE,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAIpD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,cAAc,CAAC,CAAC,SAAS,cAAc,EACrD,OAAO,EAAE,CAAC,GACT;IAAE,QAAQ,EAAE,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC;CAAE,CAgBhC;AAED,gEAAgE;AAChE,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAEpE;AAED,oEAAoE;AACpE,wBAAgB,qBAAqB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAE9D;AAED,uEAAuE;AACvE,wBAAgB,uBAAuB,IAAI,IAAI,CAE9C"}
@@ -0,0 +1,60 @@
1
+ /**
2
+ * Client-safe message-default registry (i18n, Sweep S13 #1418).
3
+ *
4
+ * `defineMessages` records a package's English code defaults in a process-global
5
+ * map. This module imports nothing from `@happyvertical/smrt-languages` — it is
6
+ * safe in any bundle (browser included). Two consumers read the map:
7
+ *
8
+ * - The client `$t` / `<Trans>` fall back to the registered default when no
9
+ * server snapshot is present (standalone components, tests), so a string is
10
+ * never blank.
11
+ * - The server `buildI18nSnapshot` (`./i18n/server`) seeds
12
+ * `@happyvertical/smrt-languages`'s `LanguageRegistry` from these defaults
13
+ * before resolving the override/tenant/locale chain.
14
+ *
15
+ * Keys follow `<package>.<component>.<descriptor>` (see the i18n ADR); smrt-svelte
16
+ * primitives use the `ui` namespace.
17
+ */
18
+ const defaults = new Map();
19
+ /**
20
+ * Register a package's English code defaults. Idempotent for an identical
21
+ * template; throws if a key is redefined with a different default (mirrors
22
+ * `LanguageRegistry.register`, surfacing accidental key collisions loudly).
23
+ *
24
+ * Returns a typed **key map** (each key mapped to itself) so call sites get
25
+ * autocomplete and typo-safety, and so the import is a *used* binding that
26
+ * tree-shaking cannot drop (which would silently skip registration):
27
+ *
28
+ * ```ts
29
+ * export const M = defineMessages({ 'ui.data_table.empty': 'No data available' });
30
+ * // M['ui.data_table.empty'] === 'ui.data_table.empty' (typed as the literal)
31
+ * t(M['ui.data_table.empty']);
32
+ * ```
33
+ */
34
+ export function defineMessages(catalog) {
35
+ const keys = {};
36
+ for (const [key, template] of Object.entries(catalog)) {
37
+ if (!key || key.trim() === '') {
38
+ throw new Error('defineMessages: message keys must be non-empty');
39
+ }
40
+ const existing = defaults.get(key);
41
+ if (existing !== undefined && existing !== template) {
42
+ throw new Error(`defineMessages: message "${key}" is already registered with a different default`);
43
+ }
44
+ defaults.set(key, template);
45
+ keys[key] = key;
46
+ }
47
+ return keys;
48
+ }
49
+ /** The registered English default for a key, or `undefined`. */
50
+ export function getRegisteredDefault(key) {
51
+ return defaults.get(key);
52
+ }
53
+ /** A snapshot of every registered `(key, English default)` pair. */
54
+ export function getRegisteredDefaults() {
55
+ return Object.fromEntries(defaults);
56
+ }
57
+ /** Test-only: clear the registry so module-cache tests start clean. */
58
+ export function clearRegisteredMessages() {
59
+ defaults.clear();
60
+ }
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Client-side `{var}` interpolation (i18n, Sweep S13 #1418).
3
+ *
4
+ * A small, dependency-free copy of `@happyvertical/smrt-languages`'s
5
+ * `renderTemplate`. The client deliberately does NOT import the languages
6
+ * package: it is an optional peer with a heavy server dependency tree
7
+ * (smrt-core, sql, ai, jobs…), and importing it from the always-bundled client
8
+ * path (`Provider` → `/i18n`) would force every smrt-svelte consumer — including
9
+ * downstream SvelteKit apps — to install that tree. The contract is tiny and
10
+ * stable, so the client owns it; `__tests__/render-parity.spec.ts` pins it
11
+ * against the canonical languages implementation so the two never drift.
12
+ */
13
+ /** Variables substituted into `{var}` placeholders. */
14
+ export type LanguageVariables = Record<string, unknown>;
15
+ /**
16
+ * Render `{var}` placeholders against the supplied variables. Matches the
17
+ * languages resolver's contract: `Date` → ISO string, array/object → JSON,
18
+ * `null` / `undefined` → empty string; an empty/absent `variables` returns the
19
+ * template unchanged (fast path).
20
+ */
21
+ export declare function renderTemplate(template: string, variables?: LanguageVariables): string;
22
+ //# sourceMappingURL=render.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../src/i18n/render.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,uDAAuD;AACvD,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAMxD;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,MAAM,EAChB,SAAS,CAAC,EAAE,iBAAiB,GAC5B,MAAM,CAuBR"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Client-side `{var}` interpolation (i18n, Sweep S13 #1418).
3
+ *
4
+ * A small, dependency-free copy of `@happyvertical/smrt-languages`'s
5
+ * `renderTemplate`. The client deliberately does NOT import the languages
6
+ * package: it is an optional peer with a heavy server dependency tree
7
+ * (smrt-core, sql, ai, jobs…), and importing it from the always-bundled client
8
+ * path (`Provider` → `/i18n`) would force every smrt-svelte consumer — including
9
+ * downstream SvelteKit apps — to install that tree. The contract is tiny and
10
+ * stable, so the client owns it; `__tests__/render-parity.spec.ts` pins it
11
+ * against the canonical languages implementation so the two never drift.
12
+ */
13
+ function isPlainObject(value) {
14
+ return !!value && typeof value === 'object' && !Array.isArray(value);
15
+ }
16
+ /**
17
+ * Render `{var}` placeholders against the supplied variables. Matches the
18
+ * languages resolver's contract: `Date` → ISO string, array/object → JSON,
19
+ * `null` / `undefined` → empty string; an empty/absent `variables` returns the
20
+ * template unchanged (fast path).
21
+ */
22
+ export function renderTemplate(template, variables) {
23
+ if (!variables || Object.keys(variables).length === 0) {
24
+ return template;
25
+ }
26
+ return template.replace(/\{([^{}]+)\}/g, (_match, rawKey) => {
27
+ const value = variables[rawKey.trim()];
28
+ if (value === undefined || value === null) {
29
+ return '';
30
+ }
31
+ if (value instanceof Date) {
32
+ return value.toISOString();
33
+ }
34
+ if (Array.isArray(value) || isPlainObject(value)) {
35
+ try {
36
+ return JSON.stringify(value);
37
+ }
38
+ catch {
39
+ return '';
40
+ }
41
+ }
42
+ return String(value);
43
+ });
44
+ }
@@ -0,0 +1,7 @@
1
+ export declare const M: {
2
+ readonly 'ui.data_table.select_all': "ui.data_table.select_all";
3
+ readonly 'ui.data_table.select_row': "ui.data_table.select_row";
4
+ readonly 'ui.data_table.loading': "ui.data_table.loading";
5
+ readonly 'ui.data_table.empty': "ui.data_table.empty";
6
+ };
7
+ //# sourceMappingURL=strings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"strings.d.ts","sourceRoot":"","sources":["../../src/i18n/strings.ts"],"names":[],"mappings":"AAcA,eAAO,MAAM,CAAC;;;;;CAKZ,CAAC"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * smrt-svelte UI primitive message catalog (S13 #1418 pilot).
3
+ *
4
+ * English code defaults for strings baked into the library's own primitives.
5
+ * Keys use the `ui.` namespace (see the i18n ADR). Importing this module
6
+ * registers the defaults so `useI18n().t` / `<Trans>` render correctly even
7
+ * without a server snapshot; on the server, `buildI18nSnapshot` resolves these
8
+ * keys through the override/tenant/locale chain.
9
+ *
10
+ * `M` is a typed key map — `M['ui.data_table.empty']` is the key literal — so
11
+ * component call sites stay typo-safe.
12
+ */
13
+ import { defineMessages } from './registry.js';
14
+ export const M = defineMessages({
15
+ 'ui.data_table.select_all': 'Select all rows',
16
+ 'ui.data_table.select_row': 'Select row',
17
+ 'ui.data_table.loading': 'Loading...',
18
+ 'ui.data_table.empty': 'No data available',
19
+ });
@@ -0,0 +1,34 @@
1
+ /**
2
+ * smrt-svelte `ui`-namespace message catalog (i18n, Sweep S13 #1418).
3
+ *
4
+ * English code defaults for the `ui`, `feedback`, `layout`, `memberships`,
5
+ * `module`, and `calendar` component primitives. Registered through
6
+ * `defineMessages` (see `./registry.ts`); keys follow `<package>.<component>.<descriptor>`
7
+ * with the `ui` namespace for smrt-svelte primitives.
8
+ */
9
+ export declare const M: {
10
+ readonly 'ui.calendar.previous_month': "ui.calendar.previous_month";
11
+ readonly 'ui.calendar.next_month': "ui.calendar.next_month";
12
+ readonly 'ui.calendar.select_month': "ui.calendar.select_month";
13
+ readonly 'ui.calendar.select_year': "ui.calendar.select_year";
14
+ readonly 'ui.day_view.back_to_calendar': "ui.day_view.back_to_calendar";
15
+ readonly 'ui.day_view.no_events': "ui.day_view.no_events";
16
+ readonly 'ui.modal.close': "ui.modal.close";
17
+ readonly 'ui.progress_bar.label': "ui.progress_bar.label";
18
+ readonly 'ui.progress_bar.over_by': "ui.progress_bar.over_by";
19
+ readonly 'ui.footer.all_rights_reserved': "ui.footer.all_rights_reserved";
20
+ readonly 'ui.masthead.home': "ui.masthead.home";
21
+ readonly 'ui.masthead.primary_nav': "ui.masthead.primary_nav";
22
+ readonly 'ui.masthead.mobile_nav': "ui.masthead.mobile_nav";
23
+ readonly 'ui.membership_card.change_role': "ui.membership_card.change_role";
24
+ readonly 'ui.membership_list.loading': "ui.membership_list.loading";
25
+ readonly 'ui.module_panel.component_not_registered': "ui.module_panel.component_not_registered";
26
+ readonly 'ui.module_panel.register_hint': "ui.module_panel.register_hint";
27
+ readonly 'ui.pagination.first_page': "ui.pagination.first_page";
28
+ readonly 'ui.pagination.previous_page': "ui.pagination.previous_page";
29
+ readonly 'ui.pagination.page_current': "ui.pagination.page_current";
30
+ readonly 'ui.pagination.go_to_page': "ui.pagination.go_to_page";
31
+ readonly 'ui.pagination.next_page': "ui.pagination.next_page";
32
+ readonly 'ui.pagination.last_page': "ui.pagination.last_page";
33
+ };
34
+ //# sourceMappingURL=strings.ui.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"strings.ui.d.ts","sourceRoot":"","sources":["../../src/i18n/strings.ui.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,eAAO,MAAM,CAAC;;;;;;;;;;;;;;;;;;;;;;;;CA4CZ,CAAC"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * smrt-svelte `ui`-namespace message catalog (i18n, Sweep S13 #1418).
3
+ *
4
+ * English code defaults for the `ui`, `feedback`, `layout`, `memberships`,
5
+ * `module`, and `calendar` component primitives. Registered through
6
+ * `defineMessages` (see `./registry.ts`); keys follow `<package>.<component>.<descriptor>`
7
+ * with the `ui` namespace for smrt-svelte primitives.
8
+ */
9
+ import { defineMessages } from './registry.js';
10
+ export const M = defineMessages({
11
+ // calendar/Calendar.svelte
12
+ 'ui.calendar.previous_month': 'Previous month',
13
+ 'ui.calendar.next_month': 'Next month',
14
+ 'ui.calendar.select_month': 'Select month',
15
+ 'ui.calendar.select_year': 'Select year',
16
+ // calendar/DayView.svelte
17
+ 'ui.day_view.back_to_calendar': 'Back to Calendar',
18
+ 'ui.day_view.no_events': 'No events scheduled for this day',
19
+ // feedback/Modal.svelte
20
+ 'ui.modal.close': 'Close modal',
21
+ // feedback/ProgressBar.svelte
22
+ 'ui.progress_bar.label': 'Progress',
23
+ 'ui.progress_bar.over_by': 'Over by {amount}',
24
+ // layout/Footer.svelte
25
+ 'ui.footer.all_rights_reserved': 'All rights reserved.',
26
+ // layout/Masthead.svelte
27
+ 'ui.masthead.home': 'Home',
28
+ 'ui.masthead.primary_nav': 'Primary',
29
+ 'ui.masthead.mobile_nav': 'Mobile',
30
+ // memberships/MembershipCard.svelte
31
+ 'ui.membership_card.change_role': 'Change Role',
32
+ // memberships/MembershipList.svelte
33
+ 'ui.membership_list.loading': 'Loading memberships...',
34
+ // module/ModulePanel.svelte
35
+ 'ui.module_panel.component_not_registered': 'Component not registered',
36
+ 'ui.module_panel.register_hint': "Import the module's Svelte package to register components.",
37
+ // ui/Pagination.svelte
38
+ 'ui.pagination.first_page': 'First page',
39
+ 'ui.pagination.previous_page': 'Previous page',
40
+ 'ui.pagination.page_current': 'Page {page}, current',
41
+ 'ui.pagination.go_to_page': 'Go to page {page}',
42
+ 'ui.pagination.next_page': 'Next page',
43
+ 'ui.pagination.last_page': 'Last page ({totalPages})',
44
+ });
@@ -0,0 +1,20 @@
1
+ /**
2
+ * `useI18n()` — the component-facing accessor for translations (S13 #1418).
3
+ *
4
+ * Returns the active i18n store, exposing `t(key, vars)` and a reactive
5
+ * `locale`. Safe to call outside a `Provider`: it falls back to a default store
6
+ * that resolves through registered English defaults, so primitives stay usable
7
+ * in isolation and in tests.
8
+ *
9
+ * @example
10
+ * ```svelte
11
+ * <script lang="ts">
12
+ * import { useI18n } from '@happyvertical/smrt-ui/i18n';
13
+ * const { t } = useI18n();
14
+ * </script>
15
+ * <input placeholder={t('chat.message_input.placeholder')} />
16
+ * ```
17
+ */
18
+ import { type I18nStore } from './context.svelte.js';
19
+ export declare function useI18n(): I18nStore;
20
+ //# sourceMappingURL=use-i18n.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-i18n.d.ts","sourceRoot":"","sources":["../../src/i18n/use-i18n.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EAAkB,KAAK,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAErE,wBAAgB,OAAO,IAAI,SAAS,CAEnC"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * `useI18n()` — the component-facing accessor for translations (S13 #1418).
3
+ *
4
+ * Returns the active i18n store, exposing `t(key, vars)` and a reactive
5
+ * `locale`. Safe to call outside a `Provider`: it falls back to a default store
6
+ * that resolves through registered English defaults, so primitives stay usable
7
+ * in isolation and in tests.
8
+ *
9
+ * @example
10
+ * ```svelte
11
+ * <script lang="ts">
12
+ * import { useI18n } from '@happyvertical/smrt-ui/i18n';
13
+ * const { t } = useI18n();
14
+ * </script>
15
+ * <input placeholder={t('chat.message_input.placeholder')} />
16
+ * ```
17
+ */
18
+ import { getI18nContext } from './context.svelte.js';
19
+ export function useI18n() {
20
+ return getI18nContext();
21
+ }
@@ -0,0 +1,28 @@
1
+ /**
2
+ * @happyvertical/smrt-ui
3
+ *
4
+ * Domain-agnostic Svelte 5 UI runtime for SMRT: generic primitives, the i18n
5
+ * client, the theme system, and the module UI registry. Depends only on
6
+ * `svelte` (peer) and `@happyvertical/smrt-types` — no smrt domain package — so
7
+ * domain packages can consume the UI runtime without taking a dependency on the
8
+ * top-level `@happyvertical/smrt-svelte` integration layer.
9
+ */
10
+ export { hasAllPermissions, hasAnyPermission, hasPermission, permission, } from './actions/permission.js';
11
+ export { ripple } from './actions/ripple.js';
12
+ export * from './components/calendar/index.js';
13
+ export * from './components/data/index.js';
14
+ export * from './components/display/index.js';
15
+ export * from './components/feedback/index.js';
16
+ export * from './components/layout/index.js';
17
+ export { default as MembershipCard } from './components/memberships/MembershipCard.svelte';
18
+ export { default as MembershipList } from './components/memberships/MembershipList.svelte';
19
+ export * from './components/nav/index.js';
20
+ export { default as PermissionCheck } from './components/permissions/PermissionCheck.svelte';
21
+ export { default as RoleBadge } from './components/roles/RoleBadge.svelte';
22
+ export { default as RoleSelector } from './components/roles/RoleSelector.svelte';
23
+ export type { ThemeMode } from './components/theme/index.js';
24
+ export * from './components/ui/index.js';
25
+ export * from './registry/index.js';
26
+ export * from './theme/index.js';
27
+ export type * from './types-generic.js';
28
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,aAAa,EACb,UAAU,GACX,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAE7C,cAAc,gCAAgC,CAAC;AAE/C,cAAc,4BAA4B,CAAC;AAE3C,cAAc,+BAA+B,CAAC;AAE9C,cAAc,gCAAgC,CAAC;AAE/C,cAAc,8BAA8B,CAAC;AAE7C,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,gDAAgD,CAAC;AAC3F,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,gDAAgD,CAAC;AAE3F,cAAc,2BAA2B,CAAC;AAE1C,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,iDAAiD,CAAC;AAE7F,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,qCAAqC,CAAC;AAC3E,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,wCAAwC,CAAC;AAEjF,YAAY,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAE7D,cAAc,0BAA0B,CAAC;AAEzC,cAAc,qBAAqB,CAAC;AAEpC,cAAc,kBAAkB,CAAC;AAEjC,mBAAmB,oBAAoB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,38 @@
1
+ /**
2
+ * @happyvertical/smrt-ui
3
+ *
4
+ * Domain-agnostic Svelte 5 UI runtime for SMRT: generic primitives, the i18n
5
+ * client, the theme system, and the module UI registry. Depends only on
6
+ * `svelte` (peer) and `@happyvertical/smrt-types` — no smrt domain package — so
7
+ * domain packages can consume the UI runtime without taking a dependency on the
8
+ * top-level `@happyvertical/smrt-svelte` integration layer.
9
+ */
10
+ // Actions
11
+ export { hasAllPermissions, hasAnyPermission, hasPermission, permission, } from './actions/permission.js';
12
+ export { ripple } from './actions/ripple.js';
13
+ // Calendar components
14
+ export * from './components/calendar/index.js';
15
+ // Data components
16
+ export * from './components/data/index.js';
17
+ // Display components
18
+ export * from './components/display/index.js';
19
+ // Feedback components
20
+ export * from './components/feedback/index.js';
21
+ // Layout components
22
+ export * from './components/layout/index.js';
23
+ // Membership components (domain-agnostic — typed against smrt-types contracts)
24
+ export { default as MembershipCard } from './components/memberships/MembershipCard.svelte';
25
+ export { default as MembershipList } from './components/memberships/MembershipList.svelte';
26
+ // Navigation components
27
+ export * from './components/nav/index.js';
28
+ // Permission components
29
+ export { default as PermissionCheck } from './components/permissions/PermissionCheck.svelte';
30
+ // Role components (domain-agnostic — typed against smrt-types contracts)
31
+ export { default as RoleBadge } from './components/roles/RoleBadge.svelte';
32
+ export { default as RoleSelector } from './components/roles/RoleSelector.svelte';
33
+ // UI components
34
+ export * from './components/ui/index.js';
35
+ // Module UI registry
36
+ export * from './registry/index.js';
37
+ // Theme system
38
+ export * from './theme/index.js';
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Registry exports for SMRT module UI components
3
+ */
4
+ export type { ModuleComponentType, ModuleUIBaseProps, ModuleUIRegistryInterface, ModuleUISlot, SmrtModuleMeta, } from '@happyvertical/smrt-types';
5
+ export { createModuleUIRegistry, ModuleUIRegistry } from './module-registry.js';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/registry/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,YAAY,EACV,mBAAmB,EACnB,iBAAiB,EACjB,yBAAyB,EACzB,YAAY,EACZ,cAAc,GACf,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Registry exports for SMRT module UI components
3
+ */
4
+ export { createModuleUIRegistry, ModuleUIRegistry } from './module-registry.js';
@@ -0,0 +1,58 @@
1
+ /**
2
+ * ModuleUIRegistry - Global registry for module UI components
3
+ *
4
+ * This mirrors the AgentUIRegistry pattern from @happyvertical/smrt-agents
5
+ * but for general SMRT modules that want to provide Svelte UI components.
6
+ *
7
+ * @example Registering components (in module's svelte subpath)
8
+ * ```typescript
9
+ * // packages/commerce/src/svelte/index.ts
10
+ * import { ModuleUIRegistry } from '@happyvertical/smrt-ui/registry';
11
+ * import { COMMERCE_MODULE_META } from '../ui.js';
12
+ * import InvoiceCard from './components/InvoiceCard.svelte';
13
+ *
14
+ * ModuleUIRegistry.registerModule(COMMERCE_MODULE_META);
15
+ * ModuleUIRegistry.register('@happyvertical/smrt-commerce', 'invoice-card', InvoiceCard);
16
+ *
17
+ * export { InvoiceCard };
18
+ * ```
19
+ *
20
+ * @example Using components (in host app)
21
+ * ```typescript
22
+ * // SvelteKit app
23
+ * import { ModuleUIRegistry } from '@happyvertical/smrt-ui/registry';
24
+ * import '@happyvertical/smrt-commerce/svelte'; // Auto-registers components
25
+ *
26
+ * const InvoiceCard = ModuleUIRegistry.get('@happyvertical/smrt-commerce', 'invoice-card');
27
+ * ```
28
+ */
29
+ import type { ModuleUIRegistryInterface } from '@happyvertical/smrt-types';
30
+ /**
31
+ * Create a new module UI registry
32
+ *
33
+ * Follows the same pattern as createUIRegistry() in smrt-agents.
34
+ */
35
+ export declare function createModuleUIRegistry(): ModuleUIRegistryInterface;
36
+ /**
37
+ * Global ModuleUIRegistry singleton
38
+ *
39
+ * Module UI packages register their components here at import time,
40
+ * enabling discovery by host applications.
41
+ *
42
+ * @example
43
+ * ```typescript
44
+ * // In module svelte package (e.g., @happyvertical/smrt-commerce/svelte)
45
+ * import { ModuleUIRegistry } from '@happyvertical/smrt-ui/registry';
46
+ * import InvoiceCard from './InvoiceCard.svelte';
47
+ *
48
+ * ModuleUIRegistry.register('@happyvertical/smrt-commerce', 'invoice-card', InvoiceCard);
49
+ *
50
+ * // In host SvelteKit app
51
+ * import { ModuleUIRegistry } from '@happyvertical/smrt-ui/registry';
52
+ * import '@happyvertical/smrt-commerce/svelte'; // Registers components
53
+ *
54
+ * const Component = ModuleUIRegistry.get('@happyvertical/smrt-commerce', 'invoice-card');
55
+ * ```
56
+ */
57
+ export declare const ModuleUIRegistry: ModuleUIRegistryInterface;
58
+ //# sourceMappingURL=module-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"module-registry.d.ts","sourceRoot":"","sources":["../../src/registry/module-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,KAAK,EAEV,yBAAyB,EAE1B,MAAM,2BAA2B,CAAC;AAEnC;;;;GAIG;AACH,wBAAgB,sBAAsB,IAAI,yBAAyB,CAiDlE;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,gBAAgB,EAAE,yBACL,CAAC"}
@@ -0,0 +1,94 @@
1
+ /**
2
+ * ModuleUIRegistry - Global registry for module UI components
3
+ *
4
+ * This mirrors the AgentUIRegistry pattern from @happyvertical/smrt-agents
5
+ * but for general SMRT modules that want to provide Svelte UI components.
6
+ *
7
+ * @example Registering components (in module's svelte subpath)
8
+ * ```typescript
9
+ * // packages/commerce/src/svelte/index.ts
10
+ * import { ModuleUIRegistry } from '@happyvertical/smrt-ui/registry';
11
+ * import { COMMERCE_MODULE_META } from '../ui.js';
12
+ * import InvoiceCard from './components/InvoiceCard.svelte';
13
+ *
14
+ * ModuleUIRegistry.registerModule(COMMERCE_MODULE_META);
15
+ * ModuleUIRegistry.register('@happyvertical/smrt-commerce', 'invoice-card', InvoiceCard);
16
+ *
17
+ * export { InvoiceCard };
18
+ * ```
19
+ *
20
+ * @example Using components (in host app)
21
+ * ```typescript
22
+ * // SvelteKit app
23
+ * import { ModuleUIRegistry } from '@happyvertical/smrt-ui/registry';
24
+ * import '@happyvertical/smrt-commerce/svelte'; // Auto-registers components
25
+ *
26
+ * const InvoiceCard = ModuleUIRegistry.get('@happyvertical/smrt-commerce', 'invoice-card');
27
+ * ```
28
+ */
29
+ /**
30
+ * Create a new module UI registry
31
+ *
32
+ * Follows the same pattern as createUIRegistry() in smrt-agents.
33
+ */
34
+ export function createModuleUIRegistry() {
35
+ // biome-ignore lint/suspicious/noExplicitAny: ComponentType needs any
36
+ const components = new Map();
37
+ const modules = new Map();
38
+ const makeKey = (moduleName, slotId) => `${moduleName}:${slotId}`;
39
+ return {
40
+ register(moduleName, slotId, component) {
41
+ components.set(makeKey(moduleName, slotId), component);
42
+ },
43
+ get(moduleName, slotId) {
44
+ return components.get(makeKey(moduleName, slotId));
45
+ },
46
+ has(moduleName, slotId) {
47
+ return components.has(makeKey(moduleName, slotId));
48
+ },
49
+ getSlots(moduleName) {
50
+ const prefix = `${moduleName}:`;
51
+ return Array.from(components.keys())
52
+ .filter((k) => k.startsWith(prefix))
53
+ .map((k) => k.slice(prefix.length));
54
+ },
55
+ getModules() {
56
+ return Array.from(modules.keys());
57
+ },
58
+ getModuleMeta(moduleName) {
59
+ return modules.get(moduleName);
60
+ },
61
+ registerModule(meta) {
62
+ modules.set(meta.name, meta);
63
+ },
64
+ unregister(moduleName, slotId) {
65
+ return components.delete(makeKey(moduleName, slotId));
66
+ },
67
+ clear() {
68
+ components.clear();
69
+ modules.clear();
70
+ },
71
+ };
72
+ }
73
+ /**
74
+ * Global ModuleUIRegistry singleton
75
+ *
76
+ * Module UI packages register their components here at import time,
77
+ * enabling discovery by host applications.
78
+ *
79
+ * @example
80
+ * ```typescript
81
+ * // In module svelte package (e.g., @happyvertical/smrt-commerce/svelte)
82
+ * import { ModuleUIRegistry } from '@happyvertical/smrt-ui/registry';
83
+ * import InvoiceCard from './InvoiceCard.svelte';
84
+ *
85
+ * ModuleUIRegistry.register('@happyvertical/smrt-commerce', 'invoice-card', InvoiceCard);
86
+ *
87
+ * // In host SvelteKit app
88
+ * import { ModuleUIRegistry } from '@happyvertical/smrt-ui/registry';
89
+ * import '@happyvertical/smrt-commerce/svelte'; // Registers components
90
+ *
91
+ * const Component = ModuleUIRegistry.get('@happyvertical/smrt-commerce', 'invoice-card');
92
+ * ```
93
+ */
94
+ export const ModuleUIRegistry = createModuleUIRegistry();
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Styles - CSS tokens and theme utilities
3
+ */
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/styles/index.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ /**
3
+ * Styles - CSS tokens and theme utilities
4
+ */
5
+ // Export path to tokens CSS for consumers to import
6
+ // Usage: import '@happyvertical/smrt-ui/styles/tokens.css'