@sonic-equipment/ui 259.0.2 → 260.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (321) hide show
  1. package/dist/algolia/algolia-active-categories.js +2 -2
  2. package/dist/algolia/algolia-categories-filters.js +2 -2
  3. package/dist/badges/badge/badge.d.ts +5 -3
  4. package/dist/badges/badge/badge.js +4 -4
  5. package/dist/badges/badge/badge.module.css.js +1 -1
  6. package/dist/badges/badge/icon-with-badge/icon-with-badge.d.ts +11 -6
  7. package/dist/badges/badge/icon-with-badge/icon-with-badge.js +5 -2
  8. package/dist/badges/badge/icon-with-badge/icon-with-badge.module.css.js +1 -1
  9. package/dist/base.css +2 -2
  10. package/dist/breadcrumbs/breadcrumb.js +3 -4
  11. package/dist/buttons/add-to-cart-button/add-to-cart-button.js +2 -2
  12. package/dist/buttons/button/button.js +2 -2
  13. package/dist/buttons/close-button/close-button.d.ts +12 -0
  14. package/dist/buttons/close-button/close-button.js +11 -0
  15. package/dist/buttons/close-button/close-button.module.css.js +3 -0
  16. package/dist/buttons/favorite/favorite-button.js +3 -3
  17. package/dist/buttons/icon-button/icon-button.d.ts +13 -5
  18. package/dist/buttons/icon-button/icon-button.js +6 -5
  19. package/dist/buttons/icon-button/icon-button.module.css.js +1 -1
  20. package/dist/buttons/link/link.d.ts +2 -0
  21. package/dist/buttons/link/link.js +4 -7
  22. package/dist/cards/orderline-card/connected-remove-button.js +1 -2
  23. package/dist/carousel/carousel-navigation-button.js +2 -3
  24. package/dist/collapsables/accordion/accordion-item.js +2 -3
  25. package/dist/collapsables/show-all/show-all.js +2 -2
  26. package/dist/collapsables/unmounter/utils.js +4 -1
  27. package/dist/country-language-selection-list/connected-country-language-selection-list.d.ts +1 -0
  28. package/dist/country-language-selection-list/connected-country-language-selection-list.js +268 -0
  29. package/dist/country-language-selection-list/country-language-selection-list.d.ts +18 -0
  30. package/dist/country-language-selection-list/country-language-selection-list.js +54 -0
  31. package/dist/country-language-selection-list/country-language-selection-list.module.css.js +3 -0
  32. package/dist/country-language-selector/connected-country-language-selector.d.ts +10 -0
  33. package/dist/country-language-selector/connected-country-language-selector.js +129 -0
  34. package/dist/country-language-selector/country-language-selector.d.ts +18 -0
  35. package/dist/country-language-selector/country-language-selector.js +52 -0
  36. package/dist/country-language-selector/country-language-selector.module.css.js +3 -0
  37. package/dist/country-language-selector-button/connected-country-language-selector-button.d.ts +1 -0
  38. package/dist/country-language-selector-button/connected-country-language-selector-button.js +22 -0
  39. package/dist/country-language-selector-button/country-language-selector-button.d.ts +7 -0
  40. package/dist/country-language-selector-button/country-language-selector-button.js +18 -0
  41. package/dist/country-language-selector-button/country-language-selector-button.module.css.js +3 -0
  42. package/dist/country-selector/country-selector-trigger/country-selector-trigger.js +2 -2
  43. package/dist/country-selector/country-selector-trigger/country-selector-trigger.module.css.js +1 -1
  44. package/dist/country-selector/use-countries-languages.d.ts +2 -2
  45. package/dist/country-selector/use-countries-languages.js +1 -1
  46. package/dist/delivery-time/delivery-time.js +1 -1
  47. package/dist/display/details/details.js +2 -2
  48. package/dist/exports.d.ts +71 -3
  49. package/dist/filters/active-filters/active-filters.js +1 -2
  50. package/dist/filters/active-filters/active-filters.module.css.js +1 -1
  51. package/dist/filters/pagination/pagination.js +1 -3
  52. package/dist/filters/pagination/pagination.module.css.js +1 -1
  53. package/dist/flag/flag.d.ts +8 -0
  54. package/dist/flag/flag.js +11 -0
  55. package/dist/flag/flag.module.css.js +3 -0
  56. package/dist/flags/flag-ad.d.ts +1 -0
  57. package/dist/flags/flag-ad.js +7 -0
  58. package/dist/flags/flag-ae.d.ts +1 -0
  59. package/dist/flags/flag-ae.js +7 -0
  60. package/dist/flags/flag-al.d.ts +1 -0
  61. package/dist/flags/flag-al.js +7 -0
  62. package/dist/flags/flag-at.d.ts +1 -0
  63. package/dist/flags/flag-at.js +7 -0
  64. package/dist/flags/flag-ba.d.ts +1 -0
  65. package/dist/flags/flag-ba.js +7 -0
  66. package/dist/flags/flag-be.d.ts +1 -0
  67. package/dist/flags/flag-be.js +7 -0
  68. package/dist/flags/flag-bg.d.ts +1 -0
  69. package/dist/flags/flag-bg.js +7 -0
  70. package/dist/flags/flag-br.d.ts +1 -0
  71. package/dist/flags/flag-br.js +7 -0
  72. package/dist/flags/flag-ca.d.ts +1 -0
  73. package/dist/flags/flag-ca.js +7 -0
  74. package/dist/flags/flag-ch.d.ts +1 -0
  75. package/dist/flags/flag-ch.js +7 -0
  76. package/dist/flags/flag-cy.d.ts +1 -0
  77. package/dist/flags/flag-cy.js +7 -0
  78. package/dist/flags/flag-cz.d.ts +1 -0
  79. package/dist/flags/flag-cz.js +7 -0
  80. package/dist/flags/flag-de.d.ts +1 -0
  81. package/dist/flags/flag-de.js +7 -0
  82. package/dist/flags/flag-dj.d.ts +1 -0
  83. package/dist/flags/flag-dj.js +7 -0
  84. package/dist/flags/flag-dk.d.ts +1 -0
  85. package/dist/flags/flag-dk.js +7 -0
  86. package/dist/flags/flag-ec.d.ts +1 -0
  87. package/dist/flags/flag-ec.js +7 -0
  88. package/dist/flags/flag-ee.d.ts +1 -0
  89. package/dist/flags/flag-ee.js +7 -0
  90. package/dist/flags/flag-es.d.ts +1 -0
  91. package/dist/flags/flag-es.js +7 -0
  92. package/dist/flags/flag-eu.d.ts +1 -0
  93. package/dist/flags/flag-eu.js +7 -0
  94. package/dist/flags/flag-fi.d.ts +1 -0
  95. package/dist/flags/flag-fi.js +7 -0
  96. package/dist/flags/flag-fr.d.ts +1 -0
  97. package/dist/flags/flag-fr.js +7 -0
  98. package/dist/flags/flag-gb.d.ts +1 -0
  99. package/dist/flags/flag-gb.js +7 -0
  100. package/dist/flags/flag-gr.d.ts +1 -0
  101. package/dist/flags/flag-gr.js +7 -0
  102. package/dist/flags/flag-hr.d.ts +1 -0
  103. package/dist/flags/flag-hr.js +7 -0
  104. package/dist/flags/flag-hu.d.ts +1 -0
  105. package/dist/flags/flag-hu.js +7 -0
  106. package/dist/flags/flag-ie.d.ts +1 -0
  107. package/dist/flags/flag-ie.js +7 -0
  108. package/dist/flags/flag-iq.d.ts +1 -0
  109. package/dist/flags/flag-iq.js +7 -0
  110. package/dist/flags/flag-is.d.ts +1 -0
  111. package/dist/flags/flag-is.js +7 -0
  112. package/dist/flags/flag-it.d.ts +1 -0
  113. package/dist/flags/flag-it.js +7 -0
  114. package/dist/flags/flag-kw.d.ts +1 -0
  115. package/dist/flags/flag-kw.js +7 -0
  116. package/dist/flags/flag-kz.d.ts +1 -0
  117. package/dist/flags/flag-kz.js +7 -0
  118. package/dist/flags/flag-lb.d.ts +1 -0
  119. package/dist/flags/flag-lb.js +7 -0
  120. package/dist/flags/flag-lt.d.ts +1 -0
  121. package/dist/flags/flag-lt.js +7 -0
  122. package/dist/flags/flag-lu.d.ts +1 -0
  123. package/dist/flags/flag-lu.js +7 -0
  124. package/dist/flags/flag-lv.d.ts +1 -0
  125. package/dist/flags/flag-lv.js +7 -0
  126. package/dist/flags/flag-ma.d.ts +1 -0
  127. package/dist/flags/flag-ma.js +7 -0
  128. package/dist/flags/flag-mc.d.ts +1 -0
  129. package/dist/flags/flag-mc.js +7 -0
  130. package/dist/flags/flag-md.d.ts +1 -0
  131. package/dist/flags/flag-md.js +7 -0
  132. package/dist/flags/flag-me.d.ts +1 -0
  133. package/dist/flags/flag-me.js +7 -0
  134. package/dist/flags/flag-mk.d.ts +1 -0
  135. package/dist/flags/flag-mk.js +7 -0
  136. package/dist/flags/flag-mt.d.ts +1 -0
  137. package/dist/flags/flag-mt.js +7 -0
  138. package/dist/flags/flag-mx.d.ts +1 -0
  139. package/dist/flags/flag-mx.js +7 -0
  140. package/dist/flags/flag-my.d.ts +1 -0
  141. package/dist/flags/flag-my.js +7 -0
  142. package/dist/flags/flag-nl.d.ts +1 -0
  143. package/dist/flags/flag-nl.js +7 -0
  144. package/dist/flags/flag-no.d.ts +1 -0
  145. package/dist/flags/flag-no.js +7 -0
  146. package/dist/flags/flag-pl.d.ts +1 -0
  147. package/dist/flags/flag-pl.js +7 -0
  148. package/dist/flags/flag-pt.d.ts +1 -0
  149. package/dist/flags/flag-pt.js +7 -0
  150. package/dist/flags/flag-ro.d.ts +1 -0
  151. package/dist/flags/flag-ro.js +7 -0
  152. package/dist/flags/flag-rs.d.ts +1 -0
  153. package/dist/flags/flag-rs.js +7 -0
  154. package/dist/flags/flag-sa.d.ts +1 -0
  155. package/dist/flags/flag-sa.js +7 -0
  156. package/dist/flags/flag-se.d.ts +1 -0
  157. package/dist/flags/flag-se.js +7 -0
  158. package/dist/flags/flag-sg.d.ts +1 -0
  159. package/dist/flags/flag-sg.js +7 -0
  160. package/dist/flags/flag-si.d.ts +1 -0
  161. package/dist/flags/flag-si.js +7 -0
  162. package/dist/flags/flag-sk.d.ts +1 -0
  163. package/dist/flags/flag-sk.js +7 -0
  164. package/dist/flags/flag-tr.d.ts +1 -0
  165. package/dist/flags/flag-tr.js +7 -0
  166. package/dist/flags/flag-tw.d.ts +1 -0
  167. package/dist/flags/flag-tw.js +7 -0
  168. package/dist/flags/flag-ua.d.ts +1 -0
  169. package/dist/flags/flag-ua.js +7 -0
  170. package/dist/flags/flag-us.d.ts +1 -0
  171. package/dist/flags/flag-us.js +7 -0
  172. package/dist/flags/flag-vn.d.ts +1 -0
  173. package/dist/flags/flag-vn.js +7 -0
  174. package/dist/flags/flag-xk.d.ts +1 -0
  175. package/dist/flags/flag-xk.js +7 -0
  176. package/dist/flags/flag-za.d.ts +1 -0
  177. package/dist/flags/flag-za.js +7 -0
  178. package/dist/flags/index.d.ts +1 -0
  179. package/dist/flags/index.js +88 -0
  180. package/dist/footer/connected-footer.d.ts +1 -3
  181. package/dist/footer/connected-footer.js +3 -5
  182. package/dist/forms/elements/checkbox/checkbox.module.css.js +1 -1
  183. package/dist/forms/elements/select/select.js +3 -4
  184. package/dist/forms/fields/number-field/number-field.js +2 -4
  185. package/dist/forms/fields/search-field/search-field.js +2 -2
  186. package/dist/forms/fields/select-field/select-field.d.ts +8 -1
  187. package/dist/forms/fields/select-field/select-field.js +30 -9
  188. package/dist/forms/fields/select-field/select-field.module.css.js +1 -1
  189. package/dist/forms/fields/text-field/password-reveal-toggle/password-reveal-toggle.js +2 -3
  190. package/dist/forms/layout/form/form.js +1 -1
  191. package/dist/global-search/search-input/search-input.js +5 -4
  192. package/dist/global-search/search-result-panel/sections/no-search.js +3 -4
  193. package/dist/global-search/search-result-panel/sections/with-results.js +4 -4
  194. package/dist/global-search/search-section/search-list-item.js +1 -2
  195. package/dist/header/buttons/account/connected-account-button.js +1 -2
  196. package/dist/header/buttons/cart/connected-cart-button.js +1 -2
  197. package/dist/header/buttons/favorites/connected-favorites-button.js +1 -3
  198. package/dist/header/buttons/hamburger/hamburger-button.js +1 -1
  199. package/dist/header/buttons/hamburger/hamburger-button.module.css.js +1 -1
  200. package/dist/header/buttons/search/search-button.js +1 -2
  201. package/dist/header/header.js +1 -1
  202. package/dist/header/link-list/navigation-link-list.js +2 -2
  203. package/dist/header/link-list/navigation-link-list.module.css.js +1 -1
  204. package/dist/header/sonic-logo/sonic-logo.js +7 -2
  205. package/dist/header/sonic-logo/sonic-logo.module.css.js +1 -1
  206. package/dist/icon/icon.d.ts +10 -0
  207. package/dist/icon/icon.js +11 -0
  208. package/dist/icon/icon.module.css.js +3 -0
  209. package/dist/icons/glyph/glyphs-arrow-boldcaps-left-icon.js +0 -1
  210. package/dist/icons/glyph/glyphs-arrow-boldcaps-right-icon.js +0 -1
  211. package/dist/icons/glyph/glyphs-chevrons-bold-down-icon.js +0 -1
  212. package/dist/icons/glyph/glyphs-chevrons-bold-left-icon.js +7 -0
  213. package/dist/icons/glyph/glyphs-chevrons-bold-right-icon.js +0 -1
  214. package/dist/icons/glyph/glyphs-chevrons-bold-up-icon.js +0 -1
  215. package/dist/icons/glyph/glyphs-chevrons-slim-down-icon.js +0 -1
  216. package/dist/icons/glyph/glyphs-chevrons-slim-left-icon.js +0 -1
  217. package/dist/icons/glyph/glyphs-chevrons-slim-right-icon.js +0 -1
  218. package/dist/icons/glyph/glyphs-chevrons-slim-up-icon.js +7 -0
  219. package/dist/icons/index.d.ts +87 -0
  220. package/dist/icons/index.js +90 -0
  221. package/dist/icons/solid/solid-attention-icon.js +0 -1
  222. package/dist/icons/solid/solid-cart-icon.js +0 -1
  223. package/dist/icons/solid/solid-close-icon.js +0 -1
  224. package/dist/icons/solid/solid-edit-icon.js +0 -1
  225. package/dist/icons/solid/solid-favorite-icon.js +0 -1
  226. package/dist/icons/solid/solid-home-icon.js +0 -1
  227. package/dist/icons/solid/solid-information-icon.js +0 -1
  228. package/dist/icons/solid/solid-login-icon.js +0 -1
  229. package/dist/icons/solid/solid-logout-icon.js +0 -1
  230. package/dist/icons/solid/solid-news-icon.js +0 -1
  231. package/dist/icons/solid/solid-notice-icon.js +0 -1
  232. package/dist/icons/solid/solid-okay-icon.js +0 -1
  233. package/dist/icons/solid/solid-rating-icon.js +0 -1
  234. package/dist/icons/solid/solid-salecategory-icon.js +0 -1
  235. package/dist/icons/solid/solid-tag-icon.js +0 -1
  236. package/dist/icons/stroke/stroke-arrowdown-icon.d.ts +1 -0
  237. package/dist/icons/stroke/stroke-arrowleft-icon.d.ts +1 -0
  238. package/dist/icons/stroke/stroke-arrowleft-icon.js +7 -0
  239. package/dist/icons/stroke/stroke-arrowright-icon.d.ts +1 -0
  240. package/dist/icons/stroke/stroke-arrowright-icon.js +7 -0
  241. package/dist/icons/stroke/stroke-arrowup-icon.d.ts +1 -0
  242. package/dist/icons/stroke/stroke-categories-icon.js +0 -1
  243. package/dist/icons/stroke/stroke-checkmark-icon.js +0 -1
  244. package/dist/icons/stroke/stroke-closebox-icon.js +0 -1
  245. package/dist/icons/stroke/stroke-dehashed-icon.js +0 -1
  246. package/dist/icons/stroke/stroke-download-icon.js +0 -1
  247. package/dist/icons/stroke/stroke-event-icon.js +0 -1
  248. package/dist/icons/stroke/stroke-favorite-icon.js +0 -1
  249. package/dist/icons/stroke/stroke-filter-icon.js +0 -1
  250. package/dist/icons/stroke/stroke-hashed-icon.js +0 -1
  251. package/dist/icons/stroke/stroke-information-icon.js +0 -1
  252. package/dist/icons/stroke/stroke-minus-icon.js +0 -1
  253. package/dist/icons/stroke/stroke-notice-icon.js +7 -0
  254. package/dist/icons/stroke/stroke-plus-icon.js +0 -1
  255. package/dist/icons/stroke/stroke-recent-icon.js +0 -1
  256. package/dist/icons/stroke/stroke-search-icon.js +0 -1
  257. package/dist/icons/stroke/stroke-trash-icon.js +0 -1
  258. package/dist/index.js +72 -4
  259. package/dist/info-icon-tooltip/info-icon-tooltip.d.ts +3 -1
  260. package/dist/info-icon-tooltip/info-icon-tooltip.js +6 -8
  261. package/dist/intl/intl-context.d.ts +2 -0
  262. package/dist/intl/intl-provider.js +5 -0
  263. package/dist/intl/translation-id.d.ts +1 -1
  264. package/dist/intl/types.d.ts +3 -0
  265. package/dist/intl/types.js +6 -1
  266. package/dist/lists/download-document-list/download-document-list.js +4 -8
  267. package/dist/lists/download-document-list/download-document-list.module.css.js +1 -1
  268. package/dist/lists/feature-list/feature-list.js +5 -4
  269. package/dist/lists/feature-list/feature-list.module.css.js +1 -1
  270. package/dist/lists/icon-list/icon-list.d.ts +2 -1
  271. package/dist/lists/icon-list/icon-list.js +3 -2
  272. package/dist/lists/icon-list/icon-list.module.css.js +1 -1
  273. package/dist/lists/menu-list/menu-list-back-button.js +2 -2
  274. package/dist/lists/menu-list/menu-list-header.js +2 -2
  275. package/dist/lists/menu-list/menu-list-item.js +2 -2
  276. package/dist/lists/orderline-list/orderline-list.js +2 -2
  277. package/dist/lists/orderline-list/orderline-list.module.css.js +1 -1
  278. package/dist/media/image/image.js +1 -1
  279. package/dist/message/message.js +5 -8
  280. package/dist/modals/dialog/dialog.js +1 -4
  281. package/dist/modals/favorite/add-to-favorite-dialog.js +1 -1
  282. package/dist/modals/modal/modal.js +3 -2
  283. package/dist/modals/recover-password/recover-password-dialog.js +1 -1
  284. package/dist/modals/signin/sign-in-dialog.js +2 -2
  285. package/dist/navigation/mobile-navigation/mobile-navigation.js +2 -4
  286. package/dist/navigation/mobile-navigation/mobile-navigation.module.css.js +1 -1
  287. package/dist/notifications/announcements/announcement-list.js +7 -3
  288. package/dist/notifications/announcements/announcement-list.module.css.js +1 -1
  289. package/dist/notifications/announcements/announcement.js +12 -18
  290. package/dist/pages/checkout/payment-page/components/payment.js +1 -1
  291. package/dist/pages/checkout/shipping-page/components/edit-checkout-bill-to-address-form.js +1 -1
  292. package/dist/pages/countries-page/countries-page.d.ts +1 -0
  293. package/dist/pages/countries-page/countries-page.js +18 -0
  294. package/dist/pages/error-page/error-page.js +1 -1
  295. package/dist/pages/my-sonic/actions/change-customer/change-customer.js +2 -2
  296. package/dist/pages/my-sonic/navigation/my-sonic-desktop-navigation.js +2 -1
  297. package/dist/pages/my-sonic/navigation/my-sonic-navigation-items.d.ts +2 -2
  298. package/dist/pages/my-sonic/navigation/my-sonic-navigation-items.js +4 -8
  299. package/dist/pages/my-sonic/pages/order-details/order-details-content.js +1 -1
  300. package/dist/pages/my-sonic/pages/order-history/order-history-page.js +2 -2
  301. package/dist/pages/my-sonic/widgets/connected-address-book-widget.js +2 -2
  302. package/dist/shared/api/storefront/hooks/authentication/use-patch-session.d.ts +4 -1
  303. package/dist/shared/api/storefront/model/storefront.model.d.ts +4 -1
  304. package/dist/shared/error/default-error-view.js +2 -2
  305. package/dist/shared/hooks/use-resize-observer.js +1 -0
  306. package/dist/sidebar/sidebar.js +3 -2
  307. package/dist/sidebar/toggle-sidebar-button.js +2 -2
  308. package/dist/styles.css +1032 -686
  309. package/dist/table/elements/table-sort-button.js +2 -2
  310. package/dist/toast/toast.js +8 -10
  311. package/dist/tooltip/tooltip.js +3 -2
  312. package/dist/tooltip/tooltip.module.css.js +1 -1
  313. package/package.json +2 -1
  314. package/dist/icons/glyph/glyphs-arrow-blackcaps-right-icon.js +0 -8
  315. package/dist/icons/glyph/glyphs-arrow-semibold-right-icon.js +0 -8
  316. package/dist/navigation/account-icon/account-icon.d.ts +0 -5
  317. package/dist/navigation/account-icon/account-icon.js +0 -13
  318. package/dist/navigation/cart-icon/cart-icon.d.ts +0 -5
  319. package/dist/navigation/cart-icon/cart-icon.js +0 -13
  320. package/dist/navigation/favorite-icon/favorite-icon.d.ts +0 -5
  321. package/dist/navigation/favorite-icon/favorite-icon.js +0 -13
