@hjmds/react 1.41.1 → 1.42.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (389) hide show
  1. package/README.md +2 -2
  2. package/dist/actions.d.ts +41 -0
  3. package/dist/actions.d.ts.map +1 -1
  4. package/dist/actions.js +40 -3
  5. package/dist/actions.js.map +1 -1
  6. package/dist/activity-chip.d.ts.map +1 -1
  7. package/dist/activity-chip.js +1 -0
  8. package/dist/activity-chip.js.map +1 -1
  9. package/dist/advanced-display.d.ts +47 -14
  10. package/dist/advanced-display.d.ts.map +1 -1
  11. package/dist/advanced-display.js +72 -17
  12. package/dist/advanced-display.js.map +1 -1
  13. package/dist/advanced-forms.d.ts.map +1 -1
  14. package/dist/advanced-forms.js +1 -0
  15. package/dist/advanced-forms.js.map +1 -1
  16. package/dist/affix.d.ts +6 -1
  17. package/dist/affix.d.ts.map +1 -1
  18. package/dist/affix.js +5 -3
  19. package/dist/affix.js.map +1 -1
  20. package/dist/agreement.d.ts.map +1 -1
  21. package/dist/agreement.js +1 -0
  22. package/dist/agreement.js.map +1 -1
  23. package/dist/alert-dialog-queue.d.ts +24 -0
  24. package/dist/alert-dialog-queue.d.ts.map +1 -0
  25. package/dist/alert-dialog-queue.js +44 -0
  26. package/dist/alert-dialog-queue.js.map +1 -0
  27. package/dist/anchor.d.ts.map +1 -1
  28. package/dist/anchor.js +1 -0
  29. package/dist/anchor.js.map +1 -1
  30. package/dist/asset.d.ts.map +1 -1
  31. package/dist/asset.js +1 -0
  32. package/dist/asset.js.map +1 -1
  33. package/dist/auth-screen.d.ts.map +1 -1
  34. package/dist/auth-screen.js +1 -0
  35. package/dist/auth-screen.js.map +1 -1
  36. package/dist/avatar-blobatar-motion.d.ts.map +1 -1
  37. package/dist/avatar-blobatar-motion.js +1 -0
  38. package/dist/avatar-blobatar-motion.js.map +1 -1
  39. package/dist/avatar-blobatar.d.ts.map +1 -1
  40. package/dist/avatar-blobatar.js +1 -0
  41. package/dist/avatar-blobatar.js.map +1 -1
  42. package/dist/bottom-cta.d.ts.map +1 -1
  43. package/dist/bottom-cta.js +1 -0
  44. package/dist/bottom-cta.js.map +1 -1
  45. package/dist/bottom-info.d.ts.map +1 -1
  46. package/dist/bottom-info.js +1 -0
  47. package/dist/bottom-info.js.map +1 -1
  48. package/dist/bottom-navigation.d.ts.map +1 -1
  49. package/dist/bottom-navigation.js +1 -0
  50. package/dist/bottom-navigation.js.map +1 -1
  51. package/dist/breadcrumb.d.ts.map +1 -1
  52. package/dist/breadcrumb.js +1 -0
  53. package/dist/breadcrumb.js.map +1 -1
  54. package/dist/calendar.d.ts.map +1 -1
  55. package/dist/calendar.js +1 -0
  56. package/dist/calendar.js.map +1 -1
  57. package/dist/carousel-motion.d.ts.map +1 -1
  58. package/dist/carousel-motion.js +1 -0
  59. package/dist/carousel-motion.js.map +1 -1
  60. package/dist/carousel.d.ts.map +1 -1
  61. package/dist/carousel.js +1 -0
  62. package/dist/carousel.js.map +1 -1
  63. package/dist/celebration.d.ts.map +1 -1
  64. package/dist/celebration.js +1 -0
  65. package/dist/celebration.js.map +1 -1
  66. package/dist/chart.d.ts +7 -2
  67. package/dist/chart.d.ts.map +1 -1
  68. package/dist/chart.js +6 -3
  69. package/dist/chart.js.map +1 -1
  70. package/dist/choice-row.d.ts +24 -7
  71. package/dist/choice-row.d.ts.map +1 -1
  72. package/dist/choice-row.js +11 -6
  73. package/dist/choice-row.js.map +1 -1
  74. package/dist/clipboard.d.ts.map +1 -1
  75. package/dist/clipboard.js +1 -0
  76. package/dist/clipboard.js.map +1 -1
  77. package/dist/collapsible.d.ts.map +1 -1
  78. package/dist/collapsible.js +1 -0
  79. package/dist/collapsible.js.map +1 -1
  80. package/dist/collection-rail.d.ts.map +1 -1
  81. package/dist/collection-rail.js +3 -1
  82. package/dist/collection-rail.js.map +1 -1
  83. package/dist/color-picker.d.ts.map +1 -1
  84. package/dist/color-picker.js +1 -0
  85. package/dist/color-picker.js.map +1 -1
  86. package/dist/command-palette.d.ts.map +1 -1
  87. package/dist/command-palette.js +1 -0
  88. package/dist/command-palette.js.map +1 -1
  89. package/dist/content-transition.d.ts.map +1 -1
  90. package/dist/content-transition.js +1 -0
  91. package/dist/content-transition.js.map +1 -1
  92. package/dist/context-menu.d.ts.map +1 -1
  93. package/dist/context-menu.js +1 -0
  94. package/dist/context-menu.js.map +1 -1
  95. package/dist/conversation-row.d.ts.map +1 -1
  96. package/dist/conversation-row.js +1 -0
  97. package/dist/conversation-row.js.map +1 -1
  98. package/dist/data-table.d.ts.map +1 -1
  99. package/dist/data-table.js +1 -0
  100. package/dist/data-table.js.map +1 -1
  101. package/dist/date-entry.d.ts.map +1 -1
  102. package/dist/date-entry.js +1 -0
  103. package/dist/date-entry.js.map +1 -1
  104. package/dist/date-picker.d.ts.map +1 -1
  105. package/dist/date-picker.js +1 -0
  106. package/dist/date-picker.js.map +1 -1
  107. package/dist/date-range.d.ts.map +1 -1
  108. package/dist/date-range.js +1 -0
  109. package/dist/date-range.js.map +1 -1
  110. package/dist/design-profile.d.ts.map +1 -1
  111. package/dist/design-profile.js +1 -0
  112. package/dist/design-profile.js.map +1 -1
  113. package/dist/display.d.ts +21 -1
  114. package/dist/display.d.ts.map +1 -1
  115. package/dist/display.js +34 -8
  116. package/dist/display.js.map +1 -1
  117. package/dist/duration-field.d.ts.map +1 -1
  118. package/dist/duration-field.js +1 -0
  119. package/dist/duration-field.js.map +1 -1
  120. package/dist/effect-surface.d.ts.map +1 -1
  121. package/dist/effect-surface.js +1 -0
  122. package/dist/effect-surface.js.map +1 -1
  123. package/dist/evidence.d.ts +1 -1
  124. package/dist/evidence.js +1 -1
  125. package/dist/evidence.js.map +1 -1
  126. package/dist/feedback.d.ts.map +1 -1
  127. package/dist/feedback.js +1 -0
  128. package/dist/feedback.js.map +1 -1
  129. package/dist/field-group.d.ts.map +1 -1
  130. package/dist/field-group.js +1 -0
  131. package/dist/field-group.js.map +1 -1
  132. package/dist/file-picker.d.ts.map +1 -1
  133. package/dist/file-picker.js +1 -0
  134. package/dist/file-picker.js.map +1 -1
  135. package/dist/floating-action-button.d.ts.map +1 -1
  136. package/dist/floating-action-button.js +1 -0
  137. package/dist/floating-action-button.js.map +1 -1
  138. package/dist/folder-preview.d.ts.map +1 -1
  139. package/dist/folder-preview.js +1 -0
  140. package/dist/folder-preview.js.map +1 -1
  141. package/dist/forms.d.ts +30 -6
  142. package/dist/forms.d.ts.map +1 -1
  143. package/dist/forms.js +56 -14
  144. package/dist/forms.js.map +1 -1
  145. package/dist/gravity-letters.d.ts.map +1 -1
  146. package/dist/gravity-letters.js +1 -0
  147. package/dist/gravity-letters.js.map +1 -1
  148. package/dist/grid-reveal.d.ts.map +1 -1
  149. package/dist/grid-reveal.js +1 -0
  150. package/dist/grid-reveal.js.map +1 -1
  151. package/dist/heading.d.ts.map +1 -1
  152. package/dist/heading.js +1 -0
  153. package/dist/heading.js.map +1 -1
  154. package/dist/image-choice.d.ts.map +1 -1
  155. package/dist/image-choice.js +1 -0
  156. package/dist/image-choice.js.map +1 -1
  157. package/dist/image-comparison.d.ts.map +1 -1
  158. package/dist/image-comparison.js +1 -0
  159. package/dist/image-comparison.js.map +1 -1
  160. package/dist/image-viewer.d.ts +22 -1
  161. package/dist/image-viewer.d.ts.map +1 -1
  162. package/dist/image-viewer.js +14 -1
  163. package/dist/image-viewer.js.map +1 -1
  164. package/dist/index.d.ts +3 -3
  165. package/dist/index.d.ts.map +1 -1
  166. package/dist/index.js +1 -1
  167. package/dist/index.js.map +1 -1
  168. package/dist/inline-confirm.d.ts.map +1 -1
  169. package/dist/inline-confirm.js +1 -0
  170. package/dist/inline-confirm.js.map +1 -1
  171. package/dist/internal/document-resource.d.ts.map +1 -1
  172. package/dist/internal/document-resource.js +1 -0
  173. package/dist/internal/document-resource.js.map +1 -1
  174. package/dist/internal/initial-focus.d.ts.map +1 -1
  175. package/dist/internal/initial-focus.js +1 -0
  176. package/dist/internal/initial-focus.js.map +1 -1
  177. package/dist/internal/media-album.d.ts.map +1 -1
  178. package/dist/internal/media-album.js +1 -0
  179. package/dist/internal/media-album.js.map +1 -1
  180. package/dist/internal/message-reactions.d.ts.map +1 -1
  181. package/dist/internal/message-reactions.js +1 -0
  182. package/dist/internal/message-reactions.js.map +1 -1
  183. package/dist/internal/overlay-origin-motion.d.ts.map +1 -1
  184. package/dist/internal/overlay-origin-motion.js +1 -0
  185. package/dist/internal/overlay-origin-motion.js.map +1 -1
  186. package/dist/internal/pending-content.d.ts.map +1 -1
  187. package/dist/internal/pending-content.js +1 -0
  188. package/dist/internal/pending-content.js.map +1 -1
  189. package/dist/internal/photo-source-icon.d.ts.map +1 -1
  190. package/dist/internal/photo-source-icon.js +1 -0
  191. package/dist/internal/photo-source-icon.js.map +1 -1
  192. package/dist/internal/screen-exit.d.ts.map +1 -1
  193. package/dist/internal/screen-exit.js +1 -0
  194. package/dist/internal/screen-exit.js.map +1 -1
  195. package/dist/internal/screen-footer.d.ts.map +1 -1
  196. package/dist/internal/screen-footer.js +1 -0
  197. package/dist/internal/screen-footer.js.map +1 -1
  198. package/dist/internal/spinner.d.ts.map +1 -1
  199. package/dist/internal/spinner.js +1 -0
  200. package/dist/internal/spinner.js.map +1 -1
  201. package/dist/internal/use-composition-action.d.ts.map +1 -1
  202. package/dist/internal/use-composition-action.js +1 -0
  203. package/dist/internal/use-composition-action.js.map +1 -1
  204. package/dist/internal.d.ts.map +1 -1
  205. package/dist/internal.js +1 -0
  206. package/dist/internal.js.map +1 -1
  207. package/dist/layout.d.ts +11 -1
  208. package/dist/layout.d.ts.map +1 -1
  209. package/dist/layout.js +8 -4
  210. package/dist/layout.js.map +1 -1
  211. package/dist/mentions.d.ts.map +1 -1
  212. package/dist/mentions.js +1 -0
  213. package/dist/mentions.js.map +1 -1
  214. package/dist/menu-morph.d.ts.map +1 -1
  215. package/dist/menu-morph.js +1 -0
  216. package/dist/menu-morph.js.map +1 -1
  217. package/dist/menubar.d.ts.map +1 -1
  218. package/dist/menubar.js +1 -0
  219. package/dist/menubar.js.map +1 -1
  220. package/dist/modal.d.ts.map +1 -1
  221. package/dist/modal.js +1 -0
  222. package/dist/modal.js.map +1 -1
  223. package/dist/navigation-bar.d.ts.map +1 -1
  224. package/dist/navigation-bar.js +1 -0
  225. package/dist/navigation-bar.js.map +1 -1
  226. package/dist/navigation.d.ts.map +1 -1
  227. package/dist/navigation.js +1 -0
  228. package/dist/navigation.js.map +1 -1
  229. package/dist/notification-bell.d.ts +1 -1
  230. package/dist/notification-bell.d.ts.map +1 -1
  231. package/dist/notification-bell.js +5 -1
  232. package/dist/notification-bell.js.map +1 -1
  233. package/dist/number-field.d.ts.map +1 -1
  234. package/dist/number-field.js +1 -0
  235. package/dist/number-field.js.map +1 -1
  236. package/dist/overlay-stack.d.ts.map +1 -1
  237. package/dist/overlay-stack.js +1 -0
  238. package/dist/overlay-stack.js.map +1 -1
  239. package/dist/overlays.d.ts.map +1 -1
  240. package/dist/overlays.js +11 -2
  241. package/dist/overlays.js.map +1 -1
  242. package/dist/pagination.d.ts.map +1 -1
  243. package/dist/pagination.js +1 -0
  244. package/dist/pagination.js.map +1 -1
  245. package/dist/popover.d.ts.map +1 -1
  246. package/dist/popover.js +1 -0
  247. package/dist/popover.js.map +1 -1
  248. package/dist/portal.d.ts.map +1 -1
  249. package/dist/portal.js +1 -0
  250. package/dist/portal.js.map +1 -1
  251. package/dist/progressive-blur.d.ts.map +1 -1
  252. package/dist/progressive-blur.js +1 -0
  253. package/dist/progressive-blur.js.map +1 -1
  254. package/dist/provider-button.d.ts.map +1 -1
  255. package/dist/provider-button.js +1 -0
  256. package/dist/provider-button.js.map +1 -1
  257. package/dist/provider.d.ts +9 -1
  258. package/dist/provider.d.ts.map +1 -1
  259. package/dist/provider.js +2 -2
  260. package/dist/provider.js.map +1 -1
  261. package/dist/public-exports.generated.d.ts +3 -0
  262. package/dist/public-exports.generated.d.ts.map +1 -1
  263. package/dist/public-exports.generated.js +9 -0
  264. package/dist/public-exports.generated.js.map +1 -1
  265. package/dist/rating.d.ts.map +1 -1
  266. package/dist/rating.js +1 -0
  267. package/dist/rating.js.map +1 -1
  268. package/dist/reaction-picker.d.ts.map +1 -1
  269. package/dist/reaction-picker.js +1 -0
  270. package/dist/reaction-picker.js.map +1 -1
  271. package/dist/saved-items.d.ts.map +1 -1
  272. package/dist/saved-items.js +1 -0
  273. package/dist/saved-items.js.map +1 -1
  274. package/dist/screen-flows.d.ts +5 -1
  275. package/dist/screen-flows.d.ts.map +1 -1
  276. package/dist/screen-flows.js +13 -4
  277. package/dist/screen-flows.js.map +1 -1
  278. package/dist/screens.d.ts +24 -4
  279. package/dist/screens.d.ts.map +1 -1
  280. package/dist/screens.js +38 -11
  281. package/dist/screens.js.map +1 -1
  282. package/dist/scroll-progress.d.ts.map +1 -1
  283. package/dist/scroll-progress.js +1 -0
  284. package/dist/scroll-progress.js.map +1 -1
  285. package/dist/select.d.ts.map +1 -1
  286. package/dist/select.js +1 -0
  287. package/dist/select.js.map +1 -1
  288. package/dist/selection.d.ts +7 -1
  289. package/dist/selection.d.ts.map +1 -1
  290. package/dist/selection.js +33 -10
  291. package/dist/selection.js.map +1 -1
  292. package/dist/side-panel.d.ts.map +1 -1
  293. package/dist/side-panel.js +1 -0
  294. package/dist/side-panel.js.map +1 -1
  295. package/dist/sidebar.d.ts +21 -2
  296. package/dist/sidebar.d.ts.map +1 -1
  297. package/dist/sidebar.js +40 -20
  298. package/dist/sidebar.js.map +1 -1
  299. package/dist/skip-nav.d.ts.map +1 -1
  300. package/dist/skip-nav.js +1 -0
  301. package/dist/skip-nav.js.map +1 -1
  302. package/dist/slider.d.ts.map +1 -1
  303. package/dist/slider.js +1 -0
  304. package/dist/slider.js.map +1 -1
  305. package/dist/sortable.d.ts.map +1 -1
  306. package/dist/sortable.js +1 -0
  307. package/dist/sortable.js.map +1 -1
  308. package/dist/splitter.d.ts.map +1 -1
  309. package/dist/splitter.js +1 -0
  310. package/dist/splitter.js.map +1 -1
  311. package/dist/statistic-motion.d.ts.map +1 -1
  312. package/dist/statistic-motion.js +1 -0
  313. package/dist/statistic-motion.js.map +1 -1
  314. package/dist/status-text.d.ts.map +1 -1
  315. package/dist/status-text.js +1 -0
  316. package/dist/status-text.js.map +1 -1
  317. package/dist/step-player.d.ts.map +1 -1
  318. package/dist/step-player.js +1 -0
  319. package/dist/step-player.js.map +1 -1
  320. package/dist/steps.d.ts +16 -14
  321. package/dist/steps.d.ts.map +1 -1
  322. package/dist/steps.js +26 -9
  323. package/dist/steps.js.map +1 -1
  324. package/dist/styles.css +140 -35
  325. package/dist/styles.layered.css +140 -35
  326. package/dist/supplemental-display.d.ts.map +1 -1
  327. package/dist/supplemental-display.js +1 -0
  328. package/dist/supplemental-display.js.map +1 -1
  329. package/dist/supplemental-navigation.d.ts.map +1 -1
  330. package/dist/supplemental-navigation.js +1 -0
  331. package/dist/supplemental-navigation.js.map +1 -1
  332. package/dist/swipe-actions.d.ts.map +1 -1
  333. package/dist/swipe-actions.js +1 -0
  334. package/dist/swipe-actions.js.map +1 -1
  335. package/dist/table-family.d.ts.map +1 -1
  336. package/dist/table-family.js +1 -0
  337. package/dist/table-family.js.map +1 -1
  338. package/dist/table-sort-button.d.ts.map +1 -1
  339. package/dist/table-sort-button.js +1 -0
  340. package/dist/table-sort-button.js.map +1 -1
  341. package/dist/tags-input.d.ts.map +1 -1
  342. package/dist/tags-input.js +1 -0
  343. package/dist/tags-input.js.map +1 -1
  344. package/dist/task-list.d.ts.map +1 -1
  345. package/dist/task-list.js +1 -0
  346. package/dist/task-list.js.map +1 -1
  347. package/dist/text-annotation.d.ts.map +1 -1
  348. package/dist/text-annotation.js +1 -0
  349. package/dist/text-annotation.js.map +1 -1
  350. package/dist/text-formats.d.ts.map +1 -1
  351. package/dist/text-formats.js +1 -0
  352. package/dist/text-formats.js.map +1 -1
  353. package/dist/theme.d.ts.map +1 -1
  354. package/dist/theme.js +12 -1
  355. package/dist/theme.js.map +1 -1
  356. package/dist/thinking-orb.d.ts.map +1 -1
  357. package/dist/thinking-orb.js +1 -0
  358. package/dist/thinking-orb.js.map +1 -1
  359. package/dist/toast.d.ts.map +1 -1
  360. package/dist/toast.js +1 -0
  361. package/dist/toast.js.map +1 -1
  362. package/dist/toggle-group.d.ts.map +1 -1
  363. package/dist/toggle-group.js +1 -0
  364. package/dist/toggle-group.js.map +1 -1
  365. package/dist/top-bar.d.ts.map +1 -1
  366. package/dist/top-bar.js +1 -0
  367. package/dist/top-bar.js.map +1 -1
  368. package/dist/top.d.ts.map +1 -1
  369. package/dist/top.js +4 -3
  370. package/dist/top.js.map +1 -1
  371. package/dist/tour.d.ts.map +1 -1
  372. package/dist/tour.js +1 -0
  373. package/dist/tour.js.map +1 -1
  374. package/dist/transfer-list.d.ts.map +1 -1
  375. package/dist/transfer-list.js +1 -0
  376. package/dist/transfer-list.js.map +1 -1
  377. package/dist/tree.d.ts.map +1 -1
  378. package/dist/tree.js +1 -0
  379. package/dist/tree.js.map +1 -1
  380. package/dist/upload-item.d.ts.map +1 -1
  381. package/dist/upload-item.js +1 -0
  382. package/dist/upload-item.js.map +1 -1
  383. package/dist/virtual-list.d.ts.map +1 -1
  384. package/dist/virtual-list.js +1 -0
  385. package/dist/virtual-list.js.map +1 -1
  386. package/dist/voice-note.d.ts.map +1 -1
  387. package/dist/voice-note.js +1 -0
  388. package/dist/voice-note.js.map +1 -1
  389. package/package.json +8 -3
