@stina/extension-api 0.32.0 → 0.33.0-alpha.8cab91c

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.
@@ -210,6 +210,9 @@ export const ButtonPropsSchema = z
210
210
  .object({
211
211
  component: z.literal('Button'),
212
212
  text: z.string().describe('Button text'),
213
+ type: z.enum(['normal', 'primary', 'danger', 'accent']).optional().describe('Visual style'),
214
+ title: z.string().optional().describe('Tooltip shown on hover'),
215
+ disabled: z.boolean().optional().describe('Disable the button'),
213
216
  onClickAction: ExtensionActionRefSchema.describe('Action to call on click'),
214
217
  style: ExtensionComponentStyleSchema.optional(),
215
218
  })
@@ -222,18 +225,58 @@ export const TextInputPropsSchema = z
222
225
  label: z.string().describe('Input label'),
223
226
  placeholder: z.string().optional().describe('Placeholder text'),
224
227
  value: z.string().optional().describe('Current value'),
225
- onChangeAction: ExtensionActionRefSchema.describe('Action to call on change'),
228
+ onChangeAction: ExtensionActionRefSchema.optional().describe('Action to call on change'),
226
229
  style: ExtensionComponentStyleSchema.optional(),
227
230
  })
228
231
  .passthrough()
229
232
  .describe('TextInput component')
230
233
 
234
+ export const PasswordInputPropsSchema = z
235
+ .object({
236
+ component: z.literal('PasswordInput'),
237
+ label: z.string().describe('Input label'),
238
+ placeholder: z.string().optional().describe('Placeholder text'),
239
+ value: z.string().optional().describe('Current value'),
240
+ onChangeAction: ExtensionActionRefSchema.optional().describe('Action to call on change'),
241
+ style: ExtensionComponentStyleSchema.optional(),
242
+ })
243
+ .passthrough()
244
+ .describe('Password input component (text is masked)')
245
+
246
+ export const NumberInputPropsSchema = z
247
+ .object({
248
+ component: z.literal('NumberInput'),
249
+ label: z.string().describe('Input label'),
250
+ placeholder: z.string().optional().describe('Placeholder text'),
251
+ value: z.union([z.string(), z.number()]).optional().describe('Current value'),
252
+ min: z.number().optional().describe('Minimum value'),
253
+ max: z.number().optional().describe('Maximum value'),
254
+ step: z.number().optional().describe('Step'),
255
+ onChangeAction: ExtensionActionRefSchema.optional().describe('Action to call on change'),
256
+ style: ExtensionComponentStyleSchema.optional(),
257
+ })
258
+ .passthrough()
259
+ .describe('Numeric input component')
260
+
261
+ export const TextAreaPropsSchema = z
262
+ .object({
263
+ component: z.literal('TextArea'),
264
+ label: z.string().describe('Input label'),
265
+ placeholder: z.string().optional().describe('Placeholder text'),
266
+ value: z.string().optional().describe('Current value'),
267
+ rows: z.number().int().positive().optional().describe('Number of visible text rows'),
268
+ onChangeAction: ExtensionActionRefSchema.optional().describe('Action to call on change'),
269
+ style: ExtensionComponentStyleSchema.optional(),
270
+ })
271
+ .passthrough()
272
+ .describe('TextArea component for multi-line text input')
273
+
231
274
  export const DateTimeInputPropsSchema = z
232
275
  .object({
233
276
  component: z.literal('DateTimeInput'),
234
277
  label: z.string().describe('Input label'),
235
278
  value: z.string().optional().describe('Current value'),
236
- onChangeAction: ExtensionActionRefSchema.describe('Action to call on change'),
279
+ onChangeAction: ExtensionActionRefSchema.optional().describe('Action to call on change'),
237
280
  style: ExtensionComponentStyleSchema.optional(),
238
281
  })
239
282
  .passthrough()
@@ -245,7 +288,7 @@ export const SelectPropsSchema = z
245
288
  label: z.string().describe('Select label'),
