playbook_ui 16.7.0 → 16.8.0.pre.alpha.PLAY2935formbuilderrequiredindicatorbug16780

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 (135) hide show
  1. checksums.yaml +4 -4
  2. data/app/pb_kits/playbook/pb_advanced_table/Components/RegularTableView.tsx +2 -0
  3. data/app/pb_kits/playbook/pb_advanced_table/Components/TableHeaderCell.tsx +2 -0
  4. data/app/pb_kits/playbook/pb_advanced_table/Components/VirtualizedTableView.tsx +5 -1
  5. data/app/pb_kits/playbook/pb_advanced_table/Hooks/useTableState.ts +24 -0
  6. data/app/pb_kits/playbook/pb_advanced_table/Utilities/ColumnLayoutHelper.ts +138 -0
  7. data/app/pb_kits/playbook/pb_advanced_table/advanced_table.test.jsx +144 -0
  8. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_styling.jsx +1 -0
  9. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_styling.md +6 -0
  10. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_styling_width.jsx +57 -0
  11. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_styling_width.md +66 -0
  12. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_enable_toggle_expansion_rails.html.erb +62 -0
  13. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_enable_toggle_expansion_rails.md +7 -0
  14. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_sticky_header.jsx +12 -4
  15. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_sticky_header.md +4 -0
  16. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_sticky_header_rails.html.erb +16 -2
  17. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_sticky_header_rails.md +4 -0
  18. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_sticky_scroll_limitation.jsx +68 -0
  19. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_sticky_scroll_limitation.md +7 -0
  20. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_table_props_sticky_header.html.erb +16 -2
  21. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_table_props_sticky_header.jsx +12 -5
  22. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_table_props_sticky_header_rails.md +4 -0
  23. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_table_props_sticky_header_react.md +5 -3
  24. data/app/pb_kits/playbook/pb_advanced_table/docs/_playground.json +180 -5839
  25. data/app/pb_kits/playbook/pb_advanced_table/docs/_playground.overrides.json +5 -30
  26. data/app/pb_kits/playbook/pb_advanced_table/docs/advanced_table_column_definitions_styling.json +4 -1
  27. data/app/pb_kits/playbook/pb_advanced_table/docs/example.yml +3 -0
  28. data/app/pb_kits/playbook/pb_advanced_table/docs/index.js +2 -0
  29. data/app/pb_kits/playbook/pb_card/_card.tsx +1 -1
  30. data/app/pb_kits/playbook/pb_card/card.html.erb +1 -1
  31. data/app/pb_kits/playbook/pb_currency/_currency.tsx +9 -6
  32. data/app/pb_kits/playbook/pb_currency/currency.rb +5 -10
  33. data/app/pb_kits/playbook/pb_currency/currency.test.js +44 -1
  34. data/app/pb_kits/playbook/pb_date/docs/_playground.json +13 -17
  35. data/app/pb_kits/playbook/pb_date/docs/_playground.overrides.json +13 -16
  36. data/app/pb_kits/playbook/pb_date_picker/_date_picker.tsx +3 -2
  37. data/app/pb_kits/playbook/pb_date_picker/date_picker.html.erb +38 -23
  38. data/app/pb_kits/playbook/pb_date_picker/date_picker.rb +2 -1
  39. data/app/pb_kits/playbook/pb_date_picker/date_picker.test.js +31 -0
  40. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_dialog_submission.jsx +2 -2
  41. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_inline.html.erb +0 -2
  42. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_inline.jsx +0 -2
  43. data/app/pb_kits/playbook/pb_date_picker/docs/_playground.json +136 -42
  44. data/app/pb_kits/playbook/pb_date_picker/docs/_playground.overrides.json +113 -45
  45. data/app/pb_kits/playbook/pb_date_range_inline/docs/_playground.json +48 -6
  46. data/app/pb_kits/playbook/pb_date_range_inline/docs/_playground.overrides.json +57 -0
  47. data/app/pb_kits/playbook/pb_date_range_stacked/docs/_playground.json +28 -5
  48. data/app/pb_kits/playbook/pb_date_range_stacked/docs/_playground.overrides.json +38 -0
  49. data/app/pb_kits/playbook/pb_date_stacked/docs/_playground.json +1 -1
  50. data/app/pb_kits/playbook/pb_date_stacked/docs/_playground.overrides.json +1 -1
  51. data/app/pb_kits/playbook/pb_date_time/docs/_playground.json +16 -3
  52. data/app/pb_kits/playbook/pb_date_time/docs/_playground.overrides.json +16 -3
  53. data/app/pb_kits/playbook/pb_date_time_stacked/docs/_playground.json +11 -15
  54. data/app/pb_kits/playbook/pb_date_time_stacked/docs/_playground.overrides.json +11 -15
  55. data/app/pb_kits/playbook/pb_date_year_stacked/docs/_playground.json +4 -4
  56. data/app/pb_kits/playbook/pb_date_year_stacked/docs/_playground.overrides.json +4 -4
  57. data/app/pb_kits/playbook/pb_detail/docs/_playground.json +12 -18
  58. data/app/pb_kits/playbook/pb_detail/docs/_playground.overrides.json +13 -12
  59. data/app/pb_kits/playbook/pb_dialog/docs/_playground.json +108 -42
  60. data/app/pb_kits/playbook/pb_dialog/docs/_playground.overrides.json +88 -40
  61. data/app/pb_kits/playbook/pb_distribution_bar/docs/_playground.json +65 -7
  62. data/app/pb_kits/playbook/pb_distribution_bar/docs/_playground.overrides.json +45 -0
  63. data/app/pb_kits/playbook/pb_draggable/_draggable.scss +19 -0
  64. data/app/pb_kits/playbook/pb_draggable/docs/_draggable_with_cards_rails.md +2 -0
  65. data/app/pb_kits/playbook/pb_draggable/docs/_draggable_with_cards_react.md +1 -0
  66. data/app/pb_kits/playbook/pb_draggable/docs/_draggable_with_list_rails.md +2 -0
  67. data/app/pb_kits/playbook/pb_draggable/docs/_draggable_with_list_react.md +3 -1
  68. data/app/pb_kits/playbook/pb_draggable/docs/_draggable_with_selectable_list_rails.md +3 -1
  69. data/app/pb_kits/playbook/pb_draggable/docs/_draggable_with_selectable_list_react.md +3 -1
  70. data/app/pb_kits/playbook/pb_draggable/draggable.test.jsx +16 -0
  71. data/app/pb_kits/playbook/pb_draggable/draggable_container.html.erb +3 -1
  72. data/app/pb_kits/playbook/pb_draggable/draggable_item.html.erb +1 -0
  73. data/app/pb_kits/playbook/pb_draggable/index.js +149 -7
  74. data/app/pb_kits/playbook/pb_draggable/subcomponents/DraggableContainer.tsx +1 -0
  75. data/app/pb_kits/playbook/pb_draggable/subcomponents/DraggableItem.tsx +67 -1
  76. data/app/pb_kits/playbook/pb_draggable/touchDrag.test.js +38 -0
  77. data/app/pb_kits/playbook/pb_draggable/utilities/touchDrag.ts +173 -0
  78. data/app/pb_kits/playbook/pb_dropdown/docs/_playground.json +318 -21
  79. data/app/pb_kits/playbook/pb_dropdown/docs/_playground.overrides.json +192 -19
  80. data/app/pb_kits/playbook/pb_empty_state/docs/_playground.json +77 -12
  81. data/app/pb_kits/playbook/pb_empty_state/docs/_playground.overrides.json +79 -0
  82. data/app/pb_kits/playbook/pb_file_upload/docs/_playground.json +98 -13
  83. data/app/pb_kits/playbook/pb_file_upload/docs/_playground.overrides.json +99 -0
  84. data/app/pb_kits/playbook/pb_form/docs/_form_with_required_indicator.html.erb +20 -19
  85. data/app/pb_kits/playbook/pb_icon/_icon.scss +2 -1
  86. data/app/pb_kits/playbook/pb_icon/docs/example.yml +0 -2
  87. data/app/pb_kits/playbook/pb_icon/docs/index.js +0 -1
  88. data/app/pb_kits/playbook/pb_link/docs/_playground.json +81 -40
  89. data/app/pb_kits/playbook/pb_link/docs/_playground.overrides.json +88 -30
  90. data/app/pb_kits/playbook/pb_list/_list_item.tsx +4 -1
  91. data/app/pb_kits/playbook/pb_list/item.html.erb +1 -1
  92. data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_centered_data.html.erb +90 -0
  93. data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_centered_data.jsx +100 -0
  94. data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_centered_data.md +1 -0
  95. data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_default.jsx +1 -1
  96. data/app/pb_kits/playbook/pb_pb_circle_chart/docs/example.yml +2 -0
  97. data/app/pb_kits/playbook/pb_pb_circle_chart/docs/index.js +2 -1
  98. data/app/pb_kits/playbook/pb_phone_number_input/docs/_playground.json +4 -2
  99. data/app/pb_kits/playbook/pb_rich_text_editor/_rich_text_editor.tsx +1 -1
  100. data/app/pb_kits/playbook/pb_rich_text_editor/_tiptap_styles.scss +262 -43
  101. data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_rails_default.html.erb +1 -0
  102. data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_rails_default.md +12 -0
  103. data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_rails_simple.html.erb +9 -0
  104. data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_rails_simple.md +8 -0
  105. data/app/pb_kits/playbook/pb_rich_text_editor/docs/example.yml +2 -0
  106. data/app/pb_kits/playbook/pb_rich_text_editor/kit.schema.json +18 -9
  107. data/app/pb_kits/playbook/pb_rich_text_editor/rich_text_editor.html.erb +162 -0
  108. data/app/pb_kits/playbook/pb_rich_text_editor/rich_text_editor.rb +71 -0
  109. data/app/pb_kits/playbook/pb_rich_text_editor/rich_text_editor_rails.js +202 -0
  110. data/app/pb_kits/playbook/pb_table/docs/_table_sticky.html.erb +85 -83
  111. data/app/pb_kits/playbook/pb_table/docs/_table_sticky.jsx +88 -86
  112. data/app/pb_kits/playbook/pb_table/docs/_table_sticky.md +3 -1
  113. data/app/pb_kits/playbook/pb_table/docs/_table_with_filter_variant_external_filter_rails.md +1 -1
  114. data/app/pb_kits/playbook/pb_text_input/_text_input.scss +37 -0
  115. data/app/pb_kits/playbook/pb_title/docs/_playground.json +72 -23
  116. data/app/pb_kits/playbook/pb_title/docs/_playground.overrides.json +80 -16
  117. data/app/pb_kits/playbook/pb_tooltip/_tooltip.scss +133 -102
  118. data/app/pb_kits/playbook/pb_tooltip/_tooltip.tsx +54 -41
  119. data/app/pb_kits/playbook/pb_tooltip/tooltip.test.jsx +60 -2
  120. data/dist/chunks/{_pb_line_graph-CIWJe3Gr.js → _pb_line_graph-BgsTI0CL.js} +1 -1
  121. data/dist/chunks/_typeahead-DA__Kgp5.js +5 -0
  122. data/dist/chunks/{globalProps-CqO4Tko1.js → globalProps-DOB47YGB.js} +1 -1
  123. data/dist/chunks/{lib-czQnE40X.js → lib-BzglXly2.js} +2 -2
  124. data/dist/chunks/vendor.js +4 -4
  125. data/dist/menu.yml +71 -132
  126. data/dist/playbook-rails-react-bindings.js +1 -1
  127. data/dist/playbook-rails.js +1 -1
  128. data/dist/playbook.css +1 -1
  129. data/lib/playbook/forms/builder/form_field_builder.rb +2 -0
  130. data/lib/playbook/version.rb +2 -2
  131. metadata +31 -10
  132. data/app/pb_kits/playbook/pb_icon/docs/_icon_fa_kit.html.erb +0 -1
  133. data/app/pb_kits/playbook/pb_icon/docs/_icon_fa_kit.jsx +0 -21
  134. data/app/pb_kits/playbook/pb_icon/docs/_icon_fa_kit.md +0 -7
  135. data/dist/chunks/_typeahead-B_Ac4z84.js +0 -1
