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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (659) hide show
  1. package/dist/charts/chart.d.ts +64 -0
  2. package/dist/charts/chart.d.ts.map +1 -0
  3. package/dist/charts/chart.js +232 -0
  4. package/dist/charts/index.d.ts +3 -0
  5. package/dist/charts/index.d.ts.map +1 -0
  6. package/dist/charts/index.js +11 -0
  7. package/dist/components/breadcrumb/get-breadcrumb-paths.js +5 -2
  8. package/dist/components/form/date-time-picker-field/index.js +1 -1
  9. package/dist/components/form/file-upload-field/index.d.ts +52 -0
  10. package/dist/components/form/file-upload-field/index.d.ts.map +1 -0
  11. package/dist/components/form/file-upload-field/index.js +64 -0
  12. package/dist/components/form/index.d.ts +3 -0
  13. package/dist/components/form/index.d.ts.map +1 -1
  14. package/dist/components/form/index.js +3 -0
  15. package/dist/components/form/radio-group-field/index.d.ts +32 -0
  16. package/dist/components/form/radio-group-field/index.d.ts.map +1 -0
  17. package/dist/components/form/radio-group-field/index.js +36 -0
  18. package/dist/components/form/renderable-label.d.ts +35 -0
  19. package/dist/components/form/renderable-label.d.ts.map +1 -0
  20. package/dist/components/form/renderable-label.js +57 -0
  21. package/dist/components/form/textarea-field/index.d.ts +31 -0
  22. package/dist/components/form/textarea-field/index.d.ts.map +1 -0
  23. package/dist/components/form/textarea-field/index.js +23 -0
  24. package/dist/components/table/id-table-cell.js +5 -2
  25. package/dist/components/ui/accordion/index.d.ts +14 -0
  26. package/dist/components/ui/accordion/index.d.ts.map +1 -0
  27. package/dist/components/ui/accordion/index.js +62 -0
  28. package/dist/components/ui/alert-dialog/index.d.ts +15 -0
  29. package/dist/components/ui/alert-dialog/index.d.ts.map +1 -0
  30. package/dist/components/ui/alert-dialog/index.js +84 -0
  31. package/dist/components/ui/autocomplete/index.js +4 -4
  32. package/dist/components/ui/badge/index.d.ts.map +1 -1
  33. package/dist/components/ui/badge/index.js +2 -2
  34. package/dist/components/ui/button/index.d.ts.map +1 -1
  35. package/dist/components/ui/button/index.js +1 -1
  36. package/dist/components/ui/copy-field/index.d.ts +56 -0
  37. package/dist/components/ui/copy-field/index.d.ts.map +1 -0
  38. package/dist/components/ui/copy-field/index.js +155 -0
  39. package/dist/components/ui/dialog/styles.css +3 -3
  40. package/dist/components/ui/file-upload/index.d.ts +94 -0
  41. package/dist/components/ui/file-upload/index.d.ts.map +1 -0
  42. package/dist/components/ui/file-upload/index.js +237 -0
  43. package/dist/components/ui/hover-card/index.d.ts +7 -0
  44. package/dist/components/ui/hover-card/index.d.ts.map +1 -0
  45. package/dist/components/ui/hover-card/index.js +51 -0
  46. package/dist/components/ui/icon-button/styles.css +24 -24
  47. package/dist/components/ui/input/index.d.ts.map +1 -1
  48. package/dist/components/ui/input/index.js +6 -5
  49. package/dist/components/ui/input/styles.css +6 -2
  50. package/dist/components/ui/otp-input/index.d.ts.map +1 -1
  51. package/dist/components/ui/otp-input/index.js +1 -1
  52. package/dist/components/ui/qr-code/index.d.ts +26 -0
  53. package/dist/components/ui/qr-code/index.d.ts.map +1 -0
  54. package/dist/components/ui/qr-code/index.js +27 -0
  55. package/dist/components/ui/radio-group/index.d.ts +6 -0
  56. package/dist/components/ui/radio-group/index.d.ts.map +1 -0
  57. package/dist/components/ui/radio-group/index.js +48 -0
  58. package/dist/components/ui/scroll-area/index.d.ts +6 -0
  59. package/dist/components/ui/scroll-area/index.d.ts.map +1 -0
  60. package/dist/components/ui/scroll-area/index.js +49 -0
  61. package/dist/components/ui/sidebar/index.d.ts +1 -0
  62. package/dist/components/ui/sidebar/index.d.ts.map +1 -1
  63. package/dist/components/ui/sidebar/index.js +1 -0
  64. package/dist/components/ui/sidebar/next-router.cjs +119 -0
  65. package/dist/components/ui/sidebar/next-router.d.cts +7 -0
  66. package/dist/components/ui/sidebar/sidebar-item-button.d.ts +2 -2
  67. package/dist/components/ui/sidebar/sidebar-item-button.d.ts.map +1 -1
  68. package/dist/components/ui/sidebar/sidebar-item-button.js +3 -5
  69. package/dist/components/ui/sidebar/sidebar-item-icon-button.d.ts +3 -3
  70. package/dist/components/ui/sidebar/sidebar-item-icon-button.d.ts.map +1 -1
  71. package/dist/components/ui/sidebar/sidebar-item-icon-button.js +5 -7
  72. package/dist/components/ui/sidebar/sidebar-item.d.ts.map +1 -1
  73. package/dist/components/ui/sidebar/sidebar-item.js +3 -2
  74. package/dist/components/ui/sidebar/sidebar-router.d.ts +82 -0
  75. package/dist/components/ui/sidebar/sidebar-router.d.ts.map +1 -0
  76. package/dist/components/ui/sidebar/sidebar-router.js +126 -0
  77. package/dist/components/ui/toast/index.d.ts +1 -1
  78. package/dist/components/ui/toast/index.d.ts.map +1 -1
  79. package/dist/components/ui/toggle-group/index.d.ts +18 -0
  80. package/dist/components/ui/toggle-group/index.d.ts.map +1 -0
  81. package/dist/components/ui/toggle-group/index.js +87 -0
  82. package/dist/domain/blotter/index.d.ts +40 -0
  83. package/dist/domain/blotter/index.d.ts.map +1 -0
  84. package/dist/domain/blotter/index.js +16 -0
  85. package/dist/domain/delinquency-aging/aging-buckets.d.ts +57 -0
  86. package/dist/domain/delinquency-aging/aging-buckets.d.ts.map +1 -0
  87. package/dist/domain/delinquency-aging/aging-buckets.js +110 -0
  88. package/dist/domain/delinquency-aging/index.d.ts +71 -0
  89. package/dist/domain/delinquency-aging/index.d.ts.map +1 -0
  90. package/dist/domain/delinquency-aging/index.js +213 -0
  91. package/dist/domain/figure/index.d.ts +30 -0
  92. package/dist/domain/figure/index.d.ts.map +1 -0
  93. package/dist/domain/figure/index.js +18 -0
  94. package/dist/domain/format.d.ts +79 -0
  95. package/dist/domain/format.d.ts.map +1 -0
  96. package/dist/domain/format.js +137 -0
  97. package/dist/domain/index.d.ts +23 -0
  98. package/dist/domain/index.d.ts.map +1 -0
  99. package/dist/domain/index.js +43 -0
  100. package/dist/domain/key-id/index.d.ts +31 -0
  101. package/dist/domain/key-id/index.d.ts.map +1 -0
  102. package/dist/domain/key-id/index.js +174 -0
  103. package/dist/domain/ledger-sheet/index.d.ts +45 -0
  104. package/dist/domain/ledger-sheet/index.d.ts.map +1 -0
  105. package/dist/domain/ledger-sheet/index.js +28 -0
  106. package/dist/domain/money-diff.d.ts +28 -0
  107. package/dist/domain/money-diff.d.ts.map +1 -0
  108. package/dist/domain/money-diff.js +48 -0
  109. package/dist/domain/money-math.d.ts +32 -0
  110. package/dist/domain/money-math.d.ts.map +1 -0
  111. package/dist/domain/money-math.js +104 -0
  112. package/dist/domain/money-text/index.d.ts +37 -0
  113. package/dist/domain/money-text/index.d.ts.map +1 -0
  114. package/dist/domain/money-text/index.js +115 -0
  115. package/dist/domain/section-label/index.d.ts +21 -0
  116. package/dist/domain/section-label/index.d.ts.map +1 -0
  117. package/dist/domain/section-label/index.js +13 -0
  118. package/dist/domain/status-rail/index.d.ts +40 -0
  119. package/dist/domain/status-rail/index.d.ts.map +1 -0
  120. package/dist/domain/status-rail/index.js +72 -0
  121. package/dist/domain/threshold-gauge/index.d.ts +84 -0
  122. package/dist/domain/threshold-gauge/index.d.ts.map +1 -0
  123. package/dist/domain/threshold-gauge/index.js +157 -0
  124. package/dist/enterprise/alert-banner/index.d.ts +30 -0
  125. package/dist/enterprise/alert-banner/index.d.ts.map +1 -0
  126. package/dist/enterprise/alert-banner/index.js +24 -0
  127. package/dist/enterprise/app-shell/index.d.ts +61 -0
  128. package/dist/enterprise/app-shell/index.d.ts.map +1 -0
  129. package/dist/enterprise/app-shell/index.js +87 -0
  130. package/dist/enterprise/cursor-pager/index.d.ts +21 -0
  131. package/dist/enterprise/cursor-pager/index.d.ts.map +1 -0
  132. package/dist/enterprise/cursor-pager/index.js +26 -0
  133. package/dist/enterprise/data-table/index.d.ts +88 -0
  134. package/dist/enterprise/data-table/index.d.ts.map +1 -0
  135. package/dist/enterprise/data-table/index.js +245 -0
  136. package/dist/enterprise/date-range-picker/index.d.ts +37 -0
  137. package/dist/enterprise/date-range-picker/index.d.ts.map +1 -0
  138. package/dist/enterprise/date-range-picker/index.js +92 -0
  139. package/dist/enterprise/detail-panel/index.d.ts +54 -0
  140. package/dist/enterprise/detail-panel/index.d.ts.map +1 -0
  141. package/dist/enterprise/detail-panel/index.js +20 -0
  142. package/dist/enterprise/empty-state/index.d.ts +32 -0
  143. package/dist/enterprise/empty-state/index.d.ts.map +1 -0
  144. package/dist/enterprise/empty-state/index.js +13 -0
  145. package/dist/enterprise/index.d.ts +26 -0
  146. package/dist/enterprise/index.d.ts.map +1 -0
  147. package/dist/enterprise/index.js +39 -0
  148. package/dist/enterprise/number-input/index.d.ts +55 -0
  149. package/dist/enterprise/number-input/index.d.ts.map +1 -0
  150. package/dist/enterprise/number-input/index.js +252 -0
  151. package/dist/enterprise/search-input/index.d.ts +32 -0
  152. package/dist/enterprise/search-input/index.d.ts.map +1 -0
  153. package/dist/enterprise/search-input/index.js +121 -0
  154. package/dist/enterprise/stat-card/index.d.ts +43 -0
  155. package/dist/enterprise/stat-card/index.d.ts.map +1 -0
  156. package/dist/enterprise/stat-card/index.js +67 -0
  157. package/dist/enterprise/status-badge/index.d.ts +31 -0
  158. package/dist/enterprise/status-badge/index.d.ts.map +1 -0
  159. package/dist/enterprise/status-badge/index.js +120 -0
  160. package/dist/enterprise/use-is-mobile.d.ts +20 -0
  161. package/dist/enterprise/use-is-mobile.d.ts.map +1 -0
  162. package/dist/enterprise/use-is-mobile.js +68 -0
  163. package/dist/enterprise/virtualized-table/index.d.ts +26 -0
  164. package/dist/enterprise/virtualized-table/index.d.ts.map +1 -0
  165. package/dist/enterprise/virtualized-table/index.js +114 -0
  166. package/dist/esm/charts/chart.d.ts +64 -0
  167. package/dist/esm/charts/chart.d.ts.map +1 -0
  168. package/dist/esm/charts/chart.js +191 -0
  169. package/dist/esm/charts/index.d.ts +3 -0
  170. package/dist/esm/charts/index.d.ts.map +1 -0
  171. package/dist/esm/charts/index.js +3 -0
  172. package/dist/esm/components/breadcrumb/get-breadcrumb-paths.d.ts +10 -0
  173. package/dist/esm/components/breadcrumb/get-breadcrumb-paths.d.ts.map +1 -0
  174. package/dist/esm/components/breadcrumb/get-breadcrumb-paths.js +12 -0
  175. package/dist/esm/components/breadcrumb/index.d.ts +11 -0
  176. package/dist/esm/components/breadcrumb/index.d.ts.map +1 -0
  177. package/dist/esm/components/breadcrumb/index.js +6 -0
  178. package/dist/esm/components/card/account-card/index.d.ts +32 -0
  179. package/dist/esm/components/card/account-card/index.d.ts.map +1 -0
  180. package/dist/esm/components/card/account-card/index.js +53 -0
  181. package/dist/esm/components/card/basic-card/index.d.ts +6 -0
  182. package/dist/esm/components/card/basic-card/index.d.ts.map +1 -0
  183. package/dist/esm/components/card/basic-card/index.js +14 -0
  184. package/dist/esm/components/card/dashboard-card/index.d.ts +5 -0
  185. package/dist/esm/components/card/dashboard-card/index.d.ts.map +1 -0
  186. package/dist/esm/components/card/dashboard-card/index.js +14 -0
  187. package/dist/esm/components/card/entity-card/index.d.ts +22 -0
  188. package/dist/esm/components/card/entity-card/index.d.ts.map +1 -0
  189. package/dist/esm/components/card/entity-card/index.js +48 -0
  190. package/dist/esm/components/card/index.d.ts +5 -0
  191. package/dist/esm/components/card/index.d.ts.map +1 -0
  192. package/dist/esm/components/card/index.js +4 -0
  193. package/dist/esm/components/dialog/confirmation-dialog/index.d.ts +16 -0
  194. package/dist/esm/components/dialog/confirmation-dialog/index.d.ts.map +1 -0
  195. package/dist/esm/components/dialog/confirmation-dialog/index.js +25 -0
  196. package/dist/esm/components/dialog/confirmation-dialog/use-confirm-dialog.d.ts +31 -0
  197. package/dist/esm/components/dialog/confirmation-dialog/use-confirm-dialog.d.ts.map +1 -0
  198. package/dist/esm/components/dialog/confirmation-dialog/use-confirm-dialog.js +49 -0
  199. package/dist/esm/components/dialog/index.d.ts +4 -0
  200. package/dist/esm/components/dialog/index.d.ts.map +1 -0
  201. package/dist/esm/components/dialog/index.js +3 -0
  202. package/dist/esm/components/dialog/large-dialog/index.d.ts +11 -0
  203. package/dist/esm/components/dialog/large-dialog/index.d.ts.map +1 -0
  204. package/dist/esm/components/dialog/large-dialog/index.js +16 -0
  205. package/dist/esm/components/entity-box/index.d.ts +17 -0
  206. package/dist/esm/components/entity-box/index.d.ts.map +1 -0
  207. package/dist/esm/components/entity-box/index.js +31 -0
  208. package/dist/esm/components/entity-data-table/index.d.ts +17 -0
  209. package/dist/esm/components/entity-data-table/index.d.ts.map +1 -0
  210. package/dist/esm/components/entity-data-table/index.js +17 -0
  211. package/dist/esm/components/form/combo-box-field/index.d.ts +14 -0
  212. package/dist/esm/components/form/combo-box-field/index.d.ts.map +1 -0
  213. package/dist/esm/components/form/combo-box-field/index.js +28 -0
  214. package/dist/esm/components/form/country-field/index.d.ts +5 -0
  215. package/dist/esm/components/form/country-field/index.d.ts.map +1 -0
  216. package/dist/esm/components/form/country-field/index.js +7 -0
  217. package/dist/esm/components/form/date-picker-field/index.d.ts +21 -0
  218. package/dist/esm/components/form/date-picker-field/index.d.ts.map +1 -0
  219. package/dist/esm/components/form/date-picker-field/index.js +38 -0
  220. package/dist/esm/components/form/date-range-field/index.d.ts +21 -0
  221. package/dist/esm/components/form/date-range-field/index.d.ts.map +1 -0
  222. package/dist/esm/components/form/date-range-field/index.js +17 -0
  223. package/dist/esm/components/form/date-time-picker-field/index.d.ts +23 -0
  224. package/dist/esm/components/form/date-time-picker-field/index.d.ts.map +1 -0
  225. package/dist/esm/components/form/date-time-picker-field/index.js +73 -0
  226. package/dist/esm/components/form/file-upload-field/index.d.ts +52 -0
  227. package/dist/esm/components/form/file-upload-field/index.d.ts.map +1 -0
  228. package/dist/esm/components/form/file-upload-field/index.js +60 -0
  229. package/dist/esm/components/form/index.d.ts +16 -0
  230. package/dist/esm/components/form/index.d.ts.map +1 -0
  231. package/dist/esm/components/form/index.js +15 -0
  232. package/dist/esm/components/form/input-field/index.d.ts +26 -0
  233. package/dist/esm/components/form/input-field/index.d.ts.map +1 -0
  234. package/dist/esm/components/form/input-field/index.js +10 -0
  235. package/dist/esm/components/form/otp-field/index.d.ts +18 -0
  236. package/dist/esm/components/form/otp-field/index.d.ts.map +1 -0
  237. package/dist/esm/components/form/otp-field/index.js +15 -0
  238. package/dist/esm/components/form/pagination-limit-field/index.d.ts +9 -0
  239. package/dist/esm/components/form/pagination-limit-field/index.d.ts.map +1 -0
  240. package/dist/esm/components/form/pagination-limit-field/index.js +6 -0
  241. package/dist/esm/components/form/password-field/index.d.ts +14 -0
  242. package/dist/esm/components/form/password-field/index.d.ts.map +1 -0
  243. package/dist/esm/components/form/password-field/index.js +10 -0
  244. package/dist/esm/components/form/radio-group-field/index.d.ts +32 -0
  245. package/dist/esm/components/form/radio-group-field/index.d.ts.map +1 -0
  246. package/dist/esm/components/form/radio-group-field/index.js +32 -0
  247. package/dist/esm/components/form/renderable-label.d.ts +35 -0
  248. package/dist/esm/components/form/renderable-label.d.ts.map +1 -0
  249. package/dist/esm/components/form/renderable-label.js +54 -0
  250. package/dist/esm/components/form/select-field/index.d.ts +20 -0
  251. package/dist/esm/components/form/select-field/index.d.ts.map +1 -0
  252. package/dist/esm/components/form/select-field/index.js +16 -0
  253. package/dist/esm/components/form/state-field/index.d.ts +10 -0
  254. package/dist/esm/components/form/state-field/index.d.ts.map +1 -0
  255. package/dist/esm/components/form/state-field/index.js +35 -0
  256. package/dist/esm/components/form/switch-field/index.d.ts +15 -0
  257. package/dist/esm/components/form/switch-field/index.d.ts.map +1 -0
  258. package/dist/esm/components/form/switch-field/index.js +7 -0
  259. package/dist/esm/components/form/textarea-field/index.d.ts +31 -0
  260. package/dist/esm/components/form/textarea-field/index.d.ts.map +1 -0
  261. package/dist/esm/components/form/textarea-field/index.js +19 -0
  262. package/dist/esm/components/page/index.d.ts +4 -0
  263. package/dist/esm/components/page/index.d.ts.map +1 -0
  264. package/dist/esm/components/page/index.js +11 -0
  265. package/dist/esm/components/page-header/index.d.ts +33 -0
  266. package/dist/esm/components/page-header/index.d.ts.map +1 -0
  267. package/dist/esm/components/page-header/index.js +40 -0
  268. package/dist/esm/components/pagination/index.d.ts +8 -0
  269. package/dist/esm/components/pagination/index.d.ts.map +1 -0
  270. package/dist/esm/components/pagination/index.js +6 -0
  271. package/dist/esm/components/table/id-table-cell.d.ts +7 -0
  272. package/dist/esm/components/table/id-table-cell.d.ts.map +1 -0
  273. package/dist/esm/components/table/id-table-cell.js +12 -0
  274. package/dist/esm/components/table/index.d.ts +3 -0
  275. package/dist/esm/components/table/index.d.ts.map +1 -0
  276. package/dist/esm/components/table/index.js +2 -0
  277. package/dist/esm/components/table/locked-table-actions.d.ts +7 -0
  278. package/dist/esm/components/table/locked-table-actions.d.ts.map +1 -0
  279. package/dist/esm/components/table/locked-table-actions.js +7 -0
  280. package/dist/esm/components/table/name-table-cell.d.ts +6 -0
  281. package/dist/esm/components/table/name-table-cell.d.ts.map +1 -0
  282. package/dist/esm/components/table/name-table-cell.js +6 -0
  283. package/dist/esm/components/ui/accordion/index.d.ts +14 -0
  284. package/dist/esm/components/ui/accordion/index.d.ts.map +1 -0
  285. package/dist/esm/components/ui/accordion/index.js +24 -0
  286. package/dist/esm/components/ui/alert/index.d.ts +15 -0
  287. package/dist/esm/components/ui/alert/index.d.ts.map +1 -0
  288. package/dist/esm/components/ui/alert/index.js +38 -0
  289. package/dist/esm/components/ui/alert-dialog/index.d.ts +15 -0
  290. package/dist/esm/components/ui/alert-dialog/index.d.ts.map +1 -0
  291. package/dist/esm/components/ui/alert-dialog/index.js +39 -0
  292. package/dist/esm/components/ui/autocomplete/index.d.ts +54 -0
  293. package/dist/esm/components/ui/autocomplete/index.d.ts.map +1 -0
  294. package/dist/esm/components/ui/autocomplete/index.js +276 -0
  295. package/dist/esm/components/ui/autosize-textarea/index.d.ts +15 -0
  296. package/dist/esm/components/ui/autosize-textarea/index.d.ts.map +1 -0
  297. package/dist/esm/components/ui/autosize-textarea/index.js +51 -0
  298. package/dist/esm/components/ui/avatar/index.d.ts +7 -0
  299. package/dist/esm/components/ui/avatar/index.d.ts.map +1 -0
  300. package/dist/esm/components/ui/avatar/index.js +14 -0
  301. package/dist/esm/components/ui/badge/index.d.ts +11 -0
  302. package/dist/esm/components/ui/badge/index.d.ts.map +1 -0
  303. package/dist/esm/components/ui/badge/index.js +29 -0
  304. package/dist/esm/components/ui/breadcrumb/index.d.ts +12 -0
  305. package/dist/esm/components/ui/breadcrumb/index.d.ts.map +1 -0
  306. package/dist/esm/components/ui/breadcrumb/index.js +27 -0
  307. package/dist/esm/components/ui/button/index.d.ts +22 -0
  308. package/dist/esm/components/ui/button/index.d.ts.map +1 -0
  309. package/dist/esm/components/ui/button/index.js +59 -0
  310. package/dist/esm/components/ui/calendar/index.d.ts +9 -0
  311. package/dist/esm/components/ui/calendar/index.d.ts.map +1 -0
  312. package/dist/esm/components/ui/calendar/index.js +79 -0
  313. package/dist/esm/components/ui/card/index.d.ts +10 -0
  314. package/dist/esm/components/ui/card/index.d.ts.map +1 -0
  315. package/dist/esm/components/ui/card/index.js +24 -0
  316. package/dist/esm/components/ui/checkbox/index.d.ts +5 -0
  317. package/dist/esm/components/ui/checkbox/index.d.ts.map +1 -0
  318. package/dist/esm/components/ui/checkbox/index.js +9 -0
  319. package/dist/esm/components/ui/collapsible/index.d.ts +6 -0
  320. package/dist/esm/components/ui/collapsible/index.d.ts.map +1 -0
  321. package/dist/esm/components/ui/collapsible/index.js +13 -0
  322. package/dist/esm/components/ui/command/index.d.ts +14 -0
  323. package/dist/esm/components/ui/command/index.d.ts.map +1 -0
  324. package/dist/esm/components/ui/command/index.js +51 -0
  325. package/dist/esm/components/ui/copy-field/index.d.ts +56 -0
  326. package/dist/esm/components/ui/copy-field/index.d.ts.map +1 -0
  327. package/dist/esm/components/ui/copy-field/index.js +119 -0
  328. package/dist/esm/components/ui/dialog/index.d.ts +16 -0
  329. package/dist/esm/components/ui/dialog/index.d.ts.map +1 -0
  330. package/dist/esm/components/ui/dialog/index.js +36 -0
  331. package/dist/esm/components/ui/dropdown-menu/index.d.ts +27 -0
  332. package/dist/esm/components/ui/dropdown-menu/index.d.ts.map +1 -0
  333. package/dist/esm/components/ui/dropdown-menu/index.js +57 -0
  334. package/dist/esm/components/ui/field/index.d.ts +25 -0
  335. package/dist/esm/components/ui/field/index.d.ts.map +1 -0
  336. package/dist/esm/components/ui/field/index.js +68 -0
  337. package/dist/esm/components/ui/file-upload/index.d.ts +94 -0
  338. package/dist/esm/components/ui/file-upload/index.d.ts.map +1 -0
  339. package/dist/esm/components/ui/file-upload/index.js +200 -0
  340. package/dist/esm/components/ui/form.d.ts +39 -0
  341. package/dist/esm/components/ui/form.d.ts.map +1 -0
  342. package/dist/esm/components/ui/form.js +67 -0
  343. package/dist/esm/components/ui/hover-card/index.d.ts +7 -0
  344. package/dist/esm/components/ui/hover-card/index.d.ts.map +1 -0
  345. package/dist/esm/components/ui/hover-card/index.js +14 -0
  346. package/dist/esm/components/ui/icon-button/index.d.ts +13 -0
  347. package/dist/esm/components/ui/icon-button/index.d.ts.map +1 -0
  348. package/dist/esm/components/ui/icon-button/index.js +31 -0
  349. package/dist/esm/components/ui/input/adornment.d.ts +9 -0
  350. package/dist/esm/components/ui/input/adornment.d.ts.map +1 -0
  351. package/dist/esm/components/ui/input/adornment.js +17 -0
  352. package/dist/esm/components/ui/input/index.d.ts +18 -0
  353. package/dist/esm/components/ui/input/index.d.ts.map +1 -0
  354. package/dist/esm/components/ui/input/index.js +60 -0
  355. package/dist/esm/components/ui/label/index.d.ts +7 -0
  356. package/dist/esm/components/ui/label/index.d.ts.map +1 -0
  357. package/dist/esm/components/ui/label/index.js +10 -0
  358. package/dist/esm/components/ui/loading-button/index.d.ts +8 -0
  359. package/dist/esm/components/ui/loading-button/index.d.ts.map +1 -0
  360. package/dist/esm/components/ui/loading-button/index.js +7 -0
  361. package/dist/esm/components/ui/multiple-select/index.d.ts +91 -0
  362. package/dist/esm/components/ui/multiple-select/index.d.ts.map +1 -0
  363. package/dist/esm/components/ui/multiple-select/index.js +196 -0
  364. package/dist/esm/components/ui/otp-input/index.d.ts +13 -0
  365. package/dist/esm/components/ui/otp-input/index.d.ts.map +1 -0
  366. package/dist/esm/components/ui/otp-input/index.js +21 -0
  367. package/dist/esm/components/ui/paper/index.d.ts +4 -0
  368. package/dist/esm/components/ui/paper/index.d.ts.map +1 -0
  369. package/dist/esm/components/ui/paper/index.js +5 -0
  370. package/dist/esm/components/ui/paper-collapsible/index.d.ts +9 -0
  371. package/dist/esm/components/ui/paper-collapsible/index.d.ts.map +1 -0
  372. package/dist/esm/components/ui/paper-collapsible/index.js +19 -0
  373. package/dist/esm/components/ui/popover/index.d.ts +8 -0
  374. package/dist/esm/components/ui/popover/index.d.ts.map +1 -0
  375. package/dist/esm/components/ui/popover/index.js +17 -0
  376. package/dist/esm/components/ui/progress/index.d.ts +8 -0
  377. package/dist/esm/components/ui/progress/index.d.ts.map +1 -0
  378. package/dist/esm/components/ui/progress/index.js +8 -0
  379. package/dist/esm/components/ui/qr-code/index.d.ts +26 -0
  380. package/dist/esm/components/ui/qr-code/index.d.ts.map +1 -0
  381. package/dist/esm/components/ui/qr-code/index.js +24 -0
  382. package/dist/esm/components/ui/radio-group/index.d.ts +6 -0
  383. package/dist/esm/components/ui/radio-group/index.d.ts.map +1 -0
  384. package/dist/esm/components/ui/radio-group/index.js +12 -0
  385. package/dist/esm/components/ui/scroll-area/index.d.ts +6 -0
  386. package/dist/esm/components/ui/scroll-area/index.d.ts.map +1 -0
  387. package/dist/esm/components/ui/scroll-area/index.js +13 -0
  388. package/dist/esm/components/ui/select/index.d.ts +18 -0
  389. package/dist/esm/components/ui/select/index.d.ts.map +1 -0
  390. package/dist/esm/components/ui/select/index.js +47 -0
  391. package/dist/esm/components/ui/separator/index.d.ts +5 -0
  392. package/dist/esm/components/ui/separator/index.d.ts.map +1 -0
  393. package/dist/esm/components/ui/separator/index.js +8 -0
  394. package/dist/esm/components/ui/sheet/index.d.ts +19 -0
  395. package/dist/esm/components/ui/sheet/index.d.ts.map +1 -0
  396. package/dist/esm/components/ui/sheet/index.js +59 -0
  397. package/dist/esm/components/ui/sidebar/index.d.ts +11 -0
  398. package/dist/esm/components/ui/sidebar/index.d.ts.map +1 -0
  399. package/dist/esm/components/ui/sidebar/index.js +10 -0
  400. package/dist/esm/components/ui/sidebar/next-router.cjs +119 -0
  401. package/dist/esm/components/ui/sidebar/next-router.d.cts +7 -0
  402. package/dist/esm/components/ui/sidebar/sidebar-back-button.d.ts +3 -0
  403. package/dist/esm/components/ui/sidebar/sidebar-back-button.d.ts.map +1 -0
  404. package/dist/esm/components/ui/sidebar/sidebar-back-button.js +5 -0
  405. package/dist/esm/components/ui/sidebar/sidebar-components.d.ts +23 -0
  406. package/dist/esm/components/ui/sidebar/sidebar-components.d.ts.map +1 -0
  407. package/dist/esm/components/ui/sidebar/sidebar-components.js +15 -0
  408. package/dist/esm/components/ui/sidebar/sidebar-expand-button.d.ts +7 -0
  409. package/dist/esm/components/ui/sidebar/sidebar-expand-button.d.ts.map +1 -0
  410. package/dist/esm/components/ui/sidebar/sidebar-expand-button.js +12 -0
  411. package/dist/esm/components/ui/sidebar/sidebar-item-button.d.ts +12 -0
  412. package/dist/esm/components/ui/sidebar/sidebar-item-button.d.ts.map +1 -0
  413. package/dist/esm/components/ui/sidebar/sidebar-item-button.js +18 -0
  414. package/dist/esm/components/ui/sidebar/sidebar-item-collapsible.d.ts +12 -0
  415. package/dist/esm/components/ui/sidebar/sidebar-item-collapsible.d.ts.map +1 -0
  416. package/dist/esm/components/ui/sidebar/sidebar-item-collapsible.js +44 -0
  417. package/dist/esm/components/ui/sidebar/sidebar-item-icon-button.d.ts +12 -0
  418. package/dist/esm/components/ui/sidebar/sidebar-item-icon-button.d.ts.map +1 -0
  419. package/dist/esm/components/ui/sidebar/sidebar-item-icon-button.js +14 -0
  420. package/dist/esm/components/ui/sidebar/sidebar-item.d.ts +13 -0
  421. package/dist/esm/components/ui/sidebar/sidebar-item.d.ts.map +1 -0
  422. package/dist/esm/components/ui/sidebar/sidebar-item.js +16 -0
  423. package/dist/esm/components/ui/sidebar/sidebar-provider.d.ts +12 -0
  424. package/dist/esm/components/ui/sidebar/sidebar-provider.d.ts.map +1 -0
  425. package/dist/esm/components/ui/sidebar/sidebar-provider.js +51 -0
  426. package/dist/esm/components/ui/sidebar/sidebar-root.d.ts +3 -0
  427. package/dist/esm/components/ui/sidebar/sidebar-root.d.ts.map +1 -0
  428. package/dist/esm/components/ui/sidebar/sidebar-root.js +20 -0
  429. package/dist/esm/components/ui/sidebar/sidebar-router.d.ts +82 -0
  430. package/dist/esm/components/ui/sidebar/sidebar-router.d.ts.map +1 -0
  431. package/dist/esm/components/ui/sidebar/sidebar-router.js +89 -0
  432. package/dist/esm/components/ui/skeleton/index.d.ts +3 -0
  433. package/dist/esm/components/ui/skeleton/index.d.ts.map +1 -0
  434. package/dist/esm/components/ui/skeleton/index.js +6 -0
  435. package/dist/esm/components/ui/stepper/index.d.ts +18 -0
  436. package/dist/esm/components/ui/stepper/index.d.ts.map +1 -0
  437. package/dist/esm/components/ui/stepper/index.js +20 -0
  438. package/dist/esm/components/ui/switch/index.d.ts +5 -0
  439. package/dist/esm/components/ui/switch/index.d.ts.map +1 -0
  440. package/dist/esm/components/ui/switch/index.js +8 -0
  441. package/dist/esm/components/ui/table/index.d.ts +21 -0
  442. package/dist/esm/components/ui/table/index.d.ts.map +1 -0
  443. package/dist/esm/components/ui/table/index.js +44 -0
  444. package/dist/esm/components/ui/tabs/index.d.ts +8 -0
  445. package/dist/esm/components/ui/tabs/index.d.ts.map +1 -0
  446. package/dist/esm/components/ui/tabs/index.js +17 -0
  447. package/dist/esm/components/ui/textarea/index.d.ts +4 -0
  448. package/dist/esm/components/ui/textarea/index.d.ts.map +1 -0
  449. package/dist/esm/components/ui/textarea/index.js +6 -0
  450. package/dist/esm/components/ui/time-picker/index.d.ts +18 -0
  451. package/dist/esm/components/ui/time-picker/index.d.ts.map +1 -0
  452. package/dist/esm/components/ui/time-picker/index.js +49 -0
  453. package/dist/esm/components/ui/toast/index.d.ts +18 -0
  454. package/dist/esm/components/ui/toast/index.d.ts.map +1 -0
  455. package/dist/esm/components/ui/toast/index.js +2 -0
  456. package/dist/esm/components/ui/toast/toaster.d.ts +6 -0
  457. package/dist/esm/components/ui/toast/toaster.d.ts.map +1 -0
  458. package/dist/esm/components/ui/toast/toaster.js +8 -0
  459. package/dist/esm/components/ui/toggle-group/index.d.ts +18 -0
  460. package/dist/esm/components/ui/toggle-group/index.d.ts.map +1 -0
  461. package/dist/esm/components/ui/toggle-group/index.js +51 -0
  462. package/dist/esm/components/ui/tooltip/index.d.ts +11 -0
  463. package/dist/esm/components/ui/tooltip/index.d.ts.map +1 -0
  464. package/dist/esm/components/ui/tooltip/index.js +28 -0
  465. package/dist/esm/domain/blotter/index.d.ts +40 -0
  466. package/dist/esm/domain/blotter/index.d.ts.map +1 -0
  467. package/dist/esm/domain/blotter/index.js +12 -0
  468. package/dist/esm/domain/delinquency-aging/aging-buckets.d.ts +57 -0
  469. package/dist/esm/domain/delinquency-aging/aging-buckets.d.ts.map +1 -0
  470. package/dist/esm/domain/delinquency-aging/aging-buckets.js +105 -0
  471. package/dist/esm/domain/delinquency-aging/index.d.ts +71 -0
  472. package/dist/esm/domain/delinquency-aging/index.d.ts.map +1 -0
  473. package/dist/esm/domain/delinquency-aging/index.js +209 -0
  474. package/dist/esm/domain/figure/index.d.ts +30 -0
  475. package/dist/esm/domain/figure/index.d.ts.map +1 -0
  476. package/dist/esm/domain/figure/index.js +14 -0
  477. package/dist/esm/domain/format.d.ts +79 -0
  478. package/dist/esm/domain/format.d.ts.map +1 -0
  479. package/dist/esm/domain/format.js +128 -0
  480. package/dist/esm/domain/index.d.ts +23 -0
  481. package/dist/esm/domain/index.d.ts.map +1 -0
  482. package/dist/esm/domain/index.js +19 -0
  483. package/dist/esm/domain/key-id/index.d.ts +31 -0
  484. package/dist/esm/domain/key-id/index.d.ts.map +1 -0
  485. package/dist/esm/domain/key-id/index.js +169 -0
  486. package/dist/esm/domain/ledger-sheet/index.d.ts +45 -0
  487. package/dist/esm/domain/ledger-sheet/index.d.ts.map +1 -0
  488. package/dist/esm/domain/ledger-sheet/index.js +24 -0
  489. package/dist/esm/domain/money-diff.d.ts +28 -0
  490. package/dist/esm/domain/money-diff.d.ts.map +1 -0
  491. package/dist/esm/domain/money-diff.js +45 -0
  492. package/dist/esm/domain/money-math.d.ts +32 -0
  493. package/dist/esm/domain/money-math.d.ts.map +1 -0
  494. package/dist/esm/domain/money-math.js +98 -0
  495. package/dist/esm/domain/money-text/index.d.ts +37 -0
  496. package/dist/esm/domain/money-text/index.d.ts.map +1 -0
  497. package/dist/esm/domain/money-text/index.js +110 -0
  498. package/dist/esm/domain/section-label/index.d.ts +21 -0
  499. package/dist/esm/domain/section-label/index.d.ts.map +1 -0
  500. package/dist/esm/domain/section-label/index.js +10 -0
  501. package/dist/esm/domain/status-rail/index.d.ts +40 -0
  502. package/dist/esm/domain/status-rail/index.d.ts.map +1 -0
  503. package/dist/esm/domain/status-rail/index.js +67 -0
  504. package/dist/esm/domain/threshold-gauge/index.d.ts +84 -0
  505. package/dist/esm/domain/threshold-gauge/index.d.ts.map +1 -0
  506. package/dist/esm/domain/threshold-gauge/index.js +153 -0
  507. package/dist/esm/enterprise/alert-banner/index.d.ts +30 -0
  508. package/dist/esm/enterprise/alert-banner/index.d.ts.map +1 -0
  509. package/dist/esm/enterprise/alert-banner/index.js +21 -0
  510. package/dist/esm/enterprise/app-shell/index.d.ts +61 -0
  511. package/dist/esm/enterprise/app-shell/index.d.ts.map +1 -0
  512. package/dist/esm/enterprise/app-shell/index.js +51 -0
  513. package/dist/esm/enterprise/cursor-pager/index.d.ts +21 -0
  514. package/dist/esm/enterprise/cursor-pager/index.d.ts.map +1 -0
  515. package/dist/esm/enterprise/cursor-pager/index.js +23 -0
  516. package/dist/esm/enterprise/data-table/index.d.ts +88 -0
  517. package/dist/esm/enterprise/data-table/index.d.ts.map +1 -0
  518. package/dist/esm/enterprise/data-table/index.js +242 -0
  519. package/dist/esm/enterprise/date-range-picker/index.d.ts +37 -0
  520. package/dist/esm/enterprise/date-range-picker/index.d.ts.map +1 -0
  521. package/dist/esm/enterprise/date-range-picker/index.js +89 -0
  522. package/dist/esm/enterprise/detail-panel/index.d.ts +54 -0
  523. package/dist/esm/enterprise/detail-panel/index.d.ts.map +1 -0
  524. package/dist/esm/enterprise/detail-panel/index.js +17 -0
  525. package/dist/esm/enterprise/empty-state/index.d.ts +32 -0
  526. package/dist/esm/enterprise/empty-state/index.d.ts.map +1 -0
  527. package/dist/esm/enterprise/empty-state/index.js +10 -0
  528. package/dist/esm/enterprise/index.d.ts +26 -0
  529. package/dist/esm/enterprise/index.d.ts.map +1 -0
  530. package/dist/esm/enterprise/index.js +22 -0
  531. package/dist/esm/enterprise/number-input/index.d.ts +55 -0
  532. package/dist/esm/enterprise/number-input/index.d.ts.map +1 -0
  533. package/dist/esm/enterprise/number-input/index.js +214 -0
  534. package/dist/esm/enterprise/search-input/index.d.ts +32 -0
  535. package/dist/esm/enterprise/search-input/index.d.ts.map +1 -0
  536. package/dist/esm/enterprise/search-input/index.js +85 -0
  537. package/dist/esm/enterprise/stat-card/index.d.ts +43 -0
  538. package/dist/esm/enterprise/stat-card/index.d.ts.map +1 -0
  539. package/dist/esm/enterprise/stat-card/index.js +64 -0
  540. package/dist/esm/enterprise/status-badge/index.d.ts +31 -0
  541. package/dist/esm/enterprise/status-badge/index.d.ts.map +1 -0
  542. package/dist/esm/enterprise/status-badge/index.js +116 -0
  543. package/dist/esm/enterprise/use-is-mobile.d.ts +20 -0
  544. package/dist/esm/enterprise/use-is-mobile.d.ts.map +1 -0
  545. package/dist/esm/enterprise/use-is-mobile.js +31 -0
  546. package/dist/esm/enterprise/virtualized-table/index.d.ts +26 -0
  547. package/dist/esm/enterprise/virtualized-table/index.d.ts.map +1 -0
  548. package/dist/esm/enterprise/virtualized-table/index.js +111 -0
  549. package/dist/esm/hooks/use-click-away.d.ts +9 -0
  550. package/dist/esm/hooks/use-click-away.d.ts.map +1 -0
  551. package/dist/esm/hooks/use-click-away.js +22 -0
  552. package/dist/esm/hooks/use-pagination.d.ts +13 -0
  553. package/dist/esm/hooks/use-pagination.d.ts.map +1 -0
  554. package/dist/esm/hooks/use-pagination.js +38 -0
  555. package/dist/esm/hooks/use-stepper.d.ts +11 -0
  556. package/dist/esm/hooks/use-stepper.d.ts.map +1 -0
  557. package/dist/esm/hooks/use-stepper.js +22 -0
  558. package/dist/esm/hooks/use-time.d.ts +6 -0
  559. package/dist/esm/hooks/use-time.d.ts.map +1 -0
  560. package/dist/esm/hooks/use-time.js +13 -0
  561. package/dist/esm/hooks/use-toast.d.ts +31 -0
  562. package/dist/esm/hooks/use-toast.d.ts.map +1 -0
  563. package/dist/esm/hooks/use-toast.js +63 -0
  564. package/dist/esm/index.d.ts +69 -0
  565. package/dist/esm/index.d.ts.map +1 -0
  566. package/dist/esm/index.js +74 -0
  567. package/dist/esm/lib/storage/get-storage-object.d.ts +2 -0
  568. package/dist/esm/lib/storage/get-storage-object.d.ts.map +1 -0
  569. package/dist/esm/lib/storage/get-storage-object.js +17 -0
  570. package/dist/esm/lib/storage/get-storage.d.ts +2 -0
  571. package/dist/esm/lib/storage/get-storage.d.ts.map +1 -0
  572. package/dist/esm/lib/storage/get-storage.js +14 -0
  573. package/dist/esm/lib/storage/index.d.ts +3 -0
  574. package/dist/esm/lib/storage/index.d.ts.map +1 -0
  575. package/dist/esm/lib/storage/index.js +2 -0
  576. package/dist/esm/lib/typography.d.ts +17 -0
  577. package/dist/esm/lib/typography.d.ts.map +1 -0
  578. package/dist/esm/lib/typography.js +16 -0
  579. package/dist/esm/lib/utils.d.ts +3 -0
  580. package/dist/esm/lib/utils.d.ts.map +1 -0
  581. package/dist/esm/lib/utils.js +5 -0
  582. package/dist/esm/package.json +1 -0
  583. package/dist/esm/public/countries.json +21210 -0
  584. package/dist/esm/theme/get-theme-script.d.ts +3 -0
  585. package/dist/esm/theme/get-theme-script.d.ts.map +1 -0
  586. package/dist/esm/theme/get-theme-script.js +41 -0
  587. package/dist/esm/theme/index.d.ts +6 -0
  588. package/dist/esm/theme/index.d.ts.map +1 -0
  589. package/dist/esm/theme/index.js +4 -0
  590. package/dist/esm/theme/mode-toggle.d.ts +25 -0
  591. package/dist/esm/theme/mode-toggle.d.ts.map +1 -0
  592. package/dist/esm/theme/mode-toggle.js +45 -0
  593. package/dist/esm/theme/theme-provider.d.ts +38 -0
  594. package/dist/esm/theme/theme-provider.d.ts.map +1 -0
  595. package/dist/esm/theme/theme-provider.js +112 -0
  596. package/dist/esm/toast/helpers.d.ts +16 -0
  597. package/dist/esm/toast/helpers.d.ts.map +1 -0
  598. package/dist/esm/toast/helpers.js +29 -0
  599. package/dist/esm/toast/index.d.ts +3 -0
  600. package/dist/esm/toast/index.d.ts.map +1 -0
  601. package/dist/esm/toast/index.js +4 -0
  602. package/dist/esm/types/metadata-type.d.ts +2 -0
  603. package/dist/esm/types/metadata-type.d.ts.map +1 -0
  604. package/dist/esm/types/metadata-type.js +1 -0
  605. package/dist/esm/utils/countries.cjs +17 -0
  606. package/dist/esm/utils/countries.d.cts +14 -0
  607. package/dist/esm/utils/country-utils.d.ts +17 -0
  608. package/dist/esm/utils/country-utils.d.ts.map +1 -0
  609. package/dist/esm/utils/country-utils.js +18 -0
  610. package/dist/esm/utils/currency-codes.d.ts +5 -0
  611. package/dist/esm/utils/currency-codes.d.ts.map +1 -0
  612. package/dist/esm/utils/currency-codes.js +181 -0
  613. package/dist/globals.css +74 -0
  614. package/dist/hooks/use-toast.d.ts +1 -1
  615. package/dist/hooks/use-toast.d.ts.map +1 -1
  616. package/dist/hooks/use-toast.js +4 -0
  617. package/dist/index.d.ts +16 -0
  618. package/dist/index.d.ts.map +1 -1
  619. package/dist/index.js +21 -1
  620. package/dist/lib/storage/get-storage-object.d.ts.map +1 -1
  621. package/dist/lib/storage/get-storage-object.js +6 -2
  622. package/dist/lib/typography.d.ts +17 -0
  623. package/dist/lib/typography.d.ts.map +1 -0
  624. package/dist/lib/typography.js +19 -0
  625. package/dist/public/countries.json +21200 -21200
  626. package/dist/theme/get-theme-script.d.ts +3 -0
  627. package/dist/theme/get-theme-script.d.ts.map +1 -0
  628. package/dist/theme/get-theme-script.js +44 -0
  629. package/dist/theme/index.d.ts +6 -0
  630. package/dist/theme/index.d.ts.map +1 -0
  631. package/dist/theme/index.js +11 -0
  632. package/dist/theme/mode-toggle.d.ts +25 -0
  633. package/dist/theme/mode-toggle.d.ts.map +1 -0
  634. package/dist/theme/mode-toggle.js +48 -0
  635. package/dist/theme/theme-provider.d.ts +38 -0
  636. package/dist/theme/theme-provider.d.ts.map +1 -0
  637. package/dist/theme/theme-provider.js +149 -0
  638. package/dist/toast/helpers.d.ts +16 -0
  639. package/dist/toast/helpers.d.ts.map +1 -0
  640. package/dist/toast/helpers.js +34 -0
  641. package/dist/toast/index.d.ts +3 -0
  642. package/dist/toast/index.d.ts.map +1 -0
  643. package/dist/toast/index.js +10 -0
  644. package/dist/utils/countries.cjs +17 -0
  645. package/dist/utils/countries.d.cts +14 -0
  646. package/dist/utils/country-utils.js +2 -2
  647. package/package.json +55 -18
  648. package/dist/components/ui/label/label.stories.d.ts +0 -5
  649. package/dist/components/ui/label/label.stories.d.ts.map +0 -1
  650. package/dist/components/ui/label/label.stories.js +0 -24
  651. package/dist/components/ui/sidebar/sidebar-provider.test.d.ts +0 -2
  652. package/dist/components/ui/sidebar/sidebar-provider.test.d.ts.map +0 -1
  653. package/dist/components/ui/sidebar/sidebar-provider.test.js +0 -170
  654. package/dist/hooks/use-click-away.test.d.ts +0 -2
  655. package/dist/hooks/use-click-away.test.d.ts.map +0 -1
  656. package/dist/hooks/use-click-away.test.js +0 -39
  657. package/dist/hooks/use-stepper.test.d.ts +0 -2
  658. package/dist/hooks/use-stepper.test.d.ts.map +0 -1
  659. package/dist/hooks/use-stepper.test.js +0 -45
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.hasRenderableLabel = hasRenderableLabel;
4
+ const react_1 = require("react");
5
+ /**
6
+ * Does this label put readable content INSIDE the label element — i.e. does it
7
+ * give the control an accessible name?
8
+ *
9
+ * Ceiling, on purpose: a non-fragment element always counts, even an empty one.
10
+ * We cannot render a component to find out whether it emits text, so
11
+ * `label={<EmptyThing />}` is accepted. Fragments ARE unwrapped, since they add
12
+ * no markup of their own and `<></>` is a plausible way to say "no label".
13
+ *
14
+ * A PORTAL DOES NOT COUNT. It is the one node that renders its content
15
+ * somewhere else in the DOM — by definition outside the label subtree — so the
16
+ * label element itself stays empty and names nothing. The content is visible on
17
+ * screen, which is exactly what makes this worth guarding: it looks labelled
18
+ * and is silent to a screen reader. Pass `aria-label` when the visible text
19
+ * lives in a portal.
20
+ *
21
+ * BRANCH ORDER IS LOAD-BEARING — element before portal before collection:
22
+ * `Children.toArray` hands a portal straight back unchanged, so reaching the
23
+ * collection branch with one would recurse forever. The portal branch is the
24
+ * crash guard as much as the verdict. Every field in this directory shares this
25
+ * one copy precisely so that ordering cannot drift.
26
+ */
27
+ function hasRenderableLabel(label) {
28
+ if (label === null || label === undefined || typeof label === 'boolean') {
29
+ return false;
30
+ }
31
+ // Empty AND whitespace-only strings render a label box with nothing to
32
+ // announce, so both count as absent. A number (`0`) is a real label.
33
+ if (typeof label === 'string')
34
+ return label.trim() !== '';
35
+ if (typeof label === 'number' || typeof label === 'bigint')
36
+ return true;
37
+ if ((0, react_1.isValidElement)(label)) {
38
+ return label.type === react_1.Fragment
39
+ ? hasRenderableLabel(label.props?.children ?? null)
40
+ : true;
41
+ }
42
+ // Portals and any other React-internal node that is not an element: their
43
+ // content lands outside this subtree (or is unknowable), so it cannot name
44
+ // the control. Must stay ABOVE the collection branch: isValidElement is false
45
+ // for a portal and Children.toArray hands the identical node straight back,
46
+ // so recursing on it would never terminate.
47
+ if (typeof label === 'object' && '$$typeof' in label)
48
+ return false;
49
+ const children = react_1.Children.toArray(label);
50
+ // Belt for anything else toArray cannot break down: no progress left to make,
51
+ // and nothing we can confirm renders in place, so treat it as absent rather
52
+ // than recurse forever.
53
+ if (children.length === 1 && children[0] === label)
54
+ return false;
55
+ // Arrays and other iterables: renderable only if some child is.
56
+ return children.some((child) => hasRenderableLabel(child));
57
+ }
@@ -0,0 +1,31 @@
1
+ import { ReactNode } from 'react';
2
+ import { Control, FieldValues, Path } from 'react-hook-form';
3
+ import { type RenderableLabel } from '../../../components/form/renderable-label';
4
+ type TextareaFieldOwnProps<T extends FieldValues = FieldValues> = {
5
+ control: Control<T>;
6
+ name: Path<T>;
7
+ description?: ReactNode;
8
+ placeholder?: string;
9
+ tooltip?: string;
10
+ required?: boolean;
11
+ disabled?: boolean;
12
+ readOnly?: boolean;
13
+ rows?: number;
14
+ className?: string;
15
+ 'data-testid'?: string;
16
+ };
17
+ /**
18
+ * A control with no accessible name is invisible to screen readers, so the type
19
+ * makes one mandatory: either a visible `label`, or an `aria-label` when the
20
+ * design calls for a bare textarea.
21
+ */
22
+ export type TextareaFieldProps<T extends FieldValues = FieldValues> = TextareaFieldOwnProps<T> & ({
23
+ label: RenderableLabel;
24
+ 'aria-label'?: string;
25
+ } | {
26
+ label?: never;
27
+ 'aria-label': string;
28
+ });
29
+ export declare const TextareaField: <T extends FieldValues = FieldValues>({ control, name, label, description, placeholder, tooltip, required, disabled, readOnly, rows, className, "data-testid": dataTestId, "aria-label": ariaLabelProp }: TextareaFieldProps<T>) => import("react").JSX.Element;
30
+ export {};
31
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/form/textarea-field/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AACjC,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AAY5D,OAAO,EAEL,KAAK,eAAe,EACrB,MAAM,oCAAoC,CAAA;AAE3C,KAAK,qBAAqB,CAAC,CAAC,SAAS,WAAW,GAAG,WAAW,IAAI;IAChE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAA;IACnB,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAA;IACb,WAAW,CAAC,EAAE,SAAS,CAAA;IACvB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB,CAAA;AAED;;;;GAIG;AACH,MAAM,MAAM,kBAAkB,CAAC,CAAC,SAAS,WAAW,GAAG,WAAW,IAChE,qBAAqB,CAAC,CAAC,CAAC,GACtB,CACI;IAAE,KAAK,EAAE,eAAe,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,GACjD;IAAE,KAAK,CAAC,EAAE,KAAK,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,CAC1C,CAAA;AAEL,eAAO,MAAM,aAAa,GAAI,CAAC,SAAS,WAAW,GAAG,WAAW,EAAE,oKAchE,kBAAkB,CAAC,CAAC,CAAC,gCAkDvB,CAAA"}
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TextareaField = void 0;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const form_1 = require("../../../components/ui/form");
6
+ const textarea_1 = require("../../../components/ui/textarea");
7
+ const renderable_label_1 = require("../../../components/form/renderable-label");
8
+ const TextareaField = ({ control, name, label, description, placeholder, tooltip, required, disabled, readOnly, rows, className, 'data-testid': dataTestId, 'aria-label': ariaLabelProp }) => {
9
+ const showLabel = (0, renderable_label_1.hasRenderableLabel)(label);
10
+ // An empty or whitespace-only aria-label is worse than none: it names the
11
+ // control "". Drop it so the attribute never reaches the DOM.
12
+ const ariaLabel = ariaLabelProp?.trim() ? ariaLabelProp : undefined;
13
+ // The type cannot rule out `label=""`, so this is the only signal a developer
14
+ // gets that the control shipped nameless.
15
+ if (process.env.NODE_ENV !== 'production' && !showLabel && !ariaLabel) {
16
+ console.error(`TextareaField "${name}" has no accessible name: pass a non-empty label or aria-label.`);
17
+ }
18
+ return ((0, jsx_runtime_1.jsx)(form_1.FormField, { control: control, name: name,
19
+ // Controller-level, not just on the element: this is what keeps a
20
+ // disabled field out of the submitted values.
21
+ disabled: disabled, render: ({ field }) => ((0, jsx_runtime_1.jsxs)(form_1.FormItem, { required: required, children: [showLabel && ((0, jsx_runtime_1.jsx)(form_1.FormLabel, { extra: tooltip ? (0, jsx_runtime_1.jsx)(form_1.FormTooltip, { children: tooltip }) : undefined, children: label })), (0, jsx_runtime_1.jsx)(form_1.FormControl, { children: (0, jsx_runtime_1.jsx)(textarea_1.Textarea, { placeholder: placeholder, readOnly: readOnly, rows: rows, className: className, "data-testid": dataTestId, "aria-label": ariaLabel, ...field }) }), (0, jsx_runtime_1.jsx)(form_1.FormMessage, {}), description && (0, jsx_runtime_1.jsx)(form_1.FormDescription, { children: description })] })) }));
22
+ };
23
+ exports.TextareaField = TextareaField;
@@ -1,16 +1,19 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
6
  exports.IdTableCell = void 0;
