torch-glare 2.3.0 → 2.4.1

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 (264) hide show
  1. package/README.md +8 -0
  2. package/apps/lib/components/ActionButton.tsx +7 -12
  3. package/apps/lib/components/ActionsGroup.tsx +4 -15
  4. package/apps/lib/components/AlertDialog.tsx +173 -191
  5. package/apps/lib/components/Avatar.tsx +13 -16
  6. package/apps/lib/components/Badge.tsx +7 -3
  7. package/apps/lib/components/BadgeField.tsx +76 -71
  8. package/apps/lib/components/Breadcrumb.tsx +49 -85
  9. package/apps/lib/components/Button.tsx +20 -19
  10. package/apps/lib/components/ButtonGroup.tsx +31 -41
  11. package/apps/lib/components/Calendar.tsx +51 -29
  12. package/apps/lib/components/Card.tsx +2 -13
  13. package/apps/lib/components/ChartBlockTool.ts +17 -52
  14. package/apps/lib/components/Checkbox.tsx +9 -16
  15. package/apps/lib/components/ContextMenu.tsx +110 -106
  16. package/apps/lib/components/CountBadge.tsx +4 -6
  17. package/apps/lib/components/DataTable.tsx +196 -216
  18. package/apps/lib/components/DataViews/DataViewRadio.tsx +10 -8
  19. package/apps/lib/components/DataViews/DataViewsConfigPanel.tsx +21 -55
  20. package/apps/lib/components/DataViews/DataViewsHeader.tsx +1 -3
  21. package/apps/lib/components/DataViews/DataViewsLayout.tsx +5 -12
  22. package/apps/lib/components/DataViews/FilterPanel.tsx +173 -150
  23. package/apps/lib/components/DataViews/HeaderSearch.tsx +1 -5
  24. package/apps/lib/components/DataViews/InboxView.tsx +22 -68
  25. package/apps/lib/components/DataViews/InboxViewCard.tsx +68 -77
  26. package/apps/lib/components/DataViews/KanbanView.tsx +8 -25
  27. package/apps/lib/components/DataViews/PanelControls.tsx +3 -13
  28. package/apps/lib/components/DataViews/SettingsPanel.tsx +83 -89
  29. package/apps/lib/components/DataViews/TableView.tsx +8 -28
  30. package/apps/lib/components/DataViews/TreeView.tsx +12 -40
  31. package/apps/lib/components/DataViews/badgeAdapter.ts +32 -28
  32. package/apps/lib/components/DataViews/fieldRenderers.tsx +106 -141
  33. package/apps/lib/components/DataViews/filters/DatePickerRangeFilter.tsx +87 -0
  34. package/apps/lib/components/DataViews/filters/DateRangePopover.tsx +39 -32
  35. package/apps/lib/components/DataViews/filters/PresetChips.tsx +15 -15
  36. package/apps/lib/components/DataViews/filters/RangeSliderWithInputs.tsx +69 -58
  37. package/apps/lib/components/DataViews/index.ts +26 -26
  38. package/apps/lib/components/DataViews/tree/TreeDrawer.tsx +12 -16
  39. package/apps/lib/components/DataViews/tree/TreeSidebar.tsx +28 -31
  40. package/apps/lib/components/DataViews/types.ts +111 -114
  41. package/apps/lib/components/DatePicker.tsx +198 -191
  42. package/apps/lib/components/Dialog.tsx +92 -105
  43. package/apps/lib/components/Divider.tsx +21 -24
  44. package/apps/lib/components/Drawer.tsx +79 -139
  45. package/apps/lib/components/DropdownMenu.tsx +144 -181
  46. package/apps/lib/components/FieldHint.tsx +4 -11
  47. package/apps/lib/components/Form.tsx +146 -155
  48. package/apps/lib/components/FormStepper.tsx +9 -39
  49. package/apps/lib/components/HeaderBar.tsx +119 -0
  50. package/apps/lib/components/ImageAttachment.tsx +111 -73
  51. package/apps/lib/components/InnerLabelField.tsx +20 -16
  52. package/apps/lib/components/Input.tsx +171 -172
  53. package/apps/lib/components/InputField.tsx +44 -45
  54. package/apps/lib/components/InputOTP.tsx +68 -69
  55. package/apps/lib/components/Label.tsx +31 -35
  56. package/apps/lib/components/LabelField.tsx +4 -5
  57. package/apps/lib/components/LabeledCheckBox.tsx +8 -12
  58. package/apps/lib/components/LabeledRadio.tsx +7 -5
  59. package/apps/lib/components/LinkButton.tsx +2 -9
  60. package/apps/lib/components/LoginButton.tsx +4 -9
  61. package/apps/lib/components/PasswordLevel.tsx +5 -5
  62. package/apps/lib/components/Popover.tsx +15 -33
  63. package/apps/lib/components/ProfileMenu.tsx +67 -72
  64. package/apps/lib/components/Radio.tsx +1 -5
  65. package/apps/lib/components/RadioCard.tsx +9 -28
  66. package/apps/lib/components/ScrollArea.tsx +45 -43
  67. package/apps/lib/components/SearchField.tsx +49 -39
  68. package/apps/lib/components/SearchableSelect.tsx +46 -52
  69. package/apps/lib/components/SearchableTable.tsx +199 -219
  70. package/apps/lib/components/SearchableTree.tsx +469 -0
  71. package/apps/lib/components/SearchableTreeDialog.tsx +493 -0
  72. package/apps/lib/components/SectionBlock.tsx +4 -16
  73. package/apps/lib/components/Select.tsx +53 -80
  74. package/apps/lib/components/SimpleSelect.tsx +196 -187
  75. package/apps/lib/components/Skeleton.tsx +9 -12
  76. package/apps/lib/components/SlideDatePicker.tsx +215 -166
  77. package/apps/lib/components/SpinLoading.tsx +33 -49
  78. package/apps/lib/components/Stepper.tsx +13 -56
  79. package/apps/lib/components/Switch.tsx +8 -10
  80. package/apps/lib/components/TabFormItem.tsx +3 -12
  81. package/apps/lib/components/TabSwitch.tsx +7 -34
  82. package/apps/lib/components/Table.tsx +60 -75
  83. package/apps/lib/components/TableDnDWrapper.ts +15 -48
  84. package/apps/lib/components/TextEditor.tsx +93 -104
  85. package/apps/lib/components/Textarea.tsx +8 -12
  86. package/apps/lib/components/Timeline.tsx +21 -41
  87. package/apps/lib/components/Toast.tsx +83 -83
  88. package/apps/lib/components/Toggle.tsx +112 -114
  89. package/apps/lib/components/ToggleButton.tsx +1 -1
  90. package/apps/lib/components/Tooltip.tsx +24 -19
  91. package/apps/lib/components/TransparentLabel.tsx +61 -62
  92. package/apps/lib/components/TreeDropDown.tsx +86 -52
  93. package/apps/lib/components/TreeFolder/TreeFolder.tsx +15 -48
  94. package/apps/lib/components/TreeFolder/TreeFolderBreadcrumb.tsx +16 -21
  95. package/apps/lib/components/TreeFolder/TreeFolderRow.tsx +9 -20
  96. package/apps/lib/components/TreeFolder/TreeFolderStyles.tsx +3 -3
  97. package/apps/lib/components/TreeFolder/icons.tsx +14 -17
  98. package/apps/lib/components/TreeFolder/index.ts +15 -8
  99. package/apps/lib/components/TreeFolder/treeFolderUtils.ts +47 -52
  100. package/apps/lib/components/TreeFolder/types.ts +32 -32
  101. package/apps/lib/components/TreeFolder/useTreeFolderDnD.ts +117 -123
  102. package/apps/lib/hooks/useActiveTreeItem.ts +52 -55
  103. package/apps/lib/hooks/useClickOutside.ts +21 -20
  104. package/apps/lib/hooks/useDataViewsState.ts +86 -80
  105. package/apps/lib/hooks/useIsMobile.ts +12 -12
  106. package/apps/lib/hooks/useResize.ts +54 -65
  107. package/apps/lib/hooks/useTagSelection.ts +201 -201
  108. package/apps/lib/layouts/CNLayout.tsx +181 -140
  109. package/apps/lib/layouts/DataViewCard.tsx +4 -18
  110. package/apps/lib/layouts/FieldSection.tsx +2 -6
  111. package/apps/lib/layouts/TreeSubLayout.tsx +24 -38
  112. package/apps/lib/providers/ThemeProvider.tsx +8 -23
  113. package/apps/lib/registry.json +1004 -0
  114. package/apps/lib/tsconfig.json +9 -0
  115. package/apps/lib/utils/cn.ts +1 -1
  116. package/apps/lib/utils/dataViews/columnUtils.ts +46 -44
  117. package/apps/lib/utils/dataViews/fieldUtils.ts +70 -71
  118. package/apps/lib/utils/dataViews/nestedDataUtils.tsx +129 -122
  119. package/apps/lib/utils/dataViews/pathUtils.ts +74 -67
  120. package/apps/lib/utils/dataViews/rangeUtils.ts +121 -112
  121. package/apps/lib/utils/dataViews/treeUtils.ts +204 -211
  122. package/apps/lib/utils/dateFormat.ts +64 -54
  123. package/apps/lib/utils/markdownParser.ts +2 -7
  124. package/apps/lib/utils/resize.ts +21 -25
  125. package/apps/lib/utils/types.ts +13 -13
  126. package/dist/bin/index.js +8 -2
  127. package/dist/bin/index.js.map +1 -1
  128. package/dist/src/shared/getAvailableFiles.d.ts.map +1 -1
  129. package/dist/src/shared/getAvailableFiles.js +6 -1
  130. package/dist/src/shared/getAvailableFiles.js.map +1 -1
  131. package/dist/src/shared/loadRegistry.d.ts +7 -0
  132. package/dist/src/shared/loadRegistry.d.ts.map +1 -0
  133. package/dist/src/shared/loadRegistry.js +31 -0
  134. package/dist/src/shared/loadRegistry.js.map +1 -0
  135. package/dist/src/shared/resolveInstallPlan.d.ts +12 -0
  136. package/dist/src/shared/resolveInstallPlan.d.ts.map +1 -0
  137. package/dist/src/shared/resolveInstallPlan.js +39 -0
  138. package/dist/src/shared/resolveInstallPlan.js.map +1 -0
  139. package/dist/src/types/main.d.ts +24 -0
  140. package/dist/src/types/main.d.ts.map +1 -1
  141. package/docs/README.md +10 -2
  142. package/docs/components/action-button.md +30 -24
  143. package/docs/components/actions-group.md +26 -20
  144. package/docs/components/alert-dialog.md +45 -45
  145. package/docs/components/avatar.md +6 -2
  146. package/docs/components/badge-field.md +6 -2
  147. package/docs/components/badge.md +7 -1
  148. package/docs/components/breadcrumb.md +15 -40
  149. package/docs/components/button-group.md +13 -10
  150. package/docs/components/button.md +58 -33
  151. package/docs/components/calendar.md +26 -19
  152. package/docs/components/card.md +19 -16
  153. package/docs/components/chart-block-tool.md +128 -0
  154. package/docs/components/checkbox.md +16 -8
  155. package/docs/components/cn-layout.md +7 -1
  156. package/docs/components/context-menu.md +47 -24
  157. package/docs/components/count-badge.md +7 -1
  158. package/docs/components/data-table.md +45 -33
  159. package/docs/components/data-views-config-panel.md +18 -14
  160. package/docs/components/data-views-layout.md +20 -17
  161. package/docs/components/date-picker.md +30 -23
  162. package/docs/components/dialog.md +43 -42
  163. package/docs/components/divider.md +10 -4
  164. package/docs/components/drawer.md +8 -33
  165. package/docs/components/dropdown-menu.md +51 -32
  166. package/docs/components/field-hint.md +37 -25
  167. package/docs/components/field-section.md +9 -3
  168. package/docs/components/form-stepper.md +6 -0
  169. package/docs/components/form.md +17 -20
  170. package/docs/components/header-bar.md +187 -0
  171. package/docs/components/image-attachment.md +33 -41
  172. package/docs/components/inbox-view.md +16 -5
  173. package/docs/components/inner-label-field.md +34 -24
  174. package/docs/components/input-field.md +18 -10
  175. package/docs/components/input-otp.md +14 -11
  176. package/docs/components/input.md +22 -16
  177. package/docs/components/kanban-view.md +15 -5
  178. package/docs/components/label-field.md +32 -22
  179. package/docs/components/label.md +43 -32
  180. package/docs/components/labeled-check-box.md +16 -8
  181. package/docs/components/labeled-radio.md +18 -11
  182. package/docs/components/link-button.md +7 -1
  183. package/docs/components/login-button.md +8 -2
  184. package/docs/components/password-level.md +37 -24
  185. package/docs/components/popover.md +26 -23
  186. package/docs/components/profile-menu.md +38 -27
  187. package/docs/components/radio-card.md +16 -9
  188. package/docs/components/radio.md +16 -8
  189. package/docs/components/scroll-area.md +6 -2
  190. package/docs/components/search-field.md +14 -6
  191. package/docs/components/searchable-select.md +19 -14
  192. package/docs/components/searchable-table.md +60 -41
  193. package/docs/components/searchable-tree-dialog.md +190 -0
  194. package/docs/components/searchable-tree.md +200 -0
  195. package/docs/components/section-block.md +130 -4
  196. package/docs/components/select.md +23 -18
  197. package/docs/components/simple-select.md +14 -10
  198. package/docs/components/skeleton.md +43 -33
  199. package/docs/components/slide-date-picker.md +37 -29
  200. package/docs/components/spin-loading.md +32 -23
  201. package/docs/components/stepper.md +6 -0
  202. package/docs/components/switch.md +14 -6
  203. package/docs/components/tab-form-item.md +7 -1
  204. package/docs/components/tab-switch.md +13 -6
  205. package/docs/components/table-dnd-wrapper.md +105 -0
  206. package/docs/components/table-view.md +15 -5
  207. package/docs/components/table.md +28 -28
  208. package/docs/components/text-editor.md +19 -13
  209. package/docs/components/textarea.md +15 -7
  210. package/docs/components/timeline.md +6 -0
  211. package/docs/components/toast.md +35 -26
  212. package/docs/components/toggle-button.md +24 -21
  213. package/docs/components/toggle.md +23 -15
  214. package/docs/components/tooltip.md +42 -30
  215. package/docs/components/transparent-label.md +29 -20
  216. package/docs/components/tree-drop-down.md +31 -23
  217. package/docs/components/tree-sub-layout.md +6 -2
  218. package/docs/components/tree-view.md +16 -5
  219. package/docs/explanation/architecture.md +54 -0
  220. package/docs/explanation/design-system.md +52 -0
  221. package/docs/how-to/data-views-from-backend-response.md +7 -4
  222. package/docs/how-to/guides.md +24 -18
  223. package/docs/migration/changelog.md +38 -0
  224. package/docs/reference/cli.md +87 -0
  225. package/docs/reference/components.md +11 -12
  226. package/docs/reference/hooks.md +8 -8
  227. package/docs/reference/providers.md +22 -22
  228. package/docs/reference/tailwind-plugins.md +2 -2
  229. package/docs/reference/theme.md +85 -0
  230. package/docs/reference/types.md +4 -4
  231. package/docs/reference/utilities.md +19 -26
  232. package/docs/tutorials/building-first-form.md +20 -13
  233. package/docs/tutorials/component-composition.md +34 -50
  234. package/docs/tutorials/getting-started.md +2 -2
  235. package/docs/tutorials/theming-basics.md +13 -10
  236. package/package.json +31 -3
  237. package/dist/src/commands/block.d.ts +0 -5
  238. package/dist/src/commands/block.d.ts.map +0 -1
  239. package/dist/src/commands/block.js +0 -255
  240. package/dist/src/commands/block.js.map +0 -1
  241. package/dist/src/shared/configureFonts.d.ts +0 -6
  242. package/dist/src/shared/configureFonts.d.ts.map +0 -1
  243. package/dist/src/shared/configureFonts.js +0 -106
  244. package/dist/src/shared/configureFonts.js.map +0 -1
  245. package/dist/src/shared/configureGlobalCss.d.ts +0 -6
  246. package/dist/src/shared/configureGlobalCss.d.ts.map +0 -1
  247. package/dist/src/shared/configureGlobalCss.js +0 -154
  248. package/dist/src/shared/configureGlobalCss.js.map +0 -1
  249. package/dist/src/shared/configureTailwind.d.ts +0 -7
  250. package/dist/src/shared/configureTailwind.d.ts.map +0 -1
  251. package/dist/src/shared/configureTailwind.js +0 -163
  252. package/dist/src/shared/configureTailwind.js.map +0 -1
  253. package/dist/src/shared/detectFramework.d.ts +0 -23
  254. package/dist/src/shared/detectFramework.d.ts.map +0 -1
  255. package/dist/src/shared/detectFramework.js +0 -119
  256. package/dist/src/shared/detectFramework.js.map +0 -1
  257. package/dist/src/shared/installBaseUtils.d.ts +0 -5
  258. package/dist/src/shared/installBaseUtils.d.ts.map +0 -1
  259. package/dist/src/shared/installBaseUtils.js +0 -79
  260. package/dist/src/shared/installBaseUtils.js.map +0 -1
  261. package/dist/src/shared/resolveAliases.d.ts +0 -24
  262. package/dist/src/shared/resolveAliases.d.ts.map +0 -1
  263. package/dist/src/shared/resolveAliases.js +0 -98
  264. package/dist/src/shared/resolveAliases.js.map +0 -1
