torch-glare 2.4.0 → 2.4.2

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 (318) 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 +1 -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 +21 -20
  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 +40 -24
  13. package/apps/lib/components/Checkbox.tsx +9 -16
  14. package/apps/lib/components/ColorPicker.tsx +441 -0
  15. package/apps/lib/components/ConclusionHeader.tsx +148 -0
  16. package/apps/lib/components/ContextMenu.tsx +97 -96
  17. package/apps/lib/components/CountBadge.tsx +4 -6
  18. package/apps/lib/components/DataTable.tsx +196 -216
  19. package/apps/lib/components/DataViews/DataViewRadio.tsx +1 -6
  20. package/apps/lib/components/DataViews/DataViewsConfigPanel.tsx +13 -47
  21. package/apps/lib/components/DataViews/DataViewsHeader.tsx +1 -3
  22. package/apps/lib/components/DataViews/DataViewsLayout.tsx +5 -12
  23. package/apps/lib/components/DataViews/FilterPanel.tsx +155 -149
  24. package/apps/lib/components/DataViews/HeaderSearch.tsx +1 -5
  25. package/apps/lib/components/DataViews/InboxView.tsx +22 -68
  26. package/apps/lib/components/DataViews/InboxViewCard.tsx +68 -77
  27. package/apps/lib/components/DataViews/KanbanView.tsx +8 -25
  28. package/apps/lib/components/DataViews/PanelControls.tsx +3 -13
  29. package/apps/lib/components/DataViews/SettingsPanel.tsx +83 -89
  30. package/apps/lib/components/DataViews/TableView.tsx +8 -28
  31. package/apps/lib/components/DataViews/TreeView.tsx +12 -40
  32. package/apps/lib/components/DataViews/badgeAdapter.ts +32 -28
  33. package/apps/lib/components/DataViews/fieldRenderers.tsx +106 -141
  34. package/apps/lib/components/DataViews/filters/DatePickerRangeFilter.tsx +30 -23
  35. package/apps/lib/components/DataViews/filters/DateRangePopover.tsx +39 -32
  36. package/apps/lib/components/DataViews/filters/PresetChips.tsx +15 -15
  37. package/apps/lib/components/DataViews/filters/RangeSliderWithInputs.tsx +69 -58
  38. package/apps/lib/components/DataViews/index.ts +26 -26
  39. package/apps/lib/components/DataViews/tree/TreeDrawer.tsx +12 -16
  40. package/apps/lib/components/DataViews/tree/TreeSidebar.tsx +28 -31
  41. package/apps/lib/components/DataViews/types.ts +104 -115
  42. package/apps/lib/components/DatePicker.tsx +200 -196
  43. package/apps/lib/components/Dialog.tsx +92 -105
  44. package/apps/lib/components/Divider.tsx +21 -24
  45. package/apps/lib/components/Drawer.tsx +124 -142
  46. package/apps/lib/components/DropdownMenu.tsx +131 -171
  47. package/apps/lib/components/FieldHint.tsx +4 -11
  48. package/apps/lib/components/Form.tsx +146 -155
  49. package/apps/lib/components/FormBuilder/DisplayField.tsx +40 -0
  50. package/apps/lib/components/FormBuilder/context.ts +71 -0
  51. package/apps/lib/components/FormBuilder/fields/ChoiceFields.tsx +65 -0
  52. package/apps/lib/components/FormBuilder/fields/ColorField.tsx +76 -0
  53. package/apps/lib/components/FormBuilder/fields/CustomField.tsx +16 -0
  54. package/apps/lib/components/FormBuilder/fields/DateField.tsx +34 -0
  55. package/apps/lib/components/FormBuilder/fields/FieldArray.tsx +79 -0
  56. package/apps/lib/components/FormBuilder/fields/FieldShell.tsx +174 -0
  57. package/apps/lib/components/FormBuilder/fields/FileField.tsx +40 -0
  58. package/apps/lib/components/FormBuilder/fields/OptionListFields.tsx +139 -0
  59. package/apps/lib/components/FormBuilder/fields/OtpField.tsx +32 -0
  60. package/apps/lib/components/FormBuilder/fields/PhoneField.tsx +82 -0
  61. package/apps/lib/components/FormBuilder/fields/RichTextEditorField.tsx +37 -0
  62. package/apps/lib/components/FormBuilder/fields/SelectField.tsx +101 -0
  63. package/apps/lib/components/FormBuilder/fields/SignatureField.tsx +175 -0
  64. package/apps/lib/components/FormBuilder/fields/SliderField.tsx +72 -0
  65. package/apps/lib/components/FormBuilder/fields/SwitchBoxField.tsx +42 -0
  66. package/apps/lib/components/FormBuilder/fields/TableField.tsx +312 -0
  67. package/apps/lib/components/FormBuilder/fields/TextField.tsx +222 -0
  68. package/apps/lib/components/FormBuilder/fields/TreeSelectField.tsx +49 -0
  69. package/apps/lib/components/FormBuilder/fields/countries.ts +303 -0
  70. package/apps/lib/components/FormBuilder/fields/index.ts +25 -0
  71. package/apps/lib/components/FormBuilder/form-builder.tsx +292 -0
  72. package/apps/lib/components/FormBuilder/header.tsx +105 -0
  73. package/apps/lib/components/FormBuilder/index.ts +37 -0
  74. package/apps/lib/components/FormBuilder/numberFormat.ts +16 -0
  75. package/apps/lib/components/FormBuilder/stepper.tsx +217 -0
  76. package/apps/lib/components/FormBuilder/submit.tsx +41 -0
  77. package/apps/lib/components/FormBuilder/types.ts +264 -0
  78. package/apps/lib/components/FormBuilder/viewFormat.tsx +137 -0
  79. package/apps/lib/components/FormRenderer/FormDrawer.tsx +121 -0
  80. package/apps/lib/components/FormRenderer/form-renderer.tsx +113 -0
  81. package/apps/lib/components/FormRenderer/index.ts +9 -0
  82. package/apps/lib/components/FormRenderer/types.ts +79 -0
  83. package/apps/lib/components/FormStepper.tsx +9 -39
  84. package/apps/lib/components/FormSummary.tsx +282 -0
  85. package/apps/lib/components/HeaderBar.tsx +1 -9
  86. package/apps/lib/components/ImageAttachment.tsx +106 -93
  87. package/apps/lib/components/InnerLabelField.tsx +20 -16
  88. package/apps/lib/components/Input.tsx +171 -172
  89. package/apps/lib/components/InputField.tsx +44 -45
  90. package/apps/lib/components/InputOTP.tsx +68 -69
  91. package/apps/lib/components/Label.tsx +61 -58
  92. package/apps/lib/components/LabelField.tsx +4 -5
  93. package/apps/lib/components/LabeledCheckBox.tsx +8 -12
  94. package/apps/lib/components/LabeledRadio.tsx +7 -5
  95. package/apps/lib/components/LinkButton.tsx +2 -9
  96. package/apps/lib/components/LoginButton.tsx +4 -9
  97. package/apps/lib/components/PasswordLevel.tsx +5 -5
  98. package/apps/lib/components/Popover.tsx +15 -33
  99. package/apps/lib/components/ProfileMenu.tsx +67 -72
  100. package/apps/lib/components/Radio.tsx +1 -5
  101. package/apps/lib/components/RadioCard.tsx +11 -28
  102. package/apps/lib/components/ScrollArea.tsx +45 -43
  103. package/apps/lib/components/SearchField.tsx +49 -39
  104. package/apps/lib/components/SearchableSelect.tsx +16 -16
  105. package/apps/lib/components/SearchableTable.tsx +108 -118
  106. package/apps/lib/components/SearchableTree.tsx +469 -0
  107. package/apps/lib/components/SearchableTreeDialog.tsx +493 -0
  108. package/apps/lib/components/SectionBlock.tsx +19 -23
  109. package/apps/lib/components/Select.tsx +80 -186
  110. package/apps/lib/components/SimpleSelect.tsx +196 -187
  111. package/apps/lib/components/Skeleton.tsx +9 -12
  112. package/apps/lib/components/SlideDatePicker.tsx +215 -166
  113. package/apps/lib/components/SpinLoading.tsx +33 -49
  114. package/apps/lib/components/Stepper.tsx +13 -56
  115. package/apps/lib/components/Switch.tsx +8 -10
  116. package/apps/lib/components/TabFormItem.tsx +3 -12
  117. package/apps/lib/components/TabSwitch.tsx +7 -34
  118. package/apps/lib/components/Table.tsx +60 -75
  119. package/apps/lib/components/{ChartBlockTool.ts → TextEditor/ChartBlockTool.ts} +17 -52
  120. package/apps/lib/components/TextEditor/RichTextField.tsx +46 -0
  121. package/apps/lib/components/{TableDnDWrapper.ts → TextEditor/TableDnDWrapper.ts} +15 -48
  122. package/apps/lib/components/{TextEditor.tsx → TextEditor/TextEditor.tsx} +156 -113
  123. package/apps/lib/components/TextEditor/TextEditorToolbar.tsx +429 -0
  124. package/apps/lib/components/TextEditor/editor-tools/AlignmentTune.ts +70 -0
  125. package/apps/lib/components/TextEditor/editor-tools/ColorInlineTool.ts +50 -0
  126. package/apps/lib/components/TextEditor/editor-tools/StrikethroughInlineTool.ts +48 -0
  127. package/apps/lib/components/TextEditor/editor-tools/inlineFormat.ts +98 -0
  128. package/apps/lib/{types → components/TextEditor}/editorjs.d.ts +19 -0
  129. package/apps/lib/components/TextEditor/index.ts +7 -0
  130. package/apps/lib/{utils → components/TextEditor}/markdownParser.ts +2 -7
  131. package/apps/lib/components/Textarea.tsx +9 -13
  132. package/apps/lib/components/Timeline.tsx +21 -41
  133. package/apps/lib/components/Toast.tsx +83 -83
  134. package/apps/lib/components/Toggle.tsx +112 -114
  135. package/apps/lib/components/ToggleButton.tsx +1 -1
  136. package/apps/lib/components/Tooltip.tsx +24 -19
  137. package/apps/lib/components/TransparentLabel.tsx +61 -62
  138. package/apps/lib/components/TreeDropDown.tsx +86 -52
  139. package/apps/lib/components/TreeFolder/TreeFolder.tsx +15 -48
  140. package/apps/lib/components/TreeFolder/TreeFolderBreadcrumb.tsx +16 -21
  141. package/apps/lib/components/TreeFolder/TreeFolderRow.tsx +9 -20
  142. package/apps/lib/components/TreeFolder/TreeFolderStyles.tsx +3 -3
  143. package/apps/lib/components/TreeFolder/icons.tsx +14 -17
  144. package/apps/lib/components/TreeFolder/index.ts +15 -8
  145. package/apps/lib/components/TreeFolder/treeFolderUtils.ts +47 -52
  146. package/apps/lib/components/TreeFolder/types.ts +32 -32
  147. package/apps/lib/components/TreeFolder/useTreeFolderDnD.ts +117 -123
  148. package/apps/lib/hooks/useActiveTreeItem.ts +52 -55
  149. package/apps/lib/hooks/useClickOutside.ts +21 -20
  150. package/apps/lib/hooks/useDataViewsState.ts +86 -80
  151. package/apps/lib/hooks/useIsMobile.ts +12 -12
  152. package/apps/lib/hooks/useResize.ts +54 -65
  153. package/apps/lib/hooks/useTagSelection.ts +201 -201
  154. package/apps/lib/layouts/CNLayout.tsx +181 -140
  155. package/apps/lib/layouts/DataViewCard.tsx +4 -18
  156. package/apps/lib/layouts/FieldSection.tsx +2 -6
  157. package/apps/lib/layouts/TreeSubLayout.tsx +24 -38
  158. package/apps/lib/providers/ThemeProvider.tsx +8 -23
  159. package/apps/lib/registry.json +997 -0
  160. package/apps/lib/tsconfig.json +9 -0
  161. package/apps/lib/tsconfig.tsbuildinfo +1 -0
  162. package/apps/lib/utils/cn.ts +1 -1
  163. package/apps/lib/utils/color.ts +175 -0
  164. package/apps/lib/utils/dataViews/columnUtils.ts +46 -44
  165. package/apps/lib/utils/dataViews/fieldUtils.ts +70 -71
  166. package/apps/lib/utils/dataViews/nestedDataUtils.tsx +129 -122
  167. package/apps/lib/utils/dataViews/pathUtils.ts +74 -67
  168. package/apps/lib/utils/dataViews/rangeUtils.ts +121 -112
  169. package/apps/lib/utils/dataViews/treeUtils.ts +204 -211
  170. package/apps/lib/utils/dateFormat.ts +64 -54
  171. package/apps/lib/utils/resize.ts +21 -25
  172. package/apps/lib/utils/types.ts +13 -13
  173. package/dist/bin/index.js +8 -2
  174. package/dist/bin/index.js.map +1 -1
  175. package/dist/src/shared/getAvailableFiles.d.ts.map +1 -1
  176. package/dist/src/shared/getAvailableFiles.js +6 -1
  177. package/dist/src/shared/getAvailableFiles.js.map +1 -1
  178. package/dist/src/shared/loadRegistry.d.ts +7 -0
  179. package/dist/src/shared/loadRegistry.d.ts.map +1 -0
  180. package/dist/src/shared/loadRegistry.js +31 -0
  181. package/dist/src/shared/loadRegistry.js.map +1 -0
  182. package/dist/src/shared/resolveInstallPlan.d.ts +12 -0
  183. package/dist/src/shared/resolveInstallPlan.d.ts.map +1 -0
  184. package/dist/src/shared/resolveInstallPlan.js +39 -0
  185. package/dist/src/shared/resolveInstallPlan.js.map +1 -0
  186. package/dist/src/types/main.d.ts +24 -0
  187. package/dist/src/types/main.d.ts.map +1 -1
  188. package/docs/README.md +10 -2
  189. package/docs/components/action-button.md +30 -24
  190. package/docs/components/actions-group.md +26 -20
  191. package/docs/components/alert-dialog.md +45 -45
  192. package/docs/components/avatar.md +6 -2
  193. package/docs/components/badge-field.md +6 -2
  194. package/docs/components/badge.md +7 -1
  195. package/docs/components/breadcrumb.md +15 -40
  196. package/docs/components/button-group.md +13 -10
  197. package/docs/components/button.md +58 -33
  198. package/docs/components/calendar.md +26 -19
  199. package/docs/components/card.md +23 -18
  200. package/docs/components/chart-block-tool.md +129 -0
  201. package/docs/components/checkbox.md +16 -8
  202. package/docs/components/cn-layout.md +7 -1
  203. package/docs/components/color-picker.md +101 -0
  204. package/docs/components/conclusion-header.md +80 -0
  205. package/docs/components/context-menu.md +18 -25
  206. package/docs/components/count-badge.md +7 -1
  207. package/docs/components/data-table.md +45 -33
  208. package/docs/components/data-views-config-panel.md +15 -11
  209. package/docs/components/data-views-layout.md +13 -16
  210. package/docs/components/date-picker.md +30 -23
  211. package/docs/components/dialog.md +43 -42
  212. package/docs/components/divider.md +10 -4
  213. package/docs/components/drawer.md +161 -135
  214. package/docs/components/dropdown-menu.md +25 -34
  215. package/docs/components/field-hint.md +37 -25
  216. package/docs/components/field-section.md +9 -3
  217. package/docs/components/form-builder.md +270 -0
  218. package/docs/components/form-renderer.md +228 -0
  219. package/docs/components/form-stepper.md +6 -0
  220. package/docs/components/form-summary.md +123 -0
  221. package/docs/components/form.md +17 -20
  222. package/docs/components/header-bar.md +6 -0
  223. package/docs/components/image-attachment.md +43 -45
  224. package/docs/components/inbox-view.md +16 -5
  225. package/docs/components/inner-label-field.md +34 -24
  226. package/docs/components/input-field.md +18 -10
  227. package/docs/components/input-otp.md +14 -11
  228. package/docs/components/input.md +22 -16
  229. package/docs/components/kanban-view.md +15 -5
  230. package/docs/components/label-field.md +32 -22
  231. package/docs/components/label.md +43 -32
  232. package/docs/components/labeled-check-box.md +16 -8
  233. package/docs/components/labeled-radio.md +18 -11
  234. package/docs/components/link-button.md +7 -1
  235. package/docs/components/login-button.md +8 -2
  236. package/docs/components/password-level.md +37 -24
  237. package/docs/components/popover.md +26 -23
  238. package/docs/components/profile-menu.md +38 -27
  239. package/docs/components/radio-card.md +16 -9
  240. package/docs/components/radio.md +16 -8
  241. package/docs/components/scroll-area.md +6 -2
  242. package/docs/components/search-field.md +14 -6
  243. package/docs/components/searchable-select.md +19 -14
  244. package/docs/components/searchable-table.md +18 -13
  245. package/docs/components/searchable-tree-dialog.md +190 -0
  246. package/docs/components/searchable-tree.md +200 -0
  247. package/docs/components/section-block.md +12 -4
  248. package/docs/components/select.md +23 -18
  249. package/docs/components/simple-select.md +14 -10
  250. package/docs/components/skeleton.md +43 -33
  251. package/docs/components/slide-date-picker.md +37 -29
  252. package/docs/components/spin-loading.md +32 -23
  253. package/docs/components/stepper.md +6 -0
  254. package/docs/components/switch.md +14 -6
  255. package/docs/components/tab-form-item.md +7 -1
  256. package/docs/components/tab-switch.md +13 -6
  257. package/docs/components/table-dnd-wrapper.md +107 -0
  258. package/docs/components/table-view.md +15 -5
  259. package/docs/components/table.md +28 -28
  260. package/docs/components/text-editor.md +37 -13
  261. package/docs/components/textarea.md +15 -7
  262. package/docs/components/timeline.md +6 -0
  263. package/docs/components/toast.md +35 -26
  264. package/docs/components/toggle-button.md +24 -21
  265. package/docs/components/toggle.md +23 -15
  266. package/docs/components/tooltip.md +42 -30
  267. package/docs/components/transparent-label.md +29 -20
  268. package/docs/components/tree-drop-down.md +31 -23
  269. package/docs/components/tree-sub-layout.md +6 -2
  270. package/docs/components/tree-view.md +16 -5
  271. package/docs/explanation/architecture.md +54 -0
  272. package/docs/explanation/design-system.md +52 -0
  273. package/docs/how-to/data-views-from-backend-response.md +6 -4
  274. package/docs/how-to/form-and-list-recipes.md +26 -19
  275. package/docs/how-to/forms-with-form-builder.md +408 -0
  276. package/docs/how-to/guides.md +177 -197
  277. package/docs/migration/changelog.md +38 -0
  278. package/docs/reference/cli.md +87 -0
  279. package/docs/reference/components.md +11 -12
  280. package/docs/reference/hooks.md +8 -8
  281. package/docs/reference/providers.md +22 -22
  282. package/docs/reference/tailwind-plugins.md +2 -2
  283. package/docs/reference/theme.md +85 -0
  284. package/docs/reference/types.md +4 -4
  285. package/docs/reference/utilities.md +19 -26
  286. package/docs/tutorials/building-first-form.md +170 -172
  287. package/docs/tutorials/component-composition.md +34 -50
  288. package/docs/tutorials/getting-started.md +2 -2
  289. package/docs/tutorials/theming-basics.md +13 -10
  290. package/package.json +31 -3
  291. package/dist/src/commands/block.d.ts +0 -5
  292. package/dist/src/commands/block.d.ts.map +0 -1
  293. package/dist/src/commands/block.js +0 -255
  294. package/dist/src/commands/block.js.map +0 -1
  295. package/dist/src/shared/configureFonts.d.ts +0 -6
  296. package/dist/src/shared/configureFonts.d.ts.map +0 -1
  297. package/dist/src/shared/configureFonts.js +0 -106
  298. package/dist/src/shared/configureFonts.js.map +0 -1
  299. package/dist/src/shared/configureGlobalCss.d.ts +0 -6
  300. package/dist/src/shared/configureGlobalCss.d.ts.map +0 -1
  301. package/dist/src/shared/configureGlobalCss.js +0 -154
  302. package/dist/src/shared/configureGlobalCss.js.map +0 -1
  303. package/dist/src/shared/configureTailwind.d.ts +0 -7
  304. package/dist/src/shared/configureTailwind.d.ts.map +0 -1
  305. package/dist/src/shared/configureTailwind.js +0 -163
  306. package/dist/src/shared/configureTailwind.js.map +0 -1
  307. package/dist/src/shared/detectFramework.d.ts +0 -23
  308. package/dist/src/shared/detectFramework.d.ts.map +0 -1
  309. package/dist/src/shared/detectFramework.js +0 -119
  310. package/dist/src/shared/detectFramework.js.map +0 -1
  311. package/dist/src/shared/installBaseUtils.d.ts +0 -5
  312. package/dist/src/shared/installBaseUtils.d.ts.map +0 -1
  313. package/dist/src/shared/installBaseUtils.js +0 -79
  314. package/dist/src/shared/installBaseUtils.js.map +0 -1
  315. package/dist/src/shared/resolveAliases.d.ts +0 -24
  316. package/dist/src/shared/resolveAliases.d.ts.map +0 -1
  317. package/dist/src/shared/resolveAliases.js +0 -98
  318. 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",
