@mdigital_ui/ui 0.1.0

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 (205) hide show
  1. package/README.md +296 -0
  2. package/dist/accordion/index.js +5 -0
  3. package/dist/accordion/index.js.map +1 -0
  4. package/dist/badge/index.js +5 -0
  5. package/dist/badge/index.js.map +1 -0
  6. package/dist/button/index.js +6 -0
  7. package/dist/button/index.js.map +1 -0
  8. package/dist/card/index.js +4 -0
  9. package/dist/card/index.js.map +1 -0
  10. package/dist/carousel/index.js +3 -0
  11. package/dist/carousel/index.js.map +1 -0
  12. package/dist/cascader/index.js +4 -0
  13. package/dist/cascader/index.js.map +1 -0
  14. package/dist/chart/index.js +4 -0
  15. package/dist/chart/index.js.map +1 -0
  16. package/dist/checkbox/index.js +5 -0
  17. package/dist/checkbox/index.js.map +1 -0
  18. package/dist/checkbox-group/index.js +4 -0
  19. package/dist/checkbox-group/index.js.map +1 -0
  20. package/dist/chunk-2JGAYDZR.js +181 -0
  21. package/dist/chunk-2JGAYDZR.js.map +1 -0
  22. package/dist/chunk-3PFA3YG6.js +228 -0
  23. package/dist/chunk-3PFA3YG6.js.map +1 -0
  24. package/dist/chunk-4OMLQCUV.js +96 -0
  25. package/dist/chunk-4OMLQCUV.js.map +1 -0
  26. package/dist/chunk-4P5EMRFI.js +298 -0
  27. package/dist/chunk-4P5EMRFI.js.map +1 -0
  28. package/dist/chunk-5UEWVFF6.js +212 -0
  29. package/dist/chunk-5UEWVFF6.js.map +1 -0
  30. package/dist/chunk-5VCGW53O.js +332 -0
  31. package/dist/chunk-5VCGW53O.js.map +1 -0
  32. package/dist/chunk-75XESYGN.js +49 -0
  33. package/dist/chunk-75XESYGN.js.map +1 -0
  34. package/dist/chunk-7AEGBABZ.js +1102 -0
  35. package/dist/chunk-7AEGBABZ.js.map +1 -0
  36. package/dist/chunk-AOITJRSV.js +134 -0
  37. package/dist/chunk-AOITJRSV.js.map +1 -0
  38. package/dist/chunk-AWPKZYHT.js +152 -0
  39. package/dist/chunk-AWPKZYHT.js.map +1 -0
  40. package/dist/chunk-BNILRB4T.js +37 -0
  41. package/dist/chunk-BNILRB4T.js.map +1 -0
  42. package/dist/chunk-BP434VYV.js +448 -0
  43. package/dist/chunk-BP434VYV.js.map +1 -0
  44. package/dist/chunk-C7SXY3ZV.js +65 -0
  45. package/dist/chunk-C7SXY3ZV.js.map +1 -0
  46. package/dist/chunk-CLLQDCDR.js +560 -0
  47. package/dist/chunk-CLLQDCDR.js.map +1 -0
  48. package/dist/chunk-CWHFK7ZC.js +128 -0
  49. package/dist/chunk-CWHFK7ZC.js.map +1 -0
  50. package/dist/chunk-D3JWPGCA.js +123 -0
  51. package/dist/chunk-D3JWPGCA.js.map +1 -0
  52. package/dist/chunk-DOKTHDG3.js +55 -0
  53. package/dist/chunk-DOKTHDG3.js.map +1 -0
  54. package/dist/chunk-DPOSWW22.js +126 -0
  55. package/dist/chunk-DPOSWW22.js.map +1 -0
  56. package/dist/chunk-E2CYDDYC.js +39 -0
  57. package/dist/chunk-E2CYDDYC.js.map +1 -0
  58. package/dist/chunk-EYTOKUBM.js +401 -0
  59. package/dist/chunk-EYTOKUBM.js.map +1 -0
  60. package/dist/chunk-FGWSUPVW.js +356 -0
  61. package/dist/chunk-FGWSUPVW.js.map +1 -0
  62. package/dist/chunk-FPOXTCYV.js +166 -0
  63. package/dist/chunk-FPOXTCYV.js.map +1 -0
  64. package/dist/chunk-FTJOSVTY.js +104 -0
  65. package/dist/chunk-FTJOSVTY.js.map +1 -0
  66. package/dist/chunk-FYHQDFKE.js +164 -0
  67. package/dist/chunk-FYHQDFKE.js.map +1 -0
  68. package/dist/chunk-H2HIBD5Y.js +158 -0
  69. package/dist/chunk-H2HIBD5Y.js.map +1 -0
  70. package/dist/chunk-J3G5WWGR.js +53 -0
  71. package/dist/chunk-J3G5WWGR.js.map +1 -0
  72. package/dist/chunk-JZCHZ4B3.js +487 -0
  73. package/dist/chunk-JZCHZ4B3.js.map +1 -0
  74. package/dist/chunk-KBCBVH7B.js +51 -0
  75. package/dist/chunk-KBCBVH7B.js.map +1 -0
  76. package/dist/chunk-KNQ7UQ2W.js +143 -0
  77. package/dist/chunk-KNQ7UQ2W.js.map +1 -0
  78. package/dist/chunk-KTBPIEP2.js +102 -0
  79. package/dist/chunk-KTBPIEP2.js.map +1 -0
  80. package/dist/chunk-L3SP7GHC.js +1023 -0
  81. package/dist/chunk-L3SP7GHC.js.map +1 -0
  82. package/dist/chunk-LBJG2UWT.js +100 -0
  83. package/dist/chunk-LBJG2UWT.js.map +1 -0
  84. package/dist/chunk-MLDX3Z67.js +470 -0
  85. package/dist/chunk-MLDX3Z67.js.map +1 -0
  86. package/dist/chunk-NNSS366W.js +331 -0
  87. package/dist/chunk-NNSS366W.js.map +1 -0
  88. package/dist/chunk-OQANRZPV.js +197 -0
  89. package/dist/chunk-OQANRZPV.js.map +1 -0
  90. package/dist/chunk-OW5A5IIF.js +175 -0
  91. package/dist/chunk-OW5A5IIF.js.map +1 -0
  92. package/dist/chunk-R225A5II.js +187 -0
  93. package/dist/chunk-R225A5II.js.map +1 -0
  94. package/dist/chunk-ROR4E6IE.js +119 -0
  95. package/dist/chunk-ROR4E6IE.js.map +1 -0
  96. package/dist/chunk-RPAQAZTI.js +54 -0
  97. package/dist/chunk-RPAQAZTI.js.map +1 -0
  98. package/dist/chunk-RQBXZKTH.js +452 -0
  99. package/dist/chunk-RQBXZKTH.js.map +1 -0
  100. package/dist/chunk-S5XJXU52.js +178 -0
  101. package/dist/chunk-S5XJXU52.js.map +1 -0
  102. package/dist/chunk-SAVE5ACL.js +324 -0
  103. package/dist/chunk-SAVE5ACL.js.map +1 -0
  104. package/dist/chunk-SERJ3TZE.js +640 -0
  105. package/dist/chunk-SERJ3TZE.js.map +1 -0
  106. package/dist/chunk-SK5ECBBK.js +175 -0
  107. package/dist/chunk-SK5ECBBK.js.map +1 -0
  108. package/dist/chunk-SOV4PE3P.js +218 -0
  109. package/dist/chunk-SOV4PE3P.js.map +1 -0
  110. package/dist/chunk-W7BQYIXF.js +687 -0
  111. package/dist/chunk-W7BQYIXF.js.map +1 -0
  112. package/dist/chunk-XMAH5PDW.js +59 -0
  113. package/dist/chunk-XMAH5PDW.js.map +1 -0
  114. package/dist/chunk-XOBGEMQY.js +94 -0
  115. package/dist/chunk-XOBGEMQY.js.map +1 -0
  116. package/dist/chunk-YNNAOXU5.js +57 -0
  117. package/dist/chunk-YNNAOXU5.js.map +1 -0
  118. package/dist/chunk-YZVSDRJD.js +253 -0
  119. package/dist/chunk-YZVSDRJD.js.map +1 -0
  120. package/dist/collapse/index.js +4 -0
  121. package/dist/collapse/index.js.map +1 -0
  122. package/dist/command/index.js +5 -0
  123. package/dist/command/index.js.map +1 -0
  124. package/dist/date-picker/index.js +5 -0
  125. package/dist/date-picker/index.js.map +1 -0
  126. package/dist/descriptions/index.js +4 -0
  127. package/dist/descriptions/index.js.map +1 -0
  128. package/dist/drawer/index.js +4 -0
  129. package/dist/drawer/index.js.map +1 -0
  130. package/dist/dropdown/index.js +5 -0
  131. package/dist/dropdown/index.js.map +1 -0
  132. package/dist/empty/index.js +4 -0
  133. package/dist/empty/index.js.map +1 -0
  134. package/dist/fetching-overlay/index.js +5 -0
  135. package/dist/fetching-overlay/index.js.map +1 -0
  136. package/dist/image/index.js +4 -0
  137. package/dist/image/index.js.map +1 -0
  138. package/dist/index.d.ts +2672 -0
  139. package/dist/index.js +976 -0
  140. package/dist/index.js.map +1 -0
  141. package/dist/input/index.js +5 -0
  142. package/dist/input/index.js.map +1 -0
  143. package/dist/input-group/index.js +4 -0
  144. package/dist/input-group/index.js.map +1 -0
  145. package/dist/input-otp/index.js +4 -0
  146. package/dist/input-otp/index.js.map +1 -0
  147. package/dist/input-password/index.js +6 -0
  148. package/dist/input-password/index.js.map +1 -0
  149. package/dist/kbd/index.js +4 -0
  150. package/dist/kbd/index.js.map +1 -0
  151. package/dist/modal/index.js +4 -0
  152. package/dist/modal/index.js.map +1 -0
  153. package/dist/multi-select/index.js +5 -0
  154. package/dist/multi-select/index.js.map +1 -0
  155. package/dist/notification/index.js +4 -0
  156. package/dist/notification/index.js.map +1 -0
  157. package/dist/pagination/index.js +4 -0
  158. package/dist/pagination/index.js.map +1 -0
  159. package/dist/popover/index.js +4 -0
  160. package/dist/popover/index.js.map +1 -0
  161. package/dist/progress/index.js +4 -0
  162. package/dist/progress/index.js.map +1 -0
  163. package/dist/radio/index.js +4 -0
  164. package/dist/radio/index.js.map +1 -0
  165. package/dist/radio-group/index.js +4 -0
  166. package/dist/radio-group/index.js.map +1 -0
  167. package/dist/rating/index.js +4 -0
  168. package/dist/rating/index.js.map +1 -0
  169. package/dist/ribbon/index.js +4 -0
  170. package/dist/ribbon/index.js.map +1 -0
  171. package/dist/select/index.js +6 -0
  172. package/dist/select/index.js.map +1 -0
  173. package/dist/skeleton/index.js +4 -0
  174. package/dist/skeleton/index.js.map +1 -0
  175. package/dist/slider/index.js +4 -0
  176. package/dist/slider/index.js.map +1 -0
  177. package/dist/spinner/index.js +4 -0
  178. package/dist/spinner/index.js.map +1 -0
  179. package/dist/stepper/index.js +4 -0
  180. package/dist/stepper/index.js.map +1 -0
  181. package/dist/styles/base.css +161 -0
  182. package/dist/styles/global.css +633 -0
  183. package/dist/styles/themes/dark.css +84 -0
  184. package/dist/styles/themes/light.css +84 -0
  185. package/dist/switch/index.js +4 -0
  186. package/dist/switch/index.js.map +1 -0
  187. package/dist/table/index.js +12 -0
  188. package/dist/table/index.js.map +1 -0
  189. package/dist/tabs/index.js +5 -0
  190. package/dist/tabs/index.js.map +1 -0
  191. package/dist/textarea/index.js +4 -0
  192. package/dist/textarea/index.js.map +1 -0
  193. package/dist/toggle/index.js +4 -0
  194. package/dist/toggle/index.js.map +1 -0
  195. package/dist/toggle-group/index.js +4 -0
  196. package/dist/toggle-group/index.js.map +1 -0
  197. package/dist/tooltip/index.js +4 -0
  198. package/dist/tooltip/index.js.map +1 -0
  199. package/dist/transfer/index.js +6 -0
  200. package/dist/transfer/index.js.map +1 -0
  201. package/dist/tree/index.js +4 -0
  202. package/dist/tree/index.js.map +1 -0
  203. package/dist/tree-select/index.js +6 -0
  204. package/dist/tree-select/index.js.map +1 -0
  205. package/package.json +107 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/descriptions/index.tsx"],"names":[],"mappings":"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","file":"chunk-S5XJXU52.js","sourcesContent":["import { cva } from 'class-variance-authority'\nimport React from 'react'\n\nimport { cn } from '../utils'\nimport type { DescriptionsItem, DescriptionsProps } from './types'\n\nconst tableVariants = cva('w-full border-separate border-spacing-0', {\n variants: {\n bordered: {\n true: 'border border-border',\n false: '',\n },\n rounded: {\n true: 'rounded-lg',\n false: '',\n },\n },\n compoundVariants: [\n { bordered: true, rounded: true, class: 'overflow-hidden' },\n ],\n defaultVariants: {\n bordered: true,\n rounded: true,\n },\n})\n\nconst labelCellVariants = cva(\n 'font-semibold text-text-primary border-b border-r border-border',\n {\n variants: {\n size: {\n xs: 'py-1 px-2 text-[10px]',\n sm: 'py-2 px-3 text-xs',\n md: 'py-3 px-4 text-sm',\n lg: 'py-4 px-5 text-base',\n },\n color: {\n default: 'bg-surface',\n primary: 'bg-primary/10',\n secondary: 'bg-secondary/10',\n accent: 'bg-accent/10',\n success: 'bg-success/10',\n error: 'bg-error/10',\n warning: 'bg-warning/10',\n info: 'bg-info/10',\n },\n },\n defaultVariants: {\n size: 'md',\n color: 'default',\n },\n },\n)\n\nconst valueCellVariants = cva(\n 'text-text-primary border-b border-r border-border bg-background',\n {\n variants: {\n size: {\n xs: 'py-1 px-2 text-[10px]',\n sm: 'py-2 px-3 text-xs',\n md: 'py-3 px-4 text-sm',\n lg: 'py-4 px-5 text-base',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n },\n)\n\nconst Descriptions = React.memo<DescriptionsProps>(\n ({\n items,\n column = 3,\n color = 'default',\n size = 'md',\n layout = 'horizontal',\n bordered = true,\n rounded = true,\n className,\n }) => {\n // Split items into rows based on column count and span\n const rows: DescriptionsItem[][] = []\n let currentRow: DescriptionsItem[] = []\n let currentSpan = 0\n\n items.forEach((item) => {\n const itemSpan = item.span || 1\n\n if (currentSpan + itemSpan > column) {\n rows.push(currentRow)\n currentRow = [item]\n currentSpan = itemSpan\n } else {\n currentRow.push(item)\n currentSpan += itemSpan\n }\n })\n\n if (currentRow.length > 0) {\n rows.push(currentRow)\n }\n\n if (layout === 'vertical') {\n return (\n <table className={cn(tableVariants({ bordered, rounded }), className)}>\n <tbody>\n {rows.map((row, rowIndex) => {\n const isLastRow = rowIndex === rows.length - 1\n\n // Calculate which items reach the right edge\n let colPosition = 0\n const itemsAtRightEdge = row.map((item) => {\n const span = item.span || 1\n colPosition += span\n return colPosition >= column\n })\n\n return (\n <React.Fragment key={rowIndex}>\n <tr>\n {row.map((item, itemIndex) => (\n <th\n key={`${item.key}-label`}\n colSpan={item.span || 1}\n className={cn(\n labelCellVariants({ size, color }),\n itemsAtRightEdge[itemIndex] && 'border-r-0',\n )}\n >\n {item.label}\n </th>\n ))}\n </tr>\n <tr>\n {row.map((item, itemIndex) => (\n <td\n key={`${item.key}-value`}\n colSpan={item.span || 1}\n className={cn(\n valueCellVariants({ size }),\n itemsAtRightEdge[itemIndex] && 'border-r-0',\n isLastRow && 'border-b-0',\n )}\n >\n {item.children}\n </td>\n ))}\n </tr>\n </React.Fragment>\n )\n })}\n </tbody>\n </table>\n )\n }\n\n // Horizontal layout\n return (\n <table className={cn(tableVariants({ bordered, rounded }), className)}>\n <tbody>\n {rows.map((row, rowIndex) => {\n const isLastRow = rowIndex === rows.length - 1\n\n // Calculate which value cells reach the right edge\n let colPosition = 0\n const valueAtRightEdge = row.map((item) => {\n const span = item.span || 1\n colPosition += span * 2 // Each item takes label + value columns\n return colPosition >= column * 2\n })\n\n return (\n <tr key={rowIndex}>\n {row.map((item, itemIndex) => {\n const itemSpan = item.span || 1\n const valueColSpan = itemSpan * 2 - 1\n\n return (\n <React.Fragment key={item.key}>\n <th\n className={cn(\n labelCellVariants({ size, color }),\n isLastRow && 'border-b-0',\n )}\n >\n {item.label}\n </th>\n <td\n colSpan={valueColSpan}\n className={cn(\n valueCellVariants({ size }),\n valueAtRightEdge[itemIndex] && 'border-r-0',\n isLastRow && 'border-b-0',\n )}\n >\n {item.children}\n </td>\n </React.Fragment>\n )\n })}\n </tr>\n )\n })}\n </tbody>\n </table>\n )\n },\n)\n\nDescriptions.displayName = 'Descriptions'\n\nexport type * from './types'\nexport default Descriptions\n"]}
@@ -0,0 +1,324 @@
1
+ import { cn } from './chunk-YNNAOXU5.js';
2
+ import { cva } from 'class-variance-authority';
3
+ import { ChevronRight, Check, Minus } from 'lucide-react';
4
+ import React from 'react';
5
+ import { jsx, jsxs } from 'react/jsx-runtime';
6
+
7
+ var treeItemVariants = cva(
8
+ "flex items-center gap-2 px-2 rounded cursor-pointer select-none transition-all duration-200 ease-out",
9
+ {
10
+ variants: {
11
+ size: {
12
+ xs: "text-xs",
13
+ sm: "text-sm",
14
+ md: "text-base",
15
+ lg: "text-lg"
16
+ },
17
+ disabled: {
18
+ true: "opacity-50 cursor-not-allowed",
19
+ false: "hover:bg-surface"
20
+ },
21
+ selected: {
22
+ true: "bg-primary/10 text-primary",
23
+ false: "text-text-primary"
24
+ }
25
+ },
26
+ defaultVariants: {
27
+ size: "md",
28
+ disabled: false,
29
+ selected: false
30
+ }
31
+ }
32
+ );
33
+ var iconSizes = {
34
+ xs: "h-3 w-3",
35
+ sm: "h-3.5 w-3.5",
36
+ md: "h-4 w-4",
37
+ lg: "h-5 w-5"
38
+ };
39
+ var Tree = React.memo(
40
+ ({
41
+ data,
42
+ defaultExpandedKeys = [],
43
+ expandedKeys,
44
+ onExpand,
45
+ checkable = false,
46
+ checkedKeys,
47
+ defaultCheckedKeys = [],
48
+ onCheck,
49
+ selectable = true,
50
+ selectedKeys,
51
+ defaultSelectedKeys = [],
52
+ onSelect,
53
+ disabled = false,
54
+ size = "md",
55
+ showLine = false,
56
+ showIcon = true,
57
+ defaultExpandAll = false,
58
+ className
59
+ }) => {
60
+ const [internalExpandedKeys, setInternalExpandedKeys] = React.useState(defaultExpandAll ? getAllKeys(data) : defaultExpandedKeys);
61
+ const [internalCheckedKeys, setInternalCheckedKeys] = React.useState(defaultCheckedKeys);
62
+ const [internalSelectedKeys, setInternalSelectedKeys] = React.useState(defaultSelectedKeys);
63
+ const currentExpandedKeys = expandedKeys !== void 0 ? expandedKeys : internalExpandedKeys;
64
+ const currentCheckedKeys = checkedKeys !== void 0 ? checkedKeys : internalCheckedKeys;
65
+ const currentSelectedKeys = selectedKeys !== void 0 ? selectedKeys : internalSelectedKeys;
66
+ function getAllKeys(nodes) {
67
+ const keys = [];
68
+ const traverse = (items) => {
69
+ items.forEach((item) => {
70
+ keys.push(item.key);
71
+ if (item.children) {
72
+ traverse(item.children);
73
+ }
74
+ });
75
+ };
76
+ traverse(nodes);
77
+ return keys;
78
+ }
79
+ const getAllLeafKeys = React.useCallback((node) => {
80
+ const keys = [];
81
+ const traverse = (n) => {
82
+ if (!n.children || n.children.length === 0 || n.isLeaf) {
83
+ keys.push(n.key);
84
+ } else {
85
+ n.children.forEach((child) => traverse(child));
86
+ }
87
+ };
88
+ traverse(node);
89
+ return keys;
90
+ }, []);
91
+ const getNodeByKey = React.useCallback(
92
+ (key) => {
93
+ const traverse = (nodes) => {
94
+ for (const node of nodes) {
95
+ if (node.key === key) return node;
96
+ if (node.children) {
97
+ const found = traverse(node.children);
98
+ if (found) return found;
99
+ }
100
+ }
101
+ return null;
102
+ };
103
+ return traverse(data);
104
+ },
105
+ [data]
106
+ );
107
+ const getCheckedNodes = React.useCallback(
108
+ (keys) => {
109
+ return keys.map((key) => getNodeByKey(key)).filter((node) => node !== null);
110
+ },
111
+ [getNodeByKey]
112
+ );
113
+ const getCheckState = React.useCallback(
114
+ (node) => {
115
+ if (!node.children || node.children.length === 0 || node.isLeaf) {
116
+ return {
117
+ checked: currentCheckedKeys.includes(node.key),
118
+ indeterminate: false
119
+ };
120
+ }
121
+ const leafKeys = getAllLeafKeys(node);
122
+ const checkedCount = leafKeys.filter(
123
+ (key) => currentCheckedKeys.includes(key)
124
+ ).length;
125
+ return {
126
+ checked: checkedCount === leafKeys.length && leafKeys.length > 0,
127
+ indeterminate: checkedCount > 0 && checkedCount < leafKeys.length
128
+ };
129
+ },
130
+ [currentCheckedKeys, getAllLeafKeys]
131
+ );
132
+ const handleExpand = React.useCallback(
133
+ (key) => {
134
+ const newExpandedKeys = currentExpandedKeys.includes(key) ? currentExpandedKeys.filter((k) => k !== key) : [...currentExpandedKeys, key];
135
+ if (expandedKeys === void 0) {
136
+ setInternalExpandedKeys(newExpandedKeys);
137
+ }
138
+ onExpand?.(newExpandedKeys);
139
+ },
140
+ [currentExpandedKeys, expandedKeys, onExpand]
141
+ );
142
+ const handleCheck = React.useCallback(
143
+ (node, checked) => {
144
+ if (disabled || node.disabled) return;
145
+ const leafKeys = getAllLeafKeys(node);
146
+ let newCheckedKeys;
147
+ if (checked) {
148
+ const keysToAdd = leafKeys.filter(
149
+ (key) => !currentCheckedKeys.includes(key)
150
+ );
151
+ newCheckedKeys = [...currentCheckedKeys, ...keysToAdd];
152
+ } else {
153
+ newCheckedKeys = currentCheckedKeys.filter(
154
+ (key) => !leafKeys.includes(key)
155
+ );
156
+ }
157
+ if (checkedKeys === void 0) {
158
+ setInternalCheckedKeys(newCheckedKeys);
159
+ }
160
+ const checkedNodes = getCheckedNodes(newCheckedKeys);
161
+ onCheck?.(newCheckedKeys, {
162
+ checked,
163
+ node,
164
+ checkedNodes
165
+ });
166
+ },
167
+ [
168
+ disabled,
169
+ getAllLeafKeys,
170
+ currentCheckedKeys,
171
+ checkedKeys,
172
+ onCheck,
173
+ getCheckedNodes
174
+ ]
175
+ );
176
+ const handleSelect = React.useCallback(
177
+ (node) => {
178
+ if (disabled || node.disabled || !selectable) return;
179
+ const isSelected = currentSelectedKeys.includes(node.key);
180
+ const newSelectedKeys = isSelected ? currentSelectedKeys.filter((k) => k !== node.key) : [...currentSelectedKeys, node.key];
181
+ if (selectedKeys === void 0) {
182
+ setInternalSelectedKeys(newSelectedKeys);
183
+ }
184
+ onSelect?.(newSelectedKeys, {
185
+ selected: !isSelected,
186
+ node
187
+ });
188
+ },
189
+ [disabled, selectable, currentSelectedKeys, selectedKeys, onSelect]
190
+ );
191
+ const flattenTree = React.useCallback(
192
+ (nodes, level = 0) => {
193
+ const result = [];
194
+ nodes.forEach((node) => {
195
+ result.push({ node, level });
196
+ const hasChildren = node.children && node.children.length > 0 && !node.isLeaf;
197
+ const isExpanded = currentExpandedKeys.includes(node.key);
198
+ if (hasChildren && isExpanded) {
199
+ result.push(...flattenTree(node.children, level + 1));
200
+ }
201
+ });
202
+ return result;
203
+ },
204
+ [currentExpandedKeys]
205
+ );
206
+ const flatNodes = React.useMemo(
207
+ () => flattenTree(data),
208
+ [data, flattenTree]
209
+ );
210
+ const renderNode = React.useCallback(
211
+ (item, index) => {
212
+ const { node, level } = item;
213
+ const hasChildren = node.children && node.children.length > 0 && !node.isLeaf;
214
+ const isExpanded = currentExpandedKeys.includes(node.key);
215
+ const isSelected = currentSelectedKeys.includes(node.key);
216
+ const checkState = checkable ? getCheckState(node) : null;
217
+ return /* @__PURE__ */ jsx(
218
+ "div",
219
+ {
220
+ className: "relative animate-in fade-in slide-in-from-top-1 duration-200",
221
+ children: /* @__PURE__ */ jsxs(
222
+ "div",
223
+ {
224
+ className: cn(
225
+ treeItemVariants({
226
+ size,
227
+ disabled: !!node.disabled,
228
+ selected: isSelected
229
+ }),
230
+ className
231
+ ),
232
+ children: [
233
+ Array.from({ length: level }).map((_, i) => {
234
+ const shouldDrawLine = showLine && flatNodes.slice(index + 1).some((n) => n.level === i);
235
+ return /* @__PURE__ */ jsx(
236
+ "span",
237
+ {
238
+ className: "relative inline-block w-4 h-6 shrink-0",
239
+ children: shouldDrawLine && /* @__PURE__ */ jsx("span", { className: "absolute top-0 left-1/2 bottom-0 h-full border-l border-border -translate-x-px" })
240
+ },
241
+ i
242
+ );
243
+ }),
244
+ hasChildren ? /* @__PURE__ */ jsx(
245
+ "button",
246
+ {
247
+ type: "button",
248
+ onClick: (e) => {
249
+ e.stopPropagation();
250
+ handleExpand(node.key);
251
+ },
252
+ className: "shrink-0 hover:text-primary transition-colors duration-200",
253
+ disabled: disabled || node.disabled,
254
+ children: /* @__PURE__ */ jsx(
255
+ ChevronRight,
256
+ {
257
+ className: cn(
258
+ iconSizes[size],
259
+ "transition-transform duration-300 ease-out",
260
+ isExpanded && "rotate-90"
261
+ )
262
+ }
263
+ )
264
+ }
265
+ ) : /* @__PURE__ */ jsx("span", { className: cn("shrink-0", iconSizes[size]) }),
266
+ checkable && /* @__PURE__ */ jsxs(
267
+ "div",
268
+ {
269
+ onClick: (e) => {
270
+ e.stopPropagation();
271
+ handleCheck(node, !checkState?.checked);
272
+ },
273
+ className: cn(
274
+ "w-4 h-4 border rounded flex items-center justify-center shrink-0 cursor-pointer transition-all duration-200",
275
+ checkState?.checked ? "bg-primary border-primary" : "border-border",
276
+ (disabled || node.disabled) && "opacity-50 cursor-not-allowed"
277
+ ),
278
+ children: [
279
+ checkState?.checked && /* @__PURE__ */ jsx(Check, { className: "h-3 w-3 text-background animate-in zoom-in-50 duration-200" }),
280
+ checkState?.indeterminate && !checkState?.checked && /* @__PURE__ */ jsx(Minus, { className: "h-3 w-3 text-primary animate-in zoom-in-50 duration-200" })
281
+ ]
282
+ }
283
+ ),
284
+ showIcon && node.icon && /* @__PURE__ */ jsx("span", { className: "shrink-0", children: node.icon }),
285
+ /* @__PURE__ */ jsx(
286
+ "span",
287
+ {
288
+ onClick: () => handleSelect(node),
289
+ className: "flex-1 truncate",
290
+ children: node.label
291
+ }
292
+ )
293
+ ]
294
+ }
295
+ )
296
+ },
297
+ node.key
298
+ );
299
+ },
300
+ [
301
+ currentExpandedKeys,
302
+ currentSelectedKeys,
303
+ checkable,
304
+ getCheckState,
305
+ size,
306
+ className,
307
+ disabled,
308
+ handleExpand,
309
+ handleCheck,
310
+ handleSelect,
311
+ showIcon,
312
+ showLine,
313
+ flatNodes
314
+ ]
315
+ );
316
+ return /* @__PURE__ */ jsx("div", { className: cn("w-full", className), children: flatNodes.map((item, index) => renderNode(item, index)) });
317
+ }
318
+ );
319
+ Tree.displayName = "Tree";
320
+ var tree_default = Tree;
321
+
322
+ export { tree_default };
323
+ //# sourceMappingURL=chunk-SAVE5ACL.js.map
324
+ //# sourceMappingURL=chunk-SAVE5ACL.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/tree/index.tsx"],"names":[],"mappings":"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","file":"chunk-SAVE5ACL.js","sourcesContent":["import { cva } from 'class-variance-authority'\nimport { Check, ChevronRight, Minus } from 'lucide-react'\nimport React from 'react'\n\nimport { cn } from '../utils'\nimport type { TreeNode, TreeProps } from './types'\n\nconst treeItemVariants = cva(\n 'flex items-center gap-2 px-2 rounded cursor-pointer select-none transition-all duration-200 ease-out',\n {\n variants: {\n size: {\n xs: 'text-xs',\n sm: 'text-sm',\n md: 'text-base',\n lg: 'text-lg',\n },\n disabled: {\n true: 'opacity-50 cursor-not-allowed',\n false: 'hover:bg-surface',\n },\n selected: {\n true: 'bg-primary/10 text-primary',\n false: 'text-text-primary',\n },\n },\n defaultVariants: {\n size: 'md',\n disabled: false,\n selected: false,\n },\n },\n)\n\nconst iconSizes = {\n xs: 'h-3 w-3',\n sm: 'h-3.5 w-3.5',\n md: 'h-4 w-4',\n lg: 'h-5 w-5',\n}\n\nconst Tree = React.memo<TreeProps>(\n ({\n data,\n defaultExpandedKeys = [],\n expandedKeys,\n onExpand,\n checkable = false,\n checkedKeys,\n defaultCheckedKeys = [],\n onCheck,\n selectable = true,\n selectedKeys,\n defaultSelectedKeys = [],\n onSelect,\n disabled = false,\n size = 'md',\n showLine = false,\n showIcon = true,\n defaultExpandAll = false,\n className,\n }) => {\n const [internalExpandedKeys, setInternalExpandedKeys] = React.useState<\n string[]\n >(defaultExpandAll ? getAllKeys(data) : defaultExpandedKeys)\n const [internalCheckedKeys, setInternalCheckedKeys] =\n React.useState<string[]>(defaultCheckedKeys)\n const [internalSelectedKeys, setInternalSelectedKeys] =\n React.useState<string[]>(defaultSelectedKeys)\n\n const currentExpandedKeys =\n expandedKeys !== undefined ? expandedKeys : internalExpandedKeys\n const currentCheckedKeys =\n checkedKeys !== undefined ? checkedKeys : internalCheckedKeys\n const currentSelectedKeys =\n selectedKeys !== undefined ? selectedKeys : internalSelectedKeys\n\n function getAllKeys(nodes: TreeNode[]): string[] {\n const keys: string[] = []\n const traverse = (items: TreeNode[]) => {\n items.forEach((item) => {\n keys.push(item.key)\n if (item.children) {\n traverse(item.children)\n }\n })\n }\n traverse(nodes)\n return keys\n }\n\n const getAllLeafKeys = React.useCallback((node: TreeNode): string[] => {\n const keys: string[] = []\n\n const traverse = (n: TreeNode) => {\n if (!n.children || n.children.length === 0 || n.isLeaf) {\n keys.push(n.key)\n } else {\n n.children.forEach((child) => traverse(child))\n }\n }\n\n traverse(node)\n return keys\n }, [])\n\n const getNodeByKey = React.useCallback(\n (key: string): TreeNode | null => {\n const traverse = (nodes: TreeNode[]): TreeNode | null => {\n for (const node of nodes) {\n if (node.key === key) return node\n if (node.children) {\n const found = traverse(node.children)\n if (found) return found\n }\n }\n return null\n }\n return traverse(data)\n },\n [data],\n )\n\n const getCheckedNodes = React.useCallback(\n (keys: string[]): TreeNode[] => {\n return keys\n .map((key) => getNodeByKey(key))\n .filter((node): node is TreeNode => node !== null)\n },\n [getNodeByKey],\n )\n\n const getCheckState = React.useCallback(\n (node: TreeNode): { checked: boolean; indeterminate: boolean } => {\n if (!node.children || node.children.length === 0 || node.isLeaf) {\n return {\n checked: currentCheckedKeys.includes(node.key),\n indeterminate: false,\n }\n }\n\n const leafKeys = getAllLeafKeys(node)\n const checkedCount = leafKeys.filter((key) =>\n currentCheckedKeys.includes(key),\n ).length\n\n return {\n checked: checkedCount === leafKeys.length && leafKeys.length > 0,\n indeterminate: checkedCount > 0 && checkedCount < leafKeys.length,\n }\n },\n [currentCheckedKeys, getAllLeafKeys],\n )\n\n const handleExpand = React.useCallback(\n (key: string) => {\n const newExpandedKeys = currentExpandedKeys.includes(key)\n ? currentExpandedKeys.filter((k) => k !== key)\n : [...currentExpandedKeys, key]\n\n if (expandedKeys === undefined) {\n setInternalExpandedKeys(newExpandedKeys)\n }\n onExpand?.(newExpandedKeys)\n },\n [currentExpandedKeys, expandedKeys, onExpand],\n )\n\n const handleCheck = React.useCallback(\n (node: TreeNode, checked: boolean) => {\n if (disabled || node.disabled) return\n\n const leafKeys = getAllLeafKeys(node)\n let newCheckedKeys: string[]\n\n if (checked) {\n // Add all leaf keys that aren't already checked\n const keysToAdd = leafKeys.filter(\n (key) => !currentCheckedKeys.includes(key),\n )\n newCheckedKeys = [...currentCheckedKeys, ...keysToAdd]\n } else {\n // Remove all leaf keys\n newCheckedKeys = currentCheckedKeys.filter(\n (key) => !leafKeys.includes(key),\n )\n }\n\n if (checkedKeys === undefined) {\n setInternalCheckedKeys(newCheckedKeys)\n }\n\n const checkedNodes = getCheckedNodes(newCheckedKeys)\n onCheck?.(newCheckedKeys, {\n checked,\n node,\n checkedNodes,\n })\n },\n [\n disabled,\n getAllLeafKeys,\n currentCheckedKeys,\n checkedKeys,\n onCheck,\n getCheckedNodes,\n ],\n )\n\n const handleSelect = React.useCallback(\n (node: TreeNode) => {\n if (disabled || node.disabled || !selectable) return\n\n const isSelected = currentSelectedKeys.includes(node.key)\n const newSelectedKeys = isSelected\n ? currentSelectedKeys.filter((k) => k !== node.key)\n : [...currentSelectedKeys, node.key]\n\n if (selectedKeys === undefined) {\n setInternalSelectedKeys(newSelectedKeys)\n }\n\n onSelect?.(newSelectedKeys, {\n selected: !isSelected,\n node,\n })\n },\n [disabled, selectable, currentSelectedKeys, selectedKeys, onSelect],\n )\n\n const flattenTree = React.useCallback(\n (\n nodes: TreeNode[],\n level: number = 0,\n ): Array<{ node: TreeNode; level: number }> => {\n const result: Array<{ node: TreeNode; level: number }> = []\n\n nodes.forEach((node) => {\n result.push({ node, level })\n\n const hasChildren =\n node.children && node.children.length > 0 && !node.isLeaf\n const isExpanded = currentExpandedKeys.includes(node.key)\n\n if (hasChildren && isExpanded) {\n result.push(...flattenTree(node.children!, level + 1))\n }\n })\n\n return result\n },\n [currentExpandedKeys],\n )\n\n const flatNodes = React.useMemo(\n () => flattenTree(data),\n [data, flattenTree],\n )\n\n const renderNode = React.useCallback(\n (\n item: { node: TreeNode; level: number },\n index: number,\n ): React.ReactNode => {\n const { node, level } = item\n const hasChildren =\n node.children && node.children.length > 0 && !node.isLeaf\n const isExpanded = currentExpandedKeys.includes(node.key)\n const isSelected = currentSelectedKeys.includes(node.key)\n const checkState = checkable ? getCheckState(node) : null\n\n return (\n <div\n key={node.key}\n className=\"relative animate-in fade-in slide-in-from-top-1 duration-200\"\n >\n <div\n className={cn(\n treeItemVariants({\n size,\n disabled: !!node.disabled,\n selected: isSelected,\n }),\n className,\n )}\n >\n {/* Indentation units with vertical lines */}\n {Array.from({ length: level }).map((_, i) => {\n // Check if this indent level should have a vertical line\n const shouldDrawLine =\n showLine &&\n flatNodes.slice(index + 1).some((n) => n.level === i)\n\n return (\n <span\n key={i}\n className=\"relative inline-block w-4 h-6 shrink-0\"\n >\n {/* Vertical line connecting siblings */}\n {shouldDrawLine && (\n <span className=\"absolute top-0 left-1/2 bottom-0 h-full border-l border-border -translate-x-px\" />\n )}\n </span>\n )\n })}\n\n {/* Expand/Collapse Icon */}\n {hasChildren ? (\n <button\n type=\"button\"\n onClick={(e) => {\n e.stopPropagation()\n handleExpand(node.key)\n }}\n className=\"shrink-0 hover:text-primary transition-colors duration-200\"\n disabled={disabled || node.disabled}\n >\n <ChevronRight\n className={cn(\n iconSizes[size],\n 'transition-transform duration-300 ease-out',\n isExpanded && 'rotate-90',\n )}\n />\n </button>\n ) : (\n <span className={cn('shrink-0', iconSizes[size])} />\n )}\n\n {/* Checkbox */}\n {checkable && (\n <div\n onClick={(e) => {\n e.stopPropagation()\n handleCheck(node, !checkState?.checked)\n }}\n className={cn(\n 'w-4 h-4 border rounded flex items-center justify-center shrink-0 cursor-pointer transition-all duration-200',\n checkState?.checked\n ? 'bg-primary border-primary'\n : 'border-border',\n (disabled || node.disabled) &&\n 'opacity-50 cursor-not-allowed',\n )}\n >\n {checkState?.checked && (\n <Check className=\"h-3 w-3 text-background animate-in zoom-in-50 duration-200\" />\n )}\n {checkState?.indeterminate && !checkState?.checked && (\n <Minus className=\"h-3 w-3 text-primary animate-in zoom-in-50 duration-200\" />\n )}\n </div>\n )}\n\n {/* Icon */}\n {showIcon && node.icon && (\n <span className=\"shrink-0\">{node.icon}</span>\n )}\n\n {/* Label */}\n <span\n onClick={() => handleSelect(node)}\n className=\"flex-1 truncate\"\n >\n {node.label}\n </span>\n </div>\n </div>\n )\n },\n [\n currentExpandedKeys,\n currentSelectedKeys,\n checkable,\n getCheckState,\n size,\n className,\n disabled,\n handleExpand,\n handleCheck,\n handleSelect,\n showIcon,\n showLine,\n flatNodes,\n ],\n )\n\n return (\n <div className={cn('w-full', className)}>\n {flatNodes.map((item, index) => renderNode(item, index))}\n </div>\n )\n },\n)\n\nTree.displayName = 'Tree'\n\nexport type * from './types'\nexport default Tree\n"]}