246
289
  options: z.array(z.object({ label: z.string(), value: z.string() })).describe('Available options'),
247
290
  selectedValue: z.string().optional().describe('Currently selected value'),
248
- onChangeAction: ExtensionActionRefSchema.describe('Action to call on change'),
291
+ onChangeAction: ExtensionActionRefSchema.optional().describe('Action to call on change'),
249
292
  style: ExtensionComponentStyleSchema.optional(),
250
293
  })
251
294
  .passthrough()
@@ -256,7 +299,7 @@ export const IconPickerPropsSchema = z
256
299
  component: z.literal('IconPicker'),
257
300
  label: z.string().optional().describe('Picker label'),
258
301
  value: z.string().optional().describe('Currently selected icon name'),
259
- onChangeAction: ExtensionActionRefSchema.describe('Action to call on change'),
302
+ onChangeAction: ExtensionActionRefSchema.optional().describe('Action to call on change'),
260
303
  style: ExtensionComponentStyleSchema.optional(),
261
304
  })
262
305
  .passthrough()
@@ -358,7 +401,7 @@ export const TogglePropsSchema = z
358
401
  description: z.string().optional().describe('Description text'),
359
402
  checked: z.boolean().optional().describe('Whether the toggle is checked'),
360
403
  disabled: z.boolean().optional().describe('Whether the toggle is disabled'),
361
- onChangeAction: ExtensionActionRefSchema.describe('Action to call on change'),
404
+ onChangeAction: ExtensionActionRefSchema.optional().describe('Action to call on change'),
362
405
  style: ExtensionComponentStyleSchema.optional(),
363
406
  })
364
407
  .passthrough()
@@ -399,7 +442,7 @@ export const CheckboxPropsSchema = z
399
442
  checked: z.boolean().optional().describe('Whether the checkbox is checked'),
400
443
  disabled: z.boolean().optional().describe('Whether the checkbox is disabled'),
401
444
  strikethrough: z.boolean().optional().describe('Strike through label when checked'),
402
- onChangeAction: ExtensionActionRefSchema.describe('Action to call on change'),
445
+ onChangeAction: ExtensionActionRefSchema.optional().describe('Action to call on change'),
403
446
  style: ExtensionComponentStyleSchema.optional(),
404
447
  })
405
448
  .passthrough()
@@ -495,6 +538,9 @@ export type LabelProps = z.infer<typeof LabelPropsSchema>
495
538
  export type ParagraphProps = z.infer<typeof ParagraphPropsSchema>
496
539
  export type ButtonProps = z.infer<typeof ButtonPropsSchema>
497
540
  export type TextInputProps = z.infer<typeof TextInputPropsSchema>
541
+ export type PasswordInputProps = z.infer<typeof PasswordInputPropsSchema>
542
+ export type NumberInputProps = z.infer<typeof NumberInputPropsSchema>
543
+ export type TextAreaProps = z.infer<typeof TextAreaPropsSchema>
498
544
  export type DateTimeInputProps = z.infer<typeof DateTimeInputPropsSchema>
499
545
  export type SelectProps = z.infer<typeof SelectPropsSchema>
500
546
  export type IconPickerProps = z.infer<typeof IconPickerPropsSchema>
@@ -18,121 +18,6 @@ export const LocalizedStringSchema = z
18
18
  .union([z.string(), z.record(z.string())])
19
19
  .describe('String or localized string map')
20
20
 
