@hjmds/react 1.18.0 → 1.19.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 (188) hide show
  1. package/dist/advanced-display.d.ts.map +1 -1
  2. package/dist/advanced-display.js +41 -9
  3. package/dist/advanced-display.js.map +1 -1
  4. package/dist/advanced-forms.d.ts.map +1 -1
  5. package/dist/advanced-forms.js +22 -9
  6. package/dist/advanced-forms.js.map +1 -1
  7. package/dist/agreement.d.ts.map +1 -1
  8. package/dist/agreement.js +17 -11
  9. package/dist/agreement.js.map +1 -1
  10. package/dist/auth-screen.d.ts.map +1 -1
  11. package/dist/auth-screen.js +15 -2
  12. package/dist/auth-screen.js.map +1 -1
  13. package/dist/avatar-blobatar-motion.d.ts.map +1 -1
  14. package/dist/avatar-blobatar-motion.js +10 -2
  15. package/dist/avatar-blobatar-motion.js.map +1 -1
  16. package/dist/bottom-navigation.d.ts.map +1 -1
  17. package/dist/bottom-navigation.js +1 -1
  18. package/dist/bottom-navigation.js.map +1 -1
  19. package/dist/calendar.d.ts.map +1 -1
  20. package/dist/calendar.js +10 -2
  21. package/dist/calendar.js.map +1 -1
  22. package/dist/carousel-motion.d.ts +1 -0
  23. package/dist/carousel-motion.d.ts.map +1 -1
  24. package/dist/carousel-motion.js +4 -3
  25. package/dist/carousel-motion.js.map +1 -1
  26. package/dist/carousel.d.ts.map +1 -1
  27. package/dist/carousel.js +22 -4
  28. package/dist/carousel.js.map +1 -1
  29. package/dist/collapsible.d.ts.map +1 -1
  30. package/dist/collapsible.js +28 -4
  31. package/dist/collapsible.js.map +1 -1
  32. package/dist/collection-rail.d.ts.map +1 -1
  33. package/dist/collection-rail.js +19 -1
  34. package/dist/collection-rail.js.map +1 -1
  35. package/dist/color-picker.d.ts.map +1 -1
  36. package/dist/color-picker.js +12 -4
  37. package/dist/color-picker.js.map +1 -1
  38. package/dist/command-palette.d.ts.map +1 -1
  39. package/dist/command-palette.js +14 -2
  40. package/dist/command-palette.js.map +1 -1
  41. package/dist/context-menu.d.ts.map +1 -1
  42. package/dist/context-menu.js +31 -10
  43. package/dist/context-menu.js.map +1 -1
  44. package/dist/date-entry.d.ts +1 -1
  45. package/dist/date-entry.d.ts.map +1 -1
  46. package/dist/date-entry.js +20 -7
  47. package/dist/date-entry.js.map +1 -1
  48. package/dist/date-picker.d.ts.map +1 -1
  49. package/dist/date-picker.js +22 -6
  50. package/dist/date-picker.js.map +1 -1
  51. package/dist/display.d.ts +5 -1
  52. package/dist/display.d.ts.map +1 -1
  53. package/dist/display.js +3 -2
  54. package/dist/display.js.map +1 -1
  55. package/dist/duration-field.d.ts +2 -2
  56. package/dist/duration-field.d.ts.map +1 -1
  57. package/dist/duration-field.js +11 -3
  58. package/dist/duration-field.js.map +1 -1
  59. package/dist/evidence.d.ts +1 -1
  60. package/dist/evidence.js +1 -1
  61. package/dist/evidence.js.map +1 -1
  62. package/dist/feedback.d.ts.map +1 -1
  63. package/dist/feedback.js +3 -2
  64. package/dist/feedback.js.map +1 -1
  65. package/dist/field-group.d.ts +4 -2
  66. package/dist/field-group.d.ts.map +1 -1
  67. package/dist/field-group.js +4 -3
  68. package/dist/field-group.js.map +1 -1
  69. package/dist/file-picker.d.ts.map +1 -1
  70. package/dist/file-picker.js +15 -5
  71. package/dist/file-picker.js.map +1 -1
  72. package/dist/forms.d.ts +2 -2
  73. package/dist/forms.js +1 -1
  74. package/dist/forms.js.map +1 -1
  75. package/dist/gravity-letters.d.ts.map +1 -1
  76. package/dist/gravity-letters.js +9 -1
  77. package/dist/gravity-letters.js.map +1 -1
  78. package/dist/grid-reveal.d.ts.map +1 -1
  79. package/dist/grid-reveal.js +9 -1
  80. package/dist/grid-reveal.js.map +1 -1
  81. package/dist/index.d.ts +1 -0
  82. package/dist/index.d.ts.map +1 -1
  83. package/dist/index.js +1 -0
  84. package/dist/index.js.map +1 -1
  85. package/dist/inline-confirm.d.ts.map +1 -1
  86. package/dist/inline-confirm.js +25 -4
  87. package/dist/inline-confirm.js.map +1 -1
  88. package/dist/internal/document-resource.d.ts.map +1 -1
  89. package/dist/internal/document-resource.js +2 -2
  90. package/dist/internal/document-resource.js.map +1 -1
  91. package/dist/masonry.d.ts.map +1 -1
  92. package/dist/masonry.js +2 -1
  93. package/dist/masonry.js.map +1 -1
  94. package/dist/mentions.d.ts.map +1 -1
  95. package/dist/mentions.js +12 -4
  96. package/dist/mentions.js.map +1 -1
  97. package/dist/menu-morph.js +1 -1
  98. package/dist/menu-morph.js.map +1 -1
  99. package/dist/menubar.d.ts.map +1 -1
  100. package/dist/menubar.js +43 -19
  101. package/dist/menubar.js.map +1 -1
  102. package/dist/modal.d.ts.map +1 -1
  103. package/dist/modal.js +15 -4
  104. package/dist/modal.js.map +1 -1
  105. package/dist/navigation.d.ts.map +1 -1
  106. package/dist/navigation.js +8 -2
  107. package/dist/navigation.js.map +1 -1
  108. package/dist/number-field.d.ts.map +1 -1
  109. package/dist/number-field.js +3 -1
  110. package/dist/number-field.js.map +1 -1
  111. package/dist/overlay-stack.d.ts.map +1 -1
  112. package/dist/overlay-stack.js +23 -6
  113. package/dist/overlay-stack.js.map +1 -1
  114. package/dist/overlays.d.ts.map +1 -1
  115. package/dist/overlays.js +8 -0
  116. package/dist/overlays.js.map +1 -1
  117. package/dist/pagination.d.ts.map +1 -1
  118. package/dist/pagination.js +16 -4
  119. package/dist/pagination.js.map +1 -1
  120. package/dist/saved-items.d.ts.map +1 -1
  121. package/dist/saved-items.js +6 -1
  122. package/dist/saved-items.js.map +1 -1
  123. package/dist/screen-flows.d.ts +1 -2
  124. package/dist/screen-flows.d.ts.map +1 -1
  125. package/dist/screen-flows.js +120 -16
  126. package/dist/screen-flows.js.map +1 -1
  127. package/dist/screens.d.ts.map +1 -1
  128. package/dist/screens.js +32 -7
  129. package/dist/screens.js.map +1 -1
  130. package/dist/select.d.ts.map +1 -1
  131. package/dist/select.js +6 -1
  132. package/dist/select.js.map +1 -1
  133. package/dist/side-panel.d.ts.map +1 -1
  134. package/dist/side-panel.js +11 -2
  135. package/dist/side-panel.js.map +1 -1
  136. package/dist/sidebar.d.ts.map +1 -1
  137. package/dist/sidebar.js +8 -1
  138. package/dist/sidebar.js.map +1 -1
  139. package/dist/skip-nav.d.ts.map +1 -1
  140. package/dist/skip-nav.js +16 -3
  141. package/dist/skip-nav.js.map +1 -1
  142. package/dist/sortable.d.ts.map +1 -1
  143. package/dist/sortable.js +2 -1
  144. package/dist/sortable.js.map +1 -1
  145. package/dist/splitter.d.ts.map +1 -1
  146. package/dist/splitter.js +23 -11
  147. package/dist/splitter.js.map +1 -1
  148. package/dist/statistic-motion.d.ts.map +1 -1
  149. package/dist/statistic-motion.js +30 -2
  150. package/dist/statistic-motion.js.map +1 -1
  151. package/dist/status-text.d.ts +11 -0
  152. package/dist/status-text.d.ts.map +1 -0
  153. package/dist/status-text.js +7 -0
  154. package/dist/status-text.js.map +1 -0
  155. package/dist/styles.css +14 -4
  156. package/dist/styles.layered.css +14 -4
  157. package/dist/supplemental-display.d.ts.map +1 -1
  158. package/dist/supplemental-display.js +19 -8
  159. package/dist/supplemental-display.js.map +1 -1
  160. package/dist/supplemental-navigation.d.ts.map +1 -1
  161. package/dist/supplemental-navigation.js +10 -1
  162. package/dist/supplemental-navigation.js.map +1 -1
  163. package/dist/tags-input.d.ts.map +1 -1
  164. package/dist/tags-input.js +18 -8
  165. package/dist/tags-input.js.map +1 -1
  166. package/dist/theme.d.ts.map +1 -1
  167. package/dist/theme.js +1 -0
  168. package/dist/theme.js.map +1 -1
  169. package/dist/toast.d.ts.map +1 -1
  170. package/dist/toast.js +31 -16
  171. package/dist/toast.js.map +1 -1
  172. package/dist/toggle-group.d.ts.map +1 -1
  173. package/dist/toggle-group.js +6 -1
  174. package/dist/toggle-group.js.map +1 -1
  175. package/dist/tour.d.ts.map +1 -1
  176. package/dist/tour.js +15 -2
  177. package/dist/tour.js.map +1 -1
  178. package/dist/transfer-list.d.ts +1 -1
  179. package/dist/transfer-list.d.ts.map +1 -1
  180. package/dist/transfer-list.js +52 -7
  181. package/dist/transfer-list.js.map +1 -1
  182. package/dist/tree.d.ts.map +1 -1
  183. package/dist/tree.js +41 -8
  184. package/dist/tree.js.map +1 -1
  185. package/dist/virtual-list.d.ts.map +1 -1
  186. package/dist/virtual-list.js +44 -7
  187. package/dist/virtual-list.js.map +1 -1
  188. package/package.json +8 -3
