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
@@ -11,44 +11,34 @@ import { ToggleButton, toggleButtonStyles } from "./ToggleButton";
11
11
  // ButtonGroup Root
12
12
  // ============================================================================
13
13
 
14
- const buttonGroupStyles = cva(
15
- [
16
- "inline-flex",
17
- "rounded-[4px]",
18
- "overflow-hidden",
19
- ],
20
- {
21
- variants: {
22
- variant: {
23
- PrimeStyle: [
24
- "bg-background-presentation-action-secondary",
25
- "border border-border-presentation-action-disabled",
26
- ],
27
- BorderStyle: [
28
- "bg-background-presentation-action-borderstyle",
29
- "border border-border-presentation-action-disabled",
30
- ],
31
- SystemStyle: [
32
- "bg-black-alpha-20",
33
- "border border-[#2C2D2E]",
34
- ],
35
- },
36
- size: {
37
- S: "h-[22px]",
38
- M: "h-[28px]",
39
- L: "h-[34px]",
40
- XL: "h-[40px]",
41
- },
42
- fullWidth: {
43
- true: "w-full",
44
- },
14
+ const buttonGroupStyles = cva(["inline-flex", "rounded-[4px]", "overflow-hidden"], {
15
+ variants: {
16
+ variant: {
17
+ PrimeStyle: [
18
+ "bg-background-presentation-action-secondary",
19
+ "border border-border-presentation-action-disabled",
20
+ ],
21
+ BorderStyle: [
22
+ "bg-background-presentation-action-borderstyle",
23
+ "border border-border-presentation-action-disabled",
24
+ ],
25
+ SystemStyle: ["bg-black-alpha-20", "border border-[#2C2D2E]"],
45
26
  },
46
- defaultVariants: {
47
- variant: "PrimeStyle",
48
- size: "M",
27
+ size: {
28
+ S: "h-[22px]",
29
+ M: "h-[28px]",
30
+ L: "h-[34px]",
31
+ XL: "h-[40px]",
49
32
  },
50
- }
51
- );
33
+ fullWidth: {
34
+ true: "w-full",
35
+ },
36
+ },
37
+ defaultVariants: {
38
+ variant: "PrimeStyle",
39
+ size: "M",
40
+ },
41
+ });
52
42
 
53
43
  type ButtonGroupSingleProps = {
54
44
  type: "single";
@@ -77,11 +67,11 @@ const ButtonGroup = React.forwardRef<HTMLDivElement, ButtonGroupProps>(
77
67
  ref={ref}
78
68
  data-theme={theme}
79
69
  className={cn(buttonGroupStyles({ variant, size, fullWidth }), className)}
80
- {...(props as any)}
70
+ {...(props as React.ComponentPropsWithoutRef<typeof ToggleGroupPrimitive.Root>)}
81
71
  >
82
72
  {React.Children.map(children, (child) => {
83
73
  if (React.isValidElement(child)) {
84
- return React.cloneElement(child as React.ReactElement<any>, {
74
+ return React.cloneElement(child as React.ReactElement<Record<string, unknown>>, {
85
75
  _groupVariant: variant,
86
76
  _groupSize: size,
87
77
  });
@@ -89,7 +79,7 @@ const ButtonGroup = React.forwardRef<HTMLDivElement, ButtonGroupProps>(
89
79
  return child;
90
80
  })}
91
81
  </ToggleGroupPrimitive.Root>
92
- )
82
+ ),
93
83
  );
94
84
  ButtonGroup.displayName = "ButtonGroup";
95
85
 
@@ -154,7 +144,7 @@ const buttonGroupItemStyles = cva(
154
144
  variant: "PrimeStyle",
155
145
  size: "M",
156
146
  },
157
- }
147
+ },
158
148
  );
159
149
 
160
150
  type ButtonGroupItemProps = React.ComponentPropsWithoutRef<typeof ToggleGroupPrimitive.Item> &
@@ -177,7 +167,7 @@ const ButtonGroupItem = React.forwardRef<
177
167
  variant: variant ?? _groupVariant ?? "PrimeStyle",
178
168
  size: size ?? _groupSize ?? "M",
179
169
  }),
180
- className
170
+ className,
181
171
  )}
182
172
  {...props}
183
173
  >
@@ -1,13 +1,13 @@
1
- "use client"
1
+ "use client";
2
2
 
3
- import * as React from "react"
4
- import { DayPicker } from "react-day-picker"
3
+ import * as React from "react";
4
+ import { DayPicker } from "react-day-picker";
5
5
  import "react-day-picker/style.css";
6
- import { cn } from "../utils/cn"
7
- import { Button } from "./Button"
6
+ import { cn } from "../utils/cn";
7
+ import { Button } from "./Button";
8
8
  import { SimpleSelectValue, SimpleSelectItem } from "./SimpleSelect";