4
7
  const jsx_runtime_1 = require("react/jsx-runtime");
5
8
  const table_1 = require("../../components/ui/table");
6
9
  const tooltip_1 = require("../../components/ui/tooltip");
7
- const lodash_1 = require("lodash");
10
+ const truncate_js_1 = __importDefault(require("lodash/truncate.js"));
8
11
  const lucide_react_1 = require("lucide-react");
9
12
  const IdTableCell = ({ id, onCopy, ...others }) => {
10
13
  const handleCopyToClipboard = () => {
11
14
  navigator.clipboard.writeText(id);
12
15
  onCopy?.(id);
13
16
  };
14
- return ((0, jsx_runtime_1.jsx)(table_1.TableCell, { onClick: handleCopyToClipboard, ...others, children: (0, jsx_runtime_1.jsxs)(table_1.TableCellWrapper, { children: [(0, jsx_runtime_1.jsx)(tooltip_1.TooltipProvider, { children: (0, jsx_runtime_1.jsxs)(tooltip_1.Tooltip, { delayDuration: 300, children: [(0, jsx_runtime_1.jsx)(tooltip_1.TooltipTrigger, { children: (0, lodash_1.truncate)(id, { length: 16 }) }), (0, jsx_runtime_1.jsx)(tooltip_1.TooltipContent, { children: id })] }) }), (0, jsx_runtime_1.jsx)(table_1.TableCellAction, { children: (0, jsx_runtime_1.jsx)(lucide_react_1.Copy, { className: "size-3.5" }) })] }) }));
17
+ return ((0, jsx_runtime_1.jsx)(table_1.TableCell, { onClick: handleCopyToClipboard, ...others, children: (0, jsx_runtime_1.jsxs)(table_1.TableCellWrapper, { children: [(0, jsx_runtime_1.jsx)(tooltip_1.TooltipProvider, { children: (0, jsx_runtime_1.jsxs)(tooltip_1.Tooltip, { delayDuration: 300, children: [(0, jsx_runtime_1.jsx)(tooltip_1.TooltipTrigger, { children: (0, truncate_js_1.default)(id, { length: 16 }) }), (0, jsx_runtime_1.jsx)(tooltip_1.TooltipContent, { children: id })] }) }), (0, jsx_runtime_1.jsx)(table_1.TableCellAction, { children: (0, jsx_runtime_1.jsx)(lucide_react_1.Copy, { className: "size-3.5" }) })] }) }));
15
18
  };
