@purpur/library 9.10.0 → 10.0.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 (520) hide show
  1. package/CHANGELOG.json +124 -0
  2. package/CHANGELOG.md +53 -1
  3. package/dist/LICENSE.txt +270 -175
  4. package/dist/{RichText-BAVZadzi.js → RichText-B865Qkzj.js} +2 -2
  5. package/dist/{RichText-BAVZadzi.js.map → RichText-B865Qkzj.js.map} +1 -1
  6. package/dist/{RichText-D4vznH1B.mjs → RichText-CPkBwXNI.mjs} +3 -3
  7. package/dist/{RichText-D4vznH1B.mjs.map → RichText-CPkBwXNI.mjs.map} +1 -1
  8. package/dist/accordion-aEZas0k1.mjs +122 -0
  9. package/dist/accordion-aEZas0k1.mjs.map +1 -0
  10. package/dist/accordion-zwsF1oUj.js +2 -0
  11. package/dist/accordion-zwsF1oUj.js.map +1 -0
  12. package/dist/accordion.cjs.js +1 -1
  13. package/dist/accordion.es.js +1 -1
  14. package/dist/button-C5CYysw5.js +2 -0
  15. package/dist/button-C5CYysw5.js.map +1 -0
  16. package/dist/button-mHw_J7JU.mjs +106 -0
  17. package/dist/button-mHw_J7JU.mjs.map +1 -0
  18. package/dist/button.cjs.js +1 -1
  19. package/dist/button.es.js +1 -1
  20. package/dist/{calendar-Cru-p6gC.mjs → calendar-DTL_g0ue.mjs} +4 -14
  21. package/dist/{calendar-Cru-p6gC.mjs.map → calendar-DTL_g0ue.mjs.map} +1 -1
  22. package/dist/{calendar-DDR8CQYo.js → calendar-DVOrK53J.js} +2 -2
  23. package/dist/{calendar-DDR8CQYo.js.map → calendar-DVOrK53J.js.map} +1 -1
  24. package/dist/calendar.cjs.js +1 -1
  25. package/dist/calendar.es.js +1 -1
  26. package/dist/{card-t2ZkZ82G.mjs → card-C0yhMN5d.mjs} +3 -3
  27. package/dist/card-C0yhMN5d.mjs.map +1 -0
  28. package/dist/{card-pdsBEJif.js → card-CIlY38WI.js} +2 -2
  29. package/dist/card-CIlY38WI.js.map +1 -0
  30. package/dist/card.cjs.js +1 -1
  31. package/dist/card.es.js +1 -1
  32. package/dist/{carousel-BIKcwvYz.mjs → carousel-Dq9yzk_-.mjs} +2 -2
  33. package/dist/{carousel-BIKcwvYz.mjs.map → carousel-Dq9yzk_-.mjs.map} +1 -1
  34. package/dist/{carousel-DnSaLDZf.js → carousel-j-s6M1hu.js} +2 -2
  35. package/dist/{carousel-DnSaLDZf.js.map → carousel-j-s6M1hu.js.map} +1 -1
  36. package/dist/carousel.cjs.js +1 -1
  37. package/dist/carousel.es.js +1 -1
  38. package/dist/{chat-field-Wjvh2J6C.js → chat-field-CLAjIHlM.js} +2 -2
  39. package/dist/{chat-field-Wjvh2J6C.js.map → chat-field-CLAjIHlM.js.map} +1 -1
  40. package/dist/{chat-field-CVF4DooY.mjs → chat-field-nxFRXoQx.mjs} +2 -2
  41. package/dist/{chat-field-CVF4DooY.mjs.map → chat-field-nxFRXoQx.mjs.map} +1 -1
  42. package/dist/chat-field.cjs.js +1 -1
  43. package/dist/chat-field.es.js +1 -1
  44. package/dist/{chip-group-B775zvKD.js → chip-group-BLuG0MC6.js} +2 -2
  45. package/dist/{chip-group-B775zvKD.js.map → chip-group-BLuG0MC6.js.map} +1 -1
  46. package/dist/{chip-group-xuOe7nL3.mjs → chip-group-Bo4kJ8Vq.mjs} +2 -2
  47. package/dist/{chip-group-xuOe7nL3.mjs.map → chip-group-Bo4kJ8Vq.mjs.map} +1 -1
  48. package/dist/chip-group.cjs.js +1 -1
  49. package/dist/chip-group.es.js +1 -1
  50. package/dist/color-dot-BEE5rKco.js.map +1 -1
  51. package/dist/color-dot-Dz9yzVX3.mjs.map +1 -1
  52. package/dist/{comparison-table-Dtqxz8vL.js → comparison-table-CRWRijfG.js} +2 -2
  53. package/dist/{comparison-table-Dtqxz8vL.js.map → comparison-table-CRWRijfG.js.map} +1 -1
  54. package/dist/{comparison-table-D1evE0ri.mjs → comparison-table-DYaRaP9Z.mjs} +3 -3
  55. package/dist/{comparison-table-D1evE0ri.mjs.map → comparison-table-DYaRaP9Z.mjs.map} +1 -1
  56. package/dist/comparison-table.cjs.js +1 -1
  57. package/dist/comparison-table.es.js +1 -1
  58. package/dist/components/accordion/src/accordion-item.d.ts +3 -3
  59. package/dist/components/accordion/src/accordion-item.d.ts.map +1 -1
  60. package/dist/components/accordion/src/accordion.d.ts +3 -7
  61. package/dist/components/accordion/src/accordion.d.ts.map +1 -1
  62. package/dist/components/accordion/src/accordion.visual.fixtures.d.ts.map +1 -1
  63. package/dist/components/alert-badge/src/alert-badge.d.ts +1 -1
  64. package/dist/components/avatar/src/avatar.d.ts +1 -1
  65. package/dist/components/badge/src/badge.d.ts +1 -1
  66. package/dist/components/button/src/button.d.ts +7 -8
  67. package/dist/components/button/src/button.d.ts.map +1 -1
  68. package/dist/components/button/src/button.visual.fixtures.d.ts +1 -1
  69. package/dist/components/calendar/src/calendar.d.ts.map +1 -1
  70. package/dist/components/card/src/card-content-container.d.ts +1 -1
  71. package/dist/components/card/src/card-content.d.ts +1 -1
  72. package/dist/components/card/src/card-cta.d.ts +1 -1
  73. package/dist/components/card/src/card-heading.d.ts +4 -4
  74. package/dist/components/card/src/card-heading.d.ts.map +1 -1
  75. package/dist/components/card/src/card-media-layout.d.ts +1 -1
  76. package/dist/components/card/src/card-media.d.ts +1 -1
  77. package/dist/components/card/src/card-root.d.ts +1 -1
  78. package/dist/components/checkbox/src/checkbox.d.ts +1 -1
  79. package/dist/components/color-dot/src/color-dot.d.ts +2 -1
  80. package/dist/components/color-dot/src/color-dot.d.ts.map +1 -1
  81. package/dist/components/content-block/src/content-block-group.d.ts +1 -1
  82. package/dist/components/content-block/src/content-block.d.ts +3 -3
  83. package/dist/components/content-block/src/content-block.d.ts.map +1 -1
  84. package/dist/components/country-flag-icon/src/all-country-flag-assets.d.ts +0 -1
  85. package/dist/components/country-flag-icon/src/all-country-flag-assets.d.ts.map +1 -1
  86. package/dist/components/country-flag-icon/src/country-flag-icon.d.ts +2 -2
  87. package/dist/components/cta-link/src/cta-link.d.ts +10 -10
  88. package/dist/components/date-picker/src/date-picker.d.ts +5 -5
  89. package/dist/components/date-range-field/src/date-range-field.d.ts +2 -2
  90. package/dist/components/date-range-field/src/date-range-field.d.ts.map +1 -1
  91. package/dist/components/dismissable-chip-group/src/dismissable-chip-group-item.d.ts +1 -1
  92. package/dist/components/dismissable-chip-group/src/dismissable-chip-group.d.ts +4 -4
  93. package/dist/components/dismissable-chip-group/src/dismissable-chip-group.d.ts.map +1 -1
  94. package/dist/components/drawer/src/drawer-container.d.ts +1 -1
  95. package/dist/components/drawer/src/drawer-container.d.ts.map +1 -1
  96. package/dist/components/drawer/src/drawer-content.d.ts +2 -2
  97. package/dist/components/drawer/src/drawer-frame.d.ts +1 -1
  98. package/dist/components/drawer/src/drawer-handle.d.ts +1 -1
  99. package/dist/components/drawer/src/drawer-header.d.ts +1 -1
  100. package/dist/components/drawer/src/drawer-scroll-area.d.ts +1 -1
  101. package/dist/components/drawer/src/drawer.context.d.ts +2 -0
  102. package/dist/components/drawer/src/drawer.context.d.ts.map +1 -1
  103. package/dist/components/drawer/src/drawer.d.ts +2 -0
  104. package/dist/components/drawer/src/drawer.d.ts.map +1 -1
  105. package/dist/components/dropdown/src/dropdown-combobox.d.ts +2 -34
  106. package/dist/components/dropdown/src/dropdown-combobox.d.ts.map +1 -1
  107. package/dist/components/dropdown/src/dropdown-select.d.ts +2 -34
  108. package/dist/components/dropdown/src/dropdown-select.d.ts.map +1 -1
  109. package/dist/components/dropdown/src/dropdown-shared.d.ts +2 -1
  110. package/dist/components/dropdown/src/dropdown-shared.d.ts.map +1 -1
  111. package/dist/components/dropdown/src/dropdown.types.d.ts +24 -13
  112. package/dist/components/dropdown/src/dropdown.types.d.ts.map +1 -1
  113. package/dist/components/dropdown/src/useDropdown.d.ts +1 -1
  114. package/dist/components/dropdown/src/useDropdown.d.ts.map +1 -1
  115. package/dist/components/dropdown/src/useDropdownFilter.d.ts.map +1 -1
  116. package/dist/components/dropdown/src/useDropdownInput.d.ts.map +1 -1
  117. package/dist/components/field-error-text/src/field-error-text.d.ts +2 -2
  118. package/dist/components/file-upload/src/file-upload-button.d.ts +22 -0
  119. package/dist/components/file-upload/src/file-upload-button.d.ts.map +1 -0
  120. package/dist/components/file-upload/src/file-upload-drag-and-drop.d.ts +10 -0
  121. package/dist/components/file-upload/src/file-upload-drag-and-drop.d.ts.map +1 -0
  122. package/dist/components/file-upload/src/file-upload-file-name-label.d.ts +8 -0
  123. package/dist/components/file-upload/src/file-upload-file-name-label.d.ts.map +1 -0
  124. package/dist/components/file-upload/src/file-upload-icon.d.ts +8 -0
  125. package/dist/components/file-upload/src/file-upload-icon.d.ts.map +1 -0
  126. package/dist/components/file-upload/src/file-upload-types.d.ts +82 -0
  127. package/dist/components/file-upload/src/file-upload-types.d.ts.map +1 -0
  128. package/dist/components/file-upload/src/file-upload-utils.d.ts +7 -0
  129. package/dist/components/file-upload/src/file-upload-utils.d.ts.map +1 -0
  130. package/dist/components/file-upload/src/file-upload.d.ts +6 -0
  131. package/dist/components/file-upload/src/file-upload.d.ts.map +1 -0
  132. package/dist/components/file-upload/src/file-upload.visual.fixtures.d.ts +14 -0
  133. package/dist/components/file-upload/src/file-upload.visual.fixtures.d.ts.map +1 -0
  134. package/dist/components/footer/src/footer-navigation.d.ts +1 -1
  135. package/dist/components/footer/src/footer.d.ts +3 -3
  136. package/dist/components/grid/src/grid.item.d.ts +1 -1
  137. package/dist/components/heading/src/heading.d.ts +20 -2
  138. package/dist/components/heading/src/heading.d.ts.map +1 -1
  139. package/dist/components/hero-banner/src/hero-banner-actions.d.ts +1 -1
  140. package/dist/components/hero-banner/src/hero-banner-media.d.ts +1 -1
  141. package/dist/components/hero-banner/src/hero-banner-types.d.ts +2 -2
  142. package/dist/components/hero-banner/src/hero-banner-types.d.ts.map +1 -1
  143. package/dist/components/hero-banner/src/hero-banner.d.ts +1 -1
  144. package/dist/components/hero-banner/src/hero-banner.d.ts.map +1 -1
  145. package/dist/components/icon/src/icon.d.ts +2 -2
  146. package/dist/components/label/src/label.d.ts +1 -1
  147. package/dist/components/listbox/src/listbox-item.d.ts +1 -1
  148. package/dist/components/loading/src/loading-illustrative.d.ts +1 -1
  149. package/dist/components/logo/src/logo.types.d.ts +2 -2
  150. package/dist/components/modal/src/modal-content.d.ts +1 -1
  151. package/dist/components/modal/src/modal-content.d.ts.map +1 -1
  152. package/dist/components/notification-banner/src/notification-banner.d.ts +5 -5
  153. package/dist/components/notification-banner/src/notification-banner.d.ts.map +1 -1
  154. package/dist/components/pagination/src/pagination-page-selector.d.ts +2 -2
  155. package/dist/components/pagination/src/pagination-page-trigger.d.ts +1 -1
  156. package/dist/components/pagination/src/pagination-step-trigger.d.ts +2 -2
  157. package/dist/components/pagination/src/pagination-truncation-separator.d.ts +1 -1
  158. package/dist/components/pagination/src/types.d.ts +1 -1
  159. package/dist/components/pagination/src/use-page-options.hook.d.ts +1 -1
  160. package/dist/components/pagination/src/use-page-size-options.hook.d.ts +1 -1
  161. package/dist/components/password-field/src/password-strength-indicator.d.ts +1 -1
  162. package/dist/components/password-field/src/password-strength.d.ts +2 -2
  163. package/dist/components/promotion-card/src/promotion-card.d.ts +9 -9
  164. package/dist/components/promotion-card/src/promotion-card.d.ts.map +1 -1
  165. package/dist/components/quantity-selector/src/quantity-selector-button.d.ts +2 -3
  166. package/dist/components/quantity-selector/src/quantity-selector-button.d.ts.map +1 -1
  167. package/dist/components/quantity-selector/src/quantity-selector.d.ts +2 -5
  168. package/dist/components/quantity-selector/src/quantity-selector.d.ts.map +1 -1
  169. package/dist/components/radio-card-group/src/radio-card-group.d.ts +2 -2
  170. package/dist/components/radio-card-group/src/radio-card-item.d.ts +1 -1
  171. package/dist/components/rich-text/src/types.d.ts +3 -3
  172. package/dist/components/search-field/src/search-field.d.ts +6 -6
  173. package/dist/components/skeleton/src/skeleton.d.ts +1 -1
  174. package/dist/components/spinner/src/spinner.d.ts +2 -2
  175. package/dist/components/stepper/src/stepper-container.d.ts +1 -1
  176. package/dist/components/stepper/src/stepper-content.d.ts +1 -1
  177. package/dist/components/stepper/src/{stepper-button.d.ts → stepper-link.d.ts} +5 -4
  178. package/dist/components/stepper/src/stepper-link.d.ts.map +1 -0
  179. package/dist/components/stepper/src/stepper-nav-items.d.ts +1 -0
  180. package/dist/components/stepper/src/stepper-nav-items.d.ts.map +1 -1
  181. package/dist/components/stepper/src/stepper.d.ts.map +1 -1
  182. package/dist/components/stepper/src/types.d.ts +2 -2
  183. package/dist/components/stepper/src/types.d.ts.map +1 -1
  184. package/dist/components/stepper/src/use-content-focus.hook.d.ts.map +1 -1
  185. package/dist/components/table/src/cell-types/button-group-cell.d.ts +3 -3
  186. package/dist/components/table/src/draggable-table.d.ts.map +1 -1
  187. package/dist/components/table/src/table-column-header-cell.d.ts +1 -2
  188. package/dist/components/table/src/table-column-header-cell.d.ts.map +1 -1
  189. package/dist/components/table/src/table-content.d.ts +1 -1
  190. package/dist/components/table/src/table-headers.d.ts +2 -3
  191. package/dist/components/table/src/table-headers.d.ts.map +1 -1
  192. package/dist/components/table/src/table-settings-drawer.d.ts +11 -20
  193. package/dist/components/table/src/table-settings-drawer.d.ts.map +1 -1
  194. package/dist/components/table/src/table.d.ts +2 -9
  195. package/dist/components/table/src/table.d.ts.map +1 -1
  196. package/dist/components/table/src/test-utils/helpers.d.ts +10 -19
  197. package/dist/components/table/src/test-utils/helpers.d.ts.map +1 -1
  198. package/dist/components/table/src/test-utils/table-data.d.ts +3 -3
  199. package/dist/components/tabs/src/tab-content.d.ts +3 -1
  200. package/dist/components/tabs/src/tab-content.d.ts.map +1 -1
  201. package/dist/components/text-area/src/text-area.d.ts +1 -1
  202. package/dist/components/text-field/src/text-field-ai.d.ts +4 -4
  203. package/dist/components/text-field/src/text-field-base.d.ts +4 -4
  204. package/dist/components/text-field/src/text-field.d.ts +5 -5
  205. package/dist/components/text-spacing/src/text-spacing.d.ts +2 -2
  206. package/dist/components/tooltip/src/tooltip.d.ts +4 -6
  207. package/dist/components/tooltip/src/tooltip.d.ts.map +1 -1
  208. package/dist/components-metadata.js +20 -10
  209. package/dist/{content-block-CDMrz41K.mjs → content-block-BCM0I3Y2.mjs} +2 -2
  210. package/dist/content-block-BCM0I3Y2.mjs.map +1 -0
  211. package/dist/{content-block-DyYAnL2e.js → content-block-DQppQumZ.js} +2 -2
  212. package/dist/content-block-DQppQumZ.js.map +1 -0
  213. package/dist/content-block.cjs.js +1 -1
  214. package/dist/content-block.es.js +1 -1
  215. package/dist/core.esm-BmIwrKkJ.js +6 -0
  216. package/dist/core.esm-BmIwrKkJ.js.map +1 -0
  217. package/dist/core.esm-CKGHpLM_.mjs +2892 -0
  218. package/dist/core.esm-CKGHpLM_.mjs.map +1 -0
  219. package/dist/country-flag-icon/LICENSE.txt +11 -0
  220. package/dist/country-flag-icon/all-country-flag-assets.cjs.js +1 -1
  221. package/dist/country-flag-icon/all-country-flag-assets.cjs.js.map +1 -1
  222. package/dist/country-flag-icon/all-country-flag-assets.d.ts +0 -1
  223. package/dist/country-flag-icon/all-country-flag-assets.d.ts.map +1 -1
  224. package/dist/country-flag-icon/all-country-flag-assets.es.js +0 -1
  225. package/dist/country-flag-icon/all-country-flag-assets.es.js.map +1 -1
  226. package/dist/country-flag-icon/dynamic-country-flag-icon.cjs.js +2 -0
  227. package/dist/country-flag-icon/dynamic-country-flag-icon.cjs.js.map +1 -0
  228. package/dist/country-flag-icon/dynamic-country-flag-icon.es.js +366 -0
  229. package/dist/country-flag-icon/dynamic-country-flag-icon.es.js.map +1 -0
  230. package/dist/{date-field-hA79n6mP.js → date-field-CtpWDaSh.js} +2 -2
  231. package/dist/{date-field-hA79n6mP.js.map → date-field-CtpWDaSh.js.map} +1 -1
  232. package/dist/{date-field-DVp_RMNm.mjs → date-field-_rCuf15v.mjs} +2 -2
  233. package/dist/{date-field-DVp_RMNm.mjs.map → date-field-_rCuf15v.mjs.map} +1 -1
  234. package/dist/date-field.cjs.js +1 -1
  235. package/dist/date-field.es.js +1 -1
  236. package/dist/{date-picker-Dzoo_hhQ.js → date-picker-BYlszX1W.js} +2 -2
  237. package/dist/{date-picker-Dzoo_hhQ.js.map → date-picker-BYlszX1W.js.map} +1 -1
  238. package/dist/{date-picker-B8ta-Q8V.mjs → date-picker-sqcNAplg.mjs} +6 -6
  239. package/dist/{date-picker-B8ta-Q8V.mjs.map → date-picker-sqcNAplg.mjs.map} +1 -1
  240. package/dist/date-picker.cjs.js +1 -1
  241. package/dist/date-picker.es.js +1 -1
  242. package/dist/date-range-field-B33XeBW8.js +2 -0
  243. package/dist/date-range-field-B33XeBW8.js.map +1 -0
  244. package/dist/{date-range-field-BZUjfftV.mjs → date-range-field-BmjQeiOv.mjs} +23 -23
  245. package/dist/date-range-field-BmjQeiOv.mjs.map +1 -0
  246. package/dist/date-range-field.cjs.js +1 -1
  247. package/dist/date-range-field.es.js +1 -1
  248. package/dist/{dismissable-chip-group-2updhyuR.js → dismissable-chip-group-5ALErhD2.js} +2 -2
  249. package/dist/dismissable-chip-group-5ALErhD2.js.map +1 -0
  250. package/dist/{dismissable-chip-group-Cfs2s2BH.mjs → dismissable-chip-group-DMNU7g5e.mjs} +3 -3
  251. package/dist/dismissable-chip-group-DMNU7g5e.mjs.map +1 -0
  252. package/dist/dismissable-chip-group.cjs.js +1 -1
  253. package/dist/dismissable-chip-group.es.js +1 -1
  254. package/dist/{drawer-cIUx6WSZ.mjs → drawer-Chx3H8EU.mjs} +241 -233
  255. package/dist/drawer-Chx3H8EU.mjs.map +1 -0
  256. package/dist/drawer-oFJcxW58.js +2 -0
  257. package/dist/drawer-oFJcxW58.js.map +1 -0
  258. package/dist/drawer.cjs.js +1 -1
  259. package/dist/drawer.es.js +1 -1
  260. package/dist/dropdown-Bn7WvsL2.js +2 -0
  261. package/dist/dropdown-Bn7WvsL2.js.map +1 -0
  262. package/dist/dropdown-CrufJnb4.mjs +945 -0
  263. package/dist/dropdown-CrufJnb4.mjs.map +1 -0
  264. package/dist/dropdown.cjs.js +1 -1
  265. package/dist/dropdown.es.js +1 -1
  266. package/dist/file-upload-Ctw6LCTU.mjs +589 -0
  267. package/dist/file-upload-Ctw6LCTU.mjs.map +1 -0
  268. package/dist/file-upload-MvNuX4ks.js +2 -0
  269. package/dist/file-upload-MvNuX4ks.js.map +1 -0
  270. package/dist/file-upload.cjs.js +2 -0
  271. package/dist/file-upload.cjs.js.map +1 -0
  272. package/dist/file-upload.es.js +5 -0
  273. package/dist/file-upload.es.js.map +1 -0
  274. package/dist/{floating-ui.react-dom-EredA301.mjs → floating-ui.react-dom-1kwKo24Z.mjs} +15 -15
  275. package/dist/{floating-ui.react-dom-EredA301.mjs.map → floating-ui.react-dom-1kwKo24Z.mjs.map} +1 -1
  276. package/dist/footer-Bbemct3Z.js +2 -0
  277. package/dist/footer-Bbemct3Z.js.map +1 -0
  278. package/dist/{footer-D-2b7UIB.mjs → footer-DkVmTd-f.mjs} +25 -25
  279. package/dist/footer-DkVmTd-f.mjs.map +1 -0
  280. package/dist/footer.cjs.js +1 -1
  281. package/dist/footer.es.js +1 -1
  282. package/dist/{heading-xwBuT_-9.mjs → heading-BG7JTFO1.mjs} +25 -24
  283. package/dist/heading-BG7JTFO1.mjs.map +1 -0
  284. package/dist/{heading-drD5ugCC.js → heading-BPeRwNYu.js} +2 -2
  285. package/dist/heading-BPeRwNYu.js.map +1 -0
  286. package/dist/heading.cjs.js +1 -1
  287. package/dist/heading.es.js +6 -5
  288. package/dist/{hero-banner-n9K-Jsdz.mjs → hero-banner-ChDoFRhq.mjs} +4 -4
  289. package/dist/hero-banner-ChDoFRhq.mjs.map +1 -0
  290. package/dist/{hero-banner--v-ezYMr.js → hero-banner-Mag1OwL4.js} +2 -2
  291. package/dist/hero-banner-Mag1OwL4.js.map +1 -0
  292. package/dist/hero-banner.cjs.js +1 -1
  293. package/dist/hero-banner.es.js +1 -1
  294. package/dist/index-BPY_9ddu.js +2 -0
  295. package/dist/index-BPY_9ddu.js.map +1 -0
  296. package/dist/index-Fewa56cA.mjs +440 -0
  297. package/dist/index-Fewa56cA.mjs.map +1 -0
  298. package/dist/libraries/library/src/calendar.d.ts +1 -1
  299. package/dist/libraries/library/src/card.d.ts +1 -1
  300. package/dist/libraries/library/src/container.d.ts +1 -1
  301. package/dist/libraries/library/src/content-block.d.ts +1 -1
  302. package/dist/libraries/library/src/dismissable-chip-group.d.ts +1 -1
  303. package/dist/libraries/library/src/drawer.d.ts +1 -1
  304. package/dist/libraries/library/src/file-upload.d.ts +6 -0
  305. package/dist/libraries/library/src/file-upload.d.ts.map +1 -0
  306. package/dist/libraries/library/src/library.d.ts +2 -1
  307. package/dist/libraries/library/src/library.d.ts.map +1 -1
  308. package/dist/libraries/library/src/notification-banner.d.ts +1 -1
  309. package/dist/libraries/library/src/notification.d.ts +1 -1
  310. package/dist/libraries/library/src/password-field.d.ts +6 -2
  311. package/dist/libraries/library/src/password-field.d.ts.map +1 -1
  312. package/dist/libraries/library/src/radio-button-group.d.ts +1 -1
  313. package/dist/libraries/library/src/radio-card-group.d.ts +1 -1
  314. package/dist/libraries/library/src/spinner.d.ts +1 -1
  315. package/dist/libraries/library/src/stepper.d.ts +1 -1
  316. package/dist/libraries/library/src/tooltip.d.ts +1 -1
  317. package/dist/libraries/library/src/visually-hidden.d.ts +1 -1
  318. package/dist/libraries/theme/src/ThemeProvider.d.ts +1 -1
  319. package/dist/library.cjs.js +1 -1
  320. package/dist/library.es.js +603 -601
  321. package/dist/library.es.js.map +1 -1
  322. package/dist/link-Dzqd0QuD.js +2 -0
  323. package/dist/{link-DhWVrkTz.js.map → link-Dzqd0QuD.js.map} +1 -1
  324. package/dist/link-ccCdDvBc.mjs +72 -0
  325. package/dist/{link-DY5WLpyc.mjs.map → link-ccCdDvBc.mjs.map} +1 -1
  326. package/dist/link.cjs.js +1 -1
  327. package/dist/link.es.js +1 -1
  328. package/dist/main-B501z9Ql.js +2 -0
  329. package/dist/main-B501z9Ql.js.map +1 -0
  330. package/dist/main-L71Sqg3s.mjs +1016 -0
  331. package/dist/main-L71Sqg3s.mjs.map +1 -0
  332. package/dist/{modal-D0Qxrvx5.js → modal-CXOYUsJm.js} +2 -2
  333. package/dist/modal-CXOYUsJm.js.map +1 -0
  334. package/dist/{modal-Bu1Zv5Ic.mjs → modal-Pwvhrzn-.mjs} +31 -31
  335. package/dist/modal-Pwvhrzn-.mjs.map +1 -0
  336. package/dist/modal.cjs.js +1 -1
  337. package/dist/modal.es.js +1 -1
  338. package/dist/{notification-D2oClkX2.js → notification-BkM2vLzI.js} +2 -2
  339. package/dist/{notification-D2oClkX2.js.map → notification-BkM2vLzI.js.map} +1 -1
  340. package/dist/{notification-DiVdy6E_.mjs → notification-Cbn0UN1p.mjs} +3 -3
  341. package/dist/{notification-DiVdy6E_.mjs.map → notification-Cbn0UN1p.mjs.map} +1 -1
  342. package/dist/notification-banner-B9RhXAZ8.js +2 -0
  343. package/dist/notification-banner-B9RhXAZ8.js.map +1 -0
  344. package/dist/{notification-banner-CZTQZ5Le.mjs → notification-banner-C4NVekCZ.mjs} +5 -5
  345. package/dist/notification-banner-C4NVekCZ.mjs.map +1 -0
  346. package/dist/notification-banner.cjs.js +1 -1
  347. package/dist/notification-banner.es.js +1 -1
  348. package/dist/notification.cjs.js +1 -1
  349. package/dist/notification.es.js +1 -1
  350. package/dist/password-field-Cy_E-D_G.mjs +200 -0
  351. package/dist/password-field-Cy_E-D_G.mjs.map +1 -0
  352. package/dist/password-field-lKyWHjQS.js +2 -0
  353. package/dist/password-field-lKyWHjQS.js.map +1 -0
  354. package/dist/password-field.cjs.js +2 -0
  355. package/dist/password-field.cjs.js.map +1 -0
  356. package/dist/password-field.es.js +6 -0
  357. package/dist/password-field.es.js.map +1 -0
  358. package/dist/popover-B6ntmuEK.mjs +614 -0
  359. package/dist/popover-B6ntmuEK.mjs.map +1 -0
  360. package/dist/popover-DJHMEFXP.js +2 -0
  361. package/dist/popover-DJHMEFXP.js.map +1 -0
  362. package/dist/popover.cjs.js +1 -1
  363. package/dist/popover.es.js +1 -1
  364. package/dist/{product-card-CxfHfJVV.mjs → product-card-BMseoNrG.mjs} +3 -3
  365. package/dist/{product-card-CxfHfJVV.mjs.map → product-card-BMseoNrG.mjs.map} +1 -1
  366. package/dist/{product-card-XxBwuxM-.js → product-card-D0jX5-up.js} +2 -2
  367. package/dist/{product-card-XxBwuxM-.js.map → product-card-D0jX5-up.js.map} +1 -1
  368. package/dist/product-card.cjs.js +1 -1
  369. package/dist/product-card.es.js +1 -1
  370. package/dist/{promotion-card-C1UoxzcV.js → promotion-card-B3mz__m7.js} +2 -2
  371. package/dist/promotion-card-B3mz__m7.js.map +1 -0
  372. package/dist/{promotion-card-CooYPpFo.mjs → promotion-card-Co6qAkTZ.mjs} +5 -5
  373. package/dist/promotion-card-Co6qAkTZ.mjs.map +1 -0
  374. package/dist/promotion-card.cjs.js +1 -1
  375. package/dist/promotion-card.es.js +1 -1
  376. package/dist/purpur.css +1 -1
  377. package/dist/quantity-selector-Cy0aJGGX.js +2 -0
  378. package/dist/quantity-selector-Cy0aJGGX.js.map +1 -0
  379. package/dist/quantity-selector-k6ZaVrk1.mjs +162 -0
  380. package/dist/quantity-selector-k6ZaVrk1.mjs.map +1 -0
  381. package/dist/quantity-selector.cjs.js +1 -1
  382. package/dist/quantity-selector.es.js +2 -3
  383. package/dist/{radio-button-group-D_F6kWD6.mjs → radio-button-group-DjiTo3b1.mjs} +2 -2
  384. package/dist/{radio-button-group-D_F6kWD6.mjs.map → radio-button-group-DjiTo3b1.mjs.map} +1 -1
  385. package/dist/{radio-button-group-CdUrC7h9.js → radio-button-group-uCRGh1H5.js} +2 -2
  386. package/dist/{radio-button-group-CdUrC7h9.js.map → radio-button-group-uCRGh1H5.js.map} +1 -1
  387. package/dist/radio-button-group.cjs.js +1 -1
  388. package/dist/radio-button-group.es.js +1 -1
  389. package/dist/{radio-card-group-B9_jOJnM.mjs → radio-card-group-DoM7qYO1.mjs} +2 -2
  390. package/dist/{radio-card-group-B9_jOJnM.mjs.map → radio-card-group-DoM7qYO1.mjs.map} +1 -1
  391. package/dist/{radio-card-group-DcdGkfOp.js → radio-card-group-_9wJC-s3.js} +2 -2
  392. package/dist/{radio-card-group-DcdGkfOp.js.map → radio-card-group-_9wJC-s3.js.map} +1 -1
  393. package/dist/radio-card-group.cjs.js +1 -1
  394. package/dist/radio-card-group.es.js +1 -1
  395. package/dist/rich-text.cjs.js +1 -1
  396. package/dist/rich-text.es.js +1 -1
  397. package/dist/{search-field-afhtC6q5.mjs → search-field-BTJtRyw5.mjs} +3 -3
  398. package/dist/{search-field-afhtC6q5.mjs.map → search-field-BTJtRyw5.mjs.map} +1 -1
  399. package/dist/{search-field-WJBtiK0K.js → search-field-nzVXak1a.js} +2 -2
  400. package/dist/{search-field-WJBtiK0K.js.map → search-field-nzVXak1a.js.map} +1 -1
  401. package/dist/search-field.cjs.js +1 -1
  402. package/dist/search-field.es.js +1 -1
  403. package/dist/stepper-D59T-Y2_.mjs +469 -0
  404. package/dist/stepper-D59T-Y2_.mjs.map +1 -0
  405. package/dist/stepper-Dao4XaDV.js +2 -0
  406. package/dist/stepper-Dao4XaDV.js.map +1 -0
  407. package/dist/stepper.cjs.js +1 -1
  408. package/dist/stepper.es.js +1 -1
  409. package/dist/table-DRSgesQ4.mjs +4545 -0
  410. package/dist/table-DRSgesQ4.mjs.map +1 -0
  411. package/dist/table-zBs9JALh.js +5 -0
  412. package/dist/table-zBs9JALh.js.map +1 -0
  413. package/dist/table.cjs.js +1 -1
  414. package/dist/table.es.js +1 -1
  415. package/dist/tabs-D2__wbCs.js +2 -0
  416. package/dist/tabs-D2__wbCs.js.map +1 -0
  417. package/dist/tabs-DOG5g2wf.mjs +440 -0
  418. package/dist/tabs-DOG5g2wf.mjs.map +1 -0
  419. package/dist/tabs.cjs.js +1 -1
  420. package/dist/tabs.es.js +1 -1
  421. package/dist/{text-field-VW8ObP83.js → text-field-BSgqJjpv.js} +2 -2
  422. package/dist/text-field-BSgqJjpv.js.map +1 -0
  423. package/dist/{text-field-D0e-cRbG.mjs → text-field-MQHeITxy.mjs} +3 -3
  424. package/dist/text-field-MQHeITxy.mjs.map +1 -0
  425. package/dist/text-field.cjs.js +1 -1
  426. package/dist/text-field.es.js +1 -1
  427. package/dist/tooltip-DeP1UsPW.js +2 -0
  428. package/dist/{tooltip-B-11qk-0.js.map → tooltip-DeP1UsPW.js.map} +1 -1
  429. package/dist/{tooltip-DngYHn5W.mjs → tooltip-bqdd2lJL.mjs} +347 -309
  430. package/dist/{tooltip-DngYHn5W.mjs.map → tooltip-bqdd2lJL.mjs.map} +1 -1
  431. package/dist/tooltip.cjs.js +1 -1
  432. package/dist/tooltip.es.js +1 -1
  433. package/package.json +21 -26
  434. package/scripts/generate.mts +1 -4
  435. package/src/aliases.ts +8 -4
  436. package/src/entries.js +2 -1
  437. package/src/{autocomplete.ts → file-upload.ts} +1 -1
  438. package/src/library.ts +2 -2
  439. package/src/password-field.ts +0 -1
  440. package/src/purpur.css +4 -0
  441. package/dist/accordion-B6OoQ4uZ.mjs +0 -128
  442. package/dist/accordion-B6OoQ4uZ.mjs.map +0 -1
  443. package/dist/accordion-BfpN5h4C.js +0 -2
  444. package/dist/accordion-BfpN5h4C.js.map +0 -1
  445. package/dist/autocomplete-BX1KDZqL.js +0 -2
  446. package/dist/autocomplete-BX1KDZqL.js.map +0 -1
  447. package/dist/autocomplete-CmLzmWp4.mjs +0 -228
  448. package/dist/autocomplete-CmLzmWp4.mjs.map +0 -1
  449. package/dist/autocomplete.cjs.js +0 -2
  450. package/dist/autocomplete.cjs.js.map +0 -1
  451. package/dist/autocomplete.es.js +0 -6
  452. package/dist/autocomplete.es.js.map +0 -1
  453. package/dist/button-4-yWOgtD.mjs +0 -109
  454. package/dist/button-4-yWOgtD.mjs.map +0 -1
  455. package/dist/button-DmybVApa.js +0 -2
  456. package/dist/button-DmybVApa.js.map +0 -1
  457. package/dist/card-pdsBEJif.js.map +0 -1
  458. package/dist/card-t2ZkZ82G.mjs.map +0 -1
  459. package/dist/components/autocomplete/src/autocomplete.d.ts +0 -18
  460. package/dist/components/autocomplete/src/autocomplete.d.ts.map +0 -1
  461. package/dist/components/autocomplete/src/useAutocomplete.d.ts +0 -59
  462. package/dist/components/autocomplete/src/useAutocomplete.d.ts.map +0 -1
  463. package/dist/components/autocomplete/src/utils.d.ts +0 -7
  464. package/dist/components/autocomplete/src/utils.d.ts.map +0 -1
  465. package/dist/components/stepper/src/stepper-button.d.ts.map +0 -1
  466. package/dist/content-block-CDMrz41K.mjs.map +0 -1
  467. package/dist/content-block-DyYAnL2e.js.map +0 -1
  468. package/dist/date-range-field-BZUjfftV.mjs.map +0 -1
  469. package/dist/date-range-field-Dqqgj41u.js +0 -2
  470. package/dist/date-range-field-Dqqgj41u.js.map +0 -1
  471. package/dist/dismissable-chip-group-2updhyuR.js.map +0 -1
  472. package/dist/dismissable-chip-group-Cfs2s2BH.mjs.map +0 -1
  473. package/dist/drawer-DyLQfvEh.js +0 -2
  474. package/dist/drawer-DyLQfvEh.js.map +0 -1
  475. package/dist/drawer-cIUx6WSZ.mjs.map +0 -1
  476. package/dist/dropdown-C8VsfTQw.mjs +0 -936
  477. package/dist/dropdown-C8VsfTQw.mjs.map +0 -1
  478. package/dist/dropdown-p4R2yCnJ.js +0 -2
  479. package/dist/dropdown-p4R2yCnJ.js.map +0 -1
  480. package/dist/footer-Cn1-zG1v.js +0 -2
  481. package/dist/footer-Cn1-zG1v.js.map +0 -1
  482. package/dist/footer-D-2b7UIB.mjs.map +0 -1
  483. package/dist/heading-drD5ugCC.js.map +0 -1
  484. package/dist/heading-xwBuT_-9.mjs.map +0 -1
  485. package/dist/hero-banner--v-ezYMr.js.map +0 -1
  486. package/dist/hero-banner-n9K-Jsdz.mjs.map +0 -1
  487. package/dist/libraries/library/src/autocomplete.d.ts +0 -6
  488. package/dist/libraries/library/src/autocomplete.d.ts.map +0 -1
  489. package/dist/link-DY5WLpyc.mjs +0 -72
  490. package/dist/link-DhWVrkTz.js +0 -2
  491. package/dist/modal-Bu1Zv5Ic.mjs.map +0 -1
  492. package/dist/modal-D0Qxrvx5.js.map +0 -1
  493. package/dist/notification-banner-BxHwTFnH.js +0 -2
  494. package/dist/notification-banner-BxHwTFnH.js.map +0 -1
  495. package/dist/notification-banner-CZTQZ5Le.mjs.map +0 -1
  496. package/dist/popover-CY75TnbA.js +0 -2
  497. package/dist/popover-CY75TnbA.js.map +0 -1
  498. package/dist/popover-wiiwtqWE.mjs +0 -1043
  499. package/dist/popover-wiiwtqWE.mjs.map +0 -1
  500. package/dist/promotion-card-C1UoxzcV.js.map +0 -1
  501. package/dist/promotion-card-CooYPpFo.mjs.map +0 -1
  502. package/dist/quantity-selector-BEYMDsBM.js +0 -2
  503. package/dist/quantity-selector-BEYMDsBM.js.map +0 -1
  504. package/dist/quantity-selector-Cp-e5xKJ.mjs +0 -172
  505. package/dist/quantity-selector-Cp-e5xKJ.mjs.map +0 -1
  506. package/dist/stepper-20s8dnPA.mjs +0 -449
  507. package/dist/stepper-20s8dnPA.mjs.map +0 -1
  508. package/dist/stepper-VDiR2I8F.js +0 -2
  509. package/dist/stepper-VDiR2I8F.js.map +0 -1
  510. package/dist/table-B5ZitZoL.js +0 -9
  511. package/dist/table-B5ZitZoL.js.map +0 -1
  512. package/dist/table-CNIL-60s.mjs +0 -7428
  513. package/dist/table-CNIL-60s.mjs.map +0 -1
  514. package/dist/tabs-Bye5lgZ1.mjs +0 -424
  515. package/dist/tabs-Bye5lgZ1.mjs.map +0 -1
  516. package/dist/tabs-D-nfZHIA.js +0 -2
  517. package/dist/tabs-D-nfZHIA.js.map +0 -1
  518. package/dist/text-field-D0e-cRbG.mjs.map +0 -1
  519. package/dist/text-field-VW8ObP83.js.map +0 -1
  520. package/dist/tooltip-B-11qk-0.js +0 -2
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./carousel-DnSaLDZf.js");exports.Carousel=e.Carousel;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./carousel-j-s6M1hu.js");exports.Carousel=e.Carousel;
2
2
  //# sourceMappingURL=carousel.cjs.js.map
