rune-lab 0.4.0 → 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 (433) hide show
  1. package/.gitignore +12 -0
  2. package/README.md +3 -3
  3. package/deno.json +50 -0
  4. package/justfile +5 -0
  5. package/package.json +2 -79
  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/{dist/state/persistence/provider.js → src/kernel/src/persistence/provider.ts} +29 -14
  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 +1 -1
  52. package/{dist/ui/layout → src/runes/layout/src}/ConnectedWorkspaceStrip.svelte +1 -1
  53. package/src/runes/layout/src/Icon.svelte +7 -0
  54. package/{dist/ui/features/config → src/runes/layout/src}/LanguageSelector.svelte +7 -5
  55. package/{dist/ui/layout → src/runes/layout/src}/NavigationPanel.svelte +1 -4
  56. package/{dist/ui/features/config → src/runes/layout/src}/ResourceSelector.svelte +3 -5
  57. package/{dist/ui/features/config → src/runes/layout/src}/ThemeSelector.svelte +2 -2
  58. package/{dist/ui/layout → src/runes/layout/src}/WorkspaceLayout.svelte +6 -4
  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/{dist/ui/features/config → src/runes/plugins/money/src}/CurrencySelector.svelte +2 -2
  82. package/{dist/ui/components/money → src/runes/plugins/money/src}/MoneyDisplay.svelte +2 -2
  83. package/{dist/ui/components/money → src/runes/plugins/money/src}/MoneyInput.svelte +4 -8
  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/{dist/core/exchange-rate/strategies.js → src/runes/plugins/money/src/strategies.ts} +45 -22
  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/design-tokens/props.d.ts +0 -52
  101. package/dist/core/design-tokens/props.d.ts.map +0 -1
  102. package/dist/core/design-tokens/props.js +0 -34
  103. package/dist/core/exchange-rate/strategies.d.ts +0 -52
  104. package/dist/core/exchange-rate/strategies.d.ts.map +0 -1
  105. package/dist/core/index.d.ts +0 -9
  106. package/dist/core/index.d.ts.map +0 -1
  107. package/dist/core/index.js +0 -8
  108. package/dist/core/internal/message-resolver.d.ts +0 -42
  109. package/dist/core/internal/message-resolver.d.ts.map +0 -1
  110. package/dist/core/internal/message-resolver.js +0 -47
  111. package/dist/core/layout/types.d.ts +0 -60
  112. package/dist/core/layout/types.d.ts.map +0 -1
  113. package/dist/core/layout/types.js +0 -4
  114. package/dist/core/money/index.d.ts +0 -2
  115. package/dist/core/money/index.d.ts.map +0 -1
  116. package/dist/core/money/index.js +0 -2
  117. package/dist/core/money/money-primitive.d.ts +0 -101
  118. package/dist/core/money/money-primitive.d.ts.map +0 -1
  119. package/dist/core/money/money-primitive.js +0 -161
  120. package/dist/core/money/money.d.ts +0 -129
  121. package/dist/core/money/money.d.ts.map +0 -1
  122. package/dist/core/money/money.js +0 -250
  123. package/dist/core/persistence/types.d.ts +0 -18
  124. package/dist/core/persistence/types.d.ts.map +0 -1
  125. package/dist/core/persistence/types.js +0 -2
  126. package/dist/core/shortcuts/types.d.ts +0 -60
  127. package/dist/core/shortcuts/types.d.ts.map +0 -1
  128. package/dist/core/shortcuts/types.js +0 -4
  129. package/dist/index.d.ts +0 -6
  130. package/dist/index.js +0 -7
  131. package/dist/state/api.svelte.d.ts +0 -26
  132. package/dist/state/api.svelte.js +0 -65
  133. package/dist/state/app.svelte.d.ts +0 -48
  134. package/dist/state/app.svelte.js +0 -82
  135. package/dist/state/auth/index.d.ts +0 -2
  136. package/dist/state/auth/index.js +0 -2
  137. package/dist/state/auth/session.svelte.d.ts +0 -40
  138. package/dist/state/auth/session.svelte.js +0 -59
  139. package/dist/state/auth/types.d.ts +0 -30
  140. package/dist/state/auth/types.js +0 -3
  141. package/dist/state/cart.svelte.d.ts +0 -64
  142. package/dist/state/cart.svelte.js +0 -122
  143. package/dist/state/commands.svelte.d.ts +0 -46
  144. package/dist/state/commands.svelte.js +0 -62
  145. package/dist/state/composables/useMoney.d.ts +0 -31
  146. package/dist/state/composables/useMoney.js +0 -126
  147. package/dist/state/composables/useMoneyFilter.d.ts +0 -20
  148. package/dist/state/composables/useMoneyFilter.js +0 -81
  149. package/dist/state/composables/usePersistence.d.ts +0 -2
  150. package/dist/state/composables/usePersistence.js +0 -5
  151. package/dist/state/composables/useRuneLab.d.ts +0 -19
  152. package/dist/state/composables/useRuneLab.js +0 -30
  153. package/dist/state/composables/useShortcuts.d.ts +0 -33
  154. package/dist/state/composables/useShortcuts.js +0 -75
  155. package/dist/state/context.d.ts +0 -15
  156. package/dist/state/context.js +0 -16
  157. package/dist/state/createConfigStore.svelte.d.ts +0 -28
  158. package/dist/state/createConfigStore.svelte.js +0 -72
  159. package/dist/state/currency.svelte.d.ts +0 -32
  160. package/dist/state/currency.svelte.js +0 -96
  161. package/dist/state/currency.test.d.ts +0 -1
  162. package/dist/state/currency.test.js +0 -35
  163. package/dist/state/exchange-rate.svelte.d.ts +0 -43
  164. package/dist/state/exchange-rate.svelte.js +0 -145
  165. package/dist/state/exchange-rate.test.d.ts +0 -1
  166. package/dist/state/exchange-rate.test.js +0 -75
  167. package/dist/state/index.d.ts +0 -26
  168. package/dist/state/index.js +0 -32
  169. package/dist/state/language.svelte.d.ts +0 -57
  170. package/dist/state/language.svelte.js +0 -43
  171. package/dist/state/layout.svelte.d.ts +0 -49
  172. package/dist/state/layout.svelte.js +0 -108
  173. package/dist/state/persistence/drivers.d.ts +0 -12
  174. package/dist/state/persistence/drivers.js +0 -75
  175. package/dist/state/persistence/drivers.test.d.ts +0 -1
  176. package/dist/state/persistence/drivers.test.js +0 -79
  177. package/dist/state/persistence/provider.d.ts +0 -23
  178. package/dist/state/persistence/provider.test.d.ts +0 -1
  179. package/dist/state/persistence/provider.test.js +0 -51
  180. package/dist/state/registry/index.d.ts +0 -44
  181. package/dist/state/registry/index.js +0 -58
  182. package/dist/state/registry/registry.test.d.ts +0 -1
  183. package/dist/state/registry/registry.test.js +0 -112
  184. package/dist/state/registry/types.d.ts +0 -20
  185. package/dist/state/registry/types.js +0 -3
  186. package/dist/state/shortcuts.svelte.d.ts +0 -121
  187. package/dist/state/shortcuts.svelte.js +0 -222
  188. package/dist/state/theme.svelte.d.ts +0 -15
  189. package/dist/state/theme.svelte.js +0 -92
  190. package/dist/state/toast-bridge.d.ts +0 -29
  191. package/dist/state/toast-bridge.js +0 -43
  192. package/dist/state/toast.svelte.d.ts +0 -27
  193. package/dist/state/toast.svelte.js +0 -43
  194. package/dist/ui/actions/portal.d.ts +0 -7
  195. package/dist/ui/actions/portal.js +0 -32
  196. package/dist/ui/components/ApiMonitor.svelte +0 -162
  197. package/dist/ui/components/ApiMonitor.svelte.d.ts +0 -3
  198. package/dist/ui/components/Icon.svelte +0 -108
  199. package/dist/ui/components/Icon.svelte.d.ts +0 -14
  200. package/dist/ui/components/Kyntharil.svelte +0 -48
  201. package/dist/ui/components/Kyntharil.svelte.d.ts +0 -6
  202. package/dist/ui/components/RuneProvider.svelte +0 -218
  203. package/dist/ui/components/RuneProvider.svelte.d.ts +0 -49
  204. package/dist/ui/components/Toaster.svelte.d.ts +0 -18
  205. package/dist/ui/components/money/MoneyDisplay.svelte.d.ts +0 -33
  206. package/dist/ui/components/money/MoneyDisplay.svelte.test.d.ts +0 -1
  207. package/dist/ui/components/money/MoneyDisplay.svelte.test.js +0 -117
  208. package/dist/ui/components/money/MoneyInput.svelte.d.ts +0 -34
  209. package/dist/ui/components/money/index.d.ts +0 -2
  210. package/dist/ui/components/money/index.js +0 -3
  211. package/dist/ui/components/user/UserAvatar.svelte +0 -66
  212. package/dist/ui/components/user/UserAvatar.svelte.d.ts +0 -13
  213. package/dist/ui/components/user/UserProfile.svelte +0 -79
  214. package/dist/ui/components/user/UserProfile.svelte.d.ts +0 -17
  215. package/dist/ui/components/user/index.d.ts +0 -2
  216. package/dist/ui/components/user/index.js +0 -3
  217. package/dist/ui/features/command-palette/CommandPalette.svelte.d.ts +0 -6
  218. package/dist/ui/features/config/APP_CONFIGURATIONS.d.ts +0 -29
  219. package/dist/ui/features/config/APP_CONFIGURATIONS.js +0 -38
  220. package/dist/ui/features/config/AppSettingSelector.svelte.d.ts +0 -13
  221. package/dist/ui/features/config/CurrencySelector.svelte.d.ts +0 -8
  222. package/dist/ui/features/config/LanguageSelector.svelte.d.ts +0 -8
  223. package/dist/ui/features/config/ResourceSelector.svelte.d.ts +0 -25
  224. package/dist/ui/features/config/ThemeSelector.svelte.d.ts +0 -8
  225. package/dist/ui/features/notifications/NotificationBell.svelte.d.ts +0 -11
  226. package/dist/ui/features/notifications/index.d.ts +0 -1
  227. package/dist/ui/features/notifications/index.js +0 -2
  228. package/dist/ui/features/shortcuts/ShortcutBinder.svelte +0 -17
  229. package/dist/ui/features/shortcuts/ShortcutBinder.svelte.d.ts +0 -7
  230. package/dist/ui/features/shortcuts/ShortcutPalette.svelte.d.ts +0 -6
  231. package/dist/ui/index.d.ts +0 -30
  232. package/dist/ui/index.js +0 -46
  233. package/dist/ui/layout/ConnectedNavigationPanel.svelte.d.ts +0 -10
  234. package/dist/ui/layout/ConnectedWorkspaceStrip.svelte.d.ts +0 -9
  235. package/dist/ui/layout/ContentArea.svelte.d.ts +0 -8
  236. package/dist/ui/layout/DetailPanel.svelte.d.ts +0 -7
  237. package/dist/ui/layout/NavigationPanel.svelte.d.ts +0 -14
  238. package/dist/ui/layout/WorkspaceLayout.svelte.d.ts +0 -32
  239. package/dist/ui/layout/WorkspaceStrip.svelte.d.ts +0 -11
  240. package/dist/ui/layout/connection-factory.d.ts +0 -50
  241. package/dist/ui/layout/connection-factory.js +0 -58
  242. package/dist/ui/layout/index.d.ts +0 -7
  243. package/dist/ui/layout/index.js +0 -7
  244. package/dist/ui/paraglide/README.md +0 -147
  245. package/dist/ui/paraglide/messages/_index.d.ts +0 -87
  246. package/dist/ui/paraglide/messages/_index.js +0 -88
  247. package/dist/ui/paraglide/messages/abyss.d.ts +0 -16
  248. package/dist/ui/paraglide/messages/abyss.js +0 -84
  249. package/dist/ui/paraglide/messages/acid.d.ts +0 -16
  250. package/dist/ui/paraglide/messages/acid.js +0 -84
  251. package/dist/ui/paraglide/messages/active_toasts.d.ts +0 -16
  252. package/dist/ui/paraglide/messages/active_toasts.js +0 -84
  253. package/dist/ui/paraglide/messages/aed3.d.ts +0 -17
  254. package/dist/ui/paraglide/messages/aed3.js +0 -85
  255. package/dist/ui/paraglide/messages/all_currencies.d.ts +0 -16
  256. package/dist/ui/paraglide/messages/all_currencies.js +0 -84
  257. package/dist/ui/paraglide/messages/all_languages.d.ts +0 -16
  258. package/dist/ui/paraglide/messages/all_languages.js +0 -84
  259. package/dist/ui/paraglide/messages/all_themes.d.ts +0 -16
  260. package/dist/ui/paraglide/messages/all_themes.js +0 -84
  261. package/dist/ui/paraglide/messages/api_status.d.ts +0 -16
  262. package/dist/ui/paraglide/messages/api_status.js +0 -84
  263. package/dist/ui/paraglide/messages/app_info.d.ts +0 -16
  264. package/dist/ui/paraglide/messages/app_info.js +0 -84
  265. package/dist/ui/paraglide/messages/appearance.d.ts +0 -16
  266. package/dist/ui/paraglide/messages/appearance.js +0 -84
  267. package/dist/ui/paraglide/messages/aqua.d.ts +0 -16
  268. package/dist/ui/paraglide/messages/aqua.js +0 -84
  269. package/dist/ui/paraglide/messages/ar.d.ts +0 -16
  270. package/dist/ui/paraglide/messages/ar.js +0 -84
  271. package/dist/ui/paraglide/messages/autumn.d.ts +0 -16
  272. package/dist/ui/paraglide/messages/autumn.js +0 -84
  273. package/dist/ui/paraglide/messages/black.d.ts +0 -16
  274. package/dist/ui/paraglide/messages/black.js +0 -84
  275. package/dist/ui/paraglide/messages/brl3.d.ts +0 -17
  276. package/dist/ui/paraglide/messages/brl3.js +0 -85
  277. package/dist/ui/paraglide/messages/bumblebee.d.ts +0 -16
  278. package/dist/ui/paraglide/messages/bumblebee.js +0 -84
  279. package/dist/ui/paraglide/messages/business.d.ts +0 -16
  280. package/dist/ui/paraglide/messages/business.js +0 -84
  281. package/dist/ui/paraglide/messages/cad3.d.ts +0 -17
  282. package/dist/ui/paraglide/messages/cad3.js +0 -85
  283. package/dist/ui/paraglide/messages/caramellatte.d.ts +0 -16
  284. package/dist/ui/paraglide/messages/caramellatte.js +0 -84
  285. package/dist/ui/paraglide/messages/cmyk.d.ts +0 -16
  286. package/dist/ui/paraglide/messages/cmyk.js +0 -84
  287. package/dist/ui/paraglide/messages/cny3.d.ts +0 -17
  288. package/dist/ui/paraglide/messages/cny3.js +0 -85
  289. package/dist/ui/paraglide/messages/coffee.d.ts +0 -16
  290. package/dist/ui/paraglide/messages/coffee.js +0 -84
  291. package/dist/ui/paraglide/messages/commands_label.d.ts +0 -16
  292. package/dist/ui/paraglide/messages/commands_label.js +0 -84
  293. package/dist/ui/paraglide/messages/corporate.d.ts +0 -16
  294. package/dist/ui/paraglide/messages/corporate.js +0 -84
  295. package/dist/ui/paraglide/messages/cupcake.d.ts +0 -16
  296. package/dist/ui/paraglide/messages/cupcake.js +0 -84
  297. package/dist/ui/paraglide/messages/currency.d.ts +0 -16
  298. package/dist/ui/paraglide/messages/currency.js +0 -84
  299. package/dist/ui/paraglide/messages/current_currency.d.ts +0 -16
  300. package/dist/ui/paraglide/messages/current_currency.js +0 -84
  301. package/dist/ui/paraglide/messages/current_language.d.ts +0 -16
  302. package/dist/ui/paraglide/messages/current_language.js +0 -84
  303. package/dist/ui/paraglide/messages/current_theme.d.ts +0 -16
  304. package/dist/ui/paraglide/messages/current_theme.js +0 -84
  305. package/dist/ui/paraglide/messages/currently_in_queue.d.ts +0 -16
  306. package/dist/ui/paraglide/messages/currently_in_queue.js +0 -84
  307. package/dist/ui/paraglide/messages/cyberpunk.d.ts +0 -16
  308. package/dist/ui/paraglide/messages/cyberpunk.js +0 -84
  309. package/dist/ui/paraglide/messages/dark.d.ts +0 -16
  310. package/dist/ui/paraglide/messages/dark.js +0 -84
  311. package/dist/ui/paraglide/messages/de.d.ts +0 -16
  312. package/dist/ui/paraglide/messages/de.js +0 -84
  313. package/dist/ui/paraglide/messages/dim.d.ts +0 -16
  314. package/dist/ui/paraglide/messages/dim.js +0 -84
  315. package/dist/ui/paraglide/messages/dracula.d.ts +0 -16
  316. package/dist/ui/paraglide/messages/dracula.js +0 -84
  317. package/dist/ui/paraglide/messages/emerald.d.ts +0 -16
  318. package/dist/ui/paraglide/messages/emerald.js +0 -84
  319. package/dist/ui/paraglide/messages/en.d.ts +0 -16
  320. package/dist/ui/paraglide/messages/en.js +0 -84
  321. package/dist/ui/paraglide/messages/es.d.ts +0 -16
  322. package/dist/ui/paraglide/messages/es.js +0 -84
  323. package/dist/ui/paraglide/messages/eur3.d.ts +0 -17
  324. package/dist/ui/paraglide/messages/eur3.js +0 -85
  325. package/dist/ui/paraglide/messages/extended_controls.d.ts +0 -16
  326. package/dist/ui/paraglide/messages/extended_controls.js +0 -84
  327. package/dist/ui/paraglide/messages/fantasy.d.ts +0 -16
  328. package/dist/ui/paraglide/messages/fantasy.js +0 -84
  329. package/dist/ui/paraglide/messages/forest.d.ts +0 -16
  330. package/dist/ui/paraglide/messages/forest.js +0 -84
  331. package/dist/ui/paraglide/messages/fr.d.ts +0 -16
  332. package/dist/ui/paraglide/messages/fr.js +0 -84
  333. package/dist/ui/paraglide/messages/garden.d.ts +0 -16
  334. package/dist/ui/paraglide/messages/garden.js +0 -84
  335. package/dist/ui/paraglide/messages/gbp3.d.ts +0 -17
  336. package/dist/ui/paraglide/messages/gbp3.js +0 -85
  337. package/dist/ui/paraglide/messages/halloween.d.ts +0 -16
  338. package/dist/ui/paraglide/messages/halloween.js +0 -84
  339. package/dist/ui/paraglide/messages/hello_world.d.ts +0 -18
  340. package/dist/ui/paraglide/messages/hello_world.js +0 -84
  341. package/dist/ui/paraglide/messages/hi.d.ts +0 -16
  342. package/dist/ui/paraglide/messages/hi.js +0 -84
  343. package/dist/ui/paraglide/messages/inr3.d.ts +0 -17
  344. package/dist/ui/paraglide/messages/inr3.js +0 -85
  345. package/dist/ui/paraglide/messages/it.d.ts +0 -16
  346. package/dist/ui/paraglide/messages/it.js +0 -84
  347. package/dist/ui/paraglide/messages/ja.d.ts +0 -16
  348. package/dist/ui/paraglide/messages/ja.js +0 -84
  349. package/dist/ui/paraglide/messages/jpy3.d.ts +0 -17
  350. package/dist/ui/paraglide/messages/jpy3.js +0 -85
  351. package/dist/ui/paraglide/messages/ko.d.ts +0 -16
  352. package/dist/ui/paraglide/messages/ko.js +0 -84
  353. package/dist/ui/paraglide/messages/krw3.d.ts +0 -17
  354. package/dist/ui/paraglide/messages/krw3.js +0 -85
  355. package/dist/ui/paraglide/messages/languages.d.ts +0 -16
  356. package/dist/ui/paraglide/messages/languages.js +0 -84
  357. package/dist/ui/paraglide/messages/lemonade.d.ts +0 -16
  358. package/dist/ui/paraglide/messages/lemonade.js +0 -84
  359. package/dist/ui/paraglide/messages/light.d.ts +0 -16
  360. package/dist/ui/paraglide/messages/light.js +0 -84
  361. package/dist/ui/paraglide/messages/live_store_dashboard.d.ts +0 -16
  362. package/dist/ui/paraglide/messages/live_store_dashboard.js +0 -84
  363. package/dist/ui/paraglide/messages/localization.d.ts +0 -16
  364. package/dist/ui/paraglide/messages/localization.js +0 -84
  365. package/dist/ui/paraglide/messages/lofi.d.ts +0 -16
  366. package/dist/ui/paraglide/messages/lofi.js +0 -84
  367. package/dist/ui/paraglide/messages/luxury.d.ts +0 -16
  368. package/dist/ui/paraglide/messages/luxury.js +0 -84
  369. package/dist/ui/paraglide/messages/mxn3.d.ts +0 -17
  370. package/dist/ui/paraglide/messages/mxn3.js +0 -85
  371. package/dist/ui/paraglide/messages/name_label.d.ts +0 -16
  372. package/dist/ui/paraglide/messages/name_label.js +0 -84
  373. package/dist/ui/paraglide/messages/night.d.ts +0 -16
  374. package/dist/ui/paraglide/messages/night.js +0 -84
  375. package/dist/ui/paraglide/messages/nord.d.ts +0 -16
  376. package/dist/ui/paraglide/messages/nord.js +0 -84
  377. package/dist/ui/paraglide/messages/pastel.d.ts +0 -16
  378. package/dist/ui/paraglide/messages/pastel.js +0 -84
  379. package/dist/ui/paraglide/messages/pt.d.ts +0 -16
  380. package/dist/ui/paraglide/messages/pt.js +0 -84
  381. package/dist/ui/paraglide/messages/real_time_monitor_desc.d.ts +0 -16
  382. package/dist/ui/paraglide/messages/real_time_monitor_desc.js +0 -84
  383. package/dist/ui/paraglide/messages/registered_in_registry.d.ts +0 -16
  384. package/dist/ui/paraglide/messages/registered_in_registry.js +0 -84
  385. package/dist/ui/paraglide/messages/retro.d.ts +0 -16
  386. package/dist/ui/paraglide/messages/retro.js +0 -84
  387. package/dist/ui/paraglide/messages/ru.d.ts +0 -16
  388. package/dist/ui/paraglide/messages/ru.js +0 -84
  389. package/dist/ui/paraglide/messages/silk.d.ts +0 -16
  390. package/dist/ui/paraglide/messages/silk.js +0 -84
  391. package/dist/ui/paraglide/messages/state_label.d.ts +0 -16
  392. package/dist/ui/paraglide/messages/state_label.js +0 -84
  393. package/dist/ui/paraglide/messages/sunset.d.ts +0 -16
  394. package/dist/ui/paraglide/messages/sunset.js +0 -84
  395. package/dist/ui/paraglide/messages/synthwave.d.ts +0 -16
  396. package/dist/ui/paraglide/messages/synthwave.js +0 -84
  397. package/dist/ui/paraglide/messages/system.d.ts +0 -16
  398. package/dist/ui/paraglide/messages/system.js +0 -84
  399. package/dist/ui/paraglide/messages/theme.d.ts +0 -16
  400. package/dist/ui/paraglide/messages/theme.js +0 -84
  401. package/dist/ui/paraglide/messages/themes.d.ts +0 -16
  402. package/dist/ui/paraglide/messages/themes.js +0 -84
  403. package/dist/ui/paraglide/messages/url_label.d.ts +0 -16
  404. package/dist/ui/paraglide/messages/url_label.js +0 -84
  405. package/dist/ui/paraglide/messages/usd3.d.ts +0 -17
  406. package/dist/ui/paraglide/messages/usd3.js +0 -85
  407. package/dist/ui/paraglide/messages/valentine.d.ts +0 -16
  408. package/dist/ui/paraglide/messages/valentine.js +0 -84
  409. package/dist/ui/paraglide/messages/version_label.d.ts +0 -16
  410. package/dist/ui/paraglide/messages/version_label.js +0 -84
  411. package/dist/ui/paraglide/messages/vi.d.ts +0 -16
  412. package/dist/ui/paraglide/messages/vi.js +0 -84
  413. package/dist/ui/paraglide/messages/winter.d.ts +0 -16
  414. package/dist/ui/paraglide/messages/winter.js +0 -84
  415. package/dist/ui/paraglide/messages/wireframe.d.ts +0 -16
  416. package/dist/ui/paraglide/messages/wireframe.js +0 -84
  417. package/dist/ui/paraglide/messages/zh.d.ts +0 -16
  418. package/dist/ui/paraglide/messages/zh.js +0 -84
  419. package/dist/ui/paraglide/messages.d.ts +0 -2
  420. package/dist/ui/paraglide/messages.js +0 -4
  421. package/dist/ui/paraglide/registry.d.ts +0 -21
  422. package/dist/ui/paraglide/registry.js +0 -31
  423. package/dist/ui/paraglide/runtime.d.ts +0 -730
  424. package/dist/ui/paraglide/runtime.js +0 -1812
  425. package/dist/ui/paraglide/server.d.ts +0 -92
  426. package/dist/ui/paraglide/server.js +0 -239
  427. package/dist/ui/primitives/DatePicker.svelte +0 -257
  428. package/dist/ui/primitives/DatePicker.svelte.d.ts +0 -17
  429. package/dist/ui/primitives/index.d.ts +0 -1
  430. package/dist/ui/primitives/index.js +0 -3
  431. /package/{dist/ui/layout → src/runes/layout/src}/ContentArea.svelte +0 -0
  432. /package/{dist/ui/layout → src/runes/layout/src}/DetailPanel.svelte +0 -0
  433. /package/{dist/ui/features → src/runes/palettes/src}/notifications/NotificationBell.svelte +0 -0
