@lerianstudio/sindarian-ui 1.2.0-beta.13 → 1.2.0-beta.15

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 (659) 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 +50 -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.js +4 -4
  32. package/dist/components/ui/copy-field/index.d.ts.map +1 -1
  33. package/dist/components/ui/copy-field/index.js +6 -1
  34. package/dist/components/ui/file-upload/index.d.ts +94 -0
  35. package/dist/components/ui/file-upload/index.d.ts.map +1 -0
  36. package/dist/components/ui/file-upload/index.js +237 -0
  37. package/dist/components/ui/hover-card/index.d.ts +7 -0
  38. package/dist/components/ui/hover-card/index.d.ts.map +1 -0
  39. package/dist/components/ui/hover-card/index.js +51 -0
  40. package/dist/components/ui/input/index.js +2 -2
  41. package/dist/components/ui/otp-input/index.d.ts.map +1 -1
  42. package/dist/components/ui/otp-input/index.js +1 -1
  43. package/dist/components/ui/radio-group/index.d.ts +6 -0
  44. package/dist/components/ui/radio-group/index.d.ts.map +1 -0
  45. package/dist/components/ui/radio-group/index.js +48 -0
  46. package/dist/components/ui/scroll-area/index.d.ts +6 -0
  47. package/dist/components/ui/scroll-area/index.d.ts.map +1 -0
  48. package/dist/components/ui/scroll-area/index.js +49 -0
  49. package/dist/components/ui/sidebar/index.d.ts +1 -0
  50. package/dist/components/ui/sidebar/index.d.ts.map +1 -1
  51. package/dist/components/ui/sidebar/index.js +1 -0
  52. package/dist/components/ui/sidebar/next-router.cjs +44 -0
  53. package/dist/components/ui/sidebar/next-router.d.cts +7 -0
  54. package/dist/components/ui/sidebar/sidebar-item-button.d.ts +2 -2
  55. package/dist/components/ui/sidebar/sidebar-item-button.d.ts.map +1 -1
  56. package/dist/components/ui/sidebar/sidebar-item-button.js +3 -5
  57. package/dist/components/ui/sidebar/sidebar-item-icon-button.d.ts +2 -2
  58. package/dist/components/ui/sidebar/sidebar-item-icon-button.d.ts.map +1 -1
  59. package/dist/components/ui/sidebar/sidebar-item-icon-button.js +3 -5
  60. package/dist/components/ui/sidebar/sidebar-item.d.ts.map +1 -1
  61. package/dist/components/ui/sidebar/sidebar-item.js +3 -2
  62. package/dist/components/ui/sidebar/sidebar-router.d.ts +82 -0
  63. package/dist/components/ui/sidebar/sidebar-router.d.ts.map +1 -0
  64. package/dist/components/ui/sidebar/sidebar-router.js +126 -0
  65. package/dist/components/ui/toast/index.d.ts +1 -1
  66. package/dist/components/ui/toast/index.d.ts.map +1 -1
  67. package/dist/components/ui/toggle-group/index.d.ts +18 -0
  68. package/dist/components/ui/toggle-group/index.d.ts.map +1 -0
  69. package/dist/components/ui/toggle-group/index.js +87 -0
  70. package/dist/domain/blotter/index.d.ts +40 -0
  71. package/dist/domain/blotter/index.d.ts.map +1 -0
  72. package/dist/domain/blotter/index.js +16 -0
  73. package/dist/domain/delinquency-aging/aging-buckets.d.ts +57 -0
  74. package/dist/domain/delinquency-aging/aging-buckets.d.ts.map +1 -0
  75. package/dist/domain/delinquency-aging/aging-buckets.js +110 -0
  76. package/dist/domain/delinquency-aging/index.d.ts +67 -0
  77. package/dist/domain/delinquency-aging/index.d.ts.map +1 -0
  78. package/dist/domain/delinquency-aging/index.js +153 -0
  79. package/dist/domain/figure/index.d.ts +30 -0
  80. package/dist/domain/figure/index.d.ts.map +1 -0
  81. package/dist/domain/figure/index.js +18 -0
  82. package/dist/domain/format.d.ts +57 -0
  83. package/dist/domain/format.d.ts.map +1 -0
  84. package/dist/domain/format.js +102 -0
  85. package/dist/domain/index.d.ts +23 -0
  86. package/dist/domain/index.d.ts.map +1 -0
  87. package/dist/domain/index.js +43 -0
  88. package/dist/domain/key-id/index.d.ts +31 -0
  89. package/dist/domain/key-id/index.d.ts.map +1 -0
  90. package/dist/domain/key-id/index.js +167 -0
  91. package/dist/domain/ledger-sheet/index.d.ts +45 -0
  92. package/dist/domain/ledger-sheet/index.d.ts.map +1 -0
  93. package/dist/domain/ledger-sheet/index.js +28 -0
  94. package/dist/domain/money-diff.d.ts +28 -0
  95. package/dist/domain/money-diff.d.ts.map +1 -0
  96. package/dist/domain/money-diff.js +48 -0
  97. package/dist/domain/money-math.d.ts +32 -0
  98. package/dist/domain/money-math.d.ts.map +1 -0
  99. package/dist/domain/money-math.js +104 -0
  100. package/dist/domain/money-text/index.d.ts +37 -0
  101. package/dist/domain/money-text/index.d.ts.map +1 -0
  102. package/dist/domain/money-text/index.js +113 -0
  103. package/dist/domain/section-label/index.d.ts +21 -0
  104. package/dist/domain/section-label/index.d.ts.map +1 -0
  105. package/dist/domain/section-label/index.js +13 -0
  106. package/dist/domain/status-rail/index.d.ts +40 -0
  107. package/dist/domain/status-rail/index.d.ts.map +1 -0
  108. package/dist/domain/status-rail/index.js +72 -0
  109. package/dist/domain/threshold-gauge/index.d.ts +84 -0
  110. package/dist/domain/threshold-gauge/index.d.ts.map +1 -0
  111. package/dist/domain/threshold-gauge/index.js +157 -0
  112. package/dist/enterprise/alert-banner/index.d.ts +30 -0
  113. package/dist/enterprise/alert-banner/index.d.ts.map +1 -0
  114. package/dist/enterprise/alert-banner/index.js +24 -0
  115. package/dist/enterprise/app-shell/index.d.ts +61 -0
  116. package/dist/enterprise/app-shell/index.d.ts.map +1 -0
  117. package/dist/enterprise/app-shell/index.js +87 -0
  118. package/dist/enterprise/cursor-pager/index.d.ts +21 -0
  119. package/dist/enterprise/cursor-pager/index.d.ts.map +1 -0
  120. package/dist/enterprise/cursor-pager/index.js +26 -0
  121. package/dist/enterprise/data-table/index.d.ts +88 -0
  122. package/dist/enterprise/data-table/index.d.ts.map +1 -0
  123. package/dist/enterprise/data-table/index.js +245 -0
  124. package/dist/enterprise/date-range-picker/index.d.ts +37 -0
  125. package/dist/enterprise/date-range-picker/index.d.ts.map +1 -0
  126. package/dist/enterprise/date-range-picker/index.js +92 -0
  127. package/dist/enterprise/detail-panel/index.d.ts +54 -0
  128. package/dist/enterprise/detail-panel/index.d.ts.map +1 -0
  129. package/dist/enterprise/detail-panel/index.js +20 -0
  130. package/dist/enterprise/empty-state/index.d.ts +32 -0
  131. package/dist/enterprise/empty-state/index.d.ts.map +1 -0
  132. package/dist/enterprise/empty-state/index.js +13 -0
  133. package/dist/enterprise/index.d.ts +26 -0
  134. package/dist/enterprise/index.d.ts.map +1 -0
  135. package/dist/enterprise/index.js +39 -0
  136. package/dist/enterprise/number-input/index.d.ts +55 -0
  137. package/dist/enterprise/number-input/index.d.ts.map +1 -0
  138. package/dist/enterprise/number-input/index.js +238 -0
  139. package/dist/enterprise/search-input/index.d.ts +32 -0
  140. package/dist/enterprise/search-input/index.d.ts.map +1 -0
  141. package/dist/enterprise/search-input/index.js +121 -0
  142. package/dist/enterprise/stat-card/index.d.ts +43 -0
  143. package/dist/enterprise/stat-card/index.d.ts.map +1 -0
  144. package/dist/enterprise/stat-card/index.js +67 -0
  145. package/dist/enterprise/status-badge/index.d.ts +31 -0
  146. package/dist/enterprise/status-badge/index.d.ts.map +1 -0
  147. package/dist/enterprise/status-badge/index.js +120 -0
  148. package/dist/enterprise/use-is-mobile.d.ts +20 -0
  149. package/dist/enterprise/use-is-mobile.d.ts.map +1 -0
  150. package/dist/enterprise/use-is-mobile.js +68 -0
  151. package/dist/enterprise/virtualized-table/index.d.ts +26 -0
  152. package/dist/enterprise/virtualized-table/index.d.ts.map +1 -0
  153. package/dist/enterprise/virtualized-table/index.js +114 -0
  154. package/dist/esm/charts/chart.d.ts +64 -0
  155. package/dist/esm/charts/chart.d.ts.map +1 -0
  156. package/dist/esm/charts/chart.js +191 -0
  157. package/dist/esm/charts/index.d.ts +3 -0
  158. package/dist/esm/charts/index.d.ts.map +1 -0
  159. package/dist/esm/charts/index.js +3 -0
  160. package/dist/esm/components/breadcrumb/get-breadcrumb-paths.d.ts +10 -0
  161. package/dist/esm/components/breadcrumb/get-breadcrumb-paths.d.ts.map +1 -0
  162. package/dist/esm/components/breadcrumb/get-breadcrumb-paths.js +12 -0
  163. package/dist/esm/components/breadcrumb/index.d.ts +11 -0
  164. package/dist/esm/components/breadcrumb/index.d.ts.map +1 -0
  165. package/dist/esm/components/breadcrumb/index.js +6 -0
  166. package/dist/esm/components/card/account-card/index.d.ts +32 -0
  167. package/dist/esm/components/card/account-card/index.d.ts.map +1 -0
  168. package/dist/esm/components/card/account-card/index.js +53 -0
  169. package/dist/esm/components/card/basic-card/index.d.ts +6 -0
  170. package/dist/esm/components/card/basic-card/index.d.ts.map +1 -0
  171. package/dist/esm/components/card/basic-card/index.js +14 -0
  172. package/dist/esm/components/card/dashboard-card/index.d.ts +5 -0
  173. package/dist/esm/components/card/dashboard-card/index.d.ts.map +1 -0
  174. package/dist/esm/components/card/dashboard-card/index.js +14 -0
  175. package/dist/esm/components/card/entity-card/index.d.ts +22 -0
  176. package/dist/esm/components/card/entity-card/index.d.ts.map +1 -0
  177. package/dist/esm/components/card/entity-card/index.js +48 -0
  178. package/dist/esm/components/card/index.d.ts +5 -0
  179. package/dist/esm/components/card/index.d.ts.map +1 -0
  180. package/dist/esm/components/card/index.js +4 -0
  181. package/dist/esm/components/dialog/confirmation-dialog/index.d.ts +16 -0
  182. package/dist/esm/components/dialog/confirmation-dialog/index.d.ts.map +1 -0
  183. package/dist/esm/components/dialog/confirmation-dialog/index.js +25 -0
  184. package/dist/esm/components/dialog/confirmation-dialog/use-confirm-dialog.d.ts +31 -0
  185. package/dist/esm/components/dialog/confirmation-dialog/use-confirm-dialog.d.ts.map +1 -0
  186. package/dist/esm/components/dialog/confirmation-dialog/use-confirm-dialog.js +49 -0
  187. package/dist/esm/components/dialog/index.d.ts +4 -0
  188. package/dist/esm/components/dialog/index.d.ts.map +1 -0
  189. package/dist/esm/components/dialog/index.js +3 -0
  190. package/dist/esm/components/dialog/large-dialog/index.d.ts +11 -0
  191. package/dist/esm/components/dialog/large-dialog/index.d.ts.map +1 -0
  192. package/dist/esm/components/dialog/large-dialog/index.js +16 -0
  193. package/dist/esm/components/entity-box/index.d.ts +17 -0
  194. package/dist/esm/components/entity-box/index.d.ts.map +1 -0
  195. package/dist/esm/components/entity-box/index.js +31 -0
  196. package/dist/esm/components/entity-data-table/index.d.ts +17 -0
  197. package/dist/esm/components/entity-data-table/index.d.ts.map +1 -0
  198. package/dist/esm/components/entity-data-table/index.js +17 -0
  199. package/dist/esm/components/form/combo-box-field/index.d.ts +14 -0
  200. package/dist/esm/components/form/combo-box-field/index.d.ts.map +1 -0
  201. package/dist/esm/components/form/combo-box-field/index.js +28 -0
  202. package/dist/esm/components/form/country-field/index.d.ts +5 -0
  203. package/dist/esm/components/form/country-field/index.d.ts.map +1 -0
  204. package/dist/esm/components/form/country-field/index.js +7 -0
  205. package/dist/esm/components/form/date-picker-field/index.d.ts +21 -0
  206. package/dist/esm/components/form/date-picker-field/index.d.ts.map +1 -0
  207. package/dist/esm/components/form/date-picker-field/index.js +38 -0
  208. package/dist/esm/components/form/date-range-field/index.d.ts +21 -0
  209. package/dist/esm/components/form/date-range-field/index.d.ts.map +1 -0
  210. package/dist/esm/components/form/date-range-field/index.js +17 -0
  211. package/dist/esm/components/form/date-time-picker-field/index.d.ts +23 -0
  212. package/dist/esm/components/form/date-time-picker-field/index.d.ts.map +1 -0
  213. package/dist/esm/components/form/date-time-picker-field/index.js +73 -0
  214. package/dist/esm/components/form/file-upload-field/index.d.ts +52 -0
  215. package/dist/esm/components/form/file-upload-field/index.d.ts.map +1 -0
  216. package/dist/esm/components/form/file-upload-field/index.js +46 -0
  217. package/dist/esm/components/form/index.d.ts +16 -0
  218. package/dist/esm/components/form/index.d.ts.map +1 -0
  219. package/dist/esm/components/form/index.js +15 -0
  220. package/dist/esm/components/form/input-field/index.d.ts +26 -0
  221. package/dist/esm/components/form/input-field/index.d.ts.map +1 -0
  222. package/dist/esm/components/form/input-field/index.js +10 -0
  223. package/dist/esm/components/form/otp-field/index.d.ts +18 -0
  224. package/dist/esm/components/form/otp-field/index.d.ts.map +1 -0
  225. package/dist/esm/components/form/otp-field/index.js +15 -0
  226. package/dist/esm/components/form/pagination-limit-field/index.d.ts +9 -0
  227. package/dist/esm/components/form/pagination-limit-field/index.d.ts.map +1 -0
  228. package/dist/esm/components/form/pagination-limit-field/index.js +6 -0
  229. package/dist/esm/components/form/password-field/index.d.ts +14 -0
  230. package/dist/esm/components/form/password-field/index.d.ts.map +1 -0
  231. package/dist/esm/components/form/password-field/index.js +10 -0
  232. package/dist/esm/components/form/radio-group-field/index.d.ts +32 -0
  233. package/dist/esm/components/form/radio-group-field/index.d.ts.map +1 -0
  234. package/dist/esm/components/form/radio-group-field/index.js +32 -0
  235. package/dist/esm/components/form/renderable-label.d.ts +35 -0
  236. package/dist/esm/components/form/renderable-label.d.ts.map +1 -0
  237. package/dist/esm/components/form/renderable-label.js +54 -0
  238. package/dist/esm/components/form/select-field/index.d.ts +20 -0
  239. package/dist/esm/components/form/select-field/index.d.ts.map +1 -0
  240. package/dist/esm/components/form/select-field/index.js +16 -0
  241. package/dist/esm/components/form/state-field/index.d.ts +10 -0
  242. package/dist/esm/components/form/state-field/index.d.ts.map +1 -0
  243. package/dist/esm/components/form/state-field/index.js +35 -0
  244. package/dist/esm/components/form/switch-field/index.d.ts +15 -0
  245. package/dist/esm/components/form/switch-field/index.d.ts.map +1 -0
  246. package/dist/esm/components/form/switch-field/index.js +7 -0
  247. package/dist/esm/components/form/textarea-field/index.d.ts +31 -0
  248. package/dist/esm/components/form/textarea-field/index.d.ts.map +1 -0
  249. package/dist/esm/components/form/textarea-field/index.js +19 -0
  250. package/dist/esm/components/page/index.d.ts +4 -0
  251. package/dist/esm/components/page/index.d.ts.map +1 -0
  252. package/dist/esm/components/page/index.js +11 -0
  253. package/dist/esm/components/page-header/index.d.ts +33 -0
  254. package/dist/esm/components/page-header/index.d.ts.map +1 -0
  255. package/dist/esm/components/page-header/index.js +40 -0
  256. package/dist/esm/components/pagination/index.d.ts +8 -0
  257. package/dist/esm/components/pagination/index.d.ts.map +1 -0
  258. package/dist/esm/components/pagination/index.js +6 -0
  259. package/dist/esm/components/table/id-table-cell.d.ts +7 -0
  260. package/dist/esm/components/table/id-table-cell.d.ts.map +1 -0
  261. package/dist/esm/components/table/id-table-cell.js +12 -0
  262. package/dist/esm/components/table/index.d.ts +3 -0
  263. package/dist/esm/components/table/index.d.ts.map +1 -0
  264. package/dist/esm/components/table/index.js +2 -0
  265. package/dist/esm/components/table/locked-table-actions.d.ts +7 -0
  266. package/dist/esm/components/table/locked-table-actions.d.ts.map +1 -0
  267. package/dist/esm/components/table/locked-table-actions.js +7 -0
  268. package/dist/esm/components/table/name-table-cell.d.ts +6 -0
  269. package/dist/esm/components/table/name-table-cell.d.ts.map +1 -0
  270. package/dist/esm/components/table/name-table-cell.js +6 -0
  271. package/dist/esm/components/ui/accordion/index.d.ts +14 -0
  272. package/dist/esm/components/ui/accordion/index.d.ts.map +1 -0
  273. package/dist/esm/components/ui/accordion/index.js +24 -0
  274. package/dist/esm/components/ui/alert/index.d.ts +15 -0
  275. package/dist/esm/components/ui/alert/index.d.ts.map +1 -0
  276. package/dist/esm/components/ui/alert/index.js +38 -0
  277. package/dist/esm/components/ui/alert-dialog/index.d.ts +15 -0
  278. package/dist/esm/components/ui/alert-dialog/index.d.ts.map +1 -0
  279. package/dist/esm/components/ui/alert-dialog/index.js +39 -0
  280. package/dist/esm/components/ui/autocomplete/index.d.ts +54 -0
  281. package/dist/esm/components/ui/autocomplete/index.d.ts.map +1 -0
  282. package/dist/esm/components/ui/autocomplete/index.js +276 -0
  283. package/dist/esm/components/ui/autosize-textarea/index.d.ts +15 -0
  284. package/dist/esm/components/ui/autosize-textarea/index.d.ts.map +1 -0
  285. package/dist/esm/components/ui/autosize-textarea/index.js +51 -0
  286. package/dist/esm/components/ui/avatar/index.d.ts +7 -0
  287. package/dist/esm/components/ui/avatar/index.d.ts.map +1 -0
  288. package/dist/esm/components/ui/avatar/index.js +14 -0
  289. package/dist/esm/components/ui/badge/index.d.ts +11 -0
  290. package/dist/esm/components/ui/badge/index.d.ts.map +1 -0
  291. package/dist/esm/components/ui/badge/index.js +29 -0
  292. package/dist/esm/components/ui/breadcrumb/index.d.ts +12 -0
  293. package/dist/esm/components/ui/breadcrumb/index.d.ts.map +1 -0
  294. package/dist/esm/components/ui/breadcrumb/index.js +27 -0
  295. package/dist/esm/components/ui/button/index.d.ts +22 -0
  296. package/dist/esm/components/ui/button/index.d.ts.map +1 -0
  297. package/dist/esm/components/ui/button/index.js +59 -0
  298. package/dist/esm/components/ui/calendar/index.d.ts +9 -0
  299. package/dist/esm/components/ui/calendar/index.d.ts.map +1 -0
  300. package/dist/esm/components/ui/calendar/index.js +79 -0
  301. package/dist/esm/components/ui/card/index.d.ts +10 -0
  302. package/dist/esm/components/ui/card/index.d.ts.map +1 -0
  303. package/dist/esm/components/ui/card/index.js +24 -0
  304. package/dist/esm/components/ui/checkbox/index.d.ts +5 -0
  305. package/dist/esm/components/ui/checkbox/index.d.ts.map +1 -0
  306. package/dist/esm/components/ui/checkbox/index.js +9 -0
  307. package/dist/esm/components/ui/collapsible/index.d.ts +6 -0
  308. package/dist/esm/components/ui/collapsible/index.d.ts.map +1 -0
  309. package/dist/esm/components/ui/collapsible/index.js +13 -0
  310. package/dist/esm/components/ui/command/index.d.ts +14 -0
  311. package/dist/esm/components/ui/command/index.d.ts.map +1 -0
  312. package/dist/esm/components/ui/command/index.js +51 -0
  313. package/dist/esm/components/ui/copy-field/index.d.ts +56 -0
  314. package/dist/esm/components/ui/copy-field/index.d.ts.map +1 -0
  315. package/dist/esm/components/ui/copy-field/index.js +119 -0
  316. package/dist/esm/components/ui/dialog/index.d.ts +16 -0
  317. package/dist/esm/components/ui/dialog/index.d.ts.map +1 -0
  318. package/dist/esm/components/ui/dialog/index.js +36 -0
  319. package/dist/esm/components/ui/dropdown-menu/index.d.ts +27 -0
  320. package/dist/esm/components/ui/dropdown-menu/index.d.ts.map +1 -0
  321. package/dist/esm/components/ui/dropdown-menu/index.js +57 -0
  322. package/dist/esm/components/ui/field/index.d.ts +25 -0
  323. package/dist/esm/components/ui/field/index.d.ts.map +1 -0
  324. package/dist/esm/components/ui/field/index.js +68 -0
  325. package/dist/esm/components/ui/file-upload/index.d.ts +94 -0
  326. package/dist/esm/components/ui/file-upload/index.d.ts.map +1 -0
  327. package/dist/esm/components/ui/file-upload/index.js +200 -0
  328. package/dist/esm/components/ui/form.d.ts +39 -0
  329. package/dist/esm/components/ui/form.d.ts.map +1 -0
  330. package/dist/esm/components/ui/form.js +67 -0
  331. package/dist/esm/components/ui/hover-card/index.d.ts +7 -0
  332. package/dist/esm/components/ui/hover-card/index.d.ts.map +1 -0
  333. package/dist/esm/components/ui/hover-card/index.js +14 -0
  334. package/dist/esm/components/ui/icon-button/index.d.ts +13 -0
  335. package/dist/esm/components/ui/icon-button/index.d.ts.map +1 -0
  336. package/dist/esm/components/ui/icon-button/index.js +31 -0
  337. package/dist/esm/components/ui/input/adornment.d.ts +9 -0
  338. package/dist/esm/components/ui/input/adornment.d.ts.map +1 -0
  339. package/dist/esm/components/ui/input/adornment.js +17 -0
  340. package/dist/esm/components/ui/input/index.d.ts +18 -0
  341. package/dist/esm/components/ui/input/index.d.ts.map +1 -0
  342. package/dist/esm/components/ui/input/index.js +60 -0
  343. package/dist/esm/components/ui/label/index.d.ts +7 -0
  344. package/dist/esm/components/ui/label/index.d.ts.map +1 -0
  345. package/dist/esm/components/ui/label/index.js +10 -0
  346. package/dist/esm/components/ui/loading-button/index.d.ts +8 -0
  347. package/dist/esm/components/ui/loading-button/index.d.ts.map +1 -0
  348. package/dist/esm/components/ui/loading-button/index.js +7 -0
  349. package/dist/esm/components/ui/multiple-select/index.d.ts +91 -0
  350. package/dist/esm/components/ui/multiple-select/index.d.ts.map +1 -0
  351. package/dist/esm/components/ui/multiple-select/index.js +196 -0
  352. package/dist/esm/components/ui/otp-input/index.d.ts +13 -0
  353. package/dist/esm/components/ui/otp-input/index.d.ts.map +1 -0
  354. package/dist/esm/components/ui/otp-input/index.js +21 -0
  355. package/dist/esm/components/ui/paper/index.d.ts +4 -0
  356. package/dist/esm/components/ui/paper/index.d.ts.map +1 -0
  357. package/dist/esm/components/ui/paper/index.js +5 -0
  358. package/dist/esm/components/ui/paper-collapsible/index.d.ts +9 -0
  359. package/dist/esm/components/ui/paper-collapsible/index.d.ts.map +1 -0
  360. package/dist/esm/components/ui/paper-collapsible/index.js +19 -0
  361. package/dist/esm/components/ui/popover/index.d.ts +8 -0
  362. package/dist/esm/components/ui/popover/index.d.ts.map +1 -0
  363. package/dist/esm/components/ui/popover/index.js +17 -0
  364. package/dist/esm/components/ui/progress/index.d.ts +8 -0
  365. package/dist/esm/components/ui/progress/index.d.ts.map +1 -0
  366. package/dist/esm/components/ui/progress/index.js +8 -0
  367. package/dist/esm/components/ui/qr-code/index.d.ts +26 -0
  368. package/dist/esm/components/ui/qr-code/index.d.ts.map +1 -0
  369. package/dist/esm/components/ui/qr-code/index.js +24 -0
  370. package/dist/esm/components/ui/radio-group/index.d.ts +6 -0
  371. package/dist/esm/components/ui/radio-group/index.d.ts.map +1 -0
  372. package/dist/esm/components/ui/radio-group/index.js +12 -0
  373. package/dist/esm/components/ui/scroll-area/index.d.ts +6 -0
  374. package/dist/esm/components/ui/scroll-area/index.d.ts.map +1 -0
  375. package/dist/esm/components/ui/scroll-area/index.js +13 -0
  376. package/dist/esm/components/ui/select/index.d.ts +18 -0
  377. package/dist/esm/components/ui/select/index.d.ts.map +1 -0
  378. package/dist/esm/components/ui/select/index.js +47 -0
  379. package/dist/esm/components/ui/separator/index.d.ts +5 -0
  380. package/dist/esm/components/ui/separator/index.d.ts.map +1 -0
  381. package/dist/esm/components/ui/separator/index.js +8 -0
  382. package/dist/esm/components/ui/sheet/index.d.ts +19 -0
  383. package/dist/esm/components/ui/sheet/index.d.ts.map +1 -0
  384. package/dist/esm/components/ui/sheet/index.js +59 -0
  385. package/dist/esm/components/ui/sidebar/index.d.ts +11 -0
  386. package/dist/esm/components/ui/sidebar/index.d.ts.map +1 -0
  387. package/dist/esm/components/ui/sidebar/index.js +10 -0
  388. package/dist/esm/components/ui/sidebar/next-router.cjs +44 -0
  389. package/dist/esm/components/ui/sidebar/next-router.d.cts +7 -0
  390. package/dist/esm/components/ui/sidebar/sidebar-back-button.d.ts +3 -0
  391. package/dist/esm/components/ui/sidebar/sidebar-back-button.d.ts.map +1 -0
  392. package/dist/esm/components/ui/sidebar/sidebar-back-button.js +5 -0
  393. package/dist/esm/components/ui/sidebar/sidebar-components.d.ts +23 -0
  394. package/dist/esm/components/ui/sidebar/sidebar-components.d.ts.map +1 -0
  395. package/dist/esm/components/ui/sidebar/sidebar-components.js +15 -0
  396. package/dist/esm/components/ui/sidebar/sidebar-expand-button.d.ts +7 -0
  397. package/dist/esm/components/ui/sidebar/sidebar-expand-button.d.ts.map +1 -0
  398. package/dist/esm/components/ui/sidebar/sidebar-expand-button.js +12 -0
  399. package/dist/esm/components/ui/sidebar/sidebar-item-button.d.ts +12 -0
  400. package/dist/esm/components/ui/sidebar/sidebar-item-button.d.ts.map +1 -0
  401. package/dist/esm/components/ui/sidebar/sidebar-item-button.js +18 -0
  402. package/dist/esm/components/ui/sidebar/sidebar-item-collapsible.d.ts +12 -0
  403. package/dist/esm/components/ui/sidebar/sidebar-item-collapsible.d.ts.map +1 -0
  404. package/dist/esm/components/ui/sidebar/sidebar-item-collapsible.js +44 -0
  405. package/dist/esm/components/ui/sidebar/sidebar-item-icon-button.d.ts +12 -0
  406. package/dist/esm/components/ui/sidebar/sidebar-item-icon-button.d.ts.map +1 -0
  407. package/dist/esm/components/ui/sidebar/sidebar-item-icon-button.js +14 -0
  408. package/dist/esm/components/ui/sidebar/sidebar-item.d.ts +13 -0
  409. package/dist/esm/components/ui/sidebar/sidebar-item.d.ts.map +1 -0
  410. package/dist/esm/components/ui/sidebar/sidebar-item.js +16 -0
  411. package/dist/esm/components/ui/sidebar/sidebar-provider.d.ts +12 -0
  412. package/dist/esm/components/ui/sidebar/sidebar-provider.d.ts.map +1 -0
  413. package/dist/esm/components/ui/sidebar/sidebar-provider.js +51 -0
  414. package/dist/esm/components/ui/sidebar/sidebar-root.d.ts +3 -0
  415. package/dist/esm/components/ui/sidebar/sidebar-root.d.ts.map +1 -0
  416. package/dist/esm/components/ui/sidebar/sidebar-root.js +20 -0
  417. package/dist/esm/components/ui/sidebar/sidebar-router.d.ts +82 -0
  418. package/dist/esm/components/ui/sidebar/sidebar-router.d.ts.map +1 -0
  419. package/dist/esm/components/ui/sidebar/sidebar-router.js +89 -0
  420. package/dist/esm/components/ui/skeleton/index.d.ts +3 -0
  421. package/dist/esm/components/ui/skeleton/index.d.ts.map +1 -0
  422. package/dist/esm/components/ui/skeleton/index.js +6 -0
  423. package/dist/esm/components/ui/stepper/index.d.ts +18 -0
  424. package/dist/esm/components/ui/stepper/index.d.ts.map +1 -0
  425. package/dist/esm/components/ui/stepper/index.js +20 -0
  426. package/dist/esm/components/ui/switch/index.d.ts +5 -0
  427. package/dist/esm/components/ui/switch/index.d.ts.map +1 -0
  428. package/dist/esm/components/ui/switch/index.js +8 -0
  429. package/dist/esm/components/ui/table/index.d.ts +21 -0
  430. package/dist/esm/components/ui/table/index.d.ts.map +1 -0
  431. package/dist/esm/components/ui/table/index.js +44 -0
  432. package/dist/esm/components/ui/tabs/index.d.ts +8 -0
  433. package/dist/esm/components/ui/tabs/index.d.ts.map +1 -0
  434. package/dist/esm/components/ui/tabs/index.js +17 -0
  435. package/dist/esm/components/ui/textarea/index.d.ts +4 -0
  436. package/dist/esm/components/ui/textarea/index.d.ts.map +1 -0
  437. package/dist/esm/components/ui/textarea/index.js +6 -0
  438. package/dist/esm/components/ui/time-picker/index.d.ts +18 -0
  439. package/dist/esm/components/ui/time-picker/index.d.ts.map +1 -0
  440. package/dist/esm/components/ui/time-picker/index.js +49 -0
  441. package/dist/esm/components/ui/toast/index.d.ts +18 -0
  442. package/dist/esm/components/ui/toast/index.d.ts.map +1 -0
  443. package/dist/esm/components/ui/toast/index.js +2 -0
  444. package/dist/esm/components/ui/toast/toaster.d.ts +6 -0
  445. package/dist/esm/components/ui/toast/toaster.d.ts.map +1 -0
  446. package/dist/esm/components/ui/toast/toaster.js +8 -0
  447. package/dist/esm/components/ui/toggle-group/index.d.ts +18 -0
  448. package/dist/esm/components/ui/toggle-group/index.d.ts.map +1 -0
  449. package/dist/esm/components/ui/toggle-group/index.js +51 -0
  450. package/dist/esm/components/ui/tooltip/index.d.ts +11 -0
  451. package/dist/esm/components/ui/tooltip/index.d.ts.map +1 -0
  452. package/dist/esm/components/ui/tooltip/index.js +28 -0
  453. package/dist/esm/domain/blotter/index.d.ts +40 -0
  454. package/dist/esm/domain/blotter/index.d.ts.map +1 -0
  455. package/dist/esm/domain/blotter/index.js +12 -0
  456. package/dist/esm/domain/delinquency-aging/aging-buckets.d.ts +57 -0
  457. package/dist/esm/domain/delinquency-aging/aging-buckets.d.ts.map +1 -0
  458. package/dist/esm/domain/delinquency-aging/aging-buckets.js +105 -0
  459. package/dist/esm/domain/delinquency-aging/index.d.ts +67 -0
  460. package/dist/esm/domain/delinquency-aging/index.d.ts.map +1 -0
  461. package/dist/esm/domain/delinquency-aging/index.js +149 -0
  462. package/dist/esm/domain/figure/index.d.ts +30 -0
  463. package/dist/esm/domain/figure/index.d.ts.map +1 -0
  464. package/dist/esm/domain/figure/index.js +14 -0
  465. package/dist/esm/domain/format.d.ts +57 -0
  466. package/dist/esm/domain/format.d.ts.map +1 -0
  467. package/dist/esm/domain/format.js +94 -0
  468. package/dist/esm/domain/index.d.ts +23 -0
  469. package/dist/esm/domain/index.d.ts.map +1 -0
  470. package/dist/esm/domain/index.js +19 -0
  471. package/dist/esm/domain/key-id/index.d.ts +31 -0
  472. package/dist/esm/domain/key-id/index.d.ts.map +1 -0
  473. package/dist/esm/domain/key-id/index.js +162 -0
  474. package/dist/esm/domain/ledger-sheet/index.d.ts +45 -0
  475. package/dist/esm/domain/ledger-sheet/index.d.ts.map +1 -0
  476. package/dist/esm/domain/ledger-sheet/index.js +24 -0
  477. package/dist/esm/domain/money-diff.d.ts +28 -0
  478. package/dist/esm/domain/money-diff.d.ts.map +1 -0
  479. package/dist/esm/domain/money-diff.js +45 -0
  480. package/dist/esm/domain/money-math.d.ts +32 -0
  481. package/dist/esm/domain/money-math.d.ts.map +1 -0
  482. package/dist/esm/domain/money-math.js +98 -0
  483. package/dist/esm/domain/money-text/index.d.ts +37 -0
  484. package/dist/esm/domain/money-text/index.d.ts.map +1 -0
  485. package/dist/esm/domain/money-text/index.js +108 -0
  486. package/dist/esm/domain/section-label/index.d.ts +21 -0
  487. package/dist/esm/domain/section-label/index.d.ts.map +1 -0
  488. package/dist/esm/domain/section-label/index.js +10 -0
  489. package/dist/esm/domain/status-rail/index.d.ts +40 -0
  490. package/dist/esm/domain/status-rail/index.d.ts.map +1 -0
  491. package/dist/esm/domain/status-rail/index.js +67 -0
  492. package/dist/esm/domain/threshold-gauge/index.d.ts +84 -0
  493. package/dist/esm/domain/threshold-gauge/index.d.ts.map +1 -0
  494. package/dist/esm/domain/threshold-gauge/index.js +153 -0
  495. package/dist/esm/enterprise/alert-banner/index.d.ts +30 -0
  496. package/dist/esm/enterprise/alert-banner/index.d.ts.map +1 -0
  497. package/dist/esm/enterprise/alert-banner/index.js +21 -0
  498. package/dist/esm/enterprise/app-shell/index.d.ts +61 -0
  499. package/dist/esm/enterprise/app-shell/index.d.ts.map +1 -0
  500. package/dist/esm/enterprise/app-shell/index.js +51 -0
  501. package/dist/esm/enterprise/cursor-pager/index.d.ts +21 -0
  502. package/dist/esm/enterprise/cursor-pager/index.d.ts.map +1 -0
  503. package/dist/esm/enterprise/cursor-pager/index.js +23 -0
  504. package/dist/esm/enterprise/data-table/index.d.ts +88 -0
  505. package/dist/esm/enterprise/data-table/index.d.ts.map +1 -0
  506. package/dist/esm/enterprise/data-table/index.js +242 -0
  507. package/dist/esm/enterprise/date-range-picker/index.d.ts +37 -0
  508. package/dist/esm/enterprise/date-range-picker/index.d.ts.map +1 -0
  509. package/dist/esm/enterprise/date-range-picker/index.js +89 -0
  510. package/dist/esm/enterprise/detail-panel/index.d.ts +54 -0
  511. package/dist/esm/enterprise/detail-panel/index.d.ts.map +1 -0
  512. package/dist/esm/enterprise/detail-panel/index.js +17 -0
  513. package/dist/esm/enterprise/empty-state/index.d.ts +32 -0
  514. package/dist/esm/enterprise/empty-state/index.d.ts.map +1 -0
  515. package/dist/esm/enterprise/empty-state/index.js +10 -0
  516. package/dist/esm/enterprise/index.d.ts +26 -0
  517. package/dist/esm/enterprise/index.d.ts.map +1 -0
  518. package/dist/esm/enterprise/index.js +22 -0
  519. package/dist/esm/enterprise/number-input/index.d.ts +55 -0
  520. package/dist/esm/enterprise/number-input/index.d.ts.map +1 -0
  521. package/dist/esm/enterprise/number-input/index.js +200 -0
  522. package/dist/esm/enterprise/search-input/index.d.ts +32 -0
  523. package/dist/esm/enterprise/search-input/index.d.ts.map +1 -0
  524. package/dist/esm/enterprise/search-input/index.js +85 -0
  525. package/dist/esm/enterprise/stat-card/index.d.ts +43 -0
  526. package/dist/esm/enterprise/stat-card/index.d.ts.map +1 -0
  527. package/dist/esm/enterprise/stat-card/index.js +64 -0
  528. package/dist/esm/enterprise/status-badge/index.d.ts +31 -0
  529. package/dist/esm/enterprise/status-badge/index.d.ts.map +1 -0
  530. package/dist/esm/enterprise/status-badge/index.js +116 -0
  531. package/dist/esm/enterprise/use-is-mobile.d.ts +20 -0
  532. package/dist/esm/enterprise/use-is-mobile.d.ts.map +1 -0
  533. package/dist/esm/enterprise/use-is-mobile.js +31 -0
  534. package/dist/esm/enterprise/virtualized-table/index.d.ts +26 -0
  535. package/dist/esm/enterprise/virtualized-table/index.d.ts.map +1 -0
  536. package/dist/esm/enterprise/virtualized-table/index.js +111 -0
  537. package/dist/esm/hooks/use-click-away.d.ts +9 -0
  538. package/dist/esm/hooks/use-click-away.d.ts.map +1 -0
  539. package/dist/esm/hooks/use-click-away.js +22 -0
  540. package/dist/esm/hooks/use-pagination.d.ts +13 -0
  541. package/dist/esm/hooks/use-pagination.d.ts.map +1 -0
  542. package/dist/esm/hooks/use-pagination.js +38 -0
  543. package/dist/esm/hooks/use-stepper.d.ts +11 -0
  544. package/dist/esm/hooks/use-stepper.d.ts.map +1 -0
  545. package/dist/esm/hooks/use-stepper.js +22 -0
  546. package/dist/esm/hooks/use-time.d.ts +6 -0
  547. package/dist/esm/hooks/use-time.d.ts.map +1 -0
  548. package/dist/esm/hooks/use-time.js +13 -0
  549. package/dist/esm/hooks/use-toast.d.ts +31 -0
  550. package/dist/esm/hooks/use-toast.d.ts.map +1 -0
  551. package/dist/esm/hooks/use-toast.js +63 -0
  552. package/dist/esm/index.d.ts +69 -0
  553. package/dist/esm/index.d.ts.map +1 -0
  554. package/dist/esm/index.js +74 -0
  555. package/dist/esm/lib/storage/get-storage-object.d.ts +2 -0
  556. package/dist/esm/lib/storage/get-storage-object.d.ts.map +1 -0
  557. package/dist/esm/lib/storage/get-storage-object.js +17 -0
  558. package/dist/esm/lib/storage/get-storage.d.ts +2 -0
  559. package/dist/esm/lib/storage/get-storage.d.ts.map +1 -0
  560. package/dist/esm/lib/storage/get-storage.js +14 -0
  561. package/dist/esm/lib/storage/index.d.ts +3 -0
  562. package/dist/esm/lib/storage/index.d.ts.map +1 -0
  563. package/dist/esm/lib/storage/index.js +2 -0
  564. package/dist/esm/lib/typography.d.ts +17 -0
  565. package/dist/esm/lib/typography.d.ts.map +1 -0
  566. package/dist/esm/lib/typography.js +16 -0
  567. package/dist/esm/lib/utils.d.ts +3 -0
  568. package/dist/esm/lib/utils.d.ts.map +1 -0
  569. package/dist/esm/lib/utils.js +5 -0
  570. package/dist/esm/package.json +1 -0
  571. package/dist/esm/public/countries.json +21210 -0
  572. package/dist/esm/theme/get-theme-script.d.ts +3 -0
  573. package/dist/esm/theme/get-theme-script.d.ts.map +1 -0
  574. package/dist/esm/theme/get-theme-script.js +41 -0
  575. package/dist/esm/theme/index.d.ts +6 -0
  576. package/dist/esm/theme/index.d.ts.map +1 -0
  577. package/dist/esm/theme/index.js +4 -0
  578. package/dist/esm/theme/mode-toggle.d.ts +25 -0
  579. package/dist/esm/theme/mode-toggle.d.ts.map +1 -0
  580. package/dist/esm/theme/mode-toggle.js +27 -0
  581. package/dist/esm/theme/theme-provider.d.ts +38 -0
  582. package/dist/esm/theme/theme-provider.d.ts.map +1 -0
  583. package/dist/esm/theme/theme-provider.js +112 -0
  584. package/dist/esm/toast/helpers.d.ts +16 -0
  585. package/dist/esm/toast/helpers.d.ts.map +1 -0
  586. package/dist/esm/toast/helpers.js +29 -0
  587. package/dist/esm/toast/index.d.ts +3 -0
  588. package/dist/esm/toast/index.d.ts.map +1 -0
  589. package/dist/esm/toast/index.js +4 -0
  590. package/dist/esm/types/metadata-type.d.ts +2 -0
  591. package/dist/esm/types/metadata-type.d.ts.map +1 -0
  592. package/dist/esm/types/metadata-type.js +1 -0
  593. package/dist/esm/utils/countries.cjs +17 -0
  594. package/dist/esm/utils/countries.d.cts +14 -0
  595. package/dist/esm/utils/country-utils.d.ts +17 -0
  596. package/dist/esm/utils/country-utils.d.ts.map +1 -0
  597. package/dist/esm/utils/country-utils.js +18 -0
  598. package/dist/esm/utils/currency-codes.d.ts +5 -0
  599. package/dist/esm/utils/currency-codes.d.ts.map +1 -0
  600. package/dist/esm/utils/currency-codes.js +181 -0
  601. package/dist/globals.css +66 -0
  602. package/dist/hooks/use-toast.d.ts +1 -1
  603. package/dist/hooks/use-toast.d.ts.map +1 -1
  604. package/dist/hooks/use-toast.js +4 -0
  605. package/dist/index.d.ts +14 -0
  606. package/dist/index.d.ts.map +1 -1
  607. package/dist/index.js +19 -1
  608. package/dist/lib/storage/get-storage-object.d.ts.map +1 -1
  609. package/dist/lib/storage/get-storage-object.js +6 -2
  610. package/dist/lib/typography.d.ts +17 -0
  611. package/dist/lib/typography.d.ts.map +1 -0
  612. package/dist/lib/typography.js +19 -0
  613. package/dist/public/countries.json +21200 -21200
  614. package/dist/theme/get-theme-script.d.ts +3 -0
  615. package/dist/theme/get-theme-script.d.ts.map +1 -0
  616. package/dist/theme/get-theme-script.js +44 -0
  617. package/dist/theme/index.d.ts +6 -0
  618. package/dist/theme/index.d.ts.map +1 -0
  619. package/dist/theme/index.js +11 -0
  620. package/dist/theme/mode-toggle.d.ts +25 -0
  621. package/dist/theme/mode-toggle.d.ts.map +1 -0
  622. package/dist/theme/mode-toggle.js +30 -0
  623. package/dist/theme/theme-provider.d.ts +38 -0
  624. package/dist/theme/theme-provider.d.ts.map +1 -0
  625. package/dist/theme/theme-provider.js +149 -0
  626. package/dist/toast/helpers.d.ts +16 -0
  627. package/dist/toast/helpers.d.ts.map +1 -0
  628. package/dist/toast/helpers.js +34 -0
  629. package/dist/toast/index.d.ts +3 -0
  630. package/dist/toast/index.d.ts.map +1 -0
  631. package/dist/toast/index.js +10 -0
  632. package/dist/utils/countries.cjs +17 -0
  633. package/dist/utils/countries.d.cts +14 -0
  634. package/dist/utils/country-utils.js +2 -2
  635. package/package.json +54 -18
  636. package/dist/components/ui/button/button.test.d.ts +0 -2
  637. package/dist/components/ui/button/button.test.d.ts.map +0 -1
  638. package/dist/components/ui/button/button.test.js +0 -65
  639. package/dist/components/ui/copy-field/copy-field.test.d.ts +0 -2
  640. package/dist/components/ui/copy-field/copy-field.test.d.ts.map +0 -1
  641. package/dist/components/ui/copy-field/copy-field.test.js +0 -268
  642. package/dist/components/ui/input/input.test.d.ts +0 -2
  643. package/dist/components/ui/input/input.test.d.ts.map +0 -1
  644. package/dist/components/ui/input/input.test.js +0 -52
  645. package/dist/components/ui/label/label.stories.d.ts +0 -5
  646. package/dist/components/ui/label/label.stories.d.ts.map +0 -1
  647. package/dist/components/ui/label/label.stories.js +0 -24
  648. package/dist/components/ui/qr-code/qr-code.test.d.ts +0 -2
  649. package/dist/components/ui/qr-code/qr-code.test.d.ts.map +0 -1
  650. package/dist/components/ui/qr-code/qr-code.test.js +0 -60
  651. package/dist/components/ui/sidebar/sidebar-provider.test.d.ts +0 -2
  652. package/dist/components/ui/sidebar/sidebar-provider.test.d.ts.map +0 -1
  653. package/dist/components/ui/sidebar/sidebar-provider.test.js +0 -170
  654. package/dist/hooks/use-click-away.test.d.ts +0 -2
  655. package/dist/hooks/use-click-away.test.d.ts.map +0 -1
  656. package/dist/hooks/use-click-away.test.js +0 -39
  657. package/dist/hooks/use-stepper.test.d.ts +0 -2
  658. package/dist/hooks/use-stepper.test.d.ts.map +0 -1
  659. package/dist/hooks/use-stepper.test.js +0 -45