16
19
  exports.IdTableCell = IdTableCell;
@@ -0,0 +1,14 @@
1
+ import * as React from 'react';
2
+ import * as AccordionPrimitive from '@radix-ui/react-accordion';
3
+ declare function Accordion({ ...props }: React.ComponentProps<typeof AccordionPrimitive.Root>): React.JSX.Element;
4
+ declare function AccordionItem({ className, ...props }: React.ComponentProps<typeof AccordionPrimitive.Item>): React.JSX.Element;
5
+ /**
6
+ * `asChild` is deliberately omitted: the trigger always renders the caller's
7
+ * children PLUS the chevron, and Radix's Slot cannot merge onto two children —
8
+ * it throws at runtime. Legacy sindarian-x carried the same two-child shape, so
9
+ * `asChild` never worked there either; here it is a compile error instead.
10
+ */
11
+ declare function AccordionTrigger({ className, children, ...props }: Omit<React.ComponentProps<typeof AccordionPrimitive.Trigger>, 'asChild'>): React.JSX.Element;
12
+ declare function AccordionContent({ className, children, ...props }: React.ComponentProps<typeof AccordionPrimitive.Content>): React.JSX.Element;
13
+ export { Accordion, AccordionItem, AccordionTrigger, AccordionContent };
14
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/accordion/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,KAAK,kBAAkB,MAAM,2BAA2B,CAAA;AAK/D,iBAAS,SAAS,CAAC,EACjB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,kBAAkB,CAAC,IAAI,CAAC,qBAEtD;AAED,iBAAS,aAAa,CAAC,EACrB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,kBAAkB,CAAC,IAAI,CAAC,qBAQtD;AAED;;;;;GAKG;AACH,iBAAS,gBAAgB,CAAC,EACxB,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,kBAAkB,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC,qBAgB1E;AAED,iBAAS,gBAAgB,CAAC,EACxB,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,kBAAkB,CAAC,OAAO,CAAC,qBAUzD;AAED,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,CAAA"}
@@ -0,0 +1,62 @@
1
+ 'use client';
2
+ "use strict";
3
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k;
5
+ var desc = Object.getOwnPropertyDescriptor(m, k);
6
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
+ desc = { enumerable: true, get: function() { return m[k]; } };
8
+ }
9
+ Object.defineProperty(o, k2, desc);
10
+ }) : (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ o[k2] = m[k];
13
+ }));
14
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
15
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
16
+ }) : function(o, v) {
17
+ o["default"] = v;
18
+ });
19
+ var __importStar = (this && this.__importStar) || (function () {
20
+ var ownKeys = function(o) {
21
+ ownKeys = Object.getOwnPropertyNames || function (o) {
22
+ var ar = [];
23
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
24
+ return ar;
25
+ };
26
+ return ownKeys(o);
27
+ };
28
+ return function (mod) {
29
+ if (mod && mod.__esModule) return mod;
30
+ var result = {};
31
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
32
+ __setModuleDefault(result, mod);
33
+ return result;
34
+ };
35
+ })();
36
+ Object.defineProperty(exports, "__esModule", { value: true });
37
+ exports.Accordion = Accordion;
38
+ exports.AccordionItem = AccordionItem;
39
+ exports.AccordionTrigger = AccordionTrigger;
40
+ exports.AccordionContent = AccordionContent;
41
+ const jsx_runtime_1 = require("react/jsx-runtime");
42
+ const AccordionPrimitive = __importStar(require("@radix-ui/react-accordion"));
43
+ const lucide_react_1 = require("lucide-react");
44
+ const utils_1 = require("../../../lib/utils");
45
+ function Accordion({ ...props }) {
46
+ return (0, jsx_runtime_1.jsx)(AccordionPrimitive.Root, { "data-slot": "accordion", ...props });
47
+ }
48
+ function AccordionItem({ className, ...props }) {
49
+ return ((0, jsx_runtime_1.jsx)(AccordionPrimitive.Item, { "data-slot": "accordion-item", className: (0, utils_1.cn)('border-b last:border-b-0', className), ...props }));
50
+ }
51
+ /**
52
+ * `asChild` is deliberately omitted: the trigger always renders the caller's
53
+ * children PLUS the chevron, and Radix's Slot cannot merge onto two children —
54
+ * it throws at runtime. Legacy sindarian-x carried the same two-child shape, so
55
+ * `asChild` never worked there either; here it is a compile error instead.
56
+ */
57
+ function AccordionTrigger({ className, children, ...props }) {
58
+ return ((0, jsx_runtime_1.jsx)(AccordionPrimitive.Header, { className: "flex", children: (0, jsx_runtime_1.jsxs)(AccordionPrimitive.Trigger, { "data-slot": "accordion-trigger", className: (0, utils_1.cn)('focus-visible:border-ring focus-visible:ring-ring/50 flex flex-1 items-start justify-between gap-4 rounded-md py-4 text-left text-sm font-medium transition-colors outline-none hover:underline focus-visible:ring-[3px] disabled:pointer-events-none disabled:opacity-50 [&[data-state=open]>svg]:rotate-180', className), ...props, children: [children, (0, jsx_runtime_1.jsx)(lucide_react_1.ChevronDown, { className: "text-muted-foreground pointer-events-none size-4 shrink-0 translate-y-0.5 transition-transform duration-200" })] }) }));
59
+ }
60
+ function AccordionContent({ className, children, ...props }) {
61
+ return ((0, jsx_runtime_1.jsx)(AccordionPrimitive.Content, { "data-slot": "accordion-content", className: "data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down overflow-hidden text-sm", ...props, children: (0, jsx_runtime_1.jsx)("div", { className: (0, utils_1.cn)('pt-0 pb-4', className), children: children }) }));
62
+ }
@@ -0,0 +1,15 @@
1
+ import * as React from 'react';
2
+ import * as AlertDialogPrimitive from '@radix-ui/react-alert-dialog';
3
+ declare function AlertDialog({ ...props }: React.ComponentProps<typeof AlertDialogPrimitive.Root>): React.JSX.Element;
4
+ declare function AlertDialogTrigger({ ...props }: React.ComponentProps<typeof AlertDialogPrimitive.Trigger>): React.JSX.Element;
5
+ declare function AlertDialogPortal({ ...props }: React.ComponentProps<typeof AlertDialogPrimitive.Portal>): React.JSX.Element;
6
+ declare function AlertDialogOverlay({ className, ...props }: React.ComponentProps<typeof AlertDialogPrimitive.Overlay>): React.JSX.Element;
7
+ declare function AlertDialogContent({ className, container, forceMount, ...props }: React.ComponentProps<typeof AlertDialogPrimitive.Content> & Pick<React.ComponentProps<typeof AlertDialogPrimitive.Portal>, 'container' | 'forceMount'>): React.JSX.Element;
8
+ declare function AlertDialogHeader({ className, ...props }: React.ComponentProps<'div'>): React.JSX.Element;
9
+ declare function AlertDialogFooter({ className, ...props }: React.ComponentProps<'div'>): React.JSX.Element;
10
+ declare function AlertDialogTitle({ className, ...props }: React.ComponentProps<typeof AlertDialogPrimitive.Title>): React.JSX.Element;
11
+ declare function AlertDialogDescription({ className, ...props }: React.ComponentProps<typeof AlertDialogPrimitive.Description>): React.JSX.Element;
12
+ declare function AlertDialogAction({ className, ...props }: React.ComponentProps<typeof AlertDialogPrimitive.Action>): React.JSX.Element;
13
+ declare function AlertDialogCancel({ className, ...props }: React.ComponentProps<typeof AlertDialogPrimitive.Cancel>): React.JSX.Element;
14
+ export { AlertDialog, AlertDialogPortal, AlertDialogOverlay, AlertDialogTrigger, AlertDialogContent, AlertDialogHeader, AlertDialogFooter, AlertDialogTitle, AlertDialogDescription, AlertDialogAction, AlertDialogCancel };
15
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/alert-dialog/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,KAAK,oBAAoB,MAAM,8BAA8B,CAAA;AAKpE,iBAAS,WAAW,CAAC,EACnB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,oBAAoB,CAAC,IAAI,CAAC,qBAExD;AAED,iBAAS,kBAAkB,CAAC,EAC1B,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,oBAAoB,CAAC,OAAO,CAAC,qBAI3D;AAED,iBAAS,iBAAiB,CAAC,EACzB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,oBAAoB,CAAC,MAAM,CAAC,qBAI1D;AAED,iBAAS,kBAAkB,CAAC,EAC1B,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,oBAAoB,CAAC,OAAO,CAAC,qBAQ3D;AAED,iBAAS,kBAAkB,CAAC,EAC1B,SAAS,EACT,SAAS,EACT,UAAU,EACV,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,oBAAoB,CAAC,OAAO,CAAC,GAI1D,IAAI,CACF,KAAK,CAAC,cAAc,CAAC,OAAO,oBAAoB,CAAC,MAAM,CAAC,EACxD,WAAW,GAAG,YAAY,CAC3B,qBAiBF;AAED,iBAAS,iBAAiB,CAAC,EACzB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAQ7B;AAED,iBAAS,iBAAiB,CAAC,EACzB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAQ7B;AAED,iBAAS,gBAAgB,CAAC,EACxB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,oBAAoB,CAAC,KAAK,CAAC,qBAQzD;AAED,iBAAS,sBAAsB,CAAC,EAC9B,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,oBAAoB,CAAC,WAAW,CAAC,qBAQ/D;AAED,iBAAS,iBAAiB,CAAC,EACzB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,oBAAoB,CAAC,MAAM,CAAC,qBAQ1D;AAED,iBAAS,iBAAiB,CAAC,EACzB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,oBAAoB,CAAC,MAAM,CAAC,qBAQ1D;AAED,OAAO,EACL,WAAW,EACX,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,sBAAsB,EACtB,iBAAiB,EACjB,iBAAiB,EAClB,CAAA"}
@@ -0,0 +1,84 @@
1
+ 'use client';
2
+ "use strict";
3
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k;
5
+ var desc = Object.getOwnPropertyDescriptor(m, k);
6
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
+ desc = { enumerable: true, get: function() { return m[k]; } };
8
+ }
9
+ Object.defineProperty(o, k2, desc);
10
+ }) : (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ o[k2] = m[k];
13
+ }));
14
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
15
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
16
+ }) : function(o, v) {
17
+ o["default"] = v;
18
+ });
19
+ var __importStar = (this && this.__importStar) || (function () {
20
+ var ownKeys = function(o) {
21
+ ownKeys = Object.getOwnPropertyNames || function (o) {
22
+ var ar = [];
23
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
24
+ return ar;
25
+ };
26
+ return ownKeys(o);
27
+ };
28
+ return function (mod) {
29
+ if (mod && mod.__esModule) return mod;
30
+ var result = {};
31
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
32
+ __setModuleDefault(result, mod);
33
+ return result;
34
+ };
35
+ })();
36
+ Object.defineProperty(exports, "__esModule", { value: true });
37
+ exports.AlertDialog = AlertDialog;
38
+ exports.AlertDialogPortal = AlertDialogPortal;
39
+ exports.AlertDialogOverlay = AlertDialogOverlay;
40
+ exports.AlertDialogTrigger = AlertDialogTrigger;
41
+ exports.AlertDialogContent = AlertDialogContent;
42
+ exports.AlertDialogHeader = AlertDialogHeader;
43
+ exports.AlertDialogFooter = AlertDialogFooter;
44
+ exports.AlertDialogTitle = AlertDialogTitle;
45
+ exports.AlertDialogDescription = AlertDialogDescription;
46
+ exports.AlertDialogAction = AlertDialogAction;
47
+ exports.AlertDialogCancel = AlertDialogCancel;
48
+ const jsx_runtime_1 = require("react/jsx-runtime");
49
+ const AlertDialogPrimitive = __importStar(require("@radix-ui/react-alert-dialog"));
50
+ const button_1 = require("../../../components/ui/button");
51
+ const utils_1 = require("../../../lib/utils");
52
+ function AlertDialog({ ...props }) {
53
+ return (0, jsx_runtime_1.jsx)(AlertDialogPrimitive.Root, { "data-slot": "alert-dialog", ...props });
54
+ }
55
+ function AlertDialogTrigger({ ...props }) {
56
+ return ((0, jsx_runtime_1.jsx)(AlertDialogPrimitive.Trigger, { "data-slot": "alert-dialog-trigger", ...props }));
57
+ }
58
+ function AlertDialogPortal({ ...props }) {
59
+ return ((0, jsx_runtime_1.jsx)(AlertDialogPrimitive.Portal, { "data-slot": "alert-dialog-portal", ...props }));
60
+ }
61
+ function AlertDialogOverlay({ className, ...props }) {
62
+ return ((0, jsx_runtime_1.jsx)(AlertDialogPrimitive.Overlay, { "data-slot": "alert-dialog-overlay", className: (0, utils_1.cn)('dialog-overlay', className), ...props }));
63
+ }
64
+ function AlertDialogContent({ className, container, forceMount, ...props }) {
65
+ return ((0, jsx_runtime_1.jsxs)(AlertDialogPortal, { container: container, forceMount: forceMount, children: [(0, jsx_runtime_1.jsx)(AlertDialogOverlay, { forceMount: forceMount }), (0, jsx_runtime_1.jsx)(AlertDialogPrimitive.Content, { "data-slot": "alert-dialog-content", className: (0, utils_1.cn)('dialog-content', className), forceMount: forceMount, ...props })] }));
66
+ }
67
+ function AlertDialogHeader({ className, ...props }) {
68
+ return ((0, jsx_runtime_1.jsx)("div", { "data-slot": "alert-dialog-header", className: (0, utils_1.cn)('dialog-header', className), ...props }));
69
+ }
70
+ function AlertDialogFooter({ className, ...props }) {
71
+ return ((0, jsx_runtime_1.jsx)("div", { "data-slot": "alert-dialog-footer", className: (0, utils_1.cn)('dialog-footer', className), ...props }));
72
+ }
73
+ function AlertDialogTitle({ className, ...props }) {
74
+ return ((0, jsx_runtime_1.jsx)(AlertDialogPrimitive.Title, { "data-slot": "alert-dialog-title", className: (0, utils_1.cn)('dialog-title', className), ...props }));
75
+ }
76
+ function AlertDialogDescription({ className, ...props }) {
77
+ return ((0, jsx_runtime_1.jsx)(AlertDialogPrimitive.Description, { "data-slot": "alert-dialog-description", className: (0, utils_1.cn)('dialog-description', className), ...props }));
78
+ }
79
+ function AlertDialogAction({ className, ...props }) {
80
+ return ((0, jsx_runtime_1.jsx)(AlertDialogPrimitive.Action, { "data-slot": "alert-dialog-action", className: (0, utils_1.cn)((0, button_1.buttonVariants)(), className), ...props }));
81
+ }
82
+ function AlertDialogCancel({ className, ...props }) {
83
+ return ((0, jsx_runtime_1.jsx)(AlertDialogPrimitive.Cancel, { "data-slot": "alert-dialog-cancel", className: (0, utils_1.cn)((0, button_1.buttonVariants)({ variant: 'outline' }), className), ...props }));
84
+ }
@@ -56,7 +56,7 @@ const utils_1 = require("../../../lib/utils");
56
56
  const separator_1 = require("../separator");
