@seed-design/react 2.6.1 → 3.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (464) hide show
  1. package/lib/components/Accordion/Accordion.cjs +2 -1
  2. package/lib/components/Accordion/Accordion.d.ts.map +1 -1
  3. package/lib/components/Accordion/Accordion.js +2 -1
  4. package/lib/components/ActionButton/ActionButton.cjs +1 -1
  5. package/lib/components/ActionButton/ActionButton.js +1 -1
  6. package/lib/components/AlertDialog/AlertDialog.cjs +34 -0
  7. package/lib/components/AlertDialog/AlertDialog.d.ts +51 -0
  8. package/lib/components/AlertDialog/AlertDialog.d.ts.map +1 -0
  9. package/lib/components/AlertDialog/AlertDialog.js +24 -0
  10. package/lib/components/AlertDialog/AlertDialog.namespace.cjs +22 -0
  11. package/lib/components/AlertDialog/AlertDialog.namespace.d.ts +2 -0
  12. package/lib/components/AlertDialog/AlertDialog.namespace.d.ts.map +1 -0
  13. package/lib/components/AlertDialog/AlertDialog.namespace.js +17 -0
  14. package/lib/components/AlertDialog/AlertDialog.test.d.ts +2 -0
  15. package/lib/components/AlertDialog/AlertDialog.test.d.ts.map +1 -0
  16. package/lib/components/AlertDialog/index.cjs +19 -0
  17. package/lib/components/AlertDialog/index.d.ts +3 -0
  18. package/lib/components/AlertDialog/index.d.ts.map +1 -0
  19. package/lib/components/AlertDialog/index.js +3 -0
  20. package/lib/components/AttachmentDisplay/AttachmentDisplay.cjs +1 -1
  21. package/lib/components/AttachmentDisplay/AttachmentDisplay.js +1 -1
  22. package/lib/components/AttachmentDisplay/AttachmentDisplayItem.cjs +1 -1
  23. package/lib/components/AttachmentDisplay/AttachmentDisplayItem.d.ts.map +1 -1
  24. package/lib/components/AttachmentDisplay/AttachmentDisplayItem.js +1 -1
  25. package/lib/components/AttachmentDisplay/AttachmentDisplayTrigger.cjs +1 -1
  26. package/lib/components/AttachmentDisplay/AttachmentDisplayTrigger.js +1 -1
  27. package/lib/components/AttachmentDisplay/index.cjs +8 -0
  28. package/lib/components/AttachmentDisplay/index.d.ts +2 -0
  29. package/lib/components/AttachmentDisplay/index.d.ts.map +1 -1
  30. package/lib/components/AttachmentDisplay/index.js +2 -1
  31. package/lib/components/AttachmentInput/AttachmentInput.cjs +1 -1
  32. package/lib/components/AttachmentInput/AttachmentInput.js +1 -1
  33. package/lib/components/AttachmentInput/AttachmentInputDropzone.cjs +1 -1
  34. package/lib/components/AttachmentInput/AttachmentInputDropzone.js +1 -1
  35. package/lib/components/AttachmentInput/AttachmentInputItem.cjs +2 -2
  36. package/lib/components/AttachmentInput/AttachmentInputItem.d.ts.map +1 -1
  37. package/lib/components/AttachmentInput/AttachmentInputItem.js +2 -2
  38. package/lib/components/AttachmentInput/AttachmentInputTrigger.cjs +1 -1
  39. package/lib/components/AttachmentInput/AttachmentInputTrigger.js +1 -1
  40. package/lib/components/AttachmentInput/index.cjs +8 -0
  41. package/lib/components/AttachmentInput/index.d.ts +2 -0
  42. package/lib/components/AttachmentInput/index.d.ts.map +1 -1
  43. package/lib/components/AttachmentInput/index.js +2 -1
  44. package/lib/components/Badge/Badge.cjs +52 -10
  45. package/lib/components/Badge/Badge.d.ts +13 -4
  46. package/lib/components/Badge/Badge.d.ts.map +1 -1
  47. package/lib/components/Badge/Badge.js +49 -11
  48. package/lib/components/Badge/Badge.namespace.cjs +16 -0
  49. package/lib/components/Badge/Badge.namespace.d.ts +2 -0
  50. package/lib/components/Badge/Badge.namespace.d.ts.map +1 -0
  51. package/lib/components/Badge/Badge.namespace.js +11 -0
  52. package/lib/components/Badge/Badge.test.d.ts +2 -0
  53. package/lib/components/Badge/Badge.test.d.ts.map +1 -0
  54. package/lib/components/Badge/index.cjs +11 -1
  55. package/lib/components/Badge/index.d.ts +2 -1
  56. package/lib/components/Badge/index.d.ts.map +1 -1
  57. package/lib/components/Badge/index.js +3 -2
  58. package/lib/components/Checkbox/Checkbox.cjs +2 -2
  59. package/lib/components/Checkbox/Checkbox.d.ts +3 -1
  60. package/lib/components/Checkbox/Checkbox.d.ts.map +1 -1
  61. package/lib/components/Checkbox/Checkbox.js +2 -2
  62. package/lib/components/Checkbox/Checkbox.namespace.d.ts +1 -1
  63. package/lib/components/Checkbox/Checkbox.namespace.d.ts.map +1 -1
  64. package/lib/components/Checkbox/index.d.ts +1 -1
  65. package/lib/components/Checkbox/index.d.ts.map +1 -1
  66. package/lib/components/Chip/Chip.cjs +13 -5
  67. package/lib/components/Chip/Chip.d.ts +13 -2
  68. package/lib/components/Chip/Chip.d.ts.map +1 -1
  69. package/lib/components/Chip/Chip.js +10 -5
  70. package/lib/components/Chip/Chip.namespace.cjs +5 -2
  71. package/lib/components/Chip/Chip.namespace.d.ts +1 -1
  72. package/lib/components/Chip/Chip.namespace.d.ts.map +1 -1
  73. package/lib/components/Chip/Chip.namespace.js +6 -3
  74. package/lib/components/Chip/index.cjs +4 -1
  75. package/lib/components/Chip/index.d.ts +1 -1
  76. package/lib/components/Chip/index.d.ts.map +1 -1
  77. package/lib/components/Chip/index.js +2 -2
  78. package/lib/components/ChipTabs/ChipTabs.cjs +1 -1
  79. package/lib/components/ChipTabs/ChipTabs.js +1 -1
  80. package/lib/components/DatePicker/DatePicker.cjs +192 -190
  81. package/lib/components/DatePicker/DatePicker.d.ts +50 -21
  82. package/lib/components/DatePicker/DatePicker.d.ts.map +1 -1
  83. package/lib/components/DatePicker/DatePicker.js +189 -187
  84. package/lib/components/DatePicker/DatePicker.namespace.cjs +16 -0
  85. package/lib/components/DatePicker/DatePicker.namespace.d.ts +2 -0
  86. package/lib/components/DatePicker/DatePicker.namespace.d.ts.map +1 -0
  87. package/lib/components/DatePicker/DatePicker.namespace.js +11 -0
  88. package/lib/components/DatePicker/index.cjs +11 -4
  89. package/lib/components/DatePicker/index.d.ts +3 -2
  90. package/lib/components/DatePicker/index.d.ts.map +1 -1
  91. package/lib/components/DatePicker/index.js +3 -2
  92. package/lib/components/Dialog/Dialog.cjs +84 -9
  93. package/lib/components/Dialog/Dialog.d.ts +21 -14
  94. package/lib/components/Dialog/Dialog.d.ts.map +1 -1
  95. package/lib/components/Dialog/Dialog.js +80 -9
  96. package/lib/components/Dialog/Dialog.namespace.cjs +2 -0
  97. package/lib/components/Dialog/Dialog.namespace.d.ts +1 -1
  98. package/lib/components/Dialog/Dialog.namespace.d.ts.map +1 -1
  99. package/lib/components/Dialog/Dialog.namespace.js +3 -1
  100. package/lib/components/Dialog/index.cjs +2 -0
  101. package/lib/components/Dialog/index.d.ts +1 -1
  102. package/lib/components/Dialog/index.d.ts.map +1 -1
  103. package/lib/components/Dialog/index.js +2 -2
  104. package/lib/components/HelpBubble/HelpBubble.cjs +18 -5
  105. package/lib/components/HelpBubble/HelpBubble.d.ts +5 -0
  106. package/lib/components/HelpBubble/HelpBubble.d.ts.map +1 -1
  107. package/lib/components/HelpBubble/HelpBubble.js +18 -5
  108. package/lib/components/HelpBubble/HelpBubble.test.d.ts +2 -0
  109. package/lib/components/HelpBubble/HelpBubble.test.d.ts.map +1 -0
  110. package/lib/components/ImageFrame/ImageFrame.cjs +5 -4
  111. package/lib/components/ImageFrame/ImageFrame.d.ts +2 -2
  112. package/lib/components/ImageFrame/ImageFrame.d.ts.map +1 -1
  113. package/lib/components/ImageFrame/ImageFrame.js +6 -5
  114. package/lib/components/List/List.cjs +14 -3
  115. package/lib/components/List/List.d.ts +15 -0
  116. package/lib/components/List/List.d.ts.map +1 -1
  117. package/lib/components/List/List.js +11 -4
  118. package/lib/components/List/List.namespace.cjs +4 -0
  119. package/lib/components/List/List.namespace.d.ts +1 -1
  120. package/lib/components/List/List.namespace.d.ts.map +1 -1
  121. package/lib/components/List/List.namespace.js +5 -1
  122. package/lib/components/List/index.cjs +4 -0
  123. package/lib/components/List/index.d.ts +1 -1
  124. package/lib/components/List/index.d.ts.map +1 -1
  125. package/lib/components/List/index.js +2 -2
  126. package/lib/components/Menu/Menu.cjs +3 -2
  127. package/lib/components/Menu/Menu.d.ts.map +1 -1
  128. package/lib/components/Menu/Menu.js +3 -2
  129. package/lib/components/MenuSheet/MenuSheet.cjs +4 -3
  130. package/lib/components/MenuSheet/MenuSheet.d.ts.map +1 -1
  131. package/lib/components/MenuSheet/MenuSheet.js +4 -3
  132. package/lib/components/NavigationMenu/NavigationMenu.cjs +4 -3
  133. package/lib/components/NavigationMenu/NavigationMenu.d.ts.map +1 -1
  134. package/lib/components/NavigationMenu/NavigationMenu.js +4 -3
  135. package/lib/components/PageBanner/PageBanner.cjs +3 -2
  136. package/lib/components/PageBanner/PageBanner.d.ts.map +1 -1
  137. package/lib/components/PageBanner/PageBanner.js +3 -2
  138. package/lib/components/{ContentDialog/ContentDialog.cjs → Popover/Popover.cjs} +61 -40
  139. package/lib/components/Popover/Popover.d.ts +69 -0
  140. package/lib/components/Popover/Popover.d.ts.map +1 -0
  141. package/lib/components/{ContentDialog/ContentDialog.js → Popover/Popover.js} +49 -29
  142. package/lib/components/Popover/Popover.namespace.cjs +26 -0
  143. package/lib/components/Popover/Popover.namespace.d.ts +2 -0
  144. package/lib/components/Popover/Popover.namespace.d.ts.map +1 -0
  145. package/lib/components/Popover/Popover.namespace.js +21 -0
  146. package/lib/components/Popover/Popover.test.d.ts +2 -0
  147. package/lib/components/Popover/Popover.test.d.ts.map +1 -0
  148. package/lib/components/Popover/index.cjs +23 -0
  149. package/lib/components/Popover/index.d.ts +3 -0
  150. package/lib/components/Popover/index.d.ts.map +1 -0
  151. package/lib/components/Popover/index.js +3 -0
  152. package/lib/components/QuantityPicker/QuantityPicker.d.ts.map +1 -1
  153. package/lib/components/RadioGroup/RadioGroup.cjs +2 -2
  154. package/lib/components/RadioGroup/RadioGroup.d.ts +2 -0
  155. package/lib/components/RadioGroup/RadioGroup.d.ts.map +1 -1
  156. package/lib/components/RadioGroup/RadioGroup.js +2 -2
  157. package/lib/components/RadioGroup/RadioGroup.namespace.d.ts +1 -1
  158. package/lib/components/RadioGroup/RadioGroup.namespace.d.ts.map +1 -1
  159. package/lib/components/RadioGroup/index.d.ts +1 -1
  160. package/lib/components/RadioGroup/index.d.ts.map +1 -1
  161. package/lib/components/RadioGroupField/RadioGroupField.cjs +2 -2
  162. package/lib/components/RadioGroupField/RadioGroupField.d.ts +5 -1
  163. package/lib/components/RadioGroupField/RadioGroupField.d.ts.map +1 -1
  164. package/lib/components/RadioGroupField/RadioGroupField.js +2 -2
  165. package/lib/components/RadioGroupField/RadioGroupField.namespace.d.ts +1 -1
  166. package/lib/components/RadioGroupField/RadioGroupField.namespace.d.ts.map +1 -1
  167. package/lib/components/ReactionButton/ReactionButton.cjs +1 -1
  168. package/lib/components/ReactionButton/ReactionButton.js +1 -1
  169. package/lib/components/ResponsiveDialog/ResponsiveDialog.cjs +13 -13
  170. package/lib/components/ResponsiveDialog/ResponsiveDialog.d.ts +15 -15
  171. package/lib/components/ResponsiveDialog/ResponsiveDialog.d.ts.map +1 -1
  172. package/lib/components/ResponsiveDialog/ResponsiveDialog.js +13 -13
  173. package/lib/components/SegmentedControl/SegmentedControl.cjs +2 -1
  174. package/lib/components/SegmentedControl/SegmentedControl.d.ts.map +1 -1
  175. package/lib/components/SegmentedControl/SegmentedControl.js +2 -1
  176. package/lib/components/Select/Select.cjs +5 -4
  177. package/lib/components/Select/Select.d.ts.map +1 -1
  178. package/lib/components/Select/Select.js +5 -4
  179. package/lib/components/SelectBox/CheckSelectBox.cjs +20 -6
  180. package/lib/components/SelectBox/CheckSelectBox.d.ts +7 -0
  181. package/lib/components/SelectBox/CheckSelectBox.d.ts.map +1 -1
  182. package/lib/components/SelectBox/CheckSelectBox.js +21 -7
  183. package/lib/components/SelectBox/RadioSelectBox.cjs +20 -6
  184. package/lib/components/SelectBox/RadioSelectBox.d.ts +7 -0
  185. package/lib/components/SelectBox/RadioSelectBox.d.ts.map +1 -1
  186. package/lib/components/SelectBox/RadioSelectBox.js +21 -7
  187. package/lib/components/SelectBox/SelectBox.test.d.ts +2 -0
  188. package/lib/components/SelectBox/SelectBox.test.d.ts.map +1 -0
  189. package/lib/components/SideNavigation/SideNavigation.cjs +2 -2
  190. package/lib/components/SideNavigation/SideNavigation.js +2 -2
  191. package/lib/components/SideNavigation/index.cjs +8 -0
  192. package/lib/components/SideNavigation/index.d.ts +1 -0
  193. package/lib/components/SideNavigation/index.d.ts.map +1 -1
  194. package/lib/components/SideNavigation/index.js +2 -1
  195. package/lib/components/SidePanel/SidePanel.d.ts +0 -12
  196. package/lib/components/SidePanel/SidePanel.d.ts.map +1 -1
  197. package/lib/components/Slider/Slider.cjs +1 -1
  198. package/lib/components/Slider/Slider.js +1 -1
  199. package/lib/components/Snackbar/Snackbar.cjs +2 -2
  200. package/lib/components/Snackbar/Snackbar.js +2 -2
  201. package/lib/components/Snackbar/useSnackbarAdapter.cjs +1 -1
  202. package/lib/components/Snackbar/useSnackbarAdapter.js +1 -1
  203. package/lib/components/Stack/Stack.cjs +0 -12
  204. package/lib/components/Stack/Stack.d.ts +0 -8
  205. package/lib/components/Stack/Stack.d.ts.map +1 -1
  206. package/lib/components/Stack/Stack.js +1 -12
  207. package/lib/components/Stack/index.cjs +0 -1
  208. package/lib/components/Stack/index.d.ts +1 -1
  209. package/lib/components/Stack/index.d.ts.map +1 -1
  210. package/lib/components/Stack/index.js +2 -2
  211. package/lib/components/SwipeableMenuSheet/SwipeableMenuSheet.cjs +3 -2
  212. package/lib/components/SwipeableMenuSheet/SwipeableMenuSheet.d.ts.map +1 -1
  213. package/lib/components/SwipeableMenuSheet/SwipeableMenuSheet.js +3 -2
  214. package/lib/components/Switch/Switch.cjs +3 -3
  215. package/lib/components/Switch/Switch.d.ts +5 -1
  216. package/lib/components/Switch/Switch.d.ts.map +1 -1
  217. package/lib/components/Switch/Switch.js +3 -3
  218. package/lib/components/Switch/Switch.namespace.d.ts +1 -1
  219. package/lib/components/Switch/Switch.namespace.d.ts.map +1 -1
  220. package/lib/components/Switch/index.d.ts +1 -1
  221. package/lib/components/Switch/index.d.ts.map +1 -1
  222. package/lib/components/TagGroup/TagGroup.d.ts.map +1 -1
  223. package/lib/components/ToggleButton/ToggleButton.cjs +1 -1
  224. package/lib/components/ToggleButton/ToggleButton.js +1 -1
  225. package/lib/components/WheelPicker/WheelPicker.cjs +11 -12
  226. package/lib/components/WheelPicker/WheelPicker.d.ts +7 -2
  227. package/lib/components/WheelPicker/WheelPicker.d.ts.map +1 -1
  228. package/lib/components/WheelPicker/WheelPicker.js +11 -12
  229. package/lib/components/index.cjs +90 -94
  230. package/lib/components/index.d.ts +2 -12
  231. package/lib/components/index.d.ts.map +1 -1
  232. package/lib/components/index.js +17 -24
  233. package/lib/index.cjs +116 -94
  234. package/lib/index.d.ts +4 -2
  235. package/lib/index.d.ts.map +1 -1
  236. package/lib/index.js +20 -25
  237. package/lib/utils/withContentScale.cjs +30 -0
  238. package/lib/utils/withContentScale.d.ts +12 -0
  239. package/lib/utils/withContentScale.d.ts.map +1 -0
  240. package/lib/utils/withContentScale.js +27 -0
  241. package/lib/utils/withContentScale.test.d.ts +2 -0
  242. package/lib/utils/withContentScale.test.d.ts.map +1 -0
  243. package/package.json +9 -14
  244. package/src/components/Accordion/Accordion.tsx +3 -3
  245. package/src/components/AlertDialog/AlertDialog.namespace.ts +22 -0
  246. package/src/components/AlertDialog/AlertDialog.test.tsx +61 -0
  247. package/src/components/AlertDialog/AlertDialog.tsx +115 -0
  248. package/src/components/AlertDialog/index.ts +24 -0
  249. package/src/components/AttachmentDisplay/AttachmentDisplayItem.tsx +2 -0
  250. package/src/components/AttachmentDisplay/index.ts +10 -0
  251. package/src/components/AttachmentInput/AttachmentInputItem.tsx +2 -0
  252. package/src/components/AttachmentInput/index.ts +10 -0
  253. package/src/components/Badge/Badge.namespace.ts +10 -0
  254. package/src/components/Badge/Badge.test.tsx +56 -0
  255. package/src/components/Badge/Badge.tsx +82 -11
  256. package/src/components/Badge/index.ts +12 -1
  257. package/src/components/Checkbox/Checkbox.namespace.ts +1 -0
  258. package/src/components/Checkbox/Checkbox.tsx +3 -1
  259. package/src/components/Checkbox/index.ts +1 -0
  260. package/src/components/Chip/Chip.namespace.ts +8 -2
  261. package/src/components/Chip/Chip.tsx +34 -7
  262. package/src/components/Chip/index.ts +8 -2
  263. package/src/components/DatePicker/DatePicker.namespace.ts +14 -0
  264. package/src/components/DatePicker/DatePicker.test.tsx +85 -276
  265. package/src/components/DatePicker/DatePicker.tsx +327 -284
  266. package/src/components/DatePicker/index.ts +25 -21
  267. package/src/components/Dialog/Dialog.namespace.ts +4 -0
  268. package/src/components/Dialog/Dialog.tsx +128 -10
  269. package/src/components/Dialog/index.ts +4 -5
  270. package/src/components/HelpBubble/HelpBubble.test.tsx +111 -0
  271. package/src/components/HelpBubble/HelpBubble.tsx +19 -3
  272. package/src/components/ImageFrame/ImageFrame.tsx +12 -4
  273. package/src/components/List/List.namespace.ts +8 -0
  274. package/src/components/List/List.tsx +43 -3
  275. package/src/components/List/index.ts +8 -0
  276. package/src/components/Menu/Menu.tsx +4 -3
  277. package/src/components/MenuSheet/MenuSheet.tsx +20 -17
  278. package/src/components/NavigationMenu/NavigationMenu.tsx +20 -17
  279. package/src/components/PageBanner/PageBanner.tsx +6 -3
  280. package/src/components/Popover/Popover.namespace.ts +30 -0
  281. package/src/components/Popover/Popover.test.tsx +222 -0
  282. package/src/components/Popover/Popover.tsx +282 -0
  283. package/src/components/Popover/index.ts +32 -0
  284. package/src/components/QuantityPicker/QuantityPicker.tsx +2 -0
  285. package/src/components/RadioGroup/RadioGroup.namespace.ts +1 -0
  286. package/src/components/RadioGroup/RadioGroup.tsx +2 -0
  287. package/src/components/RadioGroup/index.ts +1 -0
  288. package/src/components/RadioGroupField/RadioGroupField.namespace.ts +1 -0
  289. package/src/components/RadioGroupField/RadioGroupField.tsx +5 -3
  290. package/src/components/ResponsiveDialog/ResponsiveDialog.tsx +45 -48
  291. package/src/components/SegmentedControl/SegmentedControl.tsx +3 -3
  292. package/src/components/Select/Select.tsx +7 -6
  293. package/src/components/SelectBox/CheckSelectBox.tsx +28 -10
  294. package/src/components/SelectBox/RadioSelectBox.tsx +28 -10
  295. package/src/components/SelectBox/SelectBox.test.tsx +138 -0
  296. package/src/components/SideNavigation/index.ts +5 -0
  297. package/src/components/SidePanel/SidePanel.tsx +1 -16
  298. package/src/components/Stack/Stack.tsx +0 -12
  299. package/src/components/Stack/index.ts +1 -8
  300. package/src/components/SwipeableMenuSheet/SwipeableMenuSheet.tsx +20 -18
  301. package/src/components/Switch/Switch.namespace.ts +1 -0
  302. package/src/components/Switch/Switch.tsx +6 -3
  303. package/src/components/Switch/index.ts +1 -0
  304. package/src/components/TagGroup/TagGroup.tsx +2 -0
  305. package/src/components/WheelPicker/WheelPicker.test.tsx +53 -44
  306. package/src/components/WheelPicker/WheelPicker.tsx +24 -21
  307. package/src/components/index.ts +2 -12
  308. package/src/index.ts +25 -2
  309. package/src/utils/withContentScale.test.tsx +88 -0
  310. package/src/utils/withContentScale.tsx +48 -0
  311. package/lib/components/ActionChip/ActionChip.cjs +0 -15
  312. package/lib/components/ActionChip/ActionChip.d.ts +0 -23
  313. package/lib/components/ActionChip/ActionChip.d.ts.map +0 -1
  314. package/lib/components/ActionChip/ActionChip.js +0 -14
  315. package/lib/components/ActionChip/index.cjs +0 -3
  316. package/lib/components/ActionChip/index.d.ts +0 -2
  317. package/lib/components/ActionChip/index.d.ts.map +0 -1
  318. package/lib/components/ActionChip/index.js +0 -2
  319. package/lib/components/ActionSheet/ActionSheet.cjs +0 -72
  320. package/lib/components/ActionSheet/ActionSheet.d.ts +0 -113
  321. package/lib/components/ActionSheet/ActionSheet.d.ts.map +0 -1
  322. package/lib/components/ActionSheet/ActionSheet.js +0 -61
  323. package/lib/components/ActionSheet/ActionSheet.namespace.cjs +0 -23
  324. package/lib/components/ActionSheet/ActionSheet.namespace.d.ts +0 -2
  325. package/lib/components/ActionSheet/ActionSheet.namespace.d.ts.map +0 -1
  326. package/lib/components/ActionSheet/ActionSheet.namespace.js +0 -18
  327. package/lib/components/ActionSheet/index.cjs +0 -20
  328. package/lib/components/ActionSheet/index.d.ts +0 -3
  329. package/lib/components/ActionSheet/index.d.ts.map +0 -1
  330. package/lib/components/ActionSheet/index.js +0 -3
  331. package/lib/components/Columns/Columns.cjs +0 -38
  332. package/lib/components/Columns/Columns.d.ts +0 -22
  333. package/lib/components/Columns/Columns.d.ts.map +0 -1
  334. package/lib/components/Columns/Columns.js +0 -35
  335. package/lib/components/Columns/index.cjs +0 -4
  336. package/lib/components/Columns/index.d.ts +0 -2
  337. package/lib/components/Columns/index.d.ts.map +0 -1
  338. package/lib/components/Columns/index.js +0 -2
  339. package/lib/components/ContentDialog/ContentDialog.d.ts +0 -50
  340. package/lib/components/ContentDialog/ContentDialog.d.ts.map +0 -1
  341. package/lib/components/ContentDialog/ContentDialog.namespace.cjs +0 -24
  342. package/lib/components/ContentDialog/ContentDialog.namespace.d.ts +0 -2
  343. package/lib/components/ContentDialog/ContentDialog.namespace.d.ts.map +0 -1
  344. package/lib/components/ContentDialog/ContentDialog.namespace.js +0 -19
  345. package/lib/components/ContentDialog/index.cjs +0 -21
  346. package/lib/components/ContentDialog/index.d.ts +0 -3
  347. package/lib/components/ContentDialog/index.d.ts.map +0 -1
  348. package/lib/components/ContentDialog/index.js +0 -3
  349. package/lib/components/ControlChip/ControlChip.cjs +0 -15
  350. package/lib/components/ControlChip/ControlChip.d.ts +0 -28
  351. package/lib/components/ControlChip/ControlChip.d.ts.map +0 -1
  352. package/lib/components/ControlChip/ControlChip.js +0 -14
  353. package/lib/components/ControlChip/index.cjs +0 -3
  354. package/lib/components/ControlChip/index.d.ts +0 -2
  355. package/lib/components/ControlChip/index.d.ts.map +0 -1
  356. package/lib/components/ControlChip/index.js +0 -2
  357. package/lib/components/ExtendedActionSheet/ExtendedActionSheet.cjs +0 -77
  358. package/lib/components/ExtendedActionSheet/ExtendedActionSheet.d.ts +0 -122
  359. package/lib/components/ExtendedActionSheet/ExtendedActionSheet.d.ts.map +0 -1
  360. package/lib/components/ExtendedActionSheet/ExtendedActionSheet.js +0 -65
  361. package/lib/components/ExtendedActionSheet/ExtendedActionSheet.namespace.cjs +0 -24
  362. package/lib/components/ExtendedActionSheet/ExtendedActionSheet.namespace.d.ts +0 -2
  363. package/lib/components/ExtendedActionSheet/ExtendedActionSheet.namespace.d.ts.map +0 -1
  364. package/lib/components/ExtendedActionSheet/ExtendedActionSheet.namespace.js +0 -19
  365. package/lib/components/ExtendedActionSheet/index.cjs +0 -21
  366. package/lib/components/ExtendedActionSheet/index.d.ts +0 -3
  367. package/lib/components/ExtendedActionSheet/index.d.ts.map +0 -1
  368. package/lib/components/ExtendedActionSheet/index.js +0 -3
  369. package/lib/components/ExtendedFab/ExtendedFab.cjs +0 -16
  370. package/lib/components/ExtendedFab/ExtendedFab.d.ts +0 -13
  371. package/lib/components/ExtendedFab/ExtendedFab.d.ts.map +0 -1
  372. package/lib/components/ExtendedFab/ExtendedFab.js +0 -15
  373. package/lib/components/ExtendedFab/index.cjs +0 -3
  374. package/lib/components/ExtendedFab/index.d.ts +0 -2
  375. package/lib/components/ExtendedFab/index.d.ts.map +0 -1
  376. package/lib/components/ExtendedFab/index.js +0 -2
  377. package/lib/components/Fab/Fab.cjs +0 -13
  378. package/lib/components/Fab/Fab.d.ts +0 -13
  379. package/lib/components/Fab/Fab.d.ts.map +0 -1
  380. package/lib/components/Fab/Fab.js +0 -12
  381. package/lib/components/Fab/index.cjs +0 -3
  382. package/lib/components/Fab/index.d.ts +0 -2
  383. package/lib/components/Fab/index.d.ts.map +0 -1
  384. package/lib/components/Fab/index.js +0 -2
  385. package/lib/components/Inline/Inline.cjs +0 -23
  386. package/lib/components/Inline/Inline.d.ts +0 -12
  387. package/lib/components/Inline/Inline.d.ts.map +0 -1
  388. package/lib/components/Inline/Inline.js +0 -21
  389. package/lib/components/Inline/index.cjs +0 -3
  390. package/lib/components/Inline/index.d.ts +0 -2
  391. package/lib/components/Inline/index.d.ts.map +0 -1
  392. package/lib/components/Inline/index.js +0 -2
  393. package/lib/components/InlineBanner/InlineBanner.cjs +0 -39
  394. package/lib/components/InlineBanner/InlineBanner.d.ts +0 -59
  395. package/lib/components/InlineBanner/InlineBanner.d.ts.map +0 -1
  396. package/lib/components/InlineBanner/InlineBanner.js +0 -33
  397. package/lib/components/InlineBanner/InlineBanner.namespace.cjs +0 -18
  398. package/lib/components/InlineBanner/InlineBanner.namespace.d.ts +0 -2
  399. package/lib/components/InlineBanner/InlineBanner.namespace.d.ts.map +0 -1
  400. package/lib/components/InlineBanner/InlineBanner.namespace.js +0 -13
  401. package/lib/components/InlineBanner/index.cjs +0 -15
  402. package/lib/components/InlineBanner/index.d.ts +0 -3
  403. package/lib/components/InlineBanner/index.d.ts.map +0 -1
  404. package/lib/components/InlineBanner/index.js +0 -3
  405. package/lib/components/LinkContent/LinkContent.cjs +0 -14
  406. package/lib/components/LinkContent/LinkContent.d.ts +0 -14
  407. package/lib/components/LinkContent/LinkContent.d.ts.map +0 -1
  408. package/lib/components/LinkContent/LinkContent.js +0 -13
  409. package/lib/components/LinkContent/index.cjs +0 -3
  410. package/lib/components/LinkContent/index.d.ts +0 -2
  411. package/lib/components/LinkContent/index.d.ts.map +0 -1
  412. package/lib/components/LinkContent/index.js +0 -2
  413. package/lib/components/TimePicker/TimePicker.cjs +0 -97
  414. package/lib/components/TimePicker/TimePicker.d.ts +0 -28
  415. package/lib/components/TimePicker/TimePicker.d.ts.map +0 -1
  416. package/lib/components/TimePicker/TimePicker.js +0 -94
  417. package/lib/components/TimePicker/TimePicker.test.d.ts +0 -2
  418. package/lib/components/TimePicker/TimePicker.test.d.ts.map +0 -1
  419. package/lib/components/TimePicker/index.cjs +0 -3
  420. package/lib/components/TimePicker/index.d.ts +0 -2
  421. package/lib/components/TimePicker/index.d.ts.map +0 -1
  422. package/lib/components/TimePicker/index.js +0 -2
  423. package/lib/components/private/WheelPicker.cjs +0 -63
  424. package/lib/components/private/WheelPicker.d.ts +0 -16
  425. package/lib/components/private/WheelPicker.d.ts.map +0 -1
  426. package/lib/components/private/WheelPicker.js +0 -59
  427. package/lib/components/private/WheelPicker.test.d.ts +0 -2
  428. package/lib/components/private/WheelPicker.test.d.ts.map +0 -1
  429. package/lib/primitive.cjs +0 -154
  430. package/lib/primitive.d.ts +0 -18
  431. package/lib/primitive.d.ts.map +0 -1
  432. package/lib/primitive.js +0 -17
  433. package/src/components/ActionChip/ActionChip.tsx +0 -34
  434. package/src/components/ActionChip/index.ts +0 -4
  435. package/src/components/ActionSheet/ActionSheet.namespace.ts +0 -24
  436. package/src/components/ActionSheet/ActionSheet.tsx +0 -192
  437. package/src/components/ActionSheet/index.ts +0 -26
  438. package/src/components/Columns/Columns.tsx +0 -50
  439. package/src/components/Columns/index.ts +0 -1
  440. package/src/components/ContentDialog/ContentDialog.namespace.ts +0 -26
  441. package/src/components/ContentDialog/ContentDialog.tsx +0 -224
  442. package/src/components/ContentDialog/index.ts +0 -33
  443. package/src/components/ControlChip/ControlChip.tsx +0 -38
  444. package/src/components/ControlChip/index.ts +0 -5
  445. package/src/components/ExtendedActionSheet/ExtendedActionSheet.namespace.ts +0 -26
  446. package/src/components/ExtendedActionSheet/ExtendedActionSheet.tsx +0 -220
  447. package/src/components/ExtendedActionSheet/index.ts +0 -28
  448. package/src/components/ExtendedFab/ExtendedFab.tsx +0 -25
  449. package/src/components/ExtendedFab/index.ts +0 -4
  450. package/src/components/Fab/Fab.tsx +0 -21
  451. package/src/components/Fab/index.ts +0 -4
  452. package/src/components/Inline/Inline.tsx +0 -25
  453. package/src/components/Inline/index.ts +0 -1
  454. package/src/components/InlineBanner/InlineBanner.namespace.ts +0 -14
  455. package/src/components/InlineBanner/InlineBanner.tsx +0 -103
  456. package/src/components/InlineBanner/index.ts +0 -16
  457. package/src/components/LinkContent/LinkContent.tsx +0 -23
  458. package/src/components/LinkContent/index.ts +0 -4
  459. package/src/components/TimePicker/TimePicker.test.tsx +0 -166
  460. package/src/components/TimePicker/TimePicker.tsx +0 -163
  461. package/src/components/TimePicker/index.ts +0 -6
  462. package/src/components/private/WheelPicker.test.tsx +0 -55
  463. package/src/components/private/WheelPicker.tsx +0 -110
  464. package/src/primitive.ts +0 -17
