tailwindcss 0.0.0-insiders.ff26372 → 0.0.0-internal.6835ef85

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 (254) hide show
  1. package/README.md +5 -6
  2. package/dist/lib.d.mts +326 -0
  3. package/dist/lib.d.ts +326 -0
  4. package/dist/lib.js +17 -0
  5. package/dist/lib.mjs +17 -0
  6. package/index.css +4 -4
  7. package/package.json +36 -98
  8. package/preflight.css +355 -0
  9. package/theme.css +465 -0
  10. package/base.css +0 -1
  11. package/colors.d.ts +0 -3
  12. package/colors.js +0 -2
  13. package/components.css +0 -1
  14. package/defaultConfig.d.ts +0 -3
  15. package/defaultConfig.js +0 -2
  16. package/defaultTheme.d.ts +0 -4
  17. package/defaultTheme.js +0 -2
  18. package/lib/cli/build/index.js +0 -57
  19. package/lib/cli/build/plugin.js +0 -431
  20. package/lib/cli/build/utils.js +0 -88
  21. package/lib/cli/build/watching.js +0 -182
  22. package/lib/cli/help/index.js +0 -73
  23. package/lib/cli/index.js +0 -231
  24. package/lib/cli/init/index.js +0 -63
  25. package/lib/cli.js +0 -3
  26. package/lib/corePluginList.js +0 -188
  27. package/lib/corePlugins.js +0 -4195
  28. package/lib/css/LICENSE +0 -25
  29. package/lib/css/preflight.css +0 -379
  30. package/lib/featureFlags.js +0 -85
  31. package/lib/index.js +0 -2
  32. package/lib/lib/cacheInvalidation.js +0 -92
  33. package/lib/lib/collapseAdjacentRules.js +0 -61
  34. package/lib/lib/collapseDuplicateDeclarations.js +0 -85
  35. package/lib/lib/content.js +0 -207
  36. package/lib/lib/defaultExtractor.js +0 -243
  37. package/lib/lib/detectNesting.js +0 -45
  38. package/lib/lib/evaluateTailwindFunctions.js +0 -238
  39. package/lib/lib/expandApplyAtRules.js +0 -534
  40. package/lib/lib/expandTailwindAtRules.js +0 -315
  41. package/lib/lib/findAtConfigPath.js +0 -46
  42. package/lib/lib/generateRules.js +0 -887
  43. package/lib/lib/getModuleDependencies.js +0 -99
  44. package/lib/lib/handleImportAtRules.js +0 -50
  45. package/lib/lib/load-config.js +0 -42
  46. package/lib/lib/normalizeTailwindDirectives.js +0 -74
  47. package/lib/lib/offsets.js +0 -306
  48. package/lib/lib/partitionApplyAtRules.js +0 -58
  49. package/lib/lib/regex.js +0 -74
  50. package/lib/lib/remap-bitfield.js +0 -89
  51. package/lib/lib/resolveDefaultsAtRules.js +0 -165
  52. package/lib/lib/setupContextUtils.js +0 -1270
  53. package/lib/lib/setupTrackingContext.js +0 -167
  54. package/lib/lib/sharedState.js +0 -79
  55. package/lib/lib/substituteScreenAtRules.js +0 -31
  56. package/lib/plugin.js +0 -164
  57. package/lib/postcss-plugins/nesting/README.md +0 -42
  58. package/lib/postcss-plugins/nesting/index.js +0 -21
  59. package/lib/postcss-plugins/nesting/plugin.js +0 -89
  60. package/lib/processTailwindFeatures.js +0 -64
  61. package/lib/public/colors.js +0 -355
  62. package/lib/public/create-plugin.js +0 -17
  63. package/lib/public/default-config.js +0 -18
  64. package/lib/public/default-theme.js +0 -18
  65. package/lib/public/load-config.js +0 -12
  66. package/lib/public/resolve-config.js +0 -24
  67. package/lib/util/applyImportantSelector.js +0 -36
  68. package/lib/util/bigSign.js +0 -13
  69. package/lib/util/buildMediaQuery.js +0 -27
  70. package/lib/util/cloneDeep.js +0 -22
  71. package/lib/util/cloneNodes.js +0 -34
  72. package/lib/util/color.js +0 -116
  73. package/lib/util/colorNames.js +0 -752
  74. package/lib/util/configurePlugins.js +0 -23
  75. package/lib/util/createPlugin.js +0 -32
  76. package/lib/util/createUtilityPlugin.js +0 -53
  77. package/lib/util/dataTypes.js +0 -358
  78. package/lib/util/defaults.js +0 -27
  79. package/lib/util/escapeClassName.js +0 -24
  80. package/lib/util/escapeCommas.js +0 -13
  81. package/lib/util/flattenColorPalette.js +0 -18
  82. package/lib/util/formatVariantSelector.js +0 -265
  83. package/lib/util/getAllConfigs.js +0 -51
  84. package/lib/util/hashConfig.js +0 -21
  85. package/lib/util/isKeyframeRule.js +0 -13
  86. package/lib/util/isPlainObject.js +0 -17
  87. package/lib/util/isSyntacticallyValidPropertyValue.js +0 -74
  88. package/lib/util/log.js +0 -78
  89. package/lib/util/nameClass.js +0 -49
  90. package/lib/util/negateValue.js +0 -36
  91. package/lib/util/normalizeConfig.js +0 -313
  92. package/lib/util/normalizeScreens.js +0 -178
  93. package/lib/util/parseAnimationValue.js +0 -93
  94. package/lib/util/parseBoxShadowValue.js +0 -88
  95. package/lib/util/parseDependency.js +0 -47
  96. package/lib/util/parseGlob.js +0 -36
  97. package/lib/util/parseObjectStyles.js +0 -36
  98. package/lib/util/pluginUtils.js +0 -274
  99. package/lib/util/prefixSelector.js +0 -39
  100. package/lib/util/pseudoElements.js +0 -209
  101. package/lib/util/removeAlphaVariables.js +0 -31
  102. package/lib/util/resolveConfig.js +0 -260
  103. package/lib/util/resolveConfigPath.js +0 -70
  104. package/lib/util/responsive.js +0 -24
  105. package/lib/util/splitAtTopLevelOnly.js +0 -51
  106. package/lib/util/tap.js +0 -14
  107. package/lib/util/toColorValue.js +0 -13
  108. package/lib/util/toPath.js +0 -32
  109. package/lib/util/transformThemeValue.js +0 -73
  110. package/lib/util/validateConfig.js +0 -48
  111. package/lib/util/validateFormalSyntax.js +0 -26
  112. package/lib/util/withAlphaVariable.js +0 -79
  113. package/lib/value-parser/LICENSE +0 -22
  114. package/lib/value-parser/README.md +0 -3
  115. package/lib/value-parser/index.d.js +0 -2
  116. package/lib/value-parser/index.js +0 -22
  117. package/lib/value-parser/parse.js +0 -259
  118. package/lib/value-parser/stringify.js +0 -38
  119. package/lib/value-parser/unit.js +0 -86
  120. package/lib/value-parser/walk.js +0 -16
  121. package/loadConfig.d.ts +0 -4
  122. package/loadConfig.js +0 -2
  123. package/nesting/index.js +0 -2
  124. package/plugin.d.ts +0 -11
  125. package/plugin.js +0 -2
  126. package/prettier.config.js +0 -19
  127. package/resolveConfig.d.ts +0 -12
  128. package/resolveConfig.js +0 -2
  129. package/screens.css +0 -1
  130. package/scripts/create-plugin-list.js +0 -10
  131. package/scripts/generate-types.js +0 -105
  132. package/scripts/release-channel.js +0 -18
  133. package/scripts/release-notes.js +0 -21
  134. package/scripts/type-utils.js +0 -27
  135. package/src/cli/build/index.js +0 -53
  136. package/src/cli/build/plugin.js +0 -469
  137. package/src/cli/build/utils.js +0 -76
  138. package/src/cli/build/watching.js +0 -229
  139. package/src/cli/help/index.js +0 -70
  140. package/src/cli/index.js +0 -217
  141. package/src/cli/init/index.js +0 -79
  142. package/src/cli.js +0 -3
  143. package/src/corePluginList.js +0 -1
  144. package/src/corePlugins.js +0 -2877
  145. package/src/css/LICENSE +0 -25
  146. package/src/css/preflight.css +0 -379
  147. package/src/featureFlags.js +0 -68
  148. package/src/index.js +0 -1
  149. package/src/lib/cacheInvalidation.js +0 -52
  150. package/src/lib/collapseAdjacentRules.js +0 -58
  151. package/src/lib/collapseDuplicateDeclarations.js +0 -93
  152. package/src/lib/content.js +0 -240
  153. package/src/lib/defaultExtractor.js +0 -217
  154. package/src/lib/detectNesting.js +0 -47
  155. package/src/lib/evaluateTailwindFunctions.js +0 -272
  156. package/src/lib/expandApplyAtRules.js +0 -613
  157. package/src/lib/expandTailwindAtRules.js +0 -319
  158. package/src/lib/findAtConfigPath.js +0 -48
  159. package/src/lib/generateRules.js +0 -930
  160. package/src/lib/getModuleDependencies.js +0 -79
  161. package/src/lib/handleImportAtRules.js +0 -34
  162. package/src/lib/load-config.ts +0 -31
  163. package/src/lib/normalizeTailwindDirectives.js +0 -57
  164. package/src/lib/offsets.js +0 -373
  165. package/src/lib/partitionApplyAtRules.js +0 -52
  166. package/src/lib/regex.js +0 -74
  167. package/src/lib/remap-bitfield.js +0 -82
  168. package/src/lib/resolveDefaultsAtRules.js +0 -163
  169. package/src/lib/setupContextUtils.js +0 -1331
  170. package/src/lib/setupTrackingContext.js +0 -169
  171. package/src/lib/sharedState.js +0 -57
  172. package/src/lib/substituteScreenAtRules.js +0 -19
  173. package/src/plugin.js +0 -133
  174. package/src/postcss-plugins/nesting/README.md +0 -42
  175. package/src/postcss-plugins/nesting/index.js +0 -13
  176. package/src/postcss-plugins/nesting/plugin.js +0 -80
  177. package/src/processTailwindFeatures.js +0 -59
  178. package/src/public/colors.js +0 -322
  179. package/src/public/create-plugin.js +0 -2
  180. package/src/public/default-config.js +0 -4
  181. package/src/public/default-theme.js +0 -4
  182. package/src/public/load-config.js +0 -2
  183. package/src/public/resolve-config.js +0 -7
  184. package/src/util/applyImportantSelector.js +0 -27
  185. package/src/util/bigSign.js +0 -3
  186. package/src/util/buildMediaQuery.js +0 -22
  187. package/src/util/cloneDeep.js +0 -11
  188. package/src/util/cloneNodes.js +0 -28
  189. package/src/util/color.js +0 -88
  190. package/src/util/colorNames.js +0 -150
  191. package/src/util/configurePlugins.js +0 -23
  192. package/src/util/createPlugin.js +0 -27
  193. package/src/util/createUtilityPlugin.js +0 -37
  194. package/src/util/dataTypes.js +0 -340
  195. package/src/util/defaults.js +0 -17
  196. package/src/util/escapeClassName.js +0 -8
  197. package/src/util/escapeCommas.js +0 -3
  198. package/src/util/flattenColorPalette.js +0 -13
  199. package/src/util/formatVariantSelector.js +0 -317
  200. package/src/util/getAllConfigs.js +0 -38
  201. package/src/util/hashConfig.js +0 -5
  202. package/src/util/isKeyframeRule.js +0 -3
  203. package/src/util/isPlainObject.js +0 -8
  204. package/src/util/isSyntacticallyValidPropertyValue.js +0 -61
  205. package/src/util/log.js +0 -53
  206. package/src/util/nameClass.js +0 -30
  207. package/src/util/negateValue.js +0 -24
  208. package/src/util/normalizeConfig.js +0 -328
  209. package/src/util/normalizeScreens.js +0 -140
  210. package/src/util/parseAnimationValue.js +0 -68
  211. package/src/util/parseBoxShadowValue.js +0 -72
  212. package/src/util/parseDependency.js +0 -44
  213. package/src/util/parseGlob.js +0 -24
  214. package/src/util/parseObjectStyles.js +0 -19
  215. package/src/util/pluginUtils.js +0 -287
  216. package/src/util/prefixSelector.js +0 -33
  217. package/src/util/pseudoElements.js +0 -167
  218. package/src/util/removeAlphaVariables.js +0 -24
  219. package/src/util/resolveConfig.js +0 -277
  220. package/src/util/resolveConfigPath.js +0 -66
  221. package/src/util/responsive.js +0 -10
  222. package/src/util/splitAtTopLevelOnly.js +0 -52
  223. package/src/util/tap.js +0 -4
  224. package/src/util/toColorValue.js +0 -3
  225. package/src/util/toPath.js +0 -26
  226. package/src/util/transformThemeValue.js +0 -62
  227. package/src/util/validateConfig.js +0 -36
  228. package/src/util/validateFormalSyntax.js +0 -34
  229. package/src/util/withAlphaVariable.js +0 -49
  230. package/src/value-parser/LICENSE +0 -22
  231. package/src/value-parser/README.md +0 -3
  232. package/src/value-parser/index.d.ts +0 -177
  233. package/src/value-parser/index.js +0 -28
  234. package/src/value-parser/parse.js +0 -303
  235. package/src/value-parser/stringify.js +0 -41
  236. package/src/value-parser/unit.js +0 -118
  237. package/src/value-parser/walk.js +0 -18
  238. package/stubs/.gitignore +0 -1
  239. package/stubs/.prettierrc.json +0 -6
  240. package/stubs/config.full.js +0 -996
  241. package/stubs/config.simple.js +0 -7
  242. package/stubs/postcss.config.cjs +0 -5
  243. package/stubs/postcss.config.js +0 -5
  244. package/stubs/tailwind.config.cjs +0 -2
  245. package/stubs/tailwind.config.js +0 -2
  246. package/stubs/tailwind.config.ts +0 -3
  247. package/tailwind.css +0 -5
  248. package/types/config.d.ts +0 -369
  249. package/types/generated/.gitkeep +0 -0
  250. package/types/generated/colors.d.ts +0 -298
  251. package/types/generated/corePluginList.d.ts +0 -1
  252. package/types/generated/default-theme.d.ts +0 -372
  253. package/types/index.d.ts +0 -7
  254. package/variants.css +0 -1