@@ -1 +1 @@
1
- {"version":3,"file":"select.js","sourceRoot":"","sources":["../src/select.tsx"],"names":[],"mappings":"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","sourcesContent":["import { layer } from \"@hjmds/design-contracts/foundations\";\nimport {\n getCollectionNavigationIntent,\n getCollectionNavigationTarget,\n getCollectionTypeaheadMatch,\n reconcileSelectSelection,\n resolveCollectionItem,\n resolveSelectSelectedItem,\n validateCollection,\n type SelectCollectionSectionDescriptor,\n type SelectCollectionSource,\n type SelectOpenChangeReason,\n} from \"@hjmds/design-contracts/components/collection\";\nimport {\n resolveControlAccessibleName,\n selectBehaviorDefaults,\n type AsyncCollectionState,\n type SelectItemDescriptor,\n type WebKeyboardKey,\n} from \"@hjmds/design-contracts/behaviors\";\nimport {\n iconRecipe,\n selectRecipe,\n type SelectDensity,\n type SelectSize,\n} from \"@hjmds/design-contracts/recipes\";\nimport {\n forwardRef,\n useCallback,\n useEffect,\n useId,\n useRef,\n useState,\n type ButtonHTMLAttributes,\n type CSSProperties,\n type FocusEvent,\n type KeyboardEvent,\n type ReactElement,\n type ReactNode,\n type RefAttributes,\n} from \"react\";\nimport { classNames, useControllableState } from \"./internal.js\";\nimport type { HjmCompositionStyleProp } from \"./composition-style.js\";\nimport {\n AnchoredPortal,\n useAnchoredPopup,\n type AnchoredPopupAlign,\n} from \"./portal.js\";\nimport { FieldError } from \"./internal/field-error.js\";\n\nexport type SelectItem<Key extends string = string> = SelectItemDescriptor<Key>;\nexport type SelectSection<\n Key extends string = string,\n SectionKey extends string = string,\n> = SelectCollectionSectionDescriptor<Key, SectionKey>;\n\nexport type SelectLeadingRenderProps = Readonly<{\n color: \"currentColor\";\n size: number;\n}>;\n\nexport type SelectOptionLeadingRenderProps = SelectLeadingRenderProps & Readonly<{\n selected: boolean;\n highlighted: boolean;\n disabled: boolean;\n}>;\n\nconst emptySelectionKey = Symbol(\"hjm-select-empty-selection\");\ntype SelectHighlightKey<Key extends string> = Key | typeof emptySelectionKey;\n\ntype SelectSourceProps<Key extends string, SectionKey extends string> =\n SelectCollectionSource<Key, SectionKey>;\n\ntype SelectSelectionProps<Key extends string> =\n | Readonly<{\n selectedKey: Key | null;\n defaultSelectedKey?: never;\n onSelectionChange(key: Key | null): void;\n }>\n | Readonly<{\n selectedKey?: never;\n defaultSelectedKey?: Key | null;\n onSelectionChange?: (key: Key | null) => void;\n }>;\n\ntype SelectOpenProps =\n | Readonly<{\n open: boolean;\n defaultOpen?: never;\n onOpenChange(open: boolean, reason: SelectOpenChangeReason): void;\n }>\n | Readonly<{\n open?: never;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean, reason: SelectOpenChangeReason) => void;\n }>;\n\ntype SelectLabelProps =\n | Readonly<{ label: string; accessibilityLabel?: string }>\n | Readonly<{ label?: never; accessibilityLabel: string }>;\n\ntype SelectBaseProps<Key extends string> = Omit<\n ButtonHTMLAttributes<HTMLButtonElement>,\n | \"aria-label\"\n | \"children\"\n | \"defaultValue\"\n | \"onChange\"\n | \"role\"\n | \"value\"\n> &\n Readonly<{\n description?: ReactNode;\n error?: ReactNode;\n /** Localized text shown when no item is selected. */\n placeholder: string;\n /** Localized label for the nullable empty-selection option. */\n emptySelectionLabel: string;\n asyncState?: AsyncCollectionState;\n selectedItem?: SelectItemDescriptor<Key>;\n disallowEmptySelection?: boolean;\n loop?: boolean;\n /** Locks interaction without removing the trigger from the focus order. */\n busy?: boolean;\n readOnly?: boolean;\n required?: boolean;\n size?: SelectSize;\n density?: SelectDensity;\n /** Logical listbox alignment against the trigger; automatically mirrors in RTL. */\n align?: AnchoredPopupAlign;\n fieldClassName?: string;\n /**\n * Canonical layout-only placement on the field frame. `style` keeps going to\n * the trigger button, where it always went, so existing callers do not move.\n */\n layoutStyle?: HjmCompositionStyleProp;\n portalContainer?: HTMLElement;\n locale?: string | readonly string[];\n renderLeading?: (\n item: SelectItemDescriptor<Key> | null,\n appearance: SelectLeadingRenderProps,\n ) => ReactNode;\n renderOptionLeading?: (\n item: SelectItemDescriptor<Key>,\n appearance: SelectOptionLeadingRenderProps,\n ) => ReactNode;\n }>;\n\nexport type SelectProps<\n Key extends string = string,\n SectionKey extends string = string,\n> = SelectBaseProps<Key> &\n SelectSourceProps<Key, SectionKey> &\n SelectSelectionProps<Key> &\n SelectOpenProps &\n SelectLabelProps;\n\nfunction SelectInner<Key extends string, SectionKey extends string>(\n props: SelectProps<Key, SectionKey>,\n forwardedRef: React.ForwardedRef<HTMLButtonElement>,\n) {\n const {\n items,\n sections,\n label,\n accessibilityLabel,\n description,\n error,\n placeholder,\n emptySelectionLabel,\n asyncState = { status: \"idle\" },\n selectedItem,\n disallowEmptySelection = selectBehaviorDefaults.disallowEmptySelection,\n loop = selectBehaviorDefaults.loop,\n busy = false,\n readOnly = false,\n size = selectRecipe.defaults.size,\n density = selectRecipe.defaults.density,\n align = \"start\",\n fieldClassName,\n layoutStyle,\n portalContainer,\n locale,\n renderLeading,\n renderOptionLeading,\n className,\n id: idProp,\n name,\n disabled = false,\n required = false,\n selectedKey: selectedKeyProp,\n defaultSelectedKey,\n onSelectionChange,\n open: openProp,\n defaultOpen = false,\n onOpenChange,\n onClick,\n onFocus,\n onBlur,\n onKeyDown,\n ...buttonProps\n } = props;\n const source: SelectCollectionSource<Key, SectionKey> = sections === undefined\n ? { items: items ?? [] }\n : { sections };\n validateCollection(source);\n const accessibleName = resolveControlAccessibleName(\n label,\n accessibilityLabel,\n \"Select\",\n );\n if (placeholder.trim().length === 0) throw new TypeError(\"Select placeholder must not be empty\");\n if (emptySelectionLabel.trim().length === 0) {\n throw new TypeError(\"Select emptySelectionLabel must not be empty\");\n }\n const flatItems = source.sections\n ? source.sections.flatMap((section) => section.items)\n : source.items;\n if (\n flatItems.length === 0 &&\n (asyncState.status === \"idle\" || asyncState.status === \"loadingMore\")\n ) {\n throw new TypeError(\"Select requires options unless its async state is transient or empty\");\n }\n const initialSelectionRef = useRef<Readonly<{ value: Key | null }> | null>(null);\n if (initialSelectionRef.current === null) {\n initialSelectionRef.current = {\n value: reconcileSelectSelection(\n source,\n selectedKeyProp ?? defaultSelectedKey ?? null,\n {\n disallowEmptySelection,\n asyncState,\n ...(selectedItem === undefined ? {} : { selectedItem }),\n },\n ),\n };\n }\n const [storedSelectedKey, setSelectedKey] = useControllableState<Key | null>({\n ...(selectedKeyProp === undefined ? {} : { value: selectedKeyProp }),\n defaultValue: initialSelectionRef.current.value,\n ...(onSelectionChange === undefined ? {} : { onChange: onSelectionChange }),\n });\n const reconciledSelectedKey = reconcileSelectSelection(source, storedSelectedKey, {\n disallowEmptySelection,\n asyncState,\n ...(selectedItem === undefined ? {} : { selectedItem }),\n });\n const reconciliationRequestRef = useRef<string | undefined>(undefined);\n useEffect(() => {\n if (storedSelectedKey === reconciledSelectedKey) {\n reconciliationRequestRef.current = undefined;\n return;\n }\n const token = `${storedSelectedKey ?? \"<empty>\"}->${reconciledSelectedKey ?? \"<empty>\"}`;\n if (reconciliationRequestRef.current === token) return;\n reconciliationRequestRef.current = token;\n setSelectedKey(reconciledSelectedKey);\n }, [reconciledSelectedKey, setSelectedKey, storedSelectedKey]);\n const resolvedSelectedItem = resolveSelectSelectedItem(\n source,\n reconciledSelectedKey,\n selectedItem !== undefined && selectedItem.id === reconciledSelectedKey\n ? selectedItem\n : undefined,\n );\n\n const [internalOpen, setInternalOpen] = useState(defaultOpen);\n const openControlled = openProp !== undefined;\n const open = openControlled ? openProp : internalOpen;\n const pendingOpenRequestRef = useRef<boolean | undefined>(undefined);\n useEffect(() => {\n if (pendingOpenRequestRef.current === open) pendingOpenRequestRef.current = undefined;\n }, [open]);\n const changeOpen = useCallback(\n (nextOpen: boolean, reason: SelectOpenChangeReason) => {\n if (nextOpen === open || pendingOpenRequestRef.current === nextOpen) return;\n pendingOpenRequestRef.current = nextOpen;\n if (!openControlled) setInternalOpen(nextOpen);\n onOpenChange?.(nextOpen, reason);\n if (openControlled && nextOpen) {\n queueMicrotask(() => {\n if (pendingOpenRequestRef.current === true) {\n pendingOpenRequestRef.current = undefined;\n }\n });\n }\n },\n [onOpenChange, open, openControlled],\n );\n\n useEffect(() => {\n // A field locked while open must stop presenting an actionable option list.\n if (open && (disabled || readOnly)) changeOpen(false, \"programmatic\");\n }, [changeOpen, disabled, open, readOnly]);\n\n const generatedId = useId().replaceAll(\":\", \"\");\n const controlId = idProp ?? `hjm-select-${generatedId}`;\n const listboxId = `${controlId}-listbox`;\n const descriptionId = `${controlId}-description`;\n const errorId = `${controlId}-error`;\n const optionId = (key: Key) =>\n `${controlId}-option-${flatItems.findIndex((item) => item.id === key)}`;\n const rootRef = useRef<HTMLDivElement>(null);\n const triggerRef = useRef<HTMLButtonElement | null>(null);\n const listboxRef = useRef<HTMLDivElement | null>(null);\n const [listboxNode, setListboxNode] = useState<HTMLDivElement | null>(null);\n const optionRefs = useRef(new Map<SelectHighlightKey<Key>, HTMLDivElement>());\n const typeaheadRef = useRef({ value: \"\", time: 0 });\n const restoreFocusRef = useRef(false);\n const showOptions = asyncState.status === \"idle\" || asyncState.status === \"loadingMore\";\n const emptySelectionAvailable = !disallowEmptySelection && showOptions;\n const selectionItemInSource = resolveCollectionItem(source, reconciledSelectedKey);\n const initialHighlight = selectionItemInSource && !selectionItemInSource.disabled\n ? selectionItemInSource.id\n : reconciledSelectedKey === null && emptySelectionAvailable\n ? emptySelectionKey\n : getCollectionNavigationTarget(source, null, \"first\", loop) ?? null;\n const [highlightedKey, setHighlightedKey] = useState<SelectHighlightKey<Key> | null>(\n initialHighlight,\n );\n const highlightedItem = showOptions && highlightedKey !== emptySelectionKey\n ? resolveCollectionItem(source, highlightedKey)\n : null;\n const activeKey: SelectHighlightKey<Key> | null = highlightedItem && !highlightedItem.disabled\n ? highlightedItem.id\n : highlightedKey === emptySelectionKey && emptySelectionAvailable\n ? emptySelectionKey\n : null;\n const activeOptionId = activeKey === emptySelectionKey\n ? `${controlId}-option-empty`\n : activeKey === null\n ? undefined\n : optionId(activeKey);\n const popupPosition = useAnchoredPopup(triggerRef, listboxNode, {\n align,\n // Offset and edge padding come from selectRecipe.popover (2026-10-06 follow-up); the helper\n // default edge padding 16 disagreed with the recipe's collisionPadding 8.\n gap: selectRecipe.popover.sideOffset,\n viewportPadding: selectRecipe.popover.collisionPadding,\n matchAnchorWidth: true,\n zIndex: layer.dropdown,\n });\n const setListboxRef = useCallback((node: HTMLDivElement | null) => {\n listboxRef.current = node;\n setListboxNode(node);\n }, []);\n\n useEffect(() => {\n if (!open) {\n if (restoreFocusRef.current) {\n restoreFocusRef.current = false;\n queueMicrotask(() => triggerRef.current?.focus());\n }\n return;\n }\n if (activeKey === null && showOptions) setHighlightedKey(initialHighlight);\n }, [activeKey, initialHighlight, open, showOptions]);\n useEffect(() => {\n if (open && activeKey !== null) {\n optionRefs.current.get(activeKey)?.scrollIntoView({ block: \"nearest\" });\n }\n }, [activeKey, open]);\n useEffect(() => {\n if (!open) return;\n const handlePointerDown = (event: PointerEvent) => {\n if (\n event.target instanceof Node &&\n !rootRef.current?.contains(event.target) &&\n !listboxRef.current?.contains(event.target)\n ) {\n changeOpen(false, \"outside\");\n }\n };\n document.addEventListener(\"pointerdown\", handlePointerDown);\n return () => document.removeEventListener(\"pointerdown\", handlePointerDown);\n }, [changeOpen, open]);\n\n const openWithIntent = (intent: \"first\" | \"last\" = \"first\") => {\n if (disabled || busy || readOnly) return;\n const selectedInSource = resolveCollectionItem(source, reconciledSelectedKey);\n const target = selectedInSource && !selectedInSource.disabled\n ? selectedInSource.id\n : reconciledSelectedKey === null && emptySelectionAvailable\n ? emptySelectionKey\n // The empty-selection entry renders first in the listbox, so only the\n // \"first\" intent (Home/ArrowDown on a closed trigger) lands on it; \"last\"\n // (End/ArrowUp) must reach the last real option. The previous mapping sent\n // \"last\" to the empty entry, which contradicted DOM order. See issue #18.\n : intent === \"first\" && emptySelectionAvailable\n ? emptySelectionKey\n : getCollectionNavigationTarget(source, null, intent, loop) ?? null;\n setHighlightedKey(target);\n changeOpen(true, \"keyboard\");\n };\n const moveHighlight = (intent: \"next\" | \"previous\" | \"first\" | \"last\") => {\n const enabledKeys = flatItems\n .filter((item) => !item.disabled)\n .map((item) => item.id);\n const firstKey = enabledKeys[0];\n const lastKey = enabledKeys.at(-1);\n // Treat the empty-selection entry as the first row, matching DOM order. `loop`\n // only joins the two ends of the list: moving between the empty entry and the\n // first option is adjacency, not a wrap, so it stays loop-independent. The\n // previous code gated that \"next\" on `loop`, which trapped the arrow keys on the\n // empty entry for every Select using the defaults (disallowEmptySelection: false,\n // loop: false). See issue #18.\n if (emptySelectionAvailable) {\n if (intent === \"first\") {\n setHighlightedKey(emptySelectionKey);\n return;\n }\n if (activeKey === emptySelectionKey) {\n if (intent === \"next\") {\n if (firstKey !== undefined) setHighlightedKey(firstKey);\n return;\n }\n if (intent === \"previous\") {\n if (loop && lastKey !== undefined) setHighlightedKey(lastKey);\n return;\n }\n // intent === \"last\" falls through: the shared path picks the last option.\n } else {\n if (intent === \"previous\" && activeKey === firstKey) {\n setHighlightedKey(emptySelectionKey);\n return;\n }\n if (intent === \"next\" && activeKey === lastKey && loop) {\n setHighlightedKey(emptySelectionKey);\n return;\n }\n }\n }\n const target = getCollectionNavigationTarget(\n source,\n activeKey === emptySelectionKey ? null : activeKey,\n intent,\n loop,\n );\n if (target !== undefined) setHighlightedKey(target);\n };\n const commit = (key: SelectHighlightKey<Key>) => {\n if (key === emptySelectionKey) {\n if (disabled || busy || readOnly || !emptySelectionAvailable) return;\n setSelectedKey(null);\n restoreFocusRef.current = true;\n changeOpen(false, \"selection\");\n return;\n }\n const item = resolveCollectionItem(source, key);\n if (\n !item ||\n item.disabled ||\n disabled ||\n busy ||\n readOnly ||\n asyncState.status === \"loading\"\n ) return;\n setSelectedKey(key);\n restoreFocusRef.current = true;\n changeOpen(false, \"selection\");\n };\n const runTypeahead = (key: string) => {\n const now = Date.now();\n const previous = now - typeaheadRef.current.time < 500\n ? typeaheadRef.current.value\n : \"\";\n const combined = `${previous}${key}`;\n const query = new Set(combined.toLocaleLowerCase()).size === 1 ? key : combined;\n typeaheadRef.current = { value: combined, time: now };\n const match = getCollectionTypeaheadMatch(source, query, {\n startsAfterKey: activeKey === emptySelectionKey\n ? reconciledSelectedKey\n : activeKey ?? reconciledSelectedKey,\n ...(locale === undefined ? {} : { locale }),\n });\n if (match !== undefined) {\n setHighlightedKey(match);\n if (!open) changeOpen(true, \"keyboard\");\n }\n };\n const handleKeyDown = (event: KeyboardEvent<HTMLButtonElement>) => {\n onKeyDown?.(event);\n if (event.defaultPrevented || disabled || busy || readOnly) return;\n const navigationIntent = getCollectionNavigationIntent(\n event.key as WebKeyboardKey,\n );\n if (navigationIntent !== undefined) {\n event.preventDefault();\n if (!open) {\n openWithIntent(\n navigationIntent === \"previous\" || navigationIntent === \"last\"\n ? \"last\"\n : \"first\",\n );\n }\n else moveHighlight(navigationIntent);\n return;\n }\n if (event.key === \"Enter\" || event.key === \" \") {\n event.preventDefault();\n if (!open) openWithIntent();\n else if (activeKey !== null) commit(activeKey);\n } else if (event.key === \"Escape\" && open) {\n event.preventDefault();\n restoreFocusRef.current = true;\n changeOpen(false, \"escape\");\n } else if (event.key === \"Tab\" && open) {\n changeOpen(false, \"blur\");\n } else if (\n event.key.length === 1 &&\n event.key !== \" \" &&\n !event.altKey &&\n !event.ctrlKey &&\n !event.metaKey\n ) {\n event.preventDefault();\n runTypeahead(event.key);\n }\n };\n const handleBlur = (event: FocusEvent<HTMLButtonElement>) => {\n onBlur?.(event);\n if (event.defaultPrevented) return;\n queueMicrotask(() => {\n if (\n open &&\n document.activeElement instanceof Node &&\n !rootRef.current?.contains(document.activeElement) &&\n !listboxRef.current?.contains(document.activeElement)\n ) changeOpen(false, \"blur\");\n });\n };\n const describedBy = error ? errorId : description ? descriptionId : undefined;\n\n const renderOption = (item: SelectItemDescriptor<Key>) => {\n const selected = item.id === reconciledSelectedKey;\n const active = item.id === activeKey;\n const leadingSize = iconRecipe.sizes[selectRecipe.optionLeading.glyph];\n const leading = renderOptionLeading?.(item, {\n selected,\n highlighted: active,\n disabled: item.disabled ?? false,\n color: \"currentColor\",\n size: leadingSize,\n });\n return (\n <div\n key={item.id}\n ref={(node) => {\n if (node) optionRefs.current.set(item.id, node);\n else optionRefs.current.delete(item.id);\n }}\n id={optionId(item.id)}\n role=\"option\"\n className=\"hjm-select__option\"\n aria-selected={selected}\n aria-disabled={item.disabled || undefined}\n data-state={item.disabled ? \"disabled\" : selected ? \"selected\" : \"idle\"}\n data-active={active || undefined}\n onMouseDown={(event) => event.preventDefault()}\n onMouseMove={() => {\n if (!item.disabled) setHighlightedKey(item.id);\n }}\n onClick={() => commit(item.id)}\n >\n {leading ? (\n <span className=\"hjm-select__option-leading\" aria-hidden=\"true\">\n {leading}\n </span>\n ) : null}\n <span className=\"hjm-select__option-copy\">\n <span>{item.label}</span>\n {item.description ? (\n <span className=\"hjm-select__option-description\">{item.description}</span>\n ) : null}\n </span>\n {selected ? <span className=\"hjm-select__check\" aria-hidden=\"true\">✓</span> : null}\n </div>\n );\n };\n\n const triggerLeadingSize = iconRecipe.sizes[selectRecipe.sizes[size].glyph];\n const triggerLeading = renderLeading?.(resolvedSelectedItem, {\n color: \"currentColor\",\n size: triggerLeadingSize,\n });\n\n return (\n <div\n ref={rootRef}\n className={classNames(\"hjm-field hjm-select\", fieldClassName)}\n // fieldRecipe.disabledScope fades label and trigger; the amount is selectRecipe.states,\n // which Native already read (Web used the frame default 0.6 until 2026-10-06).\n style={disabled\n ? ({ ...layoutStyle, \"--hjm-field-disabled-opacity\": selectRecipe.states.disabledOpacity } as CSSProperties)\n : layoutStyle}\n data-state={disabled ? \"disabled\" : error ? \"invalid\" : open ? \"focused\" : \"idle\"}\n data-size={size}\n data-density={density}\n data-async-state={asyncState.status}\n data-busy={busy || undefined}\n >\n {label !== undefined ? (\n <label className=\"hjm-field__label\" htmlFor={controlId}>\n {label}{required ? <span aria-hidden=\"true\"> *</span> : null}\n </label>\n ) : null}\n <div className=\"hjm-select__anchor\">\n <button\n {...buttonProps}\n ref={(node) => {\n triggerRef.current = node;\n if (typeof forwardedRef === \"function\") forwardedRef(node);\n else if (forwardedRef) forwardedRef.current = node;\n }}\n id={controlId}\n type=\"button\"\n role=\"combobox\"\n className={classNames(\"hjm-field__control hjm-select__trigger\", className)}\n disabled={disabled}\n aria-disabled={busy || undefined}\n aria-label={accessibilityLabel ?? (label === undefined ? accessibleName : undefined)}\n aria-haspopup=\"listbox\"\n aria-expanded={open}\n aria-controls={open ? listboxId : undefined}\n aria-activedescendant={open ? activeOptionId : undefined}\n aria-busy={busy || asyncState.status === \"loading\" || asyncState.status === \"loadingMore\" || undefined}\n data-busy={busy || undefined}\n aria-invalid={error ? true : undefined}\n aria-describedby={describedBy}\n aria-readonly={readOnly || undefined}\n aria-required={required || undefined}\n onFocus={onFocus}\n onBlur={handleBlur}\n onKeyDown={handleKeyDown}\n onClick={(event) => {\n onClick?.(event);\n if (event.defaultPrevented || disabled || busy || readOnly) return;\n if (open) changeOpen(false, \"trigger\");\n else openWithIntent();\n }}\n >\n {triggerLeading ? (\n <span className=\"hjm-select__leading\" aria-hidden=\"true\">\n {triggerLeading}\n </span>\n ) : null}\n <span\n className=\"hjm-select__value\"\n data-state={resolvedSelectedItem ? \"selected\" : \"placeholder\"}\n >\n {resolvedSelectedItem?.label ?? placeholder}\n </span>\n {busy ? (\n <span className=\"hjm-select__busy-overlay\" aria-hidden=\"true\"><span className=\"hjm-select__busy-indicator\" /></span>\n ) : (\n <span className=\"hjm-select__indicator\" aria-hidden=\"true\">⌄</span>\n )}\n </button>\n {open ? (\n <AnchoredPortal\n anchorRef={triggerRef}\n ssrFallback=\"inline\"\n {...(portalContainer === undefined ? {} : { container: portalContainer })}\n >\n <div\n ref={setListboxRef}\n id={listboxId}\n role=\"listbox\"\n aria-label={accessibleName}\n className=\"hjm-select__listbox\"\n data-density={density}\n data-placement={popupPosition.placement}\n data-align={popupPosition.align}\n style={popupPosition.style}\n >\n {asyncState.status !== \"idle\" ? (\n <div\n className=\"hjm-select__message\"\n role={asyncState.status === \"error\" ? \"alert\" : \"status\"}\n >\n {asyncState.status === \"loading\" || asyncState.status === \"loadingMore\" ? <span className=\"hjm-visually-hidden\">{asyncState.message}</span> : asyncState.message}\n </div>\n ) : null}\n {/* Rendered before the options: with no selection the active descendant\n starts on this entry, and a trailing position made that starting point\n the bottom of the list, where ArrowDown has nowhere to go (issue #18).\n moveHighlight follows this DOM order. */}\n {!disallowEmptySelection && showOptions ? (\n <div\n ref={(node) => {\n if (node) optionRefs.current.set(emptySelectionKey, node);\n else optionRefs.current.delete(emptySelectionKey);\n }}\n id={`${controlId}-option-empty`}\n role=\"option\"\n className=\"hjm-select__option hjm-select__option--empty\"\n aria-selected={reconciledSelectedKey === null}\n data-state={reconciledSelectedKey === null ? \"selected\" : \"idle\"}\n data-active={activeKey === emptySelectionKey || undefined}\n onMouseDown={(event) => event.preventDefault()}\n onMouseMove={() => setHighlightedKey(emptySelectionKey)}\n onClick={() => commit(emptySelectionKey)}\n >\n {emptySelectionLabel}\n </div>\n ) : null}\n {showOptions ? (\n source.sections ? source.sections.map((section) => {\n const sectionLabelId = `${controlId}-section-${section.id}`;\n return (\n <div\n key={section.id}\n role=\"group\"\n aria-labelledby={section.label ? sectionLabelId : undefined}\n aria-label={section.label ? undefined : section.accessibilityLabel}\n className=\"hjm-select__section\"\n >\n {section.label ? (\n <div id={sectionLabelId} className=\"hjm-select__section-label\">\n {section.label}\n </div>\n ) : null}\n {section.items.map(renderOption)}\n </div>\n );\n }) : source.items.map(renderOption)\n ) : null}\n </div>\n </AnchoredPortal>\n ) : null}\n </div>\n {description && !error ? (\n <div id={descriptionId} className=\"hjm-field__description\">{description}</div>\n ) : null}\n <FieldError id={errorId} error={error} />\n {name ? <input type=\"hidden\" name={name} value={reconciledSelectedKey ?? \"\"} /> : null}\n </div>\n );\n}\n\nexport const Select = forwardRef(SelectInner) as <\n Key extends string = string,\n SectionKey extends string = string,\n>(\n props: SelectProps<Key, SectionKey> & RefAttributes<HTMLButtonElement>,\n) => ReactElement | null;\n"]}
1
+ {"version":3,"file":"select.js","sourceRoot":"","sources":["../src/select.tsx"],"names":[],"mappings":"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","sourcesContent":["\"use client\";\n\nimport { layer } from \"@hjmds/design-contracts/foundations\";\nimport {\n getCollectionNavigationIntent,\n getCollectionNavigationTarget,\n getCollectionTypeaheadMatch,\n reconcileSelectSelection,\n resolveCollectionItem,\n resolveSelectSelectedItem,\n validateCollection,\n type SelectCollectionSectionDescriptor,\n type SelectCollectionSource,\n type SelectOpenChangeReason,\n} from \"@hjmds/design-contracts/components/collection\";\nimport {\n resolveControlAccessibleName,\n selectBehaviorDefaults,\n type AsyncCollectionState,\n type SelectItemDescriptor,\n type WebKeyboardKey,\n} from \"@hjmds/design-contracts/behaviors\";\nimport {\n iconRecipe,\n selectRecipe,\n type SelectDensity,\n type SelectSize,\n} from \"@hjmds/design-contracts/recipes\";\nimport {\n forwardRef,\n useCallback,\n useEffect,\n useId,\n useRef,\n useState,\n type ButtonHTMLAttributes,\n type CSSProperties,\n type FocusEvent,\n type KeyboardEvent,\n type ReactElement,\n type ReactNode,\n type RefAttributes,\n} from \"react\";\nimport { classNames, useControllableState } from \"./internal.js\";\nimport type { HjmCompositionStyleProp } from \"./composition-style.js\";\nimport {\n AnchoredPortal,\n useAnchoredPopup,\n type AnchoredPopupAlign,\n} from \"./portal.js\";\nimport { FieldError } from \"./internal/field-error.js\";\n\nexport type SelectItem<Key extends string = string> = SelectItemDescriptor<Key>;\nexport type SelectSection<\n Key extends string = string,\n SectionKey extends string = string,\n> = SelectCollectionSectionDescriptor<Key, SectionKey>;\n\nexport type SelectLeadingRenderProps = Readonly<{\n color: \"currentColor\";\n size: number;\n}>;\n\nexport type SelectOptionLeadingRenderProps = SelectLeadingRenderProps & Readonly<{\n selected: boolean;\n highlighted: boolean;\n disabled: boolean;\n}>;\n\nconst emptySelectionKey = Symbol(\"hjm-select-empty-selection\");\ntype SelectHighlightKey<Key extends string> = Key | typeof emptySelectionKey;\n\ntype SelectSourceProps<Key extends string, SectionKey extends string> =\n SelectCollectionSource<Key, SectionKey>;\n\ntype SelectSelectionProps<Key extends string> =\n | Readonly<{\n selectedKey: Key | null;\n defaultSelectedKey?: never;\n onSelectionChange(key: Key | null): void;\n }>\n | Readonly<{\n selectedKey?: never;\n defaultSelectedKey?: Key | null;\n onSelectionChange?: (key: Key | null) => void;\n }>;\n\ntype SelectOpenProps =\n | Readonly<{\n open: boolean;\n defaultOpen?: never;\n onOpenChange(open: boolean, reason: SelectOpenChangeReason): void;\n }>\n | Readonly<{\n open?: never;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean, reason: SelectOpenChangeReason) => void;\n }>;\n\ntype SelectLabelProps =\n | Readonly<{ label: string; accessibilityLabel?: string }>\n | Readonly<{ label?: never; accessibilityLabel: string }>;\n\ntype SelectBaseProps<Key extends string> = Omit<\n ButtonHTMLAttributes<HTMLButtonElement>,\n | \"aria-label\"\n | \"children\"\n | \"defaultValue\"\n | \"onChange\"\n | \"role\"\n | \"value\"\n> &\n Readonly<{\n description?: ReactNode;\n error?: ReactNode;\n /** Localized text shown when no item is selected. */\n placeholder: string;\n /** Localized label for the nullable empty-selection option. */\n emptySelectionLabel: string;\n asyncState?: AsyncCollectionState;\n selectedItem?: SelectItemDescriptor<Key>;\n disallowEmptySelection?: boolean;\n loop?: boolean;\n /** Locks interaction without removing the trigger from the focus order. */\n busy?: boolean;\n readOnly?: boolean;\n required?: boolean;\n size?: SelectSize;\n density?: SelectDensity;\n /** Logical listbox alignment against the trigger; automatically mirrors in RTL. */\n align?: AnchoredPopupAlign;\n fieldClassName?: string;\n /**\n * Canonical layout-only placement on the field frame. `style` keeps going to\n * the trigger button, where it always went, so existing callers do not move.\n */\n layoutStyle?: HjmCompositionStyleProp;\n portalContainer?: HTMLElement;\n locale?: string | readonly string[];\n renderLeading?: (\n item: SelectItemDescriptor<Key> | null,\n appearance: SelectLeadingRenderProps,\n ) => ReactNode;\n renderOptionLeading?: (\n item: SelectItemDescriptor<Key>,\n appearance: SelectOptionLeadingRenderProps,\n ) => ReactNode;\n }>;\n\nexport type SelectProps<\n Key extends string = string,\n SectionKey extends string = string,\n> = SelectBaseProps<Key> &\n SelectSourceProps<Key, SectionKey> &\n SelectSelectionProps<Key> &\n SelectOpenProps &\n SelectLabelProps;\n\nfunction SelectInner<Key extends string, SectionKey extends string>(\n props: SelectProps<Key, SectionKey>,\n forwardedRef: React.ForwardedRef<HTMLButtonElement>,\n) {\n const {\n items,\n sections,\n label,\n accessibilityLabel,\n description,\n error,\n placeholder,\n emptySelectionLabel,\n asyncState = { status: \"idle\" },\n selectedItem,\n disallowEmptySelection = selectBehaviorDefaults.disallowEmptySelection,\n loop = selectBehaviorDefaults.loop,\n busy = false,\n readOnly = false,\n size = selectRecipe.defaults.size,\n density = selectRecipe.defaults.density,\n align = \"start\",\n fieldClassName,\n layoutStyle,\n portalContainer,\n locale,\n renderLeading,\n renderOptionLeading,\n className,\n id: idProp,\n name,\n disabled = false,\n required = false,\n selectedKey: selectedKeyProp,\n defaultSelectedKey,\n onSelectionChange,\n open: openProp,\n defaultOpen = false,\n onOpenChange,\n onClick,\n onFocus,\n onBlur,\n onKeyDown,\n ...buttonProps\n } = props;\n const source: SelectCollectionSource<Key, SectionKey> = sections === undefined\n ? { items: items ?? [] }\n : { sections };\n validateCollection(source);\n const accessibleName = resolveControlAccessibleName(\n label,\n accessibilityLabel,\n \"Select\",\n );\n if (placeholder.trim().length === 0) throw new TypeError(\"Select placeholder must not be empty\");\n if (emptySelectionLabel.trim().length === 0) {\n throw new TypeError(\"Select emptySelectionLabel must not be empty\");\n }\n const flatItems = source.sections\n ? source.sections.flatMap((section) => section.items)\n : source.items;\n if (\n flatItems.length === 0 &&\n (asyncState.status === \"idle\" || asyncState.status === \"loadingMore\")\n ) {\n throw new TypeError(\"Select requires options unless its async state is transient or empty\");\n }\n const initialSelectionRef = useRef<Readonly<{ value: Key | null }> | null>(null);\n if (initialSelectionRef.current === null) {\n initialSelectionRef.current = {\n value: reconcileSelectSelection(\n source,\n selectedKeyProp ?? defaultSelectedKey ?? null,\n {\n disallowEmptySelection,\n asyncState,\n ...(selectedItem === undefined ? {} : { selectedItem }),\n },\n ),\n };\n }\n const [storedSelectedKey, setSelectedKey] = useControllableState<Key | null>({\n ...(selectedKeyProp === undefined ? {} : { value: selectedKeyProp }),\n defaultValue: initialSelectionRef.current.value,\n ...(onSelectionChange === undefined ? {} : { onChange: onSelectionChange }),\n });\n const reconciledSelectedKey = reconcileSelectSelection(source, storedSelectedKey, {\n disallowEmptySelection,\n asyncState,\n ...(selectedItem === undefined ? {} : { selectedItem }),\n });\n const reconciliationRequestRef = useRef<string | undefined>(undefined);\n useEffect(() => {\n if (storedSelectedKey === reconciledSelectedKey) {\n reconciliationRequestRef.current = undefined;\n return;\n }\n const token = `${storedSelectedKey ?? \"<empty>\"}->${reconciledSelectedKey ?? \"<empty>\"}`;\n if (reconciliationRequestRef.current === token) return;\n reconciliationRequestRef.current = token;\n setSelectedKey(reconciledSelectedKey);\n }, [reconciledSelectedKey, setSelectedKey, storedSelectedKey]);\n const resolvedSelectedItem = resolveSelectSelectedItem(\n source,\n reconciledSelectedKey,\n selectedItem !== undefined && selectedItem.id === reconciledSelectedKey\n ? selectedItem\n : undefined,\n );\n\n const [internalOpen, setInternalOpen] = useState(defaultOpen);\n const openControlled = openProp !== undefined;\n const open = openControlled ? openProp : internalOpen;\n const pendingOpenRequestRef = useRef<boolean | undefined>(undefined);\n useEffect(() => {\n if (pendingOpenRequestRef.current === open) pendingOpenRequestRef.current = undefined;\n }, [open]);\n const changeOpen = useCallback(\n (nextOpen: boolean, reason: SelectOpenChangeReason) => {\n if (nextOpen === open || pendingOpenRequestRef.current === nextOpen) return;\n pendingOpenRequestRef.current = nextOpen;\n if (!openControlled) setInternalOpen(nextOpen);\n onOpenChange?.(nextOpen, reason);\n if (openControlled && nextOpen) {\n queueMicrotask(() => {\n if (pendingOpenRequestRef.current === true) {\n pendingOpenRequestRef.current = undefined;\n }\n });\n }\n },\n [onOpenChange, open, openControlled],\n );\n\n useEffect(() => {\n // A field locked while open must stop presenting an actionable option list.\n if (open && (disabled || readOnly)) changeOpen(false, \"programmatic\");\n }, [changeOpen, disabled, open, readOnly]);\n\n const generatedId = useId().replaceAll(\":\", \"\");\n const controlId = idProp ?? `hjm-select-${generatedId}`;\n const listboxId = `${controlId}-listbox`;\n const descriptionId = `${controlId}-description`;\n const errorId = `${controlId}-error`;\n const optionId = (key: Key) =>\n `${controlId}-option-${flatItems.findIndex((item) => item.id === key)}`;\n const rootRef = useRef<HTMLDivElement>(null);\n const triggerRef = useRef<HTMLButtonElement | null>(null);\n const listboxRef = useRef<HTMLDivElement | null>(null);\n const [listboxNode, setListboxNode] = useState<HTMLDivElement | null>(null);\n const optionRefs = useRef(new Map<SelectHighlightKey<Key>, HTMLDivElement>());\n const typeaheadRef = useRef({ value: \"\", time: 0 });\n const restoreFocusRef = useRef(false);\n const showOptions = asyncState.status === \"idle\" || asyncState.status === \"loadingMore\";\n const emptySelectionAvailable = !disallowEmptySelection && showOptions;\n const selectionItemInSource = resolveCollectionItem(source, reconciledSelectedKey);\n const initialHighlight = selectionItemInSource && !selectionItemInSource.disabled\n ? selectionItemInSource.id\n : reconciledSelectedKey === null && emptySelectionAvailable\n ? emptySelectionKey\n : getCollectionNavigationTarget(source, null, \"first\", loop) ?? null;\n const [highlightedKey, setHighlightedKey] = useState<SelectHighlightKey<Key> | null>(\n initialHighlight,\n );\n const highlightedItem = showOptions && highlightedKey !== emptySelectionKey\n ? resolveCollectionItem(source, highlightedKey)\n : null;\n const activeKey: SelectHighlightKey<Key> | null = highlightedItem && !highlightedItem.disabled\n ? highlightedItem.id\n : highlightedKey === emptySelectionKey && emptySelectionAvailable\n ? emptySelectionKey\n : null;\n const activeOptionId = activeKey === emptySelectionKey\n ? `${controlId}-option-empty`\n : activeKey === null\n ? undefined\n : optionId(activeKey);\n const popupPosition = useAnchoredPopup(triggerRef, listboxNode, {\n align,\n // Offset and edge padding come from selectRecipe.popover (2026-10-06 follow-up); the helper\n // default edge padding 16 disagreed with the recipe's collisionPadding 8.\n gap: selectRecipe.popover.sideOffset,\n viewportPadding: selectRecipe.popover.collisionPadding,\n matchAnchorWidth: true,\n zIndex: layer.dropdown,\n });\n const setListboxRef = useCallback((node: HTMLDivElement | null) => {\n listboxRef.current = node;\n setListboxNode(node);\n }, []);\n\n useEffect(() => {\n if (!open) {\n if (restoreFocusRef.current) {\n restoreFocusRef.current = false;\n queueMicrotask(() => triggerRef.current?.focus());\n }\n return;\n }\n if (activeKey === null && showOptions) setHighlightedKey(initialHighlight);\n }, [activeKey, initialHighlight, open, showOptions]);\n useEffect(() => {\n if (open && activeKey !== null) {\n optionRefs.current.get(activeKey)?.scrollIntoView({ block: \"nearest\" });\n }\n }, [activeKey, open]);\n useEffect(() => {\n if (!open) return;\n const handlePointerDown = (event: PointerEvent) => {\n if (\n event.target instanceof Node &&\n !rootRef.current?.contains(event.target) &&\n !listboxRef.current?.contains(event.target)\n ) {\n changeOpen(false, \"outside\");\n }\n };\n document.addEventListener(\"pointerdown\", handlePointerDown);\n return () => document.removeEventListener(\"pointerdown\", handlePointerDown);\n }, [changeOpen, open]);\n\n const openWithIntent = (intent: \"first\" | \"last\" = \"first\") => {\n if (disabled || busy || readOnly) return;\n const selectedInSource = resolveCollectionItem(source, reconciledSelectedKey);\n const target = selectedInSource && !selectedInSource.disabled\n ? selectedInSource.id\n : reconciledSelectedKey === null && emptySelectionAvailable\n ? emptySelectionKey\n // The empty-selection entry renders first in the listbox, so only the\n // \"first\" intent (Home/ArrowDown on a closed trigger) lands on it; \"last\"\n // (End/ArrowUp) must reach the last real option. The previous mapping sent\n // \"last\" to the empty entry, which contradicted DOM order. See issue #18.\n : intent === \"first\" && emptySelectionAvailable\n ? emptySelectionKey\n : getCollectionNavigationTarget(source, null, intent, loop) ?? null;\n setHighlightedKey(target);\n changeOpen(true, \"keyboard\");\n };\n const moveHighlight = (intent: \"next\" | \"previous\" | \"first\" | \"last\") => {\n const enabledKeys = flatItems\n .filter((item) => !item.disabled)\n .map((item) => item.id);\n const firstKey = enabledKeys[0];\n const lastKey = enabledKeys.at(-1);\n // Treat the empty-selection entry as the first row, matching DOM order. `loop`\n // only joins the two ends of the list: moving between the empty entry and the\n // first option is adjacency, not a wrap, so it stays loop-independent. The\n // previous code gated that \"next\" on `loop`, which trapped the arrow keys on the\n // empty entry for every Select using the defaults (disallowEmptySelection: false,\n // loop: false). See issue #18.\n if (emptySelectionAvailable) {\n if (intent === \"first\") {\n setHighlightedKey(emptySelectionKey);\n return;\n }\n if (activeKey === emptySelectionKey) {\n if (intent === \"next\") {\n if (firstKey !== undefined) setHighlightedKey(firstKey);\n return;\n }\n if (intent === \"previous\") {\n if (loop && lastKey !== undefined) setHighlightedKey(lastKey);\n return;\n }\n // intent === \"last\" falls through: the shared path picks the last option.\n } else {\n if (intent === \"previous\" && activeKey === firstKey) {\n setHighlightedKey(emptySelectionKey);\n return;\n }\n if (intent === \"next\" && activeKey === lastKey && loop) {\n setHighlightedKey(emptySelectionKey);\n return;\n }\n }\n }\n const target = getCollectionNavigationTarget(\n source,\n activeKey === emptySelectionKey ? null : activeKey,\n intent,\n loop,\n );\n if (target !== undefined) setHighlightedKey(target);\n };\n const commit = (key: SelectHighlightKey<Key>) => {\n if (key === emptySelectionKey) {\n if (disabled || busy || readOnly || !emptySelectionAvailable) return;\n setSelectedKey(null);\n restoreFocusRef.current = true;\n changeOpen(false, \"selection\");\n return;\n }\n const item = resolveCollectionItem(source, key);\n if (\n !item ||\n item.disabled ||\n disabled ||\n busy ||\n readOnly ||\n asyncState.status === \"loading\"\n ) return;\n setSelectedKey(key);\n restoreFocusRef.current = true;\n changeOpen(false, \"selection\");\n };\n const runTypeahead = (key: string) => {\n const now = Date.now();\n const previous = now - typeaheadRef.current.time < 500\n ? typeaheadRef.current.value\n : \"\";\n const combined = `${previous}${key}`;\n const query = new Set(combined.toLocaleLowerCase()).size === 1 ? key : combined;\n typeaheadRef.current = { value: combined, time: now };\n const match = getCollectionTypeaheadMatch(source, query, {\n startsAfterKey: activeKey === emptySelectionKey\n ? reconciledSelectedKey\n : activeKey ?? reconciledSelectedKey,\n ...(locale === undefined ? {} : { locale }),\n });\n if (match !== undefined) {\n setHighlightedKey(match);\n if (!open) changeOpen(true, \"keyboard\");\n }\n };\n const handleKeyDown = (event: KeyboardEvent<HTMLButtonElement>) => {\n onKeyDown?.(event);\n if (event.defaultPrevented || disabled || busy || readOnly) return;\n const navigationIntent = getCollectionNavigationIntent(\n event.key as WebKeyboardKey,\n );\n if (navigationIntent !== undefined) {\n event.preventDefault();\n if (!open) {\n openWithIntent(\n navigationIntent === \"previous\" || navigationIntent === \"last\"\n ? \"last\"\n : \"first\",\n );\n }\n else moveHighlight(navigationIntent);\n return;\n }\n if (event.key === \"Enter\" || event.key === \" \") {\n event.preventDefault();\n if (!open) openWithIntent();\n else if (activeKey !== null) commit(activeKey);\n } else if (event.key === \"Escape\" && open) {\n event.preventDefault();\n restoreFocusRef.current = true;\n changeOpen(false, \"escape\");\n } else if (event.key === \"Tab\" && open) {\n changeOpen(false, \"blur\");\n } else if (\n event.key.length === 1 &&\n event.key !== \" \" &&\n !event.altKey &&\n !event.ctrlKey &&\n !event.metaKey\n ) {\n event.preventDefault();\n runTypeahead(event.key);\n }\n };\n const handleBlur = (event: FocusEvent<HTMLButtonElement>) => {\n onBlur?.(event);\n if (event.defaultPrevented) return;\n queueMicrotask(() => {\n if (\n open &&\n document.activeElement instanceof Node &&\n !rootRef.current?.contains(document.activeElement) &&\n !listboxRef.current?.contains(document.activeElement)\n ) changeOpen(false, \"blur\");\n });\n };\n const describedBy = error ? errorId : description ? descriptionId : undefined;\n\n const renderOption = (item: SelectItemDescriptor<Key>) => {\n const selected = item.id === reconciledSelectedKey;\n const active = item.id === activeKey;\n const leadingSize = iconRecipe.sizes[selectRecipe.optionLeading.glyph];\n const leading = renderOptionLeading?.(item, {\n selected,\n highlighted: active,\n disabled: item.disabled ?? false,\n color: \"currentColor\",\n size: leadingSize,\n });\n return (\n <div\n key={item.id}\n ref={(node) => {\n if (node) optionRefs.current.set(item.id, node);\n else optionRefs.current.delete(item.id);\n }}\n id={optionId(item.id)}\n role=\"option\"\n className=\"hjm-select__option\"\n aria-selected={selected}\n aria-disabled={item.disabled || undefined}\n data-state={item.disabled ? \"disabled\" : selected ? \"selected\" : \"idle\"}\n data-active={active || undefined}\n onMouseDown={(event) => event.preventDefault()}\n onMouseMove={() => {\n if (!item.disabled) setHighlightedKey(item.id);\n }}\n onClick={() => commit(item.id)}\n >\n {leading ? (\n <span className=\"hjm-select__option-leading\" aria-hidden=\"true\">\n {leading}\n </span>\n ) : null}\n <span className=\"hjm-select__option-copy\">\n <span>{item.label}</span>\n {item.description ? (\n <span className=\"hjm-select__option-description\">{item.description}</span>\n ) : null}\n </span>\n {selected ? <span className=\"hjm-select__check\" aria-hidden=\"true\">✓</span> : null}\n </div>\n );\n };\n\n const triggerLeadingSize = iconRecipe.sizes[selectRecipe.sizes[size].glyph];\n const triggerLeading = renderLeading?.(resolvedSelectedItem, {\n color: \"currentColor\",\n size: triggerLeadingSize,\n });\n\n return (\n <div\n ref={rootRef}\n className={classNames(\"hjm-field hjm-select\", fieldClassName)}\n // fieldRecipe.disabledScope fades label and trigger; the amount is selectRecipe.states,\n // which Native already read (Web used the frame default 0.6 until 2026-10-06).\n style={disabled\n ? ({ ...layoutStyle, \"--hjm-field-disabled-opacity\": selectRecipe.states.disabledOpacity } as CSSProperties)\n : layoutStyle}\n data-state={disabled ? \"disabled\" : error ? \"invalid\" : open ? \"focused\" : \"idle\"}\n data-size={size}\n data-density={density}\n data-async-state={asyncState.status}\n data-busy={busy || undefined}\n >\n {label !== undefined ? (\n <label className=\"hjm-field__label\" htmlFor={controlId}>\n {label}{required ? <span aria-hidden=\"true\"> *</span> : null}\n </label>\n ) : null}\n <div className=\"hjm-select__anchor\">\n <button\n {...buttonProps}\n ref={(node) => {\n triggerRef.current = node;\n if (typeof forwardedRef === \"function\") forwardedRef(node);\n else if (forwardedRef) forwardedRef.current = node;\n }}\n id={controlId}\n type=\"button\"\n role=\"combobox\"\n className={classNames(\"hjm-field__control hjm-select__trigger\", className)}\n disabled={disabled}\n aria-disabled={busy || undefined}\n aria-label={accessibilityLabel ?? (label === undefined ? accessibleName : undefined)}\n aria-haspopup=\"listbox\"\n aria-expanded={open}\n aria-controls={open ? listboxId : undefined}\n aria-activedescendant={open ? activeOptionId : undefined}\n aria-busy={busy || asyncState.status === \"loading\" || asyncState.status === \"loadingMore\" || undefined}\n data-busy={busy || undefined}\n aria-invalid={error ? true : undefined}\n aria-describedby={describedBy}\n aria-readonly={readOnly || undefined}\n aria-required={required || undefined}\n onFocus={onFocus}\n onBlur={handleBlur}\n onKeyDown={handleKeyDown}\n onClick={(event) => {\n onClick?.(event);\n if (event.defaultPrevented || disabled || busy || readOnly) return;\n if (open) changeOpen(false, \"trigger\");\n else openWithIntent();\n }}\n >\n {triggerLeading ? (\n <span className=\"hjm-select__leading\" aria-hidden=\"true\">\n {triggerLeading}\n </span>\n ) : null}\n <span\n className=\"hjm-select__value\"\n data-state={resolvedSelectedItem ? \"selected\" : \"placeholder\"}\n >\n {resolvedSelectedItem?.label ?? placeholder}\n </span>\n {busy ? (\n <span className=\"hjm-select__busy-overlay\" aria-hidden=\"true\"><span className=\"hjm-select__busy-indicator\" /></span>\n ) : (\n <span className=\"hjm-select__indicator\" aria-hidden=\"true\">⌄</span>\n )}\n </button>\n {open ? (\n <AnchoredPortal\n anchorRef={triggerRef}\n ssrFallback=\"inline\"\n {...(portalContainer === undefined ? {} : { container: portalContainer })}\n >\n <div\n ref={setListboxRef}\n id={listboxId}\n role=\"listbox\"\n aria-label={accessibleName}\n className=\"hjm-select__listbox\"\n data-density={density}\n data-placement={popupPosition.placement}\n data-align={popupPosition.align}\n style={popupPosition.style}\n >\n {asyncState.status !== \"idle\" ? (\n <div\n className=\"hjm-select__message\"\n role={asyncState.status === \"error\" ? \"alert\" : \"status\"}\n >\n {asyncState.status === \"loading\" || asyncState.status === \"loadingMore\" ? <span className=\"hjm-visually-hidden\">{asyncState.message}</span> : asyncState.message}\n </div>\n ) : null}\n {/* Rendered before the options: with no selection the active descendant\n starts on this entry, and a trailing position made that starting point\n the bottom of the list, where ArrowDown has nowhere to go (issue #18).\n moveHighlight follows this DOM order. */}\n {!disallowEmptySelection && showOptions ? (\n <div\n ref={(node) => {\n if (node) optionRefs.current.set(emptySelectionKey, node);\n else optionRefs.current.delete(emptySelectionKey);\n }}\n id={`${controlId}-option-empty`}\n role=\"option\"\n className=\"hjm-select__option hjm-select__option--empty\"\n aria-selected={reconciledSelectedKey === null}\n data-state={reconciledSelectedKey === null ? \"selected\" : \"idle\"}\n data-active={activeKey === emptySelectionKey || undefined}\n onMouseDown={(event) => event.preventDefault()}\n onMouseMove={() => setHighlightedKey(emptySelectionKey)}\n onClick={() => commit(emptySelectionKey)}\n >\n {emptySelectionLabel}\n </div>\n ) : null}\n {showOptions ? (\n source.sections ? source.sections.map((section) => {\n const sectionLabelId = `${controlId}-section-${section.id}`;\n return (\n <div\n key={section.id}\n role=\"group\"\n aria-labelledby={section.label ? sectionLabelId : undefined}\n aria-label={section.label ? undefined : section.accessibilityLabel}\n className=\"hjm-select__section\"\n >\n {section.label ? (\n <div id={sectionLabelId} className=\"hjm-select__section-label\">\n {section.label}\n </div>\n ) : null}\n {section.items.map(renderOption)}\n </div>\n );\n }) : source.items.map(renderOption)\n ) : null}\n </div>\n </AnchoredPortal>\n ) : null}\n </div>\n {description && !error ? (\n <div id={descriptionId} className=\"hjm-field__description\">{description}</div>\n ) : null}\n <FieldError id={errorId} error={error} />\n {name ? <input type=\"hidden\" name={name} value={reconciledSelectedKey ?? \"\"} /> : null}\n </div>\n );\n}\n\nexport const Select = forwardRef(SelectInner) as <\n Key extends string = string,\n SectionKey extends string = string,\n>(\n props: SelectProps<Key, SectionKey> & RefAttributes<HTMLButtonElement>,\n) => ReactElement | null;\n"]}
@@ -1,5 +1,5 @@
1
1
  import type { GridDescriptor } from "@hjmds/design-contracts/grid";