@@ -0,0 +1,89 @@
1
+ 'use client';
2
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
3
+ /**
4
+ * DateRangePicker — a two-segment popover range control.
5
+ *
6
+ * Two labelled mono trigger segments (from / to) each open the SAME two-month
7
+ * react-day-picker range calendar over the same range selection. The external
8
+ * contract is plain YYYY-MM-DD strings (empty string = unset) so state shapes
9
+ * that speak `date_from`/`date_to` stay untouched. The picker guarantees
10
+ * from <= to (react-day-picker reorders inverted picks);
11
+ * aria-invalid/aria-describedby pass-throughs keep external validation wiring
12
+ * alive. i18n is via plain string/locale props.
13
+ *
14
+ * ONE POPOVER ROOT PER SEGMENT, deliberately. A single `Popover.Root` holds ONE
15
+ * trigger ref and ONE open state, so wrapping the whole two-button row in a
16
+ * single `PopoverTrigger asChild` put Radix's dialog attributes
17
+ * (`aria-haspopup`, `aria-expanded`, `aria-controls`) on a plain, non-focusable
18
+ * `div` — an aria-allowed-attr violation, two buttons advertising the same
19
+ * expanded state, and focus that Radix could drop on `document.body` when the
20
+ * popover closed. Each segment is now a real `PopoverTrigger` button: focusable,
21
+ * correctly named, and the element Radix returns focus to on dismissal.
22
+ */
23
+ import { useState } from 'react';
24
+ import { CalendarDays } from 'lucide-react';
25
+ import { enUS } from 'react-day-picker/locale';
26
+ import { Button } from '../../components/ui/button/index.js';
27
+ import { Calendar } from '../../components/ui/calendar/index.js';
28
+ import { Label } from '../../components/ui/label/index.js';
29
+ import { Popover, PopoverContent, PopoverTrigger } from '../../components/ui/popover/index.js';
30
+ import { SECTION_LABEL_CLASS } from '../../lib/typography.js';
31
+ import { cn } from '../../lib/utils.js';
32
+ /** Leading YYYY-MM-DD of an ISO date (or date-time) string. */
33
+ const ISO_DAY = /^(\d{4})-(\d{2})-(\d{2})/;
34
+ /**
35
+ * Parse a YYYY-MM-DD day into a LOCAL-midnight Date — the calendar works in
36
+ * local time, so building from parts avoids the UTC shift `new Date(string)`
37
+ * applies to date-only input (which can land the picker a day early).
38
+ * Rejects impossible calendar days (e.g. 2024-02-31, which would roll over).
39
+ */
40
+ function parseDay(value) {
41
+ const match = ISO_DAY.exec(value);
42
+ if (!match)
43
+ return undefined;
44
+ const year = Number(match[1]);
45
+ const month = Number(match[2]);
46
+ const day = Number(match[3]);
47
+ const parsed = new Date(year, month - 1, day);
48
+ return parsed.getFullYear() === year &&
49
+ parsed.getMonth() === month - 1 &&
50
+ parsed.getDate() === day
51
+ ? parsed
52
+ : undefined;
53
+ }
54
+ /** Format a Date back to YYYY-MM-DD in LOCAL time (never via toISOString). */
55
+ function toDayString(value) {
56
+ if (!value)
57
+ return '';
58
+ const year = String(value.getFullYear()).padStart(4, '0');
59
+ const month = String(value.getMonth() + 1).padStart(2, '0');
60
+ const day = String(value.getDate()).padStart(2, '0');
61
+ return `${year}-${month}-${day}`;
62
+ }
63
+ export function DateRangePicker({ value, onValueChange, fromId, toId, fromLabel, toLabel, invalid = false, errorId, placeholder = 'Any date', ariaLabel = 'Select date range', clearLabel = 'Clear', locale = enUS }) {
64
+ // Which segment's popover is open, if any. One root per segment means one open
65
+ // state per segment; holding the identity of the open one here keeps them
66
+ // mutually exclusive, so clicking "to" while "from" is open swaps the anchor
67
+ // instead of stacking two calendars.
68
+ const [openSegment, setOpenSegment] = useState(null);
69
+ const fromDate = parseDay(value.from);
70
+ const toDate = parseDay(value.to);
71
+ const selected = fromDate || toDate ? { from: fromDate, to: toDate } : undefined;
72
+ // Derived from the RAW strings, not the parsed dates: a value the calendar
73
+ // cannot parse still needs to be clearable, and gating Clear on `fromDate`
74
+ // would strand the field holding text the user can no longer remove.
75
+ const hasValue = value.from !== '' || value.to !== '';
76
+ const onSelect = (range) => {
77
+ onValueChange({
78
+ from: toDayString(range?.from),
79
+ to: toDayString(range?.to)
80
+ });
81
+ };
82
+ const triggerClass = 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');
83
+ // The one calendar, rendered inside whichever segment's popover is open. Both
84
+ // segments read and write the SAME range selection, so which one you opened
85
+ // changes only the anchor, never the state.
86
+ const calendar = (_jsxs(_Fragment, { children: [_jsx(Calendar, { mode: "range", numberOfMonths: 2, defaultMonth: fromDate ?? toDate ?? new Date(), selected: selected, onSelect: onSelect, locale: locale }), _jsx("div", { className: "border-border flex items-center justify-end border-t px-3 py-2", children: _jsx(Button, { type: "button", variant: "plain", size: "small", disabled: !hasValue, onClick: () => onValueChange({ from: '', to: '' }), children: clearLabel }) })] }));
87
+ const renderSegment = (segment, id, label, dateValue) => (_jsxs(Popover, { open: openSegment === segment, onOpenChange: (next) => setOpenSegment(next ? segment : null), children: [_jsxs("div", { className: "flex flex-col gap-1.5", children: [_jsx(Label, { htmlFor: id, className: SECTION_LABEL_CLASS, children: label }), _jsxs(PopoverTrigger, { type: "button", id: id, className: triggerClass, "aria-invalid": invalid || undefined, "aria-describedby": invalid ? errorId : undefined, children: [_jsx(CalendarDays, { className: "text-muted-foreground size-4 shrink-0", "aria-hidden": true }), dateValue ? (_jsx("span", { children: dateValue })) : (_jsx("span", { className: "text-muted-foreground font-sans", children: placeholder }))] })] }), _jsx(PopoverContent, { align: "start", className: "w-auto p-0", "aria-label": ariaLabel, children: calendar })] }, segment));
88
+ return (_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)] }));
89
+ }
@@ -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,17 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { X } from 'lucide-react';
4
+ import { Sheet, SheetClose, SheetContent, SheetTitle } from '../../components/ui/sheet/index.js';
5
+ import { cn } from '../../lib/utils.js';
6
+ /**
7
+ * The slide-over inspector. The header and footer stay pinned; only the body
8
+ * scrolls. Sheet already renders an overlay, focus trap, and Esc/overlay
9
+ * dismissal — we suppress its built-in corner close button (`[&>button.absolute]`)
10
+ * and provide our own inside the header so the layout stays deliberate.
11
+ */
12
+ export function DetailPanel({ open, onOpenChange, title, side = 'right', actions, footer, closeLabel = 'Close', children, className }) {
13
+ return (_jsx(Sheet, { open: open, onOpenChange: onOpenChange, children: _jsxs(SheetContent, { side: side, className: cn(
14
+ // Reset Sheet's padding/gap and hide its built-in close button; we
15
+ // own the three-slot layout and the header close affordance here.
16
+ 'flex flex-col gap-0 overflow-hidden p-0', '[&>button.absolute]:hidden', className), children: [_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: [_jsx(SheetTitle, { className: "min-w-0 flex-1 truncate text-base font-semibold tracking-tight", children: title }), _jsxs("div", { className: "flex shrink-0 items-center gap-1.5", children: [actions, _jsx(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: _jsx(X, { className: "size-4", "aria-hidden": true }) })] })] }), _jsx("div", { className: "min-h-0 flex-1 overflow-y-auto", children: _jsx("div", { className: "px-6 py-5", children: children }) }), footer ? (_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] }) }));
17
+ }
@@ -0,0 +1,32 @@
1
+ /**
2
+ * EmptyState: centered icon + title + optional description and action, for
3
+ * "no data yet" and "no results" surfaces. Keep copy short and neutral.
4
+ *
5
+ * The `ruled` flag is the "ruled page" presentation hook: instead of the
6
+ * floating centered card (which reads as a void inside a ledger register), it
7
+ * renders a quiet, top/left-aligned notation under a hairline rule — so a
8
+ * sparse register reads as ruled stationery waiting for entries rather than an
9
+ * empty pane. The icon bubble drops; the title takes the column-head label
10
+ * voice; the copy aligns to the page baseline. This is the seam a pre-ruled
11
+ * empty-rows register (built app-side) composes with: the EmptyState sits at
12
+ * the head of the page and the faint ruled lines fill below it.
13
+ */
14
+ import type { LucideIcon } from 'lucide-react';
15
+ import type { ReactNode } from 'react';
16
+ export type EmptyStateProps = {
17
+ /** Lucide icon component. Defaults to Inbox. */
18
+ icon?: LucideIcon;
19
+ title: string;
20
+ description?: string;
21
+ /** Optional action node (e.g. a Button). */
22
+ action?: ReactNode;
23
+ /**
24
+ * Render as a ruled-page notation rather than a centered card. Use inside a
25
+ * ledger register so a short/empty result set reads as ruled stationery, not
26
+ * a void. Pairs with the app-side pre-ruled empty-rows fill. Default off.
27
+ */
28
+ ruled?: boolean;
29
+ className?: string;
30
+ };
31
+ export declare function EmptyState({ icon: Icon, title, description, action, ruled, className }: EmptyStateProps): import("react").JSX.Element;
32
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/enterprise/empty-state/index.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAE9C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAKtC,MAAM,MAAM,eAAe,GAAG;IAC5B,gDAAgD;IAChD,IAAI,CAAC,EAAE,UAAU,CAAA;IACjB,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,4CAA4C;IAC5C,MAAM,CAAC,EAAE,SAAS,CAAA;IAClB;;;;OAIG;IACH,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,wBAAgB,UAAU,CAAC,EACzB,IAAI,EAAE,IAAY,EAClB,KAAK,EACL,WAAW,EACX,MAAM,EACN,KAAa,EACb,SAAS,EACV,EAAE,eAAe,+BA6CjB"}
@@ -0,0 +1,10 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Inbox } from 'lucide-react';
3
+ import { LABEL_VOICE_CLASS } from '../../lib/typography.js';
4
+ import { cn } from '../../lib/utils.js';
5
+ export function EmptyState({ icon: Icon = Inbox, title, description, action, ruled = false, className }) {
6
+ if (ruled) {
7
+ return (_jsxs("div", { "data-variant": "ruled", className: cn('border-border flex flex-col items-start gap-2 border-t px-3 py-6 text-left', className), children: [_jsxs("div", { className: "text-muted-foreground flex items-center gap-2", children: [_jsx(Icon, { className: "size-4", "aria-hidden": true }), _jsx("span", { className: LABEL_VOICE_CLASS, children: title })] }), description ? (_jsx("p", { className: "text-muted-foreground max-w-prose text-sm", children: description })) : null, action ? _jsx("div", { className: "mt-1", children: action }) : null] }));
8
+ }
9
+ return (_jsxs("div", { className: cn('flex flex-col items-center justify-center gap-3 px-6 py-16 text-center', className), children: [_jsx("div", { className: "bg-muted flex size-11 items-center justify-center rounded-full", children: _jsx(Icon, { className: "text-muted-foreground size-5", "aria-hidden": true }) }), _jsxs("div", { className: "space-y-1", children: [_jsx("p", { className: "text-foreground text-sm font-medium", children: title }), description ? (_jsx("p", { className: "text-muted-foreground mx-auto max-w-sm text-sm", children: description })) : null] }), action ? _jsx("div", { className: "mt-2", children: action }) : null] }));
10
+ }
@@ -0,0 +1,26 @@
1
+ export { AlertBanner } from './alert-banner/index.js';
2
+ export type { AlertBannerProps, AlertBannerTone } from './alert-banner/index.js';
3
+ export { AppShell } from './app-shell/index.js';
4
+ export type { AppShellProps } from './app-shell/index.js';
5
+ export { CursorPager } from './cursor-pager/index.js';
6
+ export type { CursorPagerProps } from './cursor-pager/index.js';
7
+ export { DataTable } from './data-table/index.js';
8
+ export type { DataTableProps } from './data-table/index.js';
9
+ export { DateRangePicker } from './date-range-picker/index.js';
10
+ export type { DateRangePickerProps, DateRangeValue } from './date-range-picker/index.js';
11
+ export { DetailPanel } from './detail-panel/index.js';
12
+ export type { DetailPanelProps } from './detail-panel/index.js';
13
+ export { EmptyState } from './empty-state/index.js';
14
+ export type { EmptyStateProps } from './empty-state/index.js';
15
+ export { NumberInput } from './number-input/index.js';
16
+ export type { NumberInputProps } from './number-input/index.js';
17
+ export { SearchInput } from './search-input/index.js';
18
+ export type { SearchInputProps } from './search-input/index.js';
19
+ export { StatCard } from './stat-card/index.js';
20
+ export type { StatCardProps, StatCardRow, StatCardTone } from './stat-card/index.js';
21
+ export { DEFAULT_STATUS_VARIANTS, StatusBadge } from './status-badge/index.js';
22
+ export type { StatusBadgeProps } from './status-badge/index.js';
23
+ export { VirtualizedTable } from './virtualized-table/index.js';
24
+ export type { VirtualizedTableProps } from './virtualized-table/index.js';
25
+ export { useIsMobile } from './use-is-mobile.js';
26
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/enterprise/index.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC5C,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAEvE,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AACtC,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAEhD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC5C,YAAY,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAEtD,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AACxC,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAElD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AACrD,YAAY,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAE/E,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC5C,YAAY,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAEtD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC1C,YAAY,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAEpD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC5C,YAAY,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAEtD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC5C,YAAY,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAEtD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AACtC,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAE3E,OAAO,EAAE,uBAAuB,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AACrE,YAAY,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAEtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AACtD,YAAY,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAEhE,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA"}
@@ -0,0 +1,22 @@
1
+ // Owned by lane enterprise — see docs/plans/2026-08-26-sindarian-x-retirement/
2
+ //
3
+ // The composed enterprise layer absorbed from @lerianstudio/sindarian-x@0.15.0.
4
+ // Outer public APIs are byte-compatible with that package; internals are
5
+ // recomposed over sindarian-ui primitives and its design tokens.
6
+ //
7
+ // Names already exported by sindarian-ui are NEVER re-exported here (FC-4):
8
+ // consumers adapt to sindarian-ui's API for Button, Badge, Table*, Sidebar*,
9
+ // EntityBox*, Stepper*, PageHeader, ConfirmationDialog and friends.
10
+ export { AlertBanner } from './alert-banner/index.js';
11
+ export { AppShell } from './app-shell/index.js';
12
+ export { CursorPager } from './cursor-pager/index.js';
13
+ export { DataTable } from './data-table/index.js';
14
+ export { DateRangePicker } from './date-range-picker/index.js';
15
+ export { DetailPanel } from './detail-panel/index.js';
16
+ export { EmptyState } from './empty-state/index.js';
17
+ export { NumberInput } from './number-input/index.js';
18
+ export { SearchInput } from './search-input/index.js';
19
+ export { StatCard } from './stat-card/index.js';
20
+ export { DEFAULT_STATUS_VARIANTS, StatusBadge } from './status-badge/index.js';
21
+ export { VirtualizedTable } from './virtualized-table/index.js';
22
+ export { useIsMobile } from './use-is-mobile.js';
@@ -0,0 +1,55 @@
1
+ /**
2
+ * NumberInput — a controlled numeric input with +/- steppers.
3
+ *
4
+ * Composes sindarian-ui's Input (the text field) and IconButton (the two
5
+ * steppers). The external contract is a plain `number | null` (null = empty).
6
+ * Steppers step by `step` and clamp the result to [min, max]. While focused the
7
+ * field shows the raw, editable string the user is typing; on blur it reformats
8
+ * the committed number via Intl.NumberFormat(locale, { maximumFractionDigits:
9
+ * precision }) (e.g. 1,234.50). Parsing always emits the raw number, so digits
10
+ * the user types are never silently rewritten mid-edit.
11
+ */
12
+ import * as React from 'react';
13
+ export type NumberInputProps = {
14
+ /** Committed value. `null` means the field is empty. */
15
+ value: number | null;
16
+ /** Fires on every edit and stepper press; `null` when the field is cleared. */
17
+ onValueChange: (next: number | null) => void;
18
+ min?: number;
19
+ max?: number;
20
+ /** Stepper increment. Defaults to 1. */
21
+ step?: number;
22
+ /** Fraction digits used for the blurred Intl.NumberFormat display. */
23
+ precision?: number;
24
+ /** BCP 47 locale tag for the blurred display. Defaults to the host's. */
25
+ locale?: string;
26
+ disabled?: boolean;
27
+ /** Accessible label for the field; also names the +/- buttons. */
28
+ 'aria-label'?: string;
29
+ /** Wired as aria-describedby on the input. */
30
+ 'aria-describedby'?: string;
31
+ /** id (and de-facto testid) for the input element. */
32
+ id?: string;
33
+ className?: string;
34
+ placeholder?: string;
35
+ };
36
+ /**
37
+ * Parse the editable string into a number, round-tripping the component's
38
+ * `locale`: strip the locale group separators, swap the locale decimal mark to
39
+ * '.', then `Number()`. Null when empty/unparseable.
40
+ *
41
+ * Internal (not part of the public barrel) but exported for its unit tests —
42
+ * numeric-entry correctness is the load-bearing behavior here.
43
+ */
44
+ export declare function parseRaw(raw: string, locale?: string): number | null;
45
+ /**
46
+ * A transient partial entry that should not commit yet — a lone sign, a lone
47
+ * decimal mark, sign+decimal, or a value ending in the decimal mark (the user
48
+ * is still typing). Suppressing these keeps the external value from
49
+ * round-tripping through `null` mid-edit.
50
+ *
51
+ * Internal (not part of the public barrel) but exported for its unit tests.
52
+ */
53
+ export declare function isTransientPartial(raw: string, locale?: string): boolean;
54
+ export declare function NumberInput({ value, onValueChange, min, max, step, precision, locale, disabled, id, className, placeholder, 'aria-label': ariaLabel, 'aria-describedby': ariaDescribedBy }: NumberInputProps): React.JSX.Element;
55
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/enterprise/number-input/index.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;GAUG;AACH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAO9B,MAAM,MAAM,gBAAgB,GAAG;IAC7B,wDAAwD;IACxD,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,+EAA+E;IAC/E,aAAa,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAA;IAC5C,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,wCAAwC;IACxC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,sEAAsE;IACtE,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,yEAAyE;IACzE,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,kEAAkE;IAClE,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,8CAA8C;IAC9C,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,sDAAsD;IACtD,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB,CAAA;AAmED;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAUpE;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAMxE;AAED,wBAAgB,WAAW,CAAC,EAC1B,KAAK,EACL,aAAa,EACb,GAAG,EACH,GAAG,EACH,IAAQ,EACR,SAAS,EACT,MAAM,EACN,QAAgB,EAChB,EAAE,EACF,SAAS,EACT,WAAW,EACX,YAAY,EAAE,SAAS,EACvB,kBAAkB,EAAE,eAAe,EACpC,EAAE,gBAAgB,qBAwIlB"}
@@ -0,0 +1,200 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ /**
4
+ * NumberInput — a controlled numeric input with +/- steppers.
5
+ *
6
+ * Composes sindarian-ui's Input (the text field) and IconButton (the two
7
+ * steppers). The external contract is a plain `number | null` (null = empty).
8
+ * Steppers step by `step` and clamp the result to [min, max]. While focused the
9
+ * field shows the raw, editable string the user is typing; on blur it reformats
10
+ * the committed number via Intl.NumberFormat(locale, { maximumFractionDigits:
11
+ * precision }) (e.g. 1,234.50). Parsing always emits the raw number, so digits
12
+ * the user types are never silently rewritten mid-edit.
13
+ */
14
+ import * as React from 'react';
15
+ import { Minus, Plus } from 'lucide-react';
16
+ import { IconButton } from '../../components/ui/icon-button/index.js';
17
+ import { Input } from '../../components/ui/input/index.js';
18
+ import { cn } from '../../lib/utils.js';
19
+ function clamp(value, min, max) {
20
+ let next = value;
21
+ if (typeof min === 'number' && next < min)
22
+ next = min;
23
+ if (typeof max === 'number' && next > max)
24
+ next = max;
25
+ return next;
26
+ }
27
+ /**
28
+ * `Number.prototype.toFixed` rejects more than 100 fraction digits. Denormals
29
+ * genuinely need more (`decimalPlaces(5e-324)` is 324), so this is a RangeError
30
+ * guard, not a precision policy — no step a person types comes close.
31
+ */
32
+ const MAX_FIXED_DIGITS = 100;
33
+ /**
34
+ * Fraction digits a number carries, reading exponent notation correctly.
35
+ * `String(1e-7)` is `'1e-7'`, which has no '.' at all, so counting characters
36
+ * after a decimal point reports 0 and silently kills any step below 1e-6.
37
+ * `toExponential()` gives a canonical mantissa/exponent pair instead:
38
+ * 1e-7 -> mantissa '1', exponent -7 -> 7 fraction digits.
39
+ */
40
+ function decimalPlaces(value) {
41
+ if (!Number.isFinite(value) || Number.isInteger(value))
42
+ return 0;
43
+ const [mantissa, exponent] = value.toExponential().split('e');
44
+ const mantissaDigits = (mantissa.split('.')[1] ?? '').length;
45
+ return Math.max(0, mantissaDigits - Number(exponent));
46
+ }
47
+ /**
48
+ * Snap a stepped result to the fraction digits its own operands carry, so
49
+ * binary float drift never escapes to the parent: stepping 0.1 by 0.2 must
50
+ * commit 0.3, not 0.30000000000000004.
51
+ *
52
+ * Anchoring on the OPERANDS is what makes this safe at both ends of the range.
53
+ * Rounding to a fixed number of significant digits cannot work: at 1e15 the
54
+ * 15th significant digit is the units place, so 1e15 + 0.5 would snap straight
55
+ * back to 1e15 and the stepper would die. Nor can a "is this change small
56
+ * enough to be noise?" tolerance decide it — 1e15 + 0.125 is exactly
57
+ * representable and must be kept, yet its relative distance from the rounded
58
+ * form (1.25e-16) is SMALLER than genuine drift in 0.1 + 0.2 (1.85e-16), so no
59
+ * threshold separates the two cases. The operands do: `1e15` and `0.5` need one
60
+ * fraction digit between them, `0.1` and `0.2` also one, and rounding each
61
+ * result to its own digit count keeps the first and repairs the second.
62
+ *
63
+ * `toFixed` (not `value * 10 ** digits`) does the rounding: the multiply
64
+ * overflows Number.MAX_SAFE_INTEGER for large values and hands back the very
65
+ * drift it was meant to remove.
66
+ */
67
+ function snapToStep(value, base, step) {
68
+ if (!Number.isFinite(value))
69
+ return value;
70
+ const digits = Math.min(MAX_FIXED_DIGITS, Math.max(decimalPlaces(base), decimalPlaces(step)));
71
+ return Number(value.toFixed(digits));
72
+ }
73
+ /** The locale's decimal and group separators, derived from a known sample. */
74
+ function localeSeparators(locale) {
75
+ const parts = new Intl.NumberFormat(locale).formatToParts(11111.1);
76
+ const decimal = parts.find((p) => p.type === 'decimal')?.value ?? '.';
77
+ const group = parts.find((p) => p.type === 'group')?.value ?? '';
78
+ return { decimal, group };
79
+ }
80
+ /**
81
+ * Parse the editable string into a number, round-tripping the component's
82
+ * `locale`: strip the locale group separators, swap the locale decimal mark to
83
+ * '.', then `Number()`. Null when empty/unparseable.
84
+ *
85
+ * Internal (not part of the public barrel) but exported for its unit tests —
86
+ * numeric-entry correctness is the load-bearing behavior here.
87
+ */
88
+ export function parseRaw(raw, locale) {
89
+ const trimmed = raw.trim();
90
+ if (trimmed === '')
91
+ return null;
92
+ const { decimal, group } = localeSeparators(locale);
93
+ let normalized = trimmed;
94
+ if (group)
95
+ normalized = normalized.split(group).join('');
96
+ if (decimal !== '.')
97
+ normalized = normalized.split(decimal).join('.');
98
+ if (normalized === '')
99
+ return null;
100
+ const parsed = Number(normalized);
101
+ return Number.isNaN(parsed) ? null : parsed;
102
+ }
103
+ /**
104
+ * A transient partial entry that should not commit yet — a lone sign, a lone
105
+ * decimal mark, sign+decimal, or a value ending in the decimal mark (the user
106
+ * is still typing). Suppressing these keeps the external value from
107
+ * round-tripping through `null` mid-edit.
108
+ *
109
+ * Internal (not part of the public barrel) but exported for its unit tests.
110
+ */
111
+ export function isTransientPartial(raw, locale) {
112
+ const trimmed = raw.trim();
113
+ if (trimmed === '')
114
+ return false;
115
+ const { decimal } = localeSeparators(locale);
116
+ const d = decimal.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
117
+ return new RegExp(`^-?(${d})?$|${d}$`).test(trimmed);
118
+ }
119
+ export function NumberInput({ value, onValueChange, min, max, step = 1, precision, locale, disabled = false, id, className, placeholder, 'aria-label': ariaLabel, 'aria-describedby': ariaDescribedBy }) {
120
+ const [focused, setFocused] = React.useState(false);
121
+ // The string the user is editing. Only authoritative while focused.
122
+ const [draft, setDraft] = React.useState('');
123
+ const formatter = React.useMemo(() => new Intl.NumberFormat(locale, {
124
+ maximumFractionDigits: precision ?? 20,
125
+ minimumFractionDigits: precision ?? 0,
126
+ useGrouping: true
127
+ }), [locale, precision]);
128
+ // Blurred display: locale-formatted committed value, or empty.
129
+ const displayValue = focused
130
+ ? draft
131
+ : value === null
132
+ ? ''
133
+ : formatter.format(value);
134
+ const commit = (next) => {
135
+ onValueChange(next);
136
+ };
137
+ const stepBy = (direction) => {
138
+ const base = value ?? 0;
139
+ // Snap FIRST, then clamp — never the other way round. Snapping rounds to
140
+ // the operands' fraction digits, so snapping a CLAMPED value rounds the
141
+ // bound itself: stepping 0.2 by 0.1 under max 0.25 clamps to 0.25, which
142
+ // then snaps to one digit as 0.3 and escapes the maximum. Clamping last
143
+ // makes the bound the final word, and `clamp` returns it verbatim, so a
144
+ // bound is emitted exactly as the caller gave it.
145
+ const next = clamp(snapToStep(base + direction * step, base, step), min, max);
146
+ commit(next);
147
+ // Seed the draft via the locale formatter so a stepper press doesn't flip
148
+ // the user's separators (e.g. ',' → '.').
149
+ if (focused)
150
+ setDraft(formatter.format(next));
151
+ };
152
+ const onChange = (event) => {
153
+ const raw = event.target.value;
154
+ setDraft(raw);
155
+ // Commit only a genuine clear or a parsed number; suppress transient
156
+ // partials ("-", ".", "-.", trailing separator) so typing a negative or
157
+ // decimal doesn't round-trip the external value through null mid-entry.
158
+ if (raw.trim() === '') {
159
+ commit(null);
160
+ return;
161
+ }
162
+ if (isTransientPartial(raw, locale))
163
+ return;
164
+ const parsed = parseRaw(raw, locale);
165
+ if (parsed !== null)
166
+ commit(parsed);
167
+ };
168
+ // Keyboard stepping (WCAG 2.1.1): the steppers are tabIndex={-1}, so the
169
+ // input owns keyboard interaction per the ARIA spinbutton pattern.
170
+ const onKeyDown = (event) => {
171
+ if (disabled)
172
+ return;
173
+ if (event.key === 'ArrowUp') {
174
+ event.preventDefault();
175
+ stepBy(1);
176
+ }
177
+ else if (event.key === 'ArrowDown') {
178
+ event.preventDefault();
179
+ stepBy(-1);
180
+ }
181
+ };
182
+ const onFocus = () => {
183
+ setFocused(true);
184
+ // Seed via the locale formatter (not String(value), which forces '.') so
185
+ // focusing doesn't flip the separator the user expects.
186
+ setDraft(value === null ? '' : formatter.format(value));
187
+ };
188
+ const onBlur = () => {
189
+ setFocused(false);
190
+ // Re-clamp the committed value so a typed out-of-range entry settles.
191
+ if (value !== null) {
192
+ const clamped = clamp(value, min, max);
193
+ if (clamped !== value)
194
+ commit(clamped);
195
+ }
196
+ };
197
+ const atMin = typeof min === 'number' && value !== null && value <= min;
198
+ const atMax = typeof max === 'number' && value !== null && value >= max;
199
+ return (_jsxs("div", { className: cn('inline-flex items-stretch gap-1', className), children: [_jsx(IconButton, { type: "button", variant: "outline", disabled: disabled || atMin, "aria-label": `Decrease${ariaLabel ? ` ${ariaLabel}` : ''}`, onClick: () => stepBy(-1), tabIndex: -1, children: _jsx(Minus, { className: "size-4", "aria-hidden": true }) }), _jsx("div", { className: "w-28", children: _jsx(Input, { id: id, inputMode: "decimal", role: "spinbutton", "aria-valuenow": value ?? undefined, "aria-valuemin": min, "aria-valuemax": max, className: "text-right tabular-nums", value: displayValue, placeholder: placeholder, disabled: disabled, "aria-label": ariaLabel, "aria-describedby": ariaDescribedBy, onChange: onChange, onKeyDown: onKeyDown, onFocus: onFocus, onBlur: onBlur }) }), _jsx(IconButton, { type: "button", variant: "outline", disabled: disabled || atMax, "aria-label": `Increase${ariaLabel ? ` ${ariaLabel}` : ''}`, onClick: () => stepBy(1), tabIndex: -1, children: _jsx(Plus, { className: "size-4", "aria-hidden": true }) })] }));
200
+ }
@@ -0,0 +1,32 @@
1
+ /**
2
+ * SearchInput — the console filter row's text field.
3
+ *
4
+ * A controlled text field with a leading search glyph and a trailing clear
5
+ * button that appears only when there is text. It debounces the *emission*
6
+ * (`onValueChange`) while keeping the visible field perfectly responsive: a
7
+ * local draft mirrors the controlled `value`, every keystroke updates the draft
8
+ * immediately, and a trailing timer flushes the draft to the parent after
9
+ * `debounceMs`. Clearing flushes synchronously (no lingering timer fighting an
10
+ * explicit empty).
11
+ *
12
+ * Composes sindarian-ui's Input via its start/end adornment slots.
13
+ */
14
+ import * as React from 'react';
15
+ export type SearchInputProps = {
16
+ /** Controlled value. The visible field mirrors this between keystrokes. */
17
+ value: string;
18
+ /** Debounced emission of the current text. */
19
+ onValueChange: (value: string) => void;
20
+ /** Trailing debounce in ms before `onValueChange` fires. Default 250. */
21
+ debounceMs?: number;
22
+ placeholder?: string;
23
+ /** Accessible label for the field (defaults to the placeholder or "Search"). */
24
+ 'aria-label'?: string;
25
+ /** Accessible label for the clear button. */
26
+ clearLabel?: string;
27
+ disabled?: boolean;
28
+ className?: string;
29
+ id?: string;
30
+ };
31
+ export declare function SearchInput({ value, onValueChange, debounceMs, placeholder, 'aria-label': ariaLabel, clearLabel, disabled, className, id }: SearchInputProps): React.JSX.Element;
32
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/enterprise/search-input/index.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;GAYG;AACH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAa9B,MAAM,MAAM,gBAAgB,GAAG;IAC7B,2EAA2E;IAC3E,KAAK,EAAE,MAAM,CAAA;IACb,8CAA8C;IAC9C,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACtC,yEAAyE;IACzE,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,gFAAgF;IAChF,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,6CAA6C;IAC7C,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,EAAE,CAAC,EAAE,MAAM,CAAA;CACZ,CAAA;AAED,wBAAgB,WAAW,CAAC,EAC1B,KAAK,EACL,aAAa,EACb,UAAgB,EAChB,WAAuB,EACvB,YAAY,EAAE,SAAS,EACvB,UAA2B,EAC3B,QAAgB,EAChB,SAAS,EACT,EAAE,EACH,EAAE,gBAAgB,qBAsGlB"}