@gunkin/uiify 0.0.25-alpha → 0.0.26-alpha

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 (336) hide show
  1. package/agents/reference/components/accordion.md +4 -4
  2. package/agents/reference/components/alert-modal.md +10 -10
  3. package/agents/reference/components/alert.md +1 -1
  4. package/agents/reference/components/aspect-ratio.md +1 -1
  5. package/agents/reference/components/avatar.md +2 -2
  6. package/agents/reference/components/breadcrumb.md +9 -10
  7. package/agents/reference/components/candle-chart.md +35 -35
  8. package/agents/reference/components/carousel.md +10 -14
  9. package/agents/reference/components/collapsible.md +3 -3
  10. package/agents/reference/components/color-picker.md +6 -6
  11. package/agents/reference/components/combobox.md +7 -17
  12. package/agents/reference/components/context-menu.md +5 -26
  13. package/agents/reference/components/date-picker.md +2 -1
  14. package/agents/reference/components/drawer.md +17 -31
  15. package/agents/reference/components/dropdown-menu.md +2 -3
  16. package/agents/reference/components/field.md +11 -11
  17. package/agents/reference/components/form-error-summary.md +4 -4
  18. package/agents/reference/components/input-group.md +1 -0
  19. package/agents/reference/components/input.md +1 -0
  20. package/agents/reference/components/line-chart.md +29 -29
  21. package/agents/reference/components/modal.md +13 -15
  22. package/agents/reference/components/number-field.md +1 -1
  23. package/agents/reference/components/otp-input.md +2 -1
  24. package/agents/reference/components/pagination.md +7 -8
  25. package/agents/reference/components/rating.md +1 -1
  26. package/agents/reference/components/segmented-control.md +1 -0
  27. package/agents/reference/components/select.md +1 -0
  28. package/agents/reference/components/slider.md +4 -4
  29. package/agents/reference/components/spinner.md +1 -1
  30. package/agents/reference/components/table.md +1 -1
  31. package/agents/reference/components/tabs.md +6 -6
  32. package/agents/reference/components/tags-input.md +5 -12
  33. package/agents/reference/components/toast.md +8 -15
  34. package/agents/reference/components/toggle.md +4 -3
  35. package/agents/reference/components/virtual-scroll.md +4 -5
  36. package/agents/reference/elements/choice.md +3 -3
  37. package/agents/reference/elements/details.md +2 -2
  38. package/agents/reference/elements/popover.md +3 -3
  39. package/dist/components/accordion/Accordion.d.ts.map +1 -1
  40. package/dist/components/accordion/Accordion.js +20 -46
  41. package/dist/components/accordion/Accordion.js.map +1 -1
  42. package/dist/components/accordion/types.d.ts +6 -15
  43. package/dist/components/accordion/types.d.ts.map +1 -1
  44. package/dist/components/alert/Alert.d.ts.map +1 -1
  45. package/dist/components/alert/Alert.js +5 -14
  46. package/dist/components/alert/Alert.js.map +1 -1
  47. package/dist/components/alert/types.d.ts +3 -7
  48. package/dist/components/alert/types.d.ts.map +1 -1
  49. package/dist/components/alert-modal/AlertModal.d.ts.map +1 -1
  50. package/dist/components/alert-modal/AlertModal.js +28 -137
  51. package/dist/components/alert-modal/AlertModal.js.map +1 -1
  52. package/dist/components/alert-modal/AlertModalParts.d.ts.map +1 -1
  53. package/dist/components/alert-modal/AlertModalParts.js +4 -37
  54. package/dist/components/alert-modal/AlertModalParts.js.map +1 -1
  55. package/dist/components/alert-modal/types.d.ts +15 -33
  56. package/dist/components/alert-modal/types.d.ts.map +1 -1
  57. package/dist/components/aspect-ratio/AspectRatio.d.ts.map +1 -1
  58. package/dist/components/aspect-ratio/AspectRatio.js +4 -12
  59. package/dist/components/aspect-ratio/AspectRatio.js.map +1 -1
  60. package/dist/components/aspect-ratio/types.d.ts +3 -6
  61. package/dist/components/aspect-ratio/types.d.ts.map +1 -1
  62. package/dist/components/avatar/Avatar.d.ts.map +1 -1
  63. package/dist/components/avatar/Avatar.js +4 -21
  64. package/dist/components/avatar/Avatar.js.map +1 -1
  65. package/dist/components/avatar/types.d.ts +4 -14
  66. package/dist/components/avatar/types.d.ts.map +1 -1
  67. package/dist/components/breadcrumb/Breadcrumb.d.ts.map +1 -1
  68. package/dist/components/breadcrumb/Breadcrumb.js +43 -123
  69. package/dist/components/breadcrumb/Breadcrumb.js.map +1 -1
  70. package/dist/components/breadcrumb/types.d.ts +12 -35
  71. package/dist/components/breadcrumb/types.d.ts.map +1 -1
  72. package/dist/components/candle-chart/CandleChart.d.ts.map +1 -1
  73. package/dist/components/candle-chart/CandleChart.js +122 -186
  74. package/dist/components/candle-chart/CandleChart.js.map +1 -1
  75. package/dist/components/candle-chart/client/CandleChartClient.d.ts.map +1 -1
  76. package/dist/components/candle-chart/client/CandleChartClient.js +8 -15
  77. package/dist/components/candle-chart/client/CandleChartClient.js.map +1 -1
  78. package/dist/components/candle-chart/types.d.ts +42 -116
  79. package/dist/components/candle-chart/types.d.ts.map +1 -1
  80. package/dist/components/carousel/CarouselMarkup.d.ts.map +1 -1
  81. package/dist/components/carousel/CarouselMarkup.js +55 -142
  82. package/dist/components/carousel/CarouselMarkup.js.map +1 -1
  83. package/dist/components/carousel/types.d.ts +13 -80
  84. package/dist/components/carousel/types.d.ts.map +1 -1
  85. package/dist/components/collapsible/Collapsible.d.ts +1 -5
  86. package/dist/components/collapsible/Collapsible.d.ts.map +1 -1
  87. package/dist/components/collapsible/Collapsible.js +3 -33
  88. package/dist/components/collapsible/Collapsible.js.map +1 -1
  89. package/dist/components/collapsible/types.d.ts +4 -18
  90. package/dist/components/collapsible/types.d.ts.map +1 -1
  91. package/dist/components/color-picker/ColorPicker.d.ts.map +1 -1
  92. package/dist/components/color-picker/ColorPicker.js +28 -123
  93. package/dist/components/color-picker/ColorPicker.js.map +1 -1
  94. package/dist/components/color-picker/types.d.ts +11 -30
  95. package/dist/components/color-picker/types.d.ts.map +1 -1
  96. package/dist/components/combobox/Combobox.d.ts.map +1 -1
  97. package/dist/components/combobox/Combobox.js +30 -23
  98. package/dist/components/combobox/Combobox.js.map +1 -1
  99. package/dist/components/combobox/types.d.ts +9 -29
  100. package/dist/components/combobox/types.d.ts.map +1 -1
  101. package/dist/components/context-menu/ContextMenu.d.ts.map +1 -1
  102. package/dist/components/context-menu/ContextMenu.js +30 -53
  103. package/dist/components/context-menu/ContextMenu.js.map +1 -1
  104. package/dist/components/context-menu/types.d.ts +6 -31
  105. package/dist/components/context-menu/types.d.ts.map +1 -1
  106. package/dist/components/date-picker/DatePicker.d.ts +1 -1
  107. package/dist/components/date-picker/DatePicker.d.ts.map +1 -1
  108. package/dist/components/date-picker/DatePicker.js +2 -1
  109. package/dist/components/date-picker/DatePicker.js.map +1 -1
  110. package/dist/components/date-picker/types.d.ts +4 -1
  111. package/dist/components/date-picker/types.d.ts.map +1 -1
  112. package/dist/components/drawer/Drawer.d.ts.map +1 -1
  113. package/dist/components/drawer/Drawer.js +12 -12
  114. package/dist/components/drawer/Drawer.js.map +1 -1
  115. package/dist/components/drawer/DrawerNative.d.ts.map +1 -1
  116. package/dist/components/drawer/DrawerNative.js +47 -252
  117. package/dist/components/drawer/DrawerNative.js.map +1 -1
  118. package/dist/components/drawer/types.d.ts +25 -30
  119. package/dist/components/drawer/types.d.ts.map +1 -1
  120. package/dist/components/dropdown-menu/DropdownMenu.d.ts.map +1 -1
  121. package/dist/components/dropdown-menu/DropdownMenu.js +30 -27
  122. package/dist/components/dropdown-menu/DropdownMenu.js.map +1 -1
  123. package/dist/components/dropdown-menu/DropdownMenuBar.d.ts.map +1 -1
  124. package/dist/components/dropdown-menu/DropdownMenuBar.js +3 -7
  125. package/dist/components/dropdown-menu/DropdownMenuBar.js.map +1 -1
  126. package/dist/components/dropdown-menu/types.d.ts +2 -5
  127. package/dist/components/dropdown-menu/types.d.ts.map +1 -1
  128. package/dist/components/field/Field.js +7 -7
  129. package/dist/components/field/Field.js.map +1 -1
  130. package/dist/components/field/types.d.ts +11 -11
  131. package/dist/components/field/types.d.ts.map +1 -1
  132. package/dist/components/form-error-summary/FormErrorSummary.d.ts.map +1 -1
  133. package/dist/components/form-error-summary/FormErrorSummary.js +20 -34
  134. package/dist/components/form-error-summary/FormErrorSummary.js.map +1 -1
  135. package/dist/components/form-error-summary/types.d.ts +6 -16
  136. package/dist/components/form-error-summary/types.d.ts.map +1 -1
  137. package/dist/components/hover-card/HoverCard.d.ts.map +1 -1
  138. package/dist/components/hover-card/HoverCard.js +9 -9
  139. package/dist/components/hover-card/HoverCard.js.map +1 -1
  140. package/dist/components/input/Input.d.ts.map +1 -1
  141. package/dist/components/input/Input.js +2 -0
  142. package/dist/components/input/Input.js.map +1 -1
  143. package/dist/components/input/types.d.ts +3 -0
  144. package/dist/components/input/types.d.ts.map +1 -1
  145. package/dist/components/input-group/InputGroup.d.ts.map +1 -1
  146. package/dist/components/input-group/InputGroup.js +2 -1
  147. package/dist/components/input-group/InputGroup.js.map +1 -1
  148. package/dist/components/input-group/types.d.ts +3 -0
  149. package/dist/components/input-group/types.d.ts.map +1 -1
  150. package/dist/components/internal/chart-scrollbar/use-scrollbar-reserve.d.ts +2 -2
  151. package/dist/components/internal/chart-scrollbar/use-scrollbar-reserve.d.ts.map +1 -1
  152. package/dist/components/internal/chart-scrollbar/use-scrollbar-reserve.js +11 -3
  153. package/dist/components/internal/chart-scrollbar/use-scrollbar-reserve.js.map +1 -1
  154. package/dist/components/internal/choice-family/ChoiceGroup.d.ts.map +1 -1
  155. package/dist/components/internal/choice-family/ChoiceGroup.js +14 -51
  156. package/dist/components/internal/choice-family/ChoiceGroup.js.map +1 -1
  157. package/dist/components/internal/choice-family/types.d.ts +8 -40
  158. package/dist/components/internal/choice-family/types.d.ts.map +1 -1
  159. package/dist/components/internal/control-size/types.d.ts +3 -0
  160. package/dist/components/internal/control-size/types.d.ts.map +1 -0
  161. package/dist/components/internal/control-size/types.js +1 -0
  162. package/dist/components/internal/control-size/types.js.map +1 -0
  163. package/dist/components/internal/live-chart/types.d.ts +3 -1
  164. package/dist/components/internal/live-chart/types.d.ts.map +1 -1
  165. package/dist/components/internal/live-chart/use-live-chart-window.d.ts.map +1 -1
  166. package/dist/components/internal/live-chart/use-live-chart-window.js +21 -5
  167. package/dist/components/internal/live-chart/use-live-chart-window.js.map +1 -1
  168. package/dist/components/internal/menu/menu-parts.d.ts.map +1 -1
  169. package/dist/components/internal/menu/menu-parts.js +3 -3
  170. package/dist/components/internal/menu/menu-parts.js.map +1 -1
  171. package/dist/components/internal/native-check-control/NativeCheckControl.d.ts.map +1 -1
  172. package/dist/components/internal/native-check-control/NativeCheckControl.js +8 -32
  173. package/dist/components/internal/native-check-control/NativeCheckControl.js.map +1 -1
  174. package/dist/components/internal/native-check-control/types.d.ts +4 -18
  175. package/dist/components/internal/native-check-control/types.d.ts.map +1 -1
  176. package/dist/components/line-chart/LineChart.d.ts.map +1 -1
  177. package/dist/components/line-chart/LineChart.js +134 -208
  178. package/dist/components/line-chart/LineChart.js.map +1 -1
  179. package/dist/components/line-chart/client/LineChartClient.d.ts.map +1 -1
  180. package/dist/components/line-chart/client/LineChartClient.js +8 -15
  181. package/dist/components/line-chart/client/LineChartClient.js.map +1 -1
  182. package/dist/components/line-chart/types.d.ts +36 -103
  183. package/dist/components/line-chart/types.d.ts.map +1 -1
  184. package/dist/components/modal/Modal.d.ts.map +1 -1
  185. package/dist/components/modal/Modal.js +34 -115
  186. package/dist/components/modal/Modal.js.map +1 -1
  187. package/dist/components/modal/ModalAnatomy.js +6 -6
  188. package/dist/components/modal/ModalAnatomy.js.map +1 -1
  189. package/dist/components/modal/ModalParts.js +1 -1
  190. package/dist/components/modal/ModalParts.js.map +1 -1
  191. package/dist/components/modal/client/ModalClientContent.d.ts.map +1 -1
  192. package/dist/components/modal/client/ModalClientContent.js +2 -2
  193. package/dist/components/modal/client/ModalClientContent.js.map +1 -1
  194. package/dist/components/modal/types.d.ts +19 -19
  195. package/dist/components/modal/types.d.ts.map +1 -1
  196. package/dist/components/number-field/NumberField.d.ts.map +1 -1
  197. package/dist/components/number-field/NumberField.js +13 -11
  198. package/dist/components/number-field/NumberField.js.map +1 -1
  199. package/dist/components/number-field/types.d.ts +1 -1
  200. package/dist/components/number-field/types.d.ts.map +1 -1
  201. package/dist/components/otp-input/OtpInput.d.ts.map +1 -1
  202. package/dist/components/otp-input/OtpInput.js +9 -9
  203. package/dist/components/otp-input/OtpInput.js.map +1 -1
  204. package/dist/components/otp-input/types.d.ts +4 -1
  205. package/dist/components/otp-input/types.d.ts.map +1 -1
  206. package/dist/components/pagination/Pagination.d.ts.map +1 -1
  207. package/dist/components/pagination/Pagination.js +26 -69
  208. package/dist/components/pagination/Pagination.js.map +1 -1
  209. package/dist/components/pagination/PaginationShell.d.ts.map +1 -1
  210. package/dist/components/pagination/PaginationShell.js +5 -6
  211. package/dist/components/pagination/PaginationShell.js.map +1 -1
  212. package/dist/components/pagination/types.d.ts +9 -32
  213. package/dist/components/pagination/types.d.ts.map +1 -1
  214. package/dist/components/rating/types.d.ts +1 -5
  215. package/dist/components/rating/types.d.ts.map +1 -1
  216. package/dist/components/segmented-control/SegmentedControl.d.ts +1 -1
  217. package/dist/components/segmented-control/SegmentedControl.d.ts.map +1 -1
  218. package/dist/components/segmented-control/SegmentedControl.js +4 -2
  219. package/dist/components/segmented-control/SegmentedControl.js.map +1 -1
  220. package/dist/components/segmented-control/client/SegmentedControlClient.d.ts +1 -1
  221. package/dist/components/segmented-control/client/SegmentedControlClient.d.ts.map +1 -1
  222. package/dist/components/segmented-control/client/SegmentedControlClient.js +4 -2
  223. package/dist/components/segmented-control/client/SegmentedControlClient.js.map +1 -1
  224. package/dist/components/segmented-control/types.d.ts +3 -0
  225. package/dist/components/segmented-control/types.d.ts.map +1 -1
  226. package/dist/components/select/Select.d.ts.map +1 -1
  227. package/dist/components/select/Select.js +2 -0
  228. package/dist/components/select/Select.js.map +1 -1
  229. package/dist/components/select/types.d.ts +3 -0
  230. package/dist/components/select/types.d.ts.map +1 -1
  231. package/dist/components/slider/Slider.d.ts.map +1 -1
  232. package/dist/components/slider/Slider.js +12 -7
  233. package/dist/components/slider/Slider.js.map +1 -1
  234. package/dist/components/slider/client/SliderClient.d.ts.map +1 -1
  235. package/dist/components/slider/client/SliderClient.js +53 -100
  236. package/dist/components/slider/client/SliderClient.js.map +1 -1
  237. package/dist/components/slider/types.d.ts +8 -38
  238. package/dist/components/slider/types.d.ts.map +1 -1
  239. package/dist/components/spinner/Spinner.d.ts.map +1 -1
  240. package/dist/components/spinner/Spinner.js +2 -10
  241. package/dist/components/spinner/Spinner.js.map +1 -1
  242. package/dist/components/spinner/types.d.ts +3 -6
  243. package/dist/components/spinner/types.d.ts.map +1 -1
  244. package/dist/components/table/client/TableColumnHeader.d.ts.map +1 -1
  245. package/dist/components/table/client/TableColumnHeader.js +1 -15
  246. package/dist/components/table/client/TableColumnHeader.js.map +1 -1
  247. package/dist/components/table/types.d.ts +2 -6
  248. package/dist/components/table/types.d.ts.map +1 -1
  249. package/dist/components/tabs/Tabs.d.ts.map +1 -1
  250. package/dist/components/tabs/Tabs.js +9 -43
  251. package/dist/components/tabs/Tabs.js.map +1 -1
  252. package/dist/components/tabs/types.d.ts +8 -21
  253. package/dist/components/tabs/types.d.ts.map +1 -1
  254. package/dist/components/tags-input/TagsInput.d.ts.map +1 -1
  255. package/dist/components/tags-input/TagsInput.js +16 -27
  256. package/dist/components/tags-input/TagsInput.js.map +1 -1
  257. package/dist/components/tags-input/types.d.ts +8 -23
  258. package/dist/components/tags-input/types.d.ts.map +1 -1
  259. package/dist/components/toast/Toast.d.ts.map +1 -1
  260. package/dist/components/toast/Toast.js +13 -62
  261. package/dist/components/toast/Toast.js.map +1 -1
  262. package/dist/components/toast/ToastElements.d.ts.map +1 -1
  263. package/dist/components/toast/ToastElements.js +20 -57
  264. package/dist/components/toast/ToastElements.js.map +1 -1
  265. package/dist/components/toast/types.d.ts +9 -36
  266. package/dist/components/toast/types.d.ts.map +1 -1
  267. package/dist/components/toggle/Toggle.d.ts +1 -1
  268. package/dist/components/toggle/Toggle.d.ts.map +1 -1
  269. package/dist/components/toggle/Toggle.js +36 -61
  270. package/dist/components/toggle/Toggle.js.map +1 -1
  271. package/dist/components/toggle/types.d.ts +5 -24
  272. package/dist/components/toggle/types.d.ts.map +1 -1
  273. package/dist/components/tooltip/Tooltip.d.ts.map +1 -1
  274. package/dist/components/tooltip/Tooltip.js +4 -4
  275. package/dist/components/tooltip/Tooltip.js.map +1 -1
  276. package/dist/components/virtual-scroll/VirtualScroll.d.ts.map +1 -1
  277. package/dist/components/virtual-scroll/VirtualScroll.js +65 -43
  278. package/dist/components/virtual-scroll/VirtualScroll.js.map +1 -1
  279. package/dist/components/virtual-scroll/VirtualScrollRowShell.js +2 -2
  280. package/dist/components/virtual-scroll/VirtualScrollRowShell.js.map +1 -1
  281. package/dist/components/virtual-scroll/types.d.ts +7 -20
  282. package/dist/components/virtual-scroll/types.d.ts.map +1 -1
  283. package/dist/components/virtual-scroll/types.js.map +1 -1
  284. package/dist/components/virtual-scroll/virtual-scroll-scroll-sync.d.ts +3 -0
  285. package/dist/components/virtual-scroll/virtual-scroll-scroll-sync.d.ts.map +1 -1
  286. package/dist/components/virtual-scroll/virtual-scroll-scroll-sync.js +11 -2
  287. package/dist/components/virtual-scroll/virtual-scroll-scroll-sync.js.map +1 -1
  288. package/dist/core/class-names.d.ts +3 -0
  289. package/dist/core/class-names.d.ts.map +1 -0
  290. package/dist/core/class-names.js +7 -0
  291. package/dist/core/class-names.js.map +1 -0
  292. package/dist/core/part-names.d.ts +8 -0
  293. package/dist/core/part-names.d.ts.map +1 -0
  294. package/dist/core/part-names.js +111 -0
  295. package/dist/core/part-names.js.map +1 -0
  296. package/dist/core/polymorphic.d.ts +10 -3
  297. package/dist/core/polymorphic.d.ts.map +1 -1
  298. package/dist/core/render-native-invoker.d.ts +1 -0
  299. package/dist/core/render-native-invoker.d.ts.map +1 -1
  300. package/dist/core/render-native-invoker.js +6 -6
  301. package/dist/core/render-native-invoker.js.map +1 -1
  302. package/dist/core/roving-focus.d.ts +2 -2
  303. package/dist/core/roving-focus.d.ts.map +1 -1
  304. package/dist/core/roving-focus.js +6 -7
  305. package/dist/core/roving-focus.js.map +1 -1
  306. package/dist/core/slot-props.d.ts +9 -7
  307. package/dist/core/slot-props.d.ts.map +1 -1
  308. package/dist/core/slot-props.js +4 -14
  309. package/dist/core/slot-props.js.map +1 -1
  310. package/dist/elements/choice/Choice.d.ts.map +1 -1
  311. package/dist/elements/choice/Choice.js +5 -42
  312. package/dist/elements/choice/Choice.js.map +1 -1
  313. package/dist/elements/choice/types.d.ts +4 -11
  314. package/dist/elements/choice/types.d.ts.map +1 -1
  315. package/dist/elements/details/Details.d.ts.map +1 -1
  316. package/dist/elements/details/Details.js +4 -5
  317. package/dist/elements/details/Details.js.map +1 -1
  318. package/dist/elements/details/types.d.ts +3 -3
  319. package/dist/elements/details/types.d.ts.map +1 -1
  320. package/dist/elements/dialog/Dialog.d.ts.map +1 -1
  321. package/dist/elements/dialog/Dialog.js +1 -1
  322. package/dist/elements/dialog/Dialog.js.map +1 -1
  323. package/dist/elements/invoker/Invoker.js +3 -3
  324. package/dist/elements/invoker/Invoker.js.map +1 -1
  325. package/dist/elements/popover/Popover.d.ts.map +1 -1
  326. package/dist/elements/popover/Popover.js +3 -3
  327. package/dist/elements/popover/Popover.js.map +1 -1
  328. package/dist/elements/popover/types.d.ts +6 -4
  329. package/dist/elements/popover/types.d.ts.map +1 -1
  330. package/dist/styles/index.css +1 -1
  331. package/dist/styles/tailwind.css +2 -2
  332. package/dist/styles/tokens.css +1 -1
  333. package/package.json +1 -1
  334. package/skills/uiify/references/elements/aspect-ratio.md +1 -1
  335. package/skills/uiify/references/elements/field.md +1 -1
  336. package/skills/uiify/references/elements/toggle.md +1 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/field/Field.tsx"],"sourcesContent":["import type { ElementType, ReactElement } from \"react\";\nimport { useRenderElement } from \"@gunkin/uiify/core/render\";\nimport { getFieldIds } from \"./field-ids.js\";\nimport type {\n FieldRootProps,\n FieldControlProps,\n FieldLabelProps,\n FieldDescriptionProps,\n FieldErrorProps,\n} from \"./types.js\";\n\nexport function FieldRoot<TAs extends ElementType = \"div\">(\n props: FieldRootProps<TAs>,\n): ReactElement | null {\n const {\n as,\n render,\n id,\n invalid = false,\n required = false,\n disabled = false,\n // Accepted for API compatibility but not rendered — a bare `name` isn't\n // meaningful on the wrapper element itself, only on the actual control.\n name: _name,\n ...consumerProps\n } = props as FieldRootProps<ElementType>;\n\n return useRenderElement({\n as,\n defaultTag: \"div\",\n props: {\n ...consumerProps,\n \"data-disabled\": disabled ? \"\" : undefined,\n \"data-invalid\": invalid ? \"\" : undefined,\n \"data-required\": required ? \"\" : undefined,\n \"data-uiify-field\": \"\",\n id,\n },\n render,\n state: { disabled, invalid, required, id },\n });\n}\n\nexport function FieldLabel(props: FieldLabelProps): ReactElement | null {\n const {\n className,\n children,\n fieldId,\n disabled = false,\n required = false,\n ...consumerProps\n } = props;\n const { controlId, labelId } = getFieldIds(fieldId);\n\n return useRenderElement({\n defaultTag: \"label\",\n props: {\n ...consumerProps,\n id: labelId,\n htmlFor: controlId,\n \"data-part\": \"label\",\n \"data-disabled\": disabled ? \"\" : undefined,\n \"data-required\": required ? \"\" : undefined,\n ...(className ? { className } : {}),\n children,\n },\n state: { disabled, required },\n });\n}\n\nexport function FieldControl<TAs extends ElementType = \"div\">(\n props: FieldControlProps<TAs>,\n): ReactElement | null {\n const {\n as,\n render,\n fieldId,\n disabled = false,\n invalid = false,\n required = false,\n ...consumerProps\n } = props as FieldControlProps<ElementType>;\n const { controlId, descriptionId, errorId, labelId } = getFieldIds(fieldId);\n const describedBy = [descriptionId, invalid ? errorId : undefined].filter(Boolean).join(\" \");\n const controlIdentity =\n as === \"input\"\n ? { \"data-uiify-input\": \"\" }\n : as === \"textarea\"\n ? { \"data-uiify-textarea\": \"\" }\n : {};\n\n return useRenderElement({\n as,\n defaultTag: \"div\",\n props: {\n ...consumerProps,\n ...controlIdentity,\n ...(as === \"input\" || as === \"textarea\" || as === \"select\"\n ? { disabled: disabled || undefined, required: required || undefined }\n : (as !== undefined && typeof as !== \"string\") || render\n ? { disabled, required }\n : {}),\n id: controlId,\n \"data-part\": \"control\",\n \"aria-labelledby\": labelId,\n \"aria-describedby\": describedBy || undefined,\n \"aria-invalid\": invalid || undefined,\n \"aria-required\": required || undefined,\n \"data-disabled\": disabled ? \"\" : undefined,\n \"data-invalid\": invalid ? \"\" : undefined,\n \"data-required\": required ? \"\" : undefined,\n },\n render,\n state: { disabled, invalid, required },\n });\n}\n\nexport function FieldDescription(props: FieldDescriptionProps): ReactElement | null {\n const { className, children, fieldId, disabled = false, ...consumerProps } = props;\n const { descriptionId } = getFieldIds(fieldId);\n\n return useRenderElement({\n defaultTag: \"p\",\n props: {\n ...consumerProps,\n id: descriptionId,\n \"data-part\": \"description\",\n \"data-disabled\": disabled ? \"\" : undefined,\n ...(className ? { className } : {}),\n children,\n },\n state: { disabled },\n });\n}\n\nexport function FieldError(props: FieldErrorProps): ReactElement | null {\n const { className, children, fieldId, invalid = false, ...consumerProps } = props;\n const { errorId } = getFieldIds(fieldId);\n\n const element = useRenderElement({\n defaultTag: \"p\",\n props: {\n ...consumerProps,\n id: errorId,\n \"data-part\": \"error\",\n role: \"alert\",\n \"data-invalid\": \"\",\n ...(className ? { className } : {}),\n children,\n },\n state: { invalid },\n });\n\n if (!invalid) return null;\n\n return element;\n}\n\nexport const Field = {\n Root: FieldRoot,\n Label: FieldLabel,\n Control: FieldControl,\n Description: FieldDescription,\n Error: FieldError,\n};\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../../src/components/field/Field.tsx"],"sourcesContent":["import type { ElementType, ReactElement } from \"react\";\nimport { useRenderElement } from \"@gunkin/uiify/core/render\";\nimport { getFieldIds } from \"./field-ids.js\";\nimport type {\n FieldRootProps,\n FieldControlProps,\n FieldLabelProps,\n FieldDescriptionProps,\n FieldErrorProps,\n} from \"./types.js\";\n\nexport function FieldRoot<TAs extends ElementType = \"div\">(\n props: FieldRootProps<TAs>,\n): ReactElement | null {\n const {\n as,\n render,\n id,\n invalid = false,\n required = false,\n disabled = false,\n // Accepted for API compatibility but not rendered — a bare `name` isn't\n // meaningful on the wrapper element itself, only on the actual control.\n name: _name,\n ...consumerProps\n } = props as FieldRootProps<ElementType>;\n\n return useRenderElement({\n as,\n defaultTag: \"div\",\n props: {\n \"data-disabled\": disabled ? \"\" : undefined,\n \"data-invalid\": invalid ? \"\" : undefined,\n \"data-required\": required ? \"\" : undefined,\n \"data-uiify-field\": \"\",\n id,\n ...consumerProps,\n },\n render,\n state: { disabled, invalid, required, id },\n });\n}\n\nexport function FieldLabel(props: FieldLabelProps): ReactElement | null {\n const {\n className,\n children,\n fieldId,\n disabled = false,\n required = false,\n ...consumerProps\n } = props;\n const { controlId, labelId } = getFieldIds(fieldId);\n\n return useRenderElement({\n defaultTag: \"label\",\n props: {\n id: labelId,\n htmlFor: controlId,\n \"data-part\": \"label\",\n \"data-disabled\": disabled ? \"\" : undefined,\n \"data-required\": required ? \"\" : undefined,\n ...consumerProps,\n ...(className ? { className } : {}),\n children,\n },\n state: { disabled, required },\n });\n}\n\nexport function FieldControl<TAs extends ElementType = \"div\">(\n props: FieldControlProps<TAs>,\n): ReactElement | null {\n const {\n as,\n render,\n fieldId,\n disabled = false,\n invalid = false,\n required = false,\n ...consumerProps\n } = props as FieldControlProps<ElementType>;\n const { controlId, descriptionId, errorId, labelId } = getFieldIds(fieldId);\n const describedBy = [descriptionId, invalid ? errorId : undefined].filter(Boolean).join(\" \");\n const controlIdentity =\n as === \"input\"\n ? { \"data-uiify-input\": \"\" }\n : as === \"textarea\"\n ? { \"data-uiify-textarea\": \"\" }\n : {};\n\n return useRenderElement({\n as,\n defaultTag: \"div\",\n props: {\n ...controlIdentity,\n ...(as === \"input\" || as === \"textarea\" || as === \"select\"\n ? { disabled: disabled || undefined, required: required || undefined }\n : (as !== undefined && typeof as !== \"string\") || render\n ? { disabled, required }\n : {}),\n id: controlId,\n \"data-part\": \"control\",\n \"aria-labelledby\": labelId,\n \"aria-describedby\": describedBy || undefined,\n \"aria-invalid\": invalid || undefined,\n \"aria-required\": required || undefined,\n \"data-disabled\": disabled ? \"\" : undefined,\n \"data-invalid\": invalid ? \"\" : undefined,\n \"data-required\": required ? \"\" : undefined,\n ...consumerProps,\n },\n render,\n state: { disabled, invalid, required },\n });\n}\n\nexport function FieldDescription(props: FieldDescriptionProps): ReactElement | null {\n const { className, children, fieldId, disabled = false, ...consumerProps } = props;\n const { descriptionId } = getFieldIds(fieldId);\n\n return useRenderElement({\n defaultTag: \"p\",\n props: {\n id: descriptionId,\n \"data-part\": \"description\",\n \"data-disabled\": disabled ? \"\" : undefined,\n ...consumerProps,\n ...(className ? { className } : {}),\n children,\n },\n state: { disabled },\n });\n}\n\nexport function FieldError(props: FieldErrorProps): ReactElement | null {\n const { className, children, fieldId, invalid = false, ...consumerProps } = props;\n const { errorId } = getFieldIds(fieldId);\n\n const element = useRenderElement({\n defaultTag: \"p\",\n props: {\n id: errorId,\n \"data-part\": \"error\",\n role: \"alert\",\n \"data-invalid\": \"\",\n ...consumerProps,\n ...(className ? { className } : {}),\n children,\n },\n state: { invalid },\n });\n\n if (!invalid) return null;\n\n return element;\n}\n\nexport const Field = {\n Root: FieldRoot,\n Label: FieldLabel,\n Control: FieldControl,\n Description: FieldDescription,\n Error: FieldError,\n};\n"],"mappings":"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","names":[]}
