@szymonpiatek/designsystem 0.0.7 → 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
@@ -29,10 +29,14 @@ var ImageIcon = require('@mui/icons-material/Image');
29
29
  var ArticleIcon = require('@mui/icons-material/Article');
30
30
  var CheckCircleOutlinedIcon = require('@mui/icons-material/CheckCircleOutlined');
31
31
  var HighlightOffIcon = require('@mui/icons-material/HighlightOff');
32
+ var ContentCopyIcon = require('@mui/icons-material/ContentCopy');
33
+ var LocalOfferIcon = require('@mui/icons-material/LocalOffer');
32
34
  var CreditCardOutlinedIcon = require('@mui/icons-material/CreditCardOutlined');
33
35
  var LocalShippingOutlinedIcon = require('@mui/icons-material/LocalShippingOutlined');
34
36
  var GridViewIcon = require('@mui/icons-material/GridView');
35
37
  var ViewListIcon = require('@mui/icons-material/ViewList');
38
+ var ThumbUpOutlinedIcon = require('@mui/icons-material/ThumbUpOutlined');
39
+ var ReplyIcon = require('@mui/icons-material/Reply');
36
40
  var reactDom = require('react-dom');
37
41
  var KeyboardDoubleArrowLeftIcon = require('@mui/icons-material/KeyboardDoubleArrowLeft');
38
42
  var KeyboardDoubleArrowRightIcon = require('@mui/icons-material/KeyboardDoubleArrowRight');
