@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.cjs CHANGED
@@ -2,8 +2,11 @@
2
2
 
3
3
  var react = require('react');
4
4
  var styles = require('@mui/material/styles');
5
- var CircularProgress = require('@mui/material/CircularProgress');
5
+ var material = require('@mui/material');
6
6
  var jsxRuntime = require('react/jsx-runtime');
7
+ var ShoppingCartIcon = require('@mui/icons-material/ShoppingCart');
8
+ var FavoriteIcon = require('@mui/icons-material/Favorite');
9
+ var FavoriteBorderIcon = require('@mui/icons-material/FavoriteBorder');
7
10
  var ExpandMoreIcon = require('@mui/icons-material/ExpandMore');
8
11
  var FileUploadIcon = require('@mui/icons-material/FileUpload');
9
12
  var CloudUploadMuiIcon = require('@mui/icons-material/CloudUpload');
@@ -22,19 +25,31 @@ var ChevronRightIcon = require('@mui/icons-material/ChevronRight');
22
25
  var KeyboardArrowUpIcon = require('@mui/icons-material/KeyboardArrowUp');
23
26
  var KeyboardArrowDownIcon = require('@mui/icons-material/KeyboardArrowDown');
24
27
  var react$1 = require('@emotion/react');
28
+ var ImageIcon = require('@mui/icons-material/Image');
25
29
  var ArticleIcon = require('@mui/icons-material/Article');
26
30
  var CheckCircleOutlinedIcon = require('@mui/icons-material/CheckCircleOutlined');
27
31
  var HighlightOffIcon = require('@mui/icons-material/HighlightOff');
32
+ var CreditCardOutlinedIcon = require('@mui/icons-material/CreditCardOutlined');
33
+ var LocalShippingOutlinedIcon = require('@mui/icons-material/LocalShippingOutlined');
34
+ var GridViewIcon = require('@mui/icons-material/GridView');
35
+ var ViewListIcon = require('@mui/icons-material/ViewList');
28
36
  var reactDom = require('react-dom');
29
37
  var KeyboardDoubleArrowLeftIcon = require('@mui/icons-material/KeyboardDoubleArrowLeft');
30
38
  var KeyboardDoubleArrowRightIcon = require('@mui/icons-material/KeyboardDoubleArrowRight');
39
+ var InfoOutlinedIcon = require('@mui/icons-material/InfoOutlined');
40
+ var WarningAmberOutlinedIcon = require('@mui/icons-material/WarningAmberOutlined');
41
+ var ErrorOutlineOutlinedIcon = require('@mui/icons-material/ErrorOutlineOutlined');
42
+ var InboxOutlinedIcon = require('@mui/icons-material/InboxOutlined');
43
+ var VerifiedIcon = require('@mui/icons-material/Verified');
44
+ var ThumbUpOutlinedIcon = require('@mui/icons-material/ThumbUpOutlined');
31
45
  var ArrowForwardIcon = require('@mui/icons-material/ArrowForward');
32
46
  var MenuIcon = require('@mui/icons-material/Menu');
33
- var CssBaseline = require('@mui/material/CssBaseline');
34
47
 
35
48
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
36
49
 
37
- var CircularProgress__default = /*#__PURE__*/_interopDefault(CircularProgress);
50
+ var ShoppingCartIcon__default = /*#__PURE__*/_interopDefault(ShoppingCartIcon);
51
+ var FavoriteIcon__default = /*#__PURE__*/_interopDefault(FavoriteIcon);
52
+ var FavoriteBorderIcon__default = /*#__PURE__*/_interopDefault(FavoriteBorderIcon);
38
53
  var ExpandMoreIcon__default = /*#__PURE__*/_interopDefault(ExpandMoreIcon);
39
54
  var FileUploadIcon__default = /*#__PURE__*/_interopDefault(FileUploadIcon);
40
55
  var CloudUploadMuiIcon__default = /*#__PURE__*/_interopDefault(CloudUploadMuiIcon);
@@ -51,14 +66,24 @@ var ChevronLeftIcon__default = /*#__PURE__*/_interopDefault(ChevronLeftIcon);
51
66
  var ChevronRightIcon__default = /*#__PURE__*/_interopDefault(ChevronRightIcon);
52
67
  var KeyboardArrowUpIcon__default = /*#__PURE__*/_interopDefault(KeyboardArrowUpIcon);
53
68
  var KeyboardArrowDownIcon__default = /*#__PURE__*/_interopDefault(KeyboardArrowDownIcon);
69
+ var ImageIcon__default = /*#__PURE__*/_interopDefault(ImageIcon);
54
70
  var ArticleIcon__default = /*#__PURE__*/_interopDefault(ArticleIcon);
55
71
  var CheckCircleOutlinedIcon__default = /*#__PURE__*/_interopDefault(CheckCircleOutlinedIcon);
56
72
  var HighlightOffIcon__default = /*#__PURE__*/_interopDefault(HighlightOffIcon);
73
+ var CreditCardOutlinedIcon__default = /*#__PURE__*/_interopDefault(CreditCardOutlinedIcon);
74
+ var LocalShippingOutlinedIcon__default = /*#__PURE__*/_interopDefault(LocalShippingOutlinedIcon);
75
+ var GridViewIcon__default = /*#__PURE__*/_interopDefault(GridViewIcon);
76
+ var ViewListIcon__default = /*#__PURE__*/_interopDefault(ViewListIcon);
57
77
  var KeyboardDoubleArrowLeftIcon__default = /*#__PURE__*/_interopDefault(KeyboardDoubleArrowLeftIcon);
58
78
  var KeyboardDoubleArrowRightIcon__default = /*#__PURE__*/_interopDefault(KeyboardDoubleArrowRightIcon);
79
+ var InfoOutlinedIcon__default = /*#__PURE__*/_interopDefault(InfoOutlinedIcon);
80
+ var WarningAmberOutlinedIcon__default = /*#__PURE__*/_interopDefault(WarningAmberOutlinedIcon);
81
+ var ErrorOutlineOutlinedIcon__default = /*#__PURE__*/_interopDefault(ErrorOutlineOutlinedIcon);
82
+ var InboxOutlinedIcon__default = /*#__PURE__*/_interopDefault(InboxOutlinedIcon);
83
+ var VerifiedIcon__default = /*#__PURE__*/_interopDefault(VerifiedIcon);
84
+ var ThumbUpOutlinedIcon__default = /*#__PURE__*/_interopDefault(ThumbUpOutlinedIcon);
59
85
  var ArrowForwardIcon__default = /*#__PURE__*/_interopDefault(ArrowForwardIcon);
60
86
  var MenuIcon__default = /*#__PURE__*/_interopDefault(MenuIcon);
61
- var CssBaseline__default = /*#__PURE__*/_interopDefault(CssBaseline);
62
87
 
63
88
  // src/components/atoms/buttons/Button/Button.tsx
