@mgcrea/react-native-tailwind 0.6.1 → 0.8.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 (100) hide show
  1. package/README.md +406 -1
  2. package/dist/babel/config-loader.ts +1 -23
  3. package/dist/babel/index.cjs +516 -211
  4. package/dist/babel/index.d.ts +4 -15
  5. package/dist/babel/index.test.ts +481 -0
  6. package/dist/babel/index.ts +4 -861
  7. package/dist/babel/plugin.d.ts +42 -0
  8. package/dist/babel/plugin.test.ts +482 -0
  9. package/dist/babel/plugin.ts +491 -0
  10. package/dist/babel/utils/attributeMatchers.d.ts +23 -0
  11. package/dist/babel/utils/attributeMatchers.ts +71 -0
  12. package/dist/babel/utils/componentSupport.d.ts +18 -0
  13. package/dist/babel/utils/componentSupport.ts +68 -0
  14. package/dist/babel/utils/dynamicProcessing.d.ts +32 -0
  15. package/dist/babel/utils/dynamicProcessing.ts +223 -0
  16. package/dist/babel/utils/modifierProcessing.d.ts +26 -0
  17. package/dist/babel/utils/modifierProcessing.ts +118 -0
  18. package/dist/babel/utils/styleInjection.d.ts +15 -0
  19. package/dist/babel/utils/styleInjection.ts +80 -0
  20. package/dist/babel/utils/styleTransforms.d.ts +39 -0
  21. package/dist/babel/utils/styleTransforms.test.ts +349 -0
  22. package/dist/babel/utils/styleTransforms.ts +258 -0
  23. package/dist/babel/utils/twProcessing.d.ts +28 -0
  24. package/dist/babel/utils/twProcessing.ts +124 -0
  25. package/dist/components/TextInput.d.ts +171 -14
  26. package/dist/config/tailwind.d.ts +302 -0
  27. package/dist/config/tailwind.js +1 -0
  28. package/dist/index.d.ts +6 -2
  29. package/dist/index.js +1 -1
  30. package/dist/parser/__snapshots__/colors.test.js.snap +242 -90
  31. package/dist/parser/__snapshots__/transforms.test.js.snap +58 -0
  32. package/dist/parser/colors.js +1 -1
  33. package/dist/parser/index.d.ts +1 -0
  34. package/dist/parser/index.js +1 -1
  35. package/dist/parser/modifiers.d.ts +2 -2
  36. package/dist/parser/modifiers.js +1 -1
  37. package/dist/parser/placeholder.d.ts +36 -0
  38. package/dist/parser/placeholder.js +1 -0
  39. package/dist/parser/placeholder.test.js +1 -0
  40. package/dist/parser/typography.d.ts +1 -0
  41. package/dist/parser/typography.js +1 -1
  42. package/dist/parser/typography.test.js +1 -1
  43. package/dist/runtime.cjs +2 -0
  44. package/dist/runtime.cjs.map +7 -0
  45. package/dist/runtime.d.ts +126 -0
  46. package/dist/runtime.js +2 -0
  47. package/dist/runtime.js.map +7 -0
  48. package/dist/runtime.test.js +1 -0
  49. package/dist/stubs/tw.d.ts +47 -0
  50. package/dist/stubs/tw.js +1 -0
  51. package/dist/types/core.d.ts +40 -0
  52. package/dist/types/core.js +0 -0
  53. package/dist/types/index.d.ts +2 -0
  54. package/dist/types/index.js +1 -0
  55. package/dist/types/runtime.d.ts +15 -0
  56. package/dist/types/runtime.js +1 -0
  57. package/dist/types/util.d.ts +3 -0
  58. package/dist/types/util.js +0 -0
  59. package/dist/utils/flattenColors.d.ts +16 -0
  60. package/dist/utils/flattenColors.js +1 -0
  61. package/dist/utils/flattenColors.test.js +1 -0
  62. package/dist/utils/modifiers.d.ts +29 -0
  63. package/dist/utils/modifiers.js +1 -0
  64. package/dist/utils/modifiers.test.js +1 -0
  65. package/dist/utils/styleKey.test.js +1 -0
  66. package/package.json +15 -3
  67. package/src/babel/config-loader.ts +1 -23
  68. package/src/babel/index.ts +4 -861
  69. package/src/babel/plugin.test.ts +482 -0
  70. package/src/babel/plugin.ts +491 -0
  71. package/src/babel/utils/attributeMatchers.ts +71 -0
  72. package/src/babel/utils/componentSupport.ts +68 -0
  73. package/src/babel/utils/dynamicProcessing.ts +223 -0
  74. package/src/babel/utils/modifierProcessing.ts +118 -0
  75. package/src/babel/utils/styleInjection.ts +80 -0
  76. package/src/babel/utils/styleTransforms.test.ts +349 -0
  77. package/src/babel/utils/styleTransforms.ts +258 -0
  78. package/src/babel/utils/twProcessing.ts +124 -0
  79. package/src/components/TextInput.tsx +17 -14
  80. package/src/config/{palettes.ts → tailwind.ts} +2 -2
  81. package/src/index.ts +9 -1
  82. package/src/parser/colors.ts +9 -23
  83. package/src/parser/index.ts +1 -0
  84. package/src/parser/modifiers.ts +10 -4
  85. package/src/parser/placeholder.test.ts +105 -0
  86. package/src/parser/placeholder.ts +78 -0
  87. package/src/parser/typography.test.ts +11 -0
  88. package/src/parser/typography.ts +20 -2
  89. package/src/runtime.test.ts +325 -0
  90. package/src/runtime.ts +265 -0
  91. package/src/stubs/tw.ts +65 -0
  92. package/src/{types.ts → types/core.ts} +0 -4
  93. package/src/types/index.ts +2 -0
  94. package/src/types/runtime.ts +17 -0
  95. package/src/types/util.ts +1 -0
  96. package/src/utils/flattenColors.test.ts +361 -0
  97. package/src/utils/flattenColors.ts +32 -0
  98. package/src/utils/modifiers.test.ts +286 -0
  99. package/src/utils/modifiers.ts +63 -0
  100. package/src/utils/styleKey.test.ts +168 -0
package/dist/index.d.ts CHANGED
@@ -2,10 +2,13 @@
2
2
  * @mgcrea/react-native-tailwind
3
3
  * Compile-time Tailwind CSS for React Native
4
4
  */
5
+ export { tw, twStyle } from "./stubs/tw";
5
6
  export { parseClass, parseClassName } from "./parser";
7
+ export { flattenColors } from "./utils/flattenColors";
6
8
  export { generateStyleKey } from "./utils/styleKey";
7
- export type { RNStyle, StyleObject } from "./types";
8
- export { parseAspectRatio, parseBorder, parseColor, parseLayout, parseShadow, parseSizing, parseSpacing, parseTypography, } from "./parser";
9
+ export type { StyleObject } from "./types/core";
10
+ export type { NativeStyle, TwStyle } from "./types/runtime";
11
+ export { parseAspectRatio, parseBorder, parseColor, parseLayout, parsePlaceholderClass, parsePlaceholderClasses, parseShadow, parseSizing, parseSpacing, parseTypography, } from "./parser";
9
12
  export { ASPECT_RATIO_PRESETS } from "./parser/aspectRatio";
10
13
  export { COLORS } from "./parser/colors";
11
14
  export { INSET_SCALE, Z_INDEX_SCALE } from "./parser/layout";
@@ -17,3 +20,4 @@ export { Pressable } from "./components/Pressable";
17
20
  export type { PressableProps } from "./components/Pressable";
18
21
  export { TextInput } from "./components/TextInput";
19
22
  export type { TextInputProps } from "./components/TextInput";
