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.
- package/.gitignore +12 -0
- package/README.md +3 -3
- package/deno.json +50 -0
- package/justfile +5 -0
- package/package.json +2 -79
- package/scripts/build_pkg.ts +51 -0
- package/scripts/ci.just +26 -0
- package/scripts/deploy.just +21 -0
- package/scripts/dev.just +4 -0
- package/scripts/inject.just +72 -0
- package/src/RuneProvider.svelte +105 -0
- package/src/i18n/message-resolver.test.ts +103 -0
- package/src/i18n/message-resolver.ts +89 -0
- package/src/i18n/project.inlang/settings.json +26 -0
- package/src/i18n/translations/ar.json +89 -0
- package/src/i18n/translations/de.json +89 -0
- package/src/i18n/translations/en.json +89 -0
- package/src/i18n/translations/es.json +89 -0
- package/src/i18n/translations/fr.json +89 -0
- package/src/i18n/translations/hi.json +89 -0
- package/src/i18n/translations/it.json +89 -0
- package/src/i18n/translations/ja.json +89 -0
- package/src/i18n/translations/ko.json +89 -0
- package/src/i18n/translations/pt.json +89 -0
- package/src/i18n/translations/ru.json +89 -0
- package/src/i18n/translations/vi.json +89 -0
- package/src/i18n/translations/zh.json +89 -0
- package/src/kernel/deno.json +5 -0
- package/src/kernel/src/actions/portal.ts +41 -0
- package/src/kernel/src/actions/shortcut-listener.ts +50 -0
- package/src/kernel/src/context/app.svelte.ts +98 -0
- package/src/kernel/src/context/context.ts +31 -0
- package/src/kernel/src/context/stores.svelte.ts +96 -0
- package/src/kernel/src/context/types.ts +110 -0
- package/src/kernel/src/context/useRuneLab.ts +38 -0
- package/src/kernel/src/mod.ts +13 -0
- package/src/kernel/src/persistence/createConfigStore.svelte.ts +120 -0
- package/src/kernel/src/persistence/drivers.test.ts +95 -0
- package/src/kernel/src/persistence/drivers.ts +77 -0
- package/src/kernel/src/persistence/provider.test.ts +58 -0
- package/{dist/state/persistence/provider.js → src/kernel/src/persistence/provider.ts} +29 -14
- package/src/kernel/src/persistence/types.ts +19 -0
- package/src/kernel/src/persistence/usePersistence.ts +9 -0
- package/src/kernel/src/registry/mod.ts +221 -0
- package/src/kernel/src/registry/registry.test.ts +162 -0
- package/src/kernel/src/tokens/props.ts +94 -0
- package/src/mod.ts +10 -0
- package/src/runes/layout/deno.json +5 -0
- package/src/runes/layout/src/APP_CONFIGURATIONS.ts +56 -0
- package/{dist/ui/features/config → src/runes/layout/src}/AppSettingSelector.svelte +1 -1
- package/{dist/ui/layout → src/runes/layout/src}/ConnectedNavigationPanel.svelte +1 -1
- package/{dist/ui/layout → src/runes/layout/src}/ConnectedWorkspaceStrip.svelte +1 -1
- package/src/runes/layout/src/Icon.svelte +7 -0
- package/{dist/ui/features/config → src/runes/layout/src}/LanguageSelector.svelte +7 -5
- package/{dist/ui/layout → src/runes/layout/src}/NavigationPanel.svelte +1 -4
- package/{dist/ui/features/config → src/runes/layout/src}/ResourceSelector.svelte +3 -5
- package/{dist/ui/features/config → src/runes/layout/src}/ThemeSelector.svelte +2 -2
- package/{dist/ui/layout → src/runes/layout/src}/WorkspaceLayout.svelte +6 -4
- package/{dist/ui/layout → src/runes/layout/src}/WorkspaceStrip.svelte +1 -1
- package/src/runes/layout/src/connection-factory.ts +95 -0
- package/src/runes/layout/src/language.svelte.ts +44 -0
- package/src/runes/layout/src/mod.ts +71 -0
- package/src/runes/layout/src/store.svelte.ts +142 -0
- package/src/runes/layout/src/theme.svelte.ts +73 -0
- package/src/runes/layout/src/types.ts +11 -0
- package/src/runes/palettes/deno.json +8 -0
- package/{dist/ui/features/command-palette → src/runes/palettes/src/commands}/CommandPalette.svelte +4 -4
- package/src/runes/palettes/src/commands/mod.ts +2 -0
- package/src/runes/palettes/src/commands/store.svelte.ts +80 -0
- package/src/runes/palettes/src/mod.ts +51 -0
- package/{dist/ui/components → src/runes/palettes/src/notifications}/Toaster.svelte +1 -2
- package/src/runes/palettes/src/notifications/bridge.ts +56 -0
- package/src/runes/palettes/src/notifications/mod.ts +4 -0
- package/src/runes/palettes/src/notifications/store.svelte.ts +58 -0
- package/{dist/ui/features → src/runes/palettes/src}/shortcuts/ShortcutPalette.svelte +4 -4
- package/src/runes/palettes/src/shortcuts/mod.ts +4 -0
- package/src/runes/palettes/src/shortcuts/store.svelte.ts +85 -0
- package/src/runes/palettes/src/shortcuts/types.ts +4 -0
- package/src/runes/palettes/src/shortcuts/useShortcuts.ts +85 -0
- package/src/runes/plugins/money/deno.json +8 -0
- package/{dist/ui/features/config → src/runes/plugins/money/src}/CurrencySelector.svelte +2 -2
- package/{dist/ui/components/money → src/runes/plugins/money/src}/MoneyDisplay.svelte +2 -2
- package/{dist/ui/components/money → src/runes/plugins/money/src}/MoneyInput.svelte +4 -8
- package/src/runes/plugins/money/src/currency.svelte.ts +95 -0
- package/src/runes/plugins/money/src/currency.test.ts +40 -0
- package/src/runes/plugins/money/src/exchange-rate.svelte.ts +176 -0
- package/src/runes/plugins/money/src/exchange-rate.test.ts +95 -0
- package/src/runes/plugins/money/src/mod.ts +79 -0
- package/src/runes/plugins/money/src/money-primitive.test.ts +217 -0
- package/src/runes/plugins/money/src/money-primitive.ts +220 -0
- package/src/runes/plugins/money/src/money.test.ts +183 -0
- package/src/runes/plugins/money/src/money.ts +382 -0
- package/src/runes/plugins/money/src/strategies.test.ts +143 -0
- package/{dist/core/exchange-rate/strategies.js → src/runes/plugins/money/src/strategies.ts} +45 -22
- package/src/runes/plugins/money/src/types.ts +27 -0
- package/src/runes/plugins/money/src/useMoney.ts +261 -0
- package/src/runes/plugins/money/src/useMoneyFilter.ts +132 -0
- package/tsconfig.json +41 -0
- package/vite.config.ts +44 -0
- package/dist/core/design-tokens/props.d.ts +0 -52
- package/dist/core/design-tokens/props.d.ts.map +0 -1
- package/dist/core/design-tokens/props.js +0 -34
- package/dist/core/exchange-rate/strategies.d.ts +0 -52
- package/dist/core/exchange-rate/strategies.d.ts.map +0 -1
- package/dist/core/index.d.ts +0 -9
- package/dist/core/index.d.ts.map +0 -1
- package/dist/core/index.js +0 -8
- package/dist/core/internal/message-resolver.d.ts +0 -42
- package/dist/core/internal/message-resolver.d.ts.map +0 -1
- package/dist/core/internal/message-resolver.js +0 -47
- package/dist/core/layout/types.d.ts +0 -60
- package/dist/core/layout/types.d.ts.map +0 -1
- package/dist/core/layout/types.js +0 -4
- package/dist/core/money/index.d.ts +0 -2
- package/dist/core/money/index.d.ts.map +0 -1
- package/dist/core/money/index.js +0 -2
- package/dist/core/money/money-primitive.d.ts +0 -101
- package/dist/core/money/money-primitive.d.ts.map +0 -1
- package/dist/core/money/money-primitive.js +0 -161
- package/dist/core/money/money.d.ts +0 -129
- package/dist/core/money/money.d.ts.map +0 -1
- package/dist/core/money/money.js +0 -250
- package/dist/core/persistence/types.d.ts +0 -18
- package/dist/core/persistence/types.d.ts.map +0 -1
- package/dist/core/persistence/types.js +0 -2
- package/dist/core/shortcuts/types.d.ts +0 -60
- package/dist/core/shortcuts/types.d.ts.map +0 -1
- package/dist/core/shortcuts/types.js +0 -4
- package/dist/index.d.ts +0 -6
- package/dist/index.js +0 -7
- package/dist/state/api.svelte.d.ts +0 -26
- package/dist/state/api.svelte.js +0 -65
- package/dist/state/app.svelte.d.ts +0 -48
- package/dist/state/app.svelte.js +0 -82
- package/dist/state/auth/index.d.ts +0 -2
- package/dist/state/auth/index.js +0 -2
- package/dist/state/auth/session.svelte.d.ts +0 -40
- package/dist/state/auth/session.svelte.js +0 -59
- package/dist/state/auth/types.d.ts +0 -30
- package/dist/state/auth/types.js +0 -3
- package/dist/state/cart.svelte.d.ts +0 -64
- package/dist/state/cart.svelte.js +0 -122
- package/dist/state/commands.svelte.d.ts +0 -46
- package/dist/state/commands.svelte.js +0 -62
- package/dist/state/composables/useMoney.d.ts +0 -31
- package/dist/state/composables/useMoney.js +0 -126
- package/dist/state/composables/useMoneyFilter.d.ts +0 -20
- package/dist/state/composables/useMoneyFilter.js +0 -81
- package/dist/state/composables/usePersistence.d.ts +0 -2
- package/dist/state/composables/usePersistence.js +0 -5
- package/dist/state/composables/useRuneLab.d.ts +0 -19
- package/dist/state/composables/useRuneLab.js +0 -30
- package/dist/state/composables/useShortcuts.d.ts +0 -33
- package/dist/state/composables/useShortcuts.js +0 -75
- package/dist/state/context.d.ts +0 -15
- package/dist/state/context.js +0 -16
- package/dist/state/createConfigStore.svelte.d.ts +0 -28
- package/dist/state/createConfigStore.svelte.js +0 -72
- package/dist/state/currency.svelte.d.ts +0 -32
- package/dist/state/currency.svelte.js +0 -96
- package/dist/state/currency.test.d.ts +0 -1
- package/dist/state/currency.test.js +0 -35
- package/dist/state/exchange-rate.svelte.d.ts +0 -43
- package/dist/state/exchange-rate.svelte.js +0 -145
- package/dist/state/exchange-rate.test.d.ts +0 -1
- package/dist/state/exchange-rate.test.js +0 -75
- package/dist/state/index.d.ts +0 -26
- package/dist/state/index.js +0 -32
- package/dist/state/language.svelte.d.ts +0 -57
- package/dist/state/language.svelte.js +0 -43
- package/dist/state/layout.svelte.d.ts +0 -49
- package/dist/state/layout.svelte.js +0 -108
- package/dist/state/persistence/drivers.d.ts +0 -12
- package/dist/state/persistence/drivers.js +0 -75
- package/dist/state/persistence/drivers.test.d.ts +0 -1
- package/dist/state/persistence/drivers.test.js +0 -79
- package/dist/state/persistence/provider.d.ts +0 -23
- package/dist/state/persistence/provider.test.d.ts +0 -1
- package/dist/state/persistence/provider.test.js +0 -51
- package/dist/state/registry/index.d.ts +0 -44
- package/dist/state/registry/index.js +0 -58
- package/dist/state/registry/registry.test.d.ts +0 -1
- package/dist/state/registry/registry.test.js +0 -112
- package/dist/state/registry/types.d.ts +0 -20
- package/dist/state/registry/types.js +0 -3
- package/dist/state/shortcuts.svelte.d.ts +0 -121
- package/dist/state/shortcuts.svelte.js +0 -222
- package/dist/state/theme.svelte.d.ts +0 -15
- package/dist/state/theme.svelte.js +0 -92
- package/dist/state/toast-bridge.d.ts +0 -29
- package/dist/state/toast-bridge.js +0 -43
- package/dist/state/toast.svelte.d.ts +0 -27
- package/dist/state/toast.svelte.js +0 -43
- package/dist/ui/actions/portal.d.ts +0 -7
- package/dist/ui/actions/portal.js +0 -32
- package/dist/ui/components/ApiMonitor.svelte +0 -162
- package/dist/ui/components/ApiMonitor.svelte.d.ts +0 -3
- package/dist/ui/components/Icon.svelte +0 -108
- package/dist/ui/components/Icon.svelte.d.ts +0 -14
- package/dist/ui/components/Kyntharil.svelte +0 -48
- package/dist/ui/components/Kyntharil.svelte.d.ts +0 -6
- package/dist/ui/components/RuneProvider.svelte +0 -218
- package/dist/ui/components/RuneProvider.svelte.d.ts +0 -49
- package/dist/ui/components/Toaster.svelte.d.ts +0 -18
- package/dist/ui/components/money/MoneyDisplay.svelte.d.ts +0 -33
- package/dist/ui/components/money/MoneyDisplay.svelte.test.d.ts +0 -1
- package/dist/ui/components/money/MoneyDisplay.svelte.test.js +0 -117
- package/dist/ui/components/money/MoneyInput.svelte.d.ts +0 -34
- package/dist/ui/components/money/index.d.ts +0 -2
- package/dist/ui/components/money/index.js +0 -3
- package/dist/ui/components/user/UserAvatar.svelte +0 -66
- package/dist/ui/components/user/UserAvatar.svelte.d.ts +0 -13
- package/dist/ui/components/user/UserProfile.svelte +0 -79
- package/dist/ui/components/user/UserProfile.svelte.d.ts +0 -17
- package/dist/ui/components/user/index.d.ts +0 -2
- package/dist/ui/components/user/index.js +0 -3
- package/dist/ui/features/command-palette/CommandPalette.svelte.d.ts +0 -6
- package/dist/ui/features/config/APP_CONFIGURATIONS.d.ts +0 -29
- package/dist/ui/features/config/APP_CONFIGURATIONS.js +0 -38
- package/dist/ui/features/config/AppSettingSelector.svelte.d.ts +0 -13
- package/dist/ui/features/config/CurrencySelector.svelte.d.ts +0 -8
- package/dist/ui/features/config/LanguageSelector.svelte.d.ts +0 -8
- package/dist/ui/features/config/ResourceSelector.svelte.d.ts +0 -25
- package/dist/ui/features/config/ThemeSelector.svelte.d.ts +0 -8
- package/dist/ui/features/notifications/NotificationBell.svelte.d.ts +0 -11
- package/dist/ui/features/notifications/index.d.ts +0 -1
- package/dist/ui/features/notifications/index.js +0 -2
- package/dist/ui/features/shortcuts/ShortcutBinder.svelte +0 -17
- package/dist/ui/features/shortcuts/ShortcutBinder.svelte.d.ts +0 -7
- package/dist/ui/features/shortcuts/ShortcutPalette.svelte.d.ts +0 -6
- package/dist/ui/index.d.ts +0 -30
- package/dist/ui/index.js +0 -46
- package/dist/ui/layout/ConnectedNavigationPanel.svelte.d.ts +0 -10
- package/dist/ui/layout/ConnectedWorkspaceStrip.svelte.d.ts +0 -9
- package/dist/ui/layout/ContentArea.svelte.d.ts +0 -8
- package/dist/ui/layout/DetailPanel.svelte.d.ts +0 -7
- package/dist/ui/layout/NavigationPanel.svelte.d.ts +0 -14
- package/dist/ui/layout/WorkspaceLayout.svelte.d.ts +0 -32
- package/dist/ui/layout/WorkspaceStrip.svelte.d.ts +0 -11
- package/dist/ui/layout/connection-factory.d.ts +0 -50
- package/dist/ui/layout/connection-factory.js +0 -58
- package/dist/ui/layout/index.d.ts +0 -7
- package/dist/ui/layout/index.js +0 -7
- package/dist/ui/paraglide/README.md +0 -147
- package/dist/ui/paraglide/messages/_index.d.ts +0 -87
- package/dist/ui/paraglide/messages/_index.js +0 -88
- package/dist/ui/paraglide/messages/abyss.d.ts +0 -16
- package/dist/ui/paraglide/messages/abyss.js +0 -84
- package/dist/ui/paraglide/messages/acid.d.ts +0 -16
- package/dist/ui/paraglide/messages/acid.js +0 -84
- package/dist/ui/paraglide/messages/active_toasts.d.ts +0 -16
- package/dist/ui/paraglide/messages/active_toasts.js +0 -84
- package/dist/ui/paraglide/messages/aed3.d.ts +0 -17
- package/dist/ui/paraglide/messages/aed3.js +0 -85
- package/dist/ui/paraglide/messages/all_currencies.d.ts +0 -16
- package/dist/ui/paraglide/messages/all_currencies.js +0 -84
- package/dist/ui/paraglide/messages/all_languages.d.ts +0 -16
- package/dist/ui/paraglide/messages/all_languages.js +0 -84
- package/dist/ui/paraglide/messages/all_themes.d.ts +0 -16
- package/dist/ui/paraglide/messages/all_themes.js +0 -84
- package/dist/ui/paraglide/messages/api_status.d.ts +0 -16
- package/dist/ui/paraglide/messages/api_status.js +0 -84
- package/dist/ui/paraglide/messages/app_info.d.ts +0 -16
- package/dist/ui/paraglide/messages/app_info.js +0 -84
- package/dist/ui/paraglide/messages/appearance.d.ts +0 -16
- package/dist/ui/paraglide/messages/appearance.js +0 -84
- package/dist/ui/paraglide/messages/aqua.d.ts +0 -16
- package/dist/ui/paraglide/messages/aqua.js +0 -84
- package/dist/ui/paraglide/messages/ar.d.ts +0 -16
- package/dist/ui/paraglide/messages/ar.js +0 -84
- package/dist/ui/paraglide/messages/autumn.d.ts +0 -16
- package/dist/ui/paraglide/messages/autumn.js +0 -84
- package/dist/ui/paraglide/messages/black.d.ts +0 -16
- package/dist/ui/paraglide/messages/black.js +0 -84
- package/dist/ui/paraglide/messages/brl3.d.ts +0 -17
- package/dist/ui/paraglide/messages/brl3.js +0 -85
- package/dist/ui/paraglide/messages/bumblebee.d.ts +0 -16
- package/dist/ui/paraglide/messages/bumblebee.js +0 -84
- package/dist/ui/paraglide/messages/business.d.ts +0 -16
- package/dist/ui/paraglide/messages/business.js +0 -84
- package/dist/ui/paraglide/messages/cad3.d.ts +0 -17
- package/dist/ui/paraglide/messages/cad3.js +0 -85
- package/dist/ui/paraglide/messages/caramellatte.d.ts +0 -16
- package/dist/ui/paraglide/messages/caramellatte.js +0 -84
- package/dist/ui/paraglide/messages/cmyk.d.ts +0 -16
- package/dist/ui/paraglide/messages/cmyk.js +0 -84
- package/dist/ui/paraglide/messages/cny3.d.ts +0 -17
- package/dist/ui/paraglide/messages/cny3.js +0 -85
- package/dist/ui/paraglide/messages/coffee.d.ts +0 -16
- package/dist/ui/paraglide/messages/coffee.js +0 -84
- package/dist/ui/paraglide/messages/commands_label.d.ts +0 -16
- package/dist/ui/paraglide/messages/commands_label.js +0 -84
- package/dist/ui/paraglide/messages/corporate.d.ts +0 -16
- package/dist/ui/paraglide/messages/corporate.js +0 -84
- package/dist/ui/paraglide/messages/cupcake.d.ts +0 -16
- package/dist/ui/paraglide/messages/cupcake.js +0 -84
- package/dist/ui/paraglide/messages/currency.d.ts +0 -16
- package/dist/ui/paraglide/messages/currency.js +0 -84
- package/dist/ui/paraglide/messages/current_currency.d.ts +0 -16
- package/dist/ui/paraglide/messages/current_currency.js +0 -84
- package/dist/ui/paraglide/messages/current_language.d.ts +0 -16
- package/dist/ui/paraglide/messages/current_language.js +0 -84
- package/dist/ui/paraglide/messages/current_theme.d.ts +0 -16
- package/dist/ui/paraglide/messages/current_theme.js +0 -84
- package/dist/ui/paraglide/messages/currently_in_queue.d.ts +0 -16
- package/dist/ui/paraglide/messages/currently_in_queue.js +0 -84
- package/dist/ui/paraglide/messages/cyberpunk.d.ts +0 -16
- package/dist/ui/paraglide/messages/cyberpunk.js +0 -84
- package/dist/ui/paraglide/messages/dark.d.ts +0 -16
- package/dist/ui/paraglide/messages/dark.js +0 -84
- package/dist/ui/paraglide/messages/de.d.ts +0 -16
- package/dist/ui/paraglide/messages/de.js +0 -84
- package/dist/ui/paraglide/messages/dim.d.ts +0 -16
- package/dist/ui/paraglide/messages/dim.js +0 -84
- package/dist/ui/paraglide/messages/dracula.d.ts +0 -16
- package/dist/ui/paraglide/messages/dracula.js +0 -84
- package/dist/ui/paraglide/messages/emerald.d.ts +0 -16
- package/dist/ui/paraglide/messages/emerald.js +0 -84
- package/dist/ui/paraglide/messages/en.d.ts +0 -16
- package/dist/ui/paraglide/messages/en.js +0 -84
- package/dist/ui/paraglide/messages/es.d.ts +0 -16
- package/dist/ui/paraglide/messages/es.js +0 -84
- package/dist/ui/paraglide/messages/eur3.d.ts +0 -17
- package/dist/ui/paraglide/messages/eur3.js +0 -85
- package/dist/ui/paraglide/messages/extended_controls.d.ts +0 -16
- package/dist/ui/paraglide/messages/extended_controls.js +0 -84
- package/dist/ui/paraglide/messages/fantasy.d.ts +0 -16
- package/dist/ui/paraglide/messages/fantasy.js +0 -84
- package/dist/ui/paraglide/messages/forest.d.ts +0 -16
- package/dist/ui/paraglide/messages/forest.js +0 -84
- package/dist/ui/paraglide/messages/fr.d.ts +0 -16
- package/dist/ui/paraglide/messages/fr.js +0 -84
- package/dist/ui/paraglide/messages/garden.d.ts +0 -16
- package/dist/ui/paraglide/messages/garden.js +0 -84
- package/dist/ui/paraglide/messages/gbp3.d.ts +0 -17
- package/dist/ui/paraglide/messages/gbp3.js +0 -85
- package/dist/ui/paraglide/messages/halloween.d.ts +0 -16
- package/dist/ui/paraglide/messages/halloween.js +0 -84
- package/dist/ui/paraglide/messages/hello_world.d.ts +0 -18
- package/dist/ui/paraglide/messages/hello_world.js +0 -84
- package/dist/ui/paraglide/messages/hi.d.ts +0 -16
- package/dist/ui/paraglide/messages/hi.js +0 -84
- package/dist/ui/paraglide/messages/inr3.d.ts +0 -17
- package/dist/ui/paraglide/messages/inr3.js +0 -85
- package/dist/ui/paraglide/messages/it.d.ts +0 -16
- package/dist/ui/paraglide/messages/it.js +0 -84
- package/dist/ui/paraglide/messages/ja.d.ts +0 -16
- package/dist/ui/paraglide/messages/ja.js +0 -84
- package/dist/ui/paraglide/messages/jpy3.d.ts +0 -17
- package/dist/ui/paraglide/messages/jpy3.js +0 -85
- package/dist/ui/paraglide/messages/ko.d.ts +0 -16
- package/dist/ui/paraglide/messages/ko.js +0 -84
- package/dist/ui/paraglide/messages/krw3.d.ts +0 -17
- package/dist/ui/paraglide/messages/krw3.js +0 -85
- package/dist/ui/paraglide/messages/languages.d.ts +0 -16
- package/dist/ui/paraglide/messages/languages.js +0 -84
- package/dist/ui/paraglide/messages/lemonade.d.ts +0 -16
- package/dist/ui/paraglide/messages/lemonade.js +0 -84
- package/dist/ui/paraglide/messages/light.d.ts +0 -16
- package/dist/ui/paraglide/messages/light.js +0 -84
- package/dist/ui/paraglide/messages/live_store_dashboard.d.ts +0 -16
- package/dist/ui/paraglide/messages/live_store_dashboard.js +0 -84
- package/dist/ui/paraglide/messages/localization.d.ts +0 -16
- package/dist/ui/paraglide/messages/localization.js +0 -84
- package/dist/ui/paraglide/messages/lofi.d.ts +0 -16
- package/dist/ui/paraglide/messages/lofi.js +0 -84
- package/dist/ui/paraglide/messages/luxury.d.ts +0 -16
- package/dist/ui/paraglide/messages/luxury.js +0 -84
- package/dist/ui/paraglide/messages/mxn3.d.ts +0 -17
- package/dist/ui/paraglide/messages/mxn3.js +0 -85
- package/dist/ui/paraglide/messages/name_label.d.ts +0 -16
- package/dist/ui/paraglide/messages/name_label.js +0 -84
- package/dist/ui/paraglide/messages/night.d.ts +0 -16
- package/dist/ui/paraglide/messages/night.js +0 -84
- package/dist/ui/paraglide/messages/nord.d.ts +0 -16
- package/dist/ui/paraglide/messages/nord.js +0 -84
- package/dist/ui/paraglide/messages/pastel.d.ts +0 -16
- package/dist/ui/paraglide/messages/pastel.js +0 -84
- package/dist/ui/paraglide/messages/pt.d.ts +0 -16
- package/dist/ui/paraglide/messages/pt.js +0 -84
- package/dist/ui/paraglide/messages/real_time_monitor_desc.d.ts +0 -16
- package/dist/ui/paraglide/messages/real_time_monitor_desc.js +0 -84
- package/dist/ui/paraglide/messages/registered_in_registry.d.ts +0 -16
- package/dist/ui/paraglide/messages/registered_in_registry.js +0 -84
- package/dist/ui/paraglide/messages/retro.d.ts +0 -16
- package/dist/ui/paraglide/messages/retro.js +0 -84
- package/dist/ui/paraglide/messages/ru.d.ts +0 -16
- package/dist/ui/paraglide/messages/ru.js +0 -84
- package/dist/ui/paraglide/messages/silk.d.ts +0 -16
- package/dist/ui/paraglide/messages/silk.js +0 -84
- package/dist/ui/paraglide/messages/state_label.d.ts +0 -16
- package/dist/ui/paraglide/messages/state_label.js +0 -84
- package/dist/ui/paraglide/messages/sunset.d.ts +0 -16
- package/dist/ui/paraglide/messages/sunset.js +0 -84
- package/dist/ui/paraglide/messages/synthwave.d.ts +0 -16
- package/dist/ui/paraglide/messages/synthwave.js +0 -84
- package/dist/ui/paraglide/messages/system.d.ts +0 -16
- package/dist/ui/paraglide/messages/system.js +0 -84
- package/dist/ui/paraglide/messages/theme.d.ts +0 -16
- package/dist/ui/paraglide/messages/theme.js +0 -84
- package/dist/ui/paraglide/messages/themes.d.ts +0 -16
- package/dist/ui/paraglide/messages/themes.js +0 -84
- package/dist/ui/paraglide/messages/url_label.d.ts +0 -16
- package/dist/ui/paraglide/messages/url_label.js +0 -84
- package/dist/ui/paraglide/messages/usd3.d.ts +0 -17
- package/dist/ui/paraglide/messages/usd3.js +0 -85
- package/dist/ui/paraglide/messages/valentine.d.ts +0 -16
- package/dist/ui/paraglide/messages/valentine.js +0 -84
- package/dist/ui/paraglide/messages/version_label.d.ts +0 -16
- package/dist/ui/paraglide/messages/version_label.js +0 -84
- package/dist/ui/paraglide/messages/vi.d.ts +0 -16
- package/dist/ui/paraglide/messages/vi.js +0 -84
- package/dist/ui/paraglide/messages/winter.d.ts +0 -16
- package/dist/ui/paraglide/messages/winter.js +0 -84
- package/dist/ui/paraglide/messages/wireframe.d.ts +0 -16
- package/dist/ui/paraglide/messages/wireframe.js +0 -84
- package/dist/ui/paraglide/messages/zh.d.ts +0 -16
- package/dist/ui/paraglide/messages/zh.js +0 -84
- package/dist/ui/paraglide/messages.d.ts +0 -2
- package/dist/ui/paraglide/messages.js +0 -4
- package/dist/ui/paraglide/registry.d.ts +0 -21
- package/dist/ui/paraglide/registry.js +0 -31
- package/dist/ui/paraglide/runtime.d.ts +0 -730
- package/dist/ui/paraglide/runtime.js +0 -1812
- package/dist/ui/paraglide/server.d.ts +0 -92
- package/dist/ui/paraglide/server.js +0 -239
- package/dist/ui/primitives/DatePicker.svelte +0 -257
- package/dist/ui/primitives/DatePicker.svelte.d.ts +0 -17
- package/dist/ui/primitives/index.d.ts +0 -1
- package/dist/ui/primitives/index.js +0 -3
- /package/{dist/ui/layout → src/runes/layout/src}/ContentArea.svelte +0 -0
- /package/{dist/ui/layout → src/runes/layout/src}/DetailPanel.svelte +0 -0
- /package/{dist/ui/features → src/runes/palettes/src}/notifications/NotificationBell.svelte +0 -0
|
@@ -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,52 +0,0 @@
|
|
|
1
|
-
/** Standard size scale used across all components. */
|
|
2
|
-
export type SizeToken = "xs" | "sm" | "md" | "lg" | "xl";
|
|
3
|
-
/** Mixin interface for components that accept a size prop. */
|
|
4
|
-
export interface WithSizing {
|
|
5
|
-
/** Visual size variant. Defaults to "md" if omitted. */
|
|
6
|
-
size?: SizeToken;
|
|
7
|
-
}
|
|
8
|
-
/**
|
|
9
|
-
* Semantic variant tokens aligned with DaisyUI's theme system.
|
|
10
|
-
* Kept as a union type for TypeScript inference; consumers can extend via
|
|
11
|
-
* `string & {}` if they need custom variants.
|
|
12
|
-
*/
|
|
13
|
-
export type VariantToken = "primary" | "secondary" | "accent" | "neutral" | "ghost" | "info" | "success" | "warning" | "error";
|
|
14
|
-
/** Mixin interface for components that accept a variant prop. */
|
|
15
|
-
export interface WithVariant {
|
|
16
|
-
/** Semantic color variant. */
|
|
17
|
-
variant?: VariantToken;
|
|
18
|
-
}
|
|
19
|
-
/** Mixin interface for components that accept a custom CSS class. */
|
|
20
|
-
export interface WithClass {
|
|
21
|
-
/** Additional CSS class string to merge with component classes. */
|
|
22
|
-
class?: string;
|
|
23
|
-
}
|
|
24
|
-
/**
|
|
25
|
-
* Convenience intersection of all design-token mixins.
|
|
26
|
-
* Use when a component supports size, variant, and custom class.
|
|
27
|
-
*/
|
|
28
|
-
export type WithDesignTokens = WithSizing & WithVariant & WithClass;
|
|
29
|
-
/**
|
|
30
|
-
* Maps a size token to a CSS class string using a component-specific map.
|
|
31
|
-
* Returns the mapped class or an empty string for unknown tokens.
|
|
32
|
-
*
|
|
33
|
-
* @param size - The size token to resolve
|
|
34
|
-
* @param classMap - Component-specific mapping of tokens to CSS classes
|
|
35
|
-
* @param fallback - Fallback size if `size` is undefined (default: "md")
|
|
36
|
-
*
|
|
37
|
-
* @example
|
|
38
|
-
* ```ts
|
|
39
|
-
* const btnSizeMap = { xs: "btn-xs", sm: "btn-sm", md: "btn-md", lg: "btn-lg", xl: "btn-xl" };
|
|
40
|
-
* resolveSize("lg", btnSizeMap); // "btn-lg"
|
|
41
|
-
* resolveSize(undefined, btnSizeMap); // "btn-md"
|
|
42
|
-
* ```
|
|
43
|
-
*/
|
|
44
|
-
export declare function resolveSize(size: SizeToken | undefined, classMap: Partial<Record<SizeToken, string>>, fallback?: SizeToken): string;
|
|
45
|
-
/**
|
|
46
|
-
* Maps a variant token to a CSS class string using a component-specific map.
|
|
47
|
-
*
|
|
48
|
-
* @param variant - The variant token to resolve
|
|
49
|
-
* @param classMap - Component-specific mapping of tokens to CSS classes
|
|
50
|
-
*/
|
|
51
|
-
export declare function resolveVariant(variant: VariantToken | undefined, classMap: Partial<Record<VariantToken, string>>): string;
|
|
52
|
-
//# sourceMappingURL=props.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"props.d.ts","sourceRoot":"","sources":["../../../src/sdk/core/src/design-tokens/props.ts"],"names":[],"mappings":"AAMA,sDAAsD;AACtD,MAAM,MAAM,SAAS,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAEzD,8DAA8D;AAC9D,MAAM,WAAW,UAAU;IACzB,wDAAwD;IACxD,IAAI,CAAC,EAAE,SAAS,CAAC;CAClB;AAID;;;;GAIG;AACH,MAAM,MAAM,YAAY,GACpB,SAAS,GACT,WAAW,GACX,QAAQ,GACR,SAAS,GACT,OAAO,GACP,MAAM,GACN,SAAS,GACT,SAAS,GACT,OAAO,CAAC;AAEZ,iEAAiE;AACjE,MAAM,WAAW,WAAW;IAC1B,8BAA8B;IAC9B,OAAO,CAAC,EAAE,YAAY,CAAC;CACxB;AAID,qEAAqE;AACrE,MAAM,WAAW,SAAS;IACxB,mEAAmE;IACnE,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAID;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG,UAAU,GAAG,WAAW,GAAG,SAAS,CAAC;AAIpE;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,WAAW,CACzB,IAAI,EAAE,SAAS,GAAG,SAAS,EAC3B,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,EAC5C,QAAQ,GAAE,SAAgB,GACzB,MAAM,CAGR;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,YAAY,GAAG,SAAS,EACjC,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,GAC9C,MAAM,CAGR"}
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
// sdk/core/src/design-tokens/props.ts
|
|
2
|
-
// Canonical shared prop interfaces for design tokens.
|
|
3
|
-
// No CSS-framework-specific logic here — class maps live in sdk/ui.
|
|
4
|
-
// ── Resolution Utilities ───────────────────────────────────────────────────────
|
|
5
|
-
/**
|
|
6
|
-
* Maps a size token to a CSS class string using a component-specific map.
|
|
7
|
-
* Returns the mapped class or an empty string for unknown tokens.
|
|
8
|
-
*
|
|
9
|
-
* @param size - The size token to resolve
|
|
10
|
-
* @param classMap - Component-specific mapping of tokens to CSS classes
|
|
11
|
-
* @param fallback - Fallback size if `size` is undefined (default: "md")
|
|
12
|
-
*
|
|
13
|
-
* @example
|
|
14
|
-
* ```ts
|
|
15
|
-
* const btnSizeMap = { xs: "btn-xs", sm: "btn-sm", md: "btn-md", lg: "btn-lg", xl: "btn-xl" };
|
|
16
|
-
* resolveSize("lg", btnSizeMap); // "btn-lg"
|
|
17
|
-
* resolveSize(undefined, btnSizeMap); // "btn-md"
|
|
18
|
-
* ```
|
|
19
|
-
*/
|
|
20
|
-
export function resolveSize(size, classMap, fallback = "md") {
|
|
21
|
-
const token = size ?? fallback;
|
|
22
|
-
return classMap[token] ?? "";
|
|
23
|
-
}
|
|
24
|
-
/**
|
|
25
|
-
* Maps a variant token to a CSS class string using a component-specific map.
|
|
26
|
-
*
|
|
27
|
-
* @param variant - The variant token to resolve
|
|
28
|
-
* @param classMap - Component-specific mapping of tokens to CSS classes
|
|
29
|
-
*/
|
|
30
|
-
export function resolveVariant(variant, classMap) {
|
|
31
|
-
if (!variant)
|
|
32
|
-
return "";
|
|
33
|
-
return classMap[variant] ?? "";
|
|
34
|
-
}
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
import type { ScaledRate } from "../money/money.ts";
|
|
2
|
-
/**
|
|
3
|
-
* A pure function that converts a minor-unit amount using a rate.
|
|
4
|
-
* All strategy functions must be deterministic and side-effect-free.
|
|
5
|
-
*/
|
|
6
|
-
export type ConversionFn = (amount: number, ...rates: number[]) => number;
|
|
7
|
-
/**
|
|
8
|
-
* Resolves a ScaledRate or plain number into a float rate value.
|
|
9
|
-
*/
|
|
10
|
-
export declare function resolveRate(rate: ScaledRate | number): number;
|
|
11
|
-
/**
|
|
12
|
-
* Direct conversion: base currency → target currency.
|
|
13
|
-
* Multiplies the amount by the rate.
|
|
14
|
-
*
|
|
15
|
-
* @param amount - Minor-unit amount in the source currency
|
|
16
|
-
* @param rate - Conversion rate (1 source = `rate` target)
|
|
17
|
-
* @returns Minor-unit amount in the target currency
|
|
18
|
-
*/
|
|
19
|
-
export declare function directConversion(amount: number, rate: number): number;
|
|
20
|
-
/**
|
|
21
|
-
* Inverse conversion: target currency → base currency.
|
|
22
|
-
* Divides the amount by the rate.
|
|
23
|
-
*
|
|
24
|
-
* @param amount - Minor-unit amount in the source currency
|
|
25
|
-
* @param rate - Conversion rate of source relative to base (1 base = `rate` source)
|
|
26
|
-
* @returns Minor-unit amount in the base currency
|
|
27
|
-
*/
|
|
28
|
-
export declare function inverseConversion(amount: number, rate: number): number;
|
|
29
|
-
/**
|
|
30
|
-
* Triangular conversion: source → base → target (cross-rate).
|
|
31
|
-
* First divides by the source-to-base rate, then multiplies by the base-to-target rate.
|
|
32
|
-
*
|
|
33
|
-
* @param amount - Minor-unit amount in the source currency
|
|
34
|
-
* @param rateSourceToBase - Rate of source relative to base (1 base = `rate` source)
|
|
35
|
-
* @param rateBaseToTarget - Rate of base to target (1 base = `rate` target)
|
|
36
|
-
* @returns Minor-unit amount in the target currency
|
|
37
|
-
*/
|
|
38
|
-
export declare function triangularConversion(amount: number, rateSourceToBase: number, rateBaseToTarget: number): number;
|
|
39
|
-
/**
|
|
40
|
-
* Named map of conversion strategies.
|
|
41
|
-
* Consumer code and the ExchangeRateStore can select a strategy by name.
|
|
42
|
-
* Extensible: register additional strategies before store initialization.
|
|
43
|
-
*
|
|
44
|
-
* @example
|
|
45
|
-
* ```ts
|
|
46
|
-
* CONVERSION_STRATEGIES["crypto"] = (amount, rate) => {
|
|
47
|
-
* // 18-decimal precision logic
|
|
48
|
-
* };
|
|
49
|
-
* ```
|
|
50
|
-
*/
|
|
51
|
-
export declare const CONVERSION_STRATEGIES: Record<string, ConversionFn>;
|
|
52
|
-
//# sourceMappingURL=strategies.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"strategies.d.ts","sourceRoot":"","sources":["../../../src/sdk/core/src/exchange-rate/strategies.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAIpD;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,KAAK,MAAM,CAAC;AAE1E;;GAEG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,GAAG,MAAM,CAG7D;AAID;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAErE;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAKtE;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,MAAM,EACd,gBAAgB,EAAE,MAAM,EACxB,gBAAgB,EAAE,MAAM,GACvB,MAAM,CAQR;AAID;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAM9D,CAAC"}
|
package/dist/core/index.d.ts
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
export * from "./internal/message-resolver.ts";
|
|
2
|
-
export * from "./persistence/types.ts";
|
|
3
|
-
export * from "./money/index.ts";
|
|
4
|
-
export { type MoneyJSON, MoneyPrimitive } from "./money/money-primitive.ts";
|
|
5
|
-
export * from "./exchange-rate/strategies.ts";
|
|
6
|
-
export * from "./design-tokens/props.ts";
|
|
7
|
-
export * from "./layout/types.ts";
|
|
8
|
-
export * from "./shortcuts/types.ts";
|
|
9
|
-
//# sourceMappingURL=index.d.ts.map
|
package/dist/core/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/sdk/core/src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gCAAgC,CAAC;AAE/C,cAAc,wBAAwB,CAAC;AAEvC,cAAc,kBAAkB,CAAC;AACjC,OAAO,EAAE,KAAK,SAAS,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAE5E,cAAc,+BAA+B,CAAC;AAE9C,cAAc,0BAA0B,CAAC;AAEzC,cAAc,mBAAmB,CAAC;AAElC,cAAc,sBAAsB,CAAC"}
|
package/dist/core/index.js
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
export * from "./internal/message-resolver.js";
|
|
2
|
-
export * from "./persistence/types.js";
|
|
3
|
-
export * from "./money/index.js";
|
|
4
|
-
export { MoneyPrimitive } from "./money/money-primitive.js";
|
|
5
|
-
export * from "./exchange-rate/strategies.js";
|
|
6
|
-
export * from "./design-tokens/props.js";
|
|
7
|
-
export * from "./layout/types.js";
|
|
8
|
-
export * from "./shortcuts/types.js";
|
|
@@ -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: unknown[]) => 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
|