@rovela-ai/sdk 0.3.27 → 0.3.33

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 (38) hide show
  1. package/dist/admin/api/products.d.ts.map +1 -1
  2. package/dist/admin/api/products.js +20 -6
  3. package/dist/admin/api/products.js.map +1 -1
  4. package/dist/admin/api/setup-guide.d.ts.map +1 -1
  5. package/dist/admin/api/setup-guide.js +24 -7
  6. package/dist/admin/api/setup-guide.js.map +1 -1
  7. package/dist/admin/components/ProductTable.js +1 -1
  8. package/dist/admin/components/ProductTable.js.map +1 -1
  9. package/dist/admin/styles/admin-theme.css +35 -0
  10. package/dist/cart/store.d.ts +27 -0
  11. package/dist/cart/store.d.ts.map +1 -1
  12. package/dist/cart/store.js +59 -2
  13. package/dist/cart/store.js.map +1 -1
  14. package/dist/checkout/server/coupons.d.ts +91 -0
  15. package/dist/checkout/server/coupons.d.ts.map +1 -0
  16. package/dist/checkout/server/coupons.js +192 -0
  17. package/dist/checkout/server/coupons.js.map +1 -0
  18. package/dist/checkout/server/index.d.ts +2 -0
  19. package/dist/checkout/server/index.d.ts.map +1 -1
  20. package/dist/checkout/server/index.js +1 -0
  21. package/dist/checkout/server/index.js.map +1 -1
  22. package/dist/core/cookie-consent/CookieBanner.d.ts.map +1 -1
  23. package/dist/core/cookie-consent/CookieBanner.js +51 -15
  24. package/dist/core/cookie-consent/CookieBanner.js.map +1 -1
  25. package/dist/core/db/queries.d.ts +93 -15
  26. package/dist/core/db/queries.d.ts.map +1 -1
  27. package/dist/core/db/queries.js +147 -5
  28. package/dist/core/db/queries.js.map +1 -1
  29. package/dist/media/components/ImageGalleryUpload.d.ts.map +1 -1
  30. package/dist/media/components/ImageGalleryUpload.js +9 -2
  31. package/dist/media/components/ImageGalleryUpload.js.map +1 -1
  32. package/dist/products/components/ProductCard.d.ts.map +1 -1
  33. package/dist/products/components/ProductCard.js +8 -1
  34. package/dist/products/components/ProductCard.js.map +1 -1
  35. package/dist/products/components/ProductGallery.d.ts.map +1 -1
  36. package/dist/products/components/ProductGallery.js +14 -3
  37. package/dist/products/components/ProductGallery.js.map +1 -1
  38. package/package.json +5 -1
