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.
- package/dist/RuneProvider.svelte.d.ts +12 -20
- package/dist/i18n/message-resolver.test.d.ts +1 -0
- package/dist/i18n/messages.d.ts +2 -0
- package/dist/i18n/messages.js +7 -0
- package/dist/i18n/paraglide/README.md +29 -12
- package/dist/i18n/paraglide/messages/_index.js +0 -18
- package/dist/i18n/paraglide/runtime.js +98 -12
- package/dist/i18n/paraglide/server.js +57 -18
- package/dist/kernel/src/persistence/drivers.test.d.ts +1 -0
- package/dist/kernel/src/persistence/provider.test.d.ts +1 -0
- package/dist/kernel/src/registry/registry.test.d.ts +1 -0
- package/dist/mod.js +1 -1
- package/dist/runes/layout/src/AppSettingSelector.svelte +5 -10
- package/dist/runes/layout/src/AppSettingSelector.svelte.d.ts +35 -21
- package/dist/runes/layout/src/ConnectedNavigationPanel.svelte +4 -2
- package/dist/runes/layout/src/ConnectedNavigationPanel.svelte.d.ts +13 -19
- package/dist/runes/layout/src/ConnectedWorkspaceStrip.svelte +4 -2
- package/dist/runes/layout/src/ConnectedWorkspaceStrip.svelte.d.ts +12 -19
- package/dist/runes/layout/src/ContentArea.svelte.d.ts +7 -19
- package/dist/runes/layout/src/DetailPanel.svelte.d.ts +6 -19
- package/dist/runes/layout/src/Icon.svelte +5 -1
- package/dist/runes/layout/src/Icon.svelte.d.ts +6 -16
- package/dist/runes/layout/src/LanguageSelector.svelte +2 -2
- package/dist/runes/layout/src/LanguageSelector.svelte.d.ts +11 -19
- package/dist/runes/layout/src/NavigationPanel.svelte +11 -9
- package/dist/runes/layout/src/NavigationPanel.svelte.d.ts +16 -19
- package/dist/runes/layout/src/ResourceSelector.svelte +22 -21
- package/dist/runes/layout/src/ResourceSelector.svelte.d.ts +52 -18
- package/dist/runes/layout/src/ThemeSelector.svelte +2 -2
- package/dist/runes/layout/src/ThemeSelector.svelte.d.ts +11 -19
- package/dist/runes/layout/src/WorkspaceLayout.svelte.d.ts +7 -20
- package/dist/runes/layout/src/WorkspaceStrip.svelte +8 -6
- package/dist/runes/layout/src/WorkspaceStrip.svelte.d.ts +10 -19
- package/dist/runes/layout/src/language.svelte.js +1 -1
- package/dist/runes/layout/src/theme.svelte.js +1 -1
- package/dist/runes/palettes/src/commands/CommandPalette.svelte +5 -1
- package/dist/runes/palettes/src/commands/CommandPalette.svelte.d.ts +5 -19
- package/dist/runes/palettes/src/notifications/NotificationBell.svelte.d.ts +7 -20
- package/dist/runes/palettes/src/notifications/Toaster.svelte.d.ts +30 -15
- package/dist/runes/palettes/src/notifications/bridge.d.ts +1 -1
- package/dist/runes/palettes/src/notifications/bridge.js +1 -1
- package/dist/runes/palettes/src/shortcuts/ShortcutPalette.svelte.d.ts +10 -25
- package/dist/runes/plugins/money/src/CurrencySelector.svelte +2 -2
- package/dist/runes/plugins/money/src/CurrencySelector.svelte.d.ts +11 -19
- package/dist/runes/plugins/money/src/MoneyDisplay.svelte.d.ts +36 -19
- package/dist/runes/plugins/money/src/MoneyInput.svelte.d.ts +7 -20
- package/dist/runes/plugins/money/src/currency.svelte.js +6 -2
- package/dist/runes/plugins/money/src/currency.test.d.ts +1 -0
- package/dist/runes/plugins/money/src/exchange-rate.test.d.ts +1 -0
- package/dist/runes/plugins/money/src/money-primitive.test.d.ts +1 -0
- package/dist/runes/plugins/money/src/money.test.d.ts +1 -0
- package/dist/runes/plugins/money/src/strategies.test.d.ts +1 -0
- package/package.json +7 -12
- package/LICENSE +0 -21
- package/README.md +0 -314
- package/dist/i18n/paraglide/messages/active_toasts.js +0 -101
- package/dist/i18n/paraglide/messages/api_status.js +0 -101
- package/dist/i18n/paraglide/messages/app_info.js +0 -101
- package/dist/i18n/paraglide/messages/appearance.js +0 -101
- package/dist/i18n/paraglide/messages/commands_label.js +0 -101
- package/dist/i18n/paraglide/messages/current_currency.js +0 -101
- package/dist/i18n/paraglide/messages/current_language.js +0 -101
- package/dist/i18n/paraglide/messages/current_theme.js +0 -101
- package/dist/i18n/paraglide/messages/currently_in_queue.js +0 -101
- package/dist/i18n/paraglide/messages/extended_controls.js +0 -101
- package/dist/i18n/paraglide/messages/live_store_dashboard.js +0 -101
- package/dist/i18n/paraglide/messages/localization.js +0 -101
- package/dist/i18n/paraglide/messages/name_label.js +0 -101
- package/dist/i18n/paraglide/messages/real_time_monitor_desc.js +0 -101
- package/dist/i18n/paraglide/messages/registered_in_registry.js +0 -101
- package/dist/i18n/paraglide/messages/state_label.js +0 -101
- package/dist/i18n/paraglide/messages/url_label.js +0 -101
- 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
|
-
[](https://jsr.io/@yrrrrrf/rune-lab)
|
|
9
|
-
[](https://www.npmjs.com/package/rune-lab)
|
|
10
|
-
[](https://github.com/Yrrrrrf/rune-lab)
|
|
11
|
-
[](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
|
-
});
|