@verdify/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 (443) hide show
  1. package/LICENSE +12 -0
  2. package/README.md +117 -0
  3. package/dist/components/accordion/accordion.d.ts +66 -0
  4. package/dist/components/accordion/accordion.d.ts.map +1 -0
  5. package/dist/components/accordion/accordion.js +97 -0
  6. package/dist/components/accordion/accordion.js.map +1 -0
  7. package/dist/components/accordion/accordion.variants.d.ts +9 -0
  8. package/dist/components/accordion/accordion.variants.d.ts.map +1 -0
  9. package/dist/components/accordion/accordion.variants.js +54 -0
  10. package/dist/components/accordion/accordion.variants.js.map +1 -0
  11. package/dist/components/accordion/index.d.ts +3 -0
  12. package/dist/components/accordion/index.d.ts.map +1 -0
  13. package/dist/components/accordion/index.js +25 -0
  14. package/dist/components/accordion/index.js.map +1 -0
  15. package/dist/components/agent-badge/agent-badge.d.ts +56 -0
  16. package/dist/components/agent-badge/agent-badge.d.ts.map +1 -0
  17. package/dist/components/agent-badge/agent-badge.js +35 -0
  18. package/dist/components/agent-badge/agent-badge.js.map +1 -0
  19. package/dist/components/agent-badge/agent-badge.variants.d.ts +7 -0
  20. package/dist/components/agent-badge/agent-badge.variants.d.ts.map +1 -0
  21. package/dist/components/agent-badge/agent-badge.variants.js +35 -0
  22. package/dist/components/agent-badge/agent-badge.variants.js.map +1 -0
  23. package/dist/components/agent-badge/index.d.ts +3 -0
  24. package/dist/components/agent-badge/index.d.ts.map +1 -0
  25. package/dist/components/agent-badge/index.js +11 -0
  26. package/dist/components/agent-badge/index.js.map +1 -0
  27. package/dist/components/alert/alert.d.ts +94 -0
  28. package/dist/components/alert/alert.d.ts.map +1 -0
  29. package/dist/components/alert/alert.js +105 -0
  30. package/dist/components/alert/alert.js.map +1 -0
  31. package/dist/components/alert/alert.variants.d.ts +15 -0
  32. package/dist/components/alert/alert.variants.d.ts.map +1 -0
  33. package/dist/components/alert/alert.variants.js +74 -0
  34. package/dist/components/alert/alert.variants.js.map +1 -0
  35. package/dist/components/alert/index.d.ts +3 -0
  36. package/dist/components/alert/index.d.ts.map +1 -0
  37. package/dist/components/alert/index.js +37 -0
  38. package/dist/components/alert/index.js.map +1 -0
  39. package/dist/components/avatar/avatar.d.ts +56 -0
  40. package/dist/components/avatar/avatar.d.ts.map +1 -0
  41. package/dist/components/avatar/avatar.js +107 -0
  42. package/dist/components/avatar/avatar.js.map +1 -0
  43. package/dist/components/avatar/avatar.variants.d.ts +11 -0
  44. package/dist/components/avatar/avatar.variants.d.ts.map +1 -0
  45. package/dist/components/avatar/avatar.variants.js +48 -0
  46. package/dist/components/avatar/avatar.variants.js.map +1 -0
  47. package/dist/components/avatar/index.d.ts +3 -0
  48. package/dist/components/avatar/index.d.ts.map +1 -0
  49. package/dist/components/avatar/index.js +15 -0
  50. package/dist/components/avatar/index.js.map +1 -0
  51. package/dist/components/badge/badge.d.ts +30 -0
  52. package/dist/components/badge/badge.d.ts.map +1 -0
  53. package/dist/components/badge/badge.js +33 -0
  54. package/dist/components/badge/badge.js.map +1 -0
  55. package/dist/components/badge/badge.variants.d.ts +7 -0
  56. package/dist/components/badge/badge.variants.d.ts.map +1 -0
  57. package/dist/components/badge/badge.variants.js +33 -0
  58. package/dist/components/badge/badge.variants.js.map +1 -0
  59. package/dist/components/badge/index.d.ts +3 -0
  60. package/dist/components/badge/index.d.ts.map +1 -0
  61. package/dist/components/badge/index.js +8 -0
  62. package/dist/components/badge/index.js.map +1 -0
  63. package/dist/components/breadcrumb/breadcrumb.d.ts +90 -0
  64. package/dist/components/breadcrumb/breadcrumb.d.ts.map +1 -0
  65. package/dist/components/breadcrumb/breadcrumb.js +143 -0
  66. package/dist/components/breadcrumb/breadcrumb.js.map +1 -0
  67. package/dist/components/breadcrumb/breadcrumb.variants.d.ts +10 -0
  68. package/dist/components/breadcrumb/breadcrumb.variants.d.ts.map +1 -0
  69. package/dist/components/breadcrumb/breadcrumb.variants.js +41 -0
  70. package/dist/components/breadcrumb/breadcrumb.variants.js.map +1 -0
  71. package/dist/components/breadcrumb/index.d.ts +3 -0
  72. package/dist/components/breadcrumb/index.d.ts.map +1 -0
  73. package/dist/components/breadcrumb/index.js +35 -0
  74. package/dist/components/breadcrumb/index.js.map +1 -0
  75. package/dist/components/button/button.d.ts +10 -0
  76. package/dist/components/button/button.d.ts.map +1 -0
  77. package/dist/components/button/button.js +42 -0
  78. package/dist/components/button/button.js.map +1 -0
  79. package/dist/components/button/button.variants.d.ts +6 -0
  80. package/dist/components/button/button.variants.d.ts.map +1 -0
  81. package/dist/components/button/button.variants.js +45 -0
  82. package/dist/components/button/button.variants.js.map +1 -0
  83. package/dist/components/button/index.d.ts +3 -0
  84. package/dist/components/button/index.d.ts.map +1 -0
  85. package/dist/components/button/index.js +7 -0
  86. package/dist/components/button/index.js.map +1 -0
  87. package/dist/components/card/card.d.ts +59 -0
  88. package/dist/components/card/card.d.ts.map +1 -0
  89. package/dist/components/card/card.js +101 -0
  90. package/dist/components/card/card.js.map +1 -0
  91. package/dist/components/card/card.variants.d.ts +13 -0
  92. package/dist/components/card/card.variants.d.ts.map +1 -0
  93. package/dist/components/card/card.variants.js +64 -0
  94. package/dist/components/card/card.variants.js.map +1 -0
  95. package/dist/components/card/index.d.ts +3 -0
  96. package/dist/components/card/index.d.ts.map +1 -0
  97. package/dist/components/card/index.js +35 -0
  98. package/dist/components/card/index.js.map +1 -0
  99. package/dist/components/checkbox/checkbox.d.ts +20 -0
  100. package/dist/components/checkbox/checkbox.d.ts.map +1 -0
  101. package/dist/components/checkbox/checkbox.js +102 -0
  102. package/dist/components/checkbox/checkbox.js.map +1 -0
  103. package/dist/components/checkbox/checkbox.variants.d.ts +15 -0
  104. package/dist/components/checkbox/checkbox.variants.d.ts.map +1 -0
  105. package/dist/components/checkbox/checkbox.variants.js +70 -0
  106. package/dist/components/checkbox/checkbox.variants.js.map +1 -0
  107. package/dist/components/checkbox/index.d.ts +3 -0
  108. package/dist/components/checkbox/index.d.ts.map +1 -0
  109. package/dist/components/checkbox/index.js +11 -0
  110. package/dist/components/checkbox/index.js.map +1 -0
  111. package/dist/components/command-palette/command-palette.d.ts +76 -0
  112. package/dist/components/command-palette/command-palette.d.ts.map +1 -0
  113. package/dist/components/command-palette/command-palette.js +271 -0
  114. package/dist/components/command-palette/command-palette.js.map +1 -0
  115. package/dist/components/command-palette/command-palette.variants.d.ts +18 -0
  116. package/dist/components/command-palette/command-palette.variants.d.ts.map +1 -0
  117. package/dist/components/command-palette/command-palette.variants.js +62 -0
  118. package/dist/components/command-palette/command-palette.variants.js.map +1 -0
  119. package/dist/components/command-palette/index.d.ts +3 -0
  120. package/dist/components/command-palette/index.d.ts.map +1 -0
  121. package/dist/components/command-palette/index.js +35 -0
  122. package/dist/components/command-palette/index.js.map +1 -0
  123. package/dist/components/consent-toggle/consent-toggle.d.ts +107 -0
  124. package/dist/components/consent-toggle/consent-toggle.d.ts.map +1 -0
  125. package/dist/components/consent-toggle/consent-toggle.js +68 -0
  126. package/dist/components/consent-toggle/consent-toggle.js.map +1 -0
  127. package/dist/components/consent-toggle/consent-toggle.variants.d.ts +10 -0
  128. package/dist/components/consent-toggle/consent-toggle.variants.d.ts.map +1 -0
  129. package/dist/components/consent-toggle/consent-toggle.variants.js +29 -0
  130. package/dist/components/consent-toggle/consent-toggle.variants.js.map +1 -0
  131. package/dist/components/consent-toggle/index.d.ts +3 -0
  132. package/dist/components/consent-toggle/index.d.ts.map +1 -0
  133. package/dist/components/consent-toggle/index.js +19 -0
  134. package/dist/components/consent-toggle/index.js.map +1 -0
  135. package/dist/components/credential-card/credential-card.d.ts +144 -0
  136. package/dist/components/credential-card/credential-card.d.ts.map +1 -0
  137. package/dist/components/credential-card/credential-card.js +117 -0
  138. package/dist/components/credential-card/credential-card.js.map +1 -0
  139. package/dist/components/credential-card/credential-card.variants.d.ts +15 -0
  140. package/dist/components/credential-card/credential-card.variants.d.ts.map +1 -0
  141. package/dist/components/credential-card/credential-card.variants.js +48 -0
  142. package/dist/components/credential-card/credential-card.variants.js.map +1 -0
  143. package/dist/components/credential-card/index.d.ts +3 -0
  144. package/dist/components/credential-card/index.d.ts.map +1 -0
  145. package/dist/components/credential-card/index.js +29 -0
  146. package/dist/components/credential-card/index.js.map +1 -0
  147. package/dist/components/data-grid/data-grid.d.ts +247 -0
  148. package/dist/components/data-grid/data-grid.d.ts.map +1 -0
  149. package/dist/components/data-grid/data-grid.js +529 -0
  150. package/dist/components/data-grid/data-grid.js.map +1 -0
  151. package/dist/components/data-grid/data-grid.variants.d.ts +29 -0
  152. package/dist/components/data-grid/data-grid.variants.d.ts.map +1 -0
  153. package/dist/components/data-grid/data-grid.variants.js +110 -0
  154. package/dist/components/data-grid/data-grid.variants.js.map +1 -0
  155. package/dist/components/data-grid/index.d.ts +3 -0
  156. package/dist/components/data-grid/index.d.ts.map +1 -0
  157. package/dist/components/data-grid/index.js +59 -0
  158. package/dist/components/data-grid/index.js.map +1 -0
  159. package/dist/components/dialog/dialog.d.ts +98 -0
  160. package/dist/components/dialog/dialog.d.ts.map +1 -0
  161. package/dist/components/dialog/dialog.js +121 -0
  162. package/dist/components/dialog/dialog.js.map +1 -0
  163. package/dist/components/dialog/dialog.variants.d.ts +14 -0
  164. package/dist/components/dialog/dialog.variants.d.ts.map +1 -0
  165. package/dist/components/dialog/dialog.variants.js +71 -0
  166. package/dist/components/dialog/dialog.variants.js.map +1 -0
  167. package/dist/components/dialog/index.d.ts +3 -0
  168. package/dist/components/dialog/index.d.ts.map +1 -0
  169. package/dist/components/dialog/index.js +31 -0
  170. package/dist/components/dialog/index.js.map +1 -0
  171. package/dist/components/identity-chip/identity-chip.d.ts +121 -0
  172. package/dist/components/identity-chip/identity-chip.d.ts.map +1 -0
  173. package/dist/components/identity-chip/identity-chip.js +203 -0
  174. package/dist/components/identity-chip/identity-chip.js.map +1 -0
  175. package/dist/components/identity-chip/identity-chip.variants.d.ts +11 -0
  176. package/dist/components/identity-chip/identity-chip.variants.d.ts.map +1 -0
  177. package/dist/components/identity-chip/identity-chip.variants.js +61 -0
  178. package/dist/components/identity-chip/identity-chip.variants.js.map +1 -0
  179. package/dist/components/identity-chip/index.d.ts +3 -0
  180. package/dist/components/identity-chip/index.d.ts.map +1 -0
  181. package/dist/components/identity-chip/index.js +21 -0
  182. package/dist/components/identity-chip/index.js.map +1 -0
  183. package/dist/components/input/index.d.ts +3 -0
  184. package/dist/components/input/index.d.ts.map +1 -0
  185. package/dist/components/input/index.js +11 -0
  186. package/dist/components/input/index.js.map +1 -0
  187. package/dist/components/input/input.d.ts +17 -0
  188. package/dist/components/input/input.d.ts.map +1 -0
  189. package/dist/components/input/input.js +71 -0
  190. package/dist/components/input/input.js.map +1 -0
  191. package/dist/components/input/input.variants.d.ts +11 -0
  192. package/dist/components/input/input.variants.d.ts.map +1 -0
  193. package/dist/components/input/input.variants.js +64 -0
  194. package/dist/components/input/input.variants.js.map +1 -0
  195. package/dist/components/label/index.d.ts +3 -0
  196. package/dist/components/label/index.d.ts.map +1 -0
  197. package/dist/components/label/index.js +13 -0
  198. package/dist/components/label/index.js.map +1 -0
  199. package/dist/components/label/label.d.ts +16 -0
  200. package/dist/components/label/label.d.ts.map +1 -0
  201. package/dist/components/label/label.js +27 -0
  202. package/dist/components/label/label.js.map +1 -0
  203. package/dist/components/label/label.variants.d.ts +8 -0
  204. package/dist/components/label/label.variants.d.ts.map +1 -0
  205. package/dist/components/label/label.variants.js +27 -0
  206. package/dist/components/label/label.variants.js.map +1 -0
  207. package/dist/components/menu/index.d.ts +3 -0
  208. package/dist/components/menu/index.d.ts.map +1 -0
  209. package/dist/components/menu/index.js +43 -0
  210. package/dist/components/menu/index.js.map +1 -0
  211. package/dist/components/menu/menu.d.ts +115 -0
  212. package/dist/components/menu/menu.d.ts.map +1 -0
  213. package/dist/components/menu/menu.js +130 -0
  214. package/dist/components/menu/menu.js.map +1 -0
  215. package/dist/components/menu/menu.variants.d.ts +13 -0
  216. package/dist/components/menu/menu.variants.d.ts.map +1 -0
  217. package/dist/components/menu/menu.variants.js +56 -0
  218. package/dist/components/menu/menu.variants.js.map +1 -0
  219. package/dist/components/pagination/index.d.ts +3 -0
  220. package/dist/components/pagination/index.d.ts.map +1 -0
  221. package/dist/components/pagination/index.js +37 -0
  222. package/dist/components/pagination/index.js.map +1 -0
  223. package/dist/components/pagination/pagination.d.ts +118 -0
  224. package/dist/components/pagination/pagination.d.ts.map +1 -0
  225. package/dist/components/pagination/pagination.js +204 -0
  226. package/dist/components/pagination/pagination.js.map +1 -0
  227. package/dist/components/pagination/pagination.variants.d.ts +13 -0
  228. package/dist/components/pagination/pagination.variants.d.ts.map +1 -0
  229. package/dist/components/pagination/pagination.variants.js +63 -0
  230. package/dist/components/pagination/pagination.variants.js.map +1 -0
  231. package/dist/components/popover/index.d.ts +3 -0
  232. package/dist/components/popover/index.d.ts.map +1 -0
  233. package/dist/components/popover/index.js +39 -0
  234. package/dist/components/popover/index.js.map +1 -0
  235. package/dist/components/popover/popover.d.ts +92 -0
  236. package/dist/components/popover/popover.d.ts.map +1 -0
  237. package/dist/components/popover/popover.js +135 -0
  238. package/dist/components/popover/popover.js.map +1 -0
  239. package/dist/components/popover/popover.variants.d.ts +9 -0
  240. package/dist/components/popover/popover.variants.d.ts.map +1 -0
  241. package/dist/components/popover/popover.variants.js +19 -0
  242. package/dist/components/popover/popover.variants.js.map +1 -0
  243. package/dist/components/progress/index.d.ts +3 -0
  244. package/dist/components/progress/index.d.ts.map +1 -0
  245. package/dist/components/progress/index.js +23 -0
  246. package/dist/components/progress/index.js.map +1 -0
  247. package/dist/components/progress/progress.d.ts +71 -0
  248. package/dist/components/progress/progress.d.ts.map +1 -0
  249. package/dist/components/progress/progress.js +91 -0
  250. package/dist/components/progress/progress.js.map +1 -0
  251. package/dist/components/progress/progress.variants.d.ts +14 -0
  252. package/dist/components/progress/progress.variants.d.ts.map +1 -0
  253. package/dist/components/progress/progress.variants.js +37 -0
  254. package/dist/components/progress/progress.variants.js.map +1 -0
  255. package/dist/components/radio/index.d.ts +3 -0
  256. package/dist/components/radio/index.d.ts.map +1 -0
  257. package/dist/components/radio/index.js +22 -0
  258. package/dist/components/radio/index.js.map +1 -0
  259. package/dist/components/radio/radio.d.ts +23 -0
  260. package/dist/components/radio/radio.d.ts.map +1 -0
  261. package/dist/components/radio/radio.js +183 -0
  262. package/dist/components/radio/radio.js.map +1 -0
  263. package/dist/components/radio/radio.variants.d.ts +17 -0
  264. package/dist/components/radio/radio.variants.d.ts.map +1 -0
  265. package/dist/components/radio/radio.variants.js +60 -0
  266. package/dist/components/radio/radio.variants.js.map +1 -0
  267. package/dist/components/select/index.d.ts +3 -0
  268. package/dist/components/select/index.d.ts.map +1 -0
  269. package/dist/components/select/index.js +9 -0
  270. package/dist/components/select/index.js.map +1 -0
  271. package/dist/components/select/select.d.ts +27 -0
  272. package/dist/components/select/select.d.ts.map +1 -0
  273. package/dist/components/select/select.js +145 -0
  274. package/dist/components/select/select.js.map +1 -0
  275. package/dist/components/select/select.variants.d.ts +18 -0
  276. package/dist/components/select/select.variants.d.ts.map +1 -0
  277. package/dist/components/select/select.variants.js +102 -0
  278. package/dist/components/select/select.variants.js.map +1 -0
  279. package/dist/components/separator/index.d.ts +3 -0
  280. package/dist/components/separator/index.d.ts.map +1 -0
  281. package/dist/components/separator/index.js +15 -0
  282. package/dist/components/separator/index.js.map +1 -0
  283. package/dist/components/separator/separator.d.ts +23 -0
  284. package/dist/components/separator/separator.d.ts.map +1 -0
  285. package/dist/components/separator/separator.js +61 -0
  286. package/dist/components/separator/separator.js.map +1 -0
  287. package/dist/components/separator/separator.variants.d.ts +13 -0
  288. package/dist/components/separator/separator.variants.d.ts.map +1 -0
  289. package/dist/components/separator/separator.variants.js +46 -0
  290. package/dist/components/separator/separator.variants.js.map +1 -0
  291. package/dist/components/sheet/index.d.ts +3 -0
  292. package/dist/components/sheet/index.d.ts.map +1 -0
  293. package/dist/components/sheet/index.js +31 -0
  294. package/dist/components/sheet/index.js.map +1 -0
  295. package/dist/components/sheet/sheet.d.ts +102 -0
  296. package/dist/components/sheet/sheet.d.ts.map +1 -0
  297. package/dist/components/sheet/sheet.js +120 -0
  298. package/dist/components/sheet/sheet.js.map +1 -0
  299. package/dist/components/sheet/sheet.variants.d.ts +15 -0
  300. package/dist/components/sheet/sheet.variants.d.ts.map +1 -0
  301. package/dist/components/sheet/sheet.variants.js +97 -0
  302. package/dist/components/sheet/sheet.variants.js.map +1 -0
  303. package/dist/components/sidebar/index.d.ts +3 -0
  304. package/dist/components/sidebar/index.d.ts.map +1 -0
  305. package/dist/components/sidebar/index.js +43 -0
  306. package/dist/components/sidebar/index.js.map +1 -0
  307. package/dist/components/sidebar/sidebar.d.ts +114 -0
  308. package/dist/components/sidebar/sidebar.d.ts.map +1 -0
  309. package/dist/components/sidebar/sidebar.js +202 -0
  310. package/dist/components/sidebar/sidebar.js.map +1 -0
  311. package/dist/components/sidebar/sidebar.variants.d.ts +19 -0
  312. package/dist/components/sidebar/sidebar.variants.d.ts.map +1 -0
  313. package/dist/components/sidebar/sidebar.variants.js +93 -0
  314. package/dist/components/sidebar/sidebar.variants.js.map +1 -0
  315. package/dist/components/skeleton/index.d.ts +3 -0
  316. package/dist/components/skeleton/index.d.ts.map +1 -0
  317. package/dist/components/skeleton/index.js +15 -0
  318. package/dist/components/skeleton/index.js.map +1 -0
  319. package/dist/components/skeleton/skeleton.d.ts +42 -0
  320. package/dist/components/skeleton/skeleton.d.ts.map +1 -0
  321. package/dist/components/skeleton/skeleton.js +54 -0
  322. package/dist/components/skeleton/skeleton.js.map +1 -0
  323. package/dist/components/skeleton/skeleton.variants.d.ts +9 -0
  324. package/dist/components/skeleton/skeleton.variants.d.ts.map +1 -0
  325. package/dist/components/skeleton/skeleton.variants.js +31 -0
  326. package/dist/components/skeleton/skeleton.variants.js.map +1 -0
  327. package/dist/components/spinner/index.d.ts +3 -0
  328. package/dist/components/spinner/index.d.ts.map +1 -0
  329. package/dist/components/spinner/index.js +13 -0
  330. package/dist/components/spinner/index.js.map +1 -0
  331. package/dist/components/spinner/spinner.d.ts +41 -0
  332. package/dist/components/spinner/spinner.d.ts.map +1 -0
  333. package/dist/components/spinner/spinner.js +48 -0
  334. package/dist/components/spinner/spinner.js.map +1 -0
  335. package/dist/components/spinner/spinner.variants.d.ts +8 -0
  336. package/dist/components/spinner/spinner.variants.d.ts.map +1 -0
  337. package/dist/components/spinner/spinner.variants.js +32 -0
  338. package/dist/components/spinner/spinner.variants.js.map +1 -0
  339. package/dist/components/switch/index.d.ts +3 -0
  340. package/dist/components/switch/index.d.ts.map +1 -0
  341. package/dist/components/switch/index.js +15 -0
  342. package/dist/components/switch/index.js.map +1 -0
  343. package/dist/components/switch/switch.d.ts +20 -0
  344. package/dist/components/switch/switch.d.ts.map +1 -0
  345. package/dist/components/switch/switch.js +107 -0
  346. package/dist/components/switch/switch.js.map +1 -0
  347. package/dist/components/switch/switch.variants.d.ts +14 -0
  348. package/dist/components/switch/switch.variants.d.ts.map +1 -0
  349. package/dist/components/switch/switch.variants.js +69 -0
  350. package/dist/components/switch/switch.variants.js.map +1 -0
  351. package/dist/components/table/index.d.ts +3 -0
  352. package/dist/components/table/index.d.ts.map +1 -0
  353. package/dist/components/table/index.js +51 -0
  354. package/dist/components/table/index.js.map +1 -0
  355. package/dist/components/table/table.d.ts +173 -0
  356. package/dist/components/table/table.d.ts.map +1 -0
  357. package/dist/components/table/table.js +172 -0
  358. package/dist/components/table/table.js.map +1 -0
  359. package/dist/components/table/table.variants.d.ts +39 -0
  360. package/dist/components/table/table.variants.d.ts.map +1 -0
  361. package/dist/components/table/table.variants.js +124 -0
  362. package/dist/components/table/table.variants.js.map +1 -0
  363. package/dist/components/tabs/index.d.ts +3 -0
  364. package/dist/components/tabs/index.d.ts.map +1 -0
  365. package/dist/components/tabs/index.js +21 -0
  366. package/dist/components/tabs/index.js.map +1 -0
  367. package/dist/components/tabs/tabs.d.ts +66 -0
  368. package/dist/components/tabs/tabs.d.ts.map +1 -0
  369. package/dist/components/tabs/tabs.js +81 -0
  370. package/dist/components/tabs/tabs.js.map +1 -0
  371. package/dist/components/tabs/tabs.variants.d.ts +15 -0
  372. package/dist/components/tabs/tabs.variants.d.ts.map +1 -0
  373. package/dist/components/tabs/tabs.variants.js +98 -0
  374. package/dist/components/tabs/tabs.variants.js.map +1 -0
  375. package/dist/components/textarea/index.d.ts +3 -0
  376. package/dist/components/textarea/index.d.ts.map +1 -0
  377. package/dist/components/textarea/index.js +7 -0
  378. package/dist/components/textarea/index.js.map +1 -0
  379. package/dist/components/textarea/textarea.d.ts +18 -0
  380. package/dist/components/textarea/textarea.d.ts.map +1 -0
  381. package/dist/components/textarea/textarea.js +136 -0
  382. package/dist/components/textarea/textarea.js.map +1 -0
  383. package/dist/components/textarea/textarea.variants.d.ts +6 -0
  384. package/dist/components/textarea/textarea.variants.d.ts.map +1 -0
  385. package/dist/components/textarea/textarea.variants.js +53 -0
  386. package/dist/components/textarea/textarea.variants.js.map +1 -0
  387. package/dist/components/toast/index.d.ts +3 -0
  388. package/dist/components/toast/index.d.ts.map +1 -0
  389. package/dist/components/toast/index.js +43 -0
  390. package/dist/components/toast/index.js.map +1 -0
  391. package/dist/components/toast/toast.d.ts +140 -0
  392. package/dist/components/toast/toast.d.ts.map +1 -0
  393. package/dist/components/toast/toast.js +123 -0
  394. package/dist/components/toast/toast.js.map +1 -0
  395. package/dist/components/toast/toast.variants.d.ts +16 -0
  396. package/dist/components/toast/toast.variants.d.ts.map +1 -0
  397. package/dist/components/toast/toast.variants.js +77 -0
  398. package/dist/components/toast/toast.variants.js.map +1 -0
  399. package/dist/components/tooltip/index.d.ts +3 -0
  400. package/dist/components/tooltip/index.d.ts.map +1 -0
  401. package/dist/components/tooltip/index.js +16 -0
  402. package/dist/components/tooltip/index.js.map +1 -0
  403. package/dist/components/tooltip/tooltip.d.ts +81 -0
  404. package/dist/components/tooltip/tooltip.d.ts.map +1 -0
  405. package/dist/components/tooltip/tooltip.js +44 -0
  406. package/dist/components/tooltip/tooltip.js.map +1 -0
  407. package/dist/components/tooltip/tooltip.variants.d.ts +3 -0
  408. package/dist/components/tooltip/tooltip.variants.d.ts.map +1 -0
  409. package/dist/components/tooltip/tooltip.variants.js +7 -0
  410. package/dist/components/tooltip/tooltip.variants.js.map +1 -0
  411. package/dist/components/trust-score/index.d.ts +3 -0
  412. package/dist/components/trust-score/index.d.ts.map +1 -0
  413. package/dist/components/trust-score/index.js +11 -0
  414. package/dist/components/trust-score/index.js.map +1 -0
  415. package/dist/components/trust-score/trust-score.d.ts +100 -0
  416. package/dist/components/trust-score/trust-score.d.ts.map +1 -0
  417. package/dist/components/trust-score/trust-score.js +146 -0
  418. package/dist/components/trust-score/trust-score.js.map +1 -0
  419. package/dist/components/trust-score/trust-score.variants.d.ts +16 -0
  420. package/dist/components/trust-score/trust-score.variants.d.ts.map +1 -0
  421. package/dist/components/trust-score/trust-score.variants.js +50 -0
  422. package/dist/components/trust-score/trust-score.variants.js.map +1 -0
  423. package/dist/components/verified-badge/index.d.ts +3 -0
  424. package/dist/components/verified-badge/index.d.ts.map +1 -0
  425. package/dist/components/verified-badge/index.js +15 -0
  426. package/dist/components/verified-badge/index.js.map +1 -0
  427. package/dist/components/verified-badge/verified-badge.d.ts +55 -0
  428. package/dist/components/verified-badge/verified-badge.d.ts.map +1 -0
  429. package/dist/components/verified-badge/verified-badge.js +67 -0
  430. package/dist/components/verified-badge/verified-badge.js.map +1 -0
  431. package/dist/components/verified-badge/verified-badge.variants.d.ts +11 -0
  432. package/dist/components/verified-badge/verified-badge.variants.d.ts.map +1 -0
  433. package/dist/components/verified-badge/verified-badge.variants.js +45 -0
  434. package/dist/components/verified-badge/verified-badge.variants.js.map +1 -0
  435. package/dist/index.d.ts +39 -0
  436. package/dist/index.d.ts.map +1 -0
  437. package/dist/index.js +322 -0
  438. package/dist/index.js.map +1 -0
  439. package/dist/lib/cn.d.ts +3 -0
  440. package/dist/lib/cn.d.ts.map +1 -0
  441. package/dist/lib/cn.js +24 -0
  442. package/dist/lib/cn.js.map +1 -0
  443. package/package.json +74 -0