23
+ export { TAILWIND_COLORS } from "./config/tailwind";
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- Object.defineProperty(exports,"__esModule",{value:true});Object.defineProperty(exports,"ASPECT_RATIO_PRESETS",{enumerable:true,get:function get(){return _aspectRatio.ASPECT_RATIO_PRESETS;}});Object.defineProperty(exports,"COLORS",{enumerable:true,get:function get(){return _colors.COLORS;}});Object.defineProperty(exports,"FONT_SIZES",{enumerable:true,get:function get(){return _typography.FONT_SIZES;}});Object.defineProperty(exports,"INSET_SCALE",{enumerable:true,get:function get(){return _layout.INSET_SCALE;}});Object.defineProperty(exports,"LETTER_SPACING_SCALE",{enumerable:true,get:function get(){return _typography.LETTER_SPACING_SCALE;}});Object.defineProperty(exports,"Pressable",{enumerable:true,get:function get(){return _Pressable.Pressable;}});Object.defineProperty(exports,"SHADOW_SCALE",{enumerable:true,get:function get(){return _shadows.SHADOW_SCALE;}});Object.defineProperty(exports,"SIZE_PERCENTAGES",{enumerable:true,get:function get(){return _sizing.SIZE_PERCENTAGES;}});Object.defineProperty(exports,"SIZE_SCALE",{enumerable:true,get:function get(){return _sizing.SIZE_SCALE;}});Object.defineProperty(exports,"SPACING_SCALE",{enumerable:true,get:function get(){return _spacing.SPACING_SCALE;}});Object.defineProperty(exports,"TextInput",{enumerable:true,get:function get(){return _TextInput.TextInput;}});Object.defineProperty(exports,"Z_INDEX_SCALE",{enumerable:true,get:function get(){return _layout.Z_INDEX_SCALE;}});Object.defineProperty(exports,"generateStyleKey",{enumerable:true,get:function get(){return _styleKey.generateStyleKey;}});Object.defineProperty(exports,"parseAspectRatio",{enumerable:true,get:function get(){return _parser.parseAspectRatio;}});Object.defineProperty(exports,"parseBorder",{enumerable:true,get:function get(){return _parser.parseBorder;}});Object.defineProperty(exports,"parseClass",{enumerable:true,get:function get(){return _parser.parseClass;}});Object.defineProperty(exports,"parseClassName",{enumerable:true,get:function get(){return _parser.parseClassName;}});Object.defineProperty(exports,"parseColor",{enumerable:true,get:function get(){return _parser.parseColor;}});Object.defineProperty(exports,"parseLayout",{enumerable:true,get:function get(){return _parser.parseLayout;}});Object.defineProperty(exports,"parseShadow",{enumerable:true,get:function get(){return _parser.parseShadow;}});Object.defineProperty(exports,"parseSizing",{enumerable:true,get:function get(){return _parser.parseSizing;}});Object.defineProperty(exports,"parseSpacing",{enumerable:true,get:function get(){return _parser.parseSpacing;}});Object.defineProperty(exports,"parseTypography",{enumerable:true,get:function get(){return _parser.parseTypography;}});var _parser=require("./parser");var _styleKey=require("./utils/styleKey");var _aspectRatio=require("./parser/aspectRatio");var _colors=require("./parser/colors");var _layout=require("./parser/layout");var _shadows=require("./parser/shadows");var _sizing=require("./parser/sizing");var _spacing=require("./parser/spacing");var _typography=require("./parser/typography");var _Pressable=require("./components/Pressable");var _TextInput=require("./components/TextInput");
1
+ Object.defineProperty(exports,"__esModule",{value:true});Object.defineProperty(exports,"ASPECT_RATIO_PRESETS",{enumerable:true,get:function get(){return _aspectRatio.ASPECT_RATIO_PRESETS;}});Object.defineProperty(exports,"COLORS",{enumerable:true,get:function get(){return _colors.COLORS;}});Object.defineProperty(exports,"FONT_SIZES",{enumerable:true,get:function get(){return _typography.FONT_SIZES;}});Object.defineProperty(exports,"INSET_SCALE",{enumerable:true,get:function get(){return _layout.INSET_SCALE;}});Object.defineProperty(exports,"LETTER_SPACING_SCALE",{enumerable:true,get:function get(){return _typography.LETTER_SPACING_SCALE;}});Object.defineProperty(exports,"Pressable",{enumerable:true,get:function get(){return _Pressable.Pressable;}});Object.defineProperty(exports,"SHADOW_SCALE",{enumerable:true,get:function get(){return _shadows.SHADOW_SCALE;}});Object.defineProperty(exports,"SIZE_PERCENTAGES",{enumerable:true,get:function get(){return _sizing.SIZE_PERCENTAGES;}});Object.defineProperty(exports,"SIZE_SCALE",{enumerable:true,get:function get(){return _sizing.SIZE_SCALE;}});Object.defineProperty(exports,"SPACING_SCALE",{enumerable:true,get:function get(){return _spacing.SPACING_SCALE;}});Object.defineProperty(exports,"TAILWIND_COLORS",{enumerable:true,get:function get(){return _tailwind.TAILWIND_COLORS;}});Object.defineProperty(exports,"TextInput",{enumerable:true,get:function get(){return _TextInput.TextInput;}});Object.defineProperty(exports,"Z_INDEX_SCALE",{enumerable:true,get:function get(){return _layout.Z_INDEX_SCALE;}});Object.defineProperty(exports,"flattenColors",{enumerable:true,get:function get(){return _flattenColors.flattenColors;}});Object.defineProperty(exports,"generateStyleKey",{enumerable:true,get:function get(){return _styleKey.generateStyleKey;}});Object.defineProperty(exports,"parseAspectRatio",{enumerable:true,get:function get(){return _parser.parseAspectRatio;}});Object.defineProperty(exports,"parseBorder",{enumerable:true,get:function get(){return _parser.parseBorder;}});Object.defineProperty(exports,"parseClass",{enumerable:true,get:function get(){return _parser.parseClass;}});Object.defineProperty(exports,"parseClassName",{enumerable:true,get:function get(){return _parser.parseClassName;}});Object.defineProperty(exports,"parseColor",{enumerable:true,get:function get(){return _parser.parseColor;}});Object.defineProperty(exports,"parseLayout",{enumerable:true,get:function get(){return _parser.parseLayout;}});Object.defineProperty(exports,"parsePlaceholderClass",{enumerable:true,get:function get(){return _parser.parsePlaceholderClass;}});Object.defineProperty(exports,"parsePlaceholderClasses",{enumerable:true,get:function get(){return _parser.parsePlaceholderClasses;}});Object.defineProperty(exports,"parseShadow",{enumerable:true,get:function get(){return _parser.parseShadow;}});Object.defineProperty(exports,"parseSizing",{enumerable:true,get:function get(){return _parser.parseSizing;}});Object.defineProperty(exports,"parseSpacing",{enumerable:true,get:function get(){return _parser.parseSpacing;}});Object.defineProperty(exports,"parseTypography",{enumerable:true,get:function get(){return _parser.parseTypography;}});Object.defineProperty(exports,"tw",{enumerable:true,get:function get(){return _tw.tw;}});Object.defineProperty(exports,"twStyle",{enumerable:true,get:function get(){return _tw.twStyle;}});var _tw=require("./stubs/tw");var _parser=require("./parser");var _flattenColors=require("./utils/flattenColors");var _styleKey=require("./utils/styleKey");var _aspectRatio=require("./parser/aspectRatio");var _colors=require("./parser/colors");var _layout=require("./parser/layout");var _shadows=require("./parser/shadows");var _sizing=require("./parser/sizing");var _spacing=require("./parser/spacing");var _typography=require("./parser/typography");var _Pressable=require("./components/Pressable");var _TextInput=require("./components/TextInput");var _tailwind=require("./config/tailwind");
@@ -2,98 +2,250 @@
2
2
 
