@hjmds/react 1.41.2 → 1.43.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 (393) 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 +10 -2
  71. package/dist/choice-row.d.ts.map +1 -1
  72. package/dist/choice-row.js +7 -3
  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/communication.d.ts +92 -0
  90. package/dist/communication.d.ts.map +1 -1
  91. package/dist/communication.js +49 -1
  92. package/dist/communication.js.map +1 -1
  93. package/dist/content-transition.d.ts.map +1 -1
  94. package/dist/content-transition.js +1 -0
  95. package/dist/content-transition.js.map +1 -1
  96. package/dist/context-menu.d.ts.map +1 -1
  97. package/dist/context-menu.js +1 -0
  98. package/dist/context-menu.js.map +1 -1
  99. package/dist/conversation-row.d.ts.map +1 -1
  100. package/dist/conversation-row.js +1 -0
  101. package/dist/conversation-row.js.map +1 -1
  102. package/dist/data-table.d.ts.map +1 -1
  103. package/dist/data-table.js +1 -0
  104. package/dist/data-table.js.map +1 -1
  105. package/dist/date-entry.d.ts.map +1 -1
  106. package/dist/date-entry.js +1 -0
  107. package/dist/date-entry.js.map +1 -1
  108. package/dist/date-picker.d.ts.map +1 -1
  109. package/dist/date-picker.js +1 -0
  110. package/dist/date-picker.js.map +1 -1
  111. package/dist/date-range.d.ts.map +1 -1
  112. package/dist/date-range.js +1 -0
  113. package/dist/date-range.js.map +1 -1
  114. package/dist/design-profile.d.ts.map +1 -1
  115. package/dist/design-profile.js +1 -0
  116. package/dist/design-profile.js.map +1 -1
  117. package/dist/display.d.ts +21 -1
  118. package/dist/display.d.ts.map +1 -1
  119. package/dist/display.js +34 -8
  120. package/dist/display.js.map +1 -1
  121. package/dist/duration-field.d.ts.map +1 -1
  122. package/dist/duration-field.js +1 -0
  123. package/dist/duration-field.js.map +1 -1
  124. package/dist/effect-surface.d.ts.map +1 -1
  125. package/dist/effect-surface.js +1 -0
  126. package/dist/effect-surface.js.map +1 -1
  127. package/dist/evidence.d.ts +1 -1
  128. package/dist/evidence.js +1 -1
  129. package/dist/evidence.js.map +1 -1
  130. package/dist/feedback.d.ts.map +1 -1
  131. package/dist/feedback.js +1 -0
  132. package/dist/feedback.js.map +1 -1
  133. package/dist/field-group.d.ts.map +1 -1
  134. package/dist/field-group.js +1 -0
  135. package/dist/field-group.js.map +1 -1
  136. package/dist/file-picker.d.ts.map +1 -1
  137. package/dist/file-picker.js +1 -0
  138. package/dist/file-picker.js.map +1 -1
  139. package/dist/floating-action-button.d.ts.map +1 -1
  140. package/dist/floating-action-button.js +1 -0
  141. package/dist/floating-action-button.js.map +1 -1
  142. package/dist/folder-preview.d.ts.map +1 -1
  143. package/dist/folder-preview.js +1 -0
  144. package/dist/folder-preview.js.map +1 -1
  145. package/dist/forms.d.ts +30 -6
  146. package/dist/forms.d.ts.map +1 -1
  147. package/dist/forms.js +56 -14
  148. package/dist/forms.js.map +1 -1
  149. package/dist/gravity-letters.d.ts.map +1 -1
  150. package/dist/gravity-letters.js +1 -0
  151. package/dist/gravity-letters.js.map +1 -1
  152. package/dist/grid-reveal.d.ts.map +1 -1
  153. package/dist/grid-reveal.js +1 -0
  154. package/dist/grid-reveal.js.map +1 -1
  155. package/dist/heading.d.ts.map +1 -1
  156. package/dist/heading.js +1 -0
  157. package/dist/heading.js.map +1 -1
  158. package/dist/image-choice.d.ts.map +1 -1
  159. package/dist/image-choice.js +1 -0
  160. package/dist/image-choice.js.map +1 -1
  161. package/dist/image-comparison.d.ts.map +1 -1
  162. package/dist/image-comparison.js +1 -0
  163. package/dist/image-comparison.js.map +1 -1
  164. package/dist/image-viewer.d.ts +22 -1
  165. package/dist/image-viewer.d.ts.map +1 -1
  166. package/dist/image-viewer.js +14 -1
  167. package/dist/image-viewer.js.map +1 -1
  168. package/dist/index.d.ts +3 -3
  169. package/dist/index.d.ts.map +1 -1
  170. package/dist/index.js +1 -1
  171. package/dist/index.js.map +1 -1
  172. package/dist/inline-confirm.d.ts.map +1 -1
  173. package/dist/inline-confirm.js +1 -0
  174. package/dist/inline-confirm.js.map +1 -1
  175. package/dist/internal/document-resource.d.ts.map +1 -1
  176. package/dist/internal/document-resource.js +1 -0
  177. package/dist/internal/document-resource.js.map +1 -1
  178. package/dist/internal/initial-focus.d.ts.map +1 -1
  179. package/dist/internal/initial-focus.js +1 -0
  180. package/dist/internal/initial-focus.js.map +1 -1
  181. package/dist/internal/media-album.d.ts.map +1 -1
  182. package/dist/internal/media-album.js +1 -0
  183. package/dist/internal/media-album.js.map +1 -1
  184. package/dist/internal/message-reactions.d.ts.map +1 -1
  185. package/dist/internal/message-reactions.js +1 -0
  186. package/dist/internal/message-reactions.js.map +1 -1
  187. package/dist/internal/overlay-origin-motion.d.ts.map +1 -1
  188. package/dist/internal/overlay-origin-motion.js +1 -0
  189. package/dist/internal/overlay-origin-motion.js.map +1 -1
  190. package/dist/internal/pending-content.d.ts.map +1 -1
  191. package/dist/internal/pending-content.js +1 -0
  192. package/dist/internal/pending-content.js.map +1 -1
  193. package/dist/internal/photo-source-icon.d.ts.map +1 -1
  194. package/dist/internal/photo-source-icon.js +1 -0
  195. package/dist/internal/photo-source-icon.js.map +1 -1
  196. package/dist/internal/screen-exit.d.ts.map +1 -1
  197. package/dist/internal/screen-exit.js +1 -0
  198. package/dist/internal/screen-exit.js.map +1 -1
  199. package/dist/internal/screen-footer.d.ts.map +1 -1
  200. package/dist/internal/screen-footer.js +1 -0
  201. package/dist/internal/screen-footer.js.map +1 -1
  202. package/dist/internal/spinner.d.ts.map +1 -1
  203. package/dist/internal/spinner.js +1 -0
  204. package/dist/internal/spinner.js.map +1 -1
  205. package/dist/internal/use-composition-action.d.ts.map +1 -1
  206. package/dist/internal/use-composition-action.js +1 -0
  207. package/dist/internal/use-composition-action.js.map +1 -1
  208. package/dist/internal.d.ts.map +1 -1
  209. package/dist/internal.js +1 -0
  210. package/dist/internal.js.map +1 -1
  211. package/dist/layout.d.ts +11 -1
  212. package/dist/layout.d.ts.map +1 -1
  213. package/dist/layout.js +8 -4
  214. package/dist/layout.js.map +1 -1
  215. package/dist/mentions.d.ts.map +1 -1
  216. package/dist/mentions.js +1 -0
  217. package/dist/mentions.js.map +1 -1
  218. package/dist/menu-morph.d.ts.map +1 -1
  219. package/dist/menu-morph.js +1 -0
  220. package/dist/menu-morph.js.map +1 -1
  221. package/dist/menubar.d.ts.map +1 -1
  222. package/dist/menubar.js +1 -0
  223. package/dist/menubar.js.map +1 -1
  224. package/dist/modal.d.ts.map +1 -1
  225. package/dist/modal.js +1 -0
  226. package/dist/modal.js.map +1 -1
  227. package/dist/navigation-bar.d.ts.map +1 -1
  228. package/dist/navigation-bar.js +1 -0
  229. package/dist/navigation-bar.js.map +1 -1
  230. package/dist/navigation.d.ts.map +1 -1
  231. package/dist/navigation.js +1 -0
  232. package/dist/navigation.js.map +1 -1
  233. package/dist/notification-bell.d.ts +1 -1
  234. package/dist/notification-bell.d.ts.map +1 -1
  235. package/dist/notification-bell.js +5 -1
  236. package/dist/notification-bell.js.map +1 -1
  237. package/dist/number-field.d.ts.map +1 -1
  238. package/dist/number-field.js +1 -0
  239. package/dist/number-field.js.map +1 -1
  240. package/dist/overlay-stack.d.ts.map +1 -1
  241. package/dist/overlay-stack.js +1 -0
  242. package/dist/overlay-stack.js.map +1 -1
  243. package/dist/overlays.d.ts.map +1 -1
  244. package/dist/overlays.js +11 -2
  245. package/dist/overlays.js.map +1 -1
  246. package/dist/pagination.d.ts.map +1 -1
  247. package/dist/pagination.js +1 -0
  248. package/dist/pagination.js.map +1 -1
  249. package/dist/popover.d.ts.map +1 -1
  250. package/dist/popover.js +1 -0
  251. package/dist/popover.js.map +1 -1
  252. package/dist/portal.d.ts.map +1 -1
  253. package/dist/portal.js +1 -0
  254. package/dist/portal.js.map +1 -1
  255. package/dist/progressive-blur.d.ts.map +1 -1
  256. package/dist/progressive-blur.js +1 -0
  257. package/dist/progressive-blur.js.map +1 -1
  258. package/dist/provider-button.d.ts.map +1 -1
  259. package/dist/provider-button.js +1 -0
  260. package/dist/provider-button.js.map +1 -1
  261. package/dist/provider.d.ts +9 -1
  262. package/dist/provider.d.ts.map +1 -1
  263. package/dist/provider.js +2 -2
  264. package/dist/provider.js.map +1 -1
  265. package/dist/public-exports.generated.d.ts +9 -0
  266. package/dist/public-exports.generated.d.ts.map +1 -1
  267. package/dist/public-exports.generated.js +27 -0
  268. package/dist/public-exports.generated.js.map +1 -1
  269. package/dist/rating.d.ts.map +1 -1
  270. package/dist/rating.js +1 -0
  271. package/dist/rating.js.map +1 -1
  272. package/dist/reaction-picker.d.ts.map +1 -1
  273. package/dist/reaction-picker.js +1 -0
  274. package/dist/reaction-picker.js.map +1 -1
  275. package/dist/saved-items.d.ts.map +1 -1
  276. package/dist/saved-items.js +1 -0
  277. package/dist/saved-items.js.map +1 -1
  278. package/dist/screen-flows.d.ts +5 -1
  279. package/dist/screen-flows.d.ts.map +1 -1
  280. package/dist/screen-flows.js +13 -4
  281. package/dist/screen-flows.js.map +1 -1
  282. package/dist/screens.d.ts +24 -4
  283. package/dist/screens.d.ts.map +1 -1
  284. package/dist/screens.js +39 -12
  285. package/dist/screens.js.map +1 -1
  286. package/dist/scroll-progress.d.ts.map +1 -1
  287. package/dist/scroll-progress.js +1 -0
  288. package/dist/scroll-progress.js.map +1 -1
  289. package/dist/select.d.ts.map +1 -1
  290. package/dist/select.js +1 -0
  291. package/dist/select.js.map +1 -1
  292. package/dist/selection.d.ts +7 -1
  293. package/dist/selection.d.ts.map +1 -1
  294. package/dist/selection.js +33 -10
  295. package/dist/selection.js.map +1 -1
  296. package/dist/side-panel.d.ts.map +1 -1
  297. package/dist/side-panel.js +1 -0
  298. package/dist/side-panel.js.map +1 -1
  299. package/dist/sidebar.d.ts +21 -2
  300. package/dist/sidebar.d.ts.map +1 -1
  301. package/dist/sidebar.js +40 -20
  302. package/dist/sidebar.js.map +1 -1
  303. package/dist/skip-nav.d.ts.map +1 -1
  304. package/dist/skip-nav.js +1 -0
  305. package/dist/skip-nav.js.map +1 -1
  306. package/dist/slider.d.ts.map +1 -1
  307. package/dist/slider.js +1 -0
  308. package/dist/slider.js.map +1 -1
  309. package/dist/sortable.d.ts.map +1 -1
  310. package/dist/sortable.js +1 -0
  311. package/dist/sortable.js.map +1 -1
  312. package/dist/splitter.d.ts.map +1 -1
  313. package/dist/splitter.js +1 -0
  314. package/dist/splitter.js.map +1 -1
  315. package/dist/statistic-motion.d.ts.map +1 -1
  316. package/dist/statistic-motion.js +1 -0
  317. package/dist/statistic-motion.js.map +1 -1
  318. package/dist/status-text.d.ts.map +1 -1
  319. package/dist/status-text.js +1 -0
  320. package/dist/status-text.js.map +1 -1
  321. package/dist/step-player.d.ts.map +1 -1
  322. package/dist/step-player.js +1 -0
  323. package/dist/step-player.js.map +1 -1
  324. package/dist/steps.d.ts +16 -14
  325. package/dist/steps.d.ts.map +1 -1
  326. package/dist/steps.js +26 -9
  327. package/dist/steps.js.map +1 -1
  328. package/dist/styles.css +165 -41
  329. package/dist/styles.layered.css +165 -41
  330. package/dist/supplemental-display.d.ts.map +1 -1
  331. package/dist/supplemental-display.js +1 -0
  332. package/dist/supplemental-display.js.map +1 -1
  333. package/dist/supplemental-navigation.d.ts.map +1 -1
  334. package/dist/supplemental-navigation.js +1 -0
  335. package/dist/supplemental-navigation.js.map +1 -1
  336. package/dist/swipe-actions.d.ts.map +1 -1
  337. package/dist/swipe-actions.js +1 -0
  338. package/dist/swipe-actions.js.map +1 -1
  339. package/dist/table-family.d.ts.map +1 -1
  340. package/dist/table-family.js +1 -0
  341. package/dist/table-family.js.map +1 -1
  342. package/dist/table-sort-button.d.ts.map +1 -1
  343. package/dist/table-sort-button.js +1 -0
  344. package/dist/table-sort-button.js.map +1 -1
  345. package/dist/tags-input.d.ts.map +1 -1
  346. package/dist/tags-input.js +1 -0
  347. package/dist/tags-input.js.map +1 -1
  348. package/dist/task-list.d.ts.map +1 -1
  349. package/dist/task-list.js +1 -0
  350. package/dist/task-list.js.map +1 -1
  351. package/dist/text-annotation.d.ts.map +1 -1
  352. package/dist/text-annotation.js +1 -0
  353. package/dist/text-annotation.js.map +1 -1
  354. package/dist/text-formats.d.ts.map +1 -1
  355. package/dist/text-formats.js +1 -0
  356. package/dist/text-formats.js.map +1 -1
  357. package/dist/theme.d.ts.map +1 -1
  358. package/dist/theme.js +12 -1
  359. package/dist/theme.js.map +1 -1
  360. package/dist/thinking-orb.d.ts.map +1 -1
  361. package/dist/thinking-orb.js +1 -0
  362. package/dist/thinking-orb.js.map +1 -1
  363. package/dist/toast.d.ts.map +1 -1
  364. package/dist/toast.js +1 -0
  365. package/dist/toast.js.map +1 -1
  366. package/dist/toggle-group.d.ts.map +1 -1
  367. package/dist/toggle-group.js +1 -0
  368. package/dist/toggle-group.js.map +1 -1
  369. package/dist/top-bar.d.ts.map +1 -1
  370. package/dist/top-bar.js +1 -0
  371. package/dist/top-bar.js.map +1 -1
  372. package/dist/top.d.ts.map +1 -1
  373. package/dist/top.js +4 -3
  374. package/dist/top.js.map +1 -1
  375. package/dist/tour.d.ts.map +1 -1
  376. package/dist/tour.js +1 -0
  377. package/dist/tour.js.map +1 -1
  378. package/dist/transfer-list.d.ts.map +1 -1
  379. package/dist/transfer-list.js +1 -0
  380. package/dist/transfer-list.js.map +1 -1
  381. package/dist/tree.d.ts.map +1 -1
  382. package/dist/tree.js +1 -0
  383. package/dist/tree.js.map +1 -1
  384. package/dist/upload-item.d.ts.map +1 -1
  385. package/dist/upload-item.js +1 -0
  386. package/dist/upload-item.js.map +1 -1
  387. package/dist/virtual-list.d.ts.map +1 -1
  388. package/dist/virtual-list.js +1 -0
  389. package/dist/virtual-list.js.map +1 -1
  390. package/dist/voice-note.d.ts.map +1 -1
  391. package/dist/voice-note.js +1 -0
  392. package/dist/voice-note.js.map +1 -1
  393. package/package.json +8 -3
