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

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 (657) 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 +29 -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/file-upload/index.d.ts +94 -0
  33. package/dist/components/ui/file-upload/index.d.ts.map +1 -0
  34. package/dist/components/ui/file-upload/index.js +230 -0
  35. package/dist/components/ui/hover-card/index.d.ts +7 -0
  36. package/dist/components/ui/hover-card/index.d.ts.map +1 -0
  37. package/dist/components/ui/hover-card/index.js +51 -0
  38. package/dist/components/ui/input/index.js +2 -2
  39. package/dist/components/ui/otp-input/index.d.ts.map +1 -1
  40. package/dist/components/ui/otp-input/index.js +1 -1
  41. package/dist/components/ui/radio-group/index.d.ts +6 -0
  42. package/dist/components/ui/radio-group/index.d.ts.map +1 -0
  43. package/dist/components/ui/radio-group/index.js +48 -0
  44. package/dist/components/ui/scroll-area/index.d.ts +6 -0
  45. package/dist/components/ui/scroll-area/index.d.ts.map +1 -0
  46. package/dist/components/ui/scroll-area/index.js +49 -0
  47. package/dist/components/ui/sidebar/index.d.ts +1 -0
  48. package/dist/components/ui/sidebar/index.d.ts.map +1 -1
  49. package/dist/components/ui/sidebar/index.js +1 -0
  50. package/dist/components/ui/sidebar/next-router.cjs +44 -0
  51. package/dist/components/ui/sidebar/next-router.d.cts +7 -0
  52. package/dist/components/ui/sidebar/sidebar-item-button.d.ts +2 -2
  53. package/dist/components/ui/sidebar/sidebar-item-button.d.ts.map +1 -1
  54. package/dist/components/ui/sidebar/sidebar-item-button.js +3 -5
  55. package/dist/components/ui/sidebar/sidebar-item-icon-button.d.ts +2 -2
  56. package/dist/components/ui/sidebar/sidebar-item-icon-button.d.ts.map +1 -1
  57. package/dist/components/ui/sidebar/sidebar-item-icon-button.js +3 -5
  58. package/dist/components/ui/sidebar/sidebar-item.d.ts.map +1 -1
  59. package/dist/components/ui/sidebar/sidebar-item.js +3 -2
  60. package/dist/components/ui/sidebar/sidebar-router.d.ts +82 -0
  61. package/dist/components/ui/sidebar/sidebar-router.d.ts.map +1 -0
  62. package/dist/components/ui/sidebar/sidebar-router.js +126 -0
  63. package/dist/components/ui/toast/index.d.ts +1 -1
  64. package/dist/components/ui/toast/index.d.ts.map +1 -1
  65. package/dist/components/ui/toggle-group/index.d.ts +18 -0
  66. package/dist/components/ui/toggle-group/index.d.ts.map +1 -0
  67. package/dist/components/ui/toggle-group/index.js +87 -0
  68. package/dist/domain/blotter/index.d.ts +40 -0
  69. package/dist/domain/blotter/index.d.ts.map +1 -0
  70. package/dist/domain/blotter/index.js +16 -0
  71. package/dist/domain/delinquency-aging/aging-buckets.d.ts +37 -0
  72. package/dist/domain/delinquency-aging/aging-buckets.d.ts.map +1 -0
  73. package/dist/domain/delinquency-aging/aging-buckets.js +97 -0
  74. package/dist/domain/delinquency-aging/index.d.ts +52 -0
  75. package/dist/domain/delinquency-aging/index.d.ts.map +1 -0
  76. package/dist/domain/delinquency-aging/index.js +151 -0
  77. package/dist/domain/figure/index.d.ts +30 -0
  78. package/dist/domain/figure/index.d.ts.map +1 -0
  79. package/dist/domain/figure/index.js +18 -0
  80. package/dist/domain/format.d.ts +57 -0
  81. package/dist/domain/format.d.ts.map +1 -0
  82. package/dist/domain/format.js +102 -0
  83. package/dist/domain/index.d.ts +22 -0
  84. package/dist/domain/index.d.ts.map +1 -0
  85. package/dist/domain/index.js +43 -0
  86. package/dist/domain/key-id/index.d.ts +31 -0
  87. package/dist/domain/key-id/index.d.ts.map +1 -0
  88. package/dist/domain/key-id/index.js +167 -0
  89. package/dist/domain/ledger-sheet/index.d.ts +45 -0
  90. package/dist/domain/ledger-sheet/index.d.ts.map +1 -0
  91. package/dist/domain/ledger-sheet/index.js +28 -0
  92. package/dist/domain/money-diff.d.ts +23 -0
  93. package/dist/domain/money-diff.d.ts.map +1 -0
  94. package/dist/domain/money-diff.js +48 -0
  95. package/dist/domain/money-math.d.ts +32 -0
  96. package/dist/domain/money-math.d.ts.map +1 -0
  97. package/dist/domain/money-math.js +104 -0
  98. package/dist/domain/money-text/index.d.ts +37 -0
  99. package/dist/domain/money-text/index.d.ts.map +1 -0
  100. package/dist/domain/money-text/index.js +113 -0
  101. package/dist/domain/section-label/index.d.ts +21 -0
  102. package/dist/domain/section-label/index.d.ts.map +1 -0
  103. package/dist/domain/section-label/index.js +9 -0
  104. package/dist/domain/status-rail/index.d.ts +40 -0
  105. package/dist/domain/status-rail/index.d.ts.map +1 -0
  106. package/dist/domain/status-rail/index.js +64 -0
  107. package/dist/domain/threshold-gauge/index.d.ts +84 -0
  108. package/dist/domain/threshold-gauge/index.d.ts.map +1 -0
  109. package/dist/domain/threshold-gauge/index.js +157 -0
  110. package/dist/enterprise/alert-banner/index.d.ts +30 -0
  111. package/dist/enterprise/alert-banner/index.d.ts.map +1 -0
  112. package/dist/enterprise/alert-banner/index.js +24 -0
  113. package/dist/enterprise/app-shell/index.d.ts +61 -0
  114. package/dist/enterprise/app-shell/index.d.ts.map +1 -0
  115. package/dist/enterprise/app-shell/index.js +87 -0
  116. package/dist/enterprise/cursor-pager/index.d.ts +21 -0
  117. package/dist/enterprise/cursor-pager/index.d.ts.map +1 -0
  118. package/dist/enterprise/cursor-pager/index.js +26 -0
  119. package/dist/enterprise/data-table/index.d.ts +88 -0
  120. package/dist/enterprise/data-table/index.d.ts.map +1 -0
  121. package/dist/enterprise/data-table/index.js +245 -0
  122. package/dist/enterprise/date-range-picker/index.d.ts +37 -0
  123. package/dist/enterprise/date-range-picker/index.d.ts.map +1 -0
  124. package/dist/enterprise/date-range-picker/index.js +74 -0
  125. package/dist/enterprise/detail-panel/index.d.ts +54 -0
  126. package/dist/enterprise/detail-panel/index.d.ts.map +1 -0
  127. package/dist/enterprise/detail-panel/index.js +20 -0
  128. package/dist/enterprise/empty-state/index.d.ts +32 -0
  129. package/dist/enterprise/empty-state/index.d.ts.map +1 -0
  130. package/dist/enterprise/empty-state/index.js +13 -0
  131. package/dist/enterprise/index.d.ts +26 -0
  132. package/dist/enterprise/index.d.ts.map +1 -0
  133. package/dist/enterprise/index.js +39 -0
  134. package/dist/enterprise/number-input/index.d.ts +55 -0
  135. package/dist/enterprise/number-input/index.d.ts.map +1 -0
  136. package/dist/enterprise/number-input/index.js +238 -0
  137. package/dist/enterprise/search-input/index.d.ts +32 -0
  138. package/dist/enterprise/search-input/index.d.ts.map +1 -0
  139. package/dist/enterprise/search-input/index.js +114 -0
  140. package/dist/enterprise/stat-card/index.d.ts +43 -0
  141. package/dist/enterprise/stat-card/index.d.ts.map +1 -0
  142. package/dist/enterprise/stat-card/index.js +67 -0
  143. package/dist/enterprise/status-badge/index.d.ts +31 -0
  144. package/dist/enterprise/status-badge/index.d.ts.map +1 -0
  145. package/dist/enterprise/status-badge/index.js +120 -0
  146. package/dist/enterprise/use-is-mobile.d.ts +11 -0
  147. package/dist/enterprise/use-is-mobile.d.ts.map +1 -0
  148. package/dist/enterprise/use-is-mobile.js +59 -0
  149. package/dist/enterprise/virtualized-table/index.d.ts +26 -0
  150. package/dist/enterprise/virtualized-table/index.d.ts.map +1 -0
  151. package/dist/enterprise/virtualized-table/index.js +114 -0
  152. package/dist/esm/charts/chart.d.ts +64 -0
  153. package/dist/esm/charts/chart.d.ts.map +1 -0
  154. package/dist/esm/charts/chart.js +191 -0
  155. package/dist/esm/charts/index.d.ts +3 -0
  156. package/dist/esm/charts/index.d.ts.map +1 -0
  157. package/dist/esm/charts/index.js +3 -0
  158. package/dist/esm/components/breadcrumb/get-breadcrumb-paths.d.ts +10 -0
  159. package/dist/esm/components/breadcrumb/get-breadcrumb-paths.d.ts.map +1 -0
  160. package/dist/esm/components/breadcrumb/get-breadcrumb-paths.js +12 -0
  161. package/dist/esm/components/breadcrumb/index.d.ts +11 -0
  162. package/dist/esm/components/breadcrumb/index.d.ts.map +1 -0
  163. package/dist/esm/components/breadcrumb/index.js +6 -0
  164. package/dist/esm/components/card/account-card/index.d.ts +32 -0
  165. package/dist/esm/components/card/account-card/index.d.ts.map +1 -0
  166. package/dist/esm/components/card/account-card/index.js +53 -0
  167. package/dist/esm/components/card/basic-card/index.d.ts +6 -0
  168. package/dist/esm/components/card/basic-card/index.d.ts.map +1 -0
  169. package/dist/esm/components/card/basic-card/index.js +14 -0
  170. package/dist/esm/components/card/dashboard-card/index.d.ts +5 -0
  171. package/dist/esm/components/card/dashboard-card/index.d.ts.map +1 -0
  172. package/dist/esm/components/card/dashboard-card/index.js +14 -0
  173. package/dist/esm/components/card/entity-card/index.d.ts +22 -0
  174. package/dist/esm/components/card/entity-card/index.d.ts.map +1 -0
  175. package/dist/esm/components/card/entity-card/index.js +48 -0
  176. package/dist/esm/components/card/index.d.ts +5 -0
  177. package/dist/esm/components/card/index.d.ts.map +1 -0
  178. package/dist/esm/components/card/index.js +4 -0
  179. package/dist/esm/components/dialog/confirmation-dialog/index.d.ts +16 -0
  180. package/dist/esm/components/dialog/confirmation-dialog/index.d.ts.map +1 -0
  181. package/dist/esm/components/dialog/confirmation-dialog/index.js +25 -0
  182. package/dist/esm/components/dialog/confirmation-dialog/use-confirm-dialog.d.ts +31 -0
  183. package/dist/esm/components/dialog/confirmation-dialog/use-confirm-dialog.d.ts.map +1 -0
  184. package/dist/esm/components/dialog/confirmation-dialog/use-confirm-dialog.js +49 -0
  185. package/dist/esm/components/dialog/index.d.ts +4 -0
  186. package/dist/esm/components/dialog/index.d.ts.map +1 -0
  187. package/dist/esm/components/dialog/index.js +3 -0
  188. package/dist/esm/components/dialog/large-dialog/index.d.ts +11 -0
  189. package/dist/esm/components/dialog/large-dialog/index.d.ts.map +1 -0
  190. package/dist/esm/components/dialog/large-dialog/index.js +16 -0
  191. package/dist/esm/components/entity-box/index.d.ts +17 -0
  192. package/dist/esm/components/entity-box/index.d.ts.map +1 -0
  193. package/dist/esm/components/entity-box/index.js +31 -0
  194. package/dist/esm/components/entity-data-table/index.d.ts +17 -0
  195. package/dist/esm/components/entity-data-table/index.d.ts.map +1 -0
  196. package/dist/esm/components/entity-data-table/index.js +17 -0
  197. package/dist/esm/components/form/combo-box-field/index.d.ts +14 -0
  198. package/dist/esm/components/form/combo-box-field/index.d.ts.map +1 -0
  199. package/dist/esm/components/form/combo-box-field/index.js +28 -0
  200. package/dist/esm/components/form/country-field/index.d.ts +5 -0
  201. package/dist/esm/components/form/country-field/index.d.ts.map +1 -0
  202. package/dist/esm/components/form/country-field/index.js +7 -0
  203. package/dist/esm/components/form/date-picker-field/index.d.ts +21 -0
  204. package/dist/esm/components/form/date-picker-field/index.d.ts.map +1 -0
  205. package/dist/esm/components/form/date-picker-field/index.js +38 -0
  206. package/dist/esm/components/form/date-range-field/index.d.ts +21 -0
  207. package/dist/esm/components/form/date-range-field/index.d.ts.map +1 -0
  208. package/dist/esm/components/form/date-range-field/index.js +17 -0
  209. package/dist/esm/components/form/date-time-picker-field/index.d.ts +23 -0
  210. package/dist/esm/components/form/date-time-picker-field/index.d.ts.map +1 -0
  211. package/dist/esm/components/form/date-time-picker-field/index.js +73 -0
  212. package/dist/esm/components/form/file-upload-field/index.d.ts +52 -0
  213. package/dist/esm/components/form/file-upload-field/index.d.ts.map +1 -0
  214. package/dist/esm/components/form/file-upload-field/index.js +46 -0
  215. package/dist/esm/components/form/index.d.ts +16 -0
  216. package/dist/esm/components/form/index.d.ts.map +1 -0
  217. package/dist/esm/components/form/index.js +15 -0
  218. package/dist/esm/components/form/input-field/index.d.ts +26 -0
  219. package/dist/esm/components/form/input-field/index.d.ts.map +1 -0
  220. package/dist/esm/components/form/input-field/index.js +10 -0
  221. package/dist/esm/components/form/otp-field/index.d.ts +18 -0
  222. package/dist/esm/components/form/otp-field/index.d.ts.map +1 -0
  223. package/dist/esm/components/form/otp-field/index.js +15 -0
  224. package/dist/esm/components/form/pagination-limit-field/index.d.ts +9 -0
  225. package/dist/esm/components/form/pagination-limit-field/index.d.ts.map +1 -0
  226. package/dist/esm/components/form/pagination-limit-field/index.js +6 -0
  227. package/dist/esm/components/form/password-field/index.d.ts +14 -0
  228. package/dist/esm/components/form/password-field/index.d.ts.map +1 -0
  229. package/dist/esm/components/form/password-field/index.js +10 -0
  230. package/dist/esm/components/form/radio-group-field/index.d.ts +32 -0
  231. package/dist/esm/components/form/radio-group-field/index.d.ts.map +1 -0
  232. package/dist/esm/components/form/radio-group-field/index.js +25 -0
  233. package/dist/esm/components/form/renderable-label.d.ts +35 -0
  234. package/dist/esm/components/form/renderable-label.d.ts.map +1 -0
  235. package/dist/esm/components/form/renderable-label.js +54 -0
  236. package/dist/esm/components/form/select-field/index.d.ts +20 -0
  237. package/dist/esm/components/form/select-field/index.d.ts.map +1 -0
  238. package/dist/esm/components/form/select-field/index.js +16 -0
  239. package/dist/esm/components/form/state-field/index.d.ts +10 -0
  240. package/dist/esm/components/form/state-field/index.d.ts.map +1 -0
  241. package/dist/esm/components/form/state-field/index.js +35 -0
  242. package/dist/esm/components/form/switch-field/index.d.ts +15 -0
  243. package/dist/esm/components/form/switch-field/index.d.ts.map +1 -0
  244. package/dist/esm/components/form/switch-field/index.js +7 -0
  245. package/dist/esm/components/form/textarea-field/index.d.ts +31 -0
  246. package/dist/esm/components/form/textarea-field/index.d.ts.map +1 -0
  247. package/dist/esm/components/form/textarea-field/index.js +19 -0
  248. package/dist/esm/components/page/index.d.ts +4 -0
  249. package/dist/esm/components/page/index.d.ts.map +1 -0
  250. package/dist/esm/components/page/index.js +11 -0
  251. package/dist/esm/components/page-header/index.d.ts +33 -0
  252. package/dist/esm/components/page-header/index.d.ts.map +1 -0
  253. package/dist/esm/components/page-header/index.js +40 -0
  254. package/dist/esm/components/pagination/index.d.ts +8 -0
  255. package/dist/esm/components/pagination/index.d.ts.map +1 -0
  256. package/dist/esm/components/pagination/index.js +6 -0
  257. package/dist/esm/components/table/id-table-cell.d.ts +7 -0
  258. package/dist/esm/components/table/id-table-cell.d.ts.map +1 -0
  259. package/dist/esm/components/table/id-table-cell.js +12 -0
  260. package/dist/esm/components/table/index.d.ts +3 -0
  261. package/dist/esm/components/table/index.d.ts.map +1 -0
  262. package/dist/esm/components/table/index.js +2 -0
  263. package/dist/esm/components/table/locked-table-actions.d.ts +7 -0
  264. package/dist/esm/components/table/locked-table-actions.d.ts.map +1 -0
  265. package/dist/esm/components/table/locked-table-actions.js +7 -0
  266. package/dist/esm/components/table/name-table-cell.d.ts +6 -0
  267. package/dist/esm/components/table/name-table-cell.d.ts.map +1 -0
  268. package/dist/esm/components/table/name-table-cell.js +6 -0
  269. package/dist/esm/components/ui/accordion/index.d.ts +14 -0
  270. package/dist/esm/components/ui/accordion/index.d.ts.map +1 -0
  271. package/dist/esm/components/ui/accordion/index.js +24 -0
  272. package/dist/esm/components/ui/alert/index.d.ts +15 -0
  273. package/dist/esm/components/ui/alert/index.d.ts.map +1 -0
  274. package/dist/esm/components/ui/alert/index.js +38 -0
  275. package/dist/esm/components/ui/alert-dialog/index.d.ts +15 -0
  276. package/dist/esm/components/ui/alert-dialog/index.d.ts.map +1 -0
  277. package/dist/esm/components/ui/alert-dialog/index.js +39 -0
  278. package/dist/esm/components/ui/autocomplete/index.d.ts +54 -0
  279. package/dist/esm/components/ui/autocomplete/index.d.ts.map +1 -0
  280. package/dist/esm/components/ui/autocomplete/index.js +276 -0
  281. package/dist/esm/components/ui/autosize-textarea/index.d.ts +15 -0
  282. package/dist/esm/components/ui/autosize-textarea/index.d.ts.map +1 -0
  283. package/dist/esm/components/ui/autosize-textarea/index.js +51 -0
  284. package/dist/esm/components/ui/avatar/index.d.ts +7 -0
  285. package/dist/esm/components/ui/avatar/index.d.ts.map +1 -0
  286. package/dist/esm/components/ui/avatar/index.js +14 -0
  287. package/dist/esm/components/ui/badge/index.d.ts +11 -0
  288. package/dist/esm/components/ui/badge/index.d.ts.map +1 -0
  289. package/dist/esm/components/ui/badge/index.js +29 -0
  290. package/dist/esm/components/ui/breadcrumb/index.d.ts +12 -0
  291. package/dist/esm/components/ui/breadcrumb/index.d.ts.map +1 -0
  292. package/dist/esm/components/ui/breadcrumb/index.js +27 -0
  293. package/dist/esm/components/ui/button/index.d.ts +22 -0
  294. package/dist/esm/components/ui/button/index.d.ts.map +1 -0
  295. package/dist/esm/components/ui/button/index.js +59 -0
  296. package/dist/esm/components/ui/calendar/index.d.ts +9 -0
  297. package/dist/esm/components/ui/calendar/index.d.ts.map +1 -0
  298. package/dist/esm/components/ui/calendar/index.js +79 -0
  299. package/dist/esm/components/ui/card/index.d.ts +10 -0
  300. package/dist/esm/components/ui/card/index.d.ts.map +1 -0
  301. package/dist/esm/components/ui/card/index.js +24 -0
  302. package/dist/esm/components/ui/checkbox/index.d.ts +5 -0
  303. package/dist/esm/components/ui/checkbox/index.d.ts.map +1 -0
  304. package/dist/esm/components/ui/checkbox/index.js +9 -0
  305. package/dist/esm/components/ui/collapsible/index.d.ts +6 -0
  306. package/dist/esm/components/ui/collapsible/index.d.ts.map +1 -0
  307. package/dist/esm/components/ui/collapsible/index.js +13 -0
  308. package/dist/esm/components/ui/command/index.d.ts +14 -0
  309. package/dist/esm/components/ui/command/index.d.ts.map +1 -0
  310. package/dist/esm/components/ui/command/index.js +51 -0
  311. package/dist/esm/components/ui/copy-field/index.d.ts +56 -0
  312. package/dist/esm/components/ui/copy-field/index.d.ts.map +1 -0
  313. package/dist/esm/components/ui/copy-field/index.js +114 -0
  314. package/dist/esm/components/ui/dialog/index.d.ts +16 -0
  315. package/dist/esm/components/ui/dialog/index.d.ts.map +1 -0
  316. package/dist/esm/components/ui/dialog/index.js +36 -0
  317. package/dist/esm/components/ui/dropdown-menu/index.d.ts +27 -0
  318. package/dist/esm/components/ui/dropdown-menu/index.d.ts.map +1 -0
  319. package/dist/esm/components/ui/dropdown-menu/index.js +57 -0
  320. package/dist/esm/components/ui/field/index.d.ts +25 -0
  321. package/dist/esm/components/ui/field/index.d.ts.map +1 -0
  322. package/dist/esm/components/ui/field/index.js +68 -0
  323. package/dist/esm/components/ui/file-upload/index.d.ts +94 -0
  324. package/dist/esm/components/ui/file-upload/index.d.ts.map +1 -0
  325. package/dist/esm/components/ui/file-upload/index.js +193 -0
  326. package/dist/esm/components/ui/form.d.ts +39 -0
  327. package/dist/esm/components/ui/form.d.ts.map +1 -0
  328. package/dist/esm/components/ui/form.js +67 -0
  329. package/dist/esm/components/ui/hover-card/index.d.ts +7 -0
  330. package/dist/esm/components/ui/hover-card/index.d.ts.map +1 -0
  331. package/dist/esm/components/ui/hover-card/index.js +14 -0
  332. package/dist/esm/components/ui/icon-button/index.d.ts +13 -0
  333. package/dist/esm/components/ui/icon-button/index.d.ts.map +1 -0
  334. package/dist/esm/components/ui/icon-button/index.js +31 -0
  335. package/dist/esm/components/ui/input/adornment.d.ts +9 -0
  336. package/dist/esm/components/ui/input/adornment.d.ts.map +1 -0
  337. package/dist/esm/components/ui/input/adornment.js +17 -0
  338. package/dist/esm/components/ui/input/index.d.ts +18 -0
  339. package/dist/esm/components/ui/input/index.d.ts.map +1 -0
  340. package/dist/esm/components/ui/input/index.js +60 -0
  341. package/dist/esm/components/ui/label/index.d.ts +7 -0
  342. package/dist/esm/components/ui/label/index.d.ts.map +1 -0
  343. package/dist/esm/components/ui/label/index.js +10 -0
  344. package/dist/esm/components/ui/loading-button/index.d.ts +8 -0
  345. package/dist/esm/components/ui/loading-button/index.d.ts.map +1 -0
  346. package/dist/esm/components/ui/loading-button/index.js +7 -0
  347. package/dist/esm/components/ui/multiple-select/index.d.ts +91 -0
  348. package/dist/esm/components/ui/multiple-select/index.d.ts.map +1 -0
  349. package/dist/esm/components/ui/multiple-select/index.js +196 -0
  350. package/dist/esm/components/ui/otp-input/index.d.ts +13 -0
  351. package/dist/esm/components/ui/otp-input/index.d.ts.map +1 -0
  352. package/dist/esm/components/ui/otp-input/index.js +21 -0
  353. package/dist/esm/components/ui/paper/index.d.ts +4 -0
  354. package/dist/esm/components/ui/paper/index.d.ts.map +1 -0
  355. package/dist/esm/components/ui/paper/index.js +5 -0
  356. package/dist/esm/components/ui/paper-collapsible/index.d.ts +9 -0
  357. package/dist/esm/components/ui/paper-collapsible/index.d.ts.map +1 -0
  358. package/dist/esm/components/ui/paper-collapsible/index.js +19 -0
  359. package/dist/esm/components/ui/popover/index.d.ts +8 -0
  360. package/dist/esm/components/ui/popover/index.d.ts.map +1 -0
  361. package/dist/esm/components/ui/popover/index.js +17 -0
  362. package/dist/esm/components/ui/progress/index.d.ts +8 -0
  363. package/dist/esm/components/ui/progress/index.d.ts.map +1 -0
  364. package/dist/esm/components/ui/progress/index.js +8 -0
  365. package/dist/esm/components/ui/qr-code/index.d.ts +26 -0
  366. package/dist/esm/components/ui/qr-code/index.d.ts.map +1 -0
  367. package/dist/esm/components/ui/qr-code/index.js +24 -0
  368. package/dist/esm/components/ui/radio-group/index.d.ts +6 -0
  369. package/dist/esm/components/ui/radio-group/index.d.ts.map +1 -0
  370. package/dist/esm/components/ui/radio-group/index.js +12 -0
  371. package/dist/esm/components/ui/scroll-area/index.d.ts +6 -0
  372. package/dist/esm/components/ui/scroll-area/index.d.ts.map +1 -0
  373. package/dist/esm/components/ui/scroll-area/index.js +13 -0
  374. package/dist/esm/components/ui/select/index.d.ts +18 -0
  375. package/dist/esm/components/ui/select/index.d.ts.map +1 -0
  376. package/dist/esm/components/ui/select/index.js +47 -0
  377. package/dist/esm/components/ui/separator/index.d.ts +5 -0
  378. package/dist/esm/components/ui/separator/index.d.ts.map +1 -0
  379. package/dist/esm/components/ui/separator/index.js +8 -0
  380. package/dist/esm/components/ui/sheet/index.d.ts +19 -0
  381. package/dist/esm/components/ui/sheet/index.d.ts.map +1 -0
  382. package/dist/esm/components/ui/sheet/index.js +59 -0
  383. package/dist/esm/components/ui/sidebar/index.d.ts +11 -0
  384. package/dist/esm/components/ui/sidebar/index.d.ts.map +1 -0
  385. package/dist/esm/components/ui/sidebar/index.js +10 -0
  386. package/dist/esm/components/ui/sidebar/next-router.cjs +44 -0
  387. package/dist/esm/components/ui/sidebar/next-router.d.cts +7 -0
  388. package/dist/esm/components/ui/sidebar/sidebar-back-button.d.ts +3 -0
  389. package/dist/esm/components/ui/sidebar/sidebar-back-button.d.ts.map +1 -0
  390. package/dist/esm/components/ui/sidebar/sidebar-back-button.js +5 -0
  391. package/dist/esm/components/ui/sidebar/sidebar-components.d.ts +23 -0
  392. package/dist/esm/components/ui/sidebar/sidebar-components.d.ts.map +1 -0
  393. package/dist/esm/components/ui/sidebar/sidebar-components.js +15 -0
  394. package/dist/esm/components/ui/sidebar/sidebar-expand-button.d.ts +7 -0
  395. package/dist/esm/components/ui/sidebar/sidebar-expand-button.d.ts.map +1 -0
  396. package/dist/esm/components/ui/sidebar/sidebar-expand-button.js +12 -0
  397. package/dist/esm/components/ui/sidebar/sidebar-item-button.d.ts +12 -0
  398. package/dist/esm/components/ui/sidebar/sidebar-item-button.d.ts.map +1 -0
  399. package/dist/esm/components/ui/sidebar/sidebar-item-button.js +18 -0
  400. package/dist/esm/components/ui/sidebar/sidebar-item-collapsible.d.ts +12 -0
  401. package/dist/esm/components/ui/sidebar/sidebar-item-collapsible.d.ts.map +1 -0
  402. package/dist/esm/components/ui/sidebar/sidebar-item-collapsible.js +44 -0
  403. package/dist/esm/components/ui/sidebar/sidebar-item-icon-button.d.ts +12 -0
  404. package/dist/esm/components/ui/sidebar/sidebar-item-icon-button.d.ts.map +1 -0
  405. package/dist/esm/components/ui/sidebar/sidebar-item-icon-button.js +14 -0
  406. package/dist/esm/components/ui/sidebar/sidebar-item.d.ts +13 -0
  407. package/dist/esm/components/ui/sidebar/sidebar-item.d.ts.map +1 -0
  408. package/dist/esm/components/ui/sidebar/sidebar-item.js +16 -0
  409. package/dist/esm/components/ui/sidebar/sidebar-provider.d.ts +12 -0
  410. package/dist/esm/components/ui/sidebar/sidebar-provider.d.ts.map +1 -0
  411. package/dist/esm/components/ui/sidebar/sidebar-provider.js +51 -0
  412. package/dist/esm/components/ui/sidebar/sidebar-root.d.ts +3 -0
  413. package/dist/esm/components/ui/sidebar/sidebar-root.d.ts.map +1 -0
  414. package/dist/esm/components/ui/sidebar/sidebar-root.js +20 -0
  415. package/dist/esm/components/ui/sidebar/sidebar-router.d.ts +82 -0
  416. package/dist/esm/components/ui/sidebar/sidebar-router.d.ts.map +1 -0
  417. package/dist/esm/components/ui/sidebar/sidebar-router.js +89 -0
  418. package/dist/esm/components/ui/skeleton/index.d.ts +3 -0
  419. package/dist/esm/components/ui/skeleton/index.d.ts.map +1 -0
  420. package/dist/esm/components/ui/skeleton/index.js +6 -0
  421. package/dist/esm/components/ui/stepper/index.d.ts +18 -0
  422. package/dist/esm/components/ui/stepper/index.d.ts.map +1 -0
  423. package/dist/esm/components/ui/stepper/index.js +20 -0
  424. package/dist/esm/components/ui/switch/index.d.ts +5 -0
  425. package/dist/esm/components/ui/switch/index.d.ts.map +1 -0
  426. package/dist/esm/components/ui/switch/index.js +8 -0
  427. package/dist/esm/components/ui/table/index.d.ts +21 -0
  428. package/dist/esm/components/ui/table/index.d.ts.map +1 -0
  429. package/dist/esm/components/ui/table/index.js +44 -0
  430. package/dist/esm/components/ui/tabs/index.d.ts +8 -0
  431. package/dist/esm/components/ui/tabs/index.d.ts.map +1 -0
  432. package/dist/esm/components/ui/tabs/index.js +17 -0
  433. package/dist/esm/components/ui/textarea/index.d.ts +4 -0
  434. package/dist/esm/components/ui/textarea/index.d.ts.map +1 -0
  435. package/dist/esm/components/ui/textarea/index.js +6 -0
  436. package/dist/esm/components/ui/time-picker/index.d.ts +18 -0
  437. package/dist/esm/components/ui/time-picker/index.d.ts.map +1 -0
  438. package/dist/esm/components/ui/time-picker/index.js +49 -0
  439. package/dist/esm/components/ui/toast/index.d.ts +18 -0
  440. package/dist/esm/components/ui/toast/index.d.ts.map +1 -0
  441. package/dist/esm/components/ui/toast/index.js +2 -0
  442. package/dist/esm/components/ui/toast/toaster.d.ts +6 -0
  443. package/dist/esm/components/ui/toast/toaster.d.ts.map +1 -0
  444. package/dist/esm/components/ui/toast/toaster.js +8 -0
  445. package/dist/esm/components/ui/toggle-group/index.d.ts +18 -0
  446. package/dist/esm/components/ui/toggle-group/index.d.ts.map +1 -0
  447. package/dist/esm/components/ui/toggle-group/index.js +51 -0
  448. package/dist/esm/components/ui/tooltip/index.d.ts +11 -0
  449. package/dist/esm/components/ui/tooltip/index.d.ts.map +1 -0
  450. package/dist/esm/components/ui/tooltip/index.js +28 -0
  451. package/dist/esm/domain/blotter/index.d.ts +40 -0
  452. package/dist/esm/domain/blotter/index.d.ts.map +1 -0
  453. package/dist/esm/domain/blotter/index.js +12 -0
  454. package/dist/esm/domain/delinquency-aging/aging-buckets.d.ts +37 -0
  455. package/dist/esm/domain/delinquency-aging/aging-buckets.d.ts.map +1 -0
  456. package/dist/esm/domain/delinquency-aging/aging-buckets.js +92 -0
  457. package/dist/esm/domain/delinquency-aging/index.d.ts +52 -0
  458. package/dist/esm/domain/delinquency-aging/index.d.ts.map +1 -0
  459. package/dist/esm/domain/delinquency-aging/index.js +147 -0
  460. package/dist/esm/domain/figure/index.d.ts +30 -0
  461. package/dist/esm/domain/figure/index.d.ts.map +1 -0
  462. package/dist/esm/domain/figure/index.js +14 -0
  463. package/dist/esm/domain/format.d.ts +57 -0
  464. package/dist/esm/domain/format.d.ts.map +1 -0
  465. package/dist/esm/domain/format.js +94 -0
  466. package/dist/esm/domain/index.d.ts +22 -0
  467. package/dist/esm/domain/index.d.ts.map +1 -0
  468. package/dist/esm/domain/index.js +19 -0
  469. package/dist/esm/domain/key-id/index.d.ts +31 -0
  470. package/dist/esm/domain/key-id/index.d.ts.map +1 -0
  471. package/dist/esm/domain/key-id/index.js +162 -0
  472. package/dist/esm/domain/ledger-sheet/index.d.ts +45 -0
  473. package/dist/esm/domain/ledger-sheet/index.d.ts.map +1 -0
  474. package/dist/esm/domain/ledger-sheet/index.js +24 -0
  475. package/dist/esm/domain/money-diff.d.ts +23 -0
  476. package/dist/esm/domain/money-diff.d.ts.map +1 -0
  477. package/dist/esm/domain/money-diff.js +45 -0
  478. package/dist/esm/domain/money-math.d.ts +32 -0
  479. package/dist/esm/domain/money-math.d.ts.map +1 -0
  480. package/dist/esm/domain/money-math.js +98 -0
  481. package/dist/esm/domain/money-text/index.d.ts +37 -0
  482. package/dist/esm/domain/money-text/index.d.ts.map +1 -0
  483. package/dist/esm/domain/money-text/index.js +108 -0
  484. package/dist/esm/domain/section-label/index.d.ts +21 -0
  485. package/dist/esm/domain/section-label/index.d.ts.map +1 -0
  486. package/dist/esm/domain/section-label/index.js +6 -0
  487. package/dist/esm/domain/status-rail/index.d.ts +40 -0
  488. package/dist/esm/domain/status-rail/index.d.ts.map +1 -0
  489. package/dist/esm/domain/status-rail/index.js +59 -0
  490. package/dist/esm/domain/threshold-gauge/index.d.ts +84 -0
  491. package/dist/esm/domain/threshold-gauge/index.d.ts.map +1 -0
  492. package/dist/esm/domain/threshold-gauge/index.js +153 -0
  493. package/dist/esm/enterprise/alert-banner/index.d.ts +30 -0
  494. package/dist/esm/enterprise/alert-banner/index.d.ts.map +1 -0
  495. package/dist/esm/enterprise/alert-banner/index.js +21 -0
  496. package/dist/esm/enterprise/app-shell/index.d.ts +61 -0
  497. package/dist/esm/enterprise/app-shell/index.d.ts.map +1 -0
  498. package/dist/esm/enterprise/app-shell/index.js +51 -0
  499. package/dist/esm/enterprise/cursor-pager/index.d.ts +21 -0
  500. package/dist/esm/enterprise/cursor-pager/index.d.ts.map +1 -0
  501. package/dist/esm/enterprise/cursor-pager/index.js +23 -0
  502. package/dist/esm/enterprise/data-table/index.d.ts +88 -0
  503. package/dist/esm/enterprise/data-table/index.d.ts.map +1 -0
  504. package/dist/esm/enterprise/data-table/index.js +242 -0
  505. package/dist/esm/enterprise/date-range-picker/index.d.ts +37 -0
  506. package/dist/esm/enterprise/date-range-picker/index.d.ts.map +1 -0
  507. package/dist/esm/enterprise/date-range-picker/index.js +71 -0
  508. package/dist/esm/enterprise/detail-panel/index.d.ts +54 -0
  509. package/dist/esm/enterprise/detail-panel/index.d.ts.map +1 -0
  510. package/dist/esm/enterprise/detail-panel/index.js +17 -0
  511. package/dist/esm/enterprise/empty-state/index.d.ts +32 -0
  512. package/dist/esm/enterprise/empty-state/index.d.ts.map +1 -0
  513. package/dist/esm/enterprise/empty-state/index.js +10 -0
  514. package/dist/esm/enterprise/index.d.ts +26 -0
  515. package/dist/esm/enterprise/index.d.ts.map +1 -0
  516. package/dist/esm/enterprise/index.js +22 -0
  517. package/dist/esm/enterprise/number-input/index.d.ts +55 -0
  518. package/dist/esm/enterprise/number-input/index.d.ts.map +1 -0
  519. package/dist/esm/enterprise/number-input/index.js +200 -0
  520. package/dist/esm/enterprise/search-input/index.d.ts +32 -0
  521. package/dist/esm/enterprise/search-input/index.d.ts.map +1 -0
  522. package/dist/esm/enterprise/search-input/index.js +78 -0
  523. package/dist/esm/enterprise/stat-card/index.d.ts +43 -0
  524. package/dist/esm/enterprise/stat-card/index.d.ts.map +1 -0
  525. package/dist/esm/enterprise/stat-card/index.js +64 -0
  526. package/dist/esm/enterprise/status-badge/index.d.ts +31 -0
  527. package/dist/esm/enterprise/status-badge/index.d.ts.map +1 -0
  528. package/dist/esm/enterprise/status-badge/index.js +116 -0
  529. package/dist/esm/enterprise/use-is-mobile.d.ts +11 -0
  530. package/dist/esm/enterprise/use-is-mobile.d.ts.map +1 -0
  531. package/dist/esm/enterprise/use-is-mobile.js +23 -0
  532. package/dist/esm/enterprise/virtualized-table/index.d.ts +26 -0
  533. package/dist/esm/enterprise/virtualized-table/index.d.ts.map +1 -0
  534. package/dist/esm/enterprise/virtualized-table/index.js +111 -0
  535. package/dist/esm/hooks/use-click-away.d.ts +9 -0
  536. package/dist/esm/hooks/use-click-away.d.ts.map +1 -0
  537. package/dist/esm/hooks/use-click-away.js +22 -0
  538. package/dist/esm/hooks/use-pagination.d.ts +13 -0
  539. package/dist/esm/hooks/use-pagination.d.ts.map +1 -0
  540. package/dist/esm/hooks/use-pagination.js +38 -0
  541. package/dist/esm/hooks/use-stepper.d.ts +11 -0
  542. package/dist/esm/hooks/use-stepper.d.ts.map +1 -0
  543. package/dist/esm/hooks/use-stepper.js +22 -0
  544. package/dist/esm/hooks/use-time.d.ts +6 -0
  545. package/dist/esm/hooks/use-time.d.ts.map +1 -0
  546. package/dist/esm/hooks/use-time.js +13 -0
  547. package/dist/esm/hooks/use-toast.d.ts +31 -0
  548. package/dist/esm/hooks/use-toast.d.ts.map +1 -0
  549. package/dist/esm/hooks/use-toast.js +63 -0
  550. package/dist/esm/index.d.ts +69 -0
  551. package/dist/esm/index.d.ts.map +1 -0
  552. package/dist/esm/index.js +74 -0
  553. package/dist/esm/lib/storage/get-storage-object.d.ts +2 -0
  554. package/dist/esm/lib/storage/get-storage-object.d.ts.map +1 -0
  555. package/dist/esm/lib/storage/get-storage-object.js +17 -0
  556. package/dist/esm/lib/storage/get-storage.d.ts +2 -0
  557. package/dist/esm/lib/storage/get-storage.d.ts.map +1 -0
  558. package/dist/esm/lib/storage/get-storage.js +14 -0
  559. package/dist/esm/lib/storage/index.d.ts +3 -0
  560. package/dist/esm/lib/storage/index.d.ts.map +1 -0
  561. package/dist/esm/lib/storage/index.js +2 -0
  562. package/dist/esm/lib/typography.d.ts +17 -0
  563. package/dist/esm/lib/typography.d.ts.map +1 -0
  564. package/dist/esm/lib/typography.js +16 -0
  565. package/dist/esm/lib/utils.d.ts +3 -0
  566. package/dist/esm/lib/utils.d.ts.map +1 -0
  567. package/dist/esm/lib/utils.js +5 -0
  568. package/dist/esm/package.json +1 -0
  569. package/dist/esm/public/countries.json +21210 -0
  570. package/dist/esm/theme/get-theme-script.d.ts +3 -0
  571. package/dist/esm/theme/get-theme-script.d.ts.map +1 -0
  572. package/dist/esm/theme/get-theme-script.js +41 -0
  573. package/dist/esm/theme/index.d.ts +6 -0
  574. package/dist/esm/theme/index.d.ts.map +1 -0
  575. package/dist/esm/theme/index.js +4 -0
  576. package/dist/esm/theme/mode-toggle.d.ts +25 -0
  577. package/dist/esm/theme/mode-toggle.d.ts.map +1 -0
  578. package/dist/esm/theme/mode-toggle.js +27 -0
  579. package/dist/esm/theme/theme-provider.d.ts +38 -0
  580. package/dist/esm/theme/theme-provider.d.ts.map +1 -0
  581. package/dist/esm/theme/theme-provider.js +98 -0
  582. package/dist/esm/toast/helpers.d.ts +16 -0
  583. package/dist/esm/toast/helpers.d.ts.map +1 -0
  584. package/dist/esm/toast/helpers.js +29 -0
  585. package/dist/esm/toast/index.d.ts +3 -0
  586. package/dist/esm/toast/index.d.ts.map +1 -0
  587. package/dist/esm/toast/index.js +4 -0
  588. package/dist/esm/types/metadata-type.d.ts +2 -0
  589. package/dist/esm/types/metadata-type.d.ts.map +1 -0
  590. package/dist/esm/types/metadata-type.js +1 -0
  591. package/dist/esm/utils/countries.cjs +17 -0
  592. package/dist/esm/utils/countries.d.cts +14 -0
  593. package/dist/esm/utils/country-utils.d.ts +17 -0
  594. package/dist/esm/utils/country-utils.d.ts.map +1 -0
  595. package/dist/esm/utils/country-utils.js +18 -0
  596. package/dist/esm/utils/currency-codes.d.ts +5 -0
  597. package/dist/esm/utils/currency-codes.d.ts.map +1 -0
  598. package/dist/esm/utils/currency-codes.js +181 -0
  599. package/dist/globals.css +66 -0
  600. package/dist/hooks/use-toast.d.ts +1 -1
  601. package/dist/hooks/use-toast.d.ts.map +1 -1
  602. package/dist/hooks/use-toast.js +4 -0
  603. package/dist/index.d.ts +14 -0
  604. package/dist/index.d.ts.map +1 -1
  605. package/dist/index.js +19 -1
  606. package/dist/lib/storage/get-storage-object.d.ts.map +1 -1
  607. package/dist/lib/storage/get-storage-object.js +6 -2
  608. package/dist/lib/typography.d.ts +17 -0
  609. package/dist/lib/typography.d.ts.map +1 -0
  610. package/dist/lib/typography.js +19 -0
  611. package/dist/public/countries.json +21200 -21200
  612. package/dist/theme/get-theme-script.d.ts +3 -0
  613. package/dist/theme/get-theme-script.d.ts.map +1 -0
  614. package/dist/theme/get-theme-script.js +44 -0
  615. package/dist/theme/index.d.ts +6 -0
  616. package/dist/theme/index.d.ts.map +1 -0
  617. package/dist/theme/index.js +11 -0
  618. package/dist/theme/mode-toggle.d.ts +25 -0
  619. package/dist/theme/mode-toggle.d.ts.map +1 -0
  620. package/dist/theme/mode-toggle.js +30 -0
  621. package/dist/theme/theme-provider.d.ts +38 -0
  622. package/dist/theme/theme-provider.d.ts.map +1 -0
  623. package/dist/theme/theme-provider.js +135 -0
  624. package/dist/toast/helpers.d.ts +16 -0
  625. package/dist/toast/helpers.d.ts.map +1 -0
  626. package/dist/toast/helpers.js +34 -0
  627. package/dist/toast/index.d.ts +3 -0
  628. package/dist/toast/index.d.ts.map +1 -0
  629. package/dist/toast/index.js +10 -0
  630. package/dist/utils/countries.cjs +17 -0
  631. package/dist/utils/countries.d.cts +14 -0
  632. package/dist/utils/country-utils.js +2 -2
  633. package/package.json +54 -18
  634. package/dist/components/ui/button/button.test.d.ts +0 -2
  635. package/dist/components/ui/button/button.test.d.ts.map +0 -1
  636. package/dist/components/ui/button/button.test.js +0 -65
  637. package/dist/components/ui/copy-field/copy-field.test.d.ts +0 -2
  638. package/dist/components/ui/copy-field/copy-field.test.d.ts.map +0 -1
  639. package/dist/components/ui/copy-field/copy-field.test.js +0 -268
  640. package/dist/components/ui/input/input.test.d.ts +0 -2
  641. package/dist/components/ui/input/input.test.d.ts.map +0 -1
  642. package/dist/components/ui/input/input.test.js +0 -52
  643. package/dist/components/ui/label/label.stories.d.ts +0 -5
  644. package/dist/components/ui/label/label.stories.d.ts.map +0 -1
  645. package/dist/components/ui/label/label.stories.js +0 -24
  646. package/dist/components/ui/qr-code/qr-code.test.d.ts +0 -2
  647. package/dist/components/ui/qr-code/qr-code.test.d.ts.map +0 -1
  648. package/dist/components/ui/qr-code/qr-code.test.js +0 -60
  649. package/dist/components/ui/sidebar/sidebar-provider.test.d.ts +0 -2
  650. package/dist/components/ui/sidebar/sidebar-provider.test.d.ts.map +0 -1
  651. package/dist/components/ui/sidebar/sidebar-provider.test.js +0 -170
  652. package/dist/hooks/use-click-away.test.d.ts +0 -2
  653. package/dist/hooks/use-click-away.test.d.ts.map +0 -1
  654. package/dist/hooks/use-click-away.test.js +0 -39
  655. package/dist/hooks/use-stepper.test.d.ts +0 -2
  656. package/dist/hooks/use-stepper.test.d.ts.map +0 -1
  657. package/dist/hooks/use-stepper.test.js +0 -45
