@proyecto-viviana/ui 0.3.4 → 0.4.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 (438) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +80 -157
  3. package/dist/ActionButton.d.ts +2 -0
  4. package/dist/ActionButton.d.ts.map +1 -0
  5. package/dist/ActionButton.js +1 -0
  6. package/dist/ActionButton.jsx +1 -0
  7. package/dist/ActionMenu.d.ts +2 -0
  8. package/dist/ActionMenu.d.ts.map +1 -0
  9. package/dist/ActionMenu.js +1 -0
  10. package/dist/ActionMenu.jsx +1 -0
  11. package/dist/Breadcrumbs.d.ts +2 -0
  12. package/dist/Breadcrumbs.d.ts.map +1 -0
  13. package/dist/Breadcrumbs.js +1 -0
  14. package/dist/Breadcrumbs.jsx +1 -0
  15. package/dist/Button.d.ts +2 -0
  16. package/dist/Button.d.ts.map +1 -0
  17. package/dist/Button.js +1 -0
  18. package/dist/Button.jsx +1 -0
  19. package/dist/Calendar.d.ts +2 -0
  20. package/dist/Calendar.d.ts.map +1 -0
  21. package/dist/Calendar.js +1 -0
  22. package/dist/Calendar.jsx +1 -0
  23. package/dist/CalendarCard.d.ts +2 -0
  24. package/dist/CalendarCard.d.ts.map +1 -0
  25. package/dist/CalendarCard.js +97 -0
  26. package/dist/CalendarCard.js.map +1 -0
  27. package/dist/CalendarCard.jsx +51 -0
  28. package/dist/CalendarCard.jsx.map +1 -0
  29. package/dist/Card.d.ts +2 -0
  30. package/dist/Card.d.ts.map +1 -0
  31. package/dist/Card.js +1 -0
  32. package/dist/Card.jsx +1 -0
  33. package/dist/CardView.d.ts +2 -0
  34. package/dist/CardView.d.ts.map +1 -0
  35. package/dist/CardView.js +1 -0
  36. package/dist/CardView.jsx +1 -0
  37. package/dist/CenterBaseline.d.ts +2 -0
  38. package/dist/CenterBaseline.d.ts.map +1 -0
  39. package/dist/CenterBaseline.js +1 -0
  40. package/dist/CenterBaseline.jsx +1 -0
  41. package/dist/Chip.d.ts +2 -0
  42. package/dist/Chip.d.ts.map +1 -0
  43. package/dist/Chip.js +2 -0
  44. package/dist/Chip.jsx +2 -0
  45. package/dist/ColorArea.d.ts +2 -0
  46. package/dist/ColorArea.d.ts.map +1 -0
  47. package/dist/ColorArea.js +1 -0
  48. package/dist/ColorArea.jsx +1 -0
  49. package/dist/ColorField.d.ts +2 -0
  50. package/dist/ColorField.d.ts.map +1 -0
  51. package/dist/ColorField.js +1 -0
  52. package/dist/ColorField.jsx +1 -0
  53. package/dist/ColorSlider.d.ts +2 -0
  54. package/dist/ColorSlider.d.ts.map +1 -0
  55. package/dist/ColorSlider.js +1 -0
  56. package/dist/ColorSlider.jsx +1 -0
  57. package/dist/ColorSwatch.d.ts +2 -0
  58. package/dist/ColorSwatch.d.ts.map +1 -0
  59. package/dist/ColorSwatch.js +1 -0
  60. package/dist/ColorSwatch.jsx +1 -0
  61. package/dist/ColorSwatchPicker.d.ts +2 -0
  62. package/dist/ColorSwatchPicker.d.ts.map +1 -0
  63. package/dist/ColorSwatchPicker.js +1 -0
  64. package/dist/ColorSwatchPicker.jsx +1 -0
  65. package/dist/ColorWheel.d.ts +2 -0
  66. package/dist/ColorWheel.d.ts.map +1 -0
  67. package/dist/ColorWheel.js +1 -0
  68. package/dist/ColorWheel.jsx +1 -0
  69. package/dist/ContrastIcon.d.ts +3 -0
  70. package/dist/ContrastIcon.d.ts.map +1 -0
  71. package/dist/ContrastIcon.js +3 -0
  72. package/dist/ContrastIcon.jsx +3 -0
  73. package/dist/Conversation.d.ts +2 -0
  74. package/dist/Conversation.d.ts.map +1 -0
  75. package/dist/Conversation.js +177 -0
  76. package/dist/Conversation.js.map +1 -0
  77. package/dist/Conversation.jsx +107 -0
  78. package/dist/Conversation.jsx.map +1 -0
  79. package/dist/Disclosure.d.ts +2 -0
  80. package/dist/Disclosure.d.ts.map +1 -0
  81. package/dist/Disclosure.js +1 -0
  82. package/dist/Disclosure.jsx +1 -0
  83. package/dist/EventCard.d.ts +2 -0
  84. package/dist/EventCard.d.ts.map +1 -0
  85. package/dist/EventCard.js +173 -0
  86. package/dist/EventCard.js.map +1 -0
  87. package/dist/EventCard.jsx +96 -0
  88. package/dist/EventCard.jsx.map +1 -0
  89. package/dist/FileTrigger.d.ts +2 -0
  90. package/dist/FileTrigger.d.ts.map +1 -0
  91. package/dist/FileTrigger.js +1 -0
  92. package/dist/FileTrigger.jsx +1 -0
  93. package/dist/GitHubIcon.d.ts +2 -0
  94. package/dist/GitHubIcon.d.ts.map +1 -0
  95. package/dist/GitHubIcon.js +1 -0
  96. package/dist/GitHubIcon.jsx +1 -0
  97. package/dist/LightenIcon.d.ts +3 -0
  98. package/dist/LightenIcon.d.ts.map +1 -0
  99. package/dist/LightenIcon.js +3 -0
  100. package/dist/LightenIcon.jsx +3 -0
  101. package/dist/LinkButton.d.ts +2 -0
  102. package/dist/LinkButton.d.ts.map +1 -0
  103. package/dist/LinkButton.js +1 -0
  104. package/dist/LinkButton.jsx +1 -0
  105. package/dist/ListView.d.ts +2 -0
  106. package/dist/ListView.d.ts.map +1 -0
  107. package/dist/ListView.js +1 -0
  108. package/dist/ListView.jsx +1 -0
  109. package/dist/Logo.d.ts +2 -0
  110. package/dist/Logo.d.ts.map +1 -0
  111. package/dist/Logo.js +116 -0
  112. package/dist/Logo.js.map +1 -0
  113. package/dist/Logo.jsx +101 -0
  114. package/dist/Logo.jsx.map +1 -0
  115. package/dist/Menu.d.ts +2 -0
  116. package/dist/Menu.d.ts.map +1 -0
  117. package/dist/Menu.js +1 -0
  118. package/dist/Menu.jsx +1 -0
  119. package/dist/PageLayout.d.ts +2 -0
  120. package/dist/PageLayout.d.ts.map +1 -0
  121. package/dist/PageLayout.js +31 -0
  122. package/dist/PageLayout.js.map +1 -0
  123. package/dist/PageLayout.jsx +23 -0
  124. package/dist/PageLayout.jsx.map +1 -0
  125. package/dist/Picker.d.ts +2 -0
  126. package/dist/Picker.d.ts.map +1 -0
  127. package/dist/Picker.js +1 -0
  128. package/dist/Picker.jsx +1 -0
  129. package/dist/ProfileCard.d.ts +2 -0
  130. package/dist/ProfileCard.d.ts.map +1 -0
  131. package/dist/ProfileCard.js +78 -0
  132. package/dist/ProfileCard.js.map +1 -0
  133. package/dist/ProfileCard.jsx +53 -0
  134. package/dist/ProfileCard.jsx.map +1 -0
  135. package/dist/ProjectCard.d.ts +2 -0
  136. package/dist/ProjectCard.d.ts.map +1 -0
  137. package/dist/ProjectCard.js +164 -0
  138. package/dist/ProjectCard.js.map +1 -0
  139. package/dist/ProjectCard.jsx +133 -0
  140. package/dist/ProjectCard.jsx.map +1 -0
  141. package/dist/Provider.d.ts +2 -0
  142. package/dist/Provider.d.ts.map +1 -0
  143. package/dist/Provider.js +1 -0
  144. package/dist/Provider.jsx +1 -0
  145. package/dist/RangeCalendar.d.ts +2 -0
  146. package/dist/RangeCalendar.d.ts.map +1 -0
  147. package/dist/RangeCalendar.js +1 -0
  148. package/dist/RangeCalendar.jsx +1 -0
  149. package/dist/SearchField.d.ts +2 -0
  150. package/dist/SearchField.d.ts.map +1 -0
  151. package/dist/SearchField.js +1 -0
  152. package/dist/SearchField.jsx +1 -0
  153. package/dist/SegmentedControl.d.ts +2 -0
  154. package/dist/SegmentedControl.d.ts.map +1 -0
  155. package/dist/SegmentedControl.js +1 -0
  156. package/dist/SegmentedControl.jsx +1 -0
  157. package/dist/Switch.d.ts +2 -0
  158. package/dist/Switch.d.ts.map +1 -0
  159. package/dist/Switch.js +1 -0
  160. package/dist/Switch.jsx +1 -0
  161. package/dist/Tabs.d.ts +2 -0
  162. package/dist/Tabs.d.ts.map +1 -0
  163. package/dist/Tabs.js +1 -0
  164. package/dist/Tabs.jsx +1 -0
  165. package/dist/TextArea.d.ts +2 -0
  166. package/dist/TextArea.d.ts.map +1 -0
  167. package/dist/TextArea.js +1 -0
  168. package/dist/TextArea.jsx +1 -0
  169. package/dist/TextField.d.ts +2 -0
  170. package/dist/TextField.d.ts.map +1 -0
  171. package/dist/TextField.js +1 -0
  172. package/dist/TextField.jsx +1 -0
  173. package/dist/TimelineItem.d.ts +2 -0
  174. package/dist/TimelineItem.d.ts.map +1 -0
  175. package/dist/TimelineItem.js +137 -0
  176. package/dist/TimelineItem.js.map +1 -0
  177. package/dist/TimelineItem.jsx +70 -0
  178. package/dist/TimelineItem.jsx.map +1 -0
  179. package/dist/TreeView.d.ts +2 -0
  180. package/dist/TreeView.d.ts.map +1 -0
  181. package/dist/TreeView.js +1 -0
  182. package/dist/TreeView.jsx +1 -0
  183. package/dist/chip2.js +82 -0
  184. package/dist/chip2.js.map +1 -0
  185. package/dist/chip2.jsx +68 -0
  186. package/dist/chip2.jsx.map +1 -0
  187. package/dist/components.css +2 -1077
  188. package/dist/custom/calendar-card/index.d.ts.map +1 -1
  189. package/dist/custom/chip/index.d.ts +2 -2
  190. package/dist/custom/chip/index.d.ts.map +1 -1
  191. package/dist/custom/conversation/index.d.ts +2 -2
  192. package/dist/custom/conversation/index.d.ts.map +1 -1
  193. package/dist/custom/event-card/index.d.ts +1 -1
  194. package/dist/custom/event-card/index.d.ts.map +1 -1
  195. package/dist/custom/header/index.d.ts +2 -6
  196. package/dist/custom/header/index.d.ts.map +1 -1
  197. package/dist/custom/lateral-nav/index.d.ts +1 -1
  198. package/dist/custom/lateral-nav/index.d.ts.map +1 -1
  199. package/dist/custom/logo/index.d.ts +1 -18
  200. package/dist/custom/logo/index.d.ts.map +1 -1
  201. package/dist/custom/nav-header/index.d.ts +2 -1
  202. package/dist/custom/nav-header/index.d.ts.map +1 -1
  203. package/dist/custom/page-layout/index.d.ts +1 -7
  204. package/dist/custom/page-layout/index.d.ts.map +1 -1
  205. package/dist/custom/profile-card/index.d.ts +1 -1
  206. package/dist/custom/profile-card/index.d.ts.map +1 -1
  207. package/dist/custom/project-card/index.d.ts +2 -13
  208. package/dist/custom/project-card/index.d.ts.map +1 -1
  209. package/dist/custom/timeline-item/index.d.ts +2 -2
  210. package/dist/custom/timeline-item/index.d.ts.map +1 -1
  211. package/dist/font-faces.css +1 -0
  212. package/dist/index.d.ts +1 -104
  213. package/dist/index.d.ts.map +1 -1
  214. package/dist/index.js +1 -8222
  215. package/dist/index.jsx +1 -0
  216. package/dist/style/runtime.d.ts +2 -0
  217. package/dist/style/runtime.d.ts.map +1 -0
  218. package/dist/style/runtime.js +1 -0
  219. package/dist/style/runtime.jsx +1 -0
  220. package/dist/style.d.ts +2 -0
  221. package/dist/style.d.ts.map +1 -0
  222. package/dist/style.js +1 -0
  223. package/dist/style.jsx +1 -0
  224. package/dist/styles.css +9 -450
  225. package/dist/theme.css +2 -101
  226. package/dist/vite.d.ts +15 -0
  227. package/dist/vite.d.ts.map +1 -0
  228. package/dist/vite.js +74 -0
  229. package/dist/vite.js.map +1 -0
  230. package/dist/vite.jsx +74 -0
  231. package/dist/vite.jsx.map +1 -0
  232. package/dist/viviana-tokens.css +318 -0
  233. package/package.json +300 -44
  234. package/src/ActionButton.ts +1 -0
  235. package/src/ActionMenu.ts +1 -0
  236. package/src/Breadcrumbs.ts +1 -0
  237. package/src/Button.ts +1 -0
  238. package/src/Calendar.ts +1 -0
  239. package/src/CalendarCard.ts +1 -0
  240. package/src/Card.ts +1 -0
  241. package/src/CardView.ts +1 -0
  242. package/src/CenterBaseline.ts +1 -0
  243. package/src/Chip.ts +1 -0
  244. package/src/ColorArea.ts +1 -0
  245. package/src/ColorField.ts +1 -0
  246. package/src/ColorSlider.ts +1 -0
  247. package/src/ColorSwatch.ts +1 -0
  248. package/src/ColorSwatchPicker.ts +1 -0
  249. package/src/ColorWheel.ts +1 -0
  250. package/src/ContrastIcon.ts +2 -0
  251. package/src/Conversation.ts +1 -0
  252. package/src/Disclosure.ts +1 -0
  253. package/src/EventCard.ts +1 -0
  254. package/src/FileTrigger.ts +1 -0
  255. package/src/GitHubIcon.ts +1 -0
  256. package/src/LightenIcon.ts +2 -0
  257. package/src/LinkButton.ts +1 -0
  258. package/src/ListView.ts +1 -0
  259. package/src/Logo.ts +1 -0
  260. package/src/Menu.ts +1 -0
  261. package/src/PageLayout.ts +1 -0
  262. package/src/Picker.ts +1 -0
  263. package/src/ProfileCard.ts +1 -0
  264. package/src/ProjectCard.ts +1 -0
  265. package/src/Provider.ts +1 -0
  266. package/src/RangeCalendar.ts +1 -0
  267. package/src/SearchField.ts +1 -0
  268. package/src/SegmentedControl.ts +1 -0
  269. package/src/Switch.ts +1 -0
  270. package/src/Tabs.ts +1 -0
  271. package/src/TextArea.ts +1 -0
  272. package/src/TextField.ts +1 -0
  273. package/src/TimelineItem.ts +1 -0
  274. package/src/TreeView.ts +1 -0
  275. package/src/components.css +2 -1077
  276. package/src/custom/calendar-card/index.tsx +99 -50
  277. package/src/custom/chip/index.tsx +59 -27
  278. package/src/custom/conversation/index.tsx +149 -55
  279. package/src/custom/event-card/index.tsx +174 -74
  280. package/src/custom/header/index.tsx +64 -33
  281. package/src/custom/lateral-nav/index.tsx +84 -38
  282. package/src/custom/logo/index.tsx +34 -39
  283. package/src/custom/nav-header/index.tsx +81 -25
  284. package/src/custom/page-layout/index.tsx +23 -19
  285. package/src/custom/profile-card/index.tsx +85 -35
  286. package/src/custom/project-card/index.tsx +57 -40
  287. package/src/custom/timeline-item/index.tsx +83 -48
  288. package/src/font-faces.css +1 -0
  289. package/src/index.ts +8 -322
  290. package/src/style/runtime.ts +2 -0
  291. package/src/style.ts +5 -0
  292. package/src/styles.css +6 -450
  293. package/src/theme.css +2 -101
  294. package/src/vite.ts +152 -0
  295. package/src/viviana-tokens.css +318 -0
  296. package/dist/alert/index.d.ts +0 -12
  297. package/dist/alert/index.d.ts.map +0 -1
  298. package/dist/autocomplete/index.d.ts +0 -89
  299. package/dist/autocomplete/index.d.ts.map +0 -1
  300. package/dist/avatar/index.d.ts +0 -17
  301. package/dist/avatar/index.d.ts.map +0 -1
  302. package/dist/badge/index.d.ts +0 -12
  303. package/dist/badge/index.d.ts.map +0 -1
  304. package/dist/breadcrumbs/index.d.ts +0 -38
  305. package/dist/breadcrumbs/index.d.ts.map +0 -1
  306. package/dist/button/Button.d.ts +0 -19
  307. package/dist/button/Button.d.ts.map +0 -1
  308. package/dist/button/index.d.ts +0 -3
  309. package/dist/button/index.d.ts.map +0 -1
  310. package/dist/button/types.d.ts +0 -23
  311. package/dist/button/types.d.ts.map +0 -1
  312. package/dist/calendar/DateField.d.ts +0 -47
  313. package/dist/calendar/DateField.d.ts.map +0 -1
  314. package/dist/calendar/DatePicker.d.ts +0 -48
  315. package/dist/calendar/DatePicker.d.ts.map +0 -1
  316. package/dist/calendar/RangeCalendar.d.ts +0 -42
  317. package/dist/calendar/RangeCalendar.d.ts.map +0 -1
  318. package/dist/calendar/TimeField.d.ts +0 -44
  319. package/dist/calendar/TimeField.d.ts.map +0 -1
  320. package/dist/calendar/index.d.ts +0 -50
  321. package/dist/calendar/index.d.ts.map +0 -1
  322. package/dist/checkbox/index.d.ts +0 -43
  323. package/dist/checkbox/index.d.ts.map +0 -1
  324. package/dist/color/index.d.ts +0 -228
  325. package/dist/color/index.d.ts.map +0 -1
  326. package/dist/combobox/index.d.ts +0 -81
  327. package/dist/combobox/index.d.ts.map +0 -1
  328. package/dist/dialog/Dialog.d.ts +0 -67
  329. package/dist/dialog/Dialog.d.ts.map +0 -1
  330. package/dist/dialog/index.d.ts +0 -3
  331. package/dist/dialog/index.d.ts.map +0 -1
  332. package/dist/disclosure/index.d.ts +0 -84
  333. package/dist/disclosure/index.d.ts.map +0 -1
  334. package/dist/gridlist/index.d.ts +0 -92
  335. package/dist/gridlist/index.d.ts.map +0 -1
  336. package/dist/icon/icons/GitHubIcon.d.ts +0 -7
  337. package/dist/icon/icons/GitHubIcon.d.ts.map +0 -1
  338. package/dist/icon/index.d.ts +0 -28
  339. package/dist/icon/index.d.ts.map +0 -1
  340. package/dist/index.js.map +0 -7
  341. package/dist/index.ssr.js +0 -6631
  342. package/dist/index.ssr.js.map +0 -7
  343. package/dist/landmark/index.d.ts +0 -83
  344. package/dist/landmark/index.d.ts.map +0 -1
  345. package/dist/link/index.d.ts +0 -39
  346. package/dist/link/index.d.ts.map +0 -1
  347. package/dist/listbox/index.d.ts +0 -47
  348. package/dist/listbox/index.d.ts.map +0 -1
  349. package/dist/menu/index.d.ts +0 -74
  350. package/dist/menu/index.d.ts.map +0 -1
  351. package/dist/meter/index.d.ts +0 -49
  352. package/dist/meter/index.d.ts.map +0 -1
  353. package/dist/numberfield/index.d.ts +0 -50
  354. package/dist/numberfield/index.d.ts.map +0 -1
  355. package/dist/popover/index.d.ts +0 -85
  356. package/dist/popover/index.d.ts.map +0 -1
  357. package/dist/progress-bar/index.d.ts +0 -49
  358. package/dist/progress-bar/index.d.ts.map +0 -1
  359. package/dist/radio/index.d.ts +0 -46
  360. package/dist/radio/index.d.ts.map +0 -1
  361. package/dist/searchfield/index.d.ts +0 -44
  362. package/dist/searchfield/index.d.ts.map +0 -1
  363. package/dist/select/index.d.ts +0 -72
  364. package/dist/select/index.d.ts.map +0 -1
  365. package/dist/separator/index.d.ts +0 -42
  366. package/dist/separator/index.d.ts.map +0 -1
  367. package/dist/slider/index.d.ts +0 -53
  368. package/dist/slider/index.d.ts.map +0 -1
  369. package/dist/switch/ToggleSwitch.d.ts +0 -28
  370. package/dist/switch/ToggleSwitch.d.ts.map +0 -1
  371. package/dist/switch/index.d.ts +0 -26
  372. package/dist/switch/index.d.ts.map +0 -1
  373. package/dist/table/index.d.ts +0 -140
  374. package/dist/table/index.d.ts.map +0 -1
  375. package/dist/tabs/index.d.ts +0 -56
  376. package/dist/tabs/index.d.ts.map +0 -1
  377. package/dist/tag-group/index.d.ts +0 -80
  378. package/dist/tag-group/index.d.ts.map +0 -1
  379. package/dist/test-utils/index.d.ts +0 -44
  380. package/dist/test-utils/index.d.ts.map +0 -1
  381. package/dist/textfield/index.d.ts +0 -31
  382. package/dist/textfield/index.d.ts.map +0 -1
  383. package/dist/toast/index.d.ts +0 -101
  384. package/dist/toast/index.d.ts.map +0 -1
  385. package/dist/toolbar/index.d.ts +0 -42
  386. package/dist/toolbar/index.d.ts.map +0 -1
  387. package/dist/tooltip/index.d.ts +0 -78
  388. package/dist/tooltip/index.d.ts.map +0 -1
  389. package/dist/tree/index.d.ts +0 -99
  390. package/dist/tree/index.d.ts.map +0 -1
  391. package/src/alert/index.tsx +0 -48
  392. package/src/assets/favicon.png +0 -0
  393. package/src/assets/fire.gif +0 -0
  394. package/src/autocomplete/index.tsx +0 -313
  395. package/src/avatar/index.tsx +0 -75
  396. package/src/badge/index.tsx +0 -43
  397. package/src/breadcrumbs/index.tsx +0 -207
  398. package/src/button/Button.tsx +0 -74
  399. package/src/button/index.ts +0 -2
  400. package/src/button/types.ts +0 -24
  401. package/src/calendar/DateField.tsx +0 -200
  402. package/src/calendar/DatePicker.tsx +0 -298
  403. package/src/calendar/RangeCalendar.tsx +0 -236
  404. package/src/calendar/TimeField.tsx +0 -196
  405. package/src/calendar/index.tsx +0 -223
  406. package/src/checkbox/index.tsx +0 -257
  407. package/src/color/index.tsx +0 -687
  408. package/src/combobox/index.tsx +0 -383
  409. package/src/dialog/Dialog.tsx +0 -260
  410. package/src/dialog/index.tsx +0 -3
  411. package/src/disclosure/index.tsx +0 -307
  412. package/src/gridlist/index.tsx +0 -403
  413. package/src/icon/icons/GitHubIcon.tsx +0 -20
  414. package/src/icon/index.tsx +0 -48
  415. package/src/landmark/index.tsx +0 -231
  416. package/src/link/index.tsx +0 -130
  417. package/src/listbox/index.tsx +0 -231
  418. package/src/menu/index.tsx +0 -297
  419. package/src/meter/index.tsx +0 -163
  420. package/src/numberfield/index.tsx +0 -482
  421. package/src/popover/index.tsx +0 -260
  422. package/src/progress-bar/index.tsx +0 -169
  423. package/src/radio/index.tsx +0 -173
  424. package/src/searchfield/index.tsx +0 -453
  425. package/src/select/index.tsx +0 -349
  426. package/src/separator/index.tsx +0 -141
  427. package/src/slider/index.tsx +0 -382
  428. package/src/switch/ToggleSwitch.tsx +0 -112
  429. package/src/switch/index.tsx +0 -90
  430. package/src/table/index.tsx +0 -531
  431. package/src/tabs/index.tsx +0 -273
  432. package/src/tag-group/index.tsx +0 -240
  433. package/src/test-utils/index.ts +0 -40
  434. package/src/textfield/index.tsx +0 -211
  435. package/src/toast/index.tsx +0 -324
  436. package/src/toolbar/index.tsx +0 -108
  437. package/src/tooltip/index.tsx +0 -197
  438. package/src/tree/index.tsx +0 -494