9
9
 
10
- export type CalendarProps = React.ComponentProps<typeof DayPicker>
10
+ export type CalendarProps = React.ComponentProps<typeof DayPicker>;
11
11
 
12
12
  const Calendar = ({
13
13
  className,
@@ -20,66 +20,88 @@ const Calendar = ({
20
20
  return (
21
21
  <DayPicker
22
22
  data-theme="dark"
23
- className={cn("w-fit p-[6px] rounded-[12px] bg-background-system-body-base relative", className)}
23
+ className={cn(
24
+ "w-fit p-[6px] rounded-[12px] bg-background-system-body-base relative",
25
+ className,
26
+ )}
24
27
  showOutsideDays={showOutsideDays}
25
28
  captionLayout={captionLayout}
26
29
  components={{
27
30
  Nav: (e) => {
28
31
  return (
29
32
  <div className="w-full flex items-center justify-between absolute top-0 left-0 p-[6px]">
30
- <Button onClick={e.onPreviousClick} buttonType="icon" variant="PrimeStyle" size="M" className="w-[26px] h-[26px]">
33
+ <Button
34
+ onClick={e.onPreviousClick}
35
+ buttonType="icon"
36
+ variant="PrimeStyle"
37
+ size="M"
38
+ className="w-[26px] h-[26px]"
39
+ >
31
40
  <i className="ri-arrow-left-s-line"></i>
32
41
  </Button>
33
- <Button onClick={e.onNextClick} buttonType="icon" variant="PrimeStyle" size="M" className="w-[26px] h-[26px]">
42
+ <Button
43
+ onClick={e.onNextClick}
44
+ buttonType="icon"
45
+ variant="PrimeStyle"
46
+ size="M"
47
+ className="w-[26px] h-[26px]"
48
+ >
34
49
  <i className="ri-arrow-right-s-line"></i>
35
50
  </Button>
36
51
  </div>
37
- )
52
+ );
38
53
  },
39
54
  MonthsDropdown: (e) => {
40
55
  return (
41
56
  <SimpleSelectValue
42
57
  inputClassName="w-[23px]"
43
- value={e.options?.find(month => month.value === e.value)?.label.slice(0, 3) || ''}
58
+ value={e.options?.find((month) => month.value === e.value)?.label.slice(0, 3) || ""}
44
59
  >
45
60
  {e.options?.map((month, i) => (
46
61
  <SimpleSelectItem
47
62
  key={month.value}
48
63
  selected={e.value === month.value}
49
- onClick={() => e.onChange?.({
50
- target: {
51
- value: month.value
52
- }
53
- } as any)}
64
+ onClick={() =>
65
+ e.onChange?.({
66
+ target: {
67
+ value: month.value,
68
+ },
69
+ } as unknown as React.ChangeEvent<HTMLSelectElement>)
70
+ }
54
71
  >
55
72
  {`${month.label} - ${i + 1}`}
56
73
  </SimpleSelectItem>
57
74
  ))}
58
75
  </SimpleSelectValue>
59
- )
76
+ );
60
77
  },
61
78
  YearsDropdown: (e) => {
62
79
  return (
63
- <SimpleSelectValue
64
- inputClassName="w-[30px]"
65
- value={e.value}
66
- >
80
+ <SimpleSelectValue inputClassName="w-[30px]" value={e.value}>
67
81
  {e.options?.map((year) => (
68
- <SimpleSelectItem key={year.value} selected={e.value === year.value} onClick={() => e.onChange?.({ target: { value: year.value } } as any)}>
82
+ <SimpleSelectItem
83
+ key={year.value}
84
+ selected={e.value === year.value}
85
+ onClick={() =>
86
+ e.onChange?.({
87
+ target: { value: year.value },
88
+ } as unknown as React.ChangeEvent<HTMLSelectElement>)
89
+ }
90
+ >
69
91
  {year.label}
70
92
  </SimpleSelectItem>
71
93
  ))}
72
94
  </SimpleSelectValue>
73
- )
95
+ );
74
96
  },
75
- ...components
97
+ ...components,
76
98
  }}
77
99
  classNames={{
78
100
  day: cn(
79
101
  "!w-[30px] !h-[30px] [&_button]:!w-[28px] [&_button]:!h-[28px] [&_button]:!rounded-[6px] [&_button]:!text-content-system-global-primary [&_button]:!bg-background-system-body-secondary [&_button]:!m-[2px] [&_button]:!text-[10px] [&_button]:!border-[1px] [&_button]:!outline-none",
80
102
  "[&_button]:hover:!border-border-system-action-secondary-hover [&_button]:hover:!bg-background-system-action-secondary-hover",
81
103
  "[&_button]:focus-within:!border-border-system-action-secondary-hover [&_button]:focus-within:!bg-background-system-action-primary-hover",
82
- "[&_button]:transition-all [&_button]:duration-200"
104
+ "[&_button]:transition-all [&_button]:duration-200",
83
105
  ),
84
106
  today: `[&_button]:!bg-background-system-action-primary-hover`, // Add a border to today's date
85
107
  selected: `[&_button]:!bg-background-system-action-primary-hover [&_button]:!border-border-system-action-secondary-hover [&_button]:!text-content-presentation-global-primary`,
@@ -96,8 +118,8 @@ const Calendar = ({
96
118
  }}
97
119
  {...props}
98
120
  />
99
- )
100
- }
101
- Calendar.displayName = "Calendar"
121
+ );
122
+ };
123
+ Calendar.displayName = "Calendar";
102
124
 
