@coze-arch/cli 0.0.1-alpha.3ce8c6 → 0.0.1-alpha.40ed71

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 (70) hide show
  1. package/lib/__templates__/expo/.coze +1 -1
  2. package/lib/__templates__/expo/.cozeproj/scripts/dev_build.sh +19 -82
  3. package/lib/__templates__/expo/.cozeproj/scripts/dev_run.sh +75 -88
  4. package/lib/__templates__/expo/.cozeproj/scripts/prod_build.sh +2 -2
  5. package/lib/__templates__/expo/.cozeproj/scripts/prod_run.sh +2 -2
  6. package/lib/__templates__/expo/.cozeproj/scripts/server_dev_run.sh +46 -0
  7. package/lib/__templates__/expo/README.md +39 -7
  8. package/lib/__templates__/expo/client/app/+not-found.tsx +30 -0
  9. package/lib/__templates__/expo/client/app/_layout.tsx +15 -12
  10. package/lib/__templates__/expo/client/app/index.tsx +1 -0
  11. package/lib/__templates__/expo/client/app.config.ts +65 -60
  12. package/lib/__templates__/expo/client/components/Screen.tsx +1 -17
  13. package/lib/__templates__/expo/client/components/ThemedView.tsx +1 -2
  14. package/lib/__templates__/expo/client/constants/theme.ts +25 -698
  15. package/lib/__templates__/expo/client/declarations.d.ts +5 -0
  16. package/lib/__templates__/expo/client/eslint.config.mjs +33 -10
  17. package/lib/__templates__/expo/client/hooks/useColorScheme.tsx +48 -0
  18. package/lib/__templates__/expo/client/hooks/useSafeRouter.ts +152 -0
  19. package/lib/__templates__/expo/client/hooks/useTheme.ts +26 -6
  20. package/lib/__templates__/expo/client/package.json +6 -3
  21. package/lib/__templates__/expo/client/screens/demo/index.tsx +25 -0
  22. package/lib/__templates__/expo/client/screens/demo/styles.ts +28 -0
  23. package/lib/__templates__/expo/client/scripts/install-missing-deps.js +1 -0
  24. package/lib/__templates__/expo/client/utils/index.ts +22 -0
  25. package/lib/__templates__/expo/eslint-plugins/fontawesome6/index.js +9 -0
  26. package/lib/__templates__/expo/eslint-plugins/fontawesome6/names.js +1889 -0
  27. package/lib/__templates__/expo/eslint-plugins/fontawesome6/rule.js +174 -0
  28. package/lib/__templates__/expo/eslint-plugins/fontawesome6/v5-only-names.js +388 -0
  29. package/lib/__templates__/expo/eslint-plugins/react-native/index.js +9 -0
  30. package/lib/__templates__/expo/eslint-plugins/react-native/rule.js +64 -0
  31. package/lib/__templates__/expo/eslint-plugins/reanimated/index.js +9 -0
  32. package/lib/__templates__/expo/eslint-plugins/reanimated/rule.js +88 -0
  33. package/lib/__templates__/expo/package.json +7 -98
  34. package/lib/__templates__/expo/patches/expo@54.0.32.patch +44 -0
  35. package/lib/__templates__/expo/pnpm-lock.yaml +2001 -2124
  36. package/lib/__templates__/expo/server/build.js +21 -0
  37. package/lib/__templates__/expo/server/package.json +19 -4
  38. package/lib/__templates__/expo/server/src/index.ts +9 -2
  39. package/lib/__templates__/expo/server/tsconfig.json +24 -0
  40. package/lib/__templates__/expo/template.config.js +1 -0
  41. package/lib/__templates__/nextjs/.babelrc +15 -0
  42. package/lib/__templates__/nextjs/.coze +1 -0
  43. package/lib/__templates__/nextjs/_npmrc +1 -0
  44. package/lib/__templates__/nextjs/next.config.ts +12 -0
  45. package/lib/__templates__/nextjs/package.json +11 -2
  46. package/lib/__templates__/nextjs/pnpm-lock.yaml +2606 -1723
  47. package/lib/__templates__/nextjs/scripts/prepare.sh +9 -0
  48. package/lib/__templates__/nextjs/src/app/globals.css +10 -2
  49. package/lib/__templates__/nextjs/src/app/layout.tsx +5 -14
  50. package/lib/__templates__/nextjs/src/app/page.tsx +35 -23
  51. package/lib/__templates__/nextjs/src/components/ui/resizable.tsx +29 -22
  52. package/lib/__templates__/nextjs/src/components/ui/sidebar.tsx +228 -230
  53. package/lib/__templates__/nextjs/template.config.js +30 -0
  54. package/lib/__templates__/templates.json +61 -43
  55. package/lib/__templates__/vite/.coze +1 -0
  56. package/lib/__templates__/vite/_npmrc +1 -0
  57. package/lib/__templates__/vite/eslint.config.mjs +9 -0
  58. package/lib/__templates__/vite/package.json +10 -1
  59. package/lib/__templates__/vite/pnpm-lock.yaml +3115 -126
  60. package/lib/__templates__/vite/scripts/prepare.sh +9 -0
  61. package/lib/__templates__/vite/src/main.ts +1 -2
  62. package/lib/__templates__/vite/template.config.js +30 -4
  63. package/lib/cli.js +989 -131
  64. package/package.json +5 -3
  65. package/lib/__templates__/expo/client/app/index.ts +0 -1
  66. package/lib/__templates__/expo/client/hooks/useColorScheme.ts +0 -1
  67. package/lib/__templates__/expo/client/screens/home/index.tsx +0 -50
  68. package/lib/__templates__/expo/client/screens/home/styles.ts +0 -60
  69. package/lib/__templates__/nextjs/.vscode/settings.json +0 -121
  70. package/lib/__templates__/vite/.vscode/settings.json +0 -7
