@geometra/tw 1.9.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 (49) hide show
  1. package/dist/colors.d.ts +5 -0
  2. package/dist/colors.d.ts.map +1 -0
  3. package/dist/colors.js +121 -0
  4. package/dist/colors.js.map +1 -0
  5. package/dist/index.d.ts +16 -0
  6. package/dist/index.d.ts.map +1 -0
  7. package/dist/index.js +15 -0
  8. package/dist/index.js.map +1 -0
  9. package/dist/mappings/borders.d.ts +8 -0
  10. package/dist/mappings/borders.d.ts.map +1 -0
  11. package/dist/mappings/borders.js +46 -0
  12. package/dist/mappings/borders.js.map +1 -0
  13. package/dist/mappings/effects.d.ts +4 -0
  14. package/dist/mappings/effects.d.ts.map +1 -0
  15. package/dist/mappings/effects.js +11 -0
  16. package/dist/mappings/effects.js.map +1 -0
  17. package/dist/mappings/flex.d.ts +6 -0
  18. package/dist/mappings/flex.d.ts.map +1 -0
  19. package/dist/mappings/flex.js +49 -0
  20. package/dist/mappings/flex.js.map +1 -0
  21. package/dist/mappings/layout.d.ts +4 -0
  22. package/dist/mappings/layout.d.ts.map +1 -0
  23. package/dist/mappings/layout.js +20 -0
  24. package/dist/mappings/layout.js.map +1 -0
  25. package/dist/mappings/sizing.d.ts +8 -0
  26. package/dist/mappings/sizing.d.ts.map +1 -0
  27. package/dist/mappings/sizing.js +36 -0
  28. package/dist/mappings/sizing.js.map +1 -0
  29. package/dist/mappings/spacing.d.ts +6 -0
  30. package/dist/mappings/spacing.d.ts.map +1 -0
  31. package/dist/mappings/spacing.js +41 -0
  32. package/dist/mappings/spacing.js.map +1 -0
  33. package/dist/mappings/visual.d.ts +8 -0
  34. package/dist/mappings/visual.d.ts.map +1 -0
  35. package/dist/mappings/visual.js +43 -0
  36. package/dist/mappings/visual.js.map +1 -0
  37. package/dist/parser.d.ts +4 -0
  38. package/dist/parser.d.ts.map +1 -0
  39. package/dist/parser.js +13 -0
  40. package/dist/parser.js.map +1 -0
  41. package/dist/resolver.d.ts +4 -0
  42. package/dist/resolver.d.ts.map +1 -0
  43. package/dist/resolver.js +152 -0
  44. package/dist/resolver.js.map +1 -0
  45. package/dist/spacing.d.ts +5 -0
  46. package/dist/spacing.d.ts.map +1 -0
  47. package/dist/spacing.js +49 -0
  48. package/dist/spacing.js.map +1 -0
  49. package/package.json +40 -0