@@ -1,4 +1,4 @@
1
- import { C as a } from "./carousel-BIKcwvYz.mjs";
1
+ import { C as a } from "./carousel-Dq9yzk_-.mjs";
2
2
  export {
3
3
  a as Carousel
4
4
  };
@@ -1,2 +1,2 @@
1
- "use strict";const l=require("react/jsx-runtime"),s=require("react"),Q=require("./button-DmybVApa.js"),j=require("./icon.es-j3eRib6d.js"),W=require("./bind-DeUYJ6m9.js"),X={name:"send",svg:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor"><path fill-rule="evenodd" d="M1.54 2.149a.9.9 0 0 1 .97-.131l19.514 9.212a.9.9 0 0 1 0 1.628L2.51 22.071A.9.9 0 0 1 1.263 21l2.664-8.957-2.664-8.956a.9.9 0 0 1 .277-.94Zm3.997 10.795-1.974 6.64 14.062-6.64H5.537Zm12.088-1.8H5.537L3.563 4.505l14.062 6.64Z" clip-rule="evenodd"/></svg>',keywords:["send"],category:"action"},T={name:"tv-stop",svg:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor"><path d="M19 19H5V5h14v14Z"/><path fill-rule="evenodd" d="M19.9 19a.9.9 0 0 1-.9.9H5a.9.9 0 0 1-.9-.9V5a.9.9 0 0 1 .9-.9h14a.9.9 0 0 1 .9.9v14Zm-1.8-.9V5.9H5.9v12.2h12.2Z" clip-rule="evenodd"/></svg>',keywords:["tv-stop"],category:"action"},I={"purpur-chat-field":"_purpur-chat-field_16tq2_1","purpur-chat-field--negative":"_purpur-chat-field--negative_16tq2_13","purpur-chat-field__frame":"_purpur-chat-field__frame_16tq2_16","purpur-chat-field__frame--negative":"_purpur-chat-field__frame--negative_16tq2_20","purpur-chat-field--filled":"_purpur-chat-field--filled_16tq2_34","purpur-chat-field__textarea":"_purpur-chat-field__textarea_16tq2_34","purpur-chat-field__textarea--negative":"_purpur-chat-field__textarea--negative_16tq2_37","purpur-chat-field__action":"_purpur-chat-field__action_16tq2_80"},f=W.c.bind(I),ee=(...a)=>{const i=a.filter(Boolean);return i.length<=1?i[0]||null:o=>{for(const n of i)typeof n=="function"?n(o):n&&(n.current=o)}},t="purpur-chat-field",k=s.forwardRef(({["data-testid"]:a,value:i,placeholder:o,textareaAriaLabel:n,generating:u=!1,negative:c=!1,sendAriaLabel:V,sendIcon:R,stopAriaLabel:A,rows:p=1,maxRows:x=4,onChange:B,onSend:m,onStopClick:F,actionButtonType:h="button",textareaProps:L,className:N},Z)=>{const _=s.useRef(null),{["aria-label"]:D,["aria-labelledby"]:b,defaultValue:g,...S}=L??{},[z,E]=s.useState(()=>typeof g=="string"||typeof g=="number"?String(g):""),v=i??z,d=!!v.length,K=D??(b?void 0:n??o),y=s.useCallback(()=>{const e=_.current;if(!e)return;e.style.height="auto",e.style.overflowY="hidden";const r=getComputedStyle(e),w=parseFloat(r.lineHeight)||20,C=parseFloat(r.paddingTop)||0,H=parseFloat(r.paddingBottom)||0,J=w*p+C+H,$=w*x+C+H;e.scrollHeight>$?(e.style.height=`${$}px`,e.style.overflowY="auto"):e.scrollHeight>J&&(e.style.height=`${e.scrollHeight}px`)},[p,x]);s.useEffect(()=>{y()},[v,y]);const q=s.useCallback(e=>{if(d){if(h==="submit"){const r=_.current?.form;if(e==="keyboard"&&r){r.requestSubmit();return}if(e==="button"&&r)return}m()}},[h,d,m]),M=e=>{i===void 0&&E(e.target.value),B(e)},P=e=>{e.key==="Enter"&&!e.shiftKey&&!e.nativeEvent.isComposing&&(e.preventDefault(),q("keyboard"))},Y=()=>{if(u){F();return}q("button")},O=u||!d?"button":h,U=f([N,t,{[`${t}--filled`]:d,[`${t}--negative`]:c}]),G=u?l.jsx(j.b,{size:"xs",svg:T}):R??l.jsx(j.b,{size:"xs",svg:X});return l.jsxs("div",{className:U,"data-testid":a,children:[l.jsx("textarea",{...S,ref:ee(Z,_),className:f(`${t}__textarea`,{[`${t}__textarea--negative`]:c}),"aria-label":K,"aria-labelledby":b,"data-testid":a?`${a}-textarea`:void 0,onChange:M,onKeyDown:P,placeholder:o,rows:p,value:v}),l.jsx("div",{className:f(`${t}__action`),children:l.jsx(Q.Button,{"aria-label":u?A:V,"data-testid":a?`${a}-action`:void 0,iconOnly:!0,negative:c,size:"xs",type:O,variant:"primary",onClick:Y,children:G})}),l.jsx("span",{className:f(`${t}__frame`,{[`${t}__frame--negative`]:c}),"aria-hidden":"true"})]})});k.displayName="ChatField";exports.ChatField=k;
2
- //# sourceMappingURL=chat-field-Wjvh2J6C.js.map
1
+ "use strict";const l=require("react/jsx-runtime"),s=require("react"),Q=require("./button-C5CYysw5.js"),j=require("./icon.es-j3eRib6d.js"),W=require("./bind-DeUYJ6m9.js"),X={name:"send",svg:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor"><path fill-rule="evenodd" d="M1.54 2.149a.9.9 0 0 1 .97-.131l19.514 9.212a.9.9 0 0 1 0 1.628L2.51 22.071A.9.9 0 0 1 1.263 21l2.664-8.957-2.664-8.956a.9.9 0 0 1 .277-.94Zm3.997 10.795-1.974 6.64 14.062-6.64H5.537Zm12.088-1.8H5.537L3.563 4.505l14.062 6.64Z" clip-rule="evenodd"/></svg>',keywords:["send"],category:"action"},T={name:"tv-stop",svg:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor"><path d="M19 19H5V5h14v14Z"/><path fill-rule="evenodd" d="M19.9 19a.9.9 0 0 1-.9.9H5a.9.9 0 0 1-.9-.9V5a.9.9 0 0 1 .9-.9h14a.9.9 0 0 1 .9.9v14Zm-1.8-.9V5.9H5.9v12.2h12.2Z" clip-rule="evenodd"/></svg>',keywords:["tv-stop"],category:"action"},I={"purpur-chat-field":"_purpur-chat-field_16tq2_1","purpur-chat-field--negative":"_purpur-chat-field--negative_16tq2_13","purpur-chat-field__frame":"_purpur-chat-field__frame_16tq2_16","purpur-chat-field__frame--negative":"_purpur-chat-field__frame--negative_16tq2_20","purpur-chat-field--filled":"_purpur-chat-field--filled_16tq2_34","purpur-chat-field__textarea":"_purpur-chat-field__textarea_16tq2_34","purpur-chat-field__textarea--negative":"_purpur-chat-field__textarea--negative_16tq2_37","purpur-chat-field__action":"_purpur-chat-field__action_16tq2_80"},f=W.c.bind(I),ee=(...a)=>{const i=a.filter(Boolean);return i.length<=1?i[0]||null:o=>{for(const n of i)typeof n=="function"?n(o):n&&(n.current=o)}},t="purpur-chat-field",k=s.forwardRef(({["data-testid"]:a,value:i,placeholder:o,textareaAriaLabel:n,generating:u=!1,negative:c=!1,sendAriaLabel:V,sendIcon:R,stopAriaLabel:A,rows:p=1,maxRows:x=4,onChange:B,onSend:m,onStopClick:F,actionButtonType:h="button",textareaProps:L,className:N},Z)=>{const _=s.useRef(null),{["aria-label"]:D,["aria-labelledby"]:b,defaultValue:g,...S}=L??{},[z,E]=s.useState(()=>typeof g=="string"||typeof g=="number"?String(g):""),v=i??z,d=!!v.length,K=D??(b?void 0:n??o),y=s.useCallback(()=>{const e=_.current;if(!e)return;e.style.height="auto",e.style.overflowY="hidden";const r=getComputedStyle(e),w=parseFloat(r.lineHeight)||20,C=parseFloat(r.paddingTop)||0,H=parseFloat(r.paddingBottom)||0,J=w*p+C+H,$=w*x+C+H;e.scrollHeight>$?(e.style.height=`${$}px`,e.style.overflowY="auto"):e.scrollHeight>J&&(e.style.height=`${e.scrollHeight}px`)},[p,x]);s.useEffect(()=>{y()},[v,y]);const q=s.useCallback(e=>{if(d){if(h==="submit"){const r=_.current?.form;if(e==="keyboard"&&r){r.requestSubmit();return}if(e==="button"&&r)return}m()}},[h,d,m]),M=e=>{i===void 0&&E(e.target.value),B(e)},P=e=>{e.key==="Enter"&&!e.shiftKey&&!e.nativeEvent.isComposing&&(e.preventDefault(),q("keyboard"))},Y=()=>{if(u){F();return}q("button")},O=u||!d?"button":h,U=f([N,t,{[`${t}--filled`]:d,[`${t}--negative`]:c}]),G=u?l.jsx(j.b,{size:"xs",svg:T}):R??l.jsx(j.b,{size:"xs",svg:X});return l.jsxs("div",{className:U,"data-testid":a,children:[l.jsx("textarea",{...S,ref:ee(Z,_),className:f(`${t}__textarea`,{[`${t}__textarea--negative`]:c}),"aria-label":K,"aria-labelledby":b,"data-testid":a?`${a}-textarea`:void 0,onChange:M,onKeyDown:P,placeholder:o,rows:p,value:v}),l.jsx("div",{className:f(`${t}__action`),children:l.jsx(Q.Button,{"aria-label":u?A:V,"data-testid":a?`${a}-action`:void 0,iconOnly:!0,negative:c,size:"xs",type:O,variant:"primary",onClick:Y,children:G})}),l.jsx("span",{className:f(`${t}__frame`,{[`${t}__frame--negative`]:c}),"aria-hidden":"true"})]})});k.displayName="ChatField";exports.ChatField=k;
2
+ //# sourceMappingURL=chat-field-CLAjIHlM.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"chat-field-Wjvh2J6C.js","sources":["../../../components/icon/dist/assets/send.es.js","../../../components/icon/dist/assets/tv-stop.es.js","../../../components/chat-field/src/chat-field.tsx"],"sourcesContent":["const e = {\n name: \"send\",\n svg: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path fill-rule=\"evenodd\" d=\"M1.54 2.149a.9.9 0 0 1 .97-.131l19.514 9.212a.9.9 0 0 1 0 1.628L2.51 22.071A.9.9 0 0 1 1.263 21l2.664-8.957-2.664-8.956a.9.9 0 0 1 .277-.94Zm3.997 10.795-1.974 6.64 14.062-6.64H5.537Zm12.088-1.8H5.537L3.563 4.505l14.062 6.64Z\" clip-rule=\"evenodd\"/></svg>',\n keywords: [\"send\"],\n category: \"action\"\n};\nexport {\n e as send\n};\n//# sourceMappingURL=send.es.js.map\n","const t = {\n name: \"tv-stop\",\n svg: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M19 19H5V5h14v14Z\"/><path fill-rule=\"evenodd\" d=\"M19.9 19a.9.9 0 0 1-.9.9H5a.9.9 0 0 1-.9-.9V5a.9.9 0 0 1 .9-.9h14a.9.9 0 0 1 .9.9v14Zm-1.8-.9V5.9H5.9v12.2h12.2Z\" clip-rule=\"evenodd\"/></svg>',\n keywords: [\"tv-stop\"],\n category: \"action\"\n};\nexport {\n t as tvStop\n};\n//# sourceMappingURL=tv-stop.es.js.map\n","import React, {\n type ChangeEvent,\n forwardRef,\n type KeyboardEvent,\n type ReactNode,\n type Ref,\n type TextareaHTMLAttributes,\n useCallback,\n useEffect,\n useRef,\n useState,\n} from \"react\";\nimport { Button } from \"@purpur/button\";\nimport { Icon } from \"@purpur/icon\";\nimport { send } from \"@purpur/icon/assets/send\";\nimport { tvStop } from \"@purpur/icon/assets/tv-stop\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./chat-field.module.scss\";\nconst cx = c.bind(styles);\n\nconst mergeRefs = <T,>(...inputRefs: (Ref<T> | undefined)[]): Ref<T> | React.RefCallback<T> => {\n const filteredInputRefs = inputRefs.filter(Boolean);\n\n if (filteredInputRefs.length <= 1) {\n return filteredInputRefs[0] || null;\n }\n\n return (ref: T | null) => {\n for (const inputRef of filteredInputRefs) {\n if (typeof inputRef === \"function\") {\n inputRef(ref);\n } else if (inputRef) {\n (inputRef as React.RefObject<T | null>).current = ref;\n }\n }\n };\n};\n\nexport type ChatFieldProps = {\n [\"data-testid\"]?: string;\n /**\n * Current value of the textarea in controlled mode.\n * When omitted, the component handles textarea state internally.\n * */\n value?: string;\n /**\n * Placeholder text shown when the textarea is empty.\n * */\n placeholder: string;\n /**\n * Accessible label for the textarea when no aria-label/aria-labelledby\n * is provided via `textareaProps`.\n * */\n textareaAriaLabel?: string;\n /**\n * Changes the action icon from send to stop.\n * */\n generating?: boolean;\n /**\n * Renders the field with negative appearance.\n * */\n negative?: boolean;\n /**\n * Accessible label for the send action icon.\n * */\n sendAriaLabel: string;\n /**\n * Custom icon for the default action button state.\n * The custom icon should still visually communicate a send action.\n * Falls back to the standard send icon when omitted.\n * */\n sendIcon?: ReactNode;\n /**\n * Accessible label for the stop action icon.\n * */\n stopAriaLabel: string;\n /**\n * Number of visible text rows. Defaults to 1.\n * */\n rows?: number;\n /**\n * Maximum number of rows before the textarea scrolls. Defaults to 4.\n * */\n maxRows?: number;\n /**\n * Callback for textarea value changes.\n * */\n onChange: (event: ChangeEvent<HTMLTextAreaElement>) => void;\n /**\n * Callback fired when the send action is triggered (Enter key or send button click).\n * */\n onSend: () => void;\n /**\n * Callback fired when the stop button is clicked during generating state.\n * */\n onStopClick: () => void;\n /**\n * HTML type attribute for the action button. Use `\"submit\"` when ChatField\n * is placed inside a `<form>`. Defaults to `\"button\"`.\n * */\n actionButtonType?: \"button\" | \"submit\";\n /**\n * Additional props forwarded to the textarea element.\n * */\n textareaProps?: Omit<\n TextareaHTMLAttributes<HTMLTextAreaElement>,\n \"className\" | \"value\" | \"placeholder\" | \"disabled\" | \"onChange\" | \"rows\"\n >;\n className?: string;\n};\n\nconst rootClassName = \"purpur-chat-field\";\n\nexport const ChatField = forwardRef<HTMLTextAreaElement, ChatFieldProps>(\n (\n {\n [\"data-testid\"]: dataTestId,\n value,\n placeholder,\n textareaAriaLabel: textareaAriaLabelProp,\n generating = false,\n negative = false,\n sendAriaLabel,\n sendIcon,\n stopAriaLabel,\n rows = 1,\n maxRows = 4,\n onChange,\n onSend,\n onStopClick,\n actionButtonType = \"button\",\n textareaProps,\n className,\n },\n ref\n ) => {\n const internalRef = useRef<HTMLTextAreaElement>(null);\n const {\n [\"aria-label\"]: textareaPropsAriaLabel,\n [\"aria-labelledby\"]: textareaPropsAriaLabelledBy,\n defaultValue: textareaDefaultValue,\n ...textareaRestProps\n } = textareaProps ?? {};\n\n const [uncontrolledValue, setUncontrolledValue] = useState(() => {\n if (typeof textareaDefaultValue === \"string\" || typeof textareaDefaultValue === \"number\") {\n return String(textareaDefaultValue);\n }\n return \"\";\n });\n\n const textareaValue = value ?? uncontrolledValue;\n const hasValue = Boolean(textareaValue.length);\n\n const resolvedTextareaAriaLabel =\n textareaPropsAriaLabel ??\n (textareaPropsAriaLabelledBy ? undefined : textareaAriaLabelProp ?? placeholder);\n\n const adjustTextareaHeight = useCallback(() => {\n const textarea = internalRef.current;\n if (!textarea) return;\n\n textarea.style.height = \"auto\";\n textarea.style.overflowY = \"hidden\";\n\n const computed = getComputedStyle(textarea);\n const lineHeight = parseFloat(computed.lineHeight) || 20;\n const paddingTop = parseFloat(computed.paddingTop) || 0;\n const paddingBottom = parseFloat(computed.paddingBottom) || 0;\n const naturalHeight = lineHeight * rows + paddingTop + paddingBottom;\n const maxHeight = lineHeight * maxRows + paddingTop + paddingBottom;\n\n if (textarea.scrollHeight > maxHeight) {\n textarea.style.height = `${maxHeight}px`;\n textarea.style.overflowY = \"auto\";\n } else if (textarea.scrollHeight > naturalHeight) {\n textarea.style.height = `${textarea.scrollHeight}px`;\n }\n }, [rows, maxRows]);\n\n useEffect(() => {\n adjustTextareaHeight();\n }, [textareaValue, adjustTextareaHeight]);\n\n const triggerSend = useCallback(\n (source: \"button\" | \"keyboard\") => {\n if (!hasValue) return;\n\n if (actionButtonType === \"submit\") {\n const parentForm = internalRef.current?.form;\n\n if (source === \"keyboard\" && parentForm) {\n parentForm.requestSubmit();\n return;\n }\n\n if (source === \"button\" && parentForm) {\n return;\n }\n }\n\n onSend();\n },\n [actionButtonType, hasValue, onSend]\n );\n\n const handleChange = (event: ChangeEvent<HTMLTextAreaElement>) => {\n if (value === undefined) {\n setUncontrolledValue(event.target.value);\n }\n\n onChange(event);\n };\n\n const handleKeyDown = (event: KeyboardEvent<HTMLTextAreaElement>) => {\n if (event.key === \"Enter\" && !event.shiftKey && !event.nativeEvent.isComposing) {\n event.preventDefault();\n triggerSend(\"keyboard\");\n }\n };\n\n const handleActionClick = () => {\n if (generating) {\n onStopClick();\n return;\n }\n\n triggerSend(\"button\");\n };\n\n const resolvedActionButtonType: \"button\" | \"submit\" =\n generating || !hasValue ? \"button\" : actionButtonType;\n\n const classes = cx([\n className,\n rootClassName,\n {\n [`${rootClassName}--filled`]: hasValue,\n [`${rootClassName}--negative`]: negative,\n },\n ]);\n\n const actionIcon = generating ? (\n <Icon size=\"xs\" svg={tvStop} />\n ) : (\n sendIcon ?? <Icon size=\"xs\" svg={send} />\n );\n\n return (\n <div className={classes} data-testid={dataTestId}>\n <textarea\n {...textareaRestProps}\n ref={mergeRefs(ref, internalRef)}\n className={cx(`${rootClassName}__textarea`, {\n [`${rootClassName}__textarea--negative`]: negative,\n })}\n aria-label={resolvedTextareaAriaLabel}\n aria-labelledby={textareaPropsAriaLabelledBy}\n data-testid={dataTestId ? `${dataTestId}-textarea` : undefined}\n onChange={handleChange}\n onKeyDown={handleKeyDown}\n placeholder={placeholder}\n rows={rows}\n value={textareaValue}\n />\n <div className={cx(`${rootClassName}__action`)}>\n <Button\n aria-label={generating ? stopAriaLabel : sendAriaLabel}\n data-testid={dataTestId ? `${dataTestId}-action` : undefined}\n iconOnly\n negative={negative}\n size=\"xs\"\n type={resolvedActionButtonType}\n variant=\"primary\"\n onClick={handleActionClick}\n >\n {actionIcon}\n </Button>\n </div>\n <span\n className={cx(`${rootClassName}__frame`, {\n [`${rootClassName}__frame--negative`]: negative,\n })}\n aria-hidden=\"true\"\n />\n </div>\n );\n }\n);\n\nChatField.displayName = \"ChatField\";\n"],"names":["e","t","cx","c","styles","mergeRefs","inputRefs","filteredInputRefs","ref","inputRef","rootClassName","ChatField","forwardRef","dataTestId","value","placeholder","textareaAriaLabelProp","generating","negative","sendAriaLabel","sendIcon","stopAriaLabel","rows","maxRows","onChange","onSend","onStopClick","actionButtonType","textareaProps","className","internalRef","useRef","textareaPropsAriaLabel","textareaPropsAriaLabelledBy","textareaDefaultValue","textareaRestProps","uncontrolledValue","setUncontrolledValue","useState","textareaValue","hasValue","resolvedTextareaAriaLabel","adjustTextareaHeight","useCallback","textarea","computed","lineHeight","paddingTop","paddingBottom","naturalHeight","maxHeight","useEffect","triggerSend","source","parentForm","handleChange","event","handleKeyDown","handleActionClick","resolvedActionButtonType","classes","actionIcon","jsx","Icon","tvStop","send","jsxs","Button"],"mappings":"0KAAMA,EAAI,CACR,KAAM,OACN,IAAK,8WACL,SAAU,CAAC,MAAM,EACjB,SAAU,QACZ,ECLMC,EAAI,CACR,KAAM,UACN,IAAK,0RACL,SAAU,CAAC,SAAS,EACpB,SAAU,QACZ,qjBCcMC,EAAKC,EAAAA,EAAE,KAAKC,CAAM,EAElBC,GAAY,IAAQC,IAAqE,CAC7F,MAAMC,EAAoBD,EAAU,OAAO,OAAO,EAElD,OAAIC,EAAkB,QAAU,EACvBA,EAAkB,CAAC,GAAK,KAGzBC,GAAkB,CACxB,UAAWC,KAAYF,EACjB,OAAOE,GAAa,WACtBA,EAASD,CAAG,EACHC,IACRA,EAAuC,QAAUD,EAGxD,CACF,EA2EME,EAAgB,oBAETC,EAAYC,EAAAA,WACvB,CACE,CACE,CAAC,eAAgBC,EACjB,MAAAC,EACA,YAAAC,EACA,kBAAmBC,EACnB,WAAAC,EAAa,GACb,SAAAC,EAAW,GACX,cAAAC,EACA,SAAAC,EACA,cAAAC,EACA,KAAAC,EAAO,EACP,QAAAC,EAAU,EACV,SAAAC,EACA,OAAAC,EACA,YAAAC,EACA,iBAAAC,EAAmB,SACnB,cAAAC,EACA,UAAAC,CAAA,EAEFrB,IACG,CACH,MAAMsB,EAAcC,EAAAA,OAA4B,IAAI,EAC9C,CACJ,CAAC,YAAY,EAAGC,EAChB,CAAC,iBAAiB,EAAGC,EACrB,aAAcC,EACd,GAAGC,CAAA,EACDP,GAAiB,CAAA,EAEf,CAACQ,EAAmBC,CAAoB,EAAIC,EAAAA,SAAS,IACrD,OAAOJ,GAAyB,UAAY,OAAOA,GAAyB,SACvE,OAAOA,CAAoB,EAE7B,EACR,EAEKK,EAAgBzB,GAASsB,EACzBI,EAAW,EAAQD,EAAc,OAEjCE,EACJT,IACCC,EAA8B,OAAYjB,GAAyBD,GAEhE2B,EAAuBC,EAAAA,YAAY,IAAM,CAC7C,MAAMC,EAAWd,EAAY,QAC7B,GAAI,CAACc,EAAU,OAEfA,EAAS,MAAM,OAAS,OACxBA,EAAS,MAAM,UAAY,SAE3B,MAAMC,EAAW,iBAAiBD,CAAQ,EACpCE,EAAa,WAAWD,EAAS,UAAU,GAAK,GAChDE,EAAa,WAAWF,EAAS,UAAU,GAAK,EAChDG,EAAgB,WAAWH,EAAS,aAAa,GAAK,EACtDI,EAAgBH,EAAaxB,EAAOyB,EAAaC,EACjDE,EAAYJ,EAAavB,EAAUwB,EAAaC,EAElDJ,EAAS,aAAeM,GAC1BN,EAAS,MAAM,OAAS,GAAGM,CAAS,KACpCN,EAAS,MAAM,UAAY,QAClBA,EAAS,aAAeK,IACjCL,EAAS,MAAM,OAAS,GAAGA,EAAS,YAAY,KAEpD,EAAG,CAACtB,EAAMC,CAAO,CAAC,EAElB4B,EAAAA,UAAU,IAAM,CACdT,EAAA,CACF,EAAG,CAACH,EAAeG,CAAoB,CAAC,EAExC,MAAMU,EAAcT,EAAAA,YACjBU,GAAkC,CACjC,GAAKb,EAEL,IAAIb,IAAqB,SAAU,CACjC,MAAM2B,EAAaxB,EAAY,SAAS,KAExC,GAAIuB,IAAW,YAAcC,EAAY,CACvCA,EAAW,cAAA,EACX,MACF,CAEA,GAAID,IAAW,UAAYC,EACzB,MAEJ,CAEA7B,EAAA,EACF,EACA,CAACE,EAAkBa,EAAUf,CAAM,CAAA,EAG/B8B,EAAgBC,GAA4C,CAC5D1C,IAAU,QACZuB,EAAqBmB,EAAM,OAAO,KAAK,EAGzChC,EAASgC,CAAK,CAChB,EAEMC,EAAiBD,GAA8C,CAC/DA,EAAM,MAAQ,SAAW,CAACA,EAAM,UAAY,CAACA,EAAM,YAAY,cACjEA,EAAM,eAAA,EACNJ,EAAY,UAAU,EAE1B,EAEMM,EAAoB,IAAM,CAC9B,GAAIzC,EAAY,CACdS,EAAA,EACA,MACF,CAEA0B,EAAY,QAAQ,CACtB,EAEMO,EACJ1C,GAAc,CAACuB,EAAW,SAAWb,EAEjCiC,EAAU1D,EAAG,CACjB2B,EACAnB,EACA,CACE,CAAC,GAAGA,CAAa,UAAU,EAAG8B,EAC9B,CAAC,GAAG9B,CAAa,YAAY,EAAGQ,CAAA,CAClC,CACD,EAEK2C,EAAa5C,EACjB6C,EAAAA,IAACC,EAAAA,EAAA,CAAK,KAAK,KAAK,IAAKC,CAAA,CAAQ,EAE7B5C,GAAY0C,EAAAA,IAACC,IAAA,CAAK,KAAK,KAAK,IAAKE,EAAM,EAGzC,OACEC,EAAAA,KAAC,MAAA,CAAI,UAAWN,EAAS,cAAa/C,EACpC,SAAA,CAAAiD,EAAAA,IAAC,WAAA,CACE,GAAG3B,EACJ,IAAK9B,GAAUG,EAAKsB,CAAW,EAC/B,UAAW5B,EAAG,GAAGQ,CAAa,aAAc,CAC1C,CAAC,GAAGA,CAAa,sBAAsB,EAAGQ,CAAA,CAC3C,EACD,aAAYuB,EACZ,kBAAiBR,EACjB,cAAapB,EAAa,GAAGA,CAAU,YAAc,OACrD,SAAU0C,EACV,UAAWE,EACX,YAAA1C,EACA,KAAAO,EACA,MAAOiB,CAAA,CAAA,QAER,MAAA,CAAI,UAAWrC,EAAG,GAAGQ,CAAa,UAAU,EAC3C,SAAAoD,EAAAA,IAACK,EAAAA,OAAA,CACC,aAAYlD,EAAaI,EAAgBF,EACzC,cAAaN,EAAa,GAAGA,CAAU,UAAY,OACnD,SAAQ,GACR,SAAAK,EACA,KAAK,KACL,KAAMyC,EACN,QAAQ,UACR,QAASD,EAER,SAAAG,CAAA,CAAA,EAEL,EACAC,EAAAA,IAAC,OAAA,CACC,UAAW5D,EAAG,GAAGQ,CAAa,UAAW,CACvC,CAAC,GAAGA,CAAa,mBAAmB,EAAGQ,CAAA,CACxC,EACD,cAAY,MAAA,CAAA,CACd,EACF,CAEJ,CACF,EAEAP,EAAU,YAAc"}
1
+ {"version":3,"file":"chat-field-CLAjIHlM.js","sources":["../../../components/icon/dist/assets/send.es.js","../../../components/icon/dist/assets/tv-stop.es.js","../../../components/chat-field/src/chat-field.tsx"],"sourcesContent":["const e = {\n name: \"send\",\n svg: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path fill-rule=\"evenodd\" d=\"M1.54 2.149a.9.9 0 0 1 .97-.131l19.514 9.212a.9.9 0 0 1 0 1.628L2.51 22.071A.9.9 0 0 1 1.263 21l2.664-8.957-2.664-8.956a.9.9 0 0 1 .277-.94Zm3.997 10.795-1.974 6.64 14.062-6.64H5.537Zm12.088-1.8H5.537L3.563 4.505l14.062 6.64Z\" clip-rule=\"evenodd\"/></svg>',\n keywords: [\"send\"],\n category: \"action\"\n};\nexport {\n e as send\n};\n//# sourceMappingURL=send.es.js.map\n","const t = {\n name: \"tv-stop\",\n svg: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M19 19H5V5h14v14Z\"/><path fill-rule=\"evenodd\" d=\"M19.9 19a.9.9 0 0 1-.9.9H5a.9.9 0 0 1-.9-.9V5a.9.9 0 0 1 .9-.9h14a.9.9 0 0 1 .9.9v14Zm-1.8-.9V5.9H5.9v12.2h12.2Z\" clip-rule=\"evenodd\"/></svg>',\n keywords: [\"tv-stop\"],\n category: \"action\"\n};\nexport {\n t as tvStop\n};\n//# sourceMappingURL=tv-stop.es.js.map\n","import React, {\n type ChangeEvent,\n forwardRef,\n type KeyboardEvent,\n type ReactNode,\n type Ref,\n type TextareaHTMLAttributes,\n useCallback,\n useEffect,\n useRef,\n useState,\n} from \"react\";\nimport { Button } from \"@purpur/button\";\nimport { Icon } from \"@purpur/icon\";\nimport { send } from \"@purpur/icon/assets/send\";\nimport { tvStop } from \"@purpur/icon/assets/tv-stop\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./chat-field.module.scss\";\nconst cx = c.bind(styles);\n\nconst mergeRefs = <T,>(...inputRefs: (Ref<T> | undefined)[]): Ref<T> | React.RefCallback<T> => {\n const filteredInputRefs = inputRefs.filter(Boolean);\n\n if (filteredInputRefs.length <= 1) {\n return filteredInputRefs[0] || null;\n }\n\n return (ref: T | null) => {\n for (const inputRef of filteredInputRefs) {\n if (typeof inputRef === \"function\") {\n inputRef(ref);\n } else if (inputRef) {\n (inputRef as React.RefObject<T | null>).current = ref;\n }\n }\n };\n};\n\nexport type ChatFieldProps = {\n [\"data-testid\"]?: string;\n /**\n * Current value of the textarea in controlled mode.\n * When omitted, the component handles textarea state internally.\n * */\n value?: string;\n /**\n * Placeholder text shown when the textarea is empty.\n * */\n placeholder: string;\n /**\n * Accessible label for the textarea when no aria-label/aria-labelledby\n * is provided via `textareaProps`.\n * */\n textareaAriaLabel?: string;\n /**\n * Changes the action icon from send to stop.\n * */\n generating?: boolean;\n /**\n * Renders the field with negative appearance.\n * */\n negative?: boolean;\n /**\n * Accessible label for the send action icon.\n * */\n sendAriaLabel: string;\n /**\n * Custom icon for the default action button state.\n * The custom icon should still visually communicate a send action.\n * Falls back to the standard send icon when omitted.\n * */\n sendIcon?: ReactNode;\n /**\n * Accessible label for the stop action icon.\n * */\n stopAriaLabel: string;\n /**\n * Number of visible text rows. Defaults to 1.\n * */\n rows?: number;\n /**\n * Maximum number of rows before the textarea scrolls. Defaults to 4.\n * */\n maxRows?: number;\n /**\n * Callback for textarea value changes.\n * */\n onChange: (event: ChangeEvent<HTMLTextAreaElement>) => void;\n /**\n * Callback fired when the send action is triggered (Enter key or send button click).\n * */\n onSend: () => void;\n /**\n * Callback fired when the stop button is clicked during generating state.\n * */\n onStopClick: () => void;\n /**\n * HTML type attribute for the action button. Use `\"submit\"` when ChatField\n * is placed inside a `<form>`. Defaults to `\"button\"`.\n * */\n actionButtonType?: \"button\" | \"submit\";\n /**\n * Additional props forwarded to the textarea element.\n * */\n textareaProps?: Omit<\n TextareaHTMLAttributes<HTMLTextAreaElement>,\n \"className\" | \"value\" | \"placeholder\" | \"disabled\" | \"onChange\" | \"rows\"\n >;\n className?: string;\n};\n\nconst rootClassName = \"purpur-chat-field\";\n\nexport const ChatField = forwardRef<HTMLTextAreaElement, ChatFieldProps>(\n (\n {\n [\"data-testid\"]: dataTestId,\n value,\n placeholder,\n textareaAriaLabel: textareaAriaLabelProp,\n generating = false,\n negative = false,\n sendAriaLabel,\n sendIcon,\n stopAriaLabel,\n rows = 1,\n maxRows = 4,\n onChange,\n onSend,\n onStopClick,\n actionButtonType = \"button\",\n textareaProps,\n className,\n },\n ref\n ) => {\n const internalRef = useRef<HTMLTextAreaElement>(null);\n const {\n [\"aria-label\"]: textareaPropsAriaLabel,\n [\"aria-labelledby\"]: textareaPropsAriaLabelledBy,\n defaultValue: textareaDefaultValue,\n ...textareaRestProps\n } = textareaProps ?? {};\n\n const [uncontrolledValue, setUncontrolledValue] = useState(() => {\n if (typeof textareaDefaultValue === \"string\" || typeof textareaDefaultValue === \"number\") {\n return String(textareaDefaultValue);\n }\n return \"\";\n });\n\n const textareaValue = value ?? uncontrolledValue;\n const hasValue = Boolean(textareaValue.length);\n\n const resolvedTextareaAriaLabel =\n textareaPropsAriaLabel ??\n (textareaPropsAriaLabelledBy ? undefined : textareaAriaLabelProp ?? placeholder);\n\n const adjustTextareaHeight = useCallback(() => {\n const textarea = internalRef.current;\n if (!textarea) return;\n\n textarea.style.height = \"auto\";\n textarea.style.overflowY = \"hidden\";\n\n const computed = getComputedStyle(textarea);\n const lineHeight = parseFloat(computed.lineHeight) || 20;\n const paddingTop = parseFloat(computed.paddingTop) || 0;\n const paddingBottom = parseFloat(computed.paddingBottom) || 0;\n const naturalHeight = lineHeight * rows + paddingTop + paddingBottom;\n const maxHeight = lineHeight * maxRows + paddingTop + paddingBottom;\n\n if (textarea.scrollHeight > maxHeight) {\n textarea.style.height = `${maxHeight}px`;\n textarea.style.overflowY = \"auto\";\n } else if (textarea.scrollHeight > naturalHeight) {\n textarea.style.height = `${textarea.scrollHeight}px`;\n }\n }, [rows, maxRows]);\n\n useEffect(() => {\n adjustTextareaHeight();\n }, [textareaValue, adjustTextareaHeight]);\n\n const triggerSend = useCallback(\n (source: \"button\" | \"keyboard\") => {\n if (!hasValue) return;\n\n if (actionButtonType === \"submit\") {\n const parentForm = internalRef.current?.form;\n\n if (source === \"keyboard\" && parentForm) {\n parentForm.requestSubmit();\n return;\n }\n\n if (source === \"button\" && parentForm) {\n return;\n }\n }\n\n onSend();\n },\n [actionButtonType, hasValue, onSend]\n );\n\n const handleChange = (event: ChangeEvent<HTMLTextAreaElement>) => {\n if (value === undefined) {\n setUncontrolledValue(event.target.value);\n }\n\n onChange(event);\n };\n\n const handleKeyDown = (event: KeyboardEvent<HTMLTextAreaElement>) => {\n if (event.key === \"Enter\" && !event.shiftKey && !event.nativeEvent.isComposing) {\n event.preventDefault();\n triggerSend(\"keyboard\");\n }\n };\n\n const handleActionClick = () => {\n if (generating) {\n onStopClick();\n return;\n }\n\n triggerSend(\"button\");\n };\n\n const resolvedActionButtonType: \"button\" | \"submit\" =\n generating || !hasValue ? \"button\" : actionButtonType;\n\n const classes = cx([\n className,\n rootClassName,\n {\n [`${rootClassName}--filled`]: hasValue,\n [`${rootClassName}--negative`]: negative,\n },\n ]);\n\n const actionIcon = generating ? (\n <Icon size=\"xs\" svg={tvStop} />\n ) : (\n sendIcon ?? <Icon size=\"xs\" svg={send} />\n );\n\n return (\n <div className={classes} data-testid={dataTestId}>\n <textarea\n {...textareaRestProps}\n ref={mergeRefs(ref, internalRef)}\n className={cx(`${rootClassName}__textarea`, {\n [`${rootClassName}__textarea--negative`]: negative,\n })}\n aria-label={resolvedTextareaAriaLabel}\n aria-labelledby={textareaPropsAriaLabelledBy}\n data-testid={dataTestId ? `${dataTestId}-textarea` : undefined}\n onChange={handleChange}\n onKeyDown={handleKeyDown}\n placeholder={placeholder}\n rows={rows}\n value={textareaValue}\n />\n <div className={cx(`${rootClassName}__action`)}>\n <Button\n aria-label={generating ? stopAriaLabel : sendAriaLabel}\n data-testid={dataTestId ? `${dataTestId}-action` : undefined}\n iconOnly\n negative={negative}\n size=\"xs\"\n type={resolvedActionButtonType}\n variant=\"primary\"\n onClick={handleActionClick}\n >\n {actionIcon}\n </Button>\n </div>\n <span\n className={cx(`${rootClassName}__frame`, {\n [`${rootClassName}__frame--negative`]: negative,\n })}\n aria-hidden=\"true\"\n />\n </div>\n );\n }\n);\n\nChatField.displayName = \"ChatField\";\n"],"names":["e","t","cx","c","styles","mergeRefs","inputRefs","filteredInputRefs","ref","inputRef","rootClassName","ChatField","forwardRef","dataTestId","value","placeholder","textareaAriaLabelProp","generating","negative","sendAriaLabel","sendIcon","stopAriaLabel","rows","maxRows","onChange","onSend","onStopClick","actionButtonType","textareaProps","className","internalRef","useRef","textareaPropsAriaLabel","textareaPropsAriaLabelledBy","textareaDefaultValue","textareaRestProps","uncontrolledValue","setUncontrolledValue","useState","textareaValue","hasValue","resolvedTextareaAriaLabel","adjustTextareaHeight","useCallback","textarea","computed","lineHeight","paddingTop","paddingBottom","naturalHeight","maxHeight","useEffect","triggerSend","source","parentForm","handleChange","event","handleKeyDown","handleActionClick","resolvedActionButtonType","classes","actionIcon","jsx","Icon","tvStop","send","jsxs","Button"],"mappings":"0KAAMA,EAAI,CACR,KAAM,OACN,IAAK,8WACL,SAAU,CAAC,MAAM,EACjB,SAAU,QACZ,ECLMC,EAAI,CACR,KAAM,UACN,IAAK,0RACL,SAAU,CAAC,SAAS,EACpB,SAAU,QACZ,qjBCcMC,EAAKC,EAAAA,EAAE,KAAKC,CAAM,EAElBC,GAAY,IAAQC,IAAqE,CAC7F,MAAMC,EAAoBD,EAAU,OAAO,OAAO,EAElD,OAAIC,EAAkB,QAAU,EACvBA,EAAkB,CAAC,GAAK,KAGzBC,GAAkB,CACxB,UAAWC,KAAYF,EACjB,OAAOE,GAAa,WACtBA,EAASD,CAAG,EACHC,IACRA,EAAuC,QAAUD,EAGxD,CACF,EA2EME,EAAgB,oBAETC,EAAYC,EAAAA,WACvB,CACE,CACE,CAAC,eAAgBC,EACjB,MAAAC,EACA,YAAAC,EACA,kBAAmBC,EACnB,WAAAC,EAAa,GACb,SAAAC,EAAW,GACX,cAAAC,EACA,SAAAC,EACA,cAAAC,EACA,KAAAC,EAAO,EACP,QAAAC,EAAU,EACV,SAAAC,EACA,OAAAC,EACA,YAAAC,EACA,iBAAAC,EAAmB,SACnB,cAAAC,EACA,UAAAC,CAAA,EAEFrB,IACG,CACH,MAAMsB,EAAcC,EAAAA,OAA4B,IAAI,EAC9C,CACJ,CAAC,YAAY,EAAGC,EAChB,CAAC,iBAAiB,EAAGC,EACrB,aAAcC,EACd,GAAGC,CAAA,EACDP,GAAiB,CAAA,EAEf,CAACQ,EAAmBC,CAAoB,EAAIC,EAAAA,SAAS,IACrD,OAAOJ,GAAyB,UAAY,OAAOA,GAAyB,SACvE,OAAOA,CAAoB,EAE7B,EACR,EAEKK,EAAgBzB,GAASsB,EACzBI,EAAW,EAAQD,EAAc,OAEjCE,EACJT,IACCC,EAA8B,OAAYjB,GAAyBD,GAEhE2B,EAAuBC,EAAAA,YAAY,IAAM,CAC7C,MAAMC,EAAWd,EAAY,QAC7B,GAAI,CAACc,EAAU,OAEfA,EAAS,MAAM,OAAS,OACxBA,EAAS,MAAM,UAAY,SAE3B,MAAMC,EAAW,iBAAiBD,CAAQ,EACpCE,EAAa,WAAWD,EAAS,UAAU,GAAK,GAChDE,EAAa,WAAWF,EAAS,UAAU,GAAK,EAChDG,EAAgB,WAAWH,EAAS,aAAa,GAAK,EACtDI,EAAgBH,EAAaxB,EAAOyB,EAAaC,EACjDE,EAAYJ,EAAavB,EAAUwB,EAAaC,EAElDJ,EAAS,aAAeM,GAC1BN,EAAS,MAAM,OAAS,GAAGM,CAAS,KACpCN,EAAS,MAAM,UAAY,QAClBA,EAAS,aAAeK,IACjCL,EAAS,MAAM,OAAS,GAAGA,EAAS,YAAY,KAEpD,EAAG,CAACtB,EAAMC,CAAO,CAAC,EAElB4B,EAAAA,UAAU,IAAM,CACdT,EAAA,CACF,EAAG,CAACH,EAAeG,CAAoB,CAAC,EAExC,MAAMU,EAAcT,EAAAA,YACjBU,GAAkC,CACjC,GAAKb,EAEL,IAAIb,IAAqB,SAAU,CACjC,MAAM2B,EAAaxB,EAAY,SAAS,KAExC,GAAIuB,IAAW,YAAcC,EAAY,CACvCA,EAAW,cAAA,EACX,MACF,CAEA,GAAID,IAAW,UAAYC,EACzB,MAEJ,CAEA7B,EAAA,EACF,EACA,CAACE,EAAkBa,EAAUf,CAAM,CAAA,EAG/B8B,EAAgBC,GAA4C,CAC5D1C,IAAU,QACZuB,EAAqBmB,EAAM,OAAO,KAAK,EAGzChC,EAASgC,CAAK,CAChB,EAEMC,EAAiBD,GAA8C,CAC/DA,EAAM,MAAQ,SAAW,CAACA,EAAM,UAAY,CAACA,EAAM,YAAY,cACjEA,EAAM,eAAA,EACNJ,EAAY,UAAU,EAE1B,EAEMM,EAAoB,IAAM,CAC9B,GAAIzC,EAAY,CACdS,EAAA,EACA,MACF,CAEA0B,EAAY,QAAQ,CACtB,EAEMO,EACJ1C,GAAc,CAACuB,EAAW,SAAWb,EAEjCiC,EAAU1D,EAAG,CACjB2B,EACAnB,EACA,CACE,CAAC,GAAGA,CAAa,UAAU,EAAG8B,EAC9B,CAAC,GAAG9B,CAAa,YAAY,EAAGQ,CAAA,CAClC,CACD,EAEK2C,EAAa5C,EACjB6C,EAAAA,IAACC,EAAAA,EAAA,CAAK,KAAK,KAAK,IAAKC,CAAA,CAAQ,EAE7B5C,GAAY0C,EAAAA,IAACC,IAAA,CAAK,KAAK,KAAK,IAAKE,EAAM,EAGzC,OACEC,EAAAA,KAAC,MAAA,CAAI,UAAWN,EAAS,cAAa/C,EACpC,SAAA,CAAAiD,EAAAA,IAAC,WAAA,CACE,GAAG3B,EACJ,IAAK9B,GAAUG,EAAKsB,CAAW,EAC/B,UAAW5B,EAAG,GAAGQ,CAAa,aAAc,CAC1C,CAAC,GAAGA,CAAa,sBAAsB,EAAGQ,CAAA,CAC3C,EACD,aAAYuB,EACZ,kBAAiBR,EACjB,cAAapB,EAAa,GAAGA,CAAU,YAAc,OACrD,SAAU0C,EACV,UAAWE,EACX,YAAA1C,EACA,KAAAO,EACA,MAAOiB,CAAA,CAAA,QAER,MAAA,CAAI,UAAWrC,EAAG,GAAGQ,CAAa,UAAU,EAC3C,SAAAoD,EAAAA,IAACK,EAAAA,OAAA,CACC,aAAYlD,EAAaI,EAAgBF,EACzC,cAAaN,EAAa,GAAGA,CAAU,UAAY,OACnD,SAAQ,GACR,SAAAK,EACA,KAAK,KACL,KAAMyC,EACN,QAAQ,UACR,QAASD,EAER,SAAAG,CAAA,CAAA,EAEL,EACAC,EAAAA,IAAC,OAAA,CACC,UAAW5D,EAAG,GAAGQ,CAAa,UAAW,CACvC,CAAC,GAAGA,CAAa,mBAAmB,EAAGQ,CAAA,CACxC,EACD,cAAY,MAAA,CAAA,CACd,EACF,CAEJ,CACF,EAEAP,EAAU,YAAc"}
@@ -1,6 +1,6 @@
1
1
  import { jsxs as J, jsx as o } from "react/jsx-runtime";
2
2
  import { forwardRef as Q, useRef as W, useState as X, useCallback as q, useEffect as T } from "react";
3
- import { b as I } from "./button-4-yWOgtD.mjs";
3
+ import { b as I } from "./button-mHw_J7JU.mjs";
4
4
  import { b as V } from "./icon.es-CZcKxTaM.mjs";
5
5
  import { c as ee } from "./bind-CU-R61T-.mjs";
6
6
  const te = {
@@ -146,4 +146,4 @@ ie.displayName = "ChatField";
146
146
  export {
147
147
  ie as C
148
148
  };
149
- //# sourceMappingURL=chat-field-CVF4DooY.mjs.map
149
+ //# sourceMappingURL=chat-field-nxFRXoQx.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"chat-field-CVF4DooY.mjs","sources":["../../../components/icon/dist/assets/send.es.js","../../../components/icon/dist/assets/tv-stop.es.js","../../../components/chat-field/src/chat-field.tsx"],"sourcesContent":["const e = {\n name: \"send\",\n svg: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path fill-rule=\"evenodd\" d=\"M1.54 2.149a.9.9 0 0 1 .97-.131l19.514 9.212a.9.9 0 0 1 0 1.628L2.51 22.071A.9.9 0 0 1 1.263 21l2.664-8.957-2.664-8.956a.9.9 0 0 1 .277-.94Zm3.997 10.795-1.974 6.64 14.062-6.64H5.537Zm12.088-1.8H5.537L3.563 4.505l14.062 6.64Z\" clip-rule=\"evenodd\"/></svg>',\n keywords: [\"send\"],\n category: \"action\"\n};\nexport {\n e as send\n};\n//# sourceMappingURL=send.es.js.map\n","const t = {\n name: \"tv-stop\",\n svg: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M19 19H5V5h14v14Z\"/><path fill-rule=\"evenodd\" d=\"M19.9 19a.9.9 0 0 1-.9.9H5a.9.9 0 0 1-.9-.9V5a.9.9 0 0 1 .9-.9h14a.9.9 0 0 1 .9.9v14Zm-1.8-.9V5.9H5.9v12.2h12.2Z\" clip-rule=\"evenodd\"/></svg>',\n keywords: [\"tv-stop\"],\n category: \"action\"\n};\nexport {\n t as tvStop\n};\n//# sourceMappingURL=tv-stop.es.js.map\n","import React, {\n type ChangeEvent,\n forwardRef,\n type KeyboardEvent,\n type ReactNode,\n type Ref,\n type TextareaHTMLAttributes,\n useCallback,\n useEffect,\n useRef,\n useState,\n} from \"react\";\nimport { Button } from \"@purpur/button\";\nimport { Icon } from \"@purpur/icon\";\nimport { send } from \"@purpur/icon/assets/send\";\nimport { tvStop } from \"@purpur/icon/assets/tv-stop\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./chat-field.module.scss\";\nconst cx = c.bind(styles);\n\nconst mergeRefs = <T,>(...inputRefs: (Ref<T> | undefined)[]): Ref<T> | React.RefCallback<T> => {\n const filteredInputRefs = inputRefs.filter(Boolean);\n\n if (filteredInputRefs.length <= 1) {\n return filteredInputRefs[0] || null;\n }\n\n return (ref: T | null) => {\n for (const inputRef of filteredInputRefs) {\n if (typeof inputRef === \"function\") {\n inputRef(ref);\n } else if (inputRef) {\n (inputRef as React.RefObject<T | null>).current = ref;\n }\n }\n };\n};\n\nexport type ChatFieldProps = {\n [\"data-testid\"]?: string;\n /**\n * Current value of the textarea in controlled mode.\n * When omitted, the component handles textarea state internally.\n * */\n value?: string;\n /**\n * Placeholder text shown when the textarea is empty.\n * */\n placeholder: string;\n /**\n * Accessible label for the textarea when no aria-label/aria-labelledby\n * is provided via `textareaProps`.\n * */\n textareaAriaLabel?: string;\n /**\n * Changes the action icon from send to stop.\n * */\n generating?: boolean;\n /**\n * Renders the field with negative appearance.\n * */\n negative?: boolean;\n /**\n * Accessible label for the send action icon.\n * */\n sendAriaLabel: string;\n /**\n * Custom icon for the default action button state.\n * The custom icon should still visually communicate a send action.\n * Falls back to the standard send icon when omitted.\n * */\n sendIcon?: ReactNode;\n /**\n * Accessible label for the stop action icon.\n * */\n stopAriaLabel: string;\n /**\n * Number of visible text rows. Defaults to 1.\n * */\n rows?: number;\n /**\n * Maximum number of rows before the textarea scrolls. Defaults to 4.\n * */\n maxRows?: number;\n /**\n * Callback for textarea value changes.\n * */\n onChange: (event: ChangeEvent<HTMLTextAreaElement>) => void;\n /**\n * Callback fired when the send action is triggered (Enter key or send button click).\n * */\n onSend: () => void;\n /**\n * Callback fired when the stop button is clicked during generating state.\n * */\n onStopClick: () => void;\n /**\n * HTML type attribute for the action button. Use `\"submit\"` when ChatField\n * is placed inside a `<form>`. Defaults to `\"button\"`.\n * */\n actionButtonType?: \"button\" | \"submit\";\n /**\n * Additional props forwarded to the textarea element.\n * */\n textareaProps?: Omit<\n TextareaHTMLAttributes<HTMLTextAreaElement>,\n \"className\" | \"value\" | \"placeholder\" | \"disabled\" | \"onChange\" | \"rows\"\n >;\n className?: string;\n};\n\nconst rootClassName = \"purpur-chat-field\";\n\nexport const ChatField = forwardRef<HTMLTextAreaElement, ChatFieldProps>(\n (\n {\n [\"data-testid\"]: dataTestId,\n value,\n placeholder,\n textareaAriaLabel: textareaAriaLabelProp,\n generating = false,\n negative = false,\n sendAriaLabel,\n sendIcon,\n stopAriaLabel,\n rows = 1,\n maxRows = 4,\n onChange,\n onSend,\n onStopClick,\n actionButtonType = \"button\",\n textareaProps,\n className,\n },\n ref\n ) => {\n const internalRef = useRef<HTMLTextAreaElement>(null);\n const {\n [\"aria-label\"]: textareaPropsAriaLabel,\n [\"aria-labelledby\"]: textareaPropsAriaLabelledBy,\n defaultValue: textareaDefaultValue,\n ...textareaRestProps\n } = textareaProps ?? {};\n\n const [uncontrolledValue, setUncontrolledValue] = useState(() => {\n if (typeof textareaDefaultValue === \"string\" || typeof textareaDefaultValue === \"number\") {\n return String(textareaDefaultValue);\n }\n return \"\";\n });\n\n const textareaValue = value ?? uncontrolledValue;\n const hasValue = Boolean(textareaValue.length);\n\n const resolvedTextareaAriaLabel =\n textareaPropsAriaLabel ??\n (textareaPropsAriaLabelledBy ? undefined : textareaAriaLabelProp ?? placeholder);\n\n const adjustTextareaHeight = useCallback(() => {\n const textarea = internalRef.current;\n if (!textarea) return;\n\n textarea.style.height = \"auto\";\n textarea.style.overflowY = \"hidden\";\n\n const computed = getComputedStyle(textarea);\n const lineHeight = parseFloat(computed.lineHeight) || 20;\n const paddingTop = parseFloat(computed.paddingTop) || 0;\n const paddingBottom = parseFloat(computed.paddingBottom) || 0;\n const naturalHeight = lineHeight * rows + paddingTop + paddingBottom;\n const maxHeight = lineHeight * maxRows + paddingTop + paddingBottom;\n\n if (textarea.scrollHeight > maxHeight) {\n textarea.style.height = `${maxHeight}px`;\n textarea.style.overflowY = \"auto\";\n } else if (textarea.scrollHeight > naturalHeight) {\n textarea.style.height = `${textarea.scrollHeight}px`;\n }\n }, [rows, maxRows]);\n\n useEffect(() => {\n adjustTextareaHeight();\n }, [textareaValue, adjustTextareaHeight]);\n\n const triggerSend = useCallback(\n (source: \"button\" | \"keyboard\") => {\n if (!hasValue) return;\n\n if (actionButtonType === \"submit\") {\n const parentForm = internalRef.current?.form;\n\n if (source === \"keyboard\" && parentForm) {\n parentForm.requestSubmit();\n return;\n }\n\n if (source === \"button\" && parentForm) {\n return;\n }\n }\n\n onSend();\n },\n [actionButtonType, hasValue, onSend]\n );\n\n const handleChange = (event: ChangeEvent<HTMLTextAreaElement>) => {\n if (value === undefined) {\n setUncontrolledValue(event.target.value);\n }\n\n onChange(event);\n };\n\n const handleKeyDown = (event: KeyboardEvent<HTMLTextAreaElement>) => {\n if (event.key === \"Enter\" && !event.shiftKey && !event.nativeEvent.isComposing) {\n event.preventDefault();\n triggerSend(\"keyboard\");\n }\n };\n\n const handleActionClick = () => {\n if (generating) {\n onStopClick();\n return;\n }\n\n triggerSend(\"button\");\n };\n\n const resolvedActionButtonType: \"button\" | \"submit\" =\n generating || !hasValue ? \"button\" : actionButtonType;\n\n const classes = cx([\n className,\n rootClassName,\n {\n [`${rootClassName}--filled`]: hasValue,\n [`${rootClassName}--negative`]: negative,\n },\n ]);\n\n const actionIcon = generating ? (\n <Icon size=\"xs\" svg={tvStop} />\n ) : (\n sendIcon ?? <Icon size=\"xs\" svg={send} />\n );\n\n return (\n <div className={classes} data-testid={dataTestId}>\n <textarea\n {...textareaRestProps}\n ref={mergeRefs(ref, internalRef)}\n className={cx(`${rootClassName}__textarea`, {\n [`${rootClassName}__textarea--negative`]: negative,\n })}\n aria-label={resolvedTextareaAriaLabel}\n aria-labelledby={textareaPropsAriaLabelledBy}\n data-testid={dataTestId ? `${dataTestId}-textarea` : undefined}\n onChange={handleChange}\n onKeyDown={handleKeyDown}\n placeholder={placeholder}\n rows={rows}\n value={textareaValue}\n />\n <div className={cx(`${rootClassName}__action`)}>\n <Button\n aria-label={generating ? stopAriaLabel : sendAriaLabel}\n data-testid={dataTestId ? `${dataTestId}-action` : undefined}\n iconOnly\n negative={negative}\n size=\"xs\"\n type={resolvedActionButtonType}\n variant=\"primary\"\n onClick={handleActionClick}\n >\n {actionIcon}\n </Button>\n </div>\n <span\n className={cx(`${rootClassName}__frame`, {\n [`${rootClassName}__frame--negative`]: negative,\n })}\n aria-hidden=\"true\"\n />\n </div>\n );\n }\n);\n\nChatField.displayName = \"ChatField\";\n"],"names":["e","t","cx","c","styles","mergeRefs","inputRefs","filteredInputRefs","ref","inputRef","rootClassName","ChatField","forwardRef","dataTestId","value","placeholder","textareaAriaLabelProp","generating","negative","sendAriaLabel","sendIcon","stopAriaLabel","rows","maxRows","onChange","onSend","onStopClick","actionButtonType","textareaProps","className","internalRef","useRef","textareaPropsAriaLabel","textareaPropsAriaLabelledBy","textareaDefaultValue","textareaRestProps","uncontrolledValue","setUncontrolledValue","useState","textareaValue","hasValue","resolvedTextareaAriaLabel","adjustTextareaHeight","useCallback","textarea","computed","lineHeight","paddingTop","paddingBottom","naturalHeight","maxHeight","useEffect","triggerSend","source","parentForm","handleChange","event","handleKeyDown","handleActionClick","resolvedActionButtonType","classes","actionIcon","jsx","Icon","tvStop","send","jsxs","Button"],"mappings":"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"}
1
+ {"version":3,"file":"chat-field-nxFRXoQx.mjs","sources":["../../../components/icon/dist/assets/send.es.js","../../../components/icon/dist/assets/tv-stop.es.js","../../../components/chat-field/src/chat-field.tsx"],"sourcesContent":["const e = {\n name: \"send\",\n svg: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path fill-rule=\"evenodd\" d=\"M1.54 2.149a.9.9 0 0 1 .97-.131l19.514 9.212a.9.9 0 0 1 0 1.628L2.51 22.071A.9.9 0 0 1 1.263 21l2.664-8.957-2.664-8.956a.9.9 0 0 1 .277-.94Zm3.997 10.795-1.974 6.64 14.062-6.64H5.537Zm12.088-1.8H5.537L3.563 4.505l14.062 6.64Z\" clip-rule=\"evenodd\"/></svg>',\n keywords: [\"send\"],\n category: \"action\"\n};\nexport {\n e as send\n};\n//# sourceMappingURL=send.es.js.map\n","const t = {\n name: \"tv-stop\",\n svg: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M19 19H5V5h14v14Z\"/><path fill-rule=\"evenodd\" d=\"M19.9 19a.9.9 0 0 1-.9.9H5a.9.9 0 0 1-.9-.9V5a.9.9 0 0 1 .9-.9h14a.9.9 0 0 1 .9.9v14Zm-1.8-.9V5.9H5.9v12.2h12.2Z\" clip-rule=\"evenodd\"/></svg>',\n keywords: [\"tv-stop\"],\n category: \"action\"\n};\nexport {\n t as tvStop\n};\n//# sourceMappingURL=tv-stop.es.js.map\n","import React, {\n type ChangeEvent,\n forwardRef,\n type KeyboardEvent,\n type ReactNode,\n type Ref,\n type TextareaHTMLAttributes,\n useCallback,\n useEffect,\n useRef,\n useState,\n} from \"react\";\nimport { Button } from \"@purpur/button\";\nimport { Icon } from \"@purpur/icon\";\nimport { send } from \"@purpur/icon/assets/send\";\nimport { tvStop } from \"@purpur/icon/assets/tv-stop\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./chat-field.module.scss\";\nconst cx = c.bind(styles);\n\nconst mergeRefs = <T,>(...inputRefs: (Ref<T> | undefined)[]): Ref<T> | React.RefCallback<T> => {\n const filteredInputRefs = inputRefs.filter(Boolean);\n\n if (filteredInputRefs.length <= 1) {\n return filteredInputRefs[0] || null;\n }\n\n return (ref: T | null) => {\n for (const inputRef of filteredInputRefs) {\n if (typeof inputRef === \"function\") {\n inputRef(ref);\n } else if (inputRef) {\n (inputRef as React.RefObject<T | null>).current = ref;\n }\n }\n };\n};\n\nexport type ChatFieldProps = {\n [\"data-testid\"]?: string;\n /**\n * Current value of the textarea in controlled mode.\n * When omitted, the component handles textarea state internally.\n * */\n value?: string;\n /**\n * Placeholder text shown when the textarea is empty.\n * */\n placeholder: string;\n /**\n * Accessible label for the textarea when no aria-label/aria-labelledby\n * is provided via `textareaProps`.\n * */\n textareaAriaLabel?: string;\n /**\n * Changes the action icon from send to stop.\n * */\n generating?: boolean;\n /**\n * Renders the field with negative appearance.\n * */\n negative?: boolean;\n /**\n * Accessible label for the send action icon.\n * */\n sendAriaLabel: string;\n /**\n * Custom icon for the default action button state.\n * The custom icon should still visually communicate a send action.\n * Falls back to the standard send icon when omitted.\n * */\n sendIcon?: ReactNode;\n /**\n * Accessible label for the stop action icon.\n * */\n stopAriaLabel: string;\n /**\n * Number of visible text rows. Defaults to 1.\n * */\n rows?: number;\n /**\n * Maximum number of rows before the textarea scrolls. Defaults to 4.\n * */\n maxRows?: number;\n /**\n * Callback for textarea value changes.\n * */\n onChange: (event: ChangeEvent<HTMLTextAreaElement>) => void;\n /**\n * Callback fired when the send action is triggered (Enter key or send button click).\n * */\n onSend: () => void;\n /**\n * Callback fired when the stop button is clicked during generating state.\n * */\n onStopClick: () => void;\n /**\n * HTML type attribute for the action button. Use `\"submit\"` when ChatField\n * is placed inside a `<form>`. Defaults to `\"button\"`.\n * */\n actionButtonType?: \"button\" | \"submit\";\n /**\n * Additional props forwarded to the textarea element.\n * */\n textareaProps?: Omit<\n TextareaHTMLAttributes<HTMLTextAreaElement>,\n \"className\" | \"value\" | \"placeholder\" | \"disabled\" | \"onChange\" | \"rows\"\n >;\n className?: string;\n};\n\nconst rootClassName = \"purpur-chat-field\";\n\nexport const ChatField = forwardRef<HTMLTextAreaElement, ChatFieldProps>(\n (\n {\n [\"data-testid\"]: dataTestId,\n value,\n placeholder,\n textareaAriaLabel: textareaAriaLabelProp,\n generating = false,\n negative = false,\n sendAriaLabel,\n sendIcon,\n stopAriaLabel,\n rows = 1,\n maxRows = 4,\n onChange,\n onSend,\n onStopClick,\n actionButtonType = \"button\",\n textareaProps,\n className,\n },\n ref\n ) => {\n const internalRef = useRef<HTMLTextAreaElement>(null);\n const {\n [\"aria-label\"]: textareaPropsAriaLabel,\n [\"aria-labelledby\"]: textareaPropsAriaLabelledBy,\n defaultValue: textareaDefaultValue,\n ...textareaRestProps\n } = textareaProps ?? {};\n\n const [uncontrolledValue, setUncontrolledValue] = useState(() => {\n if (typeof textareaDefaultValue === \"string\" || typeof textareaDefaultValue === \"number\") {\n return String(textareaDefaultValue);\n }\n return \"\";\n });\n\n const textareaValue = value ?? uncontrolledValue;\n const hasValue = Boolean(textareaValue.length);\n\n const resolvedTextareaAriaLabel =\n textareaPropsAriaLabel ??\n (textareaPropsAriaLabelledBy ? undefined : textareaAriaLabelProp ?? placeholder);\n\n const adjustTextareaHeight = useCallback(() => {\n const textarea = internalRef.current;\n if (!textarea) return;\n\n textarea.style.height = \"auto\";\n textarea.style.overflowY = \"hidden\";\n\n const computed = getComputedStyle(textarea);\n const lineHeight = parseFloat(computed.lineHeight) || 20;\n const paddingTop = parseFloat(computed.paddingTop) || 0;\n const paddingBottom = parseFloat(computed.paddingBottom) || 0;\n const naturalHeight = lineHeight * rows + paddingTop + paddingBottom;\n const maxHeight = lineHeight * maxRows + paddingTop + paddingBottom;\n\n if (textarea.scrollHeight > maxHeight) {\n textarea.style.height = `${maxHeight}px`;\n textarea.style.overflowY = \"auto\";\n } else if (textarea.scrollHeight > naturalHeight) {\n textarea.style.height = `${textarea.scrollHeight}px`;\n }\n }, [rows, maxRows]);\n\n useEffect(() => {\n adjustTextareaHeight();\n }, [textareaValue, adjustTextareaHeight]);\n\n const triggerSend = useCallback(\n (source: \"button\" | \"keyboard\") => {\n if (!hasValue) return;\n\n if (actionButtonType === \"submit\") {\n const parentForm = internalRef.current?.form;\n\n if (source === \"keyboard\" && parentForm) {\n parentForm.requestSubmit();\n return;\n }\n\n if (source === \"button\" && parentForm) {\n return;\n }\n }\n\n onSend();\n },\n [actionButtonType, hasValue, onSend]\n );\n\n const handleChange = (event: ChangeEvent<HTMLTextAreaElement>) => {\n if (value === undefined) {\n setUncontrolledValue(event.target.value);\n }\n\n onChange(event);\n };\n\n const handleKeyDown = (event: KeyboardEvent<HTMLTextAreaElement>) => {\n if (event.key === \"Enter\" && !event.shiftKey && !event.nativeEvent.isComposing) {\n event.preventDefault();\n triggerSend(\"keyboard\");\n }\n };\n\n const handleActionClick = () => {\n if (generating) {\n onStopClick();\n return;\n }\n\n triggerSend(\"button\");\n };\n\n const resolvedActionButtonType: \"button\" | \"submit\" =\n generating || !hasValue ? \"button\" : actionButtonType;\n\n const classes = cx([\n className,\n rootClassName,\n {\n [`${rootClassName}--filled`]: hasValue,\n [`${rootClassName}--negative`]: negative,\n },\n ]);\n\n const actionIcon = generating ? (\n <Icon size=\"xs\" svg={tvStop} />\n ) : (\n sendIcon ?? <Icon size=\"xs\" svg={send} />\n );\n\n return (\n <div className={classes} data-testid={dataTestId}>\n <textarea\n {...textareaRestProps}\n ref={mergeRefs(ref, internalRef)}\n className={cx(`${rootClassName}__textarea`, {\n [`${rootClassName}__textarea--negative`]: negative,\n })}\n aria-label={resolvedTextareaAriaLabel}\n aria-labelledby={textareaPropsAriaLabelledBy}\n data-testid={dataTestId ? `${dataTestId}-textarea` : undefined}\n onChange={handleChange}\n onKeyDown={handleKeyDown}\n placeholder={placeholder}\n rows={rows}\n value={textareaValue}\n />\n <div className={cx(`${rootClassName}__action`)}>\n <Button\n aria-label={generating ? stopAriaLabel : sendAriaLabel}\n data-testid={dataTestId ? `${dataTestId}-action` : undefined}\n iconOnly\n negative={negative}\n size=\"xs\"\n type={resolvedActionButtonType}\n variant=\"primary\"\n onClick={handleActionClick}\n >\n {actionIcon}\n </Button>\n </div>\n <span\n className={cx(`${rootClassName}__frame`, {\n [`${rootClassName}__frame--negative`]: negative,\n })}\n aria-hidden=\"true\"\n />\n </div>\n );\n }\n);\n\nChatField.displayName = \"ChatField\";\n"],"names":["e","t","cx","c","styles","mergeRefs","inputRefs","filteredInputRefs","ref","inputRef","rootClassName","ChatField","forwardRef","dataTestId","value","placeholder","textareaAriaLabelProp","generating","negative","sendAriaLabel","sendIcon","stopAriaLabel","rows","maxRows","onChange","onSend","onStopClick","actionButtonType","textareaProps","className","internalRef","useRef","textareaPropsAriaLabel","textareaPropsAriaLabelledBy","textareaDefaultValue","textareaRestProps","uncontrolledValue","setUncontrolledValue","useState","textareaValue","hasValue","resolvedTextareaAriaLabel","adjustTextareaHeight","useCallback","textarea","computed","lineHeight","paddingTop","paddingBottom","naturalHeight","maxHeight","useEffect","triggerSend","source","parentForm","handleChange","event","handleKeyDown","handleActionClick","resolvedActionButtonType","classes","actionIcon","jsx","Icon","tvStop","send","jsxs","Button"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./chat-field-Wjvh2J6C.js");exports.ChatField=e.ChatField;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./chat-field-CLAjIHlM.js");exports.ChatField=e.ChatField;
2
2
  //# sourceMappingURL=chat-field.cjs.js.map
@@ -1,4 +1,4 @@
1
- import { C as o } from "./chat-field-CVF4DooY.mjs";
1
+ import { C as o } from "./chat-field-nxFRXoQx.mjs";
2
2
  export {
3
3
  o as ChatField
4
4
  };
@@ -1,2 +1,2 @@
1
- "use strict";const l=require("react/jsx-runtime"),u=require("react"),A=require("./heading-drD5ugCC.js"),D=require("./index-kcwFA4Dv.js"),m=require("./index-DlMXYAr3.js"),C=require("./index-BVmlsxuF.js"),F=require("./index-Cje7xxa1.js"),k=require("./bind-DeUYJ6m9.js"),H=require("./checkmark.es-lYntWFA3.js");function z(e){const a=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const n in e)if(n!=="default"){const o=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(a,n,o.get?o:{enumerable:!0,get:()=>e[n]})}}return a.default=e,Object.freeze(a)}const B=z(u);var N="Toggle",$=B.forwardRef((e,a)=>{const{pressed:n,defaultPressed:o,onPressedChange:t,...i}=e,[r,s]=m.useControllableState({prop:n,onChange:t,defaultProp:o??!1,caller:N});return l.jsx(m.Primitive.button,{type:"button","aria-pressed":r,"data-state":r?"on":"off","data-disabled":e.disabled?"":void 0,...i,ref:a,onClick:m.composeEventHandlers(e.onClick,()=>{e.disabled||s(!r)})})});$.displayName=N;var g="ToggleGroup",[w]=D.createContextScope(g,[C.createRovingFocusGroupScope]),R=C.createRovingFocusGroupScope(),j=u.forwardRef((e,a)=>{const{type:n,...o}=e;if(n==="single"){const t=o;return l.jsx(L,{...t,ref:a})}if(n==="multiple"){const t=o;return l.jsx(U,{...t,ref:a})}throw new Error(`Missing prop \`type\` expected on \`${g}\``)});j.displayName=g;var[S,V]=w(g),L=u.forwardRef((e,a)=>{const{value:n,defaultValue:o,onValueChange:t=()=>{},...i}=e,[r,s]=m.useControllableState({prop:n,defaultProp:o??"",onChange:t,caller:g});return l.jsx(S,{scope:e.__scopeToggleGroup,type:"single",value:u.useMemo(()=>r?[r]:[],[r]),onItemActivate:s,onItemDeactivate:u.useCallback(()=>s(""),[s]),children:l.jsx(E,{...i,ref:a})})}),U=u.forwardRef((e,a)=>{const{value:n,defaultValue:o,onValueChange:t=()=>{},...i}=e,[r,s]=m.useControllableState({prop:n,defaultProp:o??[],onChange:t,caller:g}),c=u.useCallback(p=>s((d=[])=>[...d,p]),[s]),h=u.useCallback(p=>s((d=[])=>d.filter(b=>b!==p)),[s]);return l.jsx(S,{scope:e.__scopeToggleGroup,type:"multiple",value:r,onItemActivate:c,onItemDeactivate:h,children:l.jsx(E,{...i,ref:a})})});j.displayName=g;var[J,K]=w(g),E=u.forwardRef((e,a)=>{const{__scopeToggleGroup:n,disabled:o=!1,rovingFocus:t=!0,orientation:i,dir:r,loop:s=!0,...c}=e,h=R(n),p=F.useDirection(r),d={role:"group",dir:p,...c};return l.jsx(J,{scope:n,rovingFocus:t,disabled:o,children:t?l.jsx(C.Root,{asChild:!0,...h,orientation:i,dir:p,loop:s,children:l.jsx(m.Primitive.div,{...d,ref:a})}):l.jsx(m.Primitive.div,{...d,ref:a})})}),_="ToggleGroupItem",M=u.forwardRef((e,a)=>{const n=V(_,e.__scopeToggleGroup),o=K(_,e.__scopeToggleGroup),t=R(e.__scopeToggleGroup),i=n.value.includes(e.value),r=o.disabled||e.disabled,s={...e,pressed:i,disabled:r},c=u.useRef(null);return o.rovingFocus?l.jsx(C.Item,{asChild:!0,...t,focusable:!r,active:i,ref:c,children:l.jsx(P,{...s,ref:a})}):l.jsx(P,{...s,ref:a})});M.displayName=_;var P=u.forwardRef((e,a)=>{const{__scopeToggleGroup:n,value:o,...t}=e,i=V(_,n),r={role:"radio","aria-checked":e.pressed,"aria-pressed":void 0},s=i.type==="single"?r:void 0;return l.jsx($,{...s,...t,ref:a,onPressedChange:c=>{c?i.onItemActivate(o):i.onItemDeactivate(o)}})}),T=j,Q=M;const O={"purpur-chip-group":"_purpur-chip-group_m2vd5_1","purpur-chip-group--container":"_purpur-chip-group--container_m2vd5_6","purpur-chip-group--full-width":"_purpur-chip-group--full-width_m2vd5_12"},W={"purpur-chip-group-item":"_purpur-chip-group-item_11j23_1","purpur-chip-group-item__line-wrapper":"_purpur-chip-group-item__line-wrapper_11j23_19","purpur-chip-group-item__checkmark-icon":"_purpur-chip-group-item__checkmark-icon_11j23_36","purpur-chip-group-item--disabled":"_purpur-chip-group-item--disabled_11j23_51"},x=k.c.bind(W),f="purpur-chip-group-item",q=({["aria-label"]:e,children:a,className:n,["data-testid"]:o,disabled:t=!1,showCheckmark:i=!1,unavailable:r=!1,value:s,...c})=>{const h=x([f,{[`${f}--disabled`]:t,[`${f}--unavailable`]:r},n]),p=d=>{t&&d.preventDefault()};return l.jsxs(Q,{"aria-label":e,"data-testid":o,className:`${h} ${f}`,value:s,onClick:p,"aria-disabled":t,...c,children:[a,i&&l.jsx(H.a,{size:"sm",className:x(`${f}__checkmark-icon`),"data-testid":"checkmark icon"}),r&&l.jsx("span",{className:x(`${f}__line-wrapper`),"data-testid":"unavailable line wrapper"})]})},X=e=>u.isValidElement(e)&&e?.type===q,Y=e=>e.type==="choice",I=2,Z=k.c.bind(O),G="purpur-chip-group",y=({children:e,className:a,fullWidth:n=!1,title:o,titleProps:t,name:i,...r})=>{const s=Z([G,{[`${G}--full-width`]:n},a]),c=u.useId(),h=u.Children.toArray(e).filter(X),p=u.Children.map(h,v=>u.cloneElement(v,{showCheckmark:r.type==="filter"&&r.value.includes(v.props.value),unavailable:r.type==="choice"&&v.props.unavailable})),d=v=>{(r.type==="filter"||v!=="")&&r.onValueChange(v)};u.useEffect(()=>{r.type==="choice"&&p.length<I&&console.warn(`Minimum number of chips should be ${I} when using the "choice" type`)},[p,r.type]);const b=()=>Y(r)?l.jsx(T,{className:s,...r,"aria-labelledby":o?`${t?.id??c}-label`:void 0,onValueChange:d,type:"single",children:p}):l.jsx(T,{className:s,...r,"aria-labelledby":o?`${t?.id??c}-label`:void 0,onValueChange:d,type:"multiple",children:p});return l.jsxs("div",{className:O[`${G}--container`],children:[o&&l.jsx(A.Heading,{tag:"h2",variant:"subsection-100",...t,id:`${t?.id??c}-label`,children:o}),b(),i&&r.type==="choice"&&l.jsx("input",{type:"hidden",name:i,value:r.value})]})};y.Item=q;y.displayName="ChipGroup";exports.ChipGroup=y;
2
- //# sourceMappingURL=chip-group-B775zvKD.js.map
1
+ "use strict";const l=require("react/jsx-runtime"),u=require("react"),A=require("./heading-BPeRwNYu.js"),D=require("./index-kcwFA4Dv.js"),m=require("./index-DlMXYAr3.js"),C=require("./index-BVmlsxuF.js"),F=require("./index-Cje7xxa1.js"),k=require("./bind-DeUYJ6m9.js"),H=require("./checkmark.es-lYntWFA3.js");function z(e){const a=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const n in e)if(n!=="default"){const o=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(a,n,o.get?o:{enumerable:!0,get:()=>e[n]})}}return a.default=e,Object.freeze(a)}const B=z(u);var N="Toggle",$=B.forwardRef((e,a)=>{const{pressed:n,defaultPressed:o,onPressedChange:t,...i}=e,[r,s]=m.useControllableState({prop:n,onChange:t,defaultProp:o??!1,caller:N});return l.jsx(m.Primitive.button,{type:"button","aria-pressed":r,"data-state":r?"on":"off","data-disabled":e.disabled?"":void 0,...i,ref:a,onClick:m.composeEventHandlers(e.onClick,()=>{e.disabled||s(!r)})})});$.displayName=N;var g="ToggleGroup",[w]=D.createContextScope(g,[C.createRovingFocusGroupScope]),R=C.createRovingFocusGroupScope(),j=u.forwardRef((e,a)=>{const{type:n,...o}=e;if(n==="single"){const t=o;return l.jsx(L,{...t,ref:a})}if(n==="multiple"){const t=o;return l.jsx(U,{...t,ref:a})}throw new Error(`Missing prop \`type\` expected on \`${g}\``)});j.displayName=g;var[S,V]=w(g),L=u.forwardRef((e,a)=>{const{value:n,defaultValue:o,onValueChange:t=()=>{},...i}=e,[r,s]=m.useControllableState({prop:n,defaultProp:o??"",onChange:t,caller:g});return l.jsx(S,{scope:e.__scopeToggleGroup,type:"single",value:u.useMemo(()=>r?[r]:[],[r]),onItemActivate:s,onItemDeactivate:u.useCallback(()=>s(""),[s]),children:l.jsx(E,{...i,ref:a})})}),U=u.forwardRef((e,a)=>{const{value:n,defaultValue:o,onValueChange:t=()=>{},...i}=e,[r,s]=m.useControllableState({prop:n,defaultProp:o??[],onChange:t,caller:g}),c=u.useCallback(p=>s((d=[])=>[...d,p]),[s]),h=u.useCallback(p=>s((d=[])=>d.filter(b=>b!==p)),[s]);return l.jsx(S,{scope:e.__scopeToggleGroup,type:"multiple",value:r,onItemActivate:c,onItemDeactivate:h,children:l.jsx(E,{...i,ref:a})})});j.displayName=g;var[J,K]=w(g),E=u.forwardRef((e,a)=>{const{__scopeToggleGroup:n,disabled:o=!1,rovingFocus:t=!0,orientation:i,dir:r,loop:s=!0,...c}=e,h=R(n),p=F.useDirection(r),d={role:"group",dir:p,...c};return l.jsx(J,{scope:n,rovingFocus:t,disabled:o,children:t?l.jsx(C.Root,{asChild:!0,...h,orientation:i,dir:p,loop:s,children:l.jsx(m.Primitive.div,{...d,ref:a})}):l.jsx(m.Primitive.div,{...d,ref:a})})}),_="ToggleGroupItem",M=u.forwardRef((e,a)=>{const n=V(_,e.__scopeToggleGroup),o=K(_,e.__scopeToggleGroup),t=R(e.__scopeToggleGroup),i=n.value.includes(e.value),r=o.disabled||e.disabled,s={...e,pressed:i,disabled:r},c=u.useRef(null);return o.rovingFocus?l.jsx(C.Item,{asChild:!0,...t,focusable:!r,active:i,ref:c,children:l.jsx(P,{...s,ref:a})}):l.jsx(P,{...s,ref:a})});M.displayName=_;var P=u.forwardRef((e,a)=>{const{__scopeToggleGroup:n,value:o,...t}=e,i=V(_,n),r={role:"radio","aria-checked":e.pressed,"aria-pressed":void 0},s=i.type==="single"?r:void 0;return l.jsx($,{...s,...t,ref:a,onPressedChange:c=>{c?i.onItemActivate(o):i.onItemDeactivate(o)}})}),T=j,Q=M;const O={"purpur-chip-group":"_purpur-chip-group_m2vd5_1","purpur-chip-group--container":"_purpur-chip-group--container_m2vd5_6","purpur-chip-group--full-width":"_purpur-chip-group--full-width_m2vd5_12"},W={"purpur-chip-group-item":"_purpur-chip-group-item_11j23_1","purpur-chip-group-item__line-wrapper":"_purpur-chip-group-item__line-wrapper_11j23_19","purpur-chip-group-item__checkmark-icon":"_purpur-chip-group-item__checkmark-icon_11j23_36","purpur-chip-group-item--disabled":"_purpur-chip-group-item--disabled_11j23_51"},x=k.c.bind(W),f="purpur-chip-group-item",q=({["aria-label"]:e,children:a,className:n,["data-testid"]:o,disabled:t=!1,showCheckmark:i=!1,unavailable:r=!1,value:s,...c})=>{const h=x([f,{[`${f}--disabled`]:t,[`${f}--unavailable`]:r},n]),p=d=>{t&&d.preventDefault()};return l.jsxs(Q,{"aria-label":e,"data-testid":o,className:`${h} ${f}`,value:s,onClick:p,"aria-disabled":t,...c,children:[a,i&&l.jsx(H.a,{size:"sm",className:x(`${f}__checkmark-icon`),"data-testid":"checkmark icon"}),r&&l.jsx("span",{className:x(`${f}__line-wrapper`),"data-testid":"unavailable line wrapper"})]})},X=e=>u.isValidElement(e)&&e?.type===q,Y=e=>e.type==="choice",I=2,Z=k.c.bind(O),G="purpur-chip-group",y=({children:e,className:a,fullWidth:n=!1,title:o,titleProps:t,name:i,...r})=>{const s=Z([G,{[`${G}--full-width`]:n},a]),c=u.useId(),h=u.Children.toArray(e).filter(X),p=u.Children.map(h,v=>u.cloneElement(v,{showCheckmark:r.type==="filter"&&r.value.includes(v.props.value),unavailable:r.type==="choice"&&v.props.unavailable})),d=v=>{(r.type==="filter"||v!=="")&&r.onValueChange(v)};u.useEffect(()=>{r.type==="choice"&&p.length<I&&console.warn(`Minimum number of chips should be ${I} when using the "choice" type`)},[p,r.type]);const b=()=>Y(r)?l.jsx(T,{className:s,...r,"aria-labelledby":o?`${t?.id??c}-label`:void 0,onValueChange:d,type:"single",children:p}):l.jsx(T,{className:s,...r,"aria-labelledby":o?`${t?.id??c}-label`:void 0,onValueChange:d,type:"multiple",children:p});return l.jsxs("div",{className:O[`${G}--container`],children:[o&&l.jsx(A.Heading,{tag:"h2",variant:"subsection-100",...t,id:`${t?.id??c}-label`,children:o}),b(),i&&r.type==="choice"&&l.jsx("input",{type:"hidden",name:i,value:r.value})]})};y.Item=q;y.displayName="ChipGroup";exports.ChipGroup=y;
2
+ //# sourceMappingURL=chip-group-BLuG0MC6.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"chip-group-B775zvKD.js","sources":["../../../common/temp/node_modules/.pnpm/@radix-ui+react-toggle@1.1.10_@types+react-dom@19.2.3_@types+react@19.2.14__@types+reac_63d136f11f5f79b42c1373b9162ffc86/node_modules/@radix-ui/react-toggle/dist/index.mjs","../../../common/temp/node_modules/.pnpm/@radix-ui+react-toggle-group@1.1.11_@types+react-dom@19.2.3_@types+react@19.2.14__@type_0c124bdbaa351e80a671757a596f81ce/node_modules/@radix-ui/react-toggle-group/dist/index.mjs","../../../components/chip-group/src/chip-group-item.tsx","../../../components/chip-group/src/chip-group.tsx"],"sourcesContent":["\"use client\";\n\n// src/toggle.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { jsx } from \"react/jsx-runtime\";\nvar NAME = \"Toggle\";\nvar Toggle = React.forwardRef((props, forwardedRef) => {\n const { pressed: pressedProp, defaultPressed, onPressedChange, ...buttonProps } = props;\n const [pressed, setPressed] = useControllableState({\n prop: pressedProp,\n onChange: onPressedChange,\n defaultProp: defaultPressed ?? false,\n caller: NAME\n });\n return /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n \"aria-pressed\": pressed,\n \"data-state\": pressed ? \"on\" : \"off\",\n \"data-disabled\": props.disabled ? \"\" : void 0,\n ...buttonProps,\n ref: forwardedRef,\n onClick: composeEventHandlers(props.onClick, () => {\n if (!props.disabled) {\n setPressed(!pressed);\n }\n })\n }\n );\n});\nToggle.displayName = NAME;\nvar Root = Toggle;\nexport {\n Root,\n Toggle\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/toggle-group.tsx\nimport React from \"react\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport * as RovingFocusGroup from \"@radix-ui/react-roving-focus\";\nimport { createRovingFocusGroupScope } from \"@radix-ui/react-roving-focus\";\nimport { Toggle } from \"@radix-ui/react-toggle\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { useDirection } from \"@radix-ui/react-direction\";\nimport { jsx } from \"react/jsx-runtime\";\nvar TOGGLE_GROUP_NAME = \"ToggleGroup\";\nvar [createToggleGroupContext, createToggleGroupScope] = createContextScope(TOGGLE_GROUP_NAME, [\n createRovingFocusGroupScope\n]);\nvar useRovingFocusGroupScope = createRovingFocusGroupScope();\nvar ToggleGroup = React.forwardRef((props, forwardedRef) => {\n const { type, ...toggleGroupProps } = props;\n if (type === \"single\") {\n const singleProps = toggleGroupProps;\n return /* @__PURE__ */ jsx(ToggleGroupImplSingle, { ...singleProps, ref: forwardedRef });\n }\n if (type === \"multiple\") {\n const multipleProps = toggleGroupProps;\n return /* @__PURE__ */ jsx(ToggleGroupImplMultiple, { ...multipleProps, ref: forwardedRef });\n }\n throw new Error(`Missing prop \\`type\\` expected on \\`${TOGGLE_GROUP_NAME}\\``);\n});\nToggleGroup.displayName = TOGGLE_GROUP_NAME;\nvar [ToggleGroupValueProvider, useToggleGroupValueContext] = createToggleGroupContext(TOGGLE_GROUP_NAME);\nvar ToggleGroupImplSingle = React.forwardRef((props, forwardedRef) => {\n const {\n value: valueProp,\n defaultValue,\n onValueChange = () => {\n },\n ...toggleGroupSingleProps\n } = props;\n const [value, setValue] = useControllableState({\n prop: valueProp,\n defaultProp: defaultValue ?? \"\",\n onChange: onValueChange,\n caller: TOGGLE_GROUP_NAME\n });\n return /* @__PURE__ */ jsx(\n ToggleGroupValueProvider,\n {\n scope: props.__scopeToggleGroup,\n type: \"single\",\n value: React.useMemo(() => value ? [value] : [], [value]),\n onItemActivate: setValue,\n onItemDeactivate: React.useCallback(() => setValue(\"\"), [setValue]),\n children: /* @__PURE__ */ jsx(ToggleGroupImpl, { ...toggleGroupSingleProps, ref: forwardedRef })\n }\n );\n});\nvar ToggleGroupImplMultiple = React.forwardRef((props, forwardedRef) => {\n const {\n value: valueProp,\n defaultValue,\n onValueChange = () => {\n },\n ...toggleGroupMultipleProps\n } = props;\n const [value, setValue] = useControllableState({\n prop: valueProp,\n defaultProp: defaultValue ?? [],\n onChange: onValueChange,\n caller: TOGGLE_GROUP_NAME\n });\n const handleButtonActivate = React.useCallback(\n (itemValue) => setValue((prevValue = []) => [...prevValue, itemValue]),\n [setValue]\n );\n const handleButtonDeactivate = React.useCallback(\n (itemValue) => setValue((prevValue = []) => prevValue.filter((value2) => value2 !== itemValue)),\n [setValue]\n );\n return /* @__PURE__ */ jsx(\n ToggleGroupValueProvider,\n {\n scope: props.__scopeToggleGroup,\n type: \"multiple\",\n value,\n onItemActivate: handleButtonActivate,\n onItemDeactivate: handleButtonDeactivate,\n children: /* @__PURE__ */ jsx(ToggleGroupImpl, { ...toggleGroupMultipleProps, ref: forwardedRef })\n }\n );\n});\nToggleGroup.displayName = TOGGLE_GROUP_NAME;\nvar [ToggleGroupContext, useToggleGroupContext] = createToggleGroupContext(TOGGLE_GROUP_NAME);\nvar ToggleGroupImpl = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeToggleGroup,\n disabled = false,\n rovingFocus = true,\n orientation,\n dir,\n loop = true,\n ...toggleGroupProps\n } = props;\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeToggleGroup);\n const direction = useDirection(dir);\n const commonProps = { role: \"group\", dir: direction, ...toggleGroupProps };\n return /* @__PURE__ */ jsx(ToggleGroupContext, { scope: __scopeToggleGroup, rovingFocus, disabled, children: rovingFocus ? /* @__PURE__ */ jsx(\n RovingFocusGroup.Root,\n {\n asChild: true,\n ...rovingFocusGroupScope,\n orientation,\n dir: direction,\n loop,\n children: /* @__PURE__ */ jsx(Primitive.div, { ...commonProps, ref: forwardedRef })\n }\n ) : /* @__PURE__ */ jsx(Primitive.div, { ...commonProps, ref: forwardedRef }) });\n }\n);\nvar ITEM_NAME = \"ToggleGroupItem\";\nvar ToggleGroupItem = React.forwardRef(\n (props, forwardedRef) => {\n const valueContext = useToggleGroupValueContext(ITEM_NAME, props.__scopeToggleGroup);\n const context = useToggleGroupContext(ITEM_NAME, props.__scopeToggleGroup);\n const rovingFocusGroupScope = useRovingFocusGroupScope(props.__scopeToggleGroup);\n const pressed = valueContext.value.includes(props.value);\n const disabled = context.disabled || props.disabled;\n const commonProps = { ...props, pressed, disabled };\n const ref = React.useRef(null);\n return context.rovingFocus ? /* @__PURE__ */ jsx(\n RovingFocusGroup.Item,\n {\n asChild: true,\n ...rovingFocusGroupScope,\n focusable: !disabled,\n active: pressed,\n ref,\n children: /* @__PURE__ */ jsx(ToggleGroupItemImpl, { ...commonProps, ref: forwardedRef })\n }\n ) : /* @__PURE__ */ jsx(ToggleGroupItemImpl, { ...commonProps, ref: forwardedRef });\n }\n);\nToggleGroupItem.displayName = ITEM_NAME;\nvar ToggleGroupItemImpl = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeToggleGroup, value, ...itemProps } = props;\n const valueContext = useToggleGroupValueContext(ITEM_NAME, __scopeToggleGroup);\n const singleProps = { role: \"radio\", \"aria-checked\": props.pressed, \"aria-pressed\": void 0 };\n const typeProps = valueContext.type === \"single\" ? singleProps : void 0;\n return /* @__PURE__ */ jsx(\n Toggle,\n {\n ...typeProps,\n ...itemProps,\n ref: forwardedRef,\n onPressedChange: (pressed) => {\n if (pressed) {\n valueContext.onItemActivate(value);\n } else {\n valueContext.onItemDeactivate(value);\n }\n }\n }\n );\n }\n);\nvar Root2 = ToggleGroup;\nvar Item2 = ToggleGroupItem;\nexport {\n Item2 as Item,\n Root2 as Root,\n ToggleGroup,\n ToggleGroupItem,\n createToggleGroupScope\n};\n//# sourceMappingURL=index.mjs.map\n","import React, { isValidElement, type MouseEvent, type ReactElement, type ReactNode } from \"react\";\nimport { IconCheckmark } from \"@purpur/icon/checkmark\";\nimport * as RadixToggleGroup from \"@radix-ui/react-toggle-group\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./chip-group-item.module.scss\";\n\ntype StylingProps = Pick<React.HTMLAttributes<HTMLElement>, \"style\" | \"className\">;\n\ntype ChipGroupItemProps = StylingProps & {\n [\"aria-label\"]?: string;\n [\"data-testid\"]?: string;\n children: ReactNode;\n /**\n * When `true`, prevents the user from interacting with the item.\n * */\n disabled?: boolean;\n /**\n * This prop will be passed automatically from the parent component (ChipGroup) when `type` is `\"filter\"`.\n * */\n showCheckmark?: boolean;\n /**\n * A unique value for the item.\n * */\n value: string;\n /**\n * This prop will only be used when `type` is `\"choice\"`.\n * When `true`, we recommend using `aria-label` to announce to screen readers that the option is unavailable.\n * */\n unavailable?: boolean;\n};\n\nconst cx = c.bind(styles);\nexport const rootClassName = \"purpur-chip-group-item\";\n\nexport const ChipGroupItem = ({\n [\"aria-label\"]: allyLabel,\n children,\n className,\n [\"data-testid\"]: dataTestId,\n disabled = false,\n showCheckmark = false,\n unavailable = false,\n value,\n ...props\n}: ChipGroupItemProps) => {\n const classes = cx([\n rootClassName,\n {\n [`${rootClassName}--disabled`]: disabled,\n [`${rootClassName}--unavailable`]: unavailable,\n },\n className,\n ]);\n\n const handleClick = (e: MouseEvent<HTMLButtonElement>) => {\n if (disabled) {\n e.preventDefault();\n }\n };\n\n return (\n <RadixToggleGroup.Item\n aria-label={allyLabel}\n data-testid={dataTestId}\n className={`${classes} ${rootClassName}`}\n value={value}\n onClick={handleClick}\n aria-disabled={disabled}\n {...props}\n >\n {children}\n {showCheckmark && (\n <IconCheckmark\n size=\"sm\"\n className={cx(`${rootClassName}__checkmark-icon`)}\n data-testid=\"checkmark icon\"\n />\n )}\n {unavailable && (\n <span\n className={cx(`${rootClassName}__line-wrapper`)}\n data-testid=\"unavailable line wrapper\"\n />\n )}\n </RadixToggleGroup.Item>\n );\n};\n\nexport const isChipGroupItem = (child?: ReactNode): child is ReactElement<ChipGroupItemProps> =>\n isValidElement<ChipGroupItemProps>(child) && child?.type === ChipGroupItem;\n","import React, { Children, cloneElement, type ReactNode, useEffect, useId } from \"react\";\nimport { Heading, type HeadingTagType } from \"@purpur/heading\";\nimport * as RadixToggleGroup from \"@radix-ui/react-toggle-group\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./chip-group.module.scss\";\nimport { ChipGroupItem, isChipGroupItem } from \"./chip-group-item\";\n\ntype StylingProps = Pick<React.HTMLAttributes<HTMLElement>, \"style\" | \"className\">;\n\ntype ChipGroupProps = StylingProps & {\n [\"data-testid\"]?: string;\n /**\n * Will only render given ChipGroupItems.\n * */\n children: ReactNode;\n /**\n * Makes the chips span the full container width if set to `true`.\n * */\n fullWidth?: boolean;\n /**\n * Renders above the chip group as a heading.\n * */\n title?: ReactNode;\n /**\n * Allows to customise title.\n */\n titleProps?: TitlePropsType;\n /**\n * Optional name for form submission\n */\n name?: string;\n};\n\nexport type TitlePropsType = StylingProps & {\n /**\n * Use custom id for connecting title and chip group.\n */\n id?: string;\n /**\n * Changes heading level.\n * @default h2\n */\n tag?: HeadingTagType;\n};\n\nexport type ChipGroupChoiceProps = {\n /**\n * Event handler called when the pressed state of an item changes.\n * */\n onValueChange: (value: string) => void;\n /**\n * Determines whether a single (`\"choice\"`) or multiple (`\"filter\"`) items can be pressed at a time.\n * */\n type: \"choice\";\n /**\n * The value of the pressed item(s).\n * */\n value: string;\n};\n\nexport type ChipGroupFilterProps = {\n /**\n * Event handler called when the pressed state of an item changes.\n * */\n onValueChange: (value: string[]) => void;\n /**\n * Determines whether a single (`\"choice\"`) or multiple (`\"filter\"`) items can be pressed at a time.\n * */\n type: \"filter\";\n /**\n * The value of the pressed item(s).\n * */\n value: string[];\n};\n\nconst isChoiceProps = (\n props: ChipGroupChoiceProps | ChipGroupFilterProps\n): props is ChipGroupChoiceProps => props.type === \"choice\";\n\ntype ChipGroupCmp<P> = React.FunctionComponent<P> & {\n Item: typeof ChipGroupItem;\n};\n\nconst MIN_CHOICE_OPTIONS = 2;\n\nconst cx = c.bind(styles);\nconst rootClassName = \"purpur-chip-group\";\n\nexport const ChipGroup: ChipGroupCmp<\n ChipGroupProps & (ChipGroupChoiceProps | ChipGroupFilterProps)\n> = ({ children, className, fullWidth = false, title, titleProps, name, ...props }) => {\n const classes = cx([\n rootClassName,\n {\n [`${rootClassName}--full-width`]: fullWidth,\n },\n className,\n ]);\n\n const id = useId();\n\n const chipGroupItemChildren = Children.toArray(children).filter(isChipGroupItem);\n\n const clonedChildren = Children.map(chipGroupItemChildren, (child) =>\n cloneElement(child, {\n showCheckmark: props.type === \"filter\" && props.value.includes(child.props.value),\n unavailable: props.type === \"choice\" && child.props.unavailable,\n })\n );\n\n const handleValueChange = (value: string & string[]) => {\n if (props.type === \"filter\" || value !== \"\") {\n props.onValueChange(value);\n }\n };\n\n useEffect(() => {\n if (props.type === \"choice\" && clonedChildren.length < MIN_CHOICE_OPTIONS) {\n console.warn(\n `Minimum number of chips should be ${MIN_CHOICE_OPTIONS} when using the \"choice\" type`\n );\n }\n }, [clonedChildren, props.type]);\n\n const chipGroupChildren = () => {\n if (isChoiceProps(props)) {\n return (\n <RadixToggleGroup.Root\n className={classes}\n {...props}\n aria-labelledby={title ? `${titleProps?.id ?? id}-label` : undefined}\n onValueChange={handleValueChange}\n type=\"single\"\n >\n {clonedChildren}\n </RadixToggleGroup.Root>\n );\n }\n return (\n <RadixToggleGroup.Root\n className={classes}\n {...props}\n aria-labelledby={title ? `${titleProps?.id ?? id}-label` : undefined}\n onValueChange={handleValueChange}\n type=\"multiple\"\n >\n {clonedChildren}\n </RadixToggleGroup.Root>\n );\n };\n\n return (\n <div className={styles[`${rootClassName}--container`]}>\n {title && (\n <Heading\n tag=\"h2\"\n variant=\"subsection-100\"\n {...titleProps}\n id={`${titleProps?.id ?? id}-label`}\n >\n {title}\n </Heading>\n )}\n {chipGroupChildren()}\n {name && props.type === \"choice\" && <input type=\"hidden\" name={name} value={props.value} />}\n </div>\n );\n};\n\nChipGroup.Item = ChipGroupItem;\n\nChipGroup.displayName = \"ChipGroup\";\n"],"names":["NAME","Toggle","React","props","forwardedRef","pressedProp","defaultPressed","onPressedChange","buttonProps","pressed","setPressed","useControllableState","jsx","Primitive","composeEventHandlers","TOGGLE_GROUP_NAME","createToggleGroupContext","createContextScope","createRovingFocusGroupScope","useRovingFocusGroupScope","ToggleGroup","type","toggleGroupProps","singleProps","ToggleGroupImplSingle","multipleProps","ToggleGroupImplMultiple","ToggleGroupValueProvider","useToggleGroupValueContext","valueProp","defaultValue","onValueChange","toggleGroupSingleProps","value","setValue","ToggleGroupImpl","toggleGroupMultipleProps","handleButtonActivate","itemValue","prevValue","handleButtonDeactivate","value2","ToggleGroupContext","useToggleGroupContext","__scopeToggleGroup","disabled","rovingFocus","orientation","dir","loop","rovingFocusGroupScope","direction","useDirection","commonProps","RovingFocusGroup.Root","ITEM_NAME","ToggleGroupItem","valueContext","context","ref","RovingFocusGroup.Item","ToggleGroupItemImpl","itemProps","typeProps","Root2","Item2","cx","c","styles","rootClassName","ChipGroupItem","allyLabel","children","className","dataTestId","showCheckmark","unavailable","classes","handleClick","e","jsxs","RadixToggleGroup.Item","IconCheckmark","isChipGroupItem","child","isValidElement","isChoiceProps","MIN_CHOICE_OPTIONS","ChipGroup","fullWidth","title","titleProps","name","id","useId","chipGroupItemChildren","Children","clonedChildren","cloneElement","handleValueChange","useEffect","chipGroupChildren","RadixToggleGroup.Root","Heading"],"mappings":"8kBAQA,IAAIA,EAAO,SACPC,EAASC,EAAM,WAAW,CAACC,EAAOC,IAAiB,CACrD,KAAM,CAAE,QAASC,EAAa,eAAAC,EAAgB,gBAAAC,EAAiB,GAAGC,CAAW,EAAKL,EAC5E,CAACM,EAASC,CAAU,EAAIC,uBAAqB,CACjD,KAAMN,EACN,SAAUE,EACV,YAAaD,GAAkB,GAC/B,OAAQN,CACZ,CAAG,EACD,OAAuBY,EAAAA,IACrBC,EAAAA,UAAU,OACV,CACE,KAAM,SACN,eAAgBJ,EAChB,aAAcA,EAAU,KAAO,MAC/B,gBAAiBN,EAAM,SAAW,GAAK,OACvC,GAAGK,EACH,IAAKJ,EACL,QAASU,EAAAA,qBAAqBX,EAAM,QAAS,IAAM,CAC5CA,EAAM,UACTO,EAAW,CAACD,CAAO,CAEvB,CAAC,CACP,CACA,CACA,CAAC,EACDR,EAAO,YAAcD,ECtBrB,IAAIe,EAAoB,cACpB,CAACC,CAAgD,EAAIC,EAAAA,mBAAmBF,EAAmB,CAC7FG,EAAAA,2BACF,CAAC,EACGC,EAA2BD,EAAAA,4BAA2B,EACtDE,EAAclB,EAAM,WAAW,CAACC,EAAOC,IAAiB,CAC1D,KAAM,CAAE,KAAAiB,EAAM,GAAGC,CAAgB,EAAKnB,EACtC,GAAIkB,IAAS,SAAU,CACrB,MAAME,EAAcD,EACpB,OAAuBV,EAAAA,IAAIY,EAAuB,CAAE,GAAGD,EAAa,IAAKnB,EAAc,CACzF,CACA,GAAIiB,IAAS,WAAY,CACvB,MAAMI,EAAgBH,EACtB,OAAuBV,EAAAA,IAAIc,EAAyB,CAAE,GAAGD,EAAe,IAAKrB,EAAc,CAC7F,CACA,MAAM,IAAI,MAAM,uCAAuCW,CAAiB,IAAI,CAC9E,CAAC,EACDK,EAAY,YAAcL,EAC1B,GAAI,CAACY,EAA0BC,CAA0B,EAAIZ,EAAyBD,CAAiB,EACnGS,EAAwBtB,EAAM,WAAW,CAACC,EAAOC,IAAiB,CACpE,KAAM,CACJ,MAAOyB,EACP,aAAAC,EACA,cAAAC,EAAgB,IAAM,CACtB,EACA,GAAGC,CACP,EAAM7B,EACE,CAAC8B,EAAOC,CAAQ,EAAIvB,uBAAqB,CAC7C,KAAMkB,EACN,YAAaC,GAAgB,GAC7B,SAAUC,EACV,OAAQhB,CACZ,CAAG,EACD,OAAuBH,EAAAA,IACrBe,EACA,CACE,MAAOxB,EAAM,mBACb,KAAM,SACN,MAAOD,EAAM,QAAQ,IAAM+B,EAAQ,CAACA,CAAK,EAAI,CAAA,EAAI,CAACA,CAAK,CAAC,EACxD,eAAgBC,EAChB,iBAAkBhC,EAAM,YAAY,IAAMgC,EAAS,EAAE,EAAG,CAACA,CAAQ,CAAC,EAClE,SAA0BtB,EAAAA,IAAIuB,EAAiB,CAAE,GAAGH,EAAwB,IAAK5B,CAAY,CAAE,CACrG,CACA,CACA,CAAC,EACGsB,EAA0BxB,EAAM,WAAW,CAACC,EAAOC,IAAiB,CACtE,KAAM,CACJ,MAAOyB,EACP,aAAAC,EACA,cAAAC,EAAgB,IAAM,CACtB,EACA,GAAGK,CACP,EAAMjC,EACE,CAAC8B,EAAOC,CAAQ,EAAIvB,uBAAqB,CAC7C,KAAMkB,EACN,YAAaC,GAAgB,CAAA,EAC7B,SAAUC,EACV,OAAQhB,CACZ,CAAG,EACKsB,EAAuBnC,EAAM,YAChCoC,GAAcJ,EAAS,CAACK,EAAY,CAAA,IAAO,CAAC,GAAGA,EAAWD,CAAS,CAAC,EACrE,CAACJ,CAAQ,CACb,EACQM,EAAyBtC,EAAM,YAClCoC,GAAcJ,EAAS,CAACK,EAAY,CAAA,IAAOA,EAAU,OAAQE,GAAWA,IAAWH,CAAS,CAAC,EAC9F,CAACJ,CAAQ,CACb,EACE,OAAuBtB,EAAAA,IACrBe,EACA,CACE,MAAOxB,EAAM,mBACb,KAAM,WACN,MAAA8B,EACA,eAAgBI,EAChB,iBAAkBG,EAClB,SAA0B5B,EAAAA,IAAIuB,EAAiB,CAAE,GAAGC,EAA0B,IAAKhC,CAAY,CAAE,CACvG,CACA,CACA,CAAC,EACDgB,EAAY,YAAcL,EAC1B,GAAI,CAAC2B,EAAoBC,CAAqB,EAAI3B,EAAyBD,CAAiB,EACxFoB,EAAkBjC,EAAM,WAC1B,CAACC,EAAOC,IAAiB,CACvB,KAAM,CACJ,mBAAAwC,EACA,SAAAC,EAAW,GACX,YAAAC,EAAc,GACd,YAAAC,EACA,IAAAC,EACA,KAAAC,EAAO,GACP,GAAG3B,CACT,EAAQnB,EACE+C,EAAwB/B,EAAyByB,CAAkB,EACnEO,EAAYC,EAAAA,aAAaJ,CAAG,EAC5BK,EAAc,CAAE,KAAM,QAAS,IAAKF,EAAW,GAAG7B,CAAgB,EACxE,OAAuBV,EAAAA,IAAI8B,EAAoB,CAAE,MAAOE,EAAoB,YAAAE,EAAa,SAAAD,EAAU,SAAUC,EAA8BlC,EAAAA,IACzI0C,EAAAA,KACA,CACE,QAAS,GACT,GAAGJ,EACH,YAAAH,EACA,IAAKI,EACL,KAAAF,EACA,SAA0BrC,EAAAA,IAAIC,YAAU,IAAK,CAAE,GAAGwC,EAAa,IAAKjD,CAAY,CAAE,CAC1F,CACA,EAAwBQ,EAAAA,IAAIC,EAAAA,UAAU,IAAK,CAAE,GAAGwC,EAAa,IAAKjD,CAAY,CAAE,EAAG,CACjF,CACF,EACImD,EAAY,kBACZC,EAAkBtD,EAAM,WAC1B,CAACC,EAAOC,IAAiB,CACvB,MAAMqD,EAAe7B,EAA2B2B,EAAWpD,EAAM,kBAAkB,EAC7EuD,EAAUf,EAAsBY,EAAWpD,EAAM,kBAAkB,EACnE+C,EAAwB/B,EAAyBhB,EAAM,kBAAkB,EACzEM,EAAUgD,EAAa,MAAM,SAAStD,EAAM,KAAK,EACjD0C,EAAWa,EAAQ,UAAYvD,EAAM,SACrCkD,EAAc,CAAE,GAAGlD,EAAO,QAAAM,EAAS,SAAAoC,CAAQ,EAC3Cc,EAAMzD,EAAM,OAAO,IAAI,EAC7B,OAAOwD,EAAQ,YAA8B9C,EAAAA,IAC3CgD,EAAAA,KACA,CACE,QAAS,GACT,GAAGV,EACH,UAAW,CAACL,EACZ,OAAQpC,EACR,IAAAkD,EACA,SAA0B/C,EAAAA,IAAIiD,EAAqB,CAAE,GAAGR,EAAa,IAAKjD,CAAY,CAAE,CAChG,CACA,EAAwBQ,EAAAA,IAAIiD,EAAqB,CAAE,GAAGR,EAAa,IAAKjD,EAAc,CACpF,CACF,EACAoD,EAAgB,YAAcD,EAC9B,IAAIM,EAAsB3D,EAAM,WAC9B,CAACC,EAAOC,IAAiB,CACvB,KAAM,CAAE,mBAAAwC,EAAoB,MAAAX,EAAO,GAAG6B,CAAS,EAAK3D,EAC9CsD,EAAe7B,EAA2B2B,EAAWX,CAAkB,EACvErB,EAAc,CAAE,KAAM,QAAS,eAAgBpB,EAAM,QAAS,eAAgB,MAAM,EACpF4D,EAAYN,EAAa,OAAS,SAAWlC,EAAc,OACjE,OAAuBX,EAAAA,IACrBX,EACA,CACE,GAAG8D,EACH,GAAGD,EACH,IAAK1D,EACL,gBAAkBK,GAAY,CACxBA,EACFgD,EAAa,eAAexB,CAAK,EAEjCwB,EAAa,iBAAiBxB,CAAK,CAEvC,CACR,CACA,CACE,CACF,EACI+B,EAAQ5C,EACR6C,EAAQT,ihBCxINU,EAAKC,EAAAA,EAAE,KAAKC,CAAM,EACXC,EAAgB,yBAEhBC,EAAgB,CAAC,CAC5B,CAAC,cAAeC,EAChB,SAAAC,EACA,UAAAC,EACA,CAAC,eAAgBC,EACjB,SAAA7B,EAAW,GACX,cAAA8B,EAAgB,GAChB,YAAAC,EAAc,GACd,MAAA3C,EACA,GAAG9B,CACL,IAA0B,CACxB,MAAM0E,EAAUX,EAAG,CACjBG,EACA,CACE,CAAC,GAAGA,CAAa,YAAY,EAAGxB,EAChC,CAAC,GAAGwB,CAAa,eAAe,EAAGO,CAAA,EAErCH,CAAA,CACD,EAEKK,EAAeC,GAAqC,CACpDlC,GACFkC,EAAE,eAAA,CAEN,EAEA,OACEC,EAAAA,KAACC,EAAA,CACC,aAAYV,EACZ,cAAaG,EACb,UAAW,GAAGG,CAAO,IAAIR,CAAa,GACtC,MAAApC,EACA,QAAS6C,EACT,gBAAejC,EACd,GAAG1C,EAEH,SAAA,CAAAqE,EACAG,GACC/D,EAAAA,IAACsE,EAAAA,EAAA,CACC,KAAK,KACL,UAAWhB,EAAG,GAAGG,CAAa,kBAAkB,EAChD,cAAY,gBAAA,CAAA,EAGfO,GACChE,EAAAA,IAAC,OAAA,CACC,UAAWsD,EAAG,GAAGG,CAAa,gBAAgB,EAC9C,cAAY,0BAAA,CAAA,CACd,CAAA,CAAA,CAIR,EAEac,EAAmBC,GAC9BC,EAAAA,eAAmCD,CAAK,GAAKA,GAAO,OAASd,ECdzDgB,EACJnF,GACkCA,EAAM,OAAS,SAM7CoF,EAAqB,EAErBrB,EAAKC,EAAAA,EAAE,KAAKC,CAAM,EAClBC,EAAgB,oBAETmB,EAET,CAAC,CAAE,SAAAhB,EAAU,UAAAC,EAAW,UAAAgB,EAAY,GAAO,MAAAC,EAAO,WAAAC,EAAY,KAAAC,EAAM,GAAGzF,CAAA,IAAY,CACrF,MAAM0E,EAAUX,EAAG,CACjBG,EACA,CACE,CAAC,GAAGA,CAAa,cAAc,EAAGoB,CAAA,EAEpChB,CAAA,CACD,EAEKoB,EAAKC,EAAAA,MAAA,EAELC,EAAwBC,EAAAA,SAAS,QAAQxB,CAAQ,EAAE,OAAOW,CAAe,EAEzEc,EAAiBD,EAAAA,SAAS,IAAID,EAAwBX,GAC1Dc,EAAAA,aAAad,EAAO,CAClB,cAAejF,EAAM,OAAS,UAAYA,EAAM,MAAM,SAASiF,EAAM,MAAM,KAAK,EAChF,YAAajF,EAAM,OAAS,UAAYiF,EAAM,MAAM,WAAA,CACrD,CAAA,EAGGe,EAAqBlE,GAA6B,EAClD9B,EAAM,OAAS,UAAY8B,IAAU,KACvC9B,EAAM,cAAc8B,CAAK,CAE7B,EAEAmE,EAAAA,UAAU,IAAM,CACVjG,EAAM,OAAS,UAAY8F,EAAe,OAASV,GACrD,QAAQ,KACN,qCAAqCA,CAAkB,+BAAA,CAG7D,EAAG,CAACU,EAAgB9F,EAAM,IAAI,CAAC,EAE/B,MAAMkG,EAAoB,IACpBf,EAAcnF,CAAK,EAEnBS,EAAAA,IAAC0F,EAAA,CACC,UAAWzB,EACV,GAAG1E,EACJ,kBAAiBuF,EAAQ,GAAGC,GAAY,IAAME,CAAE,SAAW,OAC3D,cAAeM,EACf,KAAK,SAEJ,SAAAF,CAAA,CAAA,EAKLrF,EAAAA,IAAC0F,EAAA,CACC,UAAWzB,EACV,GAAG1E,EACJ,kBAAiBuF,EAAQ,GAAGC,GAAY,IAAME,CAAE,SAAW,OAC3D,cAAeM,EACf,KAAK,WAEJ,SAAAF,CAAA,CAAA,EAKP,cACG,MAAA,CAAI,UAAW7B,EAAO,GAAGC,CAAa,aAAa,EACjD,SAAA,CAAAqB,GACC9E,EAAAA,IAAC2F,EAAAA,QAAA,CACC,IAAI,KACJ,QAAQ,iBACP,GAAGZ,EACJ,GAAI,GAAGA,GAAY,IAAME,CAAE,SAE1B,SAAAH,CAAA,CAAA,EAGJW,EAAA,EACAT,GAAQzF,EAAM,OAAS,UAAYS,EAAAA,IAAC,QAAA,CAAM,KAAK,SAAS,KAAAgF,EAAY,MAAOzF,EAAM,KAAA,CAAO,CAAA,EAC3F,CAEJ,EAEAqF,EAAU,KAAOlB,EAEjBkB,EAAU,YAAc","x_google_ignoreList":[0,1]}
1
+ {"version":3,"file":"chip-group-BLuG0MC6.js","sources":["../../../common/temp/node_modules/.pnpm/@radix-ui+react-toggle@1.1.10_@types+react-dom@19.2.3_@types+react@19.2.14__@types+reac_63d136f11f5f79b42c1373b9162ffc86/node_modules/@radix-ui/react-toggle/dist/index.mjs","../../../common/temp/node_modules/.pnpm/@radix-ui+react-toggle-group@1.1.11_@types+react-dom@19.2.3_@types+react@19.2.14__@type_0c124bdbaa351e80a671757a596f81ce/node_modules/@radix-ui/react-toggle-group/dist/index.mjs","../../../components/chip-group/src/chip-group-item.tsx","../../../components/chip-group/src/chip-group.tsx"],"sourcesContent":["\"use client\";\n\n// src/toggle.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { jsx } from \"react/jsx-runtime\";\nvar NAME = \"Toggle\";\nvar Toggle = React.forwardRef((props, forwardedRef) => {\n const { pressed: pressedProp, defaultPressed, onPressedChange, ...buttonProps } = props;\n const [pressed, setPressed] = useControllableState({\n prop: pressedProp,\n onChange: onPressedChange,\n defaultProp: defaultPressed ?? false,\n caller: NAME\n });\n return /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n \"aria-pressed\": pressed,\n \"data-state\": pressed ? \"on\" : \"off\",\n \"data-disabled\": props.disabled ? \"\" : void 0,\n ...buttonProps,\n ref: forwardedRef,\n onClick: composeEventHandlers(props.onClick, () => {\n if (!props.disabled) {\n setPressed(!pressed);\n }\n })\n }\n );\n});\nToggle.displayName = NAME;\nvar Root = Toggle;\nexport {\n Root,\n Toggle\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/toggle-group.tsx\nimport React from \"react\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport * as RovingFocusGroup from \"@radix-ui/react-roving-focus\";\nimport { createRovingFocusGroupScope } from \"@radix-ui/react-roving-focus\";\nimport { Toggle } from \"@radix-ui/react-toggle\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { useDirection } from \"@radix-ui/react-direction\";\nimport { jsx } from \"react/jsx-runtime\";\nvar TOGGLE_GROUP_NAME = \"ToggleGroup\";\nvar [createToggleGroupContext, createToggleGroupScope] = createContextScope(TOGGLE_GROUP_NAME, [\n createRovingFocusGroupScope\n]);\nvar useRovingFocusGroupScope = createRovingFocusGroupScope();\nvar ToggleGroup = React.forwardRef((props, forwardedRef) => {\n const { type, ...toggleGroupProps } = props;\n if (type === \"single\") {\n const singleProps = toggleGroupProps;\n return /* @__PURE__ */ jsx(ToggleGroupImplSingle, { ...singleProps, ref: forwardedRef });\n }\n if (type === \"multiple\") {\n const multipleProps = toggleGroupProps;\n return /* @__PURE__ */ jsx(ToggleGroupImplMultiple, { ...multipleProps, ref: forwardedRef });\n }\n throw new Error(`Missing prop \\`type\\` expected on \\`${TOGGLE_GROUP_NAME}\\``);\n});\nToggleGroup.displayName = TOGGLE_GROUP_NAME;\nvar [ToggleGroupValueProvider, useToggleGroupValueContext] = createToggleGroupContext(TOGGLE_GROUP_NAME);\nvar ToggleGroupImplSingle = React.forwardRef((props, forwardedRef) => {\n const {\n value: valueProp,\n defaultValue,\n onValueChange = () => {\n },\n ...toggleGroupSingleProps\n } = props;\n const [value, setValue] = useControllableState({\n prop: valueProp,\n defaultProp: defaultValue ?? \"\",\n onChange: onValueChange,\n caller: TOGGLE_GROUP_NAME\n });\n return /* @__PURE__ */ jsx(\n ToggleGroupValueProvider,\n {\n scope: props.__scopeToggleGroup,\n type: \"single\",\n value: React.useMemo(() => value ? [value] : [], [value]),\n onItemActivate: setValue,\n onItemDeactivate: React.useCallback(() => setValue(\"\"), [setValue]),\n children: /* @__PURE__ */ jsx(ToggleGroupImpl, { ...toggleGroupSingleProps, ref: forwardedRef })\n }\n );\n});\nvar ToggleGroupImplMultiple = React.forwardRef((props, forwardedRef) => {\n const {\n value: valueProp,\n defaultValue,\n onValueChange = () => {\n },\n ...toggleGroupMultipleProps\n } = props;\n const [value, setValue] = useControllableState({\n prop: valueProp,\n defaultProp: defaultValue ?? [],\n onChange: onValueChange,\n caller: TOGGLE_GROUP_NAME\n });\n const handleButtonActivate = React.useCallback(\n (itemValue) => setValue((prevValue = []) => [...prevValue, itemValue]),\n [setValue]\n );\n const handleButtonDeactivate = React.useCallback(\n (itemValue) => setValue((prevValue = []) => prevValue.filter((value2) => value2 !== itemValue)),\n [setValue]\n );\n return /* @__PURE__ */ jsx(\n ToggleGroupValueProvider,\n {\n scope: props.__scopeToggleGroup,\n type: \"multiple\",\n value,\n onItemActivate: handleButtonActivate,\n onItemDeactivate: handleButtonDeactivate,\n children: /* @__PURE__ */ jsx(ToggleGroupImpl, { ...toggleGroupMultipleProps, ref: forwardedRef })\n }\n );\n});\nToggleGroup.displayName = TOGGLE_GROUP_NAME;\nvar [ToggleGroupContext, useToggleGroupContext] = createToggleGroupContext(TOGGLE_GROUP_NAME);\nvar ToggleGroupImpl = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeToggleGroup,\n disabled = false,\n rovingFocus = true,\n orientation,\n dir,\n loop = true,\n ...toggleGroupProps\n } = props;\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeToggleGroup);\n const direction = useDirection(dir);\n const commonProps = { role: \"group\", dir: direction, ...toggleGroupProps };\n return /* @__PURE__ */ jsx(ToggleGroupContext, { scope: __scopeToggleGroup, rovingFocus, disabled, children: rovingFocus ? /* @__PURE__ */ jsx(\n RovingFocusGroup.Root,\n {\n asChild: true,\n ...rovingFocusGroupScope,\n orientation,\n dir: direction,\n loop,\n children: /* @__PURE__ */ jsx(Primitive.div, { ...commonProps, ref: forwardedRef })\n }\n ) : /* @__PURE__ */ jsx(Primitive.div, { ...commonProps, ref: forwardedRef }) });\n }\n);\nvar ITEM_NAME = \"ToggleGroupItem\";\nvar ToggleGroupItem = React.forwardRef(\n (props, forwardedRef) => {\n const valueContext = useToggleGroupValueContext(ITEM_NAME, props.__scopeToggleGroup);\n const context = useToggleGroupContext(ITEM_NAME, props.__scopeToggleGroup);\n const rovingFocusGroupScope = useRovingFocusGroupScope(props.__scopeToggleGroup);\n const pressed = valueContext.value.includes(props.value);\n const disabled = context.disabled || props.disabled;\n const commonProps = { ...props, pressed, disabled };\n const ref = React.useRef(null);\n return context.rovingFocus ? /* @__PURE__ */ jsx(\n RovingFocusGroup.Item,\n {\n asChild: true,\n ...rovingFocusGroupScope,\n focusable: !disabled,\n active: pressed,\n ref,\n children: /* @__PURE__ */ jsx(ToggleGroupItemImpl, { ...commonProps, ref: forwardedRef })\n }\n ) : /* @__PURE__ */ jsx(ToggleGroupItemImpl, { ...commonProps, ref: forwardedRef });\n }\n);\nToggleGroupItem.displayName = ITEM_NAME;\nvar ToggleGroupItemImpl = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeToggleGroup, value, ...itemProps } = props;\n const valueContext = useToggleGroupValueContext(ITEM_NAME, __scopeToggleGroup);\n const singleProps = { role: \"radio\", \"aria-checked\": props.pressed, \"aria-pressed\": void 0 };\n const typeProps = valueContext.type === \"single\" ? singleProps : void 0;\n return /* @__PURE__ */ jsx(\n Toggle,\n {\n ...typeProps,\n ...itemProps,\n ref: forwardedRef,\n onPressedChange: (pressed) => {\n if (pressed) {\n valueContext.onItemActivate(value);\n } else {\n valueContext.onItemDeactivate(value);\n }\n }\n }\n );\n }\n);\nvar Root2 = ToggleGroup;\nvar Item2 = ToggleGroupItem;\nexport {\n Item2 as Item,\n Root2 as Root,\n ToggleGroup,\n ToggleGroupItem,\n createToggleGroupScope\n};\n//# sourceMappingURL=index.mjs.map\n","import React, { isValidElement, type MouseEvent, type ReactElement, type ReactNode } from \"react\";\nimport { IconCheckmark } from \"@purpur/icon/checkmark\";\nimport * as RadixToggleGroup from \"@radix-ui/react-toggle-group\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./chip-group-item.module.scss\";\n\ntype StylingProps = Pick<React.HTMLAttributes<HTMLElement>, \"style\" | \"className\">;\n\ntype ChipGroupItemProps = StylingProps & {\n [\"aria-label\"]?: string;\n [\"data-testid\"]?: string;\n children: ReactNode;\n /**\n * When `true`, prevents the user from interacting with the item.\n * */\n disabled?: boolean;\n /**\n * This prop will be passed automatically from the parent component (ChipGroup) when `type` is `\"filter\"`.\n * */\n showCheckmark?: boolean;\n /**\n * A unique value for the item.\n * */\n value: string;\n /**\n * This prop will only be used when `type` is `\"choice\"`.\n * When `true`, we recommend using `aria-label` to announce to screen readers that the option is unavailable.\n * */\n unavailable?: boolean;\n};\n\nconst cx = c.bind(styles);\nexport const rootClassName = \"purpur-chip-group-item\";\n\nexport const ChipGroupItem = ({\n [\"aria-label\"]: allyLabel,\n children,\n className,\n [\"data-testid\"]: dataTestId,\n disabled = false,\n showCheckmark = false,\n unavailable = false,\n value,\n ...props\n}: ChipGroupItemProps) => {\n const classes = cx([\n rootClassName,\n {\n [`${rootClassName}--disabled`]: disabled,\n [`${rootClassName}--unavailable`]: unavailable,\n },\n className,\n ]);\n\n const handleClick = (e: MouseEvent<HTMLButtonElement>) => {\n if (disabled) {\n e.preventDefault();\n }\n };\n\n return (\n <RadixToggleGroup.Item\n aria-label={allyLabel}\n data-testid={dataTestId}\n className={`${classes} ${rootClassName}`}\n value={value}\n onClick={handleClick}\n aria-disabled={disabled}\n {...props}\n >\n {children}\n {showCheckmark && (\n <IconCheckmark\n size=\"sm\"\n className={cx(`${rootClassName}__checkmark-icon`)}\n data-testid=\"checkmark icon\"\n />\n )}\n {unavailable && (\n <span\n className={cx(`${rootClassName}__line-wrapper`)}\n data-testid=\"unavailable line wrapper\"\n />\n )}\n </RadixToggleGroup.Item>\n );\n};\n\nexport const isChipGroupItem = (child?: ReactNode): child is ReactElement<ChipGroupItemProps> =>\n isValidElement<ChipGroupItemProps>(child) && child?.type === ChipGroupItem;\n","import React, { Children, cloneElement, type ReactNode, useEffect, useId } from \"react\";\nimport { Heading, type HeadingTagType } from \"@purpur/heading\";\nimport * as RadixToggleGroup from \"@radix-ui/react-toggle-group\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./chip-group.module.scss\";\nimport { ChipGroupItem, isChipGroupItem } from \"./chip-group-item\";\n\ntype StylingProps = Pick<React.HTMLAttributes<HTMLElement>, \"style\" | \"className\">;\n\ntype ChipGroupProps = StylingProps & {\n [\"data-testid\"]?: string;\n /**\n * Will only render given ChipGroupItems.\n * */\n children: ReactNode;\n /**\n * Makes the chips span the full container width if set to `true`.\n * */\n fullWidth?: boolean;\n /**\n * Renders above the chip group as a heading.\n * */\n title?: ReactNode;\n /**\n * Allows to customise title.\n */\n titleProps?: TitlePropsType;\n /**\n * Optional name for form submission\n */\n name?: string;\n};\n\nexport type TitlePropsType = StylingProps & {\n /**\n * Use custom id for connecting title and chip group.\n */\n id?: string;\n /**\n * Changes heading level.\n * @default h2\n */\n tag?: HeadingTagType;\n};\n\nexport type ChipGroupChoiceProps = {\n /**\n * Event handler called when the pressed state of an item changes.\n * */\n onValueChange: (value: string) => void;\n /**\n * Determines whether a single (`\"choice\"`) or multiple (`\"filter\"`) items can be pressed at a time.\n * */\n type: \"choice\";\n /**\n * The value of the pressed item(s).\n * */\n value: string;\n};\n\nexport type ChipGroupFilterProps = {\n /**\n * Event handler called when the pressed state of an item changes.\n * */\n onValueChange: (value: string[]) => void;\n /**\n * Determines whether a single (`\"choice\"`) or multiple (`\"filter\"`) items can be pressed at a time.\n * */\n type: \"filter\";\n /**\n * The value of the pressed item(s).\n * */\n value: string[];\n};\n\nconst isChoiceProps = (\n props: ChipGroupChoiceProps | ChipGroupFilterProps\n): props is ChipGroupChoiceProps => props.type === \"choice\";\n\ntype ChipGroupCmp<P> = React.FunctionComponent<P> & {\n Item: typeof ChipGroupItem;\n};\n\nconst MIN_CHOICE_OPTIONS = 2;\n\nconst cx = c.bind(styles);\nconst rootClassName = \"purpur-chip-group\";\n\nexport const ChipGroup: ChipGroupCmp<\n ChipGroupProps & (ChipGroupChoiceProps | ChipGroupFilterProps)\n> = ({ children, className, fullWidth = false, title, titleProps, name, ...props }) => {\n const classes = cx([\n rootClassName,\n {\n [`${rootClassName}--full-width`]: fullWidth,\n },\n className,\n ]);\n\n const id = useId();\n\n const chipGroupItemChildren = Children.toArray(children).filter(isChipGroupItem);\n\n const clonedChildren = Children.map(chipGroupItemChildren, (child) =>\n cloneElement(child, {\n showCheckmark: props.type === \"filter\" && props.value.includes(child.props.value),\n unavailable: props.type === \"choice\" && child.props.unavailable,\n })\n );\n\n const handleValueChange = (value: string & string[]) => {\n if (props.type === \"filter\" || value !== \"\") {\n props.onValueChange(value);\n }\n };\n\n useEffect(() => {\n if (props.type === \"choice\" && clonedChildren.length < MIN_CHOICE_OPTIONS) {\n console.warn(\n `Minimum number of chips should be ${MIN_CHOICE_OPTIONS} when using the \"choice\" type`\n );\n }\n }, [clonedChildren, props.type]);\n\n const chipGroupChildren = () => {\n if (isChoiceProps(props)) {\n return (\n <RadixToggleGroup.Root\n className={classes}\n {...props}\n aria-labelledby={title ? `${titleProps?.id ?? id}-label` : undefined}\n onValueChange={handleValueChange}\n type=\"single\"\n >\n {clonedChildren}\n </RadixToggleGroup.Root>\n );\n }\n return (\n <RadixToggleGroup.Root\n className={classes}\n {...props}\n aria-labelledby={title ? `${titleProps?.id ?? id}-label` : undefined}\n onValueChange={handleValueChange}\n type=\"multiple\"\n >\n {clonedChildren}\n </RadixToggleGroup.Root>\n );\n };\n\n return (\n <div className={styles[`${rootClassName}--container`]}>\n {title && (\n <Heading\n tag=\"h2\"\n variant=\"subsection-100\"\n {...titleProps}\n id={`${titleProps?.id ?? id}-label`}\n >\n {title}\n </Heading>\n )}\n {chipGroupChildren()}\n {name && props.type === \"choice\" && <input type=\"hidden\" name={name} value={props.value} />}\n </div>\n );\n};\n\nChipGroup.Item = ChipGroupItem;\n\nChipGroup.displayName = \"ChipGroup\";\n"],"names":["NAME","Toggle","React","props","forwardedRef","pressedProp","defaultPressed","onPressedChange","buttonProps","pressed","setPressed","useControllableState","jsx","Primitive","composeEventHandlers","TOGGLE_GROUP_NAME","createToggleGroupContext","createContextScope","createRovingFocusGroupScope","useRovingFocusGroupScope","ToggleGroup","type","toggleGroupProps","singleProps","ToggleGroupImplSingle","multipleProps","ToggleGroupImplMultiple","ToggleGroupValueProvider","useToggleGroupValueContext","valueProp","defaultValue","onValueChange","toggleGroupSingleProps","value","setValue","ToggleGroupImpl","toggleGroupMultipleProps","handleButtonActivate","itemValue","prevValue","handleButtonDeactivate","value2","ToggleGroupContext","useToggleGroupContext","__scopeToggleGroup","disabled","rovingFocus","orientation","dir","loop","rovingFocusGroupScope","direction","useDirection","commonProps","RovingFocusGroup.Root","ITEM_NAME","ToggleGroupItem","valueContext","context","ref","RovingFocusGroup.Item","ToggleGroupItemImpl","itemProps","typeProps","Root2","Item2","cx","c","styles","rootClassName","ChipGroupItem","allyLabel","children","className","dataTestId","showCheckmark","unavailable","classes","handleClick","e","jsxs","RadixToggleGroup.Item","IconCheckmark","isChipGroupItem","child","isValidElement","isChoiceProps","MIN_CHOICE_OPTIONS","ChipGroup","fullWidth","title","titleProps","name","id","useId","chipGroupItemChildren","Children","clonedChildren","cloneElement","handleValueChange","useEffect","chipGroupChildren","RadixToggleGroup.Root","Heading"],"mappings":"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","x_google_ignoreList":[0,1]}
@@ -1,7 +1,7 @@
1
1
  import { jsx as l, jsxs as w } from "react/jsx-runtime";