@@ -1,59 +1,35 @@
1
- import { Platform, StyleSheet } from "react-native";
2
-
3
1
  export const Colors = {
4
2
  light: {
5
- text: "#111827",
6
- textPrimary: "#111827",
7
- textSecondary: "#374151",
3
+ textPrimary: "#1C1917",
4
+ textSecondary: "#78716c",
8
5
  textMuted: "#9CA3AF",
9
- textDisabled: "#D1D5DB",
10
- placeholder: "#9CA3AF",
11
- buttonText: "#FFFFFF",
12
- tabIconDefault: "#9CA3AF",
13
- tabIconSelected: "#111827",
14
- primary: "#111827",
15
- accent: "#000000",
16
- link: "#111827",
17
- success: "#16A34A",
18
- warning: "#F59E0B",
19
- error: "#DC2626",
20
- info: "#2563EB",
21
- backgroundRoot: "#FFFFFF",
22
- backgroundDefault: "#F9FAFB",
23
- backgroundSecondary: "#F3F4F6",
24
- backgroundTertiary: "#E5E7EB",
6
+ primary: "#4F46E5", // Indigo-600 - 品牌主色,代表科技与智能
7
+ accent: "#8B5CF6", // Violet-500 - 辅助色,代表创造力
8
+ success: "#10B981", // Emerald-500
9
+ error: "#EF4444",
10
+ backgroundRoot: "#FAFAFA",
11
+ backgroundDefault: "#FFFFFF",
12
+ backgroundTertiary: "#F9FAFB", // 更浅的背景色,用于去线留白
13
+ buttonPrimaryText: "#FFFFFF",
14
+ tabIconSelected: "#4F46E5",
25
15
  border: "#E5E7EB",
26
16
  borderLight: "#F3F4F6",
27
- divider: "#F3F4F6",
28
- overlay: "rgba(0, 0, 0, 0.4)",
29
- chartBackground: "rgba(249, 250, 251, 0.5)",
30
17
  },
31
18
  dark: {
32
- text: "#ECEDEE",
33
- textPrimary: "#ECEDEE",
34
- textSecondary: "#9BA1A6",
19
+ textPrimary: "#FAFAF9",
20
+ textSecondary: "#A8A29E",
35
21
  textMuted: "#6F767E",
36
- textDisabled: "#4A4D50",
37
- placeholder: "#6F767E",
38
- buttonText: "#FFFFFF",
39
- tabIconDefault: "#6F767E",
40
- tabIconSelected: "#ECEDEE",
41
- primary: "#ECEDEE",
42
- accent: "#FFFFFF",
43
- link: "#ECEDEE",
44
- success: "#30D158",
45
- warning: "#FF9F0A",
46
- error: "#FF453A",
47
- info: "#64D2FF",
48
- backgroundRoot: "#000000",
22
+ primary: "#818CF8", // Indigo-400 - 暗色模式品牌主色
23
+ accent: "#A78BFA", // Violet-400
24
+ success: "#34D399",
25
+ error: "#F87171",
26
+ backgroundRoot: "#09090B", // 更深的背景色
49
27
  backgroundDefault: "#1C1C1E",
50
- backgroundSecondary: "#2C2C2E",
51
- backgroundTertiary: "#3A3A3C",
52
- border: "#3A3A3C",
53
- borderLight: "#2C2C2E",
54
- divider: "#2C2C2E",
55
- overlay: "rgba(0, 0, 0, 0.6)",
56
- chartBackground: "rgba(28, 28, 30, 0.5)",
28
+ backgroundTertiary: "#1F1F22", // 暗色模式去线留白背景
29
+ buttonPrimaryText: "#09090B",
30
+ tabIconSelected: "#818CF8",
31
+ border: "#3F3F46",
32
+ borderLight: "#27272A",
57
33
  },
58
34
  };
