@szymonpiatek/designsystem 0.0.6 → 0.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,7 +1,10 @@
1
1
  import { forwardRef, useId, useRef, useEffect, useState, useCallback, useMemo, Fragment as Fragment$1 } from 'react';
2
2
  import { styled, alpha, keyframes, createTheme, useTheme, ThemeProvider } from '@mui/material/styles';
3
- import CircularProgress from '@mui/material/CircularProgress';
3
+ import { CircularProgress, CssBaseline } from '@mui/material';
4
4
  import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
5
+ import ShoppingCartIcon from '@mui/icons-material/ShoppingCart';
6
+ import FavoriteIcon from '@mui/icons-material/Favorite';
7
+ import FavoriteBorderIcon from '@mui/icons-material/FavoriteBorder';
5
8
  import ExpandMoreIcon from '@mui/icons-material/ExpandMore';
6
9
  import FileUploadIcon from '@mui/icons-material/FileUpload';
7
10
  import CloudUploadMuiIcon from '@mui/icons-material/CloudUpload';
@@ -20,15 +23,25 @@ import ChevronRightIcon from '@mui/icons-material/ChevronRight';
20
23
  import KeyboardArrowUpIcon from '@mui/icons-material/KeyboardArrowUp';
21
24
  import KeyboardArrowDownIcon from '@mui/icons-material/KeyboardArrowDown';
22
25
  import { keyframes as keyframes$1 } from '@emotion/react';
26
+ import ImageIcon from '@mui/icons-material/Image';
23
27
  import ArticleIcon from '@mui/icons-material/Article';
24
28
  import CheckCircleOutlinedIcon from '@mui/icons-material/CheckCircleOutlined';
25
29
  import HighlightOffIcon from '@mui/icons-material/HighlightOff';
30
+ import CreditCardOutlinedIcon from '@mui/icons-material/CreditCardOutlined';
31
+ import LocalShippingOutlinedIcon from '@mui/icons-material/LocalShippingOutlined';
32
+ import GridViewIcon from '@mui/icons-material/GridView';
33
+ import ViewListIcon from '@mui/icons-material/ViewList';
26
34
  import { createPortal } from 'react-dom';
27
35
  import KeyboardDoubleArrowLeftIcon from '@mui/icons-material/KeyboardDoubleArrowLeft';
28
36
  import KeyboardDoubleArrowRightIcon from '@mui/icons-material/KeyboardDoubleArrowRight';
37
+ import InfoOutlinedIcon from '@mui/icons-material/InfoOutlined';
38
+ import WarningAmberOutlinedIcon from '@mui/icons-material/WarningAmberOutlined';
39
+ import ErrorOutlineOutlinedIcon from '@mui/icons-material/ErrorOutlineOutlined';
40
+ import InboxOutlinedIcon from '@mui/icons-material/InboxOutlined';
41
+ import VerifiedIcon from '@mui/icons-material/Verified';
42
+ import ThumbUpOutlinedIcon from '@mui/icons-material/ThumbUpOutlined';
29
43
  import ArrowForwardIcon from '@mui/icons-material/ArrowForward';
30
44
  import MenuIcon from '@mui/icons-material/Menu';
31
- import CssBaseline from '@mui/material/CssBaseline';
32
45
 
33
46
  // src/components/atoms/buttons/Button/Button.tsx
34
47
  var sizeMap = {
@@ -139,6 +152,102 @@ var Button = forwardRef(
139
152
  )
140
153
  );
141
154
  Button.displayName = "Button";