2
2
  import * as B from "react";
3
3
  import d, { isValidElement as z, useId as L, Children as I, cloneElement as U, useEffect as q } from "react";
4
- import { H as J } from "./heading-xwBuT_-9.mjs";
4
+ import { H as J } from "./heading-BG7JTFO1.mjs";
5
5
  import { c as K } from "./index-DOfn3ixy.mjs";
6
6
  import { u as y, P as b, c as Q } from "./index-DCcK_d4W.mjs";
7
7
  import { I as W, c as $, R as X } from "./index-IpWiejWQ.mjs";
@@ -276,4 +276,4 @@ H.displayName = "ChipGroup";
276
276
  export {
277
277
  H as C
278
278
  };
279
- //# sourceMappingURL=chip-group-xuOe7nL3.mjs.map
279
+ //# sourceMappingURL=chip-group-Bo4kJ8Vq.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"chip-group-xuOe7nL3.mjs","sources":["../../../common/temp/node_modules/.pnpm/@radix-ui+react-toggle@1.1.10_@types+react-dom@19.2.3_@types+react@19.2.14__@types+reac_63d136f11f5f79b42c1373b9162ffc86/node_modules/@radix-ui/react-toggle/dist/index.mjs","../../../common/temp/node_modules/.pnpm/@radix-ui+react-toggle-group@1.1.11_@types+react-dom@19.2.3_@types+react@19.2.14__@type_0c124bdbaa351e80a671757a596f81ce/node_modules/@radix-ui/react-toggle-group/dist/index.mjs","../../../components/chip-group/src/chip-group-item.tsx","../../../components/chip-group/src/chip-group.tsx"],"sourcesContent":["\"use client\";\n\n// src/toggle.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { jsx } from \"react/jsx-runtime\";\nvar NAME = \"Toggle\";\nvar Toggle = React.forwardRef((props, forwardedRef) => {\n const { pressed: pressedProp, defaultPressed, onPressedChange, ...buttonProps } = props;\n const [pressed, setPressed] = useControllableState({\n prop: pressedProp,\n onChange: onPressedChange,\n defaultProp: defaultPressed ?? false,\n caller: NAME\n });\n return /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n \"aria-pressed\": pressed,\n \"data-state\": pressed ? \"on\" : \"off\",\n \"data-disabled\": props.disabled ? \"\" : void 0,\n ...buttonProps,\n ref: forwardedRef,\n onClick: composeEventHandlers(props.onClick, () => {\n if (!props.disabled) {\n setPressed(!pressed);\n }\n })\n }\n );\n});\nToggle.displayName = NAME;\nvar Root = Toggle;\nexport {\n Root,\n Toggle\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/toggle-group.tsx\nimport React from \"react\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport * as RovingFocusGroup from \"@radix-ui/react-roving-focus\";\nimport { createRovingFocusGroupScope } from \"@radix-ui/react-roving-focus\";\nimport { Toggle } from \"@radix-ui/react-toggle\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { useDirection } from \"@radix-ui/react-direction\";\nimport { jsx } from \"react/jsx-runtime\";\nvar TOGGLE_GROUP_NAME = \"ToggleGroup\";\nvar [createToggleGroupContext, createToggleGroupScope] = createContextScope(TOGGLE_GROUP_NAME, [\n createRovingFocusGroupScope\n]);\nvar useRovingFocusGroupScope = createRovingFocusGroupScope();\nvar ToggleGroup = React.forwardRef((props, forwardedRef) => {\n const { type, ...toggleGroupProps } = props;\n if (type === \"single\") {\n const singleProps = toggleGroupProps;\n return /* @__PURE__ */ jsx(ToggleGroupImplSingle, { ...singleProps, ref: forwardedRef });\n }\n if (type === \"multiple\") {\n const multipleProps = toggleGroupProps;\n return /* @__PURE__ */ jsx(ToggleGroupImplMultiple, { ...multipleProps, ref: forwardedRef });\n }\n throw new Error(`Missing prop \\`type\\` expected on \\`${TOGGLE_GROUP_NAME}\\``);\n});\nToggleGroup.displayName = TOGGLE_GROUP_NAME;\nvar [ToggleGroupValueProvider, useToggleGroupValueContext] = createToggleGroupContext(TOGGLE_GROUP_NAME);\nvar ToggleGroupImplSingle = React.forwardRef((props, forwardedRef) => {\n const {\n value: valueProp,\n defaultValue,\n onValueChange = () => {\n },\n ...toggleGroupSingleProps\n } = props;\n const [value, setValue] = useControllableState({\n prop: valueProp,\n defaultProp: defaultValue ?? \"\",\n onChange: onValueChange,\n caller: TOGGLE_GROUP_NAME\n });\n return /* @__PURE__ */ jsx(\n ToggleGroupValueProvider,\n {\n scope: props.__scopeToggleGroup,\n type: \"single\",\n value: React.useMemo(() => value ? [value] : [], [value]),\n onItemActivate: setValue,\n onItemDeactivate: React.useCallback(() => setValue(\"\"), [setValue]),\n children: /* @__PURE__ */ jsx(ToggleGroupImpl, { ...toggleGroupSingleProps, ref: forwardedRef })\n }\n );\n});\nvar ToggleGroupImplMultiple = React.forwardRef((props, forwardedRef) => {\n const {\n value: valueProp,\n defaultValue,\n onValueChange = () => {\n },\n ...toggleGroupMultipleProps\n } = props;\n const [value, setValue] = useControllableState({\n prop: valueProp,\n defaultProp: defaultValue ?? [],\n onChange: onValueChange,\n caller: TOGGLE_GROUP_NAME\n });\n const handleButtonActivate = React.useCallback(\n (itemValue) => setValue((prevValue = []) => [...prevValue, itemValue]),\n [setValue]\n );\n const handleButtonDeactivate = React.useCallback(\n (itemValue) => setValue((prevValue = []) => prevValue.filter((value2) => value2 !== itemValue)),\n [setValue]\n );\n return /* @__PURE__ */ jsx(\n ToggleGroupValueProvider,\n {\n scope: props.__scopeToggleGroup,\n type: \"multiple\",\n value,\n onItemActivate: handleButtonActivate,\n onItemDeactivate: handleButtonDeactivate,\n children: /* @__PURE__ */ jsx(ToggleGroupImpl, { ...toggleGroupMultipleProps, ref: forwardedRef })\n }\n );\n});\nToggleGroup.displayName = TOGGLE_GROUP_NAME;\nvar [ToggleGroupContext, useToggleGroupContext] = createToggleGroupContext(TOGGLE_GROUP_NAME);\nvar ToggleGroupImpl = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeToggleGroup,\n disabled = false,\n rovingFocus = true,\n orientation,\n dir,\n loop = true,\n ...toggleGroupProps\n } = props;\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeToggleGroup);\n const direction = useDirection(dir);\n const commonProps = { role: \"group\", dir: direction, ...toggleGroupProps };\n return /* @__PURE__ */ jsx(ToggleGroupContext, { scope: __scopeToggleGroup, rovingFocus, disabled, children: rovingFocus ? /* @__PURE__ */ jsx(\n RovingFocusGroup.Root,\n {\n asChild: true,\n ...rovingFocusGroupScope,\n orientation,\n dir: direction,\n loop,\n children: /* @__PURE__ */ jsx(Primitive.div, { ...commonProps, ref: forwardedRef })\n }\n ) : /* @__PURE__ */ jsx(Primitive.div, { ...commonProps, ref: forwardedRef }) });\n }\n);\nvar ITEM_NAME = \"ToggleGroupItem\";\nvar ToggleGroupItem = React.forwardRef(\n (props, forwardedRef) => {\n const valueContext = useToggleGroupValueContext(ITEM_NAME, props.__scopeToggleGroup);\n const context = useToggleGroupContext(ITEM_NAME, props.__scopeToggleGroup);\n const rovingFocusGroupScope = useRovingFocusGroupScope(props.__scopeToggleGroup);\n const pressed = valueContext.value.includes(props.value);\n const disabled = context.disabled || props.disabled;\n const commonProps = { ...props, pressed, disabled };\n const ref = React.useRef(null);\n return context.rovingFocus ? /* @__PURE__ */ jsx(\n RovingFocusGroup.Item,\n {\n asChild: true,\n ...rovingFocusGroupScope,\n focusable: !disabled,\n active: pressed,\n ref,\n children: /* @__PURE__ */ jsx(ToggleGroupItemImpl, { ...commonProps, ref: forwardedRef })\n }\n ) : /* @__PURE__ */ jsx(ToggleGroupItemImpl, { ...commonProps, ref: forwardedRef });\n }\n);\nToggleGroupItem.displayName = ITEM_NAME;\nvar ToggleGroupItemImpl = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeToggleGroup, value, ...itemProps } = props;\n const valueContext = useToggleGroupValueContext(ITEM_NAME, __scopeToggleGroup);\n const singleProps = { role: \"radio\", \"aria-checked\": props.pressed, \"aria-pressed\": void 0 };\n const typeProps = valueContext.type === \"single\" ? singleProps : void 0;\n return /* @__PURE__ */ jsx(\n Toggle,\n {\n ...typeProps,\n ...itemProps,\n ref: forwardedRef,\n onPressedChange: (pressed) => {\n if (pressed) {\n valueContext.onItemActivate(value);\n } else {\n valueContext.onItemDeactivate(value);\n }\n }\n }\n );\n }\n);\nvar Root2 = ToggleGroup;\nvar Item2 = ToggleGroupItem;\nexport {\n Item2 as Item,\n Root2 as Root,\n ToggleGroup,\n ToggleGroupItem,\n createToggleGroupScope\n};\n//# sourceMappingURL=index.mjs.map\n","import React, { isValidElement, type MouseEvent, type ReactElement, type ReactNode } from \"react\";\nimport { IconCheckmark } from \"@purpur/icon/checkmark\";\nimport * as RadixToggleGroup from \"@radix-ui/react-toggle-group\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./chip-group-item.module.scss\";\n\ntype StylingProps = Pick<React.HTMLAttributes<HTMLElement>, \"style\" | \"className\">;\n\ntype ChipGroupItemProps = StylingProps & {\n [\"aria-label\"]?: string;\n [\"data-testid\"]?: string;\n children: ReactNode;\n /**\n * When `true`, prevents the user from interacting with the item.\n * */\n disabled?: boolean;\n /**\n * This prop will be passed automatically from the parent component (ChipGroup) when `type` is `\"filter\"`.\n * */\n showCheckmark?: boolean;\n /**\n * A unique value for the item.\n * */\n value: string;\n /**\n * This prop will only be used when `type` is `\"choice\"`.\n * When `true`, we recommend using `aria-label` to announce to screen readers that the option is unavailable.\n * */\n unavailable?: boolean;\n};\n\nconst cx = c.bind(styles);\nexport const rootClassName = \"purpur-chip-group-item\";\n\nexport const ChipGroupItem = ({\n [\"aria-label\"]: allyLabel,\n children,\n className,\n [\"data-testid\"]: dataTestId,\n disabled = false,\n showCheckmark = false,\n unavailable = false,\n value,\n ...props\n}: ChipGroupItemProps) => {\n const classes = cx([\n rootClassName,\n {\n [`${rootClassName}--disabled`]: disabled,\n [`${rootClassName}--unavailable`]: unavailable,\n },\n className,\n ]);\n\n const handleClick = (e: MouseEvent<HTMLButtonElement>) => {\n if (disabled) {\n e.preventDefault();\n }\n };\n\n return (\n <RadixToggleGroup.Item\n aria-label={allyLabel}\n data-testid={dataTestId}\n className={`${classes} ${rootClassName}`}\n value={value}\n onClick={handleClick}\n aria-disabled={disabled}\n {...props}\n >\n {children}\n {showCheckmark && (\n <IconCheckmark\n size=\"sm\"\n className={cx(`${rootClassName}__checkmark-icon`)}\n data-testid=\"checkmark icon\"\n />\n )}\n {unavailable && (\n <span\n className={cx(`${rootClassName}__line-wrapper`)}\n data-testid=\"unavailable line wrapper\"\n />\n )}\n </RadixToggleGroup.Item>\n );\n};\n\nexport const isChipGroupItem = (child?: ReactNode): child is ReactElement<ChipGroupItemProps> =>\n isValidElement<ChipGroupItemProps>(child) && child?.type === ChipGroupItem;\n","import React, { Children, cloneElement, type ReactNode, useEffect, useId } from \"react\";\nimport { Heading, type HeadingTagType } from \"@purpur/heading\";\nimport * as RadixToggleGroup from \"@radix-ui/react-toggle-group\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./chip-group.module.scss\";\nimport { ChipGroupItem, isChipGroupItem } from \"./chip-group-item\";\n\ntype StylingProps = Pick<React.HTMLAttributes<HTMLElement>, \"style\" | \"className\">;\n\ntype ChipGroupProps = StylingProps & {\n [\"data-testid\"]?: string;\n /**\n * Will only render given ChipGroupItems.\n * */\n children: ReactNode;\n /**\n * Makes the chips span the full container width if set to `true`.\n * */\n fullWidth?: boolean;\n /**\n * Renders above the chip group as a heading.\n * */\n title?: ReactNode;\n /**\n * Allows to customise title.\n */\n titleProps?: TitlePropsType;\n /**\n * Optional name for form submission\n */\n name?: string;\n};\n\nexport type TitlePropsType = StylingProps & {\n /**\n * Use custom id for connecting title and chip group.\n */\n id?: string;\n /**\n * Changes heading level.\n * @default h2\n */\n tag?: HeadingTagType;\n};\n\nexport type ChipGroupChoiceProps = {\n /**\n * Event handler called when the pressed state of an item changes.\n * */\n onValueChange: (value: string) => void;\n /**\n * Determines whether a single (`\"choice\"`) or multiple (`\"filter\"`) items can be pressed at a time.\n * */\n type: \"choice\";\n /**\n * The value of the pressed item(s).\n * */\n value: string;\n};\n\nexport type ChipGroupFilterProps = {\n /**\n * Event handler called when the pressed state of an item changes.\n * */\n onValueChange: (value: string[]) => void;\n /**\n * Determines whether a single (`\"choice\"`) or multiple (`\"filter\"`) items can be pressed at a time.\n * */\n type: \"filter\";\n /**\n * The value of the pressed item(s).\n * */\n value: string[];\n};\n\nconst isChoiceProps = (\n props: ChipGroupChoiceProps | ChipGroupFilterProps\n): props is ChipGroupChoiceProps => props.type === \"choice\";\n\ntype ChipGroupCmp<P> = React.FunctionComponent<P> & {\n Item: typeof ChipGroupItem;\n};\n\nconst MIN_CHOICE_OPTIONS = 2;\n\nconst cx = c.bind(styles);\nconst rootClassName = \"purpur-chip-group\";\n\nexport const ChipGroup: ChipGroupCmp<\n ChipGroupProps & (ChipGroupChoiceProps | ChipGroupFilterProps)\n> = ({ children, className, fullWidth = false, title, titleProps, name, ...props }) => {\n const classes = cx([\n rootClassName,\n {\n [`${rootClassName}--full-width`]: fullWidth,\n },\n className,\n ]);\n\n const id = useId();\n\n const chipGroupItemChildren = Children.toArray(children).filter(isChipGroupItem);\n\n const clonedChildren = Children.map(chipGroupItemChildren, (child) =>\n cloneElement(child, {\n showCheckmark: props.type === \"filter\" && props.value.includes(child.props.value),\n unavailable: props.type === \"choice\" && child.props.unavailable,\n })\n );\n\n const handleValueChange = (value: string & string[]) => {\n if (props.type === \"filter\" || value !== \"\") {\n props.onValueChange(value);\n }\n };\n\n useEffect(() => {\n if (props.type === \"choice\" && clonedChildren.length < MIN_CHOICE_OPTIONS) {\n console.warn(\n `Minimum number of chips should be ${MIN_CHOICE_OPTIONS} when using the \"choice\" type`\n );\n }\n }, [clonedChildren, props.type]);\n\n const chipGroupChildren = () => {\n if (isChoiceProps(props)) {\n return (\n <RadixToggleGroup.Root\n className={classes}\n {...props}\n aria-labelledby={title ? `${titleProps?.id ?? id}-label` : undefined}\n onValueChange={handleValueChange}\n type=\"single\"\n >\n {clonedChildren}\n </RadixToggleGroup.Root>\n );\n }\n return (\n <RadixToggleGroup.Root\n className={classes}\n {...props}\n aria-labelledby={title ? `${titleProps?.id ?? id}-label` : undefined}\n onValueChange={handleValueChange}\n type=\"multiple\"\n >\n {clonedChildren}\n </RadixToggleGroup.Root>\n );\n };\n\n return (\n <div className={styles[`${rootClassName}--container`]}>\n {title && (\n <Heading\n tag=\"h2\"\n variant=\"subsection-100\"\n {...titleProps}\n id={`${titleProps?.id ?? id}-label`}\n >\n {title}\n </Heading>\n )}\n {chipGroupChildren()}\n {name && props.type === \"choice\" && <input type=\"hidden\" name={name} value={props.value} />}\n </div>\n );\n};\n\nChipGroup.Item = ChipGroupItem;\n\nChipGroup.displayName = \"ChipGroup\";\n"],"names":["NAME","Toggle","React","props","forwardedRef","pressedProp","defaultPressed","onPressedChange","buttonProps","pressed","setPressed","useControllableState","jsx","Primitive","composeEventHandlers","TOGGLE_GROUP_NAME","createToggleGroupContext","createContextScope","createRovingFocusGroupScope","useRovingFocusGroupScope","ToggleGroup","type","toggleGroupProps","ToggleGroupImplSingle","ToggleGroupImplMultiple","ToggleGroupValueProvider","useToggleGroupValueContext","valueProp","defaultValue","onValueChange","toggleGroupSingleProps","value","setValue","ToggleGroupImpl","toggleGroupMultipleProps","handleButtonActivate","itemValue","prevValue","handleButtonDeactivate","value2","ToggleGroupContext","useToggleGroupContext","__scopeToggleGroup","disabled","rovingFocus","orientation","dir","loop","rovingFocusGroupScope","direction","useDirection","commonProps","RovingFocusGroup.Root","ITEM_NAME","ToggleGroupItem","valueContext","context","ref","RovingFocusGroup.Item","ToggleGroupItemImpl","itemProps","singleProps","typeProps","Root2","Item2","cx","c","styles","rootClassName","ChipGroupItem","allyLabel","children","className","dataTestId","showCheckmark","unavailable","classes","handleClick","e","jsxs","RadixToggleGroup.Item","IconCheckmark","isChipGroupItem","child","isValidElement","isChoiceProps","MIN_CHOICE_OPTIONS","ChipGroup","fullWidth","title","titleProps","name","id","useId","chipGroupItemChildren","Children","clonedChildren","cloneElement","handleValueChange","useEffect","chipGroupChildren","RadixToggleGroup.Root","Heading"],"mappings":"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","x_google_ignoreList":[0,1]}
1
+ {"version":3,"file":"chip-group-Bo4kJ8Vq.mjs","sources":["../../../common/temp/node_modules/.pnpm/@radix-ui+react-toggle@1.1.10_@types+react-dom@19.2.3_@types+react@19.2.14__@types+reac_63d136f11f5f79b42c1373b9162ffc86/node_modules/@radix-ui/react-toggle/dist/index.mjs","../../../common/temp/node_modules/.pnpm/@radix-ui+react-toggle-group@1.1.11_@types+react-dom@19.2.3_@types+react@19.2.14__@type_0c124bdbaa351e80a671757a596f81ce/node_modules/@radix-ui/react-toggle-group/dist/index.mjs","../../../components/chip-group/src/chip-group-item.tsx","../../../components/chip-group/src/chip-group.tsx"],"sourcesContent":["\"use client\";\n\n// src/toggle.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { jsx } from \"react/jsx-runtime\";\nvar NAME = \"Toggle\";\nvar Toggle = React.forwardRef((props, forwardedRef) => {\n const { pressed: pressedProp, defaultPressed, onPressedChange, ...buttonProps } = props;\n const [pressed, setPressed] = useControllableState({\n prop: pressedProp,\n onChange: onPressedChange,\n defaultProp: defaultPressed ?? false,\n caller: NAME\n });\n return /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n \"aria-pressed\": pressed,\n \"data-state\": pressed ? \"on\" : \"off\",\n \"data-disabled\": props.disabled ? \"\" : void 0,\n ...buttonProps,\n ref: forwardedRef,\n onClick: composeEventHandlers(props.onClick, () => {\n if (!props.disabled) {\n setPressed(!pressed);\n }\n })\n }\n );\n});\nToggle.displayName = NAME;\nvar Root = Toggle;\nexport {\n Root,\n Toggle\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/toggle-group.tsx\nimport React from \"react\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport * as RovingFocusGroup from \"@radix-ui/react-roving-focus\";\nimport { createRovingFocusGroupScope } from \"@radix-ui/react-roving-focus\";\nimport { Toggle } from \"@radix-ui/react-toggle\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { useDirection } from \"@radix-ui/react-direction\";\nimport { jsx } from \"react/jsx-runtime\";\nvar TOGGLE_GROUP_NAME = \"ToggleGroup\";\nvar [createToggleGroupContext, createToggleGroupScope] = createContextScope(TOGGLE_GROUP_NAME, [\n createRovingFocusGroupScope\n]);\nvar useRovingFocusGroupScope = createRovingFocusGroupScope();\nvar ToggleGroup = React.forwardRef((props, forwardedRef) => {\n const { type, ...toggleGroupProps } = props;\n if (type === \"single\") {\n const singleProps = toggleGroupProps;\n return /* @__PURE__ */ jsx(ToggleGroupImplSingle, { ...singleProps, ref: forwardedRef });\n }\n if (type === \"multiple\") {\n const multipleProps = toggleGroupProps;\n return /* @__PURE__ */ jsx(ToggleGroupImplMultiple, { ...multipleProps, ref: forwardedRef });\n }\n throw new Error(`Missing prop \\`type\\` expected on \\`${TOGGLE_GROUP_NAME}\\``);\n});\nToggleGroup.displayName = TOGGLE_GROUP_NAME;\nvar [ToggleGroupValueProvider, useToggleGroupValueContext] = createToggleGroupContext(TOGGLE_GROUP_NAME);\nvar ToggleGroupImplSingle = React.forwardRef((props, forwardedRef) => {\n const {\n value: valueProp,\n defaultValue,\n onValueChange = () => {\n },\n ...toggleGroupSingleProps\n } = props;\n const [value, setValue] = useControllableState({\n prop: valueProp,\n defaultProp: defaultValue ?? \"\",\n onChange: onValueChange,\n caller: TOGGLE_GROUP_NAME\n });\n return /* @__PURE__ */ jsx(\n ToggleGroupValueProvider,\n {\n scope: props.__scopeToggleGroup,\n type: \"single\",\n value: React.useMemo(() => value ? [value] : [], [value]),\n onItemActivate: setValue,\n onItemDeactivate: React.useCallback(() => setValue(\"\"), [setValue]),\n children: /* @__PURE__ */ jsx(ToggleGroupImpl, { ...toggleGroupSingleProps, ref: forwardedRef })\n }\n );\n});\nvar ToggleGroupImplMultiple = React.forwardRef((props, forwardedRef) => {\n const {\n value: valueProp,\n defaultValue,\n onValueChange = () => {\n },\n ...toggleGroupMultipleProps\n } = props;\n const [value, setValue] = useControllableState({\n prop: valueProp,\n defaultProp: defaultValue ?? [],\n onChange: onValueChange,\n caller: TOGGLE_GROUP_NAME\n });\n const handleButtonActivate = React.useCallback(\n (itemValue) => setValue((prevValue = []) => [...prevValue, itemValue]),\n [setValue]\n );\n const handleButtonDeactivate = React.useCallback(\n (itemValue) => setValue((prevValue = []) => prevValue.filter((value2) => value2 !== itemValue)),\n [setValue]\n );\n return /* @__PURE__ */ jsx(\n ToggleGroupValueProvider,\n {\n scope: props.__scopeToggleGroup,\n type: \"multiple\",\n value,\n onItemActivate: handleButtonActivate,\n onItemDeactivate: handleButtonDeactivate,\n children: /* @__PURE__ */ jsx(ToggleGroupImpl, { ...toggleGroupMultipleProps, ref: forwardedRef })\n }\n );\n});\nToggleGroup.displayName = TOGGLE_GROUP_NAME;\nvar [ToggleGroupContext, useToggleGroupContext] = createToggleGroupContext(TOGGLE_GROUP_NAME);\nvar ToggleGroupImpl = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeToggleGroup,\n disabled = false,\n rovingFocus = true,\n orientation,\n dir,\n loop = true,\n ...toggleGroupProps\n } = props;\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeToggleGroup);\n const direction = useDirection(dir);\n const commonProps = { role: \"group\", dir: direction, ...toggleGroupProps };\n return /* @__PURE__ */ jsx(ToggleGroupContext, { scope: __scopeToggleGroup, rovingFocus, disabled, children: rovingFocus ? /* @__PURE__ */ jsx(\n RovingFocusGroup.Root,\n {\n asChild: true,\n ...rovingFocusGroupScope,\n orientation,\n dir: direction,\n loop,\n children: /* @__PURE__ */ jsx(Primitive.div, { ...commonProps, ref: forwardedRef })\n }\n ) : /* @__PURE__ */ jsx(Primitive.div, { ...commonProps, ref: forwardedRef }) });\n }\n);\nvar ITEM_NAME = \"ToggleGroupItem\";\nvar ToggleGroupItem = React.forwardRef(\n (props, forwardedRef) => {\n const valueContext = useToggleGroupValueContext(ITEM_NAME, props.__scopeToggleGroup);\n const context = useToggleGroupContext(ITEM_NAME, props.__scopeToggleGroup);\n const rovingFocusGroupScope = useRovingFocusGroupScope(props.__scopeToggleGroup);\n const pressed = valueContext.value.includes(props.value);\n const disabled = context.disabled || props.disabled;\n const commonProps = { ...props, pressed, disabled };\n const ref = React.useRef(null);\n return context.rovingFocus ? /* @__PURE__ */ jsx(\n RovingFocusGroup.Item,\n {\n asChild: true,\n ...rovingFocusGroupScope,\n focusable: !disabled,\n active: pressed,\n ref,\n children: /* @__PURE__ */ jsx(ToggleGroupItemImpl, { ...commonProps, ref: forwardedRef })\n }\n ) : /* @__PURE__ */ jsx(ToggleGroupItemImpl, { ...commonProps, ref: forwardedRef });\n }\n);\nToggleGroupItem.displayName = ITEM_NAME;\nvar ToggleGroupItemImpl = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeToggleGroup, value, ...itemProps } = props;\n const valueContext = useToggleGroupValueContext(ITEM_NAME, __scopeToggleGroup);\n const singleProps = { role: \"radio\", \"aria-checked\": props.pressed, \"aria-pressed\": void 0 };\n const typeProps = valueContext.type === \"single\" ? singleProps : void 0;\n return /* @__PURE__ */ jsx(\n Toggle,\n {\n ...typeProps,\n ...itemProps,\n ref: forwardedRef,\n onPressedChange: (pressed) => {\n if (pressed) {\n valueContext.onItemActivate(value);\n } else {\n valueContext.onItemDeactivate(value);\n }\n }\n }\n );\n }\n);\nvar Root2 = ToggleGroup;\nvar Item2 = ToggleGroupItem;\nexport {\n Item2 as Item,\n Root2 as Root,\n ToggleGroup,\n ToggleGroupItem,\n createToggleGroupScope\n};\n//# sourceMappingURL=index.mjs.map\n","import React, { isValidElement, type MouseEvent, type ReactElement, type ReactNode } from \"react\";\nimport { IconCheckmark } from \"@purpur/icon/checkmark\";\nimport * as RadixToggleGroup from \"@radix-ui/react-toggle-group\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./chip-group-item.module.scss\";\n\ntype StylingProps = Pick<React.HTMLAttributes<HTMLElement>, \"style\" | \"className\">;\n\ntype ChipGroupItemProps = StylingProps & {\n [\"aria-label\"]?: string;\n [\"data-testid\"]?: string;\n children: ReactNode;\n /**\n * When `true`, prevents the user from interacting with the item.\n * */\n disabled?: boolean;\n /**\n * This prop will be passed automatically from the parent component (ChipGroup) when `type` is `\"filter\"`.\n * */\n showCheckmark?: boolean;\n /**\n * A unique value for the item.\n * */\n value: string;\n /**\n * This prop will only be used when `type` is `\"choice\"`.\n * When `true`, we recommend using `aria-label` to announce to screen readers that the option is unavailable.\n * */\n unavailable?: boolean;\n};\n\nconst cx = c.bind(styles);\nexport const rootClassName = \"purpur-chip-group-item\";\n\nexport const ChipGroupItem = ({\n [\"aria-label\"]: allyLabel,\n children,\n className,\n [\"data-testid\"]: dataTestId,\n disabled = false,\n showCheckmark = false,\n unavailable = false,\n value,\n ...props\n}: ChipGroupItemProps) => {\n const classes = cx([\n rootClassName,\n {\n [`${rootClassName}--disabled`]: disabled,\n [`${rootClassName}--unavailable`]: unavailable,\n },\n className,\n ]);\n\n const handleClick = (e: MouseEvent<HTMLButtonElement>) => {\n if (disabled) {\n e.preventDefault();\n }\n };\n\n return (\n <RadixToggleGroup.Item\n aria-label={allyLabel}\n data-testid={dataTestId}\n className={`${classes} ${rootClassName}`}\n value={value}\n onClick={handleClick}\n aria-disabled={disabled}\n {...props}\n >\n {children}\n {showCheckmark && (\n <IconCheckmark\n size=\"sm\"\n className={cx(`${rootClassName}__checkmark-icon`)}\n data-testid=\"checkmark icon\"\n />\n )}\n {unavailable && (\n <span\n className={cx(`${rootClassName}__line-wrapper`)}\n data-testid=\"unavailable line wrapper\"\n />\n )}\n </RadixToggleGroup.Item>\n );\n};\n\nexport const isChipGroupItem = (child?: ReactNode): child is ReactElement<ChipGroupItemProps> =>\n isValidElement<ChipGroupItemProps>(child) && child?.type === ChipGroupItem;\n","import React, { Children, cloneElement, type ReactNode, useEffect, useId } from \"react\";\nimport { Heading, type HeadingTagType } from \"@purpur/heading\";\nimport * as RadixToggleGroup from \"@radix-ui/react-toggle-group\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./chip-group.module.scss\";\nimport { ChipGroupItem, isChipGroupItem } from \"./chip-group-item\";\n\ntype StylingProps = Pick<React.HTMLAttributes<HTMLElement>, \"style\" | \"className\">;\n\ntype ChipGroupProps = StylingProps & {\n [\"data-testid\"]?: string;\n /**\n * Will only render given ChipGroupItems.\n * */\n children: ReactNode;\n /**\n * Makes the chips span the full container width if set to `true`.\n * */\n fullWidth?: boolean;\n /**\n * Renders above the chip group as a heading.\n * */\n title?: ReactNode;\n /**\n * Allows to customise title.\n */\n titleProps?: TitlePropsType;\n /**\n * Optional name for form submission\n */\n name?: string;\n};\n\nexport type TitlePropsType = StylingProps & {\n /**\n * Use custom id for connecting title and chip group.\n */\n id?: string;\n /**\n * Changes heading level.\n * @default h2\n */\n tag?: HeadingTagType;\n};\n\nexport type ChipGroupChoiceProps = {\n /**\n * Event handler called when the pressed state of an item changes.\n * */\n onValueChange: (value: string) => void;\n /**\n * Determines whether a single (`\"choice\"`) or multiple (`\"filter\"`) items can be pressed at a time.\n * */\n type: \"choice\";\n /**\n * The value of the pressed item(s).\n * */\n value: string;\n};\n\nexport type ChipGroupFilterProps = {\n /**\n * Event handler called when the pressed state of an item changes.\n * */\n onValueChange: (value: string[]) => void;\n /**\n * Determines whether a single (`\"choice\"`) or multiple (`\"filter\"`) items can be pressed at a time.\n * */\n type: \"filter\";\n /**\n * The value of the pressed item(s).\n * */\n value: string[];\n};\n\nconst isChoiceProps = (\n props: ChipGroupChoiceProps | ChipGroupFilterProps\n): props is ChipGroupChoiceProps => props.type === \"choice\";\n\ntype ChipGroupCmp<P> = React.FunctionComponent<P> & {\n Item: typeof ChipGroupItem;\n};\n\nconst MIN_CHOICE_OPTIONS = 2;\n\nconst cx = c.bind(styles);\nconst rootClassName = \"purpur-chip-group\";\n\nexport const ChipGroup: ChipGroupCmp<\n ChipGroupProps & (ChipGroupChoiceProps | ChipGroupFilterProps)\n> = ({ children, className, fullWidth = false, title, titleProps, name, ...props }) => {\n const classes = cx([\n rootClassName,\n {\n [`${rootClassName}--full-width`]: fullWidth,\n },\n className,\n ]);\n\n const id = useId();\n\n const chipGroupItemChildren = Children.toArray(children).filter(isChipGroupItem);\n\n const clonedChildren = Children.map(chipGroupItemChildren, (child) =>\n cloneElement(child, {\n showCheckmark: props.type === \"filter\" && props.value.includes(child.props.value),\n unavailable: props.type === \"choice\" && child.props.unavailable,\n })\n );\n\n const handleValueChange = (value: string & string[]) => {\n if (props.type === \"filter\" || value !== \"\") {\n props.onValueChange(value);\n }\n };\n\n useEffect(() => {\n if (props.type === \"choice\" && clonedChildren.length < MIN_CHOICE_OPTIONS) {\n console.warn(\n `Minimum number of chips should be ${MIN_CHOICE_OPTIONS} when using the \"choice\" type`\n );\n }\n }, [clonedChildren, props.type]);\n\n const chipGroupChildren = () => {\n if (isChoiceProps(props)) {\n return (\n <RadixToggleGroup.Root\n className={classes}\n {...props}\n aria-labelledby={title ? `${titleProps?.id ?? id}-label` : undefined}\n onValueChange={handleValueChange}\n type=\"single\"\n >\n {clonedChildren}\n </RadixToggleGroup.Root>\n );\n }\n return (\n <RadixToggleGroup.Root\n className={classes}\n {...props}\n aria-labelledby={title ? `${titleProps?.id ?? id}-label` : undefined}\n onValueChange={handleValueChange}\n type=\"multiple\"\n >\n {clonedChildren}\n </RadixToggleGroup.Root>\n );\n };\n\n return (\n <div className={styles[`${rootClassName}--container`]}>\n {title && (\n <Heading\n tag=\"h2\"\n variant=\"subsection-100\"\n {...titleProps}\n id={`${titleProps?.id ?? id}-label`}\n >\n {title}\n </Heading>\n )}\n {chipGroupChildren()}\n {name && props.type === \"choice\" && <input type=\"hidden\" name={name} value={props.value} />}\n </div>\n );\n};\n\nChipGroup.Item = ChipGroupItem;\n\nChipGroup.displayName = \"ChipGroup\";\n"],"names":["NAME","Toggle","React","props","forwardedRef","pressedProp","defaultPressed","onPressedChange","buttonProps","pressed","setPressed","useControllableState","jsx","Primitive","composeEventHandlers","TOGGLE_GROUP_NAME","createToggleGroupContext","createContextScope","createRovingFocusGroupScope","useRovingFocusGroupScope","ToggleGroup","type","toggleGroupProps","ToggleGroupImplSingle","ToggleGroupImplMultiple","ToggleGroupValueProvider","useToggleGroupValueContext","valueProp","defaultValue","onValueChange","toggleGroupSingleProps","value","setValue","ToggleGroupImpl","toggleGroupMultipleProps","handleButtonActivate","itemValue","prevValue","handleButtonDeactivate","value2","ToggleGroupContext","useToggleGroupContext","__scopeToggleGroup","disabled","rovingFocus","orientation","dir","loop","rovingFocusGroupScope","direction","useDirection","commonProps","RovingFocusGroup.Root","ITEM_NAME","ToggleGroupItem","valueContext","context","ref","RovingFocusGroup.Item","ToggleGroupItemImpl","itemProps","singleProps","typeProps","Root2","Item2","cx","c","styles","rootClassName","ChipGroupItem","allyLabel","children","className","dataTestId","showCheckmark","unavailable","classes","handleClick","e","jsxs","RadixToggleGroup.Item","IconCheckmark","isChipGroupItem","child","isValidElement","isChoiceProps","MIN_CHOICE_OPTIONS","ChipGroup","fullWidth","title","titleProps","name","id","useId","chipGroupItemChildren","Children","clonedChildren","cloneElement","handleValueChange","useEffect","chipGroupChildren","RadixToggleGroup.Root","Heading"],"mappings":"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","x_google_ignoreList":[0,1]}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./chip-group-B775zvKD.js");exports.ChipGroup=e.ChipGroup;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./chip-group-BLuG0MC6.js");exports.ChipGroup=e.ChipGroup;
2
2
  //# sourceMappingURL=chip-group.cjs.js.map