@@ -1,68 +1,61 @@
1
- import type React from "react"
1
+ import type React from "react";
2
2
 
3
- export type ViewType = "table" | "kanban" | "inbox" | "tree"
3
+ export type ViewType = "table" | "kanban" | "inbox" | "tree";
4
4
 
5
5
  export type TreeConfig = {
6
- childrenField?: string
7
- parentField?: string
8
- idField?: string
9
- orderField?: string
10
- nodeLabel?: string
11
- defaultExpanded?: "all" | "roots" | "none"
6
+ childrenField?: string;
7
+ parentField?: string;
8
+ idField?: string;
9
+ orderField?: string;
10
+ nodeLabel?: string;
11
+ defaultExpanded?: "all" | "roots" | "none";
12
12
  /** Right-pane mode for the selected tree node. `"details"` is accepted as a
13
13
  * deprecated alias of `"card"` for backward compatibility. */
14
- defaultRightPane?: "table" | "card" | "details"
15
- dndEnabled?: boolean
16
- }
14
+ defaultRightPane?: "table" | "card" | "details";
15
+ dndEnabled?: boolean;
16
+ };
17
17
 
18
18
  export type ViewVisibility = {
19
- table?: boolean
20
- kanban?: boolean
21
- inbox?: boolean
22
- tree?: boolean
23
- }
19
+ table?: boolean;
20
+ kanban?: boolean;
21
+ inbox?: boolean;
22
+ tree?: boolean;
23
+ };
24
24
 