@@ -0,0 +1,5 @@
1
+ /** Tailwind v3 default color palette. */
2
+ export declare const colors: Record<string, string>;
3
+ /** Resolve a color: palette lookup or arbitrary hex/rgb value. */
4
+ export declare function resolveColor(value: string): string | undefined;
5
+ //# sourceMappingURL=colors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"colors.d.ts","sourceRoot":"","sources":["../src/colors.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,eAAO,MAAM,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAwIzC,CAAA;AAED,kEAAkE;AAClE,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAE9D"}
package/dist/colors.js ADDED
@@ -0,0 +1,121 @@
1
+ /** Tailwind v3 default color palette. */
2
+ export const colors = {
3
+ 'black': '#000000',
4
+ 'white': '#ffffff',
5
+ 'transparent': 'transparent',
6
+ // Slate
7
+ 'slate-50': '#f8fafc', 'slate-100': '#f1f5f9', 'slate-200': '#e2e8f0',
8
+ 'slate-300': '#cbd5e1', 'slate-400': '#94a3b8', 'slate-500': '#64748b',
9
+ 'slate-600': '#475569', 'slate-700': '#334155', 'slate-800': '#1e293b',
10
+ 'slate-900': '#0f172a', 'slate-950': '#020617',
11
+ // Gray
12
+ 'gray-50': '#f9fafb', 'gray-100': '#f3f4f6', 'gray-200': '#e5e7eb',
13
+ 'gray-300': '#d1d5db', 'gray-400': '#9ca3af', 'gray-500': '#6b7280',
14
+ 'gray-600': '#4b5563', 'gray-700': '#374151', 'gray-800': '#1f2937',
15
+ 'gray-900': '#111827', 'gray-950': '#030712',
16
+ // Zinc
17
+ 'zinc-50': '#fafafa', 'zinc-100': '#f4f4f5', 'zinc-200': '#e4e4e7',
18
+ 'zinc-300': '#d4d4d8', 'zinc-400': '#a1a1aa', 'zinc-500': '#71717a',
19
+ 'zinc-600': '#52525b', 'zinc-700': '#3f3f46', 'zinc-800': '#27272a',
20
+ 'zinc-900': '#18181b', 'zinc-950': '#09090b',
21
+ // Neutral
22
+ 'neutral-50': '#fafafa', 'neutral-100': '#f5f5f5', 'neutral-200': '#e5e5e5',
23
+ 'neutral-300': '#d4d4d4', 'neutral-400': '#a3a3a3', 'neutral-500': '#737373',
24
+ 'neutral-600': '#525252', 'neutral-700': '#404040', 'neutral-800': '#262626',
25
+ 'neutral-900': '#171717', 'neutral-950': '#0a0a0a',
26
+ // Stone
27
+ 'stone-50': '#fafaf9', 'stone-100': '#f5f5f4', 'stone-200': '#e7e5e4',
28
+ 'stone-300': '#d6d3d1', 'stone-400': '#a8a29e', 'stone-500': '#78716c',
29
+ 'stone-600': '#57534e', 'stone-700': '#44403c', 'stone-800': '#292524',
30
+ 'stone-900': '#1c1917', 'stone-950': '#0c0a09',
31
+ // Red
32
+ 'red-50': '#fef2f2', 'red-100': '#fee2e2', 'red-200': '#fecaca',
33
+ 'red-300': '#fca5a5', 'red-400': '#f87171', 'red-500': '#ef4444',
34
+ 'red-600': '#dc2626', 'red-700': '#b91c1c', 'red-800': '#991b1b',
35
+ 'red-900': '#7f1d1d', 'red-950': '#450a0a',
36
+ // Orange
37
+ 'orange-50': '#fff7ed', 'orange-100': '#ffedd5', 'orange-200': '#fed7aa',
38
+ 'orange-300': '#fdba74', 'orange-400': '#fb923c', 'orange-500': '#f97316',
39
+ 'orange-600': '#ea580c', 'orange-700': '#c2410c', 'orange-800': '#9a3412',
40
+ 'orange-900': '#7c2d12', 'orange-950': '#431407',
41
+ // Amber
42
+ 'amber-50': '#fffbeb', 'amber-100': '#fef3c7', 'amber-200': '#fde68a',
43
+ 'amber-300': '#fcd34d', 'amber-400': '#fbbf24', 'amber-500': '#f59e0b',
44
+ 'amber-600': '#d97706', 'amber-700': '#b45309', 'amber-800': '#92400e',
45
+ 'amber-900': '#78350f', 'amber-950': '#451a03',
46
+ // Yellow
47
+ 'yellow-50': '#fefce8', 'yellow-100': '#fef9c3', 'yellow-200': '#fef08a',
48
+ 'yellow-300': '#fde047', 'yellow-400': '#facc15', 'yellow-500': '#eab308',
49
+ 'yellow-600': '#ca8a04', 'yellow-700': '#a16207', 'yellow-800': '#854d0e',
50
+ 'yellow-900': '#713f12', 'yellow-950': '#422006',
51
+ // Lime
52
+ 'lime-50': '#f7fee7', 'lime-100': '#ecfccb', 'lime-200': '#d9f99d',
53
+ 'lime-300': '#bef264', 'lime-400': '#a3e635', 'lime-500': '#84cc16',
54
+ 'lime-600': '#65a30d', 'lime-700': '#4d7c0f', 'lime-800': '#3f6212',
55
+ 'lime-900': '#365314', 'lime-950': '#1a2e05',
56
+ // Green
57
+ 'green-50': '#f0fdf4', 'green-100': '#dcfce7', 'green-200': '#bbf7d0',
58
+ 'green-300': '#86efac', 'green-400': '#4ade80', 'green-500': '#22c55e',
59
+ 'green-600': '#16a34a', 'green-700': '#15803d', 'green-800': '#166534',
60
+ 'green-900': '#14532d', 'green-950': '#052e16',
61
+ // Emerald
62
+ 'emerald-50': '#ecfdf5', 'emerald-100': '#d1fae5', 'emerald-200': '#a7f3d0',
63
+ 'emerald-300': '#6ee7b7', 'emerald-400': '#34d399', 'emerald-500': '#10b981',
64
+ 'emerald-600': '#059669', 'emerald-700': '#047857', 'emerald-800': '#065f46',
65
+ 'emerald-900': '#064e3b', 'emerald-950': '#022c22',
66
+ // Teal
67
+ 'teal-50': '#f0fdfa', 'teal-100': '#ccfbf1', 'teal-200': '#99f6e4',
68
+ 'teal-300': '#5eead4', 'teal-400': '#2dd4bf', 'teal-500': '#14b8a6',
69
+ 'teal-600': '#0d9488', 'teal-700': '#0f766e', 'teal-800': '#115e59',
70
+ 'teal-900': '#134e4a', 'teal-950': '#042f2e',
71
+ // Cyan
72
+ 'cyan-50': '#ecfeff', 'cyan-100': '#cffafe', 'cyan-200': '#a5f3fc',
73
+ 'cyan-300': '#67e8f9', 'cyan-400': '#22d3ee', 'cyan-500': '#06b6d4',
74
+ 'cyan-600': '#0891b2', 'cyan-700': '#0e7490', 'cyan-800': '#155e75',
75
+ 'cyan-900': '#164e63', 'cyan-950': '#083344',
76
+ // Sky
77
+ 'sky-50': '#f0f9ff', 'sky-100': '#e0f2fe', 'sky-200': '#bae6fd',
78
+ 'sky-300': '#7dd3fc', 'sky-400': '#38bdf8', 'sky-500': '#0ea5e9',
79
+ 'sky-600': '#0284c7', 'sky-700': '#0369a1', 'sky-800': '#075985',
80
+ 'sky-900': '#0c4a6e', 'sky-950': '#082f49',
81
+ // Blue
82
+ 'blue-50': '#eff6ff', 'blue-100': '#dbeafe', 'blue-200': '#bfdbfe',
83
+ 'blue-300': '#93c5fd', 'blue-400': '#60a5fa', 'blue-500': '#3b82f6',
84
+ 'blue-600': '#2563eb', 'blue-700': '#1d4ed8', 'blue-800': '#1e40af',
85
+ 'blue-900': '#1e3a8a', 'blue-950': '#172554',
86
+ // Indigo
87
+ 'indigo-50': '#eef2ff', 'indigo-100': '#e0e7ff', 'indigo-200': '#c7d2fe',
88
+ 'indigo-300': '#a5b4fc', 'indigo-400': '#818cf8', 'indigo-500': '#6366f1',
89
+ 'indigo-600': '#4f46e5', 'indigo-700': '#4338ca', 'indigo-800': '#3730a3',
90
+ 'indigo-900': '#312e81', 'indigo-950': '#1e1b4b',
91
+ // Violet
92
+ 'violet-50': '#f5f3ff', 'violet-100': '#ede9fe', 'violet-200': '#ddd6fe',
93
+ 'violet-300': '#c4b5fd', 'violet-400': '#a78bfa', 'violet-500': '#8b5cf6',
94
+ 'violet-600': '#7c3aed', 'violet-700': '#6d28d9', 'violet-800': '#5b21b6',
95
+ 'violet-900': '#4c1d95', 'violet-950': '#2e1065',
96
+ // Purple
97
+ 'purple-50': '#faf5ff', 'purple-100': '#f3e8ff', 'purple-200': '#e9d5ff',
98
+ 'purple-300': '#d8b4fe', 'purple-400': '#c084fc', 'purple-500': '#a855f7',
99
+ 'purple-600': '#9333ea', 'purple-700': '#7e22ce', 'purple-800': '#6b21a8',
100
+ 'purple-900': '#581c87', 'purple-950': '#3b0764',
101
+ // Fuchsia
102
+ 'fuchsia-50': '#fdf4ff', 'fuchsia-100': '#fae8ff', 'fuchsia-200': '#f5d0fe',
103
+ 'fuchsia-300': '#f0abfc', 'fuchsia-400': '#e879f9', 'fuchsia-500': '#d946ef',
104
+ 'fuchsia-600': '#c026d3', 'fuchsia-700': '#a21caf', 'fuchsia-800': '#86198f',
105
+ 'fuchsia-900': '#701a75', 'fuchsia-950': '#4a044e',
106
+ // Pink
107
+ 'pink-50': '#fdf2f8', 'pink-100': '#fce7f3', 'pink-200': '#fbcfe8',
108
+ 'pink-300': '#f9a8d4', 'pink-400': '#f472b6', 'pink-500': '#ec4899',
109
+ 'pink-600': '#db2777', 'pink-700': '#be185d', 'pink-800': '#9d174d',
110
+ 'pink-900': '#831843', 'pink-950': '#500724',
111
+ // Rose
112
+ 'rose-50': '#fff1f2', 'rose-100': '#ffe4e6', 'rose-200': '#fecdd3',
113
+ 'rose-300': '#fda4af', 'rose-400': '#fb7185', 'rose-500': '#f43f5e',
114
+ 'rose-600': '#e11d48', 'rose-700': '#be123c', 'rose-800': '#9f1239',
115
+ 'rose-900': '#881337', 'rose-950': '#4c0519',
116
+ };
117
+ /** Resolve a color: palette lookup or arbitrary hex/rgb value. */
118
+ export function resolveColor(value) {
119
+ return colors[value] ?? undefined;
120
+ }
121
+ //# sourceMappingURL=colors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"colors.js","sourceRoot":"","sources":["../src/colors.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import type { FlexProps } from 'textura';
2
+ import type { StyleProps } from '@geometra/core';
3
+ /** Combined flex layout + visual style props returned by `tw()`. */
4
+ export type TwResult = FlexProps & StyleProps;
5
+ /**
6
+ * Convert Tailwind-style utility classes to Geometra props.
7
+ *
8
+ * ```ts
9
+ * box(tw("flex-row items-center p-4 bg-blue-500 rounded-lg"), children)
10
+ * ```
11
+ *
12
+ * Accepts one or more class strings. Last class wins on conflicts.
13
+ * Unknown classes are silently ignored.
14
+ */
15
+ export declare function tw(...classes: string[]): TwResult;
16
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AACxC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAGhD,oEAAoE;AACpE,MAAM,MAAM,QAAQ,GAAG,SAAS,GAAG,UAAU,CAAA;AAE7C;;;;;;;;;GASG;AACH,wBAAgB,EAAE,CAAC,GAAG,OAAO,EAAE,MAAM,EAAE,GAAG,QAAQ,CAEjD"}
package/dist/index.js ADDED
@@ -0,0 +1,15 @@
1
+ import { parseClasses } from './parser.js';
2
+ /**
3
+ * Convert Tailwind-style utility classes to Geometra props.
4
+ *
5
+ * ```ts
6
+ * box(tw("flex-row items-center p-4 bg-blue-500 rounded-lg"), children)
7
+ * ```
8
+ *
9
+ * Accepts one or more class strings. Last class wins on conflicts.
10
+ * Unknown classes are silently ignored.
11
+ */
12
+ export function tw(...classes) {
13
+ return parseClasses(classes.join(' '));
14
+ }
15
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAK1C;;;;;;;;;GASG;AACH,MAAM,UAAU,EAAE,CAAC,GAAG,OAAiB;IACrC,OAAO,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;AACxC,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { TwResult } from '../index.js';
2
+ /** Static border utility classes. */
3
+ export declare const borderMap: Record<string, Partial<TwResult>>;
4
+ /** Resolve border prefix classes like border-t-2, border-red-500. */
5
+ export declare function resolveBorderPrefix(prefix: string, value: string): Partial<TwResult> | undefined;
6
+ /** Border prefixes for detection, longest first. */
7
+ export declare const borderPrefixes: readonly ["border-t", "border-r", "border-b", "border-l", "border", "rounded"];
8
+ //# sourceMappingURL=borders.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"borders.d.ts","sourceRoot":"","sources":["../../src/mappings/borders.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAG3C,qCAAqC;AACrC,eAAO,MAAM,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,CAgBvD,CAAA;AAED,qEAAqE;AACrE,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,SAAS,CAsBhG;AAED,oDAAoD;AACpD,eAAO,MAAM,cAAc,gFAAiF,CAAA"}
@@ -0,0 +1,46 @@
1
+ import { resolveColor } from '../colors.js';
2
+ /** Static border utility classes. */
3
+ export const borderMap = {
4
+ 'border': { borderWidth: 1 },
5
+ 'border-0': { borderWidth: 0 },
6
+ 'border-2': { borderWidth: 2 },
7
+ 'border-4': { borderWidth: 4 },
8
+ 'border-8': { borderWidth: 8 },
9
+ 'rounded-none': { borderRadius: 0 },
10
+ 'rounded-sm': { borderRadius: 2 },
11
+ 'rounded': { borderRadius: 4 },
12
+ 'rounded-md': { borderRadius: 6 },
13
+ 'rounded-lg': { borderRadius: 8 },
14
+ 'rounded-xl': { borderRadius: 12 },
15
+ 'rounded-2xl': { borderRadius: 16 },
16
+ 'rounded-3xl': { borderRadius: 24 },
17
+ 'rounded-full': { borderRadius: 9999 },
18
+ };
19
+ /** Resolve border prefix classes like border-t-2, border-red-500. */
20
+ export function resolveBorderPrefix(prefix, value) {
21
+ // border-{color-shade} e.g. border-red-500
22
+ if (prefix === 'border') {
23
+ const color = resolveColor(value);
24
+ if (color)
25
+ return { borderColor: color };
26
+ // Try as directional border width
27
+ const num = parseFloat(value);
28
+ if (!Number.isNaN(num))
29
+ return { borderWidth: num };
30
+ return undefined;
31
+ }
32
+ const num = parseFloat(value);
33
+ if (Number.isNaN(num))
34
+ return undefined;
35
+ switch (prefix) {
36
+ case 'border-t': return { borderTop: num };
37
+ case 'border-r': return { borderRight: num };
38
+ case 'border-b': return { borderBottom: num };
39
+ case 'border-l': return { borderLeft: num };
40
+ case 'rounded': return { borderRadius: num };
41
+ default: return undefined;
42
+ }
43
+ }
44
+ /** Border prefixes for detection, longest first. */
45
+ export const borderPrefixes = ['border-t', 'border-r', 'border-b', 'border-l', 'border', 'rounded'];
46
+ //# sourceMappingURL=borders.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"borders.js","sourceRoot":"","sources":["../../src/mappings/borders.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAE3C,qCAAqC;AACrC,MAAM,CAAC,MAAM,SAAS,GAAsC;IAC1D,QAAQ,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE;IAC5B,UAAU,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE;IAC9B,UAAU,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE;IAC9B,UAAU,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE;IAC9B,UAAU,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE;IAE9B,cAAc,EAAE,EAAE,YAAY,EAAE,CAAC,EAAE;IACnC,YAAY,EAAE,EAAE,YAAY,EAAE,CAAC,EAAE;IACjC,SAAS,EAAE,EAAE,YAAY,EAAE,CAAC,EAAE;IAC9B,YAAY,EAAE,EAAE,YAAY,EAAE,CAAC,EAAE;IACjC,YAAY,EAAE,EAAE,YAAY,EAAE,CAAC,EAAE;IACjC,YAAY,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE;IAClC,aAAa,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE;IACnC,aAAa,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE;IACnC,cAAc,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE;CACvC,CAAA;AAED,qEAAqE;AACrE,MAAM,UAAU,mBAAmB,CAAC,MAAc,EAAE,KAAa;IAC/D,2CAA2C;IAC3C,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;QACxB,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,CAAA;QACjC,IAAI,KAAK;YAAE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,CAAA;QACxC,kCAAkC;QAClC,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,CAAA;QAC7B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC;YAAE,OAAO,EAAE,WAAW,EAAE,GAAG,EAAE,CAAA;QACnD,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,CAAA;IAC7B,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC;QAAE,OAAO,SAAS,CAAA;IAEvC,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,UAAU,CAAC,CAAC,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,CAAA;QAC1C,KAAK,UAAU,CAAC,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,EAAE,CAAA;QAC5C,KAAK,UAAU,CAAC,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,EAAE,CAAA;QAC7C,KAAK,UAAU,CAAC,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,CAAA;QAC3C,KAAK,SAAS,CAAC,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,EAAE,CAAA;QAC5C,OAAO,CAAC,CAAC,OAAO,SAAS,CAAA;IAC3B,CAAC;AACH,CAAC;AAED,oDAAoD;AACpD,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,CAAU,CAAA"}
@@ -0,0 +1,4 @@
1
+ import type { TwResult } from '../index.js';
2
+ /** Box shadow presets. */
3
+ export declare const effectsMap: Record<string, Partial<TwResult>>;
4
+ //# sourceMappingURL=effects.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"effects.d.ts","sourceRoot":"","sources":["../../src/mappings/effects.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAE3C,0BAA0B;AAC1B,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,CAQxD,CAAA"}
@@ -0,0 +1,11 @@
1
+ /** Box shadow presets. */
2
+ export const effectsMap = {
3
+ 'shadow-sm': { boxShadow: { offsetX: 0, offsetY: 1, blur: 2, color: 'rgba(0,0,0,0.05)' } },
4
+ 'shadow': { boxShadow: { offsetX: 0, offsetY: 1, blur: 3, color: 'rgba(0,0,0,0.1)' } },
5
+ 'shadow-md': { boxShadow: { offsetX: 0, offsetY: 4, blur: 6, color: 'rgba(0,0,0,0.1)' } },
6
+ 'shadow-lg': { boxShadow: { offsetX: 0, offsetY: 10, blur: 15, color: 'rgba(0,0,0,0.1)' } },
7
+ 'shadow-xl': { boxShadow: { offsetX: 0, offsetY: 20, blur: 25, color: 'rgba(0,0,0,0.1)' } },
8
+ 'shadow-2xl': { boxShadow: { offsetX: 0, offsetY: 25, blur: 50, color: 'rgba(0,0,0,0.25)' } },
9
+ 'shadow-none': { boxShadow: { offsetX: 0, offsetY: 0, blur: 0, color: 'rgba(0,0,0,0)' } },
10
+ };
11
+ //# sourceMappingURL=effects.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"effects.js","sourceRoot":"","sources":["../../src/mappings/effects.ts"],"names":[],"mappings":"AAEA,0BAA0B;AAC1B,MAAM,CAAC,MAAM,UAAU,GAAsC;IAC3D,WAAW,EAAE,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,kBAAkB,EAAE,EAAE;IAC1F,QAAQ,EAAE,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,iBAAiB,EAAE,EAAE;IACtF,WAAW,EAAE,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,iBAAiB,EAAE,EAAE;IACzF,WAAW,EAAE,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,EAAE;IAC3F,WAAW,EAAE,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,EAAE;IAC3F,YAAY,EAAE,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,kBAAkB,EAAE,EAAE;IAC7F,aAAa,EAAE,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,eAAe,EAAE,EAAE;CAC1F,CAAA"}
@@ -0,0 +1,6 @@
1
+ import type { TwResult } from '../index.js';
2
+ /** Static flex alignment and sizing classes. */
3
+ export declare const flexMap: Record<string, Partial<TwResult>>;
4
+ /** Dynamic flex prefix handlers. */
5
+ export declare function resolveFlexPrefix(prefix: string, value: string): Partial<TwResult> | undefined;
6
+ //# sourceMappingURL=flex.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flex.d.ts","sourceRoot":"","sources":["../../src/mappings/flex.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAG3C,gDAAgD;AAChD,eAAO,MAAM,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,CAuCrD,CAAA;AAED,oCAAoC;AACpC,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,SAAS,CAS9F"}
@@ -0,0 +1,49 @@
1
+ import { resolveSpacing } from '../spacing.js';
2
+ /** Static flex alignment and sizing classes. */
3
+ export const flexMap = {
4
+ 'justify-start': { justifyContent: 'flex-start' },
5
+ 'justify-center': { justifyContent: 'center' },
6
+ 'justify-end': { justifyContent: 'flex-end' },
7
+ 'justify-between': { justifyContent: 'space-between' },
8
+ 'justify-around': { justifyContent: 'space-around' },
9
+ 'justify-evenly': { justifyContent: 'space-evenly' },
10
+ 'items-start': { alignItems: 'flex-start' },
11
+ 'items-center': { alignItems: 'center' },
12
+ 'items-end': { alignItems: 'flex-end' },
13
+ 'items-stretch': { alignItems: 'stretch' },
14
+ 'items-baseline': { alignItems: 'baseline' },
15
+ 'self-auto': { alignSelf: 'auto' },
16
+ 'self-start': { alignSelf: 'flex-start' },
17
+ 'self-center': { alignSelf: 'center' },
18
+ 'self-end': { alignSelf: 'flex-end' },
19
+ 'self-stretch': { alignSelf: 'stretch' },
20
+ 'self-baseline': { alignSelf: 'baseline' },
21
+ 'content-start': { alignContent: 'flex-start' },
22
+ 'content-center': { alignContent: 'center' },
23
+ 'content-end': { alignContent: 'flex-end' },
24
+ 'content-stretch': { alignContent: 'stretch' },
25
+ 'content-between': { alignContent: 'space-between' },
26
+ 'content-around': { alignContent: 'space-around' },
27
+ 'content-evenly': { alignContent: 'space-evenly' },
28
+ 'grow': { flexGrow: 1 },
29
+ 'grow-0': { flexGrow: 0 },
30
+ 'shrink': { flexShrink: 1 },
31
+ 'shrink-0': { flexShrink: 0 },
32
+ 'basis-auto': { flexBasis: 'auto' },
33
+ 'flex-1': { flexGrow: 1, flexShrink: 1, flexBasis: 0 },
34
+ 'flex-auto': { flexGrow: 1, flexShrink: 1, flexBasis: 'auto' },
35
+ 'flex-initial': { flexGrow: 0, flexShrink: 1, flexBasis: 'auto' },
36
+ 'flex-none': { flexGrow: 0, flexShrink: 0, flexBasis: 'auto' },
37
+ };
38
+ /** Dynamic flex prefix handlers. */
39
+ export function resolveFlexPrefix(prefix, value) {
40
+ const px = resolveSpacing(value);
41
+ switch (prefix) {
42
+ case 'gap': return px !== undefined ? { gap: px } : undefined;
43
+ case 'gap-x': return px !== undefined ? { columnGap: px } : undefined;
44
+ case 'gap-y': return px !== undefined ? { rowGap: px } : undefined;
45
+ case 'basis': return px !== undefined ? { flexBasis: px } : undefined;
46
+ default: return undefined;
47
+ }
48
+ }
49
+ //# sourceMappingURL=flex.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flex.js","sourceRoot":"","sources":["../../src/mappings/flex.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAE9C,gDAAgD;AAChD,MAAM,CAAC,MAAM,OAAO,GAAsC;IACxD,eAAe,EAAE,EAAE,cAAc,EAAE,YAAY,EAAE;IACjD,gBAAgB,EAAE,EAAE,cAAc,EAAE,QAAQ,EAAE;IAC9C,aAAa,EAAE,EAAE,cAAc,EAAE,UAAU,EAAE;IAC7C,iBAAiB,EAAE,EAAE,cAAc,EAAE,eAAe,EAAE;IACtD,gBAAgB,EAAE,EAAE,cAAc,EAAE,cAAc,EAAE;IACpD,gBAAgB,EAAE,EAAE,cAAc,EAAE,cAAc,EAAE;IAEpD,aAAa,EAAE,EAAE,UAAU,EAAE,YAAY,EAAE;IAC3C,cAAc,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE;IACxC,WAAW,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE;IACvC,eAAe,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE;IAC1C,gBAAgB,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE;IAE5C,WAAW,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE;IAClC,YAAY,EAAE,EAAE,SAAS,EAAE,YAAY,EAAE;IACzC,aAAa,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE;IACtC,UAAU,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE;IACrC,cAAc,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE;IACxC,eAAe,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE;IAE1C,eAAe,EAAE,EAAE,YAAY,EAAE,YAAY,EAAE;IAC/C,gBAAgB,EAAE,EAAE,YAAY,EAAE,QAAQ,EAAE;IAC5C,aAAa,EAAE,EAAE,YAAY,EAAE,UAAU,EAAE;IAC3C,iBAAiB,EAAE,EAAE,YAAY,EAAE,SAAS,EAAE;IAC9C,iBAAiB,EAAE,EAAE,YAAY,EAAE,eAAe,EAAE;IACpD,gBAAgB,EAAE,EAAE,YAAY,EAAE,cAAc,EAAE;IAClD,gBAAgB,EAAE,EAAE,YAAY,EAAE,cAAc,EAAE;IAElD,MAAM,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE;IACvB,QAAQ,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE;IACzB,QAAQ,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE;IAC3B,UAAU,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE;IAC7B,YAAY,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE;IAEnC,QAAQ,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE;IACtD,WAAW,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE;IAC9D,cAAc,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE;IACjE,WAAW,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE;CAC/D,CAAA;AAED,oCAAoC;AACpC,MAAM,UAAU,iBAAiB,CAAC,MAAc,EAAE,KAAa;IAC7D,MAAM,EAAE,GAAG,cAAc,CAAC,KAAK,CAAC,CAAA;IAChC,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,KAAK,CAAC,CAAC,OAAO,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAA;QAC7D,KAAK,OAAO,CAAC,CAAC,OAAO,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAA;QACrE,KAAK,OAAO,CAAC,CAAC,OAAO,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAA;QAClE,KAAK,OAAO,CAAC,CAAC,OAAO,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAA;QACrE,OAAO,CAAC,CAAC,OAAO,SAAS,CAAA;IAC3B,CAAC;AACH,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { TwResult } from '../index.js';
2
+ /** Static layout utility classes. */
3
+ export declare const layoutMap: Record<string, Partial<TwResult>>;
4
+ //# sourceMappingURL=layout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layout.d.ts","sourceRoot":"","sources":["../../src/mappings/layout.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAE3C,qCAAqC;AACrC,eAAO,MAAM,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,CAsBvD,CAAA"}
@@ -0,0 +1,20 @@
1
+ /** Static layout utility classes. */
2
+ export const layoutMap = {
3
+ 'flex-row': { flexDirection: 'row' },
4
+ 'flex-col': { flexDirection: 'column' },
5
+ 'flex-row-reverse': { flexDirection: 'row-reverse' },
6
+ 'flex-col-reverse': { flexDirection: 'column-reverse' },
7
+ 'flex-wrap': { flexWrap: 'wrap' },
8
+ 'flex-nowrap': { flexWrap: 'nowrap' },
9
+ 'flex-wrap-reverse': { flexWrap: 'wrap-reverse' },
10
+ 'relative': { position: 'relative' },
11
+ 'absolute': { position: 'absolute' },
12
+ 'hidden': { display: 'none' },
13
+ 'flex': { display: 'flex' },
14
+ 'overflow-visible': { overflow: 'visible' },
15
+ 'overflow-hidden': { overflow: 'hidden' },
16
+ 'overflow-scroll': { overflow: 'scroll' },
17
+ 'ltr': { dir: 'ltr' },
18
+ 'rtl': { dir: 'rtl' },
19
+ };
20
+ //# sourceMappingURL=layout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layout.js","sourceRoot":"","sources":["../../src/mappings/layout.ts"],"names":[],"mappings":"AAEA,qCAAqC;AACrC,MAAM,CAAC,MAAM,SAAS,GAAsC;IAC1D,UAAU,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE;IACpC,UAAU,EAAE,EAAE,aAAa,EAAE,QAAQ,EAAE;IACvC,kBAAkB,EAAE,EAAE,aAAa,EAAE,aAAa,EAAE;IACpD,kBAAkB,EAAE,EAAE,aAAa,EAAE,gBAAgB,EAAE;IAEvD,WAAW,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE;IACjC,aAAa,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE;IACrC,mBAAmB,EAAE,EAAE,QAAQ,EAAE,cAAc,EAAE;IAEjD,UAAU,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE;IACpC,UAAU,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE;IAEpC,QAAQ,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE;IAC7B,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE;IAE3B,kBAAkB,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE;IAC3C,iBAAiB,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE;IACzC,iBAAiB,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE;IAEzC,KAAK,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE;IACrB,KAAK,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE;CACtB,CAAA"}
@@ -0,0 +1,8 @@
1
+ import type { TwResult } from '../index.js';
2
+ /** Static sizing classes. */
3
+ export declare const sizingMap: Record<string, Partial<TwResult>>;
4
+ /** Resolve sizing/position prefix classes like w-16, min-h-0, top-4, inset-2. */
5
+ export declare function resolveSizingPrefix(prefix: string, value: string, negative: boolean): Partial<TwResult> | undefined;
6
+ /** All sizing prefixes for prefix detection, longest first. */
7
+ export declare const sizingPrefixes: readonly ["min-w", "max-w", "min-h", "max-h", "inset", "top", "right", "bottom", "left", "aspect", "w", "h"];
8
+ //# sourceMappingURL=sizing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sizing.d.ts","sourceRoot":"","sources":["../../src/mappings/sizing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAG3C,6BAA6B;AAC7B,eAAO,MAAM,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,CAKvD,CAAA;AAED,iFAAiF;AACjF,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,SAAS,CAuBnH;AAED,+DAA+D;AAC/D,eAAO,MAAM,cAAc,8GAA+G,CAAA"}
@@ -0,0 +1,36 @@
1
+ import { resolveSpacing } from '../spacing.js';
2
+ /** Static sizing classes. */
3
+ export const sizingMap = {
4
+ 'w-auto': { width: 'auto' },
5
+ 'h-auto': { height: 'auto' },
6
+ 'aspect-square': { aspectRatio: 1 },
7
+ 'aspect-video': { aspectRatio: 16 / 9 },
8
+ };
9
+ /** Resolve sizing/position prefix classes like w-16, min-h-0, top-4, inset-2. */
10
+ export function resolveSizingPrefix(prefix, value, negative) {
11
+ const px = resolveSpacing(value);
12
+ if (px === undefined)
13
+ return undefined;
14
+ const v = negative ? -px : px;
15
+ switch (prefix) {
16
+ case 'w': return { width: v };
17
+ case 'h': return { height: v };
18
+ case 'min-w': return { minWidth: v };
19
+ case 'max-w': return { maxWidth: v };
20
+ case 'min-h': return { minHeight: v };
21
+ case 'max-h': return { maxHeight: v };
22
+ case 'top': return { top: v };
23
+ case 'right': return { right: v };
24
+ case 'bottom': return { bottom: v };
25
+ case 'left': return { left: v };
26
+ case 'inset': return { top: v, right: v, bottom: v, left: v };
27
+ case 'aspect': {
28
+ const num = parseFloat(value);
29
+ return !Number.isNaN(num) ? { aspectRatio: num } : undefined;
30
+ }
31
+ default: return undefined;
32
+ }
33
+ }
34
+ /** All sizing prefixes for prefix detection, longest first. */
35
+ export const sizingPrefixes = ['min-w', 'max-w', 'min-h', 'max-h', 'inset', 'top', 'right', 'bottom', 'left', 'aspect', 'w', 'h'];
36
+ //# sourceMappingURL=sizing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sizing.js","sourceRoot":"","sources":["../../src/mappings/sizing.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAE9C,6BAA6B;AAC7B,MAAM,CAAC,MAAM,SAAS,GAAsC;IAC1D,QAAQ,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;IAC3B,QAAQ,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE;IAC5B,eAAe,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE;IACnC,cAAc,EAAE,EAAE,WAAW,EAAE,EAAE,GAAG,CAAC,EAAE;CACxC,CAAA;AAED,iFAAiF;AACjF,MAAM,UAAU,mBAAmB,CAAC,MAAc,EAAE,KAAa,EAAE,QAAiB;IAClF,MAAM,EAAE,GAAG,cAAc,CAAC,KAAK,CAAC,CAAA;IAChC,IAAI,EAAE,KAAK,SAAS;QAAE,OAAO,SAAS,CAAA;IACtC,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;IAE7B,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,GAAG,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,CAAA;QAC7B,KAAK,GAAG,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,CAAA;QAC9B,KAAK,OAAO,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAA;QACpC,KAAK,OAAO,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAA;QACpC,KAAK,OAAO,CAAC,CAAC,OAAO,EAAE,SAAS,EAAE,CAAC,EAAE,CAAA;QACrC,KAAK,OAAO,CAAC,CAAC,OAAO,EAAE,SAAS,EAAE,CAAC,EAAE,CAAA;QACrC,KAAK,KAAK,CAAC,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE,CAAA;QAC7B,KAAK,OAAO,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,CAAA;QACjC,KAAK,QAAQ,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,CAAA;QACnC,KAAK,MAAM,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,CAAA;QAC/B,KAAK,OAAO,CAAC,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAA;QAC7D,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,CAAA;YAC7B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,SAAS,CAAA;QAC9D,CAAC;QACD,OAAO,CAAC,CAAC,OAAO,SAAS,CAAA;IAC3B,CAAC;AACH,CAAC;AAED,+DAA+D;AAC/D,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,CAAU,CAAA"}
@@ -0,0 +1,6 @@
1
+ import type { TwResult } from '../index.js';
2
+ /** Resolve padding/margin prefix classes like p-4, mx-auto, -mt-2. */
3
+ export declare function resolveSpacingPrefix(prefix: string, value: string, negative: boolean): Partial<TwResult> | undefined;
4
+ /** All spacing prefixes for prefix detection. */
5
+ export declare const spacingPrefixes: readonly ["px", "py", "pt", "pr", "pb", "pl", "mx", "my", "mt", "mr", "mb", "ml", "p", "m"];
6
+ //# sourceMappingURL=spacing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spacing.d.ts","sourceRoot":"","sources":["../../src/mappings/spacing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAG3C,sEAAsE;AACtE,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,SAAS,CAoCpH;AAED,iDAAiD;AACjD,eAAO,MAAM,eAAe,6FAA8F,CAAA"}
@@ -0,0 +1,41 @@
1
+ import { resolveSpacing } from '../spacing.js';
2
+ /** Resolve padding/margin prefix classes like p-4, mx-auto, -mt-2. */
3
+ export function resolveSpacingPrefix(prefix, value, negative) {
4
+ // Handle margin auto
5
+ if (value === 'auto') {
6
+ switch (prefix) {
7
+ case 'm': return { margin: 'auto' };
8
+ case 'mx': return { marginLeft: 'auto', marginRight: 'auto' };
9
+ case 'my': return { marginTop: 'auto', marginBottom: 'auto' };
10
+ case 'mt': return { marginTop: 'auto' };
11
+ case 'mr': return { marginRight: 'auto' };
12
+ case 'mb': return { marginBottom: 'auto' };
13
+ case 'ml': return { marginLeft: 'auto' };
14
+ default: return undefined;
15
+ }
16
+ }
17
+ const px = resolveSpacing(value);
18
+ if (px === undefined)
19
+ return undefined;
20
+ const v = negative ? -px : px;
21
+ switch (prefix) {
22
+ case 'p': return { padding: v };
23
+ case 'px': return { paddingHorizontal: v };
24
+ case 'py': return { paddingVertical: v };
25
+ case 'pt': return { paddingTop: v };
26
+ case 'pr': return { paddingRight: v };
27
+ case 'pb': return { paddingBottom: v };
28
+ case 'pl': return { paddingLeft: v };
29
+ case 'm': return { margin: v };
30
+ case 'mx': return { marginHorizontal: v };
31
+ case 'my': return { marginVertical: v };
32
+ case 'mt': return { marginTop: v };
33
+ case 'mr': return { marginRight: v };
34
+ case 'mb': return { marginBottom: v };
35
+ case 'ml': return { marginLeft: v };
36
+ default: return undefined;
37
+ }
38
+ }
39
+ /** All spacing prefixes for prefix detection. */
40
+ export const spacingPrefixes = ['px', 'py', 'pt', 'pr', 'pb', 'pl', 'mx', 'my', 'mt', 'mr', 'mb', 'ml', 'p', 'm'];
41
+ //# sourceMappingURL=spacing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spacing.js","sourceRoot":"","sources":["../../src/mappings/spacing.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAE9C,sEAAsE;AACtE,MAAM,UAAU,oBAAoB,CAAC,MAAc,EAAE,KAAa,EAAE,QAAiB;IACnF,qBAAqB;IACrB,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;QACrB,QAAQ,MAAM,EAAE,CAAC;YACf,KAAK,GAAG,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAA;YACnC,KAAK,IAAI,CAAC,CAAC,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,CAAA;YAC7D,KAAK,IAAI,CAAC,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,CAAA;YAC7D,KAAK,IAAI,CAAC,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,CAAA;YACvC,KAAK,IAAI,CAAC,CAAC,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,CAAA;YACzC,KAAK,IAAI,CAAC,CAAC,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,CAAA;YAC1C,KAAK,IAAI,CAAC,CAAC,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,CAAA;YACxC,OAAO,CAAC,CAAC,OAAO,SAAS,CAAA;QAC3B,CAAC;IACH,CAAC;IAED,MAAM,EAAE,GAAG,cAAc,CAAC,KAAK,CAAC,CAAA;IAChC,IAAI,EAAE,KAAK,SAAS;QAAE,OAAO,SAAS,CAAA;IACtC,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;IAE7B,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,GAAG,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAA;QAC/B,KAAK,IAAI,CAAC,CAAC,OAAO,EAAE,iBAAiB,EAAE,CAAC,EAAE,CAAA;QAC1C,KAAK,IAAI,CAAC,CAAC,OAAO,EAAE,eAAe,EAAE,CAAC,EAAE,CAAA;QACxC,KAAK,IAAI,CAAC,CAAC,OAAO,EAAE,UAAU,EAAE,CAAC,EAAE,CAAA;QACnC,KAAK,IAAI,CAAC,CAAC,OAAO,EAAE,YAAY,EAAE,CAAC,EAAE,CAAA;QACrC,KAAK,IAAI,CAAC,CAAC,OAAO,EAAE,aAAa,EAAE,CAAC,EAAE,CAAA;QACtC,KAAK,IAAI,CAAC,CAAC,OAAO,EAAE,WAAW,EAAE,CAAC,EAAE,CAAA;QACpC,KAAK,GAAG,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,CAAA;QAC9B,KAAK,IAAI,CAAC,CAAC,OAAO,EAAE,gBAAgB,EAAE,CAAC,EAAE,CAAA;QACzC,KAAK,IAAI,CAAC,CAAC,OAAO,EAAE,cAAc,EAAE,CAAC,EAAE,CAAA;QACvC,KAAK,IAAI,CAAC,CAAC,OAAO,EAAE,SAAS,EAAE,CAAC,EAAE,CAAA;QAClC,KAAK,IAAI,CAAC,CAAC,OAAO,EAAE,WAAW,EAAE,CAAC,EAAE,CAAA;QACpC,KAAK,IAAI,CAAC,CAAC,OAAO,EAAE,YAAY,EAAE,CAAC,EAAE,CAAA;QACrC,KAAK,IAAI,CAAC,CAAC,OAAO,EAAE,UAAU,EAAE,CAAC,EAAE,CAAA;QACnC,OAAO,CAAC,CAAC,OAAO,SAAS,CAAA;IAC3B,CAAC;AACH,CAAC;AAED,iDAAiD;AACjD,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,CAAU,CAAA"}
@@ -0,0 +1,8 @@
1
+ import type { TwResult } from '../index.js';
2
+ /** Static visual utility classes. */
3
+ export declare const visualMap: Record<string, Partial<TwResult>>;
4
+ /** Resolve visual prefix classes: bg-{color}, text-{color}, opacity-{n}, z-{n}. */
5
+ export declare function resolveVisualPrefix(prefix: string, value: string): Partial<TwResult> | undefined;
6
+ /** Visual prefixes for detection. */
7
+ export declare const visualPrefixes: readonly ["bg", "text", "opacity", "z"];
8
+ //# sourceMappingURL=visual.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"visual.d.ts","sourceRoot":"","sources":["../../src/mappings/visual.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAG3C,qCAAqC;AACrC,eAAO,MAAM,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,CAgBvD,CAAA;AAED,mFAAmF;AACnF,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,SAAS,CAoBhG;AAED,qCAAqC;AACrC,eAAO,MAAM,cAAc,yCAA0C,CAAA"}
@@ -0,0 +1,43 @@
1
+ import { resolveColor } from '../colors.js';
2
+ /** Static visual utility classes. */
3
+ export const visualMap = {
4
+ 'cursor-default': { cursor: 'default' },
5
+ 'cursor-pointer': { cursor: 'pointer' },
6
+ 'cursor-grab': { cursor: 'grab' },
7
+ 'cursor-grabbing': { cursor: 'grabbing' },
8
+ 'cursor-text': { cursor: 'text' },
9
+ 'cursor-not-allowed': { cursor: 'not-allowed' },
10
+ 'cursor-crosshair': { cursor: 'crosshair' },
11
+ 'cursor-move': { cursor: 'move' },
12
+ 'cursor-help': { cursor: 'help' },
13
+ 'cursor-cell': { cursor: 'cell' },
14
+ 'cursor-zoom-in': { cursor: 'zoom-in' },
15
+ 'cursor-zoom-out': { cursor: 'zoom-out' },
16
+ 'pointer-events-none': { pointerEvents: 'none' },
17
+ 'pointer-events-auto': { pointerEvents: 'auto' },
18
+ };
19
+ /** Resolve visual prefix classes: bg-{color}, text-{color}, opacity-{n}, z-{n}. */
20
+ export function resolveVisualPrefix(prefix, value) {
21
+ switch (prefix) {
22
+ case 'bg': {
23
+ const color = resolveColor(value);
24
+ return color ? { backgroundColor: color } : undefined;
25
+ }
26
+ case 'text': {
27
+ const color = resolveColor(value);
28
+ return color ? { color } : undefined;
29
+ }
30
+ case 'opacity': {
31
+ const num = parseFloat(value);
32
+ return !Number.isNaN(num) ? { opacity: num / 100 } : undefined;
33
+ }
34
+ case 'z': {
35
+ const num = parseFloat(value);
36
+ return !Number.isNaN(num) ? { zIndex: num } : undefined;
37
+ }
38
+ default: return undefined;
39
+ }
40
+ }
41
+ /** Visual prefixes for detection. */
42
+ export const visualPrefixes = ['bg', 'text', 'opacity', 'z'];
43
+ //# sourceMappingURL=visual.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"visual.js","sourceRoot":"","sources":["../../src/mappings/visual.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAE3C,qCAAqC;AACrC,MAAM,CAAC,MAAM,SAAS,GAAsC;IAC1D,gBAAgB,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE;IACvC,gBAAgB,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE;IACvC,aAAa,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE;IACjC,iBAAiB,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE;IACzC,aAAa,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE;IACjC,oBAAoB,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE;IAC/C,kBAAkB,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE;IAC3C,aAAa,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE;IACjC,aAAa,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE;IACjC,aAAa,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE;IACjC,gBAAgB,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE;IACvC,iBAAiB,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE;IAEzC,qBAAqB,EAAE,EAAE,aAAa,EAAE,MAAM,EAAE;IAChD,qBAAqB,EAAE,EAAE,aAAa,EAAE,MAAM,EAAE;CACjD,CAAA;AAED,mFAAmF;AACnF,MAAM,UAAU,mBAAmB,CAAC,MAAc,EAAE,KAAa;IAC/D,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,IAAI,CAAC,CAAC,CAAC;YACV,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,CAAA;YACjC,OAAO,KAAK,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAA;QACvD,CAAC;QACD,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,CAAA;YACjC,OAAO,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAA;QACtC,CAAC;QACD,KAAK,SAAS,CAAC,CAAC,CAAC;YACf,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,CAAA;YAC7B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,SAAS,CAAA;QAChE,CAAC;QACD,KAAK,GAAG,CAAC,CAAC,CAAC;YACT,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,CAAA;YAC7B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,SAAS,CAAA;QACzD,CAAC;QACD,OAAO,CAAC,CAAC,OAAO,SAAS,CAAA;IAC3B,CAAC;AACH,CAAC;AAED,qCAAqC;AACrC,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,CAAU,CAAA"}
@@ -0,0 +1,4 @@
1
+ import type { TwResult } from './index.js';
2
+ /** Parse a class string into tokens and resolve each to props. */
3
+ export declare function parseClasses(input: string): TwResult;
4
+ //# sourceMappingURL=parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAG1C,kEAAkE;AAClE,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,CAQpD"}
package/dist/parser.js ADDED
@@ -0,0 +1,13 @@
1
+ import { resolveToken } from './resolver.js';
2
+ /** Parse a class string into tokens and resolve each to props. */
3
+ export function parseClasses(input) {
4
+ const tokens = input.split(/\s+/).filter(Boolean);
5
+ const result = {};
6
+ for (const token of tokens) {
7
+ const resolved = resolveToken(token);
8
+ if (resolved)
9
+ Object.assign(result, resolved);
10
+ }
11
+ return result;
12
+ }
13
+ //# sourceMappingURL=parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.js","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAE5C,kEAAkE;AAClE,MAAM,UAAU,YAAY,CAAC,KAAa;IACxC,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;IACjD,MAAM,MAAM,GAA4B,EAAE,CAAA;IAC1C,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,QAAQ,GAAG,YAAY,CAAC,KAAK,CAAC,CAAA;QACpC,IAAI,QAAQ;YAAE,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;IAC/C,CAAC;IACD,OAAO,MAAkB,CAAA;AAC3B,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { TwResult } from './index.js';
2
+ /** Resolve a single class token to props. Returns undefined for unknown tokens. */
3
+ export declare function resolveToken(token: string): Partial<TwResult> | undefined;
4
+ //# sourceMappingURL=resolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../src/resolver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAgD1C,mFAAmF;AACnF,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,SAAS,CA6CzE"}
@@ -0,0 +1,152 @@
1
+ import { layoutMap } from './mappings/layout.js';
2
+ import { flexMap, resolveFlexPrefix } from './mappings/flex.js';
3
+ import { resolveSpacingPrefix, spacingPrefixes } from './mappings/spacing.js';
4
+ import { sizingMap, resolveSizingPrefix, sizingPrefixes } from './mappings/sizing.js';
5
+ import { borderMap, resolveBorderPrefix, borderPrefixes } from './mappings/borders.js';
6
+ import { visualMap, resolveVisualPrefix, visualPrefixes } from './mappings/visual.js';
7
+ import { effectsMap } from './mappings/effects.js';
8
+ import { resolveColor } from './colors.js';
9
+ /** Merged static class map (built once at module load). */
10
+ const staticMap = {
11
+ ...layoutMap,
12
+ ...flexMap,
13
+ ...sizingMap,
14
+ ...borderMap,
15
+ ...visualMap,
16
+ ...effectsMap,
17
+ };
18
+ const dynamicPrefixes = [
19
+ // Spacing
20
+ ...spacingPrefixes.map((p) => [p, 'spacing']),
21
+ // Sizing
22
+ ...sizingPrefixes.map((p) => [p, 'sizing']),
23
+ // Flex
24
+ ...['gap', 'gap-x', 'gap-y', 'basis'].map((p) => [p, 'flex']),
25
+ // Borders
26
+ ...borderPrefixes.map((p) => [p, 'border']),
27
+ // Visual
28
+ ...visualPrefixes.map((p) => [p, 'visual']),
29
+ ].sort((a, b) => b[0].length - a[0].length);
30
+ /** Extract an arbitrary value from brackets: "w-[200]" → "200", "bg-[#ff00ff]" → "#ff00ff". */
31
+ function extractArbitrary(token) {
32
+ const openBracket = token.indexOf('[');
33
+ if (openBracket === -1 || !token.endsWith(']'))
34
+ return undefined;
35
+ const base = token.slice(0, openBracket - 1); // strip trailing dash before [
36
+ const arbitrary = token.slice(openBracket + 1, -1);
37
+ return { base, arbitrary };
38
+ }
39
+ /** Resolve a single class token to props. Returns undefined for unknown tokens. */
40
+ export function resolveToken(token) {
41
+ // Handle negative prefix: -mt-4 → prefix=mt, value=4, negative=true
42
+ let negative = false;
43
+ let normalizedToken = token;
44
+ if (token.startsWith('-')) {
45
+ negative = true;
46
+ normalizedToken = token.slice(1);
47
+ }
48
+ // Check static map first (use original token for non-negative, normalized for negative)
49
+ if (!negative) {
50
+ const staticResult = staticMap[token];
51
+ if (staticResult)
52
+ return staticResult;
53
+ }
54
+ // Check for arbitrary value: w-[200], bg-[#ff00ff]
55
+ const arb = extractArbitrary(normalizedToken);
56
+ if (arb) {
57
+ return resolveArbitrary(arb.base, arb.arbitrary, negative);
58
+ }
59
+ // Dynamic prefix matching: find the longest matching prefix
60
+ for (const [prefix, category] of dynamicPrefixes) {
61
+ if (!normalizedToken.startsWith(prefix + '-'))
62
+ continue;
63
+ const value = normalizedToken.slice(prefix.length + 1);
64
+ if (!value)
65
+ continue;
66
+ // For border prefix, the value might be a compound color like "red-500"
67
+ if (prefix === 'border') {
68
+ const fullColorValue = normalizedToken.slice(prefix.length + 1);
69
+ const color = resolveColor(fullColorValue);
70
+ if (color)
71
+ return { borderColor: color };
72
+ }
73
+ // For bg/text prefix, the value might be a compound color like "blue-500"
74
+ if (prefix === 'bg' || prefix === 'text') {
75
+ const fullColorValue = normalizedToken.slice(prefix.length + 1);
76
+ return dispatchPrefix(prefix, category, fullColorValue, negative, fullColorValue);
77
+ }
78
+ const result = dispatchPrefix(prefix, category, value, negative, value);
79
+ if (result)
80
+ return result;
81
+ }
82
+ return undefined;
83
+ }
84
+ function dispatchPrefix(prefix, category, value, negative, rawValue) {
85
+ switch (category) {
86
+ case 'spacing': return resolveSpacingPrefix(prefix, value, negative);
87
+ case 'sizing': return resolveSizingPrefix(prefix, value, negative);
88
+ case 'flex': return resolveFlexPrefix(prefix, value);
89
+ case 'border': return resolveBorderPrefix(prefix, rawValue);
90
+ case 'visual': return resolveVisualPrefix(prefix, rawValue);
91
+ }
92
+ }
93
+ /**
94
+ * Resolve an arbitrary value like w-[200] or bg-[#ff00ff].
95
+ * Arbitrary values bypass the spacing scale and color palette — they're used directly.
96
+ */
97
+ function resolveArbitrary(base, raw, negative) {
98
+ const num = parseFloat(raw);
99
+ const hasNum = !Number.isNaN(num);
100
+ const v = hasNum ? (negative ? -num : num) : undefined;
101
+ switch (base) {
102
+ // Sizing
103
+ case 'w': return v !== undefined ? { width: v } : undefined;
104
+ case 'h': return v !== undefined ? { height: v } : undefined;
105
+ case 'min-w': return v !== undefined ? { minWidth: v } : undefined;
106
+ case 'max-w': return v !== undefined ? { maxWidth: v } : undefined;
107
+ case 'min-h': return v !== undefined ? { minHeight: v } : undefined;
108
+ case 'max-h': return v !== undefined ? { maxHeight: v } : undefined;
109
+ // Spacing
110
+ case 'p': return v !== undefined ? { padding: v } : undefined;
111
+ case 'px': return v !== undefined ? { paddingHorizontal: v } : undefined;
112
+ case 'py': return v !== undefined ? { paddingVertical: v } : undefined;
113
+ case 'pt': return v !== undefined ? { paddingTop: v } : undefined;
114
+ case 'pr': return v !== undefined ? { paddingRight: v } : undefined;
115
+ case 'pb': return v !== undefined ? { paddingBottom: v } : undefined;
116
+ case 'pl': return v !== undefined ? { paddingLeft: v } : undefined;
117
+ case 'm': return v !== undefined ? { margin: v } : undefined;
118
+ case 'mx': return v !== undefined ? { marginHorizontal: v } : undefined;
119
+ case 'my': return v !== undefined ? { marginVertical: v } : undefined;
120
+ case 'mt': return v !== undefined ? { marginTop: v } : undefined;
121
+ case 'mr': return v !== undefined ? { marginRight: v } : undefined;
122
+ case 'mb': return v !== undefined ? { marginBottom: v } : undefined;
123
+ case 'ml': return v !== undefined ? { marginLeft: v } : undefined;
124
+ // Flex
125
+ case 'gap': return v !== undefined ? { gap: v } : undefined;
126
+ case 'gap-x': return v !== undefined ? { columnGap: v } : undefined;
127
+ case 'gap-y': return v !== undefined ? { rowGap: v } : undefined;
128
+ case 'basis': return v !== undefined ? { flexBasis: v } : undefined;
129
+ // Position
130
+ case 'top': return v !== undefined ? { top: v } : undefined;
131
+ case 'right': return v !== undefined ? { right: v } : undefined;
132
+ case 'bottom': return v !== undefined ? { bottom: v } : undefined;
133
+ case 'left': return v !== undefined ? { left: v } : undefined;
134
+ case 'inset': return v !== undefined ? { top: v, right: v, bottom: v, left: v } : undefined;
135
+ // Borders
136
+ case 'border': return v !== undefined ? { borderWidth: v } : { borderColor: raw };
137
+ case 'border-t': return v !== undefined ? { borderTop: v } : undefined;
138
+ case 'border-r': return v !== undefined ? { borderRight: v } : undefined;
139
+ case 'border-b': return v !== undefined ? { borderBottom: v } : undefined;
140
+ case 'border-l': return v !== undefined ? { borderLeft: v } : undefined;
141
+ case 'rounded': return v !== undefined ? { borderRadius: v } : undefined;
142
+ // Visual — colors pass through directly
143
+ case 'bg': return { backgroundColor: raw };
144
+ case 'text': return { color: raw };
145
+ case 'opacity': return v !== undefined ? { opacity: v / 100 } : undefined;
146
+ case 'z': return v !== undefined ? { zIndex: v } : undefined;
147
+ // Aspect
148
+ case 'aspect': return v !== undefined ? { aspectRatio: v } : undefined;
149
+ default: return undefined;
150
+ }
151
+ }
152
+ //# sourceMappingURL=resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolver.js","sourceRoot":"","sources":["../src/resolver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /** Tailwind spacing scale: key → pixel value. 1 unit = 4px. */
2
+ export declare const spacingScale: Record<string, number>;
3
+ /** Resolve a spacing value: scale lookup, arbitrary `[n]`, or raw number. */
4
+ export declare function resolveSpacing(value: string): number | undefined;
5
+ //# sourceMappingURL=spacing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spacing.d.ts","sourceRoot":"","sources":["../src/spacing.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAoC/C,CAAA;AAED,6EAA6E;AAC7E,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAMhE"}
@@ -0,0 +1,49 @@
1
+ /** Tailwind spacing scale: key → pixel value. 1 unit = 4px. */
2
+ export const spacingScale = {
3
+ '0': 0,
4
+ 'px': 1,
5
+ '0.5': 2,
6
+ '1': 4,
7
+ '1.5': 6,
8
+ '2': 8,
9
+ '2.5': 10,
10
+ '3': 12,
11
+ '3.5': 14,
12
+ '4': 16,
13
+ '5': 20,
14
+ '6': 24,
15
+ '7': 28,
16
+ '8': 32,
17
+ '9': 36,
18
+ '10': 40,
19
+ '11': 44,
20
+ '12': 48,
21
+ '14': 56,
22
+ '16': 64,
23
+ '20': 80,
24
+ '24': 96,
25
+ '28': 112,
26
+ '32': 128,
27
+ '36': 144,
28
+ '40': 160,
29
+ '44': 176,
30
+ '48': 192,
31
+ '52': 208,
32
+ '56': 224,
33
+ '60': 240,
34
+ '64': 256,
35
+ '72': 288,
36
+ '80': 320,
37
+ '96': 384,
38
+ };
39
+ /** Resolve a spacing value: scale lookup, arbitrary `[n]`, or raw number. */
40
+ export function resolveSpacing(value) {
41
+ const scaled = spacingScale[value];
42
+ if (scaled !== undefined)
43
+ return scaled;
44
+ const num = parseFloat(value);
45
+ if (!Number.isNaN(num))
46
+ return num;
47
+ return undefined;
48
+ }
49
+ //# sourceMappingURL=spacing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spacing.js","sourceRoot":"","sources":["../src/spacing.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,MAAM,CAAC,MAAM,YAAY,GAA2B;IAClD,GAAG,EAAE,CAAC;IACN,IAAI,EAAE,CAAC;IACP,KAAK,EAAE,CAAC;IACR,GAAG,EAAE,CAAC;IACN,KAAK,EAAE,CAAC;IACR,GAAG,EAAE,CAAC;IACN,KAAK,EAAE,EAAE;IACT,GAAG,EAAE,EAAE;IACP,KAAK,EAAE,EAAE;IACT,GAAG,EAAE,EAAE;IACP,GAAG,EAAE,EAAE;IACP,GAAG,EAAE,EAAE;IACP,GAAG,EAAE,EAAE;IACP,GAAG,EAAE,EAAE;IACP,GAAG,EAAE,EAAE;IACP,IAAI,EAAE,EAAE;IACR,IAAI,EAAE,EAAE;IACR,IAAI,EAAE,EAAE;IACR,IAAI,EAAE,EAAE;IACR,IAAI,EAAE,EAAE;IACR,IAAI,EAAE,EAAE;IACR,IAAI,EAAE,EAAE;IACR,IAAI,EAAE,GAAG;IACT,IAAI,EAAE,GAAG;IACT,IAAI,EAAE,GAAG;IACT,IAAI,EAAE,GAAG;IACT,IAAI,EAAE,GAAG;IACT,IAAI,EAAE,GAAG;IACT,IAAI,EAAE,GAAG;IACT,IAAI,EAAE,GAAG;IACT,IAAI,EAAE,GAAG;IACT,IAAI,EAAE,GAAG;IACT,IAAI,EAAE,GAAG;IACT,IAAI,EAAE,GAAG;IACT,IAAI,EAAE,GAAG;CACV,CAAA;AAED,6EAA6E;AAC7E,MAAM,UAAU,cAAc,CAAC,KAAa;IAC1C,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,CAAA;IAClC,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,MAAM,CAAA;IACvC,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,CAAA;IAC7B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC;QAAE,OAAO,GAAG,CAAA;IAClC,OAAO,SAAS,CAAA;AAClB,CAAC"}
package/package.json ADDED
@@ -0,0 +1,40 @@
1
+ {
2
+ "name": "@geometra/tw",
3
+ "version": "1.9.0",
4
+ "description": "Tailwind-style utility classes for Geometra",
5
+ "license": "MIT",
6
+ "type": "module",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "https://github.com/razroo/geometra",
10
+ "directory": "packages/tw"
11
+ },
12
+ "homepage": "https://razroo.github.io/geometra",
13
+ "keywords": [
14
+ "tailwind",
15
+ "utility",
16
+ "geometra",
17
+ "dom-free",
18
+ "canvas",
19
+ "styling"
20
+ ],
21
+ "main": "./dist/index.js",
22
+ "types": "./dist/index.d.ts",
23
+ "exports": {
24
+ ".": {
25
+ "types": "./dist/index.d.ts",
26
+ "import": "./dist/index.js"
27
+ }
28
+ },
29
+ "files": [
30
+ "dist"
31
+ ],
32
+ "scripts": {
33
+ "build": "rm -rf dist && tsc -p tsconfig.build.json",
34
+ "check": "tsc --noEmit"
35
+ },
36
+ "dependencies": {
37
+ "@geometra/core": "^1.9.0",
38
+ "textura": "^1.9.0"
39
+ }
40
+ }