2
- import { chipRecipe, type SegmentedControlSize, type SelectionControlPresentation, type SelectionControlSize, type SelectionGroupOrientation, type SelectionGroupPresentation, type SwitchSize, type SwitchPresentation } from "@hjmds/design-contracts/recipes";
2
+ import { chipRecipe, type SegmentedControlSize, type SelectionControlPresentation, type SelectionControlSize, type SelectionGroupOrientation, type SelectionGroupOverflow, type SelectionGroupPresentation, type SwitchSize, type SwitchPresentation } from "@hjmds/design-contracts/recipes";
3
3
  export type { SwitchSize, SwitchPresentation };
4
4
  import { type CheckboxGroupSelection, type SelectionItemDescriptor } from "@hjmds/design-contracts/behaviors";
5
5
  import { type ButtonHTMLAttributes, type ChangeEvent, type FieldsetHTMLAttributes, type InputHTMLAttributes, type MouseEvent, type ReactElement, type ReactNode, type RefAttributes } from "react";
@@ -106,6 +106,12 @@ type CheckboxGroupBaseProps<Key extends string> = Omit<FieldsetHTMLAttributes<HT
106
106
  /** Equal-width responsive options; uses the shared Grid contract instead of intrinsic row widths. */
107
107
  grid?: GridDescriptor;