package/README.md CHANGED
@@ -181,6 +181,6 @@ Existing [BottomNavigation](../design-contracts/docs/bottom-navigation.md) accep
181
181
  `configuration={{ presentation: "capsule" }}` with an adjacent `primaryAction`.
182
182
 
183
183
 
184
- ## React Server Component profile boundary
184
+ ## React Server Component boundary
185
185
 
186
- A server-authored guide exposed a missing client boundary in the layout entry when profile context was added. The current source declares `"use client"` in `/layout` and `/provider` so a Server Component can pass serializable product profiles and server-authored JSX children without a page-wide wrapper. This fix is not present in published1.15.0; keep the consumer's wrapper until a version containing the fix is installed. Hooks and callback props still belong in consumer Client Components, and this change does not promise direct server imports of the root barrel or other entries. The [integration fixture](test/fixtures/rsc-profile/README.md) preserves the reproduction; [QA](../../docs/qa/2026-10-07-rsc-profile-boundary.md) records the actual Next build and hydration scope.
186
+ Every built module that reads React context, holds state or effects, passes event handlers, or imports such a module declares `"use client"` itself, so a Server Component can import any granular entry (`/screens`, `/display`, `/heading`, `/actions`, …) and pass serializable props and server-authored JSX children without a product re-export wrapper. Pure modules — style keys, evidence, re-export barrels such as the root entry, and server-renderable components such as `/qr-code` and `/watermark` — stay server modules, because a directive would turn their functions into client references a server cannot call. `test/client-boundary.ssr.test.tsx` enforces the rule on `dist/`. Function props (`renderLink`, `renderAnchor`, callbacks) and hooks still belong in consumer Client Components. Until 2026-10-23 only `/layout`, `/provider` and a few compositions declared the directive (published 1.41.2 included); keep a consumer wrapper until a version containing this change is installed. The [integration fixture](test/fixtures/rsc-profile/README.md) preserves the original reproduction; [QA](../../docs/qa/2026-10-07-rsc-profile-boundary.md) records the first Next build and hydration scope.
package/dist/actions.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import { type ButtonAppearance, type ButtonAlign, type ButtonEdge, type ButtonShape, type ButtonSize, type ButtonTone } from "@hjmds/design-contracts/recipes/base";
2
2
  export type { ButtonAlign, ButtonEdge, ButtonShape, ButtonAppearance };
3
+ import type { ElevationStep } from "@hjmds/design-contracts/foundations";
3
4
  import { type IconButtonEdge, type IconButtonShape, type IconButtonSize, type IconButtonTone, type LinkTone, type LinkVariant } from "@hjmds/design-contracts/recipes";
4
5
  import { type AnchorHTMLAttributes, type ButtonHTMLAttributes, type ForwardedRef, type ReactElement, type ReactNode } from "react";
5
6
  export type { ButtonSize, ButtonTone } from "@hjmds/design-contracts/recipes/base";
@@ -96,6 +97,11 @@ export type IconButtonProps = Omit<ButtonHTMLAttributes<HTMLButtonElement>, "ari
96
97
  * (`resolveIconButtonEdgeOverhang`, 2026-10-17 measured audit). Framed tones align their frame and do not move.
97
98
  */
98
99
  edge?: IconButtonEdge;
100
+ /**
101
+ * Shadow token step for a floating control (iconButtonRecipe.elevation, default `none`). Filled tones only;
102
+ * an elevated ghost button throws.
103
+ */
104
+ elevation?: ElevationStep;
99
105
  children: ReactNode;
100
106
  /** Canonical layout-only placement. Controlled visual keys are excluded. */
101
107
  layoutStyle?: HjmCompositionStyleProp;
@@ -116,10 +122,45 @@ export declare const IconButton: import("react").ForwardRefExoticComponent<Omit<
116
122
  * (`resolveIconButtonEdgeOverhang`, 2026-10-17 measured audit). Framed tones align their frame and do not move.
117
123
  */
118
124
  edge?: IconButtonEdge;
125
+ /**
126
+ * Shadow token step for a floating control (iconButtonRecipe.elevation, default `none`). Filled tones only;
127
+ * an elevated ghost button throws.
128
+ */
129
+ elevation?: ElevationStep;
119
130
  children: ReactNode;
120
131
  /** Canonical layout-only placement. Controlled visual keys are excluded. */
121
132
  layoutStyle?: HjmCompositionStyleProp;
122
133
  }> & import("react").RefAttributes<HTMLButtonElement>>;
