@pinfold/css 0.0.0-stage → 0.2.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.
@@ -0,0 +1,284 @@
1
+
2
+ @layer pinfold.tokens {
3
+ :root {
4
+ color-scheme: light dark;
5
+ --pinfold-primary-50: oklch(0.977 0.014 274);
6
+ --pinfold-primary-100: oklch(0.946 0.033 274);
7
+ --pinfold-primary-200: oklch(0.902 0.063 274);
8
+ --pinfold-primary-300: oklch(0.828 0.111 274);
9
+ --pinfold-primary-400: oklch(0.714 0.163 274);
10
+ --pinfold-primary-500: oklch(0.606 0.201 274);
11
+ --pinfold-primary-600: oklch(0.541 0.223 274);
12
+ --pinfold-primary-700: oklch(0.491 0.216 274);
13
+ --pinfold-primary-800: oklch(0.432 0.181 274);
14
+ --pinfold-primary-900: oklch(0.380 0.146 274);
15
+ --pinfold-primary-950: oklch(0.283 0.101 274);
16
+ --pinfold-accent-300: var(--pinfold-primary-300);
17
+ --pinfold-accent-400: var(--pinfold-primary-400);
18
+ --pinfold-accent-500: var(--pinfold-primary-500);
19
+ --pinfold-accent-600: var(--pinfold-primary-600);
20
+ --pinfold-accent-700: var(--pinfold-primary-700);
21
+ --pinfold-neutral-50: oklch(0.985 0.002 274);
22
+ --pinfold-neutral-100: oklch(0.967 0.003 274);
23
+ --pinfold-neutral-200: oklch(0.928 0.006 274);
24
+ --pinfold-neutral-300: oklch(0.872 0.010 274);
25
+ --pinfold-neutral-400: oklch(0.707 0.015 274);
26
+ --pinfold-neutral-500: oklch(0.551 0.019 274);
27
+ --pinfold-neutral-600: oklch(0.446 0.021 274);
28
+ --pinfold-neutral-700: oklch(0.373 0.023 274);
29
+ --pinfold-neutral-800: oklch(0.279 0.023 274);
30
+ --pinfold-neutral-900: oklch(0.210 0.021 274);
31
+ --pinfold-neutral-950: oklch(0.145 0.017 274);
32
+ --pinfold-success-100: oklch(0.946 0.033 158);
33
+ --pinfold-success-300: oklch(0.828 0.111 158);
34
+ --pinfold-success-500: oklch(0.606 0.201 158);
35
+ --pinfold-success-700: oklch(0.491 0.216 158);
36
+ --pinfold-success-900: oklch(0.380 0.146 158);
37
+ --pinfold-warning-100: oklch(0.946 0.033 78);
38
+ --pinfold-warning-300: oklch(0.828 0.111 78);
39
+ --pinfold-warning-500: oklch(0.606 0.201 78);
40
+ --pinfold-warning-700: oklch(0.491 0.216 78);
41
+ --pinfold-warning-900: oklch(0.380 0.146 78);
42
+ --pinfold-danger-100: oklch(0.946 0.033 27);
43
+ --pinfold-danger-300: oklch(0.828 0.111 27);
44
+ --pinfold-danger-500: oklch(0.606 0.201 27);
45
+ --pinfold-danger-700: oklch(0.491 0.216 27);
46
+ --pinfold-danger-900: oklch(0.380 0.146 27);
47
+ --pinfold-info-100: oklch(0.946 0.033 245);
48
+ --pinfold-info-300: oklch(0.828 0.111 245);
49
+ --pinfold-info-500: oklch(0.606 0.201 245);
50
+ --pinfold-info-700: oklch(0.491 0.216 245);
51
+ --pinfold-info-900: oklch(0.380 0.146 245);
52
+ --pinfold-color-bg: var(--pinfold-neutral-50);
53
+ --pinfold-color-bg-subtle: var(--pinfold-neutral-100);
54
+ --pinfold-color-surface: oklch(1 0 0);
55
+ --pinfold-color-surface-raised: oklch(1 0 0);
56
+ --pinfold-color-surface-sunken: var(--pinfold-neutral-100);
57
+ --pinfold-color-surface-hover: color-mix(in oklch, var(--pinfold-color-accent) 6%, var(--pinfold-color-surface));
58
+ --pinfold-color-surface-active: color-mix(in oklch, var(--pinfold-color-accent) 11%, var(--pinfold-color-surface));
59
+ --pinfold-color-surface-selected: color-mix(in oklch, var(--pinfold-color-accent) 14%, var(--pinfold-color-surface));
60
+ --pinfold-color-border: var(--pinfold-neutral-200);
61
+ --pinfold-color-border-strong: var(--pinfold-neutral-300);
62
+ --pinfold-color-border-accent: color-mix(in oklch, var(--pinfold-color-accent) 45%, var(--pinfold-color-border));
63
+ --pinfold-color-text: var(--pinfold-neutral-900);
64
+ --pinfold-color-text-muted: var(--pinfold-neutral-600);
65
+ --pinfold-color-text-subtle: var(--pinfold-neutral-500);
66
+ --pinfold-color-text-disabled: var(--pinfold-neutral-400);
67
+ --pinfold-color-accent: var(--pinfold-primary-600);
68
+ --pinfold-color-accent-hover: var(--pinfold-primary-700);
69
+ --pinfold-color-accent-subtle: color-mix(in oklch, var(--pinfold-color-accent) 10%, transparent);
70
+ --pinfold-color-accent-contrast: oklch(1 0 0);
71
+ --pinfold-color-ring: var(--pinfold-primary-500);
72
+ --pinfold-color-overlay: color-mix(in oklch, var(--pinfold-neutral-950) 45%, transparent);
73
+ --pinfold-color-selection: color-mix(in oklch, var(--pinfold-color-accent) 22%, transparent);
74
+ --pinfold-shadow-color: var(--pinfold-neutral-900);
75
+ --pinfold-shadow-xs: 0 1px 1px color-mix(in oklch, var(--pinfold-shadow-color) 5%, transparent);
76
+ --pinfold-shadow-sm:
77
+ 0 1px 2px color-mix(in oklch, var(--pinfold-shadow-color) 6%, transparent),
78
+ 0 1px 3px -1px color-mix(in oklch, var(--pinfold-shadow-color) 6%, transparent);
79
+ --pinfold-shadow-md:
80
+ 0 2px 4px -1px color-mix(in oklch, var(--pinfold-shadow-color) 7%, transparent),
81
+ 0 8px 20px -6px color-mix(in oklch, var(--pinfold-shadow-color) 10%, transparent);
82
+ --pinfold-shadow-lg:
83
+ 0 4px 8px -2px color-mix(in oklch, var(--pinfold-shadow-color) 8%, transparent),
84
+ 0 16px 40px -12px color-mix(in oklch, var(--pinfold-shadow-color) 14%, transparent);
85
+ --pinfold-shadow-xl:
86
+ 0 8px 16px -4px color-mix(in oklch, var(--pinfold-shadow-color) 10%, transparent),
87
+ 0 32px 72px -20px color-mix(in oklch, var(--pinfold-shadow-color) 18%, transparent);
88
+ --pinfold-highlight: inset 0 1px 0 color-mix(in oklch, oklch(1 0 0) 60%, transparent);
89
+ --pinfold-border-width: 1px;
90
+ --pinfold-backdrop: none;
91
+ --pinfold-texture: none;
92
+ --pinfold-focus-width: 2px;
93
+ --pinfold-focus-offset: 2px;
94
+ --pinfold-focus-ring:
95
+ 0 0 0 var(--pinfold-focus-offset) var(--pinfold-color-bg),
96
+ 0 0 0 calc(var(--pinfold-focus-offset) + var(--pinfold-focus-width)) var(--pinfold-color-ring);
97
+ --pinfold-radius-scale: 1;
98
+ --pinfold-radius-full: 9999px;
99
+ --pinfold-space-1: 0.25rem;
100
+ --pinfold-space-2: 0.5rem;
101
+ --pinfold-space-3: 0.75rem;
102
+ --pinfold-space-4: 1rem;
103
+ --pinfold-space-5: 1.25rem;
104
+ --pinfold-space-6: 1.5rem;
105
+ --pinfold-space-8: 2rem;
106
+ --pinfold-space-10: 2.5rem;
107
+ --pinfold-font-sans: ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto,
108
+ "Helvetica Neue", Arial, sans-serif;
109
+ --pinfold-font-mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;
110
+ --pinfold-text-xs: 0.75rem;
111
+ --pinfold-text-sm: clamp(0.8125rem, 0.79rem + 0.1vw, 0.875rem);
112
+ --pinfold-text-md: clamp(0.9375rem, 0.91rem + 0.12vw, 1rem);
113
+ --pinfold-text-lg: clamp(1.0625rem, 1.02rem + 0.2vw, 1.125rem);
114
+ --pinfold-text-xl: clamp(1.25rem, 1.15rem + 0.45vw, 1.375rem);
115
+ --pinfold-leading-tight: 1.3;
116
+ --pinfold-leading-normal: 1.55;
117
+ --pinfold-weight-normal: 400;
118
+ --pinfold-weight-medium: 500;
119
+ --pinfold-weight-semibold: 600;
120
+ --pinfold-tracking-tight: -0.011em;
121
+ --pinfold-tracking-normal: 0em;
122
+ --pinfold-tracking-wide: 0.02em;
123
+ --pinfold-duration-fast: 120ms;
124
+ --pinfold-duration-md: 200ms;
125
+ --pinfold-duration-slow: 320ms;
126
+ --pinfold-ease: cubic-bezier(0.32, 0.72, 0, 1);
127
+ --pinfold-ease-out: cubic-bezier(0.16, 1, 0.3, 1);
128
+ --pinfold-ease-in-out: cubic-bezier(0.65, 0, 0.35, 1);
129
+ --pinfold-ease-spring: cubic-bezier(0.34, 1.56, 0.64, 1);
130
+ --pinfold-z-dropdown: 1000;
131
+ --pinfold-z-sticky: 1100;
132
+ --pinfold-z-overlay: 1200;
133
+ --pinfold-z-modal: 1300;
134
+ --pinfold-z-toast: 1400;
135
+ --pinfold-z-tooltip: 1500;
136
+ }
137
+ @media (prefers-color-scheme: dark) {
138
+ :root:not([data-pinfold-theme="light"]) {
139
+ --pinfold-color-bg: var(--pinfold-neutral-950);
140
+ --pinfold-color-bg-subtle: oklch(0.178 0.019 274);
141
+ --pinfold-color-surface: oklch(0.196 0.020 274);
142
+ --pinfold-color-surface-raised: oklch(0.232 0.021 274);
143
+ --pinfold-color-surface-sunken: oklch(0.165 0.018 274);
144
+ --pinfold-color-border: oklch(0.286 0.023 274);
145
+ --pinfold-color-border-strong: oklch(0.352 0.024 274);
146
+ --pinfold-color-text: var(--pinfold-neutral-100);
147
+ --pinfold-color-text-muted: var(--pinfold-neutral-400);
148
+ --pinfold-color-text-subtle: var(--pinfold-neutral-500);
149
+ --pinfold-color-text-disabled: var(--pinfold-neutral-600);
150
+ --pinfold-color-accent: var(--pinfold-primary-400);
151
+ --pinfold-color-accent-hover: var(--pinfold-primary-300);
152
+ --pinfold-color-accent-contrast: var(--pinfold-neutral-950);
153
+ --pinfold-color-ring: var(--pinfold-primary-400);
154
+ --pinfold-shadow-color: oklch(0 0 0);
155
+ --pinfold-shadow-xs: 0 1px 1px color-mix(in oklch, var(--pinfold-shadow-color) 30%, transparent);
156
+ --pinfold-shadow-sm:
157
+ 0 1px 2px color-mix(in oklch, var(--pinfold-shadow-color) 40%, transparent),
158
+ 0 1px 3px -1px color-mix(in oklch, var(--pinfold-shadow-color) 40%, transparent);
159
+ --pinfold-shadow-md:
160
+ 0 2px 4px -1px color-mix(in oklch, var(--pinfold-shadow-color) 45%, transparent),
161
+ 0 8px 20px -6px color-mix(in oklch, var(--pinfold-shadow-color) 50%, transparent);
162
+ --pinfold-shadow-lg:
163
+ 0 4px 8px -2px color-mix(in oklch, var(--pinfold-shadow-color) 50%, transparent),
164
+ 0 16px 40px -12px color-mix(in oklch, var(--pinfold-shadow-color) 55%, transparent);
165
+ --pinfold-shadow-xl:
166
+ 0 8px 16px -4px color-mix(in oklch, var(--pinfold-shadow-color) 55%, transparent),
167
+ 0 32px 72px -20px color-mix(in oklch, var(--pinfold-shadow-color) 60%, transparent);
168
+ --pinfold-highlight: inset 0 1px 0 color-mix(in oklch, oklch(1 0 0) 8%, transparent);
169
+ }
170
+ }
171
+ [data-pinfold-theme="dark"] {
172
+ color-scheme: dark;
173
+ --pinfold-color-bg: var(--pinfold-neutral-950);
174
+ --pinfold-color-bg-subtle: oklch(0.178 0.019 274);
175
+ --pinfold-color-surface: oklch(0.196 0.020 274);
176
+ --pinfold-color-surface-raised: oklch(0.232 0.021 274);
177
+ --pinfold-color-surface-sunken: oklch(0.165 0.018 274);
178
+ --pinfold-color-border: oklch(0.286 0.023 274);
179
+ --pinfold-color-border-strong: oklch(0.352 0.024 274);
180
+ --pinfold-color-text: var(--pinfold-neutral-100);
181
+ --pinfold-color-text-muted: var(--pinfold-neutral-400);
182
+ --pinfold-color-text-subtle: var(--pinfold-neutral-500);
183
+ --pinfold-color-text-disabled: var(--pinfold-neutral-600);
184
+ --pinfold-color-accent: var(--pinfold-primary-400);
185
+ --pinfold-color-accent-hover: var(--pinfold-primary-300);
186
+ --pinfold-color-accent-contrast: var(--pinfold-neutral-950);
187
+ --pinfold-color-ring: var(--pinfold-primary-400);
188
+ --pinfold-shadow-color: oklch(0 0 0);
189
+ --pinfold-shadow-xs: 0 1px 1px color-mix(in oklch, var(--pinfold-shadow-color) 30%, transparent);
190
+ --pinfold-shadow-sm:
191
+ 0 1px 2px color-mix(in oklch, var(--pinfold-shadow-color) 40%, transparent),
192
+ 0 1px 3px -1px color-mix(in oklch, var(--pinfold-shadow-color) 40%, transparent);
193
+ --pinfold-shadow-md:
194
+ 0 2px 4px -1px color-mix(in oklch, var(--pinfold-shadow-color) 45%, transparent),
195
+ 0 8px 20px -6px color-mix(in oklch, var(--pinfold-shadow-color) 50%, transparent);
196
+ --pinfold-shadow-lg:
197
+ 0 4px 8px -2px color-mix(in oklch, var(--pinfold-shadow-color) 50%, transparent),
198
+ 0 16px 40px -12px color-mix(in oklch, var(--pinfold-shadow-color) 55%, transparent);
199
+ --pinfold-shadow-xl:
200
+ 0 8px 16px -4px color-mix(in oklch, var(--pinfold-shadow-color) 55%, transparent),
201
+ 0 32px 72px -20px color-mix(in oklch, var(--pinfold-shadow-color) 60%, transparent);
202
+ --pinfold-highlight: inset 0 1px 0 color-mix(in oklch, oklch(1 0 0) 8%, transparent);
203
+ --pinfold-color-surface-hover: color-mix(in oklch, var(--pinfold-color-accent) 6%, var(--pinfold-color-surface));
204
+ --pinfold-color-surface-active: color-mix(in oklch, var(--pinfold-color-accent) 11%, var(--pinfold-color-surface));
205
+ --pinfold-color-surface-selected: color-mix(in oklch, var(--pinfold-color-accent) 14%, var(--pinfold-color-surface));
206
+ --pinfold-color-border-accent: color-mix(in oklch, var(--pinfold-color-accent) 45%, var(--pinfold-color-border));
207
+ --pinfold-color-accent-subtle: color-mix(in oklch, var(--pinfold-color-accent) 10%, transparent);
208
+ --pinfold-color-selection: color-mix(in oklch, var(--pinfold-color-accent) 22%, transparent);
209
+ --pinfold-color-overlay: color-mix(in oklch, var(--pinfold-neutral-950) 45%, transparent);
210
+ --pinfold-focus-ring: 0 0 0 var(--pinfold-focus-offset) var(--pinfold-color-bg),
211
+ 0 0 0 calc(var(--pinfold-focus-offset) + var(--pinfold-focus-width)) var(--pinfold-color-ring);
212
+ }
213
+ [data-pinfold-theme="light"] {
214
+ color-scheme: light;
215
+ --pinfold-color-bg: var(--pinfold-neutral-50);
216
+ --pinfold-color-bg-subtle: var(--pinfold-neutral-100);
217
+ --pinfold-color-surface: oklch(1 0 0);
218
+ --pinfold-color-surface-raised: oklch(1 0 0);
219
+ --pinfold-color-surface-sunken: var(--pinfold-neutral-100);
220
+ --pinfold-color-border: var(--pinfold-neutral-200);
221
+ --pinfold-color-border-strong: var(--pinfold-neutral-300);
222
+ --pinfold-color-text: var(--pinfold-neutral-900);
223
+ --pinfold-color-text-muted: var(--pinfold-neutral-600);
224
+ --pinfold-color-text-subtle: var(--pinfold-neutral-500);
225
+ --pinfold-color-text-disabled: var(--pinfold-neutral-400);
226
+ --pinfold-color-accent: var(--pinfold-primary-600);
227
+ --pinfold-color-accent-hover: var(--pinfold-primary-700);
228
+ --pinfold-color-accent-contrast: oklch(1 0 0);
229
+ --pinfold-color-ring: var(--pinfold-primary-500);
230
+ --pinfold-shadow-color: var(--pinfold-neutral-900);
231
+ --pinfold-shadow-xs: 0 1px 1px color-mix(in oklch, var(--pinfold-shadow-color) 5%, transparent);
232
+ --pinfold-shadow-sm: 0 1px 2px color-mix(in oklch, var(--pinfold-shadow-color) 6%, transparent),
233
+ 0 1px 3px -1px color-mix(in oklch, var(--pinfold-shadow-color) 6%, transparent);
234
+ --pinfold-shadow-md: 0 2px 4px -1px color-mix(in oklch, var(--pinfold-shadow-color) 7%, transparent),
235
+ 0 8px 20px -6px color-mix(in oklch, var(--pinfold-shadow-color) 10%, transparent);
236
+ --pinfold-shadow-lg: 0 4px 8px -2px color-mix(in oklch, var(--pinfold-shadow-color) 8%, transparent),
237
+ 0 16px 40px -12px color-mix(in oklch, var(--pinfold-shadow-color) 14%, transparent);
238
+ --pinfold-shadow-xl: 0 8px 16px -4px color-mix(in oklch, var(--pinfold-shadow-color) 10%, transparent),
239
+ 0 32px 72px -20px color-mix(in oklch, var(--pinfold-shadow-color) 18%, transparent);
240
+ --pinfold-highlight: inset 0 1px 0 color-mix(in oklch, oklch(1 0 0) 60%, transparent);
241
+ --pinfold-color-surface-hover: color-mix(in oklch, var(--pinfold-color-accent) 6%, var(--pinfold-color-surface));
242
+ --pinfold-color-surface-active: color-mix(in oklch, var(--pinfold-color-accent) 11%, var(--pinfold-color-surface));
243
+ --pinfold-color-surface-selected: color-mix(in oklch, var(--pinfold-color-accent) 14%, var(--pinfold-color-surface));
244
+ --pinfold-color-border-accent: color-mix(in oklch, var(--pinfold-color-accent) 45%, var(--pinfold-color-border));
245
+ --pinfold-color-accent-subtle: color-mix(in oklch, var(--pinfold-color-accent) 10%, transparent);
246
+ --pinfold-color-selection: color-mix(in oklch, var(--pinfold-color-accent) 22%, transparent);
247
+ --pinfold-color-overlay: color-mix(in oklch, var(--pinfold-neutral-950) 45%, transparent);
248
+ --pinfold-focus-ring: 0 0 0 var(--pinfold-focus-offset) var(--pinfold-color-bg),
249
+ 0 0 0 calc(var(--pinfold-focus-offset) + var(--pinfold-focus-width)) var(--pinfold-color-ring);
250
+ }
251
+ :root,
252
+ [data-pinfold-radius],
253
+ [data-pinfold-style] {
254
+ --pinfold-radius-xs: calc(0.25rem * var(--pinfold-radius-scale));
255
+ --pinfold-radius-sm: calc(0.375rem * var(--pinfold-radius-scale));
256
+ --pinfold-radius-md: calc(0.5rem * var(--pinfold-radius-scale));
257
+ --pinfold-radius-lg: calc(0.75rem * var(--pinfold-radius-scale));
258
+ --pinfold-radius-xl: calc(1rem * var(--pinfold-radius-scale));
259
+ --pinfold-radius-2xl: calc(1.5rem * var(--pinfold-radius-scale));
260
+ }
261
+ [data-pinfold-radius="none"] { --pinfold-radius-scale: 0; }
262
+ [data-pinfold-radius="sm"] { --pinfold-radius-scale: 0.6; }
263
+ [data-pinfold-radius="md"] { --pinfold-radius-scale: 1; }
264
+ [data-pinfold-radius="lg"] { --pinfold-radius-scale: 1.5; }
265
+ [data-pinfold-radius="full"] { --pinfold-radius-scale: 2.4; }
266
+ [data-pinfold-density="compact"] { --pinfold-density: 0.8; }
267
+ [data-pinfold-density="comfortable"] { --pinfold-density: 1; }
268
+ [data-pinfold-density="spacious"] { --pinfold-density: 1.25; }
269
+ @supports not (color: color-mix(in oklch, red, blue)) {
270
+ :root {
271
+ --pinfold-color-surface-hover: var(--pinfold-neutral-100);
272
+ --pinfold-color-surface-active: var(--pinfold-neutral-200);
273
+ --pinfold-color-surface-selected: var(--pinfold-neutral-200);
274
+ --pinfold-color-border-accent: var(--pinfold-color-accent);
275
+ --pinfold-color-accent-subtle: var(--pinfold-primary-50);
276
+ --pinfold-color-overlay: var(--pinfold-neutral-900);
277
+ --pinfold-shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.08);
278
+ --pinfold-shadow-md: 0 6px 18px rgba(0, 0, 0, 0.1);
279
+ --pinfold-shadow-lg: 0 16px 40px rgba(0, 0, 0, 0.14);
280
+ --pinfold-shadow-xl: 0 32px 72px rgba(0, 0, 0, 0.18);
281
+ --pinfold-highlight: none;
282
+ }
283
+ }
284
+ }
package/package.json CHANGED
@@ -1,6 +1,57 @@
1
1
  {
2
2
  "name": "@pinfold/css",
3
- "version": "0.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
6
- }
3
+ "version": "0.2.0",
4
+ "description": "Pinfold styles: tokens, reset and per-component CSS in cascade layers, plus the Tailwind v3 preset and v4 theme. Framework-free.",
5
+ "author": "Indranil Bhattacharya",
6
+ "keywords": [
7
+ "pinfold",
8
+ "css",
9
+ "design-tokens",
10
+ "tailwind",
11
+ "tailwindcss",
12
+ "oklch",
13
+ "cascade-layers"
14
+ ],
15
+ "license": "MIT",
16
+ "homepage": "https://pinfold.indranildev.in",
17
+ "repository": {
18
+ "type": "git",
19
+ "url": "git+https://github.com/IndranilBhattacharya/pinfold.git",
20
+ "directory": "packages/css"
21
+ },
22
+ "bugs": "https://github.com/IndranilBhattacharya/pinfold/issues",
23
+ "sideEffects": [
24
+ "*.css"
25
+ ],
26
+ "exports": {
27
+ "./core.css": "./dist/core.css",
28
+ "./reset.css": "./dist/reset.css",
29
+ "./tokens.css": "./dist/tokens.css",
30
+ "./all.css": "./dist/all.css",
31
+ "./accordion.css": "./dist/accordion.css",
32
+ "./packs.css": "./dist/packs.css",
33
+ "./shadcn.css": "./dist/shadcn.css",
34
+ "./tailwind.css": "./dist/tailwind.css",
35
+ "./tailwind": "./tailwind/preset.cjs",
36
+ "./package.json": "./package.json"
37
+ },
38
+ "files": [
39
+ "dist",
40
+ "tailwind"
41
+ ],
42
+ "scripts": {
43
+ "build": "node build.mjs"
44
+ },
45
+ "peerDependencies": {
46
+ "tailwindcss": ">=3"
47
+ },
48
+ "peerDependenciesMeta": {
49
+ "tailwindcss": {
50
+ "optional": true
51
+ }
52
+ },
53
+ "publishConfig": {
54
+ "access": "public",
55
+ "provenance": true
56
+ }
57
+ }
@@ -0,0 +1,146 @@
1
+ /**
2
+ * Pinfold — Tailwind CSS v3 preset.
3
+ *
4
+ * // tailwind.config.js
5
+ * module.exports = { presets: [require('@pinfold/css/tailwind')] };
6
+ *
7
+ * Every entry points at a `--pinfold-*` custom property rather than a literal, so
8
+ * `bg-primary-600` follows `npx pinfold theme`, dark mode and any runtime
9
+ * override automatically. One palette, two styling systems, no duplication.
10
+ *
11
+ * For Tailwind v4, import `@pinfold/css/tailwind.css` instead.
12
+ */
13
+
14
+ const ramp = (role) =>
15
+ Object.fromEntries(
16
+ [50, 100, 200, 300, 400, 500, 600, 700, 800, 900, 950].map((step) => [
17
+ step,
18
+ `var(--pinfold-${role}-${step})`,
19
+ ]),
20
+ );
21
+
22
+ /** Status ramps ship five steps, not eleven. */
23
+ const statusRamp = (role) =>
24
+ Object.fromEntries([100, 300, 500, 700, 900].map((s) => [s, `var(--pinfold-${role}-${s})`]));
25
+
26
+ module.exports = {
27
+ theme: {
28
+ extend: {
29
+ colors: {
30
+ primary: ramp('primary'),
31
+ neutral: ramp('neutral'),
32
+ accent: {
33
+ 300: 'var(--pinfold-accent-300)',
34
+ 400: 'var(--pinfold-accent-400)',
35
+ 500: 'var(--pinfold-accent-500)',
36
+ 600: 'var(--pinfold-accent-600)',
37
+ 700: 'var(--pinfold-accent-700)',
38
+ DEFAULT: 'var(--pinfold-color-accent)',
39
+ },
40
+ success: statusRamp('success'),
41
+ warning: statusRamp('warning'),
42
+ danger: statusRamp('danger'),
43
+ info: statusRamp('info'),
44
+
45
+ // Semantic aliases: `bg-surface`, `text-content-muted`, `border-line`.
46
+ bg: { DEFAULT: 'var(--pinfold-color-bg)', subtle: 'var(--pinfold-color-bg-subtle)' },
47
+ surface: {
48
+ DEFAULT: 'var(--pinfold-color-surface)',
49
+ raised: 'var(--pinfold-color-surface-raised)',
50
+ sunken: 'var(--pinfold-color-surface-sunken)',
51
+ hover: 'var(--pinfold-color-surface-hover)',
52
+ active: 'var(--pinfold-color-surface-active)',
53
+ selected: 'var(--pinfold-color-surface-selected)',
54
+ },
55
+ content: {
56
+ DEFAULT: 'var(--pinfold-color-text)',
57
+ muted: 'var(--pinfold-color-text-muted)',
58
+ subtle: 'var(--pinfold-color-text-subtle)',
59
+ disabled: 'var(--pinfold-color-text-disabled)',
60
+ },
61
+ line: {
62
+ DEFAULT: 'var(--pinfold-color-border)',
63
+ strong: 'var(--pinfold-color-border-strong)',
64
+ accent: 'var(--pinfold-color-border-accent)',
65
+ },
66
+ },
67
+
68
+ borderRadius: {
69
+ xs: 'var(--pinfold-radius-xs)',
70
+ sm: 'var(--pinfold-radius-sm)',
71
+ DEFAULT: 'var(--pinfold-radius-md)',
72
+ md: 'var(--pinfold-radius-md)',
73
+ lg: 'var(--pinfold-radius-lg)',
74
+ xl: 'var(--pinfold-radius-xl)',
75
+ '2xl': 'var(--pinfold-radius-2xl)',
76
+ },
77
+
78
+ spacing: Object.fromEntries(
79
+ [1, 2, 3, 4, 5, 6, 8, 10].map((n) => [n, `var(--pinfold-space-${n})`]),
80
+ ),
81
+
82
+ fontFamily: {
83
+ sans: 'var(--pinfold-font-sans)',
84
+ mono: 'var(--pinfold-font-mono)',
85
+ },
86
+
87
+ fontSize: {
88
+ xs: 'var(--pinfold-text-xs)',
89
+ sm: 'var(--pinfold-text-sm)',
90
+ base: 'var(--pinfold-text-md)',
91
+ lg: 'var(--pinfold-text-lg)',
92
+ xl: 'var(--pinfold-text-xl)',
93
+ },
94
+
95
+ boxShadow: {
96
+ xs: 'var(--pinfold-shadow-xs)',
97
+ sm: 'var(--pinfold-shadow-sm)',
98
+ DEFAULT: 'var(--pinfold-shadow-sm)',
99
+ md: 'var(--pinfold-shadow-md)',
100
+ lg: 'var(--pinfold-shadow-lg)',
101
+ xl: 'var(--pinfold-shadow-xl)',
102
+ highlight: 'var(--pinfold-highlight)',
103
+ focus: 'var(--pinfold-focus-ring)',
104
+ },
105
+
106
+ transitionTimingFunction: {
107
+ pinfold: 'var(--pinfold-ease)',
108
+ 'pinfold-out': 'var(--pinfold-ease-out)',
109
+ 'pinfold-in-out': 'var(--pinfold-ease-in-out)',
110
+ 'pinfold-spring': 'var(--pinfold-ease-spring)',
111
+ },
112
+
113
+ transitionDuration: {
114
+ fast: 'var(--pinfold-duration-fast)',
115
+ DEFAULT: 'var(--pinfold-duration-md)',
116
+ slow: 'var(--pinfold-duration-slow)',
117
+ },
118
+
119
+ zIndex: {
120
+ dropdown: 'var(--pinfold-z-dropdown)',
121
+ sticky: 'var(--pinfold-z-sticky)',
122
+ overlay: 'var(--pinfold-z-overlay)',
123
+ modal: 'var(--pinfold-z-modal)',
124
+ toast: 'var(--pinfold-z-toast)',
125
+ tooltip: 'var(--pinfold-z-tooltip)',
126
+ },
127
+ },
128
+ },
129
+
130
+ plugins: [
131
+ /**
132
+ * Variants for the `data-*` state Pinfold components already expose, so a
133
+ * Tailwind-styled accordion needs no class toggling of its own:
134
+ *
135
+ * <Faq classNames={{ trigger: 'open:text-primary-600 disabled-row:opacity-50' }} />
136
+ */
137
+ function pinfoldVariants({ addVariant }) {
138
+ addVariant('open', '&[data-state="open"]');
139
+ addVariant('closed', '&[data-state="closed"]');
140
+ addVariant('selected', '&[data-state="selected"]');
141
+ addVariant('disabled-row', '&[data-disabled]');
142
+ addVariant('group-open', ':merge(.group)[data-state="open"] &');
143
+ addVariant('pinfold-dark', ':is([data-pinfold-theme="dark"] &)');
144
+ },
145
+ ],
146
+ };
@@ -0,0 +1,87 @@
1
+ /* Pinfold — Tailwind CSS v4 theme.
2
+ *
3
+ * @import "tailwindcss";
4
+ * @import "@pinfold/css/core.css";
5
+ * @import "@pinfold/css/tailwind.css";
6
+ *
7
+ * Maps Pinfold tokens onto Tailwind's `--color-*` / `--radius-*` namespaces, so
8
+ * `bg-primary-600` and `rounded-lg` follow `npx pinfold theme`, dark mode and any
9
+ * runtime override. For Tailwind v3, use the preset instead.
10
+ */
11
+
12
+ @theme inline {
13
+ --color-primary-50: var(--pinfold-primary-50);
14
+ --color-primary-100: var(--pinfold-primary-100);
15
+ --color-primary-200: var(--pinfold-primary-200);
16
+ --color-primary-300: var(--pinfold-primary-300);
17
+ --color-primary-400: var(--pinfold-primary-400);
18
+ --color-primary-500: var(--pinfold-primary-500);
19
+ --color-primary-600: var(--pinfold-primary-600);
20
+ --color-primary-700: var(--pinfold-primary-700);
21
+ --color-primary-800: var(--pinfold-primary-800);
22
+ --color-primary-900: var(--pinfold-primary-900);
23
+ --color-primary-950: var(--pinfold-primary-950);
24
+
25
+ --color-neutral-50: var(--pinfold-neutral-50);
26
+ --color-neutral-100: var(--pinfold-neutral-100);
27
+ --color-neutral-200: var(--pinfold-neutral-200);
28
+ --color-neutral-300: var(--pinfold-neutral-300);
29
+ --color-neutral-400: var(--pinfold-neutral-400);
30
+ --color-neutral-500: var(--pinfold-neutral-500);
31
+ --color-neutral-600: var(--pinfold-neutral-600);
32
+ --color-neutral-700: var(--pinfold-neutral-700);
33
+ --color-neutral-800: var(--pinfold-neutral-800);
34
+ --color-neutral-900: var(--pinfold-neutral-900);
35
+ --color-neutral-950: var(--pinfold-neutral-950);
36
+
37
+ --color-accent: var(--pinfold-color-accent);
38
+ --color-accent-300: var(--pinfold-accent-300);
39
+ --color-accent-400: var(--pinfold-accent-400);
40
+ --color-accent-500: var(--pinfold-accent-500);
41
+ --color-accent-600: var(--pinfold-accent-600);
42
+ --color-accent-700: var(--pinfold-accent-700);
43
+
44
+ --color-success-500: var(--pinfold-success-500);
45
+ --color-warning-500: var(--pinfold-warning-500);
46
+ --color-danger-500: var(--pinfold-danger-500);
47
+ --color-info-500: var(--pinfold-info-500);
48
+
49
+ --color-bg: var(--pinfold-color-bg);
50
+ --color-bg-subtle: var(--pinfold-color-bg-subtle);
51
+ --color-surface: var(--pinfold-color-surface);
52
+ --color-surface-raised: var(--pinfold-color-surface-raised);
53
+ --color-surface-hover: var(--pinfold-color-surface-hover);
54
+ --color-surface-selected: var(--pinfold-color-surface-selected);
55
+ --color-content: var(--pinfold-color-text);
56
+ --color-content-muted: var(--pinfold-color-text-muted);
57
+ --color-content-subtle: var(--pinfold-color-text-subtle);
58
+ --color-line: var(--pinfold-color-border);
59
+ --color-line-strong: var(--pinfold-color-border-strong);
60
+
61
+ --radius-xs: var(--pinfold-radius-xs);
62
+ --radius-sm: var(--pinfold-radius-sm);
63
+ --radius-md: var(--pinfold-radius-md);
64
+ --radius-lg: var(--pinfold-radius-lg);
65
+ --radius-xl: var(--pinfold-radius-xl);
66
+ --radius-2xl: var(--pinfold-radius-2xl);
67
+
68
+ --font-sans: var(--pinfold-font-sans);
69
+ --font-mono: var(--pinfold-font-mono);
70
+
71
+ --shadow-xs: var(--pinfold-shadow-xs);
72
+ --shadow-sm: var(--pinfold-shadow-sm);
73
+ --shadow-md: var(--pinfold-shadow-md);
74
+ --shadow-lg: var(--pinfold-shadow-lg);
75
+ --shadow-xl: var(--pinfold-shadow-xl);
76
+
77
+ --ease-pinfold: var(--pinfold-ease);
78
+ --ease-pinfold-out: var(--pinfold-ease-out);
79
+ --ease-pinfold-spring: var(--pinfold-ease-spring);
80
+ }
81
+
82
+ /* Variants matching the `data-*` state Pinfold components expose. */
83
+ @custom-variant open (&[data-state="open"]);
84
+ @custom-variant closed (&[data-state="closed"]);
85
+ @custom-variant selected (&[data-state="selected"]);
86
+ @custom-variant disabled-row (&[data-disabled]);
87
+ @custom-variant pinfold-dark (&:is([data-pinfold-theme="dark"] *));