@lerianstudio/sindarian-ui 2.0.0-beta.24 → 2.0.0-beta.26

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 (337) hide show
  1. package/dist/charts/chart.js +4 -231
  2. package/dist/charts/index.js +1 -11
  3. package/dist/components/breadcrumb/get-breadcrumb-paths.js +1 -18
  4. package/dist/components/breadcrumb/index.js +1 -37
  5. package/dist/components/card/account-card/index.js +1 -69
  6. package/dist/components/card/basic-card/index.js +1 -20
  7. package/dist/components/card/dashboard-card/index.js +1 -20
  8. package/dist/components/card/entity-card/index.js +1 -68
  9. package/dist/components/card/index.js +1 -20
  10. package/dist/components/dialog/confirmation-dialog/index.d.ts.map +1 -1
  11. package/dist/components/dialog/confirmation-dialog/index.js +1 -96
  12. package/dist/components/dialog/confirmation-dialog/use-confirm-dialog.js +1 -55
  13. package/dist/components/dialog/index.js +1 -19
  14. package/dist/components/dialog/large-dialog/index.d.ts +2 -2
  15. package/dist/components/dialog/large-dialog/index.d.ts.map +1 -1
  16. package/dist/components/dialog/large-dialog/index.js +1 -21
  17. package/dist/components/entity-box/index.js +1 -67
  18. package/dist/components/entity-data-table/index.js +1 -20
  19. package/dist/components/form/combo-box-field/index.js +1 -35
  20. package/dist/components/form/country-field/index.js +1 -11
  21. package/dist/components/form/date-picker-field/index.js +1 -83
  22. package/dist/components/form/date-range-field/index.js +1 -58
  23. package/dist/components/form/date-time-picker-field/index.js +1 -114
  24. package/dist/components/form/file-upload-field/index.js +1 -69
  25. package/dist/components/form/index.js +1 -31
  26. package/dist/components/form/input-field/index.js +1 -96
  27. package/dist/components/form/otp-field/index.js +1 -19
  28. package/dist/components/form/pagination-limit-field/index.js +1 -10
  29. package/dist/components/form/password-field/index.d.ts.map +1 -1
  30. package/dist/components/form/password-field/index.js +1 -16
  31. package/dist/components/form/radio-group-field/index.js +1 -36
  32. package/dist/components/form/renderable-label.js +1 -57
  33. package/dist/components/form/select-field/index.js +1 -68
  34. package/dist/components/form/state-field/index.js +1 -42
  35. package/dist/components/form/switch-field/index.js +1 -16
  36. package/dist/components/form/textarea-field/index.js +1 -23
  37. package/dist/components/page/index.js +1 -20
  38. package/dist/components/page-header/index.js +1 -80
  39. package/dist/components/pagination/index.js +1 -10
  40. package/dist/components/table/id-table-cell.js +1 -109
  41. package/dist/components/table/index.js +1 -19
  42. package/dist/components/table/locked-table-actions.js +1 -41
  43. package/dist/components/table/name-table-cell.js +1 -58
  44. package/dist/components/ui/accordion/index.js +1 -62
  45. package/dist/components/ui/alert/index.js +1 -45
  46. package/dist/components/ui/alert-dialog/index.js +1 -84
  47. package/dist/components/ui/autocomplete/index.js +1 -440
  48. package/dist/components/ui/autosize-textarea/index.js +1 -89
  49. package/dist/components/ui/avatar/index.js +1 -51
  50. package/dist/components/ui/badge/index.js +1 -83
  51. package/dist/components/ui/breadcrumb/index.js +1 -35
  52. package/dist/components/ui/button/index.js +1 -65
  53. package/dist/components/ui/button/styles.css +2 -1
  54. package/dist/components/ui/calendar/index.js +1 -118
  55. package/dist/components/ui/card/index.js +1 -32
  56. package/dist/components/ui/checkbox/index.js +1 -44
  57. package/dist/components/ui/collapsible/index.js +1 -50
  58. package/dist/components/ui/command/index.js +1 -95
  59. package/dist/components/ui/copy-field/index.js +1 -163
  60. package/dist/components/ui/dialog/index.d.ts +4 -1
  61. package/dist/components/ui/dialog/index.d.ts.map +1 -1
  62. package/dist/components/ui/dialog/index.js +1 -80
  63. package/dist/components/ui/dialog/styles.css +2 -1
  64. package/dist/components/ui/dropdown-menu/index.js +1 -110
  65. package/dist/components/ui/field/index.js +1 -82
  66. package/dist/components/ui/file-upload/index.js +1 -574
  67. package/dist/components/ui/form.js +1 -162
  68. package/dist/components/ui/hover-card/index.js +1 -51
  69. package/dist/components/ui/icon-button/index.js +1 -35
  70. package/dist/components/ui/input/adornment.js +1 -21
  71. package/dist/components/ui/input/index.js +1 -99
  72. package/dist/components/ui/input/styles.css +29 -12
  73. package/dist/components/ui/label/index.js +1 -45
  74. package/dist/components/ui/lerian-wordmark/index.js +1 -7
  75. package/dist/components/ui/loading-button/index.js +1 -9
  76. package/dist/components/ui/multiple-select/index.js +1 -235
  77. package/dist/components/ui/otp-input/index.js +1 -62
  78. package/dist/components/ui/paper/index.js +1 -8
  79. package/dist/components/ui/paper-collapsible/index.js +1 -24
  80. package/dist/components/ui/popover/index.js +1 -55
  81. package/dist/components/ui/progress/index.js +1 -66
  82. package/dist/components/ui/qr-code/index.js +1 -27
  83. package/dist/components/ui/radio-group/index.js +1 -48
  84. package/dist/components/ui/scroll-area/index.js +1 -49
  85. package/dist/components/ui/select/index.js +1 -119
  86. package/dist/components/ui/select/styles.css +6 -3
  87. package/dist/components/ui/separator/index.js +1 -43
  88. package/dist/components/ui/sheet/index.d.ts +7 -2
  89. package/dist/components/ui/sheet/index.d.ts.map +1 -1
  90. package/dist/components/ui/sheet/index.js +1 -136
  91. package/dist/components/ui/sidebar/index.js +1 -27
  92. package/dist/components/ui/sidebar/next-router.cjs +1 -119
  93. package/dist/components/ui/sidebar/sidebar-back-button.js +1 -8
  94. package/dist/components/ui/sidebar/sidebar-components.js +1 -23
  95. package/dist/components/ui/sidebar/sidebar-expand-button.js +1 -49
  96. package/dist/components/ui/sidebar/sidebar-item-button.js +1 -21
  97. package/dist/components/ui/sidebar/sidebar-item-collapsible.js +1 -52
  98. package/dist/components/ui/sidebar/sidebar-item-icon-button.js +1 -18
  99. package/dist/components/ui/sidebar/sidebar-item.js +1 -44
  100. package/dist/components/ui/sidebar/sidebar-provider.js +1 -201
  101. package/dist/components/ui/sidebar/sidebar-root.d.ts +3 -1
  102. package/dist/components/ui/sidebar/sidebar-root.d.ts.map +1 -1
  103. package/dist/components/ui/sidebar/sidebar-root.js +1 -130
  104. package/dist/components/ui/sidebar/sidebar-router.js +1 -126
  105. package/dist/components/ui/sidebar/sidebar-trigger.js +1 -57
  106. package/dist/components/ui/skeleton/index.js +1 -8
  107. package/dist/components/ui/stepper/index.js +1 -29
  108. package/dist/components/ui/switch/index.js +1 -43
  109. package/dist/components/ui/table/index.js +1 -56
  110. package/dist/components/ui/tabs/index.js +1 -55
  111. package/dist/components/ui/textarea/index.js +1 -8
  112. package/dist/components/ui/time-picker/index.js +1 -85
  113. package/dist/components/ui/toast/index.js +1 -3
  114. package/dist/components/ui/toast/toaster.js +1 -16
  115. package/dist/components/ui/toggle-group/index.js +1 -156
  116. package/dist/components/ui/tooltip/index.js +1 -81
  117. package/dist/domain/blotter/index.js +1 -20
  118. package/dist/domain/delinquency-aging/aging-buckets.js +1 -120
  119. package/dist/domain/delinquency-aging/index.js +1 -222
  120. package/dist/domain/figure/index.js +1 -19
  121. package/dist/domain/format.js +1 -137
  122. package/dist/domain/index.js +1 -43
  123. package/dist/domain/key-id/index.js +1 -174
  124. package/dist/domain/ledger-sheet/index.js +1 -28
  125. package/dist/domain/money-diff.js +1 -48
  126. package/dist/domain/money-math.js +1 -104
  127. package/dist/domain/money-text/index.js +1 -123
  128. package/dist/domain/section-label/index.js +1 -17
  129. package/dist/domain/status-rail/index.js +1 -76
  130. package/dist/domain/threshold-gauge/index.js +1 -161
  131. package/dist/enterprise/alert-banner/index.js +1 -24
  132. package/dist/enterprise/app-shell/index.js +1 -87
  133. package/dist/enterprise/cursor-pager/index.js +1 -26
  134. package/dist/enterprise/data-table/column-size.js +1 -103
  135. package/dist/enterprise/data-table/index.d.ts.map +1 -1
  136. package/dist/enterprise/data-table/index.js +1 -345
  137. package/dist/enterprise/date-range-picker/index.js +1 -115
  138. package/dist/enterprise/detail-panel/index.js +1 -20
  139. package/dist/enterprise/empty-state/index.d.ts +6 -1
  140. package/dist/enterprise/empty-state/index.d.ts.map +1 -1
  141. package/dist/enterprise/empty-state/index.js +1 -13
  142. package/dist/enterprise/index.js +1 -39
  143. package/dist/enterprise/number-input/index.js +1 -252
  144. package/dist/enterprise/search-input/index.js +1 -121
  145. package/dist/enterprise/stat-card/index.js +1 -75
  146. package/dist/enterprise/status-badge/index.js +1 -120
  147. package/dist/enterprise/use-is-mobile.js +1 -68
  148. package/dist/enterprise/virtualized-table/index.js +1 -141
  149. package/dist/esm/charts/chart.js +4 -190
  150. package/dist/esm/charts/index.js +1 -3
  151. package/dist/esm/components/breadcrumb/get-breadcrumb-paths.js +1 -12
  152. package/dist/esm/components/breadcrumb/index.js +1 -30
  153. package/dist/esm/components/card/account-card/index.js +1 -53
  154. package/dist/esm/components/card/basic-card/index.js +1 -14
  155. package/dist/esm/components/card/dashboard-card/index.js +1 -14
  156. package/dist/esm/components/card/entity-card/index.js +1 -52
  157. package/dist/esm/components/card/index.js +1 -4
  158. package/dist/esm/components/dialog/confirmation-dialog/index.d.ts.map +1 -1
  159. package/dist/esm/components/dialog/confirmation-dialog/index.js +1 -60
  160. package/dist/esm/components/dialog/confirmation-dialog/use-confirm-dialog.js +1 -49
  161. package/dist/esm/components/dialog/index.js +1 -3
  162. package/dist/esm/components/dialog/large-dialog/index.d.ts +2 -2
  163. package/dist/esm/components/dialog/large-dialog/index.d.ts.map +1 -1
  164. package/dist/esm/components/dialog/large-dialog/index.js +1 -16
  165. package/dist/esm/components/entity-box/index.js +1 -56
  166. package/dist/esm/components/entity-data-table/index.js +1 -17
  167. package/dist/esm/components/form/combo-box-field/index.js +1 -28
  168. package/dist/esm/components/form/country-field/index.js +1 -7
  169. package/dist/esm/components/form/date-picker-field/index.js +1 -43
  170. package/dist/esm/components/form/date-range-field/index.js +1 -18
  171. package/dist/esm/components/form/date-time-picker-field/index.js +1 -74
  172. package/dist/esm/components/form/file-upload-field/index.js +1 -65
  173. package/dist/esm/components/form/index.js +1 -15
  174. package/dist/esm/components/form/input-field/index.js +1 -92
  175. package/dist/esm/components/form/otp-field/index.js +1 -15
  176. package/dist/esm/components/form/pagination-limit-field/index.js +1 -6
  177. package/dist/esm/components/form/password-field/index.d.ts.map +1 -1
  178. package/dist/esm/components/form/password-field/index.js +1 -10
  179. package/dist/esm/components/form/radio-group-field/index.js +1 -32
  180. package/dist/esm/components/form/renderable-label.js +1 -54
  181. package/dist/esm/components/form/select-field/index.js +1 -64
  182. package/dist/esm/components/form/state-field/index.js +1 -35
  183. package/dist/esm/components/form/switch-field/index.js +1 -12
  184. package/dist/esm/components/form/textarea-field/index.js +1 -19
  185. package/dist/esm/components/page/index.js +1 -15
  186. package/dist/esm/components/page-header/index.js +1 -71
  187. package/dist/esm/components/pagination/index.js +1 -6
  188. package/dist/esm/components/table/id-table-cell.js +1 -105
  189. package/dist/esm/components/table/index.js +1 -3
  190. package/dist/esm/components/table/locked-table-actions.js +1 -37
  191. package/dist/esm/components/table/name-table-cell.js +1 -54
  192. package/dist/esm/components/ui/accordion/index.js +1 -24
  193. package/dist/esm/components/ui/alert/index.js +1 -38
  194. package/dist/esm/components/ui/alert-dialog/index.js +1 -39
  195. package/dist/esm/components/ui/autocomplete/index.js +1 -392
  196. package/dist/esm/components/ui/autosize-textarea/index.js +1 -51
  197. package/dist/esm/components/ui/avatar/index.js +1 -14
  198. package/dist/esm/components/ui/badge/index.js +1 -79
  199. package/dist/esm/components/ui/breadcrumb/index.js +1 -27
  200. package/dist/esm/components/ui/button/index.js +1 -60
  201. package/dist/esm/components/ui/calendar/index.js +1 -82
  202. package/dist/esm/components/ui/card/index.js +1 -24
  203. package/dist/esm/components/ui/checkbox/index.js +1 -9
  204. package/dist/esm/components/ui/collapsible/index.js +1 -13
  205. package/dist/esm/components/ui/command/index.js +1 -51
  206. package/dist/esm/components/ui/copy-field/index.js +1 -127
  207. package/dist/esm/components/ui/dialog/index.d.ts +4 -1
  208. package/dist/esm/components/ui/dialog/index.d.ts.map +1 -1
  209. package/dist/esm/components/ui/dialog/index.js +1 -36
  210. package/dist/esm/components/ui/dropdown-menu/index.js +1 -60
  211. package/dist/esm/components/ui/field/index.js +1 -71
  212. package/dist/esm/components/ui/file-upload/index.js +1 -536
  213. package/dist/esm/components/ui/form.js +1 -118
  214. package/dist/esm/components/ui/hover-card/index.js +1 -14
  215. package/dist/esm/components/ui/icon-button/index.js +1 -31
  216. package/dist/esm/components/ui/input/adornment.js +1 -17
  217. package/dist/esm/components/ui/input/index.js +1 -60
  218. package/dist/esm/components/ui/label/index.js +1 -10
  219. package/dist/esm/components/ui/lerian-wordmark/index.js +1 -4
  220. package/dist/esm/components/ui/loading-button/index.js +1 -7
  221. package/dist/esm/components/ui/multiple-select/index.js +1 -196
  222. package/dist/esm/components/ui/otp-input/index.js +1 -21
  223. package/dist/esm/components/ui/paper/index.js +1 -5
  224. package/dist/esm/components/ui/paper-collapsible/index.js +1 -19
  225. package/dist/esm/components/ui/popover/index.js +1 -17
  226. package/dist/esm/components/ui/progress/index.js +1 -31
  227. package/dist/esm/components/ui/qr-code/index.js +1 -24
  228. package/dist/esm/components/ui/radio-group/index.js +1 -12
  229. package/dist/esm/components/ui/scroll-area/index.js +1 -13
  230. package/dist/esm/components/ui/select/index.js +1 -74
  231. package/dist/esm/components/ui/separator/index.js +1 -8
  232. package/dist/esm/components/ui/sheet/index.d.ts +7 -2
  233. package/dist/esm/components/ui/sheet/index.d.ts.map +1 -1
  234. package/dist/esm/components/ui/sheet/index.js +1 -92
  235. package/dist/esm/components/ui/sidebar/index.js +1 -11
  236. package/dist/esm/components/ui/sidebar/next-router.cjs +1 -119
  237. package/dist/esm/components/ui/sidebar/sidebar-back-button.js +1 -5
  238. package/dist/esm/components/ui/sidebar/sidebar-components.js +1 -15
  239. package/dist/esm/components/ui/sidebar/sidebar-expand-button.js +1 -42
  240. package/dist/esm/components/ui/sidebar/sidebar-item-button.js +1 -18
  241. package/dist/esm/components/ui/sidebar/sidebar-item-collapsible.js +1 -44
  242. package/dist/esm/components/ui/sidebar/sidebar-item-icon-button.js +1 -14
  243. package/dist/esm/components/ui/sidebar/sidebar-item.js +1 -40
  244. package/dist/esm/components/ui/sidebar/sidebar-provider.js +1 -193
  245. package/dist/esm/components/ui/sidebar/sidebar-root.d.ts +3 -1
  246. package/dist/esm/components/ui/sidebar/sidebar-root.d.ts.map +1 -1
  247. package/dist/esm/components/ui/sidebar/sidebar-root.js +1 -126
  248. package/dist/esm/components/ui/sidebar/sidebar-router.js +1 -89
  249. package/dist/esm/components/ui/sidebar/sidebar-trigger.js +1 -53
  250. package/dist/esm/components/ui/skeleton/index.js +1 -6
  251. package/dist/esm/components/ui/stepper/index.js +1 -20
  252. package/dist/esm/components/ui/switch/index.js +1 -8
  253. package/dist/esm/components/ui/table/index.js +1 -44
  254. package/dist/esm/components/ui/tabs/index.js +1 -17
  255. package/dist/esm/components/ui/textarea/index.js +1 -6
  256. package/dist/esm/components/ui/time-picker/index.js +1 -49
  257. package/dist/esm/components/ui/toast/index.js +1 -2
  258. package/dist/esm/components/ui/toast/toaster.js +1 -13
  259. package/dist/esm/components/ui/toggle-group/index.js +1 -120
  260. package/dist/esm/components/ui/tooltip/index.js +1 -43
  261. package/dist/esm/domain/blotter/index.js +1 -16
  262. package/dist/esm/domain/delinquency-aging/aging-buckets.js +1 -115
  263. package/dist/esm/domain/delinquency-aging/index.js +1 -218
  264. package/dist/esm/domain/figure/index.js +1 -15
  265. package/dist/esm/domain/format.js +1 -128
  266. package/dist/esm/domain/index.js +1 -19
  267. package/dist/esm/domain/key-id/index.js +1 -169
  268. package/dist/esm/domain/ledger-sheet/index.js +1 -24
  269. package/dist/esm/domain/money-diff.js +1 -45
  270. package/dist/esm/domain/money-math.js +1 -98
  271. package/dist/esm/domain/money-text/index.js +1 -118
  272. package/dist/esm/domain/section-label/index.js +1 -14
  273. package/dist/esm/domain/status-rail/index.js +1 -71
  274. package/dist/esm/domain/threshold-gauge/index.js +1 -157
  275. package/dist/esm/enterprise/alert-banner/index.js +1 -21
  276. package/dist/esm/enterprise/app-shell/index.js +1 -51
  277. package/dist/esm/enterprise/cursor-pager/index.js +1 -23
  278. package/dist/esm/enterprise/data-table/column-size.js +1 -97
  279. package/dist/esm/enterprise/data-table/index.d.ts.map +1 -1
  280. package/dist/esm/enterprise/data-table/index.js +1 -342
  281. package/dist/esm/enterprise/date-range-picker/index.js +1 -112
  282. package/dist/esm/enterprise/detail-panel/index.js +1 -17
  283. package/dist/esm/enterprise/empty-state/index.d.ts +6 -1
  284. package/dist/esm/enterprise/empty-state/index.d.ts.map +1 -1
  285. package/dist/esm/enterprise/empty-state/index.js +1 -10
  286. package/dist/esm/enterprise/index.js +1 -22
  287. package/dist/esm/enterprise/number-input/index.js +1 -214
  288. package/dist/esm/enterprise/search-input/index.js +1 -85
  289. package/dist/esm/enterprise/stat-card/index.js +1 -72
  290. package/dist/esm/enterprise/status-badge/index.js +1 -116
  291. package/dist/esm/enterprise/use-is-mobile.js +1 -31
  292. package/dist/esm/enterprise/virtualized-table/index.js +1 -138
  293. package/dist/esm/hooks/use-click-away.js +1 -22
  294. package/dist/esm/hooks/use-pagination.js +1 -38
  295. package/dist/esm/hooks/use-stepper.js +1 -22
  296. package/dist/esm/hooks/use-time.js +1 -13
  297. package/dist/esm/hooks/use-toast.js +1 -107
  298. package/dist/esm/index.js +1 -77
  299. package/dist/esm/lib/storage/get-storage-object.js +1 -17
  300. package/dist/esm/lib/storage/get-storage.js +1 -14
  301. package/dist/esm/lib/storage/index.js +1 -2
  302. package/dist/esm/lib/typography.js +1 -31
  303. package/dist/esm/lib/utils.js +1 -41
  304. package/dist/esm/theme/get-theme-script.js +1 -41
  305. package/dist/esm/theme/index.js +1 -4
  306. package/dist/esm/theme/mode-toggle.js +1 -45
  307. package/dist/esm/theme/theme-provider.js +1 -122
  308. package/dist/esm/toast/helpers.js +1 -36
  309. package/dist/esm/toast/index.js +1 -4
  310. package/dist/esm/types/metadata-type.js +1 -1
  311. package/dist/esm/utils/countries.cjs +1 -17
  312. package/dist/esm/utils/country-utils.js +1 -18
  313. package/dist/esm/utils/currency-codes.js +1 -181
  314. package/dist/globals.css +1 -0
  315. package/dist/hooks/use-click-away.js +1 -29
  316. package/dist/hooks/use-pagination.js +1 -41
  317. package/dist/hooks/use-stepper.js +1 -26
  318. package/dist/hooks/use-time.js +1 -20
  319. package/dist/hooks/use-toast.js +1 -111
  320. package/dist/index.js +1 -96
  321. package/dist/lib/storage/get-storage-object.js +1 -23
  322. package/dist/lib/storage/get-storage.js +1 -17
  323. package/dist/lib/storage/index.js +1 -18
  324. package/dist/lib/typography.js +1 -34
  325. package/dist/lib/utils.js +1 -45
  326. package/dist/theme/get-theme-script.js +1 -44
  327. package/dist/theme/index.js +1 -11
  328. package/dist/theme/mode-toggle.js +1 -48
  329. package/dist/theme/theme-provider.js +1 -160
  330. package/dist/toast/helpers.js +1 -41
  331. package/dist/toast/index.js +1 -10
  332. package/dist/tokens.css +7 -4
  333. package/dist/types/metadata-type.js +1 -2
  334. package/dist/utils/countries.cjs +1 -17
  335. package/dist/utils/country-utils.js +1 -25
  336. package/dist/utils/currency-codes.js +1 -184
  337. package/package.json +4 -3