@@ -0,0 +1,38 @@
1
+ {
2
+ "groups": [
3
+ {
4
+ "name": "Content",
5
+ "props": ["startDate", "endDate"]
6
+ },
7
+ {
8
+ "name": "Appearance",
9
+ "props": ["dark"]
10
+ }
11
+ ],
12
+ "presets": [
13
+ {
14
+ "name": "Default",
15
+ "props": {
16
+ "startDate": "2019-06-18",
17
+ "endDate": "2020-03-20"
18
+ }
19
+ },
20
+ {
21
+ "name": "Dark",
22
+ "props": {
23
+ "startDate": "2019-06-18",
24
+ "endDate": "2020-03-20",
25
+ "dark": true
26
+ }
27
+ },
28
+ {
29
+ "name": "Same calendar year",
30
+ "props": {
31
+ "startDate": "2026-01-15",
32
+ "endDate": "2026-08-15"
33
+ }
34
+ }
35
+ ],
36
+ "conditionals": {},
37
+ "hints": {}
38
+ }
@@ -10,7 +10,7 @@
10
10
  },
11
11
  "groups": [
12
12
  {
13
- "name": "Content",
13
+ "name": "Date Config",
14
14
  "props": [
15
15
  "date",
16
16
  "showCurrentYear",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "groups": [
3
3
  {
4
- "name": "Content",
4
+ "name": "Date Config",
5
5
  "props": ["date", "showCurrentYear", "reverse", "bold"]
6
6
  },
7
7
  {
@@ -10,7 +10,7 @@
10
10
  },
11
11
  "groups": [
12
12
  {
13
- "name": "Content",
13
+ "name": "Date Config",
14
14
  "props": [
15
15
  "datetime",
16
16
  "showDayOfWeek",
@@ -49,7 +49,7 @@
49
49
  }
50
50
  },
51
51
  {
52
- "name": "With calendar icon",
52
+ "name": "With icon",
53
53
  "props": {
54
54
  "datetime": "2026-04-09T15:30:00.000Z",
55
55
  "showIcon": true,
@@ -69,8 +69,21 @@
69
69
  "datetime": "2026-04-09T15:30:00.000Z",
70
70
  "timeZone": "Asia/Tokyo"
71
71
  }
72
+ },
73
+ {
74
+ "name": "Always show year",
75
+ "props": {
76
+ "datetime": "2026-04-09T15:30:00.000Z",
77
+ "showCurrentYear": true
78
+ }
72
79
  }
73
80
  ],
74
81
  "conditionals": {},
75
- "hints": {}
82
+ "hints": {
83
+ "tokyo_time": {
84
+ "presetName": "Tokyo time",
85
+ "message": "Use the timeZone prop to display the time in a different timezone",
86
+ "type": "info"
87
+ }
88
+ }
76
89
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "groups": [
3
3
  {
4
- "name": "Content",
4
+ "name": "Date Config",
5
5
  "props": ["datetime", "showDayOfWeek", "showCurrentYear", "showIcon", "timeZone"]
6
6
  },
7
7
  {
@@ -31,7 +31,7 @@
31
31
  }
32
32
  },
33
33
  {
34
- "name": "With calendar icon",
34
+ "name": "With icon",
35
35
  "props": {
36
36
  "datetime": "2026-04-09T15:30:00.000Z",
37
37
  "showIcon": true,
@@ -51,8 +51,21 @@
51
51
  "datetime": "2026-04-09T15:30:00.000Z",
52
52
  "timeZone": "Asia/Tokyo"
53
53
  }
54
+ },
55
+ {
56
+ "name": "Always show year",
57
+ "props": {
58
+ "datetime": "2026-04-09T15:30:00.000Z",
59
+ "showCurrentYear": true
60
+ }
54
61
  }
55
62
  ],
56
63
  "conditionals": {},
57
- "hints": {}
64
+ "hints": {
65
+ "tokyo_time": {
66
+ "presetName": "Tokyo time",
67
+ "message": "Use the timeZone prop to display the time in a different timezone",
68
+ "type": "info"
69
+ }
70
+ }
58
71
  }
@@ -6,7 +6,7 @@
6
6
  },
7
7
  "groups": [
8
8
  {
9
- "name": "Content",
9
+ "name": "Date Config",
10
10
  "props": [
11
11
  "datetime",
12
12
  "timeZone",
@@ -24,34 +24,30 @@
24
24
  {
25
25
  "name": "Default",
26
26
  "props": {
27
- "datetime": "2026-04-09T15:30:00.000Z",
28
- "dark": false
27
+ "datetime": "2026-04-09T15:30:00.000Z"
29
28
  }
30
29
  },
31
30
  {
32
- "name": "With year",
31
+ "name": "Always show year",
33
32
  "props": {
34
33
  "datetime": "2024-10-31T18:45:00.000Z",
35
- "dark": false,
36
34
  "showCurrentYear": true
37
35
  }
38
36
  },
39
37
  {
40
- "name": "Dark",
38
+ "name": "Paris time",
41
39
  "props": {
42
40
  "datetime": "2026-04-09T15:30:00.000Z",
43
- "dark": true
44
- }
45
- },
46
- {
47
- "name": "Paris",
48
- "props": {
49
- "datetime": "2026-04-09T15:30:00.000Z",
50
- "dark": false,
51
41
  "timeZone": "Europe/Paris"
52
42
  }
53
43
  }
54
44
  ],
55
45
  "conditionals": {},
56
- "hints": {}
46
+ "hints": {
47
+ "paris_time": {
48
+ "presetName": "Paris time",
49
+ "message": "Use the timeZone prop to display the time in a different timezone",
50
+ "type": "info"
51
+ }
52
+ }
57
53
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "groups": [
3
3
  {
4
- "name": "Content",
4
+ "name": "Date Config",
5
5
  "props": ["datetime", "timeZone", "showCurrentYear"]
6
6
  },
7
7
  {
@@ -13,34 +13,30 @@
13
13
  {
14
14
  "name": "Default",
15
15
  "props": {
16
- "datetime": "2026-04-09T15:30:00.000Z",
17
- "dark": false
16
+ "datetime": "2026-04-09T15:30:00.000Z"
18
17
  }
19
18
  },
20
19
  {
21
- "name": "With year",
20
+ "name": "Always show year",
22
21
  "props": {
23
22
  "datetime": "2024-10-31T18:45:00.000Z",
24
- "dark": false,
25
23
  "showCurrentYear": true
26
24
  }
27
25
  },
28
26
  {
29
- "name": "Dark",
27
+ "name": "Paris time",
30
28
  "props": {
31
29
  "datetime": "2026-04-09T15:30:00.000Z",
32
- "dark": true
33
- }
34
- },
35
- {
36
- "name": "Paris",
37
- "props": {
38
- "datetime": "2026-04-09T15:30:00.000Z",
39
- "dark": false,
40
30
  "timeZone": "Europe/Paris"
41
31
  }
42
32
  }
43
33
  ],
44
34
  "conditionals": {},
45
- "hints": {}
35
+ "hints": {
36
+ "paris_time": {
37
+ "presetName": "Paris time",
38
+ "message": "Use the timeZone prop to display the time in a different timezone",
39
+ "type": "info"
40
+ }
41
+ }
46
42
  }
@@ -6,7 +6,7 @@
6
6
  },
7
7
  "groups": [
8
8
  {
9
- "name": "Content",
9
+ "name": "Date Config",
10
10
  "props": [
11
11
  "date"
12
12
  ]
@@ -22,20 +22,20 @@
22
22
  {
23
23
  "name": "Default",
24
24
  "props": {
25
- "date": "2026-04-09T12:00:00.000Z"
25
+ "date": "2026-04-09"
26
26
  }
27
27
  },
28
28
  {
29
29
  "name": "Centered",
30
30
  "props": {
31
- "date": "2026-04-09T12:00:00.000Z",
31
+ "date": "2026-04-09",
32
32
  "align": "center"
33
33
  }
34
34
  },
35
35
  {
36
36
  "name": "Right aligned",
37
37
  "props": {
38
- "date": "2026-12-25T12:00:00.000Z",
38
+ "date": "2026-12-25",
39
39
  "align": "right"
40
40
  }
41
41
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "groups": [
3
3
  {
4
- "name": "Content",
4
+ "name": "Date Config",
5
5
  "props": ["date"]
6
6
  },
7
7
  {
@@ -13,20 +13,20 @@
13
13
  {
14
14
  "name": "Default",
15
15
  "props": {
16
- "date": "2026-04-09T12:00:00.000Z"
16
+ "date": "2026-04-09"
17
17
  }
18
18
  },
19
19
  {
20
20
  "name": "Centered",
21
21
  "props": {
22
- "date": "2026-04-09T12:00:00.000Z",
22
+ "date": "2026-04-09",
23
23
  "align": "center"
24
24
  }
25
25
  },
26
26
  {
27
27
  "name": "Right aligned",
28
28
  "props": {
29
- "date": "2026-12-25T12:00:00.000Z",
29
+ "date": "2026-12-25",
30
30
  "align": "right"
31
31
  }
32
32
  }
@@ -31,23 +31,19 @@
31
31
  ],
32
32
  "presets": [
33
33
  {
34
- "name": "Metadata",
35
- "props": {
36
- "color": "light",
37
- "bold": false
38
- },
39
- "children": "Updated Apr 9, 2026"
34
+ "name": "Default",
35
+ "props": {},
36
+ "children": "I am a detail kit"
40
37
  },
41
38
  {
42
39
  "name": "Emphasis",
43
40
  "props": {
44
- "color": "default",
45
41
  "bold": true
46
42
  },
47
43
  "children": "Order #48291 · Processing"
48
44
  },
49
45
  {
50
- "name": "Link",
46
+ "name": "Link color",
51
47
  "props": {
52
48
  "color": "link"
53
49
  },
@@ -59,17 +55,15 @@
59
55
  "color": "error",
60
56
  "bold": true
61
57
  },
62
- "children": "Payment failed — card expired"
63
- },
64
- {
65
- "name": "Inline label",
66
- "props": {
67
- "tag": "span",
68
- "color": "lighter"
69
- },
70
- "children": "Optional"
58
+ "children": "Payment failed"
71
59
  }
72
60
  ],
73
61
  "conditionals": {},
74
- "hints": {}
62
+ "hints": {
63
+ "link_color": {
64
+ "presetName": "Link color",
65
+ "message": "Use the color prop to change the color of the detail kit",
66
+ "type": "info"
67
+ }
68
+ }
75
69
  }
@@ -14,31 +14,32 @@
14
14
  ],
15
15
  "presets": [
16
16
  {
17
- "name": "Metadata",
18
- "props": { "color": "light", "bold": false },
19
- "children": "Updated Apr 9, 2026"
17
+ "name": "Default",
18
+ "props": { },
19
+ "children": "I am a detail kit"
20
20
  },
21
21
  {
22
22
  "name": "Emphasis",
23
- "props": { "color": "default", "bold": true },
23
+ "props": { "bold": true },
24
24
  "children": "Order #48291 · Processing"
25
25
  },
26
26
  {
27
- "name": "Link",
27
+ "name": "Link color",
28
28
  "props": { "color": "link" },
29
29
  "children": "View documentation"
30
30
  },
31
31
  {
32
32
  "name": "Error status",
33
33
  "props": { "color": "error", "bold": true },
34
- "children": "Payment failed — card expired"
35
- },
36
- {
37
- "name": "Inline label",
38
- "props": { "tag": "span", "color": "lighter" },
39
- "children": "Optional"
34
+ "children": "Payment failed"
40
35
  }
41
36
  ],
42
37
  "conditionals": {},
43
- "hints": {}
38
+ "hints": {
39
+ "link_color": {
40
+ "presetName": "Link color",
41
+ "message": "Use the color prop to change the color of the detail kit",
42
+ "type": "info"
43
+ }
44
+ }
44
45
  }
@@ -7,7 +7,9 @@
7
7
  "placement": "center",
8
8
  "shouldCloseOnOverlayClick": true,
9
9
  "size": "md",
10
- "status": ""
10
+ "status": "",
11
+ "title": "Header Title is the Title Prop",
12
+ "text": "Hello Body Text, Nice to meet ya."
11
13
  },
12
14
  "children": {
13
15
  "editable": true,
@@ -23,22 +25,21 @@
23
25
  "title",
24
26
  "text",
25
27
  "cancelButton",
26
- "confirmButton"
28
+ "confirmButton",
29
+ "onCancel",
30
+ "onClose",
31
+ "onConfirm",
32
+ "opened",
33
+ "onChange"
27
34
  ]
28
35
  },
