rune-lab 0.3.1 → 0.4.1

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 (397) hide show
  1. package/.gitignore +12 -0
  2. package/README.md +4 -4
  3. package/deno.json +50 -0
  4. package/justfile +5 -0
  5. package/package.json +3 -80
  6. package/scripts/build_pkg.ts +51 -0
  7. package/scripts/ci.just +26 -0
  8. package/scripts/deploy.just +21 -0
  9. package/scripts/dev.just +4 -0
  10. package/scripts/inject.just +72 -0
  11. package/src/RuneProvider.svelte +105 -0
  12. package/src/i18n/message-resolver.test.ts +103 -0
  13. package/src/i18n/message-resolver.ts +89 -0
  14. package/src/i18n/project.inlang/settings.json +26 -0
  15. package/src/i18n/translations/ar.json +89 -0
  16. package/src/i18n/translations/de.json +89 -0
  17. package/src/i18n/translations/en.json +89 -0
  18. package/src/i18n/translations/es.json +89 -0
  19. package/src/i18n/translations/fr.json +89 -0
  20. package/src/i18n/translations/hi.json +89 -0
  21. package/src/i18n/translations/it.json +89 -0
  22. package/src/i18n/translations/ja.json +89 -0
  23. package/src/i18n/translations/ko.json +89 -0
  24. package/src/i18n/translations/pt.json +89 -0
  25. package/src/i18n/translations/ru.json +89 -0
  26. package/src/i18n/translations/vi.json +89 -0
  27. package/src/i18n/translations/zh.json +89 -0
  28. package/src/kernel/deno.json +5 -0
  29. package/src/kernel/src/actions/portal.ts +41 -0
  30. package/src/kernel/src/actions/shortcut-listener.ts +50 -0
  31. package/src/kernel/src/context/app.svelte.ts +98 -0
  32. package/src/kernel/src/context/context.ts +31 -0
  33. package/src/kernel/src/context/stores.svelte.ts +96 -0
  34. package/src/kernel/src/context/types.ts +110 -0
  35. package/src/kernel/src/context/useRuneLab.ts +38 -0
  36. package/src/kernel/src/mod.ts +13 -0
  37. package/src/kernel/src/persistence/createConfigStore.svelte.ts +120 -0
  38. package/src/kernel/src/persistence/drivers.test.ts +95 -0
  39. package/src/kernel/src/persistence/drivers.ts +77 -0
  40. package/src/kernel/src/persistence/provider.test.ts +58 -0
  41. package/src/kernel/src/persistence/provider.ts +58 -0
  42. package/src/kernel/src/persistence/types.ts +19 -0
  43. package/src/kernel/src/persistence/usePersistence.ts +9 -0
  44. package/src/kernel/src/registry/mod.ts +221 -0
  45. package/src/kernel/src/registry/registry.test.ts +162 -0
  46. package/src/kernel/src/tokens/props.ts +94 -0
  47. package/src/mod.ts +10 -0
  48. package/src/runes/layout/deno.json +5 -0
  49. package/src/runes/layout/src/APP_CONFIGURATIONS.ts +56 -0
  50. package/{dist/ui/features/config → src/runes/layout/src}/AppSettingSelector.svelte +1 -1
  51. package/{dist/ui/layout → src/runes/layout/src}/ConnectedNavigationPanel.svelte +7 -8
  52. package/{dist/ui/layout → src/runes/layout/src}/ConnectedWorkspaceStrip.svelte +5 -3
  53. package/src/runes/layout/src/Icon.svelte +7 -0
  54. package/src/runes/layout/src/LanguageSelector.svelte +45 -0
  55. package/{dist/ui/layout → src/runes/layout/src}/NavigationPanel.svelte +1 -4
  56. package/src/runes/layout/src/ResourceSelector.svelte +90 -0
  57. package/src/runes/layout/src/ThemeSelector.svelte +50 -0
  58. package/{dist/ui/layout → src/runes/layout/src}/WorkspaceLayout.svelte +13 -3
  59. package/{dist/ui/layout → src/runes/layout/src}/WorkspaceStrip.svelte +1 -1
  60. package/src/runes/layout/src/connection-factory.ts +95 -0
  61. package/src/runes/layout/src/language.svelte.ts +44 -0
  62. package/src/runes/layout/src/mod.ts +71 -0
  63. package/src/runes/layout/src/store.svelte.ts +142 -0
  64. package/src/runes/layout/src/theme.svelte.ts +73 -0
  65. package/src/runes/layout/src/types.ts +11 -0
  66. package/src/runes/palettes/deno.json +8 -0
  67. package/{dist/ui/features/command-palette → src/runes/palettes/src/commands}/CommandPalette.svelte +4 -4
  68. package/src/runes/palettes/src/commands/mod.ts +2 -0
  69. package/src/runes/palettes/src/commands/store.svelte.ts +80 -0
  70. package/src/runes/palettes/src/mod.ts +51 -0
  71. package/{dist/ui/components → src/runes/palettes/src/notifications}/Toaster.svelte +1 -2
  72. package/src/runes/palettes/src/notifications/bridge.ts +56 -0
  73. package/src/runes/palettes/src/notifications/mod.ts +4 -0
  74. package/src/runes/palettes/src/notifications/store.svelte.ts +58 -0
  75. package/{dist/ui/features → src/runes/palettes/src}/shortcuts/ShortcutPalette.svelte +4 -4
  76. package/src/runes/palettes/src/shortcuts/mod.ts +4 -0
  77. package/src/runes/palettes/src/shortcuts/store.svelte.ts +85 -0
  78. package/src/runes/palettes/src/shortcuts/types.ts +4 -0
  79. package/src/runes/palettes/src/shortcuts/useShortcuts.ts +85 -0
  80. package/src/runes/plugins/money/deno.json +8 -0
  81. package/src/runes/plugins/money/src/CurrencySelector.svelte +41 -0
  82. package/src/runes/plugins/money/src/MoneyDisplay.svelte +142 -0
  83. package/src/runes/plugins/money/src/MoneyInput.svelte +208 -0
  84. package/src/runes/plugins/money/src/currency.svelte.ts +95 -0
  85. package/src/runes/plugins/money/src/currency.test.ts +40 -0
  86. package/src/runes/plugins/money/src/exchange-rate.svelte.ts +176 -0
  87. package/src/runes/plugins/money/src/exchange-rate.test.ts +95 -0
  88. package/src/runes/plugins/money/src/mod.ts +79 -0
  89. package/src/runes/plugins/money/src/money-primitive.test.ts +217 -0
  90. package/src/runes/plugins/money/src/money-primitive.ts +220 -0
  91. package/src/runes/plugins/money/src/money.test.ts +183 -0
  92. package/src/runes/plugins/money/src/money.ts +382 -0
  93. package/src/runes/plugins/money/src/strategies.test.ts +143 -0
  94. package/src/runes/plugins/money/src/strategies.ts +95 -0
  95. package/src/runes/plugins/money/src/types.ts +27 -0
  96. package/src/runes/plugins/money/src/useMoney.ts +261 -0
  97. package/src/runes/plugins/money/src/useMoneyFilter.ts +132 -0
  98. package/tsconfig.json +41 -0
  99. package/vite.config.ts +44 -0
  100. package/dist/core/index.d.ts +0 -4
  101. package/dist/core/index.d.ts.map +0 -1
  102. package/dist/core/index.js +0 -3
  103. package/dist/core/internal/message-resolver.d.ts +0 -42
  104. package/dist/core/internal/message-resolver.d.ts.map +0 -1
  105. package/dist/core/internal/message-resolver.js +0 -47
  106. package/dist/core/money/index.d.ts +0 -2
  107. package/dist/core/money/index.d.ts.map +0 -1
  108. package/dist/core/money/index.js +0 -2
  109. package/dist/core/money/money.d.ts +0 -57
  110. package/dist/core/money/money.d.ts.map +0 -1
  111. package/dist/core/money/money.js +0 -132
  112. package/dist/core/persistence/types.d.ts +0 -18
  113. package/dist/core/persistence/types.d.ts.map +0 -1
  114. package/dist/core/persistence/types.js +0 -2
  115. package/dist/index.d.ts +0 -5
  116. package/dist/index.js +0 -5
  117. package/dist/state/api.svelte.d.ts +0 -26
  118. package/dist/state/api.svelte.js +0 -65
  119. package/dist/state/app.svelte.d.ts +0 -48
  120. package/dist/state/app.svelte.js +0 -82
  121. package/dist/state/auth/index.d.ts +0 -2
  122. package/dist/state/auth/index.js +0 -2
  123. package/dist/state/auth/session.svelte.d.ts +0 -40
  124. package/dist/state/auth/session.svelte.js +0 -57
  125. package/dist/state/auth/types.d.ts +0 -30
  126. package/dist/state/auth/types.js +0 -3
  127. package/dist/state/cart.svelte.d.ts +0 -64
  128. package/dist/state/cart.svelte.js +0 -122
  129. package/dist/state/commands.svelte.d.ts +0 -46
  130. package/dist/state/commands.svelte.js +0 -62
  131. package/dist/state/composables/useMoney.d.ts +0 -15
  132. package/dist/state/composables/useMoney.js +0 -62
  133. package/dist/state/composables/usePersistence.d.ts +0 -2
  134. package/dist/state/composables/usePersistence.js +0 -5
  135. package/dist/state/composables/useRuneLab.d.ts +0 -19
  136. package/dist/state/composables/useRuneLab.js +0 -30
  137. package/dist/state/context.d.ts +0 -14
  138. package/dist/state/context.js +0 -15
  139. package/dist/state/createConfigStore.svelte.d.ts +0 -55
  140. package/dist/state/createConfigStore.svelte.js +0 -61
  141. package/dist/state/currency.svelte.d.ts +0 -28
  142. package/dist/state/currency.svelte.js +0 -80
  143. package/dist/state/daisyui.d.ts +0 -4
  144. package/dist/state/index.d.ts +0 -19
  145. package/dist/state/index.js +0 -25
  146. package/dist/state/language.svelte.d.ts +0 -64
  147. package/dist/state/language.svelte.js +0 -44
  148. package/dist/state/layout.svelte.d.ts +0 -49
  149. package/dist/state/layout.svelte.js +0 -108
  150. package/dist/state/persistence/drivers.d.ts +0 -12
  151. package/dist/state/persistence/drivers.js +0 -73
  152. package/dist/state/shortcuts.svelte.d.ts +0 -121
  153. package/dist/state/shortcuts.svelte.js +0 -222
  154. package/dist/state/theme.svelte.d.ts +0 -22
  155. package/dist/state/theme.svelte.js +0 -92
  156. package/dist/state/toast-bridge.d.ts +0 -29
  157. package/dist/state/toast-bridge.js +0 -43
  158. package/dist/state/toast.svelte.d.ts +0 -27
  159. package/dist/state/toast.svelte.js +0 -43
  160. package/dist/ui/actions/portal.d.ts +0 -7
  161. package/dist/ui/actions/portal.js +0 -32
  162. package/dist/ui/components/ApiMonitor.svelte +0 -162
  163. package/dist/ui/components/ApiMonitor.svelte.d.ts +0 -3
  164. package/dist/ui/components/Icon.svelte +0 -108
  165. package/dist/ui/components/Icon.svelte.d.ts +0 -14
  166. package/dist/ui/components/Kyntharil.svelte +0 -48
  167. package/dist/ui/components/Kyntharil.svelte.d.ts +0 -6
  168. package/dist/ui/components/RuneProvider.svelte +0 -198
  169. package/dist/ui/components/RuneProvider.svelte.d.ts +0 -42
  170. package/dist/ui/components/Toaster.svelte.d.ts +0 -18
  171. package/dist/ui/components/money/MoneyDisplay.svelte +0 -69
  172. package/dist/ui/components/money/MoneyDisplay.svelte.d.ts +0 -21
  173. package/dist/ui/components/money/MoneyDisplay.svelte.test.d.ts +0 -1
  174. package/dist/ui/components/money/MoneyDisplay.svelte.test.js +0 -74
  175. package/dist/ui/components/money/MoneyInput.svelte +0 -131
  176. package/dist/ui/components/money/MoneyInput.svelte.d.ts +0 -25
  177. package/dist/ui/components/money/index.d.ts +0 -2
  178. package/dist/ui/components/money/index.js +0 -3
  179. package/dist/ui/components/user/UserAvatar.svelte +0 -66
  180. package/dist/ui/components/user/UserAvatar.svelte.d.ts +0 -13
  181. package/dist/ui/components/user/UserProfile.svelte +0 -79
  182. package/dist/ui/components/user/UserProfile.svelte.d.ts +0 -17
  183. package/dist/ui/components/user/index.d.ts +0 -2
  184. package/dist/ui/components/user/index.js +0 -3
  185. package/dist/ui/features/command-palette/CommandPalette.svelte.d.ts +0 -6
  186. package/dist/ui/features/config/AppSettingSelector.svelte.d.ts +0 -13
  187. package/dist/ui/features/config/CurrencySelector.svelte +0 -67
  188. package/dist/ui/features/config/CurrencySelector.svelte.d.ts +0 -8
  189. package/dist/ui/features/config/LanguageSelector.svelte +0 -66
  190. package/dist/ui/features/config/LanguageSelector.svelte.d.ts +0 -8
  191. package/dist/ui/features/config/ThemeSelector.svelte +0 -73
  192. package/dist/ui/features/config/ThemeSelector.svelte.d.ts +0 -8
  193. package/dist/ui/features/notifications/NotificationBell.svelte.d.ts +0 -11
  194. package/dist/ui/features/notifications/index.d.ts +0 -1
  195. package/dist/ui/features/notifications/index.js +0 -2
  196. package/dist/ui/features/shortcuts/ShortcutPalette.svelte.d.ts +0 -6
  197. package/dist/ui/index.d.ts +0 -26
  198. package/dist/ui/index.js +0 -41
  199. package/dist/ui/layout/ConnectedNavigationPanel.svelte.d.ts +0 -10
  200. package/dist/ui/layout/ConnectedWorkspaceStrip.svelte.d.ts +0 -9
  201. package/dist/ui/layout/ContentArea.svelte.d.ts +0 -8
  202. package/dist/ui/layout/DetailPanel.svelte.d.ts +0 -7
  203. package/dist/ui/layout/NavigationPanel.svelte.d.ts +0 -14
  204. package/dist/ui/layout/WorkspaceLayout.svelte.d.ts +0 -25
  205. package/dist/ui/layout/WorkspaceStrip.svelte.d.ts +0 -11
  206. package/dist/ui/layout/index.d.ts +0 -7
  207. package/dist/ui/layout/index.js +0 -7
  208. package/dist/ui/paraglide/README.md +0 -94
  209. package/dist/ui/paraglide/messages/_index.d.ts +0 -87
  210. package/dist/ui/paraglide/messages/_index.js +0 -88
  211. package/dist/ui/paraglide/messages/abyss.d.ts +0 -16
  212. package/dist/ui/paraglide/messages/abyss.js +0 -84
  213. package/dist/ui/paraglide/messages/acid.d.ts +0 -16
  214. package/dist/ui/paraglide/messages/acid.js +0 -84
  215. package/dist/ui/paraglide/messages/active_toasts.d.ts +0 -16
  216. package/dist/ui/paraglide/messages/active_toasts.js +0 -84
  217. package/dist/ui/paraglide/messages/aed3.d.ts +0 -17
  218. package/dist/ui/paraglide/messages/aed3.js +0 -85
  219. package/dist/ui/paraglide/messages/all_currencies.d.ts +0 -16
  220. package/dist/ui/paraglide/messages/all_currencies.js +0 -84
  221. package/dist/ui/paraglide/messages/all_languages.d.ts +0 -16
  222. package/dist/ui/paraglide/messages/all_languages.js +0 -84
  223. package/dist/ui/paraglide/messages/all_themes.d.ts +0 -16
  224. package/dist/ui/paraglide/messages/all_themes.js +0 -84
  225. package/dist/ui/paraglide/messages/api_status.d.ts +0 -16
  226. package/dist/ui/paraglide/messages/api_status.js +0 -84
  227. package/dist/ui/paraglide/messages/app_info.d.ts +0 -16
  228. package/dist/ui/paraglide/messages/app_info.js +0 -84
  229. package/dist/ui/paraglide/messages/appearance.d.ts +0 -16
  230. package/dist/ui/paraglide/messages/appearance.js +0 -84
  231. package/dist/ui/paraglide/messages/aqua.d.ts +0 -16
  232. package/dist/ui/paraglide/messages/aqua.js +0 -84
  233. package/dist/ui/paraglide/messages/ar.d.ts +0 -16
  234. package/dist/ui/paraglide/messages/ar.js +0 -84
  235. package/dist/ui/paraglide/messages/autumn.d.ts +0 -16
  236. package/dist/ui/paraglide/messages/autumn.js +0 -84
  237. package/dist/ui/paraglide/messages/black.d.ts +0 -16
  238. package/dist/ui/paraglide/messages/black.js +0 -84
  239. package/dist/ui/paraglide/messages/brl3.d.ts +0 -17
  240. package/dist/ui/paraglide/messages/brl3.js +0 -85
  241. package/dist/ui/paraglide/messages/bumblebee.d.ts +0 -16
  242. package/dist/ui/paraglide/messages/bumblebee.js +0 -84
  243. package/dist/ui/paraglide/messages/business.d.ts +0 -16
  244. package/dist/ui/paraglide/messages/business.js +0 -84
  245. package/dist/ui/paraglide/messages/cad3.d.ts +0 -17
  246. package/dist/ui/paraglide/messages/cad3.js +0 -85
  247. package/dist/ui/paraglide/messages/caramellatte.d.ts +0 -16
  248. package/dist/ui/paraglide/messages/caramellatte.js +0 -84
  249. package/dist/ui/paraglide/messages/cmyk.d.ts +0 -16
  250. package/dist/ui/paraglide/messages/cmyk.js +0 -84
  251. package/dist/ui/paraglide/messages/cny3.d.ts +0 -17
  252. package/dist/ui/paraglide/messages/cny3.js +0 -85
  253. package/dist/ui/paraglide/messages/coffee.d.ts +0 -16
  254. package/dist/ui/paraglide/messages/coffee.js +0 -84
  255. package/dist/ui/paraglide/messages/commands_label.d.ts +0 -16
  256. package/dist/ui/paraglide/messages/commands_label.js +0 -84
  257. package/dist/ui/paraglide/messages/corporate.d.ts +0 -16
  258. package/dist/ui/paraglide/messages/corporate.js +0 -84
  259. package/dist/ui/paraglide/messages/cupcake.d.ts +0 -16
  260. package/dist/ui/paraglide/messages/cupcake.js +0 -84
  261. package/dist/ui/paraglide/messages/currency.d.ts +0 -16
  262. package/dist/ui/paraglide/messages/currency.js +0 -84
  263. package/dist/ui/paraglide/messages/current_currency.d.ts +0 -16
  264. package/dist/ui/paraglide/messages/current_currency.js +0 -84
  265. package/dist/ui/paraglide/messages/current_language.d.ts +0 -16
  266. package/dist/ui/paraglide/messages/current_language.js +0 -84
  267. package/dist/ui/paraglide/messages/current_theme.d.ts +0 -16
  268. package/dist/ui/paraglide/messages/current_theme.js +0 -84
  269. package/dist/ui/paraglide/messages/currently_in_queue.d.ts +0 -16
  270. package/dist/ui/paraglide/messages/currently_in_queue.js +0 -84
  271. package/dist/ui/paraglide/messages/cyberpunk.d.ts +0 -16
  272. package/dist/ui/paraglide/messages/cyberpunk.js +0 -84
  273. package/dist/ui/paraglide/messages/dark.d.ts +0 -16
  274. package/dist/ui/paraglide/messages/dark.js +0 -84
  275. package/dist/ui/paraglide/messages/de.d.ts +0 -16
  276. package/dist/ui/paraglide/messages/de.js +0 -84
  277. package/dist/ui/paraglide/messages/dim.d.ts +0 -16
  278. package/dist/ui/paraglide/messages/dim.js +0 -84
  279. package/dist/ui/paraglide/messages/dracula.d.ts +0 -16
  280. package/dist/ui/paraglide/messages/dracula.js +0 -84
  281. package/dist/ui/paraglide/messages/emerald.d.ts +0 -16
  282. package/dist/ui/paraglide/messages/emerald.js +0 -84
  283. package/dist/ui/paraglide/messages/en.d.ts +0 -16
  284. package/dist/ui/paraglide/messages/en.js +0 -84
  285. package/dist/ui/paraglide/messages/es.d.ts +0 -16
  286. package/dist/ui/paraglide/messages/es.js +0 -84
  287. package/dist/ui/paraglide/messages/eur3.d.ts +0 -17
  288. package/dist/ui/paraglide/messages/eur3.js +0 -85
  289. package/dist/ui/paraglide/messages/extended_controls.d.ts +0 -16
  290. package/dist/ui/paraglide/messages/extended_controls.js +0 -84
  291. package/dist/ui/paraglide/messages/fantasy.d.ts +0 -16
  292. package/dist/ui/paraglide/messages/fantasy.js +0 -84
  293. package/dist/ui/paraglide/messages/forest.d.ts +0 -16
  294. package/dist/ui/paraglide/messages/forest.js +0 -84
  295. package/dist/ui/paraglide/messages/fr.d.ts +0 -16
  296. package/dist/ui/paraglide/messages/fr.js +0 -84
  297. package/dist/ui/paraglide/messages/garden.d.ts +0 -16
  298. package/dist/ui/paraglide/messages/garden.js +0 -84
  299. package/dist/ui/paraglide/messages/gbp3.d.ts +0 -17
  300. package/dist/ui/paraglide/messages/gbp3.js +0 -85
  301. package/dist/ui/paraglide/messages/halloween.d.ts +0 -16
  302. package/dist/ui/paraglide/messages/halloween.js +0 -84
  303. package/dist/ui/paraglide/messages/hello_world.d.ts +0 -18
  304. package/dist/ui/paraglide/messages/hello_world.js +0 -84
  305. package/dist/ui/paraglide/messages/hi.d.ts +0 -16
  306. package/dist/ui/paraglide/messages/hi.js +0 -84
  307. package/dist/ui/paraglide/messages/inr3.d.ts +0 -17
  308. package/dist/ui/paraglide/messages/inr3.js +0 -85
  309. package/dist/ui/paraglide/messages/it.d.ts +0 -16
  310. package/dist/ui/paraglide/messages/it.js +0 -84
  311. package/dist/ui/paraglide/messages/ja.d.ts +0 -16
  312. package/dist/ui/paraglide/messages/ja.js +0 -84
  313. package/dist/ui/paraglide/messages/jpy3.d.ts +0 -17
  314. package/dist/ui/paraglide/messages/jpy3.js +0 -85
  315. package/dist/ui/paraglide/messages/ko.d.ts +0 -16
  316. package/dist/ui/paraglide/messages/ko.js +0 -84
  317. package/dist/ui/paraglide/messages/krw3.d.ts +0 -17
  318. package/dist/ui/paraglide/messages/krw3.js +0 -85
  319. package/dist/ui/paraglide/messages/languages.d.ts +0 -16
  320. package/dist/ui/paraglide/messages/languages.js +0 -84
  321. package/dist/ui/paraglide/messages/lemonade.d.ts +0 -16
  322. package/dist/ui/paraglide/messages/lemonade.js +0 -84
  323. package/dist/ui/paraglide/messages/light.d.ts +0 -16
  324. package/dist/ui/paraglide/messages/light.js +0 -84
  325. package/dist/ui/paraglide/messages/live_store_dashboard.d.ts +0 -16
  326. package/dist/ui/paraglide/messages/live_store_dashboard.js +0 -84
  327. package/dist/ui/paraglide/messages/localization.d.ts +0 -16
  328. package/dist/ui/paraglide/messages/localization.js +0 -84
  329. package/dist/ui/paraglide/messages/lofi.d.ts +0 -16
  330. package/dist/ui/paraglide/messages/lofi.js +0 -84
  331. package/dist/ui/paraglide/messages/luxury.d.ts +0 -16
  332. package/dist/ui/paraglide/messages/luxury.js +0 -84
  333. package/dist/ui/paraglide/messages/mxn3.d.ts +0 -17
  334. package/dist/ui/paraglide/messages/mxn3.js +0 -85
  335. package/dist/ui/paraglide/messages/name_label.d.ts +0 -16
  336. package/dist/ui/paraglide/messages/name_label.js +0 -84
  337. package/dist/ui/paraglide/messages/night.d.ts +0 -16
  338. package/dist/ui/paraglide/messages/night.js +0 -84
  339. package/dist/ui/paraglide/messages/nord.d.ts +0 -16
  340. package/dist/ui/paraglide/messages/nord.js +0 -84
  341. package/dist/ui/paraglide/messages/pastel.d.ts +0 -16
  342. package/dist/ui/paraglide/messages/pastel.js +0 -84
  343. package/dist/ui/paraglide/messages/pt.d.ts +0 -16
  344. package/dist/ui/paraglide/messages/pt.js +0 -84
  345. package/dist/ui/paraglide/messages/real_time_monitor_desc.d.ts +0 -16
  346. package/dist/ui/paraglide/messages/real_time_monitor_desc.js +0 -84
  347. package/dist/ui/paraglide/messages/registered_in_registry.d.ts +0 -16
  348. package/dist/ui/paraglide/messages/registered_in_registry.js +0 -84
  349. package/dist/ui/paraglide/messages/retro.d.ts +0 -16
  350. package/dist/ui/paraglide/messages/retro.js +0 -84
  351. package/dist/ui/paraglide/messages/ru.d.ts +0 -16
  352. package/dist/ui/paraglide/messages/ru.js +0 -84
  353. package/dist/ui/paraglide/messages/silk.d.ts +0 -16
  354. package/dist/ui/paraglide/messages/silk.js +0 -84
  355. package/dist/ui/paraglide/messages/state_label.d.ts +0 -16
  356. package/dist/ui/paraglide/messages/state_label.js +0 -84
  357. package/dist/ui/paraglide/messages/sunset.d.ts +0 -16
  358. package/dist/ui/paraglide/messages/sunset.js +0 -84
  359. package/dist/ui/paraglide/messages/synthwave.d.ts +0 -16
  360. package/dist/ui/paraglide/messages/synthwave.js +0 -84
  361. package/dist/ui/paraglide/messages/system.d.ts +0 -16
  362. package/dist/ui/paraglide/messages/system.js +0 -84
  363. package/dist/ui/paraglide/messages/theme.d.ts +0 -16
  364. package/dist/ui/paraglide/messages/theme.js +0 -84
  365. package/dist/ui/paraglide/messages/themes.d.ts +0 -16
  366. package/dist/ui/paraglide/messages/themes.js +0 -84
  367. package/dist/ui/paraglide/messages/url_label.d.ts +0 -16
  368. package/dist/ui/paraglide/messages/url_label.js +0 -84
  369. package/dist/ui/paraglide/messages/usd3.d.ts +0 -17
  370. package/dist/ui/paraglide/messages/usd3.js +0 -85
  371. package/dist/ui/paraglide/messages/valentine.d.ts +0 -16
  372. package/dist/ui/paraglide/messages/valentine.js +0 -84
  373. package/dist/ui/paraglide/messages/version_label.d.ts +0 -16
  374. package/dist/ui/paraglide/messages/version_label.js +0 -84
  375. package/dist/ui/paraglide/messages/vi.d.ts +0 -16
  376. package/dist/ui/paraglide/messages/vi.js +0 -84
  377. package/dist/ui/paraglide/messages/winter.d.ts +0 -16
  378. package/dist/ui/paraglide/messages/winter.js +0 -84
  379. package/dist/ui/paraglide/messages/wireframe.d.ts +0 -16
  380. package/dist/ui/paraglide/messages/wireframe.js +0 -84
  381. package/dist/ui/paraglide/messages/zh.d.ts +0 -16
  382. package/dist/ui/paraglide/messages/zh.js +0 -84
  383. package/dist/ui/paraglide/messages.d.ts +0 -2
  384. package/dist/ui/paraglide/messages.js +0 -4
  385. package/dist/ui/paraglide/registry.d.ts +0 -21
  386. package/dist/ui/paraglide/registry.js +0 -31
  387. package/dist/ui/paraglide/runtime.d.ts +0 -749
  388. package/dist/ui/paraglide/runtime.js +0 -1777
  389. package/dist/ui/paraglide/server.d.ts +0 -103
  390. package/dist/ui/paraglide/server.js +0 -248
  391. package/dist/ui/primitives/DatePicker.svelte +0 -257
  392. package/dist/ui/primitives/DatePicker.svelte.d.ts +0 -17
  393. package/dist/ui/primitives/index.d.ts +0 -1
  394. package/dist/ui/primitives/index.js +0 -3
  395. /package/{dist/ui/layout → src/runes/layout/src}/ContentArea.svelte +0 -0
  396. /package/{dist/ui/layout → src/runes/layout/src}/DetailPanel.svelte +0 -0
  397. /package/{dist/ui/features → src/runes/palettes/src}/notifications/NotificationBell.svelte +0 -0