@@ -0,0 +1,45 @@
1
+ /**
2
+ * LedgerSheet + LedgerPanel — the connected-cell layout of the console.
3
+ *
4
+ * Do NOT float hairline cards in whitespace. Build connected sheets: a
5
+ * `bg-border` wrapper with `gap-px`, cells `bg-card`. The 1px gaps reveal the
6
+ * border color as hairline seams, so the panels read as one ruled ledger sheet.
7
+ *
8
+ * <LedgerSheet cols={3}>
9
+ * <LedgerPanel>…</LedgerPanel>
10
+ * <LedgerPanel>…</LedgerPanel>
11
+ * <LedgerPanel>…</LedgerPanel>
12
+ * </LedgerSheet>
13
+ *
14
+ * The `cols` prop drives the responsive column count; on mobile every sheet
15
+ * collapses to a single column. When a panel self-hides, pass the reduced
16
+ * `cols` so the remaining panels stretch (e.g. 3 → 2 when a panel returns null).
17
+ */
18
+ import type { ComponentPropsWithoutRef, ReactNode } from 'react';
19
+ /** Desktop column count. Only 1..4 are mapped (Tailwind needs literal class names). */
20
+ type Cols = 1 | 2 | 3 | 4;
21
+ export type LedgerSheetProps = {
22
+ children: ReactNode;
23
+ /** Desktop column count (1..4). Mobile always collapses to a single column. */
24
+ cols?: Cols;
25
+ className?: string;
26
+ };
27
+ export declare function LedgerSheet({ children, cols, className }: LedgerSheetProps): import("react").JSX.Element;
28
+ export type LedgerPanelProps = {
29
+ children: ReactNode;
30
+ className?: string;
31
+ /** Render element. Defaults to `section` (a labeled console panel). */
32
+ as?: 'section' | 'div';
33
+ } & Omit<ComponentPropsWithoutRef<'section'>, 'children' | 'className'>;
34
+ /**
35
+ * One cell of a ledger sheet. Flush — no own border or shadow — with `bg-card`,
36
+ * internal `p-5` padding and `flex h-full flex-col gap-4` so panels stretch to
37
+ * equal height. Start each panel with a `<SectionLabel>` as its heading.
38
+ *
39
+ * Remaining props land on the rendered element, so a composed panel can carry
40
+ * its own `data-*` hooks (StatCard's `data-tone`, for one) without wrapping the
41
+ * cell in an extra div that would break the hairline seams.
42
+ */
43
+ export declare function LedgerPanel({ children, className, as: Tag, ...rest }: LedgerPanelProps): import("react").JSX.Element;
44
+ export {};
45
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/domain/ledger-sheet/index.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,KAAK,EAAE,wBAAwB,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAIhE,uFAAuF;AACvF,KAAK,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;AAUzB,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,EAAE,SAAS,CAAA;IACnB,+EAA+E;IAC/E,IAAI,CAAC,EAAE,IAAI,CAAA;IACX,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,wBAAgB,WAAW,CAAC,EAC1B,QAAQ,EACR,IAAQ,EACR,SAAS,EACV,EAAE,gBAAgB,+BAYlB;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,EAAE,SAAS,CAAA;IACnB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,uEAAuE;IACvE,EAAE,CAAC,EAAE,SAAS,GAAG,KAAK,CAAA;CACvB,GAAG,IAAI,CAAC,wBAAwB,CAAC,SAAS,CAAC,EAAE,UAAU,GAAG,WAAW,CAAC,CAAA;AAEvE;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,EAC1B,QAAQ,EACR,SAAS,EACT,EAAE,EAAE,GAAe,EACnB,GAAG,IAAI,EACR,EAAE,gBAAgB,+BASlB"}
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LedgerSheet = LedgerSheet;
4
+ exports.LedgerPanel = LedgerPanel;
5
+ const jsx_runtime_1 = require("react/jsx-runtime");
6
+ const utils_1 = require("../../lib/utils");
7
+ /** Tailwind needs literal class names to survive purge; map cols → class. */
8
+ const COLS_CLASS = {
9
+ 1: 'lg:grid-cols-1',
10
+ 2: 'lg:grid-cols-2',
11
+ 3: 'lg:grid-cols-3',
12
+ 4: 'lg:grid-cols-4'
13
+ };
14
+ function LedgerSheet({ children, cols = 1, className }) {
15
+ return ((0, jsx_runtime_1.jsx)("div", { className: (0, utils_1.cn)('border-border bg-border grid grid-cols-1 gap-px overflow-hidden rounded-lg border', COLS_CLASS[cols] ?? COLS_CLASS[1], className), children: children }));
16
+ }
17
+ /**
18
+ * One cell of a ledger sheet. Flush — no own border or shadow — with `bg-card`,
19
+ * internal `p-5` padding and `flex h-full flex-col gap-4` so panels stretch to
20
+ * equal height. Start each panel with a `<SectionLabel>` as its heading.
21
+ *
22
+ * Remaining props land on the rendered element, so a composed panel can carry
23
+ * its own `data-*` hooks (StatCard's `data-tone`, for one) without wrapping the
24
+ * cell in an extra div that would break the hairline seams.
25
+ */
26
+ function LedgerPanel({ children, className, as: Tag = 'section', ...rest }) {
27
+ return ((0, jsx_runtime_1.jsx)(Tag, { className: (0, utils_1.cn)('bg-card flex h-full flex-col gap-4 p-5', className), ...rest, children: children }));
28
+ }
@@ -0,0 +1,23 @@
1
+ import type { Amount } from './money-math';
2
+ /** The money-comparison contract: two sides, a currency, an optional tolerance. */
3
+ type MoneyDiffInput = {
4
+ /** Left amount (canonical decimal string preferred for lossless math). */
5
+ left: Amount;
6
+ /** Right amount. The difference is left − right. */
7
+ right: Amount;
8
+ /** ISO 4217 currency code, e.g. "BRL". Drives the minor-unit scale. */
9
+ currency: string;
10
+ /** Override the currency-derived minor-unit scale. When omitted, the scale
11
+ * derives from the currency (2 for an unknown one), never a hardcoded 2. */
12
+ minorDigits?: number;
13
+ /** Absolute tolerance in MAJOR units. `|left − right| > tolerance` is a breach. */
14
+ tolerance?: Amount;
15
+ /** BCP 47 locale for the money figure. */
16
+ locale?: string;
17
+ };
18
+ export declare function moneyDiff(money: MoneyDiffInput): {
19
+ decimal: string | null;
20
+ breach: boolean;
21
+ };
22
+ export {};
23
+ //# sourceMappingURL=money-diff.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"money-diff.d.ts","sourceRoot":"","sources":["../../src/domain/money-diff.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAE1C,mFAAmF;AACnF,KAAK,cAAc,GAAG;IACpB,0EAA0E;IAC1E,IAAI,EAAE,MAAM,CAAA;IACZ,oDAAoD;IACpD,KAAK,EAAE,MAAM,CAAA;IACb,uEAAuE;IACvE,QAAQ,EAAE,MAAM,CAAA;IAChB;iFAC6E;IAC7E,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,mFAAmF;IACnF,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,0CAA0C;IAC1C,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,GAAG;IAChD,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,MAAM,EAAE,OAAO,CAAA;CAChB,CA6BA"}
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.moneyDiff = moneyDiff;
4
+ /**
5
+ * moneyDiff — the signed difference between two reconciliation sides, computed
6
+ * on integer minor units and never on floats.
7
+ *
8
+ * THIRD RAIL (money): `left − right` runs through `toMinor` on both operands →
9
+ * BigInt subtraction → `minorToDecimal`, and the tolerance breach test compares
10
+ * MAGNITUDES in minor units. A float subtraction of two decimals would drift by
11
+ * a cent at reconciliation scale, which is the difference between a matched and
12
+ * an unmatched pair.
13
+ *
14
+ * A null `decimal` means an unparseable operand — surfaced, never coerced to
15
+ * zero, so a caller renders the no-value placeholder rather than a fabricated
16
+ * tie.
17
+ */
18
+ const money_math_1 = require("./money-math");
19
+ function moneyDiff(money) {
20
+ const scale = money.minorDigits ?? (0, money_math_1.minorDigitsOf)(money.currency);
21
+ const l = (0, money_math_1.toMinor)(money.left, scale);
22
+ const r = (0, money_math_1.toMinor)(money.right, scale);
23
+ if (l === null || r === null)
24
+ return { decimal: null, breach: false };
25
+ const diff = l - r;
26
+ // A tolerance that was SUPPLIED but does not parse ('', 'oops', '-.') is not
27
+ // the same thing as no tolerance at all. Degrading to the no-tolerance rule
28
+ // made every nonzero difference a breach, so one typo in a tolerance field
29
+ // turned a reconciled book into a screen of false breaches — the loudest
30
+ // possible wrong answer. A supplied-invalid tolerance is INDETERMINATE,
31
+ // exactly like an unparseable operand: no number, no verdict.
32
+ const supplied = money.tolerance != null;
33
+ const rawTol = supplied ? (0, money_math_1.toMinor)(money.tolerance, scale) : null;
34
+ if (supplied && rawTol === null)
35
+ return { decimal: null, breach: false };
36
+ // A tolerance is a BAND WIDTH, so only its magnitude is meaningful. Taken
37
+ // signed, a negative tolerance made `|diff| > tol` true for every value
38
+ // including an exact tie (0n > -5n), flagging perfectly reconciled pairs as
39
+ // breaches. Normalizing to the magnitude means `-0.05` and `0.05` describe the
40
+ // same band, which is the only reading of a negative tolerance that is not a
41
+ // silent false alarm.
42
+ const tol = rawTol === null ? null : rawTol < 0n ? -rawTol : rawTol;
43
+ const abs = diff < 0n ? -diff : diff;
44
+ // A breach is a magnitude STRICTLY beyond the band; no tolerance → no band, so
45
+ // any nonzero difference is itself the breach.
46
+ const breach = tol === null ? diff !== 0n : abs > tol;
47
+ return { decimal: (0, money_math_1.minorToDecimal)(diff, scale), breach };
48
+ }
@@ -0,0 +1,32 @@
1
+ /**
2
+ * money-math — exact integer-minor-unit arithmetic for the double-entry third rail.
3
+ *
4
+ * INTERNAL to the domain layer: nothing here is re-exported from
5
+ * `src/domain/index.ts`, so `toMinor`/`Amount`/`sumMinor` are NOT part of
6
+ * `@lerianstudio/sindarian-ui`'s public API. The consumers that need exact money
7
+ * arithmetic reach it through the components that own it (`moneyDiff`,
8
+ * `MoneyText`, `DelinquencyAging`).
9
+ *
10
+ * Amounts parse to integer minor units (BigInt) at a fixed scale; sums never
11
+ * round-trip through IEEE-754. Pass amounts as canonical decimal STRINGS for
12
+ * lossless math — numbers are converted via toFixed, which is float-bounded
13
+ * (fine for display-scale magnitudes, exact for strings).
14
+ */
15
+ export type Amount = string | number | null | undefined;
16
+ /**
17
+ * Amount -> integer minor units at `scale`, or null if unparseable.
18
+ *
19
+ * `scale` is validated before it reaches `toFixed`/`repeat`: an out-of-range
20
+ * scale (a caller passing `minorDigits: -1`) would throw a RangeError mid-render
21
+ * rather than degrade. It is the single choke point every money path in this
22
+ * layer routes through (`sumMinor`, `moneyDiff`, `delinquencyRate`,
23
+ * `sumBucketTotals`), so guarding it here guards all of them.
24
+ */
25
+ export declare function toMinor(value: Amount, scale: number): bigint | null;
26
+ /** Sum amounts to minor units; null if ANY operand is unparseable (indeterminate). */
27
+ export declare function sumMinor(values: Amount[], scale: number): bigint | null;
28
+ /** Currency's minor-unit digit count via CLDR (BRL/USD->2, JPY->0, BHD->3), or fallback. */
29
+ export declare function minorDigitsOf(currency: string, fallback?: number): number;
30
+ /** Minor units -> canonical decimal string (lossless), for handing to MoneyText. */
31
+ export declare function minorToDecimal(minor: bigint, scale: number): string;
32
+ //# sourceMappingURL=money-math.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"money-math.d.ts","sourceRoot":"","sources":["../../src/domain/money-math.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAIH,MAAM,MAAM,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;AAcvD;;;;;;;;GAQG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAyBnE;AAED,sFAAsF;AACtF,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAQvE;AAED,4FAA4F;AAC5F,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,SAAI,GAAG,MAAM,CAWpE;AAED,oFAAoF;AACpF,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAMnE"}
@@ -0,0 +1,104 @@
1
+ "use strict";
2
+ /**
3
+ * money-math — exact integer-minor-unit arithmetic for the double-entry third rail.
4
+ *
5
+ * INTERNAL to the domain layer: nothing here is re-exported from
6
+ * `src/domain/index.ts`, so `toMinor`/`Amount`/`sumMinor` are NOT part of
7
+ * `@lerianstudio/sindarian-ui`'s public API. The consumers that need exact money
8
+ * arithmetic reach it through the components that own it (`moneyDiff`,
9
+ * `MoneyText`, `DelinquencyAging`).
10
+ *
11
+ * Amounts parse to integer minor units (BigInt) at a fixed scale; sums never
12
+ * round-trip through IEEE-754. Pass amounts as canonical decimal STRINGS for
13
+ * lossless math — numbers are converted via toFixed, which is float-bounded
14
+ * (fine for display-scale magnitudes, exact for strings).
15
+ */
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.toMinor = toMinor;
18
+ exports.sumMinor = sumMinor;
19
+ exports.minorDigitsOf = minorDigitsOf;
20
+ exports.minorToDecimal = minorToDecimal;
21
+ const format_1 = require("./format");
22
+ // Round half-away-from-zero on the first dropped fraction digit.
23
+ function roundsUp(fraction, scale) {
24
+ return fraction.length > scale && fraction.charCodeAt(scale) - 48 >= 5;
25
+ }
26
+ /** Normalize to a canonical signed decimal: trim, unicode-minus, accounting parens. */
27
+ function canonical(raw) {
28
+ let s = raw.trim().replace(/−/g, '-');
29
+ if (/^\(.*\)$/.test(s))
30
+ s = '-' + s.slice(1, -1).trim(); // (1.23) -> -1.23
31
+ return s;
32
+ }
33
+ /**
34
+ * Amount -> integer minor units at `scale`, or null if unparseable.
35
+ *
36
+ * `scale` is validated before it reaches `toFixed`/`repeat`: an out-of-range
37
+ * scale (a caller passing `minorDigits: -1`) would throw a RangeError mid-render
38
+ * rather than degrade. It is the single choke point every money path in this
39
+ * layer routes through (`sumMinor`, `moneyDiff`, `delinquencyRate`,
40
+ * `sumBucketTotals`), so guarding it here guards all of them.
41
+ */
42
+ function toMinor(value, scale) {
43
+ if (!(0, format_1.isValidDigitCount)(scale))
44
+ return null;
45
+ if (value === null || value === undefined || value === '')
46
+ return null;
47
+ let s = typeof value === 'number'
48
+ ? Number.isFinite(value)
49
+ ? value.toFixed(scale)
50
+ : ''
51
+ : canonical(value);
52
+ if (s === '' || s === '-' || s === '.' || !/^-?\d*(\.\d*)?$/.test(s))
53
+ return null;
54
+ const neg = s.startsWith('-');
55
+ if (neg)
56
+ s = s.slice(1);
57
+ const [intPart = '', fracPart = ''] = s.split('.');
58
+ // DELIBERATE DIVERGENCE from sindarian-x@0.15.0: the legacy regex admits a
59
+ // digitless token ('-.', and '.' once the sign is stripped) and coerced it to
60
+ // an exact 0n. A fabricated exact zero is the worst possible answer in
61
+ // reconciliation — it reads as a perfect tie and hides the bad input — so a
62
+ // digitless amount is now indeterminate (null), like every other garbage
63
+ // token. This mirrors the guard the legacy `rateFraction` already had.
64
+ if (intPart === '' && fracPart === '')
65
+ return null;
66
+ const frac = (fracPart + '0'.repeat(scale)).slice(0, scale);
67
+ let minor = BigInt((intPart || '0') + frac);
68
+ if (roundsUp(fracPart, scale))
69
+ minor += 1n;
70
+ return neg ? -minor : minor;
71
+ }
72
+ /** Sum amounts to minor units; null if ANY operand is unparseable (indeterminate). */
73
+ function sumMinor(values, scale) {
74
+ let total = 0n;
75
+ for (const v of values) {
76
+ const m = toMinor(v, scale);
77
+ if (m === null)
78
+ return null;
79
+ total += m;
80
+ }
81
+ return total;
82
+ }
83
+ /** Currency's minor-unit digit count via CLDR (BRL/USD->2, JPY->0, BHD->3), or fallback. */
84
+ function minorDigitsOf(currency, fallback = 2) {
85
+ try {
86
+ const opts = new Intl.NumberFormat('en', {
87
+ style: 'currency',
88
+ currency,
89
+ currencyDisplay: 'code'
90
+ }).resolvedOptions();
91
+ return opts.maximumFractionDigits ?? fallback;
92
+ }
93
+ catch {
94
+ return fallback;
95
+ }
96
+ }
97
+ /** Minor units -> canonical decimal string (lossless), for handing to MoneyText. */
98
+ function minorToDecimal(minor, scale) {
99
+ const neg = minor < 0n;
100
+ const abs = (neg ? -minor : minor).toString().padStart(scale + 1, '0');
101
+ const intPart = abs.slice(0, abs.length - scale) || '0';
102
+ const fracPart = scale > 0 ? '.' + abs.slice(abs.length - scale) : '';
103
+ return (neg ? '-' : '') + intPart + fracPart;
104
+ }
@@ -0,0 +1,37 @@
1
+ export type MoneyTextProps = {
2
+ amount: string | number | null | undefined;
3
+ /** ISO 4217 currency code, e.g. "BRL", "USD". */
4
+ currency?: string | null;
5
+ /** Number of fraction digits. Defaults to 2. */
6
+ fractionDigits?: number;
7
+ /** Hide the trailing currency code. */
8
+ hideCurrency?: boolean;
9
+ /** Color negative values red. Defaults to true. */
10
+ signColor?: boolean;
11
+ /** BCP 47 locale for grouping/decimal marks. Defaults to the runtime locale. */
12
+ locale?: string;
13
+ className?: string;
14
+ };
15
+ /**
16
+ * Normalize a raw amount into a string the Intl formatter accepts while
17
+ * preserving precision: trim, convert the unicode minus U+2212 to ASCII '-',
18
+ * and rewrite accounting parens `(123.45)` → `-123.45`. Returns null when the
19
+ * input is empty after trimming (→ NO_VALUE upstream).
20
+ *
21
+ * Internal: exported for its unit tests, never from `src/domain/index.ts`.
22
+ */
23
+ export declare function normalizeAmount(amount: string | number): string | null;
24
+ /**
25
+ * Pure money formatting: normalize the amount, format it via Intl (preserving
26
+ * precision through the ES2020 string overload), and derive sign + finiteness
27
+ * from the formatted parts — so color and glyph can never disagree. Returns
28
+ * null for empty, non-finite, or unparseable input (→ NO_VALUE upstream).
29
+ *
30
+ * Internal: exported for its unit tests, never from `src/domain/index.ts`.
31
+ */
32
+ export declare function formatMoneyParts(amount: string | number, fractionDigits: number, locale?: string): {
33
+ formatted: string;
34
+ negative: boolean;
35
+ } | null;
36
+ export declare function MoneyText({ amount, currency, fractionDigits, hideCurrency, signColor, locale, className }: MoneyTextProps): import("react").JSX.Element;
37
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/domain/money-text/index.tsx"],"names":[],"mappings":"AAwBA,MAAM,MAAM,cAAc,GAAG;IAC3B,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;IAC1C,iDAAiD;IACjD,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,gDAAgD;IAChD,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,uCAAuC;IACvC,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,mDAAmD;IACnD,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,gFAAgF;IAChF,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,CAAA;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,CAOtE;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,MAAM,GAAG,MAAM,EACvB,cAAc,EAAE,MAAM,EACtB,MAAM,CAAC,EAAE,MAAM,GACd;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAAE,GAAG,IAAI,CA+CjD;AAED,wBAAgB,SAAS,CAAC,EACxB,MAAM,EACN,QAAQ,EACR,cAAkB,EAClB,YAAoB,EACpB,SAAgB,EAChB,MAAM,EACN,SAAS,EACV,EAAE,cAAc,+BA8BhB"}
@@ -0,0 +1,113 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.normalizeAmount = normalizeAmount;
4
+ exports.formatMoneyParts = formatMoneyParts;
5
+ exports.MoneyText = MoneyText;
6
+ const jsx_runtime_1 = require("react/jsx-runtime");
7
+ /**
8
+ * MoneyText renders a monetary amount with optional ISO currency code,
9
+ * tabular figures so columns line up. The amount is formatted losslessly: when
10
+ * passed as a string, `Intl.NumberFormat.format()` (ES2020+) parses it as an
11
+ * arbitrary-precision value and rounds to `fractionDigits` without ever
12
+ * round-tripping through an IEEE-754 double — so 16+ significant-digit tokens
13
+ * keep every digit. Pass the raw decimal string (not a pre-coerced Number) to
14
+ * preserve that guarantee.
15
+ *
16
+ * The currency code is shown as a suffix rather than a symbol so mixed-currency
17
+ * ledgers stay unambiguous. Negative amounts get the destructive color;
18
+ * null/undefined/empty render the muted no-value placeholder.
19
+ *
20
+ * SIGN COLOR IS NOT THE CREDIT ROLE. `--destructive` marks a negative/alarm
21
+ * amount; `--credit` is the accounting reading of a credit amount. They are two
22
+ * roles, and a consumer layers the credit role on top (matcher's fork passes
23
+ * `signColor={false}` with `tone="credit"` precisely so the two never fight).
24
+ * Collapsing the sign color into `text-credit` would erase that distinction —
25
+ * this class stays `text-destructive`, as in sindarian-x@0.15.0.
26
+ */
27
+ const utils_1 = require("../../lib/utils");
28
+ const format_1 = require("../format");
29
+ /**
30
+ * Normalize a raw amount into a string the Intl formatter accepts while
31
+ * preserving precision: trim, convert the unicode minus U+2212 to ASCII '-',
32
+ * and rewrite accounting parens `(123.45)` → `-123.45`. Returns null when the
33
+ * input is empty after trimming (→ NO_VALUE upstream).
34
+ *
35
+ * Internal: exported for its unit tests, never from `src/domain/index.ts`.
36
+ */
37
+ function normalizeAmount(amount) {
38
+ let s = String(amount).trim();
39
+ if (s === '')
40
+ return null;
41
+ s = s.replace(/−/g, '-');
42
+ const parens = s.match(/^\((.*)\)$/);
43
+ if (parens)
44
+ s = `-${parens[1].trim()}`;
45
+ return s;
46
+ }
47
+ /**
48
+ * Pure money formatting: normalize the amount, format it via Intl (preserving
49
+ * precision through the ES2020 string overload), and derive sign + finiteness
50
+ * from the formatted parts — so color and glyph can never disagree. Returns
51
+ * null for empty, non-finite, or unparseable input (→ NO_VALUE upstream).
52
+ *
53
+ * Internal: exported for its unit tests, never from `src/domain/index.ts`.
54
+ */
55
+ function formatMoneyParts(amount, fractionDigits, locale) {
56
+ // Reject non-finite numeric inputs (NaN / ±Infinity) before they reach Intl,
57
+ // which would otherwise render literal "NaN" / "∞".
58
+ if (typeof amount === 'number' && !Number.isFinite(amount))
59
+ return null;
60
+ // A caller-supplied digit count reaches Intl directly; an out-of-range one
61
+ // would throw a RangeError and blank the amount instead of degrading to
62
+ // NO_VALUE.
63
+ if (!(0, format_1.isValidDigitCount)(fractionDigits))
64
+ return null;
65
+ const normalized = normalizeAmount(amount);
66
+ if (normalized === null)
67
+ return null;
68
+ // DELIBERATE DIVERGENCE from sindarian-x@0.15.0: an exact zero written with a
69
+ // sign ('-0', '-0.00', '(0)') formatted as "-0.00" and reported negative:true,
70
+ // which painted a zero balance in the destructive sign color. Zero is neither
71
+ // positive nor negative — a signed-zero ledger cell is a rendering artifact of
72
+ // the input notation, never a fact about the money. The sign is dropped for an
73
+ // EXACT zero only; '-0.004' still rounds to "-0.00" and stays negative,
74
+ // because that one really is below zero.
75
+ const exactZero = /\d/.test(normalized) && /^-?0*(\.0*)?$/.test(normalized);
76
+ const forFormat = exactZero ? normalized.replace(/^-/, '') : normalized;
77
+ const formatter = new Intl.NumberFormat(locale, {
78
+ minimumFractionDigits: fractionDigits,
79
+ maximumFractionDigits: fractionDigits,
80
+ signDisplay: 'auto'
81
+ });
82
+ // The bundled lib types only model a `number | bigint` overload; the ES2020
83
+ // string overload (which preserves precision) is unmodelled, so the
84
+ // normalized amount is cast at the boundary.
85
+ //
86
+ // RUNTIME FLOOR: this relies on a V8 with exact decimal-STRING Intl support
87
+ // (Node >= 20, evergreen browsers) — the whole point is that a 20-digit amount
88
+ // never round-trips through an IEEE-754 double. There is deliberately NO
89
+ // Number-coercion fallback for older runtimes: that fallback would silently
90
+ // reintroduce the precision loss this function exists to prevent.
91
+ const parts = formatter.formatToParts(forFormat);
92
+ // Intl emits a literal "nan"/"∞" part for non-finite values; treat those as
93
+ // no-value rather than rendering them.
94
+ if (parts.some((p) => p.type === 'nan' || p.type === 'infinity'))
95
+ return null;
96
+ return {
97
+ formatted: parts.map((p) => p.value).join(''),
98
+ negative: parts.some((p) => p.type === 'minusSign')
99
+ };
100
+ }
101
+ function MoneyText({ amount, currency, fractionDigits = 2, hideCurrency = false, signColor = true, locale, className }) {
102
+ const noValue = ((0, jsx_runtime_1.jsx)("span", { className: (0, utils_1.cn)('text-muted-foreground tabular-nums', className), children: format_1.NO_VALUE }));
103
+ if (amount === null || amount === undefined || amount === '')
104
+ return noValue;
105
+ // Sign and finiteness are derived from the formatted parts, not a raw string
106
+ // prefix — so color and glyph can never disagree, and "-0" / "(0)" are
107
+ // treated as the non-negative zero Intl renders.
108
+ const result = formatMoneyParts(amount, fractionDigits, locale);
109
+ if (result === null)
110
+ return noValue;
111
+ const { formatted, negative } = result;
112
+ return ((0, jsx_runtime_1.jsxs)("span", { className: (0, utils_1.cn)('tabular-nums', signColor && negative && 'text-destructive', className), children: [formatted, !hideCurrency && currency ? ((0, jsx_runtime_1.jsx)("span", { className: "text-muted-foreground ml-1 text-xs", children: currency })) : null] }));
113
+ }
@@ -0,0 +1,21 @@
1
+ /**
2
+ * SectionLabel — THE canonical uppercase tracked sans label of the console.
3
+ *
4
+ * Every panel heading, section title, and caption is uppercase, tracked
5
+ * (0.08em) muted-foreground — the recessive foil that lets the mono figures be
6
+ * loud. The class itself lives in `@/lib/typography` (`SECTION_LABEL_CLASS`,
7
+ * an alias of `LABEL_VOICE_CLASS`) and is NEVER re-stated here, so the voice
8
+ * cannot drift between this component and the `ui/` layer that shares it.
9
+ *
10
+ * Renders an `<h2>` by default (the ledger-sheet cell heading), but `as` lets
11
+ * it become a `<p>`/`<span>`/`<dt>` for captions and inline labels.
12
+ */
13
+ import type { ElementType, ReactNode } from 'react';
14
+ export type SectionLabelProps = {
15
+ children: ReactNode;
16
+ className?: string;
17
+ /** Render element. Defaults to `h2` (the ledger-sheet cell heading). */
18
+ as?: ElementType;
19
+ };
20
+ export declare function SectionLabel({ children, className, as: Tag }: SectionLabelProps): import("react").JSX.Element;
21
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/domain/section-label/index.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAKnD,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,EAAE,SAAS,CAAA;IACnB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,wEAAwE;IACxE,EAAE,CAAC,EAAE,WAAW,CAAA;CACjB,CAAA;AAED,wBAAgB,YAAY,CAAC,EAC3B,QAAQ,EACR,SAAS,EACT,EAAE,EAAE,GAAU,EACf,EAAE,iBAAiB,+BAEnB"}
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SectionLabel = SectionLabel;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const typography_1 = require("../../lib/typography");
6
+ const utils_1 = require("../../lib/utils");
7
+ function SectionLabel({ children, className, as: Tag = 'h2' }) {
8
+ return (0, jsx_runtime_1.jsx)(Tag, { className: (0, utils_1.cn)(typography_1.SECTION_LABEL_CLASS, className), children: children });
9
+ }
@@ -0,0 +1,40 @@
1
+ import type { ReactNode } from 'react';
2
+ export type StatusRailItem = {
3
+ /** Optional stable key for dynamic (reordered/filtered) rails; falls back to index. */
4
+ id?: string;
5
+ /** Optional uppercase label rendered inline before the value. */
6
+ label?: ReactNode;
7
+ value: ReactNode;
8
+ };
9
+ export type StatusRailChip = {
10
+ /** Optional stable key for dynamic (reordered/filtered) rails; falls back to index. */
11
+ id?: string;
12
+ label: ReactNode;
13
+ value: ReactNode;
14
+ /** Escalate the chip to destructive styling when a count is in alarm. */
15
+ alarm?: boolean;
16
+ };
17
+ export type StatusRailProps = {
18
+ /** Foreground identity token, rendered first (e.g. context name). */
19
+ lead?: ReactNode;
20
+ /** Dot-separated mono tape items. */
21
+ items?: StatusRailItem[];
22
+ /** Right-pinned count chips. */
23
+ chips?: StatusRailChip[];
24
+ className?: string;
25
+ };
26
+ export declare function StatusRail({ lead, items, chips, className }: StatusRailProps): import("react").JSX.Element;
27
+ /** Decorative dot separator — muted, so the tape reads as punctuated, not broken. */
28
+ export declare function Dot(): import("react").JSX.Element;
29
+ /**
30
+ * The live auto-refresh pulse: a success dot with a reduced-motion-gated ping
31
+ * ring. Place it inside a tape item value, e.g. `<><LivePulse /> Live</>`.
32
+ *
33
+ * The ring rides Tailwind's built-in `ping` keyframe under the `motion-safe:`
34
+ * variant (`@media (prefers-reduced-motion: no-preference)`), so a
35
+ * reduced-motion reader sees only the static dot — same gating as the
36
+ * hand-rolled `status-rail-pulse` keyframe it replaces, with no stylesheet of
37
+ * its own.
38
+ */
39
+ export declare function LivePulse(): import("react").JSX.Element;
40
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/domain/status-rail/index.tsx"],"names":[],"mappings":"AAwBA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAItC,MAAM,MAAM,cAAc,GAAG;IAC3B,uFAAuF;IACvF,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,iEAAiE;IACjE,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB,KAAK,EAAE,SAAS,CAAA;CACjB,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,uFAAuF;IACvF,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,SAAS,CAAA;IAChB,KAAK,EAAE,SAAS,CAAA;IAChB,yEAAyE;IACzE,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB,CAAA;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,qEAAqE;IACrE,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB,qCAAqC;IACrC,KAAK,CAAC,EAAE,cAAc,EAAE,CAAA;IACxB,gCAAgC;IAChC,KAAK,CAAC,EAAE,cAAc,EAAE,CAAA;IACxB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,wBAAgB,UAAU,CAAC,EACzB,IAAI,EACJ,KAAU,EACV,KAAU,EACV,SAAS,EACV,EAAE,eAAe,+BA+DjB;AAkBD,qFAAqF;AACrF,wBAAgB,GAAG,gCAMlB;AAED;;;;;;;;;GASG;AACH,wBAAgB,SAAS,gCAOxB"}
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.StatusRail = StatusRail;
4
+ exports.Dot = Dot;
5
+ exports.LivePulse = LivePulse;
6
+ const jsx_runtime_1 = require("react/jsx-runtime");
7
+ /**
8
+ * StatusRail — Row 0 of every console screen. A thin, full-width recessed strip
9
+ * that reads "the terminal is live": a dot-separated mono tape on the recessed
10
+ * page surface (`bg-body-surface`), with optional right-pinned count chips.
11
+ *
12
+ * <StatusRail
13
+ * lead={contextName}
14
+ * items={[
15
+ * { value: '90d' },
16
+ * { label: 'Updated', value: '12:04 UTC' },
17
+ * { value: <><LivePulse /> Live</> }
18
+ * ]}
19
+ * chips={[
20
+ * { label: 'Open', value: '12' },
21
+ * { label: 'Pending overdue', value: '3', alarm: true }
22
+ * ]}
23
+ * />
24
+ *
25
+ * The first token (`lead`) is `text-foreground font-medium`. Tape items are
26
+ * dot-separated; an item with a `label` renders the uppercase label inline
27
+ * before its value. Chips pin right via `ml-auto`; `alarm` escalates a chip to
28
+ * destructive.
29
+ */
30
+ const lucide_react_1 = require("lucide-react");
31
+ const utils_1 = require("../../lib/utils");
32
+ function StatusRail({ lead, items = [], chips = [], className }) {
33
+ return ((0, jsx_runtime_1.jsxs)("div", { className: (0, utils_1.cn)(
34
+ // Recessed instrument strip: the page surface inside a hairline border
35
+ // whose top edge runs one step darker — light-from-above recession
36
+ // without any inner shadow.
37
+ 'border-border border-t-foreground/10 bg-body-surface text-muted-foreground flex flex-wrap items-center gap-x-3 gap-y-1.5 rounded-lg border px-4 py-2 font-mono text-xs tabular-nums', className), children: [lead !== undefined && lead !== null ? ((0, jsx_runtime_1.jsx)("span", { className: "text-foreground font-medium", children: lead })) : null, items.map((item, i) => ((0, jsx_runtime_1.jsx)(RailFragment, { hasLead: lead != null || i > 0, children: item.label != null ? ((0, jsx_runtime_1.jsxs)("span", { className: "flex items-center gap-1.5", children: [(0, jsx_runtime_1.jsx)("span", { className: "tracking-[0.08em] uppercase", children: item.label }), item.value] })) : ((0, jsx_runtime_1.jsx)("span", { className: "flex items-center gap-1.5", children: item.value })) }, item.id ?? i))), chips.length ? ((0, jsx_runtime_1.jsx)("span", { className: "ml-auto flex flex-wrap items-center gap-x-3 gap-y-1.5", children: chips.map((chip, i) => ((0, jsx_runtime_1.jsxs)("span", { className: "inline-flex items-center gap-1.5", children: [(0, jsx_runtime_1.jsx)("span", { className: "tracking-[0.08em] uppercase", children: chip.label }), (0, jsx_runtime_1.jsxs)("span", { className: (0, utils_1.cn)(
38
+ // Tiny mono token: raised a hair off the sunken tape by the
39
+ // card surface + whisper shadow.
40
+ 'inline-flex items-center gap-1 rounded-sm border px-1.5 py-0.5 shadow-sm', chip.alarm
41
+ ? 'border-destructive/40 bg-destructive/10 text-destructive'
42
+ : 'border-border bg-card text-foreground'), children: [chip.alarm ? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(lucide_react_1.TriangleAlert, { "aria-hidden": true, className: "size-3" }), (0, jsx_runtime_1.jsx)("span", { className: "sr-only", children: "(alarme)" })] })) : null, chip.value] })] }, chip.id ?? i))) })) : null] }));
43
+ }
44
+ /** A tape item preceded by a separator dot when it is not the first token. */
45
+ function RailFragment({ children, hasLead }) {
46
+ return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [hasLead ? (0, jsx_runtime_1.jsx)(Dot, {}) : null, children] }));
47
+ }
48
+ /** Decorative dot separator — muted, so the tape reads as punctuated, not broken. */
49
+ function Dot() {
50
+ return ((0, jsx_runtime_1.jsx)("span", { "aria-hidden": true, className: "text-muted-foreground/50", children: "\u00B7" }));
51
+ }
52
+ /**
53
+ * The live auto-refresh pulse: a success dot with a reduced-motion-gated ping
54
+ * ring. Place it inside a tape item value, e.g. `<><LivePulse /> Live</>`.
55
+ *
56
+ * The ring rides Tailwind's built-in `ping` keyframe under the `motion-safe:`
57
+ * variant (`@media (prefers-reduced-motion: no-preference)`), so a
58
+ * reduced-motion reader sees only the static dot — same gating as the
59
+ * hand-rolled `status-rail-pulse` keyframe it replaces, with no stylesheet of
60
+ * its own.
61
+ */
62
+ function LivePulse() {
63
+ return ((0, jsx_runtime_1.jsxs)("span", { className: "relative flex size-2", "aria-hidden": true, children: [(0, jsx_runtime_1.jsx)("span", { className: "bg-system-success/60 absolute inline-flex size-2 rounded-full motion-safe:animate-ping" }), (0, jsx_runtime_1.jsx)("span", { className: "bg-system-success relative inline-flex size-2 rounded-full" })] }));
64
+ }