@vkzstudio/muza-ui 1.2.0 → 1.4.0

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.
Files changed (204) hide show
  1. package/dist/components/Accordion/Accordion.d.ts +52 -2
  2. package/dist/components/Accordion/Accordion.d.ts.map +1 -1
  3. package/dist/components/Accordion/Accordion.js +111 -76
  4. package/dist/components/ArticleCard/ArticleCard.d.ts +178 -0
  5. package/dist/components/ArticleCard/ArticleCard.d.ts.map +1 -0
  6. package/dist/components/ArticleCard/ArticleCard.js +542 -0
  7. package/dist/components/ArticleCard/ArticleCard.stories.d.ts +14 -0
  8. package/dist/components/ArticleCard/ArticleCard.stories.d.ts.map +1 -0
  9. package/dist/components/ArticleCard/index.d.ts +2 -0
  10. package/dist/components/ArticleCard/index.d.ts.map +1 -0
  11. package/dist/components/BalanceListView/BalanceListView.examples.d.ts +38 -0
  12. package/dist/components/BalanceListView/BalanceListView.examples.d.ts.map +1 -0
  13. package/dist/components/BalanceListView/BalanceListView.stories.d.ts +8 -0
  14. package/dist/components/BalanceListView/BalanceListView.stories.d.ts.map +1 -0
  15. package/dist/components/ButtonArrow/ButtonArrow.d.ts +3 -3
  16. package/dist/components/ButtonArrow/ButtonArrow.d.ts.map +1 -1
  17. package/dist/components/ButtonArrow/ButtonArrow.js +26 -25
  18. package/dist/components/Calendar/Calendar.d.ts.map +1 -1
  19. package/dist/components/Calendar/Calendar.js +5 -5
  20. package/dist/components/Calendar/index.d.ts +1 -2
  21. package/dist/components/Calendar/index.d.ts.map +1 -1
  22. package/dist/components/Carousel/Carousel.d.ts +9 -0
  23. package/dist/components/Carousel/Carousel.d.ts.map +1 -1
  24. package/dist/components/Carousel/Carousel.js +135 -133
  25. package/dist/components/CarouselSection/CarouselSection.examples.d.ts +34 -0
  26. package/dist/components/CarouselSection/CarouselSection.examples.d.ts.map +1 -0
  27. package/dist/components/CarouselSection/CarouselSection.stories.d.ts +8 -0
  28. package/dist/components/CarouselSection/CarouselSection.stories.d.ts.map +1 -0
  29. package/dist/components/CategoryCard/CategoryCard.d.ts +97 -0
  30. package/dist/components/CategoryCard/CategoryCard.d.ts.map +1 -0
  31. package/dist/components/CategoryCard/CategoryCard.js +152 -0
  32. package/dist/components/CategoryCard/CategoryCard.stories.d.ts +14 -0
  33. package/dist/components/CategoryCard/CategoryCard.stories.d.ts.map +1 -0
  34. package/dist/components/CategoryCard/index.d.ts +2 -0
  35. package/dist/components/CategoryCard/index.d.ts.map +1 -0
  36. package/dist/components/CategoryIcon/CategoryIcon.d.ts +45 -0
  37. package/dist/components/CategoryIcon/CategoryIcon.d.ts.map +1 -0
  38. package/dist/components/CategoryIcon/CategoryIcon.js +54 -0
  39. package/dist/components/CategoryIcon/CategoryIcon.stories.d.ts +10 -0
  40. package/dist/components/CategoryIcon/CategoryIcon.stories.d.ts.map +1 -0
  41. package/dist/components/CategoryIcon/index.d.ts +2 -0
  42. package/dist/components/CategoryIcon/index.d.ts.map +1 -0
  43. package/dist/components/DatePicker/DatePicker.d.ts.map +1 -1
  44. package/dist/components/DatePicker/DatePicker.js +5 -5
  45. package/dist/components/Dialog/Dialog.d.ts +12 -6
  46. package/dist/components/Dialog/Dialog.d.ts.map +1 -1
  47. package/dist/components/Dialog/Dialog.js +116 -120
  48. package/dist/components/Dialog/Dialog.stories.d.ts +1 -0
  49. package/dist/components/Dialog/Dialog.stories.d.ts.map +1 -1
  50. package/dist/components/DotDivider/DotDivider.d.ts +35 -0
  51. package/dist/components/DotDivider/DotDivider.d.ts.map +1 -0
  52. package/dist/components/DotDivider/DotDivider.js +31 -0
  53. package/dist/components/DotDivider/DotDivider.stories.d.ts +10 -0
  54. package/dist/components/DotDivider/DotDivider.stories.d.ts.map +1 -0
  55. package/dist/components/DotDivider/index.d.ts +2 -0
  56. package/dist/components/DotDivider/index.d.ts.map +1 -0
  57. package/dist/components/DropdownMenu/DropdownMenu.d.ts.map +1 -1
  58. package/dist/components/DropdownMenu/DropdownMenu.js +13 -13
  59. package/dist/components/EdgeButton/EdgeButton.d.ts.map +1 -1
  60. package/dist/components/EdgeButton/EdgeButton.js +10 -11
  61. package/dist/components/EmptyState/EmptyState.js +19 -19
  62. package/dist/components/FileUpload/FileItem.d.ts.map +1 -1
  63. package/dist/components/FileUpload/FileItem.js +8 -9
  64. package/dist/components/FileUpload/FileUpload.js +3 -3
  65. package/dist/components/HeartButton/HeartButton.d.ts +61 -0
  66. package/dist/components/HeartButton/HeartButton.d.ts.map +1 -0
  67. package/dist/components/HeartButton/HeartButton.js +88 -0
  68. package/dist/components/HeartButton/HeartButton.stories.d.ts +10 -0
  69. package/dist/components/HeartButton/HeartButton.stories.d.ts.map +1 -0
  70. package/dist/components/HeartButton/index.d.ts +2 -0
  71. package/dist/components/HeartButton/index.d.ts.map +1 -0
  72. package/dist/components/Icons/CustomBadges.d.ts +20 -0
  73. package/dist/components/Icons/CustomBadges.d.ts.map +1 -1
  74. package/dist/components/Icons/CustomBadges.js +176 -21
  75. package/dist/components/Icons/CustomIcons.d.ts +13 -0
  76. package/dist/components/Icons/CustomIcons.d.ts.map +1 -1
  77. package/dist/components/Icons/CustomIcons.js +50 -30
  78. package/dist/components/Icons/LogosAndBadges.stories.d.ts +2 -1
  79. package/dist/components/Icons/LogosAndBadges.stories.d.ts.map +1 -1
  80. package/dist/components/InputOTP/InputOTP.d.ts +95 -0
  81. package/dist/components/InputOTP/InputOTP.d.ts.map +1 -0
  82. package/dist/components/InputOTP/InputOTP.js +187 -0
  83. package/dist/components/InputOTP/InputOTP.stories.d.ts +18 -0
  84. package/dist/components/InputOTP/InputOTP.stories.d.ts.map +1 -0
  85. package/dist/components/InputOTP/index.d.ts +3 -0
  86. package/dist/components/InputOTP/index.d.ts.map +1 -0
  87. package/dist/components/InputOTP/useWebOtpAutofill.d.ts +33 -0
  88. package/dist/components/InputOTP/useWebOtpAutofill.d.ts.map +1 -0
  89. package/dist/components/InputOTP/useWebOtpAutofill.js +25 -0
  90. package/dist/components/LanguageSwitcher/LanguageSwitcher.d.ts.map +1 -1
  91. package/dist/components/LanguageSwitcher/LanguageSwitcher.js +65 -55
  92. package/dist/components/LoginScreen/LoginScreen.d.ts +10 -1
  93. package/dist/components/LoginScreen/LoginScreen.d.ts.map +1 -1
  94. package/dist/components/LoginScreen/LoginScreen.js +23 -17
  95. package/dist/components/MarketNav/MarketNav.examples.d.ts +60 -0
  96. package/dist/components/MarketNav/MarketNav.examples.d.ts.map +1 -0
  97. package/dist/components/MarketNav/MarketNav.stories.d.ts +9 -0
  98. package/dist/components/MarketNav/MarketNav.stories.d.ts.map +1 -0
  99. package/dist/components/MultiSelect/MultiSelect.js +1 -1
  100. package/dist/components/OfferCard/OfferCard.d.ts +206 -0
  101. package/dist/components/OfferCard/OfferCard.d.ts.map +1 -0
  102. package/dist/components/OfferCard/OfferCard.js +423 -0
  103. package/dist/components/OfferCard/OfferCard.stories.d.ts +15 -0
  104. package/dist/components/OfferCard/OfferCard.stories.d.ts.map +1 -0
  105. package/dist/components/OfferCard/index.d.ts +2 -0
  106. package/dist/components/OfferCard/index.d.ts.map +1 -0
  107. package/dist/components/PageContainer/PageContainer.d.ts +53 -0
  108. package/dist/components/PageContainer/PageContainer.d.ts.map +1 -0
  109. package/dist/components/PageContainer/PageContainer.js +49 -0
  110. package/dist/components/PageContainer/PageContainer.stories.d.ts +14 -0
  111. package/dist/components/PageContainer/PageContainer.stories.d.ts.map +1 -0
  112. package/dist/components/PageContainer/index.d.ts +2 -0
  113. package/dist/components/PageContainer/index.d.ts.map +1 -0
  114. package/dist/components/PartnerCard/PartnerCard.d.ts +234 -0
  115. package/dist/components/PartnerCard/PartnerCard.d.ts.map +1 -0
  116. package/dist/components/PartnerCard/PartnerCard.js +591 -0
  117. package/dist/components/PartnerCard/PartnerCard.stories.d.ts +14 -0
  118. package/dist/components/PartnerCard/PartnerCard.stories.d.ts.map +1 -0
  119. package/dist/components/PartnerCard/index.d.ts +2 -0
  120. package/dist/components/PartnerCard/index.d.ts.map +1 -0
  121. package/dist/components/PaymentMethodSelect/PaymentMethodSelect.examples.d.ts +35 -0
  122. package/dist/components/PaymentMethodSelect/PaymentMethodSelect.examples.d.ts.map +1 -0
  123. package/dist/components/PaymentMethodSelect/PaymentMethodSelect.stories.d.ts +11 -0
  124. package/dist/components/PaymentMethodSelect/PaymentMethodSelect.stories.d.ts.map +1 -0
  125. package/dist/components/Rating/Rating.d.ts +62 -0
  126. package/dist/components/Rating/Rating.d.ts.map +1 -0
  127. package/dist/components/Rating/Rating.js +88 -0
  128. package/dist/components/Rating/Rating.stories.d.ts +12 -0
  129. package/dist/components/Rating/Rating.stories.d.ts.map +1 -0
  130. package/dist/components/Rating/index.d.ts +2 -0
  131. package/dist/components/Rating/index.d.ts.map +1 -0
  132. package/dist/components/RatingBlock/RatingBlock.d.ts +65 -0
  133. package/dist/components/RatingBlock/RatingBlock.d.ts.map +1 -0
  134. package/dist/components/RatingBlock/RatingBlock.js +92 -0
  135. package/dist/components/RatingBlock/RatingBlock.stories.d.ts +12 -0
  136. package/dist/components/RatingBlock/RatingBlock.stories.d.ts.map +1 -0
  137. package/dist/components/RatingBlock/index.d.ts +2 -0
  138. package/dist/components/RatingBlock/index.d.ts.map +1 -0
  139. package/dist/components/ReorderableTable/ReorderableTable.stories.d.ts.map +1 -1
  140. package/dist/components/ResponsiveLayoutTable/ResponsiveLayoutTable.js +5 -5
  141. package/dist/components/SearchFilters/SearchFilters.d.ts +88 -0
  142. package/dist/components/SearchFilters/SearchFilters.d.ts.map +1 -0
  143. package/dist/components/SearchFilters/SearchFilters.js +176 -0
  144. package/dist/components/SearchFilters/SearchFilters.stories.d.ts +12 -0
  145. package/dist/components/SearchFilters/SearchFilters.stories.d.ts.map +1 -0
  146. package/dist/components/SearchFilters/index.d.ts +2 -0
  147. package/dist/components/SearchFilters/index.d.ts.map +1 -0
  148. package/dist/components/SegmentedControl/SegmentedControl.js +11 -11
  149. package/dist/components/Tag/Tag.d.ts.map +1 -1
  150. package/dist/components/Tag/Tag.js +1 -1
  151. package/dist/components/TransactionsListView/TransactionsListView.d.ts +152 -0
  152. package/dist/components/TransactionsListView/TransactionsListView.d.ts.map +1 -0
  153. package/dist/components/TransactionsListView/TransactionsListView.js +367 -0
  154. package/dist/components/TransactionsListView/TransactionsListView.stories.d.ts +12 -0
  155. package/dist/components/TransactionsListView/TransactionsListView.stories.d.ts.map +1 -0
  156. package/dist/components/TransactionsListView/index.d.ts +2 -0
  157. package/dist/components/TransactionsListView/index.d.ts.map +1 -0
  158. package/dist/components/UniversalFooter/UniversalFooter.d.ts +6 -5
  159. package/dist/components/UniversalFooter/UniversalFooter.d.ts.map +1 -1
  160. package/dist/components/UniversalFooter/UniversalFooter.js +186 -177
  161. package/dist/components/UniversalFooter/UniversalFooter.stories.d.ts.map +1 -1
  162. package/dist/components/VoucherCard/VoucherCard.d.ts +105 -0
  163. package/dist/components/VoucherCard/VoucherCard.d.ts.map +1 -0
  164. package/dist/components/VoucherCard/VoucherCard.js +167 -0
  165. package/dist/components/VoucherCard/VoucherCard.stories.d.ts +9 -0
  166. package/dist/components/VoucherCard/VoucherCard.stories.d.ts.map +1 -0
  167. package/dist/components/VoucherCard/index.d.ts +2 -0
  168. package/dist/components/VoucherCard/index.d.ts.map +1 -0
  169. package/dist/components/index.d.ts +14 -0
  170. package/dist/components/index.d.ts.map +1 -1
  171. package/dist/index.js +413 -352
  172. package/dist/muza-ui.css +1 -1
  173. package/dist/styles/primitives.css +5 -0
  174. package/dist/styles/token-colors.css +106 -30
  175. package/dist/styles/token-sizes.css +60 -16
  176. package/dist/translations/index.d.ts +2 -1
  177. package/dist/translations/index.d.ts.map +1 -1
  178. package/dist/translations/locales/cs.d.ts.map +1 -1
  179. package/dist/translations/locales/cs.js +30 -2
  180. package/dist/translations/locales/en.d.ts.map +1 -1
  181. package/dist/translations/locales/en.js +26 -2
  182. package/dist/translations/locales/sk.d.ts.map +1 -1
  183. package/dist/translations/locales/sk.js +30 -2
  184. package/dist/translations/resolvePluralTemplate.d.ts +10 -0
  185. package/dist/translations/resolvePluralTemplate.d.ts.map +1 -0
  186. package/dist/translations/resolvePluralTemplate.js +20 -0
  187. package/dist/translations/types.d.ts +57 -0
  188. package/dist/translations/types.d.ts.map +1 -1
  189. package/dist/utils/cn.d.ts.map +1 -1
  190. package/dist/utils/cn.js +124 -27
  191. package/dist/utils/disabledLinkProps.d.ts +14 -0
  192. package/dist/utils/disabledLinkProps.d.ts.map +1 -0
  193. package/dist/utils/disabledLinkProps.js +9 -0
  194. package/dist/{components/Calendar/utils → utils}/formatDate.d.ts +1 -1
  195. package/dist/utils/formatDate.d.ts.map +1 -0
  196. package/dist/utils/formatDateRange.d.ts.map +1 -0
  197. package/dist/utils/index.d.ts +3 -0
  198. package/dist/utils/index.d.ts.map +1 -1
  199. package/package.json +4 -3
  200. package/dist/components/Calendar/utils/formatDate.d.ts.map +0 -1
  201. package/dist/components/Calendar/utils/formatDateRange.d.ts.map +0 -1
  202. /package/dist/{components/Calendar/utils → utils}/formatDate.js +0 -0
  203. /package/dist/{components/Calendar/utils → utils}/formatDateRange.d.ts +0 -0
  204. /package/dist/{components/Calendar/utils → utils}/formatDateRange.js +0 -0