@@ -3,9 +3,9 @@ import type { RenderableProps } from "@gunkin/uiify/core/render";
3
3
  export interface FieldRootOwnProps {
4
4
  /** Stable id for deterministic label/control/error wiring. Required. */
5
5
  readonly id: string;
6
- readonly invalid?: boolean;
7
- readonly required?: boolean;
8
- readonly disabled?: boolean;
6
+ readonly invalid?: boolean | undefined;
7
+ readonly required?: boolean | undefined;
8
+ readonly disabled?: boolean | undefined;
9
9
  readonly name?: string;
10
10
  }
11
11
  export type FieldRootProps<TAs extends ElementType = "div"> = RenderableProps<TAs, FieldRootOwnProps, FieldRootOwnProps, HTMLElement>;
@@ -15,14 +15,14 @@ export interface FieldPartOwnProps {
15
15
  readonly fieldId: string;
16
16
  }
17
17
  export interface FieldLabelOwnProps extends FieldPartOwnProps {
18
- readonly disabled?: boolean;
19
- readonly required?: boolean;
18
+ readonly disabled?: boolean | undefined;
19
+ readonly required?: boolean | undefined;
20
20
  }
21
- export type FieldLabelProps = FieldLabelOwnProps & Omit<ComponentPropsWithRef<"label">, "htmlFor" | keyof FieldLabelOwnProps>;
21
+ export type FieldLabelProps = FieldLabelOwnProps & Omit<ComponentPropsWithRef<"label">, keyof FieldLabelOwnProps>;
22
22
  export interface FieldControlOwnProps extends FieldPartOwnProps {
23
- readonly disabled?: boolean;
24
- readonly invalid?: boolean;
25
- readonly required?: boolean;
23
+ readonly disabled?: boolean | undefined;
24
+ readonly invalid?: boolean | undefined;
25
+ readonly required?: boolean | undefined;
26
26
  }
