@wix/ditto-codegen-public 1.0.49 → 1.0.50

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 (45) hide show
  1. package/dist/examples-apps/event-countdown/README.md +13 -0
  2. package/dist/examples-apps/event-countdown/astro.config.mjs +31 -0
  3. package/dist/examples-apps/event-countdown/package.json +51 -0
  4. package/dist/examples-apps/event-countdown/src/components/countdown-preview.tsx +164 -0
  5. package/dist/examples-apps/event-countdown/src/components/countdown-timer-settings.tsx +199 -0
  6. package/dist/examples-apps/event-countdown/src/dashboard/pages/countdown-timer-settings/extensions.ts +7 -0
  7. package/dist/examples-apps/event-countdown/src/dashboard/pages/countdown-timer-settings/page.tsx +142 -0
  8. package/dist/examples-apps/event-countdown/src/dashboard/withProviders.tsx +22 -0
  9. package/dist/examples-apps/event-countdown/src/extensions.ts +12 -0
  10. package/dist/examples-apps/event-countdown/src/index.ts +2 -0
  11. package/dist/examples-apps/event-countdown/src/site/embedded-scripts/countdown-timer/embedded.html +328 -0
  12. package/dist/examples-apps/event-countdown/src/site/embedded-scripts/countdown-timer/extensions.ts +8 -0
  13. package/dist/examples-apps/event-countdown/src/types.ts +11 -0
  14. package/dist/examples-apps/event-countdown/tsconfig.json +9 -0
  15. package/dist/examples-apps/event-countdown/wix.config.json +4 -0
  16. package/dist/examples-apps/site-popup/package.json +43 -26
  17. package/dist/examples-apps/site-popup/src/components/activation-configuration.tsx +1 -1
  18. package/dist/examples-apps/site-popup/src/components/close-button.css +33 -0
  19. package/dist/examples-apps/site-popup/src/components/close-button.tsx +4 -3
  20. package/dist/examples-apps/site-popup/src/components/popup/index.css +133 -3
  21. package/dist/examples-apps/site-popup/src/components/popup/index.tsx +10 -10
  22. package/dist/examples-apps/site-popup/src/components/site-popup-settings.tsx +4 -4
  23. package/dist/examples-apps/site-popup/src/dashboard/pages/page.tsx +2 -2
  24. package/dist/examples-apps/site-popup/src/dashboard/withProviders.tsx +4 -1
  25. package/dist/examples-apps/site-popup/src/extensions.ts +21 -0
  26. package/dist/examples-apps/site-popup/src/site/embedded-scripts/site-popup/embedded.html +1 -0
  27. package/dist/examples-apps/site-popup/src/site/embedded-scripts/site-popup/popup-overlay/index.css +21 -3
  28. package/dist/examples-apps/site-popup/src/site/embedded-scripts/site-popup/popup-overlay/index.tsx +8 -9
  29. package/dist/examples-apps/site-popup/src/types.ts +1 -1
  30. package/dist/out.js +1003 -63
  31. package/dist/wix-cli-templates/src/dashboard/pages/page.tsx +0 -4
  32. package/dist/wix-cli-templates/src/site/embedded-scripts/my-script/embedded.html +1 -2
  33. package/package.json +2 -2
  34. package/dist/examples-apps/mixpanel-analytics/src/dashboard/pages/page.json +0 -5
  35. package/dist/examples-apps/mixpanel-analytics/src/site/embedded-scripts/mixpanel-analytics/embedded.json +0 -7
  36. package/dist/examples-apps/site-popup/package-lock.json +0 -8033
  37. package/dist/examples-apps/site-popup/postcss.config.js +0 -7
  38. package/dist/examples-apps/site-popup/src/env.d.ts +0 -4
  39. package/dist/examples-apps/site-popup/src/site/embedded-scripts/site-popup/embedded.json +0 -7
  40. package/dist/examples-apps/site-popup/src/site/embedded-scripts/site-popup/params.dev.json +0 -7
  41. package/dist/examples-apps/site-popup/tailwind.config.js +0 -8
  42. package/dist/wix-cli-templates/src/dashboard/pages/wix_logo.svg +0 -18
  43. package/dist/wix-cli-templates/src/site/embedded-scripts/my-script/embedded.json +0 -7
  44. package/dist/wix-cli-templates/src/site/embedded-scripts/my-script/logger.ts +0 -1
  45. package/dist/wix-cli-templates/src/site/embedded-scripts/my-script/params.dev.json +0 -3