@@ -1,4 +1,4 @@
1
- import { C as r } from "./chip-group-xuOe7nL3.mjs";
1
+ import { C as r } from "./chip-group-Bo4kJ8Vq.mjs";
2
2
  export {
3
3
  r as ChipGroup
4
4
  };
@@ -1 +1 @@
1
- {"version":3,"file":"color-dot-BEE5rKco.js","sources":["../../../components/color-dot/src/color-dot.tsx"],"sourcesContent":["import React, { type HTMLAttributes } from \"react\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./color-dot.module.scss\";\n\nconst cx = c.bind(styles);\nconst rootClassName = \"purpur-color-dot\";\n\nexport const STATIC_COLOR_DOT_SIZE = [\"xs\", \"sm\", \"md\", \"lg\"] as const;\nexport const BUTTON_COLOR_DOT_SIZE = STATIC_COLOR_DOT_SIZE.filter((size) => size !== \"xs\");\n\nexport type StaticColorDotSize = (typeof STATIC_COLOR_DOT_SIZE)[number];\nexport type ButtonColorDotSize = (typeof BUTTON_COLOR_DOT_SIZE)[number];\nexport type StaticColorDotProps = HTMLAttributes<HTMLDivElement> & {\n variant?: \"static\";\n isSelected?: never;\n size: StaticColorDotSize;\n};\n\nexport type ButtonColorDotProps = HTMLAttributes<HTMLButtonElement> & {\n variant?: \"button\";\n isSelected?: boolean;\n size: ButtonColorDotSize;\n};\n\nexport type ColorDotProps = {\n color: string;\n withBorder?: boolean;\n} & (StaticColorDotProps | ButtonColorDotProps);\n\nexport const ColorDot = ({ size, withBorder, variant = \"static\", ...props }: ColorDotProps) => {\n const className = cx(props.className, rootClassName, `${rootClassName}--${size}`, {\n [`${rootClassName}--with-border`]: withBorder,\n [`${rootClassName}--selected`]: props.isSelected,\n [`${rootClassName}--button`]: variant === \"button\",\n });\n\n props.className = className;\n props.style = {\n ...props.style,\n backgroundColor: props.color,\n };\n\n if (variant === \"button\") {\n return <button {...(props as ButtonColorDotProps)} />;\n }\n return <div {...(props as StaticColorDotProps)} />;\n};\n"],"names":["cx","c","styles","rootClassName","STATIC_COLOR_DOT_SIZE","BUTTON_COLOR_DOT_SIZE","size","ColorDot","withBorder","variant","props","className","jsx"],"mappings":"mjBAKMA,EAAKC,EAAAA,EAAE,KAAKC,CAAM,EAClBC,EAAgB,mBAETC,EAAwB,CAAC,KAAM,KAAM,KAAM,IAAI,EAC/CC,EAAwBD,EAAsB,OAAQE,GAASA,IAAS,IAAI,EAqB5EC,EAAW,CAAC,CAAE,KAAAD,EAAM,WAAAE,EAAY,QAAAC,EAAU,SAAU,GAAGC,KAA2B,CAC7F,MAAMC,EAAYX,EAAGU,EAAM,UAAWP,EAAe,GAAGA,CAAa,KAAKG,CAAI,GAAI,CAChF,CAAC,GAAGH,CAAa,eAAe,EAAGK,EACnC,CAAC,GAAGL,CAAa,YAAY,EAAGO,EAAM,WACtC,CAAC,GAAGP,CAAa,UAAU,EAAGM,IAAY,QAAA,CAC3C,EAQD,OANAC,EAAM,UAAYC,EAClBD,EAAM,MAAQ,CACZ,GAAGA,EAAM,MACT,gBAAiBA,EAAM,KAAA,EAGrBD,IAAY,SACPG,MAAC,SAAA,CAAQ,GAAIF,CAAA,CAA+B,EAE9CE,MAAC,MAAA,CAAK,GAAIF,CAAA,CAA+B,CAClD"}
1
+ {"version":3,"file":"color-dot-BEE5rKco.js","sources":["../../../components/color-dot/src/color-dot.tsx"],"sourcesContent":["import React, { type HTMLAttributes } from \"react\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./color-dot.module.scss\";\n\nconst cx = c.bind(styles);\nconst rootClassName = \"purpur-color-dot\";\n\nexport const STATIC_COLOR_DOT_SIZE = [\"xs\", \"sm\", \"md\", \"lg\"] as const;\nexport const BUTTON_COLOR_DOT_SIZE = STATIC_COLOR_DOT_SIZE.filter((size) => size !== \"xs\");\n\nexport type StaticColorDotSize = (typeof STATIC_COLOR_DOT_SIZE)[number];\nexport type ButtonColorDotSize = (typeof BUTTON_COLOR_DOT_SIZE)[number];\nexport type StaticColorDotProps = HTMLAttributes<HTMLDivElement> & {\n variant?: \"static\";\n isSelected?: never;\n size: StaticColorDotSize;\n};\n\nexport type ButtonColorDotProps = Omit<HTMLAttributes<HTMLButtonElement>, \"aria-label\"> & {\n variant?: \"button\";\n isSelected?: boolean;\n size: ButtonColorDotSize;\n // Required since the button has no visible text content\n [\"aria-label\"]: string;\n};\n\nexport type ColorDotProps = {\n color: string;\n withBorder?: boolean;\n} & (StaticColorDotProps | ButtonColorDotProps);\n\nexport const ColorDot = ({ size, withBorder, variant = \"static\", ...props }: ColorDotProps) => {\n const className = cx(props.className, rootClassName, `${rootClassName}--${size}`, {\n [`${rootClassName}--with-border`]: withBorder,\n [`${rootClassName}--selected`]: props.isSelected,\n [`${rootClassName}--button`]: variant === \"button\",\n });\n\n props.className = className;\n props.style = {\n ...props.style,\n backgroundColor: props.color,\n };\n\n if (variant === \"button\") {\n return <button {...(props as ButtonColorDotProps)} />;\n }\n return <div {...(props as StaticColorDotProps)} />;\n};\n"],"names":["cx","c","styles","rootClassName","STATIC_COLOR_DOT_SIZE","BUTTON_COLOR_DOT_SIZE","size","ColorDot","withBorder","variant","props","className","jsx"],"mappings":"mjBAKMA,EAAKC,EAAAA,EAAE,KAAKC,CAAM,EAClBC,EAAgB,mBAETC,EAAwB,CAAC,KAAM,KAAM,KAAM,IAAI,EAC/CC,EAAwBD,EAAsB,OAAQE,GAASA,IAAS,IAAI,EAuB5EC,EAAW,CAAC,CAAE,KAAAD,EAAM,WAAAE,EAAY,QAAAC,EAAU,SAAU,GAAGC,KAA2B,CAC7F,MAAMC,EAAYX,EAAGU,EAAM,UAAWP,EAAe,GAAGA,CAAa,KAAKG,CAAI,GAAI,CAChF,CAAC,GAAGH,CAAa,eAAe,EAAGK,EACnC,CAAC,GAAGL,CAAa,YAAY,EAAGO,EAAM,WACtC,CAAC,GAAGP,CAAa,UAAU,EAAGM,IAAY,QAAA,CAC3C,EAQD,OANAC,EAAM,UAAYC,EAClBD,EAAM,MAAQ,CACZ,GAAGA,EAAM,MACT,gBAAiBA,EAAM,KAAA,EAGrBD,IAAY,SACPG,MAAC,SAAA,CAAQ,GAAIF,CAAA,CAA+B,EAE9CE,MAAC,MAAA,CAAK,GAAIF,CAAA,CAA+B,CAClD"}
@@ -1 +1 @@
1
- {"version":3,"file":"color-dot-Dz9yzVX3.mjs","sources":["../../../components/color-dot/src/color-dot.tsx"],"sourcesContent":["import React, { type HTMLAttributes } from \"react\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./color-dot.module.scss\";\n\nconst cx = c.bind(styles);\nconst rootClassName = \"purpur-color-dot\";\n\nexport const STATIC_COLOR_DOT_SIZE = [\"xs\", \"sm\", \"md\", \"lg\"] as const;\nexport const BUTTON_COLOR_DOT_SIZE = STATIC_COLOR_DOT_SIZE.filter((size) => size !== \"xs\");\n\nexport type StaticColorDotSize = (typeof STATIC_COLOR_DOT_SIZE)[number];\nexport type ButtonColorDotSize = (typeof BUTTON_COLOR_DOT_SIZE)[number];\nexport type StaticColorDotProps = HTMLAttributes<HTMLDivElement> & {\n variant?: \"static\";\n isSelected?: never;\n size: StaticColorDotSize;\n};\n\nexport type ButtonColorDotProps = HTMLAttributes<HTMLButtonElement> & {\n variant?: \"button\";\n isSelected?: boolean;\n size: ButtonColorDotSize;\n};\n\nexport type ColorDotProps = {\n color: string;\n withBorder?: boolean;\n} & (StaticColorDotProps | ButtonColorDotProps);\n\nexport const ColorDot = ({ size, withBorder, variant = \"static\", ...props }: ColorDotProps) => {\n const className = cx(props.className, rootClassName, `${rootClassName}--${size}`, {\n [`${rootClassName}--with-border`]: withBorder,\n [`${rootClassName}--selected`]: props.isSelected,\n [`${rootClassName}--button`]: variant === \"button\",\n });\n\n props.className = className;\n props.style = {\n ...props.style,\n backgroundColor: props.color,\n };\n\n if (variant === \"button\") {\n return <button {...(props as ButtonColorDotProps)} />;\n }\n return <div {...(props as StaticColorDotProps)} />;\n};\n"],"names":["cx","c","styles","rootClassName","STATIC_COLOR_DOT_SIZE","BUTTON_COLOR_DOT_SIZE","size","ColorDot","withBorder","variant","props","className","jsx"],"mappings":";;;;;;;;;;;GAKMA,IAAKC,EAAE,KAAKC,CAAM,GAClBC,IAAgB,oBAETC,IAAwB,CAAC,MAAM,MAAM,MAAM,IAAI,GAC/CC,IAAwBD,EAAsB,OAAO,CAACE,MAASA,MAAS,IAAI,GAqB5EC,IAAW,CAAC,EAAE,MAAAD,GAAM,YAAAE,GAAY,SAAAC,IAAU,UAAU,GAAGC,QAA2B;AAC7F,QAAMC,IAAYX,EAAGU,EAAM,WAAWP,GAAe,GAAGA,CAAa,KAAKG,CAAI,IAAI;AAAA,IAChF,CAAC,GAAGH,CAAa,eAAe,GAAGK;AAAA,IACnC,CAAC,GAAGL,CAAa,YAAY,GAAGO,EAAM;AAAA,IACtC,CAAC,GAAGP,CAAa,UAAU,GAAGM,MAAY;AAAA,EAAA,CAC3C;AAQD,SANAC,EAAM,YAAYC,GAClBD,EAAM,QAAQ;AAAA,IACZ,GAAGA,EAAM;AAAA,IACT,iBAAiBA,EAAM;AAAA,EAAA,GAGrBD,MAAY,WACP,gBAAAG,EAAC,UAAA,EAAQ,GAAIF,EAAA,CAA+B,IAE9C,gBAAAE,EAAC,OAAA,EAAK,GAAIF,EAAA,CAA+B;AAClD;"}
1
+ {"version":3,"file":"color-dot-Dz9yzVX3.mjs","sources":["../../../components/color-dot/src/color-dot.tsx"],"sourcesContent":["import React, { type HTMLAttributes } from \"react\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./color-dot.module.scss\";\n\nconst cx = c.bind(styles);\nconst rootClassName = \"purpur-color-dot\";\n\nexport const STATIC_COLOR_DOT_SIZE = [\"xs\", \"sm\", \"md\", \"lg\"] as const;\nexport const BUTTON_COLOR_DOT_SIZE = STATIC_COLOR_DOT_SIZE.filter((size) => size !== \"xs\");\n\nexport type StaticColorDotSize = (typeof STATIC_COLOR_DOT_SIZE)[number];\nexport type ButtonColorDotSize = (typeof BUTTON_COLOR_DOT_SIZE)[number];\nexport type StaticColorDotProps = HTMLAttributes<HTMLDivElement> & {\n variant?: \"static\";\n isSelected?: never;\n size: StaticColorDotSize;\n};\n\nexport type ButtonColorDotProps = Omit<HTMLAttributes<HTMLButtonElement>, \"aria-label\"> & {\n variant?: \"button\";\n isSelected?: boolean;\n size: ButtonColorDotSize;\n // Required since the button has no visible text content\n [\"aria-label\"]: string;\n};\n\nexport type ColorDotProps = {\n color: string;\n withBorder?: boolean;\n} & (StaticColorDotProps | ButtonColorDotProps);\n\nexport const ColorDot = ({ size, withBorder, variant = \"static\", ...props }: ColorDotProps) => {\n const className = cx(props.className, rootClassName, `${rootClassName}--${size}`, {\n [`${rootClassName}--with-border`]: withBorder,\n [`${rootClassName}--selected`]: props.isSelected,\n [`${rootClassName}--button`]: variant === \"button\",\n });\n\n props.className = className;\n props.style = {\n ...props.style,\n backgroundColor: props.color,\n };\n\n if (variant === \"button\") {\n return <button {...(props as ButtonColorDotProps)} />;\n }\n return <div {...(props as StaticColorDotProps)} />;\n};\n"],"names":["cx","c","styles","rootClassName","STATIC_COLOR_DOT_SIZE","BUTTON_COLOR_DOT_SIZE","size","ColorDot","withBorder","variant","props","className","jsx"],"mappings":";;;;;;;;;;;GAKMA,IAAKC,EAAE,KAAKC,CAAM,GAClBC,IAAgB,oBAETC,IAAwB,CAAC,MAAM,MAAM,MAAM,IAAI,GAC/CC,IAAwBD,EAAsB,OAAO,CAACE,MAASA,MAAS,IAAI,GAuB5EC,IAAW,CAAC,EAAE,MAAAD,GAAM,YAAAE,GAAY,SAAAC,IAAU,UAAU,GAAGC,QAA2B;AAC7F,QAAMC,IAAYX,EAAGU,EAAM,WAAWP,GAAe,GAAGA,CAAa,KAAKG,CAAI,IAAI;AAAA,IAChF,CAAC,GAAGH,CAAa,eAAe,GAAGK;AAAA,IACnC,CAAC,GAAGL,CAAa,YAAY,GAAGO,EAAM;AAAA,IACtC,CAAC,GAAGP,CAAa,UAAU,GAAGM,MAAY;AAAA,EAAA,CAC3C;AAQD,SANAC,EAAM,YAAYC,GAClBD,EAAM,QAAQ;AAAA,IACZ,GAAGA,EAAM;AAAA,IACT,iBAAiBA,EAAM;AAAA,EAAA,GAGrBD,MAAY,WACP,gBAAAG,EAAC,UAAA,EAAQ,GAAIF,EAAA,CAA+B,IAE9C,gBAAAE,EAAC,OAAA,EAAK,GAAIF,EAAA,CAA+B;AAClD;"}