27
27
  export type FieldControlProps<TAs extends ElementType = "div"> = RenderableProps<TAs, FieldControlOwnProps, {
28
28
  disabled: boolean;
@@ -30,11 +30,11 @@ export type FieldControlProps<TAs extends ElementType = "div"> = RenderableProps
30
30
  required: boolean;
31
31
  }, HTMLElement>;
32
32
  export interface FieldDescriptionOwnProps extends FieldPartOwnProps {
33
- readonly disabled?: boolean;
33
+ readonly disabled?: boolean | undefined;
34
34
  }
35
35
  export type FieldDescriptionProps = FieldDescriptionOwnProps & Omit<ComponentPropsWithRef<"p">, keyof FieldDescriptionOwnProps>;
36
36
  export interface FieldErrorOwnProps extends FieldPartOwnProps {
37
- readonly invalid?: boolean;
37
+ readonly invalid?: boolean | undefined;
38
38
  }
39
39
  export type FieldErrorProps = FieldErrorOwnProps & Omit<ComponentPropsWithRef<"p">, keyof FieldErrorOwnProps>;
40
40
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/field/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAChE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAEjE,MAAM,WAAW,iBAAiB;IAChC,wEAAwE;IACxE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,MAAM,cAAc,CAAC,GAAG,SAAS,WAAW,GAAG,KAAK,IAAI,eAAe,CAC3E,GAAG,EACH,iBAAiB,EACjB,iBAAiB,EACjB,WAAW,CACZ,CAAC;AAEF;0EAC0E;AAC1E,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,kBAAmB,SAAQ,iBAAiB;IAC3D,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,MAAM,MAAM,eAAe,GAAG,kBAAkB,GAC9C,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,EAAE,SAAS,GAAG,MAAM,kBAAkB,CAAC,CAAC;AAE7E,MAAM,WAAW,oBAAqB,SAAQ,iBAAiB;IAC7D,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,MAAM,MAAM,iBAAiB,CAAC,GAAG,SAAS,WAAW,GAAG,KAAK,IAAI,eAAe,CAC9E,GAAG,EACH,oBAAoB,EACpB;IAAE,QAAQ,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAAE,EAC1D,WAAW,CACZ,CAAC;AAEF,MAAM,WAAW,wBAAyB,SAAQ,iBAAiB;IACjE,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,MAAM,MAAM,qBAAqB,GAAG,wBAAwB,GAC1D,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,EAAE,MAAM,wBAAwB,CAAC,CAAC;AAEnE,MAAM,WAAW,kBAAmB,SAAQ,iBAAiB;IAC3D,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,MAAM,eAAe,GAAG,kBAAkB,GAC9C,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,EAAE,MAAM,kBAAkB,CAAC,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/field/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAChE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAEjE,MAAM,WAAW,iBAAiB;IAChC,wEAAwE;IACxE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACvC,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACxC,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACxC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,MAAM,cAAc,CAAC,GAAG,SAAS,WAAW,GAAG,KAAK,IAAI,eAAe,CAC3E,GAAG,EACH,iBAAiB,EACjB,iBAAiB,EACjB,WAAW,CACZ,CAAC;AAEF;0EAC0E;AAC1E,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,kBAAmB,SAAQ,iBAAiB;IAC3D,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACxC,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CACzC;AAED,MAAM,MAAM,eAAe,GAAG,kBAAkB,GAC9C,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,EAAE,MAAM,kBAAkB,CAAC,CAAC;AAEjE,MAAM,WAAW,oBAAqB,SAAQ,iBAAiB;IAC7D,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACxC,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACvC,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CACzC;AAED,MAAM,MAAM,iBAAiB,CAAC,GAAG,SAAS,WAAW,GAAG,KAAK,IAAI,eAAe,CAC9E,GAAG,EACH,oBAAoB,EACpB;IAAE,QAAQ,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAAE,EAC1D,WAAW,CACZ,CAAC;AAEF,MAAM,WAAW,wBAAyB,SAAQ,iBAAiB;IACjE,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CACzC;AAED,MAAM,MAAM,qBAAqB,GAAG,wBAAwB,GAC1D,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,EAAE,MAAM,wBAAwB,CAAC,CAAC;AAEnE,MAAM,WAAW,kBAAmB,SAAQ,iBAAiB;IAC3D,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CACxC;AAED,MAAM,MAAM,eAAe,GAAG,kBAAkB,GAC9C,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,EAAE,MAAM,kBAAkB,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"FormErrorSummary.d.ts","sourceRoot":"","sources":["../../../src/components/form-error-summary/FormErrorSummary.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAGvD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAExD,wBAAgB,gBAAgB,CAAC,GAAG,SAAS,WAAW,GAAG,SAAS,EAClE,KAAK,EAAE,qBAAqB,CAAC,GAAG,CAAC,GAChC,YAAY,GAAG,IAAI,CA8CrB;yBAhDe,gBAAgB"}
1
+ {"version":3,"file":"FormErrorSummary.d.ts","sourceRoot":"","sources":["../../../src/components/form-error-summary/FormErrorSummary.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAGvD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAExD,wBAAgB,gBAAgB,CAAC,GAAG,SAAS,WAAW,GAAG,SAAS,EAClE,KAAK,EAAE,qBAAqB,CAAC,GAAG,CAAC,GAChC,YAAY,GAAG,IAAI,CAwCrB;yBA1Ce,gBAAgB"}
@@ -1,49 +1,35 @@
1
1
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
2
2
  import { createElement } from "react";
3
3
  import { useRenderElement } from "@gunkin/uiify/core/render";
4
- import { omitProps, resolveRepeatedSlotProps } from "../../core/slot-props.js";
4
+ import { resolveRepeatedSlotProps } from "../../core/slot-props.js";
5
5
  function FormErrorSummary(props) {
6
6
  const { as, render, title, errors, slotProps, ...consumerProps } = props;
7
7
  const element = useRenderElement({
8
8
  as,
9
9
  defaultTag: "section",
10
10
  props: {
11
+ "data-uiify-form-error-summary": "",
11
12
  ...consumerProps,
12
13
  children: /* @__PURE__ */ jsxs(Fragment, { children: [
13
- /* @__PURE__ */ jsx(
14
- "h2",
14
+ /* @__PURE__ */ jsx("h2", { "data-part": "title", ...slotProps?.title, children: title }),
15
+ /* @__PURE__ */ jsx("ul", { "data-part": "list", ...slotProps?.list, children: errors.map((error, index) => /* @__PURE__ */ createElement(
16
+ "li",
15
17
  {
16
- ...omitProps(slotProps?.title, ["data-part", "children", "dangerouslySetInnerHTML"]),
17
- "data-part": "title",
18
- children: title
19
- }
20
- ),
21
- /* @__PURE__ */ jsx(
22
- "ul",
23
- {
24
- ...omitProps(slotProps?.list, ["data-part", "children", "dangerouslySetInnerHTML"]),
25
- "data-part": "list",
26
- children: errors.map((error, index) => /* @__PURE__ */ createElement(
27
- "li",
28
- {
29
- ...resolveRepeatedSlotProps(slotProps?.item, error.href, ["data-part"]),
30
- "data-part": "item",
31
- key: `${error.href}-${index}`
32
- },
33
- /* @__PURE__ */ jsx(
34
- "a",
35
- {
36
- ...resolveRepeatedSlotProps(slotProps?.link, error.href, ["data-part", "href"]),
37
- "data-part": "link",
38
- href: error.href,
39
- children: error.message
40
- }
41
- )
42
- ))
43
- }
44
- )
45
- ] }),
46
- "data-uiify-form-error-summary": ""
18
+ "data-part": "item",
19
+ ...resolveRepeatedSlotProps(slotProps?.item, error.href),
20
+ key: `${error.href}-${index}`
21
+ },
22
+ /* @__PURE__ */ jsx(
23
+ "a",
24
+ {
25
+ "data-part": "link",
26
+ href: error.href,
27
+ ...resolveRepeatedSlotProps(slotProps?.link, error.href),
28
+ children: error.message
29
+ }
30
+ )
31
+ )) })
32
+ ] })
47
33
  },