21
- // =============================================================================
22
- // Settings
23
- // =============================================================================
24
-
25
- /**
26
- * Options mapping for select field options from tool response
27
- */
28
- export const SettingOptionsMappingSchema = z
29
- .object({
30
- itemsKey: z.string().describe('Key for items array in tool result data'),
31
- valueKey: z.string().describe('Key for option value'),
32
- labelKey: z.string().describe('Key for option label'),
33
- descriptionKey: z.string().optional().describe('Optional key for description'),
34
- })
35
- .describe('Mapping for select field options')
36
-
37
- /**
38
- * Create mapping for create tool response
39
- */
40
- export const SettingCreateMappingSchema = z
41
- .object({
42
- resultKey: z.string().optional().describe('Key for result data object'),
43
- valueKey: z.string().describe('Key for option value (defaults to "id")'),
44
- })
45
- .describe('Mapping for create tool response')
46
-
47
- /**
48
- * Validation rules for settings
49
- */
50
- export const SettingValidationSchema = z
51
- .object({
52
- required: z.boolean().optional().describe('Whether the field is required'),
53
- min: z.number().optional().describe('Minimum value (number) or length (string)'),
54
- max: z.number().optional().describe('Maximum value (number) or length (string)'),
55
- pattern: z.string().optional().describe('Regex pattern for validation'),
56
- })
57
- .describe('Validation rules')
58
-
59
- /**
60
- * Setting definition type interface for recursive typing
61
- */
62
- export interface SettingDefinitionType {
63
- id: string
64
- title: string
65
- description?: string
66
- type: 'string' | 'number' | 'boolean' | 'select'
67
- default?: unknown
68
- options?: { value: string; label: string }[]
69
- optionsToolId?: string
70
- optionsParams?: Record<string, unknown>
71
- optionsMapping?: z.infer<typeof SettingOptionsMappingSchema>
72
- createToolId?: string
73
- createLabel?: string
74
- createFields?: SettingDefinitionType[]
75
- createParams?: Record<string, unknown>
76
- createMapping?: z.infer<typeof SettingCreateMappingSchema>
77
- validation?: z.infer<typeof SettingValidationSchema>
78
- }
79
-
80
- export const SettingDefinitionSchema: z.ZodType<SettingDefinitionType> = z.lazy(() =>
81
- z
82
- .object({
83
- id: z.string().describe('Setting ID (namespaced automatically)'),
84
- title: z.string().describe('Display title'),
85
- description: z.string().optional().describe('Help text'),
86
- type: z.enum(['string', 'number', 'boolean', 'select']).describe('Setting type'),
87
- default: z.unknown().optional().describe('Default value'),
88
- options: z
89
- .array(z.object({ value: z.string(), label: z.string() }))
90
- .optional()
91
- .describe('For select type: available options'),
92
- optionsToolId: z.string().optional().describe('For select type: load options from tool'),
93
- optionsParams: z.record(z.unknown()).optional().describe('Params for options tool'),
94
- optionsMapping: SettingOptionsMappingSchema.optional().describe('Mapping for options tool response'),
95
- createToolId: z.string().optional().describe('Tool ID for creating a new option'),
96
- createLabel: z.string().optional().describe('Label for create action'),
97
- createFields: z.array(SettingDefinitionSchema).optional().describe('Fields for create form'),
98
- createParams: z.record(z.unknown()).optional().describe('Static params for create tool'),
99
- createMapping: SettingCreateMappingSchema.optional().describe('Mapping for create tool response'),
100
- validation: SettingValidationSchema.optional().describe('Validation rules'),
101
- })
102
- .superRefine((data, ctx) => {
103
- // Validate that create* fields are only used with type: 'select'
104
- const hasCreateFields =
105
- data.createToolId !== undefined ||
106
- data.createLabel !== undefined ||
107
- data.createFields !== undefined ||
108
- data.createParams !== undefined ||
109
- data.createMapping !== undefined
110
-
111
- if (hasCreateFields && data.type !== 'select') {
112
- ctx.addIssue({
113
- code: z.ZodIssueCode.custom,
114
- message: 'create* fields (createToolId, createLabel, createFields, createParams, createMapping) are only valid for type "select"',
115
- path: ['type'],
116
- })
117
- }
118
-
119
- // Validate that select type has options or optionsToolId
120
- if (data.type === 'select') {
121
- const hasOptions = data.options && data.options.length > 0
122
- const hasOptionsToolId = data.optionsToolId !== undefined
123
-
124
- if (!hasOptions && !hasOptionsToolId) {
125
- ctx.addIssue({
126
- code: z.ZodIssueCode.custom,
127
- message: 'Setting of type "select" must have "options" or "optionsToolId"',
128
- path: ['type'],
129
- })
130
- }
131
- }
132
- })
133
- .describe('Setting definition')
134
- )
135
-
136
21
  // =============================================================================
