@purpur/library 9.0.9 → 9.1.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 (306) hide show
  1. package/CHANGELOG.json +63 -0
  2. package/CHANGELOG.md +28 -1
  3. package/dist/LICENSE.txt +48 -27
  4. package/dist/{autocomplete-B_OBQM2h.js → autocomplete-B421J7CS.js} +2 -2
  5. package/dist/{autocomplete-B_OBQM2h.js.map → autocomplete-B421J7CS.js.map} +1 -1
  6. package/dist/{autocomplete-DJ3zbA0m.mjs → autocomplete-B8L-dTmF.mjs} +3 -3
  7. package/dist/{autocomplete-DJ3zbA0m.mjs.map → autocomplete-B8L-dTmF.mjs.map} +1 -1
  8. package/dist/autocomplete.cjs.js +1 -1
  9. package/dist/autocomplete.es.js +1 -1
  10. package/dist/button-Cv7NlYbv.mjs +109 -0
  11. package/dist/button-Cv7NlYbv.mjs.map +1 -0
  12. package/dist/button-Dqxdc3nC.js +2 -0
  13. package/dist/button-Dqxdc3nC.js.map +1 -0
  14. package/dist/button.cjs.js +1 -1
  15. package/dist/button.es.js +1 -1
  16. package/dist/{calendar-BSdvi_DA.js → calendar-C-F-pVCe.js} +2 -2
  17. package/dist/{calendar-BSdvi_DA.js.map → calendar-C-F-pVCe.js.map} +1 -1
  18. package/dist/{calendar-9p_aA7KY.mjs → calendar-DWpnuylk.mjs} +2 -2
  19. package/dist/{calendar-9p_aA7KY.mjs.map → calendar-DWpnuylk.mjs.map} +1 -1
  20. package/dist/calendar.cjs.js +1 -1
  21. package/dist/calendar.es.js +1 -1
  22. package/dist/chat-field-CxOqk0-9.js +2 -0
  23. package/dist/chat-field-CxOqk0-9.js.map +1 -0
  24. package/dist/chat-field-yK-TwW0D.mjs +149 -0
  25. package/dist/chat-field-yK-TwW0D.mjs.map +1 -0
  26. package/dist/chat-field.cjs.js +2 -0
  27. package/dist/chat-field.cjs.js.map +1 -0
  28. package/dist/chat-field.es.js +5 -0
  29. package/dist/chat-field.es.js.map +1 -0
  30. package/dist/components/autocomplete/src/autocomplete.d.ts.map +1 -1
  31. package/dist/components/button/src/button.d.ts +4 -0
  32. package/dist/components/button/src/button.d.ts.map +1 -1
  33. package/dist/components/chat-field/src/chat-field.d.ts +71 -0
  34. package/dist/components/chat-field/src/chat-field.d.ts.map +1 -0
  35. package/dist/components/dismissable-chip-group/src/dismissable-chip-group-item.d.ts.map +1 -1
  36. package/dist/components/dismissable-chip-group/src/dismissable-chip-group.d.ts +6 -1
  37. package/dist/components/dismissable-chip-group/src/dismissable-chip-group.d.ts.map +1 -1
  38. package/dist/components/drawer/src/drawer-container.d.ts +2 -0
  39. package/dist/components/drawer/src/drawer-container.d.ts.map +1 -1
  40. package/dist/components/drawer/src/drawer-content.d.ts.map +1 -1
  41. package/dist/components/drawer/src/drawer-frame.d.ts +2 -1
  42. package/dist/components/drawer/src/drawer-frame.d.ts.map +1 -1
  43. package/dist/components/drawer/src/drawer-handle.d.ts +2 -1
  44. package/dist/components/drawer/src/drawer-handle.d.ts.map +1 -1
  45. package/dist/components/drawer/src/drawer-header.d.ts +2 -0
  46. package/dist/components/drawer/src/drawer-header.d.ts.map +1 -1
  47. package/dist/components/drawer/src/drawer-scroll-area.d.ts +2 -0
  48. package/dist/components/drawer/src/drawer-scroll-area.d.ts.map +1 -1
  49. package/dist/components/drawer/src/drawer.context.d.ts +6 -2
  50. package/dist/components/drawer/src/drawer.context.d.ts.map +1 -1
  51. package/dist/components/drawer/src/drawer.d.ts +3 -0
  52. package/dist/components/drawer/src/drawer.d.ts.map +1 -1
  53. package/dist/components/drawer/src/types.d.ts +1 -0
  54. package/dist/components/drawer/src/types.d.ts.map +1 -1
  55. package/dist/components/dropdown/src/dropdown-combobox.d.ts +34 -0
  56. package/dist/components/dropdown/src/dropdown-combobox.d.ts.map +1 -0
  57. package/dist/components/dropdown/src/dropdown-select.d.ts +34 -0
  58. package/dist/components/dropdown/src/dropdown-select.d.ts.map +1 -0
  59. package/dist/components/dropdown/src/dropdown-shared.d.ts +51 -0
  60. package/dist/components/dropdown/src/dropdown-shared.d.ts.map +1 -0
  61. package/dist/components/dropdown/src/dropdown.d.ts +6 -0
  62. package/dist/components/dropdown/src/dropdown.d.ts.map +1 -0
  63. package/dist/components/dropdown/src/dropdown.types.d.ts +94 -0
  64. package/dist/components/dropdown/src/dropdown.types.d.ts.map +1 -0
  65. package/dist/components/dropdown/src/useDropdown.d.ts +38 -0
  66. package/dist/components/dropdown/src/useDropdown.d.ts.map +1 -0
  67. package/dist/components/dropdown/src/useDropdownFilter.d.ts +9 -0
  68. package/dist/components/dropdown/src/useDropdownFilter.d.ts.map +1 -0
  69. package/dist/components/dropdown/src/useDropdownHighlight.d.ts +19 -0
  70. package/dist/components/dropdown/src/useDropdownHighlight.d.ts.map +1 -0
  71. package/dist/components/dropdown/src/useDropdownInput.d.ts +12 -0
  72. package/dist/components/dropdown/src/useDropdownInput.d.ts.map +1 -0
  73. package/dist/components/dropdown/src/useOnClickOutside.d.ts +2 -0
  74. package/dist/components/dropdown/src/useOnClickOutside.d.ts.map +1 -0
  75. package/dist/components/listbox/src/listbox-item.d.ts +2 -0
  76. package/dist/components/listbox/src/listbox-item.d.ts.map +1 -1
  77. package/dist/components/notification/src/notification.d.ts +2 -1
  78. package/dist/components/notification/src/notification.d.ts.map +1 -1
  79. package/dist/components/search-field/src/search-field-autocomplete.d.ts +73 -0
  80. package/dist/components/search-field/src/search-field-autocomplete.d.ts.map +1 -0
  81. package/dist/components/search-field/src/search-field-base.d.ts +97 -0
  82. package/dist/components/search-field/src/search-field-base.d.ts.map +1 -0
  83. package/dist/components/search-field/src/search-field.d.ts +123 -41
  84. package/dist/components/search-field/src/search-field.d.ts.map +1 -1
  85. package/dist/components/text-field/src/text-field-ai.d.ts +669 -0
  86. package/dist/components/text-field/src/text-field-ai.d.ts.map +1 -0
  87. package/dist/components/text-field/src/text-field-base.d.ts +671 -0
  88. package/dist/components/text-field/src/text-field-base.d.ts.map +1 -0
  89. package/dist/components/text-field/src/text-field.d.ts +42 -4
  90. package/dist/components/text-field/src/text-field.d.ts.map +1 -1
  91. package/dist/components-metadata.js +30 -1
  92. package/dist/{date-field-Ch2lM7-P.mjs → date-field-4tYMPw89.mjs} +2 -2
  93. package/dist/{date-field-Ch2lM7-P.mjs.map → date-field-4tYMPw89.mjs.map} +1 -1
  94. package/dist/{date-field-DTI5mQkg.js → date-field-B7ipm5sH.js} +2 -2
  95. package/dist/{date-field-DTI5mQkg.js.map → date-field-B7ipm5sH.js.map} +1 -1
  96. package/dist/date-field.cjs.js +1 -1
  97. package/dist/date-field.es.js +1 -1
  98. package/dist/{date-picker-Dk39IXG5.js → date-picker-B8L1Hm8r.js} +2 -2
  99. package/dist/{date-picker-Dk39IXG5.js.map → date-picker-B8L1Hm8r.js.map} +1 -1
  100. package/dist/{date-picker-Bt3IaH23.mjs → date-picker-Bp_XpoOF.mjs} +4 -4
  101. package/dist/{date-picker-Bt3IaH23.mjs.map → date-picker-Bp_XpoOF.mjs.map} +1 -1
  102. package/dist/date-picker.cjs.js +1 -1
  103. package/dist/date-picker.es.js +1 -1
  104. package/dist/dismissable-chip-group-Cd23yjBa.js +2 -0
  105. package/dist/dismissable-chip-group-Cd23yjBa.js.map +1 -0
  106. package/dist/dismissable-chip-group-D-gD93ON.mjs +89 -0
  107. package/dist/dismissable-chip-group-D-gD93ON.mjs.map +1 -0
  108. package/dist/dismissable-chip-group.cjs.js +1 -1
  109. package/dist/dismissable-chip-group.es.js +5 -2
  110. package/dist/drawer-UdK-u7IX.js +2 -0
  111. package/dist/drawer-UdK-u7IX.js.map +1 -0
  112. package/dist/drawer-Vi9H2O3N.mjs +562 -0
  113. package/dist/drawer-Vi9H2O3N.mjs.map +1 -0
  114. package/dist/drawer.cjs.js +1 -1
  115. package/dist/drawer.es.js +1 -1
  116. package/dist/dropdown-BC6evqyq.js +2 -0
  117. package/dist/dropdown-BC6evqyq.js.map +1 -0
  118. package/dist/dropdown-C-Ze4gvG.mjs +771 -0
  119. package/dist/dropdown-C-Ze4gvG.mjs.map +1 -0
  120. package/dist/dropdown.cjs.js +2 -0
  121. package/dist/dropdown.cjs.js.map +1 -0
  122. package/dist/dropdown.es.js +6 -0
  123. package/dist/dropdown.es.js.map +1 -0
  124. package/dist/{hero-banner-B5HKmkXc.mjs → hero-banner-BjwICxaJ.mjs} +2 -2
  125. package/dist/{hero-banner-B5HKmkXc.mjs.map → hero-banner-BjwICxaJ.mjs.map} +1 -1
  126. package/dist/{hero-banner-OnNSuxNT.js → hero-banner-yGRM4OlS.js} +2 -2
  127. package/dist/{hero-banner-OnNSuxNT.js.map → hero-banner-yGRM4OlS.js.map} +1 -1
  128. package/dist/hero-banner.cjs.js +1 -1
  129. package/dist/hero-banner.es.js +1 -1
  130. package/dist/illustrative-icon/assets/json/cart-checkmark-duocolor-animated.json.d.ts +1 -1
  131. package/dist/illustrative-icon/assets/json/cart-checkmark-offblack-animated.json.d.ts +1 -1
  132. package/dist/illustrative-icon/assets/json/checkmark-duocolor-animated.json.d.ts +1 -1
  133. package/dist/illustrative-icon/assets/json/checkmark-offblack-animated.json.d.ts +1 -1
  134. package/dist/illustrative-icon/assets/json/document-checkmark-duocolor-animated.json.d.ts +1 -1
  135. package/dist/illustrative-icon/assets/json/document-checkmark-offblack-animated.json.d.ts +1 -1
  136. package/dist/illustrative-icon/assets/json/support-checkmark-duocolor-animated.json.d.ts +1 -1
  137. package/dist/illustrative-icon/assets/json/support-checkmark-offblack-animated.json.d.ts +1 -1
  138. package/dist/illustrative-icon/assets/json/user-checkmark-duocolor-animated.json.d.ts +1 -1
  139. package/dist/illustrative-icon/assets/json/user-checkmark-offblack-animated.json.d.ts +1 -1
  140. package/dist/illustrative-icon/components/cart-checkmark-duocolor-animated.cjs.js +1 -1
  141. package/dist/illustrative-icon/components/cart-checkmark-duocolor-animated.cjs.js.map +1 -1
  142. package/dist/illustrative-icon/components/cart-checkmark-duocolor-animated.es.js +1 -1
  143. package/dist/illustrative-icon/components/cart-checkmark-offblack-animated.cjs.js +1 -1
  144. package/dist/illustrative-icon/components/cart-checkmark-offblack-animated.cjs.js.map +1 -1
  145. package/dist/illustrative-icon/components/cart-checkmark-offblack-animated.es.js +1 -1
  146. package/dist/illustrative-icon/components/checkmark-duocolor-animated.cjs.js +1 -1
  147. package/dist/illustrative-icon/components/checkmark-duocolor-animated.cjs.js.map +1 -1
  148. package/dist/illustrative-icon/components/checkmark-duocolor-animated.es.js +1 -1
  149. package/dist/illustrative-icon/components/checkmark-offblack-animated.cjs.js +1 -1
  150. package/dist/illustrative-icon/components/checkmark-offblack-animated.cjs.js.map +1 -1
  151. package/dist/illustrative-icon/components/checkmark-offblack-animated.es.js +1 -1
  152. package/dist/illustrative-icon/components/document-checkmark-duocolor-animated.cjs.js +2 -2
  153. package/dist/illustrative-icon/components/document-checkmark-duocolor-animated.es.js +2 -2
  154. package/dist/illustrative-icon/components/document-checkmark-offblack-animated.cjs.js +2 -2
  155. package/dist/illustrative-icon/components/document-checkmark-offblack-animated.es.js +2 -2
  156. package/dist/illustrative-icon/components/support-checkmark-duocolor-animated.cjs.js +1 -1
  157. package/dist/illustrative-icon/components/support-checkmark-duocolor-animated.cjs.js.map +1 -1
  158. package/dist/illustrative-icon/components/support-checkmark-duocolor-animated.es.js +1 -1
  159. package/dist/illustrative-icon/components/support-checkmark-offblack-animated.cjs.js +1 -1
  160. package/dist/illustrative-icon/components/support-checkmark-offblack-animated.cjs.js.map +1 -1
  161. package/dist/illustrative-icon/components/support-checkmark-offblack-animated.es.js +1 -1
  162. package/dist/illustrative-icon/components/user-checkmark-duocolor-animated.cjs.js +1 -1
  163. package/dist/illustrative-icon/components/user-checkmark-duocolor-animated.es.js +1 -1
  164. package/dist/illustrative-icon/components/user-checkmark-offblack-animated.cjs.js +1 -1
  165. package/dist/illustrative-icon/components/user-checkmark-offblack-animated.es.js +1 -1
  166. package/dist/libraries/library/src/chat-field.d.ts +6 -0
  167. package/dist/libraries/library/src/chat-field.d.ts.map +1 -0
  168. package/dist/libraries/library/src/dropdown.d.ts +6 -0
  169. package/dist/libraries/library/src/dropdown.d.ts.map +1 -0
  170. package/dist/libraries/library/src/library.d.ts +2 -0
  171. package/dist/libraries/library/src/library.d.ts.map +1 -1
  172. package/dist/libraries/theme/src/theme-props.d.ts +1 -0
  173. package/dist/libraries/theme/src/theme-props.d.ts.map +1 -1
  174. package/dist/libraries/tokens/dist/border/variables.d.ts +1 -0
  175. package/dist/libraries/tokens/dist/border/variables.dark.d.ts +1 -0
  176. package/dist/library.cjs.js +1 -1
  177. package/dist/library.es.js +603 -592
  178. package/dist/library.es.js.map +1 -1
  179. package/dist/listbox-COBHLRtB.js +2 -0
  180. package/dist/listbox-COBHLRtB.js.map +1 -0
  181. package/dist/listbox-DG4KmQP_.mjs +66 -0
  182. package/dist/listbox-DG4KmQP_.mjs.map +1 -0
  183. package/dist/listbox.cjs.js +1 -1
  184. package/dist/listbox.es.js +1 -1
  185. package/dist/{modal-CQiJ98iI.js → modal-DMeRO1wE.js} +2 -2
  186. package/dist/{modal-CQiJ98iI.js.map → modal-DMeRO1wE.js.map} +1 -1
  187. package/dist/{modal-B1eJu9HN.mjs → modal-fTWvPEPW.mjs} +2 -2
  188. package/dist/{modal-B1eJu9HN.mjs.map → modal-fTWvPEPW.mjs.map} +1 -1
  189. package/dist/modal.cjs.js +1 -1
  190. package/dist/modal.es.js +1 -1
  191. package/dist/{notification-BtcM7Ndu.mjs → notification-BvoL7BIW.mjs} +60 -51
  192. package/dist/notification-BvoL7BIW.mjs.map +1 -0
  193. package/dist/notification-DE1pvk9W.js +2 -0
  194. package/dist/notification-DE1pvk9W.js.map +1 -0
  195. package/dist/{notification-banner-CbKcE7o4.mjs → notification-banner-C4gkkSlf.mjs} +2 -2
  196. package/dist/{notification-banner-CbKcE7o4.mjs.map → notification-banner-C4gkkSlf.mjs.map} +1 -1
  197. package/dist/{notification-banner-B0CUuKZn.js → notification-banner-COH7wJu2.js} +2 -2
  198. package/dist/{notification-banner-B0CUuKZn.js.map → notification-banner-COH7wJu2.js.map} +1 -1
  199. package/dist/notification-banner.cjs.js +1 -1
  200. package/dist/notification-banner.es.js +1 -1
  201. package/dist/notification.cjs.js +1 -1
  202. package/dist/notification.es.js +1 -1
  203. package/dist/{popover-D6k4-oO1.js → popover-BnUVNqSi.js} +2 -2
  204. package/dist/{popover-D6k4-oO1.js.map → popover-BnUVNqSi.js.map} +1 -1
  205. package/dist/{popover-D3b2gHm-.mjs → popover-lxTyKALA.mjs} +2 -2
  206. package/dist/{popover-D3b2gHm-.mjs.map → popover-lxTyKALA.mjs.map} +1 -1
  207. package/dist/popover.cjs.js +1 -1
  208. package/dist/popover.es.js +1 -1
  209. package/dist/purpur.css +1 -1
  210. package/dist/{quantity-selector-Djf8APeL.mjs → quantity-selector-CsR6KTG3.mjs} +3 -3
  211. package/dist/{quantity-selector-Djf8APeL.mjs.map → quantity-selector-CsR6KTG3.mjs.map} +1 -1
  212. package/dist/{quantity-selector-Bc-4Dnpc.js → quantity-selector-DWDg4aFO.js} +2 -2
  213. package/dist/{quantity-selector-Bc-4Dnpc.js.map → quantity-selector-DWDg4aFO.js.map} +1 -1
  214. package/dist/quantity-selector.cjs.js +1 -1
  215. package/dist/quantity-selector.es.js +1 -1
  216. package/dist/search-field-Caj2dKLn.mjs +151 -0
  217. package/dist/search-field-Caj2dKLn.mjs.map +1 -0
  218. package/dist/search-field-DAktzYb0.js +2 -0
  219. package/dist/search-field-DAktzYb0.js.map +1 -0
  220. package/dist/search-field.cjs.js +1 -1
  221. package/dist/search-field.es.js +3 -2
  222. package/dist/{stepper-CTdGj87I.mjs → stepper-B351hexi.mjs} +3 -3
  223. package/dist/{stepper-CTdGj87I.mjs.map → stepper-B351hexi.mjs.map} +1 -1
  224. package/dist/{stepper-BaoOY4Ea.js → stepper-Cb4_9D2h.js} +2 -2
  225. package/dist/{stepper-BaoOY4Ea.js.map → stepper-Cb4_9D2h.js.map} +1 -1
  226. package/dist/stepper.cjs.js +1 -1
  227. package/dist/stepper.es.js +1 -1
  228. package/dist/{table-D7qthqj_.mjs → table-DXYHrKI7.mjs} +5 -5
  229. package/dist/{table-D7qthqj_.mjs.map → table-DXYHrKI7.mjs.map} +1 -1
  230. package/dist/{table-TdOPMFoP.js → table-x3SDCR-z.js} +2 -2
  231. package/dist/{table-TdOPMFoP.js.map → table-x3SDCR-z.js.map} +1 -1
  232. package/dist/table.cjs.js +1 -1
  233. package/dist/table.es.js +1 -1
  234. package/dist/text-field-BQYzwIrG.mjs +322 -0
  235. package/dist/text-field-BQYzwIrG.mjs.map +1 -0
  236. package/dist/text-field-BwxGMWds.js +2 -0
  237. package/dist/text-field-BwxGMWds.js.map +1 -0
  238. package/dist/text-field.cjs.js +1 -1
  239. package/dist/text-field.es.js +4 -3
  240. package/dist/tokens/border/variables.css +1 -0
  241. package/dist/tokens/border/variables.d.ts +1 -0
  242. package/dist/tokens/border/variables.dark.css +1 -0
  243. package/dist/tokens/border/variables.dark.d.ts +1 -0
  244. package/dist/tokens/border/variables.dark.js +1 -0
  245. package/dist/tokens/border/variables.dark.json +1 -0
  246. package/dist/tokens/border/variables.dark.scss +1 -0
  247. package/dist/tokens/border/variables.js +1 -0
  248. package/dist/tokens/border/variables.json +1 -0
  249. package/dist/tokens/border/variables.scss +1 -0
  250. package/dist/tokens.cjs.js +1 -1
  251. package/dist/tokens.cjs.js.map +1 -1
  252. package/dist/tokens.es.js +337 -336
  253. package/dist/tokens.es.js.map +1 -1
  254. package/dist/{tooltip-BtGtu3ph.mjs → tooltip-BHsVKFJ3.mjs} +2 -2
  255. package/dist/{tooltip-BtGtu3ph.mjs.map → tooltip-BHsVKFJ3.mjs.map} +1 -1
  256. package/dist/{tooltip-eUP35j3v.js → tooltip-B_qTqtcF.js} +2 -2
  257. package/dist/{tooltip-eUP35j3v.js.map → tooltip-B_qTqtcF.js.map} +1 -1
  258. package/dist/tooltip.cjs.js +1 -1
  259. package/dist/tooltip.es.js +1 -1
  260. package/dist/use-autocomplete.es-BHDgQLae.js +2 -0
  261. package/dist/use-autocomplete.es-BHDgQLae.js.map +1 -0
  262. package/dist/use-autocomplete.es-CVv3z8t6.mjs +142 -0
  263. package/dist/use-autocomplete.es-CVv3z8t6.mjs.map +1 -0
  264. package/package.json +22 -20
  265. package/src/aliases.ts +8 -0
  266. package/src/chat-field.ts +6 -0
  267. package/src/dropdown.ts +6 -0
  268. package/src/entries.js +2 -0
  269. package/src/library.ts +4 -0
  270. package/tokens/border/variables.css +1 -0
  271. package/tokens/border/variables.d.ts +1 -0
  272. package/tokens/border/variables.dark.css +1 -0
  273. package/tokens/border/variables.dark.d.ts +1 -0
  274. package/tokens/border/variables.dark.js +1 -0
  275. package/tokens/border/variables.dark.json +1 -0
  276. package/tokens/border/variables.dark.scss +1 -0
  277. package/tokens/border/variables.js +1 -0
  278. package/tokens/border/variables.json +1 -0
  279. package/tokens/border/variables.scss +1 -0
  280. package/dist/button-BxdChrq-.js +0 -2
  281. package/dist/button-BxdChrq-.js.map +0 -1
  282. package/dist/button-D-BBdNhd.mjs +0 -105
  283. package/dist/button-D-BBdNhd.mjs.map +0 -1
  284. package/dist/dismissable-chip-group-CnziecOt.js +0 -2
  285. package/dist/dismissable-chip-group-CnziecOt.js.map +0 -1
  286. package/dist/dismissable-chip-group-ZCYOt1sB.mjs +0 -79
  287. package/dist/dismissable-chip-group-ZCYOt1sB.mjs.map +0 -1
  288. package/dist/drawer-B6j8nfAY.mjs +0 -530
  289. package/dist/drawer-B6j8nfAY.mjs.map +0 -1
  290. package/dist/drawer-CJsLdd2x.js +0 -2
  291. package/dist/drawer-CJsLdd2x.js.map +0 -1
  292. package/dist/listbox-BmjBtIv8.js +0 -2
  293. package/dist/listbox-BmjBtIv8.js.map +0 -1
  294. package/dist/listbox-oDeP8FvH.mjs +0 -65
  295. package/dist/listbox-oDeP8FvH.mjs.map +0 -1
  296. package/dist/notification-BtcM7Ndu.mjs.map +0 -1
  297. package/dist/notification-Dsg3Vzfi.js +0 -2
  298. package/dist/notification-Dsg3Vzfi.js.map +0 -1
  299. package/dist/search-field-0CBoxcNH.js +0 -2
  300. package/dist/search-field-0CBoxcNH.js.map +0 -1
  301. package/dist/search-field-aP_i6Nr0.mjs +0 -91
  302. package/dist/search-field-aP_i6Nr0.mjs.map +0 -1
  303. package/dist/text-field-9zPmL99g.mjs +0 -185
  304. package/dist/text-field-9zPmL99g.mjs.map +0 -1
  305. package/dist/text-field-CKCwxTJX.js +0 -2
  306. package/dist/text-field-CKCwxTJX.js.map +0 -1