@@ -41,7 +45,6 @@ var WarningAmberOutlinedIcon = require('@mui/icons-material/WarningAmberOutlined
41
45
  var ErrorOutlineOutlinedIcon = require('@mui/icons-material/ErrorOutlineOutlined');
42
46
  var InboxOutlinedIcon = require('@mui/icons-material/InboxOutlined');
43
47
  var VerifiedIcon = require('@mui/icons-material/Verified');
44
- var ThumbUpOutlinedIcon = require('@mui/icons-material/ThumbUpOutlined');
45
48
  var ArrowForwardIcon = require('@mui/icons-material/ArrowForward');
46
49
  var MenuIcon = require('@mui/icons-material/Menu');
47
50
 
@@ -70,10 +73,14 @@ var ImageIcon__default = /*#__PURE__*/_interopDefault(ImageIcon);
70
73
  var ArticleIcon__default = /*#__PURE__*/_interopDefault(ArticleIcon);
71
74
  var CheckCircleOutlinedIcon__default = /*#__PURE__*/_interopDefault(CheckCircleOutlinedIcon);
72
75
  var HighlightOffIcon__default = /*#__PURE__*/_interopDefault(HighlightOffIcon);
76
+ var ContentCopyIcon__default = /*#__PURE__*/_interopDefault(ContentCopyIcon);
77
+ var LocalOfferIcon__default = /*#__PURE__*/_interopDefault(LocalOfferIcon);
73
78
  var CreditCardOutlinedIcon__default = /*#__PURE__*/_interopDefault(CreditCardOutlinedIcon);
74
79
  var LocalShippingOutlinedIcon__default = /*#__PURE__*/_interopDefault(LocalShippingOutlinedIcon);
75
80
  var GridViewIcon__default = /*#__PURE__*/_interopDefault(GridViewIcon);
76
81
  var ViewListIcon__default = /*#__PURE__*/_interopDefault(ViewListIcon);
82
+ var ThumbUpOutlinedIcon__default = /*#__PURE__*/_interopDefault(ThumbUpOutlinedIcon);
83
+ var ReplyIcon__default = /*#__PURE__*/_interopDefault(ReplyIcon);
77
84
  var KeyboardDoubleArrowLeftIcon__default = /*#__PURE__*/_interopDefault(KeyboardDoubleArrowLeftIcon);
78
85
  var KeyboardDoubleArrowRightIcon__default = /*#__PURE__*/_interopDefault(KeyboardDoubleArrowRightIcon);
79
86
  var InfoOutlinedIcon__default = /*#__PURE__*/_interopDefault(InfoOutlinedIcon);
@@ -81,7 +88,6 @@ var WarningAmberOutlinedIcon__default = /*#__PURE__*/_interopDefault(WarningAmbe
81
88
  var ErrorOutlineOutlinedIcon__default = /*#__PURE__*/_interopDefault(ErrorOutlineOutlinedIcon);
82
89
  var InboxOutlinedIcon__default = /*#__PURE__*/_interopDefault(InboxOutlinedIcon);
83
90
  var VerifiedIcon__default = /*#__PURE__*/_interopDefault(VerifiedIcon);
84
- var ThumbUpOutlinedIcon__default = /*#__PURE__*/_interopDefault(ThumbUpOutlinedIcon);
85
91
  var ArrowForwardIcon__default = /*#__PURE__*/_interopDefault(ArrowForwardIcon);
86
92
  var MenuIcon__default = /*#__PURE__*/_interopDefault(MenuIcon);
87
93
 
@@ -3366,6 +3372,19 @@ var COUNTRIES = countries_default.countries.map((c) => {
3366
3372
  };
3367
3373
  }).sort((a, b) => a.country.localeCompare(b.country, "pl"));
3368
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
+ };
3369
3388
  var wrapperColors = (theme, error, focused) => ({
3370
3389
  borderColor: focused ? error ? theme.palette.error.main : theme.palette.primary.main : error ? theme.palette.error.main : theme.palette.divider,
3371
3390
  boxShadow: focused ? `0 0 0 3px ${error ? theme.palette.error.main : theme.palette.primary.main}33` : "none",
@@ -3553,13 +3572,24 @@ var PhoneInput = react.forwardRef(
3553
3572
  () => COUNTRIES.find((c) => c.flagCode === defaultCountry) ?? DEFAULT_COUNTRY,
3554
3573
  [defaultCountry]
3555
3574
  );
3556
- const [selectedCountry, setSelectedCountry] = react.useState(initialCountry);
3575
+ const [selectedCountry, setSelectedCountry] = react.useState(() => {
3576
+ if (defaultValue?.startsWith("+")) return parsePhoneValue(defaultValue).country;
3577
+ return initialCountry;
3578
+ });
3557
3579
  const [isOpen, setIsOpen] = react.useState(false);
3558
3580
  const [searchQuery, setSearchQuery] = react.useState("");
3559
3581
  const [focused, setFocused] = react.useState(false);
3560
3582
  const isControlled = value !== void 0;
3561
- const [internalValue, setInternalValue] = react.useState(defaultValue);
3562
- 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;
3563
3593
  const rootRef = react.useRef(null);
3564
3594
  const searchRef = react.useRef(null);
3565
3595
  const filteredCountries = react.useMemo(() => {
@@ -3584,21 +3614,29 @@ var PhoneInput = react.forwardRef(
3584
3614
  setSelectedCountry(country);
3585
3615
  onCountryChange?.(country);
3586
3616
  close();
3587
- if (!isControlled) setInternalValue("");
3588
- onChange?.("", { country, dialCode: country.dialCode, fullNumber: country.dialCode });
3617
+ if (!isControlled) setInternalDigits("");
3618
+ onChange?.(country.dialCode, { country, dialCode: country.dialCode, fullNumber: country.dialCode });
3589
3619
  };
3590
3620
  const handlePhoneChange = (e) => {
3591
- const raw = e.target.value.replace(/\D/g, "");
3592
- const clamped = raw.slice(0, selectedCountry.maxLength);
3593
- if (!isControlled) setInternalValue(clamped);
3594
- onChange?.(clamped, {
3595
- country: selectedCountry,
3596
- dialCode: selectedCountry.dialCode,
3597
- fullNumber: selectedCountry.dialCode + clamped
3598
- });
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
+ }
3599
3636
  };
3600
3637
  const handlePhoneKeyDown = (e) => {
3601
3638
  if (e.ctrlKey || e.metaKey || e.altKey || e.key.length > 1) return;
3639
+ if (e.key === "+" && e.target.value === "") return;
3602
3640
  if (!/^\d$/.test(e.key)) e.preventDefault();
3603
3641
  };
3604
3642
  react.useEffect(() => {
@@ -3609,7 +3647,7 @@ var PhoneInput = react.forwardRef(
3609
3647
  document.addEventListener("mousedown", handler);
3610
3648
  return () => document.removeEventListener("mousedown", handler);
3611
3649
  }, [isOpen, close]);
3612
- 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}`);
3613
3651
  return /* @__PURE__ */ jsxRuntime.jsxs(Root8, { $fullWidth: fullWidth, ref: rootRef, children: [
3614
3652
  label && /* @__PURE__ */ jsxRuntime.jsx(Label, { htmlFor: inputId, error, size, children: label }),
3615
3653
  /* @__PURE__ */ jsxRuntime.jsxs(
@@ -3631,14 +3669,14 @@ var PhoneInput = react.forwardRef(
3631
3669
  "aria-haspopup": "listbox",
3632
3670
  "aria-expanded": isOpen,
3633
3671
  "aria-controls": isOpen ? listboxId : void 0,
3634
- "aria-label": countrySelectAriaLabel(selectedCountry.country, selectedCountry.dialCode),
3672
+ "aria-label": countrySelectAriaLabel(activeCountry.country, activeCountry.dialCode),
3635
3673
  onClick: openDropdown,
3636
3674
  onKeyDown: (e) => e.key === "Escape" && close(),
3637
3675
  onFocus: () => setFocused(true),
3638
3676
  onBlur: () => setFocused(false),
3639
3677
  children: [
3640
- /* @__PURE__ */ jsxRuntime.jsx(CountryFlag, { countryCode: selectedCountry.flagCode, size }),
3641
- /* @__PURE__ */ jsxRuntime.jsx(DialCode, { children: selectedCountry.dialCode }),
3678
+ /* @__PURE__ */ jsxRuntime.jsx(CountryFlag, { countryCode: activeCountry.flagCode, size }),
3679
+ /* @__PURE__ */ jsxRuntime.jsx(DialCode, { children: activeCountry.dialCode }),
3642
3680
  /* @__PURE__ */ jsxRuntime.jsx(ChevronIcon, { $open: isOpen, children: /* @__PURE__ */ jsxRuntime.jsx(Chevron, {}) })
3643
3681
  ]
3644
3682
  }
@@ -3652,14 +3690,14 @@ var PhoneInput = react.forwardRef(
3652
3690
  $size: size,
3653
3691
  type: "tel",
3654
3692
  inputMode: "numeric",
3655
- value: phoneValue,
3693
+ value: inputDisplayValue,
3656
3694
  onChange: handlePhoneChange,
3657
3695
  onKeyDown: handlePhoneKeyDown,
3658
3696
  onFocus: () => setFocused(true),
3659
3697
  onBlur: () => setFocused(false),
3660
3698
  disabled,
3661
3699
  placeholder: derivedPlaceholder,
3662
- maxLength: selectedCountry.maxLength,
3700
+ maxLength: activeCountry.maxLength,
3663
3701
  "aria-label": label ? void 0 : phoneAriaLabel
3664
3702
  }
3665
3703
  ),
@@ -3676,26 +3714,23 @@ var PhoneInput = react.forwardRef(
3676
3714
  "aria-label": countrySearchAriaLabel
3677
3715
  }
3678
3716
  ) }),
3679
- /* @__PURE__ */ jsxRuntime.jsx(OptionList, { children: filteredCountries.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx(EmptyMessage, { children: "Nie znaleziono kraju" }) : filteredCountries.map((country) => {
3680
- const isSelected = country.flagCode === selectedCountry.flagCode;
3681
- return /* @__PURE__ */ jsxRuntime.jsxs(
3682
- OptionItem2,
3683
- {
3684
- role: "option",
3685
- "aria-selected": isSelected,
3686
- $selected: isSelected,
3687
- onClick: () => selectCountry(country),
3688
- onKeyDown: (e) => e.key === "Enter" && selectCountry(country),
3689
- tabIndex: 0,
3690
- children: [
3691
- /* @__PURE__ */ jsxRuntime.jsx(CountryFlag, { countryCode: country.flagCode, size: "sm" }),
3692
- /* @__PURE__ */ jsxRuntime.jsx(CountryName, { children: country.country }),
3693
- /* @__PURE__ */ jsxRuntime.jsx(OptionDialCode, { children: country.dialCode })
3694
- ]
3695
- },
3696
- country.flagCode
3697
- );
3698
- }) })
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
+ )) })
3699
3734
  ] })
3700
3735
  ]
3701
3736
  }
@@ -4830,55 +4865,51 @@ var cardVariants = [
4830
4865
  ];
4831
4866
  var cardPaddings = ["none", "sm", "md", "lg", "xl"];
4832
4867
  var cardRoundeds = ["none", "sm", "md", "lg", "full"];
4833
- function getVariantStyles2(variant, theme) {
4834
- const primary = theme.palette.primary.main;
4835
- const secondary = theme.palette.secondary.main;
4836
- const error = theme.palette.error.main;
4837
- switch (variant) {
4838
- case "default":
4839
- return {
4840
- backgroundColor: `${primary}26`,
4841
- color: primary,
4842
- border: "1px solid transparent"
4843
- };
4844
- case "secondary":
4845
- return {
4846
- backgroundColor: `${secondary}26`,
4847
- color: secondary,
4848
- border: "1px solid transparent"
4849
- };
4850
- case "outline":
4851
- return {
4852
- backgroundColor: "transparent",
4853
- border: `1px solid ${theme.palette.divider}`,
4854
- color: theme.palette.text.primary
4855
- };
4856
- case "destructive":
4857
- return {
4858
- backgroundColor: `${error}26`,
4859
- color: error,
4860
- border: "1px solid transparent"
4861
- };
4862
- case "success":
4863
- return {
4864
- backgroundColor: "rgba(34,197,94,0.15)",
4865
- color: theme.palette.mode === "dark" ? "rgb(134,239,172)" : "rgb(22,163,74)",
4866
- border: "1px solid transparent"
4867
- };
4868
- case "ghost":
4869
- return {
4870
- backgroundColor: "rgba(255,255,255,0.15)",
4871
- color: theme.palette.common.white,
4872
- border: "1px solid rgba(255,255,255,0.4)"
4873
- };
4874
- case "promo":
4875
- return {
4876
- backgroundColor: theme.palette.mode === "dark" ? "rgb(22,163,74)" : "rgb(22,163,74)",
4877
- color: "#ffffff",
4878
- border: "1px solid transparent"
4879
- };
4880
- }
4881
- }
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);
4882
4913
  var StyledBadge = styles.styled("span", {
4883
4914
  shouldForwardProp: (prop) => prop !== "$variant"
4884
4915
  })(({ theme, $variant }) => ({
@@ -4889,54 +4920,11 @@ var StyledBadge = styles.styled("span", {
4889
4920
  fontWeight: 500,
4890
4921
  lineHeight: 1,
4891
4922
  fontFamily: theme.typography.fontFamily,
4892
- ...getVariantStyles2($variant, theme)
4923
+ ...variantStyles2[$variant](theme)
4893
4924
  }));
4894
4925
  function Badge2({ variant = "default", ...props }) {
4895
4926
  return /* @__PURE__ */ jsxRuntime.jsx(StyledBadge, { $variant: variant, ...props });
4896
4927
  }
4897
- var badgeVariants = [
4898
- "default",
4899
- "secondary",
4900
- "outline",
4901
- "destructive",
4902
- "success",
4903
- "ghost",
4904
- "promo"
4905
- ];
4906
- function getBgColor(variant) {
4907
- switch (variant) {
4908
- case "flash":
4909
- return "#f59e0b";
4910
- case "new":
4911
- return "#3b82f6";
4912
- case "hot":
4913
- return "#ef4444";
4914
- default:
4915
- return "#16a34a";
4916
- }
4917
- }
4918
- var Root12 = styles.styled("span", {
4919
- shouldForwardProp: (prop) => prop !== "$variant"
4920
- })(({ theme, $variant }) => ({
4921
- display: "inline-flex",
4922
- alignItems: "center",
4923
- gap: "0.25rem",
4924
- borderRadius: "0.375rem",
4925
- padding: "0.25rem 0.625rem",
4926
- fontSize: "0.75rem",
4927
- fontWeight: 700,
4928
- lineHeight: 1,
4929
- letterSpacing: "0.02em",
4930
- fontFamily: theme.typography.fontFamily,
4931
- backgroundColor: getBgColor($variant),
4932
- color: "#ffffff",
4933
- textTransform: "uppercase"
4934
- }));
4935
- function SaleBadge({ discount, label, variant = "default", ...props }) {
4936
- const text = label ?? (discount !== void 0 ? `-${discount}%` : "SALE");
4937
- return /* @__PURE__ */ jsxRuntime.jsx(Root12, { $variant: variant, ...props, children: text });
4938
- }
4939
- var saleBadgeVariants = ["default", "flash", "new", "hot"];
4940
4928
  var sizeMap4 = {
4941
4929
  sm: { width: "2rem", height: "2rem", fontSize: "0.75rem" },
4942
4930
  md: { width: "2.5rem", height: "2.5rem", fontSize: "0.875rem" },
@@ -5085,7 +5073,7 @@ var spin = react$1.keyframes`to { transform: rotate(360deg); }`;
5085
5073
  var fade = react$1.keyframes`0%,100%{opacity:.15} 50%{opacity:1}`;
5086
5074
  var scalePulse = react$1.keyframes`0%,100%{transform:scale(0.6);opacity:.4} 50%{transform:scale(1);opacity:1}`;
5087
5075
  var barAnim = react$1.keyframes`0%,100%{transform:scaleY(.4);opacity:.5} 50%{transform:scaleY(1);opacity:1}`;
5088
- var Root13 = styles.styled("span", {
5076
+ var Root12 = styles.styled("span", {
5089
5077
  shouldForwardProp: (p) => !["$size", "$color"].includes(p)
5090
5078
  })(({ theme, $size, $color }) => {
5091
5079
  const colorMap = {
@@ -5173,8 +5161,8 @@ function Spinner3({
5173
5161
  label = "\u0141adowanie\u2026",
5174
5162
  ...props
5175
5163
  }) {
5176
- const Inner7 = VARIANTS[variant];
5177
- return /* @__PURE__ */ jsxRuntime.jsx(Root13, { $size: size, $color: color, role: "status", "aria-label": label, ...props, children: /* @__PURE__ */ jsxRuntime.jsx(Inner7, {}) });
5164
+ const Inner5 = VARIANTS[variant];
5165
+ return /* @__PURE__ */ jsxRuntime.jsx(Root12, { $size: size, $color: color, role: "status", "aria-label": label, ...props, children: /* @__PURE__ */ jsxRuntime.jsx(Inner5, {}) });
5178
5166
  }
5179
5167
  var spinnerVariants = ["ring", "dots", "pulse", "bars"];
5180
5168
  var spinnerSizes = ["xs", "sm", "md", "lg", "xl"];
@@ -5300,7 +5288,7 @@ var FONT_MAP = {
5300
5288
  lg: "1.125rem",
5301
5289
  xl: "1.5rem"
5302
5290
  };
5303
- 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 });
5304
5292
  var Label2 = styles.styled("div", {
5305
5293
  shouldForwardProp: (p) => p !== "$size"
5306
5294
  })(({ theme, $size }) => ({
@@ -5354,7 +5342,7 @@ function ProgressCircle({
5354
5342
  const { color, gradient } = useStrokeColor(variant, gradientId);
5355
5343
  const trackColor = theme.palette.mode === "dark" ? "rgba(255,255,255,0.1)" : "rgba(0,0,0,0.08)";
5356
5344
  return /* @__PURE__ */ jsxRuntime.jsxs(
5357
- Root14,
5345
+ Root13,
5358
5346
  {
5359
5347
  role: "progressbar",
5360
5348
  "aria-valuenow": value,
@@ -5711,9 +5699,10 @@ var PRESET_MAP = {
5711
5699
  "3/4": 3 / 4,
5712
5700
  "2/3": 2 / 3
5713
5701
  };
5714
- var Root15 = styles.styled("div")({
5702
+ var Root14 = styles.styled("div")({
5715
5703
  position: "relative",
5716
5704
  width: "100%",
5705
+ aspectRatio: "var(--ar)",
5717
5706
  "& > *": {
5718
5707
  position: "absolute",
5719
5708
  inset: 0,
@@ -5725,32 +5714,25 @@ var Root15 = styles.styled("div")({
5725
5714
  var AspectRatio = react.forwardRef(
5726
5715
  ({ ratio = "16/9", children, style, ...props }, ref) => {
5727
5716
  const numericRatio = typeof ratio === "string" ? PRESET_MAP[ratio] ?? 16 / 9 : ratio;
5728
- const paddingBottom = `${1 / numericRatio * 100}%`;
5729
- 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
+ );
5730
5726
  }
5731
5727
  );
5732
5728
  AspectRatio.displayName = "AspectRatio";
5733
5729
  var aspectRatioPresets = Object.keys(PRESET_MAP);
5734
- var Root16 = styles.styled(Card)(({ theme }) => ({
5735
- display: "flex",
5736
- flexDirection: "column",
5737
- overflow: "hidden",
5738
- cursor: "pointer",
5739
- transition: "box-shadow 150ms ease, transform 150ms ease",
5740
- "&:hover": {
5741
- boxShadow: theme.shadows[4],
5742
- transform: "translateY(-2px)"
5743
- }
5744
- }));
5745
- var ImageWrap = styles.styled("div")({
5746
- margin: "-1.5rem -1.5rem 1rem"
5747
- });
5748
- var Image = styles.styled("img")({
5730
+ var Img = styles.styled("img")({
5749
5731
  objectFit: "cover",
5750
5732
  width: "100%",
5751
5733
  height: "100%"
5752
5734
  });
5753
- var ImagePlaceholder = styles.styled("div")(({ theme }) => ({
5735
+ var Placeholder2 = styles.styled("div")(({ theme }) => ({
5754
5736
  width: "100%",
5755
5737
  height: "100%",
5756
5738
  backgroundColor: theme.palette.action.hover,
@@ -5759,7 +5741,9 @@ var ImagePlaceholder = styles.styled("div")(({ theme }) => ({
5759
5741
  justifyContent: "center",
5760
5742
  color: theme.palette.text.disabled
5761
5743
  }));
5762
- var Content = styles.styled("div")({
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 } }) }) });
5745
+ CategoryCardImage.displayName = "CategoryCardImage";
5746
+ var Root15 = styles.styled("div")({
5763
5747
  display: "flex",
5764
5748
  flexDirection: "column",
5765
5749
  gap: "0.25rem"
@@ -5777,6 +5761,33 @@ var Count = styles.styled("span")(({ theme }) => ({
5777
5761
  fontFamily: theme.typography.fontFamily,
5778
5762
  fontSize: "0.875rem"
5779
5763
  }));
5764
+ var CategoryCardInfo = ({
5765
+ name,
5766
+ count,
5767
+ countLabel = "produkt\xF3w"
5768
+ }) => /* @__PURE__ */ jsxRuntime.jsxs(Root15, { children: [
5769
+ /* @__PURE__ */ jsxRuntime.jsx(Name, { children: name }),
5770
+ count !== void 0 && /* @__PURE__ */ jsxRuntime.jsxs(Count, { children: [
5771
+ count,
5772
+ " ",
5773
+ countLabel
5774
+ ] })
5775
+ ] });
5776
+ CategoryCardInfo.displayName = "CategoryCardInfo";
5777
+ var Root16 = styles.styled(Card)(({ theme }) => ({
5778
+ display: "flex",
5779
+ flexDirection: "column",
5780
+ overflow: "hidden",
5781
+ cursor: "pointer",
5782
+ transition: "box-shadow 150ms ease, transform 150ms ease",
5783
+ "&:hover": {
5784
+ boxShadow: theme.shadows[4],
5785
+ transform: "translateY(-2px)"
5786
+ }
5787
+ }));
5788
+ var ImageWrap = styles.styled("div")({
5789
+ margin: "-1.5rem -1.5rem 1rem"
5790
+ });
5780
5791
  var CardLink = styles.styled("a")({
5781
5792
  display: "block",
5782
5793
  textDecoration: "none",
@@ -5786,90 +5797,95 @@ var CardLink = styles.styled("a")({
5786
5797
  var CategoryCard = react.forwardRef(
5787
5798
  ({ name, imageUrl, imageAlt, count, href, ...props }, ref) => {
5788
5799
  const content = /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
5789
- /* @__PURE__ */ jsxRuntime.jsx(ImageWrap, { children: /* @__PURE__ */ jsxRuntime.jsx(AspectRatio, { ratio: "4/3", children: imageUrl ? /* @__PURE__ */ jsxRuntime.jsx(Image, { src: imageUrl, alt: imageAlt ?? name }) : /* @__PURE__ */ jsxRuntime.jsx(ImagePlaceholder, { "aria-label": imageAlt ?? name, children: /* @__PURE__ */ jsxRuntime.jsx(ImageIcon__default.default, { style: { fontSize: 48 } }) }) }) }),
5790
- /* @__PURE__ */ jsxRuntime.jsxs(Content, { children: [
5791
- /* @__PURE__ */ jsxRuntime.jsx(Name, { children: name }),
5792
- count !== void 0 && /* @__PURE__ */ jsxRuntime.jsxs(Count, { children: [
5793
- count,
5794
- " produkt\xF3w"
5795
- ] })
5796
- ] })
5800
+ /* @__PURE__ */ jsxRuntime.jsx(ImageWrap, { children: /* @__PURE__ */ jsxRuntime.jsx(CategoryCardImage, { src: imageUrl, alt: imageAlt ?? name }) }),
5801
+ /* @__PURE__ */ jsxRuntime.jsx(CategoryCardInfo, { name, count })
5797
5802
  ] });
5798
5803
  return /* @__PURE__ */ jsxRuntime.jsx(Root16, { ref, variant: "default", padding: "md", rounded: "lg", ...props, children: href ? /* @__PURE__ */ jsxRuntime.jsx(CardLink, { href, children: content }) : content });
5799
5804
  }
5800
5805
  );
5801
5806
  CategoryCard.displayName = "CategoryCard";
5802
- var sizeMap5 = {
5803
- sm: "1rem",
5804
- md: "1.25rem",
5805
- lg: "1.5rem"
5806
- };
5807
- var Root17 = styles.styled("div")(({ theme }) => ({
5808
- display: "inline-flex",
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",
5809
5812
  alignItems: "center",
5810
- gap: "0.5rem",
5811
- color: theme.palette.text.secondary,
5812
- fontFamily: theme.typography.fontFamily
5813
- }));
5814
- var Stars = styles.styled("div")({
5815
- display: "inline-flex",
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",
5816
5824
  alignItems: "center",
5817
- gap: "0.125rem"
5825
+ gap: "1rem",
5826
+ flex: 1,
5827
+ minWidth: 0
5818
5828
  });
5819
- var StarButton = styles.styled("button")(
5820
- ({ theme, $size, $active }) => ({
5821
- appearance: "none",
5822
- border: 0,
5823
- background: "transparent",
5824
- padding: 0,
5825
- color: $active ? "#f59e0b" : theme.palette.action.disabled,
5826
- cursor: "pointer",
5827
- fontSize: sizeMap5[$size],
5828
- lineHeight: 1,
5829
- "&:disabled": {
5830
- cursor: "default"
5831
- }
5832
- })
5833
- );
5834
- var Meta = styles.styled("span")(({ theme }) => ({
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,
5835
5843
  fontSize: "0.875rem",
5836
- color: theme.palette.text.secondary
5844
+ color: theme.palette.text.secondary,
5845
+ whiteSpace: "nowrap",
5846
+ overflow: "hidden",
5847
+ textOverflow: "ellipsis"
5837
5848
  }));
5838
- var Rating = react.forwardRef(
5839
- ({ value, max = 5, readonly = true, size = "md", label, count, onChange, ...props }, ref) => {
5840
- const roundedValue = Math.round(value);
5841
- const meta = label ?? (count !== void 0 ? `(${count})` : void 0);
5842
- return /* @__PURE__ */ jsxRuntime.jsxs(Root17, { ref, "aria-label": `Ocena ${value} z ${max}`, ...props, children: [
5843
- /* @__PURE__ */ jsxRuntime.jsx(
5844
- Stars,
5845
- {
5846
- role: readonly ? "img" : "radiogroup",
5847
- "aria-label": readonly ? void 0 : "Wybierz ocen\u0119",
5848
- children: Array.from({ length: max }, (_, index) => {
5849
- const starValue = index + 1;
5850
- return /* @__PURE__ */ jsxRuntime.jsx(
5851
- StarButton,
5852
- {
5853
- type: "button",
5854
- $size: size,
5855
- $active: starValue <= roundedValue,
5856
- disabled: readonly,
5857
- "aria-label": `${starValue} z ${max}`,
5858
- "aria-checked": readonly ? void 0 : starValue === roundedValue,
5859
- role: readonly ? void 0 : "radio",
5860
- onClick: () => onChange?.(starValue),
5861
- children: "\u2605"
5862
- },
5863
- starValue
5864
- );
5865
- })
5866
- }
5867
- ),
5868
- meta && /* @__PURE__ */ jsxRuntime.jsx(Meta, { children: meta })
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 })
5869
5885
  ] });
5870
5886
  }
5871
5887
  );
5872
- Rating.displayName = "Rating";
5888
+ ProfileCard.displayName = "ProfileCard";
5873
5889
  var DEFAULT_OMNIBUS_LABEL = "Najni\u017Csza cena z ostatnich 30 dni";
5874
5890
  var FONT_SIZE = {
5875
5891
  sm: "0.875rem",
@@ -6002,147 +6018,150 @@ var Price = react.forwardRef(
6002
6018
  );
6003
6019
  Price.displayName = "Price";
6004
6020
  var priceSizes = ["sm", "md", "lg", "xl"];
6005
- var Root19 = styles.styled(Card)({
6006
- display: "flex",
6007
- flexDirection: "column",
6008
- height: "100%",
6009
- overflow: "hidden"
6010
- });
6011
- var ImageWrap2 = styles.styled("div")({
6012
- position: "relative",
6013
- margin: "-1.5rem -1.5rem 1rem"
6014
- });
6015
- var Image2 = styles.styled("img")(({ theme }) => ({
6016
- objectFit: "cover",
6017
- backgroundColor: theme.palette.action.hover
6021
+ function calcTimeLeft(target) {
6022
+ const diff = new Date(target).getTime() - Date.now();
6023
+ if (diff <= 0) return null;
6024
+ return {
6025
+ days: Math.floor(diff / 864e5),
6026
+ hours: Math.floor(diff % 864e5 / 36e5),
6027
+ minutes: Math.floor(diff % 36e5 / 6e4),
6028
+ seconds: Math.floor(diff % 6e4 / 1e3)
6029
+ };
6030
+ }
6031
+ function pad(n) {
6032
+ return String(n).padStart(2, "0");
6033
+ }
6034
+ var Root19 = styles.styled("div", {
6035
+ shouldForwardProp: (prop) => prop !== "$variant"
6036
+ })(({ theme, $variant }) => ({
6037
+ display: "inline-flex",
6038
+ alignItems: "center",
6039
+ justifyContent: "space-between",
6040
+ flexWrap: "wrap",
6041
+ gap: "0.5rem",
6042
+ fontFamily: theme.typography.fontFamily,
6043
+ ...$variant === "card" && {
6044
+ backgroundColor: theme.palette.background.paper,
6045
+ border: `1px solid ${theme.palette.divider}`,
6046
+ borderRadius: theme.shape.borderRadius,
6047
+ padding: "1rem 1.5rem"
6048
+ },
6049
+ ...$variant === "banner" && {
6050
+ backgroundColor: theme.palette.error.main,
6051
+ color: "#fff",
6052
+ borderRadius: theme.shape.borderRadius,
6053
+ padding: "0.75rem 1.25rem"
6054
+ }
6018
6055
  }));
6019
- var ImagePlaceholder2 = styles.styled("div")(({ theme }) => ({
6020
- width: "100%",
6021
- height: "100%",
6022
- backgroundColor: theme.palette.action.hover,
6056
+ var TimerLabel = styles.styled("span", {
6057
+ shouldForwardProp: (prop) => prop !== "$variant"
6058
+ })(({ theme, $variant }) => ({
6059
+ fontSize: "0.875rem",
6060
+ fontWeight: 600,
6061
+ color: $variant === "banner" ? "rgba(255,255,255,0.85)" : theme.palette.text.secondary,
6062
+ marginRight: "0.25rem"
6063
+ }));
6064
+ var Segments = styles.styled("div")({
6023
6065
  display: "flex",
6024
6066
  alignItems: "center",
6025
- justifyContent: "center",
6026
- color: theme.palette.text.disabled
6027
- }));
6028
- var BadgeSlot = styles.styled("div")({
6029
- position: "absolute",
6030
- left: "0.75rem",
6031
- top: "0.75rem"
6067
+ gap: "0.25rem"
6032
6068
  });
6033
- var Name2 = styles.styled("h3")(({ theme }) => ({
6034
- margin: 0,
6035
- color: theme.palette.text.primary,
6036
- fontFamily: theme.typography.fontFamily,
6037
- fontSize: "1rem",
6069
+ var Segment = styles.styled("div", {
6070
+ shouldForwardProp: (prop) => prop !== "$variant"
6071
+ })(({ theme, $variant }) => ({
6072
+ display: "flex",
6073
+ flexDirection: "column",
6074
+ alignItems: "center",
6075
+ minWidth: "2.5rem",
6076
+ ...$variant === "card" && {
6077
+ backgroundColor: theme.palette.action.hover,
6078
+ borderRadius: "0.375rem",
6079
+ padding: "0.375rem 0.5rem"
6080
+ }
6081
+ }));
6082
+ var Value = styles.styled("span", {
6083
+ shouldForwardProp: (prop) => prop !== "$variant"
6084
+ })(({ $variant }) => ({
6085
+ fontSize: $variant === "inline" ? "1rem" : "1.5rem",
6038
6086
  fontWeight: 700,
6039
- lineHeight: 1.4
6087
+ lineHeight: 1,
6088
+ color: $variant === "banner" ? "#fff" : "inherit"
6040
6089
  }));
6041
- var Footer = styles.styled("div")({
6042
- display: "grid",
6043
- gap: "1rem",
6044
- marginTop: "auto",
6045
- paddingTop: "1rem"
6046
- });
6047
- var ProductCard = react.forwardRef(
6090
+ var Unit = styles.styled("span", {
6091
+ shouldForwardProp: (prop) => prop !== "$variant"
6092
+ })(({ theme, $variant }) => ({
6093
+ fontSize: "0.6875rem",
6094
+ color: $variant === "banner" ? "rgba(255,255,255,0.7)" : theme.palette.text.secondary,
6095
+ marginTop: "0.125rem"
6096
+ }));
6097
+ var Colon = styles.styled("span", {
6098
+ shouldForwardProp: (prop) => prop !== "$variant"
6099
+ })(({ theme, $variant }) => ({
6100
+ fontSize: $variant === "inline" ? "1rem" : "1.5rem",
6101
+ fontWeight: 700,
6102
+ color: $variant === "banner" ? "rgba(255,255,255,0.6)" : theme.palette.text.disabled,
6103
+ alignSelf: $variant === "card" ? "flex-start" : "center",
6104
+ marginTop: $variant === "card" ? "0.375rem" : 0
6105
+ }));
6106
+ var UNITS = ["dni", "godz", "min", "sek"];
6107
+ var CountdownTimer = react.forwardRef(
6048
6108
  ({
6049
- name,
6050
- imageUrl,
6051
- imageAlt,
6052
- price,
6053
- originalPrice,
6054
- currency,
6055
- locale,
6056
- lowestPrice,
6057
- badge,
6058
- badgeVariant = "success",
6059
- rating,
6060
- reviewCount,
6061
- ctaLabel = "Dodaj do koszyka",
6062
- onAddToCart,
6109
+ targetDate,
6110
+ variant = "inline",
6111
+ label,
6112
+ expiredLabel = "Promocja zako\u0144czona",
6113
+ onExpire,
6063
6114
  ...props
6064
- }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(Root19, { ref, variant: "default", padding: "md", rounded: "lg", ...props, children: [
6065
- /* @__PURE__ */ jsxRuntime.jsx(ImageWrap2, { children: /* @__PURE__ */ jsxRuntime.jsxs(AspectRatio, { ratio: "4/3", children: [
6066
- imageUrl ? /* @__PURE__ */ jsxRuntime.jsx(Image2, { src: imageUrl, alt: imageAlt ?? name }) : /* @__PURE__ */ jsxRuntime.jsx(ImagePlaceholder2, { "aria-label": imageAlt ?? name, children: /* @__PURE__ */ jsxRuntime.jsx(ImageIcon__default.default, { style: { fontSize: 48 } }) }),
6067
- badge && /* @__PURE__ */ jsxRuntime.jsx(BadgeSlot, { children: /* @__PURE__ */ jsxRuntime.jsx(Badge2, { variant: badgeVariant, children: badge }) })
6068
- ] }) }),
6069
- /* @__PURE__ */ jsxRuntime.jsx(Name2, { children: name }),
6070
- rating !== void 0 && /* @__PURE__ */ jsxRuntime.jsx(Rating, { value: rating, count: reviewCount, size: "sm" }),
6071
- /* @__PURE__ */ jsxRuntime.jsx(
6072
- Price,
6115
+ }, ref) => {
6116
+ const [timeLeft, setTimeLeft] = react.useState(() => calcTimeLeft(targetDate));
6117
+ react.useEffect(() => {
6118
+ const id = setInterval(() => {
6119
+ const tl = calcTimeLeft(targetDate);
6120
+ setTimeLeft(tl);
6121
+ if (!tl) {
6122
+ clearInterval(id);
6123
+ onExpire?.();
6124
+ }
6125
+ }, 1e3);
6126
+ return () => clearInterval(id);
6127
+ }, [targetDate, onExpire]);
6128
+ if (!timeLeft) {
6129
+ return /* @__PURE__ */ jsxRuntime.jsx(Root19, { ref, $variant: variant, ...props, children: /* @__PURE__ */ jsxRuntime.jsx(TimerLabel, { $variant: variant, children: expiredLabel }) });
6130
+ }
6131
+ const parts = [timeLeft.days, timeLeft.hours, timeLeft.minutes, timeLeft.seconds];
6132
+ return /* @__PURE__ */ jsxRuntime.jsxs(
6133
+ Root19,
6073
6134
  {
6074
- price,
6075
- originalPrice,
6076
- currency,
6077
- locale,
6078
- lowestPrice,
6079
- style: { marginTop: "0.5rem" }
6135
+ ref,
6136
+ $variant: variant,
6137
+ "aria-live": "polite",
6138
+ "aria-label": `Czas do ko\u0144ca promocji`,
6139
+ ...props,
6140
+ children: [
6141
+ label && /* @__PURE__ */ jsxRuntime.jsx(TimerLabel, { $variant: variant, children: label }),
6142
+ /* @__PURE__ */ jsxRuntime.jsx(Segments, { children: parts.map((val, i) => /* @__PURE__ */ jsxRuntime.jsxs("div", { style: { display: "contents" }, children: [
6143
+ i > 0 && /* @__PURE__ */ jsxRuntime.jsx(Colon, { $variant: variant, children: ":" }),
6144
+ /* @__PURE__ */ jsxRuntime.jsxs(Segment, { $variant: variant, children: [
6145
+ /* @__PURE__ */ jsxRuntime.jsx(Value, { $variant: variant, children: pad(val) }),
6146
+ variant !== "inline" && /* @__PURE__ */ jsxRuntime.jsx(Unit, { $variant: variant, children: UNITS[i] })
6147
+ ] })
6148
+ ] }, UNITS[i])) })
6149
+ ]
6080
6150
  }
6081
- ),
6082
- /* @__PURE__ */ jsxRuntime.jsx(Footer, { children: /* @__PURE__ */ jsxRuntime.jsx(Button, { fullWidth: true, onClick: (e) => {
6083
- e.stopPropagation();
6084
- onAddToCart?.();
6085
- }, children: ctaLabel }) })
6086
- ] })
6151
+ );
6152
+ }
6087
6153
  );
6088
- ProductCard.displayName = "ProductCard";
6089
- var COLLAPSE_AT = "480px";
6090
- var ContainerRoot = styles.styled("div")({
6091
- containerType: "inline-size",
6092
- width: "100%",
6093
- height: "100%"
6094
- });
6095
- var Inner = styles.styled("div")({
6154
+ CountdownTimer.displayName = "CountdownTimer";
6155
+ var countdownTimerVariants = ["inline", "card", "banner"];
6156
+ var Root20 = styles.styled(Card)({
6096
6157
  display: "flex",
6097
- flexDirection: "row",
6158
+ flexDirection: "column",
6098
6159
  height: "100%",
6099
- [`@container (max-width: ${COLLAPSE_AT})`]: {
6100
- flexDirection: "column"
6101
- }
6160
+ overflow: "hidden"
6102
6161
  });
6103
- var ImageWrap3 = styles.styled("div")({
6162
+ var ImageWrap2 = styles.styled("div")({
6104
6163
  position: "relative",
6105
- flexShrink: 0,
6106
- width: "clamp(120px, 33%, 200px)",
6107
- alignSelf: "stretch",
6108
- margin: "-1.5rem 1rem -1.5rem -1.5rem",
6109
- [`@container (max-width: ${COLLAPSE_AT})`]: {
6110
- width: "auto",
6111
- alignSelf: "auto",
6112
- margin: "-1.5rem -1.5rem 1rem",
6113
- aspectRatio: "4 / 3"
6114
- }
6115
- });
6116
- var Image3 = styles.styled("img")(({ theme }) => ({
6117
- position: "absolute",
6118
- inset: 0,
6119
- width: "100%",
6120
- height: "100%",
6121
- objectFit: "cover",
6122
- backgroundColor: theme.palette.action.hover
6123
- }));
6124
- var ImagePlaceholder3 = styles.styled("div")(({ theme }) => ({
6125
- position: "absolute",
6126
- inset: 0,
6127
- width: "100%",
6128
- height: "100%",
6129
- backgroundColor: theme.palette.action.hover,
6130
- display: "flex",
6131
- alignItems: "center",
6132
- justifyContent: "center",
6133
- color: theme.palette.text.disabled
6134
- }));
6135
- var BadgeSlot2 = styles.styled("div")({
6136
- position: "absolute",
6137
- left: "0.75rem",
6138
- top: "0.75rem",
6139
- zIndex: 1
6140
- });
6141
- var Content2 = styles.styled("div")({
6142
- display: "flex",
6143
- flexDirection: "column",
6144
- flex: 1,
6145
- minWidth: 0
6164
+ margin: "-1.5rem -1.5rem 1rem"
6146
6165
  });
6147
6166
  var Name3 = styles.styled("h3")(({ theme }) => ({
6148
6167
  margin: 0,
@@ -6152,13 +6171,13 @@ var Name3 = styles.styled("h3")(({ theme }) => ({
6152
6171
  fontWeight: 700,
6153
6172
  lineHeight: 1.4
6154
6173
  }));
6155
- var Footer2 = styles.styled("div")({
6174
+ var Footer = styles.styled("div")({
6156
6175
  display: "grid",
6157
6176
  gap: "1rem",
6158
6177
  marginTop: "auto",
6159
6178
  paddingTop: "1rem"
6160
6179
  });
6161
- var ProductCardHorizontal = react.forwardRef(
6180
+ var DealCard = react.forwardRef(
6162
6181
  ({
6163
6182
  name,
6164
6183
  imageUrl,
@@ -6167,22 +6186,14 @@ var ProductCardHorizontal = react.forwardRef(
6167
6186
  originalPrice,
6168
6187
  currency,
6169
6188
  locale,
6170
- lowestPrice,
6171
- badge,
6172
- badgeVariant = "success",
6173
- rating,
6174
- reviewCount,
6175
- ctaLabel = "Dodaj do koszyka",
6189
+ dealEndsAt,
6190
+ ctaLabel = "Kup teraz",
6176
6191
  onAddToCart,
6177
6192
  ...props
6178
- }, ref) => /* @__PURE__ */ jsxRuntime.jsx(Card, { ref, variant: "default", padding: "md", rounded: "lg", ...props, children: /* @__PURE__ */ jsxRuntime.jsx(ContainerRoot, { children: /* @__PURE__ */ jsxRuntime.jsxs(Inner, { children: [
6179
- /* @__PURE__ */ jsxRuntime.jsxs(ImageWrap3, { children: [
6180
- imageUrl ? /* @__PURE__ */ jsxRuntime.jsx(Image3, { src: imageUrl, alt: imageAlt ?? name }) : /* @__PURE__ */ jsxRuntime.jsx(ImagePlaceholder3, { "aria-label": imageAlt ?? name, children: /* @__PURE__ */ jsxRuntime.jsx(ImageIcon__default.default, { style: { fontSize: 48 } }) }),
6181
- badge && /* @__PURE__ */ jsxRuntime.jsx(BadgeSlot2, { children: /* @__PURE__ */ jsxRuntime.jsx(Badge2, { variant: badgeVariant, children: badge }) })
6182
- ] }),
6183
- /* @__PURE__ */ jsxRuntime.jsxs(Content2, { children: [
6193
+ }, ref) => {
6194
+ return /* @__PURE__ */ jsxRuntime.jsxs(Root20, { ref, variant: "default", padding: "md", rounded: "lg", ...props, children: [
6195
+ /* @__PURE__ */ jsxRuntime.jsx(ImageWrap2, { children: /* @__PURE__ */ jsxRuntime.jsx(ProductCardImage, { src: imageUrl, alt: imageAlt ?? name }) }),
6184
6196
  /* @__PURE__ */ jsxRuntime.jsx(Name3, { children: name }),
6185
- rating !== void 0 && /* @__PURE__ */ jsxRuntime.jsx(Rating, { value: rating, count: reviewCount, size: "sm" }),
6186
6197
  /* @__PURE__ */ jsxRuntime.jsx(
6187
6198
  Price,
6188
6199
  {
@@ -6190,14 +6201,22 @@ var ProductCardHorizontal = react.forwardRef(
6190
6201
  originalPrice,
6191
6202
  currency,
6192
6203
  locale,
6193
- lowestPrice,
6194
6204
  style: { marginTop: "0.5rem" }
6195
6205
  }
6196
6206
  ),
6197
- /* @__PURE__ */ jsxRuntime.jsx(Footer2, { children: /* @__PURE__ */ jsxRuntime.jsx(
6207
+ dealEndsAt && /* @__PURE__ */ jsxRuntime.jsx(
6208
+ CountdownTimer,
6209
+ {
6210
+ targetDate: dealEndsAt,
6211
+ label: "Oferta ko\u0144czy si\u0119 za:",
6212
+ style: { marginTop: "0.75rem" }
6213
+ }
6214
+ ),
6215
+ /* @__PURE__ */ jsxRuntime.jsx(Footer, { children: /* @__PURE__ */ jsxRuntime.jsx(
6198
6216
  Button,
6199
6217
  {
6200
6218
  fullWidth: true,
6219
+ variant: "primary",
6201
6220
  onClick: (e) => {
6202
6221
  e.stopPropagation();
6203
6222
  onAddToCart?.();
@@ -6205,10 +6224,10 @@ var ProductCardHorizontal = react.forwardRef(
6205
6224
  children: ctaLabel
6206
6225
  }
6207
6226
  ) })
6208
- ] })
6209
- ] }) }) })
6227
+ ] });
6228
+ }
6210
6229
  );
6211
- ProductCardHorizontal.displayName = "ProductCardHorizontal";
6230
+ DealCard.displayName = "DealCard";
6212
6231
  var ImageWrapper = styles.styled("div", {
6213
6232
  shouldForwardProp: (prop) => prop !== "$ar"
6214
6233
  })(({ $ar }) => ({
@@ -6218,13 +6237,13 @@ var ImageWrapper = styles.styled("div", {
6218
6237
  overflow: "hidden",
6219
6238
  flexShrink: 0
6220
6239
  }));
6221
- var Img = styles.styled("img")({
6240
+ var Img2 = styles.styled("img")({
6222
6241
  width: "100%",
6223
6242
  height: "100%",
6224
6243
  objectFit: "cover",
6225
6244
  display: "block"
6226
6245
  });
6227
- var Placeholder2 = styles.styled("div")(({ theme }) => ({
6246
+ var Placeholder3 = styles.styled("div")(({ theme }) => ({
6228
6247
  width: "100%",
6229
6248
  height: "100%",
6230
6249
  display: "flex",
@@ -6254,7 +6273,7 @@ var PostCardImage = ({
6254
6273
  const [imgError, setImgError] = react.useState(false);
6255
6274
  const showPlaceholder = !src || imgError;
6256
6275
  return /* @__PURE__ */ jsxRuntime.jsxs(ImageWrapper, { $ar: toAspectRatioCss(aspectRatio), className, style, children: [
6257
- showPlaceholder ? /* @__PURE__ */ jsxRuntime.jsx(Placeholder2, { children: /* @__PURE__ */ jsxRuntime.jsx(FileTextIcon, {}) }) : /* @__PURE__ */ jsxRuntime.jsx(Img, { src, alt, onError: () => setImgError(true) }),
6276
+ showPlaceholder ? /* @__PURE__ */ jsxRuntime.jsx(Placeholder3, { children: /* @__PURE__ */ jsxRuntime.jsx(FileTextIcon, {}) }) : /* @__PURE__ */ jsxRuntime.jsx(Img2, { src, alt, onError: () => setImgError(true) }),
6258
6277
  overlay && !showPlaceholder && /* @__PURE__ */ jsxRuntime.jsx(Overlay, {})
6259
6278
  ] });
6260
6279
  };
@@ -6424,6 +6443,7 @@ var PostCard = react.forwardRef(
6424
6443
  author,
6425
6444
  href,
6426
6445
  category,
6446
+ categoryBadgeVariant,
6427
6447
  variant = "vertical",
6428
6448
  cardVariant = "default",
6429
6449
  ...rest
@@ -6435,7 +6455,7 @@ var PostCard = react.forwardRef(
6435
6455
  isFeatured && showImage && /* @__PURE__ */ jsxRuntime.jsx(FeaturedImageWrapper, { children: /* @__PURE__ */ jsxRuntime.jsx(PostCardImage, { src: imageUrl, alt: imageAlt, aspectRatio: "16/9", overlay: true }) }),
6436
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" })),
6437
6457
  /* @__PURE__ */ jsxRuntime.jsxs(StyledContent, { $variant: variant, children: [
6438
- 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 }) }),
6439
6459
  /* @__PURE__ */ jsxRuntime.jsx(StyledTitle, { className: "post-card-title", $featured: isFeatured, children: title }),
6440
6460
  excerpt && variant !== "compact" && !isFeatured && /* @__PURE__ */ jsxRuntime.jsx(StyledExcerpt, { children: excerpt }),
6441
6461
  (date || author) && /* @__PURE__ */ jsxRuntime.jsx(PostCardMeta, { date, author, inverted: isFeatured })
@@ -6453,25 +6473,7 @@ var postCardVariants = [
6453
6473
  "featured",
6454
6474
  "compact"
6455
6475
  ];
6456
- var Root20 = styles.styled(Card)({
6457
- display: "flex",
6458
- flexDirection: "column",
6459
- height: "100%"
6460
- });
6461
- var NameRow = styles.styled("div")({
6462
- display: "flex",
6463
- alignItems: "center",
6464
- justifyContent: "space-between",
6465
- marginBottom: "0.75rem"
6466
- });
6467
- var Name4 = styles.styled("p")(({ theme }) => ({
6468
- margin: 0,
6469
- fontFamily: theme.typography.fontFamily,
6470
- fontWeight: 600,
6471
- fontSize: "1rem",
6472
- color: theme.palette.text.primary
6473
- }));
6474
- var PriceRow2 = styles.styled("div")({
6476
+ var Row3 = styles.styled("div")({
6475
6477
  display: "flex",
6476
6478
  alignItems: "baseline",
6477
6479
  gap: "0.25rem"
@@ -6484,7 +6486,7 @@ var Currency = styles.styled("span")(({ theme }) => ({
6484
6486
  alignSelf: "flex-start",
6485
6487
  paddingTop: "0.375rem"
6486
6488
  }));
6487
- var Price2 = styles.styled("span")(({ theme }) => ({
6489
+ var Amount = styles.styled("span")(({ theme }) => ({
6488
6490
  fontFamily: theme.typography.fontFamily,
6489
6491
  fontWeight: 700,
6490
6492
  fontSize: "3rem",
@@ -6496,28 +6498,21 @@ var Period = styles.styled("span")(({ theme }) => ({
6496
6498
  fontSize: "0.875rem",
6497
6499
  color: theme.palette.text.secondary
6498
6500
  }));
6499
- var Description2 = styles.styled("p")(({ theme }) => ({
6500
- margin: "0.75rem 0 0",
6501
- fontFamily: theme.typography.fontFamily,
6502
- fontSize: "0.875rem",
6503
- color: theme.palette.text.secondary,
6504
- lineHeight: 1.6
6505
- }));
6506
- var Divider2 = styles.styled("hr")(({ theme }) => ({
6507
- border: "none",
6508
- borderTop: `1px solid ${theme.palette.divider}`,
6509
- margin: "1.25rem 0"
6510
- }));
6511
- var FeatureList = styles.styled("ul")({
6501
+ var PricingCardPrice = ({ price, currency, period }) => /* @__PURE__ */ jsxRuntime.jsxs(Row3, { children: [
6502
+ currency && /* @__PURE__ */ jsxRuntime.jsx(Currency, { children: currency }),
6503
+ /* @__PURE__ */ jsxRuntime.jsx(Amount, { children: price }),
6504
+ period && /* @__PURE__ */ jsxRuntime.jsx(Period, { children: period })
6505
+ ] });
6506
+ PricingCardPrice.displayName = "PricingCardPrice";
6507
+ var List = styles.styled("ul")({
6512
6508
  listStyle: "none",
6513
6509
  margin: 0,
6514
6510
  padding: 0,
6515
6511
  display: "flex",
6516
6512
  flexDirection: "column",
6517
- gap: "0.625rem",
6518
- flex: 1
6513
+ gap: "0.625rem"
6519
6514
  });
6520
- var FeatureItem = styles.styled("li", {
6515
+ var Item = styles.styled("li", {
6521
6516
  shouldForwardProp: (prop) => prop !== "$included"
6522
6517
  })(({ theme, $included }) => ({
6523
6518
  display: "flex",
@@ -6527,6 +6522,50 @@ var FeatureItem = styles.styled("li", {
6527
6522
  fontSize: "0.875rem",
6528
6523
  color: $included ? theme.palette.text.primary : theme.palette.text.disabled
6529
6524
  }));
6525
+ function CheckIcon3() {
6526
+ return /* @__PURE__ */ jsxRuntime.jsx(CheckCircleOutlinedIcon__default.default, { "aria-hidden": "true", style: { fontSize: 16, flexShrink: 0 } });
6527
+ }
6528
+ function XIcon3() {
6529
+ return /* @__PURE__ */ jsxRuntime.jsx(HighlightOffIcon__default.default, { "aria-hidden": "true", style: { fontSize: 16, flexShrink: 0 } });
6530
+ }
6531
+ var PricingCardFeatureList = ({ features }) => /* @__PURE__ */ jsxRuntime.jsx(List, { children: features.map((feature, i) => {
6532
+ const included = feature.included !== false;
6533
+ return /* @__PURE__ */ jsxRuntime.jsxs(Item, { $included: included, children: [
6534
+ included ? /* @__PURE__ */ jsxRuntime.jsx(CheckIcon3, {}) : /* @__PURE__ */ jsxRuntime.jsx(XIcon3, {}),
6535
+ feature.text
6536
+ ] }, i);
6537
+ }) });
6538
+ PricingCardFeatureList.displayName = "PricingCardFeatureList";
6539
+ var Root21 = styles.styled(Card)({
6540
+ display: "flex",
6541
+ flexDirection: "column",
6542
+ height: "100%"
6543
+ });
6544
+ var NameRow = styles.styled("div")({
6545
+ display: "flex",
6546
+ alignItems: "center",
6547
+ justifyContent: "space-between",
6548
+ marginBottom: "0.75rem"
6549
+ });
6550
+ var Name4 = styles.styled("p")(({ theme }) => ({
6551
+ margin: 0,
6552
+ fontFamily: theme.typography.fontFamily,
6553
+ fontWeight: 600,
6554
+ fontSize: "1rem",
6555
+ color: theme.palette.text.primary
6556
+ }));
6557
+ var Description2 = styles.styled("p")(({ theme }) => ({
6558
+ margin: "0.75rem 0 0",
6559
+ fontFamily: theme.typography.fontFamily,
6560
+ fontSize: "0.875rem",
6561
+ color: theme.palette.text.secondary,
6562
+ lineHeight: 1.6
6563
+ }));
6564
+ var Divider2 = styles.styled("hr")(({ theme }) => ({
6565
+ border: "none",
6566
+ borderTop: `1px solid ${theme.palette.divider}`,
6567
+ margin: "1.25rem 0"
6568
+ }));
6530
6569
  var CtaLink = styles.styled("a", {
6531
6570
  shouldForwardProp: (prop) => prop !== "$variant"
6532
6571
  })(({ theme, $variant }) => ({
@@ -6559,12 +6598,6 @@ var CtaLink = styles.styled("a", {
6559
6598
  var CtaWrapper = styles.styled("div")({
6560
6599
  marginTop: "1.5rem"
6561
6600
  });
6562
- function CheckIcon3() {
6563
- return /* @__PURE__ */ jsxRuntime.jsx(CheckCircleOutlinedIcon__default.default, { "aria-hidden": "true", style: { fontSize: 16, flexShrink: 0 } });
6564
- }
6565
- function XIcon3() {
6566
- return /* @__PURE__ */ jsxRuntime.jsx(HighlightOffIcon__default.default, { "aria-hidden": "true", style: { fontSize: 16, flexShrink: 0 } });
6567
- }
6568
6601
  var PricingCard = react.forwardRef(
6569
6602
  ({
6570
6603
  name,
@@ -6579,44 +6612,320 @@ var PricingCard = react.forwardRef(
6579
6612
  href,
6580
6613
  popular = false,
6581
6614
  popularLabel = "Najpopularniejszy",
6615
+ popularBadgeVariant = "default",
6582
6616
  cardVariant,
6583
6617
  ...props
6584
6618
  }, ref) => {
6585
6619
  const resolvedCardVariant = cardVariant ?? (popular ? "gradient-primary" : "default");
6586
6620
  const resolvedCtaVariant = ctaVariant ?? (popular ? "primary" : "ghost");
6587
- return /* @__PURE__ */ jsxRuntime.jsxs(Root20, { ref, variant: resolvedCardVariant, padding: "lg", rounded: "lg", ...props, children: [
6621
+ return /* @__PURE__ */ jsxRuntime.jsxs(Root21, { ref, variant: resolvedCardVariant, padding: "lg", rounded: "lg", ...props, children: [
6588
6622
  /* @__PURE__ */ jsxRuntime.jsxs(NameRow, { children: [
6589
6623
  /* @__PURE__ */ jsxRuntime.jsx(Name4, { children: name }),
6590
- popular && /* @__PURE__ */ jsxRuntime.jsx(Badge2, { variant: "default", children: popularLabel })
6591
- ] }),
6592
- /* @__PURE__ */ jsxRuntime.jsxs(PriceRow2, { children: [
6593
- currency && /* @__PURE__ */ jsxRuntime.jsx(Currency, { children: currency }),
6594
- /* @__PURE__ */ jsxRuntime.jsx(Price2, { children: price }),
6595
- period && /* @__PURE__ */ jsxRuntime.jsx(Period, { children: period })
6624
+ popular && /* @__PURE__ */ jsxRuntime.jsx(Badge2, { variant: popularBadgeVariant, children: popularLabel })
6596
6625
  ] }),
6626
+ /* @__PURE__ */ jsxRuntime.jsx(PricingCardPrice, { price, currency, period }),
6597
6627
  description && /* @__PURE__ */ jsxRuntime.jsx(Description2, { children: description }),
6598
6628
  features.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
6599
6629
  /* @__PURE__ */ jsxRuntime.jsx(Divider2, {}),
6600
- /* @__PURE__ */ jsxRuntime.jsx(FeatureList, { children: features.map((feature, i) => {
6601
- const included = feature.included !== false;
6602
- return /* @__PURE__ */ jsxRuntime.jsxs(FeatureItem, { $included: included, children: [
6603
- included ? /* @__PURE__ */ jsxRuntime.jsx(CheckIcon3, {}) : /* @__PURE__ */ jsxRuntime.jsx(XIcon3, {}),
6604
- feature.text
6605
- ] }, i);
6606
- }) })
6630
+ /* @__PURE__ */ jsxRuntime.jsx(PricingCardFeatureList, { features })
6607
6631
  ] }),
6608
6632
  /* @__PURE__ */ jsxRuntime.jsx(CtaWrapper, { children: href ? /* @__PURE__ */ jsxRuntime.jsx(CtaLink, { href, $variant: resolvedCtaVariant, children: ctaLabel }) : /* @__PURE__ */ jsxRuntime.jsx(Button, { variant: resolvedCtaVariant, fullWidth: true, onClick: onCtaClick, children: ctaLabel }) })
6609
6633
  ] });
6610
6634
  }
6611
6635
  );
6612
6636
  PricingCard.displayName = "PricingCard";
6613
- var Root21 = styles.styled(Card, {
6637
+ var sizeMap6 = {
6638
+ sm: "1rem",
6639
+ md: "1.25rem",
6640
+ lg: "1.5rem"
6641
+ };
6642
+ var Root22 = styles.styled("div")(({ theme }) => ({
6643
+ display: "inline-flex",
6644
+ alignItems: "center",
6645
+ gap: "0.5rem",
6646
+ color: theme.palette.text.secondary,
6647
+ fontFamily: theme.typography.fontFamily
6648
+ }));
6649
+ var Stars = styles.styled("div")({
6650
+ display: "inline-flex",
6651
+ alignItems: "center",
6652
+ gap: "0.125rem"
6653
+ });
6654
+ var StarButton = styles.styled("button")(
6655
+ ({ theme, $size, $active }) => ({
6656
+ appearance: "none",
6657
+ border: 0,
6658
+ background: "transparent",
6659
+ padding: 0,
6660
+ color: $active ? "#f59e0b" : theme.palette.action.disabled,
6661
+ cursor: "pointer",
6662
+ fontSize: sizeMap6[$size],
6663
+ lineHeight: 1,
6664
+ "&:disabled": {
6665
+ cursor: "default"
6666
+ }
6667
+ })
6668
+ );
6669
+ var Meta = styles.styled("span")(({ theme }) => ({
6670
+ fontSize: "0.875rem",
6671
+ color: theme.palette.text.secondary
6672
+ }));
6673
+ var Rating = react.forwardRef(
6674
+ ({ value, max = 5, readonly = true, size = "md", label, count, onChange, ...props }, ref) => {
6675
+ const roundedValue = Math.round(value);
6676
+ const meta = label ?? (count !== void 0 ? `(${count})` : void 0);
6677
+ return /* @__PURE__ */ jsxRuntime.jsxs(Root22, { ref, "aria-label": `Ocena ${value} z ${max}`, ...props, children: [
6678
+ /* @__PURE__ */ jsxRuntime.jsx(
6679
+ Stars,
6680
+ {
6681
+ role: readonly ? "img" : "radiogroup",
6682
+ "aria-label": readonly ? void 0 : "Wybierz ocen\u0119",
6683
+ children: Array.from({ length: max }, (_, index) => {
6684
+ const starValue = index + 1;
6685
+ return /* @__PURE__ */ jsxRuntime.jsx(
6686
+ StarButton,
6687
+ {
6688
+ type: "button",
6689
+ $size: size,
6690
+ $active: starValue <= roundedValue,
6691
+ disabled: readonly,
6692
+ "aria-label": `${starValue} z ${max}`,
6693
+ "aria-checked": readonly ? void 0 : starValue === roundedValue,
6694
+ role: readonly ? void 0 : "radio",
6695
+ onClick: () => onChange?.(starValue),
6696
+ children: "\u2605"
6697
+ },
6698
+ starValue
6699
+ );
6700
+ })
6701
+ }
6702
+ ),
6703
+ meta && /* @__PURE__ */ jsxRuntime.jsx(Meta, { children: meta })
6704
+ ] });
6705
+ }
6706
+ );
6707
+ Rating.displayName = "Rating";
6708
+ var Container2 = styles.styled("div")({
6709
+ width: "100%",
6710
+ height: "100%"
6711
+ });
6712
+ var Img3 = styles.styled("img")(({ theme }) => ({
6713
+ position: "absolute",
6714
+ inset: 0,
6715
+ width: "100%",
6716
+ height: "100%",
6717
+ objectFit: "cover",
6718
+ backgroundColor: theme.palette.action.hover
6719
+ }));
6720
+ var Placeholder4 = styles.styled("div")(({ theme }) => ({
6721
+ position: "absolute",
6722
+ inset: 0,
6723
+ width: "100%",
6724
+ height: "100%",
6725
+ backgroundColor: theme.palette.action.hover,
6726
+ display: "flex",
6727
+ alignItems: "center",
6728
+ justifyContent: "center",
6729
+ color: theme.palette.text.disabled
6730
+ }));
6731
+ var BadgeSlot = styles.styled("div")({
6732
+ position: "absolute",
6733
+ left: "0.75rem",
6734
+ top: "0.75rem",
6735
+ zIndex: 1
6736
+ });
6737
+ var ProductCardImage = ({
6738
+ src,
6739
+ alt,
6740
+ badge,
6741
+ badgeVariant = "success"
6742
+ }) => /* @__PURE__ */ jsxRuntime.jsxs(Container2, { children: [
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 } }) }),
6744
+ badge && /* @__PURE__ */ jsxRuntime.jsx(BadgeSlot, { children: /* @__PURE__ */ jsxRuntime.jsx(Badge2, { variant: badgeVariant, children: badge }) })
6745
+ ] });
6746
+ ProductCardImage.displayName = "ProductCardImage";
6747
+ var Root23 = styles.styled(Card)({
6748
+ display: "flex",
6749
+ flexDirection: "column",
6750
+ height: "100%",
6751
+ overflow: "hidden"
6752
+ });
6753
+ var Name5 = styles.styled("h3")(({ theme }) => ({
6754
+ margin: 0,
6755
+ color: theme.palette.text.primary,
6756
+ fontFamily: theme.typography.fontFamily,
6757
+ fontSize: "1rem",
6758
+ fontWeight: 700,
6759
+ lineHeight: 1.4
6760
+ }));
6761
+ var Footer2 = styles.styled("div")({
6762
+ display: "grid",
6763
+ gap: "1rem",
6764
+ marginTop: "auto",
6765
+ paddingTop: "1rem"
6766
+ });
6767
+ var ProductCard = react.forwardRef(
6768
+ ({
6769
+ name,
6770
+ imageUrl,
6771
+ imageAlt,
6772
+ price,
6773
+ originalPrice,
6774
+ currency,
6775
+ locale,
6776
+ lowestPrice,
6777
+ badge,
6778
+ badgeVariant = "success",
6779
+ imageRatio = "4/3",
6780
+ rating,
6781
+ reviewCount,
6782
+ ctaLabel = "Dodaj do koszyka",
6783
+ onAddToCart,
6784
+ buttonVariant = "primary",
6785
+ disabledButton = false,
6786
+ hideButton = false,
6787
+ ...props
6788
+ }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(Root23, { ref, variant: "default", padding: "md", rounded: "lg", ...props, children: [
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 }),
6799
+ rating !== void 0 && /* @__PURE__ */ jsxRuntime.jsx(Rating, { value: rating, count: reviewCount, size: "sm" }),
6800
+ /* @__PURE__ */ jsxRuntime.jsx(
6801
+ Price,
6802
+ {
6803
+ price,
6804
+ originalPrice,
6805
+ currency,
6806
+ locale,
6807
+ lowestPrice,
6808
+ style: { marginTop: "0.5rem" }
6809
+ }
6810
+ ),
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
+ ) })
6824
+ ] })
6825
+ );
6826
+ ProductCard.displayName = "ProductCard";
6827
+ var COLLAPSE_AT = "480px";
6828
+ var ContainerRoot = styles.styled("div")({
6829
+ containerType: "inline-size",
6830
+ width: "100%",
6831
+ height: "100%"
6832
+ });
6833
+ var Inner = styles.styled("div")({
6834
+ display: "flex",
6835
+ flexDirection: "row",
6836
+ height: "100%",
6837
+ [`@container (max-width: ${COLLAPSE_AT})`]: {
6838
+ flexDirection: "column"
6839
+ }
6840
+ });
6841
+ var ImageWrap3 = styles.styled("div")({
6842
+ position: "relative",
6843
+ flexShrink: 0,
6844
+ width: "clamp(120px, 33%, 200px)",
6845
+ alignSelf: "stretch",
6846
+ margin: "-1.5rem 1rem -1.5rem -1.5rem",
6847
+ [`@container (max-width: ${COLLAPSE_AT})`]: {
6848
+ width: "auto",
6849
+ alignSelf: "auto",
6850
+ margin: "-1.5rem -1.5rem 1rem",
6851
+ aspectRatio: "4 / 3"
6852
+ }
6853
+ });
6854
+ var Content = styles.styled("div")({
6855
+ display: "flex",
6856
+ flexDirection: "column",
6857
+ flex: 1,
6858
+ minWidth: 0
6859
+ });
6860
+ var Name6 = styles.styled("h3")(({ theme }) => ({
6861
+ margin: 0,
6862
+ color: theme.palette.text.primary,
6863
+ fontFamily: theme.typography.fontFamily,
6864
+ fontSize: "1rem",
6865
+ fontWeight: 700,
6866
+ lineHeight: 1.4
6867
+ }));
6868
+ var Footer3 = styles.styled("div")({
6869
+ display: "grid",
6870
+ gap: "1rem",
6871
+ marginTop: "auto",
6872
+ paddingTop: "1rem"
6873
+ });
6874
+ var ProductCardHorizontal = react.forwardRef(
6875
+ ({
6876
+ name,
6877
+ imageUrl,
6878
+ imageAlt,
6879
+ price,
6880
+ originalPrice,
6881
+ currency,
6882
+ locale,
6883
+ lowestPrice,
6884
+ badge,
6885
+ badgeVariant = "success",
6886
+ rating,
6887
+ reviewCount,
6888
+ ctaLabel = "Dodaj do koszyka",
6889
+ onAddToCart,
6890
+ ...props
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: [
6892
+ /* @__PURE__ */ jsxRuntime.jsx(ImageWrap3, { children: /* @__PURE__ */ jsxRuntime.jsx(ProductCardImage, { src: imageUrl, alt: imageAlt ?? name, badge, badgeVariant }) }),
6893
+ /* @__PURE__ */ jsxRuntime.jsxs(Content, { children: [
6894
+ /* @__PURE__ */ jsxRuntime.jsx(Name6, { children: name }),
6895
+ rating !== void 0 && /* @__PURE__ */ jsxRuntime.jsx(Rating, { value: rating, count: reviewCount, size: "sm" }),
6896
+ /* @__PURE__ */ jsxRuntime.jsx(
6897
+ Price,
6898
+ {
6899
+ price,
6900
+ originalPrice,
6901
+ currency,
6902
+ locale,
6903
+ lowestPrice,
6904
+ style: { marginTop: "0.5rem" }
6905
+ }
6906
+ ),
6907
+ /* @__PURE__ */ jsxRuntime.jsx(Footer3, { children: /* @__PURE__ */ jsxRuntime.jsx(
6908
+ Button,
6909
+ {
6910
+ fullWidth: true,
6911
+ onClick: (e) => {
6912
+ e.stopPropagation();
6913
+ onAddToCart?.();
6914
+ },
6915
+ children: ctaLabel
6916
+ }
6917
+ ) })
6918
+ ] })
6919
+ ] }) }) })
6920
+ );
6921
+ ProductCardHorizontal.displayName = "ProductCardHorizontal";
6922
+ var Root24 = styles.styled(Card, {
6614
6923
  shouldForwardProp: (prop) => prop !== "$align"
6615
6924
  })(({ $align }) => ({
6616
6925
  textAlign: $align,
6617
6926
  height: "100%"
6618
6927
  }));
6619
- var Value = styles.styled("p")(({ theme }) => ({
6928
+ var Value2 = styles.styled("p")(({ theme }) => ({
6620
6929
  margin: 0,
6621
6930
  fontFamily: theme.typography.fontFamily,
6622
6931
  fontSize: "2.5rem",
@@ -6640,19 +6949,85 @@ var Description3 = styles.styled("p")(({ theme }) => ({
6640
6949
  lineHeight: 1.5
6641
6950
  }));
6642
6951
  var StatCard = react.forwardRef(
6643
- ({ stat, cardVariant = "default", align = "center", ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(Root21, { ref, variant: cardVariant, padding: "lg", rounded: "lg", $align: align, ...props, children: [
6644
- /* @__PURE__ */ jsxRuntime.jsx(Value, { children: stat.value }),
6952
+ ({ stat, cardVariant = "default", align = "center", ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(Root24, { ref, variant: cardVariant, padding: "lg", rounded: "lg", $align: align, ...props, children: [
6953
+ /* @__PURE__ */ jsxRuntime.jsx(Value2, { children: stat.value }),
6645
6954
  /* @__PURE__ */ jsxRuntime.jsx(Label3, { children: stat.label }),
6646
6955
  stat.description && /* @__PURE__ */ jsxRuntime.jsx(Description3, { children: stat.description })
6647
6956
  ] })
6648
6957
  );
6649
- StatCard.displayName = "StatCard";
6650
- var Root22 = styles.styled(Card)({
6651
- display: "flex",
6652
- flexDirection: "column",
6653
- gap: "1.25rem",
6654
- height: "100%"
6655
- });
6958
+ StatCard.displayName = "StatCard";
6959
+ var Img4 = styles.styled("img")({
6960
+ width: "4rem",
6961
+ height: "4rem",
6962
+ flexShrink: 0,
6963
+ borderRadius: "50%",
6964
+ objectFit: "cover"
6965
+ });
6966
+ function deriveInitials2(name) {
6967
+ return name.split(" ").filter(Boolean).slice(0, 2).map((part) => part[0]).join("").toUpperCase();
6968
+ }
6969
+ var TeamMemberAvatar = ({
6970
+ name,
6971
+ avatarUrl,
6972
+ avatarAlt,
6973
+ initials,
6974
+ avatarColor = "primary"
6975
+ }) => {
6976
+ if (avatarUrl) {
6977
+ return /* @__PURE__ */ jsxRuntime.jsx(Img4, { src: avatarUrl, alt: avatarAlt ?? name });
6978
+ }
6979
+ return /* @__PURE__ */ jsxRuntime.jsx(Avatar, { initials: initials ?? deriveInitials2(name), size: "xl", color: avatarColor });
6980
+ };
6981
+ TeamMemberAvatar.displayName = "TeamMemberAvatar";
6982
+ var Root25 = styles.styled("div")({ minWidth: 0 });
6983
+ var Name7 = styles.styled("h3")(({ theme }) => ({
6984
+ margin: 0,
6985
+ color: theme.palette.text.primary,
6986
+ fontFamily: theme.typography.fontFamily,
6987
+ fontSize: "1rem",
6988
+ fontWeight: 700,
6989
+ lineHeight: 1.4
6990
+ }));
6991
+ var Role = styles.styled("p")(({ theme }) => ({
6992
+ margin: "0.25rem 0 0",
6993
+ color: theme.palette.text.secondary,
6994
+ fontFamily: theme.typography.fontFamily,
6995
+ fontSize: "0.875rem",
6996
+ lineHeight: 1.5
6997
+ }));
6998
+ var TeamMemberInfo = ({ name, role }) => /* @__PURE__ */ jsxRuntime.jsxs(Root25, { children: [
6999
+ /* @__PURE__ */ jsxRuntime.jsx(Name7, { children: name }),
7000
+ role && /* @__PURE__ */ jsxRuntime.jsx(Role, { children: role })
7001
+ ] });
7002
+ TeamMemberInfo.displayName = "TeamMemberInfo";
7003
+ var Root26 = styles.styled(Card)(({ theme }) => ({
7004
+ display: "flex",
7005
+ alignItems: "center",
7006
+ gap: "1rem",
7007
+ height: "100%",
7008
+ transition: "border-color 0.2s ease, box-shadow 0.2s ease, transform 0.2s ease",
7009
+ "&:hover": {
7010
+ borderColor: theme.palette.primary.main,
7011
+ boxShadow: theme.shadows[2],
7012
+ transform: "translateY(-2px)"
7013
+ }
7014
+ }));
7015
+ var TeamMemberCard = react.forwardRef(
7016
+ ({ member, cardVariant = "default", ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(Root26, { ref, variant: cardVariant, padding: "lg", rounded: "lg", ...props, children: [
7017
+ /* @__PURE__ */ jsxRuntime.jsx(
7018
+ TeamMemberAvatar,
7019
+ {
7020
+ name: member.name,
7021
+ avatarUrl: member.avatarUrl,
7022
+ avatarAlt: member.avatarAlt,
7023
+ initials: member.initials,
7024
+ avatarColor: member.avatarColor
7025
+ }
7026
+ ),
7027
+ /* @__PURE__ */ jsxRuntime.jsx(TeamMemberInfo, { name: member.name, role: member.role })
7028
+ ] })
7029
+ );
7030
+ TeamMemberCard.displayName = "TeamMemberCard";
6656
7031
  var Quote = styles.styled("blockquote")(({ theme }) => ({
6657
7032
  margin: 0,
6658
7033
  fontFamily: theme.typography.fontFamily,
@@ -6673,104 +7048,162 @@ var Quote = styles.styled("blockquote")(({ theme }) => ({
6673
7048
  marginLeft: "0.125rem"
6674
7049
  }
6675
7050
  }));
6676
- var Footer3 = styles.styled("div")({
7051
+ var TestimonialQuote = ({ quote }) => /* @__PURE__ */ jsxRuntime.jsx(Quote, { children: quote });
7052
+ TestimonialQuote.displayName = "TestimonialQuote";
7053
+ var Root27 = styles.styled("div")({
6677
7054
  display: "flex",
6678
7055
  alignItems: "center",
6679
7056
  gap: "0.75rem"
6680
7057
  });
6681
- var AvatarImage = styles.styled("img")({
7058
+ var AvatarImg2 = styles.styled("img")({
6682
7059
  width: "2.5rem",
6683
7060
  height: "2.5rem",
6684
7061
  borderRadius: "50%",
6685
7062
  objectFit: "cover",
6686
7063
  flexShrink: 0
6687
7064
  });
6688
- var AuthorInfo = styles.styled("div")({
6689
- minWidth: 0
6690
- });
6691
- var AuthorName = styles.styled("p")(({ theme }) => ({
7065
+ var Info = styles.styled("div")({ minWidth: 0 });
7066
+ var Name8 = styles.styled("p")(({ theme }) => ({
6692
7067
  margin: 0,
6693
7068
  fontFamily: theme.typography.fontFamily,
6694
7069
  fontSize: "0.875rem",
6695
7070
  fontWeight: 700,
6696
7071
  color: theme.palette.text.primary
6697
7072
  }));
6698
- var AuthorRole = styles.styled("p")(({ theme }) => ({
7073
+ var Role2 = styles.styled("p")(({ theme }) => ({
6699
7074
  margin: "0.125rem 0 0",
6700
7075
  fontFamily: theme.typography.fontFamily,
6701
7076
  fontSize: "0.8125rem",
6702
7077
  color: theme.palette.text.secondary
6703
7078
  }));
7079
+ function deriveInitials3(name) {
7080
+ return name.split(" ").filter(Boolean).slice(0, 2).map((p) => p[0]).join("").toUpperCase();
7081
+ }
7082
+ var TestimonialAuthor = ({
7083
+ authorName,
7084
+ authorRole,
7085
+ authorAvatarUrl,
7086
+ authorInitials
7087
+ }) => /* @__PURE__ */ jsxRuntime.jsxs(Root27, { children: [
7088
+ authorAvatarUrl ? /* @__PURE__ */ jsxRuntime.jsx(AvatarImg2, { src: authorAvatarUrl, alt: authorName }) : /* @__PURE__ */ jsxRuntime.jsx(Avatar, { initials: authorInitials ?? deriveInitials3(authorName), size: "md", color: "primary" }),
7089
+ /* @__PURE__ */ jsxRuntime.jsxs(Info, { children: [
7090
+ /* @__PURE__ */ jsxRuntime.jsx(Name8, { children: authorName }),
7091
+ authorRole && /* @__PURE__ */ jsxRuntime.jsx(Role2, { children: authorRole })
7092
+ ] })
7093
+ ] });
7094
+ TestimonialAuthor.displayName = "TestimonialAuthor";
7095
+ var Root28 = styles.styled(Card)({
7096
+ display: "flex",
7097
+ flexDirection: "column",
7098
+ gap: "1.25rem",
7099
+ height: "100%"
7100
+ });
6704
7101
  var TestimonialCard = react.forwardRef(
6705
- ({ testimonial, cardVariant = "default", ...props }, ref) => {
6706
- const initials = testimonial.authorInitials ?? testimonial.authorName.split(" ").filter(Boolean).slice(0, 2).map((p) => p[0]).join("").toUpperCase();
6707
- return /* @__PURE__ */ jsxRuntime.jsxs(Root22, { ref, variant: cardVariant, padding: "lg", rounded: "lg", ...props, children: [
6708
- testimonial.rating && /* @__PURE__ */ jsxRuntime.jsx(Rating, { value: testimonial.rating, readonly: true, size: "sm" }),
6709
- /* @__PURE__ */ jsxRuntime.jsx(Quote, { children: testimonial.quote }),
6710
- /* @__PURE__ */ jsxRuntime.jsxs(Footer3, { children: [
6711
- testimonial.authorAvatarUrl ? /* @__PURE__ */ jsxRuntime.jsx(AvatarImage, { src: testimonial.authorAvatarUrl, alt: testimonial.authorName }) : /* @__PURE__ */ jsxRuntime.jsx(Avatar, { initials, size: "md", color: "primary" }),
6712
- /* @__PURE__ */ jsxRuntime.jsxs(AuthorInfo, { children: [
6713
- /* @__PURE__ */ jsxRuntime.jsx(AuthorName, { children: testimonial.authorName }),
6714
- testimonial.authorRole && /* @__PURE__ */ jsxRuntime.jsx(AuthorRole, { children: testimonial.authorRole })
6715
- ] })
6716
- ] })
6717
- ] });
6718
- }
7102
+ ({ testimonial, cardVariant = "default", ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(Root28, { ref, variant: cardVariant, padding: "lg", rounded: "lg", ...props, children: [
7103
+ testimonial.rating && /* @__PURE__ */ jsxRuntime.jsx(Rating, { value: testimonial.rating, readonly: true, size: "sm" }),
7104
+ /* @__PURE__ */ jsxRuntime.jsx(TestimonialQuote, { quote: testimonial.quote }),
7105
+ /* @__PURE__ */ jsxRuntime.jsx(
7106
+ TestimonialAuthor,
7107
+ {
7108
+ authorName: testimonial.authorName,
7109
+ authorRole: testimonial.authorRole,
7110
+ authorAvatarUrl: testimonial.authorAvatarUrl,
7111
+ authorInitials: testimonial.authorInitials
7112
+ }
7113
+ )
7114
+ ] })
6719
7115
  );
6720
7116
  TestimonialCard.displayName = "TestimonialCard";
6721
- var Root23 = styles.styled(Card)(({ theme }) => ({
7117
+ var Root29 = styles.styled("div")(({ theme }) => ({
7118
+ position: "relative",
7119
+ padding: "1.5rem",
7120
+ borderRadius: "1rem",
7121
+ border: `2px dashed ${theme.palette.primary.main}`,
7122
+ backgroundColor: theme.palette.background.paper,
7123
+ fontFamily: theme.typography.fontFamily,
6722
7124
  display: "flex",
6723
- alignItems: "center",
6724
- gap: "1rem",
6725
- height: "100%",
6726
- transition: "border-color 0.2s ease, box-shadow 0.2s ease, transform 0.2s ease",
6727
- "&:hover": {
6728
- borderColor: theme.palette.primary.main,
6729
- boxShadow: theme.shadows[2],
6730
- transform: "translateY(-2px)"
6731
- }
7125
+ flexDirection: "column",
7126
+ gap: "1rem"
6732
7127
  }));
6733
- var AvatarImage2 = styles.styled("img")({
6734
- width: "4rem",
6735
- height: "4rem",
6736
- flexShrink: 0,
6737
- borderRadius: "50%",
6738
- objectFit: "cover"
6739
- });
6740
- var Content3 = styles.styled("div")({
6741
- minWidth: 0
7128
+ var Header = styles.styled("div")({
7129
+ display: "flex",
7130
+ alignItems: "center",
7131
+ gap: "0.75rem"
6742
7132
  });
6743
- var Name5 = styles.styled("h3")(({ theme }) => ({
6744
- margin: 0,
6745
- color: theme.palette.text.primary,
6746
- fontFamily: theme.typography.fontFamily,
6747
- fontSize: "1rem",
6748
- fontWeight: 700,
6749
- lineHeight: 1.4
7133
+ var Discount = styles.styled("span")(({ theme }) => ({
7134
+ fontSize: "2rem",
7135
+ fontWeight: 800,
7136
+ lineHeight: 1,
7137
+ color: theme.palette.primary.main
6750
7138
  }));
6751
- var Role = styles.styled("p")(({ theme }) => ({
6752
- margin: "0.25rem 0 0",
6753
- color: theme.palette.text.secondary,
6754
- fontFamily: theme.typography.fontFamily,
7139
+ var Description4 = styles.styled("p")(({ theme }) => ({
7140
+ margin: 0,
6755
7141
  fontSize: "0.875rem",
7142
+ color: theme.palette.text.secondary,
6756
7143
  lineHeight: 1.5
6757
7144
  }));
6758
- function getInitials(member) {
6759
- if (member.initials) {
6760
- return member.initials;
7145
+ var CodeRow = styles.styled("div")(({ theme }) => ({
7146
+ display: "flex",
7147
+ alignItems: "center",
7148
+ gap: "0.5rem",
7149
+ padding: "0.625rem 1rem",
7150
+ backgroundColor: theme.palette.action.hover,
7151
+ borderRadius: theme.shape.borderRadius
7152
+ }));
7153
+ var Code = styles.styled("span")(({ theme }) => ({
7154
+ flex: 1,
7155
+ fontFamily: "monospace",
7156
+ fontSize: "1rem",
7157
+ fontWeight: 700,
7158
+ letterSpacing: "0.1em",
7159
+ color: theme.palette.text.primary,
7160
+ userSelect: "all"
7161
+ }));
7162
+ var CopyButton = styles.styled("button")(({ theme }) => ({
7163
+ border: 0,
7164
+ background: "transparent",
7165
+ color: theme.palette.primary.main,
7166
+ cursor: "pointer",
7167
+ padding: "0.25rem",
7168
+ display: "flex",
7169
+ alignItems: "center",
7170
+ borderRadius: theme.shape.borderRadius,
7171
+ transition: "background-color 150ms ease",
7172
+ "&:hover": {
7173
+ backgroundColor: theme.palette.action.hover
6761
7174
  }
6762
- return member.name.split(" ").filter(Boolean).slice(0, 2).map((part) => part[0]).join("").toUpperCase();
6763
- }
6764
- var TeamMemberCard = react.forwardRef(
6765
- ({ member, cardVariant = "default", ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(Root23, { ref, variant: cardVariant, padding: "lg", rounded: "lg", ...props, children: [
6766
- member.avatarUrl ? /* @__PURE__ */ jsxRuntime.jsx(AvatarImage2, { src: member.avatarUrl, alt: member.avatarAlt ?? member.name }) : /* @__PURE__ */ jsxRuntime.jsx(Avatar, { initials: getInitials(member), size: "xl", color: member.avatarColor ?? "primary" }),
6767
- /* @__PURE__ */ jsxRuntime.jsxs(Content3, { children: [
6768
- /* @__PURE__ */ jsxRuntime.jsx(Name5, { children: member.name }),
6769
- /* @__PURE__ */ jsxRuntime.jsx(Role, { children: member.role })
7175
+ }));
7176
+ var Expiry = styles.styled("p")(({ theme }) => ({
7177
+ margin: 0,
7178
+ fontSize: "0.75rem",
7179
+ color: theme.palette.text.disabled
7180
+ }));
7181
+ var VoucherCard = react.forwardRef(
7182
+ ({ code, discount, description, expiresAt, copied = false, onCopy, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(Root29, { ref, ...props, children: [
7183
+ /* @__PURE__ */ jsxRuntime.jsxs(Header, { children: [
7184
+ /* @__PURE__ */ jsxRuntime.jsx(LocalOfferIcon__default.default, { style: { fontSize: 20 }, color: "primary" }),
7185
+ /* @__PURE__ */ jsxRuntime.jsx(Discount, { children: discount })
7186
+ ] }),
7187
+ description && /* @__PURE__ */ jsxRuntime.jsx(Description4, { children: description }),
7188
+ /* @__PURE__ */ jsxRuntime.jsxs(CodeRow, { children: [
7189
+ /* @__PURE__ */ jsxRuntime.jsx(Code, { children: code }),
7190
+ /* @__PURE__ */ jsxRuntime.jsx(
7191
+ CopyButton,
7192
+ {
7193
+ type: "button",
7194
+ "aria-label": copied ? "Skopiowano" : "Kopiuj kod",
7195
+ onClick: () => onCopy?.(code),
7196
+ children: copied ? /* @__PURE__ */ jsxRuntime.jsx(CheckIcon__default.default, { style: { fontSize: 18, color: "green" } }) : /* @__PURE__ */ jsxRuntime.jsx(ContentCopyIcon__default.default, { style: { fontSize: 18 } })
7197
+ }
7198
+ )
7199
+ ] }),
7200
+ expiresAt && /* @__PURE__ */ jsxRuntime.jsxs(Expiry, { children: [
7201
+ "Wa\u017Cny do: ",
7202
+ expiresAt
6770
7203
  ] })
6771
7204
  ] })
6772
7205
  );
6773
- TeamMemberCard.displayName = "TeamMemberCard";
7206
+ VoucherCard.displayName = "VoucherCard";
6774
7207
  var Wrapper3 = styles.styled("div")({
6775
7208
  width: "100%",
6776
7209
  overflowX: "auto",
@@ -6855,7 +7288,7 @@ var RemoveBtn = styles.styled("button")(({ theme }) => ({
6855
7288
  }
6856
7289
  }));
6857
7290
  var Tbody = styles.styled("tbody")({});
6858
- var Row3 = styles.styled("tr", {
7291
+ var Row4 = styles.styled("tr", {
6859
7292
  shouldForwardProp: (p) => p !== "$diff"
6860
7293
  })(({ theme, $diff }) => ({
6861
7294
  backgroundColor: $diff ? theme.palette.mode === "dark" ? "rgba(255,255,255,0.03)" : "rgba(0,0,0,0.02)" : "transparent",
@@ -6876,210 +7309,75 @@ var ValueCell = styles.styled("td", {
6876
7309
  })(({ theme, $highlight }) => ({
6877
7310
  padding: "0.75rem 1rem",
6878
7311
  textAlign: "center",
6879
- fontSize: "0.9375rem",
6880
- color: theme.palette.text.primary,
6881
- borderBottom: `1px solid ${theme.palette.divider}`,
6882
- fontWeight: $highlight ? 700 : 400,
6883
- backgroundColor: $highlight ? theme.palette.mode === "dark" ? "rgba(99,102,241,0.08)" : "rgba(99,102,241,0.06)" : "transparent"
6884
- }));
6885
- var BoolIcon = ({ value }) => /* @__PURE__ */ jsxRuntime.jsx("span", { "aria-label": value ? "Tak" : "Nie", style: { display: "inline-flex", fontSize: "1.125rem" }, children: value ? /* @__PURE__ */ jsxRuntime.jsx(CheckIcon__default.default, {}) : /* @__PURE__ */ jsxRuntime.jsx(CloseIcon__default.default, {}) });
6886
- function formatValue(v) {
6887
- if (typeof v === "boolean") return /* @__PURE__ */ jsxRuntime.jsx(BoolIcon, { value: v });
6888
- return String(v);
6889
- }
6890
- function isDiff(specKey, products) {
6891
- const values = products.map((p) => p.specs[specKey]);
6892
- return values.some((v) => String(v) !== String(values[0]));
6893
- }
6894
- function getSpecKeys(products) {
6895
- const keys = /* @__PURE__ */ new Set();
6896
- products.forEach((p) => Object.keys(p.specs).forEach((k) => keys.add(k)));
6897
- return Array.from(keys);
6898
- }
6899
- function CompareTool({
6900
- products,
6901
- specLabels = {},
6902
- onRemove,
6903
- highlightDifferences = true,
6904
- className
6905
- }) {
6906
- if (!products.length) return null;
6907
- const specKeys = getSpecKeys(products);
6908
- const bestValues = {};
6909
- specKeys.forEach((key) => {
6910
- const nums = products.map((p) => p.specs[key]).filter((v) => typeof v === "number");
6911
- if (nums.length === products.length) {
6912
- bestValues[key] = Math.max(...nums);
6913
- }
6914
- });
6915
- return /* @__PURE__ */ jsxRuntime.jsx(Wrapper3, { className, children: /* @__PURE__ */ jsxRuntime.jsxs(Table, { role: "table", "aria-label": "Por\xF3wnanie produkt\xF3w", children: [
6916
- /* @__PURE__ */ jsxRuntime.jsx(Thead, { children: /* @__PURE__ */ jsxRuntime.jsxs("tr", { children: [
6917
- /* @__PURE__ */ jsxRuntime.jsx(HeaderCell, { $isLabel: true, as: "th", scope: "col", children: "Parametr" }),
6918
- products.map((p) => /* @__PURE__ */ jsxRuntime.jsxs(HeaderCell, { as: "th", scope: "col", children: [
6919
- p.imageUrl ? /* @__PURE__ */ jsxRuntime.jsx(ProductImage, { src: p.imageUrl, alt: p.name }) : /* @__PURE__ */ jsxRuntime.jsx(ProductImagePlaceholder, { "aria-hidden": "true" }),
6920
- /* @__PURE__ */ jsxRuntime.jsx(ProductName, { children: p.name }),
6921
- /* @__PURE__ */ jsxRuntime.jsx(ProductPrice, { children: p.price }),
6922
- onRemove && /* @__PURE__ */ jsxRuntime.jsx(
6923
- RemoveBtn,
6924
- {
6925
- type: "button",
6926
- "aria-label": `Usu\u0144 ${p.name} z por\xF3wnania`,
6927
- onClick: () => onRemove(p.id),
6928
- children: "Usu\u0144"
6929
- }
6930
- )
6931
- ] }, p.id))
6932
- ] }) }),
6933
- /* @__PURE__ */ jsxRuntime.jsx(Tbody, { children: specKeys.map((key) => {
6934
- const diff = highlightDifferences && isDiff(key, products);
6935
- return /* @__PURE__ */ jsxRuntime.jsxs(Row3, { $diff: diff, children: [
6936
- /* @__PURE__ */ jsxRuntime.jsx(LabelCell, { as: "th", scope: "row", children: specLabels[key] ?? key }),
6937
- products.map((p) => {
6938
- const val = p.specs[key];
6939
- const isHighlighted = highlightDifferences && key in bestValues && typeof val === "number" && val === bestValues[key];
6940
- return /* @__PURE__ */ jsxRuntime.jsx(ValueCell, { $highlight: isHighlighted, children: val !== void 0 ? formatValue(val) : /* @__PURE__ */ jsxRuntime.jsx("span", { "aria-label": "Brak danych", children: "\u2014" }) }, p.id);
6941
- })
6942
- ] }, key);
6943
- }) })
6944
- ] }) });
6945
- }
6946
- function calcTimeLeft(target) {
6947
- const diff = new Date(target).getTime() - Date.now();
6948
- if (diff <= 0) return null;
6949
- return {
6950
- days: Math.floor(diff / 864e5),
6951
- hours: Math.floor(diff % 864e5 / 36e5),
6952
- minutes: Math.floor(diff % 36e5 / 6e4),
6953
- seconds: Math.floor(diff % 6e4 / 1e3)
6954
- };
6955
- }
6956
- function pad(n) {
6957
- return String(n).padStart(2, "0");
6958
- }
6959
- var Root24 = styles.styled("div", {
6960
- shouldForwardProp: (prop) => prop !== "$variant"
6961
- })(({ theme, $variant }) => ({
6962
- display: "inline-flex",
6963
- alignItems: "center",
6964
- justifyContent: "space-between",
6965
- flexWrap: "wrap",
6966
- gap: "0.5rem",
6967
- fontFamily: theme.typography.fontFamily,
6968
- ...$variant === "card" && {
6969
- backgroundColor: theme.palette.background.paper,
6970
- border: `1px solid ${theme.palette.divider}`,
6971
- borderRadius: theme.shape.borderRadius,
6972
- padding: "1rem 1.5rem"
6973
- },
6974
- ...$variant === "banner" && {
6975
- backgroundColor: theme.palette.error.main,
6976
- color: "#fff",
6977
- borderRadius: theme.shape.borderRadius,
6978
- padding: "0.75rem 1.25rem"
6979
- }
6980
- }));
6981
- var TimerLabel = styles.styled("span", {
6982
- shouldForwardProp: (prop) => prop !== "$variant"
6983
- })(({ theme, $variant }) => ({
6984
- fontSize: "0.875rem",
6985
- fontWeight: 600,
6986
- color: $variant === "banner" ? "rgba(255,255,255,0.85)" : theme.palette.text.secondary,
6987
- marginRight: "0.25rem"
6988
- }));
6989
- var Segments = styles.styled("div")({
6990
- display: "flex",
6991
- alignItems: "center",
6992
- gap: "0.25rem"
6993
- });
6994
- var Segment = styles.styled("div", {
6995
- shouldForwardProp: (prop) => prop !== "$variant"
6996
- })(({ theme, $variant }) => ({
6997
- display: "flex",
6998
- flexDirection: "column",
6999
- alignItems: "center",
7000
- minWidth: "2.5rem",
7001
- ...$variant === "card" && {
7002
- backgroundColor: theme.palette.action.hover,
7003
- borderRadius: "0.375rem",
7004
- padding: "0.375rem 0.5rem"
7005
- }
7006
- }));
7007
- var Value2 = styles.styled("span", {
7008
- shouldForwardProp: (prop) => prop !== "$variant"
7009
- })(({ $variant }) => ({
7010
- fontSize: $variant === "inline" ? "1rem" : "1.5rem",
7011
- fontWeight: 700,
7012
- lineHeight: 1,
7013
- color: $variant === "banner" ? "#fff" : "inherit"
7014
- }));
7015
- var Unit = styles.styled("span", {
7016
- shouldForwardProp: (prop) => prop !== "$variant"
7017
- })(({ theme, $variant }) => ({
7018
- fontSize: "0.6875rem",
7019
- color: $variant === "banner" ? "rgba(255,255,255,0.7)" : theme.palette.text.secondary,
7020
- marginTop: "0.125rem"
7021
- }));
7022
- var Colon = styles.styled("span", {
7023
- shouldForwardProp: (prop) => prop !== "$variant"
7024
- })(({ theme, $variant }) => ({
7025
- fontSize: $variant === "inline" ? "1rem" : "1.5rem",
7026
- fontWeight: 700,
7027
- color: $variant === "banner" ? "rgba(255,255,255,0.6)" : theme.palette.text.disabled,
7028
- alignSelf: $variant === "card" ? "flex-start" : "center",
7029
- marginTop: $variant === "card" ? "0.375rem" : 0
7312
+ fontSize: "0.9375rem",
7313
+ color: theme.palette.text.primary,
7314
+ borderBottom: `1px solid ${theme.palette.divider}`,
7315
+ fontWeight: $highlight ? 700 : 400,
7316
+ backgroundColor: $highlight ? theme.palette.mode === "dark" ? "rgba(99,102,241,0.08)" : "rgba(99,102,241,0.06)" : "transparent"
7030
7317
  }));
7031
- var UNITS = ["dni", "godz", "min", "sek"];
7032
- var CountdownTimer = react.forwardRef(
7033
- ({
7034
- targetDate,
7035
- variant = "inline",
7036
- label,
7037
- expiredLabel = "Promocja zako\u0144czona",
7038
- onExpire,
7039
- ...props
7040
- }, ref) => {
7041
- const [timeLeft, setTimeLeft] = react.useState(() => calcTimeLeft(targetDate));
7042
- react.useEffect(() => {
7043
- const id = setInterval(() => {
7044
- const tl = calcTimeLeft(targetDate);
7045
- setTimeLeft(tl);
7046
- if (!tl) {
7047
- clearInterval(id);
7048
- onExpire?.();
7049
- }
7050
- }, 1e3);
7051
- return () => clearInterval(id);
7052
- }, [targetDate, onExpire]);
7053
- if (!timeLeft) {
7054
- return /* @__PURE__ */ jsxRuntime.jsx(Root24, { ref, $variant: variant, ...props, children: /* @__PURE__ */ jsxRuntime.jsx(TimerLabel, { $variant: variant, children: expiredLabel }) });
7318
+ var BoolIcon = ({ value }) => /* @__PURE__ */ jsxRuntime.jsx("span", { "aria-label": value ? "Tak" : "Nie", style: { display: "inline-flex", fontSize: "1.125rem" }, children: value ? /* @__PURE__ */ jsxRuntime.jsx(CheckIcon__default.default, {}) : /* @__PURE__ */ jsxRuntime.jsx(CloseIcon__default.default, {}) });
7319
+ function formatValue(v) {
7320
+ if (typeof v === "boolean") return /* @__PURE__ */ jsxRuntime.jsx(BoolIcon, { value: v });
7321
+ return String(v);
7322
+ }
7323
+ function isDiff(specKey, products) {
7324
+ const values = products.map((p) => p.specs[specKey]);
7325
+ return values.some((v) => String(v) !== String(values[0]));
7326
+ }
7327
+ function getSpecKeys(products) {
7328
+ const keys = /* @__PURE__ */ new Set();
7329
+ products.forEach((p) => Object.keys(p.specs).forEach((k) => keys.add(k)));
7330
+ return Array.from(keys);
7331
+ }
7332
+ function CompareTool({
7333
+ products,
7334
+ specLabels = {},
7335
+ onRemove,
7336
+ highlightDifferences = true,
7337
+ className
7338
+ }) {
7339
+ if (!products.length) return null;
7340
+ const specKeys = getSpecKeys(products);
7341
+ const bestValues = {};
7342
+ specKeys.forEach((key) => {
7343
+ const nums = products.map((p) => p.specs[key]).filter((v) => typeof v === "number");
7344
+ if (nums.length === products.length) {
7345
+ bestValues[key] = Math.max(...nums);
7055
7346
  }
7056
- const parts = [timeLeft.days, timeLeft.hours, timeLeft.minutes, timeLeft.seconds];
7057
- return /* @__PURE__ */ jsxRuntime.jsxs(
7058
- Root24,
7059
- {
7060
- ref,
7061
- $variant: variant,
7062
- "aria-live": "polite",
7063
- "aria-label": `Czas do ko\u0144ca promocji`,
7064
- ...props,
7065
- children: [
7066
- label && /* @__PURE__ */ jsxRuntime.jsx(TimerLabel, { $variant: variant, children: label }),
7067
- /* @__PURE__ */ jsxRuntime.jsx(Segments, { children: parts.map((val, i) => /* @__PURE__ */ jsxRuntime.jsxs("div", { style: { display: "contents" }, children: [
7068
- i > 0 && /* @__PURE__ */ jsxRuntime.jsx(Colon, { $variant: variant, children: ":" }),
7069
- /* @__PURE__ */ jsxRuntime.jsxs(Segment, { $variant: variant, children: [
7070
- /* @__PURE__ */ jsxRuntime.jsx(Value2, { $variant: variant, children: pad(val) }),
7071
- variant !== "inline" && /* @__PURE__ */ jsxRuntime.jsx(Unit, { $variant: variant, children: UNITS[i] })
7072
- ] })
7073
- ] }, UNITS[i])) })
7074
- ]
7075
- }
7076
- );
7077
- }
7078
- );
7079
- CountdownTimer.displayName = "CountdownTimer";
7080
- var countdownTimerVariants = ["inline", "card", "banner"];
7347
+ });
7348
+ return /* @__PURE__ */ jsxRuntime.jsx(Wrapper3, { className, children: /* @__PURE__ */ jsxRuntime.jsxs(Table, { role: "table", "aria-label": "Por\xF3wnanie produkt\xF3w", children: [
7349
+ /* @__PURE__ */ jsxRuntime.jsx(Thead, { children: /* @__PURE__ */ jsxRuntime.jsxs("tr", { children: [
7350
+ /* @__PURE__ */ jsxRuntime.jsx(HeaderCell, { $isLabel: true, as: "th", scope: "col", children: "Parametr" }),
7351
+ products.map((p) => /* @__PURE__ */ jsxRuntime.jsxs(HeaderCell, { as: "th", scope: "col", children: [
7352
+ p.imageUrl ? /* @__PURE__ */ jsxRuntime.jsx(ProductImage, { src: p.imageUrl, alt: p.name }) : /* @__PURE__ */ jsxRuntime.jsx(ProductImagePlaceholder, { "aria-hidden": "true" }),
7353
+ /* @__PURE__ */ jsxRuntime.jsx(ProductName, { children: p.name }),
7354
+ /* @__PURE__ */ jsxRuntime.jsx(ProductPrice, { children: p.price }),
7355
+ onRemove && /* @__PURE__ */ jsxRuntime.jsx(
7356
+ RemoveBtn,
7357
+ {
7358
+ type: "button",
7359
+ "aria-label": `Usu\u0144 ${p.name} z por\xF3wnania`,
7360
+ onClick: () => onRemove(p.id),
7361
+ children: "Usu\u0144"
7362
+ }
7363
+ )
7364
+ ] }, p.id))
7365
+ ] }) }),
7366
+ /* @__PURE__ */ jsxRuntime.jsx(Tbody, { children: specKeys.map((key) => {
7367
+ const diff = highlightDifferences && isDiff(key, products);
7368
+ return /* @__PURE__ */ jsxRuntime.jsxs(Row4, { $diff: diff, children: [
7369
+ /* @__PURE__ */ jsxRuntime.jsx(LabelCell, { as: "th", scope: "row", children: specLabels[key] ?? key }),
7370
+ products.map((p) => {
7371
+ const val = p.specs[key];
7372
+ const isHighlighted = highlightDifferences && key in bestValues && typeof val === "number" && val === bestValues[key];
7373
+ return /* @__PURE__ */ jsxRuntime.jsx(ValueCell, { $highlight: isHighlighted, children: val !== void 0 ? formatValue(val) : /* @__PURE__ */ jsxRuntime.jsx("span", { "aria-label": "Brak danych", children: "\u2014" }) }, p.id);
7374
+ })
7375
+ ] }, key);
7376
+ }) })
7377
+ ] }) });
7378
+ }
7081
7379
  var spin2 = styles.keyframes`to { transform: rotate(360deg); }`;
7082
- var Root25 = styles.styled("div")({
7380
+ var Root30 = styles.styled("div")({
7083
7381
  display: "flex",
7084
7382
  flexDirection: "column",
7085
7383
  gap: "0.5rem"
@@ -7226,7 +7524,7 @@ function CouponInput({
7226
7524
  if (e.key === "Enter") handleApply();
7227
7525
  };
7228
7526
  if (appliedCode) {
7229
- return /* @__PURE__ */ jsxRuntime.jsxs(Root25, { className, children: [
7527
+ return /* @__PURE__ */ jsxRuntime.jsxs(Root30, { className, children: [
7230
7528
  /* @__PURE__ */ jsxRuntime.jsxs(AppliedRow, { role: "status", "aria-label": `Kod rabatowy ${appliedCode} zastosowany`, children: [
7231
7529
  /* @__PURE__ */ jsxRuntime.jsx(AppliedCode, { children: appliedCode }),
7232
7530
  onRemove && /* @__PURE__ */ jsxRuntime.jsx(
@@ -7245,7 +7543,7 @@ function CouponInput({
7245
7543
  ] })
7246
7544
  ] });
7247
7545
  }
7248
- return /* @__PURE__ */ jsxRuntime.jsxs(Root25, { className, children: [
7546
+ return /* @__PURE__ */ jsxRuntime.jsxs(Root30, { className, children: [
7249
7547
  /* @__PURE__ */ jsxRuntime.jsxs(InputRow, { $hasError: Boolean(error), $applied: false, children: [
7250
7548
  /* @__PURE__ */ jsxRuntime.jsx(
7251
7549
  Input,
@@ -7277,7 +7575,7 @@ function CouponInput({
7277
7575
  error && /* @__PURE__ */ jsxRuntime.jsx(Message, { $type: "error", id: errorId, role: "alert", children: error })
7278
7576
  ] });
7279
7577
  }
7280
- var Root26 = styles.styled("div")({
7578
+ var Root31 = styles.styled("div")({
7281
7579
  display: "flex",
7282
7580
  flexDirection: "column",
7283
7581
  gap: "0.5rem"
@@ -7313,8 +7611,8 @@ var IconWrap = styles.styled("span")(({ theme }) => ({
7313
7611
  color: theme.palette.text.secondary,
7314
7612
  display: "flex"
7315
7613
  }));
7316
- var Info = styles.styled("div")({ flex: 1 });
7317
- var Name6 = styles.styled("div")(({ theme }) => ({
7614
+ var Info2 = styles.styled("div")({ flex: 1 });
7615
+ var Name9 = styles.styled("div")(({ theme }) => ({
7318
7616
  fontSize: "0.9375rem",
7319
7617
  fontWeight: 600,
7320
7618
  color: theme.palette.text.primary
@@ -7325,7 +7623,7 @@ var Desc = styles.styled("div")(({ theme }) => ({
7325
7623
  marginTop: "0.125rem"
7326
7624
  }));
7327
7625
  var PaymentMethodSelector = react.forwardRef(
7328
- ({ methods, value, onChange, label = "Metoda p\u0142atno\u015Bci", disabled, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(Root26, { ref, ...props, children: [
7626
+ ({ methods, value, onChange, label = "Metoda p\u0142atno\u015Bci", disabled, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(Root31, { ref, ...props, children: [
7329
7627
  /* @__PURE__ */ jsxRuntime.jsx(GroupLabel, { children: label }),
7330
7628
  methods.map((method) => {
7331
7629
  const selected = value === method.id;
@@ -7343,8 +7641,8 @@ var PaymentMethodSelector = react.forwardRef(
7343
7641
  }
7344
7642
  ),
7345
7643
  /* @__PURE__ */ jsxRuntime.jsx(IconWrap, { children: method.icon ?? /* @__PURE__ */ jsxRuntime.jsx(CreditCardOutlinedIcon__default.default, { "aria-hidden": true }) }),
7346
- /* @__PURE__ */ jsxRuntime.jsxs(Info, { children: [
7347
- /* @__PURE__ */ jsxRuntime.jsx(Name6, { children: method.label }),
7644
+ /* @__PURE__ */ jsxRuntime.jsxs(Info2, { children: [
7645
+ /* @__PURE__ */ jsxRuntime.jsx(Name9, { children: method.label }),
7348
7646
  method.description && /* @__PURE__ */ jsxRuntime.jsx(Desc, { children: method.description })
7349
7647
  ] })
7350
7648
  ] }, method.id);
@@ -7352,7 +7650,7 @@ var PaymentMethodSelector = react.forwardRef(
7352
7650
  ] })
7353
7651
  );
7354
7652
  PaymentMethodSelector.displayName = "PaymentMethodSelector";
7355
- var Root27 = styles.styled("div")({
7653
+ var Root32 = styles.styled("div")({
7356
7654
  display: "grid",
7357
7655
  gap: "0.75rem"
7358
7656
  });
@@ -7379,7 +7677,7 @@ var ThumbnailImage = styles.styled("img")({
7379
7677
  objectFit: "cover"
7380
7678
  });
7381
7679
  var ProductGallery = react.forwardRef(
7382
- ({ images, selectedIndex, onSelect, ...props }, ref) => {
7680
+ ({ images, selectedIndex, onSelect, imageRatio = "4/3", ...props }, ref) => {
7383
7681
  const [internalIndex, setInternalIndex] = react.useState(0);
7384
7682
  const activeIndex = selectedIndex ?? internalIndex;
7385
7683
  const activeImage = images[activeIndex] ?? images[0];
@@ -7390,8 +7688,8 @@ var ProductGallery = react.forwardRef(
7390
7688
  if (!activeImage) {
7391
7689
  return null;
7392
7690
  }
7393
- return /* @__PURE__ */ jsxRuntime.jsxs(Root27, { ref, ...props, children: [
7394
- /* @__PURE__ */ jsxRuntime.jsx(AspectRatio, { ratio: "4/3", children: /* @__PURE__ */ jsxRuntime.jsx(MainImage, { src: activeImage.src, alt: activeImage.alt }) }),
7691
+ return /* @__PURE__ */ jsxRuntime.jsxs(Root32, { ref, ...props, children: [
7692
+ /* @__PURE__ */ jsxRuntime.jsx(AspectRatio, { ratio: imageRatio, children: /* @__PURE__ */ jsxRuntime.jsx(MainImage, { src: activeImage.src, alt: activeImage.alt }) }),
7395
7693
  images.length > 1 && /* @__PURE__ */ jsxRuntime.jsx(Thumbnails, { children: images.map((image, index) => /* @__PURE__ */ jsxRuntime.jsx(
7396
7694
  ThumbnailButton,
7397
7695
  {
@@ -7408,7 +7706,7 @@ var ProductGallery = react.forwardRef(
7408
7706
  }
7409
7707
  );
7410
7708
  ProductGallery.displayName = "ProductGallery";
7411
- var Root28 = styles.styled("div")(({ theme, $variant }) => ({
7709
+ var Root33 = styles.styled("div")(({ theme, $variant }) => ({
7412
7710
  display: "flex",
7413
7711
  alignItems: "center",
7414
7712
  justifyContent: "center",
@@ -7428,14 +7726,14 @@ var Link = styles.styled("a")(({ theme }) => ({
7428
7726
  textUnderlineOffset: "0.2em"
7429
7727
  }));
7430
7728
  var PromoStrip = react.forwardRef(
7431
- ({ message, actionLabel, href, variant = "info", ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(Root28, { ref, $variant: variant, ...props, children: [
7729
+ ({ message, actionLabel, href, variant = "info", ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(Root33, { ref, $variant: variant, ...props, children: [
7432
7730
  /* @__PURE__ */ jsxRuntime.jsx("span", { children: message }),
7433
7731
  actionLabel && href && /* @__PURE__ */ jsxRuntime.jsx(Link, { href, children: actionLabel })
7434
7732
  ] })
7435
7733
  );
7436
7734
  PromoStrip.displayName = "PromoStrip";
7437
7735
  var promoStripVariants = ["info", "success", "warning"];
7438
- var Root29 = styles.styled("div")(({ theme }) => ({
7736
+ var Root34 = styles.styled("div")(({ theme }) => ({
7439
7737
  display: "inline-grid",
7440
7738
  gridTemplateColumns: "2.25rem 3rem 2.25rem",
7441
7739
  alignItems: "center",
@@ -7471,7 +7769,7 @@ var QuantitySelector = react.forwardRef(
7471
7769
  ({ value, min = 1, max = 99, step = 1, disabled = false, onChange, ...props }, ref) => {
7472
7770
  const decrease = Math.max(min, value - step);
7473
7771
  const increase = Math.min(max, value + step);
7474
- return /* @__PURE__ */ jsxRuntime.jsxs(Root29, { ref, "aria-label": "Wybierz ilo\u015B\u0107", ...props, children: [
7772
+ return /* @__PURE__ */ jsxRuntime.jsxs(Root34, { ref, "aria-label": "Wybierz ilo\u015B\u0107", ...props, children: [
7475
7773
  /* @__PURE__ */ jsxRuntime.jsx(
7476
7774
  Control,
7477
7775
  {
@@ -7497,7 +7795,7 @@ var QuantitySelector = react.forwardRef(
7497
7795
  }
7498
7796
  );
7499
7797
  QuantitySelector.displayName = "QuantitySelector";
7500
- var Root30 = styles.styled("div")({
7798
+ var Root35 = styles.styled("div")({
7501
7799
  display: "flex",
7502
7800
  flexDirection: "column",
7503
7801
  gap: "0.5rem"
@@ -7535,8 +7833,8 @@ var IconWrap2 = styles.styled("span")(({ theme }) => ({
7535
7833
  color: theme.palette.text.secondary,
7536
7834
  display: "flex"
7537
7835
  }));
7538
- var Info2 = styles.styled("div")({ flex: 1 });
7539
- var Name7 = styles.styled("div")(({ theme }) => ({
7836
+ var Info3 = styles.styled("div")({ flex: 1 });
7837
+ var Name10 = styles.styled("div")(({ theme }) => ({
7540
7838
  fontSize: "0.9375rem",
7541
7839
  fontWeight: 600,
7542
7840
  color: theme.palette.text.primary
@@ -7546,7 +7844,7 @@ var Desc2 = styles.styled("div")(({ theme }) => ({
7546
7844
  color: theme.palette.text.secondary,
7547
7845
  marginTop: "0.125rem"
7548
7846
  }));
7549
- var Price3 = styles.styled("div", {
7847
+ var Price2 = styles.styled("div", {
7550
7848
  shouldForwardProp: (prop) => prop !== "$selected"
7551
7849
  })(({ theme, $selected }) => ({
7552
7850
  fontSize: "0.9375rem",
@@ -7555,7 +7853,7 @@ var Price3 = styles.styled("div", {
7555
7853
  whiteSpace: "nowrap"
7556
7854
  }));
7557
7855
  var ShippingSelector = react.forwardRef(
7558
- ({ options, value, onChange, label = "Metoda dostawy", disabled, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(Root30, { ref, ...props, children: [
7856
+ ({ options, value, onChange, label = "Metoda dostawy", disabled, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(Root35, { ref, ...props, children: [
7559
7857
  /* @__PURE__ */ jsxRuntime.jsx(GroupLabel2, { children: label }),
7560
7858
  options.map((opt) => {
7561
7859
  const selected = value === opt.id;
@@ -7573,14 +7871,14 @@ var ShippingSelector = react.forwardRef(
7573
7871
  }
7574
7872
  ),
7575
7873
  /* @__PURE__ */ jsxRuntime.jsx(IconWrap2, { children: opt.icon ?? /* @__PURE__ */ jsxRuntime.jsx(LocalShippingOutlinedIcon__default.default, { "aria-hidden": true }) }),
7576
- /* @__PURE__ */ jsxRuntime.jsxs(Info2, { children: [
7577
- /* @__PURE__ */ jsxRuntime.jsx(Name7, { children: opt.label }),
7874
+ /* @__PURE__ */ jsxRuntime.jsxs(Info3, { children: [
7875
+ /* @__PURE__ */ jsxRuntime.jsx(Name10, { children: opt.label }),
7578
7876
  (opt.description || opt.estimatedDays) && /* @__PURE__ */ jsxRuntime.jsxs(Desc2, { children: [
7579
7877
  opt.description,
7580
7878
  opt.estimatedDays && ` \xB7 ${opt.estimatedDays}`
7581
7879
  ] })
7582
7880
  ] }),
7583
- /* @__PURE__ */ jsxRuntime.jsx(Price3, { $selected: selected, children: opt.price })
7881
+ /* @__PURE__ */ jsxRuntime.jsx(Price2, { $selected: selected, children: opt.price })
7584
7882
  ] }, opt.id);
7585
7883
  })
7586
7884
  ] })
@@ -7592,7 +7890,7 @@ var DEFAULT_SORT_OPTIONS = [
7592
7890
  { value: "price-asc", label: "Cena rosn\u0105co" },
7593
7891
  { value: "price-desc", label: "Cena malej\u0105co" }
7594
7892
  ];
7595
- var Root31 = styles.styled("div")(({ theme }) => ({
7893
+ var Root36 = styles.styled("div")(({ theme }) => ({
7596
7894
  display: "flex",
7597
7895
  alignItems: "center",
7598
7896
  justifyContent: "space-between",
@@ -7666,7 +7964,7 @@ var SortBar = react.forwardRef(
7666
7964
  ...props
7667
7965
  }, ref) => {
7668
7966
  const resolvedLabel = totalLabel ?? (total !== void 0 ? `Znaleziono ${total} produkt\xF3w` : void 0);
7669
- return /* @__PURE__ */ jsxRuntime.jsxs(Root31, { ref, ...props, children: [
7967
+ return /* @__PURE__ */ jsxRuntime.jsxs(Root36, { ref, ...props, children: [
7670
7968
  resolvedLabel && /* @__PURE__ */ jsxRuntime.jsx(TotalLabel, { children: resolvedLabel }),
7671
7969
  /* @__PURE__ */ jsxRuntime.jsxs(Controls, { children: [
7672
7970
  sortOptions.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
@@ -7719,7 +8017,7 @@ function getDefaultLabel(status, count) {
7719
8017
  return "Dost\u0119pny na zam\xF3wienie";
7720
8018
  }
7721
8019
  }
7722
- var Root32 = styles.styled("div", {
8020
+ var Root37 = styles.styled("div", {
7723
8021
  shouldForwardProp: (p) => p !== "$color" && p !== "$size"
7724
8022
  })(({ theme, $color, $size }) => {
7725
8023
  const colorMap = {
@@ -7760,7 +8058,7 @@ var StockStatus = react.forwardRef(
7760
8058
  ({ status, count, label, showIcon = true, size = "md", ...props }, ref) => {
7761
8059
  const color = COLOR_MAP[status];
7762
8060
  const text = label ?? getDefaultLabel(status, count);
7763
- return /* @__PURE__ */ jsxRuntime.jsxs(Root32, { ref, $color: color, $size: size, role: "status", "aria-label": text, ...props, children: [
8061
+ return /* @__PURE__ */ jsxRuntime.jsxs(Root37, { ref, $color: color, $size: size, role: "status", "aria-label": text, ...props, children: [
7764
8062
  showIcon && /* @__PURE__ */ jsxRuntime.jsx(Dot2, { $color: color, "aria-hidden": "true" }),
7765
8063
  /* @__PURE__ */ jsxRuntime.jsx("span", { children: text })
7766
8064
  ] });
@@ -7774,7 +8072,7 @@ var stockStatusValues = [
7774
8072
  "preorder",
7775
8073
  "backorder"
7776
8074
  ];
7777
- var Root33 = styles.styled("div")({
8075
+ var Root38 = styles.styled("div")({
7778
8076
  display: "flex",
7779
8077
  flexDirection: "column",
7780
8078
  gap: "0.5rem"
@@ -7796,88 +8094,231 @@ var OptionButton = styles.styled("button", {
7796
8094
  appearance: "none",
7797
8095
  cursor: "pointer",
7798
8096
  fontFamily: theme.typography.fontFamily,
7799
- fontSize: "0.875rem",
8097
+ fontSize: "0.875rem",
8098
+ fontWeight: 500,
8099
+ transition: "border-color 150ms ease, background-color 150ms ease, box-shadow 150ms ease",
8100
+ "&:disabled": {
8101
+ opacity: 0.4,
8102
+ cursor: "not-allowed",
8103
+ textDecoration: $mode === "button" ? "line-through" : "none"
8104
+ },
8105
+ "&:focus-visible": {
8106
+ outline: `3px solid ${theme.palette.primary.main}`,
8107
+ outlineOffset: "2px"
8108
+ },
8109
+ ...$mode === "swatch" ? {
8110
+ width: "2rem",
8111
+ height: "2rem",
8112
+ borderRadius: "50%",
8113
+ border: $active ? `3px solid ${theme.palette.primary.main}` : `2px solid ${theme.palette.divider}`,
8114
+ boxShadow: $active ? `0 0 0 2px ${theme.palette.background.paper}, 0 0 0 4px ${theme.palette.primary.main}` : "none",
8115
+ padding: 0,
8116
+ background: "currentColor"
8117
+ } : {
8118
+ padding: "0.375rem 0.875rem",
8119
+ border: $active ? `2px solid ${theme.palette.primary.main}` : `1px solid ${theme.palette.divider}`,
8120
+ borderRadius: theme.shape.borderRadius,
8121
+ backgroundColor: $active ? `${theme.palette.primary.main}14` : "transparent",
8122
+ color: $active ? theme.palette.primary.main : theme.palette.text.primary
8123
+ }
8124
+ }));
8125
+ var Select2 = styles.styled("select")(({ theme }) => ({
8126
+ padding: "0.5rem 2rem 0.5rem 0.75rem",
8127
+ border: `1px solid ${theme.palette.divider}`,
8128
+ borderRadius: theme.shape.borderRadius,
8129
+ backgroundColor: theme.palette.background.paper,
8130
+ color: theme.palette.text.primary,
8131
+ fontFamily: theme.typography.fontFamily,
8132
+ fontSize: "0.875rem",
8133
+ cursor: "pointer",
8134
+ appearance: "none",
8135
+ backgroundImage: `url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24'%3E%3Cpath fill='%23666' d='M7 10l5 5 5-5z'/%3E%3C/svg%3E")`,
8136
+ backgroundRepeat: "no-repeat",
8137
+ backgroundPosition: "right 0.75rem center",
8138
+ "&:focus": {
8139
+ outline: `3px solid ${theme.palette.primary.main}`,
8140
+ outlineOffset: "2px"
8141
+ }
8142
+ }));
8143
+ var VariantSelector = react.forwardRef(
8144
+ ({ label, options, value, onChange, mode = "button", disabled, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(Root38, { ref, ...props, children: [
8145
+ /* @__PURE__ */ jsxRuntime.jsxs(Label4, { children: [
8146
+ label,
8147
+ value && mode !== "swatch" && /* @__PURE__ */ jsxRuntime.jsx("span", { style: { fontWeight: 400, marginLeft: "0.375rem" }, children: options.find((o) => o.value === value)?.label })
8148
+ ] }),
8149
+ mode === "dropdown" ? /* @__PURE__ */ jsxRuntime.jsx(
8150
+ Select2,
8151
+ {
8152
+ value: value ?? "",
8153
+ onChange: (e) => onChange?.(e.target.value),
8154
+ disabled,
8155
+ "aria-label": label,
8156
+ children: options.map((opt) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: opt.value, disabled: opt.disabled, children: opt.label }, opt.value))
8157
+ }
8158
+ ) : /* @__PURE__ */ jsxRuntime.jsx(OptionsRow, { role: "radiogroup", "aria-label": label, children: options.map((opt) => /* @__PURE__ */ jsxRuntime.jsx(
8159
+ OptionButton,
8160
+ {
8161
+ type: "button",
8162
+ $active: value === opt.value,
8163
+ $mode: mode,
8164
+ disabled: opt.disabled || disabled,
8165
+ style: mode === "swatch" ? { color: opt.color ?? "#ccc" } : void 0,
8166
+ title: opt.label,
8167
+ "aria-label": opt.label,
8168
+ "aria-pressed": value === opt.value,
8169
+ onClick: () => onChange?.(opt.value),
8170
+ children: mode === "button" && opt.label
8171
+ },
8172
+ opt.value
8173
+ )) })
8174
+ ] })
8175
+ );
8176
+ VariantSelector.displayName = "VariantSelector";
8177
+ var variantSelectorModes = ["button", "swatch", "dropdown"];
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",
7800
8267
  fontWeight: 500,