59
35
 
@@ -68,16 +44,6 @@ export const Spacing = {
68
44
  "4xl": 40,
69
45
  "5xl": 48,
70
46
  "6xl": 64,
71
- inputHeight: 48,
72
- buttonHeight: 48,
73
- avatarSize: 40,
74
- iconButtonSize: 32,
75
- contentPaddingHorizontal: 32,
76
- sectionGap: 40,
77
- sectionGapLarge: 48,
78
- itemGap: 8,
79
- detailGap: 48,
80
- chartHeight: 128,
81
47
  };
82
48
 
83
49
  export const BorderRadius = {
@@ -87,7 +53,8 @@ export const BorderRadius = {
87
53
  lg: 16,
88
54
  xl: 20,
89
55
  "2xl": 24,
90
- "3xl": 40,
56
+ "3xl": 28,
57
+ "4xl": 32,
91
58
  full: 9999,
92
59
  };
93
60
 
@@ -207,644 +174,4 @@ export const Typography = {
207
174
  },
208
175
  };
209
176
 
210
- export const Fonts = Platform.select({
211
- ios: {
212
- sans: "-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif",
213
- },
214
- android: {
215
- sans: "Roboto, 'Segoe UI', Helvetica, Arial, sans-serif",
216
- },
217
- default: {
218
- sans: "-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif",
219
- },
220
- });
221
-
222
- export const Shadow = {
223
- none: {},
224
- minimal: Platform.select({
225
- ios: { shadowColor: "#000", shadowOffset: { width: 0, height: 1 }, shadowOpacity: 0.05, shadowRadius: 2 },
226
- android: { elevation: 1 },
227
- default: {},
228
- }),
229
- sm: Platform.select({
230
- ios: { shadowColor: "#000", shadowOffset: { width: 0, height: 1 }, shadowOpacity: 0.05, shadowRadius: 2 },
231
- android: { elevation: 1 },
232
- default: {},
233
- }),
234
- md: Platform.select({
235
- ios: { shadowColor: "#000", shadowOffset: { width: 0, height: 2 }, shadowOpacity: 0.1, shadowRadius: 4 },
236
- android: { elevation: 3 },
237
- default: {},
238
- }),
239
- lg: Platform.select({
240
- ios: { shadowColor: "#000", shadowOffset: { width: 0, height: 4 }, shadowOpacity: 0.15, shadowRadius: 8 },
241
- android: { elevation: 6 },
242
- default: {},
243
- }),
244
- island: Platform.select({
245
- ios: { shadowColor: "#000", shadowOffset: { width: 0, height: 4 }, shadowOpacity: 0.1, shadowRadius: 20 },
246
- android: { elevation: 8 },
247
- default: {},
248
- }),
249
- };
250
-
251
- export const Duration = {
252
- fast: 150,
253
- normal: 250,
254
- slow: 400,
255
- };
256
-
257
- export const ZIndex = {
258
- base: 0,
259
- dropdown: 100,
260
- sticky: 200,
261
- modal: 300,
262
- toast: 400,
263
- overlay: 500,
264
- };
265
-
266
177
  export type Theme = typeof Colors.light;