@@ -3,9 +3,7 @@ import { jsx, jsxs } from 'react/jsx-runtime';
3
3
  import { forwardRef, useRef, useState, useEffect } from 'react';
4
4
  import { NumberField as NumberField$1, Button } from 'react-aria-components';
5
5
  import clsx from 'clsx';
6
- import { StrokeMinusIcon } from '../../../icons/stroke/stroke-minus-icon.js';
7
- import { StrokePlusIcon } from '../../../icons/stroke/stroke-plus-icon.js';
8
- import { StrokeTrashIcon } from '../../../icons/stroke/stroke-trash-icon.js';
6
+ import { Icon } from '../../../icon/icon.js';
9
7
  import { InfoIconTooltip } from '../../../info-icon-tooltip/info-icon-tooltip.js';
10
8
  import { useFormattedMessage } from '../../../intl/use-formatted-message.js';
11
9
  import { multiRef } from '../../../shared/utils/refs.js';
@@ -22,7 +20,7 @@ const defaultFormatOptions = {
22
20
  // TODO: this should be hard set options, not free to tweak
23
21
  };
24
22
  function NumberFieldControls({ active, children, isDisabled, showReset, }) {
25
- return (jsxs("div", { className: styles['controls'], children: [active && (jsx(Button, { className: styles['control'], "data-test-selector": "decrement", isDisabled: isDisabled, slot: "decrement", children: showReset ? jsx(StrokeTrashIcon, {}) : jsx(StrokeMinusIcon, {}) })), children, active && (jsx(Button, { className: styles['control'], "data-test-selector": "increment", isDisabled: isDisabled, slot: "increment", children: jsx(StrokePlusIcon, {}) }))] }));
23
+ return (jsxs("div", { className: styles['controls'], children: [active && (jsx(Button, { className: styles['control'], "data-test-selector": "decrement", isDisabled: isDisabled, slot: "decrement", children: showReset ? (jsx(Icon, { name: "Trash", size: "xs" })) : (jsx(Icon, { name: "Minus", size: "xs" })) })), children, active && (jsx(Button, { className: styles['control'], "data-test-selector": "increment", isDisabled: isDisabled, slot: "increment", children: jsx(Icon, { name: "Plus", size: "xs" }) }))] }));
26
24
  }