@@ -0,0 +1,95 @@
1
+ // sdk/core/src/exchange-rate/strategies.ts
2
+ // Pure conversion strategy functions — no store or context dependencies.
3
+ // Extracted from ExchangeRateStore to enable independent testing and extensibility.
4
+
5
+ import type { ScaledRate } from "./money.ts";
6
+
7
+ // ── Types ──────────────────────────────────────────────────────────────────────
8
+
9
+ /**
10
+ * A pure function that converts a minor-unit amount using a rate.
11
+ * All strategy functions must be deterministic and side-effect-free.
12
+ */
13
+ export type ConversionFn = (amount: number, ...rates: number[]) => number;
14
+
15
+ /**
16
+ * Resolves a ScaledRate or plain number into a float rate value.
17
+ */
18
+ export function resolveRate(rate: ScaledRate | number): number {
19
+ if (typeof rate === "number") return rate;
20
+ return rate.amount / Math.pow(10, rate.scale);
21
+ }
22
+
23
+ // ── Strategy Functions ─────────────────────────────────────────────────────────
24
+
25
+ /**
26
+ * Direct conversion: base currency → target currency.
27
+ * Multiplies the amount by the rate.
28
+ *
29
+ * @param amount - Minor-unit amount in the source currency
30
+ * @param rate - Conversion rate (1 source = `rate` target)
31
+ * @returns Minor-unit amount in the target currency
32
+ */
33
+ export function directConversion(amount: number, rate: number): number {
34
+ return Math.round(amount * rate);
35
+ }
36
+
37
+ /**
38
+ * Inverse conversion: target currency → base currency.
39
+ * Divides the amount by the rate.
40
+ *
41
+ * @param amount - Minor-unit amount in the source currency
42
+ * @param rate - Conversion rate of source relative to base (1 base = `rate` source)
43
+ * @returns Minor-unit amount in the base currency
44
+ */
45
+ export function inverseConversion(amount: number, rate: number): number {
46
+ if (rate === 0) {
47
+ throw new Error("Cannot perform inverse conversion with a rate of zero.");
48
+ }
49
+ return Math.round(amount / rate);
50
+ }
51
+
52
+ /**
53
+ * Triangular conversion: source → base → target (cross-rate).
54
+ * First divides by the source-to-base rate, then multiplies by the base-to-target rate.
55
+ *
56
+ * @param amount - Minor-unit amount in the source currency
57
+ * @param rateSourceToBase - Rate of source relative to base (1 base = `rate` source)
58
+ * @param rateBaseToTarget - Rate of base to target (1 base = `rate` target)
59
+ * @returns Minor-unit amount in the target currency
60
+ */
61
+ export function triangularConversion(
62
+ amount: number,
63
+ rateSourceToBase: number,
64
+ rateBaseToTarget: number,
65
+ ): number {
66
+ if (rateSourceToBase === 0) {
67
+ throw new Error(
68
+ "Cannot perform triangular conversion: source-to-base rate is zero.",
69
+ );
70
+ }
71
+ const amountInBase = amount / rateSourceToBase;
72
+ return Math.round(amountInBase * rateBaseToTarget);
73
+ }
74
+
75
+ // ── Strategy Registry ──────────────────────────────────────────────────────────
76
+
77
+ /**
78
+ * Named map of conversion strategies.
79
+ * Consumer code and the ExchangeRateStore can select a strategy by name.
80
+ * Extensible: register additional strategies before store initialization.
81
+ *
82
+ * @example
83
+ * ```ts
84
+ * CONVERSION_STRATEGIES["crypto"] = (amount, rate) => {
85
+ * // 18-decimal precision logic
86
+ * };
87
+ * ```
88
+ */
89
+ export const CONVERSION_STRATEGIES: Record<string, ConversionFn> = {
90
+ direct: directConversion,
91
+ inverse: inverseConversion,
92
+ // triangularConversion takes 2 rates — wrapped for the registry signature
93
+ triangular: (amount: number, ...rates: number[]) =>
94
+ triangularConversion(amount, rates[0], rates[1]),
95
+ };
@@ -0,0 +1,27 @@
1
+ export {
2
+ addMoney,
3
+ convertAmount,
4
+ convertMoney,
5
+ createMoney,
6
+ CURRENCY_MAP,
7
+ type Dinero,
8
+ type DineroCurrency,
9
+ type DineroSnapshot,
10
+ formatAmount,
11
+ formatMoney,
12
+ fromMoneySnapshot,
13
+ type ISO4217Code,
14
+ multiplyMoney,
15
+ type RateMap,
16
+ registerCurrency,
17
+ safeAmount,
18
+ type ScaledRate,
19
+ scaledRate,
20
+ subtractMoney,
21
+ toAdyenMoney,
22
+ toMinorUnit,
23
+ toMoneySnapshot,
24
+ toPaypalMoney,
25
+ toSquareMoney,
26
+ toStripeMoney,
27
+ } from "./money.ts";
@@ -0,0 +1,261 @@
1
+ // sdk/state/src/composables/useMoney.ts
2
+ // Context-aware money composable that reads CurrencyStore + LanguageStore
3
+
4
+ import { getContext } from "svelte";
5
+ import { RUNE_LAB_CONTEXT } from "@rune-lab/kernel";
6
+ import type { ConfigStore } from "@rune-lab/kernel";
7
+ import {
8
+ addMoney,
9
+ convertMoney,
10
+ createMoney,
11
+ formatMoney,
12
+ multiplyMoney,
13
+ subtractMoney,
14
+ toAdyenMoney,
15
+ toMinorUnit,
16
+ toMoneySnapshot,
17
+ toPaypalMoney,
18
+ toSquareMoney,
19
+ toStripeMoney,
20
+ } from "@rune-lab/money";
21
+ import type {
22
+ CurrencyStore,
23
+ Dinero,
24
+ ExchangeRateStore,
25
+ ISO4217Code,
26
+ } from "@rune-lab/money";
27
+
28
+ export interface UseMoneyReturn {
29
+ toDinero: (
30
+ amount: number | null | undefined,
31
+ currencyCode?: ISO4217Code | string,
32
+ unit?: "major" | "minor",
33
+ ) => Dinero<number>;
34
+ format: (
35
+ amount: number | null | undefined,
36
+ currencyCode?: ISO4217Code | string,
37
+ unit?: "major" | "minor",
38
+ localeOverride?: string,
39
+ ) => string;
40
+ add: (
41
+ a: number,
42
+ b: number,
43
+ currencyCode?: ISO4217Code | string,
44
+ unit?: "major" | "minor",
45
+ ) => Dinero<number>;
46
+ subtract: (
47
+ a: number,
48
+ b: number,
49
+ currencyCode?: ISO4217Code | string,
50
+ unit?: "major" | "minor",
51
+ ) => Dinero<number>;
52
+ convert: (
53
+ amount: number,
54
+ fromCode: string,
55
+ unit?: "major" | "minor",
56
+ ) => Dinero<number>;
57
+ formatConverted: (
58
+ amount: number,
59
+ fromCode: string,
60
+ unit?: "major" | "minor",
61
+ ) => string;
62
+ toPayload: (
63
+ amount: number,
64
+ currencyCode?: string,
65
+ target?: "stripe" | "paypal" | "adyen" | "square",
66
+ unit?: "major" | "minor",
67
+ ) =>
68
+ | { amount: number; currency: string }
69
+ | { value: string; currency_code: string }
70
+ | { value: number; currency: string }
71
+ | { amount: bigint; currency: string };
72
+ multiply: (
73
+ amount: number,
74
+ factor: number,
75
+ currencyCode?: ISO4217Code | string,
76
+ unit?: "major" | "minor",
77
+ ) => Dinero<number>;
78
+ }
79
+
80
+ /**
81
+ * Context-aware money composable.
82
+ * Reads CurrencyStore and LanguageStore from rune-lab context.
83
+ *
84
+ * Usage:
85
+ * const { format, toDinero, add, subtract, convert } = useMoney();
86
+ * const display = format(150.00, undefined, 'major'); // "$150.00"
87
+ */
88
+ export function useMoney(): UseMoneyReturn {
89
+ const currencyStore = getContext<CurrencyStore>(RUNE_LAB_CONTEXT.currency);
90
+ const languageStore = getContext<ConfigStore<unknown>>(
91
+ RUNE_LAB_CONTEXT.language,
92
+ );
93
+ const exchangeRateStore = getContext<ExchangeRateStore>(
94
+ RUNE_LAB_CONTEXT.exchangeRate,
95
+ );
96
+
97
+ /**
98
+ * Convert amount to a Dinero object using current currency
99
+ */
100
+ function toDinero(
101
+ amount: number | null | undefined,
102
+ currencyCode?: ISO4217Code | string,
103
+ unit: "major" | "minor" = "minor",
104
+ ): Dinero<number> {
105
+ const code = currencyCode ?? String(currencyStore.current);
106
+ const minorAmount =
107
+ unit === "major" && amount !== null && amount !== undefined
108
+ ? toMinorUnit(Number(amount), code)
109
+ : amount;
110
+ return createMoney(minorAmount, code);
111
+ }
112
+
113
+ /**
114
+ * Format an amount as a locale-aware currency string
115
+ */
116
+ function format(
117
+ amount: number | null | undefined,
118
+ currencyCode?: ISO4217Code | string,
119
+ unit: "major" | "minor" = "minor",
120
+ localeOverride?: string,
121
+ ): string {
122
+ if (
123
+ amount === null || amount === undefined ||
124
+ (typeof amount === "number" && isNaN(amount))
125
+ ) {
126
+ return "—";
127
+ }
128
+
129
+ const code = currencyCode ?? String(currencyStore.current);
130
+ const locale = localeOverride ?? (String(languageStore.current) || "en");
131
+
132
+ const minorAmount = unit === "major"
133
+ ? toMinorUnit(Number(amount), code)
134
+ : amount;
135
+
136
+ const money = createMoney(minorAmount, code);
137
+ return formatMoney(money, locale, code);
138
+ }
139
+
140
+ /**
141
+ * Converts an amount from fromCode to the current display currency.
142
+ */
143
+ function convert(
144
+ amount: number,
145
+ fromCode: string,
146
+ unit: "major" | "minor" = "minor",
147
+ ): Dinero<number> {
148
+ const minorAmount = unit === "major"
149
+ ? toMinorUnit(amount, fromCode)
150
+ : amount;
151
+ const currentCode = String(currencyStore.current);
152
+
153
+ if (!exchangeRateStore?.hasRates || fromCode === currentCode) {
154
+ return createMoney(minorAmount, fromCode);
155
+ }
156
+
157
+ const sourceMoney = createMoney(minorAmount, fromCode);
158
+ return convertMoney(sourceMoney, currentCode, exchangeRateStore.rates);
159
+ }
160
+
161
+ /**
162
+ * Convenience: converts and formats an amount in one go.
163
+ */
164
+ function formatConverted(
165
+ amount: number,
166
+ fromCode: string,
167
+ unit: "major" | "minor" = "minor",
168
+ ): string {
169
+ const money = convert(amount, fromCode, unit);
170
+ const locale = String(languageStore.current) || "en";
171
+ const currentCode = String(currencyStore.current);
172
+ const snapshot = toMoneySnapshot(money);
173
+
174
+ // If conversion didn't happen (no rates), format as original currency
175
+ const displayCode = exchangeRateStore?.hasRates
176
+ ? currentCode
177
+ : snapshot.currency;
178
+
179
+ return formatMoney(money, locale, displayCode);
180
+ }
181
+
182
+ /**
183
+ * Multiply an amount by a factor.
184
+ */
185
+ function multiply(
186
+ amount: number,
187
+ factor: number,
188
+ currencyCode?: ISO4217Code | string,
189
+ unit: "major" | "minor" = "minor",
190
+ ): Dinero<number> {
191
+ const money = toDinero(amount, currencyCode, unit);
192
+ return multiplyMoney(money, factor);
193
+ }
194
+
195
+ /**
196
+ * Format an amount for a specific payment provider payload.
197
+ */
198
+ function toPayload(
199
+ amount: number,
200
+ currencyCode?: string,
201
+ target: "stripe" | "paypal" | "adyen" | "square" = "stripe",
202
+ unit: "major" | "minor" = "minor",
203
+ ) {
204
+ const code = currencyCode ?? String(currencyStore.current);
205
+ const money = toDinero(amount, code, unit);
206
+
207
+ switch (target) {
208
+ case "stripe":
209
+ return toStripeMoney(money);
210
+ case "paypal":
211
+ return toPaypalMoney(money);
212
+ case "adyen":
213
+ return toAdyenMoney(money);
214
+ case "square":
215
+ return toSquareMoney(money);
216
+ default:
217
+ return toStripeMoney(money);
218
+ }
219
+ }
220
+
221
+ /**
222
+ * Add two amounts in the current currency
223
+ */
224
+ function add(
225
+ a: number,
226
+ b: number,
227
+ currencyCode?: ISO4217Code | string,
228
+ unit: "major" | "minor" = "minor",
229
+ ): Dinero<number> {
230
+ const code = currencyCode ?? String(currencyStore.current);
231
+ const aMoney = toDinero(a, code, unit);
232
+ const bMoney = toDinero(b, code, unit);
233
+ return addMoney(aMoney, bMoney);
234
+ }
235
+
236
+ /**
237
+ * Subtract two amounts in the current currency
238
+ */
239
+ function subtract(
240
+ a: number,
241
+ b: number,
242
+ currencyCode?: ISO4217Code | string,
243
+ unit: "major" | "minor" = "minor",
244
+ ): Dinero<number> {
245
+ const code = currencyCode ?? String(currencyStore.current);
246
+ const aMoney = toDinero(a, code, unit);
247
+ const bMoney = toDinero(b, code, unit);
248
+ return subtractMoney(aMoney, bMoney);
249
+ }
250
+
251
+ return {
252
+ toDinero,
253
+ format,
254
+ add,
255
+ subtract,
256
+ convert,
257
+ formatConverted,
258
+ toPayload,
259
+ multiply,
260
+ };
261
+ }
@@ -0,0 +1,132 @@
1
+ // sdk/state/src/composables/useMoneyFilter.ts
2
+
3
+ import { getContext, untrack } from "svelte";
4
+ import { RUNE_LAB_CONTEXT } from "@rune-lab/kernel";
5
+ import type { CurrencyStore } from "@rune-lab/money";
6
+ import { useMoney } from "./useMoney.ts";
7
+
8
+ export interface MoneyFilterOptions {
9
+ min?: number;
10
+ max?: number;
11
+ unit?: "major" | "minor";
12
+ autoConvertOnChange?: boolean;
13
+ }
14
+
15
+ export interface UseMoneyFilterReturn {
16
+ min: number;
17
+ max: number;
18
+ readonly displayMin: string;
19
+ readonly displayMax: string;
20
+ setMin: (value: number) => void;
21
+ setMax: (value: number) => void;
22
+ reset: () => void;
23
+ matches: (amount: number, entityCurrency: string) => boolean;
24
+ }
25
+
26
+ /**
27
+ * A reactive currency-aware filter composable.
28
+ * Handles min/max thresholds that auto-convert when the display currency changes.
29
+ */
30
+ export function useMoneyFilter(
31
+ options: MoneyFilterOptions = {},
32
+ ): UseMoneyFilterReturn {
33
+ const currencyStore = getContext<CurrencyStore>(RUNE_LAB_CONTEXT.currency);
34
+ const { format } = useMoney();
35
+
36
+ let min = $state(options.min ?? 0);
37
+ let max = $state(options.max ?? Infinity);
38
+ const unit = options.unit ?? "minor";
39
+ const autoConvertOnChange = options.autoConvertOnChange ?? true;
40
+
41
+ let lastCurrency = $state(String(currencyStore.current));
42
+
43
+ $effect(() => {
44
+ const currentCurrency = String(currencyStore.current);
45
+ const previousCurrency = untrack(() => lastCurrency);
46
+
47
+ if (autoConvertOnChange && currentCurrency !== previousCurrency) {
48
+ if (currencyStore.canConvert) {
49
+ if (min !== 0) {
50
+ min = currencyStore.convertAmount(
51
+ min,
52
+ previousCurrency,
53
+ currentCurrency,
54
+ );
55
+ }
56
+ if (max !== Infinity) {
57
+ max = currencyStore.convertAmount(
58
+ max,
59
+ previousCurrency,
60
+ currentCurrency,
61
+ );
62
+ }
63
+ } else {
64
+ // Reset if no rates available
65
+ min = 0;
66
+ max = Infinity;
67
+ }
68
+ untrack(() => {
69
+ lastCurrency = currentCurrency;
70
+ });
71
+ }
72
+ });
73
+
74
+ function setMin(value: number) {
75
+ min = value;
76
+ }
77
+
78
+ function setMax(value: number) {
79
+ max = value;
80
+ }
81
+
82
+ function reset() {
83
+ min = 0;
84
+ max = Infinity;
85
+ }
86
+
87
+ /**
88
+ * Checks if an amount (in its entity currency) matches the current filter.
89
+ */
90
+ function matches(amount: number, entityCurrency: string): boolean {
91
+ const currentCurrency = String(currencyStore.current);
92
+
93
+ // Convert entity amount to display currency for comparison
94
+ const convertedAmount = currencyStore.convertAmount(
95
+ amount,
96
+ entityCurrency,
97
+ currentCurrency,
98
+ );
99
+
100
+ return convertedAmount >= min && convertedAmount <= max;
101
+ }
102
+
103
+ const displayMin = $derived(format(min, undefined, unit));
104
+ const displayMax = $derived(
105
+ max === Infinity ? "∞" : format(max, undefined, unit),
106
+ );
107
+
108
+ return {
109
+ get min() {
110
+ return min;
111
+ },
112
+ set min(v) {
113
+ min = v;
114
+ },
115
+ get max() {
116
+ return max;
117
+ },
118
+ set max(v) {
119
+ max = v;
120
+ },
121
+ get displayMin() {
122
+ return displayMin;
123
+ },
124
+ get displayMax() {
125
+ return displayMax;
126
+ },
127
+ setMin,
128
+ setMax,
129
+ reset,
130
+ matches,
131
+ };
132
+ }
package/tsconfig.json ADDED
@@ -0,0 +1,41 @@
1
+ {
2
+ "compilerOptions": {
3
+ "lib": [
4
+ "ESNext",
5
+ "DOM",
6
+ "DOM.Iterable",
7
+ "DOM.AsyncIterable"
8
+ ],
9
+ // Set modern JS target
10
+ "target": "ESNext",
11
+ "module": "ESNext",
12
+ // Resolution & Extensions
13
+ "moduleResolution": "bundler",
14
+ "allowImportingTsExtensions": true,
15
+ "noEmit": true,
16
+ "skipLibCheck": true,
17
+ "paths": {
18
+ "@rune-lab/kernel": [
19
+ "./src/kernel/src/mod.ts"
20
+ ],
21
+ "@rune-lab/layout": [
22
+ "./src/runes/layout/src/mod.ts"
23
+ ],
24
+ "@rune-lab/palettes": [
25
+ "./src/runes/palettes/src/mod.ts"
26
+ ],
27
+ "@rune-lab/money": [
28
+ "./src/runes/plugins/money/src/mod.ts"
29
+ ],
30
+ "@rune-lab/i18n/*": [
31
+ "./src/i18n/*"
32
+ ]
33
+ }
34
+ },
35
+ "exclude": [
36
+ "scripts/**",
37
+ "dist/**",
38
+ ".old/**",
39
+ "**/*.test.ts"
40
+ ]
41
+ }
package/vite.config.ts ADDED
@@ -0,0 +1,44 @@
1
+ // vite plus
2
+ import { defineConfig } from "vite-plus";
3
+ // customization
4
+ import tailwindcss from "@tailwindcss/vite";
5
+ import { paraglideVitePlugin } from "@inlang/paraglide-js";
6
+ // main framework
7
+ import { svelte } from "@sveltejs/vite-plugin-svelte";
8
+
9
+ export default defineConfig({
10
+ plugins: [
11
+ svelte(),
12
+ tailwindcss(),
13
+ paraglideVitePlugin({
14
+ project: "./src/i18n/project.inlang",
15
+ outdir: "./src/i18n/paraglide",
16
+ }),
17
+ ],
18
+ test: {
19
+ environment: "jsdom",
20
+ setupFiles: ["@testing-library/jest-dom/vitest"],
21
+ },
22
+ build: {
23
+ lib: {
24
+ entry: "./src/mod.ts",
25
+ formats: ["es"],
26
+ },
27
+ outDir: "dist",
28
+ rollupOptions: {
29
+ external: [
30
+ "svelte",
31
+ /^svelte\//,
32
+ "esm-env",
33
+ /^@sveltejs\//,
34
+ /^@inlang\//,
35
+ "hotkeys-js",
36
+ ],
37
+ output: {
38
+ preserveModules: true,
39
+ preserveModulesRoot: "src",
40
+ entryFileNames: "[name].ts",
41
+ },
42
+ },
43
+ },
44
+ });
@@ -1,4 +0,0 @@
1
- export * from "./internal/message-resolver";
2
- export * from "./persistence/types";
3
- export * from "./money/index";
4
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/sdk/core/src/index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC;AAE5C,cAAc,qBAAqB,CAAC;AAEpC,cAAc,eAAe,CAAC"}
@@ -1,3 +0,0 @@
1
- export * from "./internal/message-resolver";
2
- export * from "./persistence/types";
3
- export * from "./money/index";
@@ -1,42 +0,0 @@
1
- /**
2
- * Dynamic i18n Message Resolver Pattern
3
- *
4
- * Enables dynamic message function calls for config selectors.
5
- * Creates a resolver that dynamically looks up and calls message functions.
6
- */
7
- type MessageBundle = Record<string, (...args: any[]) => string>;
8
- interface MessageResolverConfig<T> {
9
- /**
10
- * Function to extract the message key from an option
11
- * @example (currency) => currency.code // "USD"
12
- */
13
- keyExtractor: (option: T) => string;
14
- /**
15
- * Optional transformer for the key before message lookup
16
- * @example (key) => key.toLowerCase() // "USD" -> "usd"
17
- */
18
- keyTransformer?: (key: string) => string;
19
- }
20
- /**
21
- * Creates a message resolver function for dynamic i18n lookups
22
- *
23
- * @example
24
- * ```typescript
25
- * const getCurrencyLabel = createMessageResolver<Currency>(m, {
26
- * keyExtractor: (currency) => currency.code
27
- * });
28
- *
29
- * getCurrencyLabel({ code: "EUR", symbol: "€" }); // "Euro"
30
- * ```
31
- */
32
- export declare function createMessageResolver<T>(messages: MessageBundle, config: MessageResolverConfig<T>): (option: T) => string;
33
- /**
34
- * Type guard to check if a message key exists
35
- */
36
- export declare function hasMessage(messages: MessageBundle, key: string): boolean;
37
- /**
38
- * Batch resolver for multiple options at once
39
- */
40
- export declare function batchResolveMessages<T>(messages: MessageBundle, options: T[], config: MessageResolverConfig<T>): Record<string, string>;
41
- export {};
42
- //# sourceMappingURL=message-resolver.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"message-resolver.d.ts","sourceRoot":"","sources":["../../../src/sdk/core/src/internal/message-resolver.ts"],"names":[],"mappings":"AAGA;;;;;GAKG;AAEH,KAAK,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,MAAM,CAAC,CAAC;AAEhE,UAAU,qBAAqB,CAAC,CAAC;IAC/B;;;OAGG;IACH,YAAY,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,MAAM,CAAC;IAEpC;;;OAGG;IACH,cAAc,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC;CAC1C;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,EACrC,QAAQ,EAAE,aAAa,EACvB,MAAM,EAAE,qBAAqB,CAAC,CAAC,CAAC,IAExB,QAAQ,CAAC,KAAG,MAAM,CAmB3B;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAExE;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,EACpC,QAAQ,EAAE,aAAa,EACvB,OAAO,EAAE,CAAC,EAAE,EACZ,MAAM,EAAE,qBAAqB,CAAC,CAAC,CAAC,GAC/B,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAQxB"}