25
- export type DynamicRecord = Record<string, any>
25
+ export type DynamicRecord = Record<string, unknown>;
26
26
 
27
27
  export type DynamicColumnConfig = {
28
- id: string
29
- label: string
30
- visible: boolean
31
- order: number
32
- type?: "text" | "number" | "date" | "badge" | "array" | "boolean"
33
- render?: (value: any, row: DynamicRecord) => React.ReactNode
34
- }
28
+ id: string;
29
+ label: string;
30
+ visible: boolean;
31
+ order: number;
32
+ type?: "text" | "number" | "date" | "badge" | "array" | "boolean";
33
+ render?: (value: unknown, row: DynamicRecord) => React.ReactNode;
34
+ };
35
35
 
36
36
  export type DynamicFilterConfig = {
37
- id: string
38
- label?: string
39
- enabled?: boolean
40
- order?: number
41
- options?: string[] | { label: string; value: string }[]
42
- render?: (value: string, isSelected: boolean) => React.ReactNode
43
- onChange?: (selectedValues: string[]) => void
44
- }
45
-
46
- export type NumericRangeFilter = { kind: "number"; min?: number; max?: number }
47
- export type DateRangeFilter = { kind: "date"; from?: string; to?: string }
48
- export type RangeFilter = NumericRangeFilter | DateRangeFilter
49
- export type FilterValue = string[] | RangeFilter
50
- export type FilterState = Record<string, FilterValue>
37
+ id: string;
38
+ label?: string;
39
+ enabled?: boolean;
40
+ order?: number;
41
+ options?: string[] | { label: string; value: string }[];
42
+ render?: (value: string, isSelected: boolean) => React.ReactNode;
43
+ onChange?: (selectedValues: string[]) => void;
44
+ };
45
+
46
+ export type NumericRangeFilter = { kind: "number"; min?: number; max?: number };
47
+ export type DateRangeFilter = { kind: "date"; from?: string; to?: string };
48
+ export type RangeFilter = NumericRangeFilter | DateRangeFilter;
49
+ export type FilterValue = string[] | RangeFilter;
50
+ export type FilterState = Record<string, FilterValue>;
51
51
 