64
89
  var sizeMap = {
@@ -161,7 +186,7 @@ var Button = react.forwardRef(
161
186
  "aria-label": ariaLabel,
162
187
  "aria-current": ariaCurrent,
163
188
  children: [
164
- loading ? /* @__PURE__ */ jsxRuntime.jsx(Spinner, { "aria-hidden": "true", children: /* @__PURE__ */ jsxRuntime.jsx(CircularProgress__default.default, { size: "1em", color: "inherit", thickness: 5 }) }) : startIcon && /* @__PURE__ */ jsxRuntime.jsx(IconSlot, { children: startIcon }),
189
+ loading ? /* @__PURE__ */ jsxRuntime.jsx(Spinner, { "aria-hidden": "true", children: /* @__PURE__ */ jsxRuntime.jsx(material.CircularProgress, { size: "1em", color: "inherit", thickness: 5 }) }) : startIcon && /* @__PURE__ */ jsxRuntime.jsx(IconSlot, { children: startIcon }),
165
190
  /* @__PURE__ */ jsxRuntime.jsx("span", { children }),
166
191
  endIcon && /* @__PURE__ */ jsxRuntime.jsx(IconSlot, { children: endIcon })
167
192
  ]
@@ -169,6 +194,102 @@ var Button = react.forwardRef(
169
194
  )
170
195
  );
171
196
  Button.displayName = "Button";
197
+ var iconSizeMap = {
198
+ sm: 18,
199
+ md: 20,
200
+ lg: 24
201
+ };
202
+ var Root = styles.styled("span")({
203
+ position: "relative",
204
+ display: "inline-flex"
205
+ });
206
+ var Badge = styles.styled("span")(({ theme }) => ({
207
+ position: "absolute",
208
+ top: "-4px",
209
+ right: "-4px",
210
+ backgroundColor: theme.palette.primary.main,
211
+ color: "#fff",
212
+ borderRadius: "9999px",
213
+ fontSize: "0.625rem",
214
+ fontWeight: 700,
215
+ minWidth: "16px",
216
+ height: "16px",
217
+ display: "flex",
218
+ alignItems: "center",
219
+ justifyContent: "center",
220
+ padding: "0 3px",
221
+ pointerEvents: "none",
222
+ fontFamily: theme.typography.fontFamily,
223
+ lineHeight: 1
224
+ }));
225
+ var CartButton = react.forwardRef(
226
+ ({ count, size = "sm", label = "Koszyk", disabled, onClick, className, "aria-label": ariaLabel }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(Root, { className, children: [
227
+ /* @__PURE__ */ jsxRuntime.jsx(
228
+ Button,
229
+ {
230
+ ref,
231
+ variant: "ghost",
232
+ size,
233
+ disabled,
234
+ onClick,
235
+ "aria-label": ariaLabel ?? (count ? `${label} (${count})` : label),
236
+ children: /* @__PURE__ */ jsxRuntime.jsx("span", { style: { display: "flex" }, children: /* @__PURE__ */ jsxRuntime.jsx(ShoppingCartIcon__default.default, { "aria-hidden": true, style: { fontSize: iconSizeMap[size] } }) })
237
+ }
238
+ ),
239
+ count != null && count > 0 && /* @__PURE__ */ jsxRuntime.jsx(Badge, { "aria-hidden": true, children: count > 99 ? "99+" : count })
240
+ ] })
241
+ );
242
+ CartButton.displayName = "CartButton";
243
+ var sizeMap2 = {
244
+ sm: { iconSize: 16, padding: "0.375rem" },
245
+ md: { iconSize: 20, padding: "0.5rem" },
246
+ lg: { iconSize: 24, padding: "0.625rem" }
247
+ };
248
+ var Root2 = styles.styled("button")(
249
+ ({ theme, $active, $size }) => ({
250
+ appearance: "none",
251
+ border: `1px solid ${$active ? theme.palette.error.main : theme.palette.divider}`,
252
+ background: $active ? `${theme.palette.error.main}14` : "transparent",
253
+ cursor: "pointer",
254
+ display: "inline-flex",
255
+ alignItems: "center",
256
+ justifyContent: "center",
257
+ borderRadius: "50%",
258
+ padding: sizeMap2[$size].padding,
259
+ color: $active ? theme.palette.error.main : theme.palette.text.secondary,
260
+ transition: "color 150ms ease, background-color 150ms ease, border-color 150ms ease",
261
+ "&:hover:not(:disabled)": {
262
+ color: theme.palette.error.main,
263
+ borderColor: theme.palette.error.main,
264
+ backgroundColor: `${theme.palette.error.main}14`
265
+ },
266
+ "&:focus-visible": {
267
+ outline: `3px solid ${theme.palette.primary.main}`,
268
+ outlineOffset: "2px"
269
+ },
270
+ "&:disabled": {
271
+ opacity: 0.4,
272
+ cursor: "not-allowed"
273
+ }
274
+ })
275
+ );
276
+ var WishlistButton = react.forwardRef(
277
+ ({ active = false, loading = false, size = "md", label, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
278
+ Root2,
279
+ {
280
+ ref,
281
+ type: "button",
282
+ $active: active,
283
+ $size: size,
284
+ disabled: loading || props.disabled,
285
+ "aria-label": label ?? (active ? "Usu\u0144 z listy \u017Cycze\u0144" : "Dodaj do listy \u017Cycze\u0144"),
286
+ "aria-pressed": active,
287
+ ...props,
288
+ children: loading ? /* @__PURE__ */ jsxRuntime.jsx(material.CircularProgress, { size: sizeMap2[size].iconSize, color: "inherit", thickness: 5 }) : active ? /* @__PURE__ */ jsxRuntime.jsx(FavoriteIcon__default.default, { "aria-hidden": true, style: { fontSize: sizeMap2[size].iconSize } }) : /* @__PURE__ */ jsxRuntime.jsx(FavoriteBorderIcon__default.default, { "aria-hidden": true, style: { fontSize: sizeMap2[size].iconSize } })
289
+ }
290
+ )
291
+ );
292
+ WishlistButton.displayName = "WishlistButton";
172
293
  var StyledHelperText = styles.styled("p")(({ theme, $error }) => ({
173
294
  margin: "0.25rem 0 0",
174
295
  fontSize: "0.75rem",
@@ -225,7 +346,7 @@ var inputColors = (theme, error) => ({
225
346
  boxShadow: `0 0 0 3px ${error ? theme.palette.error.main : theme.palette.primary.main}33`
226
347
  }
227
348
  });
228
- var Root = styles.styled("div")(({ $fullWidth }) => ({
349
+ var Root3 = styles.styled("div")(({ $fullWidth }) => ({
229
350
  display: $fullWidth ? "block" : "inline-block",
230
351
  width: $fullWidth ? "100%" : "auto"
231
352
  }));
@@ -290,7 +411,7 @@ var BaseInput = react.forwardRef(
290
411
  }, ref) => {
291
412
  const autoId = react.useId();
292
413
  const inputId = id ?? autoId;
293
- return /* @__PURE__ */ jsxRuntime.jsxs(Root, { $fullWidth: fullWidth, children: [
414
+ return /* @__PURE__ */ jsxRuntime.jsxs(Root3, { $fullWidth: fullWidth, children: [
294
415
  label && /* @__PURE__ */ jsxRuntime.jsx(Label, { htmlFor: inputId, error, size, children: label }),
295
416
  /* @__PURE__ */ jsxRuntime.jsxs(
296
417
  InputWrapper,
@@ -394,7 +515,7 @@ var LabelText = styles.styled("span")(
394
515
  userSelect: "none"
395
516
  })
396
517
  );
397
- var Root2 = styles.styled("span")(({ $disabled }) => ({
518
+ var Root4 = styles.styled("span")(({ $disabled }) => ({
398
519
  display: "inline-flex",
399
520
  flexDirection: "column",
400
521
  cursor: $disabled ? "not-allowed" : "pointer"
@@ -418,7 +539,7 @@ var CheckboxInput = react.forwardRef(
418
539
  innerRef.current.indeterminate = indeterminate;
419
540
  }
420
541
  }, [indeterminate]);
421
- return /* @__PURE__ */ jsxRuntime.jsxs(Root2, { $disabled: disabled, children: [
542
+ return /* @__PURE__ */ jsxRuntime.jsxs(Root4, { $disabled: disabled, children: [
422
543
  /* @__PURE__ */ jsxRuntime.jsxs(Row, { htmlFor: inputId, children: [
423
544
  /* @__PURE__ */ jsxRuntime.jsx(Box, { $size: size, $error: error, $disabled: disabled, children: /* @__PURE__ */ jsxRuntime.jsx(
424
545
  HiddenInput,
@@ -452,7 +573,7 @@ var CloudUploadIcon = ({ size }) => /* @__PURE__ */ jsxRuntime.jsx(CloudUploadMu
452
573
  var FileDocIcon = ({ size }) => /* @__PURE__ */ jsxRuntime.jsx(InsertDriveFileIcon__default.default, { "aria-hidden": true, style: { fontSize: size } });
453
574
  var TrashIcon = ({ size = 12 }) => /* @__PURE__ */ jsxRuntime.jsx(DeleteOutlinedIcon__default.default, { "aria-hidden": true, style: { fontSize: size } });
454
575
  var XIcon = () => /* @__PURE__ */ jsxRuntime.jsx(CloseIcon__default.default, { "aria-hidden": true, style: { fontSize: 11 } });
455
- var Root3 = styles.styled("div")(({ $fullWidth }) => ({
576
+ var Root5 = styles.styled("div")(({ $fullWidth }) => ({
456
577
  display: $fullWidth ? "block" : "inline-block",
457
578
  width: $fullWidth ? "100%" : "auto"
458
579
  }));
@@ -942,7 +1063,7 @@ var FileInput = react.forwardRef(
942
1063
  }
943
1064
  );
944
1065
  if (variant === "dropzone") {
945
- return /* @__PURE__ */ jsxRuntime.jsxs(Root3, { $fullWidth: fullWidth, children: [
1066
+ return /* @__PURE__ */ jsxRuntime.jsxs(Root5, { $fullWidth: fullWidth, children: [
946
1067
  label && /* @__PURE__ */ jsxRuntime.jsx(Label, { htmlFor: inputId, error, size, children: label }),
947
1068
  /* @__PURE__ */ jsxRuntime.jsxs(
948
1069
  DropzoneArea,
@@ -1070,7 +1191,7 @@ var FileInput = react.forwardRef(
1070
1191
  helperText && /* @__PURE__ */ jsxRuntime.jsx(HelperText, { error, children: helperText })
1071
1192
  ] });
1072
1193
  }
1073
- return /* @__PURE__ */ jsxRuntime.jsxs(Root3, { $fullWidth: fullWidth, children: [
1194
+ return /* @__PURE__ */ jsxRuntime.jsxs(Root5, { $fullWidth: fullWidth, children: [
1074
1195
  label && /* @__PURE__ */ jsxRuntime.jsx(Label, { htmlFor: inputId, error, size, children: label }),
1075
1196
  /* @__PURE__ */ jsxRuntime.jsxs(
1076
1197
  CompactWrapper,
@@ -1189,7 +1310,7 @@ var triggerColors = (theme, error, open) => ({
1189
1310
  borderColor: error ? theme.palette.error.dark : theme.palette.text.secondary
1190
1311
  }
1191
1312
  });
1192
- var Root4 = styles.styled("div")(({ $fullWidth }) => ({
1313
+ var Root6 = styles.styled("div")(({ $fullWidth }) => ({
1193
1314
  display: $fullWidth ? "block" : "inline-block",
1194
1315
  width: $fullWidth ? "100%" : "auto",
1195
1316
  position: "relative"
@@ -1306,7 +1427,7 @@ var BaseSelectInput = ({
1306
1427
  }, [isOpen, close]);
1307
1428
  const selectedLabel = options.find((o) => o.value === value)?.label;
1308
1429
  const defaultTriggerContent = /* @__PURE__ */ jsxRuntime.jsx("span", { style: { opacity: selectedLabel ? 1 : 0.5 }, children: selectedLabel ?? placeholder });
1309
- return /* @__PURE__ */ jsxRuntime.jsxs(Root4, { $fullWidth: fullWidth, ref: rootRef, children: [
1430
+ return /* @__PURE__ */ jsxRuntime.jsxs(Root6, { $fullWidth: fullWidth, ref: rootRef, children: [
1310
1431
  label && /* @__PURE__ */ jsxRuntime.jsx(Label, { htmlFor: inputId, error, size, children: label }),
1311
1432
  /* @__PURE__ */ jsxRuntime.jsxs(
1312
1433
  Trigger,
@@ -1586,7 +1707,7 @@ var borderColors = (theme, error) => ({
1586
1707
  boxShadow: `0 0 0 3px ${error ? theme.palette.error.main : theme.palette.primary.main}33`
1587
1708
  }
1588
1709
  });
1589
- var Root5 = styles.styled("div")(({ $fullWidth }) => ({
1710
+ var Root7 = styles.styled("div")(({ $fullWidth }) => ({
1590
1711
  display: $fullWidth ? "block" : "inline-block",
1591
1712
  width: $fullWidth ? "100%" : "auto"
1592
1713
  }));
@@ -1627,7 +1748,7 @@ var TextareaInput = react.forwardRef(
1627
1748
  }, ref) => {
1628
1749
  const autoId = react.useId();
1629
1750
  const inputId = id ?? autoId;
1630
- return /* @__PURE__ */ jsxRuntime.jsxs(Root5, { $fullWidth: fullWidth, children: [
1751
+ return /* @__PURE__ */ jsxRuntime.jsxs(Root7, { $fullWidth: fullWidth, children: [
1631
1752
  label && /* @__PURE__ */ jsxRuntime.jsx(Label, { htmlFor: inputId, error, size, children: label }),
1632
1753
  /* @__PURE__ */ jsxRuntime.jsx(
1633
1754
  StyledTextarea,
@@ -1649,14 +1770,14 @@ var TextareaInput = react.forwardRef(
1649
1770
  }
1650
1771
  );
1651
1772
  TextareaInput.displayName = "TextareaInput";
1652
- var sizeMap2 = { sm: "1em", md: "1.25em", lg: "1.75em" };
1773
+ var sizeMap3 = { sm: "1em", md: "1.25em", lg: "1.75em" };
1653
1774
  var toFlagEmoji = (code) => code.toUpperCase().replace(/[A-Z]/g, (char) => String.fromCodePoint(127462 + char.charCodeAt(0) - 65));
1654
1775
  var CountryFlag = ({ countryCode, size = "md", style, ...rest }) => /* @__PURE__ */ jsxRuntime.jsx(
1655
1776
  "span",
1656
1777
  {
1657
1778
  role: "img",
1658
1779
  "aria-label": `Flag: ${countryCode}`,
1659
- style: { fontSize: sizeMap2[size], lineHeight: 1, display: "inline-flex", ...style },
1780
+ style: { fontSize: sizeMap3[size], lineHeight: 1, display: "inline-flex", ...style },
1660
1781
  ...rest,
1661
1782
  children: toFlagEmoji(countryCode)
1662
1783
  }
@@ -3252,7 +3373,7 @@ var wrapperColors = (theme, error, focused) => ({
3252
3373
  borderColor: !focused ? error ? theme.palette.error.dark : theme.palette.text.secondary : void 0
3253
3374
  }
3254
3375
  });
3255
- var Root6 = styles.styled("div")(({ $fullWidth }) => ({
3376
+ var Root8 = styles.styled("div")(({ $fullWidth }) => ({
3256
3377
  display: $fullWidth ? "block" : "inline-block",
3257
3378
  width: $fullWidth ? "100%" : "auto"
3258
3379
  }));
@@ -3489,7 +3610,7 @@ var PhoneInput = react.forwardRef(
3489
3610
  return () => document.removeEventListener("mousedown", handler);
3490
3611
  }, [isOpen, close]);
3491
3612
  const derivedPlaceholder = placeholder ?? (selectedCountry.minLength === selectedCountry.maxLength ? `${selectedCountry.maxLength} ${digitsLabel}` : `${selectedCountry.minLength}\u2013${selectedCountry.maxLength} ${digitsLabel}`);
3492
- return /* @__PURE__ */ jsxRuntime.jsxs(Root6, { $fullWidth: fullWidth, ref: rootRef, children: [
3613
+ return /* @__PURE__ */ jsxRuntime.jsxs(Root8, { $fullWidth: fullWidth, ref: rootRef, children: [
3493
3614
  label && /* @__PURE__ */ jsxRuntime.jsx(Label, { htmlFor: inputId, error, size, children: label }),
3494
3615
  /* @__PURE__ */ jsxRuntime.jsxs(
3495
3616
  InputWrapper2,
@@ -3604,7 +3725,7 @@ function getActiveColor(color, theme) {
3604
3725
  return theme.palette.primary.main;
3605
3726
  }
3606
3727
  }
3607
- var Root7 = styles.styled("span")(({ $disabled }) => ({
3728
+ var Root9 = styles.styled("span")(({ $disabled }) => ({
3608
3729
  display: "inline-flex",
3609
3730
  flexDirection: "column",
3610
3731
  cursor: $disabled ? "not-allowed" : "pointer"
@@ -3689,7 +3810,7 @@ var SwitchInput = react.forwardRef(
3689
3810
  }, ref) => {
3690
3811
  const autoId = react.useId();
3691
3812
  const inputId = id ?? autoId;
3692
- return /* @__PURE__ */ jsxRuntime.jsxs(Root7, { $disabled: disabled, children: [
3813
+ return /* @__PURE__ */ jsxRuntime.jsxs(Root9, { $disabled: disabled, children: [
3693
3814
  /* @__PURE__ */ jsxRuntime.jsxs(Row2, { htmlFor: inputId, $placement: labelPlacement, children: [
3694
3815
  /* @__PURE__ */ jsxRuntime.jsxs(Track, { $size: size, $color: color, $error: error, $disabled: disabled, children: [
3695
3816
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -3715,7 +3836,7 @@ SwitchInput.displayName = "SwitchInput";
3715
3836
  var switchColors = ["primary", "secondary", "success", "danger"];
3716
3837
  var TRACK_H2 = { sm: "0.25rem", md: "0.375rem", lg: "0.5rem" };
3717
3838
  var THUMB_S2 = { sm: "0.875rem", md: "1.125rem", lg: "1.375rem" };
3718
- var Root8 = styles.styled("div")({
3839
+ var Root10 = styles.styled("div")({
3719
3840
  display: "flex",
3720
3841
  flexDirection: "column",
3721
3842
  gap: "0.5rem",
@@ -3838,7 +3959,7 @@ var RangeSlider = react.forwardRef(
3838
3959
  const loP = pct(lo, min, max);
3839
3960
  const hiP = pct(hi, min, max);
3840
3961
  const valueLabel = range ? `${formatValue2(lo)} \u2013 ${formatValue2(hi)}` : formatValue2(lo);
3841
- return /* @__PURE__ */ jsxRuntime.jsxs(Root8, { ref, ...props, children: [
3962
+ return /* @__PURE__ */ jsxRuntime.jsxs(Root10, { ref, ...props, children: [
3842
3963
  (label || showValue) && /* @__PURE__ */ jsxRuntime.jsxs(LabelRow, { children: [
3843
3964
  label && /* @__PURE__ */ jsxRuntime.jsx("span", { children: label }),
3844
3965
  showValue && /* @__PURE__ */ jsxRuntime.jsx("span", { children: valueLabel })
@@ -3968,7 +4089,7 @@ var inputColors2 = (theme, error) => ({
3968
4089
  boxShadow: `0 0 0 3px ${error ? theme.palette.error.main : theme.palette.primary.main}33`
3969
4090
  }
3970
4091
  });
3971
- var Root9 = styles.styled("div")(({ $fullWidth }) => ({
4092
+ var Root11 = styles.styled("div")(({ $fullWidth }) => ({
3972
4093
  display: $fullWidth ? "block" : "inline-block",
3973
4094
  width: $fullWidth ? "100%" : "auto",
3974
4095
  position: "relative"
@@ -4363,7 +4484,7 @@ var DateTimePicker = react.forwardRef(
4363
4484
  const showCalendar = mode !== "time";
4364
4485
  const showTime = mode !== "date";
4365
4486
  const needsConfirm = mode !== "date";
4366
- return /* @__PURE__ */ jsxRuntime.jsxs(Root9, { ref: rootRef, $fullWidth: fullWidth, children: [
4487
+ return /* @__PURE__ */ jsxRuntime.jsxs(Root11, { ref: rootRef, $fullWidth: fullWidth, children: [
4367
4488
  label && /* @__PURE__ */ jsxRuntime.jsx(Label, { htmlFor: inputId, error, size, children: label }),
4368
4489
  /* @__PURE__ */ jsxRuntime.jsxs(
4369
4490
  InputWrapper3,
@@ -4770,7 +4891,7 @@ var StyledBadge = styles.styled("span", {
4770
4891
  fontFamily: theme.typography.fontFamily,
4771
4892
  ...getVariantStyles2($variant, theme)
4772
4893
  }));
4773
- function Badge({ variant = "default", ...props }) {
4894
+ function Badge2({ variant = "default", ...props }) {
4774
4895
  return /* @__PURE__ */ jsxRuntime.jsx(StyledBadge, { $variant: variant, ...props });
4775
4896
  }
4776
4897
  var badgeVariants = [
@@ -4782,7 +4903,41 @@ var badgeVariants = [
4782
4903
  "ghost",
4783
4904
  "promo"
4784
4905
  ];
4785
- var sizeMap3 = {
4906
+ function getBgColor(variant) {
4907
+ switch (variant) {
4908
+ case "flash":
4909
+ return "#f59e0b";
4910
+ case "new":
4911
+ return "#3b82f6";
4912
+ case "hot":
4913
+ return "#ef4444";
4914
+ default:
4915
+ return "#16a34a";
4916
+ }
4917
+ }
4918
+ var Root12 = styles.styled("span", {
4919
+ shouldForwardProp: (prop) => prop !== "$variant"
4920
+ })(({ theme, $variant }) => ({
4921
+ display: "inline-flex",
4922
+ alignItems: "center",
4923
+ gap: "0.25rem",
4924
+ borderRadius: "0.375rem",
4925
+ padding: "0.25rem 0.625rem",
4926
+ fontSize: "0.75rem",
4927
+ fontWeight: 700,
4928
+ lineHeight: 1,
4929
+ letterSpacing: "0.02em",
4930
+ fontFamily: theme.typography.fontFamily,
4931
+ backgroundColor: getBgColor($variant),
4932
+ color: "#ffffff",
4933
+ textTransform: "uppercase"
4934
+ }));
4935
+ function SaleBadge({ discount, label, variant = "default", ...props }) {
4936
+ const text = label ?? (discount !== void 0 ? `-${discount}%` : "SALE");
4937
+ return /* @__PURE__ */ jsxRuntime.jsx(Root12, { $variant: variant, ...props, children: text });
4938
+ }
4939
+ var saleBadgeVariants = ["default", "flash", "new", "hot"];
4940
+ var sizeMap4 = {
4786
4941
  sm: { width: "2rem", height: "2rem", fontSize: "0.75rem" },
4787
4942
  md: { width: "2.5rem", height: "2.5rem", fontSize: "0.875rem" },
4788
4943
  lg: { width: "3rem", height: "3rem", fontSize: "1rem" },
@@ -4818,7 +4973,7 @@ var StyledAvatar = styles.styled("div", {
4818
4973
  fontWeight: 600,
4819
4974
  fontFamily: theme.typography.fontFamily,
4820
4975
  userSelect: "none",
4821
- ...sizeMap3[$size],
4976
+ ...sizeMap4[$size],
4822
4977
  ...getColorStyles($color, theme)
4823
4978
  }));
4824
4979
  function Avatar({ initials, size = "md", color = "primary", ...props }) {
@@ -4930,7 +5085,7 @@ var spin = react$1.keyframes`to { transform: rotate(360deg); }`;
4930
5085
  var fade = react$1.keyframes`0%,100%{opacity:.15} 50%{opacity:1}`;
4931
5086
  var scalePulse = react$1.keyframes`0%,100%{transform:scale(0.6);opacity:.4} 50%{transform:scale(1);opacity:1}`;
4932
5087
  var barAnim = react$1.keyframes`0%,100%{transform:scaleY(.4);opacity:.5} 50%{transform:scaleY(1);opacity:1}`;
4933
- var Root10 = styles.styled("span", {
5088
+ var Root13 = styles.styled("span", {
4934
5089
  shouldForwardProp: (p) => !["$size", "$color"].includes(p)
4935
5090
  })(({ theme, $size, $color }) => {
4936
5091
  const colorMap = {
@@ -5018,8 +5173,8 @@ function Spinner3({
5018
5173
  label = "\u0141adowanie\u2026",
5019
5174
  ...props
5020
5175
  }) {
5021
- const Inner6 = VARIANTS[variant];
5022
- return /* @__PURE__ */ jsxRuntime.jsx(Root10, { $size: size, $color: color, role: "status", "aria-label": label, ...props, children: /* @__PURE__ */ jsxRuntime.jsx(Inner6, {}) });
5176
+ const Inner7 = VARIANTS[variant];
5177
+ return /* @__PURE__ */ jsxRuntime.jsx(Root13, { $size: size, $color: color, role: "status", "aria-label": label, ...props, children: /* @__PURE__ */ jsxRuntime.jsx(Inner7, {}) });
5023
5178
  }
5024
5179
  var spinnerVariants = ["ring", "dots", "pulse", "bars"];
5025
5180
  var spinnerSizes = ["xs", "sm", "md", "lg", "xl"];
@@ -5145,7 +5300,7 @@ var FONT_MAP = {
5145
5300
  lg: "1.125rem",
5146
5301
  xl: "1.5rem"
5147
5302
  };
5148
- var Root11 = styles.styled("div")({ position: "relative", display: "inline-flex", flexShrink: 0 });
5303
+ var Root14 = styles.styled("div")({ position: "relative", display: "inline-flex", flexShrink: 0 });
5149
5304
  var Label2 = styles.styled("div", {
5150
5305
  shouldForwardProp: (p) => p !== "$size"
5151
5306
  })(({ theme, $size }) => ({
@@ -5199,7 +5354,7 @@ function ProgressCircle({
5199
5354
  const { color, gradient } = useStrokeColor(variant, gradientId);
5200
5355
  const trackColor = theme.palette.mode === "dark" ? "rgba(255,255,255,0.1)" : "rgba(0,0,0,0.08)";
5201
5356
  return /* @__PURE__ */ jsxRuntime.jsxs(
5202
- Root11,
5357
+ Root14,
5203
5358
  {
5204
5359
  role: "progressbar",
5205
5360
  "aria-valuenow": value,
@@ -5546,12 +5701,110 @@ var StyledArticle = styles.styled("article")(({ theme }) => ({
5546
5701
  }));
5547
5702
  var Article = react.forwardRef(({ children, ...rest }, ref) => /* @__PURE__ */ jsxRuntime.jsx(StyledArticle, { ref, ...rest, children }));
5548
5703
  Article.displayName = "Article";
5549
- var sizeMap4 = {
5704
+ var PRESET_MAP = {
5705
+ "1/1": 1,
5706
+ "4/3": 4 / 3,
5707
+ "3/2": 3 / 2,
5708
+ "16/9": 16 / 9,
5709
+ "21/9": 21 / 9,
5710
+ "9/16": 9 / 16,
5711
+ "3/4": 3 / 4,
5712
+ "2/3": 2 / 3
5713
+ };
5714
+ var Root15 = styles.styled("div")({
5715
+ position: "relative",
5716
+ width: "100%",
5717
+ "& > *": {
5718
+ position: "absolute",
5719
+ inset: 0,
5720
+ width: "100%",
5721
+ height: "100%",
5722
+ objectFit: "cover"
5723
+ }
5724
+ });
5725
+ var AspectRatio = react.forwardRef(
5726
+ ({ ratio = "16/9", children, style, ...props }, ref) => {
5727
+ const numericRatio = typeof ratio === "string" ? PRESET_MAP[ratio] ?? 16 / 9 : ratio;
5728
+ const paddingBottom = `${1 / numericRatio * 100}%`;
5729
+ return /* @__PURE__ */ jsxRuntime.jsx(Root15, { ref, style: { paddingBottom, ...style }, ...props, children });
5730
+ }
5731
+ );
5732
+ AspectRatio.displayName = "AspectRatio";
5733
+ var aspectRatioPresets = Object.keys(PRESET_MAP);
5734
+ var Root16 = styles.styled(Card)(({ theme }) => ({
5735
+ display: "flex",
5736
+ flexDirection: "column",
5737
+ overflow: "hidden",
5738
+ cursor: "pointer",
5739
+ transition: "box-shadow 150ms ease, transform 150ms ease",
5740
+ "&:hover": {
5741
+ boxShadow: theme.shadows[4],
5742
+ transform: "translateY(-2px)"
5743
+ }
5744
+ }));
5745
+ var ImageWrap = styles.styled("div")({
5746
+ margin: "-1.5rem -1.5rem 1rem"
5747
+ });
5748
+ var Image = styles.styled("img")({
5749
+ objectFit: "cover",
5750
+ width: "100%",
5751
+ height: "100%"
5752
+ });
5753
+ var ImagePlaceholder = styles.styled("div")(({ theme }) => ({
5754
+ width: "100%",
5755
+ height: "100%",
5756
+ backgroundColor: theme.palette.action.hover,
5757
+ display: "flex",
5758
+ alignItems: "center",
5759
+ justifyContent: "center",
5760
+ color: theme.palette.text.disabled
5761
+ }));
5762
+ var Content = styles.styled("div")({
5763
+ display: "flex",
5764
+ flexDirection: "column",
5765
+ gap: "0.25rem"
5766
+ });
5767
+ var Name = styles.styled("h3")(({ theme }) => ({
5768
+ margin: 0,
5769
+ color: theme.palette.text.primary,
5770
+ fontFamily: theme.typography.fontFamily,
5771
+ fontSize: "1rem",
5772
+ fontWeight: 700,
5773
+ lineHeight: 1.4
5774
+ }));
5775
+ var Count = styles.styled("span")(({ theme }) => ({
5776
+ color: theme.palette.text.secondary,
5777
+ fontFamily: theme.typography.fontFamily,
5778
+ fontSize: "0.875rem"
5779
+ }));
5780
+ var CardLink = styles.styled("a")({
5781
+ display: "block",
5782
+ textDecoration: "none",
5783
+ color: "inherit",
5784
+ outline: "none"
5785
+ });
5786
+ var CategoryCard = react.forwardRef(
5787
+ ({ name, imageUrl, imageAlt, count, href, ...props }, ref) => {
5788
+ const content = /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
5789
+ /* @__PURE__ */ jsxRuntime.jsx(ImageWrap, { children: /* @__PURE__ */ jsxRuntime.jsx(AspectRatio, { ratio: "4/3", children: imageUrl ? /* @__PURE__ */ jsxRuntime.jsx(Image, { src: imageUrl, alt: imageAlt ?? name }) : /* @__PURE__ */ jsxRuntime.jsx(ImagePlaceholder, { "aria-label": imageAlt ?? name, children: /* @__PURE__ */ jsxRuntime.jsx(ImageIcon__default.default, { style: { fontSize: 48 } }) }) }) }),
5790
+ /* @__PURE__ */ jsxRuntime.jsxs(Content, { children: [
5791
+ /* @__PURE__ */ jsxRuntime.jsx(Name, { children: name }),
5792
+ count !== void 0 && /* @__PURE__ */ jsxRuntime.jsxs(Count, { children: [
5793
+ count,
5794
+ " produkt\xF3w"
5795
+ ] })
5796
+ ] })
5797
+ ] });
5798
+ return /* @__PURE__ */ jsxRuntime.jsx(Root16, { ref, variant: "default", padding: "md", rounded: "lg", ...props, children: href ? /* @__PURE__ */ jsxRuntime.jsx(CardLink, { href, children: content }) : content });
5799
+ }
5800
+ );
5801
+ CategoryCard.displayName = "CategoryCard";
5802
+ var sizeMap5 = {
5550
5803
  sm: "1rem",
5551
5804
  md: "1.25rem",
5552
5805
  lg: "1.5rem"
5553
5806
  };
5554
- var Root12 = styles.styled("div")(({ theme }) => ({
5807
+ var Root17 = styles.styled("div")(({ theme }) => ({
5555
5808
  display: "inline-flex",
5556
5809
  alignItems: "center",
5557
5810
  gap: "0.5rem",
@@ -5571,7 +5824,7 @@ var StarButton = styles.styled("button")(
5571
5824
  padding: 0,
5572
5825
  color: $active ? "#f59e0b" : theme.palette.action.disabled,
5573
5826
  cursor: "pointer",
5574
- fontSize: sizeMap4[$size],
5827
+ fontSize: sizeMap5[$size],
5575
5828
  lineHeight: 1,
5576
5829
  "&:disabled": {
5577
5830
  cursor: "default"
@@ -5586,7 +5839,7 @@ var Rating = react.forwardRef(
5586
5839
  ({ value, max = 5, readonly = true, size = "md", label, count, onChange, ...props }, ref) => {
5587
5840
  const roundedValue = Math.round(value);
5588
5841
  const meta = label ?? (count !== void 0 ? `(${count})` : void 0);
5589
- return /* @__PURE__ */ jsxRuntime.jsxs(Root12, { ref, "aria-label": `Ocena ${value} z ${max}`, ...props, children: [
5842
+ return /* @__PURE__ */ jsxRuntime.jsxs(Root17, { ref, "aria-label": `Ocena ${value} z ${max}`, ...props, children: [
5590
5843
  /* @__PURE__ */ jsxRuntime.jsx(
5591
5844
  Stars,
5592
5845
  {
@@ -5617,36 +5870,6 @@ var Rating = react.forwardRef(
5617
5870
  }
5618
5871
  );
5619
5872
  Rating.displayName = "Rating";
5620
- var PRESET_MAP = {
5621
- "1/1": 1,
5622
- "4/3": 4 / 3,
5623
- "3/2": 3 / 2,
5624
- "16/9": 16 / 9,
5625
- "21/9": 21 / 9,
5626
- "9/16": 9 / 16,
5627
- "3/4": 3 / 4,
5628
- "2/3": 2 / 3
5629
- };
5630
- var Root13 = styles.styled("div")({
5631
- position: "relative",
5632
- width: "100%",
5633
- "& > *": {
5634
- position: "absolute",
5635
- inset: 0,
5636
- width: "100%",
5637
- height: "100%",
5638
- objectFit: "cover"
5639
- }
5640
- });
5641
- var AspectRatio = react.forwardRef(
5642
- ({ ratio = "16/9", children, style, ...props }, ref) => {
5643
- const numericRatio = typeof ratio === "string" ? PRESET_MAP[ratio] ?? 16 / 9 : ratio;
5644
- const paddingBottom = `${1 / numericRatio * 100}%`;
5645
- return /* @__PURE__ */ jsxRuntime.jsx(Root13, { ref, style: { paddingBottom, ...style }, ...props, children });
5646
- }
5647
- );
5648
- AspectRatio.displayName = "AspectRatio";
5649
- var aspectRatioPresets = Object.keys(PRESET_MAP);
5650
5873
  var DEFAULT_OMNIBUS_LABEL = "Najni\u017Csza cena z ostatnich 30 dni";
5651
5874
  var FONT_SIZE = {
5652
5875
  sm: "0.875rem",
@@ -5654,7 +5877,7 @@ var FONT_SIZE = {
5654
5877
  lg: "1.5rem",
5655
5878
  xl: "2rem"
5656
5879
  };
5657
- var Root14 = styles.styled("div")({
5880
+ var Root18 = styles.styled("div")({
5658
5881
  display: "inline-flex",
5659
5882
  flexDirection: "column",
5660
5883
  gap: "0.25rem"
@@ -5735,7 +5958,7 @@ var Price = react.forwardRef(
5735
5958
  const onSale = originalPrice !== void 0 && originalPrice > price;
5736
5959
  const discount = onSale ? calcDiscount(price, originalPrice) : 0;
5737
5960
  const showOmnibus = lowestPrice !== void 0;
5738
- return /* @__PURE__ */ jsxRuntime.jsxs(Root14, { ref, ...props, children: [
5961
+ return /* @__PURE__ */ jsxRuntime.jsxs(Root18, { ref, ...props, children: [
5739
5962
  /* @__PURE__ */ jsxRuntime.jsxs(PriceRow, { children: [
5740
5963
  /* @__PURE__ */ jsxRuntime.jsx(
5741
5964
  Current,
@@ -5779,26 +6002,35 @@ var Price = react.forwardRef(
5779
6002
  );
5780
6003
  Price.displayName = "Price";
5781
6004
  var priceSizes = ["sm", "md", "lg", "xl"];
5782
- var Root15 = styles.styled(Card)({
6005
+ var Root19 = styles.styled(Card)({
5783
6006
  display: "flex",
5784
6007
  flexDirection: "column",
5785
6008
  height: "100%",
5786
6009
  overflow: "hidden"
5787
6010
  });
5788
- var ImageWrap = styles.styled("div")({
6011
+ var ImageWrap2 = styles.styled("div")({
5789
6012
  position: "relative",
5790
6013
  margin: "-1.5rem -1.5rem 1rem"
5791
6014
  });
5792
- var Image = styles.styled("img")(({ theme }) => ({
6015
+ var Image2 = styles.styled("img")(({ theme }) => ({
5793
6016
  objectFit: "cover",
5794
6017
  backgroundColor: theme.palette.action.hover
5795
6018
  }));
6019
+ var ImagePlaceholder2 = styles.styled("div")(({ theme }) => ({
6020
+ width: "100%",
6021
+ height: "100%",
6022
+ backgroundColor: theme.palette.action.hover,
6023
+ display: "flex",
6024
+ alignItems: "center",
6025
+ justifyContent: "center",
6026
+ color: theme.palette.text.disabled
6027
+ }));
5796
6028
  var BadgeSlot = styles.styled("div")({
5797
6029
  position: "absolute",
5798
6030
  left: "0.75rem",
5799
6031
  top: "0.75rem"
5800
6032
  });
5801
- var Name = styles.styled("h3")(({ theme }) => ({
6033
+ var Name2 = styles.styled("h3")(({ theme }) => ({
5802
6034
  margin: 0,
5803
6035
  color: theme.palette.text.primary,
5804
6036
  fontFamily: theme.typography.fontFamily,
@@ -5829,12 +6061,12 @@ var ProductCard = react.forwardRef(
5829
6061
  ctaLabel = "Dodaj do koszyka",
5830
6062
  onAddToCart,
5831
6063
  ...props
5832
- }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(Root15, { ref, variant: "default", padding: "md", rounded: "lg", ...props, children: [
5833
- /* @__PURE__ */ jsxRuntime.jsx(ImageWrap, { children: /* @__PURE__ */ jsxRuntime.jsxs(AspectRatio, { ratio: "4/3", children: [
5834
- /* @__PURE__ */ jsxRuntime.jsx(Image, { src: imageUrl, alt: imageAlt ?? name }),
5835
- badge && /* @__PURE__ */ jsxRuntime.jsx(BadgeSlot, { children: /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: badgeVariant, children: badge }) })
6064
+ }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(Root19, { ref, variant: "default", padding: "md", rounded: "lg", ...props, children: [
6065
+ /* @__PURE__ */ jsxRuntime.jsx(ImageWrap2, { children: /* @__PURE__ */ jsxRuntime.jsxs(AspectRatio, { ratio: "4/3", children: [
6066
+ imageUrl ? /* @__PURE__ */ jsxRuntime.jsx(Image2, { src: imageUrl, alt: imageAlt ?? name }) : /* @__PURE__ */ jsxRuntime.jsx(ImagePlaceholder2, { "aria-label": imageAlt ?? name, children: /* @__PURE__ */ jsxRuntime.jsx(ImageIcon__default.default, { style: { fontSize: 48 } }) }),
6067
+ badge && /* @__PURE__ */ jsxRuntime.jsx(BadgeSlot, { children: /* @__PURE__ */ jsxRuntime.jsx(Badge2, { variant: badgeVariant, children: badge }) })
5836
6068
  ] }) }),
5837
- /* @__PURE__ */ jsxRuntime.jsx(Name, { children: name }),
6069
+ /* @__PURE__ */ jsxRuntime.jsx(Name2, { children: name }),
5838
6070
  rating !== void 0 && /* @__PURE__ */ jsxRuntime.jsx(Rating, { value: rating, count: reviewCount, size: "sm" }),
5839
6071
  /* @__PURE__ */ jsxRuntime.jsx(
5840
6072
  Price,
@@ -5847,55 +6079,181 @@ var ProductCard = react.forwardRef(
5847
6079
  style: { marginTop: "0.5rem" }
5848
6080
  }
5849
6081
  ),
5850
- /* @__PURE__ */ jsxRuntime.jsx(Footer, { children: /* @__PURE__ */ jsxRuntime.jsx(Button, { fullWidth: true, onClick: onAddToCart, children: ctaLabel }) })
6082
+ /* @__PURE__ */ jsxRuntime.jsx(Footer, { children: /* @__PURE__ */ jsxRuntime.jsx(Button, { fullWidth: true, onClick: (e) => {
6083
+ e.stopPropagation();
6084
+ onAddToCart?.();
6085
+ }, children: ctaLabel }) })
5851
6086
  ] })
5852
6087
  );
5853
6088
  ProductCard.displayName = "ProductCard";
5854
- var ImageWrapper = styles.styled("div", {
5855
- shouldForwardProp: (prop) => prop !== "$ar"
5856
- })(({ $ar }) => ({
5857
- position: "relative",
6089
+ var COLLAPSE_AT = "480px";
6090
+ var ContainerRoot = styles.styled("div")({
6091
+ containerType: "inline-size",
5858
6092
  width: "100%",
5859
- aspectRatio: $ar,
5860
- overflow: "hidden",
5861
- flexShrink: 0
5862
- }));
5863
- var Img = styles.styled("img")({
6093
+ height: "100%"
6094
+ });
6095
+ var Inner = styles.styled("div")({
6096
+ display: "flex",
6097
+ flexDirection: "row",
6098
+ height: "100%",
6099
+ [`@container (max-width: ${COLLAPSE_AT})`]: {
6100
+ flexDirection: "column"
6101
+ }
6102
+ });
6103
+ var ImageWrap3 = styles.styled("div")({
6104
+ position: "relative",
6105
+ flexShrink: 0,
6106
+ width: "clamp(120px, 33%, 200px)",
6107
+ alignSelf: "stretch",
6108
+ margin: "-1.5rem 1rem -1.5rem -1.5rem",
6109
+ [`@container (max-width: ${COLLAPSE_AT})`]: {
6110
+ width: "auto",
6111
+ alignSelf: "auto",
6112
+ margin: "-1.5rem -1.5rem 1rem",
6113
+ aspectRatio: "4 / 3"
6114
+ }
6115
+ });
6116
+ var Image3 = styles.styled("img")(({ theme }) => ({
6117
+ position: "absolute",
6118
+ inset: 0,
5864
6119
  width: "100%",
5865
6120
  height: "100%",
5866
6121
  objectFit: "cover",
5867
- display: "block"
5868
- });
5869
- var Placeholder2 = styles.styled("div")(({ theme }) => ({
6122
+ backgroundColor: theme.palette.action.hover
6123
+ }));
6124
+ var ImagePlaceholder3 = styles.styled("div")(({ theme }) => ({
6125
+ position: "absolute",
6126
+ inset: 0,
5870
6127
  width: "100%",
5871
6128
  height: "100%",
6129
+ backgroundColor: theme.palette.action.hover,
5872
6130
  display: "flex",
5873
6131
  alignItems: "center",
5874
6132
  justifyContent: "center",
5875
- backgroundColor: theme.palette.action.hover
6133
+ color: theme.palette.text.disabled
5876
6134
  }));
5877
- var Overlay = styles.styled("div")({
6135
+ var BadgeSlot2 = styles.styled("div")({
5878
6136
  position: "absolute",
5879
- inset: 0,
5880
- background: "linear-gradient(to bottom, rgba(0,0,0,0.3) 0%, transparent 50%)",
5881
- pointerEvents: "none"
6137
+ left: "0.75rem",
6138
+ top: "0.75rem",
6139
+ zIndex: 1
5882
6140
  });
5883
- var FileTextIcon = () => /* @__PURE__ */ jsxRuntime.jsx(ArticleIcon__default.default, { "aria-hidden": "true", style: { fontSize: 32, opacity: 0.3 } });
5884
- function toAspectRatioCss(ratio) {
5885
- if (typeof ratio === "number") return String(ratio);
5886
- return ratio.replace("/", " / ");
5887
- }
5888
- var PostCardImage = ({
5889
- src,
5890
- alt = "",
5891
- aspectRatio = "4/3",
5892
- overlay = false,
5893
- className,
5894
- style
5895
- }) => {
5896
- const [imgError, setImgError] = react.useState(false);
5897
- const showPlaceholder = !src || imgError;
5898
- return /* @__PURE__ */ jsxRuntime.jsxs(ImageWrapper, { $ar: toAspectRatioCss(aspectRatio), className, style, children: [
6141
+ var Content2 = styles.styled("div")({
6142
+ display: "flex",
6143
+ flexDirection: "column",
6144
+ flex: 1,
6145
+ minWidth: 0
6146
+ });
6147
+ var Name3 = styles.styled("h3")(({ theme }) => ({
6148
+ margin: 0,
6149
+ color: theme.palette.text.primary,
6150
+ fontFamily: theme.typography.fontFamily,
6151
+ fontSize: "1rem",
6152
+ fontWeight: 700,
6153
+ lineHeight: 1.4
6154
+ }));
6155
+ var Footer2 = styles.styled("div")({
6156
+ display: "grid",
6157
+ gap: "1rem",
6158
+ marginTop: "auto",
6159
+ paddingTop: "1rem"
6160
+ });
6161
+ var ProductCardHorizontal = react.forwardRef(
6162
+ ({
6163
+ name,
6164
+ imageUrl,
6165
+ imageAlt,
6166
+ price,
6167
+ originalPrice,
6168
+ currency,
6169
+ locale,
6170
+ lowestPrice,
6171
+ badge,
6172
+ badgeVariant = "success",
6173
+ rating,
6174
+ reviewCount,
6175
+ ctaLabel = "Dodaj do koszyka",
6176
+ onAddToCart,
6177
+ ...props
6178
+ }, ref) => /* @__PURE__ */ jsxRuntime.jsx(Card, { ref, variant: "default", padding: "md", rounded: "lg", ...props, children: /* @__PURE__ */ jsxRuntime.jsx(ContainerRoot, { children: /* @__PURE__ */ jsxRuntime.jsxs(Inner, { children: [
6179
+ /* @__PURE__ */ jsxRuntime.jsxs(ImageWrap3, { children: [
6180
+ imageUrl ? /* @__PURE__ */ jsxRuntime.jsx(Image3, { src: imageUrl, alt: imageAlt ?? name }) : /* @__PURE__ */ jsxRuntime.jsx(ImagePlaceholder3, { "aria-label": imageAlt ?? name, children: /* @__PURE__ */ jsxRuntime.jsx(ImageIcon__default.default, { style: { fontSize: 48 } }) }),
6181
+ badge && /* @__PURE__ */ jsxRuntime.jsx(BadgeSlot2, { children: /* @__PURE__ */ jsxRuntime.jsx(Badge2, { variant: badgeVariant, children: badge }) })
6182
+ ] }),
6183
+ /* @__PURE__ */ jsxRuntime.jsxs(Content2, { children: [
6184
+ /* @__PURE__ */ jsxRuntime.jsx(Name3, { children: name }),
6185
+ rating !== void 0 && /* @__PURE__ */ jsxRuntime.jsx(Rating, { value: rating, count: reviewCount, size: "sm" }),
6186
+ /* @__PURE__ */ jsxRuntime.jsx(
6187
+ Price,
6188
+ {
6189
+ price,
6190
+ originalPrice,
6191
+ currency,
6192
+ locale,
6193
+ lowestPrice,
6194
+ style: { marginTop: "0.5rem" }
6195
+ }
6196
+ ),
6197
+ /* @__PURE__ */ jsxRuntime.jsx(Footer2, { children: /* @__PURE__ */ jsxRuntime.jsx(
6198
+ Button,
6199
+ {
6200
+ fullWidth: true,
6201
+ onClick: (e) => {
6202
+ e.stopPropagation();
6203
+ onAddToCart?.();
6204
+ },
6205
+ children: ctaLabel
6206
+ }
6207
+ ) })
6208
+ ] })
6209
+ ] }) }) })
6210
+ );
6211
+ ProductCardHorizontal.displayName = "ProductCardHorizontal";
6212
+ var ImageWrapper = styles.styled("div", {
6213
+ shouldForwardProp: (prop) => prop !== "$ar"
6214
+ })(({ $ar }) => ({
6215
+ position: "relative",
6216
+ width: "100%",
6217
+ aspectRatio: $ar,
6218
+ overflow: "hidden",
6219
+ flexShrink: 0
6220
+ }));
6221
+ var Img = styles.styled("img")({
6222
+ width: "100%",
6223
+ height: "100%",
6224
+ objectFit: "cover",
6225
+ display: "block"
6226
+ });
6227
+ var Placeholder2 = styles.styled("div")(({ theme }) => ({
6228
+ width: "100%",
6229
+ height: "100%",
6230
+ display: "flex",
6231
+ alignItems: "center",
6232
+ justifyContent: "center",
6233
+ backgroundColor: theme.palette.action.hover
6234
+ }));
6235
+ var Overlay = styles.styled("div")({
6236
+ position: "absolute",
6237
+ inset: 0,
6238
+ background: "linear-gradient(to bottom, rgba(0,0,0,0.3) 0%, transparent 50%)",
6239
+ pointerEvents: "none"
6240
+ });
6241
+ var FileTextIcon = () => /* @__PURE__ */ jsxRuntime.jsx(ArticleIcon__default.default, { "aria-hidden": "true", style: { fontSize: 32, opacity: 0.3 } });
6242
+ function toAspectRatioCss(ratio) {
6243
+ if (typeof ratio === "number") return String(ratio);
6244
+ return ratio.replace("/", " / ");
6245
+ }
6246
+ var PostCardImage = ({
6247
+ src,
6248
+ alt = "",
6249
+ aspectRatio = "4/3",
6250
+ overlay = false,
6251
+ className,
6252
+ style
6253
+ }) => {
6254
+ const [imgError, setImgError] = react.useState(false);
6255
+ const showPlaceholder = !src || imgError;
6256
+ return /* @__PURE__ */ jsxRuntime.jsxs(ImageWrapper, { $ar: toAspectRatioCss(aspectRatio), className, style, children: [
5899
6257
  showPlaceholder ? /* @__PURE__ */ jsxRuntime.jsx(Placeholder2, { children: /* @__PURE__ */ jsxRuntime.jsx(FileTextIcon, {}) }) : /* @__PURE__ */ jsxRuntime.jsx(Img, { src, alt, onError: () => setImgError(true) }),
5900
6258
  overlay && !showPlaceholder && /* @__PURE__ */ jsxRuntime.jsx(Overlay, {})
5901
6259
  ] });
@@ -5971,7 +6329,7 @@ var StyledInner = styles.styled("div", {
5971
6329
  height: "100%",
5972
6330
  ...getLayoutStyles($variant)
5973
6331
  }));
5974
- var CardLink = styles.styled("a")(({ theme }) => ({
6332
+ var CardLink2 = styles.styled("a")(({ theme }) => ({
5975
6333
  display: "block",
5976
6334
  textDecoration: "none",
5977
6335
  color: "inherit",
@@ -6077,13 +6435,13 @@ var PostCard = react.forwardRef(
6077
6435
  isFeatured && showImage && /* @__PURE__ */ jsxRuntime.jsx(FeaturedImageWrapper, { children: /* @__PURE__ */ jsxRuntime.jsx(PostCardImage, { src: imageUrl, alt: imageAlt, aspectRatio: "16/9", overlay: true }) }),
6078
6436
  !isFeatured && showImage && (isHorizontal ? /* @__PURE__ */ jsxRuntime.jsx(HorizontalImageWrapper, { children: /* @__PURE__ */ jsxRuntime.jsx(PostCardImage, { src: imageUrl, alt: imageAlt, aspectRatio: "4/3" }) }) : /* @__PURE__ */ jsxRuntime.jsx(PostCardImage, { src: imageUrl, alt: imageAlt, aspectRatio: "16/9" })),
6079
6437
  /* @__PURE__ */ jsxRuntime.jsxs(StyledContent, { $variant: variant, children: [
6080
- category && /* @__PURE__ */ jsxRuntime.jsx("div", { children: /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: isFeatured ? "ghost" : "default", children: category }) }),
6438
+ category && /* @__PURE__ */ jsxRuntime.jsx("div", { children: /* @__PURE__ */ jsxRuntime.jsx(Badge2, { variant: isFeatured ? "ghost" : "default", children: category }) }),
6081
6439
  /* @__PURE__ */ jsxRuntime.jsx(StyledTitle, { className: "post-card-title", $featured: isFeatured, children: title }),
6082
6440
  excerpt && variant !== "compact" && !isFeatured && /* @__PURE__ */ jsxRuntime.jsx(StyledExcerpt, { children: excerpt }),
6083
6441
  (date || author) && /* @__PURE__ */ jsxRuntime.jsx(PostCardMeta, { date, author, inverted: isFeatured })
6084
6442
  ] })
6085
6443
  ] });
6086
- return /* @__PURE__ */ jsxRuntime.jsx(Card, { ref, variant: cardVariant, padding: "none", rounded: "lg", ...rest, children: /* @__PURE__ */ jsxRuntime.jsx(StyledRoot, { children: href ? /* @__PURE__ */ jsxRuntime.jsx(CardLink, { href, "aria-label": title, children: inner }) : inner }) });
6444
+ return /* @__PURE__ */ jsxRuntime.jsx(Card, { ref, variant: cardVariant, padding: "none", rounded: "lg", ...rest, children: /* @__PURE__ */ jsxRuntime.jsx(StyledRoot, { children: href ? /* @__PURE__ */ jsxRuntime.jsx(CardLink2, { href, "aria-label": title, children: inner }) : inner }) });
6087
6445
  }
6088
6446
  );
6089
6447
  PostCard.displayName = "PostCard";
@@ -6095,7 +6453,7 @@ var postCardVariants = [
6095
6453
  "featured",
6096
6454
  "compact"
6097
6455
  ];
6098
- var Root16 = styles.styled(Card)({
6456
+ var Root20 = styles.styled(Card)({
6099
6457
  display: "flex",
6100
6458
  flexDirection: "column",
6101
6459
  height: "100%"
@@ -6106,7 +6464,7 @@ var NameRow = styles.styled("div")({
6106
6464
  justifyContent: "space-between",
6107
6465
  marginBottom: "0.75rem"
6108
6466
  });
6109
- var Name2 = styles.styled("p")(({ theme }) => ({
6467
+ var Name4 = styles.styled("p")(({ theme }) => ({
6110
6468
  margin: 0,
6111
6469
  fontFamily: theme.typography.fontFamily,
6112
6470
  fontWeight: 600,
@@ -6226,10 +6584,10 @@ var PricingCard = react.forwardRef(
6226
6584
  }, ref) => {
6227
6585
  const resolvedCardVariant = cardVariant ?? (popular ? "gradient-primary" : "default");
6228
6586
  const resolvedCtaVariant = ctaVariant ?? (popular ? "primary" : "ghost");
6229
- return /* @__PURE__ */ jsxRuntime.jsxs(Root16, { ref, variant: resolvedCardVariant, padding: "lg", rounded: "lg", ...props, children: [
6587
+ return /* @__PURE__ */ jsxRuntime.jsxs(Root20, { ref, variant: resolvedCardVariant, padding: "lg", rounded: "lg", ...props, children: [
6230
6588
  /* @__PURE__ */ jsxRuntime.jsxs(NameRow, { children: [
6231
- /* @__PURE__ */ jsxRuntime.jsx(Name2, { children: name }),
6232
- popular && /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "default", children: popularLabel })
6589
+ /* @__PURE__ */ jsxRuntime.jsx(Name4, { children: name }),
6590
+ popular && /* @__PURE__ */ jsxRuntime.jsx(Badge2, { variant: "default", children: popularLabel })
6233
6591
  ] }),
6234
6592
  /* @__PURE__ */ jsxRuntime.jsxs(PriceRow2, { children: [
6235
6593
  currency && /* @__PURE__ */ jsxRuntime.jsx(Currency, { children: currency }),
@@ -6252,7 +6610,7 @@ var PricingCard = react.forwardRef(
6252
6610
  }
6253
6611
  );
6254
6612
  PricingCard.displayName = "PricingCard";
6255
- var Root17 = styles.styled(Card, {
6613
+ var Root21 = styles.styled(Card, {
6256
6614
  shouldForwardProp: (prop) => prop !== "$align"
6257
6615
  })(({ $align }) => ({
6258
6616
  textAlign: $align,
@@ -6282,14 +6640,14 @@ var Description3 = styles.styled("p")(({ theme }) => ({
6282
6640
  lineHeight: 1.5
6283
6641
  }));
6284
6642
  var StatCard = react.forwardRef(
6285
- ({ stat, cardVariant = "default", align = "center", ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(Root17, { ref, variant: cardVariant, padding: "lg", rounded: "lg", $align: align, ...props, children: [
6643
+ ({ stat, cardVariant = "default", align = "center", ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(Root21, { ref, variant: cardVariant, padding: "lg", rounded: "lg", $align: align, ...props, children: [
6286
6644
  /* @__PURE__ */ jsxRuntime.jsx(Value, { children: stat.value }),
6287
6645
  /* @__PURE__ */ jsxRuntime.jsx(Label3, { children: stat.label }),
6288
6646
  stat.description && /* @__PURE__ */ jsxRuntime.jsx(Description3, { children: stat.description })
6289
6647
  ] })
6290
6648
  );
6291
6649
  StatCard.displayName = "StatCard";
6292
- var Root18 = styles.styled(Card)({
6650
+ var Root22 = styles.styled(Card)({
6293
6651
  display: "flex",
6294
6652
  flexDirection: "column",
6295
6653
  gap: "1.25rem",
@@ -6315,7 +6673,7 @@ var Quote = styles.styled("blockquote")(({ theme }) => ({
6315
6673
  marginLeft: "0.125rem"
6316
6674
  }
6317
6675
  }));
6318
- var Footer2 = styles.styled("div")({
6676
+ var Footer3 = styles.styled("div")({
6319
6677
  display: "flex",
6320
6678
  alignItems: "center",
6321
6679
  gap: "0.75rem"
@@ -6346,10 +6704,10 @@ var AuthorRole = styles.styled("p")(({ theme }) => ({
6346
6704
  var TestimonialCard = react.forwardRef(
6347
6705
  ({ testimonial, cardVariant = "default", ...props }, ref) => {
6348
6706
  const initials = testimonial.authorInitials ?? testimonial.authorName.split(" ").filter(Boolean).slice(0, 2).map((p) => p[0]).join("").toUpperCase();
6349
- return /* @__PURE__ */ jsxRuntime.jsxs(Root18, { ref, variant: cardVariant, padding: "lg", rounded: "lg", ...props, children: [
6707
+ return /* @__PURE__ */ jsxRuntime.jsxs(Root22, { ref, variant: cardVariant, padding: "lg", rounded: "lg", ...props, children: [
6350
6708
  testimonial.rating && /* @__PURE__ */ jsxRuntime.jsx(Rating, { value: testimonial.rating, readonly: true, size: "sm" }),
6351
6709
  /* @__PURE__ */ jsxRuntime.jsx(Quote, { children: testimonial.quote }),
6352
- /* @__PURE__ */ jsxRuntime.jsxs(Footer2, { children: [
6710
+ /* @__PURE__ */ jsxRuntime.jsxs(Footer3, { children: [
6353
6711
  testimonial.authorAvatarUrl ? /* @__PURE__ */ jsxRuntime.jsx(AvatarImage, { src: testimonial.authorAvatarUrl, alt: testimonial.authorName }) : /* @__PURE__ */ jsxRuntime.jsx(Avatar, { initials, size: "md", color: "primary" }),
6354
6712
  /* @__PURE__ */ jsxRuntime.jsxs(AuthorInfo, { children: [
6355
6713
  /* @__PURE__ */ jsxRuntime.jsx(AuthorName, { children: testimonial.authorName }),
@@ -6360,7 +6718,7 @@ var TestimonialCard = react.forwardRef(
6360
6718
  }
6361
6719
  );
6362
6720
  TestimonialCard.displayName = "TestimonialCard";
6363
- var Root19 = styles.styled(Card)(({ theme }) => ({
6721
+ var Root23 = styles.styled(Card)(({ theme }) => ({
6364
6722
  display: "flex",
6365
6723
  alignItems: "center",
6366
6724
  gap: "1rem",
@@ -6379,10 +6737,10 @@ var AvatarImage2 = styles.styled("img")({
6379
6737
  borderRadius: "50%",
6380
6738
  objectFit: "cover"
6381
6739
  });
6382
- var Content = styles.styled("div")({
6740
+ var Content3 = styles.styled("div")({
6383
6741
  minWidth: 0
6384
6742
  });
6385
- var Name3 = styles.styled("h3")(({ theme }) => ({
6743
+ var Name5 = styles.styled("h3")(({ theme }) => ({
6386
6744
  margin: 0,
6387
6745
  color: theme.palette.text.primary,
6388
6746
  fontFamily: theme.typography.fontFamily,
@@ -6404,10 +6762,10 @@ function getInitials(member) {
6404
6762
  return member.name.split(" ").filter(Boolean).slice(0, 2).map((part) => part[0]).join("").toUpperCase();
6405
6763
  }
6406
6764
  var TeamMemberCard = react.forwardRef(
6407
- ({ member, cardVariant = "default", ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(Root19, { ref, variant: cardVariant, padding: "lg", rounded: "lg", ...props, children: [
6765
+ ({ member, cardVariant = "default", ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(Root23, { ref, variant: cardVariant, padding: "lg", rounded: "lg", ...props, children: [
6408
6766
  member.avatarUrl ? /* @__PURE__ */ jsxRuntime.jsx(AvatarImage2, { src: member.avatarUrl, alt: member.avatarAlt ?? member.name }) : /* @__PURE__ */ jsxRuntime.jsx(Avatar, { initials: getInitials(member), size: "xl", color: member.avatarColor ?? "primary" }),
6409
- /* @__PURE__ */ jsxRuntime.jsxs(Content, { children: [
6410
- /* @__PURE__ */ jsxRuntime.jsx(Name3, { children: member.name }),
6767
+ /* @__PURE__ */ jsxRuntime.jsxs(Content3, { children: [
6768
+ /* @__PURE__ */ jsxRuntime.jsx(Name5, { children: member.name }),
6411
6769
  /* @__PURE__ */ jsxRuntime.jsx(Role, { children: member.role })
6412
6770
  ] })
6413
6771
  ] })
@@ -6585,8 +6943,143 @@ function CompareTool({
6585
6943
  }) })
6586
6944
  ] }) });
6587
6945
  }
6946
+ function calcTimeLeft(target) {
6947
+ const diff = new Date(target).getTime() - Date.now();
6948
+ if (diff <= 0) return null;
6949
+ return {
6950
+ days: Math.floor(diff / 864e5),
6951
+ hours: Math.floor(diff % 864e5 / 36e5),
6952
+ minutes: Math.floor(diff % 36e5 / 6e4),
6953
+ seconds: Math.floor(diff % 6e4 / 1e3)
6954
+ };
6955
+ }
6956
+ function pad(n) {
6957
+ return String(n).padStart(2, "0");
6958
+ }
6959
+ var Root24 = styles.styled("div", {
6960
+ shouldForwardProp: (prop) => prop !== "$variant"
6961
+ })(({ theme, $variant }) => ({
6962
+ display: "inline-flex",
6963
+ alignItems: "center",
6964
+ justifyContent: "space-between",
6965
+ flexWrap: "wrap",
6966
+ gap: "0.5rem",
6967
+ fontFamily: theme.typography.fontFamily,
6968
+ ...$variant === "card" && {
6969
+ backgroundColor: theme.palette.background.paper,
6970
+ border: `1px solid ${theme.palette.divider}`,
6971
+ borderRadius: theme.shape.borderRadius,
6972
+ padding: "1rem 1.5rem"
6973
+ },
6974
+ ...$variant === "banner" && {
6975
+ backgroundColor: theme.palette.error.main,
6976
+ color: "#fff",
6977
+ borderRadius: theme.shape.borderRadius,
6978
+ padding: "0.75rem 1.25rem"
6979
+ }
6980
+ }));
6981
+ var TimerLabel = styles.styled("span", {
6982
+ shouldForwardProp: (prop) => prop !== "$variant"
6983
+ })(({ theme, $variant }) => ({
6984
+ fontSize: "0.875rem",
6985
+ fontWeight: 600,
6986
+ color: $variant === "banner" ? "rgba(255,255,255,0.85)" : theme.palette.text.secondary,
6987
+ marginRight: "0.25rem"
6988
+ }));
6989
+ var Segments = styles.styled("div")({
6990
+ display: "flex",
6991
+ alignItems: "center",
6992
+ gap: "0.25rem"
6993
+ });
6994
+ var Segment = styles.styled("div", {
6995
+ shouldForwardProp: (prop) => prop !== "$variant"
6996
+ })(({ theme, $variant }) => ({
6997
+ display: "flex",
6998
+ flexDirection: "column",
6999
+ alignItems: "center",
7000
+ minWidth: "2.5rem",
7001
+ ...$variant === "card" && {
7002
+ backgroundColor: theme.palette.action.hover,
7003
+ borderRadius: "0.375rem",
7004
+ padding: "0.375rem 0.5rem"
7005
+ }
7006
+ }));
7007
+ var Value2 = styles.styled("span", {
7008
+ shouldForwardProp: (prop) => prop !== "$variant"
7009
+ })(({ $variant }) => ({
7010
+ fontSize: $variant === "inline" ? "1rem" : "1.5rem",
7011
+ fontWeight: 700,
7012
+ lineHeight: 1,
7013
+ color: $variant === "banner" ? "#fff" : "inherit"
7014
+ }));
7015
+ var Unit = styles.styled("span", {
7016
+ shouldForwardProp: (prop) => prop !== "$variant"
7017
+ })(({ theme, $variant }) => ({
7018
+ fontSize: "0.6875rem",
7019
+ color: $variant === "banner" ? "rgba(255,255,255,0.7)" : theme.palette.text.secondary,
7020
+ marginTop: "0.125rem"
7021
+ }));
7022
+ var Colon = styles.styled("span", {
7023
+ shouldForwardProp: (prop) => prop !== "$variant"
7024
+ })(({ theme, $variant }) => ({
7025
+ fontSize: $variant === "inline" ? "1rem" : "1.5rem",
7026
+ fontWeight: 700,
7027
+ color: $variant === "banner" ? "rgba(255,255,255,0.6)" : theme.palette.text.disabled,
7028
+ alignSelf: $variant === "card" ? "flex-start" : "center",
7029
+ marginTop: $variant === "card" ? "0.375rem" : 0
7030
+ }));
7031
+ var UNITS = ["dni", "godz", "min", "sek"];
7032
+ var CountdownTimer = react.forwardRef(
7033
+ ({
7034
+ targetDate,
7035
+ variant = "inline",
7036
+ label,
7037
+ expiredLabel = "Promocja zako\u0144czona",
7038
+ onExpire,
7039
+ ...props
7040
+ }, ref) => {
7041
+ const [timeLeft, setTimeLeft] = react.useState(() => calcTimeLeft(targetDate));
7042
+ react.useEffect(() => {
7043
+ const id = setInterval(() => {
7044
+ const tl = calcTimeLeft(targetDate);
7045
+ setTimeLeft(tl);
7046
+ if (!tl) {
7047
+ clearInterval(id);
7048
+ onExpire?.();
7049
+ }
7050
+ }, 1e3);
7051
+ return () => clearInterval(id);
7052
+ }, [targetDate, onExpire]);
7053
+ if (!timeLeft) {
7054
+ return /* @__PURE__ */ jsxRuntime.jsx(Root24, { ref, $variant: variant, ...props, children: /* @__PURE__ */ jsxRuntime.jsx(TimerLabel, { $variant: variant, children: expiredLabel }) });
7055
+ }
7056
+ const parts = [timeLeft.days, timeLeft.hours, timeLeft.minutes, timeLeft.seconds];
7057
+ return /* @__PURE__ */ jsxRuntime.jsxs(
7058
+ Root24,
7059
+ {
7060
+ ref,
7061
+ $variant: variant,
7062
+ "aria-live": "polite",
7063
+ "aria-label": `Czas do ko\u0144ca promocji`,
7064
+ ...props,
7065
+ children: [
7066
+ label && /* @__PURE__ */ jsxRuntime.jsx(TimerLabel, { $variant: variant, children: label }),
7067
+ /* @__PURE__ */ jsxRuntime.jsx(Segments, { children: parts.map((val, i) => /* @__PURE__ */ jsxRuntime.jsxs("div", { style: { display: "contents" }, children: [
7068
+ i > 0 && /* @__PURE__ */ jsxRuntime.jsx(Colon, { $variant: variant, children: ":" }),
7069
+ /* @__PURE__ */ jsxRuntime.jsxs(Segment, { $variant: variant, children: [
7070
+ /* @__PURE__ */ jsxRuntime.jsx(Value2, { $variant: variant, children: pad(val) }),
7071
+ variant !== "inline" && /* @__PURE__ */ jsxRuntime.jsx(Unit, { $variant: variant, children: UNITS[i] })
7072
+ ] })
7073
+ ] }, UNITS[i])) })
7074
+ ]
7075
+ }
7076
+ );
7077
+ }
7078
+ );
7079
+ CountdownTimer.displayName = "CountdownTimer";
7080
+ var countdownTimerVariants = ["inline", "card", "banner"];
6588
7081
  var spin2 = styles.keyframes`to { transform: rotate(360deg); }`;
6589
- var Root20 = styles.styled("div")({
7082
+ var Root25 = styles.styled("div")({
6590
7083
  display: "flex",
6591
7084
  flexDirection: "column",
6592
7085
  gap: "0.5rem"
@@ -6733,7 +7226,7 @@ function CouponInput({
6733
7226
  if (e.key === "Enter") handleApply();
6734
7227
  };
6735
7228
  if (appliedCode) {
6736
- return /* @__PURE__ */ jsxRuntime.jsxs(Root20, { className, children: [
7229
+ return /* @__PURE__ */ jsxRuntime.jsxs(Root25, { className, children: [
6737
7230
  /* @__PURE__ */ jsxRuntime.jsxs(AppliedRow, { role: "status", "aria-label": `Kod rabatowy ${appliedCode} zastosowany`, children: [
6738
7231
  /* @__PURE__ */ jsxRuntime.jsx(AppliedCode, { children: appliedCode }),
6739
7232
  onRemove && /* @__PURE__ */ jsxRuntime.jsx(
@@ -6752,7 +7245,7 @@ function CouponInput({
6752
7245
  ] })
6753
7246
  ] });
6754
7247
  }
6755
- return /* @__PURE__ */ jsxRuntime.jsxs(Root20, { className, children: [
7248
+ return /* @__PURE__ */ jsxRuntime.jsxs(Root25, { className, children: [
6756
7249
  /* @__PURE__ */ jsxRuntime.jsxs(InputRow, { $hasError: Boolean(error), $applied: false, children: [
6757
7250
  /* @__PURE__ */ jsxRuntime.jsx(
6758
7251
  Input,
@@ -6784,7 +7277,82 @@ function CouponInput({
6784
7277
  error && /* @__PURE__ */ jsxRuntime.jsx(Message, { $type: "error", id: errorId, role: "alert", children: error })
6785
7278
  ] });
6786
7279
  }
6787
- var Root21 = styles.styled("div")({
7280
+ var Root26 = styles.styled("div")({
7281
+ display: "flex",
7282
+ flexDirection: "column",
7283
+ gap: "0.5rem"
7284
+ });
7285
+ var GroupLabel = styles.styled("span")(({ theme }) => ({
7286
+ fontSize: "0.875rem",
7287
+ fontWeight: 600,
7288
+ color: theme.palette.text.primary,
7289
+ fontFamily: theme.typography.fontFamily
7290
+ }));
7291
+ var MethodLabel = styles.styled("label", {
7292
+ shouldForwardProp: (prop) => prop !== "$selected"
7293
+ })(({ theme, $selected }) => ({
7294
+ display: "flex",
7295
+ alignItems: "center",
7296
+ gap: "0.875rem",
7297
+ padding: "0.875rem 1rem",
7298
+ border: `${$selected ? 2 : 1}px solid ${$selected ? theme.palette.primary.main : theme.palette.divider}`,
7299
+ borderRadius: theme.shape.borderRadius,
7300
+ cursor: "pointer",
7301
+ backgroundColor: $selected ? `${theme.palette.primary.main}08` : theme.palette.background.paper,
7302
+ transition: "border-color 150ms ease, background-color 150ms ease",
7303
+ fontFamily: theme.typography.fontFamily,
7304
+ "&:hover": { borderColor: theme.palette.primary.main }
7305
+ }));
7306
+ var Radio = styles.styled("input")({
7307
+ width: "1rem",
7308
+ height: "1rem",
7309
+ flexShrink: 0,
7310
+ cursor: "pointer"
7311
+ });
7312
+ var IconWrap = styles.styled("span")(({ theme }) => ({
7313
+ color: theme.palette.text.secondary,
7314
+ display: "flex"
7315
+ }));
7316
+ var Info = styles.styled("div")({ flex: 1 });
7317
+ var Name6 = styles.styled("div")(({ theme }) => ({
7318
+ fontSize: "0.9375rem",
7319
+ fontWeight: 600,
7320
+ color: theme.palette.text.primary
7321
+ }));
7322
+ var Desc = styles.styled("div")(({ theme }) => ({
7323
+ fontSize: "0.8125rem",
7324
+ color: theme.palette.text.secondary,
7325
+ marginTop: "0.125rem"
7326
+ }));
7327
+ var PaymentMethodSelector = react.forwardRef(
7328
+ ({ methods, value, onChange, label = "Metoda p\u0142atno\u015Bci", disabled, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(Root26, { ref, ...props, children: [
7329
+ /* @__PURE__ */ jsxRuntime.jsx(GroupLabel, { children: label }),
7330
+ methods.map((method) => {
7331
+ const selected = value === method.id;
7332
+ return /* @__PURE__ */ jsxRuntime.jsxs(MethodLabel, { $selected: selected, children: [
7333
+ /* @__PURE__ */ jsxRuntime.jsx(
7334
+ Radio,
7335
+ {
7336
+ type: "radio",
7337
+ name: "payment",
7338
+ value: method.id,
7339
+ checked: selected,
7340
+ disabled,
7341
+ onChange: () => onChange?.(method.id),
7342
+ "aria-label": method.label
7343
+ }
7344
+ ),
7345
+ /* @__PURE__ */ jsxRuntime.jsx(IconWrap, { children: method.icon ?? /* @__PURE__ */ jsxRuntime.jsx(CreditCardOutlinedIcon__default.default, { "aria-hidden": true }) }),
7346
+ /* @__PURE__ */ jsxRuntime.jsxs(Info, { children: [
7347
+ /* @__PURE__ */ jsxRuntime.jsx(Name6, { children: method.label }),
7348
+ method.description && /* @__PURE__ */ jsxRuntime.jsx(Desc, { children: method.description })
7349
+ ] })
7350
+ ] }, method.id);
7351
+ })
7352
+ ] })
7353
+ );
7354
+ PaymentMethodSelector.displayName = "PaymentMethodSelector";
7355
+ var Root27 = styles.styled("div")({
6788
7356
  display: "grid",
6789
7357
  gap: "0.75rem"
6790
7358
  });
@@ -6822,7 +7390,7 @@ var ProductGallery = react.forwardRef(
6822
7390
  if (!activeImage) {
6823
7391
  return null;
6824
7392
  }
6825
- return /* @__PURE__ */ jsxRuntime.jsxs(Root21, { ref, ...props, children: [
7393
+ return /* @__PURE__ */ jsxRuntime.jsxs(Root27, { ref, ...props, children: [
6826
7394
  /* @__PURE__ */ jsxRuntime.jsx(AspectRatio, { ratio: "4/3", children: /* @__PURE__ */ jsxRuntime.jsx(MainImage, { src: activeImage.src, alt: activeImage.alt }) }),
6827
7395
  images.length > 1 && /* @__PURE__ */ jsxRuntime.jsx(Thumbnails, { children: images.map((image, index) => /* @__PURE__ */ jsxRuntime.jsx(
6828
7396
  ThumbnailButton,
@@ -6840,7 +7408,7 @@ var ProductGallery = react.forwardRef(
6840
7408
  }
6841
7409
  );
6842
7410
  ProductGallery.displayName = "ProductGallery";
6843
- var Root22 = styles.styled("div")(({ theme, $variant }) => ({
7411
+ var Root28 = styles.styled("div")(({ theme, $variant }) => ({
6844
7412
  display: "flex",
6845
7413
  alignItems: "center",
6846
7414
  justifyContent: "center",
@@ -6860,14 +7428,14 @@ var Link = styles.styled("a")(({ theme }) => ({
6860
7428
  textUnderlineOffset: "0.2em"
6861
7429
  }));
6862
7430
  var PromoStrip = react.forwardRef(
6863
- ({ message, actionLabel, href, variant = "info", ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(Root22, { ref, $variant: variant, ...props, children: [
7431
+ ({ message, actionLabel, href, variant = "info", ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(Root28, { ref, $variant: variant, ...props, children: [
6864
7432
  /* @__PURE__ */ jsxRuntime.jsx("span", { children: message }),
6865
7433
  actionLabel && href && /* @__PURE__ */ jsxRuntime.jsx(Link, { href, children: actionLabel })
6866
7434
  ] })
6867
7435
  );
6868
7436
  PromoStrip.displayName = "PromoStrip";
6869
7437
  var promoStripVariants = ["info", "success", "warning"];
6870
- var Root23 = styles.styled("div")(({ theme }) => ({
7438
+ var Root29 = styles.styled("div")(({ theme }) => ({
6871
7439
  display: "inline-grid",
6872
7440
  gridTemplateColumns: "2.25rem 3rem 2.25rem",
6873
7441
  alignItems: "center",
@@ -6889,7 +7457,7 @@ var Control = styles.styled("button")(({ theme }) => ({
6889
7457
  cursor: "not-allowed"
6890
7458
  }
6891
7459
  }));
6892
- var Value2 = styles.styled("span")(({ theme }) => ({
7460
+ var Value3 = styles.styled("span")(({ theme }) => ({
6893
7461
  display: "inline-flex",
6894
7462
  alignItems: "center",
6895
7463
  justifyContent: "center",
@@ -6903,7 +7471,7 @@ var QuantitySelector = react.forwardRef(
6903
7471
  ({ value, min = 1, max = 99, step = 1, disabled = false, onChange, ...props }, ref) => {
6904
7472
  const decrease = Math.max(min, value - step);
6905
7473
  const increase = Math.min(max, value + step);
6906
- return /* @__PURE__ */ jsxRuntime.jsxs(Root23, { ref, "aria-label": "Wybierz ilo\u015B\u0107", ...props, children: [
7474
+ return /* @__PURE__ */ jsxRuntime.jsxs(Root29, { ref, "aria-label": "Wybierz ilo\u015B\u0107", ...props, children: [
6907
7475
  /* @__PURE__ */ jsxRuntime.jsx(
6908
7476
  Control,
6909
7477
  {
@@ -6914,7 +7482,7 @@ var QuantitySelector = react.forwardRef(
6914
7482
  children: "\u2212"
6915
7483
  }
6916
7484
  ),
6917
- /* @__PURE__ */ jsxRuntime.jsx(Value2, { "aria-live": "polite", children: value }),
7485
+ /* @__PURE__ */ jsxRuntime.jsx(Value3, { "aria-live": "polite", children: value }),
6918
7486
  /* @__PURE__ */ jsxRuntime.jsx(
6919
7487
  Control,
6920
7488
  {
@@ -6929,6 +7497,207 @@ var QuantitySelector = react.forwardRef(
6929
7497
  }
6930
7498
  );
6931
7499
  QuantitySelector.displayName = "QuantitySelector";
7500
+ var Root30 = styles.styled("div")({
7501
+ display: "flex",
7502
+ flexDirection: "column",
7503
+ gap: "0.5rem"
7504
+ });
7505
+ var GroupLabel2 = styles.styled("span")(({ theme }) => ({
7506
+ fontSize: "0.875rem",
7507
+ fontWeight: 600,
7508
+ color: theme.palette.text.primary,
7509
+ fontFamily: theme.typography.fontFamily
7510
+ }));
7511
+ var OptionLabel = styles.styled("label", {
7512
+ shouldForwardProp: (prop) => prop !== "$selected"
7513
+ })(({ theme, $selected }) => ({
7514
+ display: "flex",
7515
+ alignItems: "center",
7516
+ gap: "0.875rem",
7517
+ padding: "0.875rem 1rem",
7518
+ border: `${$selected ? 2 : 1}px solid ${$selected ? theme.palette.primary.main : theme.palette.divider}`,
7519
+ borderRadius: theme.shape.borderRadius,
7520
+ cursor: "pointer",
7521
+ backgroundColor: $selected ? `${theme.palette.primary.main}08` : theme.palette.background.paper,
7522
+ transition: "border-color 150ms ease, background-color 150ms ease",
7523
+ fontFamily: theme.typography.fontFamily,
7524
+ "&:hover": {
7525
+ borderColor: theme.palette.primary.main
7526
+ }
7527
+ }));
7528
+ var Radio2 = styles.styled("input")({
7529
+ width: "1rem",
7530
+ height: "1rem",
7531
+ flexShrink: 0,
7532
+ cursor: "pointer"
7533
+ });
7534
+ var IconWrap2 = styles.styled("span")(({ theme }) => ({
7535
+ color: theme.palette.text.secondary,
7536
+ display: "flex"
7537
+ }));
7538
+ var Info2 = styles.styled("div")({ flex: 1 });
7539
+ var Name7 = styles.styled("div")(({ theme }) => ({
7540
+ fontSize: "0.9375rem",
7541
+ fontWeight: 600,
7542
+ color: theme.palette.text.primary
7543
+ }));
7544
+ var Desc2 = styles.styled("div")(({ theme }) => ({
7545
+ fontSize: "0.8125rem",
7546
+ color: theme.palette.text.secondary,
7547
+ marginTop: "0.125rem"
7548
+ }));
7549
+ var Price3 = styles.styled("div", {
7550
+ shouldForwardProp: (prop) => prop !== "$selected"
7551
+ })(({ theme, $selected }) => ({
7552
+ fontSize: "0.9375rem",
7553
+ fontWeight: 700,
7554
+ color: $selected ? theme.palette.primary.main : theme.palette.text.primary,
7555
+ whiteSpace: "nowrap"
7556
+ }));
7557
+ var ShippingSelector = react.forwardRef(
7558
+ ({ options, value, onChange, label = "Metoda dostawy", disabled, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(Root30, { ref, ...props, children: [
7559
+ /* @__PURE__ */ jsxRuntime.jsx(GroupLabel2, { children: label }),
7560
+ options.map((opt) => {
7561
+ const selected = value === opt.id;
7562
+ return /* @__PURE__ */ jsxRuntime.jsxs(OptionLabel, { $selected: selected, children: [
7563
+ /* @__PURE__ */ jsxRuntime.jsx(
7564
+ Radio2,
7565
+ {
7566
+ type: "radio",
7567
+ name: "shipping",
7568
+ value: opt.id,
7569
+ checked: selected,
7570
+ disabled,
7571
+ onChange: () => onChange?.(opt.id),
7572
+ "aria-label": opt.label
7573
+ }
7574
+ ),
7575
+ /* @__PURE__ */ jsxRuntime.jsx(IconWrap2, { children: opt.icon ?? /* @__PURE__ */ jsxRuntime.jsx(LocalShippingOutlinedIcon__default.default, { "aria-hidden": true }) }),
7576
+ /* @__PURE__ */ jsxRuntime.jsxs(Info2, { children: [
7577
+ /* @__PURE__ */ jsxRuntime.jsx(Name7, { children: opt.label }),
7578
+ (opt.description || opt.estimatedDays) && /* @__PURE__ */ jsxRuntime.jsxs(Desc2, { children: [
7579
+ opt.description,
7580
+ opt.estimatedDays && ` \xB7 ${opt.estimatedDays}`
7581
+ ] })
7582
+ ] }),
7583
+ /* @__PURE__ */ jsxRuntime.jsx(Price3, { $selected: selected, children: opt.price })
7584
+ ] }, opt.id);
7585
+ })
7586
+ ] })
7587
+ );
7588
+ ShippingSelector.displayName = "ShippingSelector";
7589
+ var DEFAULT_SORT_OPTIONS = [
7590
+ { value: "popular", label: "Najpopularniejsze" },
7591
+ { value: "newest", label: "Najnowsze" },
7592
+ { value: "price-asc", label: "Cena rosn\u0105co" },
7593
+ { value: "price-desc", label: "Cena malej\u0105co" }
7594
+ ];
7595
+ var Root31 = styles.styled("div")(({ theme }) => ({
7596
+ display: "flex",
7597
+ alignItems: "center",
7598
+ justifyContent: "space-between",
7599
+ flexWrap: "wrap",
7600
+ gap: "0.75rem",
7601
+ padding: "0.75rem 0",
7602
+ borderBottom: `1px solid ${theme.palette.divider}`,
7603
+ fontFamily: theme.typography.fontFamily
7604
+ }));
7605
+ var TotalLabel = styles.styled("span")(({ theme }) => ({
7606
+ fontSize: "0.875rem",
7607
+ color: theme.palette.text.secondary
7608
+ }));
7609
+ var Controls = styles.styled("div")({
7610
+ display: "flex",
7611
+ alignItems: "center",
7612
+ gap: "0.75rem"
7613
+ });
7614
+ var SortLabel = styles.styled("label")(({ theme }) => ({
7615
+ fontSize: "0.875rem",
7616
+ color: theme.palette.text.secondary
7617
+ }));
7618
+ var Select = styles.styled("select")(({ theme }) => ({
7619
+ padding: "0.375rem 2rem 0.375rem 0.625rem",
7620
+ border: `1px solid ${theme.palette.divider}`,
7621
+ borderRadius: theme.shape.borderRadius,
7622
+ backgroundColor: theme.palette.background.paper,
7623
+ color: theme.palette.text.primary,
7624
+ fontFamily: theme.typography.fontFamily,
7625
+ fontSize: "0.875rem",
7626
+ cursor: "pointer",
7627
+ appearance: "none",
7628
+ 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")`,
7629
+ backgroundRepeat: "no-repeat",
7630
+ backgroundPosition: "right 0.5rem center",
7631
+ "&:focus": { outline: `3px solid ${theme.palette.primary.main}`, outlineOffset: "2px" }
7632
+ }));
7633
+ var ViewToggle = styles.styled("div")(({ theme }) => ({
7634
+ display: "flex",
7635
+ border: `1px solid ${theme.palette.divider}`,
7636
+ borderRadius: theme.shape.borderRadius,
7637
+ overflow: "hidden"
7638
+ }));
7639
+ var ViewButton = styles.styled("button", {
7640
+ shouldForwardProp: (prop) => prop !== "$active"
7641
+ })(({ theme, $active }) => ({
7642
+ appearance: "none",
7643
+ border: "none",
7644
+ cursor: "pointer",
7645
+ display: "flex",
7646
+ alignItems: "center",
7647
+ padding: "0.375rem 0.5rem",
7648
+ backgroundColor: $active ? theme.palette.primary.main : "transparent",
7649
+ color: $active ? theme.palette.primary.contrastText : theme.palette.text.secondary,
7650
+ transition: "background-color 150ms ease, color 150ms ease",
7651
+ "&:hover:not(:disabled)": {
7652
+ backgroundColor: $active ? theme.palette.primary.dark : theme.palette.action.hover
7653
+ },
7654
+ "&:focus-visible": { outline: `3px solid ${theme.palette.primary.main}`, outlineOffset: "-1px" }
7655
+ }));
7656
+ var SortBar = react.forwardRef(
7657
+ ({
7658
+ total,
7659
+ totalLabel,
7660
+ sortOptions = DEFAULT_SORT_OPTIONS,
7661
+ sortValue,
7662
+ onSortChange,
7663
+ viewMode = "grid",
7664
+ onViewModeChange,
7665
+ showViewToggle = true,
7666
+ ...props
7667
+ }, ref) => {
7668
+ const resolvedLabel = totalLabel ?? (total !== void 0 ? `Znaleziono ${total} produkt\xF3w` : void 0);
7669
+ return /* @__PURE__ */ jsxRuntime.jsxs(Root31, { ref, ...props, children: [
7670
+ resolvedLabel && /* @__PURE__ */ jsxRuntime.jsx(TotalLabel, { children: resolvedLabel }),
7671
+ /* @__PURE__ */ jsxRuntime.jsxs(Controls, { children: [
7672
+ sortOptions.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
7673
+ /* @__PURE__ */ jsxRuntime.jsx(SortLabel, { htmlFor: "sort-select", children: "Sortuj:" }),
7674
+ /* @__PURE__ */ jsxRuntime.jsx(
7675
+ Select,
7676
+ {
7677
+ id: "sort-select",
7678
+ value: sortValue ?? "",
7679
+ onChange: (e) => onSortChange?.(e.target.value),
7680
+ children: sortOptions.map((opt) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: opt.value, children: opt.label }, opt.value))
7681
+ }
7682
+ )
7683
+ ] }),
7684
+ showViewToggle && /* @__PURE__ */ jsxRuntime.jsx(ViewToggle, { "aria-label": "Tryb widoku", children: ["grid", "list"].map((mode) => /* @__PURE__ */ jsxRuntime.jsx(
7685
+ ViewButton,
7686
+ {
7687
+ type: "button",
7688
+ $active: viewMode === mode,
7689
+ "aria-label": mode === "grid" ? "Widok siatki" : "Widok listy",
7690
+ "aria-pressed": viewMode === mode,
7691
+ onClick: () => onViewModeChange?.(mode),
7692
+ children: mode === "grid" ? /* @__PURE__ */ jsxRuntime.jsx(GridViewIcon__default.default, { "aria-hidden": true, style: { fontSize: 16 } }) : /* @__PURE__ */ jsxRuntime.jsx(ViewListIcon__default.default, { "aria-hidden": true, style: { fontSize: 16 } })
7693
+ },
7694
+ mode
7695
+ )) })
7696
+ ] })
7697
+ ] });
7698
+ }
7699
+ );
7700
+ SortBar.displayName = "SortBar";
6932
7701
  var COLOR_MAP = {
6933
7702
  "in-stock": "success",
6934
7703
  "low-stock": "warning",
@@ -6950,7 +7719,7 @@ function getDefaultLabel(status, count) {
6950
7719
  return "Dost\u0119pny na zam\xF3wienie";
6951
7720
  }
6952
7721
  }
6953
- var Root24 = styles.styled("div", {
7722
+ var Root32 = styles.styled("div", {
6954
7723
  shouldForwardProp: (p) => p !== "$color" && p !== "$size"
6955
7724
  })(({ theme, $color, $size }) => {
6956
7725
  const colorMap = {
@@ -6983,29 +7752,132 @@ var Dot2 = styles.styled("span", {
6983
7752
  width: "0.5rem",
6984
7753
  height: "0.5rem",
6985
7754
  borderRadius: "50%",
6986
- backgroundColor: colorMap[$color],
6987
- flexShrink: 0
6988
- };
6989
- });
6990
- var StockStatus = react.forwardRef(
6991
- ({ status, count, label, showIcon = true, size = "md", ...props }, ref) => {
6992
- const color = COLOR_MAP[status];
6993
- const text = label ?? getDefaultLabel(status, count);
6994
- return /* @__PURE__ */ jsxRuntime.jsxs(Root24, { ref, $color: color, $size: size, role: "status", "aria-label": text, ...props, children: [
6995
- showIcon && /* @__PURE__ */ jsxRuntime.jsx(Dot2, { $color: color, "aria-hidden": "true" }),
6996
- /* @__PURE__ */ jsxRuntime.jsx("span", { children: text })
6997
- ] });
7755
+ backgroundColor: colorMap[$color],
7756
+ flexShrink: 0
7757
+ };
7758
+ });
7759
+ var StockStatus = react.forwardRef(
7760
+ ({ status, count, label, showIcon = true, size = "md", ...props }, ref) => {
7761
+ const color = COLOR_MAP[status];
7762
+ const text = label ?? getDefaultLabel(status, count);
7763
+ return /* @__PURE__ */ jsxRuntime.jsxs(Root32, { ref, $color: color, $size: size, role: "status", "aria-label": text, ...props, children: [
7764
+ showIcon && /* @__PURE__ */ jsxRuntime.jsx(Dot2, { $color: color, "aria-hidden": "true" }),
7765
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: text })
7766
+ ] });
7767
+ }
7768
+ );
7769
+ StockStatus.displayName = "StockStatus";
7770
+ var stockStatusValues = [
7771
+ "in-stock",
7772
+ "low-stock",
7773
+ "out-of-stock",
7774
+ "preorder",
7775
+ "backorder"
7776
+ ];
7777
+ var Root33 = styles.styled("div")({
7778
+ display: "flex",
7779
+ flexDirection: "column",
7780
+ gap: "0.5rem"
7781
+ });
7782
+ var Label4 = styles.styled("span")(({ theme }) => ({
7783
+ fontSize: "0.875rem",
7784
+ fontWeight: 600,
7785
+ color: theme.palette.text.primary,
7786
+ fontFamily: theme.typography.fontFamily
7787
+ }));
7788
+ var OptionsRow = styles.styled("div")({
7789
+ display: "flex",
7790
+ flexWrap: "wrap",
7791
+ gap: "0.5rem"
7792
+ });
7793
+ var OptionButton = styles.styled("button", {
7794
+ shouldForwardProp: (prop) => prop !== "$active" && prop !== "$mode"
7795
+ })(({ theme, $active, $mode }) => ({
7796
+ appearance: "none",
7797
+ cursor: "pointer",
7798
+ fontFamily: theme.typography.fontFamily,
7799
+ fontSize: "0.875rem",
7800
+ fontWeight: 500,
7801
+ transition: "border-color 150ms ease, background-color 150ms ease, box-shadow 150ms ease",
7802
+ "&:disabled": {
7803
+ opacity: 0.4,
7804
+ cursor: "not-allowed",
7805
+ textDecoration: $mode === "button" ? "line-through" : "none"
7806
+ },
7807
+ "&:focus-visible": {
7808
+ outline: `3px solid ${theme.palette.primary.main}`,
7809
+ outlineOffset: "2px"
7810
+ },
7811
+ ...$mode === "swatch" ? {
7812
+ width: "2rem",
7813
+ height: "2rem",
7814
+ borderRadius: "50%",
7815
+ border: $active ? `3px solid ${theme.palette.primary.main}` : `2px solid ${theme.palette.divider}`,
7816
+ boxShadow: $active ? `0 0 0 2px ${theme.palette.background.paper}, 0 0 0 4px ${theme.palette.primary.main}` : "none",
7817
+ padding: 0,
7818
+ background: "currentColor"
7819
+ } : {
7820
+ padding: "0.375rem 0.875rem",
7821
+ border: $active ? `2px solid ${theme.palette.primary.main}` : `1px solid ${theme.palette.divider}`,
7822
+ borderRadius: theme.shape.borderRadius,
7823
+ backgroundColor: $active ? `${theme.palette.primary.main}14` : "transparent",
7824
+ color: $active ? theme.palette.primary.main : theme.palette.text.primary
7825
+ }
7826
+ }));
7827
+ var Select2 = styles.styled("select")(({ theme }) => ({
7828
+ padding: "0.5rem 2rem 0.5rem 0.75rem",
7829
+ border: `1px solid ${theme.palette.divider}`,
7830
+ borderRadius: theme.shape.borderRadius,
7831
+ backgroundColor: theme.palette.background.paper,
7832
+ color: theme.palette.text.primary,
7833
+ fontFamily: theme.typography.fontFamily,
7834
+ fontSize: "0.875rem",
7835
+ cursor: "pointer",
7836
+ appearance: "none",
7837
+ backgroundImage: `url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24'%3E%3Cpath fill='%23666' d='M7 10l5 5 5-5z'/%3E%3C/svg%3E")`,
7838
+ backgroundRepeat: "no-repeat",
7839
+ backgroundPosition: "right 0.75rem center",
7840
+ "&:focus": {
7841
+ outline: `3px solid ${theme.palette.primary.main}`,
7842
+ outlineOffset: "2px"
6998
7843
  }
7844
+ }));
7845
+ var VariantSelector = react.forwardRef(
7846
+ ({ label, options, value, onChange, mode = "button", disabled, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(Root33, { ref, ...props, children: [
7847
+ /* @__PURE__ */ jsxRuntime.jsxs(Label4, { children: [
7848
+ label,
7849
+ value && mode !== "swatch" && /* @__PURE__ */ jsxRuntime.jsx("span", { style: { fontWeight: 400, marginLeft: "0.375rem" }, children: options.find((o) => o.value === value)?.label })
7850
+ ] }),
7851
+ mode === "dropdown" ? /* @__PURE__ */ jsxRuntime.jsx(
7852
+ Select2,
7853
+ {
7854
+ value: value ?? "",
7855
+ onChange: (e) => onChange?.(e.target.value),
7856
+ disabled,
7857
+ "aria-label": label,
7858
+ children: options.map((opt) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: opt.value, disabled: opt.disabled, children: opt.label }, opt.value))
7859
+ }
7860
+ ) : /* @__PURE__ */ jsxRuntime.jsx(OptionsRow, { role: "radiogroup", "aria-label": label, children: options.map((opt) => /* @__PURE__ */ jsxRuntime.jsx(
7861
+ OptionButton,
7862
+ {
7863
+ type: "button",
7864
+ $active: value === opt.value,
7865
+ $mode: mode,
7866
+ disabled: opt.disabled || disabled,
7867
+ style: mode === "swatch" ? { color: opt.color ?? "#ccc" } : void 0,
7868
+ title: opt.label,
7869
+ "aria-label": opt.label,
7870
+ "aria-pressed": value === opt.value,
7871
+ onClick: () => onChange?.(opt.value),
7872
+ children: mode === "button" && opt.label
7873
+ },
7874
+ opt.value
7875
+ )) })
7876
+ ] })
6999
7877
  );
7000
- StockStatus.displayName = "StockStatus";
7001
- var stockStatusValues = [
7002
- "in-stock",
7003
- "low-stock",
7004
- "out-of-stock",
7005
- "preorder",
7006
- "backorder"
7007
- ];
7008
- var Root25 = styles.styled("div")(({ theme }) => ({
7878
+ VariantSelector.displayName = "VariantSelector";
7879
+ var variantSelectorModes = ["button", "swatch", "dropdown"];
7880
+ var Root34 = styles.styled("div")(({ theme }) => ({
7009
7881
  borderBottom: `1px solid ${theme.palette.divider}`
7010
7882
  }));
7011
7883
  var Trigger2 = styles.styled("button")(({ theme }) => ({
@@ -7053,7 +7925,7 @@ var PanelInner = styles.styled("p")(({ theme }) => ({
7053
7925
  var FaqItem = react.forwardRef(
7054
7926
  ({ item, defaultOpen = false, ...props }, ref) => {
7055
7927
  const [open, setOpen] = react.useState(defaultOpen);
7056
- return /* @__PURE__ */ jsxRuntime.jsxs(Root25, { ref, ...props, children: [
7928
+ return /* @__PURE__ */ jsxRuntime.jsxs(Root34, { ref, ...props, children: [
7057
7929
  /* @__PURE__ */ jsxRuntime.jsxs(Trigger2, { type: "button", "aria-expanded": open, onClick: () => setOpen((prev) => !prev), children: [
7058
7930
  item.question,
7059
7931
  /* @__PURE__ */ jsxRuntime.jsx(ChevronIcon2, { $open: open, "aria-hidden": "true" })
@@ -7129,7 +8001,7 @@ var FeatureItem2 = react.forwardRef(
7129
8001
  }
7130
8002
  );
7131
8003
  FeatureItem2.displayName = "FeatureItem";
7132
- var Root26 = styles.styled("div")({
8004
+ var Root35 = styles.styled("div")({
7133
8005
  display: "flex",
7134
8006
  flexDirection: "column",
7135
8007
  alignItems: "center",
@@ -7177,7 +8049,7 @@ var Description5 = styles.styled("p")(({ theme }) => ({
7177
8049
  maxWidth: "18rem"
7178
8050
  }));
7179
8051
  var ProcessStep = react.forwardRef(
7180
- ({ step, title, description, icon, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(Root26, { ref, ...props, children: [
8052
+ ({ step, title, description, icon, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(Root35, { ref, ...props, children: [
7181
8053
  /* @__PURE__ */ jsxRuntime.jsx(StepBadge, { "aria-hidden": "true", children: icon ? /* @__PURE__ */ jsxRuntime.jsx(IconWrapper2, { children: icon }) : /* @__PURE__ */ jsxRuntime.jsx(StepNumber, { children: step }) }),
7182
8054
  /* @__PURE__ */ jsxRuntime.jsx(Title3, { children: title }),
7183
8055
  description && /* @__PURE__ */ jsxRuntime.jsx(Description5, { children: description })
@@ -7363,7 +8235,7 @@ var Dot3 = styles.styled("span", {
7363
8235
  }
7364
8236
  }
7365
8237
  }));
7366
- var Content2 = styles.styled("div")({ flex: 1, minWidth: 0, paddingTop: "0.0625rem" });
8238
+ var Content4 = styles.styled("div")({ flex: 1, minWidth: 0, paddingTop: "0.0625rem" });
7367
8239
  var TitleRow = styles.styled("div")({
7368
8240
  display: "flex",
7369
8241
  alignItems: "baseline",
@@ -7408,7 +8280,7 @@ function TimelineItemComponent({
7408
8280
  const hasIcon = Boolean(item.icon);
7409
8281
  return /* @__PURE__ */ jsxRuntime.jsxs(ItemRow, { $compact: compact, $last: last, children: [
7410
8282
  /* @__PURE__ */ jsxRuntime.jsx(DotCol, { $last: last, children: /* @__PURE__ */ jsxRuntime.jsx(Dot3, { $status: status, $hasIcon: hasIcon, children: item.icon ?? /* @__PURE__ */ jsxRuntime.jsx(StatusIcon, { status }) }) }),
7411
- /* @__PURE__ */ jsxRuntime.jsxs(Content2, { children: [
8283
+ /* @__PURE__ */ jsxRuntime.jsxs(Content4, { children: [
7412
8284
  /* @__PURE__ */ jsxRuntime.jsxs(TitleRow, { children: [
7413
8285
  /* @__PURE__ */ jsxRuntime.jsx(Title4, { $compact: compact, children: item.title }),
7414
8286
  item.date && /* @__PURE__ */ jsxRuntime.jsx(Date2, { dateTime: item.date, children: item.date })
@@ -7439,7 +8311,7 @@ var timelineItemStatuses = [
7439
8311
  "pending",
7440
8312
  "error"
7441
8313
  ];
7442
- var Root27 = styles.styled("div")({
8314
+ var Root36 = styles.styled("div")({
7443
8315
  position: "relative",
7444
8316
  width: "100%",
7445
8317
  overflow: "hidden",
@@ -7549,7 +8421,7 @@ function Carousel({
7549
8421
  }, [prev, next]);
7550
8422
  if (!count) return null;
7551
8423
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className, children: [
7552
- /* @__PURE__ */ jsxRuntime.jsxs(Root27, { "aria-roledescription": "carousel", children: [
8424
+ /* @__PURE__ */ jsxRuntime.jsxs(Root36, { "aria-roledescription": "carousel", children: [
7553
8425
  /* @__PURE__ */ jsxRuntime.jsx(Track4, { $index: index, "aria-live": "polite", children: slides.map((slide, i) => /* @__PURE__ */ jsxRuntime.jsx(
7554
8426
  Slide,
7555
8427
  {
@@ -7933,7 +8805,7 @@ var Breadcrumbs = react.forwardRef(
7933
8805
  }) }) })
7934
8806
  );
7935
8807
  Breadcrumbs.displayName = "Breadcrumbs";
7936
- var sizeMap5 = {
8808
+ var sizeMap6 = {
7937
8809
  sm: { minWidth: "1.75rem", height: "1.75rem", fontSize: "0.75rem" },
7938
8810
  md: { minWidth: "2rem", height: "2rem", fontSize: "0.875rem" },
7939
8811
  lg: { minWidth: "2.5rem", height: "2.5rem", fontSize: "1rem" }
@@ -7962,7 +8834,7 @@ var StyledButton2 = styles.styled("button")(({ theme, $isActive, $size }) => ({
7962
8834
  lineHeight: 1,
7963
8835
  padding: "0 0.25rem",
7964
8836
  transition: "background-color 150ms ease",
7965
- ...sizeMap5[$size],
8837
+ ...sizeMap6[$size],
7966
8838
  ...$isActive ? activeStyles(theme) : idleStyles(theme),
7967
8839
  "&:focus-visible": {
7968
8840
  outline: `3px solid ${theme.palette.primary.main}`,
@@ -7991,7 +8863,7 @@ var PaginationButton = react.forwardRef(
7991
8863
  )
7992
8864
  );
7993
8865
  PaginationButton.displayName = "PaginationButton";
7994
- var sizeMap6 = {
8866
+ var sizeMap7 = {
7995
8867
  sm: { minWidth: "1.75rem", height: "1.75rem", fontSize: "0.75rem" },
7996
8868
  md: { minWidth: "2rem", height: "2rem", fontSize: "0.875rem" },
7997
8869
  lg: { minWidth: "2.5rem", height: "2.5rem", fontSize: "1rem" }
@@ -8002,7 +8874,7 @@ var StyledEllipsis = styles.styled("span")(({ theme, $size }) => ({
8002
8874
  justifyContent: "center",
8003
8875
  color: theme.palette.text.secondary,
8004
8876
  userSelect: "none",
8005
- ...sizeMap6[$size]
8877
+ ...sizeMap7[$size]
8006
8878
  }));
8007
8879
  var PaginationEllipsis = ({ size = "md" }) => /* @__PURE__ */ jsxRuntime.jsx(StyledEllipsis, { $size: size, "aria-hidden": "true", children: "\u2026" });
8008
8880
  PaginationEllipsis.displayName = "PaginationEllipsis";
@@ -8112,7 +8984,7 @@ var PaginationBar = ({
8112
8984
  ] });
8113
8985
  };
8114
8986
  PaginationBar.displayName = "PaginationBar";
8115
- var Root28 = styles.styled("div", {
8987
+ var Root37 = styles.styled("div", {
8116
8988
  shouldForwardProp: (p) => p !== "$variant"
8117
8989
  })(({ theme, $variant }) => ({
8118
8990
  width: "100%",
@@ -8222,7 +9094,7 @@ var Accordion = react.forwardRef(
8222
9094
  if (controlledKeys === void 0) setInternalKeys(next);
8223
9095
  onChange?.(next);
8224
9096
  };
8225
- return /* @__PURE__ */ jsxRuntime.jsx(Root28, { ref, $variant: variant, ...props, children: items.map((item) => {
9097
+ return /* @__PURE__ */ jsxRuntime.jsx(Root37, { ref, $variant: variant, ...props, children: items.map((item) => {
8226
9098
  const isOpen = openKeys.includes(item.key);
8227
9099
  const panelId = `accordion-panel-${item.key}`;
8228
9100
  const triggerId = `accordion-trigger-${item.key}`;
@@ -8251,6 +9123,74 @@ var Accordion = react.forwardRef(
8251
9123
  );
8252
9124
  Accordion.displayName = "Accordion";
8253
9125
  var accordionVariants = ["default", "bordered", "separated"];
9126
+ var SEVERITY_COLORS = {
9127
+ info: { bg: "rgba(25,118,210,0.08)", color: "#1565c0", border: "rgba(25,118,210,0.3)" },
9128
+ success: { bg: "rgba(34,197,94,0.1)", color: "#15803d", border: "rgba(34,197,94,0.35)" },
9129
+ warning: { bg: "rgba(245,158,11,0.1)", color: "#b45309", border: "rgba(245,158,11,0.35)" },
9130
+ error: { bg: "rgba(211,47,47,0.08)", color: "#c62828", border: "rgba(211,47,47,0.3)" }
9131
+ };
9132
+ var ICONS = {
9133
+ info: /* @__PURE__ */ jsxRuntime.jsx(InfoOutlinedIcon__default.default, { "aria-hidden": true, style: { fontSize: 20 } }),
9134
+ success: /* @__PURE__ */ jsxRuntime.jsx(CheckCircleOutlinedIcon__default.default, { "aria-hidden": true, style: { fontSize: 20 } }),
9135
+ warning: /* @__PURE__ */ jsxRuntime.jsx(WarningAmberOutlinedIcon__default.default, { "aria-hidden": true, style: { fontSize: 20 } }),
9136
+ error: /* @__PURE__ */ jsxRuntime.jsx(ErrorOutlineOutlinedIcon__default.default, { "aria-hidden": true, style: { fontSize: 20 } })
9137
+ };
9138
+ var Root38 = styles.styled("div", {
9139
+ shouldForwardProp: (prop) => prop !== "$severity"
9140
+ })(({ theme, $severity }) => {
9141
+ const c = SEVERITY_COLORS[$severity];
9142
+ return {
9143
+ display: "flex",
9144
+ gap: "0.75rem",
9145
+ padding: "0.875rem 1rem",
9146
+ borderRadius: theme.shape.borderRadius,
9147
+ border: `1px solid ${c.border}`,
9148
+ backgroundColor: c.bg,
9149
+ color: c.color,
9150
+ fontFamily: theme.typography.fontFamily,
9151
+ fontSize: "0.9375rem"
9152
+ };
9153
+ });
9154
+ var IconSlot2 = styles.styled("span")({
9155
+ flexShrink: 0,
9156
+ display: "flex",
9157
+ paddingTop: "0.0625rem"
9158
+ });
9159
+ var Body = styles.styled("div")({ flex: 1 });
9160
+ var Title5 = styles.styled("div")({
9161
+ fontWeight: 700,
9162
+ marginBottom: "0.25rem"
9163
+ });
9164
+ var CloseButton2 = styles.styled("button")(({ theme }) => ({
9165
+ appearance: "none",
9166
+ border: "none",
9167
+ background: "transparent",
9168
+ cursor: "pointer",
9169
+ display: "flex",
9170
+ alignItems: "center",
9171
+ padding: "0.125rem",
9172
+ color: "inherit",
9173
+ opacity: 0.6,
9174
+ borderRadius: "0.25rem",
9175
+ flexShrink: 0,
9176
+ "&:hover": { opacity: 1 },
9177
+ "&:focus-visible": {
9178
+ outline: `3px solid ${theme.palette.primary.main}`,
9179
+ outlineOffset: "2px"
9180
+ }
9181
+ }));
9182
+ var Alert = react.forwardRef(
9183
+ ({ severity = "info", title, children, onClose, icon, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(Root38, { ref, role: "alert", $severity: severity, ...props, children: [
9184
+ /* @__PURE__ */ jsxRuntime.jsx(IconSlot2, { children: icon ?? ICONS[severity] }),
9185
+ /* @__PURE__ */ jsxRuntime.jsxs(Body, { children: [
9186
+ title && /* @__PURE__ */ jsxRuntime.jsx(Title5, { children: title }),
9187
+ children
9188
+ ] }),
9189
+ onClose && /* @__PURE__ */ jsxRuntime.jsx(CloseButton2, { type: "button", onClick: onClose, "aria-label": "Zamknij", children: /* @__PURE__ */ jsxRuntime.jsx(CloseIcon__default.default, { "aria-hidden": true, style: { fontSize: 16 } }) })
9190
+ ] })
9191
+ );
9192
+ Alert.displayName = "Alert";
9193
+ var alertSeverities = ["info", "success", "warning", "error"];
8254
9194
  var fadeIn2 = react$1.keyframes`from{opacity:0;transform:translateY(0.5rem)}to{opacity:1;transform:translateY(0)}`;
8255
9195
  var fadeOut = react$1.keyframes`from{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(0.5rem)}`;
8256
9196
  var POSITION_MAP = {
@@ -8490,6 +9430,44 @@ var ContextMenu = react.forwardRef(
8490
9430
  }
8491
9431
  );
8492
9432
  ContextMenu.displayName = "ContextMenu";
9433
+ var Root39 = styles.styled("div")(({ theme }) => ({
9434
+ display: "flex",
9435
+ flexDirection: "column",
9436
+ alignItems: "center",
9437
+ justifyContent: "center",
9438
+ gap: "1rem",
9439
+ padding: "3rem 1.5rem",
9440
+ textAlign: "center",
9441
+ fontFamily: theme.typography.fontFamily
9442
+ }));
9443
+ var IconWrap3 = styles.styled("div")(({ theme }) => ({
9444
+ color: theme.palette.text.disabled,
9445
+ display: "flex",
9446
+ "& svg": { fontSize: "3.5rem" }
9447
+ }));
9448
+ var Title6 = styles.styled("h3")(({ theme }) => ({
9449
+ margin: 0,
9450
+ fontSize: "1.125rem",
9451
+ fontWeight: 700,
9452
+ color: theme.palette.text.primary
9453
+ }));
9454
+ var Description7 = styles.styled("p")(({ theme }) => ({
9455
+ margin: 0,
9456
+ fontSize: "0.9375rem",
9457
+ color: theme.palette.text.secondary,
9458
+ maxWidth: "28rem"
9459
+ }));
9460
+ var EmptyState = react.forwardRef(
9461
+ ({ icon, title, description, action, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(Root39, { ref, ...props, children: [
9462
+ /* @__PURE__ */ jsxRuntime.jsx(IconWrap3, { "aria-hidden": true, children: icon ?? /* @__PURE__ */ jsxRuntime.jsx(InboxOutlinedIcon__default.default, {}) }),
9463
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
9464
+ /* @__PURE__ */ jsxRuntime.jsx(Title6, { children: title }),
9465
+ description && /* @__PURE__ */ jsxRuntime.jsx(Description7, { style: { marginTop: "0.5rem" }, children: description })
9466
+ ] }),
9467
+ action && /* @__PURE__ */ jsxRuntime.jsx("div", { children: action })
9468
+ ] })
9469
+ );
9470
+ EmptyState.displayName = "EmptyState";
8493
9471
  var PADDING = {
8494
9472
  sm: "0.5rem 0.75rem",
8495
9473
  md: "0.75rem 1rem",
@@ -8500,7 +9478,7 @@ var FONT_SIZE2 = {
8500
9478
  md: "0.9375rem",
8501
9479
  lg: "1rem"
8502
9480
  };
8503
- var Root29 = styles.styled("ul", {
9481
+ var Root40 = styles.styled("ul", {
8504
9482
  shouldForwardProp: (p) => p !== "$variant"
8505
9483
  })(({ theme, $variant }) => ({
8506
9484
  listStyle: "none",
@@ -8595,7 +9573,7 @@ var SuffixWrap = styles.styled("span")({
8595
9573
  var List3 = react.forwardRef(
8596
9574
  ({ items, size = "md", variant = "default", dividers = true, ...props }, ref) => {
8597
9575
  const effectiveVariant = !dividers && variant === "default" ? "default" : variant;
8598
- return /* @__PURE__ */ jsxRuntime.jsx(Root29, { ref, $variant: effectiveVariant, role: "list", ...props, children: items.map((item) => /* @__PURE__ */ jsxRuntime.jsxs(
9576
+ return /* @__PURE__ */ jsxRuntime.jsx(Root40, { ref, $variant: effectiveVariant, role: "list", ...props, children: items.map((item) => /* @__PURE__ */ jsxRuntime.jsxs(
8599
9577
  Item2,
8600
9578
  {
8601
9579
  role: "listitem",
@@ -8634,7 +9612,7 @@ var speedDuration = {
8634
9612
  normal: "20s",
8635
9613
  fast: "10s"
8636
9614
  };
8637
- var Root30 = styles.styled("div")({
9615
+ var Root41 = styles.styled("div")({
8638
9616
  overflow: "hidden",
8639
9617
  width: "100%",
8640
9618
  userSelect: "none"
@@ -8665,7 +9643,7 @@ var Marquee = react.forwardRef(
8665
9643
  /* @__PURE__ */ jsxRuntime.jsx(ItemWrap, { $gap: gapValue, "aria-hidden": "false", children }),
8666
9644
  /* @__PURE__ */ jsxRuntime.jsx(ItemWrap, { $gap: gapValue, "aria-hidden": "true", children })
8667
9645
  ] });
8668
- return /* @__PURE__ */ jsxRuntime.jsx(Root30, { ref, ...props, children: /* @__PURE__ */ jsxRuntime.jsx(Track5, { $direction: direction, $speed: speed, $pauseOnHover: pauseOnHover, $gap: gapValue, children: content }) });
9646
+ return /* @__PURE__ */ jsxRuntime.jsx(Root41, { ref, ...props, children: /* @__PURE__ */ jsxRuntime.jsx(Track5, { $direction: direction, $speed: speed, $pauseOnHover: pauseOnHover, $gap: gapValue, children: content }) });
8669
9647
  }
8670
9648
  );
8671
9649
  Marquee.displayName = "Marquee";
@@ -8719,7 +9697,7 @@ var Header = styles.styled("div")(({ theme }) => ({
8719
9697
  borderBottom: `1px solid ${theme.palette.divider}`,
8720
9698
  flexShrink: 0
8721
9699
  }));
8722
- var Title5 = styles.styled("h2")(({ theme }) => ({
9700
+ var Title7 = styles.styled("h2")(({ theme }) => ({
8723
9701
  margin: 0,
8724
9702
  fontFamily: theme.typography.fontFamily,
8725
9703
  fontSize: "1.125rem",
@@ -8727,7 +9705,7 @@ var Title5 = styles.styled("h2")(({ theme }) => ({
8727
9705
  color: theme.palette.text.primary,
8728
9706
  lineHeight: 1.4
8729
9707
  }));
8730
- var CloseButton2 = styles.styled("button")(({ theme }) => ({
9708
+ var CloseButton3 = styles.styled("button")(({ theme }) => ({
8731
9709
  appearance: "none",
8732
9710
  border: "none",
8733
9711
  background: "none",
@@ -8750,14 +9728,14 @@ var CloseButton2 = styles.styled("button")(({ theme }) => ({
8750
9728
  outlineOffset: "2px"
8751
9729
  }
8752
9730
  }));
8753
- var Body = styles.styled("div")(({ theme }) => ({
9731
+ var Body2 = styles.styled("div")(({ theme }) => ({
8754
9732
  padding: "1.5rem",
8755
9733
  overflowY: "auto",
8756
9734
  flex: 1,
8757
9735
  fontFamily: theme.typography.fontFamily,
8758
9736
  color: theme.palette.text.primary
8759
9737
  }));
8760
- var Footer3 = styles.styled("div")(({ theme }) => ({
9738
+ var Footer4 = styles.styled("div")(({ theme }) => ({
8761
9739
  padding: "1rem 1.5rem",
8762
9740
  borderTop: `1px solid ${theme.palette.divider}`,
8763
9741
  display: "flex",
@@ -8809,11 +9787,11 @@ function Modal({
8809
9787
  onClick: (e) => e.stopPropagation(),
8810
9788
  children: [
8811
9789
  (title || !hideCloseButton) && /* @__PURE__ */ jsxRuntime.jsxs(Header, { children: [
8812
- title ? /* @__PURE__ */ jsxRuntime.jsx(Title5, { id: "modal-title", children: title }) : /* @__PURE__ */ jsxRuntime.jsx("span", {}),
8813
- !hideCloseButton && /* @__PURE__ */ jsxRuntime.jsx(CloseButton2, { "aria-label": "Zamknij", onClick: onClose, children: /* @__PURE__ */ jsxRuntime.jsx(CloseIcon__default.default, { "aria-hidden": true, style: { fontSize: 16 } }) })
9790
+ title ? /* @__PURE__ */ jsxRuntime.jsx(Title7, { id: "modal-title", children: title }) : /* @__PURE__ */ jsxRuntime.jsx("span", {}),
9791
+ !hideCloseButton && /* @__PURE__ */ jsxRuntime.jsx(CloseButton3, { "aria-label": "Zamknij", onClick: onClose, children: /* @__PURE__ */ jsxRuntime.jsx(CloseIcon__default.default, { "aria-hidden": true, style: { fontSize: 16 } }) })
8814
9792
  ] }),
8815
- children && /* @__PURE__ */ jsxRuntime.jsx(Body, { children }),
8816
- footer && /* @__PURE__ */ jsxRuntime.jsx(Footer3, { children: footer })
9793
+ children && /* @__PURE__ */ jsxRuntime.jsx(Body2, { children }),
9794
+ footer && /* @__PURE__ */ jsxRuntime.jsx(Footer4, { children: footer })
8817
9795
  ]
8818
9796
  }
8819
9797
  ) }),
@@ -8821,7 +9799,7 @@ function Modal({
8821
9799
  );
8822
9800
  }
8823
9801
  var modalSizes = ["sm", "md", "lg", "xl", "full"];
8824
- var Root31 = styles.styled("div")({ width: "100%" });
9802
+ var Root42 = styles.styled("div")({ width: "100%" });
8825
9803
  var TabList = styles.styled("div", {
8826
9804
  shouldForwardProp: (prop) => prop !== "$variant"
8827
9805
  })(({ theme, $variant }) => ({
@@ -8901,7 +9879,7 @@ var Tabs = react.forwardRef(
8901
9879
  onChange?.(key);
8902
9880
  };
8903
9881
  const activeTab = tabs.find((t) => t.key === activeKey);
8904
- return /* @__PURE__ */ jsxRuntime.jsxs(Root31, { ref, ...props, children: [
9882
+ return /* @__PURE__ */ jsxRuntime.jsxs(Root42, { ref, ...props, children: [
8905
9883
  /* @__PURE__ */ jsxRuntime.jsx(TabList, { role: "tablist", $variant: variant, children: tabs.map((tab) => /* @__PURE__ */ jsxRuntime.jsx(
8906
9884
  TabButton,
8907
9885
  {
@@ -8959,7 +9937,7 @@ var Header2 = styles.styled("div")(({ theme }) => ({
8959
9937
  padding: "1rem 1.25rem",
8960
9938
  borderBottom: `1px solid ${theme.palette.divider}`
8961
9939
  }));
8962
- var Title6 = styles.styled("h2")(({ theme }) => ({
9940
+ var Title8 = styles.styled("h2")(({ theme }) => ({
8963
9941
  margin: 0,
8964
9942
  fontSize: "1.125rem",
8965
9943
  color: theme.palette.text.primary
@@ -9022,7 +10000,7 @@ var RemoveButton2 = styles.styled("button")(({ theme }) => ({
9022
10000
  padding: 0,
9023
10001
  fontSize: "0.875rem"
9024
10002
  }));
9025
- var Footer4 = styles.styled("div")(({ theme }) => ({
10003
+ var Footer5 = styles.styled("div")(({ theme }) => ({
9026
10004
  display: "grid",
9027
10005
  gap: "1rem",
9028
10006
  marginTop: "auto",
@@ -9044,7 +10022,7 @@ var CartDrawer = react.forwardRef(
9044
10022
  ...props
9045
10023
  }, ref) => /* @__PURE__ */ jsxRuntime.jsx(Overlay3, { $open: open, children: /* @__PURE__ */ jsxRuntime.jsxs(Panel3, { ref, "aria-hidden": !open, "aria-label": title, ...props, children: [
9046
10024
  /* @__PURE__ */ jsxRuntime.jsxs(Header2, { children: [
9047
- /* @__PURE__ */ jsxRuntime.jsx(Title6, { children: title }),
10025
+ /* @__PURE__ */ jsxRuntime.jsx(Title8, { children: title }),
9048
10026
  /* @__PURE__ */ jsxRuntime.jsx(IconButton, { type: "button", "aria-label": closeLabel, onClick: onClose, children: "\xD7" })
9049
10027
  ] }),
9050
10028
  /* @__PURE__ */ jsxRuntime.jsx(Items, { children: items.map((item) => /* @__PURE__ */ jsxRuntime.jsxs(Item3, { children: [
@@ -9067,7 +10045,7 @@ var CartDrawer = react.forwardRef(
9067
10045
  ] })
9068
10046
  ] })
9069
10047
  ] }, item.id)) }),
9070
- /* @__PURE__ */ jsxRuntime.jsxs(Footer4, { children: [
10048
+ /* @__PURE__ */ jsxRuntime.jsxs(Footer5, { children: [
9071
10049
  /* @__PURE__ */ jsxRuntime.jsxs(Row4, { children: [
9072
10050
  /* @__PURE__ */ jsxRuntime.jsx("strong", { children: "Suma" }),
9073
10051
  /* @__PURE__ */ jsxRuntime.jsx("strong", { children: subtotal })
@@ -9077,7 +10055,7 @@ var CartDrawer = react.forwardRef(
9077
10055
  ] }) })
9078
10056
  );
9079
10057
  CartDrawer.displayName = "CartDrawer";
9080
- var Root32 = styles.styled("aside")(({ theme }) => ({
10058
+ var Root43 = styles.styled("aside")(({ theme }) => ({
9081
10059
  display: "grid",
9082
10060
  gap: "1.5rem",
9083
10061
  width: "100%",
@@ -9094,7 +10072,7 @@ var Header3 = styles.styled("div")({
9094
10072
  justifyContent: "space-between",
9095
10073
  gap: "1rem"
9096
10074
  });
9097
- var Title7 = styles.styled("h2")(({ theme }) => ({
10075
+ var Title9 = styles.styled("h2")(({ theme }) => ({
9098
10076
  margin: 0,
9099
10077
  color: theme.palette.text.primary,
9100
10078
  fontSize: "1.125rem"
@@ -9112,7 +10090,7 @@ var Legend = styles.styled("legend")({
9112
10090
  marginBottom: "0.75rem",
9113
10091
  fontWeight: 800
9114
10092
  });
9115
- var OptionLabel = styles.styled("label")(({ theme }) => ({
10093
+ var OptionLabel2 = styles.styled("label")(({ theme }) => ({
9116
10094
  display: "flex",
9117
10095
  alignItems: "center",
9118
10096
  justifyContent: "space-between",
@@ -9139,7 +10117,7 @@ var NumberInput2 = styles.styled("input")(({ theme }) => ({
9139
10117
  fontFamily: theme.typography.fontFamily
9140
10118
  }));
9141
10119
  function renderOptions(options, selected, onToggle) {
9142
- return options.map((option) => /* @__PURE__ */ jsxRuntime.jsxs(OptionLabel, { children: [
10120
+ return options.map((option) => /* @__PURE__ */ jsxRuntime.jsxs(OptionLabel2, { children: [
9143
10121
  /* @__PURE__ */ jsxRuntime.jsxs(OptionText, { children: [
9144
10122
  /* @__PURE__ */ jsxRuntime.jsx(
9145
10123
  "input",
@@ -9169,9 +10147,9 @@ var FilterSidebar = react.forwardRef(
9169
10147
  onPriceRangeChange,
9170
10148
  onClear,
9171
10149
  ...props
9172
- }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(Root32, { ref, "aria-label": "Filtry produkt\xF3w", ...props, children: [
10150
+ }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(Root43, { ref, "aria-label": "Filtry produkt\xF3w", ...props, children: [
9173
10151
  /* @__PURE__ */ jsxRuntime.jsxs(Header3, { children: [
9174
- /* @__PURE__ */ jsxRuntime.jsx(Title7, { children: "Filtry" }),
10152
+ /* @__PURE__ */ jsxRuntime.jsx(Title9, { children: "Filtry" }),
9175
10153
  onClear && /* @__PURE__ */ jsxRuntime.jsx(Button, { variant: "ghost", size: "sm", onClick: onClear, children: "Wyczy\u015B\u0107" })
9176
10154
  ] }),
9177
10155
  priceRange && /* @__PURE__ */ jsxRuntime.jsxs(Group, { children: [
@@ -9212,8 +10190,8 @@ var FilterSidebar = react.forwardRef(
9212
10190
  ] })
9213
10191
  );
9214
10192
  FilterSidebar.displayName = "FilterSidebar";
9215
- var Root33 = styles.styled(Card)({ display: "grid", gap: "1rem" });
9216
- var Title8 = styles.styled("h2")(({ theme }) => ({
10193
+ var Root44 = styles.styled(Card)({ display: "grid", gap: "1rem" });
10194
+ var Title10 = styles.styled("h2")(({ theme }) => ({
9217
10195
  margin: 0,
9218
10196
  fontFamily: theme.typography.fontFamily,
9219
10197
  fontSize: "1.125rem",
@@ -9312,8 +10290,8 @@ var OrderSummary = react.forwardRef(
9312
10290
  ctaLabel = "Przejd\u017A do kasy",
9313
10291
  onCheckout,
9314
10292
  ...props
9315
- }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(Root33, { ref, variant: "default", padding: "lg", rounded: "lg", ...props, children: [
9316
- /* @__PURE__ */ jsxRuntime.jsx(Title8, { children: title }),
10293
+ }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(Root44, { ref, variant: "default", padding: "lg", rounded: "lg", ...props, children: [
10294
+ /* @__PURE__ */ jsxRuntime.jsx(Title10, { children: title }),
9317
10295
  items.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
9318
10296
  /* @__PURE__ */ jsxRuntime.jsx(SectionTitle, { children: itemsTitle }),
9319
10297
  /* @__PURE__ */ jsxRuntime.jsx(ItemList, { children: items.map((item) => /* @__PURE__ */ jsxRuntime.jsxs(Item4, { children: [
@@ -9364,6 +10342,207 @@ var OrderSummary = react.forwardRef(
9364
10342
  ] })
9365
10343
  );
9366
10344
  OrderSummary.displayName = "OrderSummary";
10345
+ var Root45 = styles.styled("div")(({ theme }) => ({
10346
+ fontFamily: theme.typography.fontFamily
10347
+ }));
10348
+ var Grid2 = styles.styled("div", {
10349
+ shouldForwardProp: (prop) => prop !== "$columns"
10350
+ })(({ theme, $columns }) => ({
10351
+ display: "grid",
10352
+ gridTemplateColumns: `repeat(1, 1fr)`,
10353
+ gap: "1.25rem",
10354
+ [theme.breakpoints.up("sm")]: {
10355
+ gridTemplateColumns: `repeat(${Math.min($columns, 2)}, 1fr)`
10356
+ },
10357
+ [theme.breakpoints.up("md")]: {
10358
+ gridTemplateColumns: `repeat(${Math.min($columns, 3)}, 1fr)`
10359
+ },
10360
+ [theme.breakpoints.up("lg")]: {
10361
+ gridTemplateColumns: `repeat(${Math.min($columns, 4)}, 1fr)`
10362
+ }
10363
+ }));
10364
+ var ScrollTrack = styles.styled("div")({
10365
+ display: "flex",
10366
+ gap: "1.25rem",
10367
+ overflowX: "auto",
10368
+ paddingBottom: "0.5rem",
10369
+ scrollSnapType: "x mandatory",
10370
+ "&::-webkit-scrollbar": { height: "4px" },
10371
+ "&::-webkit-scrollbar-track": { background: "transparent" },
10372
+ "&::-webkit-scrollbar-thumb": { borderRadius: "9999px", background: "rgba(0,0,0,0.2)" },
10373
+ "& > *": {
10374
+ flexShrink: 0,
10375
+ scrollSnapAlign: "start",
10376
+ width: "clamp(220px, 28vw, 280px)"
10377
+ }
10378
+ });
10379
+ var RelatedProducts = react.forwardRef(
10380
+ ({ products, title = "Podobne produkty", layout = "grid", columns = 4, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(Root45, { ref, ...props, children: [
10381
+ /* @__PURE__ */ jsxRuntime.jsx(SectionHeading, { title, align: "left", style: { marginBottom: "1.5rem" } }),
10382
+ layout === "scroll" ? /* @__PURE__ */ jsxRuntime.jsx(ScrollTrack, { children: products.map((product, i) => /* @__PURE__ */ jsxRuntime.jsx(ProductCard, { ...product }, product.name + i)) }) : /* @__PURE__ */ jsxRuntime.jsx(Grid2, { $columns: columns, children: products.map((product, i) => /* @__PURE__ */ jsxRuntime.jsx(ProductCard, { ...product }, product.name + i)) })
10383
+ ] })
10384
+ );
10385
+ RelatedProducts.displayName = "RelatedProducts";
10386
+ var relatedProductsLayouts = ["grid", "scroll"];
10387
+ var Root46 = styles.styled("div")(({ theme }) => ({
10388
+ fontFamily: theme.typography.fontFamily
10389
+ }));
10390
+ var Summary = styles.styled("div")(({ theme }) => ({
10391
+ display: "flex",
10392
+ alignItems: "center",
10393
+ gap: "2rem",
10394
+ flexWrap: "wrap",
10395
+ padding: "1.5rem",
10396
+ backgroundColor: theme.palette.action.hover,
10397
+ borderRadius: theme.shape.borderRadius,
10398
+ marginBottom: "2rem"
10399
+ }));
10400
+ var AverageBlock = styles.styled("div")({
10401
+ display: "flex",
10402
+ flexDirection: "column",
10403
+ alignItems: "center",
10404
+ gap: "0.25rem"
10405
+ });
10406
+ var AverageScore = styles.styled("span")(({ theme }) => ({
10407
+ fontSize: "3rem",
10408
+ fontWeight: 800,
10409
+ lineHeight: 1,
10410
+ color: theme.palette.text.primary
10411
+ }));
10412
+ var Distribution = styles.styled("div")({ flex: 1, display: "flex", flexDirection: "column", gap: "0.375rem" });
10413
+ var DistRow = styles.styled("div")({ display: "flex", alignItems: "center", gap: "0.75rem" });
10414
+ var DistLabel = styles.styled("span")(({ theme }) => ({
10415
+ fontSize: "0.8125rem",
10416
+ color: theme.palette.text.secondary,
10417
+ width: "1.5rem",
10418
+ textAlign: "right"
10419
+ }));
10420
+ var DistBar = styles.styled("div")(({ theme }) => ({
10421
+ flex: 1,
10422
+ height: "0.5rem",
10423
+ borderRadius: "9999px",
10424
+ backgroundColor: theme.palette.divider,
10425
+ overflow: "hidden"
10426
+ }));
10427
+ var DistFill = styles.styled("div", {
10428
+ shouldForwardProp: (prop) => prop !== "$pct"
10429
+ })(({ $pct }) => ({
10430
+ height: "100%",
10431
+ width: `${$pct}%`,
10432
+ backgroundColor: "#f59e0b",
10433
+ borderRadius: "9999px",
10434
+ transition: "width 400ms ease"
10435
+ }));
10436
+ var ReviewList = styles.styled("div")({
10437
+ display: "flex",
10438
+ flexDirection: "column",
10439
+ gap: "1.5rem"
10440
+ });
10441
+ var ReviewCard = styles.styled("div")(({ theme }) => ({
10442
+ padding: "1.25rem",
10443
+ border: `1px solid ${theme.palette.divider}`,
10444
+ borderRadius: theme.shape.borderRadius,
10445
+ display: "flex",
10446
+ flexDirection: "column",
10447
+ gap: "0.75rem"
10448
+ }));
10449
+ var ReviewHeader = styles.styled("div")({
10450
+ display: "flex",
10451
+ alignItems: "flex-start",
10452
+ gap: "0.875rem"
10453
+ });
10454
+ var AuthorInfo2 = styles.styled("div")({ flex: 1 });
10455
+ var AuthorName2 = styles.styled("div")(({ theme }) => ({
10456
+ display: "flex",
10457
+ alignItems: "center",
10458
+ gap: "0.375rem",
10459
+ fontSize: "0.9375rem",
10460
+ fontWeight: 700,
10461
+ color: theme.palette.text.primary
10462
+ }));
10463
+ var ReviewDate = styles.styled("div")(({ theme }) => ({
10464
+ fontSize: "0.8125rem",
10465
+ color: theme.palette.text.secondary,
10466
+ marginTop: "0.125rem"
10467
+ }));
10468
+ var ReviewTitle = styles.styled("div")(({ theme }) => ({
10469
+ fontSize: "0.9375rem",
10470
+ fontWeight: 700,
10471
+ color: theme.palette.text.primary
10472
+ }));
10473
+ var ReviewContent = styles.styled("p")(({ theme }) => ({
10474
+ margin: 0,
10475
+ fontSize: "0.9375rem",
10476
+ color: theme.palette.text.secondary,
10477
+ lineHeight: 1.6
10478
+ }));
10479
+ var HelpfulRow = styles.styled("div")(({ theme }) => ({
10480
+ display: "flex",
10481
+ alignItems: "center",
10482
+ gap: "0.375rem",
10483
+ fontSize: "0.8125rem",
10484
+ color: theme.palette.text.secondary
10485
+ }));
10486
+ function ReviewItem({ review }) {
10487
+ return /* @__PURE__ */ jsxRuntime.jsxs(ReviewCard, { children: [
10488
+ /* @__PURE__ */ jsxRuntime.jsxs(ReviewHeader, { children: [
10489
+ /* @__PURE__ */ jsxRuntime.jsx(
10490
+ Avatar,
10491
+ {
10492
+ initials: review.author.slice(0, 2).toUpperCase(),
10493
+ size: "sm"
10494
+ }
10495
+ ),
10496
+ /* @__PURE__ */ jsxRuntime.jsxs(AuthorInfo2, { children: [
10497
+ /* @__PURE__ */ jsxRuntime.jsxs(AuthorName2, { children: [
10498
+ review.author,
10499
+ review.verified && /* @__PURE__ */ jsxRuntime.jsx(VerifiedIcon__default.default, { "aria-label": "Zweryfikowany zakup", style: { fontSize: 14, color: "#16a34a" } })
10500
+ ] }),
10501
+ /* @__PURE__ */ jsxRuntime.jsx(ReviewDate, { children: review.date })
10502
+ ] }),
10503
+ /* @__PURE__ */ jsxRuntime.jsx(Rating, { value: review.rating, size: "sm", readonly: true })
10504
+ ] }),
10505
+ review.title && /* @__PURE__ */ jsxRuntime.jsx(ReviewTitle, { children: review.title }),
10506
+ /* @__PURE__ */ jsxRuntime.jsx(ReviewContent, { children: review.content }),
10507
+ review.helpfulCount !== void 0 && /* @__PURE__ */ jsxRuntime.jsxs(HelpfulRow, { children: [
10508
+ /* @__PURE__ */ jsxRuntime.jsx(ThumbUpOutlinedIcon__default.default, { "aria-hidden": true, style: { fontSize: 14 } }),
10509
+ review.helpfulCount,
10510
+ " os\xF3b uzna\u0142o t\u0119 recenzj\u0119 za pomocn\u0105"
10511
+ ] })
10512
+ ] });
10513
+ }
10514
+ var ReviewSection = react.forwardRef(
10515
+ ({ reviews, averageRating, totalReviews, title = "Opinie klient\xF3w", ratingDistribution, ...props }, ref) => {
10516
+ const totalDist = ratingDistribution ? Object.values(ratingDistribution).reduce((a, b) => a + b, 0) : 0;
10517
+ return /* @__PURE__ */ jsxRuntime.jsxs(Root46, { ref, ...props, children: [
10518
+ /* @__PURE__ */ jsxRuntime.jsx(SectionHeading, { title, align: "left", style: { marginBottom: "1.5rem" } }),
10519
+ (averageRating !== void 0 || ratingDistribution) && /* @__PURE__ */ jsxRuntime.jsxs(Summary, { children: [
10520
+ averageRating !== void 0 && /* @__PURE__ */ jsxRuntime.jsxs(AverageBlock, { children: [
10521
+ /* @__PURE__ */ jsxRuntime.jsx(AverageScore, { children: averageRating.toFixed(1) }),
10522
+ /* @__PURE__ */ jsxRuntime.jsx(Rating, { value: averageRating, size: "sm", readonly: true }),
10523
+ totalReviews !== void 0 && /* @__PURE__ */ jsxRuntime.jsxs("span", { style: { fontSize: "0.8125rem", marginTop: "0.25rem" }, children: [
10524
+ totalReviews,
10525
+ " opinii"
10526
+ ] })
10527
+ ] }),
10528
+ ratingDistribution && /* @__PURE__ */ jsxRuntime.jsx(Distribution, { children: [5, 4, 3, 2, 1].map((star) => {
10529
+ const count = ratingDistribution[star] ?? 0;
10530
+ const pct2 = totalDist > 0 ? count / totalDist * 100 : 0;
10531
+ return /* @__PURE__ */ jsxRuntime.jsxs(DistRow, { children: [
10532
+ /* @__PURE__ */ jsxRuntime.jsxs(DistLabel, { children: [
10533
+ star,
10534
+ "\u2605"
10535
+ ] }),
10536
+ /* @__PURE__ */ jsxRuntime.jsx(DistBar, { children: /* @__PURE__ */ jsxRuntime.jsx(DistFill, { $pct: pct2 }) }),
10537
+ /* @__PURE__ */ jsxRuntime.jsx(DistLabel, { style: { textAlign: "left" }, children: count })
10538
+ ] }, star);
10539
+ }) })
10540
+ ] }),
10541
+ /* @__PURE__ */ jsxRuntime.jsx(ReviewList, { children: reviews.map((review) => /* @__PURE__ */ jsxRuntime.jsx(ReviewItem, { review }, review.id)) })
10542
+ ] });
10543
+ }
10544
+ );
10545
+ ReviewSection.displayName = "ReviewSection";
9367
10546
  var List4 = styles.styled("div")(({ $hasHeading }) => ({
9368
10547
  marginTop: $hasHeading ? "2.5rem" : 0
9369
10548
  }));
@@ -9392,7 +10571,7 @@ var FaqSection = react.forwardRef(
9392
10571
  }
9393
10572
  );
9394
10573
  FaqSection.displayName = "FaqSection";
9395
- var Grid2 = styles.styled("div", {
10574
+ var Grid3 = styles.styled("div", {
9396
10575
  shouldForwardProp: (prop) => !["$columns", "$hasHeading", "$iconLeft"].includes(prop)
9397
10576
  })(({ theme, $columns, $hasHeading, $iconLeft }) => ({
9398
10577
  display: "grid",
@@ -9421,7 +10600,7 @@ var FeatureGrid = react.forwardRef(
9421
10600
  const hasHeading = Boolean(title || description);
9422
10601
  return /* @__PURE__ */ jsxRuntime.jsx(Section, { ref, ...rest, children: /* @__PURE__ */ jsxRuntime.jsxs(Container, { maxWidth, children: [
9423
10602
  hasHeading && /* @__PURE__ */ jsxRuntime.jsx(SectionHeading, { title: title ?? "", description, align: headingAlign }),
9424
- /* @__PURE__ */ jsxRuntime.jsx(Grid2, { $columns: columns, $hasHeading: hasHeading, $iconLeft: itemLayout === "icon-left", children: features.map((feature, index) => /* @__PURE__ */ jsxRuntime.jsx(
10603
+ /* @__PURE__ */ jsxRuntime.jsx(Grid3, { $columns: columns, $hasHeading: hasHeading, $iconLeft: itemLayout === "icon-left", children: features.map((feature, index) => /* @__PURE__ */ jsxRuntime.jsx(
9425
10604
  FeatureItem2,
9426
10605
  {
9427
10606
  feature,
@@ -9435,7 +10614,7 @@ var FeatureGrid = react.forwardRef(
9435
10614
  );
9436
10615
  FeatureGrid.displayName = "FeatureGrid";
9437
10616
  var featureGridColumns = [2, 3, 4];
9438
- var Grid3 = styles.styled("div", {
10617
+ var Grid4 = styles.styled("div", {
9439
10618
  shouldForwardProp: (prop) => !["$columns", "$hasHeading"].includes(prop)
9440
10619
  })(({ theme, $columns, $hasHeading }) => ({
9441
10620
  display: "grid",
@@ -9467,7 +10646,7 @@ var LogoCloud = react.forwardRef(
9467
10646
  return /* @__PURE__ */ jsxRuntime.jsx(Section, { ref, ...rest, children: /* @__PURE__ */ jsxRuntime.jsxs(Container, { maxWidth, children: [
9468
10647
  hasHeading && title && /* @__PURE__ */ jsxRuntime.jsx(SectionHeading, { title, description, align: headingAlign }),
9469
10648
  hasHeading && !title && description && /* @__PURE__ */ jsxRuntime.jsx(SectionHeading, { title: description, align: headingAlign, as: "h2" }),
9470
- /* @__PURE__ */ jsxRuntime.jsx(Grid3, { $columns: columns, $hasHeading: hasHeading, children: logos.map((logo) => {
10649
+ /* @__PURE__ */ jsxRuntime.jsx(Grid4, { $columns: columns, $hasHeading: hasHeading, children: logos.map((logo) => {
9471
10650
  const key = `${logo.name}-${logo.href ?? logo.logoUrl ?? "text"}`;
9472
10651
  return /* @__PURE__ */ jsxRuntime.jsx(
9473
10652
  LogoTile,
@@ -9617,12 +10796,12 @@ var Section2 = styles.styled("section")(({ theme }) => ({
9617
10796
  padding: "5rem 1rem",
9618
10797
  backgroundColor: theme.palette.background.default
9619
10798
  }));
9620
- var Inner = styles.styled("div")({
10799
+ var Inner2 = styles.styled("div")({
9621
10800
  maxWidth: "80rem",
9622
10801
  marginLeft: "auto",
9623
10802
  marginRight: "auto"
9624
10803
  });
9625
- var Grid4 = styles.styled("div")(({ theme }) => ({
10804
+ var Grid5 = styles.styled("div")(({ theme }) => ({
9626
10805
  marginTop: "3rem",
9627
10806
  display: "grid",
9628
10807
  gridTemplateColumns: "1fr",
@@ -9635,16 +10814,16 @@ var Grid4 = styles.styled("div")(({ theme }) => ({
9635
10814
  }
9636
10815
  }));
9637
10816
  function PricingSection({ title, description, plans, ...props }) {
9638
- return /* @__PURE__ */ jsxRuntime.jsx(Section2, { ...props, children: /* @__PURE__ */ jsxRuntime.jsxs(Inner, { children: [
10817
+ return /* @__PURE__ */ jsxRuntime.jsx(Section2, { ...props, children: /* @__PURE__ */ jsxRuntime.jsxs(Inner2, { children: [
9639
10818
  (title || description) && /* @__PURE__ */ jsxRuntime.jsx(SectionHeading, { title: title ?? "", description, align: "center" }),
9640
- /* @__PURE__ */ jsxRuntime.jsx(Grid4, { children: plans.map((plan, i) => /* @__PURE__ */ jsxRuntime.jsx(PricingCard, { ...plan }, i)) })
10819
+ /* @__PURE__ */ jsxRuntime.jsx(Grid5, { children: plans.map((plan, i) => /* @__PURE__ */ jsxRuntime.jsx(PricingCard, { ...plan }, i)) })
9641
10820
  ] }) });
9642
10821
  }
9643
10822
  var Section3 = styles.styled("section")(({ theme }) => ({
9644
10823
  padding: "5rem 1rem",
9645
10824
  backgroundColor: theme.palette.background.default
9646
10825
  }));
9647
- var Inner2 = styles.styled("div")({
10826
+ var Inner3 = styles.styled("div")({
9648
10827
  maxWidth: "80rem",
9649
10828
  marginLeft: "auto",
9650
10829
  marginRight: "auto"
@@ -9682,7 +10861,7 @@ function ArrowIcon() {
9682
10861
  return /* @__PURE__ */ jsxRuntime.jsx(ArrowForwardIcon__default.default, { "aria-hidden": "true", style: { fontSize: 24 } });
9683
10862
  }
9684
10863
  function ProcessSection({ title, description, steps, ...props }) {
9685
- return /* @__PURE__ */ jsxRuntime.jsx(Section3, { ...props, children: /* @__PURE__ */ jsxRuntime.jsxs(Inner2, { children: [
10864
+ return /* @__PURE__ */ jsxRuntime.jsx(Section3, { ...props, children: /* @__PURE__ */ jsxRuntime.jsxs(Inner3, { children: [
9686
10865
  (title || description) && /* @__PURE__ */ jsxRuntime.jsx(SectionHeading, { title: title ?? "", description, align: "center" }),
9687
10866
  /* @__PURE__ */ jsxRuntime.jsx(StepsRow, { children: steps.map((step, i) => /* @__PURE__ */ jsxRuntime.jsxs(react.Fragment, { children: [
9688
10867
  /* @__PURE__ */ jsxRuntime.jsx(StepWrapper, { children: /* @__PURE__ */ jsxRuntime.jsx(
@@ -9698,7 +10877,7 @@ function ProcessSection({ title, description, steps, ...props }) {
9698
10877
  ] }, i)) })
9699
10878
  ] }) });
9700
10879
  }
9701
- var Grid5 = styles.styled("div", {
10880
+ var Grid6 = styles.styled("div", {
9702
10881
  shouldForwardProp: (prop) => !["$columns", "$hasHeading"].includes(prop)
9703
10882
  })(({ theme, $columns, $hasHeading }) => ({
9704
10883
  display: "grid",
@@ -9727,7 +10906,7 @@ var StatsSection = react.forwardRef(
9727
10906
  const hasHeading = Boolean(title || description);
9728
10907
  return /* @__PURE__ */ jsxRuntime.jsx(Section, { ref, ...rest, children: /* @__PURE__ */ jsxRuntime.jsxs(Container, { maxWidth, children: [
9729
10908
  hasHeading && /* @__PURE__ */ jsxRuntime.jsx(SectionHeading, { title: title ?? "", description, align: headingAlign }),
9730
- /* @__PURE__ */ jsxRuntime.jsx(Grid5, { $columns: columns, $hasHeading: hasHeading, children: stats.map((stat, index) => /* @__PURE__ */ jsxRuntime.jsx(
10909
+ /* @__PURE__ */ jsxRuntime.jsx(Grid6, { $columns: columns, $hasHeading: hasHeading, children: stats.map((stat, index) => /* @__PURE__ */ jsxRuntime.jsx(
9731
10910
  StatCard,
9732
10911
  {
9733
10912
  stat,
@@ -9741,7 +10920,7 @@ var StatsSection = react.forwardRef(
9741
10920
  );
9742
10921
  StatsSection.displayName = "StatsSection";
9743
10922
  var statsSectionColumns = [2, 3, 4];
9744
- var Grid6 = styles.styled("div", {
10923
+ var Grid7 = styles.styled("div", {
9745
10924
  shouldForwardProp: (prop) => !["$columns", "$hasHeading"].includes(prop)
9746
10925
  })(({ theme, $columns, $hasHeading }) => ({
9747
10926
  display: "grid",
@@ -9770,7 +10949,7 @@ var TeamSection = react.forwardRef(
9770
10949
  return /* @__PURE__ */ jsxRuntime.jsx(Section, { ref, ...rest, children: /* @__PURE__ */ jsxRuntime.jsxs(Container, { maxWidth, children: [
9771
10950
  hasHeading && title && /* @__PURE__ */ jsxRuntime.jsx(SectionHeading, { title, description, align: headingAlign }),
9772
10951
  hasHeading && !title && description && /* @__PURE__ */ jsxRuntime.jsx(SectionHeading, { title: description, align: headingAlign, as: "h2" }),
9773
- /* @__PURE__ */ jsxRuntime.jsx(Grid6, { $columns: columns, $hasHeading: hasHeading, children: members.map((member) => /* @__PURE__ */ jsxRuntime.jsx(
10952
+ /* @__PURE__ */ jsxRuntime.jsx(Grid7, { $columns: columns, $hasHeading: hasHeading, children: members.map((member) => /* @__PURE__ */ jsxRuntime.jsx(
9774
10953
  TeamMemberCard,
9775
10954
  {
9776
10955
  member,
@@ -9783,7 +10962,7 @@ var TeamSection = react.forwardRef(
9783
10962
  );
9784
10963
  TeamSection.displayName = "TeamSection";
9785
10964
  var teamSectionColumns = [2, 3, 4];
9786
- var Grid7 = styles.styled("div", {
10965
+ var Grid8 = styles.styled("div", {
9787
10966
  shouldForwardProp: (prop) => !["$columns", "$hasHeading"].includes(prop)
9788
10967
  })(({ theme, $columns, $hasHeading }) => ({
9789
10968
  display: "grid",
@@ -9811,7 +10990,7 @@ var TestimonialsSection = react.forwardRef(
9811
10990
  const hasHeading = Boolean(title || description);
9812
10991
  return /* @__PURE__ */ jsxRuntime.jsx(Section, { ref, ...rest, children: /* @__PURE__ */ jsxRuntime.jsxs(Container, { maxWidth, children: [
9813
10992
  hasHeading && /* @__PURE__ */ jsxRuntime.jsx(SectionHeading, { title: title ?? "", description, align: headingAlign }),
9814
- /* @__PURE__ */ jsxRuntime.jsx(Grid7, { $columns: columns, $hasHeading: hasHeading, children: testimonials.map((testimonial, index) => /* @__PURE__ */ jsxRuntime.jsx(
10993
+ /* @__PURE__ */ jsxRuntime.jsx(Grid8, { $columns: columns, $hasHeading: hasHeading, children: testimonials.map((testimonial, index) => /* @__PURE__ */ jsxRuntime.jsx(
9815
10994
  TestimonialCard,
9816
10995
  {
9817
10996
  testimonial,
@@ -9896,7 +11075,7 @@ var ResultsScroll = styles.styled("div")({
9896
11075
  flex: 1,
9897
11076
  padding: "0.375rem 0"
9898
11077
  });
9899
- var GroupLabel = styles.styled("div")(({ theme }) => ({
11078
+ var GroupLabel3 = styles.styled("div")(({ theme }) => ({
9900
11079
  padding: "0.5rem 1rem 0.25rem",
9901
11080
  fontFamily: theme.typography.fontFamily,
9902
11081
  fontSize: "0.75rem",
@@ -9964,14 +11143,14 @@ var Kbd = styles.styled("kbd")(({ theme }) => ({
9964
11143
  backgroundColor: theme.palette.action.hover,
9965
11144
  lineHeight: 1.6
9966
11145
  }));
9967
- var EmptyState = styles.styled("div")(({ theme }) => ({
11146
+ var EmptyState2 = styles.styled("div")(({ theme }) => ({
9968
11147
  padding: "2.5rem 1rem",
9969
11148
  textAlign: "center",
9970
11149
  fontFamily: theme.typography.fontFamily,
9971
11150
  fontSize: "0.9375rem",
9972
11151
  color: theme.palette.text.secondary
9973
11152
  }));
9974
- var Footer5 = styles.styled("div")(({ theme }) => ({
11153
+ var Footer6 = styles.styled("div")(({ theme }) => ({
9975
11154
  display: "flex",
9976
11155
  gap: "1.25rem",
9977
11156
  padding: "0.5rem 1rem",
@@ -10098,8 +11277,8 @@ function CommandPalette({
10098
11277
  ),
10099
11278
  /* @__PURE__ */ jsxRuntime.jsx(KbdHint, { children: "esc" })
10100
11279
  ] }),
10101
- /* @__PURE__ */ jsxRuntime.jsx(ResultsScroll, { id: `${id}-listbox`, role: "listbox", "aria-label": "Wyniki", children: flat.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx(EmptyState, { children: emptyLabel }) : filtered.map((group) => /* @__PURE__ */ jsxRuntime.jsxs("div", { role: "group", "aria-labelledby": `${id}-group-${group.id}`, children: [
10102
- /* @__PURE__ */ jsxRuntime.jsx(GroupLabel, { id: `${id}-group-${group.id}`, children: group.label }),
11280
+ /* @__PURE__ */ jsxRuntime.jsx(ResultsScroll, { id: `${id}-listbox`, role: "listbox", "aria-label": "Wyniki", children: flat.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx(EmptyState2, { children: emptyLabel }) : filtered.map((group) => /* @__PURE__ */ jsxRuntime.jsxs("div", { role: "group", "aria-labelledby": `${id}-group-${group.id}`, children: [
11281
+ /* @__PURE__ */ jsxRuntime.jsx(GroupLabel3, { id: `${id}-group-${group.id}`, children: group.label }),
10103
11282
  group.items.map((item) => {
10104
11283
  const idx = globalIndex++;
10105
11284
  const isActive = idx === activeIndex;
@@ -10126,7 +11305,7 @@ function CommandPalette({
10126
11305
  );
10127
11306
  })
10128
11307
  ] }, group.id)) }),
10129
- /* @__PURE__ */ jsxRuntime.jsxs(Footer5, { id: `${id}-hint`, "aria-hidden": "true", children: [
11308
+ /* @__PURE__ */ jsxRuntime.jsxs(Footer6, { id: `${id}-hint`, "aria-hidden": "true", children: [
10130
11309
  /* @__PURE__ */ jsxRuntime.jsxs(FooterHint, { children: [
10131
11310
  /* @__PURE__ */ jsxRuntime.jsx(Kbd, { children: "\u2191" }),
10132
11311
  /* @__PURE__ */ jsxRuntime.jsx(Kbd, { children: "\u2193" }),
@@ -10185,7 +11364,7 @@ var Bar2 = styles.styled("div")(({ theme }) => ({
10185
11364
  boxShadow: "0 -4px 24px rgba(0,0,0,0.12)",
10186
11365
  animation: `${slideUp2} 300ms cubic-bezier(0.16, 1, 0.3, 1)`
10187
11366
  }));
10188
- var Inner3 = styles.styled("div")({
11367
+ var Inner4 = styles.styled("div")({
10189
11368
  maxWidth: "72rem",
10190
11369
  margin: "0 auto",
10191
11370
  padding: "1.25rem 1.5rem",
@@ -10200,7 +11379,7 @@ var TopRow = styles.styled("div")({
10200
11379
  flexWrap: "wrap"
10201
11380
  });
10202
11381
  var TextBlock = styles.styled("div")({ flex: 1, minWidth: "16rem" });
10203
- var Title9 = styles.styled("p")(({ theme }) => ({
11382
+ var Title11 = styles.styled("p")(({ theme }) => ({
10204
11383
  margin: "0 0 0.25rem",
10205
11384
  fontFamily: theme.typography.fontFamily,
10206
11385
  fontSize: "1rem",
@@ -10208,7 +11387,7 @@ var Title9 = styles.styled("p")(({ theme }) => ({
10208
11387
  color: theme.palette.text.primary,
10209
11388
  lineHeight: 1.4
10210
11389
  }));
10211
- var Description7 = styles.styled("p")(({ theme }) => ({
11390
+ var Description8 = styles.styled("p")(({ theme }) => ({
10212
11391
  margin: 0,
10213
11392
  fontFamily: theme.typography.fontFamily,
10214
11393
  fontSize: "0.875rem",
@@ -10362,11 +11541,11 @@ function CookieConsent({
10362
11541
  onSave?.(prefs);
10363
11542
  };
10364
11543
  return reactDom.createPortal(
10365
- /* @__PURE__ */ jsxRuntime.jsx(Bar2, { role: "region", "aria-label": "Zgoda na pliki cookie", "aria-live": "polite", children: /* @__PURE__ */ jsxRuntime.jsxs(Inner3, { children: [
11544
+ /* @__PURE__ */ jsxRuntime.jsx(Bar2, { role: "region", "aria-label": "Zgoda na pliki cookie", "aria-live": "polite", children: /* @__PURE__ */ jsxRuntime.jsxs(Inner4, { children: [
10366
11545
  /* @__PURE__ */ jsxRuntime.jsxs(TopRow, { children: [
10367
11546
  /* @__PURE__ */ jsxRuntime.jsxs(TextBlock, { children: [
10368
- /* @__PURE__ */ jsxRuntime.jsx(Title9, { children: title }),
10369
- /* @__PURE__ */ jsxRuntime.jsxs(Description7, { children: [
11547
+ /* @__PURE__ */ jsxRuntime.jsx(Title11, { children: title }),
11548
+ /* @__PURE__ */ jsxRuntime.jsxs(Description8, { children: [
10370
11549
  description,
10371
11550
  privacyPolicyLabel && privacyPolicyHref && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
10372
11551
  " ",
@@ -10416,12 +11595,12 @@ function CookieConsent({
10416
11595
  );
10417
11596
  }
10418
11597
  var defaultCookieCategories = DEFAULT_CATEGORIES;
10419
- var Root34 = styles.styled("footer")(({ theme }) => ({
11598
+ var Root47 = styles.styled("footer")(({ theme }) => ({
10420
11599
  width: "100%",
10421
11600
  backgroundColor: theme.palette.background.paper,
10422
11601
  borderTop: `1px solid ${theme.palette.divider}`
10423
11602
  }));
10424
- var Inner4 = styles.styled("div")({
11603
+ var Inner5 = styles.styled("div")({
10425
11604
  maxWidth: "72rem",
10426
11605
  margin: "0 auto",
10427
11606
  padding: "3rem 1.5rem 2rem"
@@ -10443,7 +11622,7 @@ var BrandBlock = styles.styled("div")({
10443
11622
  flexDirection: "column",
10444
11623
  gap: "0.75rem"
10445
11624
  });
10446
- var Description8 = styles.styled("p")(({ theme }) => ({
11625
+ var Description9 = styles.styled("p")(({ theme }) => ({
10447
11626
  margin: 0,
10448
11627
  fontFamily: theme.typography.fontFamily,
10449
11628
  fontSize: "0.875rem",
@@ -10549,7 +11728,7 @@ var SOCIAL_ICONS = {
10549
11728
  /* @__PURE__ */ jsxRuntime.jsx("polygon", { fill: "white", points: "9.75 15.02 15.5 12 9.75 8.98 9.75 15.02" })
10550
11729
  ] })
10551
11730
  };
10552
- function Footer6({
11731
+ function Footer7({
10553
11732
  logo,
10554
11733
  description,
10555
11734
  columns = [],
@@ -10557,11 +11736,11 @@ function Footer6({
10557
11736
  copyright
10558
11737
  }) {
10559
11738
  const colCount = columns.length;
10560
- return /* @__PURE__ */ jsxRuntime.jsx(Root34, { children: /* @__PURE__ */ jsxRuntime.jsxs(Inner4, { children: [
11739
+ return /* @__PURE__ */ jsxRuntime.jsx(Root47, { children: /* @__PURE__ */ jsxRuntime.jsxs(Inner5, { children: [
10561
11740
  (logo || description || colCount > 0) && /* @__PURE__ */ jsxRuntime.jsxs(TopRow2, { style: { "--col-count": colCount }, children: [
10562
11741
  (logo || description) && /* @__PURE__ */ jsxRuntime.jsxs(BrandBlock, { children: [
10563
11742
  logo,
10564
- description && /* @__PURE__ */ jsxRuntime.jsx(Description8, { children: description })
11743
+ description && /* @__PURE__ */ jsxRuntime.jsx(Description9, { children: description })
10565
11744
  ] }),
10566
11745
  columns.map((col) => /* @__PURE__ */ jsxRuntime.jsxs(Column, { children: [
10567
11746
  /* @__PURE__ */ jsxRuntime.jsx(ColumnTitle, { children: col.title }),
@@ -10584,7 +11763,7 @@ function Footer6({
10584
11763
  ] })
10585
11764
  ] }) });
10586
11765
  }
10587
- var Root35 = styles.styled("header", {
11766
+ var Root48 = styles.styled("header", {
10588
11767
  shouldForwardProp: (p) => p !== "$sticky" && p !== "$variant"
10589
11768
  })(({ theme, $sticky, $variant }) => ({
10590
11769
  position: $sticky ? "sticky" : "relative",
@@ -10595,15 +11774,17 @@ var Root35 = styles.styled("header", {
10595
11774
  borderBottom: $variant === "transparent" ? "none" : `1px solid ${theme.palette.divider}`,
10596
11775
  boxShadow: $variant === "transparent" ? "none" : "0 1px 4px rgba(0,0,0,0.08)"
10597
11776
  }));
10598
- var Inner5 = styles.styled("div")({
10599
- maxWidth: "72rem",
11777
+ var Inner6 = styles.styled("div", {
11778
+ shouldForwardProp: (p) => p !== "$maxWidth"
11779
+ })(({ $maxWidth }) => ({
11780
+ maxWidth: typeof $maxWidth === "number" ? `${$maxWidth}px` : $maxWidth,
10600
11781
  margin: "0 auto",
10601
11782
  padding: "0 1.5rem",
10602
11783
  height: "3.75rem",
10603
11784
  display: "flex",
10604
11785
  alignItems: "center",
10605
11786
  gap: "1.5rem"
10606
- });
11787
+ }));
10607
11788
  var LogoSlot = styles.styled("div")({
10608
11789
  flexShrink: 0,
10609
11790
  display: "flex",
@@ -10699,11 +11880,12 @@ function Navbar({
10699
11880
  navItems = [],
10700
11881
  actions,
10701
11882
  sticky = false,
10702
- variant = "filled"
11883
+ variant = "filled",
11884
+ maxWidth = "72rem"
10703
11885
  }) {
10704
11886
  const [mobileOpen, setMobileOpen] = react.useState(false);
10705
- return /* @__PURE__ */ jsxRuntime.jsxs(Root35, { $sticky: sticky, $variant: variant, children: [
10706
- /* @__PURE__ */ jsxRuntime.jsxs(Inner5, { children: [
11887
+ return /* @__PURE__ */ jsxRuntime.jsxs(Root48, { $sticky: sticky, $variant: variant, children: [
11888
+ /* @__PURE__ */ jsxRuntime.jsxs(Inner6, { $maxWidth: maxWidth, children: [
10707
11889
  logo && /* @__PURE__ */ jsxRuntime.jsx(LogoSlot, { children: logo }),
10708
11890
  /* @__PURE__ */ jsxRuntime.jsx(Nav3, { "aria-label": "Nawigacja g\u0142\xF3wna", children: navItems.map((item) => /* @__PURE__ */ jsxRuntime.jsx(NavLink, { href: item.href, $active: !!item.active, children: item.label }, item.href)) }),
10709
11891
  (actions || navItems.length > 0) && /* @__PURE__ */ jsxRuntime.jsxs(RightSlot, { children: [
@@ -10823,17 +12005,18 @@ var MyThemeProvider = ({
10823
12005
  }
10824
12006
  }, [theme, mode]);
10825
12007
  return /* @__PURE__ */ jsxRuntime.jsxs(styles.ThemeProvider, { theme: resolvedTheme, children: [
10826
- !disableCssBaseline && /* @__PURE__ */ jsxRuntime.jsx(CssBaseline__default.default, {}),
12008
+ !disableCssBaseline && /* @__PURE__ */ jsxRuntime.jsx(material.CssBaseline, {}),
10827
12009
  children
10828
12010
  ] });
10829
12011
  };
10830
12012
 
10831
12013
  exports.Accordion = Accordion;
12014
+ exports.Alert = Alert;
10832
12015
  exports.Article = Article;
10833
12016
  exports.AspectRatio = AspectRatio;
10834
12017
  exports.Avatar = Avatar;
10835
12018
  exports.BackToTop = BackToTop;
10836
- exports.Badge = Badge;
12019
+ exports.Badge = Badge2;
10837
12020
  exports.BaseInput = BaseInput;
10838
12021
  exports.BaseSelectInput = BaseSelectInput;
10839
12022
  exports.Box = Box2;
@@ -10841,24 +12024,28 @@ exports.Breadcrumbs = Breadcrumbs;
10841
12024
  exports.Button = Button;
10842
12025
  exports.Card = Card;
10843
12026
  exports.Carousel = Carousel;
12027
+ exports.CartButton = CartButton;
10844
12028
  exports.CartDrawer = CartDrawer;
12029
+ exports.CategoryCard = CategoryCard;
10845
12030
  exports.CheckboxInput = CheckboxInput;
10846
12031
  exports.CommandPalette = CommandPalette;
10847
12032
  exports.CompareTool = CompareTool;
10848
12033
  exports.Container = Container;
10849
12034
  exports.ContextMenu = ContextMenu;
10850
12035
  exports.CookieConsent = CookieConsent;
12036
+ exports.CountdownTimer = CountdownTimer;
10851
12037
  exports.CountryFlag = CountryFlag;
10852
12038
  exports.CouponInput = CouponInput;
10853
12039
  exports.DateTimePicker = DateTimePicker;
10854
12040
  exports.EmailInput = EmailInput;
12041
+ exports.EmptyState = EmptyState;
10855
12042
  exports.FaqItem = FaqItem;
10856
12043
  exports.FaqSection = FaqSection;
10857
12044
  exports.FeatureGrid = FeatureGrid;
10858
12045
  exports.FeatureItem = FeatureItem2;
10859
12046
  exports.FileInput = FileInput;
10860
12047
  exports.FilterSidebar = FilterSidebar;
10861
- exports.Footer = Footer6;
12048
+ exports.Footer = Footer7;
10862
12049
  exports.Lightbox = Lightbox;
10863
12050
  exports.List = List3;
10864
12051
  exports.LogoCloud = LogoCloud;
@@ -10877,6 +12064,7 @@ exports.PaginationButton = PaginationButton;
10877
12064
  exports.PaginationEllipsis = PaginationEllipsis;
10878
12065
  exports.Partners = Partners;
10879
12066
  exports.PasswordInput = PasswordInput;
12067
+ exports.PaymentMethodSelector = PaymentMethodSelector;
10880
12068
  exports.PhoneInput = PhoneInput;
10881
12069
  exports.PostCard = PostCard;
10882
12070
  exports.PostCardImage = PostCardImage;
@@ -10887,6 +12075,7 @@ exports.PricingSection = PricingSection;
10887
12075
  exports.ProcessSection = ProcessSection;
10888
12076
  exports.ProcessStep = ProcessStep;
10889
12077
  exports.ProductCard = ProductCard;
12078
+ exports.ProductCardHorizontal = ProductCardHorizontal;
10890
12079
  exports.ProductGallery = ProductGallery;
10891
12080
  exports.ProgressBar = ProgressBar;
10892
12081
  exports.ProgressCircle = ProgressCircle;
@@ -10895,11 +12084,16 @@ exports.Prose = Prose;
10895
12084
  exports.QuantitySelector = QuantitySelector;
10896
12085
  exports.RangeSlider = RangeSlider;
10897
12086
  exports.Rating = Rating;
12087
+ exports.RelatedProducts = RelatedProducts;
12088
+ exports.ReviewSection = ReviewSection;
12089
+ exports.SaleBadge = SaleBadge;
10898
12090
  exports.SearchInput = SearchInput;
10899
12091
  exports.Section = Section;
10900
12092
  exports.SectionHeading = SectionHeading;
10901
12093
  exports.SelectInput = SelectInput;
12094
+ exports.ShippingSelector = ShippingSelector;
10902
12095
  exports.Skeleton = Skeleton;
12096
+ exports.SortBar = SortBar;
10903
12097
  exports.Spinner = Spinner3;
10904
12098
  exports.StatCard = StatCard;
10905
12099
  exports.StatsSection = StatsSection;
@@ -10913,8 +12107,11 @@ exports.TestimonialsSection = TestimonialsSection;
10913
12107
  exports.TextInput = TextInput;
10914
12108
  exports.TextareaInput = TextareaInput;
10915
12109
  exports.Timeline = Timeline;
12110
+ exports.VariantSelector = VariantSelector;
10916
12111
  exports.VideoPlayer = VideoPlayer;
12112
+ exports.WishlistButton = WishlistButton;
10917
12113
  exports.accordionVariants = accordionVariants;
12114
+ exports.alertSeverities = alertSeverities;
10918
12115
  exports.aspectRatioPresets = aspectRatioPresets;
10919
12116
  exports.avatarColors = avatarColors;
10920
12117
  exports.avatarSizes = avatarSizes;
@@ -10924,6 +12121,7 @@ exports.badgeVariants = badgeVariants;
10924
12121
  exports.cardPaddings = cardPaddings;
10925
12122
  exports.cardRoundeds = cardRoundeds;
10926
12123
  exports.cardVariants = cardVariants;
12124
+ exports.countdownTimerVariants = countdownTimerVariants;
10927
12125
  exports.createMyTheme = createMyTheme;
10928
12126
  exports.dateTimePickerModes = dateTimePickerModes;
10929
12127
  exports.defaultCookieCategories = defaultCookieCategories;
@@ -10946,6 +12144,8 @@ exports.progressCircleSizes = progressCircleSizes;
10946
12144
  exports.progressCircleVariants = progressCircleVariants;
10947
12145
  exports.promoStripVariants = promoStripVariants;
10948
12146
  exports.rangeSliderSizes = rangeSliderSizes;
12147
+ exports.relatedProductsLayouts = relatedProductsLayouts;
12148
+ exports.saleBadgeVariants = saleBadgeVariants;
10949
12149
  exports.sectionHeadingAligns = sectionHeadingAligns;
10950
12150
  exports.skeletonVariants = skeletonVariants;
10951
12151
  exports.spinnerColors = spinnerColors;
@@ -10962,5 +12162,6 @@ exports.themeHighContrast = themeHighContrast;
10962
12162
  exports.themeLight = themeLight;
10963
12163
  exports.timelineItemStatuses = timelineItemStatuses;
10964
12164
  exports.timelineVariants = timelineVariants;
12165
+ exports.variantSelectorModes = variantSelectorModes;
10965
12166
  //# sourceMappingURL=index.cjs.map
10966
12167
  //# sourceMappingURL=index.cjs.map