7801
- transition: "border-color 150ms ease, background-color 150ms ease, box-shadow 150ms ease",
7802
- "&:disabled": {
7803
- opacity: 0.4,
7804
- cursor: "not-allowed",
7805
- textDecoration: $mode === "button" ? "line-through" : "none"
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
7806
8273
  },
7807
8274
  "&:focus-visible": {
7808
8275
  outline: `3px solid ${theme.palette.primary.main}`,
7809
8276
  outlineOffset: "2px"
7810
- },
7811
- ...$mode === "swatch" ? {
7812
- width: "2rem",
7813
- height: "2rem",
7814
- borderRadius: "50%",
7815
- border: $active ? `3px solid ${theme.palette.primary.main}` : `2px solid ${theme.palette.divider}`,
7816
- boxShadow: $active ? `0 0 0 2px ${theme.palette.background.paper}, 0 0 0 4px ${theme.palette.primary.main}` : "none",
7817
- padding: 0,
7818
- background: "currentColor"
7819
- } : {
7820
- padding: "0.375rem 0.875rem",
7821
- border: $active ? `2px solid ${theme.palette.primary.main}` : `1px solid ${theme.palette.divider}`,
7822
- borderRadius: theme.shape.borderRadius,
7823
- backgroundColor: $active ? `${theme.palette.primary.main}14` : "transparent",
7824
- color: $active ? theme.palette.primary.main : theme.palette.text.primary
7825
8277
  }
