@thewrong/ui 0.1.0 → 0.3.0

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 (514) hide show
  1. package/README.md +25 -4
  2. package/dist/_virtual/_rolldown/runtime.cjs +1 -0
  3. package/dist/components/_shared/form-size-tokens.cjs +1 -0
  4. package/dist/{src/components → components}/_shared/form-size-tokens.d.ts +3 -1
  5. package/dist/components/_shared/form-size-tokens.esm.js +34 -0
  6. package/dist/components/action-toast/ActionToast.cjs +1 -0
  7. package/dist/{src/components → components}/action-toast/ActionToast.d.ts +17 -3
  8. package/dist/components/action-toast/ActionToast.esm.js +238 -0
  9. package/dist/{src/components → components}/action-toast/index.d.ts +2 -2
  10. package/dist/components/animated-height/AnimatedHeight.cjs +1 -0
  11. package/dist/components/animated-height/AnimatedHeight.esm.js +36 -0
  12. package/dist/components/animated-height/index.d.ts +2 -0
  13. package/dist/components/badge/Badge.cjs +1 -0
  14. package/dist/{src/components → components}/badge/Badge.d.ts +1 -1
  15. package/dist/components/badge/Badge.esm.js +26 -0
  16. package/dist/components/badge/index.d.ts +2 -0
  17. package/dist/components/badge/utils.cjs +1 -0
  18. package/dist/{src/components → components}/badge/utils.d.ts +1 -1
  19. package/dist/components/badge/utils.esm.js +38 -0
  20. package/dist/components/button/Button.cjs +1 -0
  21. package/dist/components/button/Button.d.ts +19 -0
  22. package/dist/components/button/Button.esm.js +77 -0
  23. package/dist/{src/components → components}/button/index.d.ts +2 -2
  24. package/dist/components/button/utils.cjs +1 -0
  25. package/dist/{src/components → components}/button/utils.d.ts +1 -1
  26. package/dist/components/button/utils.esm.js +38 -0
  27. package/dist/components/checkbox/Checkbox.cjs +1 -0
  28. package/dist/{src/components → components}/checkbox/Checkbox.d.ts +1 -1
  29. package/dist/components/checkbox/Checkbox.esm.js +69 -0
  30. package/dist/components/checkbox/index.d.ts +2 -0
  31. package/dist/components/checkbox/utils.cjs +1 -0
  32. package/dist/{src/components → components}/checkbox/utils.d.ts +1 -1
  33. package/dist/components/checkbox/utils.esm.js +44 -0
  34. package/dist/components/collapsible/Collapsible.cjs +1 -0
  35. package/dist/components/collapsible/Collapsible.esm.js +20 -0
  36. package/dist/components/collapsible/index.d.ts +2 -0
  37. package/dist/components/copyable-text/CopyableText.cjs +1 -0
  38. package/dist/components/copyable-text/CopyableText.d.ts +22 -0
  39. package/dist/components/copyable-text/CopyableText.esm.js +50 -0
  40. package/dist/components/copyable-text/index.d.ts +2 -0
  41. package/dist/components/date-input/DateInput.cjs +1 -0
  42. package/dist/{src/components → components}/date-input/DateInput.d.ts +1 -0
  43. package/dist/components/date-input/DateInput.esm.js +40 -0
  44. package/dist/components/date-input/index.d.ts +1 -0
  45. package/dist/components/date-picker/PickerSheet.cjs +1 -0
  46. package/dist/components/date-picker/PickerSheet.d.ts +22 -0
  47. package/dist/components/date-picker/PickerSheet.esm.js +77 -0
  48. package/dist/components/date-picker/date-picker.cjs +1 -0
  49. package/dist/{src/components → components}/date-picker/date-picker.d.ts +1 -0
  50. package/dist/components/date-picker/date-picker.esm.js +183 -0
  51. package/dist/components/date-picker/date-range-picker.cjs +1 -0
  52. package/dist/{src/components → components}/date-picker/date-range-picker.d.ts +3 -1
  53. package/dist/components/date-picker/date-range-picker.esm.js +238 -0
  54. package/dist/components/date-picker/index.d.ts +5 -0
  55. package/dist/components/date-picker/month-picker.cjs +1 -0
  56. package/dist/{src/components → components}/date-picker/month-picker.d.ts +1 -0
  57. package/dist/components/date-picker/month-picker.esm.js +103 -0
  58. package/dist/components/drawer/Drawer.cjs +1 -0
  59. package/dist/components/drawer/Drawer.d.ts +45 -0
  60. package/dist/components/drawer/Drawer.esm.js +143 -0
  61. package/dist/components/drawer/index.d.ts +2 -0
  62. package/dist/components/error-boundary/ErrorBoundary.cjs +1 -0
  63. package/dist/components/error-boundary/ErrorBoundary.d.ts +23 -0
  64. package/dist/components/error-boundary/ErrorBoundary.esm.js +46 -0
  65. package/dist/components/error-boundary/chunk-reload.cjs +1 -0
  66. package/dist/components/error-boundary/chunk-reload.d.ts +77 -0
  67. package/dist/components/error-boundary/chunk-reload.esm.js +73 -0
  68. package/dist/components/error-boundary/index.d.ts +4 -0
  69. package/dist/components/error-boundary/types.d.ts +23 -0
  70. package/dist/components/field/Field.cjs +1 -0
  71. package/dist/components/field/Field.d.ts +16 -0
  72. package/dist/components/field/Field.esm.js +34 -0
  73. package/dist/components/field/FieldMessage.cjs +1 -0
  74. package/dist/components/field/FieldMessage.d.ts +19 -0
  75. package/dist/components/field/FieldMessage.esm.js +12 -0
  76. package/dist/components/field/index.d.ts +3 -0
  77. package/dist/components/field/types.d.ts +24 -0
  78. package/dist/components/info-tooltip/InfoTooltip.cjs +1 -0
  79. package/dist/{src/components → components}/info-tooltip/InfoTooltip.d.ts +7 -0
  80. package/dist/components/info-tooltip/InfoTooltip.esm.js +25 -0
  81. package/dist/components/info-tooltip/index.d.ts +2 -0
  82. package/dist/components/input/DecimalInput.cjs +1 -0
  83. package/dist/components/input/DecimalInput.d.ts +18 -0
  84. package/dist/components/input/DecimalInput.esm.js +40 -0
  85. package/dist/components/input/Input.cjs +1 -0
  86. package/dist/{src/components → components}/input/Input.d.ts +1 -1
  87. package/dist/components/input/Input.esm.js +89 -0
  88. package/dist/components/input/PasswordInput.cjs +1 -0
  89. package/dist/{src/components → components}/input/PasswordInput.d.ts +1 -1
  90. package/dist/components/input/PasswordInput.esm.js +29 -0
  91. package/dist/components/input/decimal-validation.cjs +1 -0
  92. package/dist/components/input/decimal-validation.d.ts +7 -0
  93. package/dist/components/input/decimal-validation.esm.js +66 -0
  94. package/dist/components/input/format.cjs +1 -0
  95. package/dist/{src/components → components}/input/format.d.ts +17 -1
  96. package/dist/components/input/format.esm.js +44 -0
  97. package/dist/components/input/index.d.ts +7 -0
  98. package/dist/{src/components → components}/input/types.d.ts +2 -2
  99. package/dist/components/input/use-input-format.cjs +1 -0
  100. package/dist/components/input/use-input-format.d.ts +43 -0
  101. package/dist/components/input/use-input-format.esm.js +75 -0
  102. package/dist/components/input/utils.cjs +1 -0
  103. package/dist/{src/components → components}/input/utils.d.ts +1 -1
  104. package/dist/components/input/utils.esm.js +24 -0
  105. package/dist/components/loading-spinner/LoadingSpinner.cjs +1 -0
  106. package/dist/{src/components → components}/loading-spinner/LoadingSpinner.d.ts +7 -0
  107. package/dist/components/loading-spinner/LoadingSpinner.esm.js +48 -0
  108. package/dist/components/loading-spinner/index.d.ts +2 -0
  109. package/dist/components/modal/Modal.cjs +1 -0
  110. package/dist/{src/components → components}/modal/Modal.d.ts +34 -2
  111. package/dist/components/modal/Modal.esm.js +167 -0
  112. package/dist/components/modal/ModalFocusTrapContext.cjs +1 -0
  113. package/dist/components/modal/ModalFocusTrapContext.d.ts +18 -0
  114. package/dist/components/modal/ModalFocusTrapContext.esm.js +36 -0
  115. package/dist/components/modal/ModalSubView.cjs +1 -0
  116. package/dist/{src/components → components}/modal/ModalSubView.d.ts +6 -1
  117. package/dist/components/modal/ModalSubView.esm.js +111 -0
  118. package/dist/components/modal/StandardModal.cjs +1 -0
  119. package/dist/{src/components → components}/modal/StandardModal.d.ts +8 -2
  120. package/dist/components/modal/StandardModal.esm.js +57 -0
  121. package/dist/components/modal/index.d.ts +6 -0
  122. package/dist/components/month-range-picker/index.d.ts +2 -0
  123. package/dist/components/month-range-picker/month-range-picker.cjs +1 -0
  124. package/dist/components/month-range-picker/month-range-picker.d.ts +16 -0
  125. package/dist/components/month-range-picker/month-range-picker.esm.js +227 -0
  126. package/dist/components/month-range-picker/month-range-utils.cjs +1 -0
  127. package/dist/components/month-range-picker/month-range-utils.d.ts +9 -0
  128. package/dist/components/month-range-picker/month-range-utils.esm.js +28 -0
  129. package/dist/components/page-title/PageTitle.cjs +1 -0
  130. package/dist/components/page-title/PageTitle.esm.js +17 -0
  131. package/dist/components/page-title/index.d.ts +1 -0
  132. package/dist/components/popover/Popover.cjs +1 -0
  133. package/dist/{src/components → components}/popover/Popover.d.ts +19 -1
  134. package/dist/components/popover/Popover.esm.js +57 -0
  135. package/dist/components/popover/index.d.ts +2 -0
  136. package/dist/components/progress/Progress.cjs +1 -0
  137. package/dist/components/progress/Progress.d.ts +13 -0
  138. package/dist/components/progress/Progress.esm.js +24 -0
  139. package/dist/components/progress/index.d.ts +2 -0
  140. package/dist/components/progress/types.d.ts +13 -0
  141. package/dist/components/radio/Radio.cjs +1 -0
  142. package/dist/components/radio/Radio.d.ts +31 -0
  143. package/dist/components/radio/Radio.esm.js +118 -0
  144. package/dist/components/radio/index.d.ts +2 -0
  145. package/dist/components/radio/types.d.ts +24 -0
  146. package/dist/components/search-box/ExactMatchToggle.cjs +1 -0
  147. package/dist/components/search-box/ExactMatchToggle.esm.js +28 -0
  148. package/dist/components/search-box/SearchBox.cjs +1 -0
  149. package/dist/{src/components → components}/search-box/SearchBox.d.ts +1 -1
  150. package/dist/components/search-box/SearchBox.esm.js +155 -0
  151. package/dist/components/search-box/SearchBoxChips.cjs +1 -0
  152. package/dist/components/search-box/SearchBoxChips.esm.js +36 -0
  153. package/dist/components/search-box/SearchBoxDateRange.cjs +1 -0
  154. package/dist/{src/components → components}/search-box/SearchBoxDateRange.d.ts +1 -1
  155. package/dist/components/search-box/SearchBoxDateRange.esm.js +60 -0
  156. package/dist/components/search-box/SearchBoxDateSingle.cjs +1 -0
  157. package/dist/{src/components → components}/search-box/SearchBoxDateSingle.d.ts +1 -1
  158. package/dist/components/search-box/SearchBoxDateSingle.esm.js +39 -0
  159. package/dist/components/search-box/SearchBoxField.cjs +1 -0
  160. package/dist/{src/components → components}/search-box/SearchBoxField.d.ts +1 -1
  161. package/dist/components/search-box/SearchBoxField.esm.js +48 -0
  162. package/dist/components/search-box/SearchBoxFloatingInput.cjs +1 -0
  163. package/dist/components/search-box/SearchBoxFloatingInput.esm.js +43 -0
  164. package/dist/components/search-box/SearchBoxFloatingSelect.cjs +1 -0
  165. package/dist/{src/components → components}/search-box/SearchBoxFloatingSelect.d.ts +1 -1
  166. package/dist/components/search-box/SearchBoxFloatingSelect.esm.js +79 -0
  167. package/dist/components/search-box/SearchBoxMonth.cjs +1 -0
  168. package/dist/components/search-box/SearchBoxMonth.esm.js +36 -0
  169. package/dist/components/search-box/SearchBoxMultiSelect.cjs +1 -0
  170. package/dist/{src/components → components}/search-box/SearchBoxMultiSelect.d.ts +2 -2
  171. package/dist/components/search-box/SearchBoxMultiSelect.esm.js +83 -0
  172. package/dist/components/search-box/SearchBoxSheetContext.cjs +1 -0
  173. package/dist/components/search-box/SearchBoxSheetContext.esm.js +5 -0
  174. package/dist/components/search-box/dateRangePresets.cjs +1 -0
  175. package/dist/{src/components → components}/search-box/dateRangePresets.d.ts +1 -1
  176. package/dist/components/search-box/dateRangePresets.esm.js +59 -0
  177. package/dist/{src/components → components}/search-box/index.d.ts +5 -5
  178. package/dist/components/search-box/parseDateRange.cjs +1 -0
  179. package/dist/components/search-box/parseDateRange.esm.js +21 -0
  180. package/dist/components/search-box/parseSearchValues.cjs +1 -0
  181. package/dist/{src/components → components}/search-box/parseSearchValues.d.ts +2 -2
  182. package/dist/components/search-box/parseSearchValues.esm.js +15 -0
  183. package/dist/{src/components → components}/search-box/types.d.ts +1 -1
  184. package/dist/components/search-box/useSearchBoxState.cjs +1 -0
  185. package/dist/{src/components → components}/search-box/useSearchBoxState.d.ts +1 -1
  186. package/dist/components/search-box/useSearchBoxState.esm.js +87 -0
  187. package/dist/components/segmented-code-input/SegmentedCodeInput.cjs +1 -0
  188. package/dist/components/segmented-code-input/SegmentedCodeInput.d.ts +49 -0
  189. package/dist/components/segmented-code-input/SegmentedCodeInput.esm.js +87 -0
  190. package/dist/components/segmented-code-input/code-utils.cjs +1 -0
  191. package/dist/components/segmented-code-input/code-utils.d.ts +4 -0
  192. package/dist/components/segmented-code-input/code-utils.esm.js +9 -0
  193. package/dist/components/segmented-code-input/index.d.ts +2 -0
  194. package/dist/components/segmented-control/SegmentedControl.cjs +1 -0
  195. package/dist/components/segmented-control/SegmentedControl.d.ts +27 -0
  196. package/dist/components/segmented-control/SegmentedControl.esm.js +84 -0
  197. package/dist/components/segmented-control/index.d.ts +2 -0
  198. package/dist/components/segmented-control/types.d.ts +30 -0
  199. package/dist/components/select/MultiSelect.cjs +1 -0
  200. package/dist/{src/components → components}/select/MultiSelect.d.ts +11 -3
  201. package/dist/components/select/MultiSelect.esm.js +279 -0
  202. package/dist/components/select/Select.cjs +1 -0
  203. package/dist/{src/components → components}/select/Select.d.ts +16 -2
  204. package/dist/components/select/Select.esm.js +320 -0
  205. package/dist/components/select/index.d.ts +4 -0
  206. package/dist/components/select/loading-dots.cjs +1 -0
  207. package/dist/components/select/loading-dots.d.ts +3 -0
  208. package/dist/components/select/loading-dots.esm.js +24 -0
  209. package/dist/components/select/panel-width.cjs +1 -0
  210. package/dist/components/select/panel-width.d.ts +2 -0
  211. package/dist/components/select/panel-width.esm.js +7 -0
  212. package/dist/{src/components → components}/select/utils.d.ts +1 -1
  213. package/dist/components/skeleton/Skeleton.cjs +1 -0
  214. package/dist/components/skeleton/Skeleton.d.ts +6 -0
  215. package/dist/components/skeleton/Skeleton.esm.js +12 -0
  216. package/dist/components/skeleton/index.d.ts +2 -0
  217. package/dist/components/skeleton/types.d.ts +2 -0
  218. package/dist/components/stepper/Stepper.cjs +1 -0
  219. package/dist/components/stepper/Stepper.d.ts +51 -0
  220. package/dist/components/stepper/Stepper.esm.js +142 -0
  221. package/dist/components/stepper/index.d.ts +4 -0
  222. package/dist/components/stepper/use-stepper.cjs +1 -0
  223. package/dist/components/stepper/use-stepper.d.ts +43 -0
  224. package/dist/components/stepper/use-stepper.esm.js +57 -0
  225. package/dist/components/switch/Switch.cjs +1 -0
  226. package/dist/{src/components → components}/switch/Switch.d.ts +1 -1
  227. package/dist/components/switch/Switch.esm.js +37 -0
  228. package/dist/components/switch/index.d.ts +2 -0
  229. package/dist/components/switch/utils.cjs +1 -0
  230. package/dist/{src/components → components}/switch/utils.d.ts +2 -2
  231. package/dist/components/switch/utils.esm.js +40 -0
  232. package/dist/components/table/accordion-table.cjs +1 -0
  233. package/dist/{src/components → components}/table/accordion-table.d.ts +1 -1
  234. package/dist/components/table/accordion-table.esm.js +418 -0
  235. package/dist/components/table/column-group-utils.cjs +1 -0
  236. package/dist/{src/components → components}/table/column-group-utils.d.ts +1 -1
  237. package/dist/components/table/column-group-utils.esm.js +53 -0
  238. package/dist/components/table/components/ColumnPresetSelector.cjs +1 -0
  239. package/dist/{src/components → components}/table/components/ColumnPresetSelector.d.ts +2 -2
  240. package/dist/components/table/components/ColumnPresetSelector.esm.js +166 -0
  241. package/dist/components/table/components/ColumnSettingsTable.cjs +1 -0
  242. package/dist/{src/components → components}/table/components/ColumnSettingsTable.d.ts +1 -1
  243. package/dist/components/table/components/ColumnSettingsTable.esm.js +194 -0
  244. package/dist/components/table/components/KeyboardNavButton.cjs +1 -0
  245. package/dist/components/table/components/KeyboardNavButton.esm.js +24 -0
  246. package/dist/components/table/components/PageJumpInput.cjs +1 -0
  247. package/dist/components/table/components/PageJumpInput.esm.js +54 -0
  248. package/dist/components/table/components/Pagination.cjs +1 -0
  249. package/dist/components/table/components/Pagination.esm.js +163 -0
  250. package/dist/components/table/components/PaginationFooter.cjs +1 -0
  251. package/dist/components/table/components/PaginationFooter.esm.js +80 -0
  252. package/dist/components/table/components/SortableHeaderCell.cjs +1 -0
  253. package/dist/components/table/components/SortableHeaderCell.esm.js +30 -0
  254. package/dist/components/table/hooks/useColumnPresets.cjs +1 -0
  255. package/dist/{src/components → components}/table/hooks/useColumnPresets.d.ts +2 -2
  256. package/dist/components/table/hooks/useColumnPresets.esm.js +165 -0
  257. package/dist/components/table/hooks/useColumnResize.cjs +1 -0
  258. package/dist/{src/components → components}/table/hooks/useColumnResize.d.ts +12 -0
  259. package/dist/components/table/hooks/useColumnResize.esm.js +118 -0
  260. package/dist/components/table/hooks/useFillEmptyRows.d.ts +2 -0
  261. package/dist/components/table/hooks/useInfiniteScroll.d.ts +2 -0
  262. package/dist/components/table/hooks/useTableColumnState.cjs +1 -0
  263. package/dist/{src/components → components}/table/hooks/useTableColumnState.d.ts +1 -1
  264. package/dist/components/table/hooks/useTableColumnState.esm.js +46 -0
  265. package/dist/components/table/hooks/useTableDragSelection.d.ts +2 -0
  266. package/dist/components/table/hooks/useTableSort.cjs +1 -0
  267. package/dist/{src/components → components}/table/hooks/useTableSort.d.ts +1 -1
  268. package/dist/components/table/hooks/useTableSort.esm.js +30 -0
  269. package/dist/components/table/hooks/useVirtualTable.cjs +1 -0
  270. package/dist/components/table/hooks/useVirtualTable.esm.js +18 -0
  271. package/dist/components/table/index.d.ts +27 -0
  272. package/dist/components/table/mini-table.cjs +1 -0
  273. package/dist/{src/components → components}/table/mini-table.d.ts +1 -1
  274. package/dist/components/table/mini-table.esm.js +127 -0
  275. package/dist/components/table/paginated-mini-table.cjs +1 -0
  276. package/dist/{src/components → components}/table/paginated-mini-table.d.ts +1 -1
  277. package/dist/components/table/paginated-mini-table.esm.js +31 -0
  278. package/dist/components/table/paginated-table.cjs +1 -0
  279. package/dist/{src/components → components}/table/paginated-table.d.ts +1 -1
  280. package/dist/components/table/paginated-table.esm.js +31 -0
  281. package/dist/components/table/table.cjs +1 -0
  282. package/dist/{src/components → components}/table/table.d.ts +2 -1
  283. package/dist/components/table/table.esm.js +343 -0
  284. package/dist/components/table/utils.cjs +35 -0
  285. package/dist/{src/components → components}/table/utils.d.ts +2 -2
  286. package/dist/components/table/utils.esm.js +16 -0
  287. package/dist/components/table-checkbox/TableCheckbox.cjs +1 -0
  288. package/dist/components/table-checkbox/TableCheckbox.esm.js +40 -0
  289. package/dist/components/table-checkbox/index.d.ts +1 -0
  290. package/dist/components/table-page-layout/TablePageLayout.cjs +1 -0
  291. package/dist/components/table-page-layout/TablePageLayout.esm.js +37 -0
  292. package/dist/{src/components → components}/table-page-layout/index.d.ts +1 -1
  293. package/dist/components/textarea/Textarea.cjs +1 -0
  294. package/dist/{src/components → components}/textarea/Textarea.d.ts +1 -1
  295. package/dist/components/textarea/Textarea.esm.js +64 -0
  296. package/dist/components/textarea/index.d.ts +2 -0
  297. package/dist/components/time-picker/index.d.ts +2 -0
  298. package/dist/components/time-picker/time-picker.cjs +1 -0
  299. package/dist/components/time-picker/time-picker.d.ts +35 -0
  300. package/dist/components/time-picker/time-picker.esm.js +193 -0
  301. package/dist/components/time-picker/time-utils.cjs +1 -0
  302. package/dist/components/time-picker/time-utils.d.ts +12 -0
  303. package/dist/components/time-picker/time-utils.esm.js +56 -0
  304. package/dist/components/toast/ToastProvider.cjs +1 -0
  305. package/dist/{src/components → components}/toast/ToastProvider.d.ts +3 -0
  306. package/dist/components/toast/ToastProvider.esm.js +86 -0
  307. package/dist/components/toast/index.d.ts +3 -0
  308. package/dist/components/toast/index.esm.js +3 -0
  309. package/dist/components/toolbar/Toolbar.cjs +1 -0
  310. package/dist/{src/components → components}/toolbar/Toolbar.d.ts +1 -1
  311. package/dist/components/toolbar/Toolbar.esm.js +149 -0
  312. package/dist/components/toolbar/index.d.ts +2 -0
  313. package/dist/components/tooltip/Tooltip.cjs +1 -0
  314. package/dist/{src/components → components}/tooltip/Tooltip.d.ts +10 -0
  315. package/dist/components/tooltip/Tooltip.esm.js +39 -0
  316. package/dist/components/tooltip/index.d.ts +2 -0
  317. package/dist/components/typewriter-text/TypewriterText.cjs +1 -0
  318. package/dist/components/typewriter-text/TypewriterText.d.ts +7 -0
  319. package/dist/components/typewriter-text/TypewriterText.esm.js +58 -0
  320. package/dist/components/typewriter-text/index.d.ts +2 -0
  321. package/dist/components/typewriter-text/types.d.ts +12 -0
  322. package/dist/components/typing-dots/TypingDots.cjs +1 -0
  323. package/dist/components/typing-dots/TypingDots.d.ts +10 -0
  324. package/dist/components/typing-dots/TypingDots.esm.js +37 -0
  325. package/dist/components/typing-dots/index.d.ts +2 -0
  326. package/dist/components/typing-dots/types.d.ts +4 -0
  327. package/dist/hooks/awaitableOverlayController.cjs +1 -0
  328. package/dist/hooks/awaitableOverlayController.d.ts +6 -0
  329. package/dist/hooks/awaitableOverlayController.esm.js +18 -0
  330. package/dist/hooks/index.d.ts +17 -0
  331. package/dist/hooks/useAwaitableOverlay.cjs +1 -0
  332. package/dist/hooks/useAwaitableOverlay.d.ts +16 -0
  333. package/dist/hooks/useAwaitableOverlay.esm.js +22 -0
  334. package/dist/hooks/useBottomSheetDrag.cjs +1 -0
  335. package/dist/hooks/useBottomSheetDrag.esm.js +17 -0
  336. package/dist/hooks/useClickOutside.cjs +1 -0
  337. package/dist/hooks/useClickOutside.esm.js +20 -0
  338. package/dist/hooks/useFillEmptyRows.cjs +1 -0
  339. package/dist/{src/components/table/hooks → hooks}/useFillEmptyRows.d.ts +10 -1
  340. package/dist/hooks/useFillEmptyRows.esm.js +60 -0
  341. package/dist/hooks/useFocusTrap.cjs +1 -0
  342. package/dist/hooks/useFocusTrap.d.ts +47 -0
  343. package/dist/hooks/useFocusTrap.esm.js +210 -0
  344. package/dist/hooks/useInfiniteScroll.cjs +1 -0
  345. package/dist/hooks/useInfiniteScroll.d.ts +36 -0
  346. package/dist/hooks/useInfiniteScroll.esm.js +31 -0
  347. package/dist/hooks/useMediaQuery.cjs +1 -0
  348. package/dist/hooks/useMediaQuery.esm.js +15 -0
  349. package/dist/hooks/useScrollLock.cjs +1 -0
  350. package/dist/hooks/useScrollLock.esm.js +16 -0
  351. package/dist/hooks/useTableDragSelection.cjs +1 -0
  352. package/dist/{src/components/table/hooks → hooks}/useTableDragSelection.d.ts +3 -4
  353. package/dist/hooks/useTableDragSelection.esm.js +79 -0
  354. package/dist/hooks/useVirtualRows.cjs +1 -0
  355. package/dist/hooks/useVirtualRows.d.ts +56 -0
  356. package/dist/hooks/useVirtualRows.esm.js +20 -0
  357. package/dist/hooks.cjs +1 -0
  358. package/dist/hooks.esm.js +12 -0
  359. package/dist/index.cjs +1 -0
  360. package/dist/index.d.ts +40 -0
  361. package/dist/index.esm.js +81 -0
  362. package/dist/lib/Portal.cjs +1 -0
  363. package/dist/lib/Portal.esm.js +11 -0
  364. package/dist/lib/column-preset-storage.cjs +1 -0
  365. package/dist/lib/column-preset-storage.esm.js +123 -0
  366. package/dist/lib/index.d.ts +6 -0
  367. package/dist/lib/overlay-stack.cjs +1 -0
  368. package/dist/lib/overlay-stack.esm.js +28 -0
  369. package/dist/lib/utils.cjs +1 -0
  370. package/dist/{src/lib → lib}/utils.d.ts +2 -1
  371. package/dist/lib/utils.esm.js +114 -0
  372. package/dist/node_modules/clsx/dist/clsx.cjs +1 -0
  373. package/dist/node_modules/clsx/dist/clsx.esm.js +16 -0
  374. package/dist/node_modules/lucide-react/dist/esm/Icon.cjs +1 -0
  375. package/dist/node_modules/lucide-react/dist/esm/Icon.esm.js +23 -0
  376. package/dist/node_modules/lucide-react/dist/esm/context.cjs +1 -0
  377. package/dist/node_modules/lucide-react/dist/esm/context.esm.js +6 -0
  378. package/dist/node_modules/lucide-react/dist/esm/createLucideIcon.cjs +1 -0
  379. package/dist/node_modules/lucide-react/dist/esm/createLucideIcon.esm.js +17 -0
  380. package/dist/node_modules/lucide-react/dist/esm/defaultAttributes.cjs +1 -0
  381. package/dist/node_modules/lucide-react/dist/esm/defaultAttributes.esm.js +14 -0
  382. package/dist/node_modules/lucide-react/dist/esm/icons/arrow-left.cjs +1 -0
  383. package/dist/node_modules/lucide-react/dist/esm/icons/arrow-left.esm.js +10 -0
  384. package/dist/node_modules/lucide-react/dist/esm/icons/calendar.cjs +1 -0
  385. package/dist/node_modules/lucide-react/dist/esm/icons/calendar.esm.js +25 -0
  386. package/dist/node_modules/lucide-react/dist/esm/icons/check.cjs +1 -0
  387. package/dist/node_modules/lucide-react/dist/esm/icons/check.esm.js +7 -0
  388. package/dist/node_modules/lucide-react/dist/esm/icons/chevron-down.cjs +1 -0
  389. package/dist/node_modules/lucide-react/dist/esm/icons/chevron-down.esm.js +7 -0
  390. package/dist/node_modules/lucide-react/dist/esm/icons/chevron-left.cjs +1 -0
  391. package/dist/node_modules/lucide-react/dist/esm/icons/chevron-left.esm.js +7 -0
  392. package/dist/node_modules/lucide-react/dist/esm/icons/chevron-right.cjs +1 -0
  393. package/dist/node_modules/lucide-react/dist/esm/icons/chevron-right.esm.js +7 -0
  394. package/dist/node_modules/lucide-react/dist/esm/icons/chevrons-left.cjs +1 -0
  395. package/dist/node_modules/lucide-react/dist/esm/icons/chevrons-left.esm.js +10 -0
  396. package/dist/node_modules/lucide-react/dist/esm/icons/chevrons-right.cjs +1 -0
  397. package/dist/node_modules/lucide-react/dist/esm/icons/chevrons-right.esm.js +10 -0
  398. package/dist/node_modules/lucide-react/dist/esm/icons/circle-check.cjs +1 -0
  399. package/dist/node_modules/lucide-react/dist/esm/icons/circle-check.esm.js +12 -0
  400. package/dist/node_modules/lucide-react/dist/esm/icons/circle-x.cjs +1 -0
  401. package/dist/node_modules/lucide-react/dist/esm/icons/circle-x.esm.js +19 -0
  402. package/dist/node_modules/lucide-react/dist/esm/icons/clock.cjs +1 -0
  403. package/dist/node_modules/lucide-react/dist/esm/icons/clock.esm.js +12 -0
  404. package/dist/node_modules/lucide-react/dist/esm/icons/copy.cjs +1 -0
  405. package/dist/node_modules/lucide-react/dist/esm/icons/copy.esm.js +15 -0
  406. package/dist/node_modules/lucide-react/dist/esm/icons/eye-off.cjs +1 -0
  407. package/dist/node_modules/lucide-react/dist/esm/icons/eye-off.esm.js +21 -0
  408. package/dist/node_modules/lucide-react/dist/esm/icons/eye.cjs +1 -0
  409. package/dist/node_modules/lucide-react/dist/esm/icons/eye.esm.js +12 -0
  410. package/dist/node_modules/lucide-react/dist/esm/icons/grip-vertical.cjs +1 -0
  411. package/dist/node_modules/lucide-react/dist/esm/icons/grip-vertical.esm.js +41 -0
  412. package/dist/node_modules/lucide-react/dist/esm/icons/info.cjs +1 -0
  413. package/dist/node_modules/lucide-react/dist/esm/icons/info.esm.js +19 -0
  414. package/dist/node_modules/lucide-react/dist/esm/icons/keyboard.cjs +1 -0
  415. package/dist/node_modules/lucide-react/dist/esm/icons/keyboard.esm.js +45 -0
  416. package/dist/node_modules/lucide-react/dist/esm/icons/list-filter.cjs +1 -0
  417. package/dist/node_modules/lucide-react/dist/esm/icons/list-filter.esm.js +17 -0
  418. package/dist/node_modules/lucide-react/dist/esm/icons/loader-circle.cjs +1 -0
  419. package/dist/node_modules/lucide-react/dist/esm/icons/loader-circle.esm.js +7 -0
  420. package/dist/node_modules/lucide-react/dist/esm/icons/minus.cjs +1 -0
  421. package/dist/node_modules/lucide-react/dist/esm/icons/minus.esm.js +7 -0
  422. package/dist/node_modules/lucide-react/dist/esm/icons/rotate-ccw.cjs +1 -0
  423. package/dist/node_modules/lucide-react/dist/esm/icons/rotate-ccw.esm.js +10 -0
  424. package/dist/node_modules/lucide-react/dist/esm/icons/save.cjs +1 -0
  425. package/dist/node_modules/lucide-react/dist/esm/icons/save.esm.js +17 -0
  426. package/dist/node_modules/lucide-react/dist/esm/icons/search.cjs +1 -0
  427. package/dist/node_modules/lucide-react/dist/esm/icons/search.esm.js +12 -0
  428. package/dist/node_modules/lucide-react/dist/esm/icons/settings.cjs +1 -0
  429. package/dist/node_modules/lucide-react/dist/esm/icons/settings.esm.js +12 -0
  430. package/dist/node_modules/lucide-react/dist/esm/icons/triangle-alert.cjs +1 -0
  431. package/dist/node_modules/lucide-react/dist/esm/icons/triangle-alert.esm.js +17 -0
  432. package/dist/node_modules/lucide-react/dist/esm/icons/wrench.cjs +1 -0
  433. package/dist/node_modules/lucide-react/dist/esm/icons/wrench.esm.js +7 -0
  434. package/dist/node_modules/lucide-react/dist/esm/icons/x.cjs +1 -0
  435. package/dist/node_modules/lucide-react/dist/esm/icons/x.esm.js +10 -0
  436. package/dist/node_modules/lucide-react/dist/esm/shared/src/utils/hasA11yProp.cjs +1 -0
  437. package/dist/node_modules/lucide-react/dist/esm/shared/src/utils/hasA11yProp.esm.js +7 -0
  438. package/dist/node_modules/lucide-react/dist/esm/shared/src/utils/mergeClasses.cjs +1 -0
  439. package/dist/node_modules/lucide-react/dist/esm/shared/src/utils/mergeClasses.esm.js +4 -0
  440. package/dist/node_modules/lucide-react/dist/esm/shared/src/utils/toCamelCase.cjs +1 -0
  441. package/dist/node_modules/lucide-react/dist/esm/shared/src/utils/toCamelCase.esm.js +4 -0
  442. package/dist/node_modules/lucide-react/dist/esm/shared/src/utils/toKebabCase.cjs +1 -0
  443. package/dist/node_modules/lucide-react/dist/esm/shared/src/utils/toKebabCase.esm.js +4 -0
  444. package/dist/node_modules/lucide-react/dist/esm/shared/src/utils/toPascalCase.cjs +1 -0
  445. package/dist/node_modules/lucide-react/dist/esm/shared/src/utils/toPascalCase.esm.js +8 -0
  446. package/dist/node_modules/tailwind-merge/dist/bundle-mjs.cjs +1 -0
  447. package/dist/node_modules/tailwind-merge/dist/bundle-mjs.esm.js +1723 -0
  448. package/dist/node_modules/use-debounce/dist/index.module.cjs +1 -0
  449. package/dist/node_modules/use-debounce/dist/index.module.esm.js +70 -0
  450. package/dist/tokens.css +1085 -0
  451. package/dist/ui.css +1 -1
  452. package/llms.txt +117 -0
  453. package/package.json +18 -9
  454. package/dist/index.cjs.js +0 -40
  455. package/dist/index.es.js +0 -8066
  456. package/dist/src/components/animated-height/index.d.ts +0 -2
  457. package/dist/src/components/badge/index.d.ts +0 -2
  458. package/dist/src/components/button/Button.d.ts +0 -2
  459. package/dist/src/components/checkbox/index.d.ts +0 -2
  460. package/dist/src/components/collapsible/index.d.ts +0 -2
  461. package/dist/src/components/date-input/index.d.ts +0 -1
  462. package/dist/src/components/date-picker/index.d.ts +0 -5
  463. package/dist/src/components/drawer/Drawer.d.ts +0 -18
  464. package/dist/src/components/drawer/index.d.ts +0 -2
  465. package/dist/src/components/info-tooltip/index.d.ts +0 -2
  466. package/dist/src/components/input/index.d.ts +0 -4
  467. package/dist/src/components/loading-spinner/index.d.ts +0 -2
  468. package/dist/src/components/modal/index.d.ts +0 -6
  469. package/dist/src/components/page-title/index.d.ts +0 -1
  470. package/dist/src/components/popover/index.d.ts +0 -2
  471. package/dist/src/components/select/index.d.ts +0 -4
  472. package/dist/src/components/select/loading-dots.d.ts +0 -9
  473. package/dist/src/components/switch/index.d.ts +0 -2
  474. package/dist/src/components/table/hooks/useInfiniteScroll.d.ts +0 -58
  475. package/dist/src/components/table/index.d.ts +0 -27
  476. package/dist/src/components/table-checkbox/index.d.ts +0 -1
  477. package/dist/src/components/textarea/index.d.ts +0 -2
  478. package/dist/src/components/toast/index.d.ts +0 -3
  479. package/dist/src/components/toolbar/index.d.ts +0 -2
  480. package/dist/src/components/tooltip/index.d.ts +0 -2
  481. package/dist/src/hooks/index.d.ts +0 -4
  482. package/dist/src/index.d.ts +0 -27
  483. package/dist/src/lib/index.d.ts +0 -6
  484. /package/dist/{src/components → components}/animated-height/AnimatedHeight.d.ts +0 -0
  485. /package/dist/{src/components → components}/badge/types.d.ts +0 -0
  486. /package/dist/{src/components → components}/button/types.d.ts +0 -0
  487. /package/dist/{src/components → components}/checkbox/types.d.ts +0 -0
  488. /package/dist/{src/components → components}/collapsible/Collapsible.d.ts +0 -0
  489. /package/dist/{src/components → components}/page-title/PageTitle.d.ts +0 -0
  490. /package/dist/{src/components → components}/search-box/ExactMatchToggle.d.ts +0 -0
  491. /package/dist/{src/components → components}/search-box/SearchBoxChips.d.ts +0 -0
  492. /package/dist/{src/components → components}/search-box/SearchBoxFloatingInput.d.ts +0 -0
  493. /package/dist/{src/components → components}/search-box/SearchBoxMonth.d.ts +0 -0
  494. /package/dist/{src/components → components}/search-box/SearchBoxSheetContext.d.ts +0 -0
  495. /package/dist/{src/components → components}/search-box/parseDateRange.d.ts +0 -0
  496. /package/dist/{src/components → components}/select/types.d.ts +0 -0
  497. /package/dist/{src/components → components}/switch/types.d.ts +0 -0
  498. /package/dist/{src/components → components}/table/components/KeyboardNavButton.d.ts +0 -0
  499. /package/dist/{src/components → components}/table/components/PageJumpInput.d.ts +0 -0
  500. /package/dist/{src/components → components}/table/components/Pagination.d.ts +0 -0
  501. /package/dist/{src/components → components}/table/components/PaginationFooter.d.ts +0 -0
  502. /package/dist/{src/components → components}/table/components/SortableHeaderCell.d.ts +0 -0
  503. /package/dist/{src/components → components}/table/hooks/useVirtualTable.d.ts +0 -0
  504. /package/dist/{src/components → components}/table/types.d.ts +0 -0
  505. /package/dist/{src/components → components}/table-checkbox/TableCheckbox.d.ts +0 -0
  506. /package/dist/{src/components → components}/table-page-layout/TablePageLayout.d.ts +0 -0
  507. /package/dist/{src/components → components}/textarea/types.d.ts +0 -0
  508. /package/dist/{src/hooks → hooks}/useBottomSheetDrag.d.ts +0 -0
  509. /package/dist/{src/hooks → hooks}/useClickOutside.d.ts +0 -0
  510. /package/dist/{src/hooks → hooks}/useMediaQuery.d.ts +0 -0
  511. /package/dist/{src/hooks → hooks}/useScrollLock.d.ts +0 -0
  512. /package/dist/{src/lib → lib}/Portal.d.ts +0 -0
  513. /package/dist/{src/lib → lib}/column-preset-storage.d.ts +0 -0
  514. /package/dist/{src/lib → lib}/overlay-stack.d.ts +0 -0
