@sonic-equipment/ui 259.0.4 → 260.0.1

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 (326) 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 +3 -0
  21. package/dist/buttons/link/link.js +5 -8
  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 +11 -0
  33. package/dist/country-language-selector/connected-country-language-selector.js +141 -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 +2 -2
  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/widgets/connected-address-book-widget.js +2 -2
  300. package/dist/shared/api/storefront/hooks/authentication/use-patch-session.d.ts +4 -1
  301. package/dist/shared/api/storefront/model/storefront.model.d.ts +4 -1
  302. package/dist/shared/error/default-error-view.js +2 -2
  303. package/dist/shared/hooks/use-resize-observer.js +1 -0
  304. package/dist/shared/routing/route-provider.d.ts +1 -0
  305. package/dist/shared/routing/route-utils.d.ts +2 -1
  306. package/dist/shared/routing/route-utils.js +2 -1
  307. package/dist/shared/routing/types.d.ts +2 -0
  308. package/dist/shared/routing/use-route-link.d.ts +1 -1
  309. package/dist/shared/routing/use-route-link.js +3 -3
  310. package/dist/shared/utils/css.js +9 -53
  311. package/dist/sidebar/sidebar.js +3 -2
  312. package/dist/sidebar/toggle-sidebar-button.js +2 -2
  313. package/dist/styles.css +1032 -686
  314. package/dist/table/elements/table-sort-button.js +2 -2
  315. package/dist/toast/toast.js +8 -10
  316. package/dist/tooltip/tooltip.js +3 -2
  317. package/dist/tooltip/tooltip.module.css.js +1 -1
  318. package/package.json +2 -1
  319. package/dist/icons/glyph/glyphs-arrow-blackcaps-right-icon.js +0 -8
  320. package/dist/icons/glyph/glyphs-arrow-semibold-right-icon.js +0 -8
  321. package/dist/navigation/account-icon/account-icon.d.ts +0 -5
  322. package/dist/navigation/account-icon/account-icon.js +0 -13
  323. package/dist/navigation/cart-icon/cart-icon.d.ts +0 -5
  324. package/dist/navigation/cart-icon/cart-icon.js +0 -13
  325. package/dist/navigation/favorite-icon/favorite-icon.d.ts +0 -5
  326. package/dist/navigation/favorite-icon/favorite-icon.js +0 -13
@@ -0,0 +1,18 @@
1
+ "use client";
2
+ import { jsx } from 'react/jsx-runtime';
3
+ import { ConnectedCountryLanguageSelectionList } from '../../country-language-selection-list/connected-country-language-selection-list.js';
4
+ import { useFormattedMessage } from '../../intl/use-formatted-message.js';
5
+ import { usePaths } from '../../shared/routing/use-paths.js';
6
+ import { Page } from '../components/page/page.js';
7
+
8
+ function CountriesPage() {
9
+ const paths = usePaths();
10
+ const t = useFormattedMessage();
11
+ const title = t('Choose your country or region…');
12
+ return (jsx(Page, { breadcrumb: [
13
+ { href: paths.HOME, label: 'Home' },
14
+ { href: '', label: 'Countries' },
15
+ ], "data-test-selector": "countriesPage", title: title, children: jsx(ConnectedCountryLanguageSelectionList, {}) }));
16
+ }
17
+
18
+ export { CountriesPage };
@@ -13,7 +13,7 @@ function ErrorPage({ error, title = 'Something went wrong', }) {
13
13
  }, [error]);
14
14
  return (jsx(Page, { breadcrumb: [
15
15
  { href: paths.HOME, label: 'Home' },
16
- { href: paths.HOME, label: 'Error' },
16
+ { href: '', label: 'Error' },
17
17
  ], "data-test-selector": "errorPage", title: title, children: jsx(DefaultErrorView, { error: error, title: "" }) }));
18
18
  }
19
19
 
@@ -5,7 +5,7 @@ import { ListBox, ListBoxItem, Text } from 'react-aria-components';
5
5
  import clsx from 'clsx';
6
6
  import { Checkbox } from '../../../../forms/elements/checkbox/checkbox.js';