52
52
  export type FieldPreset =
53
- | { label: string; min?: number; max?: number }
54
- | { label: string; from?: string; to?: string }
53
+ { label: string; min?: number; max?: number } | { label: string; from?: string; to?: string };
55
54
 
56
55
  // Palette keys for the Kanban column header pill. Kept in lockstep with
57
56
  // `COLUMN_PALETTE` in KanbanView.tsx so consumers can pick a color per status
58
57
  // via `FieldConfig.kanbanVariants`.
59
- export type KanbanColumnColor =
60
- | "gray"
61
- | "purple"
62
- | "orange"
63
- | "blue"
64
- | "green"
65
- | "red"
58
+ export type KanbanColumnColor = "gray" | "purple" | "orange" | "blue" | "green" | "red";
66
59
 
67
60
  export type BadgeVariant =
68
61
  | "green"
@@ -77,7 +70,7 @@ export type BadgeVariant =
77
70
  | "blue"
78
71
  | "navy"
79
72
  | "gray"
80
- | "highlight"
73
+ | "highlight";
81
74
 
82
75
  export type FieldType =
83
76
  | "text"
@@ -96,104 +89,108 @@ export type FieldType =
96
89
  | "avatar"
97
90
  | "link"
98
91
  | "image"
99
- | "date-format"
92
+ | "date-format";
100
93
 