@@ -0,0 +1,77 @@
1
+ import { cn as e } from "../../lib/utils.esm.js";
2
+ import { getButtonBaseClasses as t, getButtonColorClasses as n, getButtonDisplayClasses as r, getButtonFocusRing as i, getButtonSizeClasses as a } from "./utils.esm.js";
3
+ import { forwardRef as o, useEffect as s, useRef as c, useState as l } from "react";
4
+ import { jsx as u, jsxs as d } from "react/jsx-runtime";
5
+ //#region src/components/button/Button.tsx
6
+ var f = () => /* @__PURE__ */ d("svg", {
7
+ className: "animate-button-spinner size-button-spinner-small",
8
+ xmlns: "http://www.w3.org/2000/svg",
9
+ fill: "none",
10
+ viewBox: "0 0 24 24",
11
+ children: [/* @__PURE__ */ u("circle", {
12
+ className: "opacity-button-spinner-track",
13
+ cx: "12",
14
+ cy: "12",
15
+ r: "10",
16
+ stroke: "currentColor",
17
+ strokeWidth: "4"
18
+ }), /* @__PURE__ */ u("path", {
19
+ className: "opacity-button-spinner-head",
20
+ fill: "currentColor",
21
+ d: "M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"
22
+ })]
23
+ }), p = o((o, p) => {
24
+ let { variant: m = "primary", appearance: h = "filled", size: g = "medium", display: _ = "inline", loading: v = !1, clickThrottleMs: y = 0, leadingIcon: b, trailingIcon: x, className: S = "", children: C, ...w } = o, [T, E] = l(!1), D = c(null), O = () => {
25
+ y && (E(!0), D.current && clearTimeout(D.current), D.current = setTimeout(() => {
26
+ E(!1), D.current = null;
27
+ }, y));
28
+ };
29
+ s(() => () => {
30
+ D.current && clearTimeout(D.current);
31
+ }, []);
32
+ let k = "as" in o && o.as === "a", A = ("disabled" in o ? o.disabled : !1) || v || T, j = e(t(), n(m, h), a(g), r(_), i(m), v && "opacity-70 cursor-wait", k && A && "pointer-events-none", k && A && !v && "opacity-button-disabled", S);
33
+ if (k) {
34
+ let e = w, t = (t) => {
35
+ if (A) {
36
+ t.preventDefault();
37
+ return;
38
+ }
39
+ O(), e.onClick?.(t);
40
+ };
41
+ return /* @__PURE__ */ d("a", {
42
+ ref: p,
43
+ className: j,
44
+ "aria-disabled": A,
45
+ tabIndex: A ? -1 : e.tabIndex,
46
+ ...e,
47
+ onClick: t,
48
+ children: [
49
+ v ? /* @__PURE__ */ u(f, {}) : b,
50
+ C,
51
+ !v && x
52
+ ]
53
+ });
54
+ }
55
+ let M = w, N = (e) => {
56
+ if (A) {
57
+ e.preventDefault();
58
+ return;
59
+ }
60
+ O(), M.onClick?.(e);
61
+ };
62
+ return /* @__PURE__ */ d("button", {
63
+ ref: p,
64
+ className: j,
65
+ disabled: A,
66
+ ...M,
67
+ onClick: N,
68
+ children: [
69
+ v ? /* @__PURE__ */ u(f, {}) : b,
70
+ C,
71
+ !v && x
72
+ ]
73
+ });
74
+ });
75
+ p.displayName = "Button";
76
+ //#endregion
77
+ export { p as Button };
@@ -1,2 +1,2 @@
1
- export { Button } from './Button';
2
- export type { ButtonProps, ButtonBaseProps, ButtonLinkProps, ButtonVariant, ButtonAppearance, ButtonSize, ButtonDisplay, } from './types';
1
+ export { Button } from './Button.js';
2
+ export type { ButtonProps, ButtonBaseProps, ButtonLinkProps, ButtonVariant, ButtonAppearance, ButtonSize, ButtonDisplay, } from './types.js';
@@ -0,0 +1 @@
1
+ var e=(e=`primary`,t=`filled`)=>({primary:{filled:`border-transparent bg-primary text-fg-inverse hover:bg-primary-hover active:bg-primary-active disabled:bg-bg-disabled disabled:text-fg-disabled`,outlined:`bg-bg-surface text-fg-default border-border-default hover:bg-bg-subtle active:bg-bg-muted disabled:text-fg-disabled disabled:border-border-subtle disabled:bg-transparent`,transparent:`border-transparent bg-transparent text-fg-default hover:bg-bg-subtle active:bg-bg-muted disabled:text-fg-disabled`},secondary:{filled:`border-transparent bg-primary-subtle text-primary-fg hover:bg-button-secondary-hover active:bg-button-secondary-active disabled:bg-bg-disabled disabled:text-fg-disabled`,outlined:`bg-bg-surface text-fg-muted border-border-subtle hover:bg-bg-subtle active:bg-bg-muted disabled:text-fg-disabled disabled:border-border-faint disabled:bg-transparent`,transparent:`border-transparent bg-transparent text-fg-muted hover:bg-bg-subtle active:bg-bg-muted disabled:text-fg-disabled`},tertiary:{filled:`border-transparent bg-bg-subtle text-fg-muted hover:bg-bg-muted active:bg-bg-disabled disabled:bg-bg-page disabled:text-fg-disabled`,outlined:`bg-bg-surface text-fg-subtle border-border-subtle hover:bg-bg-page active:bg-bg-subtle disabled:text-fg-disabled disabled:border-border-faint disabled:bg-transparent`,transparent:`border-transparent bg-transparent text-fg-subtle hover:bg-bg-page active:bg-bg-subtle disabled:text-fg-disabled`},danger:{filled:`border-transparent bg-error text-fg-inverse hover:bg-error-hover active:bg-error-active disabled:bg-bg-disabled disabled:text-fg-disabled`,outlined:`bg-bg-surface text-error-fg border-border-danger hover:bg-error-subtle active:bg-error-muted disabled:text-error-border disabled:border-error-border disabled:bg-transparent`,transparent:`border-transparent bg-transparent text-error-fg hover:bg-error-subtle active:bg-error-muted disabled:text-error-border`}})[e][t],t=(e=`medium`)=>({mini:`h-control-mini px-control-pad-mini text-control-mini gap-button-mini rounded-control-mini`,small:`h-control-small px-control-pad-small text-control-small gap-button-small rounded-control-small`,medium:`h-control-medium px-control-pad-medium text-control-medium gap-button-medium rounded-control-medium`,large:`h-control-large px-control-pad-large text-control-large gap-button-large rounded-control-large`})[e],n=(e=`inline`)=>({inline:`inline-flex`,block:`flex w-full`})[e],r=()=>`items-center justify-center font-control-action border-button transition-colors duration-button ease-button outline-none focus-visible:ring-button focus-visible:ring-inset disabled:cursor-not-allowed disabled:pointer-events-none`,i=(e=`primary`)=>({primary:`focus-visible:ring-focus-primary`,secondary:`focus-visible:ring-focus-primary`,tertiary:`focus-visible:ring-border-default`,danger:`focus-visible:ring-focus-danger`})[e];exports.getButtonBaseClasses=r,exports.getButtonColorClasses=e,exports.getButtonDisplayClasses=n,exports.getButtonFocusRing=i,exports.getButtonSizeClasses=t;
@@ -1,4 +1,4 @@
1
- import { ButtonAppearance, ButtonDisplay, ButtonSize, ButtonVariant } from './types';
1
+ import { ButtonAppearance, ButtonDisplay, ButtonSize, ButtonVariant } from './types.js';
2
2
  export declare const getButtonColorClasses: (variant?: ButtonVariant, appearance?: ButtonAppearance) => string;
