@rippling/rippling-sdk 0.2.0-alpha.49 → 0.2.0-alpha.50

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 (57) hide show
  1. package/lib/manifest/custom-object-page-layout.d.mts +148 -34
  2. package/lib/manifest/custom-object-page-layout.d.mts.map +1 -1
  3. package/lib/manifest/custom-object-page-layout.d.ts +148 -34
  4. package/lib/manifest/custom-object-page-layout.d.ts.map +1 -1
  5. package/lib/manifest/custom-object-page-layout.js +61 -18
  6. package/lib/manifest/custom-object-page-layout.js.map +1 -1
  7. package/lib/manifest/custom-object-page-layout.mjs +61 -18
  8. package/lib/manifest/custom-object-page-layout.mjs.map +1 -1
  9. package/lib/manifest/custom-object.d.mts +1 -1
  10. package/lib/manifest/custom-object.d.ts +1 -1
  11. package/lib/manifest/custom-object.js +1 -1
  12. package/lib/manifest/custom-object.mjs +1 -1
  13. package/lib/manifest/field.d.mts +3 -3
  14. package/lib/manifest/field.d.ts +3 -3
  15. package/lib/manifest/field.js +2 -2
  16. package/lib/manifest/field.mjs +2 -2
  17. package/lib/manifest/index.d.mts +1 -1
  18. package/lib/manifest/index.d.mts.map +1 -1
  19. package/lib/manifest/index.d.ts +1 -1
  20. package/lib/manifest/index.d.ts.map +1 -1
  21. package/lib/manifest/index.js.map +1 -1
  22. package/lib/manifest/index.mjs.map +1 -1
  23. package/lib/sdui/components.d.mts +100 -211
  24. package/lib/sdui/components.d.mts.map +1 -1
  25. package/lib/sdui/components.d.ts +100 -211
  26. package/lib/sdui/components.d.ts.map +1 -1
  27. package/lib/sdui/components.js +96 -182
  28. package/lib/sdui/components.js.map +1 -1
  29. package/lib/sdui/components.mjs +93 -178
  30. package/lib/sdui/components.mjs.map +1 -1
  31. package/lib/sdui/index.d.mts +12 -52
  32. package/lib/sdui/index.d.mts.map +1 -1
  33. package/lib/sdui/index.d.ts +12 -52
  34. package/lib/sdui/index.d.ts.map +1 -1
  35. package/lib/sdui/index.js +10 -50
  36. package/lib/sdui/index.js.map +1 -1
  37. package/lib/sdui/index.mjs +5 -25
  38. package/lib/sdui/index.mjs.map +1 -1
  39. package/lib/sdui/propTypes.d.mts +3156 -3515
  40. package/lib/sdui/propTypes.d.mts.map +1 -1
  41. package/lib/sdui/propTypes.d.ts +3156 -3515
  42. package/lib/sdui/propTypes.d.ts.map +1 -1
  43. package/lib/sdui/propTypes.js +1 -1
  44. package/lib/sdui/propTypes.mjs +1 -1
  45. package/package.json +1 -1
  46. package/src/lib/manifest/custom-object-page-layout.ts +294 -79
  47. package/src/lib/manifest/custom-object.ts +1 -1
  48. package/src/lib/manifest/field.ts +3 -3
  49. package/src/lib/manifest/index.ts +27 -0
  50. package/src/lib/sdui/components.ts +181 -332
  51. package/src/lib/sdui/index.ts +13 -93
  52. package/src/lib/sdui/propTypes.ts +3509 -3892
  53. package/src/version.ts +1 -1
  54. package/version.d.mts +1 -1
  55. package/version.d.ts +1 -1
  56. package/version.js +1 -1
  57. package/version.mjs +1 -1
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * AUTO-GENERATED from catalog-schema.json
3
- * Components: 154
3
+ * Components: 134
4
4
  *
5
5
  * Do not edit manually. Run: node tools/sdui/builder/build.js
6
6
  */
