commerce-toolkit 0.0.41 → 0.1.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 (61) hide show
  1. package/dist/banner-dismiss-DTT0uoeG.js.map +1 -1
  2. package/dist/banner-dismiss-DfFezmDg.cjs.map +1 -1
  3. package/dist/{blog-post-card-author-Cwm4afzF.js → blog-post-card-author-CD_eplIv.js} +24 -23
  4. package/dist/blog-post-card-author-CD_eplIv.js.map +1 -0
  5. package/dist/blog-post-card-author-D4zo7N_N.cjs +2 -0
  6. package/dist/blog-post-card-author-D4zo7N_N.cjs.map +1 -0
  7. package/dist/blog-post-card.cjs +1 -1
  8. package/dist/blog-post-card.js +1 -1
  9. package/dist/category-card.cjs +2 -0
  10. package/dist/category-card.cjs.map +1 -0
  11. package/dist/category-card.js +233 -0
  12. package/dist/category-card.js.map +1 -0
  13. package/dist/components/banner/primitives/banner-provider.d.ts.map +1 -1
  14. package/dist/components/blog-post-card/primitives/blog-post-card-fallback.d.ts.map +1 -1
  15. package/dist/components/category-card/category-card.d.ts +42 -0
  16. package/dist/components/category-card/category-card.d.ts.map +1 -0
  17. package/dist/components/category-card/index.d.ts +3 -0
  18. package/dist/components/category-card/index.d.ts.map +1 -0
  19. package/dist/components/category-card/primitives/category-card-fallback.d.ts +4 -0
  20. package/dist/components/category-card/primitives/category-card-fallback.d.ts.map +1 -0
  21. package/dist/components/category-card/primitives/category-card-icon.d.ts +5 -0
  22. package/dist/components/category-card/primitives/category-card-icon.d.ts.map +1 -0
  23. package/dist/components/category-card/primitives/category-card-image.d.ts +6 -0
  24. package/dist/components/category-card/primitives/category-card-image.d.ts.map +1 -0
  25. package/dist/components/category-card/primitives/category-card-link.d.ts +6 -0
  26. package/dist/components/category-card/primitives/category-card-link.d.ts.map +1 -0
  27. package/dist/components/category-card/primitives/category-card-overlay.d.ts +4 -0
  28. package/dist/components/category-card/primitives/category-card-overlay.d.ts.map +1 -0
  29. package/dist/components/category-card/primitives/category-card-root.d.ts +21 -0
  30. package/dist/components/category-card/primitives/category-card-root.d.ts.map +1 -0
  31. package/dist/components/category-card/primitives/category-card-skeleton.d.ts +4 -0
  32. package/dist/components/category-card/primitives/category-card-skeleton.d.ts.map +1 -0
  33. package/dist/components/category-card/primitives/category-card-thumbnail.d.ts +4 -0
  34. package/dist/components/category-card/primitives/category-card-thumbnail.d.ts.map +1 -0
  35. package/dist/components/category-card/primitives/category-card-title.d.ts +4 -0
  36. package/dist/components/category-card/primitives/category-card-title.d.ts.map +1 -0
  37. package/dist/components/category-card/primitives.d.ts +10 -0
  38. package/dist/components/category-card/primitives.d.ts.map +1 -0
  39. package/dist/components/product-card/primitives/product-card-compare.d.ts.map +1 -1
  40. package/dist/components/product-card/primitives/product-card-fallback.d.ts.map +1 -1
  41. package/dist/components/product-card/primitives/product-card-link.d.ts.map +1 -1
  42. package/dist/components/rating/primitives/rating-root.d.ts.map +1 -1
  43. package/dist/components/reveal/primitives/reveal-root.d.ts.map +1 -1
  44. package/dist/index.cjs +1 -1
  45. package/dist/index.js +1 -1
  46. package/dist/offset-pagination.cjs +2 -0
  47. package/dist/offset-pagination.cjs.map +1 -0
  48. package/dist/offset-pagination.js +79 -0
  49. package/dist/offset-pagination.js.map +1 -0
  50. package/dist/product-card.cjs +1 -1
  51. package/dist/product-card.cjs.map +1 -1
  52. package/dist/product-card.js +84 -82
  53. package/dist/product-card.js.map +1 -1
  54. package/dist/rating-value-CkSY9Pyr.cjs.map +1 -1
  55. package/dist/rating-value-DBtmrorI.js.map +1 -1
  56. package/dist/reveal-trigger-C-dcymoc.js.map +1 -1
  57. package/dist/reveal-trigger-XpH07-oH.cjs.map +1 -1
  58. package/package.json +21 -1
  59. package/dist/blog-post-card-author-BGqy41Da.cjs +0 -2
  60. package/dist/blog-post-card-author-BGqy41Da.cjs.map +0 -1
  61. package/dist/blog-post-card-author-Cwm4afzF.js.map +0 -1
@@ -12,26 +12,26 @@ import y from "./check-ChGAB_3v.js";
12
12
  import { P as R } from "./index-BzgbBl8b.js";
13
13
  const m = v(void 0);
