@lfrprazeres/ui 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 (114) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +160 -0
  3. package/dist/components/chip.d.ts +16 -0
  4. package/dist/components/chip.d.ts.map +1 -0
  5. package/dist/components/chip.js +49 -0
  6. package/dist/components/chip.js.map +1 -0
  7. package/dist/components/index.d.ts +8 -0
  8. package/dist/components/index.js +8 -0
  9. package/dist/components/language-switcher.d.ts +22 -0
  10. package/dist/components/language-switcher.d.ts.map +1 -0
  11. package/dist/components/language-switcher.js +42 -0
  12. package/dist/components/language-switcher.js.map +1 -0
  13. package/dist/components/marquee.d.ts +23 -0
  14. package/dist/components/marquee.d.ts.map +1 -0
  15. package/dist/components/marquee.js +49 -0
  16. package/dist/components/marquee.js.map +1 -0
  17. package/dist/components/message-bubble.d.ts +28 -0
  18. package/dist/components/message-bubble.d.ts.map +1 -0
  19. package/dist/components/message-bubble.js +81 -0
  20. package/dist/components/message-bubble.js.map +1 -0
  21. package/dist/components/stat-tile.d.ts +18 -0
  22. package/dist/components/stat-tile.d.ts.map +1 -0
  23. package/dist/components/stat-tile.js +54 -0
  24. package/dist/components/stat-tile.js.map +1 -0
  25. package/dist/components/streaming-dots.d.ts +19 -0
  26. package/dist/components/streaming-dots.d.ts.map +1 -0
  27. package/dist/components/streaming-dots.js +29 -0
  28. package/dist/components/streaming-dots.js.map +1 -0
  29. package/dist/components/theme-toggle.d.ts +13 -0
  30. package/dist/components/theme-toggle.d.ts.map +1 -0
  31. package/dist/components/theme-toggle.js +54 -0
  32. package/dist/components/theme-toggle.js.map +1 -0
  33. package/dist/elements/avatar.d.ts +14 -0
  34. package/dist/elements/avatar.d.ts.map +1 -0
  35. package/dist/elements/avatar.js +52 -0
  36. package/dist/elements/avatar.js.map +1 -0
  37. package/dist/elements/badge.d.ts +12 -0
  38. package/dist/elements/badge.d.ts.map +1 -0
  39. package/dist/elements/badge.js +29 -0
  40. package/dist/elements/badge.js.map +1 -0
  41. package/dist/elements/button.d.ts +13 -0
  42. package/dist/elements/button.d.ts.map +1 -0
  43. package/dist/elements/button.js +49 -0
  44. package/dist/elements/button.js.map +1 -0
  45. package/dist/elements/card.d.ts +12 -0
  46. package/dist/elements/card.d.ts.map +1 -0
  47. package/dist/elements/card.js +56 -0
  48. package/dist/elements/card.js.map +1 -0
  49. package/dist/elements/checkbox.d.ts +7 -0
  50. package/dist/elements/checkbox.d.ts.map +1 -0
  51. package/dist/elements/checkbox.js +22 -0
  52. package/dist/elements/checkbox.js.map +1 -0
  53. package/dist/elements/dialog.d.ts +20 -0
  54. package/dist/elements/dialog.d.ts.map +1 -0
  55. package/dist/elements/dialog.js +95 -0
  56. package/dist/elements/dialog.js.map +1 -0
  57. package/dist/elements/dropdown-menu.d.ts +28 -0
  58. package/dist/elements/dropdown-menu.d.ts.map +1 -0
  59. package/dist/elements/dropdown-menu.js +124 -0
  60. package/dist/elements/dropdown-menu.js.map +1 -0
  61. package/dist/elements/index.d.ts +17 -0
  62. package/dist/elements/index.js +17 -0
  63. package/dist/elements/input.d.ts +6 -0
  64. package/dist/elements/input.d.ts.map +1 -0
  65. package/dist/elements/input.js +15 -0
  66. package/dist/elements/input.js.map +1 -0
  67. package/dist/elements/label.d.ts +7 -0
  68. package/dist/elements/label.d.ts.map +1 -0
  69. package/dist/elements/label.js +16 -0
  70. package/dist/elements/label.js.map +1 -0
  71. package/dist/elements/popover.d.ts +13 -0
  72. package/dist/elements/popover.d.ts.map +1 -0
  73. package/dist/elements/popover.js +57 -0
  74. package/dist/elements/popover.js.map +1 -0
  75. package/dist/elements/select.d.ts +18 -0
  76. package/dist/elements/select.d.ts.map +1 -0
  77. package/dist/elements/select.js +99 -0
  78. package/dist/elements/select.js.map +1 -0
  79. package/dist/elements/separator.d.ts +7 -0
  80. package/dist/elements/separator.d.ts.map +1 -0
  81. package/dist/elements/separator.js +18 -0
  82. package/dist/elements/separator.js.map +1 -0
  83. package/dist/elements/skeleton.d.ts +5 -0
  84. package/dist/elements/skeleton.d.ts.map +1 -0
  85. package/dist/elements/skeleton.js +14 -0
  86. package/dist/elements/skeleton.js.map +1 -0
  87. package/dist/elements/sonner.d.ts +17 -0
  88. package/dist/elements/sonner.d.ts.map +1 -0
  89. package/dist/elements/sonner.js +40 -0
  90. package/dist/elements/sonner.js.map +1 -0
  91. package/dist/elements/switch.d.ts +9 -0
  92. package/dist/elements/switch.d.ts.map +1 -0
  93. package/dist/elements/switch.js +21 -0
  94. package/dist/elements/switch.js.map +1 -0
  95. package/dist/elements/textarea.d.ts +6 -0
  96. package/dist/elements/textarea.d.ts.map +1 -0
  97. package/dist/elements/textarea.js +14 -0
  98. package/dist/elements/textarea.js.map +1 -0
  99. package/dist/index.d.ts +27 -0
  100. package/dist/index.js +25 -0
  101. package/dist/lib/cn.d.ts +6 -0
  102. package/dist/lib/cn.d.ts.map +1 -0
  103. package/dist/lib/cn.js +10 -0
  104. package/dist/lib/cn.js.map +1 -0
  105. package/dist/styles.css +18 -0
  106. package/dist/tokens/01-ramps.css +142 -0
  107. package/dist/tokens/02-scales.css +28 -0
  108. package/dist/tokens/03-bridge.css +75 -0
  109. package/dist/tokens/index.css +7 -0
  110. package/dist/tokens/palettes/base.css +96 -0
  111. package/dist/tokens/palettes/cyberpunk.css +83 -0
  112. package/dist/tokens/palettes/gold.css +77 -0
  113. package/dist/tokens/palettes/minimal.css +82 -0
  114. package/package.json +100 -0