7826
8278
  }));
7827
- var Select2 = styles.styled("select")(({ theme }) => ({
7828
- padding: "0.5rem 2rem 0.5rem 0.75rem",
7829
- border: `1px solid ${theme.palette.divider}`,
7830
- borderRadius: theme.shape.borderRadius,
7831
- backgroundColor: theme.palette.background.paper,
7832
- color: theme.palette.text.primary,
7833
- fontFamily: theme.typography.fontFamily,
7834
- fontSize: "0.875rem",
7835
- cursor: "pointer",
7836
- appearance: "none",
7837
- backgroundImage: `url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24'%3E%3Cpath fill='%23666' d='M7 10l5 5 5-5z'/%3E%3C/svg%3E")`,
7838
- backgroundRepeat: "no-repeat",
7839
- backgroundPosition: "right 0.75rem center",
7840
- "&:focus": {
7841
- outline: `3px solid ${theme.palette.primary.main}`,
7842
- outlineOffset: "2px"
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"
7843
8303
  }
7844
8304
  }));
7845
- var VariantSelector = react.forwardRef(
7846
- ({ label, options, value, onChange, mode = "button", disabled, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(Root33, { ref, ...props, children: [
7847
- /* @__PURE__ */ jsxRuntime.jsxs(Label4, { children: [
7848
- label,
7849
- value && mode !== "swatch" && /* @__PURE__ */ jsxRuntime.jsx("span", { style: { fontWeight: 400, marginLeft: "0.375rem" }, children: options.find((o) => o.value === value)?.label })
7850
- ] }),
7851
- mode === "dropdown" ? /* @__PURE__ */ jsxRuntime.jsx(
7852
- Select2,
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,
7853
8311
  {
7854
- value: value ?? "",
7855
- onChange: (e) => onChange?.(e.target.value),
7856
- disabled,
7857
- "aria-label": label,
7858
- children: options.map((opt) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: opt.value, disabled: opt.disabled, children: opt.label }, opt.value))
8312
+ commentId: comment.id,
8313
+ likesCount: comment.likesCount,
8314
+ onLike,
8315
+ onReply
7859
8316
  }
7860
- ) : /* @__PURE__ */ jsxRuntime.jsx(OptionsRow, { role: "radiogroup", "aria-label": label, children: options.map((opt) => /* @__PURE__ */ jsxRuntime.jsx(
7861
- OptionButton,
7862
- {
7863
- type: "button",
7864
- $active: value === opt.value,
7865
- $mode: mode,
7866
- disabled: opt.disabled || disabled,
7867
- style: mode === "swatch" ? { color: opt.color ?? "#ccc" } : void 0,
7868
- title: opt.label,
7869
- "aria-label": opt.label,
7870
- "aria-pressed": value === opt.value,
7871
- onClick: () => onChange?.(opt.value),
7872
- children: mode === "button" && opt.label
7873
- },
7874
- opt.value
7875
- )) })
8317
+ )
7876
8318
  ] })
