@streamplace/components 0.7.18 → 0.7.21

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 (122) hide show
  1. package/dist/assets/emoji-data.json +19371 -0
  2. package/dist/components/chat/chat-box.js +319 -0
  3. package/dist/components/chat/chat-message.js +87 -0
  4. package/dist/components/chat/chat.js +150 -0
  5. package/dist/components/chat/emoji-suggestions.js +35 -0
  6. package/dist/components/chat/mention-suggestions.js +42 -0
  7. package/dist/components/chat/mod-view.js +112 -0
  8. package/dist/components/chat/system-message.js +19 -0
  9. package/dist/components/dashboard/chat-panel.js +38 -0
  10. package/dist/components/dashboard/header.js +80 -0
  11. package/dist/components/dashboard/index.js +14 -0
  12. package/dist/components/dashboard/information-widget.js +234 -0
  13. package/dist/components/dashboard/mod-actions.js +71 -0
  14. package/dist/components/dashboard/problems.js +74 -0
  15. package/dist/components/icons/bluesky-icon.js +9 -0
  16. package/dist/components/keep-awake.js +7 -0
  17. package/dist/components/keep-awake.native.js +16 -0
  18. package/dist/components/mobile-player/fullscreen.js +76 -0
  19. package/dist/components/mobile-player/fullscreen.native.js +141 -0
  20. package/dist/components/mobile-player/player.js +94 -0
  21. package/dist/components/mobile-player/props.js +2 -0
  22. package/dist/components/mobile-player/shared.js +54 -0
  23. package/dist/components/mobile-player/ui/autoplay-button.js +68 -0
  24. package/dist/components/mobile-player/ui/countdown.js +83 -0
  25. package/dist/components/mobile-player/ui/index.js +12 -0
  26. package/dist/components/mobile-player/ui/input.js +42 -0
  27. package/dist/components/mobile-player/ui/metrics.js +44 -0
  28. package/dist/components/mobile-player/ui/report-modal.js +90 -0
  29. package/dist/components/mobile-player/ui/streamer-context-menu.js +7 -0
  30. package/dist/components/mobile-player/ui/streamer-loading-overlay.js +104 -0
  31. package/dist/components/mobile-player/ui/viewer-context-menu.js +51 -0
  32. package/dist/components/mobile-player/ui/viewer-loading-overlay.js +49 -0
  33. package/dist/components/mobile-player/ui/viewers.js +23 -0
  34. package/dist/components/mobile-player/use-webrtc.js +243 -0
  35. package/dist/components/mobile-player/video-async.native.js +276 -0
  36. package/dist/components/mobile-player/video-retry.js +29 -0
  37. package/dist/components/mobile-player/video.js +475 -0
  38. package/dist/components/mobile-player/video.native.js +56 -0
  39. package/dist/components/mobile-player/webrtc-diagnostics.js +110 -0
  40. package/dist/components/mobile-player/webrtc-primitives.js +27 -0
  41. package/dist/components/mobile-player/webrtc-primitives.native.js +8 -0
  42. package/dist/components/share/sharesheet.js +91 -0
  43. package/dist/components/ui/button.js +223 -0
  44. package/dist/components/ui/dialog.js +206 -0
  45. package/dist/components/ui/dropdown.js +172 -0
  46. package/dist/components/ui/icons.js +25 -0
  47. package/dist/components/ui/index.js +34 -0
  48. package/dist/components/ui/info-box.js +31 -0
  49. package/dist/components/ui/info-row.js +23 -0
  50. package/dist/components/ui/input.js +205 -0
  51. package/dist/components/ui/loader.js +10 -0
  52. package/dist/components/ui/primitives/button.js +125 -0
  53. package/dist/components/ui/primitives/input.js +206 -0
  54. package/dist/components/ui/primitives/modal.js +206 -0
  55. package/dist/components/ui/primitives/text.js +292 -0
  56. package/dist/components/ui/resizeable.js +121 -0
  57. package/dist/components/ui/slider.js +5 -0
  58. package/dist/components/ui/text.js +177 -0
  59. package/dist/components/ui/textarea.js +19 -0
  60. package/dist/components/ui/toast.js +175 -0
  61. package/dist/components/ui/view.js +252 -0
  62. package/dist/hooks/index.js +14 -0
  63. package/dist/hooks/useAvatars.js +35 -0
  64. package/dist/hooks/useCameraToggle.js +12 -0
  65. package/dist/hooks/useKeyboard.js +36 -0
  66. package/dist/hooks/useKeyboardSlide.js +14 -0
  67. package/dist/hooks/useLivestreamInfo.js +69 -0
  68. package/dist/hooks/useOuterAndInnerDimensions.js +30 -0
  69. package/dist/hooks/usePlayerDimensions.js +22 -0
  70. package/dist/hooks/usePointerDevice.js +71 -0
  71. package/dist/hooks/useSegmentDimensions.js +17 -0
  72. package/dist/hooks/useSegmentTiming.js +65 -0
  73. package/dist/index.js +34 -0
  74. package/dist/lib/browser.js +35 -0
  75. package/dist/lib/facet.js +92 -0
  76. package/dist/lib/system-messages.js +101 -0
  77. package/dist/lib/theme/atoms.js +646 -0
  78. package/dist/lib/theme/atoms.types.js +6 -0
  79. package/dist/lib/theme/index.js +35 -0
  80. package/dist/lib/theme/theme.js +256 -0
  81. package/dist/lib/theme/tokens.js +659 -0
  82. package/dist/lib/utils.js +105 -0
  83. package/dist/livestream-provider/index.js +30 -0
  84. package/dist/livestream-provider/websocket.js +45 -0
  85. package/dist/livestream-store/chat.js +308 -0
  86. package/dist/livestream-store/context.js +5 -0
  87. package/dist/livestream-store/index.js +7 -0
  88. package/dist/livestream-store/livestream-state.js +2 -0
  89. package/dist/livestream-store/livestream-store.js +58 -0
  90. package/dist/livestream-store/problems.js +76 -0
  91. package/dist/livestream-store/stream-key.js +88 -0
  92. package/dist/livestream-store/websocket-consumer.js +94 -0
  93. package/dist/player-store/context.js +5 -0
  94. package/dist/player-store/index.js +9 -0
  95. package/dist/player-store/player-provider.js +58 -0
  96. package/dist/player-store/player-state.js +25 -0
  97. package/dist/player-store/player-store.js +201 -0
  98. package/dist/player-store/single-player-provider.js +121 -0
  99. package/dist/streamplace-provider/context.js +5 -0
  100. package/dist/streamplace-provider/index.js +20 -0
  101. package/dist/streamplace-provider/poller.js +49 -0
  102. package/dist/streamplace-provider/xrpc.js +0 -0
  103. package/dist/streamplace-store/block.js +65 -0
  104. package/dist/streamplace-store/index.js +6 -0
  105. package/dist/streamplace-store/stream.js +247 -0
  106. package/dist/streamplace-store/streamplace-store.js +47 -0
  107. package/dist/streamplace-store/user.js +52 -0
  108. package/dist/streamplace-store/xrpc.js +15 -0
  109. package/dist/ui/index.js +79 -0
  110. package/node-compile-cache/v22.15.0-x64-efe9a9df-0/37be0eec +0 -0
  111. package/package.json +5 -4
  112. package/src/components/chat/chat-box.tsx +3 -0
  113. package/src/components/chat/mod-view.tsx +39 -5
  114. package/src/components/mobile-player/fullscreen.tsx +2 -0
  115. package/src/components/mobile-player/ui/autoplay-button.tsx +86 -0
  116. package/src/components/mobile-player/ui/index.ts +1 -0
  117. package/src/components/mobile-player/video.tsx +11 -1
  118. package/src/livestream-store/chat.tsx +22 -0
  119. package/src/player-store/player-provider.tsx +2 -1
  120. package/src/player-store/player-state.tsx +6 -0
  121. package/src/player-store/player-store.tsx +4 -0
  122. package/tsconfig.tsbuildinfo +1 -0