@@ -0,0 +1,83 @@
1
+ /* Cyberpunk palette. class="palette-cyberpunk", plus dark.
2
+ Also overrides radius and the sans stack, exercising the full preset contract. */
3
+
4
+ .palette-cyberpunk {
5
+ --radius: 0.125rem;
6
+ --font-sans-stack:
7
+ var(--font-mono-app, "JetBrains Mono"), ui-monospace, SFMono-Regular,
8
+ "Cascadia Code", monospace;
9
+
10
+ --background: var(--slate-50);
11
+ --foreground: var(--slate-950);
12
+ --card: var(--neutral-0);
13
+ --card-foreground: var(--slate-950);
14
+ --popover: var(--neutral-0);
15
+ --popover-foreground: var(--slate-950);
16
+ --primary: var(--cyan-700);
17
+ --primary-foreground: var(--slate-50);
18
+ --secondary: var(--fuchsia-600);
19
+ --secondary-foreground: var(--slate-50);
20
+ --tertiary: var(--violet-600);
21
+ --tertiary-foreground: var(--slate-50);
22
+ --muted: var(--slate-100);
23
+ --muted-foreground: var(--slate-500);
24
+ --accent: var(--cyan-100);
25
+ --accent-foreground: var(--cyan-900);
26
+ --destructive: var(--rose-600);
27
+ --border: var(--slate-200);
28
+ --input: var(--slate-200);
29
+ --ring: var(--cyan-500);
30
+ --chart-1: var(--cyan-500);
31
+ --chart-2: var(--fuchsia-500);
32
+ --chart-3: var(--violet-500);
33
+ --chart-4: var(--emerald-500);
34
+ --chart-5: var(--gold-500);
35
+ --sidebar: var(--slate-100);
36
+ --sidebar-foreground: var(--slate-950);
37
+ --sidebar-primary: var(--cyan-700);
38
+ --sidebar-primary-foreground: var(--slate-50);
39
+ --sidebar-accent: var(--cyan-100);
40
+ --sidebar-accent-foreground: var(--cyan-900);
41
+ --sidebar-border: var(--slate-200);
42
+ --sidebar-ring: var(--cyan-500);
43
+ --positive: var(--emerald-600);
44
+ --negative: var(--rose-600);
45
+ }
46
+
47
+ .palette-cyberpunk.dark {
48
+ --background: var(--slate-950);
49
+ --foreground: var(--cyan-100);
50
+ --card: var(--slate-900);
51
+ --card-foreground: var(--cyan-100);
52
+ --popover: var(--slate-900);
53
+ --popover-foreground: var(--cyan-100);
54
+ --primary: var(--cyan-400);
55
+ --primary-foreground: var(--slate-950);
56
+ --secondary: var(--fuchsia-400);
57
+ --secondary-foreground: var(--slate-950);
58
+ --tertiary: var(--violet-400);
59
+ --tertiary-foreground: var(--slate-950);
60
+ --muted: var(--slate-800);
61
+ --muted-foreground: var(--slate-400);
62
+ --accent: var(--cyan-950);
63
+ --accent-foreground: var(--cyan-300);
64
+ --destructive: var(--rose-400);
65
+ --border: var(--overlay-white-10);
66
+ --input: var(--overlay-white-15);
67
+ --ring: var(--cyan-400);
68
+ --chart-1: var(--cyan-400);
69
+ --chart-2: var(--fuchsia-400);
70
+ --chart-3: var(--violet-400);
71
+ --chart-4: var(--emerald-400);
72
+ --chart-5: var(--gold-300);
73
+ --sidebar: var(--slate-900);
74
+ --sidebar-foreground: var(--cyan-100);
75
+ --sidebar-primary: var(--cyan-400);
76
+ --sidebar-primary-foreground: var(--slate-950);
77
+ --sidebar-accent: var(--cyan-950);
78
+ --sidebar-accent-foreground: var(--cyan-300);
79
+ --sidebar-border: var(--overlay-white-10);
80
+ --sidebar-ring: var(--cyan-400);
81
+ --positive: var(--emerald-400);
82
+ --negative: var(--rose-400);
83
+ }
@@ -0,0 +1,77 @@
1
+ /* Gold palette. class="palette-gold", plus dark. Colour only. */
2
+
3
+ .palette-gold {
4
+ --background: var(--sand-50);
5
+ --foreground: var(--sand-950);
6
+ --card: var(--neutral-0);
7
+ --card-foreground: var(--sand-950);
8
+ --popover: var(--neutral-0);
9
+ --popover-foreground: var(--sand-950);
10
+ --primary: var(--gold-600);
11
+ --primary-foreground: var(--sand-50);
12
+ --secondary: var(--sand-100);
13
+ --secondary-foreground: var(--gold-900);
14
+ --tertiary: var(--gold-200);
15
+ --tertiary-foreground: var(--gold-950);
16
+ --muted: var(--sand-100);
17
+ --muted-foreground: var(--sand-600);
18
+ --accent: var(--gold-100);
19
+ --accent-foreground: var(--gold-900);
20
+ --destructive: var(--rose-600);
21
+ --border: var(--sand-200);
22
+ --input: var(--sand-200);
23
+ --ring: var(--gold-500);
24
+ --chart-1: var(--gold-300);
25
+ --chart-2: var(--gold-500);
26
+ --chart-3: var(--gold-600);
27
+ --chart-4: var(--gold-700);
28
+ --chart-5: var(--gold-800);
29
+ --sidebar: var(--sand-100);
30
+ --sidebar-foreground: var(--sand-950);
31
+ --sidebar-primary: var(--gold-600);
32
+ --sidebar-primary-foreground: var(--sand-50);
33
+ --sidebar-accent: var(--gold-100);
34
+ --sidebar-accent-foreground: var(--gold-900);
35
+ --sidebar-border: var(--sand-200);
36
+ --sidebar-ring: var(--gold-500);
37
+ --positive: var(--emerald-600);
38
+ --negative: var(--rose-600);
39
+ }
40
+
41
+ .palette-gold.dark {
42
+ --background: var(--sand-950);
43
+ --foreground: var(--sand-100);
44
+ --card: var(--sand-900);
45
+ --card-foreground: var(--sand-100);
46
+ --popover: var(--sand-900);
47
+ --popover-foreground: var(--sand-100);
48
+ --primary: var(--gold-300);
49
+ --primary-foreground: var(--sand-950);
50
+ --secondary: var(--sand-800);
51
+ --secondary-foreground: var(--sand-100);
52
+ --tertiary: var(--gold-800);
53
+ --tertiary-foreground: var(--gold-100);
54
+ --muted: var(--sand-800);
55
+ --muted-foreground: var(--sand-400);
56
+ --accent: var(--gold-950);
57
+ --accent-foreground: var(--gold-100);
58
+ --destructive: var(--rose-400);
59
+ --border: var(--overlay-white-10);
60
+ --input: var(--overlay-white-15);
61
+ --ring: var(--gold-400);
62
+ --chart-1: var(--gold-200);
63
+ --chart-2: var(--gold-300);
64
+ --chart-3: var(--gold-400);
65
+ --chart-4: var(--gold-500);
66
+ --chart-5: var(--gold-600);
67
+ --sidebar: var(--sand-900);
68
+ --sidebar-foreground: var(--sand-100);
69
+ --sidebar-primary: var(--gold-300);
70
+ --sidebar-primary-foreground: var(--sand-950);
71
+ --sidebar-accent: var(--gold-950);
72
+ --sidebar-accent-foreground: var(--gold-100);
73
+ --sidebar-border: var(--overlay-white-10);
74
+ --sidebar-ring: var(--gold-400);
75
+ --positive: var(--emerald-400);
76
+ --negative: var(--rose-400);
77
+ }
@@ -0,0 +1,82 @@
1
+ /* Minimal palette. class="palette-minimal", plus dark.
2
+ Also overrides --spacing, which rescales every gap, padding and size, because
3
+ Tailwind emits those utilities as calc(var(--spacing) * n). */
4
+
5
+ .palette-minimal {
6
+ --radius: 0rem;
7
+ --spacing: 0.2rem;
8
+
9
+ --background: var(--neutral-0);
10
+ --foreground: var(--neutral-950);
11
+ --card: var(--neutral-0);
12
+ --card-foreground: var(--neutral-950);
13
+ --popover: var(--neutral-0);
14
+ --popover-foreground: var(--neutral-950);
15
+ --primary: var(--neutral-950);
16
+ --primary-foreground: var(--neutral-0);
17
+ --secondary: var(--neutral-0);
18
+ --secondary-foreground: var(--neutral-950);
19
+ --tertiary: var(--neutral-100);
20
+ --tertiary-foreground: var(--neutral-950);
21
+ --muted: var(--neutral-50);
22
+ --muted-foreground: var(--neutral-600);
23
+ --accent: var(--neutral-100);
24
+ --accent-foreground: var(--neutral-950);
25
+ --destructive: var(--neutral-950);
26
+ --border: var(--neutral-950);
27
+ --input: var(--neutral-950);
28
+ --ring: var(--neutral-950);
29
+ --chart-1: var(--neutral-950);
30
+ --chart-2: var(--neutral-700);
31
+ --chart-3: var(--neutral-500);
32
+ --chart-4: var(--neutral-300);
33
+ --chart-5: var(--neutral-200);
34
+ --sidebar: var(--neutral-0);
35
+ --sidebar-foreground: var(--neutral-950);
36
+ --sidebar-primary: var(--neutral-950);
37
+ --sidebar-primary-foreground: var(--neutral-0);
38
+ --sidebar-accent: var(--neutral-100);
39
+ --sidebar-accent-foreground: var(--neutral-950);
40
+ --sidebar-border: var(--neutral-950);
41
+ --sidebar-ring: var(--neutral-950);
42
+ --positive: var(--neutral-950);
43
+ --negative: var(--neutral-950);
44
+ }
45
+
46
+ .palette-minimal.dark {
47
+ --background: var(--neutral-950);
48
+ --foreground: var(--neutral-0);
49
+ --card: var(--neutral-950);
50
+ --card-foreground: var(--neutral-0);
51
+ --popover: var(--neutral-950);
52
+ --popover-foreground: var(--neutral-0);
53
+ --primary: var(--neutral-0);
54
+ --primary-foreground: var(--neutral-950);
55
+ --secondary: var(--neutral-950);
56
+ --secondary-foreground: var(--neutral-0);
57
+ --tertiary: var(--neutral-800);
58
+ --tertiary-foreground: var(--neutral-0);
59
+ --muted: var(--neutral-900);
60
+ --muted-foreground: var(--neutral-400);
61
+ --accent: var(--neutral-800);
62
+ --accent-foreground: var(--neutral-0);
63
+ --destructive: var(--neutral-0);
64
+ --border: var(--neutral-0);
65
+ --input: var(--neutral-0);
66
+ --ring: var(--neutral-0);
67
+ --chart-1: var(--neutral-0);
68
+ --chart-2: var(--neutral-300);
69
+ --chart-3: var(--neutral-500);
70
+ --chart-4: var(--neutral-700);
71
+ --chart-5: var(--neutral-800);
72
+ --sidebar: var(--neutral-950);
73
+ --sidebar-foreground: var(--neutral-0);
74
+ --sidebar-primary: var(--neutral-0);
75
+ --sidebar-primary-foreground: var(--neutral-950);
76
+ --sidebar-accent: var(--neutral-800);
77
+ --sidebar-accent-foreground: var(--neutral-0);
78
+ --sidebar-border: var(--neutral-0);
79
+ --sidebar-ring: var(--neutral-0);
80
+ --positive: var(--neutral-0);
81
+ --negative: var(--neutral-0);
82
+ }
package/package.json ADDED
@@ -0,0 +1,100 @@
1
+ {
2
+ "name": "@lfrprazeres/ui",
3
+ "version": "0.1.0",
4
+ "description": "A React design system: shadcn elements, composed components, and a three-tier token contract.",
5
+ "keywords": [
6
+ "react",
7
+ "design-system",
8
+ "component-library",
9
+ "shadcn",
10
+ "tailwindcss",
11
+ "radix-ui"
12
+ ],
13
+ "homepage": "https://ui.luizprazeres.dev",
14
+ "repository": {
15
+ "type": "git",
16
+ "url": "git+https://github.com/lfrprazeres/ui.git"
17
+ },
18
+ "license": "MIT",
19
+ "author": "Luiz Fernando Prazeres <lfrprazeres@gmail.com>",
20
+ "sideEffects": [
21
+ "*.css"
22
+ ],
23
+ "type": "module",
24
+ "exports": {
25
+ ".": "./dist/index.js",
26
+ "./elements": "./dist/elements/index.js",
27
+ "./components": "./dist/components/index.js",
28
+ "./styles.css": "./dist/styles.css",
29
+ "./tokens/*": "./dist/tokens/*"
30
+ },
31
+ "files": [
32
+ "dist"
33
+ ],
34
+ "dependencies": {
35
+ "class-variance-authority": "^0.7.1",
36
+ "clsx": "^2.1.1",
37
+ "lucide-react": "^1.34.0",
38
+ "motion": "^13.1.1",
39
+ "radix-ui": "^1.6.7",
40
+ "sonner": "^2.0.8",
41
+ "tailwind-merge": "^3.6.0"
42
+ },
43
+ "devDependencies": {
44
+ "@arethetypeswrong/cli": "^0.18.5",
45
+ "@biomejs/biome": "^2.5.10",
46
+ "@changesets/cli": "^3.0.1",
47
+ "@commitlint/cli": "^21.2.2",
48
+ "@commitlint/config-conventional": "^21.2.2",
49
+ "@size-limit/preset-small-lib": "^13.0.3",
50
+ "@storybook/addon-a11y": "^10.5.10",
51
+ "@storybook/addon-themes": "^10.5.10",
52
+ "@storybook/addon-vitest": "^10.5.10",
53
+ "@storybook/react-vite": "^10.5.10",
54
+ "@tailwindcss/cli": "^4.3.3",
55
+ "@tailwindcss/vite": "^4.3.3",
56
+ "@types/react": "^19.2.18",
57
+ "@types/react-dom": "^19.2.4",
58
+ "@vitejs/plugin-react": "^6.1.0",
59
+ "@vitest/browser": "^4.1.11",
60
+ "@vitest/browser-playwright": "^4.1.11",
61
+ "husky": "^9.1.7",
62
+ "playwright": "^1.62.1",
63
+ "publint": "^0.3.24",
64
+ "react": "^19.2.8",
65
+ "react-dom": "^19.2.8",
66
+ "size-limit": "^13.0.3",
67
+ "storybook": "^10.5.10",
68
+ "tailwindcss": "^4.3.3",
69
+ "tsdown": "^0.22.14",
70
+ "typescript": "^6.0.3",
71
+ "ultracite": "^7.10.6",
72
+ "vite": "^8.2.2",
73
+ "vitest": "^4.1.11"
74
+ },
75
+ "peerDependencies": {
76
+ "react": "^19.0.0",
77
+ "react-dom": "^19.0.0",
78
+ "tailwindcss": "^4.0.0"
79
+ },
80
+ "engines": {
81
+ "node": "^24.x",
82
+ "pnpm": ">=11"
83
+ },
84
+ "publishConfig": {
85
+ "access": "public",
86
+ "provenance": true
87
+ },
88
+ "scripts": {
89
+ "build": "tsdown",
90
+ "build-storybook": "storybook build",
91
+ "check": "ultracite check",
92
+ "check:package": "publint && attw --pack . --profile esm-only --exclude-entrypoints styles.css",
93
+ "check:rsc": "node scripts/check-rsc-directives.mjs",
94
+ "check:size": "size-limit",
95
+ "fix": "ultracite fix",
96
+ "storybook": "storybook dev -p 6006",
97
+ "test": "vitest run",
98
+ "typecheck": "tsc --noEmit"
99
+ }
100
+ }