@purpur/library 9.8.1 → 9.9.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 (939) hide show
  1. package/CHANGELOG.json +57 -0
  2. package/CHANGELOG.md +23 -1
  3. package/dist/{autocomplete-CcVDJbwS.js → autocomplete-C6FXaaAT.js} +2 -2
  4. package/dist/{autocomplete-CcVDJbwS.js.map → autocomplete-C6FXaaAT.js.map} +1 -1
  5. package/dist/{autocomplete-DF17Zm7Q.mjs → autocomplete-q4ObPRfM.mjs} +2 -2
  6. package/dist/{autocomplete-DF17Zm7Q.mjs.map → autocomplete-q4ObPRfM.mjs.map} +1 -1
  7. package/dist/autocomplete.cjs.js +1 -1
  8. package/dist/autocomplete.es.js +1 -1
  9. package/dist/button-4-yWOgtD.mjs.map +1 -1
  10. package/dist/button-DmybVApa.js.map +1 -1
  11. package/dist/{comparison-table-DQJL1IVC.mjs → comparison-table-D1evE0ri.mjs} +77 -77
  12. package/dist/{comparison-table-DQJL1IVC.mjs.map → comparison-table-D1evE0ri.mjs.map} +1 -1
  13. package/dist/{comparison-table-DHFpydbq.js → comparison-table-Dtqxz8vL.js} +2 -2
  14. package/dist/{comparison-table-DHFpydbq.js.map → comparison-table-Dtqxz8vL.js.map} +1 -1
  15. package/dist/comparison-table.cjs.js +1 -1
  16. package/dist/comparison-table.es.js +1 -1
  17. package/dist/components/button/src/button.d.ts +3 -22
  18. package/dist/components/button/src/button.d.ts.map +1 -1
  19. package/dist/components/counter-badge/src/counter-badge.visual.fixtures.d.ts +13 -0
  20. package/dist/components/counter-badge/src/counter-badge.visual.fixtures.d.ts.map +1 -0
  21. package/dist/components/cta-link/src/cta-link.d.ts +6 -4
  22. package/dist/components/cta-link/src/cta-link.d.ts.map +1 -1
  23. package/dist/components/cta-link/src/cta-link.visual.fixtures.d.ts +14 -0
  24. package/dist/components/cta-link/src/cta-link.visual.fixtures.d.ts.map +1 -0
  25. package/dist/components/date-field/src/date-field.visual.fixtures.d.ts +14 -0
  26. package/dist/components/date-field/src/date-field.visual.fixtures.d.ts.map +1 -0
  27. package/dist/components/icon/src/all-icon-components.d.ts +3 -0
  28. package/dist/components/icon/src/all-icon-components.d.ts.map +1 -1
  29. package/dist/components/icon/src/all-icons.d.ts +3 -0
  30. package/dist/components/icon/src/all-icons.d.ts.map +1 -1
  31. package/dist/components/icon/src/assets/moon.d.ts +7 -0
  32. package/dist/components/icon/src/assets/moon.d.ts.map +1 -0
  33. package/dist/components/icon/src/assets/sun.d.ts +7 -0
  34. package/dist/components/icon/src/assets/sun.d.ts.map +1 -0
  35. package/dist/components/icon/src/assets/unpin.d.ts +7 -0
  36. package/dist/components/icon/src/assets/unpin.d.ts.map +1 -0
  37. package/dist/components/icon/src/components/moon.d.ts +7 -0
  38. package/dist/components/icon/src/components/moon.d.ts.map +1 -0
  39. package/dist/components/icon/src/components/sun.d.ts +7 -0
  40. package/dist/components/icon/src/components/sun.d.ts.map +1 -0
  41. package/dist/components/icon/src/components/unpin.d.ts +7 -0
  42. package/dist/components/icon/src/components/unpin.d.ts.map +1 -0
  43. package/dist/components/icon/src/icon-imports.d.ts +18 -0
  44. package/dist/components/icon/src/icon-imports.d.ts.map +1 -1
  45. package/dist/components/illustrative-icon/src/all-animated-illustrative-icon-components.d.ts +34 -0
  46. package/dist/components/illustrative-icon/src/all-animated-illustrative-icon-components.d.ts.map +1 -1
  47. package/dist/components/illustrative-icon/src/all-static-illustrative-icon-components.d.ts +36 -0
  48. package/dist/components/illustrative-icon/src/all-static-illustrative-icon-components.d.ts.map +1 -1
  49. package/dist/components/illustrative-icon/src/assets/accessories-duocolor-static.d.ts +4 -0
  50. package/dist/components/illustrative-icon/src/assets/accessories-duocolor-static.d.ts.map +1 -0
  51. package/dist/components/illustrative-icon/src/assets/accessories-offblack-static.d.ts +4 -0
  52. package/dist/components/illustrative-icon/src/assets/accessories-offblack-static.d.ts.map +1 -0
  53. package/dist/components/illustrative-icon/src/assets/bag-duocolor-static.d.ts +4 -0
  54. package/dist/components/illustrative-icon/src/assets/bag-duocolor-static.d.ts.map +1 -0
  55. package/dist/components/illustrative-icon/src/assets/bag-offblack-static.d.ts +4 -0
  56. package/dist/components/illustrative-icon/src/assets/bag-offblack-static.d.ts.map +1 -0
  57. package/dist/components/illustrative-icon/src/assets/bag-plus-duocolor-static.d.ts +4 -0
  58. package/dist/components/illustrative-icon/src/assets/bag-plus-duocolor-static.d.ts.map +1 -0
  59. package/dist/components/illustrative-icon/src/assets/bag-plus-offblack-static.d.ts +4 -0
  60. package/dist/components/illustrative-icon/src/assets/bag-plus-offblack-static.d.ts.map +1 -0
  61. package/dist/components/illustrative-icon/src/assets/box-sync-duocolor-static.d.ts +4 -0
  62. package/dist/components/illustrative-icon/src/assets/box-sync-duocolor-static.d.ts.map +1 -0
  63. package/dist/components/illustrative-icon/src/assets/box-sync-offblack-static.d.ts +4 -0
  64. package/dist/components/illustrative-icon/src/assets/box-sync-offblack-static.d.ts.map +1 -0
  65. package/dist/components/illustrative-icon/src/assets/display-protection-duocolor-static.d.ts +4 -0
  66. package/dist/components/illustrative-icon/src/assets/display-protection-duocolor-static.d.ts.map +1 -0
  67. package/dist/components/illustrative-icon/src/assets/display-protection-offblack-static.d.ts +4 -0
  68. package/dist/components/illustrative-icon/src/assets/display-protection-offblack-static.d.ts.map +1 -0
  69. package/dist/components/illustrative-icon/src/assets/enrollment-duocolor-static.d.ts +4 -0
  70. package/dist/components/illustrative-icon/src/assets/enrollment-duocolor-static.d.ts.map +1 -0
  71. package/dist/components/illustrative-icon/src/assets/enrollment-offblack-static.d.ts +4 -0
  72. package/dist/components/illustrative-icon/src/assets/enrollment-offblack-static.d.ts.map +1 -0
  73. package/dist/components/illustrative-icon/src/assets/gift-box-duocolor-static.d.ts +4 -0
  74. package/dist/components/illustrative-icon/src/assets/gift-box-duocolor-static.d.ts.map +1 -0
  75. package/dist/components/illustrative-icon/src/assets/gift-box-offblack-static.d.ts +4 -0
  76. package/dist/components/illustrative-icon/src/assets/gift-box-offblack-static.d.ts.map +1 -0
  77. package/dist/components/illustrative-icon/src/assets/gift-box-plus-duocolor-static.d.ts +4 -0
  78. package/dist/components/illustrative-icon/src/assets/gift-box-plus-duocolor-static.d.ts.map +1 -0
  79. package/dist/components/illustrative-icon/src/assets/gift-box-plus-offblack-static.d.ts +4 -0
  80. package/dist/components/illustrative-icon/src/assets/gift-box-plus-offblack-static.d.ts.map +1 -0
  81. package/dist/components/illustrative-icon/src/assets/info-letter-duocolor-static.d.ts +4 -0
  82. package/dist/components/illustrative-icon/src/assets/info-letter-duocolor-static.d.ts.map +1 -0
  83. package/dist/components/illustrative-icon/src/assets/info-letter-offblack-static.d.ts +4 -0
  84. package/dist/components/illustrative-icon/src/assets/info-letter-offblack-static.d.ts.map +1 -0
  85. package/dist/components/illustrative-icon/src/assets/leaf-duocolor-static.d.ts +4 -0
  86. package/dist/components/illustrative-icon/src/assets/leaf-duocolor-static.d.ts.map +1 -0
  87. package/dist/components/illustrative-icon/src/assets/leaf-offblack-static.d.ts +4 -0
  88. package/dist/components/illustrative-icon/src/assets/leaf-offblack-static.d.ts.map +1 -0
  89. package/dist/components/illustrative-icon/src/assets/number-tranfer-duocolor-static.d.ts +4 -0
  90. package/dist/components/illustrative-icon/src/assets/number-tranfer-duocolor-static.d.ts.map +1 -0
  91. package/dist/components/illustrative-icon/src/assets/number-tranfer-offblack-static.d.ts +4 -0
  92. package/dist/components/illustrative-icon/src/assets/number-tranfer-offblack-static.d.ts.map +1 -0
  93. package/dist/components/illustrative-icon/src/assets/page-duocolor-static.d.ts +4 -0
  94. package/dist/components/illustrative-icon/src/assets/page-duocolor-static.d.ts.map +1 -0
  95. package/dist/components/illustrative-icon/src/assets/page-offblack-static.d.ts +4 -0
  96. package/dist/components/illustrative-icon/src/assets/page-offblack-static.d.ts.map +1 -0
  97. package/dist/components/illustrative-icon/src/assets/phone-repair-duocolor-static.d.ts +4 -0
  98. package/dist/components/illustrative-icon/src/assets/phone-repair-duocolor-static.d.ts.map +1 -0
  99. package/dist/components/illustrative-icon/src/assets/phone-repair-offblack-static.d.ts +4 -0
  100. package/dist/components/illustrative-icon/src/assets/phone-repair-offblack-static.d.ts.map +1 -0
  101. package/dist/components/illustrative-icon/src/assets/phone-settings-duocolor-static.d.ts +4 -0
  102. package/dist/components/illustrative-icon/src/assets/phone-settings-duocolor-static.d.ts.map +1 -0
  103. package/dist/components/illustrative-icon/src/assets/phone-settings-offblack-static.d.ts +4 -0
  104. package/dist/components/illustrative-icon/src/assets/phone-settings-offblack-static.d.ts.map +1 -0
  105. package/dist/components/illustrative-icon/src/assets/return-label-duocolor-static.d.ts +4 -0
  106. package/dist/components/illustrative-icon/src/assets/return-label-duocolor-static.d.ts.map +1 -0
  107. package/dist/components/illustrative-icon/src/assets/return-label-offblack-static.d.ts +4 -0
  108. package/dist/components/illustrative-icon/src/assets/return-label-offblack-static.d.ts.map +1 -0
  109. package/dist/components/illustrative-icon/src/assets/settings-pen-duocolor-static.d.ts +4 -0
  110. package/dist/components/illustrative-icon/src/assets/settings-pen-duocolor-static.d.ts.map +1 -0
  111. package/dist/components/illustrative-icon/src/assets/settings-pen-offblack-static.d.ts +4 -0
  112. package/dist/components/illustrative-icon/src/assets/settings-pen-offblack-static.d.ts.map +1 -0
  113. package/dist/components/illustrative-icon/src/assets/shield-time-duocolor-static.d.ts +4 -0
  114. package/dist/components/illustrative-icon/src/assets/shield-time-duocolor-static.d.ts.map +1 -0
  115. package/dist/components/illustrative-icon/src/assets/shield-time-offblack-static.d.ts +4 -0
  116. package/dist/components/illustrative-icon/src/assets/shield-time-offblack-static.d.ts.map +1 -0
  117. package/dist/components/illustrative-icon/src/assets/user-duocolor-static.d.ts +4 -0
  118. package/dist/components/illustrative-icon/src/assets/user-duocolor-static.d.ts.map +1 -0
  119. package/dist/components/illustrative-icon/src/assets/user-offblack-static.d.ts +4 -0
  120. package/dist/components/illustrative-icon/src/assets/user-offblack-static.d.ts.map +1 -0
  121. package/dist/components/illustrative-icon/src/components/accessories-duocolor-animated.d.ts +7 -0
  122. package/dist/components/illustrative-icon/src/components/accessories-duocolor-animated.d.ts.map +1 -0
  123. package/dist/components/illustrative-icon/src/components/accessories-duocolor-static.d.ts +7 -0
  124. package/dist/components/illustrative-icon/src/components/accessories-duocolor-static.d.ts.map +1 -0
  125. package/dist/components/illustrative-icon/src/components/accessories-offblack-animated.d.ts +7 -0
  126. package/dist/components/illustrative-icon/src/components/accessories-offblack-animated.d.ts.map +1 -0
  127. package/dist/components/illustrative-icon/src/components/accessories-offblack-static.d.ts +7 -0
  128. package/dist/components/illustrative-icon/src/components/accessories-offblack-static.d.ts.map +1 -0
  129. package/dist/components/illustrative-icon/src/components/bag-duocolor-animated.d.ts +7 -0
  130. package/dist/components/illustrative-icon/src/components/bag-duocolor-animated.d.ts.map +1 -0
  131. package/dist/components/illustrative-icon/src/components/bag-duocolor-static.d.ts +7 -0
  132. package/dist/components/illustrative-icon/src/components/bag-duocolor-static.d.ts.map +1 -0
  133. package/dist/components/illustrative-icon/src/components/bag-offblack-animated.d.ts +7 -0
  134. package/dist/components/illustrative-icon/src/components/bag-offblack-animated.d.ts.map +1 -0
  135. package/dist/components/illustrative-icon/src/components/bag-offblack-static.d.ts +7 -0
  136. package/dist/components/illustrative-icon/src/components/bag-offblack-static.d.ts.map +1 -0
  137. package/dist/components/illustrative-icon/src/components/bag-plus-duocolor-animated.d.ts +7 -0
  138. package/dist/components/illustrative-icon/src/components/bag-plus-duocolor-animated.d.ts.map +1 -0
  139. package/dist/components/illustrative-icon/src/components/bag-plus-duocolor-static.d.ts +7 -0
  140. package/dist/components/illustrative-icon/src/components/bag-plus-duocolor-static.d.ts.map +1 -0
  141. package/dist/components/illustrative-icon/src/components/bag-plus-offblack-animated.d.ts +7 -0
  142. package/dist/components/illustrative-icon/src/components/bag-plus-offblack-animated.d.ts.map +1 -0
  143. package/dist/components/illustrative-icon/src/components/bag-plus-offblack-static.d.ts +7 -0
  144. package/dist/components/illustrative-icon/src/components/bag-plus-offblack-static.d.ts.map +1 -0
  145. package/dist/components/illustrative-icon/src/components/box-sync-duocolor-animated.d.ts +7 -0
  146. package/dist/components/illustrative-icon/src/components/box-sync-duocolor-animated.d.ts.map +1 -0
  147. package/dist/components/illustrative-icon/src/components/box-sync-duocolor-static.d.ts +7 -0
  148. package/dist/components/illustrative-icon/src/components/box-sync-duocolor-static.d.ts.map +1 -0
  149. package/dist/components/illustrative-icon/src/components/box-sync-offblack-animated.d.ts +7 -0
  150. package/dist/components/illustrative-icon/src/components/box-sync-offblack-animated.d.ts.map +1 -0
  151. package/dist/components/illustrative-icon/src/components/box-sync-offblack-static.d.ts +7 -0
  152. package/dist/components/illustrative-icon/src/components/box-sync-offblack-static.d.ts.map +1 -0
  153. package/dist/components/illustrative-icon/src/components/display-protection-duocolor-animated.d.ts +7 -0
  154. package/dist/components/illustrative-icon/src/components/display-protection-duocolor-animated.d.ts.map +1 -0
  155. package/dist/components/illustrative-icon/src/components/display-protection-duocolor-static.d.ts +7 -0
  156. package/dist/components/illustrative-icon/src/components/display-protection-duocolor-static.d.ts.map +1 -0
  157. package/dist/components/illustrative-icon/src/components/display-protection-offblack-animated.d.ts +7 -0
  158. package/dist/components/illustrative-icon/src/components/display-protection-offblack-animated.d.ts.map +1 -0
  159. package/dist/components/illustrative-icon/src/components/display-protection-offblack-static.d.ts +7 -0
  160. package/dist/components/illustrative-icon/src/components/display-protection-offblack-static.d.ts.map +1 -0
  161. package/dist/components/illustrative-icon/src/components/enrollment-duocolor-animated.d.ts +7 -0
  162. package/dist/components/illustrative-icon/src/components/enrollment-duocolor-animated.d.ts.map +1 -0
  163. package/dist/components/illustrative-icon/src/components/enrollment-duocolor-static.d.ts +7 -0
  164. package/dist/components/illustrative-icon/src/components/enrollment-duocolor-static.d.ts.map +1 -0
  165. package/dist/components/illustrative-icon/src/components/enrollment-offblack-animated.d.ts +7 -0
  166. package/dist/components/illustrative-icon/src/components/enrollment-offblack-animated.d.ts.map +1 -0
  167. package/dist/components/illustrative-icon/src/components/enrollment-offblack-static.d.ts +7 -0
  168. package/dist/components/illustrative-icon/src/components/enrollment-offblack-static.d.ts.map +1 -0
  169. package/dist/components/illustrative-icon/src/components/gift-box-duocolor-animated.d.ts +7 -0
  170. package/dist/components/illustrative-icon/src/components/gift-box-duocolor-animated.d.ts.map +1 -0
  171. package/dist/components/illustrative-icon/src/components/gift-box-duocolor-static.d.ts +7 -0
  172. package/dist/components/illustrative-icon/src/components/gift-box-duocolor-static.d.ts.map +1 -0
  173. package/dist/components/illustrative-icon/src/components/gift-box-offblack-animated.d.ts +7 -0
  174. package/dist/components/illustrative-icon/src/components/gift-box-offblack-animated.d.ts.map +1 -0
  175. package/dist/components/illustrative-icon/src/components/gift-box-offblack-static.d.ts +7 -0
  176. package/dist/components/illustrative-icon/src/components/gift-box-offblack-static.d.ts.map +1 -0
  177. package/dist/components/illustrative-icon/src/components/gift-box-plus-duocolor-animated.d.ts +7 -0
  178. package/dist/components/illustrative-icon/src/components/gift-box-plus-duocolor-animated.d.ts.map +1 -0
  179. package/dist/components/illustrative-icon/src/components/gift-box-plus-duocolor-static.d.ts +7 -0
  180. package/dist/components/illustrative-icon/src/components/gift-box-plus-duocolor-static.d.ts.map +1 -0
  181. package/dist/components/illustrative-icon/src/components/gift-box-plus-offblack-animated.d.ts +7 -0
  182. package/dist/components/illustrative-icon/src/components/gift-box-plus-offblack-animated.d.ts.map +1 -0
  183. package/dist/components/illustrative-icon/src/components/gift-box-plus-offblack-static.d.ts +7 -0
  184. package/dist/components/illustrative-icon/src/components/gift-box-plus-offblack-static.d.ts.map +1 -0
  185. package/dist/components/illustrative-icon/src/components/info-letter-duocolor-animated.d.ts +7 -0
  186. package/dist/components/illustrative-icon/src/components/info-letter-duocolor-animated.d.ts.map +1 -0
  187. package/dist/components/illustrative-icon/src/components/info-letter-duocolor-static.d.ts +7 -0
  188. package/dist/components/illustrative-icon/src/components/info-letter-duocolor-static.d.ts.map +1 -0
  189. package/dist/components/illustrative-icon/src/components/info-letter-offblack-animated.d.ts +7 -0
  190. package/dist/components/illustrative-icon/src/components/info-letter-offblack-animated.d.ts.map +1 -0
  191. package/dist/components/illustrative-icon/src/components/info-letter-offblack-static.d.ts +7 -0
  192. package/dist/components/illustrative-icon/src/components/info-letter-offblack-static.d.ts.map +1 -0
  193. package/dist/components/illustrative-icon/src/components/leaf-duocolor-animated.d.ts +7 -0
  194. package/dist/components/illustrative-icon/src/components/leaf-duocolor-animated.d.ts.map +1 -0
  195. package/dist/components/illustrative-icon/src/components/leaf-duocolor-static.d.ts +7 -0
  196. package/dist/components/illustrative-icon/src/components/leaf-duocolor-static.d.ts.map +1 -0
  197. package/dist/components/illustrative-icon/src/components/leaf-offblack-animated.d.ts +7 -0
  198. package/dist/components/illustrative-icon/src/components/leaf-offblack-animated.d.ts.map +1 -0
  199. package/dist/components/illustrative-icon/src/components/leaf-offblack-static.d.ts +7 -0
  200. package/dist/components/illustrative-icon/src/components/leaf-offblack-static.d.ts.map +1 -0
  201. package/dist/components/illustrative-icon/src/components/number-tranfer-duocolor-static.d.ts +7 -0
  202. package/dist/components/illustrative-icon/src/components/number-tranfer-duocolor-static.d.ts.map +1 -0
  203. package/dist/components/illustrative-icon/src/components/number-tranfer-offblack-static.d.ts +7 -0
  204. package/dist/components/illustrative-icon/src/components/number-tranfer-offblack-static.d.ts.map +1 -0
  205. package/dist/components/illustrative-icon/src/components/number-transfer-duocolor-animated.d.ts +7 -0
  206. package/dist/components/illustrative-icon/src/components/number-transfer-duocolor-animated.d.ts.map +1 -0
  207. package/dist/components/illustrative-icon/src/components/number-transfer-offblack-animated.d.ts +7 -0
  208. package/dist/components/illustrative-icon/src/components/number-transfer-offblack-animated.d.ts.map +1 -0
  209. package/dist/components/illustrative-icon/src/components/page-duocolor-static.d.ts +7 -0
  210. package/dist/components/illustrative-icon/src/components/page-duocolor-static.d.ts.map +1 -0
  211. package/dist/components/illustrative-icon/src/components/page-offblack-static.d.ts +7 -0
  212. package/dist/components/illustrative-icon/src/components/page-offblack-static.d.ts.map +1 -0
  213. package/dist/components/illustrative-icon/src/components/phone-repair-duocolor-animated.d.ts +7 -0
  214. package/dist/components/illustrative-icon/src/components/phone-repair-duocolor-animated.d.ts.map +1 -0
  215. package/dist/components/illustrative-icon/src/components/phone-repair-duocolor-static.d.ts +7 -0
  216. package/dist/components/illustrative-icon/src/components/phone-repair-duocolor-static.d.ts.map +1 -0
  217. package/dist/components/illustrative-icon/src/components/phone-repair-offblack-animated.d.ts +7 -0
  218. package/dist/components/illustrative-icon/src/components/phone-repair-offblack-animated.d.ts.map +1 -0
  219. package/dist/components/illustrative-icon/src/components/phone-repair-offblack-static.d.ts +7 -0
  220. package/dist/components/illustrative-icon/src/components/phone-repair-offblack-static.d.ts.map +1 -0
  221. package/dist/components/illustrative-icon/src/components/phone-settings-duocolor-animated.d.ts +7 -0
  222. package/dist/components/illustrative-icon/src/components/phone-settings-duocolor-animated.d.ts.map +1 -0
  223. package/dist/components/illustrative-icon/src/components/phone-settings-duocolor-static.d.ts +7 -0
  224. package/dist/components/illustrative-icon/src/components/phone-settings-duocolor-static.d.ts.map +1 -0
  225. package/dist/components/illustrative-icon/src/components/phone-settings-offblack-animated.d.ts +7 -0
  226. package/dist/components/illustrative-icon/src/components/phone-settings-offblack-animated.d.ts.map +1 -0
  227. package/dist/components/illustrative-icon/src/components/phone-settings-offblack-static.d.ts +7 -0
  228. package/dist/components/illustrative-icon/src/components/phone-settings-offblack-static.d.ts.map +1 -0
  229. package/dist/components/illustrative-icon/src/components/return-label-duocolor-animated.d.ts +7 -0
  230. package/dist/components/illustrative-icon/src/components/return-label-duocolor-animated.d.ts.map +1 -0
  231. package/dist/components/illustrative-icon/src/components/return-label-duocolor-static.d.ts +7 -0
  232. package/dist/components/illustrative-icon/src/components/return-label-duocolor-static.d.ts.map +1 -0
  233. package/dist/components/illustrative-icon/src/components/return-label-offblack-animated.d.ts +7 -0
  234. package/dist/components/illustrative-icon/src/components/return-label-offblack-animated.d.ts.map +1 -0
  235. package/dist/components/illustrative-icon/src/components/return-label-offblack-static.d.ts +7 -0
  236. package/dist/components/illustrative-icon/src/components/return-label-offblack-static.d.ts.map +1 -0
  237. package/dist/components/illustrative-icon/src/components/settings-pen-duocolor-animated.d.ts +7 -0
  238. package/dist/components/illustrative-icon/src/components/settings-pen-duocolor-animated.d.ts.map +1 -0
  239. package/dist/components/illustrative-icon/src/components/settings-pen-duocolor-static.d.ts +7 -0
  240. package/dist/components/illustrative-icon/src/components/settings-pen-duocolor-static.d.ts.map +1 -0
  241. package/dist/components/illustrative-icon/src/components/settings-pen-offblack-animated.d.ts +7 -0
  242. package/dist/components/illustrative-icon/src/components/settings-pen-offblack-animated.d.ts.map +1 -0
  243. package/dist/components/illustrative-icon/src/components/settings-pen-offblack-static.d.ts +7 -0
  244. package/dist/components/illustrative-icon/src/components/settings-pen-offblack-static.d.ts.map +1 -0
  245. package/dist/components/illustrative-icon/src/components/shield-time-duocolor-animated.d.ts +7 -0
  246. package/dist/components/illustrative-icon/src/components/shield-time-duocolor-animated.d.ts.map +1 -0
  247. package/dist/components/illustrative-icon/src/components/shield-time-duocolor-static.d.ts +7 -0
  248. package/dist/components/illustrative-icon/src/components/shield-time-duocolor-static.d.ts.map +1 -0
  249. package/dist/components/illustrative-icon/src/components/shield-time-offblack-animated.d.ts +7 -0
  250. package/dist/components/illustrative-icon/src/components/shield-time-offblack-animated.d.ts.map +1 -0
  251. package/dist/components/illustrative-icon/src/components/shield-time-offblack-static.d.ts +7 -0
  252. package/dist/components/illustrative-icon/src/components/shield-time-offblack-static.d.ts.map +1 -0
  253. package/dist/components/illustrative-icon/src/components/user-duocolor-animated.d.ts +7 -0
  254. package/dist/components/illustrative-icon/src/components/user-duocolor-animated.d.ts.map +1 -0
  255. package/dist/components/illustrative-icon/src/components/user-duocolor-static.d.ts +7 -0
  256. package/dist/components/illustrative-icon/src/components/user-duocolor-static.d.ts.map +1 -0
  257. package/dist/components/illustrative-icon/src/components/user-offblack-animated.d.ts +7 -0
  258. package/dist/components/illustrative-icon/src/components/user-offblack-animated.d.ts.map +1 -0
  259. package/dist/components/illustrative-icon/src/components/user-offblack-static.d.ts +7 -0
  260. package/dist/components/illustrative-icon/src/components/user-offblack-static.d.ts.map +1 -0
  261. package/dist/components/label/src/label.visual.fixtures.d.ts +14 -0
  262. package/dist/components/label/src/label.visual.fixtures.d.ts.map +1 -0
  263. package/dist/components/listbox/src/listbox.visual.fixtures.d.ts +13 -0
  264. package/dist/components/listbox/src/listbox.visual.fixtures.d.ts.map +1 -0
  265. package/dist/components/select/src/select.d.ts.map +1 -1
  266. package/dist/components/select/src/select.visual.fixtures.d.ts +14 -0
  267. package/dist/components/select/src/select.visual.fixtures.d.ts.map +1 -0
  268. package/dist/components/table/src/story-utils/column-def.d.ts.map +1 -1
  269. package/dist/components/table/src/table-column-header-cell.d.ts +3 -10
  270. package/dist/components/table/src/table-column-header-cell.d.ts.map +1 -1
  271. package/dist/components/table/src/table-headers.d.ts +2 -4
  272. package/dist/components/table/src/table-headers.d.ts.map +1 -1
  273. package/dist/components/table/src/table-toolbar.d.ts.map +1 -1
  274. package/dist/components/table/src/table.d.ts +2 -2
  275. package/dist/components/table/src/table.d.ts.map +1 -1
  276. package/dist/components/table/src/test-utils/helpers.d.ts +0 -5
  277. package/dist/components/table/src/test-utils/helpers.d.ts.map +1 -1
  278. package/dist/components/table/src/types.d.ts +8 -8
  279. package/dist/components/table/src/types.d.ts.map +1 -1
  280. package/dist/components/table/src/use-drag-handle.hook.d.ts.map +1 -1
  281. package/dist/components/text-field/src/text-field-base.d.ts.map +1 -1
  282. package/dist/components-metadata.js +456 -0
  283. package/dist/{date-field-HEFdHIxk.mjs → date-field-DOCLv_xS.mjs} +2 -2
  284. package/dist/{date-field-HEFdHIxk.mjs.map → date-field-DOCLv_xS.mjs.map} +1 -1
  285. package/dist/{date-field-CKxEWHG3.js → date-field-uN87mgbH.js} +2 -2
  286. package/dist/{date-field-CKxEWHG3.js.map → date-field-uN87mgbH.js.map} +1 -1
  287. package/dist/date-field.cjs.js +1 -1
  288. package/dist/date-field.es.js +1 -1
  289. package/dist/{date-picker-cQewKIMN.mjs → date-picker-BtEuRtAu.mjs} +3 -3
  290. package/dist/{date-picker-cQewKIMN.mjs.map → date-picker-BtEuRtAu.mjs.map} +1 -1
  291. package/dist/{date-picker-CDBwkAJI.js → date-picker-X8b9wDfp.js} +2 -2
  292. package/dist/{date-picker-CDBwkAJI.js.map → date-picker-X8b9wDfp.js.map} +1 -1
  293. package/dist/date-picker.cjs.js +1 -1
  294. package/dist/date-picker.es.js +1 -1
  295. package/dist/{date-range-field-_WctWD29.mjs → date-range-field-B6gP8w2w.mjs} +2 -2
  296. package/dist/{date-range-field-_WctWD29.mjs.map → date-range-field-B6gP8w2w.mjs.map} +1 -1
  297. package/dist/{date-range-field-D7Hn9FGN.js → date-range-field-DLt6q5TQ.js} +2 -2
  298. package/dist/{date-range-field-D7Hn9FGN.js.map → date-range-field-DLt6q5TQ.js.map} +1 -1
  299. package/dist/date-range-field.cjs.js +1 -1
  300. package/dist/date-range-field.es.js +1 -1
  301. package/dist/{footer-CS6ZfztM.js → footer-Cn1-zG1v.js} +2 -2
  302. package/dist/{footer-CS6ZfztM.js.map → footer-Cn1-zG1v.js.map} +1 -1
  303. package/dist/{footer-OJXbTn1e.mjs → footer-D-2b7UIB.mjs} +2 -2
  304. package/dist/{footer-OJXbTn1e.mjs.map → footer-D-2b7UIB.mjs.map} +1 -1
  305. package/dist/footer.cjs.js +1 -1
  306. package/dist/footer.es.js +1 -1
  307. package/dist/icon/all-icon-components.d.ts +3 -0
  308. package/dist/icon/all-icon-components.d.ts.map +1 -1
  309. package/dist/icon/all-icons.cjs.js +1 -1
  310. package/dist/icon/all-icons.cjs.js.map +1 -1
  311. package/dist/icon/all-icons.d.ts +3 -0
  312. package/dist/icon/all-icons.d.ts.map +1 -1
  313. package/dist/icon/all-icons.es.js +395 -377
  314. package/dist/icon/all-icons.es.js.map +1 -1
  315. package/dist/icon/assets/moon.cjs.js +2 -0
  316. package/dist/icon/assets/moon.cjs.js.map +1 -0
  317. package/dist/icon/assets/moon.d.ts +7 -0
  318. package/dist/icon/assets/moon.d.ts.map +1 -0
  319. package/dist/icon/assets/moon.es.js +10 -0
  320. package/dist/icon/assets/moon.es.js.map +1 -0
  321. package/dist/icon/assets/sun.cjs.js +2 -0
  322. package/dist/icon/assets/sun.cjs.js.map +1 -0
  323. package/dist/icon/assets/sun.d.ts +7 -0
  324. package/dist/icon/assets/sun.d.ts.map +1 -0
  325. package/dist/icon/assets/sun.es.js +10 -0
  326. package/dist/icon/assets/sun.es.js.map +1 -0
  327. package/dist/icon/assets/unpin.cjs.js +2 -0
  328. package/dist/icon/assets/unpin.cjs.js.map +1 -0
  329. package/dist/icon/assets/unpin.d.ts +7 -0
  330. package/dist/icon/assets/unpin.d.ts.map +1 -0
  331. package/dist/icon/assets/unpin.es.js +10 -0
  332. package/dist/icon/assets/unpin.es.js.map +1 -0
  333. package/dist/icon/components/moon.cjs.js +2 -0
  334. package/dist/icon/components/moon.cjs.js.map +1 -0
  335. package/dist/icon/components/moon.d.ts +7 -0
  336. package/dist/icon/components/moon.d.ts.map +1 -0
  337. package/dist/icon/components/moon.es.js +13 -0
  338. package/dist/icon/components/moon.es.js.map +1 -0
  339. package/dist/icon/components/sun.cjs.js +2 -0
  340. package/dist/icon/components/sun.cjs.js.map +1 -0
  341. package/dist/icon/components/sun.d.ts +7 -0
  342. package/dist/icon/components/sun.d.ts.map +1 -0
  343. package/dist/icon/components/sun.es.js +13 -0
  344. package/dist/icon/components/sun.es.js.map +1 -0
  345. package/dist/icon/components/unpin.cjs.js +2 -0
  346. package/dist/icon/components/unpin.cjs.js.map +1 -0
  347. package/dist/icon/components/unpin.d.ts +7 -0
  348. package/dist/icon/components/unpin.d.ts.map +1 -0
  349. package/dist/icon/components/unpin.es.js +13 -0
  350. package/dist/icon/components/unpin.es.js.map +1 -0
  351. package/dist/icon/components-metadata.js +24 -0
  352. package/dist/icon/dynamic-icon.cjs.js +1 -1
  353. package/dist/icon/dynamic-icon.cjs.js.map +1 -1
  354. package/dist/icon/dynamic-icon.es.js +1 -1
  355. package/dist/icon/dynamic-icon.es.js.map +1 -1
  356. package/dist/icon/icon-imports.d.ts +18 -0
  357. package/dist/icon/icon-imports.d.ts.map +1 -1
  358. package/dist/icon/moon.svg +1 -0
  359. package/dist/icon/sun.svg +1 -0
  360. package/dist/icon/unpin.svg +1 -0
  361. package/dist/illustrative-icon/all-animated-illustrative-icon-components.d.ts +34 -0
  362. package/dist/illustrative-icon/all-animated-illustrative-icon-components.d.ts.map +1 -1
  363. package/dist/illustrative-icon/all-static-illustrative-icon-components.d.ts +36 -0
  364. package/dist/illustrative-icon/all-static-illustrative-icon-components.d.ts.map +1 -1
  365. package/dist/illustrative-icon/assets/accessories-duocolor-static.d.ts +4 -0
  366. package/dist/illustrative-icon/assets/accessories-duocolor-static.d.ts.map +1 -0
  367. package/dist/illustrative-icon/assets/accessories-offblack-static.d.ts +4 -0
  368. package/dist/illustrative-icon/assets/accessories-offblack-static.d.ts.map +1 -0
  369. package/dist/illustrative-icon/assets/bag-duocolor-static.d.ts +4 -0
  370. package/dist/illustrative-icon/assets/bag-duocolor-static.d.ts.map +1 -0
  371. package/dist/illustrative-icon/assets/bag-offblack-static.d.ts +4 -0
  372. package/dist/illustrative-icon/assets/bag-offblack-static.d.ts.map +1 -0
  373. package/dist/illustrative-icon/assets/bag-plus-duocolor-static.d.ts +4 -0
  374. package/dist/illustrative-icon/assets/bag-plus-duocolor-static.d.ts.map +1 -0
  375. package/dist/illustrative-icon/assets/bag-plus-offblack-static.d.ts +4 -0
  376. package/dist/illustrative-icon/assets/bag-plus-offblack-static.d.ts.map +1 -0
  377. package/dist/illustrative-icon/assets/box-sync-duocolor-static.d.ts +4 -0
  378. package/dist/illustrative-icon/assets/box-sync-duocolor-static.d.ts.map +1 -0
  379. package/dist/illustrative-icon/assets/box-sync-offblack-static.d.ts +4 -0
  380. package/dist/illustrative-icon/assets/box-sync-offblack-static.d.ts.map +1 -0
  381. package/dist/illustrative-icon/assets/display-protection-duocolor-static.d.ts +4 -0
  382. package/dist/illustrative-icon/assets/display-protection-duocolor-static.d.ts.map +1 -0
  383. package/dist/illustrative-icon/assets/display-protection-offblack-static.d.ts +4 -0
  384. package/dist/illustrative-icon/assets/display-protection-offblack-static.d.ts.map +1 -0
  385. package/dist/illustrative-icon/assets/enrollment-duocolor-static.d.ts +4 -0
  386. package/dist/illustrative-icon/assets/enrollment-duocolor-static.d.ts.map +1 -0
  387. package/dist/illustrative-icon/assets/enrollment-offblack-static.d.ts +4 -0
  388. package/dist/illustrative-icon/assets/enrollment-offblack-static.d.ts.map +1 -0
  389. package/dist/illustrative-icon/assets/gift-box-duocolor-static.d.ts +4 -0
  390. package/dist/illustrative-icon/assets/gift-box-duocolor-static.d.ts.map +1 -0
  391. package/dist/illustrative-icon/assets/gift-box-offblack-static.d.ts +4 -0
  392. package/dist/illustrative-icon/assets/gift-box-offblack-static.d.ts.map +1 -0
  393. package/dist/illustrative-icon/assets/gift-box-plus-duocolor-static.d.ts +4 -0
  394. package/dist/illustrative-icon/assets/gift-box-plus-duocolor-static.d.ts.map +1 -0
  395. package/dist/illustrative-icon/assets/gift-box-plus-offblack-static.d.ts +4 -0
  396. package/dist/illustrative-icon/assets/gift-box-plus-offblack-static.d.ts.map +1 -0
  397. package/dist/illustrative-icon/assets/info-letter-duocolor-static.d.ts +4 -0
  398. package/dist/illustrative-icon/assets/info-letter-duocolor-static.d.ts.map +1 -0
  399. package/dist/illustrative-icon/assets/info-letter-offblack-static.d.ts +4 -0
  400. package/dist/illustrative-icon/assets/info-letter-offblack-static.d.ts.map +1 -0
  401. package/dist/illustrative-icon/assets/json/accessories-duocolor-animated.json.d.ts +3 -0
  402. package/dist/illustrative-icon/assets/json/accessories-offblack-animated.json.d.ts +3 -0
  403. package/dist/illustrative-icon/assets/json/bag-duocolor-animated.json.d.ts +3 -0
  404. package/dist/illustrative-icon/assets/json/bag-offblack-animated.json.d.ts +3 -0
  405. package/dist/illustrative-icon/assets/json/bag-plus-duocolor-animated.json.d.ts +3 -0
  406. package/dist/illustrative-icon/assets/json/bag-plus-offblack-animated.json.d.ts +3 -0
  407. package/dist/illustrative-icon/assets/json/box-sync-duocolor-animated.json.d.ts +3 -0
  408. package/dist/illustrative-icon/assets/json/box-sync-offblack-animated.json.d.ts +3 -0
  409. package/dist/illustrative-icon/assets/json/display-protection-duocolor-animated.json.d.ts +3 -0
  410. package/dist/illustrative-icon/assets/json/display-protection-offblack-animated.json.d.ts +3 -0
  411. package/dist/illustrative-icon/assets/json/enrollment-duocolor-animated.json.d.ts +3 -0
  412. package/dist/illustrative-icon/assets/json/enrollment-offblack-animated.json.d.ts +3 -0
  413. package/dist/illustrative-icon/assets/json/gift-box-duocolor-animated.json.d.ts +3 -0
  414. package/dist/illustrative-icon/assets/json/gift-box-offblack-animated.json.d.ts +3 -0
  415. package/dist/illustrative-icon/assets/json/gift-box-plus-duocolor-animated.json.d.ts +3 -0
  416. package/dist/illustrative-icon/assets/json/gift-box-plus-offblack-animated.json.d.ts +3 -0
  417. package/dist/illustrative-icon/assets/json/info-letter-duocolor-animated.json.d.ts +3 -0
  418. package/dist/illustrative-icon/assets/json/info-letter-offblack-animated.json.d.ts +3 -0
  419. package/dist/illustrative-icon/assets/json/leaf-duocolor-animated.json.d.ts +3 -0
  420. package/dist/illustrative-icon/assets/json/leaf-offblack-animated.json.d.ts +3 -0
  421. package/dist/illustrative-icon/assets/json/number-transfer-duocolor-animated.json.d.ts +3 -0
  422. package/dist/illustrative-icon/assets/json/number-transfer-offblack-animated.json.d.ts +3 -0
  423. package/dist/illustrative-icon/assets/json/phone-repair-duocolor-animated.json.d.ts +3 -0
  424. package/dist/illustrative-icon/assets/json/phone-repair-offblack-animated.json.d.ts +3 -0
  425. package/dist/illustrative-icon/assets/json/phone-settings-duocolor-animated.json.d.ts +3 -0
  426. package/dist/illustrative-icon/assets/json/phone-settings-offblack-animated.json.d.ts +3 -0
  427. package/dist/illustrative-icon/assets/json/return-label-duocolor-animated.json.d.ts +3 -0
  428. package/dist/illustrative-icon/assets/json/return-label-offblack-animated.json.d.ts +3 -0
  429. package/dist/illustrative-icon/assets/json/settings-pen-duocolor-animated.json.d.ts +3 -0
  430. package/dist/illustrative-icon/assets/json/settings-pen-offblack-animated.json.d.ts +3 -0
  431. package/dist/illustrative-icon/assets/json/shield-time-duocolor-animated.json.d.ts +3 -0
  432. package/dist/illustrative-icon/assets/json/shield-time-offblack-animated.json.d.ts +3 -0
  433. package/dist/illustrative-icon/assets/json/user-duocolor-animated.json.d.ts +3 -0
  434. package/dist/illustrative-icon/assets/json/user-offblack-animated.json.d.ts +3 -0
  435. package/dist/illustrative-icon/assets/leaf-duocolor-static.d.ts +4 -0
  436. package/dist/illustrative-icon/assets/leaf-duocolor-static.d.ts.map +1 -0
  437. package/dist/illustrative-icon/assets/leaf-offblack-static.d.ts +4 -0
  438. package/dist/illustrative-icon/assets/leaf-offblack-static.d.ts.map +1 -0
  439. package/dist/illustrative-icon/assets/number-tranfer-duocolor-static.d.ts +4 -0
  440. package/dist/illustrative-icon/assets/number-tranfer-duocolor-static.d.ts.map +1 -0
  441. package/dist/illustrative-icon/assets/number-tranfer-offblack-static.d.ts +4 -0
  442. package/dist/illustrative-icon/assets/number-tranfer-offblack-static.d.ts.map +1 -0
  443. package/dist/illustrative-icon/assets/page-duocolor-static.d.ts +4 -0
  444. package/dist/illustrative-icon/assets/page-duocolor-static.d.ts.map +1 -0
  445. package/dist/illustrative-icon/assets/page-offblack-static.d.ts +4 -0
  446. package/dist/illustrative-icon/assets/page-offblack-static.d.ts.map +1 -0
  447. package/dist/illustrative-icon/assets/phone-repair-duocolor-static.d.ts +4 -0
  448. package/dist/illustrative-icon/assets/phone-repair-duocolor-static.d.ts.map +1 -0
  449. package/dist/illustrative-icon/assets/phone-repair-offblack-static.d.ts +4 -0
  450. package/dist/illustrative-icon/assets/phone-repair-offblack-static.d.ts.map +1 -0
  451. package/dist/illustrative-icon/assets/phone-settings-duocolor-static.d.ts +4 -0
  452. package/dist/illustrative-icon/assets/phone-settings-duocolor-static.d.ts.map +1 -0
  453. package/dist/illustrative-icon/assets/phone-settings-offblack-static.d.ts +4 -0
  454. package/dist/illustrative-icon/assets/phone-settings-offblack-static.d.ts.map +1 -0
  455. package/dist/illustrative-icon/assets/return-label-duocolor-static.d.ts +4 -0
  456. package/dist/illustrative-icon/assets/return-label-duocolor-static.d.ts.map +1 -0
  457. package/dist/illustrative-icon/assets/return-label-offblack-static.d.ts +4 -0
  458. package/dist/illustrative-icon/assets/return-label-offblack-static.d.ts.map +1 -0
  459. package/dist/illustrative-icon/assets/settings-pen-duocolor-static.d.ts +4 -0
  460. package/dist/illustrative-icon/assets/settings-pen-duocolor-static.d.ts.map +1 -0
  461. package/dist/illustrative-icon/assets/settings-pen-offblack-static.d.ts +4 -0
  462. package/dist/illustrative-icon/assets/settings-pen-offblack-static.d.ts.map +1 -0
  463. package/dist/illustrative-icon/assets/shield-time-duocolor-static.d.ts +4 -0
  464. package/dist/illustrative-icon/assets/shield-time-duocolor-static.d.ts.map +1 -0
  465. package/dist/illustrative-icon/assets/shield-time-offblack-static.d.ts +4 -0
  466. package/dist/illustrative-icon/assets/shield-time-offblack-static.d.ts.map +1 -0
  467. package/dist/illustrative-icon/assets/user-duocolor-static.d.ts +4 -0
  468. package/dist/illustrative-icon/assets/user-duocolor-static.d.ts.map +1 -0
  469. package/dist/illustrative-icon/assets/user-offblack-static.d.ts +4 -0
  470. package/dist/illustrative-icon/assets/user-offblack-static.d.ts.map +1 -0
  471. package/dist/illustrative-icon/components/accessories-duocolor-animated.cjs.js +2 -0
  472. package/dist/illustrative-icon/components/accessories-duocolor-animated.cjs.js.map +1 -0
  473. package/dist/illustrative-icon/components/accessories-duocolor-animated.d.ts +7 -0
  474. package/dist/illustrative-icon/components/accessories-duocolor-animated.d.ts.map +1 -0
  475. package/dist/illustrative-icon/components/accessories-duocolor-animated.es.js +20 -0
  476. package/dist/illustrative-icon/components/accessories-duocolor-animated.es.js.map +1 -0
  477. package/dist/illustrative-icon/components/accessories-duocolor-static.cjs.js +2 -0
  478. package/dist/illustrative-icon/components/accessories-duocolor-static.cjs.js.map +1 -0
  479. package/dist/illustrative-icon/components/accessories-duocolor-static.d.ts +7 -0
  480. package/dist/illustrative-icon/components/accessories-duocolor-static.d.ts.map +1 -0
  481. package/dist/illustrative-icon/components/accessories-duocolor-static.es.js +10 -0
  482. package/dist/illustrative-icon/components/accessories-duocolor-static.es.js.map +1 -0
  483. package/dist/illustrative-icon/components/accessories-offblack-animated.cjs.js +2 -0
  484. package/dist/illustrative-icon/components/accessories-offblack-animated.cjs.js.map +1 -0
  485. package/dist/illustrative-icon/components/accessories-offblack-animated.d.ts +7 -0
  486. package/dist/illustrative-icon/components/accessories-offblack-animated.d.ts.map +1 -0
  487. package/dist/illustrative-icon/components/accessories-offblack-animated.es.js +20 -0
  488. package/dist/illustrative-icon/components/accessories-offblack-animated.es.js.map +1 -0
  489. package/dist/illustrative-icon/components/accessories-offblack-static.cjs.js +2 -0
  490. package/dist/illustrative-icon/components/accessories-offblack-static.cjs.js.map +1 -0
  491. package/dist/illustrative-icon/components/accessories-offblack-static.d.ts +7 -0
  492. package/dist/illustrative-icon/components/accessories-offblack-static.d.ts.map +1 -0
  493. package/dist/illustrative-icon/components/accessories-offblack-static.es.js +10 -0
  494. package/dist/illustrative-icon/components/accessories-offblack-static.es.js.map +1 -0
  495. package/dist/illustrative-icon/components/bag-duocolor-animated.cjs.js +2 -0
  496. package/dist/illustrative-icon/components/bag-duocolor-animated.cjs.js.map +1 -0
  497. package/dist/illustrative-icon/components/bag-duocolor-animated.d.ts +7 -0
  498. package/dist/illustrative-icon/components/bag-duocolor-animated.d.ts.map +1 -0
  499. package/dist/illustrative-icon/components/bag-duocolor-animated.es.js +20 -0
  500. package/dist/illustrative-icon/components/bag-duocolor-animated.es.js.map +1 -0
  501. package/dist/illustrative-icon/components/bag-duocolor-static.cjs.js +2 -0
  502. package/dist/illustrative-icon/components/bag-duocolor-static.cjs.js.map +1 -0
  503. package/dist/illustrative-icon/components/bag-duocolor-static.d.ts +7 -0
  504. package/dist/illustrative-icon/components/bag-duocolor-static.d.ts.map +1 -0
  505. package/dist/illustrative-icon/components/bag-duocolor-static.es.js +10 -0
  506. package/dist/illustrative-icon/components/bag-duocolor-static.es.js.map +1 -0
  507. package/dist/illustrative-icon/components/bag-offblack-animated.cjs.js +2 -0
  508. package/dist/illustrative-icon/components/bag-offblack-animated.cjs.js.map +1 -0
  509. package/dist/illustrative-icon/components/bag-offblack-animated.d.ts +7 -0
  510. package/dist/illustrative-icon/components/bag-offblack-animated.d.ts.map +1 -0
  511. package/dist/illustrative-icon/components/bag-offblack-animated.es.js +20 -0
  512. package/dist/illustrative-icon/components/bag-offblack-animated.es.js.map +1 -0
  513. package/dist/illustrative-icon/components/bag-offblack-static.cjs.js +2 -0
  514. package/dist/illustrative-icon/components/bag-offblack-static.cjs.js.map +1 -0
  515. package/dist/illustrative-icon/components/bag-offblack-static.d.ts +7 -0
  516. package/dist/illustrative-icon/components/bag-offblack-static.d.ts.map +1 -0
  517. package/dist/illustrative-icon/components/bag-offblack-static.es.js +10 -0
  518. package/dist/illustrative-icon/components/bag-offblack-static.es.js.map +1 -0
  519. package/dist/illustrative-icon/components/bag-plus-duocolor-animated.cjs.js +2 -0
  520. package/dist/illustrative-icon/components/bag-plus-duocolor-animated.cjs.js.map +1 -0
  521. package/dist/illustrative-icon/components/bag-plus-duocolor-animated.d.ts +7 -0
  522. package/dist/illustrative-icon/components/bag-plus-duocolor-animated.d.ts.map +1 -0
  523. package/dist/illustrative-icon/components/bag-plus-duocolor-animated.es.js +20 -0
  524. package/dist/illustrative-icon/components/bag-plus-duocolor-animated.es.js.map +1 -0
  525. package/dist/illustrative-icon/components/bag-plus-duocolor-static.cjs.js +2 -0
  526. package/dist/illustrative-icon/components/bag-plus-duocolor-static.cjs.js.map +1 -0
  527. package/dist/illustrative-icon/components/bag-plus-duocolor-static.d.ts +7 -0
  528. package/dist/illustrative-icon/components/bag-plus-duocolor-static.d.ts.map +1 -0
  529. package/dist/illustrative-icon/components/bag-plus-duocolor-static.es.js +10 -0
  530. package/dist/illustrative-icon/components/bag-plus-duocolor-static.es.js.map +1 -0
  531. package/dist/illustrative-icon/components/bag-plus-offblack-animated.cjs.js +2 -0
  532. package/dist/illustrative-icon/components/bag-plus-offblack-animated.cjs.js.map +1 -0
  533. package/dist/illustrative-icon/components/bag-plus-offblack-animated.d.ts +7 -0
  534. package/dist/illustrative-icon/components/bag-plus-offblack-animated.d.ts.map +1 -0
  535. package/dist/illustrative-icon/components/bag-plus-offblack-animated.es.js +20 -0
  536. package/dist/illustrative-icon/components/bag-plus-offblack-animated.es.js.map +1 -0
  537. package/dist/illustrative-icon/components/bag-plus-offblack-static.cjs.js +2 -0
  538. package/dist/illustrative-icon/components/bag-plus-offblack-static.cjs.js.map +1 -0
  539. package/dist/illustrative-icon/components/bag-plus-offblack-static.d.ts +7 -0
  540. package/dist/illustrative-icon/components/bag-plus-offblack-static.d.ts.map +1 -0
  541. package/dist/illustrative-icon/components/bag-plus-offblack-static.es.js +10 -0
  542. package/dist/illustrative-icon/components/bag-plus-offblack-static.es.js.map +1 -0
  543. package/dist/illustrative-icon/components/box-sync-duocolor-animated.cjs.js +2 -0
  544. package/dist/illustrative-icon/components/box-sync-duocolor-animated.cjs.js.map +1 -0
  545. package/dist/illustrative-icon/components/box-sync-duocolor-animated.d.ts +7 -0
  546. package/dist/illustrative-icon/components/box-sync-duocolor-animated.d.ts.map +1 -0
  547. package/dist/illustrative-icon/components/box-sync-duocolor-animated.es.js +20 -0
  548. package/dist/illustrative-icon/components/box-sync-duocolor-animated.es.js.map +1 -0
  549. package/dist/illustrative-icon/components/box-sync-duocolor-static.cjs.js +2 -0
  550. package/dist/illustrative-icon/components/box-sync-duocolor-static.cjs.js.map +1 -0
  551. package/dist/illustrative-icon/components/box-sync-duocolor-static.d.ts +7 -0
  552. package/dist/illustrative-icon/components/box-sync-duocolor-static.d.ts.map +1 -0
  553. package/dist/illustrative-icon/components/box-sync-duocolor-static.es.js +10 -0
  554. package/dist/illustrative-icon/components/box-sync-duocolor-static.es.js.map +1 -0
  555. package/dist/illustrative-icon/components/box-sync-offblack-animated.cjs.js +2 -0
  556. package/dist/illustrative-icon/components/box-sync-offblack-animated.cjs.js.map +1 -0
  557. package/dist/illustrative-icon/components/box-sync-offblack-animated.d.ts +7 -0
  558. package/dist/illustrative-icon/components/box-sync-offblack-animated.d.ts.map +1 -0
  559. package/dist/illustrative-icon/components/box-sync-offblack-animated.es.js +20 -0
  560. package/dist/illustrative-icon/components/box-sync-offblack-animated.es.js.map +1 -0
  561. package/dist/illustrative-icon/components/box-sync-offblack-static.cjs.js +2 -0
  562. package/dist/illustrative-icon/components/box-sync-offblack-static.cjs.js.map +1 -0
  563. package/dist/illustrative-icon/components/box-sync-offblack-static.d.ts +7 -0
  564. package/dist/illustrative-icon/components/box-sync-offblack-static.d.ts.map +1 -0
  565. package/dist/illustrative-icon/components/box-sync-offblack-static.es.js +10 -0
  566. package/dist/illustrative-icon/components/box-sync-offblack-static.es.js.map +1 -0
  567. package/dist/illustrative-icon/components/display-protection-duocolor-animated.cjs.js +2 -0
  568. package/dist/illustrative-icon/components/display-protection-duocolor-animated.cjs.js.map +1 -0
  569. package/dist/illustrative-icon/components/display-protection-duocolor-animated.d.ts +7 -0
  570. package/dist/illustrative-icon/components/display-protection-duocolor-animated.d.ts.map +1 -0
  571. package/dist/illustrative-icon/components/display-protection-duocolor-animated.es.js +20 -0
  572. package/dist/illustrative-icon/components/display-protection-duocolor-animated.es.js.map +1 -0
  573. package/dist/illustrative-icon/components/display-protection-duocolor-static.cjs.js +2 -0
  574. package/dist/illustrative-icon/components/display-protection-duocolor-static.cjs.js.map +1 -0
  575. package/dist/illustrative-icon/components/display-protection-duocolor-static.d.ts +7 -0
  576. package/dist/illustrative-icon/components/display-protection-duocolor-static.d.ts.map +1 -0
  577. package/dist/illustrative-icon/components/display-protection-duocolor-static.es.js +10 -0
  578. package/dist/illustrative-icon/components/display-protection-duocolor-static.es.js.map +1 -0
  579. package/dist/illustrative-icon/components/display-protection-offblack-animated.cjs.js +2 -0
  580. package/dist/illustrative-icon/components/display-protection-offblack-animated.cjs.js.map +1 -0
  581. package/dist/illustrative-icon/components/display-protection-offblack-animated.d.ts +7 -0
  582. package/dist/illustrative-icon/components/display-protection-offblack-animated.d.ts.map +1 -0
  583. package/dist/illustrative-icon/components/display-protection-offblack-animated.es.js +20 -0
  584. package/dist/illustrative-icon/components/display-protection-offblack-animated.es.js.map +1 -0
  585. package/dist/illustrative-icon/components/display-protection-offblack-static.cjs.js +2 -0
  586. package/dist/illustrative-icon/components/display-protection-offblack-static.cjs.js.map +1 -0
  587. package/dist/illustrative-icon/components/display-protection-offblack-static.d.ts +7 -0
  588. package/dist/illustrative-icon/components/display-protection-offblack-static.d.ts.map +1 -0
  589. package/dist/illustrative-icon/components/display-protection-offblack-static.es.js +10 -0
  590. package/dist/illustrative-icon/components/display-protection-offblack-static.es.js.map +1 -0
  591. package/dist/illustrative-icon/components/enrollment-duocolor-animated.cjs.js +2 -0
  592. package/dist/illustrative-icon/components/enrollment-duocolor-animated.cjs.js.map +1 -0
  593. package/dist/illustrative-icon/components/enrollment-duocolor-animated.d.ts +7 -0
  594. package/dist/illustrative-icon/components/enrollment-duocolor-animated.d.ts.map +1 -0
  595. package/dist/illustrative-icon/components/enrollment-duocolor-animated.es.js +20 -0
  596. package/dist/illustrative-icon/components/enrollment-duocolor-animated.es.js.map +1 -0
  597. package/dist/illustrative-icon/components/enrollment-duocolor-static.cjs.js +2 -0
  598. package/dist/illustrative-icon/components/enrollment-duocolor-static.cjs.js.map +1 -0
  599. package/dist/illustrative-icon/components/enrollment-duocolor-static.d.ts +7 -0
  600. package/dist/illustrative-icon/components/enrollment-duocolor-static.d.ts.map +1 -0
  601. package/dist/illustrative-icon/components/enrollment-duocolor-static.es.js +10 -0
  602. package/dist/illustrative-icon/components/enrollment-duocolor-static.es.js.map +1 -0
  603. package/dist/illustrative-icon/components/enrollment-offblack-animated.cjs.js +2 -0
  604. package/dist/illustrative-icon/components/enrollment-offblack-animated.cjs.js.map +1 -0
  605. package/dist/illustrative-icon/components/enrollment-offblack-animated.d.ts +7 -0
  606. package/dist/illustrative-icon/components/enrollment-offblack-animated.d.ts.map +1 -0
  607. package/dist/illustrative-icon/components/enrollment-offblack-animated.es.js +20 -0
  608. package/dist/illustrative-icon/components/enrollment-offblack-animated.es.js.map +1 -0
  609. package/dist/illustrative-icon/components/enrollment-offblack-static.cjs.js +2 -0
  610. package/dist/illustrative-icon/components/enrollment-offblack-static.cjs.js.map +1 -0
  611. package/dist/illustrative-icon/components/enrollment-offblack-static.d.ts +7 -0
  612. package/dist/illustrative-icon/components/enrollment-offblack-static.d.ts.map +1 -0
  613. package/dist/illustrative-icon/components/enrollment-offblack-static.es.js +10 -0
  614. package/dist/illustrative-icon/components/enrollment-offblack-static.es.js.map +1 -0
  615. package/dist/illustrative-icon/components/gift-box-duocolor-animated.cjs.js +2 -0
  616. package/dist/illustrative-icon/components/gift-box-duocolor-animated.cjs.js.map +1 -0
  617. package/dist/illustrative-icon/components/gift-box-duocolor-animated.d.ts +7 -0
  618. package/dist/illustrative-icon/components/gift-box-duocolor-animated.d.ts.map +1 -0
  619. package/dist/illustrative-icon/components/gift-box-duocolor-animated.es.js +20 -0
  620. package/dist/illustrative-icon/components/gift-box-duocolor-animated.es.js.map +1 -0
  621. package/dist/illustrative-icon/components/gift-box-duocolor-static.cjs.js +2 -0
  622. package/dist/illustrative-icon/components/gift-box-duocolor-static.cjs.js.map +1 -0
  623. package/dist/illustrative-icon/components/gift-box-duocolor-static.d.ts +7 -0
  624. package/dist/illustrative-icon/components/gift-box-duocolor-static.d.ts.map +1 -0
  625. package/dist/illustrative-icon/components/gift-box-duocolor-static.es.js +10 -0
  626. package/dist/illustrative-icon/components/gift-box-duocolor-static.es.js.map +1 -0
  627. package/dist/illustrative-icon/components/gift-box-offblack-animated.cjs.js +2 -0
  628. package/dist/illustrative-icon/components/gift-box-offblack-animated.cjs.js.map +1 -0
  629. package/dist/illustrative-icon/components/gift-box-offblack-animated.d.ts +7 -0
  630. package/dist/illustrative-icon/components/gift-box-offblack-animated.d.ts.map +1 -0
  631. package/dist/illustrative-icon/components/gift-box-offblack-animated.es.js +20 -0
  632. package/dist/illustrative-icon/components/gift-box-offblack-animated.es.js.map +1 -0
  633. package/dist/illustrative-icon/components/gift-box-offblack-static.cjs.js +2 -0
  634. package/dist/illustrative-icon/components/gift-box-offblack-static.cjs.js.map +1 -0
  635. package/dist/illustrative-icon/components/gift-box-offblack-static.d.ts +7 -0
  636. package/dist/illustrative-icon/components/gift-box-offblack-static.d.ts.map +1 -0
  637. package/dist/illustrative-icon/components/gift-box-offblack-static.es.js +10 -0
  638. package/dist/illustrative-icon/components/gift-box-offblack-static.es.js.map +1 -0
  639. package/dist/illustrative-icon/components/gift-box-plus-duocolor-animated.cjs.js +2 -0
  640. package/dist/illustrative-icon/components/gift-box-plus-duocolor-animated.cjs.js.map +1 -0
  641. package/dist/illustrative-icon/components/gift-box-plus-duocolor-animated.d.ts +7 -0
  642. package/dist/illustrative-icon/components/gift-box-plus-duocolor-animated.d.ts.map +1 -0
  643. package/dist/illustrative-icon/components/gift-box-plus-duocolor-animated.es.js +20 -0
  644. package/dist/illustrative-icon/components/gift-box-plus-duocolor-animated.es.js.map +1 -0
  645. package/dist/illustrative-icon/components/gift-box-plus-duocolor-static.cjs.js +2 -0
  646. package/dist/illustrative-icon/components/gift-box-plus-duocolor-static.cjs.js.map +1 -0
  647. package/dist/illustrative-icon/components/gift-box-plus-duocolor-static.d.ts +7 -0
  648. package/dist/illustrative-icon/components/gift-box-plus-duocolor-static.d.ts.map +1 -0
  649. package/dist/illustrative-icon/components/gift-box-plus-duocolor-static.es.js +10 -0
  650. package/dist/illustrative-icon/components/gift-box-plus-duocolor-static.es.js.map +1 -0
  651. package/dist/illustrative-icon/components/gift-box-plus-offblack-animated.cjs.js +2 -0
  652. package/dist/illustrative-icon/components/gift-box-plus-offblack-animated.cjs.js.map +1 -0
  653. package/dist/illustrative-icon/components/gift-box-plus-offblack-animated.d.ts +7 -0
  654. package/dist/illustrative-icon/components/gift-box-plus-offblack-animated.d.ts.map +1 -0
  655. package/dist/illustrative-icon/components/gift-box-plus-offblack-animated.es.js +20 -0
  656. package/dist/illustrative-icon/components/gift-box-plus-offblack-animated.es.js.map +1 -0
  657. package/dist/illustrative-icon/components/gift-box-plus-offblack-static.cjs.js +2 -0
  658. package/dist/illustrative-icon/components/gift-box-plus-offblack-static.cjs.js.map +1 -0
  659. package/dist/illustrative-icon/components/gift-box-plus-offblack-static.d.ts +7 -0
  660. package/dist/illustrative-icon/components/gift-box-plus-offblack-static.d.ts.map +1 -0
  661. package/dist/illustrative-icon/components/gift-box-plus-offblack-static.es.js +10 -0
  662. package/dist/illustrative-icon/components/gift-box-plus-offblack-static.es.js.map +1 -0
  663. package/dist/illustrative-icon/components/info-letter-duocolor-animated.cjs.js +2 -0
  664. package/dist/illustrative-icon/components/info-letter-duocolor-animated.cjs.js.map +1 -0
  665. package/dist/illustrative-icon/components/info-letter-duocolor-animated.d.ts +7 -0
  666. package/dist/illustrative-icon/components/info-letter-duocolor-animated.d.ts.map +1 -0
  667. package/dist/illustrative-icon/components/info-letter-duocolor-animated.es.js +20 -0
  668. package/dist/illustrative-icon/components/info-letter-duocolor-animated.es.js.map +1 -0
  669. package/dist/illustrative-icon/components/info-letter-duocolor-static.cjs.js +2 -0
  670. package/dist/illustrative-icon/components/info-letter-duocolor-static.cjs.js.map +1 -0
  671. package/dist/illustrative-icon/components/info-letter-duocolor-static.d.ts +7 -0
  672. package/dist/illustrative-icon/components/info-letter-duocolor-static.d.ts.map +1 -0
  673. package/dist/illustrative-icon/components/info-letter-duocolor-static.es.js +10 -0
  674. package/dist/illustrative-icon/components/info-letter-duocolor-static.es.js.map +1 -0
  675. package/dist/illustrative-icon/components/info-letter-offblack-animated.cjs.js +2 -0
  676. package/dist/illustrative-icon/components/info-letter-offblack-animated.cjs.js.map +1 -0
  677. package/dist/illustrative-icon/components/info-letter-offblack-animated.d.ts +7 -0
  678. package/dist/illustrative-icon/components/info-letter-offblack-animated.d.ts.map +1 -0
  679. package/dist/illustrative-icon/components/info-letter-offblack-animated.es.js +20 -0
  680. package/dist/illustrative-icon/components/info-letter-offblack-animated.es.js.map +1 -0
  681. package/dist/illustrative-icon/components/info-letter-offblack-static.cjs.js +2 -0
  682. package/dist/illustrative-icon/components/info-letter-offblack-static.cjs.js.map +1 -0
  683. package/dist/illustrative-icon/components/info-letter-offblack-static.d.ts +7 -0
  684. package/dist/illustrative-icon/components/info-letter-offblack-static.d.ts.map +1 -0
  685. package/dist/illustrative-icon/components/info-letter-offblack-static.es.js +10 -0
  686. package/dist/illustrative-icon/components/info-letter-offblack-static.es.js.map +1 -0
  687. package/dist/illustrative-icon/components/leaf-duocolor-animated.cjs.js +2 -0
  688. package/dist/illustrative-icon/components/leaf-duocolor-animated.cjs.js.map +1 -0
  689. package/dist/illustrative-icon/components/leaf-duocolor-animated.d.ts +7 -0
  690. package/dist/illustrative-icon/components/leaf-duocolor-animated.d.ts.map +1 -0
  691. package/dist/illustrative-icon/components/leaf-duocolor-animated.es.js +20 -0
  692. package/dist/illustrative-icon/components/leaf-duocolor-animated.es.js.map +1 -0
  693. package/dist/illustrative-icon/components/leaf-duocolor-static.cjs.js +2 -0
  694. package/dist/illustrative-icon/components/leaf-duocolor-static.cjs.js.map +1 -0
  695. package/dist/illustrative-icon/components/leaf-duocolor-static.d.ts +7 -0
  696. package/dist/illustrative-icon/components/leaf-duocolor-static.d.ts.map +1 -0
  697. package/dist/illustrative-icon/components/leaf-duocolor-static.es.js +10 -0
  698. package/dist/illustrative-icon/components/leaf-duocolor-static.es.js.map +1 -0
  699. package/dist/illustrative-icon/components/leaf-offblack-animated.cjs.js +2 -0
  700. package/dist/illustrative-icon/components/leaf-offblack-animated.cjs.js.map +1 -0
  701. package/dist/illustrative-icon/components/leaf-offblack-animated.d.ts +7 -0
  702. package/dist/illustrative-icon/components/leaf-offblack-animated.d.ts.map +1 -0
  703. package/dist/illustrative-icon/components/leaf-offblack-animated.es.js +20 -0
  704. package/dist/illustrative-icon/components/leaf-offblack-animated.es.js.map +1 -0
  705. package/dist/illustrative-icon/components/leaf-offblack-static.cjs.js +2 -0
  706. package/dist/illustrative-icon/components/leaf-offblack-static.cjs.js.map +1 -0
  707. package/dist/illustrative-icon/components/leaf-offblack-static.d.ts +7 -0
  708. package/dist/illustrative-icon/components/leaf-offblack-static.d.ts.map +1 -0
  709. package/dist/illustrative-icon/components/leaf-offblack-static.es.js +10 -0
  710. package/dist/illustrative-icon/components/leaf-offblack-static.es.js.map +1 -0
  711. package/dist/illustrative-icon/components/number-tranfer-duocolor-static.cjs.js +2 -0
  712. package/dist/illustrative-icon/components/number-tranfer-duocolor-static.cjs.js.map +1 -0
  713. package/dist/illustrative-icon/components/number-tranfer-duocolor-static.d.ts +7 -0
  714. package/dist/illustrative-icon/components/number-tranfer-duocolor-static.d.ts.map +1 -0
  715. package/dist/illustrative-icon/components/number-tranfer-duocolor-static.es.js +10 -0
  716. package/dist/illustrative-icon/components/number-tranfer-duocolor-static.es.js.map +1 -0
  717. package/dist/illustrative-icon/components/number-tranfer-offblack-static.cjs.js +2 -0
  718. package/dist/illustrative-icon/components/number-tranfer-offblack-static.cjs.js.map +1 -0
  719. package/dist/illustrative-icon/components/number-tranfer-offblack-static.d.ts +7 -0
  720. package/dist/illustrative-icon/components/number-tranfer-offblack-static.d.ts.map +1 -0
  721. package/dist/illustrative-icon/components/number-tranfer-offblack-static.es.js +10 -0
  722. package/dist/illustrative-icon/components/number-tranfer-offblack-static.es.js.map +1 -0
  723. package/dist/illustrative-icon/components/number-transfer-duocolor-animated.cjs.js +2 -0
  724. package/dist/illustrative-icon/components/number-transfer-duocolor-animated.cjs.js.map +1 -0
  725. package/dist/illustrative-icon/components/number-transfer-duocolor-animated.d.ts +7 -0
  726. package/dist/illustrative-icon/components/number-transfer-duocolor-animated.d.ts.map +1 -0
  727. package/dist/illustrative-icon/components/number-transfer-duocolor-animated.es.js +20 -0
  728. package/dist/illustrative-icon/components/number-transfer-duocolor-animated.es.js.map +1 -0
  729. package/dist/illustrative-icon/components/number-transfer-offblack-animated.cjs.js +2 -0
  730. package/dist/illustrative-icon/components/number-transfer-offblack-animated.cjs.js.map +1 -0
  731. package/dist/illustrative-icon/components/number-transfer-offblack-animated.d.ts +7 -0
  732. package/dist/illustrative-icon/components/number-transfer-offblack-animated.d.ts.map +1 -0
  733. package/dist/illustrative-icon/components/number-transfer-offblack-animated.es.js +20 -0
  734. package/dist/illustrative-icon/components/number-transfer-offblack-animated.es.js.map +1 -0
  735. package/dist/illustrative-icon/components/page-duocolor-static.cjs.js +2 -0
  736. package/dist/illustrative-icon/components/page-duocolor-static.cjs.js.map +1 -0
  737. package/dist/illustrative-icon/components/page-duocolor-static.d.ts +7 -0
  738. package/dist/illustrative-icon/components/page-duocolor-static.d.ts.map +1 -0
  739. package/dist/illustrative-icon/components/page-duocolor-static.es.js +10 -0
  740. package/dist/illustrative-icon/components/page-duocolor-static.es.js.map +1 -0
  741. package/dist/illustrative-icon/components/page-offblack-static.cjs.js +2 -0
  742. package/dist/illustrative-icon/components/page-offblack-static.cjs.js.map +1 -0
  743. package/dist/illustrative-icon/components/page-offblack-static.d.ts +7 -0
  744. package/dist/illustrative-icon/components/page-offblack-static.d.ts.map +1 -0
  745. package/dist/illustrative-icon/components/page-offblack-static.es.js +10 -0
  746. package/dist/illustrative-icon/components/page-offblack-static.es.js.map +1 -0
  747. package/dist/illustrative-icon/components/phone-repair-duocolor-animated.cjs.js +2 -0
  748. package/dist/illustrative-icon/components/phone-repair-duocolor-animated.cjs.js.map +1 -0
  749. package/dist/illustrative-icon/components/phone-repair-duocolor-animated.d.ts +7 -0
  750. package/dist/illustrative-icon/components/phone-repair-duocolor-animated.d.ts.map +1 -0
  751. package/dist/illustrative-icon/components/phone-repair-duocolor-animated.es.js +20 -0
  752. package/dist/illustrative-icon/components/phone-repair-duocolor-animated.es.js.map +1 -0
  753. package/dist/illustrative-icon/components/phone-repair-duocolor-static.cjs.js +2 -0
  754. package/dist/illustrative-icon/components/phone-repair-duocolor-static.cjs.js.map +1 -0
  755. package/dist/illustrative-icon/components/phone-repair-duocolor-static.d.ts +7 -0
  756. package/dist/illustrative-icon/components/phone-repair-duocolor-static.d.ts.map +1 -0
  757. package/dist/illustrative-icon/components/phone-repair-duocolor-static.es.js +10 -0
  758. package/dist/illustrative-icon/components/phone-repair-duocolor-static.es.js.map +1 -0
  759. package/dist/illustrative-icon/components/phone-repair-offblack-animated.cjs.js +2 -0
  760. package/dist/illustrative-icon/components/phone-repair-offblack-animated.cjs.js.map +1 -0
  761. package/dist/illustrative-icon/components/phone-repair-offblack-animated.d.ts +7 -0
  762. package/dist/illustrative-icon/components/phone-repair-offblack-animated.d.ts.map +1 -0
  763. package/dist/illustrative-icon/components/phone-repair-offblack-animated.es.js +20 -0
  764. package/dist/illustrative-icon/components/phone-repair-offblack-animated.es.js.map +1 -0
  765. package/dist/illustrative-icon/components/phone-repair-offblack-static.cjs.js +2 -0
  766. package/dist/illustrative-icon/components/phone-repair-offblack-static.cjs.js.map +1 -0
  767. package/dist/illustrative-icon/components/phone-repair-offblack-static.d.ts +7 -0
  768. package/dist/illustrative-icon/components/phone-repair-offblack-static.d.ts.map +1 -0
  769. package/dist/illustrative-icon/components/phone-repair-offblack-static.es.js +10 -0
  770. package/dist/illustrative-icon/components/phone-repair-offblack-static.es.js.map +1 -0
  771. package/dist/illustrative-icon/components/phone-settings-duocolor-animated.cjs.js +2 -0
  772. package/dist/illustrative-icon/components/phone-settings-duocolor-animated.cjs.js.map +1 -0
  773. package/dist/illustrative-icon/components/phone-settings-duocolor-animated.d.ts +7 -0
  774. package/dist/illustrative-icon/components/phone-settings-duocolor-animated.d.ts.map +1 -0
  775. package/dist/illustrative-icon/components/phone-settings-duocolor-animated.es.js +20 -0
  776. package/dist/illustrative-icon/components/phone-settings-duocolor-animated.es.js.map +1 -0
  777. package/dist/illustrative-icon/components/phone-settings-duocolor-static.cjs.js +2 -0
  778. package/dist/illustrative-icon/components/phone-settings-duocolor-static.cjs.js.map +1 -0
  779. package/dist/illustrative-icon/components/phone-settings-duocolor-static.d.ts +7 -0
  780. package/dist/illustrative-icon/components/phone-settings-duocolor-static.d.ts.map +1 -0
  781. package/dist/illustrative-icon/components/phone-settings-duocolor-static.es.js +10 -0
  782. package/dist/illustrative-icon/components/phone-settings-duocolor-static.es.js.map +1 -0
  783. package/dist/illustrative-icon/components/phone-settings-offblack-animated.cjs.js +2 -0
  784. package/dist/illustrative-icon/components/phone-settings-offblack-animated.cjs.js.map +1 -0
  785. package/dist/illustrative-icon/components/phone-settings-offblack-animated.d.ts +7 -0
  786. package/dist/illustrative-icon/components/phone-settings-offblack-animated.d.ts.map +1 -0
  787. package/dist/illustrative-icon/components/phone-settings-offblack-animated.es.js +20 -0
  788. package/dist/illustrative-icon/components/phone-settings-offblack-animated.es.js.map +1 -0
  789. package/dist/illustrative-icon/components/phone-settings-offblack-static.cjs.js +2 -0
  790. package/dist/illustrative-icon/components/phone-settings-offblack-static.cjs.js.map +1 -0
  791. package/dist/illustrative-icon/components/phone-settings-offblack-static.d.ts +7 -0
  792. package/dist/illustrative-icon/components/phone-settings-offblack-static.d.ts.map +1 -0
  793. package/dist/illustrative-icon/components/phone-settings-offblack-static.es.js +10 -0
  794. package/dist/illustrative-icon/components/phone-settings-offblack-static.es.js.map +1 -0
  795. package/dist/illustrative-icon/components/return-label-duocolor-animated.cjs.js +2 -0
  796. package/dist/illustrative-icon/components/return-label-duocolor-animated.cjs.js.map +1 -0
  797. package/dist/illustrative-icon/components/return-label-duocolor-animated.d.ts +7 -0
  798. package/dist/illustrative-icon/components/return-label-duocolor-animated.d.ts.map +1 -0
  799. package/dist/illustrative-icon/components/return-label-duocolor-animated.es.js +20 -0
  800. package/dist/illustrative-icon/components/return-label-duocolor-animated.es.js.map +1 -0
  801. package/dist/illustrative-icon/components/return-label-duocolor-static.cjs.js +2 -0
  802. package/dist/illustrative-icon/components/return-label-duocolor-static.cjs.js.map +1 -0
  803. package/dist/illustrative-icon/components/return-label-duocolor-static.d.ts +7 -0
  804. package/dist/illustrative-icon/components/return-label-duocolor-static.d.ts.map +1 -0
  805. package/dist/illustrative-icon/components/return-label-duocolor-static.es.js +10 -0
  806. package/dist/illustrative-icon/components/return-label-duocolor-static.es.js.map +1 -0
  807. package/dist/illustrative-icon/components/return-label-offblack-animated.cjs.js +2 -0
  808. package/dist/illustrative-icon/components/return-label-offblack-animated.cjs.js.map +1 -0
  809. package/dist/illustrative-icon/components/return-label-offblack-animated.d.ts +7 -0
  810. package/dist/illustrative-icon/components/return-label-offblack-animated.d.ts.map +1 -0
  811. package/dist/illustrative-icon/components/return-label-offblack-animated.es.js +20 -0
  812. package/dist/illustrative-icon/components/return-label-offblack-animated.es.js.map +1 -0
  813. package/dist/illustrative-icon/components/return-label-offblack-static.cjs.js +2 -0
  814. package/dist/illustrative-icon/components/return-label-offblack-static.cjs.js.map +1 -0
  815. package/dist/illustrative-icon/components/return-label-offblack-static.d.ts +7 -0
  816. package/dist/illustrative-icon/components/return-label-offblack-static.d.ts.map +1 -0
  817. package/dist/illustrative-icon/components/return-label-offblack-static.es.js +10 -0
  818. package/dist/illustrative-icon/components/return-label-offblack-static.es.js.map +1 -0
  819. package/dist/illustrative-icon/components/settings-pen-duocolor-animated.cjs.js +2 -0
  820. package/dist/illustrative-icon/components/settings-pen-duocolor-animated.cjs.js.map +1 -0
  821. package/dist/illustrative-icon/components/settings-pen-duocolor-animated.d.ts +7 -0
  822. package/dist/illustrative-icon/components/settings-pen-duocolor-animated.d.ts.map +1 -0
  823. package/dist/illustrative-icon/components/settings-pen-duocolor-animated.es.js +20 -0
  824. package/dist/illustrative-icon/components/settings-pen-duocolor-animated.es.js.map +1 -0
  825. package/dist/illustrative-icon/components/settings-pen-duocolor-static.cjs.js +2 -0
  826. package/dist/illustrative-icon/components/settings-pen-duocolor-static.cjs.js.map +1 -0
  827. package/dist/illustrative-icon/components/settings-pen-duocolor-static.d.ts +7 -0
  828. package/dist/illustrative-icon/components/settings-pen-duocolor-static.d.ts.map +1 -0
  829. package/dist/illustrative-icon/components/settings-pen-duocolor-static.es.js +10 -0
  830. package/dist/illustrative-icon/components/settings-pen-duocolor-static.es.js.map +1 -0
  831. package/dist/illustrative-icon/components/settings-pen-offblack-animated.cjs.js +2 -0
  832. package/dist/illustrative-icon/components/settings-pen-offblack-animated.cjs.js.map +1 -0
  833. package/dist/illustrative-icon/components/settings-pen-offblack-animated.d.ts +7 -0
  834. package/dist/illustrative-icon/components/settings-pen-offblack-animated.d.ts.map +1 -0
  835. package/dist/illustrative-icon/components/settings-pen-offblack-animated.es.js +20 -0
  836. package/dist/illustrative-icon/components/settings-pen-offblack-animated.es.js.map +1 -0
  837. package/dist/illustrative-icon/components/settings-pen-offblack-static.cjs.js +2 -0
  838. package/dist/illustrative-icon/components/settings-pen-offblack-static.cjs.js.map +1 -0
  839. package/dist/illustrative-icon/components/settings-pen-offblack-static.d.ts +7 -0
  840. package/dist/illustrative-icon/components/settings-pen-offblack-static.d.ts.map +1 -0
  841. package/dist/illustrative-icon/components/settings-pen-offblack-static.es.js +10 -0
  842. package/dist/illustrative-icon/components/settings-pen-offblack-static.es.js.map +1 -0
  843. package/dist/illustrative-icon/components/shield-time-duocolor-animated.cjs.js +2 -0
  844. package/dist/illustrative-icon/components/shield-time-duocolor-animated.cjs.js.map +1 -0
  845. package/dist/illustrative-icon/components/shield-time-duocolor-animated.d.ts +7 -0
  846. package/dist/illustrative-icon/components/shield-time-duocolor-animated.d.ts.map +1 -0
  847. package/dist/illustrative-icon/components/shield-time-duocolor-animated.es.js +20 -0
  848. package/dist/illustrative-icon/components/shield-time-duocolor-animated.es.js.map +1 -0
  849. package/dist/illustrative-icon/components/shield-time-duocolor-static.cjs.js +2 -0
  850. package/dist/illustrative-icon/components/shield-time-duocolor-static.cjs.js.map +1 -0
  851. package/dist/illustrative-icon/components/shield-time-duocolor-static.d.ts +7 -0
  852. package/dist/illustrative-icon/components/shield-time-duocolor-static.d.ts.map +1 -0
  853. package/dist/illustrative-icon/components/shield-time-duocolor-static.es.js +10 -0
  854. package/dist/illustrative-icon/components/shield-time-duocolor-static.es.js.map +1 -0
  855. package/dist/illustrative-icon/components/shield-time-offblack-animated.cjs.js +2 -0
  856. package/dist/illustrative-icon/components/shield-time-offblack-animated.cjs.js.map +1 -0
  857. package/dist/illustrative-icon/components/shield-time-offblack-animated.d.ts +7 -0
  858. package/dist/illustrative-icon/components/shield-time-offblack-animated.d.ts.map +1 -0
  859. package/dist/illustrative-icon/components/shield-time-offblack-animated.es.js +20 -0
  860. package/dist/illustrative-icon/components/shield-time-offblack-animated.es.js.map +1 -0
  861. package/dist/illustrative-icon/components/shield-time-offblack-static.cjs.js +2 -0
  862. package/dist/illustrative-icon/components/shield-time-offblack-static.cjs.js.map +1 -0
  863. package/dist/illustrative-icon/components/shield-time-offblack-static.d.ts +7 -0
  864. package/dist/illustrative-icon/components/shield-time-offblack-static.d.ts.map +1 -0
  865. package/dist/illustrative-icon/components/shield-time-offblack-static.es.js +10 -0
  866. package/dist/illustrative-icon/components/shield-time-offblack-static.es.js.map +1 -0
  867. package/dist/illustrative-icon/components/user-duocolor-animated.cjs.js +2 -0
  868. package/dist/illustrative-icon/components/user-duocolor-animated.cjs.js.map +1 -0
  869. package/dist/illustrative-icon/components/user-duocolor-animated.d.ts +7 -0
  870. package/dist/illustrative-icon/components/user-duocolor-animated.d.ts.map +1 -0
  871. package/dist/illustrative-icon/components/user-duocolor-animated.es.js +20 -0
  872. package/dist/illustrative-icon/components/user-duocolor-animated.es.js.map +1 -0
  873. package/dist/illustrative-icon/components/user-duocolor-static.cjs.js +2 -0
  874. package/dist/illustrative-icon/components/user-duocolor-static.cjs.js.map +1 -0
  875. package/dist/illustrative-icon/components/user-duocolor-static.d.ts +7 -0
  876. package/dist/illustrative-icon/components/user-duocolor-static.d.ts.map +1 -0
  877. package/dist/illustrative-icon/components/user-duocolor-static.es.js +10 -0
  878. package/dist/illustrative-icon/components/user-duocolor-static.es.js.map +1 -0
  879. package/dist/illustrative-icon/components/user-offblack-animated.cjs.js +2 -0
  880. package/dist/illustrative-icon/components/user-offblack-animated.cjs.js.map +1 -0
  881. package/dist/illustrative-icon/components/user-offblack-animated.d.ts +7 -0
  882. package/dist/illustrative-icon/components/user-offblack-animated.d.ts.map +1 -0
  883. package/dist/illustrative-icon/components/user-offblack-animated.es.js +20 -0
  884. package/dist/illustrative-icon/components/user-offblack-animated.es.js.map +1 -0
  885. package/dist/illustrative-icon/components/user-offblack-static.cjs.js +2 -0
  886. package/dist/illustrative-icon/components/user-offblack-static.cjs.js.map +1 -0
  887. package/dist/illustrative-icon/components/user-offblack-static.d.ts +7 -0
  888. package/dist/illustrative-icon/components/user-offblack-static.d.ts.map +1 -0
  889. package/dist/illustrative-icon/components/user-offblack-static.es.js +10 -0
  890. package/dist/illustrative-icon/components/user-offblack-static.es.js.map +1 -0
  891. package/dist/illustrative-icon/components-metadata.js +280 -0
  892. package/dist/libraries/action/src/action.d.ts +2 -1
  893. package/dist/libraries/action/src/action.d.ts.map +1 -1
  894. package/dist/library.cjs.js +1 -1
  895. package/dist/library.es.js +12 -12
  896. package/dist/{pagination-BDfaybj3.js → pagination-C1rYXq9I.js} +2 -2
  897. package/dist/{pagination-BDfaybj3.js.map → pagination-C1rYXq9I.js.map} +1 -1
  898. package/dist/{pagination-Bm38GKga.mjs → pagination-CS1AMyBl.mjs} +2 -2
  899. package/dist/{pagination-Bm38GKga.mjs.map → pagination-CS1AMyBl.mjs.map} +1 -1
  900. package/dist/pagination.cjs.js +1 -1
  901. package/dist/pagination.es.js +1 -1
  902. package/dist/purpur.css +1 -1
  903. package/dist/{quantity-selector-B4YnfmNb.mjs → quantity-selector-COtqc-Iy.mjs} +2 -2
  904. package/dist/{quantity-selector-B4YnfmNb.mjs.map → quantity-selector-COtqc-Iy.mjs.map} +1 -1
  905. package/dist/{quantity-selector-CTBoxiPO.js → quantity-selector-CwxuBsVC.js} +2 -2
  906. package/dist/{quantity-selector-CTBoxiPO.js.map → quantity-selector-CwxuBsVC.js.map} +1 -1
  907. package/dist/quantity-selector.cjs.js +1 -1
  908. package/dist/quantity-selector.es.js +1 -1
  909. package/dist/{search-field-BPLzy3RR.mjs → search-field-BMC3WG2H.mjs} +2 -2
  910. package/dist/{search-field-BPLzy3RR.mjs.map → search-field-BMC3WG2H.mjs.map} +1 -1
  911. package/dist/{search-field-Dx4qCcrh.js → search-field-b1_QCs3U.js} +2 -2
  912. package/dist/{search-field-Dx4qCcrh.js.map → search-field-b1_QCs3U.js.map} +1 -1
  913. package/dist/search-field.cjs.js +1 -1
  914. package/dist/search-field.es.js +1 -1
  915. package/dist/select-D6R7I5b5.js +2 -0
  916. package/dist/select-D6R7I5b5.js.map +1 -0
  917. package/dist/{select-BEmu_fh9.mjs → select-XNPtpZhh.mjs} +59 -63
  918. package/dist/select-XNPtpZhh.mjs.map +1 -0
  919. package/dist/select.cjs.js +1 -1
  920. package/dist/select.es.js +1 -1
  921. package/dist/table-CR2Wj-O9.js +9 -0
  922. package/dist/{table-rS3hITtj.js.map → table-CR2Wj-O9.js.map} +1 -1
  923. package/dist/{table-D9MKkbPO.mjs → table-jvrz_ulj.mjs} +2315 -2337
  924. package/dist/{table-D9MKkbPO.mjs.map → table-jvrz_ulj.mjs.map} +1 -1
  925. package/dist/table.cjs.js +1 -1
  926. package/dist/table.es.js +1 -1
  927. package/dist/{text-field-D8MMa6ij.mjs → text-field-AsvqJh6P.mjs} +135 -135
  928. package/dist/text-field-AsvqJh6P.mjs.map +1 -0
  929. package/dist/{text-field-C2W13n15.js → text-field-CthxpKsp.js} +2 -2
  930. package/dist/text-field-CthxpKsp.js.map +1 -0
  931. package/dist/text-field.cjs.js +1 -1
  932. package/dist/text-field.es.js +1 -1
  933. package/package.json +25 -25
  934. package/dist/select-BEmu_fh9.mjs.map +0 -1
  935. package/dist/select-DOqTJgTj.js +0 -2
  936. package/dist/select-DOqTJgTj.js.map +0 -1
  937. package/dist/table-rS3hITtj.js +0 -9
  938. package/dist/text-field-C2W13n15.js.map +0 -1
  939. package/dist/text-field-D8MMa6ij.mjs.map +0 -1
