ucode-agent 1.5.0 → 1.7.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 (71) hide show
  1. package/README.md +399 -327
  2. package/package.json +6 -1
  3. package/skills/ui-ux/SKILL.md +2 -2
  4. package/src/core/doctor.js +122 -0
  5. package/src/core/livelog.js +113 -0
  6. package/src/core/loop.js +2105 -1659
  7. package/src/core/provider.js +93 -10
  8. package/src/core/stuck.js +269 -0
  9. package/src/core/tests.js +86 -0
  10. package/src/tools/blocks.js +117 -0
  11. package/src/tools/browser.js +121 -59
  12. package/src/tools/cache.js +105 -0
  13. package/src/tools/deploy.js +283 -0
  14. package/src/tools/files.js +91 -8
  15. package/src/tools/index.js +634 -495
  16. package/src/tools/rename.js +157 -0
  17. package/src/tools/scaffold.js +85 -6
  18. package/src/tools/shell.js +799 -701
  19. package/src/tools/symbols.js +218 -0
  20. package/src/tools/types.js +179 -0
  21. package/src/ui/activity.js +203 -0
  22. package/src/ui/plain.js +22 -3
  23. package/src/ui/screen.js +65 -19
  24. package/src/ui/theme.js +5 -1
  25. package/templates/blocks/app-shell.tsx +81 -0
  26. package/templates/blocks/data-table.tsx +117 -0
  27. package/templates/blocks/empty-state.tsx +41 -0
  28. package/templates/blocks/page-header.tsx +27 -0
  29. package/templates/blocks/stat-cards.tsx +46 -0
  30. package/templates/next-shadcn/TEMPLATE.md +53 -9
  31. package/templates/next-shadcn/_package-lock.json +1335 -148
  32. package/templates/next-shadcn/components.json +1 -1
  33. package/templates/next-shadcn/next.config.ts +2 -1
  34. package/templates/next-shadcn/package.json +4 -2
  35. package/templates/next-shadcn/presets/citrus.json +77 -0
  36. package/templates/next-shadcn/presets/graphite.json +77 -0
  37. package/templates/next-shadcn/presets/grove.json +77 -0
  38. package/templates/next-shadcn/presets/ocean.json +78 -0
  39. package/templates/next-shadcn/presets/sunset.json +77 -0
  40. package/templates/next-shadcn/presets/violet.json +77 -0
  41. package/templates/next-shadcn/src/components/ui/accordion.tsx +80 -0
  42. package/templates/next-shadcn/src/components/ui/alert-dialog.tsx +34 -22
  43. package/templates/next-shadcn/src/components/ui/avatar.tsx +7 -4
  44. package/templates/next-shadcn/src/components/ui/badge.tsx +15 -18
  45. package/templates/next-shadcn/src/components/ui/button.tsx +12 -3
  46. package/templates/next-shadcn/src/components/ui/calendar.tsx +1 -0
  47. package/templates/next-shadcn/src/components/ui/checkbox.tsx +6 -2
  48. package/templates/next-shadcn/src/components/ui/collapsible.tsx +33 -0
  49. package/templates/next-shadcn/src/components/ui/command.tsx +1 -2
  50. package/templates/next-shadcn/src/components/ui/dialog.tsx +34 -26
  51. package/templates/next-shadcn/src/components/ui/dropdown-menu.tsx +115 -114
  52. package/templates/next-shadcn/src/components/ui/hover-card.tsx +43 -0
  53. package/templates/next-shadcn/src/components/ui/input-group.tsx +2 -4
  54. package/templates/next-shadcn/src/components/ui/input.tsx +1 -2
  55. package/templates/next-shadcn/src/components/ui/label.tsx +6 -2
  56. package/templates/next-shadcn/src/components/ui/popover.tsx +27 -28
  57. package/templates/next-shadcn/src/components/ui/progress.tsx +11 -63
  58. package/templates/next-shadcn/src/components/ui/radio-group.tsx +43 -0
  59. package/templates/next-shadcn/src/components/ui/scroll-area.tsx +6 -6
  60. package/templates/next-shadcn/src/components/ui/select.tsx +55 -64
  61. package/templates/next-shadcn/src/components/ui/separator.tsx +6 -3
  62. package/templates/next-shadcn/src/components/ui/sheet.tsx +35 -26
  63. package/templates/next-shadcn/src/components/ui/slider.tsx +58 -0
  64. package/templates/next-shadcn/src/components/ui/switch.tsx +3 -2
  65. package/templates/next-shadcn/src/components/ui/table.tsx +115 -0
  66. package/templates/next-shadcn/src/components/ui/tabs.tsx +16 -8
  67. package/templates/next-shadcn/src/components/ui/toggle-group.tsx +89 -0
  68. package/templates/next-shadcn/src/components/ui/toggle.tsx +46 -0
  69. package/templates/next-shadcn/src/components/ui/tooltip.tsx +24 -33
  70. package/templates/next-shadcn/src/lib/utils.ts +6 -1
  71. package/ucode.js +8 -1
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "$schema": "https://ui.shadcn.com/schema.json",
3
- "style": "base-nova",
3
+ "style": "radix-nova",
4
4
  "rsc": true,