14
14
  function z({
15
- className: t,
15
+ className: r,
16
16
  children: a,
17
- as: r,
17
+ as: t,
18
18
  colorScheme: e = "light",
19
- aspectRatio: s = "5:6",
19
+ aspectRatio: d = "5:6",
20
20
  ...n
21
21
  }) {
22
- const p = r ?? "article", h = g(
22
+ const p = t ?? "article", h = g(
23
23
  () => ({
24
24
  colorScheme: e,
25
- aspectRatio: s
25
+ aspectRatio: d
26
26
  }),
27
- [e, s]
27
+ [e, d]
28
28
  );
29
29
  return /* @__PURE__ */ o(m.Provider, { value: h, children: /* @__PURE__ */ o(
30
30
  p,
31
31
  {
32
32
  className: c(
33
33
  "group w-full max-w-md font-[var(--product-card-font-family,var(--font-family-body))] @container",
34
- t
34
+ r
35
35
  ),
36
36
  "data-slot": "product-card-root",
37
37
  ...n,
@@ -39,20 +39,20 @@ function z({
39
39
  }
40
40
  ) });
41
41
  }
42
- function d() {
43
- const t = x(m);
44
- if (t === void 0)
42
+ function s() {
43
+ const r = x(m);
44
+ if (r === void 0)
45
45
  throw new Error("useProductCard must be used within an ProductCardRoot");
46
- return t;
46
+ return r;
47
47
  }
48
- function G({ className: t, children: a, ...r }) {
49
- return /* @__PURE__ */ o("div", { className: c("relative", t), "data-slot": "product-card-content", ...r, children: a });
48
+ function G({ className: r, children: a, ...t }) {
49
+ return /* @__PURE__ */ o("div", { className: c("relative", r), "data-slot": "product-card-content", ...t, children: a });
50
50
  }
51
- function J({ className: t, children: a, ...r }) {
52
- return /* @__PURE__ */ o("div", { className: c("relative", t), "data-slot": "product-card-preview", ...r, children: a });
51
+ function J({ className: r, children: a, ...t }) {
52
+ return /* @__PURE__ */ o("div", { className: c("relative", r), "data-slot": "product-card-preview", ...t, children: a });
53
53
  }
54
- function K({ className: t, children: a, ...r }) {
55
- const { aspectRatio: e, colorScheme: s } = d();
54
+ function K({ className: r, children: a, ...t }) {
55
+ const { aspectRatio: e, colorScheme: d } = s();
56
56
  return /* @__PURE__ */ o(
57
57
  "div",
58
58
  {
@@ -66,86 +66,88 @@ function K({ className: t, children: a, ...r }) {
66
66
  {
67
67
  light: "bg-[var(--product-card-light-background,hsl(var(--contrast-100)))]",
68
68
  dark: "bg-[var(--product-card-dark-background,hsl(var(--contrast-500)))]"
69
- }[s],
70
- t
69
+ }[d],
70
+ r
71
71
  ),
72
72
  "data-slot": "product-card-thumbnail",
73
- ...r,
73
+ ...t,
74
74
  children: a
75
75
  }
76
76
  );
77
77
  }
78
78
  function O({
79
- className: t,
79
+ className: r,
80
80
  children: a,
81
- asChild: r = !1,
81
+ asChild: t = !1,
82
82
  ...e
83
83
  }) {
84
- const { colorScheme: s } = d();
84
+ const { colorScheme: d } = s();
85
85
  return /* @__PURE__ */ o(
86
- r ? i : "img",
86
+ t ? i : "img",
87
87
  {
88
88
  className: c(
89
- "w-full scale-100 select-none object-cover transition-transform duration-500 ease-out group-hover:scale-110",
89
+ "h-full w-full scale-100 select-none object-cover transition-transform duration-500 ease-out group-hover:scale-110",
90
90
  {
91
91
  light: "bg-[var(--product-card-light-background,hsl(var(--contrast-100)))]",
92
92
  dark: "bg-[var(--product-card-dark-background,hsl(var(--contrast-500)))]"
93
- }[s],
94
- t
93
+ }[d],
94
+ r
95
95
  ),
96
96
  "data-slot": "product-card-image",
97
97
  ...e
98
98
  }
99
99
  );
100
100
  }
101
- function Q({ className: t, children: a, ...r }) {
101
+ function Q({ className: r, children: a, ...t }) {
102
102
  return /* @__PURE__ */ o(
103
103
  P,
104
104
  {
105
- className: c("absolute left-3 top-3", t),
105
+ className: c("absolute left-3 top-3", r),
106
106
  "data-slot": "product-card-badge",
107
107
  shape: "rounded",
108
- ...r,
108
+ ...t,
109
109
  children: a
110
110
  }
111
111
  );
112
112
  }
113
- function U({ className: t, children: a, ...r }) {
114
- const { colorScheme: e } = d();
113
+ function U({ className: r, children: a, ...t }) {
114
+ const { colorScheme: e } = s();
115
115
  return /* @__PURE__ */ o(
116
116
  "div",
117
117
  {
118
118
  className: c(
119
- "break-words p-4 text-4xl font-bold leading-none tracking-tighter transition-transform duration-500 ease-out [color:var(--blog-post-card-empty-text,color-mix(in_oklab,hsl(var(--foreground))_15%,transparent))] group-hover:scale-105",
119
+ "break-words p-4 text-4xl font-bold leading-none tracking-tight transition-transform duration-500 ease-out group-hover:scale-105",
120
120
  {
121
- light: "text-[var(--product-card-light-title,hsl(var(--foreground)))]",
122
- dark: "text-[var(--product-card-dark-title,hsl(var(--background)))]"
123
- }[e]
121
+ light: "[color:color-mix(in_oklab,hsl(var(--foreground))_30%,transparent)]",
122
+ dark: "[color:color-mix(in_oklab,hsl(var(--background))_30%,transparent)]"
123
+ }[e],
124
+ r
124
125
  ),
125
126
  "data-slot": "product-card-fallback",
126
- ...r,
127
+ ...t,
127
128
  children: a
128
129
  }
129
130
  );
130
131
  }
131
- function W({ asChild: t = !1, className: a, ...r }) {
132
- const { colorScheme: e } = d();
132
+ function W({ asChild: r = !1, className: a, ...t }) {
133
+ const { colorScheme: e } = s();
133
134
  return /* @__PURE__ */ o(
134
- t ? i : "a",
135
+ r ? i : "a",
135
136
  {
136
137
  className: c(
137
138
  "absolute inset-0 rounded-[var(--product-card-border-radius,1rem)] focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--product-card-focus,hsl(var(--primary)))] focus-visible:ring-offset-4",
138
139
  {
139
140
  light: "ring-offset-[var(--product-card-light-offset,hsl(var(--background)))]",
140
141
  dark: "ring-offset-[var(--product-card-dark-offset,hsl(var(--foreground)))]"
141
- }[e]
142
+ }[e],
143
+ a
142
144
  ),
143
145
  "data-slot": "product-card-link",
144
- ...r
146
+ ...t
145
147
  }
146
148
  );
147
149
  }
148
- function X({ children: t, className: a, ...r }) {
150
+ function X({ children: r, className: a, ...t }) {
149
151
  return /* @__PURE__ */ o(
150
152
  "div",
151
153
  {
@@ -154,24 +156,24 @@ function X({ children: t, className: a, ...r }) {
154
156
  a
155
157
  ),
156
158
  "data-slot": "product-card-details",
157
- ...r,
158
- children: t
159
+ ...t,
160
+ children: r
159
161
  }
160
162
  );
161
163
  }
162
- function Y({ children: t, className: a, ...r }) {
164
+ function Y({ children: r, className: a, ...t }) {
163
165
  return /* @__PURE__ */ o(
164
166
  "div",
165
167
  {
166
168
  className: c("relative flex-1 text-sm @[16rem]:text-base", a),
167
169
  "data-slot": "product-card-header",
168
- ...r,
169
- children: t
170
+ ...t,
171
+ children: r
170
172
  }
171
173
  );
172
174
  }
173
- function Z({ className: t, children: a, ...r }) {
174
- const { colorScheme: e } = d();
175
+ function Z({ className: r, children: a, ...t }) {
176
+ const { colorScheme: e } = s();
175
177
  return /* @__PURE__ */ o(
176
178
  "h3",
177
179
  {
@@ -183,13 +185,13 @@ function Z({ className: t, children: a, ...r }) {
183
185
  }[e]
184
186
  ),
185
187
  "data-slot": "product-card-title",
186
- ...r,
188
+ ...t,
187
189
  children: a
188
190
  }
189
191
  );
190
192
  }
191
- function rr({ children: t, className: a, ...r }) {
192
- const { colorScheme: e } = d();
193
+ function rr({ children: r, className: a, ...t }) {
194
+ const { colorScheme: e } = s();
193
195
  return /* @__PURE__ */ o(
194
196
  "span",
195
197
  {
@@ -202,27 +204,27 @@ function rr({ children: t, className: a, ...r }) {
202
204
  a
203
205
  ),
204
206
  "data-slot": "product-card-subtitle",
205
- ...r,
206
- children: t
207
+ ...t,
208
+ children: r
207
209
  }
208
210
  );
209
211
  }
210
- function tr({ className: t, price: a, ...r }) {
211
- const { colorScheme: e } = d();
212
+ function tr({ className: r, price: a, ...t }) {
213
+ const { colorScheme: e } = s();
212
214
  return /* @__PURE__ */ o(
213
215
  N,
214
216
  {
215
- className: c("mt-2", t),
217
+ className: c("mt-2", r),
216
218
  colorScheme: e,
217
219
  "data-slot": "product-card-price",
218
220
  price: a,
219
- ...r
221
+ ...t
220
222
  }
221
223
  );
222
224
  }
223
- function ar({ className: t, ...a }) {
224
- const { aspectRatio: r } = d();
225
- return /* @__PURE__ */ u(S, { className: c(t), "data-slot": "product-card-skeleton", ...a, children: [
225
+ function ar({ className: r, ...a }) {
226
+ const { aspectRatio: t } = s();
227
+ return /* @__PURE__ */ u(S, { className: c(r), "data-slot": "product-card-skeleton", ...a, children: [
226
228
  /* @__PURE__ */ o(
227
229
  w,
228
230
  {
@@ -232,7 +234,7 @@ function ar({ className: t, ...a }) {
232
234
  "5:6": "aspect-[5/6]",
233
235
  "3:4": "aspect-[3/4]",
234
236
  "1:1": "aspect-square"
235
- }[r]
237
+ }[t]
236
238
  )
237
239
  }
238
240
  ),
@@ -243,39 +245,39 @@ function ar({ className: t, ...a }) {
243
245
  ] }) })
244
246
  ] });
245
247
  }
246
- function or({ className: t, children: a, ...r }) {
248
+ function or({ className: r, children: a, ...t }) {
247
249
  return /* @__PURE__ */ o(
248
250
  "div",
249
251
  {
250
252
  className: c(
251
253
  "font-(family-name:--checkbox-font-family,var(--font-family-body)) flex shrink-0 items-center gap-2",
252
- t
254
+ r
253
255
  ),
254
256
  "data-slot": "product-card-compare",
255
- ...r,
257
+ ...t,
256
258
  children: a
257
259
  }
258
260
  );
259
261
  }
260
- function L({ className: t, colorScheme: a = "light", ...r }) {
261
- return /* @__PURE__ */ o(k, { className: t, colorScheme: a, ...r, children: /* @__PURE__ */ o(C, { children: /* @__PURE__ */ o(y, { className: "h-4 w-4", color: "currentColor" }) }) });
262
+ function _({ className: r, colorScheme: a = "light", ...t }) {
263
+ return /* @__PURE__ */ o(k, { className: r, colorScheme: a, ...t, children: /* @__PURE__ */ o(C, { children: /* @__PURE__ */ o(y, { className: "h-4 w-4", color: "currentColor" }) }) });
262
264
  }
263
- function er({ className: t, ...a }) {
264
- return /* @__PURE__ */ o(L, { className: c(t), "data-slot": "product-card-checkbox", ...a });
265
+ function er({ className: r, ...a }) {
266
+ return /* @__PURE__ */ o(_, { className: c(r), "data-slot": "product-card-checkbox", ...a });
265
267
  }
266
- var _ = "Label", f = b.forwardRef((t, a) => /* @__PURE__ */ o(
268
+ var L = "Label", f = b.forwardRef((r, a) => /* @__PURE__ */ o(
267
269
  R.label,
268
270
  {
269
- ...t,
271
+ ...r,
270
272
  ref: a,
271
- onMouseDown: (r) => {
272
- r.target.closest("button, input, select, textarea") || (t.onMouseDown?.(r), !r.defaultPrevented && r.detail > 1 && r.preventDefault());
273
+ onMouseDown: (t) => {
274
+ t.target.closest("button, input, select, textarea") || (r.onMouseDown?.(t), !t.defaultPrevented && t.detail > 1 && t.preventDefault());
273
275
  }
274
276
  }
275
277
  ));
276
- f.displayName = _;
278
+ f.displayName = L;
277
279
  var B = f;
278
- function D({ className: t, children: a, colorScheme: r = "light", ...e }) {
280
+ function D({ className: r, children: a, colorScheme: t = "light", ...e }) {
279
281
  return /* @__PURE__ */ o(
280
282
  B,
281
283
  {
@@ -284,7 +286,7 @@ function D({ className: t, children: a, colorScheme: r = "light", ...e }) {
284
286
  {
285
287
  light: "text-[var(--checkbox-light-label,hsl(var(--foreground)))]",
286
288
  dark: "text-[var(--checkbox-dark-label,hsl(var(--background)))]"
287
- }[r]
289
+ }[t]
288
290
  ),
289
291
  "data-slot": "label",
290
292
  ...e,
@@ -292,15 +294,15 @@ function D({ className: t, children: a, colorScheme: r = "light", ...e }) {
292
294
  }
293
295
  );
294
296
  }
295
- function cr({ className: t, children: a, ...r }) {
296
- const { colorScheme: e } = d();
297
+ function cr({ className: r, children: a, ...t }) {
298
+ const { colorScheme: e } = s();
297
299
  return /* @__PURE__ */ o(
298
300
  D,
299
301
  {
300
- className: c(t),
302
+ className: c(r),
301
303
  colorScheme: e,
302
304
  "data-slot": "product-card-label",
303
- ...r,
305
+ ...t,
304
306
  children: a
305
307
  }
306
308
  );
@@ -323,6 +325,6 @@ export {
323
325
  rr as Subtitle,
324
326
  K as Thumbnail,
325
327
  Z as Title,
326
- d as useProductCard
328
+ s as useProductCard
327
329
  };
328
330
  //# sourceMappingURL=product-card.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"product-card.js","sources":["../src/components/product-card/primitives/product-card-root.tsx","../src/components/product-card/primitives/product-card-content.tsx","../src/components/product-card/primitives/product-card-preview.tsx","../src/components/product-card/primitives/product-card-thumbnail.tsx","../src/components/product-card/primitives/product-card-image.tsx","../src/components/product-card/primitives/product-card-badge.tsx","../src/components/product-card/primitives/product-card-fallback.tsx","../src/components/product-card/primitives/product-card-link.tsx","../src/components/product-card/primitives/product-card-details.tsx","../src/components/product-card/primitives/product-card-header.tsx","../src/components/product-card/primitives/product-card-title.tsx","../src/components/product-card/primitives/product-card-subtitle.tsx","../src/components/product-card/primitives/product-card-price.tsx","../src/components/product-card/primitives/product-card-skeleton.tsx","../src/components/product-card/primitives/product-card-compare.tsx","../src/components/checkbox/checkbox.tsx","../src/components/product-card/primitives/product-card-checkbox.tsx","../node_modules/.pnpm/@radix-ui+react-label@2.1.7_@types+react-dom@19.2.2_@types+react@19.2.2__@types+react@19.2.2__h3esd6u5mwikxnlir43mok2s5m/node_modules/@radix-ui/react-label/dist/index.mjs","../src/components/label/label.tsx","../src/components/product-card/primitives/product-card-label.tsx"],"sourcesContent":["'use client';\n\nimport { createContext, use, useMemo } from 'react';\nimport type { ComponentProps, ElementType } from 'react';\n\nimport { cn } from '@/lib';\n\ninterface ProductCardContext {\n colorScheme: 'light' | 'dark';\n aspectRatio: '5:6' | '3:4' | '1:1';\n}\n\nexport const ProductCardContext = createContext<ProductCardContext | undefined>(undefined);\n\nexport type ProductCardRootProps<E extends ElementType = 'article'> = Omit<\n ComponentProps<E>,\n 'as'\n> & {\n as?: E;\n colorScheme?: 'light' | 'dark';\n aspectRatio?: '5:6' | '3:4' | '1:1';\n};\n\nexport function ProductCardRoot<T extends ElementType = 'article'>({\n className,\n children,\n as,\n colorScheme = 'light',\n aspectRatio = '5:6',\n ...props\n}: ProductCardRootProps<T>) {\n const ProductCardRootElement = as ?? 'article';\n\n const contextValues = useMemo(\n () => ({\n colorScheme,\n aspectRatio,\n }),\n [colorScheme, aspectRatio],\n );\n\n return (\n <ProductCardContext.Provider value={contextValues}>\n <ProductCardRootElement\n className={cn(\n 'group w-full max-w-md font-[var(--product-card-font-family,var(--font-family-body))] @container',\n className,\n )}\n data-slot=\"product-card-root\"\n {...props}\n >\n {children}\n </ProductCardRootElement>\n </ProductCardContext.Provider>\n );\n}\n\nexport function useProductCard() {\n const context = use(ProductCardContext);\n\n if (context === undefined) {\n throw new Error('useProductCard must be used within an ProductCardRoot');\n }\n\n return context;\n}\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '@/lib';\n\nexport type ProductCardContentProps = ComponentProps<'div'>;\n\nexport function ProductCardContent({ className, children, ...props }: ProductCardContentProps) {\n return (\n <div className={cn('relative', className)} data-slot=\"product-card-content\" {...props}>\n {children}\n </div>\n );\n}\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '@/lib';\n\nexport type ProductCardPreviewProps = ComponentProps<'div'>;\n\nexport function ProductCardPreview({ className, children, ...props }: ProductCardPreviewProps) {\n return (\n <div className={cn('relative', className)} data-slot=\"product-card-preview\" {...props}>\n {children}\n </div>\n );\n}\n","'use client';\n\nimport type { ComponentProps } from 'react';\n\nimport { useProductCard } from '@/components/product-card';\nimport { cn } from '@/lib';\n\nexport type ProductCardThumbnailProps = ComponentProps<'div'>;\n\nexport function ProductCardThumbnail({ className, children, ...props }: ProductCardThumbnailProps) {\n const { aspectRatio, colorScheme } = useProductCard();\n\n return (\n <div\n className={cn(\n 'relative overflow-hidden rounded-[var(--product-card-border-radius,1rem)]',\n {\n '5:6': 'aspect-[5/6]',\n '3:4': 'aspect-[3/4]',\n '1:1': 'aspect-square',\n }[aspectRatio],\n {\n light: 'bg-[var(--product-card-light-background,hsl(var(--contrast-100)))]',\n dark: 'bg-[var(--product-card-dark-background,hsl(var(--contrast-500)))]',\n }[colorScheme],\n className,\n )}\n data-slot=\"product-card-thumbnail\"\n {...props}\n >\n {children}\n </div>\n );\n}\n","'use client';\n\nimport { Slot } from '@radix-ui/react-slot';\nimport type { ComponentProps } from 'react';\n\nimport { useProductCard } from '@/components/product-card';\nimport { cn } from '@/lib';\n\nexport interface ProductCardImageProps extends ComponentProps<'img'> {\n asChild?: boolean;\n}\n\nexport function ProductCardImage({\n className,\n children,\n asChild = false,\n ...props\n}: ProductCardImageProps) {\n const { colorScheme } = useProductCard();\n\n const Component = asChild ? Slot : 'img';\n\n return (\n <Component\n className={cn(\n 'w-full scale-100 select-none object-cover transition-transform duration-500 ease-out group-hover:scale-110',\n {\n light: 'bg-[var(--product-card-light-background,hsl(var(--contrast-100)))]',\n dark: 'bg-[var(--product-card-dark-background,hsl(var(--contrast-500)))]',\n }[colorScheme],\n className,\n )}\n data-slot=\"product-card-image\"\n {...props}\n />\n );\n}\n","import type { ComponentProps } from 'react';\n\nimport { Badge } from '@/components/badge';\nimport { cn } from '@/lib';\n\nexport type ProductCardBadgeProps = ComponentProps<typeof Badge>;\n\nexport function ProductCardBadge({ className, children, ...props }: ProductCardBadgeProps) {\n return (\n <Badge\n className={cn('absolute left-3 top-3', className)}\n data-slot=\"product-card-badge\"\n shape=\"rounded\"\n {...props}\n >\n {children}\n </Badge>\n );\n}\n","'use client';\n\nimport { ComponentProps } from 'react';\n\nimport { useProductCard } from '@/components/product-card';\nimport { cn } from '@/lib';\n\nexport type ProductCardFallbackProps = ComponentProps<'div'>;\n\nexport function ProductCardFallback({ className, children, ...props }: ProductCardFallbackProps) {\n const { colorScheme } = useProductCard();\n\n return (\n <div\n className={cn(\n 'break-words p-4 text-4xl font-bold leading-none tracking-tighter transition-transform duration-500 ease-out [color:var(--blog-post-card-empty-text,color-mix(in_oklab,hsl(var(--foreground))_15%,transparent))] group-hover:scale-105',\n {\n light: 'text-[var(--product-card-light-title,hsl(var(--foreground)))]',\n dark: 'text-[var(--product-card-dark-title,hsl(var(--background)))]',\n }[colorScheme],\n )}\n data-slot=\"product-card-fallback\"\n {...props}\n >\n {children}\n </div>\n );\n}\n","'use client';\n\nimport { Slot } from '@radix-ui/react-slot';\nimport type { ComponentProps } from 'react';\n\nimport { useProductCard } from '@/components/product-card';\nimport { cn } from '@/lib';\n\nexport interface ProductCardLinkProps extends ComponentProps<'a'> {\n asChild?: boolean;\n}\n\nexport function ProductCardLink({ asChild = false, className, ...props }: ProductCardLinkProps) {\n const { colorScheme } = useProductCard();\n\n const Component = asChild ? Slot : 'a';\n\n return (\n <Component\n className={cn(\n 'absolute inset-0 rounded-[var(--product-card-border-radius,1rem)] focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--product-card-focus,hsl(var(--primary)))] focus-visible:ring-offset-4',\n {\n light: 'ring-offset-[var(--product-card-light-offset,hsl(var(--background)))]',\n dark: 'ring-offset-[var(--product-card-dark-offset,hsl(var(--foreground)))]',\n }[colorScheme],\n )}\n data-slot=\"product-card-link\"\n {...props}\n />\n );\n}\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '@/lib';\n\nexport type ProductCardDetailsProps = ComponentProps<'div'>;\n\nexport function ProductCardDetails({ children, className, ...props }: ProductCardDetailsProps) {\n return (\n <div\n className={cn(\n 'mt-2 flex flex-col items-start gap-x-4 gap-y-3 px-1 @xs:mt-3 @xs:flex-row',\n className,\n )}\n data-slot=\"product-card-details\"\n {...props}\n >\n {children}\n </div>\n );\n}\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '@/lib';\n\nexport type ProductCardHeaderProps = ComponentProps<'div'>;\n\nexport function ProductCardHeader({ children, className, ...props }: ProductCardHeaderProps) {\n return (\n <div\n className={cn('relative flex-1 text-sm @[16rem]:text-base', className)}\n data-slot=\"product-card-header\"\n {...props}\n >\n {children}\n </div>\n );\n}\n","'use client';\n\nimport type { ComponentProps } from 'react';\n\nimport { useProductCard } from '@/components/product-card';\nimport { cn } from '@/lib';\n\nexport type ProductCardTitleProps = ComponentProps<'h3'>;\n\nexport function ProductCardTitle({ className, children, ...props }: ProductCardTitleProps) {\n const { colorScheme } = useProductCard();\n\n return (\n <h3\n className={cn(\n 'block font-semibold',\n {\n light: 'text-[var(--product-card-light-title,hsl(var(--foreground)))]',\n dark: 'text-[var(--product-card-dark-title,hsl(var(--background)))]',\n }[colorScheme],\n )}\n data-slot=\"product-card-title\"\n {...props}\n >\n {children}\n </h3>\n );\n}\n","'use client';\n\nimport type { ComponentProps } from 'react';\n\nimport { useProductCard } from '@/components/product-card';\nimport { cn } from '@/lib';\n\nexport type ProductCardSubtitleProps = ComponentProps<'span'>;\n\nexport function ProductCardSubtitle({ children, className, ...props }: ProductCardSubtitleProps) {\n const { colorScheme } = useProductCard();\n\n return (\n <span\n className={cn(\n 'block text-sm font-normal',\n {\n light:\n 'text-[var(--product-card-light-subtitle,color-mix(in_oklab,hsl(var(--foreground))_75%,transparent))]',\n dark: 'text-[var(--product-card-dark-subtitle,color-mix(in_oklab,hsl(var(--background))_75%,transparent))]',\n }[colorScheme],\n className,\n )}\n data-slot=\"product-card-subtitle\"\n {...props}\n >\n {children}\n </span>\n );\n}\n","import type { ComponentProps } from 'react';\n\nimport { Price } from '@/components/price';\nimport { useProductCard } from '@/components/product-card';\nimport { cn } from '@/lib';\n\nexport type ProductCardPriceProps = ComponentProps<typeof Price>;\n\nexport function ProductCardPrice({ className, price, ...props }: ProductCardPriceProps) {\n const { colorScheme } = useProductCard();\n\n return (\n <Price\n className={cn('mt-2', className)}\n colorScheme={colorScheme}\n data-slot=\"product-card-price\"\n price={price}\n {...props}\n />\n );\n}\n","import { ComponentProps } from 'react';\n\nimport { useProductCard } from '@/components/product-card';\nimport * as SkeletonPrimitive from '@/components/skeleton';\nimport { cn } from '@/lib';\n\nexport type ProductCardSkeletonProps = ComponentProps<typeof SkeletonPrimitive.Root>;\n\nexport function ProductCardSkeleton({ className, ...props }: ProductCardSkeletonProps) {\n const { aspectRatio } = useProductCard();\n\n return (\n <SkeletonPrimitive.Root className={cn(className)} data-slot=\"product-card-skeleton\" {...props}>\n <SkeletonPrimitive.Box\n className={cn(\n 'rounded-[var(--product-card-border-radius,1rem)]',\n {\n '5:6': 'aspect-[5/6]',\n '3:4': 'aspect-[3/4]',\n '1:1': 'aspect-square',\n }[aspectRatio],\n )}\n />\n <div className=\"mt-2 flex flex-col items-start gap-x-4 gap-y-3 px-1 @xs:mt-3 @xs:flex-row\">\n <div className=\"flex-1 text-sm @[16rem]:text-base\">\n <SkeletonPrimitive.Text characterCount={10} className=\"rounded\" />\n <SkeletonPrimitive.Text characterCount={8} className=\"rounded\" />\n <SkeletonPrimitive.Text characterCount={6} className=\"rounded\" />\n </div>\n </div>\n </SkeletonPrimitive.Root>\n );\n}\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '@/lib';\nexport type ProductCardCompareProps = ComponentProps<'div'>;\n\nexport function ProductCardCompare({ className, children, ...props }: ProductCardCompareProps) {\n return (\n <div\n className={cn(\n 'font-(family-name:--checkbox-font-family,var(--font-family-body)) flex shrink-0 items-center gap-2',\n className,\n )}\n data-slot=\"product-card-compare\"\n {...props}\n >\n {children}\n </div>\n );\n}\n","'use client';\n\nimport { Check } from 'lucide-react';\nimport type { ComponentProps } from 'react';\n\nimport * as CheckboxPrimitive from '@/components/checkbox';\n\nexport type CheckboxProps = ComponentProps<typeof CheckboxPrimitive.Root>;\n\n/**\n * This component supports various CSS variables for theming. Here's a comprehensive list, along\n * with their default values:\n *\n * ```css\n * :root {\n * --checkbox-focus: var(--primary);\n * --checkbox-light-label: var(--foreground);\n * --checkbox-light-error: var(--error);\n * --checkbox-light-unchecked-border: var(--contrast-200);\n * --checkbox-light-unchecked-border-hover: var(--contrast-300);\n * --checkbox-light-unchecked-background: var(--background);\n * --checkbox-light-unchecked-icon: var(--foreground);\n * --checkbox-light-checked-border: var(--foreground);\n * --checkbox-light-checked-border-hover: var(--foreground);\n * --checkbox-light-checked-background: var(--foreground);\n * --checkbox-light-checked-icon: var(--background);\n * --checkbox-light-disabled-border: var(--contrast-200);\n * --checkbox-light-disabled-background: var(--contrast-100);\n * --checkbox-light-disabled-icon: var(--contrast-300);\n * --checkbox-dark-label: var(--background);\n * --checkbox-dark-error: var(--error);\n * --checkbox-dark-unchecked-border: var(--contrast-400);\n * --checkbox-dark-unchecked-border-hover: var(--contrast-300);\n * --checkbox-dark-unchecked-background: var(--foreground);\n * --checkbox-dark-unchecked-icon: var(--background);\n * --checkbox-dark-checked-border: var(--background);\n * --checkbox-dark-checked-border-hover: var(--background);\n * --checkbox-dark-checked-background: var(--foreground);\n * --checkbox-dark-checked-icon: var(--foreground);\n * --checkbox-dark-disabled-border: var(--contrast-200);\n * --checkbox-dark-disabled-background: var(--contrast-100);\n * --checkbox-dark-disabled-icon: var(--contrast-300);\n * --checkbox-font-family: var(--font-family-body);\n * }\n * ```\n */\nexport function Checkbox({ className, colorScheme = 'light', ...props }: CheckboxProps) {\n return (\n <CheckboxPrimitive.Root className={className} colorScheme={colorScheme} {...props}>\n <CheckboxPrimitive.Indicator>\n <Check className=\"h-4 w-4\" color=\"currentColor\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n );\n}\n","'use client';\n\nimport type { ComponentProps } from 'react';\n\nimport { Checkbox } from '@/components/checkbox';\nimport { cn } from '@/lib';\n\nexport type ProductCardCheckboxProps = ComponentProps<typeof Checkbox>;\n\nexport function ProductCardCheckbox({ className, ...props }: ProductCardCheckboxProps) {\n return <Checkbox className={cn(className)} data-slot=\"product-card-checkbox\" {...props} />;\n}\n","\"use client\";\n\n// src/label.tsx\nimport * as React from \"react\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { jsx } from \"react/jsx-runtime\";\nvar NAME = \"Label\";\nvar Label = React.forwardRef((props, forwardedRef) => {\n return /* @__PURE__ */ jsx(\n Primitive.label,\n {\n ...props,\n ref: forwardedRef,\n onMouseDown: (event) => {\n const target = event.target;\n if (target.closest(\"button, input, select, textarea\")) return;\n props.onMouseDown?.(event);\n if (!event.defaultPrevented && event.detail > 1) event.preventDefault();\n }\n }\n );\n});\nLabel.displayName = NAME;\nvar Root = Label;\nexport {\n Label,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n","import * as LabelPrimitive from '@radix-ui/react-label';\nimport type { ComponentProps } from 'react';\n\nimport { cn } from '@/lib';\n\nexport type LabelProps = ComponentProps<typeof LabelPrimitive.Root> & {\n colorScheme?: 'light' | 'dark';\n};\n\nexport function Label({ className, children, colorScheme = 'light', ...props }: LabelProps) {\n return (\n <LabelPrimitive.Root\n className={cn(\n 'cursor-pointer text-sm peer-disabled:cursor-not-allowed peer-disabled:opacity-50',\n {\n light: 'text-[var(--checkbox-light-label,hsl(var(--foreground)))]',\n dark: 'text-[var(--checkbox-dark-label,hsl(var(--background)))]',\n }[colorScheme],\n )}\n data-slot=\"label\"\n {...props}\n >\n {children}\n </LabelPrimitive.Root>\n );\n}\n","'use client';\n\nimport { ComponentProps } from 'react';\n\nimport { Label } from '@/components/label';\nimport { useProductCard } from '@/components/product-card';\nimport { cn } from '@/lib';\n\nexport type ProductCardLabelProps = ComponentProps<typeof Label>;\n\nexport function ProductCardLabel({ className, children, ...props }: ProductCardLabelProps) {\n const { colorScheme } = useProductCard();\n\n return (\n <Label\n className={cn(className)}\n colorScheme={colorScheme}\n data-slot=\"product-card-label\"\n {...props}\n >\n {children}\n </Label>\n );\n}\n"],"names":["ProductCardContext","createContext","ProductCardRoot","className","children","as","colorScheme","aspectRatio","props","ProductCardRootElement","contextValues","useMemo","jsx","cn","useProductCard","context","use","ProductCardContent","ProductCardPreview","ProductCardThumbnail","ProductCardImage","asChild","Slot","ProductCardBadge","Badge","ProductCardFallback","ProductCardLink","ProductCardDetails","ProductCardHeader","ProductCardTitle","ProductCardSubtitle","ProductCardPrice","price","Price","ProductCardSkeleton","jsxs","SkeletonPrimitive.Root","SkeletonPrimitive.Box","SkeletonPrimitive.Text","ProductCardCompare","Checkbox","CheckboxPrimitive.Root","CheckboxPrimitive.Indicator","Check","ProductCardCheckbox","NAME","Label","React","forwardedRef","Primitive","event","Root","LabelPrimitive.Root","ProductCardLabel"],"mappings":"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","x_google_ignoreList":[17]}
1
+ {"version":3,"file":"product-card.js","sources":["../src/components/product-card/primitives/product-card-root.tsx","../src/components/product-card/primitives/product-card-content.tsx","../src/components/product-card/primitives/product-card-preview.tsx","../src/components/product-card/primitives/product-card-thumbnail.tsx","../src/components/product-card/primitives/product-card-image.tsx","../src/components/product-card/primitives/product-card-badge.tsx","../src/components/product-card/primitives/product-card-fallback.tsx","../src/components/product-card/primitives/product-card-link.tsx","../src/components/product-card/primitives/product-card-details.tsx","../src/components/product-card/primitives/product-card-header.tsx","../src/components/product-card/primitives/product-card-title.tsx","../src/components/product-card/primitives/product-card-subtitle.tsx","../src/components/product-card/primitives/product-card-price.tsx","../src/components/product-card/primitives/product-card-skeleton.tsx","../src/components/product-card/primitives/product-card-compare.tsx","../src/components/checkbox/checkbox.tsx","../src/components/product-card/primitives/product-card-checkbox.tsx","../node_modules/.pnpm/@radix-ui+react-label@2.1.7_@types+react-dom@19.2.2_@types+react@19.2.2__@types+react@19.2.2__h3esd6u5mwikxnlir43mok2s5m/node_modules/@radix-ui/react-label/dist/index.mjs","../src/components/label/label.tsx","../src/components/product-card/primitives/product-card-label.tsx"],"sourcesContent":["'use client';\n\nimport { createContext, use, useMemo } from 'react';\nimport type { ComponentProps, ElementType } from 'react';\n\nimport { cn } from '@/lib';\n\ninterface ProductCardContext {\n colorScheme: 'light' | 'dark';\n aspectRatio: '5:6' | '3:4' | '1:1';\n}\n\nexport const ProductCardContext = createContext<ProductCardContext | undefined>(undefined);\n\nexport type ProductCardRootProps<E extends ElementType = 'article'> = Omit<\n ComponentProps<E>,\n 'as'\n> & {\n as?: E;\n colorScheme?: 'light' | 'dark';\n aspectRatio?: '5:6' | '3:4' | '1:1';\n};\n\nexport function ProductCardRoot<T extends ElementType = 'article'>({\n className,\n children,\n as,\n colorScheme = 'light',\n aspectRatio = '5:6',\n ...props\n}: ProductCardRootProps<T>) {\n const ProductCardRootElement = as ?? 'article';\n\n const contextValues = useMemo(\n () => ({\n colorScheme,\n aspectRatio,\n }),\n [colorScheme, aspectRatio],\n );\n\n return (\n <ProductCardContext.Provider value={contextValues}>\n <ProductCardRootElement\n className={cn(\n 'group w-full max-w-md font-[var(--product-card-font-family,var(--font-family-body))] @container',\n className,\n )}\n data-slot=\"product-card-root\"\n {...props}\n >\n {children}\n </ProductCardRootElement>\n </ProductCardContext.Provider>\n );\n}\n\nexport function useProductCard() {\n const context = use(ProductCardContext);\n\n if (context === undefined) {\n throw new Error('useProductCard must be used within an ProductCardRoot');\n }\n\n return context;\n}\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '@/lib';\n\nexport type ProductCardContentProps = ComponentProps<'div'>;\n\nexport function ProductCardContent({ className, children, ...props }: ProductCardContentProps) {\n return (\n <div className={cn('relative', className)} data-slot=\"product-card-content\" {...props}>\n {children}\n </div>\n );\n}\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '@/lib';\n\nexport type ProductCardPreviewProps = ComponentProps<'div'>;\n\nexport function ProductCardPreview({ className, children, ...props }: ProductCardPreviewProps) {\n return (\n <div className={cn('relative', className)} data-slot=\"product-card-preview\" {...props}>\n {children}\n </div>\n );\n}\n","'use client';\n\nimport type { ComponentProps } from 'react';\n\nimport { useProductCard } from '@/components/product-card';\nimport { cn } from '@/lib';\n\nexport type ProductCardThumbnailProps = ComponentProps<'div'>;\n\nexport function ProductCardThumbnail({ className, children, ...props }: ProductCardThumbnailProps) {\n const { aspectRatio, colorScheme } = useProductCard();\n\n return (\n <div\n className={cn(\n 'relative overflow-hidden rounded-[var(--product-card-border-radius,1rem)]',\n {\n '5:6': 'aspect-[5/6]',\n '3:4': 'aspect-[3/4]',\n '1:1': 'aspect-square',\n }[aspectRatio],\n {\n light: 'bg-[var(--product-card-light-background,hsl(var(--contrast-100)))]',\n dark: 'bg-[var(--product-card-dark-background,hsl(var(--contrast-500)))]',\n }[colorScheme],\n className,\n )}\n data-slot=\"product-card-thumbnail\"\n {...props}\n >\n {children}\n </div>\n );\n}\n","'use client';\n\nimport { Slot } from '@radix-ui/react-slot';\nimport type { ComponentProps } from 'react';\n\nimport { useProductCard } from '@/components/product-card';\nimport { cn } from '@/lib';\n\nexport interface ProductCardImageProps extends ComponentProps<'img'> {\n asChild?: boolean;\n}\n\nexport function ProductCardImage({\n className,\n children,\n asChild = false,\n ...props\n}: ProductCardImageProps) {\n const { colorScheme } = useProductCard();\n\n const Component = asChild ? Slot : 'img';\n\n return (\n <Component\n className={cn(\n 'h-full w-full scale-100 select-none object-cover transition-transform duration-500 ease-out group-hover:scale-110',\n {\n light: 'bg-[var(--product-card-light-background,hsl(var(--contrast-100)))]',\n dark: 'bg-[var(--product-card-dark-background,hsl(var(--contrast-500)))]',\n }[colorScheme],\n className,\n )}\n data-slot=\"product-card-image\"\n {...props}\n />\n );\n}\n","import type { ComponentProps } from 'react';\n\nimport { Badge } from '@/components/badge';\nimport { cn } from '@/lib';\n\nexport type ProductCardBadgeProps = ComponentProps<typeof Badge>;\n\nexport function ProductCardBadge({ className, children, ...props }: ProductCardBadgeProps) {\n return (\n <Badge\n className={cn('absolute left-3 top-3', className)}\n data-slot=\"product-card-badge\"\n shape=\"rounded\"\n {...props}\n >\n {children}\n </Badge>\n );\n}\n","'use client';\n\nimport { ComponentProps } from 'react';\n\nimport { useProductCard } from '@/components/product-card';\nimport { cn } from '@/lib';\n\nexport type ProductCardFallbackProps = ComponentProps<'div'>;\n\nexport function ProductCardFallback({ className, children, ...props }: ProductCardFallbackProps) {\n const { colorScheme } = useProductCard();\n\n return (\n <div\n className={cn(\n 'break-words p-4 text-4xl font-bold leading-none tracking-tight transition-transform duration-500 ease-out group-hover:scale-105',\n {\n light: '[color:color-mix(in_oklab,hsl(var(--foreground))_30%,transparent)]',\n dark: '[color:color-mix(in_oklab,hsl(var(--background))_30%,transparent)]',\n }[colorScheme],\n className,\n )}\n data-slot=\"product-card-fallback\"\n {...props}\n >\n {children}\n </div>\n );\n}\n","'use client';\n\nimport { Slot } from '@radix-ui/react-slot';\nimport type { ComponentProps } from 'react';\n\nimport { useProductCard } from '@/components/product-card';\nimport { cn } from '@/lib';\n\nexport interface ProductCardLinkProps extends ComponentProps<'a'> {\n asChild?: boolean;\n}\n\nexport function ProductCardLink({ asChild = false, className, ...props }: ProductCardLinkProps) {\n const { colorScheme } = useProductCard();\n\n const Component = asChild ? Slot : 'a';\n\n return (\n <Component\n className={cn(\n 'absolute inset-0 rounded-[var(--product-card-border-radius,1rem)] focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--product-card-focus,hsl(var(--primary)))] focus-visible:ring-offset-4',\n {\n light: 'ring-offset-[var(--product-card-light-offset,hsl(var(--background)))]',\n dark: 'ring-offset-[var(--product-card-dark-offset,hsl(var(--foreground)))]',\n }[colorScheme],\n className,\n )}\n data-slot=\"product-card-link\"\n {...props}\n />\n );\n}\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '@/lib';\n\nexport type ProductCardDetailsProps = ComponentProps<'div'>;\n\nexport function ProductCardDetails({ children, className, ...props }: ProductCardDetailsProps) {\n return (\n <div\n className={cn(\n 'mt-2 flex flex-col items-start gap-x-4 gap-y-3 px-1 @xs:mt-3 @xs:flex-row',\n className,\n )}\n data-slot=\"product-card-details\"\n {...props}\n >\n {children}\n </div>\n );\n}\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '@/lib';\n\nexport type ProductCardHeaderProps = ComponentProps<'div'>;\n\nexport function ProductCardHeader({ children, className, ...props }: ProductCardHeaderProps) {\n return (\n <div\n className={cn('relative flex-1 text-sm @[16rem]:text-base', className)}\n data-slot=\"product-card-header\"\n {...props}\n >\n {children}\n </div>\n );\n}\n","'use client';\n\nimport type { ComponentProps } from 'react';\n\nimport { useProductCard } from '@/components/product-card';\nimport { cn } from '@/lib';\n\nexport type ProductCardTitleProps = ComponentProps<'h3'>;\n\nexport function ProductCardTitle({ className, children, ...props }: ProductCardTitleProps) {\n const { colorScheme } = useProductCard();\n\n return (\n <h3\n className={cn(\n 'block font-semibold',\n {\n light: 'text-[var(--product-card-light-title,hsl(var(--foreground)))]',\n dark: 'text-[var(--product-card-dark-title,hsl(var(--background)))]',\n }[colorScheme],\n )}\n data-slot=\"product-card-title\"\n {...props}\n >\n {children}\n </h3>\n );\n}\n","'use client';\n\nimport type { ComponentProps } from 'react';\n\nimport { useProductCard } from '@/components/product-card';\nimport { cn } from '@/lib';\n\nexport type ProductCardSubtitleProps = ComponentProps<'span'>;\n\nexport function ProductCardSubtitle({ children, className, ...props }: ProductCardSubtitleProps) {\n const { colorScheme } = useProductCard();\n\n return (\n <span\n className={cn(\n 'block text-sm font-normal',\n {\n light:\n 'text-[var(--product-card-light-subtitle,color-mix(in_oklab,hsl(var(--foreground))_75%,transparent))]',\n dark: 'text-[var(--product-card-dark-subtitle,color-mix(in_oklab,hsl(var(--background))_75%,transparent))]',\n }[colorScheme],\n className,\n )}\n data-slot=\"product-card-subtitle\"\n {...props}\n >\n {children}\n </span>\n );\n}\n","import type { ComponentProps } from 'react';\n\nimport { Price } from '@/components/price';\nimport { useProductCard } from '@/components/product-card';\nimport { cn } from '@/lib';\n\nexport type ProductCardPriceProps = ComponentProps<typeof Price>;\n\nexport function ProductCardPrice({ className, price, ...props }: ProductCardPriceProps) {\n const { colorScheme } = useProductCard();\n\n return (\n <Price\n className={cn('mt-2', className)}\n colorScheme={colorScheme}\n data-slot=\"product-card-price\"\n price={price}\n {...props}\n />\n );\n}\n","import { ComponentProps } from 'react';\n\nimport { useProductCard } from '@/components/product-card';\nimport * as SkeletonPrimitive from '@/components/skeleton';\nimport { cn } from '@/lib';\n\nexport type ProductCardSkeletonProps = ComponentProps<typeof SkeletonPrimitive.Root>;\n\nexport function ProductCardSkeleton({ className, ...props }: ProductCardSkeletonProps) {\n const { aspectRatio } = useProductCard();\n\n return (\n <SkeletonPrimitive.Root className={cn(className)} data-slot=\"product-card-skeleton\" {...props}>\n <SkeletonPrimitive.Box\n className={cn(\n 'rounded-[var(--product-card-border-radius,1rem)]',\n {\n '5:6': 'aspect-[5/6]',\n '3:4': 'aspect-[3/4]',\n '1:1': 'aspect-square',\n }[aspectRatio],\n )}\n />\n <div className=\"mt-2 flex flex-col items-start gap-x-4 gap-y-3 px-1 @xs:mt-3 @xs:flex-row\">\n <div className=\"flex-1 text-sm @[16rem]:text-base\">\n <SkeletonPrimitive.Text characterCount={10} className=\"rounded\" />\n <SkeletonPrimitive.Text characterCount={8} className=\"rounded\" />\n <SkeletonPrimitive.Text characterCount={6} className=\"rounded\" />\n </div>\n </div>\n </SkeletonPrimitive.Root>\n );\n}\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '@/lib';\n\nexport type ProductCardCompareProps = ComponentProps<'div'>;\n\nexport function ProductCardCompare({ className, children, ...props }: ProductCardCompareProps) {\n return (\n <div\n className={cn(\n 'font-(family-name:--checkbox-font-family,var(--font-family-body)) flex shrink-0 items-center gap-2',\n className,\n )}\n data-slot=\"product-card-compare\"\n {...props}\n >\n {children}\n </div>\n );\n}\n","'use client';\n\nimport { Check } from 'lucide-react';\nimport type { ComponentProps } from 'react';\n\nimport * as CheckboxPrimitive from '@/components/checkbox';\n\nexport type CheckboxProps = ComponentProps<typeof CheckboxPrimitive.Root>;\n\n/**\n * This component supports various CSS variables for theming. Here's a comprehensive list, along\n * with their default values:\n *\n * ```css\n * :root {\n * --checkbox-focus: var(--primary);\n * --checkbox-light-label: var(--foreground);\n * --checkbox-light-error: var(--error);\n * --checkbox-light-unchecked-border: var(--contrast-200);\n * --checkbox-light-unchecked-border-hover: var(--contrast-300);\n * --checkbox-light-unchecked-background: var(--background);\n * --checkbox-light-unchecked-icon: var(--foreground);\n * --checkbox-light-checked-border: var(--foreground);\n * --checkbox-light-checked-border-hover: var(--foreground);\n * --checkbox-light-checked-background: var(--foreground);\n * --checkbox-light-checked-icon: var(--background);\n * --checkbox-light-disabled-border: var(--contrast-200);\n * --checkbox-light-disabled-background: var(--contrast-100);\n * --checkbox-light-disabled-icon: var(--contrast-300);\n * --checkbox-dark-label: var(--background);\n * --checkbox-dark-error: var(--error);\n * --checkbox-dark-unchecked-border: var(--contrast-400);\n * --checkbox-dark-unchecked-border-hover: var(--contrast-300);\n * --checkbox-dark-unchecked-background: var(--foreground);\n * --checkbox-dark-unchecked-icon: var(--background);\n * --checkbox-dark-checked-border: var(--background);\n * --checkbox-dark-checked-border-hover: var(--background);\n * --checkbox-dark-checked-background: var(--foreground);\n * --checkbox-dark-checked-icon: var(--foreground);\n * --checkbox-dark-disabled-border: var(--contrast-200);\n * --checkbox-dark-disabled-background: var(--contrast-100);\n * --checkbox-dark-disabled-icon: var(--contrast-300);\n * --checkbox-font-family: var(--font-family-body);\n * }\n * ```\n */\nexport function Checkbox({ className, colorScheme = 'light', ...props }: CheckboxProps) {\n return (\n <CheckboxPrimitive.Root className={className} colorScheme={colorScheme} {...props}>\n <CheckboxPrimitive.Indicator>\n <Check className=\"h-4 w-4\" color=\"currentColor\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n );\n}\n","'use client';\n\nimport type { ComponentProps } from 'react';\n\nimport { Checkbox } from '@/components/checkbox';\nimport { cn } from '@/lib';\n\nexport type ProductCardCheckboxProps = ComponentProps<typeof Checkbox>;\n\nexport function ProductCardCheckbox({ className, ...props }: ProductCardCheckboxProps) {\n return <Checkbox className={cn(className)} data-slot=\"product-card-checkbox\" {...props} />;\n}\n","\"use client\";\n\n// src/label.tsx\nimport * as React from \"react\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { jsx } from \"react/jsx-runtime\";\nvar NAME = \"Label\";\nvar Label = React.forwardRef((props, forwardedRef) => {\n return /* @__PURE__ */ jsx(\n Primitive.label,\n {\n ...props,\n ref: forwardedRef,\n onMouseDown: (event) => {\n const target = event.target;\n if (target.closest(\"button, input, select, textarea\")) return;\n props.onMouseDown?.(event);\n if (!event.defaultPrevented && event.detail > 1) event.preventDefault();\n }\n }\n );\n});\nLabel.displayName = NAME;\nvar Root = Label;\nexport {\n Label,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n","import * as LabelPrimitive from '@radix-ui/react-label';\nimport type { ComponentProps } from 'react';\n\nimport { cn } from '@/lib';\n\nexport type LabelProps = ComponentProps<typeof LabelPrimitive.Root> & {\n colorScheme?: 'light' | 'dark';\n};\n\nexport function Label({ className, children, colorScheme = 'light', ...props }: LabelProps) {\n return (\n <LabelPrimitive.Root\n className={cn(\n 'cursor-pointer text-sm peer-disabled:cursor-not-allowed peer-disabled:opacity-50',\n {\n light: 'text-[var(--checkbox-light-label,hsl(var(--foreground)))]',\n dark: 'text-[var(--checkbox-dark-label,hsl(var(--background)))]',\n }[colorScheme],\n )}\n data-slot=\"label\"\n {...props}\n >\n {children}\n </LabelPrimitive.Root>\n );\n}\n","'use client';\n\nimport { ComponentProps } from 'react';\n\nimport { Label } from '@/components/label';\nimport { useProductCard } from '@/components/product-card';\nimport { cn } from '@/lib';\n\nexport type ProductCardLabelProps = ComponentProps<typeof Label>;\n\nexport function ProductCardLabel({ className, children, ...props }: ProductCardLabelProps) {\n const { colorScheme } = useProductCard();\n\n return (\n <Label\n className={cn(className)}\n colorScheme={colorScheme}\n data-slot=\"product-card-label\"\n {...props}\n >\n {children}\n </Label>\n );\n}\n"],"names":["ProductCardContext","createContext","ProductCardRoot","className","children","as","colorScheme","aspectRatio","props","ProductCardRootElement","contextValues","useMemo","jsx","cn","useProductCard","context","use","ProductCardContent","ProductCardPreview","ProductCardThumbnail","ProductCardImage","asChild","Slot","ProductCardBadge","Badge","ProductCardFallback","ProductCardLink","ProductCardDetails","ProductCardHeader","ProductCardTitle","ProductCardSubtitle","ProductCardPrice","price","Price","ProductCardSkeleton","jsxs","SkeletonPrimitive.Root","SkeletonPrimitive.Box","SkeletonPrimitive.Text","ProductCardCompare","Checkbox","CheckboxPrimitive.Root","CheckboxPrimitive.Indicator","Check","ProductCardCheckbox","NAME","Label","React","forwardedRef","Primitive","event","Root","LabelPrimitive.Root","ProductCardLabel"],"mappings":"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","x_google_ignoreList":[17]}
@@ -1 +1 @@
1
- {"version":3,"file":"rating-value-CkSY9Pyr.cjs","sources":["../src/components/rating/primitives/rating-root.tsx","../src/components/rating/primitives/rating-star.tsx","../src/components/rating/primitives/rating-stars.tsx","../src/components/rating/primitives/rating-value.tsx"],"sourcesContent":["'use client';\n\nimport { createContext, use, useCallback, useMemo, useRef } from 'react';\nimport type { ComponentProps, ReactNode } from 'react';\n\nimport { cn } from '@/lib';\n\nexport type StarType = 'empty' | 'half' | 'full';\n\ninterface RatingContext {\n rating: number;\n adjustedRating: number;\n stars: StarType[];\n showRating: boolean;\n getNextStarIndex: () => number;\n resetStarIndex: () => void;\n}\n\nconst RatingContext = createContext<RatingContext | undefined>(undefined);\n\nexport interface RatingRootProps extends ComponentProps<'div'> {\n rating: number;\n showRating?: boolean;\n children: ReactNode;\n}\n\nexport function RatingRoot({\n children,\n className,\n rating,\n showRating = true,\n ...props\n}: RatingRootProps) {\n const starIndexRef = useRef(0);\n\n const getNextStarIndex = useCallback(() => {\n const index = starIndexRef.current;\n starIndexRef.current += 1;\n return index;\n }, []);\n\n const resetStarIndex = useCallback(() => {\n starIndexRef.current = 0;\n }, []);\n\n const contextValues = useMemo(() => {\n const adjustedRating = Math.min(rating, 5);\n\n const stars: StarType[] = Array.from({ length: 5 }, (_, index) => {\n if (index < Math.floor(adjustedRating)) return 'full';\n if (index < Math.ceil(adjustedRating)) return 'half';\n return 'empty';\n });\n\n return {\n rating,\n adjustedRating,\n stars,\n showRating,\n getNextStarIndex,\n resetStarIndex,\n };\n }, [rating, showRating, getNextStarIndex, resetStarIndex]);\n\n return (\n <RatingContext.Provider value={contextValues}>\n <div className={cn('flex items-center', className)} {...props}>\n {children}\n </div>\n </RatingContext.Provider>\n );\n}\n\nexport function useRating() {\n const context = use(RatingContext);\n\n if (context === undefined) {\n throw new Error('useRating must be used within a RatingRoot');\n }\n\n return context;\n}\n","'use client';\n\nimport type { ComponentProps } from 'react';\n\nimport { useRating } from '@/components/rating';\nimport { cn } from '@/lib';\n\nexport type RatingStarProps = ComponentProps<'svg'>;\n\nexport function RatingStar({ className, ...props }: RatingStarProps) {\n const { stars, getNextStarIndex } = useRating();\n\n const index = getNextStarIndex();\n\n const type = stars[index] ?? 'empty';\n\n const paths = {\n empty: (\n <path\n d=\"M9.99984 1.66669L12.5748 6.88335L18.3332 7.72502L14.1665 11.7834L15.1498 17.5167L9.99984 14.8084L4.84984 17.5167L5.83317 11.7834L1.6665 7.72502L7.42484 6.88335L9.99984 1.66669Z\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeOpacity=\"0.4\"\n />\n ),\n half: (\n <>\n <path\n d=\"M9.99984 1.66669L12.5748 6.88335L18.3332 7.72502L14.1665 11.7834L15.1498 17.5167L9.99984 14.8084L4.84984 17.5167L5.83317 11.7834L1.6665 7.72502L7.42484 6.88335L9.99984 1.66669Z\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M10.0003 1.6665V14.8082L4.85033 17.5165L5.83366 11.7832L1.66699 7.72484L7.42533 6.88317L10.0003 1.6665Z\"\n fill=\"currentColor\"\n />\n </>\n ),\n full: (\n <path\n d=\"M9.99984 1.66669L12.5748 6.88335L18.3332 7.72502L14.1665 11.7834L15.1498 17.5167L9.99984 14.8084L4.84984 17.5167L5.83317 11.7834L1.6665 7.72502L7.42484 6.88335L9.99984 1.66669Z\"\n fill=\"currentColor\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n ),\n };\n\n return (\n <svg\n className={cn('inline-block text-[var(--rating-icon,hsl(var(--foreground)))]', className)}\n fill=\"none\"\n height={20}\n viewBox=\"0 0 20 20\"\n width={20}\n {...props}\n >\n {paths[type]}\n </svg>\n );\n}\n","'use client';\n\nimport { Star as RatingStar, useRating } from '@/components/rating';\n\nexport function RatingStars() {\n const { resetStarIndex } = useRating();\n\n resetStarIndex();\n\n return (\n <>\n {[0, 1, 2, 3, 4].map((i) => (\n <RatingStar key={i} />\n ))}\n </>\n );\n}\n","'use client';\n\nimport type { ComponentProps } from 'react';\n\nimport { useRating } from '@/components/rating';\nimport { cn } from '@/lib';\n\nexport type RatingValueProps = ComponentProps<'span'>;\n\nexport function RatingValue({ className, ...props }: RatingValueProps) {\n const { adjustedRating, showRating } = useRating();\n\n if (!showRating) return null;\n\n return (\n <span\n className={cn(\n 'ml-1.5 flex h-6 min-w-6 shrink-0 items-center justify-center rounded-full border border-[var(--rating-border,hsl(var(--contrast-100)))] px-1 text-xs font-medium text-[var(--rating-text,hsl(var(--contrast-400)))]',\n className,\n )}\n {...props}\n >\n {adjustedRating % 1 !== 0 ? adjustedRating.toFixed(1) : adjustedRating}\n </span>\n );\n}\n"],"names":["RatingContext","createContext","RatingRoot","children","className","rating","showRating","props","starIndexRef","useRef","getNextStarIndex","useCallback","index","resetStarIndex","contextValues","useMemo","adjustedRating","stars","_","jsx","cn","useRating","context","use","RatingStar","type","paths","jsxs","Fragment","RatingStars","i","RatingValue"],"mappings":"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"}
1
+ {"version":3,"file":"rating-value-CkSY9Pyr.cjs","sources":["../src/components/rating/primitives/rating-root.tsx","../src/components/rating/primitives/rating-star.tsx","../src/components/rating/primitives/rating-stars.tsx","../src/components/rating/primitives/rating-value.tsx"],"sourcesContent":["'use client';\n\nimport { createContext, use, useCallback, useMemo, useRef } from 'react';\nimport type { ComponentProps, ReactNode } from 'react';\n\nimport { cn } from '@/lib';\n\nexport type StarType = 'empty' | 'half' | 'full';\n\ninterface RatingContext {\n rating: number;\n adjustedRating: number;\n stars: StarType[];\n showRating: boolean;\n getNextStarIndex: () => number;\n resetStarIndex: () => void;\n}\n\nconst RatingContext = createContext<RatingContext | undefined>(undefined);\n\nexport interface RatingRootProps extends ComponentProps<'div'> {\n rating: number;\n showRating?: boolean;\n children: ReactNode;\n}\n\nexport function RatingRoot({\n children,\n className,\n rating,\n showRating = true,\n ...props\n}: RatingRootProps) {\n const starIndexRef = useRef(0);\n\n const getNextStarIndex = useCallback(() => {\n const index = starIndexRef.current;\n\n starIndexRef.current += 1;\n\n return index;\n }, []);\n\n const resetStarIndex = useCallback(() => {\n starIndexRef.current = 0;\n }, []);\n\n const contextValues = useMemo(() => {\n const adjustedRating = Math.min(rating, 5);\n\n const stars: StarType[] = Array.from({ length: 5 }, (_, index) => {\n if (index < Math.floor(adjustedRating)) return 'full';\n if (index < Math.ceil(adjustedRating)) return 'half';\n\n return 'empty';\n });\n\n return {\n rating,\n adjustedRating,\n stars,\n showRating,\n getNextStarIndex,\n resetStarIndex,\n };\n }, [rating, showRating, getNextStarIndex, resetStarIndex]);\n\n return (\n <RatingContext.Provider value={contextValues}>\n <div className={cn('flex items-center', className)} {...props}>\n {children}\n </div>\n </RatingContext.Provider>\n );\n}\n\nexport function useRating() {\n const context = use(RatingContext);\n\n if (context === undefined) {\n throw new Error('useRating must be used within a RatingRoot');\n }\n\n return context;\n}\n","'use client';\n\nimport type { ComponentProps } from 'react';\n\nimport { useRating } from '@/components/rating';\nimport { cn } from '@/lib';\n\nexport type RatingStarProps = ComponentProps<'svg'>;\n\nexport function RatingStar({ className, ...props }: RatingStarProps) {\n const { stars, getNextStarIndex } = useRating();\n\n const index = getNextStarIndex();\n\n const type = stars[index] ?? 'empty';\n\n const paths = {\n empty: (\n <path\n d=\"M9.99984 1.66669L12.5748 6.88335L18.3332 7.72502L14.1665 11.7834L15.1498 17.5167L9.99984 14.8084L4.84984 17.5167L5.83317 11.7834L1.6665 7.72502L7.42484 6.88335L9.99984 1.66669Z\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeOpacity=\"0.4\"\n />\n ),\n half: (\n <>\n <path\n d=\"M9.99984 1.66669L12.5748 6.88335L18.3332 7.72502L14.1665 11.7834L15.1498 17.5167L9.99984 14.8084L4.84984 17.5167L5.83317 11.7834L1.6665 7.72502L7.42484 6.88335L9.99984 1.66669Z\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M10.0003 1.6665V14.8082L4.85033 17.5165L5.83366 11.7832L1.66699 7.72484L7.42533 6.88317L10.0003 1.6665Z\"\n fill=\"currentColor\"\n />\n </>\n ),\n full: (\n <path\n d=\"M9.99984 1.66669L12.5748 6.88335L18.3332 7.72502L14.1665 11.7834L15.1498 17.5167L9.99984 14.8084L4.84984 17.5167L5.83317 11.7834L1.6665 7.72502L7.42484 6.88335L9.99984 1.66669Z\"\n fill=\"currentColor\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n ),\n };\n\n return (\n <svg\n className={cn('inline-block text-[var(--rating-icon,hsl(var(--foreground)))]', className)}\n fill=\"none\"\n height={20}\n viewBox=\"0 0 20 20\"\n width={20}\n {...props}\n >\n {paths[type]}\n </svg>\n );\n}\n","'use client';\n\nimport { Star as RatingStar, useRating } from '@/components/rating';\n\nexport function RatingStars() {\n const { resetStarIndex } = useRating();\n\n resetStarIndex();\n\n return (\n <>\n {[0, 1, 2, 3, 4].map((i) => (\n <RatingStar key={i} />\n ))}\n </>\n );\n}\n","'use client';\n\nimport type { ComponentProps } from 'react';\n\nimport { useRating } from '@/components/rating';\nimport { cn } from '@/lib';\n\nexport type RatingValueProps = ComponentProps<'span'>;\n\nexport function RatingValue({ className, ...props }: RatingValueProps) {\n const { adjustedRating, showRating } = useRating();\n\n if (!showRating) return null;\n\n return (\n <span\n className={cn(\n 'ml-1.5 flex h-6 min-w-6 shrink-0 items-center justify-center rounded-full border border-[var(--rating-border,hsl(var(--contrast-100)))] px-1 text-xs font-medium text-[var(--rating-text,hsl(var(--contrast-400)))]',\n className,\n )}\n {...props}\n >\n {adjustedRating % 1 !== 0 ? adjustedRating.toFixed(1) : adjustedRating}\n </span>\n );\n}\n"],"names":["RatingContext","createContext","RatingRoot","children","className","rating","showRating","props","starIndexRef","useRef","getNextStarIndex","useCallback","index","resetStarIndex","contextValues","useMemo","adjustedRating","stars","_","jsx","cn","useRating","context","use","RatingStar","type","paths","jsxs","Fragment","RatingStars","i","RatingValue"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"rating-value-DBtmrorI.js","sources":["../src/components/rating/primitives/rating-root.tsx","../src/components/rating/primitives/rating-star.tsx","../src/components/rating/primitives/rating-stars.tsx","../src/components/rating/primitives/rating-value.tsx"],"sourcesContent":["'use client';\n\nimport { createContext, use, useCallback, useMemo, useRef } from 'react';\nimport type { ComponentProps, ReactNode } from 'react';\n\nimport { cn } from '@/lib';\n\nexport type StarType = 'empty' | 'half' | 'full';\n\ninterface RatingContext {\n rating: number;\n adjustedRating: number;\n stars: StarType[];\n showRating: boolean;\n getNextStarIndex: () => number;\n resetStarIndex: () => void;\n}\n\nconst RatingContext = createContext<RatingContext | undefined>(undefined);\n\nexport interface RatingRootProps extends ComponentProps<'div'> {\n rating: number;\n showRating?: boolean;\n children: ReactNode;\n}\n\nexport function RatingRoot({\n children,\n className,\n rating,\n showRating = true,\n ...props\n}: RatingRootProps) {\n const starIndexRef = useRef(0);\n\n const getNextStarIndex = useCallback(() => {\n const index = starIndexRef.current;\n starIndexRef.current += 1;\n return index;\n }, []);\n\n const resetStarIndex = useCallback(() => {\n starIndexRef.current = 0;\n }, []);\n\n const contextValues = useMemo(() => {\n const adjustedRating = Math.min(rating, 5);\n\n const stars: StarType[] = Array.from({ length: 5 }, (_, index) => {\n if (index < Math.floor(adjustedRating)) return 'full';\n if (index < Math.ceil(adjustedRating)) return 'half';\n return 'empty';\n });\n\n return {\n rating,\n adjustedRating,\n stars,\n showRating,\n getNextStarIndex,\n resetStarIndex,\n };\n }, [rating, showRating, getNextStarIndex, resetStarIndex]);\n\n return (\n <RatingContext.Provider value={contextValues}>\n <div className={cn('flex items-center', className)} {...props}>\n {children}\n </div>\n </RatingContext.Provider>\n );\n}\n\nexport function useRating() {\n const context = use(RatingContext);\n\n if (context === undefined) {\n throw new Error('useRating must be used within a RatingRoot');\n }\n\n return context;\n}\n","'use client';\n\nimport type { ComponentProps } from 'react';\n\nimport { useRating } from '@/components/rating';\nimport { cn } from '@/lib';\n\nexport type RatingStarProps = ComponentProps<'svg'>;\n\nexport function RatingStar({ className, ...props }: RatingStarProps) {\n const { stars, getNextStarIndex } = useRating();\n\n const index = getNextStarIndex();\n\n const type = stars[index] ?? 'empty';\n\n const paths = {\n empty: (\n <path\n d=\"M9.99984 1.66669L12.5748 6.88335L18.3332 7.72502L14.1665 11.7834L15.1498 17.5167L9.99984 14.8084L4.84984 17.5167L5.83317 11.7834L1.6665 7.72502L7.42484 6.88335L9.99984 1.66669Z\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeOpacity=\"0.4\"\n />\n ),\n half: (\n <>\n <path\n d=\"M9.99984 1.66669L12.5748 6.88335L18.3332 7.72502L14.1665 11.7834L15.1498 17.5167L9.99984 14.8084L4.84984 17.5167L5.83317 11.7834L1.6665 7.72502L7.42484 6.88335L9.99984 1.66669Z\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M10.0003 1.6665V14.8082L4.85033 17.5165L5.83366 11.7832L1.66699 7.72484L7.42533 6.88317L10.0003 1.6665Z\"\n fill=\"currentColor\"\n />\n </>\n ),\n full: (\n <path\n d=\"M9.99984 1.66669L12.5748 6.88335L18.3332 7.72502L14.1665 11.7834L15.1498 17.5167L9.99984 14.8084L4.84984 17.5167L5.83317 11.7834L1.6665 7.72502L7.42484 6.88335L9.99984 1.66669Z\"\n fill=\"currentColor\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n ),\n };\n\n return (\n <svg\n className={cn('inline-block text-[var(--rating-icon,hsl(var(--foreground)))]', className)}\n fill=\"none\"\n height={20}\n viewBox=\"0 0 20 20\"\n width={20}\n {...props}\n >\n {paths[type]}\n </svg>\n );\n}\n","'use client';\n\nimport { Star as RatingStar, useRating } from '@/components/rating';\n\nexport function RatingStars() {\n const { resetStarIndex } = useRating();\n\n resetStarIndex();\n\n return (\n <>\n {[0, 1, 2, 3, 4].map((i) => (\n <RatingStar key={i} />\n ))}\n </>\n );\n}\n","'use client';\n\nimport type { ComponentProps } from 'react';\n\nimport { useRating } from '@/components/rating';\nimport { cn } from '@/lib';\n\nexport type RatingValueProps = ComponentProps<'span'>;\n\nexport function RatingValue({ className, ...props }: RatingValueProps) {\n const { adjustedRating, showRating } = useRating();\n\n if (!showRating) return null;\n\n return (\n <span\n className={cn(\n 'ml-1.5 flex h-6 min-w-6 shrink-0 items-center justify-center rounded-full border border-[var(--rating-border,hsl(var(--contrast-100)))] px-1 text-xs font-medium text-[var(--rating-text,hsl(var(--contrast-400)))]',\n className,\n )}\n {...props}\n >\n {adjustedRating % 1 !== 0 ? adjustedRating.toFixed(1) : adjustedRating}\n </span>\n );\n}\n"],"names":["RatingContext","createContext","RatingRoot","children","className","rating","showRating","props","starIndexRef","useRef","getNextStarIndex","useCallback","index","resetStarIndex","contextValues","useMemo","adjustedRating","stars","_","jsx","cn","useRating","context","use","RatingStar","type","paths","jsxs","Fragment","RatingStars","i","RatingValue"],"mappings":"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"}
1
+ {"version":3,"file":"rating-value-DBtmrorI.js","sources":["../src/components/rating/primitives/rating-root.tsx","../src/components/rating/primitives/rating-star.tsx","../src/components/rating/primitives/rating-stars.tsx","../src/components/rating/primitives/rating-value.tsx"],"sourcesContent":["'use client';\n\nimport { createContext, use, useCallback, useMemo, useRef } from 'react';\nimport type { ComponentProps, ReactNode } from 'react';\n\nimport { cn } from '@/lib';\n\nexport type StarType = 'empty' | 'half' | 'full';\n\ninterface RatingContext {\n rating: number;\n adjustedRating: number;\n stars: StarType[];\n showRating: boolean;\n getNextStarIndex: () => number;\n resetStarIndex: () => void;\n}\n\nconst RatingContext = createContext<RatingContext | undefined>(undefined);\n\nexport interface RatingRootProps extends ComponentProps<'div'> {\n rating: number;\n showRating?: boolean;\n children: ReactNode;\n}\n\nexport function RatingRoot({\n children,\n className,\n rating,\n showRating = true,\n ...props\n}: RatingRootProps) {\n const starIndexRef = useRef(0);\n\n const getNextStarIndex = useCallback(() => {\n const index = starIndexRef.current;\n\n starIndexRef.current += 1;\n\n return index;\n }, []);\n\n const resetStarIndex = useCallback(() => {\n starIndexRef.current = 0;\n }, []);\n\n const contextValues = useMemo(() => {\n const adjustedRating = Math.min(rating, 5);\n\n const stars: StarType[] = Array.from({ length: 5 }, (_, index) => {\n if (index < Math.floor(adjustedRating)) return 'full';\n if (index < Math.ceil(adjustedRating)) return 'half';\n\n return 'empty';\n });\n\n return {\n rating,\n adjustedRating,\n stars,\n showRating,\n getNextStarIndex,\n resetStarIndex,\n };\n }, [rating, showRating, getNextStarIndex, resetStarIndex]);\n\n return (\n <RatingContext.Provider value={contextValues}>\n <div className={cn('flex items-center', className)} {...props}>\n {children}\n </div>\n </RatingContext.Provider>\n );\n}\n\nexport function useRating() {\n const context = use(RatingContext);\n\n if (context === undefined) {\n throw new Error('useRating must be used within a RatingRoot');\n }\n\n return context;\n}\n","'use client';\n\nimport type { ComponentProps } from 'react';\n\nimport { useRating } from '@/components/rating';\nimport { cn } from '@/lib';\n\nexport type RatingStarProps = ComponentProps<'svg'>;\n\nexport function RatingStar({ className, ...props }: RatingStarProps) {\n const { stars, getNextStarIndex } = useRating();\n\n const index = getNextStarIndex();\n\n const type = stars[index] ?? 'empty';\n\n const paths = {\n empty: (\n <path\n d=\"M9.99984 1.66669L12.5748 6.88335L18.3332 7.72502L14.1665 11.7834L15.1498 17.5167L9.99984 14.8084L4.84984 17.5167L5.83317 11.7834L1.6665 7.72502L7.42484 6.88335L9.99984 1.66669Z\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeOpacity=\"0.4\"\n />\n ),\n half: (\n <>\n <path\n d=\"M9.99984 1.66669L12.5748 6.88335L18.3332 7.72502L14.1665 11.7834L15.1498 17.5167L9.99984 14.8084L4.84984 17.5167L5.83317 11.7834L1.6665 7.72502L7.42484 6.88335L9.99984 1.66669Z\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M10.0003 1.6665V14.8082L4.85033 17.5165L5.83366 11.7832L1.66699 7.72484L7.42533 6.88317L10.0003 1.6665Z\"\n fill=\"currentColor\"\n />\n </>\n ),\n full: (\n <path\n d=\"M9.99984 1.66669L12.5748 6.88335L18.3332 7.72502L14.1665 11.7834L15.1498 17.5167L9.99984 14.8084L4.84984 17.5167L5.83317 11.7834L1.6665 7.72502L7.42484 6.88335L9.99984 1.66669Z\"\n fill=\"currentColor\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n ),\n };\n\n return (\n <svg\n className={cn('inline-block text-[var(--rating-icon,hsl(var(--foreground)))]', className)}\n fill=\"none\"\n height={20}\n viewBox=\"0 0 20 20\"\n width={20}\n {...props}\n >\n {paths[type]}\n </svg>\n );\n}\n","'use client';\n\nimport { Star as RatingStar, useRating } from '@/components/rating';\n\nexport function RatingStars() {\n const { resetStarIndex } = useRating();\n\n resetStarIndex();\n\n return (\n <>\n {[0, 1, 2, 3, 4].map((i) => (\n <RatingStar key={i} />\n ))}\n </>\n );\n}\n","'use client';\n\nimport type { ComponentProps } from 'react';\n\nimport { useRating } from '@/components/rating';\nimport { cn } from '@/lib';\n\nexport type RatingValueProps = ComponentProps<'span'>;\n\nexport function RatingValue({ className, ...props }: RatingValueProps) {\n const { adjustedRating, showRating } = useRating();\n\n if (!showRating) return null;\n\n return (\n <span\n className={cn(\n 'ml-1.5 flex h-6 min-w-6 shrink-0 items-center justify-center rounded-full border border-[var(--rating-border,hsl(var(--contrast-100)))] px-1 text-xs font-medium text-[var(--rating-text,hsl(var(--contrast-400)))]',\n className,\n )}\n {...props}\n >\n {adjustedRating % 1 !== 0 ? adjustedRating.toFixed(1) : adjustedRating}\n </span>\n );\n}\n"],"names":["RatingContext","createContext","RatingRoot","children","className","rating","showRating","props","starIndexRef","useRef","getNextStarIndex","useCallback","index","resetStarIndex","contextValues","useMemo","adjustedRating","stars","_","jsx","cn","useRating","context","use","RatingStar","type","paths","jsxs","Fragment","RatingStars","i","RatingValue"],"mappings":"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"}