134
+ /**
135
+ * Web navigation with IconButton paint, as ButtonLink is to Button. A 44px icon-only destination (shell settings,
136
+ * profile) needs the IconButton frame, `edge` and a current-page treatment; ButtonLink's padded pill and a product
137
+ * `<a>` with its own radius/size/selected CSS both drifted from IconButton (2026-10-23 Diairy ShellSettingsLink).
138
+ * Toggle, loading and mutation semantics stay on IconButton.
139
+ */
140
+ export type IconButtonLinkProps = Omit<AnchorHTMLAttributes<HTMLAnchorElement>, "aria-label" | "aria-current" | "children"> & Pick<IconButtonProps, "label" | "tone" | "size" | "hitSlop" | "shape" | "edge" | "layoutStyle"> & Readonly<{
141
+ href: string;
142
+ /** Icon only; `label` is the accessible name. */
143
+ children: ReactNode;
144
+ /** The link points at the current page: `aria-current="page"` with the selected surface (`iconButtonRecipe.states.selected`). */
145
+ current?: boolean;
146
+ disabled?: boolean;
147
+ /** Framework routing adapter; HJM still owns the anchor destination, ref, name, current state and disabled guards. */
148
+ renderAnchor?: (props: AnchorHTMLAttributes<HTMLAnchorElement> & {
149
+ ref: ForwardedRef<HTMLAnchorElement>;
150
+ }) => ReactElement;
151
+ }>;
152
+ export declare const IconButtonLink: import("react").ForwardRefExoticComponent<Omit<AnchorHTMLAttributes<HTMLAnchorElement>, "children" | "aria-current" | "aria-label"> & Pick<IconButtonProps, "label" | "tone" | "size" | "layoutStyle" | "shape" | "hitSlop" | "edge"> & Readonly<{
153
+ href: string;
154
+ /** Icon only; `label` is the accessible name. */
155
+ children: ReactNode;
156
+ /** The link points at the current page: `aria-current="page"` with the selected surface (`iconButtonRecipe.states.selected`). */
157
+ current?: boolean;
158
+ disabled?: boolean;
159
+ /** Framework routing adapter; HJM still owns the anchor destination, ref, name, current state and disabled guards. */
160
+ renderAnchor?: (props: AnchorHTMLAttributes<HTMLAnchorElement> & {
161
+ ref: ForwardedRef<HTMLAnchorElement>;
162
+ }) => ReactElement;
163
+ }> & import("react").RefAttributes<HTMLAnchorElement>>;
123
164
  export type LinkRenderProps = AnchorHTMLAttributes<HTMLAnchorElement> & Readonly<{
124
165
  children: ReactNode;
125
166
  ref: ForwardedRef<HTMLAnchorElement>;
@@ -1 +1 @@
1
- {"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../src/actions.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../src/actions.tsx"],"names":[],"mappings":"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"}
package/dist/actions.js CHANGED
@@ -1,6 +1,7 @@
1
+ "use client";
1
2
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
3
  import { buttonRecipe, resolveButtonDepth, } from "@hjmds/design-contracts/recipes/base";
3
- import { iconButtonRecipe, linkRecipe, } from "@hjmds/design-contracts/recipes";
4
+ import { iconButtonRecipe, linkRecipe, validateIconButtonElevation, } from "@hjmds/design-contracts/recipes";
4
5
  import { Children, useContext, forwardRef, } from "react";
5
6
  import { DesignProfileContext, classNames } from "./internal.js";
6
7
  // Both semantic hosts use the same recipe and product profile; navigation must not
@@ -80,7 +81,8 @@ export const ButtonLink = forwardRef(function ButtonLink({ href, disabled = fals
80
81
  };
81
82
  return renderAnchor ? renderAnchor(anchorProps) : _jsx("a", { ...anchorProps });
82
83
  });