5
5
  "tsx": true,
6
6
  "tailwind": {
@@ -1,7 +1,8 @@
1
1
  import type { NextConfig } from "next";
2
2
 
3
3
  const nextConfig: NextConfig = {
4
- /* config options here */
4
+ // This folder is the project root, even if a stray lockfile sits in a folder above.
5
+ turbopack: { root: process.cwd() },
5
6
  };
6
7
 
7
8
  export default nextConfig;
@@ -9,19 +9,21 @@
9
9
  "lint": "eslint"
10
10
  },
11
11
  "dependencies": {
12
- "@base-ui/react": "^1.8.0",
13
12
  "class-variance-authority": "^0.7.1",
13
+ "clsx": "^2.1.1",
14
14
  "cmdk": "^1.1.1",
15
15
  "cn": "^0.2.6",
16
16
  "date-fns": "^4.4.0",
17
- "lucide-react": "^1.44.0",
17
+ "lucide-react": "^1.45.0",
18
18
  "next": "16.3.4",
19
19
  "next-themes": "^0.4.6",
20
+ "radix-ui": "^1.6.7",
20
21
  "react": "19.2.8",
21
22
  "react-day-picker": "^10.0.1",
22
23
  "react-dom": "19.2.8",
23
24
  "shadcn": "^4.21.0",
24
25
  "sonner": "^2.0.8",
26
+ "tailwind-merge": "^3.6.0",
25
27
  "tw-animate-css": "^1.4.0"
26
28
  },