package/README.md CHANGED
@@ -12,19 +12,18 @@
12
12
  A utility-first CSS framework for rapidly building custom user interfaces.
13
13
  </p>
14
14
 
15
-
16
15
  <p align="center">
17
- <a href="https://github.com/tailwindlabs/tailwindcss/actions"><img src="https://img.shields.io/github/actions/workflow/status/tailwindlabs/tailwindcss/ci.yml?branch=master" alt="Build Status"></a>
16
+ <a href="https://github.com/tailwindlabs/tailwindcss/actions"><img src="https://img.shields.io/github/actions/workflow/status/tailwindlabs/tailwindcss/ci.yml?branch=next" alt="Build Status"></a>
18
17
  <a href="https://www.npmjs.com/package/tailwindcss"><img src="https://img.shields.io/npm/dt/tailwindcss.svg" alt="Total Downloads"></a>
19
18
  <a href="https://github.com/tailwindcss/tailwindcss/releases"><img src="https://img.shields.io/npm/v/tailwindcss.svg" alt="Latest Release"></a>
20
19
  <a href="https://github.com/tailwindcss/tailwindcss/blob/master/LICENSE"><img src="https://img.shields.io/npm/l/tailwindcss.svg" alt="License"></a>
21
20
  </p>
22
21
 