@@ -1 +1 @@
1
- {"version":3,"file":"advanced-display.d.ts","sourceRoot":"","sources":["../src/advanced-display.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,qBAAqB,EAAE,MAAM,yCAAyC,CAAC;AAG5G,OAAO,EAGL,KAAK,yBAAyB,EAC9B,KAAK,sBAAsB,EAC5B,MAAM,qDAAqD,CAAC;AAC7D,OAAO,EAEL,KAAK,6BAA6B,EAClC,KAAK,sBAAsB,EAC5B,MAAM,6CAA6C,CAAC;AACrD,OAAO,EAGL,KAAK,2BAA2B,EAChC,KAAK,mBAAmB,EACxB,KAAK,wBAAwB,EAC9B,MAAM,8CAA8C,CAAC;AACtD,OAAO,EAGL,aAAa,EACb,UAAU,EAEV,KAAK,gBAAgB,EACrB,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,gBAAgB,EACrB,KAAK,qBAAqB,EAC3B,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAWL,KAAK,cAAc,EACnB,KAAK,iBAAiB,EAEtB,KAAK,YAAY,EACjB,KAAK,SAAS,EACd,KAAK,aAAa,EAClB,KAAK,mBAAmB,EACzB,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAItE,MAAM,MAAM,aAAa,GAAG,QAAQ,CAAC;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,SAAS,CAAC;IACjB,KAAK,EAAE,SAAS,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,UAAU,CAAC,GAC3E,QAAQ,CAAC;IACP,KAAK,EAAE,SAAS,aAAa,EAAE,CAAC;IAChC,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1B,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,KAAK,IAAI,CAAC;IACnD,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,OAAO,CAAC,EAAE,gBAAgB,CAAC;IAC3B,YAAY,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACjC,gGAAgG;IAChG,WAAW,CAAC,EAAE,uBAAuB,CAAC;CACvC,CAAC,CAAC;AAiCL,eAAO,MAAM,SAAS;WA1CX,SAAS,aAAa,EAAE;YACvB,SAAS,MAAM,EAAE;mBACV,SAAS,MAAM,EAAE;oBAChB,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,KAAK,IAAI;6BACzB,OAAO;cACtB,gBAAgB;mBACX,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;IAChC,gGAAgG;kBAClF,uBAAuB;mCA4IxC,CAAC;AAGF,MAAM,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,EAAE,UAAU,CAAC,GACzE,QAAQ,CAAC;IACP,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,qBAAqB,KAAK,SAAS,CAAC;IAC/D,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,UAAU,CAAC,EAAE,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,CAAC;IACtE,gGAAgG;IAChG,WAAW,CAAC,EAAE,uBAAuB,CAAC;CACvC,CAAC,CAAC;AAEL,eAAO,MAAM,MAAM;UAZT,MAAM;UACN,MAAM;UACN,MAAM;eACD,SAAS;qBACH,CAAC,OAAO,EAAE,qBAAqB,KAAK,SAAS;WACvD,UAAU;YACT,WAAW;iBACN,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC;IACrE,gGAAgG;kBAClF,uBAAuB;oCAwDvC,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,EAAE,UAAU,CAAC,GAC9E,QAAQ,CAAC;IACP,6EAA6E;IAC7E,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,SAAS,CAAC;IACpB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,+EAA+E;IAC/E,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,gGAAgG;IAChG,WAAW,CAAC,EAAE,uBAAuB,CAAC;CACvC,CAAC,CAAC;AAEL;;;;GAIG;AACH,eAAO,MAAM,WAAW;IAfpB,6EAA6E;WACtE,MAAM;cACH,SAAS;WACZ,UAAU;IACjB,+EAA+E;eACpE,SAAS;IACpB,gGAAgG;kBAClF,uBAAuB;oCA8BvC,CAAC;AAEH,MAAM,MAAM,kBAAkB,GAAG,YAAY,GAAG,UAAU,CAAC;AAC3D,MAAM,MAAM,YAAY,GAAG,MAAM,OAAO,aAAa,CAAC,MAAM,CAAC;AAE7D,MAAM,MAAM,YAAY,GAAG,cAAc,CAAC,WAAW,CAAC,GACpD,QAAQ,CAAC;IACP,WAAW,CAAC,EAAE,kBAAkB,CAAC;IACjC,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,gGAAgG;IAChG,WAAW,CAAC,EAAE,uBAAuB,CAAC;CACvC,CAAC,CAAC;AAEL,eAAO,MAAM,OAAO;kBAPF,kBAAkB;YACxB,YAAY;iBACP,OAAO;IACpB,gGAAgG;kBAClF,uBAAuB;gCAyBvC,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,OAAO,CAAC;AAEjD,MAAM,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,UAAU,CAAC,GACtE,QAAQ,CAAC;IACP,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,SAAS,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,OAAO,UAAU,CAAC,UAAU,CAAC;IAC/C,UAAU,CAAC,EAAE,cAAc,CAAC;IAC5B,gGAAgG;IAChG,WAAW,CAAC,EAAE,uBAAuB,CAAC;CACvC,CAAC,CAAC;AAEL,yEAAyE;AACzE,eAAO,MAAM,IAAI;WATN,MAAM;cACH,SAAS;gBACP,MAAM,OAAO,UAAU,CAAC,UAAU;iBACjC,cAAc;IAC3B,gGAAgG;kBAClF,uBAAuB;mCAwCvC,CAAC;AAEH,MAAM,MAAM,6BAA6B,GAAG,QAAQ,CAAC;IACnD,IAAI,EAAE,SAAS,GAAG,WAAW,GAAG,WAAW,CAAC;IAC5C,KAAK,EAAE,cAAc,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC,CAAC;AAEH,MAAM,MAAM,kCAAkC,CAAC,EAAE,SAAS,MAAM,GAAG,MAAM,IAAI,CAC3E,KAAK,EAAE,QAAQ,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,2BAA2B,CAAC,EAAE,CAAC,CAAC;IAC5C,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC,KACC,MAAM,CAAC;AAEZ,MAAM,MAAM,cAAc,CAAC,EAAE,SAAS,MAAM,GAAG,MAAM,IAAI,IAAI,CAC3D,cAAc,CAAC,WAAW,CAAC,EAC3B,UAAU,CACX,GAAG,QAAQ,CAAC;IACX,UAAU,EAAE,mBAAmB,CAAC,EAAE,CAAC,CAAC;IACpC,OAAO,CAAC,EAAE,gBAAgB,CAAC;IAC3B,YAAY,CAAC,EAAE,qBAAqB,CAAC;IACrC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,yBAAyB,CAAC,EAAE,kCAAkC,CAAC,EAAE,CAAC,CAAC;IACnE,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,6BAA6B,KAAK,SAAS,CAAC;IACtE,mFAAmF;IACnF,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,SAAS,CAAC;IAC3C,gGAAgG;IAChG,WAAW,CAAC,EAAE,uBAAuB,CAAC;CACvC,CAAC,CAAC;AAEH,wBAAgB,SAAS,CAAC,EAAE,SAAS,MAAM,GAAG,MAAM,EAAE,EACpD,UAAU,EACV,OAAuB,EACvB,YAAsB,EACtB,YAAY,EACZ,kBAAkB,EAClB,yBAAyB,EACzB,eAAe,EACf,WAAW,EACX,SAAS,EACT,WAAW,EACX,GAAG,KAAK,EACT,EAAE,cAAc,CAAC,EAAE,CAAC,+BA0CpB;AAED,MAAM,MAAM,mBAAmB,CAAC,EAAE,SAAS,MAAM,GAAG,MAAM,IAAI,IAAI,CAChE,cAAc,CAAC,cAAc,CAAC,EAC9B,UAAU,CACX,GAAG,QAAQ,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,wBAAwB,CAAC,EAAE,CAAC,CAAC;IACzC,OAAO,CAAC,EAAE,gBAAgB,CAAC;IAC3B,YAAY,CAAC,EAAE,qBAAqB,CAAC;IACrC,yBAAyB,CAAC,EAAE,kCAAkC,CAAC,EAAE,CAAC,CAAC;IACnE,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,6BAA6B,KAAK,SAAS,CAAC;IACtE,gGAAgG;IAChG,WAAW,CAAC,EAAE,uBAAuB,CAAC;CACvC,CAAC,CAAC;AAEH,wBAAgB,cAAc,CAAC,EAAE,SAAS,MAAM,GAAG,MAAM,EAAE,EACzD,KAAK,EACL,UAAU,EACV,OAAO,EACP,YAAY,EACZ,yBAAyB,EACzB,eAAe,EACf,SAAS,EACT,KAAK,EACL,WAAW,EACX,GAAG,KAAK,EACT,EAAE,mBAAmB,CAAC,EAAE,CAAC,+BAyBzB;AAED,MAAM,MAAM,oBAAoB,CAAC,EAAE,SAAS,MAAM,GAAG,MAAM,IAAI,IAAI,CACjE,cAAc,CAAC,gBAAgB,CAAC,EAChC,UAAU,CACX,GACC,QAAQ,CAAC;IACP,KAAK,EAAE,SAAS,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC;IAChD,OAAO,CAAC,EAAE,sBAAsB,CAAC;IACjC,4EAA4E;IAC5E,WAAW,CAAC,EAAE,uBAAuB,CAAC;CACvC,CAAC,CAAC;AAyCL,eAAO,MAAM,eAAe,EAAuC,CAAC,EAAE,SAAS,MAAM,GAAG,MAAM,EAC5F,KAAK,EAAE,oBAAoB,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,gBAAgB,CAAC,KAC9D,YAAY,CAAC;AAElB,MAAM,MAAM,kBAAkB,GAAG,WAAW,GAAG,YAAY,CAAC;AAE5D,MAAM,MAAM,WAAW,CAAC,GAAG,IAAI,QAAQ,CAAC;IACtC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,SAAS,CAAC;IAClB,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,KAAK,SAAS,CAAC;IAChD,KAAK,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAC;IACnC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,aAAa,CAAC,EAAE,kBAAkB,CAAC;CACpC,CAAC,CAAC;AAEH,MAAM,MAAM,UAAU,CAAC,GAAG,IAAI,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,EAAE,UAAU,CAAC,GACnF,QAAQ,CAAC;IACP,OAAO,EAAE,SAAS,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;IACrC,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC;IACrB,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC;IAClD,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,qDAAqD;IACrD,UAAU,EAAE,SAAS,CAAC;IACtB,YAAY,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,kBAAkB,KAAK,IAAI,CAAC;IACzE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gGAAgG;IAChG,WAAW,CAAC,EAAE,uBAAuB,CAAC;CACvC,CAAC,CAAC;AA+FL,eAAO,MAAM,KAAK,EAA6B,CAAC,GAAG,EACjD,KAAK,EAAE,UAAU,CAAC,GAAG,CAAC,GAAG,aAAa,CAAC,gBAAgB,CAAC,KACrD,YAAY,CAAC;AAElB,MAAM,MAAM,aAAa,CAAC,EAAE,SAAS,MAAM,GAAG,MAAM,IAAI,IAAI,CAC1D,cAAc,CAAC,gBAAgB,CAAC,EAChC,UAAU,CACX,GACC,QAAQ,CAAC;IACP,KAAK,EAAE,SAAS,sBAAsB,CAAC,EAAE,CAAC,EAAE,CAAC;IAC7C,qBAAqB,EAAE,6BAA6B,CAAC;IACrD,gGAAgG;IAChG,WAAW,CAAC,EAAE,uBAAuB,CAAC;CACvC,CAAC,CAAC;AAqDL,eAAO,MAAM,QAAQ,EAAgC,CAAC,EAAE,SAAS,MAAM,GAAG,MAAM,EAC9E,KAAK,EAAE,aAAa,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,gBAAgB,CAAC,KACvD,YAAY,CAAC"}
1
+ {"version":3,"file":"advanced-display.d.ts","sourceRoot":"","sources":["../src/advanced-display.tsx"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { createElement as _createElement } from "react";
1
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
3
  import { resolveAvatarInitials } from "@hjmds/design-contracts/avatar-fallback";
3
4
  import { TableSortButton } from "./table-sort-button.js";
@@ -6,8 +7,8 @@ import { resolveDescriptionListColumnCount, resolveDescriptionListDescriptor, }
6
7
  import { resolveTimelineDescriptor, } from "@hjmds/design-contracts/components/timeline";
7
8
  import { resolveStatisticDescriptor, validateStatisticGroup, } from "@hjmds/design-contracts/components/statistic";
8
9
  import { accordionRecipe, avatarRecipe, dividerRecipe, listRecipe, statisticRecipe, } from "@hjmds/design-contracts/recipes";
9
- import { Children, createElement, forwardRef, isValidElement, useEffect, useId, useRef, useState, } from "react";
10
- import { classNames, useControllableState, useElementWidth } from "./internal.js";
10
+ import { Children, createElement, forwardRef, isValidElement, useId, useLayoutEffect, useMemo, useRef, useState, } from "react";
11
+ import { assignRef, classNames, useControllableState, useElementWidth } from "./internal.js";
11
12
  import { useOptionalHjmTheme } from "./provider.js";
12
13
  function validateAccordionItems(items) {
13
14
  if (items.length === 0)
@@ -43,12 +44,20 @@ function accordionFocusTarget(items, currentIndex, key) {
43
44
  }
44
45
  export const Accordion = forwardRef(function Accordion({ items, value: valueProp, defaultValue = [], onValueChange, allowsMultipleExpanded = accordionRecipe.defaults.allowsMultipleExpanded, density = accordionRecipe.defaults.density, headingLevel = 3, className, layoutStyle, ...props }, ref) {
45
46
  validateAccordionItems(items);
46
- const [value, setValue] = useControllableState({
47
+ const [storedValue, setValue] = useControllableState({
47
48
  ...(valueProp === undefined ? {} : { value: valueProp }),
48
49
  defaultValue,
49
50
  ...(onValueChange === undefined ? {} : { onChange: onValueChange }),
50
51
  });
51
52
  const validIds = new Set(items.map((item) => item.id));
53
+ const committed = useRef(false);
54
+ const value = valueProp === undefined && committed.current ? storedValue.filter(id => validIds.has(id)) : storedValue;
55
+ useLayoutEffect(() => {
56
+ committed.current = true;
57
+ // Removed uncontrolled disclosures retire their expansion; reinsertion starts closed.
58
+ if (value.length !== storedValue.length)
59
+ setValue(value);
60
+ }, [value, storedValue, setValue]);
52
61
  const valueIds = new Set();
53
62
  for (const id of value) {
54
63
  if (!validIds.has(id))
@@ -62,6 +71,23 @@ export const Accordion = forwardRef(function Accordion({ items, value: valueProp
62
71
  }
63
72
  const baseId = useId().replaceAll(":", "");
64
73
  const triggerRefs = useRef(new Map());
74
+ const host = useRef(null);
75
+ const focused = useRef(null);
76
+ useLayoutEffect(() => {
77
+ const previous = focused.current;
78
+ if (!previous)
79
+ return;
80
+ const index = items.findIndex(item => item.id === previous.id);
81
+ const removed = index < 0;
82
+ const disabledTrigger = index >= 0 && items[index].disabled && triggerRefs.current.get(previous.id) === previous.node;
83
+ if (!(removed || disabledTrigger) || (document.activeElement !== previous.node && document.activeElement !== document.body))
84
+ return;
85
+ // Restore only the removed/disabled target, never steal a user's external focus.
86
+ const origin = removed ? Math.min(previous.index, items.length - 1) : index + 1;
87
+ const target = Array.from({ length: items.length }, (_, offset) => items[(origin + offset) % items.length]).find(item => !item.disabled);
88
+ focused.current = null;
89
+ (target ? triggerRefs.current.get(target.id) : host.current)?.focus();
90
+ }, [items]);
65
91
  const toggle = (id) => {
66
92
  const expanded = value.includes(id);
67
93
  setValue(expanded
@@ -70,7 +96,7 @@ export const Accordion = forwardRef(function Accordion({ items, value: valueProp
70
96
  ? [...value, id]
71
97
  : [id]);
72
98
  };
73
- return (_jsx("div", { ...props, style: { ...props.style, ...layoutStyle }, ref: ref, className: classNames("hjm-accordion", className), "data-density": density, "data-multiple": allowsMultipleExpanded || undefined, children: items.map((item, index) => {
99
+ return (_jsx("div", { ...props, style: { ...props.style, ...layoutStyle }, ref: node => { host.current = node; assignRef(ref, node); }, tabIndex: -1, className: classNames("hjm-accordion", className), "data-density": density, "data-multiple": allowsMultipleExpanded || undefined, children: items.map((item, index) => {
74
100
  const expanded = value.includes(item.id);
75
101
  const triggerId = `${baseId}-accordion-trigger-${index}`;
76
102
  const panelId = `${baseId}-accordion-panel-${index}`;
@@ -86,17 +112,23 @@ export const Accordion = forwardRef(function Accordion({ items, value: valueProp
86
112
  event.preventDefault();
87
113
  triggerRefs.current.get(items[target].id)?.focus();
88
114
  }, children: [_jsx("span", { className: "hjm-accordion__title", children: item.title }), _jsx("span", { className: "hjm-accordion__indicator", "aria-hidden": "true", children: expanded ? "−" : "+" })] }));
89
- return (_jsxs("div", { className: "hjm-accordion__item", "data-state": item.disabled ? "disabled" : expanded ? "expanded" : "collapsed", children: [createElement(`h${headingLevel}`, { className: "hjm-accordion__header" }, trigger), _jsx("div", { id: panelId, role: "region", className: "hjm-accordion__panel", "aria-labelledby": triggerId, hidden: !expanded, children: item.panel })] }, item.id));
115
+ return (_jsxs("div", { onFocusCapture: event => { if (event.target instanceof HTMLElement)
116
+ focused.current = { id: item.id, index, node: event.target }; }, className: "hjm-accordion__item", "data-state": item.disabled ? "disabled" : expanded ? "expanded" : "collapsed", children: [createElement(`h${headingLevel}`, { className: "hjm-accordion__header" }, trigger), _jsx("div", { id: panelId, role: "region", className: "hjm-accordion__panel", "aria-labelledby": triggerId, hidden: !expanded, children: item.panel })] }, item.id));
90
117
  }) }));
91
118
  });
92
119
  export const Avatar = forwardRef(function Avatar({ name, src, alt = name, fallback, renderFallback, size = avatarRecipe.defaults.size, shape = avatarRecipe.defaults.shape, imageProps, className, layoutStyle, ...props }, ref) {
93
120
  if (name.trim().length === 0)
94
121
  throw new TypeError("Avatar name must not be empty");
95
- const [imageAvailable, setImageAvailable] = useState(Boolean(src));
96
- useEffect(() => setImageAvailable(Boolean(src)), [src]);
122
+ const generation = useMemo(() => ({}), [src]);
123
+ const active = useRef(generation);
124
+ useLayoutEffect(() => { active.current = generation; return () => { active.current = null; }; }, [generation]);
125
+ const [failed, setFailed] = useState(null);
126
+ const imageAvailable = Boolean(src) && failed !== generation;
97
127
  const { onError, className: imageClassName, ...restImageProps } = imageProps ?? {};
98
- return (_jsx("span", { ...props, style: { ...props.style, ...layoutStyle }, ref: ref, className: classNames("hjm-avatar", className), "data-size": size, "data-shape": shape, "data-state": imageAvailable ? "image" : "fallback", children: src && imageAvailable ? (_jsx("img", { ...restImageProps, src: src, alt: alt, className: classNames("hjm-avatar__image", imageClassName), onError: (event) => {
99
- setImageAvailable(false);
128
+ return (_jsx("span", { ...props, style: { ...props.style, ...layoutStyle }, ref: ref, className: classNames("hjm-avatar", className), "data-size": size, "data-shape": shape, "data-state": imageAvailable ? "image" : "fallback", children: src && imageAvailable ? (_createElement("img", { ...restImageProps, key: src, src: src, alt: alt, className: classNames("hjm-avatar__image", imageClassName), onError: (event) => {
129
+ if (active.current !== generation)
130
+ return;
131
+ setFailed(generation);
100
132
  onError?.(event);
101
133
  } })) : (_jsx("span", { className: "hjm-avatar__fallback", role: alt.length > 0 ? "img" : undefined, "aria-label": alt.length > 0 ? alt : undefined, "aria-hidden": alt.length === 0 || undefined, children: renderFallback?.({ size: avatarRecipe.sizes[size], decorative: true }) ?? fallback ?? resolveAvatarInitials(name) })) }));
102
134
  });
@@ -1 +1 @@
1
- {"version":3,"file":"advanced-display.js","sourceRoot":"","sources":["../src/advanced-display.tsx"],"names":[],"mappings":"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","sourcesContent":["import { resolveAvatarInitials, type AvatarFallbackContext } from \"@hjmds/design-contracts/avatar-fallback\";\nimport { TableSortButton } from \"./table-sort-button.js\";\nimport { getNextDataTableSortState } from \"@hjmds/design-contracts/components/data-table\";\nimport {\n resolveDescriptionListColumnCount,\n resolveDescriptionListDescriptor,\n type DescriptionItemDescriptor,\n type DescriptionListColumns,\n} from \"@hjmds/design-contracts/components/description-list\";\nimport {\n resolveTimelineDescriptor,\n type ComposeTimelineAccessibleName,\n type TimelineItemDescriptor,\n} from \"@hjmds/design-contracts/components/timeline\";\nimport {\n resolveStatisticDescriptor,\n validateStatisticGroup,\n type ResolvedStatisticDescriptor,\n type StatisticDescriptor,\n type StatisticGroupDescriptor,\n} from \"@hjmds/design-contracts/components/statistic\";\nimport {\n accordionRecipe,\n avatarRecipe,\n dividerRecipe,\n listRecipe,\n statisticRecipe,\n type AccordionDensity,\n type AvatarShape,\n type AvatarSize,\n type StatisticDensity,\n type StatisticPresentation,\n} from \"@hjmds/design-contracts/recipes\";\nimport {\n Children,\n createElement,\n forwardRef,\n isValidElement,\n useEffect,\n useId,\n useRef,\n useState,\n type CSSProperties,\n type ForwardedRef,\n type HTMLAttributes,\n type ImgHTMLAttributes,\n type KeyboardEvent,\n type ReactElement,\n type ReactNode,\n type RefAttributes,\n type TableHTMLAttributes,\n} from \"react\";\nimport type { HjmCompositionStyleProp } from \"./composition-style.js\";\nimport { classNames, useControllableState, useElementWidth } from \"./internal.js\";\nimport { useOptionalHjmTheme } from \"./provider.js\";\n\nexport type AccordionItem = Readonly<{\n id: string;\n title: ReactNode;\n panel: ReactNode;\n disabled?: boolean;\n}>;\n\nexport type AccordionProps = Omit<HTMLAttributes<HTMLDivElement>, \"onChange\"> &\n Readonly<{\n items: readonly AccordionItem[];\n value?: readonly string[];\n defaultValue?: readonly string[];\n onValueChange?: (value: readonly string[]) => void;\n allowsMultipleExpanded?: boolean;\n density?: AccordionDensity;\n headingLevel?: 2 | 3 | 4 | 5 | 6;\n /** Canonical layout-only placement on the root element. Controlled visual keys are excluded. */\n layoutStyle?: HjmCompositionStyleProp;\n }>;\n\nfunction validateAccordionItems(items: readonly AccordionItem[]): void {\n if (items.length === 0) throw new TypeError(\"Accordion requires at least one item\");\n const ids = new Set<string>();\n for (const item of items) {\n if (item.id.trim().length === 0) throw new TypeError(\"Accordion item id must not be empty\");\n if (ids.has(item.id)) throw new TypeError(`Duplicate Accordion item id: ${item.id}`);\n ids.add(item.id);\n }\n}\n\nfunction accordionFocusTarget(\n items: readonly AccordionItem[],\n currentIndex: number,\n key: string,\n): number | undefined {\n if (key === \"Home\") return items.findIndex((item) => !item.disabled);\n if (key === \"End\") {\n for (let index = items.length - 1; index >= 0; index -= 1) {\n if (!items[index]?.disabled) return index;\n }\n return -1;\n }\n const direction = key === \"ArrowDown\" ? 1 : key === \"ArrowUp\" ? -1 : 0;\n if (direction === 0) return undefined;\n for (let offset = 1; offset <= items.length; offset += 1) {\n const index = (currentIndex + direction * offset + items.length) % items.length;\n if (!items[index]?.disabled) return index;\n }\n return currentIndex;\n}\n\nexport const Accordion = forwardRef<HTMLDivElement, AccordionProps>(\n function Accordion(\n {\n items,\n value: valueProp,\n defaultValue = [],\n onValueChange,\n allowsMultipleExpanded = accordionRecipe.defaults.allowsMultipleExpanded,\n density = accordionRecipe.defaults.density,\n headingLevel = 3,\n className,\n layoutStyle,\n ...props\n },\n ref,\n ) {\n validateAccordionItems(items);\n const [value, setValue] = useControllableState<readonly string[]>({\n ...(valueProp === undefined ? {} : { value: valueProp }),\n defaultValue,\n ...(onValueChange === undefined ? {} : { onChange: onValueChange }),\n });\n const validIds = new Set(items.map((item) => item.id));\n const valueIds = new Set<string>();\n for (const id of value) {\n if (!validIds.has(id)) throw new RangeError(`Unknown Accordion value: ${id}`);\n if (valueIds.has(id)) throw new TypeError(`Duplicate Accordion value: ${id}`);\n valueIds.add(id);\n }\n if (!allowsMultipleExpanded && value.length > 1) {\n throw new RangeError(\"Accordion only allows one expanded item\");\n }\n const baseId = useId().replaceAll(\":\", \"\");\n const triggerRefs = useRef(new Map<string, HTMLButtonElement>());\n const toggle = (id: string) => {\n const expanded = value.includes(id);\n setValue(\n expanded\n ? value.filter((candidate) => candidate !== id)\n : allowsMultipleExpanded\n ? [...value, id]\n : [id],\n );\n };\n\n return (\n <div\n {...props}\n style={{ ...props.style, ...layoutStyle }}\n ref={ref}\n className={classNames(\"hjm-accordion\", className)}\n data-density={density}\n data-multiple={allowsMultipleExpanded || undefined}\n >\n {items.map((item, index) => {\n const expanded = value.includes(item.id);\n const triggerId = `${baseId}-accordion-trigger-${index}`;\n const panelId = `${baseId}-accordion-panel-${index}`;\n const trigger = (\n <button\n ref={(node) => {\n if (node) triggerRefs.current.set(item.id, node);\n else triggerRefs.current.delete(item.id);\n }}\n id={triggerId}\n type=\"button\"\n className=\"hjm-accordion__trigger\"\n aria-expanded={expanded}\n aria-controls={panelId}\n disabled={item.disabled}\n onClick={() => toggle(item.id)}\n onKeyDown={(event: KeyboardEvent<HTMLButtonElement>) => {\n const target = accordionFocusTarget(items, index, event.key);\n if (target === undefined || target < 0) return;\n event.preventDefault();\n triggerRefs.current.get(items[target]!.id)?.focus();\n }}\n >\n <span className=\"hjm-accordion__title\">{item.title}</span>\n <span className=\"hjm-accordion__indicator\" aria-hidden=\"true\">\n {expanded ? \"−\" : \"+\"}\n </span>\n </button>\n );\n return (\n <div\n key={item.id}\n className=\"hjm-accordion__item\"\n data-state={item.disabled ? \"disabled\" : expanded ? \"expanded\" : \"collapsed\"}\n >\n {createElement(`h${headingLevel}`, { className: \"hjm-accordion__header\" }, trigger)}\n <div\n id={panelId}\n role=\"region\"\n className=\"hjm-accordion__panel\"\n aria-labelledby={triggerId}\n hidden={!expanded}\n >\n {item.panel}\n </div>\n </div>\n );\n })}\n </div>\n );\n },\n);\n\n\nexport type AvatarProps = Omit<HTMLAttributes<HTMLSpanElement>, \"children\"> &\n Readonly<{\n name: string;\n src?: string;\n alt?: string;\n fallback?: ReactNode;\n renderFallback?: (context: AvatarFallbackContext) => ReactNode;\n size?: AvatarSize;\n shape?: AvatarShape;\n imageProps?: Omit<ImgHTMLAttributes<HTMLImageElement>, \"alt\" | \"src\">;\n /** Canonical layout-only placement on the root element. Controlled visual keys are excluded. */\n layoutStyle?: HjmCompositionStyleProp;\n }>;\n\nexport const Avatar = forwardRef<HTMLSpanElement, AvatarProps>(function Avatar(\n {\n name,\n src,\n alt = name,\n fallback,\n renderFallback,\n size = avatarRecipe.defaults.size,\n shape = avatarRecipe.defaults.shape,\n imageProps,\n className,\n layoutStyle,\n ...props\n },\n ref,\n) {\n if (name.trim().length === 0) throw new TypeError(\"Avatar name must not be empty\");\n const [imageAvailable, setImageAvailable] = useState(Boolean(src));\n useEffect(() => setImageAvailable(Boolean(src)), [src]);\n const { onError, className: imageClassName, ...restImageProps } = imageProps ?? {};\n return (\n <span\n {...props}\n style={{ ...props.style, ...layoutStyle }}\n ref={ref}\n className={classNames(\"hjm-avatar\", className)}\n data-size={size}\n data-shape={shape}\n data-state={imageAvailable ? \"image\" : \"fallback\"}\n >\n {src && imageAvailable ? (\n <img\n {...restImageProps}\n src={src}\n alt={alt}\n className={classNames(\"hjm-avatar__image\", imageClassName)}\n onError={(event) => {\n setImageAvailable(false);\n onError?.(event);\n }}\n />\n ) : (\n <span\n className=\"hjm-avatar__fallback\"\n role={alt.length > 0 ? \"img\" : undefined}\n aria-label={alt.length > 0 ? alt : undefined}\n aria-hidden={alt.length === 0 || undefined}\n >\n {renderFallback?.({ size: avatarRecipe.sizes[size], decorative: true }) ?? fallback ?? resolveAvatarInitials(name)}\n </span>\n )}\n </span>\n );\n});\n\nexport type AvatarGroupProps = Omit<HTMLAttributes<HTMLSpanElement>, \"children\"> &\n Readonly<{\n /** Required: a pile of faces is meaningless to a screen reader otherwise. */\n label: string;\n children: ReactNode;\n size?: AvatarSize;\n /** Product-composed overflow copy such as \"+3\"; the count is the product's. */\n overflow?: ReactNode;\n /** Canonical layout-only placement on the root element. Controlled visual keys are excluded. */\n layoutStyle?: HjmCompositionStyleProp;\n }>;\n\n/**\n * Overlapping avatars. The overlap comes from the recipe ratio rather than a\n * pixel value so it holds across all four sizes, and the group carries one\n * accessible name instead of letting a reader walk five unlabelled images.\n */\nexport const AvatarGroup = forwardRef<HTMLSpanElement, AvatarGroupProps>(function AvatarGroup(\n { label, children, size = avatarRecipe.defaults.size, overflow, className, layoutStyle, style, ...props },\n ref,\n) {\n if (label.trim().length === 0) throw new TypeError(\"AvatarGroup label must not be empty\");\n const offset = Math.round(avatarRecipe.sizes[size] * avatarRecipe.overlapRatio);\n return (\n <span\n {...props}\n ref={ref}\n role=\"group\"\n aria-label={label}\n className={classNames(\"hjm-avatar-group\", className)}\n data-size={size}\n // The caller `style` used to be replaced by the overlap variable; merge it\n // and keep the recipe overlap last so it stays size-derived.\n style={{ ...style, ...layoutStyle, \"--hjm-avatar-overlap\": `${offset}px` } as CSSProperties}\n >\n {children}\n {overflow ? <span className=\"hjm-avatar-group__overflow\" aria-hidden=\"true\">{overflow}</span> : null}\n </span>\n );\n});\n\nexport type DividerOrientation = \"horizontal\" | \"vertical\";\nexport type DividerInset = keyof typeof dividerRecipe.insets;\n\nexport type DividerProps = HTMLAttributes<HTMLElement> &\n Readonly<{\n orientation?: DividerOrientation;\n inset?: DividerInset;\n decorative?: boolean;\n /** Canonical layout-only placement on the root element. Controlled visual keys are excluded. */\n layoutStyle?: HjmCompositionStyleProp;\n }>;\n\nexport const Divider = forwardRef<HTMLElement, DividerProps>(function Divider(\n {\n orientation = dividerRecipe.defaults.orientation,\n inset = dividerRecipe.defaults.inset,\n decorative = false,\n className,\n layoutStyle,\n ...props\n },\n ref,\n) {\n return createElement(orientation === \"horizontal\" ? \"hr\" : \"div\", {\n ...props,\n style: { ...props.style, ...layoutStyle },\n ref,\n className: classNames(\"hjm-divider\", className),\n \"data-orientation\": orientation,\n \"data-inset\": inset,\n role: decorative ? \"presentation\" : \"separator\",\n \"aria-hidden\": decorative || undefined,\n \"aria-orientation\": decorative ? undefined : orientation,\n });\n});\n\nexport type ListAppearance = \"grouped\" | \"plain\";\n\nexport type ListProps = Omit<HTMLAttributes<HTMLDivElement>, \"children\"> &\n Readonly<{\n label: string;\n children: ReactNode;\n separator?: keyof typeof listRecipe.separators;\n appearance?: ListAppearance;\n /** Canonical layout-only placement on the root element. Controlled visual keys are excluded. */\n layoutStyle?: HjmCompositionStyleProp;\n }>;\n\n/** Semantic list container that owns separators around composed rows. */\nexport const List = forwardRef<HTMLDivElement, ListProps>(function List(\n {\n label,\n children,\n separator = listRecipe.defaults.separator,\n appearance = \"plain\",\n className,\n layoutStyle,\n ...props\n },\n ref,\n) {\n if (!label.trim()) throw new TypeError(\"List label must not be empty\");\n const items = Children.toArray(children);\n return (\n <div\n {...props}\n style={{ ...props.style, ...layoutStyle }}\n ref={ref}\n aria-label={label}\n className={classNames(\"hjm-list\", className)}\n data-appearance={appearance}\n data-separator={separator}\n role=\"list\"\n >\n {items.map((item, index) => (\n <div\n className=\"hjm-list__item\"\n key={isValidElement(item) && item.key !== null ? item.key : `hjm-list-${index}`}\n role=\"listitem\"\n >\n {item}\n </div>\n ))}\n </div>\n );\n});\n\nexport type StatisticTrendMarkRenderProps = Readonly<{\n name: \"trendUp\" | \"trendDown\" | \"trendFlat\";\n color: \"currentColor\";\n size: number;\n}>;\n\nexport type ComposeStatisticAccessibilityLabel<Id extends string = string> = (\n input: Readonly<{\n contextLabel?: string;\n descriptor: ResolvedStatisticDescriptor<Id>;\n valueText: string;\n }>,\n) => string;\n\nexport type StatisticProps<Id extends string = string> = Omit<\n HTMLAttributes<HTMLElement>,\n \"children\"\n> & Readonly<{\n descriptor: StatisticDescriptor<Id>;\n density?: StatisticDensity;\n presentation?: StatisticPresentation;\n contextLabel?: string;\n accessibilityLabel?: string;\n composeAccessibilityLabel?: ComposeStatisticAccessibilityLabel<Id>;\n renderTrendMark?: (props: StatisticTrendMarkRenderProps) => ReactNode;\n /** Optional visual adapter; the descriptor remains the accessible value source. */\n renderValue?: (value: string) => ReactNode;\n /** Canonical layout-only placement on the root element. Controlled visual keys are excluded. */\n layoutStyle?: HjmCompositionStyleProp;\n}>;\n\nexport function Statistic<Id extends string = string>({\n descriptor,\n density = \"comfortable\",\n presentation = \"plain\",\n contextLabel,\n accessibilityLabel,\n composeAccessibilityLabel,\n renderTrendMark,\n renderValue,\n className,\n layoutStyle,\n ...props\n}: StatisticProps<Id>) {\n const resolved = resolveStatisticDescriptor(descriptor);\n const valueText = `${resolved.prefix ?? \"\"}${resolved.value}${resolved.suffix ?? \"\"}`;\n const announcement = accessibilityLabel ?? composeAccessibilityLabel?.({\n ...(contextLabel === undefined ? {} : { contextLabel }),\n descriptor: resolved,\n valueText,\n }) ?? [contextLabel, resolved.label, valueText, resolved.trend?.label, resolved.hint]\n .filter(Boolean)\n .join(\", \");\n if (!announcement.trim()) throw new TypeError(\"Statistic accessibility label must not be empty\");\n const trendName = resolved.trend\n ? statisticRecipe.trend.marks[resolved.trend.direction]\n : undefined;\n return (\n <article\n {...props}\n style={{ ...props.style, ...layoutStyle }}\n aria-label={announcement}\n className={classNames(\"hjm-statistic\", className)}\n data-density={density}\n data-presentation={presentation}\n >\n <span aria-hidden=\"true\" className=\"hjm-statistic__label\">{resolved.label}</span>\n <span aria-hidden=\"true\" className=\"hjm-statistic__value-row\">\n {resolved.prefix ? <span className=\"hjm-statistic__affix\">{resolved.prefix}</span> : null}\n <strong className=\"hjm-statistic__value\">{renderValue?.(resolved.value) ?? resolved.value}</strong>\n {resolved.suffix ? <span className=\"hjm-statistic__affix\">{resolved.suffix}</span> : null}\n </span>\n {resolved.trend ? (\n <span aria-hidden=\"true\" className=\"hjm-statistic__trend\" data-tone={resolved.trend.tone}>\n <span className=\"hjm-statistic__trend-mark\">\n {renderTrendMark?.({ name: trendName!, color: \"currentColor\", size: 16 }) ?? (\n resolved.trend.direction === \"up\" ? \"↑\" : resolved.trend.direction === \"down\" ? \"↓\" : \"—\"\n )}\n </span>\n {resolved.trend.label}\n </span>\n ) : null}\n {resolved.hint ? <span aria-hidden=\"true\" className=\"hjm-statistic__hint\">{resolved.hint}</span> : null}\n </article>\n );\n}\n\nexport type StatisticGroupProps<Id extends string = string> = Omit<\n HTMLAttributes<HTMLDivElement>,\n \"children\"\n> & Readonly<{\n label: string;\n descriptor: StatisticGroupDescriptor<Id>;\n density?: StatisticDensity;\n presentation?: StatisticPresentation;\n composeAccessibilityLabel?: ComposeStatisticAccessibilityLabel<Id>;\n renderTrendMark?: (props: StatisticTrendMarkRenderProps) => ReactNode;\n /** Canonical layout-only placement on the root element. Controlled visual keys are excluded. */\n layoutStyle?: HjmCompositionStyleProp;\n}>;\n\nexport function StatisticGroup<Id extends string = string>({\n label,\n descriptor,\n density,\n presentation,\n composeAccessibilityLabel,\n renderTrendMark,\n className,\n style,\n layoutStyle,\n ...props\n}: StatisticGroupProps<Id>) {\n validateStatisticGroup(descriptor);\n if (!label.trim()) throw new TypeError(\"StatisticGroup label must not be empty\");\n return (\n <div\n {...props}\n aria-label={label}\n className={classNames(\"hjm-statistic-group\", className)}\n role=\"list\"\n style={{ ...style, ...layoutStyle, \"--hjm-statistic-columns\": descriptor.columns ?? statisticRecipe.defaults.columns } as CSSProperties}\n >\n {descriptor.items.map((item) => (\n <div key={item.id} role=\"listitem\">\n <Statistic\n contextLabel={label}\n descriptor={item}\n {...(composeAccessibilityLabel === undefined ? {} : { composeAccessibilityLabel })}\n {...(density === undefined ? {} : { density })}\n {...(presentation === undefined ? {} : { presentation })}\n {...(renderTrendMark === undefined ? {} : { renderTrendMark })}\n />\n </div>\n ))}\n </div>\n );\n}\n\nexport type DescriptionListProps<Id extends string = string> = Omit<\n HTMLAttributes<HTMLDListElement>,\n \"children\"\n> &\n Readonly<{\n items: readonly DescriptionItemDescriptor<Id>[];\n columns?: DescriptionListColumns;\n /** Canonical layout-only placement. Controlled visual keys are excluded. */\n layoutStyle?: HjmCompositionStyleProp;\n }>;\n\nfunction DescriptionListInner<Id extends string>(\n { items, columns, className, layoutStyle, style, ...props }: DescriptionListProps<Id>,\n forwardedRef: ForwardedRef<HTMLDListElement>,\n) {\n const descriptor = resolveDescriptionListDescriptor({\n items,\n ...(columns === undefined ? {} : { columns }),\n });\n const [width, ref] = useElementWidth(forwardedRef);\n const theme = useOptionalHjmTheme();\n const resolvedColumns = resolveDescriptionListColumnCount(\n width ?? 0,\n descriptor.columns,\n theme?.environment.textScale ?? 1,\n );\n const responsiveStyle = {\n ...style,\n ...layoutStyle,\n \"--hjm-description-columns\": resolvedColumns,\n } as CSSProperties;\n return (\n <dl\n {...props}\n ref={ref}\n className={classNames(\"hjm-description-list\", className)}\n data-columns={resolvedColumns}\n data-state={resolvedColumns < descriptor.columns ? \"collapsed\" : \"ready\"}\n style={responsiveStyle}\n >\n {descriptor.items.map((item) => (\n <div key={item.id} className=\"hjm-description-list__item\">\n <dt className=\"hjm-description-list__label\">{item.label}</dt>\n <dd className=\"hjm-description-list__value\">{item.value}</dd>\n </div>\n ))}\n </dl>\n );\n}\n\nexport const DescriptionList = forwardRef(DescriptionListInner) as <Id extends string = string>(\n props: DescriptionListProps<Id> & RefAttributes<HTMLDListElement>,\n) => ReactElement;\n\nexport type TableSortDirection = \"ascending\" | \"descending\";\n\nexport type TableColumn<Row> = Readonly<{\n id: string;\n header: ReactNode;\n cell: (row: Row, rowIndex: number) => ReactNode;\n align?: \"start\" | \"center\" | \"end\";\n sortable?: boolean;\n sortDirection?: TableSortDirection;\n}>;\n\nexport type TableProps<Row> = Omit<TableHTMLAttributes<HTMLTableElement>, \"children\"> &\n Readonly<{\n columns: readonly TableColumn<Row>[];\n rows: readonly Row[];\n getRowKey: (row: Row, rowIndex: number) => string;\n caption?: ReactNode;\n /** Localized content rendered when rows is empty. */\n emptyState: ReactNode;\n onSortChange?: (columnId: string, direction: TableSortDirection) => void;\n wrapperClassName?: string;\n /** Canonical layout-only placement on the root element. Controlled visual keys are excluded. */\n layoutStyle?: HjmCompositionStyleProp;\n }>;\n\n// Table's callback cannot express null; share the sort policy with a two-state cycle.\nfunction TableInner<Row>(\n {\n columns,\n rows,\n getRowKey,\n caption,\n emptyState,\n onSortChange,\n wrapperClassName,\n className,\n layoutStyle,\n ...props\n }: TableProps<Row>,\n ref: ForwardedRef<HTMLTableElement>,\n) {\n if (columns.length === 0) throw new TypeError(\"Table requires at least one column\");\n const ids = new Set<string>();\n for (const column of columns) {\n if (column.id.trim().length === 0) throw new TypeError(\"Table column id must not be empty\");\n if (ids.has(column.id)) throw new TypeError(`Duplicate Table column id: ${column.id}`);\n ids.add(column.id);\n if (column.sortDirection && !column.sortable) {\n throw new TypeError(`Table column ${column.id} has sortDirection but is not sortable`);\n }\n }\n const rowKeys = rows.map((row, rowIndex) => getRowKey(row, rowIndex));\n const seenRowKeys = new Set<string>();\n for (const rowKey of rowKeys) {\n if (rowKey.trim().length === 0) throw new TypeError(\"Table row key must not be empty\");\n if (seenRowKeys.has(rowKey)) throw new TypeError(`Duplicate Table row key: ${rowKey}`);\n seenRowKeys.add(rowKey);\n }\n return (\n // Placement belongs to the scroll wrapper (the visual root); `style` keeps\n // going to the <table>, where it always went.\n <div className={classNames(\"hjm-table-scroll\", wrapperClassName)} style={layoutStyle} tabIndex={0}>\n <table {...props} ref={ref} className={classNames(\"hjm-table\", className)}>\n {caption ? <caption className=\"hjm-table__caption\">{caption}</caption> : null}\n <thead>\n <tr>\n {columns.map((column) => (\n <th\n key={column.id}\n scope=\"col\"\n className=\"hjm-table__header\"\n data-align={column.align ?? \"start\"}\n aria-sort={column.sortDirection ?? (column.sortable ? \"none\" : undefined)}\n >\n {column.sortable ? (\n <TableSortButton\n header={column.header}\n {...(column.sortDirection === undefined ? {} : { direction: column.sortDirection })}\n glyphs={{ ascending: \" ↑\", descending: \" ↓\", none: \" ↕\" }}\n className=\"hjm-table__sort\"\n onSort={() => {\n const next = getNextDataTableSortState(\n column.sortDirection ? { columnId: column.id, direction: column.sortDirection } : null,\n column.id, \"two-state\",\n );\n onSortChange?.(column.id, next!.direction);\n }} />\n ) : column.header}\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {rows.length === 0 ? (\n <tr>\n <td className=\"hjm-table__empty\" colSpan={columns.length}>{emptyState}</td>\n </tr>\n ) : (\n rows.map((row, rowIndex) => (\n <tr key={rowKeys[rowIndex]} className=\"hjm-table__row\">\n {columns.map((column) => (\n <td\n key={column.id}\n className=\"hjm-table__cell\"\n data-align={column.align ?? \"start\"}\n >\n {column.cell(row, rowIndex)}\n </td>\n ))}\n </tr>\n ))\n )}\n </tbody>\n </table>\n </div>\n );\n}\n\nexport const Table = forwardRef(TableInner) as <Row>(\n props: TableProps<Row> & RefAttributes<HTMLTableElement>,\n) => ReactElement;\n\nexport type TimelineProps<Id extends string = string> = Omit<\n HTMLAttributes<HTMLOListElement>,\n \"children\"\n> &\n Readonly<{\n items: readonly TimelineItemDescriptor<Id>[];\n composeAccessibleName: ComposeTimelineAccessibleName;\n /** Canonical layout-only placement on the root element. Controlled visual keys are excluded. */\n layoutStyle?: HjmCompositionStyleProp;\n }>;\n\nfunction TimelineInner<Id extends string = string>(\n {\n items,\n composeAccessibleName,\n className,\n layoutStyle,\n ...props\n }: TimelineProps<Id>,\n ref: ForwardedRef<HTMLOListElement>,\n) {\n const resolved = resolveTimelineDescriptor(\n { items },\n { composeAccessibleName },\n );\n return (\n <ol\n {...props}\n style={{ ...props.style, ...layoutStyle }}\n ref={ref}\n className={classNames(\"hjm-timeline\", className)}\n >\n {resolved.map((item, index) => (\n <li\n aria-label={item.accessibleName}\n className=\"hjm-timeline__item\"\n data-tone={item.tone}\n key={item.id}\n >\n <span className=\"hjm-timeline__rail\" aria-hidden=\"true\">\n <span className=\"hjm-timeline__dot\" />\n {index < resolved.length - 1 ? (\n <span className=\"hjm-timeline__connector\" />\n ) : null}\n </span>\n <span className=\"hjm-timeline__content\">\n <span className=\"hjm-timeline__heading\">\n <strong className=\"hjm-timeline__label\">{item.label}</strong>\n {item.timestamp ? (\n <time className=\"hjm-timeline__timestamp\">{item.timestamp}</time>\n ) : null}\n </span>\n {item.description ? (\n <span className=\"hjm-timeline__description\">{item.description}</span>\n ) : null}\n </span>\n </li>\n ))}\n </ol>\n );\n}\n\nexport const Timeline = forwardRef(TimelineInner) as <Id extends string = string>(\n props: TimelineProps<Id> & RefAttributes<HTMLOListElement>,\n) => ReactElement;\n"]}
1
+ {"version":3,"file":"advanced-display.js","sourceRoot":"","sources":["../src/advanced-display.tsx"],"names":[],"mappings":"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","sourcesContent":["import { resolveAvatarInitials, type AvatarFallbackContext } from \"@hjmds/design-contracts/avatar-fallback\";\nimport { TableSortButton } from \"./table-sort-button.js\";\nimport { getNextDataTableSortState } from \"@hjmds/design-contracts/components/data-table\";\nimport {\n resolveDescriptionListColumnCount,\n resolveDescriptionListDescriptor,\n type DescriptionItemDescriptor,\n type DescriptionListColumns,\n} from \"@hjmds/design-contracts/components/description-list\";\nimport {\n resolveTimelineDescriptor,\n type ComposeTimelineAccessibleName,\n type TimelineItemDescriptor,\n} from \"@hjmds/design-contracts/components/timeline\";\nimport {\n resolveStatisticDescriptor,\n validateStatisticGroup,\n type ResolvedStatisticDescriptor,\n type StatisticDescriptor,\n type StatisticGroupDescriptor,\n} from \"@hjmds/design-contracts/components/statistic\";\nimport {\n accordionRecipe,\n avatarRecipe,\n dividerRecipe,\n listRecipe,\n statisticRecipe,\n type AccordionDensity,\n type AvatarShape,\n type AvatarSize,\n type StatisticDensity,\n type StatisticPresentation,\n} from \"@hjmds/design-contracts/recipes\";\nimport {\n Children,\n createElement,\n forwardRef,\n isValidElement,\n useId,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n type CSSProperties,\n type ForwardedRef,\n type HTMLAttributes,\n type ImgHTMLAttributes,\n type KeyboardEvent,\n type ReactElement,\n type ReactNode,\n type RefAttributes,\n type TableHTMLAttributes,\n} from \"react\";\nimport type { HjmCompositionStyleProp } from \"./composition-style.js\";\nimport { assignRef, classNames, useControllableState, useElementWidth } from \"./internal.js\";\nimport { useOptionalHjmTheme } from \"./provider.js\";\n\nexport type AccordionItem = Readonly<{\n id: string;\n title: ReactNode;\n panel: ReactNode;\n disabled?: boolean;\n}>;\n\nexport type AccordionProps = Omit<HTMLAttributes<HTMLDivElement>, \"onChange\"> &\n Readonly<{\n items: readonly AccordionItem[];\n value?: readonly string[];\n defaultValue?: readonly string[];\n onValueChange?: (value: readonly string[]) => void;\n allowsMultipleExpanded?: boolean;\n density?: AccordionDensity;\n headingLevel?: 2 | 3 | 4 | 5 | 6;\n /** Canonical layout-only placement on the root element. Controlled visual keys are excluded. */\n layoutStyle?: HjmCompositionStyleProp;\n }>;\n\nfunction validateAccordionItems(items: readonly AccordionItem[]): void {\n if (items.length === 0) throw new TypeError(\"Accordion requires at least one item\");\n const ids = new Set<string>();\n for (const item of items) {\n if (item.id.trim().length === 0) throw new TypeError(\"Accordion item id must not be empty\");\n if (ids.has(item.id)) throw new TypeError(`Duplicate Accordion item id: ${item.id}`);\n ids.add(item.id);\n }\n}\n\nfunction accordionFocusTarget(\n items: readonly AccordionItem[],\n currentIndex: number,\n key: string,\n): number | undefined {\n if (key === \"Home\") return items.findIndex((item) => !item.disabled);\n if (key === \"End\") {\n for (let index = items.length - 1; index >= 0; index -= 1) {\n if (!items[index]?.disabled) return index;\n }\n return -1;\n }\n const direction = key === \"ArrowDown\" ? 1 : key === \"ArrowUp\" ? -1 : 0;\n if (direction === 0) return undefined;\n for (let offset = 1; offset <= items.length; offset += 1) {\n const index = (currentIndex + direction * offset + items.length) % items.length;\n if (!items[index]?.disabled) return index;\n }\n return currentIndex;\n}\n\nexport const Accordion = forwardRef<HTMLDivElement, AccordionProps>(\n function Accordion(\n {\n items,\n value: valueProp,\n defaultValue = [],\n onValueChange,\n allowsMultipleExpanded = accordionRecipe.defaults.allowsMultipleExpanded,\n density = accordionRecipe.defaults.density,\n headingLevel = 3,\n className,\n layoutStyle,\n ...props\n },\n ref,\n ) {\n validateAccordionItems(items);\n const [storedValue, setValue] = useControllableState<readonly string[]>({\n ...(valueProp === undefined ? {} : { value: valueProp }),\n defaultValue,\n ...(onValueChange === undefined ? {} : { onChange: onValueChange }),\n });\n const validIds = new Set(items.map((item) => item.id));\n const committed = useRef(false);\n const value = valueProp === undefined && committed.current ? storedValue.filter(id => validIds.has(id)) : storedValue;\n useLayoutEffect(() => {\n committed.current = true;\n // Removed uncontrolled disclosures retire their expansion; reinsertion starts closed.\n if (value.length !== storedValue.length) setValue(value);\n }, [value, storedValue, setValue]);\n const valueIds = new Set<string>();\n for (const id of value) {\n if (!validIds.has(id)) throw new RangeError(`Unknown Accordion value: ${id}`);\n if (valueIds.has(id)) throw new TypeError(`Duplicate Accordion value: ${id}`);\n valueIds.add(id);\n }\n if (!allowsMultipleExpanded && value.length > 1) {\n throw new RangeError(\"Accordion only allows one expanded item\");\n }\n const baseId = useId().replaceAll(\":\", \"\");\n const triggerRefs = useRef(new Map<string, HTMLButtonElement>());\n const host = useRef<HTMLDivElement | null>(null);\n const focused = useRef<{ id: string; index: number; node: HTMLElement } | null>(null);\n useLayoutEffect(() => {\n const previous = focused.current;\n if (!previous) return;\n const index = items.findIndex(item => item.id === previous.id);\n const removed = index < 0;\n const disabledTrigger = index >= 0 && items[index]!.disabled && triggerRefs.current.get(previous.id) === previous.node;\n if (!(removed || disabledTrigger) || (document.activeElement !== previous.node && document.activeElement !== document.body)) return;\n // Restore only the removed/disabled target, never steal a user's external focus.\n const origin = removed ? Math.min(previous.index, items.length - 1) : index + 1;\n const target = Array.from({ length: items.length }, (_, offset) => items[(origin + offset) % items.length]!).find(item => !item.disabled);\n focused.current = null;\n (target ? triggerRefs.current.get(target.id) : host.current)?.focus();\n }, [items]);\n const toggle = (id: string) => {\n const expanded = value.includes(id);\n setValue(\n expanded\n ? value.filter((candidate) => candidate !== id)\n : allowsMultipleExpanded\n ? [...value, id]\n : [id],\n );\n };\n\n return (\n <div\n {...props}\n style={{ ...props.style, ...layoutStyle }}\n ref={node => { host.current = node; assignRef(ref, node); }}\n tabIndex={-1}\n className={classNames(\"hjm-accordion\", className)}\n data-density={density}\n data-multiple={allowsMultipleExpanded || undefined}\n >\n {items.map((item, index) => {\n const expanded = value.includes(item.id);\n const triggerId = `${baseId}-accordion-trigger-${index}`;\n const panelId = `${baseId}-accordion-panel-${index}`;\n const trigger = (\n <button\n ref={(node) => {\n if (node) triggerRefs.current.set(item.id, node);\n else triggerRefs.current.delete(item.id);\n }}\n id={triggerId}\n type=\"button\"\n className=\"hjm-accordion__trigger\"\n aria-expanded={expanded}\n aria-controls={panelId}\n disabled={item.disabled}\n onClick={() => toggle(item.id)}\n onKeyDown={(event: KeyboardEvent<HTMLButtonElement>) => {\n const target = accordionFocusTarget(items, index, event.key);\n if (target === undefined || target < 0) return;\n event.preventDefault();\n triggerRefs.current.get(items[target]!.id)?.focus();\n }}\n >\n <span className=\"hjm-accordion__title\">{item.title}</span>\n <span className=\"hjm-accordion__indicator\" aria-hidden=\"true\">\n {expanded ? \"−\" : \"+\"}\n </span>\n </button>\n );\n return (\n <div\n key={item.id}\n onFocusCapture={event => { if (event.target instanceof HTMLElement) focused.current = { id: item.id, index, node: event.target }; }}\n className=\"hjm-accordion__item\"\n data-state={item.disabled ? \"disabled\" : expanded ? \"expanded\" : \"collapsed\"}\n >\n {createElement(`h${headingLevel}`, { className: \"hjm-accordion__header\" }, trigger)}\n <div\n id={panelId}\n role=\"region\"\n className=\"hjm-accordion__panel\"\n aria-labelledby={triggerId}\n hidden={!expanded}\n >\n {item.panel}\n </div>\n </div>\n );\n })}\n </div>\n );\n },\n);\n\n\nexport type AvatarProps = Omit<HTMLAttributes<HTMLSpanElement>, \"children\"> &\n Readonly<{\n name: string;\n src?: string;\n alt?: string;\n fallback?: ReactNode;\n renderFallback?: (context: AvatarFallbackContext) => ReactNode;\n size?: AvatarSize;\n shape?: AvatarShape;\n imageProps?: Omit<ImgHTMLAttributes<HTMLImageElement>, \"alt\" | \"src\">;\n /** Canonical layout-only placement on the root element. Controlled visual keys are excluded. */\n layoutStyle?: HjmCompositionStyleProp;\n }>;\n\nexport const Avatar = forwardRef<HTMLSpanElement, AvatarProps>(function Avatar(\n {\n name,\n src,\n alt = name,\n fallback,\n renderFallback,\n size = avatarRecipe.defaults.size,\n shape = avatarRecipe.defaults.shape,\n imageProps,\n className,\n layoutStyle,\n ...props\n },\n ref,\n) {\n if (name.trim().length === 0) throw new TypeError(\"Avatar name must not be empty\");\n const generation = useMemo(() => ({}), [src]);\n const active = useRef<object | null>(generation);\n useLayoutEffect(() => { active.current = generation; return () => { active.current = null; }; }, [generation]);\n const [failed, setFailed] = useState<object | null>(null);\n const imageAvailable = Boolean(src) && failed !== generation;\n const { onError, className: imageClassName, ...restImageProps } = imageProps ?? {};\n return (\n <span\n {...props}\n style={{ ...props.style, ...layoutStyle }}\n ref={ref}\n className={classNames(\"hjm-avatar\", className)}\n data-size={size}\n data-shape={shape}\n data-state={imageAvailable ? \"image\" : \"fallback\"}\n >\n {src && imageAvailable ? (\n <img\n {...restImageProps}\n key={src}\n src={src}\n alt={alt}\n className={classNames(\"hjm-avatar__image\", imageClassName)}\n onError={(event) => {\n if (active.current !== generation) return;\n setFailed(generation);\n onError?.(event);\n }}\n />\n ) : (\n <span\n className=\"hjm-avatar__fallback\"\n role={alt.length > 0 ? \"img\" : undefined}\n aria-label={alt.length > 0 ? alt : undefined}\n aria-hidden={alt.length === 0 || undefined}\n >\n {renderFallback?.({ size: avatarRecipe.sizes[size], decorative: true }) ?? fallback ?? resolveAvatarInitials(name)}\n </span>\n )}\n </span>\n );\n});\n\nexport type AvatarGroupProps = Omit<HTMLAttributes<HTMLSpanElement>, \"children\"> &\n Readonly<{\n /** Required: a pile of faces is meaningless to a screen reader otherwise. */\n label: string;\n children: ReactNode;\n size?: AvatarSize;\n /** Product-composed overflow copy such as \"+3\"; the count is the product's. */\n overflow?: ReactNode;\n /** Canonical layout-only placement on the root element. Controlled visual keys are excluded. */\n layoutStyle?: HjmCompositionStyleProp;\n }>;\n\n/**\n * Overlapping avatars. The overlap comes from the recipe ratio rather than a\n * pixel value so it holds across all four sizes, and the group carries one\n * accessible name instead of letting a reader walk five unlabelled images.\n */\nexport const AvatarGroup = forwardRef<HTMLSpanElement, AvatarGroupProps>(function AvatarGroup(\n { label, children, size = avatarRecipe.defaults.size, overflow, className, layoutStyle, style, ...props },\n ref,\n) {\n if (label.trim().length === 0) throw new TypeError(\"AvatarGroup label must not be empty\");\n const offset = Math.round(avatarRecipe.sizes[size] * avatarRecipe.overlapRatio);\n return (\n <span\n {...props}\n ref={ref}\n role=\"group\"\n aria-label={label}\n className={classNames(\"hjm-avatar-group\", className)}\n data-size={size}\n // The caller `style` used to be replaced by the overlap variable; merge it\n // and keep the recipe overlap last so it stays size-derived.\n style={{ ...style, ...layoutStyle, \"--hjm-avatar-overlap\": `${offset}px` } as CSSProperties}\n >\n {children}\n {overflow ? <span className=\"hjm-avatar-group__overflow\" aria-hidden=\"true\">{overflow}</span> : null}\n </span>\n );\n});\n\nexport type DividerOrientation = \"horizontal\" | \"vertical\";\nexport type DividerInset = keyof typeof dividerRecipe.insets;\n\nexport type DividerProps = HTMLAttributes<HTMLElement> &\n Readonly<{\n orientation?: DividerOrientation;\n inset?: DividerInset;\n decorative?: boolean;\n /** Canonical layout-only placement on the root element. Controlled visual keys are excluded. */\n layoutStyle?: HjmCompositionStyleProp;\n }>;\n\nexport const Divider = forwardRef<HTMLElement, DividerProps>(function Divider(\n {\n orientation = dividerRecipe.defaults.orientation,\n inset = dividerRecipe.defaults.inset,\n decorative = false,\n className,\n layoutStyle,\n ...props\n },\n ref,\n) {\n return createElement(orientation === \"horizontal\" ? \"hr\" : \"div\", {\n ...props,\n style: { ...props.style, ...layoutStyle },\n ref,\n className: classNames(\"hjm-divider\", className),\n \"data-orientation\": orientation,\n \"data-inset\": inset,\n role: decorative ? \"presentation\" : \"separator\",\n \"aria-hidden\": decorative || undefined,\n \"aria-orientation\": decorative ? undefined : orientation,\n });\n});\n\nexport type ListAppearance = \"grouped\" | \"plain\";\n\nexport type ListProps = Omit<HTMLAttributes<HTMLDivElement>, \"children\"> &\n Readonly<{\n label: string;\n children: ReactNode;\n separator?: keyof typeof listRecipe.separators;\n appearance?: ListAppearance;\n /** Canonical layout-only placement on the root element. Controlled visual keys are excluded. */\n layoutStyle?: HjmCompositionStyleProp;\n }>;\n\n/** Semantic list container that owns separators around composed rows. */\nexport const List = forwardRef<HTMLDivElement, ListProps>(function List(\n {\n label,\n children,\n separator = listRecipe.defaults.separator,\n appearance = \"plain\",\n className,\n layoutStyle,\n ...props\n },\n ref,\n) {\n if (!label.trim()) throw new TypeError(\"List label must not be empty\");\n const items = Children.toArray(children);\n return (\n <div\n {...props}\n style={{ ...props.style, ...layoutStyle }}\n ref={ref}\n aria-label={label}\n className={classNames(\"hjm-list\", className)}\n data-appearance={appearance}\n data-separator={separator}\n role=\"list\"\n >\n {items.map((item, index) => (\n <div\n className=\"hjm-list__item\"\n key={isValidElement(item) && item.key !== null ? item.key : `hjm-list-${index}`}\n role=\"listitem\"\n >\n {item}\n </div>\n ))}\n </div>\n );\n});\n\nexport type StatisticTrendMarkRenderProps = Readonly<{\n name: \"trendUp\" | \"trendDown\" | \"trendFlat\";\n color: \"currentColor\";\n size: number;\n}>;\n\nexport type ComposeStatisticAccessibilityLabel<Id extends string = string> = (\n input: Readonly<{\n contextLabel?: string;\n descriptor: ResolvedStatisticDescriptor<Id>;\n valueText: string;\n }>,\n) => string;\n\nexport type StatisticProps<Id extends string = string> = Omit<\n HTMLAttributes<HTMLElement>,\n \"children\"\n> & Readonly<{\n descriptor: StatisticDescriptor<Id>;\n density?: StatisticDensity;\n presentation?: StatisticPresentation;\n contextLabel?: string;\n accessibilityLabel?: string;\n composeAccessibilityLabel?: ComposeStatisticAccessibilityLabel<Id>;\n renderTrendMark?: (props: StatisticTrendMarkRenderProps) => ReactNode;\n /** Optional visual adapter; the descriptor remains the accessible value source. */\n renderValue?: (value: string) => ReactNode;\n /** Canonical layout-only placement on the root element. Controlled visual keys are excluded. */\n layoutStyle?: HjmCompositionStyleProp;\n}>;\n\nexport function Statistic<Id extends string = string>({\n descriptor,\n density = \"comfortable\",\n presentation = \"plain\",\n contextLabel,\n accessibilityLabel,\n composeAccessibilityLabel,\n renderTrendMark,\n renderValue,\n className,\n layoutStyle,\n ...props\n}: StatisticProps<Id>) {\n const resolved = resolveStatisticDescriptor(descriptor);\n const valueText = `${resolved.prefix ?? \"\"}${resolved.value}${resolved.suffix ?? \"\"}`;\n const announcement = accessibilityLabel ?? composeAccessibilityLabel?.({\n ...(contextLabel === undefined ? {} : { contextLabel }),\n descriptor: resolved,\n valueText,\n }) ?? [contextLabel, resolved.label, valueText, resolved.trend?.label, resolved.hint]\n .filter(Boolean)\n .join(\", \");\n if (!announcement.trim()) throw new TypeError(\"Statistic accessibility label must not be empty\");\n const trendName = resolved.trend\n ? statisticRecipe.trend.marks[resolved.trend.direction]\n : undefined;\n return (\n <article\n {...props}\n style={{ ...props.style, ...layoutStyle }}\n aria-label={announcement}\n className={classNames(\"hjm-statistic\", className)}\n data-density={density}\n data-presentation={presentation}\n >\n <span aria-hidden=\"true\" className=\"hjm-statistic__label\">{resolved.label}</span>\n <span aria-hidden=\"true\" className=\"hjm-statistic__value-row\">\n {resolved.prefix ? <span className=\"hjm-statistic__affix\">{resolved.prefix}</span> : null}\n <strong className=\"hjm-statistic__value\">{renderValue?.(resolved.value) ?? resolved.value}</strong>\n {resolved.suffix ? <span className=\"hjm-statistic__affix\">{resolved.suffix}</span> : null}\n </span>\n {resolved.trend ? (\n <span aria-hidden=\"true\" className=\"hjm-statistic__trend\" data-tone={resolved.trend.tone}>\n <span className=\"hjm-statistic__trend-mark\">\n {renderTrendMark?.({ name: trendName!, color: \"currentColor\", size: 16 }) ?? (\n resolved.trend.direction === \"up\" ? \"↑\" : resolved.trend.direction === \"down\" ? \"↓\" : \"—\"\n )}\n </span>\n {resolved.trend.label}\n </span>\n ) : null}\n {resolved.hint ? <span aria-hidden=\"true\" className=\"hjm-statistic__hint\">{resolved.hint}</span> : null}\n </article>\n );\n}\n\nexport type StatisticGroupProps<Id extends string = string> = Omit<\n HTMLAttributes<HTMLDivElement>,\n \"children\"\n> & Readonly<{\n label: string;\n descriptor: StatisticGroupDescriptor<Id>;\n density?: StatisticDensity;\n presentation?: StatisticPresentation;\n composeAccessibilityLabel?: ComposeStatisticAccessibilityLabel<Id>;\n renderTrendMark?: (props: StatisticTrendMarkRenderProps) => ReactNode;\n /** Canonical layout-only placement on the root element. Controlled visual keys are excluded. */\n layoutStyle?: HjmCompositionStyleProp;\n}>;\n\nexport function StatisticGroup<Id extends string = string>({\n label,\n descriptor,\n density,\n presentation,\n composeAccessibilityLabel,\n renderTrendMark,\n className,\n style,\n layoutStyle,\n ...props\n}: StatisticGroupProps<Id>) {\n validateStatisticGroup(descriptor);\n if (!label.trim()) throw new TypeError(\"StatisticGroup label must not be empty\");\n return (\n <div\n {...props}\n aria-label={label}\n className={classNames(\"hjm-statistic-group\", className)}\n role=\"list\"\n style={{ ...style, ...layoutStyle, \"--hjm-statistic-columns\": descriptor.columns ?? statisticRecipe.defaults.columns } as CSSProperties}\n >\n {descriptor.items.map((item) => (\n <div key={item.id} role=\"listitem\">\n <Statistic\n contextLabel={label}\n descriptor={item}\n {...(composeAccessibilityLabel === undefined ? {} : { composeAccessibilityLabel })}\n {...(density === undefined ? {} : { density })}\n {...(presentation === undefined ? {} : { presentation })}\n {...(renderTrendMark === undefined ? {} : { renderTrendMark })}\n />\n </div>\n ))}\n </div>\n );\n}\n\nexport type DescriptionListProps<Id extends string = string> = Omit<\n HTMLAttributes<HTMLDListElement>,\n \"children\"\n> &\n Readonly<{\n items: readonly DescriptionItemDescriptor<Id>[];\n columns?: DescriptionListColumns;\n /** Canonical layout-only placement. Controlled visual keys are excluded. */\n layoutStyle?: HjmCompositionStyleProp;\n }>;\n\nfunction DescriptionListInner<Id extends string>(\n { items, columns, className, layoutStyle, style, ...props }: DescriptionListProps<Id>,\n forwardedRef: ForwardedRef<HTMLDListElement>,\n) {\n const descriptor = resolveDescriptionListDescriptor({\n items,\n ...(columns === undefined ? {} : { columns }),\n });\n const [width, ref] = useElementWidth(forwardedRef);\n const theme = useOptionalHjmTheme();\n const resolvedColumns = resolveDescriptionListColumnCount(\n width ?? 0,\n descriptor.columns,\n theme?.environment.textScale ?? 1,\n );\n const responsiveStyle = {\n ...style,\n ...layoutStyle,\n \"--hjm-description-columns\": resolvedColumns,\n } as CSSProperties;\n return (\n <dl\n {...props}\n ref={ref}\n className={classNames(\"hjm-description-list\", className)}\n data-columns={resolvedColumns}\n data-state={resolvedColumns < descriptor.columns ? \"collapsed\" : \"ready\"}\n style={responsiveStyle}\n >\n {descriptor.items.map((item) => (\n <div key={item.id} className=\"hjm-description-list__item\">\n <dt className=\"hjm-description-list__label\">{item.label}</dt>\n <dd className=\"hjm-description-list__value\">{item.value}</dd>\n </div>\n ))}\n </dl>\n );\n}\n\nexport const DescriptionList = forwardRef(DescriptionListInner) as <Id extends string = string>(\n props: DescriptionListProps<Id> & RefAttributes<HTMLDListElement>,\n) => ReactElement;\n\nexport type TableSortDirection = \"ascending\" | \"descending\";\n\nexport type TableColumn<Row> = Readonly<{\n id: string;\n header: ReactNode;\n cell: (row: Row, rowIndex: number) => ReactNode;\n align?: \"start\" | \"center\" | \"end\";\n sortable?: boolean;\n sortDirection?: TableSortDirection;\n}>;\n\nexport type TableProps<Row> = Omit<TableHTMLAttributes<HTMLTableElement>, \"children\"> &\n Readonly<{\n columns: readonly TableColumn<Row>[];\n rows: readonly Row[];\n getRowKey: (row: Row, rowIndex: number) => string;\n caption?: ReactNode;\n /** Localized content rendered when rows is empty. */\n emptyState: ReactNode;\n onSortChange?: (columnId: string, direction: TableSortDirection) => void;\n wrapperClassName?: string;\n /** Canonical layout-only placement on the root element. Controlled visual keys are excluded. */\n layoutStyle?: HjmCompositionStyleProp;\n }>;\n\n// Table's callback cannot express null; share the sort policy with a two-state cycle.\nfunction TableInner<Row>(\n {\n columns,\n rows,\n getRowKey,\n caption,\n emptyState,\n onSortChange,\n wrapperClassName,\n className,\n layoutStyle,\n ...props\n }: TableProps<Row>,\n ref: ForwardedRef<HTMLTableElement>,\n) {\n if (columns.length === 0) throw new TypeError(\"Table requires at least one column\");\n const ids = new Set<string>();\n for (const column of columns) {\n if (column.id.trim().length === 0) throw new TypeError(\"Table column id must not be empty\");\n if (ids.has(column.id)) throw new TypeError(`Duplicate Table column id: ${column.id}`);\n ids.add(column.id);\n if (column.sortDirection && !column.sortable) {\n throw new TypeError(`Table column ${column.id} has sortDirection but is not sortable`);\n }\n }\n const rowKeys = rows.map((row, rowIndex) => getRowKey(row, rowIndex));\n const seenRowKeys = new Set<string>();\n for (const rowKey of rowKeys) {\n if (rowKey.trim().length === 0) throw new TypeError(\"Table row key must not be empty\");\n if (seenRowKeys.has(rowKey)) throw new TypeError(`Duplicate Table row key: ${rowKey}`);\n seenRowKeys.add(rowKey);\n }\n return (\n // Placement belongs to the scroll wrapper (the visual root); `style` keeps\n // going to the <table>, where it always went.\n <div className={classNames(\"hjm-table-scroll\", wrapperClassName)} style={layoutStyle} tabIndex={0}>\n <table {...props} ref={ref} className={classNames(\"hjm-table\", className)}>\n {caption ? <caption className=\"hjm-table__caption\">{caption}</caption> : null}\n <thead>\n <tr>\n {columns.map((column) => (\n <th\n key={column.id}\n scope=\"col\"\n className=\"hjm-table__header\"\n data-align={column.align ?? \"start\"}\n aria-sort={column.sortDirection ?? (column.sortable ? \"none\" : undefined)}\n >\n {column.sortable ? (\n <TableSortButton\n header={column.header}\n {...(column.sortDirection === undefined ? {} : { direction: column.sortDirection })}\n glyphs={{ ascending: \" ↑\", descending: \" ↓\", none: \" ↕\" }}\n className=\"hjm-table__sort\"\n onSort={() => {\n const next = getNextDataTableSortState(\n column.sortDirection ? { columnId: column.id, direction: column.sortDirection } : null,\n column.id, \"two-state\",\n );\n onSortChange?.(column.id, next!.direction);\n }} />\n ) : column.header}\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {rows.length === 0 ? (\n <tr>\n <td className=\"hjm-table__empty\" colSpan={columns.length}>{emptyState}</td>\n </tr>\n ) : (\n rows.map((row, rowIndex) => (\n <tr key={rowKeys[rowIndex]} className=\"hjm-table__row\">\n {columns.map((column) => (\n <td\n key={column.id}\n className=\"hjm-table__cell\"\n data-align={column.align ?? \"start\"}\n >\n {column.cell(row, rowIndex)}\n </td>\n ))}\n </tr>\n ))\n )}\n </tbody>\n </table>\n </div>\n );\n}\n\nexport const Table = forwardRef(TableInner) as <Row>(\n props: TableProps<Row> & RefAttributes<HTMLTableElement>,\n) => ReactElement;\n\nexport type TimelineProps<Id extends string = string> = Omit<\n HTMLAttributes<HTMLOListElement>,\n \"children\"\n> &\n Readonly<{\n items: readonly TimelineItemDescriptor<Id>[];\n composeAccessibleName: ComposeTimelineAccessibleName;\n /** Canonical layout-only placement on the root element. Controlled visual keys are excluded. */\n layoutStyle?: HjmCompositionStyleProp;\n }>;\n\nfunction TimelineInner<Id extends string = string>(\n {\n items,\n composeAccessibleName,\n className,\n layoutStyle,\n ...props\n }: TimelineProps<Id>,\n ref: ForwardedRef<HTMLOListElement>,\n) {\n const resolved = resolveTimelineDescriptor(\n { items },\n { composeAccessibleName },\n );\n return (\n <ol\n {...props}\n style={{ ...props.style, ...layoutStyle }}\n ref={ref}\n className={classNames(\"hjm-timeline\", className)}\n >\n {resolved.map((item, index) => (\n <li\n aria-label={item.accessibleName}\n className=\"hjm-timeline__item\"\n data-tone={item.tone}\n key={item.id}\n >\n <span className=\"hjm-timeline__rail\" aria-hidden=\"true\">\n <span className=\"hjm-timeline__dot\" />\n {index < resolved.length - 1 ? (\n <span className=\"hjm-timeline__connector\" />\n ) : null}\n </span>\n <span className=\"hjm-timeline__content\">\n <span className=\"hjm-timeline__heading\">\n <strong className=\"hjm-timeline__label\">{item.label}</strong>\n {item.timestamp ? (\n <time className=\"hjm-timeline__timestamp\">{item.timestamp}</time>\n ) : null}\n </span>\n {item.description ? (\n <span className=\"hjm-timeline__description\">{item.description}</span>\n ) : null}\n </span>\n </li>\n ))}\n </ol>\n );\n}\n\nexport const Timeline = forwardRef(TimelineInner) as <Id extends string = string>(\n props: TimelineProps<Id> & RefAttributes<HTMLOListElement>,\n) => ReactElement;\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"advanced-forms.d.ts","sourceRoot":"","sources":["../src/advanced-forms.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"advanced-forms.d.ts","sourceRoot":"","sources":["../src/advanced-forms.tsx"],"names":[],"mappings":"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"}
@@ -31,15 +31,26 @@ function validateOptions(options, component) {
31
31
  export const NativeSelect = forwardRef(function NativeSelect({ id, label, description, error, options, placeholder, value: valueProp, defaultValue = "", onValueChange, size = selectRecipe.defaults.size, density = selectRecipe.defaults.density, fieldClassName, className, layoutStyle, disabled = false, required = false, ...props }, ref) {
32
32
  validateOptions(options, "Select");
33
33
  const controlId = useControlId(id, "select");
34
- const [value, setValue] = useControllableState({
34
+ const [storedValue, setValue] = useControllableState({
35
35
  ...(valueProp === undefined ? {} : { value: valueProp }),
36
36
  defaultValue,
37
37
  ...(onValueChange === undefined ? {} : { onChange: onValueChange }),
38
38
  });
39
- if (value !== "" &&
40
- !options.some((option) => option.value === value && !option.disabled)) {
41
- throw new RangeError(`Select value must identify an enabled option: ${value}`);
39
+ const initialized = useRef(false);
40
+ const available = storedValue === "" || options.some(option => option.value === storedValue && !option.disabled);
41
+ if ((!initialized.current || valueProp !== undefined) && !available) {
42
+ throw new RangeError(`Select value must identify an enabled option: ${storedValue}`);
42
43
  }
44
+ initialized.current = true;
45
+ // Defaults are validated once. Later list changes must reconcile an internal
46
+ // selection instead of crashing a form while its options are being refreshed.
47
+ const value = valueProp === undefined && !available
48
+ ? placeholder !== undefined ? "" : options.find(option => !option.disabled)?.value ?? ""
49
+ : storedValue;
50
+ useEffect(() => {
51
+ if (valueProp === undefined && value !== storedValue)
52
+ setValue(value);
53
+ }, [storedValue, value, valueProp, setValue]);
43
54
  return (_jsx(Field, { controlId: controlId, label: label, description: description, error: error, required: required, disabled: disabled, className: classNames("hjm-select", fieldClassName), ...(layoutStyle === undefined ? {} : { layoutStyle }), "data-size": size, "data-density": density, children: (controlProps) => (_jsxs("div", { className: "hjm-field__control hjm-select__control", children: [_jsxs("select", { ...props, ...controlProps, ref: ref, value: value, className: classNames("hjm-field__input hjm-select__native", className), onChange: (event) => setValue(event.target.value), children: [placeholder !== undefined ? (_jsx("option", { value: "", disabled: required, children: placeholder })) : null, options.map((option) => (_jsx("option", { value: option.value, disabled: option.disabled, children: option.label }, option.value)))] }), _jsx("span", { className: "hjm-select__indicator", "aria-hidden": "true", children: "\u2304" })] })) }));
44
55
  });
45
56
  function nextEnabled(items, current, direction) {
@@ -52,7 +63,7 @@ function nextEnabled(items, current, direction) {
52
63
  }
53
64
  return -1;
54
65
  }
55
- export const Combobox = forwardRef(function Combobox({ id, name, label, description, error, items, value: valueProp, defaultValue = "", onValueChange, inputValue: inputValueProp, defaultInputValue, onInputValueChange, open: openProp, defaultOpen = false, onOpenChange, emptyMessage, loading = false, loadingMessage, selectionRequiredMessage, openOnFocus = true, size = comboboxRecipe.defaults.size, density = comboboxRecipe.defaults.density, align = "start", fieldClassName, portalContainer, className, layoutStyle, disabled = false, required = false, autoComplete = "off", onFocus, onBlur, onKeyDown, ...props }, forwardedRef) {
66
+ export const Combobox = forwardRef(function Combobox({ id, name, label, description, error, items, value: valueProp, defaultValue = "", onValueChange, inputValue: inputValueProp, defaultInputValue, onInputValueChange, open: openProp, defaultOpen = false, onOpenChange, emptyMessage, loading = false, loadingMessage, selectionRequiredMessage, openOnFocus = true, size = comboboxRecipe.defaults.size, density = comboboxRecipe.defaults.density, align = "start", fieldClassName, portalContainer, className, layoutStyle, disabled = false, readOnly = false, required = false, autoComplete = "off", onFocus, onBlur, onKeyDown, ...props }, forwardedRef) {
56
67
  validateOptions(items, "Combobox");
57
68
  const controlId = useControlId(id, "combobox");
58
69
  const listboxId = `${controlId}-listbox`;
@@ -124,7 +135,7 @@ export const Combobox = forwardRef(function Combobox({ id, name, label, descript
124
135
  return -1;
125
136
  };
126
137
  const selectItem = (item) => {
127
- if (item.disabled)
138
+ if (item.disabled || disabled || readOnly || loading)
128
139
  return;
129
140
  setSelectedValue(item.value);
130
141
  setQuery(item.label);
@@ -142,7 +153,7 @@ export const Combobox = forwardRef(function Combobox({ id, name, label, descript
142
153
  };
143
154
  const handleKeyDown = (event) => {
144
155
  onKeyDown?.(event);
145
- if (event.defaultPrevented)
156
+ if (event.defaultPrevented || disabled || readOnly || event.nativeEvent.isComposing || event.keyCode === 229)
146
157
  return;
147
158
  if (loading &&
148
159
  ["ArrowDown", "ArrowUp", "Home", "End", "Enter"].includes(event.key)) {
@@ -185,13 +196,15 @@ export const Combobox = forwardRef(function Combobox({ id, name, label, descript
185
196
  if (!event.currentTarget.contains(event.relatedTarget) &&
186
197
  !listboxRef.current?.contains(event.relatedTarget))
187
198
  setOpen(false, "blur");
188
- }, children: [_jsxs("div", { className: "hjm-field__control hjm-combobox__control", children: [_jsx("input", { ...props, ...controlProps, ref: composeRefs(forwardedRef, inputRef), className: classNames("hjm-field__input hjm-combobox__input", className), value: query, role: "combobox", autoComplete: autoComplete, "aria-autocomplete": "list", "aria-controls": listboxId, "aria-expanded": open, "aria-activedescendant": open && activeItem ? `${controlId}-option-${activeIndex}` : undefined, onFocus: (event) => {
199
+ }, children: [_jsxs("div", { className: "hjm-field__control hjm-combobox__control", children: [_jsx("input", { ...props, ...controlProps, ref: composeRefs(forwardedRef, inputRef), className: classNames("hjm-field__input hjm-combobox__input", className), value: query, readOnly: readOnly, role: "combobox", autoComplete: autoComplete, "aria-autocomplete": "list", "aria-controls": listboxId, "aria-expanded": open, "aria-activedescendant": open && activeItem ? `${controlId}-option-${activeIndex}` : undefined, onFocus: (event) => {
189
200
  onFocus?.(event);
190
201
  if (!event.defaultPrevented &&
191
- openOnFocus &&
202
+ !disabled && !readOnly && openOnFocus &&
192
203
  !suppressFocusOpenRef.current)
193
204
  setOpen(true, "focus");
194
205
  }, onBlur: onBlur, onChange: (event) => {
206
+ if (disabled || readOnly)
207
+ return;
195
208
  setQuery(event.target.value);
196
209
  setSelectedValue("");
197
210
  setOpen(true, "input");