@sonic-equipment/ui 0.0.100 → 0.0.102

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.
package/dist/index.js CHANGED
@@ -1523,8 +1523,10 @@ function SpinnerState({ isDisabled, onChange, onManualInput, quantity, }) {
1523
1523
  function ManualInputState({ isDisabled, onCancel, onConfirm, quantity, }) {
1524
1524
  const [updatedQuantity, setQuantity] = useState(quantity);
1525
1525
  const onKeyUp = (e) => {
1526
- e.key === 'Enter' && onConfirm(ensureNumber(updatedQuantity));
1527
- e.key === 'Escape' && onCancel();
1526
+ if (e.key === 'Enter')
1527
+ onConfirm(ensureNumber(updatedQuantity));
1528
+ if (e.key === 'Escape')
1529
+ onCancel();
1528
1530
  };
1529
1531
  return (jsxs("div", { className: styles$11['manual-input-container'], children: [jsx("div", { className: styles$11['left-button-spacer'] }), jsx(NumberField, { autoFocus: true, autoGrow: true, defaultValue: quantity ? ensureNumber(quantity) : undefined, formatOptions: {
1530
1532
  maximumFractionDigits: 0,
@@ -7729,10 +7731,10 @@ function Select({ isDisabled = false, label, onChange, options, placeholder, sel
7729
7731
 
7730
7732
  var styles$Q = {"modal-overlay":"modal-module-rVFJc","modal-fade":"modal-module-63Uyl","is-full-screen":"modal-module-uwets","modal":"modal-module-6vlFt","content":"modal-module-FJxzx","modal-slide":"modal-module-jkAe7","modal-delayed-fade":"modal-module-WOZ01","close":"modal-module-7zIZE","modal-zoom":"modal-module-aPJ7X"};
7731
7733
 
7732
- function Modal({ children, className, isDismissable, isFullScreen, isKeyboardDismissDisabled, isOpen, onOpenChange, }) {
7733
- return (jsx(ModalOverlay, { className: clsx(styles$Q['modal-overlay'], className), isDismissable: isDismissable, isKeyboardDismissDisabled: isKeyboardDismissDisabled, isOpen: isOpen, onOpenChange: onOpenChange, children: jsx(Modal$1, { className: clsx(styles$Q.modal, {
7734
+ function Modal({ children, className, hasCloseButton, isDismissable, isFullScreen, isKeyboardDismissDisabled, isOpen, onOpenChange, shouldCloseOnInteractOutside = true, }) {
7735
+ return (jsx(ModalOverlay, { className: clsx(styles$Q['modal-overlay'], className), isDismissable: isDismissable, isKeyboardDismissDisabled: isKeyboardDismissDisabled, isOpen: isOpen, onOpenChange: onOpenChange, shouldCloseOnInteractOutside: () => shouldCloseOnInteractOutside, children: jsxs(Modal$1, { className: clsx(styles$Q.modal, {
7734
7736
  [styles$Q['is-full-screen']]: isFullScreen,
7735
- }), children: jsx("div", { className: styles$Q.content, children: children }) }) }));
7737
+ }), children: [hasCloseButton && (jsx("div", { className: styles$Q.close, children: jsx(IconButton, { color: "secondary", isDisabled: !isDismissable, onClick: () => onOpenChange(false), children: jsx(StrokeCloseboxIcon, {}) }) })), jsx("div", { className: styles$Q.content, children: children })] }) }));
7736
7738
  }
7737
7739
 
7738
7740
  var styles$P = {"heading":"heading-module-pMC65","uppercase":"heading-module-6spgX","italic":"heading-module-XXMDM","bold":"heading-module-xvrxo","xxl":"heading-module-Kn3ZN","xl":"heading-module--hZs-","l":"heading-module-WrJRY","m":"heading-module-hTexc","s":"heading-module-7W29m","xs":"heading-module-SgaLB","xxs":"heading-module-33en7"};
@@ -7761,8 +7763,8 @@ var styles$O = {"dialog":"dialog-module-qKzgy","header":"dialog-module-ZnsAe","c
7761
7763
  function Footer({ close }) {
7762
7764
  return (jsxs(Fragment, { children: [jsx(Button, { withArrow: true, color: "primary", size: "md", type: "submit", children: "Submit" }), jsx(Button, { color: "secondary", onClick: close, size: "md", variant: "outline", children: "Close" })] }));
7763
7765
  }
7764
- function Dialog({ allowClose = true, children, className, dialogClassName, footer = Footer, hasCloseButton = true, hideTitle, isDismissable, isFullScreen, isKeyboardDismissDisabled, isOpen, onOpenChange, onSubmit, title, validationErrors, }) {
7765
- return (jsx(Modal, { className: clsx(styles$O['modal-overlay'], className), isDismissable: isDismissable, isFullScreen: isFullScreen, isKeyboardDismissDisabled: isKeyboardDismissDisabled, isOpen: isOpen, onOpenChange: onOpenChange, children: jsx(Dialog$1, { "aria-label": title, className: clsx(styles$O.dialog, dialogClassName), children: ({ close }) => (jsxs(Form, { className: styles$O.form, onSubmit: onSubmit || (e => e.preventDefault), validationErrors: validationErrors, children: [jsxs("header", { className: styles$O.header, children: [!hideTitle && (jsx(Heading, { className: styles$O.heading, size: "xs", children: title })), hasCloseButton && (jsx("div", { className: styles$O.close, children: jsx(IconButton, { color: "secondary", isDisabled: !allowClose, onClick: close, children: jsx(StrokeCloseboxIcon, {}) }) }))] }), jsx("div", { className: styles$O.content, children: children instanceof Function ? children({ close }) : children }), jsx("footer", { className: styles$O.footer, children: footer instanceof Function ? footer({ close }) : footer })] })) }) }));
7766
+ function Dialog({ allowClose = true, children, className, dialogClassName, footer = Footer, hasCloseButton = true, hideTitle, isDismissable, isFullScreen, isKeyboardDismissDisabled, isOpen, onOpenChange, onSubmit, shouldCloseOnInteractOutside, title, validationErrors, }) {
7767
+ return (jsx(Modal, { className: clsx(styles$O['modal-overlay'], className), hasCloseButton: false, isDismissable: isDismissable, isFullScreen: isFullScreen, isKeyboardDismissDisabled: isKeyboardDismissDisabled, isOpen: isOpen, onOpenChange: onOpenChange, shouldCloseOnInteractOutside: shouldCloseOnInteractOutside, children: jsx(Dialog$1, { "aria-label": title, className: clsx(styles$O.dialog, dialogClassName), children: ({ close }) => (jsxs(Form, { className: styles$O.form, onSubmit: onSubmit || (e => e.preventDefault), validationErrors: validationErrors, children: [jsxs("header", { className: styles$O.header, children: [!hideTitle && (jsx(Heading, { className: styles$O.heading, size: "xs", children: title })), hasCloseButton && (jsx("div", { className: styles$O.close, children: jsx(IconButton, { color: "secondary", isDisabled: !allowClose, onClick: close, children: jsx(StrokeCloseboxIcon, {}) }) }))] }), jsx("div", { className: styles$O.content, children: children instanceof Function ? children({ close }) : children }), jsx("footer", { className: styles$O.footer, children: footer instanceof Function ? footer({ close }) : footer })] })) }) }));
7766
7768
  }
7767
7769
 
7768
7770
  var styles$N = {"country-selector-dialog":"country-selector-dialog-module-mMJS0","content":"country-selector-dialog-module-z-ZqY","logo":"country-selector-dialog-module-7VjsF","intro":"country-selector-dialog-module-IdVDt","selects":"country-selector-dialog-module-Nvikf"};
@@ -7815,19 +7817,18 @@ async function fetchCountriesLanguages() {
7815
7817
  languages: body.languages?.languages || [],
7816
7818
  };
7817
7819
  }
7818
- async function updateLanguageById({ languageId, }) {
7820
+ async function updateLocale({ countryId, languageId, }) {
7819
7821
  const { body } = await request({
7820
7822
  body: JSON.stringify({
7821
- language: {
7822
- id: languageId,
7823
- },
7823
+ countryId,
7824
+ languageId,
7824
7825
  }),
7825
7826
  credentials: 'include',
7826
7827
  headers: {
7827
7828
  'Content-Type': 'application/json',
7828
7829
  },
7829
- method: 'PATCH',
7830
- url: `${config.SHOP_API_URL}/api/v1/sessions/current`,
7830
+ method: 'POST',
7831
+ url: `${config.SHOP_API_URL}/api/v1/locale`,
7831
7832
  });
7832
7833
  return body;
7833
7834
  }
@@ -7869,18 +7870,6 @@ function useFetchCountriesLanguages({ enabled = true, } = { enabled: true }) {
7869
7870
  });
7870
7871
  }
7871
7872
 
7872
- function useUpdateLanguageById() {
7873
- const queryClient = useQueryClient();
7874
- return useMutation({
7875
- mutationFn: async (languageId) => {
7876
- const session = await updateLanguageById({ languageId });
7877
- // Update the session query cache
7878
- queryClient.setQueryData(['session'], session);
7879
- return session;
7880
- },
7881
- });
7882
- }
7883
-
7884
7873
  function useCookie(name, options) {
7885
7874
  const cookieValue = Cookies.get()[name];
7886
7875
  const [stateValue, setStateValue] = useState(cookieValue);
@@ -7924,13 +7913,12 @@ const cookieOptions = {
7924
7913
  };
7925
7914
  function useCountriesLanguages({ defaultCountryCode, defaultLanguageCode, }) {
7926
7915
  const [sessionCountries, setSessionCountries] = useSessionStorage('countries-v1');
7927
- const [currentCountryId, setCurrentCountryId] = useCookie('CurrentCountryId', cookieOptions);
7928
- const [currentLanguageId, setCurrentLanguageId] = useCookie('CurrentLanguageId', cookieOptions);
7929
- const [contextLanguageCode, setContextLanguageCode] = useCookie('SetContextLanguageCode', cookieOptions);
7916
+ const [currentCountryId] = useCookie('CurrentCountryId', cookieOptions);
7917
+ const [currentLanguageId] = useCookie('CurrentLanguageId', cookieOptions);
7918
+ const [contextLanguageCode] = useCookie('SetContextLanguageCode', cookieOptions);
7930
7919
  const { data: apiCountries, error, isFetching, } = useFetchCountriesLanguages({
7931
7920
  enabled: !sessionCountries,
7932
7921
  });
7933
- const { mutate: updateLanguageById } = useUpdateLanguageById();
7934
7922
  const countries = sessionCountries ?? apiCountries;
7935
7923
  useEffect(() => {
7936
7924
  if (sessionCountries)
@@ -7938,11 +7926,8 @@ function useCountriesLanguages({ defaultCountryCode, defaultLanguageCode, }) {
7938
7926
  setSessionCountries(apiCountries);
7939
7927
  // eslint-disable-next-line react-hooks/exhaustive-deps
7940
7928
  }, [apiCountries]);
7941
- function updateCountryLanguage({ country, language, }) {
7942
- setCurrentCountryId(country.id);
7943
- setCurrentLanguageId(language.id);
7944
- setContextLanguageCode(language.languageCode);
7945
- updateLanguageById(language.id);
7929
+ async function updateCountryLanguage({ country, language, }) {
7930
+ await updateLocale({ countryId: country.id, languageId: language.id });
7946
7931
  }
7947
7932
  if (error)
7948
7933
  throw error;
@@ -7994,8 +7979,8 @@ function CountrySelector({ defaultCountryCode, defaultLanguageCode, onChange, sh
7994
7979
  }, [selectedCountry, selectedLanguage]);
7995
7980
  if (isFetching)
7996
7981
  return null;
7997
- return (jsxs(Fragment, { children: [jsx(CountrySelectorTrigger, { onClick: open, selectedCountry: selectedCountry, selectedLanguage: selectedLanguage, showCountry: showCountry }), jsx(CountrySelectorDialog, { countries: countries, isOpen: isOpen, onSubmit: args => {
7998
- updateCountryLanguage(args);
7982
+ return (jsxs(Fragment, { children: [jsx(CountrySelectorTrigger, { onClick: open, selectedCountry: selectedCountry, selectedLanguage: selectedLanguage, showCountry: showCountry }), jsx(CountrySelectorDialog, { countries: countries, isOpen: isOpen, onSubmit: async (args) => {
7983
+ await updateCountryLanguage(args);
7999
7984
  close();
8000
7985
  onChange?.(args);
8001
7986
  }, selectedCountry: selectedCountry || defaultCountry, selectedLanguage: selectedLanguage || defaultLanguage, showCountry: showCountry })] }));
@@ -8690,7 +8675,7 @@ function ImagesGrid({ images, onSelectImage }) {
8690
8675
  }), onClick: () => onSelectImage?.(image, index), onKeyDown: event => handleKeydown(event, image), role: "button", tabIndex: 0, children: jsx(Image, { className: styles$r.image, fit: "contain", image: image, title: image.altText }) }, index))) }));
8691
8676
  }
8692
8677
 
8693
- var styles$q = {"image-lightbox":"image-lightbox-module-9k3oJ","slide":"image-lightbox-module-K5Gd0","active-image":"image-lightbox-module-UNPOi","thumb":"image-lightbox-module-PUOMT","image":"image-lightbox-module-4RKLg","main-swiper":"image-lightbox-module-hAy3O","pagination":"image-lightbox-module-nN1Kr","sm":"image-lightbox-module-1idAN","thumbs-swiper":"image-lightbox-module-Xbxcn","lg":"image-lightbox-module--V8Xo","navigation-button":"image-lightbox-module-RP7KS","navigation-button-prev":"image-lightbox-module-wOPYF","navigation-button-next":"image-lightbox-module-knizp"};
8678
+ var styles$q = {"image-lightbox":"image-lightbox-module-9k3oJ","slide":"image-lightbox-module-K5Gd0","active-image":"image-lightbox-module-UNPOi","thumb":"image-lightbox-module-PUOMT","image":"image-lightbox-module-4RKLg","main-swiper":"image-lightbox-module-hAy3O","pagination":"image-lightbox-module-nN1Kr","sm":"image-lightbox-module-1idAN","thumbs-swiper":"image-lightbox-module-Xbxcn","lg":"image-lightbox-module--V8Xo","navigation-button":"image-lightbox-module-RP7KS","navigation-button-prev":"image-lightbox-module-wOPYF","navigation-button-next":"image-lightbox-module-knizp","zoomed-overlay":"image-lightbox-module-UVzAg","zoomed-container":"image-lightbox-module-sBtWE","zoomed-image":"image-lightbox-module-aehw-"};
8694
8679
 
8695
8680
  function ImageLightbox({ images, initialSelectedIndex = 0, variant = 'sm', }) {
8696
8681
  const [thumbsSwiper, setThumbsSwiper] = useState();
@@ -8698,10 +8683,19 @@ function ImageLightbox({ images, initialSelectedIndex = 0, variant = 'sm', }) {
8698
8683
  const nextEl = useRef(null);
8699
8684
  const prevEl = useRef(null);
8700
8685
  const mainSwiperRef = useRef(null);
8686
+ const [isZoomed, setIsZoomed] = useState(false);
8687
+ function handleZoom() {
8688
+ setIsZoomed(!isZoomed);
8689
+ }
8701
8690
  return (jsxs("div", { className: clsx(styles$q['image-lightbox'], styles$q[variant]), children: [jsx(Swiper, { watchSlidesProgress: true, className: styles$q['thumbs-swiper'], direction: variant === 'sm' ? 'horizontal' : 'vertical', modules: [Thumb], onSwiper: swiper => setThumbsSwiper(swiper), slidesPerView: "auto", spaceBetween: 8, children: images.map((image, index) => (jsx(SwiperSlide, { className: styles$q.slide, children: jsx("div", { className: styles$q.thumb, children: jsx(Image, { className: styles$q.image, fit: "contain", height: 80, image: image, title: "Image", width: 80 }) }) }, index))) }), jsxs("div", { className: styles$q['main-swiper'], children: [jsx(Swiper, { initialSlide: initialSelectedIndex, modules: [Thumb, Navigation], navigation: {
8702
8691
  nextEl: nextEl.current,
8703
8692
  prevEl: prevEl.current,
8704
- }, onActiveIndexChange: swiper => setCurrentIndex(swiper.activeIndex), onBeforeInit: swiper => (mainSwiperRef.current = swiper), slidesPerView: 1, thumbs: { swiper: thumbsSwiper }, children: images.map((image, index) => (jsx(SwiperSlide, { className: styles$q.slide, children: jsx("div", { className: styles$q['active-image'], children: jsx(Image, { className: styles$q.image, fit: "contain", image: image, title: "Image" }) }) }, index))) }), jsx("div", { className: styles$q.pagination, children: jsx(Pagination$1, { contained: true, currentPage: currentIndex + 1, numberOfPages: images.length, onChange: pageNumber => mainSwiperRef.current?.slideTo(pageNumber - 1) }) }), variant === 'lg' && (jsxs(Fragment, { children: [jsx(CarouselNavigationButton, { ref: prevEl, className: clsx(styles$q['navigation-button'], styles$q['navigation-button-prev']), direction: "previous" }), jsx(CarouselNavigationButton, { ref: nextEl, className: clsx(styles$q['navigation-button'], styles$q['navigation-button-next']), direction: "next" })] }))] })] }));
8693
+ }, onActiveIndexChange: swiper => setCurrentIndex(swiper.activeIndex), onBeforeInit: swiper => (mainSwiperRef.current = swiper), slidesPerView: 1, thumbs: { swiper: thumbsSwiper }, children: images.map((image, index) => (jsx(SwiperSlide, { className: styles$q.slide, children: jsx("button", { className: styles$q['active-image'], onClick: handleZoom, type: "button", children: jsx(Image, { className: styles$q.image, fit: "contain", image: image, title: "Image" }) }) }, index))) }), jsx("div", { className: styles$q.pagination, children: jsx(Pagination$1, { contained: true, currentPage: currentIndex + 1, numberOfPages: images.length, onChange: pageNumber => mainSwiperRef.current?.slideTo(pageNumber - 1) }) }), variant === 'lg' && (jsxs(Fragment, { children: [jsx(CarouselNavigationButton, { ref: prevEl, className: clsx(styles$q['navigation-button'], styles$q['navigation-button-prev']), direction: "previous" }), jsx(CarouselNavigationButton, { ref: nextEl, className: clsx(styles$q['navigation-button'], styles$q['navigation-button-next']), direction: "next" })] }))] }), jsx(ZoomImage, { currentImage: images[currentIndex], isZoomed: isZoomed, onClose: handleZoom })] }));
8694
+ }
8695
+ function ZoomImage({ currentImage, isZoomed, onClose, }) {
8696
+ if (!isZoomed || !currentImage)
8697
+ return null;
8698
+ return (jsx(Modal, { className: styles$q['zoomed-overlay'], hasCloseButton: true, isDismissable: true, isFullScreen: true, isKeyboardDismissDisabled: false, isOpen: isZoomed, onOpenChange: () => onClose(), children: jsx("div", { className: styles$q['zoomed-container'], onClick: onClose, children: jsx(Image, { className: styles$q['zoomed-image'], image: currentImage, title: currentImage.altText }) }) }));
8705
8699
  }
8706
8700
 
8707
8701
  var styles$p = {"image-lightbox-modal":"product-detail-images-module-N3Ms-"};
@@ -8721,7 +8715,7 @@ function ProductDetailImages({ images }) {
8721
8715
  if (!isXl) {
8722
8716
  return jsx(ImageLightbox, { images: images });
8723
8717
  }
8724
- return (jsxs(Fragment, { children: [jsx(ImagesGrid, { images: images, onSelectImage: (image, _index) => handleOpenImage(image) }), jsx(Dialog, { hasCloseButton: true, hideTitle: true, isDismissable: true, isFullScreen: true, isKeyboardDismissDisabled: false, isOpen: isOpen, onOpenChange: toggle, title: "Product images", children: jsx("div", { className: styles$p['image-lightbox-modal'], children: jsx(ImageLightbox, { images: images, initialSelectedIndex: selectedImageIndex, variant: "lg" }) }) })] }));
8718
+ return (jsxs(Fragment, { children: [jsx(ImagesGrid, { images: images, onSelectImage: (image, _index) => handleOpenImage(image) }), jsx(Modal, { hasCloseButton: true, isDismissable: true, isFullScreen: true, isKeyboardDismissDisabled: false, isOpen: isOpen, onOpenChange: toggle, shouldCloseOnInteractOutside: false, children: jsx("div", { className: styles$p['image-lightbox-modal'], children: jsx(ImageLightbox, { images: images, initialSelectedIndex: selectedImageIndex, variant: "lg" }) }) })] }));
8725
8719
  }
8726
8720
 
8727
8721
  function GlyphsChevronsBoldDownIcon(props) {
@@ -10326,11 +10320,11 @@ function CategoriesGrid({ categories, onItemClick, }) {
10326
10320
 
10327
10321
  var styles$4 = {"search-section":"search-section-module-qaTiw","header":"search-section-module-E--U2","title":"search-section-module-AHlDR"};
10328
10322
 
10329
- function SearchSection({ button, children, className, title, }) {
10330
- return (jsxs("div", { className: clsx(styles$4['search-section'], className), children: [jsxs("div", { className: styles$4.header, children: [title && jsx("h2", { className: styles$4.title, children: title }), button && button] }), children] }));
10323
+ function SearchSection({ button, children, className, headerClassName, title, }) {
10324
+ return (jsxs("div", { className: clsx(styles$4['search-section'], className), children: [jsxs("div", { className: clsx(styles$4.header, headerClassName), children: [title && jsx("h2", { className: styles$4.title, children: title }), button && button] }), children] }));
10331
10325
  }
10332
10326
 
10333
- var styles$3 = {"section-container":"search-content-module-ZMwlB","content":"search-content-module-KIok6","left":"search-content-module-YRLIf","right":"search-content-module-qK5sg","button-container":"search-content-module-w-ORq","show-all-button":"search-content-module-bO1Q0","product-results":"search-content-module-bcFCH","no-results-text":"search-content-module-H-FX2","query":"search-content-module-LbQnK","suggestions":"search-content-module-mhiBZ","list":"search-content-module-coPAt"};
10327
+ var styles$3 = {"section-container":"search-content-module-ZMwlB","content":"search-content-module-KIok6","left":"search-content-module-YRLIf","right":"search-content-module-qK5sg","button-container":"search-content-module-w-ORq","show-all-button":"search-content-module-bO1Q0","product-results":"search-content-module-bcFCH","quick-access-section-header":"search-content-module-HrHCE","product-results-section-header":"search-content-module-9bgxF","no-results-text":"search-content-module-H-FX2","query":"search-content-module-LbQnK","suggestions":"search-content-module-mhiBZ","list":"search-content-module-coPAt"};
10334
10328
 
10335
10329
  function SectionContainer({ buttons, leftContent, rightContent, }) {
10336
10330
  return (jsx("div", { className: styles$3['section-container'], children: jsxs("div", { className: styles$3['content'], children: [jsx("div", { className: styles$3['left'], children: leftContent }), jsxs("div", { className: styles$3['right'], children: [rightContent, jsx("div", { className: styles$3['button-container'], children: buttons })] })] }) }));
@@ -10410,7 +10404,7 @@ function QuickAccessSection() {
10410
10404
  if (!collection)
10411
10405
  return;
10412
10406
  const { items } = collection;
10413
- return (jsx(SearchSection, { title: t('Quick access'), children: jsx("div", { className: styles$3['product-results'], children: jsx(CardCarousel, { cards: items.map((item, index) => (jsx(PromoCard, { href: item.action.url, image: item.image, onClick: close }, `${index}-${item.action.url}`))), cardsPerView: "auto", cardWidth: "narrow" }) }) }));
10407
+ return (jsx(SearchSection, { headerClassName: styles$3['quick-access-section-header'], title: t('Quick access'), children: jsx("div", { className: styles$3['product-results'], children: jsx(CardCarousel, { cards: items.map((item, index) => (jsx(PromoCard, { href: item.action.url, image: item.image, onClick: close }, `${index}-${item.action.url}`))), cardsPerView: "auto", cardWidth: "narrow" }) }) }));
10414
10408
  }
10415
10409
 
10416
10410
  function StrokeRecentIcon(props) {
@@ -10425,7 +10419,7 @@ function WithResults() {
10425
10419
  function SuggestionsSection() {
10426
10420
  const { autocomplete, categories, querySuggestions, recentSearches } = useAlgoliaSearch();
10427
10421
  const t = useFormattedMessage();
10428
- return (jsxs(SearchSection, { className: styles$3['product-results-section'], title: t('Suggestions'), children: [recentSearches && (jsx(SearchList, { ...autocomplete.getListProps({
10422
+ return (jsxs(SearchSection, { title: t('Suggestions'), children: [recentSearches && (jsx(SearchList, { ...autocomplete.getListProps({
10429
10423
  source: recentSearches.source,
10430
10424
  }), children: recentSearches.items.slice(0, 3).map(item => (jsx(SearchListItem, { ...autocomplete.getItemProps({
10431
10425
  item,
@@ -10463,14 +10457,14 @@ function ProductHitCard({ autocomplete, hit, index, source, }) {
10463
10457
  queryId: hit.queryId,
10464
10458
  }), onClick: () => {
10465
10459
  close();
10466
- hit.queryId &&
10460
+ if (hit.queryId)
10467
10461
  sendProductClickFromSearchEvent({
10468
10462
  objectId: hit.objectId,
10469
10463
  position: hit.position || index + 1,
10470
10464
  queryId: hit.queryId,
10471
10465
  });
10472
10466
  }, onFavoriting: () => {
10473
- hit.queryId &&
10467
+ if (hit.queryId)
10474
10468
  sendAddToWishListFromSearchEvent({
10475
10469
  objectId: hit.objectId,
10476
10470
  position: hit.position || index + 1,
@@ -10488,7 +10482,7 @@ function ProductResultsSection() {
10488
10482
  if (!collection)
10489
10483
  return null;
10490
10484
  const { items, source } = collection;
10491
- return (jsx(SearchSection, { className: styles$3['product-results-section'], title: t('Products'), children: jsx("div", { className: styles$3['product-results'], ...autocomplete.getListProps({ source }), children: jsx(CardCarousel, { cards: items.map((hit, index) => isProductHit(hit) ? (jsx(ProductHitCard, { autocomplete: autocomplete, hit: hit, index: index, source: source }, hit.id)) : (jsx(PromoCard, { href: hit.href, image: hit.image }, hit.id))), cardsPerView: "auto", cardWidth: "narrow" }) }) }));
10485
+ return (jsx(SearchSection, { className: styles$3['product-results-section'], headerClassName: styles$3['product-results-section-header'], title: t('Products'), children: jsx("div", { className: styles$3['product-results'], ...autocomplete.getListProps({ source }), children: jsx(CardCarousel, { cards: items.map((hit, index) => isProductHit(hit) ? (jsx(ProductHitCard, { autocomplete: autocomplete, hit: hit, index: index, source: source }, hit.id)) : (jsx(PromoCard, { href: hit.href, image: hit.image }, hit.id))), cardsPerView: "auto", cardWidth: "narrow" }) }) }));
10492
10486
  }
10493
10487
 
10494
10488
  function PanelContent() {
@@ -1,20 +1,6 @@
1
- import type { StoryObj } from '@storybook/react';
1
+ import type { Meta, StoryObj } from '@storybook/react';
2
2
  import { AddToCartButton } from './add-to-cart-button';
3
- declare const meta: {
4
- argTypes: {
5
- isDisabled: {
6
- control: "boolean";
7
- };
8
- };
9
- args: {
10
- isDisabled: false;
11
- onChange: import("@vitest/spy").Mock<(...args: any[]) => any>;
12
- quantity: number;
13
- };
14
- component: typeof AddToCartButton;
15
- tags: string[];
16
- title: string;
17
- };
3
+ declare const meta: Meta<typeof AddToCartButton>;
18
4
  export default meta;
19
5
  type Story = StoryObj<typeof meta>;
20
6
  export declare const InitialState: Story;
@@ -1,17 +1,6 @@
1
- import type { StoryObj } from '@storybook/react';
1
+ import type { Meta, StoryObj } from '@storybook/react';
2
2
  import { Button } from './button';
3
- declare const meta: {
4
- args: {
5
- onClick: import("@vitest/spy").Mock<(...args: any[]) => any>;
6
- size: "lg";
7
- };
8
- component: typeof Button;
9
- parameters: {
10
- layout: string;
11
- };
12
- tags: string[];
13
- title: string;
14
- };
3
+ declare const meta: Meta<typeof Button>;
15
4
  export default meta;
16
5
  type Story = StoryObj<typeof meta>;
17
6
  export declare const Solid: Story;
@@ -1,16 +1,6 @@
1
- import { StoryObj } from '@storybook/react';
1
+ import { Meta, StoryObj } from '@storybook/react';
2
2
  import { FavoriteButton } from './favorite-button';
3
- declare const meta: {
4
- args: {
5
- onPress: import("@vitest/spy").Mock<(...args: any[]) => any>;
6
- };
7
- component: typeof FavoriteButton;
8
- parameters: {
9
- layout: string;
10
- };
11
- tags: string[];
12
- title: string;
13
- };
3
+ declare const meta: Meta<typeof FavoriteButton>;
14
4
  export default meta;
15
5
  type Story = StoryObj<typeof meta>;
16
6
  export declare const InFavorites: Story;
@@ -1,16 +1,6 @@
1
- import type { StoryObj } from '@storybook/react';
1
+ import type { Meta, StoryObj } from '@storybook/react';
2
2
  import { IconButton } from './icon-button';
3
- declare const meta: {
4
- args: {
5
- onClick: import("@vitest/spy").Mock<(...args: any[]) => any>;
6
- };
7
- component: typeof IconButton;
8
- parameters: {
9
- layout: string;
10
- };
11
- tags: string[];
12
- title: string;
13
- };
3
+ declare const meta: Meta<typeof IconButton>;
14
4
  export default meta;
15
5
  type Story = StoryObj<typeof meta>;
16
6
  export declare const Primary: Story;
@@ -1,16 +1,6 @@
1
- import type { StoryObj } from '@storybook/react';
1
+ import type { Meta, StoryObj } from '@storybook/react';
2
2
  import { Link } from './link';
3
- declare const meta: {
4
- args: {
5
- onClick: import("@vitest/spy").Mock<(...args: any[]) => any>;
6
- };
7
- component: typeof Link;
8
- parameters: {
9
- layout: string;
10
- };
11
- tags: string[];
12
- title: string;
13
- };
3
+ declare const meta: Meta<typeof Link>;
14
4
  export default meta;
15
5
  type Story = StoryObj<typeof meta>;
16
6
  export declare const Default: Story;
@@ -1,16 +1,6 @@
1
1
  import { Meta, StoryObj } from '@storybook/react';
2
- import { ShowAll, ShowAllPropsControlled, ShowAllPropsUncontrolled } from './show-all';
3
- declare const meta: {
4
- args: {
5
- onToggle: import("@vitest/spy").Mock<(...args: any[]) => any>;
6
- };
7
- component: typeof ShowAll;
8
- parameters: {
9
- layout: string;
10
- };
11
- tags: string[];
12
- title: string;
13
- };
2
+ import { ShowAllPropsControlled, ShowAllPropsUncontrolled } from './show-all';
3
+ declare const meta: Meta<ShowAllPropsControlled>;
14
4
  export default meta;
15
5
  type Story = StoryObj<Meta<ShowAllPropsControlled>>;
16
6
  export declare const Text: Story;
@@ -13,7 +13,7 @@ interface UseCountriesLanguagesReturnTypeFetching {
13
13
  updateCountryLanguage(args: {
14
14
  country: Country;
15
15
  language: Language;
16
- }): void;
16
+ }): Promise<void>;
17
17
  }
18
18
  interface UseCountriesLanguagesReturnTypeSelected {
19
19
  countries: CountriesLanguages;
@@ -25,7 +25,7 @@ interface UseCountriesLanguagesReturnTypeSelected {
25
25
  updateCountryLanguage(args: {
26
26
  country: Country;
27
27
  language: Language;
28
- }): void;
28
+ }): Promise<void>;
29
29
  }
30
30
  interface UseCountriesLanguagesReturnType {
31
31
  countries: CountriesLanguages;
@@ -37,7 +37,7 @@ interface UseCountriesLanguagesReturnType {
37
37
  updateCountryLanguage(args: {
38
38
  country: Country;
39
39
  language: Language;
40
- }): void;
40
+ }): Promise<void>;
41
41
  }
42
42
  export declare function useCountriesLanguages({ defaultCountryCode, defaultLanguageCode, }: UseCountriesLanguagesArgs): UseCountriesLanguagesReturnType | UseCountriesLanguagesReturnTypeFetching | UseCountriesLanguagesReturnTypeSelected;
43
43
  export {};
@@ -1,16 +1,6 @@
1
- import type { StoryObj } from '@storybook/react';
2
- declare const meta: {
3
- args: {
4
- onClearAllFilters: import("@vitest/spy").Mock<(...args: any[]) => any>;
5
- onClearFilter: import("@vitest/spy").Mock<(...args: any[]) => any>;
6
- };
7
- component: ({ onClearAllFilters, onClearFilter, selectedFilterCategories, }: import("./active-filters").ActiveFiltersProps) => import("react/jsx-runtime").JSX.Element | null;
8
- parameters: {
9
- layout: string;
10
- };
11
- tags: string[];
12
- title: string;
13
- };
1
+ import type { Meta, StoryObj } from '@storybook/react';
2
+ import { ActiveFilters } from './active-filters';
3
+ declare const meta: Meta<typeof ActiveFilters>;
14
4
  export default meta;
15
5
  type Story = StoryObj<typeof meta>;
16
6
  export declare const Default: Story;
@@ -1,19 +1,9 @@
1
- import type { StoryObj } from '@storybook/react';
1
+ import type { Meta, StoryObj } from '@storybook/react';
2
2
  import { FilterOption, MultiSelect, MultiSelectProps } from './multi-select';
3
3
  type ColorFilterOption = FilterOption & {
4
4
  color: string;
5
5
  };
6
- declare const meta: {
7
- args: {
8
- onChange: import("@vitest/spy").Mock<(...args: any[]) => any>;
9
- };
10
- component: typeof MultiSelect;
11
- parameters: {
12
- layout: string;
13
- };
14
- tags: string[];
15
- title: string;
16
- };
6
+ declare const meta: Meta<typeof MultiSelect>;
17
7
  export default meta;
18
8
  type Story = StoryObj<typeof meta>;
19
9
  export declare const WithCheckboxes: Story;
@@ -1,18 +1,6 @@
1
- import type { StoryObj } from '@storybook/react';
1
+ import type { Meta, StoryObj } from '@storybook/react';
2
2
  import { Pagination } from './pagination';
3
- declare const meta: {
4
- args: {
5
- currentPage: number;
6
- onChange: import("@vitest/spy").Mock<(...args: any[]) => any>;
7
- totalPages: number;
8
- };
9
- component: typeof Pagination;
10
- parameters: {
11
- layout: string;
12
- };
13
- tags: string[];
14
- title: string;
15
- };
3
+ declare const meta: Meta<typeof Pagination>;
16
4
  export default meta;
17
5
  type Story = StoryObj<typeof Pagination>;
18
6
  export declare const Default: Story;
@@ -1,16 +1,6 @@
1
- import type { StoryObj } from '@storybook/react';
1
+ import type { Meta, StoryObj } from '@storybook/react';
2
2
  import { Checkbox } from './checkbox';
3
- declare const meta: {
4
- args: {
5
- onChange: import("@vitest/spy").Mock<(...args: any[]) => any>;
6
- };
7
- component: typeof Checkbox;
8
- parameters: {
9
- layout: string;
10
- };
11
- tags: string[];
12
- title: string;
13
- };
3
+ declare const meta: Meta<typeof Checkbox>;
14
4
  export default meta;
15
5
  type Story = StoryObj<typeof Checkbox>;
16
6
  export declare const Unchecked: Story;
@@ -1,16 +1,6 @@
1
- import type { StoryObj } from '@storybook/react';
1
+ import type { Meta, StoryObj } from '@storybook/react';
2
2
  import { ColorCheckbox } from './color-checkbox';
3
- declare const meta: {
4
- args: {
5
- onChange: import("@vitest/spy").Mock<(...args: any[]) => any>;
6
- };
7
- component: typeof ColorCheckbox;
8
- parameters: {
9
- layout: string;
10
- };
11
- tags: string[];
12
- title: string;
13
- };
3
+ declare const meta: Meta<typeof ColorCheckbox>;
14
4
  export default meta;
15
5
  type Story = StoryObj<typeof ColorCheckbox>;
16
6
  export declare const Checked: Story;
@@ -1,4 +1,4 @@
1
- import type { StoryObj } from '@storybook/react';
1
+ import type { Meta, StoryObj } from '@storybook/react';
2
2
  import { Select } from './select';
3
3
  declare const options: {
4
4
  readonly new: "New";
@@ -7,17 +7,7 @@ declare const options: {
7
7
  readonly price_desc: "Price: High - Low";
8
8
  readonly recommended: "Recommended";
9
9
  };
10
- declare const meta: {
11
- args: {
12
- onChange: import("@vitest/spy").Mock<(...args: any[]) => any>;
13
- };
14
- component: typeof Select;
15
- parameters: {
16
- layout: string;
17
- };
18
- tags: string[];
19
- title: string;
20
- };
10
+ declare const meta: Meta<typeof Select>;
21
11
  export default meta;
22
12
  type Story = StoryObj<typeof Select>;
23
13
  export declare const WithLabel: Story;
@@ -3,7 +3,8 @@ interface SearchSectionProps {
3
3
  button?: ReactElement;
4
4
  children: ReactNode;
5
5
  className?: string;
6
+ headerClassName?: string;
6
7
  title?: string;
7
8
  }
8
- export declare function SearchSection({ button, children, className, title, }: SearchSectionProps): import("react/jsx-runtime").JSX.Element;
9
+ export declare function SearchSection({ button, children, className, headerClassName, title, }: SearchSectionProps): import("react/jsx-runtime").JSX.Element;
9
10
  export {};
@@ -15,5 +15,5 @@ interface DialogProps extends Omit<ModalProps, 'children'> {
15
15
  title: string;
16
16
  validationErrors?: ComponentProps<typeof AriaForm>['validationErrors'];
17
17
  }
18
- export declare function Dialog({ allowClose, children, className, dialogClassName, footer, hasCloseButton, hideTitle, isDismissable, isFullScreen, isKeyboardDismissDisabled, isOpen, onOpenChange, onSubmit, title, validationErrors, }: DialogProps): import("react/jsx-runtime").JSX.Element;
18
+ export declare function Dialog({ allowClose, children, className, dialogClassName, footer, hasCloseButton, hideTitle, isDismissable, isFullScreen, isKeyboardDismissDisabled, isOpen, onOpenChange, onSubmit, shouldCloseOnInteractOutside, title, validationErrors, }: DialogProps): import("react/jsx-runtime").JSX.Element;
19
19
  export {};
@@ -8,5 +8,6 @@ export interface ModalProps {
8
8
  isKeyboardDismissDisabled?: boolean;
9
9
  isOpen: boolean;
10
10
  onOpenChange: (isOpen: boolean) => void;
11
+ shouldCloseOnInteractOutside?: boolean;
11
12
  }
12
- export declare function Modal({ children, className, isDismissable, isFullScreen, isKeyboardDismissDisabled, isOpen, onOpenChange, }: ModalProps): import("react/jsx-runtime").JSX.Element;
13
+ export declare function Modal({ children, className, hasCloseButton, isDismissable, isFullScreen, isKeyboardDismissDisabled, isOpen, onOpenChange, shouldCloseOnInteractOutside, }: ModalProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,5 @@
1
+ import { SessionModel } from 'shared/api/storefront/model/shop.model';
2
+ export declare function useUpdateLocale(): import("@tanstack/react-query").UseMutationResult<SessionModel, Error, {
3
+ countryId: string;
4
+ languageId: string;
5
+ }, unknown>;
@@ -4,6 +4,7 @@ export declare function fetchCountriesLanguages(): Promise<{
4
4
  countries: CountryModel[];
5
5
  languages: LanguageModel[];
6
6
  }>;
7
- export declare function updateLanguageById({ languageId, }: {
7
+ export declare function updateLocale({ countryId, languageId, }: {
8
+ countryId: string;
8
9
  languageId: string;
9
10
  }): Promise<SessionModel>;
package/dist/styles.css CHANGED
@@ -220,6 +220,7 @@
220
220
  --sidebar-layer: 100;
221
221
  --search-layer: 200;
222
222
  --modal-layer: 300;
223
+ --zoom-image-layer: 400;
223
224
  }
224
225
  :root {
225
226
  --header-height-desktop: 96px;
@@ -3433,6 +3434,13 @@ button.swiper-pagination-bullet {
3433
3434
  width: auto;
3434
3435
  }
3435
3436
 
3437
+ .image-lightbox-module-9k3oJ .image-lightbox-module-UNPOi {
3438
+ all: unset;
3439
+ width: 100%;
3440
+ aspect-ratio: 1;
3441
+ cursor: zoom-in;
3442
+ }
3443
+
3436
3444
  .image-lightbox-module-9k3oJ .image-lightbox-module-UNPOi,
3437
3445
  .image-lightbox-module-9k3oJ .image-lightbox-module-PUOMT {
3438
3446
  display: flex;
@@ -3443,11 +3451,6 @@ button.swiper-pagination-bullet {
3443
3451
  mix-blend-mode: multiply;
3444
3452
  }
3445
3453
 
3446
- .image-lightbox-module-9k3oJ .image-lightbox-module-UNPOi {
3447
- width: 100%;
3448
- aspect-ratio: 1;
3449
- }
3450
-
3451
3454
  .image-lightbox-module-9k3oJ .image-lightbox-module-PUOMT {
3452
3455
  width: var(--thumb-size);
3453
3456
  height: var(--thumb-size);
@@ -3524,6 +3527,26 @@ button.swiper-pagination-bullet {
3524
3527
  }
3525
3528
  }
3526
3529
 
3530
+ .image-lightbox-module-UVzAg {
3531
+ z-index: var(--zoom-image-layer);
3532
+ cursor: zoom-out;
3533
+ }
3534
+
3535
+ .image-lightbox-module-UVzAg .image-lightbox-module-sBtWE {
3536
+ display: grid;
3537
+ overflow: auto;
3538
+ width: 100%;
3539
+ height: 100%;
3540
+ place-items: center;
3541
+ }
3542
+
3543
+ .image-lightbox-module-UVzAg .image-lightbox-module-sBtWE .image-lightbox-module-aehw- {
3544
+ width: 100%;
3545
+ height: auto;
3546
+ -o-object-fit: contain;
3547
+ object-fit: contain;
3548
+ }
3549
+
3527
3550
  .product-detail-images-module-N3Ms- {
3528
3551
  display: flex;
3529
3552
  width: 100%;
@@ -5372,14 +5395,22 @@ button.swiper-pagination-bullet {
5372
5395
  .search-content-module-w-ORq {
5373
5396
  display: flex;
5374
5397
  flex-wrap: wrap;
5398
+ padding-right: var(--padding-inline);
5399
+ padding-left: var(--padding-inline);
5375
5400
  gap: var(--space-16);
5376
- padding-inline: var(--padding-inline);
5377
5401
  }
5378
5402
 
5379
5403
  .search-content-module-w-ORq:not(:empty) {
5380
5404
  padding-bottom: var(--padding-block);
5381
5405
  }
5382
5406
 
5407
+ @media (width >= 768px) {
5408
+
5409
+ .search-content-module-w-ORq {
5410
+ padding-left: var(--space-48)
5411
+ }
5412
+ }
5413
+
5383
5414
  @media (width < 768px) {
5384
5415
  .search-content-module-w-ORq .search-content-module-bO1Q0 {
5385
5416
  width: 100%;
@@ -5397,6 +5428,14 @@ button.swiper-pagination-bullet {
5397
5428
  padding-block-end: var(--padding-block);
5398
5429
  }
5399
5430
 
5431
+ @media (width >= 768px) {
5432
+
5433
+ .search-content-module-HrHCE,
5434
+ .search-content-module-9bgxF {
5435
+ padding-left: 22px
5436
+ }
5437
+ }
5438
+
5400
5439
  .search-content-module-H-FX2 .search-content-module-LbQnK {
5401
5440
  margin-top: var(--space-12);
5402
5441
  margin-bottom: var(--space-24);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sonic-equipment/ui",
3
- "version": "0.0.100",
3
+ "version": "0.0.102",
4
4
  "type": "module",
5
5
  "license": "MIT",
6
6
  "engines": {
@@ -50,93 +50,93 @@
50
50
  "react-instantsearch-core": "^7"
51
51
  },
52
52
  "devDependencies": {
53
- "@chromatic-com/storybook": "^1.6.1",
54
- "@csstools/postcss-global-data": "^2.1.1",
55
- "@rollup/plugin-alias": "^5.1.0",
56
- "@rollup/plugin-commonjs": "^26.0.1",
57
- "@rollup/plugin-node-resolve": "^15.2.3",
58
- "@rollup/plugin-replace": "^5.0.7",
59
- "@rollup/plugin-typescript": "^11.1.6",
60
- "@storybook/addon-docs": "^8.2.2",
61
- "@storybook/addon-essentials": "^8.2.2",
62
- "@storybook/addon-interactions": "^8.2.2",
63
- "@storybook/addon-links": "^8.2.2",
64
- "@storybook/addon-viewport": "^8.2.2",
65
- "@storybook/blocks": "^8.2.2",
66
- "@storybook/preview-api": "^8.2.2",
67
- "@storybook/react": "^8.2.2",
68
- "@storybook/react-vite": "^8.2.2",
69
- "@storybook/test": "^8.2.2",
70
- "@types/js-cookie": "^3.0.6",
71
- "@types/react": "^18.3.3",
72
- "@types/react-dom": "^18.3.0",
73
- "@typescript-eslint/eslint-plugin": "^7.16.0",
74
- "@typescript-eslint/parser": "^7.16.0",
75
- "@vitejs/plugin-react": "^4.3.1",
76
- "autoprefixer": "^10.4.19",
77
- "concurrently": "^8.2.2",
78
- "eslint": "^8.57.0",
79
- "eslint-config-prettier": "^9.1.0",
80
- "eslint-import-resolver-typescript": "^3.6.1",
81
- "eslint-plugin-import": "^2.29.1",
82
- "eslint-plugin-mdx": "^3.1.5",
83
- "eslint-plugin-no-relative-import-paths": "^1.5.5",
84
- "eslint-plugin-prettier": "^5.1.3",
85
- "eslint-plugin-react": "7.34.4",
86
- "eslint-plugin-react-hooks": "^4.6.2",
87
- "eslint-plugin-simple-import-sort": "^12.1.1",
88
- "eslint-plugin-sort-destructure-keys": "^2.0.0",
89
- "eslint-plugin-sort-keys-fix": "^1.1.2",
90
- "eslint-plugin-storybook": "^0.8.0",
91
- "eslint-plugin-typescript-sort-keys": "^3.2.0",
92
- "eslint-plugin-unused-imports": "^3.2.0",
93
- "http-server": "^14.1.1",
94
- "husky": "^9.0.11",
95
- "instantsearch.js": "^4.73.1",
96
- "nodemon": "^3.1.4",
97
- "postcss": "^8.4.39",
98
- "postcss-custom-media": "^10.0.8",
99
- "postcss-import": "^16.1.0",
100
- "postcss-nested": "^6.0.1",
101
- "react": "^18.3.1",
102
- "react-dom": "^18.3.1",
103
- "rimraf": "^6.0.1",
104
- "rollup": "^4.18.1",
105
- "rollup-plugin-dts": "^6.1.1",
106
- "rollup-plugin-peer-deps-external": "^2.2.4",
107
- "rollup-plugin-postcss": "^4.0.2",
108
- "rollup-plugin-ts": "^3.4.5",
109
- "storybook": "^8.2.2",
110
- "stylelint": "^16.7.0",
111
- "stylelint-config-css-modules": "^4.4.0",
112
- "stylelint-config-idiomatic-order": "^10.0.0",
113
- "stylelint-config-standard": "^36.0.1",
114
- "typescript": "^5.5.3",
115
- "vite": "^5.3.3",
116
- "vite-tsconfig-paths": "^4.3.2"
53
+ "@chromatic-com/storybook": "3.2.2",
54
+ "@csstools/postcss-global-data": "3.0.0",
55
+ "@rollup/plugin-alias": "5.1.1",
56
+ "@rollup/plugin-commonjs": "28.0.1",
57
+ "@rollup/plugin-node-resolve": "15.3.0",
58
+ "@rollup/plugin-replace": "6.0.1",
59
+ "@rollup/plugin-typescript": "12.1.1",
60
+ "@storybook/addon-docs": "8.4.2",
61
+ "@storybook/addon-essentials": "8.4.2",
62
+ "@storybook/addon-interactions": "8.4.2",
63
+ "@storybook/addon-links": "8.4.2",
64
+ "@storybook/addon-viewport": "8.4.2",
65
+ "@storybook/blocks": "8.4.2",
66
+ "@storybook/preview-api": "8.4.2",
67
+ "@storybook/react": "8.4.2",
68
+ "@storybook/react-vite": "8.4.2",
69
+ "@storybook/test": "8.4.2",
70
+ "@types/js-cookie": "3.0.6",
71
+ "@types/node": "22.9.0",
72
+ "@types/react": "18.3.12",
73
+ "@types/react-dom": "18.3.1",
74
+ "@typescript-eslint/eslint-plugin": "8.13.0",
75
+ "@typescript-eslint/parser": "8.13.0",
76
+ "@vitejs/plugin-react": "4.3.3",
77
+ "autoprefixer": "10.4.20",
78
+ "concurrently": "9.1.0",
79
+ "eslint": "8.57.0",
80
+ "eslint-config-prettier": "9.1.0",
81
+ "eslint-import-resolver-typescript": "3.6.3",
82
+ "eslint-plugin-import": "2.31.0",
83
+ "eslint-plugin-mdx": "3.1.5",
84
+ "eslint-plugin-no-relative-import-paths": "1.5.5",
85
+ "eslint-plugin-prettier": "5.2.1",
86
+ "eslint-plugin-react": "7.37.2",
87
+ "eslint-plugin-react-hooks": "5.0.0",
88
+ "eslint-plugin-simple-import-sort": "12.1.1",
89
+ "eslint-plugin-sort-destructure-keys": "2.0.0",
90
+ "eslint-plugin-sort-keys-fix": "1.1.2",
91
+ "eslint-plugin-storybook": "0.11.0",
92
+ "eslint-plugin-typescript-sort-keys": "3.3.0",
93
+ "eslint-plugin-unused-imports": "4.1.4",
94
+ "http-server": "14.1.1",
95
+ "husky": "9.1.6",
96
+ "instantsearch.js": "4.75.4",
97
+ "nodemon": "3.1.7",
98
+ "postcss": "8.4.47",
99
+ "postcss-custom-media": "11.0.5",
100
+ "postcss-import": "16.1.0",
101
+ "postcss-nested": "7.0.2",
102
+ "react": "18.3.1",
103
+ "react-dom": "18.3.1",
104
+ "rimraf": "6.0.1",
105
+ "rollup": "4.24.4",
106
+ "rollup-plugin-dts": "6.1.1",
107
+ "rollup-plugin-peer-deps-external": "2.2.4",
108
+ "rollup-plugin-postcss": "4.0.2",
109
+ "storybook": "8.4.2",
110
+ "stylelint": "16.10.0",
111
+ "stylelint-config-css-modules": "4.4.0",
112
+ "stylelint-config-idiomatic-order": "10.0.0",
113
+ "stylelint-config-standard": "36.0.1",
114
+ "typescript": "5.6.3",
115
+ "vite": "5.4.10",
116
+ "vite-tsconfig-paths": "5.1.0"
117
117
  },
118
118
  "dependencies": {
119
- "@algolia/autocomplete-core": "^1.17.4",
120
- "@algolia/autocomplete-plugin-query-suggestions": "^1.17.4",
121
- "@algolia/autocomplete-plugin-recent-searches": "^1.17.4",
122
- "@algolia/autocomplete-preset-algolia": "^1.17.4",
123
- "@algolia/client-search": "^4.24.0",
124
- "@tanstack/react-query": "^5.51.1",
125
- "@tanstack/react-query-devtools": "^5.51.1",
126
- "@types/react-transition-group": "^4.4.10",
127
- "algoliasearch": "^4.24.0",
128
- "clsx": "^2.1.1",
129
- "fast-equals": "^5.0.1",
130
- "instantsearch.js": "^4.73.1",
131
- "js-cookie": "^3.0.5",
132
- "query-string": "^9.1.0",
133
- "react-aria": "^3.35.0",
134
- "react-aria-components": "^1.4.0",
135
- "react-instantsearch": "^7.12.1",
136
- "react-toastify": "^10.0.6",
137
- "react-transition-group": "^4.4.5",
138
- "search-insights": "2.15.0",
139
- "swiper": "^11.1.4"
119
+ "@algolia/autocomplete-core": "1.17.7",
120
+ "@algolia/autocomplete-plugin-query-suggestions": "1.17.7",
121
+ "@algolia/autocomplete-plugin-recent-searches": "1.17.7",
122
+ "@algolia/autocomplete-preset-algolia": "1.17.7",
123
+ "@algolia/client-search": "4.24.0",
124
+ "@tanstack/react-query": "5.59.20",
125
+ "@tanstack/react-query-devtools": "5.59.20",
126
+ "@types/react-transition-group": "4.4.11",
127
+ "algoliasearch": "4.24.0",
128
+ "clsx": "2.1.1",
129
+ "fast-equals": "5.0.1",
130
+ "instantsearch.js": "4.75.4",
131
+ "js-cookie": "3.0.5",
132
+ "query-string": "9.1.1",
133
+ "react-aria": "3.35.1",
134
+ "react-aria-components": "1.4.1",
135
+ "react-instantsearch": "7.13.7",
136
+ "react-toastify": "10.0.6",
137
+ "react-transition-group": "4.4.5",
138
+ "search-insights": "2.17.2",
139
+ "swiper": "11.1.14"
140
140
  },
141
141
  "publishConfig": {
142
142
  "access": "public"
@@ -1,2 +0,0 @@
1
- import { SessionModel } from 'shared/api/storefront/model/shop.model';
2
- export declare function useUpdateLanguageById(): import("@tanstack/react-query").UseMutationResult<SessionModel, Error, string, unknown>;