@@ -0,0 +1,423 @@
1
+ import { jsx as e, jsxs as r, Fragment as D } from "react/jsx-runtime";
2
+ import * as w from "react";
3
+ import { cva as z } from "class-variance-authority";
4
+ import { HeartButton as Q } from "../HeartButton/HeartButton.js";
5
+ import { Rating as U } from "../Rating/Rating.js";
6
+ import { cn as s } from "../../utils/cn.js";
7
+ import { Typography as n } from "../Typography/Typography.js";
8
+ import { disabledLinkProps as X } from "../../utils/disabledLinkProps.js";
9
+ import { Tag as Z } from "../Tag/Tag.js";
10
+ import { Flex as f } from "../Flex/Flex.js";
11
+ import { DotDivider as ee } from "../DotDivider/DotDivider.js";
12
+ import { Skeleton as o } from "../Skeleton/Skeleton.js";
13
+ const ae = z(
14
+ "group relative inline-flex border border-solid transition-colors focus-visible:outline-none data-[disabled=true]:pointer-events-none",
15
+ {
16
+ variants: {
17
+ variant: {
18
+ compact: "flex-col overflow-hidden rounded-comp-offer-card-compact-radius border-comp-offer-card-stroke-default has-[a:focus-visible]:border-comp-offer-card-stroke-focused has-[a:hover]:border-comp-offer-card-stroke-hover data-[disabled=true]:border-comp-offer-card-stroke-disabled",
19
+ search: "flex-row gap-comp-offer-card-search-gap border-transparent"
20
+ },
21
+ type: {
22
+ default: "",
23
+ promo: ""
24
+ }
25
+ },
26
+ compoundVariants: [
27
+ {
28
+ variant: "compact",
29
+ type: "default",
30
+ class: "bg-comp-offer-card-fill-def-default has-[a:focus-visible]:bg-comp-offer-card-fill-def-focused has-[a:hover]:bg-comp-offer-card-fill-def-hover data-[disabled=true]:bg-comp-offer-card-fill-def-disabled"
31
+ },
32
+ {
33
+ variant: "compact",
34
+ type: "promo",
35
+ class: "bg-comp-offer-card-fill-promo-default has-[a:focus-visible]:bg-comp-offer-card-fill-promo-focused has-[a:hover]:bg-comp-offer-card-fill-promo-hover data-[disabled=true]:bg-comp-offer-card-fill-promo-disabled"
36
+ }
37
+ ],
38
+ defaultVariants: { variant: "compact", type: "default" }
39
+ }
40
+ ), re = z("", {
41
+ variants: {
42
+ variant: {
43
+ compact: "text-text-dark-primary-def group-has-[a:focus-visible]:text-text-brand-focused group-has-[a:hover]:text-text-brand-hover group-data-[disabled=true]:text-text-dark-disabled",
44
+ search: "text-text-dark-primary-def group-has-[a:focus-visible]:text-text-brand-focused group-has-[a:hover]:text-text-brand-hover group-data-[disabled=true]:text-text-dark-disabled"
45
+ }
46
+ },
47
+ defaultVariants: { variant: "compact" }
48
+ }), oe = z("", {
49
+ variants: {
50
+ variant: {
51
+ compact: "mt-auto line-clamp-1 text-text-dark-secondary group-has-[a:focus-visible]:text-text-brand-focused group-data-[disabled=true]:text-text-dark-disabled",
52
+ search: "line-clamp-1 text-text-dark-secondary group-has-[a:focus-visible]:text-text-brand-focused group-data-[disabled=true]:text-text-dark-disabled"
53
+ }
54
+ },
55
+ defaultVariants: { variant: "compact" }
56
+ }), k = ({ rating: c, ratingCount: a, disabled: t }) => /* @__PURE__ */ r(f, { align: "center", gap: "2xs", children: [
57
+ /* @__PURE__ */ e(U, { value: c, allowHalf: !0, disabled: t }),
58
+ a != null && /* @__PURE__ */ r(
59
+ n,
60
+ {
61
+ component: "span",
62
+ variant: "body",
63
+ size: "sm",
64
+ weight: "regular",
65
+ fixY: !0,
66
+ className: s(
67
+ t ? "text-text-dark-disabled" : "text-text-dark-primary-def"
68
+ ),
69
+ children: [
70
+ "(",
71
+ a,
72
+ ")"
73
+ ]
74
+ }
75
+ )
76
+ ] });
77
+ k.displayName = "OfferCard.RatingRow";
78
+ const E = ({
79
+ variant: c = "compact",
80
+ color: a = "default",
81
+ type: t = "default",
82
+ className: l,
83
+ ...m
84
+ }) => c === "compact" ? /* @__PURE__ */ r(
85
+ "div",
86
+ {
87
+ className: s(
88
+ "inline-flex flex-col overflow-hidden rounded-comp-offer-card-compact-radius border border-solid border-comp-offer-card-stroke-default",
89
+ t === "promo" ? "bg-comp-offer-card-fill-promo-default" : "bg-comp-offer-card-fill-def-default",
90
+ l
91
+ ),
92
+ ...m,
93
+ children: [
94
+ /* @__PURE__ */ r("div", { className: "relative aspect-[288/162] w-full shrink-0 overflow-hidden", children: [
95
+ /* @__PURE__ */ e(
96
+ o,
97
+ {
98
+ color: a,
99
+ className: "absolute inset-0 size-full rounded-none"
100
+ }
101
+ ),
102
+ /* @__PURE__ */ r("div", { className: "absolute top-comp-offer-card-compact-p-img right-comp-offer-card-compact-p-img left-comp-offer-card-compact-p-img flex items-center justify-between", children: [
103
+ /* @__PURE__ */ e(
104
+ o,
105
+ {
106
+ color: a,
107
+ className: "h-comp-tag-h-def w-16 rounded-full"
108
+ }
109
+ ),
110
+ /* @__PURE__ */ e(
111
+ o,
112
+ {
113
+ color: a,
114
+ className: "size-comp-button-h-xs rounded-full"
115
+ }
116
+ )
117
+ ] })
118
+ ] }),
119
+ /* @__PURE__ */ r(
120
+ f,
121
+ {
122
+ direction: "column",
123
+ flex: 1,
124
+ gap: "2xs",
125
+ className: "px-comp-offer-card-compact-p pt-comp-offer-card-compact-p-top pb-comp-offer-card-compact-p",
126
+ children: [
127
+ /* @__PURE__ */ e(o, { color: a, className: "h-5 w-full" }),
128
+ /* @__PURE__ */ e(o, { color: a, className: "h-5 w-3/4" }),
129
+ /* @__PURE__ */ e(o, { color: a, className: "mt-2xs h-4 w-32" }),
130
+ /* @__PURE__ */ e(o, { color: a, className: "mt-2xs h-4 w-24" })
131
+ ]
132
+ }
133
+ )
134
+ ]
135
+ }
136
+ ) : /* @__PURE__ */ r(
137
+ "div",
138
+ {
139
+ className: s(
140
+ "inline-flex flex-row gap-comp-offer-card-search-gap",
141
+ l
142
+ ),
143
+ ...m,
144
+ children: [
145
+ /* @__PURE__ */ r("div", { className: "relative h-comp-offer-card-search-h-img w-comp-offer-card-search-w-img shrink-0 overflow-hidden rounded-comp-offer-card-search-radius-img", children: [
146
+ /* @__PURE__ */ e(
147
+ o,
148
+ {
149
+ color: a,
150
+ className: "absolute inset-0 size-full rounded-none"
151
+ }
152
+ ),
153
+ /* @__PURE__ */ e("div", { className: "absolute top-comp-offer-card-search-p-img left-comp-offer-card-search-p-img", children: /* @__PURE__ */ e(
154
+ o,
155
+ {
156
+ color: a,
157
+ className: "size-comp-button-h-xs rounded-full"
158
+ }
159
+ ) })
160
+ ] }),
161
+ /* @__PURE__ */ r(
162
+ f,
163
+ {
164
+ direction: "column",
165
+ flex: 1,
166
+ gap: "sm",
167
+ className: "min-w-0 gap-comp-offer-card-search-gap-text pt-comp-offer-card-search-p-top-text",
168
+ children: [
169
+ /* @__PURE__ */ e(o, { color: a, className: "h-5 w-full" }),
170
+ /* @__PURE__ */ e(o, { color: a, className: "h-4 w-40" }),
171
+ /* @__PURE__ */ e(o, { color: a, className: "h-4 w-32" })
172
+ ]
173
+ }
174
+ )
175
+ ]
176
+ }
177
+ );
178
+ E.displayName = "OfferCard.Skeleton";
179
+ const y = ({
180
+ image: c,
181
+ alt: a,
182
+ wrapperClassName: t,
183
+ children: l
184
+ }) => /* @__PURE__ */ r("div", { className: t, children: [
185
+ /* @__PURE__ */ e(
186
+ "div",
187
+ {
188
+ className: s(
189
+ "absolute inset-0 overflow-hidden",
190
+ "[&>img]:size-full [&>img]:object-cover",
191
+ "transition-transform duration-300 ease-out group-hover:scale-110",
192
+ "group-data-[disabled=true]:opacity-50",
193
+ "group-data-[disabled=true]:grayscale",
194
+ "group-data-[disabled=true]:group-hover:scale-100"
195
+ ),
196
+ children: typeof c == "string" ? /* @__PURE__ */ e("img", { src: c, alt: a }) : c
197
+ }
198
+ ),
199
+ l
200
+ ] });
201
+ y.displayName = "OfferCard.ImageSlot";
202
+ const L = w.forwardRef(
203
+ (c, a) => {
204
+ const {
205
+ name: t,
206
+ image: l,
207
+ imageAlt: m,
208
+ logo: i,
209
+ logoAlt: T,
210
+ category: C,
211
+ description: p,
212
+ vendor: u,
213
+ rating: b,
214
+ ratingCount: j,
215
+ favorite: B,
216
+ defaultFavorite: O,
217
+ onFavoriteChange: h,
218
+ favoriteAriaLabel: H,
219
+ showFavorite: P = !0,
220
+ variant: g = "compact",
221
+ type: W = "default",
222
+ disabled: d = !1,
223
+ asChild: _ = !1,
224
+ href: $,
225
+ className: q,
226
+ children: v,
227
+ ...G
228
+ } = c, R = m ?? t, V = T ?? `${u ?? t} logo`, J = re({ variant: g }), S = oe({ variant: g }), x = b != null, K = s(
229
+ ae({ variant: g, type: W }),
230
+ q
231
+ ), A = 'outline-none after:absolute after:inset-0 after:rounded-[inherit] after:content-[""] focus-visible:outline-none', F = /* @__PURE__ */ e(
232
+ n,
233
+ {
234
+ component: "h3",
235
+ variant: "title",
236
+ size: "base",
237
+ weight: "medium",
238
+ className: s("line-clamp-2", J),
239
+ children: t
240
+ }
241
+ ), I = _ && w.isValidElement(v) ? w.cloneElement(
242
+ v,
243
+ {
244
+ className: s(A, v.props.className),
245
+ ...d ? X : null
246
+ },
247
+ F
248
+ ) : /* @__PURE__ */ e("a", { href: d ? void 0 : $, className: A, children: F }), Y = P && /* @__PURE__ */ e(
249
+ Q,
250
+ {
251
+ active: B,
252
+ defaultActive: O,
253
+ onClick: h !== void 0 || O !== void 0 ? (se, M) => h == null ? void 0 : h(M) : void 0,
254
+ "aria-label": H,
255
+ disabled: d,
256
+ className: "relative z-10"
257
+ }
258
+ );
259
+ let N = null;
260
+ return g === "compact" ? N = /* @__PURE__ */ r(D, { children: [
261
+ /* @__PURE__ */ r("div", { className: "relative w-full shrink-0", children: [
262
+ /* @__PURE__ */ r(
263
+ y,
264
+ {
265
+ image: l,
266
+ alt: R,
267
+ wrapperClassName: "relative aspect-[288/162] w-full overflow-hidden",
268
+ children: [
269
+ /* @__PURE__ */ e(
270
+ "div",
271
+ {
272
+ "aria-hidden": "true",
273
+ className: "absolute inset-0 bg-gradient-to-t from-black/0 from-50% to-black/70"
274
+ }
275
+ ),
276
+ /* @__PURE__ */ r("div", { className: "absolute top-comp-offer-card-compact-p-img right-comp-offer-card-compact-p-img left-comp-offer-card-compact-p-img flex items-start justify-between gap-sm", children: [
277
+ C ? /* @__PURE__ */ e(
278
+ Z,
279
+ {
280
+ variant: "invert",
281
+ className: "min-w-[50px] shrink overflow-hidden",
282
+ children: C
283
+ }
284
+ ) : /* @__PURE__ */ e("span", {}),
285
+ Y
286
+ ] })
287
+ ]
288
+ }
289
+ ),
290
+ i && /* @__PURE__ */ e(
291
+ "div",
292
+ {
293
+ className: s(
294
+ "pointer-events-none absolute bottom-comp-offer-card-compact-logo-y left-comp-offer-card-compact-logo-x z-10 size-comp-offer-card-compact-logo-size overflow-hidden rounded-full border-2 border-stroke-base-secondary bg-comp-offer-card-fill-def-default",
295
+ "[&>img]:size-full [&>img]:object-cover",
296
+ "group-data-[disabled=true]:grayscale"
297
+ ),
298
+ children: typeof i == "string" ? /* @__PURE__ */ e("img", { src: i, alt: V }) : i
299
+ }
300
+ )
301
+ ] }),
302
+ /* @__PURE__ */ r(
303
+ f,
304
+ {
305
+ direction: "column",
306
+ flex: 1,
307
+ gap: "2xs",
308
+ className: "px-comp-offer-card-compact-p pt-comp-offer-card-compact-p-top pb-comp-offer-card-compact-p",
309
+ children: [
310
+ I,
311
+ x && /* @__PURE__ */ e(
312
+ k,
313
+ {
314
+ rating: b,
315
+ ratingCount: j,
316
+ disabled: d
317
+ }
318
+ ),
319
+ p && /* @__PURE__ */ e(
320
+ n,
321
+ {
322
+ component: "span",
323
+ variant: "body",
324
+ size: "sm",
325
+ weight: "regular",
326
+ fixY: !0,
327
+ className: S,
328
+ children: p
329
+ }
330
+ )
331
+ ]
332
+ }
333
+ )
334
+ ] }) : N = /* @__PURE__ */ r(D, { children: [
335
+ /* @__PURE__ */ r(
336
+ y,
337
+ {
338
+ image: l,
339
+ alt: R,
340
+ wrapperClassName: "relative shrink-0 overflow-hidden rounded-comp-offer-card-search-radius-img h-comp-offer-card-search-h-img w-comp-offer-card-search-w-img",
341
+ children: [
342
+ /* @__PURE__ */ e(
343
+ "div",
344
+ {
345
+ "aria-hidden": "true",
346
+ className: "absolute inset-0 bg-gradient-to-b from-black/50 to-black/0 to-50%"
347
+ }
348
+ ),
349
+ i && /* @__PURE__ */ e("div", { className: "pointer-events-none absolute inset-0 flex items-center justify-center bg-surface-base-overlay", children: /* @__PURE__ */ e("div", { className: "size-comp-offer-card-search-logo-size overflow-hidden rounded-full border-(length:--spacing-comp-offer-card-search-logo-stroke) border-solid border-stroke-base-secondary group-data-[disabled=true]:grayscale [&>img]:size-full [&>img]:object-cover", children: typeof i == "string" ? /* @__PURE__ */ e("img", { src: i, alt: V }) : i }) }),
350
+ /* @__PURE__ */ e("div", { className: "absolute top-comp-offer-card-search-p-img left-comp-offer-card-search-p-img", children: Y })
351
+ ]
352
+ }
353
+ ),
354
+ /* @__PURE__ */ r(
355
+ f,
356
+ {
357
+ direction: "column",
358
+ flex: 1,
359
+ className: "min-w-0 gap-comp-offer-card-search-gap-text pt-comp-offer-card-search-p-top-text",
360
+ children: [
361
+ I,
362
+ /* @__PURE__ */ r(f, { align: "center", gap: "sm", wrap: "wrap", children: [
363
+ u && /* @__PURE__ */ e(
364
+ n,
365
+ {
366
+ component: "span",
367
+ variant: "body",
368
+ size: "base",
369
+ weight: "regular",
370
+ fixY: !0,
371
+ className: s(
372
+ d ? "text-text-dark-disabled" : "text-text-dark-primary-def"
373
+ ),
374
+ children: u
375
+ }
376
+ ),
377
+ u && x && /* @__PURE__ */ e(ee, {}),
378
+ x && /* @__PURE__ */ e(
379
+ k,
380
+ {
381
+ rating: b,
382
+ ratingCount: j,
383
+ disabled: d
384
+ }
385
+ )
386
+ ] }),
387
+ p && /* @__PURE__ */ e(
388
+ n,
389
+ {
390
+ component: "span",
391
+ variant: "body",
392
+ size: "sm",
393
+ weight: "regular",
394
+ fixY: !0,
395
+ className: S,
396
+ children: p
397
+ }
398
+ )
399
+ ]
400
+ }
401
+ )
402
+ ] }), /* @__PURE__ */ e(
403
+ "div",
404
+ {
405
+ ref: a,
406
+ className: K,
407
+ "data-disabled": d || void 0,
408
+ "aria-disabled": d || void 0,
409
+ ...G,
410
+ children: N
411
+ }
412
+ );
413
+ }
414
+ );
415
+ L.displayName = "OfferCard";
416
+ const te = L;
417
+ te.Skeleton = E;
418
+ export {
419
+ te as OfferCard,
420
+ oe as offerCardDescriptionVariants,
421
+ re as offerCardTitleVariants,
422
+ ae as offerCardVariants
423
+ };
@@ -0,0 +1,15 @@
1
+ import { Meta, StoryObj } from '@storybook/react-vite';
2
+ import { OfferCard } from './OfferCard';
3
+ declare const meta: Meta<typeof OfferCard>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof OfferCard>;
6
+ export declare const Compact: Story;
7
+ export declare const CompactSkeleton: Story;
8
+ export declare const CompactPromo: Story;
9
+ export declare const CompactPromoSkeleton: Story;
10
+ export declare const Search: Story;
11
+ export declare const SearchSkeleton: Story;
12
+ export declare const WithFavoriteControlled: Story;
13
+ export declare const WithFavoriteNonInteractive: Story;
14
+ export declare const AsChildLink: Story;
15
+ //# sourceMappingURL=OfferCard.stories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OfferCard.stories.d.ts","sourceRoot":"","sources":["../../../src/components/OfferCard/OfferCard.stories.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAE3D,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAyIvC,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,SAAS,CAiDhC,CAAA;AAED,eAAe,IAAI,CAAA;AACnB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,SAAS,CAAC,CAAA;AAEvC,eAAO,MAAM,OAAO,EAAE,KA0BrB,CAAA;AAED,eAAO,MAAM,eAAe,EAAE,KAgB7B,CAAA;AAED,eAAO,MAAM,YAAY,EAAE,KA2B1B,CAAA;AAED,eAAO,MAAM,oBAAoB,EAAE,KAgBlC,CAAA;AAED,eAAO,MAAM,MAAM,EAAE,KA4BpB,CAAA;AAED,eAAO,MAAM,cAAc,EAAE,KAgB5B,CAAA;AAED,eAAO,MAAM,sBAAsB,EAAE,KAyBpC,CAAA;AAED,eAAO,MAAM,0BAA0B,EAAE,KAmBxC,CAAA;AAED,eAAO,MAAM,WAAW,EAAE,KAuBzB,CAAA"}
@@ -0,0 +1,2 @@
1
+ export * from './OfferCard';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/OfferCard/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA"}
@@ -0,0 +1,53 @@
1
+ import { VariantProps } from 'class-variance-authority';
2
+ import * as React from 'react';
3
+ /**
4
+ * Stepped responsive widths for the shared page column, matching
5
+ * `UniversalFooter`:
6
+ * - `< lg` (mobile/tablet): gutters to the standard page padding so the column
7
+ * never touches the viewport edge.
8
+ * - `< xl` (small desktop): 936px (`58.5rem`)
9
+ * - `< 2xl` (desktop): 1200px (`75rem`)
10
+ * - `≥ 2xl` (wide): 1500px (`93.75rem`)
11
+ *
12
+ * `spacingType` decides *how* the column is realised:
13
+ * - `margin` (default) — a centered, capped column (`max-w-*` + `mx-auto`).
14
+ * Nest it inside a separate full-width band whose background/border spans the
15
+ * viewport.
16
+ * - `padding` — the element spans full width itself and insets its content to
17
+ * the same column via symmetric horizontal padding. Use it when one element
18
+ * must be *both* the full-width band and the column — e.g. a header bar that
19
+ * draws its own bottom border — instead of nesting a centered column inside a
20
+ * separate wrapper.
21
+ *
22
+ * Each variant spells every utility out literally: Tailwind 4's scanner only
23
+ * emits utilities it sees verbatim in source, so the widths can't be factored
24
+ * into shared constants — keep the two `spacingType`s' steps in sync by hand.
25
+ */
26
+ export declare const pageContainerVariants: (props?: ({
27
+ spacingType?: "padding" | "margin" | null | undefined;
28
+ } & import('class-variance-authority/types').ClassProp) | undefined) => string;
29
+ /**
30
+ * Props for {@link PageContainer} — the shared stepped-width page column.
31
+ * Extends the native `div` attributes (forwarded to the rendered element) and
32
+ * the `spacingType` cva variant documented on {@link pageContainerVariants}.
33
+ */
34
+ export interface PageContainerProps extends React.HTMLAttributes<HTMLDivElement>, VariantProps<typeof pageContainerVariants> {
35
+ /**
36
+ * Element to render. Use a semantic element (`header`, `nav`, `main`) when
37
+ * the container *is* a page landmark — especially with `spacingType="padding"`,
38
+ * where the container is the band itself.
39
+ *
40
+ * @default 'div'
41
+ */
42
+ component?: 'div' | 'main' | 'header' | 'nav' | 'section' | 'footer';
43
+ }
44
+ /**
45
+ * Aligns content to the shared stepped-width page column so every page band
46
+ * (header nav, coloured sections, footer) lines up to the same gutters at every
47
+ * breakpoint. Pick `spacingType` by whether the element is nested inside a
48
+ * full-width band (`margin`) or *is* the band itself (`padding`). Add layout
49
+ * utilities (e.g. `flex`, `gap-*`) via `className`.
50
+ */
51
+ declare const PageContainer: React.ForwardRefExoticComponent<PageContainerProps & React.RefAttributes<HTMLElement>>;
52
+ export { PageContainer };
53
+ //# sourceMappingURL=PageContainer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PageContainer.d.ts","sourceRoot":"","sources":["../../../src/components/PageContainer/PageContainer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,KAAK,YAAY,EAAO,MAAM,0BAA0B,CAAA;AAGjE;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,eAAO,MAAM,qBAAqB;;8EAuBhC,CAAA;AAEF;;;;GAIG;AACH,MAAM,WAAW,kBACf,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,EAC1C,YAAY,CAAC,OAAO,qBAAqB,CAAC;IAC5C;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,GAAG,SAAS,GAAG,QAAQ,CAAA;CACrE;AAED;;;;;;GAMG;AACH,QAAA,MAAM,aAAa,wFASlB,CAAA;AAGD,OAAO,EAAE,aAAa,EAAE,CAAA"}
@@ -0,0 +1,49 @@
1
+ import * as a from "react";
2
+ import { cva as o } from "class-variance-authority";
3
+ import { cn as c } from "../../utils/cn.js";
4
+ const p = o("", {
5
+ variants: {
6
+ spacingType: {
7
+ // Centered, capped column — one `max-w` step per breakpoint.
8
+ margin: [
9
+ "mx-auto w-full",
10
+ "max-lg:max-w-[calc(100%-2*var(--spacing-layout-p-standard))]",
11
+ // < lg: gutter
12
+ "max-xl:max-w-[58.5rem]",
13
+ // < xl: 936px
14
+ "max-w-[75rem]",
15
+ // < 2xl: 1200px
16
+ "2xl:max-w-[93.75rem]"
17
+ // ≥ 2xl: 1500px
18
+ ],
19
+ // Full-width band that pads its content to the same column — one
20
+ // symmetric `px` step per breakpoint, mirroring the `margin` widths.
21
+ padding: [
22
+ "w-full overflow-x-hidden",
23
+ "max-lg:px-layout-p-standard",
24
+ // < lg: gutter
25
+ "max-xl:px-[calc((100%-58.5rem)/2)]",
26
+ // < xl: 936px centered
27
+ "px-[calc((100%-75rem)/2)]",
28
+ // < 2xl: 1200px centered
29
+ "2xl:px-[calc((100%-93.75rem)/2)]"
30
+ // ≥ 2xl: 1500px centered
31
+ ]
32
+ }
33
+ },
34
+ defaultVariants: { spacingType: "margin" }
35
+ }), x = a.forwardRef(
36
+ ({ className: r, spacingType: e, component: m, ...n }, t) => {
37
+ const l = m ?? "div";
38
+ return a.createElement(l, {
39
+ ref: t,
40
+ className: c(p({ spacingType: e }), r),
41
+ ...n
42
+ });
43
+ }
44
+ );
45
+ x.displayName = "PageContainer";
46
+ export {
47
+ x as PageContainer,
48
+ p as pageContainerVariants
49
+ };
@@ -0,0 +1,14 @@
1
+ import { Meta, StoryObj } from '@storybook/react-vite';
2
+ import { PageContainer } from './PageContainer';
3
+ declare const meta: Meta<typeof PageContainer>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof PageContainer>;
6
+ export declare const Aligned: Story;
7
+ /**
8
+ * Full storefront page — the `MarketNav` and `CarouselSection` examples plus the
9
+ * library `UniversalFooter`, stacked. All three route their content through the
10
+ * shared stepped-width column, so the nav logo, the section heading and the
11
+ * footer content all line up to the same gutters at every breakpoint.
12
+ */
13
+ export declare const FullPage: Story;
14
+ //# sourceMappingURL=PageContainer.stories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PageContainer.stories.d.ts","sourceRoot":"","sources":["../../../src/components/PageContainer/PageContainer.stories.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAwC3D,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAE/C,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,aAAa,CA6BpC,CAAA;AAED,eAAe,IAAI,CAAA;AACnB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,aAAa,CAAC,CAAA;AAE3C,eAAO,MAAM,OAAO,EAAE,KAarB,CAAA;AAuHD;;;;;GAKG;AACH,eAAO,MAAM,QAAQ,EAAE,KA+BtB,CAAA"}
@@ -0,0 +1,2 @@
1
+ export * from './PageContainer';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/PageContainer/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAA"}