rune-lab 0.4.5 → 0.4.6

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.
@@ -22,15 +22,19 @@ class ConfigStoreImpl {
22
22
  if (saved && this.get(saved)) {
23
23
  this.current = saved;
24
24
  }
25
- if (DEV) {
26
- console.log(
27
- `${options.icon ?? "⚙️"} ${options.displayName} configured:`,
28
- {
29
- current: this.current,
30
- },
31
- );
25
+ // Only log here if we were initialized with a real driver (not the default in-memory)
26
+ if (DEV && options.driver) {
27
+ this.#logConfig();
32
28
  }
33
29
  }
30
+ #logConfig() {
31
+ console.log(
32
+ `${this.#options.icon ?? "⚙️"} ${this.#options.displayName} configured:`,
33
+ {
34
+ current: this.current,
35
+ },
36
+ );
37
+ }
34
38
  /**
35
39
  * Replace the persistence driver and immediately re-read any saved value.
36
40
  *
@@ -46,6 +50,9 @@ class ConfigStoreImpl {
46
50
  if (saved && this.get(saved)) {
47
51
  this.current = saved;
48
52
  }
53
+ if (DEV) {
54
+ this.#logConfig();
55
+ }
49
56
  }
50
57
  /**
51
58
  * Set current item with validation
package/dist/mod.js CHANGED
@@ -4,4 +4,4 @@ export * from "./kernel/src/mod.js";
4
4
  export * from "./runes/layout/src/mod.js";
5
5
  export * from "./runes/palettes/src/mod.js";
6
6
  export * from "./runes/plugins/money/src/mod.js";
7
- export const version = () => "0.4.5";
7
+ export const version = () => "0.4.6";
@@ -1,6 +1,7 @@
1
1
  <script lang="ts">
2
2
  import ResourceSelector from "./ResourceSelector.svelte";
3
3
  import { getLanguageStore } from "../../../kernel/src/mod.js";
4
+ import { getLanguageName } from "./language.svelte.js";
4
5
 
5
6
  const languageStore = getLanguageStore();
6
7
 
@@ -24,7 +25,9 @@
24
25
  {onchange}
25
26
  >
26
27
  {#snippet triggerLabel(active)}
27
- <span class="text-lg">{active.flag}</span>
28
+ <div class="flex items-center gap-2">
29
+ <span class="text-lg">{active.flag}</span>
30
+ </div>
28
31
  {/snippet}
29
32
 
30
33
  {#snippet item(l)}
@@ -37,7 +40,8 @@
37
40
  }}
38
41
  >
39
42
  <span class="text-lg">{l.flag}</span>
40
- <span>{l.code.toUpperCase()}</span>
43
+ <span class="text-xs opacity-50 uppercase">{l.code}</span>
44
+ <span class="flex-grow text-left">{getLanguageName(l)}</span>
41
45
  </button>
42
46
  {/snippet}
43
47
  </ResourceSelector>
@@ -1,6 +1,7 @@
1
1
  <script lang="ts">
2
2
  import ResourceSelector from "./ResourceSelector.svelte";
3
- import { getThemeStore, type Theme } from "../../../kernel/src/mod.js";
3
+ import { getThemeStore } from "../../../kernel/src/mod.js";
4
+ import { getThemeName } from "./theme.svelte.js";
4
5
 
5
6
  const themeStore = getThemeStore();
6
7
 
@@ -22,7 +23,9 @@
22
23
  {onchange}
23
24
  >
24
25
  {#snippet triggerLabel(active)}
25
- <span class="text-lg">{active.icon}</span>
26
+ <div class="flex items-center gap-2">
27
+ <span class="text-lg">{active.icon}</span>
28
+ </div>
26
29
  {/snippet}
27
30
 
28
31
  {#snippet item(t)}
@@ -42,8 +45,8 @@
42
45
  bind:group={themeStore.current}
43
46
  />
44
47
  <span class="text-lg">{t.icon}</span>
45
- <span class="capitalize">
46
- {t.name}
48
+ <span class="flex-grow text-left capitalize">
49
+ {getThemeName(t)}
47
50
  </span>
48
51
  </button>
49
52
  {/snippet}
@@ -5,6 +5,10 @@ import {
5
5
  } from "../../../kernel/src/mod.js";
6
6
  import type { Language } from "../../../kernel/src/mod.js";
7
7
  export type { Language };
8
+ /**
9
+ * Resolver to get the display name of a language in the current locale
10
+ */
11
+ export declare const getLanguageName: (option: Language) => string;
8
12
  export declare const LANGUAGES: readonly [{
9
13
  readonly code: "es";
10
14
  readonly flag: "🇲🇽";
@@ -3,6 +3,14 @@ import {
3
3
  createConfigStore,
4
4
  getLanguageStore,
5
5
  } from "../../../kernel/src/mod.js";
6
+ import { createMessageResolver } from "../../../i18n/message-resolver.js";
7
+ import * as m from "../../../i18n/paraglide/messages.js";
8
+ /**
9
+ * Resolver to get the display name of a language in the current locale
10
+ */
11
+ export const getLanguageName = createMessageResolver(m, {
12
+ keyExtractor: (l) => l.code,
13
+ });
6
14
  export const LANGUAGES = [
7
15
  // --- INDOEUROPEAS (Rama Romance / Latín) ---
8
16
  { code: "es", flag: "🇲🇽" },
@@ -1,6 +1,10 @@
1
1
  import { createConfigStore, getThemeStore } from "../../../kernel/src/mod.js";
2
2
  import type { Theme } from "../../../kernel/src/mod.js";
3
3
  export type { Theme };
4
+ /**
5
+ * Resolver to get the display name of a theme in the current locale
6
+ */
7
+ export declare const getThemeName: (option: Theme) => string;
4
8
  export declare const themeStore: ConfigStore<Theme>;
5
9
  export type ThemeStore = ReturnType<typeof createConfigStore<Theme>>;
6
10
  export { getThemeStore };
@@ -2,6 +2,14 @@
2
2
  // client/packages/ui/src/state/theme-config.svelte.ts
3
3
  import { createConfigStore, getThemeStore } from "../../../kernel/src/mod.js";
4
4
  import { BROWSER } from "esm-env";
5
+ import { createMessageResolver } from "../../../i18n/message-resolver.js";
6
+ import * as m from "../../../i18n/paraglide/messages.js";
7
+ /**
8
+ * Resolver to get the display name of a theme in the current locale
9
+ */
10
+ export const getThemeName = createMessageResolver(m, {
11
+ keyExtractor: (t) => t.name,
12
+ });
5
13
  // Icon map for known themes - unknown ones fall back to 🎨
6
14
  const THEME_ICONS = {
7
15
  light: "🌞",
@@ -1,6 +1,7 @@
1
1
  <script lang="ts">
2
2
  import { ResourceSelector } from "../../../layout/src/mod.js";
3
3
  import { getCurrencyStore } from "../../../../kernel/src/mod.js";
4
+ import { getCurrencyName } from "./currency.svelte.js";
4
5
 
5
6
  const currencyStore = getCurrencyStore();
6
7
 
@@ -22,7 +23,9 @@
22
23
  {onchange}
23
24
  >
24
25
  {#snippet triggerLabel(active)}
25
- <span class="font-bold">{active.symbol}</span>
26
+ <div class="flex items-center gap-2">
27
+ <span class="font-bold">{active.symbol}</span>
28
+ </div>
26
29
  {/snippet}
27
30
 
28
31
  {#snippet item(c)}
@@ -35,7 +38,8 @@
35
38
  }}
36
39
  >
37
40
  <span class="badge badge-sm badge-ghost w-8">{c.symbol}</span>
38
- <span>{c.code}</span>
41
+ <span class="text-xs opacity-50 uppercase">{c.code}</span>
42
+ <span class="flex-grow text-left">{getCurrencyName(c)}</span>
39
43
  </button>
40
44
  {/snippet}
41
45
  </ResourceSelector>
@@ -5,6 +5,10 @@ import {
5
5
  import type { Currency } from "../../../../kernel/src/mod.js";
6
6
  import type { ExchangeRateStore } from "./exchange-rate.svelte.js";
7
7
  export type { Currency };
8
+ /**
9
+ * Resolver to get the display name of a currency in the current locale
10
+ */
11
+ export declare const getCurrencyName: (option: Currency) => string;
8
12
  export declare function setExchangeRateStore(store: ExchangeRateStore): void;
9
13
  /**
10
14
  * Extension: Atomic currency registration.
@@ -3,6 +3,14 @@ import {
3
3
  getCurrencyStore,
4
4
  } from "../../../../kernel/src/mod.js";
5
5
  import { registerCurrency } from "./mod.js";
6
+ import { createMessageResolver } from "../../../../i18n/message-resolver.js";
7
+ import * as m from "../../../../i18n/paraglide/messages.js";
8
+ /**
9
+ * Resolver to get the display name of a currency in the current locale
10
+ */
11
+ export const getCurrencyName = createMessageResolver(m, {
12
+ keyExtractor: (c) => c.code,
13
+ });
6
14
  /**
7
15
  * Helper to build a minimal Dinero definition from Currency metadata.
8
16
  * Assumes base 10 (standard decimal) for auto-registration.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rune-lab",
3
- "version": "0.4.5",
3
+ "version": "0.4.6",
4
4
  "description": "Modern toolkit for Svelte 5 Runes applications.",
5
5
  "type": "module",
6
6
  "readme": "./README.md",
@@ -10,10 +10,6 @@
10
10
  "type": "git",
11
11
  "url": "git+https://github.com/Yrrrrrf/rune-lab.git"
12
12
  },
13
- "scripts": {
14
- "dev": "vite dev",
15
- "gen:version": "node scripts/gen-version.js"
16
- },
17
13
  "exports": {
18
14
  ".": {
19
15
  "svelte": "./dist/mod.js",
@@ -59,4 +55,4 @@
59
55
  "dist/**",
60
56
  "**/*.test.ts"
61
57
  ]
62
- }
58
+ }