@@ -1,197 +0,0 @@
1
- /**
2
- * Tooltip component for proyecto-viviana-ui
3
- *
4
- * A tooltip displays a description of an element on hover or focus.
5
- * Built on top of solidaria-components for accessibility.
6
- */
7
-
8
- import { type JSX, Show, splitProps } from 'solid-js'
9
- import {
10
- Tooltip as HeadlessTooltip,
11
- TooltipTrigger as HeadlessTooltipTrigger,
12
- type TooltipProps as HeadlessTooltipProps,
13
- type TooltipTriggerComponentProps as HeadlessTooltipTriggerProps,
14
- type TooltipRenderProps,
15
- } from '@proyecto-viviana/solidaria-components'
16
-
17
- // ============================================
18
- // TYPES
19
- // ============================================
20
-
21
- export type TooltipPlacement = 'top' | 'bottom' | 'left' | 'right'
22
- export type TooltipVariant = 'default' | 'neutral' | 'info'
23
-
24
- export interface TooltipTriggerProps extends HeadlessTooltipTriggerProps {
25
- /** The children of the tooltip trigger (trigger element and tooltip). */
26
- children: JSX.Element
27
- }
28
-
29
- export interface TooltipProps extends Omit<HeadlessTooltipProps, 'class' | 'style' | 'children'> {
30
- /** The content of the tooltip. */
31
- children: JSX.Element
32
- /** The position of the tooltip relative to the trigger. */
33
- placement?: TooltipPlacement
34
- /** Visual variant of the tooltip. */
35
- variant?: TooltipVariant
36
- /** Additional CSS class name. */
37
- class?: string
38
- /** Whether to show an arrow pointing to the trigger. */
39
- showArrow?: boolean
40
- }
41
-
42
- // ============================================
43
- // STYLES
44
- // ============================================
45
-
46
- // Note: Position is now calculated by the headless layer (solidaria-components)
47
- // so we don't need CSS positioning classes here
48
- const baseStyles = [
49
- 'px-3 py-2 rounded-lg',
50
- 'text-sm font-medium',
51
- 'shadow-lg',
52
- 'pointer-events-auto',
53
- 'animate-in fade-in-0 zoom-in-95',
54
- 'data-[exiting]:animate-out data-[exiting]:fade-out-0 data-[exiting]:zoom-out-95',
55
- ].join(' ')
56
-
57
- const variantStyles: Record<TooltipVariant, string> = {
58
- default: 'bg-neutral-900 text-white dark:bg-neutral-100 dark:text-neutral-900',
59
- neutral: 'bg-neutral-800 text-neutral-100 dark:bg-neutral-200 dark:text-neutral-900',
60
- info: 'bg-blue-600 text-white dark:bg-blue-500',
61
- }
62
-
63
- const arrowStyles: Record<TooltipPlacement, string> = {
64
- top: 'bottom-0 left-1/2 -translate-x-1/2 translate-y-full border-l-transparent border-r-transparent border-b-transparent',
65
- bottom: 'top-0 left-1/2 -translate-x-1/2 -translate-y-full border-l-transparent border-r-transparent border-t-transparent',
66
- left: 'right-0 top-1/2 -translate-y-1/2 translate-x-full border-t-transparent border-b-transparent border-r-transparent',
67
- right: 'left-0 top-1/2 -translate-y-1/2 -translate-x-full border-t-transparent border-b-transparent border-l-transparent',
68
- }
69
-
70
- const getArrowBorderColor = (variant: TooltipVariant): string => {
71
- const colors: Record<TooltipVariant, string> = {
72
- default: 'border-neutral-900 dark:border-neutral-100',
73
- neutral: 'border-neutral-800 dark:border-neutral-200',
74
- info: 'border-blue-600 dark:border-blue-500',
75
- }
76
- return colors[variant]
77
- }
78
-
79
- // ============================================
80
- // COMPONENTS
81
- // ============================================
82
-
83
- /**
84
- * TooltipTrigger wraps around a trigger element and a Tooltip.
85
- * It handles opening and closing the Tooltip when the user hovers
86
- * over or focuses the trigger.
87
- *
88
- * @example
89
- * ```tsx
90
- * <TooltipTrigger>
91
- * <Button>Hover me</Button>
92
- * <Tooltip>This is helpful information</Tooltip>
93
- * </TooltipTrigger>
94
- * ```
95
- */
96
- export function TooltipTrigger(props: TooltipTriggerProps): JSX.Element {
97
- return <HeadlessTooltipTrigger {...props} />
98
- }
99
-
100
- /**
101
- * Styled tooltip component that displays a description on hover or focus.
102
- *
103
- * @example
104
- * ```tsx
105
- * <TooltipTrigger>
106
- * <Button>Save</Button>
107
- * <Tooltip placement="top">Save your changes</Tooltip>
108
- * </TooltipTrigger>
109
- * ```
110
- */
111
- export function Tooltip(props: TooltipProps): JSX.Element {
112
- const [local, rest] = splitProps(props, [
113
- 'placement',
114
- 'variant',
115
- 'class',
116
- 'showArrow',
117
- ])
118
-
119
- const placement = () => local.placement ?? 'top'
120
- const variant = () => local.variant ?? 'default'
121
-
122
- return (
123
- <HeadlessTooltip
124
- {...rest}
125
- placement={placement()}
126
- class={(_renderProps: TooltipRenderProps) => {
127
- const classes = [
128
- baseStyles,
129
- variantStyles[variant()],
130
- local.class ?? '',
131
- ].filter(Boolean).join(' ')
132
- return classes
133
- }}
134
- >
135
- {(renderProps: TooltipRenderProps) => (
136
- <>
137
- {props.children}
138
- <Show when={local.showArrow}>
139
- <div
140
- class={[
141
- 'absolute w-0 h-0 border-4',
142
- arrowStyles[renderProps.placement ?? placement()],
143
- getArrowBorderColor(variant()),
144
- ].join(' ')}
145
- />
146
- </Show>
147
- </>
148
- )}
149
- </HeadlessTooltip>
150
- )
151
- }
152
-
153
- // ============================================
154
- // SIMPLE CSS-ONLY TOOLTIP (Legacy)
155
- // ============================================
156
-
157
- export interface SimpleTooltipProps {
158
- /** The content to show in the tooltip */
159
- label: string
160
- /** The trigger element */
161
- children: JSX.Element
162
- /** Position of the tooltip */
163
- position?: 'top' | 'bottom'
164
- /** Additional CSS class */
165
- class?: string
166
- }
167
-
168
- /**
169
- * Simple CSS-only tooltip component.
170
- * Uses CSS hover effect for performance. No JS state management.
171
- *
172
- * @deprecated Use the accessible Tooltip + TooltipTrigger components instead.
173
- *
174
- * @example
175
- * ```tsx
176
- * <SimpleTooltip label="Save your changes">
177
- * <button>Save</button>
178
- * </SimpleTooltip>
179
- * ```
180
- */
181
- export function SimpleTooltip(props: SimpleTooltipProps): JSX.Element {
182
- const position = () => props.position ?? 'bottom'
183
-
184
- return (
185
- <div class={`vui-tooltip ${props.class ?? ''}`}>
186
- <div class="vui-tooltip__trigger">
187
- {props.children}
188
- </div>
189
- <div class={`vui-tooltip__content vui-tooltip__content--${position()}`}>
190
- <span>{props.label}</span>
191
- </div>
192
- </div>
193
- )
194
- }
195
-
196
- // Re-export types
197
- export type { TooltipRenderProps }
@@ -1,494 +0,0 @@
1
- /**
2
- * Tree component for proyecto-viviana-ui
3
- *
4
- * Styled tree component built on top of solidaria-components.
5
- * Inspired by Spectrum 2's Tree component patterns.
6
- *
7
- * Tree displays hierarchical data with expandable/collapsible nodes,
8
- * supporting keyboard navigation and selection.
9
- */
10
-
11
- import { type JSX, splitProps, createContext, useContext, Show } from 'solid-js'
12
- import {
13
- Tree as HeadlessTree,
14
- TreeItem as HeadlessTreeItem,
15
- TreeExpandButton as HeadlessTreeExpandButton,
16
- TreeSelectionCheckbox as HeadlessTreeSelectionCheckbox,
17
- type TreeProps as HeadlessTreeProps,
18
- type TreeItemProps as HeadlessTreeItemProps,
19
- type TreeExpandButtonProps as HeadlessTreeExpandButtonProps,
20
- type TreeRenderProps,
21
- type TreeItemRenderProps,
22
- type TreeRenderItemState,
23
- } from '@proyecto-viviana/solidaria-components'
24
- import type { Key, TreeItemData } from '@proyecto-viviana/solid-stately'
25
-
26
- // ============================================
27
- // SIZE CONTEXT
28
- // ============================================
29
-
30
- export type TreeSize = 'sm' | 'md' | 'lg'
31
- export type TreeVariant = 'default' | 'bordered' | 'quiet'
32
-
33
- interface TreeContextValue {
34
- size: TreeSize
35
- variant: TreeVariant
36
- }
37
-
38
- const TreeSizeContext = createContext<TreeContextValue>({ size: 'md', variant: 'default' })
39
-
40
- // ============================================
41
- // TYPES
42
- // ============================================
43
-
44
- export interface TreeProps<T extends object>
45
- extends Omit<HeadlessTreeProps<T>, 'class' | 'style'> {
46
- /** The size of the tree. */
47
- size?: TreeSize
48
- /** The visual variant of the tree. */
49
- variant?: TreeVariant
50
- /** Additional CSS class name. */
51
- class?: string
52
- /** Label for the tree. */
53
- label?: string
54
- /** Description for the tree. */
55
- description?: string
56
- }
57
-
58
- export interface TreeItemProps<T extends object>
59
- extends Omit<HeadlessTreeItemProps<T>, 'class' | 'style'> {
60
- /** Additional CSS class name. */
61
- class?: string
62
- /** Optional description text. */
63
- description?: string
64
- /**
65
- * Optional icon to display before the content.
66
- * Use a function returning JSX for SSR compatibility: `icon={() => <FolderIcon />}`
67
- */
68
- icon?: () => JSX.Element
69
- }
70
-
71
- export interface TreeExpandButtonProps extends Omit<HeadlessTreeExpandButtonProps, 'class' | 'style'> {
72
- /** Additional CSS class name. */
73
- class?: string
74
- }
75
-
76
- // ============================================
77
- // STYLES
78
- // ============================================
79
-
80
- const sizeStyles = {
81
- sm: {
82
- tree: 'text-sm',
83
- item: 'py-1 px-2 gap-1',
84
- indent: 16,
85
- icon: 'h-4 w-4',
86
- expandButton: 'h-4 w-4',
87
- label: 'text-sm',
88
- description: 'text-xs',
89
- checkbox: 'w-4 h-4',
90
- },
91
- md: {
92
- tree: 'text-base',
93
- item: 'py-1.5 px-3 gap-2',
94
- indent: 20,
95
- icon: 'h-5 w-5',
96
- expandButton: 'h-5 w-5',
97
- label: 'text-base',
98
- description: 'text-sm',
99
- checkbox: 'w-5 h-5',
100
- },
101
- lg: {
102
- tree: 'text-lg',
103
- item: 'py-2 px-4 gap-2',
104
- indent: 24,
105
- icon: 'h-6 w-6',
106
- expandButton: 'h-6 w-6',
107
- label: 'text-lg',
108
- description: 'text-base',
109
- checkbox: 'w-6 h-6',
110
- },
111
- }
112
-
113
- const variantStyles = {
114
- default: {
115
- tree: 'bg-bg-400 rounded-lg border border-bg-300 p-2',
116
- item: 'rounded-md',
117
- itemHover: 'hover:bg-bg-200/50',
118
- itemSelected: 'bg-accent/10 text-accent',
119
- },
120
- bordered: {
121
- tree: 'bg-bg-400 rounded-lg border-2 border-bg-400 p-2',
122
- item: 'border-b border-bg-300/30 last:border-b-0',
123
- itemHover: 'hover:bg-bg-200/50',
124
- itemSelected: 'bg-accent/10 text-accent',
125
- },
126
- quiet: {
127
- tree: 'bg-transparent',
128
- item: 'rounded-md',
129
- itemHover: 'hover:bg-bg-300/50',
130
- itemSelected: 'bg-accent/10 text-accent',
131
- },
132
- }
133
-
134
- // ============================================
135
- // TREE COMPONENT
136
- // ============================================
137
-
138
- /**
139
- * A tree displays hierarchical data with expandable/collapsible nodes,
140
- * supporting keyboard navigation and selection.
141
- *
142
- * Built on solidaria-components Tree for full accessibility support.
143
- *
144
- * @example
145
- * ```tsx
146
- * const items = [
147
- * {
148
- * key: 'documents',
149
- * value: { name: 'Documents' },
150
- * children: [
151
- * { key: 'doc1', value: { name: 'Report.pdf' } },
152
- * { key: 'doc2', value: { name: 'Notes.txt' } },
153
- * ],
154
- * },
155
- * {
156
- * key: 'images',
157
- * value: { name: 'Images' },
158
- * children: [
159
- * { key: 'img1', value: { name: 'Photo.jpg' } },
160
- * ],
161
- * },
162
- * ]
163
- *
164
- * <Tree items={items} defaultExpandedKeys={['documents']}>
165
- * {(item, state) => (
166
- * <TreeItem id={item.key} icon={() => <FolderIcon />}>
167
- * {item.value.name}
168
- * </TreeItem>
169
- * )}
170
- * </Tree>
171
- * ```
172
- */
173
- export function Tree<T extends object>(props: TreeProps<T>): JSX.Element {
174
- const [local, headlessProps] = splitProps(props, [
175
- 'size',
176
- 'variant',
177
- 'class',
178
- 'label',
179
- 'description',
180
- ])
181
-
182
- const size = () => local.size ?? 'md'
183
- const variant = () => local.variant ?? 'default'
184
- const styles = () => sizeStyles[size()]
185
- const variantStyle = () => variantStyles[variant()]
186
- const customClass = local.class ?? ''
187
-
188
- const getClassName = (renderProps: TreeRenderProps): string => {
189
- const base = 'overflow-auto focus:outline-none'
190
- const sizeClass = styles().tree
191
- const variantClass = variantStyle().tree
192
-
193
- let stateClass = ''
194
- if (renderProps.isDisabled) {
195
- stateClass = 'opacity-50'
196
- }
197
-
198
- const focusClass = renderProps.isFocusVisible
199
- ? 'ring-2 ring-accent-300 ring-offset-2 ring-offset-bg-400'
200
- : ''
201
-
202
- return [base, sizeClass, variantClass, stateClass, focusClass, customClass]
203
- .filter(Boolean)
204
- .join(' ')
205
- }
206
-
207
- const defaultEmptyState = () => (
208
- <div class="py-8 text-center text-primary-400">
209
- <div class="flex flex-col items-center gap-2">
210
- <EmptyTreeIcon class="w-12 h-12 text-primary-500" />
211
- <span>No items</span>
212
- </div>
213
- </div>
214
- )
215
-
216
- const contextValue = () => ({ size: size(), variant: variant() })
217
-
218
- return (
219
- <TreeSizeContext.Provider value={contextValue()}>
220
- <div class="flex flex-col gap-2">
221
- <Show when={local.label}>
222
- <label class={`text-primary-200 font-medium ${styles().label}`}>
223
- {local.label}
224
- </label>
225
- </Show>
226
- <HeadlessTree
227
- {...headlessProps}
228
- class={getClassName}
229
- renderEmptyState={headlessProps.renderEmptyState ?? defaultEmptyState}
230
- />
231
- <Show when={local.description}>
232
- <span class="text-primary-400 text-sm">{local.description}</span>
233
- </Show>
234
- </div>
235
- </TreeSizeContext.Provider>
236
- )
237
- }
238
-
239
- // ============================================
240
- // TREE ITEM COMPONENT
241
- // ============================================
242
-
243
- /**
244
- * An item in a tree.
245
- */
246
- export function TreeItem<T extends object>(props: TreeItemProps<T>): JSX.Element {
247
- const [local, headlessProps] = splitProps(props, [
248
- 'class',
249
- 'description',
250
- 'icon',
251
- ])
252
-
253
- const context = useContext(TreeSizeContext)
254
- const sizeStyle = sizeStyles[context.size]
255
- const variantStyle = variantStyles[context.variant]
256
- const customClass = local.class ?? ''
257
-
258
- const getClassName = (renderProps: TreeItemRenderProps): string => {
259
- const base = 'flex items-center cursor-pointer transition-all duration-150 outline-none'
260
- const sizeClass = sizeStyle.item
261
- const variantClass = variantStyle.item
262
-
263
- let stateClass = ''
264
- if (renderProps.isDisabled) {
265
- stateClass = 'opacity-50 cursor-not-allowed'
266
- } else if (renderProps.isSelected) {
267
- stateClass = variantStyle.itemSelected
268
- } else if (renderProps.isHovered) {
269
- stateClass = variantStyle.itemHover
270
- }
271
-
272
- let textClass = ''
273
- if (!renderProps.isDisabled && !renderProps.isSelected) {
274
- textClass = 'text-primary-200'
275
- }
276
-
277
- const focusClass = renderProps.isFocusVisible
278
- ? 'ring-2 ring-inset ring-accent-300'
279
- : ''
280
-
281
- const pressedClass = renderProps.isPressed ? 'scale-[0.99]' : ''
282
-
283
- return [base, sizeClass, variantClass, stateClass, textClass, focusClass, pressedClass, customClass]
284
- .filter(Boolean)
285
- .join(' ')
286
- }
287
-
288
- const getStyle = (renderProps: TreeItemRenderProps): JSX.CSSProperties => ({
289
- 'padding-left': `${renderProps.level * sizeStyle.indent + 8}px`,
290
- })
291
-
292
- return (
293
- <HeadlessTreeItem {...headlessProps} class={getClassName} style={getStyle}>
294
- {(renderProps: TreeItemRenderProps) => (
295
- <>
296
- {/* Expand button */}
297
- <TreeExpandButton class={`${sizeStyle.expandButton} shrink-0`} />
298
-
299
- {/* Icon */}
300
- <Show when={local.icon}>
301
- <span class={`shrink-0 ${sizeStyle.icon}`}>
302
- {local.icon!()}
303
- </span>
304
- </Show>
305
-
306
- {/* Default folder/file icon if no custom icon */}
307
- <Show when={!local.icon}>
308
- {renderProps.isExpandable ? (
309
- <FolderIcon class={`shrink-0 ${sizeStyle.icon} text-accent-300`} isOpen={renderProps.isExpanded} />
310
- ) : (
311
- <FileIcon class={`shrink-0 ${sizeStyle.icon} text-primary-400`} />
312
- )}
313
- </Show>
314
-
315
- {/* Content */}
316
- <div class="flex flex-col flex-1 min-w-0">
317
- <span class="truncate">
318
- {typeof props.children === 'function'
319
- ? props.children(renderProps)
320
- : props.children}
321
- </span>
322
- <Show when={local.description}>
323
- <span class={`text-primary-400 truncate ${sizeStyle.description}`}>
324
- {local.description}
325
- </span>
326
- </Show>
327
- </div>
328
-
329
- {/* Selection indicator */}
330
- <Show when={renderProps.isSelected}>
331
- <CheckIcon class={`shrink-0 ${sizeStyle.icon} text-accent`} />
332
- </Show>
333
- </>
334
- )}
335
- </HeadlessTreeItem>
336
- )
337
- }
338
-
339
- // ============================================
340
- // TREE EXPAND BUTTON COMPONENT
341
- // ============================================
342
-
343
- /**
344
- * A button to expand/collapse a tree item.
345
- */
346
- export function TreeExpandButton(props: TreeExpandButtonProps): JSX.Element {
347
- const [local, headlessProps] = splitProps(props, ['class'])
348
- const context = useContext(TreeSizeContext)
349
- const sizeStyle = sizeStyles[context.size]
350
- const customClass = local.class ?? ''
351
-
352
- const className = [
353
- 'flex items-center justify-center transition-transform duration-150 text-primary-400 hover:text-primary-200',
354
- customClass,
355
- ]
356
- .filter(Boolean)
357
- .join(' ')
358
-
359
- return (
360
- <HeadlessTreeExpandButton
361
- {...headlessProps}
362
- class={className}
363
- >
364
- {props.children ?? (({ isExpanded }: { isExpanded: boolean }) => (
365
- <ChevronIcon
366
- class={`${sizeStyle.expandButton} transition-transform duration-150 ${
367
- isExpanded ? 'rotate-90' : ''
368
- }`}
369
- />
370
- ))}
371
- </HeadlessTreeExpandButton>
372
- )
373
- }
374
-
375
- // ============================================
376
- // TREE SELECTION CHECKBOX COMPONENT
377
- // ============================================
378
-
379
- /**
380
- * A styled checkbox for item selection in a tree.
381
- */
382
- export function TreeSelectionCheckbox(props: { itemKey: Key; class?: string }): JSX.Element {
383
- const context = useContext(TreeSizeContext)
384
- const sizeStyle = sizeStyles[context.size]
385
- const className = `${sizeStyle.checkbox} rounded border-2 border-primary-500 bg-bg-400 text-accent cursor-pointer checked:bg-accent checked:border-accent focus:ring-2 focus:ring-accent-300 focus:ring-offset-1 focus:ring-offset-bg-400 ${props.class ?? ''}`
386
-
387
- return (
388
- <span class={className}>
389
- <HeadlessTreeSelectionCheckbox itemKey={props.itemKey} />
390
- </span>
391
- )
392
- }
393
-
394
- // ============================================
395
- // ICONS
396
- // ============================================
397
-
398
- function ChevronIcon(props: { class?: string }): JSX.Element {
399
- return (
400
- <svg
401
- class={props.class}
402
- fill="none"
403
- viewBox="0 0 24 24"
404
- stroke="currentColor"
405
- stroke-width="2"
406
- >
407
- <path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7" />
408
- </svg>
409
- )
410
- }
411
-
412
- function FolderIcon(props: { class?: string; isOpen?: boolean }): JSX.Element {
413
- return (
414
- <svg
415
- class={props.class}
416
- fill="none"
417
- viewBox="0 0 24 24"
418
- stroke="currentColor"
419
- stroke-width="1.5"
420
- >
421
- {props.isOpen ? (
422
- <path
423
- stroke-linecap="round"
424
- stroke-linejoin="round"
425
- d="M3.75 9.776c.112-.017.227-.026.344-.026h15.812c.117 0 .232.009.344.026m-16.5 0a2.25 2.25 0 00-1.883 2.542l.857 6a2.25 2.25 0 002.227 1.932H19.05a2.25 2.25 0 002.227-1.932l.857-6a2.25 2.25 0 00-1.883-2.542m-16.5 0V6A2.25 2.25 0 016 3.75h3.879a1.5 1.5 0 011.06.44l2.122 2.12a1.5 1.5 0 001.06.44H18A2.25 2.25 0 0120.25 9v.776"
426
- />
427
- ) : (
428
- <path
429
- stroke-linecap="round"
430
- stroke-linejoin="round"
431
- d="M2.25 12.75V12A2.25 2.25 0 014.5 9.75h15A2.25 2.25 0 0121.75 12v.75m-8.69-6.44l-2.12-2.12a1.5 1.5 0 00-1.061-.44H4.5A2.25 2.25 0 002.25 6v12a2.25 2.25 0 002.25 2.25h15A2.25 2.25 0 0021.75 18V9a2.25 2.25 0 00-2.25-2.25h-5.379a1.5 1.5 0 01-1.06-.44z"
432
- />
433
- )}
434
- </svg>
435
- )
436
- }
437
-
438
- function FileIcon(props: { class?: string }): JSX.Element {
439
- return (
440
- <svg
441
- class={props.class}
442
- fill="none"
443
- viewBox="0 0 24 24"
444
- stroke="currentColor"
445
- stroke-width="1.5"
446
- >
447
- <path
448
- stroke-linecap="round"
449
- stroke-linejoin="round"
450
- d="M19.5 14.25v-2.625a3.375 3.375 0 00-3.375-3.375h-1.5A1.125 1.125 0 0113.5 7.125v-1.5a3.375 3.375 0 00-3.375-3.375H8.25m2.25 0H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 00-9-9z"
451
- />
452
- </svg>
453
- )
454
- }
455
-
456
- function CheckIcon(props: { class?: string }): JSX.Element {
457
- return (
458
- <svg
459
- class={props.class}
460
- fill="none"
461
- viewBox="0 0 24 24"
462
- stroke="currentColor"
463
- stroke-width="2"
464
- >
465
- <path stroke-linecap="round" stroke-linejoin="round" d="M5 13l4 4L19 7" />
466
- </svg>
467
- )
468
- }
469
-
470
- function EmptyTreeIcon(props: { class?: string }): JSX.Element {
471
- return (
472
- <svg
473
- class={props.class}
474
- fill="none"
475
- viewBox="0 0 24 24"
476
- stroke="currentColor"
477
- stroke-width="1.5"
478
- >
479
- <path
480
- stroke-linecap="round"
481
- stroke-linejoin="round"
482
- d="M3.75 6A2.25 2.25 0 016 3.75h2.25A2.25 2.25 0 0110.5 6v2.25a2.25 2.25 0 01-2.25 2.25H6a2.25 2.25 0 01-2.25-2.25V6zM3.75 15.75A2.25 2.25 0 016 13.5h2.25a2.25 2.25 0 012.25 2.25V18a2.25 2.25 0 01-2.25 2.25H6A2.25 2.25 0 013.75 18v-2.25zM13.5 6a2.25 2.25 0 012.25-2.25H18A2.25 2.25 0 0120.25 6v2.25A2.25 2.25 0 0118 10.5h-2.25a2.25 2.25 0 01-2.25-2.25V6z"
483
- />
484
- </svg>
485
- )
486
- }
487
-
488
- // Attach sub-components for convenience
489
- Tree.Item = TreeItem
490
- Tree.ExpandButton = TreeExpandButton
491
- Tree.SelectionCheckbox = TreeSelectionCheckbox
492
-
493
- // Re-export types for convenience
494
- export type { Key, TreeItemData, TreeRenderItemState }