dsh-cool-theme 0.4.0 → 0.6.0

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.
@@ -1,14 +1,54 @@
1
1
  /**
2
- * Theme settings UI: scheme selector + preset picker.
2
+ * Theme settings UI: scheme selector, preset picker, and the custom colour editor.
3
3
  */
4
4
  import * as React from 'react';
5
5
  import { type PresetId } from './presets.js';
6
6
  import { type ThemeKey } from './locales.js';
7
+ import { type CustomTheme, type SavedTheme } from './custom.js';
8
+ /** Reserved menu value that switches to the user-defined theme. */
9
+ export declare const CUSTOM_SELECTION = "custom";
10
+ export type Selection = PresetId | typeof CUSTOM_SELECTION;
11
+ export type CustomState = {
12
+ base: PresetId;
13
+ theme: CustomTheme;
14
+ };
7
15
  export declare function ThemePanel(props: {
8
16
  theme: any;
9
- getPreset: () => PresetId;
10
- setPreset: (id: PresetId) => void;
17
+ getSelection: () => Selection;
18
+ setSelection: (s: Selection) => void;
19
+ getCustom: () => CustomState;
20
+ setCustom: (theme: CustomTheme) => void;
21
+ /** Pick the preset future custom themes seed from, without applying it. */
22
+ setCustomBase: (base: PresetId) => void;
23
+ resetCustom: () => CustomTheme;
24
+ saved: {
25
+ /** Cached roster; empty until `refresh` resolves. */
26
+ list: () => SavedTheme[];
27
+ activeId: () => string | null;
28
+ load: (id: string) => CustomTheme | null;
29
+ /** Point the "in use" badge at an entry, or clear it entirely. */
30
+ setActive: (id: string | null) => void;
31
+ /** Re-read the roster from the Host, migrating the legacy browser list once. */
32
+ refresh: () => Promise<SavedTheme[]>;
33
+ /** Persist the current draft as a new named entry and make it active. */
34
+ create: (name: string) => Promise<SavedTheme[]>;
35
+ /** Write the current draft (and name) back to an existing entry. */
36
+ update: (id: string, name: string) => Promise<SavedTheme[]>;
37
+ remove: (id: string) => Promise<SavedTheme[]>;
38
+ };
39
+ /**
40
+ * The shell's own Toast, or null when the host does not share its primitives
41
+ * module with plugins. Read at render time: the async resolution lands long
42
+ * before the first action a banner can report.
43
+ */
44
+ getHostToast: () => ((props: any) => any) | null;
11
45
  t: (key: ThemeKey) => string;
46
+ /**
47
+ * The shell's own close seat, or null on a host that does not offer it. The
48
+ * settings modal is shell-owned, so this is both the only way to leave after
49
+ * a confirmed discard and the gate on whether guarding a close is worthwhile.
50
+ */
51
+ onRequestClose: (() => void) | null;
12
52
  }): React.DetailedReactHTMLElement<{
13
53
  style: {
14
54
  display: "flex";
@@ -1 +1 @@
1
- {"version":3,"file":"components.d.ts","sourceRoot":"","sources":["../../../src/client/components.tsx"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,KAAK,QAAQ,EAAiB,MAAM,cAAc,CAAA;AAC3D,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,cAAc,CAAA;AA6G5C,wBAAgB,UAAU,CAAC,KAAK,EAAE;IAChC,KAAK,EAAE,GAAG,CAAA;IACV,SAAS,EAAE,MAAM,QAAQ,CAAA;IACzB,SAAS,EAAE,CAAC,EAAE,EAAE,QAAQ,KAAK,IAAI,CAAA;IACjC,CAAC,EAAE,CAAC,GAAG,EAAE,QAAQ,KAAK,MAAM,CAAA;CAC7B;;;;;;;gBAyDA"}
1
+ {"version":3,"file":"components.d.ts","sourceRoot":"","sources":["../../../src/client/components.tsx"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,EAAE,KAAK,QAAQ,EAAiB,MAAM,cAAc,CAAA;AAC3D,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,cAAc,CAAA;AAE5C,OAAO,EACL,KAAK,WAAW,EAGhB,KAAK,UAAU,EAIhB,MAAM,aAAa,CAAA;AAEpB,mEAAmE;AACnE,eAAO,MAAM,gBAAgB,WAAmB,CAAA;AAChD,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,OAAO,gBAAgB,CAAA;AAE1D,MAAM,MAAM,WAAW,GAAG;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,WAAW,CAAA;CAAE,CAAA;AAwiBhE,wBAAgB,UAAU,CAAC,KAAK,EAAE;IAChC,KAAK,EAAE,GAAG,CAAA;IACV,YAAY,EAAE,MAAM,SAAS,CAAA;IAC7B,YAAY,EAAE,CAAC,CAAC,EAAE,SAAS,KAAK,IAAI,CAAA;IACpC,SAAS,EAAE,MAAM,WAAW,CAAA;IAC5B,SAAS,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAA;IACvC,2EAA2E;IAC3E,aAAa,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAA;IACvC,WAAW,EAAE,MAAM,WAAW,CAAA;IAC9B,KAAK,EAAE;QACL,qDAAqD;QACrD,IAAI,EAAE,MAAM,UAAU,EAAE,CAAA;QACxB,QAAQ,EAAE,MAAM,MAAM,GAAG,IAAI,CAAA;QAC7B,IAAI,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,WAAW,GAAG,IAAI,CAAA;QACxC,kEAAkE;QAClE,SAAS,EAAE,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAA;QACtC,gFAAgF;QAChF,OAAO,EAAE,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC,CAAA;QACpC,yEAAyE;QACzE,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,UAAU,EAAE,CAAC,CAAA;QAC/C,oEAAoE;QACpE,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,UAAU,EAAE,CAAC,CAAA;QAC3D,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,UAAU,EAAE,CAAC,CAAA;KAC9C,CAAA;IACD;;;;OAIG;IACH,YAAY,EAAE,MAAM,CAAC,CAAC,KAAK,EAAE,GAAG,KAAK,GAAG,CAAC,GAAG,IAAI,CAAA;IAChD,CAAC,EAAE,CAAC,GAAG,EAAE,QAAQ,KAAK,MAAM,CAAA;IAC5B;;;;OAIG;IACH,cAAc,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,CAAA;CACpC;;;;;;;gBA83BA"}
@@ -0,0 +1,124 @@
1
+ /**
2
+ * Custom theme: a `PresetDef` generated at runtime from a small set of seeds.
3
+ *
4
+ * The colour maths is deliberately IDENTICAL to the shipped presets — the same
5
+ * `buildScale` / `buildSemanticScales` helpers with the same steps and weights,
6
+ * and the same `t = step / 1000` interpolation. A custom theme is therefore not
7
+ * a special case: it produces a complete 73-primitive + 9-shiki map that flows
8
+ * through `resolvePreset` -> `primitiveOverrides` unchanged. The one structural
9
+ * difference is the neutral ramp, which is built per appearance (see below).
10
+ *
11
+ * Seed groups (6):
12
+ * neutral merged `--dsw-static-neutral-bluish-*` + `--dsw-static-neutral-*`,
13
+ * one ramp PER appearance
14
+ * accent merged `--dsw-static-deepseek-*` + `--dsw-static-blue-*`
15
+ * green / amber / red
16
+ * shiki 9 syntax tokens
17
+ */
18
+ import type { PresetDef } from './presets.js';
19
+ import type { ThemeAsset } from '../contract.js';
20
+ export type { PresetDef };
21
+ export type Mode = 'light' | 'dark';
22
+ /** One seed colour per appearance. */
23
+ export type SeedPair = {
24
+ light: string;
25
+ dark: string;
26
+ };
27
+ /** The nine `--shiki-token-*` slots, in stylesheet order. */
28
+ export declare const SHIKI_KEYS: readonly ["constant", "string", "comment", "keyword", "parameter", "function", "string-expression", "punctuation", "link"];
29
+ export type ShikiKey = (typeof SHIKI_KEYS)[number];
30
+ /** The two endpoints of ONE appearance's neutral ramp: step 00 and step 1000. */
31
+ export type NeutralRamp = {
32
+ lightest: string;
33
+ darkest: string;
34
+ };
35
+ /** Everything a user can edit. 2*2 + 4*2 + 9*2 = 30 colours. */
36
+ export type CustomTheme = {
37
+ /**
38
+ * One neutral ramp PER appearance. DSH's alias layer picks a different step
39
+ * per appearance — light reads step 00 for surfaces and step 1000 for text,
40
+ * dark reads step 950 for surfaces and step 50 for text — so a ramp shared by
41
+ * both appearances ties light text to dark surfaces and cannot be tuned. Each
42
+ * ramp still runs lightest -> darkest; only the endpoints are per-appearance.
43
+ *
44
+ * Presets keep the single shared ramp they were authored with; only the
45
+ * runtime-generated custom theme splits it.
46
+ */
47
+ neutral: Record<Mode, NeutralRamp>;
48
+ /** `--dsw-static-deepseek-*` and `--dsw-static-blue-*` share this base. */
49
+ accent: SeedPair;
50
+ green: SeedPair;
51
+ amber: SeedPair;
52
+ red: SeedPair;
53
+ shiki: Record<ShikiKey, SeedPair>;
54
+ };
55
+ /**
56
+ * Parse a colour into `#RRGGBB`, or null when it is not a format we understand.
57
+ *
58
+ * Accepted: `#RGB`, `#RGBA`, `#RRGGBB`, `#RRGGBBAA`, `rgb()`/`rgba()` with
59
+ * numbers or percentages, and `hsl()`/`hsla()`. Alpha is parsed but dropped —
60
+ * every token these seeds drive is an opaque theme colour.
61
+ *
62
+ * `primitives.ts` stores `rgb(r, g, b)` while presets store hex, so both shapes
63
+ * have to work; the extra forms are there for what users may type.
64
+ */
65
+ export declare function tryToHex(input: unknown): string | null;
66
+ /** `tryToHex` with a black fallback, for call sites that need a guaranteed value. */
67
+ export declare function toHex(input: unknown): string;
68
+ /**
69
+ * Recover the seed inputs from an already-generated preset.
70
+ *
71
+ * Exact by construction: `buildScale` writes the `start`/`end` arguments to
72
+ * steps 00/1000, and `buildTintShadeScale` writes the base to step 500. This is
73
+ * what lets a user start from any preset without re-declaring its palette.
74
+ */
75
+ export declare function extractSeeds(base: PresetDef): CustomTheme;
76
+ /**
77
+ * Bump when the `CustomTheme` shape changes so old blobs can be migrated.
78
+ * v2 split the neutral ramp per appearance; v1 blobs stay readable.
79
+ */
80
+ export declare const CUSTOM_SCHEMA_VERSION = 2;
81
+ /** Self-contained stored form: records the preset the seeds were derived from. */
82
+ export type CustomEnvelope = {
83
+ v: number;
84
+ base: string;
85
+ theme: unknown;
86
+ };
87
+ export declare function encodeCustom(base: string, theme: CustomTheme): string;
88
+ /** Parse a stored blob. Returns null for absent/corrupt/foreign-version data. */
89
+ export declare function parseEnvelope(raw: string | null): CustomEnvelope | null;
90
+ /** Repair a partially-invalid object against `fallback`, keeping every valid colour. */
91
+ export declare function normalizeCustom(raw: unknown, fallback: CustomTheme): CustomTheme;
92
+ /**
93
+ * Turn seeds into a full `PresetDef` using the presets' own helpers.
94
+ *
95
+ * Unlike the presets (which ship one ramp for both appearances), the ramp is
96
+ * built once per appearance, so the light text and the dark text are no longer
97
+ * the two ends of the same colour axis.
98
+ */
99
+ export declare function buildCustomPreset(v: CustomTheme): PresetDef;
100
+ /** A named custom theme the user saved. */
101
+ export type SavedTheme = {
102
+ id: string;
103
+ name: string;
104
+ /** Preset the seeds derive from; used for the "reset" fallback. */
105
+ base: string;
106
+ theme: CustomTheme;
107
+ /**
108
+ * Media stored beside the seeds. Empty until themes carry a background, but
109
+ * always carried through a rewrite so a later edit cannot drop one.
110
+ */
111
+ assets: ThemeAsset[];
112
+ };
113
+ /** Collision-resistant enough for a local list, and stable across reloads. */
114
+ export declare function newThemeId(): string;
115
+ export declare function encodeList(list: SavedTheme[]): string;
116
+ /**
117
+ * Parse the saved list. Entries with a corrupt theme are repaired against
118
+ * `fallbackFor(base)` rather than dropped, so one bad record cannot lose the
119
+ * rest of the list; only structurally unusable entries are skipped.
120
+ */
121
+ export declare function decodeList(raw: string | null, fallbackFor: (base: string) => CustomTheme): SavedTheme[];
122
+ /** `${base} 1`, `${base} 2`, … skipping names already taken. */
123
+ export declare function nextThemeName(base: string, taken: string[]): string;
124
+ //# sourceMappingURL=custom.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"custom.d.ts","sourceRoot":"","sources":["../../../src/client/custom.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAIH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAGhD,YAAY,EAAE,SAAS,EAAE,CAAA;AAEzB,MAAM,MAAM,IAAI,GAAG,OAAO,GAAG,MAAM,CAAA;AAEnC,sCAAsC;AACtC,MAAM,MAAM,QAAQ,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAA;AAEtD,6DAA6D;AAC7D,eAAO,MAAM,UAAU,4HAUb,CAAA;AACV,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,CAAC,CAAA;AAElD,iFAAiF;AACjF,MAAM,MAAM,WAAW,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAA;AAE/D,gEAAgE;AAChE,MAAM,MAAM,WAAW,GAAG;IACxB;;;;;;;;;OASG;IACH,OAAO,EAAE,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,CAAA;IAClC,2EAA2E;IAC3E,MAAM,EAAE,QAAQ,CAAA;IAChB,KAAK,EAAE,QAAQ,CAAA;IACf,KAAK,EAAE,QAAQ,CAAA;IACf,GAAG,EAAE,QAAQ,CAAA;IACb,KAAK,EAAE,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;CAClC,CAAA;AAmED;;;;;;;;;GASG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAmCtD;AAED,qFAAqF;AACrF,wBAAgB,KAAK,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAE5C;AAMD;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,SAAS,GAAG,WAAW,CAkCzD;AAED;;;GAGG;AACH,eAAO,MAAM,qBAAqB,IAAI,CAAA;AAKtC,kFAAkF;AAClF,MAAM,MAAM,cAAc,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,CAAA;AAExE,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,GAAG,MAAM,CAErE;AAED,iFAAiF;AACjF,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,cAAc,GAAG,IAAI,CAUvE;AAiBD,wFAAwF;AACxF,wBAAgB,eAAe,CAAC,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,GAAG,WAAW,CA+BhF;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,WAAW,GAAG,SAAS,CA8B3D;AAMD,2CAA2C;AAC3C,MAAM,MAAM,UAAU,GAAG;IACvB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,mEAAmE;IACnE,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,WAAW,CAAA;IAClB;;;OAGG;IACH,MAAM,EAAE,UAAU,EAAE,CAAA;CACrB,CAAA;AAED,8EAA8E;AAC9E,wBAAgB,UAAU,IAAI,MAAM,CAEnC;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,MAAM,CAErD;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CACxB,GAAG,EAAE,MAAM,GAAG,IAAI,EAClB,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,WAAW,GACzC,UAAU,EAAE,CAuBd;AAED,gEAAgE;AAChE,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAMnE"}
@@ -10,9 +10,71 @@ export declare const zh: {
10
10
  'appearance.desc': string;
11
11
  'presets.title': string;
12
12
  'presets.desc': string;
13
+ 'presets.disabled': string;
13
14
  'scheme.light': string;
14
15
  'scheme.dark': string;
15
16
  'scheme.system': string;
17
+ 'custom.title': string;
18
+ 'custom.toggle.desc': string;
19
+ 'custom.group.seeds': string;
20
+ 'custom.group.shiki': string;
21
+ 'custom.mode.label': string;
22
+ 'custom.neutral.title': string;
23
+ 'custom.neutral.desc': string;
24
+ 'custom.neutral.lightest': string;
25
+ 'custom.neutral.darkest': string;
26
+ 'custom.neutral.roleBackground': string;
27
+ 'custom.neutral.roleForeground': string;
28
+ 'custom.accent.title': string;
29
+ 'custom.accent.desc': string;
30
+ 'custom.green.title': string;
31
+ 'custom.green.desc': string;
32
+ 'custom.amber.title': string;
33
+ 'custom.amber.desc': string;
34
+ 'custom.red.title': string;
35
+ 'custom.red.desc': string;
36
+ 'custom.shiki.desc': string;
37
+ 'custom.seed.light': string;
38
+ 'custom.seed.dark': string;
39
+ 'custom.save': string;
40
+ 'custom.add': string;
41
+ 'custom.edit': string;
42
+ 'custom.export': string;
43
+ 'custom.import': string;
44
+ 'custom.name.placeholder': string;
45
+ 'custom.defaultName': string;
46
+ 'custom.inUse': string;
47
+ 'custom.delete': string;
48
+ 'custom.cancel': string;
49
+ 'custom.toast.saved': string;
50
+ 'custom.toast.failed': string;
51
+ 'custom.toast.unavailable': string;
52
+ 'custom.toast.exported': string;
53
+ 'custom.toast.imported': string;
54
+ 'custom.importFailed.notArchive': string;
55
+ 'custom.importFailed.noDocument': string;
56
+ 'custom.importFailed.badDocument': string;
57
+ 'custom.importFailed.tooNew': string;
58
+ 'custom.importFailed.media': string;
59
+ 'custom.importFailed.tooLarge': string;
60
+ 'custom.importFailed.other': string;
61
+ 'custom.delete.title': string;
62
+ 'custom.delete.desc': string;
63
+ 'custom.unsaved.title': string;
64
+ 'custom.unsaved.desc': string;
65
+ 'custom.unsaved.confirm': string;
66
+ 'custom.unsaved.leaveDesc': string;
67
+ 'custom.unsaved.leaveConfirm': string;
68
+ 'custom.unsaved.cancel': string;
69
+ 'shiki.constant': string;
70
+ 'shiki.string': string;
71
+ 'shiki.comment': string;
72
+ 'shiki.keyword': string;
73
+ 'shiki.parameter': string;
74
+ 'shiki.function': string;
75
+ 'shiki.string-expression': string;
76
+ 'shiki.punctuation': string;
77
+ 'shiki.link': string;
16
78
  };
17
79
  /** The theme settings namespace key union. */
18
80
  export type ThemeKey = keyof typeof zh;
@@ -23,8 +85,70 @@ export declare const en: {
23
85
  'appearance.desc': string;
24
86
  'presets.title': string;
25
87
  'presets.desc': string;
88
+ 'presets.disabled': string;
26
89
  'scheme.light': string;
27
90
  'scheme.dark': string;
28
91
  'scheme.system': string;
92
+ 'custom.title': string;
93
+ 'custom.toggle.desc': string;
94
+ 'custom.group.seeds': string;
95
+ 'custom.group.shiki': string;
96
+ 'custom.mode.label': string;
97
+ 'custom.neutral.title': string;
98
+ 'custom.neutral.desc': string;
99
+ 'custom.neutral.lightest': string;
100
+ 'custom.neutral.darkest': string;
101
+ 'custom.neutral.roleBackground': string;
102
+ 'custom.neutral.roleForeground': string;
103
+ 'custom.accent.title': string;
104
+ 'custom.accent.desc': string;
105
+ 'custom.green.title': string;
106
+ 'custom.green.desc': string;
107
+ 'custom.amber.title': string;
108
+ 'custom.amber.desc': string;
109
+ 'custom.red.title': string;
110
+ 'custom.red.desc': string;
111
+ 'custom.shiki.desc': string;
112
+ 'custom.seed.light': string;
113
+ 'custom.seed.dark': string;
114
+ 'custom.save': string;
115
+ 'custom.add': string;
116
+ 'custom.edit': string;
117
+ 'custom.export': string;
118
+ 'custom.import': string;
119
+ 'custom.name.placeholder': string;
120
+ 'custom.defaultName': string;
121
+ 'custom.inUse': string;
122
+ 'custom.delete': string;
123
+ 'custom.cancel': string;
124
+ 'custom.toast.saved': string;
125
+ 'custom.toast.failed': string;
126
+ 'custom.toast.unavailable': string;
127
+ 'custom.toast.exported': string;
128
+ 'custom.toast.imported': string;
129
+ 'custom.importFailed.notArchive': string;
130
+ 'custom.importFailed.noDocument': string;
131
+ 'custom.importFailed.badDocument': string;
132
+ 'custom.importFailed.tooNew': string;
133
+ 'custom.importFailed.media': string;
134
+ 'custom.importFailed.tooLarge': string;
135
+ 'custom.importFailed.other': string;
136
+ 'custom.delete.title': string;
137
+ 'custom.delete.desc': string;
138
+ 'custom.unsaved.title': string;
139
+ 'custom.unsaved.desc': string;
140
+ 'custom.unsaved.confirm': string;
141
+ 'custom.unsaved.leaveDesc': string;
142
+ 'custom.unsaved.leaveConfirm': string;
143
+ 'custom.unsaved.cancel': string;
144
+ 'shiki.constant': string;
145
+ 'shiki.string': string;
146
+ 'shiki.comment': string;
147
+ 'shiki.keyword': string;
148
+ 'shiki.parameter': string;
149
+ 'shiki.function': string;
150
+ 'shiki.string-expression': string;
151
+ 'shiki.punctuation': string;
152
+ 'shiki.link': string;
29
153
  };
30
154
  //# sourceMappingURL=locales.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"locales.d.ts","sourceRoot":"","sources":["../../../src/client/locales.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,mEAAmE;AACnE,eAAO,MAAM,EAAE;;;;;;;;;CASmB,CAAA;AAElC,8CAA8C;AAC9C,MAAM,MAAM,QAAQ,GAAG,MAAM,OAAO,EAAE,CAAA;AAEtC,mEAAmE;AACnE,eAAO,MAAM,EAAE;;;;;;;;;CASqB,CAAA"}
1
+ {"version":3,"file":"locales.d.ts","sourceRoot":"","sources":["../../../src/client/locales.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,mEAAmE;AACnE,eAAO,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyEmB,CAAA;AAElC,8CAA8C;AAC9C,MAAM,MAAM,QAAQ,GAAG,MAAM,OAAO,EAAE,CAAA;AAEtC,mEAAmE;AACnE,eAAO,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyEqB,CAAA"}