29
36
  {
30
37
  "name": "Behavior",
31
38
  "props": [
32
- "opened",
33
39
  "placement",
34
40
  "shouldCloseOnOverlayClick",
35
41
  "closeable",
36
- "loading",
37
- "trigger",
38
- "onClose",
39
- "onCancel",
40
- "onConfirm",
41
- "onChange"
42
+ "loading"
42
43
  ]
43
44
  },
44
45
  {
@@ -46,69 +47,90 @@
46
47
  "props": [
47
48
  "size",
48
49
  "status",
49
- "fullHeight",
50
- "portalClassName"
50
+ "fullHeight"
51
51
  ]
52
52
  }
53
53
  ],
54
54
  "presets": [
55
55
  {
56
- "name": "Small",
56
+ "name": "Default",
57
57
  "props": {
58
- "size": "sm",
59
- "opened": true,
60
- "title": "Small dialog",
61
- "text": "Narrow width for short confirmations and alerts."
58
+ "size": "md",
59
+ "title": "Header Title is the Title Prop",
60
+ "text": "Hello Body Text, Nice to meet ya.",
61
+ "cancelButton": "Cancel Button",
62
+ "confirmButton": "Okay"
62
63
  }
63
64
  },
64
65
  {
65
- "name": "Medium",
66
+ "name": "Small",
66
67
  "props": {
67
- "size": "md",
68
- "opened": true,
69
- "title": "Medium dialog",
70
- "text": "Default size for most forms and standard content."
68
+ "size": "sm",
69
+ "title": "Small dialog",
70
+ "text": "Narrow width for short confirmations and alerts."
71
71
  }
72
72
  },
73
73
  {
74
74
  "name": "Large",
75
75
  "props": {
76
76
  "size": "lg",
77
- "opened": true,
78
77
  "title": "Large dialog",
79
78
  "text": "Wider layout for dense content or two-column layouts."
80
79
  }
81
80
  },
82
81
  {
83
- "name": "Extra large",
82
+ "name": "Status Alert",
84
83
  "props": {
85
- "size": "xl",
86
- "opened": true,
87
- "title": "Extra large dialog",
88
- "text": "Maximum width before full-screen patterns."
84
+ "size": "status_size",
85
+ "status": "success",
86
+ "title": "Success",
87
+ "text": "Compact status layout for confirmations and feedback."
89
88
  }
90
89
  },
91
90
  {
92
- "name": "Content width",
91
+ "name": "Compound components",
92
+ "structureMode": "subcomponents",
93
93
  "props": {
94
- "size": "content",
95
- "opened": true,
96
- "title": "Content-sized dialog",
97
- "text": "Width follows the content instead of fixed breakpoints."
98
- }
94
+ "size": "sm"
95
+ },
96
+ "children": "Hello Body Text, Nice to meet ya."
99
97
  },
