@product7/product7-js 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 (58) hide show
  1. package/README.md +1025 -0
  2. package/dist/README.md +1025 -0
  3. package/dist/product7-js.js +14658 -0
  4. package/dist/product7-js.js.map +1 -0
  5. package/dist/product7-js.min.js +2 -0
  6. package/dist/product7-js.min.js.map +1 -0
  7. package/package.json +114 -0
  8. package/src/api/mock-data/index.js +360 -0
  9. package/src/api/services/ChangelogService.js +28 -0
  10. package/src/api/services/FeedbackService.js +44 -0
  11. package/src/api/services/HelpService.js +50 -0
  12. package/src/api/services/MessengerService.js +279 -0
  13. package/src/api/services/SurveyService.js +127 -0
  14. package/src/api/utils/helpers.js +30 -0
  15. package/src/core/APIService.js +303 -0
  16. package/src/core/BaseAPIService.js +298 -0
  17. package/src/core/EventBus.js +54 -0
  18. package/src/core/Product7.js +812 -0
  19. package/src/core/WebSocketService.js +275 -0
  20. package/src/docs/api.md +226 -0
  21. package/src/docs/example.md +461 -0
  22. package/src/docs/framework-integrations.md +714 -0
  23. package/src/docs/installation.md +281 -0
  24. package/src/index.js +894 -0
  25. package/src/styles/base.js +50 -0
  26. package/src/styles/changelog.js +665 -0
  27. package/src/styles/components.js +553 -0
  28. package/src/styles/design-tokens.js +124 -0
  29. package/src/styles/feedback.js +325 -0
  30. package/src/styles/messenger-components.js +632 -0
  31. package/src/styles/messenger-core.js +233 -0
  32. package/src/styles/messenger-features.js +169 -0
  33. package/src/styles/messenger-views.js +877 -0
  34. package/src/styles/messenger.js +17 -0
  35. package/src/styles/messengerCustomStyles.js +114 -0
  36. package/src/styles/styles.js +26 -0
  37. package/src/styles/survey.js +894 -0
  38. package/src/utils/errors.js +142 -0
  39. package/src/utils/helpers.js +219 -0
  40. package/src/widgets/BaseWidget.js +548 -0
  41. package/src/widgets/ButtonWidget.js +104 -0
  42. package/src/widgets/ChangelogWidget.js +615 -0
  43. package/src/widgets/InlineWidget.js +148 -0
  44. package/src/widgets/MessengerWidget.js +979 -0
  45. package/src/widgets/SurveyWidget.js +1325 -0
  46. package/src/widgets/TabWidget.js +45 -0
  47. package/src/widgets/WidgetFactory.js +70 -0
  48. package/src/widgets/messenger/MessengerState.js +323 -0
  49. package/src/widgets/messenger/components/MessengerLauncher.js +124 -0
  50. package/src/widgets/messenger/components/MessengerPanel.js +111 -0
  51. package/src/widgets/messenger/components/NavigationTabs.js +130 -0
  52. package/src/widgets/messenger/views/ChangelogView.js +167 -0
  53. package/src/widgets/messenger/views/ChatView.js +592 -0
  54. package/src/widgets/messenger/views/ConversationsView.js +244 -0
  55. package/src/widgets/messenger/views/HelpView.js +239 -0
  56. package/src/widgets/messenger/views/HomeView.js +300 -0
  57. package/src/widgets/messenger/views/PreChatFormView.js +109 -0
  58. package/types/index.d.ts +341 -0