27
25
  let debouncedChange;
28
26
  let debouncedKeyup;
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import { jsx } from 'react/jsx-runtime';
3
3
  import { useState } from 'react';
4
- import { StrokeSearchIcon } from '../../../icons/stroke/stroke-search-icon.js';
4
+ import { Icon } from '../../../icon/icon.js';
5
5
  import { ProgressCircle } from '../../../loading/progress-circle.js';
6
6
  import { useDebouncedCallback } from '../../../shared/hooks/use-debounced-callback.js';
7
7
  import { TextField } from '../text-field/text-field.js';
@@ -9,7 +9,7 @@ import { TextField } from '../text-field/text-field.js';
9
9
  function SearchField({ isDebounced = false, isLoading = false, onChange, value: _value, ...props }) {
10
10
  const [inputValue, setInputValue] = useState(_value);
11
11
  const onChangeDebounced = useDebouncedCallback((...args) => onChange?.(...args), 300);
12
- return (jsx(TextField, { ...props, inlineElement: isLoading ? (jsx(ProgressCircle, { size: "sm", variant: "gray" })) : (jsx(StrokeSearchIcon, {})), isMultiline: false, onChange: isDebounced
12
+ return (jsx(TextField, { ...props, inlineElement: isLoading ? (jsx(ProgressCircle, { size: "sm", variant: "gray" })) : (jsx(Icon, { name: "Search", size: "sm" })), isMultiline: false, onChange: isDebounced
13
13
  ? (...args) => {
14
14
  onChangeDebounced(...args);
15
15
  setInputValue(...args);
@@ -1,4 +1,10 @@
1
1
  import { ValidateFunction } from '../../elements/field-error/field-error';
2
+ export interface SelectFieldOptionGroup<K> {
3
+ key: string;
4
+ label: string;
5
+ options: Array<K>;
6
+ reactNode?: React.ReactNode;
7
+ }
2
8
  interface SelectFieldPropsBase {
3
9
  'data-test-selector'?: string;
4
10
  label: string;
@@ -16,6 +22,7 @@ interface SelectFieldProps<T> extends SelectFieldPropsBase {
16
22
  isRequired?: boolean;
17
23
  name?: string;
18
24
  onChange?: (value: keyof T) => void;
25
+ optionGroups?: SelectFieldOptionGroup<keyof T>[];
19
26
  options: T;
20
27
  selectedOption?: keyof T;
21
28
  showLabel?: boolean;
@@ -23,5 +30,5 @@ interface SelectFieldProps<T> extends SelectFieldPropsBase {
23
30
  validate?: ValidateFunction<string>;
24
31
  variant?: 'outline' | 'solid';
25
32
  }
26
- export declare function SelectField<T extends Record<string, string>>({ className, 'data-test-selector': dataTestSelector, defaultSelectedOption, info, isDisabled, isInvalid, isLoading, isRequired, label, name, onChange, options, placeholder, selectedOption, showLabel, showPlaceholder, size, variant, }: SelectFieldProps<T>): import("react/jsx-runtime").JSX.Element;
33
+ export declare function SelectField<T extends Record<string, string | React.ReactNode>>({ className, 'data-test-selector': dataTestSelector, defaultSelectedOption, info, isDisabled, isInvalid, isLoading, isRequired, label, name, onChange, optionGroups, options, placeholder, selectedOption, showLabel, showPlaceholder, size, variant, }: SelectFieldProps<T>): import("react/jsx-runtime").JSX.Element;
27
34
  export {};
@@ -1,32 +1,53 @@
1
1
  "use client";
2
2
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
3
3
  import { useState, useEffect } from 'react';
4
- import { Select, Button, SelectValue, Popover, ListBox, ListBoxSection, Header, ListBoxItem } from 'react-aria-components';
4
+ import { Select, Button, SelectValue, Popover, ListBox, Header, ListBoxSection, ListBoxItem } from 'react-aria-components';
5
5
  import clsx from 'clsx';
6
- import { GlyphsChevronsSlimDownIcon } from '../../../icons/glyph/glyphs-chevrons-slim-down-icon.js';
7
- import { StrokeCheckmarkIcon } from '../../../icons/stroke/stroke-checkmark-icon.js';
6
+ import { Icon } from '../../../icon/icon.js';
8
7
  import { InfoIconTooltip } from '../../../info-icon-tooltip/info-icon-tooltip.js';
9
8
  import { ProgressCircle } from '../../../loading/progress-circle.js';
9
+ import { childrenToText } from '../../../shared/utils/children-to-text.js';
10
10
  import { FieldError } from '../../elements/field-error/field-error.js';
11
11
  import { Label } from '../../elements/label/label.js';
12
12
  import { FormFieldLayout } from '../../layout/form/form-field-layout.js';
13
13
  import styles from './select-field.module.css.js';
14
14
 
15
- function SelectField({ className, 'data-test-selector': dataTestSelector, defaultSelectedOption, info, isDisabled, isInvalid, isLoading, isRequired, label, name, onChange, options, placeholder, selectedOption, showLabel = true, showPlaceholder, size = 'lg', variant = 'outline', }) {
15
+ /* eslint-disable @eslint-react/hooks-extra/no-direct-set-state-in-use-effect */
16
+ function SelectField({ className, 'data-test-selector': dataTestSelector, defaultSelectedOption, info, isDisabled, isInvalid, isLoading, isRequired, label, name, onChange, optionGroups, options, placeholder, selectedOption, showLabel = true, showPlaceholder, size = 'lg', variant = 'outline', }) {
16
17
  const [selectedKey, setSelectedKey] = useState(defaultSelectedOption);
18
+ useEffect(() => {
19
+ if (selectedOption)
20
+ setSelectedKey(selectedOption);
21
+ }, [selectedOption]);
17
22
  const handleChange = (key) => {
18
23
  setSelectedKey(key);
19
24
  onChange?.(key);
20
25
  };
21
- useEffect(() => {
22
- // eslint-disable-next-line @eslint-react/hooks-extra/no-direct-set-state-in-use-effect
23
- setSelectedKey(selectedOption);
24
- }, [selectedOption]);
26
+ const grouplessOptions = Object.keys(options).filter(key => {
27
+ if (!optionGroups)
28
+ return [];
29
+ return !Object.values(optionGroups).some(group => group.options.includes(key));
30
+ });
25
31
  return (jsx(Select, { "aria-label": label, className: clsx(styles['select-field'], styles[size], styles[variant], {
26
32
  [styles['loading']]: isLoading,
27
33
  }, className), "data-test-selector": dataTestSelector, defaultSelectedKey: defaultSelectedOption === undefined
28
34
  ? undefined
29
- : String(defaultSelectedOption), isDisabled: isDisabled, isInvalid: isInvalid, isRequired: isRequired, name: name, onSelectionChange: key => handleChange(key), placeholder: placeholder || label, selectedKey: selectedOption === undefined ? undefined : String(selectedOption), children: jsx(FormFieldLayout, { errorSlot: jsx(FieldError, {}), infoSlot: info && jsx(InfoIconTooltip, { children: info }), labelSlot: showLabel && jsx(Label, { isRequired: isRequired, children: label }), children: jsxs(Fragment, { children: [jsxs(Button, { className: styles.button, children: [jsx(SelectValue, { className: styles.value, "data-test-selector": "value" }), isLoading ? (jsx(ProgressCircle, { "aria-hidden": "true", className: styles.loading, variant: "gray" })) : (jsx(GlyphsChevronsSlimDownIcon, { "aria-hidden": "true", className: styles.icon }))] }), jsx(Popover, { className: clsx(styles.popover, styles[variant]), placement: "bottom left", children: jsx(ListBox, { className: styles.listbox, "data-test-selector": dataTestSelector ? `${dataTestSelector}_options` : undefined, children: jsxs(ListBoxSection, { children: [showPlaceholder && (jsx(Header, { className: styles.header, children: placeholder || label })), Object.entries(options).map(([key, value]) => (jsxs(ListBoxItem, { "aria-label": value, className: styles.item, id: key, textValue: value, children: [selectedKey === key && (jsx("span", { slot: "description", children: jsx(StrokeCheckmarkIcon, { className: styles.check }) })), jsx("span", { slot: "label", children: value })] }, key)))] }) }) })] }) }) }));
35
+ : String(defaultSelectedOption), isDisabled: isDisabled, isInvalid: isInvalid, isRequired: isRequired, name: name, onSelectionChange: key => handleChange(key), placeholder: placeholder || label, selectedKey: selectedOption === undefined ? undefined : String(selectedOption), children: jsx(FormFieldLayout, { errorSlot: jsx(FieldError, {}), infoSlot: info && jsx(InfoIconTooltip, { children: info }), labelSlot: showLabel && jsx(Label, { isRequired: isRequired, children: label }), children: jsxs(Fragment, { children: [jsxs(Button, { className: styles.button, children: [jsx(SelectValue, { className: styles.value, "data-test-selector": "value" }), isLoading ? (jsx(ProgressCircle, { "aria-hidden": "true", className: styles.loading, variant: "gray" })) : (jsx(Icon, { className: styles.icon, name: "ArrowDown", size: "xxs" }))] }), jsx(Popover, { className: clsx(styles.popover, styles[variant]), placement: "bottom left", children: jsxs(ListBox, { className: styles.listbox, "data-test-selector": dataTestSelector ? `${dataTestSelector}_options` : undefined, children: [showPlaceholder && (jsx(Header, { className: styles.header, children: placeholder || label })), optionGroups &&
36
+ optionGroups.map(({ key: groupKey, options: groupOptions, reactNode }) => {
37
+ return (groupOptions.some(k => k in options) && (jsxs(ListBoxSection, { className: styles.section, children: [jsx(Header, { className: styles.header, children: reactNode || label }), groupOptions.map(optionKey => {
38
+ const value = options[optionKey];
39
+ const textValue = childrenToText(value);
40
+ return (jsxs(ListBoxItem, { className: styles.item, id: optionKey, textValue: textValue, children: [selectedKey === optionKey && (jsx("span", { className: styles.icon, slot: "description", children: jsx(Icon, { className: styles.check, name: "Checkmark" }) })), jsx("span", { className: styles.label, slot: "label", children: value })] }, optionKey));
41
+ })] }, groupKey)));
42
+ }), optionGroups && grouplessOptions.length > 0 && (jsx(ListBoxSection, { className: styles.section, children: grouplessOptions.map(optionKey => {
43
+ const value = options[optionKey];
44
+ const textValue = childrenToText(value);
45
+ return (jsxs(ListBoxItem, { className: styles.item, id: optionKey, textValue: textValue, children: [selectedKey === optionKey && (jsx("span", { className: styles.icon, slot: "description", children: jsx(Icon, { className: styles.check, name: "Checkmark" }) })), jsx("span", { className: styles.label, slot: "label", children: value })] }, optionKey));
46
+ }) })), !optionGroups &&
47
+ Object.entries(options).map(([optionKey, value]) => {
48
+ const textValue = childrenToText(value);
49
+ return (jsxs(ListBoxItem, { className: styles.item, id: optionKey, textValue: textValue, children: [selectedKey === optionKey && (jsx("span", { className: styles.icon, slot: "description", children: jsx(Icon, { className: styles.check, name: "Checkmark" }) })), jsx("span", { className: styles.label, slot: "label", children: value })] }, optionKey));
50
+ })] }) })] }) }) }));
30
51
  }
31
52
 
32
53
  export { SelectField };
@@ -1,3 +1,3 @@
1
- var styles = {"select-field":"select-field-module-T07fb","md":"select-field-module-x-dtL","solid":"select-field-module-jfk-G","loading":"select-field-module-NyDa0","button":"select-field-module-uGX30","value":"select-field-module-z-6Ym","icon":"select-field-module-Njvvb","popover":"select-field-module-tbhPg","listbox":"select-field-module-Rwf0R","header":"select-field-module-KDZmc","item":"select-field-module-u3hoe"};
1
+ var styles = {"select-field":"select-field-module-T07fb","md":"select-field-module-x-dtL","solid":"select-field-module-jfk-G","loading":"select-field-module-NyDa0","button":"select-field-module-uGX30","value":"select-field-module-z-6Ym","icon":"select-field-module-Njvvb","popover":"select-field-module-tbhPg","listbox":"select-field-module-Rwf0R","header":"select-field-module-KDZmc","section":"select-field-module-7A3aF","item":"select-field-module-u3hoe","label":"select-field-module-g1IlV"};
2
2
 
3
3
  export { styles as default };
@@ -1,8 +1,7 @@
1
1
  "use client";
2
2
  import { jsx } from 'react/jsx-runtime';
3
3
  import { Checkbox } from 'react-aria-components';
4
- import { StrokeDehashedIcon } from '../../../../icons/stroke/stroke-dehashed-icon.js';
5
- import { StrokeHashedIcon } from '../../../../icons/stroke/stroke-hashed-icon.js';
4
+ import { Icon } from '../../../../icon/icon.js';
6
5
  import { useFormattedMessage } from '../../../../intl/use-formatted-message.js';
7
6
  import styles from './password-reveal-toggle.module.css.js';
8
7
 
@@ -13,7 +12,7 @@ import styles from './password-reveal-toggle.module.css.js';
13
12
  function PasswordRevealToggle({ onChange, showPassword, }) {
14
13
  const t = useFormattedMessage();
15
14
  const helpText = showPassword ? t('Conceal value') : t('Reveal value');
16
- return (jsx(Checkbox, { "aria-label": helpText, className: styles['password-reveal-toggle'], onChange: onChange, children: jsx("span", { title: helpText, children: showPassword ? jsx(StrokeHashedIcon, {}) : jsx(StrokeDehashedIcon, {}) }) }));
15
+ return (jsx(Checkbox, { "aria-label": helpText, className: styles['password-reveal-toggle'], onChange: onChange, children: jsx("span", { title: helpText, children: showPassword ? jsx(Icon, { name: "Invisible" }) : jsx(Icon, { name: "Visible" }) }) }));
17
16
  }
18
17
 
19
18
  export { PasswordRevealToggle };
@@ -22,7 +22,7 @@ function Form({ autoComplete = false, children, className, errorMessage, footer,
22
22
  scrollToTop();
23
23
  }
24
24
  }, [errorMessage]);
25
- return (jsxs(Form$1, { "aria-label": title, autoComplete: autoComplete ? 'on' : 'off', className: clsx(styles['form'], className), onSubmit: handleSubmit, validationBehavior: "native", validationErrors: validationErrors, children: [header && jsx("header", { className: styles['form-header'], children: header }), errorMessage && (jsx("section", { className: styles['error-messages'], children: jsx(Message, { type: "danger", children: errorMessage }) })), children, jsx("footer", { className: styles['form-footer'], children: footer })] }));
25
+ return (jsxs(Form$1, { "aria-label": title, autoComplete: autoComplete ? 'on' : 'off', className: clsx(styles['form'], className), onSubmit: handleSubmit, validationBehavior: "native", validationErrors: validationErrors, children: [header && jsx("header", { className: styles['form-header'], children: header }), errorMessage && (jsx("section", { className: styles['error-messages'], children: jsx(Message, { type: "danger", children: errorMessage }) })), children, footer && jsx("footer", { className: styles['form-footer'], children: footer })] }));
26
26
  }
27
27
 
28
28
  export { Form };
@@ -2,11 +2,12 @@
2
2
  import { jsx, jsxs } from 'react/jsx-runtime';
3
3
  import clsx from 'clsx';
4
4
  import { IconButton } from '../../buttons/icon-button/icon-button.js';
5
- import { SolidCloseIcon } from '../../icons/solid/solid-close-icon.js';
6
- import { StrokeSearchIcon } from '../../icons/stroke/stroke-search-icon.js';
5
+ import { Icon } from '../../icon/icon.js';
6
+ import { useFormattedMessage } from '../../intl/use-formatted-message.js';
7
7
  import styles from './search-input.module.css.js';
8
8
 
9
9
  function SearchInput({ autocomplete, formRef, inputRef, onCancel, onSubmit, placeholder, }) {
10
+ const t = useFormattedMessage();
10
11
  const formProps = autocomplete?.getFormProps({
11
12
  inputElement: inputRef.current,
12
13
  });
@@ -20,10 +21,10 @@ function SearchInput({ autocomplete, formRef, inputRef, onCancel, onSubmit, plac
20
21
  formProps?.onSubmit(e);
21
22
  onSubmit?.();
22
23
  }
23
- return (jsx("form", { ref: formRef, className: styles.form, ...formProps, onSubmit: handleSubmit, children: jsxs("div", { className: styles['input-container'], children: [jsx("label", { className: styles.label, htmlFor: "search", ...labelProps, children: jsx(StrokeSearchIcon, { className: clsx(styles['icon-search'], styles.icon) }) }), jsx("input", { ref: inputRef, name: "search", onKeyUp: e => {
24
+ return (jsx("form", { ref: formRef, className: styles.form, ...formProps, onSubmit: handleSubmit, children: jsxs("div", { className: styles['input-container'], children: [jsx("label", { className: styles.label, htmlFor: "search", ...labelProps, children: jsx(Icon, { className: clsx(styles['icon-search'], styles.icon), label: t('Search'), name: "Search" }) }), jsx("input", { ref: inputRef, name: "search", onKeyUp: e => {
24
25
  if (e.key === 'Escape')
25
26
  onCancel?.();
26
- }, ...inputProps, className: styles.input, placeholder: placeholder }), inputProps?.value && (jsx(IconButton, { className: styles['reset-btn'], color: "secondary", onClick: () => formRef.current?.reset(), type: "reset", children: jsx(SolidCloseIcon, {}) }))] }) }));
27
+ }, ...inputProps, className: styles.input, placeholder: placeholder }), inputProps?.value && (jsx(IconButton, { round: true, className: styles['reset-btn'], icon: "CloseSolid", label: t('Reset'), onClick: () => formRef.current?.reset(), theme: "secondary", type: "reset" }))] }) }));
27
28
  }
28
29
 
29
30
  export { SearchInput };
@@ -3,8 +3,7 @@ import { jsx, jsxs } from 'react/jsx-runtime';
3
3
  import { useAlgoliaSearch } from '../../../algolia/use-algolia-search.js';
4
4
  import { Link } from '../../../buttons/link/link.js';
5
5
  import { CardCarousel } from '../../../carousel/card-carousel/card-carousel.js';
6
- import { StrokeRecentIcon } from '../../../icons/stroke/stroke-recent-icon.js';
7
- import { StrokeSearchIcon } from '../../../icons/stroke/stroke-search-icon.js';
6
+ import { Icon } from '../../../icon/icon.js';
8
7
  import { FormattedMessage } from '../../../intl/formatted-message.js';
9
8
  import { useFormattedMessage } from '../../../intl/use-formatted-message.js';
10
9
  import { PromoCard } from '../../../promos/promo-card/promo-card.js';
@@ -31,7 +30,7 @@ function PopularSearchesSection() {
31
30
  }), children: items.slice(0, 4).map(item => (jsx(SearchListItem, { ...autocomplete.getItemProps({
32
31
  item,
33
32
  source: source,
34
- }), icon: jsx(StrokeSearchIcon, { role: "presentation" }), text: jsx(Highlight, { attribute: "query", hit: item }) }, item.objectID))) }) }));
33
+ }), icon: jsx(Icon, { name: "Search", size: "sm" }), text: jsx(Highlight, { attribute: "query", hit: item }) }, item.objectID))) }) }));
35
34
  }
