rune-lab 0.4.6 → 0.4.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (73) hide show
  1. package/dist/RuneProvider.svelte.d.ts +12 -20
  2. package/dist/i18n/message-resolver.test.d.ts +1 -0
  3. package/dist/i18n/messages.d.ts +2 -0
  4. package/dist/i18n/messages.js +7 -0
  5. package/dist/i18n/paraglide/README.md +29 -12
  6. package/dist/i18n/paraglide/messages/_index.js +0 -18
  7. package/dist/i18n/paraglide/runtime.js +98 -12
  8. package/dist/i18n/paraglide/server.js +57 -18
  9. package/dist/kernel/src/persistence/drivers.test.d.ts +1 -0
  10. package/dist/kernel/src/persistence/provider.test.d.ts +1 -0
  11. package/dist/kernel/src/registry/registry.test.d.ts +1 -0
  12. package/dist/mod.js +1 -1
  13. package/dist/runes/layout/src/AppSettingSelector.svelte +5 -10
  14. package/dist/runes/layout/src/AppSettingSelector.svelte.d.ts +35 -21
  15. package/dist/runes/layout/src/ConnectedNavigationPanel.svelte +4 -2
  16. package/dist/runes/layout/src/ConnectedNavigationPanel.svelte.d.ts +13 -19
  17. package/dist/runes/layout/src/ConnectedWorkspaceStrip.svelte +4 -2
  18. package/dist/runes/layout/src/ConnectedWorkspaceStrip.svelte.d.ts +12 -19
  19. package/dist/runes/layout/src/ContentArea.svelte.d.ts +7 -19
  20. package/dist/runes/layout/src/DetailPanel.svelte.d.ts +6 -19
  21. package/dist/runes/layout/src/Icon.svelte +5 -1
  22. package/dist/runes/layout/src/Icon.svelte.d.ts +6 -16
  23. package/dist/runes/layout/src/LanguageSelector.svelte +2 -2
  24. package/dist/runes/layout/src/LanguageSelector.svelte.d.ts +11 -19
  25. package/dist/runes/layout/src/NavigationPanel.svelte +11 -9
  26. package/dist/runes/layout/src/NavigationPanel.svelte.d.ts +16 -19
  27. package/dist/runes/layout/src/ResourceSelector.svelte +22 -21
  28. package/dist/runes/layout/src/ResourceSelector.svelte.d.ts +52 -18
  29. package/dist/runes/layout/src/ThemeSelector.svelte +2 -2
  30. package/dist/runes/layout/src/ThemeSelector.svelte.d.ts +11 -19
  31. package/dist/runes/layout/src/WorkspaceLayout.svelte.d.ts +7 -20
  32. package/dist/runes/layout/src/WorkspaceStrip.svelte +8 -6
  33. package/dist/runes/layout/src/WorkspaceStrip.svelte.d.ts +10 -19
  34. package/dist/runes/layout/src/language.svelte.js +1 -1
  35. package/dist/runes/layout/src/theme.svelte.js +1 -1
  36. package/dist/runes/palettes/src/commands/CommandPalette.svelte +5 -1
  37. package/dist/runes/palettes/src/commands/CommandPalette.svelte.d.ts +5 -19
  38. package/dist/runes/palettes/src/notifications/NotificationBell.svelte.d.ts +7 -20
  39. package/dist/runes/palettes/src/notifications/Toaster.svelte.d.ts +30 -15
  40. package/dist/runes/palettes/src/notifications/bridge.d.ts +1 -1
  41. package/dist/runes/palettes/src/notifications/bridge.js +1 -1
  42. package/dist/runes/palettes/src/shortcuts/ShortcutPalette.svelte.d.ts +10 -25
  43. package/dist/runes/plugins/money/src/CurrencySelector.svelte +2 -2
  44. package/dist/runes/plugins/money/src/CurrencySelector.svelte.d.ts +11 -19
  45. package/dist/runes/plugins/money/src/MoneyDisplay.svelte.d.ts +36 -19
  46. package/dist/runes/plugins/money/src/MoneyInput.svelte.d.ts +7 -20
  47. package/dist/runes/plugins/money/src/currency.svelte.js +6 -2
  48. package/dist/runes/plugins/money/src/currency.test.d.ts +1 -0
  49. package/dist/runes/plugins/money/src/exchange-rate.test.d.ts +1 -0
  50. package/dist/runes/plugins/money/src/money-primitive.test.d.ts +1 -0
  51. package/dist/runes/plugins/money/src/money.test.d.ts +1 -0
  52. package/dist/runes/plugins/money/src/strategies.test.d.ts +1 -0
  53. package/package.json +7 -12
  54. package/LICENSE +0 -21
  55. package/README.md +0 -314
  56. package/dist/i18n/paraglide/messages/active_toasts.js +0 -101
  57. package/dist/i18n/paraglide/messages/api_status.js +0 -101
  58. package/dist/i18n/paraglide/messages/app_info.js +0 -101
  59. package/dist/i18n/paraglide/messages/appearance.js +0 -101
  60. package/dist/i18n/paraglide/messages/commands_label.js +0 -101
  61. package/dist/i18n/paraglide/messages/current_currency.js +0 -101
  62. package/dist/i18n/paraglide/messages/current_language.js +0 -101
  63. package/dist/i18n/paraglide/messages/current_theme.js +0 -101
  64. package/dist/i18n/paraglide/messages/currently_in_queue.js +0 -101
  65. package/dist/i18n/paraglide/messages/extended_controls.js +0 -101
  66. package/dist/i18n/paraglide/messages/live_store_dashboard.js +0 -101
  67. package/dist/i18n/paraglide/messages/localization.js +0 -101
  68. package/dist/i18n/paraglide/messages/name_label.js +0 -101
  69. package/dist/i18n/paraglide/messages/real_time_monitor_desc.js +0 -101
  70. package/dist/i18n/paraglide/messages/registered_in_registry.js +0 -101
  71. package/dist/i18n/paraglide/messages/state_label.js +0 -101
  72. package/dist/i18n/paraglide/messages/url_label.js +0 -101
  73. package/dist/i18n/paraglide/messages/version_label.js +0 -101
