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,12 +1,6 @@
1
1
  "use client";
2
2
 
3
- import React, {
4
- forwardRef,
5
- HTMLAttributes,
6
- ReactNode,
7
- createContext,
8
- useContext,
9
- } from "react";
3
+ import React, { forwardRef, HTMLAttributes, ReactNode, createContext, useContext } from "react";
10
4
  import { cva, type VariantProps } from "class-variance-authority";
11
5
  import { cn } from "../utils/cn";
12
6
  import { Themes } from "../utils/types";
@@ -41,25 +35,14 @@ const stepperStyles = cva(["flex gap-0"], {
41
35
  },
42
36
  });
43
37
 
44
- interface StepperProps
45
- extends HTMLAttributes<HTMLDivElement>, VariantProps<typeof stepperStyles> {
38
+ interface StepperProps extends HTMLAttributes<HTMLDivElement>, VariantProps<typeof stepperStyles> {
46
39
  theme?: Themes;
47
40
  activeStep?: number;
48
41
  size?: "S" | "M" | "L";
49
42
  }
50
43
 
51
44
  const Stepper = forwardRef<HTMLDivElement, StepperProps>(
52
- (
53
- {
54
- className,
55
- orientation = "horizontal",
56
- theme,
57
- activeStep = 0,
58
- size = "M",
59
- ...props
60
- },
61
- ref,
62
- ) => (
45
+ ({ className, orientation = "horizontal", theme, activeStep = 0, size = "M", ...props }, ref) => (
63
46
  <StepperContext.Provider
64
47
  value={{
65
48
  activeStep,
@@ -89,18 +72,7 @@ interface StepProps extends HTMLAttributes<HTMLDivElement> {
89
72
  }
90
73
 
91
74
  const Step = forwardRef<HTMLDivElement, StepProps>(
92
- (
93
- {
94
- className,
95
- index = 0,
96
- isCompleted,
97
- isActive,
98
- isError,
99
- children,
100
- ...props
101
- },
102
- ref,
103
- ) => {
75
+ ({ className, index = 0, isCompleted, isActive, isError, children, ...props }, ref) => {
104
76
  const { activeStep, orientation } = useStepperContext();
105
77
 
106
78
  const computedActive = isActive ?? index === activeStep;
@@ -116,16 +88,14 @@ const Step = forwardRef<HTMLDivElement, StepProps>(
116
88
  data-orientation={orientation}
117
89
  className={cn(
118
90
  "flex group/step",
119
- orientation === "horizontal"
120
- ? "shrink-0 flex-col items-center gap-2"
121
- : "flex-row gap-3",
91
+ orientation === "horizontal" ? "shrink-0 flex-col items-center gap-2" : "flex-row gap-3",
122
92
  className,
123
93
  )}
124
94
  {...props}
125
95
  >
126
96
  {React.Children.map(children, (child) => {
127
97
  if (!React.isValidElement(child)) return child;
128
- return React.cloneElement(child as React.ReactElement<any>, {
98
+ return React.cloneElement(child as React.ReactElement<Record<string, unknown>>, {
129
99
  _active: computedActive,
130
100
  _completed: computedCompleted,
131
101
  _error: computedError,
@@ -213,13 +183,7 @@ const StepIndicator = forwardRef<HTMLDivElement, StepIndicatorProps>(
213
183
  ) => {
214
184
  const { size } = useStepperContext();
215
185
 
216
- const state = _error
217
- ? "error"
218
- : _completed
219
- ? "completed"
220
- : _active
221
- ? "active"
222
- : "pending";
186
+ const state = _error ? "error" : _completed ? "completed" : _active ? "active" : "pending";
223
187
 
224
188
  const renderContent = () => {
225
189
  if (_error && errorIcon) return errorIcon;
@@ -232,11 +196,7 @@ const StepIndicator = forwardRef<HTMLDivElement, StepIndicatorProps>(
232
196
  };
233
197
 
234
198
  return (
235
- <div
236
- ref={ref}
237
- className={cn(stepIndicatorStyles({ state, size }), className)}
238
- {...props}
239
- >
199
+ <div ref={ref} className={cn(stepIndicatorStyles({ state, size }), className)} {...props}>
240
200
  {renderContent()}
241
201
  </div>
242
202
  );
@@ -277,10 +237,8 @@ interface StepConnectorProps extends HTMLAttributes<HTMLDivElement> {
277
237
  }
278
238
 
279
239
  const StepConnector = forwardRef<HTMLDivElement, StepConnectorProps>(
280
- (
281
- { className, _completed, _active: _a, _error: _e, _index: _i, ...props },
282
- ref,
283
- ) => {
240
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars -- excluded from {...props} spread
241
+ ({ className, _completed, _active: _a, _error: _e, _index: _i, ...props }, ref) => {
284
242
  const { orientation } = useStepperContext();
285
243
 
286
244
  return (
@@ -310,6 +268,7 @@ interface StepLabelProps extends HTMLAttributes<HTMLDivElement> {
310
268
  }
311
269
 
312
270
  const StepLabel = forwardRef<HTMLDivElement, StepLabelProps>(
271
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars -- excluded from {...props} spread
313
272
  ({ className, _active, _completed, _error, _index: _i, ...props }, ref) => (
314
273
  <div
315
274
  ref={ref}
@@ -340,10 +299,8 @@ interface StepDescriptionProps extends HTMLAttributes<HTMLDivElement> {
340
299
  }
341
300
 
342
301
  const StepDescription = forwardRef<HTMLDivElement, StepDescriptionProps>(
343
- (
344
- { className, _active, _completed: _c, _error: _e, _index: _i, ...props },
345
- ref,
346
- ) => (
302
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars -- excluded from {...props} spread
303
+ ({ className, _active, _completed: _c, _error: _e, _index: _i, ...props }, ref) => (
347
304
  <div
348
305
  ref={ref}
349
306
  className={cn(
@@ -1,6 +1,6 @@
1
- 'use client'
1
+ "use client";
2
2
  import { cn } from "../utils/cn";
3
- import * as SwitchPrimitives from "@radix-ui/react-switch"
3
+ import * as SwitchPrimitives from "@radix-ui/react-switch";
4
4
  import React from "react";
5
5
 
6
6
  const Switch = React.forwardRef<
@@ -10,7 +10,7 @@ const Switch = React.forwardRef<
10
10
  <SwitchPrimitives.Root
11
11
  className={cn(
12
12
  "peer inline-flex w-[48px] h-[27px] shrink-0 cursor-pointer items-center rounded-[20px] border-2 border-transparent shadow-sm transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-background-presentation-switcher-active data-[state=unchecked]:bg-background-presentation-switcher-disabled",
13
- className
13
+ className,
14
14
  )}
15
15
  {...props}
16
16
  ref={ref}
@@ -19,16 +19,14 @@ const Switch = React.forwardRef<
19
19
  className={cn(
20
20
  "pointer-events-none block w-[24px] h-[24px] rounded-full bg-background-presentation-switcher-knob shadow-lg ring-0 transition-transform",
21
21
  "data-[state=checked]:translate-x-[21px] data-[state=unchecked]:translate-x-0",
22
- "rtl:data-[state=checked]:-translate-x-[21px] rtl:data-[state=unchecked]:translate-x-0"
22
+ "rtl:data-[state=checked]:-translate-x-[21px] rtl:data-[state=unchecked]:translate-x-0",
23
23
  )}
24
24
  />
25
25
  </SwitchPrimitives.Root>
26
- ))
27
- Switch.displayName = SwitchPrimitives.Root.displayName
28
-
29
- export { Switch }
30
-
26
+ ));
27
+ Switch.displayName = SwitchPrimitives.Root.displayName;
31
28
 
29
+ export { Switch };
32
30
 
33
31
  /* interface Props extends ButtonHTMLAttributes<HTMLButtonElement> {
34
32
  active: boolean;
@@ -81,4 +79,4 @@ function Switchers({
81
79
  )}
82
80
  </section>
83
81
  );
84
- } */
82
+ } */
@@ -12,7 +12,6 @@ interface Props extends ButtonHTMLAttributes<HTMLButtonElement> {
12
12
  as?: React.ElementType;
13
13
  }
14
14
 
15
-
16
15
  const TabFormItem: React.FC<Props> = ({
17
16
  componentType,
18
17
  active,
@@ -23,17 +22,13 @@ const TabFormItem: React.FC<Props> = ({
23
22
  as: Tag = "button",
24
23
  ...props
25
24
  }) => {
26
-
27
25
  const Component = asChild ? Slot : Tag;
28
26
 
29
27
  return (
30
28
  <Component
31
29
  data-theme={theme}
32
30
  {...props}
33
- className={cn(
34
- formBarItemStyles({ componentType, active, buttonType }),
35
- className
36
- )}
31
+ className={cn(formBarItemStyles({ componentType, active, buttonType }), className)}
37
32
  >
38
33
  {props.children}
39
34
  </Component>
@@ -42,9 +37,6 @@ const TabFormItem: React.FC<Props> = ({
42
37
 
43
38
  export default TabFormItem;
44
39
 
45
-
46
-
47
-
48
40
  export const formBarItemStyles = cva(
49
41
  [
50
42
  "flex",
@@ -156,7 +148,6 @@ export const formBarItemStyles = cva(
156
148
  "text-content-presentation-tab-action-selected hover:text-content-presentation-tab-action-selected",
157
149
  ],
158
150
  },
159
-
160
151
  ],
161
- }
162
- );
152
+ },
153
+ );
@@ -59,21 +59,9 @@ const optionStyles = cva(
59
59
  {
60
60
  variants: {
61
61
  size: {
62
- S: [
63
- "h-5 px-2 text-[12px]",
64
- "[&_svg]:h-3 [&_svg]:w-3",
65
- "[&_i]:text-[12px]",
66
- ],
67
- M: [
68
- "h-6 px-3 text-[14px]",
69
- "[&_svg]:h-[14px] [&_svg]:w-[14px]",
70
- "[&_i]:text-[14px]",
71
- ],
72
- L: [
73
- "h-8 px-4 text-[16px]",
74
- "[&_svg]:h-4 [&_svg]:w-4",
75
- "[&_i]:text-[16px]",
76
- ],
62
+ S: ["h-5 px-2 text-[12px]", "[&_svg]:h-3 [&_svg]:w-3", "[&_i]:text-[12px]"],
63
+ M: ["h-6 px-3 text-[14px]", "[&_svg]:h-[14px] [&_svg]:w-[14px]", "[&_i]:text-[14px]"],
64
+ L: ["h-8 px-4 text-[16px]", "[&_svg]:h-4 [&_svg]:w-4", "[&_i]:text-[16px]"],
77
65
  },
78
66
  active: {
79
67
  // Active option = a solid raised WHITE pill with dark text, in every
@@ -102,9 +90,7 @@ const optionStyles = cva(
102
90
  );
103
91
 
104
92
  interface Props<T extends string = string>
105
- extends
106
- Omit<React.HTMLAttributes<HTMLDivElement>, "onChange">,
107
- VariantProps<typeof trackStyles> {
93
+ extends Omit<React.HTMLAttributes<HTMLDivElement>, "onChange">, VariantProps<typeof trackStyles> {
108
94
  options: TabSwitchOption<T>[];
109
95
  /** Controlled selected value. */
110
96
  value: T;
@@ -114,16 +100,7 @@ interface Props<T extends string = string>
114
100
  }
115
101
 
116
102
  function TabSwitchInner<T extends string = string>(
117
- {
118
- options,
119
- value,
120
- onValueChange,
121
- size,
122
- theme,
123
- disabled,
124
- className,
125
- ...props
126
- }: Props<T>,
103
+ { options, value, onValueChange, size, theme, disabled, className, ...props }: Props<T>,
127
104
  ref: React.ForwardedRef<HTMLDivElement>,
128
105
  ) {
129
106
  return (
@@ -157,9 +134,7 @@ function TabSwitchInner<T extends string = string>(
157
134
  className={cn(optionStyles({ size, active }))}
158
135
  >
159
136
  {option.icon && (
160
- <span className="flex items-center justify-center">
161
- {option.icon}
162
- </span>
137
+ <span className="flex items-center justify-center">{option.icon}</span>
163
138
  )}
164
139
  {option.label}
165
140
  </button>
@@ -171,9 +146,7 @@ function TabSwitchInner<T extends string = string>(
171
146
  }
172
147
 
173
148
  // forwardRef loses the generic, so we cast to preserve `<TabSwitch<T> />` typing.
174
- export const TabSwitch = forwardRef(TabSwitchInner) as <
175
- T extends string = string,
176
- >(
149
+ export const TabSwitch = forwardRef(TabSwitchInner) as <T extends string = string>(
177
150
  props: Props<T> & { ref?: React.ForwardedRef<HTMLDivElement> },
178
151
  ) => ReturnType<typeof TabSwitchInner>;
179
152
 
@@ -18,10 +18,7 @@ const Table = React.forwardRef<
18
18
  <table
19
19
  data-theme={theme}
20
20
  ref={ref}
21
- className={cn(
22
- "overflow-hidden w-auto [border-collapse:separate] border-spacing-0",
23
- className,
24
- )}
21
+ className={cn("overflow-hidden w-auto [border-collapse:separate] border-spacing-0", className)}
25
22
  {...props}
26
23
  >
27
24
  {props.children}
@@ -54,9 +51,7 @@ TableBody.displayName = "TableBody";
54
51
  const TableFooter = React.forwardRef<
55
52
  HTMLTableSectionElement,
56
53
  React.HTMLAttributes<HTMLTableSectionElement>
57
- >(({ className, ...props }, ref) => (
58
- <tfoot ref={ref} className={cn(className)} {...props} />
59
- ));
54
+ >(({ className, ...props }, ref) => <tfoot ref={ref} className={cn(className)} {...props} />);
60
55
  TableFooter.displayName = "TableFooter";
61
56
 
62
57
  const TableRow = React.forwardRef<
@@ -103,68 +98,61 @@ TableRow.displayName = "TableRow";
103
98
  const TableHead = React.forwardRef<
104
99
  HTMLTableCellElement,
105
100
  React.ThHTMLAttributes<HTMLTableCellElement> &
106
- TableHeadVariantsProps &
107
- React.ButtonHTMLAttributes<HTMLButtonElement> & {
108
- sortType?: "asc" | "desc" | undefined;
109
- onSort?: () => void;
110
- isDummy?: boolean;
111
- }
112
- >(
113
- (
114
- { className, size = "M", disabled, sortType, onSort, isDummy, ...props },
115
- forwardedRef,
116
- ) => {
117
- const headRef = useRef<any>(null);
118
- const { width, handleStartResize } = useResize(headRef);
101
+ TableHeadVariantsProps &
102
+ React.ButtonHTMLAttributes<HTMLButtonElement> & {
103
+ sortType?: "asc" | "desc" | undefined;
104
+ onSort?: () => void;
105
+ isDummy?: boolean;
106
+ }
107
+ >(({ className, size = "M", disabled, sortType, onSort, isDummy, ...props }, forwardedRef) => {
108
+ const headRef = useRef<HTMLTableCellElement>(null);
109
+ const { width, handleStartResize } = useResize(headRef as React.RefObject<HTMLElement>);
119
110
 
120
- // Combine refs using useEffect
121
- React.useEffect(() => {
122
- if (!forwardedRef) return;
123
- if (typeof forwardedRef === "function") forwardedRef(headRef.current);
124
- else forwardedRef.current = headRef.current;
125
- }, [forwardedRef]);
111
+ // Combine refs using useEffect
112
+ React.useEffect(() => {
113
+ if (!forwardedRef) return;
114
+ if (typeof forwardedRef === "function") forwardedRef(headRef.current);
115
+ else forwardedRef.current = headRef.current;
116
+ }, [forwardedRef]);
126
117
 
127
- return (
128
- <th
129
- ref={headRef}
118
+ return (
119
+ <th
120
+ ref={headRef}
121
+ className={cn(
122
+ "relative py-[6px] px-[4px] border-b-[2px] border-border-presentation-table-header",
123
+ )}
124
+ >
125
+ <div
126
+ {...props}
130
127
  className={cn(
131
- "relative py-[6px] px-[4px] border-b-[2px] border-border-presentation-table-header",
128
+ tableHeadVariants({ size, disabled, isDummy }),
129
+ { "min-w-[100px]": !isDummy },
130
+ className,
132
131
  )}
133
132
  >
134
133
  <div
135
- {...props}
136
- className={cn(
137
- tableHeadVariants({ size, disabled, isDummy }),
138
- { "min-w-[100px]": !isDummy },
139
- className,
140
- )}
134
+ style={{ width: `${width}px` }}
135
+ className={cn("flex items-center justify-between flex-1", {
136
+ "justify-center": isDummy,
137
+ })}
141
138
  >
142
- <div
143
- style={{ width: `${width}px` }}
144
- className={cn("flex items-center justify-between flex-1", {
145
- "justify-center": isDummy,
146
- })}
147
- >
148
- {props.children}
149
- {isDummy || !onSort ? null : (
150
- <SortButton onSort={onSort} sortType={sortType} />
151
- )}
152
- </div>
139
+ {props.children}
140
+ {isDummy || !onSort ? null : <SortButton onSort={onSort} sortType={sortType} />}
153
141
  </div>
154
- <button
155
- disabled={isDummy}
156
- className="absolute top-[50%] translate-y-[-50%] right-[-1px] rtl:left-[-1px] rtl:right-[unset] h-[20px] w-[2px] rounded-full bg-border-presentation-action-primary"
157
- >
158
- <ResizeIcon
159
- className={cn({ "!opacity-0 cursor-default": isDummy })}
160
- onMouseDown={handleStartResize}
161
- onTouchStart={handleStartResize}
162
- />
163
- </button>
164
- </th>
165
- );
166
- },
167
- );
142
+ </div>
143
+ <button
144
+ disabled={isDummy}
145
+ className="absolute top-[50%] translate-y-[-50%] right-[-1px] rtl:left-[-1px] rtl:right-[unset] h-[20px] w-[2px] rounded-full bg-border-presentation-action-primary"
146
+ >
147
+ <ResizeIcon
148
+ className={cn({ "!opacity-0 cursor-default": isDummy })}
149
+ onMouseDown={handleStartResize}
150
+ onTouchStart={handleStartResize}
151
+ />
152
+ </button>
153
+ </th>
154
+ );
155
+ });
168
156
  TableHead.displayName = "TableHead";
169
157
 
170
158
  const TableCell = React.forwardRef<
@@ -209,6 +197,7 @@ const TableCheckbox = React.forwardRef<
209
197
  React.ButtonHTMLAttributes<HTMLButtonElement> & {
210
198
  id: string;
211
199
  }
200
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars -- id destructured to exclude it from the props spread onto Checkbox
212
201
  >(({ className, id, ...props }, ref) => {
213
202
  return (
214
203
  <div className={cn(["flex items-center justify-center"], className)}>
@@ -222,11 +211,7 @@ const TableCaption = React.forwardRef<
222
211
  HTMLTableCaptionElement,
223
212
  React.HTMLAttributes<HTMLTableCaptionElement>
224
213
  >(({ className, ...props }, ref) => (
225
- <caption
226
- ref={ref}
227
- className={cn("mt-4 text-sm text-muted-foreground", className)}
228
- {...props}
229
- />
214
+ <caption ref={ref} className={cn("mt-4 text-sm text-muted-foreground", className)} {...props} />
230
215
  ));
231
216
  TableCaption.displayName = "TableCaption";
232
217
 
@@ -308,7 +293,13 @@ export {
308
293
  TableFooterButton,
309
294
  };
310
295
 
311
- const ResizeIcon = (props: any) => {
296
+ interface ResizeIconProps {
297
+ className?: string;
298
+ onMouseDown?: React.MouseEventHandler<SVGElement>;
299
+ onTouchStart?: React.TouchEventHandler<SVGElement>;
300
+ }
301
+
302
+ const ResizeIcon = (props: ResizeIconProps) => {
312
303
  return (
313
304
  <svg
314
305
  {...props}
@@ -343,10 +334,7 @@ const SortButton = ({
343
334
  sortType?: "asc" | "desc" | undefined;
344
335
  }) => {
345
336
  return (
346
- <button
347
- className={cn("cursor-pointer text-[16px] z-10")}
348
- onPointerDown={onSort}
349
- >
337
+ <button className={cn("cursor-pointer text-[16px] z-10")} onPointerDown={onSort}>
350
338
  {sortType === "asc" ? (
351
339
  <i className="ri-arrow-up-line text-border-presentation-state-focus" />
352
340
  ) : sortType === "desc" ? (
@@ -389,10 +377,7 @@ const tableHeadVariants = cva(
389
377
  ],
390
378
  },
391
379
  isDummy: {
392
- true: [
393
- "hover:bg-transparent",
394
- "hover:text-content-presentation-global-primary",
395
- ],
380
+ true: ["hover:bg-transparent", "hover:text-content-presentation-global-primary"],
396
381
  },
397
382
  defaultVariants: {
398
383
  size: "M",
@@ -27,9 +27,7 @@ interface DragState {
27
27
  startY: number;
28
28
  }
29
29
 
30
- export default function createTableDnDClass(
31
- OriginalTable: TableClass,
32
- ): TableClass {
30
+ export default function createTableDnDClass(OriginalTable: TableClass): TableClass {
33
31
  return class TableDnD extends OriginalTable {
34
32
  private _drag: DragState = {
35
33
  active: false,
@@ -101,9 +99,7 @@ export default function createTableDnDClass(
101
99
 
102
100
  // Proximity-based toolbox visibility:
103
101
  // Only show row handle near left edge, column handle near top edge
104
- wrapper.addEventListener("mousemove", (e) =>
105
- this._onWrapperMouseMove(e),
106
- );
102
+ wrapper.addEventListener("mousemove", (e) => this._onWrapperMouseMove(e));
107
103
  wrapper.addEventListener("mouseleave", () => {
108
104
  wrapper.classList.remove("tc-dnd--show-row", "tc-dnd--show-col");
109
105
  });
@@ -140,8 +136,7 @@ export default function createTableDnDClass(
140
136
  // ─── Proximity-based toolbox visibility ──────────────────────────────
141
137
 
142
138
  private _onWrapperMouseMove(e: MouseEvent): void {
143
- const tableEl =
144
- this._wrapperRef?.querySelector<HTMLElement>(".tc-table");
139
+ const tableEl = this._wrapperRef?.querySelector<HTMLElement>(".tc-table");
145
140
  if (!tableEl || !this._wrapperRef) return;
146
141
 
147
142
  const tableRect = tableEl.getBoundingClientRect();
@@ -172,20 +167,13 @@ export default function createTableDnDClass(
172
167
  this._wrapperRef.classList.add("tc-dnd--show-col");
173
168
  this._wrapperRef.classList.remove("tc-dnd--show-row");
174
169
  } else {
175
- this._wrapperRef.classList.remove(
176
- "tc-dnd--show-row",
177
- "tc-dnd--show-col",
178
- );
170
+ this._wrapperRef.classList.remove("tc-dnd--show-row", "tc-dnd--show-col");
179
171
  }
180
172
  }
181
173
 
182
174
  // ─── Toggler pointerdown (start pending drag) ───────────────────────
183
175
 
184
- private _onTogglerDown(
185
- type: "row" | "col",
186
- wrapper: HTMLElement,
187
- e: PointerEvent,
188
- ): void {
176
+ private _onTogglerDown(type: "row" | "col", wrapper: HTMLElement, e: PointerEvent): void {
189
177
  // Detect which row/col is currently hovered by the table plugin
190
178
  const index = this._detectHoveredIndex(type, wrapper);
191
179
  if (index < 0) return;
@@ -208,10 +196,7 @@ export default function createTableDnDClass(
208
196
 
209
197
  // ─── Detect hovered row/col index ───────────────────────────────────
210
198
 
211
- private _detectHoveredIndex(
212
- type: "row" | "col",
213
- wrapper: HTMLElement,
214
- ): number {
199
+ private _detectHoveredIndex(type: "row" | "col", wrapper: HTMLElement): number {
215
200
  const tableEl = wrapper.querySelector<HTMLElement>(".tc-table");
216
201
  if (!tableEl) return -1;
217
202
 
@@ -230,9 +215,7 @@ export default function createTableDnDClass(
230
215
  }
231
216
  return -1;
232
217
  } else {
233
- const toolbox = wrapper.querySelector<HTMLElement>(
234
- ".tc-toolbox--column",
235
- );
218
+ const toolbox = wrapper.querySelector<HTMLElement>(".tc-toolbox--column");
236
219
  if (!toolbox) return -1;
237
220
  const toolboxRect = toolbox.getBoundingClientRect();
238
221
  const toolboxMid = toolboxRect.left + toolboxRect.width / 2;
@@ -265,8 +248,7 @@ export default function createTableDnDClass(
265
248
  d.active = true;
266
249
 
267
250
  // Close any open popover from the table plugin
268
- const openPopover =
269
- this._wrapperRef?.querySelector<HTMLElement>(".tc-popover--opened");
251
+ const openPopover = this._wrapperRef?.querySelector<HTMLElement>(".tc-popover--opened");
270
252
  openPopover?.classList.remove("tc-popover--opened");
271
253
 
272
254
  this._highlight(d.type!, d.index, true);
@@ -338,13 +320,10 @@ export default function createTableDnDClass(
338
320
  // ─── Move Row / Column ──────────────────────────────────────────────
339
321
 
340
322
  private _moveRow(from: number, to: number): void {
341
- const tableEl =
342
- this._wrapperRef?.querySelector<HTMLElement>(".tc-table");
323
+ const tableEl = this._wrapperRef?.querySelector<HTMLElement>(".tc-table");
343
324
  if (!tableEl) return;
344
325
 
345
- const rows = Array.from(
346
- tableEl.querySelectorAll<HTMLElement>(".tc-row"),
347
- );
326
+ const rows = Array.from(tableEl.querySelectorAll<HTMLElement>(".tc-row"));
348
327
  if (from < 0 || from >= rows.length) return;
349
328
 
350
329
  const target = to > from ? to - 1 : to;
@@ -360,17 +339,14 @@ export default function createTableDnDClass(
360
339
  }
361
340
 
362
341
  private _moveCol(from: number, to: number): void {
363
- const tableEl =
364
- this._wrapperRef?.querySelector<HTMLElement>(".tc-table");
342
+ const tableEl = this._wrapperRef?.querySelector<HTMLElement>(".tc-table");
365
343
  if (!tableEl) return;
366
344
 
367
345
  const target = to > from ? to - 1 : to;
368
346
  if (target === from) return;
369
347
 
370
348
  tableEl.querySelectorAll<HTMLElement>(".tc-row").forEach((row) => {
371
- const cells = Array.from(
372
- row.querySelectorAll<HTMLElement>(".tc-cell"),
373
- );
349
+ const cells = Array.from(row.querySelectorAll<HTMLElement>(".tc-cell"));
374
350
  if (from >= cells.length) return;
375
351
 
376
352
  const cell = cells[from];
@@ -385,11 +361,7 @@ export default function createTableDnDClass(
385
361
 
386
362
  // ─── Drop Index Calc ────────────────────────────────────────────────
387
363
 
388
- private _calcDrop(
389
- wrapper: HTMLElement,
390
- cx: number,
391
- cy: number,
392
- ): number {
364
+ private _calcDrop(wrapper: HTMLElement, cx: number, cy: number): number {
393
365
  const tableEl = wrapper.querySelector<HTMLElement>(".tc-table");
394
366
  if (!tableEl) return this._drag.index;
395
367
 
@@ -414,13 +386,8 @@ export default function createTableDnDClass(
414
386
 
415
387
  // ─── Visual Feedback ────────────────────────────────────────────────
416
388
 
417
- private _highlight(
418
- type: "row" | "col",
419
- idx: number,
420
- on: boolean,
421
- ): void {
422
- const tableEl =
423
- this._wrapperRef?.querySelector<HTMLElement>(".tc-table");
389
+ private _highlight(type: "row" | "col", idx: number, on: boolean): void {
390
+ const tableEl = this._wrapperRef?.querySelector<HTMLElement>(".tc-table");
424
391
  if (!tableEl) return;
425
392
 
426
393
  if (type === "row") {