36
35
  function RecentSearchesSection() {
37
36
  const { autocomplete, recentSearches: collection } = useAlgoliaSearch();
@@ -43,7 +42,7 @@ function RecentSearchesSection() {
43
42
  return (jsx(SearchSection, { button: jsx(Link, { hasUnderline: true, onClick: () => items.forEach(item => source.onRemove(item.id)), children: jsx(FormattedMessage, { id: "Clear" }) }), title: t('Recent searches'), children: jsx(SearchList, { ...autocomplete.getListProps({ source }), children: items.map(item => (jsx(SearchListItem, { ...autocomplete.getItemProps({
44
43
  item,
45
44
  source: source,
46
- }), icon: jsx(StrokeRecentIcon, { role: "presentation" }), isRemovable: true, onRemove: () => source.onRemove(item.id), text: jsx(Highlight, { attribute: "label", hit: item }) }, item.id))) }) }));
45
+ }), icon: jsx(Icon, { name: "Refresh", size: "sm" }), isRemovable: true, onRemove: () => source.onRemove(item.id), text: jsx(Highlight, { attribute: "label", hit: item }) }, item.id))) }) }));
47
46
  }
48
47
  function QuickAccessSection() {
49
48
  const { quickAccess: collection } = useAlgoliaSearch();
@@ -6,7 +6,7 @@ import { useAlgoliaSearch } from '../../../algolia/use-algolia-search.js';
6
6
  import { Button } from '../../../buttons/button/button.js';
7
7
  import { ConnectedProductCard } from '../../../cards/product-card/connected-product-card.js';
8
8
  import { CardCarousel } from '../../../carousel/card-carousel/card-carousel.js';
9
- import { StrokeSearchIcon } from '../../../icons/stroke/stroke-search-icon.js';
9
+ import { Icon } from '../../../icon/icon.js';
10
10
  import { FormattedMessage } from '../../../intl/formatted-message.js';
11
11
  import { useFormattedMessage } from '../../../intl/use-formatted-message.js';
12
12
  import { PromoCard } from '../../../promos/promo-card/promo-card.js';
@@ -34,14 +34,14 @@ function SuggestionsSection() {
34
34
  }), children: recentSearches.items.slice(0, 3).map(item => (jsx(SearchListItem, { ...autocomplete.getItemProps({
35
35
  item,
36
36
  source: recentSearches.source,
37
- }), icon: jsx(StrokeSearchIcon, { role: "presentation" }), isRemovable: true, onRemove: () => {
37
+ }), icon: jsx(Icon, { name: "Search", size: "sm" }), isRemovable: true, onRemove: () => {
38
38
  recentSearches.source.onRemove(item.id);
39
39
  }, text: jsx(Highlight, { attribute: "label", hit: item }) }, item.id))) })), querySuggestions && (jsx(SearchList, { ...autocomplete.getListProps({
40
40
  source: querySuggestions.source,
41
41
  }), children: querySuggestions.items.slice(0, 3).map(item => (jsx(SearchListItem, { ...autocomplete.getItemProps({
42
42
  item,
43
43
  source: querySuggestions.source,
44
- }), icon: jsx(StrokeSearchIcon, { role: "presentation" }), text: jsx(Highlight, { attribute: "query", hit: item }) }, item.objectID))) })), categories && (jsx(SearchList, { ...autocomplete.getListProps({
44
+ }), icon: jsx(Icon, { name: "Search", size: "sm" }), text: jsx(Highlight, { attribute: "query", hit: item }) }, item.objectID))) })), categories && (jsx(SearchList, { ...autocomplete.getListProps({
45
45
  source: categories.source,
46
46
  }), children: categories.items
47
47
  .slice(0, 3)
@@ -49,7 +49,7 @@ function SuggestionsSection() {
49
49
  .map(item => (jsx(SearchListItem, { ...autocomplete.getItemProps({
50
50
  item,
51
51
  source: categories.source,
52
- }), icon: jsx(StrokeSearchIcon, { role: "presentation" }), text: jsxs("span", { children: [jsx("span", { children: item.listCategories.at(-1) }), jsx("span", { children: item.listCategories.slice(0, -1).join(' > ') })] }) }, item.objectID))) }))] }));
52
+ }), icon: jsx(Icon, { name: "Search", size: "sm" }), text: jsxs("span", { children: [jsx("span", { children: item.listCategories.at(-1) }), jsx("span", { children: item.listCategories.slice(0, -1).join(' > ') })] }) }, item.objectID))) }))] }));
53
53
  }