3
3
  exports[`COLORS should export complete color palette 1`] = `
4
4
  {
5
+ "amber-100": "#fef3c6",
6
+ "amber-200": "#fee685",
7
+ "amber-300": "#ffd230",
8
+ "amber-400": "#ffb900",
9
+ "amber-50": "#fffbeb",
10
+ "amber-500": "#fe9a00",
11
+ "amber-600": "#e17100",
12
+ "amber-700": "#bb4d00",
13
+ "amber-800": "#973c00",
14
+ "amber-900": "#7b3306",
15
+ "amber-950": "#461901",
5
16
  "black": "#000000",
6
- "blue-100": "#DBEAFE",
7
- "blue-200": "#BFDBFE",
8
- "blue-300": "#93C5FD",
9
- "blue-400": "#60A5FA",
10
- "blue-50": "#EFF6FF",
11
- "blue-500": "#3B82F6",
12
- "blue-600": "#2563EB",
13
- "blue-700": "#1D4ED8",
14
- "blue-800": "#1E40AF",
15
- "blue-900": "#1E3A8A",
16
- "gray-100": "#F3F4F6",
17
- "gray-200": "#E5E7EB",
18
- "gray-300": "#D1D5DB",
19
- "gray-400": "#9CA3AF",
20
- "gray-50": "#F9FAFB",
21
- "gray-500": "#6B7280",
22
- "gray-600": "#4B5563",
23
- "gray-700": "#374151",
24
- "gray-800": "#1F2937",
25
- "gray-900": "#111827",
26
- "green-100": "#DCFCE7",
27
- "green-200": "#BBF7D0",
28
- "green-300": "#86EFAC",
29
- "green-400": "#4ADE80",
30
- "green-50": "#F0FDF4",
31
- "green-500": "#22C55E",
32
- "green-600": "#16A34A",
33
- "green-700": "#15803D",
34
- "green-800": "#166534",
35
- "green-900": "#14532D",
36
- "indigo-100": "#E0E7FF",
37
- "indigo-200": "#C7D2FE",
38
- "indigo-300": "#A5B4FC",
39
- "indigo-400": "#818CF8",
40
- "indigo-50": "#EEF2FF",
41
- "indigo-500": "#6366F1",
42
- "indigo-600": "#4F46E5",
43
- "indigo-700": "#4338CA",
44
- "indigo-800": "#3730A3",
45
- "indigo-900": "#312E81",
46
- "orange-100": "#FFEDD5",
47
- "orange-200": "#FED7AA",
48
- "orange-300": "#FDBA74",
49
- "orange-400": "#FB923C",
50
- "orange-50": "#FFF7ED",
51
- "orange-500": "#F97316",
52
- "orange-600": "#EA580C",
53
- "orange-700": "#C2410C",
54
- "orange-800": "#9A3412",
55
- "orange-900": "#7C2D12",
56
- "pink-100": "#FCE7F3",
57
- "pink-200": "#FBCFE8",
58
- "pink-300": "#F9A8D4",
59
- "pink-400": "#F472B6",
60
- "pink-50": "#FDF2F8",
61
- "pink-500": "#EC4899",
62
- "pink-600": "#DB2777",
63
- "pink-700": "#BE185D",
64
- "pink-800": "#9D174D",
65
- "pink-900": "#831843",
66
- "purple-100": "#F3E8FF",
67
- "purple-200": "#E9D5FF",
68
- "purple-300": "#D8B4FE",
69
- "purple-400": "#C084FC",
70
- "purple-50": "#FAF5FF",
71
- "purple-500": "#A855F7",
72
- "purple-600": "#9333EA",
73
- "purple-700": "#7E22CE",
74
- "purple-800": "#6B21A8",
75
- "purple-900": "#581C87",
76
- "red-100": "#FEE2E2",
77
- "red-200": "#FECACA",
78
- "red-300": "#FCA5A5",
79
- "red-400": "#F87171",
80
- "red-50": "#FEF2F2",
81
- "red-500": "#EF4444",
82
- "red-600": "#DC2626",
83
- "red-700": "#B91C1C",
84
- "red-800": "#991B1B",
85
- "red-900": "#7F1D1D",
17
+ "blue-100": "#dbeafe",
18
+ "blue-200": "#bedbff",
19
+ "blue-300": "#8ec5ff",
20
+ "blue-400": "#51a2ff",
21
+ "blue-50": "#eff6ff",
22
+ "blue-500": "#2b7fff",
23
+ "blue-600": "#155dfc",
24
+ "blue-700": "#1447e6",
25
+ "blue-800": "#193cb8",
26
+ "blue-900": "#1c398e",
27
+ "blue-950": "#162456",
28
+ "cyan-100": "#cefafe",
29
+ "cyan-200": "#a2f4fd",
30
+ "cyan-300": "#53eafd",
31
+ "cyan-400": "#00d3f2",
32
+ "cyan-50": "#ecfeff",
33
+ "cyan-500": "#00b8db",
34
+ "cyan-600": "#0092b8",
35
+ "cyan-700": "#007595",
36
+ "cyan-800": "#005f78",
37
+ "cyan-900": "#104e64",
38
+ "cyan-950": "#053345",
39
+ "emerald-100": "#d0fae5",
40
+ "emerald-200": "#a4f4cf",
41
+ "emerald-300": "#5ee9b5",
42
+ "emerald-400": "#00d492",
43
+ "emerald-50": "#ecfdf5",
44
+ "emerald-500": "#00bc7d",
45
+ "emerald-600": "#009966",
46
+ "emerald-700": "#007a55",
47
+ "emerald-800": "#006045",
48
+ "emerald-900": "#004f3b",
49
+ "emerald-950": "#002c22",
50
+ "fuchsia-100": "#fae8ff",
51
+ "fuchsia-200": "#f6cfff",
52
+ "fuchsia-300": "#f4a8ff",
53
+ "fuchsia-400": "#ed6aff",
54
+ "fuchsia-50": "#fdf4ff",
55
+ "fuchsia-500": "#e12afb",
56
+ "fuchsia-600": "#c800de",
57
+ "fuchsia-700": "#a800b7",
58
+ "fuchsia-800": "#8a0194",
59
+ "fuchsia-900": "#721378",
60
+ "fuchsia-950": "#4b004f",
61
+ "gray-100": "#f3f4f6",
62
+ "gray-200": "#e5e7eb",
63
+ "gray-300": "#d1d5dc",
64
+ "gray-400": "#99a1af",
65
+ "gray-50": "#f9fafb",
66
+ "gray-500": "#6a7282",
67
+ "gray-600": "#4a5565",
68
+ "gray-700": "#364153",
69
+ "gray-800": "#1e2939",
70
+ "gray-900": "#101828",
71
+ "gray-950": "#030712",
72
+ "green-100": "#dcfce7",
73
+ "green-200": "#b9f8cf",
74
+ "green-300": "#7bf1a8",
75
+ "green-400": "#05df72",
76
+ "green-50": "#f0fdf4",
77
+ "green-500": "#00c950",
78
+ "green-600": "#00a63e",
79
+ "green-700": "#008236",
80
+ "green-800": "#016630",
81
+ "green-900": "#0d542b",
82
+ "green-950": "#032e15",
83
+ "indigo-100": "#e0e7ff",
84
+ "indigo-200": "#c6d2ff",
85
+ "indigo-300": "#a3b3ff",
86
+ "indigo-400": "#7c86ff",
87
+ "indigo-50": "#eef2ff",
88
+ "indigo-500": "#615fff",
89
+ "indigo-600": "#4f39f6",
90
+ "indigo-700": "#432dd7",
91
+ "indigo-800": "#372aac",
92
+ "indigo-900": "#312c85",
93
+ "indigo-950": "#1e1a4d",
94
+ "lime-100": "#ecfcca",
95
+ "lime-200": "#d8f999",
96
+ "lime-300": "#bbf451",
97
+ "lime-400": "#9ae600",
98
+ "lime-50": "#f7fee7",
99
+ "lime-500": "#7ccf00",
100
+ "lime-600": "#5ea500",
101
+ "lime-700": "#497d00",
102
+ "lime-800": "#3c6300",
103
+ "lime-900": "#35530e",
104
+ "lime-950": "#192e03",
105
+ "neutral-100": "#f5f5f5",
106
+ "neutral-200": "#e5e5e5",
107
+ "neutral-300": "#d4d4d4",
108
+ "neutral-400": "#a1a1a1",
109
+ "neutral-50": "#fafafa",
110
+ "neutral-500": "#737373",
111
+ "neutral-600": "#525252",
112
+ "neutral-700": "#404040",
113
+ "neutral-800": "#262626",
114
+ "neutral-900": "#171717",
115
+ "neutral-950": "#0a0a0a",
116
+ "orange-100": "#ffedd4",
117
+ "orange-200": "#ffd6a7",
118
+ "orange-300": "#ffb86a",
119
+ "orange-400": "#ff8904",
120
+ "orange-50": "#fff7ed",
121
+ "orange-500": "#ff6900",
122
+ "orange-600": "#f54900",
123
+ "orange-700": "#ca3500",
124
+ "orange-800": "#9f2d00",
125
+ "orange-900": "#7e2a0c",
126
+ "orange-950": "#441306",
127
+ "pink-100": "#fce7f3",
128
+ "pink-200": "#fccee8",
129
+ "pink-300": "#fda5d5",
130
+ "pink-400": "#fb64b6",
131
+ "pink-50": "#fdf2f8",
132
+ "pink-500": "#f6339a",
133
+ "pink-600": "#e60076",
134
+ "pink-700": "#c6005c",
135
+ "pink-800": "#a3004c",
136
+ "pink-900": "#861043",
137
+ "pink-950": "#510424",
138
+ "purple-100": "#f3e8ff",
139
+ "purple-200": "#e9d4ff",
140
+ "purple-300": "#dab2ff",
141
+ "purple-400": "#c27aff",
142
+ "purple-50": "#faf5ff",
143
+ "purple-500": "#ad46ff",
144
+ "purple-600": "#9810fa",
145
+ "purple-700": "#8200db",
146
+ "purple-800": "#6e11b0",
147
+ "purple-900": "#59168b",
148
+ "purple-950": "#3c0366",
149
+ "red-100": "#ffe2e2",
150
+ "red-200": "#ffc9c9",
151
+ "red-300": "#ffa2a2",
152
+ "red-400": "#ff6467",
153
+ "red-50": "#fef2f2",
154
+ "red-500": "#fb2c36",
155
+ "red-600": "#e7000b",
156
+ "red-700": "#c10007",
157
+ "red-800": "#9f0712",
158
+ "red-900": "#82181a",
159
+ "red-950": "#460809",
160
+ "rose-100": "#ffe4e6",
161
+ "rose-200": "#ffccd3",
162
+ "rose-300": "#ffa1ad",
163
+ "rose-400": "#ff637e",
164
+ "rose-50": "#fff1f2",
165
+ "rose-500": "#ff2056",
166
+ "rose-600": "#ec003f",
167
+ "rose-700": "#c70036",
168
+ "rose-800": "#a50036",
169
+ "rose-900": "#8b0836",
170
+ "rose-950": "#4d0218",
171
+ "sky-100": "#dff2fe",
172
+ "sky-200": "#b8e6fe",
173
+ "sky-300": "#74d4ff",
174
+ "sky-400": "#00bcff",
175
+ "sky-50": "#f0f9ff",
176
+ "sky-500": "#00a6f4",
177
+ "sky-600": "#0084d1",
178
+ "sky-700": "#0069a8",
179
+ "sky-800": "#00598a",
180
+ "sky-900": "#024a70",
181
+ "sky-950": "#052f4a",
182
+ "slate-100": "#f1f5f9",
183
+ "slate-200": "#e2e8f0",
184
+ "slate-300": "#cad5e2",
185
+ "slate-400": "#90a1b9",
186
+ "slate-50": "#f8fafc",
187
+ "slate-500": "#62748e",
188
+ "slate-600": "#45556c",
189
+ "slate-700": "#314158",
190
+ "slate-800": "#1d293d",
191
+ "slate-900": "#0f172b",
192
+ "slate-950": "#020618",
193
+ "stone-100": "#f5f5f4",
194
+ "stone-200": "#e7e5e4",
195
+ "stone-300": "#d6d3d1",
196
+ "stone-400": "#a6a09b",
197
+ "stone-50": "#fafaf9",
198
+ "stone-500": "#79716b",
199
+ "stone-600": "#57534d",
200
+ "stone-700": "#44403b",
201
+ "stone-800": "#292524",
202
+ "stone-900": "#1c1917",
203
+ "stone-950": "#0c0a09",
204
+ "teal-100": "#cbfbf1",
205
+ "teal-200": "#96f7e4",
206
+ "teal-300": "#46ecd5",
207
+ "teal-400": "#00d5be",
208
+ "teal-50": "#f0fdfa",
209
+ "teal-500": "#00bba7",
210
+ "teal-600": "#009689",
211
+ "teal-700": "#00786f",
212
+ "teal-800": "#005f5a",
213
+ "teal-900": "#0b4f4a",
214
+ "teal-950": "#022f2e",
86
215
  "transparent": "transparent",
216
+ "violet-100": "#ede9fe",
217
+ "violet-200": "#ddd6ff",
218
+ "violet-300": "#c4b4ff",
219
+ "violet-400": "#a684ff",
220
+ "violet-50": "#f5f3ff",
221
+ "violet-500": "#8e51ff",
222
+ "violet-600": "#7f22fe",
223
+ "violet-700": "#7008e7",
224
+ "violet-800": "#5d0ec0",
225
+ "violet-900": "#4d179a",
226
+ "violet-950": "#2f0d68",
87
227
  "white": "#FFFFFF",
88
- "yellow-100": "#FEF9C3",
89
- "yellow-200": "#FEF08A",
90
- "yellow-300": "#FDE047",
91
- "yellow-400": "#FACC15",
92
- "yellow-50": "#FEFCE8",
93
- "yellow-500": "#EAB308",
94
- "yellow-600": "#CA8A04",
95
- "yellow-700": "#A16207",
96
- "yellow-800": "#854D0E",
97
- "yellow-900": "#713F12",
228
+ "yellow-100": "#fef9c2",
229
+ "yellow-200": "#fff085",
230
+ "yellow-300": "#ffdf20",
231
+ "yellow-400": "#fdc700",
232
+ "yellow-50": "#fefce8",
233
+ "yellow-500": "#f0b100",
234
+ "yellow-600": "#d08700",
235
+ "yellow-700": "#a65f00",
236
+ "yellow-800": "#894b00",
237
+ "yellow-900": "#733e0a",
238
+ "yellow-950": "#432004",
239
+ "zinc-100": "#f4f4f5",
240
+ "zinc-200": "#e4e4e7",
241
+ "zinc-300": "#d4d4d8",
242
+ "zinc-400": "#9f9fa9",
243
+ "zinc-50": "#fafafa",
244
+ "zinc-500": "#71717b",
245
+ "zinc-600": "#52525c",
246
+ "zinc-700": "#3f3f46",
247
+ "zinc-800": "#27272a",
248
+ "zinc-900": "#18181b",
249
+ "zinc-950": "#09090b",
98
250
  }
99
251
  `;