137
22
  // Tool Settings Views
138
23
  // =============================================================================
@@ -162,6 +47,23 @@ export const ToolSettingsActionDataSourceSchema = z
162
47
  })
163
48
  .describe('Action-based data source')
164
49
 
50
+ /**
51
+ * Grouping configuration for a list view
52
+ */
53
+ export const ToolSettingsListGroupBySchema = z
54
+ .object({
55
+ key: z.string().describe('Key in each item used to determine group membership'),
56
+ order: z
57
+ .array(z.string())
58
+ .optional()
59
+ .describe('Explicit ordering of group values; unlisted groups appear afterwards alphabetically'),
60
+ labels: z
61
+ .record(z.string())
62
+ .optional()
63
+ .describe('Human-friendly labels per group value (rendered as section headers)'),
64
+ })
65
+ .describe('List view grouping configuration')
66
+
165
67
  /**
166
68
  * List view backed by tools
167
69
  */
@@ -177,6 +79,15 @@ export const ToolSettingsListViewSchema = z
177
79
  limitParam: z.string().optional().describe('Param name for limit'),
178
80
  idParam: z.string().optional().describe('Param name for get/delete ID'),
179
81
  listParams: z.record(z.unknown()).optional().describe('Static params for list tool'),
82
+ editView: z
83
+ .object({
84
+ content: ExtensionComponentDataSchema.describe('Root component for the create/edit modal'),
85
+ })
86
+ .optional()
87
+ .describe('Component-tree create/edit form bound to $item.<key>'),
88
+ groupBy: ToolSettingsListGroupBySchema.optional().describe(
89
+ 'Optional grouping configuration; when set, items are visually grouped by this field',
90
+ ),
180
91
  })
181
92
  .describe('List view backed by tools')
182
93
 
@@ -207,7 +118,6 @@ export const ToolSettingsViewDefinitionSchema = z
207
118
  title: z.string().describe('Display title'),
208
119
  description: z.string().optional().describe('Help text'),
209
120
  view: ToolSettingsViewSchema.describe('View configuration'),
210
- fields: z.array(SettingDefinitionSchema).optional().describe('Fields for create/edit forms'),
211
121
  })
212
122
  .describe('Tool settings view definition')
213
123
 
@@ -271,60 +181,13 @@ export const PanelDefinitionSchema = z
271
181
  // =============================================================================
272
182
 
273
183
  /**
274
- * Provider config property type
275
- */
276
- export const ProviderConfigPropertyTypeSchema = z
277
- .enum(['string', 'number', 'boolean', 'select', 'password', 'url'])
278
- .describe('Property type')
279
-
280
- /**
281
- * Provider config select option
184
+ * Component-tree-based provider config view.
282
185
  */