@@ -0,0 +1,91 @@
1
+ /**
2
+ * @rovela/sdk/checkout/server/coupons
3
+ *
4
+ * Thin wrappers around Stripe Coupons + PromotionCodes APIs.
5
+ *
6
+ * Used by feature cards that need to issue discount codes:
7
+ * - M4 birthday discount automation
8
+ * - M5 win-back campaign
9
+ * - M7 bulk coupon generator
10
+ * - M10 spinner wheel reward
11
+ *
12
+ * Stripe model:
13
+ * Coupon (the discount itself: e.g. "10% off") → 1
14
+ * PromotionCode (a unique code like "BIRTHDAY-AB12") → 1..N per coupon
15
+ *
16
+ * Single-use codes: max_redemptions: 1 (default for these helpers).
17
+ * Bulk codes: each gets its own PromotionCode bound to a single shared
18
+ * coupon. 200ms throttle between PromotionCode creates respects Stripe's
19
+ * 25-req/s rate limit on this endpoint with comfortable headroom.
20
+ *
21
+ * NOTE: Coupons + PromotionCodes are platform-level (live on the Rovela
22
+ * Stripe account, NOT on the merchant's connected account). They apply
23
+ * via the existing Stripe Checkout Session flow when `allow_promotion_codes`
24
+ * is enabled. See checkout-session creation for that wiring.
25
+ */
26
+ export interface CreateCouponWithCodeOptions {
27
+ /** Discount in cents (e.g. 1000 = $10 off). Mutually exclusive with `percentOff`. */
28
+ amountOff?: number;
29
+ /** Discount percentage (1–100). Mutually exclusive with `amountOff`. */
30
+ percentOff?: number;
31
+ /** ISO currency code (required when `amountOff` is set). */
32
+ currency?: string;
33
+ /** The promotion code string (e.g. "BIRTHDAY-AB12"). Auto-generated if omitted. */
34
+ code?: string;
35
+ /** Whether the coupon applies once or repeats. Defaults to 'once'. */
36
+ duration?: 'once' | 'forever';
37
+ /** Max redemptions for the PromotionCode. Defaults to 1 (single-use). */
38
+ maxRedemptions?: number;
39
+ /** Code expiration. Defaults to 30 days from creation. */
40
+ expiresAt?: Date;
41
+ /** Optional metadata attached to the coupon (Stripe limit: 50 keys / 500 chars). */
42
+ metadata?: Record<string, string>;
43
+ /** Human-readable name for Stripe dashboard. Optional. */
44
+ name?: string;
45
+ }
46
+ export interface CreateCouponResult {
47
+ couponId: string;
48
+ promotionCodeId: string;
49
+ /** The actual code string customers enter at checkout. */
50
+ code: string;
51
+ }
52
+ export interface CreateBulkPromotionCodesOptions {
53
+ /** Discount in cents. Mutually exclusive with `percentOff`. */
54
+ amountOff?: number;
55
+ /** Discount percentage (1–100). */
56
+ percentOff?: number;
57
+ currency?: string;
58
+ /** Optional code prefix (e.g. "BFCM2026" → codes look like "BFCM2026-XYZ123"). */
59
+ prefix?: string;
60
+ /** Number of codes to create. Hard cap: 1000. */
61
+ count: number;
62
+ expiresAt?: Date;
63
+ metadata?: Record<string, string>;
64
+ name?: string;
65
+ }
66
+ export interface CreateBulkResult {
67
+ couponId: string;
68
+ codes: string[];
69
+ }
70
+ /**
71
+ * Create a Stripe Coupon and a single PromotionCode bound to it.
72
+ *
73
+ * Use for one-off rewards: birthday code, win-back code, spinner-wheel win.
74
+ * For bulk distribution (1000 codes for an email blast), use
75
+ * `createBulkPromotionCodes` instead — it shares one coupon across all codes
76
+ * for cleaner Stripe dashboard accounting.
77
+ */
78
+ export declare function createCouponWithCode(options: CreateCouponWithCodeOptions): Promise<CreateCouponResult>;
79
+ /**
80
+ * Create one Stripe Coupon and N PromotionCodes bound to it.
81
+ *
82
+ * Used for bulk-code campaigns (M7 coupon generator). All codes share the
83
+ * same coupon, so Stripe dashboard shows a single discount entry with a
84
+ * tally of redemptions — cleaner than N separate coupons.
85
+ *
86
+ * Hard cap: 1000 codes per call (Stripe rate-limits PromotionCode creation).
87
+ * Codes are created sequentially with a 200ms throttle (yields ~5/s, well
88
+ * under Stripe's 25/s limit on this endpoint).
89
+ */
90
+ export declare function createBulkPromotionCodes(options: CreateBulkPromotionCodesOptions): Promise<CreateBulkResult>;
91
+ //# sourceMappingURL=coupons.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coupons.d.ts","sourceRoot":"","sources":["../../../src/checkout/server/coupons.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AASH,MAAM,WAAW,2BAA2B;IAC1C,qFAAqF;IACrF,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,wEAAwE;IACxE,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,4DAA4D;IAC5D,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,mFAAmF;IACnF,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,sEAAsE;IACtE,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC7B,yEAAyE;IACzE,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,0DAA0D;IAC1D,SAAS,CAAC,EAAE,IAAI,CAAA;IAChB,oFAAoF;IACpF,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACjC,0DAA0D;IAC1D,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAA;IAChB,eAAe,EAAE,MAAM,CAAA;IACvB,0DAA0D;IAC1D,IAAI,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,+BAA+B;IAC9C,+DAA+D;IAC/D,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,mCAAmC;IACnC,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,kFAAkF;IAClF,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,iDAAiD;IACjD,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,IAAI,CAAA;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACjC,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,MAAM,EAAE,CAAA;CAChB;AAuDD;;;;;;;GAOG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,2BAA2B,GACnC,OAAO,CAAC,kBAAkB,CAAC,CAgD7B;AAMD;;;;;;;;;;GAUG;AACH,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,+BAA+B,GACvC,OAAO,CAAC,gBAAgB,CAAC,CA+F3B"}
@@ -0,0 +1,192 @@
1
+ /**
2
+ * @rovela/sdk/checkout/server/coupons
3
+ *
4
+ * Thin wrappers around Stripe Coupons + PromotionCodes APIs.
5
+ *
6
+ * Used by feature cards that need to issue discount codes:
7
+ * - M4 birthday discount automation
8
+ * - M5 win-back campaign
9
+ * - M7 bulk coupon generator
10
+ * - M10 spinner wheel reward
11
+ *
12
+ * Stripe model:
13
+ * Coupon (the discount itself: e.g. "10% off") → 1
14
+ * PromotionCode (a unique code like "BIRTHDAY-AB12") → 1..N per coupon
15
+ *
16
+ * Single-use codes: max_redemptions: 1 (default for these helpers).
17
+ * Bulk codes: each gets its own PromotionCode bound to a single shared
18
+ * coupon. 200ms throttle between PromotionCode creates respects Stripe's
19
+ * 25-req/s rate limit on this endpoint with comfortable headroom.
20
+ *
21
+ * NOTE: Coupons + PromotionCodes are platform-level (live on the Rovela
22
+ * Stripe account, NOT on the merchant's connected account). They apply
23
+ * via the existing Stripe Checkout Session flow when `allow_promotion_codes`
24
+ * is enabled. See checkout-session creation for that wiring.
25
+ */
26
+ import { nanoid } from 'nanoid';
27
+ import { getStripe } from '../stripe/client';
28
+ // =============================================================================
29
+ // Hard caps (DO NOT lift without re-reviewing Stripe rate limits)
30
+ // =============================================================================
31
+ const MAX_BULK_CODES = 1000;
32
+ const BULK_THROTTLE_MS = 200;
33
+ // =============================================================================
34
+ // Helpers
35
+ // =============================================================================
36
+ function generateCodeSegment(length = 6) {
37
+ // Crockford-base32-ish (skip ambiguous 0/O/1/I/L) — easier for humans to type.
38
+ const alphabet = 'ABCDEFGHJKMNPQRSTUVWXYZ23456789';
39
+ return nanoid(length).replace(/[^A-Z0-9]/gi, () => alphabet[Math.floor(Math.random() * alphabet.length)]).toUpperCase().slice(0, length);
40
+ }
41
+ function buildCode(prefix) {
42
+ const segment = generateCodeSegment(8);
43
+ return prefix ? `${prefix}-${segment}` : segment;
44
+ }
45
+ function sleep(ms) {
46
+ return new Promise((resolve) => setTimeout(resolve, ms));
47
+ }
48
+ function validateDiscountInputs(amountOff, percentOff, currency) {
49
+ const hasAmount = typeof amountOff === 'number' && amountOff > 0;
50
+ const hasPercent = typeof percentOff === 'number' && percentOff > 0;
51
+ if (hasAmount === hasPercent) {
52
+ throw new Error('createCoupon: provide exactly one of `amountOff` or `percentOff`.');
53
+ }
54
+ if (hasAmount && !currency) {
55
+ throw new Error('createCoupon: `currency` is required when using `amountOff`.');
56
+ }
57
+ if (hasPercent && (percentOff < 1 || percentOff > 100)) {
58
+ throw new Error('createCoupon: `percentOff` must be between 1 and 100.');
59
+ }
60
+ }
61
+ // =============================================================================
62
+ // Single coupon + code (1:1)
63
+ // =============================================================================
64
+ /**
65
+ * Create a Stripe Coupon and a single PromotionCode bound to it.
66
+ *
67
+ * Use for one-off rewards: birthday code, win-back code, spinner-wheel win.
68
+ * For bulk distribution (1000 codes for an email blast), use
69
+ * `createBulkPromotionCodes` instead — it shares one coupon across all codes
70
+ * for cleaner Stripe dashboard accounting.
71
+ */
72
+ export async function createCouponWithCode(options) {
73
+ const { amountOff, percentOff, currency, code, duration = 'once', maxRedemptions = 1, expiresAt, metadata, name, } = options;
74
+ validateDiscountInputs(amountOff, percentOff, currency);
75
+ const stripe = getStripe();
76
+ // Default expiration: 30 days from now
77
+ const expires = expiresAt ?? new Date(Date.now() + 30 * 24 * 60 * 60 * 1000);
78
+ const redeemBy = Math.floor(expires.getTime() / 1000);
79
+ const coupon = await stripe.coupons.create({
80
+ duration,
81
+ ...(amountOff && currency
82
+ ? { amount_off: amountOff, currency }
83
+ : { percent_off: percentOff }),
84
+ redeem_by: redeemBy,
85
+ max_redemptions: maxRedemptions,
86
+ ...(name && { name }),
87
+ ...(metadata && { metadata }),
88
+ });
89
+ const finalCode = code ?? buildCode();
90
+ const promotionCode = await stripe.promotionCodes.create({
91
+ promotion: { type: 'coupon', coupon: coupon.id },
92
+ code: finalCode,
93
+ max_redemptions: maxRedemptions,
94
+ expires_at: redeemBy,
95
+ ...(metadata && { metadata }),
96
+ });
97
+ return {
98
+ couponId: coupon.id,
99
+ promotionCodeId: promotionCode.id,
100
+ code: finalCode,
101
+ };
102
+ }
103
+ // =============================================================================
104
+ // Bulk: one coupon, N codes (1:N)
105
+ // =============================================================================
106
+ /**
107
+ * Create one Stripe Coupon and N PromotionCodes bound to it.
108
+ *
109
+ * Used for bulk-code campaigns (M7 coupon generator). All codes share the
110
+ * same coupon, so Stripe dashboard shows a single discount entry with a
111
+ * tally of redemptions — cleaner than N separate coupons.
112
+ *
113
+ * Hard cap: 1000 codes per call (Stripe rate-limits PromotionCode creation).
114
+ * Codes are created sequentially with a 200ms throttle (yields ~5/s, well
115
+ * under Stripe's 25/s limit on this endpoint).
116
+ */
117
+ export async function createBulkPromotionCodes(options) {
118
+ const { amountOff, percentOff, currency, prefix, count, expiresAt, metadata, name, } = options;
119
+ if (!Number.isInteger(count) || count < 1) {
120
+ throw new Error('createBulkPromotionCodes: `count` must be a positive integer.');
121
+ }
122
+ if (count > MAX_BULK_CODES) {
123
+ throw new Error(`createBulkPromotionCodes: maximum ${MAX_BULK_CODES} codes per call (got ${count}).`);
124
+ }
125
+ validateDiscountInputs(amountOff, percentOff, currency);
126
+ const stripe = getStripe();
127
+ const expires = expiresAt ?? new Date(Date.now() + 90 * 24 * 60 * 60 * 1000);
128
+ const redeemBy = Math.floor(expires.getTime() / 1000);
129
+ // Create the shared coupon once.
130
+ const coupon = await stripe.coupons.create({
131
+ duration: 'once',
132
+ ...(amountOff && currency
133
+ ? { amount_off: amountOff, currency }
134
+ : { percent_off: percentOff }),
135
+ redeem_by: redeemBy,
136
+ max_redemptions: count,
137
+ ...(name && { name }),
138
+ ...(metadata && { metadata }),
139
+ });
140
+ const codes = [];
141
+ const seen = new Set();
142
+ for (let i = 0; i < count; i++) {
143
+ // Avoid collisions in case nanoid yields a dupe (extremely rare).
144
+ let candidate = buildCode(prefix);
145
+ let attempts = 0;
146
+ while (seen.has(candidate) && attempts < 5) {
147
+ candidate = buildCode(prefix);
148
+ attempts++;
149
+ }
150
+ seen.add(candidate);
151
+ try {
152
+ await stripe.promotionCodes.create({
153
+ promotion: { type: 'coupon', coupon: coupon.id },
154
+ code: candidate,
155
+ max_redemptions: 1,
156
+ expires_at: redeemBy,
157
+ ...(metadata && { metadata }),
158
+ });
159
+ codes.push(candidate);
160
+ }
161
+ catch (err) {
162
+ // Rare: code collision on Stripe side. Try one more nanoid before
163
+ // giving up the slot. Don't fail the whole batch.
164
+ const retry = buildCode(prefix);
165
+ try {
166
+ await stripe.promotionCodes.create({
167
+ promotion: { type: 'coupon', coupon: coupon.id },
168
+ code: retry,
169
+ max_redemptions: 1,
170
+ expires_at: redeemBy,
171
+ ...(metadata && { metadata }),
172
+ });
173
+ codes.push(retry);
174
+ }
175
+ catch {
176
+ // Surface the original error so the caller can decide whether to
177
+ // continue with a partial batch or abort.
178
+ const remaining = count - codes.length;
179
+ throw new Error(`createBulkPromotionCodes: failed at code ${codes.length + 1} of ${count} (${remaining} remaining). ` +
180
+ `Original error: ${err instanceof Error ? err.message : String(err)}`);
181
+ }
182
+ }
183
+ // Throttle every code except the last.
184
+ if (i < count - 1)
185
+ await sleep(BULK_THROTTLE_MS);
186
+ }
187
+ return {
188
+ couponId: coupon.id,
189
+ codes,
190
+ };
191
+ }
192
+ //# sourceMappingURL=coupons.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coupons.js","sourceRoot":"","sources":["../../../src/checkout/server/coupons.ts"],"names":[],"mappings":"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"}
@@ -7,4 +7,6 @@ export { createCheckoutSession, getCheckoutSession, deserializeItemsFromMetadata
7
7
  export type { CreateCheckoutSessionOptions } from './create-checkout-session';
8
8
  export { handleStripeWebhook } from './handle-webhook';
9
9
  export { createOrderFromCheckout, extractOrderParamsFromSession, handleRefund, } from './order-service';
10
+ export { createCouponWithCode, createBulkPromotionCodes, } from './coupons';
11
+ export type { CreateCouponWithCodeOptions, CreateCouponResult, CreateBulkPromotionCodesOptions, CreateBulkResult, } from './coupons';
10
12
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/checkout/server/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,qBAAqB,EACrB,kBAAkB,EAClB,4BAA4B,GAC7B,MAAM,2BAA2B,CAAA;AAElC,YAAY,EAAE,4BAA4B,EAAE,MAAM,2BAA2B,CAAA;AAE7E,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AAEtD,OAAO,EACL,uBAAuB,EACvB,6BAA6B,EAC7B,YAAY,GACb,MAAM,iBAAiB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/checkout/server/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,qBAAqB,EACrB,kBAAkB,EAClB,4BAA4B,GAC7B,MAAM,2BAA2B,CAAA;AAElC,YAAY,EAAE,4BAA4B,EAAE,MAAM,2BAA2B,CAAA;AAE7E,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AAEtD,OAAO,EACL,uBAAuB,EACvB,6BAA6B,EAC7B,YAAY,GACb,MAAM,iBAAiB,CAAA;AAExB,OAAO,EACL,oBAAoB,EACpB,wBAAwB,GACzB,MAAM,WAAW,CAAA;AAElB,YAAY,EACV,2BAA2B,EAC3B,kBAAkB,EAClB,+BAA+B,EAC/B,gBAAgB,GACjB,MAAM,WAAW,CAAA"}
@@ -6,4 +6,5 @@
6
6
  export { createCheckoutSession, getCheckoutSession, deserializeItemsFromMetadata, } from './create-checkout-session';
7
7
  export { handleStripeWebhook } from './handle-webhook';
8
8
  export { createOrderFromCheckout, extractOrderParamsFromSession, handleRefund, } from './order-service';
9
+ export { createCouponWithCode, createBulkPromotionCodes, } from './coupons';
9
10
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/checkout/server/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,qBAAqB,EACrB,kBAAkB,EAClB,4BAA4B,GAC7B,MAAM,2BAA2B,CAAA;AAIlC,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AAEtD,OAAO,EACL,uBAAuB,EACvB,6BAA6B,EAC7B,YAAY,GACb,MAAM,iBAAiB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/checkout/server/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,qBAAqB,EACrB,kBAAkB,EAClB,4BAA4B,GAC7B,MAAM,2BAA2B,CAAA;AAIlC,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AAEtD,OAAO,EACL,uBAAuB,EACvB,6BAA6B,EAC7B,YAAY,GACb,MAAM,iBAAiB,CAAA;AAExB,OAAO,EACL,oBAAoB,EACpB,wBAAwB,GACzB,MAAM,WAAW,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"CookieBanner.d.ts","sourceRoot":"","sources":["../../../src/core/cookie-consent/CookieBanner.tsx"],"names":[],"mappings":"AAkCA,wBAAgB,YAAY,mDAgG3B"}
1
+ {"version":3,"file":"CookieBanner.d.ts","sourceRoot":"","sources":["../../../src/core/cookie-consent/CookieBanner.tsx"],"names":[],"mappings":"AAkCA,wBAAgB,YAAY,mDAwG3B"}
@@ -72,13 +72,21 @@ export function CookieBanner() {
72
72
  };