7877
8319
  );
7878
- VariantSelector.displayName = "VariantSelector";
7879
- var variantSelectorModes = ["button", "swatch", "dropdown"];
7880
- var Root34 = styles.styled("div")(({ theme }) => ({
8320
+ CommentCard.displayName = "CommentCard";
8321
+ var Root42 = styles.styled("div")(({ theme }) => ({
7881
8322
  borderBottom: `1px solid ${theme.palette.divider}`
7882
8323
  }));
7883
8324
  var Trigger2 = styles.styled("button")(({ theme }) => ({
@@ -7925,7 +8366,7 @@ var PanelInner = styles.styled("p")(({ theme }) => ({
7925
8366
  var FaqItem = react.forwardRef(
7926
8367
  ({ item, defaultOpen = false, ...props }, ref) => {
7927
8368
  const [open, setOpen] = react.useState(defaultOpen);
7928
- return /* @__PURE__ */ jsxRuntime.jsxs(Root34, { ref, ...props, children: [
8369
+ return /* @__PURE__ */ jsxRuntime.jsxs(Root42, { ref, ...props, children: [
7929
8370
  /* @__PURE__ */ jsxRuntime.jsxs(Trigger2, { type: "button", "aria-expanded": open, onClick: () => setOpen((prev) => !prev), children: [
7930
8371
  item.question,
7931
8372
  /* @__PURE__ */ jsxRuntime.jsx(ChevronIcon2, { $open: open, "aria-hidden": "true" })
@@ -7973,21 +8414,21 @@ var Title2 = styles.styled("h3")(({ theme }) => ({
7973
8414
  color: theme.palette.text.primary,
7974
8415
  lineHeight: 1.4
7975
8416
  }));
7976
- var Description4 = styles.styled("p")(({ theme }) => ({
8417
+ var Description5 = styles.styled("p")(({ theme }) => ({
7977
8418
  margin: "0.375rem 0 0",
7978
8419
  fontFamily: theme.typography.fontFamily,
7979
8420
  fontSize: "0.9rem",
7980
8421
  color: theme.palette.text.secondary,
7981
8422
  lineHeight: 1.6
7982
8423
  }));
7983
- var FeatureItem2 = react.forwardRef(
8424
+ var FeatureItem = react.forwardRef(
7984
8425
  ({ feature, cardVariant = "default", layout = "card", ...props }, ref) => {
7985
8426
  if (layout === "icon-left") {
7986
8427
  return /* @__PURE__ */ jsxRuntime.jsxs(IconLeftRoot, { ref, ...props, children: [
7987
8428
  feature.icon && /* @__PURE__ */ jsxRuntime.jsx(IconWrapper, { children: feature.icon }),
7988
8429
  /* @__PURE__ */ jsxRuntime.jsxs(TextGroup2, { children: [
7989
8430
  /* @__PURE__ */ jsxRuntime.jsx(Title2, { children: feature.title }),
7990
- /* @__PURE__ */ jsxRuntime.jsx(Description4, { children: feature.description })
8431
+ /* @__PURE__ */ jsxRuntime.jsx(Description5, { children: feature.description })
7991
8432
  ] })
7992
8433
  ] });
7993
8434
  }
@@ -7995,13 +8436,13 @@ var FeatureItem2 = react.forwardRef(
7995
8436
  feature.icon && /* @__PURE__ */ jsxRuntime.jsx(IconWrapper, { children: feature.icon }),
7996
8437
  /* @__PURE__ */ jsxRuntime.jsxs(TextGroup2, { children: [
7997
8438
  /* @__PURE__ */ jsxRuntime.jsx(Title2, { children: feature.title }),
7998
- /* @__PURE__ */ jsxRuntime.jsx(Description4, { children: feature.description })
8439
+ /* @__PURE__ */ jsxRuntime.jsx(Description5, { children: feature.description })
7999
8440
  ] })
8000
8441
  ] });
8001
8442
  }
8002
8443
  );
8003
- FeatureItem2.displayName = "FeatureItem";
8004
- var Root35 = styles.styled("div")({
8444
+ FeatureItem.displayName = "FeatureItem";
8445
+ var Root43 = styles.styled("div")({
8005
8446
  display: "flex",
8006
8447
  flexDirection: "column",
8007
8448
  alignItems: "center",
@@ -8040,7 +8481,7 @@ var Title3 = styles.styled("h3")(({ theme }) => ({
8040
8481
  fontSize: "1rem",
8041
8482
  color: theme.palette.text.primary
8042
8483
  }));
8043
- var Description5 = styles.styled("p")(({ theme }) => ({
8484
+ var Description6 = styles.styled("p")(({ theme }) => ({
8044
8485
  margin: 0,
8045
8486
  fontFamily: theme.typography.fontFamily,
8046
8487
  fontSize: "0.875rem",
@@ -8049,10 +8490,10 @@ var Description5 = styles.styled("p")(({ theme }) => ({
8049
8490
  maxWidth: "18rem"
8050
8491
  }));
8051
8492
  var ProcessStep = react.forwardRef(
8052
- ({ step, title, description, icon, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(Root35, { ref, ...props, children: [
8493
+ ({ step, title, description, icon, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(Root43, { ref, ...props, children: [
8053
8494
  /* @__PURE__ */ jsxRuntime.jsx(StepBadge, { "aria-hidden": "true", children: icon ? /* @__PURE__ */ jsxRuntime.jsx(IconWrapper2, { children: icon }) : /* @__PURE__ */ jsxRuntime.jsx(StepNumber, { children: step }) }),
8054
8495
  /* @__PURE__ */ jsxRuntime.jsx(Title3, { children: title }),
8055
- description && /* @__PURE__ */ jsxRuntime.jsx(Description5, { children: description })
8496
+ description && /* @__PURE__ */ jsxRuntime.jsx(Description6, { children: description })
8056
8497
  ] })
8057
8498
  );
8058
8499
  ProcessStep.displayName = "ProcessStep";
@@ -8175,7 +8616,7 @@ function getDotColor(status, theme) {
8175
8616
  return theme.palette.mode === "dark" ? "rgba(255,255,255,0.2)" : "rgba(0,0,0,0.15)";
8176
8617
  }
8177
8618
  }
8178
- var List = styles.styled("ol")({
8619
+ var List2 = styles.styled("ol")({
8179
8620
  listStyle: "none",
8180
8621
  margin: 0,
8181
8622
  padding: 0,
@@ -8235,7 +8676,7 @@ var Dot3 = styles.styled("span", {
8235
8676
  }
8236
8677
  }
8237
8678
  }));
8238
- var Content4 = styles.styled("div")({ flex: 1, minWidth: 0, paddingTop: "0.0625rem" });
8679
+ var Content2 = styles.styled("div")({ flex: 1, minWidth: 0, paddingTop: "0.0625rem" });
8239
8680
  var TitleRow = styles.styled("div")({
8240
8681
  display: "flex",
8241
8682
  alignItems: "baseline",
@@ -8258,7 +8699,7 @@ var Date2 = styles.styled("time")(({ theme }) => ({
8258
8699
  color: theme.palette.text.secondary,
8259
8700
  whiteSpace: "nowrap"
8260
8701
  }));
8261
- var Description6 = styles.styled("div")(({ theme }) => ({
8702
+ var Description7 = styles.styled("div")(({ theme }) => ({
8262
8703
  marginTop: "0.25rem",
8263
8704
  fontFamily: theme.typography.fontFamily,
8264
8705
  fontSize: "0.875rem",
@@ -8280,19 +8721,19 @@ function TimelineItemComponent({
8280
8721
  const hasIcon = Boolean(item.icon);
8281
8722
  return /* @__PURE__ */ jsxRuntime.jsxs(ItemRow, { $compact: compact, $last: last, children: [
8282
8723
  /* @__PURE__ */ jsxRuntime.jsx(DotCol, { $last: last, children: /* @__PURE__ */ jsxRuntime.jsx(Dot3, { $status: status, $hasIcon: hasIcon, children: item.icon ?? /* @__PURE__ */ jsxRuntime.jsx(StatusIcon, { status }) }) }),
8283
- /* @__PURE__ */ jsxRuntime.jsxs(Content4, { children: [
8724
+ /* @__PURE__ */ jsxRuntime.jsxs(Content2, { children: [
8284
8725
  /* @__PURE__ */ jsxRuntime.jsxs(TitleRow, { children: [
8285
8726
  /* @__PURE__ */ jsxRuntime.jsx(Title4, { $compact: compact, children: item.title }),
8286
8727
  item.date && /* @__PURE__ */ jsxRuntime.jsx(Date2, { dateTime: item.date, children: item.date })
8287
8728
  ] }),
8288
- item.description && /* @__PURE__ */ jsxRuntime.jsx(Description6, { children: item.description })
8729
+ item.description && /* @__PURE__ */ jsxRuntime.jsx(Description7, { children: item.description })
8289
8730
  ] })
8290
8731
  ] });
8291
8732
  }
8292
8733
  var Timeline = react.forwardRef(
8293
8734
  ({ items, variant = "default", align: _align = "left", ...props }, ref) => {
8294
8735
  const compact = variant === "compact";
8295
- return /* @__PURE__ */ jsxRuntime.jsx(List, { ref, "aria-label": "O\u015B czasu", ...props, children: items.map((item, i) => /* @__PURE__ */ jsxRuntime.jsx(
8736
+ return /* @__PURE__ */ jsxRuntime.jsx(List2, { ref, "aria-label": "O\u015B czasu", ...props, children: items.map((item, i) => /* @__PURE__ */ jsxRuntime.jsx(
8296
8737
  TimelineItemComponent,
8297
8738
  {
8298
8739
  item,
@@ -8311,7 +8752,7 @@ var timelineItemStatuses = [
8311
8752
  "pending",
8312
8753
  "error"
8313
8754
  ];
8314
- var Root36 = styles.styled("div")({
8755
+ var Root44 = styles.styled("div")({
8315
8756
  position: "relative",
8316
8757
  width: "100%",
8317
8758
  overflow: "hidden",
@@ -8421,7 +8862,7 @@ function Carousel({
8421
8862
  }, [prev, next]);
8422
8863
  if (!count) return null;
8423
8864
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className, children: [
8424
- /* @__PURE__ */ jsxRuntime.jsxs(Root36, { "aria-roledescription": "carousel", children: [
8865
+ /* @__PURE__ */ jsxRuntime.jsxs(Root44, { "aria-roledescription": "carousel", children: [
8425
8866
  /* @__PURE__ */ jsxRuntime.jsx(Track4, { $index: index, "aria-live": "polite", children: slides.map((slide, i) => /* @__PURE__ */ jsxRuntime.jsx(
8426
8867
  Slide,
8427
8868
  {
@@ -8468,6 +8909,46 @@ function Carousel({
8468
8909
  )) })
8469
8910
  ] });
8470
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";
8471
8952
  var Wrapper4 = styles.styled("div")(({ theme }) => ({
8472
8953
  borderRadius: "0.75rem",
8473
8954
  overflow: "hidden",
@@ -8769,7 +9250,7 @@ var Nav = styles.styled("nav")(({ theme }) => ({
8769
9250
  fontSize: "0.875rem",
8770
9251
  color: theme.palette.text.secondary
8771
9252
  }));
8772
- var List2 = styles.styled("ol")({
9253
+ var List3 = styles.styled("ol")({
8773
9254
  display: "flex",
8774
9255
  alignItems: "center",
8775
9256
  flexWrap: "wrap",
@@ -8793,7 +9274,7 @@ var Separator2 = styles.styled("span")(({ theme }) => ({
8793
9274
  color: theme.palette.text.disabled
8794
9275
  }));
8795
9276
  var Breadcrumbs = react.forwardRef(
8796
- ({ items, separator = "/", ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(Nav, { ref, "aria-label": "\u015Acie\u017Cka nawigacji", ...props, children: /* @__PURE__ */ jsxRuntime.jsx(List2, { children: items.map((item, index) => {
9277
+ ({ items, separator = "/", ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(Nav, { ref, "aria-label": "\u015Acie\u017Cka nawigacji", ...props, children: /* @__PURE__ */ jsxRuntime.jsx(List3, { children: items.map((item, index) => {
8797
9278
  const isLast = index === items.length - 1;
8798
9279
  return /* @__PURE__ */ jsxRuntime.jsxs("li", { children: [
8799
9280
  item.href && !isLast ? /* @__PURE__ */ jsxRuntime.jsx(Link2, { href: item.href, children: item.label }) : /* @__PURE__ */ jsxRuntime.jsx(Current2, { "aria-current": isLast ? "page" : void 0, children: item.label }),
@@ -8805,7 +9286,7 @@ var Breadcrumbs = react.forwardRef(
8805
9286
  }) }) })
8806
9287
  );
8807
9288
  Breadcrumbs.displayName = "Breadcrumbs";
8808
- var sizeMap6 = {
9289
+ var sizeMap7 = {
8809
9290
  sm: { minWidth: "1.75rem", height: "1.75rem", fontSize: "0.75rem" },
8810
9291
  md: { minWidth: "2rem", height: "2rem", fontSize: "0.875rem" },
8811
9292
  lg: { minWidth: "2.5rem", height: "2.5rem", fontSize: "1rem" }
@@ -8834,7 +9315,7 @@ var StyledButton2 = styles.styled("button")(({ theme, $isActive, $size }) => ({
8834
9315
  lineHeight: 1,
8835
9316
  padding: "0 0.25rem",
8836
9317
  transition: "background-color 150ms ease",
8837
- ...sizeMap6[$size],
9318
+ ...sizeMap7[$size],
8838
9319
  ...$isActive ? activeStyles(theme) : idleStyles(theme),
8839
9320
  "&:focus-visible": {
8840
9321
  outline: `3px solid ${theme.palette.primary.main}`,
@@ -8863,7 +9344,7 @@ var PaginationButton = react.forwardRef(
8863
9344
  )
8864
9345
  );
8865
9346
  PaginationButton.displayName = "PaginationButton";
8866
- var sizeMap7 = {
9347
+ var sizeMap8 = {
8867
9348
  sm: { minWidth: "1.75rem", height: "1.75rem", fontSize: "0.75rem" },
8868
9349
  md: { minWidth: "2rem", height: "2rem", fontSize: "0.875rem" },
8869
9350
  lg: { minWidth: "2.5rem", height: "2.5rem", fontSize: "1rem" }
@@ -8874,7 +9355,7 @@ var StyledEllipsis = styles.styled("span")(({ theme, $size }) => ({
8874
9355
  justifyContent: "center",
8875
9356
  color: theme.palette.text.secondary,
8876
9357
  userSelect: "none",
8877
- ...sizeMap7[$size]
9358
+ ...sizeMap8[$size]
8878
9359
  }));
8879
9360
  var PaginationEllipsis = ({ size = "md" }) => /* @__PURE__ */ jsxRuntime.jsx(StyledEllipsis, { $size: size, "aria-hidden": "true", children: "\u2026" });
8880
9361
  PaginationEllipsis.displayName = "PaginationEllipsis";
@@ -8984,7 +9465,7 @@ var PaginationBar = ({
8984
9465
  ] });
8985
9466
  };
8986
9467
  PaginationBar.displayName = "PaginationBar";
8987
- var Root37 = styles.styled("div", {
9468
+ var Root45 = styles.styled("div", {
8988
9469
  shouldForwardProp: (p) => p !== "$variant"
8989
9470
  })(({ theme, $variant }) => ({
8990
9471
  width: "100%",
@@ -8999,7 +9480,7 @@ var Root37 = styles.styled("div", {
8999
9480
  gap: "0.5rem"
9000
9481
  }
9001
9482
  }));
9002
- var Item = styles.styled("div", {
9483
+ var Item2 = styles.styled("div", {
9003
9484
  shouldForwardProp: (p) => !["$variant", "$disabled"].includes(p)
9004
9485
  })(({ theme, $variant, $disabled }) => ({
9005
9486
  opacity: $disabled ? 0.5 : 1,
@@ -9094,11 +9575,11 @@ var Accordion = react.forwardRef(
9094
9575
  if (controlledKeys === void 0) setInternalKeys(next);
9095
9576
  onChange?.(next);
9096
9577
  };
9097
- return /* @__PURE__ */ jsxRuntime.jsx(Root37, { ref, $variant: variant, ...props, children: items.map((item) => {
9578
+ return /* @__PURE__ */ jsxRuntime.jsx(Root45, { ref, $variant: variant, ...props, children: items.map((item) => {
9098
9579
  const isOpen = openKeys.includes(item.key);
9099
9580
  const panelId = `accordion-panel-${item.key}`;
9100
9581
  const triggerId = `accordion-trigger-${item.key}`;
9101
- return /* @__PURE__ */ jsxRuntime.jsxs(Item, { $variant: variant, $disabled: Boolean(item.disabled), children: [
9582
+ return /* @__PURE__ */ jsxRuntime.jsxs(Item2, { $variant: variant, $disabled: Boolean(item.disabled), children: [
9102
9583
  /* @__PURE__ */ jsxRuntime.jsxs(
9103
9584
  Trigger3,
9104
9585
  {
@@ -9123,32 +9604,31 @@ var Accordion = react.forwardRef(
9123
9604
  );
9124
9605
  Accordion.displayName = "Accordion";
9125
9606
  var accordionVariants = ["default", "bordered", "separated"];
9126
- var SEVERITY_COLORS = {
9127
- info: { bg: "rgba(25,118,210,0.08)", color: "#1565c0", border: "rgba(25,118,210,0.3)" },
9128
- success: { bg: "rgba(34,197,94,0.1)", color: "#15803d", border: "rgba(34,197,94,0.35)" },
9129
- warning: { bg: "rgba(245,158,11,0.1)", color: "#b45309", border: "rgba(245,158,11,0.35)" },
9130
- error: { bg: "rgba(211,47,47,0.08)", color: "#c62828", border: "rgba(211,47,47,0.3)" }
9131
- };
9132
9607
  var ICONS = {
9133
9608
  info: /* @__PURE__ */ jsxRuntime.jsx(InfoOutlinedIcon__default.default, { "aria-hidden": true, style: { fontSize: 20 } }),
9134
9609
  success: /* @__PURE__ */ jsxRuntime.jsx(CheckCircleOutlinedIcon__default.default, { "aria-hidden": true, style: { fontSize: 20 } }),
9135
9610
  warning: /* @__PURE__ */ jsxRuntime.jsx(WarningAmberOutlinedIcon__default.default, { "aria-hidden": true, style: { fontSize: 20 } }),
9136
9611
  error: /* @__PURE__ */ jsxRuntime.jsx(ErrorOutlineOutlinedIcon__default.default, { "aria-hidden": true, style: { fontSize: 20 } })
9137
9612
  };
9138
- var Root38 = styles.styled("div", {
9613
+ var Root46 = styles.styled("div", {
9139
9614
  shouldForwardProp: (prop) => prop !== "$severity"
9140
9615
  })(({ theme, $severity }) => {
9141
- 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];
9142
9622
  return {
9143
9623
  display: "flex",
9144
9624
  gap: "0.75rem",
9145
9625
  padding: "0.875rem 1rem",
9146
9626
  borderRadius: theme.shape.borderRadius,
9147
- border: `1px solid ${c.border}`,
9148
- backgroundColor: c.bg,
9149
- color: c.color,
9627
+ border: `1px solid ${palette.dark}`,
9628
+ backgroundColor: palette.main,
9629
+ color: palette.contrastText,
9150
9630
  fontFamily: theme.typography.fontFamily,
9151
- fontSize: "0.9375rem"
9631
+ fontSize: "1rem"
9152
9632
  };
9153
9633
  });
9154
9634
  var IconSlot2 = styles.styled("span")({
@@ -9180,11 +9660,11 @@ var CloseButton2 = styles.styled("button")(({ theme }) => ({
9180
9660
  }
9181
9661
  }));
9182
9662
  var Alert = react.forwardRef(
9183
- ({ severity = "info", title, children, onClose, icon, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(Root38, { 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: [
9184
9664
  /* @__PURE__ */ jsxRuntime.jsx(IconSlot2, { children: icon ?? ICONS[severity] }),
9185
9665
  /* @__PURE__ */ jsxRuntime.jsxs(Body, { children: [
9186
9666
  title && /* @__PURE__ */ jsxRuntime.jsx(Title5, { children: title }),
9187
- children
9667
+ typeof children === "string" ? /* @__PURE__ */ jsxRuntime.jsx("span", { dangerouslySetInnerHTML: { __html: children } }) : children
9188
9668
  ] }),
9189
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 } }) })
9190
9670
  ] })
@@ -9201,7 +9681,7 @@ var POSITION_MAP = {
9201
9681
  var Btn = styles.styled("button", {
9202
9682
  shouldForwardProp: (p) => !["$variant", "$visible", "$position"].includes(p)
9203
9683
  })(({ theme, $variant, $visible, $position }) => {
9204
- const variantStyles2 = {
9684
+ const variantStyles3 = {
9205
9685
  default: {
9206
9686
  backgroundColor: theme.palette.background.paper,
9207
9687
  border: `1px solid ${theme.palette.divider}`,
@@ -9242,7 +9722,7 @@ var Btn = styles.styled("button", {
9242
9722
  outlineOffset: "3px"
9243
9723
  },
9244
9724
  ...POSITION_MAP[$position],
9245
- ...variantStyles2
9725
+ ...variantStyles3
9246
9726
  };
9247
9727
  });
9248
9728
  function BackToTop({
@@ -9430,7 +9910,7 @@ var ContextMenu = react.forwardRef(
9430
9910
  }
9431
9911
  );
9432
9912
  ContextMenu.displayName = "ContextMenu";
9433
- var Root39 = styles.styled("div")(({ theme }) => ({
9913
+ var Root47 = styles.styled("div")(({ theme }) => ({
9434
9914
  display: "flex",
9435
9915
  flexDirection: "column",
9436
9916
  alignItems: "center",
@@ -9451,18 +9931,18 @@ var Title6 = styles.styled("h3")(({ theme }) => ({
9451
9931
  fontWeight: 700,
9452
9932
  color: theme.palette.text.primary
9453
9933
  }));
9454
- var Description7 = styles.styled("p")(({ theme }) => ({
9934
+ var Description8 = styles.styled("p")(({ theme }) => ({
9455
9935
  margin: 0,
9456
9936
  fontSize: "0.9375rem",
9457
9937
  color: theme.palette.text.secondary,
9458
9938
  maxWidth: "28rem"
9459
9939
  }));
9460
9940
  var EmptyState = react.forwardRef(
9461
- ({ icon, title, description, action, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(Root39, { ref, ...props, children: [
9941
+ ({ icon, title, description, action, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(Root47, { ref, ...props, children: [
9462
9942
  /* @__PURE__ */ jsxRuntime.jsx(IconWrap3, { "aria-hidden": true, children: icon ?? /* @__PURE__ */ jsxRuntime.jsx(InboxOutlinedIcon__default.default, {}) }),
9463
9943
  /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
9464
9944
  /* @__PURE__ */ jsxRuntime.jsx(Title6, { children: title }),
9465
- description && /* @__PURE__ */ jsxRuntime.jsx(Description7, { style: { marginTop: "0.5rem" }, children: description })
9945
+ description && /* @__PURE__ */ jsxRuntime.jsx(Description8, { style: { marginTop: "0.5rem" }, children: description })
9466
9946
  ] }),
9467
9947
  action && /* @__PURE__ */ jsxRuntime.jsx("div", { children: action })
9468
9948
  ] })
@@ -9478,7 +9958,7 @@ var FONT_SIZE2 = {
9478
9958
  md: "0.9375rem",
9479
9959
  lg: "1rem"
9480
9960
  };
9481
- var Root40 = styles.styled("ul", {
9961
+ var Root48 = styles.styled("ul", {
9482
9962
  shouldForwardProp: (p) => p !== "$variant"
9483
9963
  })(({ theme, $variant }) => ({
9484
9964
  listStyle: "none",
@@ -9496,7 +9976,7 @@ var Root40 = styles.styled("ul", {
9496
9976
  gap: "0.375rem"
9497
9977
  }
9498
9978
  }));
9499
- var Item2 = styles.styled("li", {
9979
+ var Item3 = styles.styled("li", {
9500
9980
  shouldForwardProp: (p) => !["$size", "$variant", "$clickable", "$disabled"].includes(p)
9501
9981
  })(({ theme, $size, $variant, $clickable, $disabled }) => ({
9502
9982
  display: "flex",
@@ -9570,11 +10050,11 @@ var SuffixWrap = styles.styled("span")({
9570
10050
  display: "flex",
9571
10051
  alignItems: "center"
9572
10052
  });
9573
- var List3 = react.forwardRef(
10053
+ var List4 = react.forwardRef(
9574
10054
  ({ items, size = "md", variant = "default", dividers = true, ...props }, ref) => {
9575
10055
  const effectiveVariant = !dividers && variant === "default" ? "default" : variant;
9576
- return /* @__PURE__ */ jsxRuntime.jsx(Root40, { ref, $variant: effectiveVariant, role: "list", ...props, children: items.map((item) => /* @__PURE__ */ jsxRuntime.jsxs(
9577
- Item2,
10056
+ return /* @__PURE__ */ jsxRuntime.jsx(Root48, { ref, $variant: effectiveVariant, role: "list", ...props, children: items.map((item) => /* @__PURE__ */ jsxRuntime.jsxs(
10057
+ Item3,
9578
10058
  {
9579
10059
  role: "listitem",
9580
10060
  $size: size,
@@ -9596,7 +10076,7 @@ var List3 = react.forwardRef(
9596
10076
  )) });
9597
10077
  }
9598
10078
  );
9599
- List3.displayName = "List";
10079
+ List4.displayName = "List";
9600
10080
  var listVariants = ["default", "bordered", "separated"];
9601
10081
  var listSizes = ["sm", "md", "lg"];
9602
10082
  var scrollLeft = styles.keyframes`
@@ -9612,7 +10092,7 @@ var speedDuration = {
9612
10092
  normal: "20s",
9613
10093
  fast: "10s"
9614
10094
  };
9615
- var Root41 = styles.styled("div")({
10095
+ var Root49 = styles.styled("div")({
9616
10096
  overflow: "hidden",
9617
10097
  width: "100%",
9618
10098
  userSelect: "none"
@@ -9643,7 +10123,7 @@ var Marquee = react.forwardRef(
9643
10123
  /* @__PURE__ */ jsxRuntime.jsx(ItemWrap, { $gap: gapValue, "aria-hidden": "false", children }),
9644
10124
  /* @__PURE__ */ jsxRuntime.jsx(ItemWrap, { $gap: gapValue, "aria-hidden": "true", children })
9645
10125
  ] });
9646
- return /* @__PURE__ */ jsxRuntime.jsx(Root41, { 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 }) });
9647
10127
  }
9648
10128
  );
9649
10129
  Marquee.displayName = "Marquee";
@@ -9689,7 +10169,7 @@ var Dialog = styles.styled("div", {
9689
10169
  margin: 0
9690
10170
  }
9691
10171
  }));
9692
- var Header = styles.styled("div")(({ theme }) => ({
10172
+ var Header2 = styles.styled("div")(({ theme }) => ({
9693
10173
  display: "flex",
9694
10174
  alignItems: "center",
9695
10175
  justifyContent: "space-between",
@@ -9786,7 +10266,7 @@ function Modal({
9786
10266
  tabIndex: -1,
9787
10267
  onClick: (e) => e.stopPropagation(),
9788
10268
  children: [
9789
- (title || !hideCloseButton) && /* @__PURE__ */ jsxRuntime.jsxs(Header, { children: [
10269
+ (title || !hideCloseButton) && /* @__PURE__ */ jsxRuntime.jsxs(Header2, { children: [
9790
10270
  title ? /* @__PURE__ */ jsxRuntime.jsx(Title7, { id: "modal-title", children: title }) : /* @__PURE__ */ jsxRuntime.jsx("span", {}),
9791
10271
  !hideCloseButton && /* @__PURE__ */ jsxRuntime.jsx(CloseButton3, { "aria-label": "Zamknij", onClick: onClose, children: /* @__PURE__ */ jsxRuntime.jsx(CloseIcon__default.default, { "aria-hidden": true, style: { fontSize: 16 } }) })
9792
10272
  ] }),
@@ -9799,7 +10279,7 @@ function Modal({
9799
10279
  );
9800
10280
  }
9801
10281
  var modalSizes = ["sm", "md", "lg", "xl", "full"];
9802
- var Root42 = styles.styled("div")({ width: "100%" });
10282
+ var Root50 = styles.styled("div")({ width: "100%" });
9803
10283
  var TabList = styles.styled("div", {
9804
10284
  shouldForwardProp: (prop) => prop !== "$variant"
9805
10285
  })(({ theme, $variant }) => ({
@@ -9879,7 +10359,7 @@ var Tabs = react.forwardRef(
9879
10359
  onChange?.(key);
9880
10360
  };
9881
10361
  const activeTab = tabs.find((t) => t.key === activeKey);
9882
- return /* @__PURE__ */ jsxRuntime.jsxs(Root42, { ref, ...props, children: [
10362
+ return /* @__PURE__ */ jsxRuntime.jsxs(Root50, { ref, ...props, children: [
9883
10363
  /* @__PURE__ */ jsxRuntime.jsx(TabList, { role: "tablist", $variant: variant, children: tabs.map((tab) => /* @__PURE__ */ jsxRuntime.jsx(
9884
10364
  TabButton,
9885
10365
  {
@@ -9911,6 +10391,79 @@ var Tabs = react.forwardRef(
9911
10391
  );
9912
10392
  Tabs.displayName = "Tabs";
9913
10393
  var tabsVariants = ["underline", "pills", "bordered"];
10394
+ var Root51 = styles.styled("div")(({ theme }) => ({
10395
+ display: "grid",
10396
+ gridTemplateColumns: "4.5rem 1fr",
10397
+ gap: "0.875rem",
10398
+ paddingBottom: "1rem",
10399
+ borderBottom: `1px solid ${theme.palette.divider}`
10400
+ }));
10401
+ var ImageWrap4 = styles.styled("div")(({ theme }) => ({
10402
+ position: "relative",
10403
+ width: "4.5rem",
10404
+ height: "4.5rem",
10405
+ borderRadius: theme.shape.borderRadius,
10406
+ overflow: "hidden",
10407
+ flexShrink: 0
10408
+ }));
10409
+ var Info5 = styles.styled("div")({ display: "grid", gap: "0.5rem" });
10410
+ var Row5 = styles.styled("div")({
10411
+ display: "flex",
10412
+ alignItems: "center",
10413
+ justifyContent: "space-between",
10414
+ gap: "0.75rem"
10415
+ });
10416
+ var Name12 = styles.styled("p")(({ theme }) => ({
10417
+ margin: 0,
10418
+ color: theme.palette.text.primary,
10419
+ fontFamily: theme.typography.fontFamily,
10420
+ fontWeight: 700
10421
+ }));
10422
+ var Price3 = styles.styled("p")(({ theme }) => ({
10423
+ margin: 0,
10424
+ color: theme.palette.text.secondary,
10425
+ fontFamily: theme.typography.fontFamily,
10426
+ fontSize: "0.875rem"
10427
+ }));
10428
+ var RemoveButton2 = styles.styled("button")(({ theme }) => ({
10429
+ border: 0,
10430
+ background: "transparent",
10431
+ color: theme.palette.error.main,
10432
+ cursor: "pointer",
10433
+ padding: 0,
10434
+ fontFamily: theme.typography.fontFamily,
10435
+ fontSize: "0.875rem"
10436
+ }));
10437
+ var CartDrawerItem = ({
10438
+ id,
10439
+ name,
10440
+ price,
10441
+ quantity,
10442
+ imageUrl,
10443
+ imageAlt,
10444
+ onQuantityChange,
10445
+ onRemove
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: [
10449
+ /* @__PURE__ */ jsxRuntime.jsxs(Row5, { children: [
10450
+ /* @__PURE__ */ jsxRuntime.jsx(Name12, { children: name }),
10451
+ /* @__PURE__ */ jsxRuntime.jsx(Price3, { children: price })
10452
+ ] }),
10453
+ /* @__PURE__ */ jsxRuntime.jsxs(Row5, { children: [
10454
+ /* @__PURE__ */ jsxRuntime.jsx(
10455
+ QuantitySelector,
10456
+ {
10457
+ value: quantity,
10458
+ min: 1,
10459
+ onChange: (qty) => onQuantityChange?.(id, qty)
10460
+ }
10461
+ ),
10462
+ /* @__PURE__ */ jsxRuntime.jsx(RemoveButton2, { type: "button", onClick: () => onRemove?.(id), children: "Usu\u0144" })
10463
+ ] })
10464
+ ] })
10465
+ ] });
10466
+ CartDrawerItem.displayName = "CartDrawerItem";
9914
10467
  var Overlay3 = styles.styled("div")(({ $open }) => ({
9915
10468
  position: "fixed",
9916
10469
  inset: 0,
@@ -9930,7 +10483,7 @@ var Panel3 = styles.styled("aside")(({ theme }) => ({
9930
10483
  boxShadow: theme.shadows[5],
9931
10484
  fontFamily: theme.typography.fontFamily
9932
10485
  }));
9933
- var Header2 = styles.styled("div")(({ theme }) => ({
10486
+ var Header3 = styles.styled("div")(({ theme }) => ({
9934
10487
  display: "flex",
9935
10488
  alignItems: "center",
9936
10489
  justifyContent: "space-between",
@@ -9955,51 +10508,12 @@ var Items = styles.styled("div")({
9955
10508
  padding: "1rem 1.25rem",
9956
10509
  overflow: "auto"
9957
10510
  });
9958
- var Item3 = styles.styled("div")(({ theme }) => ({
9959
- display: "grid",
9960
- gridTemplateColumns: "4.5rem 1fr",
9961
- gap: "0.875rem",
9962
- paddingBottom: "1rem",
9963
- borderBottom: `1px solid ${theme.palette.divider}`
9964
- }));
9965
- var ItemImage = styles.styled("img")(({ theme }) => ({
9966
- width: "4.5rem",
9967
- height: "4.5rem",
9968
- borderRadius: theme.shape.borderRadius,
9969
- objectFit: "cover",
9970
- backgroundColor: theme.palette.action.hover
9971
- }));
9972
- var PlaceholderImage = styles.styled("div")(({ theme }) => ({
9973
- width: "4.5rem",
9974
- height: "4.5rem",
9975
- borderRadius: theme.shape.borderRadius,
9976
- backgroundColor: theme.palette.action.hover
9977
- }));
9978
- var ItemInfo = styles.styled("div")({ display: "grid", gap: "0.5rem" });
9979
- var ItemName = styles.styled("p")(({ theme }) => ({
9980
- margin: 0,
9981
- color: theme.palette.text.primary,
9982
- fontWeight: 700
9983
- }));
9984
- var ItemMeta = styles.styled("p")(({ theme }) => ({
9985
- margin: 0,
9986
- color: theme.palette.text.secondary,
9987
- fontSize: "0.875rem"
9988
- }));
9989
- var Row4 = styles.styled("div")({
10511
+ var Row6 = styles.styled("div")({
9990
10512
  display: "flex",
9991
10513
  alignItems: "center",
9992
10514
  justifyContent: "space-between",
9993
10515
  gap: "0.75rem"
9994
10516
  });
9995
- var RemoveButton2 = styles.styled("button")(({ theme }) => ({
9996
- border: 0,
9997
- background: "transparent",
9998
- color: theme.palette.error.main,
9999
- cursor: "pointer",
10000
- padding: 0,
10001
- fontSize: "0.875rem"
10002
- }));
10003
10517
  var Footer5 = styles.styled("div")(({ theme }) => ({
10004
10518
  display: "grid",
10005
10519
  gap: "1rem",
@@ -10021,32 +10535,21 @@ var CartDrawer = react.forwardRef(
10021
10535
  onRemove,
10022
10536
  ...props
10023
10537
  }, ref) => /* @__PURE__ */ jsxRuntime.jsx(Overlay3, { $open: open, children: /* @__PURE__ */ jsxRuntime.jsxs(Panel3, { ref, "aria-hidden": !open, "aria-label": title, ...props, children: [
10024
- /* @__PURE__ */ jsxRuntime.jsxs(Header2, { children: [
10538
+ /* @__PURE__ */ jsxRuntime.jsxs(Header3, { children: [
10025
10539
  /* @__PURE__ */ jsxRuntime.jsx(Title8, { children: title }),
10026
10540
  /* @__PURE__ */ jsxRuntime.jsx(IconButton, { type: "button", "aria-label": closeLabel, onClick: onClose, children: "\xD7" })
10027
10541
  ] }),
10028
- /* @__PURE__ */ jsxRuntime.jsx(Items, { children: items.map((item) => /* @__PURE__ */ jsxRuntime.jsxs(Item3, { children: [
10029
- item.imageUrl ? /* @__PURE__ */ jsxRuntime.jsx(ItemImage, { src: item.imageUrl, alt: item.imageAlt ?? item.name }) : /* @__PURE__ */ jsxRuntime.jsx(PlaceholderImage, {}),
10030
- /* @__PURE__ */ jsxRuntime.jsxs(ItemInfo, { children: [
10031
- /* @__PURE__ */ jsxRuntime.jsxs(Row4, { children: [
10032
- /* @__PURE__ */ jsxRuntime.jsx(ItemName, { children: item.name }),
10033
- /* @__PURE__ */ jsxRuntime.jsx(ItemMeta, { children: item.price })
10034
- ] }),
10035
- /* @__PURE__ */ jsxRuntime.jsxs(Row4, { children: [
10036
- /* @__PURE__ */ jsxRuntime.jsx(
10037
- QuantitySelector,
10038
- {
10039
- value: item.quantity,
10040
- min: 1,
10041
- onChange: (quantity) => onQuantityChange?.(item.id, quantity)
10042
- }
10043
- ),
10044
- /* @__PURE__ */ jsxRuntime.jsx(RemoveButton2, { type: "button", onClick: () => onRemove?.(item.id), children: "Usu\u0144" })
10045
- ] })
10046
- ] })
10047
- ] }, item.id)) }),
10542
+ /* @__PURE__ */ jsxRuntime.jsx(Items, { children: items.map((item) => /* @__PURE__ */ jsxRuntime.jsx(
10543
+ CartDrawerItem,
10544
+ {
10545
+ ...item,
10546
+ onQuantityChange,
10547
+ onRemove
10548
+ },
10549
+ item.id
10550
+ )) }),
10048
10551
  /* @__PURE__ */ jsxRuntime.jsxs(Footer5, { children: [
10049
- /* @__PURE__ */ jsxRuntime.jsxs(Row4, { children: [
10552
+ /* @__PURE__ */ jsxRuntime.jsxs(Row6, { children: [
10050
10553
  /* @__PURE__ */ jsxRuntime.jsx("strong", { children: "Suma" }),
10051
10554
  /* @__PURE__ */ jsxRuntime.jsx("strong", { children: subtotal })
10052
10555
  ] }),
@@ -10055,7 +10558,7 @@ var CartDrawer = react.forwardRef(
10055
10558
  ] }) })
10056
10559
  );
10057
10560
  CartDrawer.displayName = "CartDrawer";
10058
- var Root43 = styles.styled("aside")(({ theme }) => ({
10561
+ var Root52 = styles.styled("aside")(({ theme }) => ({
10059
10562
  display: "grid",
10060
10563
  gap: "1.5rem",
10061
10564
  width: "100%",
@@ -10066,7 +10569,7 @@ var Root43 = styles.styled("aside")(({ theme }) => ({
10066
10569
  backgroundColor: theme.palette.background.paper,
10067
10570
  fontFamily: theme.typography.fontFamily
10068
10571
  }));
10069
- var Header3 = styles.styled("div")({
10572
+ var Header4 = styles.styled("div")({
10070
10573
  display: "flex",
10071
10574
  alignItems: "center",
10072
10575
  justifyContent: "space-between",
@@ -10147,8 +10650,8 @@ var FilterSidebar = react.forwardRef(
10147
10650
  onPriceRangeChange,
10148
10651
  onClear,
10149
10652
  ...props
10150
- }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(Root43, { ref, "aria-label": "Filtry produkt\xF3w", ...props, children: [
10151
- /* @__PURE__ */ jsxRuntime.jsxs(Header3, { children: [
10653
+ }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(Root52, { ref, "aria-label": "Filtry produkt\xF3w", ...props, children: [
10654
+ /* @__PURE__ */ jsxRuntime.jsxs(Header4, { children: [
10152
10655
  /* @__PURE__ */ jsxRuntime.jsx(Title9, { children: "Filtry" }),
10153
10656
  onClear && /* @__PURE__ */ jsxRuntime.jsx(Button, { variant: "ghost", size: "sm", onClick: onClear, children: "Wyczy\u015B\u0107" })
10154
10657
  ] }),
@@ -10175,67 +10678,37 @@ var FilterSidebar = react.forwardRef(
10175
10678
  )
10176
10679
  ] })
10177
10680
  ] }),
10178
- categories.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs(Group, { children: [
10179
- /* @__PURE__ */ jsxRuntime.jsx(Legend, { children: "Kategorie" }),
10180
- renderOptions(categories, selectedCategories, onToggleCategory)
10181
- ] }),
10182
- colors.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs(Group, { children: [
10183
- /* @__PURE__ */ jsxRuntime.jsx(Legend, { children: "Kolory" }),
10184
- renderOptions(colors, selectedColors, onToggleColor)
10185
- ] }),
10186
- sizes.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs(Group, { children: [
10187
- /* @__PURE__ */ jsxRuntime.jsx(Legend, { children: "Rozmiary" }),
10188
- renderOptions(sizes, selectedSizes, onToggleSize)
10189
- ] })
10190
- ] })
10191
- );
10192
- FilterSidebar.displayName = "FilterSidebar";
10193
- var Root44 = styles.styled(Card)({ display: "grid", gap: "1rem" });
10194
- var Title10 = styles.styled("h2")(({ theme }) => ({
10195
- margin: 0,
10196
- fontFamily: theme.typography.fontFamily,
10197
- fontSize: "1.125rem",
10198
- fontWeight: 800,
10199
- color: theme.palette.text.primary
10200
- }));
10201
- var Rows = styles.styled("dl")({ display: "grid", gap: "0.75rem", margin: 0 });
10202
- var SectionTitle = styles.styled("h3")(({ theme }) => ({
10203
- margin: 0,
10204
- fontFamily: theme.typography.fontFamily,
10205
- fontSize: "0.875rem",
10206
- fontWeight: 800,
10207
- color: theme.palette.text.primary
10208
- }));
10209
- var ItemList = styles.styled("ul")({
10210
- display: "grid",
10211
- gap: "0.875rem",
10212
- padding: 0,
10213
- margin: 0,
10214
- listStyle: "none"
10215
- });
10216
- var Item4 = styles.styled("li")({
10681
+ categories.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs(Group, { children: [
10682
+ /* @__PURE__ */ jsxRuntime.jsx(Legend, { children: "Kategorie" }),
10683
+ renderOptions(categories, selectedCategories, onToggleCategory)
10684
+ ] }),
10685
+ colors.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs(Group, { children: [
10686
+ /* @__PURE__ */ jsxRuntime.jsx(Legend, { children: "Kolory" }),
10687
+ renderOptions(colors, selectedColors, onToggleColor)
10688
+ ] }),
10689
+ sizes.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs(Group, { children: [
10690
+ /* @__PURE__ */ jsxRuntime.jsx(Legend, { children: "Rozmiary" }),
10691
+ renderOptions(sizes, selectedSizes, onToggleSize)
10692
+ ] })
10693
+ ] })
10694
+ );
10695
+ FilterSidebar.displayName = "FilterSidebar";
10696
+ var Root53 = styles.styled("li")({
10217
10697
  display: "grid",
10218
10698
  gridTemplateColumns: "3.5rem 1fr auto",
10219
10699
  alignItems: "center",
10220
10700
  gap: "0.75rem"
10221
10701
  });
10222
- var ItemImage2 = styles.styled("img")(({ theme }) => ({
10223
- width: "3.5rem",
10224
- height: "3.5rem",
10225
- borderRadius: theme.shape.borderRadius,
10226
- objectFit: "cover",
10227
- backgroundColor: theme.palette.action.hover
10228
- }));
10229
- var ItemImagePlaceholder = styles.styled("div")(({ theme }) => ({
10702
+ var ImageWrap5 = styles.styled("div")(({ theme }) => ({
10703
+ position: "relative",
10230
10704
  width: "3.5rem",
10231
10705
  height: "3.5rem",
10232
10706
  borderRadius: theme.shape.borderRadius,
10233
- backgroundColor: theme.palette.action.hover
10707
+ overflow: "hidden",
10708
+ flexShrink: 0
10234
10709
  }));
10235
- var ItemInfo2 = styles.styled("div")({
10236
- minWidth: 0
10237
- });
10238
- var ItemName2 = styles.styled("p")(({ theme }) => ({
10710
+ var Info6 = styles.styled("div")({ minWidth: 0 });
10711
+ var Name13 = styles.styled("p")(({ theme }) => ({
10239
10712
  margin: 0,
10240
10713
  color: theme.palette.text.primary,
10241
10714
  fontFamily: theme.typography.fontFamily,
@@ -10243,39 +10716,88 @@ var ItemName2 = styles.styled("p")(({ theme }) => ({
10243
10716
  fontWeight: 700,
10244
10717
  lineHeight: 1.4
10245
10718
  }));
10246
- var ItemMeta2 = styles.styled("p")(({ theme }) => ({
10719
+ var Meta2 = styles.styled("p")(({ theme }) => ({
10247
10720
  margin: "0.25rem 0 0",
10248
10721
  color: theme.palette.text.secondary,
10249
10722
  fontFamily: theme.typography.fontFamily,
10250
10723
  fontSize: "0.8125rem",
10251
10724
  lineHeight: 1.4
10252
10725
  }));
10253
- var ItemPrice = styles.styled("span")(({ theme }) => ({
10726
+ var Price4 = styles.styled("span")(({ theme }) => ({
10254
10727
  color: theme.palette.text.primary,
10255
10728
  fontFamily: theme.typography.fontFamily,
10256
10729
  fontSize: "0.875rem",
10257
10730
  fontWeight: 800,
10258
10731
  whiteSpace: "nowrap"
10259
10732
  }));
10260
- var Row5 = styles.styled("div")(({ theme }) => ({
10733
+ var OrderSummaryItem = ({
10734
+ name,
10735
+ price,
10736
+ imageUrl,
10737
+ imageAlt,
10738
+ quantity,
10739
+ meta
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 }),
10744
+ (quantity !== void 0 || meta) && /* @__PURE__ */ jsxRuntime.jsxs(Meta2, { children: [
10745
+ quantity !== void 0 && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
10746
+ "Ilo\u015B\u0107: ",
10747
+ quantity
10748
+ ] }),
10749
+ quantity !== void 0 && meta && " \xB7 ",
10750
+ meta
10751
+ ] })
10752
+ ] }),
10753
+ /* @__PURE__ */ jsxRuntime.jsx(Price4, { children: price })
10754
+ ] });
10755
+ OrderSummaryItem.displayName = "OrderSummaryItem";
10756
+ var Root54 = styles.styled("div", {
10757
+ shouldForwardProp: (prop) => prop !== "$total"
10758
+ })(({ theme, $total }) => ({
10261
10759
  display: "flex",
10262
10760
  justifyContent: "space-between",
10263
10761
  gap: "1rem",
10264
- color: theme.palette.text.secondary,
10762
+ color: $total ? theme.palette.text.primary : theme.palette.text.secondary,
10265
10763
  fontFamily: theme.typography.fontFamily,
10266
- fontSize: "0.875rem",
10764
+ fontSize: $total ? "1rem" : "0.875rem",
10765
+ fontWeight: $total ? 800 : 400,
10267
10766
  "& dt, & dd": { margin: 0 }
10268
10767
  }));
10768
+ var OrderSummaryRow = ({ label, value, total = false }) => /* @__PURE__ */ jsxRuntime.jsxs(Root54, { as: "div", $total: total, children: [
10769
+ /* @__PURE__ */ jsxRuntime.jsx("dt", { children: label }),
10770
+ /* @__PURE__ */ jsxRuntime.jsx("dd", { children: value })
10771
+ ] });
10772
+ OrderSummaryRow.displayName = "OrderSummaryRow";
10773
+ var Root55 = styles.styled(Card)({ display: "grid", gap: "1rem" });
10774
+ var Title10 = styles.styled("h2")(({ theme }) => ({
10775
+ margin: 0,
10776
+ fontFamily: theme.typography.fontFamily,
10777
+ fontSize: "1.125rem",
10778
+ fontWeight: 800,
10779
+ color: theme.palette.text.primary
10780
+ }));
10781
+ var Rows = styles.styled("dl")({ display: "grid", gap: "0.75rem", margin: 0 });
10782
+ var SectionTitle = styles.styled("h3")(({ theme }) => ({
10783
+ margin: 0,
10784
+ fontFamily: theme.typography.fontFamily,
10785
+ fontSize: "0.875rem",
10786
+ fontWeight: 800,
10787
+ color: theme.palette.text.primary
10788
+ }));
10789
+ var ItemList = styles.styled("ul")({
10790
+ display: "grid",
10791
+ gap: "0.875rem",
10792
+ padding: 0,
10793
+ margin: 0,
10794
+ listStyle: "none"
10795
+ });
10269
10796
  var Divider3 = styles.styled("hr")(({ theme }) => ({
10270
10797
  width: "100%",
10271
10798
  border: 0,
10272
10799
  borderTop: `1px solid ${theme.palette.divider}`
10273
10800
  }));
10274
- var TotalRow = styles.styled(Row5)(({ theme }) => ({
10275
- color: theme.palette.text.primary,
10276
- fontSize: "1rem",
10277
- fontWeight: 800
10278
- }));
10279
10801
  var OrderSummary = react.forwardRef(
10280
10802
  ({
10281
10803
  title = "Podsumowanie zam\xF3wienia",
@@ -10290,59 +10812,27 @@ var OrderSummary = react.forwardRef(
10290
10812
  ctaLabel = "Przejd\u017A do kasy",
10291
10813
  onCheckout,
10292
10814
  ...props
10293
- }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(Root44, { ref, variant: "default", padding: "lg", rounded: "lg", ...props, children: [
10815
+ }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(Root55, { ref, variant: "default", padding: "lg", rounded: "lg", ...props, children: [
10294
10816
  /* @__PURE__ */ jsxRuntime.jsx(Title10, { children: title }),
10295
10817
  items.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
10296
10818
  /* @__PURE__ */ jsxRuntime.jsx(SectionTitle, { children: itemsTitle }),
10297
- /* @__PURE__ */ jsxRuntime.jsx(ItemList, { children: items.map((item) => /* @__PURE__ */ jsxRuntime.jsxs(Item4, { children: [
10298
- item.imageUrl ? /* @__PURE__ */ jsxRuntime.jsx(ItemImage2, { src: item.imageUrl, alt: item.imageAlt ?? String(item.name) }) : /* @__PURE__ */ jsxRuntime.jsx(ItemImagePlaceholder, { "aria-hidden": "true" }),
10299
- /* @__PURE__ */ jsxRuntime.jsxs(ItemInfo2, { children: [
10300
- /* @__PURE__ */ jsxRuntime.jsx(ItemName2, { children: item.name }),
10301
- (item.quantity !== void 0 || item.meta) && /* @__PURE__ */ jsxRuntime.jsxs(ItemMeta2, { children: [
10302
- item.quantity !== void 0 && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
10303
- "Ilo\u015B\u0107: ",
10304
- item.quantity
10305
- ] }),
10306
- item.quantity !== void 0 && item.meta && " \xB7 ",
10307
- item.meta
10308
- ] })
10309
- ] }),
10310
- /* @__PURE__ */ jsxRuntime.jsx(ItemPrice, { children: item.price })
10311
- ] }, item.id)) }),
10819
+ /* @__PURE__ */ jsxRuntime.jsx(ItemList, { children: items.map((item) => /* @__PURE__ */ jsxRuntime.jsx(OrderSummaryItem, { ...item }, item.id)) }),
10312
10820
  /* @__PURE__ */ jsxRuntime.jsx(Divider3, {})
10313
10821
  ] }),
10314
10822
  /* @__PURE__ */ jsxRuntime.jsxs(Rows, { children: [
10315
- /* @__PURE__ */ jsxRuntime.jsxs(Row5, { children: [
10316
- /* @__PURE__ */ jsxRuntime.jsx("dt", { children: "Warto\u015B\u0107 produkt\xF3w" }),
10317
- /* @__PURE__ */ jsxRuntime.jsx("dd", { children: subtotal })
10318
- ] }),
10319
- shipping !== void 0 && /* @__PURE__ */ jsxRuntime.jsxs(Row5, { children: [
10320
- /* @__PURE__ */ jsxRuntime.jsx("dt", { children: "Dostawa" }),
10321
- /* @__PURE__ */ jsxRuntime.jsx("dd", { children: shipping })
10322
- ] }),
10323
- tax !== void 0 && /* @__PURE__ */ jsxRuntime.jsxs(Row5, { children: [
10324
- /* @__PURE__ */ jsxRuntime.jsx("dt", { children: "Podatek" }),
10325
- /* @__PURE__ */ jsxRuntime.jsx("dd", { children: tax })
10326
- ] }),
10327
- discount !== void 0 && /* @__PURE__ */ jsxRuntime.jsxs(Row5, { children: [
10328
- /* @__PURE__ */ jsxRuntime.jsx("dt", { children: "Rabat" }),
10329
- /* @__PURE__ */ jsxRuntime.jsx("dd", { children: discount })
10330
- ] }),
10331
- lines.map((line, index) => /* @__PURE__ */ jsxRuntime.jsxs(Row5, { children: [
10332
- /* @__PURE__ */ jsxRuntime.jsx("dt", { children: line.label }),
10333
- /* @__PURE__ */ jsxRuntime.jsx("dd", { children: line.value })
10334
- ] }, index))
10823
+ /* @__PURE__ */ jsxRuntime.jsx(OrderSummaryRow, { label: "Warto\u015B\u0107 produkt\xF3w", value: subtotal }),
10824
+ shipping !== void 0 && /* @__PURE__ */ jsxRuntime.jsx(OrderSummaryRow, { label: "Dostawa", value: shipping }),
10825
+ tax !== void 0 && /* @__PURE__ */ jsxRuntime.jsx(OrderSummaryRow, { label: "Podatek", value: tax }),
10826
+ discount !== void 0 && /* @__PURE__ */ jsxRuntime.jsx(OrderSummaryRow, { label: "Rabat", value: discount }),
10827
+ lines.map((line, index) => /* @__PURE__ */ jsxRuntime.jsx(OrderSummaryRow, { label: line.label, value: line.value }, index))
10335
10828
  ] }),
10336
10829
  /* @__PURE__ */ jsxRuntime.jsx(Divider3, {}),
10337
- /* @__PURE__ */ jsxRuntime.jsx(Rows, { children: /* @__PURE__ */ jsxRuntime.jsxs(TotalRow, { children: [
10338
- /* @__PURE__ */ jsxRuntime.jsx("dt", { children: "Razem" }),
10339
- /* @__PURE__ */ jsxRuntime.jsx("dd", { children: total })
10340
- ] }) }),
10830
+ /* @__PURE__ */ jsxRuntime.jsx(Rows, { children: /* @__PURE__ */ jsxRuntime.jsx(OrderSummaryRow, { label: "Razem", value: total, total: true }) }),
10341
10831
  /* @__PURE__ */ jsxRuntime.jsx(Button, { fullWidth: true, onClick: onCheckout, children: ctaLabel })
10342
10832
  ] })
10343
10833
  );
10344
10834
  OrderSummary.displayName = "OrderSummary";
10345
- var Root45 = styles.styled("div")(({ theme }) => ({
10835
+ var Root56 = styles.styled("div")(({ theme }) => ({
10346
10836
  fontFamily: theme.typography.fontFamily
10347
10837
  }));
10348
10838
  var Grid2 = styles.styled("div", {
@@ -10377,17 +10867,87 @@ var ScrollTrack = styles.styled("div")({
10377
10867
  }
10378
10868
  });
10379
10869
  var RelatedProducts = react.forwardRef(
10380
- ({ products, title = "Podobne produkty", layout = "grid", columns = 4, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(Root45, { ref, ...props, children: [
10870
+ ({ products, title = "Podobne produkty", layout = "grid", columns = 4, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(Root56, { ref, ...props, children: [
10381
10871
  /* @__PURE__ */ jsxRuntime.jsx(SectionHeading, { title, align: "left", style: { marginBottom: "1.5rem" } }),
10382
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)) })
10383
10873
  ] })
10384
10874
  );
10385
10875
  RelatedProducts.displayName = "RelatedProducts";
10386
10876
  var relatedProductsLayouts = ["grid", "scroll"];
10387
- var Root46 = styles.styled("div")(({ theme }) => ({
10877
+ var Card2 = styles.styled("div")(({ theme }) => ({
10878
+ padding: "1.25rem",
10879
+ border: `1px solid ${theme.palette.divider}`,
10880
+ borderRadius: theme.shape.borderRadius,
10881
+ display: "flex",
10882
+ flexDirection: "column",
10883
+ gap: "0.75rem",
10388
10884
  fontFamily: theme.typography.fontFamily
10389
10885
  }));
10390
- var Summary = styles.styled("div")(({ theme }) => ({
10886
+ var Header5 = styles.styled("div")({
10887
+ display: "flex",
10888
+ alignItems: "flex-start",
10889
+ gap: "0.875rem"
10890
+ });
10891
+ var AuthorInfo = styles.styled("div")({ flex: 1 });
10892
+ var AuthorName = styles.styled("div")(({ theme }) => ({
10893
+ display: "flex",
10894
+ alignItems: "center",
10895
+ gap: "0.375rem",
10896
+ fontSize: "0.9375rem",
10897
+ fontWeight: 700,
10898
+ color: theme.palette.text.primary
10899
+ }));
10900
+ var ReviewDate = styles.styled("div")(({ theme }) => ({
10901
+ fontSize: "0.8125rem",
10902
+ color: theme.palette.text.secondary,
10903
+ marginTop: "0.125rem"
10904
+ }));
10905
+ var Title11 = styles.styled("div")(({ theme }) => ({
10906
+ fontSize: "0.9375rem",
10907
+ fontWeight: 700,
10908
+ color: theme.palette.text.primary
10909
+ }));
10910
+ var Content3 = styles.styled("p")(({ theme }) => ({
10911
+ margin: 0,
10912
+ fontSize: "0.9375rem",
10913
+ color: theme.palette.text.secondary,
10914
+ lineHeight: 1.6
10915
+ }));
10916
+ var HelpfulRow = styles.styled("div")(({ theme }) => ({
10917
+ display: "flex",
10918
+ alignItems: "center",
10919
+ gap: "0.375rem",
10920
+ fontSize: "0.8125rem",
10921
+ color: theme.palette.text.secondary
10922
+ }));
10923
+ var ReviewItem = ({ review }) => /* @__PURE__ */ jsxRuntime.jsxs(Card2, { children: [
10924
+ /* @__PURE__ */ jsxRuntime.jsxs(Header5, { children: [
10925
+ /* @__PURE__ */ jsxRuntime.jsx(Avatar, { initials: review.author.slice(0, 2).toUpperCase(), size: "sm" }),
10926
+ /* @__PURE__ */ jsxRuntime.jsxs(AuthorInfo, { children: [
10927
+ /* @__PURE__ */ jsxRuntime.jsxs(AuthorName, { children: [
10928
+ review.author,
10929
+ review.verified && /* @__PURE__ */ jsxRuntime.jsx(
10930
+ VerifiedIcon__default.default,
10931
+ {
10932
+ "aria-label": "Zweryfikowany zakup",
10933
+ style: { fontSize: 14, color: "#16a34a" }
10934
+ }
10935
+ )
10936
+ ] }),
10937
+ /* @__PURE__ */ jsxRuntime.jsx(ReviewDate, { children: review.date })
10938
+ ] }),
10939
+ /* @__PURE__ */ jsxRuntime.jsx(Rating, { value: review.rating, size: "sm", readonly: true })
10940
+ ] }),
10941
+ review.title && /* @__PURE__ */ jsxRuntime.jsx(Title11, { children: review.title }),
10942
+ /* @__PURE__ */ jsxRuntime.jsx(Content3, { children: review.content }),
10943
+ review.helpfulCount !== void 0 && /* @__PURE__ */ jsxRuntime.jsxs(HelpfulRow, { children: [
10944
+ /* @__PURE__ */ jsxRuntime.jsx(ThumbUpOutlinedIcon__default.default, { "aria-hidden": true, style: { fontSize: 14 } }),
10945
+ review.helpfulCount,
10946
+ " os\xF3b uzna\u0142o t\u0119 recenzj\u0119 za pomocn\u0105"
10947
+ ] })
10948
+ ] });
10949
+ ReviewItem.displayName = "ReviewItem";
10950
+ var Root57 = styles.styled("div")(({ theme }) => ({
10391
10951
  display: "flex",
10392
10952
  alignItems: "center",
10393
10953
  gap: "2rem",
@@ -10395,7 +10955,7 @@ var Summary = styles.styled("div")(({ theme }) => ({
10395
10955
  padding: "1.5rem",
10396
10956
  backgroundColor: theme.palette.action.hover,
10397
10957
  borderRadius: theme.shape.borderRadius,
10398
- marginBottom: "2rem"
10958
+ fontFamily: theme.typography.fontFamily
10399
10959
  }));
10400
10960
  var AverageBlock = styles.styled("div")({
10401
10961
  display: "flex",
@@ -10403,13 +10963,23 @@ var AverageBlock = styles.styled("div")({
10403
10963
  alignItems: "center",
10404
10964
  gap: "0.25rem"
10405
10965
  });
10406
- var AverageScore = styles.styled("span")(({ theme }) => ({
10966
+ var Score = styles.styled("span")(({ theme }) => ({
10407
10967
  fontSize: "3rem",
10408
10968
  fontWeight: 800,
10409
10969
  lineHeight: 1,
10410
10970
  color: theme.palette.text.primary
10411
10971
  }));
10412
- var Distribution = styles.styled("div")({ flex: 1, display: "flex", flexDirection: "column", gap: "0.375rem" });
10972
+ var ReviewCount = styles.styled("span")(({ theme }) => ({
10973
+ fontSize: "0.8125rem",
10974
+ marginTop: "0.25rem",
10975
+ color: theme.palette.text.secondary
10976
+ }));
10977
+ var Distribution = styles.styled("div")({
10978
+ flex: 1,
10979
+ display: "flex",
10980
+ flexDirection: "column",
10981
+ gap: "0.375rem"
10982
+ });
10413
10983
  var DistRow = styles.styled("div")({ display: "flex", alignItems: "center", gap: "0.75rem" });
10414
10984
  var DistLabel = styles.styled("span")(({ theme }) => ({
10415
10985
  fontSize: "0.8125rem",
@@ -10433,117 +11003,142 @@ var DistFill = styles.styled("div", {
10433
11003
  borderRadius: "9999px",
10434
11004
  transition: "width 400ms ease"
10435
11005
  }));
11006
+ var ReviewSummary = ({
11007
+ averageRating,
11008
+ totalReviews,
11009
+ ratingDistribution
11010
+ }) => {
11011
+ const totalDist = ratingDistribution ? Object.values(ratingDistribution).reduce((a, b) => a + b, 0) : 0;
11012
+ return /* @__PURE__ */ jsxRuntime.jsxs(Root57, { children: [
11013
+ /* @__PURE__ */ jsxRuntime.jsxs(AverageBlock, { children: [
11014
+ /* @__PURE__ */ jsxRuntime.jsx(Score, { children: averageRating.toFixed(1) }),
11015
+ /* @__PURE__ */ jsxRuntime.jsx(Rating, { value: averageRating, size: "sm", readonly: true }),
11016
+ totalReviews !== void 0 && /* @__PURE__ */ jsxRuntime.jsxs(ReviewCount, { children: [
11017
+ totalReviews,
11018
+ " opinii"
11019
+ ] })
11020
+ ] }),
11021
+ ratingDistribution && /* @__PURE__ */ jsxRuntime.jsx(Distribution, { children: [5, 4, 3, 2, 1].map((star) => {
11022
+ const count = ratingDistribution[star] ?? 0;
11023
+ const pct2 = totalDist > 0 ? count / totalDist * 100 : 0;
11024
+ return /* @__PURE__ */ jsxRuntime.jsxs(DistRow, { children: [
11025
+ /* @__PURE__ */ jsxRuntime.jsxs(DistLabel, { children: [
11026
+ star,
11027
+ "\u2605"
11028
+ ] }),
11029
+ /* @__PURE__ */ jsxRuntime.jsx(DistBar, { children: /* @__PURE__ */ jsxRuntime.jsx(DistFill, { $pct: pct2 }) }),
11030
+ /* @__PURE__ */ jsxRuntime.jsx(DistLabel, { style: { textAlign: "left" }, children: count })
11031
+ ] }, star);
11032
+ }) })
11033
+ ] });
11034
+ };
11035
+ ReviewSummary.displayName = "ReviewSummary";
11036
+ var Root58 = styles.styled("div")(({ theme }) => ({
11037
+ fontFamily: theme.typography.fontFamily
11038
+ }));
10436
11039
  var ReviewList = styles.styled("div")({
10437
11040
  display: "flex",
10438
11041
  flexDirection: "column",
10439
11042
  gap: "1.5rem"
10440
11043
  });
10441
- var ReviewCard = styles.styled("div")(({ theme }) => ({
10442
- padding: "1.25rem",
10443
- border: `1px solid ${theme.palette.divider}`,
10444
- borderRadius: theme.shape.borderRadius,
10445
- display: "flex",
10446
- flexDirection: "column",
10447
- gap: "0.75rem"
10448
- }));
10449
- var ReviewHeader = styles.styled("div")({
10450
- display: "flex",
10451
- alignItems: "flex-start",
10452
- gap: "0.875rem"
10453
- });
10454
- var AuthorInfo2 = styles.styled("div")({ flex: 1 });
10455
- var AuthorName2 = styles.styled("div")(({ theme }) => ({
10456
- display: "flex",
10457
- alignItems: "center",
10458
- gap: "0.375rem",
10459
- fontSize: "0.9375rem",
10460
- fontWeight: 700,
10461
- color: theme.palette.text.primary
10462
- }));
10463
- var ReviewDate = styles.styled("div")(({ theme }) => ({
10464
- fontSize: "0.8125rem",
10465
- color: theme.palette.text.secondary,
10466
- marginTop: "0.125rem"
10467
- }));
10468
- var ReviewTitle = styles.styled("div")(({ theme }) => ({
10469
- fontSize: "0.9375rem",
11044
+ var ReviewSection = react.forwardRef(
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: [
11053
+ /* @__PURE__ */ jsxRuntime.jsx(SectionHeading, { title, align: "left", style: { marginBottom: "1.5rem" } }),
11054
+ averageRating !== void 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { style: { marginBottom: "2rem" }, children: /* @__PURE__ */ jsxRuntime.jsx(
11055
+ ReviewSummary,
11056
+ {
11057
+ averageRating,
11058
+ totalReviews,
11059
+ ratingDistribution
11060
+ }
11061
+ ) }),
11062
+ /* @__PURE__ */ jsxRuntime.jsx(ReviewList, { children: reviews.map((review) => /* @__PURE__ */ jsxRuntime.jsx(ReviewItem, { review }, review.id)) })
11063
+ ] })
11064
+ );
11065
+ ReviewSection.displayName = "ReviewSection";
11066
+ var Heading = styles.styled("h2")(({ theme }) => ({
11067
+ margin: "0 0 2rem",
11068
+ fontFamily: theme.typography.fontFamily,
11069
+ fontSize: "1.5rem",
10470
11070
  fontWeight: 700,
10471
11071
  color: theme.palette.text.primary
10472
11072
  }));
10473
- var ReviewContent = styles.styled("p")(({ theme }) => ({
10474
- margin: 0,
10475
- fontSize: "0.9375rem",
11073
+ var CommentCount = styles.styled("span")(({ theme }) => ({
11074
+ marginLeft: "0.375rem",
10476
11075
  color: theme.palette.text.secondary,
10477
- lineHeight: 1.6
11076
+ fontWeight: 400
10478
11077
  }));
10479
- var HelpfulRow = styles.styled("div")(({ theme }) => ({
11078
+ var List5 = styles.styled("div")({
10480
11079
  display: "flex",
10481
- alignItems: "center",
10482
- gap: "0.375rem",
10483
- fontSize: "0.8125rem",
10484
- color: theme.palette.text.secondary
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
+ }
10485
11096
  }));
10486
- function ReviewItem({ review }) {
10487
- return /* @__PURE__ */ jsxRuntime.jsxs(ReviewCard, { children: [
10488
- /* @__PURE__ */ jsxRuntime.jsxs(ReviewHeader, { children: [
10489
- /* @__PURE__ */ jsxRuntime.jsx(
10490
- Avatar,
10491
- {
10492
- initials: review.author.slice(0, 2).toUpperCase(),
10493
- size: "sm"
10494
- }
10495
- ),
10496
- /* @__PURE__ */ jsxRuntime.jsxs(AuthorInfo2, { children: [
10497
- /* @__PURE__ */ jsxRuntime.jsxs(AuthorName2, { children: [
10498
- review.author,
10499
- review.verified && /* @__PURE__ */ jsxRuntime.jsx(VerifiedIcon__default.default, { "aria-label": "Zweryfikowany zakup", style: { fontSize: 14, color: "#16a34a" } })
10500
- ] }),
10501
- /* @__PURE__ */ jsxRuntime.jsx(ReviewDate, { children: review.date })
10502
- ] }),
10503
- /* @__PURE__ */ jsxRuntime.jsx(Rating, { value: review.rating, size: "sm", readonly: true })
10504
- ] }),
10505
- review.title && /* @__PURE__ */ jsxRuntime.jsx(ReviewTitle, { children: review.title }),
10506
- /* @__PURE__ */ jsxRuntime.jsx(ReviewContent, { children: review.content }),
10507
- review.helpfulCount !== void 0 && /* @__PURE__ */ jsxRuntime.jsxs(HelpfulRow, { children: [
10508
- /* @__PURE__ */ jsxRuntime.jsx(ThumbUpOutlinedIcon__default.default, { "aria-hidden": true, style: { fontSize: 14 } }),
10509
- review.helpfulCount,
10510
- " os\xF3b uzna\u0142o t\u0119 recenzj\u0119 za pomocn\u0105"
10511
- ] })
10512
- ] });
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);
10513
11104
  }
10514
- var ReviewSection = react.forwardRef(
10515
- ({ reviews, averageRating, totalReviews, title = "Opinie klient\xF3w", ratingDistribution, ...props }, ref) => {
10516
- const totalDist = ratingDistribution ? Object.values(ratingDistribution).reduce((a, b) => a + b, 0) : 0;
10517
- return /* @__PURE__ */ jsxRuntime.jsxs(Root46, { ref, ...props, children: [
10518
- /* @__PURE__ */ jsxRuntime.jsx(SectionHeading, { title, align: "left", style: { marginBottom: "1.5rem" } }),
10519
- (averageRating !== void 0 || ratingDistribution) && /* @__PURE__ */ jsxRuntime.jsxs(Summary, { children: [
10520
- averageRating !== void 0 && /* @__PURE__ */ jsxRuntime.jsxs(AverageBlock, { children: [
10521
- /* @__PURE__ */ jsxRuntime.jsx(AverageScore, { children: averageRating.toFixed(1) }),
10522
- /* @__PURE__ */ jsxRuntime.jsx(Rating, { value: averageRating, size: "sm", readonly: true }),
10523
- totalReviews !== void 0 && /* @__PURE__ */ jsxRuntime.jsxs("span", { style: { fontSize: "0.8125rem", marginTop: "0.25rem" }, children: [
10524
- totalReviews,
10525
- " opinii"
10526
- ] })
10527
- ] }),
10528
- ratingDistribution && /* @__PURE__ */ jsxRuntime.jsx(Distribution, { children: [5, 4, 3, 2, 1].map((star) => {
10529
- const count = ratingDistribution[star] ?? 0;
10530
- const pct2 = totalDist > 0 ? count / totalDist * 100 : 0;
10531
- return /* @__PURE__ */ jsxRuntime.jsxs(DistRow, { children: [
10532
- /* @__PURE__ */ jsxRuntime.jsxs(DistLabel, { children: [
10533
- star,
10534
- "\u2605"
10535
- ] }),
10536
- /* @__PURE__ */ jsxRuntime.jsx(DistBar, { children: /* @__PURE__ */ jsxRuntime.jsx(DistFill, { $pct: pct2 }) }),
10537
- /* @__PURE__ */ jsxRuntime.jsx(DistLabel, { style: { textAlign: "left" }, children: count })
10538
- ] }, star);
10539
- }) })
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
+ ] })
10540
11123
  ] }),
10541
- /* @__PURE__ */ jsxRuntime.jsx(ReviewList, { children: reviews.map((review) => /* @__PURE__ */ jsxRuntime.jsx(ReviewItem, { review }, review.id)) })
10542
- ] });
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
+ ] }) });
10543
11138
  }
10544
11139
  );
10545
- ReviewSection.displayName = "ReviewSection";
10546
- var List4 = styles.styled("div")(({ $hasHeading }) => ({
11140
+ CommentSection.displayName = "CommentSection";
11141
+ var List6 = styles.styled("div")(({ $hasHeading }) => ({
10547
11142
  marginTop: $hasHeading ? "2.5rem" : 0
10548
11143
  }));
10549
11144
  var FaqSection = react.forwardRef(
@@ -10559,7 +11154,7 @@ var FaqSection = react.forwardRef(
10559
11154
  const hasHeading = Boolean(title || description);
10560
11155
  return /* @__PURE__ */ jsxRuntime.jsx(Section, { ref, ...rest, children: /* @__PURE__ */ jsxRuntime.jsxs(Container, { maxWidth, children: [
10561
11156
  hasHeading && /* @__PURE__ */ jsxRuntime.jsx(SectionHeading, { title: title ?? "", description, align: headingAlign }),
10562
- /* @__PURE__ */ jsxRuntime.jsx(List4, { $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(
10563
11158
  FaqItem,
10564
11159
  {
10565
11160
  item,
@@ -10601,7 +11196,7 @@ var FeatureGrid = react.forwardRef(
10601
11196
  return /* @__PURE__ */ jsxRuntime.jsx(Section, { ref, ...rest, children: /* @__PURE__ */ jsxRuntime.jsxs(Container, { maxWidth, children: [
10602
11197
  hasHeading && /* @__PURE__ */ jsxRuntime.jsx(SectionHeading, { title: title ?? "", description, align: headingAlign }),
10603
11198
  /* @__PURE__ */ jsxRuntime.jsx(Grid3, { $columns: columns, $hasHeading: hasHeading, $iconLeft: itemLayout === "icon-left", children: features.map((feature, index) => /* @__PURE__ */ jsxRuntime.jsx(
10604
- FeatureItem2,
11199
+ FeatureItem,
10605
11200
  {
10606
11201
  feature,
10607
11202
  cardVariant,
@@ -11084,7 +11679,7 @@ var GroupLabel3 = styles.styled("div")(({ theme }) => ({
11084
11679
  textTransform: "uppercase",
11085
11680
  letterSpacing: "0.06em"
11086
11681
  }));
11087
- var Item5 = styles.styled("div", {
11682
+ var Item4 = styles.styled("div", {
11088
11683
  shouldForwardProp: (p) => p !== "$active"
11089
11684
  })(({ theme, $active }) => ({
11090
11685
  display: "flex",
@@ -11283,7 +11878,7 @@ function CommandPalette({
11283
11878
  const idx = globalIndex++;
11284
11879
  const isActive = idx === activeIndex;
11285
11880
  return /* @__PURE__ */ jsxRuntime.jsxs(
11286
- Item5,
11881
+ Item4,
11287
11882
  {
11288
11883
  id: `${id}-item-${item.id}`,
11289
11884
  role: "option",
@@ -11378,8 +11973,8 @@ var TopRow = styles.styled("div")({
11378
11973
  gap: "1rem",
11379
11974
  flexWrap: "wrap"
11380
11975
  });
11381
- var TextBlock = styles.styled("div")({ flex: 1, minWidth: "16rem" });
11382
- var Title11 = styles.styled("p")(({ theme }) => ({
11976
+ var TextBlock2 = styles.styled("div")({ flex: 1, minWidth: "16rem" });
11977
+ var Title12 = styles.styled("p")(({ theme }) => ({
11383
11978
  margin: "0 0 0.25rem",
11384
11979
  fontFamily: theme.typography.fontFamily,
11385
11980
  fontSize: "1rem",
@@ -11387,7 +11982,7 @@ var Title11 = styles.styled("p")(({ theme }) => ({
11387
11982
  color: theme.palette.text.primary,
11388
11983
  lineHeight: 1.4
11389
11984
  }));
11390
- var Description8 = styles.styled("p")(({ theme }) => ({
11985
+ var Description9 = styles.styled("p")(({ theme }) => ({
11391
11986
  margin: 0,
11392
11987
  fontFamily: theme.typography.fontFamily,
11393
11988
  fontSize: "0.875rem",
@@ -11399,7 +11994,7 @@ var Link3 = styles.styled("a")(({ theme }) => ({
11399
11994
  textDecoration: "underline",
11400
11995
  "&:hover": { opacity: 0.8 }
11401
11996
  }));
11402
- var Actions = styles.styled("div")({
11997
+ var Actions2 = styles.styled("div")({
11403
11998
  display: "flex",
11404
11999
  alignItems: "center",
11405
12000
  gap: "0.625rem",
@@ -11543,9 +12138,9 @@ function CookieConsent({
11543
12138
  return reactDom.createPortal(
11544
12139
  /* @__PURE__ */ jsxRuntime.jsx(Bar2, { role: "region", "aria-label": "Zgoda na pliki cookie", "aria-live": "polite", children: /* @__PURE__ */ jsxRuntime.jsxs(Inner4, { children: [
11545
12140
  /* @__PURE__ */ jsxRuntime.jsxs(TopRow, { children: [
11546
- /* @__PURE__ */ jsxRuntime.jsxs(TextBlock, { children: [
11547
- /* @__PURE__ */ jsxRuntime.jsx(Title11, { children: title }),
11548
- /* @__PURE__ */ jsxRuntime.jsxs(Description8, { children: [
12141
+ /* @__PURE__ */ jsxRuntime.jsxs(TextBlock2, { children: [
12142
+ /* @__PURE__ */ jsxRuntime.jsx(Title12, { children: title }),
12143
+ /* @__PURE__ */ jsxRuntime.jsxs(Description9, { children: [
11549
12144
  description,
11550
12145
  privacyPolicyLabel && privacyPolicyHref && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
11551
12146
  " ",
@@ -11553,7 +12148,7 @@ function CookieConsent({
11553
12148
  ] })
11554
12149
  ] })
11555
12150
  ] }),
11556
- /* @__PURE__ */ jsxRuntime.jsxs(Actions, { children: [
12151
+ /* @__PURE__ */ jsxRuntime.jsxs(Actions2, { children: [
11557
12152
  /* @__PURE__ */ jsxRuntime.jsx(
11558
12153
  TextButton,
11559
12154
  {
@@ -11595,16 +12190,11 @@ function CookieConsent({
11595
12190
  );
11596
12191
  }
11597
12192
  var defaultCookieCategories = DEFAULT_CATEGORIES;
11598
- var Root47 = styles.styled("footer")(({ theme }) => ({
12193
+ var Root59 = styles.styled("footer")(({ theme }) => ({
11599
12194
  width: "100%",
11600
12195
  backgroundColor: theme.palette.background.paper,
11601
12196
  borderTop: `1px solid ${theme.palette.divider}`
11602
12197
  }));
11603
- var Inner5 = styles.styled("div")({
11604
- maxWidth: "72rem",
11605
- margin: "0 auto",
11606
- padding: "3rem 1.5rem 2rem"
11607
- });
11608
12198
  var TopRow2 = styles.styled("div")({
11609
12199
  display: "grid",
11610
12200
  gridTemplateColumns: "1fr",
@@ -11622,7 +12212,7 @@ var BrandBlock = styles.styled("div")({
11622
12212
  flexDirection: "column",
11623
12213
  gap: "0.75rem"
11624
12214
  });
11625
- var Description9 = styles.styled("p")(({ theme }) => ({
12215
+ var Description10 = styles.styled("p")(({ theme }) => ({
11626
12216
  margin: 0,
11627
12217
  fontFamily: theme.typography.fontFamily,
11628
12218
  fontSize: "0.875rem",
@@ -11733,14 +12323,16 @@ function Footer7({
11733
12323
  description,
11734
12324
  columns = [],
11735
12325
  socialLinks = [],
11736
- copyright
12326
+ copyright,
12327
+ maxWidth = "lg",
12328
+ style
11737
12329
  }) {
11738
12330
  const colCount = columns.length;
11739
- return /* @__PURE__ */ jsxRuntime.jsx(Root47, { children: /* @__PURE__ */ jsxRuntime.jsxs(Inner5, { children: [
12331
+ return /* @__PURE__ */ jsxRuntime.jsx(Root59, { style, children: /* @__PURE__ */ jsxRuntime.jsxs(Container, { maxWidth, style: { paddingTop: "3rem", paddingBottom: "2rem" }, children: [
11740
12332
  (logo || description || colCount > 0) && /* @__PURE__ */ jsxRuntime.jsxs(TopRow2, { style: { "--col-count": colCount }, children: [
11741
12333
  (logo || description) && /* @__PURE__ */ jsxRuntime.jsxs(BrandBlock, { children: [
11742
12334
  logo,
11743
- description && /* @__PURE__ */ jsxRuntime.jsx(Description9, { children: description })
12335
+ description && /* @__PURE__ */ jsxRuntime.jsx(Description10, { children: description })
11744
12336
  ] }),
11745
12337
  columns.map((col) => /* @__PURE__ */ jsxRuntime.jsxs(Column, { children: [
11746
12338
  /* @__PURE__ */ jsxRuntime.jsx(ColumnTitle, { children: col.title }),
@@ -11763,7 +12355,7 @@ function Footer7({
11763
12355
  ] })
11764
12356
  ] }) });
11765
12357
  }
11766
- var Root48 = styles.styled("header", {
12358
+ var Root60 = styles.styled("header", {
11767
12359
  shouldForwardProp: (p) => p !== "$sticky" && p !== "$variant"
11768
12360
  })(({ theme, $sticky, $variant }) => ({
11769
12361
  position: $sticky ? "sticky" : "relative",
@@ -11774,17 +12366,6 @@ var Root48 = styles.styled("header", {
11774
12366
  borderBottom: $variant === "transparent" ? "none" : `1px solid ${theme.palette.divider}`,
11775
12367
  boxShadow: $variant === "transparent" ? "none" : "0 1px 4px rgba(0,0,0,0.08)"
11776
12368
  }));
11777
- var Inner6 = styles.styled("div", {
11778
- shouldForwardProp: (p) => p !== "$maxWidth"
11779
- })(({ $maxWidth }) => ({
11780
- maxWidth: typeof $maxWidth === "number" ? `${$maxWidth}px` : $maxWidth,
11781
- margin: "0 auto",
11782
- padding: "0 1.5rem",
11783
- height: "3.75rem",
11784
- display: "flex",
11785
- alignItems: "center",
11786
- gap: "1.5rem"
11787
- }));
11788
12369
  var LogoSlot = styles.styled("div")({
11789
12370
  flexShrink: 0,
11790
12371
  display: "flex",
@@ -11850,7 +12431,8 @@ var MobileDrawer = styles.styled("div", {
11850
12431
  display: $open ? "flex" : "none",
11851
12432
  flexDirection: "column",
11852
12433
  gap: "0.25rem",
11853
- padding: "0.75rem 1.5rem 1rem",
12434
+ paddingTop: "0.75rem",
12435
+ paddingBottom: "1rem",
11854
12436
  borderTop: `1px solid ${theme.palette.divider}`,
11855
12437
  backgroundColor: theme.palette.background.paper,
11856
12438
  "@media (min-width: 768px)": {
@@ -11881,87 +12463,80 @@ function Navbar({
11881
12463
  actions,
11882
12464
  sticky = false,
11883
12465
  variant = "filled",
11884
- maxWidth = "72rem"
12466
+ maxWidth = "lg",
12467
+ style
11885
12468
  }) {
11886
12469
  const [mobileOpen, setMobileOpen] = react.useState(false);
11887
- return /* @__PURE__ */ jsxRuntime.jsxs(Root48, { $sticky: sticky, $variant: variant, children: [
11888
- /* @__PURE__ */ jsxRuntime.jsxs(Inner6, { $maxWidth: maxWidth, children: [
11889
- logo && /* @__PURE__ */ jsxRuntime.jsx(LogoSlot, { children: logo }),
11890
- /* @__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)) }),
11891
- (actions || navItems.length > 0) && /* @__PURE__ */ jsxRuntime.jsxs(RightSlot, { children: [
11892
- actions,
11893
- navItems.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(
11894
- HamburgerButton,
11895
- {
11896
- type: "button",
11897
- "aria-label": mobileOpen ? "Zamknij menu" : "Otw\xF3rz menu",
11898
- "aria-expanded": mobileOpen,
11899
- onClick: () => setMobileOpen((v) => !v),
11900
- children: /* @__PURE__ */ jsxRuntime.jsx(HamburgerIcon, { open: mobileOpen })
11901
- }
11902
- )
11903
- ] })
11904
- ] }),
11905
- navItems.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(MobileDrawer, { $open: mobileOpen, "aria-label": "Menu mobilne", children: navItems.map((item) => /* @__PURE__ */ jsxRuntime.jsx(MobileNavLink, { href: item.href, $active: !!item.active, children: item.label }, item.href)) })
12470
+ return /* @__PURE__ */ jsxRuntime.jsxs(Root60, { $sticky: sticky, $variant: variant, style, children: [
12471
+ /* @__PURE__ */ jsxRuntime.jsxs(
12472
+ Container,
12473
+ {
12474
+ maxWidth,
12475
+ style: { height: "3.75rem", display: "flex", alignItems: "center", gap: "1.5rem" },
12476
+ children: [
12477
+ logo && /* @__PURE__ */ jsxRuntime.jsx(LogoSlot, { children: logo }),
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)) }),
12479
+ (actions || navItems.length > 0) && /* @__PURE__ */ jsxRuntime.jsxs(RightSlot, { children: [
12480
+ actions,
12481
+ navItems.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(
12482
+ HamburgerButton,
12483
+ {
12484
+ type: "button",
12485
+ "aria-label": mobileOpen ? "Zamknij menu" : "Otw\xF3rz menu",
12486
+ "aria-expanded": mobileOpen,
12487
+ onClick: () => setMobileOpen((v) => !v),
12488
+ children: /* @__PURE__ */ jsxRuntime.jsx(HamburgerIcon, { open: mobileOpen })
12489
+ }
12490
+ )
12491
+ ] })
12492
+ ]
12493
+ }
12494
+ ),
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)) }) })
11906
12496
  ] });
11907
12497
  }
11908
- var ss = "sans-serif";
12498
+ var fontFamily = "'Lato', sans-serif";
11909
12499
  var typographyOptions = {
11910
- fontFamily: ["'Lato'", ss].join(","),
11911
- h1: {
11912
- fontFamily: ["'Lato'", ss].join(","),
11913
- fontSize: "1.75rem"
11914
- },
11915
- h2: {
11916
- fontFamily: ["'Lato'", ss].join(","),
11917
- fontSize: "1.375rem"
11918
- },
11919
- h3: {
11920
- fontFamily: ["'Lato'", ss].join(","),
11921
- fontSize: "1.125rem"
11922
- },
11923
- h4: {
11924
- fontFamily: ["'Lato'", ss].join(","),
11925
- fontSize: "1rem"
11926
- },
11927
- h5: {
11928
- fontFamily: ["'Lato'", ss].join(","),
11929
- fontSize: "0.875rem"
11930
- },
11931
- h6: {
11932
- fontFamily: ["'Lato'", ss].join(","),
11933
- fontSize: "0.75rem"
11934
- }
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" }
11935
12507
  };
11936
- var themeLight = styles.createTheme({
12508
+ var themeBase = {
11937
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, {
11938
12518
  palette: {
11939
12519
  mode: "light",
11940
12520
  primary: { main: "#1976d2", dark: "#1565c0", light: "#42a5f5", contrastText: "#ffffff" },
11941
12521
  secondary: { main: "#6b7280", dark: "#4b5563", light: "#9ca3af", contrastText: "#ffffff" },
11942
- error: { main: "#d32f2f", dark: "#b71c1c", light: "#ef5350", contrastText: "#ffffff" },
11943
12522
  action: { disabled: "rgba(0,0,0,0.38)", disabledBackground: "rgba(0,0,0,0.12)" },
11944
12523
  background: { default: "#ffffff", paper: "#f5f5f5" }
11945
12524
  }
11946
12525
  });
11947
- var themeDark = styles.createTheme({
11948
- typography: typographyOptions,
12526
+ var themeDark = styles.createTheme(themeBase, {
11949
12527
  palette: {
11950
12528
  mode: "dark",
11951
12529
  primary: { main: "#90caf9", dark: "#42a5f5", light: "#bbdefb", contrastText: "#0d1b2a" },
11952
12530
  secondary: { main: "#9ca3af", dark: "#6b7280", light: "#d1d5db", contrastText: "#111827" },
11953
- error: { main: "#f48fb1", dark: "#f06292", light: "#fce4ec", contrastText: "#1a0010" },
11954
12531
  action: { disabled: "rgba(255,255,255,0.30)", disabledBackground: "rgba(255,255,255,0.12)" },
11955
12532
  background: { default: "#121212", paper: "#1e1e1e" }
11956
12533
  }
11957
12534
  });
11958
- var themeHighContrast = styles.createTheme({
11959
- typography: typographyOptions,
12535
+ var themeHighContrast = styles.createTheme(themeBase, {
11960
12536
  palette: {
11961
12537
  mode: "dark",
11962
12538
  primary: { main: "#ffffff", dark: "#e0e0e0", light: "#ffffff", contrastText: "#000000" },
11963
12539
  secondary: { main: "#ffff00", dark: "#cccc00", light: "#ffff66", contrastText: "#000000" },
11964
- error: { main: "#ff6b6b", dark: "#ff3333", light: "#ffaaaa", contrastText: "#000000" },
11965
12540
  action: { disabled: "rgba(255,255,255,0.38)", disabledBackground: "rgba(255,255,255,0.12)" },
11966
12541
  background: { default: "#000000", paper: "#1a1a1a" }
11967
12542
  }
@@ -12026,9 +12601,17 @@ exports.Card = Card;
12026
12601
  exports.Carousel = Carousel;
12027
12602
  exports.CartButton = CartButton;
12028
12603
  exports.CartDrawer = CartDrawer;
12604
+ exports.CartDrawerItemComponent = CartDrawerItem;
12029
12605
  exports.CategoryCard = CategoryCard;
12606
+ exports.CategoryCardImage = CategoryCardImage;
12607
+ exports.CategoryCardInfo = CategoryCardInfo;
12030
12608
  exports.CheckboxInput = CheckboxInput;
12031
12609
  exports.CommandPalette = CommandPalette;
12610
+ exports.CommentActions = CommentActions;
12611
+ exports.CommentBody = CommentBody;
12612
+ exports.CommentCard = CommentCard;
12613
+ exports.CommentMeta = CommentMeta;
12614
+ exports.CommentSection = CommentSection;
12032
12615
  exports.CompareTool = CompareTool;
12033
12616
  exports.Container = Container;
12034
12617
  exports.ContextMenu = ContextMenu;
@@ -12037,17 +12620,19 @@ exports.CountdownTimer = CountdownTimer;
12037
12620
  exports.CountryFlag = CountryFlag;
12038
12621
  exports.CouponInput = CouponInput;
12039
12622
  exports.DateTimePicker = DateTimePicker;
12623
+ exports.DealCard = DealCard;
12040
12624
  exports.EmailInput = EmailInput;
12041
12625
  exports.EmptyState = EmptyState;
12042
12626
  exports.FaqItem = FaqItem;
12043
12627
  exports.FaqSection = FaqSection;
12044
12628
  exports.FeatureGrid = FeatureGrid;
12045
- exports.FeatureItem = FeatureItem2;
12629
+ exports.FeatureItem = FeatureItem;
12046
12630
  exports.FileInput = FileInput;
12047
12631
  exports.FilterSidebar = FilterSidebar;
12048
12632
  exports.Footer = Footer7;
12633
+ exports.Image = Image;
12049
12634
  exports.Lightbox = Lightbox;
12050
- exports.List = List3;
12635
+ exports.List = List4;
12051
12636
  exports.LogoCloud = LogoCloud;
12052
12637
  exports.LogoTile = LogoTile;
12053
12638
  exports.Main = Main;
@@ -12059,6 +12644,8 @@ exports.Navbar = Navbar;
12059
12644
  exports.NewsletterSection = NewsletterSection;
12060
12645
  exports.NumberInput = NumberInput;
12061
12646
  exports.OrderSummary = OrderSummary;
12647
+ exports.OrderSummaryItemComponent = OrderSummaryItem;
12648
+ exports.OrderSummaryRow = OrderSummaryRow;
12062
12649
  exports.PaginationBar = PaginationBar;
12063
12650
  exports.PaginationButton = PaginationButton;
12064
12651
  exports.PaginationEllipsis = PaginationEllipsis;
@@ -12071,12 +12658,16 @@ exports.PostCardImage = PostCardImage;
12071
12658
  exports.PostCardMeta = PostCardMeta;
12072
12659
  exports.Price = Price;
12073
12660
  exports.PricingCard = PricingCard;
12661
+ exports.PricingCardFeatureList = PricingCardFeatureList;
12662
+ exports.PricingCardPrice = PricingCardPrice;
12074
12663
  exports.PricingSection = PricingSection;
12075
12664
  exports.ProcessSection = ProcessSection;
12076
12665
  exports.ProcessStep = ProcessStep;
12077
12666
  exports.ProductCard = ProductCard;
12078
12667
  exports.ProductCardHorizontal = ProductCardHorizontal;
12668
+ exports.ProductCardImage = ProductCardImage;
12079
12669
  exports.ProductGallery = ProductGallery;
12670
+ exports.ProfileCard = ProfileCard;
12080
12671
  exports.ProgressBar = ProgressBar;
12081
12672
  exports.ProgressCircle = ProgressCircle;
12082
12673
  exports.PromoStrip = PromoStrip;
@@ -12085,8 +12676,9 @@ exports.QuantitySelector = QuantitySelector;
12085
12676
  exports.RangeSlider = RangeSlider;
12086
12677
  exports.Rating = Rating;
12087
12678
  exports.RelatedProducts = RelatedProducts;
12679
+ exports.ReviewItem = ReviewItem;
12088
12680
  exports.ReviewSection = ReviewSection;
12089
- exports.SaleBadge = SaleBadge;
12681
+ exports.ReviewSummary = ReviewSummary;
12090
12682
  exports.SearchInput = SearchInput;
12091
12683
  exports.Section = Section;
12092
12684
  exports.SectionHeading = SectionHeading;
@@ -12100,15 +12692,20 @@ exports.StatsSection = StatsSection;
12100
12692
  exports.StockStatus = StockStatus;
12101
12693
  exports.SwitchInput = SwitchInput;
12102
12694
  exports.Tabs = Tabs;
12695
+ exports.TeamMemberAvatar = TeamMemberAvatar;
12103
12696
  exports.TeamMemberCard = TeamMemberCard;
12697
+ exports.TeamMemberInfo = TeamMemberInfo;
12104
12698
  exports.TeamSection = TeamSection;
12699
+ exports.TestimonialAuthor = TestimonialAuthor;
12105
12700
  exports.TestimonialCard = TestimonialCard;
12701
+ exports.TestimonialQuote = TestimonialQuote;
12106
12702
  exports.TestimonialsSection = TestimonialsSection;
12107
12703
  exports.TextInput = TextInput;
12108
12704
  exports.TextareaInput = TextareaInput;
12109
12705
  exports.Timeline = Timeline;
12110
12706
  exports.VariantSelector = VariantSelector;
12111
12707
  exports.VideoPlayer = VideoPlayer;
12708
+ exports.VoucherCard = VoucherCard;
12112
12709
  exports.WishlistButton = WishlistButton;
12113
12710
  exports.accordionVariants = accordionVariants;
12114
12711
  exports.alertSeverities = alertSeverities;
@@ -12145,7 +12742,6 @@ exports.progressCircleVariants = progressCircleVariants;
12145
12742
  exports.promoStripVariants = promoStripVariants;
12146
12743
  exports.rangeSliderSizes = rangeSliderSizes;
12147
12744
  exports.relatedProductsLayouts = relatedProductsLayouts;
12148
- exports.saleBadgeVariants = saleBadgeVariants;
12149
12745
  exports.sectionHeadingAligns = sectionHeadingAligns;
12150
12746
  exports.skeletonVariants = skeletonVariants;
12151
12747
  exports.spinnerColors = spinnerColors;