100
98
  {
101
- "name": "Status size",
99
+ "name": "Full height compound",
100
+ "structureMode": "subcomponents",
102
101
  "props": {
103
- "size": "status_size",
104
- "opened": true,
105
- "status": "success",
106
- "title": "Success",
107
- "text": "Compact status layout for confirmations and feedback."
108
- }
102
+ "fullHeight": true,
103
+ "size": "lg"
104
+ },
105
+ "children": "Custom dialog content goes here when you need more vertical space."
109
106
  }
110
107
  ],
111
- "conditionals": {},
108
+ "conditionals": {
109
+ "title": {
110
+ "structureMode": "simple"
111
+ },
112
+ "text": {
113
+ "structureMode": "simple"
114
+ },
115
+ "cancelButton": {
116
+ "structureMode": "simple"
117
+ },
118
+ "confirmButton": {
119
+ "structureMode": "simple"
120
+ },
121
+ "onCancel": {
122
+ "structureMode": "simple"
123
+ },
124
+ "onClose": {
125
+ "structureMode": "simple"
126
+ },
127
+ "onConfirm": {
128
+ "structureMode": "simple"
129
+ },
130
+ "opened": {
131
+ "structureMode": "simple"
132
+ }
133
+ },
112
134
  "hints": {
113
135
  "status_dialog": {
114
136
  "when": {
@@ -116,6 +138,50 @@
116
138
  },
117
139
  "message": "Status dialogs show an icon, title, and body copy in a centered layout.",
118
140
  "type": "info"
141
+ },
142
+ "compound_components_info": {
143
+ "presetName": "Compound components",
144
+ "message": "Use Compound Components when you need custom header, body, or footer content instead of the simple title/text/button props API.",
145
+ "type": "info"
146
+ },
147
+ "full_height_info": {
148
+ "presetName": "Full height compound",
149
+ "message": "fullHeight is most useful with the compound structure when the dialog contains richer or scrollable content.",
150
+ "type": "info"
151
+ }
152
+ },
153
+ "structureModes": {
154
+ "default": "simple",
155
+ "modes": {
156
+ "simple": {
157
+ "label": "Simple",
158
+ "template": "<Dialog opened={dialogOpen} onCancel={closeDialog} onClose={closeDialog} onConfirm={closeDialog}{{props}} />",
159
+ "children": "",
160
+ "props": {
161
+ "size": "md",
162
+ "title": "Header Title is the Title Prop",
163
+ "text": "Hello Body Text, Nice to meet ya.",
164
+ "cancelButton": "Cancel Button",
165
+ "confirmButton": "Okay"
166
+ },
167
+ "imports": [
168
+ "Button"
169
+ ],
170
+ "wrapper": "const DialogPlaygroundExample = () => {\n const [dialogOpen, setDialogOpen] = useState(false)\n const openDialog = () => setDialogOpen(true)\n const closeDialog = () => setDialogOpen(false)\n\n return (\n <>\n <Button marginBottom=\"sm\" onClick={openDialog}>\n Open Dialog\n </Button>\n {{component}}\n </>\n )\n}\n\n<DialogPlaygroundExample />"
171
+ },
172
+ "subcomponents": {
173
+ "label": "Compound Components",
174
+ "template": "<Dialog opened={dialogOpen} onClose={closeDialog}{{props}}>\n <Dialog.Header>Header Title inside Dialog.Header</Dialog.Header>\n <Dialog.Body>{{children}}</Dialog.Body>\n <Dialog.Footer>\n <Button onClick={closeDialog}>Okay</Button>\n <Button onClick={closeDialog} variant=\"link\">Cancel Button</Button>\n </Dialog.Footer>\n</Dialog>",
175
+ "children": "Hello Body Text, Nice to meet ya.",
176
+ "imports": [
177
+ "Button"
178
+ ],
179
+ "wrapper": "const DialogPlaygroundExample = () => {\n const [dialogOpen, setDialogOpen] = useState(false)\n const openDialog = () => setDialogOpen(true)\n const closeDialog = () => setDialogOpen(false)\n\n return (\n <>\n <Button marginBottom=\"sm\" onClick={openDialog}>\n Open Dialog\n </Button>\n {{component}}\n </>\n )\n}\n\n<DialogPlaygroundExample />"
180
+ }
119
181
  }
120
- }
182
+ },
183
+ "hiddenProps": [
184
+ "trigger",
185
+ "portalClassName"
186
+ ]
121
187
  }