155
+ var iconSizeMap = {
156
+ sm: 18,
157
+ md: 20,
158
+ lg: 24
159
+ };
160
+ var Root = styled("span")({
161
+ position: "relative",
162
+ display: "inline-flex"
163
+ });
164
+ var Badge = styled("span")(({ theme }) => ({
165
+ position: "absolute",
166
+ top: "-4px",
167
+ right: "-4px",
168
+ backgroundColor: theme.palette.primary.main,
169
+ color: "#fff",
170
+ borderRadius: "9999px",
171
+ fontSize: "0.625rem",
172
+ fontWeight: 700,
173
+ minWidth: "16px",
174
+ height: "16px",
175
+ display: "flex",
176
+ alignItems: "center",
177
+ justifyContent: "center",
178
+ padding: "0 3px",
179
+ pointerEvents: "none",
180
+ fontFamily: theme.typography.fontFamily,
181
+ lineHeight: 1
182
+ }));
183
+ var CartButton = forwardRef(
184
+ ({ count, size = "sm", label = "Koszyk", disabled, onClick, className, "aria-label": ariaLabel }, ref) => /* @__PURE__ */ jsxs(Root, { className, children: [
185
+ /* @__PURE__ */ jsx(
186
+ Button,
187
+ {
188
+ ref,
189
+ variant: "ghost",
190
+ size,
191
+ disabled,
192
+ onClick,
193
+ "aria-label": ariaLabel ?? (count ? `${label} (${count})` : label),
194
+ children: /* @__PURE__ */ jsx("span", { style: { display: "flex" }, children: /* @__PURE__ */ jsx(ShoppingCartIcon, { "aria-hidden": true, style: { fontSize: iconSizeMap[size] } }) })
195
+ }
196
+ ),
197
+ count != null && count > 0 && /* @__PURE__ */ jsx(Badge, { "aria-hidden": true, children: count > 99 ? "99+" : count })
198
+ ] })
199
+ );
200
+ CartButton.displayName = "CartButton";
201
+ var sizeMap2 = {
202
+ sm: { iconSize: 16, padding: "0.375rem" },
203
+ md: { iconSize: 20, padding: "0.5rem" },
204
+ lg: { iconSize: 24, padding: "0.625rem" }
205
+ };
206
+ var Root2 = styled("button")(
207
+ ({ theme, $active, $size }) => ({
208
+ appearance: "none",
209
+ border: `1px solid ${$active ? theme.palette.error.main : theme.palette.divider}`,
210
+ background: $active ? `${theme.palette.error.main}14` : "transparent",
211
+ cursor: "pointer",
212
+ display: "inline-flex",
213
+ alignItems: "center",
214
+ justifyContent: "center",
215
+ borderRadius: "50%",
216
+ padding: sizeMap2[$size].padding,
217
+ color: $active ? theme.palette.error.main : theme.palette.text.secondary,
218
+ transition: "color 150ms ease, background-color 150ms ease, border-color 150ms ease",
219
+ "&:hover:not(:disabled)": {
220
+ color: theme.palette.error.main,
221
+ borderColor: theme.palette.error.main,
222
+ backgroundColor: `${theme.palette.error.main}14`
223
+ },
224
+ "&:focus-visible": {
225
+ outline: `3px solid ${theme.palette.primary.main}`,
226
+ outlineOffset: "2px"
227
+ },
228
+ "&:disabled": {
229
+ opacity: 0.4,
230
+ cursor: "not-allowed"
231
+ }
232
+ })
233
+ );
234
+ var WishlistButton = forwardRef(
235
+ ({ active = false, loading = false, size = "md", label, ...props }, ref) => /* @__PURE__ */ jsx(
236
+ Root2,
237
+ {
238
+ ref,
239
+ type: "button",
240
+ $active: active,
241
+ $size: size,
242
+ disabled: loading || props.disabled,
243
+ "aria-label": label ?? (active ? "Usu\u0144 z listy \u017Cycze\u0144" : "Dodaj do listy \u017Cycze\u0144"),
244
+ "aria-pressed": active,
245
+ ...props,
246
+ children: loading ? /* @__PURE__ */ jsx(CircularProgress, { size: sizeMap2[size].iconSize, color: "inherit", thickness: 5 }) : active ? /* @__PURE__ */ jsx(FavoriteIcon, { "aria-hidden": true, style: { fontSize: sizeMap2[size].iconSize } }) : /* @__PURE__ */ jsx(FavoriteBorderIcon, { "aria-hidden": true, style: { fontSize: sizeMap2[size].iconSize } })
247
+ }
248
+ )
249
+ );
250
+ WishlistButton.displayName = "WishlistButton";
142
251
  var StyledHelperText = styled("p")(({ theme, $error }) => ({
143
252
  margin: "0.25rem 0 0",
144
253
  fontSize: "0.75rem",
@@ -195,7 +304,7 @@ var inputColors = (theme, error) => ({
195
304
  boxShadow: `0 0 0 3px ${error ? theme.palette.error.main : theme.palette.primary.main}33`
196
305
  }
197
306
  });
198
- var Root = styled("div")(({ $fullWidth }) => ({
307
+ var Root3 = styled("div")(({ $fullWidth }) => ({
199
308
  display: $fullWidth ? "block" : "inline-block",
200
309
  width: $fullWidth ? "100%" : "auto"
201
310
  }));
@@ -260,7 +369,7 @@ var BaseInput = forwardRef(
260
369
  }, ref) => {
261
370
  const autoId = useId();
262
371
  const inputId = id ?? autoId;
263
- return /* @__PURE__ */ jsxs(Root, { $fullWidth: fullWidth, children: [
372
+ return /* @__PURE__ */ jsxs(Root3, { $fullWidth: fullWidth, children: [
264
373
  label && /* @__PURE__ */ jsx(Label, { htmlFor: inputId, error, size, children: label }),
265
374
  /* @__PURE__ */ jsxs(
266
375
  InputWrapper,
@@ -364,7 +473,7 @@ var LabelText = styled("span")(
364
473
  userSelect: "none"
365
474
  })
366
475
  );
367
- var Root2 = styled("span")(({ $disabled }) => ({
476
+ var Root4 = styled("span")(({ $disabled }) => ({
368
477
  display: "inline-flex",
369
478
  flexDirection: "column",
370
479
  cursor: $disabled ? "not-allowed" : "pointer"
@@ -388,7 +497,7 @@ var CheckboxInput = forwardRef(
388
497
  innerRef.current.indeterminate = indeterminate;
389
498
  }
390
499
  }, [indeterminate]);
391
- return /* @__PURE__ */ jsxs(Root2, { $disabled: disabled, children: [
500
+ return /* @__PURE__ */ jsxs(Root4, { $disabled: disabled, children: [
392
501
  /* @__PURE__ */ jsxs(Row, { htmlFor: inputId, children: [
393
502
  /* @__PURE__ */ jsx(Box, { $size: size, $error: error, $disabled: disabled, children: /* @__PURE__ */ jsx(
394
503
  HiddenInput,
@@ -422,7 +531,7 @@ var CloudUploadIcon = ({ size }) => /* @__PURE__ */ jsx(CloudUploadMuiIcon, { "a
422
531
  var FileDocIcon = ({ size }) => /* @__PURE__ */ jsx(InsertDriveFileIcon, { "aria-hidden": true, style: { fontSize: size } });
423
532
  var TrashIcon = ({ size = 12 }) => /* @__PURE__ */ jsx(DeleteOutlinedIcon, { "aria-hidden": true, style: { fontSize: size } });
424
533
  var XIcon = () => /* @__PURE__ */ jsx(CloseIcon, { "aria-hidden": true, style: { fontSize: 11 } });
425
- var Root3 = styled("div")(({ $fullWidth }) => ({
534
+ var Root5 = styled("div")(({ $fullWidth }) => ({
426
535
  display: $fullWidth ? "block" : "inline-block",
427
536
  width: $fullWidth ? "100%" : "auto"
428
537
  }));
@@ -912,7 +1021,7 @@ var FileInput = forwardRef(
912
1021
  }
913
1022
  );
914
1023
  if (variant === "dropzone") {
915
- return /* @__PURE__ */ jsxs(Root3, { $fullWidth: fullWidth, children: [
1024
+ return /* @__PURE__ */ jsxs(Root5, { $fullWidth: fullWidth, children: [
916
1025
  label && /* @__PURE__ */ jsx(Label, { htmlFor: inputId, error, size, children: label }),
917
1026
  /* @__PURE__ */ jsxs(
918
1027
  DropzoneArea,
@@ -1040,7 +1149,7 @@ var FileInput = forwardRef(
1040
1149
  helperText && /* @__PURE__ */ jsx(HelperText, { error, children: helperText })
1041
1150
  ] });
1042
1151
  }
1043
- return /* @__PURE__ */ jsxs(Root3, { $fullWidth: fullWidth, children: [
1152
+ return /* @__PURE__ */ jsxs(Root5, { $fullWidth: fullWidth, children: [
1044
1153
  label && /* @__PURE__ */ jsx(Label, { htmlFor: inputId, error, size, children: label }),
1045
1154
  /* @__PURE__ */ jsxs(
1046
1155
  CompactWrapper,
@@ -1159,7 +1268,7 @@ var triggerColors = (theme, error, open) => ({
1159
1268
  borderColor: error ? theme.palette.error.dark : theme.palette.text.secondary
1160
1269
  }
1161
1270
  });
1162
- var Root4 = styled("div")(({ $fullWidth }) => ({
1271
+ var Root6 = styled("div")(({ $fullWidth }) => ({
1163
1272
  display: $fullWidth ? "block" : "inline-block",
1164
1273
  width: $fullWidth ? "100%" : "auto",
1165
1274
  position: "relative"
@@ -1276,7 +1385,7 @@ var BaseSelectInput = ({
1276
1385
  }, [isOpen, close]);
1277
1386
  const selectedLabel = options.find((o) => o.value === value)?.label;
1278
1387
  const defaultTriggerContent = /* @__PURE__ */ jsx("span", { style: { opacity: selectedLabel ? 1 : 0.5 }, children: selectedLabel ?? placeholder });
1279
- return /* @__PURE__ */ jsxs(Root4, { $fullWidth: fullWidth, ref: rootRef, children: [
1388
+ return /* @__PURE__ */ jsxs(Root6, { $fullWidth: fullWidth, ref: rootRef, children: [
1280
1389
  label && /* @__PURE__ */ jsx(Label, { htmlFor: inputId, error, size, children: label }),
1281
1390
  /* @__PURE__ */ jsxs(
1282
1391
  Trigger,
@@ -1556,7 +1665,7 @@ var borderColors = (theme, error) => ({
1556
1665
  boxShadow: `0 0 0 3px ${error ? theme.palette.error.main : theme.palette.primary.main}33`
1557
1666
  }
1558
1667
  });
1559
- var Root5 = styled("div")(({ $fullWidth }) => ({
1668
+ var Root7 = styled("div")(({ $fullWidth }) => ({
1560
1669
  display: $fullWidth ? "block" : "inline-block",
1561
1670
  width: $fullWidth ? "100%" : "auto"
1562
1671
  }));
@@ -1597,7 +1706,7 @@ var TextareaInput = forwardRef(
1597
1706
  }, ref) => {
1598
1707
  const autoId = useId();
1599
1708
  const inputId = id ?? autoId;
1600
- return /* @__PURE__ */ jsxs(Root5, { $fullWidth: fullWidth, children: [
1709
+ return /* @__PURE__ */ jsxs(Root7, { $fullWidth: fullWidth, children: [
1601
1710
  label && /* @__PURE__ */ jsx(Label, { htmlFor: inputId, error, size, children: label }),
1602
1711
  /* @__PURE__ */ jsx(
1603
1712
  StyledTextarea,
@@ -1619,14 +1728,14 @@ var TextareaInput = forwardRef(
1619
1728
  }
1620
1729
  );
1621
1730
  TextareaInput.displayName = "TextareaInput";
1622
- var sizeMap2 = { sm: "1em", md: "1.25em", lg: "1.75em" };
1731
+ var sizeMap3 = { sm: "1em", md: "1.25em", lg: "1.75em" };
1623
1732
  var toFlagEmoji = (code) => code.toUpperCase().replace(/[A-Z]/g, (char) => String.fromCodePoint(127462 + char.charCodeAt(0) - 65));
1624
1733
  var CountryFlag = ({ countryCode, size = "md", style, ...rest }) => /* @__PURE__ */ jsx(
1625
1734
  "span",
1626
1735
  {
1627
1736
  role: "img",
1628
1737
  "aria-label": `Flag: ${countryCode}`,
1629
- style: { fontSize: sizeMap2[size], lineHeight: 1, display: "inline-flex", ...style },
1738
+ style: { fontSize: sizeMap3[size], lineHeight: 1, display: "inline-flex", ...style },
1630
1739
  ...rest,
1631
1740
  children: toFlagEmoji(countryCode)
1632
1741
  }
@@ -3222,7 +3331,7 @@ var wrapperColors = (theme, error, focused) => ({
3222
3331
  borderColor: !focused ? error ? theme.palette.error.dark : theme.palette.text.secondary : void 0
3223
3332
  }
3224
3333
  });
3225
- var Root6 = styled("div")(({ $fullWidth }) => ({
3334
+ var Root8 = styled("div")(({ $fullWidth }) => ({
3226
3335
  display: $fullWidth ? "block" : "inline-block",
3227
3336
  width: $fullWidth ? "100%" : "auto"
3228
3337
  }));
@@ -3459,7 +3568,7 @@ var PhoneInput = forwardRef(
3459
3568
  return () => document.removeEventListener("mousedown", handler);
3460
3569
  }, [isOpen, close]);
3461
3570
  const derivedPlaceholder = placeholder ?? (selectedCountry.minLength === selectedCountry.maxLength ? `${selectedCountry.maxLength} ${digitsLabel}` : `${selectedCountry.minLength}\u2013${selectedCountry.maxLength} ${digitsLabel}`);
3462
- return /* @__PURE__ */ jsxs(Root6, { $fullWidth: fullWidth, ref: rootRef, children: [
3571
+ return /* @__PURE__ */ jsxs(Root8, { $fullWidth: fullWidth, ref: rootRef, children: [
3463
3572
  label && /* @__PURE__ */ jsx(Label, { htmlFor: inputId, error, size, children: label }),
3464
3573
  /* @__PURE__ */ jsxs(
3465
3574
  InputWrapper2,
@@ -3574,7 +3683,7 @@ function getActiveColor(color, theme) {
3574
3683
  return theme.palette.primary.main;
3575
3684
  }
3576
3685
  }
3577
- var Root7 = styled("span")(({ $disabled }) => ({
3686
+ var Root9 = styled("span")(({ $disabled }) => ({
3578
3687
  display: "inline-flex",
3579
3688
  flexDirection: "column",
3580
3689
  cursor: $disabled ? "not-allowed" : "pointer"
@@ -3659,7 +3768,7 @@ var SwitchInput = forwardRef(
3659
3768
  }, ref) => {
3660
3769
  const autoId = useId();
3661
3770
  const inputId = id ?? autoId;
3662
- return /* @__PURE__ */ jsxs(Root7, { $disabled: disabled, children: [
3771
+ return /* @__PURE__ */ jsxs(Root9, { $disabled: disabled, children: [
3663
3772
  /* @__PURE__ */ jsxs(Row2, { htmlFor: inputId, $placement: labelPlacement, children: [
3664
3773
  /* @__PURE__ */ jsxs(Track, { $size: size, $color: color, $error: error, $disabled: disabled, children: [
3665
3774
  /* @__PURE__ */ jsx(
@@ -3685,7 +3794,7 @@ SwitchInput.displayName = "SwitchInput";
3685
3794
  var switchColors = ["primary", "secondary", "success", "danger"];
3686
3795
  var TRACK_H2 = { sm: "0.25rem", md: "0.375rem", lg: "0.5rem" };
3687
3796
  var THUMB_S2 = { sm: "0.875rem", md: "1.125rem", lg: "1.375rem" };
3688
- var Root8 = styled("div")({
3797
+ var Root10 = styled("div")({
3689
3798
  display: "flex",
3690
3799
  flexDirection: "column",
3691
3800
  gap: "0.5rem",
@@ -3808,7 +3917,7 @@ var RangeSlider = forwardRef(
3808
3917
  const loP = pct(lo, min, max);
3809
3918
  const hiP = pct(hi, min, max);
3810
3919
  const valueLabel = range ? `${formatValue2(lo)} \u2013 ${formatValue2(hi)}` : formatValue2(lo);
3811
- return /* @__PURE__ */ jsxs(Root8, { ref, ...props, children: [
3920
+ return /* @__PURE__ */ jsxs(Root10, { ref, ...props, children: [
3812
3921
  (label || showValue) && /* @__PURE__ */ jsxs(LabelRow, { children: [
3813
3922
  label && /* @__PURE__ */ jsx("span", { children: label }),
3814
3923
  showValue && /* @__PURE__ */ jsx("span", { children: valueLabel })
@@ -3938,7 +4047,7 @@ var inputColors2 = (theme, error) => ({
3938
4047
  boxShadow: `0 0 0 3px ${error ? theme.palette.error.main : theme.palette.primary.main}33`
3939
4048
  }
3940
4049
  });
3941
- var Root9 = styled("div")(({ $fullWidth }) => ({
4050
+ var Root11 = styled("div")(({ $fullWidth }) => ({
3942
4051
  display: $fullWidth ? "block" : "inline-block",
3943
4052
  width: $fullWidth ? "100%" : "auto",
3944
4053
  position: "relative"
@@ -4333,7 +4442,7 @@ var DateTimePicker = forwardRef(
4333
4442
  const showCalendar = mode !== "time";
4334
4443
  const showTime = mode !== "date";
4335
4444
  const needsConfirm = mode !== "date";
4336
- return /* @__PURE__ */ jsxs(Root9, { ref: rootRef, $fullWidth: fullWidth, children: [
4445
+ return /* @__PURE__ */ jsxs(Root11, { ref: rootRef, $fullWidth: fullWidth, children: [
4337
4446
  label && /* @__PURE__ */ jsx(Label, { htmlFor: inputId, error, size, children: label }),
4338
4447
  /* @__PURE__ */ jsxs(
4339
4448
  InputWrapper3,
@@ -4740,7 +4849,7 @@ var StyledBadge = styled("span", {
4740
4849
  fontFamily: theme.typography.fontFamily,
4741
4850
  ...getVariantStyles2($variant, theme)
4742
4851
  }));
4743
- function Badge({ variant = "default", ...props }) {
4852
+ function Badge2({ variant = "default", ...props }) {
4744
4853
  return /* @__PURE__ */ jsx(StyledBadge, { $variant: variant, ...props });
4745
4854
  }
4746
4855
  var badgeVariants = [
@@ -4752,7 +4861,41 @@ var badgeVariants = [
4752
4861
  "ghost",
4753
4862
  "promo"
4754
4863
  ];
4755
- var sizeMap3 = {
4864
+ function getBgColor(variant) {
4865
+ switch (variant) {
4866
+ case "flash":
4867
+ return "#f59e0b";
4868
+ case "new":
4869
+ return "#3b82f6";
4870
+ case "hot":
4871
+ return "#ef4444";
4872
+ default:
4873
+ return "#16a34a";
4874
+ }
4875
+ }
4876
+ var Root12 = styled("span", {
4877
+ shouldForwardProp: (prop) => prop !== "$variant"
4878
+ })(({ theme, $variant }) => ({
4879
+ display: "inline-flex",
4880
+ alignItems: "center",
4881
+ gap: "0.25rem",
4882
+ borderRadius: "0.375rem",
4883
+ padding: "0.25rem 0.625rem",
4884
+ fontSize: "0.75rem",
4885
+ fontWeight: 700,
4886
+ lineHeight: 1,
4887
+ letterSpacing: "0.02em",
4888
+ fontFamily: theme.typography.fontFamily,
4889
+ backgroundColor: getBgColor($variant),
4890
+ color: "#ffffff",
4891
+ textTransform: "uppercase"
4892
+ }));
4893
+ function SaleBadge({ discount, label, variant = "default", ...props }) {
4894
+ const text = label ?? (discount !== void 0 ? `-${discount}%` : "SALE");
4895
+ return /* @__PURE__ */ jsx(Root12, { $variant: variant, ...props, children: text });
4896
+ }
4897
+ var saleBadgeVariants = ["default", "flash", "new", "hot"];
4898
+ var sizeMap4 = {
4756
4899
  sm: { width: "2rem", height: "2rem", fontSize: "0.75rem" },
4757
4900
  md: { width: "2.5rem", height: "2.5rem", fontSize: "0.875rem" },
4758
4901
  lg: { width: "3rem", height: "3rem", fontSize: "1rem" },
@@ -4788,7 +4931,7 @@ var StyledAvatar = styled("div", {
4788
4931
  fontWeight: 600,
4789
4932
  fontFamily: theme.typography.fontFamily,
4790
4933
  userSelect: "none",
4791
- ...sizeMap3[$size],
4934
+ ...sizeMap4[$size],
4792
4935
  ...getColorStyles($color, theme)
4793
4936
  }));
4794
4937
  function Avatar({ initials, size = "md", color = "primary", ...props }) {
@@ -4900,7 +5043,7 @@ var spin = keyframes$1`to { transform: rotate(360deg); }`;
4900
5043
  var fade = keyframes$1`0%,100%{opacity:.15} 50%{opacity:1}`;
4901
5044
  var scalePulse = keyframes$1`0%,100%{transform:scale(0.6);opacity:.4} 50%{transform:scale(1);opacity:1}`;
4902
5045
  var barAnim = keyframes$1`0%,100%{transform:scaleY(.4);opacity:.5} 50%{transform:scaleY(1);opacity:1}`;
4903
- var Root10 = styled("span", {
5046
+ var Root13 = styled("span", {
4904
5047
  shouldForwardProp: (p) => !["$size", "$color"].includes(p)
4905
5048
  })(({ theme, $size, $color }) => {
4906
5049
  const colorMap = {
@@ -4988,8 +5131,8 @@ function Spinner3({
4988
5131
  label = "\u0141adowanie\u2026",
4989
5132
  ...props
4990
5133
  }) {
4991
- const Inner6 = VARIANTS[variant];
4992
- return /* @__PURE__ */ jsx(Root10, { $size: size, $color: color, role: "status", "aria-label": label, ...props, children: /* @__PURE__ */ jsx(Inner6, {}) });
5134
+ const Inner7 = VARIANTS[variant];
5135
+ return /* @__PURE__ */ jsx(Root13, { $size: size, $color: color, role: "status", "aria-label": label, ...props, children: /* @__PURE__ */ jsx(Inner7, {}) });
4993
5136
  }
4994
5137
  var spinnerVariants = ["ring", "dots", "pulse", "bars"];
4995
5138
  var spinnerSizes = ["xs", "sm", "md", "lg", "xl"];
@@ -5115,7 +5258,7 @@ var FONT_MAP = {
5115
5258
  lg: "1.125rem",
5116
5259
  xl: "1.5rem"
5117
5260
  };
5118
- var Root11 = styled("div")({ position: "relative", display: "inline-flex", flexShrink: 0 });
5261
+ var Root14 = styled("div")({ position: "relative", display: "inline-flex", flexShrink: 0 });
5119
5262
  var Label2 = styled("div", {
5120
5263
  shouldForwardProp: (p) => p !== "$size"
5121
5264
  })(({ theme, $size }) => ({
@@ -5169,7 +5312,7 @@ function ProgressCircle({
5169
5312
  const { color, gradient } = useStrokeColor(variant, gradientId);
5170
5313
  const trackColor = theme.palette.mode === "dark" ? "rgba(255,255,255,0.1)" : "rgba(0,0,0,0.08)";
5171
5314
  return /* @__PURE__ */ jsxs(
5172
- Root11,
5315
+ Root14,
5173
5316
  {
5174
5317
  role: "progressbar",
5175
5318
  "aria-valuenow": value,
@@ -5516,12 +5659,110 @@ var StyledArticle = styled("article")(({ theme }) => ({
5516
5659
  }));
5517
5660
  var Article = forwardRef(({ children, ...rest }, ref) => /* @__PURE__ */ jsx(StyledArticle, { ref, ...rest, children }));
5518
5661
  Article.displayName = "Article";
5519
- var sizeMap4 = {
5662
+ var PRESET_MAP = {
5663
+ "1/1": 1,
5664
+ "4/3": 4 / 3,
5665
+ "3/2": 3 / 2,
5666
+ "16/9": 16 / 9,
5667
+ "21/9": 21 / 9,
5668
+ "9/16": 9 / 16,
5669
+ "3/4": 3 / 4,
5670
+ "2/3": 2 / 3
5671
+ };
5672
+ var Root15 = styled("div")({
5673
+ position: "relative",
5674
+ width: "100%",
5675
+ "& > *": {
5676
+ position: "absolute",
5677
+ inset: 0,
5678
+ width: "100%",
5679
+ height: "100%",
5680
+ objectFit: "cover"
5681
+ }
5682
+ });
5683
+ var AspectRatio = forwardRef(
5684
+ ({ ratio = "16/9", children, style, ...props }, ref) => {
5685
+ const numericRatio = typeof ratio === "string" ? PRESET_MAP[ratio] ?? 16 / 9 : ratio;
5686
+ const paddingBottom = `${1 / numericRatio * 100}%`;
5687
+ return /* @__PURE__ */ jsx(Root15, { ref, style: { paddingBottom, ...style }, ...props, children });
5688
+ }
5689
+ );
5690
+ AspectRatio.displayName = "AspectRatio";
5691
+ var aspectRatioPresets = Object.keys(PRESET_MAP);
5692
+ var Root16 = styled(Card)(({ theme }) => ({
5693
+ display: "flex",
5694
+ flexDirection: "column",
5695
+ overflow: "hidden",
5696
+ cursor: "pointer",
5697
+ transition: "box-shadow 150ms ease, transform 150ms ease",
5698
+ "&:hover": {
5699
+ boxShadow: theme.shadows[4],
5700
+ transform: "translateY(-2px)"
5701
+ }
5702
+ }));
5703
+ var ImageWrap = styled("div")({
5704
+ margin: "-1.5rem -1.5rem 1rem"
5705
+ });
5706
+ var Image = styled("img")({
5707
+ objectFit: "cover",
5708
+ width: "100%",
5709
+ height: "100%"
5710
+ });
5711
+ var ImagePlaceholder = styled("div")(({ theme }) => ({
5712
+ width: "100%",
5713
+ height: "100%",
5714
+ backgroundColor: theme.palette.action.hover,
5715
+ display: "flex",
5716
+ alignItems: "center",
5717
+ justifyContent: "center",
5718
+ color: theme.palette.text.disabled
5719
+ }));
5720
+ var Content = styled("div")({
5721
+ display: "flex",
5722
+ flexDirection: "column",
5723
+ gap: "0.25rem"
5724
+ });
5725
+ var Name = styled("h3")(({ theme }) => ({
5726
+ margin: 0,
5727
+ color: theme.palette.text.primary,
5728
+ fontFamily: theme.typography.fontFamily,
5729
+ fontSize: "1rem",
5730
+ fontWeight: 700,
5731
+ lineHeight: 1.4
5732
+ }));
5733
+ var Count = styled("span")(({ theme }) => ({
5734
+ color: theme.palette.text.secondary,
5735
+ fontFamily: theme.typography.fontFamily,
5736
+ fontSize: "0.875rem"
5737
+ }));
5738
+ var CardLink = styled("a")({
5739
+ display: "block",
5740
+ textDecoration: "none",
5741
+ color: "inherit",
5742
+ outline: "none"
5743
+ });
5744
+ var CategoryCard = forwardRef(
5745
+ ({ name, imageUrl, imageAlt, count, href, ...props }, ref) => {
5746
+ const content = /* @__PURE__ */ jsxs(Fragment, { children: [
5747
+ /* @__PURE__ */ jsx(ImageWrap, { children: /* @__PURE__ */ jsx(AspectRatio, { ratio: "4/3", children: imageUrl ? /* @__PURE__ */ jsx(Image, { src: imageUrl, alt: imageAlt ?? name }) : /* @__PURE__ */ jsx(ImagePlaceholder, { "aria-label": imageAlt ?? name, children: /* @__PURE__ */ jsx(ImageIcon, { style: { fontSize: 48 } }) }) }) }),
5748
+ /* @__PURE__ */ jsxs(Content, { children: [
5749
+ /* @__PURE__ */ jsx(Name, { children: name }),
5750
+ count !== void 0 && /* @__PURE__ */ jsxs(Count, { children: [
5751
+ count,
5752
+ " produkt\xF3w"
5753
+ ] })
5754
+ ] })
5755
+ ] });
5756
+ return /* @__PURE__ */ jsx(Root16, { ref, variant: "default", padding: "md", rounded: "lg", ...props, children: href ? /* @__PURE__ */ jsx(CardLink, { href, children: content }) : content });
5757
+ }
5758
+ );
5759
+ CategoryCard.displayName = "CategoryCard";
5760
+ var sizeMap5 = {
5520
5761
  sm: "1rem",
5521
5762
  md: "1.25rem",
5522
5763
  lg: "1.5rem"
5523
5764
  };
5524
- var Root12 = styled("div")(({ theme }) => ({
5765
+ var Root17 = styled("div")(({ theme }) => ({
5525
5766
  display: "inline-flex",
5526
5767
  alignItems: "center",
5527
5768
  gap: "0.5rem",
@@ -5541,7 +5782,7 @@ var StarButton = styled("button")(
5541
5782
  padding: 0,
5542
5783
  color: $active ? "#f59e0b" : theme.palette.action.disabled,
5543
5784
  cursor: "pointer",
5544
- fontSize: sizeMap4[$size],
5785
+ fontSize: sizeMap5[$size],
5545
5786
  lineHeight: 1,
5546
5787
  "&:disabled": {
5547
5788
  cursor: "default"
@@ -5556,7 +5797,7 @@ var Rating = forwardRef(
5556
5797
  ({ value, max = 5, readonly = true, size = "md", label, count, onChange, ...props }, ref) => {
5557
5798
  const roundedValue = Math.round(value);
5558
5799
  const meta = label ?? (count !== void 0 ? `(${count})` : void 0);
5559
- return /* @__PURE__ */ jsxs(Root12, { ref, "aria-label": `Ocena ${value} z ${max}`, ...props, children: [
5800
+ return /* @__PURE__ */ jsxs(Root17, { ref, "aria-label": `Ocena ${value} z ${max}`, ...props, children: [
5560
5801
  /* @__PURE__ */ jsx(
5561
5802
  Stars,
5562
5803
  {
@@ -5587,36 +5828,6 @@ var Rating = forwardRef(
5587
5828
  }
5588
5829
  );
5589
5830
  Rating.displayName = "Rating";
5590
- var PRESET_MAP = {
5591
- "1/1": 1,
5592
- "4/3": 4 / 3,
5593
- "3/2": 3 / 2,
5594
- "16/9": 16 / 9,
5595
- "21/9": 21 / 9,
5596
- "9/16": 9 / 16,
5597
- "3/4": 3 / 4,
5598
- "2/3": 2 / 3
5599
- };
5600
- var Root13 = styled("div")({
5601
- position: "relative",
5602
- width: "100%",
5603
- "& > *": {
5604
- position: "absolute",
5605
- inset: 0,
5606
- width: "100%",
5607
- height: "100%",
5608
- objectFit: "cover"
5609
- }
5610
- });
5611
- var AspectRatio = forwardRef(
5612
- ({ ratio = "16/9", children, style, ...props }, ref) => {
5613
- const numericRatio = typeof ratio === "string" ? PRESET_MAP[ratio] ?? 16 / 9 : ratio;
5614
- const paddingBottom = `${1 / numericRatio * 100}%`;
5615
- return /* @__PURE__ */ jsx(Root13, { ref, style: { paddingBottom, ...style }, ...props, children });
5616
- }
5617
- );
5618
- AspectRatio.displayName = "AspectRatio";
5619
- var aspectRatioPresets = Object.keys(PRESET_MAP);
5620
5831
  var DEFAULT_OMNIBUS_LABEL = "Najni\u017Csza cena z ostatnich 30 dni";
5621
5832
  var FONT_SIZE = {
5622
5833
  sm: "0.875rem",
@@ -5624,7 +5835,7 @@ var FONT_SIZE = {
5624
5835
  lg: "1.5rem",
5625
5836
  xl: "2rem"
5626
5837
  };
5627
- var Root14 = styled("div")({
5838
+ var Root18 = styled("div")({
5628
5839
  display: "inline-flex",
5629
5840
  flexDirection: "column",
5630
5841
  gap: "0.25rem"
@@ -5705,7 +5916,7 @@ var Price = forwardRef(
5705
5916
  const onSale = originalPrice !== void 0 && originalPrice > price;
5706
5917
  const discount = onSale ? calcDiscount(price, originalPrice) : 0;
5707
5918
  const showOmnibus = lowestPrice !== void 0;
5708
- return /* @__PURE__ */ jsxs(Root14, { ref, ...props, children: [
5919
+ return /* @__PURE__ */ jsxs(Root18, { ref, ...props, children: [
5709
5920
  /* @__PURE__ */ jsxs(PriceRow, { children: [
5710
5921
  /* @__PURE__ */ jsx(
5711
5922
  Current,
@@ -5749,26 +5960,35 @@ var Price = forwardRef(
5749
5960
  );
5750
5961
  Price.displayName = "Price";
5751
5962
  var priceSizes = ["sm", "md", "lg", "xl"];
5752
- var Root15 = styled(Card)({
5963
+ var Root19 = styled(Card)({
5753
5964
  display: "flex",
5754
5965
  flexDirection: "column",
5755
5966
  height: "100%",
5756
5967
  overflow: "hidden"
5757
5968
  });
5758
- var ImageWrap = styled("div")({
5969
+ var ImageWrap2 = styled("div")({
5759
5970
  position: "relative",
5760
5971
  margin: "-1.5rem -1.5rem 1rem"
5761
5972
  });
5762
- var Image = styled("img")(({ theme }) => ({
5973
+ var Image2 = styled("img")(({ theme }) => ({
5763
5974
  objectFit: "cover",
5764
5975
  backgroundColor: theme.palette.action.hover
5765
5976
  }));
5977
+ var ImagePlaceholder2 = styled("div")(({ theme }) => ({
5978
+ width: "100%",
5979
+ height: "100%",
5980
+ backgroundColor: theme.palette.action.hover,
5981
+ display: "flex",
5982
+ alignItems: "center",
5983
+ justifyContent: "center",
5984
+ color: theme.palette.text.disabled
5985
+ }));
5766
5986
  var BadgeSlot = styled("div")({
5767
5987
  position: "absolute",
5768
5988
  left: "0.75rem",
5769
5989
  top: "0.75rem"
5770
5990
  });
5771
- var Name = styled("h3")(({ theme }) => ({
5991
+ var Name2 = styled("h3")(({ theme }) => ({
5772
5992
  margin: 0,
5773
5993
  color: theme.palette.text.primary,
5774
5994
  fontFamily: theme.typography.fontFamily,
@@ -5799,12 +6019,12 @@ var ProductCard = forwardRef(
5799
6019
  ctaLabel = "Dodaj do koszyka",
5800
6020
  onAddToCart,
5801
6021
  ...props
5802
- }, ref) => /* @__PURE__ */ jsxs(Root15, { ref, variant: "default", padding: "md", rounded: "lg", ...props, children: [
5803
- /* @__PURE__ */ jsx(ImageWrap, { children: /* @__PURE__ */ jsxs(AspectRatio, { ratio: "4/3", children: [
5804
- /* @__PURE__ */ jsx(Image, { src: imageUrl, alt: imageAlt ?? name }),
5805
- badge && /* @__PURE__ */ jsx(BadgeSlot, { children: /* @__PURE__ */ jsx(Badge, { variant: badgeVariant, children: badge }) })
6022
+ }, ref) => /* @__PURE__ */ jsxs(Root19, { ref, variant: "default", padding: "md", rounded: "lg", ...props, children: [
6023
+ /* @__PURE__ */ jsx(ImageWrap2, { children: /* @__PURE__ */ jsxs(AspectRatio, { ratio: "4/3", children: [
6024
+ imageUrl ? /* @__PURE__ */ jsx(Image2, { src: imageUrl, alt: imageAlt ?? name }) : /* @__PURE__ */ jsx(ImagePlaceholder2, { "aria-label": imageAlt ?? name, children: /* @__PURE__ */ jsx(ImageIcon, { style: { fontSize: 48 } }) }),
6025
+ badge && /* @__PURE__ */ jsx(BadgeSlot, { children: /* @__PURE__ */ jsx(Badge2, { variant: badgeVariant, children: badge }) })
5806
6026
  ] }) }),
5807
- /* @__PURE__ */ jsx(Name, { children: name }),
6027
+ /* @__PURE__ */ jsx(Name2, { children: name }),
5808
6028
  rating !== void 0 && /* @__PURE__ */ jsx(Rating, { value: rating, count: reviewCount, size: "sm" }),
5809
6029
  /* @__PURE__ */ jsx(
5810
6030
  Price,
@@ -5817,55 +6037,181 @@ var ProductCard = forwardRef(
5817
6037
  style: { marginTop: "0.5rem" }
5818
6038
  }
5819
6039
  ),
5820
- /* @__PURE__ */ jsx(Footer, { children: /* @__PURE__ */ jsx(Button, { fullWidth: true, onClick: onAddToCart, children: ctaLabel }) })
6040
+ /* @__PURE__ */ jsx(Footer, { children: /* @__PURE__ */ jsx(Button, { fullWidth: true, onClick: (e) => {
6041
+ e.stopPropagation();
6042
+ onAddToCart?.();
6043
+ }, children: ctaLabel }) })
5821
6044
  ] })
5822
6045
  );
5823
6046
  ProductCard.displayName = "ProductCard";
5824
- var ImageWrapper = styled("div", {
5825
- shouldForwardProp: (prop) => prop !== "$ar"
5826
- })(({ $ar }) => ({
5827
- position: "relative",
6047
+ var COLLAPSE_AT = "480px";
6048
+ var ContainerRoot = styled("div")({
6049
+ containerType: "inline-size",
5828
6050
  width: "100%",
5829
- aspectRatio: $ar,
5830
- overflow: "hidden",
5831
- flexShrink: 0
5832
- }));
5833
- var Img = styled("img")({
6051
+ height: "100%"
6052
+ });
6053
+ var Inner = styled("div")({
6054
+ display: "flex",
6055
+ flexDirection: "row",
6056
+ height: "100%",
6057
+ [`@container (max-width: ${COLLAPSE_AT})`]: {
6058
+ flexDirection: "column"
6059
+ }
6060
+ });
6061
+ var ImageWrap3 = styled("div")({
6062
+ position: "relative",
6063
+ flexShrink: 0,
6064
+ width: "clamp(120px, 33%, 200px)",
6065
+ alignSelf: "stretch",
6066
+ margin: "-1.5rem 1rem -1.5rem -1.5rem",
6067
+ [`@container (max-width: ${COLLAPSE_AT})`]: {
6068
+ width: "auto",
6069
+ alignSelf: "auto",
6070
+ margin: "-1.5rem -1.5rem 1rem",
6071
+ aspectRatio: "4 / 3"
6072
+ }
6073
+ });
6074
+ var Image3 = styled("img")(({ theme }) => ({
6075
+ position: "absolute",
6076
+ inset: 0,
5834
6077
  width: "100%",
5835
6078
  height: "100%",
5836
6079
  objectFit: "cover",
5837
- display: "block"
5838
- });
5839
- var Placeholder2 = styled("div")(({ theme }) => ({
6080
+ backgroundColor: theme.palette.action.hover
6081
+ }));
6082
+ var ImagePlaceholder3 = styled("div")(({ theme }) => ({
6083
+ position: "absolute",
6084
+ inset: 0,
5840
6085
  width: "100%",
5841
6086
  height: "100%",
6087
+ backgroundColor: theme.palette.action.hover,
5842
6088
  display: "flex",
5843
6089
  alignItems: "center",
5844
6090
  justifyContent: "center",
5845
- backgroundColor: theme.palette.action.hover
6091
+ color: theme.palette.text.disabled
5846
6092
  }));
5847
- var Overlay = styled("div")({
6093
+ var BadgeSlot2 = styled("div")({
5848
6094
  position: "absolute",
5849
- inset: 0,
5850
- background: "linear-gradient(to bottom, rgba(0,0,0,0.3) 0%, transparent 50%)",
5851
- pointerEvents: "none"
6095
+ left: "0.75rem",
6096
+ top: "0.75rem",
6097
+ zIndex: 1
5852
6098
  });
5853
- var FileTextIcon = () => /* @__PURE__ */ jsx(ArticleIcon, { "aria-hidden": "true", style: { fontSize: 32, opacity: 0.3 } });
5854
- function toAspectRatioCss(ratio) {
5855
- if (typeof ratio === "number") return String(ratio);
5856
- return ratio.replace("/", " / ");
5857
- }
5858
- var PostCardImage = ({
5859
- src,
5860
- alt = "",
5861
- aspectRatio = "4/3",
5862
- overlay = false,
5863
- className,
5864
- style
5865
- }) => {
5866
- const [imgError, setImgError] = useState(false);
5867
- const showPlaceholder = !src || imgError;
5868
- return /* @__PURE__ */ jsxs(ImageWrapper, { $ar: toAspectRatioCss(aspectRatio), className, style, children: [
6099
+ var Content2 = styled("div")({
6100
+ display: "flex",
6101
+ flexDirection: "column",
6102
+ flex: 1,
6103
+ minWidth: 0
6104
+ });
6105
+ var Name3 = styled("h3")(({ theme }) => ({
6106
+ margin: 0,
6107
+ color: theme.palette.text.primary,
6108
+ fontFamily: theme.typography.fontFamily,
6109
+ fontSize: "1rem",
6110
+ fontWeight: 700,
6111
+ lineHeight: 1.4
6112
+ }));
6113
+ var Footer2 = styled("div")({
6114
+ display: "grid",
6115
+ gap: "1rem",
6116
+ marginTop: "auto",
6117
+ paddingTop: "1rem"
6118
+ });
6119
+ var ProductCardHorizontal = forwardRef(
6120
+ ({
6121
+ name,
6122
+ imageUrl,
6123
+ imageAlt,
6124
+ price,
6125
+ originalPrice,
6126
+ currency,
6127
+ locale,
6128
+ lowestPrice,
6129
+ badge,
6130
+ badgeVariant = "success",
6131
+ rating,
6132
+ reviewCount,
6133
+ ctaLabel = "Dodaj do koszyka",
6134
+ onAddToCart,
6135
+ ...props
6136
+ }, ref) => /* @__PURE__ */ jsx(Card, { ref, variant: "default", padding: "md", rounded: "lg", ...props, children: /* @__PURE__ */ jsx(ContainerRoot, { children: /* @__PURE__ */ jsxs(Inner, { children: [
6137
+ /* @__PURE__ */ jsxs(ImageWrap3, { children: [
6138
+ imageUrl ? /* @__PURE__ */ jsx(Image3, { src: imageUrl, alt: imageAlt ?? name }) : /* @__PURE__ */ jsx(ImagePlaceholder3, { "aria-label": imageAlt ?? name, children: /* @__PURE__ */ jsx(ImageIcon, { style: { fontSize: 48 } }) }),
6139
+ badge && /* @__PURE__ */ jsx(BadgeSlot2, { children: /* @__PURE__ */ jsx(Badge2, { variant: badgeVariant, children: badge }) })
6140
+ ] }),
6141
+ /* @__PURE__ */ jsxs(Content2, { children: [
6142
+ /* @__PURE__ */ jsx(Name3, { children: name }),
6143
+ rating !== void 0 && /* @__PURE__ */ jsx(Rating, { value: rating, count: reviewCount, size: "sm" }),
6144
+ /* @__PURE__ */ jsx(
6145
+ Price,
6146
+ {
6147
+ price,
6148
+ originalPrice,
6149
+ currency,
6150
+ locale,
6151
+ lowestPrice,
6152
+ style: { marginTop: "0.5rem" }
6153
+ }
6154
+ ),
6155
+ /* @__PURE__ */ jsx(Footer2, { children: /* @__PURE__ */ jsx(
6156
+ Button,
6157
+ {
6158
+ fullWidth: true,
6159
+ onClick: (e) => {
6160
+ e.stopPropagation();
6161
+ onAddToCart?.();
6162
+ },
6163
+ children: ctaLabel
6164
+ }
6165
+ ) })
6166
+ ] })
6167
+ ] }) }) })
6168
+ );
6169
+ ProductCardHorizontal.displayName = "ProductCardHorizontal";
6170
+ var ImageWrapper = styled("div", {
6171
+ shouldForwardProp: (prop) => prop !== "$ar"
6172
+ })(({ $ar }) => ({
6173
+ position: "relative",
6174
+ width: "100%",
6175
+ aspectRatio: $ar,
6176
+ overflow: "hidden",
6177
+ flexShrink: 0
6178
+ }));
6179
+ var Img = styled("img")({
6180
+ width: "100%",
6181
+ height: "100%",
6182
+ objectFit: "cover",
6183
+ display: "block"
6184
+ });
6185
+ var Placeholder2 = styled("div")(({ theme }) => ({
6186
+ width: "100%",
6187
+ height: "100%",
6188
+ display: "flex",
6189
+ alignItems: "center",
6190
+ justifyContent: "center",
6191
+ backgroundColor: theme.palette.action.hover
6192
+ }));
6193
+ var Overlay = styled("div")({
6194
+ position: "absolute",
6195
+ inset: 0,
6196
+ background: "linear-gradient(to bottom, rgba(0,0,0,0.3) 0%, transparent 50%)",
6197
+ pointerEvents: "none"
6198
+ });
6199
+ var FileTextIcon = () => /* @__PURE__ */ jsx(ArticleIcon, { "aria-hidden": "true", style: { fontSize: 32, opacity: 0.3 } });
6200
+ function toAspectRatioCss(ratio) {
6201
+ if (typeof ratio === "number") return String(ratio);
6202
+ return ratio.replace("/", " / ");
6203
+ }
6204
+ var PostCardImage = ({
6205
+ src,
6206
+ alt = "",
6207
+ aspectRatio = "4/3",
6208
+ overlay = false,
6209
+ className,
6210
+ style
6211
+ }) => {
6212
+ const [imgError, setImgError] = useState(false);
6213
+ const showPlaceholder = !src || imgError;
6214
+ return /* @__PURE__ */ jsxs(ImageWrapper, { $ar: toAspectRatioCss(aspectRatio), className, style, children: [
5869
6215
  showPlaceholder ? /* @__PURE__ */ jsx(Placeholder2, { children: /* @__PURE__ */ jsx(FileTextIcon, {}) }) : /* @__PURE__ */ jsx(Img, { src, alt, onError: () => setImgError(true) }),
5870
6216
  overlay && !showPlaceholder && /* @__PURE__ */ jsx(Overlay, {})
5871
6217
  ] });
@@ -5941,7 +6287,7 @@ var StyledInner = styled("div", {
5941
6287
  height: "100%",
5942
6288
  ...getLayoutStyles($variant)
5943
6289
  }));
5944
- var CardLink = styled("a")(({ theme }) => ({
6290
+ var CardLink2 = styled("a")(({ theme }) => ({
5945
6291
  display: "block",
5946
6292
  textDecoration: "none",
5947
6293
  color: "inherit",
@@ -6047,13 +6393,13 @@ var PostCard = forwardRef(
6047
6393
  isFeatured && showImage && /* @__PURE__ */ jsx(FeaturedImageWrapper, { children: /* @__PURE__ */ jsx(PostCardImage, { src: imageUrl, alt: imageAlt, aspectRatio: "16/9", overlay: true }) }),
6048
6394
  !isFeatured && showImage && (isHorizontal ? /* @__PURE__ */ jsx(HorizontalImageWrapper, { children: /* @__PURE__ */ jsx(PostCardImage, { src: imageUrl, alt: imageAlt, aspectRatio: "4/3" }) }) : /* @__PURE__ */ jsx(PostCardImage, { src: imageUrl, alt: imageAlt, aspectRatio: "16/9" })),
6049
6395
  /* @__PURE__ */ jsxs(StyledContent, { $variant: variant, children: [
6050
- category && /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx(Badge, { variant: isFeatured ? "ghost" : "default", children: category }) }),
6396
+ category && /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx(Badge2, { variant: isFeatured ? "ghost" : "default", children: category }) }),
6051
6397
  /* @__PURE__ */ jsx(StyledTitle, { className: "post-card-title", $featured: isFeatured, children: title }),
6052
6398
  excerpt && variant !== "compact" && !isFeatured && /* @__PURE__ */ jsx(StyledExcerpt, { children: excerpt }),
6053
6399
  (date || author) && /* @__PURE__ */ jsx(PostCardMeta, { date, author, inverted: isFeatured })
6054
6400
  ] })
6055
6401
  ] });
6056
- return /* @__PURE__ */ jsx(Card, { ref, variant: cardVariant, padding: "none", rounded: "lg", ...rest, children: /* @__PURE__ */ jsx(StyledRoot, { children: href ? /* @__PURE__ */ jsx(CardLink, { href, "aria-label": title, children: inner }) : inner }) });
6402
+ return /* @__PURE__ */ jsx(Card, { ref, variant: cardVariant, padding: "none", rounded: "lg", ...rest, children: /* @__PURE__ */ jsx(StyledRoot, { children: href ? /* @__PURE__ */ jsx(CardLink2, { href, "aria-label": title, children: inner }) : inner }) });
6057
6403
  }
6058
6404
  );
6059
6405
  PostCard.displayName = "PostCard";
@@ -6065,7 +6411,7 @@ var postCardVariants = [
6065
6411
  "featured",
6066
6412
  "compact"
6067
6413
  ];
6068
- var Root16 = styled(Card)({
6414
+ var Root20 = styled(Card)({
6069
6415
  display: "flex",
6070
6416
  flexDirection: "column",
6071
6417
  height: "100%"
@@ -6076,7 +6422,7 @@ var NameRow = styled("div")({
6076
6422
  justifyContent: "space-between",
6077
6423
  marginBottom: "0.75rem"
6078
6424
  });
6079
- var Name2 = styled("p")(({ theme }) => ({
6425
+ var Name4 = styled("p")(({ theme }) => ({
6080
6426
  margin: 0,
6081
6427
  fontFamily: theme.typography.fontFamily,
6082
6428
  fontWeight: 600,
@@ -6196,10 +6542,10 @@ var PricingCard = forwardRef(
6196
6542
  }, ref) => {
6197
6543
  const resolvedCardVariant = cardVariant ?? (popular ? "gradient-primary" : "default");
6198
6544
  const resolvedCtaVariant = ctaVariant ?? (popular ? "primary" : "ghost");
6199
- return /* @__PURE__ */ jsxs(Root16, { ref, variant: resolvedCardVariant, padding: "lg", rounded: "lg", ...props, children: [
6545
+ return /* @__PURE__ */ jsxs(Root20, { ref, variant: resolvedCardVariant, padding: "lg", rounded: "lg", ...props, children: [
6200
6546
  /* @__PURE__ */ jsxs(NameRow, { children: [
6201
- /* @__PURE__ */ jsx(Name2, { children: name }),
6202
- popular && /* @__PURE__ */ jsx(Badge, { variant: "default", children: popularLabel })
6547
+ /* @__PURE__ */ jsx(Name4, { children: name }),
6548
+ popular && /* @__PURE__ */ jsx(Badge2, { variant: "default", children: popularLabel })
6203
6549
  ] }),
6204
6550
  /* @__PURE__ */ jsxs(PriceRow2, { children: [
6205
6551
  currency && /* @__PURE__ */ jsx(Currency, { children: currency }),
@@ -6222,7 +6568,7 @@ var PricingCard = forwardRef(
6222
6568
  }
6223
6569
  );
6224
6570
  PricingCard.displayName = "PricingCard";
6225
- var Root17 = styled(Card, {
6571
+ var Root21 = styled(Card, {
6226
6572
  shouldForwardProp: (prop) => prop !== "$align"
6227
6573
  })(({ $align }) => ({
6228
6574
  textAlign: $align,
@@ -6252,14 +6598,14 @@ var Description3 = styled("p")(({ theme }) => ({
6252
6598
  lineHeight: 1.5
6253
6599
  }));
6254
6600
  var StatCard = forwardRef(
6255
- ({ stat, cardVariant = "default", align = "center", ...props }, ref) => /* @__PURE__ */ jsxs(Root17, { ref, variant: cardVariant, padding: "lg", rounded: "lg", $align: align, ...props, children: [
6601
+ ({ stat, cardVariant = "default", align = "center", ...props }, ref) => /* @__PURE__ */ jsxs(Root21, { ref, variant: cardVariant, padding: "lg", rounded: "lg", $align: align, ...props, children: [
6256
6602
  /* @__PURE__ */ jsx(Value, { children: stat.value }),
6257
6603
  /* @__PURE__ */ jsx(Label3, { children: stat.label }),
6258
6604
  stat.description && /* @__PURE__ */ jsx(Description3, { children: stat.description })
6259
6605
  ] })
6260
6606
  );
6261
6607
  StatCard.displayName = "StatCard";
6262
- var Root18 = styled(Card)({
6608
+ var Root22 = styled(Card)({
6263
6609
  display: "flex",
6264
6610
  flexDirection: "column",
6265
6611
  gap: "1.25rem",
@@ -6285,7 +6631,7 @@ var Quote = styled("blockquote")(({ theme }) => ({
6285
6631
  marginLeft: "0.125rem"
6286
6632
  }
6287
6633
  }));
6288
- var Footer2 = styled("div")({
6634
+ var Footer3 = styled("div")({
6289
6635
  display: "flex",
6290
6636
  alignItems: "center",
6291
6637
  gap: "0.75rem"
@@ -6316,10 +6662,10 @@ var AuthorRole = styled("p")(({ theme }) => ({
6316
6662
  var TestimonialCard = forwardRef(
6317
6663
  ({ testimonial, cardVariant = "default", ...props }, ref) => {
6318
6664
  const initials = testimonial.authorInitials ?? testimonial.authorName.split(" ").filter(Boolean).slice(0, 2).map((p) => p[0]).join("").toUpperCase();
6319
- return /* @__PURE__ */ jsxs(Root18, { ref, variant: cardVariant, padding: "lg", rounded: "lg", ...props, children: [
6665
+ return /* @__PURE__ */ jsxs(Root22, { ref, variant: cardVariant, padding: "lg", rounded: "lg", ...props, children: [
6320
6666
  testimonial.rating && /* @__PURE__ */ jsx(Rating, { value: testimonial.rating, readonly: true, size: "sm" }),
6321
6667
  /* @__PURE__ */ jsx(Quote, { children: testimonial.quote }),
6322
- /* @__PURE__ */ jsxs(Footer2, { children: [
6668
+ /* @__PURE__ */ jsxs(Footer3, { children: [
6323
6669
  testimonial.authorAvatarUrl ? /* @__PURE__ */ jsx(AvatarImage, { src: testimonial.authorAvatarUrl, alt: testimonial.authorName }) : /* @__PURE__ */ jsx(Avatar, { initials, size: "md", color: "primary" }),
6324
6670
  /* @__PURE__ */ jsxs(AuthorInfo, { children: [
6325
6671
  /* @__PURE__ */ jsx(AuthorName, { children: testimonial.authorName }),
@@ -6330,7 +6676,7 @@ var TestimonialCard = forwardRef(
6330
6676
  }
6331
6677
  );
6332
6678
  TestimonialCard.displayName = "TestimonialCard";
6333
- var Root19 = styled(Card)(({ theme }) => ({
6679
+ var Root23 = styled(Card)(({ theme }) => ({
6334
6680
  display: "flex",
6335
6681
  alignItems: "center",
6336
6682
  gap: "1rem",
@@ -6349,10 +6695,10 @@ var AvatarImage2 = styled("img")({
6349
6695
  borderRadius: "50%",
6350
6696
  objectFit: "cover"
6351
6697
  });
6352
- var Content = styled("div")({
6698
+ var Content3 = styled("div")({
6353
6699
  minWidth: 0
6354
6700
  });
6355
- var Name3 = styled("h3")(({ theme }) => ({
6701
+ var Name5 = styled("h3")(({ theme }) => ({
6356
6702
  margin: 0,
6357
6703
  color: theme.palette.text.primary,
6358
6704
  fontFamily: theme.typography.fontFamily,
@@ -6374,10 +6720,10 @@ function getInitials(member) {
6374
6720
  return member.name.split(" ").filter(Boolean).slice(0, 2).map((part) => part[0]).join("").toUpperCase();
6375
6721
  }
6376
6722
  var TeamMemberCard = forwardRef(
6377
- ({ member, cardVariant = "default", ...props }, ref) => /* @__PURE__ */ jsxs(Root19, { ref, variant: cardVariant, padding: "lg", rounded: "lg", ...props, children: [
6723
+ ({ member, cardVariant = "default", ...props }, ref) => /* @__PURE__ */ jsxs(Root23, { ref, variant: cardVariant, padding: "lg", rounded: "lg", ...props, children: [
6378
6724
  member.avatarUrl ? /* @__PURE__ */ jsx(AvatarImage2, { src: member.avatarUrl, alt: member.avatarAlt ?? member.name }) : /* @__PURE__ */ jsx(Avatar, { initials: getInitials(member), size: "xl", color: member.avatarColor ?? "primary" }),
6379
- /* @__PURE__ */ jsxs(Content, { children: [
6380
- /* @__PURE__ */ jsx(Name3, { children: member.name }),
6725
+ /* @__PURE__ */ jsxs(Content3, { children: [
6726
+ /* @__PURE__ */ jsx(Name5, { children: member.name }),
6381
6727
  /* @__PURE__ */ jsx(Role, { children: member.role })
6382
6728
  ] })
6383
6729
  ] })
@@ -6555,8 +6901,143 @@ function CompareTool({
6555
6901
  }) })
6556
6902
  ] }) });
6557
6903
  }
6904
+ function calcTimeLeft(target) {
6905
+ const diff = new Date(target).getTime() - Date.now();
6906
+ if (diff <= 0) return null;
6907
+ return {
6908
+ days: Math.floor(diff / 864e5),
6909
+ hours: Math.floor(diff % 864e5 / 36e5),
6910
+ minutes: Math.floor(diff % 36e5 / 6e4),
6911
+ seconds: Math.floor(diff % 6e4 / 1e3)
6912
+ };
6913
+ }
6914
+ function pad(n) {
6915
+ return String(n).padStart(2, "0");
6916
+ }
6917
+ var Root24 = styled("div", {
6918
+ shouldForwardProp: (prop) => prop !== "$variant"
6919
+ })(({ theme, $variant }) => ({
6920
+ display: "inline-flex",
6921
+ alignItems: "center",
6922
+ justifyContent: "space-between",
6923
+ flexWrap: "wrap",
6924
+ gap: "0.5rem",
6925
+ fontFamily: theme.typography.fontFamily,
6926
+ ...$variant === "card" && {
6927
+ backgroundColor: theme.palette.background.paper,
6928
+ border: `1px solid ${theme.palette.divider}`,
6929
+ borderRadius: theme.shape.borderRadius,
6930
+ padding: "1rem 1.5rem"
6931
+ },
6932
+ ...$variant === "banner" && {
6933
+ backgroundColor: theme.palette.error.main,
6934
+ color: "#fff",
6935
+ borderRadius: theme.shape.borderRadius,
6936
+ padding: "0.75rem 1.25rem"
6937
+ }
6938
+ }));
6939
+ var TimerLabel = styled("span", {
6940
+ shouldForwardProp: (prop) => prop !== "$variant"
6941
+ })(({ theme, $variant }) => ({
6942
+ fontSize: "0.875rem",
6943
+ fontWeight: 600,
6944
+ color: $variant === "banner" ? "rgba(255,255,255,0.85)" : theme.palette.text.secondary,
6945
+ marginRight: "0.25rem"
6946
+ }));
6947
+ var Segments = styled("div")({
6948
+ display: "flex",
6949
+ alignItems: "center",
6950
+ gap: "0.25rem"
6951
+ });
6952
+ var Segment = styled("div", {
6953
+ shouldForwardProp: (prop) => prop !== "$variant"
6954
+ })(({ theme, $variant }) => ({
6955
+ display: "flex",
6956
+ flexDirection: "column",
6957
+ alignItems: "center",
6958
+ minWidth: "2.5rem",
6959
+ ...$variant === "card" && {
6960
+ backgroundColor: theme.palette.action.hover,
6961
+ borderRadius: "0.375rem",
6962
+ padding: "0.375rem 0.5rem"
6963
+ }
6964
+ }));
6965
+ var Value2 = styled("span", {
6966
+ shouldForwardProp: (prop) => prop !== "$variant"
6967
+ })(({ $variant }) => ({
6968
+ fontSize: $variant === "inline" ? "1rem" : "1.5rem",
6969
+ fontWeight: 700,
6970
+ lineHeight: 1,
6971
+ color: $variant === "banner" ? "#fff" : "inherit"
6972
+ }));
6973
+ var Unit = styled("span", {
6974
+ shouldForwardProp: (prop) => prop !== "$variant"
6975
+ })(({ theme, $variant }) => ({
6976
+ fontSize: "0.6875rem",
6977
+ color: $variant === "banner" ? "rgba(255,255,255,0.7)" : theme.palette.text.secondary,
6978
+ marginTop: "0.125rem"
6979
+ }));
6980
+ var Colon = styled("span", {
6981
+ shouldForwardProp: (prop) => prop !== "$variant"
6982
+ })(({ theme, $variant }) => ({
6983
+ fontSize: $variant === "inline" ? "1rem" : "1.5rem",
6984
+ fontWeight: 700,
6985
+ color: $variant === "banner" ? "rgba(255,255,255,0.6)" : theme.palette.text.disabled,
6986
+ alignSelf: $variant === "card" ? "flex-start" : "center",
6987
+ marginTop: $variant === "card" ? "0.375rem" : 0
6988
+ }));
6989
+ var UNITS = ["dni", "godz", "min", "sek"];
6990
+ var CountdownTimer = forwardRef(
6991
+ ({
6992
+ targetDate,
6993
+ variant = "inline",
6994
+ label,
6995
+ expiredLabel = "Promocja zako\u0144czona",
6996
+ onExpire,
6997
+ ...props
6998
+ }, ref) => {
6999
+ const [timeLeft, setTimeLeft] = useState(() => calcTimeLeft(targetDate));
7000
+ useEffect(() => {
7001
+ const id = setInterval(() => {
7002
+ const tl = calcTimeLeft(targetDate);
7003
+ setTimeLeft(tl);
7004
+ if (!tl) {
7005
+ clearInterval(id);
7006
+ onExpire?.();
7007
+ }
7008
+ }, 1e3);
7009
+ return () => clearInterval(id);
7010
+ }, [targetDate, onExpire]);
7011
+ if (!timeLeft) {
7012
+ return /* @__PURE__ */ jsx(Root24, { ref, $variant: variant, ...props, children: /* @__PURE__ */ jsx(TimerLabel, { $variant: variant, children: expiredLabel }) });
7013
+ }
7014
+ const parts = [timeLeft.days, timeLeft.hours, timeLeft.minutes, timeLeft.seconds];
7015
+ return /* @__PURE__ */ jsxs(
7016
+ Root24,
7017
+ {
7018
+ ref,
7019
+ $variant: variant,
7020
+ "aria-live": "polite",
7021
+ "aria-label": `Czas do ko\u0144ca promocji`,
7022
+ ...props,
7023
+ children: [
7024
+ label && /* @__PURE__ */ jsx(TimerLabel, { $variant: variant, children: label }),
7025
+ /* @__PURE__ */ jsx(Segments, { children: parts.map((val, i) => /* @__PURE__ */ jsxs("div", { style: { display: "contents" }, children: [
7026
+ i > 0 && /* @__PURE__ */ jsx(Colon, { $variant: variant, children: ":" }),
7027
+ /* @__PURE__ */ jsxs(Segment, { $variant: variant, children: [
7028
+ /* @__PURE__ */ jsx(Value2, { $variant: variant, children: pad(val) }),
7029
+ variant !== "inline" && /* @__PURE__ */ jsx(Unit, { $variant: variant, children: UNITS[i] })
7030
+ ] })
7031
+ ] }, UNITS[i])) })
7032
+ ]
7033
+ }
7034
+ );
7035
+ }
7036
+ );
7037
+ CountdownTimer.displayName = "CountdownTimer";
7038
+ var countdownTimerVariants = ["inline", "card", "banner"];
6558
7039
  var spin2 = keyframes`to { transform: rotate(360deg); }`;
6559
- var Root20 = styled("div")({
7040
+ var Root25 = styled("div")({
6560
7041
  display: "flex",
6561
7042
  flexDirection: "column",
6562
7043
  gap: "0.5rem"
@@ -6703,7 +7184,7 @@ function CouponInput({
6703
7184
  if (e.key === "Enter") handleApply();
6704
7185
  };
6705
7186
  if (appliedCode) {
6706
- return /* @__PURE__ */ jsxs(Root20, { className, children: [
7187
+ return /* @__PURE__ */ jsxs(Root25, { className, children: [
6707
7188
  /* @__PURE__ */ jsxs(AppliedRow, { role: "status", "aria-label": `Kod rabatowy ${appliedCode} zastosowany`, children: [
6708
7189
  /* @__PURE__ */ jsx(AppliedCode, { children: appliedCode }),
6709
7190
  onRemove && /* @__PURE__ */ jsx(
@@ -6722,7 +7203,7 @@ function CouponInput({
6722
7203
  ] })
6723
7204
  ] });
6724
7205
  }
6725
- return /* @__PURE__ */ jsxs(Root20, { className, children: [
7206
+ return /* @__PURE__ */ jsxs(Root25, { className, children: [
6726
7207
  /* @__PURE__ */ jsxs(InputRow, { $hasError: Boolean(error), $applied: false, children: [
6727
7208
  /* @__PURE__ */ jsx(
6728
7209
  Input,
@@ -6754,7 +7235,82 @@ function CouponInput({
6754
7235
  error && /* @__PURE__ */ jsx(Message, { $type: "error", id: errorId, role: "alert", children: error })
6755
7236
  ] });
6756
7237
  }
6757
- var Root21 = styled("div")({
7238
+ var Root26 = styled("div")({
7239
+ display: "flex",
7240
+ flexDirection: "column",
7241
+ gap: "0.5rem"
7242
+ });
7243
+ var GroupLabel = styled("span")(({ theme }) => ({
7244
+ fontSize: "0.875rem",
7245
+ fontWeight: 600,
7246
+ color: theme.palette.text.primary,
7247
+ fontFamily: theme.typography.fontFamily
7248
+ }));
7249
+ var MethodLabel = styled("label", {
7250
+ shouldForwardProp: (prop) => prop !== "$selected"
7251
+ })(({ theme, $selected }) => ({
7252
+ display: "flex",
7253
+ alignItems: "center",
7254
+ gap: "0.875rem",
7255
+ padding: "0.875rem 1rem",
7256
+ border: `${$selected ? 2 : 1}px solid ${$selected ? theme.palette.primary.main : theme.palette.divider}`,
7257
+ borderRadius: theme.shape.borderRadius,
7258
+ cursor: "pointer",
7259
+ backgroundColor: $selected ? `${theme.palette.primary.main}08` : theme.palette.background.paper,
7260
+ transition: "border-color 150ms ease, background-color 150ms ease",
7261
+ fontFamily: theme.typography.fontFamily,
7262
+ "&:hover": { borderColor: theme.palette.primary.main }
7263
+ }));
7264
+ var Radio = styled("input")({
7265
+ width: "1rem",
7266
+ height: "1rem",
7267
+ flexShrink: 0,
7268
+ cursor: "pointer"
7269
+ });
7270
+ var IconWrap = styled("span")(({ theme }) => ({
7271
+ color: theme.palette.text.secondary,
7272
+ display: "flex"
7273
+ }));
7274
+ var Info = styled("div")({ flex: 1 });
7275
+ var Name6 = styled("div")(({ theme }) => ({
7276
+ fontSize: "0.9375rem",
7277
+ fontWeight: 600,
7278
+ color: theme.palette.text.primary
7279
+ }));
7280
+ var Desc = styled("div")(({ theme }) => ({
7281
+ fontSize: "0.8125rem",
7282
+ color: theme.palette.text.secondary,
7283
+ marginTop: "0.125rem"
7284
+ }));
7285
+ var PaymentMethodSelector = forwardRef(
7286
+ ({ methods, value, onChange, label = "Metoda p\u0142atno\u015Bci", disabled, ...props }, ref) => /* @__PURE__ */ jsxs(Root26, { ref, ...props, children: [
7287
+ /* @__PURE__ */ jsx(GroupLabel, { children: label }),
7288
+ methods.map((method) => {
7289
+ const selected = value === method.id;
7290
+ return /* @__PURE__ */ jsxs(MethodLabel, { $selected: selected, children: [
7291
+ /* @__PURE__ */ jsx(
7292
+ Radio,
7293
+ {
7294
+ type: "radio",
7295
+ name: "payment",
7296
+ value: method.id,
7297
+ checked: selected,
7298
+ disabled,
7299
+ onChange: () => onChange?.(method.id),
7300
+ "aria-label": method.label
7301
+ }
7302
+ ),
7303
+ /* @__PURE__ */ jsx(IconWrap, { children: method.icon ?? /* @__PURE__ */ jsx(CreditCardOutlinedIcon, { "aria-hidden": true }) }),
7304
+ /* @__PURE__ */ jsxs(Info, { children: [
7305
+ /* @__PURE__ */ jsx(Name6, { children: method.label }),
7306
+ method.description && /* @__PURE__ */ jsx(Desc, { children: method.description })
7307
+ ] })
7308
+ ] }, method.id);
7309
+ })
7310
+ ] })
7311
+ );
7312
+ PaymentMethodSelector.displayName = "PaymentMethodSelector";
7313
+ var Root27 = styled("div")({
6758
7314
  display: "grid",
6759
7315
  gap: "0.75rem"
6760
7316
  });
@@ -6792,7 +7348,7 @@ var ProductGallery = forwardRef(
6792
7348
  if (!activeImage) {
6793
7349
  return null;
6794
7350
  }
6795
- return /* @__PURE__ */ jsxs(Root21, { ref, ...props, children: [
7351
+ return /* @__PURE__ */ jsxs(Root27, { ref, ...props, children: [
6796
7352
  /* @__PURE__ */ jsx(AspectRatio, { ratio: "4/3", children: /* @__PURE__ */ jsx(MainImage, { src: activeImage.src, alt: activeImage.alt }) }),
6797
7353
  images.length > 1 && /* @__PURE__ */ jsx(Thumbnails, { children: images.map((image, index) => /* @__PURE__ */ jsx(
6798
7354
  ThumbnailButton,
@@ -6810,7 +7366,7 @@ var ProductGallery = forwardRef(
6810
7366
  }
6811
7367
  );
6812
7368
  ProductGallery.displayName = "ProductGallery";
6813
- var Root22 = styled("div")(({ theme, $variant }) => ({
7369
+ var Root28 = styled("div")(({ theme, $variant }) => ({
6814
7370
  display: "flex",
6815
7371
  alignItems: "center",
6816
7372
  justifyContent: "center",
@@ -6830,14 +7386,14 @@ var Link = styled("a")(({ theme }) => ({
6830
7386
  textUnderlineOffset: "0.2em"
6831
7387
  }));
6832
7388
  var PromoStrip = forwardRef(
6833
- ({ message, actionLabel, href, variant = "info", ...props }, ref) => /* @__PURE__ */ jsxs(Root22, { ref, $variant: variant, ...props, children: [
7389
+ ({ message, actionLabel, href, variant = "info", ...props }, ref) => /* @__PURE__ */ jsxs(Root28, { ref, $variant: variant, ...props, children: [
6834
7390
  /* @__PURE__ */ jsx("span", { children: message }),
6835
7391
  actionLabel && href && /* @__PURE__ */ jsx(Link, { href, children: actionLabel })
6836
7392
  ] })
6837
7393
  );
6838
7394
  PromoStrip.displayName = "PromoStrip";
6839
7395
  var promoStripVariants = ["info", "success", "warning"];
6840
- var Root23 = styled("div")(({ theme }) => ({
7396
+ var Root29 = styled("div")(({ theme }) => ({
6841
7397
  display: "inline-grid",
6842
7398
  gridTemplateColumns: "2.25rem 3rem 2.25rem",
6843
7399
  alignItems: "center",
@@ -6859,7 +7415,7 @@ var Control = styled("button")(({ theme }) => ({
6859
7415
  cursor: "not-allowed"
6860
7416
  }
6861
7417
  }));
6862
- var Value2 = styled("span")(({ theme }) => ({
7418
+ var Value3 = styled("span")(({ theme }) => ({
6863
7419
  display: "inline-flex",
6864
7420
  alignItems: "center",
6865
7421
  justifyContent: "center",
@@ -6873,7 +7429,7 @@ var QuantitySelector = forwardRef(
6873
7429
  ({ value, min = 1, max = 99, step = 1, disabled = false, onChange, ...props }, ref) => {
6874
7430
  const decrease = Math.max(min, value - step);
6875
7431
  const increase = Math.min(max, value + step);
6876
- return /* @__PURE__ */ jsxs(Root23, { ref, "aria-label": "Wybierz ilo\u015B\u0107", ...props, children: [
7432
+ return /* @__PURE__ */ jsxs(Root29, { ref, "aria-label": "Wybierz ilo\u015B\u0107", ...props, children: [
6877
7433
  /* @__PURE__ */ jsx(
6878
7434
  Control,
6879
7435
  {
@@ -6884,7 +7440,7 @@ var QuantitySelector = forwardRef(
6884
7440
  children: "\u2212"
6885
7441
  }
6886
7442
  ),
6887
- /* @__PURE__ */ jsx(Value2, { "aria-live": "polite", children: value }),
7443
+ /* @__PURE__ */ jsx(Value3, { "aria-live": "polite", children: value }),
6888
7444
  /* @__PURE__ */ jsx(
6889
7445
  Control,
6890
7446
  {
@@ -6899,6 +7455,207 @@ var QuantitySelector = forwardRef(
6899
7455
  }
6900
7456
  );
6901
7457
  QuantitySelector.displayName = "QuantitySelector";
7458
+ var Root30 = styled("div")({
7459
+ display: "flex",
7460
+ flexDirection: "column",
7461
+ gap: "0.5rem"
7462
+ });
7463
+ var GroupLabel2 = styled("span")(({ theme }) => ({
7464
+ fontSize: "0.875rem",
7465
+ fontWeight: 600,
7466
+ color: theme.palette.text.primary,
7467
+ fontFamily: theme.typography.fontFamily
7468
+ }));
7469
+ var OptionLabel = styled("label", {
7470
+ shouldForwardProp: (prop) => prop !== "$selected"
7471
+ })(({ theme, $selected }) => ({
7472
+ display: "flex",
7473
+ alignItems: "center",
7474
+ gap: "0.875rem",
7475
+ padding: "0.875rem 1rem",
7476
+ border: `${$selected ? 2 : 1}px solid ${$selected ? theme.palette.primary.main : theme.palette.divider}`,
7477
+ borderRadius: theme.shape.borderRadius,
7478
+ cursor: "pointer",
7479
+ backgroundColor: $selected ? `${theme.palette.primary.main}08` : theme.palette.background.paper,
7480
+ transition: "border-color 150ms ease, background-color 150ms ease",
7481
+ fontFamily: theme.typography.fontFamily,
7482
+ "&:hover": {
7483
+ borderColor: theme.palette.primary.main
7484
+ }
7485
+ }));
7486
+ var Radio2 = styled("input")({
7487
+ width: "1rem",
7488
+ height: "1rem",
7489
+ flexShrink: 0,
7490
+ cursor: "pointer"
7491
+ });
7492
+ var IconWrap2 = styled("span")(({ theme }) => ({
7493
+ color: theme.palette.text.secondary,
7494
+ display: "flex"
7495
+ }));
7496
+ var Info2 = styled("div")({ flex: 1 });
7497
+ var Name7 = styled("div")(({ theme }) => ({
7498
+ fontSize: "0.9375rem",
7499
+ fontWeight: 600,
7500
+ color: theme.palette.text.primary
7501
+ }));
7502
+ var Desc2 = styled("div")(({ theme }) => ({
7503
+ fontSize: "0.8125rem",
7504
+ color: theme.palette.text.secondary,
7505
+ marginTop: "0.125rem"
7506
+ }));
7507
+ var Price3 = styled("div", {
7508
+ shouldForwardProp: (prop) => prop !== "$selected"
7509
+ })(({ theme, $selected }) => ({
7510
+ fontSize: "0.9375rem",
7511
+ fontWeight: 700,
7512
+ color: $selected ? theme.palette.primary.main : theme.palette.text.primary,
7513
+ whiteSpace: "nowrap"
7514
+ }));
7515
+ var ShippingSelector = forwardRef(
7516
+ ({ options, value, onChange, label = "Metoda dostawy", disabled, ...props }, ref) => /* @__PURE__ */ jsxs(Root30, { ref, ...props, children: [
7517
+ /* @__PURE__ */ jsx(GroupLabel2, { children: label }),
7518
+ options.map((opt) => {
7519
+ const selected = value === opt.id;
7520
+ return /* @__PURE__ */ jsxs(OptionLabel, { $selected: selected, children: [
7521
+ /* @__PURE__ */ jsx(
7522
+ Radio2,
7523
+ {
7524
+ type: "radio",
7525
+ name: "shipping",
7526
+ value: opt.id,
7527
+ checked: selected,
7528
+ disabled,
7529
+ onChange: () => onChange?.(opt.id),
7530
+ "aria-label": opt.label
7531
+ }
7532
+ ),
7533
+ /* @__PURE__ */ jsx(IconWrap2, { children: opt.icon ?? /* @__PURE__ */ jsx(LocalShippingOutlinedIcon, { "aria-hidden": true }) }),
7534
+ /* @__PURE__ */ jsxs(Info2, { children: [
7535
+ /* @__PURE__ */ jsx(Name7, { children: opt.label }),
7536
+ (opt.description || opt.estimatedDays) && /* @__PURE__ */ jsxs(Desc2, { children: [
7537
+ opt.description,
7538
+ opt.estimatedDays && ` \xB7 ${opt.estimatedDays}`
7539
+ ] })
7540
+ ] }),
7541
+ /* @__PURE__ */ jsx(Price3, { $selected: selected, children: opt.price })
7542
+ ] }, opt.id);
7543
+ })
7544
+ ] })
7545
+ );
7546
+ ShippingSelector.displayName = "ShippingSelector";
7547
+ var DEFAULT_SORT_OPTIONS = [
7548
+ { value: "popular", label: "Najpopularniejsze" },
7549
+ { value: "newest", label: "Najnowsze" },
7550
+ { value: "price-asc", label: "Cena rosn\u0105co" },
7551
+ { value: "price-desc", label: "Cena malej\u0105co" }
7552
+ ];
7553
+ var Root31 = styled("div")(({ theme }) => ({
7554
+ display: "flex",
7555
+ alignItems: "center",
7556
+ justifyContent: "space-between",
7557
+ flexWrap: "wrap",
7558
+ gap: "0.75rem",
7559
+ padding: "0.75rem 0",
7560
+ borderBottom: `1px solid ${theme.palette.divider}`,
7561
+ fontFamily: theme.typography.fontFamily
7562
+ }));
7563
+ var TotalLabel = styled("span")(({ theme }) => ({
7564
+ fontSize: "0.875rem",
7565
+ color: theme.palette.text.secondary
7566
+ }));
7567
+ var Controls = styled("div")({
7568
+ display: "flex",
7569
+ alignItems: "center",
7570
+ gap: "0.75rem"
7571
+ });
7572
+ var SortLabel = styled("label")(({ theme }) => ({
7573
+ fontSize: "0.875rem",
7574
+ color: theme.palette.text.secondary
7575
+ }));
7576
+ var Select = styled("select")(({ theme }) => ({
7577
+ padding: "0.375rem 2rem 0.375rem 0.625rem",
7578
+ border: `1px solid ${theme.palette.divider}`,
7579
+ borderRadius: theme.shape.borderRadius,
7580
+ backgroundColor: theme.palette.background.paper,
7581
+ color: theme.palette.text.primary,
7582
+ fontFamily: theme.typography.fontFamily,
7583
+ fontSize: "0.875rem",
7584
+ cursor: "pointer",
7585
+ appearance: "none",
7586
+ 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")`,
7587
+ backgroundRepeat: "no-repeat",
7588
+ backgroundPosition: "right 0.5rem center",
7589
+ "&:focus": { outline: `3px solid ${theme.palette.primary.main}`, outlineOffset: "2px" }
7590
+ }));
7591
+ var ViewToggle = styled("div")(({ theme }) => ({
7592
+ display: "flex",
7593
+ border: `1px solid ${theme.palette.divider}`,
7594
+ borderRadius: theme.shape.borderRadius,
7595
+ overflow: "hidden"
7596
+ }));
7597
+ var ViewButton = styled("button", {
7598
+ shouldForwardProp: (prop) => prop !== "$active"
7599
+ })(({ theme, $active }) => ({
7600
+ appearance: "none",
7601
+ border: "none",
7602
+ cursor: "pointer",
7603
+ display: "flex",
7604
+ alignItems: "center",
7605
+ padding: "0.375rem 0.5rem",
7606
+ backgroundColor: $active ? theme.palette.primary.main : "transparent",
7607
+ color: $active ? theme.palette.primary.contrastText : theme.palette.text.secondary,
7608
+ transition: "background-color 150ms ease, color 150ms ease",
7609
+ "&:hover:not(:disabled)": {
7610
+ backgroundColor: $active ? theme.palette.primary.dark : theme.palette.action.hover
7611
+ },
7612
+ "&:focus-visible": { outline: `3px solid ${theme.palette.primary.main}`, outlineOffset: "-1px" }
7613
+ }));
7614
+ var SortBar = forwardRef(
7615
+ ({
7616
+ total,
7617
+ totalLabel,
7618
+ sortOptions = DEFAULT_SORT_OPTIONS,
7619
+ sortValue,
7620
+ onSortChange,
7621
+ viewMode = "grid",
7622
+ onViewModeChange,
7623
+ showViewToggle = true,
7624
+ ...props
7625
+ }, ref) => {
7626
+ const resolvedLabel = totalLabel ?? (total !== void 0 ? `Znaleziono ${total} produkt\xF3w` : void 0);
7627
+ return /* @__PURE__ */ jsxs(Root31, { ref, ...props, children: [
7628
+ resolvedLabel && /* @__PURE__ */ jsx(TotalLabel, { children: resolvedLabel }),
7629
+ /* @__PURE__ */ jsxs(Controls, { children: [
7630
+ sortOptions.length > 0 && /* @__PURE__ */ jsxs(Fragment, { children: [
7631
+ /* @__PURE__ */ jsx(SortLabel, { htmlFor: "sort-select", children: "Sortuj:" }),
7632
+ /* @__PURE__ */ jsx(
7633
+ Select,
7634
+ {
7635
+ id: "sort-select",
7636
+ value: sortValue ?? "",
7637
+ onChange: (e) => onSortChange?.(e.target.value),
7638
+ children: sortOptions.map((opt) => /* @__PURE__ */ jsx("option", { value: opt.value, children: opt.label }, opt.value))
7639
+ }
7640
+ )
7641
+ ] }),
7642
+ showViewToggle && /* @__PURE__ */ jsx(ViewToggle, { "aria-label": "Tryb widoku", children: ["grid", "list"].map((mode) => /* @__PURE__ */ jsx(
7643
+ ViewButton,
7644
+ {
7645
+ type: "button",
7646
+ $active: viewMode === mode,
7647
+ "aria-label": mode === "grid" ? "Widok siatki" : "Widok listy",
7648
+ "aria-pressed": viewMode === mode,
7649
+ onClick: () => onViewModeChange?.(mode),
7650
+ children: mode === "grid" ? /* @__PURE__ */ jsx(GridViewIcon, { "aria-hidden": true, style: { fontSize: 16 } }) : /* @__PURE__ */ jsx(ViewListIcon, { "aria-hidden": true, style: { fontSize: 16 } })
7651
+ },
7652
+ mode
7653
+ )) })
7654
+ ] })
7655
+ ] });
7656
+ }
7657
+ );
7658
+ SortBar.displayName = "SortBar";
6902
7659
  var COLOR_MAP = {
6903
7660
  "in-stock": "success",
6904
7661
  "low-stock": "warning",
@@ -6920,7 +7677,7 @@ function getDefaultLabel(status, count) {
6920
7677
  return "Dost\u0119pny na zam\xF3wienie";
6921
7678
  }
6922
7679
  }
6923
- var Root24 = styled("div", {
7680
+ var Root32 = styled("div", {
6924
7681
  shouldForwardProp: (p) => p !== "$color" && p !== "$size"
6925
7682
  })(({ theme, $color, $size }) => {
6926
7683
  const colorMap = {
@@ -6953,29 +7710,132 @@ var Dot2 = styled("span", {
6953
7710
  width: "0.5rem",
6954
7711
  height: "0.5rem",
6955
7712
  borderRadius: "50%",
6956
- backgroundColor: colorMap[$color],
6957
- flexShrink: 0
6958
- };
6959
- });
6960
- var StockStatus = forwardRef(
6961
- ({ status, count, label, showIcon = true, size = "md", ...props }, ref) => {
6962
- const color = COLOR_MAP[status];
6963
- const text = label ?? getDefaultLabel(status, count);
6964
- return /* @__PURE__ */ jsxs(Root24, { ref, $color: color, $size: size, role: "status", "aria-label": text, ...props, children: [
6965
- showIcon && /* @__PURE__ */ jsx(Dot2, { $color: color, "aria-hidden": "true" }),
6966
- /* @__PURE__ */ jsx("span", { children: text })
6967
- ] });
7713
+ backgroundColor: colorMap[$color],
7714
+ flexShrink: 0
7715
+ };
7716
+ });
7717
+ var StockStatus = forwardRef(
7718
+ ({ status, count, label, showIcon = true, size = "md", ...props }, ref) => {
7719
+ const color = COLOR_MAP[status];
7720
+ const text = label ?? getDefaultLabel(status, count);
7721
+ return /* @__PURE__ */ jsxs(Root32, { ref, $color: color, $size: size, role: "status", "aria-label": text, ...props, children: [
7722
+ showIcon && /* @__PURE__ */ jsx(Dot2, { $color: color, "aria-hidden": "true" }),
7723
+ /* @__PURE__ */ jsx("span", { children: text })
7724
+ ] });
7725
+ }
7726
+ );
7727
+ StockStatus.displayName = "StockStatus";
7728
+ var stockStatusValues = [
7729
+ "in-stock",
7730
+ "low-stock",
7731
+ "out-of-stock",
7732
+ "preorder",
7733
+ "backorder"
7734
+ ];
7735
+ var Root33 = styled("div")({
7736
+ display: "flex",
7737
+ flexDirection: "column",
7738
+ gap: "0.5rem"
7739
+ });
7740
+ var Label4 = styled("span")(({ theme }) => ({
7741
+ fontSize: "0.875rem",
7742
+ fontWeight: 600,
7743
+ color: theme.palette.text.primary,
7744
+ fontFamily: theme.typography.fontFamily
7745
+ }));
7746
+ var OptionsRow = styled("div")({
7747
+ display: "flex",
7748
+ flexWrap: "wrap",
7749
+ gap: "0.5rem"
7750
+ });
7751
+ var OptionButton = styled("button", {
7752
+ shouldForwardProp: (prop) => prop !== "$active" && prop !== "$mode"
7753
+ })(({ theme, $active, $mode }) => ({
7754
+ appearance: "none",
7755
+ cursor: "pointer",
7756
+ fontFamily: theme.typography.fontFamily,
7757
+ fontSize: "0.875rem",
7758
+ fontWeight: 500,
7759
+ transition: "border-color 150ms ease, background-color 150ms ease, box-shadow 150ms ease",
7760
+ "&:disabled": {
7761
+ opacity: 0.4,
7762
+ cursor: "not-allowed",
7763
+ textDecoration: $mode === "button" ? "line-through" : "none"
7764
+ },
7765
+ "&:focus-visible": {
7766
+ outline: `3px solid ${theme.palette.primary.main}`,
7767
+ outlineOffset: "2px"
7768
+ },
7769
+ ...$mode === "swatch" ? {
7770
+ width: "2rem",
7771
+ height: "2rem",
7772
+ borderRadius: "50%",
7773
+ border: $active ? `3px solid ${theme.palette.primary.main}` : `2px solid ${theme.palette.divider}`,
7774
+ boxShadow: $active ? `0 0 0 2px ${theme.palette.background.paper}, 0 0 0 4px ${theme.palette.primary.main}` : "none",
7775
+ padding: 0,
7776
+ background: "currentColor"
7777
+ } : {
7778
+ padding: "0.375rem 0.875rem",
7779
+ border: $active ? `2px solid ${theme.palette.primary.main}` : `1px solid ${theme.palette.divider}`,
7780
+ borderRadius: theme.shape.borderRadius,
7781
+ backgroundColor: $active ? `${theme.palette.primary.main}14` : "transparent",
7782
+ color: $active ? theme.palette.primary.main : theme.palette.text.primary
7783
+ }
7784
+ }));
7785
+ var Select2 = styled("select")(({ theme }) => ({
7786
+ padding: "0.5rem 2rem 0.5rem 0.75rem",
7787
+ border: `1px solid ${theme.palette.divider}`,
7788
+ borderRadius: theme.shape.borderRadius,
7789
+ backgroundColor: theme.palette.background.paper,
7790
+ color: theme.palette.text.primary,
7791
+ fontFamily: theme.typography.fontFamily,
7792
+ fontSize: "0.875rem",
7793
+ cursor: "pointer",
7794
+ appearance: "none",
7795
+ 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")`,
7796
+ backgroundRepeat: "no-repeat",
7797
+ backgroundPosition: "right 0.75rem center",
7798
+ "&:focus": {
7799
+ outline: `3px solid ${theme.palette.primary.main}`,
7800
+ outlineOffset: "2px"
6968
7801
  }
7802
+ }));
7803
+ var VariantSelector = forwardRef(
7804
+ ({ label, options, value, onChange, mode = "button", disabled, ...props }, ref) => /* @__PURE__ */ jsxs(Root33, { ref, ...props, children: [
7805
+ /* @__PURE__ */ jsxs(Label4, { children: [
7806
+ label,
7807
+ value && mode !== "swatch" && /* @__PURE__ */ jsx("span", { style: { fontWeight: 400, marginLeft: "0.375rem" }, children: options.find((o) => o.value === value)?.label })
7808
+ ] }),
7809
+ mode === "dropdown" ? /* @__PURE__ */ jsx(
7810
+ Select2,
7811
+ {
7812
+ value: value ?? "",
7813
+ onChange: (e) => onChange?.(e.target.value),
7814
+ disabled,
7815
+ "aria-label": label,
7816
+ children: options.map((opt) => /* @__PURE__ */ jsx("option", { value: opt.value, disabled: opt.disabled, children: opt.label }, opt.value))
7817
+ }
7818
+ ) : /* @__PURE__ */ jsx(OptionsRow, { role: "radiogroup", "aria-label": label, children: options.map((opt) => /* @__PURE__ */ jsx(
7819
+ OptionButton,
7820
+ {
7821
+ type: "button",
7822
+ $active: value === opt.value,
7823
+ $mode: mode,
7824
+ disabled: opt.disabled || disabled,
7825
+ style: mode === "swatch" ? { color: opt.color ?? "#ccc" } : void 0,
7826
+ title: opt.label,
7827
+ "aria-label": opt.label,
7828
+ "aria-pressed": value === opt.value,
7829
+ onClick: () => onChange?.(opt.value),
7830
+ children: mode === "button" && opt.label
7831
+ },
7832
+ opt.value
7833
+ )) })
7834
+ ] })
6969
7835
  );
6970
- StockStatus.displayName = "StockStatus";
6971
- var stockStatusValues = [
6972
- "in-stock",
6973
- "low-stock",
6974
- "out-of-stock",
6975
- "preorder",
6976
- "backorder"
6977
- ];
6978
- var Root25 = styled("div")(({ theme }) => ({
7836
+ VariantSelector.displayName = "VariantSelector";
7837
+ var variantSelectorModes = ["button", "swatch", "dropdown"];
7838
+ var Root34 = styled("div")(({ theme }) => ({
6979
7839
  borderBottom: `1px solid ${theme.palette.divider}`
6980
7840
  }));
6981
7841
  var Trigger2 = styled("button")(({ theme }) => ({
@@ -7023,7 +7883,7 @@ var PanelInner = styled("p")(({ theme }) => ({
7023
7883
  var FaqItem = forwardRef(
7024
7884
  ({ item, defaultOpen = false, ...props }, ref) => {
7025
7885
  const [open, setOpen] = useState(defaultOpen);
7026
- return /* @__PURE__ */ jsxs(Root25, { ref, ...props, children: [
7886
+ return /* @__PURE__ */ jsxs(Root34, { ref, ...props, children: [
7027
7887
  /* @__PURE__ */ jsxs(Trigger2, { type: "button", "aria-expanded": open, onClick: () => setOpen((prev) => !prev), children: [
7028
7888
  item.question,
7029
7889
  /* @__PURE__ */ jsx(ChevronIcon2, { $open: open, "aria-hidden": "true" })
@@ -7099,7 +7959,7 @@ var FeatureItem2 = forwardRef(
7099
7959
  }
7100
7960
  );
7101
7961
  FeatureItem2.displayName = "FeatureItem";
7102
- var Root26 = styled("div")({
7962
+ var Root35 = styled("div")({
7103
7963
  display: "flex",
7104
7964
  flexDirection: "column",
7105
7965
  alignItems: "center",
@@ -7147,7 +8007,7 @@ var Description5 = styled("p")(({ theme }) => ({
7147
8007
  maxWidth: "18rem"
7148
8008
  }));
7149
8009
  var ProcessStep = forwardRef(
7150
- ({ step, title, description, icon, ...props }, ref) => /* @__PURE__ */ jsxs(Root26, { ref, ...props, children: [
8010
+ ({ step, title, description, icon, ...props }, ref) => /* @__PURE__ */ jsxs(Root35, { ref, ...props, children: [
7151
8011
  /* @__PURE__ */ jsx(StepBadge, { "aria-hidden": "true", children: icon ? /* @__PURE__ */ jsx(IconWrapper2, { children: icon }) : /* @__PURE__ */ jsx(StepNumber, { children: step }) }),
7152
8012
  /* @__PURE__ */ jsx(Title3, { children: title }),
7153
8013
  description && /* @__PURE__ */ jsx(Description5, { children: description })
@@ -7333,7 +8193,7 @@ var Dot3 = styled("span", {
7333
8193
  }
7334
8194
  }
7335
8195
  }));
7336
- var Content2 = styled("div")({ flex: 1, minWidth: 0, paddingTop: "0.0625rem" });
8196
+ var Content4 = styled("div")({ flex: 1, minWidth: 0, paddingTop: "0.0625rem" });
7337
8197
  var TitleRow = styled("div")({
7338
8198
  display: "flex",
7339
8199
  alignItems: "baseline",
@@ -7378,7 +8238,7 @@ function TimelineItemComponent({
7378
8238
  const hasIcon = Boolean(item.icon);
7379
8239
  return /* @__PURE__ */ jsxs(ItemRow, { $compact: compact, $last: last, children: [
7380
8240
  /* @__PURE__ */ jsx(DotCol, { $last: last, children: /* @__PURE__ */ jsx(Dot3, { $status: status, $hasIcon: hasIcon, children: item.icon ?? /* @__PURE__ */ jsx(StatusIcon, { status }) }) }),
7381
- /* @__PURE__ */ jsxs(Content2, { children: [
8241
+ /* @__PURE__ */ jsxs(Content4, { children: [
7382
8242
  /* @__PURE__ */ jsxs(TitleRow, { children: [
7383
8243
  /* @__PURE__ */ jsx(Title4, { $compact: compact, children: item.title }),
7384
8244
  item.date && /* @__PURE__ */ jsx(Date2, { dateTime: item.date, children: item.date })
@@ -7409,7 +8269,7 @@ var timelineItemStatuses = [
7409
8269
  "pending",
7410
8270
  "error"
7411
8271
  ];
7412
- var Root27 = styled("div")({
8272
+ var Root36 = styled("div")({
7413
8273
  position: "relative",
7414
8274
  width: "100%",
7415
8275
  overflow: "hidden",
@@ -7519,7 +8379,7 @@ function Carousel({
7519
8379
  }, [prev, next]);
7520
8380
  if (!count) return null;
7521
8381
  return /* @__PURE__ */ jsxs("div", { className, children: [
7522
- /* @__PURE__ */ jsxs(Root27, { "aria-roledescription": "carousel", children: [
8382
+ /* @__PURE__ */ jsxs(Root36, { "aria-roledescription": "carousel", children: [
7523
8383
  /* @__PURE__ */ jsx(Track4, { $index: index, "aria-live": "polite", children: slides.map((slide, i) => /* @__PURE__ */ jsx(
7524
8384
  Slide,
7525
8385
  {
@@ -7903,7 +8763,7 @@ var Breadcrumbs = forwardRef(
7903
8763
  }) }) })
7904
8764
  );
7905
8765
  Breadcrumbs.displayName = "Breadcrumbs";
7906
- var sizeMap5 = {
8766
+ var sizeMap6 = {
7907
8767
  sm: { minWidth: "1.75rem", height: "1.75rem", fontSize: "0.75rem" },
7908
8768
  md: { minWidth: "2rem", height: "2rem", fontSize: "0.875rem" },
7909
8769
  lg: { minWidth: "2.5rem", height: "2.5rem", fontSize: "1rem" }
@@ -7932,7 +8792,7 @@ var StyledButton2 = styled("button")(({ theme, $isActive, $size }) => ({
7932
8792
  lineHeight: 1,
7933
8793
  padding: "0 0.25rem",
7934
8794
  transition: "background-color 150ms ease",
7935
- ...sizeMap5[$size],
8795
+ ...sizeMap6[$size],
7936
8796
  ...$isActive ? activeStyles(theme) : idleStyles(theme),
7937
8797
  "&:focus-visible": {
7938
8798
  outline: `3px solid ${theme.palette.primary.main}`,
@@ -7961,7 +8821,7 @@ var PaginationButton = forwardRef(
7961
8821
  )
7962
8822
  );
7963
8823
  PaginationButton.displayName = "PaginationButton";
7964
- var sizeMap6 = {
8824
+ var sizeMap7 = {
7965
8825
  sm: { minWidth: "1.75rem", height: "1.75rem", fontSize: "0.75rem" },
7966
8826
  md: { minWidth: "2rem", height: "2rem", fontSize: "0.875rem" },
7967
8827
  lg: { minWidth: "2.5rem", height: "2.5rem", fontSize: "1rem" }
@@ -7972,7 +8832,7 @@ var StyledEllipsis = styled("span")(({ theme, $size }) => ({
7972
8832
  justifyContent: "center",
7973
8833
  color: theme.palette.text.secondary,
7974
8834
  userSelect: "none",
7975
- ...sizeMap6[$size]
8835
+ ...sizeMap7[$size]
7976
8836
  }));
7977
8837
  var PaginationEllipsis = ({ size = "md" }) => /* @__PURE__ */ jsx(StyledEllipsis, { $size: size, "aria-hidden": "true", children: "\u2026" });
7978
8838
  PaginationEllipsis.displayName = "PaginationEllipsis";
@@ -8082,7 +8942,7 @@ var PaginationBar = ({
8082
8942
  ] });
8083
8943
  };
8084
8944
  PaginationBar.displayName = "PaginationBar";
8085
- var Root28 = styled("div", {
8945
+ var Root37 = styled("div", {
8086
8946
  shouldForwardProp: (p) => p !== "$variant"
8087
8947
  })(({ theme, $variant }) => ({
8088
8948
  width: "100%",
@@ -8192,7 +9052,7 @@ var Accordion = forwardRef(
8192
9052
  if (controlledKeys === void 0) setInternalKeys(next);
8193
9053
  onChange?.(next);
8194
9054
  };
8195
- return /* @__PURE__ */ jsx(Root28, { ref, $variant: variant, ...props, children: items.map((item) => {
9055
+ return /* @__PURE__ */ jsx(Root37, { ref, $variant: variant, ...props, children: items.map((item) => {
8196
9056
  const isOpen = openKeys.includes(item.key);
8197
9057
  const panelId = `accordion-panel-${item.key}`;
8198
9058
  const triggerId = `accordion-trigger-${item.key}`;
@@ -8221,6 +9081,74 @@ var Accordion = forwardRef(
8221
9081
  );
8222
9082
  Accordion.displayName = "Accordion";
8223
9083
  var accordionVariants = ["default", "bordered", "separated"];
9084
+ var SEVERITY_COLORS = {
9085
+ info: { bg: "rgba(25,118,210,0.08)", color: "#1565c0", border: "rgba(25,118,210,0.3)" },
9086
+ success: { bg: "rgba(34,197,94,0.1)", color: "#15803d", border: "rgba(34,197,94,0.35)" },
9087
+ warning: { bg: "rgba(245,158,11,0.1)", color: "#b45309", border: "rgba(245,158,11,0.35)" },
9088
+ error: { bg: "rgba(211,47,47,0.08)", color: "#c62828", border: "rgba(211,47,47,0.3)" }
9089
+ };
9090
+ var ICONS = {
9091
+ info: /* @__PURE__ */ jsx(InfoOutlinedIcon, { "aria-hidden": true, style: { fontSize: 20 } }),
9092
+ success: /* @__PURE__ */ jsx(CheckCircleOutlinedIcon, { "aria-hidden": true, style: { fontSize: 20 } }),
9093
+ warning: /* @__PURE__ */ jsx(WarningAmberOutlinedIcon, { "aria-hidden": true, style: { fontSize: 20 } }),
9094
+ error: /* @__PURE__ */ jsx(ErrorOutlineOutlinedIcon, { "aria-hidden": true, style: { fontSize: 20 } })
9095
+ };
9096
+ var Root38 = styled("div", {
9097
+ shouldForwardProp: (prop) => prop !== "$severity"
9098
+ })(({ theme, $severity }) => {
9099
+ const c = SEVERITY_COLORS[$severity];
9100
+ return {
9101
+ display: "flex",
9102
+ gap: "0.75rem",
9103
+ padding: "0.875rem 1rem",
9104
+ borderRadius: theme.shape.borderRadius,
9105
+ border: `1px solid ${c.border}`,
9106
+ backgroundColor: c.bg,
9107
+ color: c.color,
9108
+ fontFamily: theme.typography.fontFamily,
9109
+ fontSize: "0.9375rem"
9110
+ };
9111
+ });
9112
+ var IconSlot2 = styled("span")({
9113
+ flexShrink: 0,
9114
+ display: "flex",
9115
+ paddingTop: "0.0625rem"
9116
+ });
9117
+ var Body = styled("div")({ flex: 1 });
9118
+ var Title5 = styled("div")({
9119
+ fontWeight: 700,
9120
+ marginBottom: "0.25rem"
9121
+ });
9122
+ var CloseButton2 = styled("button")(({ theme }) => ({
9123
+ appearance: "none",
9124
+ border: "none",
9125
+ background: "transparent",
9126
+ cursor: "pointer",
9127
+ display: "flex",
9128
+ alignItems: "center",
9129
+ padding: "0.125rem",
9130
+ color: "inherit",
9131
+ opacity: 0.6,
9132
+ borderRadius: "0.25rem",
9133
+ flexShrink: 0,
9134
+ "&:hover": { opacity: 1 },
9135
+ "&:focus-visible": {
9136
+ outline: `3px solid ${theme.palette.primary.main}`,
9137
+ outlineOffset: "2px"
9138
+ }
9139
+ }));
9140
+ var Alert = forwardRef(
9141
+ ({ severity = "info", title, children, onClose, icon, ...props }, ref) => /* @__PURE__ */ jsxs(Root38, { ref, role: "alert", $severity: severity, ...props, children: [
9142
+ /* @__PURE__ */ jsx(IconSlot2, { children: icon ?? ICONS[severity] }),
9143
+ /* @__PURE__ */ jsxs(Body, { children: [
9144
+ title && /* @__PURE__ */ jsx(Title5, { children: title }),
9145
+ children
9146
+ ] }),
9147
+ onClose && /* @__PURE__ */ jsx(CloseButton2, { type: "button", onClick: onClose, "aria-label": "Zamknij", children: /* @__PURE__ */ jsx(CloseIcon, { "aria-hidden": true, style: { fontSize: 16 } }) })
9148
+ ] })
9149
+ );
9150
+ Alert.displayName = "Alert";
9151
+ var alertSeverities = ["info", "success", "warning", "error"];
8224
9152
  var fadeIn2 = keyframes$1`from{opacity:0;transform:translateY(0.5rem)}to{opacity:1;transform:translateY(0)}`;
8225
9153
  var fadeOut = keyframes$1`from{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(0.5rem)}`;
8226
9154
  var POSITION_MAP = {
@@ -8460,6 +9388,44 @@ var ContextMenu = forwardRef(
8460
9388
  }
8461
9389
  );
8462
9390
  ContextMenu.displayName = "ContextMenu";
9391
+ var Root39 = styled("div")(({ theme }) => ({
9392
+ display: "flex",
9393
+ flexDirection: "column",
9394
+ alignItems: "center",
9395
+ justifyContent: "center",
9396
+ gap: "1rem",
9397
+ padding: "3rem 1.5rem",
9398
+ textAlign: "center",
9399
+ fontFamily: theme.typography.fontFamily
9400
+ }));
9401
+ var IconWrap3 = styled("div")(({ theme }) => ({
9402
+ color: theme.palette.text.disabled,
9403
+ display: "flex",
9404
+ "& svg": { fontSize: "3.5rem" }
9405
+ }));
9406
+ var Title6 = styled("h3")(({ theme }) => ({
9407
+ margin: 0,
9408
+ fontSize: "1.125rem",
9409
+ fontWeight: 700,
9410
+ color: theme.palette.text.primary
9411
+ }));
9412
+ var Description7 = styled("p")(({ theme }) => ({
9413
+ margin: 0,
9414
+ fontSize: "0.9375rem",
9415
+ color: theme.palette.text.secondary,
9416
+ maxWidth: "28rem"
9417
+ }));
9418
+ var EmptyState = forwardRef(
9419
+ ({ icon, title, description, action, ...props }, ref) => /* @__PURE__ */ jsxs(Root39, { ref, ...props, children: [
9420
+ /* @__PURE__ */ jsx(IconWrap3, { "aria-hidden": true, children: icon ?? /* @__PURE__ */ jsx(InboxOutlinedIcon, {}) }),
9421
+ /* @__PURE__ */ jsxs("div", { children: [
9422
+ /* @__PURE__ */ jsx(Title6, { children: title }),
9423
+ description && /* @__PURE__ */ jsx(Description7, { style: { marginTop: "0.5rem" }, children: description })
9424
+ ] }),
9425
+ action && /* @__PURE__ */ jsx("div", { children: action })
9426
+ ] })
9427
+ );
9428
+ EmptyState.displayName = "EmptyState";
8463
9429
  var PADDING = {
8464
9430
  sm: "0.5rem 0.75rem",
8465
9431
  md: "0.75rem 1rem",
@@ -8470,7 +9436,7 @@ var FONT_SIZE2 = {
8470
9436
  md: "0.9375rem",
8471
9437
  lg: "1rem"
8472
9438
  };
8473
- var Root29 = styled("ul", {
9439
+ var Root40 = styled("ul", {
8474
9440
  shouldForwardProp: (p) => p !== "$variant"
8475
9441
  })(({ theme, $variant }) => ({
8476
9442
  listStyle: "none",
@@ -8565,7 +9531,7 @@ var SuffixWrap = styled("span")({
8565
9531
  var List3 = forwardRef(
8566
9532
  ({ items, size = "md", variant = "default", dividers = true, ...props }, ref) => {
8567
9533
  const effectiveVariant = !dividers && variant === "default" ? "default" : variant;
8568
- return /* @__PURE__ */ jsx(Root29, { ref, $variant: effectiveVariant, role: "list", ...props, children: items.map((item) => /* @__PURE__ */ jsxs(
9534
+ return /* @__PURE__ */ jsx(Root40, { ref, $variant: effectiveVariant, role: "list", ...props, children: items.map((item) => /* @__PURE__ */ jsxs(
8569
9535
  Item2,
8570
9536
  {
8571
9537
  role: "listitem",
@@ -8604,7 +9570,7 @@ var speedDuration = {
8604
9570
  normal: "20s",
8605
9571
  fast: "10s"
8606
9572
  };
8607
- var Root30 = styled("div")({
9573
+ var Root41 = styled("div")({
8608
9574
  overflow: "hidden",
8609
9575
  width: "100%",
8610
9576
  userSelect: "none"
@@ -8635,7 +9601,7 @@ var Marquee = forwardRef(
8635
9601
  /* @__PURE__ */ jsx(ItemWrap, { $gap: gapValue, "aria-hidden": "false", children }),
8636
9602
  /* @__PURE__ */ jsx(ItemWrap, { $gap: gapValue, "aria-hidden": "true", children })
8637
9603
  ] });
8638
- return /* @__PURE__ */ jsx(Root30, { ref, ...props, children: /* @__PURE__ */ jsx(Track5, { $direction: direction, $speed: speed, $pauseOnHover: pauseOnHover, $gap: gapValue, children: content }) });
9604
+ return /* @__PURE__ */ jsx(Root41, { ref, ...props, children: /* @__PURE__ */ jsx(Track5, { $direction: direction, $speed: speed, $pauseOnHover: pauseOnHover, $gap: gapValue, children: content }) });
8639
9605
  }
8640
9606
  );
8641
9607
  Marquee.displayName = "Marquee";
@@ -8689,7 +9655,7 @@ var Header = styled("div")(({ theme }) => ({
8689
9655
  borderBottom: `1px solid ${theme.palette.divider}`,
8690
9656
  flexShrink: 0
8691
9657
  }));
8692
- var Title5 = styled("h2")(({ theme }) => ({
9658
+ var Title7 = styled("h2")(({ theme }) => ({
8693
9659
  margin: 0,
8694
9660
  fontFamily: theme.typography.fontFamily,
8695
9661
  fontSize: "1.125rem",
@@ -8697,7 +9663,7 @@ var Title5 = styled("h2")(({ theme }) => ({
8697
9663
  color: theme.palette.text.primary,
8698
9664
  lineHeight: 1.4
8699
9665
  }));
8700
- var CloseButton2 = styled("button")(({ theme }) => ({
9666
+ var CloseButton3 = styled("button")(({ theme }) => ({
8701
9667
  appearance: "none",
8702
9668
  border: "none",
8703
9669
  background: "none",
@@ -8720,14 +9686,14 @@ var CloseButton2 = styled("button")(({ theme }) => ({
8720
9686
  outlineOffset: "2px"
8721
9687
  }
8722
9688
  }));
8723
- var Body = styled("div")(({ theme }) => ({
9689
+ var Body2 = styled("div")(({ theme }) => ({
8724
9690
  padding: "1.5rem",
8725
9691
  overflowY: "auto",
8726
9692
  flex: 1,
8727
9693
  fontFamily: theme.typography.fontFamily,
8728
9694
  color: theme.palette.text.primary
8729
9695
  }));
8730
- var Footer3 = styled("div")(({ theme }) => ({
9696
+ var Footer4 = styled("div")(({ theme }) => ({
8731
9697
  padding: "1rem 1.5rem",
8732
9698
  borderTop: `1px solid ${theme.palette.divider}`,
8733
9699
  display: "flex",
@@ -8779,11 +9745,11 @@ function Modal({
8779
9745
  onClick: (e) => e.stopPropagation(),
8780
9746
  children: [
8781
9747
  (title || !hideCloseButton) && /* @__PURE__ */ jsxs(Header, { children: [
8782
- title ? /* @__PURE__ */ jsx(Title5, { id: "modal-title", children: title }) : /* @__PURE__ */ jsx("span", {}),
8783
- !hideCloseButton && /* @__PURE__ */ jsx(CloseButton2, { "aria-label": "Zamknij", onClick: onClose, children: /* @__PURE__ */ jsx(CloseIcon, { "aria-hidden": true, style: { fontSize: 16 } }) })
9748
+ title ? /* @__PURE__ */ jsx(Title7, { id: "modal-title", children: title }) : /* @__PURE__ */ jsx("span", {}),
9749
+ !hideCloseButton && /* @__PURE__ */ jsx(CloseButton3, { "aria-label": "Zamknij", onClick: onClose, children: /* @__PURE__ */ jsx(CloseIcon, { "aria-hidden": true, style: { fontSize: 16 } }) })
8784
9750
  ] }),
8785
- children && /* @__PURE__ */ jsx(Body, { children }),
8786
- footer && /* @__PURE__ */ jsx(Footer3, { children: footer })
9751
+ children && /* @__PURE__ */ jsx(Body2, { children }),
9752
+ footer && /* @__PURE__ */ jsx(Footer4, { children: footer })
8787
9753
  ]
8788
9754
  }
8789
9755
  ) }),
@@ -8791,7 +9757,7 @@ function Modal({
8791
9757
  );
8792
9758
  }
8793
9759
  var modalSizes = ["sm", "md", "lg", "xl", "full"];
8794
- var Root31 = styled("div")({ width: "100%" });
9760
+ var Root42 = styled("div")({ width: "100%" });
8795
9761
  var TabList = styled("div", {
8796
9762
  shouldForwardProp: (prop) => prop !== "$variant"
8797
9763
  })(({ theme, $variant }) => ({
@@ -8871,7 +9837,7 @@ var Tabs = forwardRef(
8871
9837
  onChange?.(key);
8872
9838
  };
8873
9839
  const activeTab = tabs.find((t) => t.key === activeKey);
8874
- return /* @__PURE__ */ jsxs(Root31, { ref, ...props, children: [
9840
+ return /* @__PURE__ */ jsxs(Root42, { ref, ...props, children: [
8875
9841
  /* @__PURE__ */ jsx(TabList, { role: "tablist", $variant: variant, children: tabs.map((tab) => /* @__PURE__ */ jsx(
8876
9842
  TabButton,
8877
9843
  {
@@ -8929,7 +9895,7 @@ var Header2 = styled("div")(({ theme }) => ({
8929
9895
  padding: "1rem 1.25rem",
8930
9896
  borderBottom: `1px solid ${theme.palette.divider}`
8931
9897
  }));
8932
- var Title6 = styled("h2")(({ theme }) => ({
9898
+ var Title8 = styled("h2")(({ theme }) => ({
8933
9899
  margin: 0,
8934
9900
  fontSize: "1.125rem",
8935
9901
  color: theme.palette.text.primary
@@ -8992,7 +9958,7 @@ var RemoveButton2 = styled("button")(({ theme }) => ({
8992
9958
  padding: 0,
8993
9959
  fontSize: "0.875rem"
8994
9960
  }));
8995
- var Footer4 = styled("div")(({ theme }) => ({
9961
+ var Footer5 = styled("div")(({ theme }) => ({
8996
9962
  display: "grid",
8997
9963
  gap: "1rem",
8998
9964
  marginTop: "auto",
@@ -9014,7 +9980,7 @@ var CartDrawer = forwardRef(
9014
9980
  ...props
9015
9981
  }, ref) => /* @__PURE__ */ jsx(Overlay3, { $open: open, children: /* @__PURE__ */ jsxs(Panel3, { ref, "aria-hidden": !open, "aria-label": title, ...props, children: [
9016
9982
  /* @__PURE__ */ jsxs(Header2, { children: [
9017
- /* @__PURE__ */ jsx(Title6, { children: title }),
9983
+ /* @__PURE__ */ jsx(Title8, { children: title }),
9018
9984
  /* @__PURE__ */ jsx(IconButton, { type: "button", "aria-label": closeLabel, onClick: onClose, children: "\xD7" })
9019
9985
  ] }),
9020
9986
  /* @__PURE__ */ jsx(Items, { children: items.map((item) => /* @__PURE__ */ jsxs(Item3, { children: [
@@ -9037,7 +10003,7 @@ var CartDrawer = forwardRef(
9037
10003
  ] })
9038
10004
  ] })
9039
10005
  ] }, item.id)) }),
9040
- /* @__PURE__ */ jsxs(Footer4, { children: [
10006
+ /* @__PURE__ */ jsxs(Footer5, { children: [
9041
10007
  /* @__PURE__ */ jsxs(Row4, { children: [
9042
10008
  /* @__PURE__ */ jsx("strong", { children: "Suma" }),
9043
10009
  /* @__PURE__ */ jsx("strong", { children: subtotal })
@@ -9047,7 +10013,7 @@ var CartDrawer = forwardRef(
9047
10013
  ] }) })
9048
10014
  );
9049
10015
  CartDrawer.displayName = "CartDrawer";
9050
- var Root32 = styled("aside")(({ theme }) => ({
10016
+ var Root43 = styled("aside")(({ theme }) => ({
9051
10017
  display: "grid",
9052
10018
  gap: "1.5rem",
9053
10019
  width: "100%",
@@ -9064,7 +10030,7 @@ var Header3 = styled("div")({
9064
10030
  justifyContent: "space-between",
9065
10031
  gap: "1rem"
9066
10032
  });
9067
- var Title7 = styled("h2")(({ theme }) => ({
10033
+ var Title9 = styled("h2")(({ theme }) => ({
9068
10034
  margin: 0,
9069
10035
  color: theme.palette.text.primary,
9070
10036
  fontSize: "1.125rem"
@@ -9082,7 +10048,7 @@ var Legend = styled("legend")({
9082
10048
  marginBottom: "0.75rem",
9083
10049
  fontWeight: 800
9084
10050
  });
9085
- var OptionLabel = styled("label")(({ theme }) => ({
10051
+ var OptionLabel2 = styled("label")(({ theme }) => ({
9086
10052
  display: "flex",
9087
10053
  alignItems: "center",
9088
10054
  justifyContent: "space-between",
@@ -9109,7 +10075,7 @@ var NumberInput2 = styled("input")(({ theme }) => ({
9109
10075
  fontFamily: theme.typography.fontFamily
9110
10076
  }));
9111
10077
  function renderOptions(options, selected, onToggle) {
9112
- return options.map((option) => /* @__PURE__ */ jsxs(OptionLabel, { children: [
10078
+ return options.map((option) => /* @__PURE__ */ jsxs(OptionLabel2, { children: [
9113
10079
  /* @__PURE__ */ jsxs(OptionText, { children: [
9114
10080
  /* @__PURE__ */ jsx(
9115
10081
  "input",
@@ -9139,9 +10105,9 @@ var FilterSidebar = forwardRef(
9139
10105
  onPriceRangeChange,
9140
10106
  onClear,
9141
10107
  ...props
9142
- }, ref) => /* @__PURE__ */ jsxs(Root32, { ref, "aria-label": "Filtry produkt\xF3w", ...props, children: [
10108
+ }, ref) => /* @__PURE__ */ jsxs(Root43, { ref, "aria-label": "Filtry produkt\xF3w", ...props, children: [
9143
10109
  /* @__PURE__ */ jsxs(Header3, { children: [
9144
- /* @__PURE__ */ jsx(Title7, { children: "Filtry" }),
10110
+ /* @__PURE__ */ jsx(Title9, { children: "Filtry" }),
9145
10111
  onClear && /* @__PURE__ */ jsx(Button, { variant: "ghost", size: "sm", onClick: onClear, children: "Wyczy\u015B\u0107" })
9146
10112
  ] }),
9147
10113
  priceRange && /* @__PURE__ */ jsxs(Group, { children: [
@@ -9182,8 +10148,8 @@ var FilterSidebar = forwardRef(
9182
10148
  ] })
9183
10149
  );
9184
10150
  FilterSidebar.displayName = "FilterSidebar";
9185
- var Root33 = styled(Card)({ display: "grid", gap: "1rem" });
9186
- var Title8 = styled("h2")(({ theme }) => ({
10151
+ var Root44 = styled(Card)({ display: "grid", gap: "1rem" });
10152
+ var Title10 = styled("h2")(({ theme }) => ({
9187
10153
  margin: 0,
9188
10154
  fontFamily: theme.typography.fontFamily,
9189
10155
  fontSize: "1.125rem",
@@ -9282,8 +10248,8 @@ var OrderSummary = forwardRef(
9282
10248
  ctaLabel = "Przejd\u017A do kasy",
9283
10249
  onCheckout,
9284
10250
  ...props
9285
- }, ref) => /* @__PURE__ */ jsxs(Root33, { ref, variant: "default", padding: "lg", rounded: "lg", ...props, children: [
9286
- /* @__PURE__ */ jsx(Title8, { children: title }),
10251
+ }, ref) => /* @__PURE__ */ jsxs(Root44, { ref, variant: "default", padding: "lg", rounded: "lg", ...props, children: [
10252
+ /* @__PURE__ */ jsx(Title10, { children: title }),
9287
10253
  items.length > 0 && /* @__PURE__ */ jsxs(Fragment, { children: [
9288
10254
  /* @__PURE__ */ jsx(SectionTitle, { children: itemsTitle }),
9289
10255
  /* @__PURE__ */ jsx(ItemList, { children: items.map((item) => /* @__PURE__ */ jsxs(Item4, { children: [
@@ -9334,6 +10300,207 @@ var OrderSummary = forwardRef(
9334
10300
  ] })
9335
10301
  );
9336
10302
  OrderSummary.displayName = "OrderSummary";
10303
+ var Root45 = styled("div")(({ theme }) => ({
10304
+ fontFamily: theme.typography.fontFamily
10305
+ }));
10306
+ var Grid2 = styled("div", {
10307
+ shouldForwardProp: (prop) => prop !== "$columns"
10308
+ })(({ theme, $columns }) => ({
10309
+ display: "grid",
10310
+ gridTemplateColumns: `repeat(1, 1fr)`,
10311
+ gap: "1.25rem",
10312
+ [theme.breakpoints.up("sm")]: {
10313
+ gridTemplateColumns: `repeat(${Math.min($columns, 2)}, 1fr)`
10314
+ },
10315
+ [theme.breakpoints.up("md")]: {
10316
+ gridTemplateColumns: `repeat(${Math.min($columns, 3)}, 1fr)`
10317
+ },
10318
+ [theme.breakpoints.up("lg")]: {
10319
+ gridTemplateColumns: `repeat(${Math.min($columns, 4)}, 1fr)`
10320
+ }
10321
+ }));
10322
+ var ScrollTrack = styled("div")({
10323
+ display: "flex",
10324
+ gap: "1.25rem",
10325
+ overflowX: "auto",
10326
+ paddingBottom: "0.5rem",
10327
+ scrollSnapType: "x mandatory",
10328
+ "&::-webkit-scrollbar": { height: "4px" },
10329
+ "&::-webkit-scrollbar-track": { background: "transparent" },
10330
+ "&::-webkit-scrollbar-thumb": { borderRadius: "9999px", background: "rgba(0,0,0,0.2)" },
10331
+ "& > *": {
10332
+ flexShrink: 0,
10333
+ scrollSnapAlign: "start",
10334
+ width: "clamp(220px, 28vw, 280px)"
10335
+ }
10336
+ });
10337
+ var RelatedProducts = forwardRef(
10338
+ ({ products, title = "Podobne produkty", layout = "grid", columns = 4, ...props }, ref) => /* @__PURE__ */ jsxs(Root45, { ref, ...props, children: [
10339
+ /* @__PURE__ */ jsx(SectionHeading, { title, align: "left", style: { marginBottom: "1.5rem" } }),
10340
+ layout === "scroll" ? /* @__PURE__ */ jsx(ScrollTrack, { children: products.map((product, i) => /* @__PURE__ */ jsx(ProductCard, { ...product }, product.name + i)) }) : /* @__PURE__ */ jsx(Grid2, { $columns: columns, children: products.map((product, i) => /* @__PURE__ */ jsx(ProductCard, { ...product }, product.name + i)) })
10341
+ ] })
10342
+ );
10343
+ RelatedProducts.displayName = "RelatedProducts";
10344
+ var relatedProductsLayouts = ["grid", "scroll"];
10345
+ var Root46 = styled("div")(({ theme }) => ({
10346
+ fontFamily: theme.typography.fontFamily
10347
+ }));
10348
+ var Summary = styled("div")(({ theme }) => ({
10349
+ display: "flex",
10350
+ alignItems: "center",
10351
+ gap: "2rem",
10352
+ flexWrap: "wrap",
10353
+ padding: "1.5rem",
10354
+ backgroundColor: theme.palette.action.hover,
10355
+ borderRadius: theme.shape.borderRadius,
10356
+ marginBottom: "2rem"
10357
+ }));
10358
+ var AverageBlock = styled("div")({
10359
+ display: "flex",
10360
+ flexDirection: "column",
10361
+ alignItems: "center",
10362
+ gap: "0.25rem"
10363
+ });
10364
+ var AverageScore = styled("span")(({ theme }) => ({
10365
+ fontSize: "3rem",
10366
+ fontWeight: 800,
10367
+ lineHeight: 1,
10368
+ color: theme.palette.text.primary
10369
+ }));
10370
+ var Distribution = styled("div")({ flex: 1, display: "flex", flexDirection: "column", gap: "0.375rem" });
10371
+ var DistRow = styled("div")({ display: "flex", alignItems: "center", gap: "0.75rem" });
10372
+ var DistLabel = styled("span")(({ theme }) => ({
10373
+ fontSize: "0.8125rem",
10374
+ color: theme.palette.text.secondary,
10375
+ width: "1.5rem",
10376
+ textAlign: "right"
10377
+ }));
10378
+ var DistBar = styled("div")(({ theme }) => ({
10379
+ flex: 1,
10380
+ height: "0.5rem",
10381
+ borderRadius: "9999px",
10382
+ backgroundColor: theme.palette.divider,
10383
+ overflow: "hidden"
10384
+ }));
10385
+ var DistFill = styled("div", {
10386
+ shouldForwardProp: (prop) => prop !== "$pct"
10387
+ })(({ $pct }) => ({
10388
+ height: "100%",
10389
+ width: `${$pct}%`,
10390
+ backgroundColor: "#f59e0b",
10391
+ borderRadius: "9999px",
10392
+ transition: "width 400ms ease"
10393
+ }));
10394
+ var ReviewList = styled("div")({
10395
+ display: "flex",
10396
+ flexDirection: "column",
10397
+ gap: "1.5rem"
10398
+ });
10399
+ var ReviewCard = styled("div")(({ theme }) => ({
10400
+ padding: "1.25rem",
10401
+ border: `1px solid ${theme.palette.divider}`,
10402
+ borderRadius: theme.shape.borderRadius,
10403
+ display: "flex",
10404
+ flexDirection: "column",
10405
+ gap: "0.75rem"
10406
+ }));
10407
+ var ReviewHeader = styled("div")({
10408
+ display: "flex",
10409
+ alignItems: "flex-start",
10410
+ gap: "0.875rem"
10411
+ });
10412
+ var AuthorInfo2 = styled("div")({ flex: 1 });
10413
+ var AuthorName2 = styled("div")(({ theme }) => ({
10414
+ display: "flex",
10415
+ alignItems: "center",
10416
+ gap: "0.375rem",
10417
+ fontSize: "0.9375rem",
10418
+ fontWeight: 700,
10419
+ color: theme.palette.text.primary
10420
+ }));
10421
+ var ReviewDate = styled("div")(({ theme }) => ({
10422
+ fontSize: "0.8125rem",
10423
+ color: theme.palette.text.secondary,
10424
+ marginTop: "0.125rem"
10425
+ }));
10426
+ var ReviewTitle = styled("div")(({ theme }) => ({
10427
+ fontSize: "0.9375rem",
10428
+ fontWeight: 700,
10429
+ color: theme.palette.text.primary
10430
+ }));
10431
+ var ReviewContent = styled("p")(({ theme }) => ({
10432
+ margin: 0,
10433
+ fontSize: "0.9375rem",
10434
+ color: theme.palette.text.secondary,
10435
+ lineHeight: 1.6
10436
+ }));
10437
+ var HelpfulRow = styled("div")(({ theme }) => ({
10438
+ display: "flex",
10439
+ alignItems: "center",
10440
+ gap: "0.375rem",
10441
+ fontSize: "0.8125rem",
10442
+ color: theme.palette.text.secondary
10443
+ }));
10444
+ function ReviewItem({ review }) {
10445
+ return /* @__PURE__ */ jsxs(ReviewCard, { children: [
10446
+ /* @__PURE__ */ jsxs(ReviewHeader, { children: [
10447
+ /* @__PURE__ */ jsx(
10448
+ Avatar,
10449
+ {
10450
+ initials: review.author.slice(0, 2).toUpperCase(),
10451
+ size: "sm"
10452
+ }
10453
+ ),
10454
+ /* @__PURE__ */ jsxs(AuthorInfo2, { children: [
10455
+ /* @__PURE__ */ jsxs(AuthorName2, { children: [
10456
+ review.author,
10457
+ review.verified && /* @__PURE__ */ jsx(VerifiedIcon, { "aria-label": "Zweryfikowany zakup", style: { fontSize: 14, color: "#16a34a" } })
10458
+ ] }),
10459
+ /* @__PURE__ */ jsx(ReviewDate, { children: review.date })
10460
+ ] }),
10461
+ /* @__PURE__ */ jsx(Rating, { value: review.rating, size: "sm", readonly: true })
10462
+ ] }),
10463
+ review.title && /* @__PURE__ */ jsx(ReviewTitle, { children: review.title }),
10464
+ /* @__PURE__ */ jsx(ReviewContent, { children: review.content }),
10465
+ review.helpfulCount !== void 0 && /* @__PURE__ */ jsxs(HelpfulRow, { children: [
10466
+ /* @__PURE__ */ jsx(ThumbUpOutlinedIcon, { "aria-hidden": true, style: { fontSize: 14 } }),
10467
+ review.helpfulCount,
10468
+ " os\xF3b uzna\u0142o t\u0119 recenzj\u0119 za pomocn\u0105"
10469
+ ] })
10470
+ ] });
10471
+ }
10472
+ var ReviewSection = forwardRef(
10473
+ ({ reviews, averageRating, totalReviews, title = "Opinie klient\xF3w", ratingDistribution, ...props }, ref) => {
10474
+ const totalDist = ratingDistribution ? Object.values(ratingDistribution).reduce((a, b) => a + b, 0) : 0;
10475
+ return /* @__PURE__ */ jsxs(Root46, { ref, ...props, children: [
10476
+ /* @__PURE__ */ jsx(SectionHeading, { title, align: "left", style: { marginBottom: "1.5rem" } }),
10477
+ (averageRating !== void 0 || ratingDistribution) && /* @__PURE__ */ jsxs(Summary, { children: [
10478
+ averageRating !== void 0 && /* @__PURE__ */ jsxs(AverageBlock, { children: [
10479
+ /* @__PURE__ */ jsx(AverageScore, { children: averageRating.toFixed(1) }),
10480
+ /* @__PURE__ */ jsx(Rating, { value: averageRating, size: "sm", readonly: true }),
10481
+ totalReviews !== void 0 && /* @__PURE__ */ jsxs("span", { style: { fontSize: "0.8125rem", marginTop: "0.25rem" }, children: [
10482
+ totalReviews,
10483
+ " opinii"
10484
+ ] })
10485
+ ] }),
10486
+ ratingDistribution && /* @__PURE__ */ jsx(Distribution, { children: [5, 4, 3, 2, 1].map((star) => {
10487
+ const count = ratingDistribution[star] ?? 0;
10488
+ const pct2 = totalDist > 0 ? count / totalDist * 100 : 0;
10489
+ return /* @__PURE__ */ jsxs(DistRow, { children: [
10490
+ /* @__PURE__ */ jsxs(DistLabel, { children: [
10491
+ star,
10492
+ "\u2605"
10493
+ ] }),
10494
+ /* @__PURE__ */ jsx(DistBar, { children: /* @__PURE__ */ jsx(DistFill, { $pct: pct2 }) }),
10495
+ /* @__PURE__ */ jsx(DistLabel, { style: { textAlign: "left" }, children: count })
10496
+ ] }, star);
10497
+ }) })
10498
+ ] }),
10499
+ /* @__PURE__ */ jsx(ReviewList, { children: reviews.map((review) => /* @__PURE__ */ jsx(ReviewItem, { review }, review.id)) })
10500
+ ] });
10501
+ }
10502
+ );
10503
+ ReviewSection.displayName = "ReviewSection";
9337
10504
  var List4 = styled("div")(({ $hasHeading }) => ({
9338
10505
  marginTop: $hasHeading ? "2.5rem" : 0
9339
10506
  }));
@@ -9362,7 +10529,7 @@ var FaqSection = forwardRef(
9362
10529
  }
9363
10530
  );
9364
10531
  FaqSection.displayName = "FaqSection";
9365
- var Grid2 = styled("div", {
10532
+ var Grid3 = styled("div", {
9366
10533
  shouldForwardProp: (prop) => !["$columns", "$hasHeading", "$iconLeft"].includes(prop)
9367
10534
  })(({ theme, $columns, $hasHeading, $iconLeft }) => ({
9368
10535
  display: "grid",
@@ -9391,7 +10558,7 @@ var FeatureGrid = forwardRef(
9391
10558
  const hasHeading = Boolean(title || description);
9392
10559
  return /* @__PURE__ */ jsx(Section, { ref, ...rest, children: /* @__PURE__ */ jsxs(Container, { maxWidth, children: [
9393
10560
  hasHeading && /* @__PURE__ */ jsx(SectionHeading, { title: title ?? "", description, align: headingAlign }),
9394
- /* @__PURE__ */ jsx(Grid2, { $columns: columns, $hasHeading: hasHeading, $iconLeft: itemLayout === "icon-left", children: features.map((feature, index) => /* @__PURE__ */ jsx(
10561
+ /* @__PURE__ */ jsx(Grid3, { $columns: columns, $hasHeading: hasHeading, $iconLeft: itemLayout === "icon-left", children: features.map((feature, index) => /* @__PURE__ */ jsx(
9395
10562
  FeatureItem2,
9396
10563
  {
9397
10564
  feature,
@@ -9405,7 +10572,7 @@ var FeatureGrid = forwardRef(
9405
10572
  );
9406
10573
  FeatureGrid.displayName = "FeatureGrid";
9407
10574
  var featureGridColumns = [2, 3, 4];
9408
- var Grid3 = styled("div", {
10575
+ var Grid4 = styled("div", {
9409
10576
  shouldForwardProp: (prop) => !["$columns", "$hasHeading"].includes(prop)
9410
10577
  })(({ theme, $columns, $hasHeading }) => ({
9411
10578
  display: "grid",
@@ -9437,7 +10604,7 @@ var LogoCloud = forwardRef(
9437
10604
  return /* @__PURE__ */ jsx(Section, { ref, ...rest, children: /* @__PURE__ */ jsxs(Container, { maxWidth, children: [
9438
10605
  hasHeading && title && /* @__PURE__ */ jsx(SectionHeading, { title, description, align: headingAlign }),
9439
10606
  hasHeading && !title && description && /* @__PURE__ */ jsx(SectionHeading, { title: description, align: headingAlign, as: "h2" }),
9440
- /* @__PURE__ */ jsx(Grid3, { $columns: columns, $hasHeading: hasHeading, children: logos.map((logo) => {
10607
+ /* @__PURE__ */ jsx(Grid4, { $columns: columns, $hasHeading: hasHeading, children: logos.map((logo) => {
9441
10608
  const key = `${logo.name}-${logo.href ?? logo.logoUrl ?? "text"}`;
9442
10609
  return /* @__PURE__ */ jsx(
9443
10610
  LogoTile,
@@ -9587,12 +10754,12 @@ var Section2 = styled("section")(({ theme }) => ({
9587
10754
  padding: "5rem 1rem",
9588
10755
  backgroundColor: theme.palette.background.default
9589
10756
  }));
9590
- var Inner = styled("div")({
10757
+ var Inner2 = styled("div")({
9591
10758
  maxWidth: "80rem",
9592
10759
  marginLeft: "auto",
9593
10760
  marginRight: "auto"
9594
10761
  });
9595
- var Grid4 = styled("div")(({ theme }) => ({
10762
+ var Grid5 = styled("div")(({ theme }) => ({
9596
10763
  marginTop: "3rem",
9597
10764
  display: "grid",
9598
10765
  gridTemplateColumns: "1fr",
@@ -9605,16 +10772,16 @@ var Grid4 = styled("div")(({ theme }) => ({
9605
10772
  }
9606
10773
  }));
9607
10774
  function PricingSection({ title, description, plans, ...props }) {
9608
- return /* @__PURE__ */ jsx(Section2, { ...props, children: /* @__PURE__ */ jsxs(Inner, { children: [
10775
+ return /* @__PURE__ */ jsx(Section2, { ...props, children: /* @__PURE__ */ jsxs(Inner2, { children: [
9609
10776
  (title || description) && /* @__PURE__ */ jsx(SectionHeading, { title: title ?? "", description, align: "center" }),
9610
- /* @__PURE__ */ jsx(Grid4, { children: plans.map((plan, i) => /* @__PURE__ */ jsx(PricingCard, { ...plan }, i)) })
10777
+ /* @__PURE__ */ jsx(Grid5, { children: plans.map((plan, i) => /* @__PURE__ */ jsx(PricingCard, { ...plan }, i)) })
9611
10778
  ] }) });
9612
10779
  }
9613
10780
  var Section3 = styled("section")(({ theme }) => ({
9614
10781
  padding: "5rem 1rem",
9615
10782
  backgroundColor: theme.palette.background.default
9616
10783
  }));
9617
- var Inner2 = styled("div")({
10784
+ var Inner3 = styled("div")({
9618
10785
  maxWidth: "80rem",
9619
10786
  marginLeft: "auto",
9620
10787
  marginRight: "auto"
@@ -9652,7 +10819,7 @@ function ArrowIcon() {
9652
10819
  return /* @__PURE__ */ jsx(ArrowForwardIcon, { "aria-hidden": "true", style: { fontSize: 24 } });
9653
10820
  }
9654
10821
  function ProcessSection({ title, description, steps, ...props }) {
9655
- return /* @__PURE__ */ jsx(Section3, { ...props, children: /* @__PURE__ */ jsxs(Inner2, { children: [
10822
+ return /* @__PURE__ */ jsx(Section3, { ...props, children: /* @__PURE__ */ jsxs(Inner3, { children: [
9656
10823
  (title || description) && /* @__PURE__ */ jsx(SectionHeading, { title: title ?? "", description, align: "center" }),
9657
10824
  /* @__PURE__ */ jsx(StepsRow, { children: steps.map((step, i) => /* @__PURE__ */ jsxs(Fragment$1, { children: [
9658
10825
  /* @__PURE__ */ jsx(StepWrapper, { children: /* @__PURE__ */ jsx(
@@ -9668,7 +10835,7 @@ function ProcessSection({ title, description, steps, ...props }) {
9668
10835
  ] }, i)) })
9669
10836
  ] }) });
9670
10837
  }
9671
- var Grid5 = styled("div", {
10838
+ var Grid6 = styled("div", {
9672
10839
  shouldForwardProp: (prop) => !["$columns", "$hasHeading"].includes(prop)
9673
10840
  })(({ theme, $columns, $hasHeading }) => ({
9674
10841
  display: "grid",
@@ -9697,7 +10864,7 @@ var StatsSection = forwardRef(
9697
10864
  const hasHeading = Boolean(title || description);
9698
10865
  return /* @__PURE__ */ jsx(Section, { ref, ...rest, children: /* @__PURE__ */ jsxs(Container, { maxWidth, children: [
9699
10866
  hasHeading && /* @__PURE__ */ jsx(SectionHeading, { title: title ?? "", description, align: headingAlign }),
9700
- /* @__PURE__ */ jsx(Grid5, { $columns: columns, $hasHeading: hasHeading, children: stats.map((stat, index) => /* @__PURE__ */ jsx(
10867
+ /* @__PURE__ */ jsx(Grid6, { $columns: columns, $hasHeading: hasHeading, children: stats.map((stat, index) => /* @__PURE__ */ jsx(
9701
10868
  StatCard,
9702
10869
  {
9703
10870
  stat,
@@ -9711,7 +10878,7 @@ var StatsSection = forwardRef(
9711
10878
  );
9712
10879
  StatsSection.displayName = "StatsSection";
9713
10880
  var statsSectionColumns = [2, 3, 4];
9714
- var Grid6 = styled("div", {
10881
+ var Grid7 = styled("div", {
9715
10882
  shouldForwardProp: (prop) => !["$columns", "$hasHeading"].includes(prop)
9716
10883
  })(({ theme, $columns, $hasHeading }) => ({
9717
10884
  display: "grid",
@@ -9740,7 +10907,7 @@ var TeamSection = forwardRef(
9740
10907
  return /* @__PURE__ */ jsx(Section, { ref, ...rest, children: /* @__PURE__ */ jsxs(Container, { maxWidth, children: [
9741
10908
  hasHeading && title && /* @__PURE__ */ jsx(SectionHeading, { title, description, align: headingAlign }),
9742
10909
  hasHeading && !title && description && /* @__PURE__ */ jsx(SectionHeading, { title: description, align: headingAlign, as: "h2" }),
9743
- /* @__PURE__ */ jsx(Grid6, { $columns: columns, $hasHeading: hasHeading, children: members.map((member) => /* @__PURE__ */ jsx(
10910
+ /* @__PURE__ */ jsx(Grid7, { $columns: columns, $hasHeading: hasHeading, children: members.map((member) => /* @__PURE__ */ jsx(
9744
10911
  TeamMemberCard,
9745
10912
  {
9746
10913
  member,
@@ -9753,7 +10920,7 @@ var TeamSection = forwardRef(
9753
10920
  );
9754
10921
  TeamSection.displayName = "TeamSection";
9755
10922
  var teamSectionColumns = [2, 3, 4];
9756
- var Grid7 = styled("div", {
10923
+ var Grid8 = styled("div", {
9757
10924
  shouldForwardProp: (prop) => !["$columns", "$hasHeading"].includes(prop)
9758
10925
  })(({ theme, $columns, $hasHeading }) => ({
9759
10926
  display: "grid",
@@ -9781,7 +10948,7 @@ var TestimonialsSection = forwardRef(
9781
10948
  const hasHeading = Boolean(title || description);
9782
10949
  return /* @__PURE__ */ jsx(Section, { ref, ...rest, children: /* @__PURE__ */ jsxs(Container, { maxWidth, children: [
9783
10950
  hasHeading && /* @__PURE__ */ jsx(SectionHeading, { title: title ?? "", description, align: headingAlign }),
9784
- /* @__PURE__ */ jsx(Grid7, { $columns: columns, $hasHeading: hasHeading, children: testimonials.map((testimonial, index) => /* @__PURE__ */ jsx(
10951
+ /* @__PURE__ */ jsx(Grid8, { $columns: columns, $hasHeading: hasHeading, children: testimonials.map((testimonial, index) => /* @__PURE__ */ jsx(
9785
10952
  TestimonialCard,
9786
10953
  {
9787
10954
  testimonial,
@@ -9866,7 +11033,7 @@ var ResultsScroll = styled("div")({
9866
11033
  flex: 1,
9867
11034
  padding: "0.375rem 0"
9868
11035
  });
9869
- var GroupLabel = styled("div")(({ theme }) => ({
11036
+ var GroupLabel3 = styled("div")(({ theme }) => ({
9870
11037
  padding: "0.5rem 1rem 0.25rem",
9871
11038
  fontFamily: theme.typography.fontFamily,
9872
11039
  fontSize: "0.75rem",
@@ -9934,14 +11101,14 @@ var Kbd = styled("kbd")(({ theme }) => ({
9934
11101
  backgroundColor: theme.palette.action.hover,
9935
11102
  lineHeight: 1.6
9936
11103
  }));
9937
- var EmptyState = styled("div")(({ theme }) => ({
11104
+ var EmptyState2 = styled("div")(({ theme }) => ({
9938
11105
  padding: "2.5rem 1rem",
9939
11106
  textAlign: "center",
9940
11107
  fontFamily: theme.typography.fontFamily,
9941
11108
  fontSize: "0.9375rem",
9942
11109
  color: theme.palette.text.secondary
9943
11110
  }));
9944
- var Footer5 = styled("div")(({ theme }) => ({
11111
+ var Footer6 = styled("div")(({ theme }) => ({
9945
11112
  display: "flex",
9946
11113
  gap: "1.25rem",
9947
11114
  padding: "0.5rem 1rem",
@@ -10068,8 +11235,8 @@ function CommandPalette({
10068
11235
  ),
10069
11236
  /* @__PURE__ */ jsx(KbdHint, { children: "esc" })
10070
11237
  ] }),
10071
- /* @__PURE__ */ jsx(ResultsScroll, { id: `${id}-listbox`, role: "listbox", "aria-label": "Wyniki", children: flat.length === 0 ? /* @__PURE__ */ jsx(EmptyState, { children: emptyLabel }) : filtered.map((group) => /* @__PURE__ */ jsxs("div", { role: "group", "aria-labelledby": `${id}-group-${group.id}`, children: [
10072
- /* @__PURE__ */ jsx(GroupLabel, { id: `${id}-group-${group.id}`, children: group.label }),
11238
+ /* @__PURE__ */ jsx(ResultsScroll, { id: `${id}-listbox`, role: "listbox", "aria-label": "Wyniki", children: flat.length === 0 ? /* @__PURE__ */ jsx(EmptyState2, { children: emptyLabel }) : filtered.map((group) => /* @__PURE__ */ jsxs("div", { role: "group", "aria-labelledby": `${id}-group-${group.id}`, children: [
11239
+ /* @__PURE__ */ jsx(GroupLabel3, { id: `${id}-group-${group.id}`, children: group.label }),
10073
11240
  group.items.map((item) => {
10074
11241
  const idx = globalIndex++;
10075
11242
  const isActive = idx === activeIndex;
@@ -10096,7 +11263,7 @@ function CommandPalette({
10096
11263
  );
10097
11264
  })
10098
11265
  ] }, group.id)) }),
10099
- /* @__PURE__ */ jsxs(Footer5, { id: `${id}-hint`, "aria-hidden": "true", children: [
11266
+ /* @__PURE__ */ jsxs(Footer6, { id: `${id}-hint`, "aria-hidden": "true", children: [
10100
11267
  /* @__PURE__ */ jsxs(FooterHint, { children: [
10101
11268
  /* @__PURE__ */ jsx(Kbd, { children: "\u2191" }),
10102
11269
  /* @__PURE__ */ jsx(Kbd, { children: "\u2193" }),
@@ -10155,7 +11322,7 @@ var Bar2 = styled("div")(({ theme }) => ({
10155
11322
  boxShadow: "0 -4px 24px rgba(0,0,0,0.12)",
10156
11323
  animation: `${slideUp2} 300ms cubic-bezier(0.16, 1, 0.3, 1)`
10157
11324
  }));
10158
- var Inner3 = styled("div")({
11325
+ var Inner4 = styled("div")({
10159
11326
  maxWidth: "72rem",
10160
11327
  margin: "0 auto",
10161
11328
  padding: "1.25rem 1.5rem",
@@ -10170,7 +11337,7 @@ var TopRow = styled("div")({
10170
11337
  flexWrap: "wrap"
10171
11338
  });
10172
11339
  var TextBlock = styled("div")({ flex: 1, minWidth: "16rem" });
10173
- var Title9 = styled("p")(({ theme }) => ({
11340
+ var Title11 = styled("p")(({ theme }) => ({
10174
11341
  margin: "0 0 0.25rem",
10175
11342
  fontFamily: theme.typography.fontFamily,
10176
11343
  fontSize: "1rem",
@@ -10178,7 +11345,7 @@ var Title9 = styled("p")(({ theme }) => ({
10178
11345
  color: theme.palette.text.primary,
10179
11346
  lineHeight: 1.4
10180
11347
  }));
10181
- var Description7 = styled("p")(({ theme }) => ({
11348
+ var Description8 = styled("p")(({ theme }) => ({
10182
11349
  margin: 0,
10183
11350
  fontFamily: theme.typography.fontFamily,
10184
11351
  fontSize: "0.875rem",
@@ -10332,11 +11499,11 @@ function CookieConsent({
10332
11499
  onSave?.(prefs);
10333
11500
  };
10334
11501
  return createPortal(
10335
- /* @__PURE__ */ jsx(Bar2, { role: "region", "aria-label": "Zgoda na pliki cookie", "aria-live": "polite", children: /* @__PURE__ */ jsxs(Inner3, { children: [
11502
+ /* @__PURE__ */ jsx(Bar2, { role: "region", "aria-label": "Zgoda na pliki cookie", "aria-live": "polite", children: /* @__PURE__ */ jsxs(Inner4, { children: [
10336
11503
  /* @__PURE__ */ jsxs(TopRow, { children: [
10337
11504
  /* @__PURE__ */ jsxs(TextBlock, { children: [
10338
- /* @__PURE__ */ jsx(Title9, { children: title }),
10339
- /* @__PURE__ */ jsxs(Description7, { children: [
11505
+ /* @__PURE__ */ jsx(Title11, { children: title }),
11506
+ /* @__PURE__ */ jsxs(Description8, { children: [
10340
11507
  description,
10341
11508
  privacyPolicyLabel && privacyPolicyHref && /* @__PURE__ */ jsxs(Fragment, { children: [
10342
11509
  " ",
@@ -10386,12 +11553,12 @@ function CookieConsent({
10386
11553
  );
10387
11554
  }
10388
11555
  var defaultCookieCategories = DEFAULT_CATEGORIES;
10389
- var Root34 = styled("footer")(({ theme }) => ({
11556
+ var Root47 = styled("footer")(({ theme }) => ({
10390
11557
  width: "100%",
10391
11558
  backgroundColor: theme.palette.background.paper,
10392
11559
  borderTop: `1px solid ${theme.palette.divider}`
10393
11560
  }));
10394
- var Inner4 = styled("div")({
11561
+ var Inner5 = styled("div")({
10395
11562
  maxWidth: "72rem",
10396
11563
  margin: "0 auto",
10397
11564
  padding: "3rem 1.5rem 2rem"
@@ -10413,7 +11580,7 @@ var BrandBlock = styled("div")({
10413
11580
  flexDirection: "column",
10414
11581
  gap: "0.75rem"
10415
11582
  });
10416
- var Description8 = styled("p")(({ theme }) => ({
11583
+ var Description9 = styled("p")(({ theme }) => ({
10417
11584
  margin: 0,
10418
11585
  fontFamily: theme.typography.fontFamily,
10419
11586
  fontSize: "0.875rem",
@@ -10519,7 +11686,7 @@ var SOCIAL_ICONS = {
10519
11686
  /* @__PURE__ */ jsx("polygon", { fill: "white", points: "9.75 15.02 15.5 12 9.75 8.98 9.75 15.02" })
10520
11687
  ] })
10521
11688
  };
10522
- function Footer6({
11689
+ function Footer7({
10523
11690
  logo,
10524
11691
  description,
10525
11692
  columns = [],
@@ -10527,11 +11694,11 @@ function Footer6({
10527
11694
  copyright
10528
11695
  }) {
10529
11696
  const colCount = columns.length;
10530
- return /* @__PURE__ */ jsx(Root34, { children: /* @__PURE__ */ jsxs(Inner4, { children: [
11697
+ return /* @__PURE__ */ jsx(Root47, { children: /* @__PURE__ */ jsxs(Inner5, { children: [
10531
11698
  (logo || description || colCount > 0) && /* @__PURE__ */ jsxs(TopRow2, { style: { "--col-count": colCount }, children: [
10532
11699
  (logo || description) && /* @__PURE__ */ jsxs(BrandBlock, { children: [
10533
11700
  logo,
10534
- description && /* @__PURE__ */ jsx(Description8, { children: description })
11701
+ description && /* @__PURE__ */ jsx(Description9, { children: description })
10535
11702
  ] }),
10536
11703
  columns.map((col) => /* @__PURE__ */ jsxs(Column, { children: [
10537
11704
  /* @__PURE__ */ jsx(ColumnTitle, { children: col.title }),
@@ -10554,7 +11721,7 @@ function Footer6({
10554
11721
  ] })
10555
11722
  ] }) });
10556
11723
  }
10557
- var Root35 = styled("header", {
11724
+ var Root48 = styled("header", {
10558
11725
  shouldForwardProp: (p) => p !== "$sticky" && p !== "$variant"
10559
11726
  })(({ theme, $sticky, $variant }) => ({
10560
11727
  position: $sticky ? "sticky" : "relative",
@@ -10565,15 +11732,17 @@ var Root35 = styled("header", {
10565
11732
  borderBottom: $variant === "transparent" ? "none" : `1px solid ${theme.palette.divider}`,
10566
11733
  boxShadow: $variant === "transparent" ? "none" : "0 1px 4px rgba(0,0,0,0.08)"
10567
11734
  }));
10568
- var Inner5 = styled("div")({
10569
- maxWidth: "72rem",
11735
+ var Inner6 = styled("div", {
11736
+ shouldForwardProp: (p) => p !== "$maxWidth"
11737
+ })(({ $maxWidth }) => ({
11738
+ maxWidth: typeof $maxWidth === "number" ? `${$maxWidth}px` : $maxWidth,
10570
11739
  margin: "0 auto",
10571
11740
  padding: "0 1.5rem",
10572
11741
  height: "3.75rem",
10573
11742
  display: "flex",
10574
11743
  alignItems: "center",
10575
11744
  gap: "1.5rem"
10576
- });
11745
+ }));
10577
11746
  var LogoSlot = styled("div")({
10578
11747
  flexShrink: 0,
10579
11748
  display: "flex",
@@ -10669,11 +11838,12 @@ function Navbar({
10669
11838
  navItems = [],
10670
11839
  actions,
10671
11840
  sticky = false,
10672
- variant = "filled"
11841
+ variant = "filled",
11842
+ maxWidth = "72rem"
10673
11843
  }) {
10674
11844
  const [mobileOpen, setMobileOpen] = useState(false);
10675
- return /* @__PURE__ */ jsxs(Root35, { $sticky: sticky, $variant: variant, children: [
10676
- /* @__PURE__ */ jsxs(Inner5, { children: [
11845
+ return /* @__PURE__ */ jsxs(Root48, { $sticky: sticky, $variant: variant, children: [
11846
+ /* @__PURE__ */ jsxs(Inner6, { $maxWidth: maxWidth, children: [
10677
11847
  logo && /* @__PURE__ */ jsx(LogoSlot, { children: logo }),
10678
11848
  /* @__PURE__ */ jsx(Nav3, { "aria-label": "Nawigacja g\u0142\xF3wna", children: navItems.map((item) => /* @__PURE__ */ jsx(NavLink, { href: item.href, $active: !!item.active, children: item.label }, item.href)) }),
10679
11849
  (actions || navItems.length > 0) && /* @__PURE__ */ jsxs(RightSlot, { children: [
@@ -10798,6 +11968,6 @@ var MyThemeProvider = ({
10798
11968
  ] });
10799
11969
  };
10800
11970
 
10801
- export { Accordion, Article, AspectRatio, Avatar, BackToTop, Badge, BaseInput, BaseSelectInput, Box2 as Box, Breadcrumbs, Button, Card, Carousel, CartDrawer, CheckboxInput, CommandPalette, CompareTool, Container, ContextMenu, CookieConsent, CountryFlag, CouponInput, DateTimePicker, EmailInput, FaqItem, FaqSection, FeatureGrid, FeatureItem2 as FeatureItem, FileInput, FilterSidebar, Footer6 as Footer, Lightbox, List3 as List, LogoCloud, LogoTile, Main, Marquee, Modal, MultiSelectInput, MyThemeProvider, Navbar, NewsletterSection, NumberInput, OrderSummary, PaginationBar, PaginationButton, PaginationEllipsis, Partners, PasswordInput, PhoneInput, PostCard, PostCardImage, PostCardMeta, Price, PricingCard, PricingSection, ProcessSection, ProcessStep, ProductCard, ProductGallery, ProgressBar, ProgressCircle, PromoStrip, Prose, QuantitySelector, RangeSlider, Rating, SearchInput, Section, SectionHeading, SelectInput, Skeleton, Spinner3 as Spinner, StatCard, StatsSection, StockStatus, SwitchInput, Tabs, TeamMemberCard, TeamSection, TestimonialCard, TestimonialsSection, TextInput, TextareaInput, Timeline, VideoPlayer, accordionVariants, aspectRatioPresets, avatarColors, avatarSizes, backToTopPositions, backToTopVariants, badgeVariants, cardPaddings, cardRoundeds, cardVariants, createMyTheme, dateTimePickerModes, defaultCookieCategories, featureGridColumns, listSizes, listVariants, logoCloudColumns, logoCloudVariants, logoTileVariants, marqueeDirections, marqueeSpeeds, modalSizes, myTheme, newsletterLayouts, postCardVariants, priceSizes, progressBarSizes, progressBarVariants, progressCircleSizes, progressCircleVariants, promoStripVariants, rangeSliderSizes, sectionHeadingAligns, skeletonVariants, spinnerColors, spinnerSizes, spinnerVariants, statsSectionColumns, stockStatusValues, switchColors, tabsVariants, teamSectionColumns, testimonialsSectionColumns, themeDark, themeHighContrast, themeLight, timelineItemStatuses, timelineVariants };
11971
+ export { Accordion, Alert, Article, AspectRatio, Avatar, BackToTop, Badge2 as Badge, BaseInput, BaseSelectInput, Box2 as Box, Breadcrumbs, Button, Card, Carousel, CartButton, CartDrawer, CategoryCard, CheckboxInput, CommandPalette, CompareTool, Container, ContextMenu, CookieConsent, CountdownTimer, CountryFlag, CouponInput, DateTimePicker, EmailInput, EmptyState, FaqItem, FaqSection, FeatureGrid, FeatureItem2 as FeatureItem, FileInput, FilterSidebar, Footer7 as Footer, Lightbox, List3 as List, LogoCloud, LogoTile, Main, Marquee, Modal, MultiSelectInput, MyThemeProvider, Navbar, NewsletterSection, NumberInput, OrderSummary, PaginationBar, PaginationButton, PaginationEllipsis, Partners, PasswordInput, PaymentMethodSelector, PhoneInput, PostCard, PostCardImage, PostCardMeta, Price, PricingCard, PricingSection, ProcessSection, ProcessStep, ProductCard, ProductCardHorizontal, ProductGallery, ProgressBar, ProgressCircle, PromoStrip, Prose, QuantitySelector, RangeSlider, Rating, RelatedProducts, ReviewSection, SaleBadge, SearchInput, Section, SectionHeading, SelectInput, ShippingSelector, Skeleton, SortBar, Spinner3 as Spinner, StatCard, StatsSection, StockStatus, SwitchInput, Tabs, TeamMemberCard, TeamSection, TestimonialCard, TestimonialsSection, TextInput, TextareaInput, Timeline, VariantSelector, VideoPlayer, WishlistButton, accordionVariants, alertSeverities, aspectRatioPresets, avatarColors, avatarSizes, backToTopPositions, backToTopVariants, badgeVariants, cardPaddings, cardRoundeds, cardVariants, countdownTimerVariants, createMyTheme, dateTimePickerModes, defaultCookieCategories, featureGridColumns, listSizes, listVariants, logoCloudColumns, logoCloudVariants, logoTileVariants, marqueeDirections, marqueeSpeeds, modalSizes, myTheme, newsletterLayouts, postCardVariants, priceSizes, progressBarSizes, progressBarVariants, progressCircleSizes, progressCircleVariants, promoStripVariants, rangeSliderSizes, relatedProductsLayouts, saleBadgeVariants, sectionHeadingAligns, skeletonVariants, spinnerColors, spinnerSizes, spinnerVariants, statsSectionColumns, stockStatusValues, switchColors, tabsVariants, teamSectionColumns, testimonialsSectionColumns, themeDark, themeHighContrast, themeLight, timelineItemStatuses, timelineVariants, variantSelectorModes };
10802
11972
  //# sourceMappingURL=index.js.map
10803
11973
  //# sourceMappingURL=index.js.map