@@ -0,0 +1,58 @@
1
+ // Bun Snapshot v1, https://bun.sh/docs/test/snapshots
2
+
3
+ exports[`SCALE_MAP should export complete scale map 1`] = `
4
+ {
5
+ "0": 0,
6
+ "100": 1,
7
+ "105": 1.05,
8
+ "110": 1.1,
9
+ "125": 1.25,
10
+ "150": 1.5,
11
+ "200": 2,
12
+ "50": 0.5,
13
+ "75": 0.75,
14
+ "90": 0.9,
15
+ "95": 0.95,
16
+ }
17
+ `;
18
+
19
+ exports[`ROTATE_MAP should export complete rotate map 1`] = `
20
+ {
21
+ "0": 0,
22
+ "1": 1,
23
+ "12": 12,
24
+ "180": 180,
25
+ "2": 2,
26
+ "3": 3,
27
+ "45": 45,
28
+ "6": 6,
29
+ "90": 90,
30
+ }
31
+ `;
32
+
33
+ exports[`SKEW_MAP should export complete skew map 1`] = `
34
+ {
35
+ "0": 0,
36
+ "1": 1,
37
+ "12": 12,
38
+ "2": 2,
39
+ "3": 3,
40
+ "6": 6,
41
+ }
42
+ `;
43
+
44
+ exports[`PERSPECTIVE_SCALE should export complete perspective scale 1`] = `
45
+ {
46
+ "0": 0,
47
+ "100": 100,
48
+ "1000": 1000,
49
+ "200": 200,
50
+ "300": 300,
51
+ "400": 400,
52
+ "500": 500,
53
+ "600": 600,
54
+ "700": 700,
55
+ "800": 800,
56
+ "900": 900,
57
+ }
58
+ `;
@@ -1 +1 @@
1
- var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.COLORS=void 0;exports.parseColor=parseColor;var _slicedToArray2=_interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));var _palettes=require("../config/palettes");function flattenColors(){var flat={};for(var _ref of Object.entries(_palettes.TAILWIND_PALETTES)){var _ref2=(0,_slicedToArray2.default)(_ref,2);var colorName=_ref2[0];var shades=_ref2[1];for(var _ref3 of Object.entries(shades)){var _ref4=(0,_slicedToArray2.default)(_ref3,2);var shade=_ref4[0];var hex=_ref4[1];flat[`${colorName}-${shade}`]=hex;}}flat.white="#FFFFFF";flat.black="#000000";flat.transparent="transparent";return flat;}var COLORS=exports.COLORS=flattenColors();function applyOpacity(hex,opacity){if(hex==="transparent"){return"transparent";}var cleanHex=hex.replace(/^#/,"");var fullHex=cleanHex.length===3?cleanHex.split("").map(function(char){return char+char;}).join(""):cleanHex;var alpha=Math.round(opacity/100*255);var alphaHex=alpha.toString(16).padStart(2,"0").toUpperCase();return`#${fullHex.toUpperCase()}${alphaHex}`;}function parseArbitraryColor(value){var hexMatch=value.match(/^\[#([0-9a-fA-F]{3}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})\]$/);if(hexMatch){var hex=hexMatch[1];if(hex.length===3){var expanded=hex.split("").map(function(char){return char+char;}).join("");return`#${expanded}`;}return`#${hex}`;}if(value.startsWith("[")&&value.endsWith("]")){if(process.env.NODE_ENV!=="production"){console.warn(`[react-native-tailwind] Unsupported arbitrary color value: ${value}. Only hex colors are supported (e.g., [#ff0000], [#f00], or [#ff0000aa]).`);}return null;}return null;}function parseColor(cls,customColors){var getColor=function getColor(key){var _customColors$key;return(_customColors$key=customColors==null?void 0:customColors[key])!=null?_customColors$key:COLORS[key];};var parseColorWithOpacity=function parseColorWithOpacity(colorKey){var _getColor;var opacityMatch=colorKey.match(/^(.+)\/(\d+)$/);if(opacityMatch){var baseColorKey=opacityMatch[1];var opacity=Number.parseInt(opacityMatch[2],10);if(opacity<0||opacity>100){if(process.env.NODE_ENV!=="production"){console.warn(`[react-native-tailwind] Invalid opacity value: ${opacity}. Opacity must be between 0 and 100.`);}return null;}var _arbitraryColor=parseArbitraryColor(baseColorKey);if(_arbitraryColor!==null){return applyOpacity(_arbitraryColor,opacity);}var color=getColor(baseColorKey);if(color){return applyOpacity(color,opacity);}return null;}var arbitraryColor=parseArbitraryColor(colorKey);if(arbitraryColor!==null){return arbitraryColor;}return(_getColor=getColor(colorKey))!=null?_getColor:null;};if(cls.startsWith("bg-")){var colorKey=cls.substring(3);if(colorKey.startsWith("[")&&!colorKey.startsWith("[#")){return null;}var color=parseColorWithOpacity(colorKey);if(color){return{backgroundColor:color};}}if(cls.startsWith("text-")){var _colorKey=cls.substring(5);if(_colorKey.startsWith("[")&&!_colorKey.startsWith("[#")){return null;}var _color=parseColorWithOpacity(_colorKey);if(_color){return{color:_color};}}if(cls.startsWith("border-")&&!cls.match(/^border-[0-9]/)){var _colorKey2=cls.substring(7);if(_colorKey2.startsWith("[")&&!_colorKey2.startsWith("[#")){return null;}var _color2=parseColorWithOpacity(_colorKey2);if(_color2){return{borderColor:_color2};}}return null;}
1
+ Object.defineProperty(exports,"__esModule",{value:true});exports.COLORS=void 0;exports.parseColor=parseColor;var _tailwind=require("../config/tailwind");var _flattenColors=require("../utils/flattenColors");var COLORS=exports.COLORS=Object.assign({},(0,_flattenColors.flattenColors)(_tailwind.TAILWIND_COLORS),{white:"#FFFFFF",black:"#000000",transparent:"transparent"});function applyOpacity(hex,opacity){if(hex==="transparent"){return"transparent";}var cleanHex=hex.replace(/^#/,"");var fullHex=cleanHex.length===3?cleanHex.split("").map(function(char){return char+char;}).join(""):cleanHex;var alpha=Math.round(opacity/100*255);var alphaHex=alpha.toString(16).padStart(2,"0").toUpperCase();return`#${fullHex.toUpperCase()}${alphaHex}`;}function parseArbitraryColor(value){var hexMatch=value.match(/^\[#([0-9a-fA-F]{3}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})\]$/);if(hexMatch){var hex=hexMatch[1];if(hex.length===3){var expanded=hex.split("").map(function(char){return char+char;}).join("");return`#${expanded}`;}return`#${hex}`;}if(value.startsWith("[")&&value.endsWith("]")){if(process.env.NODE_ENV!=="production"){console.warn(`[react-native-tailwind] Unsupported arbitrary color value: ${value}. Only hex colors are supported (e.g., [#ff0000], [#f00], or [#ff0000aa]).`);}return null;}return null;}function parseColor(cls,customColors){var getColor=function getColor(key){var _customColors$key;return(_customColors$key=customColors==null?void 0:customColors[key])!=null?_customColors$key:COLORS[key];};var parseColorWithOpacity=function parseColorWithOpacity(colorKey){var _getColor;var opacityMatch=colorKey.match(/^(.+)\/(\d+)$/);if(opacityMatch){var baseColorKey=opacityMatch[1];var opacity=Number.parseInt(opacityMatch[2],10);if(opacity<0||opacity>100){if(process.env.NODE_ENV!=="production"){console.warn(`[react-native-tailwind] Invalid opacity value: ${opacity}. Opacity must be between 0 and 100.`);}return null;}var _arbitraryColor=parseArbitraryColor(baseColorKey);if(_arbitraryColor!==null){return applyOpacity(_arbitraryColor,opacity);}var color=getColor(baseColorKey);if(color){return applyOpacity(color,opacity);}return null;}var arbitraryColor=parseArbitraryColor(colorKey);if(arbitraryColor!==null){return arbitraryColor;}return(_getColor=getColor(colorKey))!=null?_getColor:null;};if(cls.startsWith("bg-")){var colorKey=cls.substring(3);if(colorKey.startsWith("[")&&!colorKey.startsWith("[#")){return null;}var color=parseColorWithOpacity(colorKey);if(color){return{backgroundColor:color};}}if(cls.startsWith("text-")){var _colorKey=cls.substring(5);if(_colorKey.startsWith("[")&&!_colorKey.startsWith("[#")){return null;}var _color=parseColorWithOpacity(_colorKey);if(_color){return{color:_color};}}if(cls.startsWith("border-")&&!cls.match(/^border-[0-9]/)){var _colorKey2=cls.substring(7);if(_colorKey2.startsWith("[")&&!_colorKey2.startsWith("[#")){return null;}var _color2=parseColorWithOpacity(_colorKey2);if(_color2){return{borderColor:_color2};}}return null;}
@@ -21,6 +21,7 @@ export { parseAspectRatio } from "./aspectRatio";
21
21
  export { parseBorder } from "./borders";
22
22
  export { parseColor } from "./colors";
23
23
  export { parseLayout } from "./layout";
24
+ export { parsePlaceholderClass, parsePlaceholderClasses } from "./placeholder";
24
25
  export { parseShadow } from "./shadows";
25
26
  export { parseSizing } from "./sizing";
26
27
  export { parseSpacing } from "./spacing";
@@ -1 +1 @@
1
- Object.defineProperty(exports,"__esModule",{value:true});Object.defineProperty(exports,"hasModifier",{enumerable:true,get:function get(){return _modifiers.hasModifier;}});Object.defineProperty(exports,"parseAspectRatio",{enumerable:true,get:function get(){return _aspectRatio.parseAspectRatio;}});Object.defineProperty(exports,"parseBorder",{enumerable:true,get:function get(){return _borders.parseBorder;}});exports.parseClass=parseClass;exports.parseClassName=parseClassName;Object.defineProperty(exports,"parseColor",{enumerable:true,get:function get(){return _colors.parseColor;}});Object.defineProperty(exports,"parseLayout",{enumerable:true,get:function get(){return _layout.parseLayout;}});Object.defineProperty(exports,"parseModifier",{enumerable:true,get:function get(){return _modifiers.parseModifier;}});Object.defineProperty(exports,"parseShadow",{enumerable:true,get:function get(){return _shadows.parseShadow;}});Object.defineProperty(exports,"parseSizing",{enumerable:true,get:function get(){return _sizing.parseSizing;}});Object.defineProperty(exports,"parseSpacing",{enumerable:true,get:function get(){return _spacing.parseSpacing;}});Object.defineProperty(exports,"parseTransform",{enumerable:true,get:function get(){return _transforms.parseTransform;}});Object.defineProperty(exports,"parseTypography",{enumerable:true,get:function get(){return _typography.parseTypography;}});Object.defineProperty(exports,"splitModifierClasses",{enumerable:true,get:function get(){return _modifiers.splitModifierClasses;}});var _aspectRatio=require("./aspectRatio");var _borders=require("./borders");var _colors=require("./colors");var _layout=require("./layout");var _shadows=require("./shadows");var _sizing=require("./sizing");var _spacing=require("./spacing");var _transforms=require("./transforms");var _typography=require("./typography");var _modifiers=require("./modifiers");function parseClassName(className,customColors){var classes=className.split(/\s+/).filter(Boolean);var style={};for(var cls of classes){var parsedStyle=parseClass(cls,customColors);Object.assign(style,parsedStyle);}return style;}function parseClass(cls,customColors){var parsers=[_spacing.parseSpacing,_borders.parseBorder,function(cls){return(0,_colors.parseColor)(cls,customColors);},_layout.parseLayout,_typography.parseTypography,_sizing.parseSizing,_shadows.parseShadow,_aspectRatio.parseAspectRatio,_transforms.parseTransform];for(var parser of parsers){var result=parser(cls);if(result!==null){return result;}}if(process.env.NODE_ENV!=="production"){console.warn(`[react-native-tailwind] Unknown class: "${cls}"`);}return{};}
1
+ Object.defineProperty(exports,"__esModule",{value:true});Object.defineProperty(exports,"hasModifier",{enumerable:true,get:function get(){return _modifiers.hasModifier;}});Object.defineProperty(exports,"parseAspectRatio",{enumerable:true,get:function get(){return _aspectRatio.parseAspectRatio;}});Object.defineProperty(exports,"parseBorder",{enumerable:true,get:function get(){return _borders.parseBorder;}});exports.parseClass=parseClass;exports.parseClassName=parseClassName;Object.defineProperty(exports,"parseColor",{enumerable:true,get:function get(){return _colors.parseColor;}});Object.defineProperty(exports,"parseLayout",{enumerable:true,get:function get(){return _layout.parseLayout;}});Object.defineProperty(exports,"parseModifier",{enumerable:true,get:function get(){return _modifiers.parseModifier;}});Object.defineProperty(exports,"parsePlaceholderClass",{enumerable:true,get:function get(){return _placeholder.parsePlaceholderClass;}});Object.defineProperty(exports,"parsePlaceholderClasses",{enumerable:true,get:function get(){return _placeholder.parsePlaceholderClasses;}});Object.defineProperty(exports,"parseShadow",{enumerable:true,get:function get(){return _shadows.parseShadow;}});Object.defineProperty(exports,"parseSizing",{enumerable:true,get:function get(){return _sizing.parseSizing;}});Object.defineProperty(exports,"parseSpacing",{enumerable:true,get:function get(){return _spacing.parseSpacing;}});Object.defineProperty(exports,"parseTransform",{enumerable:true,get:function get(){return _transforms.parseTransform;}});Object.defineProperty(exports,"parseTypography",{enumerable:true,get:function get(){return _typography.parseTypography;}});Object.defineProperty(exports,"splitModifierClasses",{enumerable:true,get:function get(){return _modifiers.splitModifierClasses;}});var _aspectRatio=require("./aspectRatio");var _borders=require("./borders");var _colors=require("./colors");var _layout=require("./layout");var _shadows=require("./shadows");var _sizing=require("./sizing");var _spacing=require("./spacing");var _transforms=require("./transforms");var _typography=require("./typography");var _placeholder=require("./placeholder");var _modifiers=require("./modifiers");function parseClassName(className,customColors){var classes=className.split(/\s+/).filter(Boolean);var style={};for(var cls of classes){var parsedStyle=parseClass(cls,customColors);Object.assign(style,parsedStyle);}return style;}function parseClass(cls,customColors){var parsers=[_spacing.parseSpacing,_borders.parseBorder,function(cls){return(0,_colors.parseColor)(cls,customColors);},_layout.parseLayout,_typography.parseTypography,_sizing.parseSizing,_shadows.parseShadow,_aspectRatio.parseAspectRatio,_transforms.parseTransform];for(var parser of parsers){var result=parser(cls);if(result!==null){return result;}}if(process.env.NODE_ENV!=="production"){console.warn(`[react-native-tailwind] Unknown class: "${cls}"`);}return{};}
@@ -1,7 +1,7 @@
1
1
  /**
2
- * Modifier parsing utilities for state-based class names (active:, hover:, focus:)
2
+ * Modifier parsing utilities for state-based class names (active:, hover:, focus:, placeholder:)
3
3
  */
4
- export type ModifierType = "active" | "hover" | "focus" | "disabled";
4
+ export type ModifierType = "active" | "hover" | "focus" | "disabled" | "placeholder";
5
5
  export type ParsedModifier = {
6
6
  modifier: ModifierType;
7
7
  baseClass: string;
@@ -1 +1 @@
1
- Object.defineProperty(exports,"__esModule",{value:true});exports.hasModifier=hasModifier;exports.parseModifier=parseModifier;exports.splitModifierClasses=splitModifierClasses;var SUPPORTED_MODIFIERS=["active","hover","focus","disabled"];function parseModifier(cls){var colonIndex=cls.indexOf(":");if(colonIndex===-1){return null;}var potentialModifier=cls.slice(0,colonIndex);var baseClass=cls.slice(colonIndex+1);if(!SUPPORTED_MODIFIERS.includes(potentialModifier)){return null;}if(baseClass.includes(":")){return null;}if(!baseClass){return null;}return{modifier:potentialModifier,baseClass:baseClass};}function hasModifier(cls){return parseModifier(cls)!==null;}function splitModifierClasses(className){var classes=className.trim().split(/\s+/).filter(Boolean);var baseClasses=[];var modifierClasses=[];for(var cls of classes){var parsed=parseModifier(cls);if(parsed){modifierClasses.push(parsed);}else{baseClasses.push(cls);}}return{baseClasses:baseClasses,modifierClasses:modifierClasses};}
1
+ Object.defineProperty(exports,"__esModule",{value:true});exports.hasModifier=hasModifier;exports.parseModifier=parseModifier;exports.splitModifierClasses=splitModifierClasses;var SUPPORTED_MODIFIERS=["active","hover","focus","disabled","placeholder"];function parseModifier(cls){var colonIndex=cls.indexOf(":");if(colonIndex===-1){return null;}var potentialModifier=cls.slice(0,colonIndex);var baseClass=cls.slice(colonIndex+1);if(!SUPPORTED_MODIFIERS.includes(potentialModifier)){return null;}if(baseClass.includes(":")){return null;}if(!baseClass){return null;}return{modifier:potentialModifier,baseClass:baseClass};}function hasModifier(cls){return parseModifier(cls)!==null;}function splitModifierClasses(className){var classes=className.trim().split(/\s+/).filter(Boolean);var baseClasses=[];var modifierClasses=[];for(var cls of classes){var parsed=parseModifier(cls);if(parsed){modifierClasses.push(parsed);}else{baseClasses.push(cls);}}return{baseClasses:baseClasses,modifierClasses:modifierClasses};}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Placeholder text color utilities (placeholder:text-{color})
3
+ *
4
+ * React Native only supports styling the COLOR of placeholder text via placeholderTextColor prop.
5
+ * Other text styling properties (font-size, font-weight, etc.) are not supported.
6
+ */
7
+ /**
8
+ * Parse placeholder modifier classes to extract color
9
+ *
10
+ * Only text-{color} classes are supported inside placeholder: modifier.
11
+ * Other utilities (font-*, text-lg, etc.) will log warnings.
12
+ *
13
+ * @param cls - Class name inside placeholder: modifier (e.g., "text-red-500")
14
+ * @param customColors - Optional custom color palette from tailwind.config
15
+ * @returns Color string (hex with optional alpha) or null if invalid
16
+ *
17
+ * @example
18
+ * parsePlaceholderClass("text-red-500") // "#ef4444"
19
+ * parsePlaceholderClass("text-red-500/50", {}) // "#ef444480"
20
+ * parsePlaceholderClass("text-brand-primary", { "brand-primary": "#123456" }) // "#123456"
21
+ * parsePlaceholderClass("font-bold") // null (+ warning)
22
+ */
23
+ export declare function parsePlaceholderClass(cls: string, customColors?: Record<string, string>): string | null;
24
+ /**
25
+ * Parse multiple placeholder classes and return the last valid color
26
+ * (Later classes override earlier ones, matching CSS cascade behavior)
27
+ *
28
+ * @param classes - Space-separated class names
29
+ * @param customColors - Optional custom color palette
30
+ * @returns Color string or null
31
+ *
32
+ * @example
33
+ * parsePlaceholderClasses("text-red-500 text-blue-500") // "#3b82f6" (blue wins)
34
+ * parsePlaceholderClasses("text-red-500 font-bold") // "#ef4444" (ignores font-bold)
35
+ */
36
+ export declare function parsePlaceholderClasses(classes: string, customColors?: Record<string, string>): string | null;
@@ -0,0 +1 @@
1
+ Object.defineProperty(exports,"__esModule",{value:true});exports.parsePlaceholderClass=parsePlaceholderClass;exports.parsePlaceholderClasses=parsePlaceholderClasses;var _colors=require("./colors.js");function parsePlaceholderClass(cls,customColors){if(!cls.startsWith("text-")){if(process.env.NODE_ENV!=="production"){console.warn(`[react-native-tailwind] Only text color utilities are supported in placeholder: modifier. `+`Class "${cls}" will be ignored. React Native only supports placeholderTextColor prop.`);}return null;}var styleObject=(0,_colors.parseColor)(cls,customColors);if(!(styleObject!=null&&styleObject.color)){return null;}return styleObject.color;}function parsePlaceholderClasses(classes,customColors){var classList=classes.trim().split(/\s+/).filter(Boolean);var finalColor=null;for(var cls of classList){var color=parsePlaceholderClass(cls,customColors);if(color){finalColor=color;}}return finalColor;}
@@ -0,0 +1 @@
1
+ var _vitest=require("vitest");var _placeholder=require("./placeholder");(0,_vitest.describe)("parsePlaceholderClass",function(){(0,_vitest.it)("should parse text color classes",function(){(0,_vitest.expect)((0,_placeholder.parsePlaceholderClass)("text-red-500")).toBe("#fb2c36");(0,_vitest.expect)((0,_placeholder.parsePlaceholderClass)("text-blue-500")).toBe("#2b7fff");(0,_vitest.expect)((0,_placeholder.parsePlaceholderClass)("text-gray-400")).toBe("#99a1af");});(0,_vitest.it)("should parse text colors with opacity",function(){(0,_vitest.expect)((0,_placeholder.parsePlaceholderClass)("text-red-500/50")).toBe("#FB2C3680");(0,_vitest.expect)((0,_placeholder.parsePlaceholderClass)("text-blue-500/75")).toBe("#2B7FFFBF");(0,_vitest.expect)((0,_placeholder.parsePlaceholderClass)("text-gray-400/25")).toBe("#99A1AF40");});(0,_vitest.it)("should parse arbitrary color values",function(){(0,_vitest.expect)((0,_placeholder.parsePlaceholderClass)("text-[#ff0000]")).toBe("#ff0000");(0,_vitest.expect)((0,_placeholder.parsePlaceholderClass)("text-[#ff0000aa]")).toBe("#ff0000aa");});(0,_vitest.it)("should parse custom colors",function(){var customColors={"brand-primary":"#123456","brand-secondary":"#654321"};(0,_vitest.expect)((0,_placeholder.parsePlaceholderClass)("text-brand-primary",customColors)).toBe("#123456");(0,_vitest.expect)((0,_placeholder.parsePlaceholderClass)("text-brand-secondary",customColors)).toBe("#654321");});(0,_vitest.it)("should return null for non-text color classes",function(){(0,_vitest.expect)((0,_placeholder.parsePlaceholderClass)("font-bold")).toBeNull();(0,_vitest.expect)((0,_placeholder.parsePlaceholderClass)("text-lg")).toBeNull();(0,_vitest.expect)((0,_placeholder.parsePlaceholderClass)("text-center")).toBeNull();(0,_vitest.expect)((0,_placeholder.parsePlaceholderClass)("italic")).toBeNull();});(0,_vitest.it)("should warn about unsupported utilities in development",function(){var consoleSpy=_vitest.vi.spyOn(console,"warn").mockImplementation(function(){});var originalEnv=process.env.NODE_ENV;process.env.NODE_ENV="development";(0,_placeholder.parsePlaceholderClass)("font-bold");(0,_vitest.expect)(consoleSpy).toHaveBeenCalledWith(_vitest.expect.stringContaining("Only text color utilities are supported in placeholder: modifier"));(0,_placeholder.parsePlaceholderClass)("text-lg");(0,_vitest.expect)(consoleSpy).toHaveBeenCalledWith(_vitest.expect.stringContaining("Only text color utilities are supported in placeholder: modifier"));process.env.NODE_ENV=originalEnv;consoleSpy.mockRestore();});(0,_vitest.it)("should not warn in production",function(){var consoleSpy=_vitest.vi.spyOn(console,"warn").mockImplementation(function(){});var originalEnv=process.env.NODE_ENV;process.env.NODE_ENV="production";(0,_placeholder.parsePlaceholderClass)("font-bold");(0,_vitest.expect)(consoleSpy).not.toHaveBeenCalled();process.env.NODE_ENV=originalEnv;consoleSpy.mockRestore();});(0,_vitest.it)("should return null for invalid color values",function(){(0,_vitest.expect)((0,_placeholder.parsePlaceholderClass)("text-invalid-color")).toBeNull();(0,_vitest.expect)((0,_placeholder.parsePlaceholderClass)("text-[invalid]")).toBeNull();});});(0,_vitest.describe)("parsePlaceholderClasses",function(){(0,_vitest.it)("should parse multiple color classes (last wins)",function(){(0,_vitest.expect)((0,_placeholder.parsePlaceholderClasses)("text-red-500 text-blue-500")).toBe("#2b7fff");(0,_vitest.expect)((0,_placeholder.parsePlaceholderClasses)("text-gray-400 text-green-500")).toBe("#00c950");});(0,_vitest.it)("should ignore non-color classes and return last valid color",function(){(0,_vitest.expect)((0,_placeholder.parsePlaceholderClasses)("text-red-500 font-bold text-blue-500")).toBe("#2b7fff");(0,_vitest.expect)((0,_placeholder.parsePlaceholderClasses)("font-bold text-red-500 text-lg")).toBe("#fb2c36");});(0,_vitest.it)("should return null if no valid colors found",function(){(0,_vitest.expect)((0,_placeholder.parsePlaceholderClasses)("font-bold italic text-lg")).toBeNull();(0,_vitest.expect)((0,_placeholder.parsePlaceholderClasses)("")).toBeNull();});(0,_vitest.it)("should handle opacity modifiers",function(){(0,_vitest.expect)((0,_placeholder.parsePlaceholderClasses)("text-red-500/50")).toBe("#FB2C3680");(0,_vitest.expect)((0,_placeholder.parsePlaceholderClasses)("text-red-500 text-blue-500/75")).toBe("#2B7FFFBF");});(0,_vitest.it)("should work with custom colors",function(){var customColors={"brand-primary":"#123456"};(0,_vitest.expect)((0,_placeholder.parsePlaceholderClasses)("text-red-500 text-brand-primary",customColors)).toBe("#123456");});});
@@ -4,6 +4,7 @@
4
4
  import type { StyleObject } from "../types";
5
5
  export declare const FONT_SIZES: Record<string, number>;
6
6
  export declare const LETTER_SPACING_SCALE: Record<string, number>;
7
+ export declare const LINE_HEIGHT_SCALE: Record<string, number>;
7
8
  /**
8
9
  * Parse typography classes
9
10
  */
@@ -1 +1 @@
1
- Object.defineProperty(exports,"__esModule",{value:true});exports.LETTER_SPACING_SCALE=exports.FONT_SIZES=void 0;exports.parseTypography=parseTypography;var FONT_SIZES=exports.FONT_SIZES={xs:12,sm:14,base:16,lg:18,xl:20,"2xl":24,"3xl":30,"4xl":36,"5xl":48,"6xl":60,"7xl":72,"8xl":96,"9xl":128};var LETTER_SPACING_SCALE=exports.LETTER_SPACING_SCALE={tighter:-0.8,tight:-0.4,normal:0,wide:0.4,wider:0.8,widest:1.6};var FONT_FAMILY_MAP={"font-sans":{fontFamily:"System"},"font-serif":{fontFamily:"serif"},"font-mono":{fontFamily:"Courier"}};var FONT_WEIGHT_MAP={"font-thin":{fontWeight:"100"},"font-extralight":{fontWeight:"200"},"font-light":{fontWeight:"300"},"font-normal":{fontWeight:"400"},"font-medium":{fontWeight:"500"},"font-semibold":{fontWeight:"600"},"font-bold":{fontWeight:"700"},"font-extrabold":{fontWeight:"800"},"font-black":{fontWeight:"900"}};var FONT_STYLE_MAP={italic:{fontStyle:"italic"},"not-italic":{fontStyle:"normal"}};var TEXT_ALIGN_MAP={"text-left":{textAlign:"left"},"text-center":{textAlign:"center"},"text-right":{textAlign:"right"},"text-justify":{textAlign:"justify"}};var TEXT_DECORATION_MAP={underline:{textDecorationLine:"underline"},"line-through":{textDecorationLine:"line-through"},"no-underline":{textDecorationLine:"none"}};var TEXT_TRANSFORM_MAP={uppercase:{textTransform:"uppercase"},lowercase:{textTransform:"lowercase"},capitalize:{textTransform:"capitalize"},"normal-case":{textTransform:"none"}};var LINE_HEIGHT_MAP={"leading-none":{lineHeight:16},"leading-tight":{lineHeight:20},"leading-snug":{lineHeight:22},"leading-normal":{lineHeight:24},"leading-relaxed":{lineHeight:28},"leading-loose":{lineHeight:32}};var TRACKING_MAP={"tracking-tighter":{letterSpacing:-0.8},"tracking-tight":{letterSpacing:-0.4},"tracking-normal":{letterSpacing:0},"tracking-wide":{letterSpacing:0.4},"tracking-wider":{letterSpacing:0.8},"tracking-widest":{letterSpacing:1.6}};function parseArbitraryFontSize(value){var pxMatch=value.match(/^\[(\d+)(?:px)?\]$/);if(pxMatch){return parseInt(pxMatch[1],10);}if(value.startsWith("[")&&value.endsWith("]")){if(process.env.NODE_ENV!=="production"){console.warn(`[react-native-tailwind] Unsupported arbitrary font size value: ${value}. Only px values are supported (e.g., [18px] or [18]).`);}return null;}return null;}function parseArbitraryLineHeight(value){var pxMatch=value.match(/^\[(\d+)(?:px)?\]$/);if(pxMatch){return parseInt(pxMatch[1],10);}if(value.startsWith("[")&&value.endsWith("]")){if(process.env.NODE_ENV!=="production"){console.warn(`[react-native-tailwind] Unsupported arbitrary line height value: ${value}. Only px values are supported (e.g., [24px] or [24]).`);}return null;}return null;}function parseTypography(cls){var _ref,_ref2,_ref3,_ref4,_ref5,_ref6,_ref7,_FONT_FAMILY_MAP$cls;if(cls.startsWith("text-")){var sizeKey=cls.substring(5);var arbitraryValue=parseArbitraryFontSize(sizeKey);if(arbitraryValue!==null){return{fontSize:arbitraryValue};}var fontSize=FONT_SIZES[sizeKey];if(fontSize!==undefined){return{fontSize:fontSize};}}if(cls.startsWith("leading-")){var heightKey=cls.substring(8);var _arbitraryValue=parseArbitraryLineHeight(heightKey);if(_arbitraryValue!==null){return{lineHeight:_arbitraryValue};}}return(_ref=(_ref2=(_ref3=(_ref4=(_ref5=(_ref6=(_ref7=(_FONT_FAMILY_MAP$cls=FONT_FAMILY_MAP[cls])!=null?_FONT_FAMILY_MAP$cls:FONT_WEIGHT_MAP[cls])!=null?_ref7:FONT_STYLE_MAP[cls])!=null?_ref6:TEXT_ALIGN_MAP[cls])!=null?_ref5:TEXT_DECORATION_MAP[cls])!=null?_ref4:TEXT_TRANSFORM_MAP[cls])!=null?_ref3:LINE_HEIGHT_MAP[cls])!=null?_ref2:TRACKING_MAP[cls])!=null?_ref:null;}
1
+ Object.defineProperty(exports,"__esModule",{value:true});exports.LINE_HEIGHT_SCALE=exports.LETTER_SPACING_SCALE=exports.FONT_SIZES=void 0;exports.parseTypography=parseTypography;var FONT_SIZES=exports.FONT_SIZES={xs:12,sm:14,base:16,lg:18,xl:20,"2xl":24,"3xl":30,"4xl":36,"5xl":48,"6xl":60,"7xl":72,"8xl":96,"9xl":128};var LETTER_SPACING_SCALE=exports.LETTER_SPACING_SCALE={tighter:-0.8,tight:-0.4,normal:0,wide:0.4,wider:0.8,widest:1.6};var FONT_FAMILY_MAP={"font-sans":{fontFamily:"System"},"font-serif":{fontFamily:"serif"},"font-mono":{fontFamily:"Courier"}};var FONT_WEIGHT_MAP={"font-thin":{fontWeight:"100"},"font-extralight":{fontWeight:"200"},"font-light":{fontWeight:"300"},"font-normal":{fontWeight:"400"},"font-medium":{fontWeight:"500"},"font-semibold":{fontWeight:"600"},"font-bold":{fontWeight:"700"},"font-extrabold":{fontWeight:"800"},"font-black":{fontWeight:"900"}};var FONT_STYLE_MAP={italic:{fontStyle:"italic"},"not-italic":{fontStyle:"normal"}};var TEXT_ALIGN_MAP={"text-left":{textAlign:"left"},"text-center":{textAlign:"center"},"text-right":{textAlign:"right"},"text-justify":{textAlign:"justify"}};var TEXT_DECORATION_MAP={underline:{textDecorationLine:"underline"},"line-through":{textDecorationLine:"line-through"},"no-underline":{textDecorationLine:"none"}};var TEXT_TRANSFORM_MAP={uppercase:{textTransform:"uppercase"},lowercase:{textTransform:"lowercase"},capitalize:{textTransform:"capitalize"},"normal-case":{textTransform:"none"}};var LINE_HEIGHT_SCALE=exports.LINE_HEIGHT_SCALE={3:12,4:16,5:20,6:24,7:28,8:32,9:36,10:40};var LINE_HEIGHT_MAP={"leading-none":{lineHeight:16},"leading-tight":{lineHeight:20},"leading-snug":{lineHeight:22},"leading-normal":{lineHeight:24},"leading-relaxed":{lineHeight:28},"leading-loose":{lineHeight:32}};var TRACKING_MAP={"tracking-tighter":{letterSpacing:-0.8},"tracking-tight":{letterSpacing:-0.4},"tracking-normal":{letterSpacing:0},"tracking-wide":{letterSpacing:0.4},"tracking-wider":{letterSpacing:0.8},"tracking-widest":{letterSpacing:1.6}};function parseArbitraryFontSize(value){var pxMatch=value.match(/^\[(\d+)(?:px)?\]$/);if(pxMatch){return parseInt(pxMatch[1],10);}if(value.startsWith("[")&&value.endsWith("]")){if(process.env.NODE_ENV!=="production"){console.warn(`[react-native-tailwind] Unsupported arbitrary font size value: ${value}. Only px values are supported (e.g., [18px] or [18]).`);}return null;}return null;}function parseArbitraryLineHeight(value){var pxMatch=value.match(/^\[(\d+)(?:px)?\]$/);if(pxMatch){return parseInt(pxMatch[1],10);}if(value.startsWith("[")&&value.endsWith("]")){if(process.env.NODE_ENV!=="production"){console.warn(`[react-native-tailwind] Unsupported arbitrary line height value: ${value}. Only px values are supported (e.g., [24px] or [24]).`);}return null;}return null;}function parseTypography(cls){var _ref,_ref2,_ref3,_ref4,_ref5,_ref6,_ref7,_FONT_FAMILY_MAP$cls;if(cls.startsWith("text-")){var sizeKey=cls.substring(5);var arbitraryValue=parseArbitraryFontSize(sizeKey);if(arbitraryValue!==null){return{fontSize:arbitraryValue};}var fontSize=FONT_SIZES[sizeKey];if(fontSize!==undefined){return{fontSize:fontSize};}}if(cls.startsWith("leading-")){var heightKey=cls.substring(8);var _arbitraryValue=parseArbitraryLineHeight(heightKey);if(_arbitraryValue!==null){return{lineHeight:_arbitraryValue};}var lineHeight=LINE_HEIGHT_SCALE[heightKey];if(lineHeight!==undefined){return{lineHeight:lineHeight};}}return(_ref=(_ref2=(_ref3=(_ref4=(_ref5=(_ref6=(_ref7=(_FONT_FAMILY_MAP$cls=FONT_FAMILY_MAP[cls])!=null?_FONT_FAMILY_MAP$cls:FONT_WEIGHT_MAP[cls])!=null?_ref7:FONT_STYLE_MAP[cls])!=null?_ref6:TEXT_ALIGN_MAP[cls])!=null?_ref5:TEXT_DECORATION_MAP[cls])!=null?_ref4:TEXT_TRANSFORM_MAP[cls])!=null?_ref3:LINE_HEIGHT_MAP[cls])!=null?_ref2:TRACKING_MAP[cls])!=null?_ref:null;}