@@ -1,59 +0,0 @@
1
- // sdk/state/src/auth/session.svelte.ts
2
- // SessionStore — manages authentication state via Svelte 5 runes.
3
- // This is a SKELETON — full Better-Auth wiring is deferred to a dedicated spec.
4
- import { getContext } from "svelte";
5
- import { RUNE_LAB_CONTEXT } from "../context.ts";
6
- /**
7
- * SessionStore — reactive authentication state.
8
- *
9
- * Once Better-Auth is fully integrated, this store will:
10
- * - Initialize from the Better-Auth client SDK
11
- * - Manage session lifecycle (login, logout, refresh)
12
- * - Expose the current user + session tokens
13
- * - Fire onSessionChange callbacks
14
- *
15
- * For now, it provides the interface contract that consuming apps
16
- * and other rune-lab components (UserAvatar, UserProfile) can code against.
17
- */
18
- export class SessionStore {
19
- /** Whether authentication has been checked (vs. loading) */
20
- isReady = $state(false);
21
- /** Whether a user is currently authenticated */
22
- isAuthenticated = $state(false);
23
- /** Current user (null when logged out) */
24
- user = $state(null);
25
- /** Current session (null when logged out) */
26
- session = $state(null);
27
- /**
28
- * Initialize the session — placeholder for Better-Auth client setup
29
- */
30
- init() {
31
- // TODO: Wire Better-Auth client.getSession() here
32
- this.isReady = true;
33
- return Promise.resolve();
34
- }
35
- /**
36
- * Log in — placeholder
37
- */
38
- login(_credentials) {
39
- // TODO: Wire Better-Auth client.signIn.email() here
40
- console.warn("SessionStore.login() is a stub — implement Better-Auth integration");
41
- return Promise.resolve(false);
42
- }
43
- /**
44
- * Log out — placeholder
45
- */
46
- logout() {
47
- // TODO: Wire Better-Auth client.signOut() here
48
- this.user = null;
49
- this.session = null;
50
- this.isAuthenticated = false;
51
- return Promise.resolve();
52
- }
53
- }
54
- export function createSessionStore() {
55
- return new SessionStore();
56
- }
57
- export function getSessionStore() {
58
- return getContext(RUNE_LAB_CONTEXT.session);
59
- }
@@ -1,30 +0,0 @@
1
- /**
2
- * Minimal user representation for rune-lab's auth layer.
3
- * Consuming apps can extend this with domain-specific fields.
4
- */
5
- export interface User {
6
- id: string;
7
- name: string;
8
- email: string;
9
- avatar_url?: string;
10
- role?: string;
11
- }
12
- /**
13
- * Active session information
14
- */
15
- export interface Session {
16
- user: User;
17
- accessToken: string;
18
- expiresAt: Date;
19
- }
20
- /**
21
- * Auth configuration passed to RuneProvider
22
- */
23
- export interface AuthConfig {
24
- /** Better-Auth client instance */
25
- client?: unknown;
26
- /** Callback when session changes (login, logout, expiry) */
27
- onSessionChange?: (session: Session | null) => void;
28
- /** Routes that require authentication */
29
- protectedRoutes?: string[];
30
- }
@@ -1,3 +0,0 @@
1
- // sdk/state/src/auth/types.ts
2
- // Core auth types — framework-agnostic interfaces
3
- export {};
@@ -1,64 +0,0 @@
1
- import type { PersistenceDriver } from "@internal/core";
2
- /**
3
- * Configuration for creating a CartStore
4
- */
5
- export interface CartStoreConfig<T> {
6
- /** Extract a unique identifier from an item */
7
- idExtractor: (item: T) => string;
8
- /** Extract the price (in minor units / cents) from an item */
9
- priceExtractor: (item: T) => number;
10
- /** Optional persistence driver for cart recovery */
11
- driver?: PersistenceDriver;
12
- /** Storage key for persistence */
13
- storageKey?: string;
14
- }
15
- export interface CartEntry<T> {
16
- item: T;
17
- qty: number;
18
- }
19
- /**
20
- * Generic cart store factory.
21
- * Works with any item type via extractors.
22
- *
23
- * **Note**: Consumers must call `setContext(RUNE_LAB_CONTEXT.cart, store)` manually
24
- * since CartStore is app-specific (needs `idExtractor` and `priceExtractor`).
25
- * RuneProvider can optionally wire it via `config.cart`.
26
- *
27
- * Usage:
28
- * const cart = createCartStore<Property>({
29
- * idExtractor: (p) => p.id,
30
- * priceExtractor: (p) => p.price,
31
- * });
32
- * cart.add(someProperty);
33
- * cart.totalPrice; // sum of all items * qty in minor units
34
- */
35
- export declare function createCartStore<T>(config: CartStoreConfig<T>): {
36
- /** All cart entries */
37
- readonly items: CartEntry<T>[];
38
- /** Total number of items (sum of quantities) */
39
- readonly totalItems: number;
40
- /** Total price in minor units */
41
- readonly totalPrice: number;
42
- /** Whether the cart is empty */
43
- readonly isEmpty: boolean;
44
- /** Add an item (or increment quantity if already present) */
45
- add(item: T, qty?: number): void;
46
- /** Remove an item entirely */
47
- remove(id: string): void;
48
- /** Update the quantity of an item (removes if qty ≤ 0) */
49
- updateQty(id: string, qty: number): void;
50
- /** Clear all items */
51
- clear(): void;
52
- /** Check if an item is in the cart */
53
- has(id: string): boolean;
54
- /** Get a specific entry by ID */
55
- getEntry(id: string): CartEntry<T> | undefined;
56
- };
57
- /** Return type of createCartStore for context typing */
58
- export type CartStore<T = unknown> = ReturnType<typeof createCartStore<T>>;
59
- /**
60
- * Get CartStore from Svelte context.
61
- * Only works if the consuming app has called setContext(RUNE_LAB_CONTEXT.cart, store)
62
- * or passed a cart config to RuneProvider.
63
- */
64
- export declare function getCartStore<T = unknown>(): CartStore<T>;
@@ -1,122 +0,0 @@
1
- // sdk/state/src/cart.svelte.ts
2
- // Generic cart store factory — business-agnostic add/remove/total pattern.
3
- import { getContext } from "svelte";
4
- import { RUNE_LAB_CONTEXT } from "./context.ts";
5
- import { DEV } from "esm-env";
6
- /**
7
- * Generic cart store factory.
8
- * Works with any item type via extractors.
9
- *
10
- * **Note**: Consumers must call `setContext(RUNE_LAB_CONTEXT.cart, store)` manually
11
- * since CartStore is app-specific (needs `idExtractor` and `priceExtractor`).
12
- * RuneProvider can optionally wire it via `config.cart`.
13
- *
14
- * Usage:
15
- * const cart = createCartStore<Property>({
16
- * idExtractor: (p) => p.id,
17
- * priceExtractor: (p) => p.price,
18
- * });
19
- * cart.add(someProperty);
20
- * cart.totalPrice; // sum of all items * qty in minor units
21
- */
22
- export function createCartStore(config) {
23
- const { idExtractor, priceExtractor, driver, storageKey = "cart", } = config;
24
- // Internal entries store — using a plain array for correct serialization
25
- let _entries = $state([]);
26
- /** Lookup by ID */
27
- function _findIndex(id) {
28
- return _entries.findIndex((e) => idExtractor(e.item) === id);
29
- }
30
- /** @internal Persist current state (Map serialized as Array) */
31
- function _persist() {
32
- if (!driver)
33
- return;
34
- try {
35
- const data = _entries.map((entry) => ({
36
- id: idExtractor(entry.item),
37
- qty: entry.qty,
38
- }));
39
- driver.set(storageKey, JSON.stringify(data));
40
- }
41
- catch {
42
- // Persistence is best-effort
43
- }
44
- }
45
- return {
46
- /** All cart entries */
47
- get items() {
48
- return _entries;
49
- },
50
- /** Total number of items (sum of quantities) */
51
- get totalItems() {
52
- let total = 0;
53
- for (const entry of _entries)
54
- total += entry.qty;
55
- return total;
56
- },
57
- /** Total price in minor units */
58
- get totalPrice() {
59
- let total = 0;
60
- for (const entry of _entries) {
61
- total += priceExtractor(entry.item) * entry.qty;
62
- }
63
- return total;
64
- },
65
- /** Whether the cart is empty */
66
- get isEmpty() {
67
- return _entries.length === 0;
68
- },
69
- /** Add an item (or increment quantity if already present) */
70
- add(item, qty = 1) {
71
- const id = idExtractor(item);
72
- const idx = _findIndex(id);
73
- if (idx >= 0) {
74
- _entries[idx] = { ..._entries[idx], qty: _entries[idx].qty + qty };
75
- }
76
- else {
77
- _entries = [..._entries, { item, qty }];
78
- }
79
- _persist();
80
- if (DEV)
81
- console.log(`🛒 Added ${id} (qty: ${qty})`);
82
- },
83
- /** Remove an item entirely */
84
- remove(id) {
85
- _entries = _entries.filter((e) => idExtractor(e.item) !== id);
86
- _persist();
87
- },
88
- /** Update the quantity of an item (removes if qty ≤ 0) */
89
- updateQty(id, qty) {
90
- if (qty <= 0) {
91
- this.remove(id);
92
- return;
93
- }
94
- const idx = _findIndex(id);
95
- if (idx >= 0) {
96
- _entries[idx] = { ..._entries[idx], qty };
97
- _persist();
98
- }
99
- },
100
- /** Clear all items */
101
- clear() {
102
- _entries = [];
103
- _persist();
104
- },
105
- /** Check if an item is in the cart */
106
- has(id) {
107
- return _findIndex(id) >= 0;
108
- },
109
- /** Get a specific entry by ID */
110
- getEntry(id) {
111
- return _entries.find((e) => idExtractor(e.item) === id);
112
- },
113
- };
114
- }
115
- /**
116
- * Get CartStore from Svelte context.
117
- * Only works if the consuming app has called setContext(RUNE_LAB_CONTEXT.cart, store)
118
- * or passed a cart config to RuneProvider.
119
- */
120
- export function getCartStore() {
121
- return getContext(RUNE_LAB_CONTEXT.cart);
122
- }
@@ -1,46 +0,0 @@
1
- import type { AppStore } from "./app.svelte.ts";
2
- import type { ApiStore } from "./api.svelte.ts";
3
- import type { ConfigStore } from "./createConfigStore.svelte.ts";
4
- import type { ToastStore } from "./toast.svelte.ts";
5
- import type { Theme } from "./theme.svelte.ts";
6
- import type { Language } from "./language.svelte.ts";
7
- import type { Currency } from "./currency.svelte.ts";
8
- /**
9
- * Command Palette Store
10
- */
11
- export interface Command {
12
- id: string;
13
- label: string;
14
- category?: string;
15
- icon?: string;
16
- action?: () => void;
17
- children?: Command[];
18
- }
19
- export interface CommandServices {
20
- appStore: AppStore;
21
- apiStore: ApiStore;
22
- toastStore: ToastStore;
23
- themeStore: ConfigStore<Theme>;
24
- languageStore: ConfigStore<Language>;
25
- currencyStore: ConfigStore<Currency>;
26
- }
27
- export declare class CommandStore {
28
- #private;
29
- constructor(services: CommandServices);
30
- commands: Command[];
31
- refreshDefaultCommands(): void;
32
- /**
33
- * Register a new command
34
- */
35
- register(command: Command): void;
36
- /**
37
- * Remove a command by id
38
- */
39
- unregister(id: string): void;
40
- /**
41
- * Search commands, optionally scoped to a parent's children
42
- */
43
- search(query: string, parentId?: string): Command[];
44
- }
45
- export declare function createCommandStore(services: CommandServices): CommandStore;
46
- export declare function getCommandStore(): CommandStore;
@@ -1,62 +0,0 @@
1
- import { getContext } from "svelte";
2
- import { RUNE_LAB_CONTEXT } from "./context.ts";
3
- export class CommandStore {
4
- // Dependency Injection
5
- #services;
6
- constructor(services) {
7
- this.#services = services;
8
- this.refreshDefaultCommands();
9
- }
10
- commands = $state([]);
11
- refreshDefaultCommands() {
12
- // Intentionally empty.
13
- // Consumers (like the demo app) should inject their own default commands via `commandStore.register`.
14
- this.commands = [];
15
- }
16
- /**
17
- * Register a new command
18
- */
19
- register(command) {
20
- if (this.commands.find((c) => c.id === command.id))
21
- return;
22
- this.commands.push(command);
23
- }
24
- /**
25
- * Remove a command by id
26
- */
27
- unregister(id) {
28
- this.commands = this.commands.filter((c) => c.id !== id);
29
- }
30
- /**
31
- * Search commands, optionally scoped to a parent's children
32
- */
33
- search(query, parentId) {
34
- const targetList = parentId
35
- ? this.#findById(parentId, this.commands)?.children ?? []
36
- : this.commands;
37
- if (!query)
38
- return targetList;
39
- const q = query.toLowerCase();
40
- return targetList.filter((c) => c.label.toLowerCase().includes(q) ||
41
- c.category?.toLowerCase().includes(q));
42
- }
43
- // Native JS private field — TypeScript CAN emit .d.ts for this, unlike `private`
44
- #findById(id, list) {
45
- for (const cmd of list) {
46
- if (cmd.id === id)
47
- return cmd;
48
- if (cmd.children) {
49
- const found = this.#findById(id, cmd.children);
50
- if (found)
51
- return found;
52
- }
53
- }
54
- return undefined;
55
- }
56
- }
57
- export function createCommandStore(services) {
58
- return new CommandStore(services);
59
- }
60
- export function getCommandStore() {
61
- return getContext(RUNE_LAB_CONTEXT.commands);
62
- }
@@ -1,31 +0,0 @@
1
- import { type Dinero, type ISO4217Code } from "@internal/core";
2
- /**
3
- * Context-aware money composable.
4
- * Reads CurrencyStore and LanguageStore from rune-lab context.
5
- *
6
- * Usage:
7
- * const { format, toDinero, add, subtract, convert } = useMoney();
8
- * const display = format(150.00, undefined, 'major'); // "$150.00"
9
- */
10
- export declare function useMoney(): {
11
- toDinero: (amount: number | null | undefined, currencyCode?: ISO4217Code | string, unit?: "major" | "minor") => Dinero<number>;
12
- format: (amount: number | null | undefined, currencyCode?: ISO4217Code | string, unit?: "major" | "minor", localeOverride?: string) => string;
13
- add: (a: number, b: number, currencyCode?: ISO4217Code | string, unit?: "major" | "minor") => Dinero<number>;
14
- subtract: (a: number, b: number, currencyCode?: ISO4217Code | string, unit?: "major" | "minor") => Dinero<number>;
15
- convert: (amount: number, fromCode: string, unit?: "major" | "minor") => Dinero<number>;
16
- formatConverted: (amount: number, fromCode: string, unit?: "major" | "minor") => string;
17
- toPayload: (amount: number, currencyCode?: string, target?: "stripe" | "paypal" | "adyen" | "square", unit?: "major" | "minor") => {
18
- amount: number;
19
- currency: string;
20
- } | {
21
- value: string;
22
- currency_code: string;
23
- } | {
24
- value: number;
25
- currency: string;
26
- } | {
27
- amount: bigint;
28
- currency: string;
29
- };
30
- multiply: (amount: number, factor: number, currencyCode?: ISO4217Code | string, unit?: "major" | "minor") => Dinero<number>;
31
- };
@@ -1,126 +0,0 @@
1
- // sdk/state/src/composables/useMoney.ts
2
- // Context-aware money composable that reads CurrencyStore + LanguageStore
3
- import { getContext } from "svelte";
4
- import { RUNE_LAB_CONTEXT } from "../context.ts";
5
- import { addMoney, convertMoney, createMoney, formatMoney, multiplyMoney, subtractMoney, toAdyenMoney, toMinorUnit, toMoneySnapshot, toPaypalMoney, toSquareMoney, toStripeMoney, } from "@internal/core";
6
- /**
7
- * Context-aware money composable.
8
- * Reads CurrencyStore and LanguageStore from rune-lab context.
9
- *
10
- * Usage:
11
- * const { format, toDinero, add, subtract, convert } = useMoney();
12
- * const display = format(150.00, undefined, 'major'); // "$150.00"
13
- */
14
- export function useMoney() {
15
- const currencyStore = getContext(RUNE_LAB_CONTEXT.currency);
16
- const languageStore = getContext(RUNE_LAB_CONTEXT.language);
17
- const exchangeRateStore = getContext(RUNE_LAB_CONTEXT.exchangeRate);
18
- /**
19
- * Convert amount to a Dinero object using current currency
20
- */
21
- function toDinero(amount, currencyCode, unit = "minor") {
22
- const code = currencyCode ?? String(currencyStore.current);
23
- const minorAmount = unit === "major" && amount !== null && amount !== undefined
24
- ? toMinorUnit(Number(amount), code)
25
- : amount;
26
- return createMoney(minorAmount, code);
27
- }
28
- /**
29
- * Format an amount as a locale-aware currency string
30
- */
31
- function format(amount, currencyCode, unit = "minor", localeOverride) {
32
- if (amount === null || amount === undefined ||
33
- (typeof amount === "number" && isNaN(amount))) {
34
- return "—";
35
- }
36
- const code = currencyCode ?? String(currencyStore.current);
37
- const locale = localeOverride ?? (String(languageStore.current) || "en");
38
- const minorAmount = unit === "major"
39
- ? toMinorUnit(Number(amount), code)
40
- : amount;
41
- const money = createMoney(minorAmount, code);
42
- return formatMoney(money, locale, code);
43
- }
44
- /**
45
- * Converts an amount from fromCode to the current display currency.
46
- */
47
- function convert(amount, fromCode, unit = "minor") {
48
- const minorAmount = unit === "major"
49
- ? toMinorUnit(amount, fromCode)
50
- : amount;
51
- const currentCode = String(currencyStore.current);
52
- if (!exchangeRateStore?.hasRates || fromCode === currentCode) {
53
- return createMoney(minorAmount, fromCode);
54
- }
55
- const sourceMoney = createMoney(minorAmount, fromCode);
56
- return convertMoney(sourceMoney, currentCode, exchangeRateStore.rates);
57
- }
58
- /**
59
- * Convenience: converts and formats an amount in one go.
60
- */
61
- function formatConverted(amount, fromCode, unit = "minor") {
62
- const money = convert(amount, fromCode, unit);
63
- const locale = String(languageStore.current) || "en";
64
- const currentCode = String(currencyStore.current);
65
- const snapshot = toMoneySnapshot(money);
66
- // If conversion didn't happen (no rates), format as original currency
67
- const displayCode = exchangeRateStore?.hasRates
68
- ? currentCode
69
- : snapshot.currency;
70
- return formatMoney(money, locale, displayCode);
71
- }
72
- /**
73
- * Multiply an amount by a factor.
74
- */
75
- function multiply(amount, factor, currencyCode, unit = "minor") {
76
- const money = toDinero(amount, currencyCode, unit);
77
- return multiplyMoney(money, factor);
78
- }
79
- /**
80
- * Format an amount for a specific payment provider payload.
81
- */
82
- function toPayload(amount, currencyCode, target = "stripe", unit = "minor") {
83
- const code = currencyCode ?? String(currencyStore.current);
84
- const money = toDinero(amount, code, unit);
85
- switch (target) {
86
- case "stripe":
87
- return toStripeMoney(money);
88
- case "paypal":
89
- return toPaypalMoney(money);
90
- case "adyen":
91
- return toAdyenMoney(money);
92
- case "square":
93
- return toSquareMoney(money);
94
- default:
95
- return toStripeMoney(money);
96
- }
97
- }
98
- /**
99
- * Add two amounts in the current currency
100
- */
101
- function add(a, b, currencyCode, unit = "minor") {
102
- const code = currencyCode ?? String(currencyStore.current);
103
- const aMoney = toDinero(a, code, unit);
104
- const bMoney = toDinero(b, code, unit);
105
- return addMoney(aMoney, bMoney);
106
- }
107
- /**
108
- * Subtract two amounts in the current currency
109
- */
110
- function subtract(a, b, currencyCode, unit = "minor") {
111
- const code = currencyCode ?? String(currencyStore.current);
112
- const aMoney = toDinero(a, code, unit);
113
- const bMoney = toDinero(b, code, unit);
114
- return subtractMoney(aMoney, bMoney);
115
- }
116
- return {
117
- toDinero,
118
- format,
119
- add,
120
- subtract,
121
- convert,
122
- formatConverted,
123
- toPayload,
124
- multiply,
125
- };
126
- }
@@ -1,20 +0,0 @@
1
- export interface MoneyFilterOptions {
2
- min?: number;
3
- max?: number;
4
- unit?: "major" | "minor";
5
- autoConvertOnChange?: boolean;
6
- }
7
- /**
8
- * A reactive currency-aware filter composable.
9
- * Handles min/max thresholds that auto-convert when the display currency changes.
10
- */
11
- export declare function useMoneyFilter(options?: MoneyFilterOptions): {
12
- min: number;
13
- max: number;
14
- readonly displayMin: string;
15
- readonly displayMax: string;
16
- setMin: (value: number) => void;
17
- setMax: (value: number) => void;
18
- reset: () => void;
19
- matches: (amount: number, entityCurrency: string) => boolean;
20
- };
@@ -1,81 +0,0 @@
1
- // sdk/state/src/composables/useMoneyFilter.ts
2
- import { getContext } from "svelte";
3
- import { RUNE_LAB_CONTEXT } from "../context.ts";
4
- import { useMoney } from "./useMoney.ts";
5
- /**
6
- * A reactive currency-aware filter composable.
7
- * Handles min/max thresholds that auto-convert when the display currency changes.
8
- */
9
- export function useMoneyFilter(options = {}) {
10
- const currencyStore = getContext(RUNE_LAB_CONTEXT.currency);
11
- const { format } = useMoney();
12
- let min = $state(options.min ?? 0);
13
- let max = $state(options.max ?? Infinity);
14
- const unit = options.unit ?? "minor";
15
- const autoConvertOnChange = options.autoConvertOnChange ?? true;
16
- let lastCurrency = String(currencyStore.current);
17
- $effect(() => {
18
- const currentCurrency = String(currencyStore.current);
19
- if (autoConvertOnChange && currentCurrency !== lastCurrency) {
20
- if (currencyStore.canConvert) {
21
- if (min !== 0) {
22
- min = currencyStore.convertAmount(min, lastCurrency, currentCurrency);
23
- }
24
- if (max !== Infinity) {
25
- max = currencyStore.convertAmount(max, lastCurrency, currentCurrency);
26
- }
27
- }
28
- else {
29
- // Reset if no rates available
30
- min = 0;
31
- max = Infinity;
32
- }
33
- }
34
- lastCurrency = currentCurrency;
35
- });
36
- function setMin(value) {
37
- min = value;
38
- }
39
- function setMax(value) {
40
- max = value;
41
- }
42
- function reset() {
43
- min = 0;
44
- max = Infinity;
45
- }
46
- /**
47
- * Checks if an amount (in its entity currency) matches the current filter.
48
- */
49
- function matches(amount, entityCurrency) {
50
- const currentCurrency = String(currencyStore.current);
51
- // Convert entity amount to display currency for comparison
52
- const convertedAmount = currencyStore.convertAmount(amount, entityCurrency, currentCurrency);
53
- return convertedAmount >= min && convertedAmount <= max;
54
- }
55
- const displayMin = $derived(format(min, undefined, unit));
56
- const displayMax = $derived(max === Infinity ? "∞" : format(max, undefined, unit));
57
- return {
58
- get min() {
59
- return min;
60
- },
61
- set min(v) {
62
- min = v;
63
- },
64
- get max() {
65
- return max;
66
- },
67
- set max(v) {
68
- max = v;
69
- },
70
- get displayMin() {
71
- return displayMin;
72
- },
73
- get displayMax() {
74
- return displayMax;
75
- },
76
- setMin,
77
- setMax,
78
- reset,
79
- matches,
80
- };
81
- }
@@ -1,2 +0,0 @@
1
- import type { PersistenceDriver } from "@internal/core";
2
- export declare function usePersistence(): PersistenceDriver | undefined;
@@ -1,5 +0,0 @@
1
- import { getContext } from "svelte";
2
- import { RUNE_LAB_CONTEXT } from "../context.ts";
3
- export function usePersistence() {
4
- return getContext(RUNE_LAB_CONTEXT.persistence);
5
- }
@@ -1,19 +0,0 @@
1
- import { getApiStore, getAppStore, getCommandStore, getCurrencyStore, getLanguageStore, getLayoutStore, getShortcutStore, getThemeStore, getToastStore, type SessionStore } from "../index.ts";
2
- export interface RuneLabContext {
3
- app: ReturnType<typeof getAppStore>;
4
- api: ReturnType<typeof getApiStore>;
5
- toast: ReturnType<typeof getToastStore>;
6
- theme: ReturnType<typeof getThemeStore>;
7
- language: ReturnType<typeof getLanguageStore>;
8
- currency: ReturnType<typeof getCurrencyStore>;
9
- shortcut: ReturnType<typeof getShortcutStore>;
10
- layout: ReturnType<typeof getLayoutStore>;
11
- commands: ReturnType<typeof getCommandStore>;
12
- /** Available when auth is enabled in RuneProvider config */
13
- session?: SessionStore;
14
- }
15
- /**
16
- * Retrieves all Rune Lab stores from the Svelte context tree.
17
- * Must be called during component initialization (in the `<script>` block).
18
- */
19
- export declare function useRuneLab(): RuneLabContext;