73
73
  return (_jsxs("div", { role: "dialog", "aria-modal": "false", "aria-label": "Cookie consent", "aria-live": "polite", className: "rovela-cookie-banner", style: {
74
74
  position: 'fixed',
75
- bottom: '1rem',
76
- left: '1rem',
77
75
  zIndex: 2147483000,
78
- // Anchor to bottom-left. `maxWidth` sizes the card; removing the
79
- // matching `right` + `margin: '0 auto'` is what stops the browser
80
- // from centering it via equal left/right insets.
76
+ // Anchor with iOS safe-area awareness covers the home-indicator
77
+ // gesture area on iPhone X+ devices. `env()` falls back to `1rem`
78
+ // on browsers that don't support safe-area insets.
79
+ bottom: 'max(1rem, env(safe-area-inset-bottom, 1rem))',
80
+ left: 'max(1rem, env(safe-area-inset-left, 1rem))',
81
+ // `maxWidth` sizes the card; the absence of `right` + `margin: 0 auto`
82
+ // stops the browser from centering it via equal left/right insets.
83
+ // `maxHeight` + `overflowY: auto` is load-bearing — without it the
84
+ // banner can extend off-screen on landscape phones / foldables /
85
+ // short viewports (e.g. Layer 2 ~310px tall on iPhone SE landscape
86
+ // 568×320 → top of card off-screen, close button unreachable).
81
87
  maxWidth: `min(${showPreferences ? '28rem' : '26rem'}, calc(100vw - 2rem))`,
88
+ maxHeight: 'calc(100vh - 2rem)',
89
+ overflowY: 'auto',
82
90
  background: 'hsl(var(--card, 0 0% 100%))',
83
91
  border: '1px solid hsl(var(--border, 220 13% 91%))',
84
92
  borderRadius: '0.75rem',
@@ -109,7 +117,7 @@ function Layer2({ analytics, marketing, onAnalyticsChange, onMarketingChange, on
109
117
  gap: '0.5rem',
110
118
  marginTop: '1rem',
111
119
  justifyContent: 'space-between',
112
- }, children: [_jsxs("div", { style: { display: 'flex', gap: '0.5rem', flexWrap: 'wrap' }, children: [_jsx("button", { type: "button", onClick: onAcceptAll, style: tertiaryButtonStyle, children: "Accept all" }), _jsx("button", { type: "button", onClick: onRejectAll, style: tertiaryButtonStyle, children: "Reject all" })] }), _jsx("button", { type: "button", onClick: onSave, style: primaryButtonStyle, children: "Save preferences" })] })] }));
120
+ }, children: [_jsxs("div", { style: { display: 'flex', gap: '0.5rem', flexWrap: 'wrap' }, children: [_jsx("button", { type: "button", onClick: onAcceptAll, style: tertiaryButtonStyle, children: "Accept all" }), _jsx("button", { type: "button", onClick: onRejectAll, style: tertiaryButtonStyle, children: "Reject all" })] }), _jsx("button", { type: "button", onClick: onSave, style: { ...primaryButtonStyle, flex: '0 1 auto' }, children: "Save preferences" })] })] }));
113
121
  }