@@ -1,84 +1 @@
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, variant = 'default', ...props }) {
80
- return ((0, jsx_runtime_1.jsx)(AlertDialogPrimitive.Action, { "data-slot": "alert-dialog-action", className: (0, utils_1.cn)((0, button_1.buttonVariants)({ variant }), className), ...props }));
81
- }
82
- function AlertDialogCancel({ className, variant = 'outline', ...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 }), className), ...props }));
84
- }
1
+ "use client";"use strict";var __createBinding=this&&this.__createBinding||(Object.create?(function(e,t,r,a){if(a===void 0)a=r;var l=Object.getOwnPropertyDescriptor(t,r);if(!l||("get"in l?!t.__esModule:l.writable||l.configurable)){l={enumerable:true,get:function(){return t[r]}}}Object.defineProperty(e,a,l)}):(function(e,t,r,a){if(a===void 0)a=r;e[a]=t[r]}));var __setModuleDefault=this&&this.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,"default",{enumerable:true,value:t})}):function(e,t){e["default"]=t});var __importStar=this&&this.__importStar||(function(){var e=function(t){e=Object.getOwnPropertyNames||function(r){var a=[];for(var l in r)if(Object.prototype.hasOwnProperty.call(r,l))a[a.length]=l;return a};return e(t)};return function(t){if(t&&t.__esModule)return t;var r={};if(t!=null){for(var a=e(t),l=0;l<a.length;l++)if(a[l]!=="default")__createBinding(r,t,a[l])}__setModuleDefault(r,t);return r}})();Object.defineProperty(exports,"__esModule",{value:true});exports.AlertDialog=AlertDialog;exports.AlertDialogPortal=AlertDialogPortal;exports.AlertDialogOverlay=AlertDialogOverlay;exports.AlertDialogTrigger=AlertDialogTrigger;exports.AlertDialogContent=AlertDialogContent;exports.AlertDialogHeader=AlertDialogHeader;exports.AlertDialogFooter=AlertDialogFooter;exports.AlertDialogTitle=AlertDialogTitle;exports.AlertDialogDescription=AlertDialogDescription;exports.AlertDialogAction=AlertDialogAction;exports.AlertDialogCancel=AlertDialogCancel;const jsx_runtime_1=require("react/jsx-runtime");const AlertDialogPrimitive=__importStar(require("@radix-ui/react-alert-dialog"));const button_1=require("../../../components/ui/button");const utils_1=require("../../../lib/utils");function AlertDialog({...e}){return(0,jsx_runtime_1.jsx)(AlertDialogPrimitive.Root,{"data-slot":"alert-dialog",...e})}function AlertDialogTrigger({...e}){return(0,jsx_runtime_1.jsx)(AlertDialogPrimitive.Trigger,{"data-slot":"alert-dialog-trigger",...e})}function AlertDialogPortal({...e}){return(0,jsx_runtime_1.jsx)(AlertDialogPrimitive.Portal,{"data-slot":"alert-dialog-portal",...e})}function AlertDialogOverlay({className:e,...t}){return(0,jsx_runtime_1.jsx)(AlertDialogPrimitive.Overlay,{"data-slot":"alert-dialog-overlay",className:(0,utils_1.cn)("dialog-overlay",e),...t})}function AlertDialogContent({className:e,container:t,forceMount:r,...a}){return(0,jsx_runtime_1.jsxs)(AlertDialogPortal,{container:t,forceMount:r,children:[(0,jsx_runtime_1.jsx)(AlertDialogOverlay,{forceMount:r}),(0,jsx_runtime_1.jsx)(AlertDialogPrimitive.Content,{"data-slot":"alert-dialog-content",className:(0,utils_1.cn)("dialog-content",e),forceMount:r,...a})]})}function AlertDialogHeader({className:e,...t}){return(0,jsx_runtime_1.jsx)("div",{"data-slot":"alert-dialog-header",className:(0,utils_1.cn)("dialog-header",e),...t})}function AlertDialogFooter({className:e,...t}){return(0,jsx_runtime_1.jsx)("div",{"data-slot":"alert-dialog-footer",className:(0,utils_1.cn)("dialog-footer",e),...t})}function AlertDialogTitle({className:e,...t}){return(0,jsx_runtime_1.jsx)(AlertDialogPrimitive.Title,{"data-slot":"alert-dialog-title",className:(0,utils_1.cn)("dialog-title",e),...t})}function AlertDialogDescription({className:e,...t}){return(0,jsx_runtime_1.jsx)(AlertDialogPrimitive.Description,{"data-slot":"alert-dialog-description",className:(0,utils_1.cn)("dialog-description",e),...t})}function AlertDialogAction({className:e,variant:t="default",...r}){return(0,jsx_runtime_1.jsx)(AlertDialogPrimitive.Action,{"data-slot":"alert-dialog-action",className:(0,utils_1.cn)((0,button_1.buttonVariants)({variant:t}),e),...r})}function AlertDialogCancel({className:e,variant:t="outline",...r}){return(0,jsx_runtime_1.jsx)(AlertDialogPrimitive.Cancel,{"data-slot":"alert-dialog-cancel",className:(0,utils_1.cn)((0,button_1.buttonVariants)({variant:t}),e),...r})}
@@ -1,440 +1 @@
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
- var __importDefault = (this && this.__importDefault) || function (mod) {
37
- return (mod && mod.__esModule) ? mod : { "default": mod };
38
- };
39
- Object.defineProperty(exports, "__esModule", { value: true });
40
- exports.SIDE_OPTIONS = void 0;
41
- exports.AutocompleteTrigger = AutocompleteTrigger;
42
- exports.AutocompleteValue = AutocompleteValue;
43
- exports.AutocompleteMultipleValue = AutocompleteMultipleValue;
44
- exports.AutocompleteEmpty = AutocompleteEmpty;
45
- exports.AutocompleteLoading = AutocompleteLoading;
46
- exports.AutocompleteContent = AutocompleteContent;
47
- exports.AutocompleteGroup = AutocompleteGroup;
48
- exports.AutocompleteItem = AutocompleteItem;
49
- exports.Autocomplete = Autocomplete;
50
- const jsx_runtime_1 = require("react/jsx-runtime");
51
- const react_1 = __importDefault(require("react"));
52
- const SelectPrimitive = __importStar(require("@radix-ui/react-select"));
53
- const lucide_react_1 = require("lucide-react");
54
- const badge_1 = require("../badge");
55
- const utils_1 = require("../../../lib/utils");
56
- const separator_1 = require("../separator");
57
- const cmdk_1 = require("cmdk");
58
- const use_click_away_1 = require("../../../hooks/use-click-away");
59
- const isNil_js_1 = __importDefault(require("lodash/isNil.js"));
60
- const AutocompleteContext = react_1.default.createContext({
61
- value: [],
62
- onValueChange: (values) => values,
63
- handleChange: (value) => value,
64
- handleClear: () => { },
65
- setOpen: () => { },
66
- setOnScrollbar: () => { },
67
- options: {},
68
- addOption: (option) => option,
69
- inputRef: react_1.default.createRef()
70
- });
71
- const useAutocomplete = () => {
72
- const context = react_1.default.useContext(AutocompleteContext);
73
- if (!context) {
74
- throw new Error('useAutocomplete must be used within a AutocompleteProvider');
75
- }
76
- return context;
77
- };
78
- /**
79
- * The text a value reads as.
80
- *
81
- * An item registers a label only when it HAS one to give: a string child, or an
82
- * explicit `label` when its children are markup. Everything downstream renders
83
- * this map as text (the input's value, a chip's `aria-label`), so a value with
84
- * no registered label falls back to the value itself. The alternatives are both
85
- * defects that shipped: `undefined` drops a controlled input to uncontrolled,
86
- * and a React element interpolates into a template literal as "[object
87
- * Object]".
88
- */
89
- function labelOf(options, value) {
90
- return options[value] ?? value;
91
- }
92
- function AutocompleteTrigger({ ref, className, onClear, clearLabel = 'Clear', children }) {
93
- const _ref = react_1.default.useRef(null);
94
- const { open, readOnly, setOpen, disabled, value, inputRef, handleClear } = useAutocomplete();
95
- react_1.default.useImperativeHandle(ref, () => _ref.current);
96
- const isNoSelection = disabled || readOnly || value.length < 1;
97
- return ((0, jsx_runtime_1.jsxs)("div", { ref: _ref, className: (0, utils_1.cn)(
98
- // `border-input-border`, NOT `border-input`: `--input` is a SURFACE
99
- // token and is white in light, so the border it paints is invisible
100
- // against the field's own `bg-background`. This is the same edge
101
- // MultipleSelect and DateRangePicker draw, and the same token.
102
- 'bg-background ring-offset-background placeholder:text-input-placeholder data-[disabled=true]:bg-shadcn-100 data-[read-only=true]:bg-shadcn-100 border-input-border flex rounded-md border text-sm focus:outline-hidden focus-visible:outline-hidden data-[disabled=true]:cursor-not-allowed data-[disabled=true]:opacity-50 data-[read-only=true]:opacity-50 md:text-sm [&>span]:line-clamp-1', {
103
- 'h-9': value.length === 0,
104
- 'min-h-9': value.length > 0,
105
- 'cursor-text': !disabled && value.length !== 0
106
- }, className), onClick: () => {
107
- // Redirect focus to the input field when clicking on the container
108
- if (readOnly || disabled) {
109
- return;
110
- }
111
- if (open) {
112
- inputRef?.current?.blur();
113
- }
114
- else {
115
- inputRef?.current?.focus();
116
- }
117
- setOpen(!open);
118
- }, "data-disabled": disabled, "data-read-only": readOnly, children: [(0, jsx_runtime_1.jsx)("div", { className: "flex grow flex-wrap gap-1 px-3 py-2", children: children }), (0, jsx_runtime_1.jsxs)("div", { className: "flex shrink-0 items-center justify-end", children: [(0, jsx_runtime_1.jsx)("button", { type: "button", "aria-label": clearLabel, className: (0, utils_1.cn)('cursor-pointer', isNoSelection && 'hidden'), onKeyDown: (event) => {
119
- // cmdk's Command root calls preventDefault() on EVERY Enter that
120
- // reaches it, which cancels this button's implicit activation, so
121
- // the keydown must not get there. Enter only: the root's other
122
- // keys (Escape, the arrows) still belong to the panel.
123
- if (event.key === 'Enter') {
124
- event.stopPropagation();
125
- }
126
- }, onClick: (event) => {
127
- event.stopPropagation();
128
- handleClear();
129
- onClear?.();
130
- }, children: (0, jsx_runtime_1.jsx)(lucide_react_1.X, { "aria-hidden": true, className: "text-muted-foreground mx-2 h-4" }) }), (0, jsx_runtime_1.jsx)(separator_1.Separator, { orientation: "vertical", className: (0, utils_1.cn)(isNoSelection && 'hidden') }), (0, jsx_runtime_1.jsx)(SelectPrimitive.Icon, { className: "cursor-pointer data-[disabled=true]:cursor-not-allowed data-[read-only=true]:cursor-default", "data-disabled": disabled, "data-read-only": readOnly, children: (0, jsx_runtime_1.jsx)(lucide_react_1.ChevronDown, { className: "mx-3 my-2 h-4 w-4 opacity-50" }) })] })] }));
131
- }
132
- function AutocompleteValue({ ref, className, value: valueProp, onValueChange, onBlur, ...props }) {
133
- const [search, setSearch] = react_1.default.useState(valueProp);
134
- const { value, showValue, options, readOnly, disabled, inputRef } = useAutocomplete();
135
- react_1.default.useImperativeHandle(ref, () => inputRef.current);
136
- const updateSearch = (value) => {
137
- if ((0, isNil_js_1.default)(value)) {
138
- return;
139
- }
140
- const v = typeof value === 'string' ? value : value[0];
141
- if (v === '') {
142
- handleValueChange('');
143
- return;
144
- }
145
- handleValueChange(showValue ? v : labelOf(options, v));
146
- };
147
- const handleValueChange = (value) => {
148
- setSearch(value);
149
- onValueChange?.(value);
150
- };
151
- const handleBlur = (event) => {
152
- updateSearch(value);
153
- onBlur?.(event);
154
- };
155
- // If options changes, update only the internal value
156
- react_1.default.useEffect(() => {
157
- if ((0, isNil_js_1.default)(value)) {
158
- return;
159
- }
160
- const v = typeof value === 'string' ? value : value[0];
161
- if (v === '') {
162
- return;
163
- }
164
- setSearch(showValue ? v : labelOf(options, v));
165
- }, [options]);
166
- react_1.default.useEffect(() => {
167
- updateSearch(value);
168
- }, [value]);
169
- return ((0, jsx_runtime_1.jsx)(cmdk_1.Command.Input, { ...props, ref: inputRef, value: search, onValueChange: handleValueChange, disabled: disabled, readOnly: readOnly, className: (0, utils_1.cn)('placeholder:text-muted-foreground w-full bg-transparent outline-hidden read-only:opacity-50 read-only:placeholder:opacity-0 focus:outline-hidden disabled:cursor-not-allowed disabled:opacity-50 disabled:placeholder:opacity-0', className), onBlur: handleBlur }));
170
- }
171
- function AutocompleteMultipleValue({ ref, className, clearLabel = 'Clear', ...props }) {
172
- const { value, disabled, handleChange, options, showValue, inputRef } = useAutocomplete();
173
- react_1.default.useImperativeHandle(ref, () => inputRef.current);
174
- return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [options &&
175
- value?.map((value) => ((0, jsx_runtime_1.jsxs)(badge_1.Badge, { variant: "secondary", className: (0, utils_1.cn)('data-disabled:bg-muted-foreground data-fixed:bg-muted-foreground data-disabled:text-muted data-fixed:text-muted data-disabled:hover:bg-muted-foreground data-fixed:hover:bg-muted-foreground'), children: [showValue ? value : labelOf(options, value), (0, jsx_runtime_1.jsx)("button", { type: "button", "aria-label": `${clearLabel} ${showValue ? value : labelOf(options, value)}`, className: (0, utils_1.cn)('ring-offset-background focus:ring-ring ml-1 rounded-full outline-hidden focus:ring-2 focus:ring-offset-2', disabled && 'hidden'), onKeyDown: (event) => {
176
- // cmdk's Command root calls preventDefault() on EVERY Enter that
177
- // reaches it, which cancels this button's implicit activation, so
178
- // the keydown must not get there. Enter only: the root's other
179
- // keys (Escape, the arrows) still belong to the panel.
180
- if (event.key === 'Enter') {
181
- event.stopPropagation();
182
- }
183
- }, onClick: (event) => {
184
- event.stopPropagation();
185
- handleChange(value);
186
- }, children: (0, jsx_runtime_1.jsx)(lucide_react_1.X, { "aria-hidden": true, className: "text-muted-foreground hover:text-foreground h-3 w-3" }) })] }, value))), (0, jsx_runtime_1.jsx)(cmdk_1.Command.Input, { ...props, ref: inputRef, disabled: disabled, className: (0, utils_1.cn)('placeholder:text-muted-foreground w-full bg-transparent outline-hidden focus:outline-hidden disabled:cursor-not-allowed disabled:opacity-50 disabled:placeholder:opacity-0', className) })] }));
187
- }
188
- function AutocompleteEmpty({ className, ...props }) {
189
- const render = (0, cmdk_1.useCommandState)((state) => state.filtered.count === 0);
190
- if (!render)
191
- return null;
192
- return ((0, jsx_runtime_1.jsx)("div", { "data-slot": "autocomplete-empty", className: (0, utils_1.cn)('py-6 text-center text-sm', className), "cmdk-empty": "", role: "presentation", ...props }));
193
- }
194
- function AutocompleteLoading({ className, ref, ...props }) {
195
- return ((0, jsx_runtime_1.jsx)(cmdk_1.Command.Loading, { ref: ref, "data-slot": "autocomplete-loading", className: (0, utils_1.cn)('flex items-center justify-center py-6 text-center text-sm', className), ...props, children: (0, jsx_runtime_1.jsx)(lucide_react_1.Loader2, { className: "text-muted-foreground h-5 w-5 motion-safe:animate-spin" }) }));
196
- }
197
- exports.SIDE_OPTIONS = ['top', 'right', 'bottom', 'left'];
198
- function AutocompleteContent({ className, position = 'popper', side = 'bottom', ref, children, onMouseEnter, onMouseLeave, onPointerDownOutside, ...props }) {
199
- const _ref = react_1.default.useRef(null);
200
- const { open, addOption, setOpen, onScrollbar, setOnScrollbar, inputRef } = useAutocomplete();
201
- react_1.default.useImperativeHandle(ref, () => _ref.current);
202
- (0, use_click_away_1.useClickAway)(_ref, (event) => {
203
- /**
204
- * ⛔ THE `open` GUARD IS LOAD-BEARING SINCE THIS LIST STOPPED UNMOUNTING.
205
- * While the panel returned `null` this handler was inert by accident: its
206
- * ref pointed at nothing. Now that the list stays in the DOM (see the return
207
- * below), every click anywhere on the page reaches here — and without this
208
- * line each one would call `setOpen(false)` and blur the input. A consumer
209
- * form carrying ten of these would run ten handlers per click.
210
- */
211
- if (!open) {
212
- return;
213
- }
214
- // Should not close when clicking on the scrollbar
215
- if (onScrollbar) {
216
- return;
217
- }
218
- setOpen(false);
219
- inputRef.current?.blur();
220
- onPointerDownOutside?.(event);
221
- });
222
- /**
223
- * Iterates recursively into react children to find valid items options
224
- * Adds the valid ones into the options object
225
- * @param children
226
- */
227
- const _searchChildren = (children) => {
228
- react_1.default.Children.forEach(react_1.default.Children.toArray(children), (child) => {
229
- // If child is already invalid, like pure string, dismiss
230
- if (!react_1.default.isValidElement(child)) {
231
- return;
232
- }
233
- // If child is recognized as an AutocompleteItem
234
- if (child.type &&
235
- child.type.displayName === 'AutocompleteItem') {
236
- // Check if the item was proper filled with a value prop
237
- if (child.props.value) {
238
- // NOT `children as string`. That cast is how a React ELEMENT got into
239
- // a map every reader treats as text. An item with markup children
240
- // registers nothing unless it declares a `label`, and `labelOf` reads
241
- // the absence as "use the value".
242
- const { label, children: itemChildren } = child.props;
243
- const text = label ??
244
- (typeof itemChildren === 'string' ? itemChildren : undefined);
245
- if (text !== undefined) {
246
- addOption({ [child.props.value]: text });
247
- }
248
- }
249
- return;
250
- }
251
- // If not, search recursively into the childrens
252
- if (child.props.children) {
253
- _searchChildren(child.props.children);
254
- }
255
- });
256
- };
257
- // Since this component is not going to be rendered in the DOM until open is true,
258
- // we need to register the options when the component mounts
259
- // and when the children changes.
260
- react_1.default.useEffect(() => {
261
- _searchChildren(children);
262
- }, [children]);
263
- /**
264
- * ⛔ THE LIST STAYS IN THE DOM, THE OPTIONS DO NOT — and the split is the whole
265
- * fix (#150).
266
- *
267
- * cmdk puts `aria-controls={listId}` on the input it renders and `id={listId}`
268
- * on this list. Returning `null` while closed therefore left the input naming
269
- * an element that did not exist, which axe-core reports as a CRITICAL
270
- * `aria-valid-attr-value` violation — measured as 10 failing cases across five
271
- * forms in a consumer, in both the populated and the empty state. A screen
272
- * reader following the reference resolved it to nothing.
273
- *
274
- * ⛔ AND NOT "KEEP EVERYTHING MOUNTED", which is the obvious reading of the
275
- * fix and is too expensive. Only the LIST carries the id; the options carry
276
- * the cost. One consumer form puts up to ten of these on screen, each holding
277
- * a page of up to a hundred options — roughly a thousand permanently present
278
- * nodes for an id that is one element. `{open ? children : null}` keeps the
279
- * reference resolvable and the DOM the size it was.
280
- *
281
- * ⚠️ `hidden` AND NOT A CLASS. It removes the subtree from the accessibility
282
- * tree as well as from view, so a closed panel is not an empty `listbox` that
283
- * a screen reader can reach into.
284
- *
285
- * ⚠️ THE ENTRY ANIMATION IS NOT LOST, because there was none to lose: the
286
- * className carries `animate-in` with no `fade-in-*` / `zoom-in-*` / `slide-in-*`
287
- * companion, so every `--tw-enter-*` variable sits at its default and the
288
- * keyframe is a no-op today. Should a real one be added later, it belongs on a
289
- * wrapper INSIDE this list — that subtree still mounts with the children.
290
- */
291
- return ((0, jsx_runtime_1.jsx)("div", { className: "relative", hidden: !open, children: (0, jsx_runtime_1.jsx)(cmdk_1.Command.List, { ref: _ref, className: (0, utils_1.cn)('bg-popover text-popover-foreground motion-safe:animate-in absolute top-1 z-50 max-h-96 w-full min-w-32 overflow-x-hidden overflow-y-auto rounded-md border shadow-md outline-hidden', position === 'popper' &&
292
- 'data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1', className), "data-side": side, ...props, onMouseEnter: (e) => {
293
- onMouseEnter?.(e);
294
- setOnScrollbar(true);
295
- }, onMouseLeave: (e) => {
296
- onMouseLeave?.(e);
297
- setOnScrollbar(false);
298
- }, children: open ? children : null }) }));
299
- }
300
- function AutocompleteGroup({ className, ...props }) {
301
- return ((0, jsx_runtime_1.jsx)(cmdk_1.Command.Group, { "data-slot": "autocomplete-group", className: (0, utils_1.cn)('text-foreground [&_[cmdk-group-heading]]:text-muted-foreground overflow-hidden p-1 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium', className), ...props }));
302
- }
303
- function AutocompleteItem({ className, value,
304
- // Read off the element by `AutocompleteContent._searchChildren`, never
305
- // rendered: destructured here only to keep it out of `...props` and off the
306
- // div cmdk spreads them onto.
307
- label: _label, onSelect, ...props }) {
308
- const { handleChange } = useAutocomplete();
309
- return ((0, jsx_runtime_1.jsx)(cmdk_1.Command.Item, { "data-slot": "autocomplete-item", value: value, className: (0, utils_1.cn)("data-[selected='true']:bg-accent data-[selected=true]:text-accent-foreground relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0", className), ...props, onMouseDown: (e) => {
310
- e.preventDefault();
311
- e.stopPropagation();
312
- }, onSelect: (value) => {
313
- handleChange(value);
314
- onSelect?.(value);
315
- } }));
316
- }
317
- /**
318
- * ⛔ LOAD-BEARING, NOT A DEBUG LABEL. `AutocompleteContent._searchChildren`
319
- * recognises an option by `child.type.displayName === 'AutocompleteItem'`, and
320
- * a function component carries no displayName unless it is assigned one. It
321
- * never was, so the walk matched nothing and the option registry stayed empty
322
- * for every consumer: a multiple-select chip rendered `options[value]` as
323
- * `undefined` (an empty chip), and `AutocompleteValue.updateSearch` set the
324
- * input to `undefined` on every selection outside `showValue` mode.
325
- */
326
- AutocompleteItem.displayName = 'AutocompleteItem';
327
- function Autocomplete({ ref, value, defaultValue, onValueChange, onClear, className, open: openProp, onOpenChange, showValue, readOnly, disabled, multiple, onKeyDown, children, ...props }) {
328
- const _ref = react_1.default.useRef(null);
329
- const [open, _setOpen] = react_1.default.useState(openProp);
330
- const inputRef = react_1.default.useRef(null);
331
- const [onScrollbar, setOnScrollbar] = react_1.default.useState(false);
332
- const [selected, setSelected] = react_1.default.useState(defaultValue ?? value ?? (multiple ? [] : ''));
333
- const [options, addOption] = react_1.default.useReducer((prev, state) => ({
334
- ...prev,
335
- ...state
336
- }), {});
337
- react_1.default.useImperativeHandle(ref, () => _ref.current);
338
- const setOpen = (open) => {
339
- _setOpen(open);
340
- onOpenChange?.(open);
341
- };
342
- const handleClear = () => {
343
- onClear?.();
344
- if (!multiple) {
345
- setSelected('');
346
- onValueChange?.('');
347
- return;
348
- }
349
- setSelected([]);
350
- onValueChange?.([]);
351
- };
352
- const handleChange = react_1.default.useCallback((value) => {
353
- if (!value) {
354
- return;
355
- }
356
- if (!multiple) {
357
- setSelected(value);
358
- onValueChange?.(value);
359
- setOpen(false);
360
- return;
361
- }
362
- const newSelected = selected.includes(value)
363
- ? selected.filter((item) => item !== value)
364
- : [...selected, value];
365
- setSelected(newSelected);
366
- onValueChange?.(newSelected);
367
- }, [selected, onValueChange]);
368
- const handleKeyDown = react_1.default.useCallback((e) => {
369
- const input = inputRef.current;
370
- if (input) {
371
- if (e.key === 'Delete' || e.key === 'Backspace') {
372
- if (multiple) {
373
- if (input.value === '' && selected.length > 0) {
374
- handleChange(selected[selected.length - 1]);
375
- }
376
- }
377
- }
378
- // This is not a default behavior of the <input /> field
379
- if (e.key === 'Escape') {
380
- e.stopPropagation();
381
- input.blur();
382
- }
383
- }
384
- }, [selected, handleChange]);
385
- // Keeps the selected value in sync with the value prop
386
- react_1.default.useEffect(() => {
387
- if (!(0, isNil_js_1.default)(value)) {
388
- setSelected(value);
389
- }
390
- }, [value]);
391
- // Keeps the open state in sync with the open prop
392
- react_1.default.useEffect(() => {
393
- if (openProp !== undefined) {
394
- setOpen(openProp);
395
- }
396
- }, [openProp]);
397
- return ((0, jsx_runtime_1.jsx)(AutocompleteContext.Provider, { value: {
398
- value: selected,
399
- onValueChange: setSelected,
400
- showValue,
401
- readOnly,
402
- disabled,
403
- handleChange,
404
- handleClear,
405
- onScrollbar,
406
- setOnScrollbar,
407
- open,
408
- setOpen,
409
- options,
410
- addOption,
411
- inputRef
412
- }, children: (0, jsx_runtime_1.jsx)(cmdk_1.Command, { ref: _ref, className: (0, utils_1.cn)('text-foreground flex h-auto w-full flex-col overflow-visible rounded-md bg-transparent', className), "data-disabled": disabled, "aria-disabled": disabled, "data-read-only": readOnly, "aria-readonly": readOnly, ...props, onKeyDown: (e) => {
413
- handleKeyDown(e);
414
- onKeyDown?.(e);
415
- }, children: children }) }));
416
- }
417
- /**
418
- * ⛔ THE REST OF THE SET, FOR THE SAME REASON AS `AutocompleteItem` ABOVE.
419
- *
420
- * A function component's `name` is whatever the bundler left it — one letter in
421
- * a production build — so any lookup written against `child.type` needs an
422
- * explicit string to compare. `AutocompleteItem` is the only part the walk
423
- * reads TODAY, and it is the part that shipped an empty option registry to
424
- * every consumer while it was anonymous. Naming the whole set costs a line each
425
- * and removes the next instance of that defect before it is written; it also
426
- * makes these parts legible in a React tree, which `MultipleSelect` next door
427
- * has always done.
428
- *
429
- * `__tests__`-style enumeration lives in `autocomplete.test.tsx`: it reads the
430
- * module's exports rather than a list, so a new part added without a name fails
431
- * without anyone remembering to extend anything.
432
- */
433
- Autocomplete.displayName = 'Autocomplete';
434
- AutocompleteTrigger.displayName = 'AutocompleteTrigger';
435
- AutocompleteValue.displayName = 'AutocompleteValue';
436
- AutocompleteMultipleValue.displayName = 'AutocompleteMultipleValue';
437
- AutocompleteContent.displayName = 'AutocompleteContent';
438
- AutocompleteGroup.displayName = 'AutocompleteGroup';
439
- AutocompleteEmpty.displayName = 'AutocompleteEmpty';
440
- AutocompleteLoading.displayName = 'AutocompleteLoading';
1
+ "use client";"use strict";var __createBinding=this&&this.__createBinding||(Object.create?(function(e,t,r,n){if(n===void 0)n=r;var a=Object.getOwnPropertyDescriptor(t,r);if(!a||("get"in a?!t.__esModule:a.writable||a.configurable)){a={enumerable:true,get:function(){return t[r]}}}Object.defineProperty(e,n,a)}):(function(e,t,r,n){if(n===void 0)n=r;e[n]=t[r]}));var __setModuleDefault=this&&this.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,"default",{enumerable:true,value:t})}):function(e,t){e["default"]=t});var __importStar=this&&this.__importStar||(function(){var e=function(t){e=Object.getOwnPropertyNames||function(r){var n=[];for(var a in r)if(Object.prototype.hasOwnProperty.call(r,a))n[n.length]=a;return n};return e(t)};return function(t){if(t&&t.__esModule)return t;var r={};if(t!=null){for(var n=e(t),a=0;a<n.length;a++)if(n[a]!=="default")__createBinding(r,t,n[a])}__setModuleDefault(r,t);return r}})();var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{"default":e}};Object.defineProperty(exports,"__esModule",{value:true});exports.SIDE_OPTIONS=void 0;exports.AutocompleteTrigger=AutocompleteTrigger;exports.AutocompleteValue=AutocompleteValue;exports.AutocompleteMultipleValue=AutocompleteMultipleValue;exports.AutocompleteEmpty=AutocompleteEmpty;exports.AutocompleteLoading=AutocompleteLoading;exports.AutocompleteContent=AutocompleteContent;exports.AutocompleteGroup=AutocompleteGroup;exports.AutocompleteItem=AutocompleteItem;exports.Autocomplete=Autocomplete;const jsx_runtime_1=require("react/jsx-runtime");const react_1=__importDefault(require("react"));const SelectPrimitive=__importStar(require("@radix-ui/react-select"));const lucide_react_1=require("lucide-react");const badge_1=require("../badge");const utils_1=require("../../../lib/utils");const separator_1=require("../separator");const cmdk_1=require("cmdk");const use_click_away_1=require("../../../hooks/use-click-away");const isNil_js_1=__importDefault(require("lodash/isNil.js"));const AutocompleteContext=react_1.default.createContext({value:[],onValueChange:e=>e,handleChange:e=>e,handleClear:()=>{},setOpen:()=>{},setOnScrollbar:()=>{},options:{},addOption:e=>e,inputRef:react_1.default.createRef()});const useAutocomplete=()=>{const e=react_1.default.useContext(AutocompleteContext);if(!e){throw new Error("useAutocomplete must be used within a AutocompleteProvider")}return e};function labelOf(e,t){return e[t]??t}function AutocompleteTrigger({ref:e,className:t,onClear:r,clearLabel:n="Clear",children:a}){const m=react_1.default.useRef(null);const{open:s,readOnly:f,setOpen:i,disabled:d,value:o,inputRef:c,handleClear:_}=useAutocomplete();react_1.default.useImperativeHandle(e,()=>m.current);const x=d||f||o.length<1;return(0,jsx_runtime_1.jsxs)("div",{ref:m,className:(0,utils_1.cn)("bg-background ring-offset-background placeholder:text-input-placeholder data-[disabled=true]:bg-shadcn-100 data-[read-only=true]:bg-shadcn-100 border-input-border flex rounded-md border text-sm focus:outline-hidden focus-visible:outline-hidden data-[disabled=true]:cursor-not-allowed data-[disabled=true]:opacity-50 data-[read-only=true]:opacity-50 md:text-sm [&>span]:line-clamp-1",{"h-9":o.length===0,"min-h-9":o.length>0,"cursor-text":!d&&o.length!==0},t),onClick:()=>{if(f||d){return}if(s){c?.current?.blur()}else{c?.current?.focus()}i(!s)},"data-disabled":d,"data-read-only":f,children:[(0,jsx_runtime_1.jsx)("div",{className:"flex grow flex-wrap gap-1 px-3 py-2",children:a}),(0,jsx_runtime_1.jsxs)("div",{className:"flex shrink-0 items-center justify-end",children:[(0,jsx_runtime_1.jsx)("button",{type:"button","aria-label":n,className:(0,utils_1.cn)("cursor-pointer",x&&"hidden"),onKeyDown:h=>{if(h.key==="Enter"){h.stopPropagation()}},onClick:h=>{h.stopPropagation();_();r?.()},children:(0,jsx_runtime_1.jsx)(lucide_react_1.X,{"aria-hidden":true,className:"text-muted-foreground mx-2 h-4"})}),(0,jsx_runtime_1.jsx)(separator_1.Separator,{orientation:"vertical",className:(0,utils_1.cn)(x&&"hidden")}),(0,jsx_runtime_1.jsx)(SelectPrimitive.Icon,{className:"cursor-pointer data-[disabled=true]:cursor-not-allowed data-[read-only=true]:cursor-default","data-disabled":d,"data-read-only":f,children:(0,jsx_runtime_1.jsx)(lucide_react_1.ChevronDown,{className:"mx-3 my-2 h-4 w-4 opacity-50"})})]})]})}function AutocompleteValue({ref:e,className:t,value:r,onValueChange:n,onBlur:a,...m}){const[s,f]=react_1.default.useState(r);const{value:i,showValue:d,options:o,readOnly:c,disabled:_,inputRef:x}=useAutocomplete();react_1.default.useImperativeHandle(e,()=>x.current);const h=l=>{if((0,isNil_js_1.default)(l)){return}const p=typeof l==="string"?l:l[0];if(p===""){b("");return}b(d?p:labelOf(o,p))};const b=l=>{f(l);n?.(l)};const v=l=>{h(i);a?.(l)};react_1.default.useEffect(()=>{if((0,isNil_js_1.default)(i)){return}const l=typeof i==="string"?i:i[0];if(l===""){return}f(d?l:labelOf(o,l))},[o]);react_1.default.useEffect(()=>{h(i)},[i]);return(0,jsx_runtime_1.jsx)(cmdk_1.Command.Input,{...m,ref:x,value:s,onValueChange:b,disabled:_,readOnly:c,className:(0,utils_1.cn)("placeholder:text-muted-foreground w-full bg-transparent outline-hidden read-only:opacity-50 read-only:placeholder:opacity-0 focus:outline-hidden disabled:cursor-not-allowed disabled:opacity-50 disabled:placeholder:opacity-0",t),onBlur:v})}function AutocompleteMultipleValue({ref:e,className:t,clearLabel:r="Clear",...n}){const{value:a,disabled:m,handleChange:s,options:f,showValue:i,inputRef:d}=useAutocomplete();react_1.default.useImperativeHandle(e,()=>d.current);return(0,jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment,{children:[f&&a?.map(o=>(0,jsx_runtime_1.jsxs)(badge_1.Badge,{variant:"secondary",className:(0,utils_1.cn)("data-disabled:bg-muted-foreground data-fixed:bg-muted-foreground data-disabled:text-muted data-fixed:text-muted data-disabled:hover:bg-muted-foreground data-fixed:hover:bg-muted-foreground"),children:[i?o:labelOf(f,o),(0,jsx_runtime_1.jsx)("button",{type:"button","aria-label":`${r} ${i?o:labelOf(f,o)}`,className:(0,utils_1.cn)("ring-offset-background focus:ring-ring ml-1 rounded-full outline-hidden focus:ring-2 focus:ring-offset-2",m&&"hidden"),onKeyDown:c=>{if(c.key==="Enter"){c.stopPropagation()}},onClick:c=>{c.stopPropagation();s(o)},children:(0,jsx_runtime_1.jsx)(lucide_react_1.X,{"aria-hidden":true,className:"text-muted-foreground hover:text-foreground h-3 w-3"})})]},o)),(0,jsx_runtime_1.jsx)(cmdk_1.Command.Input,{...n,ref:d,disabled:m,className:(0,utils_1.cn)("placeholder:text-muted-foreground w-full bg-transparent outline-hidden focus:outline-hidden disabled:cursor-not-allowed disabled:opacity-50 disabled:placeholder:opacity-0",t)})]})}function AutocompleteEmpty({className:e,...t}){const r=(0,cmdk_1.useCommandState)(n=>n.filtered.count===0);if(!r)return null;return(0,jsx_runtime_1.jsx)("div",{"data-slot":"autocomplete-empty",className:(0,utils_1.cn)("py-6 text-center text-sm",e),"cmdk-empty":"",role:"presentation",...t})}function AutocompleteLoading({className:e,ref:t,...r}){return(0,jsx_runtime_1.jsx)(cmdk_1.Command.Loading,{ref:t,"data-slot":"autocomplete-loading",className:(0,utils_1.cn)("flex items-center justify-center py-6 text-center text-sm",e),...r,children:(0,jsx_runtime_1.jsx)(lucide_react_1.Loader2,{className:"text-muted-foreground h-5 w-5 motion-safe:animate-spin"})})}exports.SIDE_OPTIONS=["top","right","bottom","left"];function AutocompleteContent({className:e,position:t="popper",side:r="bottom",ref:n,children:a,onMouseEnter:m,onMouseLeave:s,onPointerDownOutside:f,...i}){const d=react_1.default.useRef(null);const{open:o,addOption:c,setOpen:_,onScrollbar:x,setOnScrollbar:h,inputRef:b}=useAutocomplete();react_1.default.useImperativeHandle(n,()=>d.current);(0,use_click_away_1.useClickAway)(d,l=>{if(!o){return}if(x){return}_(false);b.current?.blur();f?.(l)});const v=l=>{react_1.default.Children.forEach(react_1.default.Children.toArray(l),p=>{if(!react_1.default.isValidElement(p)){return}if(p.type&&p.type.displayName==="AutocompleteItem"){if(p.props.value){const{label:N,children:j}=p.props;const g=N??(typeof j==="string"?j:void 0);if(g!==void 0){c({[p.props.value]:g})}}return}if(p.props.children){v(p.props.children)}})};react_1.default.useEffect(()=>{v(a)},[a]);return(0,jsx_runtime_1.jsx)("div",{className:"relative",hidden:!o,children:(0,jsx_runtime_1.jsx)(cmdk_1.Command.List,{ref:d,className:(0,utils_1.cn)("bg-popover text-popover-foreground motion-safe:animate-in absolute top-1 z-50 max-h-96 w-full min-w-32 overflow-x-hidden overflow-y-auto rounded-md border shadow-md outline-hidden",t==="popper"&&"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",e),"data-side":r,...i,onMouseEnter:l=>{m?.(l);h(true)},onMouseLeave:l=>{s?.(l);h(false)},children:o?a:null})})}function AutocompleteGroup({className:e,...t}){return(0,jsx_runtime_1.jsx)(cmdk_1.Command.Group,{"data-slot":"autocomplete-group",className:(0,utils_1.cn)("text-foreground [&_[cmdk-group-heading]]:text-muted-foreground overflow-hidden p-1 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium",e),...t})}function AutocompleteItem({className:e,value:t,label:r,onSelect:n,...a}){const{handleChange:m}=useAutocomplete();return(0,jsx_runtime_1.jsx)(cmdk_1.Command.Item,{"data-slot":"autocomplete-item",value:t,className:(0,utils_1.cn)("data-[selected='true']:bg-accent data-[selected=true]:text-accent-foreground relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",e),...a,onMouseDown:s=>{s.preventDefault();s.stopPropagation()},onSelect:s=>{m(s);n?.(s)}})}AutocompleteItem.displayName="AutocompleteItem";function Autocomplete({ref:e,value:t,defaultValue:r,onValueChange:n,onClear:a,className:m,open:s,onOpenChange:f,showValue:i,readOnly:d,disabled:o,multiple:c,onKeyDown:_,children:x,...h}){const b=react_1.default.useRef(null);const[v,l]=react_1.default.useState(s);const p=react_1.default.useRef(null);const[N,j]=react_1.default.useState(false);const[g,w]=react_1.default.useState(r??t??(c?[]:""));const[O,S]=react_1.default.useReducer((u,y)=>({...u,...y}),{});react_1.default.useImperativeHandle(e,()=>b.current);const A=u=>{l(u);f?.(u)};const k=()=>{a?.();if(!c){w("");n?.("");return}w([]);n?.([])};const C=react_1.default.useCallback(u=>{if(!u){return}if(!c){w(u);n?.(u);A(false);return}const y=g.includes(u)?g.filter(I=>I!==u):[...g,u];w(y);n?.(y)},[g,n]);const E=react_1.default.useCallback(u=>{const y=p.current;if(y){if(u.key==="Delete"||u.key==="Backspace"){if(c){if(y.value===""&&g.length>0){C(g[g.length-1])}}}if(u.key==="Escape"){u.stopPropagation();y.blur()}}},[g,C]);react_1.default.useEffect(()=>{if(!(0,isNil_js_1.default)(t)){w(t)}},[t]);react_1.default.useEffect(()=>{if(s!==void 0){A(s)}},[s]);return(0,jsx_runtime_1.jsx)(AutocompleteContext.Provider,{value:{value:g,onValueChange:w,showValue:i,readOnly:d,disabled:o,handleChange:C,handleClear:k,onScrollbar:N,setOnScrollbar:j,open:v,setOpen:A,options:O,addOption:S,inputRef:p},children:(0,jsx_runtime_1.jsx)(cmdk_1.Command,{ref:b,className:(0,utils_1.cn)("text-foreground flex h-auto w-full flex-col overflow-visible rounded-md bg-transparent",m),"data-disabled":o,"aria-disabled":o,"data-read-only":d,"aria-readonly":d,...h,onKeyDown:u=>{E(u);_?.(u)},children:x})})}Autocomplete.displayName="Autocomplete";AutocompleteTrigger.displayName="AutocompleteTrigger";AutocompleteValue.displayName="AutocompleteValue";AutocompleteMultipleValue.displayName="AutocompleteMultipleValue";AutocompleteContent.displayName="AutocompleteContent";AutocompleteGroup.displayName="AutocompleteGroup";AutocompleteEmpty.displayName="AutocompleteEmpty";AutocompleteLoading.displayName="AutocompleteLoading";