@@ -0,0 +1,659 @@
1
+ "use strict";
2
+ /**
3
+ * Design tokens for React Native components
4
+ * Inspired by shadcn/ui but adapted for React Native styling
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.breakpoints = exports.animations = exports.touchTargets = exports.shadows = exports.typography = exports.borderRadius = exports.spacing = exports.colors = void 0;
8
+ exports.colors = {
9
+ // Primary colors
10
+ primary: {
11
+ 50: "#eff6ff",
12
+ 100: "#dbeafe",
13
+ 200: "#bfdbfe",
14
+ 300: "#93c5fd",
15
+ 400: "#60a5fa",
16
+ 500: "#3b82f6",
17
+ 600: "#2563eb",
18
+ 700: "#1d4ed8",
19
+ 800: "#1e40af",
20
+ 900: "#1e3a8a",
21
+ 950: "#172554",
22
+ },
23
+ // Tailwind default palettes:
24
+ slate: {
25
+ 50: "#f8fafc",
26
+ 100: "#f1f5f9",
27
+ 200: "#e2e8f0",
28
+ 300: "#cbd5e1",
29
+ 400: "#94a3b8",
30
+ 500: "#64748b",
31
+ 600: "#475569",
32
+ 700: "#334155",
33
+ 800: "#1e293b",
34
+ 900: "#0f172a",
35
+ 950: "#020617",
36
+ },
37
+ gray: {
38
+ 50: "#f9fafb",
39
+ 100: "#f3f4f6",
40
+ 200: "#e5e7eb",
41
+ 300: "#d1d5db",
42
+ 400: "#9ca3af",
43
+ 500: "#6b7280",
44
+ 600: "#4b5563",
45
+ 700: "#374151",
46
+ 800: "#1f2937",
47
+ 900: "#111827",
48
+ 950: "#030712",
49
+ },
50
+ zinc: {
51
+ 50: "#fafafa",
52
+ 100: "#f4f4f5",
53
+ 200: "#e4e4e7",
54
+ 300: "#d4d4d8",
55
+ 400: "#a1a1aa",
56
+ 500: "#71717a",
57
+ 600: "#52525b",
58
+ 700: "#3f3f46",
59
+ 800: "#27272a",
60
+ 900: "#18181b",
61
+ 950: "#09090b",
62
+ },
63
+ neutral: {
64
+ 50: "#fafaf9",
65
+ 100: "#f5f5f4",
66
+ 200: "#e7e5e4",
67
+ 300: "#d6d3d1",
68
+ 400: "#a8a29e",
69
+ 500: "#78716c",
70
+ 600: "#57534e",
71
+ 700: "#44403c",
72
+ 800: "#292524",
73
+ 900: "#1c1917",
74
+ 950: "#0c0a09",
75
+ },
76
+ stone: {
77
+ 50: "#fafaf9",
78
+ 100: "#f5f5f4",
79
+ 200: "#e7e5e4",
80
+ 300: "#d6d3d1",
81
+ 400: "#a8a29e",
82
+ 500: "#78716c",
83
+ 600: "#57534e",
84
+ 700: "#44403c",
85
+ 800: "#292524",
86
+ 900: "#1c1917",
87
+ 950: "#0c0a09",
88
+ },
89
+ red: {
90
+ 50: "#fef2f2",
91
+ 100: "#fee2e2",
92
+ 200: "#fecaca",
93
+ 300: "#fca5a5",
94
+ 400: "#f87171",
95
+ 500: "#ef4444",
96
+ 600: "#dc2626",
97
+ 700: "#b91c1c",
98
+ 800: "#991b1b",
99
+ 900: "#7f1d1d",
100
+ 950: "#450a0a",
101
+ },
102
+ orange: {
103
+ 50: "#fff7ed",
104
+ 100: "#ffedd5",
105
+ 200: "#fed7aa",
106
+ 300: "#fdba74",
107
+ 400: "#fb923c",
108
+ 500: "#f97316",
109
+ 600: "#ea580c",
110
+ 700: "#c2410c",
111
+ 800: "#9a3412",
112
+ 900: "#7c2d12",
113
+ 950: "#431407",
114
+ },
115
+ amber: {
116
+ 50: "#fffbeb",
117
+ 100: "#fef3c7",
118
+ 200: "#fde68a",
119
+ 300: "#fcd34d",
120
+ 400: "#fbbf24",
121
+ 500: "#f59e0b",
122
+ 600: "#d97706",
123
+ 700: "#b45309",
124
+ 800: "#92400e",
125
+ 900: "#78350f",
126
+ 950: "#451a03",
127
+ },
128
+ yellow: {
129
+ 50: "#fefce8",
130
+ 100: "#fef9c3",
131
+ 200: "#fef08a",
132
+ 300: "#fde047",
133
+ 400: "#facc15",
134
+ 500: "#eab308",
135
+ 600: "#ca8a04",
136
+ 700: "#a16207",
137
+ 800: "#854d0e",
138
+ 900: "#713f12",
139
+ 950: "#422006",
140
+ },
141
+ lime: {
142
+ 50: "#f7fee7",
143
+ 100: "#ecfccb",
144
+ 200: "#d9f99d",
145
+ 300: "#bef264",
146
+ 400: "#a3e635",
147
+ 500: "#84cc16",
148
+ 600: "#65a30d",
149
+ 700: "#4d7c0f",
150
+ 800: "#3f6212",
151
+ 900: "#365314",
152
+ 950: "#1a2e05",
153
+ },
154
+ green: {
155
+ 50: "#f0fdf4",
156
+ 100: "#dcfce7",
157
+ 200: "#bbf7d0",
158
+ 300: "#86efac",
159
+ 400: "#4ade80",
160
+ 500: "#22c55e",
161
+ 600: "#16a34a",
162
+ 700: "#15803d",
163
+ 800: "#166534",
164
+ 900: "#14532d",
165
+ 950: "#052e16",
166
+ },
167
+ emerald: {
168
+ 50: "#ecfdf5",
169
+ 100: "#d1fae5",
170
+ 200: "#a7f3d0",
171
+ 300: "#6ee7b7",
172
+ 400: "#34d399",
173
+ 500: "#10b981",
174
+ 600: "#059669",
175
+ 700: "#047857",
176
+ 800: "#065f46",
177
+ 900: "#064e3b",
178
+ 950: "#022c22",
179
+ },
180
+ teal: {
181
+ 50: "#f0fdfa",
182
+ 100: "#ccfbf1",
183
+ 200: "#99f6e4",
184
+ 300: "#5eead4",
185
+ 400: "#2dd4bf",
186
+ 500: "#14b8a6",
187
+ 600: "#0d9488",
188
+ 700: "#0f766e",
189
+ 800: "#115e59",
190
+ 900: "#134e4a",
191
+ 950: "#042f2e",
192
+ },
193
+ cyan: {
194
+ 50: "#ecfeff",
195
+ 100: "#cffafe",
196
+ 200: "#a5f3fc",
197
+ 300: "#67e8f9",
198
+ 400: "#22d3ee",
199
+ 500: "#06b6d4",
200
+ 600: "#0891b2",
201
+ 700: "#0e7490",
202
+ 800: "#155e75",
203
+ 900: "#164e63",
204
+ 950: "#083344",
205
+ },
206
+ sky: {
207
+ 50: "#f0f9ff",
208
+ 100: "#e0f2fe",
209
+ 200: "#bae6fd",
210
+ 300: "#7dd3fc",
211
+ 400: "#38bdf8",
212
+ 500: "#0ea5e9",
213
+ 600: "#0284c7",
214
+ 700: "#0369a1",
215
+ 800: "#075985",
216
+ 900: "#0c4a6e",
217
+ 950: "#082f49",
218
+ },
219
+ blue: {
220
+ 50: "#eff6ff",
221
+ 100: "#dbeafe",
222
+ 200: "#bfdbfe",
223
+ 300: "#93c5fd",
224
+ 400: "#60a5fa",
225
+ 500: "#3b82f6",
226
+ 600: "#2563eb",
227
+ 700: "#1d4ed8",
228
+ 800: "#1e40af",
229
+ 900: "#1e3a8a",
230
+ 950: "#172554",
231
+ },
232
+ indigo: {
233
+ 50: "#eef2ff",
234
+ 100: "#e0e7ff",
235
+ 200: "#c7d2fe",
236
+ 300: "#a5b4fc",
237
+ 400: "#818cf8",
238
+ 500: "#6366f1",
239
+ 600: "#4f46e5",
240
+ 700: "#4338ca",
241
+ 800: "#3730a3",
242
+ 900: "#312e81",
243
+ 950: "#1e1b4b",
244
+ },
245
+ violet: {
246
+ 50: "#f5f3ff",
247
+ 100: "#ede9fe",
248
+ 200: "#ddd6fe",
249
+ 300: "#c4b5fd",
250
+ 400: "#a78bfa",
251
+ 500: "#8b5cf6",
252
+ 600: "#7c3aed",
253
+ 700: "#6d28d9",
254
+ 800: "#5b21b6",
255
+ 900: "#4c1d95",
256
+ 950: "#2e1065",
257
+ },
258
+ purple: {
259
+ 50: "#faf5ff",
260
+ 100: "#f3e8ff",
261
+ 200: "#e9d5ff",
262
+ 300: "#d8b4fe",
263
+ 400: "#c084fc",
264
+ 500: "#a855f7",
265
+ 600: "#9333ea",
266
+ 700: "#7e22ce",
267
+ 800: "#6b21a8",
268
+ 900: "#581c87",
269
+ 950: "#3b0764",
270
+ },
271
+ fuchsia: {
272
+ 50: "#fdf4ff",
273
+ 100: "#fae8ff",
274
+ 200: "#f5d0fe",
275
+ 300: "#f0abfc",
276
+ 400: "#e879f9",
277
+ 500: "#d946ef",
278
+ 600: "#c026d3",
279
+ 700: "#a21caf",
280
+ 800: "#86198f",
281
+ 900: "#701a75",
282
+ 950: "#4a044e",
283
+ },
284
+ pink: {
285
+ 50: "#fdf2f8",
286
+ 100: "#fce7f3",
287
+ 200: "#fbcfe8",
288
+ 300: "#f9a8d4",
289
+ 400: "#f472b6",
290
+ 500: "#ec4899",
291
+ 600: "#db2777",
292
+ 700: "#be185d",
293
+ 800: "#9d174d",
294
+ 900: "#831843",
295
+ 950: "#500724",
296
+ },
297
+ rose: {
298
+ 50: "#fff1f2",
299
+ 100: "#ffe4e6",
300
+ 200: "#fecdd3",
301
+ 300: "#fda4af",
302
+ 400: "#fb7185",
303
+ 500: "#f43f5e",
304
+ 600: "#e11d48",
305
+ 700: "#be123c",
306
+ 800: "#9f1239",
307
+ 900: "#881337",
308
+ 950: "#4c0519",
309
+ },
310
+ // Semantic colors
311
+ destructive: {
312
+ 50: "#fef2f2",
313
+ 100: "#fee2e2",
314
+ 200: "#fecaca",
315
+ 300: "#fca5a5",
316
+ 400: "#f87171",
317
+ 500: "#ef4444",
318
+ 600: "#dc2626",
319
+ 700: "#b91c1c",
320
+ 800: "#991b1b",
321
+ 900: "#7f1d1d",
322
+ 950: "#450a0a",
323
+ },
324
+ success: {
325
+ 50: "#f0fdf4",
326
+ 100: "#dcfce7",
327
+ 200: "#bbf7d0",
328
+ 300: "#86efac",
329
+ 400: "#4ade80",
330
+ 500: "#22c55e",
331
+ 600: "#16a34a",
332
+ 700: "#15803d",
333
+ 800: "#166534",
334
+ 900: "#14532d",
335
+ 950: "#052e16",
336
+ },
337
+ warning: {
338
+ 50: "#fffbeb",
339
+ 100: "#fef3c7",
340
+ 200: "#fde68a",
341
+ 300: "#fcd34d",
342
+ 400: "#fbbf24",
343
+ 500: "#f59e0b",
344
+ 600: "#d97706",
345
+ 700: "#b45309",
346
+ 800: "#92400e",
347
+ 900: "#78350f",
348
+ 950: "#451a03",
349
+ },
350
+ // iOS system colors (adaptive)
351
+ ios: {
352
+ systemBlue: "#007AFF",
353
+ systemGreen: "#34C759",
354
+ systemRed: "#FF3B30",
355
+ systemOrange: "#FF9500",
356
+ systemYellow: "#FFCC00",
357
+ systemPurple: "#AF52DE",
358
+ systemPink: "#FF2D92",
359
+ systemTeal: "#5AC8FA",
360
+ systemIndigo: "#5856D6",
361
+ systemGray: "#8E8E93",
362
+ systemGray2: "#AEAEB2",
363
+ systemGray3: "#C7C7CC",
364
+ systemGray4: "#D1D1D6",
365
+ systemGray5: "#E5E5EA",
366
+ systemGray6: "#F2F2F7",
367
+ },
368
+ // Android Material colors
369
+ android: {
370
+ primary: "#6200EE",
371
+ primaryVariant: "#3700B3",
372
+ secondary: "#03DAC6",
373
+ secondaryVariant: "#018786",
374
+ background: "#FFFFFF",
375
+ surface: "#FFFFFF",
376
+ error: "#B00020",
377
+ onPrimary: "#FFFFFF",
378
+ onSecondary: "#000000",
379
+ onBackground: "#000000",
380
+ onSurface: "#000000",
381
+ onError: "#FFFFFF",
382
+ },
383
+ // Transparent colors
384
+ transparent: "transparent",
385
+ black: "#000000",
386
+ white: "#FFFFFF",
387
+ };
388
+ exports.spacing = {
389
+ 0: 0,
390
+ 1: 4,
391
+ 2: 8,
392
+ 3: 12,
393
+ 4: 16,
394
+ 5: 20,
395
+ 6: 24,
396
+ 7: 28,
397
+ 8: 32,
398
+ 9: 36,
399
+ 10: 40,
400
+ 11: 44,
401
+ 12: 48,
402
+ 14: 56,
403
+ 16: 64,
404
+ 20: 80,
405
+ 24: 96,
406
+ 28: 112,
407
+ 32: 128,
408
+ 36: 144,
409
+ 40: 160,
410
+ 44: 176,
411
+ 48: 192,
412
+ 52: 208,
413
+ 56: 224,
414
+ 60: 240,
415
+ 64: 256,
416
+ 72: 288,
417
+ 80: 320,
418
+ 96: 384,
419
+ auto: "auto",
420
+ };
421
+ exports.borderRadius = {
422
+ none: 0,
423
+ sm: 3,
424
+ md: 8,
425
+ lg: 12,
426
+ xl: 16,
427
+ "2xl": 20,
428
+ "3xl": 24,
429
+ full: 999,
430
+ };
431
+ exports.typography = {
432
+ // iOS system font sizes
433
+ ios: {
434
+ largeTitle: {
435
+ fontSize: 34,
436
+ lineHeight: 41,
437
+ fontWeight: "700",
438
+ },
439
+ title1: {
440
+ fontSize: 28,
441
+ lineHeight: 34,
442
+ fontWeight: "700",
443
+ },
444
+ title2: {
445
+ fontSize: 22,
446
+ lineHeight: 28,
447
+ fontWeight: "700",
448
+ },
449
+ title3: {
450
+ fontSize: 20,
451
+ lineHeight: 25,
452
+ fontWeight: "600",
453
+ },
454
+ headline: {
455
+ fontSize: 17,
456
+ lineHeight: 22,
457
+ fontWeight: "600",
458
+ },
459
+ body: {
460
+ fontSize: 17,
461
+ lineHeight: 22,
462
+ fontWeight: "400",
463
+ },
464
+ callout: {
465
+ fontSize: 16,
466
+ lineHeight: 21,
467
+ fontWeight: "400",
468
+ },
469
+ subhead: {
470
+ fontSize: 15,
471
+ lineHeight: 20,
472
+ fontWeight: "400",
473
+ },
474
+ footnote: {
475
+ fontSize: 13,
476
+ lineHeight: 18,
477
+ fontWeight: "400",
478
+ },
479
+ caption1: {
480
+ fontSize: 12,
481
+ lineHeight: 16,
482
+ fontWeight: "400",
483
+ },
484
+ caption2: {
485
+ fontSize: 11,
486
+ lineHeight: 13,
487
+ fontWeight: "400",
488
+ },
489
+ },
490
+ // Android Material typography
491
+ android: {
492
+ headline1: {
493
+ fontSize: 96,
494
+ lineHeight: 112,
495
+ fontWeight: "300",
496
+ },
497
+ headline2: {
498
+ fontSize: 60,
499
+ lineHeight: 72,
500
+ fontWeight: "300",
501
+ },
502
+ headline3: {
503
+ fontSize: 48,
504
+ lineHeight: 56,
505
+ fontWeight: "400",
506
+ },
507
+ headline4: {
508
+ fontSize: 34,
509
+ lineHeight: 42,
510
+ fontWeight: "400",
511
+ },
512
+ headline5: {
513
+ fontSize: 24,
514
+ lineHeight: 32,
515
+ fontWeight: "400",
516
+ },
517
+ headline6: {
518
+ fontSize: 20,
519
+ lineHeight: 28,
520
+ fontWeight: "500",
521
+ },
522
+ subtitle1: {
523
+ fontSize: 16,
524
+ lineHeight: 24,
525
+ fontWeight: "400",
526
+ },
527
+ subtitle2: {
528
+ fontSize: 14,
529
+ lineHeight: 22,
530
+ fontWeight: "500",
531
+ },
532
+ body1: {
533
+ fontSize: 16,
534
+ lineHeight: 24,
535
+ fontWeight: "400",
536
+ },
537
+ body2: {
538
+ fontSize: 14,
539
+ lineHeight: 20,
540
+ fontWeight: "400",
541
+ },
542
+ button: {
543
+ fontSize: 14,
544
+ lineHeight: 16,
545
+ fontWeight: "500",
546
+ },
547
+ caption: {
548
+ fontSize: 12,
549
+ lineHeight: 16,
550
+ fontWeight: "400",
551
+ },
552
+ overline: {
553
+ fontSize: 10,
554
+ lineHeight: 16,
555
+ fontWeight: "400",
556
+ },
557
+ },
558
+ // Universal typography scale
559
+ universal: {
560
+ xs: {
561
+ fontSize: 12,
562
+ lineHeight: 16,
563
+ fontWeight: "400",
564
+ },
565
+ sm: {
566
+ fontSize: 14,
567
+ lineHeight: 20,
568
+ fontWeight: "400",
569
+ },
570
+ base: {
571
+ fontSize: 16,
572
+ lineHeight: 24,
573
+ fontWeight: "400",
574
+ },
575
+ lg: {
576
+ fontSize: 18,
577
+ lineHeight: 28,
578
+ fontWeight: "400",
579
+ },
580
+ xl: {
581
+ fontSize: 20,
582
+ lineHeight: 28,
583
+ fontWeight: "500",
584
+ },
585
+ "2xl": {
586
+ fontSize: 24,
587
+ lineHeight: 32,
588
+ fontWeight: "600",
589
+ },
590
+ "3xl": {
591
+ fontSize: 30,
592
+ lineHeight: 36,
593
+ fontWeight: "700",
594
+ },
595
+ "4xl": {
596
+ fontSize: 36,
597
+ lineHeight: 40,
598
+ fontWeight: "700",
599
+ },
600
+ },
601
+ };
602
+ exports.shadows = {
603
+ none: {
604
+ shadowColor: "transparent",
605
+ shadowOffset: { width: 0, height: 0 },
606
+ shadowOpacity: 0,
607
+ shadowRadius: 0,
608
+ elevation: 0,
609
+ },
610
+ sm: {
611
+ shadowColor: exports.colors.black,
612
+ shadowOffset: { width: 0, height: 1 },
613
+ shadowOpacity: 0.05,
614
+ shadowRadius: 2,
615
+ elevation: 2,
616
+ },
617
+ md: {
618
+ shadowColor: exports.colors.black,
619
+ shadowOffset: { width: 0, height: 2 },
620
+ shadowOpacity: 0.1,
621
+ shadowRadius: 4,
622
+ elevation: 4,
623
+ },
624
+ lg: {
625
+ shadowColor: exports.colors.black,
626
+ shadowOffset: { width: 0, height: 4 },
627
+ shadowOpacity: 0.15,
628
+ shadowRadius: 8,
629
+ elevation: 8,
630
+ },
631
+ xl: {
632
+ shadowColor: exports.colors.black,
633
+ shadowOffset: { width: 0, height: 8 },
634
+ shadowOpacity: 0.2,
635
+ shadowRadius: 16,
636
+ elevation: 16,
637
+ },
638
+ };
639
+ // Touch targets (iOS Human Interface Guidelines)
640
+ exports.touchTargets = {
641
+ minimum: 44, // Minimum touch target size
642
+ comfortable: 48, // Comfortable touch target size
643
+ large: 56, // Large touch target size
644
+ };
645
+ // Animation durations
646
+ exports.animations = {
647
+ fast: 150,
648
+ normal: 200,
649
+ slow: 300,
650
+ slower: 500,
651
+ };
652
+ // Breakpoints for responsive design
653
+ exports.breakpoints = {
654
+ sm: 640,
655
+ md: 768,
656
+ lg: 1024,
657
+ xl: 1280,
658
+ "2xl": 1536,
659
+ };