@lerianstudio/sindarian-ui 1.2.0 → 1.3.0-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (661) hide show
  1. package/dist/charts/chart.d.ts +64 -0
  2. package/dist/charts/chart.d.ts.map +1 -0
  3. package/dist/charts/chart.js +232 -0
  4. package/dist/charts/index.d.ts +3 -0
  5. package/dist/charts/index.d.ts.map +1 -0
  6. package/dist/charts/index.js +11 -0
  7. package/dist/components/breadcrumb/get-breadcrumb-paths.js +5 -2
  8. package/dist/components/form/date-time-picker-field/index.js +1 -1
  9. package/dist/components/form/file-upload-field/index.d.ts +52 -0
  10. package/dist/components/form/file-upload-field/index.d.ts.map +1 -0
  11. package/dist/components/form/file-upload-field/index.js +64 -0
  12. package/dist/components/form/index.d.ts +3 -0
  13. package/dist/components/form/index.d.ts.map +1 -1
  14. package/dist/components/form/index.js +3 -0
  15. package/dist/components/form/radio-group-field/index.d.ts +32 -0
  16. package/dist/components/form/radio-group-field/index.d.ts.map +1 -0
  17. package/dist/components/form/radio-group-field/index.js +36 -0
  18. package/dist/components/form/renderable-label.d.ts +35 -0
  19. package/dist/components/form/renderable-label.d.ts.map +1 -0
  20. package/dist/components/form/renderable-label.js +57 -0
  21. package/dist/components/form/textarea-field/index.d.ts +31 -0
  22. package/dist/components/form/textarea-field/index.d.ts.map +1 -0
  23. package/dist/components/form/textarea-field/index.js +23 -0
  24. package/dist/components/table/id-table-cell.js +5 -2
  25. package/dist/components/ui/accordion/index.d.ts +14 -0
  26. package/dist/components/ui/accordion/index.d.ts.map +1 -0
  27. package/dist/components/ui/accordion/index.js +62 -0
  28. package/dist/components/ui/alert-dialog/index.d.ts +15 -0
  29. package/dist/components/ui/alert-dialog/index.d.ts.map +1 -0
  30. package/dist/components/ui/alert-dialog/index.js +84 -0
  31. package/dist/components/ui/autocomplete/index.d.ts +1 -1
  32. package/dist/components/ui/autocomplete/index.d.ts.map +1 -1
  33. package/dist/components/ui/autocomplete/index.js +45 -9
  34. package/dist/components/ui/badge/index.d.ts.map +1 -1
  35. package/dist/components/ui/badge/index.js +2 -2
  36. package/dist/components/ui/button/index.d.ts.map +1 -1
  37. package/dist/components/ui/button/index.js +1 -1
  38. package/dist/components/ui/copy-field/index.d.ts +56 -0
  39. package/dist/components/ui/copy-field/index.d.ts.map +1 -0
  40. package/dist/components/ui/copy-field/index.js +155 -0
  41. package/dist/components/ui/dialog/styles.css +3 -3
  42. package/dist/components/ui/file-upload/index.d.ts +94 -0
  43. package/dist/components/ui/file-upload/index.d.ts.map +1 -0
  44. package/dist/components/ui/file-upload/index.js +237 -0
  45. package/dist/components/ui/hover-card/index.d.ts +7 -0
  46. package/dist/components/ui/hover-card/index.d.ts.map +1 -0
  47. package/dist/components/ui/hover-card/index.js +51 -0
  48. package/dist/components/ui/icon-button/styles.css +24 -24
  49. package/dist/components/ui/input/index.d.ts.map +1 -1
  50. package/dist/components/ui/input/index.js +6 -5
  51. package/dist/components/ui/input/styles.css +6 -2
  52. package/dist/components/ui/otp-input/index.d.ts.map +1 -1
  53. package/dist/components/ui/otp-input/index.js +1 -1
  54. package/dist/components/ui/qr-code/index.d.ts +26 -0
  55. package/dist/components/ui/qr-code/index.d.ts.map +1 -0
  56. package/dist/components/ui/qr-code/index.js +27 -0
  57. package/dist/components/ui/radio-group/index.d.ts +6 -0
  58. package/dist/components/ui/radio-group/index.d.ts.map +1 -0
  59. package/dist/components/ui/radio-group/index.js +48 -0
  60. package/dist/components/ui/scroll-area/index.d.ts +6 -0
  61. package/dist/components/ui/scroll-area/index.d.ts.map +1 -0
  62. package/dist/components/ui/scroll-area/index.js +49 -0
  63. package/dist/components/ui/sidebar/index.d.ts +1 -0
  64. package/dist/components/ui/sidebar/index.d.ts.map +1 -1
  65. package/dist/components/ui/sidebar/index.js +1 -0
  66. package/dist/components/ui/sidebar/next-router.cjs +119 -0
  67. package/dist/components/ui/sidebar/next-router.d.cts +7 -0
  68. package/dist/components/ui/sidebar/sidebar-item-button.d.ts +2 -2
  69. package/dist/components/ui/sidebar/sidebar-item-button.d.ts.map +1 -1
  70. package/dist/components/ui/sidebar/sidebar-item-button.js +3 -5
  71. package/dist/components/ui/sidebar/sidebar-item-icon-button.d.ts +3 -3
  72. package/dist/components/ui/sidebar/sidebar-item-icon-button.d.ts.map +1 -1
  73. package/dist/components/ui/sidebar/sidebar-item-icon-button.js +5 -7
  74. package/dist/components/ui/sidebar/sidebar-item.d.ts.map +1 -1
  75. package/dist/components/ui/sidebar/sidebar-item.js +3 -2
  76. package/dist/components/ui/sidebar/sidebar-router.d.ts +82 -0
  77. package/dist/components/ui/sidebar/sidebar-router.d.ts.map +1 -0
  78. package/dist/components/ui/sidebar/sidebar-router.js +126 -0
  79. package/dist/components/ui/toast/index.d.ts +1 -1
  80. package/dist/components/ui/toast/index.d.ts.map +1 -1
  81. package/dist/components/ui/toggle-group/index.d.ts +18 -0
  82. package/dist/components/ui/toggle-group/index.d.ts.map +1 -0
  83. package/dist/components/ui/toggle-group/index.js +87 -0
  84. package/dist/domain/blotter/index.d.ts +40 -0
  85. package/dist/domain/blotter/index.d.ts.map +1 -0
  86. package/dist/domain/blotter/index.js +16 -0
  87. package/dist/domain/delinquency-aging/aging-buckets.d.ts +57 -0
  88. package/dist/domain/delinquency-aging/aging-buckets.d.ts.map +1 -0
  89. package/dist/domain/delinquency-aging/aging-buckets.js +110 -0
  90. package/dist/domain/delinquency-aging/index.d.ts +71 -0
  91. package/dist/domain/delinquency-aging/index.d.ts.map +1 -0
  92. package/dist/domain/delinquency-aging/index.js +213 -0
  93. package/dist/domain/figure/index.d.ts +30 -0
  94. package/dist/domain/figure/index.d.ts.map +1 -0
  95. package/dist/domain/figure/index.js +18 -0
  96. package/dist/domain/format.d.ts +79 -0
  97. package/dist/domain/format.d.ts.map +1 -0
  98. package/dist/domain/format.js +137 -0
  99. package/dist/domain/index.d.ts +23 -0
  100. package/dist/domain/index.d.ts.map +1 -0
  101. package/dist/domain/index.js +43 -0
  102. package/dist/domain/key-id/index.d.ts +31 -0
  103. package/dist/domain/key-id/index.d.ts.map +1 -0
  104. package/dist/domain/key-id/index.js +174 -0
  105. package/dist/domain/ledger-sheet/index.d.ts +45 -0
  106. package/dist/domain/ledger-sheet/index.d.ts.map +1 -0
  107. package/dist/domain/ledger-sheet/index.js +28 -0
  108. package/dist/domain/money-diff.d.ts +28 -0
  109. package/dist/domain/money-diff.d.ts.map +1 -0
  110. package/dist/domain/money-diff.js +48 -0
  111. package/dist/domain/money-math.d.ts +32 -0
  112. package/dist/domain/money-math.d.ts.map +1 -0
  113. package/dist/domain/money-math.js +104 -0
  114. package/dist/domain/money-text/index.d.ts +37 -0
  115. package/dist/domain/money-text/index.d.ts.map +1 -0
  116. package/dist/domain/money-text/index.js +115 -0
  117. package/dist/domain/section-label/index.d.ts +21 -0
  118. package/dist/domain/section-label/index.d.ts.map +1 -0
  119. package/dist/domain/section-label/index.js +13 -0
  120. package/dist/domain/status-rail/index.d.ts +40 -0
  121. package/dist/domain/status-rail/index.d.ts.map +1 -0
  122. package/dist/domain/status-rail/index.js +72 -0
  123. package/dist/domain/threshold-gauge/index.d.ts +84 -0
  124. package/dist/domain/threshold-gauge/index.d.ts.map +1 -0
  125. package/dist/domain/threshold-gauge/index.js +157 -0
  126. package/dist/enterprise/alert-banner/index.d.ts +30 -0
  127. package/dist/enterprise/alert-banner/index.d.ts.map +1 -0
  128. package/dist/enterprise/alert-banner/index.js +24 -0
  129. package/dist/enterprise/app-shell/index.d.ts +61 -0
  130. package/dist/enterprise/app-shell/index.d.ts.map +1 -0
  131. package/dist/enterprise/app-shell/index.js +87 -0
  132. package/dist/enterprise/cursor-pager/index.d.ts +21 -0
  133. package/dist/enterprise/cursor-pager/index.d.ts.map +1 -0
  134. package/dist/enterprise/cursor-pager/index.js +26 -0
  135. package/dist/enterprise/data-table/index.d.ts +88 -0
  136. package/dist/enterprise/data-table/index.d.ts.map +1 -0
  137. package/dist/enterprise/data-table/index.js +245 -0
  138. package/dist/enterprise/date-range-picker/index.d.ts +37 -0
  139. package/dist/enterprise/date-range-picker/index.d.ts.map +1 -0
  140. package/dist/enterprise/date-range-picker/index.js +92 -0
  141. package/dist/enterprise/detail-panel/index.d.ts +54 -0
  142. package/dist/enterprise/detail-panel/index.d.ts.map +1 -0
  143. package/dist/enterprise/detail-panel/index.js +20 -0
  144. package/dist/enterprise/empty-state/index.d.ts +32 -0
  145. package/dist/enterprise/empty-state/index.d.ts.map +1 -0
  146. package/dist/enterprise/empty-state/index.js +13 -0
  147. package/dist/enterprise/index.d.ts +26 -0
  148. package/dist/enterprise/index.d.ts.map +1 -0
  149. package/dist/enterprise/index.js +39 -0
  150. package/dist/enterprise/number-input/index.d.ts +55 -0
  151. package/dist/enterprise/number-input/index.d.ts.map +1 -0
  152. package/dist/enterprise/number-input/index.js +252 -0
  153. package/dist/enterprise/search-input/index.d.ts +32 -0
  154. package/dist/enterprise/search-input/index.d.ts.map +1 -0
  155. package/dist/enterprise/search-input/index.js +121 -0
  156. package/dist/enterprise/stat-card/index.d.ts +43 -0
  157. package/dist/enterprise/stat-card/index.d.ts.map +1 -0
  158. package/dist/enterprise/stat-card/index.js +67 -0
  159. package/dist/enterprise/status-badge/index.d.ts +31 -0
  160. package/dist/enterprise/status-badge/index.d.ts.map +1 -0
  161. package/dist/enterprise/status-badge/index.js +120 -0
  162. package/dist/enterprise/use-is-mobile.d.ts +20 -0
  163. package/dist/enterprise/use-is-mobile.d.ts.map +1 -0
  164. package/dist/enterprise/use-is-mobile.js +68 -0
  165. package/dist/enterprise/virtualized-table/index.d.ts +26 -0
  166. package/dist/enterprise/virtualized-table/index.d.ts.map +1 -0
  167. package/dist/enterprise/virtualized-table/index.js +114 -0
  168. package/dist/esm/charts/chart.d.ts +64 -0
  169. package/dist/esm/charts/chart.d.ts.map +1 -0
  170. package/dist/esm/charts/chart.js +191 -0
  171. package/dist/esm/charts/index.d.ts +3 -0
  172. package/dist/esm/charts/index.d.ts.map +1 -0
  173. package/dist/esm/charts/index.js +3 -0
  174. package/dist/esm/components/breadcrumb/get-breadcrumb-paths.d.ts +10 -0
  175. package/dist/esm/components/breadcrumb/get-breadcrumb-paths.d.ts.map +1 -0
  176. package/dist/esm/components/breadcrumb/get-breadcrumb-paths.js +12 -0
  177. package/dist/esm/components/breadcrumb/index.d.ts +11 -0
  178. package/dist/esm/components/breadcrumb/index.d.ts.map +1 -0
  179. package/dist/esm/components/breadcrumb/index.js +6 -0
  180. package/dist/esm/components/card/account-card/index.d.ts +32 -0
  181. package/dist/esm/components/card/account-card/index.d.ts.map +1 -0
  182. package/dist/esm/components/card/account-card/index.js +53 -0
  183. package/dist/esm/components/card/basic-card/index.d.ts +6 -0
  184. package/dist/esm/components/card/basic-card/index.d.ts.map +1 -0
  185. package/dist/esm/components/card/basic-card/index.js +14 -0
  186. package/dist/esm/components/card/dashboard-card/index.d.ts +5 -0
  187. package/dist/esm/components/card/dashboard-card/index.d.ts.map +1 -0
  188. package/dist/esm/components/card/dashboard-card/index.js +14 -0
  189. package/dist/esm/components/card/entity-card/index.d.ts +22 -0
  190. package/dist/esm/components/card/entity-card/index.d.ts.map +1 -0
  191. package/dist/esm/components/card/entity-card/index.js +48 -0
  192. package/dist/esm/components/card/index.d.ts +5 -0
  193. package/dist/esm/components/card/index.d.ts.map +1 -0
  194. package/dist/esm/components/card/index.js +4 -0
  195. package/dist/esm/components/dialog/confirmation-dialog/index.d.ts +16 -0
  196. package/dist/esm/components/dialog/confirmation-dialog/index.d.ts.map +1 -0
  197. package/dist/esm/components/dialog/confirmation-dialog/index.js +25 -0
  198. package/dist/esm/components/dialog/confirmation-dialog/use-confirm-dialog.d.ts +31 -0
  199. package/dist/esm/components/dialog/confirmation-dialog/use-confirm-dialog.d.ts.map +1 -0
  200. package/dist/esm/components/dialog/confirmation-dialog/use-confirm-dialog.js +49 -0
  201. package/dist/esm/components/dialog/index.d.ts +4 -0
  202. package/dist/esm/components/dialog/index.d.ts.map +1 -0
  203. package/dist/esm/components/dialog/index.js +3 -0
  204. package/dist/esm/components/dialog/large-dialog/index.d.ts +11 -0
  205. package/dist/esm/components/dialog/large-dialog/index.d.ts.map +1 -0
  206. package/dist/esm/components/dialog/large-dialog/index.js +16 -0
  207. package/dist/esm/components/entity-box/index.d.ts +17 -0
  208. package/dist/esm/components/entity-box/index.d.ts.map +1 -0
  209. package/dist/esm/components/entity-box/index.js +31 -0
  210. package/dist/esm/components/entity-data-table/index.d.ts +17 -0
  211. package/dist/esm/components/entity-data-table/index.d.ts.map +1 -0
  212. package/dist/esm/components/entity-data-table/index.js +17 -0
  213. package/dist/esm/components/form/combo-box-field/index.d.ts +14 -0
  214. package/dist/esm/components/form/combo-box-field/index.d.ts.map +1 -0
  215. package/dist/esm/components/form/combo-box-field/index.js +28 -0
  216. package/dist/esm/components/form/country-field/index.d.ts +5 -0
  217. package/dist/esm/components/form/country-field/index.d.ts.map +1 -0
  218. package/dist/esm/components/form/country-field/index.js +7 -0
  219. package/dist/esm/components/form/date-picker-field/index.d.ts +21 -0
  220. package/dist/esm/components/form/date-picker-field/index.d.ts.map +1 -0
  221. package/dist/esm/components/form/date-picker-field/index.js +38 -0
  222. package/dist/esm/components/form/date-range-field/index.d.ts +21 -0
  223. package/dist/esm/components/form/date-range-field/index.d.ts.map +1 -0
  224. package/dist/esm/components/form/date-range-field/index.js +17 -0
  225. package/dist/esm/components/form/date-time-picker-field/index.d.ts +23 -0
  226. package/dist/esm/components/form/date-time-picker-field/index.d.ts.map +1 -0
  227. package/dist/esm/components/form/date-time-picker-field/index.js +73 -0
  228. package/dist/esm/components/form/file-upload-field/index.d.ts +52 -0
  229. package/dist/esm/components/form/file-upload-field/index.d.ts.map +1 -0
  230. package/dist/esm/components/form/file-upload-field/index.js +60 -0
  231. package/dist/esm/components/form/index.d.ts +16 -0
  232. package/dist/esm/components/form/index.d.ts.map +1 -0
  233. package/dist/esm/components/form/index.js +15 -0
  234. package/dist/esm/components/form/input-field/index.d.ts +26 -0
  235. package/dist/esm/components/form/input-field/index.d.ts.map +1 -0
  236. package/dist/esm/components/form/input-field/index.js +10 -0
  237. package/dist/esm/components/form/otp-field/index.d.ts +18 -0
  238. package/dist/esm/components/form/otp-field/index.d.ts.map +1 -0
  239. package/dist/esm/components/form/otp-field/index.js +15 -0
  240. package/dist/esm/components/form/pagination-limit-field/index.d.ts +9 -0
  241. package/dist/esm/components/form/pagination-limit-field/index.d.ts.map +1 -0
  242. package/dist/esm/components/form/pagination-limit-field/index.js +6 -0
  243. package/dist/esm/components/form/password-field/index.d.ts +14 -0
  244. package/dist/esm/components/form/password-field/index.d.ts.map +1 -0
  245. package/dist/esm/components/form/password-field/index.js +10 -0
  246. package/dist/esm/components/form/radio-group-field/index.d.ts +32 -0
  247. package/dist/esm/components/form/radio-group-field/index.d.ts.map +1 -0
  248. package/dist/esm/components/form/radio-group-field/index.js +32 -0
  249. package/dist/esm/components/form/renderable-label.d.ts +35 -0
  250. package/dist/esm/components/form/renderable-label.d.ts.map +1 -0
  251. package/dist/esm/components/form/renderable-label.js +54 -0
  252. package/dist/esm/components/form/select-field/index.d.ts +20 -0
  253. package/dist/esm/components/form/select-field/index.d.ts.map +1 -0
  254. package/dist/esm/components/form/select-field/index.js +16 -0
  255. package/dist/esm/components/form/state-field/index.d.ts +10 -0
  256. package/dist/esm/components/form/state-field/index.d.ts.map +1 -0
  257. package/dist/esm/components/form/state-field/index.js +35 -0
  258. package/dist/esm/components/form/switch-field/index.d.ts +15 -0
  259. package/dist/esm/components/form/switch-field/index.d.ts.map +1 -0
  260. package/dist/esm/components/form/switch-field/index.js +7 -0
  261. package/dist/esm/components/form/textarea-field/index.d.ts +31 -0
  262. package/dist/esm/components/form/textarea-field/index.d.ts.map +1 -0
  263. package/dist/esm/components/form/textarea-field/index.js +19 -0
  264. package/dist/esm/components/page/index.d.ts +4 -0
  265. package/dist/esm/components/page/index.d.ts.map +1 -0
  266. package/dist/esm/components/page/index.js +11 -0
  267. package/dist/esm/components/page-header/index.d.ts +33 -0
  268. package/dist/esm/components/page-header/index.d.ts.map +1 -0
  269. package/dist/esm/components/page-header/index.js +40 -0
  270. package/dist/esm/components/pagination/index.d.ts +8 -0
  271. package/dist/esm/components/pagination/index.d.ts.map +1 -0
  272. package/dist/esm/components/pagination/index.js +6 -0
  273. package/dist/esm/components/table/id-table-cell.d.ts +7 -0
  274. package/dist/esm/components/table/id-table-cell.d.ts.map +1 -0
  275. package/dist/esm/components/table/id-table-cell.js +12 -0
  276. package/dist/esm/components/table/index.d.ts +3 -0
  277. package/dist/esm/components/table/index.d.ts.map +1 -0
  278. package/dist/esm/components/table/index.js +2 -0
  279. package/dist/esm/components/table/locked-table-actions.d.ts +7 -0
  280. package/dist/esm/components/table/locked-table-actions.d.ts.map +1 -0
  281. package/dist/esm/components/table/locked-table-actions.js +7 -0
  282. package/dist/esm/components/table/name-table-cell.d.ts +6 -0
  283. package/dist/esm/components/table/name-table-cell.d.ts.map +1 -0
  284. package/dist/esm/components/table/name-table-cell.js +6 -0
  285. package/dist/esm/components/ui/accordion/index.d.ts +14 -0
  286. package/dist/esm/components/ui/accordion/index.d.ts.map +1 -0
  287. package/dist/esm/components/ui/accordion/index.js +24 -0
  288. package/dist/esm/components/ui/alert/index.d.ts +15 -0
  289. package/dist/esm/components/ui/alert/index.d.ts.map +1 -0
  290. package/dist/esm/components/ui/alert/index.js +38 -0
  291. package/dist/esm/components/ui/alert-dialog/index.d.ts +15 -0
  292. package/dist/esm/components/ui/alert-dialog/index.d.ts.map +1 -0
  293. package/dist/esm/components/ui/alert-dialog/index.js +39 -0
  294. package/dist/esm/components/ui/autocomplete/index.d.ts +54 -0
  295. package/dist/esm/components/ui/autocomplete/index.d.ts.map +1 -0
  296. package/dist/esm/components/ui/autocomplete/index.js +312 -0
  297. package/dist/esm/components/ui/autosize-textarea/index.d.ts +15 -0
  298. package/dist/esm/components/ui/autosize-textarea/index.d.ts.map +1 -0
  299. package/dist/esm/components/ui/autosize-textarea/index.js +51 -0
  300. package/dist/esm/components/ui/avatar/index.d.ts +7 -0
  301. package/dist/esm/components/ui/avatar/index.d.ts.map +1 -0
  302. package/dist/esm/components/ui/avatar/index.js +14 -0
  303. package/dist/esm/components/ui/badge/index.d.ts +11 -0
  304. package/dist/esm/components/ui/badge/index.d.ts.map +1 -0
  305. package/dist/esm/components/ui/badge/index.js +29 -0
  306. package/dist/esm/components/ui/breadcrumb/index.d.ts +12 -0
  307. package/dist/esm/components/ui/breadcrumb/index.d.ts.map +1 -0
  308. package/dist/esm/components/ui/breadcrumb/index.js +27 -0
  309. package/dist/esm/components/ui/button/index.d.ts +22 -0
  310. package/dist/esm/components/ui/button/index.d.ts.map +1 -0
  311. package/dist/esm/components/ui/button/index.js +59 -0
  312. package/dist/esm/components/ui/calendar/index.d.ts +9 -0
  313. package/dist/esm/components/ui/calendar/index.d.ts.map +1 -0
  314. package/dist/esm/components/ui/calendar/index.js +79 -0
  315. package/dist/esm/components/ui/card/index.d.ts +10 -0
  316. package/dist/esm/components/ui/card/index.d.ts.map +1 -0
  317. package/dist/esm/components/ui/card/index.js +24 -0
  318. package/dist/esm/components/ui/checkbox/index.d.ts +5 -0
  319. package/dist/esm/components/ui/checkbox/index.d.ts.map +1 -0
  320. package/dist/esm/components/ui/checkbox/index.js +9 -0
  321. package/dist/esm/components/ui/collapsible/index.d.ts +6 -0
  322. package/dist/esm/components/ui/collapsible/index.d.ts.map +1 -0
  323. package/dist/esm/components/ui/collapsible/index.js +13 -0
  324. package/dist/esm/components/ui/command/index.d.ts +14 -0
  325. package/dist/esm/components/ui/command/index.d.ts.map +1 -0
  326. package/dist/esm/components/ui/command/index.js +51 -0
  327. package/dist/esm/components/ui/copy-field/index.d.ts +56 -0
  328. package/dist/esm/components/ui/copy-field/index.d.ts.map +1 -0
  329. package/dist/esm/components/ui/copy-field/index.js +119 -0
  330. package/dist/esm/components/ui/dialog/index.d.ts +16 -0
  331. package/dist/esm/components/ui/dialog/index.d.ts.map +1 -0
  332. package/dist/esm/components/ui/dialog/index.js +36 -0
  333. package/dist/esm/components/ui/dropdown-menu/index.d.ts +27 -0
  334. package/dist/esm/components/ui/dropdown-menu/index.d.ts.map +1 -0
  335. package/dist/esm/components/ui/dropdown-menu/index.js +57 -0
  336. package/dist/esm/components/ui/field/index.d.ts +25 -0
  337. package/dist/esm/components/ui/field/index.d.ts.map +1 -0
  338. package/dist/esm/components/ui/field/index.js +68 -0
  339. package/dist/esm/components/ui/file-upload/index.d.ts +94 -0
  340. package/dist/esm/components/ui/file-upload/index.d.ts.map +1 -0
  341. package/dist/esm/components/ui/file-upload/index.js +200 -0
  342. package/dist/esm/components/ui/form.d.ts +39 -0
  343. package/dist/esm/components/ui/form.d.ts.map +1 -0
  344. package/dist/esm/components/ui/form.js +67 -0
  345. package/dist/esm/components/ui/hover-card/index.d.ts +7 -0
  346. package/dist/esm/components/ui/hover-card/index.d.ts.map +1 -0
  347. package/dist/esm/components/ui/hover-card/index.js +14 -0
  348. package/dist/esm/components/ui/icon-button/index.d.ts +13 -0
  349. package/dist/esm/components/ui/icon-button/index.d.ts.map +1 -0
  350. package/dist/esm/components/ui/icon-button/index.js +31 -0
  351. package/dist/esm/components/ui/input/adornment.d.ts +9 -0
  352. package/dist/esm/components/ui/input/adornment.d.ts.map +1 -0
  353. package/dist/esm/components/ui/input/adornment.js +17 -0
  354. package/dist/esm/components/ui/input/index.d.ts +18 -0
  355. package/dist/esm/components/ui/input/index.d.ts.map +1 -0
  356. package/dist/esm/components/ui/input/index.js +60 -0
  357. package/dist/esm/components/ui/label/index.d.ts +7 -0
  358. package/dist/esm/components/ui/label/index.d.ts.map +1 -0
  359. package/dist/esm/components/ui/label/index.js +10 -0
  360. package/dist/esm/components/ui/loading-button/index.d.ts +8 -0
  361. package/dist/esm/components/ui/loading-button/index.d.ts.map +1 -0
  362. package/dist/esm/components/ui/loading-button/index.js +7 -0
  363. package/dist/esm/components/ui/multiple-select/index.d.ts +91 -0
  364. package/dist/esm/components/ui/multiple-select/index.d.ts.map +1 -0
  365. package/dist/esm/components/ui/multiple-select/index.js +196 -0
  366. package/dist/esm/components/ui/otp-input/index.d.ts +13 -0
  367. package/dist/esm/components/ui/otp-input/index.d.ts.map +1 -0
  368. package/dist/esm/components/ui/otp-input/index.js +21 -0
  369. package/dist/esm/components/ui/paper/index.d.ts +4 -0
  370. package/dist/esm/components/ui/paper/index.d.ts.map +1 -0
  371. package/dist/esm/components/ui/paper/index.js +5 -0
  372. package/dist/esm/components/ui/paper-collapsible/index.d.ts +9 -0
  373. package/dist/esm/components/ui/paper-collapsible/index.d.ts.map +1 -0
  374. package/dist/esm/components/ui/paper-collapsible/index.js +19 -0
  375. package/dist/esm/components/ui/popover/index.d.ts +8 -0
  376. package/dist/esm/components/ui/popover/index.d.ts.map +1 -0
  377. package/dist/esm/components/ui/popover/index.js +17 -0
  378. package/dist/esm/components/ui/progress/index.d.ts +8 -0
  379. package/dist/esm/components/ui/progress/index.d.ts.map +1 -0
  380. package/dist/esm/components/ui/progress/index.js +8 -0
  381. package/dist/esm/components/ui/qr-code/index.d.ts +26 -0
  382. package/dist/esm/components/ui/qr-code/index.d.ts.map +1 -0
  383. package/dist/esm/components/ui/qr-code/index.js +24 -0
  384. package/dist/esm/components/ui/radio-group/index.d.ts +6 -0
  385. package/dist/esm/components/ui/radio-group/index.d.ts.map +1 -0
  386. package/dist/esm/components/ui/radio-group/index.js +12 -0
  387. package/dist/esm/components/ui/scroll-area/index.d.ts +6 -0
  388. package/dist/esm/components/ui/scroll-area/index.d.ts.map +1 -0
  389. package/dist/esm/components/ui/scroll-area/index.js +13 -0
  390. package/dist/esm/components/ui/select/index.d.ts +18 -0
  391. package/dist/esm/components/ui/select/index.d.ts.map +1 -0
  392. package/dist/esm/components/ui/select/index.js +47 -0
  393. package/dist/esm/components/ui/separator/index.d.ts +5 -0
  394. package/dist/esm/components/ui/separator/index.d.ts.map +1 -0
  395. package/dist/esm/components/ui/separator/index.js +8 -0
  396. package/dist/esm/components/ui/sheet/index.d.ts +19 -0
  397. package/dist/esm/components/ui/sheet/index.d.ts.map +1 -0
  398. package/dist/esm/components/ui/sheet/index.js +59 -0
  399. package/dist/esm/components/ui/sidebar/index.d.ts +11 -0
  400. package/dist/esm/components/ui/sidebar/index.d.ts.map +1 -0
  401. package/dist/esm/components/ui/sidebar/index.js +10 -0
  402. package/dist/esm/components/ui/sidebar/next-router.cjs +119 -0
  403. package/dist/esm/components/ui/sidebar/next-router.d.cts +7 -0
  404. package/dist/esm/components/ui/sidebar/sidebar-back-button.d.ts +3 -0
  405. package/dist/esm/components/ui/sidebar/sidebar-back-button.d.ts.map +1 -0
  406. package/dist/esm/components/ui/sidebar/sidebar-back-button.js +5 -0
  407. package/dist/esm/components/ui/sidebar/sidebar-components.d.ts +23 -0
  408. package/dist/esm/components/ui/sidebar/sidebar-components.d.ts.map +1 -0
  409. package/dist/esm/components/ui/sidebar/sidebar-components.js +15 -0
  410. package/dist/esm/components/ui/sidebar/sidebar-expand-button.d.ts +7 -0
  411. package/dist/esm/components/ui/sidebar/sidebar-expand-button.d.ts.map +1 -0
  412. package/dist/esm/components/ui/sidebar/sidebar-expand-button.js +12 -0
  413. package/dist/esm/components/ui/sidebar/sidebar-item-button.d.ts +12 -0
  414. package/dist/esm/components/ui/sidebar/sidebar-item-button.d.ts.map +1 -0
  415. package/dist/esm/components/ui/sidebar/sidebar-item-button.js +18 -0
  416. package/dist/esm/components/ui/sidebar/sidebar-item-collapsible.d.ts +12 -0
  417. package/dist/esm/components/ui/sidebar/sidebar-item-collapsible.d.ts.map +1 -0
  418. package/dist/esm/components/ui/sidebar/sidebar-item-collapsible.js +44 -0
  419. package/dist/esm/components/ui/sidebar/sidebar-item-icon-button.d.ts +12 -0
  420. package/dist/esm/components/ui/sidebar/sidebar-item-icon-button.d.ts.map +1 -0
  421. package/dist/esm/components/ui/sidebar/sidebar-item-icon-button.js +14 -0
  422. package/dist/esm/components/ui/sidebar/sidebar-item.d.ts +13 -0
  423. package/dist/esm/components/ui/sidebar/sidebar-item.d.ts.map +1 -0
  424. package/dist/esm/components/ui/sidebar/sidebar-item.js +16 -0
  425. package/dist/esm/components/ui/sidebar/sidebar-provider.d.ts +12 -0
  426. package/dist/esm/components/ui/sidebar/sidebar-provider.d.ts.map +1 -0
  427. package/dist/esm/components/ui/sidebar/sidebar-provider.js +51 -0
  428. package/dist/esm/components/ui/sidebar/sidebar-root.d.ts +3 -0
  429. package/dist/esm/components/ui/sidebar/sidebar-root.d.ts.map +1 -0
  430. package/dist/esm/components/ui/sidebar/sidebar-root.js +20 -0
  431. package/dist/esm/components/ui/sidebar/sidebar-router.d.ts +82 -0
  432. package/dist/esm/components/ui/sidebar/sidebar-router.d.ts.map +1 -0
  433. package/dist/esm/components/ui/sidebar/sidebar-router.js +89 -0
  434. package/dist/esm/components/ui/skeleton/index.d.ts +3 -0
  435. package/dist/esm/components/ui/skeleton/index.d.ts.map +1 -0
  436. package/dist/esm/components/ui/skeleton/index.js +6 -0
  437. package/dist/esm/components/ui/stepper/index.d.ts +18 -0
  438. package/dist/esm/components/ui/stepper/index.d.ts.map +1 -0
  439. package/dist/esm/components/ui/stepper/index.js +20 -0
  440. package/dist/esm/components/ui/switch/index.d.ts +5 -0
  441. package/dist/esm/components/ui/switch/index.d.ts.map +1 -0
  442. package/dist/esm/components/ui/switch/index.js +8 -0
  443. package/dist/esm/components/ui/table/index.d.ts +21 -0
  444. package/dist/esm/components/ui/table/index.d.ts.map +1 -0
  445. package/dist/esm/components/ui/table/index.js +44 -0
  446. package/dist/esm/components/ui/tabs/index.d.ts +8 -0
  447. package/dist/esm/components/ui/tabs/index.d.ts.map +1 -0
  448. package/dist/esm/components/ui/tabs/index.js +17 -0
  449. package/dist/esm/components/ui/textarea/index.d.ts +4 -0
  450. package/dist/esm/components/ui/textarea/index.d.ts.map +1 -0
  451. package/dist/esm/components/ui/textarea/index.js +6 -0
  452. package/dist/esm/components/ui/time-picker/index.d.ts +18 -0
  453. package/dist/esm/components/ui/time-picker/index.d.ts.map +1 -0
  454. package/dist/esm/components/ui/time-picker/index.js +49 -0
  455. package/dist/esm/components/ui/toast/index.d.ts +18 -0
  456. package/dist/esm/components/ui/toast/index.d.ts.map +1 -0
  457. package/dist/esm/components/ui/toast/index.js +2 -0
  458. package/dist/esm/components/ui/toast/toaster.d.ts +6 -0
  459. package/dist/esm/components/ui/toast/toaster.d.ts.map +1 -0
  460. package/dist/esm/components/ui/toast/toaster.js +8 -0
  461. package/dist/esm/components/ui/toggle-group/index.d.ts +18 -0
  462. package/dist/esm/components/ui/toggle-group/index.d.ts.map +1 -0
  463. package/dist/esm/components/ui/toggle-group/index.js +51 -0
  464. package/dist/esm/components/ui/tooltip/index.d.ts +11 -0
  465. package/dist/esm/components/ui/tooltip/index.d.ts.map +1 -0
  466. package/dist/esm/components/ui/tooltip/index.js +28 -0
  467. package/dist/esm/domain/blotter/index.d.ts +40 -0
  468. package/dist/esm/domain/blotter/index.d.ts.map +1 -0
  469. package/dist/esm/domain/blotter/index.js +12 -0
  470. package/dist/esm/domain/delinquency-aging/aging-buckets.d.ts +57 -0
  471. package/dist/esm/domain/delinquency-aging/aging-buckets.d.ts.map +1 -0
  472. package/dist/esm/domain/delinquency-aging/aging-buckets.js +105 -0
  473. package/dist/esm/domain/delinquency-aging/index.d.ts +71 -0
  474. package/dist/esm/domain/delinquency-aging/index.d.ts.map +1 -0
  475. package/dist/esm/domain/delinquency-aging/index.js +209 -0
  476. package/dist/esm/domain/figure/index.d.ts +30 -0
  477. package/dist/esm/domain/figure/index.d.ts.map +1 -0
  478. package/dist/esm/domain/figure/index.js +14 -0
  479. package/dist/esm/domain/format.d.ts +79 -0
  480. package/dist/esm/domain/format.d.ts.map +1 -0
  481. package/dist/esm/domain/format.js +128 -0
  482. package/dist/esm/domain/index.d.ts +23 -0
  483. package/dist/esm/domain/index.d.ts.map +1 -0
  484. package/dist/esm/domain/index.js +19 -0
  485. package/dist/esm/domain/key-id/index.d.ts +31 -0
  486. package/dist/esm/domain/key-id/index.d.ts.map +1 -0
  487. package/dist/esm/domain/key-id/index.js +169 -0
  488. package/dist/esm/domain/ledger-sheet/index.d.ts +45 -0
  489. package/dist/esm/domain/ledger-sheet/index.d.ts.map +1 -0
  490. package/dist/esm/domain/ledger-sheet/index.js +24 -0
  491. package/dist/esm/domain/money-diff.d.ts +28 -0
  492. package/dist/esm/domain/money-diff.d.ts.map +1 -0
  493. package/dist/esm/domain/money-diff.js +45 -0
  494. package/dist/esm/domain/money-math.d.ts +32 -0
  495. package/dist/esm/domain/money-math.d.ts.map +1 -0
  496. package/dist/esm/domain/money-math.js +98 -0
  497. package/dist/esm/domain/money-text/index.d.ts +37 -0
  498. package/dist/esm/domain/money-text/index.d.ts.map +1 -0
  499. package/dist/esm/domain/money-text/index.js +110 -0
  500. package/dist/esm/domain/section-label/index.d.ts +21 -0
  501. package/dist/esm/domain/section-label/index.d.ts.map +1 -0
  502. package/dist/esm/domain/section-label/index.js +10 -0
  503. package/dist/esm/domain/status-rail/index.d.ts +40 -0
  504. package/dist/esm/domain/status-rail/index.d.ts.map +1 -0
  505. package/dist/esm/domain/status-rail/index.js +67 -0
  506. package/dist/esm/domain/threshold-gauge/index.d.ts +84 -0
  507. package/dist/esm/domain/threshold-gauge/index.d.ts.map +1 -0
  508. package/dist/esm/domain/threshold-gauge/index.js +153 -0
  509. package/dist/esm/enterprise/alert-banner/index.d.ts +30 -0
  510. package/dist/esm/enterprise/alert-banner/index.d.ts.map +1 -0
  511. package/dist/esm/enterprise/alert-banner/index.js +21 -0
  512. package/dist/esm/enterprise/app-shell/index.d.ts +61 -0
  513. package/dist/esm/enterprise/app-shell/index.d.ts.map +1 -0
  514. package/dist/esm/enterprise/app-shell/index.js +51 -0
  515. package/dist/esm/enterprise/cursor-pager/index.d.ts +21 -0
  516. package/dist/esm/enterprise/cursor-pager/index.d.ts.map +1 -0
  517. package/dist/esm/enterprise/cursor-pager/index.js +23 -0
  518. package/dist/esm/enterprise/data-table/index.d.ts +88 -0
  519. package/dist/esm/enterprise/data-table/index.d.ts.map +1 -0
  520. package/dist/esm/enterprise/data-table/index.js +242 -0
  521. package/dist/esm/enterprise/date-range-picker/index.d.ts +37 -0
  522. package/dist/esm/enterprise/date-range-picker/index.d.ts.map +1 -0
  523. package/dist/esm/enterprise/date-range-picker/index.js +89 -0
  524. package/dist/esm/enterprise/detail-panel/index.d.ts +54 -0
  525. package/dist/esm/enterprise/detail-panel/index.d.ts.map +1 -0
  526. package/dist/esm/enterprise/detail-panel/index.js +17 -0
  527. package/dist/esm/enterprise/empty-state/index.d.ts +32 -0
  528. package/dist/esm/enterprise/empty-state/index.d.ts.map +1 -0
  529. package/dist/esm/enterprise/empty-state/index.js +10 -0
  530. package/dist/esm/enterprise/index.d.ts +26 -0
  531. package/dist/esm/enterprise/index.d.ts.map +1 -0
  532. package/dist/esm/enterprise/index.js +22 -0
  533. package/dist/esm/enterprise/number-input/index.d.ts +55 -0
  534. package/dist/esm/enterprise/number-input/index.d.ts.map +1 -0
  535. package/dist/esm/enterprise/number-input/index.js +214 -0
  536. package/dist/esm/enterprise/search-input/index.d.ts +32 -0
  537. package/dist/esm/enterprise/search-input/index.d.ts.map +1 -0
  538. package/dist/esm/enterprise/search-input/index.js +85 -0
  539. package/dist/esm/enterprise/stat-card/index.d.ts +43 -0
  540. package/dist/esm/enterprise/stat-card/index.d.ts.map +1 -0
  541. package/dist/esm/enterprise/stat-card/index.js +64 -0
  542. package/dist/esm/enterprise/status-badge/index.d.ts +31 -0
  543. package/dist/esm/enterprise/status-badge/index.d.ts.map +1 -0
  544. package/dist/esm/enterprise/status-badge/index.js +116 -0
  545. package/dist/esm/enterprise/use-is-mobile.d.ts +20 -0
  546. package/dist/esm/enterprise/use-is-mobile.d.ts.map +1 -0
  547. package/dist/esm/enterprise/use-is-mobile.js +31 -0
  548. package/dist/esm/enterprise/virtualized-table/index.d.ts +26 -0
  549. package/dist/esm/enterprise/virtualized-table/index.d.ts.map +1 -0
  550. package/dist/esm/enterprise/virtualized-table/index.js +111 -0
  551. package/dist/esm/hooks/use-click-away.d.ts +9 -0
  552. package/dist/esm/hooks/use-click-away.d.ts.map +1 -0
  553. package/dist/esm/hooks/use-click-away.js +22 -0
  554. package/dist/esm/hooks/use-pagination.d.ts +13 -0
  555. package/dist/esm/hooks/use-pagination.d.ts.map +1 -0
  556. package/dist/esm/hooks/use-pagination.js +38 -0
  557. package/dist/esm/hooks/use-stepper.d.ts +11 -0
  558. package/dist/esm/hooks/use-stepper.d.ts.map +1 -0
  559. package/dist/esm/hooks/use-stepper.js +22 -0
  560. package/dist/esm/hooks/use-time.d.ts +6 -0
  561. package/dist/esm/hooks/use-time.d.ts.map +1 -0
  562. package/dist/esm/hooks/use-time.js +13 -0
  563. package/dist/esm/hooks/use-toast.d.ts +31 -0
  564. package/dist/esm/hooks/use-toast.d.ts.map +1 -0
  565. package/dist/esm/hooks/use-toast.js +63 -0
  566. package/dist/esm/index.d.ts +69 -0
  567. package/dist/esm/index.d.ts.map +1 -0
  568. package/dist/esm/index.js +74 -0
  569. package/dist/esm/lib/storage/get-storage-object.d.ts +2 -0
  570. package/dist/esm/lib/storage/get-storage-object.d.ts.map +1 -0
  571. package/dist/esm/lib/storage/get-storage-object.js +17 -0
  572. package/dist/esm/lib/storage/get-storage.d.ts +2 -0
  573. package/dist/esm/lib/storage/get-storage.d.ts.map +1 -0
  574. package/dist/esm/lib/storage/get-storage.js +14 -0
  575. package/dist/esm/lib/storage/index.d.ts +3 -0
  576. package/dist/esm/lib/storage/index.d.ts.map +1 -0
  577. package/dist/esm/lib/storage/index.js +2 -0
  578. package/dist/esm/lib/typography.d.ts +17 -0
  579. package/dist/esm/lib/typography.d.ts.map +1 -0
  580. package/dist/esm/lib/typography.js +16 -0
  581. package/dist/esm/lib/utils.d.ts +3 -0
  582. package/dist/esm/lib/utils.d.ts.map +1 -0
  583. package/dist/esm/lib/utils.js +5 -0
  584. package/dist/esm/package.json +1 -0
  585. package/dist/esm/public/countries.json +21210 -0
  586. package/dist/esm/theme/get-theme-script.d.ts +3 -0
  587. package/dist/esm/theme/get-theme-script.d.ts.map +1 -0
  588. package/dist/esm/theme/get-theme-script.js +41 -0
  589. package/dist/esm/theme/index.d.ts +6 -0
  590. package/dist/esm/theme/index.d.ts.map +1 -0
  591. package/dist/esm/theme/index.js +4 -0
  592. package/dist/esm/theme/mode-toggle.d.ts +25 -0
  593. package/dist/esm/theme/mode-toggle.d.ts.map +1 -0
  594. package/dist/esm/theme/mode-toggle.js +45 -0
  595. package/dist/esm/theme/theme-provider.d.ts +38 -0
  596. package/dist/esm/theme/theme-provider.d.ts.map +1 -0
  597. package/dist/esm/theme/theme-provider.js +112 -0
  598. package/dist/esm/toast/helpers.d.ts +16 -0
  599. package/dist/esm/toast/helpers.d.ts.map +1 -0
  600. package/dist/esm/toast/helpers.js +29 -0
  601. package/dist/esm/toast/index.d.ts +3 -0
  602. package/dist/esm/toast/index.d.ts.map +1 -0
  603. package/dist/esm/toast/index.js +4 -0
  604. package/dist/esm/types/metadata-type.d.ts +2 -0
  605. package/dist/esm/types/metadata-type.d.ts.map +1 -0
  606. package/dist/esm/types/metadata-type.js +1 -0
  607. package/dist/esm/utils/countries.cjs +17 -0
  608. package/dist/esm/utils/countries.d.cts +14 -0
  609. package/dist/esm/utils/country-utils.d.ts +17 -0
  610. package/dist/esm/utils/country-utils.d.ts.map +1 -0
  611. package/dist/esm/utils/country-utils.js +18 -0
  612. package/dist/esm/utils/currency-codes.d.ts +5 -0
  613. package/dist/esm/utils/currency-codes.d.ts.map +1 -0
  614. package/dist/esm/utils/currency-codes.js +181 -0
  615. package/dist/globals.css +74 -0
  616. package/dist/hooks/use-toast.d.ts +1 -1
  617. package/dist/hooks/use-toast.d.ts.map +1 -1
  618. package/dist/hooks/use-toast.js +4 -0
  619. package/dist/index.d.ts +16 -0
  620. package/dist/index.d.ts.map +1 -1
  621. package/dist/index.js +21 -1
  622. package/dist/lib/storage/get-storage-object.d.ts.map +1 -1
  623. package/dist/lib/storage/get-storage-object.js +6 -2
  624. package/dist/lib/typography.d.ts +17 -0
  625. package/dist/lib/typography.d.ts.map +1 -0
  626. package/dist/lib/typography.js +19 -0
  627. package/dist/public/countries.json +21200 -21200
  628. package/dist/theme/get-theme-script.d.ts +3 -0
  629. package/dist/theme/get-theme-script.d.ts.map +1 -0
  630. package/dist/theme/get-theme-script.js +44 -0
  631. package/dist/theme/index.d.ts +6 -0
  632. package/dist/theme/index.d.ts.map +1 -0
  633. package/dist/theme/index.js +11 -0
  634. package/dist/theme/mode-toggle.d.ts +25 -0
  635. package/dist/theme/mode-toggle.d.ts.map +1 -0
  636. package/dist/theme/mode-toggle.js +48 -0
  637. package/dist/theme/theme-provider.d.ts +38 -0
  638. package/dist/theme/theme-provider.d.ts.map +1 -0
  639. package/dist/theme/theme-provider.js +149 -0
  640. package/dist/toast/helpers.d.ts +16 -0
  641. package/dist/toast/helpers.d.ts.map +1 -0
  642. package/dist/toast/helpers.js +34 -0
  643. package/dist/toast/index.d.ts +3 -0
  644. package/dist/toast/index.d.ts.map +1 -0
  645. package/dist/toast/index.js +10 -0
  646. package/dist/utils/countries.cjs +17 -0
  647. package/dist/utils/countries.d.cts +14 -0
  648. package/dist/utils/country-utils.js +2 -2
  649. package/package.json +55 -18
  650. package/dist/components/ui/label/label.stories.d.ts +0 -5
  651. package/dist/components/ui/label/label.stories.d.ts.map +0 -1
  652. package/dist/components/ui/label/label.stories.js +0 -24
  653. package/dist/components/ui/sidebar/sidebar-provider.test.d.ts +0 -2
  654. package/dist/components/ui/sidebar/sidebar-provider.test.d.ts.map +0 -1
  655. package/dist/components/ui/sidebar/sidebar-provider.test.js +0 -170
  656. package/dist/hooks/use-click-away.test.d.ts +0 -2
  657. package/dist/hooks/use-click-away.test.d.ts.map +0 -1
  658. package/dist/hooks/use-click-away.test.js +0 -39
  659. package/dist/hooks/use-stepper.test.d.ts +0 -2
  660. package/dist/hooks/use-stepper.test.d.ts.map +0 -1
  661. package/dist/hooks/use-stepper.test.js +0 -45