114
122
  function CategoryRow({ title, description, checked, onChange, locked, }) {
115
123
  return (_jsxs("div", { style: {
@@ -126,18 +134,36 @@ function CategoryRow({ title, description, checked, onChange, locked, }) {
126
134
  lineHeight: 1.45,
127
135
  color: 'hsl(var(--muted-foreground, 215 16% 47%))',
128
136
  }, children: description })] }), _jsx("label", { style: {
137
+ // 44×44 hit area meets WCAG / Apple HIG / Material guidance.
138
+ // Negative margin cancels the parent CategoryRow's padding so
139
+ // the visual layout is unchanged — only the underlying tap
140
+ // area expands. flexShrink: 0 protects the checkbox from being
141
+ // squeezed when localized title/description text is long.
129
142
  display: 'inline-flex',
130
143
  alignItems: 'center',
131
- gap: '0.5rem',
144
+ justifyContent: 'center',
145
+ width: '2.75rem',
146
+ height: '2.75rem',
147
+ margin: '-0.75rem',
148
+ flexShrink: 0,
132
149
  cursor: locked ? 'not-allowed' : 'pointer',
133
150
  opacity: locked ? 0.6 : 1,
134
- }, children: _jsx("input", { type: "checkbox", checked: checked, disabled: locked, onChange: (e) => onChange?.(e.target.checked), "aria-label": `Allow ${title.toLowerCase()} cookies`, style: { width: '1rem', height: '1rem', accentColor: 'hsl(var(--accent, 142 71% 45%))' } }) })] }));
151
+ }, children: _jsx("input", { type: "checkbox", checked: checked, disabled: locked, onChange: (e) => onChange?.(e.target.checked), "aria-label": `Allow ${title.toLowerCase()} cookies`, style: {
152
+ width: '1.125rem',
153
+ height: '1.125rem',
154
+ accentColor: 'hsl(var(--accent, 142 71% 45%))',
155
+ cursor: locked ? 'not-allowed' : 'pointer',
156
+ } }) })] }));
135
157
  }