3
3
  export declare const getButtonSizeClasses: (size?: ButtonSize) => string;
4
4
  export declare const getButtonDisplayClasses: (display?: ButtonDisplay) => string;
@@ -0,0 +1,38 @@
1
+ //#region src/components/button/utils.ts
2
+ var e = (e = "primary", t = "filled") => ({
3
+ primary: {
4
+ filled: "border-transparent bg-primary text-fg-inverse hover:bg-primary-hover active:bg-primary-active disabled:bg-bg-disabled disabled:text-fg-disabled",
5
+ outlined: "bg-bg-surface text-fg-default border-border-default hover:bg-bg-subtle active:bg-bg-muted disabled:text-fg-disabled disabled:border-border-subtle disabled:bg-transparent",
6
+ transparent: "border-transparent bg-transparent text-fg-default hover:bg-bg-subtle active:bg-bg-muted disabled:text-fg-disabled"
7
+ },
8
+ secondary: {
9
+ filled: "border-transparent bg-primary-subtle text-primary-fg hover:bg-button-secondary-hover active:bg-button-secondary-active disabled:bg-bg-disabled disabled:text-fg-disabled",
10
+ outlined: "bg-bg-surface text-fg-muted border-border-subtle hover:bg-bg-subtle active:bg-bg-muted disabled:text-fg-disabled disabled:border-border-faint disabled:bg-transparent",
11
+ transparent: "border-transparent bg-transparent text-fg-muted hover:bg-bg-subtle active:bg-bg-muted disabled:text-fg-disabled"
12
+ },
13
+ tertiary: {
14
+ filled: "border-transparent bg-bg-subtle text-fg-muted hover:bg-bg-muted active:bg-bg-disabled disabled:bg-bg-page disabled:text-fg-disabled",
15
+ outlined: "bg-bg-surface text-fg-subtle border-border-subtle hover:bg-bg-page active:bg-bg-subtle disabled:text-fg-disabled disabled:border-border-faint disabled:bg-transparent",
16
+ transparent: "border-transparent bg-transparent text-fg-subtle hover:bg-bg-page active:bg-bg-subtle disabled:text-fg-disabled"
17
+ },
18
+ danger: {
19
+ filled: "border-transparent bg-error text-fg-inverse hover:bg-error-hover active:bg-error-active disabled:bg-bg-disabled disabled:text-fg-disabled",
20
+ outlined: "bg-bg-surface text-error-fg border-border-danger hover:bg-error-subtle active:bg-error-muted disabled:text-error-border disabled:border-error-border disabled:bg-transparent",
21
+ transparent: "border-transparent bg-transparent text-error-fg hover:bg-error-subtle active:bg-error-muted disabled:text-error-border"
22
+ }
23
+ })[e][t], t = (e = "medium") => ({
24
+ mini: "h-control-mini px-control-pad-mini text-control-mini gap-button-mini rounded-control-mini",
25
+ small: "h-control-small px-control-pad-small text-control-small gap-button-small rounded-control-small",
26
+ medium: "h-control-medium px-control-pad-medium text-control-medium gap-button-medium rounded-control-medium",
27
+ large: "h-control-large px-control-pad-large text-control-large gap-button-large rounded-control-large"
28
+ })[e], n = (e = "inline") => ({
29
+ inline: "inline-flex",
30
+ block: "flex w-full"
31
+ })[e], r = () => "items-center justify-center font-control-action border-button transition-colors duration-button ease-button outline-none focus-visible:ring-button focus-visible:ring-inset disabled:cursor-not-allowed disabled:pointer-events-none", i = (e = "primary") => ({
32
+ primary: "focus-visible:ring-focus-primary",
33
+ secondary: "focus-visible:ring-focus-primary",
34
+ tertiary: "focus-visible:ring-border-default",
35
+ danger: "focus-visible:ring-focus-danger"
36
+ })[e];
37
+ //#endregion
38
+ export { r as getButtonBaseClasses, e as getButtonColorClasses, n as getButtonDisplayClasses, i as getButtonFocusRing, t as getButtonSizeClasses };
@@ -0,0 +1 @@
1
+ const e=require("../../lib/utils.cjs"),t=require("./utils.cjs");let n=require("react"),r=require("react/jsx-runtime");var i=(0,n.forwardRef)(({variant:n,inputType:i=`checkbox`,size:a=24,baseColor:o=`primary`,label:s,onCheckedChange:c,onChange:l,className:u=``,...d},f)=>{let p=e=>{l?.(e),c?.(e.target.checked)},m=t.getCheckboxVariantClasses(n,o),h=t.getCheckboxSizeStyle(a),g=(0,r.jsxs)(`div`,{className:`inline-flex items-center relative`,children:[(0,r.jsx)(`input`,{ref:f,type:i,className:`sr-only peer`,onChange:p,...d}),(0,r.jsx)(`div`,{className:e.cn(m,`peer-checked:[&_path]:scale-100`,u),style:h,children:(0,r.jsx)(`svg`,{className:`absolute inset-0 w-full h-full pointer-events-none`,viewBox:`0 0 24 24`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`,children:(0,r.jsx)(`path`,{d:`M5 12l5 5L20 7`,stroke:`currentColor`,strokeWidth:`2.5`,strokeLinecap:`round`,strokeLinejoin:`round`,className:`origin-center scale-0 transition-transform duration-200 ease-out`})})})]});return s?(0,r.jsxs)(`label`,{className:t.getLabelClasses(),children:[g,(0,r.jsx)(`span`,{className:`text-base text-fg-default`,children:s})]}):g});i.displayName=`CheckboxInternal`;var a=(0,n.forwardRef)((e,t)=>(0,r.jsx)(i,{ref:t,variant:`circle`,...e}));a.displayName=`Checkbox.Circle`;var o=(0,n.forwardRef)((e,t)=>(0,r.jsx)(i,{ref:t,variant:`line`,...e}));o.displayName=`Checkbox.Line`;var s=(0,n.forwardRef)((e,t)=>(0,r.jsx)(i,{ref:t,variant:`lineTransparent`,...e}));s.displayName=`Checkbox.LineTransparent`;var c={Circle:a,Line:o,LineTransparent:s};exports.Checkbox=c,exports.CheckboxCircle=a,exports.CheckboxLine=o,exports.CheckboxLineTransparent=s;
@@ -1,4 +1,4 @@
1
- import { CheckboxProps } from './types';
1
+ import { CheckboxProps } from './types.js';
2
2
  /**
3
3
  * Checkbox.Circle 컴포넌트 — 원형 아이콘을 사용하는 체크박스
4
4
  */
@@ -0,0 +1,69 @@
1
+ import { cn as e } from "../../lib/utils.esm.js";
2
+ import { getCheckboxSizeStyle as t, getCheckboxVariantClasses as n, getLabelClasses as r } from "./utils.esm.js";
3
+ import { forwardRef as i } from "react";
4
+ import { jsx as a, jsxs as o } from "react/jsx-runtime";
5
+ //#region src/components/checkbox/Checkbox.tsx
6
+ var s = i(({ variant: i, inputType: s = "checkbox", size: c = 24, baseColor: l = "primary", label: u, onCheckedChange: d, onChange: f, className: p = "", ...m }, h) => {
7
+ let g = (e) => {
8
+ f?.(e), d?.(e.target.checked);
9
+ }, _ = n(i, l), v = t(c), y = /* @__PURE__ */ o("div", {
10
+ className: "inline-flex items-center relative",
11
+ children: [/* @__PURE__ */ a("input", {
12
+ ref: h,
13
+ type: s,
14
+ className: "sr-only peer",
15
+ onChange: g,
16
+ ...m
17
+ }), /* @__PURE__ */ a("div", {
18
+ className: e(_, "peer-checked:[&_path]:scale-100", p),
19
+ style: v,
20
+ children: /* @__PURE__ */ a("svg", {
21
+ className: "absolute inset-0 w-full h-full pointer-events-none",
22
+ viewBox: "0 0 24 24",
23
+ fill: "none",
24
+ xmlns: "http://www.w3.org/2000/svg",
25
+ children: /* @__PURE__ */ a("path", {
26
+ d: "M5 12l5 5L20 7",
27
+ stroke: "currentColor",
28
+ strokeWidth: "2.5",
29
+ strokeLinecap: "round",
30
+ strokeLinejoin: "round",
31
+ className: "origin-center scale-0 transition-transform duration-200 ease-out"
32
+ })
33
+ })
34
+ })]
35
+ });
36
+ return u ? /* @__PURE__ */ o("label", {
37
+ className: r(),
38
+ children: [y, /* @__PURE__ */ a("span", {
39
+ className: "text-base text-fg-default",
40
+ children: u
41
+ })]
42
+ }) : y;
43
+ });
44
+ s.displayName = "CheckboxInternal";
45
+ var c = i((e, t) => /* @__PURE__ */ a(s, {
46
+ ref: t,
47
+ variant: "circle",
48
+ ...e
49
+ }));
50
+ c.displayName = "Checkbox.Circle";
51
+ var l = i((e, t) => /* @__PURE__ */ a(s, {
52
+ ref: t,
53
+ variant: "line",
54
+ ...e
55
+ }));
56
+ l.displayName = "Checkbox.Line";
57
+ var u = i((e, t) => /* @__PURE__ */ a(s, {
58
+ ref: t,
59
+ variant: "lineTransparent",
60
+ ...e
61
+ }));
62
+ u.displayName = "Checkbox.LineTransparent";
63
+ var d = {
64
+ Circle: c,
65
+ Line: l,
66
+ LineTransparent: u
67
+ };
68
+ //#endregion
69
+ export { d as Checkbox, c as CheckboxCircle, l as CheckboxLine, u as CheckboxLineTransparent };
@@ -0,0 +1,2 @@
1
+ export { Checkbox, CheckboxCircle, CheckboxLine, CheckboxLineTransparent, } from './Checkbox.js';
2
+ export type { CheckboxProps, CheckboxVariant } from './types.js';
@@ -0,0 +1 @@
1
+ function e(){return`appearance-none cursor-pointer transition-all duration-200 focus:outline-hidden`}function t(t=`primary`){return`${e()} rounded-full border-2 ${{primary:`border-border-default peer-checked:bg-primary peer-checked:border-primary text-fg-inverse`,secondary:`border-border-default peer-checked:bg-neutral-fill peer-checked:border-neutral-fill text-fg-inverse`,neutral:`border-border-default peer-checked:bg-neutral-fill peer-checked:border-neutral-fill text-fg-inverse`}[t]} relative flex items-center justify-center transition-all duration-200`}function n(t=`primary`){return`${e()} rounded-checkbox border-2 ${{primary:`border-border-default peer-checked:bg-primary peer-checked:border-primary text-fg-inverse`,secondary:`border-border-default peer-checked:bg-neutral-fill peer-checked:border-neutral-fill text-fg-inverse`,neutral:`border-border-default peer-checked:bg-neutral-fill peer-checked:border-neutral-fill text-fg-inverse`}[t]} relative flex items-center justify-center transition-all duration-200`}function r(t=`primary`){return`${e()} rounded-checkbox border-2 bg-transparent ${{primary:`border-border-subtle peer-checked:border-primary text-primary-fg`,secondary:`border-border-subtle peer-checked:border-neutral-fill text-neutral-fg`,neutral:`border-border-subtle peer-checked:border-neutral-fill text-neutral-fg`}[t]} relative flex items-center justify-center transition-all duration-200`}function i(e,i=`primary`){switch(e){case`circle`:return t(i);case`line`:return n(i);case`lineTransparent`:return r(i);default:return n(i)}}function a(e=24){return{width:`${e}px`,height:`${e}px`}}function o(){return`inline-flex items-center gap-2 cursor-pointer select-none`}exports.getCheckboxSizeStyle=a,exports.getCheckboxVariantClasses=i,exports.getLabelClasses=o;
@@ -1,4 +1,4 @@
1
- import { CheckboxProps, CheckboxVariant } from './types';
1
+ import { CheckboxProps, CheckboxVariant } from './types.js';
2
2
  /**
3
3
  * Checkbox의 기본 스타일 클래스를 반환합니다.
4
4
  */
@@ -0,0 +1,44 @@
1
+ //#region src/components/checkbox/utils.ts
2
+ function e() {
3
+ return "appearance-none cursor-pointer transition-all duration-200 focus:outline-hidden";
4
+ }
5
+ function t(t = "primary") {
6
+ return `${e()} rounded-full border-2 ${{
7
+ primary: "border-border-default peer-checked:bg-primary peer-checked:border-primary text-fg-inverse",
8
+ secondary: "border-border-default peer-checked:bg-neutral-fill peer-checked:border-neutral-fill text-fg-inverse",
9
+ neutral: "border-border-default peer-checked:bg-neutral-fill peer-checked:border-neutral-fill text-fg-inverse"
10
+ }[t]} relative flex items-center justify-center transition-all duration-200`;
11
+ }
12
+ function n(t = "primary") {
13
+ return `${e()} rounded-checkbox border-2 ${{
14
+ primary: "border-border-default peer-checked:bg-primary peer-checked:border-primary text-fg-inverse",
15
+ secondary: "border-border-default peer-checked:bg-neutral-fill peer-checked:border-neutral-fill text-fg-inverse",
16
+ neutral: "border-border-default peer-checked:bg-neutral-fill peer-checked:border-neutral-fill text-fg-inverse"
17
+ }[t]} relative flex items-center justify-center transition-all duration-200`;
18
+ }
19
+ function r(t = "primary") {
20
+ return `${e()} rounded-checkbox border-2 bg-transparent ${{
21
+ primary: "border-border-subtle peer-checked:border-primary text-primary-fg",
22
+ secondary: "border-border-subtle peer-checked:border-neutral-fill text-neutral-fg",
23
+ neutral: "border-border-subtle peer-checked:border-neutral-fill text-neutral-fg"
24
+ }[t]} relative flex items-center justify-center transition-all duration-200`;
25
+ }
26
+ function i(e, i = "primary") {
27
+ switch (e) {
28
+ case "circle": return t(i);
29
+ case "line": return n(i);
30
+ case "lineTransparent": return r(i);
31
+ default: return n(i);
32
+ }
33
+ }
34
+ function a(e = 24) {
35
+ return {
36
+ width: `${e}px`,
37
+ height: `${e}px`
38
+ };
39
+ }
40
+ function o() {
41
+ return "inline-flex items-center gap-2 cursor-pointer select-none";
42
+ }
43
+ //#endregion
44
+ export { a as getCheckboxSizeStyle, i as getCheckboxVariantClasses, o as getLabelClasses };
@@ -0,0 +1 @@
1
+ const e=require("../../lib/utils.cjs");let t=require("react/jsx-runtime");function n({open:n,durationMs:r=200,ease:i=`cubic-bezier(0.16, 1, 0.3, 1)`,unmountWhenClosed:a=!1,fade:o=!0,className:s=``,children:c}){return a&&!n?null:(0,t.jsx)(`div`,{className:e.cn(`grid`,s),style:{gridTemplateRows:n?`1fr`:`0fr`,opacity:o?+!!n:void 0,transition:[`grid-template-rows ${r}ms ${i}`,o?`opacity ${r}ms ${i}`:null].filter(Boolean).join(`, `)},"aria-hidden":!n,children:(0,t.jsx)(`div`,{className:`overflow-hidden`,children:c})})}exports.Collapsible=n;
@@ -0,0 +1,20 @@
1
+ import { cn as e } from "../../lib/utils.esm.js";
2
+ import { jsx as t } from "react/jsx-runtime";
3
+ //#region src/components/collapsible/Collapsible.tsx
4
+ function n({ open: n, durationMs: r = 200, ease: i = "cubic-bezier(0.16, 1, 0.3, 1)", unmountWhenClosed: a = !1, fade: o = !0, className: s = "", children: c }) {
5
+ return a && !n ? null : /* @__PURE__ */ t("div", {
6
+ className: e("grid", s),
7
+ style: {
8
+ gridTemplateRows: n ? "1fr" : "0fr",
9
+ opacity: o ? +!!n : void 0,
10
+ transition: [`grid-template-rows ${r}ms ${i}`, o ? `opacity ${r}ms ${i}` : null].filter(Boolean).join(", ")
11
+ },
12
+ "aria-hidden": !n,
13
+ children: /* @__PURE__ */ t("div", {
14
+ className: "overflow-hidden",
15
+ children: c
16
+ })
17
+ });
18
+ }
19
+ //#endregion
20
+ export { n as Collapsible };
@@ -0,0 +1,2 @@
1
+ export { Collapsible } from './Collapsible.js';
2
+ export type { CollapsibleProps } from './Collapsible.js';
@@ -0,0 +1 @@
1
+ require("../../_virtual/_rolldown/runtime.cjs");const e=require("../../lib/utils.cjs"),t=require("../button/Button.cjs"),n=require("../../node_modules/lucide-react/dist/esm/icons/check.cjs"),r=require("../../node_modules/lucide-react/dist/esm/icons/copy.cjs");let i=require("react"),a=require("react/jsx-runtime"),o=require("react-hot-toast");var s=1500;function c({value:c,children:l,label:u,className:d,iconOnly:f=!1,feedbackDurationMs:p=s}){let[m,h]=(0,i.useState)(!1),g=(0,i.useRef)(null);(0,i.useEffect)(()=>()=>{g.current!==null&&window.clearTimeout(g.current)},[]);let _=async()=>{try{await navigator.clipboard.writeText(c),h(!0),o.default.success(u?`${u}을(를) 복사했습니다.`:`복사했습니다.`),g.current!==null&&window.clearTimeout(g.current),g.current=window.setTimeout(()=>{h(!1),g.current=null},p)}catch{o.default.error(u?`${u} 복사에 실패했습니다.`:`복사에 실패했습니다.`)}},v=m?(0,a.jsx)(n.Check,{"aria-hidden":`true`,className:f?`size-4`:`size-3.5 shrink-0`}):(0,a.jsx)(r.Copy,{"aria-hidden":`true`,className:f?`size-4`:`size-3.5 shrink-0 opacity-60`});return f?(0,a.jsx)(t.Button,{type:`button`,variant:`secondary`,appearance:`transparent`,"aria-label":u?`${u} 복사`:`복사`,title:u?`클릭하여 ${u} 복사`:`클릭하여 복사`,size:`mini`,className:e.cn(`w-control-mini px-0`,m&&`text-success-fg`,d),onClick:()=>void _(),children:v}):(0,a.jsxs)(`button`,{type:`button`,onClick:()=>void _(),"aria-label":u?`${u} 복사`:`복사`,title:u?`클릭하여 ${u} 복사`:`클릭하여 복사`,className:e.cn(`inline-flex items-center gap-1 rounded-control-mini text-fg-accent underline decoration-transparent underline-offset-2 transition-colors hover:decoration-current focus-visible:outline-none focus-visible:ring-control focus-visible:ring-focus-primary-soft`,m&&`text-success-fg`,d),children:[(0,a.jsx)(`span`,{children:l??c}),v]})}exports.CopyableText=c;
@@ -0,0 +1,22 @@
1
+ export interface CopyableTextProps {
2
+ /** 클립보드에 복사할 실제 값. */
3
+ value: string;
4
+ /**
5
+ * 화면에 렌더할 내용. 생략하면 `value`를 그대로 보여준다.
6
+ * 값과 표시 텍스트가 다른 소비처(예: 코드 + 부가 라벨)를 위한 옵션.
7
+ */
8
+ children?: React.ReactNode;
9
+ /**
10
+ * 토스트·aria-label에 쓰는 항목 이름(예: "코드"). 생략하면 일반 문구를 쓴다.
11
+ * packages는 도메인 단어를 소유하지 않으므로 호출부가 넘긴 문자열을 그대로 쓴다.
12
+ */
13
+ label?: string;
14
+ className?: string;
15
+ /** 값 옆이 아닌 폼 컨트롤의 trailing slot에 놓을 때 아이콘만 표시한다. */
16
+ iconOnly?: boolean;
17
+ /** 복사 성공 상태(아이콘 전환)를 유지하는 시간(ms). 기본 1500. */
18
+ feedbackDurationMs?: number;
19
+ }
20
+ /** 클립보드 복사 결과를 아이콘과 토스트로 알린다. 보안 컨텍스트와 clipboard 권한이 필요하며,
21
+ * 앱 루트에 ToastProvider를 둔다. 표시 텍스트가 복사 값과 다르면 children을 지정한다. */
22
+ export declare function CopyableText({ value, children, label, className, iconOnly, feedbackDurationMs, }: CopyableTextProps): import("react").JSX.Element;
@@ -0,0 +1,50 @@
1
+ import { cn as e } from "../../lib/utils.esm.js";
2
+ import { Button as t } from "../button/Button.esm.js";
3
+ import { Check as n } from "../../node_modules/lucide-react/dist/esm/icons/check.esm.js";
4
+ import { Copy as r } from "../../node_modules/lucide-react/dist/esm/icons/copy.esm.js";
5
+ import { toast as i } from "../toast/index.esm.js";
6
+ import { useEffect as a, useRef as o, useState as s } from "react";
7
+ import { jsx as c, jsxs as l } from "react/jsx-runtime";
8
+ //#region src/components/copyable-text/CopyableText.tsx
9
+ var u = 1500;
10
+ function d({ value: d, children: f, label: p, className: m, iconOnly: h = !1, feedbackDurationMs: g = u }) {
11
+ let [_, v] = s(!1), y = o(null);
12
+ a(() => () => {
13
+ y.current !== null && window.clearTimeout(y.current);
14
+ }, []);
15
+ let b = async () => {
16
+ try {
17
+ await navigator.clipboard.writeText(d), v(!0), i.success(p ? `${p}을(를) 복사했습니다.` : "복사했습니다."), y.current !== null && window.clearTimeout(y.current), y.current = window.setTimeout(() => {
18
+ v(!1), y.current = null;
19
+ }, g);
20
+ } catch {
21
+ i.error(p ? `${p} 복사에 실패했습니다.` : "복사에 실패했습니다.");
22
+ }
23
+ }, x = _ ? /* @__PURE__ */ c(n, {
24
+ "aria-hidden": "true",
25
+ className: h ? "size-4" : "size-3.5 shrink-0"
26
+ }) : /* @__PURE__ */ c(r, {
27
+ "aria-hidden": "true",
28
+ className: h ? "size-4" : "size-3.5 shrink-0 opacity-60"
29
+ });
30
+ return h ? /* @__PURE__ */ c(t, {
31
+ type: "button",
32
+ variant: "secondary",
33
+ appearance: "transparent",
34
+ "aria-label": p ? `${p} 복사` : "복사",
35
+ title: p ? `클릭하여 ${p} 복사` : "클릭하여 복사",
36
+ size: "mini",
37
+ className: e("w-control-mini px-0", _ && "text-success-fg", m),
38
+ onClick: () => void b(),
39
+ children: x
40
+ }) : /* @__PURE__ */ l("button", {
41
+ type: "button",
42
+ onClick: () => void b(),
43
+ "aria-label": p ? `${p} 복사` : "복사",
44
+ title: p ? `클릭하여 ${p} 복사` : "클릭하여 복사",
45
+ className: e("inline-flex items-center gap-1 rounded-control-mini text-fg-accent underline decoration-transparent underline-offset-2 transition-colors hover:decoration-current focus-visible:outline-none focus-visible:ring-control focus-visible:ring-focus-primary-soft", _ && "text-success-fg", m),
46
+ children: [/* @__PURE__ */ c("span", { children: f ?? d }), x]
47
+ });
48
+ }
49
+ //#endregion
50
+ export { d as CopyableText };
@@ -0,0 +1,2 @@
1
+ export { CopyableText } from './CopyableText.js';
2
+ export type { CopyableTextProps } from './CopyableText.js';
@@ -0,0 +1 @@
1
+ const e=require("../../lib/utils.cjs"),t=require("../../node_modules/lucide-react/dist/esm/icons/calendar.cjs"),n=require("../date-picker/date-picker.cjs");let r=require("react/jsx-runtime");function i({value:i,onChange:a,size:o=`small`,ariaLabel:s,label:c,className:l=``,disableMobileSheet:u}){let d=o===`mini`,f=d?`h-control-small`:`h-control-medium`,p=d?`w-30`:`w-36`,m=d?`pl-control-pad-mini pr-0.5`:`pl-control-pad-small pr-1`,h=d?`text-control-mini`:`text-control-small`,g=d?`h-5 w-5`:`h-6 w-6`,_=d?`h-3 w-3`:`h-3.5 w-3.5`,v=e.cn(`group relative flex items-center gap-1 rounded-lg border border-border-subtle bg-bg-surface transition-colors focus-within:border-primary`,f,p,m,l),y=i?`text-fg-default`:`text-fg-subtle`,b=!!c;return(0,r.jsxs)(`div`,{className:v,children:[(0,r.jsx)(`input`,{type:`date`,value:i,onChange:e=>a(e.target.value),min:`1900-01-01`,max:`9999-12-31`,"aria-label":s??c,className:e.cn(`search-box-date-input flex-1 bg-transparent outline-none`,h,y)}),(0,r.jsx)(n.DatePicker,{value:i||null,onApply:e=>a(e),disableMobileSheet:u,children:(0,r.jsx)(`button`,{type:`button`,"aria-label":`달력에서 날짜 선택`,className:e.cn(`flex items-center justify-center rounded text-fg-subtle transition-colors hover:bg-bg-subtle hover:text-fg-default`,g),children:(0,r.jsx)(t.Calendar,{className:_})})}),b&&(0,r.jsx)(`span`,{"aria-hidden":`true`,className:e.cn(`pointer-events-none absolute -top-2 left-2 bg-bg-surface px-1 text-fg-muted group-focus-within:text-primary-fg`,d?`text-[10px]`:`text-xs`),children:c})]})}exports.DateInput=i;
@@ -13,6 +13,7 @@ interface Props {
13
13
  /**
14
14
  * true면 trailing 캘린더 버튼이 모바일에서도 popover로만 떠 자체 바텀시트를 만들지 않는다.
15
15
  * 호출부가 이미 시트(예: SearchBox 모바일 바텀시트) 안에 있을 때 시트 두 개 겹침 회피.
16
+ * 생략하면 Modal·Drawer 안에서 자동 적용되며, false를 명시하면 시트를 유지한다.
16
17
  */
17
18
  disableMobileSheet?: boolean;
18
19
  }
@@ -0,0 +1,40 @@
1
+ import { cn as e } from "../../lib/utils.esm.js";
2
+ import { Calendar as t } from "../../node_modules/lucide-react/dist/esm/icons/calendar.esm.js";
3
+ import { DatePicker as n } from "../date-picker/date-picker.esm.js";
4
+ import { jsx as r, jsxs as i } from "react/jsx-runtime";
5
+ //#region src/components/date-input/DateInput.tsx
6
+ function a({ value: a, onChange: o, size: s = "small", ariaLabel: c, label: l, className: u = "", disableMobileSheet: d }) {
7
+ let f = s === "mini", p = f ? "h-control-small" : "h-control-medium", m = f ? "w-30" : "w-36", h = f ? "pl-control-pad-mini pr-0.5" : "pl-control-pad-small pr-1", g = f ? "text-control-mini" : "text-control-small", _ = f ? "h-5 w-5" : "h-6 w-6", v = f ? "h-3 w-3" : "h-3.5 w-3.5", y = e("group relative flex items-center gap-1 rounded-lg border border-border-subtle bg-bg-surface transition-colors focus-within:border-primary", p, m, h, u), b = a ? "text-fg-default" : "text-fg-subtle", x = !!l;
8
+ return /* @__PURE__ */ i("div", {
9
+ className: y,
10
+ children: [
11
+ /* @__PURE__ */ r("input", {
12
+ type: "date",
13
+ value: a,
14
+ onChange: (e) => o(e.target.value),
15
+ min: "1900-01-01",
16
+ max: "9999-12-31",
17
+ "aria-label": c ?? l,
18
+ className: e("search-box-date-input flex-1 bg-transparent outline-none", g, b)
19
+ }),
20
+ /* @__PURE__ */ r(n, {
21
+ value: a || null,
22
+ onApply: (e) => o(e),
23
+ disableMobileSheet: d,
24
+ children: /* @__PURE__ */ r("button", {
25
+ type: "button",
26
+ "aria-label": "달력에서 날짜 선택",
27
+ className: e("flex items-center justify-center rounded text-fg-subtle transition-colors hover:bg-bg-subtle hover:text-fg-default", _),
28
+ children: /* @__PURE__ */ r(t, { className: v })
29
+ })
30
+ }),
31
+ x && /* @__PURE__ */ r("span", {
32
+ "aria-hidden": "true",
33
+ className: e("pointer-events-none absolute -top-2 left-2 bg-bg-surface px-1 text-fg-muted group-focus-within:text-primary-fg", f ? "text-[10px]" : "text-xs"),
34
+ children: l
35
+ })
36
+ ]
37
+ });
38
+ }
39
+ //#endregion
40
+ export { a as DateInput };
@@ -0,0 +1 @@
1
+ export { DateInput } from './DateInput.js';
@@ -0,0 +1 @@
1
+ const e=require("../../hooks/useMediaQuery.cjs"),t=require("../../hooks/useBottomSheetDrag.cjs"),n=require("../../hooks/useScrollLock.cjs"),r=require("../modal/ModalFocusTrapContext.cjs");let i=require("react"),a=require("react/jsx-runtime"),o=require("motion/react"),s=require("@floating-ui/react");function c(t){let n=e.useIsMobile(),a=(0,i.useContext)(r.ModalFocusTrapContext);return{isMobile:n,useSheet:n&&!(t??a!==r.defaultModalFocusTrapContext)}}function l({isOpen:e,onClose:r,useSheet:i,context:c,setFloating:l,floatingStyles:u,getFloatingProps:d,desktopClassName:f,initialFocus:p=-1,children:m}){let h=(0,o.useReducedMotion)(),{dragControls:g,handleDragEnd:_,startDrag:v}=t.useBottomSheetDrag({onDismiss:r});return n.useScrollLock(e&&i),(0,a.jsx)(s.FloatingPortal,{children:i?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(o.AnimatePresence,{children:e&&(0,a.jsx)(o.motion.div,{initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},transition:{duration:h?0:.2},className:`fixed inset-0 z-overlay bg-bg-overlay`,onClick:r},`picker-dimmer`)}),(0,a.jsx)(o.AnimatePresence,{children:e&&(0,a.jsxs)(o.motion.div,{ref:l,...d(),initial:{y:`100%`},animate:{y:0},exit:{y:`100%`,transition:{duration:h?0:.2,ease:[.4,0,1,1]}},transition:h?{duration:0}:{type:`spring`,damping:30,stiffness:320},drag:`y`,dragListener:!1,dragControls:g,dragConstraints:{top:0},dragElastic:{top:0,bottom:.4},onDragEnd:_,className:`fixed inset-x-0 bottom-0 z-overlay flex flex-col gap-5 rounded-t-2xl bg-bg-surface text-fg-default p-5 pb-[max(20px,env(safe-area-inset-bottom))] shadow-overlay`,children:[(0,a.jsx)(`div`,{className:`self-center h-1 w-10 rounded-full bg-bg-handle cursor-grab touch-none active:cursor-grabbing`,onPointerDown:v}),m]},`picker-sheet`)})]}):e&&(0,a.jsx)(s.FloatingFocusManager,{context:c,modal:!1,initialFocus:p,children:(0,a.jsx)(`div`,{ref:l,style:u,...d(),"data-picker-panel":``,className:f,children:m})})})}exports.PickerSheet=l,exports.usePickerMobile=c;
@@ -0,0 +1,22 @@
1
+ import { FloatingContext, useInteractions } from '@floating-ui/react';
2
+ import { CSSProperties, ReactNode, RefObject } from 'react';
3
+ /** 명시된 설정이 없으면 Modal 안에서 popover로 표시한다. */
4
+ export declare function usePickerMobile(disableMobileSheet?: boolean): {
5
+ isMobile: boolean;
6
+ useSheet: boolean;
7
+ };
8
+ interface PickerSheetProps {
9
+ isOpen: boolean;
10
+ onClose: () => void;
11
+ useSheet: boolean;
12
+ context: FloatingContext;
13
+ setFloating: (node: HTMLElement | null) => void;
14
+ floatingStyles: CSSProperties;
15
+ getFloatingProps: ReturnType<typeof useInteractions>["getFloatingProps"];
16
+ desktopClassName: string;
17
+ initialFocus?: number | RefObject<HTMLElement | null>;
18
+ children: ReactNode;
19
+ }
20
+ /** 피커의 floating 패널과 모바일 시트 표면. 내용과 선택 상태는 호출부가 소유한다. */
21
+ export declare function PickerSheet({ isOpen, onClose, useSheet, context, setFloating, floatingStyles, getFloatingProps, desktopClassName, initialFocus, children, }: PickerSheetProps): import("react").JSX.Element;
22
+ export {};
@@ -0,0 +1,77 @@
1
+ import { useIsMobile as e } from "../../hooks/useMediaQuery.esm.js";
2
+ import { useBottomSheetDrag as t } from "../../hooks/useBottomSheetDrag.esm.js";
3
+ import { useScrollLock as n } from "../../hooks/useScrollLock.esm.js";
4
+ import { ModalFocusTrapContext as r, defaultModalFocusTrapContext as i } from "../modal/ModalFocusTrapContext.esm.js";
5
+ import { useContext as a } from "react";
6
+ import { Fragment as o, jsx as s, jsxs as c } from "react/jsx-runtime";
7
+ import { AnimatePresence as l, motion as u, useReducedMotion as d } from "motion/react";
8
+ import { FloatingFocusManager as f, FloatingPortal as p } from "@floating-ui/react";
9
+ //#region src/components/date-picker/PickerSheet.tsx
10
+ function m(t) {
11
+ let n = e(), o = a(r);
12
+ return {
13
+ isMobile: n,
14
+ useSheet: n && !(t ?? o !== i)
15
+ };
16
+ }
17
+ function h({ isOpen: e, onClose: r, useSheet: i, context: a, setFloating: m, floatingStyles: h, getFloatingProps: g, desktopClassName: _, initialFocus: v = -1, children: y }) {
18
+ let b = d(), { dragControls: x, handleDragEnd: S, startDrag: C } = t({ onDismiss: r });
19
+ return n(e && i), /* @__PURE__ */ s(p, { children: i ? /* @__PURE__ */ c(o, { children: [/* @__PURE__ */ s(l, { children: e && /* @__PURE__ */ s(u.div, {
20
+ initial: { opacity: 0 },
21
+ animate: { opacity: 1 },
22
+ exit: { opacity: 0 },
23
+ transition: { duration: b ? 0 : .2 },
24
+ className: "fixed inset-0 z-overlay bg-bg-overlay",
25
+ onClick: r
26
+ }, "picker-dimmer") }), /* @__PURE__ */ s(l, { children: e && /* @__PURE__ */ c(u.div, {
27
+ ref: m,
28
+ ...g(),
29
+ initial: { y: "100%" },
30
+ animate: { y: 0 },
31
+ exit: {
32
+ y: "100%",
33
+ transition: {
34
+ duration: b ? 0 : .2,
35
+ ease: [
36
+ .4,
37
+ 0,
38
+ 1,
39
+ 1
40
+ ]
41
+ }
42
+ },
43
+ transition: b ? { duration: 0 } : {
44
+ type: "spring",
45
+ damping: 30,
46
+ stiffness: 320
47
+ },
48
+ drag: "y",
49
+ dragListener: !1,
50
+ dragControls: x,
51
+ dragConstraints: { top: 0 },
52
+ dragElastic: {
53
+ top: 0,
54
+ bottom: .4
55
+ },
56
+ onDragEnd: S,
57
+ className: "fixed inset-x-0 bottom-0 z-overlay flex flex-col gap-5 rounded-t-2xl bg-bg-surface text-fg-default p-5 pb-[max(20px,env(safe-area-inset-bottom))] shadow-overlay",
58
+ children: [/* @__PURE__ */ s("div", {
59
+ className: "self-center h-1 w-10 rounded-full bg-bg-handle cursor-grab touch-none active:cursor-grabbing",
60
+ onPointerDown: C
61
+ }), y]
62
+ }, "picker-sheet") })] }) : e && /* @__PURE__ */ s(f, {
63
+ context: a,
64
+ modal: !1,
65
+ initialFocus: v,
66
+ children: /* @__PURE__ */ s("div", {
67
+ ref: m,
68
+ style: h,
69
+ ...g(),
70
+ "data-picker-panel": "",
71
+ className: _,
72
+ children: y
73
+ })
74
+ }) });
75
+ }
76
+ //#endregion
77
+ export { h as PickerSheet, m as usePickerMobile };
@@ -0,0 +1 @@
1
+ const e=require("../../lib/utils.cjs"),t=require("../../node_modules/lucide-react/dist/esm/icons/chevron-down.cjs"),n=require("../../node_modules/lucide-react/dist/esm/icons/chevron-left.cjs"),r=require("../../node_modules/lucide-react/dist/esm/icons/chevron-right.cjs"),i=require("../animated-height/AnimatedHeight.cjs"),a=require("./PickerSheet.cjs");let o=require("react"),s=require("react/jsx-runtime"),c=require("@floating-ui/react"),l=require("date-fns"),u=require("date-fns/locale");var d=24;function f({children:e,value:t,onApply:n,disabled:r,disableMobileSheet:i}){let[l,u]=(0,o.useState)(!1),{useSheet:d}=a.usePickerMobile(i),{refs:f,floatingStyles:m,context:h}=(0,c.useFloating)({open:l,onOpenChange:e=>{r||u(e)},placement:`bottom-start`,whileElementsMounted:c.autoUpdate,middleware:[(0,c.offset)(8),(0,c.flip)({fallbackAxisSideDirection:`start`}),(0,c.shift)({padding:8})]}),{getReferenceProps:g,getFloatingProps:_}=(0,c.useInteractions)([(0,c.useClick)(h,{enabled:!r}),(0,c.useDismiss)(h),(0,c.useRole)(h,{role:`dialog`})]),v=e=>{n(e),u(!1)};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(`span`,{ref:f.setReference,...g(),className:`inline-flex`,children:e}),(0,s.jsx)(a.PickerSheet,{isOpen:l,onClose:()=>u(!1),useSheet:d,context:h,setFloating:f.setFloating,floatingStyles:m,getFloatingProps:_,desktopClassName:`z-floating w-80 rounded-2xl border border-border-subtle bg-bg-surface text-fg-default p-6 shadow-tooltip`,children:(0,s.jsx)(p,{initialValue:t,onApply:v,onClose:()=>u(!1)})})]})}function p({initialValue:e,onApply:t,onClose:n}){let r=g(e),[i,a]=(0,o.useState)(r),[c,u]=(0,o.useState)(r??new Date);return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(m,{month:c,onMonthChange:u,onPrev:()=>u((0,l.subMonths)(c,1)),onNext:()=>u((0,l.addMonths)(c,1)),selected:i,onDayClick:e=>a(e)}),(0,s.jsxs)(`div`,{className:`mt-6 flex items-center justify-end gap-2`,children:[(0,s.jsx)(`button`,{type:`button`,onClick:n,className:`cursor-pointer rounded-full bg-bg-subtle px-5 py-2 text-sm font-semibold text-fg-muted transition-colors hover:bg-bg-muted`,children:`닫기`}),(0,s.jsx)(`button`,{type:`button`,onClick:()=>{if(!i){n();return}t((0,l.format)(i,`yyyy-MM-dd`))},className:`cursor-pointer rounded-full bg-primary px-5 py-2 text-sm font-semibold text-fg-inverse transition-opacity hover:opacity-90`,children:`적용`})]})]})}function m({month:n,onMonthChange:r,onPrev:a,onNext:c,selected:f,onDayClick:p}){let[m,g]=(0,o.useState)(!1),_=(0,o.useMemo)(()=>(0,l.eachDayOfInterval)({start:(0,l.startOfWeek)((0,l.startOfMonth)(n),{weekStartsOn:0}),end:(0,l.endOfWeek)((0,l.endOfMonth)(n),{weekStartsOn:0})}),[n]),v=(0,o.useMemo)(()=>{let e=[];for(let t=-24;t<=d;t++)e.push((0,l.addMonths)((0,l.startOfMonth)(new Date),t));return e},[]);return(0,s.jsxs)(`div`,{className:`mx-auto flex w-full max-w-75 flex-col sm:w-65`,children:[(0,s.jsxs)(`div`,{className:`mb-4 flex items-center justify-between`,children:[(0,s.jsx)(h,{direction:`left`,onClick:a}),(0,s.jsxs)(`div`,{className:`relative flex flex-1 justify-center`,children:[(0,s.jsxs)(`button`,{type:`button`,onClick:()=>g(e=>!e),className:`flex cursor-pointer items-center gap-1 rounded px-3 py-1.5 text-sm font-semibold text-fg-default transition-colors hover:bg-bg-subtle`,children:[(0,l.format)(n,`yyyy. MM.`),(0,s.jsx)(t.ChevronDown,{className:`h-3.5 w-3.5 text-fg-subtle`})]}),m&&(0,s.jsx)(`div`,{className:`scrollbar-brand absolute top-full z-20 mt-1 max-h-60 w-35 overflow-y-auto rounded-lg border border-border-subtle bg-bg-surface py-1 shadow-overlay`,children:v.map(t=>(0,s.jsx)(`button`,{type:`button`,onClick:()=>{r(t),g(!1)},className:e.cn(`w-full cursor-pointer bg-bg-surface px-4 py-2 text-left text-sm transition-colors`,(0,l.isSameMonth)(t,n)?`bg-bg-muted font-semibold text-fg-default`:`text-fg-muted hover:bg-bg-subtle`),children:(0,l.format)(t,`yyyy. MM.`)},t.toISOString()))})]}),(0,s.jsx)(h,{direction:`right`,onClick:c})]}),(0,s.jsx)(`div`,{className:`mb-2 grid grid-cols-7`,children:[`일`,`월`,`화`,`수`,`목`,`금`,`토`].map(e=>(0,s.jsx)(`div`,{className:`py-1 text-center text-xs font-medium text-fg-subtle`,children:e},e))}),(0,s.jsx)(i.AnimatedHeight,{children:(0,s.jsx)(`div`,{className:`grid grid-cols-7 gap-y-1`,children:_.map(t=>{let i=(0,l.isSameMonth)(t,n),a=!!(f&&(0,l.isSameDay)(t,f));return(0,s.jsxs)(`button`,{type:`button`,onClick:()=>{i||r(t),p(t)},className:`group relative flex h-9 cursor-pointer items-center justify-center text-sm`,"aria-label":(0,l.format)(t,`yyyy년 M월 d일`,{locale:u.ko}),children:[a&&(0,s.jsx)(`span`,{className:`absolute left-1/2 top-1/2 h-9 w-9 -translate-x-1/2 -translate-y-1/2 rounded-full bg-primary`,"aria-hidden":!0}),(0,s.jsx)(`span`,{className:e.cn(`relative z-10`,!i&&`text-fg-disabled`,i&&!a&&`text-fg-default`,a&&`font-bold text-fg-inverse`),children:(0,l.format)(t,`d`)})]},t.toISOString())})})})]})}function h({direction:e,onClick:t}){return(0,s.jsx)(`button`,{type:`button`,onClick:t,className:`flex h-8 w-8 cursor-pointer items-center justify-center rounded-md border border-border-subtle text-fg-muted transition-colors hover:bg-bg-subtle`,"aria-label":e===`left`?`이전 달`:`다음 달`,children:(0,s.jsx)(e===`left`?n.ChevronLeft:r.ChevronRight,{className:`h-4 w-4`})})}function g(e){if(!e)return null;let t=(0,l.parseISO)(e);return(0,l.isValid)(t)?t:null}exports.DatePicker=f,exports.DatePickerBody=p;
@@ -9,6 +9,7 @@ interface DatePickerProps {
9
9
  /**
10
10
  * true면 모바일에서도 자체 바텀시트 대신 데스크톱과 동일한 popover로 표시.
11
11
  * 호출부가 이미 바텀시트(예: SearchBox 모바일 시트) 안에 있어 시트 두 개가 겹치는 걸 피할 때 사용.
12
+ * 생략하면 Modal 안에서는 자동으로 popover를 쓰며, false를 명시하면 바텀시트를 유지한다.
12
13
  */
13
14
  disableMobileSheet?: boolean;
14
15
  }