83
- export const IconButton = forwardRef(function IconButton({ label, tone = iconButtonRecipe.defaults.tone, size = iconButtonRecipe.defaults.size, hitSlop, shape = iconButtonRecipe.defaults.shape, selected, loading = false, edge, disabled, onClick, type = "button", className, children, layoutStyle, style, ...props }, ref) {
84
+ export const IconButton = forwardRef(function IconButton({ label, tone = iconButtonRecipe.defaults.tone, size = iconButtonRecipe.defaults.size, hitSlop, shape = iconButtonRecipe.defaults.shape, selected, loading = false, edge, elevation = iconButtonRecipe.elevation.default, disabled, onClick, type = "button", className, children, layoutStyle, style, ...props }, ref) {
85
+ validateIconButtonElevation(elevation, tone);
84
86
  // Preserve a focusable disabled action (e.g. a Carousel boundary).
85
87
  const ariaDisabled = props["aria-disabled"] === true || props["aria-disabled"] === "true";
86
88
  const unavailable = disabled === true || loading || ariaDisabled;
@@ -92,7 +94,42 @@ export const IconButton = forwardRef(function IconButton({ label, tone = iconBut
92
94
  }
93
95
  onClick?.(event);
94
96
  };
95
- return (_jsx("button", { ...props, style: { ...(hitSlop === undefined ? {} : { "--hjm-button-hit-slop": `${hitSlop}px` }), ...style, ...layoutStyle }, ref: ref, type: type, className: classNames("hjm-icon-button", className), "data-tone": tone, "data-size": size, "data-shape": shape, "data-edge": edge, ...(selected === undefined ? {} : { "data-selected": selected, "aria-pressed": selected }), "data-state": loading ? "loading" : unavailable ? "disabled" : "idle", "aria-label": label, "aria-busy": loading || undefined, "aria-disabled": unavailable || undefined, disabled: disabled, onClick: handleClick, children: loading ? _jsx("span", { className: "hjm-button__spinner", "aria-hidden": "true" }) : children }));
97
+ return (_jsx("button", { ...props, style: { ...(hitSlop === undefined ? {} : { "--hjm-button-hit-slop": `${hitSlop}px` }), ...style, ...layoutStyle }, ref: ref, type: type, className: classNames("hjm-icon-button", className), "data-tone": tone, "data-size": size, "data-shape": shape, "data-edge": edge, "data-elevation": elevation === "none" ? undefined : elevation, ...(selected === undefined ? {} : { "data-selected": selected, "aria-pressed": selected }), "data-state": loading ? "loading" : unavailable ? "disabled" : "idle", "aria-label": label, "aria-busy": loading || undefined, "aria-disabled": unavailable || undefined, disabled: disabled, onClick: handleClick, children: loading ? _jsx("span", { className: "hjm-button__spinner", "aria-hidden": "true" }) : children }));
98
+ });
99
+ export const IconButtonLink = forwardRef(function IconButtonLink({ href, label, tone = iconButtonRecipe.defaults.tone, size = iconButtonRecipe.defaults.size, hitSlop, shape = iconButtonRecipe.defaults.shape, edge, current = false, disabled = false, layoutStyle, children, className, style, onClick, onAuxClick, tabIndex, renderAnchor, ...props }, ref) {
100
+ if (!label.trim())
101
+ throw new TypeError("IconButtonLink label must not be empty");
102
+ const unavailable = disabled || props["aria-disabled"] === true || props["aria-disabled"] === "true";
103
+ const activate = (callback) => (event) => {
104
+ if (unavailable) {
105
+ event.preventDefault();
106
+ event.stopPropagation();
107
+ return;
108
+ }
109
+ callback?.(event);
110
+ };
111
+ const anchorProps = {
112
+ ...props,
113
+ ref,
114
+ // Same guard as ButtonLink: an unavailable link gives adapters no href, so no framework can navigate it.
115
+ href: unavailable ? undefined : href,
116
+ role: unavailable ? "link" : props.role,
117
+ "aria-label": label,
118
+ "aria-current": current ? "page" : undefined,
119
+ "aria-disabled": unavailable || undefined,
120
+ tabIndex: unavailable ? -1 : tabIndex,
121
+ onClick: activate(onClick),
122
+ onAuxClick: activate(onAuxClick),
123
+ className: classNames("hjm-icon-button", className),
124
+ style: { ...(hitSlop === undefined ? {} : { "--hjm-button-hit-slop": `${hitSlop}px` }), ...style, ...layoutStyle },
125
+ "data-tone": tone,
126
+ "data-size": size,
127
+ "data-shape": shape,
128
+ "data-edge": edge,
129
+ "data-state": unavailable ? "disabled" : "idle",
130
+ children,
131
+ };
132
+ return renderAnchor ? renderAnchor(anchorProps) : _jsx("a", { ...anchorProps });
96
133
  });
97
134
  export const Link = forwardRef(function Link({ tone = linkRecipe.defaults.tone, variant = linkRecipe.defaults.variant, disabled = false, leading, trailing, renderAnchor, target, rel, tabIndex, onClick, className, children, layoutStyle, ...props }, ref) {
98
135
  const handleClick = (event) => {
@@ -1 +1 @@
1
- {"version":3,"file":"actions.js","sourceRoot":"","sources":["../src/actions.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n buttonRecipe,\n resolveButtonDepth,\n type ButtonAppearance,\n type ButtonAlign,\n type ButtonEdge,\n type ButtonShape,\n type ButtonSize,\n type ButtonTone,\n} from \"@hjmds/design-contracts/recipes/base\";\n\nexport type { ButtonAlign, ButtonEdge, ButtonShape, ButtonAppearance };\nimport {\n iconButtonRecipe,\n linkRecipe,\n type IconButtonEdge,\n type IconButtonShape,\n type IconButtonSize,\n type IconButtonTone,\n type LinkTone,\n type LinkVariant,\n} from \"@hjmds/design-contracts/recipes\";\nimport {\n Children,\n useContext,\n forwardRef,\n type AnchorHTMLAttributes,\n type CSSProperties,\n type ButtonHTMLAttributes,\n type ForwardedRef,\n type MouseEvent,\n type ReactElement,\n type ReactNode,\n} from \"react\";\nimport { DesignProfileContext, classNames } from \"./internal.js\";\n\nexport type { ButtonSize, ButtonTone } from \"@hjmds/design-contracts/recipes/base\";\nexport type {\n IconButtonEdge,\n IconButtonShape,\n IconButtonSize,\n IconButtonTone,\n} from \"@hjmds/design-contracts/recipes\";\nimport type { HjmCompositionStyleProp } from \"./composition-style.js\";\n\nexport type ButtonProps = ButtonHTMLAttributes<HTMLButtonElement> &\n Readonly<{\n tone?: ButtonTone;\n size?: ButtonSize;\n /** Extra pointer area in pixels; compact header tools use 0. Defaults to the size recipe. */\n hitSlop?: number;\n /** Frame geometry. `pill` replaces product code that overrode `border-radius`. */\n shape?: ButtonShape;\n appearance?: ButtonAppearance;\n fullWidth?: boolean;\n /** Label placement inside the frame; `leading` suits a full-width row action. */\n align?: ButtonAlign;\n /** Toggle state. Paints the selected treatment and sets `aria-pressed`. */\n selected?: boolean;\n loading?: boolean;\n /** Explicit confirmed mutation result. Both text labels remain measured in every state. */\n completion?: Readonly<{ confirmed: boolean; label: string }>;\n leading?: ReactNode;\n trailing?: ReactNode;\n /**\n * Container edge(s) this button sits on. A ghost button overhangs that edge by its inline padding so the label\n * or trailing glyph lines up with the container inset (`resolveButtonEdgeOverhang`); framed tones keep their frame.\n */\n edge?: ButtonEdge;\n /** Canonical layout-only placement. Controlled visual keys are excluded. */\n layoutStyle?: HjmCompositionStyleProp;\n}>;\n\n// Both semantic hosts use the same recipe and product profile; navigation must not\n// recreate button paint in a product or turn an anchor into a nested button.\nfunction useButtonPaint(tone: ButtonTone, size: ButtonSize, suppliedShape?: ButtonShape, suppliedAppearance?: ButtonAppearance) {\n const profile = useContext(DesignProfileContext);\n const shape = suppliedShape ?? profile?.controls?.button?.shape ?? buttonRecipe.defaults.shape;\n const appearance = suppliedAppearance ?? profile?.controls?.button?.appearance ?? buttonRecipe.defaults.appearance;\n const depth = resolveButtonDepth(appearance, tone, size);\n const side = tone === \"secondary\" ? \"var(--hjm-color-border-control)\" : tone === \"danger\" ? \"var(--hjm-color-danger-fill)\" : \"var(--hjm-color-primary)\";\n return { shape, appearance, depth, style: {\n \"--hjm-button-label-lines\": buttonRecipe.label.maxLines,\n \"--hjm-button-depth\": `${depth}px`, \"--hjm-button-side\": side,\n \"--hjm-button-side-shade\": `${buttonRecipe.raised.sideShade * 100}%`,\n \"--hjm-button-face-padding\": `${buttonRecipe.sizes[size].paddingHorizontal}px`,\n \"--hjm-button-settle\": `${buttonRecipe.raised.settleDuration}ms`,\n } as CSSProperties };\n}\n\nexport const Button = forwardRef<HTMLButtonElement, ButtonProps>(function Button(\n {\n tone = buttonRecipe.defaults.tone,\n size = buttonRecipe.defaults.size,\n hitSlop,\n shape: suppliedShape,\n appearance: suppliedAppearance,\n fullWidth = false,\n align = buttonRecipe.defaults.align,\n selected,\n loading = false,\n completion,\n leading,\n trailing,\n edge,\n disabled,\n onClick,\n type = \"button\",\n className,\n children,\n layoutStyle,\n style,\n ...props\n },\n ref,\n) {\n const { shape, appearance, depth, style: paintStyle } = useButtonPaint(tone, size, suppliedShape, suppliedAppearance);\n const textParts = completion ? Children.toArray(children) : [];\n if (completion && (!completion.label.trim() || typeof completion.confirmed !== \"boolean\" || textParts.length === 0 || !textParts.every(part => typeof part === \"string\" || typeof part === \"number\"))) {\n throw new TypeError(\"Button completion requires a nonempty label, a boolean confirmed value and text-only children\");\n }\n const idleLabel = completion ? textParts.join(\"\") : children;\n const currentLabel = completion?.confirmed && !loading ? completion.label : idleLabel;\n // Preserve a focusable disabled action (e.g. a Carousel boundary).\n const ariaDisabled = props[\"aria-disabled\"] === true || props[\"aria-disabled\"] === \"true\";\n const unavailable = disabled === true || loading || ariaDisabled;\n const handleClick = (event: MouseEvent<HTMLButtonElement>) => {\n if (unavailable) {\n event.preventDefault();\n event.stopPropagation();\n return;\n }\n onClick?.(event);\n };\n const content = <>\n {leading}\n {completion ? <span style={{ display: \"inline-grid\", minWidth: 0 }}>\n {/* Both labels contribute intrinsic dimensions, including wrapping/font changes. */}\n <span aria-hidden=\"true\" className=\"hjm-button__label\" style={{ gridArea: \"1 / 1\", visibility: \"hidden\" }}>{idleLabel}</span>\n <span aria-hidden=\"true\" className=\"hjm-button__label\" style={{ gridArea: \"1 / 1\", visibility: \"hidden\" }}>{completion.label}</span>\n <span className=\"hjm-button__label\" style={{ gridArea: \"1 / 1\", alignSelf: \"center\" }}>{currentLabel}</span>\n </span> : <span className=\"hjm-button__label\">{children}</span>}\n {trailing}\n {loading ? <span className=\"hjm-button__loading-indicator\" aria-hidden=\"true\"><span className=\"hjm-button__spinner\" /></span> : null}\n </>;\n return (\n <button\n {...props}\n // The cap lives in the recipe, not in the stylesheet: one number, one place.\n style={{ ...paintStyle, ...(hitSlop === undefined ? {} : { \"--hjm-button-hit-slop\": `${hitSlop}px` }), ...style, ...layoutStyle } as CSSProperties}\n ref={ref}\n type={type}\n className={classNames(\"hjm-button\", className)}\n data-tone={tone}\n data-size={size}\n data-shape={shape}\n data-appearance={appearance}\n data-raised={depth > 0 || undefined}\n data-full-width={fullWidth || undefined}\n data-align={align}\n data-edge={edge}\n {...(selected === undefined ? {} : { \"data-selected\": selected, \"aria-pressed\": selected })}\n data-state={loading ? \"loading\" : unavailable ? \"disabled\" : \"idle\"}\n aria-busy={loading || undefined}\n aria-disabled={unavailable || undefined}\n disabled={disabled && !loading}\n onClick={handleClick}\n >\n {depth > 0 ? <span className=\"hjm-button__face\">{content}</span> : content}\n </button>\n );\n});\n\n/** Web navigation with Button paint. Mutation/loading/toggle semantics belong to Button. */\nexport type ButtonLinkProps = AnchorHTMLAttributes<HTMLAnchorElement> &\n Pick<ButtonProps, \"tone\" | \"size\" | \"shape\" | \"appearance\" | \"fullWidth\" | \"align\" | \"leading\" | \"trailing\" | \"edge\" | \"layoutStyle\"> &\n Readonly<{\n href: string;\n disabled?: boolean;\n /** Framework routing adapter; HJM still owns the anchor destination, ref and disabled guards. */\n renderAnchor?: (props: AnchorHTMLAttributes<HTMLAnchorElement> & { ref: ForwardedRef<HTMLAnchorElement> }) => ReactElement;\n }>;\n\nexport const ButtonLink = forwardRef<HTMLAnchorElement, ButtonLinkProps>(function ButtonLink({\n href, disabled = false, tone = buttonRecipe.defaults.tone, size = buttonRecipe.defaults.size,\n shape: suppliedShape, appearance: suppliedAppearance, fullWidth = false,\n align = buttonRecipe.defaults.align, leading, trailing, edge, layoutStyle,\n children, className, style, onClick, onAuxClick, tabIndex, renderAnchor, ...props\n}, ref) {\n const { shape, appearance, depth, style: paintStyle } = useButtonPaint(tone, size, suppliedShape, suppliedAppearance);\n const unavailable = disabled || props[\"aria-disabled\"] === true || props[\"aria-disabled\"] === \"true\";\n const activate = (callback: typeof onClick) => (event: MouseEvent<HTMLAnchorElement>) => {\n if (unavailable) { event.preventDefault(); event.stopPropagation(); return; }\n callback?.(event);\n };\n const content = <>{leading}<span className=\"hjm-button__label\">{children}</span>{trailing}</>;\n const anchorProps = {\n ...props,\n ref,\n // Adapters must also receive no href while unavailable, including their framework's navigation path.\n href: unavailable ? undefined : href,\n role: unavailable ? \"link\" : props.role,\n \"aria-disabled\": unavailable || undefined,\n tabIndex: unavailable ? -1 : tabIndex,\n onClick: activate(onClick),\n onAuxClick: activate(onAuxClick),\n className: classNames(\"hjm-button\", className),\n style: { ...paintStyle, ...style, ...layoutStyle },\n \"data-tone\": tone,\n \"data-size\": size,\n \"data-shape\": shape,\n \"data-appearance\": appearance,\n \"data-raised\": depth > 0 || undefined,\n \"data-full-width\": fullWidth || undefined,\n \"data-align\": align,\n \"data-edge\": edge,\n \"data-state\": unavailable ? \"disabled\" : \"idle\",\n children: depth > 0 ? <span className=\"hjm-button__face\">{content}</span> : content,\n };\n return renderAnchor ? renderAnchor(anchorProps) : <a {...anchorProps} />;\n});\n\nexport type IconButtonProps = Omit<\n ButtonHTMLAttributes<HTMLButtonElement>,\n \"aria-label\"\n> &\n Readonly<{\n label: string;\n tone?: IconButtonTone;\n size?: IconButtonSize;\n /** Extra pointer area in pixels; compact header tools use 0. Defaults to the size recipe. */\n hitSlop?: number;\n shape?: IconButtonShape;\n /** Toggle state. Paints the selected treatment and sets `aria-pressed`. */\n selected?: boolean;\n loading?: boolean;\n /**\n * Container edge(s) this button sits on (logical, RTL-aware). A ghost button keeps its touch target but overhangs\n * the edge by (diameter − glyph slot) / 2 so the glyph slot lines up with the container inset\n * (`resolveIconButtonEdgeOverhang`, 2026-10-17 measured audit). Framed tones align their frame and do not move.\n */\n edge?: IconButtonEdge;\n children: ReactNode;\n /** Canonical layout-only placement. Controlled visual keys are excluded. */\n layoutStyle?: HjmCompositionStyleProp;\n}>;\n\nexport const IconButton = forwardRef<HTMLButtonElement, IconButtonProps>(\n function IconButton(\n {\n label,\n tone = iconButtonRecipe.defaults.tone,\n size = iconButtonRecipe.defaults.size,\n hitSlop,\n shape = iconButtonRecipe.defaults.shape,\n selected,\n loading = false,\n edge,\n disabled,\n onClick,\n type = \"button\",\n className,\n children,\n layoutStyle,\n style,\n ...props\n },\n ref,\n ) {\n // Preserve a focusable disabled action (e.g. a Carousel boundary).\n const ariaDisabled = props[\"aria-disabled\"] === true || props[\"aria-disabled\"] === \"true\";\n const unavailable = disabled === true || loading || ariaDisabled;\n const handleClick = (event: MouseEvent<HTMLButtonElement>) => {\n if (unavailable) {\n event.preventDefault();\n event.stopPropagation();\n return;\n }\n onClick?.(event);\n };\n return (\n <button\n {...props}\n style={{ ...(hitSlop === undefined ? {} : { \"--hjm-button-hit-slop\": `${hitSlop}px` }), ...style, ...layoutStyle } as CSSProperties}\n ref={ref}\n type={type}\n className={classNames(\"hjm-icon-button\", className)}\n data-tone={tone}\n data-size={size}\n data-shape={shape}\n data-edge={edge}\n {...(selected === undefined ? {} : { \"data-selected\": selected, \"aria-pressed\": selected })}\n data-state={loading ? \"loading\" : unavailable ? \"disabled\" : \"idle\"}\n aria-label={label}\n aria-busy={loading || undefined}\n aria-disabled={unavailable || undefined}\n disabled={disabled}\n onClick={handleClick}\n >\n {loading ? <span className=\"hjm-button__spinner\" aria-hidden=\"true\" /> : children}\n </button>\n );\n },\n);\n\nexport type LinkRenderProps = AnchorHTMLAttributes<HTMLAnchorElement> &\n Readonly<{\n children: ReactNode;\n ref: ForwardedRef<HTMLAnchorElement>;\n \"data-tone\": LinkTone;\n \"data-variant\": LinkVariant;\n \"data-state\": \"disabled\" | \"idle\";\n }>;\n\nexport type LinkProps = AnchorHTMLAttributes<HTMLAnchorElement> &\n Readonly<{\n tone?: LinkTone;\n variant?: LinkVariant;\n disabled?: boolean;\n leading?: ReactNode;\n trailing?: ReactNode;\n /** Framework adapter, for example Next.js Link, while HJM keeps link semantics and state. */\n renderAnchor?: (props: LinkRenderProps) => ReactElement;\n /** Canonical layout-only placement on the root element. Controlled visual keys are excluded. */\n layoutStyle?: HjmCompositionStyleProp;\n }>;\n\nexport const Link = forwardRef<HTMLAnchorElement, LinkProps>(function Link(\n {\n tone = linkRecipe.defaults.tone,\n variant = linkRecipe.defaults.variant,\n disabled = false,\n leading,\n trailing,\n renderAnchor,\n target,\n rel,\n tabIndex,\n onClick,\n className,\n children,\n layoutStyle,\n ...props\n },\n ref,\n) {\n const handleClick = (event: MouseEvent<HTMLAnchorElement>) => {\n if (disabled) {\n event.preventDefault();\n return;\n }\n onClick?.(event);\n };\n const anchorProps: LinkRenderProps = {\n ...props,\n // `renderAnchor` adapters receive the merged placement, so a framework Link\n // gets the same position as the plain <a>.\n ...(props.style === undefined && layoutStyle === undefined ? {} : { style: { ...props.style, ...layoutStyle } }),\n ref,\n className: classNames(\"hjm-link\", className),\n \"data-tone\": tone,\n \"data-variant\": variant,\n \"data-state\": disabled ? \"disabled\" : \"idle\",\n \"aria-disabled\": disabled || undefined,\n tabIndex: disabled ? -1 : tabIndex,\n target,\n rel: rel ?? (target === \"_blank\" ? \"noreferrer noopener\" : undefined),\n onClick: handleClick,\n children: (\n <>\n {leading}\n <span>{children}</span>\n {trailing}\n </>\n ),\n };\n return renderAnchor ? renderAnchor(anchorProps) : <a {...anchorProps} />;\n});\n"]}
1
+ {"version":3,"file":"actions.js","sourceRoot":"","sources":["../src/actions.tsx"],"names":[],"mappings":"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","sourcesContent":["\"use client\";\n\nimport {\n buttonRecipe,\n resolveButtonDepth,\n type ButtonAppearance,\n type ButtonAlign,\n type ButtonEdge,\n type ButtonShape,\n type ButtonSize,\n type ButtonTone,\n} from \"@hjmds/design-contracts/recipes/base\";\n\nexport type { ButtonAlign, ButtonEdge, ButtonShape, ButtonAppearance };\nimport type { ElevationStep } from \"@hjmds/design-contracts/foundations\";\nimport {\n iconButtonRecipe,\n linkRecipe,\n validateIconButtonElevation,\n type IconButtonEdge,\n type IconButtonShape,\n type IconButtonSize,\n type IconButtonTone,\n type LinkTone,\n type LinkVariant,\n} from \"@hjmds/design-contracts/recipes\";\nimport {\n Children,\n useContext,\n forwardRef,\n type AnchorHTMLAttributes,\n type CSSProperties,\n type ButtonHTMLAttributes,\n type ForwardedRef,\n type MouseEvent,\n type ReactElement,\n type ReactNode,\n} from \"react\";\nimport { DesignProfileContext, classNames } from \"./internal.js\";\n\nexport type { ButtonSize, ButtonTone } from \"@hjmds/design-contracts/recipes/base\";\nexport type {\n IconButtonEdge,\n IconButtonShape,\n IconButtonSize,\n IconButtonTone,\n} from \"@hjmds/design-contracts/recipes\";\nimport type { HjmCompositionStyleProp } from \"./composition-style.js\";\n\nexport type ButtonProps = ButtonHTMLAttributes<HTMLButtonElement> &\n Readonly<{\n tone?: ButtonTone;\n size?: ButtonSize;\n /** Extra pointer area in pixels; compact header tools use 0. Defaults to the size recipe. */\n hitSlop?: number;\n /** Frame geometry. `pill` replaces product code that overrode `border-radius`. */\n shape?: ButtonShape;\n appearance?: ButtonAppearance;\n fullWidth?: boolean;\n /** Label placement inside the frame; `leading` suits a full-width row action. */\n align?: ButtonAlign;\n /** Toggle state. Paints the selected treatment and sets `aria-pressed`. */\n selected?: boolean;\n loading?: boolean;\n /** Explicit confirmed mutation result. Both text labels remain measured in every state. */\n completion?: Readonly<{ confirmed: boolean; label: string }>;\n leading?: ReactNode;\n trailing?: ReactNode;\n /**\n * Container edge(s) this button sits on. A ghost button overhangs that edge by its inline padding so the label\n * or trailing glyph lines up with the container inset (`resolveButtonEdgeOverhang`); framed tones keep their frame.\n */\n edge?: ButtonEdge;\n /** Canonical layout-only placement. Controlled visual keys are excluded. */\n layoutStyle?: HjmCompositionStyleProp;\n}>;\n\n// Both semantic hosts use the same recipe and product profile; navigation must not\n// recreate button paint in a product or turn an anchor into a nested button.\nfunction useButtonPaint(tone: ButtonTone, size: ButtonSize, suppliedShape?: ButtonShape, suppliedAppearance?: ButtonAppearance) {\n const profile = useContext(DesignProfileContext);\n const shape = suppliedShape ?? profile?.controls?.button?.shape ?? buttonRecipe.defaults.shape;\n const appearance = suppliedAppearance ?? profile?.controls?.button?.appearance ?? buttonRecipe.defaults.appearance;\n const depth = resolveButtonDepth(appearance, tone, size);\n const side = tone === \"secondary\" ? \"var(--hjm-color-border-control)\" : tone === \"danger\" ? \"var(--hjm-color-danger-fill)\" : \"var(--hjm-color-primary)\";\n return { shape, appearance, depth, style: {\n \"--hjm-button-label-lines\": buttonRecipe.label.maxLines,\n \"--hjm-button-depth\": `${depth}px`, \"--hjm-button-side\": side,\n \"--hjm-button-side-shade\": `${buttonRecipe.raised.sideShade * 100}%`,\n \"--hjm-button-face-padding\": `${buttonRecipe.sizes[size].paddingHorizontal}px`,\n \"--hjm-button-settle\": `${buttonRecipe.raised.settleDuration}ms`,\n } as CSSProperties };\n}\n\nexport const Button = forwardRef<HTMLButtonElement, ButtonProps>(function Button(\n {\n tone = buttonRecipe.defaults.tone,\n size = buttonRecipe.defaults.size,\n hitSlop,\n shape: suppliedShape,\n appearance: suppliedAppearance,\n fullWidth = false,\n align = buttonRecipe.defaults.align,\n selected,\n loading = false,\n completion,\n leading,\n trailing,\n edge,\n disabled,\n onClick,\n type = \"button\",\n className,\n children,\n layoutStyle,\n style,\n ...props\n },\n ref,\n) {\n const { shape, appearance, depth, style: paintStyle } = useButtonPaint(tone, size, suppliedShape, suppliedAppearance);\n const textParts = completion ? Children.toArray(children) : [];\n if (completion && (!completion.label.trim() || typeof completion.confirmed !== \"boolean\" || textParts.length === 0 || !textParts.every(part => typeof part === \"string\" || typeof part === \"number\"))) {\n throw new TypeError(\"Button completion requires a nonempty label, a boolean confirmed value and text-only children\");\n }\n const idleLabel = completion ? textParts.join(\"\") : children;\n const currentLabel = completion?.confirmed && !loading ? completion.label : idleLabel;\n // Preserve a focusable disabled action (e.g. a Carousel boundary).\n const ariaDisabled = props[\"aria-disabled\"] === true || props[\"aria-disabled\"] === \"true\";\n const unavailable = disabled === true || loading || ariaDisabled;\n const handleClick = (event: MouseEvent<HTMLButtonElement>) => {\n if (unavailable) {\n event.preventDefault();\n event.stopPropagation();\n return;\n }\n onClick?.(event);\n };\n const content = <>\n {leading}\n {completion ? <span style={{ display: \"inline-grid\", minWidth: 0 }}>\n {/* Both labels contribute intrinsic dimensions, including wrapping/font changes. */}\n <span aria-hidden=\"true\" className=\"hjm-button__label\" style={{ gridArea: \"1 / 1\", visibility: \"hidden\" }}>{idleLabel}</span>\n <span aria-hidden=\"true\" className=\"hjm-button__label\" style={{ gridArea: \"1 / 1\", visibility: \"hidden\" }}>{completion.label}</span>\n <span className=\"hjm-button__label\" style={{ gridArea: \"1 / 1\", alignSelf: \"center\" }}>{currentLabel}</span>\n </span> : <span className=\"hjm-button__label\">{children}</span>}\n {trailing}\n {loading ? <span className=\"hjm-button__loading-indicator\" aria-hidden=\"true\"><span className=\"hjm-button__spinner\" /></span> : null}\n </>;\n return (\n <button\n {...props}\n // The cap lives in the recipe, not in the stylesheet: one number, one place.\n style={{ ...paintStyle, ...(hitSlop === undefined ? {} : { \"--hjm-button-hit-slop\": `${hitSlop}px` }), ...style, ...layoutStyle } as CSSProperties}\n ref={ref}\n type={type}\n className={classNames(\"hjm-button\", className)}\n data-tone={tone}\n data-size={size}\n data-shape={shape}\n data-appearance={appearance}\n data-raised={depth > 0 || undefined}\n data-full-width={fullWidth || undefined}\n data-align={align}\n data-edge={edge}\n {...(selected === undefined ? {} : { \"data-selected\": selected, \"aria-pressed\": selected })}\n data-state={loading ? \"loading\" : unavailable ? \"disabled\" : \"idle\"}\n aria-busy={loading || undefined}\n aria-disabled={unavailable || undefined}\n disabled={disabled && !loading}\n onClick={handleClick}\n >\n {depth > 0 ? <span className=\"hjm-button__face\">{content}</span> : content}\n </button>\n );\n});\n\n/** Web navigation with Button paint. Mutation/loading/toggle semantics belong to Button. */\nexport type ButtonLinkProps = AnchorHTMLAttributes<HTMLAnchorElement> &\n Pick<ButtonProps, \"tone\" | \"size\" | \"shape\" | \"appearance\" | \"fullWidth\" | \"align\" | \"leading\" | \"trailing\" | \"edge\" | \"layoutStyle\"> &\n Readonly<{\n href: string;\n disabled?: boolean;\n /** Framework routing adapter; HJM still owns the anchor destination, ref and disabled guards. */\n renderAnchor?: (props: AnchorHTMLAttributes<HTMLAnchorElement> & { ref: ForwardedRef<HTMLAnchorElement> }) => ReactElement;\n }>;\n\nexport const ButtonLink = forwardRef<HTMLAnchorElement, ButtonLinkProps>(function ButtonLink({\n href, disabled = false, tone = buttonRecipe.defaults.tone, size = buttonRecipe.defaults.size,\n shape: suppliedShape, appearance: suppliedAppearance, fullWidth = false,\n align = buttonRecipe.defaults.align, leading, trailing, edge, layoutStyle,\n children, className, style, onClick, onAuxClick, tabIndex, renderAnchor, ...props\n}, ref) {\n const { shape, appearance, depth, style: paintStyle } = useButtonPaint(tone, size, suppliedShape, suppliedAppearance);\n const unavailable = disabled || props[\"aria-disabled\"] === true || props[\"aria-disabled\"] === \"true\";\n const activate = (callback: typeof onClick) => (event: MouseEvent<HTMLAnchorElement>) => {\n if (unavailable) { event.preventDefault(); event.stopPropagation(); return; }\n callback?.(event);\n };\n const content = <>{leading}<span className=\"hjm-button__label\">{children}</span>{trailing}</>;\n const anchorProps = {\n ...props,\n ref,\n // Adapters must also receive no href while unavailable, including their framework's navigation path.\n href: unavailable ? undefined : href,\n role: unavailable ? \"link\" : props.role,\n \"aria-disabled\": unavailable || undefined,\n tabIndex: unavailable ? -1 : tabIndex,\n onClick: activate(onClick),\n onAuxClick: activate(onAuxClick),\n className: classNames(\"hjm-button\", className),\n style: { ...paintStyle, ...style, ...layoutStyle },\n \"data-tone\": tone,\n \"data-size\": size,\n \"data-shape\": shape,\n \"data-appearance\": appearance,\n \"data-raised\": depth > 0 || undefined,\n \"data-full-width\": fullWidth || undefined,\n \"data-align\": align,\n \"data-edge\": edge,\n \"data-state\": unavailable ? \"disabled\" : \"idle\",\n children: depth > 0 ? <span className=\"hjm-button__face\">{content}</span> : content,\n };\n return renderAnchor ? renderAnchor(anchorProps) : <a {...anchorProps} />;\n});\n\nexport type IconButtonProps = Omit<\n ButtonHTMLAttributes<HTMLButtonElement>,\n \"aria-label\"\n> &\n Readonly<{\n label: string;\n tone?: IconButtonTone;\n size?: IconButtonSize;\n /** Extra pointer area in pixels; compact header tools use 0. Defaults to the size recipe. */\n hitSlop?: number;\n shape?: IconButtonShape;\n /** Toggle state. Paints the selected treatment and sets `aria-pressed`. */\n selected?: boolean;\n loading?: boolean;\n /**\n * Container edge(s) this button sits on (logical, RTL-aware). A ghost button keeps its touch target but overhangs\n * the edge by (diameter − glyph slot) / 2 so the glyph slot lines up with the container inset\n * (`resolveIconButtonEdgeOverhang`, 2026-10-17 measured audit). Framed tones align their frame and do not move.\n */\n edge?: IconButtonEdge;\n /**\n * Shadow token step for a floating control (iconButtonRecipe.elevation, default `none`). Filled tones only;\n * an elevated ghost button throws.\n */\n elevation?: ElevationStep;\n children: ReactNode;\n /** Canonical layout-only placement. Controlled visual keys are excluded. */\n layoutStyle?: HjmCompositionStyleProp;\n}>;\n\nexport const IconButton = forwardRef<HTMLButtonElement, IconButtonProps>(\n function IconButton(\n {\n label,\n tone = iconButtonRecipe.defaults.tone,\n size = iconButtonRecipe.defaults.size,\n hitSlop,\n shape = iconButtonRecipe.defaults.shape,\n selected,\n loading = false,\n edge,\n elevation = iconButtonRecipe.elevation.default,\n disabled,\n onClick,\n type = \"button\",\n className,\n children,\n layoutStyle,\n style,\n ...props\n },\n ref,\n ) {\n validateIconButtonElevation(elevation, tone);\n // Preserve a focusable disabled action (e.g. a Carousel boundary).\n const ariaDisabled = props[\"aria-disabled\"] === true || props[\"aria-disabled\"] === \"true\";\n const unavailable = disabled === true || loading || ariaDisabled;\n const handleClick = (event: MouseEvent<HTMLButtonElement>) => {\n if (unavailable) {\n event.preventDefault();\n event.stopPropagation();\n return;\n }\n onClick?.(event);\n };\n return (\n <button\n {...props}\n style={{ ...(hitSlop === undefined ? {} : { \"--hjm-button-hit-slop\": `${hitSlop}px` }), ...style, ...layoutStyle } as CSSProperties}\n ref={ref}\n type={type}\n className={classNames(\"hjm-icon-button\", className)}\n data-tone={tone}\n data-size={size}\n data-shape={shape}\n data-edge={edge}\n data-elevation={elevation === \"none\" ? undefined : elevation}\n {...(selected === undefined ? {} : { \"data-selected\": selected, \"aria-pressed\": selected })}\n data-state={loading ? \"loading\" : unavailable ? \"disabled\" : \"idle\"}\n aria-label={label}\n aria-busy={loading || undefined}\n aria-disabled={unavailable || undefined}\n disabled={disabled}\n onClick={handleClick}\n >\n {loading ? <span className=\"hjm-button__spinner\" aria-hidden=\"true\" /> : children}\n </button>\n );\n },\n);\n\n/**\n * Web navigation with IconButton paint, as ButtonLink is to Button. A 44px icon-only destination (shell settings,\n * profile) needs the IconButton frame, `edge` and a current-page treatment; ButtonLink's padded pill and a product\n * `<a>` with its own radius/size/selected CSS both drifted from IconButton (2026-10-23 Diairy ShellSettingsLink).\n * Toggle, loading and mutation semantics stay on IconButton.\n */\nexport type IconButtonLinkProps = Omit<AnchorHTMLAttributes<HTMLAnchorElement>, \"aria-label\" | \"aria-current\" | \"children\"> &\n Pick<IconButtonProps, \"label\" | \"tone\" | \"size\" | \"hitSlop\" | \"shape\" | \"edge\" | \"layoutStyle\"> &\n Readonly<{\n href: string;\n /** Icon only; `label` is the accessible name. */\n children: ReactNode;\n /** The link points at the current page: `aria-current=\"page\"` with the selected surface (`iconButtonRecipe.states.selected`). */\n current?: boolean;\n disabled?: boolean;\n /** Framework routing adapter; HJM still owns the anchor destination, ref, name, current state and disabled guards. */\n renderAnchor?: (props: AnchorHTMLAttributes<HTMLAnchorElement> & { ref: ForwardedRef<HTMLAnchorElement> }) => ReactElement;\n }>;\n\nexport const IconButtonLink = forwardRef<HTMLAnchorElement, IconButtonLinkProps>(function IconButtonLink({\n href, label, tone = iconButtonRecipe.defaults.tone, size = iconButtonRecipe.defaults.size, hitSlop,\n shape = iconButtonRecipe.defaults.shape, edge, current = false, disabled = false, layoutStyle,\n children, className, style, onClick, onAuxClick, tabIndex, renderAnchor, ...props\n}, ref) {\n if (!label.trim()) throw new TypeError(\"IconButtonLink label must not be empty\");\n const unavailable = disabled || props[\"aria-disabled\"] === true || props[\"aria-disabled\"] === \"true\";\n const activate = (callback: typeof onClick) => (event: MouseEvent<HTMLAnchorElement>) => {\n if (unavailable) { event.preventDefault(); event.stopPropagation(); return; }\n callback?.(event);\n };\n const anchorProps = {\n ...props,\n ref,\n // Same guard as ButtonLink: an unavailable link gives adapters no href, so no framework can navigate it.\n href: unavailable ? undefined : href,\n role: unavailable ? \"link\" : props.role,\n \"aria-label\": label,\n \"aria-current\": current ? \"page\" as const : undefined,\n \"aria-disabled\": unavailable || undefined,\n tabIndex: unavailable ? -1 : tabIndex,\n onClick: activate(onClick),\n onAuxClick: activate(onAuxClick),\n className: classNames(\"hjm-icon-button\", className),\n style: { ...(hitSlop === undefined ? {} : { \"--hjm-button-hit-slop\": `${hitSlop}px` }), ...style, ...layoutStyle } as CSSProperties,\n \"data-tone\": tone,\n \"data-size\": size,\n \"data-shape\": shape,\n \"data-edge\": edge,\n \"data-state\": unavailable ? \"disabled\" : \"idle\",\n children,\n };\n return renderAnchor ? renderAnchor(anchorProps) : <a {...anchorProps} />;\n});\n\nexport type LinkRenderProps = AnchorHTMLAttributes<HTMLAnchorElement> &\n Readonly<{\n children: ReactNode;\n ref: ForwardedRef<HTMLAnchorElement>;\n \"data-tone\": LinkTone;\n \"data-variant\": LinkVariant;\n \"data-state\": \"disabled\" | \"idle\";\n }>;\n\nexport type LinkProps = AnchorHTMLAttributes<HTMLAnchorElement> &\n Readonly<{\n tone?: LinkTone;\n variant?: LinkVariant;\n disabled?: boolean;\n leading?: ReactNode;\n trailing?: ReactNode;\n /** Framework adapter, for example Next.js Link, while HJM keeps link semantics and state. */\n renderAnchor?: (props: LinkRenderProps) => ReactElement;\n /** Canonical layout-only placement on the root element. Controlled visual keys are excluded. */\n layoutStyle?: HjmCompositionStyleProp;\n }>;\n\nexport const Link = forwardRef<HTMLAnchorElement, LinkProps>(function Link(\n {\n tone = linkRecipe.defaults.tone,\n variant = linkRecipe.defaults.variant,\n disabled = false,\n leading,\n trailing,\n renderAnchor,\n target,\n rel,\n tabIndex,\n onClick,\n className,\n children,\n layoutStyle,\n ...props\n },\n ref,\n) {\n const handleClick = (event: MouseEvent<HTMLAnchorElement>) => {\n if (disabled) {\n event.preventDefault();\n return;\n }\n onClick?.(event);\n };\n const anchorProps: LinkRenderProps = {\n ...props,\n // `renderAnchor` adapters receive the merged placement, so a framework Link\n // gets the same position as the plain <a>.\n ...(props.style === undefined && layoutStyle === undefined ? {} : { style: { ...props.style, ...layoutStyle } }),\n ref,\n className: classNames(\"hjm-link\", className),\n \"data-tone\": tone,\n \"data-variant\": variant,\n \"data-state\": disabled ? \"disabled\" : \"idle\",\n \"aria-disabled\": disabled || undefined,\n tabIndex: disabled ? -1 : tabIndex,\n target,\n rel: rel ?? (target === \"_blank\" ? \"noreferrer noopener\" : undefined),\n onClick: handleClick,\n children: (\n <>\n {leading}\n <span>{children}</span>\n {trailing}\n </>\n ),\n };\n return renderAnchor ? renderAnchor(anchorProps) : <a {...anchorProps} />;\n});\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"activity-chip.d.ts","sourceRoot":"","sources":["../src/activity-chip.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,oBAAoB,EAAsB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAClG,OAAO,EAGL,KAAK,oBAAoB,EAC1B,MAAM,uCAAuC,CAAC;AAE/C,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAEtE,YAAY,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AAIlF,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAClC,oBAAoB,CAAC,iBAAiB,CAAC,EACvC,UAAU,GAAG,MAAM,GAAG,OAAO,GAAG,eAAe,GAAG,YAAY,CAC/D,GACC,QAAQ,CAAC;IACP,qDAAqD;IACrD,KAAK,EAAE,MAAM,CAAC;IACd,+CAA+C;IAC/C,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,sDAAsD;IACtD,QAAQ,CAAC,EAAE,oBAAoB,CAAC;IAChC,qEAAqE;IACrE,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,oFAAoF;IACpF,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,0DAA0D;IAC1D,WAAW,CAAC,EAAE,uBAAuB,CAAC;CACvC,CAAC,CAAC;AAYL,eAAO,MAAM,YAAY;IAxBrB,qDAAqD;WAC9C,MAAM;IACb,+CAA+C;yBAC1B,MAAM;IAC3B,sDAAsD;eAC3C,oBAAoB;IAC/B,qEAAqE;eAC1D,OAAO;IAClB,oFAAoF;YAC5E,SAAS;IACjB,0DAA0D;kBAC5C,uBAAuB;sDA2CvC,CAAC"}
1
+ {"version":3,"file":"activity-chip.d.ts","sourceRoot":"","sources":["../src/activity-chip.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAc,KAAK,oBAAoB,EAAsB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAClG,OAAO,EAGL,KAAK,oBAAoB,EAC1B,MAAM,uCAAuC,CAAC;AAE/C,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAEtE,YAAY,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AAIlF,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAClC,oBAAoB,CAAC,iBAAiB,CAAC,EACvC,UAAU,GAAG,MAAM,GAAG,OAAO,GAAG,eAAe,GAAG,YAAY,CAC/D,GACC,QAAQ,CAAC;IACP,qDAAqD;IACrD,KAAK,EAAE,MAAM,CAAC;IACd,+CAA+C;IAC/C,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,sDAAsD;IACtD,QAAQ,CAAC,EAAE,oBAAoB,CAAC;IAChC,qEAAqE;IACrE,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,oFAAoF;IACpF,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,0DAA0D;IAC1D,WAAW,CAAC,EAAE,uBAAuB,CAAC;CACvC,CAAC,CAAC;AAYL,eAAO,MAAM,YAAY;IAxBrB,qDAAqD;WAC9C,MAAM;IACb,+CAA+C;yBAC1B,MAAM;IAC3B,sDAAsD;eAC3C,oBAAoB;IAC/B,qEAAqE;eAC1D,OAAO;IAClB,oFAAoF;YAC5E,SAAS;IACjB,0DAA0D;kBAC5C,uBAAuB;sDA2CvC,CAAC"}
@@ -1,3 +1,4 @@
1
+ "use client";
1
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
3
  import { forwardRef } from "react";
3
4
  import { activityChipRecipe, resolveActivityChipDescriptor, } from "@hjmds/design-contracts/activity-chip";
@@ -1 +1 @@
1
- {"version":3,"file":"activity-chip.js","sourceRoot":"","sources":["../src/activity-chip.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAiE,MAAM,OAAO,CAAC;AAClG,OAAO,EACL,kBAAkB,EAClB,6BAA6B,GAE9B,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AA0B3C;;;GAGG;AACH,MAAM,WAAW,GAAG;IAClB,+BAA+B,EAAE,GAAG,kBAAkB,CAAC,IAAI,CAAC,QAAQ,IAAI;IACxE,gCAAgC,EAAE,GAAG,kBAAkB,CAAC,KAAK,CAAC,IAAI,IAAI;IACtE,qCAAqC,EAAE,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,cAAc,CAAC;CACrE,CAAC;AAEnB,MAAM,CAAC,MAAM,YAAY,GAAG,UAAU,CAAuC,SAAS,YAAY,CAChG,EAAE,KAAK,EAAE,kBAAkB,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAC1F,GAAG;IAEH,MAAM,QAAQ,GAAG,6BAA6B,CAAC;QAC7C,KAAK;QACL,GAAG,CAAC,kBAAkB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE,CAAC;QACnE,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC;QAC/C,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC;KAChD,CAAC,CAAC;IACH,MAAM,QAAQ,GAAG,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC;IACvD,OAAO,CACL,qBACM,KAAK,EACT,GAAG,EAAE,GAAG,EACR,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,UAAU,CAAC,mBAAmB,EAAE,SAAS,CAAC,mBACtC,QAAQ,CAAC,QAAQ,gBACpB,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,mBAC1B,QAAQ,CAAC,QAAQ,gBAEpB,kBAAkB,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,kBAAkB,EACtF,KAAK,EAAE,EAAE,GAAG,WAAW,EAAE,GAAG,WAAW,EAAE,aAExC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAClB,eAAM,SAAS,EAAC,0BAA0B,iBAAa,MAAM,YAAE,KAAK,GAAQ,CAC7E,EACD,eAAM,SAAS,EAAC,0BAA0B,YAAE,QAAQ,CAAC,KAAK,GAAQ,IAC3D,CACV,CAAC;AACJ,CAAC,CAAC,CAAC","sourcesContent":["import { forwardRef, type ButtonHTMLAttributes, type CSSProperties, type ReactNode } from \"react\";\nimport {\n activityChipRecipe,\n resolveActivityChipDescriptor,\n type ActivityChipEmphasis,\n} from \"@hjmds/design-contracts/activity-chip\";\nimport { classNames } from \"./internal.js\";\nimport type { HjmCompositionStyleProp } from \"./composition-style.js\";\n\nexport type { ActivityChipEmphasis } from \"@hjmds/design-contracts/activity-chip\";\n\n// Raw `style` is excluded like other recipe-owned controls: placement goes through `layoutStyle`,\n// colour through `emphasis` and the provider palette.\nexport type ActivityChipProps = Omit<\n ButtonHTMLAttributes<HTMLButtonElement>,\n \"children\" | \"type\" | \"style\" | \"aria-expanded\" | \"aria-label\"\n> &\n Readonly<{\n /** Short visible status, for example \"Polishing\". */\n label: string;\n /** Full spoken status; defaults to `label`. */\n accessibilityLabel?: string;\n /** `emphasis` marks a result waiting for the user. */\n emphasis?: ActivityChipEmphasis;\n /** Whether the panel this chip toggles is open (`aria-expanded`). */\n expanded?: boolean;\n /** Decorative leading visual (mascot, avatar); hidden from assistive technology. */\n media?: ReactNode;\n /** Canonical layout-only placement on the root button. */\n layoutStyle?: HjmCompositionStyleProp;\n }>;\n\n/**\n * Pressable status of one running task. It is a disclosure trigger for the matching panel toast\n * (composition `activity-status`), so it exposes `aria-expanded` instead of Chip's selection roles.\n */\nconst recipeStyle = {\n \"--hjm-activity-chip-max-width\": `${activityChipRecipe.root.maxWidth}px`,\n \"--hjm-activity-chip-media-size\": `${activityChipRecipe.media.size}px`,\n \"--hjm-activity-chip-pressed-opacity\": String(activityChipRecipe.root.pressedOpacity),\n} as CSSProperties;\n\nexport const ActivityChip = forwardRef<HTMLButtonElement, ActivityChipProps>(function ActivityChip(\n { label, accessibilityLabel, emphasis, expanded, media, layoutStyle, className, ...props },\n ref,\n) {\n const resolved = resolveActivityChipDescriptor({\n label,\n ...(accessibilityLabel === undefined ? {} : { accessibilityLabel }),\n ...(emphasis === undefined ? {} : { emphasis }),\n ...(expanded === undefined ? {} : { expanded }),\n });\n const hasMedia = media !== undefined && media !== null;\n return (\n <button\n {...props}\n ref={ref}\n type=\"button\"\n className={classNames(\"hjm-activity-chip\", className)}\n data-emphasis={resolved.emphasis}\n data-media={hasMedia ? \"true\" : undefined}\n aria-expanded={resolved.expanded}\n // Only name the button separately when the spoken status differs from the visible one.\n aria-label={accessibilityLabel === undefined ? undefined : resolved.accessibilityLabel}\n style={{ ...recipeStyle, ...layoutStyle }}\n >\n {!hasMedia ? null : (\n <span className=\"hjm-activity-chip__media\" aria-hidden=\"true\">{media}</span>\n )}\n <span className=\"hjm-activity-chip__label\">{resolved.label}</span>\n </button>\n );\n});\n"]}
1
+ {"version":3,"file":"activity-chip.js","sourceRoot":"","sources":["../src/activity-chip.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,UAAU,EAAiE,MAAM,OAAO,CAAC;AAClG,OAAO,EACL,kBAAkB,EAClB,6BAA6B,GAE9B,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AA0B3C;;;GAGG;AACH,MAAM,WAAW,GAAG;IAClB,+BAA+B,EAAE,GAAG,kBAAkB,CAAC,IAAI,CAAC,QAAQ,IAAI;IACxE,gCAAgC,EAAE,GAAG,kBAAkB,CAAC,KAAK,CAAC,IAAI,IAAI;IACtE,qCAAqC,EAAE,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,cAAc,CAAC;CACrE,CAAC;AAEnB,MAAM,CAAC,MAAM,YAAY,GAAG,UAAU,CAAuC,SAAS,YAAY,CAChG,EAAE,KAAK,EAAE,kBAAkB,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAC1F,GAAG;IAEH,MAAM,QAAQ,GAAG,6BAA6B,CAAC;QAC7C,KAAK;QACL,GAAG,CAAC,kBAAkB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE,CAAC;QACnE,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC;QAC/C,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC;KAChD,CAAC,CAAC;IACH,MAAM,QAAQ,GAAG,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC;IACvD,OAAO,CACL,qBACM,KAAK,EACT,GAAG,EAAE,GAAG,EACR,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,UAAU,CAAC,mBAAmB,EAAE,SAAS,CAAC,mBACtC,QAAQ,CAAC,QAAQ,gBACpB,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,mBAC1B,QAAQ,CAAC,QAAQ,gBAEpB,kBAAkB,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,kBAAkB,EACtF,KAAK,EAAE,EAAE,GAAG,WAAW,EAAE,GAAG,WAAW,EAAE,aAExC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAClB,eAAM,SAAS,EAAC,0BAA0B,iBAAa,MAAM,YAAE,KAAK,GAAQ,CAC7E,EACD,eAAM,SAAS,EAAC,0BAA0B,YAAE,QAAQ,CAAC,KAAK,GAAQ,IAC3D,CACV,CAAC;AACJ,CAAC,CAAC,CAAC","sourcesContent":["\"use client\";\n\nimport { forwardRef, type ButtonHTMLAttributes, type CSSProperties, type ReactNode } from \"react\";\nimport {\n activityChipRecipe,\n resolveActivityChipDescriptor,\n type ActivityChipEmphasis,\n} from \"@hjmds/design-contracts/activity-chip\";\nimport { classNames } from \"./internal.js\";\nimport type { HjmCompositionStyleProp } from \"./composition-style.js\";\n\nexport type { ActivityChipEmphasis } from \"@hjmds/design-contracts/activity-chip\";\n\n// Raw `style` is excluded like other recipe-owned controls: placement goes through `layoutStyle`,\n// colour through `emphasis` and the provider palette.\nexport type ActivityChipProps = Omit<\n ButtonHTMLAttributes<HTMLButtonElement>,\n \"children\" | \"type\" | \"style\" | \"aria-expanded\" | \"aria-label\"\n> &\n Readonly<{\n /** Short visible status, for example \"Polishing\". */\n label: string;\n /** Full spoken status; defaults to `label`. */\n accessibilityLabel?: string;\n /** `emphasis` marks a result waiting for the user. */\n emphasis?: ActivityChipEmphasis;\n /** Whether the panel this chip toggles is open (`aria-expanded`). */\n expanded?: boolean;\n /** Decorative leading visual (mascot, avatar); hidden from assistive technology. */\n media?: ReactNode;\n /** Canonical layout-only placement on the root button. */\n layoutStyle?: HjmCompositionStyleProp;\n }>;\n\n/**\n * Pressable status of one running task. It is a disclosure trigger for the matching panel toast\n * (composition `activity-status`), so it exposes `aria-expanded` instead of Chip's selection roles.\n */\nconst recipeStyle = {\n \"--hjm-activity-chip-max-width\": `${activityChipRecipe.root.maxWidth}px`,\n \"--hjm-activity-chip-media-size\": `${activityChipRecipe.media.size}px`,\n \"--hjm-activity-chip-pressed-opacity\": String(activityChipRecipe.root.pressedOpacity),\n} as CSSProperties;\n\nexport const ActivityChip = forwardRef<HTMLButtonElement, ActivityChipProps>(function ActivityChip(\n { label, accessibilityLabel, emphasis, expanded, media, layoutStyle, className, ...props },\n ref,\n) {\n const resolved = resolveActivityChipDescriptor({\n label,\n ...(accessibilityLabel === undefined ? {} : { accessibilityLabel }),\n ...(emphasis === undefined ? {} : { emphasis }),\n ...(expanded === undefined ? {} : { expanded }),\n });\n const hasMedia = media !== undefined && media !== null;\n return (\n <button\n {...props}\n ref={ref}\n type=\"button\"\n className={classNames(\"hjm-activity-chip\", className)}\n data-emphasis={resolved.emphasis}\n data-media={hasMedia ? \"true\" : undefined}\n aria-expanded={resolved.expanded}\n // Only name the button separately when the spoken status differs from the visible one.\n aria-label={accessibilityLabel === undefined ? undefined : resolved.accessibilityLabel}\n style={{ ...recipeStyle, ...layoutStyle }}\n >\n {!hasMedia ? null : (\n <span className=\"hjm-activity-chip__media\" aria-hidden=\"true\">{media}</span>\n )}\n <span className=\"hjm-activity-chip__label\">{resolved.label}</span>\n </button>\n );\n});\n"]}
@@ -2,7 +2,7 @@ import { type AvatarFallbackContext } from "@hjmds/design-contracts/avatar-fallb
2
2
  import { type DescriptionItemDescriptor, type DescriptionListColumns } from "@hjmds/design-contracts/components/description-list";
3
3
  import { type ComposeTimelineAccessibleName, type TimelineItemDescriptor } from "@hjmds/design-contracts/components/timeline";
4
4
  import { type ResolvedStatisticDescriptor, type StatisticDescriptor, type StatisticGroupDescriptor } from "@hjmds/design-contracts/components/statistic";
5
- import { dividerRecipe, listRecipe, type AccordionDensity, type AvatarShape, type AvatarSize, type StatisticDensity, type StatisticPresentation } from "@hjmds/design-contracts/recipes";
5
+ import { dividerRecipe, listRecipe, type DividerLineStyle, type AccordionDensity, type AvatarFrame, type AvatarShape, type AvatarSize, type CornerAccessoryPlacement, type StatisticDensity, type StatisticPresentation } from "@hjmds/design-contracts/recipes";
6
6
  import { type HTMLAttributes, type ImgHTMLAttributes, type ReactElement, type ReactNode, type RefAttributes, type TableHTMLAttributes } from "react";
7
7
  import type { HjmCompositionStyleProp } from "./composition-style.js";
8
8
  export type AccordionItem = Readonly<{
@@ -47,30 +47,50 @@ export declare const Accordion: import("react").ForwardRefExoticComponent<Omit<H
47
47
  /** Canonical layout-only placement on the root element. Controlled visual keys are excluded. */
48
48
  layoutStyle?: HjmCompositionStyleProp;
49
49
  }> & RefAttributes<HTMLDivElement>>;
50
- export type AvatarProps = Omit<HTMLAttributes<HTMLSpanElement>, "children"> & Readonly<{
50
+ /** Props handed to a product image host (`next/image`, a cache-aware loader) that replaces Avatar's `<img>`. */
51
+ export type AvatarImageRenderProps = Readonly<{
52
+ src: string;
53
+ /** `""` for a decorative avatar or `alt=""`; otherwise the avatar's accessible name. */
54
+ alt: string;
55
+ /** Diameter in px from the size step. */
56
+ size: number;
57
+ /** Avatar's image class (fill + cover); keep it so the frame's clipping and fit still apply. */
58
+ className: string;
59
+ /** Report a failure for this `src` generation; callbacks from a replaced `src` are ignored. */
60
+ onError: () => void;
61
+ }>;
62
+ /**
63
+ * Accessibility identity. A meaningful avatar is named by `name` (or `alt`); a decorative one — next to a visible
64
+ * author name, or ornament without a person — is hidden from assistive tech and may omit `name` (2026-10-23:
65
+ * Burntok's decorative avatars had no name to pass).
66
+ */
67
+ type AvatarIdentity = Readonly<{
68
+ decorative?: false;
51
69
  name: string;
52
- src?: string;
53
70
  alt?: string;
54
- fallback?: ReactNode;
55
- renderFallback?: (context: AvatarFallbackContext) => ReactNode;
56
- size?: AvatarSize;
57
- shape?: AvatarShape;
58
- imageProps?: Omit<ImgHTMLAttributes<HTMLImageElement>, "alt" | "src">;
59
- /** Canonical layout-only placement on the root element. Controlled visual keys are excluded. */
60
- layoutStyle?: HjmCompositionStyleProp;
71
+ }> | Readonly<{
72
+ decorative: true;
73
+ name?: string;
74
+ alt?: never;
61
75
  }>;
62
- export declare const Avatar: import("react").ForwardRefExoticComponent<Omit<HTMLAttributes<HTMLSpanElement>, "children"> & Readonly<{
63
- name: string;
76
+ export type AvatarProps = Omit<HTMLAttributes<HTMLSpanElement>, "children"> & AvatarIdentity & Readonly<{
64
77
  src?: string;
65
- alt?: string;
66
78
  fallback?: ReactNode;
67
79
  renderFallback?: (context: AvatarFallbackContext) => ReactNode;
80
+ /** Product image host in place of the built-in `<img>`. Exclusive with `imageProps`. */
81
+ renderImage?: (props: AvatarImageRenderProps) => ReactNode;
68
82
  size?: AvatarSize;
69
83
  shape?: AvatarShape;
84
+ /** Border/background treatment from avatarRecipe.frames; `none` when product artwork fills the frame. */
85
+ frame?: AvatarFrame;
86
+ /** A small mark (team badge, status dot) on a corner of the avatar's box. It is not clipped by the frame. */
87
+ accessory?: ReactNode;
88
+ accessoryPlacement?: CornerAccessoryPlacement;
70
89
  imageProps?: Omit<ImgHTMLAttributes<HTMLImageElement>, "alt" | "src">;
71
90
  /** Canonical layout-only placement on the root element. Controlled visual keys are excluded. */
72
91
  layoutStyle?: HjmCompositionStyleProp;
73
- }> & RefAttributes<HTMLSpanElement>>;
92
+ }>;
93
+ export declare const Avatar: import("react").ForwardRefExoticComponent<AvatarProps & RefAttributes<HTMLSpanElement>>;
74
94
  export type AvatarGroupProps = Omit<HTMLAttributes<HTMLSpanElement>, "children"> & Readonly<{
75
95
  /** Required: a pile of faces is meaningless to a screen reader otherwise. */
76
96
  label: string;
@@ -101,6 +121,8 @@ export type DividerInset = keyof typeof dividerRecipe.insets;
101
121
  export type DividerProps = HTMLAttributes<HTMLElement> & Readonly<{
102
122
  orientation?: DividerOrientation;
103
123
  inset?: DividerInset;
124
+ /** `dashed`: a break inside one surface rather than a new section; dash/gap from dividerRecipe.lineStyles. */
125
+ lineStyle?: DividerLineStyle;
104
126
  decorative?: boolean;
105
127
  /** Canonical layout-only placement on the root element. Controlled visual keys are excluded. */
106
128
  layoutStyle?: HjmCompositionStyleProp;
@@ -108,6 +130,8 @@ export type DividerProps = HTMLAttributes<HTMLElement> & Readonly<{
108
130
  export declare const Divider: import("react").ForwardRefExoticComponent<HTMLAttributes<HTMLElement> & Readonly<{
109
131
  orientation?: DividerOrientation;
110
132
  inset?: DividerInset;
133
+ /** `dashed`: a break inside one surface rather than a new section; dash/gap from dividerRecipe.lineStyles. */
134
+ lineStyle?: DividerLineStyle;
111
135
  decorative?: boolean;
112
136
  /** Canonical layout-only placement on the root element. Controlled visual keys are excluded. */
113
137
  layoutStyle?: HjmCompositionStyleProp;
@@ -216,9 +240,18 @@ export type TimelineProps<Id extends string = string> = Omit<HTMLAttributes<HTML
216
240
  items: readonly TimelineItemDescriptor<Id>[];
217
241
  composeAccessibleName: ComposeTimelineAccessibleName;
218
242
  renderMetadata?: (item: TimelineItemDescriptor<Id>) => ReactNode;
243
+ /** Per-record commands of a passive Timeline. Not allowed together with selection. */
219
244
  renderActions?: (item: TimelineItemDescriptor<Id>) => ReactNode;
245
+ /**
246
+ * Makes the record list a single-select listbox (controlled). `null` = selectable with nothing chosen. Supply
247
+ * together with `onSelectedIdChange`; the list then needs `aria-label` or `aria-labelledby`.
248
+ */
249
+ selectedId?: Id | null;
250
+ /** Called with the record chosen by click, Enter/Space or ArrowUp/ArrowDown/Home/End (selection follows focus). */
251
+ onSelectedIdChange?: (id: Id) => void;
220
252
  /** Canonical layout-only placement on the root element. Controlled visual keys are excluded. */
221
253
  layoutStyle?: HjmCompositionStyleProp;
222
254
  }>;
223
255
  export declare const Timeline: <Id extends string = string>(props: TimelineProps<Id> & RefAttributes<HTMLOListElement>) => ReactElement;
256
+ export {};
224
257
  //# sourceMappingURL=advanced-display.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"advanced-display.d.ts","sourceRoot":"","sources":["../src/advanced-display.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"advanced-display.d.ts","sourceRoot":"","sources":["../src/advanced-display.tsx"],"names":[],"mappings":"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"}