@magicpatterns/shadcn-demo-template 0.0.2

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 (101) hide show
  1. package/README.md +119 -0
  2. package/lib/cjs/components/Badge/Badge.d.ts +10 -0
  3. package/lib/cjs/components/Badge/Badge.d.ts.map +1 -0
  4. package/lib/cjs/components/Badge/Badge.js +25 -0
  5. package/lib/cjs/components/Badge/Badge.js.map +1 -0
  6. package/lib/cjs/components/Badge/index.d.ts +2 -0
  7. package/lib/cjs/components/Badge/index.d.ts.map +1 -0
  8. package/lib/cjs/components/Badge/index.js +7 -0
  9. package/lib/cjs/components/Badge/index.js.map +1 -0
  10. package/lib/cjs/components/Button/Button.d.ts +12 -0
  11. package/lib/cjs/components/Button/Button.d.ts.map +1 -0
  12. package/lib/cjs/components/Button/Button.js +71 -0
  13. package/lib/cjs/components/Button/Button.js.map +1 -0
  14. package/lib/cjs/components/Button/index.d.ts +2 -0
  15. package/lib/cjs/components/Button/index.d.ts.map +1 -0
  16. package/lib/cjs/components/Button/index.js +7 -0
  17. package/lib/cjs/components/Button/index.js.map +1 -0
  18. package/lib/cjs/components/Card/Card.d.ts +9 -0
  19. package/lib/cjs/components/Card/Card.d.ts.map +1 -0
  20. package/lib/cjs/components/Card/Card.js +58 -0
  21. package/lib/cjs/components/Card/Card.js.map +1 -0
  22. package/lib/cjs/components/Card/index.d.ts +2 -0
  23. package/lib/cjs/components/Card/index.d.ts.map +1 -0
  24. package/lib/cjs/components/Card/index.js +11 -0
  25. package/lib/cjs/components/Card/index.js.map +1 -0
  26. package/lib/cjs/components/Dialog/Dialog.d.ts +20 -0
  27. package/lib/cjs/components/Dialog/Dialog.d.ts.map +1 -0
  28. package/lib/cjs/components/Dialog/Dialog.js +67 -0
  29. package/lib/cjs/components/Dialog/Dialog.js.map +1 -0
  30. package/lib/cjs/components/Dialog/index.d.ts +2 -0
  31. package/lib/cjs/components/Dialog/index.d.ts.map +1 -0
  32. package/lib/cjs/components/Dialog/index.js +15 -0
  33. package/lib/cjs/components/Dialog/index.js.map +1 -0
  34. package/lib/cjs/components/Input/Input.d.ts +6 -0
  35. package/lib/cjs/components/Input/Input.d.ts.map +1 -0
  36. package/lib/cjs/components/Input/Input.js +45 -0
  37. package/lib/cjs/components/Input/Input.js.map +1 -0
  38. package/lib/cjs/components/Input/index.d.ts +2 -0
  39. package/lib/cjs/components/Input/index.d.ts.map +1 -0
  40. package/lib/cjs/components/Input/index.js +6 -0
  41. package/lib/cjs/components/Input/index.js.map +1 -0
  42. package/lib/cjs/index.d.ts +7 -0
  43. package/lib/cjs/index.d.ts.map +1 -0
  44. package/lib/cjs/index.js +32 -0
  45. package/lib/cjs/index.js.map +1 -0
  46. package/lib/cjs/lib/utils.d.ts +3 -0
  47. package/lib/cjs/lib/utils.d.ts.map +1 -0
  48. package/lib/cjs/lib/utils.js +9 -0
  49. package/lib/cjs/lib/utils.js.map +1 -0
  50. package/lib/esm/components/Badge/Badge.d.ts +10 -0
  51. package/lib/esm/components/Badge/Badge.d.ts.map +1 -0
  52. package/lib/esm/components/Badge/Badge.js +21 -0
  53. package/lib/esm/components/Badge/Badge.js.map +1 -0
  54. package/lib/esm/components/Badge/index.d.ts +2 -0
  55. package/lib/esm/components/Badge/index.d.ts.map +1 -0
  56. package/lib/esm/components/Badge/index.js +2 -0
  57. package/lib/esm/components/Badge/index.js.map +1 -0
  58. package/lib/esm/components/Button/Button.d.ts +12 -0
  59. package/lib/esm/components/Button/Button.d.ts.map +1 -0
  60. package/lib/esm/components/Button/Button.js +34 -0
  61. package/lib/esm/components/Button/Button.js.map +1 -0
  62. package/lib/esm/components/Button/index.d.ts +2 -0
  63. package/lib/esm/components/Button/index.d.ts.map +1 -0
  64. package/lib/esm/components/Button/index.js +2 -0
  65. package/lib/esm/components/Button/index.js.map +1 -0
  66. package/lib/esm/components/Card/Card.d.ts +9 -0
  67. package/lib/esm/components/Card/Card.d.ts.map +1 -0
  68. package/lib/esm/components/Card/Card.js +17 -0
  69. package/lib/esm/components/Card/Card.js.map +1 -0
  70. package/lib/esm/components/Card/index.d.ts +2 -0
  71. package/lib/esm/components/Card/index.d.ts.map +1 -0
  72. package/lib/esm/components/Card/index.js +2 -0
  73. package/lib/esm/components/Card/index.js.map +1 -0
  74. package/lib/esm/components/Dialog/Dialog.d.ts +20 -0
  75. package/lib/esm/components/Dialog/Dialog.d.ts.map +1 -0
  76. package/lib/esm/components/Dialog/Dialog.js +22 -0
  77. package/lib/esm/components/Dialog/Dialog.js.map +1 -0
  78. package/lib/esm/components/Dialog/index.d.ts +2 -0
  79. package/lib/esm/components/Dialog/index.d.ts.map +1 -0
  80. package/lib/esm/components/Dialog/index.js +2 -0
  81. package/lib/esm/components/Dialog/index.js.map +1 -0
  82. package/lib/esm/components/Input/Input.d.ts +6 -0
  83. package/lib/esm/components/Input/Input.d.ts.map +1 -0
  84. package/lib/esm/components/Input/Input.js +9 -0
  85. package/lib/esm/components/Input/Input.js.map +1 -0
  86. package/lib/esm/components/Input/index.d.ts +2 -0
  87. package/lib/esm/components/Input/index.d.ts.map +1 -0
  88. package/lib/esm/components/Input/index.js +2 -0
  89. package/lib/esm/components/Input/index.js.map +1 -0
  90. package/lib/esm/index.d.ts +7 -0
  91. package/lib/esm/index.d.ts.map +1 -0
  92. package/lib/esm/index.js +7 -0
  93. package/lib/esm/index.js.map +1 -0
  94. package/lib/esm/lib/utils.d.ts +3 -0
  95. package/lib/esm/lib/utils.d.ts.map +1 -0
  96. package/lib/esm/lib/utils.js +6 -0
  97. package/lib/esm/lib/utils.js.map +1 -0
  98. package/lib/styles.css +985 -0
  99. package/package.json +69 -0
  100. package/src/preset.css +94 -0
  101. package/tailwind-preset.js +67 -0