54
54
  function ProductHitCard({ autocomplete, hit, index, source, }) {
55
55
  // TODO: re-enable addToCart and addToFavorites when authentication problems are solved (or we got rid of the split domains)
@@ -2,14 +2,13 @@
2
2
  import { jsxs, jsx } from 'react/jsx-runtime';
3
3
  import { IconButton } from '../../buttons/icon-button/icon-button.js';
4
4
  import { Link } from '../../buttons/link/link.js';
5
- import { StrokeCloseboxIcon } from '../../icons/stroke/stroke-closebox-icon.js';
6
5
  import { useFormattedMessage } from '../../intl/use-formatted-message.js';
7
6
  import { Truncated } from '../../text/truncated/truncated.js';
8
7
  import styles from './search-list-item.module.css.js';
9
8
 
10
9
  function SearchListItem({ icon, id, isRemovable = false, onClick, onRemove, text, }) {
11
10
  const t = useFormattedMessage();
12
- return (jsxs("li", { className: styles['search-list-item'], children: [jsxs(Link, { className: styles['content'], id: id, onClick: onClick, children: [icon && icon, text && jsx(Truncated, { className: styles.text, children: text })] }), isRemovable && (jsx(IconButton, { "aria-describedby": id, className: styles['clear-filter'], color: "secondary", onClick: onRemove, children: jsx(StrokeCloseboxIcon, { "aria-label": t('Remove') }) }))] }));
11
+ return (jsxs("li", { className: styles['search-list-item'], children: [jsxs(Link, { className: styles['content'], id: id, onClick: onClick, children: [icon && icon, text && jsx(Truncated, { className: styles.text, children: text })] }), isRemovable && (jsx(IconButton, { "aria-describedby": id, className: styles['clear-filter'], icon: "Close", label: t('Remove'), onClick: onRemove, theme: "secondary" }))] }));
13
12
  }
14
13
 
15
14
  export { SearchListItem };
@@ -4,7 +4,6 @@ import { useRef } from 'react';
4
4
  import { Popover } from 'react-aria-components';
5
5
  import { IconButton } from '../../../buttons/icon-button/icon-button.js';
6
6
  import { useFormattedMessage } from '../../../intl/use-formatted-message.js';
7
- import { AccountIcon } from '../../../navigation/account-icon/account-icon.js';
8
7
  import { QuickAccessMenu } from '../../../navigation/quick-access-menu/quick-access-menu.js';
9
8
  import { useFetchSession } from '../../../shared/api/storefront/hooks/authentication/use-fetch-session.js';
10
9
  import { useSignOut } from '../../../shared/api/storefront/hooks/authentication/use-sign-out.js';
@@ -23,7 +22,7 @@ function ConnectedAccountButton({ className, 'data-test-selector': dataTestSelec
23
22
  const lastName = data?.lastName ? data.lastName.trim() : undefined;
24
23
  const customerName = firstName ? [firstName, lastName].join(' ') : undefined;
25
24
  const customerCompany = data?.billTo?.companyName;
26
- return (jsxs(Fragment, { children: [jsx(IconButton, { ref: triggerRef, className: className, "data-authenticated": data?.isAuthenticated ? true : false, "data-test-selector": dataTestSelector, isDisabled: isLoadingSession, onClick: toggle, children: jsx(AccountIcon, { "aria-label": t('My Sonic'), isAuthenticated: data?.isAuthenticated }) }), jsx(Popover, { className: styles['popover'], isOpen: isOpen, onOpenChange: state => (state ? open() : close()), placement: "bottom", triggerRef: triggerRef, children: jsx(QuickAccessMenu, { className: styles['quick-access-menu'], customerCompany: customerCompany, customerName: customerName, isAuthenticated: data?.isAuthenticated, isGuest: data?.isGuest, onSignOut: () => signOut(typeof window === 'undefined'
25
+ return (jsxs(Fragment, { children: [jsx(IconButton, { ref: triggerRef, badgeLabel: data?.isAuthenticated ? t('Signed in') : t('Signed out'), badgeStatus: data?.isAuthenticated ? 'on' : 'off', className: className, "data-authenticated": data?.isAuthenticated ? true : false, "data-test-selector": dataTestSelector, icon: "UserSolid", isDisabled: isLoadingSession, label: t('My Sonic'), onClick: toggle }), jsx(Popover, { className: styles['popover'], isOpen: isOpen, onOpenChange: state => (state ? open() : close()), placement: "bottom", triggerRef: triggerRef, children: jsx(QuickAccessMenu, { className: styles['quick-access-menu'], customerCompany: customerCompany, customerName: customerName, isAuthenticated: data?.isAuthenticated, isGuest: data?.isGuest, onSignOut: () => signOut(typeof window === 'undefined'
27
26
  ? undefined
28
27
  : { returnUrl: window.location.href }) }) })] }));
29
28
  }
@@ -2,13 +2,12 @@
2
2
  import { jsx } from 'react/jsx-runtime';
3
3
  import { IconButton } from '../../../buttons/icon-button/icon-button.js';
4
4
  import { useFormattedMessage } from '../../../intl/use-formatted-message.js';
5
- import { CartIcon } from '../../../navigation/cart-icon/cart-icon.js';
6
5
  import { useFetchCurrentCartCount } from '../../../shared/api/storefront/hooks/cart/use-fetch-current-cart-count.js';
7
6
 
8
7
  function ConnectedCartButton({ className, 'data-test-selector': dataTestSelector, href, onClick, }) {
9
8
  const count = useFetchCurrentCartCount();
10
9
  const t = useFormattedMessage();
11
- return (jsx(IconButton, { className: className, "data-count": count, "data-test-selector": dataTestSelector, href: href, onClick: onClick, children: jsx(CartIcon, { "aria-label": t('Shopping cart'), count: count }) }));
10
+ return (jsx(IconButton, { badgeCount: count, className: className, "data-count": count, "data-test-selector": dataTestSelector, href: href, icon: "CartSolid", label: t('Shopping cart'), onClick: onClick }));
12
11
  }
13
12
 
14
13
  export { ConnectedCartButton };
@@ -2,12 +2,10 @@
2
2
  import { jsx } from 'react/jsx-runtime';
3
3
  import { IconButton } from '../../../buttons/icon-button/icon-button.js';
4
4
  import { useFormattedMessage } from '../../../intl/use-formatted-message.js';
5
- import { FavoriteIcon } from '../../../navigation/favorite-icon/favorite-icon.js';
6
5
 
7
6
  function ConnectedFavoritesButton({ className, 'data-test-selector': dataTestSelector, href, onClick, }) {
8
7
  const t = useFormattedMessage();
9
- // TODO: add a count of total favorites
10
- return (jsx(IconButton, { className: className, "data-test-selector": dataTestSelector, href: href, onClick: onClick, children: jsx(FavoriteIcon, { "aria-label": t('Favorites') }) }));
8
+ return (jsx(IconButton, { className: className, "data-test-selector": dataTestSelector, href: href, icon: "FavoriteSolid", label: t('Favorites'), onClick: onClick }));
11
9
  }
12
10
 
13
11
  export { ConnectedFavoritesButton };
@@ -7,7 +7,7 @@ import styles from './hamburger-button.module.css.js';
7
7
 
8
8
  function HamburgerButton({ 'aria-controls': ariaControls, 'data-test-selector': dataTestSelector, isActive, onActiveChange, }) {
9
9
  const t = useFormattedMessage();
10
- return (jsx(IconButton, { "aria-controls": ariaControls, "aria-expanded": isActive, "aria-label": t('Navigation'), className: clsx(styles['hamburger-button'], isActive && styles['active']), "data-test-selector": dataTestSelector, onClick: () => onActiveChange(!isActive), title: t('Toggle navigation menu'), type: "button", children: jsxs("div", { className: styles['icon'], role: "presentation", children: [jsx("span", { "aria-hidden": "true" }), jsx("span", { "aria-hidden": "true" }), jsx("span", { "aria-hidden": "true" })] }) }));
10
+ return (jsx(IconButton, { "aria-controls": ariaControls, "aria-expanded": isActive, className: clsx(styles['hamburger-button'], isActive && styles['active']), "data-test-selector": dataTestSelector, label: t('Toggle navigation menu'), onClick: () => onActiveChange(!isActive), children: jsxs("div", { className: styles['hamburger'], role: "presentation", children: [jsx("span", {}), jsx("span", {}), jsx("span", {})] }) }));
11
11
  }
12
12
 
13
13
  export { HamburgerButton };
@@ -1,3 +1,3 @@
1
- var styles = {"hamburger-button":"hamburger-button-module-W6FPI","icon":"hamburger-button-module-2h4ML","active":"hamburger-button-module-UXSUP"};
1
+ var styles = {"hamburger-button":"hamburger-button-module-W6FPI","hamburger":"hamburger-button-module-yrZxr","active":"hamburger-button-module-UXSUP"};
2
2
 
3
3
  export { styles as default };
@@ -1,12 +1,11 @@
1
1
  "use client";
2
2
  import { jsx } from 'react/jsx-runtime';
3
3
  import { IconButton } from '../../../buttons/icon-button/icon-button.js';
4
- import { StrokeSearchIcon } from '../../../icons/stroke/stroke-search-icon.js';
5
4
  import { useFormattedMessage } from '../../../intl/use-formatted-message.js';
6
5
 
7
6
  function SearchButton({ 'aria-controls': ariaControls, 'data-test-selector': dataTestSelector, isActive, onActiveChange, }) {
8
7
  const t = useFormattedMessage();
9
- return (jsx(IconButton, { "aria-controls": ariaControls, "aria-expanded": typeof isActive === 'boolean' ? isActive : undefined, "aria-label": t('Search'), "data-test-selector": dataTestSelector, onClick: () => onActiveChange(!isActive), children: jsx(StrokeSearchIcon, { role: "presentation" }) }));
8
+ return (jsx(IconButton, { "aria-controls": ariaControls, "aria-expanded": typeof isActive === 'boolean' ? isActive : undefined, "data-test-selector": dataTestSelector, icon: "Search", label: t('Search'), onClick: () => onActiveChange(!isActive) }));
10
9
  }
11
10
 
12
11
  export { SearchButton };
@@ -29,7 +29,7 @@ function Header({ className, headerNavigationSection, sticky, }) {
29
29
  const t = useFormattedMessage();
30
30
  const isXl = useIsBreakpoint('xl');
31
31
  const { ref: headerRef } = useResizeObserver((_, size) => {
32
- const height = Math.floor(size.height);
32
+ const height = size.height;
33
33
  document?.documentElement.style.setProperty('--header-height', `${height}px`);
34
34
  });
35
35
  const { close: closeSearch, groupId: searchGroupId, instanceId: searchInstanceId, isOpen: searchOpen, setIsOpen: setSearchOpen, } = useGlobalSearchDisclosure();
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import { jsx, jsxs } from 'react/jsx-runtime';
3
3
  import { Link } from '../../buttons/link/link.js';
4
- import { GlyphsChevronsBoldDownIcon } from '../../icons/glyph/glyphs-chevrons-bold-down-icon.js';
4
+ import { Icon } from '../../icon/icon.js';
5
5
  import { logger } from '../../logging/logger.js';
6
6
  import { isNavigationLinkGroup, isNavigationLink } from '../../shared/api/bff/model/bff.model.js';
7
7
  import styles from './navigation-link-list.module.css.js';
@@ -11,7 +11,7 @@ function NavigationLinkList({ activeLink, 'data-test-selector': dataTestSelector
11
11
  return (jsx("ul", { className: styles['navigation-link-list'], "data-test-selector": dataTestSelector, children: items.map(item => {
12
12
  if (isNavigationLinkGroup(item)) {
13
13
  if (item.items.length > 0) {
14
- return (jsx("li", { className: activeLink === item ? styles['active'] : undefined, children: jsxs(Link, { "aria-controls": `panels-${item.key}`, "aria-expanded": activeLink === item, className: styles.link, "data-test-selector": `navigationLink-${item.key}`, onClick: () => onSubmenuToggle(item), target: item.openInNewTab ? '_blank' : undefined, children: [item.label, jsx(GlyphsChevronsBoldDownIcon, { className: styles.chevron, role: "presentation" })] }) }, item.key));
14
+ return (jsx("li", { className: activeLink === item ? styles['active'] : undefined, children: jsxs(Link, { "aria-controls": `panels-${item.key}`, "aria-expanded": activeLink === item, className: styles.link, "data-test-selector": `navigationLink-${item.key}`, onClick: () => onSubmenuToggle(item), target: item.openInNewTab ? '_blank' : undefined, children: [item.label, jsx(Icon, { className: styles.icon, name: "ArrowDownBold", size: "xxs" })] }) }, item.key));
15
15
  }
16
16
  else {
17
17
  logger.warn(`Link-group has no items: ${JSON.stringify(item, null, 2)}`);
@@ -1,3 +1,3 @@
1
- var styles = {"navigation-link-list":"navigation-link-list-module-Ku9Sa","link":"navigation-link-list-module-kj0Rj","chevron":"navigation-link-list-module-QiKiA","active":"navigation-link-list-module-jDgf0"};
1
+ var styles = {"navigation-link-list":"navigation-link-list-module-Ku9Sa","link":"navigation-link-list-module-kj0Rj","icon":"navigation-link-list-module-jcogX","active":"navigation-link-list-module-jDgf0"};
2
2
 
3
3
  export { styles as default };
@@ -5,9 +5,14 @@ import { Link } from '../../buttons/link/link.js';
5
5
  import { useFormattedMessage } from '../../intl/use-formatted-message.js';
6
6
  import styles from './sonic-logo.module.css.js';
7
7
 
8
- function SonicLogo({ className, 'data-test-selector': dataTestSelector, href, title, }) {
8
+ function SonicLogoSVG() {
9
9
  const t = useFormattedMessage();
10
- return (jsx(Link, { className: clsx(styles.wrapper, className), "data-test-selector": dataTestSelector, href: href, title: title, children: jsx("svg", { "aria-label": t('Sonic Equipment'), className: styles['sonic-logo'], viewBox: "0 0 100 24", xmlns: "http://www.w3.org/2000/svg", children: jsxs("g", { fill: "none", fillRule: "evenodd", children: [jsx("path", { className: styles.letters, d: "M11.87 8.65c1.815 0 3.286 1.482 3.286 3.311 0 6.595-5.325 11.962-11.87 11.962C1.471 23.923 0 22.44 0 20.612c0-1.766 1.372-3.21 3.1-3.307l.186-.005c2.848 0 5.179-2.277 5.293-5.12l.005-.219c0-1.829 1.471-3.311 3.286-3.311zm0-8.65c1.815 0 3.286 1.483 3.286 3.311 0 1.766-1.371 3.21-3.1 3.307l-.186.005c-2.849 0-5.178 2.277-5.293 5.118l-.004.22c0 1.829-1.472 3.311-3.287 3.311C1.472 15.272 0 13.79 0 11.961 0 5.366 5.325 0 11.87 0zm6.155 12.016c0 6.596 5.325 11.963 11.87 11.963 6.545 0 11.87-5.367 11.87-11.963 0-6.595-5.325-11.96-11.87-11.96-6.545 0-11.87 5.365-11.87 11.96zm6.572 0c0-2.943 2.376-5.338 5.298-5.338 2.92 0 5.297 2.395 5.297 5.338 0 2.945-2.376 5.34-5.297 5.34-2.922 0-5.298-2.395-5.298-5.34zM82.251 3.56c-4.628 4.663-4.628 12.251 0 16.915 4.628 4.663 12.158 4.663 16.786 0a3.33 3.33 0 0 0 .001-4.683 3.268 3.268 0 0 0-4.501-.138l-.146.138a5.278 5.278 0 0 1-7.494 0c-2.064-2.081-2.064-5.468.001-7.549a5.275 5.275 0 0 1 7.313-.174l.18.173a3.268 3.268 0 0 0 4.647 0 3.33 3.33 0 0 0 0-4.684c-4.63-4.663-12.16-4.662-16.787.002zm-12.868-.13v17.148c0 1.828 1.47 3.311 3.285 3.311 1.816 0 3.287-1.483 3.287-3.311V3.429c0-1.829-1.471-3.312-3.287-3.312-1.815 0-3.285 1.483-3.285 3.312zM48.063.075c-1.814 0-3.285 1.483-3.285 3.311V20.69c0 1.828 1.471 3.311 3.286 3.311s3.286-1.483 3.286-3.311V6.698h2.95c2.92 0 5.297 2.394 5.297 5.338v8.653c0 1.828 1.471 3.311 3.286 3.311s3.286-1.483 3.286-3.311v-8.653C66.17 5.44 60.844.075 54.3.075h-6.235z" }), jsx("path", { className: styles.dot, d: "M35.27 12.017c0 2.991-2.406 5.416-5.375 5.416-2.97 0-5.376-2.425-5.376-5.416 0-2.992 2.407-5.417 5.376-5.417 2.969 0 5.375 2.425 5.375 5.417" })] }) }) }));
10
+ return (jsx("svg", { "aria-label": t('Sonic Equipment'), className: styles['logo'], viewBox: "0 0 100 24", xmlns: "http://www.w3.org/2000/svg", children: jsxs("g", { fill: "none", fillRule: "evenodd", children: [jsx("path", { className: styles.letters, d: "M11.87 8.65c1.815 0 3.286 1.482 3.286 3.311 0 6.595-5.325 11.962-11.87 11.962C1.471 23.923 0 22.44 0 20.612c0-1.766 1.372-3.21 3.1-3.307l.186-.005c2.848 0 5.179-2.277 5.293-5.12l.005-.219c0-1.829 1.471-3.311 3.286-3.311zm0-8.65c1.815 0 3.286 1.483 3.286 3.311 0 1.766-1.371 3.21-3.1 3.307l-.186.005c-2.849 0-5.178 2.277-5.293 5.118l-.004.22c0 1.829-1.472 3.311-3.287 3.311C1.472 15.272 0 13.79 0 11.961 0 5.366 5.325 0 11.87 0zm6.155 12.016c0 6.596 5.325 11.963 11.87 11.963 6.545 0 11.87-5.367 11.87-11.963 0-6.595-5.325-11.96-11.87-11.96-6.545 0-11.87 5.365-11.87 11.96zm6.572 0c0-2.943 2.376-5.338 5.298-5.338 2.92 0 5.297 2.395 5.297 5.338 0 2.945-2.376 5.34-5.297 5.34-2.922 0-5.298-2.395-5.298-5.34zM82.251 3.56c-4.628 4.663-4.628 12.251 0 16.915 4.628 4.663 12.158 4.663 16.786 0a3.33 3.33 0 0 0 .001-4.683 3.268 3.268 0 0 0-4.501-.138l-.146.138a5.278 5.278 0 0 1-7.494 0c-2.064-2.081-2.064-5.468.001-7.549a5.275 5.275 0 0 1 7.313-.174l.18.173a3.268 3.268 0 0 0 4.647 0 3.33 3.33 0 0 0 0-4.684c-4.63-4.663-12.16-4.662-16.787.002zm-12.868-.13v17.148c0 1.828 1.47 3.311 3.285 3.311 1.816 0 3.287-1.483 3.287-3.311V3.429c0-1.829-1.471-3.312-3.287-3.312-1.815 0-3.285 1.483-3.285 3.312zM48.063.075c-1.814 0-3.285 1.483-3.285 3.311V20.69c0 1.828 1.471 3.311 3.286 3.311s3.286-1.483 3.286-3.311V6.698h2.95c2.92 0 5.297 2.394 5.297 5.338v8.653c0 1.828 1.471 3.311 3.286 3.311s3.286-1.483 3.286-3.311v-8.653C66.17 5.44 60.844.075 54.3.075h-6.235z" }), jsx("path", { className: styles.dot, d: "M35.27 12.017c0 2.991-2.406 5.416-5.375 5.416-2.97 0-5.376-2.425-5.376-5.416 0-2.992 2.407-5.417 5.376-5.417 2.969 0 5.375 2.425 5.375 5.417" })] }) }));
11
+ }
12
+ function SonicLogo({ className, 'data-test-selector': dataTestSelector, href, title, }) {
13
+ if (href)
14
+ return (jsx(Link, { className: clsx(styles['sonic-logo'], className), "data-test-selector": dataTestSelector, href: href, title: title, children: jsx(SonicLogoSVG, {}) }));
15
+ return (jsx("div", { className: clsx(styles['sonic-logo'], className), "data-test-selector": dataTestSelector, children: jsx(SonicLogoSVG, {}) }));
11
16
  }
12
17
 
13
18
  export { SonicLogo };
@@ -1,3 +1,3 @@
1
- var styles = {"wrapper":"sonic-logo-module-5zzhF","sonic-logo":"sonic-logo-module-9Mpdq","letters":"sonic-logo-module-Pa7pF","dot":"sonic-logo-module-vTCO3"};
1
+ var styles = {"sonic-logo":"sonic-logo-module-9Mpdq","logo":"sonic-logo-module-PfC3z","letters":"sonic-logo-module-Pa7pF","dot":"sonic-logo-module-vTCO3"};
2
2
 
3
3
  export { styles as default };
@@ -0,0 +1,10 @@
1
+ import { IconName } from '../icons';
2
+ export type IconSize = 'xxs' | 'xs' | 'sm' | 'md' | 'lg';
3
+ export interface IconProps {
4
+ className?: string;
5
+ 'data-test-selector'?: string;
6
+ label?: string;
7
+ name: IconName;
8
+ size?: IconSize;
9
+ }
10
+ export declare function Icon({ className, 'data-test-selector': dataTestSelector, label, name, size, }: IconProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,11 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import clsx from 'clsx';
3
+ import { icons } from '../icons/index.js';
4
+ import styles from './icon.module.css.js';
5
+
6
+ function Icon({ className, 'data-test-selector': dataTestSelector, label, name, size = 'md', }) {
7
+ const Icon = icons[name];
8
+ return (jsx(Icon, { "aria-label": label, className: clsx(styles['icon'], clsx(styles[`size-${size}`], className)), "data-test-selector": dataTestSelector, role: label ? undefined : 'presentation' }));
9
+ }
10
+
11
+ export { Icon };
@@ -0,0 +1,3 @@
1
+ var styles = {"icon":"icon-module-H50Sa","size-xxs":"icon-module-VRfRB","size-xs":"icon-module-qOoul","size-sm":"icon-module-s7OuZ","size-lg":"icon-module-Z76Ae"};
2
+
3
+ export { styles as default };
@@ -1,4 +1,3 @@
1
- "use client";
2
1
  import { jsx } from 'react/jsx-runtime';
3
2
 
4
3
  function GlyphsArrowBoldCapsLeftIcon(props) {
@@ -1,4 +1,3 @@
1
- "use client";
2
1
  import { jsx } from 'react/jsx-runtime';
3
2
 
4
3
  function GlyphsArrowBoldCapsRightIcon(props) {
@@ -1,4 +1,3 @@
1
- "use client";
2
1
  import { jsx } from 'react/jsx-runtime';
3
2
 
4
3
  function GlyphsChevronsBoldDownIcon(props) {
@@ -0,0 +1,7 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+
3
+ function GlyphsChevronsBoldLeftIcon(props) {
4
+ return (jsx("svg", { xmlns: "http://www.w3.org/2000/svg", ...props, fill: "currentColor", height: "12", viewBox: "0 0 12 12", width: "12", children: jsx("path", { d: "M2,5.98800959 L7.02068966,1 C7.34252874,1.17585931 7.7045977,1.4636291 8.10689655,1.86330935 C8.28390805,2.03916867 8.44482759,2.21502798 8.58965517,2.39088729 L8.74027586,2.58273381 C8.804,2.66906475 8.85034483,2.74100719 8.87931034,2.79856115 L8.97586207,2.94244604 L5.91034483,5.98800959 L9,9.05755396 C8.80689655,9.39328537 8.51724138,9.7529976 8.13103448,10.1366906 C7.95402299,10.31255 7.77701149,10.4724221 7.6,10.616307 L7.32482759,10.8321343 L7.18965517,10.9280576 L7.04482759,11 L2,5.98800959 Z", fillRule: "evenodd" }) }));
5
+ }
6
+
7
+ export { GlyphsChevronsBoldLeftIcon };
@@ -1,4 +1,3 @@
1
- "use client";
2
1
  import { jsx } from 'react/jsx-runtime';
3
2
 
4
3
  function GlyphsChevronsBoldRightIcon(props) {
@@ -1,4 +1,3 @@
1
- "use client";
2
1
  import { jsx } from 'react/jsx-runtime';
3
2
 
4
3
  function GlyphsChevronsBoldUpIcon(props) {
@@ -1,4 +1,3 @@
1
- "use client";
2
1
  import { jsx } from 'react/jsx-runtime';
3
2
 
4
3
  function GlyphsChevronsSlimDownIcon(props) {
@@ -1,4 +1,3 @@
1
- "use client";
2
1
  import { jsx } from 'react/jsx-runtime';
3
2
 
4
3
  function GlyphsChevronsSlimLeftIcon(props) {
@@ -1,4 +1,3 @@
1
- "use client";
2
1
  import { jsx } from 'react/jsx-runtime';
3
2
 
4
3
  function GlyphsChevronsSlimRightIcon(props) {
@@ -0,0 +1,7 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+
3
+ function GlyphsChevronsSlimUpIcon(props) {
4
+ return (jsx("svg", { xmlns: "http://www.w3.org/2000/svg", ...props, fill: "currentColor", height: "12", viewBox: "0 0 12 12", width: "12", children: jsx("path", { d: "M6,3 L1,7.93354971 C1.08169007,8.12109594 1.19817561,8.30512588 1.34945663,8.48563954 C1.50073764,8.6661532 1.68216803,8.83760669 1.89374779,9 L5.98800959,4.91652188 L9.9960307,9 C10.2121071,8.83350762 10.4031847,8.66205413 10.5692635,8.48563954 C10.7353424,8.30922495 10.8789212,8.12519501 11,7.93354971 L6,3 Z", fillRule: "evenodd" }) }));
5
+ }
6
+
7
+ export { GlyphsChevronsSlimUpIcon };