283
- export const ProviderConfigSelectOptionSchema = z
186
+ export const ProviderConfigViewSchema = z
284
187
  .object({
285
- value: z.string().describe('Value stored in settings'),
286
- label: z.string().describe('Display label'),
287
- })
288
- .describe('Select option')
289
-
290
- /**
291
- * Provider config validation
292
- */
293
- export const ProviderConfigValidationSchema = z
294
- .object({
295
- pattern: z.string().optional().describe('Regex pattern the value must match'),
296
- minLength: z.number().optional().describe('Minimum string length'),
297
- maxLength: z.number().optional().describe('Maximum string length'),
298
- min: z.number().optional().describe('Minimum number value'),
299
- max: z.number().optional().describe('Maximum number value'),
300
- })
301
- .describe('Validation rules')
302
-
303
- /**
304
- * Provider config property
305
- */
306
- export const ProviderConfigPropertySchema = z
307
- .object({
308
- type: ProviderConfigPropertyTypeSchema.describe('Property type'),
309
- title: z.string().describe('Display label'),
310
- description: z.string().optional().describe('Help text'),
311
- default: z.unknown().optional().describe('Default value'),
312
- required: z.boolean().optional().describe('Whether the field is required'),
313
- placeholder: z.string().optional().describe('Placeholder text'),
314
- options: z.array(ProviderConfigSelectOptionSchema).optional().describe('For select type'),
315
- validation: ProviderConfigValidationSchema.optional().describe('Validation rules'),
316
- })
317
- .describe('Provider config property')
318
-
319
- /**
320
- * Provider config schema
321
- */
322
- export const ProviderConfigSchemaSchema = z
323
- .object({
324
- properties: z.record(ProviderConfigPropertySchema).describe('Property definitions'),
325
- order: z.array(z.string()).optional().describe('Display order of properties'),
188
+ content: ExtensionComponentDataSchema.describe('Root component to render'),
326
189
  })
327
- .describe('Provider configuration schema')
190
+ .describe('Provider configuration view (component tree)')
328
191
 
329
192
  /**
330
193
  * Provider definition
@@ -336,7 +199,7 @@ export const ProviderDefinitionSchema = z
336
199
  description: z.string().optional().describe('Description'),
337
200
  suggestedDefaultModel: z.string().optional().describe('Suggested default model'),
338
201
  defaultSettings: z.record(z.unknown()).optional().describe('Default settings'),
339
- configSchema: ProviderConfigSchemaSchema.optional().describe('Configuration UI schema'),
202
+ configView: ProviderConfigViewSchema.optional().describe('Component-tree configuration view'),
340
203
  })
341
204
  .describe('Provider definition')
342
205
 
@@ -429,7 +292,6 @@ export const StorageContributionsSchema = z
429
292
  */
430
293
  export const ExtensionContributionsSchema = z