267
-
268
- export const CommonStyles = StyleSheet.create({
269
- container: {
270
- flex: 1,
271
- },
272
- scrollContent: {
273
- paddingHorizontal: Spacing.contentPaddingHorizontal,
274
- },
275
- centerContent: {
276
- justifyContent: "center",
277
- alignItems: "center",
278
- },
279
- row: {
280
- flexDirection: "row",
281
- alignItems: "center",
282
- },
283
- rowGap: {
284
- flexDirection: "row",
285
- alignItems: "center",
286
- gap: Spacing.sm,
287
- },
288
- rowBetween: {
289
- flexDirection: "row",
290
- justifyContent: "space-between",
291
- alignItems: "center",
292
- },
293
- rowBetweenEnd: {
294
- flexDirection: "row",
295
- justifyContent: "space-between",
296
- alignItems: "flex-end",
297
- },
298
- rowBetweenStart: {
299
- flexDirection: "row",
300
- justifyContent: "space-between",
301
- alignItems: "flex-start",
302
- },
303
- rowCenter: {
304
- flexDirection: "row",
305
- justifyContent: "center",
306
- alignItems: "center",
307
- },
308
- rowCenterGap: {
309
- flexDirection: "row",
310
- justifyContent: "center",
311
- alignItems: "center",
312
- gap: Spacing.detailGap,
313
- },
314
- column: {
315
- flexDirection: "column",
316
- },
317
- columnCenter: {
318
- flexDirection: "column",
319
- alignItems: "center",
320
- },
321
- flex1: {
322
- flex: 1,
323
- },
324
- textCenter: {
325
- textAlign: "center",
326
- },
327
- avatar: {
328
- width: Spacing.avatarSize,
329
- height: Spacing.avatarSize,
330
- borderRadius: Spacing.avatarSize / 2,
331
- borderWidth: 1,
332
- justifyContent: "center",
333
- alignItems: "center",
334
- },
335
- iconButton: {
336
- width: Spacing.iconButtonSize,
337
- height: Spacing.iconButtonSize,
338
- borderRadius: Spacing.iconButtonSize / 2,
339
- justifyContent: "center",
340
- alignItems: "center",
341
- },
342
- button: {
343
- flexDirection: "row",
344
- alignItems: "center",
345
- justifyContent: "center",
346
- gap: Spacing.sm,
347
- paddingHorizontal: Spacing.contentPaddingHorizontal,
348
- paddingVertical: Spacing.md,
349
- borderWidth: 1,
350
- borderRadius: BorderRadius.full,
351
- },
352
- buttonSmall: {
353
- flexDirection: "row",
354
- alignItems: "center",
355
- justifyContent: "center",
356
- gap: Spacing.sm,
357
- paddingHorizontal: Spacing.lg,
358
- paddingVertical: Spacing.sm,
359
- borderRadius: BorderRadius.sm,
360
- },
361
- card: {
362
- borderRadius: BorderRadius.xl,
363
- padding: Spacing.sm,
364
- },
365
- chartContainer: {
366
- height: Spacing.chartHeight,
367
- borderRadius: BorderRadius.xl,
368
- padding: Spacing.sm,
369
- borderWidth: 1,
370
- position: "relative",
371
- },
372
- chartGrid: {
373
- position: "absolute",
374
- top: 0,
375
- left: 0,
376
- right: 0,
377
- bottom: 0,
378
- padding: Spacing.lg,
379
- justifyContent: "space-between",
380
- },
381
- chartEmpty: {
382
- flex: 1,
383
- justifyContent: "center",
384
- alignItems: "center",
385
- },
386
- progressBar: {
387
- width: "100%",
388
- height: 2,
389
- borderRadius: 1,
390
- overflow: "hidden",
391
- marginTop: Spacing.sm,
392
- },
393
- progressFill: {
394
- height: "100%",
395
- borderRadius: 1,
396
- },
397
- divider: {
398
- height: 1,
399
- width: "100%",
400
- },
401
- dividerVertical: {
402
- width: 1,
403
- height: "100%",
404
- },
405
- dot: {
406
- width: 4,
407
- height: 4,
408
- borderRadius: 2,
409
- },
410
- absoluteFill: {
411
- position: "absolute",
412
- top: 0,
413
- left: 0,
414
- right: 0,
415
- bottom: 0,
416
- },
417
- tooltip: {
418
- paddingHorizontal: Spacing.sm,
419
- paddingVertical: Spacing.xs,
420
- borderRadius: BorderRadius.xs,
421
- },
422
- emptyState: {
423
- alignItems: "center",
424
- paddingVertical: Spacing["2xl"],
425
- },
426
- section: {
427
- marginBottom: Spacing.sectionGap,
428
- },
429
- sectionLarge: {
430
- marginBottom: Spacing.sectionGapLarge,
431
- },
432
- sectionHeader: {
433
- flexDirection: "row",
434
- justifyContent: "space-between",
435
- alignItems: "flex-end",
436
- marginBottom: Spacing["2xl"],
437
- },
438
- gridLine: {
439
- width: "100%",
440
- height: 1,
441
- borderTopWidth: 1,
442
- borderStyle: "dashed",
443
- },
444
- statsGrid: {
445
- flexDirection: "row",
446
- },
447
- statsColumn: {
448
- flex: 1,
449
- },
450
- statsColumnLeft: {
451
- paddingRight: Spacing.lg,
452
- },
453
- statsColumnRight: {
454
- paddingLeft: Spacing.contentPaddingHorizontal,
455
- borderLeftWidth: 1,
456
- },
457
- statsHeader: {
458
- flexDirection: "row",
459
- justifyContent: "space-between",
460
- alignItems: "flex-start",
461
- marginBottom: Spacing.lg,
462
- },
463
- detailItem: {
464
- alignItems: "center",
465
- },
466
- header: {
467
- flexDirection: "row",
468
- justifyContent: "space-between",
469
- alignItems: "flex-end",
470
- paddingBottom: Spacing.lg,
471
- },
472
- loadingContainer: {
473
- flex: 1,
474
- justifyContent: "center",
475
- alignItems: "center",
476
- },
477
- glucoseSection: {
478
- marginTop: Spacing["2xl"],
479
- marginBottom: Spacing.sectionGap,
480
- alignItems: "center",
481
- },
482
- glucoseHeader: {
483
- flexDirection: "row",
484
- alignItems: "center",
485
- gap: Spacing.sm,
486
- marginBottom: Spacing.sm,
487
- },
488
- glucoseUnit: {
489
- flexDirection: "row",
490
- alignItems: "center",
491
- gap: Spacing.sm,
492
- marginTop: Spacing.sm,
493
- },
494
- glucoseDetails: {
495
- flexDirection: "row",
496
- justifyContent: "center",
497
- gap: Spacing.detailGap,
498
- marginTop: Spacing["2xl"],
499
- },
500
- });
501
-
502
- export const createThemedStyles = (theme: Theme) => {
503
- return StyleSheet.create({
504
- container: {
505
- ...CommonStyles.container,
506
- backgroundColor: theme.backgroundRoot,
507
- },
508
- scrollContent: {
509
- ...CommonStyles.scrollContent,
510
- },
511
- text: {
512
- color: theme.text,
513
- },
514
- textPrimary: {
515
- color: theme.textPrimary,
516
- },
517
- textSecondary: {
518
- color: theme.textSecondary,
519
- },
520
- textMuted: {
521
- color: theme.textMuted,
522
- },
523
- textDisabled: {
524
- color: theme.textDisabled,
525
- },
526
- textSuccess: {
527
- color: theme.success,
528
- },
529
- textError: {
530
- color: theme.error,
531
- },
532
- textInfo: {
533
- color: theme.info,
534
- },
535
- textButton: {
536
- color: theme.buttonText,
537
- },
538
- avatar: {
539
- ...CommonStyles.avatar,
540
- borderColor: theme.border,
541
- backgroundColor: theme.backgroundRoot,
542
- },
543
- avatarText: {
544
- ...Typography.small,
545
- fontFamily: "serif",
546
- color: theme.textPrimary,
547
- },
548
- iconButton: {
549
- ...CommonStyles.iconButton,
550
- backgroundColor: theme.backgroundSecondary,
551
- },
552
- iconButtonText: {
553
- ...Typography.caption,
554
- color: theme.textMuted,
555
- },
556
- button: {
557
- ...CommonStyles.button,
558
- borderColor: theme.border,
559
- backgroundColor: theme.backgroundRoot,
560
- ...Shadow.minimal,
561
- },
562
- buttonText: {
563
- ...Typography.smallMedium,
564
- letterSpacing: 0.5,
565
- color: theme.textPrimary,
566
- },
567
- buttonOutline: {
568
- ...CommonStyles.buttonSmall,
569
- backgroundColor: theme.backgroundSecondary,
570
- },
571
- buttonOutlineText: {
572
- ...Typography.small,
573
- color: theme.textSecondary,
574
- },
575
- buttonSmall: {
576
- ...CommonStyles.buttonSmall,
577
- backgroundColor: theme.backgroundSecondary,
578
- },
579
- buttonSmallText: {
580
- ...Typography.small,
581
- color: theme.textSecondary,
582
- },
583
- card: {
584
- ...CommonStyles.card,
585
- backgroundColor: theme.backgroundRoot,
586
- },
587
- chartContainer: {
588
- ...CommonStyles.chartContainer,
589
- backgroundColor: theme.chartBackground,
590
- borderColor: theme.backgroundSecondary,
591
- },
592
- chartGrid: {
593
- ...CommonStyles.chartGrid,
594
- },
595
- chartEmpty: {
596
- ...CommonStyles.chartEmpty,
597
- },
598
- chartEmptyText: {
599
- ...Typography.small,
600
- color: theme.textMuted,
601
- },
602
- chartTooltip: {
603
- position: "absolute",
604
- right: 0,
605
- top: "55%",
606
- backgroundColor: theme.accent,
607
- paddingHorizontal: Spacing.sm,
608
- paddingVertical: Spacing.xs,
609
- borderRadius: BorderRadius.xs,
610
- ...Shadow.lg,
611
- },
612
- chartTooltipText: {
613
- ...Typography.tiny,
614
- color: theme.backgroundRoot,
615
- },
616
- progressBar: {
617
- ...CommonStyles.progressBar,
618
- backgroundColor: theme.backgroundSecondary,
619
- },
620
- progressFill: {
621
- ...CommonStyles.progressFill,
622
- backgroundColor: theme.accent,
623
- },
624
- progressFillMuted: {
625
- ...CommonStyles.progressFill,
626
- backgroundColor: theme.textMuted,
627
- },
628
- divider: {
629
- ...CommonStyles.divider,
630
- backgroundColor: theme.divider,
631
- },
632
- dividerVertical: {
633
- ...CommonStyles.dividerVertical,
634
- backgroundColor: theme.borderLight,
635
- },
636
- dot: {
637
- ...CommonStyles.dot,
638
- backgroundColor: theme.textDisabled,
639
- },
640
- tooltip: {
641
- ...CommonStyles.tooltip,
642
- backgroundColor: theme.accent,
643
- ...Shadow.lg,
644
- },
645
- tooltipText: {
646
- color: theme.backgroundRoot,
647
- },
648
- gridLine: {
649
- ...CommonStyles.gridLine,
650
- borderTopColor: theme.border,
651
- },
652
- emptyState: {
653
- ...CommonStyles.emptyState,
654
- },
655
- emptyText: {
656
- ...Typography.small,
657
- color: theme.textMuted,
658
- marginBottom: Spacing.lg,
659
- },
660
- section: {
661
- ...CommonStyles.section,
662
- },
663
- sectionLarge: {
664
- ...CommonStyles.sectionLarge,
665
- },
666
- sectionHeader: {
667
- ...CommonStyles.sectionHeader,
668
- },
669
- statsGrid: {
670
- ...CommonStyles.statsGrid,
671
- marginBottom: Spacing.sectionGap,
672
- },
673
- statsColumn: {
674
- ...CommonStyles.statsColumn,
675
- },
676
- statsColumnLeft: {
677
- ...CommonStyles.statsColumnLeft,
678
- },
679
- statsColumnRight: {
680
- ...CommonStyles.statsColumnRight,
681
- borderLeftColor: theme.borderLight,
682
- },
683
- statsHeader: {
684
- ...CommonStyles.statsHeader,
685
- },
686
- statsTitle: {
687
- ...Typography.title,
688
- color: theme.textPrimary,
689
- },
690
- statsValue: {
691
- ...Typography.stat,
692
- color: theme.textPrimary,
693
- },
694
- statsUnit: {
695
- ...Typography.caption,
696
- color: theme.textMuted,
697
- },
698
- statsSubtext: {
699
- ...Typography.caption,
700
- color: theme.textMuted,
701
- marginTop: Spacing.sm,
702
- },
703
- detailItem: {
704
- ...CommonStyles.detailItem,
705
- },
706
- detailLabel: {
707
- ...Typography.caption,
708
- color: theme.textMuted,
709
- marginBottom: Spacing.xs,
710
- },
711
- detailValue: {
712
- ...Typography.bodyMedium,
713
- color: theme.textPrimary,
714
- },
715
- header: {
716
- ...CommonStyles.header,
717
- },
718
- dateText: {
719
- ...Typography.captionMedium,
720
- color: theme.textMuted,
721
- letterSpacing: 1,
722
- textTransform: "uppercase",
723
- marginBottom: Spacing.xs,
724
- },
725
- greetingText: {
726
- ...Typography.h3,
727
- color: theme.textPrimary,
728
- },
729
- greetingName: {
730
- fontWeight: "700",
731
- },
732
- label: {
733
- ...Typography.label,
734
- color: theme.textMuted,
735
- },
736
- labelSmall: {
737
- ...Typography.labelSmall,
738
- color: theme.textMuted,
739
- },
740
- labelTitle: {
741
- ...Typography.labelTitle,
742
- color: theme.textPrimary,
743
- },
744
- loadingContainer: {
745
- ...CommonStyles.loadingContainer,
746
- backgroundColor: theme.backgroundRoot,
747
- },
748
- statusNormal: {
749
- ...Typography.smallMedium,
750
- color: theme.success,
751
- },
752
- statusHigh: {
753
- ...Typography.smallMedium,
754
- color: theme.error,
755
- },
756
- statusLow: {
757
- ...Typography.smallMedium,
758
- color: theme.info,
759
- },
760
- unitText: {
761
- ...Typography.smallMedium,
762
- color: theme.textMuted,
763
- },
764
- glucoseSection: {
765
- ...CommonStyles.glucoseSection,
766
- },
767
- glucoseHeader: {
768
- ...CommonStyles.glucoseHeader,
769
- },
770
- glucoseLabel: {
771
- ...Typography.label,
772
- color: theme.textMuted,
773
- },
774
- glucoseValue: {
775
- ...Typography.displayLarge,
776
- color: theme.textPrimary,
777
- },
778
- glucoseEmptyValue: {
779
- ...Typography.displayMedium,
780
- color: theme.textMuted,
781
- },
782
- glucoseUnit: {
783
- ...CommonStyles.glucoseUnit,
784
- },
785
- glucoseDetails: {
786
- ...CommonStyles.glucoseDetails,
787
- },
788
- trendLink: {
789
- flexDirection: "row",
790
- alignItems: "center",
791
- gap: Spacing.xs,
792
- },
793
- trendLinkText: {
794
- ...Typography.caption,
795
- color: theme.textMuted,
796
- },
797
- refreshButton: {
798
- ...CommonStyles.buttonSmall,
799
- backgroundColor: theme.backgroundSecondary,
800
- },
801
- refreshButtonText: {
802
- ...Typography.small,
803
- color: theme.textSecondary,
804
- },
805
- input: {
806
- height: Spacing.inputHeight,
807
- backgroundColor: theme.backgroundRoot,
808
- borderRadius: BorderRadius.sm,
809
- borderWidth: 1,
810
- borderColor: theme.border,
811
- paddingHorizontal: Spacing.lg,
812
- ...Typography.body,
813
- color: theme.textPrimary,
814
- },
815
- inputPlaceholder: {
816
- color: theme.placeholder,
817
- },
818
- link: {
819
- ...Typography.link,
820
- color: theme.link,
821
- },
822
- navItem: {
823
- flex: 1,
824
- alignItems: "center",
825
- justifyContent: "center",
826
- paddingVertical: Spacing.sm,
827
- },
828
- navIcon: {
829
- fontSize: 20,
830
- marginBottom: Spacing.xs,
831
- },
832
- navLabel: {
833
- ...Typography.navLabel,
834
- },
835
- navActive: {
836
- color: theme.textPrimary,
837
- },
838
- navInactive: {
839
- color: theme.textMuted,
840
- },
841
- navIndicator: {
842
- width: 4,
843
- height: 4,
844
- borderRadius: 2,
845
- backgroundColor: theme.textPrimary,
846
- position: "absolute",
847
- bottom: -8,
848
- },
849
- });
850
- };