48
34
  render,
49
35
  state: {}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/form-error-summary/FormErrorSummary.tsx"],"sourcesContent":["import type { ElementType, ReactElement } from \"react\";\nimport { useRenderElement } from \"@gunkin/uiify/core/render\";\nimport { omitProps, resolveRepeatedSlotProps } from \"../../core/slot-props.js\";\nimport type { FormErrorSummaryProps } from \"./types.js\";\n\nexport function FormErrorSummary<TAs extends ElementType = \"section\">(\n props: FormErrorSummaryProps<TAs>,\n): ReactElement | null {\n const { as, render, title, errors, slotProps, ...consumerProps } =\n props as FormErrorSummaryProps<\"section\">;\n\n const element = useRenderElement({\n as,\n defaultTag: \"section\",\n props: {\n ...consumerProps,\n children: (\n <>\n <h2\n {...omitProps(slotProps?.title, [\"data-part\", \"children\", \"dangerouslySetInnerHTML\"])}\n data-part=\"title\"\n >\n {title}\n </h2>\n <ul\n {...omitProps(slotProps?.list, [\"data-part\", \"children\", \"dangerouslySetInnerHTML\"])}\n data-part=\"list\"\n >\n {errors.map((error, index) => (\n <li\n {...resolveRepeatedSlotProps(slotProps?.item, error.href, [\"data-part\"])}\n data-part=\"item\"\n key={`${error.href}-${index}`}\n >\n <a\n {...resolveRepeatedSlotProps(slotProps?.link, error.href, [\"data-part\", \"href\"])}\n data-part=\"link\"\n href={error.href}\n >\n {error.message}\n </a>\n </li>\n ))}\n </ul>\n </>\n ),\n \"data-uiify-form-error-summary\": \"\",\n },\n render,\n state: {},\n });\n\n return errors.length === 0 ? null : element;\n}\n\nFormErrorSummary.displayName = \"FormErrorSummary\";\n"],"mappings":"AAiBQ,mBACE,KADF;AAYM;AA5Bd,SAAS,wBAAwB;AACjC,SAAS,WAAW,gCAAgC;AAG7C,SAAS,iBACd,OACqB;AACrB,QAAM,EAAE,IAAI,QAAQ,OAAO,QAAQ,WAAW,GAAG,cAAc,IAC7D;AAEF,QAAM,UAAU,iBAAiB;AAAA,IAC/B;AAAA,IACA,YAAY;AAAA,IACZ,OAAO;AAAA,MACL,GAAG;AAAA,MACH,UACE,iCACE;AAAA;AAAA,UAAC;AAAA;AAAA,YACE,GAAG,UAAU,WAAW,OAAO,CAAC,aAAa,YAAY,yBAAyB,CAAC;AAAA,YACpF,aAAU;AAAA,YAET;AAAA;AAAA,QACH;AAAA,QACA;AAAA,UAAC;AAAA;AAAA,YACE,GAAG,UAAU,WAAW,MAAM,CAAC,aAAa,YAAY,yBAAyB,CAAC;AAAA,YACnF,aAAU;AAAA,YAET,iBAAO,IAAI,CAAC,OAAO,UAClB;AAAA,cAAC;AAAA;AAAA,gBACE,GAAG,yBAAyB,WAAW,MAAM,MAAM,MAAM,CAAC,WAAW,CAAC;AAAA,gBACvE,aAAU;AAAA,gBACV,KAAK,GAAG,MAAM,IAAI,IAAI,KAAK;AAAA;AAAA,cAE3B;AAAA,gBAAC;AAAA;AAAA,kBACE,GAAG,yBAAyB,WAAW,MAAM,MAAM,MAAM,CAAC,aAAa,MAAM,CAAC;AAAA,kBAC/E,aAAU;AAAA,kBACV,MAAM,MAAM;AAAA,kBAEX,gBAAM;AAAA;AAAA,cACT;AAAA,YACF,CACD;AAAA;AAAA,QACH;AAAA,SACF;AAAA,MAEF,iCAAiC;AAAA,IACnC;AAAA,IACA;AAAA,IACA,OAAO,CAAC;AAAA,EACV,CAAC;AAED,SAAO,OAAO,WAAW,IAAI,OAAO;AACtC;AAEA,iBAAiB,cAAc;","names":[]}
1
+ {"version":3,"sources":["../../../src/components/form-error-summary/FormErrorSummary.tsx"],"sourcesContent":["import type { ElementType, ReactElement } from \"react\";\nimport { useRenderElement } from \"@gunkin/uiify/core/render\";\nimport { resolveRepeatedSlotProps } from \"../../core/slot-props.js\";\nimport type { FormErrorSummaryProps } from \"./types.js\";\n\nexport function FormErrorSummary<TAs extends ElementType = \"section\">(\n props: FormErrorSummaryProps<TAs>,\n): ReactElement | null {\n const { as, render, title, errors, slotProps, ...consumerProps } =\n props as FormErrorSummaryProps<\"section\">;\n\n const element = useRenderElement({\n as,\n defaultTag: \"section\",\n props: {\n \"data-uiify-form-error-summary\": \"\",\n ...consumerProps,\n children: (\n <>\n <h2 data-part=\"title\" {...slotProps?.title}>\n {title}\n </h2>\n <ul data-part=\"list\" {...slotProps?.list}>\n {errors.map((error, index) => (\n <li\n data-part=\"item\"\n {...resolveRepeatedSlotProps(slotProps?.item, error.href)}\n key={`${error.href}-${index}`}\n >\n <a\n data-part=\"link\"\n href={error.href}\n {...resolveRepeatedSlotProps(slotProps?.link, error.href)}\n >\n {error.message}\n </a>\n </li>\n ))}\n </ul>\n </>\n ),\n },\n render,\n state: {},\n });\n\n return errors.length === 0 ? null : element;\n}\n\nFormErrorSummary.displayName = \"FormErrorSummary\";\n"],"mappings":"AAkBQ,mBACE,KADF;AAMM;AAvBd,SAAS,wBAAwB;AACjC,SAAS,gCAAgC;AAGlC,SAAS,iBACd,OACqB;AACrB,QAAM,EAAE,IAAI,QAAQ,OAAO,QAAQ,WAAW,GAAG,cAAc,IAC7D;AAEF,QAAM,UAAU,iBAAiB;AAAA,IAC/B;AAAA,IACA,YAAY;AAAA,IACZ,OAAO;AAAA,MACL,iCAAiC;AAAA,MACjC,GAAG;AAAA,MACH,UACE,iCACE;AAAA,4BAAC,QAAG,aAAU,SAAS,GAAG,WAAW,OAClC,iBACH;AAAA,QACA,oBAAC,QAAG,aAAU,QAAQ,GAAG,WAAW,MACjC,iBAAO,IAAI,CAAC,OAAO,UAClB;AAAA,UAAC;AAAA;AAAA,YACC,aAAU;AAAA,YACT,GAAG,yBAAyB,WAAW,MAAM,MAAM,IAAI;AAAA,YACxD,KAAK,GAAG,MAAM,IAAI,IAAI,KAAK;AAAA;AAAA,UAE3B;AAAA,YAAC;AAAA;AAAA,cACC,aAAU;AAAA,cACV,MAAM,MAAM;AAAA,cACX,GAAG,yBAAyB,WAAW,MAAM,MAAM,IAAI;AAAA,cAEvD,gBAAM;AAAA;AAAA,UACT;AAAA,QACF,CACD,GACH;AAAA,SACF;AAAA,IAEJ;AAAA,IACA;AAAA,IACA,OAAO,CAAC;AAAA,EACV,CAAC;AAED,SAAO,OAAO,WAAW,IAAI,OAAO;AACtC;AAEA,iBAAiB,cAAc;","names":[]}
@@ -1,25 +1,16 @@
1
- import type { ComponentPropsWithRef, ElementType, ReactNode } from "react";
1
+ import type { ElementType, ReactNode } from "react";
2
2
  import type { RenderableProps } from "@gunkin/uiify/core/render";
3
- import type { ConsumerDataAttributes, RepeatedSlotProps } from "../../core/slot-props.js";
3
+ import type { SlotProps, RepeatedSlotProps } from "../../core/slot-props.js";
4
4
  export interface FormErrorSummaryError {
5
5
  readonly href: string;
6
6
  readonly message: ReactNode;
7
7
  }
8
- type FormErrorSummaryPartProps<TTag extends ElementType> = Omit<ComponentPropsWithRef<TTag>, "children" | "dangerouslySetInnerHTML" | "data-part">;
9
- type FormErrorSummaryPartSlotProps<TTag extends ElementType> = FormErrorSummaryPartProps<TTag> & ConsumerDataAttributes & {
10
- readonly "data-part"?: never;
11
- };
12
- type FormErrorSummaryRepeatedSlotProps<TTag extends ElementType, TProtected extends object = object> = RepeatedSlotProps<FormErrorSummaryPartProps<TTag>, TProtected & {
13
- readonly "data-part"?: never;
14
- }>;
15
8
  export interface FormErrorSummarySlotProps {
16
- readonly title?: FormErrorSummaryPartSlotProps<"h2">;
17
- readonly list?: FormErrorSummaryPartSlotProps<"ul">;
9
+ readonly title?: SlotProps<"h2">;
10
+ readonly list?: SlotProps<"ul">;
18
11
  /** Repeated error props may target an error by its stable href value. */
19
- readonly item?: FormErrorSummaryRepeatedSlotProps<"li">;
20
- readonly link?: FormErrorSummaryRepeatedSlotProps<"a", {
21
- readonly href?: never;
22
- }>;
12
+ readonly item?: RepeatedSlotProps<SlotProps<"li">>;
13
+ readonly link?: RepeatedSlotProps<SlotProps<"a">>;
23
14
  }