@@ -0,0 +1,529 @@
1
+ "use client";
2
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
3
+ import * as React from "react";
4
+ import { createPortal } from "react-dom";
5
+ import { cn } from "../../lib/cn";
6
+ import { Checkbox } from "../checkbox";
7
+ import {
8
+ dataGridVariants,
9
+ dataGridTableClass,
10
+ dataGridHeaderRowClass,
11
+ dataGridRowClass,
12
+ dataGridCellVariants,
13
+ dataGridColumnHeaderVariants,
14
+ dataGridSortButtonClass,
15
+ dataGridSortCaretClass,
16
+ dataGridSelectionCellClass,
17
+ dataGridBulkBarClass,
18
+ dataGridBulkCountClass,
19
+ dataGridBulkActionVariants,
20
+ dataGridEmptyClass,
21
+ dataGridStatusRegionClass
22
+ } from "./data-grid.variants";
23
+ const DataGridContext = React.createContext(null);
24
+ function useDataGrid() {
25
+ const ctx = React.useContext(DataGridContext);
26
+ if (!ctx) throw new Error("DataGrid slots must be rendered inside <DataGrid>.");
27
+ return ctx;
28
+ }
29
+ const DataGrid = React.forwardRef(function DataGrid2({
30
+ className,
31
+ rowCount,
32
+ colCount,
33
+ density = "comfortable",
34
+ selection = "none",
35
+ loading = false,
36
+ announcement,
37
+ errorMessage,
38
+ onSelectAll,
39
+ children,
40
+ "aria-label": ariaLabel,
41
+ "aria-labelledby": ariaLabelledby,
42
+ ...props
43
+ }, ref) {
44
+ const registry = React.useRef(/* @__PURE__ */ new Set());
45
+ const [active, setActive] = React.useState(null);
46
+ const initialRef = React.useRef(null);
47
+ const [chromeContainer, setChromeContainer] = React.useState(null);
48
+ const userEngagedRef = React.useRef(false);
49
+ const [registryTick, setRegistryTick] = React.useState(0);
50
+ const register = React.useCallback((entry) => {
51
+ registry.current.add(entry);
52
+ setRegistryTick((t) => t + 1);
53
+ return () => {
54
+ registry.current.delete(entry);
55
+ setRegistryTick((t) => t + 1);
56
+ };
57
+ }, []);
58
+ const claimInitial = React.useCallback((coord) => {
59
+ const current = initialRef.current;
60
+ if (!current || coord.row < current.row || coord.row === current.row && coord.col < current.col) {
61
+ initialRef.current = coord;
62
+ setActive((prev) => prev ?? coord);
63
+ }
64
+ }, []);
65
+ const setActiveCoord = React.useCallback((coord) => {
66
+ userEngagedRef.current = true;
67
+ setActive(coord);
68
+ }, []);
69
+ const resolvedActive = active ?? initialRef.current;
70
+ const isActive = React.useCallback(
71
+ (coord) => resolvedActive !== null && resolvedActive.row === coord.row && resolvedActive.col === coord.col,
72
+ [resolvedActive]
73
+ );
74
+ React.useEffect(() => {
75
+ if (!resolvedActive || !userEngagedRef.current) return;
76
+ const activeCellEl = Array.from(registry.current).find(
77
+ (c) => c.row === resolvedActive.row && c.col === resolvedActive.col
78
+ )?.el;
79
+ if (!activeCellEl) return;
80
+ const root = activeCellEl.ownerDocument;
81
+ const focused = root.activeElement;
82
+ const focusInGrid = focused instanceof HTMLElement && root.contains(focused) && focused.closest('[role="grid"]') !== null;
83
+ if (!focusInGrid) activeCellEl.focus();
84
+ }, [resolvedActive, registryTick]);
85
+ const cells = () => Array.from(registry.current);
86
+ const rowsOf = () => {
87
+ const set = /* @__PURE__ */ new Set();
88
+ cells().forEach((c) => set.add(c.row));
89
+ return Array.from(set).sort((a, b) => a - b);
90
+ };
91
+ const colsInRow = (row) => cells().filter((c) => c.row === row).map((c) => c.col).sort((a, b) => a - b);
92
+ const cellAt = (row, col) => cells().find((c) => c.row === row && c.col === col);
93
+ const moveTo = (row, col) => {
94
+ const target = cellAt(row, col);
95
+ if (target) {
96
+ setActive({ row, col });
97
+ target.el.focus();
98
+ return;
99
+ }
100
+ const cols = colsInRow(row);
101
+ if (cols.length === 0) return;
102
+ const nearest = cols.reduce((best, c) => Math.abs(c - col) < Math.abs(best - col) ? c : best, cols[0]);
103
+ const fallback = cellAt(row, nearest);
104
+ if (fallback) {
105
+ setActive({ row, col: nearest });
106
+ fallback.el.focus();
107
+ }
108
+ };
109
+ const onKeyDown = (event) => {
110
+ if ((event.ctrlKey || event.metaKey) && (event.key === "a" || event.key === "A")) {
111
+ if (selection === "multiple" && onSelectAll) {
112
+ event.preventDefault();
113
+ onSelectAll();
114
+ }
115
+ return;
116
+ }
117
+ const current = resolvedActive;
118
+ if (!current) return;
119
+ const allRows = rowsOf();
120
+ if (allRows.length === 0) return;
121
+ const rowPos = allRows.indexOf(current.row);
122
+ const cols = colsInRow(current.row);
123
+ const colPos = cols.indexOf(current.col);
124
+ const PAGE = 10;
125
+ switch (event.key) {
126
+ case "ArrowRight": {
127
+ event.preventDefault();
128
+ if (colPos < cols.length - 1) moveTo(current.row, cols[colPos + 1]);
129
+ break;
130
+ }
131
+ case "ArrowLeft": {
132
+ event.preventDefault();
133
+ if (colPos > 0) moveTo(current.row, cols[colPos - 1]);
134
+ break;
135
+ }
136
+ case "ArrowDown": {
137
+ event.preventDefault();
138
+ if (rowPos < allRows.length - 1) moveTo(allRows[rowPos + 1], current.col);
139
+ break;
140
+ }
141
+ case "ArrowUp": {
142
+ event.preventDefault();
143
+ if (rowPos > 0) moveTo(allRows[rowPos - 1], current.col);
144
+ break;
145
+ }
146
+ case "Home": {
147
+ event.preventDefault();
148
+ if (event.ctrlKey) {
149
+ const firstRow = allRows[0];
150
+ moveTo(firstRow, colsInRow(firstRow)[0]);
151
+ } else {
152
+ moveTo(current.row, cols[0]);
153
+ }
154
+ break;
155
+ }
156
+ case "End": {
157
+ event.preventDefault();
158
+ if (event.ctrlKey) {
159
+ const lastRow = allRows[allRows.length - 1];
160
+ const lastRowCols = colsInRow(lastRow);
161
+ moveTo(lastRow, lastRowCols[lastRowCols.length - 1]);
162
+ } else {
163
+ moveTo(current.row, cols[cols.length - 1]);
164
+ }
165
+ break;
166
+ }
167
+ case "PageDown": {
168
+ event.preventDefault();
169
+ const dest = Math.min(rowPos + PAGE, allRows.length - 1);
170
+ moveTo(allRows[dest], current.col);
171
+ break;
172
+ }
173
+ case "PageUp": {
174
+ event.preventDefault();
175
+ const dest = Math.max(rowPos - PAGE, 0);
176
+ moveTo(allRows[dest], current.col);
177
+ break;
178
+ }
179
+ default:
180
+ break;
181
+ }
182
+ };
183
+ const ctx = React.useMemo(
184
+ () => ({
185
+ density,
186
+ selection,
187
+ active: resolvedActive,
188
+ register,
189
+ claimInitial,
190
+ isActive,
191
+ setActive: setActiveCoord,
192
+ chromeContainer
193
+ }),
194
+ [density, selection, resolvedActive, register, claimInitial, isActive, setActiveCoord, chromeContainer]
195
+ );
196
+ return /* @__PURE__ */ jsx(DataGridContext.Provider, { value: ctx, children: /* @__PURE__ */ jsxs("div", { ref, className: cn(dataGridVariants(), className), onKeyDown, ...props, children: [
197
+ /* @__PURE__ */ jsx(
198
+ "table",
199
+ {
200
+ role: "grid",
201
+ "aria-label": ariaLabel,
202
+ "aria-labelledby": ariaLabelledby,
203
+ "aria-rowcount": rowCount,
204
+ "aria-colcount": colCount,
205
+ "aria-multiselectable": selection === "multiple" ? true : void 0,
206
+ "aria-busy": loading || void 0,
207
+ className: dataGridTableClass,
208
+ children
209
+ }
210
+ ),
211
+ /* @__PURE__ */ jsx("div", { ref: setChromeContainer }),
212
+ chromeContainer ? createPortal(
213
+ /* @__PURE__ */ jsx(DataGridLiveRegions, { announcement, errorMessage }),
214
+ chromeContainer
215
+ ) : null
216
+ ] }) });
217
+ });
218
+ function DataGridLiveRegions({
219
+ announcement,
220
+ errorMessage
221
+ }) {
222
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
223
+ /* @__PURE__ */ jsx("span", { role: "status", "aria-live": "polite", className: dataGridStatusRegionClass, children: announcement }),
224
+ /* @__PURE__ */ jsx("span", { role: "alert", "aria-live": "assertive", className: dataGridStatusRegionClass, children: errorMessage })
225
+ ] });
226
+ }
227
+ function DataGridStatusRegion(_props) {
228
+ return null;
229
+ }
230
+ const DataGridHeaderRow = React.forwardRef(
231
+ function DataGridHeaderRow2({ className, rowIndex, children, ...props }, ref) {
232
+ return (
233
+ // a real <thead><tr> so the column-header relationship is native (1.3.1)
234
+ /* @__PURE__ */ jsx("thead", { children: /* @__PURE__ */ jsx("tr", { ref, role: "row", "aria-rowindex": rowIndex, className: cn(dataGridHeaderRowClass, className), ...props, children }) })
235
+ );
236
+ }
237
+ );
238
+ const DataGridBody = React.forwardRef(
239
+ function DataGridBody2({ className, ...props }, ref) {
240
+ return /* @__PURE__ */ jsx("tbody", { ref, className: cn(className), ...props });
241
+ }
242
+ );
243
+ const DataGridRow = React.forwardRef(function DataGridRow2({ className, rowIndex, selected, ...props }, ref) {
244
+ const { selection } = useDataGrid();
245
+ const ariaSelected = selection === "multiple" ? selected ? true : false : selected ? true : void 0;
246
+ return /* @__PURE__ */ jsx(
247
+ "tr",
248
+ {
249
+ ref,
250
+ role: "row",
251
+ "aria-rowindex": rowIndex,
252
+ "aria-selected": ariaSelected,
253
+ className: cn(dataGridRowClass, className),
254
+ ...props
255
+ }
256
+ );
257
+ });
258
+ function useRovingCell(row, col) {
259
+ const { register, claimInitial, isActive, setActive } = useDataGrid();
260
+ const ref = React.useRef(null);
261
+ React.useEffect(() => {
262
+ const el = ref.current;
263
+ if (!el) return;
264
+ claimInitial({ row, col });
265
+ return register({ row, col, el });
266
+ }, [register, claimInitial, row, col]);
267
+ const active = isActive({ row, col });
268
+ const tabIndex = active ? 0 : -1;
269
+ const onFocus = () => setActive({ row, col });
270
+ return { ref, tabIndex, onFocus };
271
+ }
272
+ function SortCaret({ direction }) {
273
+ return /* @__PURE__ */ jsx("span", { "data-testid": "data-grid-sort-caret", "data-direction": direction, "aria-hidden": "true", className: dataGridSortCaretClass, children: /* @__PURE__ */ jsx("svg", { viewBox: "0 0 16 16", fill: "none", stroke: "currentColor", strokeWidth: "1.5", focusable: "false", "aria-hidden": "true", children: direction === "ascending" ? /* @__PURE__ */ jsx("path", { d: "M4 10l4-4 4 4", strokeLinecap: "round", strokeLinejoin: "round" }) : direction === "descending" ? /* @__PURE__ */ jsx("path", { d: "M4 6l4 4 4-4", strokeLinecap: "round", strokeLinejoin: "round" }) : /* @__PURE__ */ jsx("path", { d: "M5 6.5l3-3 3 3M5 9.5l3 3 3-3", strokeLinecap: "round", strokeLinejoin: "round" }) }) });
274
+ }
275
+ const NEXT_DIRECTION_WORD = {
276
+ none: "ascending",
277
+ ascending: "descending",
278
+ descending: "ascending"
279
+ };
280
+ const DataGridColumnHeader = React.forwardRef(
281
+ function DataGridColumnHeader2({ className, colIndex, sortable = false, sortDirection = "none", onSort, sortLabel, children, ...props }, ref) {
282
+ const { density } = useDataGrid();
283
+ const { ref: rovingRef, tabIndex, onFocus } = useRovingCell(1, colIndex);
284
+ React.useImperativeHandle(ref, () => rovingRef.current);
285
+ const ariaSort = sortable ? sortDirection : void 0;
286
+ const label = sortLabel ?? (typeof children === "string" ? children : void 0);
287
+ const onKeyDown = (event) => {
288
+ if (sortable && event.key === "Enter") {
289
+ event.preventDefault();
290
+ onSort?.();
291
+ }
292
+ };
293
+ return /* @__PURE__ */ jsx(
294
+ "th",
295
+ {
296
+ ref: rovingRef,
297
+ role: "columnheader",
298
+ scope: "col",
299
+ "aria-colindex": colIndex,
300
+ "aria-sort": ariaSort,
301
+ tabIndex,
302
+ onFocus,
303
+ onKeyDown,
304
+ className: cn(dataGridColumnHeaderVariants({ density }), className),
305
+ ...props,
306
+ children: sortable ? /* @__PURE__ */ jsxs(
307
+ "button",
308
+ {
309
+ type: "button",
310
+ onClick: onSort,
311
+ tabIndex: -1,
312
+ "aria-label": label ? `Sort by ${label}, ${NEXT_DIRECTION_WORD[sortDirection]}` : void 0,
313
+ className: dataGridSortButtonClass,
314
+ children: [
315
+ children,
316
+ /* @__PURE__ */ jsx(SortCaret, { direction: sortDirection })
317
+ ]
318
+ }
319
+ ) : children
320
+ }
321
+ );
322
+ }
323
+ );
324
+ const FOCUSABLE_SELECTOR = 'a[href], button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex="-1"]):not([role="gridcell"]):not([role="columnheader"]), [tabindex="-1"]:not([role="gridcell"]):not([role="columnheader"])';
325
+ function focusablesIn(cell) {
326
+ return Array.from(cell.querySelectorAll(FOCUSABLE_SELECTOR));
327
+ }
328
+ function useOwningRowIndex(elRef, explicit) {
329
+ const [rowIndex, setRowIndex] = React.useState(explicit ?? 0);
330
+ React.useEffect(() => {
331
+ if (explicit !== void 0) {
332
+ setRowIndex(explicit);
333
+ return;
334
+ }
335
+ const tr = elRef.current?.closest('[role="row"]');
336
+ const attr = tr?.getAttribute("aria-rowindex");
337
+ if (attr) setRowIndex(Number(attr));
338
+ }, [elRef, explicit]);
339
+ return rowIndex;
340
+ }
341
+ const DataGridCell = React.forwardRef(function DataGridCell2({ className, colIndex, rowIndex, mono = false, secondary = false, status = "none", controls, onKeyDown, ...props }, ref) {
342
+ const { density } = useDataGrid();
343
+ const localRef = React.useRef(null);
344
+ const owningRow = useOwningRowIndex(localRef, rowIndex);
345
+ const { ref: rovingRef, tabIndex, onFocus: rovingOnFocus } = useRovingCell(owningRow, colIndex);
346
+ const [entered, setEntered] = React.useState(false);
347
+ React.useImperativeHandle(ref, () => localRef.current);
348
+ const setRefs = (node) => {
349
+ localRef.current = node;
350
+ rovingRef.current = node;
351
+ };
352
+ const onFocus = (event) => {
353
+ rovingOnFocus();
354
+ if (controls === "single" && event.target === localRef.current) {
355
+ const first = focusablesIn(localRef.current)[0];
356
+ if (first) first.focus();
357
+ }
358
+ };
359
+ const handleKeyDown = (event) => {
360
+ onKeyDown?.(event);
361
+ if (event.defaultPrevented) return;
362
+ const cell = localRef.current;
363
+ if (!cell) return;
364
+ if (controls === "multiple") {
365
+ if (event.key === "Enter" && event.target === cell && !entered) {
366
+ const first = focusablesIn(cell)[0];
367
+ if (first) {
368
+ event.preventDefault();
369
+ setEntered(true);
370
+ first.focus();
371
+ }
372
+ return;
373
+ }
374
+ if (event.key === "Escape" && entered) {
375
+ event.preventDefault();
376
+ event.stopPropagation();
377
+ setEntered(false);
378
+ cell.focus();
379
+ return;
380
+ }
381
+ if (entered && (event.key === "ArrowRight" || event.key === "ArrowLeft" || event.key === "ArrowUp" || event.key === "ArrowDown" || event.key === "Home" || event.key === "End")) {
382
+ event.stopPropagation();
383
+ }
384
+ }
385
+ };
386
+ return /* @__PURE__ */ jsx(
387
+ "td",
388
+ {
389
+ ref: setRefs,
390
+ role: "gridcell",
391
+ "aria-colindex": colIndex,
392
+ tabIndex,
393
+ onFocus,
394
+ onKeyDown: handleKeyDown,
395
+ className: cn(dataGridCellVariants({ density, mono, secondary, status }), className),
396
+ ...props
397
+ }
398
+ );
399
+ });
400
+ const DataGridSelectionCell = React.forwardRef(
401
+ function DataGridSelectionCell2({ className, colIndex, checked, onCheckedChange, onExtendSelection, label, rowIndex, ...props }, ref) {
402
+ const localRef = React.useRef(null);
403
+ const owningRow = useOwningRowIndex(localRef, rowIndex);
404
+ const { ref: rovingRef, tabIndex, onFocus } = useRovingCell(owningRow, colIndex);
405
+ React.useImperativeHandle(ref, () => localRef.current);
406
+ const setRefs = (node) => {
407
+ localRef.current = node;
408
+ rovingRef.current = node;
409
+ };
410
+ const onKeyDown = (event) => {
411
+ if (event.key === " ") {
412
+ event.preventDefault();
413
+ if (event.shiftKey && onExtendSelection) {
414
+ onExtendSelection();
415
+ } else {
416
+ onCheckedChange?.(!checked);
417
+ }
418
+ }
419
+ };
420
+ return /* @__PURE__ */ jsx(
421
+ "td",
422
+ {
423
+ ref: setRefs,
424
+ role: "gridcell",
425
+ "aria-colindex": colIndex,
426
+ tabIndex,
427
+ onFocus,
428
+ onKeyDown,
429
+ className: cn(dataGridSelectionCellClass, className),
430
+ ...props,
431
+ children: /* @__PURE__ */ jsx(Checkbox, { label, checked, onCheckedChange })
432
+ }
433
+ );
434
+ }
435
+ );
436
+ const DataGridSelectAllCell = React.forwardRef(
437
+ function DataGridSelectAllCell2({ className, colIndex, checked, indeterminate = false, onCheckedChange, label, ...props }, ref) {
438
+ const { ref: rovingRef, tabIndex, onFocus } = useRovingCell(1, colIndex);
439
+ React.useImperativeHandle(ref, () => rovingRef.current);
440
+ return /* @__PURE__ */ jsx(
441
+ "th",
442
+ {
443
+ ref: rovingRef,
444
+ role: "columnheader",
445
+ scope: "col",
446
+ "aria-colindex": colIndex,
447
+ tabIndex,
448
+ onFocus,
449
+ className: cn(dataGridSelectionCellClass, className),
450
+ ...props,
451
+ children: /* @__PURE__ */ jsx(
452
+ Checkbox,
453
+ {
454
+ variant: "parent",
455
+ label,
456
+ checked,
457
+ indeterminate,
458
+ onCheckedChange
459
+ }
460
+ )
461
+ }
462
+ );
463
+ }
464
+ );
465
+ const DataGridBulkActionBar = React.forwardRef(
466
+ function DataGridBulkActionBar2({ className, selectedCount, onDismiss, children, ...props }, ref) {
467
+ const ctx = React.useContext(DataGridContext);
468
+ const onKeyDown = (event) => {
469
+ if (event.key === "Escape") {
470
+ event.preventDefault();
471
+ onDismiss?.();
472
+ }
473
+ };
474
+ const bar = /* @__PURE__ */ jsxs(
475
+ "div",
476
+ {
477
+ ref,
478
+ role: "toolbar",
479
+ tabIndex: -1,
480
+ "aria-label": `${selectedCount} selected`,
481
+ className: cn(dataGridBulkBarClass, className),
482
+ onKeyDown,
483
+ ...props,
484
+ children: [
485
+ /* @__PURE__ */ jsxs("span", { className: dataGridBulkCountClass, children: [
486
+ selectedCount,
487
+ " selected"
488
+ ] }),
489
+ children
490
+ ]
491
+ }
492
+ );
493
+ if (ctx) return ctx.chromeContainer ? createPortal(bar, ctx.chromeContainer) : null;
494
+ return bar;
495
+ }
496
+ );
497
+ const DataGridBulkAction = React.forwardRef(
498
+ function DataGridBulkAction2({ className, destructive = false, type = "button", ...props }, ref) {
499
+ return /* @__PURE__ */ jsx(
500
+ "button",
501
+ {
502
+ ref,
503
+ type,
504
+ className: cn(dataGridBulkActionVariants({ destructive }), className),
505
+ ...props
506
+ }
507
+ );
508
+ }
509
+ );
510
+ const DataGridEmpty = React.forwardRef(
511
+ function DataGridEmpty2({ className, colSpan = 1, children, ...props }, ref) {
512
+ return /* @__PURE__ */ jsx("tr", { role: "row", children: /* @__PURE__ */ jsx("td", { ref, role: "gridcell", colSpan, className: cn(dataGridEmptyClass, className), ...props, children }) });
513
+ }
514
+ );
515
+ export {
516
+ DataGrid,
517
+ DataGridBody,
518
+ DataGridBulkAction,
519
+ DataGridBulkActionBar,
520
+ DataGridCell,
521
+ DataGridColumnHeader,
522
+ DataGridEmpty,
523
+ DataGridHeaderRow,
524
+ DataGridRow,
525
+ DataGridSelectAllCell,
526
+ DataGridSelectionCell,
527
+ DataGridStatusRegion
528
+ };
529
+ //# sourceMappingURL=data-grid.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/data-grid/data-grid.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { cn } from \"../../lib/cn\";\nimport { Checkbox } from \"../checkbox\";\nimport {\n dataGridVariants,\n dataGridTableClass,\n dataGridHeaderRowClass,\n dataGridRowClass,\n dataGridCellVariants,\n dataGridColumnHeaderVariants,\n dataGridSortButtonClass,\n dataGridSortCaretClass,\n dataGridSelectionCellClass,\n dataGridBulkBarClass,\n dataGridBulkCountClass,\n dataGridBulkActionVariants,\n dataGridEmptyClass,\n dataGridStatusRegionClass,\n type DataGridCellVariantProps,\n} from \"./data-grid.variants\";\n\n/** Row density (spec §3): `comfortable` (default) for read-and-act screens, `compact` for dense consoles. */\nexport type DataGridDensity = \"comfortable\" | \"compact\";\n/** Selection model (spec §3): `none` (read-only) or `multiple` (adds the selection cell, select-all, and bulk bar). */\nexport type DataGridSelection = \"none\" | \"multiple\";\n/** A status cell's reported state (spec §3/§4): a status color appears only inside a cell that reports a real state, paired with text. */\nexport type DataGridCellStatus = NonNullable<DataGridCellVariantProps[\"status\"]>;\n/** A sort direction (spec §4/§7): reflected as `aria-sort` on the column header and a non-color caret. */\nexport type DataGridSortDirection = \"ascending\" | \"descending\" | \"none\";\n\n// ─────────────────────────────────────────────────────────────────────────────────────────────\n// Roving-cell focus over a native <table role=\"grid\"> (spec §6/§7). There is no Radix primitive for\n// the APG grid pattern's cell-by-cell arrow movement, so it is HAND-COMPOSED the same way Sidebar\n// hand-rolls roving over its native links — but in 2D, keyed by the cell's (row, col) coordinates\n// rather than DOM order, because grid movement is coordinate-based (Right/Left/Up/Down, row ends,\n// grid corners, page). Each cell registers its absolute (rowIndex, colIndex) + live DOM ref with the\n// root; the root holds the single active coordinate (exactly one cell is tabindex=0, the rest -1, so\n// the grid is a single tab stop, 2.1.1/2.4.3) and an onKeyDown on the grid that resolves the\n// destination coordinate and focuses the registered cell there. This is why the file is 'use client'.\ntype CellRegistration = { row: number; col: number; el: HTMLElement };\ntype ActiveCoord = { row: number; col: number };\ntype DataGridContextValue = {\n density: DataGridDensity;\n selection: DataGridSelection;\n active: ActiveCoord | null;\n register: (entry: CellRegistration) => () => void;\n // a cell reports its (row, col) so the root can set the initial active cell and answer isActive()\n claimInitial: (coord: ActiveCoord) => void;\n isActive: (coord: ActiveCoord) => boolean;\n // a cell asks the root to make it the active cell (on focus / pointer), so click + Tab agree with arrows\n setActive: (coord: ActiveCoord) => void;\n // the sibling DOM node, after the grid table, that grid CHROME (the bulk bar, the status-region\n // marker) portals itself into so it renders OUTSIDE role=\"grid\" (aria-required-children). A chrome\n // slot reads this from context and createPortal()s into it — so it lands outside the grid no matter\n // how a caller nests it (Fragment, wrapper, forwarded), with NO child.type introspection.\n chromeContainer: HTMLElement | null;\n};\nconst DataGridContext = React.createContext<DataGridContextValue | null>(null);\n\nfunction useDataGrid(): DataGridContextValue {\n const ctx = React.useContext(DataGridContext);\n if (!ctx) throw new Error(\"DataGrid slots must be rendered inside <DataGrid>.\");\n return ctx;\n}\n\nexport interface DataGridProps extends React.HTMLAttributes<HTMLDivElement> {\n /**\n * The TRUE total row count of the full set (spec §7), carried on the grid as `aria-rowcount` — NOT\n * the rendered window. So a screen reader announces \"row 4,210 of 12,000\" even when only thirty\n * rows are in the DOM. Reporting only the rendered window is the defining virtualization-a11y\n * defect (spec §8 Don't).\n */\n rowCount: number;\n /** The TRUE total column count of the full set (spec §7), carried on the grid as `aria-colcount`. */\n colCount: number;\n /** Row density (spec §3). `comfortable` (default) or `compact`. Applies to all cells via context. */\n density?: DataGridDensity;\n /**\n * Selection model (spec §3). `none` (default, read-only) or `multiple` — `multiple` sets\n * `aria-multiselectable` and is the model the selection cells + bulk bar belong to.\n */\n selection?: DataGridSelection;\n /** The rows are resolving (spec §4 Loading). Marks the grid `aria-busy` without stealing focus. */\n loading?: boolean;\n /**\n * The polite live-region message (spec §7, 4.1.3 Status Messages): the resolved row count after a\n * load or filter, the new sort direction, or the selection count — announced as TEXT so it never\n * rests on visual state alone. The caller owns the string (mirroring Table/CommandPalette).\n */\n announcement?: string;\n /**\n * A blocking row-load error (spec §4 Error / §7): announced through the ASSERTIVE region. State\n * what failed and what to do next, in text, without blaming the reader — for example \"These rows\n * didn't load. The request timed out — retry, or narrow the date range.\"\n */\n errorMessage?: string;\n /**\n * Select all rows that match the current filter (spec §6 Ctrl+A). The grid owns the keydown, so\n * Ctrl+A inside the grid calls this; the caller selects the full filtered set and announces the\n * resolved count through `announcement` (never silently — spec §6 \"announced as a count\"). Only\n * meaningful in a `multiple`-selection grid. Without it, Ctrl+A falls through to the browser.\n */\n onSelectAll?: () => void;\n}\n\n/**\n * A DataGrid shows many rows of structured records in a scrollable, operable, two-dimensional grid\n * you navigate one cell at a time (spec §1). Reach for it over a Table when rows run into the\n * thousands and must virtualize, when columns sort/filter/resize/freeze, when rows select for bulk\n * actions, or when each cell is its own focus stop — a trust-events log, an API-key inventory, an\n * AI-agent-identity roster. Use the Table for short, read-mostly lists.\n *\n * It is a NEUTRAL data surface (spec §1/§3): neutrals carry roughly 90% of it. Verification and trust\n * states inside it are STATUS, never brand — a verified row reads through the status aliases, never\n * the Sovereign Violet brand accent, and the brand accent never marks a row as verified. Selection\n * and the active cell are NEUTRAL action states, not Verified Green and not the brand violet\n * (brand != state, G-U2). For a first-class verified result in a cell, use the VerifiedBadge molecule.\n *\n * The grid is a SINGLE tab stop: Tab lands on the active cell and Tab again leaves; inside, the arrow\n * keys move the active cell (spec §6). It owns that roving-cell focus, so it is `'use client'`.\n */\nexport const DataGrid = React.forwardRef<HTMLDivElement, DataGridProps>(function DataGrid(\n {\n className,\n rowCount,\n colCount,\n density = \"comfortable\",\n selection = \"none\",\n loading = false,\n announcement,\n errorMessage,\n onSelectAll,\n children,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledby,\n ...props\n },\n ref,\n) {\n // Cells register their absolute (row, col) + live DOM ref here so the root can move the active cell\n // to a coordinate (Sidebar's registry-in-context pattern, generalized to 2D).\n const registry = React.useRef<Set<CellRegistration>>(new Set());\n const [active, setActive] = React.useState<ActiveCoord | null>(null);\n // the lowest (row, col) any cell has claimed — the resting active cell before the user moves\n const initialRef = React.useRef<ActiveCoord | null>(null);\n // the sibling node, after the table, that grid chrome (bulk bar + status marker) portals into so it\n // renders OUTSIDE role=\"grid\"; tracked as state so a chrome slot re-portals once the node mounts.\n const [chromeContainer, setChromeContainer] = React.useState<HTMLElement | null>(null);\n // true once the user has moved the active cell into the grid (Tab/arrow/pointer) — so we restore\n // focus only for someone already operating the grid, never auto-focus the resting cell on mount.\n const userEngagedRef = React.useRef(false);\n // bumped on every (un)register so a window re-render re-runs the focus-restoration effect AFTER the\n // remounted cell has registered its live DOM ref (a cell registers in its own effect, which fires\n // before the root's effects — so the root must re-render to see the new ref, not read it in render).\n const [registryTick, setRegistryTick] = React.useState(0);\n\n const register = React.useCallback((entry: CellRegistration) => {\n registry.current.add(entry);\n setRegistryTick((t) => t + 1);\n return () => {\n registry.current.delete(entry);\n setRegistryTick((t) => t + 1);\n };\n }, []);\n\n const claimInitial = React.useCallback((coord: ActiveCoord) => {\n const current = initialRef.current;\n // the FIRST cell in reading order (lowest row, then lowest col) is the resting active cell\n if (!current || coord.row < current.row || (coord.row === current.row && coord.col < current.col)) {\n initialRef.current = coord;\n setActive((prev) => prev ?? coord);\n }\n }, []);\n\n const setActiveCoord = React.useCallback((coord: ActiveCoord) => {\n // a cell took focus (pointer / Tab / arrow) → the user is operating the grid, so a later\n // virtualized re-render should restore focus to the active cell rather than let it fall to <body>.\n userEngagedRef.current = true;\n setActive(coord);\n }, []);\n\n const resolvedActive = active ?? initialRef.current;\n const isActive = React.useCallback(\n (coord: ActiveCoord) =>\n resolvedActive !== null && resolvedActive.row === coord.row && resolvedActive.col === coord.col,\n [resolvedActive],\n );\n\n // Focus restoration across a virtualized re-render (spec §7 Focus management / §8 Don't — \"the\n // defining virtualization-a11y defect\"). The active cell's COORDINATE survives in state, so the\n // remounted cell at that (row, col) correctly regains tabindex=0 — but the BROWSER drops DOM focus\n // to <body> when the old node unmounts. So when the cell carrying the active coordinate is present\n // again (its window re-rendered) and focus has fallen OUT of the grid, restore focus to it, so a\n // keyboard / screen-reader user is never stranded mid-grid. We restore ONLY when focus was actually\n // lost — never steal it from another element, and never auto-focus the resting cell on first mount\n // (the resting active cell is a tab stop, not auto-focused; `userEngagedRef` gates that). The effect\n // re-runs on `registryTick`, which bumps once the remounted cell has registered its live DOM ref.\n React.useEffect(() => {\n if (!resolvedActive || !userEngagedRef.current) return;\n const activeCellEl = Array.from(registry.current).find(\n (c) => c.row === resolvedActive.row && c.col === resolvedActive.col,\n )?.el;\n if (!activeCellEl) return;\n const root = activeCellEl.ownerDocument;\n const focused = root.activeElement;\n // focus is \"lost from the grid\" when it is no longer ON a node inside THIS grid — the browser\n // drops it to <body> (or detaches it) when the previously-focused out-of-window cell unmounts.\n const focusInGrid =\n focused instanceof HTMLElement && root.contains(focused) && focused.closest('[role=\"grid\"]') !== null;\n if (!focusInGrid) activeCellEl.focus();\n }, [resolvedActive, registryTick]);\n\n // Resolve a destination coordinate against the registered cells and move focus there. Movement is\n // coordinate-based and clamps at the edges — Right/Left stop at the inline edge (no wrap, spec §6),\n // Up/Down at the row edges, page by a viewport of rows (clamped to what is rendered).\n const cells = () => Array.from(registry.current);\n const rowsOf = () => {\n const set = new Set<number>();\n cells().forEach((c) => set.add(c.row));\n return Array.from(set).sort((a, b) => a - b);\n };\n const colsInRow = (row: number) =>\n cells()\n .filter((c) => c.row === row)\n .map((c) => c.col)\n .sort((a, b) => a - b);\n const cellAt = (row: number, col: number) => cells().find((c) => c.row === row && c.col === col);\n\n // move to the nearest cell at (row, col), clamping col to the columns that exist in that row\n const moveTo = (row: number, col: number) => {\n const target = cellAt(row, col);\n if (target) {\n setActive({ row, col });\n target.el.focus();\n return;\n }\n // clamp the column to the nearest one present in the destination row (rows can differ in shape)\n const cols = colsInRow(row);\n if (cols.length === 0) return;\n const nearest = cols.reduce((best, c) => (Math.abs(c - col) < Math.abs(best - col) ? c : best), cols[0]);\n const fallback = cellAt(row, nearest);\n if (fallback) {\n setActive({ row, col: nearest });\n fallback.el.focus();\n }\n };\n\n const onKeyDown = (event: React.KeyboardEvent<HTMLDivElement>) => {\n // Ctrl+A → select all rows that match the current filter (spec §6), handled BEFORE the movement\n // switch and independent of an active cell. The grid owns the keydown, so it intercepts the\n // browser's select-all; the caller selects the full filtered set and announces the count via\n // `announcement` (spec §6 \"announced as a count, not silently\"). Only a selection grid honors it.\n if ((event.ctrlKey || event.metaKey) && (event.key === \"a\" || event.key === \"A\")) {\n if (selection === \"multiple\" && onSelectAll) {\n event.preventDefault();\n onSelectAll();\n }\n return;\n }\n\n const current = resolvedActive;\n if (!current) return;\n const allRows = rowsOf();\n if (allRows.length === 0) return;\n const rowPos = allRows.indexOf(current.row);\n const cols = colsInRow(current.row);\n const colPos = cols.indexOf(current.col);\n const PAGE = 10; // a viewport of rows; clamped to what exists in this fixture / window\n\n switch (event.key) {\n case \"ArrowRight\": {\n event.preventDefault();\n // inline-axis next; logical (the visual mirror under RTL is the browser's, the index is logical)\n if (colPos < cols.length - 1) moveTo(current.row, cols[colPos + 1]); // stop at edge, no wrap\n break;\n }\n case \"ArrowLeft\": {\n event.preventDefault();\n if (colPos > 0) moveTo(current.row, cols[colPos - 1]); // stop at edge, no wrap\n break;\n }\n case \"ArrowDown\": {\n event.preventDefault();\n if (rowPos < allRows.length - 1) moveTo(allRows[rowPos + 1], current.col);\n break;\n }\n case \"ArrowUp\": {\n event.preventDefault();\n if (rowPos > 0) moveTo(allRows[rowPos - 1], current.col);\n break;\n }\n case \"Home\": {\n event.preventDefault();\n if (event.ctrlKey) {\n // Ctrl+Home → first cell of the first row\n const firstRow = allRows[0];\n moveTo(firstRow, colsInRow(firstRow)[0]);\n } else {\n // Home → first cell in the current row\n moveTo(current.row, cols[0]);\n }\n break;\n }\n case \"End\": {\n event.preventDefault();\n if (event.ctrlKey) {\n // Ctrl+End → last cell of the last row\n const lastRow = allRows[allRows.length - 1];\n const lastRowCols = colsInRow(lastRow);\n moveTo(lastRow, lastRowCols[lastRowCols.length - 1]);\n } else {\n // End → last cell in the current row\n moveTo(current.row, cols[cols.length - 1]);\n }\n break;\n }\n case \"PageDown\": {\n event.preventDefault();\n const dest = Math.min(rowPos + PAGE, allRows.length - 1);\n moveTo(allRows[dest], current.col);\n break;\n }\n case \"PageUp\": {\n event.preventDefault();\n const dest = Math.max(rowPos - PAGE, 0);\n moveTo(allRows[dest], current.col);\n break;\n }\n default:\n break;\n }\n };\n\n const ctx = React.useMemo<DataGridContextValue>(\n () => ({\n density,\n selection,\n active: resolvedActive,\n register,\n claimInitial,\n isActive,\n setActive: setActiveCoord,\n chromeContainer,\n }),\n [density, selection, resolvedActive, register, claimInitial, isActive, setActiveCoord, chromeContainer],\n );\n\n return (\n <DataGridContext.Provider value={ctx}>\n {/* The scroll container is a plain wrapper (the caller sizes the scroll viewport via className —\n the token set has no grid-height scale, the caller-owned-dimension precedent). The grid ROLE\n lives on the native <table> below, so its rows are the grid's direct row children\n (aria-required-children); the bulk bar + live regions are SIBLINGS of the table, OUTSIDE the\n grid. The arrow-key roving handler is on the wrapper so it catches the bubbling keydown from\n any cell. */}\n <div ref={ref} className={cn(dataGridVariants(), className)} onKeyDown={onKeyDown} {...props}>\n {/* The grid carries the FULL-set shape (spec §7): aria-rowcount / aria-colcount are the TRUE\n totals, not the rendered window, so the full shape survives virtualization. A selection\n grid is multiselectable. aria-busy reflects loading without stealing focus (spec §4\n Loading). A native <table> + role=\"grid\" keeps the row/column relationship native (1.3.1)\n while exposing the APG grid pattern. The caller's children render INSIDE the table; the\n chrome slots (bulk bar, status marker) portal THEMSELVES back OUT to the sibling node\n below via context, so a role=\"toolbar\" never lands inside role=\"grid\" (aria-required-\n children) no matter how the caller nests it. */}\n <table\n role=\"grid\"\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledby}\n aria-rowcount={rowCount}\n aria-colcount={colCount}\n aria-multiselectable={selection === \"multiple\" ? true : undefined}\n aria-busy={loading || undefined}\n className={dataGridTableClass}\n >\n {children}\n </table>\n {/* The sibling node, OUTSIDE the grid table, that grid chrome portals into. A role=\"toolbar\"\n (the bulk bar) and the live-region <span>s are not valid children of role=\"grid\", so they\n live here — the same way Table's pagination is a sibling control beside the table, not\n table content. Routed by context + createPortal (recipe Root→slot context), NOT by\n introspecting child.type, so wrapping a chrome slot in a Fragment / wrapper can't misroute\n it back into the grid. */}\n <div ref={setChromeContainer} />\n {/* The polite + assertive live regions, owned by the root and portaled to the chrome node, so\n the announcement contract holds even when the caller omits <DataGridStatusRegion/>. The\n grid's accessible name is carried by the <table>, so the wrapper is unnamed. */}\n {chromeContainer\n ? createPortal(\n <DataGridLiveRegions announcement={announcement} errorMessage={errorMessage} />,\n chromeContainer,\n )\n : null}\n </div>\n </DataGridContext.Provider>\n );\n});\n\n// The grid's live regions (spec §7, 4.1.3): a POLITE region for the row count / sort / filter /\n// selection changes, and an ASSERTIVE region for a blocking row-load error. Both always present (a\n// live region must exist before its text changes to be announced) and sr-only (the visual state\n// carries the same information for sighted users, so the region is text-only — never color alone).\n// Rendered by the root so the contract holds even when a caller omits <DataGridStatusRegion/>; the\n// explicit slot is a no-op marker for the anatomy (below). They are siblings of the <table>.\nfunction DataGridLiveRegions({\n announcement,\n errorMessage,\n}: {\n announcement?: string;\n errorMessage?: string;\n}) {\n return (\n <>\n <span role=\"status\" aria-live=\"polite\" className={dataGridStatusRegionClass}>\n {announcement}\n </span>\n <span role=\"alert\" aria-live=\"assertive\" className={dataGridStatusRegionClass}>\n {errorMessage}\n </span>\n </>\n );\n}\n\nexport type DataGridStatusRegionProps = Record<string, never>;\n\n/**\n * A no-op anatomy marker for the live status region (spec §2 status-region). The actual polite +\n * assertive regions are owned by the DataGrid root (fed by its `announcement` / `errorMessage`\n * props) and portaled outside the grid table, so the announcement contract holds even when this slot\n * is omitted; render this in the grid's children to document the anatomy explicitly. It renders\n * nothing itself — so it is harmless wherever the caller places it inside the grid.\n */\nexport function DataGridStatusRegion(_props: DataGridStatusRegionProps): null {\n return null;\n}\n\nexport interface DataGridHeaderRowProps extends React.HTMLAttributes<HTMLTableRowElement> {\n /** The header row's absolute 1-based `aria-rowindex` against the full set (spec §7). Conventionally 1. */\n rowIndex: number;\n}\n\n/**\n * The sticky column-header row (spec §2 column-header-row / §4). It is a `role=\"row\"` holding the\n * `columnheader` cells, pinned to the top of the scroll viewport on the raised surface so it reads\n * above the scrolling rows (spec §4/§5). Its absolute `aria-rowindex` is carried for the full-set\n * shape (spec §7); a header row is conventionally row 1.\n */\nexport const DataGridHeaderRow = React.forwardRef<HTMLTableRowElement, DataGridHeaderRowProps>(\n function DataGridHeaderRow({ className, rowIndex, children, ...props }, ref) {\n return (\n // a real <thead><tr> so the column-header relationship is native (1.3.1)\n <thead>\n <tr ref={ref} role=\"row\" aria-rowindex={rowIndex} className={cn(dataGridHeaderRowClass, className)} {...props}>\n {children}\n </tr>\n </thead>\n );\n },\n);\n\nexport type DataGridBodyProps = React.HTMLAttributes<HTMLTableSectionElement>;\n\n/**\n * The `<tbody>` holding the rendered window of data rows (spec §2). With virtualization only a window\n * of rows is in the DOM — the full shape is carried by the grid's `aria-rowcount` and each row's\n * absolute `aria-rowindex` (spec §7), not by the rendered count.\n */\nexport const DataGridBody = React.forwardRef<HTMLTableSectionElement, DataGridBodyProps>(\n function DataGridBody({ className, ...props }, ref) {\n return <tbody ref={ref} className={cn(className)} {...props} />;\n },\n);\n\nexport interface DataGridRowProps extends React.HTMLAttributes<HTMLTableRowElement> {\n /** The row's absolute 1-based `aria-rowindex` against the full set (spec §7) — e.g. 4210, not the rendered position. */\n rowIndex: number;\n /**\n * The row is selected (spec §4 Selected). Sets `aria-selected` and the NEUTRAL selection-accent\n * fill; selection is encoded by `aria-selected` + the selection checkbox, never by color alone, and\n * NEVER a brand or status tint (brand != state, G-U2). Selecting a row never implies it is verified.\n */\n selected?: boolean;\n}\n\n/**\n * One record row (spec §2 row / §4). A `role=\"row\"` carrying its absolute `aria-rowindex` (spec §7),\n * the restrained ghost row-hover affordance, and — when `selected` — the neutral selection accent +\n * `aria-selected`. In a `multiple`-selection grid every body row reflects `aria-selected` (true or\n * false) so selection state is never ambiguous to assistive tech.\n */\nexport const DataGridRow = React.forwardRef<HTMLTableRowElement, DataGridRowProps>(function DataGridRow(\n { className, rowIndex, selected, ...props },\n ref,\n) {\n const { selection } = useDataGrid();\n // in a selection grid, every row reports aria-selected (true/false); a read-only grid omits it\n const ariaSelected =\n selection === \"multiple\" ? (selected ? true : false) : selected ? true : undefined;\n return (\n <tr\n ref={ref}\n role=\"row\"\n aria-rowindex={rowIndex}\n aria-selected={ariaSelected}\n className={cn(dataGridRowClass, className)}\n {...props}\n />\n );\n});\n\n// A hook that wires a cell into the roving-focus registry: it registers the cell's (row, col) + ref,\n// reports the initial active coordinate, and returns the tabindex + focus handler the cell binds. The\n// shared seam for every roving cell (data cell, column header, selection cell) so they all agree.\nfunction useRovingCell(row: number, col: number) {\n const { register, claimInitial, isActive, setActive } = useDataGrid();\n const ref = React.useRef<HTMLTableCellElement | null>(null);\n React.useEffect(() => {\n const el = ref.current;\n if (!el) return;\n claimInitial({ row, col });\n return register({ row, col, el });\n }, [register, claimInitial, row, col]);\n const active = isActive({ row, col });\n // exactly one cell is tabindex=0 (the active cell); every other is -1 → the grid is one tab stop\n const tabIndex = active ? 0 : -1;\n // focusing a cell (pointer/Tab/arrow) makes it the active cell, so click + Tab agree with arrows\n const onFocus = () => setActive({ row, col });\n return { ref, tabIndex, onFocus };\n}\n\nexport interface DataGridColumnHeaderProps\n extends Omit<React.ThHTMLAttributes<HTMLTableCellElement>, \"onClick\"> {\n /** The header's absolute 1-based `aria-colindex` against the full set (spec §7). */\n colIndex: number;\n /** This column can be re-sorted from its header (spec §3 sortable): renders a real sort button + caret. */\n sortable?: boolean;\n /**\n * The current sort direction for this column (spec §4 Sorted), reflected as `aria-sort` on the\n * header and as the caret. Only one column is the sort column — set it here and `\"none\"` elsewhere.\n */\n sortDirection?: DataGridSortDirection;\n /** Fired when the sortable header is activated (click / Enter), so the caller re-sorts and updates `sortDirection`. */\n onSort?: () => void;\n /** The column name used in the sort control's accessible name, when it differs from the children. */\n sortLabel?: string;\n}\n\n// The sort-direction caret (spec §4 Sorted): decorative — aria-sort on the th + the glyph SHAPE\n// (data-direction) encode the direction, so it never rests on color alone (1.4.1). Inline SVG, no\n// icon dep; it points up for ascending, down for descending, and shows a neutral both-ways glyph when\n// the column is sortable but not the active sort column.\nfunction SortCaret({ direction }: { direction: DataGridSortDirection }) {\n return (\n <span data-testid=\"data-grid-sort-caret\" data-direction={direction} aria-hidden=\"true\" className={dataGridSortCaretClass}>\n <svg viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.5\" focusable=\"false\" aria-hidden=\"true\">\n {direction === \"ascending\" ? (\n <path d=\"M4 10l4-4 4 4\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n ) : direction === \"descending\" ? (\n <path d=\"M4 6l4 4 4-4\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n ) : (\n <path d=\"M5 6.5l3-3 3 3M5 9.5l3 3 3-3\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n )}\n </svg>\n </span>\n );\n}\n\nconst NEXT_DIRECTION_WORD: Record<DataGridSortDirection, string> = {\n none: \"ascending\",\n ascending: \"descending\",\n descending: \"ascending\",\n};\n\n/**\n * One column header cell (spec §2 column-header / §7). A `th role=\"columnheader\"` that is also a\n * roving active-cell target (it carries the cell focus ring + tabindex). A plain header is a quiet,\n * tracked label in the secondary text color. A `sortable` header wraps the label in a real `<button>`\n * carrying the ghost-action accent, a caret, and the target-size floor; the header reflects\n * `aria-sort` and Enter toggles the sort (spec §6) — so direction reaches assistive tech as data and\n * never rests on color alone (1.4.1).\n */\nexport const DataGridColumnHeader = React.forwardRef<HTMLTableCellElement, DataGridColumnHeaderProps>(\n function DataGridColumnHeader(\n { className, colIndex, sortable = false, sortDirection = \"none\", onSort, sortLabel, children, ...props },\n ref,\n ) {\n const { density } = useDataGrid();\n const { ref: rovingRef, tabIndex, onFocus } = useRovingCell(1, colIndex); // header is row 1\n React.useImperativeHandle(ref, () => rovingRef.current as HTMLTableCellElement);\n const ariaSort = sortable ? sortDirection : undefined;\n const label = sortLabel ?? (typeof children === \"string\" ? children : undefined);\n\n // Enter on the active header toggles the sort (spec §6 \"In a column header: toggle the column\n // sort\"). Activating the inner button also fires onSort; both routes call the same handler.\n const onKeyDown = (event: React.KeyboardEvent<HTMLTableCellElement>) => {\n if (sortable && event.key === \"Enter\") {\n event.preventDefault();\n onSort?.();\n }\n };\n\n return (\n <th\n ref={rovingRef}\n role=\"columnheader\"\n scope=\"col\"\n aria-colindex={colIndex}\n // exactly one header carries aria-sort at a time (spec §4 Sorted); the rest are \"none\"/absent\n aria-sort={ariaSort}\n tabIndex={tabIndex}\n onFocus={onFocus}\n onKeyDown={onKeyDown}\n className={cn(dataGridColumnHeaderVariants({ density }), className)}\n {...props}\n >\n {sortable ? (\n <button\n type=\"button\"\n onClick={onSort}\n // a roving cell owns the tab stop; the inner button is reachable via Enter on the cell,\n // not as its own tab stop (the cell is the single stop) — so it is tabindex=-1\n tabIndex={-1}\n aria-label={label ? `Sort by ${label}, ${NEXT_DIRECTION_WORD[sortDirection]}` : undefined}\n className={dataGridSortButtonClass}\n >\n {children}\n <SortCaret direction={sortDirection} />\n </button>\n ) : (\n children\n )}\n </th>\n );\n },\n);\n\n/**\n * How a cell relates to the interactive control(s) it holds (spec §2/§6 cell entry/exit model):\n * - `undefined` — a plain VALUE cell (or one static, non-interactive node). The cell itself is the\n * focus stop; arrow keys move the active cell as normal.\n * - `\"single\"` — the cell holds ONE interactive control (a link, a status chip, a row-action menu).\n * The cell DELEGATES focus to that control on entry, so the control is what you land on and operate\n * directly (spec §6 \"delegates focus to it on entry\").\n * - `\"multiple\"` — the cell holds SEVERAL controls. The cell is ENTERED with Enter (focus moves to the\n * first control, and arrow keys stay free for the inner controls rather than moving the active cell)\n * and EXITED with Escape (focus returns to the cell), so arrow keys stay free for grid movement\n * outside it (spec §6 \"entered with Enter and exited with Escape, so arrow keys stay free\").\n */\nexport type DataGridCellControls = \"single\" | \"multiple\";\n\nexport interface DataGridCellProps\n extends React.TdHTMLAttributes<HTMLTableCellElement>,\n Pick<DataGridCellVariantProps, \"mono\" | \"secondary\" | \"status\"> {\n /** The cell's absolute 1-based `aria-colindex` against the full set (spec §7). */\n colIndex: number;\n /** The cell belongs to a body row at this absolute `aria-rowindex`; supplied by DataGridRow context where omitted. */\n rowIndex?: number;\n /**\n * Whether this cell holds interactive control(s), and so how Enter/Escape behave for it (spec §6\n * cell entry/exit model). Omit for a plain value cell. See {@link DataGridCellControls}.\n */\n controls?: DataGridCellControls;\n}\n\n// Find the focusable descendants of a cell (a single/multi-control cell delegates / enters into\n// them). The roving-cell <td> itself is excluded — we want the controls it HOSTS, not the cell.\nconst FOCUSABLE_SELECTOR =\n 'a[href], button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex=\"-1\"]):not([role=\"gridcell\"]):not([role=\"columnheader\"]), [tabindex=\"-1\"]:not([role=\"gridcell\"]):not([role=\"columnheader\"])';\nfunction focusablesIn(cell: HTMLElement): HTMLElement[] {\n return Array.from(cell.querySelectorAll<HTMLElement>(FOCUSABLE_SELECTOR));\n}\n\n// A cell reads its owning row's aria-rowindex from the rendered <tr> so the caller does not repeat it\n// on every cell. The row sets it; the cell discovers it from its closest row on mount.\nfunction useOwningRowIndex(elRef: React.RefObject<HTMLElement | null>, explicit?: number): number {\n const [rowIndex, setRowIndex] = React.useState<number>(explicit ?? 0);\n React.useEffect(() => {\n if (explicit !== undefined) {\n setRowIndex(explicit);\n return;\n }\n const tr = elRef.current?.closest('[role=\"row\"]');\n const attr = tr?.getAttribute(\"aria-rowindex\");\n if (attr) setRowIndex(Number(attr));\n }, [elRef, explicit]);\n return rowIndex;\n}\n\n/**\n * One data cell — the focusable unit of the grid (spec §2 cell / §4/§7). A `td role=\"gridcell\"`\n * carrying its absolute `aria-colindex` (spec §7) and the roving active-cell tabindex + focus ring.\n * A plain cell is neutral primary text; a `mono` cell takes the monospace role and stays LTR in RTL\n * (an identifier/key/timestamp, G-U6); a `secondary` cell is de-emphasized; a `status` cell carries\n * the status fg paired with text (a verification/trust state) — the status color lives in the cell\n * only, never the row or header, and NEVER the brand (brand != state, G-U2). The cell hosts a value\n * or a single interactive control; density is read from the grid via context.\n */\nexport const DataGridCell = React.forwardRef<HTMLTableCellElement, DataGridCellProps>(function DataGridCell(\n { className, colIndex, rowIndex, mono = false, secondary = false, status = \"none\", controls, onKeyDown, ...props },\n ref,\n) {\n const { density } = useDataGrid();\n const localRef = React.useRef<HTMLTableCellElement | null>(null);\n const owningRow = useOwningRowIndex(localRef, rowIndex);\n const { ref: rovingRef, tabIndex, onFocus: rovingOnFocus } = useRovingCell(owningRow, colIndex);\n // whether the active cell has been ENTERED for its controls (a multi-control cell); while entered,\n // arrow keys are left for the inner controls and Escape returns to grid navigation (spec §6).\n const [entered, setEntered] = React.useState(false);\n // share one DOM node between the roving registry, the row-index discovery, and the forwarded ref\n React.useImperativeHandle(ref, () => localRef.current as HTMLTableCellElement);\n const setRefs = (node: HTMLTableCellElement | null) => {\n localRef.current = node;\n rovingRef.current = node;\n };\n\n // A SINGLE-control cell delegates focus to its one control on entry (spec §6): when the cell takes\n // focus, hand focus straight to the inner control so you land on and operate the control directly.\n const onFocus = (event: React.FocusEvent<HTMLTableCellElement>) => {\n rovingOnFocus();\n if (controls === \"single\" && event.target === localRef.current) {\n const first = focusablesIn(localRef.current)[0];\n if (first) first.focus();\n }\n };\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLTableCellElement>) => {\n onKeyDown?.(event);\n if (event.defaultPrevented) return;\n const cell = localRef.current;\n if (!cell) return;\n if (controls === \"multiple\") {\n // Enter ENTERS the cell: focus the first control; arrow keys then stay free for the inner\n // controls (we stop their propagation below so the grid's roving handler ignores them).\n if (event.key === \"Enter\" && event.target === cell && !entered) {\n const first = focusablesIn(cell)[0];\n if (first) {\n event.preventDefault();\n setEntered(true);\n first.focus();\n }\n return;\n }\n // Escape EXITS the cell: focus returns to the cell and arrow keys move the active cell again.\n if (event.key === \"Escape\" && entered) {\n event.preventDefault();\n event.stopPropagation();\n setEntered(false);\n cell.focus();\n return;\n }\n // while ENTERED, keep arrow keys for the inner controls — stop them reaching the grid's roving\n // handler on the wrapper, so they never move the active cell (spec §6 \"arrow keys stay free\").\n if (\n entered &&\n (event.key === \"ArrowRight\" ||\n event.key === \"ArrowLeft\" ||\n event.key === \"ArrowUp\" ||\n event.key === \"ArrowDown\" ||\n event.key === \"Home\" ||\n event.key === \"End\")\n ) {\n event.stopPropagation();\n }\n }\n };\n\n return (\n <td\n ref={setRefs}\n role=\"gridcell\"\n aria-colindex={colIndex}\n tabIndex={tabIndex}\n onFocus={onFocus}\n onKeyDown={handleKeyDown}\n className={cn(dataGridCellVariants({ density, mono, secondary, status }), className)}\n {...props}\n />\n );\n});\n\nexport interface DataGridSelectionCellProps\n extends Omit<React.TdHTMLAttributes<HTMLTableCellElement>, \"onChange\"> {\n /** The cell's absolute 1-based `aria-colindex` (spec §7). The selection cell is the leading column. */\n colIndex: number;\n /** Whether the row is selected (spec §4 Selected). */\n checked: boolean;\n /** Fired when the row's selection toggles (via the checkbox or Space on the cell). */\n onCheckedChange?: (checked: boolean) => void;\n /**\n * Extend a range from the last selected row to this one (spec §6 Shift+Space). The grid does not\n * track which row was selected last, so the caller owns the anchor and the resulting range; this\n * fires on Shift+Space on the cell so the range reaches the same handler keyboard and pointer\n * (Shift+click) would. Without it, Shift+Space falls back to toggling the single row.\n */\n onExtendSelection?: () => void;\n /** The checkbox's accessible name (spec §7) — e.g. \"Select sk_live_1\". Never the placeholder. */\n label: string;\n /** The cell belongs to a body row at this absolute `aria-rowindex`; discovered from the row when omitted. */\n rowIndex?: number;\n}\n\n/**\n * The leading selection cell (spec §2 selection-cell / §4/§6): a `gridcell` holding the row's\n * Checkbox. Space on the cell toggles the row's selection (spec §6). The checkbox is the committed\n * Checkbox component — a checked box is the brand action accent (never status-verified, G-U2):\n * selection is a neutral action state. It is a roving active-cell target like any other cell.\n */\nexport const DataGridSelectionCell = React.forwardRef<HTMLTableCellElement, DataGridSelectionCellProps>(\n function DataGridSelectionCell(\n { className, colIndex, checked, onCheckedChange, onExtendSelection, label, rowIndex, ...props },\n ref,\n ) {\n const localRef = React.useRef<HTMLTableCellElement | null>(null);\n const owningRow = useOwningRowIndex(localRef, rowIndex);\n const { ref: rovingRef, tabIndex, onFocus } = useRovingCell(owningRow, colIndex);\n React.useImperativeHandle(ref, () => localRef.current as HTMLTableCellElement);\n const setRefs = (node: HTMLTableCellElement | null) => {\n localRef.current = node;\n rovingRef.current = node;\n };\n // Space on the cell toggles the row's selection; Shift+Space extends a range from the last\n // selected row (spec §6). Shift+Space prefers the range handler when the caller wires one and\n // falls back to toggling the single row otherwise, so the key is never inert.\n const onKeyDown = (event: React.KeyboardEvent<HTMLTableCellElement>) => {\n if (event.key === \" \") {\n event.preventDefault();\n if (event.shiftKey && onExtendSelection) {\n onExtendSelection();\n } else {\n onCheckedChange?.(!checked);\n }\n }\n };\n return (\n <td\n ref={setRefs}\n role=\"gridcell\"\n aria-colindex={colIndex}\n tabIndex={tabIndex}\n onFocus={onFocus}\n onKeyDown={onKeyDown}\n className={cn(dataGridSelectionCellClass, className)}\n {...props}\n >\n <Checkbox label={label} checked={checked} onCheckedChange={onCheckedChange} />\n </td>\n );\n },\n);\n\nexport interface DataGridSelectAllCellProps\n extends Omit<React.ThHTMLAttributes<HTMLTableCellElement>, \"onChange\"> {\n /** The header cell's absolute 1-based `aria-colindex` (spec §7). The select-all is the leading column. */\n colIndex: number;\n /** Whether all rows are selected. */\n checked: boolean;\n /** Whether some-but-not-all rows are selected (the mixed/indeterminate state). */\n indeterminate?: boolean;\n /** Fired when the select-all toggles. */\n onCheckedChange?: (checked: boolean) => void;\n /** The select-all checkbox's accessible name (spec §7) — e.g. \"Select all rows\". */\n label: string;\n}\n\n/**\n * The select-all header cell (spec §2 selection-cell: \"its header holds the select-all checkbox\").\n * A `columnheader` holding the parent Checkbox (the `variant=\"parent\"` mixed model), so a partial\n * selection reads as mixed to assistive tech. A roving active-cell target like any other header.\n */\nexport const DataGridSelectAllCell = React.forwardRef<HTMLTableCellElement, DataGridSelectAllCellProps>(\n function DataGridSelectAllCell(\n { className, colIndex, checked, indeterminate = false, onCheckedChange, label, ...props },\n ref,\n ) {\n const { ref: rovingRef, tabIndex, onFocus } = useRovingCell(1, colIndex); // header is row 1\n React.useImperativeHandle(ref, () => rovingRef.current as HTMLTableCellElement);\n return (\n <th\n ref={rovingRef}\n role=\"columnheader\"\n scope=\"col\"\n aria-colindex={colIndex}\n tabIndex={tabIndex}\n onFocus={onFocus}\n className={cn(dataGridSelectionCellClass, className)}\n {...props}\n >\n <Checkbox\n variant=\"parent\"\n label={label}\n checked={checked}\n indeterminate={indeterminate}\n onCheckedChange={onCheckedChange}\n />\n </th>\n );\n },\n);\n\nexport interface DataGridBulkActionBarProps extends React.HTMLAttributes<HTMLDivElement> {\n /** How many rows are selected (spec §2/§7), announced in words so selection is never color alone. */\n selectedCount: number;\n /** Fired when Escape dismisses the bar (spec §6 \"dismiss the bulk-action bar\"). */\n onDismiss?: () => void;\n}\n\n/**\n * The bulk-action bar (spec §2 bulk-action-bar / §4/§6): a `role=\"toolbar\"` that appears when one or\n * more rows are selected, holding the selection actions and the selected-count label. It is a NEUTRAL\n * surface — the color lives on the action buttons it holds, never on the bar (spec §3/§8). Escape\n * dismisses it back to grid navigation (spec §6). Its accessible name names the selection count.\n */\nexport const DataGridBulkActionBar = React.forwardRef<HTMLDivElement, DataGridBulkActionBarProps>(\n function DataGridBulkActionBar({ className, selectedCount, onDismiss, children, ...props }, ref) {\n // A role=\"toolbar\" is not a valid child of role=\"grid\" (aria-required-children), so the bar\n // renders OUTSIDE the grid table — but it is authored as a child of <DataGrid>. It reads the\n // root's chrome container from context and portals itself there, so it lands outside the grid no\n // matter how the caller nests it (Fragment, wrapper, forwarded) — NO child.type introspection.\n const ctx = React.useContext(DataGridContext);\n const onKeyDown = (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (event.key === \"Escape\") {\n event.preventDefault();\n onDismiss?.();\n }\n };\n const bar = (\n <div\n ref={ref}\n role=\"toolbar\"\n tabIndex={-1}\n aria-label={`${selectedCount} selected`}\n className={cn(dataGridBulkBarClass, className)}\n onKeyDown={onKeyDown}\n {...props}\n >\n <span className={dataGridBulkCountClass}>{selectedCount} selected</span>\n {children}\n </div>\n );\n // Inside a DataGrid: portal to the root's chrome node — and render NOTHING until that node\n // mounts, so the bar never lands inside the <table role=\"grid\"> for even one frame (the container\n // ref is set + a state bump re-renders this on the same commit). Outside any DataGrid (no\n // context): render in place so a standalone bar is never lost.\n if (ctx) return ctx.chromeContainer ? createPortal(bar, ctx.chromeContainer) : null;\n return bar;\n },\n);\n\nexport interface DataGridBulkActionProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n /** A destructive bulk action (spec §5) — a risk signal in the ACTION tier (never a status color). */\n destructive?: boolean;\n}\n\n/**\n * One action in the bulk-action bar (spec §2/§5): a real `<button>`. The default action is the\n * primary action accent; a `destructive` action (for example, revoke a key) is the destructive\n * action accent — a risk signal named in TEXT, never a status color (spec §5/§8).\n */\nexport const DataGridBulkAction = React.forwardRef<HTMLButtonElement, DataGridBulkActionProps>(\n function DataGridBulkAction({ className, destructive = false, type = \"button\", ...props }, ref) {\n return (\n <button\n ref={ref}\n type={type}\n className={cn(dataGridBulkActionVariants({ destructive }), className)}\n {...props}\n />\n );\n },\n);\n\nexport interface DataGridEmptyProps extends React.TdHTMLAttributes<HTMLTableCellElement> {\n /** How many columns the empty line spans, so it fills the grid's own width (spec §2/§4 Empty). */\n colSpan?: number;\n}\n\n/**\n * The empty-state row (spec §2/§4 Empty): a single full-width cell stating why the grid is empty and\n * what to do next, in plain words ending in a period — clear a filter, widen a date range. An empty\n * grid is NOT an error and never reads as one (no status color), and it never blames you or ends with\n * an exclamation mark (voice). Render it inside the body when a query returns nothing.\n */\nexport const DataGridEmpty = React.forwardRef<HTMLTableCellElement, DataGridEmptyProps>(\n function DataGridEmpty({ className, colSpan = 1, children, ...props }, ref) {\n return (\n <tr role=\"row\">\n <td ref={ref} role=\"gridcell\" colSpan={colSpan} className={cn(dataGridEmptyClass, className)} {...props}>\n {children}\n </td>\n </tr>\n );\n },\n);\n"],"mappings":"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","names":["DataGrid","DataGridHeaderRow","DataGridBody","DataGridRow","DataGridColumnHeader","DataGridCell","DataGridSelectionCell","DataGridSelectAllCell","DataGridBulkActionBar","DataGridBulkAction","DataGridEmpty"]}