23
- ------
22
+ ---
24
23
 
25
24
  ## Documentation
26
25
 
27
- For full documentation, visit [tailwindcss.com](https://tailwindcss.com/).
26
+ For full documentation, visit [tailwindcss.com](https://tailwindcss.com).
28
27
 
29
28
  ## Community
30
29
 
@@ -32,10 +31,10 @@ For help, discussion about best practices, or any other conversation that would
32
31
 
33
32
  [Discuss Tailwind CSS on GitHub](https://github.com/tailwindcss/tailwindcss/discussions)
34
33
 
35
- For casual chit-chat with others using the framework:
34
+ For chatting with others using the framework:
36
35
 
37
36
  [Join the Tailwind CSS Discord Server](https://discord.gg/7NF8GNe)
38
37
 
39
38
  ## Contributing
40
39
 
41
- If you're interested in contributing to Tailwind CSS, please read our [contributing docs](https://github.com/tailwindcss/tailwindcss/blob/master/.github/CONTRIBUTING.md) **before submitting a pull request**.
40
+ If you're interested in contributing to Tailwind CSS, please read our [contributing docs](https://github.com/tailwindcss/tailwindcss/blob/next/.github/CONTRIBUTING.md) **before submitting a pull request**.
package/dist/lib.d.mts ADDED
@@ -0,0 +1,326 @@
1
+ interface ClassMetadata {
2
+ modifiers: string[];
3
+ }
4
+ type ClassEntry = [string, ClassMetadata];
5
+ interface SelectorOptions {
6
+ modifier?: string;
7
+ value?: string;
8
+ }
9
+ interface VariantEntry {
10
+ name: string;
11
+ isArbitrary: boolean;
12
+ values: string[];
13
+ hasDash: boolean;
14
+ selectors: (options: SelectorOptions) => string[];
15
+ }
16
+
17
+ declare class Theme {
18
+ private values;
19
+ constructor(values?: Map<string, string>);
20
+ add(key: string, value: string): void;
21
+ keysInNamespaces(themeKeys: ThemeKey[]): string[];
22
+ get(themeKeys: ThemeKey[]): string | null;
23
+ entries(): IterableIterator<[string, string]>;
24
+ clearNamespace(namespace: string): void;
25
+ resolveKey(candidateValue: string, themeKeys: ThemeKey[]): string | null;
26
+ var(themeKey: string): string | null;
27
+ resolve(candidateValue: string, themeKeys: ThemeKey[]): string | null;
28
+ resolveBare(candidateValue: string, themeKeys: ThemeKey[]): string | null;
29
+ resolveWith(candidateValue: string, themeKeys: ThemeKey[], nestedKeys?: `--${string}`[]): [string, Record<string, string>] | null;
30
+ namespace(namespace: string): Map<string | null, string>;
31
+ }
32
+ type ThemeKey = '--accent-color' | '--animate' | '--aspect-ratio' | '--backdrop-blur' | '--backdrop-brightness' | '--backdrop-contrast' | '--backdrop-grayscale' | '--backdrop-hue-rotate' | '--backdrop-invert' | '--backdrop-opacity' | '--backdrop-saturate' | '--backdrop-sepia' | '--background-color' | '--background-image' | '--blur' | '--border-color' | '--border-spacing' | '--border-width' | '--box-shadow-color' | '--breakpoint' | '--brightness' | '--caret-color' | '--color' | '--columns' | '--contrast' | '--cursor' | '--default-border-width' | '--default-ring-color' | '--default-ring-width' | '--divide-width' | '--divide-color' | '--drop-shadow' | '--fill' | '--flex-basis' | '--font-family' | '--font-size' | '--font-weight' | '--gap' | '--gradient-color-stop-positions' | '--grayscale' | '--grid-auto-columns' | '--grid-auto-rows' | '--grid-column' | '--grid-column-end' | '--grid-column-start' | '--grid-row' | '--grid-row-end' | '--grid-row-start' | '--grid-template-columns' | '--grid-template-rows' | '--height' | '--hue-rotate' | '--inset' | '--inset-shadow' | '--invert' | '--letter-spacing' | '--line-height' | '--line-clamp' | '--list-style-image' | '--list-style-type' | '--margin' | '--max-height' | '--max-width' | '--min-height' | '--min-width' | '--object-position' | '--opacity' | '--order' | '--outline-color' | '--outline-width' | '--outline-offset' | '--padding' | '--placeholder-color' | '--radius' | '--ring-color' | '--ring-offset-color' | '--ring-offset-width' | '--ring-width' | '--rotate' | '--saturate' | '--scale' | '--scroll-margin' | '--scroll-padding' | '--sepia' | '--shadow' | '--size' | '--skew' | '--space' | '--spacing' | '--stroke' | '--stroke-width' | '--text-color' | '--text-decoration-color' | '--text-decoration-thickness' | '--text-indent' | '--text-underline-offset' | '--transform-origin' | '--transition-delay' | '--transition-duration' | '--transition-property' | '--transition-timing-function' | '--translate' | '--width' | '--z-index';
33
+
34
+ type Rule = {
35
+ kind: 'rule';
36
+ selector: string;
37
+ nodes: AstNode[];
38
+ };
39
+ type Declaration = {
40
+ kind: 'declaration';
41
+ property: string;
42
+ value: string;
43
+ important: boolean;
44
+ };
45
+ type Comment = {
46
+ kind: 'comment';
47
+ value: string;
48
+ };
49
+ type AstNode = Rule | Declaration | Comment;
50
+
51
+ type ArbitraryUtilityValue = {
52
+ kind: 'arbitrary';
53
+ /**
54
+ * bg-[color:--my-color]
55
+ * ^^^^^
56
+ */
57
+ dataType: string | null;
58
+ /**
59
+ * bg-[#0088cc]
60
+ * ^^^^^^^
61
+ * bg-[--my_variable]
62
+ * var(^^^^^^^^^^^^^)
63
+ */
64
+ value: string;
65
+ /**
66
+ * bg-[--my_variable]
67
+ * ^^^^^^^^^^^^^
68
+ */
69
+ dashedIdent: string | null;
70
+ };
71
+ type NamedUtilityValue = {
72
+ kind: 'named';
73
+ /**
74
+ * bg-red-500
75
+ * ^^^^^^^
76
+ *
77
+ * w-1/2
78
+ * ^
79
+ */
80
+ value: string;
81
+ /**
82
+ * w-1/2
83
+ * ^^^
84
+ */
85
+ fraction: string | null;
86
+ };
87
+ type ArbitraryModifier = {
88
+ kind: 'arbitrary';
89
+ /**
90
+ * bg-red-500/[50%]
91
+ * ^^^
92
+ */
93
+ value: string;
94
+ /**
95
+ * bg-red-500/[--my_variable]
96
+ * ^^^^^^^^^^^^^
97
+ */
98
+ dashedIdent: string | null;
99
+ };
100
+ type NamedModifier = {
101
+ kind: 'named';
102
+ /**
103
+ * bg-red-500/50
104
+ * ^^
105
+ */
106
+ value: string;
107
+ };
108
+ type ArbitraryVariantValue = {
109
+ kind: 'arbitrary';
110
+ value: string;
111
+ };
112
+ type NamedVariantValue = {
113
+ kind: 'named';
114
+ value: string;
115
+ };
116
+ type Variant =
117
+ /**
118
+ * Arbitrary variants are variants that take a selector and generate a variant
119
+ * on the fly.
120
+ *
121
+ * E.g.: `[&_p]`
122
+ */
123
+ {
124
+ kind: 'arbitrary';
125
+ selector: string;
126
+ compounds: boolean;
127
+ }
128
+ /**
129
+ * Static variants are variants that don't take any arguments.
130
+ *
131
+ * E.g.: `hover`
132
+ */
133
+ | {
134
+ kind: 'static';
135
+ root: string;
136
+ compounds: boolean;
137
+ }
138
+ /**
139
+ * Functional variants are variants that can take an argument. The argument is
140
+ * either a named variant value or an arbitrary variant value.
141
+ *
142
+ * E.g.:
143
+ *
144
+ * - `aria-disabled`
145
+ * - `aria-[disabled]`
146
+ * - `@container-size` -> @container, with named value `size`
147
+ * - `@container-[inline-size]` -> @container, with arbitrary variant value `inline-size`
148
+ * - `@container` -> @container, with no value
149
+ */
150
+ | {
151
+ kind: 'functional';
152
+ root: string;
153
+ value: ArbitraryVariantValue | NamedVariantValue | null;
154
+ modifier: ArbitraryModifier | NamedModifier | null;
155
+ compounds: boolean;
156
+ }
157
+ /**
158
+ * Compound variants are variants that take another variant as an argument.
159
+ *
160
+ * E.g.:
161
+ *
162
+ * - `has-[&_p]`
163
+ * - `group-*`
164
+ * - `peer-*`
165
+ */
166
+ | {
167
+ kind: 'compound';
168
+ root: string;
169
+ modifier: ArbitraryModifier | NamedModifier | null;
170
+ variant: Variant;
171
+ compounds: boolean;
172
+ };
173
+ type Candidate =
174
+ /**
175
+ * Arbitrary candidates are candidates that register utilities on the fly with
176
+ * a property and a value.
177
+ *
178
+ * E.g.:
179
+ *
180
+ * - `[color:red]`
181
+ * - `[color:red]/50`
182
+ * - `[color:red]/50!`
183
+ */
184
+ {
185
+ kind: 'arbitrary';
186
+ property: string;
187
+ value: string;
188
+ modifier: ArbitraryModifier | NamedModifier | null;
189
+ variants: Variant[];
190
+ important: boolean;
191
+ }
192
+ /**
193
+ * Static candidates are candidates that don't take any arguments.
194
+ *
195
+ * E.g.:
196
+ *
197
+ * - `underline`
198
+ * - `flex`
199
+ */
200
+ | {
201
+ kind: 'static';
202
+ root: string;
203
+ variants: Variant[];
204
+ negative: boolean;
205
+ important: boolean;
206
+ }
207
+ /**
208
+ * Functional candidates are candidates that can take an argument.
209
+ *
210
+ * E.g.:
211
+ *
212
+ * - `bg-red-500`
213
+ * - `bg-[#0088cc]`
214
+ * - `w-1/2`
215
+ */
216
+ | {
217
+ kind: 'functional';
218
+ root: string;
219
+ value: ArbitraryUtilityValue | NamedUtilityValue | null;
220
+ modifier: ArbitraryModifier | NamedModifier | null;
221
+ variants: Variant[];
222
+ negative: boolean;
223
+ important: boolean;
224
+ };
225
+
226
+ type CompileFn<T extends Candidate['kind']> = (value: Extract<Candidate, {
227
+ kind: T;
228
+ }>) => AstNode[] | undefined;
229
+ interface SuggestionGroup {
230
+ supportsNegative?: boolean;
231
+ values: (string | null)[];
232
+ modifiers: string[];
233
+ }
234
+ declare class Utilities {
235
+ private utilities;
236
+ private completions;
237
+ static(name: string, compileFn: CompileFn<'static'>): void;
238
+ functional(name: string, compileFn: CompileFn<'functional'>): void;
239
+ arbitrary(compileFn: CompileFn<'arbitrary'>): void;
240
+ has(name: string): boolean;
241
+ get(name: string | symbol): {
242
+ kind: "arbitrary" | "static" | "functional";
243
+ compileFn: CompileFn<any>;
244
+ } | undefined;
245
+ kind(name: string): "arbitrary" | "static" | "functional";
246
+ getCompletions(name: string): SuggestionGroup[];
247
+ suggest(name: string, groups: () => SuggestionGroup[]): void;
248
+ keys(): IterableIterator<string | symbol>;
249
+ entries(): IterableIterator<[string | symbol, {
250
+ kind: "arbitrary" | "static" | "functional";
251
+ compileFn: CompileFn<any>;
252
+ }]>;
253
+ getArbitrary(): CompileFn<any>;
254
+ private set;
255
+ }
256
+
257
+ type VariantFn<T extends Variant['kind']> = (rule: Rule, variant: Extract<Variant, {
258
+ kind: T;
259
+ }>) => null | void;
260
+ type CompareFn = (a: Variant, z: Variant) => number;
261
+ declare class Variants {
262
+ private compareFns;
263
+ private variants;
264
+ private completions;
265
+ /**
266
+ * Registering a group of variants should result in the same sort number for
267
+ * all the variants. This is to ensure that the variants are applied in the
268
+ * correct order.
269
+ */
270
+ private groupOrder;
271
+ /**
272
+ * Keep track of the last sort order instead of using the size of the map to
273
+ * avoid unnecessarily skipping order numbers.
274
+ */
275
+ private lastOrder;
276
+ static(name: string, applyFn: VariantFn<'static'>, { compounds }?: {
277
+ compounds?: boolean;
278
+ }): void;
279
+ functional(name: string, applyFn: VariantFn<'functional'>, { compounds }?: {
280
+ compounds?: boolean;
281
+ }): void;
282
+ compound(name: string, applyFn: VariantFn<'compound'>, { compounds }?: {
283
+ compounds?: boolean;
284
+ }): void;
285
+ group(fn: () => void, compareFn?: CompareFn): void;
286
+ has(name: string): boolean;
287
+ get(name: string): {
288
+ kind: "arbitrary" | "static" | "functional" | "compound";
289
+ order: number;
290
+ applyFn: VariantFn<any>;
291
+ compounds: boolean;
292
+ } | undefined;
293
+ kind(name: string): "arbitrary" | "static" | "functional" | "compound";
294
+ compounds(name: string): boolean;
295
+ suggest(name: string, suggestions: () => string[]): void;
296
+ getCompletions(name: string): string[];
297
+ compare(a: Variant | null, z: Variant | null): number;
298
+ keys(): IterableIterator<string>;
299
+ entries(): IterableIterator<[string, {
300
+ kind: "arbitrary" | "static" | "functional" | "compound";
301
+ order: number;
302
+ applyFn: VariantFn<any>;
303
+ compounds: boolean;
304
+ }]>;
305
+ private set;
306
+ private nextOrder;
307
+ }
308
+
309
+ type DesignSystem = {
310
+ theme: Theme;
311
+ utilities: Utilities;
312
+ variants: Variants;
313
+ candidatesToCss(classes: string[]): (string | null)[];
314
+ getClassOrder(classes: string[]): [string, bigint | null][];
315
+ getClassList(): ClassEntry[];
316
+ getVariants(): VariantEntry[];
317
+ };
318
+
319
+ declare function compile(css: string, rawCandidates: string[]): string;
320
+ declare function optimizeCss(input: string, { file, minify }?: {
321
+ file?: string;
322
+ minify?: boolean;
323
+ }): string;
324
+ declare function __unstable__loadDesignSystem(css: string): DesignSystem;
325
+
326
+ export { __unstable__loadDesignSystem, compile, optimizeCss };
package/dist/lib.d.ts ADDED
@@ -0,0 +1,326 @@
1
+ interface ClassMetadata {
2
+ modifiers: string[];
3
+ }
4
+ type ClassEntry = [string, ClassMetadata];
5
+ interface SelectorOptions {
6
+ modifier?: string;
7
+ value?: string;
8
+ }
9
+ interface VariantEntry {
10
+ name: string;
11
+ isArbitrary: boolean;
12
+ values: string[];
13
+ hasDash: boolean;
14
+ selectors: (options: SelectorOptions) => string[];
15
+ }
16
+
17
+ declare class Theme {
18
+ private values;
19
+ constructor(values?: Map<string, string>);
20
+ add(key: string, value: string): void;
21
+ keysInNamespaces(themeKeys: ThemeKey[]): string[];
22
+ get(themeKeys: ThemeKey[]): string | null;
23
+ entries(): IterableIterator<[string, string]>;
24
+ clearNamespace(namespace: string): void;
25
+ resolveKey(candidateValue: string, themeKeys: ThemeKey[]): string | null;
26
+ var(themeKey: string): string | null;
27
+ resolve(candidateValue: string, themeKeys: ThemeKey[]): string | null;
28
+ resolveBare(candidateValue: string, themeKeys: ThemeKey[]): string | null;
29
+ resolveWith(candidateValue: string, themeKeys: ThemeKey[], nestedKeys?: `--${string}`[]): [string, Record<string, string>] | null;
30
+ namespace(namespace: string): Map<string | null, string>;
31
+ }
32
+ type ThemeKey = '--accent-color' | '--animate' | '--aspect-ratio' | '--backdrop-blur' | '--backdrop-brightness' | '--backdrop-contrast' | '--backdrop-grayscale' | '--backdrop-hue-rotate' | '--backdrop-invert' | '--backdrop-opacity' | '--backdrop-saturate' | '--backdrop-sepia' | '--background-color' | '--background-image' | '--blur' | '--border-color' | '--border-spacing' | '--border-width' | '--box-shadow-color' | '--breakpoint' | '--brightness' | '--caret-color' | '--color' | '--columns' | '--contrast' | '--cursor' | '--default-border-width' | '--default-ring-color' | '--default-ring-width' | '--divide-width' | '--divide-color' | '--drop-shadow' | '--fill' | '--flex-basis' | '--font-family' | '--font-size' | '--font-weight' | '--gap' | '--gradient-color-stop-positions' | '--grayscale' | '--grid-auto-columns' | '--grid-auto-rows' | '--grid-column' | '--grid-column-end' | '--grid-column-start' | '--grid-row' | '--grid-row-end' | '--grid-row-start' | '--grid-template-columns' | '--grid-template-rows' | '--height' | '--hue-rotate' | '--inset' | '--inset-shadow' | '--invert' | '--letter-spacing' | '--line-height' | '--line-clamp' | '--list-style-image' | '--list-style-type' | '--margin' | '--max-height' | '--max-width' | '--min-height' | '--min-width' | '--object-position' | '--opacity' | '--order' | '--outline-color' | '--outline-width' | '--outline-offset' | '--padding' | '--placeholder-color' | '--radius' | '--ring-color' | '--ring-offset-color' | '--ring-offset-width' | '--ring-width' | '--rotate' | '--saturate' | '--scale' | '--scroll-margin' | '--scroll-padding' | '--sepia' | '--shadow' | '--size' | '--skew' | '--space' | '--spacing' | '--stroke' | '--stroke-width' | '--text-color' | '--text-decoration-color' | '--text-decoration-thickness' | '--text-indent' | '--text-underline-offset' | '--transform-origin' | '--transition-delay' | '--transition-duration' | '--transition-property' | '--transition-timing-function' | '--translate' | '--width' | '--z-index';
33
+
34
+ type Rule = {
35
+ kind: 'rule';
36
+ selector: string;
37
+ nodes: AstNode[];
38
+ };
39
+ type Declaration = {
40
+ kind: 'declaration';
41
+ property: string;
42
+ value: string;
43
+ important: boolean;
44
+ };
45
+ type Comment = {
46
+ kind: 'comment';
47
+ value: string;
48
+ };
49
+ type AstNode = Rule | Declaration | Comment;
50
+
51
+ type ArbitraryUtilityValue = {
52
+ kind: 'arbitrary';
53
+ /**
54
+ * bg-[color:--my-color]
55
+ * ^^^^^
56
+ */
57
+ dataType: string | null;
58
+ /**
59
+ * bg-[#0088cc]
60
+ * ^^^^^^^
61
+ * bg-[--my_variable]
62
+ * var(^^^^^^^^^^^^^)
63
+ */
64
+ value: string;
65
+ /**
66
+ * bg-[--my_variable]
67
+ * ^^^^^^^^^^^^^
68
+ */
69
+ dashedIdent: string | null;
70
+ };
71
+ type NamedUtilityValue = {
72
+ kind: 'named';
73
+ /**
74
+ * bg-red-500
75
+ * ^^^^^^^
76
+ *
77
+ * w-1/2
78
+ * ^
79
+ */
80
+ value: string;
81
+ /**
82
+ * w-1/2
83
+ * ^^^
84
+ */
85
+ fraction: string | null;
86
+ };
87
+ type ArbitraryModifier = {
88
+ kind: 'arbitrary';
89
+ /**
90
+ * bg-red-500/[50%]
91
+ * ^^^
92
+ */
93
+ value: string;
94
+ /**
95
+ * bg-red-500/[--my_variable]
96
+ * ^^^^^^^^^^^^^
97
+ */
98
+ dashedIdent: string | null;
99
+ };
100
+ type NamedModifier = {
101
+ kind: 'named';
102
+ /**
103
+ * bg-red-500/50
104
+ * ^^
105
+ */
106
+ value: string;
107
+ };
108
+ type ArbitraryVariantValue = {
109
+ kind: 'arbitrary';
110
+ value: string;
111
+ };
112
+ type NamedVariantValue = {
113
+ kind: 'named';
114
+ value: string;
115
+ };
116
+ type Variant =
117
+ /**
118
+ * Arbitrary variants are variants that take a selector and generate a variant
119
+ * on the fly.
120
+ *
121
+ * E.g.: `[&_p]`
122
+ */
123
+ {
124
+ kind: 'arbitrary';
125
+ selector: string;
126
+ compounds: boolean;
127
+ }
128
+ /**
129
+ * Static variants are variants that don't take any arguments.
130
+ *
131
+ * E.g.: `hover`
132
+ */
133
+ | {
134
+ kind: 'static';
135
+ root: string;
136
+ compounds: boolean;
137
+ }
138
+ /**
139
+ * Functional variants are variants that can take an argument. The argument is
140
+ * either a named variant value or an arbitrary variant value.
141
+ *
142
+ * E.g.:
143
+ *
144
+ * - `aria-disabled`
145
+ * - `aria-[disabled]`
146
+ * - `@container-size` -> @container, with named value `size`
147
+ * - `@container-[inline-size]` -> @container, with arbitrary variant value `inline-size`
148
+ * - `@container` -> @container, with no value
149
+ */
150
+ | {
151
+ kind: 'functional';
152
+ root: string;
153
+ value: ArbitraryVariantValue | NamedVariantValue | null;
154
+ modifier: ArbitraryModifier | NamedModifier | null;
155
+ compounds: boolean;
156
+ }
157
+ /**
158
+ * Compound variants are variants that take another variant as an argument.
159
+ *
160
+ * E.g.:
161
+ *
162
+ * - `has-[&_p]`
163
+ * - `group-*`
164
+ * - `peer-*`
165
+ */
166
+ | {
167
+ kind: 'compound';
168
+ root: string;
169
+ modifier: ArbitraryModifier | NamedModifier | null;
170
+ variant: Variant;
171
+ compounds: boolean;
172
+ };
173
+ type Candidate =
174
+ /**
175
+ * Arbitrary candidates are candidates that register utilities on the fly with
176
+ * a property and a value.
177
+ *
178
+ * E.g.:
179
+ *
180
+ * - `[color:red]`
181
+ * - `[color:red]/50`
182
+ * - `[color:red]/50!`
183
+ */
184
+ {
185
+ kind: 'arbitrary';
186
+ property: string;
187
+ value: string;
188
+ modifier: ArbitraryModifier | NamedModifier | null;
189
+ variants: Variant[];
190
+ important: boolean;
191
+ }
192
+ /**
193
+ * Static candidates are candidates that don't take any arguments.
194
+ *
195
+ * E.g.:
196
+ *
197
+ * - `underline`
198
+ * - `flex`
199
+ */
200
+ | {
201
+ kind: 'static';
202
+ root: string;
203
+ variants: Variant[];
204
+ negative: boolean;
205
+ important: boolean;
206
+ }
207
+ /**
208
+ * Functional candidates are candidates that can take an argument.
209
+ *
210
+ * E.g.:
211
+ *
212
+ * - `bg-red-500`
213
+ * - `bg-[#0088cc]`
214
+ * - `w-1/2`
215
+ */
216
+ | {
217
+ kind: 'functional';
218
+ root: string;
219
+ value: ArbitraryUtilityValue | NamedUtilityValue | null;
220
+ modifier: ArbitraryModifier | NamedModifier | null;
221
+ variants: Variant[];
222
+ negative: boolean;
223
+ important: boolean;
224
+ };
225
+
226
+ type CompileFn<T extends Candidate['kind']> = (value: Extract<Candidate, {
227
+ kind: T;
228
+ }>) => AstNode[] | undefined;
229
+ interface SuggestionGroup {
230
+ supportsNegative?: boolean;
231
+ values: (string | null)[];
232
+ modifiers: string[];
233
+ }
234
+ declare class Utilities {
235
+ private utilities;
236
+ private completions;
237
+ static(name: string, compileFn: CompileFn<'static'>): void;
238
+ functional(name: string, compileFn: CompileFn<'functional'>): void;
239
+ arbitrary(compileFn: CompileFn<'arbitrary'>): void;
240
+ has(name: string): boolean;
241
+ get(name: string | symbol): {
242
+ kind: "arbitrary" | "static" | "functional";
243
+ compileFn: CompileFn<any>;
244
+ } | undefined;
245
+ kind(name: string): "arbitrary" | "static" | "functional";
246
+ getCompletions(name: string): SuggestionGroup[];
247
+ suggest(name: string, groups: () => SuggestionGroup[]): void;
248
+ keys(): IterableIterator<string | symbol>;
249
+ entries(): IterableIterator<[string | symbol, {
250
+ kind: "arbitrary" | "static" | "functional";
251
+ compileFn: CompileFn<any>;
252
+ }]>;
253
+ getArbitrary(): CompileFn<any>;
254
+ private set;
255
+ }
256
+
257
+ type VariantFn<T extends Variant['kind']> = (rule: Rule, variant: Extract<Variant, {
258
+ kind: T;
259
+ }>) => null | void;
260
+ type CompareFn = (a: Variant, z: Variant) => number;
261
+ declare class Variants {
262
+ private compareFns;
263
+ private variants;
264
+ private completions;
265
+ /**
266
+ * Registering a group of variants should result in the same sort number for
267
+ * all the variants. This is to ensure that the variants are applied in the
268
+ * correct order.
269
+ */
270
+ private groupOrder;
271
+ /**
272
+ * Keep track of the last sort order instead of using the size of the map to
273
+ * avoid unnecessarily skipping order numbers.
274
+ */
275
+ private lastOrder;
276
+ static(name: string, applyFn: VariantFn<'static'>, { compounds }?: {
277
+ compounds?: boolean;
278
+ }): void;
279
+ functional(name: string, applyFn: VariantFn<'functional'>, { compounds }?: {
280
+ compounds?: boolean;
281
+ }): void;
282
+ compound(name: string, applyFn: VariantFn<'compound'>, { compounds }?: {
283
+ compounds?: boolean;
284
+ }): void;
285
+ group(fn: () => void, compareFn?: CompareFn): void;
286
+ has(name: string): boolean;
287
+ get(name: string): {
288
+ kind: "arbitrary" | "static" | "functional" | "compound";
289
+ order: number;
290
+ applyFn: VariantFn<any>;
291
+ compounds: boolean;
292
+ } | undefined;
293
+ kind(name: string): "arbitrary" | "static" | "functional" | "compound";
294
+ compounds(name: string): boolean;
295
+ suggest(name: string, suggestions: () => string[]): void;
296
+ getCompletions(name: string): string[];
297
+ compare(a: Variant | null, z: Variant | null): number;
298
+ keys(): IterableIterator<string>;
299
+ entries(): IterableIterator<[string, {
300
+ kind: "arbitrary" | "static" | "functional" | "compound";
301
+ order: number;
302
+ applyFn: VariantFn<any>;
303
+ compounds: boolean;
304
+ }]>;
305
+ private set;
306
+ private nextOrder;
307
+ }
308
+
309
+ type DesignSystem = {
310
+ theme: Theme;
311
+ utilities: Utilities;
312
+ variants: Variants;
313
+ candidatesToCss(classes: string[]): (string | null)[];
314
+ getClassOrder(classes: string[]): [string, bigint | null][];
315
+ getClassList(): ClassEntry[];
316
+ getVariants(): VariantEntry[];
317
+ };
318
+
319
+ declare function compile(css: string, rawCandidates: string[]): string;
320
+ declare function optimizeCss(input: string, { file, minify }?: {
321
+ file?: string;
322
+ minify?: boolean;
323
+ }): string;
324
+ declare function __unstable__loadDesignSystem(css: string): DesignSystem;
325
+
326
+ export { __unstable__loadDesignSystem, compile, optimizeCss };