@@ -41,6 +41,7 @@ import type {
41
41
  CountDownCatalogProps,
42
42
  CountryCatalogProps,
43
43
  CurrencyCatalogProps,
44
+ CustomObjectGridCatalogProps,
44
45
  DateCatalogProps,
45
46
  DateInlineMultiCatalogProps,
46
47
  DateRangeCatalogProps,
@@ -81,6 +82,7 @@ import type {
81
82
  ModalFooterCatalogProps,
82
83
  NestedListCatalogProps,
83
84
  NumberCatalogProps,
85
+ ObjectListViewCatalogProps,
84
86
  ObjectUICatalogProps,
85
87
  ObjectUIContentCatalogProps,
86
88
  ObjectUIHeaderCatalogProps,
@@ -102,6 +104,7 @@ import type {
102
104
  ReportLoaderCatalogProps,
103
105
  ReportShareLoaderCatalogProps,
104
106
  ReportViewerLoaderCatalogProps,
107
+ ResizableBoardCatalogProps,
105
108
  ResponsiveCatalogProps,
106
109
  SegmentedControlCatalogProps,
107
110
  SelectCatalogProps,
@@ -141,29 +144,6 @@ import type {
141
144
  VStackCatalogProps,
142
145
  VideoCatalogProps,
143
146
  WorkEmailCatalogProps,
144
- AnalyticsCardCatalogProps,
145
- ResizableBoardCatalogProps,
146
- EChartCatalogProps,
147
- RichTextCatalogProps,
148
- DashboardRichTextCatalogProps,
149
- CustomObjectGridCatalogProps,
150
- ObjectListViewCatalogProps,
151
- BarChartCatalogProps,
152
- LineChartCatalogProps,
153
- HorizontalBarChartCatalogProps,
154
- CombinationChartCatalogProps,
155
- PieChartCatalogProps,
156
- ScatterChartCatalogProps,
157
- FunnelChartCatalogProps,
158
- GaugeChartCatalogProps,
159
- SunburstChartCatalogProps,
160
- WithSpinnerCatalogProps,
161
- RadarChartCatalogProps,
162
- RadarFilledChartCatalogProps,
163
- HeatmapCalendarChartCatalogProps,
164
- HeatmapChartCatalogProps,
165
- TreemapChartCatalogProps,
166
- SqlHighlightCatalogProps,
167
147
  } from './propTypes';
168
148
 
169
149
  export interface SpecNode {
@@ -251,17 +231,17 @@ export type AiIconProps = Bindable<AiIconCatalogProps> & ComponentDirectives;
251
231
  export const AiIcon = createComponent<AiIconProps>('AiIcon');
252
232
 
253
233
  export type AlertProps = Bindable<AlertCatalogProps> & {
234
+ onDismiss?: ActionBinding | ActionBinding[];
254
235
  onPressPrimary?: ActionBinding | ActionBinding[];
255
236
  onPressSecondary?: ActionBinding | ActionBinding[];
256
- onDismiss?: ActionBinding | ActionBinding[];
257
237
  } & ComponentDirectives;
258
238
  /**
259
239
  * A persistent, high-priority notice that conveys critical information (errors, warnings, success confirmations, or informational messages) and guides users to proceed or resolve issues. Appears with page content and remains visible until dismissed or resolved. Use for system-level or page-level messaging, not for ephemeral feedback (use SnackBar instead) or for interruptions requiring immediate input (use Modal instead).
260
240
  */
261
241
  export const Alert = createComponent<AlertProps>('Alert', {
242
+ onDismiss: 'dismiss',
262
243
  onPressPrimary: 'pressPrimary',
263
244
  onPressSecondary: 'pressSecondary',
264
- onDismiss: 'dismiss',
265
245
  });
266
246
 
267
247
  export type AnimationProps = Bindable<AnimationCatalogProps> & ComponentDirectives;
@@ -283,33 +263,33 @@ export type AppGroupLoaderProps = Bindable<AppGroupLoaderCatalogProps> & Compone
283
263
  export const AppGroupLoader = createComponent<AppGroupLoaderProps>('AppGroupLoader');
284
264
 
285
265
  export type AppGroupSelectProps = Bindable<AppGroupSelectCatalogProps> & {
286
- onChange?: ActionBinding | ActionBinding[];
287
266
  onBlur?: ActionBinding | ActionBinding[];
267
+ onChange?: ActionBinding | ActionBinding[];
288
268
  onFocus?: ActionBinding | ActionBinding[];
289
- onPaste?: ActionBinding | ActionBinding[];
290
269
  onMenuToggle?: ActionBinding | ActionBinding[];
270
+ onPaste?: ActionBinding | ActionBinding[];
291
271
  } & ComponentDirectives;
292
272
  /**
293
273
  * A multi-select dropdown for choosing multiple options from grouped categories, with app-group styling. Use when users need to pick several items organized into labeled groups (e.g. apps by category). For single selection or ungrouped options, use Select instead.
294
274
  */
295
275
  export const AppGroupSelect = createComponent<AppGroupSelectProps>('AppGroupSelect', {
296
- onChange: 'change',
297
276
  onBlur: 'blur',
277
+ onChange: 'change',
298
278
  onFocus: 'focus',
299
- onPaste: 'paste',
300
279
  onMenuToggle: 'menuToggle',
280
+ onPaste: 'paste',
301
281
  });
302
282
 
303
283
  export type AppNavBarProps = Bindable<AppNavBarCatalogProps> & {
304
- onNavigate?: ActionBinding | ActionBinding[];
305
284
  onAction?: ActionBinding | ActionBinding[];
285
+ onNavigate?: ActionBinding | ActionBinding[];
306
286
  } & ComponentDirectives & { children?: SpecNode | SpecNode[] };
307
287
  /**
308
288
  * Application navigation bar with routing support. Displays a horizontal tab bar or vertical sidebar with links, icons, badges, and optional nested sub-navigation. Use for top-level page navigation.
309
289
  */
310
290
  export const AppNavBar = createComponent<AppNavBarProps>('AppNavBar', {
311
- onNavigate: 'navigate',
312
291
  onAction: 'action',
292
+ onNavigate: 'navigate',
313
293
  });
314
294
 
315
295
  export type AtomsSeparatorProps = Bindable<AtomsSeparatorCatalogProps> & ComponentDirectives;
@@ -357,19 +337,19 @@ export const Breadcrumb = createComponent<BreadcrumbProps>('Breadcrumb', {
357
337
  });
358
338
 
359
339
  export type ButtonProps = Bindable<ButtonCatalogProps> & {
360
- onPress?: ActionBinding | ActionBinding[];
361
- onPressWhileDisabled?: ActionBinding | ActionBinding[];
362
340
  onMouseEnter?: ActionBinding | ActionBinding[];
363
341
  onMouseLeave?: ActionBinding | ActionBinding[];
342
+ onPress?: ActionBinding | ActionBinding[];
343
+ onPressWhileDisabled?: ActionBinding | ActionBinding[];
364
344
  } & ComponentDirectives;
365
345
  /**
366
346
  * An interactive element that allows users to trigger actions or events with a single click. Use for actions, not navigation — use links for navigation. Use IconButton when space is limited and the action is not critical.
367
347
  */
368
348
  export const Button = createComponent<ButtonProps>('Button', {
369
- onPress: 'press',
370
- onPressWhileDisabled: 'pressWhileDisabled',
371
349
  onMouseEnter: 'mouseEnter',
372
350
  onMouseLeave: 'mouseLeave',
351
+ onPress: 'press',
352
+ onPressWhileDisabled: 'pressWhileDisabled',
373
353
  });
374
354
 
375
355
  export type ButtonGroupProps = Bindable<ButtonGroupCatalogProps> &
@@ -380,21 +360,21 @@ export type ButtonGroupProps = Bindable<ButtonGroupCatalogProps> &
380
360
  export const ButtonGroup = createComponent<ButtonGroupProps>('ButtonGroup');
381
361
 
382
362
  export type CardProps = Bindable<CardCatalogProps> & {
383
- onEdit?: ActionBinding | ActionBinding[];
384
- onDelete?: ActionBinding | ActionBinding[];
363
+ onAction?: ActionBinding | ActionBinding[];
385
364
  onAdd?: ActionBinding | ActionBinding[];
386
365
  onClick?: ActionBinding | ActionBinding[];
387
- onAction?: ActionBinding | ActionBinding[];
366
+ onDelete?: ActionBinding | ActionBinding[];
367
+ onEdit?: ActionBinding | ActionBinding[];
388
368
  } & ComponentDirectives & { children?: SpecNode | SpecNode[] };
389
369
  /**
390
370
  * Visually groups related information and components into a contained, interactive card. Use for summarizing content, facilitating comparisons, or guiding users toward specific actions. Renders as a simple layout container when used with children only (no title/content).
391
371
  */
392
372
  export const Card = createComponent<CardProps>('Card', {
393
- onEdit: 'edit',
394
- onDelete: 'delete',
373
+ onAction: 'action',
395
374
  onAdd: 'add',
396
375
  onClick: 'click',
397
- onAction: 'action',
376
+ onDelete: 'delete',
377
+ onEdit: 'edit',
398
378
  });
399
379
 
400
380
  export type CardGroupProps = Bindable<CardGroupCatalogProps> &
@@ -414,15 +394,11 @@ export const Carousel = createComponent<CarouselProps>('Carousel', {
414
394
  onDone: 'done',
415
395
  });
416
396
 
417
- export type ChartLoaderProps = Bindable<ChartLoaderCatalogProps> & {
418
- onLoad?: ActionBinding | ActionBinding[];
419
- } & ComponentDirectives & { children?: SpecNode | SpecNode[] };
397
+ export type ChartLoaderProps = Bindable<ChartLoaderCatalogProps> & ComponentDirectives;
420
398
  /**
421
- * Chart-specific replacement for `WithSpinner`. While `isLoading` is true and `error` is empty, renders a chart-shaped stencil (the same `ChartVisualizationStencil` bar-chart animation the Analytics Report uses) instead of a generic Pebble spinner. When `error` is non-null/non-false, renders a status-aware `ChartError` fallback that picks an animation + copy variant from the HTTP status (403 forbidden, 404 not found, 400 bad request, 500-or-default), mirroring the Analytics Report `VisualizationErrorFallback`. Otherwise renders children. Emits `load` once on mount so a handler can kick off the data fetch.
399
+ * A skeleton placeholder shown while chart or graph content is loading. Use when the content area will contain a chart and you want to reduce perceived loading time and prevent layout shift.
422
400
  */
423
- export const ChartLoader = createComponent<ChartLoaderProps>('ChartLoader', {
424
- onLoad: 'load',
425
- });
401
+ export const ChartLoader = createComponent<ChartLoaderProps>('ChartLoader');
426
402
 
427
403
  export type CheckListProps = Bindable<CheckListCatalogProps> & {
428
404
  onChange?: ActionBinding | ActionBinding[];
@@ -435,27 +411,27 @@ export const CheckList = createComponent<CheckListProps>('CheckList', {
435
411
  });
436
412
 
437
413
  export type CheckboxProps = Bindable<CheckboxCatalogProps> & {
438
- onChange?: ActionBinding | ActionBinding[];
439
414
  onBlur?: ActionBinding | ActionBinding[];
415
+ onChange?: ActionBinding | ActionBinding[];
440
416
  } & ComponentDirectives;
441
417
  /**
442
418
  * A checkbox that lets users select or unselect an option. Use for toggling a single boolean (e.g. "I agree") or selecting multiple items from a list. Use Radio for mutually exclusive choices; use Toggle when the change takes effect immediately.
443
419
  */
444
420
  export const Checkbox = createComponent<CheckboxProps>('Checkbox', {
445
- onChange: 'change',
446
421
  onBlur: 'blur',
422
+ onChange: 'change',
447
423
  });
448
424
 
449
425
  export type CheckboxGroupProps = Bindable<CheckboxGroupCatalogProps> & {
450
- onChange?: ActionBinding | ActionBinding[];
451
426
  onBlur?: ActionBinding | ActionBinding[];
427
+ onChange?: ActionBinding | ActionBinding[];
452
428
  } & ComponentDirectives;
453
429
  /**
454
430
  * A group of checkboxes that lets users select multiple options from a predefined list. Use when users can choose all, some, or none of the options. Use Radio instead for mutually exclusive single selection, or Toggle for immediate on/off activation.
455
431
  */
456
432
  export const CheckboxGroup = createComponent<CheckboxGroupProps>('CheckboxGroup', {
457
- onChange: 'change',
458
433
  onBlur: 'blur',
434
+ onChange: 'change',
459
435
  });
460
436
 
461
437
  export type ChipProps = Bindable<ChipCatalogProps> & {
@@ -487,15 +463,15 @@ export type CircleProps = Bindable<CircleCatalogProps> & ComponentDirectives;
487
463
  export const Circle = createComponent<CircleProps>('Circle');
488
464
 
489
465
  export type ColorPickerProps = Bindable<ColorPickerCatalogProps> & {
490
- onChange?: ActionBinding | ActionBinding[];
491
466
  onBlur?: ActionBinding | ActionBinding[];
467
+ onChange?: ActionBinding | ActionBinding[];
492
468
  } & ComponentDirectives;
493
469
  /**
494
470
  * A form input for selecting a color from a predefined palette or entering a custom hex value. Use for brand color selection, theme customization, or any setting where users choose a specific color.
495
471
  */
496
472
  export const ColorPicker = createComponent<ColorPickerProps>('ColorPicker', {
497
- onChange: 'change',
498
473
  onBlur: 'blur',
474
+ onChange: 'change',
499
475
  });
500
476
 
501
477
  export type ContentLoaderProps = Bindable<ContentLoaderCatalogProps> & ComponentDirectives;
@@ -517,51 +493,57 @@ export type CountryProps = Bindable<CountryCatalogProps> & ComponentDirectives;
517
493
  export const Country = createComponent<CountryProps>('Country');
518
494
 
519
495
  export type CurrencyProps = Bindable<CurrencyCatalogProps> & {
520
- onChange?: ActionBinding | ActionBinding[];
521
496
  onBlur?: ActionBinding | ActionBinding[];
497
+ onChange?: ActionBinding | ActionBinding[];
522
498
  } & ComponentDirectives;
523
499
  /**
524
500
  * Specialized input for entering monetary amounts with currency symbol/code prefix and locale-aware number formatting. Supports arithmetic expression evaluation, currency type selection via dropdown, and decimal precision control.
525
501
  */
526
502
  export const Currency = createComponent<CurrencyProps>('Currency', {
527
- onChange: 'change',
528
503
  onBlur: 'blur',
504
+ onChange: 'change',
529
505
  });
530
506
 
507
+ export type CustomObjectGridProps = Bindable<CustomObjectGridCatalogProps> & ComponentDirectives;
508
+ /**
509
+ * Auto-fetching grid for Rippling Custom Objects. Provide objectApiName and fieldApiNames to display records with auto-generated columns, pagination, sorting, and field-type formatting. Increment refreshKey to force a data refresh after mutations.
510
+ */
511
+ export const CustomObjectGrid = createComponent<CustomObjectGridProps>('CustomObjectGrid');
512
+
531
513
  export type DateProps = Bindable<DateCatalogProps> & {
532
- onChange?: ActionBinding | ActionBinding[];
533
514
  onBlur?: ActionBinding | ActionBinding[];
515
+ onChange?: ActionBinding | ActionBinding[];
534
516
  } & ComponentDirectives;
535
517
  /**
536
518
  * A date input that lets users select a single date via calendar or keyboard entry. Use for collecting exact, approximate, or memorable dates (e.g. birth date, start date) and for scheduling. Optionally includes time selection with timezone support. Use DateRange for start/end date pairs; use DateInlineMulti for selecting multiple individual dates without an input field.
537
519
  */
538
520
  export const Date = createComponent<DateProps>('Date', {
539
- onChange: 'change',
540
521
  onBlur: 'blur',
522
+ onChange: 'change',
541
523
  });
542
524
 
543
525
  export type DateInlineMultiProps = Bindable<DateInlineMultiCatalogProps> & {
544
- onChange?: ActionBinding | ActionBinding[];
545
526
  onBlur?: ActionBinding | ActionBinding[];
527
+ onChange?: ActionBinding | ActionBinding[];
546
528
  } & ComponentDirectives;
547
529
  /**
548
530
  * An always-visible inline calendar for selecting multiple individual dates without an input field. Use when users need to pick several non-contiguous dates (e.g. holidays, blocked days). Use Date for single-date entry with an input field, or DateRange for start/end date pairs.
549
531
  */
550
532
  export const DateInlineMulti = createComponent<DateInlineMultiProps>('DateInlineMulti', {
551
- onChange: 'change',
552
533
  onBlur: 'blur',
534
+ onChange: 'change',
553
535
  });
554
536
 
555
537
  export type DateRangeProps = Bindable<DateRangeCatalogProps> & {
556
- onChange?: ActionBinding | ActionBinding[];
557
538
  onBlur?: ActionBinding | ActionBinding[];
539
+ onChange?: ActionBinding | ActionBinding[];
558
540
  } & ComponentDirectives;
559
541
  /**
560
542
  * A date range picker for selecting a start date and end date pair, such as travel dates, leave periods, or reporting intervals. Use Date instead when only a single date is needed.
561
543
  */
562
544
  export const DateRange = createComponent<DateRangeProps>('DateRange', {
563
- onChange: 'change',
564
545
  onBlur: 'blur',
546
+ onChange: 'change',
565
547
  });
566
548
 
567
549
  export type DaySelectorProps = Bindable<DaySelectorCatalogProps> & {
@@ -587,19 +569,19 @@ export type DividerProps = Bindable<DividerCatalogProps> & ComponentDirectives;
587
569
  export const Divider = createComponent<DividerProps>('Divider');
588
570
 
589
571
  export type DraggableListProps = Bindable<DraggableListCatalogProps> & {
590
- onUpdate?: ActionBinding | ActionBinding[];
591
- onRemove?: ActionBinding | ActionBinding[];
592
- onDragStart?: ActionBinding | ActionBinding[];
593
572
  onDragEnd?: ActionBinding | ActionBinding[];
573
+ onDragStart?: ActionBinding | ActionBinding[];
574
+ onRemove?: ActionBinding | ActionBinding[];
575
+ onUpdate?: ActionBinding | ActionBinding[];
594
576
  } & ComponentDirectives;
595
577
  /**
596
578
  * A reorderable drag-and-drop list for dynamically rearranging items. Supports vertical and horizontal layouts; use when item order flexibility is crucial to the user experience.
597
579
  */
598
580
  export const DraggableList = createComponent<DraggableListProps>('DraggableList', {
599
- onUpdate: 'update',
600
- onRemove: 'remove',
601
- onDragStart: 'dragStart',
602
581
  onDragEnd: 'dragEnd',
582
+ onDragStart: 'dragStart',
583
+ onRemove: 'remove',
584
+ onUpdate: 'update',
603
585
  });
604
586
 
605
587
  export type DrawerProps = Bindable<DrawerCatalogProps> & {
@@ -623,29 +605,29 @@ export const Dropdown = createComponent<DropdownProps>('Dropdown', {
623
605
  });
624
606
 
625
607
  export type EmailProps = Bindable<EmailCatalogProps> & {
626
- onChange?: ActionBinding | ActionBinding[];
627
608
  onBlur?: ActionBinding | ActionBinding[];
628
- onFocus?: ActionBinding | ActionBinding[];
609
+ onChange?: ActionBinding | ActionBinding[];
629
610
  onClick?: ActionBinding | ActionBinding[];
611
+ onFocus?: ActionBinding | ActionBinding[];
630
612
  onKeydown?: ActionBinding | ActionBinding[];
631
613
  onKeyup?: ActionBinding | ActionBinding[];
632
- onPaste?: ActionBinding | ActionBinding[];
633
614
  onMouseenter?: ActionBinding | ActionBinding[];
634
615
  onMouseleave?: ActionBinding | ActionBinding[];
616
+ onPaste?: ActionBinding | ActionBinding[];
635
617
  } & ComponentDirectives;
636
618
  /**
637
619
  * A form input field for collecting email addresses with built-in format validation. Use for registration, login, subscriptions, and any context requiring a valid email. Do not use for non-email text like phone numbers or usernames — use Text instead.
638
620
  */
639
621
  export const Email = createComponent<EmailProps>('Email', {
640
- onChange: 'change',
641
622
  onBlur: 'blur',
642
- onFocus: 'focus',
623
+ onChange: 'change',
643
624
  onClick: 'click',
625
+ onFocus: 'focus',
644
626
  onKeydown: 'keydown',
645
627
  onKeyup: 'keyup',
646
- onPaste: 'paste',
647
628
  onMouseenter: 'mouseenter',
648
629
  onMouseleave: 'mouseleave',
630
+ onPaste: 'paste',
649
631
  });
650
632
 
651
633
  export type ExpansionPanelProps = Bindable<ExpansionPanelCatalogProps> & {
@@ -683,45 +665,45 @@ export const File = createComponent<FileProps>('File', {
683
665
  });
684
666
 
685
667
  export type FileDropProps = Bindable<FileDropCatalogProps> & {
686
- onChange?: ActionBinding | ActionBinding[];
687
668
  onBlur?: ActionBinding | ActionBinding[];
669
+ onChange?: ActionBinding | ActionBinding[];
688
670
  } & ComponentDirectives;
689
671
  /**
690
672
  * A file upload input that allows users to drag and drop files into a drop zone or click to browse. Supports single or multiple file uploads with configurable file type restrictions, size limits, and optional image cropping.
691
673
  */
692
674
  export const FileDrop = createComponent<FileDropProps>('FileDrop', {
693
- onChange: 'change',
694
675
  onBlur: 'blur',
676
+ onChange: 'change',
695
677
  });
696
678
 
697
679
  export type FloatingButtonProps = Bindable<FloatingButtonCatalogProps> & {
698
- onPress?: ActionBinding | ActionBinding[];
699
- onPressWhileDisabled?: ActionBinding | ActionBinding[];
700
680
  onMouseEnter?: ActionBinding | ActionBinding[];
701
681
  onMouseLeave?: ActionBinding | ActionBinding[];
682
+ onPress?: ActionBinding | ActionBinding[];
683
+ onPressWhileDisabled?: ActionBinding | ActionBinding[];
702
684
  } & ComponentDirectives;
703
685
  /**
704
686
  * A floating action button (FAB) that highlights the primary action on a screen, staying visible above other content. Uses an icon only (no text label) and typically appears once per screen for key tasks like creating, favoriting, or sharing.
705
687
  */
706
688
  export const FloatingButton = createComponent<FloatingButtonProps>('FloatingButton', {
707
- onPress: 'press',
708
- onPressWhileDisabled: 'pressWhileDisabled',
709
689
  onMouseEnter: 'mouseEnter',
710
690
  onMouseLeave: 'mouseLeave',
691
+ onPress: 'press',
692
+ onPressWhileDisabled: 'pressWhileDisabled',
711
693
  });
712
694
 
713
695
  export type GridProps = Bindable<GridCatalogProps> & {
714
- onRowClick?: ActionBinding | ActionBinding[];
715
- onRowAction?: ActionBinding | ActionBinding[];
716
696
  onHeaderAction?: ActionBinding | ActionBinding[];
697
+ onRowAction?: ActionBinding | ActionBinding[];
698
+ onRowClick?: ActionBinding | ActionBinding[];
717
699
  } & ComponentDirectives;
718
700
  /**
719
701
  * Data grid for displaying tabular data. Each column defines a header, data key path, and cell type. Use $bindState on selectedRow to capture clicked row data. Data is an array of row objects with _key as unique identifier.
720
702
  */
721
703
  export const Grid = createComponent<GridProps>('Grid', {
722
- onRowClick: 'rowClick',
723
- onRowAction: 'rowAction',
724
704
  onHeaderAction: 'headerAction',
705
+ onRowAction: 'rowAction',
706
+ onRowClick: 'rowClick',
725
707
  });
726
708
 
727
709
  export type HStackProps = Bindable<HStackCatalogProps> &
@@ -746,33 +728,33 @@ export type IconProps = Bindable<IconCatalogProps> & {
746
728
  export const Icon = createComponent<IconProps>('Icon', { onPress: 'press' });
747
729
 
748
730
  export type IconButtonProps = Bindable<IconButtonCatalogProps> & {
749
- onPress?: ActionBinding | ActionBinding[];
750
- onPressWhileDisabled?: ActionBinding | ActionBinding[];
751
731
  onMouseEnter?: ActionBinding | ActionBinding[];
752
732
  onMouseLeave?: ActionBinding | ActionBinding[];
733
+ onPress?: ActionBinding | ActionBinding[];
734
+ onPressWhileDisabled?: ActionBinding | ActionBinding[];
753
735
  } & ComponentDirectives;
754
736
  /**
755
737
  * An icon-only button for repeated, common, or persistent actions when screen real estate is limited. Use for well-known actions like search, refresh, edit, or navigation — use a regular Button with text when the action is critical or requires more context.
756
738
  */
757
739
  export const IconButton = createComponent<IconButtonProps>('IconButton', {
758
- onPress: 'press',
759
- onPressWhileDisabled: 'pressWhileDisabled',
760
740
  onMouseEnter: 'mouseEnter',
761
741
  onMouseLeave: 'mouseLeave',
742
+ onPress: 'press',
743
+ onPressWhileDisabled: 'pressWhileDisabled',
762
744
  });
763
745
 
764
746
  export type ImageProps = Bindable<ImageCatalogProps> & {
765
- onPress?: ActionBinding | ActionBinding[];
766
- onLoad?: ActionBinding | ActionBinding[];
767
747
  onError?: ActionBinding | ActionBinding[];
748
+ onLoad?: ActionBinding | ActionBinding[];
749
+ onPress?: ActionBinding | ActionBinding[];
768
750
  } & ComponentDirectives;
769
751
  /**
770
752
  * Displays an image with optional theme-aware light/dark sources, lazy loading, and click interaction. Use for static or decorative images — use Avatar for user profile pictures, Icon for symbolic glyphs, or ImageViewer for zoomable image galleries.
771
753
  */
772
754
  export const Image = createComponent<ImageProps>('Image', {
773
- onPress: 'press',
774
- onLoad: 'load',
775
755
  onError: 'error',
756
+ onLoad: 'load',
757
+ onPress: 'press',
776
758
  });
777
759
 
778
760
  export type ImageViewerProps = Bindable<ImageViewerCatalogProps> & ComponentDirectives;
@@ -854,31 +836,31 @@ export type LoaderCardProps = Bindable<LoaderCardCatalogProps> & ComponentDirect
854
836
  export const LoaderCard = createComponent<LoaderCardProps>('LoaderCard');
855
837
 
856
838
  export type LocationCardProps = Bindable<LocationCardCatalogProps> & {
857
- onEdit?: ActionBinding | ActionBinding[];
858
- onDelete?: ActionBinding | ActionBinding[];
859
- onClick?: ActionBinding | ActionBinding[];
860
839
  onAction?: ActionBinding | ActionBinding[];
840
+ onClick?: ActionBinding | ActionBinding[];
841
+ onDelete?: ActionBinding | ActionBinding[];
842
+ onEdit?: ActionBinding | ActionBinding[];
861
843
  } & ComponentDirectives;
862
844
  /**
863
845
  * A specialized card for displaying a physical location with its nickname and formatted address. Supports edit/delete actions, custom dropdown actions, and navigation links to location details.
864
846
  */
865
847
  export const LocationCard = createComponent<LocationCardProps>('LocationCard', {
866
- onEdit: 'edit',
867
- onDelete: 'delete',
868
- onClick: 'click',
869
848
  onAction: 'action',
849
+ onClick: 'click',
850
+ onDelete: 'delete',
851
+ onEdit: 'edit',
870
852
  });
871
853
 
872
854
  export type MaskerProps = Bindable<MaskerCatalogProps> & {
873
- onChange?: ActionBinding | ActionBinding[];
874
855
  onBlur?: ActionBinding | ActionBinding[];
856
+ onChange?: ActionBinding | ActionBinding[];
875
857
  } & ComponentDirectives;
876
858
  /**
877
859
  * A text input that enforces a specific format pattern using mask characters (e.g. phone numbers, SSNs, postal codes). Use when the input value must conform to a known fixed-length pattern with digit, letter, or mixed character slots.
878
860
  */
879
861
  export const Masker = createComponent<MaskerProps>('Masker', {
880
- onChange: 'change',
881
862
  onBlur: 'blur',
863
+ onChange: 'change',
882
864
  });
883
865
 
884
866
  export type MenuListProps = Bindable<MenuListCatalogProps> & {
@@ -913,33 +895,39 @@ export type ModalFooterProps = Bindable<ModalFooterCatalogProps> &
913
895
  export const ModalFooter = createComponent<ModalFooterProps>('ModalFooter');
914
896
 
915
897
  export type NestedListProps = Bindable<NestedListCatalogProps> & {
916
- onToggle?: ActionBinding | ActionBinding[];
917
898
  onSelect?: ActionBinding | ActionBinding[];
899
+ onToggle?: ActionBinding | ActionBinding[];
918
900
  } & ComponentDirectives;
919
901
  /**
920
902
  * A hierarchical nested list for displaying complex data structures like categories and subcategories, supporting up to four levels of expandable/collapsible nesting. Use for organizing large amounts of nested information such as organizational structures or department lists.
921
903
  */
922
904
  export const NestedList = createComponent<NestedListProps>('NestedList', {
923
- onToggle: 'toggle',
924
905
  onSelect: 'select',
906
+ onToggle: 'toggle',
925
907
  });
926
908
 
927
909
  export type NumberProps = Bindable<NumberCatalogProps> & {
928
- onChange?: ActionBinding | ActionBinding[];
929
910
  onBlur?: ActionBinding | ActionBinding[];
930
- onChangeRaw?: ActionBinding | ActionBinding[];
911
+ onChange?: ActionBinding | ActionBinding[];
931
912
  onChangeCalculationState?: ActionBinding | ActionBinding[];
913
+ onChangeRaw?: ActionBinding | ActionBinding[];
932
914
  } & ComponentDirectives;
933
915
  /**
934
916
  * A general-purpose numeric input for entering whole or decimal numbers. Supports min/max range constraints, step increments, locale-aware formatting, and inline arithmetic evaluation. Use for quantities, counts, measurements, or any plain number entry — use Currency for monetary amounts, Percentage for percent values, or Slider/RangeSlider for visual range selection.
935
917
  */
936
918
  export const Number = createComponent<NumberProps>('Number', {
937
- onChange: 'change',
938
919
  onBlur: 'blur',
939
- onChangeRaw: 'changeRaw',
920
+ onChange: 'change',
940
921
  onChangeCalculationState: 'changeCalculationState',
922
+ onChangeRaw: 'changeRaw',
941
923
  });
942
924
 
925
+ export type ObjectListViewProps = Bindable<ObjectListViewCatalogProps> & ComponentDirectives;
926
+ /**
927
+ * Full-featured object list page with list view management. Supports multiple list views, view switching, inline editing, bulk actions, and record management. Use objectApiName to specify the object. Optionally set defaultListViewId to pre-select a specific list view.
928
+ */
929
+ export const ObjectListView = createComponent<ObjectListViewProps>('ObjectListView');
930
+
943
931
  export type ObjectUIProps = Bindable<ObjectUICatalogProps> &
944
932
  ComponentDirectives & { children?: SpecNode | SpecNode[] };
945
933
  /**
@@ -1031,71 +1019,71 @@ export const Pane = createComponent<PaneProps>('Pane', {
1031
1019
  });
1032
1020
 
1033
1021
  export type PasswordProps = Bindable<PasswordCatalogProps> & {
1034
- onChange?: ActionBinding | ActionBinding[];
1035
1022
  onBlur?: ActionBinding | ActionBinding[];
1036
- onFocus?: ActionBinding | ActionBinding[];
1023
+ onChange?: ActionBinding | ActionBinding[];
1037
1024
  onClick?: ActionBinding | ActionBinding[];
1025
+ onFocus?: ActionBinding | ActionBinding[];
1038
1026
  onKeydown?: ActionBinding | ActionBinding[];
1039
1027
  onKeyup?: ActionBinding | ActionBinding[];
1040
- onPaste?: ActionBinding | ActionBinding[];
1041
1028
  onMouseenter?: ActionBinding | ActionBinding[];
1042
1029
  onMouseleave?: ActionBinding | ActionBinding[];
1030
+ onPaste?: ActionBinding | ActionBinding[];
1043
1031
  onReveal?: ActionBinding | ActionBinding[];
1044
1032
  } & ComponentDirectives;
1045
1033
  /**
1046
1034
  * A secure input field for entering or creating passwords, with automatic character masking and an optional visibility toggle. Use in login, signup, or verification flows.
1047
1035
  */
1048
1036
  export const Password = createComponent<PasswordProps>('Password', {
1049
- onChange: 'change',
1050
1037
  onBlur: 'blur',
1051
- onFocus: 'focus',
1038
+ onChange: 'change',
1052
1039
  onClick: 'click',
1040
+ onFocus: 'focus',
1053
1041
  onKeydown: 'keydown',
1054
1042
  onKeyup: 'keyup',
1055
- onPaste: 'paste',
1056
1043
  onMouseenter: 'mouseenter',
1057
1044
  onMouseleave: 'mouseleave',
1045
+ onPaste: 'paste',
1058
1046
  onReveal: 'reveal',
1059
1047
  });
1060
1048
 
1061
1049
  export type PercentageProps = Bindable<PercentageCatalogProps> & {
1062
- onChange?: ActionBinding | ActionBinding[];
1063
1050
  onBlur?: ActionBinding | ActionBinding[];
1051
+ onChange?: ActionBinding | ActionBinding[];
1064
1052
  } & ComponentDirectives;
1065
1053
  /**
1066
1054
  * A numeric input for entering and editing percentage values. Automatically appends a % suffix, supports decimal precision, negative values, and upper/lower bounds. Use for financial calculations, progress indicators, or statistical entries requiring percentage values.
1067
1055
  */
1068
1056
  export const Percentage = createComponent<PercentageProps>('Percentage', {
1069
- onChange: 'change',
1070
1057
  onBlur: 'blur',
1058
+ onChange: 'change',
1071
1059
  });
1072
1060
 
1073
1061
  export type PhoneProps = Bindable<PhoneCatalogProps> & {
1074
- onChange?: ActionBinding | ActionBinding[];
1075
1062
  onBlur?: ActionBinding | ActionBinding[];
1076
- onFocus?: ActionBinding | ActionBinding[];
1063
+ onChange?: ActionBinding | ActionBinding[];
1077
1064
  onClick?: ActionBinding | ActionBinding[];
1065
+ onCountryCodeChange?: ActionBinding | ActionBinding[];
1066
+ onFocus?: ActionBinding | ActionBinding[];
1078
1067
  onKeydown?: ActionBinding | ActionBinding[];
1079
1068
  onKeyup?: ActionBinding | ActionBinding[];
1080
- onPaste?: ActionBinding | ActionBinding[];
1081
1069
  onMouseenter?: ActionBinding | ActionBinding[];
1082
1070
  onMouseleave?: ActionBinding | ActionBinding[];
1083
- onCountryCodeChange?: ActionBinding | ActionBinding[];
1071
+ onPaste?: ActionBinding | ActionBinding[];
1084
1072
  } & ComponentDirectives;
1085
1073
  /**
1086
1074
  * A specialized input for entering and editing phone numbers with automatic region-based formatting, international support, and an optional country code dropdown selector.
1087
1075
  */
1088
1076
  export const Phone = createComponent<PhoneProps>('Phone', {
1089
- onChange: 'change',
1090
1077
  onBlur: 'blur',
1091
- onFocus: 'focus',
1078
+ onChange: 'change',
1092
1079
  onClick: 'click',
1080
+ onCountryCodeChange: 'countryCodeChange',
1081
+ onFocus: 'focus',
1093
1082
  onKeydown: 'keydown',
1094
1083
  onKeyup: 'keyup',
1095
- onPaste: 'paste',
1096
1084
  onMouseenter: 'mouseenter',
1097
1085
  onMouseleave: 'mouseleave',
1098
- onCountryCodeChange: 'countryCodeChange',
1086
+ onPaste: 'paste',
1099
1087
  });
1100
1088
 
1101
1089
  export type ProgressBarProps = Bindable<ProgressBarCatalogProps> & ComponentDirectives;
@@ -1111,8 +1099,8 @@ export type ProgressStepsProps = Bindable<ProgressStepsCatalogProps> & Component
1111
1099
  export const ProgressSteps = createComponent<ProgressStepsProps>('ProgressSteps');
1112
1100
 
1113
1101
  export type RadioProps = Bindable<RadioCatalogProps> & {
1114
- onChange?: ActionBinding | ActionBinding[];
1115
1102
  onBlur?: ActionBinding | ActionBinding[];
1103
+ onChange?: ActionBinding | ActionBinding[];
1116
1104
  onMouseenter?: ActionBinding | ActionBinding[];
1117
1105
  onMouseleave?: ActionBinding | ActionBinding[];
1118
1106
  } & ComponentDirectives;
@@ -1120,26 +1108,26 @@ export type RadioProps = Bindable<RadioCatalogProps> & {
1120
1108
  * Radio buttons let users choose a single option from two or more mutually exclusive options. Prefer over Select when showing 5 or fewer options that need to be immediately visible. Use Checkbox instead when multiple selections are allowed.
1121
1109
  */
1122
1110
  export const Radio = createComponent<RadioProps>('Radio', {
1123
- onChange: 'change',
1124
1111
  onBlur: 'blur',
1112
+ onChange: 'change',
1125
1113
  onMouseenter: 'mouseenter',
1126
1114
  onMouseleave: 'mouseleave',
1127
1115
  });
1128
1116
 
1129
1117
  export type RangeSliderProps = Bindable<RangeSliderCatalogProps> & {
1130
- onChange?: ActionBinding | ActionBinding[];
1131
- onBeforeChange?: ActionBinding | ActionBinding[];
1132
1118
  onAfterChange?: ActionBinding | ActionBinding[];
1119
+ onBeforeChange?: ActionBinding | ActionBinding[];
1133
1120
  onBlur?: ActionBinding | ActionBinding[];
1121
+ onChange?: ActionBinding | ActionBinding[];
1134
1122
  } & ComponentDirectives;
1135
1123
  /**
1136
1124
  * A two-handle slider for selecting a numeric range within a track. Use for defining min/max boundaries such as price filters or value ranges.
1137
1125
  */
1138
1126
  export const RangeSlider = createComponent<RangeSliderProps>('RangeSlider', {
1139
- onChange: 'change',
1140
- onBeforeChange: 'beforeChange',
1141
1127
  onAfterChange: 'afterChange',
1128
+ onBeforeChange: 'beforeChange',
1142
1129
  onBlur: 'blur',
1130
+ onChange: 'change',
1143
1131
  });
1144
1132
 
1145
1133
  export type ReportLoaderProps = Bindable<ReportLoaderCatalogProps> & ComponentDirectives;
@@ -1160,6 +1148,26 @@ export type ReportViewerLoaderProps = Bindable<ReportViewerLoaderCatalogProps> &
1160
1148
  */
1161
1149
  export const ReportViewerLoader = createComponent<ReportViewerLoaderProps>('ReportViewerLoader');
1162
1150
 
1151
+ export type ResizableBoardProps = Bindable<ResizableBoardCatalogProps> & {
1152
+ onBreakpointChange?: ActionBinding | ActionBinding[];
1153
+ onDragStart?: ActionBinding | ActionBinding[];
1154
+ onDragStop?: ActionBinding | ActionBinding[];
1155
+ onLayoutChange?: ActionBinding | ActionBinding[];
1156
+ onResizeStart?: ActionBinding | ActionBinding[];
1157
+ onResizeStop?: ActionBinding | ActionBinding[];
1158
+ } & ComponentDirectives & { children?: SpecNode | SpecNode[] };
1159
+ /**
1160
+ * A responsive 12-column grid for dashboard widgets that supports drag-to-rearrange and resize-from-any-corner. Use for user-curated dashboards where end-users decide which tiles appear where and how large they are. Each direct child element's spec id must match a `layouts[].identifier`; that layout entry controls the child's size and per-block styling.
1161
+ */
1162
+ export const ResizableBoard = createComponent<ResizableBoardProps>('ResizableBoard', {
1163
+ onBreakpointChange: 'breakpointChange',
1164
+ onDragStart: 'dragStart',
1165
+ onDragStop: 'dragStop',
1166
+ onLayoutChange: 'layoutChange',
1167
+ onResizeStart: 'resizeStart',
1168
+ onResizeStop: 'resizeStop',
1169
+ });
1170
+
1163
1171
  export type ResponsiveProps = Bindable<ResponsiveCatalogProps> &
1164
1172
  ComponentDirectives & { children?: SpecNode | SpecNode[] };
1165
1173
  /**
@@ -1168,33 +1176,33 @@ export type ResponsiveProps = Bindable<ResponsiveCatalogProps> &
1168
1176
  export const Responsive = createComponent<ResponsiveProps>('Responsive');
1169
1177
 
1170
1178
  export type SegmentedControlProps = Bindable<SegmentedControlCatalogProps> & {
1171
- onChange?: ActionBinding | ActionBinding[];
1172
1179
  onBlur?: ActionBinding | ActionBinding[];
1180
+ onChange?: ActionBinding | ActionBinding[];
1173
1181
  } & ComponentDirectives;
1174
1182
  /**
1175
1183
  * A linear set of buttons for toggling between closely related choices (2-5 short-label options) and instantly applying a selection. Supports single, multi, and range selection modes. NOT suitable for binary (2-option) choices — use Toggle or ToggleButton instead. Prefer over Radio when options are short labels needing a compact inline layout; use Radio for longer phrases, Tabs for content navigation.
1176
1184
  */
1177
1185
  export const SegmentedControl = createComponent<SegmentedControlProps>('SegmentedControl', {
1178
- onChange: 'change',
1179
1186
  onBlur: 'blur',
1187
+ onChange: 'change',
1180
1188
  });
1181
1189
 
1182
1190
  export type SelectProps = Bindable<SelectCatalogProps> & {
1183
- onChange?: ActionBinding | ActionBinding[];
1184
1191
  onBlur?: ActionBinding | ActionBinding[];
1192
+ onChange?: ActionBinding | ActionBinding[];
1185
1193
  onFocus?: ActionBinding | ActionBinding[];
1186
- onPaste?: ActionBinding | ActionBinding[];
1187
1194
  onMenuToggle?: ActionBinding | ActionBinding[];
1195
+ onPaste?: ActionBinding | ActionBinding[];
1188
1196
  } & ComponentDirectives;
1189
1197
  /**
1190
1198
  * A dropdown input that lets users choose one or more options from a predefined list. Use for long lists, searchable lists, or constrained spaces. Use Radio or Checkbox cards instead when there are few options and the selection is a key part of the flow.
1191
1199
  */
1192
1200
  export const Select = createComponent<SelectProps>('Select', {
1193
- onChange: 'change',
1194
1201
  onBlur: 'blur',
1202
+ onChange: 'change',
1195
1203
  onFocus: 'focus',
1196
- onPaste: 'paste',
1197
1204
  onMenuToggle: 'menuToggle',
1205
+ onPaste: 'paste',
1198
1206
  });
1199
1207
 
1200
1208
  export type SelectableGroupProps = Bindable<SelectableGroupCatalogProps> & {
@@ -1239,15 +1247,15 @@ export const Signature = createComponent<SignatureProps>('Signature', {
1239
1247
  });
1240
1248
 
1241
1249
  export type SinProps = Bindable<SinCatalogProps> & {
1242
- onChange?: ActionBinding | ActionBinding[];
1243
1250
  onBlur?: ActionBinding | ActionBinding[];
1251
+ onChange?: ActionBinding | ActionBinding[];
1244
1252
  } & ComponentDirectives;
1245
1253
  /**
1246
1254
  * A specialized masked input for entering Canadian Social Insurance Numbers (SIN). Automatically formats the 9-digit value as "XXX XXX XXX" while storing the unmasked digits. Use for Canadian employee or tax forms requiring a SIN — use Ssn for US Social Security Numbers, or Masker for other custom-format masked inputs.
1247
1255
  */
1248
1256
  export const Sin = createComponent<SinProps>('Sin', {
1249
- onChange: 'change',
1250
1257
  onBlur: 'blur',
1258
+ onChange: 'change',
1251
1259
  });
1252
1260
 
1253
1261
  export type SkeletonProps = Bindable<SkeletonCatalogProps> & ComponentDirectives;
@@ -1257,19 +1265,19 @@ export type SkeletonProps = Bindable<SkeletonCatalogProps> & ComponentDirectives
1257
1265
  export const Skeleton = createComponent<SkeletonProps>('Skeleton');
1258
1266
 
1259
1267
  export type SliderProps = Bindable<SliderCatalogProps> & {
1260
- onChange?: ActionBinding | ActionBinding[];
1261
- onBlur?: ActionBinding | ActionBinding[];
1262
- onBeforeChange?: ActionBinding | ActionBinding[];
1263
1268
  onAfterChange?: ActionBinding | ActionBinding[];
1269
+ onBeforeChange?: ActionBinding | ActionBinding[];
1270
+ onBlur?: ActionBinding | ActionBinding[];
1271
+ onChange?: ActionBinding | ActionBinding[];
1264
1272
  } & ComponentDirectives;
1265
1273
  /**
1266
1274
  * An interactive control for selecting a single numeric value within a defined range by dragging a handle along a horizontal track. Use for numeric ranges like 0–100; do not use for extremely large ranges (e.g. 1–1000) or non-numeric values.
1267
1275
  */
1268
1276
  export const Slider = createComponent<SliderProps>('Slider', {
1269
- onChange: 'change',
1270
- onBlur: 'blur',
1271
- onBeforeChange: 'beforeChange',
1272
1277
  onAfterChange: 'afterChange',
1278
+ onBeforeChange: 'beforeChange',
1279
+ onBlur: 'blur',
1280
+ onChange: 'change',
1273
1281
  });
1274
1282
 
1275
1283
  export type SnackBarProps = Bindable<SnackBarCatalogProps> & {
@@ -1289,15 +1297,15 @@ export type SpinnerProps = Bindable<SpinnerCatalogProps> & ComponentDirectives;
1289
1297
  export const Spinner = createComponent<SpinnerProps>('Spinner');
1290
1298
 
1291
1299
  export type SplitButtonProps = Bindable<SplitButtonCatalogProps> & {
1292
- onPress?: ActionBinding | ActionBinding[];
1293
1300
  onDropdownChange?: ActionBinding | ActionBinding[];
1301
+ onPress?: ActionBinding | ActionBinding[];
1294
1302
  } & ComponentDirectives;
1295
1303
  /**
1296
1304
  * A compound button that combines a primary action with a secondary trailing button, typically opening a dropdown of alternative actions. Use when the user has a main action with related alternatives (e.g. "Save" with "Save as draft", "Save and publish").
1297
1305
  */
1298
1306
  export const SplitButton = createComponent<SplitButtonProps>('SplitButton', {
1299
- onPress: 'press',
1300
1307
  onDropdownChange: 'dropdownChange',
1308
+ onPress: 'press',
1301
1309
  });
1302
1310
 
1303
1311
  export type SplitPaneProps = Bindable<SplitPaneCatalogProps> &
@@ -1308,15 +1316,15 @@ export type SplitPaneProps = Bindable<SplitPaneCatalogProps> &
1308
1316
  export const SplitPane = createComponent<SplitPaneProps>('SplitPane');
1309
1317
 
1310
1318
  export type SsnProps = Bindable<SsnCatalogProps> & {
1311
- onChange?: ActionBinding | ActionBinding[];
1312
1319
  onBlur?: ActionBinding | ActionBinding[];
1320
+ onChange?: ActionBinding | ActionBinding[];
1313
1321
  } & ComponentDirectives;
1314
1322
  /**
1315
1323
  * A specialized masked input for collecting US Social Security Numbers (SSN). Automatically formats display as XXX-XX-XXXX while storing the raw 9-digit value. Use for any form field that requires an SSN; use Text for general text or Password for secret credentials.
1316
1324
  */
1317
1325
  export const Ssn = createComponent<SsnProps>('Ssn', {
1318
- onChange: 'change',
1319
1326
  onBlur: 'blur',
1327
+ onChange: 'change',
1320
1328
  });
1321
1329
 
1322
1330
  export type StatusProps = Bindable<StatusCatalogProps> & ComponentDirectives;
@@ -1346,15 +1354,15 @@ export const Survey = createComponent<SurveyProps>('Survey', {
1346
1354
  });
1347
1355
 
1348
1356
  export type SwitchProps = Bindable<SwitchCatalogProps> & {
1349
- onChange?: ActionBinding | ActionBinding[];
1350
1357
  onBlur?: ActionBinding | ActionBinding[];
1358
+ onChange?: ActionBinding | ActionBinding[];
1351
1359
  } & ComponentDirectives;
1352
1360
  /**
1353
1361
  * A toggle that lets users switch instantly between on and off states. Use for activation settings that take effect immediately; use Checkbox instead for selection or agreement scenarios that require submission.
1354
1362
  */
1355
1363
  export const Switch = createComponent<SwitchProps>('Switch', {
1356
- onChange: 'change',
1357
1364
  onBlur: 'blur',
1365
+ onChange: 'change',
1358
1366
  });
1359
1367
 
1360
1368
  export type TabProps = Bindable<TabCatalogProps> & {
@@ -1378,19 +1386,19 @@ export type TextProps = Bindable<TextCatalogProps> & ComponentDirectives;
1378
1386
  export const Text = createComponent<TextProps>('Text');
1379
1387
 
1380
1388
  export type TextAutoSuggestProps = Bindable<TextAutoSuggestCatalogProps> & {
1381
- onChange?: ActionBinding | ActionBinding[];
1382
1389
  onBlur?: ActionBinding | ActionBinding[];
1383
- onFocus?: ActionBinding | ActionBinding[];
1390
+ onChange?: ActionBinding | ActionBinding[];
1384
1391
  onClick?: ActionBinding | ActionBinding[];
1392
+ onFocus?: ActionBinding | ActionBinding[];
1385
1393
  } & ComponentDirectives;
1386
1394
  /**
1387
1395
  * An autocomplete input that offers text suggestions in a dropdown menu as the user types. Unlike Select, users can either manually type free-form text or pick from the suggestions list.
1388
1396
  */
1389
1397
  export const TextAutoSuggest = createComponent<TextAutoSuggestProps>('TextAutoSuggest', {
1390
- onChange: 'change',
1391
1398
  onBlur: 'blur',
1392
- onFocus: 'focus',
1399
+ onChange: 'change',
1393
1400
  onClick: 'click',
1401
+ onFocus: 'focus',
1394
1402
  });
1395
1403
 
1396
1404
  export type TextClipProps = Bindable<TextClipCatalogProps> &
@@ -1401,29 +1409,29 @@ export type TextClipProps = Bindable<TextClipCatalogProps> &
1401
1409
  export const TextClip = createComponent<TextClipProps>('TextClip');
1402
1410
 
1403
1411
  export type TextInputProps = Bindable<TextInputCatalogProps> & {
1404
- onChange?: ActionBinding | ActionBinding[];
1405
1412
  onBlur?: ActionBinding | ActionBinding[];
1406
- onFocus?: ActionBinding | ActionBinding[];
1413
+ onChange?: ActionBinding | ActionBinding[];
1407
1414
  onClick?: ActionBinding | ActionBinding[];
1415
+ onFocus?: ActionBinding | ActionBinding[];
1408
1416
  onKeydown?: ActionBinding | ActionBinding[];
1409
1417
  onKeyup?: ActionBinding | ActionBinding[];
1410
- onPaste?: ActionBinding | ActionBinding[];
1411
1418
  onMouseenter?: ActionBinding | ActionBinding[];
1412
1419
  onMouseleave?: ActionBinding | ActionBinding[];
1420
+ onPaste?: ActionBinding | ActionBinding[];
1413
1421
  } & ComponentDirectives;
1414
1422
  /**
1415
1423
  * A single-line text input for collecting short-form text data such as names, emails, URLs, or search queries. Use TextArea for multi-line content or Number for numeric-only values.
1416
1424
  */
1417
1425
  export const TextInput = createComponent<TextInputProps>('TextInput', {
1418
- onChange: 'change',
1419
1426
  onBlur: 'blur',
1420
- onFocus: 'focus',
1427
+ onChange: 'change',
1421
1428
  onClick: 'click',
1429
+ onFocus: 'focus',
1422
1430
  onKeydown: 'keydown',
1423
1431
  onKeyup: 'keyup',
1424
- onPaste: 'paste',
1425
1432
  onMouseenter: 'mouseenter',
1426
1433
  onMouseleave: 'mouseleave',
1434
+ onPaste: 'paste',
1427
1435
  });
1428
1436
 
1429
1437
  export type TextSnippetProps = Bindable<TextSnippetCatalogProps> & ComponentDirectives;
@@ -1433,54 +1441,54 @@ export type TextSnippetProps = Bindable<TextSnippetCatalogProps> & ComponentDire
1433
1441
  export const TextSnippet = createComponent<TextSnippetProps>('TextSnippet');
1434
1442
 
1435
1443
  export type TextareaProps = Bindable<TextareaCatalogProps> & {
1436
- onChange?: ActionBinding | ActionBinding[];
1437
1444
  onBlur?: ActionBinding | ActionBinding[];
1445
+ onChange?: ActionBinding | ActionBinding[];
1438
1446
  onFocus?: ActionBinding | ActionBinding[];
1439
1447
  } & ComponentDirectives;
1440
1448
  /**
1441
1449
  * A multi-line text input for entering longer free-form text such as comments, descriptions, or paragraphs. Use TextInput instead for short single-line entries.
1442
1450
  */
1443
1451
  export const Textarea = createComponent<TextareaProps>('Textarea', {
1444
- onChange: 'change',
1445
1452
  onBlur: 'blur',
1453
+ onChange: 'change',
1446
1454
  onFocus: 'focus',
1447
1455
  });
1448
1456
 
1449
1457
  export type TimeProps = Bindable<TimeCatalogProps> & {
1450
- onChange?: ActionBinding | ActionBinding[];
1451
1458
  onBlur?: ActionBinding | ActionBinding[];
1459
+ onChange?: ActionBinding | ActionBinding[];
1452
1460
  } & ComponentDirectives;
1453
1461
  /**
1454
1462
  * A form input for entering or selecting a specific time of day. Supports typed entry, optional dropdown time selection, timezone display, and locale-aware formatting.
1455
1463
  */
1456
1464
  export const Time = createComponent<TimeProps>('Time', {
1457
- onChange: 'change',
1458
1465
  onBlur: 'blur',
1466
+ onChange: 'change',
1459
1467
  });
1460
1468
 
1461
1469
  export type TimeRangeProps = Bindable<TimeRangeCatalogProps> & {
1462
- onChange?: ActionBinding | ActionBinding[];
1463
1470
  onBlur?: ActionBinding | ActionBinding[];
1471
+ onChange?: ActionBinding | ActionBinding[];
1464
1472
  } & ComponentDirectives;
1465
1473
  /**
1466
1474
  * A time range input for selecting a start and end time pair, such as work schedules, shifts, or availability windows. Stores a [startTime, endTime] tuple of ISO 8601 strings. Supports timezone display and next-day span detection.
1467
1475
  */
1468
1476
  export const TimeRange = createComponent<TimeRangeProps>('TimeRange', {
1469
- onChange: 'change',
1470
1477
  onBlur: 'blur',
1478
+ onChange: 'change',
1471
1479
  });
1472
1480
 
1473
1481
  export type TimezoneProps = Bindable<TimezoneCatalogProps> & {
1474
- onChange?: ActionBinding | ActionBinding[];
1475
1482
  onBlur?: ActionBinding | ActionBinding[];
1483
+ onChange?: ActionBinding | ActionBinding[];
1476
1484
  onFocus?: ActionBinding | ActionBinding[];
1477
1485
  } & ComponentDirectives;
1478
1486
  /**
1479
1487
  * A specialized select component for choosing a timezone. Lists all IANA timezones with search filtering. Use this when the user needs to pick a standalone timezone; use Time with timezone instead when selecting a time together with a timezone.
1480
1488
  */
1481
1489
  export const Timezone = createComponent<TimezoneProps>('Timezone', {
1482
- onChange: 'change',
1483
1490
  onBlur: 'blur',
1491
+ onChange: 'change',
1484
1492
  onFocus: 'focus',
1485
1493
  });
1486
1494
 
@@ -1538,186 +1546,27 @@ export type VideoProps = Bindable<VideoCatalogProps> & ComponentDirectives;
1538
1546
  export const Video = createComponent<VideoProps>('Video');
1539
1547
 
1540
1548
  export type WorkEmailProps = Bindable<WorkEmailCatalogProps> & {
1541
- onChange?: ActionBinding | ActionBinding[];
1542
1549
  onBlur?: ActionBinding | ActionBinding[];
1543
- onFocus?: ActionBinding | ActionBinding[];
1550
+ onChange?: ActionBinding | ActionBinding[];
1544
1551
  onClick?: ActionBinding | ActionBinding[];
1552
+ onFocus?: ActionBinding | ActionBinding[];
1545
1553
  onKeydown?: ActionBinding | ActionBinding[];
1546
1554
  onKeyup?: ActionBinding | ActionBinding[];
1547
- onPaste?: ActionBinding | ActionBinding[];
1548
1555
  onMouseenter?: ActionBinding | ActionBinding[];
1549
1556
  onMouseleave?: ActionBinding | ActionBinding[];
1557
+ onPaste?: ActionBinding | ActionBinding[];
1550
1558
  } & ComponentDirectives;
1551
1559
  /**
1552
1560
  * A specialized email input for entering work email addresses, featuring a domain suffix dropdown selector so users type only the username while choosing from a predefined list of company domains
1553
1561
  */
1554
1562
  export const WorkEmail = createComponent<WorkEmailProps>('WorkEmail', {
1555
- onChange: 'change',
1556
1563
  onBlur: 'blur',
1557
- onFocus: 'focus',
1564
+ onChange: 'change',
1558
1565
  onClick: 'click',
1566
+ onFocus: 'focus',
1559
1567
  onKeydown: 'keydown',
1560
1568
  onKeyup: 'keyup',
1561
- onPaste: 'paste',
1562
1569
  onMouseenter: 'mouseenter',
1563
1570
  onMouseleave: 'mouseleave',
1571
+ onPaste: 'paste',
1564
1572
  });
1565
-
1566
- export type AnalyticsCardProps = Bindable<AnalyticsCardCatalogProps> & {
1567
- onConfigure?: ActionBinding | ActionBinding[];
1568
- } & ComponentDirectives & { children?: SpecNode | SpecNode[] };
1569
- /**
1570
- * Dashboard tile chrome with a fixed header (start: heading + sub-heading; end: optional configure button) and a children body. The header renders immediately when the spec lands so the chrome is visible while the body subtree resolves its run_query data through a WithSpinner. Use this instead of the legacy Card for every dashboard tile (KPI, visual chart, grid).
1571
- */
1572
- export const AnalyticsCard = createComponent<AnalyticsCardProps>('AnalyticsCard', {
1573
- onConfigure: 'configure',
1574
- });
1575
-
1576
- export type ResizableBoardProps = Bindable<ResizableBoardCatalogProps> &
1577
- ComponentDirectives & { children?: SpecNode | SpecNode[] };
1578
- /**
1579
- * Resizable dashboard board for AI widget layouts. Wraps each child in a Pebble ResizableBoard block.
1580
- */
1581
- export const ResizableBoard = createComponent<ResizableBoardProps>('ResizableBoard');
1582
-
1583
- export type EChartProps = Bindable<EChartCatalogProps> & {
1584
- onClick?: ActionBinding | ActionBinding[];
1585
- onLegendChange?: ActionBinding | ActionBinding[];
1586
- onDataZoomChange?: ActionBinding | ActionBinding[];
1587
- } & ComponentDirectives;
1588
- /**
1589
- * Raw ECharts renderer for SDUI. Provide a JSON-safe ECharts option object. It fills its parent card by default and keeps a usable minimum height when no fixed parent height exists; optional height/width can override sizing.
1590
- */
1591
- export const EChart = createComponent<EChartProps>('EChart', {
1592
- onClick: 'click',
1593
- onLegendChange: 'legendChange',
1594
- onDataZoomChange: 'dataZoomChange',
1595
- });
1596
-
1597
- export type RichTextProps = Bindable<RichTextCatalogProps> & ComponentDirectives;
1598
- /**
1599
- * Read-only HTML content rendered with the shared RichTextEditor (non-editable). Generic SDUI building block for narrative or explanatory copy in any product layout.
1600
- */
1601
- export const RichText = createComponent<RichTextProps>('RichText');
1602
-
1603
- export type DashboardRichTextProps = Bindable<DashboardRichTextCatalogProps> & ComponentDirectives;
1604
- /**
1605
- * Deprecated alias for RichText. Same props; prefer type `RichText` in new specs.
1606
- */
1607
- export const DashboardRichText = createComponent<DashboardRichTextProps>('DashboardRichText');
1608
-
1609
- export type CustomObjectGridProps = Bindable<CustomObjectGridCatalogProps> & ComponentDirectives;
1610
- /**
1611
- * Auto-fetching grid for Rippling Custom Objects. Provide objectApiName and fieldApiNames to display records with auto-generated columns, pagination, sorting, and field-type formatting. Increment refreshKey to force a data refresh after mutations.
1612
- */
1613
- export const CustomObjectGrid = createComponent<CustomObjectGridProps>('CustomObjectGrid');
1614
-
1615
- export type ObjectListViewProps = Bindable<ObjectListViewCatalogProps> & ComponentDirectives;
1616
- /**
1617
- * Full-featured object list page with list view management. Supports multiple list views, view switching, inline editing, bulk actions, and record management. Use objectApiName to specify the object. Optionally set defaultListViewId to pre-select a specific list view.
1618
- */
1619
- export const ObjectListView = createComponent<ObjectListViewProps>('ObjectListView');
1620
-
1621
- export type BarChartProps = Bindable<BarChartCatalogProps> & {
1622
- onBarClick?: ActionBinding | ActionBinding[];
1623
- } & ComponentDirectives;
1624
- /**
1625
- * Vertical bar chart powered by ECharts. Provide series (name + data array) and optional categories for the x-axis. Use showStackedPercent for 100%-stacked bars, showBarLabel to render values on bars, and showLegend to display a series legend. Use $bindState on selected to capture the clicked bar.
1626
- */
1627
- export const BarChart = createComponent<BarChartProps>('BarChart', {
1628
- onBarClick: 'barClick',
1629
- });
1630
-
1631
- export type LineChartProps = Bindable<LineChartCatalogProps> & ComponentDirectives;
1632
- /**
1633
- * Line chart powered by ECharts. Provide series (name + data array) and optional categories for the x-axis. Use connectNulls to bridge null gaps, showAreaPercent for 100%-stacked area, and showLegend to display a series legend.
1634
- */
1635
- export const LineChart = createComponent<LineChartProps>('LineChart');
1636
-
1637
- export type HorizontalBarChartProps = Bindable<HorizontalBarChartCatalogProps> & ComponentDirectives;
1638
- /**
1639
- * Horizontal bar chart powered by ECharts. Same data shape as BarChart but renders bars horizontally. Categories appear on the y-axis and values on the x-axis.
1640
- */
1641
- export const HorizontalBarChart = createComponent<HorizontalBarChartProps>('HorizontalBarChart');
1642
-
1643
- export type CombinationChartProps = Bindable<CombinationChartCatalogProps> & ComponentDirectives;
1644
- /**
1645
- * Combination chart with bars and lines on dual Y-axes. Bars use the left Y-axis by default; lines can use the right Y-axis via yAxisIndex: 1.
1646
- */
1647
- export const CombinationChart = createComponent<CombinationChartProps>('CombinationChart');
1648
-
1649
- export type PieChartProps = Bindable<PieChartCatalogProps> & ComponentDirectives;
1650
- /**
1651
- * Pie / donut chart. Each series entry has a data array of {name, value} pairs. Use radius: ["50%", "70%"] for a donut hole.
1652
- */
1653
- export const PieChart = createComponent<PieChartProps>('PieChart');
1654
-
1655
- export type ScatterChartProps = Bindable<ScatterChartCatalogProps> & ComponentDirectives;
1656
- /**
1657
- * Scatter plot. Each series contains [x, y] data pairs plotted as individual points.
1658
- */
1659
- export const ScatterChart = createComponent<ScatterChartProps>('ScatterChart');
1660
-
1661
- export type FunnelChartProps = Bindable<FunnelChartCatalogProps> & ComponentDirectives;
1662
- /**
1663
- * Funnel chart for conversion or stage-based data. Data items are ordered by value (largest at top).
1664
- */
1665
- export const FunnelChart = createComponent<FunnelChartProps>('FunnelChart');
1666
-
1667
- export type GaugeChartProps = Bindable<GaugeChartCatalogProps> & ComponentDirectives;
1668
- /**
1669
- * Gauge (speedometer) chart. Displays a single numeric value against colored segments. Segments define the scale breakpoints and their colors.
1670
- */
1671
- export const GaugeChart = createComponent<GaugeChartProps>('GaugeChart');
1672
-
1673
- export type SunburstChartProps = Bindable<SunburstChartCatalogProps> & ComponentDirectives;
1674
- /**
1675
- * Sunburst (multi-level pie) chart for hierarchical data. Each node has a name, optional value, and optional children array.
1676
- */
1677
- export const SunburstChart = createComponent<SunburstChartProps>('SunburstChart');
1678
-
1679
- export type WithSpinnerProps = Bindable<WithSpinnerCatalogProps> & {
1680
- onLoad?: ActionBinding | ActionBinding[];
1681
- } & ComponentDirectives & { children?: SpecNode | SpecNode[] };
1682
- /**
1683
- * Wrapper that shows a spinner while loading. Emits `load` once on mount so a handler can start fetching data. Renders children only when `isLoading` is false.
1684
- */
1685
- export const WithSpinner = createComponent<WithSpinnerProps>('WithSpinner', {
1686
- onLoad: 'load',
1687
- });
1688
-
1689
- export type RadarChartProps = Bindable<RadarChartCatalogProps> & ComponentDirectives;
1690
- /**
1691
- * Radar (spider) chart for comparing multiple variables across categories. Each indicator defines a spoke axis. Provide radarIndicators (axis definitions) and radarOptions (series data).
1692
- */
1693
- export const RadarChart = createComponent<RadarChartProps>('RadarChart');
1694
-
1695
- export type RadarFilledChartProps = Bindable<RadarFilledChartCatalogProps> & ComponentDirectives;
1696
- /**
1697
- * Radar chart with filled area between data points and the center. Same data shape as RadarChart but renders with semi-transparent area fill for each series.
1698
- */
1699
- export const RadarFilledChart = createComponent<RadarFilledChartProps>('RadarFilledChart');
1700
-
1701
- export type HeatmapCalendarChartProps = Bindable<HeatmapCalendarChartCatalogProps> & ComponentDirectives;
1702
- /**
1703
- * Calendar heatmap chart that renders data points on a calendar grid. Each cell represents a day, colored by value intensity. Provide heatmapOptions with [date, value] data and calendarOptions with a date range.
1704
- */
1705
- export const HeatmapCalendarChart = createComponent<HeatmapCalendarChartProps>('HeatmapCalendarChart');
1706
-
1707
- export type HeatmapChartProps = Bindable<HeatmapChartCatalogProps> & ComponentDirectives;
1708
- /**
1709
- * Grid-based heatmap chart for showing magnitude across two dimensions. Data format: [[xIndex, yIndex, value], …]. Provide category labels for both axes.
1710
- */
1711
- export const HeatmapChart = createComponent<HeatmapChartProps>('HeatmapChart');
1712
-
1713
- export type TreemapChartProps = Bindable<TreemapChartCatalogProps> & ComponentDirectives;
1714
- /**
1715
- * Treemap chart for visualizing hierarchical data as nested rectangles. Each node has a name and either a numeric value (leaf) or children (branch). Rectangle size represents the value.
1716
- */
1717
- export const TreemapChart = createComponent<TreemapChartProps>('TreemapChart');
1718
-
1719
- export type SqlHighlightProps = Bindable<SqlHighlightCatalogProps> & ComponentDirectives;
1720
- /**
1721
- * Read-only SQL syntax highlighter powered by Monaco Editor. Renders a formatted, non-editable SQL block with auto-height based on line count and a max height cap.
1722
- */
1723
- export const SqlHighlight = createComponent<SqlHighlightProps>('SqlHighlight');