@@ -0,0 +1,553 @@
1
+ export const componentsStyles = `
2
+ .sdk-btn {
3
+ display: inline-flex;
4
+ align-items: center;
5
+ justify-content: center;
6
+ gap: var(--spacing-2);
7
+ border-radius: 8px;
8
+ border: none;
9
+ font-size: var(--font-size-md);
10
+ font-weight: var(--font-weight-medium);
11
+ font-family: inherit;
12
+ cursor: pointer;
13
+ transition: all var(--transition-base);
14
+ outline: none;
15
+ }
16
+
17
+ .sdk-btn:disabled {
18
+ opacity: 0.6;
19
+ cursor: not-allowed;
20
+ }
21
+
22
+ .sdk-btn:focus-visible {
23
+ outline: 2px solid var(--color-primary);
24
+ outline-offset: 2px;
25
+ }
26
+
27
+ .sdk-btn-primary {
28
+ display: inline-flex;
29
+ align-items: center;
30
+ justify-content: center;
31
+ gap: var(--spacing-2);
32
+ background: var(--color-primary);
33
+ color: var(--color-white);
34
+ border: 1px solid var(--color-primary);
35
+ border-radius: 8px;
36
+ font-size: var(--font-size-base);
37
+ font-weight: var(--font-weight-medium);
38
+ font-family: inherit;
39
+ cursor: pointer;
40
+ height: 40px;
41
+ padding: 8px 18px;
42
+ transition: all var(--transition-base);
43
+ }
44
+
45
+ .sdk-btn-primary:disabled {
46
+ opacity: 0.6;
47
+ cursor: not-allowed;
48
+ }
49
+
50
+ .sdk-btn-primary:hover:not(:disabled) {
51
+ background: var(--color-primary-hover);
52
+ }
53
+
54
+ .sdk-btn-primary:active:not(:disabled) {
55
+ background: var(--color-primary-active);
56
+ transform: translateY(1px);
57
+ transition-duration: 100ms;
58
+ }
59
+
60
+ .sdk-btn-secondary {
61
+ background: transparent;
62
+ color: var(--color-neutral-600);
63
+ border: 1px solid var(--color-border);
64
+ height: 40px;
65
+ padding: 8px 18px;
66
+ }
67
+
68
+ .sdk-btn-secondary:hover:not(:disabled) {
69
+ background: var(--color-neutral-50);
70
+ border-color: var(--color-neutral-400);
71
+ color: var(--color-neutral-700);
72
+ }
73
+
74
+ .sdk-btn-secondary:active:not(:disabled) {
75
+ transform: translateY(1px);
76
+ transition-duration: 100ms;
77
+ }
78
+
79
+ .sdk-btn-ghost {
80
+ background: transparent;
81
+ color: var(--color-neutral-600);
82
+ }
83
+
84
+ .sdk-btn-ghost:hover:not(:disabled) {
85
+ background: var(--color-neutral-100);
86
+ color: var(--color-neutral-700);
87
+ }
88
+
89
+ .sdk-btn-ghost:active:not(:disabled) {
90
+ transform: translateY(1px);
91
+ transition-duration: 100ms;
92
+ }
93
+
94
+ .sdk-btn-sm {
95
+ height: 36px;
96
+ padding: 8px 14px;
97
+ font-size: var(--font-size-base);
98
+ }
99
+
100
+ .sdk-btn-lg {
101
+ height: 48px;
102
+ padding: 12px 20px;
103
+ font-size: var(--font-size-lg);
104
+ }
105
+
106
+ .sdk-btn-pill {
107
+ border-radius: var(--radius-full);
108
+ }
109
+
110
+ .sdk-btn-block {
111
+ width: 100%;
112
+ }
113
+
114
+ .sdk-btn-icon {
115
+ display: flex;
116
+ align-items: center;
117
+ justify-content: center;
118
+ width: 36px;
119
+ height: 36px;
120
+ border: none;
121
+ background: none;
122
+ border-radius: 8px;
123
+ cursor: pointer;
124
+ color: var(--color-text-secondary);
125
+ transition: all var(--transition-base);
126
+ padding: 0;
127
+ }
128
+
129
+ .sdk-btn-icon:hover {
130
+ background: rgba(128, 128, 128, 0.12);
131
+ color: var(--color-text-primary);
132
+ }
133
+
134
+ .sdk-btn-icon:active {
135
+ transform: translateY(1px);
136
+ transition-duration: 100ms;
137
+ }
138
+
139
+ .sdk-input {
140
+ width: 100%;
141
+ height: 40px;
142
+ border-radius: 8px;
143
+ border: 1px solid var(--color-border);
144
+ padding: 8px 14px;
145
+ font-size: var(--font-size-md);
146
+ font-weight: var(--font-weight-normal);
147
+ line-height: var(--line-height-relaxed);
148
+ color: var(--color-text-primary);
149
+ font-family: inherit;
150
+ outline: none;
151
+ transition: all var(--transition-base);
152
+ background: var(--color-white);
153
+ }
154
+
155
+ .sdk-input::placeholder {
156
+ color: var(--color-text-tertiary);
157
+ }
158
+
159
+ .sdk-input:focus {
160
+ border-color: var(--color-primary);
161
+ box-shadow: 0 0 0 3px var(--color-primary-light);
162
+ }
163
+
164
+ .sdk-input:disabled {
165
+ background: var(--color-neutral-50);
166
+ cursor: not-allowed;
167
+ }
168
+
169
+ .sdk-textarea {
170
+ width: 100%;
171
+ min-height: 120px;
172
+ resize: vertical;
173
+ border-radius: 8px;
174
+ border: 1px solid var(--color-border);
175
+ padding: 10px 14px;
176
+ font-size: var(--font-size-md);
177
+ font-weight: var(--font-weight-normal);
178
+ line-height: var(--line-height-relaxed);
179
+ color: var(--color-text-primary);
180
+ font-family: inherit;
181
+ outline: none;
182
+ transition: all var(--transition-base);
183
+ background: var(--color-white);
184
+ }
185
+
186
+ .sdk-textarea::placeholder {
187
+ color: var(--color-text-tertiary);
188
+ }
189
+
190
+ .sdk-textarea:focus {
191
+ border-color: var(--color-primary);
192
+ box-shadow: 0 0 0 3px var(--color-primary-light);
193
+ }
194
+
195
+ .sdk-select {
196
+ width: 100%;
197
+ height: 40px;
198
+ border-radius: 8px;
199
+ border: 1px solid var(--color-border);
200
+ padding: 8px 14px;
201
+ font-size: var(--font-size-md);
202
+ color: var(--color-text-primary);
203
+ font-family: inherit;
204
+ outline: none;
205
+ transition: all var(--transition-base);
206
+ background: var(--color-white);
207
+ cursor: pointer;
208
+ }
209
+
210
+ .sdk-select:focus {
211
+ border-color: var(--color-primary);
212
+ box-shadow: 0 0 0 3px var(--color-primary-light);
213
+ }
214
+
215
+ .sdk-label {
216
+ display: block;
217
+ font-size: var(--font-size-base);
218
+ font-weight: var(--font-weight-medium);
219
+ line-height: var(--line-height-tight);
220
+ color: var(--color-neutral-700);
221
+ margin-bottom: var(--spacing-2);
222
+ }
223
+
224
+ .sdk-required {
225
+ color: var(--color-error, #D13212);
226
+ margin-left: 1px;
227
+ }
228
+
229
+ .sdk-form-group {
230
+ display: flex;
231
+ flex-direction: column;
232
+ margin-bottom: var(--spacing-5);
233
+ }
234
+
235
+ .sdk-form-group:last-child {
236
+ margin-bottom: 0;
237
+ }
238
+
239
+ .sdk-card {
240
+ background: var(--color-white);
241
+ border-radius: 10px;
242
+ box-shadow: var(--shadow-base);
243
+ overflow: hidden;
244
+ }
245
+
246
+ .sdk-card-header {
247
+ padding: var(--spacing-6);
248
+ border-bottom: 1px solid var(--color-border);
249
+ }
250
+
251
+ .sdk-card-body {
252
+ padding: var(--spacing-6);
253
+ }
254
+
255
+ .sdk-card-footer {
256
+ padding: var(--spacing-6);
257
+ border-top: 1px solid var(--color-border);
258
+ }
259
+
260
+ .sdk-modal-backdrop {
261
+ position: fixed;
262
+ top: 0;
263
+ left: 0;
264
+ right: 0;
265
+ bottom: 0;
266
+ background: rgba(0, 0, 0, 0.5);
267
+ opacity: 0;
268
+ transition: opacity var(--transition-slow);
269
+ pointer-events: none;
270
+ z-index: var(--z-modal-backdrop);
271
+ }
272
+
273
+ .sdk-modal-backdrop.show {
274
+ opacity: 1;
275
+ pointer-events: auto;
276
+ }
277
+
278
+ .sdk-modal {
279
+ position: fixed;
280
+ top: 0;
281
+ left: 0;
282
+ right: 0;
283
+ bottom: 0;
284
+ z-index: var(--z-modal);
285
+ display: flex;
286
+ align-items: center;
287
+ justify-content: center;
288
+ padding: var(--spacing-5);
289
+ pointer-events: none;
290
+ }
291
+
292
+ .sdk-modal.open {
293
+ pointer-events: auto;
294
+ }
295
+
296
+ .sdk-modal-container {
297
+ position: relative;
298
+ width: 100%;
299
+ max-width: 580px;
300
+ max-height: 90vh;
301
+ background: var(--color-white);
302
+ border-radius: 10px;
303
+ overflow: hidden;
304
+ box-shadow: var(--shadow-2xl);
305
+ transform: scale(0.95) translateY(20px);
306
+ opacity: 0;
307
+ transition: all var(--transition-slow);
308
+ }
309
+
310
+ .sdk-modal.open .sdk-modal-container {
311
+ transform: scale(1) translateY(0);
312
+ opacity: 1;
313
+ }
314
+
315
+ .sdk-modal-header {
316
+ display: flex;
317
+ align-items: center;
318
+ justify-content: space-between;
319
+ padding: var(--spacing-6);
320
+ border-bottom: 1px solid var(--color-border);
321
+ }
322
+
323
+ .sdk-modal-title {
324
+ margin: 0;
325
+ font-size: var(--font-size-xl);
326
+ font-weight: var(--font-weight-semibold);
327
+ color: var(--color-text-primary);
328
+ }
329
+
330
+ .sdk-modal-body {
331
+ overflow-y: auto;
332
+ max-height: calc(90vh - 120px);
333
+ }
334
+
335
+ .sdk-close-btn {
336
+ background: none;
337
+ border: none;
338
+ padding: 0;
339
+ cursor: pointer;
340
+ color: var(--color-neutral-500);
341
+ display: flex;
342
+ align-items: center;
343
+ justify-content: center;
344
+ width: 28px;
345
+ height: 28px;
346
+ border-radius: 8px;
347
+ transition: all var(--transition-base);
348
+ line-height: 1;
349
+ flex-shrink: 0;
350
+ }
351
+
352
+ .sdk-close-btn:hover {
353
+ background: rgba(128, 128, 128, 0.12);
354
+ color: var(--color-text-primary);
355
+ }
356
+
357
+ .sdk-close-btn:active {
358
+ transform: translateY(1px);
359
+ transition-duration: 100ms;
360
+ }
361
+
362
+ .sdk-close-btn svg {
363
+ width: 18px;
364
+ height: 18px;
365
+ }
366
+
367
+ .sdk-avatar {
368
+ display: flex;
369
+ align-items: center;
370
+ justify-content: center;
371
+ background: var(--color-primary);
372
+ color: var(--color-white);
373
+ font-weight: var(--font-weight-semibold);
374
+ border-radius: var(--radius-full);
375
+ overflow: hidden;
376
+ flex-shrink: 0;
377
+ }
378
+
379
+ .sdk-avatar-sm {
380
+ width: 24px;
381
+ height: 24px;
382
+ font-size: var(--font-size-xs);
383
+ }
384
+
385
+ .sdk-avatar-md {
386
+ width: 32px;
387
+ height: 32px;
388
+ font-size: var(--font-size-sm);
389
+ }
390
+
391
+ .sdk-avatar-lg {
392
+ width: 40px;
393
+ height: 40px;
394
+ font-size: var(--font-size-base);
395
+ }
396
+
397
+ .sdk-avatar img {
398
+ width: 100%;
399
+ height: 100%;
400
+ object-fit: cover;
401
+ }
402
+
403
+ .sdk-badge {
404
+ display: inline-flex;
405
+ align-items: center;
406
+ justify-content: center;
407
+ padding: 2px var(--spacing-2);
408
+ border-radius: var(--radius-full);
409
+ font-size: var(--font-size-xs);
410
+ font-weight: var(--font-weight-semibold);
411
+ line-height: 1;
412
+ }
413
+
414
+ .sdk-badge-primary {
415
+ background: var(--color-primary-light);
416
+ color: var(--color-primary);
417
+ }
418
+
419
+ .sdk-badge-success {
420
+ background: var(--color-success-light);
421
+ color: var(--color-success-dark);
422
+ }
423
+
424
+ .sdk-badge-error {
425
+ background: var(--color-error-light);
426
+ color: var(--color-error-dark);
427
+ }
428
+
429
+ .sdk-badge-dot {
430
+ width: 8px;
431
+ height: 8px;
432
+ border-radius: var(--radius-full);
433
+ position: absolute;
434
+ top: -2px;
435
+ right: -2px;
436
+ }
437
+
438
+ .sdk-badge-dot.primary {
439
+ background: var(--color-primary);
440
+ }
441
+
442
+ .sdk-badge-dot.error {
443
+ background: var(--color-error);
444
+ border: 2px solid var(--color-white);
445
+ }
446
+
447
+ .sdk-notification {
448
+ position: fixed;
449
+ top: var(--spacing-6);
450
+ right: var(--spacing-6);
451
+ z-index: var(--z-notification);
452
+ background: var(--color-white);
453
+ border-radius: 10px;
454
+ box-shadow: var(--shadow-lg);
455
+ min-width: 320px;
456
+ animation: slideInRight 0.3s cubic-bezier(0.4, 0, 0.2, 1);
457
+ }
458
+
459
+ .sdk-notification-content {
460
+ display: flex;
461
+ align-items: center;
462
+ padding: var(--spacing-4) var(--spacing-5);
463
+ gap: var(--spacing-3);
464
+ }
465
+
466
+ .sdk-notification-success {
467
+ border: 1px solid var(--color-success-light);
468
+ }
469
+
470
+ .sdk-notification-success .sdk-notification-icon {
471
+ width: 20px;
472
+ height: 20px;
473
+ border-radius: var(--radius-full);
474
+ background: var(--color-success);
475
+ color: var(--color-white);
476
+ display: flex;
477
+ align-items: center;
478
+ justify-content: center;
479
+ font-size: var(--font-size-sm);
480
+ font-weight: var(--font-weight-semibold);
481
+ flex-shrink: 0;
482
+ }
483
+
484
+ .sdk-notification-text {
485
+ color: var(--color-success-dark);
486
+ font-weight: var(--font-weight-medium);
487
+ font-size: var(--font-size-base);
488
+ flex: 1;
489
+ }
490
+
491
+ .sdk-notification .sdk-close-btn {
492
+ flex-shrink: 0;
493
+ }
494
+
495
+ .sdk-spinner {
496
+ width: 32px;
497
+ height: 32px;
498
+ border: 3px solid var(--color-neutral-200);
499
+ border-top-color: var(--color-primary);
500
+ border-radius: var(--radius-full);
501
+ animation: spin 0.8s linear infinite;
502
+ }
503
+
504
+ .sdk-spinner-sm {
505
+ width: 20px;
506
+ height: 20px;
507
+ border-width: 2px;
508
+ }
509
+
510
+ @keyframes spin {
511
+ to {
512
+ transform: rotate(360deg);
513
+ }
514
+ }
515
+
516
+ @keyframes slideInRight {
517
+ from {
518
+ transform: translateX(400px);
519
+ opacity: 0;
520
+ }
521
+ to {
522
+ transform: translateX(0);
523
+ opacity: 1;
524
+ }
525
+ }
526
+
527
+ @keyframes fadeIn {
528
+ from {
529
+ opacity: 0;
530
+ }
531
+ to {
532
+ opacity: 1;
533
+ }
534
+ }
535
+
536
+ @media (max-width: 768px) {
537
+ .sdk-modal {
538
+ padding: var(--spacing-4);
539
+ }
540
+
541
+ .sdk-modal-container {
542
+ max-width: 100%;
543
+ border-radius: 10px;
544
+ }
545
+
546
+ .sdk-notification {
547
+ top: var(--spacing-4);
548
+ right: var(--spacing-4);
549
+ left: var(--spacing-4);
550
+ min-width: auto;
551
+ }
552
+ }
553
+ `;
@@ -0,0 +1,124 @@
1
+ export const designTokens = `
2
+ :root {
3
+ --color-primary: #155EEF;
4
+ --color-primary-hover: #1249CA;
5
+ --color-primary-active: #0D3A9F;
6
+ --color-primary-light: rgba(21, 94, 239, 0.1);
7
+ --color-primary-border: rgba(21, 94, 239, 0.3);
8
+
9
+ --color-success: #10B981;
10
+ --color-success-hover: #059669;
11
+ --color-success-light: #D1FAE5;
12
+ --color-success-dark: #065F46;
13
+
14
+ --color-error: #EF4444;
15
+ --color-error-hover: #DC2626;
16
+ --color-error-light: #FEE2E2;
17
+ --color-error-dark: #991B1B;
18
+ --color-error-border: #FECACA;
19
+
20
+ --color-warning: #F59E0B;
21
+ --color-warning-light: #FEF3C7;
22
+
23
+ --color-neutral-50: #F9FAFB;
24
+ --color-neutral-100: #F3F4F6;
25
+ --color-neutral-200: #E5E7EB;
26
+ --color-neutral-300: #D1D5DB;
27
+ --color-neutral-400: #9CA3AF;
28
+ --color-neutral-500: #6B7280;
29
+ --color-neutral-600: #4B5563;
30
+ --color-neutral-700: #374151;
31
+ --color-neutral-800: #1F2937;
32
+ --color-neutral-900: #111827;
33
+
34
+ --color-white: #FFFFFF;
35
+ --color-black: #000000;
36
+
37
+ --color-background: #FFFFFF;
38
+ --color-surface: #F9FAFB;
39
+ --color-border: #E5E7EB;
40
+ --color-text-primary: #111827;
41
+ --color-text-secondary: #4B5563;
42
+ --color-text-tertiary: #6B7280;
43
+
44
+ /* Messenger semantic tokens (light defaults) */
45
+ --msg-bg: #FFFFFF;
46
+ --msg-bg-surface: #F3F4F6;
47
+ --msg-bg-elevated: #FFFFFF;
48
+ --msg-bg-hover: #F9FAFB;
49
+ --msg-bg-input: rgba(255, 255, 255, 0.7);
50
+ --msg-bg-bubble-own: #FFFFFF;
51
+ --msg-bg-bubble-received: #F3F4F6;
52
+ --msg-bg-header-gradient: linear-gradient(180deg, #e0e7ff 0%, #f0f4ff 35%, #FFFFFF 65%);
53
+ --msg-bg-header-glow1: radial-gradient(circle, rgba(21, 94, 239, 0.08) 0%, transparent 70%);
54
+ --msg-bg-header-glow2: radial-gradient(circle, rgba(139, 92, 246, 0.05) 0%, transparent 70%);
55
+ --msg-text: #111827;
56
+ --msg-text-secondary: #4B5563;
57
+ --msg-text-tertiary: #6B7280;
58
+ --msg-text-muted: #9CA3AF;
59
+ --msg-border: #E5E7EB;
60
+ --msg-border-bubble: #E5E7EB;
61
+ --msg-shadow-card: rgba(9, 30, 66, 0.25) 0px 1px 1px, rgba(9, 30, 66, 0.13) 0px 0px 1px 1px;
62
+ --msg-shadow-card-hover: rgba(9, 30, 66, 0.3) 0px 2px 2px, rgba(9, 30, 66, 0.18) 0px 0px 1px 1px;
63
+
64
+ --spacing-1: 4px;
65
+ --spacing-2: 8px;
66
+ --spacing-3: 12px;
67
+ --spacing-4: 16px;
68
+ --spacing-5: 20px;
69
+ --spacing-6: 24px;
70
+ --spacing-7: 28px;
71
+ --spacing-8: 32px;
72
+ --spacing-10: 40px;
73
+ --spacing-12: 48px;
74
+
75
+ --font-size-xs: 0.75rem;
76
+ --font-size-sm: 0.8125rem;
77
+ --font-size-base: 0.875rem;
78
+ --font-size-md: 0.9375rem;
79
+ --font-size-lg: 1rem;
80
+ --font-size-xl: 1.125rem;
81
+ --font-size-2xl: 1.25rem;
82
+ --font-size-3xl: 1.5rem;
83
+
84
+ --font-weight-normal: 450;
85
+ --font-weight-medium: 500;
86
+ --font-weight-semibold: 600;
87
+ --font-weight-bold: 700;
88
+
89
+ --line-height-tight: 1.25;
90
+ --line-height-snug: 1.3;
91
+ --line-height-normal: 1.4;
92
+ --line-height-relaxed: 1.5;
93
+ --line-height-loose: 1.6;
94
+
95
+ --radius-sm: 6px;
96
+ --radius-md: 8px;
97
+ --radius-lg: 10px;
98
+ --radius-xl: 12px;
99
+ --radius-2xl: 16px;
100
+ --radius-3xl: 20px;
101
+ --radius-4xl: 24px;
102
+ --radius-full: 9999px;
103
+
104
+ --shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
105
+ --shadow-base: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06);
106
+ --shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
107
+ --shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
108
+ --shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);
109
+ --shadow-2xl: 0 25px 50px -12px rgba(0, 0, 0, 0.25);
110
+
111
+ --transition-fast: 150ms cubic-bezier(0.4, 0, 0.2, 1);
112
+ --transition-base: 200ms cubic-bezier(0.4, 0, 0.2, 1);
113
+ --transition-slow: 300ms cubic-bezier(0.4, 0, 0.2, 1);
114
+
115
+ --z-dropdown: 1000;
116
+ --z-sticky: 1020;
117
+ --z-fixed: 1030;
118
+ --z-modal-backdrop: 999998;
119
+ --z-modal: 999999;
120
+ --z-popover: 1000000;
121
+ --z-tooltip: 1000001;
122
+ --z-notification: 1000002;
123
+ }
124
+ `;