24
15
  export interface FormErrorSummaryOwnProps {
25
16
  readonly title: ReactNode;
@@ -27,5 +18,4 @@ export interface FormErrorSummaryOwnProps {
27
18
  readonly slotProps?: FormErrorSummarySlotProps;
28
19
  }
29
20
  export type FormErrorSummaryProps<TAs extends ElementType = "section"> = RenderableProps<TAs, FormErrorSummaryOwnProps, Record<string, never>, HTMLElement>;
30
- export {};
31
21
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/form-error-summary/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAC3E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,KAAK,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAE1F,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC;CAC7B;AAED,KAAK,yBAAyB,CAAC,IAAI,SAAS,WAAW,IAAI,IAAI,CAC7D,qBAAqB,CAAC,IAAI,CAAC,EAC3B,UAAU,GAAG,yBAAyB,GAAG,WAAW,CACrD,CAAC;AAEF,KAAK,6BAA6B,CAAC,IAAI,SAAS,WAAW,IAAI,yBAAyB,CAAC,IAAI,CAAC,GAC5F,sBAAsB,GAAG;IACvB,QAAQ,CAAC,WAAW,CAAC,EAAE,KAAK,CAAC;CAC9B,CAAC;AAEJ,KAAK,iCAAiC,CACpC,IAAI,SAAS,WAAW,EACxB,UAAU,SAAS,MAAM,GAAG,MAAM,IAChC,iBAAiB,CACnB,yBAAyB,CAAC,IAAI,CAAC,EAC/B,UAAU,GAAG;IAAE,QAAQ,CAAC,WAAW,CAAC,EAAE,KAAK,CAAA;CAAE,CAC9C,CAAC;AAEF,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,KAAK,CAAC,EAAE,6BAA6B,CAAC,IAAI,CAAC,CAAC;IACrD,QAAQ,CAAC,IAAI,CAAC,EAAE,6BAA6B,CAAC,IAAI,CAAC,CAAC;IACpD,yEAAyE;IACzE,QAAQ,CAAC,IAAI,CAAC,EAAE,iCAAiC,CAAC,IAAI,CAAC,CAAC;IACxD,QAAQ,CAAC,IAAI,CAAC,EAAE,iCAAiC,CAAC,GAAG,EAAE;QAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,CAAA;KAAE,CAAC,CAAC;CACnF;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,SAAS,qBAAqB,EAAE,CAAC;IAClD,QAAQ,CAAC,SAAS,CAAC,EAAE,yBAAyB,CAAC;CAChD;AAED,MAAM,MAAM,qBAAqB,CAAC,GAAG,SAAS,WAAW,GAAG,SAAS,IAAI,eAAe,CACtF,GAAG,EACH,wBAAwB,EACxB,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,EACrB,WAAW,CACZ,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/form-error-summary/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,KAAK,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAE7E,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC;CAC7B;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;IACjC,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;IAChC,yEAAyE;IACzE,QAAQ,CAAC,IAAI,CAAC,EAAE,iBAAiB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IACnD,QAAQ,CAAC,IAAI,CAAC,EAAE,iBAAiB,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;CACnD;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,SAAS,qBAAqB,EAAE,CAAC;IAClD,QAAQ,CAAC,SAAS,CAAC,EAAE,yBAAyB,CAAC;CAChD;AAED,MAAM,MAAM,qBAAqB,CAAC,GAAG,SAAS,WAAW,GAAG,SAAS,IAAI,eAAe,CACtF,GAAG,EACH,wBAAwB,EACxB,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,EACrB,WAAW,CACZ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"HoverCard.d.ts","sourceRoot":"","sources":["../../../src/components/hover-card/HoverCard.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAiB,WAAW,EAA4B,YAAY,EAAE,MAAM,OAAO,CAAC;AAehG,OAAO,KAAK,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAenG,wBAAgB,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,YAAY,GAAG,IAAI,CA+B5E;yBA/Be,aAAa;;;AAkC7B,wBAAgB,gBAAgB,CAAC,GAAG,SAAS,WAAW,GAAG,QAAQ,EACjE,KAAK,EAAE,qBAAqB,CAAC,GAAG,CAAC,GAChC,YAAY,GAAG,IAAI,CAkDrB;AAED,wBAAgB,gBAAgB,CAAC,GAAG,SAAS,WAAW,GAAG,KAAK,EAC9D,KAAK,EAAE,qBAAqB,CAAC,GAAG,CAAC,GAChC,YAAY,GAAG,IAAI,CA8ErB;AAED,eAAO,MAAM,SAAS;;;;CAIrB,CAAC"}
1
+ {"version":3,"file":"HoverCard.d.ts","sourceRoot":"","sources":["../../../src/components/hover-card/HoverCard.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAiB,WAAW,EAA4B,YAAY,EAAE,MAAM,OAAO,CAAC;AAehG,OAAO,KAAK,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAYnG,wBAAgB,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,YAAY,GAAG,IAAI,CA6B5E;yBA7Be,aAAa;;;AA+B7B,wBAAgB,gBAAgB,CAAC,GAAG,SAAS,WAAW,GAAG,QAAQ,EACjE,KAAK,EAAE,qBAAqB,CAAC,GAAG,CAAC,GAChC,YAAY,GAAG,IAAI,CAqDrB;AACD,wBAAgB,gBAAgB,CAAC,GAAG,SAAS,WAAW,GAAG,KAAK,EAC9D,KAAK,EAAE,qBAAqB,CAAC,GAAG,CAAC,GAChC,YAAY,GAAG,IAAI,CA6ErB;AACD,eAAO,MAAM,SAAS;;;;CAIrB,CAAC"}
@@ -61,13 +61,13 @@ function HoverCardTrigger(props) {
61
61
  as,
62
62
  defaultTag: "button",
63
63
  props: {
64
- ...consumerProps,
65
- ...createAnchorTriggerProps(anchorNameForId(anchorId)),
66
64
  ...consumerStyle ? { style: consumerStyle } : {},
67
65
  "aria-controls": contentId,
68
66
  "aria-expanded": open,
69
67
  ...nativeButton ? { type: "button", "data-uiify-button": "" } : {},
70
68
  ...className ? { className } : {},
69
+ ...createAnchorTriggerProps(anchorNameForId(anchorId)),
70
+ ...consumerProps,
71
71
  onBlur: composeEventHandlers(consumerOnBlur, (event) => {
72
72
  if (!event.currentTarget.contains(event.relatedTarget)) closeCard();
73
73
  }),
@@ -124,14 +124,7 @@ function HoverCardContent(props) {
124
124
  as,
125
125
  defaultTag: "div",
126
126
  props: {
127
- ...domProps,
128
- ...createAnchorPositionerProps({
129
- align,
130
- anchorName: anchorNameForId(anchorId),
131
- side
132
- }),
133
127
  ...consumerStyle ? { style: consumerStyle } : {},
134
- ref: mergedRef,
135
128
  popover: "manual",
136
129
  // The consumer's own non-empty `id` wins; otherwise the context-generated id is used.
137
130
  id: resolvedId,
@@ -139,6 +132,13 @@ function HoverCardContent(props) {
139
132
  "data-uiify-hover-card": "",
140
133
  "data-state": open ? "open" : "closed",
141
134
  ...className ? { className } : {},
135
+ ...createAnchorPositionerProps({
136
+ align,
137
+ anchorName: anchorNameForId(anchorId),
138
+ side
139
+ }),
140
+ ...domProps,
141
+ ref: mergedRef,
142
142
  onPointerEnter: composeEventHandlers(consumerOnPointerEnter, () => {
143
143
  intent.clearCloseTimer();
144
144
  }),
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/hover-card/HoverCard.tsx"],"sourcesContent":["\"use client\";\n\nimport { useRef } from \"react\";\nimport type { CSSProperties, ElementType, FocusEvent, PointerEvent, ReactElement } from \"react\";\nimport { useIsomorphicLayoutEffect, useMergedRefs } from \"@gunkin/uiify/hooks\";\nimport {\n createAnchorPositionerProps,\n createAnchorTriggerProps,\n anchorNameForId,\n} from \"@gunkin/uiify/core/anchor-position\";\nimport { composeEventHandlers } from \"@gunkin/uiify/core/compose-event-handlers\";\nimport {\n createPartContext,\n splitRef,\n useHoverOverlay,\n type HoverIntentStore,\n} from \"@gunkin/uiify/core\";\nimport { useRenderElement } from \"@gunkin/uiify/core/render\";\nimport type { HoverCardContentProps, HoverCardRootProps, HoverCardTriggerProps } from \"./types.js\";\n\ninterface HoverCardClientContextValue {\n readonly anchorId: string;\n readonly closeCard: () => void;\n readonly contentId: string;\n readonly intent: HoverIntentStore;\n readonly open: boolean;\n readonly openCard: (immediate?: boolean) => void;\n readonly setContentId: (id: string) => void;\n}\n\nconst [HoverCardProvider, useHoverCardContext] =\n createPartContext<HoverCardClientContextValue>(\"HoverCard\");\n\nexport function HoverCardRoot(props: HoverCardRootProps): ReactElement | null {\n const {\n children,\n closeDelay = 300,\n defaultOpen = false,\n id,\n onOpenChange,\n open,\n openDelay = 700,\n } = props;\n const overlay = useHoverOverlay({\n closeDelay,\n ...(defaultOpen !== undefined ? { defaultOpen } : {}),\n ...(id !== undefined ? { id } : {}),\n idPrefix: \"uiify-hover-card\",\n ...(onOpenChange ? { onOpenChange } : {}),\n ...(open !== undefined ? { open } : {}),\n openDelay,\n });\n\n const contextValue: HoverCardClientContextValue = {\n anchorId: overlay.anchorId,\n closeCard: overlay.closeOverlay,\n contentId: overlay.contentId,\n intent: overlay.intent,\n open: overlay.open,\n openCard: overlay.openOverlay,\n setContentId: overlay.setContentId,\n };\n\n return <HoverCardProvider value={contextValue}>{children}</HoverCardProvider>;\n}\nHoverCardRoot.displayName = \"HoverCardRoot\";\n\nexport function HoverCardTrigger<TAs extends ElementType = \"button\">(\n props: HoverCardTriggerProps<TAs>,\n): ReactElement | null {\n const { as, render, className, ...consumerProps } = props as HoverCardTriggerProps<\"button\">;\n const { anchorId, closeCard, contentId, intent, open, openCard } = useHoverCardContext(\"Trigger\");\n const nativeButton = !as || as === \"button\";\n const consumerStyle = (consumerProps as { style?: CSSProperties }).style;\n const {\n onBlur: consumerOnBlur,\n onFocus: consumerOnFocus,\n onPointerEnter: consumerOnPointerEnter,\n onPointerLeave: consumerOnPointerLeave,\n } = consumerProps as {\n onBlur?: (event: FocusEvent<HTMLElement>) => void;\n onFocus?: (event: FocusEvent<HTMLElement>) => void;\n onPointerEnter?: (event: PointerEvent<HTMLElement>) => void;\n onPointerLeave?: (event: PointerEvent<HTMLElement>) => void;\n };\n\n return useRenderElement({\n as,\n defaultTag: \"button\",\n props: {\n ...consumerProps,\n ...createAnchorTriggerProps(anchorNameForId(anchorId)),\n ...(consumerStyle ? { style: consumerStyle } : {}),\n \"aria-controls\": contentId,\n \"aria-expanded\": open,\n ...(nativeButton ? { type: \"button\", \"data-uiify-button\": \"\" } : {}),\n ...(className ? { className } : {}),\n onBlur: composeEventHandlers(consumerOnBlur, (event: FocusEvent<HTMLElement>) => {\n if (!event.currentTarget.contains(event.relatedTarget)) closeCard();\n }),\n onFocus: composeEventHandlers(consumerOnFocus, () => {\n openCard(true);\n }),\n onPointerEnter: composeEventHandlers(\n consumerOnPointerEnter,\n (event: PointerEvent<HTMLElement>) => {\n if (event.pointerType === \"mouse\") openCard(false);\n },\n ),\n onPointerLeave: composeEventHandlers(\n consumerOnPointerLeave,\n (event: PointerEvent<HTMLElement>) => {\n if (event.pointerType === \"mouse\") intent.scheduleClose(() => closeCard());\n },\n ),\n },\n render,\n state: { open, positioning: \"native\" as const },\n });\n}\n\nexport function HoverCardContent<TAs extends ElementType = \"div\">(\n props: HoverCardContentProps<TAs>,\n): ReactElement | null {\n const {\n align = \"center\",\n as,\n render,\n className,\n side = \"bottom\",\n ...consumerProps\n } = props as HoverCardContentProps<\"div\">;\n const { anchorId, closeCard, contentId, intent, open, setContentId } =\n useHoverCardContext(\"Content\");\n const [consumerRef, domProps] = splitRef<HTMLElement, typeof consumerProps>(consumerProps);\n const popupRef = useRef<HTMLElement | null>(null);\n const mergedRef = useMergedRefs(popupRef, consumerRef);\n const consumerDomProps = domProps as { id?: string; style?: CSSProperties };\n const resolvedId =\n typeof consumerDomProps.id === \"string\" && consumerDomProps.id.length > 0\n ? consumerDomProps.id\n : contentId;\n const consumerStyle = consumerDomProps.style;\n\n useIsomorphicLayoutEffect(() => {\n setContentId(resolvedId);\n }, [resolvedId, setContentId]);\n\n // Same technique as core/use-popover.ts: guard with .matches(\":popover-open\")\n // so a StrictMode double-invoke or an unrelated re-run doesn't call\n // showPopover/hidePopover on a popover already in that state (both throw).\n // try/catch covers the node having disconnected between render and effect.\n useIsomorphicLayoutEffect(() => {\n const popup = popupRef.current;\n if (!popup) return;\n try {\n if (open && !popup.matches(\":popover-open\")) popup.showPopover();\n if (!open && popup.matches(\":popover-open\")) popup.hidePopover();\n } catch {\n // The node may have disconnected between render and layout effect.\n }\n }, [open]);\n\n const { onPointerEnter: consumerOnPointerEnter, onPointerLeave: consumerOnPointerLeave } =\n domProps as {\n onPointerEnter?: (event: PointerEvent<HTMLElement>) => void;\n onPointerLeave?: (event: PointerEvent<HTMLElement>) => void;\n };\n\n return useRenderElement({\n as,\n defaultTag: \"div\",\n props: {\n ...domProps,\n ...createAnchorPositionerProps({\n align,\n anchorName: anchorNameForId(anchorId),\n side,\n }),\n ...(consumerStyle ? { style: consumerStyle } : {}),\n ref: mergedRef,\n popover: \"manual\",\n // The consumer's own non-empty `id` wins; otherwise the context-generated id is used.\n id: resolvedId,\n \"data-part\": \"content\",\n \"data-uiify-hover-card\": \"\",\n \"data-state\": open ? \"open\" : \"closed\",\n ...(className ? { className } : {}),\n onPointerEnter: composeEventHandlers(consumerOnPointerEnter, () => {\n intent.clearCloseTimer();\n }),\n onPointerLeave: composeEventHandlers(\n consumerOnPointerLeave,\n (event: PointerEvent<HTMLElement>) => {\n if (event.pointerType === \"mouse\") intent.scheduleClose(() => closeCard());\n },\n ),\n },\n render,\n state: { open, positioning: \"native\" as const },\n });\n}\n\nexport const HoverCard = {\n Content: HoverCardContent,\n Root: HoverCardRoot,\n Trigger: HoverCardTrigger,\n};\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../../src/components/hover-card/HoverCard.tsx"],"sourcesContent":["\"use client\";\nimport { useRef } from \"react\";\nimport type { CSSProperties, ElementType, FocusEvent, PointerEvent, ReactElement } from \"react\";\nimport { useIsomorphicLayoutEffect, useMergedRefs } from \"@gunkin/uiify/hooks\";\nimport {\n createAnchorPositionerProps,\n createAnchorTriggerProps,\n anchorNameForId,\n} from \"@gunkin/uiify/core/anchor-position\";\nimport { composeEventHandlers } from \"@gunkin/uiify/core/compose-event-handlers\";\nimport {\n createPartContext,\n splitRef,\n useHoverOverlay,\n type HoverIntentStore,\n} from \"@gunkin/uiify/core\";\nimport { useRenderElement } from \"@gunkin/uiify/core/render\";\nimport type { HoverCardContentProps, HoverCardRootProps, HoverCardTriggerProps } from \"./types.js\";\ninterface HoverCardClientContextValue {\n readonly anchorId: string;\n readonly closeCard: () => void;\n readonly contentId: string;\n readonly intent: HoverIntentStore;\n readonly open: boolean;\n readonly openCard: (immediate?: boolean) => void;\n readonly setContentId: (id: string) => void;\n}\nconst [HoverCardProvider, useHoverCardContext] =\n createPartContext<HoverCardClientContextValue>(\"HoverCard\");\nexport function HoverCardRoot(props: HoverCardRootProps): ReactElement | null {\n const {\n children,\n closeDelay = 300,\n defaultOpen = false,\n id,\n onOpenChange,\n open,\n openDelay = 700,\n } = props;\n const overlay = useHoverOverlay({\n closeDelay,\n ...(defaultOpen !== undefined ? { defaultOpen } : {}),\n ...(id !== undefined ? { id } : {}),\n idPrefix: \"uiify-hover-card\",\n ...(onOpenChange ? { onOpenChange } : {}),\n ...(open !== undefined ? { open } : {}),\n openDelay,\n });\n const contextValue: HoverCardClientContextValue = {\n anchorId: overlay.anchorId,\n closeCard: overlay.closeOverlay,\n contentId: overlay.contentId,\n intent: overlay.intent,\n open: overlay.open,\n openCard: overlay.openOverlay,\n setContentId: overlay.setContentId,\n };\n return <HoverCardProvider value={contextValue}>{children}</HoverCardProvider>;\n}\nHoverCardRoot.displayName = \"HoverCardRoot\";\nexport function HoverCardTrigger<TAs extends ElementType = \"button\">(\n props: HoverCardTriggerProps<TAs>,\n): ReactElement | null {\n const { as, render, className, ...consumerProps } = props as HoverCardTriggerProps<\"button\">;\n const { anchorId, closeCard, contentId, intent, open, openCard } = useHoverCardContext(\"Trigger\");\n const nativeButton = !as || as === \"button\";\n const consumerStyle = (\n consumerProps as {\n style?: CSSProperties;\n }\n ).style;\n const {\n onBlur: consumerOnBlur,\n onFocus: consumerOnFocus,\n onPointerEnter: consumerOnPointerEnter,\n onPointerLeave: consumerOnPointerLeave,\n } = consumerProps as {\n onBlur?: (event: FocusEvent<HTMLElement>) => void;\n onFocus?: (event: FocusEvent<HTMLElement>) => void;\n onPointerEnter?: (event: PointerEvent<HTMLElement>) => void;\n onPointerLeave?: (event: PointerEvent<HTMLElement>) => void;\n };\n return useRenderElement({\n as,\n defaultTag: \"button\",\n props: {\n ...(consumerStyle ? { style: consumerStyle } : {}),\n \"aria-controls\": contentId,\n \"aria-expanded\": open,\n ...(nativeButton ? { type: \"button\", \"data-uiify-button\": \"\" } : {}),\n ...(className ? { className } : {}),\n ...createAnchorTriggerProps(anchorNameForId(anchorId)),\n ...consumerProps,\n onBlur: composeEventHandlers(consumerOnBlur, (event: FocusEvent<HTMLElement>) => {\n if (!event.currentTarget.contains(event.relatedTarget)) closeCard();\n }),\n onFocus: composeEventHandlers(consumerOnFocus, () => {\n openCard(true);\n }),\n onPointerEnter: composeEventHandlers(\n consumerOnPointerEnter,\n (event: PointerEvent<HTMLElement>) => {\n if (event.pointerType === \"mouse\") openCard(false);\n },\n ),\n onPointerLeave: composeEventHandlers(\n consumerOnPointerLeave,\n (event: PointerEvent<HTMLElement>) => {\n if (event.pointerType === \"mouse\") intent.scheduleClose(() => closeCard());\n },\n ),\n },\n render,\n state: { open, positioning: \"native\" as const },\n });\n}\nexport function HoverCardContent<TAs extends ElementType = \"div\">(\n props: HoverCardContentProps<TAs>,\n): ReactElement | null {\n const {\n align = \"center\",\n as,\n render,\n className,\n side = \"bottom\",\n ...consumerProps\n } = props as HoverCardContentProps<\"div\">;\n const { anchorId, closeCard, contentId, intent, open, setContentId } =\n useHoverCardContext(\"Content\");\n const [consumerRef, domProps] = splitRef<HTMLElement, typeof consumerProps>(consumerProps);\n const popupRef = useRef<HTMLElement | null>(null);\n const mergedRef = useMergedRefs(popupRef, consumerRef);\n const consumerDomProps = domProps as {\n id?: string;\n style?: CSSProperties;\n };\n const resolvedId =\n typeof consumerDomProps.id === \"string\" && consumerDomProps.id.length > 0\n ? consumerDomProps.id\n : contentId;\n const consumerStyle = consumerDomProps.style;\n useIsomorphicLayoutEffect(() => {\n setContentId(resolvedId);\n }, [resolvedId, setContentId]);\n // Same technique as core/use-popover.ts: guard with .matches(\":popover-open\")\n // so a StrictMode double-invoke or an unrelated re-run doesn't call\n // showPopover/hidePopover on a popover already in that state (both throw).\n // try/catch covers the node having disconnected between render and effect.\n useIsomorphicLayoutEffect(() => {\n const popup = popupRef.current;\n if (!popup) return;\n try {\n if (open && !popup.matches(\":popover-open\")) popup.showPopover();\n if (!open && popup.matches(\":popover-open\")) popup.hidePopover();\n } catch {\n // The node may have disconnected between render and layout effect.\n }\n }, [open]);\n const { onPointerEnter: consumerOnPointerEnter, onPointerLeave: consumerOnPointerLeave } =\n domProps as {\n onPointerEnter?: (event: PointerEvent<HTMLElement>) => void;\n onPointerLeave?: (event: PointerEvent<HTMLElement>) => void;\n };\n return useRenderElement({\n as,\n defaultTag: \"div\",\n props: {\n ...(consumerStyle ? { style: consumerStyle } : {}),\n popover: \"manual\",\n // The consumer's own non-empty `id` wins; otherwise the context-generated id is used.\n id: resolvedId,\n \"data-part\": \"content\",\n \"data-uiify-hover-card\": \"\",\n \"data-state\": open ? \"open\" : \"closed\",\n ...(className ? { className } : {}),\n ...createAnchorPositionerProps({\n align,\n anchorName: anchorNameForId(anchorId),\n side,\n }),\n ...domProps,\n ref: mergedRef,\n onPointerEnter: composeEventHandlers(consumerOnPointerEnter, () => {\n intent.clearCloseTimer();\n }),\n onPointerLeave: composeEventHandlers(\n consumerOnPointerLeave,\n (event: PointerEvent<HTMLElement>) => {\n if (event.pointerType === \"mouse\") intent.scheduleClose(() => closeCard());\n },\n ),\n },\n render,\n state: { open, positioning: \"native\" as const },\n });\n}\nexport const HoverCard = {\n Content: HoverCardContent,\n Root: HoverCardRoot,\n Trigger: HoverCardTrigger,\n};\n"],"mappings":"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","names":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"Input.d.ts","sourceRoot":"","sources":["../../../src/components/input/Input.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAkB,MAAM,OAAO,CAAC;AAGvE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,wBAAgB,KAAK,CAAC,GAAG,SAAS,WAAW,GAAG,OAAO,EACrD,KAAK,EAAE,UAAU,CAAC,GAAG,CAAC,GACrB,YAAY,GAAG,IAAI,CA6CrB"}
1
+ {"version":3,"file":"Input.d.ts","sourceRoot":"","sources":["../../../src/components/input/Input.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAkB,MAAM,OAAO,CAAC;AAGvE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,wBAAgB,KAAK,CAAC,GAAG,SAAS,WAAW,GAAG,OAAO,EACrD,KAAK,EAAE,UAAU,CAAC,GAAG,CAAC,GACrB,YAAY,GAAG,IAAI,CA+CrB"}
@@ -10,6 +10,7 @@ function Input(props) {
10
10
  disabled = false,
11
11
  readOnly = false,
12
12
  invalid = false,
13
+ size,
13
14
  ...consumerProps
14
15
  } = props;
15
16
  const isControlled = value !== void 0;
@@ -23,6 +24,7 @@ function Input(props) {
23
24
  props: {
24
25
  ...consumerProps,
25
26
  "data-uiify-input": "",
27
+ ...size !== void 0 ? { "data-size": size } : {},
26
28
  "aria-invalid": invalid || void 0,
27
29
  "data-disabled": disabled ? "" : void 0,
28
30
  "data-readonly": readOnly ? "" : void 0,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/input/Input.tsx"],"sourcesContent":["import type { ElementType, ReactElement, SyntheticEvent } from \"react\";\nimport { composeEventHandlers } from \"@gunkin/uiify/core/compose-event-handlers\";\nimport { useRenderElement } from \"@gunkin/uiify/core/render\";\nimport type { InputProps } from \"./types.js\";\n\nexport function Input<TAs extends ElementType = \"input\">(\n props: InputProps<TAs>,\n): ReactElement | null {\n const {\n as,\n render,\n value,\n defaultValue,\n onValueChange,\n disabled = false,\n readOnly = false,\n invalid = false,\n ...consumerProps\n } = props as InputProps<\"input\">;\n\n const isControlled = value !== undefined;\n\n const handleChange = (event: SyntheticEvent<HTMLInputElement>): void => {\n onValueChange?.(event.currentTarget.value);\n };\n\n const consumerOnChange = (\n consumerProps as Record<string, unknown> & {\n onChange?: (event: SyntheticEvent<HTMLInputElement>) => void;\n }\n ).onChange;\n\n return useRenderElement({\n as,\n defaultTag: \"input\",\n props: {\n ...consumerProps,\n \"data-uiify-input\": \"\",\n \"aria-invalid\": invalid || undefined,\n \"data-disabled\": disabled ? \"\" : undefined,\n \"data-readonly\": readOnly ? \"\" : undefined,\n \"data-invalid\": invalid ? \"\" : undefined,\n disabled: disabled || undefined,\n readOnly: readOnly || undefined,\n onChange: onValueChange\n ? composeEventHandlers(consumerOnChange, handleChange)\n : consumerOnChange,\n ...(isControlled ? { value } : defaultValue !== undefined ? { defaultValue } : {}),\n },\n render,\n state: { disabled, readOnly, invalid },\n });\n}\n"],"mappings":"AACA,SAAS,4BAA4B;AACrC,SAAS,wBAAwB;AAG1B,SAAS,MACd,OACqB;AACrB,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,WAAW;AAAA,IACX,WAAW;AAAA,IACX,UAAU;AAAA,IACV,GAAG;AAAA,EACL,IAAI;AAEJ,QAAM,eAAe,UAAU;AAE/B,QAAM,eAAe,CAAC,UAAkD;AACtE,oBAAgB,MAAM,cAAc,KAAK;AAAA,EAC3C;AAEA,QAAM,mBACJ,cAGA;AAEF,SAAO,iBAAiB;AAAA,IACtB;AAAA,IACA,YAAY;AAAA,IACZ,OAAO;AAAA,MACL,GAAG;AAAA,MACH,oBAAoB;AAAA,MACpB,gBAAgB,WAAW;AAAA,MAC3B,iBAAiB,WAAW,KAAK;AAAA,MACjC,iBAAiB,WAAW,KAAK;AAAA,MACjC,gBAAgB,UAAU,KAAK;AAAA,MAC/B,UAAU,YAAY;AAAA,MACtB,UAAU,YAAY;AAAA,MACtB,UAAU,gBACN,qBAAqB,kBAAkB,YAAY,IACnD;AAAA,MACJ,GAAI,eAAe,EAAE,MAAM,IAAI,iBAAiB,SAAY,EAAE,aAAa,IAAI,CAAC;AAAA,IAClF;AAAA,IACA;AAAA,IACA,OAAO,EAAE,UAAU,UAAU,QAAQ;AAAA,EACvC,CAAC;AACH;","names":[]}
1
+ {"version":3,"sources":["../../../src/components/input/Input.tsx"],"sourcesContent":["import type { ElementType, ReactElement, SyntheticEvent } from \"react\";\nimport { composeEventHandlers } from \"@gunkin/uiify/core/compose-event-handlers\";\nimport { useRenderElement } from \"@gunkin/uiify/core/render\";\nimport type { InputProps } from \"./types.js\";\n\nexport function Input<TAs extends ElementType = \"input\">(\n props: InputProps<TAs>,\n): ReactElement | null {\n const {\n as,\n render,\n value,\n defaultValue,\n onValueChange,\n disabled = false,\n readOnly = false,\n invalid = false,\n size,\n ...consumerProps\n } = props as InputProps<\"input\">;\n\n const isControlled = value !== undefined;\n\n const handleChange = (event: SyntheticEvent<HTMLInputElement>): void => {\n onValueChange?.(event.currentTarget.value);\n };\n\n const consumerOnChange = (\n consumerProps as Record<string, unknown> & {\n onChange?: (event: SyntheticEvent<HTMLInputElement>) => void;\n }\n ).onChange;\n\n return useRenderElement({\n as,\n defaultTag: \"input\",\n props: {\n ...consumerProps,\n \"data-uiify-input\": \"\",\n ...(size !== undefined ? { \"data-size\": size } : {}),\n \"aria-invalid\": invalid || undefined,\n \"data-disabled\": disabled ? \"\" : undefined,\n \"data-readonly\": readOnly ? \"\" : undefined,\n \"data-invalid\": invalid ? \"\" : undefined,\n disabled: disabled || undefined,\n readOnly: readOnly || undefined,\n onChange: onValueChange\n ? composeEventHandlers(consumerOnChange, handleChange)\n : consumerOnChange,\n ...(isControlled ? { value } : defaultValue !== undefined ? { defaultValue } : {}),\n },\n render,\n state: { disabled, readOnly, invalid },\n });\n}\n"],"mappings":"AACA,SAAS,4BAA4B;AACrC,SAAS,wBAAwB;AAG1B,SAAS,MACd,OACqB;AACrB,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,WAAW;AAAA,IACX,WAAW;AAAA,IACX,UAAU;AAAA,IACV;AAAA,IACA,GAAG;AAAA,EACL,IAAI;AAEJ,QAAM,eAAe,UAAU;AAE/B,QAAM,eAAe,CAAC,UAAkD;AACtE,oBAAgB,MAAM,cAAc,KAAK;AAAA,EAC3C;AAEA,QAAM,mBACJ,cAGA;AAEF,SAAO,iBAAiB;AAAA,IACtB;AAAA,IACA,YAAY;AAAA,IACZ,OAAO;AAAA,MACL,GAAG;AAAA,MACH,oBAAoB;AAAA,MACpB,GAAI,SAAS,SAAY,EAAE,aAAa,KAAK,IAAI,CAAC;AAAA,MAClD,gBAAgB,WAAW;AAAA,MAC3B,iBAAiB,WAAW,KAAK;AAAA,MACjC,iBAAiB,WAAW,KAAK;AAAA,MACjC,gBAAgB,UAAU,KAAK;AAAA,MAC/B,UAAU,YAAY;AAAA,MACtB,UAAU,YAAY;AAAA,MACtB,UAAU,gBACN,qBAAqB,kBAAkB,YAAY,IACnD;AAAA,MACJ,GAAI,eAAe,EAAE,MAAM,IAAI,iBAAiB,SAAY,EAAE,aAAa,IAAI,CAAC;AAAA,IAClF;AAAA,IACA;AAAA,IACA,OAAO,EAAE,UAAU,UAAU,QAAQ;AAAA,EACvC,CAAC;AACH;","names":[]}
@@ -1,5 +1,6 @@
1
1
  import type { ElementType } from "react";
2
2
  import type { RenderableProps } from "@gunkin/uiify/core/render";
3
+ import type { ControlSize } from "../internal/control-size/types.js";
3
4
  export interface InputOwnProps {
4
5
  readonly value?: string;
5
6
  readonly defaultValue?: string;
@@ -7,6 +8,8 @@ export interface InputOwnProps {
7
8
  readonly disabled?: boolean;
8
9
  readonly readOnly?: boolean;
9
10
  readonly invalid?: boolean;
11
+ /** Sets the control's height and text size; `md` is the default. */
12
+ readonly size?: ControlSize;
10
13
  }
11
14
  export type InputProps<TAs extends ElementType = "input"> = RenderableProps<TAs, InputOwnProps, InputOwnProps, HTMLInputElement>;
12
15
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/input/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACzC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAEjE,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACjD,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,MAAM,UAAU,CAAC,GAAG,SAAS,WAAW,GAAG,OAAO,IAAI,eAAe,CACzE,GAAG,EACH,aAAa,EACb,aAAa,EACb,gBAAgB,CACjB,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/input/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACzC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mCAAmC,CAAC;AAErE,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACjD,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,oEAAoE;IACpE,QAAQ,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC;CAC7B;AAED,MAAM,MAAM,UAAU,CAAC,GAAG,SAAS,WAAW,GAAG,OAAO,IAAI,eAAe,CACzE,GAAG,EACH,aAAa,EACb,aAAa,EACb,gBAAgB,CACjB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"InputGroup.d.ts","sourceRoot":"","sources":["../../../src/components/input-group/InputGroup.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAEvD,OAAO,KAAK,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAE5E,wBAAgB,UAAU,CAAC,GAAG,SAAS,WAAW,GAAG,KAAK,EACxD,KAAK,EAAE,mBAAmB,CAAC,GAAG,CAAC,GAC9B,YAAY,GAAG,IAAI,CAcrB;AAED,wBAAgB,eAAe,CAAC,GAAG,SAAS,WAAW,GAAG,MAAM,EAC9D,KAAK,EAAE,oBAAoB,CAAC,GAAG,CAAC,GAC/B,YAAY,GAAG,IAAI,CAerB"}
1
+ {"version":3,"file":"InputGroup.d.ts","sourceRoot":"","sources":["../../../src/components/input-group/InputGroup.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAEvD,OAAO,KAAK,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAE5E,wBAAgB,UAAU,CAAC,GAAG,SAAS,WAAW,GAAG,KAAK,EACxD,KAAK,EAAE,mBAAmB,CAAC,GAAG,CAAC,GAC9B,YAAY,GAAG,IAAI,CAerB;AAED,wBAAgB,eAAe,CAAC,GAAG,SAAS,WAAW,GAAG,MAAM,EAC9D,KAAK,EAAE,oBAAoB,CAAC,GAAG,CAAC,GAC/B,YAAY,GAAG,IAAI,CAerB"}
@@ -1,6 +1,6 @@
1
1
  import { useRenderElement } from "@gunkin/uiify/core/render";
2
2
  function InputGroup(props) {
3
- const { as, render, children, ...consumerProps } = props;
3
+ const { as, render, children, size, ...consumerProps } = props;
4
4
  return useRenderElement({
5
5
  as,
6
6
  defaultTag: "div",
@@ -8,6 +8,7 @@ function InputGroup(props) {
8
8
  ...consumerProps,
9
9
  children,
10
10
  "data-part": "root",
11
+ ...size !== void 0 ? { "data-size": size } : {},
11
12
  "data-uiify-input-group": ""
12
13
  },
13
14
  render,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/input-group/InputGroup.tsx"],"sourcesContent":["import type { ElementType, ReactElement } from \"react\";\nimport { useRenderElement } from \"@gunkin/uiify/core/render\";\nimport type { InputGroupAddonProps, InputGroupRootProps } from \"./types.js\";\n\nexport function InputGroup<TAs extends ElementType = \"div\">(\n props: InputGroupRootProps<TAs>,\n): ReactElement | null {\n const { as, render, children, ...consumerProps } = props as InputGroupRootProps<\"div\">;\n return useRenderElement({\n as,\n defaultTag: \"div\",\n props: {\n ...consumerProps,\n children,\n \"data-part\": \"root\",\n \"data-uiify-input-group\": \"\",\n },\n render,\n state: {},\n });\n}\n\nexport function InputGroupAddon<TAs extends ElementType = \"span\">(\n props: InputGroupAddonProps<TAs>,\n): ReactElement | null {\n const { as, render, align, children, ...consumerProps } = props as InputGroupAddonProps<\"span\">;\n return useRenderElement({\n as,\n defaultTag: \"span\",\n props: {\n ...consumerProps,\n children,\n \"data-align\": align,\n \"data-part\": \"addon\",\n \"data-uiify-input-group\": \"\",\n },\n render,\n state: {},\n });\n}\n"],"mappings":"AACA,SAAS,wBAAwB;AAG1B,SAAS,WACd,OACqB;AACrB,QAAM,EAAE,IAAI,QAAQ,UAAU,GAAG,cAAc,IAAI;AACnD,SAAO,iBAAiB;AAAA,IACtB;AAAA,IACA,YAAY;AAAA,IACZ,OAAO;AAAA,MACL,GAAG;AAAA,MACH;AAAA,MACA,aAAa;AAAA,MACb,0BAA0B;AAAA,IAC5B;AAAA,IACA;AAAA,IACA,OAAO,CAAC;AAAA,EACV,CAAC;AACH;AAEO,SAAS,gBACd,OACqB;AACrB,QAAM,EAAE,IAAI,QAAQ,OAAO,UAAU,GAAG,cAAc,IAAI;AAC1D,SAAO,iBAAiB;AAAA,IACtB;AAAA,IACA,YAAY;AAAA,IACZ,OAAO;AAAA,MACL,GAAG;AAAA,MACH;AAAA,MACA,cAAc;AAAA,MACd,aAAa;AAAA,MACb,0BAA0B;AAAA,IAC5B;AAAA,IACA;AAAA,IACA,OAAO,CAAC;AAAA,EACV,CAAC;AACH;","names":[]}
1
+ {"version":3,"sources":["../../../src/components/input-group/InputGroup.tsx"],"sourcesContent":["import type { ElementType, ReactElement } from \"react\";\nimport { useRenderElement } from \"@gunkin/uiify/core/render\";\nimport type { InputGroupAddonProps, InputGroupRootProps } from \"./types.js\";\n\nexport function InputGroup<TAs extends ElementType = \"div\">(\n props: InputGroupRootProps<TAs>,\n): ReactElement | null {\n const { as, render, children, size, ...consumerProps } = props as InputGroupRootProps<\"div\">;\n return useRenderElement({\n as,\n defaultTag: \"div\",\n props: {\n ...consumerProps,\n children,\n \"data-part\": \"root\",\n ...(size !== undefined ? { \"data-size\": size } : {}),\n \"data-uiify-input-group\": \"\",\n },\n render,\n state: {},\n });\n}\n\nexport function InputGroupAddon<TAs extends ElementType = \"span\">(\n props: InputGroupAddonProps<TAs>,\n): ReactElement | null {\n const { as, render, align, children, ...consumerProps } = props as InputGroupAddonProps<\"span\">;\n return useRenderElement({\n as,\n defaultTag: \"span\",\n props: {\n ...consumerProps,\n children,\n \"data-align\": align,\n \"data-part\": \"addon\",\n \"data-uiify-input-group\": \"\",\n },\n render,\n state: {},\n });\n}\n"],"mappings":"AACA,SAAS,wBAAwB;AAG1B,SAAS,WACd,OACqB;AACrB,QAAM,EAAE,IAAI,QAAQ,UAAU,MAAM,GAAG,cAAc,IAAI;AACzD,SAAO,iBAAiB;AAAA,IACtB;AAAA,IACA,YAAY;AAAA,IACZ,OAAO;AAAA,MACL,GAAG;AAAA,MACH;AAAA,MACA,aAAa;AAAA,MACb,GAAI,SAAS,SAAY,EAAE,aAAa,KAAK,IAAI,CAAC;AAAA,MAClD,0BAA0B;AAAA,IAC5B;AAAA,IACA;AAAA,IACA,OAAO,CAAC;AAAA,EACV,CAAC;AACH;AAEO,SAAS,gBACd,OACqB;AACrB,QAAM,EAAE,IAAI,QAAQ,OAAO,UAAU,GAAG,cAAc,IAAI;AAC1D,SAAO,iBAAiB;AAAA,IACtB;AAAA,IACA,YAAY;AAAA,IACZ,OAAO;AAAA,MACL,GAAG;AAAA,MACH;AAAA,MACA,cAAc;AAAA,MACd,aAAa;AAAA,MACb,0BAA0B;AAAA,IAC5B;AAAA,IACA;AAAA,IACA,OAAO,CAAC;AAAA,EACV,CAAC;AACH;","names":[]}
@@ -1,7 +1,10 @@
1
1
  import type { ElementType, ReactNode } from "react";
2
2
  import type { RenderableProps } from "@gunkin/uiify/core/render";
3
+ import type { ControlSize } from "../internal/control-size/types.js";
3
4
  export interface InputGroupRootOwnProps {
4
5
  readonly children?: ReactNode;
6
+ /** Sets the control's height and text size; `md` is the default. */
7
+ readonly size?: ControlSize;
5
8
  }
6
9
  export type InputGroupRootProps<TAs extends ElementType = "div"> = RenderableProps<TAs, InputGroupRootOwnProps, Record<string, never>, HTMLDivElement>;
7
10
  export interface InputGroupAddonOwnProps {
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/input-group/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAEjE,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC;CAC/B;AAED,MAAM,MAAM,mBAAmB,CAAC,GAAG,SAAS,WAAW,GAAG,KAAK,IAAI,eAAe,CAChF,GAAG,EACH,sBAAsB,EACtB,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,EACrB,cAAc,CACf,CAAC;AAEF,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,CAAC;IAChC,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC;CAC/B;AAED,MAAM,MAAM,oBAAoB,CAAC,GAAG,SAAS,WAAW,GAAG,MAAM,IAAI,eAAe,CAClF,GAAG,EACH,uBAAuB,EACvB,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,EACrB,eAAe,CAChB,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/input-group/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mCAAmC,CAAC;AAErE,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC;IAC9B,oEAAoE;IACpE,QAAQ,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC;CAC7B;AAED,MAAM,MAAM,mBAAmB,CAAC,GAAG,SAAS,WAAW,GAAG,KAAK,IAAI,eAAe,CAChF,GAAG,EACH,sBAAsB,EACtB,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,EACrB,cAAc,CACf,CAAC;AAEF,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,CAAC;IAChC,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC;CAC/B;AAED,MAAM,MAAM,oBAAoB,CAAC,GAAG,SAAS,WAAW,GAAG,MAAM,IAAI,eAAe,CAClF,GAAG,EACH,uBAAuB,EACvB,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,EACrB,eAAe,CAChB,CAAC"}
@@ -1,4 +1,4 @@
1
- import { type RefObject } from "react";
1
+ import { type CSSProperties, type RefObject } from "react";
2
2
  /**
3
3
  * Publishes the horizontal scrollbar thickness of a chart's
4
4
  * `[data-part="scroll-viewport"]` as `variable` on the chart element, so the
@@ -7,5 +7,5 @@ import { type RefObject } from "react";
7
7
  * candle row absorbs it, misaligning the value axis. Overlay scrollbars
8
8
  * measure 0. Read from ResizeObserver box sizes: no forced layout.
9
9
  */
10
- export declare function useScrollbarReserve(chartRef: RefObject<HTMLElement | null>, variable: `--${string}`): void;
10
+ export declare function useScrollbarReserve(chartRef: RefObject<HTMLElement | null>, variable: `--${string}`, consumerStyle?: CSSProperties | undefined): void;
11
11
  //# sourceMappingURL=use-scrollbar-reserve.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-scrollbar-reserve.d.ts","sourceRoot":"","sources":["../../../../src/components/internal/chart-scrollbar/use-scrollbar-reserve.ts"],"names":[],"mappings":"AAEA,OAAO,EAAa,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAElD;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,EACvC,QAAQ,EAAE,KAAK,MAAM,EAAE,GACtB,IAAI,CAeN"}
1
+ {"version":3,"file":"use-scrollbar-reserve.d.ts","sourceRoot":"","sources":["../../../../src/components/internal/chart-scrollbar/use-scrollbar-reserve.ts"],"names":[],"mappings":"AAEA,OAAO,EAAqB,KAAK,aAAa,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAE9E;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,EACvC,QAAQ,EAAE,KAAK,MAAM,EAAE,EACvB,aAAa,CAAC,EAAE,aAAa,GAAG,SAAS,GACxC,IAAI,CAuBN"}
@@ -1,6 +1,8 @@
1
1
  "use client";
2
- import { useEffect } from "react";
3
- function useScrollbarReserve(chartRef, variable) {
2
+ import { useEffect, useRef } from "react";
3
+ function useScrollbarReserve(chartRef, variable, consumerStyle) {
4
+ const consumerStyleRef = useRef(consumerStyle);
5
+ consumerStyleRef.current = consumerStyle;
4
6
  useEffect(() => {
5
7
  const chart = chartRef.current;
6
8
  const scroller = chart?.querySelector('[data-part="scroll-viewport"]');
@@ -9,7 +11,13 @@ function useScrollbarReserve(chartRef, variable) {
9
11
  const border = entry?.borderBoxSize[0]?.blockSize;
10
12
  const content = entry?.contentBoxSize[0]?.blockSize;
11
13
  if (border === void 0 || content === void 0) return;
12
- chart.style.setProperty(variable, `${Math.max(0, border - content)}px`);
14
+ const style = {
15
+ [variable]: `${Math.max(0, border - content)}px`,
16
+ ...consumerStyleRef.current
17
+ };
18
+ const value = style[variable];
19
+ if (value === void 0) chart.style.removeProperty(variable);
20
+ else chart.style.setProperty(variable, String(value));
13
21
  });
14
22
  observer.observe(scroller);
15
23
  return () => observer.disconnect();
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/internal/chart-scrollbar/use-scrollbar-reserve.ts"],"sourcesContent":["\"use client\";\n\nimport { useEffect, type RefObject } from \"react\";\n\n/**\n * Publishes the horizontal scrollbar thickness of a chart's\n * `[data-part=\"scroll-viewport\"]` as `variable` on the chart element, so the\n * plot grid can reserve that height below the time axis. A classic scrollbar\n * otherwise takes its height from the scroll viewport, and the flexible\n * candle row absorbs it, misaligning the value axis. Overlay scrollbars\n * measure 0. Read from ResizeObserver box sizes: no forced layout.\n */\nexport function useScrollbarReserve(\n chartRef: RefObject<HTMLElement | null>,\n variable: `--${string}`,\n): void {\n useEffect(() => {\n const chart = chartRef.current;\n const scroller = chart?.querySelector<HTMLElement>('[data-part=\"scroll-viewport\"]');\n if (!chart || !scroller || typeof ResizeObserver === \"undefined\") return;\n const observer = new ResizeObserver(([entry]) => {\n const border = entry?.borderBoxSize[0]?.blockSize;\n const content = entry?.contentBoxSize[0]?.blockSize;\n if (border === undefined || content === undefined) return;\n // The scroll viewport has no padding or border, so the difference is the scrollbar.\n chart.style.setProperty(variable, `${Math.max(0, border - content)}px`);\n });\n observer.observe(scroller);\n return () => observer.disconnect();\n }, [chartRef, variable]);\n}\n"],"mappings":";AAEA,SAAS,iBAAiC;AAUnC,SAAS,oBACd,UACA,UACM;AACN,YAAU,MAAM;AACd,UAAM,QAAQ,SAAS;AACvB,UAAM,WAAW,OAAO,cAA2B,+BAA+B;AAClF,QAAI,CAAC,SAAS,CAAC,YAAY,OAAO,mBAAmB,YAAa;AAClE,UAAM,WAAW,IAAI,eAAe,CAAC,CAAC,KAAK,MAAM;AAC/C,YAAM,SAAS,OAAO,cAAc,CAAC,GAAG;AACxC,YAAM,UAAU,OAAO,eAAe,CAAC,GAAG;AAC1C,UAAI,WAAW,UAAa,YAAY,OAAW;AAEnD,YAAM,MAAM,YAAY,UAAU,GAAG,KAAK,IAAI,GAAG,SAAS,OAAO,CAAC,IAAI;AAAA,IACxE,CAAC;AACD,aAAS,QAAQ,QAAQ;AACzB,WAAO,MAAM,SAAS,WAAW;AAAA,EACnC,GAAG,CAAC,UAAU,QAAQ,CAAC;AACzB;","names":[]}
1
+ {"version":3,"sources":["../../../../src/components/internal/chart-scrollbar/use-scrollbar-reserve.ts"],"sourcesContent":["\"use client\";\n\nimport { useEffect, useRef, type CSSProperties, type RefObject } from \"react\";\n\n/**\n * Publishes the horizontal scrollbar thickness of a chart's\n * `[data-part=\"scroll-viewport\"]` as `variable` on the chart element, so the\n * plot grid can reserve that height below the time axis. A classic scrollbar\n * otherwise takes its height from the scroll viewport, and the flexible\n * candle row absorbs it, misaligning the value axis. Overlay scrollbars\n * measure 0. Read from ResizeObserver box sizes: no forced layout.\n */\nexport function useScrollbarReserve(\n chartRef: RefObject<HTMLElement | null>,\n variable: `--${string}`,\n consumerStyle?: CSSProperties | undefined,\n): void {\n const consumerStyleRef = useRef(consumerStyle);\n consumerStyleRef.current = consumerStyle;\n useEffect(() => {\n const chart = chartRef.current;\n const scroller = chart?.querySelector<HTMLElement>('[data-part=\"scroll-viewport\"]');\n if (!chart || !scroller || typeof ResizeObserver === \"undefined\") return;\n const observer = new ResizeObserver(([entry]) => {\n const border = entry?.borderBoxSize[0]?.blockSize;\n const content = entry?.contentBoxSize[0]?.blockSize;\n if (border === undefined || content === undefined) return;\n // The scroll viewport has no padding or border, so the difference is the scrollbar.\n const style: CSSProperties & Record<`--${string}`, string | number | undefined> = {\n [variable]: `${Math.max(0, border - content)}px`,\n ...consumerStyleRef.current,\n };\n const value = style[variable];\n if (value === undefined) chart.style.removeProperty(variable);\n else chart.style.setProperty(variable, String(value));\n });\n observer.observe(scroller);\n return () => observer.disconnect();\n }, [chartRef, variable]);\n}\n"],"mappings":";AAEA,SAAS,WAAW,cAAkD;AAU/D,SAAS,oBACd,UACA,UACA,eACM;AACN,QAAM,mBAAmB,OAAO,aAAa;AAC7C,mBAAiB,UAAU;AAC3B,YAAU,MAAM;AACd,UAAM,QAAQ,SAAS;AACvB,UAAM,WAAW,OAAO,cAA2B,+BAA+B;AAClF,QAAI,CAAC,SAAS,CAAC,YAAY,OAAO,mBAAmB,YAAa;AAClE,UAAM,WAAW,IAAI,eAAe,CAAC,CAAC,KAAK,MAAM;AAC/C,YAAM,SAAS,OAAO,cAAc,CAAC,GAAG;AACxC,YAAM,UAAU,OAAO,eAAe,CAAC,GAAG;AAC1C,UAAI,WAAW,UAAa,YAAY,OAAW;AAEnD,YAAM,QAA4E;AAAA,QAChF,CAAC,QAAQ,GAAG,GAAG,KAAK,IAAI,GAAG,SAAS,OAAO,CAAC;AAAA,QAC5C,GAAG,iBAAiB;AAAA,MACtB;AACA,YAAM,QAAQ,MAAM,QAAQ;AAC5B,UAAI,UAAU,OAAW,OAAM,MAAM,eAAe,QAAQ;AAAA,UACvD,OAAM,MAAM,YAAY,UAAU,OAAO,KAAK,CAAC;AAAA,IACtD,CAAC;AACD,aAAS,QAAQ,QAAQ;AACzB,WAAO,MAAM,SAAS,WAAW;AAAA,EACnC,GAAG,CAAC,UAAU,QAAQ,CAAC;AACzB;","names":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"ChoiceGroup.d.ts","sourceRoot":"","sources":["../../../../src/components/internal/choice-family/ChoiceGroup.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAQ1C,OAAO,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE/D;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,KAAK,SAAS,UAAU,EAClD,KAAK,EAAE,gBAAgB,CAAC,KAAK,CAAC,GAC7B,YAAY,CAoHd;yBAtHe,WAAW"}
1
+ {"version":3,"file":"ChoiceGroup.d.ts","sourceRoot":"","sources":["../../../../src/components/internal/choice-family/ChoiceGroup.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAQ1C,OAAO,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE/D;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,KAAK,SAAS,UAAU,EAClD,KAAK,EAAE,gBAAgB,CAAC,KAAK,CAAC,GAC7B,YAAY,CA4Ed;yBA9Ee,WAAW"}