rune-lab 0.4.2-beta.1 → 0.4.2-beta.10
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/dist/RuneProvider.svelte +105 -0
- package/dist/RuneProvider.svelte.d.ts +30 -0
- package/dist/i18n/message-resolver.d.ts +41 -0
- package/dist/i18n/message-resolver.js +47 -0
- package/dist/i18n/message-resolver.test.js +77 -0
- package/dist/i18n/project.inlang/settings.json +26 -0
- package/dist/i18n/translations/ar.json +89 -0
- package/dist/i18n/translations/de.json +89 -0
- package/dist/i18n/translations/en.json +89 -0
- package/dist/i18n/translations/es.json +89 -0
- package/dist/i18n/translations/fr.json +89 -0
- package/dist/i18n/translations/hi.json +89 -0
- package/dist/i18n/translations/it.json +89 -0
- package/dist/i18n/translations/ja.json +89 -0
- package/dist/i18n/translations/ko.json +89 -0
- package/dist/i18n/translations/pt.json +89 -0
- package/dist/i18n/translations/ru.json +89 -0
- package/dist/i18n/translations/vi.json +89 -0
- package/dist/i18n/translations/zh.json +89 -0
- package/dist/kernel/src/actions/portal.d.ts +7 -0
- package/dist/kernel/src/actions/portal.js +32 -0
- package/dist/kernel/src/actions/shortcut-listener.d.ts +15 -0
- package/dist/kernel/src/actions/shortcut-listener.js +34 -0
- package/dist/kernel/src/context/app.svelte.d.ts +45 -0
- package/dist/kernel/src/context/app.svelte.js +78 -0
- package/dist/kernel/src/context/context.d.ts +15 -0
- package/dist/kernel/src/context/context.js +16 -0
- package/dist/kernel/src/context/stores.svelte.d.ts +60 -0
- package/dist/kernel/src/context/stores.svelte.js +49 -0
- package/dist/kernel/src/context/types.d.ts +98 -0
- package/dist/kernel/src/context/types.js +1 -0
- package/dist/kernel/src/context/useRuneLab.d.ts +16 -0
- package/dist/kernel/src/context/useRuneLab.js +17 -0
- package/dist/kernel/src/mod.d.ts +13 -0
- package/dist/kernel/src/mod.js +13 -0
- package/dist/kernel/src/persistence/createConfigStore.svelte.d.ts +28 -0
- package/dist/kernel/src/persistence/createConfigStore.svelte.js +72 -0
- package/dist/kernel/src/persistence/drivers.d.ts +12 -0
- package/dist/kernel/src/persistence/drivers.js +75 -0
- package/dist/kernel/src/persistence/drivers.test.js +79 -0
- package/dist/kernel/src/persistence/provider.d.ts +23 -0
- package/dist/kernel/src/persistence/provider.js +43 -0
- package/dist/kernel/src/persistence/provider.test.js +51 -0
- package/dist/kernel/src/persistence/types.d.ts +17 -0
- package/dist/kernel/src/persistence/types.js +2 -0
- package/dist/kernel/src/persistence/usePersistence.d.ts +2 -0
- package/dist/kernel/src/persistence/usePersistence.js +5 -0
- package/dist/kernel/src/registry/mod.d.ts +105 -0
- package/dist/kernel/src/registry/mod.js +131 -0
- package/dist/kernel/src/registry/registry.test.js +114 -0
- package/dist/kernel/src/tokens/props.d.ts +51 -0
- package/dist/kernel/src/tokens/props.js +34 -0
- package/dist/mod.d.ts +6 -0
- package/dist/mod.js +8 -0
- package/dist/runes/layout/src/APP_CONFIGURATIONS.d.ts +29 -0
- package/dist/runes/layout/src/APP_CONFIGURATIONS.js +38 -0
- package/dist/runes/layout/src/AppSettingSelector.svelte +177 -0
- package/dist/runes/layout/src/AppSettingSelector.svelte.d.ts +16 -0
- package/dist/runes/layout/src/ConnectedNavigationPanel.svelte +26 -0
- package/dist/runes/layout/src/ConnectedNavigationPanel.svelte.d.ts +16 -0
- package/dist/runes/layout/src/ConnectedWorkspaceStrip.svelte +22 -0
- package/dist/runes/layout/src/ConnectedWorkspaceStrip.svelte.d.ts +16 -0
- package/dist/runes/layout/src/ContentArea.svelte +19 -0
- package/dist/runes/layout/src/ContentArea.svelte.d.ts +16 -0
- package/dist/runes/layout/src/DetailPanel.svelte +12 -0
- package/dist/runes/layout/src/DetailPanel.svelte.d.ts +16 -0
- package/dist/runes/layout/src/Icon.svelte +7 -0
- package/dist/runes/layout/src/Icon.svelte.d.ts +16 -0
- package/dist/runes/layout/src/LanguageSelector.svelte +45 -0
- package/dist/runes/layout/src/LanguageSelector.svelte.d.ts +16 -0
- package/dist/runes/layout/src/NavigationPanel.svelte +117 -0
- package/dist/runes/layout/src/NavigationPanel.svelte.d.ts +16 -0
- package/dist/runes/layout/src/ResourceSelector.svelte +90 -0
- package/dist/runes/layout/src/ResourceSelector.svelte.d.ts +19 -0
- package/dist/runes/layout/src/ThemeSelector.svelte +50 -0
- package/dist/runes/layout/src/ThemeSelector.svelte.d.ts +16 -0
- package/dist/runes/layout/src/WorkspaceLayout.svelte +252 -0
- package/dist/runes/layout/src/WorkspaceLayout.svelte.d.ts +45 -0
- package/dist/runes/layout/src/WorkspaceStrip.svelte +72 -0
- package/dist/runes/layout/src/WorkspaceStrip.svelte.d.ts +16 -0
- package/dist/runes/layout/src/connection-factory.d.ts +50 -0
- package/dist/runes/layout/src/connection-factory.js +58 -0
- package/dist/runes/layout/src/language.svelte.d.ts +46 -0
- package/dist/runes/layout/src/language.svelte.js +30 -0
- package/dist/runes/layout/src/mod.d.ts +22 -0
- package/dist/runes/layout/src/mod.js +63 -0
- package/dist/runes/layout/src/store.svelte.d.ts +28 -0
- package/dist/runes/layout/src/store.svelte.js +105 -0
- package/dist/runes/layout/src/theme.svelte.d.ts +6 -0
- package/dist/runes/layout/src/theme.svelte.js +62 -0
- package/dist/runes/layout/src/types.d.ts +6 -0
- package/dist/runes/layout/src/types.js +8 -0
- package/dist/runes/palettes/src/commands/CommandPalette.svelte +227 -0
- package/dist/runes/palettes/src/commands/CommandPalette.svelte.d.ts +16 -0
- package/dist/runes/palettes/src/commands/mod.d.ts +2 -0
- package/dist/runes/palettes/src/commands/mod.js +2 -0
- package/dist/runes/palettes/src/commands/store.svelte.d.ts +31 -0
- package/dist/runes/palettes/src/commands/store.svelte.js +57 -0
- package/dist/runes/palettes/src/mod.d.ts +9 -0
- package/dist/runes/palettes/src/mod.js +46 -0
- package/dist/runes/palettes/src/notifications/NotificationBell.svelte +89 -0
- package/dist/runes/palettes/src/notifications/NotificationBell.svelte.d.ts +24 -0
- package/dist/runes/palettes/src/notifications/Toaster.svelte +100 -0
- package/dist/runes/palettes/src/notifications/Toaster.svelte.d.ts +16 -0
- package/dist/runes/palettes/src/notifications/bridge.d.ts +29 -0
- package/dist/runes/palettes/src/notifications/bridge.js +43 -0
- package/dist/runes/palettes/src/notifications/mod.d.ts +4 -0
- package/dist/runes/palettes/src/notifications/mod.js +4 -0
- package/dist/runes/palettes/src/notifications/store.svelte.d.ts +23 -0
- package/dist/runes/palettes/src/notifications/store.svelte.js +43 -0
- package/dist/runes/palettes/src/shortcuts/ShortcutPalette.svelte +243 -0
- package/dist/runes/palettes/src/shortcuts/ShortcutPalette.svelte.d.ts +21 -0
- package/dist/runes/palettes/src/shortcuts/mod.d.ts +4 -0
- package/dist/runes/palettes/src/shortcuts/mod.js +4 -0
- package/dist/runes/palettes/src/shortcuts/store.svelte.d.ts +37 -0
- package/dist/runes/palettes/src/shortcuts/store.svelte.js +76 -0
- package/dist/runes/palettes/src/shortcuts/types.d.ts +1 -0
- package/dist/runes/palettes/src/shortcuts/types.js +3 -0
- package/dist/runes/palettes/src/shortcuts/useShortcuts.d.ts +32 -0
- package/dist/runes/palettes/src/shortcuts/useShortcuts.js +75 -0
- package/dist/runes/plugins/money/src/CurrencySelector.svelte +41 -0
- package/dist/runes/plugins/money/src/CurrencySelector.svelte.d.ts +16 -0
- package/dist/runes/plugins/money/src/MoneyDisplay.svelte +142 -0
- package/dist/runes/plugins/money/src/MoneyDisplay.svelte.d.ts +16 -0
- package/dist/runes/plugins/money/src/MoneyInput.svelte +208 -0
- package/dist/runes/plugins/money/src/MoneyInput.svelte.d.ts +47 -0
- package/dist/runes/plugins/money/src/currency.svelte.d.ts +25 -0
- package/dist/runes/plugins/money/src/currency.svelte.js +70 -0
- package/dist/runes/plugins/money/src/currency.test.js +32 -0
- package/dist/runes/plugins/money/src/exchange-rate.svelte.d.ts +44 -0
- package/dist/runes/plugins/money/src/exchange-rate.svelte.js +146 -0
- package/dist/runes/plugins/money/src/exchange-rate.test.js +74 -0
- package/dist/runes/plugins/money/src/mod.d.ts +13 -0
- package/dist/runes/plugins/money/src/mod.js +53 -0
- package/dist/runes/plugins/money/src/money-primitive.d.ts +100 -0
- package/dist/runes/plugins/money/src/money-primitive.js +161 -0
- package/dist/runes/plugins/money/src/money-primitive.test.js +175 -0
- package/dist/runes/plugins/money/src/money.d.ts +128 -0
- package/dist/runes/plugins/money/src/money.js +250 -0
- package/dist/runes/plugins/money/src/money.test.js +139 -0
- package/dist/runes/plugins/money/src/strategies.d.ts +51 -0
- package/dist/runes/plugins/money/src/strategies.js +72 -0
- package/dist/runes/plugins/money/src/strategies.test.js +100 -0
- package/dist/runes/plugins/money/src/types.d.ts +1 -0
- package/dist/runes/plugins/money/src/types.js +1 -0
- package/dist/runes/plugins/money/src/useMoney.d.ts +32 -0
- package/dist/runes/plugins/money/src/useMoney.js +126 -0
- package/dist/runes/plugins/money/src/useMoneyFilter.d.ts +21 -0
- package/dist/runes/plugins/money/src/useMoneyFilter.js +84 -0
- package/package.json +39 -7
- package/deno.json +0 -13
- package/src/RuneProvider.ts +0 -104
- package/src/_virtual/_rolldown/runtime.ts +0 -14
- package/src/i18n/paraglide/messages/_index.ts +0 -178
- package/src/i18n/paraglide/messages/abyss.ts +0 -45
- package/src/i18n/paraglide/messages/acid.ts +0 -45
- package/src/i18n/paraglide/messages/active_toasts.ts +0 -45
- package/src/i18n/paraglide/messages/aed3.ts +0 -45
- package/src/i18n/paraglide/messages/all_currencies.ts +0 -45
- package/src/i18n/paraglide/messages/all_languages.ts +0 -45
- package/src/i18n/paraglide/messages/all_themes.ts +0 -45
- package/src/i18n/paraglide/messages/api_status.ts +0 -45
- package/src/i18n/paraglide/messages/app_info.ts +0 -45
- package/src/i18n/paraglide/messages/appearance.ts +0 -45
- package/src/i18n/paraglide/messages/aqua.ts +0 -45
- package/src/i18n/paraglide/messages/ar.ts +0 -45
- package/src/i18n/paraglide/messages/autumn.ts +0 -45
- package/src/i18n/paraglide/messages/black.ts +0 -45
- package/src/i18n/paraglide/messages/brl3.ts +0 -45
- package/src/i18n/paraglide/messages/bumblebee.ts +0 -45
- package/src/i18n/paraglide/messages/business.ts +0 -45
- package/src/i18n/paraglide/messages/cad3.ts +0 -45
- package/src/i18n/paraglide/messages/caramellatte.ts +0 -45
- package/src/i18n/paraglide/messages/cmyk.ts +0 -45
- package/src/i18n/paraglide/messages/cny3.ts +0 -45
- package/src/i18n/paraglide/messages/coffee.ts +0 -45
- package/src/i18n/paraglide/messages/commands_label.ts +0 -45
- package/src/i18n/paraglide/messages/corporate.ts +0 -45
- package/src/i18n/paraglide/messages/cupcake.ts +0 -45
- package/src/i18n/paraglide/messages/currency.ts +0 -45
- package/src/i18n/paraglide/messages/current_currency.ts +0 -45
- package/src/i18n/paraglide/messages/current_language.ts +0 -45
- package/src/i18n/paraglide/messages/current_theme.ts +0 -45
- package/src/i18n/paraglide/messages/currently_in_queue.ts +0 -45
- package/src/i18n/paraglide/messages/cyberpunk.ts +0 -45
- package/src/i18n/paraglide/messages/dark.ts +0 -45
- package/src/i18n/paraglide/messages/de.ts +0 -45
- package/src/i18n/paraglide/messages/dim.ts +0 -45
- package/src/i18n/paraglide/messages/dracula.ts +0 -45
- package/src/i18n/paraglide/messages/emerald.ts +0 -45
- package/src/i18n/paraglide/messages/en.ts +0 -45
- package/src/i18n/paraglide/messages/es.ts +0 -45
- package/src/i18n/paraglide/messages/eur3.ts +0 -45
- package/src/i18n/paraglide/messages/extended_controls.ts +0 -45
- package/src/i18n/paraglide/messages/fantasy.ts +0 -45
- package/src/i18n/paraglide/messages/forest.ts +0 -45
- package/src/i18n/paraglide/messages/fr.ts +0 -45
- package/src/i18n/paraglide/messages/garden.ts +0 -45
- package/src/i18n/paraglide/messages/gbp3.ts +0 -45
- package/src/i18n/paraglide/messages/halloween.ts +0 -45
- package/src/i18n/paraglide/messages/hello_world.ts +0 -45
- package/src/i18n/paraglide/messages/hi.ts +0 -45
- package/src/i18n/paraglide/messages/inr3.ts +0 -45
- package/src/i18n/paraglide/messages/it.ts +0 -45
- package/src/i18n/paraglide/messages/ja.ts +0 -45
- package/src/i18n/paraglide/messages/jpy3.ts +0 -45
- package/src/i18n/paraglide/messages/ko.ts +0 -45
- package/src/i18n/paraglide/messages/krw3.ts +0 -45
- package/src/i18n/paraglide/messages/languages.ts +0 -45
- package/src/i18n/paraglide/messages/lemonade.ts +0 -45
- package/src/i18n/paraglide/messages/light.ts +0 -45
- package/src/i18n/paraglide/messages/live_store_dashboard.ts +0 -45
- package/src/i18n/paraglide/messages/localization.ts +0 -45
- package/src/i18n/paraglide/messages/lofi.ts +0 -45
- package/src/i18n/paraglide/messages/luxury.ts +0 -45
- package/src/i18n/paraglide/messages/mxn3.ts +0 -45
- package/src/i18n/paraglide/messages/name_label.ts +0 -45
- package/src/i18n/paraglide/messages/night.ts +0 -45
- package/src/i18n/paraglide/messages/nord.ts +0 -45
- package/src/i18n/paraglide/messages/pastel.ts +0 -45
- package/src/i18n/paraglide/messages/pt.ts +0 -45
- package/src/i18n/paraglide/messages/real_time_monitor_desc.ts +0 -47
- package/src/i18n/paraglide/messages/registered_in_registry.ts +0 -45
- package/src/i18n/paraglide/messages/retro.ts +0 -45
- package/src/i18n/paraglide/messages/ru.ts +0 -45
- package/src/i18n/paraglide/messages/silk.ts +0 -45
- package/src/i18n/paraglide/messages/state_label.ts +0 -45
- package/src/i18n/paraglide/messages/sunset.ts +0 -45
- package/src/i18n/paraglide/messages/synthwave.ts +0 -45
- package/src/i18n/paraglide/messages/system.ts +0 -45
- package/src/i18n/paraglide/messages/theme.ts +0 -45
- package/src/i18n/paraglide/messages/themes.ts +0 -45
- package/src/i18n/paraglide/messages/url_label.ts +0 -45
- package/src/i18n/paraglide/messages/usd3.ts +0 -45
- package/src/i18n/paraglide/messages/valentine.ts +0 -45
- package/src/i18n/paraglide/messages/version_label.ts +0 -45
- package/src/i18n/paraglide/messages/vi.ts +0 -45
- package/src/i18n/paraglide/messages/winter.ts +0 -45
- package/src/i18n/paraglide/messages/wireframe.ts +0 -45
- package/src/i18n/paraglide/messages/zh.ts +0 -45
- package/src/i18n/paraglide/messages.ts +0 -180
- package/src/i18n/paraglide/runtime.ts +0 -147
- package/src/kernel/src/actions/portal.ts +0 -20
- package/src/kernel/src/actions/shortcut-listener.ts +0 -22
- package/src/kernel/src/context/app.svelte.ts +0 -111
- package/src/kernel/src/context/context.ts +0 -18
- package/src/kernel/src/context/stores.svelte.ts +0 -56
- package/src/kernel/src/mod.ts +0 -11
- package/src/kernel/src/persistence/createConfigStore.svelte.ts +0 -57
- package/src/kernel/src/persistence/drivers.ts +0 -59
- package/src/kernel/src/persistence/provider.ts +0 -22
- package/src/kernel/src/persistence/usePersistence.ts +0 -9
- package/src/kernel/src/registry/mod.ts +0 -68
- package/src/kernel/src/tokens/props.ts +0 -9
- package/src/mod.ts +0 -243
- package/src/node_modules/.deno/dinero.js@2.0.2/node_modules/dinero.js/dist/esm/currencies/index.ts +0 -48
- package/src/node_modules/.deno/dinero.js@2.0.2/node_modules/dinero.js/dist/esm/index.ts +0 -26
- package/src/node_modules/.deno/dinero.js@2.0.2/node_modules/dinero.js/dist/esm/trimScale-C3-DjbPM.ts +0 -246
- package/src/rune-lab.css +0 -44
- package/src/runes/layout/src/APP_CONFIGURATIONS.ts +0 -26
- package/src/runes/layout/src/AppSettingSelector.ts +0 -151
- package/src/runes/layout/src/ContentArea.ts +0 -22
- package/src/runes/layout/src/DetailPanel.ts +0 -10
- package/src/runes/layout/src/Icon.ts +0 -16
- package/src/runes/layout/src/LanguageSelector.ts +0 -67
- package/src/runes/layout/src/NavigationPanel.ts +0 -162
- package/src/runes/layout/src/ResourceSelector.ts +0 -63
- package/src/runes/layout/src/ThemeSelector.ts +0 -63
- package/src/runes/layout/src/WorkspaceLayout.ts +0 -210
- package/src/runes/layout/src/WorkspaceStrip.ts +0 -107
- package/src/runes/layout/src/connection-factory.ts +0 -29
- package/src/runes/layout/src/language.svelte.ts +0 -68
- package/src/runes/layout/src/mod.ts +0 -56
- package/src/runes/layout/src/store.svelte.ts +0 -133
- package/src/runes/layout/src/theme.svelte.ts +0 -61
- package/src/runes/layout/src/types.ts +0 -2
- package/src/runes/palettes/src/commands/CommandPalette.ts +0 -241
- package/src/runes/palettes/src/commands/mod.ts +0 -3
- package/src/runes/palettes/src/commands/store.svelte.ts +0 -48
- package/src/runes/palettes/src/mod.ts +0 -64
- package/src/runes/palettes/src/notifications/NotificationBell.ts +0 -51
- package/src/runes/palettes/src/notifications/Toaster.ts +0 -82
- package/src/runes/palettes/src/notifications/bridge.ts +0 -21
- package/src/runes/palettes/src/notifications/mod.ts +0 -5
- package/src/runes/palettes/src/notifications/store.svelte.ts +0 -46
- package/src/runes/palettes/src/shortcuts/ShortcutPalette.ts +0 -208
- package/src/runes/palettes/src/shortcuts/mod.ts +0 -5
- package/src/runes/palettes/src/shortcuts/store.svelte.ts +0 -83
- package/src/runes/palettes/src/shortcuts/useShortcuts.ts +0 -32
- package/src/runes/plugins/money/src/currency.svelte.ts +0 -98
- package/src/runes/plugins/money/src/exchange-rate.svelte.ts +0 -97
- package/src/runes/plugins/money/src/mod.ts +0 -46
- package/src/runes/plugins/money/src/money-primitive.ts +0 -83
- package/src/runes/plugins/money/src/money.ts +0 -202
- package/src/runes/plugins/money/src/strategies.ts +0 -35
- package/src/runes/plugins/money/src/useMoney.ts +0 -80
- package/src/runes/plugins/money/src/useMoneyFilter.ts +0 -66
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { setContext, untrack, type Snippet, onMount, type Component } from "svelte";
|
|
3
|
+
import {
|
|
4
|
+
RUNE_LAB_CONTEXT,
|
|
5
|
+
localStorageDriver,
|
|
6
|
+
initializeStores,
|
|
7
|
+
defineRune,
|
|
8
|
+
} from "@rune-lab/kernel";
|
|
9
|
+
import type { PersistenceDriver, RunePlugin } from "@rune-lab/kernel";
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Namespaced configuration for Rune Lab plugins.
|
|
13
|
+
* Keyed by plugin.id.
|
|
14
|
+
*/
|
|
15
|
+
export interface RuneLabConfig {
|
|
16
|
+
persistence?: PersistenceDriver;
|
|
17
|
+
/** Optional head management properties */
|
|
18
|
+
favicon?: string;
|
|
19
|
+
manageHead?: boolean;
|
|
20
|
+
icons?: "material" | "none";
|
|
21
|
+
/** Namespaced config for plugins */
|
|
22
|
+
[pluginId: string]: unknown;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
let { children, config = {}, plugins = [] } = $props<{
|
|
26
|
+
children: Snippet;
|
|
27
|
+
config?: RuneLabConfig;
|
|
28
|
+
plugins?: RunePlugin[];
|
|
29
|
+
}>();
|
|
30
|
+
|
|
31
|
+
const initialPlugins = untrack(() => plugins);
|
|
32
|
+
const initialPersistence = untrack(() => config.persistence ?? localStorageDriver);
|
|
33
|
+
|
|
34
|
+
// 1. Register all plugins
|
|
35
|
+
// Note: defineRune maps each slot into the STORE_REGISTRY
|
|
36
|
+
untrack(() => {
|
|
37
|
+
for (const plugin of initialPlugins) {
|
|
38
|
+
defineRune(plugin);
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
// 2. Initialize all stores via the registry's topological sort
|
|
43
|
+
const stores = initializeStores(
|
|
44
|
+
initialPlugins,
|
|
45
|
+
untrack(() => config as Record<string, unknown>),
|
|
46
|
+
initialPersistence
|
|
47
|
+
);
|
|
48
|
+
|
|
49
|
+
// 3. Provide all stores as context
|
|
50
|
+
// We iterate ALL registered plugins to find the context keys for their slots
|
|
51
|
+
for (const plugin of initialPlugins) {
|
|
52
|
+
for (const slot of plugin.stores) {
|
|
53
|
+
const store = stores.get(slot.id);
|
|
54
|
+
if (store) {
|
|
55
|
+
setContext(slot.contextKey, store);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
// Also provide the persistence driver itself
|
|
61
|
+
setContext(RUNE_LAB_CONTEXT.persistence, initialPersistence);
|
|
62
|
+
|
|
63
|
+
// 4. Collect all overlays
|
|
64
|
+
const allOverlays = $derived(plugins.flatMap(p => p.overlays ?? []) as Component<Record<never, never>>[]);
|
|
65
|
+
|
|
66
|
+
// ── Initialization for layout ──────────────────────────
|
|
67
|
+
const appStore = stores.get("app") as any;
|
|
68
|
+
const layoutStore = stores.get("layout") as any;
|
|
69
|
+
|
|
70
|
+
onMount(() => {
|
|
71
|
+
if (layoutStore) layoutStore.init();
|
|
72
|
+
});
|
|
73
|
+
|
|
74
|
+
// Meta tags derived from app store state
|
|
75
|
+
const metaTags = $derived(appStore ? [
|
|
76
|
+
{ name: "description", content: appStore.description },
|
|
77
|
+
{ name: "author", content: appStore.author },
|
|
78
|
+
] : []);
|
|
79
|
+
</script>
|
|
80
|
+
|
|
81
|
+
<svelte:head>
|
|
82
|
+
{#if config.manageHead !== false && appStore}
|
|
83
|
+
<title>{appStore.name}</title>
|
|
84
|
+
{#if config.favicon}
|
|
85
|
+
<link rel="icon" href={config.favicon} />
|
|
86
|
+
{/if}
|
|
87
|
+
{#each metaTags as meta}
|
|
88
|
+
<meta name={meta.name} content={meta.content} />
|
|
89
|
+
{/each}
|
|
90
|
+
{#if config.icons === "material"}
|
|
91
|
+
<link
|
|
92
|
+
rel="stylesheet"
|
|
93
|
+
href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200"
|
|
94
|
+
/>
|
|
95
|
+
{/if}
|
|
96
|
+
{/if}
|
|
97
|
+
</svelte:head>
|
|
98
|
+
|
|
99
|
+
<!-- Plugin Overlays -->
|
|
100
|
+
{#each allOverlays as Overlay}
|
|
101
|
+
<Overlay />
|
|
102
|
+
{/each}
|
|
103
|
+
|
|
104
|
+
<!-- Render Children -->
|
|
105
|
+
{@render children()}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { SvelteComponentTyped } from "svelte";
|
|
2
|
+
import type { PersistenceDriver } from "@rune-lab/kernel";
|
|
3
|
+
/**
|
|
4
|
+
* Namespaced configuration for Rune Lab plugins.
|
|
5
|
+
* Keyed by plugin.id.
|
|
6
|
+
*/
|
|
7
|
+
export interface RuneLabConfig {
|
|
8
|
+
persistence?: PersistenceDriver;
|
|
9
|
+
/** Optional head management properties */
|
|
10
|
+
favicon?: string;
|
|
11
|
+
manageHead?: boolean;
|
|
12
|
+
icons?: "material" | "none";
|
|
13
|
+
/** Namespaced config for plugins */
|
|
14
|
+
[pluginId: string]: unknown;
|
|
15
|
+
}
|
|
16
|
+
declare const __propDef: {
|
|
17
|
+
props: Record<string, never>;
|
|
18
|
+
events: {
|
|
19
|
+
[evt: string]: CustomEvent<any>;
|
|
20
|
+
};
|
|
21
|
+
slots: {};
|
|
22
|
+
exports?: {};
|
|
23
|
+
bindings?: string;
|
|
24
|
+
};
|
|
25
|
+
export type RuneProviderProps = typeof __propDef.props;
|
|
26
|
+
export type RuneProviderEvents = typeof __propDef.events;
|
|
27
|
+
export type RuneProviderSlots = typeof __propDef.slots;
|
|
28
|
+
export default class RuneProvider extends SvelteComponentTyped<RuneProviderProps, RuneProviderEvents, RuneProviderSlots> {
|
|
29
|
+
}
|
|
30
|
+
export {};
|
|
@@ -0,0 +1,41 @@
|
|
|
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 {};
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
// sdk/devtools/src/patterns/message-resolver.ts
|
|
2
|
+
import { DEV } from "esm-env";
|
|
3
|
+
/**
|
|
4
|
+
* Creates a message resolver function for dynamic i18n lookups
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* ```typescript
|
|
8
|
+
* const getCurrencyLabel = createMessageResolver<Currency>(m, {
|
|
9
|
+
* keyExtractor: (currency) => currency.code
|
|
10
|
+
* });
|
|
11
|
+
*
|
|
12
|
+
* getCurrencyLabel({ code: "EUR", symbol: "€" }); // "Euro"
|
|
13
|
+
* ```
|
|
14
|
+
*/
|
|
15
|
+
export function createMessageResolver(messages, config) {
|
|
16
|
+
return (option) => {
|
|
17
|
+
const key = config.keyExtractor(option);
|
|
18
|
+
const transformedKey = config.keyTransformer
|
|
19
|
+
? config.keyTransformer(key)
|
|
20
|
+
: key;
|
|
21
|
+
const messageFn = messages[transformedKey];
|
|
22
|
+
if (!messageFn || typeof messageFn !== "function") {
|
|
23
|
+
if (DEV) {
|
|
24
|
+
console.warn(`[MessageResolver] Missing translation for key: "${transformedKey}"`);
|
|
25
|
+
}
|
|
26
|
+
return key; // Fallback to key
|
|
27
|
+
}
|
|
28
|
+
return messageFn();
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Type guard to check if a message key exists
|
|
33
|
+
*/
|
|
34
|
+
export function hasMessage(messages, key) {
|
|
35
|
+
return key in messages && typeof messages[key] === "function";
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Batch resolver for multiple options at once
|
|
39
|
+
*/
|
|
40
|
+
export function batchResolveMessages(messages, options, config) {
|
|
41
|
+
const resolver = createMessageResolver(messages, config);
|
|
42
|
+
return options.reduce((acc, option) => {
|
|
43
|
+
const key = config.keyExtractor(option);
|
|
44
|
+
acc[key] = resolver(option);
|
|
45
|
+
return acc;
|
|
46
|
+
}, {});
|
|
47
|
+
}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { describe, expect, it, vi } from "vite-plus/test";
|
|
2
|
+
// Mock esm-env before importing the module
|
|
3
|
+
vi.mock("esm-env", () => ({ DEV: true }));
|
|
4
|
+
import { batchResolveMessages, createMessageResolver, hasMessage, } from "./message-resolver.ts";
|
|
5
|
+
describe("MessageResolver", () => {
|
|
6
|
+
const mockMessages = {
|
|
7
|
+
usd: () => "US Dollar",
|
|
8
|
+
eur: () => "Euro",
|
|
9
|
+
mxn: () => "Mexican Peso",
|
|
10
|
+
jpy: () => "Japanese Yen",
|
|
11
|
+
};
|
|
12
|
+
describe("createMessageResolver", () => {
|
|
13
|
+
it("should resolve a key via keyExtractor", () => {
|
|
14
|
+
const resolver = createMessageResolver(mockMessages, {
|
|
15
|
+
keyExtractor: (opt) => opt.code,
|
|
16
|
+
keyTransformer: (key) => key.toLowerCase(),
|
|
17
|
+
});
|
|
18
|
+
expect(resolver({ code: "USD" })).toBe("US Dollar");
|
|
19
|
+
expect(resolver({ code: "EUR" })).toBe("Euro");
|
|
20
|
+
});
|
|
21
|
+
it("should use untransformed key when no transformer provided", () => {
|
|
22
|
+
const resolver = createMessageResolver(mockMessages, {
|
|
23
|
+
keyExtractor: (opt) => opt.code,
|
|
24
|
+
});
|
|
25
|
+
// Without transformer, keys must match exactly
|
|
26
|
+
expect(resolver({ code: "usd" })).toBe("US Dollar");
|
|
27
|
+
});
|
|
28
|
+
it("should fall back to the raw key for missing translations", () => {
|
|
29
|
+
const warnSpy = vi.spyOn(console, "warn").mockImplementation(() => { });
|
|
30
|
+
const resolver = createMessageResolver(mockMessages, {
|
|
31
|
+
keyExtractor: (opt) => opt.code,
|
|
32
|
+
keyTransformer: (key) => key.toLowerCase(),
|
|
33
|
+
});
|
|
34
|
+
const result = resolver({ code: "UNKNOWN" });
|
|
35
|
+
expect(result).toBe("UNKNOWN"); // falls back to original key
|
|
36
|
+
expect(warnSpy).toHaveBeenCalledWith(expect.stringContaining("Missing translation"));
|
|
37
|
+
warnSpy.mockRestore();
|
|
38
|
+
});
|
|
39
|
+
});
|
|
40
|
+
describe("hasMessage", () => {
|
|
41
|
+
it("should return true for existing keys", () => {
|
|
42
|
+
expect(hasMessage(mockMessages, "usd")).toBe(true);
|
|
43
|
+
expect(hasMessage(mockMessages, "eur")).toBe(true);
|
|
44
|
+
});
|
|
45
|
+
it("should return false for missing keys", () => {
|
|
46
|
+
expect(hasMessage(mockMessages, "UNKNOWN")).toBe(false);
|
|
47
|
+
expect(hasMessage(mockMessages, "")).toBe(false);
|
|
48
|
+
});
|
|
49
|
+
});
|
|
50
|
+
describe("batchResolveMessages", () => {
|
|
51
|
+
it("should resolve all options at once", () => {
|
|
52
|
+
const options = [{ code: "USD" }, { code: "EUR" }, { code: "MXN" }];
|
|
53
|
+
const result = batchResolveMessages(mockMessages, options, {
|
|
54
|
+
keyExtractor: (opt) => opt.code,
|
|
55
|
+
keyTransformer: (key) => key.toLowerCase(),
|
|
56
|
+
});
|
|
57
|
+
expect(result).toEqual({
|
|
58
|
+
USD: "US Dollar",
|
|
59
|
+
EUR: "Euro",
|
|
60
|
+
MXN: "Mexican Peso",
|
|
61
|
+
});
|
|
62
|
+
});
|
|
63
|
+
it("should include fallback values for missing keys", () => {
|
|
64
|
+
vi.spyOn(console, "warn").mockImplementation(() => { });
|
|
65
|
+
const options = [{ code: "USD" }, { code: "XYZ" }];
|
|
66
|
+
const result = batchResolveMessages(mockMessages, options, {
|
|
67
|
+
keyExtractor: (opt) => opt.code,
|
|
68
|
+
keyTransformer: (key) => key.toLowerCase(),
|
|
69
|
+
});
|
|
70
|
+
expect(result).toEqual({
|
|
71
|
+
USD: "US Dollar",
|
|
72
|
+
XYZ: "XYZ", // fallback
|
|
73
|
+
});
|
|
74
|
+
vi.restoreAllMocks();
|
|
75
|
+
});
|
|
76
|
+
});
|
|
77
|
+
});
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://inlang.com/schema/project-settings",
|
|
3
|
+
"baseLocale": "en",
|
|
4
|
+
"locales": [
|
|
5
|
+
"es",
|
|
6
|
+
"fr",
|
|
7
|
+
"it",
|
|
8
|
+
"pt",
|
|
9
|
+
"en",
|
|
10
|
+
"de",
|
|
11
|
+
"ru",
|
|
12
|
+
"hi",
|
|
13
|
+
"ar",
|
|
14
|
+
"zh",
|
|
15
|
+
"ja",
|
|
16
|
+
"ko",
|
|
17
|
+
"vi"
|
|
18
|
+
],
|
|
19
|
+
"modules": [
|
|
20
|
+
"https://cdn.jsdelivr.net/npm/@inlang/plugin-message-format@4/dist/index.js",
|
|
21
|
+
"https://cdn.jsdelivr.net/npm/@inlang/plugin-m-function-matcher@2/dist/index.js"
|
|
22
|
+
],
|
|
23
|
+
"plugin.inlang.messageFormat": {
|
|
24
|
+
"pathPattern": "./translations/{locale}.json"
|
|
25
|
+
}
|
|
26
|
+
}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://inlang.com/schema/inlang-message-format",
|
|
3
|
+
"hello_world": "مرحبا {name} بالعربية",
|
|
4
|
+
"languages": "اللغات",
|
|
5
|
+
"de": "الألمانية",
|
|
6
|
+
"en": "الإنجليزية",
|
|
7
|
+
"es": "الإسبانية",
|
|
8
|
+
"fr": "الفرنسية",
|
|
9
|
+
"it": "الإيطالية",
|
|
10
|
+
"pt": "البرتغالية",
|
|
11
|
+
"ru": "الروسية",
|
|
12
|
+
"hi": "الهندية",
|
|
13
|
+
"ar": "العربية",
|
|
14
|
+
"zh": "الصينية",
|
|
15
|
+
"ja": "اليابانية",
|
|
16
|
+
"ko": "الكورية",
|
|
17
|
+
"vi": "الفيتنامية",
|
|
18
|
+
"currency": "العملة",
|
|
19
|
+
"USD": "دولار أمريكي",
|
|
20
|
+
"EUR": "يورو",
|
|
21
|
+
"MXN": "بيزو مكسيكي",
|
|
22
|
+
"CNY": "يوان صيني",
|
|
23
|
+
"JPY": "ين ياباني",
|
|
24
|
+
"KRW": "وون كوري جنوبي",
|
|
25
|
+
"AED": "درهم إماراتي",
|
|
26
|
+
"GBP": "جنيه إسترليني",
|
|
27
|
+
"CAD": "دولار كندي",
|
|
28
|
+
"BRL": "ريال برازيلي",
|
|
29
|
+
"INR": "روبية هندية",
|
|
30
|
+
"theme": "السمة",
|
|
31
|
+
"themes": "السمات",
|
|
32
|
+
"all_themes": "جميع السمات",
|
|
33
|
+
"all_currencies": "جميع العملات",
|
|
34
|
+
"all_languages": "جميع اللغات",
|
|
35
|
+
"extended_controls": "ضوابط المختبر الممتدة",
|
|
36
|
+
"light": "فاتح",
|
|
37
|
+
"dark": "داكن",
|
|
38
|
+
"system": "النظام",
|
|
39
|
+
"cupcake": "كاب كيك",
|
|
40
|
+
"bumblebee": "نحلة",
|
|
41
|
+
"emerald": "زمرد",
|
|
42
|
+
"corporate": "شركات",
|
|
43
|
+
"synthwave": "سينثويف",
|
|
44
|
+
"retro": "ريترو",
|
|
45
|
+
"cyberpunk": "سايبربانك",
|
|
46
|
+
"valentine": "عيد الحب",
|
|
47
|
+
"halloween": "الهالوين",
|
|
48
|
+
"garden": "حديقة",
|
|
49
|
+
"forest": "غابة",
|
|
50
|
+
"aqua": "أكوا",
|
|
51
|
+
"lofi": "لوفي",
|
|
52
|
+
"pastel": "باستيل",
|
|
53
|
+
"fantasy": "خيال",
|
|
54
|
+
"wireframe": "إطار سلكي",
|
|
55
|
+
"black": "أسود",
|
|
56
|
+
"luxury": "فخامة",
|
|
57
|
+
"dracula": "دراكولا",
|
|
58
|
+
"cmyk": "سماوي قرمزي أصفر أسود",
|
|
59
|
+
"autumn": "خريف",
|
|
60
|
+
"business": "أعمال",
|
|
61
|
+
"acid": "حمضي",
|
|
62
|
+
"lemonade": "ليمونادة",
|
|
63
|
+
"night": "ليل",
|
|
64
|
+
"coffee": "قهوة",
|
|
65
|
+
"winter": "شتاء",
|
|
66
|
+
"dim": "خافت",
|
|
67
|
+
"nord": "نورد",
|
|
68
|
+
"sunset": "غروب",
|
|
69
|
+
"caramellatte": "كراميل لاتيه",
|
|
70
|
+
"abyss": "هاوية",
|
|
71
|
+
"silk": "حرير",
|
|
72
|
+
"live_store_dashboard": "لوحة تحكم المتجر المباشر",
|
|
73
|
+
"real_time_monitor_desc": "مراقب الحالة التفاعلية في الوقت الفعلي لمتاجر Rune Lab",
|
|
74
|
+
"api_status": "حالة API",
|
|
75
|
+
"active_toasts": "الإشعارات النشطة",
|
|
76
|
+
"commands_label": "الأوامر",
|
|
77
|
+
"app_info": "معلومات التطبيق",
|
|
78
|
+
"appearance": "المظهر",
|
|
79
|
+
"localization": "التوطين",
|
|
80
|
+
"name_label": "الاسم",
|
|
81
|
+
"version_label": "الإصدار",
|
|
82
|
+
"current_theme": "السمة",
|
|
83
|
+
"current_language": "اللغة",
|
|
84
|
+
"current_currency": "العملة",
|
|
85
|
+
"state_label": "الحالة",
|
|
86
|
+
"url_label": "عنوان URL",
|
|
87
|
+
"currently_in_queue": "حاليا في قائمة الانتظار",
|
|
88
|
+
"registered_in_registry": "مسجل في السجل"
|
|
89
|
+
}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://inlang.com/schema/inlang-message-format",
|
|
3
|
+
"hello_world": "Hallo {name} auf Deutsch",
|
|
4
|
+
"languages": "Sprachen",
|
|
5
|
+
"de": "Deutsch",
|
|
6
|
+
"en": "Englisch",
|
|
7
|
+
"es": "Spanisch",
|
|
8
|
+
"fr": "Französisch",
|
|
9
|
+
"it": "Italienisch",
|
|
10
|
+
"pt": "Portugiesisch",
|
|
11
|
+
"ru": "Russisch",
|
|
12
|
+
"hi": "Hindi",
|
|
13
|
+
"ar": "Arabisch",
|
|
14
|
+
"zh": "Chinesisch",
|
|
15
|
+
"ja": "Japanisch",
|
|
16
|
+
"ko": "Koreanisch",
|
|
17
|
+
"vi": "Vietnamesisch",
|
|
18
|
+
"currency": "Währung",
|
|
19
|
+
"USD": "US-Dollar",
|
|
20
|
+
"EUR": "Euro",
|
|
21
|
+
"MXN": "Mexikanischer Peso",
|
|
22
|
+
"CNY": "Chinesischer Yuan",
|
|
23
|
+
"JPY": "Japanischer Yen",
|
|
24
|
+
"KRW": "Südkoreanischer Won",
|
|
25
|
+
"AED": "VAE-Dirham",
|
|
26
|
+
"GBP": "Britisches Pfund",
|
|
27
|
+
"CAD": "Kanadischer Dollar",
|
|
28
|
+
"BRL": "Brasilianischer Real",
|
|
29
|
+
"INR": "Indische Rupie",
|
|
30
|
+
"theme": "Thema",
|
|
31
|
+
"themes": "Themen",
|
|
32
|
+
"all_themes": "Alle Themen",
|
|
33
|
+
"all_currencies": "Alle Währungen",
|
|
34
|
+
"all_languages": "Alle Sprachen",
|
|
35
|
+
"extended_controls": "Erweiterte Laborkontrollen",
|
|
36
|
+
"light": "Hell",
|
|
37
|
+
"dark": "Dunkel",
|
|
38
|
+
"system": "System",
|
|
39
|
+
"cupcake": "Cupcake",
|
|
40
|
+
"bumblebee": "Hummel",
|
|
41
|
+
"emerald": "Smaragd",
|
|
42
|
+
"corporate": "Corporate",
|
|
43
|
+
"synthwave": "Synthwave",
|
|
44
|
+
"retro": "Retro",
|
|
45
|
+
"cyberpunk": "Cyberpunk",
|
|
46
|
+
"valentine": "Valentinstag",
|
|
47
|
+
"halloween": "Halloween",
|
|
48
|
+
"garden": "Garten",
|
|
49
|
+
"forest": "Wald",
|
|
50
|
+
"aqua": "Aqua",
|
|
51
|
+
"lofi": "Lofi",
|
|
52
|
+
"pastel": "Pastell",
|
|
53
|
+
"fantasy": "Fantasie",
|
|
54
|
+
"wireframe": "Drahtmodell",
|
|
55
|
+
"black": "Schwarz",
|
|
56
|
+
"luxury": "Luxus",
|
|
57
|
+
"dracula": "Dracula",
|
|
58
|
+
"cmyk": "CMYK",
|
|
59
|
+
"autumn": "Herbst",
|
|
60
|
+
"business": "Geschäft",
|
|
61
|
+
"acid": "Säure",
|
|
62
|
+
"lemonade": "Limonade",
|
|
63
|
+
"night": "Nacht",
|
|
64
|
+
"coffee": "Kaffee",
|
|
65
|
+
"winter": "Winter",
|
|
66
|
+
"dim": "Gedimmt",
|
|
67
|
+
"nord": "Nord",
|
|
68
|
+
"sunset": "Sonnenuntergang",
|
|
69
|
+
"caramellatte": "Karamell-Latte",
|
|
70
|
+
"abyss": "Abgrund",
|
|
71
|
+
"silk": "Seide",
|
|
72
|
+
"live_store_dashboard": "Live-Store-Dashboard",
|
|
73
|
+
"real_time_monitor_desc": "Reaktiver Echtzeit-Statusmonitor für Rune Lab Stores",
|
|
74
|
+
"api_status": "API-Status",
|
|
75
|
+
"active_toasts": "Aktive Benachrichtigungen",
|
|
76
|
+
"commands_label": "Befehle",
|
|
77
|
+
"app_info": "App-Informationen",
|
|
78
|
+
"appearance": "Aussehen",
|
|
79
|
+
"localization": "Lokalisierung",
|
|
80
|
+
"name_label": "Name",
|
|
81
|
+
"version_label": "Version",
|
|
82
|
+
"current_theme": "Design",
|
|
83
|
+
"current_language": "Sprache",
|
|
84
|
+
"current_currency": "Währung",
|
|
85
|
+
"state_label": "Status",
|
|
86
|
+
"url_label": "URL",
|
|
87
|
+
"currently_in_queue": "Derzeit in der Warteschlange",
|
|
88
|
+
"registered_in_registry": "Im Register eingetragen"
|
|
89
|
+
}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://inlang.com/schema/inlang-message-format",
|
|
3
|
+
"hello_world": "Hello {name} in English",
|
|
4
|
+
"languages": "Languages",
|
|
5
|
+
"de": "Deutsch",
|
|
6
|
+
"en": "English",
|
|
7
|
+
"es": "Spanish",
|
|
8
|
+
"fr": "French",
|
|
9
|
+
"it": "Italian",
|
|
10
|
+
"pt": "Portuguese",
|
|
11
|
+
"ru": "Russian",
|
|
12
|
+
"hi": "Hindi",
|
|
13
|
+
"ar": "Arabic",
|
|
14
|
+
"zh": "Chinese",
|
|
15
|
+
"ja": "Japanese",
|
|
16
|
+
"ko": "Korean",
|
|
17
|
+
"vi": "Vietnamese",
|
|
18
|
+
"currency": "Currency",
|
|
19
|
+
"USD": "US Dollar",
|
|
20
|
+
"EUR": "Euro",
|
|
21
|
+
"MXN": "Mexican Peso",
|
|
22
|
+
"CNY": "Chinese Yuan",
|
|
23
|
+
"JPY": "Japanese Yen",
|
|
24
|
+
"KRW": "Korean Won",
|
|
25
|
+
"AED": "United Arab Emirates Dirham",
|
|
26
|
+
"GBP": "British Pound",
|
|
27
|
+
"CAD": "Canadian Dollar",
|
|
28
|
+
"BRL": "Brazilian Real",
|
|
29
|
+
"INR": "Indian Rupee",
|
|
30
|
+
"theme": "Theme",
|
|
31
|
+
"themes": "Themes",
|
|
32
|
+
"all_themes": "All Themes",
|
|
33
|
+
"all_currencies": "All Currencies",
|
|
34
|
+
"all_languages": "All Languages",
|
|
35
|
+
"extended_controls": "Extended Laboratory Controls",
|
|
36
|
+
"light": "Light",
|
|
37
|
+
"dark": "Dark",
|
|
38
|
+
"system": "System",
|
|
39
|
+
"cupcake": "Cupcake",
|
|
40
|
+
"bumblebee": "Bumblebee",
|
|
41
|
+
"emerald": "Emerald",
|
|
42
|
+
"corporate": "Corporate",
|
|
43
|
+
"synthwave": "Synthwave",
|
|
44
|
+
"retro": "Retro",
|
|
45
|
+
"cyberpunk": "Cyberpunk",
|
|
46
|
+
"valentine": "Valentine",
|
|
47
|
+
"halloween": "Halloween",
|
|
48
|
+
"garden": "Garden",
|
|
49
|
+
"forest": "Forest",
|
|
50
|
+
"aqua": "Aqua",
|
|
51
|
+
"lofi": "Lofi",
|
|
52
|
+
"pastel": "Pastel",
|
|
53
|
+
"fantasy": "Fantasy",
|
|
54
|
+
"wireframe": "Wireframe",
|
|
55
|
+
"black": "Black",
|
|
56
|
+
"luxury": "Luxury",
|
|
57
|
+
"dracula": "Dracula",
|
|
58
|
+
"cmyk": "CMYK",
|
|
59
|
+
"autumn": "Autumn",
|
|
60
|
+
"business": "Business",
|
|
61
|
+
"acid": "Acid",
|
|
62
|
+
"lemonade": "Lemonade",
|
|
63
|
+
"night": "Night",
|
|
64
|
+
"coffee": "Coffee",
|
|
65
|
+
"winter": "Winter",
|
|
66
|
+
"dim": "Dim",
|
|
67
|
+
"nord": "Nord",
|
|
68
|
+
"sunset": "Sunset",
|
|
69
|
+
"caramellatte": "Caramel Latte",
|
|
70
|
+
"abyss": "Abyss",
|
|
71
|
+
"silk": "Silk",
|
|
72
|
+
"live_store_dashboard": "Live Store Dashboard",
|
|
73
|
+
"real_time_monitor_desc": "Real-time reactive state monitor for Rune Lab stores",
|
|
74
|
+
"api_status": "API Status",
|
|
75
|
+
"active_toasts": "Active Toasts",
|
|
76
|
+
"commands_label": "Commands",
|
|
77
|
+
"app_info": "App Info",
|
|
78
|
+
"appearance": "Appearance",
|
|
79
|
+
"localization": "Localization",
|
|
80
|
+
"name_label": "Name",
|
|
81
|
+
"version_label": "Version",
|
|
82
|
+
"current_theme": "Theme",
|
|
83
|
+
"current_language": "Language",
|
|
84
|
+
"current_currency": "Currency",
|
|
85
|
+
"state_label": "State",
|
|
86
|
+
"url_label": "URL",
|
|
87
|
+
"currently_in_queue": "Currently in queue",
|
|
88
|
+
"registered_in_registry": "Registered in registry"
|
|
89
|
+
}
|