rune-lab 0.3.1 → 0.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.gitignore +12 -0
- package/README.md +4 -4
- package/deno.json +50 -0
- package/justfile +5 -0
- package/package.json +3 -80
- 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/src/kernel/src/persistence/provider.ts +58 -0
- 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 +7 -8
- package/{dist/ui/layout → src/runes/layout/src}/ConnectedWorkspaceStrip.svelte +5 -3
- package/src/runes/layout/src/Icon.svelte +7 -0
- package/src/runes/layout/src/LanguageSelector.svelte +45 -0
- package/{dist/ui/layout → src/runes/layout/src}/NavigationPanel.svelte +1 -4
- package/src/runes/layout/src/ResourceSelector.svelte +90 -0
- package/src/runes/layout/src/ThemeSelector.svelte +50 -0
- package/{dist/ui/layout → src/runes/layout/src}/WorkspaceLayout.svelte +13 -3
- 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/src/runes/plugins/money/src/CurrencySelector.svelte +41 -0
- package/src/runes/plugins/money/src/MoneyDisplay.svelte +142 -0
- package/src/runes/plugins/money/src/MoneyInput.svelte +208 -0
- 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/src/runes/plugins/money/src/strategies.ts +95 -0
- 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/index.d.ts +0 -4
- package/dist/core/index.d.ts.map +0 -1
- package/dist/core/index.js +0 -3
- 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/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.d.ts +0 -57
- package/dist/core/money/money.d.ts.map +0 -1
- package/dist/core/money/money.js +0 -132
- 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/index.d.ts +0 -5
- package/dist/index.js +0 -5
- 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 -57
- 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 -15
- package/dist/state/composables/useMoney.js +0 -62
- 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/context.d.ts +0 -14
- package/dist/state/context.js +0 -15
- package/dist/state/createConfigStore.svelte.d.ts +0 -55
- package/dist/state/createConfigStore.svelte.js +0 -61
- package/dist/state/currency.svelte.d.ts +0 -28
- package/dist/state/currency.svelte.js +0 -80
- package/dist/state/daisyui.d.ts +0 -4
- package/dist/state/index.d.ts +0 -19
- package/dist/state/index.js +0 -25
- package/dist/state/language.svelte.d.ts +0 -64
- package/dist/state/language.svelte.js +0 -44
- 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 -73
- 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 -22
- 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 -198
- package/dist/ui/components/RuneProvider.svelte.d.ts +0 -42
- package/dist/ui/components/Toaster.svelte.d.ts +0 -18
- package/dist/ui/components/money/MoneyDisplay.svelte +0 -69
- package/dist/ui/components/money/MoneyDisplay.svelte.d.ts +0 -21
- package/dist/ui/components/money/MoneyDisplay.svelte.test.d.ts +0 -1
- package/dist/ui/components/money/MoneyDisplay.svelte.test.js +0 -74
- package/dist/ui/components/money/MoneyInput.svelte +0 -131
- package/dist/ui/components/money/MoneyInput.svelte.d.ts +0 -25
- 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/AppSettingSelector.svelte.d.ts +0 -13
- package/dist/ui/features/config/CurrencySelector.svelte +0 -67
- package/dist/ui/features/config/CurrencySelector.svelte.d.ts +0 -8
- package/dist/ui/features/config/LanguageSelector.svelte +0 -66
- package/dist/ui/features/config/LanguageSelector.svelte.d.ts +0 -8
- package/dist/ui/features/config/ThemeSelector.svelte +0 -73
- 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/ShortcutPalette.svelte.d.ts +0 -6
- package/dist/ui/index.d.ts +0 -26
- package/dist/ui/index.js +0 -41
- 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 -25
- package/dist/ui/layout/WorkspaceStrip.svelte.d.ts +0 -11
- package/dist/ui/layout/index.d.ts +0 -7
- package/dist/ui/layout/index.js +0 -7
- package/dist/ui/paraglide/README.md +0 -94
- 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 -749
- package/dist/ui/paraglide/runtime.js +0 -1777
- package/dist/ui/paraglide/server.d.ts +0 -103
- package/dist/ui/paraglide/server.js +0 -248
- 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
|
@@ -1,131 +0,0 @@
|
|
|
1
|
-
<!--
|
|
2
|
-
MoneyInput — Monetary value input that works in minor units (cents).
|
|
3
|
-
No floats cross the boundary — values are always integer minor units.
|
|
4
|
-
-->
|
|
5
|
-
<script module lang="ts">
|
|
6
|
-
import type { ISO4217Code } from "rune-lab/core";
|
|
7
|
-
|
|
8
|
-
export interface MoneyInputProps {
|
|
9
|
-
/** Current value in minor or major units (see unit prop) */
|
|
10
|
-
amount?: number | null | undefined;
|
|
11
|
-
/**
|
|
12
|
-
* Whether the amount is in 'major' (e.g., pesos) or 'minor' (e.g., centavos) units.
|
|
13
|
-
* Defaults to 'minor' for backward compatibility.
|
|
14
|
-
*/
|
|
15
|
-
unit?: 'major' | 'minor';
|
|
16
|
-
/** Override currency code (defaults to CurrencyStore.current) */
|
|
17
|
-
currency?: ISO4217Code | string;
|
|
18
|
-
/** Minimum value in same units as amount */
|
|
19
|
-
min?: number;
|
|
20
|
-
/** Maximum value in same units as amount */
|
|
21
|
-
max?: number;
|
|
22
|
-
/** Placeholder text */
|
|
23
|
-
placeholder?: string;
|
|
24
|
-
/** Fired when the value changes (unit matches the unit prop) */
|
|
25
|
-
oninput?: (val: number) => void;
|
|
26
|
-
/** Input disabled state */
|
|
27
|
-
disabled?: boolean;
|
|
28
|
-
}
|
|
29
|
-
</script>
|
|
30
|
-
|
|
31
|
-
<script lang="ts">
|
|
32
|
-
import { getCurrencyStore } from "rune-lab/state";
|
|
33
|
-
import { toMinorUnit } from "rune-lab/core";
|
|
34
|
-
|
|
35
|
-
let {
|
|
36
|
-
amount = $bindable(0),
|
|
37
|
-
unit = 'minor',
|
|
38
|
-
currency,
|
|
39
|
-
min,
|
|
40
|
-
max,
|
|
41
|
-
placeholder = "0.00",
|
|
42
|
-
oninput,
|
|
43
|
-
disabled = false,
|
|
44
|
-
}: MoneyInputProps = $props();
|
|
45
|
-
|
|
46
|
-
const currencyStore = getCurrencyStore();
|
|
47
|
-
|
|
48
|
-
const resolvedCurrency = $derived(
|
|
49
|
-
currency ?? String(currencyStore.current),
|
|
50
|
-
);
|
|
51
|
-
|
|
52
|
-
const currencyMeta = $derived(currencyStore.get(resolvedCurrency));
|
|
53
|
-
const symbol = $derived(currencyMeta?.symbol ?? "$");
|
|
54
|
-
const decimals = $derived(currencyMeta?.decimals ?? 2);
|
|
55
|
-
|
|
56
|
-
// Convert to minor units internally for consistent arithmetic if needed,
|
|
57
|
-
// but here we just need to display it.
|
|
58
|
-
const displayValue = $derived.by(() => {
|
|
59
|
-
const val = amount ?? 0;
|
|
60
|
-
if (unit === 'major') {
|
|
61
|
-
return Number(val).toFixed(decimals);
|
|
62
|
-
}
|
|
63
|
-
if (decimals === 0) return String(val);
|
|
64
|
-
const divisor = Math.pow(10, decimals);
|
|
65
|
-
return (Number(val) / divisor).toFixed(decimals);
|
|
66
|
-
});
|
|
67
|
-
|
|
68
|
-
function handleInput(e: Event) {
|
|
69
|
-
const target = e.target as HTMLInputElement;
|
|
70
|
-
const raw = target.value.replace(/[^0-9.,-]/g, "");
|
|
71
|
-
|
|
72
|
-
if (!raw) return;
|
|
73
|
-
|
|
74
|
-
// String-based parsing: split on decimal point
|
|
75
|
-
const parts = raw.split(".");
|
|
76
|
-
const integerPart = parts[0] || "0";
|
|
77
|
-
|
|
78
|
-
// Pad or truncate the fractional part to exactly `decimals` digits
|
|
79
|
-
let fractionalPart = (parts[1] || "").slice(0, decimals);
|
|
80
|
-
fractionalPart = fractionalPart.padEnd(decimals, "0");
|
|
81
|
-
|
|
82
|
-
// Combine as integer minor units — no floats involved
|
|
83
|
-
const combined =
|
|
84
|
-
decimals === 0 ? integerPart : integerPart + fractionalPart;
|
|
85
|
-
|
|
86
|
-
let cents = parseInt(combined, 10);
|
|
87
|
-
if (isNaN(cents)) return;
|
|
88
|
-
|
|
89
|
-
// Apply constraints in minor units
|
|
90
|
-
let finalCents = cents;
|
|
91
|
-
|
|
92
|
-
if (unit === 'major') {
|
|
93
|
-
// If we are working in major units, we need to convert min/max to cents for comparison
|
|
94
|
-
const minCents = min !== undefined ? toMinorUnit(min, resolvedCurrency) : undefined;
|
|
95
|
-
const maxCents = max !== undefined ? toMinorUnit(max, resolvedCurrency) : undefined;
|
|
96
|
-
|
|
97
|
-
if (minCents !== undefined) finalCents = Math.max(finalCents, minCents);
|
|
98
|
-
if (maxCents !== undefined) finalCents = Math.min(finalCents, maxCents);
|
|
99
|
-
|
|
100
|
-
const majorValue = finalCents / Math.pow(10, decimals);
|
|
101
|
-
amount = majorValue;
|
|
102
|
-
oninput?.(majorValue);
|
|
103
|
-
} else {
|
|
104
|
-
if (min !== undefined) finalCents = Math.max(finalCents, min);
|
|
105
|
-
if (max !== undefined) finalCents = Math.min(finalCents, max);
|
|
106
|
-
|
|
107
|
-
amount = finalCents;
|
|
108
|
-
oninput?.(finalCents);
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
</script>
|
|
112
|
-
|
|
113
|
-
<label
|
|
114
|
-
class="input input-bordered flex items-center gap-1"
|
|
115
|
-
class:input-disabled={disabled}
|
|
116
|
-
>
|
|
117
|
-
<span class="text-base-content/50 font-medium select-none">{symbol}</span>
|
|
118
|
-
<input
|
|
119
|
-
type="text"
|
|
120
|
-
inputmode="decimal"
|
|
121
|
-
class="grow bg-transparent outline-none tabular-nums"
|
|
122
|
-
value={displayValue}
|
|
123
|
-
{placeholder}
|
|
124
|
-
{disabled}
|
|
125
|
-
oninput={handleInput}
|
|
126
|
-
aria-label={`Amount in ${resolvedCurrency}`}
|
|
127
|
-
/>
|
|
128
|
-
<span class="text-base-content/30 text-xs font-mono select-none"
|
|
129
|
-
>{resolvedCurrency}</span
|
|
130
|
-
>
|
|
131
|
-
</label>
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import type { ISO4217Code } from "rune-lab/core";
|
|
2
|
-
export interface MoneyInputProps {
|
|
3
|
-
/** Current value in minor or major units (see unit prop) */
|
|
4
|
-
amount?: number | null | undefined;
|
|
5
|
-
/**
|
|
6
|
-
* Whether the amount is in 'major' (e.g., pesos) or 'minor' (e.g., centavos) units.
|
|
7
|
-
* Defaults to 'minor' for backward compatibility.
|
|
8
|
-
*/
|
|
9
|
-
unit?: 'major' | 'minor';
|
|
10
|
-
/** Override currency code (defaults to CurrencyStore.current) */
|
|
11
|
-
currency?: ISO4217Code | string;
|
|
12
|
-
/** Minimum value in same units as amount */
|
|
13
|
-
min?: number;
|
|
14
|
-
/** Maximum value in same units as amount */
|
|
15
|
-
max?: number;
|
|
16
|
-
/** Placeholder text */
|
|
17
|
-
placeholder?: string;
|
|
18
|
-
/** Fired when the value changes (unit matches the unit prop) */
|
|
19
|
-
oninput?: (val: number) => void;
|
|
20
|
-
/** Input disabled state */
|
|
21
|
-
disabled?: boolean;
|
|
22
|
-
}
|
|
23
|
-
declare const MoneyInput: import("svelte").Component<MoneyInputProps, {}, "amount">;
|
|
24
|
-
type MoneyInput = ReturnType<typeof MoneyInput>;
|
|
25
|
-
export default MoneyInput;
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
<!--
|
|
2
|
-
UserAvatar — Universal user identity primitive.
|
|
3
|
-
Renders avatar image or falls back to generated initials.
|
|
4
|
-
Zero domain knowledge.
|
|
5
|
-
-->
|
|
6
|
-
<script module lang="ts">
|
|
7
|
-
export interface UserAvatarProps {
|
|
8
|
-
/** User's display name (used for initials fallback) */
|
|
9
|
-
name: string;
|
|
10
|
-
/** URL to avatar image */
|
|
11
|
-
avatar_url?: string;
|
|
12
|
-
/** Size variant */
|
|
13
|
-
size?: "xs" | "sm" | "md" | "lg";
|
|
14
|
-
/** Show online indicator */
|
|
15
|
-
online?: boolean;
|
|
16
|
-
}
|
|
17
|
-
</script>
|
|
18
|
-
|
|
19
|
-
<script lang="ts">
|
|
20
|
-
let { name, avatar_url, size = "md", online }: UserAvatarProps = $props();
|
|
21
|
-
|
|
22
|
-
const sizeClasses: Record<string, string> = {
|
|
23
|
-
xs: "w-6 h-6 text-[10px]",
|
|
24
|
-
sm: "w-8 h-8 text-xs",
|
|
25
|
-
md: "w-10 h-10 text-sm",
|
|
26
|
-
lg: "w-14 h-14 text-lg",
|
|
27
|
-
};
|
|
28
|
-
|
|
29
|
-
const initials = $derived(
|
|
30
|
-
name
|
|
31
|
-
.split(/\s+/)
|
|
32
|
-
.filter(Boolean)
|
|
33
|
-
.slice(0, 2)
|
|
34
|
-
.map((word) => word[0].toUpperCase())
|
|
35
|
-
.join(""),
|
|
36
|
-
);
|
|
37
|
-
|
|
38
|
-
/**
|
|
39
|
-
* Deterministic color from name — generates a consistent hue
|
|
40
|
-
* so the same user always gets the same color
|
|
41
|
-
*/
|
|
42
|
-
const bgHue = $derived(
|
|
43
|
-
name.split("").reduce((hash, char) => {
|
|
44
|
-
return char.charCodeAt(0) + ((hash << 5) - hash);
|
|
45
|
-
}, 0) % 360,
|
|
46
|
-
);
|
|
47
|
-
|
|
48
|
-
const bgColor = $derived(`hsl(${Math.abs(bgHue)}, 60%, 45%)`);
|
|
49
|
-
</script>
|
|
50
|
-
|
|
51
|
-
<div class="avatar placeholder" class:online>
|
|
52
|
-
<div
|
|
53
|
-
class="rounded-full {sizeClasses[size]}"
|
|
54
|
-
style={avatar_url ? undefined : `background-color: ${bgColor}`}
|
|
55
|
-
>
|
|
56
|
-
{#if avatar_url}
|
|
57
|
-
<img
|
|
58
|
-
src={avatar_url}
|
|
59
|
-
alt={`${name}'s avatar`}
|
|
60
|
-
class="rounded-full object-cover"
|
|
61
|
-
/>
|
|
62
|
-
{:else}
|
|
63
|
-
<span class="text-white font-semibold select-none">{initials}</span>
|
|
64
|
-
{/if}
|
|
65
|
-
</div>
|
|
66
|
-
</div>
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
export interface UserAvatarProps {
|
|
2
|
-
/** User's display name (used for initials fallback) */
|
|
3
|
-
name: string;
|
|
4
|
-
/** URL to avatar image */
|
|
5
|
-
avatar_url?: string;
|
|
6
|
-
/** Size variant */
|
|
7
|
-
size?: "xs" | "sm" | "md" | "lg";
|
|
8
|
-
/** Show online indicator */
|
|
9
|
-
online?: boolean;
|
|
10
|
-
}
|
|
11
|
-
declare const UserAvatar: import("svelte").Component<UserAvatarProps, {}, "">;
|
|
12
|
-
type UserAvatar = ReturnType<typeof UserAvatar>;
|
|
13
|
-
export default UserAvatar;
|
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
<!--
|
|
2
|
-
UserProfile — Richer user identity card.
|
|
3
|
-
Composes UserAvatar + name/role/email.
|
|
4
|
-
Zero domain knowledge.
|
|
5
|
-
-->
|
|
6
|
-
<script module lang="ts">
|
|
7
|
-
export interface UserProfileProps {
|
|
8
|
-
/** User's display name */
|
|
9
|
-
name: string;
|
|
10
|
-
/** User's email address */
|
|
11
|
-
email?: string;
|
|
12
|
-
/** User's role or title */
|
|
13
|
-
role?: string;
|
|
14
|
-
/** URL to avatar image */
|
|
15
|
-
avatar_url?: string;
|
|
16
|
-
/** Size variant */
|
|
17
|
-
size?: "sm" | "md" | "lg";
|
|
18
|
-
/** Display variant */
|
|
19
|
-
variant?: "card" | "trigger";
|
|
20
|
-
}
|
|
21
|
-
</script>
|
|
22
|
-
|
|
23
|
-
<script lang="ts">
|
|
24
|
-
import UserAvatar from "./UserAvatar.svelte";
|
|
25
|
-
|
|
26
|
-
let {
|
|
27
|
-
name,
|
|
28
|
-
email,
|
|
29
|
-
role,
|
|
30
|
-
avatar_url,
|
|
31
|
-
size = "md",
|
|
32
|
-
variant = "card",
|
|
33
|
-
}: UserProfileProps = $props();
|
|
34
|
-
|
|
35
|
-
const avatarSize = $derived(
|
|
36
|
-
size === "sm" ? "sm" : size === "lg" ? "lg" : "md",
|
|
37
|
-
);
|
|
38
|
-
|
|
39
|
-
const textSizes = $derived({
|
|
40
|
-
name:
|
|
41
|
-
size === "sm" ? "text-sm" : size === "lg" ? "text-lg" : "text-base",
|
|
42
|
-
meta: size === "sm" ? "text-xs" : size === "lg" ? "text-sm" : "text-xs",
|
|
43
|
-
});
|
|
44
|
-
</script>
|
|
45
|
-
|
|
46
|
-
{#if variant === "trigger"}
|
|
47
|
-
<!-- Compact trigger variant — for navbar dropdowns -->
|
|
48
|
-
<div
|
|
49
|
-
class="flex items-center gap-2 cursor-pointer hover:opacity-80 transition-opacity"
|
|
50
|
-
>
|
|
51
|
-
<UserAvatar {name} {avatar_url} size={avatarSize} />
|
|
52
|
-
<div class="flex flex-col leading-tight min-w-0">
|
|
53
|
-
<span class="{textSizes.name} font-medium truncate">{name}</span>
|
|
54
|
-
{#if role}
|
|
55
|
-
<span class="{textSizes.meta} text-base-content/60 truncate"
|
|
56
|
-
>{role}</span
|
|
57
|
-
>
|
|
58
|
-
{/if}
|
|
59
|
-
</div>
|
|
60
|
-
</div>
|
|
61
|
-
{:else}
|
|
62
|
-
<!-- Card variant — for profile pages / settings -->
|
|
63
|
-
<div class="flex items-center gap-3 p-3 rounded-box bg-base-200/50">
|
|
64
|
-
<UserAvatar {name} {avatar_url} size={avatarSize} />
|
|
65
|
-
<div class="flex flex-col leading-tight min-w-0">
|
|
66
|
-
<span class="{textSizes.name} font-semibold truncate">{name}</span>
|
|
67
|
-
{#if role}
|
|
68
|
-
<span class="{textSizes.meta} text-base-content/60 truncate"
|
|
69
|
-
>{role}</span
|
|
70
|
-
>
|
|
71
|
-
{/if}
|
|
72
|
-
{#if email}
|
|
73
|
-
<span class="{textSizes.meta} text-base-content/40 truncate"
|
|
74
|
-
>{email}</span
|
|
75
|
-
>
|
|
76
|
-
{/if}
|
|
77
|
-
</div>
|
|
78
|
-
</div>
|
|
79
|
-
{/if}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
export interface UserProfileProps {
|
|
2
|
-
/** User's display name */
|
|
3
|
-
name: string;
|
|
4
|
-
/** User's email address */
|
|
5
|
-
email?: string;
|
|
6
|
-
/** User's role or title */
|
|
7
|
-
role?: string;
|
|
8
|
-
/** URL to avatar image */
|
|
9
|
-
avatar_url?: string;
|
|
10
|
-
/** Size variant */
|
|
11
|
-
size?: "sm" | "md" | "lg";
|
|
12
|
-
/** Display variant */
|
|
13
|
-
variant?: "card" | "trigger";
|
|
14
|
-
}
|
|
15
|
-
declare const UserProfile: import("svelte").Component<UserProfileProps, {}, "">;
|
|
16
|
-
type UserProfile = ReturnType<typeof UserProfile>;
|
|
17
|
-
export default UserProfile;
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { type Snippet } from "svelte";
|
|
2
|
-
type $$ComponentProps = {
|
|
3
|
-
options: any[];
|
|
4
|
-
value: any;
|
|
5
|
-
item: Snippet<[any]>;
|
|
6
|
-
triggerLabel: Snippet<[any]>;
|
|
7
|
-
tooltip?: string;
|
|
8
|
-
direction?: "top" | "bottom" | "left" | "right" | "end" | "auto";
|
|
9
|
-
responsive?: boolean;
|
|
10
|
-
};
|
|
11
|
-
declare const AppSettingSelector: import("svelte").Component<$$ComponentProps, {}, "">;
|
|
12
|
-
type AppSettingSelector = ReturnType<typeof AppSettingSelector>;
|
|
13
|
-
export default AppSettingSelector;
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
import AppSettingSelector from "./AppSettingSelector.svelte";
|
|
3
|
-
import {
|
|
4
|
-
getCurrencyStore,
|
|
5
|
-
type Currency,
|
|
6
|
-
} from "rune-lab/state";
|
|
7
|
-
import * as rlMessages from "../../paraglide/messages.js";
|
|
8
|
-
import { getContext } from "svelte";
|
|
9
|
-
|
|
10
|
-
const currencyStore = getCurrencyStore();
|
|
11
|
-
|
|
12
|
-
let {
|
|
13
|
-
codes = [],
|
|
14
|
-
current = $bindable(String(currencyStore.current)),
|
|
15
|
-
onchange,
|
|
16
|
-
}: {
|
|
17
|
-
codes?: string[];
|
|
18
|
-
current?: string;
|
|
19
|
-
onchange?: (value: string) => void;
|
|
20
|
-
} = $props();
|
|
21
|
-
|
|
22
|
-
const userDictionary =
|
|
23
|
-
getContext<Record<string, any>>("rl:dictionary") ?? {};
|
|
24
|
-
|
|
25
|
-
function getLabel(currency: Currency): string {
|
|
26
|
-
const key = String(currency.code);
|
|
27
|
-
if (typeof userDictionary[key] === "function")
|
|
28
|
-
return userDictionary[key]();
|
|
29
|
-
if (typeof (rlMessages as any)[key] === "function")
|
|
30
|
-
return (rlMessages as any)[key]();
|
|
31
|
-
return String(currency.code);
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
let active = $derived(
|
|
35
|
-
currencyStore.get(currencyStore.current) ?? currencyStore.available[0],
|
|
36
|
-
);
|
|
37
|
-
|
|
38
|
-
let available = $derived(
|
|
39
|
-
codes.length > 0
|
|
40
|
-
? currencyStore.available.filter((c) => codes.includes(c.code))
|
|
41
|
-
: currencyStore.available,
|
|
42
|
-
);
|
|
43
|
-
</script>
|
|
44
|
-
|
|
45
|
-
<AppSettingSelector
|
|
46
|
-
value={active}
|
|
47
|
-
options={available}
|
|
48
|
-
tooltip={getLabel(active)}
|
|
49
|
-
>
|
|
50
|
-
{#snippet triggerLabel()}
|
|
51
|
-
<span class="font-bold">{active.symbol}</span>
|
|
52
|
-
{/snippet}
|
|
53
|
-
|
|
54
|
-
{#snippet item(c)}
|
|
55
|
-
<button
|
|
56
|
-
class="flex items-center gap-3 w-full"
|
|
57
|
-
onclick={() => {
|
|
58
|
-
currencyStore.set(c.code);
|
|
59
|
-
current = c.code;
|
|
60
|
-
onchange?.(c.code);
|
|
61
|
-
}}
|
|
62
|
-
>
|
|
63
|
-
<span class="badge badge-sm badge-ghost w-8">{c.symbol}</span>
|
|
64
|
-
<span>{getLabel(c)}</span>
|
|
65
|
-
</button>
|
|
66
|
-
{/snippet}
|
|
67
|
-
</AppSettingSelector>
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
type $$ComponentProps = {
|
|
2
|
-
codes?: string[];
|
|
3
|
-
current?: string;
|
|
4
|
-
onchange?: (value: string) => void;
|
|
5
|
-
};
|
|
6
|
-
declare const CurrencySelector: import("svelte").Component<$$ComponentProps, {}, "current">;
|
|
7
|
-
type CurrencySelector = ReturnType<typeof CurrencySelector>;
|
|
8
|
-
export default CurrencySelector;
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
import AppSettingSelector from "./AppSettingSelector.svelte";
|
|
3
|
-
import { getLanguageStore, type Language } from "rune-lab/state";
|
|
4
|
-
import * as rlMessages from "../../paraglide/messages.js";
|
|
5
|
-
import { getContext } from "svelte";
|
|
6
|
-
import { setLocale } from "../../paraglide/runtime";
|
|
7
|
-
|
|
8
|
-
const languageStore = getLanguageStore();
|
|
9
|
-
|
|
10
|
-
let {
|
|
11
|
-
languages: allowedLocales = languageStore.available.map((l) => l.code),
|
|
12
|
-
current = $bindable(languageStore.current),
|
|
13
|
-
onchange,
|
|
14
|
-
}: {
|
|
15
|
-
languages?: ReadonlyArray<string>;
|
|
16
|
-
current?: string;
|
|
17
|
-
onchange?: (value: string) => void;
|
|
18
|
-
} = $props();
|
|
19
|
-
|
|
20
|
-
const userDictionary =
|
|
21
|
-
getContext<Record<string, any>>("rl:dictionary") ?? {};
|
|
22
|
-
|
|
23
|
-
function getLabel(lang: Language): string {
|
|
24
|
-
const key = lang.code;
|
|
25
|
-
if (typeof userDictionary[key] === "function")
|
|
26
|
-
return userDictionary[key]();
|
|
27
|
-
if (typeof (rlMessages as any)[key] === "function")
|
|
28
|
-
return (rlMessages as any)[key]();
|
|
29
|
-
return lang.code.toUpperCase();
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
let active = $derived(
|
|
33
|
-
languageStore.get(languageStore.current) ?? languageStore.available[0],
|
|
34
|
-
);
|
|
35
|
-
|
|
36
|
-
let available = $derived(
|
|
37
|
-
languageStore.available.filter((l) =>
|
|
38
|
-
allowedLocales.includes(l.code as any),
|
|
39
|
-
),
|
|
40
|
-
);
|
|
41
|
-
</script>
|
|
42
|
-
|
|
43
|
-
<AppSettingSelector
|
|
44
|
-
value={active}
|
|
45
|
-
options={available}
|
|
46
|
-
tooltip={getLabel(active)}
|
|
47
|
-
>
|
|
48
|
-
{#snippet triggerLabel()}
|
|
49
|
-
<span class="text-lg">{active.flag}</span>
|
|
50
|
-
{/snippet}
|
|
51
|
-
|
|
52
|
-
{#snippet item(l)}
|
|
53
|
-
<button
|
|
54
|
-
class="flex items-center gap-3 w-full"
|
|
55
|
-
onclick={() => {
|
|
56
|
-
languageStore.set(l.code);
|
|
57
|
-
setLocale(l.code as any);
|
|
58
|
-
current = l.code;
|
|
59
|
-
onchange?.(l.code);
|
|
60
|
-
}}
|
|
61
|
-
>
|
|
62
|
-
<span class="text-lg">{l.flag}</span>
|
|
63
|
-
<span>{getLabel(l)}</span>
|
|
64
|
-
</button>
|
|
65
|
-
{/snippet}
|
|
66
|
-
</AppSettingSelector>
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
type $$ComponentProps = {
|
|
2
|
-
languages?: ReadonlyArray<string>;
|
|
3
|
-
current?: string;
|
|
4
|
-
onchange?: (value: string) => void;
|
|
5
|
-
};
|
|
6
|
-
declare const LanguageSelector: import("svelte").Component<$$ComponentProps, {}, "current">;
|
|
7
|
-
type LanguageSelector = ReturnType<typeof LanguageSelector>;
|
|
8
|
-
export default LanguageSelector;
|
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
import AppSettingSelector from "./AppSettingSelector.svelte";
|
|
3
|
-
import { getThemeStore, type Theme } from "rune-lab/state";
|
|
4
|
-
import * as rlMessages from "../../paraglide/messages.js";
|
|
5
|
-
import { getContext } from "svelte";
|
|
6
|
-
|
|
7
|
-
const themeStore = getThemeStore();
|
|
8
|
-
|
|
9
|
-
let {
|
|
10
|
-
themes = [],
|
|
11
|
-
current = $bindable(themeStore.current),
|
|
12
|
-
onchange,
|
|
13
|
-
}: {
|
|
14
|
-
themes?: string[];
|
|
15
|
-
current?: string;
|
|
16
|
-
onchange?: (value: string) => void;
|
|
17
|
-
} = $props();
|
|
18
|
-
|
|
19
|
-
const userDictionary =
|
|
20
|
-
getContext<Record<string, any>>("rl:dictionary") ?? {};
|
|
21
|
-
|
|
22
|
-
function getThemeLabel(theme: Theme): string {
|
|
23
|
-
const key = theme.name;
|
|
24
|
-
if (typeof userDictionary[key] === "function")
|
|
25
|
-
return userDictionary[key]();
|
|
26
|
-
if (typeof (rlMessages as any)[key] === "function")
|
|
27
|
-
return (rlMessages as any)[key]();
|
|
28
|
-
return theme.name;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
let activeTheme = $derived(
|
|
32
|
-
themeStore.get(themeStore.current) ?? themeStore.available[0],
|
|
33
|
-
);
|
|
34
|
-
|
|
35
|
-
let available = $derived(
|
|
36
|
-
themes.length > 0
|
|
37
|
-
? themeStore.available.filter((t) => themes.includes(t.name))
|
|
38
|
-
: themeStore.available,
|
|
39
|
-
);
|
|
40
|
-
</script>
|
|
41
|
-
|
|
42
|
-
<AppSettingSelector
|
|
43
|
-
value={activeTheme}
|
|
44
|
-
options={available}
|
|
45
|
-
tooltip={getThemeLabel(activeTheme)}
|
|
46
|
-
>
|
|
47
|
-
{#snippet triggerLabel()}
|
|
48
|
-
<span class="text-lg">{activeTheme.icon}</span>
|
|
49
|
-
{/snippet}
|
|
50
|
-
|
|
51
|
-
{#snippet item(t)}
|
|
52
|
-
<button
|
|
53
|
-
class="flex items-center gap-3 w-full"
|
|
54
|
-
onclick={() => {
|
|
55
|
-
themeStore.set(t.name);
|
|
56
|
-
current = t.name;
|
|
57
|
-
onchange?.(t.name);
|
|
58
|
-
}}
|
|
59
|
-
>
|
|
60
|
-
<input
|
|
61
|
-
type="radio"
|
|
62
|
-
name="theme-{t.name}"
|
|
63
|
-
class="theme-controller radio radio-xs"
|
|
64
|
-
value={t.name}
|
|
65
|
-
bind:group={themeStore.current}
|
|
66
|
-
/>
|
|
67
|
-
<span class="text-lg">{t.icon}</span>
|
|
68
|
-
<span class="capitalize">
|
|
69
|
-
{getThemeLabel(t)}
|
|
70
|
-
</span>
|
|
71
|
-
</button>
|
|
72
|
-
{/snippet}
|
|
73
|
-
</AppSettingSelector>
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
type $$ComponentProps = {
|
|
2
|
-
themes?: string[];
|
|
3
|
-
current?: string;
|
|
4
|
-
onchange?: (value: string) => void;
|
|
5
|
-
};
|
|
6
|
-
declare const ThemeSelector: import("svelte").Component<$$ComponentProps, {}, "current">;
|
|
7
|
-
type ThemeSelector = ReturnType<typeof ThemeSelector>;
|
|
8
|
-
export default ThemeSelector;
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
export interface NotificationBellProps {
|
|
2
|
-
/** Number of unread notifications (badge hides when 0) */
|
|
3
|
-
unreadCount?: number;
|
|
4
|
-
/** Click handler */
|
|
5
|
-
onclick?: () => void;
|
|
6
|
-
/** Enable shake animation to draw attention */
|
|
7
|
-
animate?: boolean;
|
|
8
|
-
}
|
|
9
|
-
declare const NotificationBell: import("svelte").Component<NotificationBellProps, {}, "">;
|
|
10
|
-
type NotificationBell = ReturnType<typeof NotificationBell>;
|
|
11
|
-
export default NotificationBell;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { default as NotificationBell } from "./NotificationBell.svelte";
|
package/dist/ui/index.d.ts
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
export { portal } from "./actions/portal.js";
|
|
2
|
-
export { default as RuneProvider } from "./components/RuneProvider.svelte";
|
|
3
|
-
export { default as Icon } from "./components/Icon.svelte";
|
|
4
|
-
export { default as Toaster } from "./components/Toaster.svelte";
|
|
5
|
-
export { default as ApiMonitor } from "./components/ApiMonitor.svelte";
|
|
6
|
-
export { default as Kyntharil } from "./components/Kyntharil.svelte";
|
|
7
|
-
export { default as CommandPalette } from "./features/command-palette/CommandPalette.svelte";
|
|
8
|
-
export { default as ShortcutPalette } from "./features/shortcuts/ShortcutPalette.svelte";
|
|
9
|
-
export { default as AppSettingSelector } from "./features/config/AppSettingSelector.svelte";
|
|
10
|
-
export { default as ThemeSelector } from "./features/config/ThemeSelector.svelte";
|
|
11
|
-
export { default as LanguageSelector } from "./features/config/LanguageSelector.svelte";
|
|
12
|
-
export { default as CurrencySelector } from "./features/config/CurrencySelector.svelte";
|
|
13
|
-
export { default as WorkspaceLayout } from "./layout/WorkspaceLayout.svelte";
|
|
14
|
-
export { default as WorkspaceStrip } from "./layout/WorkspaceStrip.svelte";
|
|
15
|
-
export { default as NavigationPanel } from "./layout/NavigationPanel.svelte";
|
|
16
|
-
export { default as ContentArea } from "./layout/ContentArea.svelte";
|
|
17
|
-
export { default as DetailPanel } from "./layout/DetailPanel.svelte";
|
|
18
|
-
export { default as ConnectedNavigationPanel } from "./layout/ConnectedNavigationPanel.svelte";
|
|
19
|
-
export { default as ConnectedWorkspaceStrip } from "./layout/ConnectedWorkspaceStrip.svelte";
|
|
20
|
-
export { default as DatePicker } from "./primitives/DatePicker.svelte";
|
|
21
|
-
export { default as UserAvatar } from "./components/user/UserAvatar.svelte";
|
|
22
|
-
export { default as UserProfile } from "./components/user/UserProfile.svelte";
|
|
23
|
-
export { default as NotificationBell } from "./features/notifications/NotificationBell.svelte";
|
|
24
|
-
export { default as MoneyDisplay } from "./components/money/MoneyDisplay.svelte";
|
|
25
|
-
export { default as MoneyInput } from "./components/money/MoneyInput.svelte";
|
|
26
|
-
export * as sdkMessages from "./paraglide/messages.js";
|