57
57
  const cmdk_1 = require("cmdk");
58
58
  const use_click_away_1 = require("../../../hooks/use-click-away");
59
- const lodash_1 = require("lodash");
59
+ const isNil_js_1 = __importDefault(require("lodash/isNil.js"));
60
60
  const AutocompleteContext = react_1.default.createContext({
61
61
  value: [],
62
62
  onValueChange: (values) => values,
@@ -107,7 +107,7 @@ function AutocompleteValue({ ref, className, value: valueProp, onValueChange, on
107
107
  const { value, showValue, options, readOnly, disabled, inputRef } = useAutocomplete();
108
108
  react_1.default.useImperativeHandle(ref, () => inputRef.current);
109
109
  const updateSearch = (value) => {
110
- if ((0, lodash_1.isNil)(value)) {
110
+ if ((0, isNil_js_1.default)(value)) {
111
111
  return;
112
112
  }
113
113
  const v = typeof value === 'string' ? value : value[0];
@@ -127,7 +127,7 @@ function AutocompleteValue({ ref, className, value: valueProp, onValueChange, on
127
127
  };
128
128
  // If options changes, update only the internal value
129
129
  react_1.default.useEffect(() => {
130
- if ((0, lodash_1.isNil)(value)) {
130
+ if ((0, isNil_js_1.default)(value)) {
131
131
  return;
132
132
  }
133
133
  const v = typeof value === 'string' ? value : value[0];
@@ -292,7 +292,7 @@ function Autocomplete({ ref, value, defaultValue, onValueChange, onClear, classN
292
292
  }, [selected, handleChange]);
293
293
  // Keeps the selected value in sync with the value prop
294
294
  react_1.default.useEffect(() => {
295
- if (!(0, lodash_1.isNil)(value)) {
295
+ if (!(0, isNil_js_1.default)(value)) {
296
296
  setSelected(value);
297
297
  }
298
298
  }, [value]);
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/badge/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAKjE,QAAA,MAAM,aAAa;;8EA8BlB,CAAA;AAED,MAAM,MAAM,UAAU,GAAG,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,GACnD,YAAY,CAAC,OAAO,aAAa,CAAC,GAAG;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAAA;AAE5D,iBAAS,KAAK,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,KAAK,EAAE,EAAE,UAAU,qBAUnE;AAED,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/badge/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAKjE,QAAA,MAAM,aAAa;;8EA+BlB,CAAA;AAED,MAAM,MAAM,UAAU,GAAG,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,GACnD,YAAY,CAAC,OAAO,aAAa,CAAC,GAAG;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAAA;AAE5D,iBAAS,KAAK,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,KAAK,EAAE,EAAE,UAAU,qBAUnE;AAED,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,CAAA"}
@@ -10,8 +10,8 @@ const badgeVariants = (0, class_variance_authority_1.cva)('inline-flex items-cen
10
10
  variants: {
11
11
  variant: {
12
12
  default: 'border-transparent bg-primary text-primary-foreground hover:bg-primary/80',
13
- active: 'bg-system-success-surface text-system-success-h1a border-none py-[2px] px-3',
14
- inactive: 'bg-muted text-foreground border-none py-[2px] px-3',
13
+ active: 'bg-system-success-surface text-system-success-h1a border-system-success-border py-[2px] px-3',
14
+ inactive: 'bg-muted text-foreground border-muted-foreground/40 py-[2px] px-3',
15
15
  secondary: 'border-transparent bg-muted-foreground text-white dark:text-black',
16
16
  destructive: 'border-transparent bg-red-500 text-primary-foreground hover:bg-red-500/80',
17
17
  error: 'border-system-error-border bg-system-error-surface text-system-error-text px-[10px] py-1',
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/button/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAIjE,QAAA,MAAM,cAAc;;;;8EA0BlB,CAAA;AAEF,QAAA,MAAM,YAAY;;;8EAgBhB,CAAA;AAEF,MAAM,MAAM,WAAW,GAAG,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,GACtD,YAAY,CAAC,OAAO,cAAc,CAAC,GAAG;IACpC,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB,GAAG;IACF,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACtB,aAAa,CAAC,EAAE,OAAO,GAAG,KAAK,GAAG,SAAS,CAAA;IAC3C,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB,CAAA;AAEH,iBAAS,MAAM,CAAC,EACd,SAAS,EACT,OAAO,EACP,IAAI,EACJ,OAAe,EACf,IAAI,EACJ,aAAuB,EACvB,SAAiB,EACjB,QAAgB,EAChB,OAAO,EACP,GAAG,KAAK,EACT,EAAE,WAAW,qBAgCb;AAED,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,YAAY,EAAE,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/button/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAIjE,QAAA,MAAM,cAAc;;;;8EA0BlB,CAAA;AAEF,QAAA,MAAM,YAAY;;;8EAgBhB,CAAA;AAEF,MAAM,MAAM,WAAW,GAAG,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,GACtD,YAAY,CAAC,OAAO,cAAc,CAAC,GAAG;IACpC,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB,GAAG;IACF,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACtB,aAAa,CAAC,EAAE,OAAO,GAAG,KAAK,GAAG,SAAS,CAAA;IAC3C,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB,CAAA;AAEH,iBAAS,MAAM,CAAC,EACd,SAAS,EACT,OAAO,EACP,IAAI,EACJ,OAAe,EACf,IAAI,EACJ,aAAuB,EACvB,SAAiB,EACjB,QAAgB,EAChB,OAAO,EACP,GAAG,KAAK,EACT,EAAE,WAAW,qBAqCb;AAED,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,YAAY,EAAE,CAAA"}
@@ -60,5 +60,5 @@ function Button({ className, variant, size, asChild = false, icon, iconPlacement
60
60
  }
61
61
  onClick?.(e);
62
62
  };
63
- return ((0, jsx_runtime_1.jsxs)(Comp, { className: (0, utils_1.cn)(buttonVariants({ variant, size, fullWidth }), className), "data-read-only": readOnly, "data-slot": "button", ...props, onClick: handleClick, children: [icon && iconPlacement === 'start' && ((0, jsx_runtime_1.jsx)("span", { className: (0, utils_1.cn)(iconVariants({ position: iconPlacement, size })), children: icon })), props.children, icon && iconPlacement !== 'start' && ((0, jsx_runtime_1.jsx)("span", { className: (0, utils_1.cn)(iconVariants({ position: iconPlacement, size })), children: icon }))] }));
63
+ return ((0, jsx_runtime_1.jsxs)(Comp, { className: (0, utils_1.cn)(buttonVariants({ variant, size, fullWidth }), className), "data-read-only": readOnly, "data-slot": "button", ...props, onClick: handleClick, children: [icon && iconPlacement === 'start' && ((0, jsx_runtime_1.jsx)("span", { className: (0, utils_1.cn)(iconVariants({ position: iconPlacement, size })), children: icon })), (0, jsx_runtime_1.jsx)(react_slot_1.Slottable, { children: props.children }), icon && iconPlacement !== 'start' && ((0, jsx_runtime_1.jsx)("span", { className: (0, utils_1.cn)(iconVariants({ position: iconPlacement, size })), children: icon }))] }));
64
64
  }
@@ -0,0 +1,56 @@
1
+ import * as React from 'react';
2
+ export type CopyFieldProps = {
3
+ /**
4
+ * The string shown and copied verbatim (e.g. a TOTP manual-entry secret or a
5
+ * single recovery code). Copy always uses this raw value, even while masked.
6
+ */
7
+ value: string;
8
+ /**
9
+ * Optional visible label rendered above the field and associated with the
10
+ * input via `htmlFor`/`id`.
11
+ */
12
+ label?: string;
13
+ /**
14
+ * When true the displayed value is obscured (native password dots) while the
15
+ * underlying `value` stays copyable. A reveal toggle is offered.
16
+ * @defaultValue false
17
+ */
18
+ masked?: boolean;
19
+ /**
20
+ * i18n message used as the success toast text. Falls back to a sensible
21
+ * default when omitted.
22
+ */
23
+ onCopyLabel?: string;
24
+ /**
25
+ * Accessible name for the reveal toggle when the value is hidden. Override
26
+ * for localization. Defaults to English.
27
+ * @defaultValue 'Show value'
28
+ */
29
+ revealLabel?: string;
30
+ /**
31
+ * Accessible name for the reveal toggle when the value is shown. Override
32
+ * for localization. Defaults to English.
33
+ * @defaultValue 'Hide value'
34
+ */
35
+ hideLabel?: string;
36
+ /**
37
+ * Accessible name for the input when no visible `label` is provided. Override
38
+ * for localization. Defaults to English.
39
+ * @defaultValue 'Value to copy'
40
+ */
41
+ valueLabel?: string;
42
+ /**
43
+ * Milliseconds after a *successful* copy before the clipboard is wiped, for
44
+ * sensitive values that shouldn't linger there (TOTP secrets, recovery
45
+ * codes). Omit — or pass a non-positive number — to never clear.
46
+ *
47
+ * The clear is best-effort and never destructive: before wiping, the
48
+ * clipboard is read back and left untouched unless it still holds exactly
49
+ * the value this field wrote, so a copy the user made in the meantime
50
+ * survives. Browsers without `clipboard.readText` (Firefox, Safari) or that
51
+ * deny the read can't be verified, so nothing is cleared there.
52
+ */
53
+ clearClipboardAfter?: number;
54
+ };
55
+ export declare function CopyField({ value, label, masked, onCopyLabel, revealLabel, hideLabel, valueLabel, clearClipboardAfter }: CopyFieldProps): React.JSX.Element;
56
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/copy-field/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAM9B,MAAM,MAAM,cAAc,GAAG;IAC3B;;;OAGG;IACH,KAAK,EAAE,MAAM,CAAA;IACb;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IACd;;;;OAIG;IACH,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB;;;;;;;;;;OAUG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAA;CAC7B,CAAA;AAmCD,wBAAgB,SAAS,CAAC,EACxB,KAAK,EACL,KAAK,EACL,MAAc,EACd,WAAW,EACX,WAA0B,EAC1B,SAAwB,EACxB,UAA4B,EAC5B,mBAAmB,EACpB,EAAE,cAAc,qBA6JhB"}
@@ -0,0 +1,155 @@
1
+ 'use client';
2
+ "use strict";
3
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k;
5
+ var desc = Object.getOwnPropertyDescriptor(m, k);
6
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
+ desc = { enumerable: true, get: function() { return m[k]; } };
8
+ }
9
+ Object.defineProperty(o, k2, desc);
10
+ }) : (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ o[k2] = m[k];
13
+ }));
14
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
15
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
16
+ }) : function(o, v) {
17
+ o["default"] = v;
18
+ });
19
+ var __importStar = (this && this.__importStar) || (function () {
20
+ var ownKeys = function(o) {
21
+ ownKeys = Object.getOwnPropertyNames || function (o) {
22
+ var ar = [];
23
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
24
+ return ar;
25
+ };
26
+ return ownKeys(o);
27
+ };
28
+ return function (mod) {
29
+ if (mod && mod.__esModule) return mod;
30
+ var result = {};
31
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
32
+ __setModuleDefault(result, mod);
33
+ return result;
34
+ };
35
+ })();
36
+ Object.defineProperty(exports, "__esModule", { value: true });
37
+ exports.CopyField = CopyField;
38
+ const jsx_runtime_1 = require("react/jsx-runtime");
39
+ const React = __importStar(require("react"));
40
+ const lucide_react_1 = require("lucide-react");
41
+ const icon_button_1 = require("../../../components/ui/icon-button");
42
+ const use_toast_1 = require("../../../hooks/use-toast");
43
+ const DEFAULT_COPY_LABEL = 'Copied to clipboard!';
44
+ const FALLBACK_COPY_LABEL = 'Copy not available — text selected, press Ctrl/Cmd+C';
45
+ const COPIED_ICON_TIMEOUT = 1500;
46
+ const isClipboardAvailable = () => typeof navigator !== 'undefined' &&
47
+ typeof navigator.clipboard?.writeText === 'function';
48
+ const isClipboardReadable = () => typeof navigator !== 'undefined' &&
49
+ typeof navigator.clipboard?.readText === 'function';
50
+ /**
51
+ * Wipes the clipboard, but only if it still holds `copiedValue` — the user may
52
+ * have copied something else in the meantime, and clobbering that would be
53
+ * worse than leaving the secret behind. Unverifiable (no `readText`, permission
54
+ * denied, unfocused document) means "leave it alone".
55
+ */
56
+ const clearClipboardIfUnchanged = async (copiedValue) => {
57
+ if (!isClipboardReadable()) {
58
+ return;
59
+ }
60
+ try {
61
+ if ((await navigator.clipboard.readText()) !== copiedValue) {
62
+ return;
63
+ }
64
+ await navigator.clipboard.writeText('');
65
+ }
66
+ catch {
67
+ // Read or write refused; the clipboard stays as-is.
68
+ }
69
+ };
70
+ function CopyField({ value, label, masked = false, onCopyLabel, revealLabel = 'Show value', hideLabel = 'Hide value', valueLabel = 'Value to copy', clearClipboardAfter }) {
71
+ const { toast } = (0, use_toast_1.useToast)();
72
+ const generatedId = React.useId();
73
+ const inputId = `${generatedId}-copy-field`;
74
+ const inputRef = React.useRef(null);
75
+ const copiedTimerRef = React.useRef(null);
76
+ const clearTimerRef = React.useRef(null);
77
+ const [revealed, setRevealed] = React.useState(false);
78
+ const [copied, setCopied] = React.useState(false);
79
+ const showAsText = !masked || revealed;
80
+ const copyAccessibleName = label ? `Copy ${label}` : 'Copy value';
81
+ React.useEffect(() => {
82
+ return () => {
83
+ if (copiedTimerRef.current) {
84
+ clearTimeout(copiedTimerRef.current);
85
+ }
86
+ // The clipboard-clear timer is deliberately *not* cancelled here: it
87
+ // touches no state (so it can't warn about an unmounted update) and the
88
+ // secret must still leave the clipboard when the dialog holding this
89
+ // field closes before the timeout elapses.
90
+ };
91
+ }, []);
92
+ const selectFieldText = () => {
93
+ const input = inputRef.current;
94
+ if (!input) {
95
+ return;
96
+ }
97
+ // Reveal so the user can copy the selection manually. Flip the DOM `type`
98
+ // imperatively *before* select(): `setRevealed` is batched, so a plain
99
+ // state update would leave the input as type="password" at select() time,
100
+ // and React's subsequent type -> "text" re-render clears the selection —
101
+ // the fallback would then select nothing. We still push the state update so
102
+ // the re-render stays consistent with the DOM we just mutated.
103
+ if (masked) {
104
+ input.type = 'text';
105
+ setRevealed(true);
106
+ }
107
+ input.focus();
108
+ input.select();
109
+ };
110
+ const handleFallback = () => {
111
+ selectFieldText();
112
+ toast({ title: FALLBACK_COPY_LABEL });
113
+ };
114
+ const handleCopy = async () => {
115
+ if (!isClipboardAvailable()) {
116
+ handleFallback();
117
+ return;
118
+ }
119
+ try {
120
+ await navigator.clipboard.writeText(value);
121
+ toast({ variant: 'success', title: onCopyLabel ?? DEFAULT_COPY_LABEL });
122
+ setCopied(true);
123
+ if (copiedTimerRef.current) {
124
+ clearTimeout(copiedTimerRef.current);
125
+ }
126
+ copiedTimerRef.current = setTimeout(() => setCopied(false), COPIED_ICON_TIMEOUT);
127
+ // Only a confirmed write earns a clear — the fallback path never wrote to
128
+ // the clipboard, so it has nothing of ours to wipe. `value` is captured
129
+ // per copy so a later prop change can't make us clear the wrong string.
130
+ if (clearTimerRef.current) {
131
+ clearTimeout(clearTimerRef.current);
132
+ }
133
+ if (clearClipboardAfter !== undefined && clearClipboardAfter > 0) {
134
+ const copiedValue = value;
135
+ clearTimerRef.current = setTimeout(() => {
136
+ void clearClipboardIfUnchanged(copiedValue);
137
+ }, clearClipboardAfter);
138
+ }
139
+ }
140
+ catch {
141
+ handleFallback();
142
+ }
143
+ };
144
+ return ((0, jsx_runtime_1.jsxs)("div", { "data-slot": "copy-field", className: "flex w-full flex-col gap-2", children: [label ? ((0, jsx_runtime_1.jsx)("label", { htmlFor: inputId, className: "text-muted-foreground text-sm font-semibold", children: label })) : null, (0, jsx_runtime_1.jsxs)("div", { "data-slot": "input-wrapper", className: "border-input-border focus-within:border-ring flex h-10 w-full cursor-text items-center gap-1 rounded-md border pr-1 pl-4 transition-[color,box-shadow]", children: [(0, jsx_runtime_1.jsx)("input", { ref: inputRef, id: inputId, "data-slot": "input", "data-testid": "copy-field-input", type: showAsText ? 'text' : 'password', value: value, readOnly: true,
145
+ // This field holds secrets: TOTP manual-entry secrets, recovery
146
+ // codes. While masked it renders as type="password", which invites
147
+ // browsers and password managers to autofill it or offer to SAVE its
148
+ // value, and spellcheck can ship the text to a remote service.
149
+ autoComplete: "off", spellCheck: false, "aria-label": label ? undefined : valueLabel,
150
+ // `min-w-0` lets this flex item shrink below its content width so a
151
+ // long value (e.g. a UUID recovery code) scrolls inside the field
152
+ // instead of overflowing its container. No `font-mono`: the value
153
+ // inherits the app sans font (Inter) so it matches every other field.
154
+ className: "text-input-foreground h-full min-w-0 flex-1 cursor-text border-none bg-transparent text-sm outline-none select-text focus:ring-0 focus:ring-offset-0" }), masked ? ((0, jsx_runtime_1.jsx)(icon_button_1.IconButton, { type: "button", variant: "outline", size: "small", rounded: true, "aria-pressed": revealed, "aria-label": revealed ? hideLabel : revealLabel, onClick: () => setRevealed((prev) => !prev), children: revealed ? (0, jsx_runtime_1.jsx)(lucide_react_1.EyeOff, {}) : (0, jsx_runtime_1.jsx)(lucide_react_1.Eye, {}) })) : null, (0, jsx_runtime_1.jsx)(icon_button_1.IconButton, { type: "button", variant: "outline", size: "small", rounded: true, "aria-label": copyAccessibleName, onClick: handleCopy, children: copied ? (0, jsx_runtime_1.jsx)(lucide_react_1.Check, {}) : (0, jsx_runtime_1.jsx)(lucide_react_1.Copy, {}) })] })] }));
155
+ }