27
29
  "devDependencies": {
@@ -0,0 +1,77 @@
1
+ {
2
+ "name": "citrus",
3
+ "summary": "bright lime with dark text, bold type and pill-shaped controls",
4
+ "suits": "games, sport, kids, social and energetic consumer apps",
5
+ "fonts": { "sans": "Figtree", "heading": "Bricolage Grotesque", "headingAxes": ["opsz"] },
6
+ "radius": "1.25rem",
7
+ "light": {
8
+ "background": "oklch(0.99 0.006 110)",
9
+ "foreground": "oklch(0.2 0.025 125)",
10
+ "card": "oklch(1 0 0)",
11
+ "card-foreground": "oklch(0.2 0.025 125)",
12
+ "popover": "oklch(1 0 0)",
13
+ "popover-foreground": "oklch(0.2 0.025 125)",
14
+ "primary": "oklch(0.68 0.19 130)",
15
+ "primary-foreground": "oklch(0.2 0.04 128)",
16
+ "secondary": "oklch(0.955 0.02 110)",
17
+ "secondary-foreground": "oklch(0.28 0.04 125)",
18
+ "muted": "oklch(0.962 0.012 110)",
19
+ "muted-foreground": "oklch(0.49 0.03 125)",
20
+ "accent": "oklch(0.955 0.07 112)",
21
+ "accent-foreground": "oklch(0.36 0.08 125)",
22
+ "destructive": "oklch(0.56 0.21 25)",
23
+ "success": "oklch(0.55 0.13 150)",
24
+ "warning": "oklch(0.67 0.16 60)",
25
+ "border": "oklch(0.915 0.014 110)",
26
+ "input": "oklch(0.885 0.02 110)",
27
+ "ring": "oklch(0.6 0.17 132)",
28
+ "chart-1": "oklch(0.72 0.2 130)",
29
+ "chart-2": "oklch(0.8 0.16 90)",
30
+ "chart-3": "oklch(0.7 0.19 50)",
31
+ "chart-4": "oklch(0.62 0.13 200)",
32
+ "chart-5": "oklch(0.62 0.21 355)",
33
+ "sidebar": "oklch(0.975 0.01 110)",
34
+ "sidebar-foreground": "oklch(0.2 0.025 125)",
35
+ "sidebar-primary": "oklch(0.68 0.19 130)",
36
+ "sidebar-primary-foreground": "oklch(0.2 0.04 128)",
37
+ "sidebar-accent": "oklch(0.945 0.06 115)",
38
+ "sidebar-accent-foreground": "oklch(0.3 0.06 125)",
39
+ "sidebar-border": "oklch(0.915 0.014 110)",
40
+ "sidebar-ring": "oklch(0.6 0.17 132)"
41
+ },
42
+ "dark": {
43
+ "background": "oklch(0.155 0.012 125)",
44
+ "foreground": "oklch(0.96 0.012 110)",
45
+ "card": "oklch(0.19 0.015 125)",
46
+ "card-foreground": "oklch(0.96 0.012 110)",
47
+ "popover": "oklch(0.205 0.017 125)",
48
+ "popover-foreground": "oklch(0.96 0.012 110)",
49
+ "primary": "oklch(0.88 0.2 128)",
50
+ "primary-foreground": "oklch(0.2 0.05 128)",
51
+ "secondary": "oklch(0.25 0.02 125)",
52
+ "secondary-foreground": "oklch(0.94 0.015 110)",
53
+ "muted": "oklch(0.24 0.018 125)",
54
+ "muted-foreground": "oklch(0.72 0.03 115)",
55
+ "accent": "oklch(0.29 0.05 125)",
56
+ "accent-foreground": "oklch(0.92 0.1 120)",
57
+ "destructive": "oklch(0.69 0.19 22)",
58
+ "success": "oklch(0.76 0.15 150)",
59
+ "warning": "oklch(0.82 0.15 75)",
60
+ "border": "oklch(1 0 0 / 9%)",
61
+ "input": "oklch(1 0 0 / 13%)",
62
+ "ring": "oklch(0.88 0.2 128)",
63
+ "chart-1": "oklch(0.88 0.2 128)",
64
+ "chart-2": "oklch(0.88 0.15 95)",
65
+ "chart-3": "oklch(0.76 0.17 50)",
66
+ "chart-4": "oklch(0.74 0.11 200)",
67
+ "chart-5": "oklch(0.72 0.19 355)",
68
+ "sidebar": "oklch(0.17 0.013 125)",
69
+ "sidebar-foreground": "oklch(0.96 0.012 110)",
70
+ "sidebar-primary": "oklch(0.88 0.2 128)",
71
+ "sidebar-primary-foreground": "oklch(0.2 0.05 128)",
72
+ "sidebar-accent": "oklch(0.27 0.04 125)",
73
+ "sidebar-accent-foreground": "oklch(0.96 0.03 115)",
74
+ "sidebar-border": "oklch(1 0 0 / 9%)",
75
+ "sidebar-ring": "oklch(0.88 0.2 128)"
76
+ }
77
+ }
@@ -0,0 +1,77 @@
1
+ {
2
+ "name": "graphite",
3
+ "summary": "monochrome ink on paper, crisp corners, a technical grotesque for headings",
4
+ "suits": "developer tools, portfolios, writing, docs and minimal utilities",
5
+ "fonts": { "sans": "Inter", "heading": "Space Grotesk" },
6
+ "radius": "0.375rem",
7
+ "light": {
8
+ "background": "oklch(0.988 0.0015 265)",
9
+ "foreground": "oklch(0.17 0.004 265)",
10
+ "card": "oklch(1 0 0)",
11
+ "card-foreground": "oklch(0.17 0.004 265)",
12
+ "popover": "oklch(1 0 0)",
13
+ "popover-foreground": "oklch(0.17 0.004 265)",
14
+ "primary": "oklch(0.2 0.006 265)",
15
+ "primary-foreground": "oklch(0.985 0 0)",
16
+ "secondary": "oklch(0.955 0.002 265)",
17
+ "secondary-foreground": "oklch(0.2 0.006 265)",
18
+ "muted": "oklch(0.958 0.002 265)",
19
+ "muted-foreground": "oklch(0.49 0.008 265)",
20
+ "accent": "oklch(0.945 0.003 265)",
21
+ "accent-foreground": "oklch(0.2 0.006 265)",
22
+ "destructive": "oklch(0.56 0.21 27)",
23
+ "success": "oklch(0.55 0.12 155)",
24
+ "warning": "oklch(0.67 0.15 65)",
25
+ "border": "oklch(0.91 0.003 265)",
26
+ "input": "oklch(0.87 0.004 265)",
27
+ "ring": "oklch(0.45 0.006 265)",
28
+ "chart-1": "oklch(0.2 0.006 265)",
29
+ "chart-2": "oklch(0.42 0.008 265)",
30
+ "chart-3": "oklch(0.58 0.008 265)",
31
+ "chart-4": "oklch(0.73 0.006 265)",
32
+ "chart-5": "oklch(0.63 0.2 33)",
33
+ "sidebar": "oklch(0.975 0.002 265)",
34
+ "sidebar-foreground": "oklch(0.17 0.004 265)",
35
+ "sidebar-primary": "oklch(0.2 0.006 265)",
36
+ "sidebar-primary-foreground": "oklch(0.985 0 0)",
37
+ "sidebar-accent": "oklch(0.935 0.003 265)",
38
+ "sidebar-accent-foreground": "oklch(0.17 0.004 265)",
39
+ "sidebar-border": "oklch(0.91 0.003 265)",
40
+ "sidebar-ring": "oklch(0.45 0.006 265)"
41
+ },
42
+ "dark": {
43
+ "background": "oklch(0.145 0.003 265)",
44
+ "foreground": "oklch(0.965 0.002 265)",
45
+ "card": "oklch(0.18 0.004 265)",
46
+ "card-foreground": "oklch(0.965 0.002 265)",
47
+ "popover": "oklch(0.2 0.004 265)",
48
+ "popover-foreground": "oklch(0.965 0.002 265)",
49
+ "primary": "oklch(0.95 0.002 265)",
50
+ "primary-foreground": "oklch(0.18 0.004 265)",
51
+ "secondary": "oklch(0.24 0.004 265)",
52
+ "secondary-foreground": "oklch(0.95 0.002 265)",
53
+ "muted": "oklch(0.235 0.004 265)",
54
+ "muted-foreground": "oklch(0.7 0.006 265)",
55
+ "accent": "oklch(0.26 0.004 265)",
56
+ "accent-foreground": "oklch(0.96 0.002 265)",
57
+ "destructive": "oklch(0.69 0.19 22)",
58
+ "success": "oklch(0.74 0.13 155)",
59
+ "warning": "oklch(0.8 0.14 75)",
60
+ "border": "oklch(1 0 0 / 10%)",
61
+ "input": "oklch(1 0 0 / 15%)",
62
+ "ring": "oklch(0.62 0.006 265)",
63
+ "chart-1": "oklch(0.95 0.002 265)",
64
+ "chart-2": "oklch(0.78 0.004 265)",
65
+ "chart-3": "oklch(0.62 0.006 265)",
66
+ "chart-4": "oklch(0.46 0.006 265)",
67
+ "chart-5": "oklch(0.7 0.18 33)",
68
+ "sidebar": "oklch(0.165 0.003 265)",
69
+ "sidebar-foreground": "oklch(0.965 0.002 265)",
70
+ "sidebar-primary": "oklch(0.95 0.002 265)",
71
+ "sidebar-primary-foreground": "oklch(0.18 0.004 265)",
72
+ "sidebar-accent": "oklch(0.245 0.004 265)",
73
+ "sidebar-accent-foreground": "oklch(0.97 0.002 265)",
74
+ "sidebar-border": "oklch(1 0 0 / 10%)",
75
+ "sidebar-ring": "oklch(0.62 0.006 265)"
76
+ }
77
+ }
@@ -0,0 +1,77 @@
1
+ {
2
+ "name": "grove",
3
+ "summary": "fresh emerald green on sage neutrals, soft rounded corners",
4
+ "suits": "health, habits, fitness, food, nature and sustainability",
5
+ "fonts": { "sans": "Plus Jakarta Sans" },
6
+ "radius": "0.875rem",
7
+ "light": {
8
+ "background": "oklch(0.983 0.007 150)",
9
+ "foreground": "oklch(0.22 0.03 165)",
10
+ "card": "oklch(0.998 0.002 150)",
11
+ "card-foreground": "oklch(0.22 0.03 165)",
12
+ "popover": "oklch(0.998 0.002 150)",
13
+ "popover-foreground": "oklch(0.22 0.03 165)",
14
+ "primary": "oklch(0.54 0.12 165)",
15
+ "primary-foreground": "oklch(0.985 0.012 160)",
16
+ "secondary": "oklch(0.952 0.016 155)",
17
+ "secondary-foreground": "oklch(0.3 0.05 165)",
18
+ "muted": "oklch(0.958 0.012 150)",
19
+ "muted-foreground": "oklch(0.5 0.035 160)",
20
+ "accent": "oklch(0.945 0.035 165)",
21
+ "accent-foreground": "oklch(0.38 0.085 165)",
22
+ "destructive": "oklch(0.56 0.2 27)",
23
+ "success": "oklch(0.55 0.14 145)",
24
+ "warning": "oklch(0.67 0.15 65)",
25
+ "border": "oklch(0.912 0.014 150)",
26
+ "input": "oklch(0.885 0.018 150)",
27
+ "ring": "oklch(0.54 0.12 165)",
28
+ "chart-1": "oklch(0.54 0.12 165)",
29
+ "chart-2": "oklch(0.74 0.16 128)",
30
+ "chart-3": "oklch(0.62 0.1 215)",
31
+ "chart-4": "oklch(0.78 0.13 82)",
32
+ "chart-5": "oklch(0.42 0.06 150)",
33
+ "sidebar": "oklch(0.972 0.01 150)",
34
+ "sidebar-foreground": "oklch(0.22 0.03 165)",
35
+ "sidebar-primary": "oklch(0.54 0.12 165)",
36
+ "sidebar-primary-foreground": "oklch(0.985 0.012 160)",
37
+ "sidebar-accent": "oklch(0.935 0.035 162)",
38
+ "sidebar-accent-foreground": "oklch(0.34 0.08 165)",
39
+ "sidebar-border": "oklch(0.912 0.014 150)",
40
+ "sidebar-ring": "oklch(0.54 0.12 165)"
41
+ },
42
+ "dark": {
43
+ "background": "oklch(0.16 0.014 165)",
44
+ "foreground": "oklch(0.955 0.012 150)",
45
+ "card": "oklch(0.195 0.017 165)",
46
+ "card-foreground": "oklch(0.955 0.012 150)",
47
+ "popover": "oklch(0.21 0.019 165)",
48
+ "popover-foreground": "oklch(0.955 0.012 150)",
49
+ "primary": "oklch(0.76 0.13 162)",
50
+ "primary-foreground": "oklch(0.18 0.035 165)",
51
+ "secondary": "oklch(0.25 0.025 165)",
52
+ "secondary-foreground": "oklch(0.93 0.012 150)",
53
+ "muted": "oklch(0.24 0.022 165)",
54
+ "muted-foreground": "oklch(0.71 0.03 155)",
55
+ "accent": "oklch(0.28 0.05 165)",
56
+ "accent-foreground": "oklch(0.9 0.07 160)",
57
+ "destructive": "oklch(0.69 0.19 22)",
58
+ "success": "oklch(0.76 0.15 145)",
59
+ "warning": "oklch(0.81 0.14 78)",
60
+ "border": "oklch(1 0 0 / 9%)",
61
+ "input": "oklch(1 0 0 / 13%)",
62
+ "ring": "oklch(0.76 0.13 162)",
63
+ "chart-1": "oklch(0.76 0.13 162)",
64
+ "chart-2": "oklch(0.84 0.17 128)",
65
+ "chart-3": "oklch(0.72 0.1 215)",
66
+ "chart-4": "oklch(0.83 0.12 82)",
67
+ "chart-5": "oklch(0.6 0.07 150)",
68
+ "sidebar": "oklch(0.175 0.015 165)",
69
+ "sidebar-foreground": "oklch(0.955 0.012 150)",
70
+ "sidebar-primary": "oklch(0.76 0.13 162)",
71
+ "sidebar-primary-foreground": "oklch(0.18 0.035 165)",
72
+ "sidebar-accent": "oklch(0.26 0.04 165)",
73
+ "sidebar-accent-foreground": "oklch(0.95 0.03 155)",
74
+ "sidebar-border": "oklch(1 0 0 / 9%)",
75
+ "sidebar-ring": "oklch(0.76 0.13 162)"
76
+ }
77
+ }
@@ -0,0 +1,78 @@
1
+ {
2
+ "name": "ocean",
3
+ "summary": "calm, trustworthy blue with cool slate neutrals",
4
+ "suits": "dashboards, finance, productivity, SaaS and admin tools",
5
+ "default": true,
6
+ "fonts": { "sans": "Geist" },
7
+ "radius": "0.625rem",
8
+ "light": {
9
+ "background": "oklch(0.984 0.004 247)",
10
+ "foreground": "oklch(0.21 0.028 257)",
11
+ "card": "oklch(1 0 0)",
12
+ "card-foreground": "oklch(0.21 0.028 257)",
13
+ "popover": "oklch(1 0 0)",
14
+ "popover-foreground": "oklch(0.21 0.028 257)",
15
+ "primary": "oklch(0.54 0.18 255)",
16
+ "primary-foreground": "oklch(0.985 0.006 247)",
17
+ "secondary": "oklch(0.955 0.01 250)",
18
+ "secondary-foreground": "oklch(0.28 0.035 257)",
19
+ "muted": "oklch(0.962 0.007 250)",
20
+ "muted-foreground": "oklch(0.505 0.025 257)",
21
+ "accent": "oklch(0.95 0.028 250)",
22
+ "accent-foreground": "oklch(0.4 0.13 257)",
23
+ "destructive": "oklch(0.56 0.21 25)",
24
+ "success": "oklch(0.56 0.13 158)",
25
+ "warning": "oklch(0.67 0.155 62)",
26
+ "border": "oklch(0.915 0.009 250)",
27
+ "input": "oklch(0.885 0.012 250)",
28
+ "ring": "oklch(0.54 0.18 255)",
29
+ "chart-1": "oklch(0.54 0.18 255)",
30
+ "chart-2": "oklch(0.7 0.12 215)",
31
+ "chart-3": "oklch(0.62 0.13 170)",
32
+ "chart-4": "oklch(0.78 0.14 80)",
33
+ "chart-5": "oklch(0.55 0.16 295)",
34
+ "sidebar": "oklch(0.975 0.006 250)",
35
+ "sidebar-foreground": "oklch(0.21 0.028 257)",
36
+ "sidebar-primary": "oklch(0.54 0.18 255)",
37
+ "sidebar-primary-foreground": "oklch(0.985 0.006 247)",
38
+ "sidebar-accent": "oklch(0.94 0.026 252)",
39
+ "sidebar-accent-foreground": "oklch(0.36 0.12 257)",
40
+ "sidebar-border": "oklch(0.915 0.009 250)",
41
+ "sidebar-ring": "oklch(0.54 0.18 255)"
42
+ },
43
+ "dark": {
44
+ "background": "oklch(0.155 0.016 257)",
45
+ "foreground": "oklch(0.955 0.008 250)",
46
+ "card": "oklch(0.19 0.018 257)",
47
+ "card-foreground": "oklch(0.955 0.008 250)",
48
+ "popover": "oklch(0.205 0.02 257)",
49
+ "popover-foreground": "oklch(0.955 0.008 250)",
50
+ "primary": "oklch(0.7 0.14 250)",
51
+ "primary-foreground": "oklch(0.16 0.03 257)",
52
+ "secondary": "oklch(0.245 0.022 257)",
53
+ "secondary-foreground": "oklch(0.93 0.01 250)",
54
+ "muted": "oklch(0.235 0.02 257)",
55
+ "muted-foreground": "oklch(0.7 0.025 252)",
56
+ "accent": "oklch(0.275 0.05 257)",
57
+ "accent-foreground": "oklch(0.9 0.06 250)",
58
+ "destructive": "oklch(0.69 0.19 22)",
59
+ "success": "oklch(0.74 0.14 158)",
60
+ "warning": "oklch(0.8 0.14 75)",
61
+ "border": "oklch(1 0 0 / 9%)",
62
+ "input": "oklch(1 0 0 / 13%)",
63
+ "ring": "oklch(0.7 0.14 250)",
64
+ "chart-1": "oklch(0.7 0.14 250)",
65
+ "chart-2": "oklch(0.78 0.11 210)",
66
+ "chart-3": "oklch(0.72 0.12 170)",
67
+ "chart-4": "oklch(0.82 0.13 80)",
68
+ "chart-5": "oklch(0.68 0.15 295)",
69
+ "sidebar": "oklch(0.172 0.017 257)",
70
+ "sidebar-foreground": "oklch(0.955 0.008 250)",
71
+ "sidebar-primary": "oklch(0.7 0.14 250)",
72
+ "sidebar-primary-foreground": "oklch(0.16 0.03 257)",
73
+ "sidebar-accent": "oklch(0.255 0.035 257)",
74
+ "sidebar-accent-foreground": "oklch(0.95 0.02 250)",
75
+ "sidebar-border": "oklch(1 0 0 / 9%)",
76
+ "sidebar-ring": "oklch(0.7 0.14 250)"
77
+ }
78
+ }
@@ -0,0 +1,77 @@
1
+ {
2
+ "name": "sunset",
3
+ "summary": "warm coral on cream paper, with a soft serif for headings",
4
+ "suits": "travel, recipes, journaling, lifestyle, events and hospitality",
5
+ "fonts": { "sans": "DM Sans", "heading": "Fraunces", "headingAxes": ["opsz"] },
6
+ "radius": "0.75rem",
7
+ "light": {
8
+ "background": "oklch(0.982 0.009 75)",
9
+ "foreground": "oklch(0.235 0.028 40)",
10
+ "card": "oklch(0.996 0.004 75)",
11
+ "card-foreground": "oklch(0.235 0.028 40)",
12
+ "popover": "oklch(0.996 0.004 75)",
13
+ "popover-foreground": "oklch(0.235 0.028 40)",
14
+ "primary": "oklch(0.585 0.17 36)",
15
+ "primary-foreground": "oklch(0.99 0.008 70)",
16
+ "secondary": "oklch(0.948 0.02 68)",
17
+ "secondary-foreground": "oklch(0.32 0.05 40)",
18
+ "muted": "oklch(0.955 0.015 70)",
19
+ "muted-foreground": "oklch(0.51 0.04 45)",
20
+ "accent": "oklch(0.94 0.04 55)",
21
+ "accent-foreground": "oklch(0.43 0.12 38)",
22
+ "destructive": "oklch(0.545 0.2 20)",
23
+ "success": "oklch(0.55 0.12 150)",
24
+ "warning": "oklch(0.67 0.15 68)",
25
+ "border": "oklch(0.905 0.02 68)",
26
+ "input": "oklch(0.88 0.024 68)",
27
+ "ring": "oklch(0.585 0.17 36)",
28
+ "chart-1": "oklch(0.6 0.17 36)",
29
+ "chart-2": "oklch(0.77 0.14 72)",
30
+ "chart-3": "oklch(0.62 0.16 355)",
31
+ "chart-4": "oklch(0.58 0.09 200)",
32
+ "chart-5": "oklch(0.45 0.09 320)",
33
+ "sidebar": "oklch(0.972 0.013 72)",
34
+ "sidebar-foreground": "oklch(0.235 0.028 40)",
35
+ "sidebar-primary": "oklch(0.585 0.17 36)",
36
+ "sidebar-primary-foreground": "oklch(0.99 0.008 70)",
37
+ "sidebar-accent": "oklch(0.935 0.04 55)",
38
+ "sidebar-accent-foreground": "oklch(0.4 0.11 38)",
39
+ "sidebar-border": "oklch(0.905 0.02 68)",
40
+ "sidebar-ring": "oklch(0.585 0.17 36)"
41
+ },
42
+ "dark": {
43
+ "background": "oklch(0.165 0.014 45)",
44
+ "foreground": "oklch(0.955 0.012 75)",
45
+ "card": "oklch(0.2 0.016 45)",
46
+ "card-foreground": "oklch(0.955 0.012 75)",
47
+ "popover": "oklch(0.215 0.018 45)",
48
+ "popover-foreground": "oklch(0.955 0.012 75)",
49
+ "primary": "oklch(0.72 0.15 42)",
50
+ "primary-foreground": "oklch(0.19 0.035 40)",
51
+ "secondary": "oklch(0.255 0.02 45)",
52
+ "secondary-foreground": "oklch(0.93 0.015 70)",
53
+ "muted": "oklch(0.245 0.018 45)",
54
+ "muted-foreground": "oklch(0.72 0.03 60)",
55
+ "accent": "oklch(0.29 0.05 42)",
56
+ "accent-foreground": "oklch(0.91 0.06 55)",
57
+ "destructive": "oklch(0.69 0.19 20)",
58
+ "success": "oklch(0.74 0.13 150)",
59
+ "warning": "oklch(0.81 0.14 75)",
60
+ "border": "oklch(1 0 0 / 9%)",
61
+ "input": "oklch(1 0 0 / 13%)",
62
+ "ring": "oklch(0.72 0.15 42)",
63
+ "chart-1": "oklch(0.72 0.15 42)",
64
+ "chart-2": "oklch(0.82 0.13 75)",
65
+ "chart-3": "oklch(0.7 0.15 355)",
66
+ "chart-4": "oklch(0.7 0.09 200)",
67
+ "chart-5": "oklch(0.62 0.1 320)",
68
+ "sidebar": "oklch(0.18 0.015 45)",
69
+ "sidebar-foreground": "oklch(0.955 0.012 75)",
70
+ "sidebar-primary": "oklch(0.72 0.15 42)",
71
+ "sidebar-primary-foreground": "oklch(0.19 0.035 40)",
72
+ "sidebar-accent": "oklch(0.27 0.04 42)",
73
+ "sidebar-accent-foreground": "oklch(0.95 0.03 60)",
74
+ "sidebar-border": "oklch(1 0 0 / 9%)",
75
+ "sidebar-ring": "oklch(0.72 0.15 42)"
76
+ }
77
+ }
@@ -0,0 +1,77 @@
1
+ {
2
+ "name": "violet",
3
+ "summary": "vivid violet on lavender-tinted neutrals, a geometric display face",
4
+ "suits": "AI tools, creative apps, music, community and learning",
5
+ "fonts": { "sans": "Manrope", "heading": "Sora" },
6
+ "radius": "0.75rem",
7
+ "light": {
8
+ "background": "oklch(0.984 0.006 295)",
9
+ "foreground": "oklch(0.2 0.035 290)",
10
+ "card": "oklch(1 0 0)",
11
+ "card-foreground": "oklch(0.2 0.035 290)",
12
+ "popover": "oklch(1 0 0)",
13
+ "popover-foreground": "oklch(0.2 0.035 290)",
14
+ "primary": "oklch(0.54 0.235 292)",
15
+ "primary-foreground": "oklch(0.985 0.01 295)",
16
+ "secondary": "oklch(0.952 0.014 295)",
17
+ "secondary-foreground": "oklch(0.3 0.06 292)",
18
+ "muted": "oklch(0.96 0.01 295)",
19
+ "muted-foreground": "oklch(0.51 0.035 292)",
20
+ "accent": "oklch(0.945 0.035 298)",
21
+ "accent-foreground": "oklch(0.43 0.17 292)",
22
+ "destructive": "oklch(0.56 0.21 22)",
23
+ "success": "oklch(0.56 0.13 160)",
24
+ "warning": "oklch(0.67 0.15 62)",
25
+ "border": "oklch(0.912 0.012 295)",
26
+ "input": "oklch(0.885 0.016 295)",
27
+ "ring": "oklch(0.54 0.235 292)",
28
+ "chart-1": "oklch(0.54 0.235 292)",
29
+ "chart-2": "oklch(0.66 0.2 345)",
30
+ "chart-3": "oklch(0.6 0.16 255)",
31
+ "chart-4": "oklch(0.74 0.12 200)",
32
+ "chart-5": "oklch(0.8 0.14 85)",
33
+ "sidebar": "oklch(0.974 0.009 295)",
34
+ "sidebar-foreground": "oklch(0.2 0.035 290)",
35
+ "sidebar-primary": "oklch(0.54 0.235 292)",
36
+ "sidebar-primary-foreground": "oklch(0.985 0.01 295)",
37
+ "sidebar-accent": "oklch(0.935 0.038 296)",
38
+ "sidebar-accent-foreground": "oklch(0.4 0.17 292)",
39
+ "sidebar-border": "oklch(0.912 0.012 295)",
40
+ "sidebar-ring": "oklch(0.54 0.235 292)"
41
+ },
42
+ "dark": {
43
+ "background": "oklch(0.155 0.022 288)",
44
+ "foreground": "oklch(0.955 0.01 295)",
45
+ "card": "oklch(0.19 0.026 288)",
46
+ "card-foreground": "oklch(0.955 0.01 295)",
47
+ "popover": "oklch(0.205 0.028 288)",
48
+ "popover-foreground": "oklch(0.955 0.01 295)",
49
+ "primary": "oklch(0.6 0.22 292)",
50
+ "primary-foreground": "oklch(0.985 0.01 295)",
51
+ "secondary": "oklch(0.25 0.03 288)",
52
+ "secondary-foreground": "oklch(0.93 0.015 295)",
53
+ "muted": "oklch(0.24 0.028 288)",
54
+ "muted-foreground": "oklch(0.71 0.035 292)",
55
+ "accent": "oklch(0.28 0.06 292)",
56
+ "accent-foreground": "oklch(0.9 0.07 295)",
57
+ "destructive": "oklch(0.69 0.19 20)",
58
+ "success": "oklch(0.74 0.14 160)",
59
+ "warning": "oklch(0.8 0.14 75)",
60
+ "border": "oklch(1 0 0 / 9%)",
61
+ "input": "oklch(1 0 0 / 13%)",
62
+ "ring": "oklch(0.68 0.19 292)",
63
+ "chart-1": "oklch(0.68 0.19 292)",
64
+ "chart-2": "oklch(0.72 0.18 345)",
65
+ "chart-3": "oklch(0.7 0.14 255)",
66
+ "chart-4": "oklch(0.8 0.11 200)",
67
+ "chart-5": "oklch(0.84 0.13 85)",
68
+ "sidebar": "oklch(0.17 0.024 288)",
69
+ "sidebar-foreground": "oklch(0.955 0.01 295)",
70
+ "sidebar-primary": "oklch(0.6 0.22 292)",
71
+ "sidebar-primary-foreground": "oklch(0.985 0.01 295)",
72
+ "sidebar-accent": "oklch(0.26 0.05 292)",
73
+ "sidebar-accent-foreground": "oklch(0.95 0.03 295)",
74
+ "sidebar-border": "oklch(1 0 0 / 9%)",
75
+ "sidebar-ring": "oklch(0.68 0.19 292)"
76
+ }
77
+ }
@@ -0,0 +1,80 @@
1
+ "use client"
2
+
3
+ import * as React from "react"
4
+ import { cn } from "cn"
5
+ import { Accordion as AccordionPrimitive } from "radix-ui"
6
+ import { ChevronDownIcon, ChevronUpIcon } from "lucide-react"
7
+
8
+ function Accordion({
9
+ className,
10
+ ...props
11
+ }: React.ComponentProps<typeof AccordionPrimitive.Root>) {
12
+ return (
13
+ <AccordionPrimitive.Root
14
+ data-slot="accordion"
15
+ className={cn("flex w-full flex-col", className)}
16
+ {...props}
17
+ />
18
+ )
19
+ }
20
+
21
+ function AccordionItem({
22
+ className,
23
+ ...props
24
+ }: React.ComponentProps<typeof AccordionPrimitive.Item>) {
25
+ return (
26
+ <AccordionPrimitive.Item
27
+ data-slot="accordion-item"
28
+ className={cn("not-last:border-b", className)}
29
+ {...props}
30
+ />
31
+ )
32
+ }
33
+
34
+ function AccordionTrigger({
35
+ className,
36
+ children,
37
+ ...props
38
+ }: React.ComponentProps<typeof AccordionPrimitive.Trigger>) {
39
+ return (
40
+ <AccordionPrimitive.Header className="flex">
41
+ <AccordionPrimitive.Trigger
42
+ data-slot="accordion-trigger"
43
+ className={cn(
44
+ "group/accordion-trigger relative flex flex-1 items-start justify-between rounded-lg border border-transparent py-2.5 text-left text-sm font-medium transition-all outline-none hover:underline focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 focus-visible:after:border-ring disabled:pointer-events-none disabled:opacity-50 **:data-[slot=accordion-trigger-icon]:ml-auto **:data-[slot=accordion-trigger-icon]:size-4 **:data-[slot=accordion-trigger-icon]:text-muted-foreground",
45
+ className
46
+ )}
47
+ {...props}
48
+ >
49
+ {children}
50
+ <ChevronDownIcon data-slot="accordion-trigger-icon" className="pointer-events-none shrink-0 group-aria-expanded/accordion-trigger:hidden" />
51
+ <ChevronUpIcon data-slot="accordion-trigger-icon" className="pointer-events-none hidden shrink-0 group-aria-expanded/accordion-trigger:inline" />
52
+ </AccordionPrimitive.Trigger>
53
+ </AccordionPrimitive.Header>
54
+ )
55
+ }
56
+
57
+ function AccordionContent({
58
+ className,
59
+ children,
60
+ ...props
61
+ }: React.ComponentProps<typeof AccordionPrimitive.Content>) {
62
+ return (
63
+ <AccordionPrimitive.Content
64
+ data-slot="accordion-content"
65
+ className="overflow-hidden text-sm data-open:animate-accordion-down data-closed:animate-accordion-up"
66
+ {...props}
67
+ >
68
+ <div
69
+ className={cn(
70
+ "h-(--radix-accordion-content-height) pt-0 pb-2.5 [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground [&_p:not(:last-child)]:mb-4",
71
+ className
72
+ )}
73
+ >
74
+ {children}
75
+ </div>
76
+ </AccordionPrimitive.Content>
77
+ )
78
+ }
79
+
80
+ export { Accordion, AccordionItem, AccordionTrigger, AccordionContent }