@@ -0,0 +1,21 @@
1
+ export type CursorPagerProps = {
2
+ /** From the page envelope: more pages exist after this one. */
3
+ hasMore?: boolean;
4
+ /** From the page envelope: cursor for the next page. */
5
+ nextCursor?: string | null;
6
+ /** From the page envelope: cursor for the previous page. */
7
+ prevCursor?: string | null;
8
+ /** Called with the cursor to load (undefined => first page). */
9
+ onCursorChange: (cursor: string | undefined) => void;
10
+ /** Disable both controls (e.g. while fetching). */
11
+ disabled?: boolean;
12
+ /** Optional summary, e.g. "50 per page" or a loaded-count string. */
13
+ summary?: string;
14
+ /** Label for the previous-page control. Defaults to "Previous". */
15
+ previousLabel?: string;
16
+ /** Label for the next-page control. Defaults to "Next". */
17
+ nextLabel?: string;
18
+ className?: string;
19
+ };
20
+ export declare function CursorPager({ hasMore, nextCursor, prevCursor, onCursorChange, disabled, summary, previousLabel, nextLabel, className }: CursorPagerProps): import("react").JSX.Element;
21
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/enterprise/cursor-pager/index.tsx"],"names":[],"mappings":"AAoBA,MAAM,MAAM,gBAAgB,GAAG;IAC7B,+DAA+D;IAC/D,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,wDAAwD;IACxD,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,4DAA4D;IAC5D,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,gEAAgE;IAChE,cAAc,EAAE,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,CAAA;IACpD,mDAAmD;IACnD,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,qEAAqE;IACrE,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,mEAAmE;IACnE,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,2DAA2D;IAC3D,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,wBAAgB,WAAW,CAAC,EAC1B,OAAO,EACP,UAAU,EACV,UAAU,EACV,cAAc,EACd,QAAgB,EAChB,OAAO,EACP,aAA0B,EAC1B,SAAkB,EAClB,SAAS,EACV,EAAE,gBAAgB,+BAmClB"}
@@ -0,0 +1,26 @@
1
+ 'use client';
2
+ "use strict";
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.CursorPager = CursorPager;
5
+ const jsx_runtime_1 = require("react/jsx-runtime");
6
+ /**
7
+ * CursorPager drives the cursor-pagination envelope
8
+ * { items, hasMore, nextCursor, prevCursor, limit }
9
+ * shared by the console's cursor-paged list endpoints (do not use it on
10
+ * offset-based endpoints).
11
+ *
12
+ * It is controlled: the parent owns the active cursor (the value it passes to
13
+ * the list hook) and reacts to `onCursorChange`. Pass the page envelope's
14
+ * `hasMore`, `nextCursor`, `prevCursor`. "Previous" is enabled when the page
15
+ * reports a `prevCursor`; "Next" when `hasMore` and a `nextCursor` exist.
16
+ *
17
+ * `onCursorChange(undefined)` requests the first page (no cursor).
18
+ */
19
+ const lucide_react_1 = require("lucide-react");
20
+ const button_1 = require("../../components/ui/button");
21
+ const utils_1 = require("../../lib/utils");
22
+ function CursorPager({ hasMore, nextCursor, prevCursor, onCursorChange, disabled = false, summary, previousLabel = 'Previous', nextLabel = 'Next', className }) {
23
+ const canPrev = !disabled && !!prevCursor;
24
+ const canNext = !disabled && !!hasMore && !!nextCursor;
25
+ return ((0, jsx_runtime_1.jsxs)("div", { className: (0, utils_1.cn)('flex items-center justify-between gap-4 pt-3', className), children: [(0, jsx_runtime_1.jsx)("p", { className: "text-muted-foreground text-xs", children: summary ?? '' }), (0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-2", children: [(0, jsx_runtime_1.jsx)(button_1.Button, { type: "button", variant: "outline", size: "small", icon: (0, jsx_runtime_1.jsx)(lucide_react_1.ChevronLeft, { "aria-hidden": true }), iconPlacement: "start", disabled: !canPrev, onClick: () => onCursorChange(prevCursor ?? undefined), children: previousLabel }), (0, jsx_runtime_1.jsx)(button_1.Button, { type: "button", variant: "outline", size: "small", icon: (0, jsx_runtime_1.jsx)(lucide_react_1.ChevronRight, { "aria-hidden": true }), iconPlacement: "end", disabled: !canNext, onClick: () => onCursorChange(nextCursor ?? undefined), children: nextLabel })] })] }));
26
+ }
@@ -0,0 +1,88 @@
1
+ import { type ColumnDef, type OnChangeFn, type RowData, type RowSelectionState } from '@tanstack/react-table';
2
+ import { type EmptyStateProps } from '../empty-state';
3
+ /**
4
+ * Per-column opt-in for ledger numeric alignment. Set `meta: { numeric: true }`
5
+ * on a money/number `ColumnDef` and DataTable right-aligns both the header and
6
+ * its body cells (mono tabular figures).
7
+ */
8
+ declare module '@tanstack/react-table' {
9
+ interface ColumnMeta<TData extends RowData, TValue> {
10
+ numeric?: boolean;
11
+ }
12
+ }
13
+ /**
14
+ * Row selection is CONTROLLED-ONLY — the contract sindarian-x shipped: the
15
+ * component holds no selection state and only mirrors `rowSelection` back into
16
+ * TanStack. Legacy typed all three props as independently optional, so opting
17
+ * into `enableRowSelection` without wiring the other two compiled fine and then
18
+ * rendered checkboxes that could never toggle (state pinned to a constant `{}`,
19
+ * no updater). Same runtime contract here, honest types: enabling selection
20
+ * requires the controlled pair, and leaving it off forbids them.
21
+ */
22
+ type RowSelectionProps<TData> = {
23
+ enableRowSelection?: false;
24
+ rowSelection?: never;
25
+ onRowSelectionChange?: never;
26
+ getRowSelectionLabel?: never;
27
+ } | {
28
+ enableRowSelection: true;
29
+ /** Controlled selection state (TanStack `RowSelectionState`, keyed by row id). */
30
+ rowSelection: RowSelectionState;
31
+ /** Controlled selection updater (TanStack `OnChangeFn`). */
32
+ onRowSelectionChange: OnChangeFn<RowSelectionState>;
33
+ /**
34
+ * Accessible name for a row's checkbox. Defaults to `Select row <id>`,
35
+ * which announces the raw row id (`Select row 0` with the default index
36
+ * ids) — pass a builder to name the record the way a user recognises it,
37
+ * e.g. ``(row) => `Select settlement ${row.reference}` ``.
38
+ */
39
+ getRowSelectionLabel?: (row: TData) => string;
40
+ };
41
+ type DataTableBaseProps<TData> = {
42
+ columns: ColumnDef<TData, unknown>[];
43
+ data: TData[];
44
+ /** Show skeleton rows instead of data/empty state. */
45
+ loading?: boolean;
46
+ /** Number of skeleton rows when loading. Defaults to 8. */
47
+ skeletonRows?: number;
48
+ /** Announced by the persistent status region while loading. Defaults to "Loading table rows". */
49
+ loadingLabel?: string;
50
+ /** Empty-state config when data resolves to zero rows. */
51
+ empty?: EmptyStateProps;
52
+ /** Stable row id accessor; defaults to TanStack's index-based id. */
53
+ getRowId?: (row: TData, index: number) => string;
54
+ /**
55
+ * Drop the rounded-card framing (radius, hairline border, bg-card) so the
56
+ * table runs full-bleed inside an already-framed surface. Margin tweaks like
57
+ * `-mx-5` stay the caller's job via `className`.
58
+ */
59
+ flush?: boolean;
60
+ /**
61
+ * Row density. `comfortable` (default) keeps the table's standard padding;
62
+ * `compact` tightens cell padding for the veteran "more rows per screen"
63
+ * view. Applied as a per-cell padding override on THIS table only.
64
+ */
65
+ density?: 'comfortable' | 'compact';
66
+ /**
67
+ * Opt into the roving-focus keyboard layer. Presence of this callback
68
+ * enables row tabIndex/focus/keydown handling; Enter calls it with the
69
+ * focused row's data. DataTable stays router-agnostic — consumers
70
+ * navigate inside the callback. Default off: rows render exactly as
71
+ * before, with no tabIndex and no handlers.
72
+ */
73
+ onRowActivate?: (row: TData) => void;
74
+ /**
75
+ * Optional href builder pairing with `onRowActivate`: when present,
76
+ * Cmd/Ctrl+Enter on a focused row opens the built href in a new tab via
77
+ * `window.open(href, '_blank', 'noopener,noreferrer')` — the keyboard twin
78
+ * of cmd-clicking the row's in-cell link. Build hrefs with the router's
79
+ * own URL builder, never string concatenation. Sheet-based tables (no
80
+ * routable destination) simply omit it and keep modified Enter a no-op.
81
+ */
82
+ rowHref?: (row: TData) => string;
83
+ className?: string;
84
+ };
85
+ export type DataTableProps<TData> = DataTableBaseProps<TData> & RowSelectionProps<TData>;
86
+ export declare function DataTable<TData>({ columns, data, loading, skeletonRows, loadingLabel, empty, getRowId, flush, density, enableRowSelection, rowSelection, onRowSelectionChange, getRowSelectionLabel, onRowActivate, rowHref, className }: DataTableProps<TData>): import("react").JSX.Element;
87
+ export {};
88
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/enterprise/data-table/index.tsx"],"names":[],"mappings":"AAmCA,OAAO,EAIL,KAAK,SAAS,EACd,KAAK,UAAU,EAEf,KAAK,OAAO,EACZ,KAAK,iBAAiB,EAEvB,MAAM,uBAAuB,CAAA;AAY9B,OAAO,EAAc,KAAK,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAEjE;;;;GAIG;AACH,OAAO,QAAQ,uBAAuB,CAAC;IAIrC,UAAU,UAAU,CAAC,KAAK,SAAS,OAAO,EAAE,MAAM;QAChD,OAAO,CAAC,EAAE,OAAO,CAAA;KAClB;CACF;AAED;;;;;;;;GAQG;AACH,KAAK,iBAAiB,CAAC,KAAK,IACxB;IACE,kBAAkB,CAAC,EAAE,KAAK,CAAA;IAC1B,YAAY,CAAC,EAAE,KAAK,CAAA;IACpB,oBAAoB,CAAC,EAAE,KAAK,CAAA;IAC5B,oBAAoB,CAAC,EAAE,KAAK,CAAA;CAC7B,GACD;IACE,kBAAkB,EAAE,IAAI,CAAA;IACxB,kFAAkF;IAClF,YAAY,EAAE,iBAAiB,CAAA;IAC/B,4DAA4D;IAC5D,oBAAoB,EAAE,UAAU,CAAC,iBAAiB,CAAC,CAAA;IACnD;;;;;OAKG;IACH,oBAAoB,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,MAAM,CAAA;CAC9C,CAAA;AAEL,KAAK,kBAAkB,CAAC,KAAK,IAAI;IAC/B,OAAO,EAAE,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,CAAA;IACpC,IAAI,EAAE,KAAK,EAAE,CAAA;IACb,sDAAsD;IACtD,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,2DAA2D;IAC3D,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,iGAAiG;IACjG,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,0DAA0D;IAC1D,KAAK,CAAC,EAAE,eAAe,CAAA;IACvB,qEAAqE;IACrE,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,CAAA;IAChD;;;;OAIG;IACH,KAAK,CAAC,EAAE,OAAO,CAAA;IACf;;;;OAIG;IACH,OAAO,CAAC,EAAE,aAAa,GAAG,SAAS,CAAA;IACnC;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,IAAI,CAAA;IACpC;;;;;;;OAOG;IACH,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,MAAM,CAAA;IAChC,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,MAAM,MAAM,cAAc,CAAC,KAAK,IAAI,kBAAkB,CAAC,KAAK,CAAC,GAC3D,iBAAiB,CAAC,KAAK,CAAC,CAAA;AA4E1B,wBAAgB,SAAS,CAAC,KAAK,EAAE,EAC/B,OAAO,EACP,IAAI,EACJ,OAAe,EACf,YAAgB,EAChB,YAAmC,EACnC,KAAK,EACL,QAAQ,EACR,KAAa,EACb,OAAuB,EACvB,kBAA0B,EAC1B,YAAY,EACZ,oBAAoB,EACpB,oBAAoB,EACpB,aAAa,EACb,OAAO,EACP,SAAS,EACV,EAAE,cAAc,CAAC,KAAK,CAAC,+BA+RvB"}
@@ -0,0 +1,245 @@
1
+ 'use client';
2
+ "use strict";
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.DataTable = DataTable;
5
+ const jsx_runtime_1 = require("react/jsx-runtime");
6
+ /**
7
+ * DataTable — a typed, generic wrapper over TanStack Table v8.
8
+ *
9
+ * Pairs with CursorPager (server-driven pagination): pass the page's `items`
10
+ * as `data`; this component does no client-side paging or sorting by default.
11
+ * It owns the three render states the list screens need:
12
+ * - loading → header + skeleton rows
13
+ * - empty → EmptyState (data resolved, zero rows)
14
+ * - data → semantic table rows; cells own any links/actions
15
+ *
16
+ * Columns are standard TanStack `ColumnDef<T>`; cells receive the row's
17
+ * `original` value, so screens compose money / date / status cells directly in
18
+ * their column `cell` renderers.
19
+ *
20
+ * Row selection is opt-in and controlled: pass `enableRowSelection` plus
21
+ * `rowSelection` / `onRowSelectionChange` (TanStack-native types). When
22
+ * enabled, a checkbox column is prepended — header checkbox selects the
23
+ * page (indeterminate for partial), checkbox-cell clicks never bubble to
24
+ * row-level handlers. With the flag off (the default), nothing changes.
25
+ *
26
+ * Keyboard navigation is opt-in via `onRowActivate`: when present, rows get
27
+ * a roving tabindex (Tab enters the table once at the anchor row; the next
28
+ * Tab moves to the row's first tabbable child if it has one, otherwise out
29
+ * of the table — no trap), ArrowUp/Down move row focus clamped to the page,
30
+ * Home/End jump to the page edges, Enter activates the row through the
31
+ * callback, and Space toggles selection when `enableRowSelection` is on.
32
+ * Cmd/Ctrl+Enter opens the row's destination in a new tab when the optional
33
+ * `rowHref` builder is provided (window.open with noopener,noreferrer);
34
+ * without it, modified Enter stays a deliberate no-op — never a same-tab
35
+ * activation. Keydown events originating from interactive children (links,
36
+ * buttons, checkboxes, form fields) are never hijacked.
37
+ */
38
+ const react_1 = require("react");
39
+ const react_table_1 = require("@tanstack/react-table");
40
+ const table_1 = require("../../components/ui/table");
41
+ const skeleton_1 = require("../../components/ui/skeleton");
42
+ const utils_1 = require("../../lib/utils");
43
+ const empty_state_1 = require("../empty-state");
44
+ const SELECTION_COLUMN_ID = '__select__';
45
+ const CHECKBOX_CLASS = 'accent-primary block size-4';
46
+ /** Right-aligned mono treatment for `meta: { numeric: true }` columns. */
47
+ const NUMERIC_CELL_CLASS = 'text-right font-mono tabular-nums';
48
+ /**
49
+ * Keydown events whose target sits inside one of these are never hijacked
50
+ * by the row-level keyboard handler — Space in a checkbox and Enter on an
51
+ * in-cell link keep their native behavior.
52
+ */
53
+ const INTERACTIVE_CHILD_SELECTOR = 'a, button, input, select, textarea, [role="checkbox"]';
54
+ /**
55
+ * Inset focus outline for keyboard-navigable rows. Outline, not Tailwind
56
+ * ring: ring is box-shadow, which renders unreliably on display: table-row.
57
+ * `focus-visible`-gated, so mouse users (and visual baselines) see nothing.
58
+ */
59
+ const ROW_FOCUS_CLASS = 'focus-visible:outline focus-visible:outline-2 focus-visible:-outline-offset-2 focus-visible:outline-ring';
60
+ function stopPropagation(event) {
61
+ event.stopPropagation();
62
+ }
63
+ function SelectAllCheckbox({ table }) {
64
+ const allSelected = table.getIsAllPageRowsSelected();
65
+ const someSelected = table.getIsSomePageRowsSelected();
66
+ return ((0, jsx_runtime_1.jsx)("input", { type: "checkbox", className: CHECKBOX_CLASS, "aria-label": "Select all rows on this page", checked: allSelected, ref: (el) => {
67
+ if (el)
68
+ el.indeterminate = !allSelected && someSelected;
69
+ }, onChange: table.getToggleAllPageRowsSelectedHandler() }));
70
+ }
71
+ function RowSelectionCheckbox({ row, getLabel }) {
72
+ return ((0, jsx_runtime_1.jsx)("input", { type: "checkbox", className: CHECKBOX_CLASS, "aria-label": getLabel ? getLabel(row.original) : `Select row ${row.id}`, checked: row.getIsSelected(), disabled: !row.getCanSelect(), onChange: row.getToggleSelectedHandler() }));
73
+ }
74
+ function createSelectionColumn(getLabel) {
75
+ return {
76
+ id: SELECTION_COLUMN_ID,
77
+ header: ({ table }) => (0, jsx_runtime_1.jsx)(SelectAllCheckbox, { table: table }),
78
+ cell: ({ row }) => (0, jsx_runtime_1.jsx)(RowSelectionCheckbox, { row: row, getLabel: getLabel })
79
+ };
80
+ }
81
+ function DataTable({ columns, data, loading = false, skeletonRows = 8, loadingLabel = 'Loading table rows', empty, getRowId, flush = false, density = 'comfortable', enableRowSelection = false, rowSelection, onRowSelectionChange, getRowSelectionLabel, onRowActivate, rowHref, className }) {
82
+ const tableColumns = (0, react_1.useMemo)(() => enableRowSelection
83
+ ? [createSelectionColumn(getRowSelectionLabel), ...columns]
84
+ : columns, [columns, enableRowSelection, getRowSelectionLabel]);
85
+ const table = (0, react_table_1.useReactTable)({
86
+ data,
87
+ columns: tableColumns,
88
+ getCoreRowModel: (0, react_table_1.getCoreRowModel)(),
89
+ getRowId,
90
+ enableRowSelection,
91
+ // Controlled-only, exactly as sindarian-x shipped it: this component holds
92
+ // no selection state. The `?? {}` is the JS-consumer safety net; the prop
93
+ // types make the TS path require the controlled pair whenever selection is
94
+ // enabled, so the dead-checkbox configuration is now unrepresentable.
95
+ onRowSelectionChange: enableRowSelection ? onRowSelectionChange : undefined,
96
+ state: {
97
+ rowSelection: enableRowSelection ? (rowSelection ?? {}) : undefined
98
+ }
99
+ });
100
+ const colCount = tableColumns.length;
101
+ const dataRows = table.getRowModel().rows;
102
+ const rowCount = dataRows.length;
103
+ // Compact density overrides only THIS table's cell padding (tailwind-merge
104
+ // lets the later utility win over TableHead/TableCell's defaults).
105
+ // Comfortable passes nothing, so the default render is unchanged.
106
+ const compact = density === 'compact';
107
+ const headDensityClass = compact ? 'h-8 px-2' : undefined;
108
+ const cellDensityClass = compact ? 'px-2 py-1.5' : undefined;
109
+ // --- Roving row focus (active only when onRowActivate is provided) ---
110
+ const keyboardNav = onRowActivate !== undefined;
111
+ const [focusedIndex, setFocusedIndex] = (0, react_1.useState)(0);
112
+ // ponytail: rowRefs is keyed by render index, while rows are id-keyed
113
+ // (`key={row.id}`). This holds only because DataTable is server-driven with
114
+ // no in-place client reorder, and React 19's per-render ref cleanup defuses
115
+ // stale entries. If client-side reorder is ever added, re-key this Map by
116
+ // row.id to keep focus targets aligned with their rows.
117
+ const rowRefs = (0, react_1.useRef)(new Map());
118
+ const focusWithinRef = (0, react_1.useRef)(false);
119
+ const containerRef = (0, react_1.useRef)(null);
120
+ // Render-time clamp: exactly one anchor row (tabIndex=0) even on the
121
+ // frame where data shrank but state has not caught up yet.
122
+ const anchorIndex = rowCount > 0 ? Math.min(focusedIndex, rowCount - 1) : 0;
123
+ // Data changes clamp the anchor but never steal focus: DOM focus moves
124
+ // only if focus was already inside the table and the focused row vanished
125
+ // (e.g. page flip removed it). Never autofocus on mount.
126
+ (0, react_1.useEffect)(() => {
127
+ if (!keyboardNav)
128
+ return;
129
+ // Clamp the focus target ONCE and drive both the state setter and the
130
+ // .focus() call from the same value — reading `focusedIndex` separately
131
+ // after the functional update would use the stale pre-clamp closure value
132
+ // and try to focus an unmounted row, dropping focus to <body>.
133
+ const max = Math.max(rowCount - 1, 0);
134
+ const target = Math.min(focusedIndex, max);
135
+ setFocusedIndex(target);
136
+ if (!focusWithinRef.current)
137
+ return;
138
+ const active = document.activeElement;
139
+ if (active && containerRef.current?.contains(active))
140
+ return;
141
+ // The target row may have unmounted on a data-shrink frame; walk down to
142
+ // the nearest existing lower index, falling back to the container, so
143
+ // focus never escapes the table.
144
+ for (let i = target; i >= 0; i--) {
145
+ const rowEl = rowRefs.current.get(i);
146
+ if (rowEl) {
147
+ rowEl.focus();
148
+ return;
149
+ }
150
+ }
151
+ containerRef.current?.focus();
152
+ }, [keyboardNav, rowCount, focusedIndex, data]);
153
+ const focusRow = (index) => {
154
+ rowRefs.current.get(index)?.focus();
155
+ };
156
+ const handleRowBlur = (event) => {
157
+ const next = event.relatedTarget;
158
+ if (!next || !containerRef.current?.contains(next)) {
159
+ focusWithinRef.current = false;
160
+ }
161
+ };
162
+ const handleRowKeyDown = (event, row, rowIndex) => {
163
+ const target = event.target;
164
+ if (target !== event.currentTarget &&
165
+ target.closest(INTERACTIVE_CHILD_SELECTOR) !== null) {
166
+ return;
167
+ }
168
+ switch (event.key) {
169
+ case 'ArrowDown':
170
+ event.preventDefault();
171
+ focusRow(Math.min(rowIndex + 1, rowCount - 1));
172
+ break;
173
+ case 'ArrowUp':
174
+ event.preventDefault();
175
+ focusRow(Math.max(rowIndex - 1, 0));
176
+ break;
177
+ case 'Home':
178
+ event.preventDefault();
179
+ focusRow(0);
180
+ break;
181
+ case 'End':
182
+ event.preventDefault();
183
+ focusRow(rowCount - 1);
184
+ break;
185
+ case 'Enter':
186
+ // Modified Enter (Cmd/Ctrl) means "open elsewhere" — a same-tab
187
+ // activation would destroy the user's context. With rowHref it
188
+ // opens the row's destination in a new tab; without it (sheet-based
189
+ // tables), it stays a deliberate no-op.
190
+ if (event.metaKey || event.ctrlKey) {
191
+ if (rowHref) {
192
+ window.open(rowHref(row.original), '_blank', 'noopener,noreferrer');
193
+ }
194
+ break;
195
+ }
196
+ onRowActivate?.(row.original);
197
+ break;
198
+ case ' ':
199
+ if (enableRowSelection && row.getCanSelect()) {
200
+ event.preventDefault();
201
+ row.getToggleSelectedHandler()(event);
202
+ }
203
+ break;
204
+ default:
205
+ break;
206
+ }
207
+ };
208
+ return ((0, jsx_runtime_1.jsxs)("div", { ref: containerRef,
209
+ // tabIndex={-1} (keyboard-nav only) makes the container programmatically
210
+ // focusable so the focus-restoration fallback can land here when every
211
+ // row has unmounted, keeping focus inside the table rather than on <body>.
212
+ tabIndex: keyboardNav ? -1 : undefined, className: (0, utils_1.cn)(!flush &&
213
+ 'border-border bg-card text-card-foreground rounded-lg border', className), children: [(0, jsx_runtime_1.jsx)("span", { className: "sr-only", role: "status", children: loading
214
+ ? loadingLabel
215
+ : rowCount === 0
216
+ ? 'No rows'
217
+ : `${rowCount} rows` }), (0, jsx_runtime_1.jsxs)(table_1.Table, { "aria-busy": loading ? 'true' : undefined, children: [(0, jsx_runtime_1.jsx)(table_1.TableHeader, { children: table.getHeaderGroups().map((headerGroup) => ((0, jsx_runtime_1.jsx)(table_1.TableRow, { className: "hover:bg-transparent", children: headerGroup.headers.map((header) => {
218
+ const numeric = header.column.columnDef.meta?.numeric;
219
+ return ((0, jsx_runtime_1.jsx)(table_1.TableHead, { align: numeric ? 'right' : undefined, className: (0, utils_1.cn)('tracking-wide uppercase', headDensityClass, header.column.id === SELECTION_COLUMN_ID && 'w-10'), children: header.isPlaceholder
220
+ ? null
221
+ : (0, react_table_1.flexRender)(header.column.columnDef.header, header.getContext()) }, header.id));
222
+ }) }, headerGroup.id))) }), (0, jsx_runtime_1.jsx)(table_1.TableBody, { children: loading ? (Array.from({ length: skeletonRows }).map((_, rowIndex) => ((0, jsx_runtime_1.jsx)(table_1.TableRow, { className: "hover:bg-transparent", children: Array.from({ length: colCount }).map((__, cellIndex) => ((0, jsx_runtime_1.jsx)(table_1.TableCell, { className: cellDensityClass, children: (0, jsx_runtime_1.jsx)(skeleton_1.Skeleton, { className: "h-4 w-full max-w-[160px]" }) }, `skeleton-${rowIndex}-${cellIndex}`))) }, `skeleton-${rowIndex}`)))) : rowCount === 0 ? ((0, jsx_runtime_1.jsx)(table_1.TableRow, { className: "hover:bg-transparent", children: (0, jsx_runtime_1.jsx)(table_1.TableCell, { colSpan: colCount, className: "p-0", children: (0, jsx_runtime_1.jsx)(empty_state_1.EmptyState, { title: empty?.title ?? 'Nothing here yet', description: empty?.description, icon: empty?.icon, action: empty?.action,
223
+ // The DataTable renders the ledger register grammar, so its
224
+ // empty surface reads as a ruled page rather than a centered
225
+ // void. Callers can still override via `empty.ruled = false`.
226
+ ruled: empty?.ruled ?? true }) }) })) : (dataRows.map((row, rowIndex) => ((0, jsx_runtime_1.jsx)(table_1.TableRow, { ref: keyboardNav
227
+ ? (el) => {
228
+ if (el)
229
+ rowRefs.current.set(rowIndex, el);
230
+ else
231
+ rowRefs.current.delete(rowIndex);
232
+ }
233
+ : undefined, tabIndex: keyboardNav ? (rowIndex === anchorIndex ? 0 : -1) : undefined, onFocus: keyboardNav
234
+ ? () => {
235
+ focusWithinRef.current = true;
236
+ setFocusedIndex(rowIndex);
237
+ }
238
+ : undefined, onBlur: keyboardNav ? handleRowBlur : undefined, onKeyDown: keyboardNav
239
+ ? (event) => handleRowKeyDown(event, row, rowIndex)
240
+ : undefined, className: keyboardNav ? ROW_FOCUS_CLASS : undefined, "data-state": enableRowSelection && row.getIsSelected()
241
+ ? 'selected'
242
+ : undefined, children: row.getVisibleCells().map((cell) => ((0, jsx_runtime_1.jsx)(table_1.TableCell, { className: (0, utils_1.cn)(cell.column.columnDef.meta?.numeric && NUMERIC_CELL_CLASS, cellDensityClass, cell.column.id === SELECTION_COLUMN_ID && 'w-10'), onClick: cell.column.id === SELECTION_COLUMN_ID
243
+ ? stopPropagation
244
+ : undefined, children: (0, react_table_1.flexRender)(cell.column.columnDef.cell, cell.getContext()) }, cell.id))) }, row.id)))) })] })] }));
245
+ }
@@ -0,0 +1,37 @@
1
+ import type { ComponentProps, ReactNode } from 'react';
2
+ import { Calendar } from '../../components/ui/calendar';
3
+ /**
4
+ * The calendar's locale type, taken straight off the Calendar props so the
5
+ * public signature stays the react-day-picker/date-fns `Locale` without this
6
+ * package taking a direct date-fns dependency.
7
+ */
8
+ type CalendarLocale = ComponentProps<typeof Calendar>['locale'];
9
+ export type DateRangeValue = {
10
+ /** YYYY-MM-DD or '' when unset. */
11
+ from: string;
12
+ /** YYYY-MM-DD or '' when unset. */
13
+ to: string;
14
+ };
15
+ export type DateRangePickerProps = {
16
+ value: DateRangeValue;
17
+ onValueChange: (next: DateRangeValue) => void;
18
+ /** id (and de-facto testid) of the "from" trigger; the label points at it. */
19
+ fromId: string;
20
+ toId: string;
21
+ fromLabel: ReactNode;
22
+ toLabel: ReactNode;
23
+ invalid?: boolean;
24
+ /** Wired as aria-describedby on both triggers while `invalid` is set. */
25
+ errorId?: string;
26
+ /** Trigger placeholder when unset. */
27
+ placeholder?: string;
28
+ /** Accessible label for the calendar popover. */
29
+ ariaLabel?: string;
30
+ /** Label for the clear button. */
31
+ clearLabel?: string;
32
+ /** date-fns locale for the calendar. Defaults to en-US. */
33
+ locale?: CalendarLocale;
34
+ };
35
+ export declare function DateRangePicker({ value, onValueChange, fromId, toId, fromLabel, toLabel, invalid, errorId, placeholder, ariaLabel, clearLabel, locale }: DateRangePickerProps): import("react").JSX.Element;
36
+ export {};
37
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/enterprise/date-range-picker/index.tsx"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAMtD,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AAUnD;;;;GAIG;AACH,KAAK,cAAc,GAAG,cAAc,CAAC,OAAO,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAA;AAE/D,MAAM,MAAM,cAAc,GAAG;IAC3B,mCAAmC;IACnC,IAAI,EAAE,MAAM,CAAA;IACZ,mCAAmC;IACnC,EAAE,EAAE,MAAM,CAAA;CACX,CAAA;AAED,MAAM,MAAM,oBAAoB,GAAG;IACjC,KAAK,EAAE,cAAc,CAAA;IACrB,aAAa,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,IAAI,CAAA;IAC7C,8EAA8E;IAC9E,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,SAAS,CAAA;IACpB,OAAO,EAAE,SAAS,CAAA;IAClB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,yEAAyE;IACzE,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,sCAAsC;IACtC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,iDAAiD;IACjD,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,kCAAkC;IAClC,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,2DAA2D;IAC3D,MAAM,CAAC,EAAE,cAAc,CAAA;CACxB,CAAA;AAkCD,wBAAgB,eAAe,CAAC,EAC9B,KAAK,EACL,aAAa,EACb,MAAM,EACN,IAAI,EACJ,SAAS,EACT,OAAO,EACP,OAAe,EACf,OAAO,EACP,WAAwB,EACxB,SAA+B,EAC/B,UAAoB,EACpB,MAAa,EACd,EAAE,oBAAoB,+BAiHtB"}
@@ -0,0 +1,92 @@
1
+ 'use client';
2
+ "use strict";
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.DateRangePicker = DateRangePicker;
5
+ const jsx_runtime_1 = require("react/jsx-runtime");
6
+ /**
7
+ * DateRangePicker — a two-segment popover range control.
8
+ *
9
+ * Two labelled mono trigger segments (from / to) each open the SAME two-month
10
+ * react-day-picker range calendar over the same range selection. The external
11
+ * contract is plain YYYY-MM-DD strings (empty string = unset) so state shapes
12
+ * that speak `date_from`/`date_to` stay untouched. The picker guarantees
13
+ * from <= to (react-day-picker reorders inverted picks);
14
+ * aria-invalid/aria-describedby pass-throughs keep external validation wiring
15
+ * alive. i18n is via plain string/locale props.
16
+ *
17
+ * ONE POPOVER ROOT PER SEGMENT, deliberately. A single `Popover.Root` holds ONE
18
+ * trigger ref and ONE open state, so wrapping the whole two-button row in a
19
+ * single `PopoverTrigger asChild` put Radix's dialog attributes
20
+ * (`aria-haspopup`, `aria-expanded`, `aria-controls`) on a plain, non-focusable
21
+ * `div` — an aria-allowed-attr violation, two buttons advertising the same
22
+ * expanded state, and focus that Radix could drop on `document.body` when the
23
+ * popover closed. Each segment is now a real `PopoverTrigger` button: focusable,
24
+ * correctly named, and the element Radix returns focus to on dismissal.
25
+ */
26
+ const react_1 = require("react");
27
+ const lucide_react_1 = require("lucide-react");
28
+ const locale_1 = require("react-day-picker/locale");
29
+ const button_1 = require("../../components/ui/button");
30
+ const calendar_1 = require("../../components/ui/calendar");
31
+ const label_1 = require("../../components/ui/label");
32
+ const popover_1 = require("../../components/ui/popover");
33
+ const typography_1 = require("../../lib/typography");
34
+ const utils_1 = require("../../lib/utils");
35
+ /** Leading YYYY-MM-DD of an ISO date (or date-time) string. */
36
+ const ISO_DAY = /^(\d{4})-(\d{2})-(\d{2})/;
37
+ /**
38
+ * Parse a YYYY-MM-DD day into a LOCAL-midnight Date — the calendar works in
39
+ * local time, so building from parts avoids the UTC shift `new Date(string)`
40
+ * applies to date-only input (which can land the picker a day early).
41
+ * Rejects impossible calendar days (e.g. 2024-02-31, which would roll over).
42
+ */
43
+ function parseDay(value) {
44
+ const match = ISO_DAY.exec(value);
45
+ if (!match)
46
+ return undefined;
47
+ const year = Number(match[1]);
48
+ const month = Number(match[2]);
49
+ const day = Number(match[3]);
50
+ const parsed = new Date(year, month - 1, day);
51
+ return parsed.getFullYear() === year &&
52
+ parsed.getMonth() === month - 1 &&
53
+ parsed.getDate() === day
54
+ ? parsed
55
+ : undefined;
56
+ }
57
+ /** Format a Date back to YYYY-MM-DD in LOCAL time (never via toISOString). */
58
+ function toDayString(value) {
59
+ if (!value)
60
+ return '';
61
+ const year = String(value.getFullYear()).padStart(4, '0');
62
+ const month = String(value.getMonth() + 1).padStart(2, '0');
63
+ const day = String(value.getDate()).padStart(2, '0');
64
+ return `${year}-${month}-${day}`;
65
+ }
66
+ function DateRangePicker({ value, onValueChange, fromId, toId, fromLabel, toLabel, invalid = false, errorId, placeholder = 'Any date', ariaLabel = 'Select date range', clearLabel = 'Clear', locale = locale_1.enUS }) {
67
+ // Which segment's popover is open, if any. One root per segment means one open
68
+ // state per segment; holding the identity of the open one here keeps them
69
+ // mutually exclusive, so clicking "to" while "from" is open swaps the anchor
70
+ // instead of stacking two calendars.
71
+ const [openSegment, setOpenSegment] = (0, react_1.useState)(null);
72
+ const fromDate = parseDay(value.from);
73
+ const toDate = parseDay(value.to);
74
+ const selected = fromDate || toDate ? { from: fromDate, to: toDate } : undefined;
75
+ // Derived from the RAW strings, not the parsed dates: a value the calendar
76
+ // cannot parse still needs to be clearable, and gating Clear on `fromDate`
77
+ // would strand the field holding text the user can no longer remove.
78
+ const hasValue = value.from !== '' || value.to !== '';
79
+ const onSelect = (range) => {
80
+ onValueChange({
81
+ from: toDayString(range?.from),
82
+ to: toDayString(range?.to)
83
+ });
84
+ };
85
+ const triggerClass = (0, utils_1.cn)('border-input bg-card hover:bg-secondary focus-visible:ring-ring flex h-9 items-center gap-2 rounded-md border px-3 text-left font-mono text-sm tabular-nums transition-colors duration-150 ease-out focus-visible:ring-2 focus-visible:ring-offset-1 focus-visible:outline-none sm:w-40', invalid && 'border-destructive');
86
+ // The one calendar, rendered inside whichever segment's popover is open. Both
87
+ // segments read and write the SAME range selection, so which one you opened
88
+ // changes only the anchor, never the state.
89
+ const calendar = ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(calendar_1.Calendar, { mode: "range", numberOfMonths: 2, defaultMonth: fromDate ?? toDate ?? new Date(), selected: selected, onSelect: onSelect, locale: locale }), (0, jsx_runtime_1.jsx)("div", { className: "border-border flex items-center justify-end border-t px-3 py-2", children: (0, jsx_runtime_1.jsx)(button_1.Button, { type: "button", variant: "plain", size: "small", disabled: !hasValue, onClick: () => onValueChange({ from: '', to: '' }), children: clearLabel }) })] }));
90
+ const renderSegment = (segment, id, label, dateValue) => ((0, jsx_runtime_1.jsxs)(popover_1.Popover, { open: openSegment === segment, onOpenChange: (next) => setOpenSegment(next ? segment : null), children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex flex-col gap-1.5", children: [(0, jsx_runtime_1.jsx)(label_1.Label, { htmlFor: id, className: typography_1.SECTION_LABEL_CLASS, children: label }), (0, jsx_runtime_1.jsxs)(popover_1.PopoverTrigger, { type: "button", id: id, className: triggerClass, "aria-invalid": invalid || undefined, "aria-describedby": invalid ? errorId : undefined, children: [(0, jsx_runtime_1.jsx)(lucide_react_1.CalendarDays, { className: "text-muted-foreground size-4 shrink-0", "aria-hidden": true }), dateValue ? ((0, jsx_runtime_1.jsx)("span", { children: dateValue })) : ((0, jsx_runtime_1.jsx)("span", { className: "text-muted-foreground font-sans", children: placeholder }))] })] }), (0, jsx_runtime_1.jsx)(popover_1.PopoverContent, { align: "start", className: "w-auto p-0", "aria-label": ariaLabel, children: calendar })] }, segment));
91
+ return ((0, jsx_runtime_1.jsxs)("div", { className: "flex flex-col gap-3 sm:flex-row sm:items-end", children: [renderSegment('from', fromId, fromLabel, value.from), renderSegment('to', toId, toLabel, value.to)] }));
92
+ }
@@ -0,0 +1,54 @@
1
+ /**
2
+ * DetailPanel — the console's right-side slide-over for inspecting and editing a
3
+ * single record without leaving the list behind it. Built on Sheet (a Radix
4
+ * Dialog) with three structural slots:
5
+ *
6
+ * - a STICKY header: the record title, an optional actions cluster, and a
7
+ * close affordance, pinned to the top while the body scrolls;
8
+ * - a SCROLLABLE body carrying `children`;
9
+ * - an optional STICKY footer for the primary/secondary actions
10
+ * (e.g. Cancel / Save), pinned to the bottom.
11
+ *
12
+ * <DetailPanel
13
+ * open={open}
14
+ * onOpenChange={setOpen}
15
+ * title="Transaction txn_8f2a"
16
+ * footer={<>
17
+ * <SheetClose asChild><Button variant="outline">Cancel</Button></SheetClose>
18
+ * <Button onClick={save}>Save</Button>
19
+ * </>}
20
+ * >
21
+ * …long body…
22
+ * </DetailPanel>
23
+ *
24
+ * Controlled only: drive `open` from props and reflect dismissals via
25
+ * `onOpenChange`. `side` defaults to "right".
26
+ */
27
+ import * as React from 'react';
28
+ export type DetailPanelProps = {
29
+ /** Controlled open state. */
30
+ open: boolean;
31
+ /** Reflects every dismissal (overlay, Esc, close button) and programmatic toggle. */
32
+ onOpenChange: (open: boolean) => void;
33
+ /** Header title; also the accessible dialog name. */
34
+ title: React.ReactNode;
35
+ /** Edge the panel slides in from. Defaults to "right". */
36
+ side?: 'right' | 'left';
37
+ /** Optional header actions, placed left of the close button. */
38
+ actions?: React.ReactNode;
39
+ /** Optional sticky footer (e.g. Cancel / Save). */
40
+ footer?: React.ReactNode;
41
+ /** Accessible label for the close button. Defaults to "Close". */
42
+ closeLabel?: string;
43
+ /** Scrollable body content. */
44
+ children?: React.ReactNode;
45
+ className?: string;
46
+ };
47
+ /**
48
+ * The slide-over inspector. The header and footer stay pinned; only the body
49
+ * scrolls. Sheet already renders an overlay, focus trap, and Esc/overlay
50
+ * dismissal — we suppress its built-in corner close button (`[&>button.absolute]`)
51
+ * and provide our own inside the header so the layout stays deliberate.
52
+ */
53
+ export declare function DetailPanel({ open, onOpenChange, title, side, actions, footer, closeLabel, children, className }: DetailPanelProps): React.JSX.Element;
54
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/enterprise/detail-panel/index.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAW9B,MAAM,MAAM,gBAAgB,GAAG;IAC7B,6BAA6B;IAC7B,IAAI,EAAE,OAAO,CAAA;IACb,qFAAqF;IACrF,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAA;IACrC,qDAAqD;IACrD,KAAK,EAAE,KAAK,CAAC,SAAS,CAAA;IACtB,0DAA0D;IAC1D,IAAI,CAAC,EAAE,OAAO,GAAG,MAAM,CAAA;IACvB,gEAAgE;IAChE,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,mDAAmD;IACnD,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACxB,kEAAkE;IAClE,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,+BAA+B;IAC/B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,CAAA;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,EAC1B,IAAI,EACJ,YAAY,EACZ,KAAK,EACL,IAAc,EACd,OAAO,EACP,MAAM,EACN,UAAoB,EACpB,QAAQ,EACR,SAAS,EACV,EAAE,gBAAgB,qBA4ClB"}
@@ -0,0 +1,20 @@
1
+ 'use client';
2
+ "use strict";
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.DetailPanel = DetailPanel;
5
+ const jsx_runtime_1 = require("react/jsx-runtime");
6
+ const lucide_react_1 = require("lucide-react");
7
+ const sheet_1 = require("../../components/ui/sheet");
8
+ const utils_1 = require("../../lib/utils");
9
+ /**
10
+ * The slide-over inspector. The header and footer stay pinned; only the body
11
+ * scrolls. Sheet already renders an overlay, focus trap, and Esc/overlay
12
+ * dismissal — we suppress its built-in corner close button (`[&>button.absolute]`)
13
+ * and provide our own inside the header so the layout stays deliberate.
14
+ */
15
+ function DetailPanel({ open, onOpenChange, title, side = 'right', actions, footer, closeLabel = 'Close', children, className }) {
16
+ return ((0, jsx_runtime_1.jsx)(sheet_1.Sheet, { open: open, onOpenChange: onOpenChange, children: (0, jsx_runtime_1.jsxs)(sheet_1.SheetContent, { side: side, className: (0, utils_1.cn)(
17
+ // Reset Sheet's padding/gap and hide its built-in close button; we
18
+ // own the three-slot layout and the header close affordance here.
19
+ 'flex flex-col gap-0 overflow-hidden p-0', '[&>button.absolute]:hidden', className), children: [(0, jsx_runtime_1.jsxs)("header", { className: "border-border bg-card sticky top-0 z-10 flex shrink-0 items-start justify-between gap-3 border-b px-6 py-4", children: [(0, jsx_runtime_1.jsx)(sheet_1.SheetTitle, { className: "min-w-0 flex-1 truncate text-base font-semibold tracking-tight", children: title }), (0, jsx_runtime_1.jsxs)("div", { className: "flex shrink-0 items-center gap-1.5", children: [actions, (0, jsx_runtime_1.jsx)(sheet_1.SheetClose, { "data-slot": "detail-panel-close", className: "ring-offset-background focus:ring-ring rounded-sm opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:outline-none disabled:pointer-events-none", "aria-label": closeLabel, children: (0, jsx_runtime_1.jsx)(lucide_react_1.X, { className: "size-4", "aria-hidden": true }) })] })] }), (0, jsx_runtime_1.jsx)("div", { className: "min-h-0 flex-1 overflow-y-auto", children: (0, jsx_runtime_1.jsx)("div", { className: "px-6 py-5", children: children }) }), footer ? ((0, jsx_runtime_1.jsx)("footer", { className: "border-border bg-card sticky bottom-0 z-10 flex shrink-0 flex-col-reverse gap-2 border-t px-6 py-4 sm:flex-row sm:justify-end", children: footer })) : null] }) }));
20
+ }