108
108
  presentation?: SelectionGroupPresentation;
109
+ /**
110
+ * Chip line overflow, the same meaning as SegmentedControl `overflow`: `wrap` (default) breaks onto more lines,
111
+ * `scroll` keeps one horizontal line and scrolls a focused chip into view. Requires `presentation="chips"`
112
+ * without `grid`.
113
+ */
114
+ overflow?: SelectionGroupOverflow;
109
115
  size?: SelectionControlSize;
110
116
  name?: string;
111
117
  required?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"selection.d.ts","sourceRoot":"","sources":["../src/selection.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"selection.d.ts","sourceRoot":"","sources":["../src/selection.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAGnE,OAAO,EACL,UAAU,EAMV,KAAK,oBAAoB,EACzB,KAAK,4BAA4B,EACjC,KAAK,oBAAoB,EACzB,KAAK,yBAAyB,EAC9B,KAAK,sBAAsB,EAC3B,KAAK,0BAA0B,EAC/B,KAAK,UAAU,EACf,KAAK,kBAAkB,EACxB,MAAM,iCAAiC,CAAC;AAEzC,YAAY,EAAE,UAAU,EAAE,kBAAkB,EAAE,CAAC;AAC/C,OAAO,EAQL,KAAK,sBAAsB,EAC3B,KAAK,uBAAuB,EAC7B,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAML,KAAK,oBAAoB,EACzB,KAAK,WAAW,EAChB,KAAK,sBAAsB,EAC3B,KAAK,mBAAmB,EACxB,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,KAAK,SAAS,EACd,KAAK,aAAa,EACnB,MAAM,OAAO,CAAC;AAEf,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAGtE,MAAM,MAAM,wBAAwB,GAAG,QAAQ,CAAC;IAC9C,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,cAAc,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC,CAAC;AAEH,KAAK,aAAa,GAAG,IAAI,CACvB,oBAAoB,CAAC,iBAAiB,CAAC,EACvC,UAAU,GAAG,UAAU,GAAG,SAAS,GAAG,MAAM,CAC7C,GACC,QAAQ,CAAC;IACP,KAAK,EAAE,SAAS,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,OAAO,UAAU,CAAC,KAAK,CAAC;IACrC,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,wBAAwB,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC;QAC1C,QAAQ,EAAE,OAAO,CAAC;QAClB,KAAK,EAAE,cAAc,CAAC;QACtB,IAAI,EAAE,MAAM,CAAC;KACd,CAAC,KAAK,SAAS,CAAC;IACjB,gGAAgG;IAChG,WAAW,CAAC,EAAE,uBAAuB,CAAC;CACvC,CAAC,CAAC;AAEL,KAAK,eAAe,GAAG,QAAQ,CAAC;IAC9B,aAAa,CAAC,EAAE,QAAQ,CAAC;IACzB,QAAQ,CAAC,EAAE,KAAK,CAAC;IACjB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC;IACzD,gBAAgB,CAAC,EAAE,KAAK,CAAC;CAC1B,CAAC,CAAC;AAEH,KAAK,kBAAkB,GAAG,QAAQ,CAAC;IACjC,aAAa,EAAE,QAAQ,GAAG,UAAU,CAAC;IACrC,QAAQ,EAAE,OAAO,CAAC;IAClB,gBAAgB,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;IAC9C,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC;CAC1D,CAAC,CAAC;AAEH,MAAM,MAAM,SAAS,GAAG,aAAa,GAAG,CAAC,eAAe,GAAG,kBAAkB,CAAC,CAAC;AAE/E,gFAAgF;AAChF,eAAO,MAAM,IAAI,yFAoDf,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,IAAI,CAC9B,mBAAmB,CAAC,gBAAgB,CAAC,EACrC,MAAM,GAAG,SAAS,GAAG,gBAAgB,GAAG,UAAU,GAAG,UAAU,GAAG,MAAM,CACzE,GACC,QAAQ,CAAC;IACP,KAAK,EAAE,SAAS,CAAC;IACjB,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAC7C,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;IAC1D,YAAY,CAAC,EAAE,4BAA4B,CAAC;IAC5C,IAAI,CAAC,EAAE,oBAAoB,CAAC;IAC5B,aAAa,CAAC,EAAE,CAAC,UAAU,EAAE,wBAAwB,KAAK,SAAS,CAAC;IACpE;;;OAGG;IACH,WAAW,CAAC,EAAE,uBAAuB,CAAC;CACvC,CAAC,CAAC;AAEL,eAAO,MAAM,QAAQ;WAjBV,SAAS;kBACF,SAAS;cACb,OAAO;qBACA,OAAO;oBACR,OAAO;sBACL,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI;eACjC,CAAC,KAAK,EAAE,WAAW,CAAC,gBAAgB,CAAC,KAAK,IAAI;mBAC1C,4BAA4B;WACpC,oBAAoB;oBACX,CAAC,UAAU,EAAE,wBAAwB,KAAK,SAAS;IACnE;;;OAGG;kBACW,uBAAuB;qCAmFxC,CAAC;AAEF,KAAK,UAAU,GACX,QAAQ,CAAC;IACP,OAAO,EAAE,OAAO,CAAC;IACjB,cAAc,CAAC,EAAE,KAAK,CAAC;IACvB,eAAe,CAAC,OAAO,EAAE,IAAI,GAAG,IAAI,CAAC;CACtC,CAAC,GACF,QAAQ,CAAC;IACP,OAAO,CAAC,EAAE,KAAK,CAAC;IAChB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,KAAK,IAAI,CAAC;CAC3C,CAAC,CAAC;AAEP,MAAM,MAAM,UAAU,GAAG,IAAI,CAC3B,mBAAmB,CAAC,gBAAgB,CAAC,EACrC,MAAM,GAAG,SAAS,GAAG,gBAAgB,GAAG,UAAU,GAAG,UAAU,GAAG,MAAM,CACzE,GACC,UAAU,GACV,QAAQ,CAAC;IACP,KAAK,EAAE,SAAS,CAAC;IACjB,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;IAC1D,YAAY,CAAC,EAAE,4BAA4B,CAAC;IAC5C,IAAI,CAAC,EAAE,oBAAoB,CAAC;IAC5B,aAAa,CAAC,EAAE,CAAC,UAAU,EAAE,wBAAwB,KAAK,SAAS,CAAC;IACpE;;;OAGG;IACH,WAAW,CAAC,EAAE,uBAAuB,CAAC;CACvC,CAAC,CAAC;AAEL,sFAAsF;AACtF,eAAO,MAAM,KAAK,yFAuEhB,CAAC;AAiBH,MAAM,MAAM,iBAAiB,CAAC,GAAG,SAAS,MAAM,GAAG,MAAM,IACvD,uBAAuB,CAAC,GAAG,CAAC,CAAC;AAE/B,KAAK,sBAAsB,CAAC,GAAG,SAAS,MAAM,IAAI,IAAI,CACpD,sBAAsB,CAAC,mBAAmB,CAAC,EAC3C,cAAc,GAAG,UAAU,GAAG,OAAO,CACtC,GACC,QAAQ,CAAC;IACP,KAAK,EAAE,SAAS,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC;IACzC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,WAAW,CAAC,EAAE,yBAAyB,CAAC;IACxC,qGAAqG;IACrG,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB,YAAY,CAAC,EAAE,0BAA0B,CAAC;IAC1C;;;;OAIG;IACH,QAAQ,CAAC,EAAE,sBAAsB,CAAC;IAClC,IAAI,CAAC,EAAE,oBAAoB,CAAC;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,aAAa,CAAC,EAAE,CACd,IAAI,EAAE,iBAAiB,CAAC,GAAG,CAAC,EAC5B,UAAU,EAAE,wBAAwB,KACjC,SAAS,CAAC;IACf,gGAAgG;IAChG,WAAW,CAAC,EAAE,uBAAuB,CAAC;CACvC,CAAC,CAAC;AAEL,MAAM,MAAM,kBAAkB,CAAC,GAAG,SAAS,MAAM,GAAG,MAAM,IACxD,sBAAsB,CAAC,GAAG,CAAC,GAAG,sBAAsB,CAAC,GAAG,CAAC,CAAC;AA6I5D,eAAO,MAAM,aAAa,EAAqC,CAAC,GAAG,SAAS,MAAM,GAAG,MAAM,EACzF,KAAK,EAAE,kBAAkB,CAAC,GAAG,CAAC,GAAG,aAAa,CAAC,mBAAmB,CAAC,KAChE,YAAY,CAAC;AAElB,MAAM,MAAM,cAAc,GAAG,QAAQ,CAAC;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,SAAS,CAAC;IACjB,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,0EAA0E;IAC1E,MAAM,CAAC,EAAE,QAAQ,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,IAAI,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;CAC7G,CAAC,CAAC;AAEH,KAAK,oBAAoB,GACrB,QAAQ,CAAC;IAAE,KAAK,EAAE,SAAS,CAAC;IAAC,kBAAkB,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,GAC3D,QAAQ,CAAC;IAAE,KAAK,CAAC,EAAE,KAAK,CAAC;IAAC,kBAAkB,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAE5D,MAAM,MAAM,eAAe,GAAG,IAAI,CAChC,sBAAsB,CAAC,mBAAmB,CAAC,EAC3C,cAAc,GAAG,UAAU,GAAG,OAAO,CACtC,GACC,oBAAoB,GACpB,QAAQ,CAAC;IACP,KAAK,EAAE,SAAS,cAAc,EAAE,CAAC;IACjC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,WAAW,CAAC,EAAE,yBAAyB,CAAC;IACxC,qGAAqG;IACrG,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB,YAAY,CAAC,EAAE,0BAA0B,CAAC;IAC1C,IAAI,CAAC,EAAE,oBAAoB,CAAC;IAC5B,sFAAsF;IACtF,SAAS,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC;IAC/B,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,uEAAuE;IACvE,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,SAAS,CAAC;IAClD,aAAa,CAAC,EAAE,CACd,IAAI,EAAE,cAAc,EACpB,UAAU,EAAE,wBAAwB,KACjC,SAAS,CAAC;IACf,gGAAgG;IAChG,WAAW,CAAC,EAAE,uBAAuB,CAAC;CACvC,CAAC,CAAC;AAqBL,eAAO,MAAM,UAAU,iGA6JtB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG,IAAI,CAC5B,oBAAoB,CAAC,iBAAiB,CAAC,EACvC,MAAM,GAAG,UAAU,GAAG,OAAO,CAC9B,GACC,QAAQ,CAAC;IACP,KAAK,EAAE,SAAS,CAAC;IACjB,+EAA+E;IAC/E,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,YAAY,CAAC,EAAE,kBAAkB,CAAC;IAClC,qFAAqF;IACrF,eAAe,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;IACvC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,0DAA0D;IAC1D,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAC3C,4EAA4E;IAC9E,WAAW,CAAC,EAAE,uBAAuB,CAAC;CACzC,CAAC,CAAC;AAEH,eAAO,MAAM,MAAM;WAfR,SAAS;IAChB,+EAA+E;kBACjE,SAAS;mBACR,kBAAkB;IACjC,qFAAqF;sBACnE,SAAS,GAAG,QAAQ;cAC5B,OAAO;qBACA,OAAO;IACxB,0DAA0D;WACnD,UAAU;sBACC,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI;IAC1C,4EAA4E;kBAChE,uBAAuB;sCAmEvC,CAAC;AAEH,MAAM,MAAM,oBAAoB,GAAG,QAAQ,CAAC;IAC1C,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,SAAS,CAAC;IACjB,8DAA8D;IAC9D,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC,CAAC;AAEH,MAAM,MAAM,qBAAqB,GAAG,IAAI,CACtC,sBAAsB,CAAC,mBAAmB,CAAC,EAC3C,cAAc,GAAG,UAAU,GAAG,OAAO,CACtC,GACC,QAAQ,CAAC;IACP,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,SAAS,oBAAoB,EAAE,CAAC;IACvC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,IAAI,CAAC,EAAE,oBAAoB,CAAC;IAC5B,YAAY,CAAC,EAAE,WAAW,GAAG,OAAO,GAAG,MAAM,CAAC;IAC9C,gFAAgF;IAChF,aAAa,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC;IACpC,YAAY,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;IACpC,mFAAmF;IACnF,eAAe,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACnC,QAAQ,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC;IAC7B,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gGAAgG;IAChG,WAAW,CAAC,EAAE,uBAAuB,CAAC;CACvC,CAAC,CAAC;AAEL,eAAO,MAAM,gBAAgB;WAnBlB,MAAM;WACN,SAAS,oBAAoB,EAAE;YAC9B,MAAM;mBACC,MAAM;oBACL,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI;WAChC,oBAAoB;mBACZ,WAAW,GAAG,OAAO,GAAG,MAAM;IAC7C,gFAAgF;oBAChE,SAAS,GAAG,OAAO;mBACpB,SAAS,GAAG,QAAQ;IACnC,mFAAmF;sBACjE,MAAM,GAAG,OAAO;eACvB,MAAM,GAAG,QAAQ;cAClB,SAAS;WACZ,MAAM;IACb,gGAAgG;kBAClF,uBAAuB;wCAmJvC,CAAC"}
package/dist/selection.js CHANGED
@@ -1,3 +1,4 @@
1
+ "use client";
1
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
3
  import { Grid } from "./layout.js";
3
4
  import { Button } from "./actions.js";
@@ -71,11 +72,26 @@ export const Radio = forwardRef(function Radio({ label, description, checked: ch
71
72
  size: iconRecipe.sizes[selectionControlRecipe.leading.size],
72
73
  }) })) : null, _jsxs("span", { className: "hjm-choice__copy", children: [_jsx("span", { children: label }), description ? _jsx("span", { className: "hjm-choice__description", children: description }) : null] })] }));
