tailwind-styled-v4 1.0.1 → 5.0.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 (74) hide show
  1. package/dist/animate.cjs +771 -0
  2. package/dist/animate.cjs.map +1 -0
  3. package/dist/animate.d.cts +73 -0
  4. package/dist/animate.d.ts +73 -0
  5. package/dist/animate.js +752 -0
  6. package/dist/animate.js.map +1 -0
  7. package/dist/chunk-VZEJV27B.js +11 -0
  8. package/dist/chunk-VZEJV27B.js.map +1 -0
  9. package/dist/chunk-Y5D3E72P.cjs +13 -0
  10. package/dist/chunk-Y5D3E72P.cjs.map +1 -0
  11. package/dist/css.cjs +121 -0
  12. package/dist/css.cjs.map +1 -0
  13. package/dist/css.d.cts +30 -0
  14. package/dist/css.d.ts +30 -0
  15. package/dist/css.js +112 -0
  16. package/dist/css.js.map +1 -0
  17. package/dist/devtools.cjs +1071 -0
  18. package/dist/devtools.cjs.map +1 -0
  19. package/dist/devtools.d.cts +22 -0
  20. package/dist/devtools.d.ts +22 -0
  21. package/dist/devtools.js +1064 -0
  22. package/dist/devtools.js.map +1 -0
  23. package/dist/index.cjs +1353 -0
  24. package/dist/index.cjs.map +1 -0
  25. package/dist/index.d.cts +655 -0
  26. package/dist/index.d.ts +508 -968
  27. package/dist/index.js +1304 -3
  28. package/dist/index.js.map +1 -1
  29. package/dist/next.cjs +248 -0
  30. package/dist/next.cjs.map +1 -0
  31. package/dist/next.d.cts +54 -0
  32. package/dist/next.d.ts +54 -0
  33. package/dist/next.js +241 -0
  34. package/dist/next.js.map +1 -0
  35. package/dist/preset.cjs +423 -0
  36. package/dist/preset.cjs.map +1 -0
  37. package/dist/preset.d.cts +276 -0
  38. package/dist/preset.d.ts +276 -0
  39. package/dist/preset.js +416 -0
  40. package/dist/preset.js.map +1 -0
  41. package/dist/turbopackLoader.cjs +37 -0
  42. package/dist/turbopackLoader.cjs.map +1 -0
  43. package/dist/turbopackLoader.d.cts +12 -0
  44. package/dist/turbopackLoader.d.ts +12 -0
  45. package/dist/turbopackLoader.js +35 -0
  46. package/dist/turbopackLoader.js.map +1 -0
  47. package/dist/vite.cjs +138 -0
  48. package/dist/vite.cjs.map +1 -0
  49. package/dist/vite.d.cts +51 -0
  50. package/dist/vite.d.ts +51 -0
  51. package/dist/vite.js +128 -0
  52. package/dist/vite.js.map +1 -0
  53. package/dist/webpackLoader.cjs +51 -0
  54. package/dist/webpackLoader.cjs.map +1 -0
  55. package/dist/webpackLoader.d.cts +17 -0
  56. package/dist/webpackLoader.d.ts +17 -0
  57. package/dist/webpackLoader.js +49 -0
  58. package/dist/webpackLoader.js.map +1 -0
  59. package/package.json +65 -32
  60. package/CHANGELOG.md +0 -75
  61. package/LICENSE +0 -21
  62. package/README.md +0 -608
  63. package/dist/cli/init.js +0 -208
  64. package/dist/compiler/index.d.mts +0 -214
  65. package/dist/compiler/index.d.ts +0 -214
  66. package/dist/compiler/index.js +0 -546
  67. package/dist/compiler/index.js.map +0 -1
  68. package/dist/compiler/index.mjs +0 -504
  69. package/dist/compiler/index.mjs.map +0 -1
  70. package/dist/index.d.mts +0 -1115
  71. package/dist/index.mjs +0 -4
  72. package/dist/index.mjs.map +0 -1
  73. package/dist/turbopack-loader.js +0 -232
  74. package/dist/webpack-loader.js +0 -213