136
158
  // =============================================================================
137
159
  // Inline styles — kept together so CSS-reset strips can't wreck them
138
160
  // =============================================================================
139
161
  const titleStyle = {
140
162
  margin: 0,
163
+ // Right padding clears space for the close button (now positioned
164
+ // inside the card at top-right with a 44×44 hit area), so the title
165
+ // never bleeds underneath it.
166
+ paddingRight: '2.5rem',
141
167
  fontSize: '1rem',
142
168
  fontWeight: 600,
143
169
  lineHeight: 1.3,
@@ -176,7 +202,11 @@ const secondaryButtonStyle = {
176
202
  cursor: 'pointer',
177
203
  };
178
204
  const tertiaryButtonStyle = {
179
- flex: '0 1 auto',
205
+ // `flex: 1 1 auto` (was 0 1 auto) so wrapped buttons grow to fill their
206
+ // row at narrow widths instead of leaving an awkward half-empty line.
207
+ // At wide widths flex-wrap doesn't trigger so behavior is identical
208
+ // to before.
209
+ flex: '1 1 auto',
180
210
  padding: '0.5rem 1rem',
181
211
  fontSize: '0.875rem',
182
212
  fontWeight: 500,
@@ -188,20 +218,26 @@ const tertiaryButtonStyle = {
188
218
  };
189
219
  const closeButtonStyle = {
190
220
  position: 'absolute',
191
- top: '-0.25rem',
192
- right: '-0.25rem',
193
- width: '1.5rem',
194
- height: '1.5rem',
221
+ // Moved INSIDE the card (was top/right: -0.25rem outside the corner).
222
+ // The previous outside-position meant the close button was the first
223
+ // thing clipped when the card extended to the viewport edge — making
224
+ // the banner undismissable on short viewports.
225
+ top: '0.5rem',
226
+ right: '0.5rem',
227
+ // 44×44 hit area meets WCAG/Apple HIG/Material guidance. The visible
228
+ // × glyph is sized via fontSize; the surrounding tap area is the box.
229
+ width: '2.75rem',
230
+ height: '2.75rem',
195
231
  display: 'flex',
196
232
  alignItems: 'center',
197
233
  justifyContent: 'center',
198
234
  padding: 0,
199
- fontSize: '1.125rem',
235
+ fontSize: '1.5rem',
200
236
  lineHeight: 1,
201
237
  color: 'hsl(var(--muted-foreground, 215 16% 47%))',
202
238
  background: 'transparent',
203
239
  border: 'none',
204
- borderRadius: '0.25rem',
240
+ borderRadius: '0.375rem',
205
241
  cursor: 'pointer',
206
242
  };
207
243
  //# sourceMappingURL=CookieBanner.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CookieBanner.js","sourceRoot":"","sources":["../../../src/core/cookie-consent/CookieBanner.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CookieBanner.js","sourceRoot":"","sources":["../../../src/core/cookie-consent/CookieBanner.tsx"],"names":[],"mappings":"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"}