@@ -77,7 +77,7 @@ const result = ResolvedSettingValueSchema.parse(data);
7777| :--- | :--- | :--- | :--- |
7878| ** namespace** | ` string ` | ✅ | Namespace (snake_case, globally unique) |
7979| ** version** | ` integer ` | optional | Manifest schema version |
80- | ** label** | ` string ` | ✅ | Display label |
80+ | ** label** | ` string \| Record<string, string> ` | ✅ | Display label |
8181| ** icon** | ` string ` | optional | Icon (Lucide) |
8282| ** description** | ` string ` | optional | Short description |
8383| ** helpText** | ` string ` | optional | Markdown help text shown above specifiers |
@@ -86,7 +86,7 @@ const result = ResolvedSettingValueSchema.parse(data);
8686| ** writePermission** | ` string ` | optional | Permission required to write |
8787| ** category** | ` string ` | optional | Settings hub category |
8888| ** order** | ` number ` | optional | Display order |
89- | ** specifiers** | ` { type: Enum<'group' \| 'child_pane' \| 'info_banner' \| 'title_value' \| 'text' \| 'textarea' \| … +13 more>; id?: string; key?: string; label: string; … }[] ` | ✅ | Page contents (ordered) |
89+ | ** specifiers** | ` { type: Enum<'group' \| 'child_pane' \| 'info_banner' \| 'title_value' \| 'text' \| 'textarea' \| … +13 more>; id?: string; key?: string; label: string \| Record<string, string> ; … }[] ` | ✅ | Page contents (ordered) |
9090| ** visible** | ` string \| { dialect: Enum<'cel' \| 'cron' \| 'template'>; source?: string; ast?: any; meta?: object } ` | optional | Whole-manifest visibility |
9191| ** featureFlag** | ` string ` | optional | Gate manifest visibility on a feature flag |
9292| ** beta** | ` boolean ` | optional | Show a Beta chip on the page |
@@ -100,7 +100,7 @@ const result = ResolvedSettingValueSchema.parse(data);
100100
101101| Property | Type | Required | Description |
102102| :--- | :--- | :--- | :--- |
103- | ** manifest** | ` { namespace: string; version?: integer; label: string; icon?: string; … } ` | ✅ | |
103+ | ** manifest** | ` { namespace: string; version?: integer; label: string \| Record<string, string> ; icon?: string; … } ` | ✅ | |
104104| ** values** | ` Record<string, { value: any; source: Enum<'env' \| 'global' \| 'tenant' \| 'user' \| 'default'>; locked: boolean; lockedReason?: string; … }> ` | ✅ | Effective values keyed by specifier.key |
105105
106106
@@ -115,7 +115,7 @@ const result = ResolvedSettingValueSchema.parse(data);
115115| ** type** | ` Enum<'group' \| 'child_pane' \| 'info_banner' \| 'title_value' \| 'text' \| 'textarea' \| 'password' \| 'email' \| 'url' \| 'phone' \| 'number' \| 'toggle' \| 'select' \| 'radio' \| … +5 more> ` | ✅ | Specifier variant |
116116| ** id** | ` string ` | optional | Stable identifier (snake_case) |
117117| ** key** | ` string ` | optional | Storage key (snake_case) |
118- | ** label** | ` string ` | ✅ | Display label |
118+ | ** label** | ` string \| Record<string, string> ` | ✅ | Display label |
119119| ** description** | ` string ` | optional | Help text |
120120| ** icon** | ` string ` | optional | Icon name (Lucide) |
121121| ** default** | ` any ` | optional | Default value |
@@ -129,7 +129,7 @@ const result = ResolvedSettingValueSchema.parse(data);
129129| ** writePermission** | ` string ` | optional | Permission required to write this specifier |
130130| ** deprecated** | ` boolean ` | optional | Mark deprecated |
131131| ** replacedBy** | ` string ` | optional | Replacement key (used when deprecated=true) |
132- | ** options** | ` { value: string \| number \| boolean; label: string; description?: string; icon?: string }[] ` | optional | Options for select/radio/multiselect |
132+ | ** options** | ` { value: string \| number \| boolean; label: string \| Record<string, string> ; description?: string; icon?: string }[] ` | optional | Options for select/radio/multiselect |
133133| ** valueDomain** | ` Enum<'iana_time_zone' \| 'iso_4217_currency' \| 'iso_3166_alpha2'> ` | optional | Standard value domain enforced on write (options degrade to a UI suggestion list) |
134134| ** min** | ` number ` | optional | |
135135| ** max** | ` number ` | optional | |
@@ -138,7 +138,7 @@ const result = ResolvedSettingValueSchema.parse(data);
138138| ** maxLength** | ` integer ` | optional | |
139139| ** pattern** | ` string ` | optional | Regex pattern (text only) |
140140| ** rows** | ` integer ` | optional | |
141- | ** handler** | ` { kind: 'http'; method?: Enum<'GET' \| 'POST' \| 'PUT' \| 'DELETE' \| 'PATCH'>; url: string; body?: Record<string, any>; … } \| { kind: 'action'; name: string; params?: Record<string, any>; confirmText?: string } \| { kind: 'navigate'; url: string; target?: Enum<'_self' \| '_blank'> } ` | optional | Action handler (action_button) |
141+ | ** handler** | ` { kind: 'http'; method?: Enum<'GET' \| 'POST' \| 'PUT' \| 'DELETE' \| 'PATCH'>; url: string; body?: Record<string, any>; … } \| { kind: 'action'; name: string; params?: Record<string, any>; confirmText?: string \| Record<string, string> } \| { kind: 'navigate'; url: string; target?: Enum<'_self' \| '_blank'> } ` | optional | Action handler (action_button) |
142142| ** childNamespace** | ` string ` | optional | Sub-namespace (child_pane) |
143143| ** bannerText** | ` string ` | optional | Markdown body (info_banner) |
144144| ** bannerSeverity** | ` Enum<'info' \| 'success' \| 'warning' \| 'error'> ` | optional | |
@@ -184,7 +184,7 @@ This schema accepts one of the following structures:
184184| ** method** | ` Enum<'GET' \| 'POST' \| 'PUT' \| 'DELETE' \| 'PATCH'> ` | ✅ | |
185185| ** url** | ` string ` | ✅ | Endpoint URL; supports $` {...} ` interpolation |
186186| ** body** | ` Record<string, any> ` | optional | Optional JSON body; supports $` {...} ` interpolation |
187- | ** confirmText** | ` string ` | optional | Confirm dialog text before invoking (omit = no confirm) |
187+ | ** confirmText** | ` string \| Record<string, string> ` | optional | Confirm dialog text before invoking (omit = no confirm) |
188188
189189---
190190
@@ -197,7 +197,7 @@ This schema accepts one of the following structures:
197197| ** kind** | ` 'action' ` | ✅ | |
198198| ** name** | ` string ` | ✅ | Registered action machine name |
199199| ** params** | ` Record<string, any> ` | optional | |
200- | ** confirmText** | ` string ` | optional | Display label (plain string; i18n keys are auto-generated by the framework) |
200+ | ** confirmText** | ` string \| Record<string, string> ` | optional | Display label — the default-language string, or an inline locale map ( ` { en, "zh-CN" } ` ) resolved at render time |
201201
202202---
203203
@@ -223,7 +223,7 @@ This schema accepts one of the following structures:
223223| Property | Type | Required | Description |
224224| :--- | :--- | :--- | :--- |
225225| ** value** | ` string \| number \| boolean ` | ✅ | Stored value |
226- | ** label** | ` string ` | ✅ | Display label |
226+ | ** label** | ` string \| Record<string, string> ` | ✅ | Display label |
227227| ** description** | ` string ` | optional | Optional helper text |
228228| ** icon** | ` string ` | optional | Optional Lucide icon name |
229229
0 commit comments