@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,57 @@
1
+ /**
2
+ * Ledger-kit formatting helpers. Pure functions, no React. `MoneyText` owns
3
+ * monetary formatting; these cover percent, integer counts, and humanized
4
+ * durations (e.g. an average resolution time arriving as milliseconds).
5
+ */
6
+ /** No-value placeholder. A middle dot reads as "empty" without an em dash, and
7
+ * stays narrow enough not to disturb tabular alignment. */
8
+ export declare const NO_VALUE = "\u00B7";
9
+ /**
10
+ * Whether a digit count is one `Intl.NumberFormat` (and `Number#toFixed`, and
11
+ * `String#repeat`) will actually accept: a finite integer in 0..100. Anything
12
+ * else — a negative, a fraction, NaN, Infinity — makes those constructors throw
13
+ * a RangeError, which on a money surface means a blank screen instead of a
14
+ * number. Every caller turns an invalid count into the no-value path instead.
15
+ *
16
+ * Internal: shared by `format`, `money-text` and `money-math` so the three
17
+ * cannot drift on what "valid" means. Never exported from `src/domain/index.ts`.
18
+ */
19
+ export declare function isValidDigitCount(digits: number): boolean;
20
+ /** Whether an input rate is a 0..1 ratio or an already-scaled 0..100 percent.
21
+ * Defaults to 'ratio' — no guessing from magnitude. */
22
+ export type PercentUnit = 'ratio' | 'percent';
23
+ export type FormatPercentOptions = {
24
+ /** Fraction digits. Defaults to 1. */
25
+ digits?: number;
26
+ /** How to interpret `value`. 'ratio' (default) ×100; 'percent' is already 0..100. */
27
+ unit?: PercentUnit;
28
+ /** BCP 47 locale for the decimal mark. Defaults to the runtime locale. */
29
+ locale?: string;
30
+ };
31
+ /**
32
+ * Format a rate as a percent string. `unit` is explicit, never inferred from
33
+ * magnitude: 'ratio' (default) treats `value` as 0..1 and scales ×100;
34
+ * 'percent' treats `value` as already 0..100.
35
+ *
36
+ * Uses Intl style:'percent' for correct rounding and a locale-aware decimal
37
+ * mark. Intl multiplies its input by 100, so we always feed it the RATIO —
38
+ * a 'percent' input is divided by 100 first.
39
+ */
40
+ export declare function formatPercent(value: number | null | undefined, options?: FormatPercentOptions): string;
41
+ /**
42
+ * Normalize a rate to the 0..100 range for chart geometry. `unit` is explicit:
43
+ * 'ratio' (default) scales a 0..1 input ×100; 'percent' is already 0..100.
44
+ */
45
+ export declare function toPercentValue(value: number | null | undefined, unit?: PercentUnit): number;
46
+ /** Thousands-grouped integer count. `locale` defaults to the runtime locale. */
47
+ export declare function formatCount(value: number | null | undefined, locale?: string): string;
48
+ /**
49
+ * Humanize a millisecond duration into the largest two sensible units.
50
+ * 0ms → "0s". Sub-minute → seconds. Otherwise the two most-significant
51
+ * CONTIGUOUS d/h/m units from the largest non-zero unit down — so "2d 0h 5m"
52
+ * renders as "2d 0h", not the misleading "2d 5m".
53
+ *
54
+ * Note: the d/h/m/s suffixes are English; localizing them is deferred.
55
+ */
56
+ export declare function humanizeDurationMs(ms: number | null | undefined): string;
57
+ //# sourceMappingURL=format.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../../src/domain/format.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;2DAC2D;AAC3D,eAAO,MAAM,QAAQ,WAAM,CAAA;AAE3B;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAEzD;AAED;uDACuD;AACvD,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,SAAS,CAAA;AAE7C,MAAM,MAAM,oBAAoB,GAAG;IACjC,sCAAsC;IACtC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,qFAAqF;IACrF,IAAI,CAAC,EAAE,WAAW,CAAA;IAClB,0EAA0E;IAC1E,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,CAAA;AAED;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAChC,OAAO,GAAE,oBAAyB,GACjC,MAAM,CAaR;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAChC,IAAI,GAAE,WAAqB,GAC1B,MAAM,CAIR;AAED,gFAAgF;AAChF,wBAAgB,WAAW,CACzB,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAChC,MAAM,CAAC,EAAE,MAAM,GACd,MAAM,CAMR;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAuBxE"}
@@ -0,0 +1,94 @@
1
+ /**
2
+ * Ledger-kit formatting helpers. Pure functions, no React. `MoneyText` owns
3
+ * monetary formatting; these cover percent, integer counts, and humanized
4
+ * durations (e.g. an average resolution time arriving as milliseconds).
5
+ */
6
+ /** No-value placeholder. A middle dot reads as "empty" without an em dash, and
7
+ * stays narrow enough not to disturb tabular alignment. */
8
+ export const NO_VALUE = '·';
9
+ /**
10
+ * Whether a digit count is one `Intl.NumberFormat` (and `Number#toFixed`, and
11
+ * `String#repeat`) will actually accept: a finite integer in 0..100. Anything
12
+ * else — a negative, a fraction, NaN, Infinity — makes those constructors throw
13
+ * a RangeError, which on a money surface means a blank screen instead of a
14
+ * number. Every caller turns an invalid count into the no-value path instead.
15
+ *
16
+ * Internal: shared by `format`, `money-text` and `money-math` so the three
17
+ * cannot drift on what "valid" means. Never exported from `src/domain/index.ts`.
18
+ */
19
+ export function isValidDigitCount(digits) {
20
+ return Number.isInteger(digits) && digits >= 0 && digits <= 100;
21
+ }
22
+ /**
23
+ * Format a rate as a percent string. `unit` is explicit, never inferred from
24
+ * magnitude: 'ratio' (default) treats `value` as 0..1 and scales ×100;
25
+ * 'percent' treats `value` as already 0..100.
26
+ *
27
+ * Uses Intl style:'percent' for correct rounding and a locale-aware decimal
28
+ * mark. Intl multiplies its input by 100, so we always feed it the RATIO —
29
+ * a 'percent' input is divided by 100 first.
30
+ */
31
+ export function formatPercent(value, options = {}) {
32
+ if (value === null || value === undefined || !Number.isFinite(value))
33
+ return NO_VALUE;
34
+ const { digits = 1, unit = 'ratio', locale } = options;
35
+ // A caller-supplied digit count reaches Intl directly; an out-of-range one
36
+ // would throw a RangeError and take the whole surface down with it.
37
+ if (!isValidDigitCount(digits))
38
+ return NO_VALUE;
39
+ const ratio = unit === 'percent' ? value / 100 : value;
40
+ return new Intl.NumberFormat(locale, {
41
+ style: 'percent',
42
+ minimumFractionDigits: digits,
43
+ maximumFractionDigits: digits
44
+ }).format(ratio);
45
+ }
46
+ /**
47
+ * Normalize a rate to the 0..100 range for chart geometry. `unit` is explicit:
48
+ * 'ratio' (default) scales a 0..1 input ×100; 'percent' is already 0..100.
49
+ */
50
+ export function toPercentValue(value, unit = 'ratio') {
51
+ if (value === null || value === undefined || !Number.isFinite(value))
52
+ return 0;
53
+ const pct = unit === 'percent' ? value : value * 100;
54
+ return Math.max(0, Math.min(100, pct));
55
+ }
56
+ /** Thousands-grouped integer count. `locale` defaults to the runtime locale. */
57
+ export function formatCount(value, locale) {
58
+ if (value === null || value === undefined || !Number.isFinite(value))
59
+ return NO_VALUE;
60
+ return new Intl.NumberFormat(locale, { maximumFractionDigits: 0 }).format(value);
61
+ }
62
+ /**
63
+ * Humanize a millisecond duration into the largest two sensible units.
64
+ * 0ms → "0s". Sub-minute → seconds. Otherwise the two most-significant
65
+ * CONTIGUOUS d/h/m units from the largest non-zero unit down — so "2d 0h 5m"
66
+ * renders as "2d 0h", not the misleading "2d 5m".
67
+ *
68
+ * Note: the d/h/m/s suffixes are English; localizing them is deferred.
69
+ */
70
+ export function humanizeDurationMs(ms) {
71
+ if (ms == null || !Number.isFinite(ms) || ms < 0)
72
+ return NO_VALUE;
73
+ if (ms === 0)
74
+ return '0s';
75
+ const totalSeconds = Math.round(ms / 1000);
76
+ if (totalSeconds < 60)
77
+ return `${totalSeconds}s`;
78
+ const days = Math.floor(totalSeconds / 86400);
79
+ const hours = Math.floor((totalSeconds % 86400) / 3600);
80
+ const minutes = Math.floor((totalSeconds % 3600) / 60);
81
+ // Two contiguous units starting at the largest non-zero unit, in order.
82
+ const units = [
83
+ [days, 'd'],
84
+ [hours, 'h'],
85
+ [minutes, 'm']
86
+ ];
87
+ const start = units.findIndex(([n]) => n > 0);
88
+ if (start === -1)
89
+ return `${minutes}m`;
90
+ return units
91
+ .slice(start, start + 2)
92
+ .map(([n, suffix]) => `${n}${suffix}`)
93
+ .join(' ');
94
+ }
@@ -0,0 +1,22 @@
1
+ export { NO_VALUE, formatCount, formatPercent, humanizeDurationMs, toPercentValue } from './format.js';
2
+ export type { FormatPercentOptions, PercentUnit } from './format.js';
3
+ export { moneyDiff } from './money-diff.js';
4
+ export { MoneyText } from './money-text/index.js';
5
+ export type { MoneyTextProps } from './money-text/index.js';
6
+ export { FIGURE_CLASS, Figure } from './figure/index.js';
7
+ export type { FigureProps, FigureSize } from './figure/index.js';
8
+ export { SectionLabel } from './section-label/index.js';
9
+ export type { SectionLabelProps } from './section-label/index.js';
10
+ export { Blotter, BlotterRow } from './blotter/index.js';
11
+ export type { BlotterProps, BlotterRowProps } from './blotter/index.js';
12
+ export { LedgerPanel, LedgerSheet } from './ledger-sheet/index.js';
13
+ export type { LedgerPanelProps, LedgerSheetProps } from './ledger-sheet/index.js';
14
+ export { KeyId } from './key-id/index.js';
15
+ export type { KeyIdKind, KeyIdProps } from './key-id/index.js';
16
+ export { Dot, LivePulse, StatusRail } from './status-rail/index.js';
17
+ export type { StatusRailChip, StatusRailItem, StatusRailProps } from './status-rail/index.js';
18
+ export { ThresholdGauge, gaugeBand } from './threshold-gauge/index.js';
19
+ export type { GaugeBand, GaugeDirection, GaugeEdges, GaugeFormat, GaugeThresholds, ThresholdGaugeProps } from './threshold-gauge/index.js';
20
+ export { DelinquencyAging } from './delinquency-aging/index.js';
21
+ export type { DelinquencyAgingProps, DelinquencyBucket } from './delinquency-aging/index.js';
22
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/domain/index.ts"],"names":[],"mappings":"AASA,OAAO,EACL,QAAQ,EACR,WAAW,EACX,aAAa,EACb,kBAAkB,EAClB,cAAc,EACf,MAAM,UAAU,CAAA;AACjB,YAAY,EAAE,oBAAoB,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAEjE,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAExC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AACxC,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAElD,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AAC/C,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAEvD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAC9C,YAAY,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAExD,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AAC/C,YAAY,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAE9D,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AACzD,YAAY,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAExE,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAA;AAChC,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAErD,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC1D,YAAY,EACV,cAAc,EACd,cAAc,EACd,eAAe,EAChB,MAAM,eAAe,CAAA;AAEtB,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAC7D,YAAY,EACV,SAAS,EACT,cAAc,EACd,UAAU,EACV,WAAW,EACX,eAAe,EACf,mBAAmB,EACpB,MAAM,mBAAmB,CAAA;AAE1B,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AACtD,YAAY,EACV,qBAAqB,EACrB,iBAAiB,EAClB,MAAM,qBAAqB,CAAA"}
@@ -0,0 +1,19 @@
1
+ // Owned by lane domain — see docs/plans/2026-08-26-sindarian-x-retirement/
2
+ //
3
+ // The finance domain grammar absorbed from @lerianstudio/sindarian-x@0.15.0.
4
+ // Exports are NAMED (never `export *`) on purpose: the port census freezes the
5
+ // public surface to exactly the symbols the four migrating apps import, and the
6
+ // money-math internals (`toMinor`, `Amount`, `sumMinor`, `formatMoneyParts`,
7
+ // `maskKeyId`, `AgingBuckets`, …) stay module-private so they never become an
8
+ // API this package has to keep.
9
+ export { NO_VALUE, formatCount, formatPercent, humanizeDurationMs, toPercentValue } from './format.js';
10
+ export { moneyDiff } from './money-diff.js';
11
+ export { MoneyText } from './money-text/index.js';
12
+ export { FIGURE_CLASS, Figure } from './figure/index.js';
13
+ export { SectionLabel } from './section-label/index.js';
14
+ export { Blotter, BlotterRow } from './blotter/index.js';
15
+ export { LedgerPanel, LedgerSheet } from './ledger-sheet/index.js';
16
+ export { KeyId } from './key-id/index.js';
17
+ export { Dot, LivePulse, StatusRail } from './status-rail/index.js';
18
+ export { ThresholdGauge, gaugeBand } from './threshold-gauge/index.js';
19
+ export { DelinquencyAging } from './delinquency-aging/index.js';
@@ -0,0 +1,31 @@
1
+ export type KeyIdKind = 'pix-cpf' | 'pix-cnpj' | 'pix-email' | 'pix-phone' | 'pix-evp' | 'e2e' | 'idempotency' | 'generic';
2
+ export interface KeyIdProps {
3
+ value: string;
4
+ /** What the value is. Drives the mask shape and the default mask state. */
5
+ kind?: KeyIdKind;
6
+ /** Optional uppercase tag rendered before the value (e.g. 'Payer', 'E2E'). */
7
+ label?: string;
8
+ /** Override the per-kind mask default. PII kinds default true, ids default false. */
9
+ mask?: boolean;
10
+ /** Show a button that copies the RAW (unmasked) value to the clipboard. */
11
+ copyable?: boolean;
12
+ /** BCP 47 locale — reserved for future locale-aware id formatting. */
13
+ locale?: string;
14
+ className?: string;
15
+ }
16
+ /** Whether a kind masks by default (PII) — used when `mask` is not supplied.
17
+ * Internal: exported for its unit tests, never from `src/domain/index.ts`. */
18
+ export declare function masksByDefault(kind: KeyIdKind): boolean;
19
+ /**
20
+ * Mask a key for display. PII kinds get a structured mask that reveals a
21
+ * non-identifying middle and dots the rest; a value MALFORMED for its kind is
22
+ * redacted outright (see `redactPii`) rather than truncated, so a mask can never
23
+ * fall through to the raw secret. Id-shaped kinds are always middle-truncated
24
+ * (long, not secret). The copy path never uses this — it always sends the raw
25
+ * value.
26
+ *
27
+ * Internal: exported for its unit tests, never from `src/domain/index.ts`.
28
+ */
29
+ export declare function maskKeyId(value: string, kind: KeyIdKind): string;
30
+ export declare function KeyId({ value, kind, label, mask, copyable, className }: KeyIdProps): import("react").JSX.Element;
31
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/domain/key-id/index.tsx"],"names":[],"mappings":"AA2BA,MAAM,MAAM,SAAS,GACjB,SAAS,GACT,UAAU,GACV,WAAW,GACX,WAAW,GACX,SAAS,GACT,KAAK,GACL,aAAa,GACb,SAAS,CAAA;AAEb,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAA;IACb,2EAA2E;IAC3E,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB,8EAA8E;IAC9E,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,qFAAqF;IACrF,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,2EAA2E;IAC3E,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,sEAAsE;IACtE,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAeD;+EAC+E;AAC/E,wBAAgB,cAAc,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAEvD;AAiED;;;;;;;;;GASG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,GAAG,MAAM,CAahE;AAED,wBAAgB,KAAK,CAAC,EACpB,KAAK,EACL,IAAgB,EAChB,KAAK,EACL,IAAI,EACJ,QAAgB,EAChB,SAAS,EACV,EAAE,UAAU,+BAsBZ"}
@@ -0,0 +1,162 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ /**
4
+ * KeyId — a masked, copyable, traceable identifier for Brazilian rails: a Pix
5
+ * key (CPF / CNPJ / email / phone / EVP-random), an End-to-End id (E2E), an
6
+ * idempotency key, or a generic id.
7
+ *
8
+ * Two jobs at once. PII keys (CPF/CNPJ/email/phone) are masked by default so a
9
+ * shared screen or a screenshot doesn't leak a person's document or contact —
10
+ * the middle of a document is revealed, the identifying head/tail is dotted.
11
+ * Long-but-not-secret ids (EVP/E2E/idempotency/generic) are merely truncated in
12
+ * the MIDDLE so the head and tail — the parts an operator eyeballs against a
13
+ * log — stay legible.
14
+ *
15
+ * <KeyId value="529.982.247-25" kind="pix-cpf" label="Payer" copyable />
16
+ * <KeyId value="E32074158202406211200abc123def456" kind="e2e" copyable />
17
+ *
18
+ * The copy button always lifts the RAW, unmasked value to the clipboard — the
19
+ * mask is a display concern, never a data one. The masked render and the copy
20
+ * affordance are what make this a client component.
21
+ */
22
+ import { Check, Copy } from 'lucide-react';
23
+ import { useState } from 'react';
24
+ import { LABEL_VOICE_CLASS } from '../../lib/typography.js';
25
+ import { cn } from '../../lib/utils.js';
26
+ /** The dot used to redact a character. A bullet, not an asterisk: it reads as
27
+ * "hidden" without looking like a password field's shouting. */
28
+ const DOT = '•';
29
+ /** Kinds that carry PII and are masked by default. The id-shaped kinds are long
30
+ * but not secret, so they default to revealed (just truncated). */
31
+ const PII_KINDS = new Set([
32
+ 'pix-cpf',
33
+ 'pix-cnpj',
34
+ 'pix-email',
35
+ 'pix-phone'
36
+ ]);
37
+ /** Whether a kind masks by default (PII) — used when `mask` is not supplied.
38
+ * Internal: exported for its unit tests, never from `src/domain/index.ts`. */
39
+ export function masksByDefault(kind) {
40
+ return PII_KINDS.has(kind);
41
+ }
42
+ /** Keep only the digits — Brazilian documents arrive punctuated or bare. */
43
+ function digitsOf(value) {
44
+ return value.replace(/\D/g, '');
45
+ }
46
+ /**
47
+ * Truncate the MIDDLE of a long value, keeping a head and tail so an operator
48
+ * can eyeball it against a log. Short values are returned whole.
49
+ */
50
+ function truncateMiddle(value, head = 6, tail = 4) {
51
+ if (value.length <= head + tail + 1)
52
+ return value;
53
+ return `${value.slice(0, head)}…${value.slice(-tail)}`;
54
+ }
55
+ /**
56
+ * The fallback for a PII value that is MALFORMED for its kind. It must not be
57
+ * `truncateMiddle`: a short malformed value (a CPF missing a digit, a hand-typed
58
+ * document, a name-shaped email that failed the `@` check) is returned WHOLE by
59
+ * truncation, so the "masked" render leaks the very PII the mask exists to hide.
60
+ * A fixed-width dot run reveals nothing — not the content, not even the length.
61
+ *
62
+ * DELIBERATE DIVERGENCE from sindarian-x@0.15.0, which truncated instead. It
63
+ * costs the operator the ability to eyeball a malformed document against a log;
64
+ * that is the correct trade, because the alternative is a screenshot with a real
65
+ * CPF in it. An operator who needs the value passes `mask={false}` explicitly.
66
+ */
67
+ function redactPii() {
68
+ return DOT.repeat(6);
69
+ }
70
+ /** Mask all but the central block of a digit string, then re-punctuate it. */
71
+ function maskCpf(value) {
72
+ const d = digitsOf(value);
73
+ if (d.length !== 11)
74
+ return redactPii();
75
+ // Reveal the middle two blocks (456.789), dot the leading block and check digits.
76
+ return `${DOT.repeat(3)}.${d.slice(3, 6)}.${d.slice(6, 9)}-${DOT.repeat(2)}`;
77
+ }
78
+ function maskCnpj(value) {
79
+ const d = digitsOf(value);
80
+ if (d.length !== 14)
81
+ return redactPii();
82
+ // Reveal the central registration blocks, dot the head and the check digits.
83
+ return `${DOT.repeat(2)}.${d.slice(2, 5)}.${d.slice(5, 8)}/${d.slice(8, 12)}-${DOT.repeat(2)}`;
84
+ }
85
+ function maskEmail(value) {
86
+ const at = value.indexOf('@');
87
+ if (at <= 0 || at === value.length - 1)
88
+ return redactPii();
89
+ const first = value.slice(0, 1);
90
+ const domain = value.slice(at + 1);
91
+ return `${first}${DOT.repeat(3)}@${domain}`;
92
+ }
93
+ function maskPhone(value) {
94
+ const d = digitsOf(value);
95
+ // Expect a BR mobile in E.164-ish form: 55 + 2-digit area + 9 subscriber digits.
96
+ if (d.length !== 13 || !d.startsWith('55'))
97
+ return redactPii();
98
+ const area = d.slice(2, 4);
99
+ const last2 = d.slice(-2);
100
+ // Keep country + area, reveal the last two, dot the rest of the subscriber run.
101
+ return `+55 (${area}) ${DOT.repeat(5)}-${DOT.repeat(2)}${last2}`;
102
+ }
103
+ /**
104
+ * Mask a key for display. PII kinds get a structured mask that reveals a
105
+ * non-identifying middle and dots the rest; a value MALFORMED for its kind is
106
+ * redacted outright (see `redactPii`) rather than truncated, so a mask can never
107
+ * fall through to the raw secret. Id-shaped kinds are always middle-truncated
108
+ * (long, not secret). The copy path never uses this — it always sends the raw
109
+ * value.
110
+ *
111
+ * Internal: exported for its unit tests, never from `src/domain/index.ts`.
112
+ */
113
+ export function maskKeyId(value, kind) {
114
+ switch (kind) {
115
+ case 'pix-cpf':
116
+ return maskCpf(value);
117
+ case 'pix-cnpj':
118
+ return maskCnpj(value);
119
+ case 'pix-email':
120
+ return maskEmail(value);
121
+ case 'pix-phone':
122
+ return maskPhone(value);
123
+ default:
124
+ return truncateMiddle(value);
125
+ }
126
+ }
127
+ export function KeyId({ value, kind = 'generic', label, mask, copyable = false, className }) {
128
+ const masked = mask ?? masksByDefault(kind);
129
+ const display = masked ? maskKeyId(value, kind) : truncateMiddle(value);
130
+ return (_jsxs("span", { className: cn('inline-flex min-w-0 items-center gap-2', className), children: [label ? (_jsx("span", { className: cn(LABEL_VOICE_CLASS, 'shrink-0'), children: label })) : null, _jsx("span", { className: "text-foreground truncate font-mono text-xs tabular-nums",
131
+ // The raw value as a tooltip only when nothing is hidden — never leak a
132
+ // masked PII value through the title attribute.
133
+ title: masked ? undefined : value, children: display }), copyable ? _jsx(CopyValue, { value: value }) : null] }));
134
+ }
135
+ /** The copy affordance: lifts the RAW value to the clipboard and flips to a
136
+ * check for a beat. The transient confirmation is announced for assistive tech;
137
+ * the icon is paired with a text aria-label so the state isn't color-only. */
138
+ function CopyValue({ value }) {
139
+ const [copied, setCopied] = useState(false);
140
+ const copy = () => {
141
+ // ponytail: best-effort clipboard write — no toast, no error surface. The
142
+ // ceiling is silent failure in an insecure context (clipboard unavailable);
143
+ // upgrade path is to lift a result up via an onCopy callback when a caller
144
+ // needs to react.
145
+ //
146
+ // The rejection handler is NOT optional: `writeText` rejects on a denied
147
+ // permission or a non-secure context, and an unhandled rejection in a render
148
+ // tree is a console error at best and a crashed handler at worst. On failure
149
+ // the button simply does not flip to the copied state, so the operator sees
150
+ // that nothing was copied rather than a false confirmation.
151
+ void navigator.clipboard
152
+ ?.writeText(value)
153
+ .then(() => {
154
+ setCopied(true);
155
+ setTimeout(() => setCopied(false), 1500);
156
+ })
157
+ .catch(() => {
158
+ setCopied(false);
159
+ });
160
+ };
161
+ return (_jsx("button", { type: "button", onClick: copy, "aria-label": copied ? 'Copiado para a área de transferência' : 'Copiar valor', className: "text-muted-foreground hover:text-foreground focus:ring-ring inline-flex size-5 shrink-0 items-center justify-center rounded-sm transition-colors duration-150 ease-out focus:ring-2 focus:outline-none", children: copied ? (_jsx(Check, { "aria-hidden": true, className: "text-system-success size-3" })) : (_jsx(Copy, { "aria-hidden": true, className: "size-3" })) }));
162
+ }
@@ -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,24 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { cn } from '../../lib/utils.js';
3
+ /** Tailwind needs literal class names to survive purge; map cols → class. */
4
+ const COLS_CLASS = {
5
+ 1: 'lg:grid-cols-1',
6
+ 2: 'lg:grid-cols-2',
7
+ 3: 'lg:grid-cols-3',
8
+ 4: 'lg:grid-cols-4'
9
+ };
10
+ export function LedgerSheet({ children, cols = 1, className }) {
11
+ return (_jsx("div", { className: 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 }));
12
+ }
13
+ /**
14
+ * One cell of a ledger sheet. Flush — no own border or shadow — with `bg-card`,
15
+ * internal `p-5` padding and `flex h-full flex-col gap-4` so panels stretch to
16
+ * equal height. Start each panel with a `<SectionLabel>` as its heading.
17
+ *
18
+ * Remaining props land on the rendered element, so a composed panel can carry
19
+ * its own `data-*` hooks (StatCard's `data-tone`, for one) without wrapping the
20
+ * cell in an extra div that would break the hairline seams.
21
+ */
22
+ export function LedgerPanel({ children, className, as: Tag = 'section', ...rest }) {
23
+ return (_jsx(Tag, { className: cn('bg-card flex h-full flex-col gap-4 p-5', className), ...rest, children: children }));
24
+ }
@@ -0,0 +1,23 @@
1
+ import type { Amount } from './money-math.js';
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,45 @@
1
+ /**
2
+ * moneyDiff — the signed difference between two reconciliation sides, computed
3
+ * on integer minor units and never on floats.
4
+ *
5
+ * THIRD RAIL (money): `left − right` runs through `toMinor` on both operands →
6
+ * BigInt subtraction → `minorToDecimal`, and the tolerance breach test compares
7
+ * MAGNITUDES in minor units. A float subtraction of two decimals would drift by
8
+ * a cent at reconciliation scale, which is the difference between a matched and
9
+ * an unmatched pair.
10
+ *
11
+ * A null `decimal` means an unparseable operand — surfaced, never coerced to
12
+ * zero, so a caller renders the no-value placeholder rather than a fabricated
13
+ * tie.
14
+ */
15
+ import { minorDigitsOf, minorToDecimal, toMinor } from './money-math.js';
16
+ export function moneyDiff(money) {
17
+ const scale = money.minorDigits ?? minorDigitsOf(money.currency);
18
+ const l = toMinor(money.left, scale);
19
+ const r = toMinor(money.right, scale);
20
+ if (l === null || r === null)
21
+ return { decimal: null, breach: false };
22
+ const diff = l - r;
23
+ // A tolerance that was SUPPLIED but does not parse ('', 'oops', '-.') is not
24
+ // the same thing as no tolerance at all. Degrading to the no-tolerance rule
25
+ // made every nonzero difference a breach, so one typo in a tolerance field
26
+ // turned a reconciled book into a screen of false breaches — the loudest
27
+ // possible wrong answer. A supplied-invalid tolerance is INDETERMINATE,
28
+ // exactly like an unparseable operand: no number, no verdict.
29
+ const supplied = money.tolerance != null;
30
+ const rawTol = supplied ? toMinor(money.tolerance, scale) : null;
31
+ if (supplied && rawTol === null)
32
+ return { decimal: null, breach: false };
33
+ // A tolerance is a BAND WIDTH, so only its magnitude is meaningful. Taken
34
+ // signed, a negative tolerance made `|diff| > tol` true for every value
35
+ // including an exact tie (0n > -5n), flagging perfectly reconciled pairs as
36
+ // breaches. Normalizing to the magnitude means `-0.05` and `0.05` describe the
37
+ // same band, which is the only reading of a negative tolerance that is not a
38
+ // silent false alarm.
39
+ const tol = rawTol === null ? null : rawTol < 0n ? -rawTol : rawTol;
40
+ const abs = diff < 0n ? -diff : diff;
41
+ // A breach is a magnitude STRICTLY beyond the band; no tolerance → no band, so
42
+ // any nonzero difference is itself the breach.
43
+ const breach = tol === null ? diff !== 0n : abs > tol;
44
+ return { decimal: minorToDecimal(diff, scale), breach };
45
+ }
@@ -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"}