package/package.json ADDED
@@ -0,0 +1,69 @@
1
+ {
2
+ "name": "@magicpatterns/shadcn-demo-template",
3
+ "version": "0.0.2",
4
+ "description": "Shadcn-based design system preset for Tailwind CSS",
5
+ "main": "./lib/cjs/index.js",
6
+ "module": "./lib/esm/index.js",
7
+ "types": "./lib/esm/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "types": "./lib/esm/index.d.ts",
11
+ "import": "./lib/esm/index.js",
12
+ "require": "./lib/cjs/index.js",
13
+ "default": "./lib/esm/index.js"
14
+ },
15
+ "./preset.css": "./src/preset.css",
16
+ "./styles.css": "./lib/styles.css",
17
+ "./tailwind": "./tailwind-preset.js"
18
+ },
19
+ "files": [
20
+ "lib",
21
+ "src/preset.css",
22
+ "tailwind-preset.js"
23
+ ],
24
+ "license": "MIT",
25
+ "publishConfig": {
26
+ "access": "public"
27
+ },
28
+ "scripts": {
29
+ "build": "tsc -p tsconfig.esm.json && tsc -p tsconfig.cjs.json && node scripts/build-css.js",
30
+ "build:css": "node scripts/build-css.js",
31
+ "clean": "rm -rf lib",
32
+ "lint": "eslint \"src/**/*.{js,ts,tsx}\"",
33
+ "storybook": "storybook dev -p 6009",
34
+ "build-storybook": "storybook build",
35
+ "dev": "nodemon --watch src --ext ts,tsx,css --exec 'yarn build'",
36
+ "dev:mcp": "cd mcp && yarn dev"
37
+ },
38
+ "peerDependencies": {
39
+ "react": "^18.0.0 || ^19.0.0",
40
+ "react-dom": "^18.0.0 || ^19.0.0",
41
+ "tailwindcss": "^3.3.0"
42
+ },
43
+ "dependencies": {
44
+ "@radix-ui/react-dialog": "^1.1.4",
45
+ "@radix-ui/react-slot": "^1.1.1",
46
+ "class-variance-authority": "^0.7.1",
47
+ "clsx": "^2.1.1",
48
+ "tailwind-merge": "^2.6.0"
49
+ },
50
+ "devDependencies": {
51
+ "@storybook/addon-docs": "^10.2.17",
52
+ "@storybook/react": "^10.2.17",
53
+ "@storybook/react-vite": "^10.2.17",
54
+ "@types/node": "^20.12.12",
55
+ "@types/react": "^18.3.18",
56
+ "@types/react-dom": "^18.3.5",
57
+ "autoprefixer": "^10.4.20",
58
+ "eslint": "^8.57.1",
59
+ "nodemon": "^3.1.10",
60
+ "postcss": "^8.5.3",
61
+ "postcss-import": "^16.1.0",
62
+ "react": "^18.3.1",
63
+ "react-dom": "^18.3.1",
64
+ "storybook": "^10.2.17",
65
+ "tailwindcss": "^3.4.17",
66
+ "typescript": "^5.4.3",
67
+ "vite": "^8.0.0"
68
+ }
69
+ }
package/src/preset.css ADDED
@@ -0,0 +1,94 @@
1
+ /*
2
+ * Design System Token Definitions
3
+ *
4
+ * All colors use HSL channel values (without the hsl() wrapper)
5
+ * so they can be composed with Tailwind's opacity modifier:
6
+ *
7
+ * bg-primary → hsl(var(--primary))
8
+ * bg-primary/50 → hsl(var(--primary) / 0.5)
9
+ *
10
+ * Token groups:
11
+ * 1. Global — page bg, text, overlay, borders, focus ring
12
+ * 2. Card — elevated surface (cards, sheets)
13
+ * 3. Popover — floating surfaces (dropdowns, tooltips)
14
+ * 4. Primary — main brand / CTA color
15
+ * 5. Secondary — secondary actions, supporting UI
16
+ * 6. Muted — subdued backgrounds, placeholder text
17
+ * 7. Accent — highlights, hover tints
18
+ * 8. Destructive — danger actions, error states
19
+ */
20
+
21
+ @tailwind base;
22
+
23
+ @layer base {
24
+ :root {
25
+ --background: 0 0% 100%;
26
+ --foreground: 222.2 84% 4.9%;
27
+
28
+ --card: 0 0% 100%;
29
+ --card-foreground: 222.2 84% 4.9%;
30
+
31
+ --popover: 0 0% 100%;
32
+ --popover-foreground: 222.2 84% 4.9%;
33
+
34
+ --primary: 222.2 47.4% 11.2%;
35
+ --primary-foreground: 210 40% 98%;
36
+
37
+ --secondary: 210 40% 96.1%;
38
+ --secondary-foreground: 222.2 47.4% 11.2%;
39
+
40
+ --muted: 210 40% 96.1%;
41
+ --muted-foreground: 215.4 16.3% 46.9%;
42
+
43
+ --accent: 210 40% 96.1%;
44
+ --accent-foreground: 222.2 47.4% 11.2%;
45
+
46
+ --destructive: 0 84.2% 60.2%;
47
+ --destructive-foreground: 210 40% 98%;
48
+
49
+ --border: 214.3 31.8% 91.4%;
50
+ --input: 214.3 31.8% 91.4%;
51
+ --ring: 222.2 84% 4.9%;
52
+
53
+ --radius: 0.5rem;
54
+ }
55
+
56
+ .dark {
57
+ --background: 222.2 84% 4.9%;
58
+ --foreground: 210 40% 98%;
59
+
60
+ --card: 222.2 84% 4.9%;
61
+ --card-foreground: 210 40% 98%;
62
+
63
+ --popover: 222.2 84% 4.9%;
64
+ --popover-foreground: 210 40% 98%;
65
+
66
+ --primary: 210 40% 98%;
67
+ --primary-foreground: 222.2 47.4% 11.2%;
68
+
69
+ --secondary: 217.2 32.6% 17.5%;
70
+ --secondary-foreground: 210 40% 98%;
71
+
72
+ --muted: 217.2 32.6% 17.5%;
73
+ --muted-foreground: 215 20.2% 65.1%;
74
+
75
+ --accent: 217.2 32.6% 17.5%;
76
+ --accent-foreground: 210 40% 98%;
77
+
78
+ --destructive: 0 62.8% 30.6%;
79
+ --destructive-foreground: 210 40% 98%;
80
+
81
+ --border: 217.2 32.6% 17.5%;
82
+ --input: 217.2 32.6% 17.5%;
83
+ --ring: 212.7 26.8% 83.9%;
84
+ }
85
+
86
+ * {
87
+ border-color: hsl(var(--border));
88
+ }
89
+
90
+ body {
91
+ background-color: hsl(var(--background));
92
+ color: hsl(var(--foreground));
93
+ }
94
+ }
@@ -0,0 +1,67 @@
1
+ /** @type {import('tailwindcss').Config} */
2
+ module.exports = {
3
+ theme: {
4
+ extend: {
5
+ colors: {
6
+ background: 'hsl(var(--background))',
7
+ foreground: 'hsl(var(--foreground))',
8
+ card: {
9
+ DEFAULT: 'hsl(var(--card))',
10
+ foreground: 'hsl(var(--card-foreground))',
11
+ },
12
+ popover: {
13
+ DEFAULT: 'hsl(var(--popover))',
14
+ foreground: 'hsl(var(--popover-foreground))',
15
+ },
16
+ primary: {
17
+ DEFAULT: 'hsl(var(--primary))',
18
+ foreground: 'hsl(var(--primary-foreground))',
19
+ },
20
+ secondary: {
21
+ DEFAULT: 'hsl(var(--secondary))',
22
+ foreground: 'hsl(var(--secondary-foreground))',
23
+ },
24
+ muted: {
25
+ DEFAULT: 'hsl(var(--muted))',
26
+ foreground: 'hsl(var(--muted-foreground))',
27
+ },
28
+ accent: {
29
+ DEFAULT: 'hsl(var(--accent))',
30
+ foreground: 'hsl(var(--accent-foreground))',
31
+ },
32
+ destructive: {
33
+ DEFAULT: 'hsl(var(--destructive))',
34
+ foreground: 'hsl(var(--destructive-foreground))',
35
+ },
36
+ border: 'hsl(var(--border))',
37
+ input: 'hsl(var(--input))',
38
+ ring: 'hsl(var(--ring))',
39
+ },
40
+ borderColor: {
41
+ DEFAULT: 'hsl(var(--border))',
42
+ },
43
+ ringColor: {
44
+ DEFAULT: 'hsl(var(--ring))',
45
+ },
46
+ borderRadius: {
47
+ lg: 'var(--radius)',
48
+ md: 'calc(var(--radius) - 2px)',
49
+ sm: 'calc(var(--radius) - 4px)',
50
+ },
51
+ keyframes: {
52
+ 'accordion-down': {
53
+ from: { height: '0' },
54
+ to: { height: 'var(--radix-accordion-content-height)' },
55
+ },
56
+ 'accordion-up': {
57
+ from: { height: 'var(--radix-accordion-content-height)' },
58
+ to: { height: '0' },
59
+ },
60
+ },
61
+ animation: {
62
+ 'accordion-down': 'accordion-down 0.2s ease-out',
63
+ 'accordion-up': 'accordion-up 0.2s ease-out',
64
+ },
65
+ },
66
+ },
67
+ }