package/dist/preset.js ADDED
@@ -0,0 +1,416 @@
1
+ import './chunk-VZEJV27B.js';
2
+
3
+ /* tailwind-styled-v4 v4 | MIT | https://github.com/dictionar32/tailwind-styled-v4 */
4
+
5
+ // ../preset/src/defaultPreset.ts
6
+ var STANDARD_CONTENT_PATHS = [
7
+ // Next.js App Router
8
+ "./src/**/*.{tsx,ts,jsx,js,mdx}",
9
+ "./app/**/*.{tsx,ts,jsx,js,mdx}",
10
+ "./pages/**/*.{tsx,ts,jsx,js,mdx}",
11
+ "./components/**/*.{tsx,ts,jsx,js,mdx}",
12
+ // Vite / React
13
+ "./src/**/*.{tsx,ts,jsx,js}",
14
+ "./index.html",
15
+ // Monorepo
16
+ "../../packages/**/src/**/*.{tsx,ts,jsx,js}"
17
+ ];
18
+ var designTokens = {
19
+ colors: {
20
+ primary: { DEFAULT: "#3b82f6", hover: "#2563eb", active: "#1d4ed8", foreground: "#ffffff" },
21
+ secondary: { DEFAULT: "#6366f1", hover: "#4f46e5", active: "#4338ca", foreground: "#ffffff" },
22
+ accent: { DEFAULT: "#f59e0b", hover: "#d97706", active: "#b45309", foreground: "#000000" },
23
+ success: { DEFAULT: "#10b981", foreground: "#ffffff" },
24
+ warning: { DEFAULT: "#f59e0b", foreground: "#000000" },
25
+ danger: { DEFAULT: "#ef4444", foreground: "#ffffff" },
26
+ info: { DEFAULT: "#3b82f6", foreground: "#ffffff" },
27
+ surface: "#18181b",
28
+ border: "#27272a",
29
+ muted: "#71717a",
30
+ subtle: "#3f3f46"
31
+ },
32
+ spacing: {
33
+ 1: "0.25rem",
34
+ 2: "0.5rem",
35
+ 3: "0.75rem",
36
+ 4: "1rem",
37
+ 5: "1.25rem",
38
+ 6: "1.5rem",
39
+ 8: "2rem",
40
+ 10: "2.5rem",
41
+ 12: "3rem",
42
+ 16: "4rem"
43
+ },
44
+ breakpoints: {
45
+ sm: "40rem",
46
+ md: "48rem",
47
+ lg: "64rem",
48
+ xl: "80rem",
49
+ "2xl": "96rem"
50
+ },
51
+ fontWeight: {
52
+ normal: "400",
53
+ medium: "500",
54
+ semibold: "600",
55
+ bold: "700"
56
+ },
57
+ fontFamily: {
58
+ sans: ["InterVariable", "Inter", "system-ui", "sans-serif"],
59
+ mono: ["JetBrains Mono", "Fira Code", "Consolas", "monospace"]
60
+ },
61
+ borderRadius: {
62
+ sm: "0.25rem",
63
+ DEFAULT: "0.5rem",
64
+ md: "0.5rem",
65
+ lg: "0.75rem",
66
+ xl: "1rem",
67
+ "2xl": "1.5rem",
68
+ full: "9999px"
69
+ },
70
+ animation: {
71
+ "fade-in": "fadeIn 0.2s ease-out",
72
+ "fade-out": "fadeOut 0.2s ease-in",
73
+ "slide-up": "slideUp 0.3s cubic-bezier(0.16, 1, 0.3, 1)",
74
+ "slide-down": "slideDown 0.3s cubic-bezier(0.16, 1, 0.3, 1)",
75
+ "scale-in": "scaleIn 0.2s ease-out"
76
+ },
77
+ keyframes: {
78
+ fadeIn: { from: { opacity: "0" }, to: { opacity: "1" } },
79
+ fadeOut: { from: { opacity: "1" }, to: { opacity: "0" } },
80
+ slideUp: {
81
+ from: { transform: "translateY(8px)", opacity: "0" },
82
+ to: { transform: "translateY(0)", opacity: "1" }
83
+ },
84
+ slideDown: {
85
+ from: { transform: "translateY(-8px)", opacity: "0" },
86
+ to: { transform: "translateY(0)", opacity: "1" }
87
+ },
88
+ scaleIn: {
89
+ from: { transform: "scale(0.95)", opacity: "0" },
90
+ to: { transform: "scale(1)", opacity: "1" }
91
+ }
92
+ }
93
+ };
94
+ var defaultPreset = {
95
+ content: STANDARD_CONTENT_PATHS,
96
+ darkMode: "class",
97
+ theme: {
98
+ extend: {
99
+ colors: designTokens.colors,
100
+ fontFamily: designTokens.fontFamily,
101
+ borderRadius: designTokens.borderRadius,
102
+ animation: designTokens.animation,
103
+ keyframes: designTokens.keyframes
104
+ }
105
+ },
106
+ plugins: []
107
+ };
108
+ var defaultThemeCss = `@import "tailwindcss";
109
+
110
+ @theme {
111
+ /* colors */
112
+ --color-primary: #3b82f6;
113
+ --color-primary-hover: #2563eb;
114
+ --color-primary-active: #1d4ed8;
115
+ --color-primary-foreground: #ffffff;
116
+ --color-secondary: #6366f1;
117
+ --color-secondary-hover: #4f46e5;
118
+ --color-secondary-active: #4338ca;
119
+ --color-secondary-foreground: #ffffff;
120
+ --color-accent: #f59e0b;
121
+ --color-accent-hover: #d97706;
122
+ --color-accent-active: #b45309;
123
+ --color-accent-foreground: #000000;
124
+ --color-success: #10b981;
125
+ --color-success-foreground: #ffffff;
126
+ --color-warning: #f59e0b;
127
+ --color-warning-foreground: #000000;
128
+ --color-danger: #ef4444;
129
+ --color-danger-foreground: #ffffff;
130
+ --color-info: #3b82f6;
131
+ --color-info-foreground: #ffffff;
132
+ --color-surface: #18181b;
133
+ --color-border: #27272a;
134
+ --color-muted: #71717a;
135
+ --color-subtle: #3f3f46;
136
+
137
+ /* fonts */
138
+ --font-sans: InterVariable, Inter, system-ui, sans-serif;
139
+ --font-mono: JetBrains Mono, Fira Code, Consolas, monospace;
140
+
141
+ /* spacing */
142
+ --spacing-1: 0.25rem;
143
+ --spacing-2: 0.5rem;
144
+ --spacing-3: 0.75rem;
145
+ --spacing-4: 1rem;
146
+ --spacing-5: 1.25rem;
147
+ --spacing-6: 1.5rem;
148
+ --spacing-8: 2rem;
149
+ --spacing-10: 2.5rem;
150
+ --spacing-12: 3rem;
151
+ --spacing-16: 4rem;
152
+
153
+ /* breakpoints */
154
+ --breakpoint-sm: 40rem;
155
+ --breakpoint-md: 48rem;
156
+ --breakpoint-lg: 64rem;
157
+ --breakpoint-xl: 80rem;
158
+ --breakpoint-2xl: 96rem;
159
+
160
+ /* border radius */
161
+ --radius-sm: 0.25rem;
162
+ --radius-md: 0.5rem;
163
+ --radius-lg: 0.75rem;
164
+ --radius-xl: 1rem;
165
+ --radius-2xl: 1.5rem;
166
+ --radius-full: 9999px;
167
+
168
+ /* animations */
169
+ --animate-fade-in: fadeIn 0.2s ease-out;
170
+ --animate-fade-out: fadeOut 0.2s ease-in;
171
+ --animate-slide-up: slideUp 0.3s cubic-bezier(0.16, 1, 0.3, 1);
172
+ --animate-slide-down: slideDown 0.3s cubic-bezier(0.16, 1, 0.3, 1);
173
+ --animate-scale-in: scaleIn 0.2s ease-out;
174
+ }
175
+
176
+ @keyframes fadeIn {
177
+ from { opacity: 0; }
178
+ to { opacity: 1; }
179
+ }
180
+ @keyframes fadeOut {
181
+ from { opacity: 1; }
182
+ to { opacity: 0; }
183
+ }
184
+ @keyframes slideUp {
185
+ from { transform: translateY(8px); opacity: 0; }
186
+ to { transform: translateY(0); opacity: 1; }
187
+ }
188
+ @keyframes slideDown {
189
+ from { transform: translateY(-8px); opacity: 0; }
190
+ to { transform: translateY(0); opacity: 1; }
191
+ }
192
+ @keyframes scaleIn {
193
+ from { transform: scale(0.95); opacity: 0; }
194
+ to { transform: scale(1); opacity: 1; }
195
+ }`;
196
+ var defaultGlobalCss = `@import "tailwindcss";
197
+
198
+ @theme {
199
+ /* colors */
200
+ --color-primary: #3b82f6;
201
+ --color-primary-hover: #2563eb;
202
+ --color-primary-active: #1d4ed8;
203
+ --color-primary-foreground: #ffffff;
204
+ --color-secondary: #6366f1;
205
+ --color-secondary-hover: #4f46e5;
206
+ --color-secondary-active: #4338ca;
207
+ --color-secondary-foreground: #ffffff;
208
+ --color-accent: #f59e0b;
209
+ --color-accent-hover: #d97706;
210
+ --color-accent-active: #b45309;
211
+ --color-accent-foreground: #000000;
212
+ --color-success: #10b981;
213
+ --color-success-foreground: #ffffff;
214
+ --color-warning: #f59e0b;
215
+ --color-warning-foreground: #000000;
216
+ --color-danger: #ef4444;
217
+ --color-danger-foreground: #ffffff;
218
+ --color-info: #3b82f6;
219
+ --color-info-foreground: #ffffff;
220
+ --color-surface: #18181b;
221
+ --color-border: #27272a;
222
+ --color-muted: #71717a;
223
+ --color-subtle: #3f3f46;
224
+
225
+ /* fonts */
226
+ --font-sans: InterVariable, Inter, system-ui, sans-serif;
227
+ --font-mono: JetBrains Mono, Fira Code, Consolas, monospace;
228
+
229
+ /* spacing */
230
+ --spacing-1: 0.25rem;
231
+ --spacing-2: 0.5rem;
232
+ --spacing-3: 0.75rem;
233
+ --spacing-4: 1rem;
234
+ --spacing-5: 1.25rem;
235
+ --spacing-6: 1.5rem;
236
+ --spacing-8: 2rem;
237
+ --spacing-10: 2.5rem;
238
+ --spacing-12: 3rem;
239
+ --spacing-16: 4rem;
240
+
241
+ /* breakpoints */
242
+ --breakpoint-sm: 40rem;
243
+ --breakpoint-md: 48rem;
244
+ --breakpoint-lg: 64rem;
245
+ --breakpoint-xl: 80rem;
246
+ --breakpoint-2xl: 96rem;
247
+
248
+ /* border radius */
249
+ --radius-sm: 0.25rem;
250
+ --radius-md: 0.5rem;
251
+ --radius-lg: 0.75rem;
252
+ --radius-xl: 1rem;
253
+ --radius-2xl: 1.5rem;
254
+ --radius-full: 9999px;
255
+
256
+ /* animations */
257
+ --animate-fade-in: fadeIn 0.2s ease-out;
258
+ --animate-fade-out: fadeOut 0.2s ease-in;
259
+ --animate-slide-up: slideUp 0.3s cubic-bezier(0.16, 1, 0.3, 1);
260
+ --animate-slide-down: slideDown 0.3s cubic-bezier(0.16, 1, 0.3, 1);
261
+ --animate-scale-in: scaleIn 0.2s ease-out;
262
+ }
263
+
264
+ @keyframes fadeIn {
265
+ from { opacity: 0; }
266
+ to { opacity: 1; }
267
+ }
268
+ @keyframes fadeOut {
269
+ from { opacity: 1; }
270
+ to { opacity: 0; }
271
+ }
272
+ @keyframes slideUp {
273
+ from { transform: translateY(8px); opacity: 0; }
274
+ to { transform: translateY(0); opacity: 1; }
275
+ }
276
+ @keyframes slideDown {
277
+ from { transform: translateY(-8px); opacity: 0; }
278
+ to { transform: translateY(0); opacity: 1; }
279
+ }
280
+ @keyframes scaleIn {
281
+ from { transform: scale(0.95); opacity: 0; }
282
+ to { transform: scale(1); opacity: 1; }
283
+ }
284
+
285
+ /* tailwind-styled-v4 \u2014 zero-config base styles */
286
+ *, *::before, *::after {
287
+ box-sizing: border-box;
288
+ }
289
+
290
+ html {
291
+ -webkit-font-smoothing: antialiased;
292
+ -moz-osx-font-smoothing: grayscale;
293
+ text-rendering: optimizeLegibility;
294
+ }
295
+
296
+ body {
297
+ margin: 0;
298
+ font-family: var(--font-sans, system-ui, sans-serif);
299
+ background: var(--color-surface, #18181b);
300
+ color: var(--color-foreground, #fafafa);
301
+ }
302
+ `;
303
+ function generateTailwindCss(contentPaths = STANDARD_CONTENT_PATHS) {
304
+ return `@import "tailwindcss";
305
+
306
+ @theme {
307
+ /* colors */
308
+ --color-primary: #3b82f6;
309
+ --color-primary-hover: #2563eb;
310
+ --color-primary-active: #1d4ed8;
311
+ --color-primary-foreground: #ffffff;
312
+ --color-secondary: #6366f1;
313
+ --color-secondary-hover: #4f46e5;
314
+ --color-secondary-active: #4338ca;
315
+ --color-secondary-foreground: #ffffff;
316
+ --color-accent: #f59e0b;
317
+ --color-accent-hover: #d97706;
318
+ --color-accent-active: #b45309;
319
+ --color-accent-foreground: #000000;
320
+ --color-success: #10b981;
321
+ --color-success-foreground: #ffffff;
322
+ --color-warning: #f59e0b;
323
+ --color-warning-foreground: #000000;
324
+ --color-danger: #ef4444;
325
+ --color-danger-foreground: #ffffff;
326
+ --color-info: #3b82f6;
327
+ --color-info-foreground: #ffffff;
328
+ --color-surface: #18181b;
329
+ --color-border: #27272a;
330
+ --color-muted: #71717a;
331
+ --color-subtle: #3f3f46;
332
+
333
+ /* fonts */
334
+ --font-sans: InterVariable, Inter, system-ui, sans-serif;
335
+ --font-mono: JetBrains Mono, Fira Code, Consolas, monospace;
336
+
337
+ /* spacing */
338
+ --spacing-1: 0.25rem;
339
+ --spacing-2: 0.5rem;
340
+ --spacing-3: 0.75rem;
341
+ --spacing-4: 1rem;
342
+ --spacing-5: 1.25rem;
343
+ --spacing-6: 1.5rem;
344
+ --spacing-8: 2rem;
345
+ --spacing-10: 2.5rem;
346
+ --spacing-12: 3rem;
347
+ --spacing-16: 4rem;
348
+
349
+ /* breakpoints */
350
+ --breakpoint-sm: 40rem;
351
+ --breakpoint-md: 48rem;
352
+ --breakpoint-lg: 64rem;
353
+ --breakpoint-xl: 80rem;
354
+ --breakpoint-2xl: 96rem;
355
+
356
+ /* border radius */
357
+ --radius-sm: 0.25rem;
358
+ --radius-md: 0.5rem;
359
+ --radius-lg: 0.75rem;
360
+ --radius-xl: 1rem;
361
+ --radius-2xl: 1.5rem;
362
+ --radius-full: 9999px;
363
+
364
+ /* animations */
365
+ --animate-fade-in: fadeIn 0.2s ease-out;
366
+ --animate-fade-out: fadeOut 0.2s ease-in;
367
+ --animate-slide-up: slideUp 0.3s cubic-bezier(0.16, 1, 0.3, 1);
368
+ --animate-slide-down: slideDown 0.3s cubic-bezier(0.16, 1, 0.3, 1);
369
+ --animate-scale-in: scaleIn 0.2s ease-out;
370
+ }
371
+
372
+ @keyframes fadeIn {
373
+ from { opacity: 0; }
374
+ to { opacity: 1; }
375
+ }
376
+ @keyframes fadeOut {
377
+ from { opacity: 1; }
378
+ to { opacity: 0; }
379
+ }
380
+ @keyframes slideUp {
381
+ from { transform: translateY(8px); opacity: 0; }
382
+ to { transform: translateY(0); opacity: 1; }
383
+ }
384
+ @keyframes slideDown {
385
+ from { transform: translateY(-8px); opacity: 0; }
386
+ to { transform: translateY(0); opacity: 1; }
387
+ }
388
+ @keyframes scaleIn {
389
+ from { transform: scale(0.95); opacity: 0; }
390
+ to { transform: scale(1); opacity: 1; }
391
+ }
392
+
393
+ @source ${contentPaths.join("\n@source ")}
394
+ `;
395
+ }
396
+ function generateTailwindConfig(safelistPath = ".tailwind-styled-safelist.json", contentPaths = STANDARD_CONTENT_PATHS) {
397
+ return `import type { Config } from "tailwindcss"
398
+ import { defaultPreset } from "tailwind-styled-v4/preset"
399
+
400
+ // Auto-generated safelist dari tailwind-styled-v4 compiler
401
+ const safelist = (() => {
402
+ try { return require(${JSON.stringify(safelistPath)}) as string[] }
403
+ catch { return [] }
404
+ })()
405
+
406
+ export default {
407
+ presets: [defaultPreset],
408
+ content: ${JSON.stringify(contentPaths, null, 2)},
409
+ safelist,
410
+ } satisfies Config
411
+ `;
412
+ }
413
+
414
+ export { defaultGlobalCss, defaultPreset, defaultThemeCss, designTokens, generateTailwindConfig, generateTailwindCss };
415
+ //# sourceMappingURL=preset.js.map
416
+ //# sourceMappingURL=preset.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../preset/src/defaultPreset.ts"],"names":[],"mappings":"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","file":"preset.js","sourcesContent":["/**\n * tailwind-styled-v4 — Default Preset\n *\n * Tailwind config built-in yang dipakai ketika developer tidak punya\n * tailwind.config.ts / tailwind.config.js di project mereka.\n *\n * Developer tidak perlu setup apapun:\n * npm install tailwind-styled-v4\n * → langsung bisa tw.div`p-4 bg-blue-500`\n *\n * Preset ini juga menyediakan design tokens yang consistent\n * untuk semua project yang pakai tailwind-styled-v4.\n *\n * Override per-project:\n * // tailwind.config.ts\n * import { defaultPreset } from \"tailwind-styled-v4/preset\"\n * export default { presets: [defaultPreset], theme: { extend: {...} } }\n */\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Content paths — auto-detect berdasarkan project structure\n// ─────────────────────────────────────────────────────────────────────────────\n\nconst STANDARD_CONTENT_PATHS = [\n // Next.js App Router\n \"./src/**/*.{tsx,ts,jsx,js,mdx}\",\n \"./app/**/*.{tsx,ts,jsx,js,mdx}\",\n \"./pages/**/*.{tsx,ts,jsx,js,mdx}\",\n \"./components/**/*.{tsx,ts,jsx,js,mdx}\",\n // Vite / React\n \"./src/**/*.{tsx,ts,jsx,js}\",\n \"./index.html\",\n // Monorepo\n \"../../packages/**/src/**/*.{tsx,ts,jsx,js}\",\n]\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Design tokens — consistent across all tailwind-styled-v4 projects\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport const designTokens = {\n colors: {\n primary: { DEFAULT: \"#3b82f6\", hover: \"#2563eb\", active: \"#1d4ed8\", foreground: \"#ffffff\" },\n secondary: { DEFAULT: \"#6366f1\", hover: \"#4f46e5\", active: \"#4338ca\", foreground: \"#ffffff\" },\n accent: { DEFAULT: \"#f59e0b\", hover: \"#d97706\", active: \"#b45309\", foreground: \"#000000\" },\n success: { DEFAULT: \"#10b981\", foreground: \"#ffffff\" },\n warning: { DEFAULT: \"#f59e0b\", foreground: \"#000000\" },\n danger: { DEFAULT: \"#ef4444\", foreground: \"#ffffff\" },\n info: { DEFAULT: \"#3b82f6\", foreground: \"#ffffff\" },\n surface: \"#18181b\",\n border: \"#27272a\",\n muted: \"#71717a\",\n subtle: \"#3f3f46\",\n },\n\n spacing: {\n 1: \"0.25rem\",\n 2: \"0.5rem\",\n 3: \"0.75rem\",\n 4: \"1rem\",\n 5: \"1.25rem\",\n 6: \"1.5rem\",\n 8: \"2rem\",\n 10: \"2.5rem\",\n 12: \"3rem\",\n 16: \"4rem\",\n },\n\n breakpoints: {\n sm: \"40rem\",\n md: \"48rem\",\n lg: \"64rem\",\n xl: \"80rem\",\n \"2xl\": \"96rem\",\n },\n\n fontWeight: {\n normal: \"400\",\n medium: \"500\",\n semibold: \"600\",\n bold: \"700\",\n },\n\n fontFamily: {\n sans: [\"InterVariable\", \"Inter\", \"system-ui\", \"sans-serif\"],\n mono: [\"JetBrains Mono\", \"Fira Code\", \"Consolas\", \"monospace\"],\n },\n\n borderRadius: {\n sm: \"0.25rem\",\n DEFAULT: \"0.5rem\",\n md: \"0.5rem\",\n lg: \"0.75rem\",\n xl: \"1rem\",\n \"2xl\": \"1.5rem\",\n full: \"9999px\",\n },\n\n animation: {\n \"fade-in\": \"fadeIn 0.2s ease-out\",\n \"fade-out\": \"fadeOut 0.2s ease-in\",\n \"slide-up\": \"slideUp 0.3s cubic-bezier(0.16, 1, 0.3, 1)\",\n \"slide-down\": \"slideDown 0.3s cubic-bezier(0.16, 1, 0.3, 1)\",\n \"scale-in\": \"scaleIn 0.2s ease-out\",\n },\n\n keyframes: {\n fadeIn: { from: { opacity: \"0\" }, to: { opacity: \"1\" } },\n fadeOut: { from: { opacity: \"1\" }, to: { opacity: \"0\" } },\n slideUp: {\n from: { transform: \"translateY(8px)\", opacity: \"0\" },\n to: { transform: \"translateY(0)\", opacity: \"1\" },\n },\n slideDown: {\n from: { transform: \"translateY(-8px)\", opacity: \"0\" },\n to: { transform: \"translateY(0)\", opacity: \"1\" },\n },\n scaleIn: {\n from: { transform: \"scale(0.95)\", opacity: \"0\" },\n to: { transform: \"scale(1)\", opacity: \"1\" },\n },\n },\n} as const\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Default Tailwind Config — dipakai sebagai fallback + preset\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport const defaultPreset = {\n content: STANDARD_CONTENT_PATHS,\n\n darkMode: \"class\" as const,\n\n theme: {\n extend: {\n colors: designTokens.colors,\n fontFamily: designTokens.fontFamily,\n borderRadius: designTokens.borderRadius,\n animation: designTokens.animation,\n keyframes: designTokens.keyframes,\n },\n },\n\n plugins: [],\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Default Theme CSS — Tailwind v4 @theme block\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport const defaultThemeCss = `@import \"tailwindcss\";\n\n@theme {\n /* colors */\n --color-primary: #3b82f6;\n --color-primary-hover: #2563eb;\n --color-primary-active: #1d4ed8;\n --color-primary-foreground: #ffffff;\n --color-secondary: #6366f1;\n --color-secondary-hover: #4f46e5;\n --color-secondary-active: #4338ca;\n --color-secondary-foreground: #ffffff;\n --color-accent: #f59e0b;\n --color-accent-hover: #d97706;\n --color-accent-active: #b45309;\n --color-accent-foreground: #000000;\n --color-success: #10b981;\n --color-success-foreground: #ffffff;\n --color-warning: #f59e0b;\n --color-warning-foreground: #000000;\n --color-danger: #ef4444;\n --color-danger-foreground: #ffffff;\n --color-info: #3b82f6;\n --color-info-foreground: #ffffff;\n --color-surface: #18181b;\n --color-border: #27272a;\n --color-muted: #71717a;\n --color-subtle: #3f3f46;\n\n /* fonts */\n --font-sans: InterVariable, Inter, system-ui, sans-serif;\n --font-mono: JetBrains Mono, Fira Code, Consolas, monospace;\n\n /* spacing */\n --spacing-1: 0.25rem;\n --spacing-2: 0.5rem;\n --spacing-3: 0.75rem;\n --spacing-4: 1rem;\n --spacing-5: 1.25rem;\n --spacing-6: 1.5rem;\n --spacing-8: 2rem;\n --spacing-10: 2.5rem;\n --spacing-12: 3rem;\n --spacing-16: 4rem;\n\n /* breakpoints */\n --breakpoint-sm: 40rem;\n --breakpoint-md: 48rem;\n --breakpoint-lg: 64rem;\n --breakpoint-xl: 80rem;\n --breakpoint-2xl: 96rem;\n\n /* border radius */\n --radius-sm: 0.25rem;\n --radius-md: 0.5rem;\n --radius-lg: 0.75rem;\n --radius-xl: 1rem;\n --radius-2xl: 1.5rem;\n --radius-full: 9999px;\n\n /* animations */\n --animate-fade-in: fadeIn 0.2s ease-out;\n --animate-fade-out: fadeOut 0.2s ease-in;\n --animate-slide-up: slideUp 0.3s cubic-bezier(0.16, 1, 0.3, 1);\n --animate-slide-down: slideDown 0.3s cubic-bezier(0.16, 1, 0.3, 1);\n --animate-scale-in: scaleIn 0.2s ease-out;\n}\n\n@keyframes fadeIn {\n from { opacity: 0; }\n to { opacity: 1; }\n}\n@keyframes fadeOut {\n from { opacity: 1; }\n to { opacity: 0; }\n}\n@keyframes slideUp {\n from { transform: translateY(8px); opacity: 0; }\n to { transform: translateY(0); opacity: 1; }\n}\n@keyframes slideDown {\n from { transform: translateY(-8px); opacity: 0; }\n to { transform: translateY(0); opacity: 1; }\n}\n@keyframes scaleIn {\n from { transform: scale(0.95); opacity: 0; }\n to { transform: scale(1); opacity: 1; }\n}`\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Zero-config globals.css — tidak perlu @tailwind base dll\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport const defaultGlobalCss = `@import \"tailwindcss\";\n\n@theme {\n /* colors */\n --color-primary: #3b82f6;\n --color-primary-hover: #2563eb;\n --color-primary-active: #1d4ed8;\n --color-primary-foreground: #ffffff;\n --color-secondary: #6366f1;\n --color-secondary-hover: #4f46e5;\n --color-secondary-active: #4338ca;\n --color-secondary-foreground: #ffffff;\n --color-accent: #f59e0b;\n --color-accent-hover: #d97706;\n --color-accent-active: #b45309;\n --color-accent-foreground: #000000;\n --color-success: #10b981;\n --color-success-foreground: #ffffff;\n --color-warning: #f59e0b;\n --color-warning-foreground: #000000;\n --color-danger: #ef4444;\n --color-danger-foreground: #ffffff;\n --color-info: #3b82f6;\n --color-info-foreground: #ffffff;\n --color-surface: #18181b;\n --color-border: #27272a;\n --color-muted: #71717a;\n --color-subtle: #3f3f46;\n\n /* fonts */\n --font-sans: InterVariable, Inter, system-ui, sans-serif;\n --font-mono: JetBrains Mono, Fira Code, Consolas, monospace;\n\n /* spacing */\n --spacing-1: 0.25rem;\n --spacing-2: 0.5rem;\n --spacing-3: 0.75rem;\n --spacing-4: 1rem;\n --spacing-5: 1.25rem;\n --spacing-6: 1.5rem;\n --spacing-8: 2rem;\n --spacing-10: 2.5rem;\n --spacing-12: 3rem;\n --spacing-16: 4rem;\n\n /* breakpoints */\n --breakpoint-sm: 40rem;\n --breakpoint-md: 48rem;\n --breakpoint-lg: 64rem;\n --breakpoint-xl: 80rem;\n --breakpoint-2xl: 96rem;\n\n /* border radius */\n --radius-sm: 0.25rem;\n --radius-md: 0.5rem;\n --radius-lg: 0.75rem;\n --radius-xl: 1rem;\n --radius-2xl: 1.5rem;\n --radius-full: 9999px;\n\n /* animations */\n --animate-fade-in: fadeIn 0.2s ease-out;\n --animate-fade-out: fadeOut 0.2s ease-in;\n --animate-slide-up: slideUp 0.3s cubic-bezier(0.16, 1, 0.3, 1);\n --animate-slide-down: slideDown 0.3s cubic-bezier(0.16, 1, 0.3, 1);\n --animate-scale-in: scaleIn 0.2s ease-out;\n}\n\n@keyframes fadeIn {\n from { opacity: 0; }\n to { opacity: 1; }\n}\n@keyframes fadeOut {\n from { opacity: 1; }\n to { opacity: 0; }\n}\n@keyframes slideUp {\n from { transform: translateY(8px); opacity: 0; }\n to { transform: translateY(0); opacity: 1; }\n}\n@keyframes slideDown {\n from { transform: translateY(-8px); opacity: 0; }\n to { transform: translateY(0); opacity: 1; }\n}\n@keyframes scaleIn {\n from { transform: scale(0.95); opacity: 0; }\n to { transform: scale(1); opacity: 1; }\n}\n\n/* tailwind-styled-v4 — zero-config base styles */\n*, *::before, *::after {\n box-sizing: border-box;\n}\n\nhtml {\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n text-rendering: optimizeLegibility;\n}\n\nbody {\n margin: 0;\n font-family: var(--font-sans, system-ui, sans-serif);\n background: var(--color-surface, #18181b);\n color: var(--color-foreground, #fafafa);\n}\n`\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Zero-config Tailwind v4 CSS generator\n// Dipakai oleh CLI dan withTailwindStyled saat tidak ada user config\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport function generateTailwindCss(contentPaths = STANDARD_CONTENT_PATHS): string {\n return `@import \"tailwindcss\";\n\n@theme {\n /* colors */\n --color-primary: #3b82f6;\n --color-primary-hover: #2563eb;\n --color-primary-active: #1d4ed8;\n --color-primary-foreground: #ffffff;\n --color-secondary: #6366f1;\n --color-secondary-hover: #4f46e5;\n --color-secondary-active: #4338ca;\n --color-secondary-foreground: #ffffff;\n --color-accent: #f59e0b;\n --color-accent-hover: #d97706;\n --color-accent-active: #b45309;\n --color-accent-foreground: #000000;\n --color-success: #10b981;\n --color-success-foreground: #ffffff;\n --color-warning: #f59e0b;\n --color-warning-foreground: #000000;\n --color-danger: #ef4444;\n --color-danger-foreground: #ffffff;\n --color-info: #3b82f6;\n --color-info-foreground: #ffffff;\n --color-surface: #18181b;\n --color-border: #27272a;\n --color-muted: #71717a;\n --color-subtle: #3f3f46;\n\n /* fonts */\n --font-sans: InterVariable, Inter, system-ui, sans-serif;\n --font-mono: JetBrains Mono, Fira Code, Consolas, monospace;\n\n /* spacing */\n --spacing-1: 0.25rem;\n --spacing-2: 0.5rem;\n --spacing-3: 0.75rem;\n --spacing-4: 1rem;\n --spacing-5: 1.25rem;\n --spacing-6: 1.5rem;\n --spacing-8: 2rem;\n --spacing-10: 2.5rem;\n --spacing-12: 3rem;\n --spacing-16: 4rem;\n\n /* breakpoints */\n --breakpoint-sm: 40rem;\n --breakpoint-md: 48rem;\n --breakpoint-lg: 64rem;\n --breakpoint-xl: 80rem;\n --breakpoint-2xl: 96rem;\n\n /* border radius */\n --radius-sm: 0.25rem;\n --radius-md: 0.5rem;\n --radius-lg: 0.75rem;\n --radius-xl: 1rem;\n --radius-2xl: 1.5rem;\n --radius-full: 9999px;\n\n /* animations */\n --animate-fade-in: fadeIn 0.2s ease-out;\n --animate-fade-out: fadeOut 0.2s ease-in;\n --animate-slide-up: slideUp 0.3s cubic-bezier(0.16, 1, 0.3, 1);\n --animate-slide-down: slideDown 0.3s cubic-bezier(0.16, 1, 0.3, 1);\n --animate-scale-in: scaleIn 0.2s ease-out;\n}\n\n@keyframes fadeIn {\n from { opacity: 0; }\n to { opacity: 1; }\n}\n@keyframes fadeOut {\n from { opacity: 1; }\n to { opacity: 0; }\n}\n@keyframes slideUp {\n from { transform: translateY(8px); opacity: 0; }\n to { transform: translateY(0); opacity: 1; }\n}\n@keyframes slideDown {\n from { transform: translateY(-8px); opacity: 0; }\n to { transform: translateY(0); opacity: 1; }\n}\n@keyframes scaleIn {\n from { transform: scale(0.95); opacity: 0; }\n to { transform: scale(1); opacity: 1; }\n}\n\n@source ${contentPaths.join(\"\\n@source \")}\n`\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Zero-config tailwind.config.ts generator\n// DEPRECATED: Use generateTailwindCss for Tailwind v4 instead\n// Dipakai oleh CLI dan withTailwindStyled saat tidak ada user config\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport function generateTailwindConfig(\n safelistPath = \".tailwind-styled-safelist.json\",\n contentPaths = STANDARD_CONTENT_PATHS\n): string {\n return `import type { Config } from \"tailwindcss\"\nimport { defaultPreset } from \"tailwind-styled-v4/preset\"\n\n// Auto-generated safelist dari tailwind-styled-v4 compiler\nconst safelist = (() => {\n try { return require(${JSON.stringify(safelistPath)}) as string[] }\n catch { return [] }\n})()\n\nexport default {\n presets: [defaultPreset],\n content: ${JSON.stringify(contentPaths, null, 2)},\n safelist,\n} satisfies Config\n`\n}\n"]}
@@ -0,0 +1,37 @@
1
+ 'use strict';
2
+
3
+ require('./chunk-Y5D3E72P.cjs');
4
+ var compiler = require('@tailwind-styled/compiler');
5
+
6
+ /* tailwind-styled-v4 v4 | MIT | https://github.com/dictionar32/tailwind-styled-v4 */
7
+ function turbopackLoader(source, options = {}) {
8
+ const parseBool = (val) => {
9
+ if (typeof val === "boolean") return val;
10
+ if (typeof val === "string") return val === "true";
11
+ return false;
12
+ };
13
+ const addDataAttr = parseBool(options.addDataAttr);
14
+ const autoClientBoundary = parseBool(options.autoClientBoundary);
15
+ const hoist = parseBool(options.hoist);
16
+ const directiveMatch = source.match(/^\s*"use (client|server)"\s*;?\s*\n/);
17
+ const directive = directiveMatch ? `"use ${directiveMatch[1]}";
18
+ ` : "";
19
+ const output = compiler.runLoaderTransform({
20
+ filepath: this.resourcePath,
21
+ source,
22
+ options: {
23
+ addDataAttr,
24
+ autoClientBoundary,
25
+ hoist,
26
+ // Preserve cv, cx, cn, etc — only tw.* is transformed
27
+ preserveImports: true
28
+ }
29
+ });
30
+ if (!directive) return output.code;
31
+ const stripped = output.code.replace(/"use (client|server)"\s*;?\s*\n?/g, "");
32
+ return directive + stripped;
33
+ }
34
+
35
+ module.exports = turbopackLoader;
36
+ //# sourceMappingURL=turbopackLoader.cjs.map
37
+ //# sourceMappingURL=turbopackLoader.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../next/src/turbopackLoader.ts"],"names":["runLoaderTransform"],"mappings":";;;;;;AAWe,SAAR,eAAA,CAEL,MAAA,EACA,OAAA,GAAyB,EAAC,EAClB;AACR,EAAA,MAAM,SAAA,GAAY,CAAC,GAAA,KAA+C;AAChE,IAAA,IAAI,OAAO,GAAA,KAAQ,SAAA,EAAW,OAAO,GAAA;AACrC,IAAA,IAAI,OAAO,GAAA,KAAQ,QAAA,EAAU,OAAO,GAAA,KAAQ,MAAA;AAC5C,IAAA,OAAO,KAAA;AAAA,EACT,CAAA;AAEA,EAAA,MAAM,WAAA,GAAc,SAAA,CAAU,OAAA,CAAQ,WAAW,CAAA;AACjD,EAAA,MAAM,kBAAA,GAAqB,SAAA,CAAU,OAAA,CAAQ,kBAAkB,CAAA;AAC/D,EAAA,MAAM,KAAA,GAAQ,SAAA,CAAU,OAAA,CAAQ,KAAK,CAAA;AAErC,EAAA,MAAM,cAAA,GAAiB,MAAA,CAAO,KAAA,CAAM,qCAAqC,CAAA;AACzE,EAAA,MAAM,SAAA,GAAY,cAAA,GAAiB,CAAA,KAAA,EAAQ,cAAA,CAAe,CAAC,CAAC,CAAA;AAAA,CAAA,GAAS,EAAA;AAErE,EAAA,MAAM,SAASA,2BAAA,CAAmB;AAAA,IAChC,UAAU,IAAA,CAAK,YAAA;AAAA,IACf,MAAA;AAAA,IACA,OAAA,EAAS;AAAA,MACP,WAAA;AAAA,MACA,kBAAA;AAAA,MACA,KAAA;AAAA;AAAA,MAEA,eAAA,EAAiB;AAAA;AACnB,GACD,CAAA;AAED,EAAA,IAAI,CAAC,SAAA,EAAW,OAAO,MAAA,CAAO,IAAA;AAE9B,EAAA,MAAM,QAAA,GAAW,MAAA,CAAO,IAAA,CAAK,OAAA,CAAQ,qCAAqC,EAAE,CAAA;AAC5E,EAAA,OAAO,SAAA,GAAY,QAAA;AACrB","file":"turbopackLoader.cjs","sourcesContent":["/**\n * tailwind-styled-v4 - Turbopack Loader\n */\n\nimport type { LoaderOptions } from \"@tailwind-styled/compiler\"\nimport { runLoaderTransform } from \"@tailwind-styled/compiler\"\n\ninterface TurbopackContext {\n resourcePath: string\n}\n\nexport default function turbopackLoader(\n this: TurbopackContext,\n source: string,\n options: LoaderOptions = {}\n): string {\n const parseBool = (val: boolean | string | undefined): boolean => {\n if (typeof val === \"boolean\") return val\n if (typeof val === \"string\") return val === \"true\"\n return false\n }\n\n const addDataAttr = parseBool(options.addDataAttr)\n const autoClientBoundary = parseBool(options.autoClientBoundary)\n const hoist = parseBool(options.hoist)\n\n const directiveMatch = source.match(/^\\s*\"use (client|server)\"\\s*;?\\s*\\n/)\n const directive = directiveMatch ? `\"use ${directiveMatch[1]}\";\\n` : \"\"\n\n const output = runLoaderTransform({\n filepath: this.resourcePath,\n source,\n options: {\n addDataAttr,\n autoClientBoundary,\n hoist,\n // Preserve cv, cx, cn, etc — only tw.* is transformed\n preserveImports: true,\n },\n })\n\n if (!directive) return output.code\n\n const stripped = output.code.replace(/\"use (client|server)\"\\s*;?\\s*\\n?/g, \"\")\n return directive + stripped\n}\n"]}
@@ -0,0 +1,12 @@
1
+ import { LoaderOptions } from '@tailwind-styled/compiler';
2
+
3
+ /**
4
+ * tailwind-styled-v4 - Turbopack Loader
5
+ */
6
+
7
+ interface TurbopackContext {
8
+ resourcePath: string;
9
+ }
10
+ declare function turbopackLoader(this: TurbopackContext, source: string, options?: LoaderOptions): string;
11
+
12
+ export { turbopackLoader as default };
@@ -0,0 +1,12 @@
1
+ import { LoaderOptions } from '@tailwind-styled/compiler';
2
+
3
+ /**
4
+ * tailwind-styled-v4 - Turbopack Loader
5
+ */
6
+
7
+ interface TurbopackContext {
8
+ resourcePath: string;
9
+ }
10
+ declare function turbopackLoader(this: TurbopackContext, source: string, options?: LoaderOptions): string;
11
+
12
+ export { turbopackLoader as default };
@@ -0,0 +1,35 @@
1
+ import './chunk-VZEJV27B.js';
2
+ import { runLoaderTransform } from '@tailwind-styled/compiler';
3
+
4
+ /* tailwind-styled-v4 v4 | MIT | https://github.com/dictionar32/tailwind-styled-v4 */
5
+ function turbopackLoader(source, options = {}) {
6
+ const parseBool = (val) => {
7
+ if (typeof val === "boolean") return val;
8
+ if (typeof val === "string") return val === "true";
9
+ return false;
10
+ };
11
+ const addDataAttr = parseBool(options.addDataAttr);
12
+ const autoClientBoundary = parseBool(options.autoClientBoundary);
13
+ const hoist = parseBool(options.hoist);
14
+ const directiveMatch = source.match(/^\s*"use (client|server)"\s*;?\s*\n/);
15
+ const directive = directiveMatch ? `"use ${directiveMatch[1]}";
16
+ ` : "";
17
+ const output = runLoaderTransform({
18
+ filepath: this.resourcePath,
19
+ source,
20
+ options: {
21
+ addDataAttr,
22
+ autoClientBoundary,
23
+ hoist,
24
+ // Preserve cv, cx, cn, etc — only tw.* is transformed
25
+ preserveImports: true
26
+ }
27
+ });
28
+ if (!directive) return output.code;
29
+ const stripped = output.code.replace(/"use (client|server)"\s*;?\s*\n?/g, "");
30
+ return directive + stripped;
31
+ }
32
+
33
+ export { turbopackLoader as default };
34
+ //# sourceMappingURL=turbopackLoader.js.map
35
+ //# sourceMappingURL=turbopackLoader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../next/src/turbopackLoader.ts"],"names":[],"mappings":";;;;AAWe,SAAR,eAAA,CAEL,MAAA,EACA,OAAA,GAAyB,EAAC,EAClB;AACR,EAAA,MAAM,SAAA,GAAY,CAAC,GAAA,KAA+C;AAChE,IAAA,IAAI,OAAO,GAAA,KAAQ,SAAA,EAAW,OAAO,GAAA;AACrC,IAAA,IAAI,OAAO,GAAA,KAAQ,QAAA,EAAU,OAAO,GAAA,KAAQ,MAAA;AAC5C,IAAA,OAAO,KAAA;AAAA,EACT,CAAA;AAEA,EAAA,MAAM,WAAA,GAAc,SAAA,CAAU,OAAA,CAAQ,WAAW,CAAA;AACjD,EAAA,MAAM,kBAAA,GAAqB,SAAA,CAAU,OAAA,CAAQ,kBAAkB,CAAA;AAC/D,EAAA,MAAM,KAAA,GAAQ,SAAA,CAAU,OAAA,CAAQ,KAAK,CAAA;AAErC,EAAA,MAAM,cAAA,GAAiB,MAAA,CAAO,KAAA,CAAM,qCAAqC,CAAA;AACzE,EAAA,MAAM,SAAA,GAAY,cAAA,GAAiB,CAAA,KAAA,EAAQ,cAAA,CAAe,CAAC,CAAC,CAAA;AAAA,CAAA,GAAS,EAAA;AAErE,EAAA,MAAM,SAAS,kBAAA,CAAmB;AAAA,IAChC,UAAU,IAAA,CAAK,YAAA;AAAA,IACf,MAAA;AAAA,IACA,OAAA,EAAS;AAAA,MACP,WAAA;AAAA,MACA,kBAAA;AAAA,MACA,KAAA;AAAA;AAAA,MAEA,eAAA,EAAiB;AAAA;AACnB,GACD,CAAA;AAED,EAAA,IAAI,CAAC,SAAA,EAAW,OAAO,MAAA,CAAO,IAAA;AAE9B,EAAA,MAAM,QAAA,GAAW,MAAA,CAAO,IAAA,CAAK,OAAA,CAAQ,qCAAqC,EAAE,CAAA;AAC5E,EAAA,OAAO,SAAA,GAAY,QAAA;AACrB","file":"turbopackLoader.js","sourcesContent":["/**\n * tailwind-styled-v4 - Turbopack Loader\n */\n\nimport type { LoaderOptions } from \"@tailwind-styled/compiler\"\nimport { runLoaderTransform } from \"@tailwind-styled/compiler\"\n\ninterface TurbopackContext {\n resourcePath: string\n}\n\nexport default function turbopackLoader(\n this: TurbopackContext,\n source: string,\n options: LoaderOptions = {}\n): string {\n const parseBool = (val: boolean | string | undefined): boolean => {\n if (typeof val === \"boolean\") return val\n if (typeof val === \"string\") return val === \"true\"\n return false\n }\n\n const addDataAttr = parseBool(options.addDataAttr)\n const autoClientBoundary = parseBool(options.autoClientBoundary)\n const hoist = parseBool(options.hoist)\n\n const directiveMatch = source.match(/^\\s*\"use (client|server)\"\\s*;?\\s*\\n/)\n const directive = directiveMatch ? `\"use ${directiveMatch[1]}\";\\n` : \"\"\n\n const output = runLoaderTransform({\n filepath: this.resourcePath,\n source,\n options: {\n addDataAttr,\n autoClientBoundary,\n hoist,\n // Preserve cv, cx, cn, etc — only tw.* is transformed\n preserveImports: true,\n },\n })\n\n if (!directive) return output.code\n\n const stripped = output.code.replace(/\"use (client|server)\"\\s*;?\\s*\\n?/g, \"\")\n return directive + stripped\n}\n"]}