101
94
  export type CurrencyOptions = {
102
- symbol?: string
103
- locale?: string
104
- decimals?: number
105
- code?: string
106
- }
95
+ symbol?: string;
96
+ locale?: string;
97
+ decimals?: number;
98
+ code?: string;
99
+ };
107
100
 
108
101
  export type FieldConfig = {
109
- path: string
110
- label?: string
111
- type?: FieldType
112
- visible?: boolean
113
- order?: number
102
+ path: string;
103
+ label?: string;
104
+ type?: FieldType;
105
+ visible?: boolean;
106
+ order?: number;
114
107
 
115
- variants?: Record<string, BadgeVariant>
116
- defaultVariant?: BadgeVariant
108
+ variants?: Record<string, BadgeVariant>;
109
+ defaultVariant?: BadgeVariant;
117
110
 
118
111
  // Per-status overrides for the Kanban board view. Keys must match
119
112
  // `variants` keys (or any value present in the data). Lets consumers set a
120
113
  // human-friendly column title and pick a column pill color without affecting
121
114
  // the badge color used elsewhere.
122
- kanbanVariants?: Record<
123
- string,
124
- { label?: string; color?: KanbanColumnColor }
125
- >
115
+ kanbanVariants?: Record<string, { label?: string; color?: KanbanColumnColor }>;
126
116
 
117
+ variant?: BadgeVariant;
118
+ limit?: number;
127
119
 
128
- variant?: BadgeVariant
129
- limit?: number
120
+ currency?: string | CurrencyOptions;
121
+ format?: Intl.NumberFormatOptions;
130
122
 
131
- currency?: string | CurrencyOptions
132
- format?: Intl.NumberFormatOptions
123
+ thresholds?: [number, number];
133
124
 
134
- thresholds?: [number, number]
125
+ max?: number;
135
126
 
136
- max?: number
127
+ icon?: string;
128
+ iconPosition?: "before" | "after";
137
129
 
138
- icon?: string
139
- iconPosition?: "before" | "after"
130
+ secondaryPath?: string;
140
131
 
141
- secondaryPath?: string
132
+ linkType?: "mailto" | "tel" | "url";
142
133
 
143
- linkType?: "mailto" | "tel" | "url"
134
+ fallbackPath?: string;
144
135
 
145
- fallbackPath?: string
136
+ dateFormat?: string | Intl.DateTimeFormatOptions;
146
137
 
147
- dateFormat?: string | Intl.DateTimeFormatOptions
138
+ trueLabel?: string;
139
+ falseLabel?: string;
140
+ trueVariant?: BadgeVariant;
141
+ falseVariant?: BadgeVariant;
148
142
 
149
- trueLabel?: string
150
- falseLabel?: string
151
- trueVariant?: BadgeVariant
152
- falseVariant?: BadgeVariant
153
-
154
- filterable?: boolean
155
- filterLabel?: string
156
- filterOptions?: string[] | { label: string; value: string }[]
143
+ filterable?: boolean;
144
+ filterLabel?: string;
145
+ filterOptions?: string[] | { label: string; value: string }[];
157
146
  /**
158
147
  * Categorical filter selection mode.
159
148
  * - "multi" (default): checkboxes, multi-select. FilterValue is the array of picked options.
160
149
  * - "single": radios, single-select. FilterValue is a 1-element array.
161
150
  */
162
- filterMode?: "single" | "multi"
163
- presets?: FieldPreset[]
164
- rangeMin?: number
165
- rangeMax?: number
166
- rangeStep?: number
167
- onFilterChange?: (value: FilterValue) => void
151
+ filterMode?: "single" | "multi";
152
+ /**
153
+ * Categorical filter control style.
154
+ * - "checkbox" (default): inline list of checkboxes (multi) or radios (single).
155
+ * - "searchable-select": a single-select SearchableSelect dropdown — useful
156
+ * when a field has many options. Implies single-select; the FilterValue is
157
+ * a 1-element array (or empty when cleared).
158
+ */
159
+ filterVariant?: "checkbox" | "searchable-select";
160
+ presets?: FieldPreset[];
161
+ rangeMin?: number;
162
+ rangeMax?: number;
163
+ rangeStep?: number;
164
+ onFilterChange?: (value: FilterValue) => void;
168
165
 
169
- render?: (value: any, row: DynamicRecord) => React.ReactNode
170
- }
166
+ render?: (value: unknown, row: DynamicRecord) => React.ReactNode;
167
+ };
171
168
 