431
294
  .object({
432
- settings: z.array(SettingDefinitionSchema).optional().describe('User-configurable settings'),
433
295
  toolSettings: z.array(ToolSettingsViewDefinitionSchema).optional().describe('Tool settings views'),
434
296
  panels: z.array(PanelDefinitionSchema).optional().describe('Right panel contributions'),
435
297
  providers: z.array(ProviderDefinitionSchema).optional().describe('AI providers'),
@@ -445,13 +307,10 @@ export const ExtensionContributionsSchema = z
445
307
  // =============================================================================
446
308
 
447
309
  export type LocalizedString = z.infer<typeof LocalizedStringSchema>
448
- export type SettingOptionsMapping = z.infer<typeof SettingOptionsMappingSchema>
449
- export type SettingCreateMapping = z.infer<typeof SettingCreateMappingSchema>
450
- export type SettingValidation = z.infer<typeof SettingValidationSchema>
451
- export type SettingDefinition = z.infer<typeof SettingDefinitionSchema>
452
310
  export type ToolSettingsListMapping = z.infer<typeof ToolSettingsListMappingSchema>
453
311
  export type ToolSettingsActionDataSource = z.infer<typeof ToolSettingsActionDataSourceSchema>
454
312
  export type ToolSettingsListView = z.infer<typeof ToolSettingsListViewSchema>
313
+ export type ToolSettingsListGroupBy = z.infer<typeof ToolSettingsListGroupBySchema>
455
314
  export type ToolSettingsComponentView = z.infer<typeof ToolSettingsComponentViewSchema>
456
315
  export type ToolSettingsView = z.infer<typeof ToolSettingsViewSchema>
457
316
  export type ToolSettingsViewDefinition = z.infer<typeof ToolSettingsViewDefinitionSchema>
@@ -460,11 +319,7 @@ export type PanelComponentView = z.infer<typeof PanelComponentViewSchema>
460
319
  export type PanelUnknownView = z.infer<typeof PanelUnknownViewSchema>
461
320
  export type PanelView = z.infer<typeof PanelViewSchema>
462
321
  export type PanelDefinition = z.infer<typeof PanelDefinitionSchema>
463
- export type ProviderConfigPropertyType = z.infer<typeof ProviderConfigPropertyTypeSchema>
464
- export type ProviderConfigSelectOption = z.infer<typeof ProviderConfigSelectOptionSchema>
465
- export type ProviderConfigValidation = z.infer<typeof ProviderConfigValidationSchema>
466
- export type ProviderConfigProperty = z.infer<typeof ProviderConfigPropertySchema>
467
- export type ProviderConfigSchema = z.infer<typeof ProviderConfigSchemaSchema>
322
+ export type ProviderConfigView = z.infer<typeof ProviderConfigViewSchema>
468
323
  export type ProviderDefinition = z.infer<typeof ProviderDefinitionSchema>
469
324
  export type ToolDefinition = z.infer<typeof ToolDefinitionSchema>
470
325
  export type CommandDefinition = z.infer<typeof CommandDefinitionSchema>
@@ -39,13 +39,10 @@ export {
39
39
  export {
40
40
  ExtensionContributionsSchema,
41
41
  LocalizedStringSchema,
42
- SettingDefinitionSchema,
43
- SettingOptionsMappingSchema,
44
- SettingCreateMappingSchema,
45
- SettingValidationSchema,
46
42
  ToolSettingsViewDefinitionSchema,
47
43
  ToolSettingsViewSchema,
48
44
  ToolSettingsListViewSchema,
45
+ ToolSettingsListGroupBySchema,
49
46
  ToolSettingsComponentViewSchema,
50
47
  ToolSettingsListMappingSchema,
51
48
  ToolSettingsActionDataSourceSchema,
@@ -55,24 +52,17 @@ export {
55
52
  PanelUnknownViewSchema,
56
53
  PanelActionDataSourceSchema,
57
54
  ProviderDefinitionSchema,
58
- ProviderConfigSchemaSchema,
59
- ProviderConfigPropertySchema,
60
- ProviderConfigPropertyTypeSchema,
61
- ProviderConfigSelectOptionSchema,
62
- ProviderConfigValidationSchema,
55
+ ProviderConfigViewSchema,
63
56
  ToolDefinitionSchema,
64
57
  CommandDefinitionSchema,
65
58
  PromptContributionSchema,
66
59
  PromptSectionSchema,
67
60
  type ExtensionContributions,
68
61
  type LocalizedString,
69
- type SettingDefinition,
70
- type SettingOptionsMapping,
71
- type SettingCreateMapping,
72
- type SettingValidation,
73
62
  type ToolSettingsViewDefinition,
74
63
  type ToolSettingsView,
75
64
  type ToolSettingsListView,
65
+ type ToolSettingsListGroupBy,
76
66
  type ToolSettingsComponentView,
77
67
  type ToolSettingsListMapping,
78
68
  type ToolSettingsActionDataSource,
@@ -82,11 +72,7 @@ export {
82
72
  type PanelUnknownView,
83
73
  type PanelActionDataSource,
84
74
  type ProviderDefinition,
85
- type ProviderConfigSchema,
86
- type ProviderConfigProperty,
87
- type ProviderConfigPropertyType,
88
- type ProviderConfigSelectOption,
89
- type ProviderConfigValidation,
75
+ type ProviderConfigView,
90
76
  type ToolDefinition,
91
77
  type CommandDefinition,
92
78
  type PromptContribution,
@@ -261,6 +261,11 @@ export interface ParagraphProps extends ExtensionComponentData {
261
261
  export interface ButtonProps extends ExtensionComponentData {
262
262
  component: 'Button'
263
263
  text: string
264
+ /** Visual style. Defaults to "normal". */
265
+ type?: 'normal' | 'primary' | 'danger' | 'accent'
266
+ /** Optional tooltip shown on hover. */
267
+ title?: string
268
+ disabled?: boolean
264
269
  onClickAction: ExtensionActionRef
265
270
  }
266
271
 
@@ -270,7 +275,42 @@ export interface TextInputProps extends ExtensionComponentData {
270
275
  label: string
271
276
  placeholder?: string
272
277
  value?: string
273
- onChangeAction: ExtensionActionRef
278
+ onChangeAction?: ExtensionActionRef
279
+ }
280
+
281
+ /** The extension API properties for the PasswordInput component. */
282
+ export interface PasswordInputProps extends ExtensionComponentData {
283
+ component: 'PasswordInput'
284
+ label: string
285
+ placeholder?: string
286
+ value?: string
287
+ onChangeAction?: ExtensionActionRef
288
+ }
289
+
290
+ /** The extension API properties for the NumberInput component. */
291
+ export interface NumberInputProps extends ExtensionComponentData {
292
+ component: 'NumberInput'
293
+ label: string
294
+ placeholder?: string
295
+ value?: string | number
296
+ /** Optional minimum value. */
297
+ min?: number
298
+ /** Optional maximum value. */
299
+ max?: number
300
+ /** Optional step. */
301
+ step?: number
302
+ onChangeAction?: ExtensionActionRef
303
+ }
304
+
305
+ /** The extension API properties for the TextArea component. */
306
+ export interface TextAreaProps extends ExtensionComponentData {
307
+ component: 'TextArea'
308
+ label: string
309
+ placeholder?: string
310
+ value?: string
311
+ /** Number of visible text rows. Defaults to 4. */
312
+ rows?: number
313
+ onChangeAction?: ExtensionActionRef
274
314
  }
275
315
 
276
316
  /** The extension API properties for the DateTimeInput component. */
@@ -278,7 +318,7 @@ export interface DateTimeInputProps extends ExtensionComponentData {
278
318
  component: 'DateTimeInput'
279
319
  label: string
280
320
  value?: string
281
- onChangeAction: ExtensionActionRef
321
+ onChangeAction?: ExtensionActionRef
282
322
  }
283
323
 
284
324
  /** The extension API properties for the Select component. */
@@ -287,7 +327,7 @@ export interface SelectProps extends ExtensionComponentData {
287
327
  label: string
288
328
  options: Array<{ label: string; value: string }>
289
329
  selectedValue?: string
290
- onChangeAction: ExtensionActionRef
330
+ onChangeAction?: ExtensionActionRef
291
331
  }
292
332
 
293
333
  /** The extension API properties for the IconPicker component. */
@@ -295,7 +335,7 @@ export interface IconPickerProps extends ExtensionComponentData {
295
335
  component: 'IconPicker'
296
336
  label?: string
297
337
  value?: string
298
- onChangeAction: ExtensionActionRef
338
+ onChangeAction?: ExtensionActionRef
299
339
  }
300
340
 
301
341
  /** The extension API properties for the VerticalStack component. */
@@ -371,7 +411,7 @@ export interface ToggleProps extends ExtensionComponentData {
371
411
  description?: string
372
412
  checked?: boolean
373
413
  disabled?: boolean
374
- onChangeAction: ExtensionActionRef
414
+ onChangeAction?: ExtensionActionRef
375
415
  }
376
416
 
377
417
  /** The extension API properties for the Collapsible component. */
@@ -415,7 +455,7 @@ export interface CheckboxProps extends ExtensionComponentData {
415
455
  /** Whether to strike through the label when checked. Defaults to true. */
416
456
  strikethrough?: boolean
417
457
  /** Action to call when the checkbox state changes. */
418
- onChangeAction: ExtensionActionRef
458
+ onChangeAction?: ExtensionActionRef
419
459
  }
420
460
 
421
461
  /** The extension API properties for the Markdown component. */