package/README.md DELETED
@@ -1,314 +0,0 @@
1
- <h1 align="center">
2
- <img src="https://raw.githubusercontent.com/Yrrrrrf/rune-lab/main/static/img/rune.png" alt="Rune Lab Icon" width="128" height="128" description="Icon representing the Svelte Runes system">
3
- <div align="center">Rune Lab</div>
4
- </h1>
5
-
6
- <div align="center">
7
-
8
- [![JSR](https://jsr.io/badges/@yrrrrrf/rune-lab)](https://jsr.io/@yrrrrrf/rune-lab)
9
- [![NPM Package](https://img.shields.io/npm/v/rune-lab.svg)](https://www.npmjs.com/package/rune-lab)
10
- [![GitHub](https://img.shields.io/badge/GitHub-Yrrrrrf%2Frune--lab-blue)](https://github.com/Yrrrrrf/rune-lab)
11
- [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://choosealicense.com/licenses/mit/)
12
-
13
- </div>
14
-
15
- ## Overview
16
-
17
- **Rune Lab** is a modern, extensible **plugin-based UI shell** for **Svelte 5**
18
- applications. Harnessing the power of Svelte's new **Runes** system, it provides
19
- a complete application skeleton with built-in layout management, dynamic
20
- theming, i18n, keyboard shortcuts, a command palette, toast notifications, and a
21
- highly precise money/currency subsystem.
22
-
23
- Everything is wired through a centralized **Provider + Registry + Context**
24
- architecture, ensuring clean dependency injection and state isolation across
25
- your app.
26
-
27
- ## Key Features
28
-
29
- - **✨ Svelte 5 Runes-First:** Built from the ground up using `$state`,
30
- `$derived`, and `$effect`. No legacy Svelte 4 stores.
31
- - **🧩 Extensible Plugin Architecture:** Features are isolated into plugins
32
- (`LayoutPlugin`, `PalettesPlugin`, `MoneyPlugin`). Only load what you need.
33
- - **🎨 Dynamic Theming & i18n:** 32 DaisyUI themes and 13 pre-configured locales
34
- powered by Paraglide JS, with zero-flash SSR persistence.
35
- - **🔗 Declarative Callbacks:** Bridge store changes (theme, language, currency)
36
- to your own system hooks via `RuneProvider` props.
37
- - **💾 Abstract Persistence Layer:** Swap between cookies, localStorage,
38
- sessionStorage, or in-memory state seamlessly via generic drivers.
39
- - **💸 Robust Money Subsystem:** Backed by Dinero.js for floating-point-safe
40
- precision arithmetic, complete with exchange rate strategies and masked
41
- currency inputs.
42
- - **⌨️ Developer & Power-User Friendly:** Out-of-the-box Command Palette
43
- (`Ctrl+K`) and interactive Shortcuts Palette (`Ctrl+/`).
44
-
45
- ## Installation
46
-
47
- ### Using NPM / Bun
48
-
49
- ```bash
50
- npm install rune-lab
51
- # or
52
- bun install rune-lab
53
- ```
54
-
55
- ## Project Configuration (Required)
56
-
57
- After installing, two configuration steps are required to ensure the framework's
58
- components are compiled and styled correctly in your consuming project.
59
-
60
- ### Step 1 — Vite: Process `rune-lab` through the Svelte compiler
61
-
62
- By default, Vite externalizes `node_modules` during SSR, bypassing the Svelte
63
- compiler. Add the following to your `vite.config.ts` to process `rune-lab`
64
- properly:
65
-
66
- ```ts
67
- // vite.config.ts
68
- import { defineConfig } from "vite";
69
- import { sveltekit } from "@sveltejs/kit/vite";
70
-
71
- export default defineConfig({
72
- plugins: [sveltekit()],
73
- ssr: {
74
- noExternal: ["rune-lab"], // 👈 CRITICAL for Svelte 5 components in node_modules
75
- },
76
- });
77
- ```
78
-
79
- ### Step 2 — Tailwind CSS v4: Scan `rune-lab` for utility classes
80
-
81
- Tailwind only generates CSS for classes it finds by scanning your source files.
82
- Add a `@source` directive to your project's main CSS file so Tailwind compiles
83
- the DaisyUI classes used internally by `rune-lab`:
84
-
85
- ```css
86
- /* app.css / layout.css / global.css */
87
- @import "tailwindcss";
88
- @source "../node_modules/rune-lab/dist"; /* 👈 add this */
89
- ```
90
-
91
- ## Quick Start
92
-
93
- Get your application shell running in less than 40 lines. Inside your
94
- `+layout.svelte`:
95
-
96
- ```svelte
97
- <script lang="ts">
98
- import {
99
- RuneProvider,
100
- WorkspaceLayout,
101
- ConnectedNavigationPanel,
102
- LayoutPlugin,
103
- PalettesPlugin,
104
- cookieDriver
105
- } from "rune-lab";
106
- import type { NavigationSection } from "rune-lab";
107
- import { setLocale } from "$lib/i18n/paraglide/runtime.js";
108
-
109
- let { children } = $props();
110
-
111
- const sections: NavigationSection[] = [
112
- {
113
- id: "main",
114
- title: "Main Menu",
115
- items: [
116
- { id: "home", label: "Dashboard", icon: "🏠" },
117
- { id: "settings", label: "Settings", icon: "⚙️" }
118
- ]
119
- }
120
- ];
121
- </script>
122
-
123
- <!-- Initialize the system with your required plugins and callbacks -->
124
- <RuneProvider
125
- config={{
126
- app: { name: "My Startup", version: "1.0.0" },
127
- persistence: cookieDriver,
128
- }}
129
- plugins={[LayoutPlugin, PalettesPlugin]}
130
- onLanguageChange={(l) => setLocale(l.code)}
131
- onThemeChange={(t) => console.log(`Theme changed to ${t.name}`)}
132
- >
133
- <WorkspaceLayout>
134
- {#snippet navigationPanel()}
135
- <!-- Auto-wires to LayoutStore state -->
136
- <ConnectedNavigationPanel {sections} />
137
- {/snippet}
138
-
139
- {#snippet content()}
140
- <div class="p-8">
141
- {@render children()}
142
- </div>
143
- {/snippet}
144
- </WorkspaceLayout>
145
- </RuneProvider>
146
- ```
147
-
148
- You now have a fully reactive layout, a keyboard command palette, a toast
149
- notification system, and theme/language switchers.
150
-
151
- ## Money & Currency Plugin
152
-
153
- Rune Lab provides a robust money layer that handles precision arithmetic,
154
- formatting, and live exchange-rate triangulation. To use it, simply register the
155
- `MoneyPlugin`:
156
-
157
- ```svelte
158
- <script lang="ts">
159
- import { MoneyPlugin } from "rune-lab";
160
- </script>
161
-
162
- <RuneProvider
163
- config={{
164
- "rune-lab.money": {
165
- defaultCurrency: "USD",
166
- exchangeRates: {
167
- base: "USD",
168
- rates: { MXN: 17.23, EUR: 0.91 }
169
- },
170
- }
171
- }}
172
- plugins={[LayoutPlugin, PalettesPlugin, MoneyPlugin]}
173
- >
174
- <!-- App Content -->
175
- </RuneProvider>
176
- ```
177
-
178
- ### Displaying & Inputting Money
179
-
180
- ```svelte
181
- <script lang="ts">
182
- import {
183
- MoneyDisplay,
184
- MoneyInput,
185
- CurrencySelector,
186
- useMoney
187
- } from "rune-lab";
188
-
189
- let price = $state(15000); // Minor units (e.g., cents) -> $150.00
190
- const { convert, format } = useMoney();
191
- </script>
192
-
193
- <!-- Select from available currencies -->
194
- <CurrencySelector />
195
-
196
- <!-- Formats safely and localizes based on the active LanguageStore -->
197
- <MoneyDisplay amount={price} currency="USD" />
198
-
199
- <!-- Compact notation ($1.5M) -->
200
- <MoneyDisplay amount={150000000} currency="USD" compact />
201
-
202
- <!-- Integer-backed masked input (prevents floating point errors) -->
203
- <MoneyInput bind:amount={price} currency="USD" />
204
- ```
205
-
206
- ## Persistence Drivers
207
-
208
- Rune Lab provides generic drivers to remember user preferences across reloads.
209
- Pass one to `config.persistence` on `<RuneProvider>`:
210
-
211
- - `cookieDriver`: Best for SSR applications (like SvelteKit) to prevent "theme
212
- flash" on initial load.
213
- - `localStorageDriver`: Best for client-only applications (SPAs).
214
- - `sessionStorageDriver`: For preferences that should clear when the browser tab
215
- closes.
216
-
217
- ```svelte
218
- <script lang="ts">
219
- import { cookieDriver } from "rune-lab";
220
- </script>
221
-
222
- <RuneProvider config={{ persistence: cookieDriver }} plugins={[...]}>
223
- ```
224
-
225
- ## Advanced Patterns
226
-
227
- ### Store Observers (`onChange`)
228
-
229
- Beyond the `RuneProvider` props, you can imperatively subscribe to any
230
- `ConfigStore` (theme, language, currency) from your own services or components.
231
- Callbacks include `try/catch` protection so they never crash the store.
232
-
233
- ```ts
234
- import { getThemeStore } from "rune-lab";
235
-
236
- const themeStore = getThemeStore();
237
-
238
- // Returns an unsubscribe function
239
- const unsub = themeStore.onChange((newId, oldId) => {
240
- console.log(`Theme swapped from ${oldId} to ${newId}`);
241
- });
242
- ```
243
-
244
- ### Keyboard Shortcuts (Auto-Cleanup)
245
-
246
- Any component deep in your tree can register its own keyboard shortcuts using
247
- the `useShortcuts` composable. It handles Svelte's `$effect` lifecycle
248
- internally, ensuring shortcuts unregister when the component unmounts:
249
-
250
- ```svelte
251
- <script lang="ts">
252
- import { useShortcuts, getToastStore } from "rune-lab";
253
-
254
- const toasts = getToastStore();
255
-
256
- useShortcuts([
257
- {
258
- id: "feature.save",
259
- keys: "ctrl+s, cmd+s", // Comma-separated alternative keys
260
- label: "Save Document",
261
- category: "Editor",
262
- scope: "global",
263
- handler: (e) => {
264
- e.preventDefault();
265
- toasts.success("Document Saved!");
266
- }
267
- }
268
- ]);
269
- </script>
270
- ```
271
-
272
- ### SvelteKit Route Syncing
273
-
274
- To keep your layout's active navigation state synchronized with the SvelteKit
275
- router, use an `$effect` inside your `+layout.svelte` right after the provider:
276
-
277
- ```svelte
278
- <script lang="ts">
279
- import { page } from "$app/state";
280
- import { getLayoutStore } from "rune-lab";
281
-
282
- const layoutStore = getLayoutStore();
283
-
284
- $effect(() => {
285
- // Automatically open the correct nav tree branch
286
- const segment = page.url.pathname.split("/")[1] || "home";
287
- layoutStore.navigate(segment);
288
- });
289
- </script>
290
- ```
291
-
292
- ### Calling Toasts from Outside Svelte Components
293
-
294
- If you need to trigger a toast from a pure `.ts` file (like a fetching utility
295
- or global error handler), you can use the Toast Bridge:
296
-
297
- ```ts
298
- import { createToastBridge } from "rune-lab";
299
-
300
- const { notify } = createToastBridge();
301
-
302
- export async function fetchUser() {
303
- try {
304
- // ...
305
- } catch (err) {
306
- // Safely queues the toast if the UI hasn't mounted yet
307
- notify("Failed to fetch user data", "error");
308
- }
309
- }
310
- ```
311
-
312
- ## License
313
-
314
- MIT License - See [LICENSE](LICENSE) for details.
@@ -1,101 +0,0 @@
1
- /* eslint-disable */
2
- import { experimentalStaticLocale, getLocale } from "../runtime.js";
3
-
4
- /** @typedef {import('../runtime.js').LocalizedString} LocalizedString */
5
-
6
- /** @typedef {{}} Active_ToastsInputs */
7
-
8
- const es_active_toasts =
9
- /** @type {(inputs: Active_ToastsInputs) => LocalizedString} */ () => {
10
- return /** @type {LocalizedString} */ (`Notificaciones Activas`);
11
- };
12
-
13
- const fr_active_toasts =
14
- /** @type {(inputs: Active_ToastsInputs) => LocalizedString} */ () => {
15
- return /** @type {LocalizedString} */ (`Notifications actives`);
16
- };
17
-
18
- const it_active_toasts =
19
- /** @type {(inputs: Active_ToastsInputs) => LocalizedString} */ () => {
20
- return /** @type {LocalizedString} */ (`Notifiche attive`);
21
- };
22
-
23
- const pt_active_toasts =
24
- /** @type {(inputs: Active_ToastsInputs) => LocalizedString} */ () => {
25
- return /** @type {LocalizedString} */ (`Notificações ativas`);
26
- };
27
-
28
- const en_active_toasts =
29
- /** @type {(inputs: Active_ToastsInputs) => LocalizedString} */ () => {
30
- return /** @type {LocalizedString} */ (`Active Toasts`);
31
- };
32
-
33
- const de_active_toasts =
34
- /** @type {(inputs: Active_ToastsInputs) => LocalizedString} */ () => {
35
- return /** @type {LocalizedString} */ (`Aktive Benachrichtigungen`);
36
- };
37
-
38
- const ru_active_toasts =
39
- /** @type {(inputs: Active_ToastsInputs) => LocalizedString} */ () => {
40
- return /** @type {LocalizedString} */ (`Активные уведомления`);
41
- };
42
-
43
- const hi_active_toasts =
44
- /** @type {(inputs: Active_ToastsInputs) => LocalizedString} */ () => {
45
- return /** @type {LocalizedString} */ (`सक्रिय टोस्ट`);
46
- };
47
-
48
- const ar_active_toasts =
49
- /** @type {(inputs: Active_ToastsInputs) => LocalizedString} */ () => {
50
- return /** @type {LocalizedString} */ (`الإشعارات النشطة`);
51
- };
52
-
53
- const zh_active_toasts =
54
- /** @type {(inputs: Active_ToastsInputs) => LocalizedString} */ () => {
55
- return /** @type {LocalizedString} */ (`活动提示`);
56
- };
57
-
58
- const ja_active_toasts =
59
- /** @type {(inputs: Active_ToastsInputs) => LocalizedString} */ () => {
60
- return /** @type {LocalizedString} */ (`アクティブトースト`);
61
- };
62
-
63
- const ko_active_toasts =
64
- /** @type {(inputs: Active_ToastsInputs) => LocalizedString} */ () => {
65
- return /** @type {LocalizedString} */ (`활성 토스트`);
66
- };
67
-
68
- const vi_active_toasts =
69
- /** @type {(inputs: Active_ToastsInputs) => LocalizedString} */ () => {
70
- return /** @type {LocalizedString} */ (`Thông báo đang hoạt động`);
71
- };
72
-
73
- /**
74
- * | output |
75
- * | --- |
76
- * | "Active Toasts" |
77
- *
78
- * @param {Active_ToastsInputs} inputs
79
- * @param {{ locale?: "es" | "fr" | "it" | "pt" | "en" | "de" | "ru" | "hi" | "ar" | "zh" | "ja" | "ko" | "vi" }} options
80
- * @returns {LocalizedString}
81
- */
82
- export const active_toasts =
83
- /** @type {((inputs?: Active_ToastsInputs, options?: { locale?: "es" | "fr" | "it" | "pt" | "en" | "de" | "ru" | "hi" | "ar" | "zh" | "ja" | "ko" | "vi" }) => LocalizedString) & import('../runtime.js').MessageMetadata<Active_ToastsInputs, { locale?: "es" | "fr" | "it" | "pt" | "en" | "de" | "ru" | "hi" | "ar" | "zh" | "ja" | "ko" | "vi" }, {}>} */ ((
84
- inputs = {},
85
- options = {},
86
- ) => {
87
- const locale = experimentalStaticLocale ?? options.locale ?? getLocale();
88
- if (locale === "es") return es_active_toasts(inputs);
89
- if (locale === "fr") return fr_active_toasts(inputs);
90
- if (locale === "it") return it_active_toasts(inputs);
91
- if (locale === "pt") return pt_active_toasts(inputs);
92
- if (locale === "en") return en_active_toasts(inputs);
93
- if (locale === "de") return de_active_toasts(inputs);
94
- if (locale === "ru") return ru_active_toasts(inputs);
95
- if (locale === "hi") return hi_active_toasts(inputs);
96
- if (locale === "ar") return ar_active_toasts(inputs);
97
- if (locale === "zh") return zh_active_toasts(inputs);
98
- if (locale === "ja") return ja_active_toasts(inputs);
99
- if (locale === "ko") return ko_active_toasts(inputs);
100
- return vi_active_toasts(inputs);
101
- });
@@ -1,101 +0,0 @@
1
- /* eslint-disable */
2
- import { experimentalStaticLocale, getLocale } from "../runtime.js";
3
-
4
- /** @typedef {import('../runtime.js').LocalizedString} LocalizedString */
5
-
6
- /** @typedef {{}} Api_StatusInputs */
7
-
8
- const es_api_status =
9
- /** @type {(inputs: Api_StatusInputs) => LocalizedString} */ () => {
10
- return /** @type {LocalizedString} */ (`Estado de la API`);
11
- };
12
-
13
- const fr_api_status =
14
- /** @type {(inputs: Api_StatusInputs) => LocalizedString} */ () => {
15
- return /** @type {LocalizedString} */ (`État de l’API`);
16
- };
17
-
18
- const it_api_status =
19
- /** @type {(inputs: Api_StatusInputs) => LocalizedString} */ () => {
20
- return /** @type {LocalizedString} */ (`Stato dell’API`);
21
- };
22
-
23
- const pt_api_status =
24
- /** @type {(inputs: Api_StatusInputs) => LocalizedString} */ () => {
25
- return /** @type {LocalizedString} */ (`Estado da API`);
26
- };
27
-
28
- const en_api_status =
29
- /** @type {(inputs: Api_StatusInputs) => LocalizedString} */ () => {
30
- return /** @type {LocalizedString} */ (`API Status`);
31
- };
32
-
33
- const de_api_status =
34
- /** @type {(inputs: Api_StatusInputs) => LocalizedString} */ () => {
35
- return /** @type {LocalizedString} */ (`API-Status`);
36
- };
37
-
38
- const ru_api_status =
39
- /** @type {(inputs: Api_StatusInputs) => LocalizedString} */ () => {
40
- return /** @type {LocalizedString} */ (`Статус API`);
41
- };
42
-
43
- const hi_api_status =
44
- /** @type {(inputs: Api_StatusInputs) => LocalizedString} */ () => {
45
- return /** @type {LocalizedString} */ (`एपीआई स्थिति`);
46
- };
47
-
48
- const ar_api_status =
49
- /** @type {(inputs: Api_StatusInputs) => LocalizedString} */ () => {
50
- return /** @type {LocalizedString} */ (`حالة API`);
51
- };
52
-
53
- const zh_api_status =
54
- /** @type {(inputs: Api_StatusInputs) => LocalizedString} */ () => {
55
- return /** @type {LocalizedString} */ (`API 状态`);
56
- };
57
-
58
- const ja_api_status =
59
- /** @type {(inputs: Api_StatusInputs) => LocalizedString} */ () => {
60
- return /** @type {LocalizedString} */ (`APIステータス`);
61
- };
62
-
63
- const ko_api_status =
64
- /** @type {(inputs: Api_StatusInputs) => LocalizedString} */ () => {
65
- return /** @type {LocalizedString} */ (`API 상태`);
66
- };
67
-
68
- const vi_api_status =
69
- /** @type {(inputs: Api_StatusInputs) => LocalizedString} */ () => {
70
- return /** @type {LocalizedString} */ (`Trạng thái API`);
71
- };
72
-
73
- /**
74
- * | output |
75
- * | --- |
76
- * | "API Status" |
77
- *
78
- * @param {Api_StatusInputs} inputs
79
- * @param {{ locale?: "es" | "fr" | "it" | "pt" | "en" | "de" | "ru" | "hi" | "ar" | "zh" | "ja" | "ko" | "vi" }} options
80
- * @returns {LocalizedString}
81
- */
82
- export const api_status =
83
- /** @type {((inputs?: Api_StatusInputs, options?: { locale?: "es" | "fr" | "it" | "pt" | "en" | "de" | "ru" | "hi" | "ar" | "zh" | "ja" | "ko" | "vi" }) => LocalizedString) & import('../runtime.js').MessageMetadata<Api_StatusInputs, { locale?: "es" | "fr" | "it" | "pt" | "en" | "de" | "ru" | "hi" | "ar" | "zh" | "ja" | "ko" | "vi" }, {}>} */ ((
84
- inputs = {},
85
- options = {},
86
- ) => {
87
- const locale = experimentalStaticLocale ?? options.locale ?? getLocale();
88
- if (locale === "es") return es_api_status(inputs);
89
- if (locale === "fr") return fr_api_status(inputs);
90
- if (locale === "it") return it_api_status(inputs);
91
- if (locale === "pt") return pt_api_status(inputs);
92
- if (locale === "en") return en_api_status(inputs);
93
- if (locale === "de") return de_api_status(inputs);
94
- if (locale === "ru") return ru_api_status(inputs);
95
- if (locale === "hi") return hi_api_status(inputs);
96
- if (locale === "ar") return ar_api_status(inputs);
97
- if (locale === "zh") return zh_api_status(inputs);
98
- if (locale === "ja") return ja_api_status(inputs);
99
- if (locale === "ko") return ko_api_status(inputs);
100
- return vi_api_status(inputs);
101
- });
@@ -1,101 +0,0 @@
1
- /* eslint-disable */
2
- import { experimentalStaticLocale, getLocale } from "../runtime.js";
3
-
4
- /** @typedef {import('../runtime.js').LocalizedString} LocalizedString */
5
-
6
- /** @typedef {{}} App_InfoInputs */
7
-
8
- const es_app_info =
9
- /** @type {(inputs: App_InfoInputs) => LocalizedString} */ () => {
10
- return /** @type {LocalizedString} */ (`Información de la App`);
11
- };
12
-
13
- const fr_app_info =
14
- /** @type {(inputs: App_InfoInputs) => LocalizedString} */ () => {
15
- return /** @type {LocalizedString} */ (`Infos de l’application`);
16
- };
17
-
18
- const it_app_info =
19
- /** @type {(inputs: App_InfoInputs) => LocalizedString} */ () => {
20
- return /** @type {LocalizedString} */ (`Informazioni app`);
21
- };
22
-
23
- const pt_app_info =
24
- /** @type {(inputs: App_InfoInputs) => LocalizedString} */ () => {
25
- return /** @type {LocalizedString} */ (`Informações da aplicação`);
26
- };
27
-
28
- const en_app_info =
29
- /** @type {(inputs: App_InfoInputs) => LocalizedString} */ () => {
30
- return /** @type {LocalizedString} */ (`App Info`);
31
- };
32
-
33
- const de_app_info =
34
- /** @type {(inputs: App_InfoInputs) => LocalizedString} */ () => {
35
- return /** @type {LocalizedString} */ (`App-Informationen`);
36
- };
37
-
38
- const ru_app_info =
39
- /** @type {(inputs: App_InfoInputs) => LocalizedString} */ () => {
40
- return /** @type {LocalizedString} */ (`Информация о приложении`);
41
- };
42
-
43
- const hi_app_info =
44
- /** @type {(inputs: App_InfoInputs) => LocalizedString} */ () => {
45
- return /** @type {LocalizedString} */ (`ऐप जानकारी`);
46
- };
47
-
48
- const ar_app_info =
49
- /** @type {(inputs: App_InfoInputs) => LocalizedString} */ () => {
50
- return /** @type {LocalizedString} */ (`معلومات التطبيق`);
51
- };
52
-
53
- const zh_app_info =
54
- /** @type {(inputs: App_InfoInputs) => LocalizedString} */ () => {
55
- return /** @type {LocalizedString} */ (`应用信息`);
56
- };
57
-
58
- const ja_app_info =
59
- /** @type {(inputs: App_InfoInputs) => LocalizedString} */ () => {
60
- return /** @type {LocalizedString} */ (`アプリ情報`);
61
- };
62
-
63
- const ko_app_info =
64
- /** @type {(inputs: App_InfoInputs) => LocalizedString} */ () => {
65
- return /** @type {LocalizedString} */ (`앱 정보`);
66
- };
67
-
68
- const vi_app_info =
69
- /** @type {(inputs: App_InfoInputs) => LocalizedString} */ () => {
70
- return /** @type {LocalizedString} */ (`Thông tin ứng dụng`);
71
- };
72
-
73
- /**
74
- * | output |
75
- * | --- |
76
- * | "App Info" |
77
- *
78
- * @param {App_InfoInputs} inputs
79
- * @param {{ locale?: "es" | "fr" | "it" | "pt" | "en" | "de" | "ru" | "hi" | "ar" | "zh" | "ja" | "ko" | "vi" }} options
80
- * @returns {LocalizedString}
81
- */
82
- export const app_info =
83
- /** @type {((inputs?: App_InfoInputs, options?: { locale?: "es" | "fr" | "it" | "pt" | "en" | "de" | "ru" | "hi" | "ar" | "zh" | "ja" | "ko" | "vi" }) => LocalizedString) & import('../runtime.js').MessageMetadata<App_InfoInputs, { locale?: "es" | "fr" | "it" | "pt" | "en" | "de" | "ru" | "hi" | "ar" | "zh" | "ja" | "ko" | "vi" }, {}>} */ ((
84
- inputs = {},
85
- options = {},
86
- ) => {
87
- const locale = experimentalStaticLocale ?? options.locale ?? getLocale();
88
- if (locale === "es") return es_app_info(inputs);
89
- if (locale === "fr") return fr_app_info(inputs);
90
- if (locale === "it") return it_app_info(inputs);
91
- if (locale === "pt") return pt_app_info(inputs);
92
- if (locale === "en") return en_app_info(inputs);
93
- if (locale === "de") return de_app_info(inputs);
94
- if (locale === "ru") return ru_app_info(inputs);
95
- if (locale === "hi") return hi_app_info(inputs);
96
- if (locale === "ar") return ar_app_info(inputs);
97
- if (locale === "zh") return zh_app_info(inputs);
98
- if (locale === "ja") return ja_app_info(inputs);
99
- if (locale === "ko") return ko_app_info(inputs);
100
- return vi_app_info(inputs);
101
- });