@@ -41,6 +41,8 @@ export interface CheckboxRootProps
41
41
  CheckmarkVariantProps,
42
42
  CheckboxPrimitive.RootProps {}
43
43
 
44
+ export interface CheckboxRootPrimitiveProps extends CheckboxPrimitive.RootProps {}
45
+
44
46
  export const CheckboxRoot = Object.assign(
45
47
  forwardRef<HTMLLabelElement, CheckboxRootProps>(({ className, ...props }, ref) => {
46
48
  const [{ checkbox: checkboxVariantProps, checkmark: checkmarkVariantProps }, otherProps] =
@@ -68,7 +70,7 @@ export const CheckboxRoot = Object.assign(
68
70
  ////////////////////////////////////////////////////////////////////////////////////
69
71
 
70
72
  /**
71
- * CheckboxControl combines Checkbox.Primitive with checkmark.root styling
73
+ * CheckboxControl combines Checkbox.Root.Primitive with checkmark.root styling
72
74
  * This enables standalone usage of Checkbox.Control with variants
73
75
  */
74
76
 
@@ -11,6 +11,7 @@ export {
11
11
  type CheckboxIndicatorProps,
12
12
  type CheckboxLabelProps,
13
13
  type CheckboxRootProps,
14
+ type CheckboxRootPrimitiveProps,
14
15
  } from "./Checkbox";
15
16
 
16
17
  export * as Checkbox from "./Checkbox.namespace";
@@ -1,10 +1,16 @@
1
1
  export {
2
- ChipRoot as Root,
2
+ ChipToggle as Toggle,
3
+ ChipRadioRoot as RadioRoot,
4
+ ChipRadioItem as RadioItem,
5
+ type ChipToggleProps as ToggleProps,
6
+ type ChipRadioRootProps as RadioRootProps,
7
+ type ChipRadioItemProps as RadioItemProps,
8
+ ChipButton as Button,
3
9
  ChipLabel as Label,
4
10
  ChipPrefixIcon as PrefixIcon,
5
11
  ChipPrefixAvatar as PrefixAvatar,
6
12
  ChipSuffixIcon as SuffixIcon,
7
- type ChipRootProps as RootProps,
13
+ type ChipButtonProps as ButtonProps,
8
14
  type ChipLabelProps as LabelProps,
9
15
  type ChipPrefixIconProps as PrefixIconProps,
10
16
  type ChipPrefixAvatarProps as PrefixAvatarProps,
@@ -5,8 +5,11 @@ import { createSlotRecipeContext } from "../../utils/createSlotRecipeContext";
5
5
  import { withScaleFeedback } from "../../utils/withScaleFeedback";
6
6
  import { withIconRequired } from "../Icon/Icon";
7
7
  import { createWithStateProps } from "../../utils/createWithStateProps";
8
- import { useCheckboxContext } from "@seed-design/react-checkbox";
9
- import { useRadioGroupItemContext } from "@seed-design/react-radio-group";
8
+ import { Checkbox as CheckboxPrimitive, useCheckboxContext } from "@seed-design/react-checkbox";
9
+ import {
10
+ RadioGroup as RadioGroupPrimitive,
11
+ useRadioGroupItemContext,
12
+ } from "@seed-design/react-radio-group";
10
13
 
11
14
  const { withProvider, withContext } = createSlotRecipeContext(chip);
12
15
  const withStateProps = createWithStateProps([
@@ -16,16 +19,40 @@ const withStateProps = createWithStateProps([
16
19
 
17
20
  ////////////////////////////////////////////////////////////////////////////////////
18
21
 
19
- export interface ChipRootProps
22
+ export interface ChipButtonProps
20
23
  extends PrimitiveProps,
21
24
  ChipVariantProps,
22
25
  React.ButtonHTMLAttributes<HTMLButtonElement> {}
23
26
 
24
- export const ChipRoot = withIconRequired(
25
- withScaleFeedback(withProvider<HTMLButtonElement, ChipRootProps>(Primitive.button, "root")),
26
- (props: ChipRootProps) => props.layout === "iconOnly",
27
+ export const ChipButton = withIconRequired(
28
+ withScaleFeedback(withProvider<HTMLButtonElement, ChipButtonProps>(Primitive.button, "root")),
29
+ (props: ChipButtonProps) => props.layout === "iconOnly",
27
30
  );
28
- ChipRoot.displayName = "Chip.Root";
31
+ ChipButton.displayName = "Chip.Button";
32
+
33
+ export interface ChipToggleProps extends ChipVariantProps, CheckboxPrimitive.RootProps {}
34
+
35
+ export const ChipToggle = withIconRequired(
36
+ withScaleFeedback(
37
+ withProvider<HTMLLabelElement, ChipToggleProps>(CheckboxPrimitive.Root, "root"),
38
+ ),
39
+ (props: ChipToggleProps) => props.layout === "iconOnly",
40
+ );
41
+ ChipToggle.displayName = "Chip.Toggle";
42
+
43
+ export interface ChipRadioRootProps extends RadioGroupPrimitive.RootProps {}
44
+
45
+ export const ChipRadioRoot = RadioGroupPrimitive.Root;
46
+
47
+ export interface ChipRadioItemProps extends ChipVariantProps, RadioGroupPrimitive.ItemProps {}
48
+
49
+ export const ChipRadioItem = withIconRequired(
50
+ withScaleFeedback(
51
+ withProvider<HTMLLabelElement, ChipRadioItemProps>(RadioGroupPrimitive.Item, "root"),
52
+ ),
53
+ (props: ChipRadioItemProps) => props.layout === "iconOnly",
54
+ );
55
+ ChipRadioItem.displayName = "Chip.RadioItem";
29
56
 
30
57
  ////////////////////////////////////////////////////////////////////////////////////
31
58
 
@@ -1,10 +1,16 @@
1
1
  export {
2
- ChipRoot,
2
+ ChipToggle,
3
+ ChipRadioRoot,
4
+ ChipRadioItem,
5
+ type ChipToggleProps,
6
+ type ChipRadioRootProps,
7
+ type ChipRadioItemProps,
8
+ ChipButton,
3
9
  ChipLabel,
4
10
  ChipPrefixIcon,
5
11
  ChipPrefixAvatar,
6
12
  ChipSuffixIcon,
7
- type ChipRootProps,
13
+ type ChipButtonProps,
8
14
  type ChipLabelProps,
9
15
  type ChipPrefixIconProps,
10
16
  type ChipPrefixAvatarProps,
@@ -0,0 +1,14 @@
1
+ export {
2
+ DatePickerRoot as Root,
3
+ DatePickerHeader as Header,
4
+ DatePickerCalendar as Calendar,
5
+ DatePickerWheel as Wheel,
6
+ type DatePickerRootProps as RootProps,
7
+ type DatePickerHeaderProps as HeaderProps,
8
+ type DatePickerCalendarProps as CalendarProps,
9
+ type DatePickerWheelProps as WheelProps,
10
+ type DatePickerWheelRenderProps as WheelRenderProps,
11
+ type DatePickerWheelColumn as WheelColumn,
12
+ type DatePickerCellContentRenderProps as CellContentRenderProps,
13
+ type DatePickerActions as Actions,
14
+ } from "./DatePicker";
@@ -1,13 +1,7 @@
1
- import { act, fireEvent, render, waitFor } from "@testing-library/react";
2
- import { describe, expect, it, mock } from "bun:test";
3
- import * as React from "react";
4
- import {
5
- ContinuousDatePicker,
6
- DatePicker,
7
- type DatePickerActions,
8
- TwoMonthDatePicker,
9
- WeekDatePicker,
10
- } from "./DatePicker";
1
+ import { act, fireEvent, render } from "@testing-library/react";
2
+ import userEvent from "@testing-library/user-event";
3
+ import { describe, expect, it } from "bun:test";
4
+ import { DatePicker } from "./index";
11
5
 
12
6
  const commonProps = {
13
7
  today: { year: 2026, month: 7, day: 30 },
@@ -15,290 +9,105 @@ const commonProps = {
15
9
  defaultViewDate: { year: 2026, month: 7, day: 1 },
16
10
  } as const;
17
11
 
18
- describe("DatePicker", () => {
19
- it("날짜 grid와 locale에 맞는 기본 접근성 이름을 제공한다", () => {
20
- const { getByRole, getAllByRole, rerender } = render(<DatePicker {...commonProps} />);
12
+ const leftIcon = <svg data-icon="left" />;
13
+ const rightIcon = <svg data-icon="right" />;
14
+ const headerIcon = <svg data-icon="down" />;
21
15
 
22
- expect(getByRole("group")).toHaveAccessibleName("날짜 선택");
23
- expect(getByRole("grid")).toHaveAccessibleName("2026년 7월");
24
- expect(getAllByRole("columnheader")).toHaveLength(7);
25
- expect(getAllByRole("columnheader")[0]?.closest('[role="grid"]')).toBe(getByRole("grid"));
26
-
27
- rerender(<DatePicker {...commonProps} locale="en-US" />);
28
- expect(getByRole("group")).toHaveAccessibleName("Select date");
29
-
30
- rerender(<DatePicker {...commonProps} ariaLabels={{ root: "예약 날짜 선택" }} />);
31
- expect(getByRole("group")).toHaveAccessibleName("예약 날짜 선택");
32
-
33
- rerender(
34
- <DatePicker
35
- {...commonProps}
36
- aria-label="체크인 날짜 선택"
37
- ariaLabels={{ root: "예약 날짜 선택" }}
38
- />,
39
- );
40
- expect(getByRole("group")).toHaveAccessibleName("체크인 날짜 선택");
41
- });
42
-
43
- it("날짜를 선택하고 onValueChange를 호출한다", () => {
44
- const onValueChange = mock(() => {});
45
- const { getByRole } = render(<DatePicker {...commonProps} onValueChange={onValueChange} />);
46
-
47
- fireEvent.click(getByRole("button", { name: /2026년 7월 15일/ }));
48
-
49
- expect(onValueChange).toHaveBeenCalledWith({ year: 2026, month: 7, day: 15 });
50
- });
51
-
52
- it("renderDateCellContent는 SEED가 소유한 날짜 버튼 안의 콘텐츠만 교체한다", () => {
53
- const { getByRole } = render(
54
- <DatePicker
55
- {...commonProps}
56
- renderDateCellContent={({ formattedDay, date }) => (
57
- <>
58
- <span>{formattedDay}</span>
59
- <span>{date.day === 15 ? "12만원" : "예약 가능"}</span>
60
- </>
61
- )}
62
- />,
63
- );
64
- const dateButton = getByRole("button", { name: /2026년 7월 15일/ });
65
-
66
- expect(dateButton).toHaveTextContent("15");
67
- expect(dateButton).toHaveTextContent("12만원");
68
- expect(dateButton.closest('[role="gridcell"]')).not.toBeNull();
69
- expect(dateButton.querySelector("[data-date-picker-day]")).toBeNull();
70
- });
71
-
72
- it("renderDateCellSupplement는 기본 날짜 숫자 아래에 콘텐츠를 추가한다", () => {
73
- const { getByRole } = render(
74
- <DatePicker
75
- {...commonProps}
76
- renderDateCellSupplement={({ date }) => (
77
- <span>{date.day === 15 ? "12만원" : "예약 가능"}</span>
78
- )}
79
- />,
80
- );
81
- const dateButton = getByRole("button", { name: /2026년 7월 15일/ });
82
-
83
- expect(dateButton).toHaveTextContent("15");
84
- expect(dateButton).toHaveTextContent("12만원");
85
- expect(dateButton.querySelector("[data-date-picker-day]")).toHaveTextContent("15");
16
+ // Popover는 layer 등록과 focus 이동·복귀를 다음 tick 이후에 처리합니다.
17
+ const settle = () =>
18
+ act(async () => {
19
+ const { promise, resolve } = Promise.withResolvers<void>();
20
+ setTimeout(resolve, 50);
21
+ await promise;
86
22
  });
87
23
 
88
- it("constraint에 실패한 날짜는 aria-disabled를 유지하며 클릭을 무시한다", () => {
89
- const onValueChange = mock(() => {});
90
- const { getByRole } = render(
91
- <DatePicker
92
- {...commonProps}
93
- constraints={[(date) => date.day >= 10]}
94
- onValueChange={onValueChange}
95
- />,
24
+ describe("DatePicker compound components", () => {
25
+ it("package compound가 달력 DOM과 wheel adapter contract를 소유한다", () => {
26
+ let wheelRenderProps: DatePicker.WheelRenderProps | undefined;
27
+ const { getByRole, queryByRole } = render(
28
+ <DatePicker.Root {...commonProps} visibleRange="month">
29
+ <DatePicker.Header leftIcon={leftIcon} rightIcon={rightIcon} headerIcon={headerIcon} />
30
+ <DatePicker.Calendar leftIcon={leftIcon} rightIcon={rightIcon} />
31
+ <DatePicker.Wheel>
32
+ {(props) => {
33
+ wheelRenderProps = props;
34
+ return <div data-wheel-adapter="" />;
35
+ }}
36
+ </DatePicker.Wheel>
37
+ </DatePicker.Root>,
96
38
  );
97
- const unavailable = getByRole("button", { name: /2026년 7월 9일/ });
98
-
99
- expect(unavailable).toHaveAttribute("aria-disabled", "true");
100
- expect(unavailable).not.toBeDisabled();
101
- fireEvent.click(unavailable);
102
- expect(onValueChange).not.toHaveBeenCalled();
103
- });
104
-
105
- it("읽기 전용 Range 시작일의 상태와 접근성 이름을 노출하고 값 변경을 막는다", () => {
106
- const onValueChange = mock(() => {});
107
- const { getByRole } = render(
108
- <DatePicker
109
- {...commonProps}
110
- selectionMode="range"
111
- rangeStartReadOnly
112
- defaultValue={{
113
- start: { year: 2026, month: 7, day: 7 },
114
- end: { year: 2026, month: 7, day: 9 },
115
- }}
116
- onValueChange={onValueChange}
117
- />,
118
- );
119
- const start = getByRole("button", { name: /2026년 7월 7일.*읽기 전용 시작일/ });
120
-
121
- expect(start).toHaveAttribute("data-range-start-readonly");
122
- expect(start.closest('[role="gridcell"]')).toHaveAttribute("data-range-start-readonly");
123
- expect(start).toHaveAttribute("aria-disabled", "true");
124
- expect(start).not.toBeDisabled();
125
39
 
126
- fireEvent.click(start);
127
- expect(onValueChange).not.toHaveBeenCalled();
128
-
129
- fireEvent.click(getByRole("button", { name: /2026년 7월 12일/ }));
130
- expect(onValueChange).toHaveBeenCalledWith({
131
- start: { year: 2026, month: 7, day: 7 },
132
- end: { year: 2026, month: 7, day: 12 },
133
- });
134
- });
135
-
136
- it("날짜 셀 render prop에 읽기 전용 Range 시작일 상태를 전달한다", () => {
137
- const { getByRole } = render(
138
- <DatePicker
139
- {...commonProps}
140
- selectionMode="range"
141
- rangeStartReadOnly
142
- defaultValue={{ start: { year: 2026, month: 7, day: 7 } }}
143
- renderDateCellSupplement={({ isRangeStartReadOnly }) => (
144
- <span>{isRangeStartReadOnly ? "고정" : "변경 가능"}</span>
145
- )}
146
- />,
147
- );
148
-
149
- expect(getByRole("button", { name: /2026년 7월 7일.*읽기 전용 시작일/ })).toHaveTextContent(
150
- "고정",
151
- );
152
- expect(getByRole("button", { name: /2026년 7월 8일/ })).toHaveTextContent("변경 가능");
153
- });
154
-
155
- it("월·연도 제목을 누르면 Wheel Picker로 전환한다", () => {
156
- const { getByRole, getAllByRole, queryByRole } = render(<DatePicker {...commonProps} />);
40
+ expect(getByRole("grid")).toHaveAccessibleName("2026년 7월");
41
+ expect(
42
+ getByRole("button", { name: "이전 달" }).querySelector('[data-icon="left"]'),
43
+ ).not.toBeNull();
157
44
 
158
- const grid = getByRole("grid");
159
- expect(grid).toBeInTheDocument();
160
45
  fireEvent.click(getByRole("button", { name: "2026년 7월" }));
161
46
 
162
47
  expect(queryByRole("grid")).not.toBeInTheDocument();
163
- expect(grid.closest("[data-wheel-open]")).toHaveAttribute("aria-hidden", "true");
164
- expect(getAllByRole("spinbutton")).toHaveLength(2);
165
- expect(getByRole("spinbutton", { name: "연도" })).toBeInTheDocument();
166
- expect(getByRole("spinbutton", { name: "월" })).toBeInTheDocument();
167
-
168
- const wheelRoot = getByRole("spinbutton", { name: "연도" }).closest('[role="group"]');
169
- expect(wheelRoot).toBeInstanceOf(HTMLElement);
170
- if (!(wheelRoot instanceof HTMLElement))
171
- throw new Error("Wheel Picker 루트를 찾지 못했습니다.");
172
- expect(wheelRoot.style.getPropertyValue("--seed-wheel-picker-item-size")).toBe("44px");
173
- expect(wheelRoot.style.getPropertyValue("--seed-wheel-picker-visible-item-count")).toBe("7");
174
- expect(wheelRoot.style.getPropertyValue("--seed-wheel-picker-viewport-size")).toBe("308px");
175
- expect(wheelRoot.querySelector("[data-wheel-picker-scroll-fog]")).toHaveStyle({
176
- "--scroll-fog-size-top": "102px",
177
- "--scroll-fog-size-bottom": "102px",
48
+ expect(document.querySelector("[data-wheel-adapter]")).toBeInTheDocument();
49
+ expect(wheelRenderProps?.columns.map((column) => column.id)).toEqual(["year", "month"]);
50
+ expect(wheelRenderProps?.rootProps).toMatchObject({
51
+ itemSize: 44,
52
+ visibleItemCount: 7,
53
+ scrollFogSize: 102,
178
54
  });
179
- expect(
180
- getByRole("button", { name: "2026년 7월" }).querySelector("[data-date-picker-header-label]"),
181
- ).toBeInTheDocument();
182
55
  });
183
56
 
184
- it("헤더 아이콘에 Icon의 크기와 접근성 속성을 전달한다", () => {
185
- const { getByRole } = render(<DatePicker {...commonProps} />);
186
-
187
- const headerIcon = getByRole("button", { name: "2026년 7월" }).querySelector("svg");
188
- const previousIcon = getByRole("button", { name: "이전 달" }).querySelector("svg");
189
- const nextIcon = getByRole("button", { name: "다음 달" }).querySelector("svg");
190
-
191
- for (const icon of [headerIcon, previousIcon, nextIcon]) {
192
- expect(icon).toHaveClass("seed-icon");
193
- expect(icon).toHaveAttribute("aria-hidden", "true");
194
- }
195
- });
196
-
197
- it("레이아웃별 공개 컴포넌트가 고정된 달력 범위를 렌더링한다", () => {
198
- const twoMonths = render(<TwoMonthDatePicker {...commonProps} />);
199
- expect(twoMonths.getAllByRole("grid")).toHaveLength(2);
200
- twoMonths.unmount();
201
-
202
- const week = render(<WeekDatePicker {...commonProps} />);
203
- expect(week.getByRole("grid").querySelectorAll('[role="row"]')).toHaveLength(2);
204
- week.unmount();
205
-
206
- const continuous = render(<ContinuousDatePicker {...commonProps} height="400px" />);
207
- expect(continuous.getByRole("group")).toHaveAttribute("data-visible-range", "continuous");
208
- const spacers = continuous.container.querySelectorAll<HTMLElement>(
209
- "[data-date-picker-continuous-spacer]",
210
- );
211
- expect(spacers).toHaveLength(2);
212
- for (const spacer of spacers) {
213
- expect(spacer.style.getPropertyValue("--seed-date-picker-continuous-spacer-height")).toMatch(
214
- /px$/,
215
- );
216
- }
217
- });
218
-
219
- it("ContinuousDatePicker는 monthRange에 포함된 월만 노출한다", () => {
220
- const { getAllByRole, queryByRole } = render(
221
- <ContinuousDatePicker
222
- {...commonProps}
223
- defaultViewDate={{ year: 2026, month: 12, day: 1 }}
224
- monthRange={{
225
- start: { year: 2026, month: 12 },
226
- end: { year: 2027, month: 1 },
227
- }}
228
- height="400px"
229
- />,
230
- );
231
-
232
- expect(getAllByRole("grid")).toHaveLength(2);
233
- expect(queryByRole("grid", { name: "2026년 11월" })).not.toBeInTheDocument();
234
- expect(queryByRole("grid", { name: "2026년 12월" })).toBeInTheDocument();
235
- expect(queryByRole("grid", { name: "2027년 1월" })).toBeInTheDocument();
236
- expect(queryByRole("grid", { name: "2027년 2월" })).not.toBeInTheDocument();
237
- });
238
-
239
- it("navigateToDate는 외부 포커스를 유지하고 오늘을 다음 tab 진입점으로 지정한다", () => {
240
- const actionsRef = React.createRef<DatePickerActions>();
241
- const { getByRole } = render(
242
- <>
243
- <button type="button" onClick={() => actionsRef.current?.navigateToDate(commonProps.today)}>
244
- 오늘로 이동
245
- </button>
246
- <DatePicker {...commonProps} actionsRef={actionsRef} />
247
- </>,
248
- );
249
- const todayButton = getByRole("button", { name: "오늘로 이동" });
250
-
251
- expect(actionsRef.current).not.toBeNull();
252
- todayButton.focus();
253
- fireEvent.click(todayButton);
254
-
255
- expect(document.activeElement).toBe(todayButton);
256
- expect(getByRole("button", { name: /2026년 7월 30일/ }).getAttribute("tabindex")).toBe("0");
257
- });
258
-
259
- it("focusDate는 다른 달로 이동한 뒤 대상 날짜 셀에 DOM 포커스를 둔다", async () => {
260
- const actionsRef = React.createRef<DatePickerActions>();
261
- const onViewDateChange = mock(() => {});
57
+ it("week는 달력을 유지한 채 제목에 붙은 popover에 small wheel을 열고, 닫으면 고른 연도를 반영한다", async () => {
58
+ const user = userEvent.setup();
59
+ let wheelRenderProps: DatePicker.WheelRenderProps | undefined;
262
60
  const { getByRole } = render(
263
- <DatePicker {...commonProps} actionsRef={actionsRef} onViewDateChange={onViewDateChange} />,
61
+ <DatePicker.Root {...commonProps} visibleRange="week">
62
+ <DatePicker.Header leftIcon={leftIcon} rightIcon={rightIcon} headerIcon={headerIcon} />
63
+ <DatePicker.Wheel>
64
+ {(props) => {
65
+ wheelRenderProps = props;
66
+ return <button type="button" data-wheel-adapter="" />;
67
+ }}
68
+ </DatePicker.Wheel>
69
+ <DatePicker.Calendar leftIcon={leftIcon} rightIcon={rightIcon} />
70
+ </DatePicker.Root>,
264
71
  );
265
-
266
- expect(actionsRef.current).not.toBeNull();
267
- act(() => {
268
- actionsRef.current?.focusDate({ year: 2026, month: 8, day: 15 });
269
- });
270
- expect(onViewDateChange).toHaveBeenCalledWith({ year: 2026, month: 8, day: 1 });
271
-
272
- await waitFor(() => {
273
- expect(document.activeElement).toBe(getByRole("button", { name: /2026년 8월 15일/ }));
274
- });
72
+ const label = getByRole("button", { expanded: false });
73
+ await settle();
74
+
75
+ await user.click(label);
76
+ await settle();
77
+
78
+ expect(getByRole("grid")).toBeInTheDocument();
79
+ expect(wheelRenderProps?.rootProps.size).toBe("small");
80
+ const dialog = getByRole("dialog");
81
+ expect(dialog).toHaveAccessibleName(label.textContent ?? "");
82
+ expect(dialog).toContainElement(document.querySelector("[data-wheel-adapter]"));
83
+ expect(dialog).toHaveFocus();
84
+
85
+ act(() => wheelRenderProps?.columns[0]?.onValueChange("2027"));
86
+ await user.keyboard("{Escape}");
87
+ await settle();
88
+
89
+ expect(document.querySelector("[data-wheel-adapter]")).not.toBeInTheDocument();
90
+ expect(label).toHaveTextContent("2027년");
91
+ expect(label).toHaveFocus();
92
+
93
+ await user.click(label);
94
+ await settle();
95
+ expect(label).toHaveAttribute("aria-expanded", "true");
96
+ await user.click(document.body);
97
+ await settle();
98
+ expect(label).toHaveAttribute("aria-expanded", "false");
275
99
  });
276
100
 
277
- it("focusDate는 표시 날짜와 roving focus 대상이 이미 같아도 DOM 포커스를 이동한다", async () => {
278
- const actionsRef = React.createRef<DatePickerActions>();
101
+ it("RTL에서는 semantic navigation에 맞춰 좌우 아이콘을 바꾼다", () => {
279
102
  const { getByRole } = render(
280
- <>
281
- <button type="button" onClick={() => actionsRef.current?.navigateToDate(commonProps.today)}>
282
- 오늘로 이동
283
- </button>
284
- <button type="button" onClick={() => actionsRef.current?.focusDate(commonProps.today)}>
285
- 오늘에 포커스
286
- </button>
287
- <DatePicker {...commonProps} actionsRef={actionsRef} />
288
- </>,
103
+ <DatePicker.Root {...commonProps} locale="ar" visibleRange="month">
104
+ <DatePicker.Header leftIcon={leftIcon} rightIcon={rightIcon} headerIcon={headerIcon} />
105
+ <DatePicker.Calendar leftIcon={leftIcon} rightIcon={rightIcon} />
106
+ </DatePicker.Root>,
289
107
  );
290
- const navigateButton = getByRole("button", { name: "오늘로 이동" });
291
- const focusButton = getByRole("button", { name: "오늘에 포커스" });
292
108
 
293
- navigateButton.focus();
294
- fireEvent.click(navigateButton);
295
- expect(document.activeElement).toBe(navigateButton);
296
-
297
- focusButton.focus();
298
- fireEvent.click(focusButton);
299
-
300
- await waitFor(() => {
301
- expect(document.activeElement).toBe(getByRole("button", { name: /2026년 7월 30일/ }));
302
- });
109
+ expect(
110
+ getByRole("button", { name: "Previous month" }).querySelector('[data-icon="right"]'),
111
+ ).not.toBeNull();
303
112
  });
304
113
  });