@szymonpiatek/designsystem 0.0.8 → 0.0.9

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.cjs CHANGED
@@ -35,6 +35,8 @@ var CreditCardOutlinedIcon = require('@mui/icons-material/CreditCardOutlined');
35
35
  var LocalShippingOutlinedIcon = require('@mui/icons-material/LocalShippingOutlined');
36
36
  var GridViewIcon = require('@mui/icons-material/GridView');
37
37
  var ViewListIcon = require('@mui/icons-material/ViewList');
38
+ var ThumbUpOutlinedIcon = require('@mui/icons-material/ThumbUpOutlined');
39
+ var ReplyIcon = require('@mui/icons-material/Reply');
38
40
  var reactDom = require('react-dom');
39
41
  var KeyboardDoubleArrowLeftIcon = require('@mui/icons-material/KeyboardDoubleArrowLeft');
40
42
  var KeyboardDoubleArrowRightIcon = require('@mui/icons-material/KeyboardDoubleArrowRight');
@@ -43,7 +45,6 @@ var WarningAmberOutlinedIcon = require('@mui/icons-material/WarningAmberOutlined
43
45
  var ErrorOutlineOutlinedIcon = require('@mui/icons-material/ErrorOutlineOutlined');
44
46
  var InboxOutlinedIcon = require('@mui/icons-material/InboxOutlined');
45
47
  var VerifiedIcon = require('@mui/icons-material/Verified');
46
- var ThumbUpOutlinedIcon = require('@mui/icons-material/ThumbUpOutlined');
47
48
  var ArrowForwardIcon = require('@mui/icons-material/ArrowForward');
48
49
  var MenuIcon = require('@mui/icons-material/Menu');
49
50
 
@@ -78,6 +79,8 @@ var CreditCardOutlinedIcon__default = /*#__PURE__*/_interopDefault(CreditCardOut
78
79
  var LocalShippingOutlinedIcon__default = /*#__PURE__*/_interopDefault(LocalShippingOutlinedIcon);
79
80
  var GridViewIcon__default = /*#__PURE__*/_interopDefault(GridViewIcon);
80
81
  var ViewListIcon__default = /*#__PURE__*/_interopDefault(ViewListIcon);
82
+ var ThumbUpOutlinedIcon__default = /*#__PURE__*/_interopDefault(ThumbUpOutlinedIcon);
83
+ var ReplyIcon__default = /*#__PURE__*/_interopDefault(ReplyIcon);
81
84
  var KeyboardDoubleArrowLeftIcon__default = /*#__PURE__*/_interopDefault(KeyboardDoubleArrowLeftIcon);
82
85
  var KeyboardDoubleArrowRightIcon__default = /*#__PURE__*/_interopDefault(KeyboardDoubleArrowRightIcon);
83
86
  var InfoOutlinedIcon__default = /*#__PURE__*/_interopDefault(InfoOutlinedIcon);
@@ -85,7 +88,6 @@ var WarningAmberOutlinedIcon__default = /*#__PURE__*/_interopDefault(WarningAmbe
85
88
  var ErrorOutlineOutlinedIcon__default = /*#__PURE__*/_interopDefault(ErrorOutlineOutlinedIcon);
86
89
  var InboxOutlinedIcon__default = /*#__PURE__*/_interopDefault(InboxOutlinedIcon);
87
90
  var VerifiedIcon__default = /*#__PURE__*/_interopDefault(VerifiedIcon);
88
- var ThumbUpOutlinedIcon__default = /*#__PURE__*/_interopDefault(ThumbUpOutlinedIcon);
89
91
  var ArrowForwardIcon__default = /*#__PURE__*/_interopDefault(ArrowForwardIcon);
90
92
  var MenuIcon__default = /*#__PURE__*/_interopDefault(MenuIcon);
91
93
 
@@ -3370,6 +3372,19 @@ var COUNTRIES = countries_default.countries.map((c) => {
3370
3372
  };
3371
3373
  }).sort((a, b) => a.country.localeCompare(b.country, "pl"));
3372
3374
  var DEFAULT_COUNTRY = COUNTRIES.find((c) => c.flagCode === "US") ?? COUNTRIES[0];
3375
+ var COUNTRIES_BY_DIAL_CODE_LENGTH = [...COUNTRIES].sort(
3376
+ (a, b) => b.dialCode.length - a.dialCode.length
3377
+ );
3378
+ var parsePhoneValue = (full) => {
3379
+ if (full.startsWith("+")) {
3380
+ for (const c of COUNTRIES_BY_DIAL_CODE_LENGTH) {
3381
+ if (full.startsWith(c.dialCode)) {
3382
+ return { country: c, localDigits: full.slice(c.dialCode.length).replace(/\D/g, "") };
3383
+ }
3384
+ }
3385
+ }
3386
+ return { country: DEFAULT_COUNTRY, localDigits: full.replace(/\D/g, "") };
3387
+ };
3373
3388
  var wrapperColors = (theme, error, focused) => ({
3374
3389
  borderColor: focused ? error ? theme.palette.error.main : theme.palette.primary.main : error ? theme.palette.error.main : theme.palette.divider,
3375
3390
  boxShadow: focused ? `0 0 0 3px ${error ? theme.palette.error.main : theme.palette.primary.main}33` : "none",
@@ -3557,13 +3572,24 @@ var PhoneInput = react.forwardRef(
3557
3572
  () => COUNTRIES.find((c) => c.flagCode === defaultCountry) ?? DEFAULT_COUNTRY,
3558
3573
  [defaultCountry]
3559
3574
  );
3560
- const [selectedCountry, setSelectedCountry] = react.useState(initialCountry);
3575
+ const [selectedCountry, setSelectedCountry] = react.useState(() => {
3576
+ if (defaultValue?.startsWith("+")) return parsePhoneValue(defaultValue).country;
3577
+ return initialCountry;
3578
+ });
3561
3579
  const [isOpen, setIsOpen] = react.useState(false);
3562
3580
  const [searchQuery, setSearchQuery] = react.useState("");
3563
3581
  const [focused, setFocused] = react.useState(false);
3564
3582
  const isControlled = value !== void 0;
3565
- const [internalValue, setInternalValue] = react.useState(defaultValue);
3566
- const phoneValue = isControlled ? value : internalValue;
3583
+ const [internalDigits, setInternalDigits] = react.useState(() => {
3584
+ if (defaultValue?.startsWith("+")) return parsePhoneValue(defaultValue).localDigits;
3585
+ return defaultValue ?? "";
3586
+ });
3587
+ const parsedControlled = react.useMemo(() => {
3588
+ if (!isControlled || typeof value !== "string" || !value.startsWith("+")) return null;
3589
+ return parsePhoneValue(value);
3590
+ }, [isControlled, value]);
3591
+ const activeCountry = parsedControlled?.country ?? selectedCountry;
3592
+ const inputDisplayValue = isControlled ? parsedControlled?.localDigits ?? (typeof value === "string" ? value : "") ?? "" : internalDigits;
3567
3593
  const rootRef = react.useRef(null);
3568
3594
  const searchRef = react.useRef(null);
3569
3595
  const filteredCountries = react.useMemo(() => {
@@ -3588,21 +3614,29 @@ var PhoneInput = react.forwardRef(
3588
3614
  setSelectedCountry(country);
3589
3615
  onCountryChange?.(country);
3590
3616
  close();
3591
- if (!isControlled) setInternalValue("");
3592
- onChange?.("", { country, dialCode: country.dialCode, fullNumber: country.dialCode });
3617
+ if (!isControlled) setInternalDigits("");
3618
+ onChange?.(country.dialCode, { country, dialCode: country.dialCode, fullNumber: country.dialCode });
3593
3619
  };
3594
3620
  const handlePhoneChange = (e) => {
3595
- const raw = e.target.value.replace(/\D/g, "");
3596
- const clamped = raw.slice(0, selectedCountry.maxLength);
3597
- if (!isControlled) setInternalValue(clamped);
3598
- onChange?.(clamped, {
3599
- country: selectedCountry,
3600
- dialCode: selectedCountry.dialCode,
3601
- fullNumber: selectedCountry.dialCode + clamped
3602
- });
3621
+ const raw = e.target.value;
3622
+ if (raw.startsWith("+")) {
3623
+ const { country, localDigits } = parsePhoneValue(raw);
3624
+ const clamped = localDigits.slice(0, country.maxLength);
3625
+ setSelectedCountry(country);
3626
+ onCountryChange?.(country);
3627
+ if (!isControlled) setInternalDigits(clamped);
3628
+ const full = country.dialCode + clamped;
3629
+ onChange?.(full, { country, dialCode: country.dialCode, fullNumber: full });
3630
+ } else {
3631
+ const clamped = raw.replace(/\D/g, "").slice(0, activeCountry.maxLength);
3632
+ if (!isControlled) setInternalDigits(clamped);
3633
+ const full = activeCountry.dialCode + clamped;
3634
+ onChange?.(full, { country: activeCountry, dialCode: activeCountry.dialCode, fullNumber: full });
3635
+ }
3603
3636
  };
3604
3637
  const handlePhoneKeyDown = (e) => {
3605
3638
  if (e.ctrlKey || e.metaKey || e.altKey || e.key.length > 1) return;
3639
+ if (e.key === "+" && e.target.value === "") return;
3606
3640
  if (!/^\d$/.test(e.key)) e.preventDefault();
3607
3641
  };
3608
3642
  react.useEffect(() => {
@@ -3613,7 +3647,7 @@ var PhoneInput = react.forwardRef(
3613
3647
  document.addEventListener("mousedown", handler);
3614
3648
  return () => document.removeEventListener("mousedown", handler);
3615
3649
  }, [isOpen, close]);
3616
- const derivedPlaceholder = placeholder ?? (selectedCountry.minLength === selectedCountry.maxLength ? `${selectedCountry.maxLength} ${digitsLabel}` : `${selectedCountry.minLength}\u2013${selectedCountry.maxLength} ${digitsLabel}`);
3650
+ const derivedPlaceholder = placeholder ?? (activeCountry.minLength === activeCountry.maxLength ? `${activeCountry.maxLength} ${digitsLabel}` : `${activeCountry.minLength}\u2013${activeCountry.maxLength} ${digitsLabel}`);
3617
3651
  return /* @__PURE__ */ jsxRuntime.jsxs(Root8, { $fullWidth: fullWidth, ref: rootRef, children: [
3618
3652
  label && /* @__PURE__ */ jsxRuntime.jsx(Label, { htmlFor: inputId, error, size, children: label }),
3619
3653
  /* @__PURE__ */ jsxRuntime.jsxs(
@@ -3635,14 +3669,14 @@ var PhoneInput = react.forwardRef(
3635
3669
  "aria-haspopup": "listbox",
3636
3670
  "aria-expanded": isOpen,
3637
3671
  "aria-controls": isOpen ? listboxId : void 0,
3638
- "aria-label": countrySelectAriaLabel(selectedCountry.country, selectedCountry.dialCode),
3672
+ "aria-label": countrySelectAriaLabel(activeCountry.country, activeCountry.dialCode),
3639
3673
  onClick: openDropdown,
3640
3674
  onKeyDown: (e) => e.key === "Escape" && close(),
3641
3675
  onFocus: () => setFocused(true),
3642
3676
  onBlur: () => setFocused(false),
3643
3677
  children: [
3644
- /* @__PURE__ */ jsxRuntime.jsx(CountryFlag, { countryCode: selectedCountry.flagCode, size }),
3645
- /* @__PURE__ */ jsxRuntime.jsx(DialCode, { children: selectedCountry.dialCode }),
3678
+ /* @__PURE__ */ jsxRuntime.jsx(CountryFlag, { countryCode: activeCountry.flagCode, size }),
3679
+ /* @__PURE__ */ jsxRuntime.jsx(DialCode, { children: activeCountry.dialCode }),
3646
3680
  /* @__PURE__ */ jsxRuntime.jsx(ChevronIcon, { $open: isOpen, children: /* @__PURE__ */ jsxRuntime.jsx(Chevron, {}) })
3647
3681
  ]
3648
3682
  }
@@ -3656,14 +3690,14 @@ var PhoneInput = react.forwardRef(
3656
3690
  $size: size,
3657
3691
  type: "tel",
3658
3692
  inputMode: "numeric",
3659
- value: phoneValue,
3693
+ value: inputDisplayValue,
3660
3694
  onChange: handlePhoneChange,
3661
3695
  onKeyDown: handlePhoneKeyDown,
3662
3696
  onFocus: () => setFocused(true),
3663
3697
  onBlur: () => setFocused(false),
3664
3698
  disabled,
3665
3699
  placeholder: derivedPlaceholder,
3666
- maxLength: selectedCountry.maxLength,
3700
+ maxLength: activeCountry.maxLength,
3667
3701
  "aria-label": label ? void 0 : phoneAriaLabel
3668
3702
  }
3669
3703
  ),
@@ -3680,26 +3714,23 @@ var PhoneInput = react.forwardRef(
3680
3714
  "aria-label": countrySearchAriaLabel
3681
3715
  }
3682
3716
  ) }),
3683
- /* @__PURE__ */ jsxRuntime.jsx(OptionList, { children: filteredCountries.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx(EmptyMessage, { children: "Nie znaleziono kraju" }) : filteredCountries.map((country) => {
3684
- const isSelected = country.flagCode === selectedCountry.flagCode;
3685
- return /* @__PURE__ */ jsxRuntime.jsxs(
3686
- OptionItem2,
3687
- {
3688
- role: "option",
3689
- "aria-selected": isSelected,
3690
- $selected: isSelected,
3691
- onClick: () => selectCountry(country),
3692
- onKeyDown: (e) => e.key === "Enter" && selectCountry(country),
3693
- tabIndex: 0,
3694
- children: [
3695
- /* @__PURE__ */ jsxRuntime.jsx(CountryFlag, { countryCode: country.flagCode, size: "sm" }),
3696
- /* @__PURE__ */ jsxRuntime.jsx(CountryName, { children: country.country }),
3697
- /* @__PURE__ */ jsxRuntime.jsx(OptionDialCode, { children: country.dialCode })
3698
- ]
3699
- },
3700
- country.flagCode
3701
- );
3702
- }) })
3717
+ /* @__PURE__ */ jsxRuntime.jsx(OptionList, { children: filteredCountries.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx(EmptyMessage, { children: "Nie znaleziono kraju" }) : filteredCountries.map((country) => /* @__PURE__ */ jsxRuntime.jsxs(
3718
+ OptionItem2,
3719
+ {
3720
+ role: "option",
3721
+ "aria-selected": country.flagCode === activeCountry.flagCode,
3722
+ $selected: country.flagCode === activeCountry.flagCode,
3723
+ onClick: () => selectCountry(country),
3724
+ onKeyDown: (e) => e.key === "Enter" && selectCountry(country),
3725
+ tabIndex: 0,
3726
+ children: [
3727
+ /* @__PURE__ */ jsxRuntime.jsx(CountryFlag, { countryCode: country.flagCode, size: "sm" }),
3728
+ /* @__PURE__ */ jsxRuntime.jsx(CountryName, { children: country.country }),
3729
+ /* @__PURE__ */ jsxRuntime.jsx(OptionDialCode, { children: country.dialCode })
3730
+ ]
3731
+ },
3732
+ country.flagCode
3733
+ )) })
3703
3734
  ] })
3704
3735
  ]
3705
3736
  }
@@ -4834,55 +4865,51 @@ var cardVariants = [
4834
4865
  ];
4835
4866
  var cardPaddings = ["none", "sm", "md", "lg", "xl"];
4836
4867
  var cardRoundeds = ["none", "sm", "md", "lg", "full"];
4837
- function getVariantStyles2(variant, theme) {
4838
- const primary = theme.palette.primary.main;
4839
- const secondary = theme.palette.secondary.main;
4840
- const error = theme.palette.error.main;
4841
- switch (variant) {
4842
- case "default":
4843
- return {
4844
- backgroundColor: `${primary}26`,
4845
- color: primary,
4846
- border: "1px solid transparent"
4847
- };
4848
- case "secondary":
4849
- return {
4850
- backgroundColor: `${secondary}26`,
4851
- color: secondary,
4852
- border: "1px solid transparent"
4853
- };
4854
- case "outline":
4855
- return {
4856
- backgroundColor: "transparent",
4857
- border: `1px solid ${theme.palette.divider}`,
4858
- color: theme.palette.text.primary
4859
- };
4860
- case "destructive":
4861
- return {
4862
- backgroundColor: `${error}26`,
4863
- color: error,
4864
- border: "1px solid transparent"
4865
- };
4866
- case "success":
4867
- return {
4868
- backgroundColor: "rgba(34,197,94,0.15)",
4869
- color: theme.palette.mode === "dark" ? "rgb(134,239,172)" : "rgb(22,163,74)",
4870
- border: "1px solid transparent"
4871
- };
4872
- case "ghost":
4873
- return {
4874
- backgroundColor: "rgba(255,255,255,0.15)",
4875
- color: theme.palette.common.white,
4876
- border: "1px solid rgba(255,255,255,0.4)"
4877
- };
4878
- case "promo":
4879
- return {
4880
- backgroundColor: theme.palette.mode === "dark" ? "rgb(22,163,74)" : "rgb(22,163,74)",
4881
- color: "#ffffff",
4882
- border: "1px solid transparent"
4883
- };
4884
- }
4885
- }
4868
+
4869
+ // src/components/atoms/badges/Badge/Badge.variants.ts
4870
+ var variantStyles2 = {
4871
+ default: (theme) => ({
4872
+ backgroundColor: theme.palette.primary.main,
4873
+ color: "#fff",
4874
+ border: "1px solid transparent"
4875
+ }),
4876
+ secondary: (theme) => ({
4877
+ backgroundColor: theme.palette.secondary.main,
4878
+ color: "#fff",
4879
+ border: "1px solid transparent"
4880
+ }),
4881
+ outline: (theme) => ({
4882
+ backgroundColor: "transparent",
4883
+ border: `1px solid ${theme.palette.divider}`,
4884
+ color: theme.palette.text.primary
4885
+ }),
4886
+ destructive: (theme) => ({
4887
+ backgroundColor: theme.palette.error.main,
4888
+ color: "#fff",
4889
+ border: "1px solid transparent"
4890
+ }),
4891
+ success: (theme) => ({
4892
+ backgroundColor: theme.palette.success.main,
4893
+ color: "#fff",
4894
+ border: "1px solid transparent"
4895
+ }),
4896
+ ghost: (theme) => ({
4897
+ backgroundColor: "rgba(255,255,255,0.15)",
4898
+ color: theme.palette.common.white,
4899
+ border: "1px solid rgba(255,255,255,0.4)"
4900
+ }),
4901
+ warning: (theme) => ({
4902
+ backgroundColor: theme.palette.warning.main,
4903
+ color: "#fff",
4904
+ border: "1px solid transparent"
4905
+ }),
4906
+ promo: (theme) => ({
4907
+ backgroundColor: theme.palette.success.main,
4908
+ color: "#fff",
4909
+ border: "1px solid transparent"
4910
+ })
4911
+ };
4912
+ var badgeVariants = Object.keys(variantStyles2);
4886
4913
  var StyledBadge = styles.styled("span", {
4887
4914
  shouldForwardProp: (prop) => prop !== "$variant"
4888
4915
  })(({ theme, $variant }) => ({
@@ -4893,54 +4920,11 @@ var StyledBadge = styles.styled("span", {
4893
4920
  fontWeight: 500,
4894
4921
  lineHeight: 1,
4895
4922
  fontFamily: theme.typography.fontFamily,
4896
- ...getVariantStyles2($variant, theme)
4923
+ ...variantStyles2[$variant](theme)
4897
4924
  }));
4898
4925
  function Badge2({ variant = "default", ...props }) {
4899
4926
  return /* @__PURE__ */ jsxRuntime.jsx(StyledBadge, { $variant: variant, ...props });
4900
4927
  }
4901
- var badgeVariants = [
4902
- "default",
4903
- "secondary",
4904
- "outline",
4905
- "destructive",
4906
- "success",
4907
- "ghost",
4908
- "promo"
4909
- ];
4910
- function getBgColor(variant) {
4911
- switch (variant) {
4912
- case "flash":
4913
- return "#f59e0b";
4914
- case "new":
4915
- return "#3b82f6";
4916
- case "hot":
4917
- return "#ef4444";
4918
- default:
4919
- return "#16a34a";
4920
- }
4921
- }
4922
- var Root12 = styles.styled("span", {
4923
- shouldForwardProp: (prop) => prop !== "$variant"
4924
- })(({ theme, $variant }) => ({
4925
- display: "inline-flex",
4926
- alignItems: "center",
4927
- gap: "0.25rem",
4928
- borderRadius: "0.375rem",
4929
- padding: "0.25rem 0.625rem",
4930
- fontSize: "0.75rem",
4931
- fontWeight: 700,
4932
- lineHeight: 1,
4933
- letterSpacing: "0.02em",
4934
- fontFamily: theme.typography.fontFamily,
4935
- backgroundColor: getBgColor($variant),
4936
- color: "#ffffff",
4937
- textTransform: "uppercase"
4938
- }));
4939
- function SaleBadge({ discount, label, variant = "default", ...props }) {
4940
- const text = label ?? (discount !== void 0 ? `-${discount}%` : "SALE");
4941
- return /* @__PURE__ */ jsxRuntime.jsx(Root12, { $variant: variant, ...props, children: text });
4942
- }
4943
- var saleBadgeVariants = ["default", "flash", "new", "hot"];
4944
4928
  var sizeMap4 = {
4945
4929
  sm: { width: "2rem", height: "2rem", fontSize: "0.75rem" },
4946
4930
  md: { width: "2.5rem", height: "2.5rem", fontSize: "0.875rem" },
@@ -5089,7 +5073,7 @@ var spin = react$1.keyframes`to { transform: rotate(360deg); }`;
5089
5073
  var fade = react$1.keyframes`0%,100%{opacity:.15} 50%{opacity:1}`;
5090
5074
  var scalePulse = react$1.keyframes`0%,100%{transform:scale(0.6);opacity:.4} 50%{transform:scale(1);opacity:1}`;
5091
5075
  var barAnim = react$1.keyframes`0%,100%{transform:scaleY(.4);opacity:.5} 50%{transform:scaleY(1);opacity:1}`;
5092
- var Root13 = styles.styled("span", {
5076
+ var Root12 = styles.styled("span", {
5093
5077
  shouldForwardProp: (p) => !["$size", "$color"].includes(p)
5094
5078
  })(({ theme, $size, $color }) => {
5095
5079
  const colorMap = {
@@ -5178,7 +5162,7 @@ function Spinner3({
5178
5162
  ...props
5179
5163
  }) {
5180
5164
  const Inner5 = VARIANTS[variant];
5181
- return /* @__PURE__ */ jsxRuntime.jsx(Root13, { $size: size, $color: color, role: "status", "aria-label": label, ...props, children: /* @__PURE__ */ jsxRuntime.jsx(Inner5, {}) });
5165
+ return /* @__PURE__ */ jsxRuntime.jsx(Root12, { $size: size, $color: color, role: "status", "aria-label": label, ...props, children: /* @__PURE__ */ jsxRuntime.jsx(Inner5, {}) });
5182
5166
  }
5183
5167
  var spinnerVariants = ["ring", "dots", "pulse", "bars"];
5184
5168
  var spinnerSizes = ["xs", "sm", "md", "lg", "xl"];
@@ -5304,7 +5288,7 @@ var FONT_MAP = {
5304
5288
  lg: "1.125rem",
5305
5289
  xl: "1.5rem"
5306
5290
  };
5307
- var Root14 = styles.styled("div")({ position: "relative", display: "inline-flex", flexShrink: 0 });
5291
+ var Root13 = styles.styled("div")({ position: "relative", display: "inline-flex", flexShrink: 0 });
5308
5292
  var Label2 = styles.styled("div", {
5309
5293
  shouldForwardProp: (p) => p !== "$size"
5310
5294
  })(({ theme, $size }) => ({
@@ -5358,7 +5342,7 @@ function ProgressCircle({
5358
5342
  const { color, gradient } = useStrokeColor(variant, gradientId);
5359
5343
  const trackColor = theme.palette.mode === "dark" ? "rgba(255,255,255,0.1)" : "rgba(0,0,0,0.08)";
5360
5344
  return /* @__PURE__ */ jsxRuntime.jsxs(
5361
- Root14,
5345
+ Root13,
5362
5346
  {
5363
5347
  role: "progressbar",
5364
5348
  "aria-valuenow": value,
@@ -5715,9 +5699,10 @@ var PRESET_MAP = {
5715
5699
  "3/4": 3 / 4,
5716
5700
  "2/3": 2 / 3
5717
5701
  };
5718
- var Root15 = styles.styled("div")({
5702
+ var Root14 = styles.styled("div")({
5719
5703
  position: "relative",
5720
5704
  width: "100%",
5705
+ aspectRatio: "var(--ar)",
5721
5706
  "& > *": {
5722
5707
  position: "absolute",
5723
5708
  inset: 0,
@@ -5729,8 +5714,15 @@ var Root15 = styles.styled("div")({
5729
5714
  var AspectRatio = react.forwardRef(
5730
5715
  ({ ratio = "16/9", children, style, ...props }, ref) => {
5731
5716
  const numericRatio = typeof ratio === "string" ? PRESET_MAP[ratio] ?? 16 / 9 : ratio;
5732
- const paddingBottom = `${1 / numericRatio * 100}%`;
5733
- return /* @__PURE__ */ jsxRuntime.jsx(Root15, { ref, style: { paddingBottom, ...style }, ...props, children });
5717
+ return /* @__PURE__ */ jsxRuntime.jsx(
5718
+ Root14,
5719
+ {
5720
+ ref,
5721
+ style: { "--ar": String(numericRatio), ...style },
5722
+ ...props,
5723
+ children
5724
+ }
5725
+ );
5734
5726
  }
5735
5727
  );
5736
5728
  AspectRatio.displayName = "AspectRatio";
@@ -5751,7 +5743,7 @@ var Placeholder2 = styles.styled("div")(({ theme }) => ({
5751
5743
  }));
5752
5744
  var CategoryCardImage = ({ src, alt }) => /* @__PURE__ */ jsxRuntime.jsx(AspectRatio, { ratio: "4/3", children: src ? /* @__PURE__ */ jsxRuntime.jsx(Img, { src, alt }) : /* @__PURE__ */ jsxRuntime.jsx(Placeholder2, { "aria-label": alt, children: /* @__PURE__ */ jsxRuntime.jsx(ImageIcon__default.default, { style: { fontSize: 48 } }) }) });
5753
5745
  CategoryCardImage.displayName = "CategoryCardImage";
5754
- var Root16 = styles.styled("div")({
5746
+ var Root15 = styles.styled("div")({
5755
5747
  display: "flex",
5756
5748
  flexDirection: "column",
5757
5749
  gap: "0.25rem"
@@ -5773,7 +5765,7 @@ var CategoryCardInfo = ({
5773
5765
  name,
5774
5766
  count,
5775
5767
  countLabel = "produkt\xF3w"
5776
- }) => /* @__PURE__ */ jsxRuntime.jsxs(Root16, { children: [
5768
+ }) => /* @__PURE__ */ jsxRuntime.jsxs(Root15, { children: [
5777
5769
  /* @__PURE__ */ jsxRuntime.jsx(Name, { children: name }),
5778
5770
  count !== void 0 && /* @__PURE__ */ jsxRuntime.jsxs(Count, { children: [
5779
5771
  count,
@@ -5782,7 +5774,7 @@ var CategoryCardInfo = ({
5782
5774
  ] })
5783
5775
  ] });
5784
5776
  CategoryCardInfo.displayName = "CategoryCardInfo";
5785
- var Root17 = styles.styled(Card)(({ theme }) => ({
5777
+ var Root16 = styles.styled(Card)(({ theme }) => ({
5786
5778
  display: "flex",
5787
5779
  flexDirection: "column",
5788
5780
  overflow: "hidden",
@@ -5808,10 +5800,92 @@ var CategoryCard = react.forwardRef(
5808
5800
  /* @__PURE__ */ jsxRuntime.jsx(ImageWrap, { children: /* @__PURE__ */ jsxRuntime.jsx(CategoryCardImage, { src: imageUrl, alt: imageAlt ?? name }) }),
5809
5801
  /* @__PURE__ */ jsxRuntime.jsx(CategoryCardInfo, { name, count })
5810
5802
  ] });
5811
- return /* @__PURE__ */ jsxRuntime.jsx(Root17, { ref, variant: "default", padding: "md", rounded: "lg", ...props, children: href ? /* @__PURE__ */ jsxRuntime.jsx(CardLink, { href, children: content }) : content });
5803
+ return /* @__PURE__ */ jsxRuntime.jsx(Root16, { ref, variant: "default", padding: "md", rounded: "lg", ...props, children: href ? /* @__PURE__ */ jsxRuntime.jsx(CardLink, { href, children: content }) : content });
5812
5804
  }
5813
5805
  );
5814
5806
  CategoryCard.displayName = "CategoryCard";
5807
+ function deriveInitials(name) {
5808
+ return name.split(/\s+/).filter(Boolean).slice(0, 2).map((p) => p[0]?.toUpperCase() ?? "").join("");
5809
+ }
5810
+ var Root17 = styles.styled(Card)({
5811
+ display: "flex",
5812
+ alignItems: "center",
5813
+ justifyContent: "space-between",
5814
+ gap: "1rem",
5815
+ flexWrap: "wrap"
5816
+ });
5817
+ var AvatarImg = styles.styled("img")({
5818
+ borderRadius: "50%",
5819
+ objectFit: "cover",
5820
+ flexShrink: 0
5821
+ });
5822
+ var Identity = styles.styled("div")({
5823
+ display: "flex",
5824
+ alignItems: "center",
5825
+ gap: "1rem",
5826
+ flex: 1,
5827
+ minWidth: 0
5828
+ });
5829
+ var TextBlock = styles.styled("div")({ minWidth: 0 });
5830
+ var Name2 = styles.styled("h2")(({ theme }) => ({
5831
+ margin: 0,
5832
+ fontFamily: theme.typography.fontFamily,
5833
+ fontSize: "1.25rem",
5834
+ fontWeight: 700,
5835
+ color: theme.palette.text.primary,
5836
+ whiteSpace: "nowrap",
5837
+ overflow: "hidden",
5838
+ textOverflow: "ellipsis"
5839
+ }));
5840
+ var Subtitle = styles.styled("p")(({ theme }) => ({
5841
+ margin: "0.25rem 0 0",
5842
+ fontFamily: theme.typography.fontFamily,
5843
+ fontSize: "0.875rem",
5844
+ color: theme.palette.text.secondary,
5845
+ whiteSpace: "nowrap",
5846
+ overflow: "hidden",
5847
+ textOverflow: "ellipsis"
5848
+ }));
5849
+ var Actions = styles.styled("div")({
5850
+ display: "flex",
5851
+ alignItems: "center",
5852
+ gap: "0.75rem",
5853
+ flexWrap: "wrap",
5854
+ justifyContent: "flex-end"
5855
+ });
5856
+ var sizeMap5 = {
5857
+ sm: "2rem",
5858
+ md: "2.5rem",
5859
+ lg: "3rem",
5860
+ xl: "4rem"
5861
+ };
5862
+ var ProfileCard = react.forwardRef(
5863
+ ({
5864
+ name,
5865
+ subtitle,
5866
+ initials,
5867
+ avatarUrl,
5868
+ avatarColor = "primary",
5869
+ avatarSize = "xl",
5870
+ actions,
5871
+ cardVariant = "default",
5872
+ ...props
5873
+ }, ref) => {
5874
+ const resolvedInitials = initials ?? deriveInitials(name);
5875
+ const imgSize = sizeMap5[avatarSize] ?? "4rem";
5876
+ return /* @__PURE__ */ jsxRuntime.jsxs(Root17, { ref, variant: cardVariant, padding: "lg", rounded: "lg", ...props, children: [
5877
+ /* @__PURE__ */ jsxRuntime.jsxs(Identity, { children: [
5878
+ avatarUrl ? /* @__PURE__ */ jsxRuntime.jsx(AvatarImg, { src: avatarUrl, alt: name, style: { width: imgSize, height: imgSize } }) : /* @__PURE__ */ jsxRuntime.jsx(Avatar, { initials: resolvedInitials, size: avatarSize, color: avatarColor }),
5879
+ /* @__PURE__ */ jsxRuntime.jsxs(TextBlock, { children: [
5880
+ /* @__PURE__ */ jsxRuntime.jsx(Name2, { children: name }),
5881
+ subtitle && /* @__PURE__ */ jsxRuntime.jsx(Subtitle, { children: subtitle })
5882
+ ] })
5883
+ ] }),
5884
+ actions && /* @__PURE__ */ jsxRuntime.jsx(Actions, { children: actions })
5885
+ ] });
5886
+ }
5887
+ );
5888
+ ProfileCard.displayName = "ProfileCard";
5815
5889
  var DEFAULT_OMNIBUS_LABEL = "Najni\u017Csza cena z ostatnich 30 dni";
5816
5890
  var FONT_SIZE = {
5817
5891
  sm: "0.875rem",
@@ -6089,7 +6163,7 @@ var ImageWrap2 = styles.styled("div")({
6089
6163
  position: "relative",
6090
6164
  margin: "-1.5rem -1.5rem 1rem"
6091
6165
  });
6092
- var Name2 = styles.styled("h3")(({ theme }) => ({
6166
+ var Name3 = styles.styled("h3")(({ theme }) => ({
6093
6167
  margin: 0,
6094
6168
  color: theme.palette.text.primary,
6095
6169
  fontFamily: theme.typography.fontFamily,
@@ -6119,7 +6193,7 @@ var DealCard = react.forwardRef(
6119
6193
  }, ref) => {
6120
6194
  return /* @__PURE__ */ jsxRuntime.jsxs(Root20, { ref, variant: "default", padding: "md", rounded: "lg", ...props, children: [
6121
6195
  /* @__PURE__ */ jsxRuntime.jsx(ImageWrap2, { children: /* @__PURE__ */ jsxRuntime.jsx(ProductCardImage, { src: imageUrl, alt: imageAlt ?? name }) }),
6122
- /* @__PURE__ */ jsxRuntime.jsx(Name2, { children: name }),
6196
+ /* @__PURE__ */ jsxRuntime.jsx(Name3, { children: name }),
6123
6197
  /* @__PURE__ */ jsxRuntime.jsx(
6124
6198
  Price,
6125
6199
  {
@@ -6369,6 +6443,7 @@ var PostCard = react.forwardRef(
6369
6443
  author,
6370
6444
  href,
6371
6445
  category,
6446
+ categoryBadgeVariant,
6372
6447
  variant = "vertical",
6373
6448
  cardVariant = "default",
6374
6449
  ...rest
@@ -6380,7 +6455,7 @@ var PostCard = react.forwardRef(
6380
6455
  isFeatured && showImage && /* @__PURE__ */ jsxRuntime.jsx(FeaturedImageWrapper, { children: /* @__PURE__ */ jsxRuntime.jsx(PostCardImage, { src: imageUrl, alt: imageAlt, aspectRatio: "16/9", overlay: true }) }),
6381
6456
  !isFeatured && showImage && (isHorizontal ? /* @__PURE__ */ jsxRuntime.jsx(HorizontalImageWrapper, { children: /* @__PURE__ */ jsxRuntime.jsx(PostCardImage, { src: imageUrl, alt: imageAlt, aspectRatio: "4/3" }) }) : /* @__PURE__ */ jsxRuntime.jsx(PostCardImage, { src: imageUrl, alt: imageAlt, aspectRatio: "16/9" })),
6382
6457
  /* @__PURE__ */ jsxRuntime.jsxs(StyledContent, { $variant: variant, children: [
6383
- category && /* @__PURE__ */ jsxRuntime.jsx("div", { children: /* @__PURE__ */ jsxRuntime.jsx(Badge2, { variant: isFeatured ? "ghost" : "default", children: category }) }),
6458
+ category && /* @__PURE__ */ jsxRuntime.jsx("div", { children: /* @__PURE__ */ jsxRuntime.jsx(Badge2, { variant: categoryBadgeVariant ?? (isFeatured ? "ghost" : "default"), children: category }) }),
6384
6459
  /* @__PURE__ */ jsxRuntime.jsx(StyledTitle, { className: "post-card-title", $featured: isFeatured, children: title }),
6385
6460
  excerpt && variant !== "compact" && !isFeatured && /* @__PURE__ */ jsxRuntime.jsx(StyledExcerpt, { children: excerpt }),
6386
6461
  (date || author) && /* @__PURE__ */ jsxRuntime.jsx(PostCardMeta, { date, author, inverted: isFeatured })
@@ -6472,7 +6547,7 @@ var NameRow = styles.styled("div")({
6472
6547
  justifyContent: "space-between",
6473
6548
  marginBottom: "0.75rem"
6474
6549
  });
6475
- var Name3 = styles.styled("p")(({ theme }) => ({
6550
+ var Name4 = styles.styled("p")(({ theme }) => ({
6476
6551
  margin: 0,
6477
6552
  fontFamily: theme.typography.fontFamily,
6478
6553
  fontWeight: 600,
@@ -6537,6 +6612,7 @@ var PricingCard = react.forwardRef(
6537
6612
  href,
6538
6613
  popular = false,
6539
6614
  popularLabel = "Najpopularniejszy",
6615
+ popularBadgeVariant = "default",
6540
6616
  cardVariant,
6541
6617
  ...props
6542
6618
  }, ref) => {
@@ -6544,8 +6620,8 @@ var PricingCard = react.forwardRef(
6544
6620
  const resolvedCtaVariant = ctaVariant ?? (popular ? "primary" : "ghost");
6545
6621
  return /* @__PURE__ */ jsxRuntime.jsxs(Root21, { ref, variant: resolvedCardVariant, padding: "lg", rounded: "lg", ...props, children: [
6546
6622
  /* @__PURE__ */ jsxRuntime.jsxs(NameRow, { children: [
6547
- /* @__PURE__ */ jsxRuntime.jsx(Name3, { children: name }),
6548
- popular && /* @__PURE__ */ jsxRuntime.jsx(Badge2, { variant: "default", children: popularLabel })
6623
+ /* @__PURE__ */ jsxRuntime.jsx(Name4, { children: name }),
6624
+ popular && /* @__PURE__ */ jsxRuntime.jsx(Badge2, { variant: popularBadgeVariant, children: popularLabel })
6549
6625
  ] }),
6550
6626
  /* @__PURE__ */ jsxRuntime.jsx(PricingCardPrice, { price, currency, period }),
6551
6627
  description && /* @__PURE__ */ jsxRuntime.jsx(Description2, { children: description }),
@@ -6558,7 +6634,7 @@ var PricingCard = react.forwardRef(
6558
6634
  }
6559
6635
  );
6560
6636
  PricingCard.displayName = "PricingCard";
6561
- var sizeMap5 = {
6637
+ var sizeMap6 = {
6562
6638
  sm: "1rem",
6563
6639
  md: "1.25rem",
6564
6640
  lg: "1.5rem"
@@ -6583,7 +6659,7 @@ var StarButton = styles.styled("button")(
6583
6659
  padding: 0,
6584
6660
  color: $active ? "#f59e0b" : theme.palette.action.disabled,
6585
6661
  cursor: "pointer",
6586
- fontSize: sizeMap5[$size],
6662
+ fontSize: sizeMap6[$size],
6587
6663
  lineHeight: 1,
6588
6664
  "&:disabled": {
6589
6665
  cursor: "default"
@@ -6629,6 +6705,10 @@ var Rating = react.forwardRef(
6629
6705
  }
6630
6706
  );
6631
6707
  Rating.displayName = "Rating";
6708
+ var Container2 = styles.styled("div")({
6709
+ width: "100%",
6710
+ height: "100%"
6711
+ });
6632
6712
  var Img3 = styles.styled("img")(({ theme }) => ({
6633
6713
  position: "absolute",
6634
6714
  inset: 0,
@@ -6659,7 +6739,7 @@ var ProductCardImage = ({
6659
6739
  alt,
6660
6740
  badge,
6661
6741
  badgeVariant = "success"
6662
- }) => /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
6742
+ }) => /* @__PURE__ */ jsxRuntime.jsxs(Container2, { children: [
6663
6743
  src ? /* @__PURE__ */ jsxRuntime.jsx(Img3, { src, alt }) : /* @__PURE__ */ jsxRuntime.jsx(Placeholder4, { "aria-label": alt, children: /* @__PURE__ */ jsxRuntime.jsx(ImageIcon__default.default, { style: { fontSize: 48 } }) }),
6664
6744
  badge && /* @__PURE__ */ jsxRuntime.jsx(BadgeSlot, { children: /* @__PURE__ */ jsxRuntime.jsx(Badge2, { variant: badgeVariant, children: badge }) })
6665
6745
  ] });
@@ -6670,12 +6750,7 @@ var Root23 = styles.styled(Card)({
6670
6750
  height: "100%",
6671
6751
  overflow: "hidden"
6672
6752
  });
6673
- var ImageWrap3 = styles.styled("div")({
6674
- position: "relative",
6675
- aspectRatio: "4 / 3",
6676
- margin: "-1.5rem -1.5rem 1rem"
6677
- });
6678
- var Name4 = styles.styled("h3")(({ theme }) => ({
6753
+ var Name5 = styles.styled("h3")(({ theme }) => ({
6679
6754
  margin: 0,
6680
6755
  color: theme.palette.text.primary,
6681
6756
  fontFamily: theme.typography.fontFamily,
@@ -6701,14 +6776,26 @@ var ProductCard = react.forwardRef(
6701
6776
  lowestPrice,
6702
6777
  badge,
6703
6778
  badgeVariant = "success",
6779
+ imageRatio = "4/3",
6704
6780
  rating,
6705
6781
  reviewCount,
6706
6782
  ctaLabel = "Dodaj do koszyka",
6707
6783
  onAddToCart,
6784
+ buttonVariant = "primary",
6785
+ disabledButton = false,
6786
+ hideButton = false,
6708
6787
  ...props
6709
6788
  }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(Root23, { ref, variant: "default", padding: "md", rounded: "lg", ...props, children: [
6710
- /* @__PURE__ */ jsxRuntime.jsx(ImageWrap3, { children: /* @__PURE__ */ jsxRuntime.jsx(ProductCardImage, { src: imageUrl, alt: imageAlt ?? name, badge, badgeVariant }) }),
6711
- /* @__PURE__ */ jsxRuntime.jsx(Name4, { children: name }),
6789
+ /* @__PURE__ */ jsxRuntime.jsx(AspectRatio, { ratio: imageRatio, style: { margin: "-1.5rem -1.5rem 1rem", width: "calc(100% + 3rem)" }, children: /* @__PURE__ */ jsxRuntime.jsx(
6790
+ ProductCardImage,
6791
+ {
6792
+ src: imageUrl,
6793
+ alt: imageAlt ?? name,
6794
+ badge,
6795
+ badgeVariant
6796
+ }
6797
+ ) }),
6798
+ /* @__PURE__ */ jsxRuntime.jsx(Name5, { children: name }),
6712
6799
  rating !== void 0 && /* @__PURE__ */ jsxRuntime.jsx(Rating, { value: rating, count: reviewCount, size: "sm" }),
6713
6800
  /* @__PURE__ */ jsxRuntime.jsx(
6714
6801
  Price,
@@ -6721,10 +6808,19 @@ var ProductCard = react.forwardRef(
6721
6808
  style: { marginTop: "0.5rem" }
6722
6809
  }
6723
6810
  ),
6724
- /* @__PURE__ */ jsxRuntime.jsx(Footer2, { children: /* @__PURE__ */ jsxRuntime.jsx(Button, { fullWidth: true, onClick: (e) => {
6725
- e.stopPropagation();
6726
- onAddToCart?.();
6727
- }, children: ctaLabel }) })
6811
+ !hideButton && /* @__PURE__ */ jsxRuntime.jsx(Footer2, { children: /* @__PURE__ */ jsxRuntime.jsx(
6812
+ Button,
6813
+ {
6814
+ fullWidth: true,
6815
+ variant: buttonVariant,
6816
+ disabled: disabledButton,
6817
+ onClick: (e) => {
6818
+ e.stopPropagation();
6819
+ onAddToCart?.();
6820
+ },
6821
+ children: ctaLabel
6822
+ }
6823
+ ) })
6728
6824
  ] })
6729
6825
  );
6730
6826
  ProductCard.displayName = "ProductCard";
@@ -6742,7 +6838,7 @@ var Inner = styles.styled("div")({
6742
6838
  flexDirection: "column"
6743
6839
  }
6744
6840
  });
6745
- var ImageWrap4 = styles.styled("div")({
6841
+ var ImageWrap3 = styles.styled("div")({
6746
6842
  position: "relative",
6747
6843
  flexShrink: 0,
6748
6844
  width: "clamp(120px, 33%, 200px)",
@@ -6761,7 +6857,7 @@ var Content = styles.styled("div")({
6761
6857
  flex: 1,
6762
6858
  minWidth: 0
6763
6859
  });
6764
- var Name5 = styles.styled("h3")(({ theme }) => ({
6860
+ var Name6 = styles.styled("h3")(({ theme }) => ({
6765
6861
  margin: 0,
6766
6862
  color: theme.palette.text.primary,
6767
6863
  fontFamily: theme.typography.fontFamily,
@@ -6793,9 +6889,9 @@ var ProductCardHorizontal = react.forwardRef(
6793
6889
  onAddToCart,
6794
6890
  ...props
6795
6891
  }, ref) => /* @__PURE__ */ jsxRuntime.jsx(Card, { ref, variant: "default", padding: "md", rounded: "lg", ...props, children: /* @__PURE__ */ jsxRuntime.jsx(ContainerRoot, { children: /* @__PURE__ */ jsxRuntime.jsxs(Inner, { children: [
6796
- /* @__PURE__ */ jsxRuntime.jsx(ImageWrap4, { children: /* @__PURE__ */ jsxRuntime.jsx(ProductCardImage, { src: imageUrl, alt: imageAlt ?? name, badge, badgeVariant }) }),
6892
+ /* @__PURE__ */ jsxRuntime.jsx(ImageWrap3, { children: /* @__PURE__ */ jsxRuntime.jsx(ProductCardImage, { src: imageUrl, alt: imageAlt ?? name, badge, badgeVariant }) }),
6797
6893
  /* @__PURE__ */ jsxRuntime.jsxs(Content, { children: [
6798
- /* @__PURE__ */ jsxRuntime.jsx(Name5, { children: name }),
6894
+ /* @__PURE__ */ jsxRuntime.jsx(Name6, { children: name }),
6799
6895
  rating !== void 0 && /* @__PURE__ */ jsxRuntime.jsx(Rating, { value: rating, count: reviewCount, size: "sm" }),
6800
6896
  /* @__PURE__ */ jsxRuntime.jsx(
6801
6897
  Price,
@@ -6867,7 +6963,7 @@ var Img4 = styles.styled("img")({
6867
6963
  borderRadius: "50%",
6868
6964
  objectFit: "cover"
6869
6965
  });
6870
- function deriveInitials(name) {
6966
+ function deriveInitials2(name) {
6871
6967
  return name.split(" ").filter(Boolean).slice(0, 2).map((part) => part[0]).join("").toUpperCase();
6872
6968
  }
6873
6969
  var TeamMemberAvatar = ({
@@ -6880,18 +6976,11 @@ var TeamMemberAvatar = ({
6880
6976
  if (avatarUrl) {
6881
6977
  return /* @__PURE__ */ jsxRuntime.jsx(Img4, { src: avatarUrl, alt: avatarAlt ?? name });
6882
6978
  }
6883
- return /* @__PURE__ */ jsxRuntime.jsx(
6884
- Avatar,
6885
- {
6886
- initials: initials ?? deriveInitials(name),
6887
- size: "xl",
6888
- color: avatarColor
6889
- }
6890
- );
6979
+ return /* @__PURE__ */ jsxRuntime.jsx(Avatar, { initials: initials ?? deriveInitials2(name), size: "xl", color: avatarColor });
6891
6980
  };
6892
6981
  TeamMemberAvatar.displayName = "TeamMemberAvatar";
6893
6982
  var Root25 = styles.styled("div")({ minWidth: 0 });
6894
- var Name6 = styles.styled("h3")(({ theme }) => ({
6983
+ var Name7 = styles.styled("h3")(({ theme }) => ({
6895
6984
  margin: 0,
6896
6985
  color: theme.palette.text.primary,
6897
6986
  fontFamily: theme.typography.fontFamily,
@@ -6907,7 +6996,7 @@ var Role = styles.styled("p")(({ theme }) => ({
6907
6996
  lineHeight: 1.5
6908
6997
  }));
6909
6998
  var TeamMemberInfo = ({ name, role }) => /* @__PURE__ */ jsxRuntime.jsxs(Root25, { children: [
6910
- /* @__PURE__ */ jsxRuntime.jsx(Name6, { children: name }),
6999
+ /* @__PURE__ */ jsxRuntime.jsx(Name7, { children: name }),
6911
7000
  role && /* @__PURE__ */ jsxRuntime.jsx(Role, { children: role })
6912
7001
  ] });
6913
7002
  TeamMemberInfo.displayName = "TeamMemberInfo";
@@ -6966,7 +7055,7 @@ var Root27 = styles.styled("div")({
6966
7055
  alignItems: "center",
6967
7056
  gap: "0.75rem"
6968
7057
  });
6969
- var AvatarImg = styles.styled("img")({
7058
+ var AvatarImg2 = styles.styled("img")({
6970
7059
  width: "2.5rem",
6971
7060
  height: "2.5rem",
6972
7061
  borderRadius: "50%",
@@ -6974,7 +7063,7 @@ var AvatarImg = styles.styled("img")({
6974
7063
  flexShrink: 0
6975
7064
  });
6976
7065
  var Info = styles.styled("div")({ minWidth: 0 });
6977
- var Name7 = styles.styled("p")(({ theme }) => ({
7066
+ var Name8 = styles.styled("p")(({ theme }) => ({
6978
7067
  margin: 0,
6979
7068
  fontFamily: theme.typography.fontFamily,
6980
7069
  fontSize: "0.875rem",
@@ -6987,7 +7076,7 @@ var Role2 = styles.styled("p")(({ theme }) => ({
6987
7076
  fontSize: "0.8125rem",
6988
7077
  color: theme.palette.text.secondary
6989
7078
  }));
6990
- function deriveInitials2(name) {
7079
+ function deriveInitials3(name) {
6991
7080
  return name.split(" ").filter(Boolean).slice(0, 2).map((p) => p[0]).join("").toUpperCase();
6992
7081
  }
6993
7082
  var TestimonialAuthor = ({
@@ -6996,9 +7085,9 @@ var TestimonialAuthor = ({
6996
7085
  authorAvatarUrl,
6997
7086
  authorInitials
6998
7087
  }) => /* @__PURE__ */ jsxRuntime.jsxs(Root27, { children: [
6999
- authorAvatarUrl ? /* @__PURE__ */ jsxRuntime.jsx(AvatarImg, { src: authorAvatarUrl, alt: authorName }) : /* @__PURE__ */ jsxRuntime.jsx(Avatar, { initials: authorInitials ?? deriveInitials2(authorName), size: "md", color: "primary" }),
7088
+ authorAvatarUrl ? /* @__PURE__ */ jsxRuntime.jsx(AvatarImg2, { src: authorAvatarUrl, alt: authorName }) : /* @__PURE__ */ jsxRuntime.jsx(Avatar, { initials: authorInitials ?? deriveInitials3(authorName), size: "md", color: "primary" }),
7000
7089
  /* @__PURE__ */ jsxRuntime.jsxs(Info, { children: [
7001
- /* @__PURE__ */ jsxRuntime.jsx(Name7, { children: authorName }),
7090
+ /* @__PURE__ */ jsxRuntime.jsx(Name8, { children: authorName }),
7002
7091
  authorRole && /* @__PURE__ */ jsxRuntime.jsx(Role2, { children: authorRole })
7003
7092
  ] })
7004
7093
  ] });
@@ -7523,7 +7612,7 @@ var IconWrap = styles.styled("span")(({ theme }) => ({
7523
7612
  display: "flex"
7524
7613
  }));
7525
7614
  var Info2 = styles.styled("div")({ flex: 1 });
7526
- var Name8 = styles.styled("div")(({ theme }) => ({
7615
+ var Name9 = styles.styled("div")(({ theme }) => ({
7527
7616
  fontSize: "0.9375rem",
7528
7617
  fontWeight: 600,
7529
7618
  color: theme.palette.text.primary
@@ -7553,7 +7642,7 @@ var PaymentMethodSelector = react.forwardRef(
7553
7642
  ),
7554
7643
  /* @__PURE__ */ jsxRuntime.jsx(IconWrap, { children: method.icon ?? /* @__PURE__ */ jsxRuntime.jsx(CreditCardOutlinedIcon__default.default, { "aria-hidden": true }) }),
7555
7644
  /* @__PURE__ */ jsxRuntime.jsxs(Info2, { children: [
7556
- /* @__PURE__ */ jsxRuntime.jsx(Name8, { children: method.label }),
7645
+ /* @__PURE__ */ jsxRuntime.jsx(Name9, { children: method.label }),
7557
7646
  method.description && /* @__PURE__ */ jsxRuntime.jsx(Desc, { children: method.description })
7558
7647
  ] })
7559
7648
  ] }, method.id);
@@ -7588,7 +7677,7 @@ var ThumbnailImage = styles.styled("img")({
7588
7677
  objectFit: "cover"
7589
7678
  });
7590
7679
  var ProductGallery = react.forwardRef(
7591
- ({ images, selectedIndex, onSelect, ...props }, ref) => {
7680
+ ({ images, selectedIndex, onSelect, imageRatio = "4/3", ...props }, ref) => {
7592
7681
  const [internalIndex, setInternalIndex] = react.useState(0);
7593
7682
  const activeIndex = selectedIndex ?? internalIndex;
7594
7683
  const activeImage = images[activeIndex] ?? images[0];
@@ -7600,7 +7689,7 @@ var ProductGallery = react.forwardRef(
7600
7689
  return null;
7601
7690
  }
7602
7691
  return /* @__PURE__ */ jsxRuntime.jsxs(Root32, { ref, ...props, children: [
7603
- /* @__PURE__ */ jsxRuntime.jsx(AspectRatio, { ratio: "4/3", children: /* @__PURE__ */ jsxRuntime.jsx(MainImage, { src: activeImage.src, alt: activeImage.alt }) }),
7692
+ /* @__PURE__ */ jsxRuntime.jsx(AspectRatio, { ratio: imageRatio, children: /* @__PURE__ */ jsxRuntime.jsx(MainImage, { src: activeImage.src, alt: activeImage.alt }) }),
7604
7693
  images.length > 1 && /* @__PURE__ */ jsxRuntime.jsx(Thumbnails, { children: images.map((image, index) => /* @__PURE__ */ jsxRuntime.jsx(
7605
7694
  ThumbnailButton,
7606
7695
  {
@@ -7745,7 +7834,7 @@ var IconWrap2 = styles.styled("span")(({ theme }) => ({
7745
7834
  display: "flex"
7746
7835
  }));
7747
7836
  var Info3 = styles.styled("div")({ flex: 1 });
7748
- var Name9 = styles.styled("div")(({ theme }) => ({
7837
+ var Name10 = styles.styled("div")(({ theme }) => ({
7749
7838
  fontSize: "0.9375rem",
7750
7839
  fontWeight: 600,
7751
7840
  color: theme.palette.text.primary
@@ -7783,7 +7872,7 @@ var ShippingSelector = react.forwardRef(
7783
7872
  ),
7784
7873
  /* @__PURE__ */ jsxRuntime.jsx(IconWrap2, { children: opt.icon ?? /* @__PURE__ */ jsxRuntime.jsx(LocalShippingOutlinedIcon__default.default, { "aria-hidden": true }) }),
7785
7874
  /* @__PURE__ */ jsxRuntime.jsxs(Info3, { children: [
7786
- /* @__PURE__ */ jsxRuntime.jsx(Name9, { children: opt.label }),
7875
+ /* @__PURE__ */ jsxRuntime.jsx(Name10, { children: opt.label }),
7787
7876
  (opt.description || opt.estimatedDays) && /* @__PURE__ */ jsxRuntime.jsxs(Desc2, { children: [
7788
7877
  opt.description,
7789
7878
  opt.estimatedDays && ` \xB7 ${opt.estimatedDays}`
@@ -8086,7 +8175,150 @@ var VariantSelector = react.forwardRef(
8086
8175
  );
8087
8176
  VariantSelector.displayName = "VariantSelector";
8088
8177
  var variantSelectorModes = ["button", "swatch", "dropdown"];
8089
- var Root39 = styles.styled("div")(({ theme }) => ({
8178
+ function deriveInitials4(name) {
8179
+ return name.split(" ").filter(Boolean).slice(0, 2).map((p) => p[0]).join("").toUpperCase();
8180
+ }
8181
+ var Root39 = styles.styled("div")({
8182
+ display: "flex",
8183
+ alignItems: "center",
8184
+ gap: "0.75rem"
8185
+ });
8186
+ var AvatarImg3 = styles.styled("img")({
8187
+ width: "2.5rem",
8188
+ height: "2.5rem",
8189
+ borderRadius: "50%",
8190
+ objectFit: "cover",
8191
+ flexShrink: 0
8192
+ });
8193
+ var Info4 = styles.styled("div")({ minWidth: 0 });
8194
+ var NameRow2 = styles.styled("div")({
8195
+ display: "flex",
8196
+ alignItems: "center",
8197
+ gap: "0.5rem",
8198
+ flexWrap: "wrap"
8199
+ });
8200
+ var Name11 = styles.styled("span")(({ theme }) => ({
8201
+ fontFamily: theme.typography.fontFamily,
8202
+ fontSize: "0.9375rem",
8203
+ fontWeight: 700,
8204
+ color: theme.palette.text.primary
8205
+ }));
8206
+ var AuthorBadge = styles.styled("span")(({ theme }) => ({
8207
+ display: "inline-flex",
8208
+ alignItems: "center",
8209
+ fontSize: "0.6875rem",
8210
+ fontWeight: 600,
8211
+ padding: "0.125rem 0.5rem",
8212
+ borderRadius: "999px",
8213
+ backgroundColor: theme.palette.primary.main,
8214
+ color: theme.palette.primary.contrastText,
8215
+ fontFamily: theme.typography.fontFamily,
8216
+ letterSpacing: "0.03em",
8217
+ textTransform: "uppercase"
8218
+ }));
8219
+ var DateText = styles.styled("time")(({ theme }) => ({
8220
+ display: "block",
8221
+ marginTop: "0.125rem",
8222
+ fontFamily: theme.typography.fontFamily,
8223
+ fontSize: "0.8125rem",
8224
+ color: theme.palette.text.secondary
8225
+ }));
8226
+ function CommentMeta({ author, date }) {
8227
+ return /* @__PURE__ */ jsxRuntime.jsxs(Root39, { children: [
8228
+ author.avatarUrl ? /* @__PURE__ */ jsxRuntime.jsx(AvatarImg3, { src: author.avatarUrl, alt: author.name }) : /* @__PURE__ */ jsxRuntime.jsx(Avatar, { initials: deriveInitials4(author.name), size: "md", color: "primary" }),
8229
+ /* @__PURE__ */ jsxRuntime.jsxs(Info4, { children: [
8230
+ /* @__PURE__ */ jsxRuntime.jsxs(NameRow2, { children: [
8231
+ /* @__PURE__ */ jsxRuntime.jsx(Name11, { children: author.name }),
8232
+ author.isPostAuthor && /* @__PURE__ */ jsxRuntime.jsx(AuthorBadge, { children: "Autor" })
8233
+ ] }),
8234
+ /* @__PURE__ */ jsxRuntime.jsx(DateText, { dateTime: date, children: date })
8235
+ ] })
8236
+ ] });
8237
+ }
8238
+ CommentMeta.displayName = "CommentMeta";
8239
+ var Text = styles.styled("p")(({ theme }) => ({
8240
+ margin: 0,
8241
+ fontFamily: theme.typography.fontFamily,
8242
+ fontSize: "0.9375rem",
8243
+ lineHeight: 1.7,
8244
+ color: theme.palette.text.primary
8245
+ }));
8246
+ function CommentBody({ content }) {
8247
+ return /* @__PURE__ */ jsxRuntime.jsx(Text, { children: content });
8248
+ }
8249
+ CommentBody.displayName = "CommentBody";
8250
+ var Root40 = styles.styled("div")({
8251
+ display: "flex",
8252
+ alignItems: "center",
8253
+ gap: "0.25rem"
8254
+ });
8255
+ var ActionButton = styles.styled("button")(({ theme }) => ({
8256
+ display: "inline-flex",
8257
+ alignItems: "center",
8258
+ gap: "0.375rem",
8259
+ padding: "0.3125rem 0.625rem",
8260
+ background: "none",
8261
+ border: "none",
8262
+ borderRadius: theme.shape.borderRadius,
8263
+ cursor: "pointer",
8264
+ color: theme.palette.text.secondary,
8265
+ fontFamily: theme.typography.fontFamily,
8266
+ fontSize: "0.8125rem",
8267
+ fontWeight: 500,
8268
+ lineHeight: 1,
8269
+ transition: "background-color 150ms ease, color 150ms ease",
8270
+ "&:hover": {
8271
+ backgroundColor: theme.palette.action.hover,
8272
+ color: theme.palette.primary.main
8273
+ },
8274
+ "&:focus-visible": {
8275
+ outline: `3px solid ${theme.palette.primary.main}`,
8276
+ outlineOffset: "2px"
8277
+ }
8278
+ }));
8279
+ function CommentActions({ commentId, likesCount, onLike, onReply }) {
8280
+ return /* @__PURE__ */ jsxRuntime.jsxs(Root40, { children: [
8281
+ /* @__PURE__ */ jsxRuntime.jsxs(ActionButton, { type: "button", "aria-label": "Lubi\u0119 to", onClick: () => onLike?.(commentId), children: [
8282
+ /* @__PURE__ */ jsxRuntime.jsx(ThumbUpOutlinedIcon__default.default, { style: { fontSize: "0.9375rem" }, "aria-hidden": "true" }),
8283
+ typeof likesCount === "number" && /* @__PURE__ */ jsxRuntime.jsx("span", { children: likesCount }),
8284
+ "Lubi\u0119 to"
8285
+ ] }),
8286
+ /* @__PURE__ */ jsxRuntime.jsxs(ActionButton, { type: "button", "aria-label": "Odpowiedz", onClick: () => onReply?.(commentId), children: [
8287
+ /* @__PURE__ */ jsxRuntime.jsx(ReplyIcon__default.default, { style: { fontSize: "0.9375rem" }, "aria-hidden": "true" }),
8288
+ "Odpowiedz"
8289
+ ] })
8290
+ ] });
8291
+ }
8292
+ CommentActions.displayName = "CommentActions";
8293
+ var Root41 = styles.styled("div", {
8294
+ shouldForwardProp: (p) => p !== "$depth"
8295
+ })(({ theme, $depth }) => ({
8296
+ display: "flex",
8297
+ flexDirection: "column",
8298
+ gap: "0.75rem",
8299
+ ...$depth > 0 && {
8300
+ paddingLeft: "1.25rem",
8301
+ borderLeft: `3px solid ${theme.palette.divider}`,
8302
+ marginLeft: "1rem"
8303
+ }
8304
+ }));
8305
+ var CommentCard = react.forwardRef(
8306
+ ({ comment, depth = 0, onLike, onReply, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(Root41, { ref, $depth: depth, ...props, children: [
8307
+ /* @__PURE__ */ jsxRuntime.jsx(CommentMeta, { author: comment.author, date: comment.date }),
8308
+ /* @__PURE__ */ jsxRuntime.jsx(CommentBody, { content: comment.content }),
8309
+ /* @__PURE__ */ jsxRuntime.jsx(
8310
+ CommentActions,
8311
+ {
8312
+ commentId: comment.id,
8313
+ likesCount: comment.likesCount,
8314
+ onLike,
8315
+ onReply
8316
+ }
8317
+ )
8318
+ ] })
8319
+ );
8320
+ CommentCard.displayName = "CommentCard";
8321
+ var Root42 = styles.styled("div")(({ theme }) => ({
8090
8322
  borderBottom: `1px solid ${theme.palette.divider}`
8091
8323
  }));
8092
8324
  var Trigger2 = styles.styled("button")(({ theme }) => ({
@@ -8134,7 +8366,7 @@ var PanelInner = styles.styled("p")(({ theme }) => ({
8134
8366
  var FaqItem = react.forwardRef(
8135
8367
  ({ item, defaultOpen = false, ...props }, ref) => {
8136
8368
  const [open, setOpen] = react.useState(defaultOpen);
8137
- return /* @__PURE__ */ jsxRuntime.jsxs(Root39, { ref, ...props, children: [
8369
+ return /* @__PURE__ */ jsxRuntime.jsxs(Root42, { ref, ...props, children: [
8138
8370
  /* @__PURE__ */ jsxRuntime.jsxs(Trigger2, { type: "button", "aria-expanded": open, onClick: () => setOpen((prev) => !prev), children: [
8139
8371
  item.question,
8140
8372
  /* @__PURE__ */ jsxRuntime.jsx(ChevronIcon2, { $open: open, "aria-hidden": "true" })
@@ -8210,7 +8442,7 @@ var FeatureItem = react.forwardRef(
8210
8442
  }
8211
8443
  );
8212
8444
  FeatureItem.displayName = "FeatureItem";
8213
- var Root40 = styles.styled("div")({
8445
+ var Root43 = styles.styled("div")({
8214
8446
  display: "flex",
8215
8447
  flexDirection: "column",
8216
8448
  alignItems: "center",
@@ -8258,7 +8490,7 @@ var Description6 = styles.styled("p")(({ theme }) => ({
8258
8490
  maxWidth: "18rem"
8259
8491
  }));
8260
8492
  var ProcessStep = react.forwardRef(
8261
- ({ step, title, description, icon, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(Root40, { ref, ...props, children: [
8493
+ ({ step, title, description, icon, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(Root43, { ref, ...props, children: [
8262
8494
  /* @__PURE__ */ jsxRuntime.jsx(StepBadge, { "aria-hidden": "true", children: icon ? /* @__PURE__ */ jsxRuntime.jsx(IconWrapper2, { children: icon }) : /* @__PURE__ */ jsxRuntime.jsx(StepNumber, { children: step }) }),
8263
8495
  /* @__PURE__ */ jsxRuntime.jsx(Title3, { children: title }),
8264
8496
  description && /* @__PURE__ */ jsxRuntime.jsx(Description6, { children: description })
@@ -8520,7 +8752,7 @@ var timelineItemStatuses = [
8520
8752
  "pending",
8521
8753
  "error"
8522
8754
  ];
8523
- var Root41 = styles.styled("div")({
8755
+ var Root44 = styles.styled("div")({
8524
8756
  position: "relative",
8525
8757
  width: "100%",
8526
8758
  overflow: "hidden",
@@ -8630,7 +8862,7 @@ function Carousel({
8630
8862
  }, [prev, next]);
8631
8863
  if (!count) return null;
8632
8864
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className, children: [
8633
- /* @__PURE__ */ jsxRuntime.jsxs(Root41, { "aria-roledescription": "carousel", children: [
8865
+ /* @__PURE__ */ jsxRuntime.jsxs(Root44, { "aria-roledescription": "carousel", children: [
8634
8866
  /* @__PURE__ */ jsxRuntime.jsx(Track4, { $index: index, "aria-live": "polite", children: slides.map((slide, i) => /* @__PURE__ */ jsxRuntime.jsx(
8635
8867
  Slide,
8636
8868
  {
@@ -8677,6 +8909,46 @@ function Carousel({
8677
8909
  )) })
8678
8910
  ] });
8679
8911
  }
8912
+ var Img5 = styles.styled("img")({
8913
+ position: "absolute",
8914
+ inset: 0,
8915
+ width: "100%",
8916
+ height: "100%"
8917
+ });
8918
+ var Placeholder5 = styles.styled("div")(({ theme }) => ({
8919
+ position: "absolute",
8920
+ inset: 0,
8921
+ width: "100%",
8922
+ height: "100%",
8923
+ backgroundColor: theme.palette.action.hover,
8924
+ display: "flex",
8925
+ alignItems: "center",
8926
+ justifyContent: "center",
8927
+ color: theme.palette.text.disabled
8928
+ }));
8929
+ var Image = react.forwardRef(
8930
+ ({
8931
+ src,
8932
+ alt = "",
8933
+ ratio = "16/9",
8934
+ objectFit = "cover",
8935
+ objectPosition = "center",
8936
+ loading = "lazy",
8937
+ style,
8938
+ ...props
8939
+ }, ref) => /* @__PURE__ */ jsxRuntime.jsx(AspectRatio, { ratio, children: src ? /* @__PURE__ */ jsxRuntime.jsx(
8940
+ Img5,
8941
+ {
8942
+ ref,
8943
+ src,
8944
+ alt,
8945
+ loading,
8946
+ style: { objectFit, objectPosition, ...style },
8947
+ ...props
8948
+ }
8949
+ ) : /* @__PURE__ */ jsxRuntime.jsx(Placeholder5, { "aria-label": alt || "Image placeholder", children: /* @__PURE__ */ jsxRuntime.jsx(ImageIcon__default.default, { style: { fontSize: 48 } }) }) })
8950
+ );
8951
+ Image.displayName = "Image";
8680
8952
  var Wrapper4 = styles.styled("div")(({ theme }) => ({
8681
8953
  borderRadius: "0.75rem",
8682
8954
  overflow: "hidden",
@@ -9014,7 +9286,7 @@ var Breadcrumbs = react.forwardRef(
9014
9286
  }) }) })
9015
9287
  );
9016
9288
  Breadcrumbs.displayName = "Breadcrumbs";
9017
- var sizeMap6 = {
9289
+ var sizeMap7 = {
9018
9290
  sm: { minWidth: "1.75rem", height: "1.75rem", fontSize: "0.75rem" },
9019
9291
  md: { minWidth: "2rem", height: "2rem", fontSize: "0.875rem" },
9020
9292
  lg: { minWidth: "2.5rem", height: "2.5rem", fontSize: "1rem" }
@@ -9043,7 +9315,7 @@ var StyledButton2 = styles.styled("button")(({ theme, $isActive, $size }) => ({
9043
9315
  lineHeight: 1,
9044
9316
  padding: "0 0.25rem",
9045
9317
  transition: "background-color 150ms ease",
9046
- ...sizeMap6[$size],
9318
+ ...sizeMap7[$size],
9047
9319
  ...$isActive ? activeStyles(theme) : idleStyles(theme),
9048
9320
  "&:focus-visible": {
9049
9321
  outline: `3px solid ${theme.palette.primary.main}`,
@@ -9072,7 +9344,7 @@ var PaginationButton = react.forwardRef(
9072
9344
  )
9073
9345
  );
9074
9346
  PaginationButton.displayName = "PaginationButton";
9075
- var sizeMap7 = {
9347
+ var sizeMap8 = {
9076
9348
  sm: { minWidth: "1.75rem", height: "1.75rem", fontSize: "0.75rem" },
9077
9349
  md: { minWidth: "2rem", height: "2rem", fontSize: "0.875rem" },
9078
9350
  lg: { minWidth: "2.5rem", height: "2.5rem", fontSize: "1rem" }
@@ -9083,7 +9355,7 @@ var StyledEllipsis = styles.styled("span")(({ theme, $size }) => ({
9083
9355
  justifyContent: "center",
9084
9356
  color: theme.palette.text.secondary,
9085
9357
  userSelect: "none",
9086
- ...sizeMap7[$size]
9358
+ ...sizeMap8[$size]
9087
9359
  }));
9088
9360
  var PaginationEllipsis = ({ size = "md" }) => /* @__PURE__ */ jsxRuntime.jsx(StyledEllipsis, { $size: size, "aria-hidden": "true", children: "\u2026" });
9089
9361
  PaginationEllipsis.displayName = "PaginationEllipsis";
@@ -9193,7 +9465,7 @@ var PaginationBar = ({
9193
9465
  ] });
9194
9466
  };
9195
9467
  PaginationBar.displayName = "PaginationBar";
9196
- var Root42 = styles.styled("div", {
9468
+ var Root45 = styles.styled("div", {
9197
9469
  shouldForwardProp: (p) => p !== "$variant"
9198
9470
  })(({ theme, $variant }) => ({
9199
9471
  width: "100%",
@@ -9303,7 +9575,7 @@ var Accordion = react.forwardRef(
9303
9575
  if (controlledKeys === void 0) setInternalKeys(next);
9304
9576
  onChange?.(next);
9305
9577
  };
9306
- return /* @__PURE__ */ jsxRuntime.jsx(Root42, { ref, $variant: variant, ...props, children: items.map((item) => {
9578
+ return /* @__PURE__ */ jsxRuntime.jsx(Root45, { ref, $variant: variant, ...props, children: items.map((item) => {
9307
9579
  const isOpen = openKeys.includes(item.key);
9308
9580
  const panelId = `accordion-panel-${item.key}`;
9309
9581
  const triggerId = `accordion-trigger-${item.key}`;
@@ -9332,32 +9604,31 @@ var Accordion = react.forwardRef(
9332
9604
  );
9333
9605
  Accordion.displayName = "Accordion";
9334
9606
  var accordionVariants = ["default", "bordered", "separated"];
9335
- var SEVERITY_COLORS = {
9336
- info: { bg: "rgba(25,118,210,0.08)", color: "#1565c0", border: "rgba(25,118,210,0.3)" },
9337
- success: { bg: "rgba(34,197,94,0.1)", color: "#15803d", border: "rgba(34,197,94,0.35)" },
9338
- warning: { bg: "rgba(245,158,11,0.1)", color: "#b45309", border: "rgba(245,158,11,0.35)" },
9339
- error: { bg: "rgba(211,47,47,0.08)", color: "#c62828", border: "rgba(211,47,47,0.3)" }
9340
- };
9341
9607
  var ICONS = {
9342
9608
  info: /* @__PURE__ */ jsxRuntime.jsx(InfoOutlinedIcon__default.default, { "aria-hidden": true, style: { fontSize: 20 } }),
9343
9609
  success: /* @__PURE__ */ jsxRuntime.jsx(CheckCircleOutlinedIcon__default.default, { "aria-hidden": true, style: { fontSize: 20 } }),
9344
9610
  warning: /* @__PURE__ */ jsxRuntime.jsx(WarningAmberOutlinedIcon__default.default, { "aria-hidden": true, style: { fontSize: 20 } }),
9345
9611
  error: /* @__PURE__ */ jsxRuntime.jsx(ErrorOutlineOutlinedIcon__default.default, { "aria-hidden": true, style: { fontSize: 20 } })
9346
9612
  };
9347
- var Root43 = styles.styled("div", {
9613
+ var Root46 = styles.styled("div", {
9348
9614
  shouldForwardProp: (prop) => prop !== "$severity"
9349
9615
  })(({ theme, $severity }) => {
9350
- const c = SEVERITY_COLORS[$severity];
9616
+ const palette = {
9617
+ info: theme.palette.info,
9618
+ success: theme.palette.success,
9619
+ warning: theme.palette.warning,
9620
+ error: theme.palette.error
9621
+ }[$severity];
9351
9622
  return {
9352
9623
  display: "flex",
9353
9624
  gap: "0.75rem",
9354
9625
  padding: "0.875rem 1rem",
9355
9626
  borderRadius: theme.shape.borderRadius,
9356
- border: `1px solid ${c.border}`,
9357
- backgroundColor: c.bg,
9358
- color: c.color,
9627
+ border: `1px solid ${palette.dark}`,
9628
+ backgroundColor: palette.main,
9629
+ color: palette.contrastText,
9359
9630
  fontFamily: theme.typography.fontFamily,
9360
- fontSize: "0.9375rem"
9631
+ fontSize: "1rem"
9361
9632
  };
9362
9633
  });
9363
9634
  var IconSlot2 = styles.styled("span")({
@@ -9389,11 +9660,11 @@ var CloseButton2 = styles.styled("button")(({ theme }) => ({
9389
9660
  }
9390
9661
  }));
9391
9662
  var Alert = react.forwardRef(
9392
- ({ severity = "info", title, children, onClose, icon, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(Root43, { ref, role: "alert", $severity: severity, ...props, children: [
9663
+ ({ severity = "info", title, children, onClose, icon, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(Root46, { ref, role: "alert", $severity: severity, ...props, children: [
9393
9664
  /* @__PURE__ */ jsxRuntime.jsx(IconSlot2, { children: icon ?? ICONS[severity] }),
9394
9665
  /* @__PURE__ */ jsxRuntime.jsxs(Body, { children: [
9395
9666
  title && /* @__PURE__ */ jsxRuntime.jsx(Title5, { children: title }),
9396
- children
9667
+ typeof children === "string" ? /* @__PURE__ */ jsxRuntime.jsx("span", { dangerouslySetInnerHTML: { __html: children } }) : children
9397
9668
  ] }),
9398
9669
  onClose && /* @__PURE__ */ jsxRuntime.jsx(CloseButton2, { type: "button", onClick: onClose, "aria-label": "Zamknij", children: /* @__PURE__ */ jsxRuntime.jsx(CloseIcon__default.default, { "aria-hidden": true, style: { fontSize: 16 } }) })
9399
9670
  ] })
@@ -9410,7 +9681,7 @@ var POSITION_MAP = {
9410
9681
  var Btn = styles.styled("button", {
9411
9682
  shouldForwardProp: (p) => !["$variant", "$visible", "$position"].includes(p)
9412
9683
  })(({ theme, $variant, $visible, $position }) => {
9413
- const variantStyles2 = {
9684
+ const variantStyles3 = {
9414
9685
  default: {
9415
9686
  backgroundColor: theme.palette.background.paper,
9416
9687
  border: `1px solid ${theme.palette.divider}`,
@@ -9451,7 +9722,7 @@ var Btn = styles.styled("button", {
9451
9722
  outlineOffset: "3px"
9452
9723
  },
9453
9724
  ...POSITION_MAP[$position],
9454
- ...variantStyles2
9725
+ ...variantStyles3
9455
9726
  };
9456
9727
  });
9457
9728
  function BackToTop({
@@ -9639,7 +9910,7 @@ var ContextMenu = react.forwardRef(
9639
9910
  }
9640
9911
  );
9641
9912
  ContextMenu.displayName = "ContextMenu";
9642
- var Root44 = styles.styled("div")(({ theme }) => ({
9913
+ var Root47 = styles.styled("div")(({ theme }) => ({
9643
9914
  display: "flex",
9644
9915
  flexDirection: "column",
9645
9916
  alignItems: "center",
@@ -9667,7 +9938,7 @@ var Description8 = styles.styled("p")(({ theme }) => ({
9667
9938
  maxWidth: "28rem"
9668
9939
  }));
9669
9940
  var EmptyState = react.forwardRef(
9670
- ({ icon, title, description, action, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(Root44, { ref, ...props, children: [
9941
+ ({ icon, title, description, action, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(Root47, { ref, ...props, children: [
9671
9942
  /* @__PURE__ */ jsxRuntime.jsx(IconWrap3, { "aria-hidden": true, children: icon ?? /* @__PURE__ */ jsxRuntime.jsx(InboxOutlinedIcon__default.default, {}) }),
9672
9943
  /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
9673
9944
  /* @__PURE__ */ jsxRuntime.jsx(Title6, { children: title }),
@@ -9687,7 +9958,7 @@ var FONT_SIZE2 = {
9687
9958
  md: "0.9375rem",
9688
9959
  lg: "1rem"
9689
9960
  };
9690
- var Root45 = styles.styled("ul", {
9961
+ var Root48 = styles.styled("ul", {
9691
9962
  shouldForwardProp: (p) => p !== "$variant"
9692
9963
  })(({ theme, $variant }) => ({
9693
9964
  listStyle: "none",
@@ -9782,7 +10053,7 @@ var SuffixWrap = styles.styled("span")({
9782
10053
  var List4 = react.forwardRef(
9783
10054
  ({ items, size = "md", variant = "default", dividers = true, ...props }, ref) => {
9784
10055
  const effectiveVariant = !dividers && variant === "default" ? "default" : variant;
9785
- return /* @__PURE__ */ jsxRuntime.jsx(Root45, { ref, $variant: effectiveVariant, role: "list", ...props, children: items.map((item) => /* @__PURE__ */ jsxRuntime.jsxs(
10056
+ return /* @__PURE__ */ jsxRuntime.jsx(Root48, { ref, $variant: effectiveVariant, role: "list", ...props, children: items.map((item) => /* @__PURE__ */ jsxRuntime.jsxs(
9786
10057
  Item3,
9787
10058
  {
9788
10059
  role: "listitem",
@@ -9821,7 +10092,7 @@ var speedDuration = {
9821
10092
  normal: "20s",
9822
10093
  fast: "10s"
9823
10094
  };
9824
- var Root46 = styles.styled("div")({
10095
+ var Root49 = styles.styled("div")({
9825
10096
  overflow: "hidden",
9826
10097
  width: "100%",
9827
10098
  userSelect: "none"
@@ -9852,7 +10123,7 @@ var Marquee = react.forwardRef(
9852
10123
  /* @__PURE__ */ jsxRuntime.jsx(ItemWrap, { $gap: gapValue, "aria-hidden": "false", children }),
9853
10124
  /* @__PURE__ */ jsxRuntime.jsx(ItemWrap, { $gap: gapValue, "aria-hidden": "true", children })
9854
10125
  ] });
9855
- return /* @__PURE__ */ jsxRuntime.jsx(Root46, { ref, ...props, children: /* @__PURE__ */ jsxRuntime.jsx(Track5, { $direction: direction, $speed: speed, $pauseOnHover: pauseOnHover, $gap: gapValue, children: content }) });
10126
+ return /* @__PURE__ */ jsxRuntime.jsx(Root49, { ref, ...props, children: /* @__PURE__ */ jsxRuntime.jsx(Track5, { $direction: direction, $speed: speed, $pauseOnHover: pauseOnHover, $gap: gapValue, children: content }) });
9856
10127
  }
9857
10128
  );
9858
10129
  Marquee.displayName = "Marquee";
@@ -10008,7 +10279,7 @@ function Modal({
10008
10279
  );
10009
10280
  }
10010
10281
  var modalSizes = ["sm", "md", "lg", "xl", "full"];
10011
- var Root47 = styles.styled("div")({ width: "100%" });
10282
+ var Root50 = styles.styled("div")({ width: "100%" });
10012
10283
  var TabList = styles.styled("div", {
10013
10284
  shouldForwardProp: (prop) => prop !== "$variant"
10014
10285
  })(({ theme, $variant }) => ({
@@ -10088,7 +10359,7 @@ var Tabs = react.forwardRef(
10088
10359
  onChange?.(key);
10089
10360
  };
10090
10361
  const activeTab = tabs.find((t) => t.key === activeKey);
10091
- return /* @__PURE__ */ jsxRuntime.jsxs(Root47, { ref, ...props, children: [
10362
+ return /* @__PURE__ */ jsxRuntime.jsxs(Root50, { ref, ...props, children: [
10092
10363
  /* @__PURE__ */ jsxRuntime.jsx(TabList, { role: "tablist", $variant: variant, children: tabs.map((tab) => /* @__PURE__ */ jsxRuntime.jsx(
10093
10364
  TabButton,
10094
10365
  {
@@ -10120,14 +10391,14 @@ var Tabs = react.forwardRef(
10120
10391
  );
10121
10392
  Tabs.displayName = "Tabs";
10122
10393
  var tabsVariants = ["underline", "pills", "bordered"];
10123
- var Root48 = styles.styled("div")(({ theme }) => ({
10394
+ var Root51 = styles.styled("div")(({ theme }) => ({
10124
10395
  display: "grid",
10125
10396
  gridTemplateColumns: "4.5rem 1fr",
10126
10397
  gap: "0.875rem",
10127
10398
  paddingBottom: "1rem",
10128
10399
  borderBottom: `1px solid ${theme.palette.divider}`
10129
10400
  }));
10130
- var ImageWrap5 = styles.styled("div")(({ theme }) => ({
10401
+ var ImageWrap4 = styles.styled("div")(({ theme }) => ({
10131
10402
  position: "relative",
10132
10403
  width: "4.5rem",
10133
10404
  height: "4.5rem",
@@ -10135,14 +10406,14 @@ var ImageWrap5 = styles.styled("div")(({ theme }) => ({
10135
10406
  overflow: "hidden",
10136
10407
  flexShrink: 0
10137
10408
  }));
10138
- var Info4 = styles.styled("div")({ display: "grid", gap: "0.5rem" });
10409
+ var Info5 = styles.styled("div")({ display: "grid", gap: "0.5rem" });
10139
10410
  var Row5 = styles.styled("div")({
10140
10411
  display: "flex",
10141
10412
  alignItems: "center",
10142
10413
  justifyContent: "space-between",
10143
10414
  gap: "0.75rem"
10144
10415
  });
10145
- var Name10 = styles.styled("p")(({ theme }) => ({
10416
+ var Name12 = styles.styled("p")(({ theme }) => ({
10146
10417
  margin: 0,
10147
10418
  color: theme.palette.text.primary,
10148
10419
  fontFamily: theme.typography.fontFamily,
@@ -10172,11 +10443,11 @@ var CartDrawerItem = ({
10172
10443
  imageAlt,
10173
10444
  onQuantityChange,
10174
10445
  onRemove
10175
- }) => /* @__PURE__ */ jsxRuntime.jsxs(Root48, { children: [
10176
- /* @__PURE__ */ jsxRuntime.jsx(ImageWrap5, { children: /* @__PURE__ */ jsxRuntime.jsx(ProductCardImage, { src: imageUrl, alt: imageAlt ?? name }) }),
10177
- /* @__PURE__ */ jsxRuntime.jsxs(Info4, { children: [
10446
+ }) => /* @__PURE__ */ jsxRuntime.jsxs(Root51, { children: [
10447
+ /* @__PURE__ */ jsxRuntime.jsx(ImageWrap4, { children: /* @__PURE__ */ jsxRuntime.jsx(ProductCardImage, { src: imageUrl, alt: imageAlt ?? name }) }),
10448
+ /* @__PURE__ */ jsxRuntime.jsxs(Info5, { children: [
10178
10449
  /* @__PURE__ */ jsxRuntime.jsxs(Row5, { children: [
10179
- /* @__PURE__ */ jsxRuntime.jsx(Name10, { children: name }),
10450
+ /* @__PURE__ */ jsxRuntime.jsx(Name12, { children: name }),
10180
10451
  /* @__PURE__ */ jsxRuntime.jsx(Price3, { children: price })
10181
10452
  ] }),
10182
10453
  /* @__PURE__ */ jsxRuntime.jsxs(Row5, { children: [
@@ -10287,7 +10558,7 @@ var CartDrawer = react.forwardRef(
10287
10558
  ] }) })
10288
10559
  );
10289
10560
  CartDrawer.displayName = "CartDrawer";
10290
- var Root49 = styles.styled("aside")(({ theme }) => ({
10561
+ var Root52 = styles.styled("aside")(({ theme }) => ({
10291
10562
  display: "grid",
10292
10563
  gap: "1.5rem",
10293
10564
  width: "100%",
@@ -10379,7 +10650,7 @@ var FilterSidebar = react.forwardRef(
10379
10650
  onPriceRangeChange,
10380
10651
  onClear,
10381
10652
  ...props
10382
- }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(Root49, { ref, "aria-label": "Filtry produkt\xF3w", ...props, children: [
10653
+ }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(Root52, { ref, "aria-label": "Filtry produkt\xF3w", ...props, children: [
10383
10654
  /* @__PURE__ */ jsxRuntime.jsxs(Header4, { children: [
10384
10655
  /* @__PURE__ */ jsxRuntime.jsx(Title9, { children: "Filtry" }),
10385
10656
  onClear && /* @__PURE__ */ jsxRuntime.jsx(Button, { variant: "ghost", size: "sm", onClick: onClear, children: "Wyczy\u015B\u0107" })
@@ -10422,13 +10693,13 @@ var FilterSidebar = react.forwardRef(
10422
10693
  ] })
10423
10694
  );
10424
10695
  FilterSidebar.displayName = "FilterSidebar";
10425
- var Root50 = styles.styled("li")({
10696
+ var Root53 = styles.styled("li")({
10426
10697
  display: "grid",
10427
10698
  gridTemplateColumns: "3.5rem 1fr auto",
10428
10699
  alignItems: "center",
10429
10700
  gap: "0.75rem"
10430
10701
  });
10431
- var ImageWrap6 = styles.styled("div")(({ theme }) => ({
10702
+ var ImageWrap5 = styles.styled("div")(({ theme }) => ({
10432
10703
  position: "relative",
10433
10704
  width: "3.5rem",
10434
10705
  height: "3.5rem",
@@ -10436,8 +10707,8 @@ var ImageWrap6 = styles.styled("div")(({ theme }) => ({
10436
10707
  overflow: "hidden",
10437
10708
  flexShrink: 0
10438
10709
  }));
10439
- var Info5 = styles.styled("div")({ minWidth: 0 });
10440
- var Name11 = styles.styled("p")(({ theme }) => ({
10710
+ var Info6 = styles.styled("div")({ minWidth: 0 });
10711
+ var Name13 = styles.styled("p")(({ theme }) => ({
10441
10712
  margin: 0,
10442
10713
  color: theme.palette.text.primary,
10443
10714
  fontFamily: theme.typography.fontFamily,
@@ -10466,10 +10737,10 @@ var OrderSummaryItem = ({
10466
10737
  imageAlt,
10467
10738
  quantity,
10468
10739
  meta
10469
- }) => /* @__PURE__ */ jsxRuntime.jsxs(Root50, { children: [
10470
- /* @__PURE__ */ jsxRuntime.jsx(ImageWrap6, { children: /* @__PURE__ */ jsxRuntime.jsx(ProductCardImage, { src: imageUrl, alt: imageAlt ?? String(name) }) }),
10471
- /* @__PURE__ */ jsxRuntime.jsxs(Info5, { children: [
10472
- /* @__PURE__ */ jsxRuntime.jsx(Name11, { children: name }),
10740
+ }) => /* @__PURE__ */ jsxRuntime.jsxs(Root53, { children: [
10741
+ /* @__PURE__ */ jsxRuntime.jsx(ImageWrap5, { children: /* @__PURE__ */ jsxRuntime.jsx(ProductCardImage, { src: imageUrl, alt: imageAlt ?? String(name) }) }),
10742
+ /* @__PURE__ */ jsxRuntime.jsxs(Info6, { children: [
10743
+ /* @__PURE__ */ jsxRuntime.jsx(Name13, { children: name }),
10473
10744
  (quantity !== void 0 || meta) && /* @__PURE__ */ jsxRuntime.jsxs(Meta2, { children: [
10474
10745
  quantity !== void 0 && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
10475
10746
  "Ilo\u015B\u0107: ",
@@ -10482,7 +10753,7 @@ var OrderSummaryItem = ({
10482
10753
  /* @__PURE__ */ jsxRuntime.jsx(Price4, { children: price })
10483
10754
  ] });
10484
10755
  OrderSummaryItem.displayName = "OrderSummaryItem";
10485
- var Root51 = styles.styled("div", {
10756
+ var Root54 = styles.styled("div", {
10486
10757
  shouldForwardProp: (prop) => prop !== "$total"
10487
10758
  })(({ theme, $total }) => ({
10488
10759
  display: "flex",
@@ -10494,12 +10765,12 @@ var Root51 = styles.styled("div", {
10494
10765
  fontWeight: $total ? 800 : 400,
10495
10766
  "& dt, & dd": { margin: 0 }
10496
10767
  }));
10497
- var OrderSummaryRow = ({ label, value, total = false }) => /* @__PURE__ */ jsxRuntime.jsxs(Root51, { as: "div", $total: total, children: [
10768
+ var OrderSummaryRow = ({ label, value, total = false }) => /* @__PURE__ */ jsxRuntime.jsxs(Root54, { as: "div", $total: total, children: [
10498
10769
  /* @__PURE__ */ jsxRuntime.jsx("dt", { children: label }),
10499
10770
  /* @__PURE__ */ jsxRuntime.jsx("dd", { children: value })
10500
10771
  ] });
10501
10772
  OrderSummaryRow.displayName = "OrderSummaryRow";
10502
- var Root52 = styles.styled(Card)({ display: "grid", gap: "1rem" });
10773
+ var Root55 = styles.styled(Card)({ display: "grid", gap: "1rem" });
10503
10774
  var Title10 = styles.styled("h2")(({ theme }) => ({
10504
10775
  margin: 0,
10505
10776
  fontFamily: theme.typography.fontFamily,
@@ -10541,7 +10812,7 @@ var OrderSummary = react.forwardRef(
10541
10812
  ctaLabel = "Przejd\u017A do kasy",
10542
10813
  onCheckout,
10543
10814
  ...props
10544
- }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(Root52, { ref, variant: "default", padding: "lg", rounded: "lg", ...props, children: [
10815
+ }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(Root55, { ref, variant: "default", padding: "lg", rounded: "lg", ...props, children: [
10545
10816
  /* @__PURE__ */ jsxRuntime.jsx(Title10, { children: title }),
10546
10817
  items.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
10547
10818
  /* @__PURE__ */ jsxRuntime.jsx(SectionTitle, { children: itemsTitle }),
@@ -10561,7 +10832,7 @@ var OrderSummary = react.forwardRef(
10561
10832
  ] })
10562
10833
  );
10563
10834
  OrderSummary.displayName = "OrderSummary";
10564
- var Root53 = styles.styled("div")(({ theme }) => ({
10835
+ var Root56 = styles.styled("div")(({ theme }) => ({
10565
10836
  fontFamily: theme.typography.fontFamily
10566
10837
  }));
10567
10838
  var Grid2 = styles.styled("div", {
@@ -10596,7 +10867,7 @@ var ScrollTrack = styles.styled("div")({
10596
10867
  }
10597
10868
  });
10598
10869
  var RelatedProducts = react.forwardRef(
10599
- ({ products, title = "Podobne produkty", layout = "grid", columns = 4, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(Root53, { ref, ...props, children: [
10870
+ ({ products, title = "Podobne produkty", layout = "grid", columns = 4, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(Root56, { ref, ...props, children: [
10600
10871
  /* @__PURE__ */ jsxRuntime.jsx(SectionHeading, { title, align: "left", style: { marginBottom: "1.5rem" } }),
10601
10872
  layout === "scroll" ? /* @__PURE__ */ jsxRuntime.jsx(ScrollTrack, { children: products.map((product, i) => /* @__PURE__ */ jsxRuntime.jsx(ProductCard, { ...product }, product.name + i)) }) : /* @__PURE__ */ jsxRuntime.jsx(Grid2, { $columns: columns, children: products.map((product, i) => /* @__PURE__ */ jsxRuntime.jsx(ProductCard, { ...product }, product.name + i)) })
10602
10873
  ] })
@@ -10655,7 +10926,13 @@ var ReviewItem = ({ review }) => /* @__PURE__ */ jsxRuntime.jsxs(Card2, { childr
10655
10926
  /* @__PURE__ */ jsxRuntime.jsxs(AuthorInfo, { children: [
10656
10927
  /* @__PURE__ */ jsxRuntime.jsxs(AuthorName, { children: [
10657
10928
  review.author,
10658
- review.verified && /* @__PURE__ */ jsxRuntime.jsx(VerifiedIcon__default.default, { "aria-label": "Zweryfikowany zakup", style: { fontSize: 14, color: "#16a34a" } })
10929
+ review.verified && /* @__PURE__ */ jsxRuntime.jsx(
10930
+ VerifiedIcon__default.default,
10931
+ {
10932
+ "aria-label": "Zweryfikowany zakup",
10933
+ style: { fontSize: 14, color: "#16a34a" }
10934
+ }
10935
+ )
10659
10936
  ] }),
10660
10937
  /* @__PURE__ */ jsxRuntime.jsx(ReviewDate, { children: review.date })
10661
10938
  ] }),
@@ -10670,7 +10947,7 @@ var ReviewItem = ({ review }) => /* @__PURE__ */ jsxRuntime.jsxs(Card2, { childr
10670
10947
  ] })
10671
10948
  ] });
10672
10949
  ReviewItem.displayName = "ReviewItem";
10673
- var Root54 = styles.styled("div")(({ theme }) => ({
10950
+ var Root57 = styles.styled("div")(({ theme }) => ({
10674
10951
  display: "flex",
10675
10952
  alignItems: "center",
10676
10953
  gap: "2rem",
@@ -10732,7 +11009,7 @@ var ReviewSummary = ({
10732
11009
  ratingDistribution
10733
11010
  }) => {
10734
11011
  const totalDist = ratingDistribution ? Object.values(ratingDistribution).reduce((a, b) => a + b, 0) : 0;
10735
- return /* @__PURE__ */ jsxRuntime.jsxs(Root54, { children: [
11012
+ return /* @__PURE__ */ jsxRuntime.jsxs(Root57, { children: [
10736
11013
  /* @__PURE__ */ jsxRuntime.jsxs(AverageBlock, { children: [
10737
11014
  /* @__PURE__ */ jsxRuntime.jsx(Score, { children: averageRating.toFixed(1) }),
10738
11015
  /* @__PURE__ */ jsxRuntime.jsx(Rating, { value: averageRating, size: "sm", readonly: true }),
@@ -10756,7 +11033,7 @@ var ReviewSummary = ({
10756
11033
  ] });
10757
11034
  };
10758
11035
  ReviewSummary.displayName = "ReviewSummary";
10759
- var Root55 = styles.styled("div")(({ theme }) => ({
11036
+ var Root58 = styles.styled("div")(({ theme }) => ({
10760
11037
  fontFamily: theme.typography.fontFamily
10761
11038
  }));
10762
11039
  var ReviewList = styles.styled("div")({
@@ -10765,7 +11042,14 @@ var ReviewList = styles.styled("div")({
10765
11042
  gap: "1.5rem"
10766
11043
  });
10767
11044
  var ReviewSection = react.forwardRef(
10768
- ({ reviews, averageRating, totalReviews, title = "Opinie klient\xF3w", ratingDistribution, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(Root55, { ref, ...props, children: [
11045
+ ({
11046
+ reviews,
11047
+ averageRating,
11048
+ totalReviews,
11049
+ title = "Opinie klient\xF3w",
11050
+ ratingDistribution,
11051
+ ...props
11052
+ }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(Root58, { ref, ...props, children: [
10769
11053
  /* @__PURE__ */ jsxRuntime.jsx(SectionHeading, { title, align: "left", style: { marginBottom: "1.5rem" } }),
10770
11054
  averageRating !== void 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { style: { marginBottom: "2rem" }, children: /* @__PURE__ */ jsxRuntime.jsx(
10771
11055
  ReviewSummary,
@@ -10779,7 +11063,82 @@ var ReviewSection = react.forwardRef(
10779
11063
  ] })
10780
11064
  );
10781
11065
  ReviewSection.displayName = "ReviewSection";
10782
- var List5 = styles.styled("div")(({ $hasHeading }) => ({
11066
+ var Heading = styles.styled("h2")(({ theme }) => ({
11067
+ margin: "0 0 2rem",
11068
+ fontFamily: theme.typography.fontFamily,
11069
+ fontSize: "1.5rem",
11070
+ fontWeight: 700,
11071
+ color: theme.palette.text.primary
11072
+ }));
11073
+ var CommentCount = styles.styled("span")(({ theme }) => ({
11074
+ marginLeft: "0.375rem",
11075
+ color: theme.palette.text.secondary,
11076
+ fontWeight: 400
11077
+ }));
11078
+ var List5 = styles.styled("div")({
11079
+ display: "flex",
11080
+ flexDirection: "column"
11081
+ });
11082
+ var ThreadWrapper = styles.styled("div")(({ theme }) => ({
11083
+ display: "flex",
11084
+ flexDirection: "column",
11085
+ gap: "1.5rem",
11086
+ paddingTop: "1.5rem",
11087
+ paddingBottom: "1.5rem",
11088
+ borderBottom: `1px solid ${theme.palette.divider}`,
11089
+ "&:first-of-type": {
11090
+ paddingTop: 0
11091
+ },
11092
+ "&:last-child": {
11093
+ borderBottom: "none",
11094
+ paddingBottom: 0
11095
+ }
11096
+ }));
11097
+ var Replies = styles.styled("div")({
11098
+ display: "flex",
11099
+ flexDirection: "column",
11100
+ gap: "1.5rem"
11101
+ });
11102
+ function countTotal(comments) {
11103
+ return comments.reduce((acc, c) => acc + 1 + (c.replies?.length ?? 0), 0);
11104
+ }
11105
+ var CommentSection = react.forwardRef(
11106
+ ({
11107
+ title = "Komentarze",
11108
+ comments,
11109
+ maxWidth = "xl",
11110
+ onLike,
11111
+ onReply,
11112
+ ...rest
11113
+ }, ref) => {
11114
+ const total = countTotal(comments);
11115
+ return /* @__PURE__ */ jsxRuntime.jsx(Section, { ref, ...rest, children: /* @__PURE__ */ jsxRuntime.jsxs(Container, { maxWidth, children: [
11116
+ /* @__PURE__ */ jsxRuntime.jsxs(Heading, { children: [
11117
+ title,
11118
+ /* @__PURE__ */ jsxRuntime.jsxs(CommentCount, { children: [
11119
+ "(",
11120
+ total,
11121
+ ")"
11122
+ ] })
11123
+ ] }),
11124
+ /* @__PURE__ */ jsxRuntime.jsx(List5, { children: comments.map((comment) => /* @__PURE__ */ jsxRuntime.jsxs(ThreadWrapper, { children: [
11125
+ /* @__PURE__ */ jsxRuntime.jsx(CommentCard, { comment, depth: 0, onLike, onReply }),
11126
+ comment.replies && comment.replies.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(Replies, { children: comment.replies.map((reply) => /* @__PURE__ */ jsxRuntime.jsx(
11127
+ CommentCard,
11128
+ {
11129
+ comment: reply,
11130
+ depth: 1,
11131
+ onLike,
11132
+ onReply
11133
+ },
11134
+ reply.id
11135
+ )) })
11136
+ ] }, comment.id)) })
11137
+ ] }) });
11138
+ }
11139
+ );
11140
+ CommentSection.displayName = "CommentSection";
11141
+ var List6 = styles.styled("div")(({ $hasHeading }) => ({
10783
11142
  marginTop: $hasHeading ? "2.5rem" : 0
10784
11143
  }));
10785
11144
  var FaqSection = react.forwardRef(
@@ -10795,7 +11154,7 @@ var FaqSection = react.forwardRef(
10795
11154
  const hasHeading = Boolean(title || description);
10796
11155
  return /* @__PURE__ */ jsxRuntime.jsx(Section, { ref, ...rest, children: /* @__PURE__ */ jsxRuntime.jsxs(Container, { maxWidth, children: [
10797
11156
  hasHeading && /* @__PURE__ */ jsxRuntime.jsx(SectionHeading, { title: title ?? "", description, align: headingAlign }),
10798
- /* @__PURE__ */ jsxRuntime.jsx(List5, { $hasHeading: hasHeading, children: items.map((item, index) => /* @__PURE__ */ jsxRuntime.jsx(
11157
+ /* @__PURE__ */ jsxRuntime.jsx(List6, { $hasHeading: hasHeading, children: items.map((item, index) => /* @__PURE__ */ jsxRuntime.jsx(
10799
11158
  FaqItem,
10800
11159
  {
10801
11160
  item,
@@ -11614,7 +11973,7 @@ var TopRow = styles.styled("div")({
11614
11973
  gap: "1rem",
11615
11974
  flexWrap: "wrap"
11616
11975
  });
11617
- var TextBlock = styles.styled("div")({ flex: 1, minWidth: "16rem" });
11976
+ var TextBlock2 = styles.styled("div")({ flex: 1, minWidth: "16rem" });
11618
11977
  var Title12 = styles.styled("p")(({ theme }) => ({
11619
11978
  margin: "0 0 0.25rem",
11620
11979
  fontFamily: theme.typography.fontFamily,
@@ -11635,7 +11994,7 @@ var Link3 = styles.styled("a")(({ theme }) => ({
11635
11994
  textDecoration: "underline",
11636
11995
  "&:hover": { opacity: 0.8 }
11637
11996
  }));
11638
- var Actions = styles.styled("div")({
11997
+ var Actions2 = styles.styled("div")({
11639
11998
  display: "flex",
11640
11999
  alignItems: "center",
11641
12000
  gap: "0.625rem",
@@ -11779,7 +12138,7 @@ function CookieConsent({
11779
12138
  return reactDom.createPortal(
11780
12139
  /* @__PURE__ */ jsxRuntime.jsx(Bar2, { role: "region", "aria-label": "Zgoda na pliki cookie", "aria-live": "polite", children: /* @__PURE__ */ jsxRuntime.jsxs(Inner4, { children: [
11781
12140
  /* @__PURE__ */ jsxRuntime.jsxs(TopRow, { children: [
11782
- /* @__PURE__ */ jsxRuntime.jsxs(TextBlock, { children: [
12141
+ /* @__PURE__ */ jsxRuntime.jsxs(TextBlock2, { children: [
11783
12142
  /* @__PURE__ */ jsxRuntime.jsx(Title12, { children: title }),
11784
12143
  /* @__PURE__ */ jsxRuntime.jsxs(Description9, { children: [
11785
12144
  description,
@@ -11789,7 +12148,7 @@ function CookieConsent({
11789
12148
  ] })
11790
12149
  ] })
11791
12150
  ] }),
11792
- /* @__PURE__ */ jsxRuntime.jsxs(Actions, { children: [
12151
+ /* @__PURE__ */ jsxRuntime.jsxs(Actions2, { children: [
11793
12152
  /* @__PURE__ */ jsxRuntime.jsx(
11794
12153
  TextButton,
11795
12154
  {
@@ -11831,7 +12190,7 @@ function CookieConsent({
11831
12190
  );
11832
12191
  }
11833
12192
  var defaultCookieCategories = DEFAULT_CATEGORIES;
11834
- var Root56 = styles.styled("footer")(({ theme }) => ({
12193
+ var Root59 = styles.styled("footer")(({ theme }) => ({
11835
12194
  width: "100%",
11836
12195
  backgroundColor: theme.palette.background.paper,
11837
12196
  borderTop: `1px solid ${theme.palette.divider}`
@@ -11969,7 +12328,7 @@ function Footer7({
11969
12328
  style
11970
12329
  }) {
11971
12330
  const colCount = columns.length;
11972
- return /* @__PURE__ */ jsxRuntime.jsx(Root56, { style, children: /* @__PURE__ */ jsxRuntime.jsxs(material.Container, { maxWidth, sx: { pt: "3rem", pb: "2rem" }, children: [
12331
+ return /* @__PURE__ */ jsxRuntime.jsx(Root59, { style, children: /* @__PURE__ */ jsxRuntime.jsxs(Container, { maxWidth, style: { paddingTop: "3rem", paddingBottom: "2rem" }, children: [
11973
12332
  (logo || description || colCount > 0) && /* @__PURE__ */ jsxRuntime.jsxs(TopRow2, { style: { "--col-count": colCount }, children: [
11974
12333
  (logo || description) && /* @__PURE__ */ jsxRuntime.jsxs(BrandBlock, { children: [
11975
12334
  logo,
@@ -11996,7 +12355,7 @@ function Footer7({
11996
12355
  ] })
11997
12356
  ] }) });
11998
12357
  }
11999
- var Root57 = styles.styled("header", {
12358
+ var Root60 = styles.styled("header", {
12000
12359
  shouldForwardProp: (p) => p !== "$sticky" && p !== "$variant"
12001
12360
  })(({ theme, $sticky, $variant }) => ({
12002
12361
  position: $sticky ? "sticky" : "relative",
@@ -12108,12 +12467,12 @@ function Navbar({
12108
12467
  style
12109
12468
  }) {
12110
12469
  const [mobileOpen, setMobileOpen] = react.useState(false);
12111
- return /* @__PURE__ */ jsxRuntime.jsxs(Root57, { $sticky: sticky, $variant: variant, style, children: [
12470
+ return /* @__PURE__ */ jsxRuntime.jsxs(Root60, { $sticky: sticky, $variant: variant, style, children: [
12112
12471
  /* @__PURE__ */ jsxRuntime.jsxs(
12113
- material.Container,
12472
+ Container,
12114
12473
  {
12115
12474
  maxWidth,
12116
- sx: { height: "3.75rem", display: "flex", alignItems: "center", gap: "1.5rem" },
12475
+ style: { height: "3.75rem", display: "flex", alignItems: "center", gap: "1.5rem" },
12117
12476
  children: [
12118
12477
  logo && /* @__PURE__ */ jsxRuntime.jsx(LogoSlot, { children: logo }),
12119
12478
  /* @__PURE__ */ jsxRuntime.jsx(Nav3, { "aria-label": "Nawigacja g\u0142\xF3wna", children: navItems.map((item) => /* @__PURE__ */ jsxRuntime.jsx(NavLink, { href: item.href, $active: !!item.active, children: item.label }, item.href)) }),
@@ -12133,66 +12492,51 @@ function Navbar({
12133
12492
  ]
12134
12493
  }
12135
12494
  ),
12136
- navItems.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(MobileDrawer, { $open: mobileOpen, "aria-label": "Menu mobilne", children: /* @__PURE__ */ jsxRuntime.jsx(material.Container, { maxWidth, children: navItems.map((item) => /* @__PURE__ */ jsxRuntime.jsx(MobileNavLink, { href: item.href, $active: !!item.active, children: item.label }, item.href)) }) })
12495
+ navItems.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(MobileDrawer, { $open: mobileOpen, "aria-label": "Menu mobilne", children: /* @__PURE__ */ jsxRuntime.jsx(Container, { maxWidth, children: navItems.map((item) => /* @__PURE__ */ jsxRuntime.jsx(MobileNavLink, { href: item.href, $active: !!item.active, children: item.label }, item.href)) }) })
12137
12496
  ] });
12138
12497
  }
12139
- var ss = "sans-serif";
12498
+ var fontFamily = "'Lato', sans-serif";
12140
12499
  var typographyOptions = {
12141
- fontFamily: ["'Lato'", ss].join(","),
12142
- h1: {
12143
- fontFamily: ["'Lato'", ss].join(","),
12144
- fontSize: "1.75rem"
12145
- },
12146
- h2: {
12147
- fontFamily: ["'Lato'", ss].join(","),
12148
- fontSize: "1.375rem"
12149
- },
12150
- h3: {
12151
- fontFamily: ["'Lato'", ss].join(","),
12152
- fontSize: "1.125rem"
12153
- },
12154
- h4: {
12155
- fontFamily: ["'Lato'", ss].join(","),
12156
- fontSize: "1rem"
12157
- },
12158
- h5: {
12159
- fontFamily: ["'Lato'", ss].join(","),
12160
- fontSize: "0.875rem"
12161
- },
12162
- h6: {
12163
- fontFamily: ["'Lato'", ss].join(","),
12164
- fontSize: "0.75rem"
12165
- }
12500
+ fontFamily,
12501
+ h1: { fontSize: "1.75rem" },
12502
+ h2: { fontSize: "1.375rem" },
12503
+ h3: { fontSize: "1.125rem" },
12504
+ h4: { fontSize: "1rem" },
12505
+ h5: { fontSize: "0.875rem" },
12506
+ h6: { fontSize: "0.75rem" }
12166
12507
  };
12167
- var themeLight = styles.createTheme({
12508
+ var themeBase = {
12168
12509
  typography: typographyOptions,
12510
+ palette: {
12511
+ error: { main: "#d32f2f", dark: "#b71c1c", light: "#ef5350", contrastText: "#ffffff" },
12512
+ success: { main: "#388e3c", dark: "#2e7d32", light: "#66bb6a", contrastText: "#ffffff" },
12513
+ warning: { main: "#f57c00", dark: "#ef6c00", light: "#ffb74d", contrastText: "#000000" },
12514
+ info: { main: "#1976d2", dark: "#1565c0", light: "#42a5f5", contrastText: "#ffffff" }
12515
+ }
12516
+ };
12517
+ var themeLight = styles.createTheme(themeBase, {
12169
12518
  palette: {
12170
12519
  mode: "light",
12171
12520
  primary: { main: "#1976d2", dark: "#1565c0", light: "#42a5f5", contrastText: "#ffffff" },
12172
12521
  secondary: { main: "#6b7280", dark: "#4b5563", light: "#9ca3af", contrastText: "#ffffff" },
12173
- error: { main: "#d32f2f", dark: "#b71c1c", light: "#ef5350", contrastText: "#ffffff" },
12174
12522
  action: { disabled: "rgba(0,0,0,0.38)", disabledBackground: "rgba(0,0,0,0.12)" },
12175
12523
  background: { default: "#ffffff", paper: "#f5f5f5" }
12176
12524
  }
12177
12525
  });
12178
- var themeDark = styles.createTheme({
12179
- typography: typographyOptions,
12526
+ var themeDark = styles.createTheme(themeBase, {
12180
12527
  palette: {
12181
12528
  mode: "dark",
12182
12529
  primary: { main: "#90caf9", dark: "#42a5f5", light: "#bbdefb", contrastText: "#0d1b2a" },
12183
12530
  secondary: { main: "#9ca3af", dark: "#6b7280", light: "#d1d5db", contrastText: "#111827" },
12184
- error: { main: "#f48fb1", dark: "#f06292", light: "#fce4ec", contrastText: "#1a0010" },
12185
12531
  action: { disabled: "rgba(255,255,255,0.30)", disabledBackground: "rgba(255,255,255,0.12)" },
12186
12532
  background: { default: "#121212", paper: "#1e1e1e" }
12187
12533
  }
12188
12534
  });
12189
- var themeHighContrast = styles.createTheme({
12190
- typography: typographyOptions,
12535
+ var themeHighContrast = styles.createTheme(themeBase, {
12191
12536
  palette: {
12192
12537
  mode: "dark",
12193
12538
  primary: { main: "#ffffff", dark: "#e0e0e0", light: "#ffffff", contrastText: "#000000" },
12194
12539
  secondary: { main: "#ffff00", dark: "#cccc00", light: "#ffff66", contrastText: "#000000" },
12195
- error: { main: "#ff6b6b", dark: "#ff3333", light: "#ffaaaa", contrastText: "#000000" },
12196
12540
  action: { disabled: "rgba(255,255,255,0.38)", disabledBackground: "rgba(255,255,255,0.12)" },
12197
12541
  background: { default: "#000000", paper: "#1a1a1a" }
12198
12542
  }
@@ -12263,6 +12607,11 @@ exports.CategoryCardImage = CategoryCardImage;
12263
12607
  exports.CategoryCardInfo = CategoryCardInfo;
12264
12608
  exports.CheckboxInput = CheckboxInput;
12265
12609
  exports.CommandPalette = CommandPalette;
12610
+ exports.CommentActions = CommentActions;
12611
+ exports.CommentBody = CommentBody;
12612
+ exports.CommentCard = CommentCard;
12613
+ exports.CommentMeta = CommentMeta;
12614
+ exports.CommentSection = CommentSection;
12266
12615
  exports.CompareTool = CompareTool;
12267
12616
  exports.Container = Container;
12268
12617
  exports.ContextMenu = ContextMenu;
@@ -12281,6 +12630,7 @@ exports.FeatureItem = FeatureItem;
12281
12630
  exports.FileInput = FileInput;
12282
12631
  exports.FilterSidebar = FilterSidebar;
12283
12632
  exports.Footer = Footer7;
12633
+ exports.Image = Image;
12284
12634
  exports.Lightbox = Lightbox;
12285
12635
  exports.List = List4;
12286
12636
  exports.LogoCloud = LogoCloud;
@@ -12317,6 +12667,7 @@ exports.ProductCard = ProductCard;
12317
12667
  exports.ProductCardHorizontal = ProductCardHorizontal;
12318
12668
  exports.ProductCardImage = ProductCardImage;
12319
12669
  exports.ProductGallery = ProductGallery;
12670
+ exports.ProfileCard = ProfileCard;
12320
12671
  exports.ProgressBar = ProgressBar;
12321
12672
  exports.ProgressCircle = ProgressCircle;
12322
12673
  exports.PromoStrip = PromoStrip;
@@ -12328,7 +12679,6 @@ exports.RelatedProducts = RelatedProducts;
12328
12679
  exports.ReviewItem = ReviewItem;
12329
12680
  exports.ReviewSection = ReviewSection;
12330
12681
  exports.ReviewSummary = ReviewSummary;
12331
- exports.SaleBadge = SaleBadge;
12332
12682
  exports.SearchInput = SearchInput;
12333
12683
  exports.Section = Section;
12334
12684
  exports.SectionHeading = SectionHeading;
@@ -12392,7 +12742,6 @@ exports.progressCircleVariants = progressCircleVariants;
12392
12742
  exports.promoStripVariants = promoStripVariants;
12393
12743
  exports.rangeSliderSizes = rangeSliderSizes;
12394
12744
  exports.relatedProductsLayouts = relatedProductsLayouts;
12395
- exports.saleBadgeVariants = saleBadgeVariants;
12396
12745
  exports.sectionHeadingAligns = sectionHeadingAligns;
12397
12746
  exports.skeletonVariants = skeletonVariants;
12398
12747
  exports.spinnerColors = spinnerColors;