73
74
  });
75
+ /**
76
+ * Minimal horizontal scroll that shows `option` inside `viewport` with `inset` room around it. Shared by
77
+ * SegmentedControl and CheckboxGroup `overflow="scroll"`; rect deltas work in both reading directions.
78
+ */
79
+ function revealInScroller(viewport, option, inset = 0) {
80
+ const frame = viewport.getBoundingClientRect(), bounds = option.getBoundingClientRect();
81
+ const delta = bounds.left - inset < frame.left ? bounds.left - inset - frame.left
82
+ : bounds.right + inset > frame.right ? bounds.right + inset - frame.right : 0;
83
+ if (delta)
84
+ viewport.scrollBy({ left: delta, behavior: "instant" });
85
+ }
74
86
  function ChoiceItems({ grid, className, children }) {
75
87
  return grid ? _jsx(Grid, { ...grid, children: children }) : _jsx("div", { className: className, children: children });
76
88
  }
77
- function CheckboxGroupInner({ items, label, accessibilityLabel, description, error, orientation = selectionGroupRecipe.defaults.orientation, grid, presentation = selectionGroupRecipe.defaults.presentation, size = selectionControlRecipe.defaults.size, name, required = false, readOnly = false, renderLeading, value: valueProp, defaultValue, onValueChange, disabled, className, layoutStyle, style, ...props }, ref) {
89
+ function CheckboxGroupInner({ items, label, accessibilityLabel, description, error, orientation = selectionGroupRecipe.defaults.orientation, grid, presentation = selectionGroupRecipe.defaults.presentation, overflow = selectionGroupRecipe.overflow.default, size = selectionControlRecipe.defaults.size, name, required = false, readOnly = false, renderLeading, value: valueProp, defaultValue, onValueChange, disabled, className, layoutStyle, style, ...props }, ref) {
78
90
  const resolvedLabel = resolveControlAccessibleName(label, accessibilityLabel, "CheckboxGroup");
91
+ if (overflow === "scroll" && (presentation !== "chips" || grid)) {
92
+ throw new TypeError('CheckboxGroup overflow="scroll" requires presentation="chips" without grid');
93
+ }
94
+ const scrollerRef = useRef(null);
79
95
  const [value, setValue] = useControllableState({
80
96
  ...(valueProp === undefined ? {} : { value: valueProp }),
81
97
  defaultValue: defaultValue ?? new Set(),
@@ -94,7 +110,12 @@ function CheckboxGroupInner({ items, label, accessibilityLabel, description, err
94
110
  const generatedId = useId().replaceAll(":", "");
95
111
  const descriptionId = `${generatedId}-checkbox-group-description`;
96
112
  const errorId = `${generatedId}-checkbox-group-error`;
97
- return (_jsxs("fieldset", { ...props, ref: ref, style: { ...style, ...layoutStyle }, className: classNames("hjm-checkbox-group", className), "data-orientation": orientation, "data-presentation": presentation, "data-size": size, "data-state": error ? "invalid" : disabled ? "disabled" : "idle", disabled: disabled, "aria-label": accessibilityLabel, "aria-describedby": error ? errorId : description ? descriptionId : undefined, "aria-required": required || undefined, "aria-readonly": readOnly || undefined, children: [_jsx("legend", { className: label === undefined ? "hjm-visually-hidden" : undefined, children: label ?? resolvedLabel }), description && !error ? (_jsx("div", { id: descriptionId, className: "hjm-field__description", children: description })) : null, _jsx(ChoiceItems, { grid: grid, className: "hjm-checkbox-group__items", children: items.map((item) => {
113
+ return (_jsxs("fieldset", { ...props, ref: ref, style: { ...style, ...layoutStyle }, className: classNames("hjm-checkbox-group", className), "data-orientation": orientation, "data-presentation": presentation, "data-overflow": presentation === "chips" ? overflow : undefined, onFocusCapture: (event) => {
114
+ props.onFocusCapture?.(event);
115
+ const option = event.target.closest(".hjm-choice");
116
+ if (overflow === "scroll" && scrollerRef.current && option)
117
+ revealInScroller(scrollerRef.current, option, selectionGroupRecipe.overflow.scrollInset);
118
+ }, "data-size": size, "data-state": error ? "invalid" : disabled ? "disabled" : "idle", disabled: disabled, "aria-label": accessibilityLabel, "aria-describedby": error ? errorId : description ? descriptionId : undefined, "aria-required": required || undefined, "aria-readonly": readOnly || undefined, children: [_jsx("legend", { className: label === undefined ? "hjm-visually-hidden" : undefined, children: label ?? resolvedLabel }), description && !error ? (_jsx("div", { id: descriptionId, className: "hjm-field__description", children: description })) : null, wrapChipScroller(overflow === "scroll", scrollerRef, _jsx(ChoiceItems, { grid: grid, className: "hjm-checkbox-group__items", children: items.map((item) => {
98
119
  const checked = reconciledValue.has(item.id);
99
120
  return (_jsxs("label", { className: "hjm-choice", "data-kind": "checkbox", "data-state": checked ? "checked" : "unchecked", "data-disabled": item.disabled || undefined, "data-readonly": readOnly || undefined, "data-presentation": presentation, "data-size": size, children: [_jsx("input", { className: "hjm-choice__input", type: "checkbox", name: name, value: item.id, checked: checked, disabled: item.disabled, "aria-readonly": readOnly || undefined, onChange: () => {
100
121
  if (!readOnly) {
@@ -105,7 +126,11 @@ function CheckboxGroupInner({ items, label, accessibilityLabel, description, err
105
126
  color: "currentColor",
106
127
  size: iconRecipe.sizes[selectionControlRecipe.leading.size],
107
128
  }) })) : null, _jsxs("span", { className: "hjm-choice__copy", children: [_jsx("span", { children: item.label }), item.description ? (_jsx("span", { className: "hjm-choice__description", children: item.description })) : null] })] }, item.id));
108
- }) }), _jsx(FieldError, { id: errorId, error: error })] }));
129
+ }) })), _jsx(FieldError, { id: errorId, error: error })] }));
130
+ }
131
+ /** The scrollport is separate from the items row so its inset keeps focus rings and chip hit slop unclipped. */
132
+ function wrapChipScroller(scroll, ref, items) {
133
+ return scroll ? _jsx("div", { ref: ref, className: "hjm-checkbox-group__scroller", children: items }) : items;
109
134
  }
110
135
  export const CheckboxGroup = forwardRef(CheckboxGroupInner);
111
136
  function validateItems(component, items) {
@@ -201,7 +226,9 @@ export const Switch = forwardRef(function Switch({ label, labelVisibility = "vis
201
226
  onClick?.(event);
202
227
  }, children: [_jsx("span", { className: "hjm-switch__track", "aria-hidden": "true", children: _jsx("span", { className: "hjm-switch__thumb" }) }), _jsxs("span", { className: classNames("hjm-switch__copy", labelVisibility === "hidden" && "hjm-visually-hidden"), children: [_jsx("span", { id: labelId, className: classNames("hjm-switch__label", presentation === "row" && "hjm-text"), "data-font-role": presentation === "row" ? "ui" : undefined, "data-variant": presentation === "row" ? switchRecipe.rowLabelTextVariant : undefined, children: label }), hasDescription ? _jsx("span", { id: descriptionId, className: "hjm-switch__description", children: description }) : null] })] }));
203
228
  });
204
- export const SegmentedControl = forwardRef(function SegmentedControl({ label, items, value: valueProp, defaultValue, onValueChange, size = segmentedControlRecipe.defaults.size, presentation = "connected", selectionTone = "neutral", textEmphasis = "strong", selectionMotion: suppliedSelectionMotion, name, overflow = "wrap", actions, disabled = false, className, layoutStyle, style, ...props }, ref) {
229
+ export const SegmentedControl = forwardRef(function SegmentedControl({ label, items, value: valueProp, defaultValue, onValueChange, size = segmentedControlRecipe.defaults.size, presentation = "connected",
230
+ // 2026-10-23 user review: filled brand selection is the default; neutral remains opt-in.
231
+ selectionTone = "brand", textEmphasis = "strong", selectionMotion: suppliedSelectionMotion, name, overflow = "wrap", actions, disabled = false, className, layoutStyle, style, ...props }, ref) {
205
232
  const designProfile = useDesignProfileDefaults();
206
233
  const selectionMotion = presentation === "text" ? "none" : suppliedSelectionMotion ?? designProfile?.interactions.selectionMotion ?? "none";
207
234
  validateItems("SegmentedControl", items);
@@ -283,12 +310,8 @@ export const SegmentedControl = forwardRef(function SegmentedControl({ label, it
283
310
  if (overflow !== "scroll" || !option)
284
311
  return;
285
312
  const viewport = trackRef.current?.parentElement;
286
- if (!viewport)
287
- return;
288
- const frame = viewport.getBoundingClientRect(), bounds = option.getBoundingClientRect();
289
- const delta = bounds.left < frame.left ? bounds.left - frame.left : bounds.right > frame.right ? bounds.right - frame.right : 0;
290
- if (delta)
291
- viewport.scrollBy({ left: delta, behavior: "instant" });
313
+ if (viewport)
314
+ revealInScroller(viewport, option);
292
315
  };
293
316
  useLayoutEffect(() => { revealOption(trackRef.current?.querySelector('[data-state="checked"]') ?? null); }, [value, items, overflow]);
294
317
  const group = (_jsxs("fieldset", { ...props, disabled: disabled, ref: ref, style: { ...style, ...(actions == null ? layoutStyle : { flex: 1, minInlineSize: 0 }) }, className: classNames("hjm-segmented", className), "data-overflow": overflow, onFocusCapture: event => { props.onFocusCapture?.(event); revealOption(event.target.closest(".hjm-segmented__item")); }, "data-size": size, "data-presentation": presentation, "data-selection-tone": selectionTone, "data-text-emphasis": presentation === "text" ? textEmphasis : undefined, role: presentation === "text" ? "radiogroup" : undefined, children: [_jsx("legend", { className: "hjm-visually-hidden", children: label }), _jsx("div", { className: "hjm-segmented__scroller", children: _jsxs("div", { className: "hjm-segmented__items", ref: trackRef, children: [selectionMotion === "slide" ? _jsx("span", { ref: highlightRef, className: "hjm-segmented__highlight", "aria-hidden": "true" }) : null, items.map((item) => (_jsxs("label", { className: "hjm-segmented__item", "data-state": item.value === value ? "checked" : "unchecked", "data-disabled": item.disabled || disabled || undefined, children: [_jsx("input", { type: "radio", name: name ?? generatedName, value: item.value, "aria-label": item.accessibilityLabel, checked: item.value === value, disabled: item.disabled || disabled, required: true, onChange: () => setValue(item.value) }), _jsx("span", { children: item.label })] }, item.value)))] }) })] }));