@szymonpiatek/designsystem 0.0.6 → 0.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,7 +1,10 @@
1
1
  import { forwardRef, useId, useRef, useEffect, useState, useCallback, useMemo, Fragment as Fragment$1 } from 'react';
2
2
  import { styled, alpha, keyframes, createTheme, useTheme, ThemeProvider } from '@mui/material/styles';
3
- import CircularProgress from '@mui/material/CircularProgress';
3
+ import { CircularProgress, Container as Container$1, CssBaseline } from '@mui/material';
4
4
  import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
5
+ import ShoppingCartIcon from '@mui/icons-material/ShoppingCart';
6
+ import FavoriteIcon from '@mui/icons-material/Favorite';
7
+ import FavoriteBorderIcon from '@mui/icons-material/FavoriteBorder';
5
8
  import ExpandMoreIcon from '@mui/icons-material/ExpandMore';
6
9
  import FileUploadIcon from '@mui/icons-material/FileUpload';
7
10
  import CloudUploadMuiIcon from '@mui/icons-material/CloudUpload';
@@ -20,15 +23,27 @@ import ChevronRightIcon from '@mui/icons-material/ChevronRight';
20
23
  import KeyboardArrowUpIcon from '@mui/icons-material/KeyboardArrowUp';
21
24
  import KeyboardArrowDownIcon from '@mui/icons-material/KeyboardArrowDown';
22
25
  import { keyframes as keyframes$1 } from '@emotion/react';
26
+ import ImageIcon from '@mui/icons-material/Image';
23
27
  import ArticleIcon from '@mui/icons-material/Article';
24
28
  import CheckCircleOutlinedIcon from '@mui/icons-material/CheckCircleOutlined';
25
29
  import HighlightOffIcon from '@mui/icons-material/HighlightOff';
30
+ import ContentCopyIcon from '@mui/icons-material/ContentCopy';
31
+ import LocalOfferIcon from '@mui/icons-material/LocalOffer';
32
+ import CreditCardOutlinedIcon from '@mui/icons-material/CreditCardOutlined';
33
+ import LocalShippingOutlinedIcon from '@mui/icons-material/LocalShippingOutlined';
34
+ import GridViewIcon from '@mui/icons-material/GridView';
35
+ import ViewListIcon from '@mui/icons-material/ViewList';
26
36
  import { createPortal } from 'react-dom';
27
37
  import KeyboardDoubleArrowLeftIcon from '@mui/icons-material/KeyboardDoubleArrowLeft';
28
38
  import KeyboardDoubleArrowRightIcon from '@mui/icons-material/KeyboardDoubleArrowRight';
39
+ import InfoOutlinedIcon from '@mui/icons-material/InfoOutlined';
40
+ import WarningAmberOutlinedIcon from '@mui/icons-material/WarningAmberOutlined';
41
+ import ErrorOutlineOutlinedIcon from '@mui/icons-material/ErrorOutlineOutlined';
42
+ import InboxOutlinedIcon from '@mui/icons-material/InboxOutlined';
43
+ import VerifiedIcon from '@mui/icons-material/Verified';
44
+ import ThumbUpOutlinedIcon from '@mui/icons-material/ThumbUpOutlined';
29
45
  import ArrowForwardIcon from '@mui/icons-material/ArrowForward';
30
46
  import MenuIcon from '@mui/icons-material/Menu';
31
- import CssBaseline from '@mui/material/CssBaseline';
32
47
 
33
48
  // src/components/atoms/buttons/Button/Button.tsx
34
49
  var sizeMap = {
@@ -139,6 +154,102 @@ var Button = forwardRef(
139
154
  )
140
155
  );
141
156
  Button.displayName = "Button";