@@ -1,185 +0,0 @@
1
- import { jsx as i, jsxs as u } from "react/jsx-runtime";
2
- import { useRef as T, forwardRef as k, useId as B, isValidElement as H } from "react";
3
- import { b as L } from "./button-D-BBdNhd.mjs";
4
- import { F as M } from "./field-error-text-CBSX8dGx.mjs";
5
- import { F as S } from "./field-helper-text-C5ee4SFV.mjs";
6
- import { r as D } from "./check-circle-filled.es-umBwOv5_.mjs";
7
- import { r as G } from "./close.es-BPmk2wkU.mjs";
8
- import { L as J } from "./label-7sJe5-pX.mjs";
9
- import { a as K } from "./spinner-DRQN6YdK.mjs";
10
- import { c as Q } from "./bind-CU-R61T-.mjs";
11
- const U = {
12
- "purpur-text-field": "_purpur-text-field_1n0q1_1",
13
- "purpur-text-field__label": "_purpur-text-field__label_1n0q1_7",
14
- "purpur-text-field__label-text": "_purpur-text-field__label-text_1n0q1_12",
15
- "purpur-text-field__field-row": "_purpur-text-field__field-row_1n0q1_15",
16
- "purpur-text-field__frame": "_purpur-text-field__frame_1n0q1_19",
17
- "purpur-text-field__frame--negative": "_purpur-text-field__frame--negative_1n0q1_26",
18
- "purpur-text-field__input-container": "_purpur-text-field__input-container_1n0q1_29",
19
- "purpur-text-field__input-container--disabled": "_purpur-text-field__input-container--disabled_1n0q1_40",
20
- "purpur-text-field__input-container--readonly": "_purpur-text-field__input-container--readonly_1n0q1_43",
21
- "purpur-text-field__input-container--has-clear-button": "_purpur-text-field__input-container--has-clear-button_1n0q1_46",
22
- "purpur-text-field__input-container--end-adornment": "_purpur-text-field__input-container--end-adornment_1n0q1_49",
23
- "purpur-text-field__input": "_purpur-text-field__input_1n0q1_29",
24
- "purpur-text-field__input-container--start-adornment": "_purpur-text-field__input-container--start-adornment_1n0q1_55",
25
- "purpur-text-field__input-container--negative": "_purpur-text-field__input-container--negative_1n0q1_61",
26
- "purpur-text-field__input--valid": "_purpur-text-field__input--valid_1n0q1_109",
27
- "purpur-text-field__input--error": "_purpur-text-field__input--error_1n0q1_109",
28
- "purpur-text-field__input--negative": "_purpur-text-field__input--negative_1n0q1_130",
29
- "purpur-text-field__adornment-container": "_purpur-text-field__adornment-container_1n0q1_146",
30
- "purpur-text-field__valid-icon": "_purpur-text-field__valid-icon_1n0q1_151",
31
- "purpur-text-field__valid-icon--negative": "_purpur-text-field__valid-icon--negative_1n0q1_154"
32
- }, W = (d) => T(d), _ = Q.bind(U), e = "purpur-text-field", C = k(
33
- ({
34
- ["data-testid"]: d,
35
- className: I,
36
- clearButtonAriaLabel: x,
37
- beforeField: b,
38
- afterField: v,
39
- endAdornment: s,
40
- errorText: l,
41
- helperText: h,
42
- hideRequiredAsterisk: R = !1,
43
- label: $,
44
- loading: q = !1,
45
- onClear: y,
46
- startAdornment: w,
47
- valid: O = !1,
48
- negative: n = !1,
49
- ...t
50
- }, p) => {
51
- const V = B(), o = t.id ?? V, r = (a) => d ? `${d}-${a}` : void 0, N = O && !l, c = h ? `${o}-helper-text` : void 0, f = [w].filter((a) => !!a), g = (typeof t.value == "number" ? t.value !== void 0 : t.value?.length) && !t.disabled && !t.readOnly && !q && y && x, F = W(null), j = (a) => {
52
- F.current = a, typeof p == "function" ? p(a) : p && (p.current = a);
53
- }, E = () => {
54
- y?.(), F.current?.focus();
55
- }, m = [
56
- q && /* @__PURE__ */ i(
57
- K,
58
- {
59
- disabled: t.disabled,
60
- size: "xs",
61
- "data-testid": r("spinner"),
62
- negative: n
63
- },
64
- "spinner"
65
- ),
66
- g && /* @__PURE__ */ i(
67
- L,
68
- {
69
- negative: n,
70
- variant: "tertiary-purple",
71
- onClick: E,
72
- iconOnly: !0,
73
- "aria-label": x ?? "",
74
- "data-testid": r("clear-button"),
75
- tabIndex: -1,
76
- children: /* @__PURE__ */ i(G, { size: "xs" })
77
- },
78
- "clear-button"
79
- ),
80
- N && /* @__PURE__ */ i(
81
- D,
82
- {
83
- "data-testid": r("valid-icon"),
84
- className: _(`${e}__valid-icon`, {
85
- [`${e}__valid-icon--negative`]: n
86
- })
87
- },
88
- "valid-icon"
89
- )
90
- ].filter((a) => !!a), z = _(`${e}__input-container`, {
91
- [`${e}__input-container--start-adornment`]: f.length,
92
- [`${e}__input-container--end-adornment`]: m.length || s,
93
- [`${e}__input-container--disabled`]: t.disabled,
94
- [`${e}__input-container--has-clear-button`]: g,
95
- [`${e}__input-container--readonly`]: t.readOnly && !t.disabled,
96
- [`${e}__input-container--negative`]: n
97
- });
98
- return /* @__PURE__ */ u("div", { className: _(I, e), children: [
99
- $ && /* @__PURE__ */ u(
100
- J,
101
- {
102
- htmlFor: o,
103
- className: _(`${e}__label`),
104
- "data-testid": r("label"),
105
- disabled: t.disabled,
106
- negative: n,
107
- children: [
108
- t.required && !R && /* @__PURE__ */ i("span", { "aria-hidden": !0, children: "*" }),
109
- $
110
- ]
111
- }
112
- ),
113
- /* @__PURE__ */ u("div", { className: _(`${e}__field-row`), children: [
114
- !!b && b,
115
- /* @__PURE__ */ u("div", { className: z, children: [
116
- !!f.length && /* @__PURE__ */ i(
117
- "div",
118
- {
119
- "data-testid": r("start-adornments"),
120
- className: _(`${e}__adornment-container`),
121
- children: f
122
- }
123
- ),
124
- /* @__PURE__ */ i(
125
- "input",
126
- {
127
- ...t,
128
- id: o,
129
- ref: j,
130
- "data-testid": r("input"),
131
- "aria-describedby": t["aria-describedby"] || c,
132
- "aria-invalid": t["aria-invalid"] || !!l,
133
- className: _([
134
- `${e}__input`,
135
- {
136
- [`${e}__input--valid`]: N,
137
- [`${e}__input--error`]: !!l,
138
- [`${e}__input--negative`]: n
139
- }
140
- ])
141
- }
142
- ),
143
- /* @__PURE__ */ i(
144
- "div",
145
- {
146
- className: _(`${e}__frame`, {
147
- [`${e}__frame--negative`]: n
148
- })
149
- }
150
- ),
151
- (!!m.length || s) && /* @__PURE__ */ u(
152
- "div",
153
- {
154
- "data-testid": r("end-adornments"),
155
- className: _(`${e}__adornment-container`),
156
- children: [
157
- m,
158
- s
159
- ]
160
- }
161
- )
162
- ] }),
163
- !!v && v
164
- ] }),
165
- c && /* @__PURE__ */ i(
166
- S,
167
- {
168
- "data-testid": r("helper-text"),
169
- id: c,
170
- negative: n,
171
- disabled: t.disabled,
172
- children: h
173
- }
174
- ),
175
- l && /* @__PURE__ */ i(M, { "data-testid": r("error-text"), negative: n, children: l })
176
- ] });
177
- }
178
- );
179
- C.displayName = "TextField";
180
- const _e = (d) => H(d) && d.type.displayName === C.displayName;
181
- export {
182
- C as T,
183
- _e as i
184
- };
185
- //# sourceMappingURL=text-field-9zPmL99g.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"text-field-9zPmL99g.mjs","sources":["../../../components/text-field/src/utils.ts","../../../components/text-field/src/text-field.tsx"],"sourcesContent":["import { type MutableRefObject, useRef } from \"react\";\n\nexport const useMutableRefObject = <T>(value: T): MutableRefObject<T> => {\n return useRef<T>(value) as MutableRefObject<T>;\n};\n","import React, {\n forwardRef,\n type HTMLInputTypeAttribute,\n isValidElement,\n type ReactElement,\n type ReactNode,\n useId,\n} from \"react\";\nimport { Button } from \"@purpur/button\";\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 { IconClose } from \"@purpur/icon/close\";\nimport { Label } from \"@purpur/label\";\nimport { Spinner } from \"@purpur/spinner\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./text-field.module.scss\";\nimport { useMutableRefObject } from \"./utils\";\n\ntype TextFieldBaseProps = {\n /**\n * Use to display e.g. a button before the text field.\n *\n * _NOTE: Should ideally only be used by other purpur components!_\n */\n beforeField?: ReactNode;\n /**\n * Use to display e.g. a button after the text field.\n *\n * _NOTE: Should ideally only be used by other purpur components!_\n */\n afterField?: ReactNode;\n /**\n * Use to display e.g. an icon at the end inside of the text field.\n *\n * _NOTE: Should ideally only be used by other purpur components!_\n */\n endAdornment?: ReactNode;\n /**\n * Use to render error message below the text field. The text field renders with error appearance.\n * */\n errorText?: string;\n /**\n * Use to give context about the field's input. Renders below the field.\n * */\n helperText?: string;\n /**\n * The label of the text field.\n * */\n label?: string;\n /**\n * Use to render a spinner at the end inside of the text field.\n */\n loading?: boolean;\n /**\n * Hide the asterisk for required fields.\n * This is useful when the field is required but the context already indicates that.\n */\n hideRequiredAsterisk?: boolean;\n /**\n * Use to display e.g. an icon at the start inside of the text field.\n *\n * _NOTE: Should ideally only be used by other purpur components!_\n */\n startAdornment?: ReactNode;\n /**\n * Use to set the type of the field.\n */\n type?: Extract<\n HTMLInputTypeAttribute,\n \"email\" | \"number\" | \"password\" | \"search\" | \"tel\" | \"text\"\n >;\n /**\n * Use to render text field with valid appearance. A check\n * icon will render at the start inside of the input.\n */\n valid?: boolean;\n negative?: boolean;\n};\n\ntype TextFieldClearProps =\n | {\n /**\n * An accessible label for the clear button.\n * */\n clearButtonAriaLabel: string;\n /**\n * Event handler called when the clear button is clicked.\n * */\n onClear: () => void;\n }\n | {\n /**\n * An accessible label for the clear button.\n * */\n clearButtonAriaLabel?: never;\n /**\n * Event handler called when the clear button is clicked.\n * */\n onClear?: never;\n };\n\nexport type TextFieldProps = Omit<BaseProps<\"input\">, \"type\"> &\n TextFieldBaseProps &\n TextFieldClearProps;\n\nconst cx = c.bind(styles);\nconst rootClassName = \"purpur-text-field\";\n\nexport const TextField = forwardRef<HTMLInputElement, TextFieldProps>(\n (\n {\n [\"data-testid\"]: dataTestId,\n className,\n clearButtonAriaLabel,\n beforeField,\n afterField,\n endAdornment,\n errorText,\n helperText,\n hideRequiredAsterisk = false,\n label,\n loading = false,\n onClear,\n startAdornment,\n valid = false,\n negative = false,\n ...inputProps\n },\n ref\n ) => {\n const randomId = useId();\n const inputId = inputProps.id ?? randomId;\n const getTestId = (name: string) => (dataTestId ? `${dataTestId}-${name}` : undefined);\n const isValid = valid && !errorText;\n const helperTextId = helperText ? `${inputId}-helper-text` : undefined;\n const startAdornments: ReactNode[] = [startAdornment].filter((adornment) => !!adornment);\n const hasValue =\n typeof inputProps.value === \"number\"\n ? inputProps.value !== undefined\n : inputProps.value?.length;\n const hasClearButton =\n hasValue &&\n !inputProps.disabled &&\n !inputProps.readOnly &&\n !loading &&\n onClear &&\n clearButtonAriaLabel;\n\n const internalRef = useMutableRefObject<HTMLInputElement | null>(null);\n const setRef = (node: HTMLInputElement | null) => {\n internalRef.current = node;\n if (typeof ref === \"function\") {\n ref(node);\n } else if (ref) {\n ref.current = node;\n }\n };\n const handleClear = () => {\n onClear?.();\n internalRef.current?.focus();\n };\n\n const localEndAdornments: ReactNode[] = [\n loading && (\n <Spinner\n key=\"spinner\"\n disabled={inputProps.disabled}\n size=\"xs\"\n data-testid={getTestId(\"spinner\")}\n negative={negative}\n />\n ),\n hasClearButton && (\n <Button\n negative={negative}\n key=\"clear-button\"\n variant=\"tertiary-purple\"\n onClick={handleClear}\n iconOnly\n aria-label={clearButtonAriaLabel ?? \"\"}\n data-testid={getTestId(\"clear-button\")}\n tabIndex={-1}\n >\n <IconClose size=\"xs\" />\n </Button>\n ),\n isValid && (\n <IconCheckCircleFilled\n key=\"valid-icon\"\n data-testid={getTestId(\"valid-icon\")}\n className={cx(`${rootClassName}__valid-icon`, {\n [`${rootClassName}__valid-icon--negative`]: negative,\n })}\n />\n ),\n ].filter((adornment) => !!adornment);\n\n const inputContainerClassnames = cx(`${rootClassName}__input-container`, {\n [`${rootClassName}__input-container--start-adornment`]: startAdornments.length,\n [`${rootClassName}__input-container--end-adornment`]:\n localEndAdornments.length || endAdornment,\n [`${rootClassName}__input-container--disabled`]: inputProps.disabled,\n [`${rootClassName}__input-container--has-clear-button`]: hasClearButton,\n [`${rootClassName}__input-container--readonly`]: inputProps.readOnly && !inputProps.disabled,\n [`${rootClassName}__input-container--negative`]: negative,\n });\n\n return (\n <div className={cx(className, rootClassName)}>\n {label && (\n <Label\n htmlFor={inputId}\n className={cx(`${rootClassName}__label`)}\n data-testid={getTestId(\"label\")}\n disabled={inputProps.disabled}\n negative={negative}\n >\n {inputProps.required && !hideRequiredAsterisk && <span aria-hidden>*</span>}\n {label}\n </Label>\n )}\n <div className={cx(`${rootClassName}__field-row`)}>\n {!!beforeField && beforeField}\n <div className={inputContainerClassnames}>\n {!!startAdornments.length && (\n <div\n data-testid={getTestId(\"start-adornments\")}\n className={cx(`${rootClassName}__adornment-container`)}\n >\n {startAdornments}\n </div>\n )}\n <input\n {...inputProps}\n id={inputId}\n ref={setRef}\n data-testid={getTestId(\"input\")}\n aria-describedby={inputProps[\"aria-describedby\"] || helperTextId}\n aria-invalid={inputProps[\"aria-invalid\"] || !!errorText}\n className={cx([\n `${rootClassName}__input`,\n {\n [`${rootClassName}__input--valid`]: isValid,\n [`${rootClassName}__input--error`]: !!errorText,\n [`${rootClassName}__input--negative`]: negative,\n },\n ])}\n />\n <div\n className={cx(`${rootClassName}__frame`, {\n [`${rootClassName}__frame--negative`]: negative,\n })}\n />\n {(!!localEndAdornments.length || endAdornment) && (\n <div\n data-testid={getTestId(\"end-adornments\")}\n className={cx(`${rootClassName}__adornment-container`)}\n >\n {localEndAdornments}\n {endAdornment}\n </div>\n )}\n </div>\n {!!afterField && afterField}\n </div>\n {helperTextId && (\n <FieldHelperText\n data-testid={getTestId(\"helper-text\")}\n id={helperTextId}\n negative={negative}\n disabled={inputProps.disabled}\n >\n {helperText}\n </FieldHelperText>\n )}\n {errorText && (\n <FieldErrorText data-testid={getTestId(\"error-text\")} negative={negative}>\n {errorText}\n </FieldErrorText>\n )}\n </div>\n );\n }\n);\n\nTextField.displayName = \"TextField\";\n\nexport const isTextField = (child?: ReactNode): child is ReactElement<TextFieldProps> =>\n isValidElement<TextFieldProps>(child) &&\n (child.type as any).displayName === TextField.displayName; // eslint-disable-line @typescript-eslint/no-explicit-any\n"],"names":["useMutableRefObject","value","useRef","cx","c","styles","rootClassName","TextField","forwardRef","dataTestId","className","clearButtonAriaLabel","beforeField","afterField","endAdornment","errorText","helperText","hideRequiredAsterisk","label","loading","onClear","startAdornment","valid","negative","inputProps","ref","randomId","useId","inputId","getTestId","name","isValid","helperTextId","startAdornments","adornment","hasClearButton","internalRef","setRef","node","handleClear","localEndAdornments","jsx","Spinner","Button","IconClose","IconCheckCircleFilled","inputContainerClassnames","jsxs","Label","FieldHelperText","FieldErrorText","isTextField","child","isValidElement"],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- "use strict";const n=require("react/jsx-runtime"),s=require("react"),k=require("./button-BxdChrq-.js"),z=require("./field-error-text-FhQulSV5.js"),H=require("./field-helper-text-DSKO-Tce.js"),B=require("./check-circle-filled.es-5-GXE9l4.js"),M=require("./close.es-VL3lKi1O.js"),S=require("./label-yHK80hhV.js"),D=require("./spinner-tKunS_o-.js"),G=require("./bind-DeUYJ6m9.js"),J={"purpur-text-field":"_purpur-text-field_1n0q1_1","purpur-text-field__label":"_purpur-text-field__label_1n0q1_7","purpur-text-field__label-text":"_purpur-text-field__label-text_1n0q1_12","purpur-text-field__field-row":"_purpur-text-field__field-row_1n0q1_15","purpur-text-field__frame":"_purpur-text-field__frame_1n0q1_19","purpur-text-field__frame--negative":"_purpur-text-field__frame--negative_1n0q1_26","purpur-text-field__input-container":"_purpur-text-field__input-container_1n0q1_29","purpur-text-field__input-container--disabled":"_purpur-text-field__input-container--disabled_1n0q1_40","purpur-text-field__input-container--readonly":"_purpur-text-field__input-container--readonly_1n0q1_43","purpur-text-field__input-container--has-clear-button":"_purpur-text-field__input-container--has-clear-button_1n0q1_46","purpur-text-field__input-container--end-adornment":"_purpur-text-field__input-container--end-adornment_1n0q1_49","purpur-text-field__input":"_purpur-text-field__input_1n0q1_29","purpur-text-field__input-container--start-adornment":"_purpur-text-field__input-container--start-adornment_1n0q1_55","purpur-text-field__input-container--negative":"_purpur-text-field__input-container--negative_1n0q1_61","purpur-text-field__input--valid":"_purpur-text-field__input--valid_1n0q1_109","purpur-text-field__input--error":"_purpur-text-field__input--error_1n0q1_109","purpur-text-field__input--negative":"_purpur-text-field__input--negative_1n0q1_130","purpur-text-field__adornment-container":"_purpur-text-field__adornment-container_1n0q1_146","purpur-text-field__valid-icon":"_purpur-text-field__valid-icon_1n0q1_151","purpur-text-field__valid-icon--negative":"_purpur-text-field__valid-icon--negative_1n0q1_154"},K=d=>s.useRef(d),_=G.c.bind(J),e="purpur-text-field",m=s.forwardRef(({["data-testid"]:d,className:R,clearButtonAriaLabel:b,beforeField:q,afterField:v,endAdornment:p,errorText:l,helperText:h,hideRequiredAsterisk:C=!1,label:$,loading:j=!1,onClear:y,startAdornment:I,valid:T=!1,negative:i=!1,...t},u)=>{const w=s.useId(),c=t.id??w,r=a=>d?`${d}-${a}`:void 0,N=T&&!l,o=h?`${c}-helper-text`:void 0,x=[I].filter(a=>!!a),g=(typeof t.value=="number"?t.value!==void 0:t.value?.length)&&!t.disabled&&!t.readOnly&&!j&&y&&b,F=K(null),E=a=>{F.current=a,typeof u=="function"?u(a):u&&(u.current=a)},O=()=>{y?.(),F.current?.focus()},f=[j&&n.jsx(D.Spinner,{disabled:t.disabled,size:"xs","data-testid":r("spinner"),negative:i},"spinner"),g&&n.jsx(k.Button,{negative:i,variant:"tertiary-purple",onClick:O,iconOnly:!0,"aria-label":b??"","data-testid":r("clear-button"),tabIndex:-1,children:n.jsx(M.r,{size:"xs"})},"clear-button"),N&&n.jsx(B.r,{"data-testid":r("valid-icon"),className:_(`${e}__valid-icon`,{[`${e}__valid-icon--negative`]:i})},"valid-icon")].filter(a=>!!a),V=_(`${e}__input-container`,{[`${e}__input-container--start-adornment`]:x.length,[`${e}__input-container--end-adornment`]:f.length||p,[`${e}__input-container--disabled`]:t.disabled,[`${e}__input-container--has-clear-button`]:g,[`${e}__input-container--readonly`]:t.readOnly&&!t.disabled,[`${e}__input-container--negative`]:i});return n.jsxs("div",{className:_(R,e),children:[$&&n.jsxs(S.Label,{htmlFor:c,className:_(`${e}__label`),"data-testid":r("label"),disabled:t.disabled,negative:i,children:[t.required&&!C&&n.jsx("span",{"aria-hidden":!0,children:"*"}),$]}),n.jsxs("div",{className:_(`${e}__field-row`),children:[!!q&&q,n.jsxs("div",{className:V,children:[!!x.length&&n.jsx("div",{"data-testid":r("start-adornments"),className:_(`${e}__adornment-container`),children:x}),n.jsx("input",{...t,id:c,ref:E,"data-testid":r("input"),"aria-describedby":t["aria-describedby"]||o,"aria-invalid":t["aria-invalid"]||!!l,className:_([`${e}__input`,{[`${e}__input--valid`]:N,[`${e}__input--error`]:!!l,[`${e}__input--negative`]:i}])}),n.jsx("div",{className:_(`${e}__frame`,{[`${e}__frame--negative`]:i})}),(!!f.length||p)&&n.jsxs("div",{"data-testid":r("end-adornments"),className:_(`${e}__adornment-container`),children:[f,p]})]}),!!v&&v]}),o&&n.jsx(H.FieldHelperText,{"data-testid":r("helper-text"),id:o,negative:i,disabled:t.disabled,children:h}),l&&n.jsx(z.FieldErrorText,{"data-testid":r("error-text"),negative:i,children:l})]})});m.displayName="TextField";const L=d=>s.isValidElement(d)&&d.type.displayName===m.displayName;exports.TextField=m;exports.isTextField=L;
2
- //# sourceMappingURL=text-field-CKCwxTJX.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"text-field-CKCwxTJX.js","sources":["../../../components/text-field/src/utils.ts","../../../components/text-field/src/text-field.tsx"],"sourcesContent":["import { type MutableRefObject, useRef } from \"react\";\n\nexport const useMutableRefObject = <T>(value: T): MutableRefObject<T> => {\n return useRef<T>(value) as MutableRefObject<T>;\n};\n","import React, {\n forwardRef,\n type HTMLInputTypeAttribute,\n isValidElement,\n type ReactElement,\n type ReactNode,\n useId,\n} from \"react\";\nimport { Button } from \"@purpur/button\";\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 { IconClose } from \"@purpur/icon/close\";\nimport { Label } from \"@purpur/label\";\nimport { Spinner } from \"@purpur/spinner\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./text-field.module.scss\";\nimport { useMutableRefObject } from \"./utils\";\n\ntype TextFieldBaseProps = {\n /**\n * Use to display e.g. a button before the text field.\n *\n * _NOTE: Should ideally only be used by other purpur components!_\n */\n beforeField?: ReactNode;\n /**\n * Use to display e.g. a button after the text field.\n *\n * _NOTE: Should ideally only be used by other purpur components!_\n */\n afterField?: ReactNode;\n /**\n * Use to display e.g. an icon at the end inside of the text field.\n *\n * _NOTE: Should ideally only be used by other purpur components!_\n */\n endAdornment?: ReactNode;\n /**\n * Use to render error message below the text field. The text field renders with error appearance.\n * */\n errorText?: string;\n /**\n * Use to give context about the field's input. Renders below the field.\n * */\n helperText?: string;\n /**\n * The label of the text field.\n * */\n label?: string;\n /**\n * Use to render a spinner at the end inside of the text field.\n */\n loading?: boolean;\n /**\n * Hide the asterisk for required fields.\n * This is useful when the field is required but the context already indicates that.\n */\n hideRequiredAsterisk?: boolean;\n /**\n * Use to display e.g. an icon at the start inside of the text field.\n *\n * _NOTE: Should ideally only be used by other purpur components!_\n */\n startAdornment?: ReactNode;\n /**\n * Use to set the type of the field.\n */\n type?: Extract<\n HTMLInputTypeAttribute,\n \"email\" | \"number\" | \"password\" | \"search\" | \"tel\" | \"text\"\n >;\n /**\n * Use to render text field with valid appearance. A check\n * icon will render at the start inside of the input.\n */\n valid?: boolean;\n negative?: boolean;\n};\n\ntype TextFieldClearProps =\n | {\n /**\n * An accessible label for the clear button.\n * */\n clearButtonAriaLabel: string;\n /**\n * Event handler called when the clear button is clicked.\n * */\n onClear: () => void;\n }\n | {\n /**\n * An accessible label for the clear button.\n * */\n clearButtonAriaLabel?: never;\n /**\n * Event handler called when the clear button is clicked.\n * */\n onClear?: never;\n };\n\nexport type TextFieldProps = Omit<BaseProps<\"input\">, \"type\"> &\n TextFieldBaseProps &\n TextFieldClearProps;\n\nconst cx = c.bind(styles);\nconst rootClassName = \"purpur-text-field\";\n\nexport const TextField = forwardRef<HTMLInputElement, TextFieldProps>(\n (\n {\n [\"data-testid\"]: dataTestId,\n className,\n clearButtonAriaLabel,\n beforeField,\n afterField,\n endAdornment,\n errorText,\n helperText,\n hideRequiredAsterisk = false,\n label,\n loading = false,\n onClear,\n startAdornment,\n valid = false,\n negative = false,\n ...inputProps\n },\n ref\n ) => {\n const randomId = useId();\n const inputId = inputProps.id ?? randomId;\n const getTestId = (name: string) => (dataTestId ? `${dataTestId}-${name}` : undefined);\n const isValid = valid && !errorText;\n const helperTextId = helperText ? `${inputId}-helper-text` : undefined;\n const startAdornments: ReactNode[] = [startAdornment].filter((adornment) => !!adornment);\n const hasValue =\n typeof inputProps.value === \"number\"\n ? inputProps.value !== undefined\n : inputProps.value?.length;\n const hasClearButton =\n hasValue &&\n !inputProps.disabled &&\n !inputProps.readOnly &&\n !loading &&\n onClear &&\n clearButtonAriaLabel;\n\n const internalRef = useMutableRefObject<HTMLInputElement | null>(null);\n const setRef = (node: HTMLInputElement | null) => {\n internalRef.current = node;\n if (typeof ref === \"function\") {\n ref(node);\n } else if (ref) {\n ref.current = node;\n }\n };\n const handleClear = () => {\n onClear?.();\n internalRef.current?.focus();\n };\n\n const localEndAdornments: ReactNode[] = [\n loading && (\n <Spinner\n key=\"spinner\"\n disabled={inputProps.disabled}\n size=\"xs\"\n data-testid={getTestId(\"spinner\")}\n negative={negative}\n />\n ),\n hasClearButton && (\n <Button\n negative={negative}\n key=\"clear-button\"\n variant=\"tertiary-purple\"\n onClick={handleClear}\n iconOnly\n aria-label={clearButtonAriaLabel ?? \"\"}\n data-testid={getTestId(\"clear-button\")}\n tabIndex={-1}\n >\n <IconClose size=\"xs\" />\n </Button>\n ),\n isValid && (\n <IconCheckCircleFilled\n key=\"valid-icon\"\n data-testid={getTestId(\"valid-icon\")}\n className={cx(`${rootClassName}__valid-icon`, {\n [`${rootClassName}__valid-icon--negative`]: negative,\n })}\n />\n ),\n ].filter((adornment) => !!adornment);\n\n const inputContainerClassnames = cx(`${rootClassName}__input-container`, {\n [`${rootClassName}__input-container--start-adornment`]: startAdornments.length,\n [`${rootClassName}__input-container--end-adornment`]:\n localEndAdornments.length || endAdornment,\n [`${rootClassName}__input-container--disabled`]: inputProps.disabled,\n [`${rootClassName}__input-container--has-clear-button`]: hasClearButton,\n [`${rootClassName}__input-container--readonly`]: inputProps.readOnly && !inputProps.disabled,\n [`${rootClassName}__input-container--negative`]: negative,\n });\n\n return (\n <div className={cx(className, rootClassName)}>\n {label && (\n <Label\n htmlFor={inputId}\n className={cx(`${rootClassName}__label`)}\n data-testid={getTestId(\"label\")}\n disabled={inputProps.disabled}\n negative={negative}\n >\n {inputProps.required && !hideRequiredAsterisk && <span aria-hidden>*</span>}\n {label}\n </Label>\n )}\n <div className={cx(`${rootClassName}__field-row`)}>\n {!!beforeField && beforeField}\n <div className={inputContainerClassnames}>\n {!!startAdornments.length && (\n <div\n data-testid={getTestId(\"start-adornments\")}\n className={cx(`${rootClassName}__adornment-container`)}\n >\n {startAdornments}\n </div>\n )}\n <input\n {...inputProps}\n id={inputId}\n ref={setRef}\n data-testid={getTestId(\"input\")}\n aria-describedby={inputProps[\"aria-describedby\"] || helperTextId}\n aria-invalid={inputProps[\"aria-invalid\"] || !!errorText}\n className={cx([\n `${rootClassName}__input`,\n {\n [`${rootClassName}__input--valid`]: isValid,\n [`${rootClassName}__input--error`]: !!errorText,\n [`${rootClassName}__input--negative`]: negative,\n },\n ])}\n />\n <div\n className={cx(`${rootClassName}__frame`, {\n [`${rootClassName}__frame--negative`]: negative,\n })}\n />\n {(!!localEndAdornments.length || endAdornment) && (\n <div\n data-testid={getTestId(\"end-adornments\")}\n className={cx(`${rootClassName}__adornment-container`)}\n >\n {localEndAdornments}\n {endAdornment}\n </div>\n )}\n </div>\n {!!afterField && afterField}\n </div>\n {helperTextId && (\n <FieldHelperText\n data-testid={getTestId(\"helper-text\")}\n id={helperTextId}\n negative={negative}\n disabled={inputProps.disabled}\n >\n {helperText}\n </FieldHelperText>\n )}\n {errorText && (\n <FieldErrorText data-testid={getTestId(\"error-text\")} negative={negative}>\n {errorText}\n </FieldErrorText>\n )}\n </div>\n );\n }\n);\n\nTextField.displayName = \"TextField\";\n\nexport const isTextField = (child?: ReactNode): child is ReactElement<TextFieldProps> =>\n isValidElement<TextFieldProps>(child) &&\n (child.type as any).displayName === TextField.displayName; // eslint-disable-line @typescript-eslint/no-explicit-any\n"],"names":["useMutableRefObject","value","useRef","cx","c","styles","rootClassName","TextField","forwardRef","dataTestId","className","clearButtonAriaLabel","beforeField","afterField","endAdornment","errorText","helperText","hideRequiredAsterisk","label","loading","onClear","startAdornment","valid","negative","inputProps","ref","randomId","useId","inputId","getTestId","name","isValid","helperTextId","startAdornments","adornment","hasClearButton","internalRef","setRef","node","handleClear","localEndAdornments","jsx","Spinner","Button","IconClose","IconCheckCircleFilled","inputContainerClassnames","jsxs","Label","FieldHelperText","FieldErrorText","isTextField","child","isValidElement"],"mappings":"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"}