172
169
  export type InboxConfig = {
173
- starredField?: string | null
174
- readField?: string | null
175
- attachmentField?: string | null
176
- priorityField?: string | null
177
- titlePath?: string
178
- previewPath?: string
179
- }
170
+ starredField?: string | null;
171
+ readField?: string | null;
172
+ attachmentField?: string | null;
173
+ priorityField?: string | null;
174
+ titlePath?: string;
175
+ previewPath?: string;
176
+ };
180
177
 
181
178
  export type ColumnConfig = {
182
- id: string
183
- label: string
184
- visible: boolean
185
- order: number
186
- }
179
+ id: string;
180
+ label: string;
181
+ visible: boolean;
182
+ order: number;
183
+ };
187
184
 
188
185
  export type ViewConfig = {
189
- defaultView: ViewType
190
- tableColumns: ColumnConfig[]
191
- kanbanGroupBy: string
192
- showFilters: boolean
193
- showPreviewPane: boolean
194
- sortBy: string
195
- sortOrder: "asc" | "desc"
196
- }
186
+ defaultView: ViewType;
187
+ tableColumns: ColumnConfig[];
188
+ kanbanGroupBy: string;
189
+ showFilters: boolean;
190
+ showPreviewPane: boolean;
191
+ sortBy: string;
192
+ sortOrder: "asc" | "desc";
193
+ };
197
194
 
198
195
  export const defaultConfig: ViewConfig = {
199
196
  defaultView: "table",
@@ -203,4 +200,4 @@ export const defaultConfig: ViewConfig = {
203
200
  showPreviewPane: true,
204
201
  sortBy: "",
205
202
  sortOrder: "desc",
206
- }
203
+ };