7
7
  import { SearchField } from '../../../../forms/fields/search-field/search-field.js';
8
- import { SolidRatingIcon } from '../../../../icons/solid/solid-rating-icon.js';
8
+ import { Icon } from '../../../../icon/icon.js';
9
9
  import { FormattedMessage } from '../../../../intl/formatted-message.js';
10
10
  import { useFormattedMessage } from '../../../../intl/use-formatted-message.js';
11
11
  import { Message } from '../../../../message/message.js';
@@ -57,7 +57,7 @@ function ChangeCustomer({ allowSetDefault = false, className, data, defaultCusto
57
57
  if (key === 'ArrowDown') {
58
58
  listBoxRef.current?.focus();
59
59
  }
60
- }, placeholder: t('Search for a customer'), showLabel: false, size: "md", value: filter, variant: "outline" }), jsx(ListBox, { ref: listBoxRef, "aria-label": "List of customers", "aria-live": "polite", className: styles['list-box'], id: "filtered-customer-results-list", items: listBoxItems, onAction: key => onCustomerSelected?.(String(key)), onSelectionChange: keys => onCustomerSelectionChanged(String([...keys][0])), renderEmptyState: () => !isLoading && (jsx(Message, { type: "info", children: jsx(FormattedMessage, { id: "No results found. Please refine your search." }) })), selectionBehavior: "replace", selectionMode: "single", children: listBoxItem => 'type' in listBoxItem ? (jsx(ListBoxItem, { isDisabled: true, textValue: listBoxItem.id, children: jsx(Message, { type: listBoxItem.type, children: jsx(Text, { slot: "description", children: listBoxItem.message }) }) }, "marker")) : (jsxs(ListBoxItem, { className: styles['list-box-item'], id: listBoxItem.id, textValue: listBoxItem.id, children: [jsxs(Text, { slot: "label", children: [jsxs("div", { className: styles['company-name'], children: [jsx(HighlightText, { className: styles['company-name-text'], highlightText: filter, text: `${listBoxItem.companyName}` }), defaultCustomerId === listBoxItem.id && (jsx(SolidRatingIcon, { className: styles['selected-icon'] }))] }), jsx(HighlightText, { className: styles['customer-number'], highlightText: filter, text: `${listBoxItem.customerNumber}` })] }), jsxs(Text, { slot: "description", children: [jsx("div", { children: jsx(HighlightText, { highlightText: filter, text: [
60
+ }, placeholder: t('Search for a customer'), showLabel: false, size: "md", value: filter, variant: "outline" }), jsx(ListBox, { ref: listBoxRef, "aria-label": "List of customers", "aria-live": "polite", className: styles['list-box'], id: "filtered-customer-results-list", items: listBoxItems, onAction: key => onCustomerSelected?.(String(key)), onSelectionChange: keys => onCustomerSelectionChanged(String([...keys][0])), renderEmptyState: () => !isLoading && (jsx(Message, { type: "info", children: jsx(FormattedMessage, { id: "No results found. Please refine your search." }) })), selectionBehavior: "replace", selectionMode: "single", children: listBoxItem => 'type' in listBoxItem ? (jsx(ListBoxItem, { isDisabled: true, textValue: listBoxItem.id, children: jsx(Message, { type: listBoxItem.type, children: jsx(Text, { slot: "description", children: listBoxItem.message }) }) }, "marker")) : (jsxs(ListBoxItem, { className: styles['list-box-item'], id: listBoxItem.id, textValue: listBoxItem.id, children: [jsxs(Text, { slot: "label", children: [jsxs("div", { className: styles['company-name'], children: [jsx(HighlightText, { className: styles['company-name-text'], highlightText: filter, text: `${listBoxItem.companyName}` }), defaultCustomerId === listBoxItem.id && (jsx(Icon, { className: styles['selected-icon'], name: "StarSolid" }))] }), jsx(HighlightText, { className: styles['customer-number'], highlightText: filter, text: `${listBoxItem.customerNumber}` })] }), jsxs(Text, { slot: "description", children: [jsx("div", { children: jsx(HighlightText, { highlightText: filter, text: [
61
61
  [listBoxItem.firstName, listBoxItem.lastName].join(' '),
62
62
  ]
63
63
  .filter(Boolean)
@@ -1,5 +1,6 @@
1
1
  "use client";
2
2
  import { jsx } from 'react/jsx-runtime';
3
+ import { Icon } from '../../../icon/icon.js';
3
4
  import { FormattedMessage } from '../../../intl/formatted-message.js';
4
5
  import { MenuList } from '../../../lists/menu-list/menu-list.js';
5
6
  import { MenuListItem } from '../../../lists/menu-list/menu-list-item.js';
@@ -10,7 +11,7 @@ import styles from './my-sonic-desktop-navigation.module.css.js';
10
11
  function MySonicDesktopNavigation({ className, currentPath, onSignOut, }) {
11
12
  const mySonicNavigationItems = useMySonicNavigationItems();
12
13
  const { basePathname } = useLocation();
13
- return (jsx(MenuList, { collapsible: true, className: className, children: mySonicNavigationItems.map(item => (jsx(MenuListItem, { badge: jsx(item.Icon, {}), "data-test-selector": item['data-test-selector'], ...(item.type === 'action'
14
+ return (jsx(MenuList, { collapsible: true, className: className, children: mySonicNavigationItems.map(item => (jsx(MenuListItem, { badge: jsx(Icon, { name: item.icon }), "data-test-selector": item['data-test-selector'], ...(item.type === 'action'
14
15
  ? item.action === 'signout'
15
16
  ? { onClick: onSignOut }
16
17
  : {}
@@ -1,8 +1,8 @@
1
- import { ComponentType } from 'react';
1
+ import { IconName } from '../../../icons';
2
2
  import { TranslationId } from '../../../intl/translation-id';
3
3
  interface MySonicNavigationItemBase {
4
- Icon: ComponentType;
5
4
  'data-test-selector'?: string;
5
+ icon: IconName;
6
6
  label: TranslationId;
7
7
  type: 'link' | 'action';
8
8
  }
@@ -1,8 +1,4 @@
1
1
  "use client";
2
- import { SolidCartIcon } from '../../../icons/solid/solid-cart-icon.js';
3
- import { SolidFavoriteIcon } from '../../../icons/solid/solid-favorite-icon.js';
4
- import { SolidLoginIcon } from '../../../icons/solid/solid-login-icon.js';
5
- import { SolidLogOutIcon } from '../../../icons/solid/solid-logout-icon.js';
6
2
  import { usePaths } from '../../../shared/routing/use-paths.js';
7
3
  import { isObject } from '../../../shared/utils/types.js';
8
4
 
@@ -16,30 +12,30 @@ function useMySonicNavigationItems() {
16
12
  const paths = usePaths();
17
13
  return [
18
14
  {
19
- Icon: SolidLoginIcon,
20
15
  'data-test-selector': 'accountLink',
16
+ icon: 'UserSolid',
21
17
  label: 'Account',
22
18
  path: paths.ACCOUNT,
23
19
  type: 'link',
24
20
  },
25
21
  {
26
- Icon: SolidFavoriteIcon,
27
22
  'data-test-selector': 'favoritesLink',
23
+ icon: 'FavoriteSolid',
28
24
  label: 'Favorites',
29
25
  path: paths.ACCOUNT_MY_LISTS,
30
26
  type: 'link',
31
27
  },
32
28
  {
33
- Icon: SolidCartIcon,
34
29
  'data-test-selector': 'ordersLink',
30
+ icon: 'CartSolid',
35
31
  label: 'Orders',
36
32
  path: paths.ACCOUNT_ORDERS,
37
33
  type: 'link',
38
34
  },
39
35
  {
40
- Icon: SolidLogOutIcon,
41
36
  action: 'signout',
42
37
  'data-test-selector': 'logoutButton',
38
+ icon: 'SignOutSolid',
43
39
  label: 'Log out',
44
40
  type: 'action',
45
41
  },
@@ -5,8 +5,8 @@ import { Button } from '../../../buttons/button/button.js';
5
5
  import { TableCard } from '../../../cards/table-card/table-card.js';
6
6
  import { Pagination } from '../../../filters/pagination/pagination.js';
7
7
  import { SearchField } from '../../../forms/fields/search-field/search-field.js';
8
+ import { Icon } from '../../../icon/icon.js';
8
9
  import { SolidEditIcon } from '../../../icons/solid/solid-edit-icon.js';
9
- import { SolidRatingIcon } from '../../../icons/solid/solid-rating-icon.js';
10
10
  import { useFormattedMessage } from '../../../intl/use-formatted-message.js';
11
11
  import { DynamicLoadingOverlay } from '../../../loading/dynamic-loading-overlay.js';
12
12
  import { useFetchPagedShipToAddresses } from '../../../shared/api/storefront/hooks/customer/use-fetch-paged-ship-to-addresses.js';
@@ -73,7 +73,7 @@ function ConnectedAddressBookWidget() {
73
73
  },
74
74
  value: {
75
75
  render: address => {
76
- return (address.isDefault && (jsx(SolidRatingIcon, { "aria-label": `(${t('addressProperty.Default')})`, className: styles['default-icon'], "data-test-selector": "default-address" })));
76
+ return (address.isDefault && (jsx(Icon, { className: styles['default-icon'], "data-test-selector": "default-address", label: `(${t('addressProperty.Default')})`, name: "StarSolid" })));
77
77
  },
78
78
  },
79
79
  },
@@ -4,11 +4,14 @@ export declare function usePatchSession(): {
4
4
  isLoading: boolean;
5
5
  isSuccess: boolean;
6
6
  mutate: (args_0: {
7
- session: Partial<Omit<import("../../model/storefront.model").SessionModel, "billTo" | "shipTo"> & {
7
+ session: Partial<Omit<import("../../model/storefront.model").SessionModel, "billTo" | "shipTo" | "language"> & {
8
8
  billTo?: import("../../model/storefront.model").BillToModel | {
9
9
  id: string;
10
10
  } | null;
11
11
  billToId?: string | null;
12
+ language?: import("../../model/storefront.model").LanguageModel | {
13
+ id: string;
14
+ } | null;
12
15
  shipTo?: import("../../model/storefront.model").ShipToModel | {
13
16
  id: string;
14
17
  } | null;
@@ -159,11 +159,14 @@ export interface SessionModel extends BaseModel {
159
159
  userRoles: string;
160
160
  userRolesTranslated: string;
161
161
  }
162
- export type PatchSessionModel = Partial<Omit<SessionModel, 'billTo' | 'shipTo'> & {
162
+ export type PatchSessionModel = Partial<Omit<SessionModel, 'billTo' | 'shipTo' | 'language'> & {
163
163
  billTo?: BillToModel | {
164
164
  id: string;
165
165
  } | null;
166
166
  billToId?: string | null;
167
+ language?: LanguageModel | {
168
+ id: string;
169
+ } | null;
167
170
  shipTo?: ShipToModel | {
168
171
  id: string;
169
172
  } | null;
@@ -3,7 +3,7 @@ import { jsxs, jsx } from 'react/jsx-runtime';
3
3
  import clsx from 'clsx';
4
4
  import { Button } from '../../buttons/button/button.js';
5
5
  import { Details } from '../../display/details/details.js';
6
- import { StrokeRecentIcon } from '../../icons/stroke/stroke-recent-icon.js';
6
+ import { Icon } from '../../icon/icon.js';
7
7
  import { useFormattedMessage } from '../../intl/use-formatted-message.js';
8
8
  import { Heading } from '../../typography/heading/heading.js';
9
9
  import { isProductionEnvironment } from '../utils/environment.js';
@@ -11,7 +11,7 @@ import styles from './default-error-view.module.css.js';
11
11
 
12
12
  function DefaultErrorView({ className, error, errorInfo, resetError, resetLabel, showErrorDetails = !isProductionEnvironment, showReset, title, }) {
13
13
  const t = useFormattedMessage();
14
- return (jsxs("section", { className: clsx(styles['default-error-view'], className), children: [title && (jsx(Heading, { className: styles['title'], size: "s", tag: "h1", children: title || t('Something went wrong') })), jsx("p", { children: error.message || t('An unexpected error occured. Please try again.') }), showErrorDetails && (jsxs(Details, { className: styles['error-details'], lang: "en", summary: "Technical Details (only visible in development mode)", children: [jsx("output", { className: styles['error-kind'], children: error.toString() }), error.stack && (jsxs("div", { className: styles['error-info'], children: [jsx(Heading, { className: styles['error-info-title'], size: "xs", tag: "h2", children: "Stack:" }), jsx("pre", { className: styles['error-info-data'], children: error.stack })] })), errorInfo?.componentStack && (jsxs("div", { className: styles['component-info'], children: [jsx(Heading, { className: styles['error-info-title'], size: "xs", tag: "h2", children: "Component stack:" }), jsx("pre", { className: styles['error-info-data'], children: errorInfo.componentStack })] }))] })), showReset && resetError && (jsx(Button, { light: true, className: styles['reset-button'], color: "secondary", icon: jsx(StrokeRecentIcon, {}), onClick: resetError, size: "sm", type: "button", variant: "outline", children: resetLabel || t('Reset') }))] }));
14
+ return (jsxs("section", { className: clsx(styles['default-error-view'], className), children: [title && (jsx(Heading, { className: styles['title'], size: "s", tag: "h1", children: title || t('Something went wrong') })), jsx("p", { children: error.message || t('An unexpected error occured. Please try again.') }), showErrorDetails && (jsxs(Details, { className: styles['error-details'], lang: "en", summary: "Technical Details (only visible in development mode)", children: [jsx("output", { className: styles['error-kind'], children: error.toString() }), error.stack && (jsxs("div", { className: styles['error-info'], children: [jsx(Heading, { className: styles['error-info-title'], size: "xs", tag: "h2", children: "Stack:" }), jsx("pre", { className: styles['error-info-data'], children: error.stack })] })), errorInfo?.componentStack && (jsxs("div", { className: styles['component-info'], children: [jsx(Heading, { className: styles['error-info-title'], size: "xs", tag: "h2", children: "Component stack:" }), jsx("pre", { className: styles['error-info-data'], children: errorInfo.componentStack })] }))] })), showReset && resetError && (jsx(Button, { light: true, className: styles['reset-button'], color: "secondary", icon: jsx(Icon, { name: "Refresh", size: "sm" }), onClick: resetError, size: "sm", type: "button", variant: "outline", children: resetLabel || t('Reset') }))] }));
15
15
  }
16
16
 
17
17
  export { DefaultErrorView };
@@ -1,6 +1,7 @@
1
1
  "use client";
2
2
  import { useRef, useEffect } from 'react';
3
3
 
4
+ // Note on this hook: it does not seem to work on a component that is mounted conditionally
4
5
  function useResizeObserver(resizeCallback) {
5
6
  let size;
6
7
  function onResize(entries, _observer) {
@@ -6,6 +6,7 @@ export interface RouteProviderProps {
6
6
  navigate: NavigateFunction;
7
7
  paths: Paths;
8
8
  url: {
9
+ alternativeHrefs?: Record<string, string>;
9
10
  basePathname?: string;
10
11
  href: string;
11
12
  pathname: string;
@@ -1,4 +1,5 @@
1
- export declare function buildHref({ basePathname, href, }: {
1
+ export declare function buildHref({ basePathname, href, ignoreLocalePrefix, }: {
2
2
  basePathname?: string;
3
3
  href: string;
4
+ ignoreLocalePrefix?: boolean;
4
5
  }): string;
@@ -1,7 +1,8 @@
1
- function buildHref({ basePathname, href, }) {
1
+ function buildHref({ basePathname, href, ignoreLocalePrefix, }) {
2
2
  if (!href.startsWith('http') &&
3
3
  basePathname &&
4
4
  basePathname !== '/' &&
5
+ !ignoreLocalePrefix &&
5
6
  !href.startsWith(`/${basePathname}`)) {
6
7
  return `/${basePathname.replace(/^\//, '')}/${href.replace(/^\//, '')}`;
7
8
  }
@@ -24,6 +24,7 @@ export interface RouteContextValue {
24
24
  navigate: NavigateFunction;
25
25
  paths: Paths;
26
26
  url: {
27
+ alternativeHrefs?: Record<string, string>;
27
28
  basePathname?: string;
28
29
  href: string;
29
30
  pathname: string;
@@ -36,6 +37,7 @@ export interface RouteLinkElementProps extends React.HTMLProps<HTMLAnchorElement
36
37
  route?: NavigateOptions;
37
38
  }
38
39
  export interface NavigateOptions {
40
+ ignoreLocalePrefix?: boolean;
39
41
  prefetch?: boolean;
40
42
  reload?: boolean;
41
43
  replace?: boolean;
@@ -1,5 +1,5 @@
1
1
  import { NavigateOptions } from './types';
2
- export declare function useRouteLink(): {
2
+ export declare function useRouteLink(ignoreLocalePrefix?: boolean): {
3
3
  RouteLinkElement: React.ElementType<import("./types").RouteLinkElementProps>;
4
4
  getRouteLinkProps: (href: string, route?: NavigateOptions) => {
5
5
  href: string;
@@ -5,18 +5,18 @@ import { useLocation } from './use-location.js';
5
5
  import { useOnNavigate } from './use-on-navigate.js';
6
6
  import { useRouteLinkElement } from './use-route-link-element.js';
7
7
 
8
- function useRouteLink() {
8
+ function useRouteLink(ignoreLocalePrefix) {
9
9
  const { basePathname } = useLocation();
10
10
  const RouteLinkElement = useRouteLinkElement();
11
11
  const triggerCallbacks = useOnNavigate();
12
12
  const getRouteLinkProps = useCallback((href, route) => {
13
- href = buildHref({ basePathname, href });
13
+ href = buildHref({ basePathname, href, ignoreLocalePrefix });
14
14
  return {
15
15
  href,
16
16
  onNavigate: () => triggerCallbacks(href, route),
17
17
  route,
18
18
  };
19
- }, [basePathname, triggerCallbacks]);
19
+ }, [basePathname, triggerCallbacks, ignoreLocalePrefix]);
20
20
  return {
21
21
  RouteLinkElement,
22
22
  getRouteLinkProps,
@@ -1,61 +1,17 @@
1
- function evaluateCssCalc(expression, options = {}) {
2
- const baseFontSize = options.baseFontSize ?? 16;
3
- const percentBase = options.percentBase ?? 100;
4
- const expr = expression
5
- .replace(/^calc\(/, '')
6
- .replace(/\)$/, '')
7
- .trim();
8
- const tokens = expr.split(/([*+/-])/).map(token => token.trim());
9
- const toPx = (value = '0px') => {
10
- const match = value.match(/^([+-]?[\d.]+)(px|rem|em|%)?$/);
11
- if (!match)
12
- throw new Error(`Unsupported or invalid token: "${value}"`);
13
- const num = Number.parseFloat(match[1] || '0');
14
- const unit = match[2] || 'px';
15
- switch (unit) {
16
- case 'px':
17
- return num;
18
- case 'rem':
19
- case 'em':
20
- return num * baseFontSize;
21
- case '%':
22
- return (num / 100) * percentBase;
23
- default:
24
- throw new Error(`Unsupported unit: ${unit}`);
25
- }
26
- };
27
- // Evaluate left-to-right (no operator precedence)
28
- let result = toPx(tokens[0]);
29
- for (let i = 1; i < tokens.length; i += 2) {
30
- const operator = tokens[i];
31
- const nextValue = toPx(tokens[i + 1]);
32
- switch (operator) {
33
- case '+':
34
- result += nextValue;
35
- break;
36
- case '-':
37
- result -= nextValue;
38
- break;
39
- case '*':
40
- result *= nextValue;
41
- break;
42
- case '/':
43
- result /= nextValue;
44
- break;
45
- default:
46
- throw new Error(`Unsupported operator: ${operator}`);
47
- }
48
- }
49
- return result;
50
- }
51
1
  function getCssPropertyValue(property) {
52
- if (typeof document === 'undefined')
2
+ if (typeof document === 'undefined' || !getComputedStyle)
53
3
  return;
54
- const rawValue = getComputedStyle?.(document.body).getPropertyValue(property);
4
+ const rawValue = getComputedStyle(document.body).getPropertyValue(property);
55
5
  if (!rawValue)
56
6
  return undefined;
57
7
  if (/calc/i.test(rawValue)) {
58
- return `${evaluateCssCalc(rawValue, { baseFontSize: 16, percentBase: 100 })}px`;
8
+ const el = document.createElement('div');
9
+ el.style.cssText = 'position:fixed;visibility:hidden;pointer-events:none';
10
+ el.style.top = rawValue;
11
+ document.body.append(el);
12
+ const px = Number.parseFloat(getComputedStyle(el).top);
13
+ el.remove();
14
+ return Number.isNaN(px) ? undefined : `${px}px`;
59
15
  }
60
16
  if (rawValue && !/\D/.test(rawValue)) {
61
17
  const valueAsNumber = Number.parseFloat(rawValue);
@@ -2,12 +2,13 @@
2
2
  import { jsxs, jsx } from 'react/jsx-runtime';
3
3
  import clsx from 'clsx';
4
4
  import { IconButton } from '../buttons/icon-button/icon-button.js';
5
- import { StrokeCloseboxIcon } from '../icons/stroke/stroke-closebox-icon.js';
5
+ import { useFormattedMessage } from '../intl/use-formatted-message.js';
6
6
  import { useInert } from '../shared/hooks/use-inert.js';
7
7
  import { useSidebar } from './use-sidebar.js';
8
8
  import styles from './sidebar.module.css.js';
9
9
 
10
10
  function Sidebar({ children, className }) {
11
+ const t = useFormattedMessage();
11
12
  const { isDocked, isOpen, toggle, transition } = useSidebar();
12
13
  const { ref: sidebarRef } = useInert(isOpen);
13
14
  return (jsxs("aside", { ref: sidebarRef, "aria-hidden": !isOpen.toString(), className: clsx(styles.sidebar, {
@@ -16,7 +17,7 @@ function Sidebar({ children, className }) {
16
17
  [styles['is-closed']]: !isOpen,
17
18
  [styles['is-docked']]: isDocked,
18
19
  [styles['is-not-docked']]: !isDocked,
19
- }, className), children: [jsx(IconButton, { className: styles.close, color: "secondary", onClick: toggle, children: jsx(StrokeCloseboxIcon, {}) }), jsx("div", { className: styles['content'], children: children })] }));
20
+ }, className), children: [jsx(IconButton, { className: styles.close, icon: "Close", label: t('Close'), onClick: toggle, size: "lg", theme: "secondary" }), jsx("div", { className: styles['content'], children: children })] }));
20
21
  }
21
22
 
22
23
  export { Sidebar };
@@ -1,13 +1,13 @@
1
1
  "use client";
2
2
  import { jsx } from 'react/jsx-runtime';
3
3
  import { Button } from '../buttons/button/button.js';
4
- import { StrokeFilterIcon } from '../icons/stroke/stroke-filter-icon.js';
4
+ import { Icon } from '../icon/icon.js';
5
5
  import { FormattedMessage } from '../intl/formatted-message.js';
6
6
  import { useSidebar } from './use-sidebar.js';
7
7
 
8
8
  const ToggleSidebarButton = () => {
9
9
  const { isOpen, toggle } = useSidebar();
10
- return (jsx(Button, { light: true, color: "secondary", icon: jsx(StrokeFilterIcon, {}), onClick: toggle, size: "sm", variant: "outline", children: isOpen ? (jsx(FormattedMessage, { id: "Hide filters" })) : (jsx(FormattedMessage, { id: "Show filters" })) }));
10
+ return (jsx(Button, { light: true, color: "secondary", icon: jsx(Icon, { name: "Filter", size: "sm" }), onClick: toggle, size: "sm", variant: "outline", children: isOpen ? (jsx(FormattedMessage, { id: "Hide filters" })) : (jsx(FormattedMessage, { id: "Show filters" })) }));
11
11
  };
12
12
 
13
13
  export { ToggleSidebarButton };