103
- export { Calendar }
125
+ export { Calendar };
@@ -3,25 +3,14 @@ import React, { HTMLAttributes } from "react";
3
3
  import { Slot } from "@radix-ui/react-slot";
4
4
 
5
5
  interface Props extends Omit<
6
- HTMLAttributes<
7
- | HTMLDivElement
8
- | HTMLHeadingElement
9
- | HTMLParagraphElement
10
- | HTMLLabelElement
11
- >,
6
+ HTMLAttributes<HTMLDivElement | HTMLHeadingElement | HTMLParagraphElement | HTMLLabelElement>,
12
7
  "htmlFor"
13
8
  > {
14
9
  as?: React.ElementType;
15
10
  asChild?: boolean;
16
11
  htmlFor?: string;
17
12
  }
18
- export const Card = ({
19
- className,
20
- htmlFor,
21
- asChild,
22
- as: Tag = "section",
23
- ...props
24
- }: Props) => {
13
+ export const Card = ({ className, htmlFor, asChild, as: Tag = "section", ...props }: Props) => {
25
14
  const Component = asChild ? Slot : Tag;
26
15
  return (
27
16
  <Component
@@ -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
@@ -1,10 +1,9 @@
1
- 'use client';
1
+ "use client";
2
2
  import { cn } from "../utils/cn";
3
3
  import { cva } from "class-variance-authority";
4
- import * as CheckboxPrimitive from "@radix-ui/react-checkbox"
4
+ import * as CheckboxPrimitive from "@radix-ui/react-checkbox";
5
5
  import React from "react";
6
6
 
7
-
8
7
  const glareCheckBoxStyles = cva(
9
8
  [
10
9
  "peer shrink-0 shadow focus-visible:outline-none rounded-[3px]",
@@ -12,7 +11,7 @@ const glareCheckBoxStyles = cva(
12
11
  "border border-border-presentation-action-checkbox-primary",
13
12
  "bg-background-presentation-action-borderstyle",
14
13
  "focus:bg-blue-sparkle-alpha-15 focus:border-border-presentation-state-focus",
15
- 'disabled:bg-background-presentation-action-disabled disabled:border-border-presentation-action-disabled disabled:cursor-not-allowed',
14
+ "disabled:bg-background-presentation-action-disabled disabled:border-border-presentation-action-disabled disabled:cursor-not-allowed",
16
15
  "data-[state=checked]:bg-blue-sparkle-600 data-[state=checked]:border-blue-sparkle-600",
17
16
  "hover:border-border-presentation-action-hover",
18
17
  ],
@@ -22,28 +21,22 @@ const glareCheckBoxStyles = cva(
22
21
  S: ["w-[14px] h-[14px]"],
23
22
  M: ["w-[16px] h-[16px]"],
24
23
  },
25
- }
26
- }
24
+ },
25
+ },
27
26
  );
28
27
 
29
-
30
28
  export const Checkbox = React.forwardRef<
31
29
  React.ElementRef<typeof CheckboxPrimitive.Root>,
32
30
  React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root> & { size?: "S" | "M" }
33
31
  >(({ className, size = "M", ...props }, ref) => (
34
32
  <CheckboxPrimitive.Root
35
33
  ref={ref}
36
- className={cn(
37
- glareCheckBoxStyles({ size }),
38
- className
39
- )}
34
+ className={cn(glareCheckBoxStyles({ size }), className)}
40
35
  {...props}
41
36
  >
42
- <CheckboxPrimitive.Indicator
43
- >
37
+ <CheckboxPrimitive.Indicator>
44
38
  <i className="ri-check-line text-white" />
45
39
  </CheckboxPrimitive.Indicator>
46
40
  </CheckboxPrimitive.Root>
47
- ))
48
- Checkbox.displayName = CheckboxPrimitive.Root.displayName
49
-
41
+ ));
42
+ Checkbox.displayName = CheckboxPrimitive.Root.displayName;