@@ -133,16 +133,12 @@ export default class ChartBlockTool {
133
133
  }
134
134
 
135
135
  // Click on the block → expand editing panel
136
- this.wrapper.addEventListener("click", (e) => {
136
+ this.wrapper.addEventListener("click", () => {
137
137
  if (
138
138
  this.editorPanel &&
139
- this.editorPanel.classList.contains(
140
- "cdx-chart-block__editor-panel--hidden",
141
- )
139
+ this.editorPanel.classList.contains("cdx-chart-block__editor-panel--hidden")
142
140
  ) {
143
- this.editorPanel.classList.remove(
144
- "cdx-chart-block__editor-panel--hidden",
145
- );
141
+ this.editorPanel.classList.remove("cdx-chart-block__editor-panel--hidden");
146
142
  // Re-create chart since canvas may have been resized
147
143
  this.createChart();
148
144
  }
@@ -150,14 +146,8 @@ export default class ChartBlockTool {
150
146
 
151
147
  // Click outside → collapse
152
148
  this.boundOnClickOutside = (e: MouseEvent) => {
153
- if (
154
- this.wrapper &&
155
- this.editorPanel &&
156
- !this.wrapper.contains(e.target as Node)
157
- ) {
158
- this.editorPanel.classList.add(
159
- "cdx-chart-block__editor-panel--hidden",
160
- );
149
+ if (this.wrapper && this.editorPanel && !this.wrapper.contains(e.target as Node)) {
150
+ this.editorPanel.classList.add("cdx-chart-block__editor-panel--hidden");
161
151
  // Re-create chart to fit new size
162
152
  this.createChart();
163
153
  }
@@ -407,8 +397,7 @@ export default class ChartBlockTool {
407
397
  dataInput.className = "cdx-chart-block__data-input";
408
398
  dataInput.value = String(dataset.data[colIdx] ?? 0);
409
399
  dataInput.addEventListener("input", () => {
410
- this.data.datasets[rowIdx].data[colIdx] =
411
- parseFloat(dataInput.value) || 0;
400
+ this.data.datasets[rowIdx].data[colIdx] = parseFloat(dataInput.value) || 0;
412
401
  this.scheduleChartUpdate();
413
402
  });
414
403
  td.appendChild(dataInput);
@@ -425,14 +414,8 @@ export default class ChartBlockTool {
425
414
  colorPicker.value = this.rgbaToHex(dataset.backgroundColor);
426
415
  colorPicker.title = "Dataset color";
427
416
  colorPicker.addEventListener("input", () => {
428
- this.data.datasets[rowIdx].backgroundColor = this.hexToRgba(
429
- colorPicker.value,
430
- 0.5,
431
- );
432
- this.data.datasets[rowIdx].borderColor = this.hexToRgba(
433
- colorPicker.value,
434
- 1,
435
- );
417
+ this.data.datasets[rowIdx].backgroundColor = this.hexToRgba(colorPicker.value, 0.5);
418
+ this.data.datasets[rowIdx].borderColor = this.hexToRgba(colorPicker.value, 1);
436
419
  this.scheduleChartUpdate();
437
420
  });
438
421
  controlsCell.appendChild(colorPicker);
@@ -470,9 +453,7 @@ export default class ChartBlockTool {
470
453
  const gridColor = dark ? "rgba(255, 255, 255, 0.1)" : "rgba(0, 0, 0, 0.1)";
471
454
  const legendColor = dark ? "#ccc" : "#666";
472
455
 
473
- const isPieType = ["pie", "doughnut", "polarArea"].includes(
474
- this.data.chartType,
475
- );
456
+ const isPieType = ["pie", "doughnut", "polarArea"].includes(this.data.chartType);
476
457
 
477
458
  // For pie/doughnut/polar, use per-segment colors from all datasets flattened
478
459
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
@@ -482,12 +463,8 @@ export default class ChartBlockTool {
482
463
  label: ds.label,
483
464
  data: [...ds.data],
484
465
  borderWidth: 2,
485
- backgroundColor: ds.data.map(
486
- (_, i) => COLOR_PALETTE[i % COLOR_PALETTE.length].bg,
487
- ),
488
- borderColor: ds.data.map(
489
- (_, i) => COLOR_PALETTE[i % COLOR_PALETTE.length].border,
490
- ),
466
+ backgroundColor: ds.data.map((_, i) => COLOR_PALETTE[i % COLOR_PALETTE.length].bg),
467
+ borderColor: ds.data.map((_, i) => COLOR_PALETTE[i % COLOR_PALETTE.length].border),
491
468
  };
492
469
  }
493
470
  return {
@@ -557,9 +534,7 @@ export default class ChartBlockTool {
557
534
  this.updateTimeout = null;
558
535
  if (!this.chart) return;
559
536
 
560
- const isPieType = ["pie", "doughnut", "polarArea"].includes(
561
- this.data.chartType,
562
- );
537
+ const isPieType = ["pie", "doughnut", "polarArea"].includes(this.data.chartType);
563
538
 
564
539
  this.chart.data.labels = [...this.data.labels];
565
540
  this.chart.data.datasets = this.data.datasets.map((ds) => {
@@ -571,12 +546,8 @@ export default class ChartBlockTool {
571
546
  };
572
547
 
573
548
  if (isPieType) {
574
- base.backgroundColor = ds.data.map(
575
- (_, i) => COLOR_PALETTE[i % COLOR_PALETTE.length].bg,
576
- );
577
- base.borderColor = ds.data.map(
578
- (_, i) => COLOR_PALETTE[i % COLOR_PALETTE.length].border,
579
- );
549
+ base.backgroundColor = ds.data.map((_, i) => COLOR_PALETTE[i % COLOR_PALETTE.length].bg);
550
+ base.borderColor = ds.data.map((_, i) => COLOR_PALETTE[i % COLOR_PALETTE.length].border);
580
551
  } else {
581
552
  base.backgroundColor = ds.backgroundColor;
582
553
  base.borderColor = ds.borderColor;
@@ -637,9 +608,7 @@ export default class ChartBlockTool {
637
608
 
638
609
  private updateTypeSelector(): void {
639
610
  if (!this.wrapper) return;
640
- const buttons = this.wrapper.querySelectorAll<HTMLButtonElement>(
641
- ".cdx-chart-block__type-btn",
642
- );
611
+ const buttons = this.wrapper.querySelectorAll<HTMLButtonElement>(".cdx-chart-block__type-btn");
643
612
  buttons.forEach((btn) => {
644
613
  btn.classList.toggle(
645
614
  "cdx-chart-block__type-btn--active",
@@ -651,17 +620,13 @@ export default class ChartBlockTool {
651
620
  private normalizeData(data: Partial<ChartBlockData>): ChartBlockData {
652
621
  const chartType =
653
622
  data.chartType &&
654
- ["bar", "line", "pie", "doughnut", "radar", "polarArea"].includes(
655
- data.chartType,
656
- )
623
+ ["bar", "line", "pie", "doughnut", "radar", "polarArea"].includes(data.chartType)
657
624
  ? data.chartType
658
625
  : DEFAULT_DATA.chartType;
659
626
 
660
627
  const title = data.title ?? DEFAULT_DATA.title;
661
628
  const labels =
662
- Array.isArray(data.labels) && data.labels.length > 0
663
- ? data.labels
664
- : [...DEFAULT_DATA.labels];
629
+ Array.isArray(data.labels) && data.labels.length > 0 ? data.labels : [...DEFAULT_DATA.labels];
665
630
 
666
631
  const datasets =
667
632
  Array.isArray(data.datasets) && data.datasets.length > 0