157
+ var iconSizeMap = {
158
+ sm: 18,
159
+ md: 20,
160
+ lg: 24
161
+ };
162
+ var Root = styled("span")({
163
+ position: "relative",
164
+ display: "inline-flex"
165
+ });
166
+ var Badge = styled("span")(({ theme }) => ({
167
+ position: "absolute",
168
+ top: "-4px",
169
+ right: "-4px",
170
+ backgroundColor: theme.palette.primary.main,
171
+ color: "#fff",
172
+ borderRadius: "9999px",
173
+ fontSize: "0.625rem",
174
+ fontWeight: 700,
175
+ minWidth: "16px",
176
+ height: "16px",
177
+ display: "flex",
178
+ alignItems: "center",
179
+ justifyContent: "center",
180
+ padding: "0 3px",
181
+ pointerEvents: "none",
182
+ fontFamily: theme.typography.fontFamily,
183
+ lineHeight: 1
184
+ }));
185
+ var CartButton = forwardRef(
186
+ ({ count, size = "sm", label = "Koszyk", disabled, onClick, className, "aria-label": ariaLabel }, ref) => /* @__PURE__ */ jsxs(Root, { className, children: [
187
+ /* @__PURE__ */ jsx(
188
+ Button,
189
+ {
190
+ ref,
191
+ variant: "ghost",
192
+ size,
193
+ disabled,
194
+ onClick,
195
+ "aria-label": ariaLabel ?? (count ? `${label} (${count})` : label),
196
+ children: /* @__PURE__ */ jsx("span", { style: { display: "flex" }, children: /* @__PURE__ */ jsx(ShoppingCartIcon, { "aria-hidden": true, style: { fontSize: iconSizeMap[size] } }) })
197
+ }
198
+ ),
199
+ count != null && count > 0 && /* @__PURE__ */ jsx(Badge, { "aria-hidden": true, children: count > 99 ? "99+" : count })
200
+ ] })
201
+ );
202
+ CartButton.displayName = "CartButton";
203
+ var sizeMap2 = {
204
+ sm: { iconSize: 16, padding: "0.375rem" },
205
+ md: { iconSize: 20, padding: "0.5rem" },
206
+ lg: { iconSize: 24, padding: "0.625rem" }
207
+ };
208
+ var Root2 = styled("button")(
209
+ ({ theme, $active, $size }) => ({
210
+ appearance: "none",
211
+ border: `1px solid ${$active ? theme.palette.error.main : theme.palette.divider}`,
212
+ background: $active ? `${theme.palette.error.main}14` : "transparent",
213
+ cursor: "pointer",
214
+ display: "inline-flex",
215
+ alignItems: "center",
216
+ justifyContent: "center",
217
+ borderRadius: "50%",
218
+ padding: sizeMap2[$size].padding,
219
+ color: $active ? theme.palette.error.main : theme.palette.text.secondary,
220
+ transition: "color 150ms ease, background-color 150ms ease, border-color 150ms ease",
221
+ "&:hover:not(:disabled)": {
222
+ color: theme.palette.error.main,
223
+ borderColor: theme.palette.error.main,
224
+ backgroundColor: `${theme.palette.error.main}14`
225
+ },
226
+ "&:focus-visible": {
227
+ outline: `3px solid ${theme.palette.primary.main}`,
228
+ outlineOffset: "2px"
229
+ },
230
+ "&:disabled": {
231
+ opacity: 0.4,
232
+ cursor: "not-allowed"
233
+ }
234
+ })
235
+ );
236
+ var WishlistButton = forwardRef(
237
+ ({ active = false, loading = false, size = "md", label, ...props }, ref) => /* @__PURE__ */ jsx(
238
+ Root2,
239
+ {
240
+ ref,
241
+ type: "button",
242
+ $active: active,
243
+ $size: size,
244
+ disabled: loading || props.disabled,
245
+ "aria-label": label ?? (active ? "Usu\u0144 z listy \u017Cycze\u0144" : "Dodaj do listy \u017Cycze\u0144"),
246
+ "aria-pressed": active,
247
+ ...props,
248
+ children: loading ? /* @__PURE__ */ jsx(CircularProgress, { size: sizeMap2[size].iconSize, color: "inherit", thickness: 5 }) : active ? /* @__PURE__ */ jsx(FavoriteIcon, { "aria-hidden": true, style: { fontSize: sizeMap2[size].iconSize } }) : /* @__PURE__ */ jsx(FavoriteBorderIcon, { "aria-hidden": true, style: { fontSize: sizeMap2[size].iconSize } })
249
+ }
250
+ )
251
+ );
252
+ WishlistButton.displayName = "WishlistButton";
142
253
  var StyledHelperText = styled("p")(({ theme, $error }) => ({
143
254
  margin: "0.25rem 0 0",
144
255
  fontSize: "0.75rem",
@@ -195,7 +306,7 @@ var inputColors = (theme, error) => ({
195
306
  boxShadow: `0 0 0 3px ${error ? theme.palette.error.main : theme.palette.primary.main}33`
196
307
  }
197
308
  });
198
- var Root = styled("div")(({ $fullWidth }) => ({
309
+ var Root3 = styled("div")(({ $fullWidth }) => ({
199
310
  display: $fullWidth ? "block" : "inline-block",
200
311
  width: $fullWidth ? "100%" : "auto"
201
312
  }));
@@ -260,7 +371,7 @@ var BaseInput = forwardRef(
260
371
  }, ref) => {
261
372
  const autoId = useId();
262
373
  const inputId = id ?? autoId;
263
- return /* @__PURE__ */ jsxs(Root, { $fullWidth: fullWidth, children: [
374
+ return /* @__PURE__ */ jsxs(Root3, { $fullWidth: fullWidth, children: [
264
375
  label && /* @__PURE__ */ jsx(Label, { htmlFor: inputId, error, size, children: label }),
265
376
  /* @__PURE__ */ jsxs(
266
377
  InputWrapper,
@@ -364,7 +475,7 @@ var LabelText = styled("span")(
364
475
  userSelect: "none"
365
476
  })
366
477
  );
367
- var Root2 = styled("span")(({ $disabled }) => ({
478
+ var Root4 = styled("span")(({ $disabled }) => ({
368
479
  display: "inline-flex",
369
480
  flexDirection: "column",
370
481
  cursor: $disabled ? "not-allowed" : "pointer"
@@ -388,7 +499,7 @@ var CheckboxInput = forwardRef(
388
499
  innerRef.current.indeterminate = indeterminate;
389
500
  }
390
501
  }, [indeterminate]);
391
- return /* @__PURE__ */ jsxs(Root2, { $disabled: disabled, children: [
502
+ return /* @__PURE__ */ jsxs(Root4, { $disabled: disabled, children: [
392
503
  /* @__PURE__ */ jsxs(Row, { htmlFor: inputId, children: [
393
504
  /* @__PURE__ */ jsx(Box, { $size: size, $error: error, $disabled: disabled, children: /* @__PURE__ */ jsx(
394
505
  HiddenInput,
@@ -422,7 +533,7 @@ var CloudUploadIcon = ({ size }) => /* @__PURE__ */ jsx(CloudUploadMuiIcon, { "a
422
533
  var FileDocIcon = ({ size }) => /* @__PURE__ */ jsx(InsertDriveFileIcon, { "aria-hidden": true, style: { fontSize: size } });
423
534
  var TrashIcon = ({ size = 12 }) => /* @__PURE__ */ jsx(DeleteOutlinedIcon, { "aria-hidden": true, style: { fontSize: size } });
424
535
  var XIcon = () => /* @__PURE__ */ jsx(CloseIcon, { "aria-hidden": true, style: { fontSize: 11 } });
425
- var Root3 = styled("div")(({ $fullWidth }) => ({
536
+ var Root5 = styled("div")(({ $fullWidth }) => ({
426
537
  display: $fullWidth ? "block" : "inline-block",
427
538
  width: $fullWidth ? "100%" : "auto"
428
539
  }));
@@ -912,7 +1023,7 @@ var FileInput = forwardRef(
912
1023
  }
913
1024
  );
914
1025
  if (variant === "dropzone") {
915
- return /* @__PURE__ */ jsxs(Root3, { $fullWidth: fullWidth, children: [
1026
+ return /* @__PURE__ */ jsxs(Root5, { $fullWidth: fullWidth, children: [
916
1027
  label && /* @__PURE__ */ jsx(Label, { htmlFor: inputId, error, size, children: label }),
917
1028
  /* @__PURE__ */ jsxs(
918
1029
  DropzoneArea,
@@ -1040,7 +1151,7 @@ var FileInput = forwardRef(
1040
1151
  helperText && /* @__PURE__ */ jsx(HelperText, { error, children: helperText })
1041
1152
  ] });
1042
1153
  }
1043
- return /* @__PURE__ */ jsxs(Root3, { $fullWidth: fullWidth, children: [
1154
+ return /* @__PURE__ */ jsxs(Root5, { $fullWidth: fullWidth, children: [
1044
1155
  label && /* @__PURE__ */ jsx(Label, { htmlFor: inputId, error, size, children: label }),
1045
1156
  /* @__PURE__ */ jsxs(
1046
1157
  CompactWrapper,
@@ -1159,7 +1270,7 @@ var triggerColors = (theme, error, open) => ({
1159
1270
  borderColor: error ? theme.palette.error.dark : theme.palette.text.secondary
1160
1271
  }
1161
1272
  });
1162
- var Root4 = styled("div")(({ $fullWidth }) => ({
1273
+ var Root6 = styled("div")(({ $fullWidth }) => ({
1163
1274
  display: $fullWidth ? "block" : "inline-block",
1164
1275
  width: $fullWidth ? "100%" : "auto",
1165
1276
  position: "relative"
@@ -1276,7 +1387,7 @@ var BaseSelectInput = ({
1276
1387
  }, [isOpen, close]);
1277
1388
  const selectedLabel = options.find((o) => o.value === value)?.label;
1278
1389
  const defaultTriggerContent = /* @__PURE__ */ jsx("span", { style: { opacity: selectedLabel ? 1 : 0.5 }, children: selectedLabel ?? placeholder });
1279
- return /* @__PURE__ */ jsxs(Root4, { $fullWidth: fullWidth, ref: rootRef, children: [
1390
+ return /* @__PURE__ */ jsxs(Root6, { $fullWidth: fullWidth, ref: rootRef, children: [
1280
1391
  label && /* @__PURE__ */ jsx(Label, { htmlFor: inputId, error, size, children: label }),
1281
1392
  /* @__PURE__ */ jsxs(
1282
1393
  Trigger,
@@ -1556,7 +1667,7 @@ var borderColors = (theme, error) => ({
1556
1667
  boxShadow: `0 0 0 3px ${error ? theme.palette.error.main : theme.palette.primary.main}33`
1557
1668
  }
1558
1669
  });
1559
- var Root5 = styled("div")(({ $fullWidth }) => ({
1670
+ var Root7 = styled("div")(({ $fullWidth }) => ({
1560
1671
  display: $fullWidth ? "block" : "inline-block",
1561
1672
  width: $fullWidth ? "100%" : "auto"
1562
1673
  }));
@@ -1597,7 +1708,7 @@ var TextareaInput = forwardRef(
1597
1708
  }, ref) => {
1598
1709
  const autoId = useId();
1599
1710
  const inputId = id ?? autoId;
1600
- return /* @__PURE__ */ jsxs(Root5, { $fullWidth: fullWidth, children: [
1711
+ return /* @__PURE__ */ jsxs(Root7, { $fullWidth: fullWidth, children: [
1601
1712
  label && /* @__PURE__ */ jsx(Label, { htmlFor: inputId, error, size, children: label }),
1602
1713
  /* @__PURE__ */ jsx(
1603
1714
  StyledTextarea,
@@ -1619,14 +1730,14 @@ var TextareaInput = forwardRef(
1619
1730
  }
1620
1731
  );
1621
1732
  TextareaInput.displayName = "TextareaInput";
1622
- var sizeMap2 = { sm: "1em", md: "1.25em", lg: "1.75em" };
1733
+ var sizeMap3 = { sm: "1em", md: "1.25em", lg: "1.75em" };
1623
1734
  var toFlagEmoji = (code) => code.toUpperCase().replace(/[A-Z]/g, (char) => String.fromCodePoint(127462 + char.charCodeAt(0) - 65));
1624
1735
  var CountryFlag = ({ countryCode, size = "md", style, ...rest }) => /* @__PURE__ */ jsx(
1625
1736
  "span",
1626
1737
  {
1627
1738
  role: "img",
1628
1739
  "aria-label": `Flag: ${countryCode}`,
1629
- style: { fontSize: sizeMap2[size], lineHeight: 1, display: "inline-flex", ...style },
1740
+ style: { fontSize: sizeMap3[size], lineHeight: 1, display: "inline-flex", ...style },
1630
1741
  ...rest,
1631
1742
  children: toFlagEmoji(countryCode)
1632
1743
  }
@@ -3222,7 +3333,7 @@ var wrapperColors = (theme, error, focused) => ({
3222
3333
  borderColor: !focused ? error ? theme.palette.error.dark : theme.palette.text.secondary : void 0
3223
3334
  }
3224
3335
  });
3225
- var Root6 = styled("div")(({ $fullWidth }) => ({
3336
+ var Root8 = styled("div")(({ $fullWidth }) => ({
3226
3337
  display: $fullWidth ? "block" : "inline-block",
3227
3338
  width: $fullWidth ? "100%" : "auto"
3228
3339
  }));
@@ -3459,7 +3570,7 @@ var PhoneInput = forwardRef(
3459
3570
  return () => document.removeEventListener("mousedown", handler);
3460
3571
  }, [isOpen, close]);
3461
3572
  const derivedPlaceholder = placeholder ?? (selectedCountry.minLength === selectedCountry.maxLength ? `${selectedCountry.maxLength} ${digitsLabel}` : `${selectedCountry.minLength}\u2013${selectedCountry.maxLength} ${digitsLabel}`);
3462
- return /* @__PURE__ */ jsxs(Root6, { $fullWidth: fullWidth, ref: rootRef, children: [
3573
+ return /* @__PURE__ */ jsxs(Root8, { $fullWidth: fullWidth, ref: rootRef, children: [
3463
3574
  label && /* @__PURE__ */ jsx(Label, { htmlFor: inputId, error, size, children: label }),
3464
3575
  /* @__PURE__ */ jsxs(
3465
3576
  InputWrapper2,
@@ -3574,7 +3685,7 @@ function getActiveColor(color, theme) {
3574
3685
  return theme.palette.primary.main;
3575
3686
  }
3576
3687
  }
3577
- var Root7 = styled("span")(({ $disabled }) => ({
3688
+ var Root9 = styled("span")(({ $disabled }) => ({
3578
3689
  display: "inline-flex",
3579
3690
  flexDirection: "column",
3580
3691
  cursor: $disabled ? "not-allowed" : "pointer"
@@ -3659,7 +3770,7 @@ var SwitchInput = forwardRef(
3659
3770
  }, ref) => {
3660
3771
  const autoId = useId();
3661
3772
  const inputId = id ?? autoId;
3662
- return /* @__PURE__ */ jsxs(Root7, { $disabled: disabled, children: [
3773
+ return /* @__PURE__ */ jsxs(Root9, { $disabled: disabled, children: [
3663
3774
  /* @__PURE__ */ jsxs(Row2, { htmlFor: inputId, $placement: labelPlacement, children: [
3664
3775
  /* @__PURE__ */ jsxs(Track, { $size: size, $color: color, $error: error, $disabled: disabled, children: [
3665
3776
  /* @__PURE__ */ jsx(
@@ -3685,7 +3796,7 @@ SwitchInput.displayName = "SwitchInput";
3685
3796
  var switchColors = ["primary", "secondary", "success", "danger"];
3686
3797
  var TRACK_H2 = { sm: "0.25rem", md: "0.375rem", lg: "0.5rem" };
3687
3798
  var THUMB_S2 = { sm: "0.875rem", md: "1.125rem", lg: "1.375rem" };
3688
- var Root8 = styled("div")({
3799
+ var Root10 = styled("div")({
3689
3800
  display: "flex",
3690
3801
  flexDirection: "column",
3691
3802
  gap: "0.5rem",
@@ -3808,7 +3919,7 @@ var RangeSlider = forwardRef(
3808
3919
  const loP = pct(lo, min, max);
3809
3920
  const hiP = pct(hi, min, max);
3810
3921
  const valueLabel = range ? `${formatValue2(lo)} \u2013 ${formatValue2(hi)}` : formatValue2(lo);
3811
- return /* @__PURE__ */ jsxs(Root8, { ref, ...props, children: [
3922
+ return /* @__PURE__ */ jsxs(Root10, { ref, ...props, children: [
3812
3923
  (label || showValue) && /* @__PURE__ */ jsxs(LabelRow, { children: [
3813
3924
  label && /* @__PURE__ */ jsx("span", { children: label }),
3814
3925
  showValue && /* @__PURE__ */ jsx("span", { children: valueLabel })
@@ -3938,7 +4049,7 @@ var inputColors2 = (theme, error) => ({
3938
4049
  boxShadow: `0 0 0 3px ${error ? theme.palette.error.main : theme.palette.primary.main}33`
3939
4050
  }
3940
4051
  });
3941
- var Root9 = styled("div")(({ $fullWidth }) => ({
4052
+ var Root11 = styled("div")(({ $fullWidth }) => ({
3942
4053
  display: $fullWidth ? "block" : "inline-block",
3943
4054
  width: $fullWidth ? "100%" : "auto",
3944
4055
  position: "relative"
@@ -4333,7 +4444,7 @@ var DateTimePicker = forwardRef(
4333
4444
  const showCalendar = mode !== "time";
4334
4445
  const showTime = mode !== "date";
4335
4446
  const needsConfirm = mode !== "date";
4336
- return /* @__PURE__ */ jsxs(Root9, { ref: rootRef, $fullWidth: fullWidth, children: [
4447
+ return /* @__PURE__ */ jsxs(Root11, { ref: rootRef, $fullWidth: fullWidth, children: [
4337
4448
  label && /* @__PURE__ */ jsx(Label, { htmlFor: inputId, error, size, children: label }),
4338
4449
  /* @__PURE__ */ jsxs(
4339
4450
  InputWrapper3,
@@ -4740,7 +4851,7 @@ var StyledBadge = styled("span", {
4740
4851
  fontFamily: theme.typography.fontFamily,
4741
4852
  ...getVariantStyles2($variant, theme)
4742
4853
  }));
4743
- function Badge({ variant = "default", ...props }) {
4854
+ function Badge2({ variant = "default", ...props }) {
4744
4855
  return /* @__PURE__ */ jsx(StyledBadge, { $variant: variant, ...props });
4745
4856
  }
4746
4857
  var badgeVariants = [
@@ -4752,7 +4863,41 @@ var badgeVariants = [
4752
4863
  "ghost",
4753
4864
  "promo"
4754
4865
  ];
4755
- var sizeMap3 = {
4866
+ function getBgColor(variant) {
4867
+ switch (variant) {
4868
+ case "flash":
4869
+ return "#f59e0b";
4870
+ case "new":
4871
+ return "#3b82f6";
4872
+ case "hot":
4873
+ return "#ef4444";
4874
+ default:
4875
+ return "#16a34a";
4876
+ }
4877
+ }
4878
+ var Root12 = styled("span", {
4879
+ shouldForwardProp: (prop) => prop !== "$variant"
4880
+ })(({ theme, $variant }) => ({
4881
+ display: "inline-flex",
4882
+ alignItems: "center",
4883
+ gap: "0.25rem",
4884
+ borderRadius: "0.375rem",
4885
+ padding: "0.25rem 0.625rem",
4886
+ fontSize: "0.75rem",
4887
+ fontWeight: 700,
4888
+ lineHeight: 1,
4889
+ letterSpacing: "0.02em",
4890
+ fontFamily: theme.typography.fontFamily,
4891
+ backgroundColor: getBgColor($variant),
4892
+ color: "#ffffff",
4893
+ textTransform: "uppercase"
4894
+ }));
4895
+ function SaleBadge({ discount, label, variant = "default", ...props }) {
4896
+ const text = label ?? (discount !== void 0 ? `-${discount}%` : "SALE");
4897
+ return /* @__PURE__ */ jsx(Root12, { $variant: variant, ...props, children: text });
4898
+ }
4899
+ var saleBadgeVariants = ["default", "flash", "new", "hot"];
4900
+ var sizeMap4 = {
4756
4901
  sm: { width: "2rem", height: "2rem", fontSize: "0.75rem" },
4757
4902
  md: { width: "2.5rem", height: "2.5rem", fontSize: "0.875rem" },
4758
4903
  lg: { width: "3rem", height: "3rem", fontSize: "1rem" },
@@ -4788,7 +4933,7 @@ var StyledAvatar = styled("div", {
4788
4933
  fontWeight: 600,
4789
4934
  fontFamily: theme.typography.fontFamily,
4790
4935
  userSelect: "none",
4791
- ...sizeMap3[$size],
4936
+ ...sizeMap4[$size],
4792
4937
  ...getColorStyles($color, theme)
4793
4938
  }));
4794
4939
  function Avatar({ initials, size = "md", color = "primary", ...props }) {
@@ -4900,7 +5045,7 @@ var spin = keyframes$1`to { transform: rotate(360deg); }`;
4900
5045
  var fade = keyframes$1`0%,100%{opacity:.15} 50%{opacity:1}`;
4901
5046
  var scalePulse = keyframes$1`0%,100%{transform:scale(0.6);opacity:.4} 50%{transform:scale(1);opacity:1}`;
4902
5047
  var barAnim = keyframes$1`0%,100%{transform:scaleY(.4);opacity:.5} 50%{transform:scaleY(1);opacity:1}`;
4903
- var Root10 = styled("span", {
5048
+ var Root13 = styled("span", {
4904
5049
  shouldForwardProp: (p) => !["$size", "$color"].includes(p)
4905
5050
  })(({ theme, $size, $color }) => {
4906
5051
  const colorMap = {
@@ -4988,8 +5133,8 @@ function Spinner3({
4988
5133
  label = "\u0141adowanie\u2026",
4989
5134
  ...props
4990
5135
  }) {
4991
- const Inner6 = VARIANTS[variant];
4992
- return /* @__PURE__ */ jsx(Root10, { $size: size, $color: color, role: "status", "aria-label": label, ...props, children: /* @__PURE__ */ jsx(Inner6, {}) });
5136
+ const Inner5 = VARIANTS[variant];
5137
+ return /* @__PURE__ */ jsx(Root13, { $size: size, $color: color, role: "status", "aria-label": label, ...props, children: /* @__PURE__ */ jsx(Inner5, {}) });
4993
5138
  }
4994
5139
  var spinnerVariants = ["ring", "dots", "pulse", "bars"];
4995
5140
  var spinnerSizes = ["xs", "sm", "md", "lg", "xl"];
@@ -5115,7 +5260,7 @@ var FONT_MAP = {
5115
5260
  lg: "1.125rem",
5116
5261
  xl: "1.5rem"
5117
5262
  };
5118
- var Root11 = styled("div")({ position: "relative", display: "inline-flex", flexShrink: 0 });
5263
+ var Root14 = styled("div")({ position: "relative", display: "inline-flex", flexShrink: 0 });
5119
5264
  var Label2 = styled("div", {
5120
5265
  shouldForwardProp: (p) => p !== "$size"
5121
5266
  })(({ theme, $size }) => ({
@@ -5169,7 +5314,7 @@ function ProgressCircle({
5169
5314
  const { color, gradient } = useStrokeColor(variant, gradientId);
5170
5315
  const trackColor = theme.palette.mode === "dark" ? "rgba(255,255,255,0.1)" : "rgba(0,0,0,0.08)";
5171
5316
  return /* @__PURE__ */ jsxs(
5172
- Root11,
5317
+ Root14,
5173
5318
  {
5174
5319
  role: "progressbar",
5175
5320
  "aria-valuenow": value,
@@ -5516,77 +5661,6 @@ var StyledArticle = styled("article")(({ theme }) => ({
5516
5661
  }));
5517
5662
  var Article = forwardRef(({ children, ...rest }, ref) => /* @__PURE__ */ jsx(StyledArticle, { ref, ...rest, children }));
5518
5663
  Article.displayName = "Article";
5519
- var sizeMap4 = {
5520
- sm: "1rem",
5521
- md: "1.25rem",
5522
- lg: "1.5rem"
5523
- };
5524
- var Root12 = styled("div")(({ theme }) => ({
5525
- display: "inline-flex",
5526
- alignItems: "center",
5527
- gap: "0.5rem",
5528
- color: theme.palette.text.secondary,
5529
- fontFamily: theme.typography.fontFamily
5530
- }));
5531
- var Stars = styled("div")({
5532
- display: "inline-flex",
5533
- alignItems: "center",
5534
- gap: "0.125rem"
5535
- });
5536
- var StarButton = styled("button")(
5537
- ({ theme, $size, $active }) => ({
5538
- appearance: "none",
5539
- border: 0,
5540
- background: "transparent",
5541
- padding: 0,
5542
- color: $active ? "#f59e0b" : theme.palette.action.disabled,
5543
- cursor: "pointer",
5544
- fontSize: sizeMap4[$size],
5545
- lineHeight: 1,
5546
- "&:disabled": {
5547
- cursor: "default"
5548
- }
5549
- })
5550
- );
5551
- var Meta = styled("span")(({ theme }) => ({
5552
- fontSize: "0.875rem",
5553
- color: theme.palette.text.secondary
5554
- }));
5555
- var Rating = forwardRef(
5556
- ({ value, max = 5, readonly = true, size = "md", label, count, onChange, ...props }, ref) => {
5557
- const roundedValue = Math.round(value);
5558
- const meta = label ?? (count !== void 0 ? `(${count})` : void 0);
5559
- return /* @__PURE__ */ jsxs(Root12, { ref, "aria-label": `Ocena ${value} z ${max}`, ...props, children: [
5560
- /* @__PURE__ */ jsx(
5561
- Stars,
5562
- {
5563
- role: readonly ? "img" : "radiogroup",
5564
- "aria-label": readonly ? void 0 : "Wybierz ocen\u0119",
5565
- children: Array.from({ length: max }, (_, index) => {
5566
- const starValue = index + 1;
5567
- return /* @__PURE__ */ jsx(
5568
- StarButton,
5569
- {
5570
- type: "button",
5571
- $size: size,
5572
- $active: starValue <= roundedValue,
5573
- disabled: readonly,
5574
- "aria-label": `${starValue} z ${max}`,
5575
- "aria-checked": readonly ? void 0 : starValue === roundedValue,
5576
- role: readonly ? void 0 : "radio",
5577
- onClick: () => onChange?.(starValue),
5578
- children: "\u2605"
5579
- },
5580
- starValue
5581
- );
5582
- })
5583
- }
5584
- ),
5585
- meta && /* @__PURE__ */ jsx(Meta, { children: meta })
5586
- ] });
5587
- }
5588
- );
5589
- Rating.displayName = "Rating";
5590
5664
  var PRESET_MAP = {
5591
5665
  "1/1": 1,
5592
5666
  "4/3": 4 / 3,
@@ -5597,7 +5671,7 @@ var PRESET_MAP = {
5597
5671
  "3/4": 3 / 4,
5598
5672
  "2/3": 2 / 3
5599
5673
  };
5600
- var Root13 = styled("div")({
5674
+ var Root15 = styled("div")({
5601
5675
  position: "relative",
5602
5676
  width: "100%",
5603
5677
  "& > *": {
@@ -5612,11 +5686,88 @@ var AspectRatio = forwardRef(
5612
5686
  ({ ratio = "16/9", children, style, ...props }, ref) => {
5613
5687
  const numericRatio = typeof ratio === "string" ? PRESET_MAP[ratio] ?? 16 / 9 : ratio;
5614
5688
  const paddingBottom = `${1 / numericRatio * 100}%`;
5615
- return /* @__PURE__ */ jsx(Root13, { ref, style: { paddingBottom, ...style }, ...props, children });
5689
+ return /* @__PURE__ */ jsx(Root15, { ref, style: { paddingBottom, ...style }, ...props, children });
5616
5690
  }
5617
5691
  );
5618
5692
  AspectRatio.displayName = "AspectRatio";
5619
5693
  var aspectRatioPresets = Object.keys(PRESET_MAP);
5694
+ var Img = styled("img")({
5695
+ objectFit: "cover",
5696
+ width: "100%",
5697
+ height: "100%"
5698
+ });
5699
+ var Placeholder2 = styled("div")(({ theme }) => ({
5700
+ width: "100%",
5701
+ height: "100%",
5702
+ backgroundColor: theme.palette.action.hover,
5703
+ display: "flex",
5704
+ alignItems: "center",
5705
+ justifyContent: "center",
5706
+ color: theme.palette.text.disabled
5707
+ }));
5708
+ var CategoryCardImage = ({ src, alt }) => /* @__PURE__ */ jsx(AspectRatio, { ratio: "4/3", children: src ? /* @__PURE__ */ jsx(Img, { src, alt }) : /* @__PURE__ */ jsx(Placeholder2, { "aria-label": alt, children: /* @__PURE__ */ jsx(ImageIcon, { style: { fontSize: 48 } }) }) });
5709
+ CategoryCardImage.displayName = "CategoryCardImage";
5710
+ var Root16 = styled("div")({
5711
+ display: "flex",
5712
+ flexDirection: "column",
5713
+ gap: "0.25rem"
5714
+ });
5715
+ var Name = styled("h3")(({ theme }) => ({
5716
+ margin: 0,
5717
+ color: theme.palette.text.primary,
5718
+ fontFamily: theme.typography.fontFamily,
5719
+ fontSize: "1rem",
5720
+ fontWeight: 700,
5721
+ lineHeight: 1.4
5722
+ }));
5723
+ var Count = styled("span")(({ theme }) => ({
5724
+ color: theme.palette.text.secondary,
5725
+ fontFamily: theme.typography.fontFamily,
5726
+ fontSize: "0.875rem"
5727
+ }));
5728
+ var CategoryCardInfo = ({
5729
+ name,
5730
+ count,
5731
+ countLabel = "produkt\xF3w"
5732
+ }) => /* @__PURE__ */ jsxs(Root16, { children: [
5733
+ /* @__PURE__ */ jsx(Name, { children: name }),
5734
+ count !== void 0 && /* @__PURE__ */ jsxs(Count, { children: [
5735
+ count,
5736
+ " ",
5737
+ countLabel
5738
+ ] })
5739
+ ] });
5740
+ CategoryCardInfo.displayName = "CategoryCardInfo";
5741
+ var Root17 = styled(Card)(({ theme }) => ({
5742
+ display: "flex",
5743
+ flexDirection: "column",
5744
+ overflow: "hidden",
5745
+ cursor: "pointer",
5746
+ transition: "box-shadow 150ms ease, transform 150ms ease",
5747
+ "&:hover": {
5748
+ boxShadow: theme.shadows[4],
5749
+ transform: "translateY(-2px)"
5750
+ }
5751
+ }));
5752
+ var ImageWrap = styled("div")({
5753
+ margin: "-1.5rem -1.5rem 1rem"
5754
+ });
5755
+ var CardLink = styled("a")({
5756
+ display: "block",
5757
+ textDecoration: "none",
5758
+ color: "inherit",
5759
+ outline: "none"
5760
+ });
5761
+ var CategoryCard = forwardRef(
5762
+ ({ name, imageUrl, imageAlt, count, href, ...props }, ref) => {
5763
+ const content = /* @__PURE__ */ jsxs(Fragment, { children: [
5764
+ /* @__PURE__ */ jsx(ImageWrap, { children: /* @__PURE__ */ jsx(CategoryCardImage, { src: imageUrl, alt: imageAlt ?? name }) }),
5765
+ /* @__PURE__ */ jsx(CategoryCardInfo, { name, count })
5766
+ ] });
5767
+ return /* @__PURE__ */ jsx(Root17, { ref, variant: "default", padding: "md", rounded: "lg", ...props, children: href ? /* @__PURE__ */ jsx(CardLink, { href, children: content }) : content });
5768
+ }
5769
+ );
5770
+ CategoryCard.displayName = "CategoryCard";
5620
5771
  var DEFAULT_OMNIBUS_LABEL = "Najni\u017Csza cena z ostatnich 30 dni";
5621
5772
  var FONT_SIZE = {
5622
5773
  sm: "0.875rem",
@@ -5624,7 +5775,7 @@ var FONT_SIZE = {
5624
5775
  lg: "1.5rem",
5625
5776
  xl: "2rem"
5626
5777
  };
5627
- var Root14 = styled("div")({
5778
+ var Root18 = styled("div")({
5628
5779
  display: "inline-flex",
5629
5780
  flexDirection: "column",
5630
5781
  gap: "0.25rem"
@@ -5705,7 +5856,7 @@ var Price = forwardRef(
5705
5856
  const onSale = originalPrice !== void 0 && originalPrice > price;
5706
5857
  const discount = onSale ? calcDiscount(price, originalPrice) : 0;
5707
5858
  const showOmnibus = lowestPrice !== void 0;
5708
- return /* @__PURE__ */ jsxs(Root14, { ref, ...props, children: [
5859
+ return /* @__PURE__ */ jsxs(Root18, { ref, ...props, children: [
5709
5860
  /* @__PURE__ */ jsxs(PriceRow, { children: [
5710
5861
  /* @__PURE__ */ jsx(
5711
5862
  Current,
@@ -5749,32 +5900,158 @@ var Price = forwardRef(
5749
5900
  );
5750
5901
  Price.displayName = "Price";
5751
5902
  var priceSizes = ["sm", "md", "lg", "xl"];
5752
- var Root15 = styled(Card)({
5903
+ function calcTimeLeft(target) {
5904
+ const diff = new Date(target).getTime() - Date.now();
5905
+ if (diff <= 0) return null;
5906
+ return {
5907
+ days: Math.floor(diff / 864e5),
5908
+ hours: Math.floor(diff % 864e5 / 36e5),
5909
+ minutes: Math.floor(diff % 36e5 / 6e4),
5910
+ seconds: Math.floor(diff % 6e4 / 1e3)
5911
+ };
5912
+ }
5913
+ function pad(n) {
5914
+ return String(n).padStart(2, "0");
5915
+ }
5916
+ var Root19 = styled("div", {
5917
+ shouldForwardProp: (prop) => prop !== "$variant"
5918
+ })(({ theme, $variant }) => ({
5919
+ display: "inline-flex",
5920
+ alignItems: "center",
5921
+ justifyContent: "space-between",
5922
+ flexWrap: "wrap",
5923
+ gap: "0.5rem",
5924
+ fontFamily: theme.typography.fontFamily,
5925
+ ...$variant === "card" && {
5926
+ backgroundColor: theme.palette.background.paper,
5927
+ border: `1px solid ${theme.palette.divider}`,
5928
+ borderRadius: theme.shape.borderRadius,
5929
+ padding: "1rem 1.5rem"
5930
+ },
5931
+ ...$variant === "banner" && {
5932
+ backgroundColor: theme.palette.error.main,
5933
+ color: "#fff",
5934
+ borderRadius: theme.shape.borderRadius,
5935
+ padding: "0.75rem 1.25rem"
5936
+ }
5937
+ }));
5938
+ var TimerLabel = styled("span", {
5939
+ shouldForwardProp: (prop) => prop !== "$variant"
5940
+ })(({ theme, $variant }) => ({
5941
+ fontSize: "0.875rem",
5942
+ fontWeight: 600,
5943
+ color: $variant === "banner" ? "rgba(255,255,255,0.85)" : theme.palette.text.secondary,
5944
+ marginRight: "0.25rem"
5945
+ }));
5946
+ var Segments = styled("div")({
5753
5947
  display: "flex",
5754
- flexDirection: "column",
5755
- height: "100%",
5756
- overflow: "hidden"
5757
- });
5758
- var ImageWrap = styled("div")({
5759
- position: "relative",
5760
- margin: "-1.5rem -1.5rem 1rem"
5948
+ alignItems: "center",
5949
+ gap: "0.25rem"
5761
5950
  });
5762
- var Image = styled("img")(({ theme }) => ({
5763
- objectFit: "cover",
5764
- backgroundColor: theme.palette.action.hover
5951
+ var Segment = styled("div", {
5952
+ shouldForwardProp: (prop) => prop !== "$variant"
5953
+ })(({ theme, $variant }) => ({
5954
+ display: "flex",
5955
+ flexDirection: "column",
5956
+ alignItems: "center",
5957
+ minWidth: "2.5rem",
5958
+ ...$variant === "card" && {
5959
+ backgroundColor: theme.palette.action.hover,
5960
+ borderRadius: "0.375rem",
5961
+ padding: "0.375rem 0.5rem"
5962
+ }
5765
5963
  }));
5766
- var BadgeSlot = styled("div")({
5767
- position: "absolute",
5768
- left: "0.75rem",
5769
- top: "0.75rem"
5770
- });
5771
- var Name = styled("h3")(({ theme }) => ({
5772
- margin: 0,
5773
- color: theme.palette.text.primary,
5774
- fontFamily: theme.typography.fontFamily,
5775
- fontSize: "1rem",
5964
+ var Value = styled("span", {
5965
+ shouldForwardProp: (prop) => prop !== "$variant"
5966
+ })(({ $variant }) => ({
5967
+ fontSize: $variant === "inline" ? "1rem" : "1.5rem",
5776
5968
  fontWeight: 700,
5777
- lineHeight: 1.4
5969
+ lineHeight: 1,
5970
+ color: $variant === "banner" ? "#fff" : "inherit"
5971
+ }));
5972
+ var Unit = styled("span", {
5973
+ shouldForwardProp: (prop) => prop !== "$variant"
5974
+ })(({ theme, $variant }) => ({
5975
+ fontSize: "0.6875rem",
5976
+ color: $variant === "banner" ? "rgba(255,255,255,0.7)" : theme.palette.text.secondary,
5977
+ marginTop: "0.125rem"
5978
+ }));
5979
+ var Colon = styled("span", {
5980
+ shouldForwardProp: (prop) => prop !== "$variant"
5981
+ })(({ theme, $variant }) => ({
5982
+ fontSize: $variant === "inline" ? "1rem" : "1.5rem",
5983
+ fontWeight: 700,
5984
+ color: $variant === "banner" ? "rgba(255,255,255,0.6)" : theme.palette.text.disabled,
5985
+ alignSelf: $variant === "card" ? "flex-start" : "center",
5986
+ marginTop: $variant === "card" ? "0.375rem" : 0
5987
+ }));
5988
+ var UNITS = ["dni", "godz", "min", "sek"];
5989
+ var CountdownTimer = forwardRef(
5990
+ ({
5991
+ targetDate,
5992
+ variant = "inline",
5993
+ label,
5994
+ expiredLabel = "Promocja zako\u0144czona",
5995
+ onExpire,
5996
+ ...props
5997
+ }, ref) => {
5998
+ const [timeLeft, setTimeLeft] = useState(() => calcTimeLeft(targetDate));
5999
+ useEffect(() => {
6000
+ const id = setInterval(() => {
6001
+ const tl = calcTimeLeft(targetDate);
6002
+ setTimeLeft(tl);
6003
+ if (!tl) {
6004
+ clearInterval(id);
6005
+ onExpire?.();
6006
+ }
6007
+ }, 1e3);
6008
+ return () => clearInterval(id);
6009
+ }, [targetDate, onExpire]);
6010
+ if (!timeLeft) {
6011
+ return /* @__PURE__ */ jsx(Root19, { ref, $variant: variant, ...props, children: /* @__PURE__ */ jsx(TimerLabel, { $variant: variant, children: expiredLabel }) });
6012
+ }
6013
+ const parts = [timeLeft.days, timeLeft.hours, timeLeft.minutes, timeLeft.seconds];
6014
+ return /* @__PURE__ */ jsxs(
6015
+ Root19,
6016
+ {
6017
+ ref,
6018
+ $variant: variant,
6019
+ "aria-live": "polite",
6020
+ "aria-label": `Czas do ko\u0144ca promocji`,
6021
+ ...props,
6022
+ children: [
6023
+ label && /* @__PURE__ */ jsx(TimerLabel, { $variant: variant, children: label }),
6024
+ /* @__PURE__ */ jsx(Segments, { children: parts.map((val, i) => /* @__PURE__ */ jsxs("div", { style: { display: "contents" }, children: [
6025
+ i > 0 && /* @__PURE__ */ jsx(Colon, { $variant: variant, children: ":" }),
6026
+ /* @__PURE__ */ jsxs(Segment, { $variant: variant, children: [
6027
+ /* @__PURE__ */ jsx(Value, { $variant: variant, children: pad(val) }),
6028
+ variant !== "inline" && /* @__PURE__ */ jsx(Unit, { $variant: variant, children: UNITS[i] })
6029
+ ] })
6030
+ ] }, UNITS[i])) })
6031
+ ]
6032
+ }
6033
+ );
6034
+ }
6035
+ );
6036
+ CountdownTimer.displayName = "CountdownTimer";
6037
+ var countdownTimerVariants = ["inline", "card", "banner"];
6038
+ var Root20 = styled(Card)({
6039
+ display: "flex",
6040
+ flexDirection: "column",
6041
+ height: "100%",
6042
+ overflow: "hidden"
6043
+ });
6044
+ var ImageWrap2 = styled("div")({
6045
+ position: "relative",
6046
+ margin: "-1.5rem -1.5rem 1rem"
6047
+ });
6048
+ var Name2 = styled("h3")(({ theme }) => ({
6049
+ margin: 0,
6050
+ color: theme.palette.text.primary,
6051
+ fontFamily: theme.typography.fontFamily,
6052
+ fontSize: "1rem",
6053
+ fontWeight: 700,
6054
+ lineHeight: 1.4
5778
6055
  }));
5779
6056
  var Footer = styled("div")({
5780
6057
  display: "grid",
@@ -5782,7 +6059,7 @@ var Footer = styled("div")({
5782
6059
  marginTop: "auto",
5783
6060
  paddingTop: "1rem"
5784
6061
  });
5785
- var ProductCard = forwardRef(
6062
+ var DealCard = forwardRef(
5786
6063
  ({
5787
6064
  name,
5788
6065
  imageUrl,
@@ -5791,36 +6068,48 @@ var ProductCard = forwardRef(
5791
6068
  originalPrice,
5792
6069
  currency,
5793
6070
  locale,
5794
- lowestPrice,
5795
- badge,
5796
- badgeVariant = "success",
5797
- rating,
5798
- reviewCount,
5799
- ctaLabel = "Dodaj do koszyka",
6071
+ dealEndsAt,
6072
+ ctaLabel = "Kup teraz",
5800
6073
  onAddToCart,
5801
6074
  ...props
5802
- }, ref) => /* @__PURE__ */ jsxs(Root15, { ref, variant: "default", padding: "md", rounded: "lg", ...props, children: [
5803
- /* @__PURE__ */ jsx(ImageWrap, { children: /* @__PURE__ */ jsxs(AspectRatio, { ratio: "4/3", children: [
5804
- /* @__PURE__ */ jsx(Image, { src: imageUrl, alt: imageAlt ?? name }),
5805
- badge && /* @__PURE__ */ jsx(BadgeSlot, { children: /* @__PURE__ */ jsx(Badge, { variant: badgeVariant, children: badge }) })
5806
- ] }) }),
5807
- /* @__PURE__ */ jsx(Name, { children: name }),
5808
- rating !== void 0 && /* @__PURE__ */ jsx(Rating, { value: rating, count: reviewCount, size: "sm" }),
5809
- /* @__PURE__ */ jsx(
5810
- Price,
5811
- {
5812
- price,
5813
- originalPrice,
5814
- currency,
5815
- locale,
5816
- lowestPrice,
5817
- style: { marginTop: "0.5rem" }
5818
- }
5819
- ),
5820
- /* @__PURE__ */ jsx(Footer, { children: /* @__PURE__ */ jsx(Button, { fullWidth: true, onClick: onAddToCart, children: ctaLabel }) })
5821
- ] })
6075
+ }, ref) => {
6076
+ return /* @__PURE__ */ jsxs(Root20, { ref, variant: "default", padding: "md", rounded: "lg", ...props, children: [
6077
+ /* @__PURE__ */ jsx(ImageWrap2, { children: /* @__PURE__ */ jsx(ProductCardImage, { src: imageUrl, alt: imageAlt ?? name }) }),
6078
+ /* @__PURE__ */ jsx(Name2, { children: name }),
6079
+ /* @__PURE__ */ jsx(
6080
+ Price,
6081
+ {
6082
+ price,
6083
+ originalPrice,
6084
+ currency,
6085
+ locale,
6086
+ style: { marginTop: "0.5rem" }
6087
+ }
6088
+ ),
6089
+ dealEndsAt && /* @__PURE__ */ jsx(
6090
+ CountdownTimer,
6091
+ {
6092
+ targetDate: dealEndsAt,
6093
+ label: "Oferta ko\u0144czy si\u0119 za:",
6094
+ style: { marginTop: "0.75rem" }
6095
+ }
6096
+ ),
6097
+ /* @__PURE__ */ jsx(Footer, { children: /* @__PURE__ */ jsx(
6098
+ Button,
6099
+ {
6100
+ fullWidth: true,
6101
+ variant: "primary",
6102
+ onClick: (e) => {
6103
+ e.stopPropagation();
6104
+ onAddToCart?.();
6105
+ },
6106
+ children: ctaLabel
6107
+ }
6108
+ ) })
6109
+ ] });
6110
+ }
5822
6111
  );
5823
- ProductCard.displayName = "ProductCard";
6112
+ DealCard.displayName = "DealCard";
5824
6113
  var ImageWrapper = styled("div", {
5825
6114
  shouldForwardProp: (prop) => prop !== "$ar"
5826
6115
  })(({ $ar }) => ({
@@ -5830,13 +6119,13 @@ var ImageWrapper = styled("div", {
5830
6119
  overflow: "hidden",
5831
6120
  flexShrink: 0
5832
6121
  }));
5833
- var Img = styled("img")({
6122
+ var Img2 = styled("img")({
5834
6123
  width: "100%",
5835
6124
  height: "100%",
5836
6125
  objectFit: "cover",
5837
6126
  display: "block"
5838
6127
  });
5839
- var Placeholder2 = styled("div")(({ theme }) => ({
6128
+ var Placeholder3 = styled("div")(({ theme }) => ({
5840
6129
  width: "100%",
5841
6130
  height: "100%",
5842
6131
  display: "flex",
@@ -5866,7 +6155,7 @@ var PostCardImage = ({
5866
6155
  const [imgError, setImgError] = useState(false);
5867
6156
  const showPlaceholder = !src || imgError;
5868
6157
  return /* @__PURE__ */ jsxs(ImageWrapper, { $ar: toAspectRatioCss(aspectRatio), className, style, children: [
5869
- showPlaceholder ? /* @__PURE__ */ jsx(Placeholder2, { children: /* @__PURE__ */ jsx(FileTextIcon, {}) }) : /* @__PURE__ */ jsx(Img, { src, alt, onError: () => setImgError(true) }),
6158
+ showPlaceholder ? /* @__PURE__ */ jsx(Placeholder3, { children: /* @__PURE__ */ jsx(FileTextIcon, {}) }) : /* @__PURE__ */ jsx(Img2, { src, alt, onError: () => setImgError(true) }),
5870
6159
  overlay && !showPlaceholder && /* @__PURE__ */ jsx(Overlay, {})
5871
6160
  ] });
5872
6161
  };
@@ -5941,7 +6230,7 @@ var StyledInner = styled("div", {
5941
6230
  height: "100%",
5942
6231
  ...getLayoutStyles($variant)
5943
6232
  }));
5944
- var CardLink = styled("a")(({ theme }) => ({
6233
+ var CardLink2 = styled("a")(({ theme }) => ({
5945
6234
  display: "block",
5946
6235
  textDecoration: "none",
5947
6236
  color: "inherit",
@@ -6047,13 +6336,13 @@ var PostCard = forwardRef(
6047
6336
  isFeatured && showImage && /* @__PURE__ */ jsx(FeaturedImageWrapper, { children: /* @__PURE__ */ jsx(PostCardImage, { src: imageUrl, alt: imageAlt, aspectRatio: "16/9", overlay: true }) }),
6048
6337
  !isFeatured && showImage && (isHorizontal ? /* @__PURE__ */ jsx(HorizontalImageWrapper, { children: /* @__PURE__ */ jsx(PostCardImage, { src: imageUrl, alt: imageAlt, aspectRatio: "4/3" }) }) : /* @__PURE__ */ jsx(PostCardImage, { src: imageUrl, alt: imageAlt, aspectRatio: "16/9" })),
6049
6338
  /* @__PURE__ */ jsxs(StyledContent, { $variant: variant, children: [
6050
- category && /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx(Badge, { variant: isFeatured ? "ghost" : "default", children: category }) }),
6339
+ category && /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx(Badge2, { variant: isFeatured ? "ghost" : "default", children: category }) }),
6051
6340
  /* @__PURE__ */ jsx(StyledTitle, { className: "post-card-title", $featured: isFeatured, children: title }),
6052
6341
  excerpt && variant !== "compact" && !isFeatured && /* @__PURE__ */ jsx(StyledExcerpt, { children: excerpt }),
6053
6342
  (date || author) && /* @__PURE__ */ jsx(PostCardMeta, { date, author, inverted: isFeatured })
6054
6343
  ] })
6055
6344
  ] });
6056
- return /* @__PURE__ */ jsx(Card, { ref, variant: cardVariant, padding: "none", rounded: "lg", ...rest, children: /* @__PURE__ */ jsx(StyledRoot, { children: href ? /* @__PURE__ */ jsx(CardLink, { href, "aria-label": title, children: inner }) : inner }) });
6345
+ return /* @__PURE__ */ jsx(Card, { ref, variant: cardVariant, padding: "none", rounded: "lg", ...rest, children: /* @__PURE__ */ jsx(StyledRoot, { children: href ? /* @__PURE__ */ jsx(CardLink2, { href, "aria-label": title, children: inner }) : inner }) });
6057
6346
  }
6058
6347
  );
6059
6348
  PostCard.displayName = "PostCard";
@@ -6065,25 +6354,7 @@ var postCardVariants = [
6065
6354
  "featured",
6066
6355
  "compact"
6067
6356
  ];
6068
- var Root16 = styled(Card)({
6069
- display: "flex",
6070
- flexDirection: "column",
6071
- height: "100%"
6072
- });
6073
- var NameRow = styled("div")({
6074
- display: "flex",
6075
- alignItems: "center",
6076
- justifyContent: "space-between",
6077
- marginBottom: "0.75rem"
6078
- });
6079
- var Name2 = styled("p")(({ theme }) => ({
6080
- margin: 0,
6081
- fontFamily: theme.typography.fontFamily,
6082
- fontWeight: 600,
6083
- fontSize: "1rem",
6084
- color: theme.palette.text.primary
6085
- }));
6086
- var PriceRow2 = styled("div")({
6357
+ var Row3 = styled("div")({
6087
6358
  display: "flex",
6088
6359
  alignItems: "baseline",
6089
6360
  gap: "0.25rem"
@@ -6096,7 +6367,7 @@ var Currency = styled("span")(({ theme }) => ({
6096
6367
  alignSelf: "flex-start",
6097
6368
  paddingTop: "0.375rem"
6098
6369
  }));
6099
- var Price2 = styled("span")(({ theme }) => ({
6370
+ var Amount = styled("span")(({ theme }) => ({
6100
6371
  fontFamily: theme.typography.fontFamily,
6101
6372
  fontWeight: 700,
6102
6373
  fontSize: "3rem",
@@ -6108,28 +6379,21 @@ var Period = styled("span")(({ theme }) => ({
6108
6379
  fontSize: "0.875rem",
6109
6380
  color: theme.palette.text.secondary
6110
6381
  }));
6111
- var Description2 = styled("p")(({ theme }) => ({
6112
- margin: "0.75rem 0 0",
6113
- fontFamily: theme.typography.fontFamily,
6114
- fontSize: "0.875rem",
6115
- color: theme.palette.text.secondary,
6116
- lineHeight: 1.6
6117
- }));
6118
- var Divider2 = styled("hr")(({ theme }) => ({
6119
- border: "none",
6120
- borderTop: `1px solid ${theme.palette.divider}`,
6121
- margin: "1.25rem 0"
6122
- }));
6123
- var FeatureList = styled("ul")({
6382
+ var PricingCardPrice = ({ price, currency, period }) => /* @__PURE__ */ jsxs(Row3, { children: [
6383
+ currency && /* @__PURE__ */ jsx(Currency, { children: currency }),
6384
+ /* @__PURE__ */ jsx(Amount, { children: price }),
6385
+ period && /* @__PURE__ */ jsx(Period, { children: period })
6386
+ ] });
6387
+ PricingCardPrice.displayName = "PricingCardPrice";
6388
+ var List = styled("ul")({
6124
6389
  listStyle: "none",
6125
6390
  margin: 0,
6126
6391
  padding: 0,
6127
6392
  display: "flex",
6128
6393
  flexDirection: "column",
6129
- gap: "0.625rem",
6130
- flex: 1
6394
+ gap: "0.625rem"
6131
6395
  });
6132
- var FeatureItem = styled("li", {
6396
+ var Item = styled("li", {
6133
6397
  shouldForwardProp: (prop) => prop !== "$included"
6134
6398
  })(({ theme, $included }) => ({
6135
6399
  display: "flex",
@@ -6139,6 +6403,50 @@ var FeatureItem = styled("li", {
6139
6403
  fontSize: "0.875rem",
6140
6404
  color: $included ? theme.palette.text.primary : theme.palette.text.disabled
6141
6405
  }));
6406
+ function CheckIcon3() {
6407
+ return /* @__PURE__ */ jsx(CheckCircleOutlinedIcon, { "aria-hidden": "true", style: { fontSize: 16, flexShrink: 0 } });
6408
+ }
6409
+ function XIcon3() {
6410
+ return /* @__PURE__ */ jsx(HighlightOffIcon, { "aria-hidden": "true", style: { fontSize: 16, flexShrink: 0 } });
6411
+ }
6412
+ var PricingCardFeatureList = ({ features }) => /* @__PURE__ */ jsx(List, { children: features.map((feature, i) => {
6413
+ const included = feature.included !== false;
6414
+ return /* @__PURE__ */ jsxs(Item, { $included: included, children: [
6415
+ included ? /* @__PURE__ */ jsx(CheckIcon3, {}) : /* @__PURE__ */ jsx(XIcon3, {}),
6416
+ feature.text
6417
+ ] }, i);
6418
+ }) });
6419
+ PricingCardFeatureList.displayName = "PricingCardFeatureList";
6420
+ var Root21 = styled(Card)({
6421
+ display: "flex",
6422
+ flexDirection: "column",
6423
+ height: "100%"
6424
+ });
6425
+ var NameRow = styled("div")({
6426
+ display: "flex",
6427
+ alignItems: "center",
6428
+ justifyContent: "space-between",
6429
+ marginBottom: "0.75rem"
6430
+ });
6431
+ var Name3 = styled("p")(({ theme }) => ({
6432
+ margin: 0,
6433
+ fontFamily: theme.typography.fontFamily,
6434
+ fontWeight: 600,
6435
+ fontSize: "1rem",
6436
+ color: theme.palette.text.primary
6437
+ }));
6438
+ var Description2 = styled("p")(({ theme }) => ({
6439
+ margin: "0.75rem 0 0",
6440
+ fontFamily: theme.typography.fontFamily,
6441
+ fontSize: "0.875rem",
6442
+ color: theme.palette.text.secondary,
6443
+ lineHeight: 1.6
6444
+ }));
6445
+ var Divider2 = styled("hr")(({ theme }) => ({
6446
+ border: "none",
6447
+ borderTop: `1px solid ${theme.palette.divider}`,
6448
+ margin: "1.25rem 0"
6449
+ }));
6142
6450
  var CtaLink = styled("a", {
6143
6451
  shouldForwardProp: (prop) => prop !== "$variant"
6144
6452
  })(({ theme, $variant }) => ({
@@ -6171,12 +6479,6 @@ var CtaLink = styled("a", {
6171
6479
  var CtaWrapper = styled("div")({
6172
6480
  marginTop: "1.5rem"
6173
6481
  });
6174
- function CheckIcon3() {
6175
- return /* @__PURE__ */ jsx(CheckCircleOutlinedIcon, { "aria-hidden": "true", style: { fontSize: 16, flexShrink: 0 } });
6176
- }
6177
- function XIcon3() {
6178
- return /* @__PURE__ */ jsx(HighlightOffIcon, { "aria-hidden": "true", style: { fontSize: 16, flexShrink: 0 } });
6179
- }
6180
6482
  var PricingCard = forwardRef(
6181
6483
  ({
6182
6484
  name,
@@ -6196,39 +6498,294 @@ var PricingCard = forwardRef(
6196
6498
  }, ref) => {
6197
6499
  const resolvedCardVariant = cardVariant ?? (popular ? "gradient-primary" : "default");
6198
6500
  const resolvedCtaVariant = ctaVariant ?? (popular ? "primary" : "ghost");
6199
- return /* @__PURE__ */ jsxs(Root16, { ref, variant: resolvedCardVariant, padding: "lg", rounded: "lg", ...props, children: [
6501
+ return /* @__PURE__ */ jsxs(Root21, { ref, variant: resolvedCardVariant, padding: "lg", rounded: "lg", ...props, children: [
6200
6502
  /* @__PURE__ */ jsxs(NameRow, { children: [
6201
- /* @__PURE__ */ jsx(Name2, { children: name }),
6202
- popular && /* @__PURE__ */ jsx(Badge, { variant: "default", children: popularLabel })
6203
- ] }),
6204
- /* @__PURE__ */ jsxs(PriceRow2, { children: [
6205
- currency && /* @__PURE__ */ jsx(Currency, { children: currency }),
6206
- /* @__PURE__ */ jsx(Price2, { children: price }),
6207
- period && /* @__PURE__ */ jsx(Period, { children: period })
6503
+ /* @__PURE__ */ jsx(Name3, { children: name }),
6504
+ popular && /* @__PURE__ */ jsx(Badge2, { variant: "default", children: popularLabel })
6208
6505
  ] }),
6506
+ /* @__PURE__ */ jsx(PricingCardPrice, { price, currency, period }),
6209
6507
  description && /* @__PURE__ */ jsx(Description2, { children: description }),
6210
6508
  features.length > 0 && /* @__PURE__ */ jsxs(Fragment, { children: [
6211
6509
  /* @__PURE__ */ jsx(Divider2, {}),
6212
- /* @__PURE__ */ jsx(FeatureList, { children: features.map((feature, i) => {
6213
- const included = feature.included !== false;
6214
- return /* @__PURE__ */ jsxs(FeatureItem, { $included: included, children: [
6215
- included ? /* @__PURE__ */ jsx(CheckIcon3, {}) : /* @__PURE__ */ jsx(XIcon3, {}),
6216
- feature.text
6217
- ] }, i);
6218
- }) })
6510
+ /* @__PURE__ */ jsx(PricingCardFeatureList, { features })
6219
6511
  ] }),
6220
6512
  /* @__PURE__ */ jsx(CtaWrapper, { children: href ? /* @__PURE__ */ jsx(CtaLink, { href, $variant: resolvedCtaVariant, children: ctaLabel }) : /* @__PURE__ */ jsx(Button, { variant: resolvedCtaVariant, fullWidth: true, onClick: onCtaClick, children: ctaLabel }) })
6221
6513
  ] });
6222
6514
  }
6223
6515
  );
6224
6516
  PricingCard.displayName = "PricingCard";
6225
- var Root17 = styled(Card, {
6517
+ var sizeMap5 = {
6518
+ sm: "1rem",
6519
+ md: "1.25rem",
6520
+ lg: "1.5rem"
6521
+ };
6522
+ var Root22 = styled("div")(({ theme }) => ({
6523
+ display: "inline-flex",
6524
+ alignItems: "center",
6525
+ gap: "0.5rem",
6526
+ color: theme.palette.text.secondary,
6527
+ fontFamily: theme.typography.fontFamily
6528
+ }));
6529
+ var Stars = styled("div")({
6530
+ display: "inline-flex",
6531
+ alignItems: "center",
6532
+ gap: "0.125rem"
6533
+ });
6534
+ var StarButton = styled("button")(
6535
+ ({ theme, $size, $active }) => ({
6536
+ appearance: "none",
6537
+ border: 0,
6538
+ background: "transparent",
6539
+ padding: 0,
6540
+ color: $active ? "#f59e0b" : theme.palette.action.disabled,
6541
+ cursor: "pointer",
6542
+ fontSize: sizeMap5[$size],
6543
+ lineHeight: 1,
6544
+ "&:disabled": {
6545
+ cursor: "default"
6546
+ }
6547
+ })
6548
+ );
6549
+ var Meta = styled("span")(({ theme }) => ({
6550
+ fontSize: "0.875rem",
6551
+ color: theme.palette.text.secondary
6552
+ }));
6553
+ var Rating = forwardRef(
6554
+ ({ value, max = 5, readonly = true, size = "md", label, count, onChange, ...props }, ref) => {
6555
+ const roundedValue = Math.round(value);
6556
+ const meta = label ?? (count !== void 0 ? `(${count})` : void 0);
6557
+ return /* @__PURE__ */ jsxs(Root22, { ref, "aria-label": `Ocena ${value} z ${max}`, ...props, children: [
6558
+ /* @__PURE__ */ jsx(
6559
+ Stars,
6560
+ {
6561
+ role: readonly ? "img" : "radiogroup",
6562
+ "aria-label": readonly ? void 0 : "Wybierz ocen\u0119",
6563
+ children: Array.from({ length: max }, (_, index) => {
6564
+ const starValue = index + 1;
6565
+ return /* @__PURE__ */ jsx(
6566
+ StarButton,
6567
+ {
6568
+ type: "button",
6569
+ $size: size,
6570
+ $active: starValue <= roundedValue,
6571
+ disabled: readonly,
6572
+ "aria-label": `${starValue} z ${max}`,
6573
+ "aria-checked": readonly ? void 0 : starValue === roundedValue,
6574
+ role: readonly ? void 0 : "radio",
6575
+ onClick: () => onChange?.(starValue),
6576
+ children: "\u2605"
6577
+ },
6578
+ starValue
6579
+ );
6580
+ })
6581
+ }
6582
+ ),
6583
+ meta && /* @__PURE__ */ jsx(Meta, { children: meta })
6584
+ ] });
6585
+ }
6586
+ );
6587
+ Rating.displayName = "Rating";
6588
+ var Img3 = styled("img")(({ theme }) => ({
6589
+ position: "absolute",
6590
+ inset: 0,
6591
+ width: "100%",
6592
+ height: "100%",
6593
+ objectFit: "cover",
6594
+ backgroundColor: theme.palette.action.hover
6595
+ }));
6596
+ var Placeholder4 = styled("div")(({ theme }) => ({
6597
+ position: "absolute",
6598
+ inset: 0,
6599
+ width: "100%",
6600
+ height: "100%",
6601
+ backgroundColor: theme.palette.action.hover,
6602
+ display: "flex",
6603
+ alignItems: "center",
6604
+ justifyContent: "center",
6605
+ color: theme.palette.text.disabled
6606
+ }));
6607
+ var BadgeSlot = styled("div")({
6608
+ position: "absolute",
6609
+ left: "0.75rem",
6610
+ top: "0.75rem",
6611
+ zIndex: 1
6612
+ });
6613
+ var ProductCardImage = ({
6614
+ src,
6615
+ alt,
6616
+ badge,
6617
+ badgeVariant = "success"
6618
+ }) => /* @__PURE__ */ jsxs(Fragment, { children: [
6619
+ src ? /* @__PURE__ */ jsx(Img3, { src, alt }) : /* @__PURE__ */ jsx(Placeholder4, { "aria-label": alt, children: /* @__PURE__ */ jsx(ImageIcon, { style: { fontSize: 48 } }) }),
6620
+ badge && /* @__PURE__ */ jsx(BadgeSlot, { children: /* @__PURE__ */ jsx(Badge2, { variant: badgeVariant, children: badge }) })
6621
+ ] });
6622
+ ProductCardImage.displayName = "ProductCardImage";
6623
+ var Root23 = styled(Card)({
6624
+ display: "flex",
6625
+ flexDirection: "column",
6626
+ height: "100%",
6627
+ overflow: "hidden"
6628
+ });
6629
+ var ImageWrap3 = styled("div")({
6630
+ position: "relative",
6631
+ aspectRatio: "4 / 3",
6632
+ margin: "-1.5rem -1.5rem 1rem"
6633
+ });
6634
+ var Name4 = styled("h3")(({ theme }) => ({
6635
+ margin: 0,
6636
+ color: theme.palette.text.primary,
6637
+ fontFamily: theme.typography.fontFamily,
6638
+ fontSize: "1rem",
6639
+ fontWeight: 700,
6640
+ lineHeight: 1.4
6641
+ }));
6642
+ var Footer2 = styled("div")({
6643
+ display: "grid",
6644
+ gap: "1rem",
6645
+ marginTop: "auto",
6646
+ paddingTop: "1rem"
6647
+ });
6648
+ var ProductCard = forwardRef(
6649
+ ({
6650
+ name,
6651
+ imageUrl,
6652
+ imageAlt,
6653
+ price,
6654
+ originalPrice,
6655
+ currency,
6656
+ locale,
6657
+ lowestPrice,
6658
+ badge,
6659
+ badgeVariant = "success",
6660
+ rating,
6661
+ reviewCount,
6662
+ ctaLabel = "Dodaj do koszyka",
6663
+ onAddToCart,
6664
+ ...props
6665
+ }, ref) => /* @__PURE__ */ jsxs(Root23, { ref, variant: "default", padding: "md", rounded: "lg", ...props, children: [
6666
+ /* @__PURE__ */ jsx(ImageWrap3, { children: /* @__PURE__ */ jsx(ProductCardImage, { src: imageUrl, alt: imageAlt ?? name, badge, badgeVariant }) }),
6667
+ /* @__PURE__ */ jsx(Name4, { children: name }),
6668
+ rating !== void 0 && /* @__PURE__ */ jsx(Rating, { value: rating, count: reviewCount, size: "sm" }),
6669
+ /* @__PURE__ */ jsx(
6670
+ Price,
6671
+ {
6672
+ price,
6673
+ originalPrice,
6674
+ currency,
6675
+ locale,
6676
+ lowestPrice,
6677
+ style: { marginTop: "0.5rem" }
6678
+ }
6679
+ ),
6680
+ /* @__PURE__ */ jsx(Footer2, { children: /* @__PURE__ */ jsx(Button, { fullWidth: true, onClick: (e) => {
6681
+ e.stopPropagation();
6682
+ onAddToCart?.();
6683
+ }, children: ctaLabel }) })
6684
+ ] })
6685
+ );
6686
+ ProductCard.displayName = "ProductCard";
6687
+ var COLLAPSE_AT = "480px";
6688
+ var ContainerRoot = styled("div")({
6689
+ containerType: "inline-size",
6690
+ width: "100%",
6691
+ height: "100%"
6692
+ });
6693
+ var Inner = styled("div")({
6694
+ display: "flex",
6695
+ flexDirection: "row",
6696
+ height: "100%",
6697
+ [`@container (max-width: ${COLLAPSE_AT})`]: {
6698
+ flexDirection: "column"
6699
+ }
6700
+ });
6701
+ var ImageWrap4 = styled("div")({
6702
+ position: "relative",
6703
+ flexShrink: 0,
6704
+ width: "clamp(120px, 33%, 200px)",
6705
+ alignSelf: "stretch",
6706
+ margin: "-1.5rem 1rem -1.5rem -1.5rem",
6707
+ [`@container (max-width: ${COLLAPSE_AT})`]: {
6708
+ width: "auto",
6709
+ alignSelf: "auto",
6710
+ margin: "-1.5rem -1.5rem 1rem",
6711
+ aspectRatio: "4 / 3"
6712
+ }
6713
+ });
6714
+ var Content = styled("div")({
6715
+ display: "flex",
6716
+ flexDirection: "column",
6717
+ flex: 1,
6718
+ minWidth: 0
6719
+ });
6720
+ var Name5 = styled("h3")(({ theme }) => ({
6721
+ margin: 0,
6722
+ color: theme.palette.text.primary,
6723
+ fontFamily: theme.typography.fontFamily,
6724
+ fontSize: "1rem",
6725
+ fontWeight: 700,
6726
+ lineHeight: 1.4
6727
+ }));
6728
+ var Footer3 = styled("div")({
6729
+ display: "grid",
6730
+ gap: "1rem",
6731
+ marginTop: "auto",
6732
+ paddingTop: "1rem"
6733
+ });
6734
+ var ProductCardHorizontal = forwardRef(
6735
+ ({
6736
+ name,
6737
+ imageUrl,
6738
+ imageAlt,
6739
+ price,
6740
+ originalPrice,
6741
+ currency,
6742
+ locale,
6743
+ lowestPrice,
6744
+ badge,
6745
+ badgeVariant = "success",
6746
+ rating,
6747
+ reviewCount,
6748
+ ctaLabel = "Dodaj do koszyka",
6749
+ onAddToCart,
6750
+ ...props
6751
+ }, ref) => /* @__PURE__ */ jsx(Card, { ref, variant: "default", padding: "md", rounded: "lg", ...props, children: /* @__PURE__ */ jsx(ContainerRoot, { children: /* @__PURE__ */ jsxs(Inner, { children: [
6752
+ /* @__PURE__ */ jsx(ImageWrap4, { children: /* @__PURE__ */ jsx(ProductCardImage, { src: imageUrl, alt: imageAlt ?? name, badge, badgeVariant }) }),
6753
+ /* @__PURE__ */ jsxs(Content, { children: [
6754
+ /* @__PURE__ */ jsx(Name5, { children: name }),
6755
+ rating !== void 0 && /* @__PURE__ */ jsx(Rating, { value: rating, count: reviewCount, size: "sm" }),
6756
+ /* @__PURE__ */ jsx(
6757
+ Price,
6758
+ {
6759
+ price,
6760
+ originalPrice,
6761
+ currency,
6762
+ locale,
6763
+ lowestPrice,
6764
+ style: { marginTop: "0.5rem" }
6765
+ }
6766
+ ),
6767
+ /* @__PURE__ */ jsx(Footer3, { children: /* @__PURE__ */ jsx(
6768
+ Button,
6769
+ {
6770
+ fullWidth: true,
6771
+ onClick: (e) => {
6772
+ e.stopPropagation();
6773
+ onAddToCart?.();
6774
+ },
6775
+ children: ctaLabel
6776
+ }
6777
+ ) })
6778
+ ] })
6779
+ ] }) }) })
6780
+ );
6781
+ ProductCardHorizontal.displayName = "ProductCardHorizontal";
6782
+ var Root24 = styled(Card, {
6226
6783
  shouldForwardProp: (prop) => prop !== "$align"
6227
6784
  })(({ $align }) => ({
6228
6785
  textAlign: $align,
6229
6786
  height: "100%"
6230
6787
  }));
6231
- var Value = styled("p")(({ theme }) => ({
6788
+ var Value2 = styled("p")(({ theme }) => ({
6232
6789
  margin: 0,
6233
6790
  fontFamily: theme.typography.fontFamily,
6234
6791
  fontSize: "2.5rem",
@@ -6252,19 +6809,92 @@ var Description3 = styled("p")(({ theme }) => ({
6252
6809
  lineHeight: 1.5
6253
6810
  }));
6254
6811
  var StatCard = forwardRef(
6255
- ({ stat, cardVariant = "default", align = "center", ...props }, ref) => /* @__PURE__ */ jsxs(Root17, { ref, variant: cardVariant, padding: "lg", rounded: "lg", $align: align, ...props, children: [
6256
- /* @__PURE__ */ jsx(Value, { children: stat.value }),
6812
+ ({ stat, cardVariant = "default", align = "center", ...props }, ref) => /* @__PURE__ */ jsxs(Root24, { ref, variant: cardVariant, padding: "lg", rounded: "lg", $align: align, ...props, children: [
6813
+ /* @__PURE__ */ jsx(Value2, { children: stat.value }),
6257
6814
  /* @__PURE__ */ jsx(Label3, { children: stat.label }),
6258
6815
  stat.description && /* @__PURE__ */ jsx(Description3, { children: stat.description })
6259
6816
  ] })
6260
6817
  );
6261
6818
  StatCard.displayName = "StatCard";
6262
- var Root18 = styled(Card)({
6263
- display: "flex",
6264
- flexDirection: "column",
6265
- gap: "1.25rem",
6266
- height: "100%"
6819
+ var Img4 = styled("img")({
6820
+ width: "4rem",
6821
+ height: "4rem",
6822
+ flexShrink: 0,
6823
+ borderRadius: "50%",
6824
+ objectFit: "cover"
6267
6825
  });
6826
+ function deriveInitials(name) {
6827
+ return name.split(" ").filter(Boolean).slice(0, 2).map((part) => part[0]).join("").toUpperCase();
6828
+ }
6829
+ var TeamMemberAvatar = ({
6830
+ name,
6831
+ avatarUrl,
6832
+ avatarAlt,
6833
+ initials,
6834
+ avatarColor = "primary"
6835
+ }) => {
6836
+ if (avatarUrl) {
6837
+ return /* @__PURE__ */ jsx(Img4, { src: avatarUrl, alt: avatarAlt ?? name });
6838
+ }
6839
+ return /* @__PURE__ */ jsx(
6840
+ Avatar,
6841
+ {
6842
+ initials: initials ?? deriveInitials(name),
6843
+ size: "xl",
6844
+ color: avatarColor
6845
+ }
6846
+ );
6847
+ };
6848
+ TeamMemberAvatar.displayName = "TeamMemberAvatar";
6849
+ var Root25 = styled("div")({ minWidth: 0 });
6850
+ var Name6 = styled("h3")(({ theme }) => ({
6851
+ margin: 0,
6852
+ color: theme.palette.text.primary,
6853
+ fontFamily: theme.typography.fontFamily,
6854
+ fontSize: "1rem",
6855
+ fontWeight: 700,
6856
+ lineHeight: 1.4
6857
+ }));
6858
+ var Role = styled("p")(({ theme }) => ({
6859
+ margin: "0.25rem 0 0",
6860
+ color: theme.palette.text.secondary,
6861
+ fontFamily: theme.typography.fontFamily,
6862
+ fontSize: "0.875rem",
6863
+ lineHeight: 1.5
6864
+ }));
6865
+ var TeamMemberInfo = ({ name, role }) => /* @__PURE__ */ jsxs(Root25, { children: [
6866
+ /* @__PURE__ */ jsx(Name6, { children: name }),
6867
+ role && /* @__PURE__ */ jsx(Role, { children: role })
6868
+ ] });
6869
+ TeamMemberInfo.displayName = "TeamMemberInfo";
6870
+ var Root26 = styled(Card)(({ theme }) => ({
6871
+ display: "flex",
6872
+ alignItems: "center",
6873
+ gap: "1rem",
6874
+ height: "100%",
6875
+ transition: "border-color 0.2s ease, box-shadow 0.2s ease, transform 0.2s ease",
6876
+ "&:hover": {
6877
+ borderColor: theme.palette.primary.main,
6878
+ boxShadow: theme.shadows[2],
6879
+ transform: "translateY(-2px)"
6880
+ }
6881
+ }));
6882
+ var TeamMemberCard = forwardRef(
6883
+ ({ member, cardVariant = "default", ...props }, ref) => /* @__PURE__ */ jsxs(Root26, { ref, variant: cardVariant, padding: "lg", rounded: "lg", ...props, children: [
6884
+ /* @__PURE__ */ jsx(
6885
+ TeamMemberAvatar,
6886
+ {
6887
+ name: member.name,
6888
+ avatarUrl: member.avatarUrl,
6889
+ avatarAlt: member.avatarAlt,
6890
+ initials: member.initials,
6891
+ avatarColor: member.avatarColor
6892
+ }
6893
+ ),
6894
+ /* @__PURE__ */ jsx(TeamMemberInfo, { name: member.name, role: member.role })
6895
+ ] })
6896
+ );
6897
+ TeamMemberCard.displayName = "TeamMemberCard";
6268
6898
  var Quote = styled("blockquote")(({ theme }) => ({
6269
6899
  margin: 0,
6270
6900
  fontFamily: theme.typography.fontFamily,
@@ -6285,104 +6915,162 @@ var Quote = styled("blockquote")(({ theme }) => ({
6285
6915
  marginLeft: "0.125rem"
6286
6916
  }
6287
6917
  }));
6288
- var Footer2 = styled("div")({
6918
+ var TestimonialQuote = ({ quote }) => /* @__PURE__ */ jsx(Quote, { children: quote });
6919
+ TestimonialQuote.displayName = "TestimonialQuote";
6920
+ var Root27 = styled("div")({
6289
6921
  display: "flex",
6290
6922
  alignItems: "center",
6291
6923
  gap: "0.75rem"
6292
6924
  });
6293
- var AvatarImage = styled("img")({
6925
+ var AvatarImg = styled("img")({
6294
6926
  width: "2.5rem",
6295
6927
  height: "2.5rem",
6296
6928
  borderRadius: "50%",
6297
6929
  objectFit: "cover",
6298
6930
  flexShrink: 0
6299
6931
  });
6300
- var AuthorInfo = styled("div")({
6301
- minWidth: 0
6302
- });
6303
- var AuthorName = styled("p")(({ theme }) => ({
6932
+ var Info = styled("div")({ minWidth: 0 });
6933
+ var Name7 = styled("p")(({ theme }) => ({
6304
6934
  margin: 0,
6305
6935
  fontFamily: theme.typography.fontFamily,
6306
6936
  fontSize: "0.875rem",
6307
6937
  fontWeight: 700,
6308
6938
  color: theme.palette.text.primary
6309
6939
  }));
6310
- var AuthorRole = styled("p")(({ theme }) => ({
6940
+ var Role2 = styled("p")(({ theme }) => ({
6311
6941
  margin: "0.125rem 0 0",
6312
6942
  fontFamily: theme.typography.fontFamily,
6313
6943
  fontSize: "0.8125rem",
6314
6944
  color: theme.palette.text.secondary
6315
6945
  }));
6946
+ function deriveInitials2(name) {
6947
+ return name.split(" ").filter(Boolean).slice(0, 2).map((p) => p[0]).join("").toUpperCase();
6948
+ }
6949
+ var TestimonialAuthor = ({
6950
+ authorName,
6951
+ authorRole,
6952
+ authorAvatarUrl,
6953
+ authorInitials
6954
+ }) => /* @__PURE__ */ jsxs(Root27, { children: [
6955
+ authorAvatarUrl ? /* @__PURE__ */ jsx(AvatarImg, { src: authorAvatarUrl, alt: authorName }) : /* @__PURE__ */ jsx(Avatar, { initials: authorInitials ?? deriveInitials2(authorName), size: "md", color: "primary" }),
6956
+ /* @__PURE__ */ jsxs(Info, { children: [
6957
+ /* @__PURE__ */ jsx(Name7, { children: authorName }),
6958
+ authorRole && /* @__PURE__ */ jsx(Role2, { children: authorRole })
6959
+ ] })
6960
+ ] });
6961
+ TestimonialAuthor.displayName = "TestimonialAuthor";
6962
+ var Root28 = styled(Card)({
6963
+ display: "flex",
6964
+ flexDirection: "column",
6965
+ gap: "1.25rem",
6966
+ height: "100%"
6967
+ });
6316
6968
  var TestimonialCard = forwardRef(
6317
- ({ testimonial, cardVariant = "default", ...props }, ref) => {
6318
- const initials = testimonial.authorInitials ?? testimonial.authorName.split(" ").filter(Boolean).slice(0, 2).map((p) => p[0]).join("").toUpperCase();
6319
- return /* @__PURE__ */ jsxs(Root18, { ref, variant: cardVariant, padding: "lg", rounded: "lg", ...props, children: [
6320
- testimonial.rating && /* @__PURE__ */ jsx(Rating, { value: testimonial.rating, readonly: true, size: "sm" }),
6321
- /* @__PURE__ */ jsx(Quote, { children: testimonial.quote }),
6322
- /* @__PURE__ */ jsxs(Footer2, { children: [
6323
- testimonial.authorAvatarUrl ? /* @__PURE__ */ jsx(AvatarImage, { src: testimonial.authorAvatarUrl, alt: testimonial.authorName }) : /* @__PURE__ */ jsx(Avatar, { initials, size: "md", color: "primary" }),
6324
- /* @__PURE__ */ jsxs(AuthorInfo, { children: [
6325
- /* @__PURE__ */ jsx(AuthorName, { children: testimonial.authorName }),
6326
- testimonial.authorRole && /* @__PURE__ */ jsx(AuthorRole, { children: testimonial.authorRole })
6327
- ] })
6328
- ] })
6329
- ] });
6330
- }
6969
+ ({ testimonial, cardVariant = "default", ...props }, ref) => /* @__PURE__ */ jsxs(Root28, { ref, variant: cardVariant, padding: "lg", rounded: "lg", ...props, children: [
6970
+ testimonial.rating && /* @__PURE__ */ jsx(Rating, { value: testimonial.rating, readonly: true, size: "sm" }),
6971
+ /* @__PURE__ */ jsx(TestimonialQuote, { quote: testimonial.quote }),
6972
+ /* @__PURE__ */ jsx(
6973
+ TestimonialAuthor,
6974
+ {
6975
+ authorName: testimonial.authorName,
6976
+ authorRole: testimonial.authorRole,
6977
+ authorAvatarUrl: testimonial.authorAvatarUrl,
6978
+ authorInitials: testimonial.authorInitials
6979
+ }
6980
+ )
6981
+ ] })
6331
6982
  );
6332
6983
  TestimonialCard.displayName = "TestimonialCard";
6333
- var Root19 = styled(Card)(({ theme }) => ({
6984
+ var Root29 = styled("div")(({ theme }) => ({
6985
+ position: "relative",
6986
+ padding: "1.5rem",
6987
+ borderRadius: "1rem",
6988
+ border: `2px dashed ${theme.palette.primary.main}`,
6989
+ backgroundColor: theme.palette.background.paper,
6990
+ fontFamily: theme.typography.fontFamily,
6334
6991
  display: "flex",
6335
- alignItems: "center",
6336
- gap: "1rem",
6337
- height: "100%",
6338
- transition: "border-color 0.2s ease, box-shadow 0.2s ease, transform 0.2s ease",
6339
- "&:hover": {
6340
- borderColor: theme.palette.primary.main,
6341
- boxShadow: theme.shadows[2],
6342
- transform: "translateY(-2px)"
6343
- }
6992
+ flexDirection: "column",
6993
+ gap: "1rem"
6344
6994
  }));
6345
- var AvatarImage2 = styled("img")({
6346
- width: "4rem",
6347
- height: "4rem",
6348
- flexShrink: 0,
6349
- borderRadius: "50%",
6350
- objectFit: "cover"
6351
- });
6352
- var Content = styled("div")({
6353
- minWidth: 0
6995
+ var Header = styled("div")({
6996
+ display: "flex",
6997
+ alignItems: "center",
6998
+ gap: "0.75rem"
6354
6999
  });
6355
- var Name3 = styled("h3")(({ theme }) => ({
6356
- margin: 0,
6357
- color: theme.palette.text.primary,
6358
- fontFamily: theme.typography.fontFamily,
6359
- fontSize: "1rem",
6360
- fontWeight: 700,
6361
- lineHeight: 1.4
7000
+ var Discount = styled("span")(({ theme }) => ({
7001
+ fontSize: "2rem",
7002
+ fontWeight: 800,
7003
+ lineHeight: 1,
7004
+ color: theme.palette.primary.main
6362
7005
  }));
6363
- var Role = styled("p")(({ theme }) => ({
6364
- margin: "0.25rem 0 0",
6365
- color: theme.palette.text.secondary,
6366
- fontFamily: theme.typography.fontFamily,
7006
+ var Description4 = styled("p")(({ theme }) => ({
7007
+ margin: 0,
6367
7008
  fontSize: "0.875rem",
7009
+ color: theme.palette.text.secondary,
6368
7010
  lineHeight: 1.5
6369
7011
  }));
6370
- function getInitials(member) {
6371
- if (member.initials) {
6372
- return member.initials;
7012
+ var CodeRow = styled("div")(({ theme }) => ({
7013
+ display: "flex",
7014
+ alignItems: "center",
7015
+ gap: "0.5rem",
7016
+ padding: "0.625rem 1rem",
7017
+ backgroundColor: theme.palette.action.hover,
7018
+ borderRadius: theme.shape.borderRadius
7019
+ }));
7020
+ var Code = styled("span")(({ theme }) => ({
7021
+ flex: 1,
7022
+ fontFamily: "monospace",
7023
+ fontSize: "1rem",
7024
+ fontWeight: 700,
7025
+ letterSpacing: "0.1em",
7026
+ color: theme.palette.text.primary,
7027
+ userSelect: "all"
7028
+ }));
7029
+ var CopyButton = styled("button")(({ theme }) => ({
7030
+ border: 0,
7031
+ background: "transparent",
7032
+ color: theme.palette.primary.main,
7033
+ cursor: "pointer",
7034
+ padding: "0.25rem",
7035
+ display: "flex",
7036
+ alignItems: "center",
7037
+ borderRadius: theme.shape.borderRadius,
7038
+ transition: "background-color 150ms ease",
7039
+ "&:hover": {
7040
+ backgroundColor: theme.palette.action.hover
6373
7041
  }
6374
- return member.name.split(" ").filter(Boolean).slice(0, 2).map((part) => part[0]).join("").toUpperCase();
6375
- }
6376
- var TeamMemberCard = forwardRef(
6377
- ({ member, cardVariant = "default", ...props }, ref) => /* @__PURE__ */ jsxs(Root19, { ref, variant: cardVariant, padding: "lg", rounded: "lg", ...props, children: [
6378
- member.avatarUrl ? /* @__PURE__ */ jsx(AvatarImage2, { src: member.avatarUrl, alt: member.avatarAlt ?? member.name }) : /* @__PURE__ */ jsx(Avatar, { initials: getInitials(member), size: "xl", color: member.avatarColor ?? "primary" }),
6379
- /* @__PURE__ */ jsxs(Content, { children: [
6380
- /* @__PURE__ */ jsx(Name3, { children: member.name }),
6381
- /* @__PURE__ */ jsx(Role, { children: member.role })
7042
+ }));
7043
+ var Expiry = styled("p")(({ theme }) => ({
7044
+ margin: 0,
7045
+ fontSize: "0.75rem",
7046
+ color: theme.palette.text.disabled
7047
+ }));
7048
+ var VoucherCard = forwardRef(
7049
+ ({ code, discount, description, expiresAt, copied = false, onCopy, ...props }, ref) => /* @__PURE__ */ jsxs(Root29, { ref, ...props, children: [
7050
+ /* @__PURE__ */ jsxs(Header, { children: [
7051
+ /* @__PURE__ */ jsx(LocalOfferIcon, { style: { fontSize: 20 }, color: "primary" }),
7052
+ /* @__PURE__ */ jsx(Discount, { children: discount })
7053
+ ] }),
7054
+ description && /* @__PURE__ */ jsx(Description4, { children: description }),
7055
+ /* @__PURE__ */ jsxs(CodeRow, { children: [
7056
+ /* @__PURE__ */ jsx(Code, { children: code }),
7057
+ /* @__PURE__ */ jsx(
7058
+ CopyButton,
7059
+ {
7060
+ type: "button",
7061
+ "aria-label": copied ? "Skopiowano" : "Kopiuj kod",
7062
+ onClick: () => onCopy?.(code),
7063
+ children: copied ? /* @__PURE__ */ jsx(CheckIcon, { style: { fontSize: 18, color: "green" } }) : /* @__PURE__ */ jsx(ContentCopyIcon, { style: { fontSize: 18 } })
7064
+ }
7065
+ )
7066
+ ] }),
7067
+ expiresAt && /* @__PURE__ */ jsxs(Expiry, { children: [
7068
+ "Wa\u017Cny do: ",
7069
+ expiresAt
6382
7070
  ] })
6383
7071
  ] })
6384
7072
  );
6385
- TeamMemberCard.displayName = "TeamMemberCard";
7073
+ VoucherCard.displayName = "VoucherCard";
6386
7074
  var Wrapper3 = styled("div")({
6387
7075
  width: "100%",
6388
7076
  overflowX: "auto",
@@ -6467,7 +7155,7 @@ var RemoveBtn = styled("button")(({ theme }) => ({
6467
7155
  }
6468
7156
  }));
6469
7157
  var Tbody = styled("tbody")({});
6470
- var Row3 = styled("tr", {
7158
+ var Row4 = styled("tr", {
6471
7159
  shouldForwardProp: (p) => p !== "$diff"
6472
7160
  })(({ theme, $diff }) => ({
6473
7161
  backgroundColor: $diff ? theme.palette.mode === "dark" ? "rgba(255,255,255,0.03)" : "rgba(0,0,0,0.02)" : "transparent",
@@ -6544,7 +7232,7 @@ function CompareTool({
6544
7232
  ] }) }),
6545
7233
  /* @__PURE__ */ jsx(Tbody, { children: specKeys.map((key) => {
6546
7234
  const diff = highlightDifferences && isDiff(key, products);
6547
- return /* @__PURE__ */ jsxs(Row3, { $diff: diff, children: [
7235
+ return /* @__PURE__ */ jsxs(Row4, { $diff: diff, children: [
6548
7236
  /* @__PURE__ */ jsx(LabelCell, { as: "th", scope: "row", children: specLabels[key] ?? key }),
6549
7237
  products.map((p) => {
6550
7238
  const val = p.specs[key];
@@ -6556,7 +7244,7 @@ function CompareTool({
6556
7244
  ] }) });
6557
7245
  }
6558
7246
  var spin2 = keyframes`to { transform: rotate(360deg); }`;
6559
- var Root20 = styled("div")({
7247
+ var Root30 = styled("div")({
6560
7248
  display: "flex",
6561
7249
  flexDirection: "column",
6562
7250
  gap: "0.5rem"
@@ -6703,7 +7391,7 @@ function CouponInput({
6703
7391
  if (e.key === "Enter") handleApply();
6704
7392
  };
6705
7393
  if (appliedCode) {
6706
- return /* @__PURE__ */ jsxs(Root20, { className, children: [
7394
+ return /* @__PURE__ */ jsxs(Root30, { className, children: [
6707
7395
  /* @__PURE__ */ jsxs(AppliedRow, { role: "status", "aria-label": `Kod rabatowy ${appliedCode} zastosowany`, children: [
6708
7396
  /* @__PURE__ */ jsx(AppliedCode, { children: appliedCode }),
6709
7397
  onRemove && /* @__PURE__ */ jsx(
@@ -6722,7 +7410,7 @@ function CouponInput({
6722
7410
  ] })
6723
7411
  ] });
6724
7412
  }
6725
- return /* @__PURE__ */ jsxs(Root20, { className, children: [
7413
+ return /* @__PURE__ */ jsxs(Root30, { className, children: [
6726
7414
  /* @__PURE__ */ jsxs(InputRow, { $hasError: Boolean(error), $applied: false, children: [
6727
7415
  /* @__PURE__ */ jsx(
6728
7416
  Input,
@@ -6754,7 +7442,82 @@ function CouponInput({
6754
7442
  error && /* @__PURE__ */ jsx(Message, { $type: "error", id: errorId, role: "alert", children: error })
6755
7443
  ] });
6756
7444
  }
6757
- var Root21 = styled("div")({
7445
+ var Root31 = styled("div")({
7446
+ display: "flex",
7447
+ flexDirection: "column",
7448
+ gap: "0.5rem"
7449
+ });
7450
+ var GroupLabel = styled("span")(({ theme }) => ({
7451
+ fontSize: "0.875rem",
7452
+ fontWeight: 600,
7453
+ color: theme.palette.text.primary,
7454
+ fontFamily: theme.typography.fontFamily
7455
+ }));
7456
+ var MethodLabel = styled("label", {
7457
+ shouldForwardProp: (prop) => prop !== "$selected"
7458
+ })(({ theme, $selected }) => ({
7459
+ display: "flex",
7460
+ alignItems: "center",
7461
+ gap: "0.875rem",
7462
+ padding: "0.875rem 1rem",
7463
+ border: `${$selected ? 2 : 1}px solid ${$selected ? theme.palette.primary.main : theme.palette.divider}`,
7464
+ borderRadius: theme.shape.borderRadius,
7465
+ cursor: "pointer",
7466
+ backgroundColor: $selected ? `${theme.palette.primary.main}08` : theme.palette.background.paper,
7467
+ transition: "border-color 150ms ease, background-color 150ms ease",
7468
+ fontFamily: theme.typography.fontFamily,
7469
+ "&:hover": { borderColor: theme.palette.primary.main }
7470
+ }));
7471
+ var Radio = styled("input")({
7472
+ width: "1rem",
7473
+ height: "1rem",
7474
+ flexShrink: 0,
7475
+ cursor: "pointer"
7476
+ });
7477
+ var IconWrap = styled("span")(({ theme }) => ({
7478
+ color: theme.palette.text.secondary,
7479
+ display: "flex"
7480
+ }));
7481
+ var Info2 = styled("div")({ flex: 1 });
7482
+ var Name8 = styled("div")(({ theme }) => ({
7483
+ fontSize: "0.9375rem",
7484
+ fontWeight: 600,
7485
+ color: theme.palette.text.primary
7486
+ }));
7487
+ var Desc = styled("div")(({ theme }) => ({
7488
+ fontSize: "0.8125rem",
7489
+ color: theme.palette.text.secondary,
7490
+ marginTop: "0.125rem"
7491
+ }));
7492
+ var PaymentMethodSelector = forwardRef(
7493
+ ({ methods, value, onChange, label = "Metoda p\u0142atno\u015Bci", disabled, ...props }, ref) => /* @__PURE__ */ jsxs(Root31, { ref, ...props, children: [
7494
+ /* @__PURE__ */ jsx(GroupLabel, { children: label }),
7495
+ methods.map((method) => {
7496
+ const selected = value === method.id;
7497
+ return /* @__PURE__ */ jsxs(MethodLabel, { $selected: selected, children: [
7498
+ /* @__PURE__ */ jsx(
7499
+ Radio,
7500
+ {
7501
+ type: "radio",
7502
+ name: "payment",
7503
+ value: method.id,
7504
+ checked: selected,
7505
+ disabled,
7506
+ onChange: () => onChange?.(method.id),
7507
+ "aria-label": method.label
7508
+ }
7509
+ ),
7510
+ /* @__PURE__ */ jsx(IconWrap, { children: method.icon ?? /* @__PURE__ */ jsx(CreditCardOutlinedIcon, { "aria-hidden": true }) }),
7511
+ /* @__PURE__ */ jsxs(Info2, { children: [
7512
+ /* @__PURE__ */ jsx(Name8, { children: method.label }),
7513
+ method.description && /* @__PURE__ */ jsx(Desc, { children: method.description })
7514
+ ] })
7515
+ ] }, method.id);
7516
+ })
7517
+ ] })
7518
+ );
7519
+ PaymentMethodSelector.displayName = "PaymentMethodSelector";
7520
+ var Root32 = styled("div")({
6758
7521
  display: "grid",
6759
7522
  gap: "0.75rem"
6760
7523
  });
@@ -6792,7 +7555,7 @@ var ProductGallery = forwardRef(
6792
7555
  if (!activeImage) {
6793
7556
  return null;
6794
7557
  }
6795
- return /* @__PURE__ */ jsxs(Root21, { ref, ...props, children: [
7558
+ return /* @__PURE__ */ jsxs(Root32, { ref, ...props, children: [
6796
7559
  /* @__PURE__ */ jsx(AspectRatio, { ratio: "4/3", children: /* @__PURE__ */ jsx(MainImage, { src: activeImage.src, alt: activeImage.alt }) }),
6797
7560
  images.length > 1 && /* @__PURE__ */ jsx(Thumbnails, { children: images.map((image, index) => /* @__PURE__ */ jsx(
6798
7561
  ThumbnailButton,
@@ -6810,7 +7573,7 @@ var ProductGallery = forwardRef(
6810
7573
  }
6811
7574
  );
6812
7575
  ProductGallery.displayName = "ProductGallery";
6813
- var Root22 = styled("div")(({ theme, $variant }) => ({
7576
+ var Root33 = styled("div")(({ theme, $variant }) => ({
6814
7577
  display: "flex",
6815
7578
  alignItems: "center",
6816
7579
  justifyContent: "center",
@@ -6830,14 +7593,14 @@ var Link = styled("a")(({ theme }) => ({
6830
7593
  textUnderlineOffset: "0.2em"
6831
7594
  }));
6832
7595
  var PromoStrip = forwardRef(
6833
- ({ message, actionLabel, href, variant = "info", ...props }, ref) => /* @__PURE__ */ jsxs(Root22, { ref, $variant: variant, ...props, children: [
7596
+ ({ message, actionLabel, href, variant = "info", ...props }, ref) => /* @__PURE__ */ jsxs(Root33, { ref, $variant: variant, ...props, children: [
6834
7597
  /* @__PURE__ */ jsx("span", { children: message }),
6835
7598
  actionLabel && href && /* @__PURE__ */ jsx(Link, { href, children: actionLabel })
6836
7599
  ] })
6837
7600
  );
6838
7601
  PromoStrip.displayName = "PromoStrip";
6839
7602
  var promoStripVariants = ["info", "success", "warning"];
6840
- var Root23 = styled("div")(({ theme }) => ({
7603
+ var Root34 = styled("div")(({ theme }) => ({
6841
7604
  display: "inline-grid",
6842
7605
  gridTemplateColumns: "2.25rem 3rem 2.25rem",
6843
7606
  alignItems: "center",
@@ -6859,7 +7622,7 @@ var Control = styled("button")(({ theme }) => ({
6859
7622
  cursor: "not-allowed"
6860
7623
  }
6861
7624
  }));
6862
- var Value2 = styled("span")(({ theme }) => ({
7625
+ var Value3 = styled("span")(({ theme }) => ({
6863
7626
  display: "inline-flex",
6864
7627
  alignItems: "center",
6865
7628
  justifyContent: "center",
@@ -6869,36 +7632,237 @@ var Value2 = styled("span")(({ theme }) => ({
6869
7632
  borderRight: `1px solid ${theme.palette.divider}`,
6870
7633
  fontWeight: 600
6871
7634
  }));
6872
- var QuantitySelector = forwardRef(
6873
- ({ value, min = 1, max = 99, step = 1, disabled = false, onChange, ...props }, ref) => {
6874
- const decrease = Math.max(min, value - step);
6875
- const increase = Math.min(max, value + step);
6876
- return /* @__PURE__ */ jsxs(Root23, { ref, "aria-label": "Wybierz ilo\u015B\u0107", ...props, children: [
6877
- /* @__PURE__ */ jsx(
6878
- Control,
6879
- {
6880
- type: "button",
6881
- "aria-label": "Zmniejsz ilo\u015B\u0107",
6882
- disabled: disabled || value <= min,
6883
- onClick: () => onChange?.(decrease),
6884
- children: "\u2212"
6885
- }
6886
- ),
6887
- /* @__PURE__ */ jsx(Value2, { "aria-live": "polite", children: value }),
6888
- /* @__PURE__ */ jsx(
6889
- Control,
6890
- {
6891
- type: "button",
6892
- "aria-label": "Zwi\u0119ksz ilo\u015B\u0107",
6893
- disabled: disabled || value >= max,
6894
- onClick: () => onChange?.(increase),
6895
- children: "+"
6896
- }
6897
- )
7635
+ var QuantitySelector = forwardRef(
7636
+ ({ value, min = 1, max = 99, step = 1, disabled = false, onChange, ...props }, ref) => {
7637
+ const decrease = Math.max(min, value - step);
7638
+ const increase = Math.min(max, value + step);
7639
+ return /* @__PURE__ */ jsxs(Root34, { ref, "aria-label": "Wybierz ilo\u015B\u0107", ...props, children: [
7640
+ /* @__PURE__ */ jsx(
7641
+ Control,
7642
+ {
7643
+ type: "button",
7644
+ "aria-label": "Zmniejsz ilo\u015B\u0107",
7645
+ disabled: disabled || value <= min,
7646
+ onClick: () => onChange?.(decrease),
7647
+ children: "\u2212"
7648
+ }
7649
+ ),
7650
+ /* @__PURE__ */ jsx(Value3, { "aria-live": "polite", children: value }),
7651
+ /* @__PURE__ */ jsx(
7652
+ Control,
7653
+ {
7654
+ type: "button",
7655
+ "aria-label": "Zwi\u0119ksz ilo\u015B\u0107",
7656
+ disabled: disabled || value >= max,
7657
+ onClick: () => onChange?.(increase),
7658
+ children: "+"
7659
+ }
7660
+ )
7661
+ ] });
7662
+ }
7663
+ );
7664
+ QuantitySelector.displayName = "QuantitySelector";
7665
+ var Root35 = styled("div")({
7666
+ display: "flex",
7667
+ flexDirection: "column",
7668
+ gap: "0.5rem"
7669
+ });
7670
+ var GroupLabel2 = styled("span")(({ theme }) => ({
7671
+ fontSize: "0.875rem",
7672
+ fontWeight: 600,
7673
+ color: theme.palette.text.primary,
7674
+ fontFamily: theme.typography.fontFamily
7675
+ }));
7676
+ var OptionLabel = styled("label", {
7677
+ shouldForwardProp: (prop) => prop !== "$selected"
7678
+ })(({ theme, $selected }) => ({
7679
+ display: "flex",
7680
+ alignItems: "center",
7681
+ gap: "0.875rem",
7682
+ padding: "0.875rem 1rem",
7683
+ border: `${$selected ? 2 : 1}px solid ${$selected ? theme.palette.primary.main : theme.palette.divider}`,
7684
+ borderRadius: theme.shape.borderRadius,
7685
+ cursor: "pointer",
7686
+ backgroundColor: $selected ? `${theme.palette.primary.main}08` : theme.palette.background.paper,
7687
+ transition: "border-color 150ms ease, background-color 150ms ease",
7688
+ fontFamily: theme.typography.fontFamily,
7689
+ "&:hover": {
7690
+ borderColor: theme.palette.primary.main
7691
+ }
7692
+ }));
7693
+ var Radio2 = styled("input")({
7694
+ width: "1rem",
7695
+ height: "1rem",
7696
+ flexShrink: 0,
7697
+ cursor: "pointer"
7698
+ });
7699
+ var IconWrap2 = styled("span")(({ theme }) => ({
7700
+ color: theme.palette.text.secondary,
7701
+ display: "flex"
7702
+ }));
7703
+ var Info3 = styled("div")({ flex: 1 });
7704
+ var Name9 = styled("div")(({ theme }) => ({
7705
+ fontSize: "0.9375rem",
7706
+ fontWeight: 600,
7707
+ color: theme.palette.text.primary
7708
+ }));
7709
+ var Desc2 = styled("div")(({ theme }) => ({
7710
+ fontSize: "0.8125rem",
7711
+ color: theme.palette.text.secondary,
7712
+ marginTop: "0.125rem"
7713
+ }));
7714
+ var Price2 = styled("div", {
7715
+ shouldForwardProp: (prop) => prop !== "$selected"
7716
+ })(({ theme, $selected }) => ({
7717
+ fontSize: "0.9375rem",
7718
+ fontWeight: 700,
7719
+ color: $selected ? theme.palette.primary.main : theme.palette.text.primary,
7720
+ whiteSpace: "nowrap"
7721
+ }));
7722
+ var ShippingSelector = forwardRef(
7723
+ ({ options, value, onChange, label = "Metoda dostawy", disabled, ...props }, ref) => /* @__PURE__ */ jsxs(Root35, { ref, ...props, children: [
7724
+ /* @__PURE__ */ jsx(GroupLabel2, { children: label }),
7725
+ options.map((opt) => {
7726
+ const selected = value === opt.id;
7727
+ return /* @__PURE__ */ jsxs(OptionLabel, { $selected: selected, children: [
7728
+ /* @__PURE__ */ jsx(
7729
+ Radio2,
7730
+ {
7731
+ type: "radio",
7732
+ name: "shipping",
7733
+ value: opt.id,
7734
+ checked: selected,
7735
+ disabled,
7736
+ onChange: () => onChange?.(opt.id),
7737
+ "aria-label": opt.label
7738
+ }
7739
+ ),
7740
+ /* @__PURE__ */ jsx(IconWrap2, { children: opt.icon ?? /* @__PURE__ */ jsx(LocalShippingOutlinedIcon, { "aria-hidden": true }) }),
7741
+ /* @__PURE__ */ jsxs(Info3, { children: [
7742
+ /* @__PURE__ */ jsx(Name9, { children: opt.label }),
7743
+ (opt.description || opt.estimatedDays) && /* @__PURE__ */ jsxs(Desc2, { children: [
7744
+ opt.description,
7745
+ opt.estimatedDays && ` \xB7 ${opt.estimatedDays}`
7746
+ ] })
7747
+ ] }),
7748
+ /* @__PURE__ */ jsx(Price2, { $selected: selected, children: opt.price })
7749
+ ] }, opt.id);
7750
+ })
7751
+ ] })
7752
+ );
7753
+ ShippingSelector.displayName = "ShippingSelector";
7754
+ var DEFAULT_SORT_OPTIONS = [
7755
+ { value: "popular", label: "Najpopularniejsze" },
7756
+ { value: "newest", label: "Najnowsze" },
7757
+ { value: "price-asc", label: "Cena rosn\u0105co" },
7758
+ { value: "price-desc", label: "Cena malej\u0105co" }
7759
+ ];
7760
+ var Root36 = styled("div")(({ theme }) => ({
7761
+ display: "flex",
7762
+ alignItems: "center",
7763
+ justifyContent: "space-between",
7764
+ flexWrap: "wrap",
7765
+ gap: "0.75rem",
7766
+ padding: "0.75rem 0",
7767
+ borderBottom: `1px solid ${theme.palette.divider}`,
7768
+ fontFamily: theme.typography.fontFamily
7769
+ }));
7770
+ var TotalLabel = styled("span")(({ theme }) => ({
7771
+ fontSize: "0.875rem",
7772
+ color: theme.palette.text.secondary
7773
+ }));
7774
+ var Controls = styled("div")({
7775
+ display: "flex",
7776
+ alignItems: "center",
7777
+ gap: "0.75rem"
7778
+ });
7779
+ var SortLabel = styled("label")(({ theme }) => ({
7780
+ fontSize: "0.875rem",
7781
+ color: theme.palette.text.secondary
7782
+ }));
7783
+ var Select = styled("select")(({ theme }) => ({
7784
+ padding: "0.375rem 2rem 0.375rem 0.625rem",
7785
+ border: `1px solid ${theme.palette.divider}`,
7786
+ borderRadius: theme.shape.borderRadius,
7787
+ backgroundColor: theme.palette.background.paper,
7788
+ color: theme.palette.text.primary,
7789
+ fontFamily: theme.typography.fontFamily,
7790
+ fontSize: "0.875rem",
7791
+ cursor: "pointer",
7792
+ appearance: "none",
7793
+ 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")`,
7794
+ backgroundRepeat: "no-repeat",
7795
+ backgroundPosition: "right 0.5rem center",
7796
+ "&:focus": { outline: `3px solid ${theme.palette.primary.main}`, outlineOffset: "2px" }
7797
+ }));
7798
+ var ViewToggle = styled("div")(({ theme }) => ({
7799
+ display: "flex",
7800
+ border: `1px solid ${theme.palette.divider}`,
7801
+ borderRadius: theme.shape.borderRadius,
7802
+ overflow: "hidden"
7803
+ }));
7804
+ var ViewButton = styled("button", {
7805
+ shouldForwardProp: (prop) => prop !== "$active"
7806
+ })(({ theme, $active }) => ({
7807
+ appearance: "none",
7808
+ border: "none",
7809
+ cursor: "pointer",
7810
+ display: "flex",
7811
+ alignItems: "center",
7812
+ padding: "0.375rem 0.5rem",
7813
+ backgroundColor: $active ? theme.palette.primary.main : "transparent",
7814
+ color: $active ? theme.palette.primary.contrastText : theme.palette.text.secondary,
7815
+ transition: "background-color 150ms ease, color 150ms ease",
7816
+ "&:hover:not(:disabled)": {
7817
+ backgroundColor: $active ? theme.palette.primary.dark : theme.palette.action.hover
7818
+ },
7819
+ "&:focus-visible": { outline: `3px solid ${theme.palette.primary.main}`, outlineOffset: "-1px" }
7820
+ }));
7821
+ var SortBar = forwardRef(
7822
+ ({
7823
+ total,
7824
+ totalLabel,
7825
+ sortOptions = DEFAULT_SORT_OPTIONS,
7826
+ sortValue,
7827
+ onSortChange,
7828
+ viewMode = "grid",
7829
+ onViewModeChange,
7830
+ showViewToggle = true,
7831
+ ...props
7832
+ }, ref) => {
7833
+ const resolvedLabel = totalLabel ?? (total !== void 0 ? `Znaleziono ${total} produkt\xF3w` : void 0);
7834
+ return /* @__PURE__ */ jsxs(Root36, { ref, ...props, children: [
7835
+ resolvedLabel && /* @__PURE__ */ jsx(TotalLabel, { children: resolvedLabel }),
7836
+ /* @__PURE__ */ jsxs(Controls, { children: [
7837
+ sortOptions.length > 0 && /* @__PURE__ */ jsxs(Fragment, { children: [
7838
+ /* @__PURE__ */ jsx(SortLabel, { htmlFor: "sort-select", children: "Sortuj:" }),
7839
+ /* @__PURE__ */ jsx(
7840
+ Select,
7841
+ {
7842
+ id: "sort-select",
7843
+ value: sortValue ?? "",
7844
+ onChange: (e) => onSortChange?.(e.target.value),
7845
+ children: sortOptions.map((opt) => /* @__PURE__ */ jsx("option", { value: opt.value, children: opt.label }, opt.value))
7846
+ }
7847
+ )
7848
+ ] }),
7849
+ showViewToggle && /* @__PURE__ */ jsx(ViewToggle, { "aria-label": "Tryb widoku", children: ["grid", "list"].map((mode) => /* @__PURE__ */ jsx(
7850
+ ViewButton,
7851
+ {
7852
+ type: "button",
7853
+ $active: viewMode === mode,
7854
+ "aria-label": mode === "grid" ? "Widok siatki" : "Widok listy",
7855
+ "aria-pressed": viewMode === mode,
7856
+ onClick: () => onViewModeChange?.(mode),
7857
+ children: mode === "grid" ? /* @__PURE__ */ jsx(GridViewIcon, { "aria-hidden": true, style: { fontSize: 16 } }) : /* @__PURE__ */ jsx(ViewListIcon, { "aria-hidden": true, style: { fontSize: 16 } })
7858
+ },
7859
+ mode
7860
+ )) })
7861
+ ] })
6898
7862
  ] });
6899
7863
  }
6900
7864
  );
6901
- QuantitySelector.displayName = "QuantitySelector";
7865
+ SortBar.displayName = "SortBar";
6902
7866
  var COLOR_MAP = {
6903
7867
  "in-stock": "success",
6904
7868
  "low-stock": "warning",
@@ -6920,7 +7884,7 @@ function getDefaultLabel(status, count) {
6920
7884
  return "Dost\u0119pny na zam\xF3wienie";
6921
7885
  }
6922
7886
  }
6923
- var Root24 = styled("div", {
7887
+ var Root37 = styled("div", {
6924
7888
  shouldForwardProp: (p) => p !== "$color" && p !== "$size"
6925
7889
  })(({ theme, $color, $size }) => {
6926
7890
  const colorMap = {
@@ -6961,7 +7925,7 @@ var StockStatus = forwardRef(
6961
7925
  ({ status, count, label, showIcon = true, size = "md", ...props }, ref) => {
6962
7926
  const color = COLOR_MAP[status];
6963
7927
  const text = label ?? getDefaultLabel(status, count);
6964
- return /* @__PURE__ */ jsxs(Root24, { ref, $color: color, $size: size, role: "status", "aria-label": text, ...props, children: [
7928
+ return /* @__PURE__ */ jsxs(Root37, { ref, $color: color, $size: size, role: "status", "aria-label": text, ...props, children: [
6965
7929
  showIcon && /* @__PURE__ */ jsx(Dot2, { $color: color, "aria-hidden": "true" }),
6966
7930
  /* @__PURE__ */ jsx("span", { children: text })
6967
7931
  ] });
@@ -6975,7 +7939,110 @@ var stockStatusValues = [
6975
7939
  "preorder",
6976
7940
  "backorder"
6977
7941
  ];
6978
- var Root25 = styled("div")(({ theme }) => ({
7942
+ var Root38 = styled("div")({
7943
+ display: "flex",
7944
+ flexDirection: "column",
7945
+ gap: "0.5rem"
7946
+ });
7947
+ var Label4 = styled("span")(({ theme }) => ({
7948
+ fontSize: "0.875rem",
7949
+ fontWeight: 600,
7950
+ color: theme.palette.text.primary,
7951
+ fontFamily: theme.typography.fontFamily
7952
+ }));
7953
+ var OptionsRow = styled("div")({
7954
+ display: "flex",
7955
+ flexWrap: "wrap",
7956
+ gap: "0.5rem"
7957
+ });
7958
+ var OptionButton = styled("button", {
7959
+ shouldForwardProp: (prop) => prop !== "$active" && prop !== "$mode"
7960
+ })(({ theme, $active, $mode }) => ({
7961
+ appearance: "none",
7962
+ cursor: "pointer",
7963
+ fontFamily: theme.typography.fontFamily,
7964
+ fontSize: "0.875rem",
7965
+ fontWeight: 500,
7966
+ transition: "border-color 150ms ease, background-color 150ms ease, box-shadow 150ms ease",
7967
+ "&:disabled": {
7968
+ opacity: 0.4,
7969
+ cursor: "not-allowed",
7970
+ textDecoration: $mode === "button" ? "line-through" : "none"
7971
+ },
7972
+ "&:focus-visible": {
7973
+ outline: `3px solid ${theme.palette.primary.main}`,
7974
+ outlineOffset: "2px"
7975
+ },
7976
+ ...$mode === "swatch" ? {
7977
+ width: "2rem",
7978
+ height: "2rem",
7979
+ borderRadius: "50%",
7980
+ border: $active ? `3px solid ${theme.palette.primary.main}` : `2px solid ${theme.palette.divider}`,
7981
+ boxShadow: $active ? `0 0 0 2px ${theme.palette.background.paper}, 0 0 0 4px ${theme.palette.primary.main}` : "none",
7982
+ padding: 0,
7983
+ background: "currentColor"
7984
+ } : {
7985
+ padding: "0.375rem 0.875rem",
7986
+ border: $active ? `2px solid ${theme.palette.primary.main}` : `1px solid ${theme.palette.divider}`,
7987
+ borderRadius: theme.shape.borderRadius,
7988
+ backgroundColor: $active ? `${theme.palette.primary.main}14` : "transparent",
7989
+ color: $active ? theme.palette.primary.main : theme.palette.text.primary
7990
+ }
7991
+ }));
7992
+ var Select2 = styled("select")(({ theme }) => ({
7993
+ padding: "0.5rem 2rem 0.5rem 0.75rem",
7994
+ border: `1px solid ${theme.palette.divider}`,
7995
+ borderRadius: theme.shape.borderRadius,
7996
+ backgroundColor: theme.palette.background.paper,
7997
+ color: theme.palette.text.primary,
7998
+ fontFamily: theme.typography.fontFamily,
7999
+ fontSize: "0.875rem",
8000
+ cursor: "pointer",
8001
+ appearance: "none",
8002
+ 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")`,
8003
+ backgroundRepeat: "no-repeat",
8004
+ backgroundPosition: "right 0.75rem center",
8005
+ "&:focus": {
8006
+ outline: `3px solid ${theme.palette.primary.main}`,
8007
+ outlineOffset: "2px"
8008
+ }
8009
+ }));
8010
+ var VariantSelector = forwardRef(
8011
+ ({ label, options, value, onChange, mode = "button", disabled, ...props }, ref) => /* @__PURE__ */ jsxs(Root38, { ref, ...props, children: [
8012
+ /* @__PURE__ */ jsxs(Label4, { children: [
8013
+ label,
8014
+ value && mode !== "swatch" && /* @__PURE__ */ jsx("span", { style: { fontWeight: 400, marginLeft: "0.375rem" }, children: options.find((o) => o.value === value)?.label })
8015
+ ] }),
8016
+ mode === "dropdown" ? /* @__PURE__ */ jsx(
8017
+ Select2,
8018
+ {
8019
+ value: value ?? "",
8020
+ onChange: (e) => onChange?.(e.target.value),
8021
+ disabled,
8022
+ "aria-label": label,
8023
+ children: options.map((opt) => /* @__PURE__ */ jsx("option", { value: opt.value, disabled: opt.disabled, children: opt.label }, opt.value))
8024
+ }
8025
+ ) : /* @__PURE__ */ jsx(OptionsRow, { role: "radiogroup", "aria-label": label, children: options.map((opt) => /* @__PURE__ */ jsx(
8026
+ OptionButton,
8027
+ {
8028
+ type: "button",
8029
+ $active: value === opt.value,
8030
+ $mode: mode,
8031
+ disabled: opt.disabled || disabled,
8032
+ style: mode === "swatch" ? { color: opt.color ?? "#ccc" } : void 0,
8033
+ title: opt.label,
8034
+ "aria-label": opt.label,
8035
+ "aria-pressed": value === opt.value,
8036
+ onClick: () => onChange?.(opt.value),
8037
+ children: mode === "button" && opt.label
8038
+ },
8039
+ opt.value
8040
+ )) })
8041
+ ] })
8042
+ );
8043
+ VariantSelector.displayName = "VariantSelector";
8044
+ var variantSelectorModes = ["button", "swatch", "dropdown"];
8045
+ var Root39 = styled("div")(({ theme }) => ({
6979
8046
  borderBottom: `1px solid ${theme.palette.divider}`
6980
8047
  }));
6981
8048
  var Trigger2 = styled("button")(({ theme }) => ({
@@ -7023,7 +8090,7 @@ var PanelInner = styled("p")(({ theme }) => ({
7023
8090
  var FaqItem = forwardRef(
7024
8091
  ({ item, defaultOpen = false, ...props }, ref) => {
7025
8092
  const [open, setOpen] = useState(defaultOpen);
7026
- return /* @__PURE__ */ jsxs(Root25, { ref, ...props, children: [
8093
+ return /* @__PURE__ */ jsxs(Root39, { ref, ...props, children: [
7027
8094
  /* @__PURE__ */ jsxs(Trigger2, { type: "button", "aria-expanded": open, onClick: () => setOpen((prev) => !prev), children: [
7028
8095
  item.question,
7029
8096
  /* @__PURE__ */ jsx(ChevronIcon2, { $open: open, "aria-hidden": "true" })
@@ -7071,21 +8138,21 @@ var Title2 = styled("h3")(({ theme }) => ({
7071
8138
  color: theme.palette.text.primary,
7072
8139
  lineHeight: 1.4
7073
8140
  }));
7074
- var Description4 = styled("p")(({ theme }) => ({
8141
+ var Description5 = styled("p")(({ theme }) => ({
7075
8142
  margin: "0.375rem 0 0",
7076
8143
  fontFamily: theme.typography.fontFamily,
7077
8144
  fontSize: "0.9rem",
7078
8145
  color: theme.palette.text.secondary,
7079
8146
  lineHeight: 1.6
7080
8147
  }));
7081
- var FeatureItem2 = forwardRef(
8148
+ var FeatureItem = forwardRef(
7082
8149
  ({ feature, cardVariant = "default", layout = "card", ...props }, ref) => {
7083
8150
  if (layout === "icon-left") {
7084
8151
  return /* @__PURE__ */ jsxs(IconLeftRoot, { ref, ...props, children: [
7085
8152
  feature.icon && /* @__PURE__ */ jsx(IconWrapper, { children: feature.icon }),
7086
8153
  /* @__PURE__ */ jsxs(TextGroup2, { children: [
7087
8154
  /* @__PURE__ */ jsx(Title2, { children: feature.title }),
7088
- /* @__PURE__ */ jsx(Description4, { children: feature.description })
8155
+ /* @__PURE__ */ jsx(Description5, { children: feature.description })
7089
8156
  ] })
7090
8157
  ] });
7091
8158
  }
@@ -7093,13 +8160,13 @@ var FeatureItem2 = forwardRef(
7093
8160
  feature.icon && /* @__PURE__ */ jsx(IconWrapper, { children: feature.icon }),
7094
8161
  /* @__PURE__ */ jsxs(TextGroup2, { children: [
7095
8162
  /* @__PURE__ */ jsx(Title2, { children: feature.title }),
7096
- /* @__PURE__ */ jsx(Description4, { children: feature.description })
8163
+ /* @__PURE__ */ jsx(Description5, { children: feature.description })
7097
8164
  ] })
7098
8165
  ] });
7099
8166
  }
7100
8167
  );
7101
- FeatureItem2.displayName = "FeatureItem";
7102
- var Root26 = styled("div")({
8168
+ FeatureItem.displayName = "FeatureItem";
8169
+ var Root40 = styled("div")({
7103
8170
  display: "flex",
7104
8171
  flexDirection: "column",
7105
8172
  alignItems: "center",
@@ -7138,7 +8205,7 @@ var Title3 = styled("h3")(({ theme }) => ({
7138
8205
  fontSize: "1rem",
7139
8206
  color: theme.palette.text.primary
7140
8207
  }));
7141
- var Description5 = styled("p")(({ theme }) => ({
8208
+ var Description6 = styled("p")(({ theme }) => ({
7142
8209
  margin: 0,
7143
8210
  fontFamily: theme.typography.fontFamily,
7144
8211
  fontSize: "0.875rem",
@@ -7147,10 +8214,10 @@ var Description5 = styled("p")(({ theme }) => ({
7147
8214
  maxWidth: "18rem"
7148
8215
  }));
7149
8216
  var ProcessStep = forwardRef(
7150
- ({ step, title, description, icon, ...props }, ref) => /* @__PURE__ */ jsxs(Root26, { ref, ...props, children: [
8217
+ ({ step, title, description, icon, ...props }, ref) => /* @__PURE__ */ jsxs(Root40, { ref, ...props, children: [
7151
8218
  /* @__PURE__ */ jsx(StepBadge, { "aria-hidden": "true", children: icon ? /* @__PURE__ */ jsx(IconWrapper2, { children: icon }) : /* @__PURE__ */ jsx(StepNumber, { children: step }) }),
7152
8219
  /* @__PURE__ */ jsx(Title3, { children: title }),
7153
- description && /* @__PURE__ */ jsx(Description5, { children: description })
8220
+ description && /* @__PURE__ */ jsx(Description6, { children: description })
7154
8221
  ] })
7155
8222
  );
7156
8223
  ProcessStep.displayName = "ProcessStep";
@@ -7273,7 +8340,7 @@ function getDotColor(status, theme) {
7273
8340
  return theme.palette.mode === "dark" ? "rgba(255,255,255,0.2)" : "rgba(0,0,0,0.15)";
7274
8341
  }
7275
8342
  }
7276
- var List = styled("ol")({
8343
+ var List2 = styled("ol")({
7277
8344
  listStyle: "none",
7278
8345
  margin: 0,
7279
8346
  padding: 0,
@@ -7356,7 +8423,7 @@ var Date2 = styled("time")(({ theme }) => ({
7356
8423
  color: theme.palette.text.secondary,
7357
8424
  whiteSpace: "nowrap"
7358
8425
  }));
7359
- var Description6 = styled("div")(({ theme }) => ({
8426
+ var Description7 = styled("div")(({ theme }) => ({
7360
8427
  marginTop: "0.25rem",
7361
8428
  fontFamily: theme.typography.fontFamily,
7362
8429
  fontSize: "0.875rem",
@@ -7383,14 +8450,14 @@ function TimelineItemComponent({
7383
8450
  /* @__PURE__ */ jsx(Title4, { $compact: compact, children: item.title }),
7384
8451
  item.date && /* @__PURE__ */ jsx(Date2, { dateTime: item.date, children: item.date })
7385
8452
  ] }),
7386
- item.description && /* @__PURE__ */ jsx(Description6, { children: item.description })
8453
+ item.description && /* @__PURE__ */ jsx(Description7, { children: item.description })
7387
8454
  ] })
7388
8455
  ] });
7389
8456
  }
7390
8457
  var Timeline = forwardRef(
7391
8458
  ({ items, variant = "default", align: _align = "left", ...props }, ref) => {
7392
8459
  const compact = variant === "compact";
7393
- return /* @__PURE__ */ jsx(List, { ref, "aria-label": "O\u015B czasu", ...props, children: items.map((item, i) => /* @__PURE__ */ jsx(
8460
+ return /* @__PURE__ */ jsx(List2, { ref, "aria-label": "O\u015B czasu", ...props, children: items.map((item, i) => /* @__PURE__ */ jsx(
7394
8461
  TimelineItemComponent,
7395
8462
  {
7396
8463
  item,
@@ -7409,7 +8476,7 @@ var timelineItemStatuses = [
7409
8476
  "pending",
7410
8477
  "error"
7411
8478
  ];
7412
- var Root27 = styled("div")({
8479
+ var Root41 = styled("div")({
7413
8480
  position: "relative",
7414
8481
  width: "100%",
7415
8482
  overflow: "hidden",
@@ -7519,7 +8586,7 @@ function Carousel({
7519
8586
  }, [prev, next]);
7520
8587
  if (!count) return null;
7521
8588
  return /* @__PURE__ */ jsxs("div", { className, children: [
7522
- /* @__PURE__ */ jsxs(Root27, { "aria-roledescription": "carousel", children: [
8589
+ /* @__PURE__ */ jsxs(Root41, { "aria-roledescription": "carousel", children: [
7523
8590
  /* @__PURE__ */ jsx(Track4, { $index: index, "aria-live": "polite", children: slides.map((slide, i) => /* @__PURE__ */ jsx(
7524
8591
  Slide,
7525
8592
  {
@@ -7867,7 +8934,7 @@ var Nav = styled("nav")(({ theme }) => ({
7867
8934
  fontSize: "0.875rem",
7868
8935
  color: theme.palette.text.secondary
7869
8936
  }));
7870
- var List2 = styled("ol")({
8937
+ var List3 = styled("ol")({
7871
8938
  display: "flex",
7872
8939
  alignItems: "center",
7873
8940
  flexWrap: "wrap",
@@ -7891,7 +8958,7 @@ var Separator2 = styled("span")(({ theme }) => ({
7891
8958
  color: theme.palette.text.disabled
7892
8959
  }));
7893
8960
  var Breadcrumbs = forwardRef(
7894
- ({ items, separator = "/", ...props }, ref) => /* @__PURE__ */ jsx(Nav, { ref, "aria-label": "\u015Acie\u017Cka nawigacji", ...props, children: /* @__PURE__ */ jsx(List2, { children: items.map((item, index) => {
8961
+ ({ items, separator = "/", ...props }, ref) => /* @__PURE__ */ jsx(Nav, { ref, "aria-label": "\u015Acie\u017Cka nawigacji", ...props, children: /* @__PURE__ */ jsx(List3, { children: items.map((item, index) => {
7895
8962
  const isLast = index === items.length - 1;
7896
8963
  return /* @__PURE__ */ jsxs("li", { children: [
7897
8964
  item.href && !isLast ? /* @__PURE__ */ jsx(Link2, { href: item.href, children: item.label }) : /* @__PURE__ */ jsx(Current2, { "aria-current": isLast ? "page" : void 0, children: item.label }),
@@ -7903,7 +8970,7 @@ var Breadcrumbs = forwardRef(
7903
8970
  }) }) })
7904
8971
  );
7905
8972
  Breadcrumbs.displayName = "Breadcrumbs";
7906
- var sizeMap5 = {
8973
+ var sizeMap6 = {
7907
8974
  sm: { minWidth: "1.75rem", height: "1.75rem", fontSize: "0.75rem" },
7908
8975
  md: { minWidth: "2rem", height: "2rem", fontSize: "0.875rem" },
7909
8976
  lg: { minWidth: "2.5rem", height: "2.5rem", fontSize: "1rem" }
@@ -7932,7 +8999,7 @@ var StyledButton2 = styled("button")(({ theme, $isActive, $size }) => ({
7932
8999
  lineHeight: 1,
7933
9000
  padding: "0 0.25rem",
7934
9001
  transition: "background-color 150ms ease",
7935
- ...sizeMap5[$size],
9002
+ ...sizeMap6[$size],
7936
9003
  ...$isActive ? activeStyles(theme) : idleStyles(theme),
7937
9004
  "&:focus-visible": {
7938
9005
  outline: `3px solid ${theme.palette.primary.main}`,
@@ -7961,7 +9028,7 @@ var PaginationButton = forwardRef(
7961
9028
  )
7962
9029
  );
7963
9030
  PaginationButton.displayName = "PaginationButton";
7964
- var sizeMap6 = {
9031
+ var sizeMap7 = {
7965
9032
  sm: { minWidth: "1.75rem", height: "1.75rem", fontSize: "0.75rem" },
7966
9033
  md: { minWidth: "2rem", height: "2rem", fontSize: "0.875rem" },
7967
9034
  lg: { minWidth: "2.5rem", height: "2.5rem", fontSize: "1rem" }
@@ -7972,7 +9039,7 @@ var StyledEllipsis = styled("span")(({ theme, $size }) => ({
7972
9039
  justifyContent: "center",
7973
9040
  color: theme.palette.text.secondary,
7974
9041
  userSelect: "none",
7975
- ...sizeMap6[$size]
9042
+ ...sizeMap7[$size]
7976
9043
  }));
7977
9044
  var PaginationEllipsis = ({ size = "md" }) => /* @__PURE__ */ jsx(StyledEllipsis, { $size: size, "aria-hidden": "true", children: "\u2026" });
7978
9045
  PaginationEllipsis.displayName = "PaginationEllipsis";
@@ -8082,7 +9149,7 @@ var PaginationBar = ({
8082
9149
  ] });
8083
9150
  };
8084
9151
  PaginationBar.displayName = "PaginationBar";
8085
- var Root28 = styled("div", {
9152
+ var Root42 = styled("div", {
8086
9153
  shouldForwardProp: (p) => p !== "$variant"
8087
9154
  })(({ theme, $variant }) => ({
8088
9155
  width: "100%",
@@ -8097,7 +9164,7 @@ var Root28 = styled("div", {
8097
9164
  gap: "0.5rem"
8098
9165
  }
8099
9166
  }));
8100
- var Item = styled("div", {
9167
+ var Item2 = styled("div", {
8101
9168
  shouldForwardProp: (p) => !["$variant", "$disabled"].includes(p)
8102
9169
  })(({ theme, $variant, $disabled }) => ({
8103
9170
  opacity: $disabled ? 0.5 : 1,
@@ -8192,11 +9259,11 @@ var Accordion = forwardRef(
8192
9259
  if (controlledKeys === void 0) setInternalKeys(next);
8193
9260
  onChange?.(next);
8194
9261
  };
8195
- return /* @__PURE__ */ jsx(Root28, { ref, $variant: variant, ...props, children: items.map((item) => {
9262
+ return /* @__PURE__ */ jsx(Root42, { ref, $variant: variant, ...props, children: items.map((item) => {
8196
9263
  const isOpen = openKeys.includes(item.key);
8197
9264
  const panelId = `accordion-panel-${item.key}`;
8198
9265
  const triggerId = `accordion-trigger-${item.key}`;
8199
- return /* @__PURE__ */ jsxs(Item, { $variant: variant, $disabled: Boolean(item.disabled), children: [
9266
+ return /* @__PURE__ */ jsxs(Item2, { $variant: variant, $disabled: Boolean(item.disabled), children: [
8200
9267
  /* @__PURE__ */ jsxs(
8201
9268
  Trigger3,
8202
9269
  {
@@ -8221,6 +9288,74 @@ var Accordion = forwardRef(
8221
9288
  );
8222
9289
  Accordion.displayName = "Accordion";
8223
9290
  var accordionVariants = ["default", "bordered", "separated"];
9291
+ var SEVERITY_COLORS = {
9292
+ info: { bg: "rgba(25,118,210,0.08)", color: "#1565c0", border: "rgba(25,118,210,0.3)" },
9293
+ success: { bg: "rgba(34,197,94,0.1)", color: "#15803d", border: "rgba(34,197,94,0.35)" },
9294
+ warning: { bg: "rgba(245,158,11,0.1)", color: "#b45309", border: "rgba(245,158,11,0.35)" },
9295
+ error: { bg: "rgba(211,47,47,0.08)", color: "#c62828", border: "rgba(211,47,47,0.3)" }
9296
+ };
9297
+ var ICONS = {
9298
+ info: /* @__PURE__ */ jsx(InfoOutlinedIcon, { "aria-hidden": true, style: { fontSize: 20 } }),
9299
+ success: /* @__PURE__ */ jsx(CheckCircleOutlinedIcon, { "aria-hidden": true, style: { fontSize: 20 } }),
9300
+ warning: /* @__PURE__ */ jsx(WarningAmberOutlinedIcon, { "aria-hidden": true, style: { fontSize: 20 } }),
9301
+ error: /* @__PURE__ */ jsx(ErrorOutlineOutlinedIcon, { "aria-hidden": true, style: { fontSize: 20 } })
9302
+ };
9303
+ var Root43 = styled("div", {
9304
+ shouldForwardProp: (prop) => prop !== "$severity"
9305
+ })(({ theme, $severity }) => {
9306
+ const c = SEVERITY_COLORS[$severity];
9307
+ return {
9308
+ display: "flex",
9309
+ gap: "0.75rem",
9310
+ padding: "0.875rem 1rem",
9311
+ borderRadius: theme.shape.borderRadius,
9312
+ border: `1px solid ${c.border}`,
9313
+ backgroundColor: c.bg,
9314
+ color: c.color,
9315
+ fontFamily: theme.typography.fontFamily,
9316
+ fontSize: "0.9375rem"
9317
+ };
9318
+ });
9319
+ var IconSlot2 = styled("span")({
9320
+ flexShrink: 0,
9321
+ display: "flex",
9322
+ paddingTop: "0.0625rem"
9323
+ });
9324
+ var Body = styled("div")({ flex: 1 });
9325
+ var Title5 = styled("div")({
9326
+ fontWeight: 700,
9327
+ marginBottom: "0.25rem"
9328
+ });
9329
+ var CloseButton2 = styled("button")(({ theme }) => ({
9330
+ appearance: "none",
9331
+ border: "none",
9332
+ background: "transparent",
9333
+ cursor: "pointer",
9334
+ display: "flex",
9335
+ alignItems: "center",
9336
+ padding: "0.125rem",
9337
+ color: "inherit",
9338
+ opacity: 0.6,
9339
+ borderRadius: "0.25rem",
9340
+ flexShrink: 0,
9341
+ "&:hover": { opacity: 1 },
9342
+ "&:focus-visible": {
9343
+ outline: `3px solid ${theme.palette.primary.main}`,
9344
+ outlineOffset: "2px"
9345
+ }
9346
+ }));
9347
+ var Alert = forwardRef(
9348
+ ({ severity = "info", title, children, onClose, icon, ...props }, ref) => /* @__PURE__ */ jsxs(Root43, { ref, role: "alert", $severity: severity, ...props, children: [
9349
+ /* @__PURE__ */ jsx(IconSlot2, { children: icon ?? ICONS[severity] }),
9350
+ /* @__PURE__ */ jsxs(Body, { children: [
9351
+ title && /* @__PURE__ */ jsx(Title5, { children: title }),
9352
+ children
9353
+ ] }),
9354
+ onClose && /* @__PURE__ */ jsx(CloseButton2, { type: "button", onClick: onClose, "aria-label": "Zamknij", children: /* @__PURE__ */ jsx(CloseIcon, { "aria-hidden": true, style: { fontSize: 16 } }) })
9355
+ ] })
9356
+ );
9357
+ Alert.displayName = "Alert";
9358
+ var alertSeverities = ["info", "success", "warning", "error"];
8224
9359
  var fadeIn2 = keyframes$1`from{opacity:0;transform:translateY(0.5rem)}to{opacity:1;transform:translateY(0)}`;
8225
9360
  var fadeOut = keyframes$1`from{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(0.5rem)}`;
8226
9361
  var POSITION_MAP = {
@@ -8460,6 +9595,44 @@ var ContextMenu = forwardRef(
8460
9595
  }
8461
9596
  );
8462
9597
  ContextMenu.displayName = "ContextMenu";
9598
+ var Root44 = styled("div")(({ theme }) => ({
9599
+ display: "flex",
9600
+ flexDirection: "column",
9601
+ alignItems: "center",
9602
+ justifyContent: "center",
9603
+ gap: "1rem",
9604
+ padding: "3rem 1.5rem",
9605
+ textAlign: "center",
9606
+ fontFamily: theme.typography.fontFamily
9607
+ }));
9608
+ var IconWrap3 = styled("div")(({ theme }) => ({
9609
+ color: theme.palette.text.disabled,
9610
+ display: "flex",
9611
+ "& svg": { fontSize: "3.5rem" }
9612
+ }));
9613
+ var Title6 = styled("h3")(({ theme }) => ({
9614
+ margin: 0,
9615
+ fontSize: "1.125rem",
9616
+ fontWeight: 700,
9617
+ color: theme.palette.text.primary
9618
+ }));
9619
+ var Description8 = styled("p")(({ theme }) => ({
9620
+ margin: 0,
9621
+ fontSize: "0.9375rem",
9622
+ color: theme.palette.text.secondary,
9623
+ maxWidth: "28rem"
9624
+ }));
9625
+ var EmptyState = forwardRef(
9626
+ ({ icon, title, description, action, ...props }, ref) => /* @__PURE__ */ jsxs(Root44, { ref, ...props, children: [
9627
+ /* @__PURE__ */ jsx(IconWrap3, { "aria-hidden": true, children: icon ?? /* @__PURE__ */ jsx(InboxOutlinedIcon, {}) }),
9628
+ /* @__PURE__ */ jsxs("div", { children: [
9629
+ /* @__PURE__ */ jsx(Title6, { children: title }),
9630
+ description && /* @__PURE__ */ jsx(Description8, { style: { marginTop: "0.5rem" }, children: description })
9631
+ ] }),
9632
+ action && /* @__PURE__ */ jsx("div", { children: action })
9633
+ ] })
9634
+ );
9635
+ EmptyState.displayName = "EmptyState";
8463
9636
  var PADDING = {
8464
9637
  sm: "0.5rem 0.75rem",
8465
9638
  md: "0.75rem 1rem",
@@ -8470,7 +9643,7 @@ var FONT_SIZE2 = {
8470
9643
  md: "0.9375rem",
8471
9644
  lg: "1rem"
8472
9645
  };
8473
- var Root29 = styled("ul", {
9646
+ var Root45 = styled("ul", {
8474
9647
  shouldForwardProp: (p) => p !== "$variant"
8475
9648
  })(({ theme, $variant }) => ({
8476
9649
  listStyle: "none",
@@ -8488,7 +9661,7 @@ var Root29 = styled("ul", {
8488
9661
  gap: "0.375rem"
8489
9662
  }
8490
9663
  }));
8491
- var Item2 = styled("li", {
9664
+ var Item3 = styled("li", {
8492
9665
  shouldForwardProp: (p) => !["$size", "$variant", "$clickable", "$disabled"].includes(p)
8493
9666
  })(({ theme, $size, $variant, $clickable, $disabled }) => ({
8494
9667
  display: "flex",
@@ -8562,11 +9735,11 @@ var SuffixWrap = styled("span")({
8562
9735
  display: "flex",
8563
9736
  alignItems: "center"
8564
9737
  });
8565
- var List3 = forwardRef(
9738
+ var List4 = forwardRef(
8566
9739
  ({ items, size = "md", variant = "default", dividers = true, ...props }, ref) => {
8567
9740
  const effectiveVariant = !dividers && variant === "default" ? "default" : variant;
8568
- return /* @__PURE__ */ jsx(Root29, { ref, $variant: effectiveVariant, role: "list", ...props, children: items.map((item) => /* @__PURE__ */ jsxs(
8569
- Item2,
9741
+ return /* @__PURE__ */ jsx(Root45, { ref, $variant: effectiveVariant, role: "list", ...props, children: items.map((item) => /* @__PURE__ */ jsxs(
9742
+ Item3,
8570
9743
  {
8571
9744
  role: "listitem",
8572
9745
  $size: size,
@@ -8588,7 +9761,7 @@ var List3 = forwardRef(
8588
9761
  )) });
8589
9762
  }
8590
9763
  );
8591
- List3.displayName = "List";
9764
+ List4.displayName = "List";
8592
9765
  var listVariants = ["default", "bordered", "separated"];
8593
9766
  var listSizes = ["sm", "md", "lg"];
8594
9767
  var scrollLeft = keyframes`
@@ -8604,7 +9777,7 @@ var speedDuration = {
8604
9777
  normal: "20s",
8605
9778
  fast: "10s"
8606
9779
  };
8607
- var Root30 = styled("div")({
9780
+ var Root46 = styled("div")({
8608
9781
  overflow: "hidden",
8609
9782
  width: "100%",
8610
9783
  userSelect: "none"
@@ -8635,7 +9808,7 @@ var Marquee = forwardRef(
8635
9808
  /* @__PURE__ */ jsx(ItemWrap, { $gap: gapValue, "aria-hidden": "false", children }),
8636
9809
  /* @__PURE__ */ jsx(ItemWrap, { $gap: gapValue, "aria-hidden": "true", children })
8637
9810
  ] });
8638
- return /* @__PURE__ */ jsx(Root30, { ref, ...props, children: /* @__PURE__ */ jsx(Track5, { $direction: direction, $speed: speed, $pauseOnHover: pauseOnHover, $gap: gapValue, children: content }) });
9811
+ return /* @__PURE__ */ jsx(Root46, { ref, ...props, children: /* @__PURE__ */ jsx(Track5, { $direction: direction, $speed: speed, $pauseOnHover: pauseOnHover, $gap: gapValue, children: content }) });
8639
9812
  }
8640
9813
  );
8641
9814
  Marquee.displayName = "Marquee";
@@ -8681,7 +9854,7 @@ var Dialog = styled("div", {
8681
9854
  margin: 0
8682
9855
  }
8683
9856
  }));
8684
- var Header = styled("div")(({ theme }) => ({
9857
+ var Header2 = styled("div")(({ theme }) => ({
8685
9858
  display: "flex",
8686
9859
  alignItems: "center",
8687
9860
  justifyContent: "space-between",
@@ -8689,7 +9862,7 @@ var Header = styled("div")(({ theme }) => ({
8689
9862
  borderBottom: `1px solid ${theme.palette.divider}`,
8690
9863
  flexShrink: 0
8691
9864
  }));
8692
- var Title5 = styled("h2")(({ theme }) => ({
9865
+ var Title7 = styled("h2")(({ theme }) => ({
8693
9866
  margin: 0,
8694
9867
  fontFamily: theme.typography.fontFamily,
8695
9868
  fontSize: "1.125rem",
@@ -8697,7 +9870,7 @@ var Title5 = styled("h2")(({ theme }) => ({
8697
9870
  color: theme.palette.text.primary,
8698
9871
  lineHeight: 1.4
8699
9872
  }));
8700
- var CloseButton2 = styled("button")(({ theme }) => ({
9873
+ var CloseButton3 = styled("button")(({ theme }) => ({
8701
9874
  appearance: "none",
8702
9875
  border: "none",
8703
9876
  background: "none",
@@ -8720,14 +9893,14 @@ var CloseButton2 = styled("button")(({ theme }) => ({
8720
9893
  outlineOffset: "2px"
8721
9894
  }
8722
9895
  }));
8723
- var Body = styled("div")(({ theme }) => ({
9896
+ var Body2 = styled("div")(({ theme }) => ({
8724
9897
  padding: "1.5rem",
8725
9898
  overflowY: "auto",
8726
9899
  flex: 1,
8727
9900
  fontFamily: theme.typography.fontFamily,
8728
9901
  color: theme.palette.text.primary
8729
9902
  }));
8730
- var Footer3 = styled("div")(({ theme }) => ({
9903
+ var Footer4 = styled("div")(({ theme }) => ({
8731
9904
  padding: "1rem 1.5rem",
8732
9905
  borderTop: `1px solid ${theme.palette.divider}`,
8733
9906
  display: "flex",
@@ -8778,12 +9951,12 @@ function Modal({
8778
9951
  tabIndex: -1,
8779
9952
  onClick: (e) => e.stopPropagation(),
8780
9953
  children: [
8781
- (title || !hideCloseButton) && /* @__PURE__ */ jsxs(Header, { children: [
8782
- title ? /* @__PURE__ */ jsx(Title5, { id: "modal-title", children: title }) : /* @__PURE__ */ jsx("span", {}),
8783
- !hideCloseButton && /* @__PURE__ */ jsx(CloseButton2, { "aria-label": "Zamknij", onClick: onClose, children: /* @__PURE__ */ jsx(CloseIcon, { "aria-hidden": true, style: { fontSize: 16 } }) })
9954
+ (title || !hideCloseButton) && /* @__PURE__ */ jsxs(Header2, { children: [
9955
+ title ? /* @__PURE__ */ jsx(Title7, { id: "modal-title", children: title }) : /* @__PURE__ */ jsx("span", {}),
9956
+ !hideCloseButton && /* @__PURE__ */ jsx(CloseButton3, { "aria-label": "Zamknij", onClick: onClose, children: /* @__PURE__ */ jsx(CloseIcon, { "aria-hidden": true, style: { fontSize: 16 } }) })
8784
9957
  ] }),
8785
- children && /* @__PURE__ */ jsx(Body, { children }),
8786
- footer && /* @__PURE__ */ jsx(Footer3, { children: footer })
9958
+ children && /* @__PURE__ */ jsx(Body2, { children }),
9959
+ footer && /* @__PURE__ */ jsx(Footer4, { children: footer })
8787
9960
  ]
8788
9961
  }
8789
9962
  ) }),
@@ -8791,7 +9964,7 @@ function Modal({
8791
9964
  );
8792
9965
  }
8793
9966
  var modalSizes = ["sm", "md", "lg", "xl", "full"];
8794
- var Root31 = styled("div")({ width: "100%" });
9967
+ var Root47 = styled("div")({ width: "100%" });
8795
9968
  var TabList = styled("div", {
8796
9969
  shouldForwardProp: (prop) => prop !== "$variant"
8797
9970
  })(({ theme, $variant }) => ({
@@ -8871,7 +10044,7 @@ var Tabs = forwardRef(
8871
10044
  onChange?.(key);
8872
10045
  };
8873
10046
  const activeTab = tabs.find((t) => t.key === activeKey);
8874
- return /* @__PURE__ */ jsxs(Root31, { ref, ...props, children: [
10047
+ return /* @__PURE__ */ jsxs(Root47, { ref, ...props, children: [
8875
10048
  /* @__PURE__ */ jsx(TabList, { role: "tablist", $variant: variant, children: tabs.map((tab) => /* @__PURE__ */ jsx(
8876
10049
  TabButton,
8877
10050
  {
@@ -8903,6 +10076,79 @@ var Tabs = forwardRef(
8903
10076
  );
8904
10077
  Tabs.displayName = "Tabs";
8905
10078
  var tabsVariants = ["underline", "pills", "bordered"];
10079
+ var Root48 = styled("div")(({ theme }) => ({
10080
+ display: "grid",
10081
+ gridTemplateColumns: "4.5rem 1fr",
10082
+ gap: "0.875rem",
10083
+ paddingBottom: "1rem",
10084
+ borderBottom: `1px solid ${theme.palette.divider}`
10085
+ }));
10086
+ var ImageWrap5 = styled("div")(({ theme }) => ({
10087
+ position: "relative",
10088
+ width: "4.5rem",
10089
+ height: "4.5rem",
10090
+ borderRadius: theme.shape.borderRadius,
10091
+ overflow: "hidden",
10092
+ flexShrink: 0
10093
+ }));
10094
+ var Info4 = styled("div")({ display: "grid", gap: "0.5rem" });
10095
+ var Row5 = styled("div")({
10096
+ display: "flex",
10097
+ alignItems: "center",
10098
+ justifyContent: "space-between",
10099
+ gap: "0.75rem"
10100
+ });
10101
+ var Name10 = styled("p")(({ theme }) => ({
10102
+ margin: 0,
10103
+ color: theme.palette.text.primary,
10104
+ fontFamily: theme.typography.fontFamily,
10105
+ fontWeight: 700
10106
+ }));
10107
+ var Price3 = styled("p")(({ theme }) => ({
10108
+ margin: 0,
10109
+ color: theme.palette.text.secondary,
10110
+ fontFamily: theme.typography.fontFamily,
10111
+ fontSize: "0.875rem"
10112
+ }));
10113
+ var RemoveButton2 = styled("button")(({ theme }) => ({
10114
+ border: 0,
10115
+ background: "transparent",
10116
+ color: theme.palette.error.main,
10117
+ cursor: "pointer",
10118
+ padding: 0,
10119
+ fontFamily: theme.typography.fontFamily,
10120
+ fontSize: "0.875rem"
10121
+ }));
10122
+ var CartDrawerItem = ({
10123
+ id,
10124
+ name,
10125
+ price,
10126
+ quantity,
10127
+ imageUrl,
10128
+ imageAlt,
10129
+ onQuantityChange,
10130
+ onRemove
10131
+ }) => /* @__PURE__ */ jsxs(Root48, { children: [
10132
+ /* @__PURE__ */ jsx(ImageWrap5, { children: /* @__PURE__ */ jsx(ProductCardImage, { src: imageUrl, alt: imageAlt ?? name }) }),
10133
+ /* @__PURE__ */ jsxs(Info4, { children: [
10134
+ /* @__PURE__ */ jsxs(Row5, { children: [
10135
+ /* @__PURE__ */ jsx(Name10, { children: name }),
10136
+ /* @__PURE__ */ jsx(Price3, { children: price })
10137
+ ] }),
10138
+ /* @__PURE__ */ jsxs(Row5, { children: [
10139
+ /* @__PURE__ */ jsx(
10140
+ QuantitySelector,
10141
+ {
10142
+ value: quantity,
10143
+ min: 1,
10144
+ onChange: (qty) => onQuantityChange?.(id, qty)
10145
+ }
10146
+ ),
10147
+ /* @__PURE__ */ jsx(RemoveButton2, { type: "button", onClick: () => onRemove?.(id), children: "Usu\u0144" })
10148
+ ] })
10149
+ ] })
10150
+ ] });
10151
+ CartDrawerItem.displayName = "CartDrawerItem";
8906
10152
  var Overlay3 = styled("div")(({ $open }) => ({
8907
10153
  position: "fixed",
8908
10154
  inset: 0,
@@ -8922,14 +10168,14 @@ var Panel3 = styled("aside")(({ theme }) => ({
8922
10168
  boxShadow: theme.shadows[5],
8923
10169
  fontFamily: theme.typography.fontFamily
8924
10170
  }));
8925
- var Header2 = styled("div")(({ theme }) => ({
10171
+ var Header3 = styled("div")(({ theme }) => ({
8926
10172
  display: "flex",
8927
10173
  alignItems: "center",
8928
10174
  justifyContent: "space-between",
8929
10175
  padding: "1rem 1.25rem",
8930
10176
  borderBottom: `1px solid ${theme.palette.divider}`
8931
10177
  }));
8932
- var Title6 = styled("h2")(({ theme }) => ({
10178
+ var Title8 = styled("h2")(({ theme }) => ({
8933
10179
  margin: 0,
8934
10180
  fontSize: "1.125rem",
8935
10181
  color: theme.palette.text.primary
@@ -8947,52 +10193,13 @@ var Items = styled("div")({
8947
10193
  padding: "1rem 1.25rem",
8948
10194
  overflow: "auto"
8949
10195
  });
8950
- var Item3 = styled("div")(({ theme }) => ({
8951
- display: "grid",
8952
- gridTemplateColumns: "4.5rem 1fr",
8953
- gap: "0.875rem",
8954
- paddingBottom: "1rem",
8955
- borderBottom: `1px solid ${theme.palette.divider}`
8956
- }));
8957
- var ItemImage = styled("img")(({ theme }) => ({
8958
- width: "4.5rem",
8959
- height: "4.5rem",
8960
- borderRadius: theme.shape.borderRadius,
8961
- objectFit: "cover",
8962
- backgroundColor: theme.palette.action.hover
8963
- }));
8964
- var PlaceholderImage = styled("div")(({ theme }) => ({
8965
- width: "4.5rem",
8966
- height: "4.5rem",
8967
- borderRadius: theme.shape.borderRadius,
8968
- backgroundColor: theme.palette.action.hover
8969
- }));
8970
- var ItemInfo = styled("div")({ display: "grid", gap: "0.5rem" });
8971
- var ItemName = styled("p")(({ theme }) => ({
8972
- margin: 0,
8973
- color: theme.palette.text.primary,
8974
- fontWeight: 700
8975
- }));
8976
- var ItemMeta = styled("p")(({ theme }) => ({
8977
- margin: 0,
8978
- color: theme.palette.text.secondary,
8979
- fontSize: "0.875rem"
8980
- }));
8981
- var Row4 = styled("div")({
8982
- display: "flex",
8983
- alignItems: "center",
8984
- justifyContent: "space-between",
8985
- gap: "0.75rem"
8986
- });
8987
- var RemoveButton2 = styled("button")(({ theme }) => ({
8988
- border: 0,
8989
- background: "transparent",
8990
- color: theme.palette.error.main,
8991
- cursor: "pointer",
8992
- padding: 0,
8993
- fontSize: "0.875rem"
8994
- }));
8995
- var Footer4 = styled("div")(({ theme }) => ({
10196
+ var Row6 = styled("div")({
10197
+ display: "flex",
10198
+ alignItems: "center",
10199
+ justifyContent: "space-between",
10200
+ gap: "0.75rem"
10201
+ });
10202
+ var Footer5 = styled("div")(({ theme }) => ({
8996
10203
  display: "grid",
8997
10204
  gap: "1rem",
8998
10205
  marginTop: "auto",
@@ -9013,32 +10220,21 @@ var CartDrawer = forwardRef(
9013
10220
  onRemove,
9014
10221
  ...props
9015
10222
  }, ref) => /* @__PURE__ */ jsx(Overlay3, { $open: open, children: /* @__PURE__ */ jsxs(Panel3, { ref, "aria-hidden": !open, "aria-label": title, ...props, children: [
9016
- /* @__PURE__ */ jsxs(Header2, { children: [
9017
- /* @__PURE__ */ jsx(Title6, { children: title }),
10223
+ /* @__PURE__ */ jsxs(Header3, { children: [
10224
+ /* @__PURE__ */ jsx(Title8, { children: title }),
9018
10225
  /* @__PURE__ */ jsx(IconButton, { type: "button", "aria-label": closeLabel, onClick: onClose, children: "\xD7" })
9019
10226
  ] }),
9020
- /* @__PURE__ */ jsx(Items, { children: items.map((item) => /* @__PURE__ */ jsxs(Item3, { children: [
9021
- item.imageUrl ? /* @__PURE__ */ jsx(ItemImage, { src: item.imageUrl, alt: item.imageAlt ?? item.name }) : /* @__PURE__ */ jsx(PlaceholderImage, {}),
9022
- /* @__PURE__ */ jsxs(ItemInfo, { children: [
9023
- /* @__PURE__ */ jsxs(Row4, { children: [
9024
- /* @__PURE__ */ jsx(ItemName, { children: item.name }),
9025
- /* @__PURE__ */ jsx(ItemMeta, { children: item.price })
9026
- ] }),
9027
- /* @__PURE__ */ jsxs(Row4, { children: [
9028
- /* @__PURE__ */ jsx(
9029
- QuantitySelector,
9030
- {
9031
- value: item.quantity,
9032
- min: 1,
9033
- onChange: (quantity) => onQuantityChange?.(item.id, quantity)
9034
- }
9035
- ),
9036
- /* @__PURE__ */ jsx(RemoveButton2, { type: "button", onClick: () => onRemove?.(item.id), children: "Usu\u0144" })
9037
- ] })
9038
- ] })
9039
- ] }, item.id)) }),
9040
- /* @__PURE__ */ jsxs(Footer4, { children: [
9041
- /* @__PURE__ */ jsxs(Row4, { children: [
10227
+ /* @__PURE__ */ jsx(Items, { children: items.map((item) => /* @__PURE__ */ jsx(
10228
+ CartDrawerItem,
10229
+ {
10230
+ ...item,
10231
+ onQuantityChange,
10232
+ onRemove
10233
+ },
10234
+ item.id
10235
+ )) }),
10236
+ /* @__PURE__ */ jsxs(Footer5, { children: [
10237
+ /* @__PURE__ */ jsxs(Row6, { children: [
9042
10238
  /* @__PURE__ */ jsx("strong", { children: "Suma" }),
9043
10239
  /* @__PURE__ */ jsx("strong", { children: subtotal })
9044
10240
  ] }),
@@ -9047,7 +10243,7 @@ var CartDrawer = forwardRef(
9047
10243
  ] }) })
9048
10244
  );
9049
10245
  CartDrawer.displayName = "CartDrawer";
9050
- var Root32 = styled("aside")(({ theme }) => ({
10246
+ var Root49 = styled("aside")(({ theme }) => ({
9051
10247
  display: "grid",
9052
10248
  gap: "1.5rem",
9053
10249
  width: "100%",
@@ -9058,13 +10254,13 @@ var Root32 = styled("aside")(({ theme }) => ({
9058
10254
  backgroundColor: theme.palette.background.paper,
9059
10255
  fontFamily: theme.typography.fontFamily
9060
10256
  }));
9061
- var Header3 = styled("div")({
10257
+ var Header4 = styled("div")({
9062
10258
  display: "flex",
9063
10259
  alignItems: "center",
9064
10260
  justifyContent: "space-between",
9065
10261
  gap: "1rem"
9066
10262
  });
9067
- var Title7 = styled("h2")(({ theme }) => ({
10263
+ var Title9 = styled("h2")(({ theme }) => ({
9068
10264
  margin: 0,
9069
10265
  color: theme.palette.text.primary,
9070
10266
  fontSize: "1.125rem"
@@ -9082,7 +10278,7 @@ var Legend = styled("legend")({
9082
10278
  marginBottom: "0.75rem",
9083
10279
  fontWeight: 800
9084
10280
  });
9085
- var OptionLabel = styled("label")(({ theme }) => ({
10281
+ var OptionLabel2 = styled("label")(({ theme }) => ({
9086
10282
  display: "flex",
9087
10283
  alignItems: "center",
9088
10284
  justifyContent: "space-between",
@@ -9109,7 +10305,7 @@ var NumberInput2 = styled("input")(({ theme }) => ({
9109
10305
  fontFamily: theme.typography.fontFamily
9110
10306
  }));
9111
10307
  function renderOptions(options, selected, onToggle) {
9112
- return options.map((option) => /* @__PURE__ */ jsxs(OptionLabel, { children: [
10308
+ return options.map((option) => /* @__PURE__ */ jsxs(OptionLabel2, { children: [
9113
10309
  /* @__PURE__ */ jsxs(OptionText, { children: [
9114
10310
  /* @__PURE__ */ jsx(
9115
10311
  "input",
@@ -9139,9 +10335,9 @@ var FilterSidebar = forwardRef(
9139
10335
  onPriceRangeChange,
9140
10336
  onClear,
9141
10337
  ...props
9142
- }, ref) => /* @__PURE__ */ jsxs(Root32, { ref, "aria-label": "Filtry produkt\xF3w", ...props, children: [
9143
- /* @__PURE__ */ jsxs(Header3, { children: [
9144
- /* @__PURE__ */ jsx(Title7, { children: "Filtry" }),
10338
+ }, ref) => /* @__PURE__ */ jsxs(Root49, { ref, "aria-label": "Filtry produkt\xF3w", ...props, children: [
10339
+ /* @__PURE__ */ jsxs(Header4, { children: [
10340
+ /* @__PURE__ */ jsx(Title9, { children: "Filtry" }),
9145
10341
  onClear && /* @__PURE__ */ jsx(Button, { variant: "ghost", size: "sm", onClick: onClear, children: "Wyczy\u015B\u0107" })
9146
10342
  ] }),
9147
10343
  priceRange && /* @__PURE__ */ jsxs(Group, { children: [
@@ -9182,52 +10378,22 @@ var FilterSidebar = forwardRef(
9182
10378
  ] })
9183
10379
  );
9184
10380
  FilterSidebar.displayName = "FilterSidebar";
9185
- var Root33 = styled(Card)({ display: "grid", gap: "1rem" });
9186
- var Title8 = styled("h2")(({ theme }) => ({
9187
- margin: 0,
9188
- fontFamily: theme.typography.fontFamily,
9189
- fontSize: "1.125rem",
9190
- fontWeight: 800,
9191
- color: theme.palette.text.primary
9192
- }));
9193
- var Rows = styled("dl")({ display: "grid", gap: "0.75rem", margin: 0 });
9194
- var SectionTitle = styled("h3")(({ theme }) => ({
9195
- margin: 0,
9196
- fontFamily: theme.typography.fontFamily,
9197
- fontSize: "0.875rem",
9198
- fontWeight: 800,
9199
- color: theme.palette.text.primary
9200
- }));
9201
- var ItemList = styled("ul")({
9202
- display: "grid",
9203
- gap: "0.875rem",
9204
- padding: 0,
9205
- margin: 0,
9206
- listStyle: "none"
9207
- });
9208
- var Item4 = styled("li")({
10381
+ var Root50 = styled("li")({
9209
10382
  display: "grid",
9210
10383
  gridTemplateColumns: "3.5rem 1fr auto",
9211
10384
  alignItems: "center",
9212
10385
  gap: "0.75rem"
9213
10386
  });
9214
- var ItemImage2 = styled("img")(({ theme }) => ({
9215
- width: "3.5rem",
9216
- height: "3.5rem",
9217
- borderRadius: theme.shape.borderRadius,
9218
- objectFit: "cover",
9219
- backgroundColor: theme.palette.action.hover
9220
- }));
9221
- var ItemImagePlaceholder = styled("div")(({ theme }) => ({
10387
+ var ImageWrap6 = styled("div")(({ theme }) => ({
10388
+ position: "relative",
9222
10389
  width: "3.5rem",
9223
10390
  height: "3.5rem",
9224
10391
  borderRadius: theme.shape.borderRadius,
9225
- backgroundColor: theme.palette.action.hover
10392
+ overflow: "hidden",
10393
+ flexShrink: 0
9226
10394
  }));
9227
- var ItemInfo2 = styled("div")({
9228
- minWidth: 0
9229
- });
9230
- var ItemName2 = styled("p")(({ theme }) => ({
10395
+ var Info5 = styled("div")({ minWidth: 0 });
10396
+ var Name11 = styled("p")(({ theme }) => ({
9231
10397
  margin: 0,
9232
10398
  color: theme.palette.text.primary,
9233
10399
  fontFamily: theme.typography.fontFamily,
@@ -9235,39 +10401,88 @@ var ItemName2 = styled("p")(({ theme }) => ({
9235
10401
  fontWeight: 700,
9236
10402
  lineHeight: 1.4
9237
10403
  }));
9238
- var ItemMeta2 = styled("p")(({ theme }) => ({
10404
+ var Meta2 = styled("p")(({ theme }) => ({
9239
10405
  margin: "0.25rem 0 0",
9240
10406
  color: theme.palette.text.secondary,
9241
10407
  fontFamily: theme.typography.fontFamily,
9242
10408
  fontSize: "0.8125rem",
9243
10409
  lineHeight: 1.4
9244
10410
  }));
9245
- var ItemPrice = styled("span")(({ theme }) => ({
10411
+ var Price4 = styled("span")(({ theme }) => ({
9246
10412
  color: theme.palette.text.primary,
9247
10413
  fontFamily: theme.typography.fontFamily,
9248
10414
  fontSize: "0.875rem",
9249
10415
  fontWeight: 800,
9250
10416
  whiteSpace: "nowrap"
9251
10417
  }));
9252
- var Row5 = styled("div")(({ theme }) => ({
10418
+ var OrderSummaryItem = ({
10419
+ name,
10420
+ price,
10421
+ imageUrl,
10422
+ imageAlt,
10423
+ quantity,
10424
+ meta
10425
+ }) => /* @__PURE__ */ jsxs(Root50, { children: [
10426
+ /* @__PURE__ */ jsx(ImageWrap6, { children: /* @__PURE__ */ jsx(ProductCardImage, { src: imageUrl, alt: imageAlt ?? String(name) }) }),
10427
+ /* @__PURE__ */ jsxs(Info5, { children: [
10428
+ /* @__PURE__ */ jsx(Name11, { children: name }),
10429
+ (quantity !== void 0 || meta) && /* @__PURE__ */ jsxs(Meta2, { children: [
10430
+ quantity !== void 0 && /* @__PURE__ */ jsxs(Fragment, { children: [
10431
+ "Ilo\u015B\u0107: ",
10432
+ quantity
10433
+ ] }),
10434
+ quantity !== void 0 && meta && " \xB7 ",
10435
+ meta
10436
+ ] })
10437
+ ] }),
10438
+ /* @__PURE__ */ jsx(Price4, { children: price })
10439
+ ] });
10440
+ OrderSummaryItem.displayName = "OrderSummaryItem";
10441
+ var Root51 = styled("div", {
10442
+ shouldForwardProp: (prop) => prop !== "$total"
10443
+ })(({ theme, $total }) => ({
9253
10444
  display: "flex",
9254
10445
  justifyContent: "space-between",
9255
10446
  gap: "1rem",
9256
- color: theme.palette.text.secondary,
10447
+ color: $total ? theme.palette.text.primary : theme.palette.text.secondary,
9257
10448
  fontFamily: theme.typography.fontFamily,
9258
- fontSize: "0.875rem",
10449
+ fontSize: $total ? "1rem" : "0.875rem",
10450
+ fontWeight: $total ? 800 : 400,
9259
10451
  "& dt, & dd": { margin: 0 }
9260
10452
  }));
10453
+ var OrderSummaryRow = ({ label, value, total = false }) => /* @__PURE__ */ jsxs(Root51, { as: "div", $total: total, children: [
10454
+ /* @__PURE__ */ jsx("dt", { children: label }),
10455
+ /* @__PURE__ */ jsx("dd", { children: value })
10456
+ ] });
10457
+ OrderSummaryRow.displayName = "OrderSummaryRow";
10458
+ var Root52 = styled(Card)({ display: "grid", gap: "1rem" });
10459
+ var Title10 = styled("h2")(({ theme }) => ({
10460
+ margin: 0,
10461
+ fontFamily: theme.typography.fontFamily,
10462
+ fontSize: "1.125rem",
10463
+ fontWeight: 800,
10464
+ color: theme.palette.text.primary
10465
+ }));
10466
+ var Rows = styled("dl")({ display: "grid", gap: "0.75rem", margin: 0 });
10467
+ var SectionTitle = styled("h3")(({ theme }) => ({
10468
+ margin: 0,
10469
+ fontFamily: theme.typography.fontFamily,
10470
+ fontSize: "0.875rem",
10471
+ fontWeight: 800,
10472
+ color: theme.palette.text.primary
10473
+ }));
10474
+ var ItemList = styled("ul")({
10475
+ display: "grid",
10476
+ gap: "0.875rem",
10477
+ padding: 0,
10478
+ margin: 0,
10479
+ listStyle: "none"
10480
+ });
9261
10481
  var Divider3 = styled("hr")(({ theme }) => ({
9262
10482
  width: "100%",
9263
10483
  border: 0,
9264
10484
  borderTop: `1px solid ${theme.palette.divider}`
9265
10485
  }));
9266
- var TotalRow = styled(Row5)(({ theme }) => ({
9267
- color: theme.palette.text.primary,
9268
- fontSize: "1rem",
9269
- fontWeight: 800
9270
- }));
9271
10486
  var OrderSummary = forwardRef(
9272
10487
  ({
9273
10488
  title = "Podsumowanie zam\xF3wienia",
@@ -9282,59 +10497,245 @@ var OrderSummary = forwardRef(
9282
10497
  ctaLabel = "Przejd\u017A do kasy",
9283
10498
  onCheckout,
9284
10499
  ...props
9285
- }, ref) => /* @__PURE__ */ jsxs(Root33, { ref, variant: "default", padding: "lg", rounded: "lg", ...props, children: [
9286
- /* @__PURE__ */ jsx(Title8, { children: title }),
10500
+ }, ref) => /* @__PURE__ */ jsxs(Root52, { ref, variant: "default", padding: "lg", rounded: "lg", ...props, children: [
10501
+ /* @__PURE__ */ jsx(Title10, { children: title }),
9287
10502
  items.length > 0 && /* @__PURE__ */ jsxs(Fragment, { children: [
9288
10503
  /* @__PURE__ */ jsx(SectionTitle, { children: itemsTitle }),
9289
- /* @__PURE__ */ jsx(ItemList, { children: items.map((item) => /* @__PURE__ */ jsxs(Item4, { children: [
9290
- item.imageUrl ? /* @__PURE__ */ jsx(ItemImage2, { src: item.imageUrl, alt: item.imageAlt ?? String(item.name) }) : /* @__PURE__ */ jsx(ItemImagePlaceholder, { "aria-hidden": "true" }),
9291
- /* @__PURE__ */ jsxs(ItemInfo2, { children: [
9292
- /* @__PURE__ */ jsx(ItemName2, { children: item.name }),
9293
- (item.quantity !== void 0 || item.meta) && /* @__PURE__ */ jsxs(ItemMeta2, { children: [
9294
- item.quantity !== void 0 && /* @__PURE__ */ jsxs(Fragment, { children: [
9295
- "Ilo\u015B\u0107: ",
9296
- item.quantity
9297
- ] }),
9298
- item.quantity !== void 0 && item.meta && " \xB7 ",
9299
- item.meta
9300
- ] })
9301
- ] }),
9302
- /* @__PURE__ */ jsx(ItemPrice, { children: item.price })
9303
- ] }, item.id)) }),
10504
+ /* @__PURE__ */ jsx(ItemList, { children: items.map((item) => /* @__PURE__ */ jsx(OrderSummaryItem, { ...item }, item.id)) }),
9304
10505
  /* @__PURE__ */ jsx(Divider3, {})
9305
10506
  ] }),
9306
10507
  /* @__PURE__ */ jsxs(Rows, { children: [
9307
- /* @__PURE__ */ jsxs(Row5, { children: [
9308
- /* @__PURE__ */ jsx("dt", { children: "Warto\u015B\u0107 produkt\xF3w" }),
9309
- /* @__PURE__ */ jsx("dd", { children: subtotal })
9310
- ] }),
9311
- shipping !== void 0 && /* @__PURE__ */ jsxs(Row5, { children: [
9312
- /* @__PURE__ */ jsx("dt", { children: "Dostawa" }),
9313
- /* @__PURE__ */ jsx("dd", { children: shipping })
9314
- ] }),
9315
- tax !== void 0 && /* @__PURE__ */ jsxs(Row5, { children: [
9316
- /* @__PURE__ */ jsx("dt", { children: "Podatek" }),
9317
- /* @__PURE__ */ jsx("dd", { children: tax })
9318
- ] }),
9319
- discount !== void 0 && /* @__PURE__ */ jsxs(Row5, { children: [
9320
- /* @__PURE__ */ jsx("dt", { children: "Rabat" }),
9321
- /* @__PURE__ */ jsx("dd", { children: discount })
9322
- ] }),
9323
- lines.map((line, index) => /* @__PURE__ */ jsxs(Row5, { children: [
9324
- /* @__PURE__ */ jsx("dt", { children: line.label }),
9325
- /* @__PURE__ */ jsx("dd", { children: line.value })
9326
- ] }, index))
10508
+ /* @__PURE__ */ jsx(OrderSummaryRow, { label: "Warto\u015B\u0107 produkt\xF3w", value: subtotal }),
10509
+ shipping !== void 0 && /* @__PURE__ */ jsx(OrderSummaryRow, { label: "Dostawa", value: shipping }),
10510
+ tax !== void 0 && /* @__PURE__ */ jsx(OrderSummaryRow, { label: "Podatek", value: tax }),
10511
+ discount !== void 0 && /* @__PURE__ */ jsx(OrderSummaryRow, { label: "Rabat", value: discount }),
10512
+ lines.map((line, index) => /* @__PURE__ */ jsx(OrderSummaryRow, { label: line.label, value: line.value }, index))
9327
10513
  ] }),
9328
10514
  /* @__PURE__ */ jsx(Divider3, {}),
9329
- /* @__PURE__ */ jsx(Rows, { children: /* @__PURE__ */ jsxs(TotalRow, { children: [
9330
- /* @__PURE__ */ jsx("dt", { children: "Razem" }),
9331
- /* @__PURE__ */ jsx("dd", { children: total })
9332
- ] }) }),
10515
+ /* @__PURE__ */ jsx(Rows, { children: /* @__PURE__ */ jsx(OrderSummaryRow, { label: "Razem", value: total, total: true }) }),
9333
10516
  /* @__PURE__ */ jsx(Button, { fullWidth: true, onClick: onCheckout, children: ctaLabel })
9334
10517
  ] })
9335
10518
  );
9336
10519
  OrderSummary.displayName = "OrderSummary";
9337
- var List4 = styled("div")(({ $hasHeading }) => ({
10520
+ var Root53 = styled("div")(({ theme }) => ({
10521
+ fontFamily: theme.typography.fontFamily
10522
+ }));
10523
+ var Grid2 = styled("div", {
10524
+ shouldForwardProp: (prop) => prop !== "$columns"
10525
+ })(({ theme, $columns }) => ({
10526
+ display: "grid",
10527
+ gridTemplateColumns: `repeat(1, 1fr)`,
10528
+ gap: "1.25rem",
10529
+ [theme.breakpoints.up("sm")]: {
10530
+ gridTemplateColumns: `repeat(${Math.min($columns, 2)}, 1fr)`
10531
+ },
10532
+ [theme.breakpoints.up("md")]: {
10533
+ gridTemplateColumns: `repeat(${Math.min($columns, 3)}, 1fr)`
10534
+ },
10535
+ [theme.breakpoints.up("lg")]: {
10536
+ gridTemplateColumns: `repeat(${Math.min($columns, 4)}, 1fr)`
10537
+ }
10538
+ }));
10539
+ var ScrollTrack = styled("div")({
10540
+ display: "flex",
10541
+ gap: "1.25rem",
10542
+ overflowX: "auto",
10543
+ paddingBottom: "0.5rem",
10544
+ scrollSnapType: "x mandatory",
10545
+ "&::-webkit-scrollbar": { height: "4px" },
10546
+ "&::-webkit-scrollbar-track": { background: "transparent" },
10547
+ "&::-webkit-scrollbar-thumb": { borderRadius: "9999px", background: "rgba(0,0,0,0.2)" },
10548
+ "& > *": {
10549
+ flexShrink: 0,
10550
+ scrollSnapAlign: "start",
10551
+ width: "clamp(220px, 28vw, 280px)"
10552
+ }
10553
+ });
10554
+ var RelatedProducts = forwardRef(
10555
+ ({ products, title = "Podobne produkty", layout = "grid", columns = 4, ...props }, ref) => /* @__PURE__ */ jsxs(Root53, { ref, ...props, children: [
10556
+ /* @__PURE__ */ jsx(SectionHeading, { title, align: "left", style: { marginBottom: "1.5rem" } }),
10557
+ layout === "scroll" ? /* @__PURE__ */ jsx(ScrollTrack, { children: products.map((product, i) => /* @__PURE__ */ jsx(ProductCard, { ...product }, product.name + i)) }) : /* @__PURE__ */ jsx(Grid2, { $columns: columns, children: products.map((product, i) => /* @__PURE__ */ jsx(ProductCard, { ...product }, product.name + i)) })
10558
+ ] })
10559
+ );
10560
+ RelatedProducts.displayName = "RelatedProducts";
10561
+ var relatedProductsLayouts = ["grid", "scroll"];
10562
+ var Card2 = styled("div")(({ theme }) => ({
10563
+ padding: "1.25rem",
10564
+ border: `1px solid ${theme.palette.divider}`,
10565
+ borderRadius: theme.shape.borderRadius,
10566
+ display: "flex",
10567
+ flexDirection: "column",
10568
+ gap: "0.75rem",
10569
+ fontFamily: theme.typography.fontFamily
10570
+ }));
10571
+ var Header5 = styled("div")({
10572
+ display: "flex",
10573
+ alignItems: "flex-start",
10574
+ gap: "0.875rem"
10575
+ });
10576
+ var AuthorInfo = styled("div")({ flex: 1 });
10577
+ var AuthorName = styled("div")(({ theme }) => ({
10578
+ display: "flex",
10579
+ alignItems: "center",
10580
+ gap: "0.375rem",
10581
+ fontSize: "0.9375rem",
10582
+ fontWeight: 700,
10583
+ color: theme.palette.text.primary
10584
+ }));
10585
+ var ReviewDate = styled("div")(({ theme }) => ({
10586
+ fontSize: "0.8125rem",
10587
+ color: theme.palette.text.secondary,
10588
+ marginTop: "0.125rem"
10589
+ }));
10590
+ var Title11 = styled("div")(({ theme }) => ({
10591
+ fontSize: "0.9375rem",
10592
+ fontWeight: 700,
10593
+ color: theme.palette.text.primary
10594
+ }));
10595
+ var Content3 = styled("p")(({ theme }) => ({
10596
+ margin: 0,
10597
+ fontSize: "0.9375rem",
10598
+ color: theme.palette.text.secondary,
10599
+ lineHeight: 1.6
10600
+ }));
10601
+ var HelpfulRow = styled("div")(({ theme }) => ({
10602
+ display: "flex",
10603
+ alignItems: "center",
10604
+ gap: "0.375rem",
10605
+ fontSize: "0.8125rem",
10606
+ color: theme.palette.text.secondary
10607
+ }));
10608
+ var ReviewItem = ({ review }) => /* @__PURE__ */ jsxs(Card2, { children: [
10609
+ /* @__PURE__ */ jsxs(Header5, { children: [
10610
+ /* @__PURE__ */ jsx(Avatar, { initials: review.author.slice(0, 2).toUpperCase(), size: "sm" }),
10611
+ /* @__PURE__ */ jsxs(AuthorInfo, { children: [
10612
+ /* @__PURE__ */ jsxs(AuthorName, { children: [
10613
+ review.author,
10614
+ review.verified && /* @__PURE__ */ jsx(VerifiedIcon, { "aria-label": "Zweryfikowany zakup", style: { fontSize: 14, color: "#16a34a" } })
10615
+ ] }),
10616
+ /* @__PURE__ */ jsx(ReviewDate, { children: review.date })
10617
+ ] }),
10618
+ /* @__PURE__ */ jsx(Rating, { value: review.rating, size: "sm", readonly: true })
10619
+ ] }),
10620
+ review.title && /* @__PURE__ */ jsx(Title11, { children: review.title }),
10621
+ /* @__PURE__ */ jsx(Content3, { children: review.content }),
10622
+ review.helpfulCount !== void 0 && /* @__PURE__ */ jsxs(HelpfulRow, { children: [
10623
+ /* @__PURE__ */ jsx(ThumbUpOutlinedIcon, { "aria-hidden": true, style: { fontSize: 14 } }),
10624
+ review.helpfulCount,
10625
+ " os\xF3b uzna\u0142o t\u0119 recenzj\u0119 za pomocn\u0105"
10626
+ ] })
10627
+ ] });
10628
+ ReviewItem.displayName = "ReviewItem";
10629
+ var Root54 = styled("div")(({ theme }) => ({
10630
+ display: "flex",
10631
+ alignItems: "center",
10632
+ gap: "2rem",
10633
+ flexWrap: "wrap",
10634
+ padding: "1.5rem",
10635
+ backgroundColor: theme.palette.action.hover,
10636
+ borderRadius: theme.shape.borderRadius,
10637
+ fontFamily: theme.typography.fontFamily
10638
+ }));
10639
+ var AverageBlock = styled("div")({
10640
+ display: "flex",
10641
+ flexDirection: "column",
10642
+ alignItems: "center",
10643
+ gap: "0.25rem"
10644
+ });
10645
+ var Score = styled("span")(({ theme }) => ({
10646
+ fontSize: "3rem",
10647
+ fontWeight: 800,
10648
+ lineHeight: 1,
10649
+ color: theme.palette.text.primary
10650
+ }));
10651
+ var ReviewCount = styled("span")(({ theme }) => ({
10652
+ fontSize: "0.8125rem",
10653
+ marginTop: "0.25rem",
10654
+ color: theme.palette.text.secondary
10655
+ }));
10656
+ var Distribution = styled("div")({
10657
+ flex: 1,
10658
+ display: "flex",
10659
+ flexDirection: "column",
10660
+ gap: "0.375rem"
10661
+ });
10662
+ var DistRow = styled("div")({ display: "flex", alignItems: "center", gap: "0.75rem" });
10663
+ var DistLabel = styled("span")(({ theme }) => ({
10664
+ fontSize: "0.8125rem",
10665
+ color: theme.palette.text.secondary,
10666
+ width: "1.5rem",
10667
+ textAlign: "right"
10668
+ }));
10669
+ var DistBar = styled("div")(({ theme }) => ({
10670
+ flex: 1,
10671
+ height: "0.5rem",
10672
+ borderRadius: "9999px",
10673
+ backgroundColor: theme.palette.divider,
10674
+ overflow: "hidden"
10675
+ }));
10676
+ var DistFill = styled("div", {
10677
+ shouldForwardProp: (prop) => prop !== "$pct"
10678
+ })(({ $pct }) => ({
10679
+ height: "100%",
10680
+ width: `${$pct}%`,
10681
+ backgroundColor: "#f59e0b",
10682
+ borderRadius: "9999px",
10683
+ transition: "width 400ms ease"
10684
+ }));
10685
+ var ReviewSummary = ({
10686
+ averageRating,
10687
+ totalReviews,
10688
+ ratingDistribution
10689
+ }) => {
10690
+ const totalDist = ratingDistribution ? Object.values(ratingDistribution).reduce((a, b) => a + b, 0) : 0;
10691
+ return /* @__PURE__ */ jsxs(Root54, { children: [
10692
+ /* @__PURE__ */ jsxs(AverageBlock, { children: [
10693
+ /* @__PURE__ */ jsx(Score, { children: averageRating.toFixed(1) }),
10694
+ /* @__PURE__ */ jsx(Rating, { value: averageRating, size: "sm", readonly: true }),
10695
+ totalReviews !== void 0 && /* @__PURE__ */ jsxs(ReviewCount, { children: [
10696
+ totalReviews,
10697
+ " opinii"
10698
+ ] })
10699
+ ] }),
10700
+ ratingDistribution && /* @__PURE__ */ jsx(Distribution, { children: [5, 4, 3, 2, 1].map((star) => {
10701
+ const count = ratingDistribution[star] ?? 0;
10702
+ const pct2 = totalDist > 0 ? count / totalDist * 100 : 0;
10703
+ return /* @__PURE__ */ jsxs(DistRow, { children: [
10704
+ /* @__PURE__ */ jsxs(DistLabel, { children: [
10705
+ star,
10706
+ "\u2605"
10707
+ ] }),
10708
+ /* @__PURE__ */ jsx(DistBar, { children: /* @__PURE__ */ jsx(DistFill, { $pct: pct2 }) }),
10709
+ /* @__PURE__ */ jsx(DistLabel, { style: { textAlign: "left" }, children: count })
10710
+ ] }, star);
10711
+ }) })
10712
+ ] });
10713
+ };
10714
+ ReviewSummary.displayName = "ReviewSummary";
10715
+ var Root55 = styled("div")(({ theme }) => ({
10716
+ fontFamily: theme.typography.fontFamily
10717
+ }));
10718
+ var ReviewList = styled("div")({
10719
+ display: "flex",
10720
+ flexDirection: "column",
10721
+ gap: "1.5rem"
10722
+ });
10723
+ var ReviewSection = forwardRef(
10724
+ ({ reviews, averageRating, totalReviews, title = "Opinie klient\xF3w", ratingDistribution, ...props }, ref) => /* @__PURE__ */ jsxs(Root55, { ref, ...props, children: [
10725
+ /* @__PURE__ */ jsx(SectionHeading, { title, align: "left", style: { marginBottom: "1.5rem" } }),
10726
+ averageRating !== void 0 && /* @__PURE__ */ jsx("div", { style: { marginBottom: "2rem" }, children: /* @__PURE__ */ jsx(
10727
+ ReviewSummary,
10728
+ {
10729
+ averageRating,
10730
+ totalReviews,
10731
+ ratingDistribution
10732
+ }
10733
+ ) }),
10734
+ /* @__PURE__ */ jsx(ReviewList, { children: reviews.map((review) => /* @__PURE__ */ jsx(ReviewItem, { review }, review.id)) })
10735
+ ] })
10736
+ );
10737
+ ReviewSection.displayName = "ReviewSection";
10738
+ var List5 = styled("div")(({ $hasHeading }) => ({
9338
10739
  marginTop: $hasHeading ? "2.5rem" : 0
9339
10740
  }));
9340
10741
  var FaqSection = forwardRef(
@@ -9350,7 +10751,7 @@ var FaqSection = forwardRef(
9350
10751
  const hasHeading = Boolean(title || description);
9351
10752
  return /* @__PURE__ */ jsx(Section, { ref, ...rest, children: /* @__PURE__ */ jsxs(Container, { maxWidth, children: [
9352
10753
  hasHeading && /* @__PURE__ */ jsx(SectionHeading, { title: title ?? "", description, align: headingAlign }),
9353
- /* @__PURE__ */ jsx(List4, { $hasHeading: hasHeading, children: items.map((item, index) => /* @__PURE__ */ jsx(
10754
+ /* @__PURE__ */ jsx(List5, { $hasHeading: hasHeading, children: items.map((item, index) => /* @__PURE__ */ jsx(
9354
10755
  FaqItem,
9355
10756
  {
9356
10757
  item,
@@ -9362,7 +10763,7 @@ var FaqSection = forwardRef(
9362
10763
  }
9363
10764
  );
9364
10765
  FaqSection.displayName = "FaqSection";
9365
- var Grid2 = styled("div", {
10766
+ var Grid3 = styled("div", {
9366
10767
  shouldForwardProp: (prop) => !["$columns", "$hasHeading", "$iconLeft"].includes(prop)
9367
10768
  })(({ theme, $columns, $hasHeading, $iconLeft }) => ({
9368
10769
  display: "grid",
@@ -9391,8 +10792,8 @@ var FeatureGrid = forwardRef(
9391
10792
  const hasHeading = Boolean(title || description);
9392
10793
  return /* @__PURE__ */ jsx(Section, { ref, ...rest, children: /* @__PURE__ */ jsxs(Container, { maxWidth, children: [
9393
10794
  hasHeading && /* @__PURE__ */ jsx(SectionHeading, { title: title ?? "", description, align: headingAlign }),
9394
- /* @__PURE__ */ jsx(Grid2, { $columns: columns, $hasHeading: hasHeading, $iconLeft: itemLayout === "icon-left", children: features.map((feature, index) => /* @__PURE__ */ jsx(
9395
- FeatureItem2,
10795
+ /* @__PURE__ */ jsx(Grid3, { $columns: columns, $hasHeading: hasHeading, $iconLeft: itemLayout === "icon-left", children: features.map((feature, index) => /* @__PURE__ */ jsx(
10796
+ FeatureItem,
9396
10797
  {
9397
10798
  feature,
9398
10799
  cardVariant,
@@ -9405,7 +10806,7 @@ var FeatureGrid = forwardRef(
9405
10806
  );
9406
10807
  FeatureGrid.displayName = "FeatureGrid";
9407
10808
  var featureGridColumns = [2, 3, 4];
9408
- var Grid3 = styled("div", {
10809
+ var Grid4 = styled("div", {
9409
10810
  shouldForwardProp: (prop) => !["$columns", "$hasHeading"].includes(prop)
9410
10811
  })(({ theme, $columns, $hasHeading }) => ({
9411
10812
  display: "grid",
@@ -9437,7 +10838,7 @@ var LogoCloud = forwardRef(
9437
10838
  return /* @__PURE__ */ jsx(Section, { ref, ...rest, children: /* @__PURE__ */ jsxs(Container, { maxWidth, children: [
9438
10839
  hasHeading && title && /* @__PURE__ */ jsx(SectionHeading, { title, description, align: headingAlign }),
9439
10840
  hasHeading && !title && description && /* @__PURE__ */ jsx(SectionHeading, { title: description, align: headingAlign, as: "h2" }),
9440
- /* @__PURE__ */ jsx(Grid3, { $columns: columns, $hasHeading: hasHeading, children: logos.map((logo) => {
10841
+ /* @__PURE__ */ jsx(Grid4, { $columns: columns, $hasHeading: hasHeading, children: logos.map((logo) => {
9441
10842
  const key = `${logo.name}-${logo.href ?? logo.logoUrl ?? "text"}`;
9442
10843
  return /* @__PURE__ */ jsx(
9443
10844
  LogoTile,
@@ -9587,12 +10988,12 @@ var Section2 = styled("section")(({ theme }) => ({
9587
10988
  padding: "5rem 1rem",
9588
10989
  backgroundColor: theme.palette.background.default
9589
10990
  }));
9590
- var Inner = styled("div")({
10991
+ var Inner2 = styled("div")({
9591
10992
  maxWidth: "80rem",
9592
10993
  marginLeft: "auto",
9593
10994
  marginRight: "auto"
9594
10995
  });
9595
- var Grid4 = styled("div")(({ theme }) => ({
10996
+ var Grid5 = styled("div")(({ theme }) => ({
9596
10997
  marginTop: "3rem",
9597
10998
  display: "grid",
9598
10999
  gridTemplateColumns: "1fr",
@@ -9605,16 +11006,16 @@ var Grid4 = styled("div")(({ theme }) => ({
9605
11006
  }
9606
11007
  }));
9607
11008
  function PricingSection({ title, description, plans, ...props }) {
9608
- return /* @__PURE__ */ jsx(Section2, { ...props, children: /* @__PURE__ */ jsxs(Inner, { children: [
11009
+ return /* @__PURE__ */ jsx(Section2, { ...props, children: /* @__PURE__ */ jsxs(Inner2, { children: [
9609
11010
  (title || description) && /* @__PURE__ */ jsx(SectionHeading, { title: title ?? "", description, align: "center" }),
9610
- /* @__PURE__ */ jsx(Grid4, { children: plans.map((plan, i) => /* @__PURE__ */ jsx(PricingCard, { ...plan }, i)) })
11011
+ /* @__PURE__ */ jsx(Grid5, { children: plans.map((plan, i) => /* @__PURE__ */ jsx(PricingCard, { ...plan }, i)) })
9611
11012
  ] }) });
9612
11013
  }
9613
11014
  var Section3 = styled("section")(({ theme }) => ({
9614
11015
  padding: "5rem 1rem",
9615
11016
  backgroundColor: theme.palette.background.default
9616
11017
  }));
9617
- var Inner2 = styled("div")({
11018
+ var Inner3 = styled("div")({
9618
11019
  maxWidth: "80rem",
9619
11020
  marginLeft: "auto",
9620
11021
  marginRight: "auto"
@@ -9652,7 +11053,7 @@ function ArrowIcon() {
9652
11053
  return /* @__PURE__ */ jsx(ArrowForwardIcon, { "aria-hidden": "true", style: { fontSize: 24 } });
9653
11054
  }
9654
11055
  function ProcessSection({ title, description, steps, ...props }) {
9655
- return /* @__PURE__ */ jsx(Section3, { ...props, children: /* @__PURE__ */ jsxs(Inner2, { children: [
11056
+ return /* @__PURE__ */ jsx(Section3, { ...props, children: /* @__PURE__ */ jsxs(Inner3, { children: [
9656
11057
  (title || description) && /* @__PURE__ */ jsx(SectionHeading, { title: title ?? "", description, align: "center" }),
9657
11058
  /* @__PURE__ */ jsx(StepsRow, { children: steps.map((step, i) => /* @__PURE__ */ jsxs(Fragment$1, { children: [
9658
11059
  /* @__PURE__ */ jsx(StepWrapper, { children: /* @__PURE__ */ jsx(
@@ -9668,7 +11069,7 @@ function ProcessSection({ title, description, steps, ...props }) {
9668
11069
  ] }, i)) })
9669
11070
  ] }) });
9670
11071
  }
9671
- var Grid5 = styled("div", {
11072
+ var Grid6 = styled("div", {
9672
11073
  shouldForwardProp: (prop) => !["$columns", "$hasHeading"].includes(prop)
9673
11074
  })(({ theme, $columns, $hasHeading }) => ({
9674
11075
  display: "grid",
@@ -9697,7 +11098,7 @@ var StatsSection = forwardRef(
9697
11098
  const hasHeading = Boolean(title || description);
9698
11099
  return /* @__PURE__ */ jsx(Section, { ref, ...rest, children: /* @__PURE__ */ jsxs(Container, { maxWidth, children: [
9699
11100
  hasHeading && /* @__PURE__ */ jsx(SectionHeading, { title: title ?? "", description, align: headingAlign }),
9700
- /* @__PURE__ */ jsx(Grid5, { $columns: columns, $hasHeading: hasHeading, children: stats.map((stat, index) => /* @__PURE__ */ jsx(
11101
+ /* @__PURE__ */ jsx(Grid6, { $columns: columns, $hasHeading: hasHeading, children: stats.map((stat, index) => /* @__PURE__ */ jsx(
9701
11102
  StatCard,
9702
11103
  {
9703
11104
  stat,
@@ -9711,7 +11112,7 @@ var StatsSection = forwardRef(
9711
11112
  );
9712
11113
  StatsSection.displayName = "StatsSection";
9713
11114
  var statsSectionColumns = [2, 3, 4];
9714
- var Grid6 = styled("div", {
11115
+ var Grid7 = styled("div", {
9715
11116
  shouldForwardProp: (prop) => !["$columns", "$hasHeading"].includes(prop)
9716
11117
  })(({ theme, $columns, $hasHeading }) => ({
9717
11118
  display: "grid",
@@ -9740,7 +11141,7 @@ var TeamSection = forwardRef(
9740
11141
  return /* @__PURE__ */ jsx(Section, { ref, ...rest, children: /* @__PURE__ */ jsxs(Container, { maxWidth, children: [
9741
11142
  hasHeading && title && /* @__PURE__ */ jsx(SectionHeading, { title, description, align: headingAlign }),
9742
11143
  hasHeading && !title && description && /* @__PURE__ */ jsx(SectionHeading, { title: description, align: headingAlign, as: "h2" }),
9743
- /* @__PURE__ */ jsx(Grid6, { $columns: columns, $hasHeading: hasHeading, children: members.map((member) => /* @__PURE__ */ jsx(
11144
+ /* @__PURE__ */ jsx(Grid7, { $columns: columns, $hasHeading: hasHeading, children: members.map((member) => /* @__PURE__ */ jsx(
9744
11145
  TeamMemberCard,
9745
11146
  {
9746
11147
  member,
@@ -9753,7 +11154,7 @@ var TeamSection = forwardRef(
9753
11154
  );
9754
11155
  TeamSection.displayName = "TeamSection";
9755
11156
  var teamSectionColumns = [2, 3, 4];
9756
- var Grid7 = styled("div", {
11157
+ var Grid8 = styled("div", {
9757
11158
  shouldForwardProp: (prop) => !["$columns", "$hasHeading"].includes(prop)
9758
11159
  })(({ theme, $columns, $hasHeading }) => ({
9759
11160
  display: "grid",
@@ -9781,7 +11182,7 @@ var TestimonialsSection = forwardRef(
9781
11182
  const hasHeading = Boolean(title || description);
9782
11183
  return /* @__PURE__ */ jsx(Section, { ref, ...rest, children: /* @__PURE__ */ jsxs(Container, { maxWidth, children: [
9783
11184
  hasHeading && /* @__PURE__ */ jsx(SectionHeading, { title: title ?? "", description, align: headingAlign }),
9784
- /* @__PURE__ */ jsx(Grid7, { $columns: columns, $hasHeading: hasHeading, children: testimonials.map((testimonial, index) => /* @__PURE__ */ jsx(
11185
+ /* @__PURE__ */ jsx(Grid8, { $columns: columns, $hasHeading: hasHeading, children: testimonials.map((testimonial, index) => /* @__PURE__ */ jsx(
9785
11186
  TestimonialCard,
9786
11187
  {
9787
11188
  testimonial,
@@ -9866,7 +11267,7 @@ var ResultsScroll = styled("div")({
9866
11267
  flex: 1,
9867
11268
  padding: "0.375rem 0"
9868
11269
  });
9869
- var GroupLabel = styled("div")(({ theme }) => ({
11270
+ var GroupLabel3 = styled("div")(({ theme }) => ({
9870
11271
  padding: "0.5rem 1rem 0.25rem",
9871
11272
  fontFamily: theme.typography.fontFamily,
9872
11273
  fontSize: "0.75rem",
@@ -9875,7 +11276,7 @@ var GroupLabel = styled("div")(({ theme }) => ({
9875
11276
  textTransform: "uppercase",
9876
11277
  letterSpacing: "0.06em"
9877
11278
  }));
9878
- var Item5 = styled("div", {
11279
+ var Item4 = styled("div", {
9879
11280
  shouldForwardProp: (p) => p !== "$active"
9880
11281
  })(({ theme, $active }) => ({
9881
11282
  display: "flex",
@@ -9934,14 +11335,14 @@ var Kbd = styled("kbd")(({ theme }) => ({
9934
11335
  backgroundColor: theme.palette.action.hover,
9935
11336
  lineHeight: 1.6
9936
11337
  }));
9937
- var EmptyState = styled("div")(({ theme }) => ({
11338
+ var EmptyState2 = styled("div")(({ theme }) => ({
9938
11339
  padding: "2.5rem 1rem",
9939
11340
  textAlign: "center",
9940
11341
  fontFamily: theme.typography.fontFamily,
9941
11342
  fontSize: "0.9375rem",
9942
11343
  color: theme.palette.text.secondary
9943
11344
  }));
9944
- var Footer5 = styled("div")(({ theme }) => ({
11345
+ var Footer6 = styled("div")(({ theme }) => ({
9945
11346
  display: "flex",
9946
11347
  gap: "1.25rem",
9947
11348
  padding: "0.5rem 1rem",
@@ -10068,13 +11469,13 @@ function CommandPalette({
10068
11469
  ),
10069
11470
  /* @__PURE__ */ jsx(KbdHint, { children: "esc" })
10070
11471
  ] }),
10071
- /* @__PURE__ */ jsx(ResultsScroll, { id: `${id}-listbox`, role: "listbox", "aria-label": "Wyniki", children: flat.length === 0 ? /* @__PURE__ */ jsx(EmptyState, { children: emptyLabel }) : filtered.map((group) => /* @__PURE__ */ jsxs("div", { role: "group", "aria-labelledby": `${id}-group-${group.id}`, children: [
10072
- /* @__PURE__ */ jsx(GroupLabel, { id: `${id}-group-${group.id}`, children: group.label }),
11472
+ /* @__PURE__ */ jsx(ResultsScroll, { id: `${id}-listbox`, role: "listbox", "aria-label": "Wyniki", children: flat.length === 0 ? /* @__PURE__ */ jsx(EmptyState2, { children: emptyLabel }) : filtered.map((group) => /* @__PURE__ */ jsxs("div", { role: "group", "aria-labelledby": `${id}-group-${group.id}`, children: [
11473
+ /* @__PURE__ */ jsx(GroupLabel3, { id: `${id}-group-${group.id}`, children: group.label }),
10073
11474
  group.items.map((item) => {
10074
11475
  const idx = globalIndex++;
10075
11476
  const isActive = idx === activeIndex;
10076
11477
  return /* @__PURE__ */ jsxs(
10077
- Item5,
11478
+ Item4,
10078
11479
  {
10079
11480
  id: `${id}-item-${item.id}`,
10080
11481
  role: "option",
@@ -10096,7 +11497,7 @@ function CommandPalette({
10096
11497
  );
10097
11498
  })
10098
11499
  ] }, group.id)) }),
10099
- /* @__PURE__ */ jsxs(Footer5, { id: `${id}-hint`, "aria-hidden": "true", children: [
11500
+ /* @__PURE__ */ jsxs(Footer6, { id: `${id}-hint`, "aria-hidden": "true", children: [
10100
11501
  /* @__PURE__ */ jsxs(FooterHint, { children: [
10101
11502
  /* @__PURE__ */ jsx(Kbd, { children: "\u2191" }),
10102
11503
  /* @__PURE__ */ jsx(Kbd, { children: "\u2193" }),
@@ -10155,7 +11556,7 @@ var Bar2 = styled("div")(({ theme }) => ({
10155
11556
  boxShadow: "0 -4px 24px rgba(0,0,0,0.12)",
10156
11557
  animation: `${slideUp2} 300ms cubic-bezier(0.16, 1, 0.3, 1)`
10157
11558
  }));
10158
- var Inner3 = styled("div")({
11559
+ var Inner4 = styled("div")({
10159
11560
  maxWidth: "72rem",
10160
11561
  margin: "0 auto",
10161
11562
  padding: "1.25rem 1.5rem",
@@ -10170,7 +11571,7 @@ var TopRow = styled("div")({
10170
11571
  flexWrap: "wrap"
10171
11572
  });
10172
11573
  var TextBlock = styled("div")({ flex: 1, minWidth: "16rem" });
10173
- var Title9 = styled("p")(({ theme }) => ({
11574
+ var Title12 = styled("p")(({ theme }) => ({
10174
11575
  margin: "0 0 0.25rem",
10175
11576
  fontFamily: theme.typography.fontFamily,
10176
11577
  fontSize: "1rem",
@@ -10178,7 +11579,7 @@ var Title9 = styled("p")(({ theme }) => ({
10178
11579
  color: theme.palette.text.primary,
10179
11580
  lineHeight: 1.4
10180
11581
  }));
10181
- var Description7 = styled("p")(({ theme }) => ({
11582
+ var Description9 = styled("p")(({ theme }) => ({
10182
11583
  margin: 0,
10183
11584
  fontFamily: theme.typography.fontFamily,
10184
11585
  fontSize: "0.875rem",
@@ -10332,11 +11733,11 @@ function CookieConsent({
10332
11733
  onSave?.(prefs);
10333
11734
  };
10334
11735
  return createPortal(
10335
- /* @__PURE__ */ jsx(Bar2, { role: "region", "aria-label": "Zgoda na pliki cookie", "aria-live": "polite", children: /* @__PURE__ */ jsxs(Inner3, { children: [
11736
+ /* @__PURE__ */ jsx(Bar2, { role: "region", "aria-label": "Zgoda na pliki cookie", "aria-live": "polite", children: /* @__PURE__ */ jsxs(Inner4, { children: [
10336
11737
  /* @__PURE__ */ jsxs(TopRow, { children: [
10337
11738
  /* @__PURE__ */ jsxs(TextBlock, { children: [
10338
- /* @__PURE__ */ jsx(Title9, { children: title }),
10339
- /* @__PURE__ */ jsxs(Description7, { children: [
11739
+ /* @__PURE__ */ jsx(Title12, { children: title }),
11740
+ /* @__PURE__ */ jsxs(Description9, { children: [
10340
11741
  description,
10341
11742
  privacyPolicyLabel && privacyPolicyHref && /* @__PURE__ */ jsxs(Fragment, { children: [
10342
11743
  " ",
@@ -10386,16 +11787,11 @@ function CookieConsent({
10386
11787
  );
10387
11788
  }
10388
11789
  var defaultCookieCategories = DEFAULT_CATEGORIES;
10389
- var Root34 = styled("footer")(({ theme }) => ({
11790
+ var Root56 = styled("footer")(({ theme }) => ({
10390
11791
  width: "100%",
10391
11792
  backgroundColor: theme.palette.background.paper,
10392
11793
  borderTop: `1px solid ${theme.palette.divider}`
10393
11794
  }));
10394
- var Inner4 = styled("div")({
10395
- maxWidth: "72rem",
10396
- margin: "0 auto",
10397
- padding: "3rem 1.5rem 2rem"
10398
- });
10399
11795
  var TopRow2 = styled("div")({
10400
11796
  display: "grid",
10401
11797
  gridTemplateColumns: "1fr",
@@ -10413,7 +11809,7 @@ var BrandBlock = styled("div")({
10413
11809
  flexDirection: "column",
10414
11810
  gap: "0.75rem"
10415
11811
  });
10416
- var Description8 = styled("p")(({ theme }) => ({
11812
+ var Description10 = styled("p")(({ theme }) => ({
10417
11813
  margin: 0,
10418
11814
  fontFamily: theme.typography.fontFamily,
10419
11815
  fontSize: "0.875rem",
@@ -10519,19 +11915,21 @@ var SOCIAL_ICONS = {
10519
11915
  /* @__PURE__ */ jsx("polygon", { fill: "white", points: "9.75 15.02 15.5 12 9.75 8.98 9.75 15.02" })
10520
11916
  ] })
10521
11917
  };
10522
- function Footer6({
11918
+ function Footer7({
10523
11919
  logo,
10524
11920
  description,
10525
11921
  columns = [],
10526
11922
  socialLinks = [],
10527
- copyright
11923
+ copyright,
11924
+ maxWidth = "lg",
11925
+ style
10528
11926
  }) {
10529
11927
  const colCount = columns.length;
10530
- return /* @__PURE__ */ jsx(Root34, { children: /* @__PURE__ */ jsxs(Inner4, { children: [
11928
+ return /* @__PURE__ */ jsx(Root56, { style, children: /* @__PURE__ */ jsxs(Container$1, { maxWidth, sx: { pt: "3rem", pb: "2rem" }, children: [
10531
11929
  (logo || description || colCount > 0) && /* @__PURE__ */ jsxs(TopRow2, { style: { "--col-count": colCount }, children: [
10532
11930
  (logo || description) && /* @__PURE__ */ jsxs(BrandBlock, { children: [
10533
11931
  logo,
10534
- description && /* @__PURE__ */ jsx(Description8, { children: description })
11932
+ description && /* @__PURE__ */ jsx(Description10, { children: description })
10535
11933
  ] }),
10536
11934
  columns.map((col) => /* @__PURE__ */ jsxs(Column, { children: [
10537
11935
  /* @__PURE__ */ jsx(ColumnTitle, { children: col.title }),
@@ -10554,7 +11952,7 @@ function Footer6({
10554
11952
  ] })
10555
11953
  ] }) });
10556
11954
  }
10557
- var Root35 = styled("header", {
11955
+ var Root57 = styled("header", {
10558
11956
  shouldForwardProp: (p) => p !== "$sticky" && p !== "$variant"
10559
11957
  })(({ theme, $sticky, $variant }) => ({
10560
11958
  position: $sticky ? "sticky" : "relative",
@@ -10565,15 +11963,6 @@ var Root35 = styled("header", {
10565
11963
  borderBottom: $variant === "transparent" ? "none" : `1px solid ${theme.palette.divider}`,
10566
11964
  boxShadow: $variant === "transparent" ? "none" : "0 1px 4px rgba(0,0,0,0.08)"
10567
11965
  }));
10568
- var Inner5 = styled("div")({
10569
- maxWidth: "72rem",
10570
- margin: "0 auto",
10571
- padding: "0 1.5rem",
10572
- height: "3.75rem",
10573
- display: "flex",
10574
- alignItems: "center",
10575
- gap: "1.5rem"
10576
- });
10577
11966
  var LogoSlot = styled("div")({
10578
11967
  flexShrink: 0,
10579
11968
  display: "flex",
@@ -10639,7 +12028,8 @@ var MobileDrawer = styled("div", {
10639
12028
  display: $open ? "flex" : "none",
10640
12029
  flexDirection: "column",
10641
12030
  gap: "0.25rem",
10642
- padding: "0.75rem 1.5rem 1rem",
12031
+ paddingTop: "0.75rem",
12032
+ paddingBottom: "1rem",
10643
12033
  borderTop: `1px solid ${theme.palette.divider}`,
10644
12034
  backgroundColor: theme.palette.background.paper,
10645
12035
  "@media (min-width: 768px)": {
@@ -10669,28 +12059,37 @@ function Navbar({
10669
12059
  navItems = [],
10670
12060
  actions,
10671
12061
  sticky = false,
10672
- variant = "filled"
12062
+ variant = "filled",
12063
+ maxWidth = "lg",
12064
+ style
10673
12065
  }) {
10674
12066
  const [mobileOpen, setMobileOpen] = useState(false);
10675
- return /* @__PURE__ */ jsxs(Root35, { $sticky: sticky, $variant: variant, children: [
10676
- /* @__PURE__ */ jsxs(Inner5, { children: [
10677
- logo && /* @__PURE__ */ jsx(LogoSlot, { children: logo }),
10678
- /* @__PURE__ */ jsx(Nav3, { "aria-label": "Nawigacja g\u0142\xF3wna", children: navItems.map((item) => /* @__PURE__ */ jsx(NavLink, { href: item.href, $active: !!item.active, children: item.label }, item.href)) }),
10679
- (actions || navItems.length > 0) && /* @__PURE__ */ jsxs(RightSlot, { children: [
10680
- actions,
10681
- navItems.length > 0 && /* @__PURE__ */ jsx(
10682
- HamburgerButton,
10683
- {
10684
- type: "button",
10685
- "aria-label": mobileOpen ? "Zamknij menu" : "Otw\xF3rz menu",
10686
- "aria-expanded": mobileOpen,
10687
- onClick: () => setMobileOpen((v) => !v),
10688
- children: /* @__PURE__ */ jsx(HamburgerIcon, { open: mobileOpen })
10689
- }
10690
- )
10691
- ] })
10692
- ] }),
10693
- navItems.length > 0 && /* @__PURE__ */ jsx(MobileDrawer, { $open: mobileOpen, "aria-label": "Menu mobilne", children: navItems.map((item) => /* @__PURE__ */ jsx(MobileNavLink, { href: item.href, $active: !!item.active, children: item.label }, item.href)) })
12067
+ return /* @__PURE__ */ jsxs(Root57, { $sticky: sticky, $variant: variant, style, children: [
12068
+ /* @__PURE__ */ jsxs(
12069
+ Container$1,
12070
+ {
12071
+ maxWidth,
12072
+ sx: { height: "3.75rem", display: "flex", alignItems: "center", gap: "1.5rem" },
12073
+ children: [
12074
+ logo && /* @__PURE__ */ jsx(LogoSlot, { children: logo }),
12075
+ /* @__PURE__ */ jsx(Nav3, { "aria-label": "Nawigacja g\u0142\xF3wna", children: navItems.map((item) => /* @__PURE__ */ jsx(NavLink, { href: item.href, $active: !!item.active, children: item.label }, item.href)) }),
12076
+ (actions || navItems.length > 0) && /* @__PURE__ */ jsxs(RightSlot, { children: [
12077
+ actions,
12078
+ navItems.length > 0 && /* @__PURE__ */ jsx(
12079
+ HamburgerButton,
12080
+ {
12081
+ type: "button",
12082
+ "aria-label": mobileOpen ? "Zamknij menu" : "Otw\xF3rz menu",
12083
+ "aria-expanded": mobileOpen,
12084
+ onClick: () => setMobileOpen((v) => !v),
12085
+ children: /* @__PURE__ */ jsx(HamburgerIcon, { open: mobileOpen })
12086
+ }
12087
+ )
12088
+ ] })
12089
+ ]
12090
+ }
12091
+ ),
12092
+ navItems.length > 0 && /* @__PURE__ */ jsx(MobileDrawer, { $open: mobileOpen, "aria-label": "Menu mobilne", children: /* @__PURE__ */ jsx(Container$1, { maxWidth, children: navItems.map((item) => /* @__PURE__ */ jsx(MobileNavLink, { href: item.href, $active: !!item.active, children: item.label }, item.href)) }) })
10694
12093
  ] });
10695
12094
  }
10696
12095
  var ss = "sans-serif";
@@ -10798,6 +12197,6 @@ var MyThemeProvider = ({
10798
12197
  ] });
10799
12198
  };
10800
12199
 
10801
- export { Accordion, Article, AspectRatio, Avatar, BackToTop, Badge, BaseInput, BaseSelectInput, Box2 as Box, Breadcrumbs, Button, Card, Carousel, CartDrawer, CheckboxInput, CommandPalette, CompareTool, Container, ContextMenu, CookieConsent, CountryFlag, CouponInput, DateTimePicker, EmailInput, FaqItem, FaqSection, FeatureGrid, FeatureItem2 as FeatureItem, FileInput, FilterSidebar, Footer6 as Footer, Lightbox, List3 as List, LogoCloud, LogoTile, Main, Marquee, Modal, MultiSelectInput, MyThemeProvider, Navbar, NewsletterSection, NumberInput, OrderSummary, PaginationBar, PaginationButton, PaginationEllipsis, Partners, PasswordInput, PhoneInput, PostCard, PostCardImage, PostCardMeta, Price, PricingCard, PricingSection, ProcessSection, ProcessStep, ProductCard, ProductGallery, ProgressBar, ProgressCircle, PromoStrip, Prose, QuantitySelector, RangeSlider, Rating, SearchInput, Section, SectionHeading, SelectInput, Skeleton, Spinner3 as Spinner, StatCard, StatsSection, StockStatus, SwitchInput, Tabs, TeamMemberCard, TeamSection, TestimonialCard, TestimonialsSection, TextInput, TextareaInput, Timeline, VideoPlayer, accordionVariants, aspectRatioPresets, avatarColors, avatarSizes, backToTopPositions, backToTopVariants, badgeVariants, cardPaddings, cardRoundeds, cardVariants, createMyTheme, dateTimePickerModes, defaultCookieCategories, featureGridColumns, listSizes, listVariants, logoCloudColumns, logoCloudVariants, logoTileVariants, marqueeDirections, marqueeSpeeds, modalSizes, myTheme, newsletterLayouts, postCardVariants, priceSizes, progressBarSizes, progressBarVariants, progressCircleSizes, progressCircleVariants, promoStripVariants, rangeSliderSizes, sectionHeadingAligns, skeletonVariants, spinnerColors, spinnerSizes, spinnerVariants, statsSectionColumns, stockStatusValues, switchColors, tabsVariants, teamSectionColumns, testimonialsSectionColumns, themeDark, themeHighContrast, themeLight, timelineItemStatuses, timelineVariants };
12200
+ export { Accordion, Alert, Article, AspectRatio, Avatar, BackToTop, Badge2 as Badge, BaseInput, BaseSelectInput, Box2 as Box, Breadcrumbs, Button, Card, Carousel, CartButton, CartDrawer, CartDrawerItem as CartDrawerItemComponent, CategoryCard, CategoryCardImage, CategoryCardInfo, CheckboxInput, CommandPalette, CompareTool, Container, ContextMenu, CookieConsent, CountdownTimer, CountryFlag, CouponInput, DateTimePicker, DealCard, EmailInput, EmptyState, FaqItem, FaqSection, FeatureGrid, FeatureItem, FileInput, FilterSidebar, Footer7 as Footer, Lightbox, List4 as List, LogoCloud, LogoTile, Main, Marquee, Modal, MultiSelectInput, MyThemeProvider, Navbar, NewsletterSection, NumberInput, OrderSummary, OrderSummaryItem as OrderSummaryItemComponent, OrderSummaryRow, PaginationBar, PaginationButton, PaginationEllipsis, Partners, PasswordInput, PaymentMethodSelector, PhoneInput, PostCard, PostCardImage, PostCardMeta, Price, PricingCard, PricingCardFeatureList, PricingCardPrice, PricingSection, ProcessSection, ProcessStep, ProductCard, ProductCardHorizontal, ProductCardImage, ProductGallery, ProgressBar, ProgressCircle, PromoStrip, Prose, QuantitySelector, RangeSlider, Rating, RelatedProducts, ReviewItem, ReviewSection, ReviewSummary, SaleBadge, SearchInput, Section, SectionHeading, SelectInput, ShippingSelector, Skeleton, SortBar, Spinner3 as Spinner, StatCard, StatsSection, StockStatus, SwitchInput, Tabs, TeamMemberAvatar, TeamMemberCard, TeamMemberInfo, TeamSection, TestimonialAuthor, TestimonialCard, TestimonialQuote, TestimonialsSection, TextInput, TextareaInput, Timeline, VariantSelector, VideoPlayer, VoucherCard, WishlistButton, accordionVariants, alertSeverities, aspectRatioPresets, avatarColors, avatarSizes, backToTopPositions, backToTopVariants, badgeVariants, cardPaddings, cardRoundeds, cardVariants, countdownTimerVariants, createMyTheme, dateTimePickerModes, defaultCookieCategories, featureGridColumns, listSizes, listVariants, logoCloudColumns, logoCloudVariants, logoTileVariants, marqueeDirections, marqueeSpeeds, modalSizes, myTheme, newsletterLayouts, postCardVariants, priceSizes, progressBarSizes, progressBarVariants, progressCircleSizes, progressCircleVariants, promoStripVariants, rangeSliderSizes, relatedProductsLayouts, saleBadgeVariants, sectionHeadingAligns, skeletonVariants, spinnerColors, spinnerSizes, spinnerVariants, statsSectionColumns, stockStatusValues, switchColors, tabsVariants, teamSectionColumns, testimonialsSectionColumns, themeDark, themeHighContrast, themeLight, timelineItemStatuses, timelineVariants, variantSelectorModes };
10802
12201
  //# sourceMappingURL=index.js.map
10803
12202
  //# sourceMappingURL=index.js.map