@@ -1,7 +1,7 @@
1
1
  import { jsx as a, jsxs as U, Fragment as X } from "react/jsx-runtime";
2
2
  import { forwardRef as Z, useState as C, useEffect as V } from "react";
3
3
  import { a as J } from "./spinner-DRQN6YdK.mjs";
4
- import { T as K } from "./text-field-D8MMa6ij.mjs";
4
+ import { T as K } from "./text-field-AsvqJh6P.mjs";
5
5
  import { c as B } from "./bind-CU-R61T-.mjs";
6
6
  import { b as L } from "./button-4-yWOgtD.mjs";
7
7
  import { e as Y } from "./minus.es-BK9qA9iJ.mjs";
@@ -169,4 +169,4 @@ export {
169
169
  dt as a,
170
170
  _t as q
171
171
  };
172
- //# sourceMappingURL=quantity-selector-B4YnfmNb.mjs.map
172
+ //# sourceMappingURL=quantity-selector-COtqc-Iy.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"quantity-selector-B4YnfmNb.mjs","sources":["../../../components/icon/dist/components/plus.es.js","../../../components/quantity-selector/src/quantity-selector-button.tsx","../../../components/quantity-selector/src/quantity-selector.tsx"],"sourcesContent":["import { jsx as s } from \"react/jsx-runtime\";\nimport { I as l } from \"../icon-DNHpBTHs.mjs\";\nconst e = {\n name: \"plus\",\n svg: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path fill-rule=\"evenodd\" d=\"M12 4.1a.9.9 0 0 1 .9.9v6.1H19a.9.9 0 1 1 0 1.8h-6.1V19a.9.9 0 0 1-1.8 0v-6.1H5a.9.9 0 0 1 0-1.8h6.1V5a.9.9 0 0 1 .9-.9Z\" clip-rule=\"evenodd\"/></svg>',\n keywords: [\"plus\"],\n category: \"utility\"\n}, r = (o) => /* @__PURE__ */ s(l, { ...o, svg: e });\nr.displayName = \"IconPlus\";\nexport {\n r as IconPlus\n};\n//# sourceMappingURL=plus.es.js.map\n","import React from \"react\";\nimport { Button } from \"@purpur/button\";\nimport { IconMinus } from \"@purpur/icon/minus\";\nimport { IconPlus } from \"@purpur/icon/plus\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./quantity-selector-button.module.scss\";\n\ntype variant = \"primary\" | \"secondary\";\ntype buttonType = \"increment\" | \"decrement\";\n\ntype QuantitySelectorButtonProps = {\n [\"data-testid\"]?: string;\n [\"aria-label\"]?: string;\n disabled?: boolean;\n hasGap: boolean;\n variant: variant;\n buttonType: buttonType;\n onClick: (buttonType: buttonType) => void;\n};\n\nconst cx = c.bind(styles);\nconst rootClassName = \"purpur-quantity-selector-button\";\n\nexport const QuantitySelectorButton = ({\n [\"data-testid\"]: dataTestid,\n [\"aria-label\"]: ariaLabel,\n disabled,\n hasGap,\n variant,\n buttonType,\n onClick,\n}: QuantitySelectorButtonProps) => {\n const classes = cx(rootClassName, {\n [`${rootClassName}--gap-left`]: hasGap && buttonType === \"decrement\",\n [`${rootClassName}--gap-right`]: hasGap && buttonType === \"increment\",\n [`${rootClassName}--no-gap-left`]: !hasGap && buttonType === \"decrement\",\n [`${rootClassName}--no-gap-right`]: !hasGap && buttonType === \"increment\",\n });\n\n return (\n <Button\n data-testid={dataTestid}\n className={classes}\n size=\"sm\"\n type=\"submit\"\n variant={variant}\n onClick={() => onClick(buttonType)}\n iconOnly={true}\n aria-label={ariaLabel ?? \"\"}\n disabled={disabled}\n tabIndex={-1}\n >\n {buttonType === \"increment\" ? <IconPlus size=\"xs\" /> : <IconMinus size=\"xs\" />}\n </Button>\n );\n};\n","import React, { type ChangeEvent, forwardRef, useEffect, useState } from \"react\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport { Spinner } from \"@purpur/spinner\";\nimport { TextField } from \"@purpur/text-field\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./quantity-selector.module.scss\";\nimport { QuantitySelectorButton } from \"./quantity-selector-button\";\n\nconst cx = c.bind(styles);\n\nexport const quantitySelectorVariants = [\"attached\", \"separated\"] as const;\nexport const quantitySelectorButtonVariants = [\"primary\", \"secondary\"] as const;\n\ntype Variant = (typeof quantitySelectorVariants)[number];\ntype ButtonVariant = (typeof quantitySelectorButtonVariants)[number];\n\nexport type QuantitySelectorProps = Omit<BaseProps<\"input\">, \"onChange\" | \"type\"> & {\n variant: Variant;\n buttonVariant: ButtonVariant;\n onChange: (value: number) => void;\n defaultValue?: number;\n ariaLabelIncrement?: string;\n ariaLabelDecrement?: string;\n /**\n * Used when the component is controlled\n */\n value?: number;\n minValue?: number;\n maxValue?: number;\n label?: string;\n errorText?: string;\n fullWidth?: boolean;\n disabled?: boolean;\n loading?: boolean;\n};\n\nconst rootClassName = \"purpur-quantity-selector\";\n\nexport const QuantitySelector = forwardRef<HTMLInputElement, QuantitySelectorProps>(\n (\n {\n [\"data-testid\"]: dataTestId,\n className,\n variant,\n buttonVariant,\n onChange,\n value: controlledValue,\n defaultValue,\n fullWidth,\n disabled,\n loading,\n minValue,\n maxValue,\n ariaLabelDecrement,\n ariaLabelIncrement,\n ...props\n },\n ref\n ) => {\n const [uncontrolledValue, setUncontrolledValue] = useState(defaultValue ?? 0);\n const [debouncedValue, setDebouncedValue] = useState(uncontrolledValue);\n const isControlled = controlledValue !== undefined;\n const value = isControlled ? controlledValue : debouncedValue;\n\n const getTestId = (name: string) => (dataTestId ? `${dataTestId}-${name}` : undefined);\n const isDisabled = disabled || loading;\n const min = Math.max(minValue ?? 0, 0);\n const max = maxValue ?? Number.MAX_SAFE_INTEGER;\n const incrementDisabled = value === max;\n const decrementDisabled = value === min;\n\n useEffect(() => {\n if (isControlled) {\n setUncontrolledValue(controlledValue);\n }\n }, [controlledValue, isControlled]);\n\n useEffect(() => {\n if (!isControlled) {\n const timer = setTimeout(() => {\n setUncontrolledValue(debouncedValue);\n }, 300);\n\n return () => clearTimeout(timer);\n }\n return;\n }, [debouncedValue, isControlled, onChange]);\n\n const classes = cx(className, rootClassName, {\n [`${rootClassName}--no-gap`]:\n variant === \"attached\" && !isDisabled && !decrementDisabled && !incrementDisabled,\n [`${rootClassName}--no-gap-disabled-left`]:\n variant === \"attached\" && !isDisabled && !incrementDisabled && decrementDisabled,\n [`${rootClassName}--no-gap-disabled-right`]:\n variant === \"attached\" && !isDisabled && !decrementDisabled && incrementDisabled,\n [`${rootClassName}--no-gap-disabled`]:\n variant === \"attached\" && (isDisabled || (incrementDisabled && decrementDisabled)),\n [`${rootClassName}--full-width`]: fullWidth,\n [`${rootClassName}--loading`]: loading,\n });\n\n const handleOnChange = (e: ChangeEvent<HTMLInputElement>) => {\n const numericRegex = /^[0-9]*$/;\n if (!numericRegex.test(e.target.value)) {\n return;\n }\n const val = +e.target.value;\n if (val < min || val > max) {\n return;\n }\n\n if (!isControlled) {\n setDebouncedValue(val);\n }\n onChange(val);\n };\n\n const handleOnClick = (adjustmentType: \"increment\" | \"decrement\") => {\n const adjustedValue = adjustmentType === \"increment\" ? value + 1 : value - 1;\n if (adjustedValue < 0) {\n return;\n }\n\n if (!isControlled) {\n setDebouncedValue(adjustedValue);\n }\n onChange(adjustedValue);\n };\n\n const adjustmentButton = (adjustmentType: \"increment\" | \"decrement\") => {\n const buttonDisabled =\n (adjustmentType === \"increment\" && incrementDisabled) ||\n (adjustmentType === \"decrement\" && decrementDisabled);\n\n return (\n <QuantitySelectorButton\n data-testid={getTestId(\"button-\" + adjustmentType)}\n variant={buttonVariant}\n buttonType={adjustmentType}\n hasGap={variant === \"separated\"}\n onClick={handleOnClick}\n disabled={isDisabled || buttonDisabled}\n aria-label={adjustmentType === \"increment\" ? ariaLabelIncrement : ariaLabelDecrement}\n />\n );\n };\n\n const beforeField = (\n <>\n {loading && (\n <div\n className={cx(`${rootClassName}__spinner`, {\n [`${rootClassName}__spinner--full-width`]: fullWidth,\n [`${rootClassName}__spinner--separated`]: !fullWidth && variant === \"separated\",\n })}\n >\n <Spinner\n key=\"spinner\"\n disabled={isDisabled}\n size=\"xs\"\n data-testid={getTestId(\"spinner\")}\n />\n </div>\n )}\n {adjustmentButton(\"decrement\")}\n </>\n );\n\n return (\n <TextField\n value={value}\n type=\"number\"\n ref={ref}\n className={classes}\n data-testid={dataTestId}\n onChange={handleOnChange}\n beforeField={beforeField}\n afterField={adjustmentButton(\"increment\")}\n disabled={isDisabled}\n min={min}\n max={max}\n role=\"spinbutton\"\n aria-valuenow={value}\n aria-valuemax={max}\n aria-valuemin={min}\n {...props}\n />\n );\n }\n);\n\nQuantitySelector.displayName = \"QuantitySelector\";\n"],"names":["e","r","o","s","l","cx","c","styles","rootClassName","QuantitySelectorButton","dataTestid","ariaLabel","disabled","hasGap","variant","buttonType","onClick","classes","jsx","Button","IconPlus","IconMinus","quantitySelectorVariants","quantitySelectorButtonVariants","QuantitySelector","forwardRef","dataTestId","className","buttonVariant","onChange","controlledValue","defaultValue","fullWidth","loading","minValue","maxValue","ariaLabelDecrement","ariaLabelIncrement","props","ref","uncontrolledValue","setUncontrolledValue","useState","debouncedValue","setDebouncedValue","isControlled","value","getTestId","name","isDisabled","min","max","incrementDisabled","decrementDisabled","useEffect","timer","handleOnChange","val","handleOnClick","adjustmentType","adjustedValue","adjustmentButton","buttonDisabled","beforeField","jsxs","Fragment","Spinner","TextField"],"mappings":"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"}
1
+ {"version":3,"file":"quantity-selector-COtqc-Iy.mjs","sources":["../../../components/icon/dist/components/plus.es.js","../../../components/quantity-selector/src/quantity-selector-button.tsx","../../../components/quantity-selector/src/quantity-selector.tsx"],"sourcesContent":["import { jsx as s } from \"react/jsx-runtime\";\nimport { I as l } from \"../icon-DNHpBTHs.mjs\";\nconst e = {\n name: \"plus\",\n svg: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path fill-rule=\"evenodd\" d=\"M12 4.1a.9.9 0 0 1 .9.9v6.1H19a.9.9 0 1 1 0 1.8h-6.1V19a.9.9 0 0 1-1.8 0v-6.1H5a.9.9 0 0 1 0-1.8h6.1V5a.9.9 0 0 1 .9-.9Z\" clip-rule=\"evenodd\"/></svg>',\n keywords: [\"plus\"],\n category: \"utility\"\n}, r = (o) => /* @__PURE__ */ s(l, { ...o, svg: e });\nr.displayName = \"IconPlus\";\nexport {\n r as IconPlus\n};\n//# sourceMappingURL=plus.es.js.map\n","import React from \"react\";\nimport { Button } from \"@purpur/button\";\nimport { IconMinus } from \"@purpur/icon/minus\";\nimport { IconPlus } from \"@purpur/icon/plus\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./quantity-selector-button.module.scss\";\n\ntype variant = \"primary\" | \"secondary\";\ntype buttonType = \"increment\" | \"decrement\";\n\ntype QuantitySelectorButtonProps = {\n [\"data-testid\"]?: string;\n [\"aria-label\"]?: string;\n disabled?: boolean;\n hasGap: boolean;\n variant: variant;\n buttonType: buttonType;\n onClick: (buttonType: buttonType) => void;\n};\n\nconst cx = c.bind(styles);\nconst rootClassName = \"purpur-quantity-selector-button\";\n\nexport const QuantitySelectorButton = ({\n [\"data-testid\"]: dataTestid,\n [\"aria-label\"]: ariaLabel,\n disabled,\n hasGap,\n variant,\n buttonType,\n onClick,\n}: QuantitySelectorButtonProps) => {\n const classes = cx(rootClassName, {\n [`${rootClassName}--gap-left`]: hasGap && buttonType === \"decrement\",\n [`${rootClassName}--gap-right`]: hasGap && buttonType === \"increment\",\n [`${rootClassName}--no-gap-left`]: !hasGap && buttonType === \"decrement\",\n [`${rootClassName}--no-gap-right`]: !hasGap && buttonType === \"increment\",\n });\n\n return (\n <Button\n data-testid={dataTestid}\n className={classes}\n size=\"sm\"\n type=\"submit\"\n variant={variant}\n onClick={() => onClick(buttonType)}\n iconOnly={true}\n aria-label={ariaLabel ?? \"\"}\n disabled={disabled}\n tabIndex={-1}\n >\n {buttonType === \"increment\" ? <IconPlus size=\"xs\" /> : <IconMinus size=\"xs\" />}\n </Button>\n );\n};\n","import React, { type ChangeEvent, forwardRef, useEffect, useState } from \"react\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport { Spinner } from \"@purpur/spinner\";\nimport { TextField } from \"@purpur/text-field\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./quantity-selector.module.scss\";\nimport { QuantitySelectorButton } from \"./quantity-selector-button\";\n\nconst cx = c.bind(styles);\n\nexport const quantitySelectorVariants = [\"attached\", \"separated\"] as const;\nexport const quantitySelectorButtonVariants = [\"primary\", \"secondary\"] as const;\n\ntype Variant = (typeof quantitySelectorVariants)[number];\ntype ButtonVariant = (typeof quantitySelectorButtonVariants)[number];\n\nexport type QuantitySelectorProps = Omit<BaseProps<\"input\">, \"onChange\" | \"type\"> & {\n variant: Variant;\n buttonVariant: ButtonVariant;\n onChange: (value: number) => void;\n defaultValue?: number;\n ariaLabelIncrement?: string;\n ariaLabelDecrement?: string;\n /**\n * Used when the component is controlled\n */\n value?: number;\n minValue?: number;\n maxValue?: number;\n label?: string;\n errorText?: string;\n fullWidth?: boolean;\n disabled?: boolean;\n loading?: boolean;\n};\n\nconst rootClassName = \"purpur-quantity-selector\";\n\nexport const QuantitySelector = forwardRef<HTMLInputElement, QuantitySelectorProps>(\n (\n {\n [\"data-testid\"]: dataTestId,\n className,\n variant,\n buttonVariant,\n onChange,\n value: controlledValue,\n defaultValue,\n fullWidth,\n disabled,\n loading,\n minValue,\n maxValue,\n ariaLabelDecrement,\n ariaLabelIncrement,\n ...props\n },\n ref\n ) => {\n const [uncontrolledValue, setUncontrolledValue] = useState(defaultValue ?? 0);\n const [debouncedValue, setDebouncedValue] = useState(uncontrolledValue);\n const isControlled = controlledValue !== undefined;\n const value = isControlled ? controlledValue : debouncedValue;\n\n const getTestId = (name: string) => (dataTestId ? `${dataTestId}-${name}` : undefined);\n const isDisabled = disabled || loading;\n const min = Math.max(minValue ?? 0, 0);\n const max = maxValue ?? Number.MAX_SAFE_INTEGER;\n const incrementDisabled = value === max;\n const decrementDisabled = value === min;\n\n useEffect(() => {\n if (isControlled) {\n setUncontrolledValue(controlledValue);\n }\n }, [controlledValue, isControlled]);\n\n useEffect(() => {\n if (!isControlled) {\n const timer = setTimeout(() => {\n setUncontrolledValue(debouncedValue);\n }, 300);\n\n return () => clearTimeout(timer);\n }\n return;\n }, [debouncedValue, isControlled, onChange]);\n\n const classes = cx(className, rootClassName, {\n [`${rootClassName}--no-gap`]:\n variant === \"attached\" && !isDisabled && !decrementDisabled && !incrementDisabled,\n [`${rootClassName}--no-gap-disabled-left`]:\n variant === \"attached\" && !isDisabled && !incrementDisabled && decrementDisabled,\n [`${rootClassName}--no-gap-disabled-right`]:\n variant === \"attached\" && !isDisabled && !decrementDisabled && incrementDisabled,\n [`${rootClassName}--no-gap-disabled`]:\n variant === \"attached\" && (isDisabled || (incrementDisabled && decrementDisabled)),\n [`${rootClassName}--full-width`]: fullWidth,\n [`${rootClassName}--loading`]: loading,\n });\n\n const handleOnChange = (e: ChangeEvent<HTMLInputElement>) => {\n const numericRegex = /^[0-9]*$/;\n if (!numericRegex.test(e.target.value)) {\n return;\n }\n const val = +e.target.value;\n if (val < min || val > max) {\n return;\n }\n\n if (!isControlled) {\n setDebouncedValue(val);\n }\n onChange(val);\n };\n\n const handleOnClick = (adjustmentType: \"increment\" | \"decrement\") => {\n const adjustedValue = adjustmentType === \"increment\" ? value + 1 : value - 1;\n if (adjustedValue < 0) {\n return;\n }\n\n if (!isControlled) {\n setDebouncedValue(adjustedValue);\n }\n onChange(adjustedValue);\n };\n\n const adjustmentButton = (adjustmentType: \"increment\" | \"decrement\") => {\n const buttonDisabled =\n (adjustmentType === \"increment\" && incrementDisabled) ||\n (adjustmentType === \"decrement\" && decrementDisabled);\n\n return (\n <QuantitySelectorButton\n data-testid={getTestId(\"button-\" + adjustmentType)}\n variant={buttonVariant}\n buttonType={adjustmentType}\n hasGap={variant === \"separated\"}\n onClick={handleOnClick}\n disabled={isDisabled || buttonDisabled}\n aria-label={adjustmentType === \"increment\" ? ariaLabelIncrement : ariaLabelDecrement}\n />\n );\n };\n\n const beforeField = (\n <>\n {loading && (\n <div\n className={cx(`${rootClassName}__spinner`, {\n [`${rootClassName}__spinner--full-width`]: fullWidth,\n [`${rootClassName}__spinner--separated`]: !fullWidth && variant === \"separated\",\n })}\n >\n <Spinner\n key=\"spinner\"\n disabled={isDisabled}\n size=\"xs\"\n data-testid={getTestId(\"spinner\")}\n />\n </div>\n )}\n {adjustmentButton(\"decrement\")}\n </>\n );\n\n return (\n <TextField\n value={value}\n type=\"number\"\n ref={ref}\n className={classes}\n data-testid={dataTestId}\n onChange={handleOnChange}\n beforeField={beforeField}\n afterField={adjustmentButton(\"increment\")}\n disabled={isDisabled}\n min={min}\n max={max}\n role=\"spinbutton\"\n aria-valuenow={value}\n aria-valuemax={max}\n aria-valuemin={min}\n {...props}\n />\n );\n }\n);\n\nQuantitySelector.displayName = \"QuantitySelector\";\n"],"names":["e","r","o","s","l","cx","c","styles","rootClassName","QuantitySelectorButton","dataTestid","ariaLabel","disabled","hasGap","variant","buttonType","onClick","classes","jsx","Button","IconPlus","IconMinus","quantitySelectorVariants","quantitySelectorButtonVariants","QuantitySelector","forwardRef","dataTestId","className","buttonVariant","onChange","controlledValue","defaultValue","fullWidth","loading","minValue","maxValue","ariaLabelDecrement","ariaLabelIncrement","props","ref","uncontrolledValue","setUncontrolledValue","useState","debouncedValue","setDebouncedValue","isControlled","value","getTestId","name","isDisabled","min","max","incrementDisabled","decrementDisabled","useEffect","timer","handleOnChange","val","handleOnClick","adjustmentType","adjustedValue","adjustmentButton","buttonDisabled","beforeField","jsxs","Fragment","Spinner","TextField"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";const n=require("react/jsx-runtime"),q=require("react"),U=require("./spinner-tKunS_o-.js"),X=require("./text-field-C2W13n15.js"),B=require("./bind-DeUYJ6m9.js"),Z=require("./button-DmybVApa.js"),J=require("./minus.es-DtXArdKK.js"),K=require("./icon-DNHpBTHs-faYHqTXU.js"),L={"purpur-quantity-selector":"_purpur-quantity-selector_1hglo_1","purpur-quantity-selector--full-width":"_purpur-quantity-selector--full-width_1hglo_25","purpur-quantity-selector--loading":"_purpur-quantity-selector--loading_1hglo_31","purpur-quantity-selector--no-gap":"_purpur-quantity-selector--no-gap_1hglo_34","purpur-quantity-selector--no-gap-disabled-left":"_purpur-quantity-selector--no-gap-disabled-left_1hglo_39","purpur-quantity-selector--no-gap-disabled-right":"_purpur-quantity-selector--no-gap-disabled-right_1hglo_43","purpur-quantity-selector--no-gap-disabled":"_purpur-quantity-selector--no-gap-disabled_1hglo_39","purpur-quantity-selector__spinner":"_purpur-quantity-selector__spinner_1hglo_50","purpur-quantity-selector__spinner--full-width":"_purpur-quantity-selector__spinner--full-width_1hglo_57","purpur-quantity-selector__spinner--separated":"_purpur-quantity-selector__spinner--separated_1hglo_61"},Y={name:"plus",svg:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor"><path fill-rule="evenodd" d="M12 4.1a.9.9 0 0 1 .9.9v6.1H19a.9.9 0 1 1 0 1.8h-6.1V19a.9.9 0 0 1-1.8 0v-6.1H5a.9.9 0 0 1 0-1.8h6.1V5a.9.9 0 0 1 .9-.9Z" clip-rule="evenodd"/></svg>',keywords:["plus"],category:"utility"},C=a=>n.jsx(K.b,{...a,svg:Y});C.displayName="IconPlus";const G={"purpur-quantity-selector-button":"_purpur-quantity-selector-button_qjlbs_1","purpur-quantity-selector-button--gap-left":"_purpur-quantity-selector-button--gap-left_qjlbs_4","purpur-quantity-selector-button--gap-right":"_purpur-quantity-selector-button--gap-right_qjlbs_7","purpur-quantity-selector-button--no-gap-right":"_purpur-quantity-selector-button--no-gap-right_qjlbs_10","purpur-quantity-selector-button--no-gap-left":"_purpur-quantity-selector-button--no-gap-left_qjlbs_13"},W=B.c.bind(G),b="purpur-quantity-selector-button",T=({["data-testid"]:a,["aria-label"]:f,disabled:s,hasGap:o,variant:p,buttonType:e,onClick:x})=>{const d=W(b,{[`${b}--gap-left`]:o&&e==="decrement",[`${b}--gap-right`]:o&&e==="increment",[`${b}--no-gap-left`]:!o&&e==="decrement",[`${b}--no-gap-right`]:!o&&e==="increment"});return n.jsx(Z.Button,{"data-testid":a,className:d,size:"sm",type:"submit",variant:p,onClick:()=>x(e),iconOnly:!0,"aria-label":f??"",disabled:s,tabIndex:-1,children:e==="increment"?n.jsx(C,{size:"xs"}):n.jsx(J.e,{size:"xs"})})},V=B.c.bind(L),tt=["attached","separated"],et=["primary","secondary"],r="purpur-quantity-selector",D=q.forwardRef(({["data-testid"]:a,className:f,variant:s,buttonVariant:o,onChange:p,value:e,defaultValue:x,fullWidth:d,disabled:F,loading:$,minValue:R,maxValue:E,ariaLabelDecrement:k,ariaLabelIncrement:z,...H},Q)=>{const[M,w]=q.useState(x??0),[v,j]=q.useState(M),u=e!==void 0,l=u?e:v,S=t=>a?`${a}-${t}`:void 0,i=F||$,y=Math.max(R??0,0),m=E??Number.MAX_SAFE_INTEGER,_=l===m,g=l===y;q.useEffect(()=>{u&&w(e)},[e,u]),q.useEffect(()=>{if(!u){const t=setTimeout(()=>{w(v)},300);return()=>clearTimeout(t)}},[v,u,p]);const O=V(f,r,{[`${r}--no-gap`]:s==="attached"&&!i&&!g&&!_,[`${r}--no-gap-disabled-left`]:s==="attached"&&!i&&!_&&g,[`${r}--no-gap-disabled-right`]:s==="attached"&&!i&&!g&&_,[`${r}--no-gap-disabled`]:s==="attached"&&(i||_&&g),[`${r}--full-width`]:d,[`${r}--loading`]:$}),A=t=>{if(!/^[0-9]*$/.test(t.target.value))return;const h=+t.target.value;h<y||h>m||(u||j(h),p(h))},I=t=>{const c=t==="increment"?l+1:l-1;c<0||(u||j(c),p(c))},N=t=>{const c=t==="increment"&&_||t==="decrement"&&g;return n.jsx(T,{"data-testid":S("button-"+t),variant:o,buttonType:t,hasGap:s==="separated",onClick:I,disabled:i||c,"aria-label":t==="increment"?z:k})},P=n.jsxs(n.Fragment,{children:[$&&n.jsx("div",{className:V(`${r}__spinner`,{[`${r}__spinner--full-width`]:d,[`${r}__spinner--separated`]:!d&&s==="separated"}),children:n.jsx(U.Spinner,{disabled:i,size:"xs","data-testid":S("spinner")},"spinner")}),N("decrement")]});return n.jsx(X.TextField,{value:l,type:"number",ref:Q,className:O,"data-testid":a,onChange:A,beforeField:P,afterField:N("increment"),disabled:i,min:y,max:m,role:"spinbutton","aria-valuenow":l,"aria-valuemax":m,"aria-valuemin":y,...H})});D.displayName="QuantitySelector";exports.QuantitySelector=D;exports.quantitySelectorButtonVariants=et;exports.quantitySelectorVariants=tt;
2
- //# sourceMappingURL=quantity-selector-CTBoxiPO.js.map
1
+ "use strict";const n=require("react/jsx-runtime"),q=require("react"),U=require("./spinner-tKunS_o-.js"),X=require("./text-field-CthxpKsp.js"),B=require("./bind-DeUYJ6m9.js"),Z=require("./button-DmybVApa.js"),J=require("./minus.es-DtXArdKK.js"),K=require("./icon-DNHpBTHs-faYHqTXU.js"),L={"purpur-quantity-selector":"_purpur-quantity-selector_1hglo_1","purpur-quantity-selector--full-width":"_purpur-quantity-selector--full-width_1hglo_25","purpur-quantity-selector--loading":"_purpur-quantity-selector--loading_1hglo_31","purpur-quantity-selector--no-gap":"_purpur-quantity-selector--no-gap_1hglo_34","purpur-quantity-selector--no-gap-disabled-left":"_purpur-quantity-selector--no-gap-disabled-left_1hglo_39","purpur-quantity-selector--no-gap-disabled-right":"_purpur-quantity-selector--no-gap-disabled-right_1hglo_43","purpur-quantity-selector--no-gap-disabled":"_purpur-quantity-selector--no-gap-disabled_1hglo_39","purpur-quantity-selector__spinner":"_purpur-quantity-selector__spinner_1hglo_50","purpur-quantity-selector__spinner--full-width":"_purpur-quantity-selector__spinner--full-width_1hglo_57","purpur-quantity-selector__spinner--separated":"_purpur-quantity-selector__spinner--separated_1hglo_61"},Y={name:"plus",svg:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor"><path fill-rule="evenodd" d="M12 4.1a.9.9 0 0 1 .9.9v6.1H19a.9.9 0 1 1 0 1.8h-6.1V19a.9.9 0 0 1-1.8 0v-6.1H5a.9.9 0 0 1 0-1.8h6.1V5a.9.9 0 0 1 .9-.9Z" clip-rule="evenodd"/></svg>',keywords:["plus"],category:"utility"},C=a=>n.jsx(K.b,{...a,svg:Y});C.displayName="IconPlus";const G={"purpur-quantity-selector-button":"_purpur-quantity-selector-button_qjlbs_1","purpur-quantity-selector-button--gap-left":"_purpur-quantity-selector-button--gap-left_qjlbs_4","purpur-quantity-selector-button--gap-right":"_purpur-quantity-selector-button--gap-right_qjlbs_7","purpur-quantity-selector-button--no-gap-right":"_purpur-quantity-selector-button--no-gap-right_qjlbs_10","purpur-quantity-selector-button--no-gap-left":"_purpur-quantity-selector-button--no-gap-left_qjlbs_13"},W=B.c.bind(G),b="purpur-quantity-selector-button",T=({["data-testid"]:a,["aria-label"]:f,disabled:s,hasGap:o,variant:p,buttonType:e,onClick:x})=>{const d=W(b,{[`${b}--gap-left`]:o&&e==="decrement",[`${b}--gap-right`]:o&&e==="increment",[`${b}--no-gap-left`]:!o&&e==="decrement",[`${b}--no-gap-right`]:!o&&e==="increment"});return n.jsx(Z.Button,{"data-testid":a,className:d,size:"sm",type:"submit",variant:p,onClick:()=>x(e),iconOnly:!0,"aria-label":f??"",disabled:s,tabIndex:-1,children:e==="increment"?n.jsx(C,{size:"xs"}):n.jsx(J.e,{size:"xs"})})},V=B.c.bind(L),tt=["attached","separated"],et=["primary","secondary"],r="purpur-quantity-selector",D=q.forwardRef(({["data-testid"]:a,className:f,variant:s,buttonVariant:o,onChange:p,value:e,defaultValue:x,fullWidth:d,disabled:F,loading:$,minValue:R,maxValue:E,ariaLabelDecrement:k,ariaLabelIncrement:z,...H},Q)=>{const[M,w]=q.useState(x??0),[v,j]=q.useState(M),u=e!==void 0,l=u?e:v,S=t=>a?`${a}-${t}`:void 0,i=F||$,y=Math.max(R??0,0),m=E??Number.MAX_SAFE_INTEGER,_=l===m,g=l===y;q.useEffect(()=>{u&&w(e)},[e,u]),q.useEffect(()=>{if(!u){const t=setTimeout(()=>{w(v)},300);return()=>clearTimeout(t)}},[v,u,p]);const O=V(f,r,{[`${r}--no-gap`]:s==="attached"&&!i&&!g&&!_,[`${r}--no-gap-disabled-left`]:s==="attached"&&!i&&!_&&g,[`${r}--no-gap-disabled-right`]:s==="attached"&&!i&&!g&&_,[`${r}--no-gap-disabled`]:s==="attached"&&(i||_&&g),[`${r}--full-width`]:d,[`${r}--loading`]:$}),A=t=>{if(!/^[0-9]*$/.test(t.target.value))return;const h=+t.target.value;h<y||h>m||(u||j(h),p(h))},I=t=>{const c=t==="increment"?l+1:l-1;c<0||(u||j(c),p(c))},N=t=>{const c=t==="increment"&&_||t==="decrement"&&g;return n.jsx(T,{"data-testid":S("button-"+t),variant:o,buttonType:t,hasGap:s==="separated",onClick:I,disabled:i||c,"aria-label":t==="increment"?z:k})},P=n.jsxs(n.Fragment,{children:[$&&n.jsx("div",{className:V(`${r}__spinner`,{[`${r}__spinner--full-width`]:d,[`${r}__spinner--separated`]:!d&&s==="separated"}),children:n.jsx(U.Spinner,{disabled:i,size:"xs","data-testid":S("spinner")},"spinner")}),N("decrement")]});return n.jsx(X.TextField,{value:l,type:"number",ref:Q,className:O,"data-testid":a,onChange:A,beforeField:P,afterField:N("increment"),disabled:i,min:y,max:m,role:"spinbutton","aria-valuenow":l,"aria-valuemax":m,"aria-valuemin":y,...H})});D.displayName="QuantitySelector";exports.QuantitySelector=D;exports.quantitySelectorButtonVariants=et;exports.quantitySelectorVariants=tt;
2
+ //# sourceMappingURL=quantity-selector-CwxuBsVC.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"quantity-selector-CTBoxiPO.js","sources":["../../../components/icon/dist/components/plus.es.js","../../../components/quantity-selector/src/quantity-selector-button.tsx","../../../components/quantity-selector/src/quantity-selector.tsx"],"sourcesContent":["import { jsx as s } from \"react/jsx-runtime\";\nimport { I as l } from \"../icon-DNHpBTHs.mjs\";\nconst e = {\n name: \"plus\",\n svg: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path fill-rule=\"evenodd\" d=\"M12 4.1a.9.9 0 0 1 .9.9v6.1H19a.9.9 0 1 1 0 1.8h-6.1V19a.9.9 0 0 1-1.8 0v-6.1H5a.9.9 0 0 1 0-1.8h6.1V5a.9.9 0 0 1 .9-.9Z\" clip-rule=\"evenodd\"/></svg>',\n keywords: [\"plus\"],\n category: \"utility\"\n}, r = (o) => /* @__PURE__ */ s(l, { ...o, svg: e });\nr.displayName = \"IconPlus\";\nexport {\n r as IconPlus\n};\n//# sourceMappingURL=plus.es.js.map\n","import React from \"react\";\nimport { Button } from \"@purpur/button\";\nimport { IconMinus } from \"@purpur/icon/minus\";\nimport { IconPlus } from \"@purpur/icon/plus\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./quantity-selector-button.module.scss\";\n\ntype variant = \"primary\" | \"secondary\";\ntype buttonType = \"increment\" | \"decrement\";\n\ntype QuantitySelectorButtonProps = {\n [\"data-testid\"]?: string;\n [\"aria-label\"]?: string;\n disabled?: boolean;\n hasGap: boolean;\n variant: variant;\n buttonType: buttonType;\n onClick: (buttonType: buttonType) => void;\n};\n\nconst cx = c.bind(styles);\nconst rootClassName = \"purpur-quantity-selector-button\";\n\nexport const QuantitySelectorButton = ({\n [\"data-testid\"]: dataTestid,\n [\"aria-label\"]: ariaLabel,\n disabled,\n hasGap,\n variant,\n buttonType,\n onClick,\n}: QuantitySelectorButtonProps) => {\n const classes = cx(rootClassName, {\n [`${rootClassName}--gap-left`]: hasGap && buttonType === \"decrement\",\n [`${rootClassName}--gap-right`]: hasGap && buttonType === \"increment\",\n [`${rootClassName}--no-gap-left`]: !hasGap && buttonType === \"decrement\",\n [`${rootClassName}--no-gap-right`]: !hasGap && buttonType === \"increment\",\n });\n\n return (\n <Button\n data-testid={dataTestid}\n className={classes}\n size=\"sm\"\n type=\"submit\"\n variant={variant}\n onClick={() => onClick(buttonType)}\n iconOnly={true}\n aria-label={ariaLabel ?? \"\"}\n disabled={disabled}\n tabIndex={-1}\n >\n {buttonType === \"increment\" ? <IconPlus size=\"xs\" /> : <IconMinus size=\"xs\" />}\n </Button>\n );\n};\n","import React, { type ChangeEvent, forwardRef, useEffect, useState } from \"react\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport { Spinner } from \"@purpur/spinner\";\nimport { TextField } from \"@purpur/text-field\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./quantity-selector.module.scss\";\nimport { QuantitySelectorButton } from \"./quantity-selector-button\";\n\nconst cx = c.bind(styles);\n\nexport const quantitySelectorVariants = [\"attached\", \"separated\"] as const;\nexport const quantitySelectorButtonVariants = [\"primary\", \"secondary\"] as const;\n\ntype Variant = (typeof quantitySelectorVariants)[number];\ntype ButtonVariant = (typeof quantitySelectorButtonVariants)[number];\n\nexport type QuantitySelectorProps = Omit<BaseProps<\"input\">, \"onChange\" | \"type\"> & {\n variant: Variant;\n buttonVariant: ButtonVariant;\n onChange: (value: number) => void;\n defaultValue?: number;\n ariaLabelIncrement?: string;\n ariaLabelDecrement?: string;\n /**\n * Used when the component is controlled\n */\n value?: number;\n minValue?: number;\n maxValue?: number;\n label?: string;\n errorText?: string;\n fullWidth?: boolean;\n disabled?: boolean;\n loading?: boolean;\n};\n\nconst rootClassName = \"purpur-quantity-selector\";\n\nexport const QuantitySelector = forwardRef<HTMLInputElement, QuantitySelectorProps>(\n (\n {\n [\"data-testid\"]: dataTestId,\n className,\n variant,\n buttonVariant,\n onChange,\n value: controlledValue,\n defaultValue,\n fullWidth,\n disabled,\n loading,\n minValue,\n maxValue,\n ariaLabelDecrement,\n ariaLabelIncrement,\n ...props\n },\n ref\n ) => {\n const [uncontrolledValue, setUncontrolledValue] = useState(defaultValue ?? 0);\n const [debouncedValue, setDebouncedValue] = useState(uncontrolledValue);\n const isControlled = controlledValue !== undefined;\n const value = isControlled ? controlledValue : debouncedValue;\n\n const getTestId = (name: string) => (dataTestId ? `${dataTestId}-${name}` : undefined);\n const isDisabled = disabled || loading;\n const min = Math.max(minValue ?? 0, 0);\n const max = maxValue ?? Number.MAX_SAFE_INTEGER;\n const incrementDisabled = value === max;\n const decrementDisabled = value === min;\n\n useEffect(() => {\n if (isControlled) {\n setUncontrolledValue(controlledValue);\n }\n }, [controlledValue, isControlled]);\n\n useEffect(() => {\n if (!isControlled) {\n const timer = setTimeout(() => {\n setUncontrolledValue(debouncedValue);\n }, 300);\n\n return () => clearTimeout(timer);\n }\n return;\n }, [debouncedValue, isControlled, onChange]);\n\n const classes = cx(className, rootClassName, {\n [`${rootClassName}--no-gap`]:\n variant === \"attached\" && !isDisabled && !decrementDisabled && !incrementDisabled,\n [`${rootClassName}--no-gap-disabled-left`]:\n variant === \"attached\" && !isDisabled && !incrementDisabled && decrementDisabled,\n [`${rootClassName}--no-gap-disabled-right`]:\n variant === \"attached\" && !isDisabled && !decrementDisabled && incrementDisabled,\n [`${rootClassName}--no-gap-disabled`]:\n variant === \"attached\" && (isDisabled || (incrementDisabled && decrementDisabled)),\n [`${rootClassName}--full-width`]: fullWidth,\n [`${rootClassName}--loading`]: loading,\n });\n\n const handleOnChange = (e: ChangeEvent<HTMLInputElement>) => {\n const numericRegex = /^[0-9]*$/;\n if (!numericRegex.test(e.target.value)) {\n return;\n }\n const val = +e.target.value;\n if (val < min || val > max) {\n return;\n }\n\n if (!isControlled) {\n setDebouncedValue(val);\n }\n onChange(val);\n };\n\n const handleOnClick = (adjustmentType: \"increment\" | \"decrement\") => {\n const adjustedValue = adjustmentType === \"increment\" ? value + 1 : value - 1;\n if (adjustedValue < 0) {\n return;\n }\n\n if (!isControlled) {\n setDebouncedValue(adjustedValue);\n }\n onChange(adjustedValue);\n };\n\n const adjustmentButton = (adjustmentType: \"increment\" | \"decrement\") => {\n const buttonDisabled =\n (adjustmentType === \"increment\" && incrementDisabled) ||\n (adjustmentType === \"decrement\" && decrementDisabled);\n\n return (\n <QuantitySelectorButton\n data-testid={getTestId(\"button-\" + adjustmentType)}\n variant={buttonVariant}\n buttonType={adjustmentType}\n hasGap={variant === \"separated\"}\n onClick={handleOnClick}\n disabled={isDisabled || buttonDisabled}\n aria-label={adjustmentType === \"increment\" ? ariaLabelIncrement : ariaLabelDecrement}\n />\n );\n };\n\n const beforeField = (\n <>\n {loading && (\n <div\n className={cx(`${rootClassName}__spinner`, {\n [`${rootClassName}__spinner--full-width`]: fullWidth,\n [`${rootClassName}__spinner--separated`]: !fullWidth && variant === \"separated\",\n })}\n >\n <Spinner\n key=\"spinner\"\n disabled={isDisabled}\n size=\"xs\"\n data-testid={getTestId(\"spinner\")}\n />\n </div>\n )}\n {adjustmentButton(\"decrement\")}\n </>\n );\n\n return (\n <TextField\n value={value}\n type=\"number\"\n ref={ref}\n className={classes}\n data-testid={dataTestId}\n onChange={handleOnChange}\n beforeField={beforeField}\n afterField={adjustmentButton(\"increment\")}\n disabled={isDisabled}\n min={min}\n max={max}\n role=\"spinbutton\"\n aria-valuenow={value}\n aria-valuemax={max}\n aria-valuemin={min}\n {...props}\n />\n );\n }\n);\n\nQuantitySelector.displayName = \"QuantitySelector\";\n"],"names":["e","r","o","s","l","cx","c","styles","rootClassName","QuantitySelectorButton","dataTestid","ariaLabel","disabled","hasGap","variant","buttonType","onClick","classes","jsx","Button","IconPlus","IconMinus","quantitySelectorVariants","quantitySelectorButtonVariants","QuantitySelector","forwardRef","dataTestId","className","buttonVariant","onChange","controlledValue","defaultValue","fullWidth","loading","minValue","maxValue","ariaLabelDecrement","ariaLabelIncrement","props","ref","uncontrolledValue","setUncontrolledValue","useState","debouncedValue","setDebouncedValue","isControlled","value","getTestId","name","isDisabled","min","max","incrementDisabled","decrementDisabled","useEffect","timer","handleOnChange","val","handleOnClick","adjustmentType","adjustedValue","adjustmentButton","buttonDisabled","beforeField","jsxs","Fragment","Spinner","TextField"],"mappings":"0rCAEMA,EAAI,CACR,KAAM,OACN,IAAK,qQACL,SAAU,CAAC,MAAM,EACjB,SAAU,SACZ,EAAGC,EAAKC,GAAsBC,MAAEC,EAAAA,EAAG,CAAE,GAAGF,EAAG,IAAKF,EAAG,EACnDC,EAAE,YAAc,wfCaVI,EAAKC,EAAAA,EAAE,KAAKC,CAAM,EAClBC,EAAgB,kCAETC,EAAyB,CAAC,CACrC,CAAC,eAAgBC,EACjB,CAAC,cAAeC,EAChB,SAAAC,EACA,OAAAC,EACA,QAAAC,EACA,WAAAC,EACA,QAAAC,CACF,IAAmC,CACjC,MAAMC,EAAUZ,EAAGG,EAAe,CAChC,CAAC,GAAGA,CAAa,YAAY,EAAGK,GAAUE,IAAe,YACzD,CAAC,GAAGP,CAAa,aAAa,EAAGK,GAAUE,IAAe,YAC1D,CAAC,GAAGP,CAAa,eAAe,EAAG,CAACK,GAAUE,IAAe,YAC7D,CAAC,GAAGP,CAAa,gBAAgB,EAAG,CAACK,GAAUE,IAAe,WAAA,CAC/D,EAED,OACEG,EAAAA,IAACC,EAAAA,OAAA,CACC,cAAaT,EACb,UAAWO,EACX,KAAK,KACL,KAAK,SACL,QAAAH,EACA,QAAS,IAAME,EAAQD,CAAU,EACjC,SAAU,GACV,aAAYJ,GAAa,GACzB,SAAAC,EACA,SAAU,GAET,SAAAG,IAAe,YAAcG,EAAAA,IAACE,EAAA,CAAS,KAAK,KAAK,EAAKF,EAAAA,IAACG,EAAAA,EAAA,CAAU,KAAK,IAAA,CAAK,CAAA,CAAA,CAGlF,EC/CMhB,EAAKC,EAAAA,EAAE,KAAKC,CAAM,EAEXe,GAA2B,CAAC,WAAY,WAAW,EACnDC,GAAiC,CAAC,UAAW,WAAW,EAyB/Df,EAAgB,2BAETgB,EAAmBC,EAAAA,WAC9B,CACE,CACE,CAAC,eAAgBC,EACjB,UAAAC,EACA,QAAAb,EACA,cAAAc,EACA,SAAAC,EACA,MAAOC,EACP,aAAAC,EACA,UAAAC,EACA,SAAApB,EACA,QAAAqB,EACA,SAAAC,EACA,SAAAC,EACA,mBAAAC,EACA,mBAAAC,EACA,GAAGC,CAAA,EAELC,IACG,CACH,KAAM,CAACC,EAAmBC,CAAoB,EAAIC,EAAAA,SAASX,GAAgB,CAAC,EACtE,CAACY,EAAgBC,CAAiB,EAAIF,EAAAA,SAASF,CAAiB,EAChEK,EAAef,IAAoB,OACnCgB,EAAQD,EAAef,EAAkBa,EAEzCI,EAAaC,GAAkBtB,EAAa,GAAGA,CAAU,IAAIsB,CAAI,GAAK,OACtEC,EAAarC,GAAYqB,EACzBiB,EAAM,KAAK,IAAIhB,GAAY,EAAG,CAAC,EAC/BiB,EAAMhB,GAAY,OAAO,iBACzBiB,EAAoBN,IAAUK,EAC9BE,EAAoBP,IAAUI,EAEpCI,EAAAA,UAAU,IAAM,CACVT,GACFJ,EAAqBX,CAAe,CAExC,EAAG,CAACA,EAAiBe,CAAY,CAAC,EAElCS,EAAAA,UAAU,IAAM,CACd,GAAI,CAACT,EAAc,CACjB,MAAMU,EAAQ,WAAW,IAAM,CAC7Bd,EAAqBE,CAAc,CACrC,EAAG,GAAG,EAEN,MAAO,IAAM,aAAaY,CAAK,CACjC,CAEF,EAAG,CAACZ,EAAgBE,EAAchB,CAAQ,CAAC,EAE3C,MAAMZ,EAAUZ,EAAGsB,EAAWnB,EAAe,CAC3C,CAAC,GAAGA,CAAa,UAAU,EACzBM,IAAY,YAAc,CAACmC,GAAc,CAACI,GAAqB,CAACD,EAClE,CAAC,GAAG5C,CAAa,wBAAwB,EACvCM,IAAY,YAAc,CAACmC,GAAc,CAACG,GAAqBC,EACjE,CAAC,GAAG7C,CAAa,yBAAyB,EACxCM,IAAY,YAAc,CAACmC,GAAc,CAACI,GAAqBD,EACjE,CAAC,GAAG5C,CAAa,mBAAmB,EAClCM,IAAY,aAAemC,GAAeG,GAAqBC,GACjE,CAAC,GAAG7C,CAAa,cAAc,EAAGwB,EAClC,CAAC,GAAGxB,CAAa,WAAW,EAAGyB,CAAA,CAChC,EAEKuB,EAAkBxD,GAAqC,CAE3D,GAAI,CADiB,WACH,KAAKA,EAAE,OAAO,KAAK,EACnC,OAEF,MAAMyD,EAAM,CAACzD,EAAE,OAAO,MAClByD,EAAMP,GAAOO,EAAMN,IAIlBN,GACHD,EAAkBa,CAAG,EAEvB5B,EAAS4B,CAAG,EACd,EAEMC,EAAiBC,GAA8C,CACnE,MAAMC,EAAgBD,IAAmB,YAAcb,EAAQ,EAAIA,EAAQ,EACvEc,EAAgB,IAIff,GACHD,EAAkBgB,CAAa,EAEjC/B,EAAS+B,CAAa,EACxB,EAEMC,EAAoBF,GAA8C,CACtE,MAAMG,EACHH,IAAmB,aAAeP,GAClCO,IAAmB,aAAeN,EAErC,OACEnC,EAAAA,IAACT,EAAA,CACC,cAAasC,EAAU,UAAYY,CAAc,EACjD,QAAS/B,EACT,WAAY+B,EACZ,OAAQ7C,IAAY,YACpB,QAAS4C,EACT,SAAUT,GAAca,EACxB,aAAYH,IAAmB,YAActB,EAAqBD,CAAA,CAAA,CAGxE,EAEM2B,EACJC,EAAAA,KAAAC,EAAAA,SAAA,CACG,SAAA,CAAAhC,GACCf,EAAAA,IAAC,MAAA,CACC,UAAWb,EAAG,GAAGG,CAAa,YAAa,CACzC,CAAC,GAAGA,CAAa,uBAAuB,EAAGwB,EAC3C,CAAC,GAAGxB,CAAa,sBAAsB,EAAG,CAACwB,GAAalB,IAAY,WAAA,CACrE,EAED,SAAAI,EAAAA,IAACgD,EAAAA,QAAA,CAEC,SAAUjB,EACV,KAAK,KACL,cAAaF,EAAU,SAAS,CAAA,EAH5B,SAAA,CAIN,CAAA,EAGHc,EAAiB,WAAW,CAAA,EAC/B,EAGF,OACE3C,EAAAA,IAACiD,EAAAA,UAAA,CACC,MAAArB,EACA,KAAK,SACL,IAAAP,EACA,UAAWtB,EACX,cAAaS,EACb,SAAU8B,EACV,YAAAO,EACA,WAAYF,EAAiB,WAAW,EACxC,SAAUZ,EACV,IAAAC,EACA,IAAAC,EACA,KAAK,aACL,gBAAeL,EACf,gBAAeK,EACf,gBAAeD,EACd,GAAGZ,CAAA,CAAA,CAGV,CACF,EAEAd,EAAiB,YAAc"}
1
+ {"version":3,"file":"quantity-selector-CwxuBsVC.js","sources":["../../../components/icon/dist/components/plus.es.js","../../../components/quantity-selector/src/quantity-selector-button.tsx","../../../components/quantity-selector/src/quantity-selector.tsx"],"sourcesContent":["import { jsx as s } from \"react/jsx-runtime\";\nimport { I as l } from \"../icon-DNHpBTHs.mjs\";\nconst e = {\n name: \"plus\",\n svg: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path fill-rule=\"evenodd\" d=\"M12 4.1a.9.9 0 0 1 .9.9v6.1H19a.9.9 0 1 1 0 1.8h-6.1V19a.9.9 0 0 1-1.8 0v-6.1H5a.9.9 0 0 1 0-1.8h6.1V5a.9.9 0 0 1 .9-.9Z\" clip-rule=\"evenodd\"/></svg>',\n keywords: [\"plus\"],\n category: \"utility\"\n}, r = (o) => /* @__PURE__ */ s(l, { ...o, svg: e });\nr.displayName = \"IconPlus\";\nexport {\n r as IconPlus\n};\n//# sourceMappingURL=plus.es.js.map\n","import React from \"react\";\nimport { Button } from \"@purpur/button\";\nimport { IconMinus } from \"@purpur/icon/minus\";\nimport { IconPlus } from \"@purpur/icon/plus\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./quantity-selector-button.module.scss\";\n\ntype variant = \"primary\" | \"secondary\";\ntype buttonType = \"increment\" | \"decrement\";\n\ntype QuantitySelectorButtonProps = {\n [\"data-testid\"]?: string;\n [\"aria-label\"]?: string;\n disabled?: boolean;\n hasGap: boolean;\n variant: variant;\n buttonType: buttonType;\n onClick: (buttonType: buttonType) => void;\n};\n\nconst cx = c.bind(styles);\nconst rootClassName = \"purpur-quantity-selector-button\";\n\nexport const QuantitySelectorButton = ({\n [\"data-testid\"]: dataTestid,\n [\"aria-label\"]: ariaLabel,\n disabled,\n hasGap,\n variant,\n buttonType,\n onClick,\n}: QuantitySelectorButtonProps) => {\n const classes = cx(rootClassName, {\n [`${rootClassName}--gap-left`]: hasGap && buttonType === \"decrement\",\n [`${rootClassName}--gap-right`]: hasGap && buttonType === \"increment\",\n [`${rootClassName}--no-gap-left`]: !hasGap && buttonType === \"decrement\",\n [`${rootClassName}--no-gap-right`]: !hasGap && buttonType === \"increment\",\n });\n\n return (\n <Button\n data-testid={dataTestid}\n className={classes}\n size=\"sm\"\n type=\"submit\"\n variant={variant}\n onClick={() => onClick(buttonType)}\n iconOnly={true}\n aria-label={ariaLabel ?? \"\"}\n disabled={disabled}\n tabIndex={-1}\n >\n {buttonType === \"increment\" ? <IconPlus size=\"xs\" /> : <IconMinus size=\"xs\" />}\n </Button>\n );\n};\n","import React, { type ChangeEvent, forwardRef, useEffect, useState } from \"react\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport { Spinner } from \"@purpur/spinner\";\nimport { TextField } from \"@purpur/text-field\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./quantity-selector.module.scss\";\nimport { QuantitySelectorButton } from \"./quantity-selector-button\";\n\nconst cx = c.bind(styles);\n\nexport const quantitySelectorVariants = [\"attached\", \"separated\"] as const;\nexport const quantitySelectorButtonVariants = [\"primary\", \"secondary\"] as const;\n\ntype Variant = (typeof quantitySelectorVariants)[number];\ntype ButtonVariant = (typeof quantitySelectorButtonVariants)[number];\n\nexport type QuantitySelectorProps = Omit<BaseProps<\"input\">, \"onChange\" | \"type\"> & {\n variant: Variant;\n buttonVariant: ButtonVariant;\n onChange: (value: number) => void;\n defaultValue?: number;\n ariaLabelIncrement?: string;\n ariaLabelDecrement?: string;\n /**\n * Used when the component is controlled\n */\n value?: number;\n minValue?: number;\n maxValue?: number;\n label?: string;\n errorText?: string;\n fullWidth?: boolean;\n disabled?: boolean;\n loading?: boolean;\n};\n\nconst rootClassName = \"purpur-quantity-selector\";\n\nexport const QuantitySelector = forwardRef<HTMLInputElement, QuantitySelectorProps>(\n (\n {\n [\"data-testid\"]: dataTestId,\n className,\n variant,\n buttonVariant,\n onChange,\n value: controlledValue,\n defaultValue,\n fullWidth,\n disabled,\n loading,\n minValue,\n maxValue,\n ariaLabelDecrement,\n ariaLabelIncrement,\n ...props\n },\n ref\n ) => {\n const [uncontrolledValue, setUncontrolledValue] = useState(defaultValue ?? 0);\n const [debouncedValue, setDebouncedValue] = useState(uncontrolledValue);\n const isControlled = controlledValue !== undefined;\n const value = isControlled ? controlledValue : debouncedValue;\n\n const getTestId = (name: string) => (dataTestId ? `${dataTestId}-${name}` : undefined);\n const isDisabled = disabled || loading;\n const min = Math.max(minValue ?? 0, 0);\n const max = maxValue ?? Number.MAX_SAFE_INTEGER;\n const incrementDisabled = value === max;\n const decrementDisabled = value === min;\n\n useEffect(() => {\n if (isControlled) {\n setUncontrolledValue(controlledValue);\n }\n }, [controlledValue, isControlled]);\n\n useEffect(() => {\n if (!isControlled) {\n const timer = setTimeout(() => {\n setUncontrolledValue(debouncedValue);\n }, 300);\n\n return () => clearTimeout(timer);\n }\n return;\n }, [debouncedValue, isControlled, onChange]);\n\n const classes = cx(className, rootClassName, {\n [`${rootClassName}--no-gap`]:\n variant === \"attached\" && !isDisabled && !decrementDisabled && !incrementDisabled,\n [`${rootClassName}--no-gap-disabled-left`]:\n variant === \"attached\" && !isDisabled && !incrementDisabled && decrementDisabled,\n [`${rootClassName}--no-gap-disabled-right`]:\n variant === \"attached\" && !isDisabled && !decrementDisabled && incrementDisabled,\n [`${rootClassName}--no-gap-disabled`]:\n variant === \"attached\" && (isDisabled || (incrementDisabled && decrementDisabled)),\n [`${rootClassName}--full-width`]: fullWidth,\n [`${rootClassName}--loading`]: loading,\n });\n\n const handleOnChange = (e: ChangeEvent<HTMLInputElement>) => {\n const numericRegex = /^[0-9]*$/;\n if (!numericRegex.test(e.target.value)) {\n return;\n }\n const val = +e.target.value;\n if (val < min || val > max) {\n return;\n }\n\n if (!isControlled) {\n setDebouncedValue(val);\n }\n onChange(val);\n };\n\n const handleOnClick = (adjustmentType: \"increment\" | \"decrement\") => {\n const adjustedValue = adjustmentType === \"increment\" ? value + 1 : value - 1;\n if (adjustedValue < 0) {\n return;\n }\n\n if (!isControlled) {\n setDebouncedValue(adjustedValue);\n }\n onChange(adjustedValue);\n };\n\n const adjustmentButton = (adjustmentType: \"increment\" | \"decrement\") => {\n const buttonDisabled =\n (adjustmentType === \"increment\" && incrementDisabled) ||\n (adjustmentType === \"decrement\" && decrementDisabled);\n\n return (\n <QuantitySelectorButton\n data-testid={getTestId(\"button-\" + adjustmentType)}\n variant={buttonVariant}\n buttonType={adjustmentType}\n hasGap={variant === \"separated\"}\n onClick={handleOnClick}\n disabled={isDisabled || buttonDisabled}\n aria-label={adjustmentType === \"increment\" ? ariaLabelIncrement : ariaLabelDecrement}\n />\n );\n };\n\n const beforeField = (\n <>\n {loading && (\n <div\n className={cx(`${rootClassName}__spinner`, {\n [`${rootClassName}__spinner--full-width`]: fullWidth,\n [`${rootClassName}__spinner--separated`]: !fullWidth && variant === \"separated\",\n })}\n >\n <Spinner\n key=\"spinner\"\n disabled={isDisabled}\n size=\"xs\"\n data-testid={getTestId(\"spinner\")}\n />\n </div>\n )}\n {adjustmentButton(\"decrement\")}\n </>\n );\n\n return (\n <TextField\n value={value}\n type=\"number\"\n ref={ref}\n className={classes}\n data-testid={dataTestId}\n onChange={handleOnChange}\n beforeField={beforeField}\n afterField={adjustmentButton(\"increment\")}\n disabled={isDisabled}\n min={min}\n max={max}\n role=\"spinbutton\"\n aria-valuenow={value}\n aria-valuemax={max}\n aria-valuemin={min}\n {...props}\n />\n );\n }\n);\n\nQuantitySelector.displayName = \"QuantitySelector\";\n"],"names":["e","r","o","s","l","cx","c","styles","rootClassName","QuantitySelectorButton","dataTestid","ariaLabel","disabled","hasGap","variant","buttonType","onClick","classes","jsx","Button","IconPlus","IconMinus","quantitySelectorVariants","quantitySelectorButtonVariants","QuantitySelector","forwardRef","dataTestId","className","buttonVariant","onChange","controlledValue","defaultValue","fullWidth","loading","minValue","maxValue","ariaLabelDecrement","ariaLabelIncrement","props","ref","uncontrolledValue","setUncontrolledValue","useState","debouncedValue","setDebouncedValue","isControlled","value","getTestId","name","isDisabled","min","max","incrementDisabled","decrementDisabled","useEffect","timer","handleOnChange","val","handleOnClick","adjustmentType","adjustedValue","adjustmentButton","buttonDisabled","beforeField","jsxs","Fragment","Spinner","TextField"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("./quantity-selector-CTBoxiPO.js");exports.QuantitySelector=t.QuantitySelector;exports.quantitySelectorButtonVariants=t.quantitySelectorButtonVariants;exports.quantitySelectorVariants=t.quantitySelectorVariants;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("./quantity-selector-CwxuBsVC.js");exports.QuantitySelector=t.QuantitySelector;exports.quantitySelectorButtonVariants=t.quantitySelectorButtonVariants;exports.quantitySelectorVariants=t.quantitySelectorVariants;
2
2
  //# sourceMappingURL=quantity-selector.cjs.js.map
@@ -1,4 +1,4 @@
1
- import { Q as e, q as r, a as n } from "./quantity-selector-B4YnfmNb.mjs";
1
+ import { Q as e, q as r, a as n } from "./quantity-selector-COtqc-Iy.mjs";
2
2
  export {
3
3
  e as QuantitySelector,
4
4
  r as quantitySelectorButtonVariants,
@@ -4,7 +4,7 @@ import { L as F } from "./listbox-CtV-Vcmy.mjs";
4
4
  import { t as M } from "./use-autocomplete.es-CKb0RHKG.mjs";
5
5
  import { c as g } from "./bind-CU-R61T-.mjs";
6
6
  import { s as z } from "./search.es-DoFKg2Hr.mjs";
7
- import { T as I } from "./text-field-D8MMa6ij.mjs";
7
+ import { T as I } from "./text-field-AsvqJh6P.mjs";
8
8
  import { b as O } from "./button-4-yWOgtD.mjs";
9
9
  const R = {
10
10
  "purpur-search-field": "_purpur-search-field_1wc77_1",
@@ -164,4 +164,4 @@ export {
164
164
  k as a,
165
165
  Z as s
166
166
  };
167
- //# sourceMappingURL=search-field-BPLzy3RR.mjs.map
167
+ //# sourceMappingURL=search-field-BMC3WG2H.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"search-field-BPLzy3RR.mjs","sources":["../../../components/search-field/src/search-field-button.tsx","../../../components/search-field/src/search-field-base.tsx","../../../components/search-field/src/search-field-autocomplete.tsx","../../../components/search-field/src/search-field.tsx"],"sourcesContent":["import React from \"react\";\nimport { Button } from \"@purpur/button\";\nimport { IconSearch } from \"@purpur/icon/search\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./search-field-button.module.scss\";\n\ntype Props = {\n [\"data-testid\"]?: string;\n disabled?: boolean;\n iconOnly?: boolean;\n label: string;\n type?: \"submit\" | \"button\";\n onClick?: (event: React.MouseEvent<HTMLButtonElement>) => void;\n};\n\nconst cx = c.bind(styles);\nconst rootClassName = \"purpur-search-field-button\";\n\nexport const SearchFieldButton = ({\n [\"data-testid\"]: dataTestid,\n disabled,\n iconOnly,\n label,\n type = \"submit\",\n onClick,\n}: Props) => {\n const buttonProps = {\n className: cx(rootClassName, {\n [`${rootClassName}--icon-only`]: iconOnly,\n }),\n disabled,\n [\"data-testid\"]: dataTestid,\n onClick,\n };\n\n if (iconOnly) {\n return (\n <Button {...buttonProps} aria-label={label} iconOnly size=\"sm\" type={type} variant=\"primary\">\n <IconSearch size=\"xs\" />\n </Button>\n );\n }\n\n return (\n <Button {...buttonProps} size=\"sm\" type={type} variant=\"primary\">\n {label}\n </Button>\n );\n};\n","import React, {\n type ChangeEvent,\n type CSSProperties,\n type FormEvent,\n forwardRef,\n type RefObject,\n} from \"react\";\nimport { IconSearch } from \"@purpur/icon/search\";\nimport { TextField, type TextFieldProps } from \"@purpur/text-field\";\nimport { type AutocompleteOption } from \"@purpur/use-autocomplete\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./search-field.module.scss\";\nimport { SearchFieldButton } from \"./search-field-button\";\n\nexport const searchFieldVariants = [\"button-attached\", \"no-button\"] as const;\n\ntype Variant = (typeof searchFieldVariants)[number];\n\ntype DefaultProps = {\n [\"data-testid\"]?: string;\n /**\n * An accessible label for the clear button.\n * */\n clearButtonAriaLabel: string;\n /**\n * Disables both the input field and submit button if `true`.\n * */\n disabled?: boolean;\n /**\n * Will display only a search icon in the search button if `true`.\n * */\n iconOnlySearchButton?: boolean;\n /**\n * Event handler called when the value of the search field changes.\n * */\n onChange?: (e: ChangeEvent<HTMLInputElement>) => void;\n /**\n * Event handler called when the clear button is clicked.\n * */\n onClear: () => void;\n /**\n * Event handler called when the search is triggered.\n * */\n onSearch?: (event?: React.SyntheticEvent) => void;\n /**\n * Controls how the search field handles submission.\n * - `\"form\"` (default): Renders a `<form>` element and submits via form submission.\n * - `\"manual\"`: Renders a `<div>` instead of a `<form>` element.\n * Use this when the component is nested inside another form.\n * */\n submitBehavior?: \"form\" | \"manual\";\n /**\n * The label text (or `aria-label` if `iconOnlySearchButton` is `true`) of the search button.\n * */\n searchButtonLabel?: string;\n variant: Variant;\n formRef?: RefObject<HTMLFormElement>;\n};\n\ntype TextSearchButton = {\n iconOnlySearchButton?: false;\n searchButtonLabel: string;\n variant: \"button-attached\";\n};\n\ntype IconOnlySearchButton = {\n iconOnlySearchButton: true;\n searchButtonLabel: string;\n variant: \"button-attached\";\n};\n\ntype NoButton = {\n searchButtonLabel?: never;\n variant: \"no-button\";\n};\n\nexport type SearchFieldBaseProps = DefaultProps &\n (TextSearchButton | IconOnlySearchButton | NoButton) &\n Omit<TextFieldProps, \"startAdornment\" | \"endAdornment\" | \"afterField\" | \"onChange\" | \"variant\">;\n\ntype SearchFieldBaseInternalProps = SearchFieldBaseProps & {\n wrapperStyle?: CSSProperties;\n};\n\ntype SearchFieldAutocompleteSharedProps = {\n /**\n * Called when the user selects a suggestion.\n */\n onSelectSuggestion?: (option: AutocompleteOption) => void;\n /**\n * Open the suggestions listbox when the input receives focus.\n */\n openSuggestionsOnFocus?: boolean;\n /**\n * Maximum height of the suggestions listbox. A number is interpreted as px.\n */\n suggestionsMaxHeight?: string | number;\n};\n\ntype SearchFieldWithoutAutocomplete = SearchFieldAutocompleteSharedProps & {\n suggestions?: never;\n suggestionsLabel?: never;\n};\n\ntype SearchFieldWithAutocomplete = SearchFieldAutocompleteSharedProps & {\n /**\n * The list of suggestions to display in a listbox below the field.\n * No filtering is applied — pass the already-correct (pre-filtered) list.\n * If autocomplete should stay enabled while there are temporarily no matches,\n * pass an empty array instead of `undefined` or `null`. Changing this prop\n * from an absent value to an array switches between the regular and\n * autocomplete variants, which causes a re-render, drops input focus, and\n * hides the listbox.\n */\n suggestions: AutocompleteOption[];\n /**\n * Accessible label for the suggestions listbox.\n */\n suggestionsLabel: string;\n};\n\nexport type SearchFieldAutocompleteEnhancements =\n | SearchFieldWithoutAutocomplete\n | SearchFieldWithAutocomplete;\n\nconst cx = c.bind(styles);\nconst rootClassName = \"purpur-search-field\";\n\nexport const SearchFieldBase = forwardRef<HTMLInputElement, SearchFieldBaseInternalProps>(\n (\n {\n [\"data-testid\"]: dataTestId,\n className,\n clearButtonAriaLabel,\n disabled,\n submitBehavior = \"form\",\n iconOnlySearchButton,\n onClear,\n onSearch,\n searchButtonLabel,\n variant,\n formRef,\n wrapperStyle,\n ...props\n },\n ref\n ) => {\n const getTestId = (name: string) => (dataTestId ? `${dataTestId}-${name}` : undefined);\n const hasValue =\n typeof props.value === \"number\" ? props.value !== undefined : props.value?.length;\n const hasClearButton = hasValue && !disabled && !props.readOnly && !props.loading;\n const isManualSubmit = submitBehavior === \"manual\";\n\n const classes = cx(className, rootClassName, {\n [`${rootClassName}--no-gap`]: variant === \"button-attached\",\n [`${rootClassName}--has-clear-button`]: hasClearButton,\n });\n\n const textFieldProps: TextFieldProps = {\n ref,\n className: classes,\n clearButtonAriaLabel,\n disabled,\n onClear,\n startAdornment: !iconOnlySearchButton ? (\n <IconSearch size=\"xs\" className={cx(`${rootClassName}__search-icon`)} key=\"1\" />\n ) : null,\n \"data-testid\": getTestId(\"text-field\"),\n type: \"search\" as const,\n ...props,\n };\n\n const searchButton =\n variant !== \"no-button\" ? (\n <SearchFieldButton\n type={isManualSubmit ? \"button\" : \"submit\"}\n onClick={isManualSubmit ? (event) => onSearch?.(event) : undefined}\n disabled={disabled}\n iconOnly={iconOnlySearchButton}\n label={searchButtonLabel}\n data-testid={getTestId(\"button\")}\n />\n ) : null;\n\n if (isManualSubmit) {\n const handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n props.onKeyDown?.(event);\n\n if (event.key === \"Enter\" && !event.defaultPrevented) {\n event.preventDefault();\n onSearch?.(event);\n }\n };\n\n return (\n <div\n className={cx(`${rootClassName}__wrapper`)}\n data-testid={dataTestId}\n style={wrapperStyle}\n >\n <TextField {...textFieldProps} onKeyDown={handleKeyDown} afterField={searchButton} />\n </div>\n );\n }\n\n return (\n <form\n ref={formRef}\n className={cx(`${rootClassName}__wrapper`)}\n data-testid={dataTestId}\n style={wrapperStyle}\n onSubmit={(e: FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n onSearch?.(e);\n }}\n >\n <TextField {...textFieldProps} afterField={searchButton} />\n </form>\n );\n }\n);\n\nSearchFieldBase.displayName = \"SearchFieldBase\";\n","import React, { forwardRef, useId } from \"react\";\nimport { Listbox } from \"@purpur/listbox\";\nimport { type AutocompleteOption, useAutocomplete } from \"@purpur/use-autocomplete\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./search-field.module.scss\";\nimport {\n type SearchFieldAutocompleteEnhancements,\n SearchFieldBase,\n type SearchFieldBaseProps,\n} from \"./search-field-base\";\n\nconst cx = c.bind(styles);\nconst rootClassName = \"purpur-search-field\";\n\nexport type SearchFieldAutocompleteProps = SearchFieldBaseProps &\n Extract<SearchFieldAutocompleteEnhancements, { suggestions: AutocompleteOption[] }>;\n\nexport const SearchFieldAutocomplete = forwardRef<HTMLInputElement, SearchFieldAutocompleteProps>(\n (\n {\n suggestions,\n suggestionsLabel,\n onSelectSuggestion,\n openSuggestionsOnFocus,\n suggestionsMaxHeight,\n ...searchFieldProps\n },\n ref\n ) => {\n const randomId = useId();\n const inputId = (searchFieldProps.id as string | undefined) ?? randomId;\n\n const autocomplete = useAutocomplete({\n id: inputId,\n options: suggestions,\n listboxLabel: suggestionsLabel,\n disabled: searchFieldProps.disabled,\n readOnly: searchFieldProps.readOnly,\n openOnFocus: openSuggestionsOnFocus,\n listboxMaxHeight: suggestionsMaxHeight,\n onSelect: onSelectSuggestion,\n [\"data-testid\"]: searchFieldProps[\"data-testid\"],\n });\n\n const setInputRef = (node: HTMLInputElement | null) => {\n (autocomplete.inputRef as React.MutableRefObject<HTMLInputElement | null>).current = node;\n if (typeof ref === \"function\") ref(node);\n else if (ref) (ref as React.MutableRefObject<HTMLInputElement | null>).current = node;\n };\n\n const handleInputChange: React.ChangeEventHandler<HTMLInputElement> = (event) => {\n searchFieldProps.onChange?.(event);\n if (!autocomplete.isOpen) {\n autocomplete.openListbox();\n }\n };\n\n return (\n <div\n ref={autocomplete.rootRef as React.RefObject<HTMLDivElement>}\n className={cx(`${rootClassName}__autocomplete-root`)}\n >\n <SearchFieldBase\n ref={setInputRef}\n {...searchFieldProps}\n onChange={handleInputChange}\n id={inputId}\n wrapperStyle={autocomplete.anchorStyle}\n {...autocomplete.inputProps}\n />\n {autocomplete.isOpen && (\n <Listbox {...autocomplete.listboxProps} className={cx(`${rootClassName}__listbox`)}>\n {suggestions.map((option, index) => {\n const { key, ...listboxItemProps } = autocomplete.getListboxItemProps(option, index);\n\n return (\n <Listbox.Item key={key} {...listboxItemProps}>\n {option.label}\n </Listbox.Item>\n );\n })}\n </Listbox>\n )}\n </div>\n );\n }\n);\n\nSearchFieldAutocomplete.displayName = \"SearchFieldAutocomplete\";\n","import React, { forwardRef } from \"react\";\n\nimport { SearchFieldAutocomplete } from \"./search-field-autocomplete\";\nimport {\n type SearchFieldAutocompleteEnhancements,\n SearchFieldBase,\n type SearchFieldBaseProps,\n searchFieldVariants,\n} from \"./search-field-base\";\n\nexport { searchFieldVariants };\n\nexport type SearchFieldProps = SearchFieldBaseProps & SearchFieldAutocompleteEnhancements;\n\nexport const SearchField = forwardRef<HTMLInputElement, SearchFieldProps>((props, ref) => {\n if (props.suggestions) {\n return <SearchFieldAutocomplete ref={ref} {...props} />;\n }\n\n return <SearchFieldBase ref={ref} {...props} />;\n});\n\nSearchField.displayName = \"SearchField\";\n\nexport {\n SearchFieldAutocomplete,\n type SearchFieldAutocompleteProps,\n} from \"./search-field-autocomplete\";\n"],"names":["cx","c","styles","rootClassName","SearchFieldButton","dataTestid","disabled","iconOnly","label","type","onClick","buttonProps","Button","IconSearch","jsx","searchFieldVariants","SearchFieldBase","forwardRef","dataTestId","className","clearButtonAriaLabel","submitBehavior","iconOnlySearchButton","onClear","onSearch","searchButtonLabel","variant","formRef","wrapperStyle","props","ref","getTestId","name","hasClearButton","isManualSubmit","classes","textFieldProps","searchButton","event","handleKeyDown","TextField","e","SearchFieldAutocomplete","suggestions","suggestionsLabel","onSelectSuggestion","openSuggestionsOnFocus","suggestionsMaxHeight","searchFieldProps","randomId","useId","inputId","autocomplete","useAutocomplete","setInputRef","node","handleInputChange","jsxs","Listbox","option","index","key","listboxItemProps","SearchField"],"mappings":"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"}
1
+ {"version":3,"file":"search-field-BMC3WG2H.mjs","sources":["../../../components/search-field/src/search-field-button.tsx","../../../components/search-field/src/search-field-base.tsx","../../../components/search-field/src/search-field-autocomplete.tsx","../../../components/search-field/src/search-field.tsx"],"sourcesContent":["import React from \"react\";\nimport { Button } from \"@purpur/button\";\nimport { IconSearch } from \"@purpur/icon/search\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./search-field-button.module.scss\";\n\ntype Props = {\n [\"data-testid\"]?: string;\n disabled?: boolean;\n iconOnly?: boolean;\n label: string;\n type?: \"submit\" | \"button\";\n onClick?: (event: React.MouseEvent<HTMLButtonElement>) => void;\n};\n\nconst cx = c.bind(styles);\nconst rootClassName = \"purpur-search-field-button\";\n\nexport const SearchFieldButton = ({\n [\"data-testid\"]: dataTestid,\n disabled,\n iconOnly,\n label,\n type = \"submit\",\n onClick,\n}: Props) => {\n const buttonProps = {\n className: cx(rootClassName, {\n [`${rootClassName}--icon-only`]: iconOnly,\n }),\n disabled,\n [\"data-testid\"]: dataTestid,\n onClick,\n };\n\n if (iconOnly) {\n return (\n <Button {...buttonProps} aria-label={label} iconOnly size=\"sm\" type={type} variant=\"primary\">\n <IconSearch size=\"xs\" />\n </Button>\n );\n }\n\n return (\n <Button {...buttonProps} size=\"sm\" type={type} variant=\"primary\">\n {label}\n </Button>\n );\n};\n","import React, {\n type ChangeEvent,\n type CSSProperties,\n type FormEvent,\n forwardRef,\n type RefObject,\n} from \"react\";\nimport { IconSearch } from \"@purpur/icon/search\";\nimport { TextField, type TextFieldProps } from \"@purpur/text-field\";\nimport { type AutocompleteOption } from \"@purpur/use-autocomplete\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./search-field.module.scss\";\nimport { SearchFieldButton } from \"./search-field-button\";\n\nexport const searchFieldVariants = [\"button-attached\", \"no-button\"] as const;\n\ntype Variant = (typeof searchFieldVariants)[number];\n\ntype DefaultProps = {\n [\"data-testid\"]?: string;\n /**\n * An accessible label for the clear button.\n * */\n clearButtonAriaLabel: string;\n /**\n * Disables both the input field and submit button if `true`.\n * */\n disabled?: boolean;\n /**\n * Will display only a search icon in the search button if `true`.\n * */\n iconOnlySearchButton?: boolean;\n /**\n * Event handler called when the value of the search field changes.\n * */\n onChange?: (e: ChangeEvent<HTMLInputElement>) => void;\n /**\n * Event handler called when the clear button is clicked.\n * */\n onClear: () => void;\n /**\n * Event handler called when the search is triggered.\n * */\n onSearch?: (event?: React.SyntheticEvent) => void;\n /**\n * Controls how the search field handles submission.\n * - `\"form\"` (default): Renders a `<form>` element and submits via form submission.\n * - `\"manual\"`: Renders a `<div>` instead of a `<form>` element.\n * Use this when the component is nested inside another form.\n * */\n submitBehavior?: \"form\" | \"manual\";\n /**\n * The label text (or `aria-label` if `iconOnlySearchButton` is `true`) of the search button.\n * */\n searchButtonLabel?: string;\n variant: Variant;\n formRef?: RefObject<HTMLFormElement>;\n};\n\ntype TextSearchButton = {\n iconOnlySearchButton?: false;\n searchButtonLabel: string;\n variant: \"button-attached\";\n};\n\ntype IconOnlySearchButton = {\n iconOnlySearchButton: true;\n searchButtonLabel: string;\n variant: \"button-attached\";\n};\n\ntype NoButton = {\n searchButtonLabel?: never;\n variant: \"no-button\";\n};\n\nexport type SearchFieldBaseProps = DefaultProps &\n (TextSearchButton | IconOnlySearchButton | NoButton) &\n Omit<TextFieldProps, \"startAdornment\" | \"endAdornment\" | \"afterField\" | \"onChange\" | \"variant\">;\n\ntype SearchFieldBaseInternalProps = SearchFieldBaseProps & {\n wrapperStyle?: CSSProperties;\n};\n\ntype SearchFieldAutocompleteSharedProps = {\n /**\n * Called when the user selects a suggestion.\n */\n onSelectSuggestion?: (option: AutocompleteOption) => void;\n /**\n * Open the suggestions listbox when the input receives focus.\n */\n openSuggestionsOnFocus?: boolean;\n /**\n * Maximum height of the suggestions listbox. A number is interpreted as px.\n */\n suggestionsMaxHeight?: string | number;\n};\n\ntype SearchFieldWithoutAutocomplete = SearchFieldAutocompleteSharedProps & {\n suggestions?: never;\n suggestionsLabel?: never;\n};\n\ntype SearchFieldWithAutocomplete = SearchFieldAutocompleteSharedProps & {\n /**\n * The list of suggestions to display in a listbox below the field.\n * No filtering is applied — pass the already-correct (pre-filtered) list.\n * If autocomplete should stay enabled while there are temporarily no matches,\n * pass an empty array instead of `undefined` or `null`. Changing this prop\n * from an absent value to an array switches between the regular and\n * autocomplete variants, which causes a re-render, drops input focus, and\n * hides the listbox.\n */\n suggestions: AutocompleteOption[];\n /**\n * Accessible label for the suggestions listbox.\n */\n suggestionsLabel: string;\n};\n\nexport type SearchFieldAutocompleteEnhancements =\n | SearchFieldWithoutAutocomplete\n | SearchFieldWithAutocomplete;\n\nconst cx = c.bind(styles);\nconst rootClassName = \"purpur-search-field\";\n\nexport const SearchFieldBase = forwardRef<HTMLInputElement, SearchFieldBaseInternalProps>(\n (\n {\n [\"data-testid\"]: dataTestId,\n className,\n clearButtonAriaLabel,\n disabled,\n submitBehavior = \"form\",\n iconOnlySearchButton,\n onClear,\n onSearch,\n searchButtonLabel,\n variant,\n formRef,\n wrapperStyle,\n ...props\n },\n ref\n ) => {\n const getTestId = (name: string) => (dataTestId ? `${dataTestId}-${name}` : undefined);\n const hasValue =\n typeof props.value === \"number\" ? props.value !== undefined : props.value?.length;\n const hasClearButton = hasValue && !disabled && !props.readOnly && !props.loading;\n const isManualSubmit = submitBehavior === \"manual\";\n\n const classes = cx(className, rootClassName, {\n [`${rootClassName}--no-gap`]: variant === \"button-attached\",\n [`${rootClassName}--has-clear-button`]: hasClearButton,\n });\n\n const textFieldProps: TextFieldProps = {\n ref,\n className: classes,\n clearButtonAriaLabel,\n disabled,\n onClear,\n startAdornment: !iconOnlySearchButton ? (\n <IconSearch size=\"xs\" className={cx(`${rootClassName}__search-icon`)} key=\"1\" />\n ) : null,\n \"data-testid\": getTestId(\"text-field\"),\n type: \"search\" as const,\n ...props,\n };\n\n const searchButton =\n variant !== \"no-button\" ? (\n <SearchFieldButton\n type={isManualSubmit ? \"button\" : \"submit\"}\n onClick={isManualSubmit ? (event) => onSearch?.(event) : undefined}\n disabled={disabled}\n iconOnly={iconOnlySearchButton}\n label={searchButtonLabel}\n data-testid={getTestId(\"button\")}\n />\n ) : null;\n\n if (isManualSubmit) {\n const handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n props.onKeyDown?.(event);\n\n if (event.key === \"Enter\" && !event.defaultPrevented) {\n event.preventDefault();\n onSearch?.(event);\n }\n };\n\n return (\n <div\n className={cx(`${rootClassName}__wrapper`)}\n data-testid={dataTestId}\n style={wrapperStyle}\n >\n <TextField {...textFieldProps} onKeyDown={handleKeyDown} afterField={searchButton} />\n </div>\n );\n }\n\n return (\n <form\n ref={formRef}\n className={cx(`${rootClassName}__wrapper`)}\n data-testid={dataTestId}\n style={wrapperStyle}\n onSubmit={(e: FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n onSearch?.(e);\n }}\n >\n <TextField {...textFieldProps} afterField={searchButton} />\n </form>\n );\n }\n);\n\nSearchFieldBase.displayName = \"SearchFieldBase\";\n","import React, { forwardRef, useId } from \"react\";\nimport { Listbox } from \"@purpur/listbox\";\nimport { type AutocompleteOption, useAutocomplete } from \"@purpur/use-autocomplete\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./search-field.module.scss\";\nimport {\n type SearchFieldAutocompleteEnhancements,\n SearchFieldBase,\n type SearchFieldBaseProps,\n} from \"./search-field-base\";\n\nconst cx = c.bind(styles);\nconst rootClassName = \"purpur-search-field\";\n\nexport type SearchFieldAutocompleteProps = SearchFieldBaseProps &\n Extract<SearchFieldAutocompleteEnhancements, { suggestions: AutocompleteOption[] }>;\n\nexport const SearchFieldAutocomplete = forwardRef<HTMLInputElement, SearchFieldAutocompleteProps>(\n (\n {\n suggestions,\n suggestionsLabel,\n onSelectSuggestion,\n openSuggestionsOnFocus,\n suggestionsMaxHeight,\n ...searchFieldProps\n },\n ref\n ) => {\n const randomId = useId();\n const inputId = (searchFieldProps.id as string | undefined) ?? randomId;\n\n const autocomplete = useAutocomplete({\n id: inputId,\n options: suggestions,\n listboxLabel: suggestionsLabel,\n disabled: searchFieldProps.disabled,\n readOnly: searchFieldProps.readOnly,\n openOnFocus: openSuggestionsOnFocus,\n listboxMaxHeight: suggestionsMaxHeight,\n onSelect: onSelectSuggestion,\n [\"data-testid\"]: searchFieldProps[\"data-testid\"],\n });\n\n const setInputRef = (node: HTMLInputElement | null) => {\n (autocomplete.inputRef as React.MutableRefObject<HTMLInputElement | null>).current = node;\n if (typeof ref === \"function\") ref(node);\n else if (ref) (ref as React.MutableRefObject<HTMLInputElement | null>).current = node;\n };\n\n const handleInputChange: React.ChangeEventHandler<HTMLInputElement> = (event) => {\n searchFieldProps.onChange?.(event);\n if (!autocomplete.isOpen) {\n autocomplete.openListbox();\n }\n };\n\n return (\n <div\n ref={autocomplete.rootRef as React.RefObject<HTMLDivElement>}\n className={cx(`${rootClassName}__autocomplete-root`)}\n >\n <SearchFieldBase\n ref={setInputRef}\n {...searchFieldProps}\n onChange={handleInputChange}\n id={inputId}\n wrapperStyle={autocomplete.anchorStyle}\n {...autocomplete.inputProps}\n />\n {autocomplete.isOpen && (\n <Listbox {...autocomplete.listboxProps} className={cx(`${rootClassName}__listbox`)}>\n {suggestions.map((option, index) => {\n const { key, ...listboxItemProps } = autocomplete.getListboxItemProps(option, index);\n\n return (\n <Listbox.Item key={key} {...listboxItemProps}>\n {option.label}\n </Listbox.Item>\n );\n })}\n </Listbox>\n )}\n </div>\n );\n }\n);\n\nSearchFieldAutocomplete.displayName = \"SearchFieldAutocomplete\";\n","import React, { forwardRef } from \"react\";\n\nimport { SearchFieldAutocomplete } from \"./search-field-autocomplete\";\nimport {\n type SearchFieldAutocompleteEnhancements,\n SearchFieldBase,\n type SearchFieldBaseProps,\n searchFieldVariants,\n} from \"./search-field-base\";\n\nexport { searchFieldVariants };\n\nexport type SearchFieldProps = SearchFieldBaseProps & SearchFieldAutocompleteEnhancements;\n\nexport const SearchField = forwardRef<HTMLInputElement, SearchFieldProps>((props, ref) => {\n if (props.suggestions) {\n return <SearchFieldAutocomplete ref={ref} {...props} />;\n }\n\n return <SearchFieldBase ref={ref} {...props} />;\n});\n\nSearchField.displayName = \"SearchField\";\n\nexport {\n SearchFieldAutocomplete,\n type SearchFieldAutocompleteProps,\n} from \"./search-field-autocomplete\";\n"],"names":["cx","c","styles","rootClassName","SearchFieldButton","dataTestid","disabled","iconOnly","label","type","onClick","buttonProps","Button","IconSearch","jsx","searchFieldVariants","SearchFieldBase","forwardRef","dataTestId","className","clearButtonAriaLabel","submitBehavior","iconOnlySearchButton","onClear","onSearch","searchButtonLabel","variant","formRef","wrapperStyle","props","ref","getTestId","name","hasClearButton","isManualSubmit","classes","textFieldProps","searchButton","event","handleKeyDown","TextField","e","SearchFieldAutocomplete","suggestions","suggestionsLabel","onSelectSuggestion","openSuggestionsOnFocus","suggestionsMaxHeight","searchFieldProps","randomId","useId","inputId","autocomplete","useAutocomplete","setInputRef","node","handleInputChange","jsxs","Listbox","option","index","key","listboxItemProps","SearchField"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";const t=require("react/jsx-runtime"),x=require("react"),v=require("./listbox-lXO21cJV.js"),k=require("./use-autocomplete.es-BwAzMcau.js"),$=require("./bind-DeUYJ6m9.js"),A=require("./search.es-Cg2amJSR.js"),C=require("./text-field-C2W13n15.js"),R=require("./button-DmybVApa.js"),D={"purpur-search-field":"_purpur-search-field_1wc77_1","purpur-search-field--has-clear-button":"_purpur-search-field--has-clear-button_1wc77_4","purpur-search-field--no-gap":"_purpur-search-field--no-gap_1wc77_13","purpur-search-field__wrapper":"_purpur-search-field__wrapper_1wc77_17","purpur-search-field__wrapper--gap":"_purpur-search-field__wrapper--gap_1wc77_20","purpur-search-field__search-icon":"_purpur-search-field__search-icon_1wc77_24","purpur-search-field__close-icon":"_purpur-search-field__close-icon_1wc77_24","purpur-search-field__autocomplete-root":"_purpur-search-field__autocomplete-root_1wc77_27","purpur-search-field__listbox":"_purpur-search-field__listbox_1wc77_31"},K={"purpur-search-field-button":"_purpur-search-field-button_c16yo_1","purpur-search-field-button--icon-only":"_purpur-search-field-button--icon-only_c16yo_1"},M=$.c.bind(K),B="purpur-search-field-button",P=({["data-testid"]:r,disabled:c,iconOnly:u,label:n,type:l="submit",onClick:a})=>{const o={className:M(B,{[`${B}--icon-only`]:u}),disabled:c,"data-testid":r,onClick:a};return u?t.jsx(R.Button,{...o,"aria-label":n,iconOnly:!0,size:"sm",type:l,variant:"primary",children:t.jsx(A.s,{size:"xs"})}):t.jsx(R.Button,{...o,size:"sm",type:l,variant:"primary",children:n})},E=["button-attached","no-button"],m=$.c.bind(D),d="purpur-search-field",g=x.forwardRef(({["data-testid"]:r,className:c,clearButtonAriaLabel:u,disabled:n,submitBehavior:l="form",iconOnlySearchButton:a,onClear:o,onSearch:p,searchButtonLabel:h,variant:s,formRef:y,wrapperStyle:f,...e},w)=>{const b=i=>r?`${r}-${i}`:void 0,z=(typeof e.value=="number"?e.value!==void 0:e.value?.length)&&!n&&!e.readOnly&&!e.loading,j=l==="manual",V=m(c,d,{[`${d}--no-gap`]:s==="button-attached",[`${d}--has-clear-button`]:z}),S={ref:w,className:V,clearButtonAriaLabel:u,disabled:n,onClear:o,startAdornment:a?null:t.jsx(A.s,{size:"xs",className:m(`${d}__search-icon`)},"1"),"data-testid":b("text-field"),type:"search",...e},q=s!=="no-button"?t.jsx(P,{type:j?"button":"submit",onClick:j?i=>p?.(i):void 0,disabled:n,iconOnly:a,label:h,"data-testid":b("button")}):null;if(j){const i=_=>{e.onKeyDown?.(_),_.key==="Enter"&&!_.defaultPrevented&&(_.preventDefault(),p?.(_))};return t.jsx("div",{className:m(`${d}__wrapper`),"data-testid":r,style:f,children:t.jsx(C.TextField,{...S,onKeyDown:i,afterField:q})})}return t.jsx("form",{ref:y,className:m(`${d}__wrapper`),"data-testid":r,style:f,onSubmit:i=>{i.preventDefault(),p?.(i)},children:t.jsx(C.TextField,{...S,afterField:q})})});g.displayName="SearchFieldBase";const I=$.c.bind(D),O="purpur-search-field",F=x.forwardRef(({suggestions:r,suggestionsLabel:c,onSelectSuggestion:u,openSuggestionsOnFocus:n,suggestionsMaxHeight:l,...a},o)=>{const p=x.useId(),h=a.id??p,s=k.te({id:h,options:r,listboxLabel:c,disabled:a.disabled,readOnly:a.readOnly,openOnFocus:n,listboxMaxHeight:l,onSelect:u,"data-testid":a["data-testid"]}),y=e=>{s.inputRef.current=e,typeof o=="function"?o(e):o&&(o.current=e)},f=e=>{a.onChange?.(e),s.isOpen||s.openListbox()};return t.jsxs("div",{ref:s.rootRef,className:I(`${O}__autocomplete-root`),children:[t.jsx(g,{ref:y,...a,onChange:f,id:h,wrapperStyle:s.anchorStyle,...s.inputProps}),s.isOpen&&t.jsx(v.Listbox,{...s.listboxProps,className:I(`${O}__listbox`),children:r.map((e,w)=>{const{key:b,...N}=s.getListboxItemProps(e,w);return t.jsx(v.Listbox.Item,{...N,children:e.label},b)})})]})});F.displayName="SearchFieldAutocomplete";const L=x.forwardRef((r,c)=>r.suggestions?t.jsx(F,{ref:c,...r}):t.jsx(g,{ref:c,...r}));L.displayName="SearchField";exports.SearchField=L;exports.SearchFieldAutocomplete=F;exports.searchFieldVariants=E;
2
- //# sourceMappingURL=search-field-Dx4qCcrh.js.map
1
+ "use strict";const t=require("react/jsx-runtime"),x=require("react"),v=require("./listbox-lXO21cJV.js"),k=require("./use-autocomplete.es-BwAzMcau.js"),$=require("./bind-DeUYJ6m9.js"),A=require("./search.es-Cg2amJSR.js"),C=require("./text-field-CthxpKsp.js"),R=require("./button-DmybVApa.js"),D={"purpur-search-field":"_purpur-search-field_1wc77_1","purpur-search-field--has-clear-button":"_purpur-search-field--has-clear-button_1wc77_4","purpur-search-field--no-gap":"_purpur-search-field--no-gap_1wc77_13","purpur-search-field__wrapper":"_purpur-search-field__wrapper_1wc77_17","purpur-search-field__wrapper--gap":"_purpur-search-field__wrapper--gap_1wc77_20","purpur-search-field__search-icon":"_purpur-search-field__search-icon_1wc77_24","purpur-search-field__close-icon":"_purpur-search-field__close-icon_1wc77_24","purpur-search-field__autocomplete-root":"_purpur-search-field__autocomplete-root_1wc77_27","purpur-search-field__listbox":"_purpur-search-field__listbox_1wc77_31"},K={"purpur-search-field-button":"_purpur-search-field-button_c16yo_1","purpur-search-field-button--icon-only":"_purpur-search-field-button--icon-only_c16yo_1"},M=$.c.bind(K),B="purpur-search-field-button",P=({["data-testid"]:r,disabled:c,iconOnly:u,label:n,type:l="submit",onClick:a})=>{const o={className:M(B,{[`${B}--icon-only`]:u}),disabled:c,"data-testid":r,onClick:a};return u?t.jsx(R.Button,{...o,"aria-label":n,iconOnly:!0,size:"sm",type:l,variant:"primary",children:t.jsx(A.s,{size:"xs"})}):t.jsx(R.Button,{...o,size:"sm",type:l,variant:"primary",children:n})},E=["button-attached","no-button"],m=$.c.bind(D),d="purpur-search-field",g=x.forwardRef(({["data-testid"]:r,className:c,clearButtonAriaLabel:u,disabled:n,submitBehavior:l="form",iconOnlySearchButton:a,onClear:o,onSearch:p,searchButtonLabel:h,variant:s,formRef:y,wrapperStyle:f,...e},w)=>{const b=i=>r?`${r}-${i}`:void 0,z=(typeof e.value=="number"?e.value!==void 0:e.value?.length)&&!n&&!e.readOnly&&!e.loading,j=l==="manual",V=m(c,d,{[`${d}--no-gap`]:s==="button-attached",[`${d}--has-clear-button`]:z}),S={ref:w,className:V,clearButtonAriaLabel:u,disabled:n,onClear:o,startAdornment:a?null:t.jsx(A.s,{size:"xs",className:m(`${d}__search-icon`)},"1"),"data-testid":b("text-field"),type:"search",...e},q=s!=="no-button"?t.jsx(P,{type:j?"button":"submit",onClick:j?i=>p?.(i):void 0,disabled:n,iconOnly:a,label:h,"data-testid":b("button")}):null;if(j){const i=_=>{e.onKeyDown?.(_),_.key==="Enter"&&!_.defaultPrevented&&(_.preventDefault(),p?.(_))};return t.jsx("div",{className:m(`${d}__wrapper`),"data-testid":r,style:f,children:t.jsx(C.TextField,{...S,onKeyDown:i,afterField:q})})}return t.jsx("form",{ref:y,className:m(`${d}__wrapper`),"data-testid":r,style:f,onSubmit:i=>{i.preventDefault(),p?.(i)},children:t.jsx(C.TextField,{...S,afterField:q})})});g.displayName="SearchFieldBase";const I=$.c.bind(D),O="purpur-search-field",F=x.forwardRef(({suggestions:r,suggestionsLabel:c,onSelectSuggestion:u,openSuggestionsOnFocus:n,suggestionsMaxHeight:l,...a},o)=>{const p=x.useId(),h=a.id??p,s=k.te({id:h,options:r,listboxLabel:c,disabled:a.disabled,readOnly:a.readOnly,openOnFocus:n,listboxMaxHeight:l,onSelect:u,"data-testid":a["data-testid"]}),y=e=>{s.inputRef.current=e,typeof o=="function"?o(e):o&&(o.current=e)},f=e=>{a.onChange?.(e),s.isOpen||s.openListbox()};return t.jsxs("div",{ref:s.rootRef,className:I(`${O}__autocomplete-root`),children:[t.jsx(g,{ref:y,...a,onChange:f,id:h,wrapperStyle:s.anchorStyle,...s.inputProps}),s.isOpen&&t.jsx(v.Listbox,{...s.listboxProps,className:I(`${O}__listbox`),children:r.map((e,w)=>{const{key:b,...N}=s.getListboxItemProps(e,w);return t.jsx(v.Listbox.Item,{...N,children:e.label},b)})})]})});F.displayName="SearchFieldAutocomplete";const L=x.forwardRef((r,c)=>r.suggestions?t.jsx(F,{ref:c,...r}):t.jsx(g,{ref:c,...r}));L.displayName="SearchField";exports.SearchField=L;exports.SearchFieldAutocomplete=F;exports.searchFieldVariants=E;
2
+ //# sourceMappingURL=search-field-b1_QCs3U.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"search-field-Dx4qCcrh.js","sources":["../../../components/search-field/src/search-field-button.tsx","../../../components/search-field/src/search-field-base.tsx","../../../components/search-field/src/search-field-autocomplete.tsx","../../../components/search-field/src/search-field.tsx"],"sourcesContent":["import React from \"react\";\nimport { Button } from \"@purpur/button\";\nimport { IconSearch } from \"@purpur/icon/search\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./search-field-button.module.scss\";\n\ntype Props = {\n [\"data-testid\"]?: string;\n disabled?: boolean;\n iconOnly?: boolean;\n label: string;\n type?: \"submit\" | \"button\";\n onClick?: (event: React.MouseEvent<HTMLButtonElement>) => void;\n};\n\nconst cx = c.bind(styles);\nconst rootClassName = \"purpur-search-field-button\";\n\nexport const SearchFieldButton = ({\n [\"data-testid\"]: dataTestid,\n disabled,\n iconOnly,\n label,\n type = \"submit\",\n onClick,\n}: Props) => {\n const buttonProps = {\n className: cx(rootClassName, {\n [`${rootClassName}--icon-only`]: iconOnly,\n }),\n disabled,\n [\"data-testid\"]: dataTestid,\n onClick,\n };\n\n if (iconOnly) {\n return (\n <Button {...buttonProps} aria-label={label} iconOnly size=\"sm\" type={type} variant=\"primary\">\n <IconSearch size=\"xs\" />\n </Button>\n );\n }\n\n return (\n <Button {...buttonProps} size=\"sm\" type={type} variant=\"primary\">\n {label}\n </Button>\n );\n};\n","import React, {\n type ChangeEvent,\n type CSSProperties,\n type FormEvent,\n forwardRef,\n type RefObject,\n} from \"react\";\nimport { IconSearch } from \"@purpur/icon/search\";\nimport { TextField, type TextFieldProps } from \"@purpur/text-field\";\nimport { type AutocompleteOption } from \"@purpur/use-autocomplete\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./search-field.module.scss\";\nimport { SearchFieldButton } from \"./search-field-button\";\n\nexport const searchFieldVariants = [\"button-attached\", \"no-button\"] as const;\n\ntype Variant = (typeof searchFieldVariants)[number];\n\ntype DefaultProps = {\n [\"data-testid\"]?: string;\n /**\n * An accessible label for the clear button.\n * */\n clearButtonAriaLabel: string;\n /**\n * Disables both the input field and submit button if `true`.\n * */\n disabled?: boolean;\n /**\n * Will display only a search icon in the search button if `true`.\n * */\n iconOnlySearchButton?: boolean;\n /**\n * Event handler called when the value of the search field changes.\n * */\n onChange?: (e: ChangeEvent<HTMLInputElement>) => void;\n /**\n * Event handler called when the clear button is clicked.\n * */\n onClear: () => void;\n /**\n * Event handler called when the search is triggered.\n * */\n onSearch?: (event?: React.SyntheticEvent) => void;\n /**\n * Controls how the search field handles submission.\n * - `\"form\"` (default): Renders a `<form>` element and submits via form submission.\n * - `\"manual\"`: Renders a `<div>` instead of a `<form>` element.\n * Use this when the component is nested inside another form.\n * */\n submitBehavior?: \"form\" | \"manual\";\n /**\n * The label text (or `aria-label` if `iconOnlySearchButton` is `true`) of the search button.\n * */\n searchButtonLabel?: string;\n variant: Variant;\n formRef?: RefObject<HTMLFormElement>;\n};\n\ntype TextSearchButton = {\n iconOnlySearchButton?: false;\n searchButtonLabel: string;\n variant: \"button-attached\";\n};\n\ntype IconOnlySearchButton = {\n iconOnlySearchButton: true;\n searchButtonLabel: string;\n variant: \"button-attached\";\n};\n\ntype NoButton = {\n searchButtonLabel?: never;\n variant: \"no-button\";\n};\n\nexport type SearchFieldBaseProps = DefaultProps &\n (TextSearchButton | IconOnlySearchButton | NoButton) &\n Omit<TextFieldProps, \"startAdornment\" | \"endAdornment\" | \"afterField\" | \"onChange\" | \"variant\">;\n\ntype SearchFieldBaseInternalProps = SearchFieldBaseProps & {\n wrapperStyle?: CSSProperties;\n};\n\ntype SearchFieldAutocompleteSharedProps = {\n /**\n * Called when the user selects a suggestion.\n */\n onSelectSuggestion?: (option: AutocompleteOption) => void;\n /**\n * Open the suggestions listbox when the input receives focus.\n */\n openSuggestionsOnFocus?: boolean;\n /**\n * Maximum height of the suggestions listbox. A number is interpreted as px.\n */\n suggestionsMaxHeight?: string | number;\n};\n\ntype SearchFieldWithoutAutocomplete = SearchFieldAutocompleteSharedProps & {\n suggestions?: never;\n suggestionsLabel?: never;\n};\n\ntype SearchFieldWithAutocomplete = SearchFieldAutocompleteSharedProps & {\n /**\n * The list of suggestions to display in a listbox below the field.\n * No filtering is applied — pass the already-correct (pre-filtered) list.\n * If autocomplete should stay enabled while there are temporarily no matches,\n * pass an empty array instead of `undefined` or `null`. Changing this prop\n * from an absent value to an array switches between the regular and\n * autocomplete variants, which causes a re-render, drops input focus, and\n * hides the listbox.\n */\n suggestions: AutocompleteOption[];\n /**\n * Accessible label for the suggestions listbox.\n */\n suggestionsLabel: string;\n};\n\nexport type SearchFieldAutocompleteEnhancements =\n | SearchFieldWithoutAutocomplete\n | SearchFieldWithAutocomplete;\n\nconst cx = c.bind(styles);\nconst rootClassName = \"purpur-search-field\";\n\nexport const SearchFieldBase = forwardRef<HTMLInputElement, SearchFieldBaseInternalProps>(\n (\n {\n [\"data-testid\"]: dataTestId,\n className,\n clearButtonAriaLabel,\n disabled,\n submitBehavior = \"form\",\n iconOnlySearchButton,\n onClear,\n onSearch,\n searchButtonLabel,\n variant,\n formRef,\n wrapperStyle,\n ...props\n },\n ref\n ) => {\n const getTestId = (name: string) => (dataTestId ? `${dataTestId}-${name}` : undefined);\n const hasValue =\n typeof props.value === \"number\" ? props.value !== undefined : props.value?.length;\n const hasClearButton = hasValue && !disabled && !props.readOnly && !props.loading;\n const isManualSubmit = submitBehavior === \"manual\";\n\n const classes = cx(className, rootClassName, {\n [`${rootClassName}--no-gap`]: variant === \"button-attached\",\n [`${rootClassName}--has-clear-button`]: hasClearButton,\n });\n\n const textFieldProps: TextFieldProps = {\n ref,\n className: classes,\n clearButtonAriaLabel,\n disabled,\n onClear,\n startAdornment: !iconOnlySearchButton ? (\n <IconSearch size=\"xs\" className={cx(`${rootClassName}__search-icon`)} key=\"1\" />\n ) : null,\n \"data-testid\": getTestId(\"text-field\"),\n type: \"search\" as const,\n ...props,\n };\n\n const searchButton =\n variant !== \"no-button\" ? (\n <SearchFieldButton\n type={isManualSubmit ? \"button\" : \"submit\"}\n onClick={isManualSubmit ? (event) => onSearch?.(event) : undefined}\n disabled={disabled}\n iconOnly={iconOnlySearchButton}\n label={searchButtonLabel}\n data-testid={getTestId(\"button\")}\n />\n ) : null;\n\n if (isManualSubmit) {\n const handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n props.onKeyDown?.(event);\n\n if (event.key === \"Enter\" && !event.defaultPrevented) {\n event.preventDefault();\n onSearch?.(event);\n }\n };\n\n return (\n <div\n className={cx(`${rootClassName}__wrapper`)}\n data-testid={dataTestId}\n style={wrapperStyle}\n >\n <TextField {...textFieldProps} onKeyDown={handleKeyDown} afterField={searchButton} />\n </div>\n );\n }\n\n return (\n <form\n ref={formRef}\n className={cx(`${rootClassName}__wrapper`)}\n data-testid={dataTestId}\n style={wrapperStyle}\n onSubmit={(e: FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n onSearch?.(e);\n }}\n >\n <TextField {...textFieldProps} afterField={searchButton} />\n </form>\n );\n }\n);\n\nSearchFieldBase.displayName = \"SearchFieldBase\";\n","import React, { forwardRef, useId } from \"react\";\nimport { Listbox } from \"@purpur/listbox\";\nimport { type AutocompleteOption, useAutocomplete } from \"@purpur/use-autocomplete\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./search-field.module.scss\";\nimport {\n type SearchFieldAutocompleteEnhancements,\n SearchFieldBase,\n type SearchFieldBaseProps,\n} from \"./search-field-base\";\n\nconst cx = c.bind(styles);\nconst rootClassName = \"purpur-search-field\";\n\nexport type SearchFieldAutocompleteProps = SearchFieldBaseProps &\n Extract<SearchFieldAutocompleteEnhancements, { suggestions: AutocompleteOption[] }>;\n\nexport const SearchFieldAutocomplete = forwardRef<HTMLInputElement, SearchFieldAutocompleteProps>(\n (\n {\n suggestions,\n suggestionsLabel,\n onSelectSuggestion,\n openSuggestionsOnFocus,\n suggestionsMaxHeight,\n ...searchFieldProps\n },\n ref\n ) => {\n const randomId = useId();\n const inputId = (searchFieldProps.id as string | undefined) ?? randomId;\n\n const autocomplete = useAutocomplete({\n id: inputId,\n options: suggestions,\n listboxLabel: suggestionsLabel,\n disabled: searchFieldProps.disabled,\n readOnly: searchFieldProps.readOnly,\n openOnFocus: openSuggestionsOnFocus,\n listboxMaxHeight: suggestionsMaxHeight,\n onSelect: onSelectSuggestion,\n [\"data-testid\"]: searchFieldProps[\"data-testid\"],\n });\n\n const setInputRef = (node: HTMLInputElement | null) => {\n (autocomplete.inputRef as React.MutableRefObject<HTMLInputElement | null>).current = node;\n if (typeof ref === \"function\") ref(node);\n else if (ref) (ref as React.MutableRefObject<HTMLInputElement | null>).current = node;\n };\n\n const handleInputChange: React.ChangeEventHandler<HTMLInputElement> = (event) => {\n searchFieldProps.onChange?.(event);\n if (!autocomplete.isOpen) {\n autocomplete.openListbox();\n }\n };\n\n return (\n <div\n ref={autocomplete.rootRef as React.RefObject<HTMLDivElement>}\n className={cx(`${rootClassName}__autocomplete-root`)}\n >\n <SearchFieldBase\n ref={setInputRef}\n {...searchFieldProps}\n onChange={handleInputChange}\n id={inputId}\n wrapperStyle={autocomplete.anchorStyle}\n {...autocomplete.inputProps}\n />\n {autocomplete.isOpen && (\n <Listbox {...autocomplete.listboxProps} className={cx(`${rootClassName}__listbox`)}>\n {suggestions.map((option, index) => {\n const { key, ...listboxItemProps } = autocomplete.getListboxItemProps(option, index);\n\n return (\n <Listbox.Item key={key} {...listboxItemProps}>\n {option.label}\n </Listbox.Item>\n );\n })}\n </Listbox>\n )}\n </div>\n );\n }\n);\n\nSearchFieldAutocomplete.displayName = \"SearchFieldAutocomplete\";\n","import React, { forwardRef } from \"react\";\n\nimport { SearchFieldAutocomplete } from \"./search-field-autocomplete\";\nimport {\n type SearchFieldAutocompleteEnhancements,\n SearchFieldBase,\n type SearchFieldBaseProps,\n searchFieldVariants,\n} from \"./search-field-base\";\n\nexport { searchFieldVariants };\n\nexport type SearchFieldProps = SearchFieldBaseProps & SearchFieldAutocompleteEnhancements;\n\nexport const SearchField = forwardRef<HTMLInputElement, SearchFieldProps>((props, ref) => {\n if (props.suggestions) {\n return <SearchFieldAutocomplete ref={ref} {...props} />;\n }\n\n return <SearchFieldBase ref={ref} {...props} />;\n});\n\nSearchField.displayName = \"SearchField\";\n\nexport {\n SearchFieldAutocomplete,\n type SearchFieldAutocompleteProps,\n} from \"./search-field-autocomplete\";\n"],"names":["cx","c","styles","rootClassName","SearchFieldButton","dataTestid","disabled","iconOnly","label","type","onClick","buttonProps","Button","IconSearch","jsx","searchFieldVariants","SearchFieldBase","forwardRef","dataTestId","className","clearButtonAriaLabel","submitBehavior","iconOnlySearchButton","onClear","onSearch","searchButtonLabel","variant","formRef","wrapperStyle","props","ref","getTestId","name","hasClearButton","isManualSubmit","classes","textFieldProps","searchButton","event","handleKeyDown","TextField","e","SearchFieldAutocomplete","suggestions","suggestionsLabel","onSelectSuggestion","openSuggestionsOnFocus","suggestionsMaxHeight","searchFieldProps","randomId","useId","inputId","autocomplete","useAutocomplete","setInputRef","node","handleInputChange","jsxs","Listbox","option","index","key","listboxItemProps","SearchField"],"mappings":"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"}
1
+ {"version":3,"file":"search-field-b1_QCs3U.js","sources":["../../../components/search-field/src/search-field-button.tsx","../../../components/search-field/src/search-field-base.tsx","../../../components/search-field/src/search-field-autocomplete.tsx","../../../components/search-field/src/search-field.tsx"],"sourcesContent":["import React from \"react\";\nimport { Button } from \"@purpur/button\";\nimport { IconSearch } from \"@purpur/icon/search\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./search-field-button.module.scss\";\n\ntype Props = {\n [\"data-testid\"]?: string;\n disabled?: boolean;\n iconOnly?: boolean;\n label: string;\n type?: \"submit\" | \"button\";\n onClick?: (event: React.MouseEvent<HTMLButtonElement>) => void;\n};\n\nconst cx = c.bind(styles);\nconst rootClassName = \"purpur-search-field-button\";\n\nexport const SearchFieldButton = ({\n [\"data-testid\"]: dataTestid,\n disabled,\n iconOnly,\n label,\n type = \"submit\",\n onClick,\n}: Props) => {\n const buttonProps = {\n className: cx(rootClassName, {\n [`${rootClassName}--icon-only`]: iconOnly,\n }),\n disabled,\n [\"data-testid\"]: dataTestid,\n onClick,\n };\n\n if (iconOnly) {\n return (\n <Button {...buttonProps} aria-label={label} iconOnly size=\"sm\" type={type} variant=\"primary\">\n <IconSearch size=\"xs\" />\n </Button>\n );\n }\n\n return (\n <Button {...buttonProps} size=\"sm\" type={type} variant=\"primary\">\n {label}\n </Button>\n );\n};\n","import React, {\n type ChangeEvent,\n type CSSProperties,\n type FormEvent,\n forwardRef,\n type RefObject,\n} from \"react\";\nimport { IconSearch } from \"@purpur/icon/search\";\nimport { TextField, type TextFieldProps } from \"@purpur/text-field\";\nimport { type AutocompleteOption } from \"@purpur/use-autocomplete\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./search-field.module.scss\";\nimport { SearchFieldButton } from \"./search-field-button\";\n\nexport const searchFieldVariants = [\"button-attached\", \"no-button\"] as const;\n\ntype Variant = (typeof searchFieldVariants)[number];\n\ntype DefaultProps = {\n [\"data-testid\"]?: string;\n /**\n * An accessible label for the clear button.\n * */\n clearButtonAriaLabel: string;\n /**\n * Disables both the input field and submit button if `true`.\n * */\n disabled?: boolean;\n /**\n * Will display only a search icon in the search button if `true`.\n * */\n iconOnlySearchButton?: boolean;\n /**\n * Event handler called when the value of the search field changes.\n * */\n onChange?: (e: ChangeEvent<HTMLInputElement>) => void;\n /**\n * Event handler called when the clear button is clicked.\n * */\n onClear: () => void;\n /**\n * Event handler called when the search is triggered.\n * */\n onSearch?: (event?: React.SyntheticEvent) => void;\n /**\n * Controls how the search field handles submission.\n * - `\"form\"` (default): Renders a `<form>` element and submits via form submission.\n * - `\"manual\"`: Renders a `<div>` instead of a `<form>` element.\n * Use this when the component is nested inside another form.\n * */\n submitBehavior?: \"form\" | \"manual\";\n /**\n * The label text (or `aria-label` if `iconOnlySearchButton` is `true`) of the search button.\n * */\n searchButtonLabel?: string;\n variant: Variant;\n formRef?: RefObject<HTMLFormElement>;\n};\n\ntype TextSearchButton = {\n iconOnlySearchButton?: false;\n searchButtonLabel: string;\n variant: \"button-attached\";\n};\n\ntype IconOnlySearchButton = {\n iconOnlySearchButton: true;\n searchButtonLabel: string;\n variant: \"button-attached\";\n};\n\ntype NoButton = {\n searchButtonLabel?: never;\n variant: \"no-button\";\n};\n\nexport type SearchFieldBaseProps = DefaultProps &\n (TextSearchButton | IconOnlySearchButton | NoButton) &\n Omit<TextFieldProps, \"startAdornment\" | \"endAdornment\" | \"afterField\" | \"onChange\" | \"variant\">;\n\ntype SearchFieldBaseInternalProps = SearchFieldBaseProps & {\n wrapperStyle?: CSSProperties;\n};\n\ntype SearchFieldAutocompleteSharedProps = {\n /**\n * Called when the user selects a suggestion.\n */\n onSelectSuggestion?: (option: AutocompleteOption) => void;\n /**\n * Open the suggestions listbox when the input receives focus.\n */\n openSuggestionsOnFocus?: boolean;\n /**\n * Maximum height of the suggestions listbox. A number is interpreted as px.\n */\n suggestionsMaxHeight?: string | number;\n};\n\ntype SearchFieldWithoutAutocomplete = SearchFieldAutocompleteSharedProps & {\n suggestions?: never;\n suggestionsLabel?: never;\n};\n\ntype SearchFieldWithAutocomplete = SearchFieldAutocompleteSharedProps & {\n /**\n * The list of suggestions to display in a listbox below the field.\n * No filtering is applied — pass the already-correct (pre-filtered) list.\n * If autocomplete should stay enabled while there are temporarily no matches,\n * pass an empty array instead of `undefined` or `null`. Changing this prop\n * from an absent value to an array switches between the regular and\n * autocomplete variants, which causes a re-render, drops input focus, and\n * hides the listbox.\n */\n suggestions: AutocompleteOption[];\n /**\n * Accessible label for the suggestions listbox.\n */\n suggestionsLabel: string;\n};\n\nexport type SearchFieldAutocompleteEnhancements =\n | SearchFieldWithoutAutocomplete\n | SearchFieldWithAutocomplete;\n\nconst cx = c.bind(styles);\nconst rootClassName = \"purpur-search-field\";\n\nexport const SearchFieldBase = forwardRef<HTMLInputElement, SearchFieldBaseInternalProps>(\n (\n {\n [\"data-testid\"]: dataTestId,\n className,\n clearButtonAriaLabel,\n disabled,\n submitBehavior = \"form\",\n iconOnlySearchButton,\n onClear,\n onSearch,\n searchButtonLabel,\n variant,\n formRef,\n wrapperStyle,\n ...props\n },\n ref\n ) => {\n const getTestId = (name: string) => (dataTestId ? `${dataTestId}-${name}` : undefined);\n const hasValue =\n typeof props.value === \"number\" ? props.value !== undefined : props.value?.length;\n const hasClearButton = hasValue && !disabled && !props.readOnly && !props.loading;\n const isManualSubmit = submitBehavior === \"manual\";\n\n const classes = cx(className, rootClassName, {\n [`${rootClassName}--no-gap`]: variant === \"button-attached\",\n [`${rootClassName}--has-clear-button`]: hasClearButton,\n });\n\n const textFieldProps: TextFieldProps = {\n ref,\n className: classes,\n clearButtonAriaLabel,\n disabled,\n onClear,\n startAdornment: !iconOnlySearchButton ? (\n <IconSearch size=\"xs\" className={cx(`${rootClassName}__search-icon`)} key=\"1\" />\n ) : null,\n \"data-testid\": getTestId(\"text-field\"),\n type: \"search\" as const,\n ...props,\n };\n\n const searchButton =\n variant !== \"no-button\" ? (\n <SearchFieldButton\n type={isManualSubmit ? \"button\" : \"submit\"}\n onClick={isManualSubmit ? (event) => onSearch?.(event) : undefined}\n disabled={disabled}\n iconOnly={iconOnlySearchButton}\n label={searchButtonLabel}\n data-testid={getTestId(\"button\")}\n />\n ) : null;\n\n if (isManualSubmit) {\n const handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n props.onKeyDown?.(event);\n\n if (event.key === \"Enter\" && !event.defaultPrevented) {\n event.preventDefault();\n onSearch?.(event);\n }\n };\n\n return (\n <div\n className={cx(`${rootClassName}__wrapper`)}\n data-testid={dataTestId}\n style={wrapperStyle}\n >\n <TextField {...textFieldProps} onKeyDown={handleKeyDown} afterField={searchButton} />\n </div>\n );\n }\n\n return (\n <form\n ref={formRef}\n className={cx(`${rootClassName}__wrapper`)}\n data-testid={dataTestId}\n style={wrapperStyle}\n onSubmit={(e: FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n onSearch?.(e);\n }}\n >\n <TextField {...textFieldProps} afterField={searchButton} />\n </form>\n );\n }\n);\n\nSearchFieldBase.displayName = \"SearchFieldBase\";\n","import React, { forwardRef, useId } from \"react\";\nimport { Listbox } from \"@purpur/listbox\";\nimport { type AutocompleteOption, useAutocomplete } from \"@purpur/use-autocomplete\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./search-field.module.scss\";\nimport {\n type SearchFieldAutocompleteEnhancements,\n SearchFieldBase,\n type SearchFieldBaseProps,\n} from \"./search-field-base\";\n\nconst cx = c.bind(styles);\nconst rootClassName = \"purpur-search-field\";\n\nexport type SearchFieldAutocompleteProps = SearchFieldBaseProps &\n Extract<SearchFieldAutocompleteEnhancements, { suggestions: AutocompleteOption[] }>;\n\nexport const SearchFieldAutocomplete = forwardRef<HTMLInputElement, SearchFieldAutocompleteProps>(\n (\n {\n suggestions,\n suggestionsLabel,\n onSelectSuggestion,\n openSuggestionsOnFocus,\n suggestionsMaxHeight,\n ...searchFieldProps\n },\n ref\n ) => {\n const randomId = useId();\n const inputId = (searchFieldProps.id as string | undefined) ?? randomId;\n\n const autocomplete = useAutocomplete({\n id: inputId,\n options: suggestions,\n listboxLabel: suggestionsLabel,\n disabled: searchFieldProps.disabled,\n readOnly: searchFieldProps.readOnly,\n openOnFocus: openSuggestionsOnFocus,\n listboxMaxHeight: suggestionsMaxHeight,\n onSelect: onSelectSuggestion,\n [\"data-testid\"]: searchFieldProps[\"data-testid\"],\n });\n\n const setInputRef = (node: HTMLInputElement | null) => {\n (autocomplete.inputRef as React.MutableRefObject<HTMLInputElement | null>).current = node;\n if (typeof ref === \"function\") ref(node);\n else if (ref) (ref as React.MutableRefObject<HTMLInputElement | null>).current = node;\n };\n\n const handleInputChange: React.ChangeEventHandler<HTMLInputElement> = (event) => {\n searchFieldProps.onChange?.(event);\n if (!autocomplete.isOpen) {\n autocomplete.openListbox();\n }\n };\n\n return (\n <div\n ref={autocomplete.rootRef as React.RefObject<HTMLDivElement>}\n className={cx(`${rootClassName}__autocomplete-root`)}\n >\n <SearchFieldBase\n ref={setInputRef}\n {...searchFieldProps}\n onChange={handleInputChange}\n id={inputId}\n wrapperStyle={autocomplete.anchorStyle}\n {...autocomplete.inputProps}\n />\n {autocomplete.isOpen && (\n <Listbox {...autocomplete.listboxProps} className={cx(`${rootClassName}__listbox`)}>\n {suggestions.map((option, index) => {\n const { key, ...listboxItemProps } = autocomplete.getListboxItemProps(option, index);\n\n return (\n <Listbox.Item key={key} {...listboxItemProps}>\n {option.label}\n </Listbox.Item>\n );\n })}\n </Listbox>\n )}\n </div>\n );\n }\n);\n\nSearchFieldAutocomplete.displayName = \"SearchFieldAutocomplete\";\n","import React, { forwardRef } from \"react\";\n\nimport { SearchFieldAutocomplete } from \"./search-field-autocomplete\";\nimport {\n type SearchFieldAutocompleteEnhancements,\n SearchFieldBase,\n type SearchFieldBaseProps,\n searchFieldVariants,\n} from \"./search-field-base\";\n\nexport { searchFieldVariants };\n\nexport type SearchFieldProps = SearchFieldBaseProps & SearchFieldAutocompleteEnhancements;\n\nexport const SearchField = forwardRef<HTMLInputElement, SearchFieldProps>((props, ref) => {\n if (props.suggestions) {\n return <SearchFieldAutocomplete ref={ref} {...props} />;\n }\n\n return <SearchFieldBase ref={ref} {...props} />;\n});\n\nSearchField.displayName = \"SearchField\";\n\nexport {\n SearchFieldAutocomplete,\n type SearchFieldAutocompleteProps,\n} from \"./search-field-autocomplete\";\n"],"names":["cx","c","styles","rootClassName","SearchFieldButton","dataTestid","disabled","iconOnly","label","type","onClick","buttonProps","Button","IconSearch","jsx","searchFieldVariants","SearchFieldBase","forwardRef","dataTestId","className","clearButtonAriaLabel","submitBehavior","iconOnlySearchButton","onClear","onSearch","searchButtonLabel","variant","formRef","wrapperStyle","props","ref","getTestId","name","hasClearButton","isManualSubmit","classes","textFieldProps","searchButton","event","handleKeyDown","TextField","e","SearchFieldAutocomplete","suggestions","suggestionsLabel","onSelectSuggestion","openSuggestionsOnFocus","suggestionsMaxHeight","searchFieldProps","randomId","useId","inputId","autocomplete","useAutocomplete","setInputRef","node","handleInputChange","jsxs","Listbox","option","index","key","listboxItemProps","SearchField"],"mappings":"wnCAgBMA,EAAKC,EAAAA,EAAE,KAAKC,CAAM,EAClBC,EAAgB,6BAETC,EAAoB,CAAC,CAChC,CAAC,eAAgBC,EACjB,SAAAC,EACA,SAAAC,EACA,MAAAC,EACA,KAAAC,EAAO,SACP,QAAAC,CACF,IAAa,CACX,MAAMC,EAAc,CAClB,UAAWX,EAAGG,EAAe,CAC3B,CAAC,GAAGA,CAAa,aAAa,EAAGI,CAAA,CAClC,EACD,SAAAD,EACC,cAAgBD,EACjB,QAAAK,CAAA,EAGF,OAAIH,QAECK,SAAA,CAAQ,GAAGD,EAAa,aAAYH,EAAO,SAAQ,GAAC,KAAK,KAAK,KAAAC,EAAY,QAAQ,UACjF,eAACI,EAAAA,EAAA,CAAW,KAAK,KAAK,EACxB,EAKFC,MAACF,EAAAA,QAAQ,GAAGD,EAAa,KAAK,KAAK,KAAAF,EAAY,QAAQ,UACpD,SAAAD,CAAA,CACH,CAEJ,EClCaO,EAAsB,CAAC,kBAAmB,WAAW,EA+G5Df,EAAKC,EAAAA,EAAE,KAAKC,CAAM,EAClBC,EAAgB,sBAETa,EAAkBC,EAAAA,WAC7B,CACE,CACE,CAAC,eAAgBC,EACjB,UAAAC,EACA,qBAAAC,EACA,SAAAd,EACA,eAAAe,EAAiB,OACjB,qBAAAC,EACA,QAAAC,EACA,SAAAC,EACA,kBAAAC,EACA,QAAAC,EACA,QAAAC,EACA,aAAAC,EACA,GAAGC,CAAA,EAELC,IACG,CACH,MAAMC,EAAaC,GAAkBd,EAAa,GAAGA,CAAU,IAAIc,CAAI,GAAK,OAGtEC,GADJ,OAAOJ,EAAM,OAAU,SAAWA,EAAM,QAAU,OAAYA,EAAM,OAAO,SAC1C,CAACvB,GAAY,CAACuB,EAAM,UAAY,CAACA,EAAM,QACpEK,EAAiBb,IAAmB,SAEpCc,EAAUnC,EAAGmB,EAAWhB,EAAe,CAC3C,CAAC,GAAGA,CAAa,UAAU,EAAGuB,IAAY,kBAC1C,CAAC,GAAGvB,CAAa,oBAAoB,EAAG8B,CAAA,CACzC,EAEKG,EAAiC,CACrC,IAAAN,EACA,UAAWK,EACX,qBAAAf,EACA,SAAAd,EACA,QAAAiB,EACA,eAAiBD,EAEb,KADFR,EAAAA,IAACD,EAAAA,GAAW,KAAK,KAAK,UAAWb,EAAG,GAAGG,CAAa,eAAe,CAAA,EAAO,GAAI,EAEhF,cAAe4B,EAAU,YAAY,EACrC,KAAM,SACN,GAAGF,CAAA,EAGCQ,EACJX,IAAY,YACVZ,EAAAA,IAACV,EAAA,CACC,KAAM8B,EAAiB,SAAW,SAClC,QAASA,EAAkBI,GAAUd,IAAWc,CAAK,EAAI,OACzD,SAAAhC,EACA,SAAUgB,EACV,MAAOG,EACP,cAAaM,EAAU,QAAQ,CAAA,CAAA,EAE/B,KAEN,GAAIG,EAAgB,CAClB,MAAMK,EAAiBD,GAAiD,CACtET,EAAM,YAAYS,CAAK,EAEnBA,EAAM,MAAQ,SAAW,CAACA,EAAM,mBAClCA,EAAM,eAAA,EACNd,IAAWc,CAAK,EAEpB,EAEA,OACExB,EAAAA,IAAC,MAAA,CACC,UAAWd,EAAG,GAAGG,CAAa,WAAW,EACzC,cAAae,EACb,MAAOU,EAEP,eAACY,EAAAA,UAAA,CAAW,GAAGJ,EAAgB,UAAWG,EAAe,WAAYF,CAAA,CAAc,CAAA,CAAA,CAGzF,CAEA,OACEvB,EAAAA,IAAC,OAAA,CACC,IAAKa,EACL,UAAW3B,EAAG,GAAGG,CAAa,WAAW,EACzC,cAAae,EACb,MAAOU,EACP,SAAWa,GAAkC,CAC3CA,EAAE,eAAA,EACFjB,IAAWiB,CAAC,CACd,EAEA,SAAA3B,EAAAA,IAAC0B,EAAAA,UAAA,CAAW,GAAGJ,EAAgB,WAAYC,CAAA,CAAc,CAAA,CAAA,CAG/D,CACF,EAEArB,EAAgB,YAAc,kBCnN9B,MAAMhB,EAAKC,EAAAA,EAAE,KAAKC,CAAM,EAClBC,EAAgB,sBAKTuC,EAA0BzB,EAAAA,WACrC,CACE,CACE,YAAA0B,EACA,iBAAAC,EACA,mBAAAC,EACA,uBAAAC,EACA,qBAAAC,EACA,GAAGC,CAAA,EAELlB,IACG,CACH,MAAMmB,EAAWC,EAAAA,MAAA,EACXC,EAAWH,EAAiB,IAA6BC,EAEzDG,EAAeC,EAAAA,GAAgB,CACnC,GAAIF,EACJ,QAASR,EACT,aAAcC,EACd,SAAUI,EAAiB,SAC3B,SAAUA,EAAiB,SAC3B,YAAaF,EACb,iBAAkBC,EAClB,SAAUF,EACT,cAAgBG,EAAiB,aAAa,CAAA,CAChD,EAEKM,EAAeC,GAAkC,CACpDH,EAAa,SAA6D,QAAUG,EACjF,OAAOzB,GAAQ,WAAYA,EAAIyB,CAAI,EAC9BzB,IAAMA,EAAwD,QAAUyB,EACnF,EAEMC,EAAiElB,GAAU,CAC/EU,EAAiB,WAAWV,CAAK,EAC5Bc,EAAa,QAChBA,EAAa,YAAA,CAEjB,EAEA,OACEK,EAAAA,KAAC,MAAA,CACC,IAAKL,EAAa,QAClB,UAAWpD,EAAG,GAAGG,CAAa,qBAAqB,EAEnD,SAAA,CAAAW,EAAAA,IAACE,EAAA,CACC,IAAKsC,EACJ,GAAGN,EACJ,SAAUQ,EACV,GAAIL,EACJ,aAAcC,EAAa,YAC1B,GAAGA,EAAa,UAAA,CAAA,EAElBA,EAAa,QACZtC,EAAAA,IAAC4C,EAAAA,QAAA,CAAS,GAAGN,EAAa,aAAc,UAAWpD,EAAG,GAAGG,CAAa,WAAW,EAC9E,WAAY,IAAI,CAACwD,EAAQC,IAAU,CAClC,KAAM,CAAE,IAAAC,EAAK,GAAGC,CAAA,EAAqBV,EAAa,oBAAoBO,EAAQC,CAAK,EAEnF,OACE9C,EAAAA,IAAC4C,UAAQ,KAAR,CAAwB,GAAGI,EACzB,SAAAH,EAAO,OADSE,CAEnB,CAEJ,CAAC,CAAA,CACH,CAAA,CAAA,CAAA,CAIR,CACF,EAEAnB,EAAwB,YAAc,0BC3E/B,MAAMqB,EAAc9C,EAAAA,WAA+C,CAACY,EAAOC,IAC5ED,EAAM,YACDf,EAAAA,IAAC4B,EAAA,CAAwB,IAAAZ,EAAW,GAAGD,CAAA,CAAO,EAGhDf,EAAAA,IAACE,EAAA,CAAgB,IAAAc,EAAW,GAAGD,CAAA,CAAO,CAC9C,EAEDkC,EAAY,YAAc"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./search-field-Dx4qCcrh.js");exports.SearchField=e.SearchField;exports.SearchFieldAutocomplete=e.SearchFieldAutocomplete;exports.searchFieldVariants=e.searchFieldVariants;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./search-field-b1_QCs3U.js");exports.SearchField=e.SearchField;exports.SearchFieldAutocomplete=e.SearchFieldAutocomplete;exports.searchFieldVariants=e.searchFieldVariants;
2
2
  //# sourceMappingURL=search-field.cjs.js.map
@@ -1,4 +1,4 @@
1
- import { S as r, a as s, s as c } from "./search-field-BPLzy3RR.mjs";
1
+ import { S as r, a as s, s as c } from "./search-field-BMC3WG2H.mjs";
2
2
  export {
3
3
  r as SearchField,
4
4
  s as SearchFieldAutocomplete,
@@ -0,0 +1,2 @@
1
+ "use strict";const r=require("react/jsx-runtime"),$=require("react"),C=require("./field-error-text-FhQulSV5.js"),F=require("./field-helper-text-DSKO-Tce.js"),I=require("./check-circle-filled.es-5-GXE9l4.js"),S=require("./chevron-down.es-BMjgiS3F.js"),R=require("./label-yHK80hhV.js"),z=require("./spinner-tKunS_o-.js"),E=require("./bind-DeUYJ6m9.js"),H={"purpur-select":"_purpur-select_1gf3p_1","purpur-select__label":"_purpur-select__label_1gf3p_7","purpur-select__field-row":"_purpur-select__field-row_1gf3p_12","purpur-select__frame":"_purpur-select__frame_1gf3p_16","purpur-select__frame--negative":"_purpur-select__frame--negative_1gf3p_23","purpur-select__select-container":"_purpur-select__select-container_1gf3p_26","purpur-select__select-container--disabled":"_purpur-select__select-container--disabled_1gf3p_33","purpur-select__select":"_purpur-select__select_1gf3p_26","purpur-select__select-container--readonly":"_purpur-select__select-container--readonly_1gf3p_33","purpur-select__select-container--negative":"_purpur-select__select-container--negative_1gf3p_41","purpur-select__select--error":"_purpur-select__select--error_1gf3p_91","purpur-select__select--is-valid":"_purpur-select__select--is-valid_1gf3p_97","purpur-select__select--negative":"_purpur-select__select--negative_1gf3p_103","purpur-select__end-adornments":"_purpur-select__end-adornments_1gf3p_120","purpur-select__select-icon":"_purpur-select__select-icon_1gf3p_130","purpur-select__select-icon--readonly":"_purpur-select__select-icon--readonly_1gf3p_133","purpur-select__select-icon--disabled":"_purpur-select__select-icon--disabled_1gf3p_133","purpur-select__select-icon--negative":"_purpur-select__select-icon--negative_1gf3p_136","purpur-select__valid-icon":"_purpur-select__valid-icon_1gf3p_142"},i=E.c.bind(H),e="purpur-select",x=$.forwardRef(({label:_,options:d,className:u,errorText:t,helperText:p,negative:l=!1,placeholder:a,readOnly:n=!1,["data-testid"]:f,valid:j,loading:N,...s},q)=>{const c=b=>f?`${f}-${b}`:void 0,g=j&&!t,y=$.useId(),o=s.id??y,v=p?`${o}-helper-text`:void 0,w=i(`${e}__select-container`,{[`${e}__select-container--disabled`]:s.disabled,[`${e}__select-container--readonly`]:n&&!s.disabled,[`${e}__select-container--negative`]:l});return r.jsxs("div",{className:i(e,u,{[`${e}--negative`]:l}),"data-testid":f,children:[_&&r.jsxs(R.Label,{htmlFor:o,className:i(`${e}__label`),"data-testid":c("label"),disabled:s.disabled,negative:l,children:[s.required&&r.jsx("span",{"aria-hidden":!0,children:"*"}),_]}),r.jsx("div",{className:i(`${e}__field-row`),children:r.jsxs("div",{className:w,children:[r.jsxs("select",{...s,onChange:n?void 0:s?.onChange,id:o,ref:q,"data-testid":c("select"),"aria-describedby":s["aria-describedby"]||v,"aria-invalid":s["aria-invalid"]||!!t,"aria-disabled":s["aria-disabled"]||s.disabled,"aria-readonly":s["aria-readonly"]||n&&!s.disabled,className:i(`${e}__select`,{[`${e}__select--error`]:!!t,[`${e}__select--is-valid`]:g,[`${e}__select--negative`]:l}),children:[a&&r.jsx("option",{value:a.value??a.label,disabled:!0,children:a.label}),d.map((b,m)=>k(b)?D(b,o,m,n):h(b,o,m,n))]}),r.jsxs("div",{className:i(`${e}__end-adornments`),children:[N?r.jsx(z.Spinner,{disabled:s.disabled,size:"xxs",negative:l,"data-testid":c("spinner")},"spinner"):r.jsx(S.l,{className:i(`${e}__select-icon`,{[`${e}__select-icon--disabled`]:s.disabled,[`${e}__select-icon--readonly`]:n&&!s.disabled,[`${e}__select-icon--is-valid`]:g,[`${e}__select-icon--negative`]:l}),"data-testid":c("dropdown-icon"),size:"sm"},"chevron-down-icon"),g&&r.jsx(I.r,{"data-testid":c("valid-icon"),className:i(`${e}__valid-icon`)},"valid-icon")]}),r.jsx("div",{className:i(`${e}__frame`,{[`${e}__frame--negative`]:l})})]})}),v&&r.jsx(F.FieldHelperText,{disabled:s.disabled,"data-testid":c("helper-text"),id:v,negative:l,children:p}),t&&r.jsx(C.FieldErrorText,{negative:l,"data-testid":c("error-text"),children:t})]})}),k=_=>_.hasOwnProperty("options"),D=(_,d,u,t)=>{const p=`${d}--group--${u}`;return r.jsx("optgroup",{label:_.label,children:_.options.map((l,a)=>h(l,p,a,t))},p)},h=(_,d,u,t)=>r.jsx("option",{value:_.value??_.label,disabled:t,children:_.label},`${d}--option--${u}`);x.displayName="Select";exports.Select=x;
2
+ //# sourceMappingURL=select-D6R7I5b5.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"select-D6R7I5b5.js","sources":["../../../components/select/src/select.tsx"],"sourcesContent":["import React, { forwardRef, useId } from \"react\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport { FieldErrorText } from \"@purpur/field-error-text\";\nimport { FieldHelperText } from \"@purpur/field-helper-text\";\nimport { IconCheckCircleFilled } from \"@purpur/icon/check-circle-filled\";\nimport { IconChevronDown } from \"@purpur/icon/chevron-down\";\nimport { Label } from \"@purpur/label\";\nimport { Spinner } from \"@purpur/spinner\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./select.module.scss\";\n\nexport type SelectProps = Omit<BaseProps<\"select\">, \"multiple\" | \"children\"> & {\n label?: string;\n /**\n * Options which will be available in the select input's dropdown menu.\n *\n * For single options:\n *\n * ```\n * [\n * {\n * label: \"Option 1\",\n * value: \"Option 1\"\n * },\n * {\n * label: \"Option 2\",\n * value: \"Option 2\"\n * }\n * ]\n * ```\n * For option groups:\n *\n * ```\n *\n * [\n * {\n * label: \"Option group 1\"\n * options: [\n * {\n * label: \"Group 1 option 1\",\n * value: \"group 1 option 1\"\n * },\n * {\n * label: \"Group 1 option 2\",\n * value: \"Group 1 option 2\"\n * }\n * ]\n * }\n * ]\n * ```\n *\n * _Note! When no value is provided for the option, the label of the option is used as a fallback._\n */\n options: (SelectOption | SelectOptionGroup)[];\n /**\n * Placeholder option for the dropdown (e.g \"Select\" / \"Choose\").\n *\n * Use the following format when providing a placeholder:\n *\n * ```\n * {\n * label: \"Placeholder option\",\n * value: \"Placeholder value\"\n * }\n * ```\n */\n placeholder?: SelectOption;\n readOnly?: boolean;\n errorText?: string;\n helperText?: string;\n /**\n * Use to render select with valid appearance. A check\n * icon will render at the start inside of the input.\n */\n valid?: boolean;\n loading?: boolean;\n negative?: boolean;\n};\n\nexport type SelectOption = {\n label: string;\n value?: string;\n};\n\nexport type SelectOptionGroup = {\n label: string;\n options: SelectOption[];\n};\n\nconst cx = c.bind(styles);\nconst rootClassName = \"purpur-select\";\n\nexport const Select = forwardRef<HTMLSelectElement, SelectProps>(\n (\n {\n label,\n options,\n className,\n errorText,\n helperText,\n negative = false,\n placeholder,\n readOnly = false,\n [\"data-testid\"]: dataTestId,\n valid,\n loading,\n ...selectProps\n },\n ref\n ) => {\n const getTestId = (name: string) => (dataTestId ? `${dataTestId}-${name}` : undefined);\n const isValid = valid && !errorText;\n const randomId = useId();\n const fieldId = selectProps.id ?? randomId;\n\n const helperTextId = helperText ? `${fieldId}-helper-text` : undefined;\n\n const selectContainerClassnames = cx(`${rootClassName}__select-container`, {\n [`${rootClassName}__select-container--disabled`]: selectProps.disabled,\n [`${rootClassName}__select-container--readonly`]: readOnly && !selectProps.disabled,\n [`${rootClassName}__select-container--negative`]: negative,\n });\n\n return (\n <div\n className={cx(rootClassName, className, {\n [`${rootClassName}--negative`]: negative,\n })}\n data-testid={dataTestId}\n >\n {label && (\n <Label\n htmlFor={fieldId}\n className={cx(`${rootClassName}__label`)}\n data-testid={getTestId(\"label\")}\n disabled={selectProps.disabled}\n negative={negative}\n >\n {selectProps.required && <span aria-hidden>*</span>}\n {label}\n </Label>\n )}\n <div className={cx(`${rootClassName}__field-row`)}>\n <div className={selectContainerClassnames}>\n <select\n {...selectProps}\n onChange={readOnly ? undefined : selectProps?.onChange}\n id={fieldId}\n ref={ref}\n data-testid={getTestId(\"select\")}\n aria-describedby={selectProps[\"aria-describedby\"] || helperTextId}\n aria-invalid={selectProps[\"aria-invalid\"] || !!errorText}\n aria-disabled={selectProps[\"aria-disabled\"] || selectProps.disabled}\n aria-readonly={selectProps[\"aria-readonly\"] || (readOnly && !selectProps.disabled)}\n className={cx(`${rootClassName}__select`, {\n [`${rootClassName}__select--error`]: !!errorText,\n [`${rootClassName}__select--is-valid`]: isValid,\n [`${rootClassName}__select--negative`]: negative,\n })}\n >\n {placeholder && (\n <option value={placeholder.value ?? placeholder.label} disabled>\n {placeholder.label}\n </option>\n )}\n {options.map((optionOrOptionGroup, index) =>\n isOptionGroup(optionOrOptionGroup)\n ? renderOptionGroup(optionOrOptionGroup, fieldId, index, readOnly)\n : renderOptionItem(optionOrOptionGroup, fieldId, index, readOnly)\n )}\n </select>\n <div className={cx(`${rootClassName}__end-adornments`)}>\n {loading ? (\n <Spinner\n key=\"spinner\"\n disabled={selectProps.disabled}\n size=\"xxs\"\n negative={negative}\n data-testid={getTestId(\"spinner\")}\n />\n ) : (\n <IconChevronDown\n key=\"chevron-down-icon\"\n className={cx(`${rootClassName}__select-icon`, {\n [`${rootClassName}__select-icon--disabled`]: selectProps.disabled,\n [`${rootClassName}__select-icon--readonly`]: readOnly && !selectProps.disabled,\n [`${rootClassName}__select-icon--is-valid`]: isValid,\n [`${rootClassName}__select-icon--negative`]: negative,\n })}\n data-testid={getTestId(\"dropdown-icon\")}\n size=\"sm\"\n />\n )}\n {isValid && (\n <IconCheckCircleFilled\n key=\"valid-icon\"\n data-testid={getTestId(\"valid-icon\")}\n className={cx(`${rootClassName}__valid-icon`)}\n />\n )}\n </div>\n <div\n className={cx(`${rootClassName}__frame`, {\n [`${rootClassName}__frame--negative`]: negative,\n })}\n />\n </div>\n </div>\n {helperTextId && (\n <FieldHelperText\n disabled={selectProps.disabled}\n data-testid={getTestId(\"helper-text\")}\n id={helperTextId}\n negative={negative}\n >\n {helperText}\n </FieldHelperText>\n )}\n {errorText && (\n <FieldErrorText negative={negative} data-testid={getTestId(\"error-text\")}>\n {errorText}\n </FieldErrorText>\n )}\n </div>\n );\n }\n);\n\nconst isOptionGroup = (option: SelectOption | SelectOptionGroup): option is SelectOptionGroup => {\n // eslint-disable-next-line no-prototype-builtins\n return option.hasOwnProperty(\"options\");\n};\n\nconst renderOptionGroup = (\n optionGroup: SelectOptionGroup,\n fieldId: string,\n index: number,\n disableOption: boolean\n) => {\n const groupKey = `${fieldId}--group--${index}`;\n\n return (\n <optgroup key={groupKey} label={optionGroup.label}>\n {optionGroup.options.map((option, index) => {\n return renderOptionItem(option, groupKey, index, disableOption);\n })}\n </optgroup>\n );\n};\n\nconst renderOptionItem = (option: SelectOption, key: string, index: number, disabled: boolean) => {\n return (\n <option\n key={`${key}--option--${index}`}\n value={option.value ?? option.label}\n disabled={disabled}\n >\n {option.label}\n </option>\n );\n};\n\nSelect.displayName = \"Select\";\n"],"names":["cx","c","styles","rootClassName","Select","forwardRef","label","options","className","errorText","helperText","negative","placeholder","readOnly","dataTestId","valid","loading","selectProps","ref","getTestId","name","isValid","randomId","useId","fieldId","helperTextId","selectContainerClassnames","jsxs","Label","jsx","optionOrOptionGroup","index","isOptionGroup","renderOptionGroup","renderOptionItem","Spinner","IconChevronDown","IconCheckCircleFilled","FieldHelperText","FieldErrorText","option","optionGroup","disableOption","groupKey","key","disabled"],"mappings":"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"}