@@ -0,0 +1,328 @@
1
+ <div
2
+ id="countdown-config"
3
+ data-event-title="{{eventTitle}}"
4
+ data-event-description="{{eventDescription}}"
5
+ data-target-datetime="{{targetDateTime}}"
6
+ data-completion-message="{{completionMessage}}"
7
+ data-background-color="{{backgroundColor}}"
8
+ data-text-color="{{textColor}}"
9
+ data-position="{{position}}"
10
+ data-auto-hide="{{autoHide}}"
11
+ data-timer-size="{{timerSize}}"
12
+ ></div>
13
+ <div id="countdown-timer-container"></div>
14
+
15
+ <style>
16
+ .countdown-timer {
17
+ position: fixed;
18
+ z-index: 1000;
19
+ border-radius: 8px;
20
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
21
+ padding: 16px;
22
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
23
+ backdrop-filter: blur(10px);
24
+ border: 1px solid rgba(255, 255, 255, 0.2);
25
+ transition: all 0.3s ease;
26
+ }
27
+
28
+ .countdown-timer.top-left {
29
+ top: 20px;
30
+ left: 20px;
31
+ }
32
+
33
+ .countdown-timer.top-right {
34
+ top: 20px;
35
+ right: 20px;
36
+ }
37
+
38
+ .countdown-timer.bottom-left {
39
+ bottom: 20px;
40
+ left: 20px;
41
+ }
42
+
43
+ .countdown-timer.bottom-right {
44
+ bottom: 20px;
45
+ right: 20px;
46
+ }
47
+
48
+ .countdown-timer.center {
49
+ top: 50%;
50
+ left: 50%;
51
+ transform: translate(-50%, -50%);
52
+ }
53
+
54
+ .countdown-timer.small {
55
+ padding: 12px;
56
+ font-size: 14px;
57
+ }
58
+
59
+ .countdown-timer.medium {
60
+ padding: 16px;
61
+ font-size: 16px;
62
+ }
63
+
64
+ .countdown-timer.large {
65
+ padding: 24px;
66
+ font-size: 20px;
67
+ }
68
+
69
+ .countdown-title {
70
+ margin: 0 0 8px 0;
71
+ font-weight: 600;
72
+ text-align: center;
73
+ }
74
+
75
+ .countdown-description {
76
+ margin: 0 0 12px 0;
77
+ font-size: 0.9em;
78
+ opacity: 0.8;
79
+ text-align: center;
80
+ }
81
+
82
+ .countdown-display {
83
+ display: flex;
84
+ gap: 12px;
85
+ justify-content: center;
86
+ align-items: center;
87
+ }
88
+
89
+ .countdown-unit {
90
+ text-align: center;
91
+ min-width: 40px;
92
+ }
93
+
94
+ .countdown-number {
95
+ display: block;
96
+ font-weight: 700;
97
+ font-size: 1.5em;
98
+ line-height: 1;
99
+ }
100
+
101
+ .countdown-label {
102
+ display: block;
103
+ font-size: 0.7em;
104
+ opacity: 0.7;
105
+ margin-top: 2px;
106
+ }
107
+
108
+ .countdown-separator {
109
+ font-weight: 700;
110
+ font-size: 1.2em;
111
+ opacity: 0.6;
112
+ }
113
+
114
+ .countdown-completion {
115
+ text-align: center;
116
+ font-weight: 600;
117
+ padding: 8px 0;
118
+ }
119
+
120
+ .countdown-timer.hidden {
121
+ display: none;
122
+ }
123
+
124
+ @media (max-width: 480px) {
125
+ .countdown-timer {
126
+ max-width: calc(100vw - 40px);
127
+ }
128
+
129
+ .countdown-display {
130
+ gap: 8px;
131
+ }
132
+
133
+ .countdown-unit {
134
+ min-width: 35px;
135
+ }
136
+
137
+ .countdown-number {
138
+ font-size: 1.3em;
139
+ }
140
+ }
141
+ </style>
142
+
143
+ <script>
144
+ (function() {
145
+ 'use strict';
146
+
147
+ const config = document.getElementById('countdown-config');
148
+ if (!config) return;
149
+
150
+ const {
151
+ eventTitle,
152
+ eventDescription,
153
+ targetDatetime,
154
+ completionMessage,
155
+ backgroundColor,
156
+ textColor,
157
+ position,
158
+ autoHide,
159
+ timerSize
160
+ } = config.dataset;
161
+
162
+ if (!targetDatetime) {
163
+ console.warn('Countdown Timer: No target date specified');
164
+ return;
165
+ }
166
+
167
+ const targetDate = new Date(targetDatetime);
168
+ if (isNaN(targetDate.getTime())) {
169
+ console.warn('Countdown Timer: Invalid target date format');
170
+ return;
171
+ }
172
+
173
+ const container = document.getElementById('countdown-timer-container');
174
+ if (!container) return;
175
+
176
+ let countdownElement = null;
177
+ let intervalId = null;
178
+ let isCompleted = false;
179
+
180
+ function createCountdownElement() {
181
+ const timer = document.createElement('div');
182
+ timer.className = `countdown-timer ${position || 'bottom-right'} ${timerSize || 'medium'}`;
183
+ timer.style.backgroundColor = backgroundColor || '#FFFFFF';
184
+ timer.style.color = textColor || '#000000';
185
+
186
+ const titleElement = eventTitle ? `<div class="countdown-title">${escapeHtml(eventTitle)}</div>` : '';
187
+ const descriptionElement = eventDescription ? `<div class="countdown-description">${escapeHtml(eventDescription)}</div>` : '';
188
+
189
+ timer.innerHTML = `
190
+ ${titleElement}
191
+ ${descriptionElement}
192
+ <div class="countdown-display" id="countdown-display">
193
+ <div class="countdown-unit">
194
+ <span class="countdown-number" id="days">00</span>
195
+ <span class="countdown-label">Days</span>
196
+ </div>
197
+ <span class="countdown-separator">:</span>
198
+ <div class="countdown-unit">
199
+ <span class="countdown-number" id="hours">00</span>
200
+ <span class="countdown-label">Hours</span>
201
+ </div>
202
+ <span class="countdown-separator">:</span>
203
+ <div class="countdown-unit">
204
+ <span class="countdown-number" id="minutes">00</span>
205
+ <span class="countdown-label">Minutes</span>
206
+ </div>
207
+ <span class="countdown-separator">:</span>
208
+ <div class="countdown-unit">
209
+ <span class="countdown-number" id="seconds">00</span>
210
+ <span class="countdown-label">Seconds</span>
211
+ </div>
212
+ </div>
213
+ `;
214
+
215
+ return timer;
216
+ }
217
+
218
+ function escapeHtml(text) {
219
+ const div = document.createElement('div');
220
+ div.textContent = text;
221
+ return div.innerHTML;
222
+ }
223
+
224
+ function updateCountdown() {
225
+ const now = new Date().getTime();
226
+ const distance = targetDate.getTime() - now;
227
+
228
+ if (distance < 0) {
229
+ handleCountdownComplete();
230
+ return;
231
+ }
232
+
233
+ const days = Math.floor(distance / (1000 * 60 * 60 * 24));
234
+ const hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
235
+ const minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
236
+ const seconds = Math.floor((distance % (1000 * 60)) / 1000);
237
+
238
+ if (countdownElement) {
239
+ const daysEl = countdownElement.querySelector('#days');
240
+ const hoursEl = countdownElement.querySelector('#hours');
241
+ const minutesEl = countdownElement.querySelector('#minutes');
242
+ const secondsEl = countdownElement.querySelector('#seconds');
243
+
244
+ if (daysEl) daysEl.textContent = String(days).padStart(2, '0');
245
+ if (hoursEl) hoursEl.textContent = String(hours).padStart(2, '0');
246
+ if (minutesEl) minutesEl.textContent = String(minutes).padStart(2, '0');
247
+ if (secondsEl) secondsEl.textContent = String(seconds).padStart(2, '0');
248
+ }
249
+ }
250
+
251
+ function handleCountdownComplete() {
252
+ if (isCompleted) return;
253
+ isCompleted = true;
254
+
255
+ if (intervalId) {
256
+ clearInterval(intervalId);
257
+ intervalId = null;
258
+ }
259
+
260
+ if (autoHide === 'true') {
261
+ hideCountdown();
262
+ } else {
263
+ showCompletionMessage();
264
+ }
265
+ }
266
+
267
+ function showCompletionMessage() {
268
+ if (!countdownElement) return;
269
+
270
+ const displayElement = countdownElement.querySelector('#countdown-display');
271
+ if (displayElement) {
272
+ displayElement.innerHTML = `
273
+ <div class="countdown-completion">
274
+ ${escapeHtml(completionMessage || 'Event has started!')}
275
+ </div>
276
+ `;
277
+ }
278
+ }
279
+
280
+ function hideCountdown() {
281
+ if (countdownElement) {
282
+ countdownElement.classList.add('hidden');
283
+ }
284
+ }
285
+
286
+ function showCountdown() {
287
+ if (countdownElement) {
288
+ countdownElement.classList.remove('hidden');
289
+ }
290
+ }
291
+
292
+ function initializeCountdown() {
293
+ // Check if countdown is already completed
294
+ const now = new Date().getTime();
295
+ if (targetDate.getTime() <= now) {
296
+ isCompleted = true;
297
+ if (autoHide === 'true') {
298
+ return; // Don't show anything
299
+ }
300
+ }
301
+
302
+ countdownElement = createCountdownElement();
303
+ container.appendChild(countdownElement);
304
+
305
+ if (isCompleted) {
306
+ showCompletionMessage();
307
+ } else {
308
+ updateCountdown();
309
+ intervalId = setInterval(updateCountdown, 1000);
310
+ }
311
+ }
312
+
313
+ // Initialize when DOM is ready
314
+ if (document.readyState === 'loading') {
315
+ document.addEventListener('DOMContentLoaded', initializeCountdown);
316
+ } else {
317
+ initializeCountdown();
318
+ }
319
+
320
+ // Cleanup on page unload
321
+ window.addEventListener('beforeunload', function() {
322
+ if (intervalId) {
323
+ clearInterval(intervalId);
324
+ }
325
+ });
326
+
327
+ })();
328
+ </script>
@@ -0,0 +1,8 @@
1
+ import * as extensions from '@wix/astro/builders';
2
+ export const embeddedscriptcountdowntimer = extensions.embeddedScript({
3
+ "id": "f065e8bd-5906-49a5-91c6-fbd0d5d8b600",
4
+ "scriptType": "FUNCTIONAL",
5
+ "placement": "BODY_END",
6
+ "source": "./site/embedded-scripts/countdown-timer/embedded.html",
7
+ "name": "countdown-timer"
8
+ })
@@ -0,0 +1,11 @@
1
+ export type CountdownTimerOptions = {
2
+ eventTitle: string;
3
+ eventDescription?: string;
4
+ targetDateTime: string;
5
+ completionMessage: string;
6
+ backgroundColor: string;
7
+ textColor: string;
8
+ position: 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right' | 'center';
9
+ autoHide: boolean;
10
+ timerSize: 'small' | 'medium' | 'large';
11
+ };
@@ -0,0 +1,9 @@
1
+ {
2
+ "extends": "astro/tsconfigs/strictest",
3
+ "compilerOptions": {
4
+ "jsx": "react-jsx",
5
+ "jsxImportSource": "react"
6
+ },
7
+ "include": [".astro/types.d.ts", "**/*"],
8
+ "exclude": ["dist"]
9
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "appId": "54230258-14c1-41f8-9e34-75ff8cc7e0a1",
3
+ "siteId": "84465fce-8df2-4506-8cea-a6a1267cc3ee"
4
+ }
@@ -1,34 +1,51 @@
1
1
  {
2
2
  "name": "site-popup",
3
3
  "version": "1.0.0",
4
- "dependencies": {
5
- "@tanstack/react-query": "^4.36.1",
6
- "@wix/app-management": "^1.0.0",
7
- "@wix/dashboard": "^1.3.21",
8
- "@wix/design-system": "^1.111.0",
9
- "@wix/essentials": "^0.1.4",
10
- "@wix/site-site": "^1.2.0",
11
- "tailwindcss": "^3.4.1"
4
+ "scripts": {
5
+ "astro": "astro",
6
+ "dev": "wix dev",
7
+ "build": "wix build",
8
+ "wix": "wix",
9
+ "preview": "wix preview",
10
+ "release": "wix release",
11
+ "generate": "wix generate",
12
+ "env": "wix env"
12
13
  },
13
- "devDependencies": {
14
- "@types/react": "^16.0.0",
15
- "@types/react-dom": "^16.0.0",
16
- "@wix/cli": "^1.0.0",
17
- "@wix/cli-app": "^1.0.0",
14
+ "dependencies": {
15
+ "@astrojs/cloudflare": "^12.5.3",
16
+ "@astrojs/react": "^4.3.0",
17
+ "@tanstack/react-query": "^5.90.5",
18
+ "@types/react": "^18.3.1",
19
+ "@types/react-dom": "^18.3.1",
20
+ "@wix/app-management": "^1.0.122",
21
+ "@wix/astro": "^2.8.0",
22
+ "@wix/auto-patterns": "^1.40.0",
23
+ "@wix/cli": "^1.1.92",
24
+ "@wix/crm": "^1.0.1071",
25
+ "@wix/dashboard": "^1.3.40",
26
+ "@wix/data": "^1.0.290",
27
+ "@wix/design-system": "^1.217.0",
28
+ "@wix/ecom": "^1.0.1354",
29
+ "@wix/essentials": "^0.1.23",
30
+ "@wix/patterns": "^1.290.0",
31
+ "@wix/sdk": "^1.15.23",
18
32
  "@wix/sdk-types": "^1.0.0",
19
- "autoprefixer": "^10.4.17",
20
- "postcss": "^8.4.35",
21
- "react": "16.14.0",
22
- "react-dom": "16.14.0",
23
- "typescript": "^5.3.3"
33
+ "@wix/site-site": "^1.26.0",
34
+ "@wix/stores": "^1.0.533",
35
+ "@wix/wix-ui-icons-common": "^3.90.0",
36
+ "astro": "^5.8.0",
37
+ "react": "18.3.1",
38
+ "react-dom": "18.3.1",
39
+ "react-router-dom": "^6.0.0",
40
+ "typescript": "^5.8.3"
24
41
  },
25
- "scripts": {
26
- "build": "wix app build",
27
- "release": "wix app release",
28
- "dev": "wix app dev",
29
- "preview": "wix app preview",
30
- "logs": "wix app logs",
31
- "generate": "wix app generate",
32
- "typecheck": "tsc --noEmit"
42
+ "devDependencies": {
43
+ "@astrojs/cloudflare": "^12.5.3",
44
+ "@astrojs/react": "^4.3.0",
45
+ "@types/react": "^18.3.1",
46
+ "@types/react-dom": "^18.3.1",
47
+ "@wix/cli": "^1.1.92",
48
+ "react": "18.3.1",
49
+ "react-dom": "18.3.1"
33
50
  }
34
51
  }
@@ -1,7 +1,7 @@
1
1
  import React, { type FC } from 'react';
2
2
  import { Box, RadioGroup } from '@wix/design-system';
3
- import { ActivationMode, ActivationOptions } from '../types.js';
4
3
  import { DataRangePicker } from './date-range-picker.js';
4
+ import type { ActivationMode, ActivationOptions } from '../types.js';
5
5
 
6
6
  interface Props {
7
7
  activationOptions: ActivationOptions;
@@ -0,0 +1,33 @@
1
+ .close-button-wrapper {
2
+ display: flex;
3
+ justify-content: flex-end;
4
+ padding: 0.5rem;
5
+ }
6
+
7
+ .close-button {
8
+ background-color: rgba(255, 255, 255, 0.9);
9
+ color: #374151;
10
+ border-radius: 50%;
11
+ font-size: 0.875rem;
12
+ padding: 0.5rem;
13
+ margin-left: auto;
14
+ display: inline-flex;
15
+ align-items: center;
16
+ justify-content: center;
17
+ border: none;
18
+ cursor: pointer;
19
+ transition: all 0.2s ease;
20
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
21
+ }
22
+
23
+ .close-button:hover {
24
+ background-color: rgba(255, 255, 255, 1);
25
+ transform: scale(1.1);
26
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2);
27
+ }
28
+
29
+ .close-icon {
30
+ width: 1.25rem;
31
+ height: 1.25rem;
32
+ }
33
+
@@ -1,4 +1,5 @@
1
1
  import React, { type FC } from 'react';
2
+ import './close-button.css';
2
3
 
3
4
  interface Props {
4
5
  onClick?: () => void;
@@ -6,14 +7,14 @@ interface Props {
6
7
 
7
8
  export const CloseButton: FC<Props> = ({ onClick }) => {
8
9
  return (
9
- <div className="flex justify-end p-2">
10
+ <div className="close-button-wrapper">
10
11
  <button
11
12
  onClick={onClick}
12
13
  type="button"
13
- className="bg-transparent bg-gray-200 text-slate-200 rounded-lg text-sm p-1.5 ml-auto inline-flex items-center"
14
+ className="close-button"
14
15
  >
15
16
  <svg
16
- className="w-5 h-5"
17
+ className="close-icon"
17
18
  fill="currentColor"
18
19
  viewBox="0 0 20 20"
19
20
  xmlns="http://www.w3.org/2000/svg"
@@ -1,3 +1,133 @@
1
- @tailwind base;
2
- @tailwind components;
3
- @tailwind utilities;
1
+ .popup-card {
2
+ border-radius: 0.5rem;
3
+ box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25);
4
+ display: grid;
5
+ position: relative;
6
+ }
7
+
8
+ @media (min-width: 768px) {
9
+ .popup-card {
10
+ grid-template-columns: repeat(2, minmax(0, 1fr));
11
+ }
12
+ }
13
+
14
+ .close-btn-container {
15
+ position: absolute;
16
+ z-index: 1000;
17
+ }
18
+
19
+ .popup-content {
20
+ padding: 1rem;
21
+ text-align: center;
22
+ background-color: #1f2937;
23
+ display: flex;
24
+ flex-direction: column;
25
+ justify-content: space-between;
26
+ border-top-left-radius: 0.5rem;
27
+ border-bottom-left-radius: 0.5rem;
28
+ }
29
+
30
+ @media (min-width: 640px) {
31
+ .popup-content {
32
+ padding: 1.5rem;
33
+ }
34
+ }
35
+
36
+ @media (min-width: 768px) {
37
+ .popup-content {
38
+ grid-column: span 1;
39
+ }
40
+ }
41
+
42
+ @media (min-width: 1024px) {
43
+ .popup-content {
44
+ padding: 2rem;
45
+ }
46
+ }
47
+
48
+ .popup-text-container {
49
+ position: relative;
50
+ bottom: 0;
51
+ isolation: isolate;
52
+ overflow: hidden;
53
+ padding: 6rem 1rem;
54
+ }
55
+
56
+ @media (min-width: 640px) {
57
+ .popup-text-container {
58
+ padding-left: 3rem;
59
+ padding-right: 3rem;
60
+ }
61
+ }
62
+
63
+ @media (min-width: 1280px) {
64
+ .popup-text-container {
65
+ padding-top: 8rem;
66
+ padding-bottom: 8rem;
67
+ }
68
+ }
69
+
70
+ .popup-headline {
71
+ margin-left: auto;
72
+ margin-right: auto;
73
+ max-width: 42rem;
74
+ text-align: center;
75
+ font-size: 1.875rem;
76
+ font-weight: 700;
77
+ letter-spacing: -0.025em;
78
+ color: white;
79
+ }
80
+
81
+ @media (min-width: 640px) {
82
+ .popup-headline {
83
+ font-size: 2.25rem;
84
+ }
85
+ }
86
+
87
+ .popup-text {
88
+ margin-left: auto;
89
+ margin-right: auto;
90
+ margin-top: 0.5rem;
91
+ max-width: 36rem;
92
+ text-align: center;
93
+ font-size: 1.125rem;
94
+ line-height: 2rem;
95
+ color: #d1d5db;
96
+ }
97
+
98
+ .popup-button-container {
99
+ display: flex;
100
+ justify-content: center;
101
+ align-items: center;
102
+ padding: 1rem;
103
+ }
104
+
105
+ .popup-dont-show-button {
106
+ font-size: 0.875rem;
107
+ color: white;
108
+ background: transparent;
109
+ border: none;
110
+ cursor: pointer;
111
+ padding: 0.5rem 1rem;
112
+ transition: opacity 0.2s ease;
113
+ }
114
+
115
+ .popup-dont-show-button:hover {
116
+ opacity: 0.8;
117
+ text-decoration: underline;
118
+ }
119
+
120
+ .popup-image {
121
+ height: 16rem;
122
+ object-fit: cover;
123
+ width: 100%;
124
+ border-top-right-radius: 0.5rem;
125
+ border-bottom-right-radius: 0.5rem;
126
+ }
127
+
128
+ @media (min-width: 768px) {
129
+ .popup-image {
130
+ height: 100%;
131
+ }
132
+ }
133
+