@thefittingroom/shop-ui 5.0.2 → 5.0.3

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 (2) hide show
  1. package/dist/index.js +338 -185
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -20731,7 +20731,7 @@ function TextT({
20731
20731
  return /* @__PURE__ */ jsx$1(Text, { ...props, children: translatedText });
20732
20732
  }
20733
20733
  const SvgArrowBack = (props) => /* @__PURE__ */ reactExports.createElement("svg", { width: 24, height: 24, viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", ...props }, /* @__PURE__ */ reactExports.createElement("path", { d: "M7.825 13L13.425 18.6L12 20L4 12L12 4L13.425 5.4L7.825 11H20V13H7.825Z", fill: "#1E1E1E" }));
20734
- const AvatarBottomBackgroundUrl = "data:image/png;base64,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";
20734
+ const AVATAR_BOTTOM_BACKGROUND_URL = "data:image/png;base64,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";
20735
20735
  const SvgCheckCircle = (props) => /* @__PURE__ */ reactExports.createElement("svg", { width: 16, height: 16, viewBox: "0 0 16 16", fill: "none", xmlns: "http://www.w3.org/2000/svg", ...props }, /* @__PURE__ */ reactExports.createElement("g", { clipPath: "url(#clip0_4454_620)" }, /* @__PURE__ */ reactExports.createElement("path", { d: "M14.6666 7.38674V8.00007C14.6658 9.43769 14.2003 10.8365 13.3395 11.988C12.4787 13.1394 11.2688 13.9817 9.89016 14.3893C8.51154 14.797 7.03809 14.748 5.68957 14.2498C4.34104 13.7516 3.18969 12.8308 2.40723 11.6248C1.62476 10.4188 1.25311 8.99211 1.3477 7.55761C1.44229 6.12312 1.99806 4.75762 2.93211 3.66479C3.86615 2.57195 5.12844 1.81033 6.53071 1.4935C7.93298 1.17668 9.4001 1.32163 10.7133 1.90674M14.6666 2.66674L7.99992 9.34007L5.99992 7.34007", stroke: "#21201F", strokeWidth: 2, strokeLinecap: "round", strokeLinejoin: "round" })), /* @__PURE__ */ reactExports.createElement("defs", null, /* @__PURE__ */ reactExports.createElement("clipPath", { id: "clip0_4454_620" }, /* @__PURE__ */ reactExports.createElement("rect", { width: 16, height: 16, fill: "white" }))));
20736
20736
  const SvgChevronLeft = (props) => /* @__PURE__ */ reactExports.createElement("svg", { width: 48, height: 48, viewBox: "0 0 48 48", fill: "none", xmlns: "http://www.w3.org/2000/svg", ...props }, /* @__PURE__ */ reactExports.createElement("g", { opacity: 0.35 }, /* @__PURE__ */ reactExports.createElement("path", { d: "M30 36L18 24L30 12", stroke: "#1E1E1E", strokeWidth: 4, strokeLinecap: "round", strokeLinejoin: "round" })));
20737
20737
  const SvgChevronRight = (props) => /* @__PURE__ */ reactExports.createElement("svg", { width: 48, height: 48, viewBox: "0 0 48 48", fill: "none", xmlns: "http://www.w3.org/2000/svg", ...props }, /* @__PURE__ */ reactExports.createElement("g", { opacity: 0.35 }, /* @__PURE__ */ reactExports.createElement("path", { d: "M18 36L30 24L18 12", stroke: "#1E1E1E", strokeWidth: 4, strokeLinecap: "round", strokeLinejoin: "round" })));
@@ -20891,6 +20891,9 @@ function SidecarModalFrame({
20891
20891
  left: 0,
20892
20892
  width: "100vw",
20893
20893
  height: "100vh",
20894
+ margin: 0,
20895
+ padding: 0,
20896
+ border: "none",
20894
20897
  backgroundColor: "#FFFFFF"
20895
20898
  }
20896
20899
  }));
@@ -41517,93 +41520,22 @@ async function getStyleByExternalId(brandId, externalId) {
41517
41520
  recordCache[cacheKey] = record;
41518
41521
  return record;
41519
41522
  }
41523
+ const AVATAR_IMAGE_ASPECT_RATIO = 2 / 3;
41524
+ const AVATAR_DESKTOP_BOTTOM_CONTAINER_HEIGHT_PX = 100;
41520
41525
  const logger$1 = getLogger("vto-single");
41521
41526
  function VtoSingleOverlay() {
41522
- const {
41523
- t
41524
- } = useTranslation();
41525
41527
  const {
41526
41528
  brandId
41527
41529
  } = getStaticData();
41528
41530
  const userIsLoggedIn = useMainStore((state) => state.userIsLoggedIn);
41529
41531
  const userHasAvatar = useMainStore((state) => state.userHasAvatar);
41530
41532
  const userProfile = useMainStore((state) => state.userProfile);
41533
+ const deviceLayout = useMainStore((state) => state.deviceLayout);
41531
41534
  const openOverlay = useMainStore((state) => state.openOverlay);
41532
41535
  const closeOverlay = useMainStore((state) => state.closeOverlay);
41533
41536
  const [loadedProductData, setLoadedProductData] = reactExports.useState(null);
41534
41537
  const [selectedSizeLabel, setSelectedSizeLabel] = reactExports.useState(null);
41535
41538
  const [selectedColorLabel, setSelectedColorLabel] = reactExports.useState(null);
41536
- const css2 = useCss((theme) => ({
41537
- mainContainer: {
41538
- display: "flex",
41539
- height: "100%"
41540
- },
41541
- rightContainer: {
41542
- flexGrow: 1,
41543
- padding: "16px",
41544
- display: "flex",
41545
- flexDirection: "column"
41546
- },
41547
- contentContainer: {
41548
- flexGrow: 1,
41549
- display: "flex",
41550
- flexDirection: "column",
41551
- margin: "8px 0px",
41552
- padding: "16px 48px",
41553
- overflowY: "auto"
41554
- },
41555
- productNameContainer: {},
41556
- productNameText: {
41557
- fontSize: "32px"
41558
- },
41559
- priceContainer: {
41560
- marginTop: "8px"
41561
- },
41562
- priceText: {
41563
- fontSize: "18px"
41564
- },
41565
- colorContainer: {
41566
- marginTop: "16px"
41567
- },
41568
- colorLabelText: {
41569
- fontSize: "12px"
41570
- },
41571
- colorSelect: {
41572
- border: "none",
41573
- color: theme.color_fg_text,
41574
- fontFamily: theme.font_family,
41575
- fontSize: "12px"
41576
- },
41577
- sizeRecContainer: {
41578
- marginTop: "16px"
41579
- },
41580
- buttonContainer: {
41581
- marginTop: "24px"
41582
- },
41583
- descriptionContainer: {
41584
- marginTop: "32px"
41585
- },
41586
- descriptionText: {
41587
- fontSize: "12px"
41588
- },
41589
- footerContainer: {
41590
- marginLeft: "auto",
41591
- marginRight: "auto",
41592
- paddingBottom: "16px",
41593
- display: "flex",
41594
- justifyContent: "center",
41595
- alignItems: "center",
41596
- gap: "4px"
41597
- },
41598
- footerSignOutLink: {
41599
- fontSize: "10px",
41600
- color: theme.color_tfr_800
41601
- },
41602
- footerTfrIcon: {
41603
- width: "100px",
41604
- height: "24px"
41605
- }
41606
- }));
41607
41539
  reactExports.useEffect(() => {
41608
41540
  if (!userIsLoggedIn) {
41609
41541
  openOverlay(OverlayName.LANDING, {
@@ -41768,10 +41700,6 @@ function VtoSingleOverlay() {
41768
41700
  logger$1.logError("Error during logout:", error);
41769
41701
  });
41770
41702
  }, [closeOverlay, openOverlay]);
41771
- const handleColorSelectChange = reactExports.useCallback((e) => {
41772
- const newColorLabel = e.target.value || null;
41773
- setSelectedColorLabel(newColorLabel);
41774
- }, []);
41775
41703
  const handleAddToCartClick = reactExports.useCallback(async () => {
41776
41704
  try {
41777
41705
  if (!selectedSizeLabel) {
@@ -41792,35 +41720,158 @@ function VtoSingleOverlay() {
41792
41720
  if (!userIsLoggedIn || !userHasAvatar || !loadedProductData || !selectedColorSizeRecord) {
41793
41721
  return /* @__PURE__ */ jsx$1(SidecarModalFrame, { onRequestClose: closeOverlay, children: /* @__PURE__ */ jsx$1(Loading, {}) });
41794
41722
  }
41795
- return /* @__PURE__ */ jsx$1(SidecarModalFrame, { onRequestClose: closeOverlay, children: /* @__PURE__ */ jsxs("div", { css: css2.mainContainer, children: [
41796
- /* @__PURE__ */ jsx$1(VtoAvatar, { frameUrls }),
41723
+ let Layout;
41724
+ if (deviceLayout === DeviceLayout.MOBILE_PORTRAIT || deviceLayout === DeviceLayout.TABLET_PORTRAIT) {
41725
+ Layout = MobileLayout;
41726
+ } else {
41727
+ Layout = DesktopLayout;
41728
+ }
41729
+ return /* @__PURE__ */ jsx$1(SidecarModalFrame, { onRequestClose: closeOverlay, children: /* @__PURE__ */ jsx$1(Layout, { loadedProductData, selectedColorSizeRecord, availableColorLabels, selectedColorLabel, selectedSizeLabel, frameUrls, onClose: closeOverlay, onChangeColor: setSelectedColorLabel, onChangeSize: setSelectedSizeLabel, onAddToCart: handleAddToCartClick, onSignOut: handleSignOutClick }) });
41730
+ }
41731
+ function MobileLayout({
41732
+ // loadedProductData,
41733
+ // selectedColorSizeRecord,
41734
+ // availableColorLabels,
41735
+ // selectedColorLabel,
41736
+ // selectedSizeLabel,
41737
+ frameUrls
41738
+ // onClose,
41739
+ // onChangeColor,
41740
+ // onChangeSize,
41741
+ // onAddToCart,
41742
+ // onSignOut,
41743
+ }) {
41744
+ const css2 = useCss((_theme) => ({
41745
+ mainContainer: {
41746
+ width: "100%",
41747
+ height: "100%"
41748
+ }
41749
+ }));
41750
+ return /* @__PURE__ */ jsx$1("div", { css: css2.mainContainer, children: /* @__PURE__ */ jsx$1(Avatar, { frameUrls }) });
41751
+ }
41752
+ function DesktopLayout({
41753
+ loadedProductData,
41754
+ selectedColorSizeRecord,
41755
+ availableColorLabels,
41756
+ selectedColorLabel,
41757
+ selectedSizeLabel,
41758
+ frameUrls,
41759
+ onClose,
41760
+ onChangeColor,
41761
+ onChangeSize,
41762
+ onAddToCart,
41763
+ onSignOut
41764
+ }) {
41765
+ const {
41766
+ t
41767
+ } = useTranslation();
41768
+ const css2 = useCss((_theme) => ({
41769
+ mainContainer: {
41770
+ display: "flex",
41771
+ height: "100%"
41772
+ },
41773
+ rightContainer: {
41774
+ flexGrow: 1,
41775
+ padding: "16px",
41776
+ display: "flex",
41777
+ flexDirection: "column"
41778
+ },
41779
+ contentContainer: {
41780
+ flexGrow: 1,
41781
+ display: "flex",
41782
+ flexDirection: "column",
41783
+ margin: "8px 0px",
41784
+ padding: "16px 48px",
41785
+ overflowY: "auto"
41786
+ },
41787
+ productNameContainer: {},
41788
+ productNameText: {
41789
+ fontSize: "32px"
41790
+ },
41791
+ priceContainer: {
41792
+ marginTop: "8px"
41793
+ },
41794
+ priceText: {
41795
+ fontSize: "18px"
41796
+ },
41797
+ colorContainer: {
41798
+ marginTop: "16px"
41799
+ },
41800
+ sizeRecommendationContainer: {
41801
+ marginTop: "16px",
41802
+ display: "flex",
41803
+ flexDirection: "column",
41804
+ border: "1px solid rgba(33, 32, 31, 0.2)",
41805
+ padding: "32px 56px",
41806
+ justifyContent: "center",
41807
+ alignItems: "center"
41808
+ },
41809
+ recommendedSizeContainer: {
41810
+ display: "flex",
41811
+ alignItems: "center",
41812
+ gap: "6px",
41813
+ lineHeight: "normal"
41814
+ },
41815
+ recommendedSizeText: {
41816
+ fontWeight: "600"
41817
+ },
41818
+ itemFitContainer: {
41819
+ marginTop: "8px",
41820
+ lineHeight: "normal"
41821
+ },
41822
+ itemFitText: {},
41823
+ selectSizeLabelContainer: {
41824
+ lineHeight: "normal"
41825
+ },
41826
+ selectSizeLabelText: {},
41827
+ sizeSelectorContainer: {
41828
+ marginTop: "24px"
41829
+ },
41830
+ itemFitDetailsContainer: {
41831
+ marginTop: "24px",
41832
+ width: "100%"
41833
+ },
41834
+ buttonContainer: {
41835
+ marginTop: "24px"
41836
+ },
41837
+ descriptionContainer: {
41838
+ marginTop: "32px"
41839
+ }
41840
+ }));
41841
+ return /* @__PURE__ */ jsxs("div", { css: css2.mainContainer, children: [
41842
+ /* @__PURE__ */ jsx$1(Avatar, { frameUrls }),
41797
41843
  /* @__PURE__ */ jsxs("div", { css: css2.rightContainer, children: [
41798
- /* @__PURE__ */ jsx$1(ModalTitlebar, { title: t("try_it_on"), onCloseClick: closeOverlay }),
41844
+ /* @__PURE__ */ jsx$1(ModalTitlebar, { title: t("try_it_on"), onCloseClick: onClose }),
41799
41845
  /* @__PURE__ */ jsxs("div", { css: css2.contentContainer, children: [
41800
41846
  /* @__PURE__ */ jsx$1("div", { css: css2.productNameContainer, children: /* @__PURE__ */ jsx$1(Text, { variant: "brand", css: css2.productNameText, children: loadedProductData.productName }) }),
41801
41847
  /* @__PURE__ */ jsx$1("div", { css: css2.priceContainer, children: /* @__PURE__ */ jsx$1(Text, { variant: "base", css: css2.priceText, children: selectedColorSizeRecord.priceFormatted }) }),
41802
- availableColorLabels.length >= 2 && /* @__PURE__ */ jsx$1("div", { css: css2.colorContainer, children: /* @__PURE__ */ jsxs("label", { children: [
41803
- /* @__PURE__ */ jsx$1(TextT, { variant: "base", css: css2.colorLabelText, t: "vto-single.color_label" }),
41804
- /* @__PURE__ */ jsx$1("select", { value: selectedColorLabel ?? "", onChange: handleColorSelectChange, css: css2.colorSelect, children: availableColorLabels.map((colorLabel) => /* @__PURE__ */ jsx$1("option", { value: colorLabel, children: colorLabel }, colorLabel)) })
41805
- ] }) }),
41806
- /* @__PURE__ */ jsx$1("div", { css: css2.sizeRecContainer, children: /* @__PURE__ */ jsx$1(SizeRecommendation, { loadedProductData, selectedSizeLabel, onChangeSize: setSelectedSizeLabel }) }),
41807
- /* @__PURE__ */ jsx$1("div", { css: css2.buttonContainer, children: /* @__PURE__ */ jsx$1(ButtonT, { variant: "brand", t: "vto-single.add_to_cart", onClick: handleAddToCartClick }) }),
41808
- /* @__PURE__ */ jsx$1("div", { css: css2.descriptionContainer, children: /* @__PURE__ */ jsx$1(Text, { variant: "base", css: css2.descriptionText, children: /* @__PURE__ */ jsx$1("span", { dangerouslySetInnerHTML: {
41809
- __html: loadedProductData.productDescriptionHtml
41810
- } }) }) })
41848
+ /* @__PURE__ */ jsx$1("div", { css: css2.colorContainer, children: /* @__PURE__ */ jsx$1(ColorSelector, { availableColorLabels, selectedColorLabel, onChangeColor }) }),
41849
+ /* @__PURE__ */ jsxs("div", { css: css2.sizeRecommendationContainer, children: [
41850
+ /* @__PURE__ */ jsxs("div", { css: css2.recommendedSizeContainer, children: [
41851
+ /* @__PURE__ */ jsx$1(SvgInfoIcon, {}),
41852
+ /* @__PURE__ */ jsx$1(RecommendedSizeText, { loadedProductData, css: css2.recommendedSizeText })
41853
+ ] }),
41854
+ /* @__PURE__ */ jsx$1("div", { css: css2.itemFitContainer, children: /* @__PURE__ */ jsx$1(ItemFitText, { loadedProductData, css: css2.itemFitText }) }),
41855
+ /* @__PURE__ */ jsx$1("div", { css: css2.selectSizeLabelContainer, children: /* @__PURE__ */ jsx$1(TextT, { variant: "base", css: css2.selectSizeLabelText, t: "size-rec.select_size" }) }),
41856
+ /* @__PURE__ */ jsx$1("div", { css: css2.sizeSelectorContainer, children: /* @__PURE__ */ jsx$1(SizeSelector, { loadedProductData, selectedSizeLabel, onChangeSize }) }),
41857
+ /* @__PURE__ */ jsx$1("div", { css: css2.itemFitDetailsContainer, children: /* @__PURE__ */ jsx$1(ItemFitDetails, { loadedProductData, selectedSizeLabel }) })
41858
+ ] }),
41859
+ /* @__PURE__ */ jsx$1("div", { css: css2.buttonContainer, children: /* @__PURE__ */ jsx$1(AddToCartButton, { onClick: onAddToCart }) }),
41860
+ /* @__PURE__ */ jsx$1("div", { css: css2.descriptionContainer, children: /* @__PURE__ */ jsx$1(ProductDescriptionText, { loadedProductData }) })
41811
41861
  ] }),
41812
- /* @__PURE__ */ jsxs("div", { css: css2.footerContainer, children: [
41813
- /* @__PURE__ */ jsx$1(LinkT, { variant: "underline", css: css2.footerSignOutLink, onClick: handleSignOutClick, t: "vto-single.sign_out" }),
41814
- /* @__PURE__ */ jsx$1(SvgTfrName, { css: css2.footerTfrIcon })
41815
- ] })
41862
+ /* @__PURE__ */ jsx$1(Footer, { onSignOutClick: onSignOut })
41816
41863
  ] })
41817
- ] }) });
41864
+ ] });
41818
41865
  }
41819
- const AVATAR_CONTROLS_HEIGHT_PX = 100;
41820
- function VtoAvatar({
41866
+ function Avatar({
41821
41867
  frameUrls
41822
41868
  }) {
41823
- const [containerHeightPx, setContainerHeightPx] = reactExports.useState(window.innerHeight);
41869
+ const deviceLayout = useMainStore((state) => state.deviceLayout);
41870
+ const isMobileLayout = deviceLayout === DeviceLayout.MOBILE_PORTRAIT || deviceLayout === DeviceLayout.TABLET_PORTRAIT;
41871
+ const [containerSize, setContainerSize] = reactExports.useState({
41872
+ width: window.innerWidth,
41873
+ height: window.innerHeight
41874
+ });
41824
41875
  const topContainerRef = reactExports.useRef(null);
41825
41876
  const [selectedFrameIndex, setSelectedFrameIndex] = reactExports.useState(null);
41826
41877
  const css2 = useCss((theme) => ({
@@ -41853,17 +41904,17 @@ function VtoAvatar({
41853
41904
  width: "48px",
41854
41905
  height: "48px"
41855
41906
  },
41856
- controlsContainer: {
41907
+ bottomContainer: {
41857
41908
  position: "absolute",
41858
41909
  bottom: "0",
41859
- height: AVATAR_CONTROLS_HEIGHT_PX + "px",
41910
+ height: "50px",
41860
41911
  display: "flex",
41861
41912
  flexDirection: "column",
41862
41913
  alignItems: "center",
41863
41914
  justifyContent: "center",
41864
41915
  paddingBottom: "32px",
41865
41916
  backgroundColor: "#FFFFFF",
41866
- backgroundImage: `url(${AvatarBottomBackgroundUrl})`,
41917
+ backgroundImage: `url(${AVATAR_BOTTOM_BACKGROUND_URL})`,
41867
41918
  backgroundSize: "contain",
41868
41919
  backgroundRepeat: "repeat-y"
41869
41920
  },
@@ -41877,7 +41928,15 @@ function VtoAvatar({
41877
41928
  }));
41878
41929
  reactExports.useEffect(() => {
41879
41930
  const handleResize = () => {
41880
- setContainerHeightPx(topContainerRef.current?.clientHeight ?? window.innerHeight);
41931
+ const containerEl = topContainerRef.current;
41932
+ const size = containerEl ? {
41933
+ width: containerEl.clientWidth,
41934
+ height: containerEl.clientHeight
41935
+ } : {
41936
+ width: window.innerWidth,
41937
+ height: window.innerHeight
41938
+ };
41939
+ setContainerSize(size);
41881
41940
  };
41882
41941
  handleResize();
41883
41942
  window.addEventListener("resize", handleResize);
@@ -41898,8 +41957,42 @@ function VtoAvatar({
41898
41957
  }, 200);
41899
41958
  }
41900
41959
  }, [frameUrls, selectedFrameIndex]);
41901
- const imageHeightPx = containerHeightPx - AVATAR_CONTROLS_HEIGHT_PX;
41902
- const imageWidthPx = Math.floor(imageHeightPx / 1.5);
41960
+ const {
41961
+ imageSize,
41962
+ bottomContainerSize
41963
+ } = reactExports.useMemo(() => {
41964
+ let imageSize2;
41965
+ let bottomContainerSize2;
41966
+ if (isMobileLayout) {
41967
+ const imageWidthPx = containerSize.width;
41968
+ const imageHeightPx = Math.floor(imageWidthPx / AVATAR_IMAGE_ASPECT_RATIO);
41969
+ const bottomContainerHeightPx = containerSize.height - imageHeightPx;
41970
+ imageSize2 = {
41971
+ width: imageWidthPx,
41972
+ height: imageHeightPx
41973
+ };
41974
+ bottomContainerSize2 = {
41975
+ width: imageWidthPx,
41976
+ height: bottomContainerHeightPx
41977
+ };
41978
+ } else {
41979
+ const imageHeightPx = containerSize.height - AVATAR_DESKTOP_BOTTOM_CONTAINER_HEIGHT_PX;
41980
+ const imageWidthPx = Math.floor(imageHeightPx * AVATAR_IMAGE_ASPECT_RATIO);
41981
+ const bottomContainerHeightPx = AVATAR_DESKTOP_BOTTOM_CONTAINER_HEIGHT_PX;
41982
+ imageSize2 = {
41983
+ width: imageWidthPx,
41984
+ height: imageHeightPx
41985
+ };
41986
+ bottomContainerSize2 = {
41987
+ width: imageWidthPx,
41988
+ height: bottomContainerHeightPx
41989
+ };
41990
+ }
41991
+ return {
41992
+ imageSize: imageSize2,
41993
+ bottomContainerSize: bottomContainerSize2
41994
+ };
41995
+ }, [isMobileLayout, containerSize]);
41903
41996
  const rotateLeft = reactExports.useCallback(() => {
41904
41997
  setSelectedFrameIndex((prevIndex) => {
41905
41998
  if (prevIndex == null) {
@@ -41941,86 +42034,127 @@ function VtoAvatar({
41941
42034
  if (frameUrls && selectedFrameIndex != null) {
41942
42035
  contentNode = /* @__PURE__ */ jsxs(Fragment, { children: [
41943
42036
  /* @__PURE__ */ jsxs("div", { css: css2.imageContainer, style: {
41944
- width: imageWidthPx + "px",
41945
- height: imageHeightPx + "px"
42037
+ width: imageSize.width + "px",
42038
+ height: imageSize.height + "px"
41946
42039
  }, children: [
41947
42040
  /* @__PURE__ */ jsx$1("img", { src: frameUrls[selectedFrameIndex], css: css2.image, style: {
41948
- width: imageWidthPx + "px",
41949
- height: imageHeightPx + "px"
42041
+ width: imageSize.width + "px",
42042
+ height: imageSize.height + "px"
41950
42043
  }, onMouseDown: handleImageDrag }),
41951
42044
  /* @__PURE__ */ jsx$1("div", { css: css2.chevronLeftContainer, onClick: rotateLeft, children: /* @__PURE__ */ jsx$1(SvgChevronLeft, { css: css2.chevronIcon }) }),
41952
42045
  /* @__PURE__ */ jsx$1("div", { css: css2.chevronRightContainer, onClick: rotateRight, children: /* @__PURE__ */ jsx$1(SvgChevronRight, { css: css2.chevronIcon }) })
41953
42046
  ] }),
41954
- /* @__PURE__ */ jsxs("div", { css: css2.controlsContainer, style: {
41955
- width: imageWidthPx + "px"
41956
- }, children: [
42047
+ /* @__PURE__ */ jsx$1("div", { css: css2.bottomContainer, style: {
42048
+ width: bottomContainerSize.width + "px",
42049
+ height: bottomContainerSize.height + "px"
42050
+ }, children: isMobileLayout ? /* @__PURE__ */ jsx$1(Fragment, { children: " " }) : /* @__PURE__ */ jsxs(Fragment, { children: [
41957
42051
  /* @__PURE__ */ jsx$1("input", { type: "range", min: 0, max: frameUrls.length - 1, step: 1, value: selectedFrameIndex, onChange: (e) => setSelectedFrameIndex(Number(e.target.value)), css: css2.sliderInput }),
41958
42052
  /* @__PURE__ */ jsx$1(TextT, { variant: "base", t: "vto-single.slide_to_rotate", css: css2.sliderText })
41959
- ] })
42053
+ ] }) })
41960
42054
  ] });
41961
42055
  } else {
41962
42056
  contentNode = /* @__PURE__ */ jsx$1(Loading, { t: "vto-single.avatar_loading" });
41963
42057
  }
41964
42058
  return /* @__PURE__ */ jsx$1("div", { ref: topContainerRef, css: css2.topContainer, style: {
41965
- width: imageWidthPx + "px"
42059
+ width: imageSize.width + "px"
41966
42060
  }, children: contentNode });
41967
42061
  }
41968
- function SizeRecommendation({
42062
+ function ColorSelector({
42063
+ availableColorLabels,
42064
+ selectedColorLabel,
42065
+ onChangeColor
42066
+ }) {
42067
+ const css2 = useCss((theme) => ({
42068
+ colorContainer: {},
42069
+ colorLabelText: {
42070
+ fontSize: "12px"
42071
+ },
42072
+ colorSelect: {
42073
+ border: "none",
42074
+ color: theme.color_fg_text,
42075
+ fontFamily: theme.font_family,
42076
+ fontSize: "12px"
42077
+ }
42078
+ }));
42079
+ const handleColorSelectChange = reactExports.useCallback((e) => {
42080
+ const newColorLabel = e.target.value || null;
42081
+ onChangeColor(newColorLabel);
42082
+ }, []);
42083
+ if (availableColorLabels.length < 2) {
42084
+ return null;
42085
+ }
42086
+ return /* @__PURE__ */ jsx$1("div", { css: css2.colorContainer, children: /* @__PURE__ */ jsxs("label", { children: [
42087
+ /* @__PURE__ */ jsx$1(TextT, { variant: "base", css: css2.colorLabelText, t: "vto-single.color_label" }),
42088
+ /* @__PURE__ */ jsx$1("select", { value: selectedColorLabel ?? "", onChange: handleColorSelectChange, css: css2.colorSelect, children: availableColorLabels.map((colorLabel) => /* @__PURE__ */ jsx$1("option", { value: colorLabel, children: colorLabel }, colorLabel)) })
42089
+ ] }) });
42090
+ }
42091
+ function SizeSelector({
41969
42092
  loadedProductData,
41970
42093
  selectedSizeLabel,
41971
42094
  onChangeSize
41972
42095
  }) {
41973
- const {
41974
- t
41975
- } = useTranslation();
41976
42096
  const css2 = useCss((_theme) => ({
41977
- frame: {
41978
- display: "flex",
41979
- flexDirection: "column",
41980
- border: "1px solid rgba(33, 32, 31, 0.2)",
41981
- padding: "32px 56px",
41982
- justifyContent: "center",
41983
- alignItems: "center"
41984
- },
41985
- recommendedSizeContainer: {
41986
- display: "flex",
41987
- alignItems: "center",
41988
- gap: "6px",
41989
- lineHeight: "normal"
41990
- },
41991
- recommendedSizeText: {
41992
- fontWeight: "600"
41993
- },
41994
- itemFitContainer: {
41995
- marginTop: "8px",
41996
- lineHeight: "normal"
41997
- },
41998
- itemFitText: {},
41999
- selectSizeLabelContainer: {
42000
- lineHeight: "normal"
42001
- },
42002
- selectSizeLabelText: {},
42003
- sizeSelectorContainer: {
42004
- marginTop: "24px",
42097
+ container: {
42005
42098
  display: "flex",
42006
42099
  alignItems: "center",
42007
42100
  gap: "12px"
42008
42101
  },
42009
- sizeSelectorButton: {
42102
+ button: {
42010
42103
  width: "54px",
42011
42104
  height: "44px",
42012
42105
  border: "1px solid rgba(33, 32, 31, 0.2)",
42013
42106
  padding: "9px 5px"
42014
42107
  },
42015
- sizeSelectorButtonSelected: {
42108
+ selectedButton: {
42016
42109
  border: "1px solid rgb(33, 32, 31)",
42017
42110
  cursor: "default"
42018
- },
42019
- fitContainer: {
42020
- marginTop: "24px",
42111
+ }
42112
+ }));
42113
+ const sizeSelectorNodeList = reactExports.useMemo(() => loadedProductData.sizes.map((sizeRecord) => {
42114
+ const isSelected = sizeRecord.sizeLabel === selectedSizeLabel;
42115
+ return /* @__PURE__ */ jsx$1(Button, { variant: "base", css: /* @__PURE__ */ css$1({
42116
+ ...css2.button,
42117
+ ...isSelected && css2.selectedButton
42118
+ }, "", ""), onClick: () => {
42119
+ if (isSelected) {
42120
+ return;
42121
+ }
42122
+ onChangeSize(sizeRecord.sizeLabel);
42123
+ }, children: sizeRecord.sizeLabel }, sizeRecord.sizeLabel);
42124
+ }), [loadedProductData.sizes, selectedSizeLabel, onChangeSize]);
42125
+ return /* @__PURE__ */ jsx$1("div", { css: css2.container, children: sizeSelectorNodeList });
42126
+ }
42127
+ function RecommendedSizeText({
42128
+ loadedProductData,
42129
+ css: css2
42130
+ }) {
42131
+ return /* @__PURE__ */ jsx$1(TextT, { variant: "base", css: css2, t: "size-rec.recommended_size", vars: {
42132
+ size: loadedProductData.recommendedSizeLabel
42133
+ } });
42134
+ }
42135
+ function ItemFitText({
42136
+ loadedProductData,
42137
+ css: css2
42138
+ }) {
42139
+ const {
42140
+ t
42141
+ } = useTranslation();
42142
+ return /* @__PURE__ */ jsx$1(TextT, { variant: "base", css: css2, t: "size-rec.item_fit", vars: {
42143
+ fit: t(`size-rec.fitClassification.${loadedProductData.fitClassification}`) || loadedProductData.fitClassification
42144
+ } });
42145
+ }
42146
+ function ItemFitDetails({
42147
+ loadedProductData,
42148
+ selectedSizeLabel
42149
+ }) {
42150
+ const {
42151
+ t
42152
+ } = useTranslation();
42153
+ const css2 = useCss((_theme) => ({
42154
+ container: {
42021
42155
  width: "100%"
42022
42156
  },
42023
- fitLine: {
42157
+ line: {
42024
42158
  display: "flex",
42025
42159
  justifyContent: "space-between",
42026
42160
  alignItems: "center",
@@ -42029,29 +42163,17 @@ function SizeRecommendation({
42029
42163
  borderTop: "1px solid rgb(33, 32, 31)",
42030
42164
  paddingTop: "4px"
42031
42165
  },
42032
- fitFirstLine: {
42166
+ firstLine: {
42033
42167
  borderTop: "none",
42034
42168
  marginTop: "0px",
42035
42169
  paddingTop: "0px"
42036
42170
  },
42037
- fitDetail: {
42171
+ detailCell: {
42038
42172
  display: "flex",
42039
42173
  alignItems: "center",
42040
42174
  gap: "6px"
42041
42175
  }
42042
42176
  }));
42043
- const sizeSelectorNodeList = reactExports.useMemo(() => loadedProductData.sizes.map((sizeRecord) => {
42044
- const isSelected = sizeRecord.sizeLabel === selectedSizeLabel;
42045
- return /* @__PURE__ */ jsx$1(Button, { variant: "base", css: /* @__PURE__ */ css$1({
42046
- ...css2.sizeSelectorButton,
42047
- ...isSelected && css2.sizeSelectorButtonSelected
42048
- }, "", ""), onClick: () => {
42049
- if (isSelected) {
42050
- return;
42051
- }
42052
- onChangeSize(sizeRecord.sizeLabel);
42053
- }, children: sizeRecord.sizeLabel }, sizeRecord.sizeLabel);
42054
- }), [loadedProductData.sizes, selectedSizeLabel, onChangeSize]);
42055
42177
  const fitLineNodeList = reactExports.useMemo(() => {
42056
42178
  const selectedSizeRecord = loadedProductData.sizes.find((s) => s.sizeLabel === selectedSizeLabel);
42057
42179
  if (!selectedSizeRecord) {
@@ -42061,9 +42183,9 @@ function SizeRecommendation({
42061
42183
  const locationLabel = t(`size-rec.measurementLocation.${mlf.measurement_location}`) || mlf.measurement_location;
42062
42184
  const fit = mlf.fit;
42063
42185
  const fitLabel = t(`size-rec.fit.${fit}`) || fit;
42064
- return /* @__PURE__ */ jsxs("div", { css: [css2.fitLine, index === 0 && css2.fitFirstLine, "", ""], children: [
42065
- /* @__PURE__ */ jsx$1("div", { css: css2.fitDetail, children: locationLabel }),
42066
- /* @__PURE__ */ jsx$1("div", { css: css2.fitDetail, children: fit === "perfect_fit" ? /* @__PURE__ */ jsxs(Fragment, { children: [
42186
+ return /* @__PURE__ */ jsxs("div", { css: [css2.line, index === 0 && css2.firstLine, "", ""], children: [
42187
+ /* @__PURE__ */ jsx$1("div", { css: css2.detailCell, children: locationLabel }),
42188
+ /* @__PURE__ */ jsx$1("div", { css: css2.detailCell, children: fit === "perfect_fit" ? /* @__PURE__ */ jsxs(Fragment, { children: [
42067
42189
  /* @__PURE__ */ jsx$1(SvgCheckCircle, {}),
42068
42190
  " ",
42069
42191
  fitLabel
@@ -42071,19 +42193,50 @@ function SizeRecommendation({
42071
42193
  ] }, index);
42072
42194
  });
42073
42195
  }, [loadedProductData, selectedSizeLabel]);
42074
- return /* @__PURE__ */ jsxs("div", { css: css2.frame, children: [
42075
- /* @__PURE__ */ jsxs("div", { css: css2.recommendedSizeContainer, children: [
42076
- /* @__PURE__ */ jsx$1(SvgInfoIcon, {}),
42077
- /* @__PURE__ */ jsx$1(TextT, { variant: "base", css: css2.recommendedSizeText, t: "size-rec.recommended_size", vars: {
42078
- size: loadedProductData.recommendedSizeLabel
42079
- } })
42080
- ] }),
42081
- /* @__PURE__ */ jsx$1("div", { css: css2.itemFitContainer, children: /* @__PURE__ */ jsx$1(TextT, { variant: "base", css: css2.itemFitText, t: "size-rec.item_fit", vars: {
42082
- fit: t(`size-rec.fitClassification.${loadedProductData.fitClassification}`) || loadedProductData.fitClassification
42083
- } }) }),
42084
- /* @__PURE__ */ jsx$1("div", { css: css2.selectSizeLabelContainer, children: /* @__PURE__ */ jsx$1(TextT, { variant: "base", css: css2.selectSizeLabelText, t: "size-rec.select_size" }) }),
42085
- /* @__PURE__ */ jsx$1("div", { css: css2.sizeSelectorContainer, children: sizeSelectorNodeList }),
42086
- /* @__PURE__ */ jsx$1("div", { css: css2.fitContainer, children: fitLineNodeList })
42196
+ return /* @__PURE__ */ jsx$1("div", { css: css2.container, children: fitLineNodeList });
42197
+ }
42198
+ function AddToCartButton({
42199
+ onClick
42200
+ }) {
42201
+ return /* @__PURE__ */ jsx$1(ButtonT, { variant: "brand", t: "vto-single.add_to_cart", onClick });
42202
+ }
42203
+ function ProductDescriptionText({
42204
+ loadedProductData
42205
+ }) {
42206
+ const css2 = useCss((_theme) => ({
42207
+ descriptionText: {
42208
+ fontSize: "12px"
42209
+ }
42210
+ }));
42211
+ return /* @__PURE__ */ jsx$1(Text, { variant: "base", css: css2.descriptionText, children: /* @__PURE__ */ jsx$1("span", { dangerouslySetInnerHTML: {
42212
+ __html: loadedProductData.productDescriptionHtml
42213
+ } }) });
42214
+ }
42215
+ function Footer({
42216
+ onSignOutClick
42217
+ }) {
42218
+ const css2 = useCss((theme) => ({
42219
+ container: {
42220
+ marginLeft: "auto",
42221
+ marginRight: "auto",
42222
+ paddingBottom: "16px",
42223
+ display: "flex",
42224
+ justifyContent: "center",
42225
+ alignItems: "center",
42226
+ gap: "4px"
42227
+ },
42228
+ signOutLink: {
42229
+ fontSize: "10px",
42230
+ color: theme.color_tfr_800
42231
+ },
42232
+ tfrIcon: {
42233
+ width: "100px",
42234
+ height: "24px"
42235
+ }
42236
+ }));
42237
+ return /* @__PURE__ */ jsxs("div", { css: css2.container, children: [
42238
+ /* @__PURE__ */ jsx$1(LinkT, { variant: "underline", css: css2.signOutLink, onClick: onSignOutClick, t: "vto-single.sign_out" }),
42239
+ /* @__PURE__ */ jsx$1(SvgTfrName, { css: css2.tfrIcon })
42087
42240
  ] });
42088
42241
  }
42089
42242
  function useSizeRecommendation(load) {
@@ -42383,9 +42536,9 @@ const SHARED_CONFIG = {
42383
42536
  appGooglePlayUrl: "https://play.google.com/store/apps/details?id=com.thefittingroom.marketplace"
42384
42537
  },
42385
42538
  build: {
42386
- version: `${"5.0.2"}`,
42387
- commitHash: `${"cc69523"}`,
42388
- date: `${"2026-01-07T05:13:26.880Z"}`
42539
+ version: `${"5.0.3"}`,
42540
+ commitHash: `${"7ef9b58"}`,
42541
+ date: `${"2026-01-07T07:58:58.896Z"}`
42389
42542
  }
42390
42543
  };
42391
42544
  const CONFIGS = {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@thefittingroom/shop-ui",
3
- "version": "5.0.2",
3
+ "version": "5.0.3",
4
4
  "description": "the fitting room UI library",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",