@pandacss/studio 0.0.0-dev-20230613163214

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 (250) hide show
  1. package/LICENSE.md +21 -0
  2. package/astro.config.ts +14 -0
  3. package/dist/studio.d.ts +13 -0
  4. package/dist/studio.js +2089 -0
  5. package/dist/studio.mjs +2087 -0
  6. package/index.ts +1 -0
  7. package/package.json +59 -0
  8. package/panda.config.ts +110 -0
  9. package/public/favicon.svg +13 -0
  10. package/src/components/analyzer/category-utilities.tsx +146 -0
  11. package/src/components/analyzer/data-combobox.tsx +125 -0
  12. package/src/components/analyzer/data-table.tsx +43 -0
  13. package/src/components/analyzer/external-icon.tsx +8 -0
  14. package/src/components/analyzer/file-details.tsx +101 -0
  15. package/src/components/analyzer/get-report-infos-from.ts +80 -0
  16. package/src/components/analyzer/quick-tooltip.tsx +15 -0
  17. package/src/components/analyzer/report-item-columns.tsx +52 -0
  18. package/src/components/analyzer/report-item-link.tsx +98 -0
  19. package/src/components/analyzer/section.tsx +24 -0
  20. package/src/components/analyzer/sort-icon.tsx +7 -0
  21. package/src/components/analyzer/text-with-count.tsx +28 -0
  22. package/src/components/analyzer/token-search-combobox.tsx +39 -0
  23. package/src/components/analyzer/truncated-text.tsx +26 -0
  24. package/src/components/analyzer/utility-details.tsx +312 -0
  25. package/src/components/color-constrast.tsx +131 -0
  26. package/src/components/color-item.tsx +37 -0
  27. package/src/components/color-wrapper.tsx +25 -0
  28. package/src/components/colors.tsx +96 -0
  29. package/src/components/empty-state.tsx +19 -0
  30. package/src/components/font-family.tsx +55 -0
  31. package/src/components/font-tokens.tsx +69 -0
  32. package/src/components/head.astro +35 -0
  33. package/src/components/icons.tsx +207 -0
  34. package/src/components/input.tsx +27 -0
  35. package/src/components/layer-styles.tsx +38 -0
  36. package/src/components/logo.tsx +34 -0
  37. package/src/components/nav-item.tsx +39 -0
  38. package/src/components/overview.tsx +65 -0
  39. package/src/components/radii.tsx +34 -0
  40. package/src/components/semantic-color.tsx +27 -0
  41. package/src/components/side-nav-item.astro +25 -0
  42. package/src/components/side-nav.astro +30 -0
  43. package/src/components/sizes.tsx +53 -0
  44. package/src/components/text-styles.tsx +33 -0
  45. package/src/components/theme-toggle.astro +56 -0
  46. package/src/components/token-analyzer.tsx +390 -0
  47. package/src/components/token-content.tsx +5 -0
  48. package/src/components/token-group.tsx +6 -0
  49. package/src/components/typography-playground.tsx +83 -0
  50. package/src/env.d.ts +1 -0
  51. package/src/icons/moon.tsx +15 -0
  52. package/src/icons/sun.tsx +19 -0
  53. package/src/layouts/Layout.astro +19 -0
  54. package/src/layouts/Sidebar.astro +35 -0
  55. package/src/lib/analysis-data.ts +17 -0
  56. package/src/lib/color-contrast-checker.ts +218 -0
  57. package/src/lib/color.ts +40 -0
  58. package/src/lib/constants.ts +140 -0
  59. package/src/lib/create-context.ts +27 -0
  60. package/src/lib/get-report-item.tsx +41 -0
  61. package/src/lib/group-in.ts +35 -0
  62. package/src/lib/panda.context.ts +23 -0
  63. package/src/lib/pick.ts +24 -0
  64. package/src/lib/sizes-sort.ts +10 -0
  65. package/src/lib/truncate.tsx +7 -0
  66. package/src/lib/use-color-docs.ts +101 -0
  67. package/src/pages/colors.astro +11 -0
  68. package/src/pages/font-sizes.astro +15 -0
  69. package/src/pages/font-weights.astro +15 -0
  70. package/src/pages/fonts.astro +11 -0
  71. package/src/pages/index.astro +8 -0
  72. package/src/pages/layer-styles.astro +11 -0
  73. package/src/pages/letter-spacings.astro +20 -0
  74. package/src/pages/line-heights.astro +21 -0
  75. package/src/pages/playground/contrast-checker.astro +11 -0
  76. package/src/pages/playground/typography.astro +11 -0
  77. package/src/pages/radii.astro +11 -0
  78. package/src/pages/sizes.astro +14 -0
  79. package/src/pages/spacing.astro +14 -0
  80. package/src/pages/text-styles.astro +11 -0
  81. package/src/pages/token-analyzer/file.astro +11 -0
  82. package/src/pages/token-analyzer/index.astro +11 -0
  83. package/src/pages/token-analyzer/utility.astro +11 -0
  84. package/styled-system/chunks/..__core____tests____composition.test.css +2 -0
  85. package/styled-system/chunks/src__components__analyzer__category-utilities.css +97 -0
  86. package/styled-system/chunks/src__components__analyzer__data-combobox.css +77 -0
  87. package/styled-system/chunks/src__components__analyzer__data-table.css +37 -0
  88. package/styled-system/chunks/src__components__analyzer__file-details.css +103 -0
  89. package/styled-system/chunks/src__components__analyzer__quick-tooltip.css +2 -0
  90. package/styled-system/chunks/src__components__analyzer__report-item-columns.css +29 -0
  91. package/styled-system/chunks/src__components__analyzer__report-item-link.css +109 -0
  92. package/styled-system/chunks/src__components__analyzer__section.css +29 -0
  93. package/styled-system/chunks/src__components__analyzer__text-with-count.css +33 -0
  94. package/styled-system/chunks/src__components__analyzer__truncated-text.css +13 -0
  95. package/styled-system/chunks/src__components__analyzer__utility-details.css +125 -0
  96. package/styled-system/chunks/src__components__color-constrast.css +114 -0
  97. package/styled-system/chunks/src__components__color-item.css +21 -0
  98. package/styled-system/chunks/src__components__color-wrapper.css +73 -0
  99. package/styled-system/chunks/src__components__colors.css +97 -0
  100. package/styled-system/chunks/src__components__empty-state.css +45 -0
  101. package/styled-system/chunks/src__components__font-family.css +85 -0
  102. package/styled-system/chunks/src__components__font-tokens.css +61 -0
  103. package/styled-system/chunks/src__components__input.css +68 -0
  104. package/styled-system/chunks/src__components__layer-styles.css +66 -0
  105. package/styled-system/chunks/src__components__nav-item.css +73 -0
  106. package/styled-system/chunks/src__components__overview.css +125 -0
  107. package/styled-system/chunks/src__components__radii.css +49 -0
  108. package/styled-system/chunks/src__components__semantic-color.css +45 -0
  109. package/styled-system/chunks/src__components__side-nav-item.css +33 -0
  110. package/styled-system/chunks/src__components__side-nav.css +49 -0
  111. package/styled-system/chunks/src__components__sizes.css +41 -0
  112. package/styled-system/chunks/src__components__text-styles.css +31 -0
  113. package/styled-system/chunks/src__components__theme-toggle.css +63 -0
  114. package/styled-system/chunks/src__components__token-analyzer.css +227 -0
  115. package/styled-system/chunks/src__components__token-content.css +13 -0
  116. package/styled-system/chunks/src__components__token-group.css +21 -0
  117. package/styled-system/chunks/src__components__token-search-combobox.css +2 -0
  118. package/styled-system/chunks/src__components__typography-playground.css +61 -0
  119. package/styled-system/chunks/src__layouts__Layout.css +2 -0
  120. package/styled-system/chunks/src__layouts__Sidebar.css +113 -0
  121. package/styled-system/chunks/src__pages__colors.css +2 -0
  122. package/styled-system/chunks/src__pages__font-sizes.css +2 -0
  123. package/styled-system/chunks/src__pages__font-weights.css +2 -0
  124. package/styled-system/chunks/src__pages__fonts.css +2 -0
  125. package/styled-system/chunks/src__pages__index.css +2 -0
  126. package/styled-system/chunks/src__pages__layer-styles.css +2 -0
  127. package/styled-system/chunks/src__pages__letter-spacings.css +2 -0
  128. package/styled-system/chunks/src__pages__line-heights.css +2 -0
  129. package/styled-system/chunks/src__pages__playground__contrast-checker.css +2 -0
  130. package/styled-system/chunks/src__pages__playground__typography.css +2 -0
  131. package/styled-system/chunks/src__pages__radii.css +2 -0
  132. package/styled-system/chunks/src__pages__sizes.css +2 -0
  133. package/styled-system/chunks/src__pages__spacing.css +2 -0
  134. package/styled-system/chunks/src__pages__text-styles.css +2 -0
  135. package/styled-system/chunks/src__pages__token-analyzer__file.css +2 -0
  136. package/styled-system/chunks/src__pages__token-analyzer__index.css +2 -0
  137. package/styled-system/chunks/src__pages__token-analyzer__utility.css +2 -0
  138. package/styled-system/css/conditions.mjs +147 -0
  139. package/styled-system/css/css.d.ts +2 -0
  140. package/styled-system/css/css.mjs +391 -0
  141. package/styled-system/css/cva.d.ts +5 -0
  142. package/styled-system/css/cva.mjs +63 -0
  143. package/styled-system/css/cx.d.ts +4 -0
  144. package/styled-system/css/cx.mjs +15 -0
  145. package/styled-system/css/index.d.ts +3 -0
  146. package/styled-system/css/index.mjs +3 -0
  147. package/styled-system/global.css +61 -0
  148. package/styled-system/helpers.mjs +251 -0
  149. package/styled-system/jsx/absolute-center.d.ts +8 -0
  150. package/styled-system/jsx/absolute-center.mjs +9 -0
  151. package/styled-system/jsx/aspect-ratio.d.ts +8 -0
  152. package/styled-system/jsx/aspect-ratio.mjs +9 -0
  153. package/styled-system/jsx/box.d.ts +8 -0
  154. package/styled-system/jsx/box.mjs +8 -0
  155. package/styled-system/jsx/center.d.ts +8 -0
  156. package/styled-system/jsx/center.mjs +9 -0
  157. package/styled-system/jsx/circle.d.ts +8 -0
  158. package/styled-system/jsx/circle.mjs +9 -0
  159. package/styled-system/jsx/container.d.ts +8 -0
  160. package/styled-system/jsx/container.mjs +8 -0
  161. package/styled-system/jsx/divider.d.ts +8 -0
  162. package/styled-system/jsx/divider.mjs +9 -0
  163. package/styled-system/jsx/factory.d.ts +2 -0
  164. package/styled-system/jsx/factory.mjs +59 -0
  165. package/styled-system/jsx/flex.d.ts +8 -0
  166. package/styled-system/jsx/flex.mjs +9 -0
  167. package/styled-system/jsx/float.d.ts +8 -0
  168. package/styled-system/jsx/float.mjs +9 -0
  169. package/styled-system/jsx/grid-item.d.ts +8 -0
  170. package/styled-system/jsx/grid-item.mjs +9 -0
  171. package/styled-system/jsx/grid.d.ts +8 -0
  172. package/styled-system/jsx/grid.mjs +9 -0
  173. package/styled-system/jsx/hstack.d.ts +8 -0
  174. package/styled-system/jsx/hstack.mjs +9 -0
  175. package/styled-system/jsx/index.d.ts +20 -0
  176. package/styled-system/jsx/index.mjs +19 -0
  177. package/styled-system/jsx/is-valid-prop.mjs +1010 -0
  178. package/styled-system/jsx/spacer.d.ts +8 -0
  179. package/styled-system/jsx/spacer.mjs +9 -0
  180. package/styled-system/jsx/square.d.ts +8 -0
  181. package/styled-system/jsx/square.mjs +9 -0
  182. package/styled-system/jsx/stack.d.ts +8 -0
  183. package/styled-system/jsx/stack.mjs +9 -0
  184. package/styled-system/jsx/styled-link.d.ts +8 -0
  185. package/styled-system/jsx/styled-link.mjs +8 -0
  186. package/styled-system/jsx/vstack.d.ts +8 -0
  187. package/styled-system/jsx/vstack.mjs +9 -0
  188. package/styled-system/jsx/wrap.d.ts +8 -0
  189. package/styled-system/jsx/wrap.mjs +9 -0
  190. package/styled-system/patterns/absolute-center.d.ts +14 -0
  191. package/styled-system/patterns/absolute-center.mjs +23 -0
  192. package/styled-system/patterns/aspect-ratio.d.ts +14 -0
  193. package/styled-system/patterns/aspect-ratio.mjs +25 -0
  194. package/styled-system/patterns/box.d.ts +14 -0
  195. package/styled-system/patterns/box.mjs +12 -0
  196. package/styled-system/patterns/center.d.ts +14 -0
  197. package/styled-system/patterns/center.mjs +18 -0
  198. package/styled-system/patterns/circle.d.ts +14 -0
  199. package/styled-system/patterns/circle.mjs +22 -0
  200. package/styled-system/patterns/container.d.ts +14 -0
  201. package/styled-system/patterns/container.mjs +18 -0
  202. package/styled-system/patterns/divider.d.ts +16 -0
  203. package/styled-system/patterns/divider.mjs +21 -0
  204. package/styled-system/patterns/flex.d.ts +20 -0
  205. package/styled-system/patterns/flex.mjs +23 -0
  206. package/styled-system/patterns/float.d.ts +17 -0
  207. package/styled-system/patterns/float.mjs +45 -0
  208. package/styled-system/patterns/grid-item.d.ts +19 -0
  209. package/styled-system/patterns/grid-item.mjs +20 -0
  210. package/styled-system/patterns/grid.d.ts +18 -0
  211. package/styled-system/patterns/grid.mjs +25 -0
  212. package/styled-system/patterns/hstack.d.ts +15 -0
  213. package/styled-system/patterns/hstack.mjs +20 -0
  214. package/styled-system/patterns/index.d.ts +18 -0
  215. package/styled-system/patterns/index.mjs +18 -0
  216. package/styled-system/patterns/spacer.d.ts +14 -0
  217. package/styled-system/patterns/spacer.mjs +18 -0
  218. package/styled-system/patterns/square.d.ts +14 -0
  219. package/styled-system/patterns/square.mjs +21 -0
  220. package/styled-system/patterns/stack.d.ts +17 -0
  221. package/styled-system/patterns/stack.mjs +20 -0
  222. package/styled-system/patterns/styled-link.d.ts +14 -0
  223. package/styled-system/patterns/styled-link.mjs +18 -0
  224. package/styled-system/patterns/vstack.d.ts +15 -0
  225. package/styled-system/patterns/vstack.mjs +20 -0
  226. package/styled-system/patterns/wrap.d.ts +18 -0
  227. package/styled-system/patterns/wrap.mjs +22 -0
  228. package/styled-system/reset.css +190 -0
  229. package/styled-system/static.css +5 -0
  230. package/styled-system/styles.css +938 -0
  231. package/styled-system/tokens/index.css +374 -0
  232. package/styled-system/tokens/index.d.ts +8 -0
  233. package/styled-system/tokens/index.mjs +1590 -0
  234. package/styled-system/tokens/keyframes.css +30 -0
  235. package/styled-system/tokens/tokens.d.ts +56 -0
  236. package/styled-system/types/composition.d.ts +110 -0
  237. package/styled-system/types/conditions.d.ts +135 -0
  238. package/styled-system/types/csstype.d.ts +20748 -0
  239. package/styled-system/types/global.d.ts +15 -0
  240. package/styled-system/types/helpers.d.ts +1 -0
  241. package/styled-system/types/index.d.ts +3 -0
  242. package/styled-system/types/jsx.d.ts +27 -0
  243. package/styled-system/types/parts.d.ts +5 -0
  244. package/styled-system/types/pattern.d.ts +52 -0
  245. package/styled-system/types/prop-type.d.ts +300 -0
  246. package/styled-system/types/recipe.d.ts +79 -0
  247. package/styled-system/types/selectors.d.ts +56 -0
  248. package/styled-system/types/style-props.d.ts +688 -0
  249. package/styled-system/types/system-types.d.ts +76 -0
  250. package/virtual-panda.ts +72 -0
@@ -0,0 +1,15 @@
1
+ import { RecipeVariantRecord, RecipeConfig } from './recipe'
2
+ import { Parts } from './parts'
3
+ import { PatternConfig } from './pattern'
4
+ import { GlobalStyleObject, SystemStyleObject } from './system-types'
5
+ import { CompositionStyles } from './composition'
6
+
7
+ declare module '@pandacss/dev' {
8
+ export function defineRecipe<V extends RecipeVariantRecord>(config: RecipeConfig<V>): RecipeConfig
9
+ export function defineStyles(definition: SystemStyleObject): SystemStyleObject
10
+ export function defineGlobalStyles(definition: GlobalStyleObject): GlobalStyleObject
11
+ export function defineTextStyles(definition: CompositionStyles['textStyles']): CompositionStyles['textStyles']
12
+ export function defineLayerStyles(definition: CompositionStyles['layerStyles']): CompositionStyles['layerStyles']
13
+ export function definePattern<T>(config: PatternConfig<T>): PatternConfig
14
+ export function defineParts<T extends Parts>(parts: T): (config: Partial<Record<keyof T, SystemStyleObject>>) => Partial<Record<keyof T, SystemStyleObject>>;
15
+ }
@@ -0,0 +1 @@
1
+ export type Pretty<T> = T extends infer U ? { [K in keyof U]: U[K] } : never
@@ -0,0 +1,3 @@
1
+ import './global'
2
+ export { ConditionalValue } from './conditions'
3
+ export { GlobalStyleObject, JsxStyleProps, SystemStyleObject } from './system-types'
@@ -0,0 +1,27 @@
1
+ import type { ComponentProps, ElementType } from 'react'
2
+ import type { Assign, JsxStyleProps, JsxHTMLProps } from './system-types'
3
+ import type { RecipeDefinition, RecipeSelection, RecipeVariantRecord } from './recipe'
4
+
5
+ type Dict = Record<string, unknown>
6
+
7
+ export type PandaComponent<T extends ElementType, P extends Dict = {}> = {
8
+ (props: JsxHTMLProps<ComponentProps<T>, Assign<JsxStyleProps, P>>): JSX.Element
9
+ displayName?: string
10
+ }
11
+
12
+ type RecipeFn = { __type: any }
13
+
14
+ interface JsxFactory {
15
+ <T extends ElementType>(component: T): PandaComponent<T, {}>
16
+ <T extends ElementType, P extends RecipeVariantRecord>(component: T, recipe: RecipeDefinition<P>): PandaComponent<
17
+ T,
18
+ RecipeSelection<P>
19
+ >
20
+ <T extends ElementType, P extends RecipeFn>(component: T, recipeFn: P): PandaComponent<T, P['__type']>
21
+ }
22
+
23
+ type JsxElements = { [K in keyof JSX.IntrinsicElements]: PandaComponent<K, {}> }
24
+
25
+ export type Panda = JsxFactory & JsxElements
26
+
27
+ export type HTMLPandaProps<T extends ElementType> = JsxHTMLProps<ComponentProps<T>, JsxStyleProps>
@@ -0,0 +1,5 @@
1
+ export type Part = {
2
+ selector: string
3
+ }
4
+
5
+ export type Parts = Record<string, Part>
@@ -0,0 +1,52 @@
1
+ import type { CssProperty, SystemStyleObject } from './system-types'
2
+ import type { TokenCategory } from '../tokens'
3
+
4
+ type Primitive = string | number | boolean | null | undefined
5
+ type LiteralUnion<T, K extends Primitive = string> = T | (K & Record<never, never>)
6
+
7
+ export type PatternProperty =
8
+ | { type: 'property'; value: CssProperty }
9
+ | { type: 'enum'; value: string[] }
10
+ | { type: 'token'; value: TokenCategory; property?: CssProperty }
11
+ | { type: 'string' | 'boolean' | 'number' }
12
+
13
+ export type PatternHelpers = {
14
+ map: (value: any, fn: (value: string) => string | undefined) => any
15
+ }
16
+
17
+ export type PatternConfig<T = PatternProperty> = {
18
+ /**
19
+ * The description of the pattern. This will be used in the JSDoc comment.
20
+ */
21
+ description?: string
22
+ /**
23
+ * The JSX element rendered by the pattern
24
+ * @default 'div'
25
+ */
26
+ jsxElement?: string
27
+ /**
28
+ * The properties of the pattern.
29
+ */
30
+ properties: T extends Record<string, PatternProperty> ? T : Record<string, PatternProperty>
31
+ /**
32
+ * The css object this pattern will generate.
33
+ */
34
+ transform?: (
35
+ props: T extends Record<infer Keys, PatternProperty> ? Record<Keys, any> : Record<string, PatternProperty>,
36
+ helpers: PatternHelpers,
37
+ ) => SystemStyleObject
38
+ /**
39
+ * The jsx element name this pattern will generate.
40
+ */
41
+ jsx?: string
42
+ /**
43
+ * Whether to only generate types for the specified properties.
44
+ * This will disallow css properties
45
+ */
46
+ strict?: boolean
47
+ /**
48
+ * @experimental
49
+ * Disallow certain css properties for this pattern
50
+ */
51
+ blocklist?: LiteralUnion<CssProperty>[]
52
+ }
@@ -0,0 +1,300 @@
1
+ import type { ConditionalValue } from './conditions';
2
+ import type { CssProperties } from './system-types'
3
+ import type { Tokens } from '../tokens'
4
+
5
+ type PropertyValueTypes = {
6
+ aspectRatio: "square" | "landscape" | "portrait" | "wide" | "ultrawide" | "golden";
7
+ top: Tokens["spacing"];
8
+ left: Tokens["spacing"];
9
+ insetInline: Tokens["spacing"];
10
+ insetBlock: Tokens["spacing"];
11
+ inset: Tokens["spacing"];
12
+ insetBlockEnd: Tokens["spacing"];
13
+ insetBlockStart: Tokens["spacing"];
14
+ insetInlineEnd: Tokens["spacing"];
15
+ insetInlineStart: Tokens["spacing"];
16
+ right: Tokens["spacing"];
17
+ bottom: Tokens["spacing"];
18
+ insetX: Tokens["spacing"] | CssProperties["insetInline"];
19
+ insetY: Tokens["spacing"] | CssProperties["insetBlock"];
20
+ float: "left" | "right" | "start" | "end";
21
+ hideFrom: Tokens["breakpoints"];
22
+ hideBelow: Tokens["breakpoints"];
23
+ flexBasis: Tokens["spacing"] | "1/2" | "1/3" | "2/3" | "1/4" | "2/4" | "3/4" | "1/5" | "2/5" | "3/5" | "4/5" | "1/6" | "2/6" | "3/6" | "4/6" | "5/6" | "1/12" | "2/12" | "3/12" | "4/12" | "5/12" | "6/12" | "7/12" | "8/12" | "9/12" | "10/12" | "11/12" | "full";
24
+ flex: "1" | "auto" | "initial" | "none";
25
+ gridTemplateColumns: "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "10" | "11" | "12";
26
+ gridTemplateRows: "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "10" | "11" | "12";
27
+ gridColumn: "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "10" | "11" | "12" | "full";
28
+ gridRow: "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "10" | "11" | "12" | "full";
29
+ gridAutoColumns: "min" | "max" | "fr";
30
+ gridAutoRows: "min" | "max" | "fr";
31
+ gap: Tokens["spacing"];
32
+ gridGap: Tokens["spacing"];
33
+ gridRowGap: Tokens["spacing"];
34
+ gridColumnGap: Tokens["spacing"];
35
+ rowGap: Tokens["spacing"];
36
+ columnGap: Tokens["spacing"];
37
+ padding: Tokens["spacing"];
38
+ paddingLeft: Tokens["spacing"];
39
+ paddingRight: Tokens["spacing"];
40
+ paddingTop: Tokens["spacing"];
41
+ paddingBottom: Tokens["spacing"];
42
+ paddingBlock: Tokens["spacing"];
43
+ paddingBlockEnd: Tokens["spacing"];
44
+ paddingBlockStart: Tokens["spacing"];
45
+ paddingInline: Tokens["spacing"];
46
+ paddingInlineEnd: Tokens["spacing"];
47
+ paddingInlineStart: Tokens["spacing"];
48
+ marginLeft: Tokens["spacing"];
49
+ marginRight: Tokens["spacing"];
50
+ marginTop: Tokens["spacing"];
51
+ marginBottom: Tokens["spacing"];
52
+ margin: Tokens["spacing"];
53
+ marginBlock: Tokens["spacing"];
54
+ marginBlockEnd: Tokens["spacing"];
55
+ marginBlockStart: Tokens["spacing"];
56
+ marginInline: Tokens["spacing"];
57
+ marginInlineEnd: Tokens["spacing"];
58
+ marginInlineStart: Tokens["spacing"];
59
+ outlineColor: Tokens["colors"];
60
+ outline: Tokens["borders"];
61
+ outlineOffset: Tokens["spacing"];
62
+ divideX: string;
63
+ divideY: string;
64
+ divideColor: Tokens["colors"];
65
+ divideStyle: CssProperties["borderStyle"];
66
+ width: Tokens["sizes"] | "1/2" | "1/3" | "2/3" | "1/4" | "2/4" | "3/4" | "1/5" | "2/5" | "3/5" | "4/5" | "1/6" | "2/6" | "3/6" | "4/6" | "5/6" | "1/12" | "2/12" | "3/12" | "4/12" | "5/12" | "6/12" | "7/12" | "8/12" | "9/12" | "10/12" | "11/12" | "screen";
67
+ inlineSize: Tokens["sizes"] | "1/2" | "1/3" | "2/3" | "1/4" | "2/4" | "3/4" | "1/5" | "2/5" | "3/5" | "4/5" | "1/6" | "2/6" | "3/6" | "4/6" | "5/6" | "1/12" | "2/12" | "3/12" | "4/12" | "5/12" | "6/12" | "7/12" | "8/12" | "9/12" | "10/12" | "11/12" | "screen";
68
+ minWidth: Tokens["sizes"] | "1/2" | "1/3" | "2/3" | "1/4" | "2/4" | "3/4" | "1/5" | "2/5" | "3/5" | "4/5" | "1/6" | "2/6" | "3/6" | "4/6" | "5/6" | "1/12" | "2/12" | "3/12" | "4/12" | "5/12" | "6/12" | "7/12" | "8/12" | "9/12" | "10/12" | "11/12" | "screen";
69
+ minInlineSize: Tokens["sizes"] | "1/2" | "1/3" | "2/3" | "1/4" | "2/4" | "3/4" | "1/5" | "2/5" | "3/5" | "4/5" | "1/6" | "2/6" | "3/6" | "4/6" | "5/6" | "1/12" | "2/12" | "3/12" | "4/12" | "5/12" | "6/12" | "7/12" | "8/12" | "9/12" | "10/12" | "11/12" | "screen";
70
+ maxWidth: Tokens["sizes"] | "1/2" | "1/3" | "2/3" | "1/4" | "2/4" | "3/4" | "1/5" | "2/5" | "3/5" | "4/5" | "1/6" | "2/6" | "3/6" | "4/6" | "5/6" | "1/12" | "2/12" | "3/12" | "4/12" | "5/12" | "6/12" | "7/12" | "8/12" | "9/12" | "10/12" | "11/12" | "screen";
71
+ maxInlineSize: Tokens["sizes"] | "1/2" | "1/3" | "2/3" | "1/4" | "2/4" | "3/4" | "1/5" | "2/5" | "3/5" | "4/5" | "1/6" | "2/6" | "3/6" | "4/6" | "5/6" | "1/12" | "2/12" | "3/12" | "4/12" | "5/12" | "6/12" | "7/12" | "8/12" | "9/12" | "10/12" | "11/12" | "screen";
72
+ height: Tokens["sizes"] | "svh" | "lvh" | "dvh" | "screen" | "1/2" | "1/3" | "2/3" | "1/4" | "2/4" | "3/4" | "1/5" | "2/5" | "3/5" | "4/5" | "1/6" | "2/6" | "3/6" | "4/6" | "5/6";
73
+ blockSize: Tokens["sizes"] | "svh" | "lvh" | "dvh" | "screen" | "1/2" | "1/3" | "2/3" | "1/4" | "2/4" | "3/4" | "1/5" | "2/5" | "3/5" | "4/5" | "1/6" | "2/6" | "3/6" | "4/6" | "5/6";
74
+ minHeight: Tokens["sizes"] | "svh" | "lvh" | "dvh" | "screen" | "1/2" | "1/3" | "2/3" | "1/4" | "2/4" | "3/4" | "1/5" | "2/5" | "3/5" | "4/5" | "1/6" | "2/6" | "3/6" | "4/6" | "5/6";
75
+ minBlockSize: Tokens["sizes"] | "svh" | "lvh" | "dvh" | "screen" | "1/2" | "1/3" | "2/3" | "1/4" | "2/4" | "3/4" | "1/5" | "2/5" | "3/5" | "4/5" | "1/6" | "2/6" | "3/6" | "4/6" | "5/6";
76
+ maxHeight: Tokens["sizes"] | "svh" | "lvh" | "dvh" | "screen" | "1/2" | "1/3" | "2/3" | "1/4" | "2/4" | "3/4" | "1/5" | "2/5" | "3/5" | "4/5" | "1/6" | "2/6" | "3/6" | "4/6" | "5/6";
77
+ maxBlockSize: Tokens["sizes"] | "svh" | "lvh" | "dvh" | "screen" | "1/2" | "1/3" | "2/3" | "1/4" | "2/4" | "3/4" | "1/5" | "2/5" | "3/5" | "4/5" | "1/6" | "2/6" | "3/6" | "4/6" | "5/6";
78
+ color: Tokens["colors"];
79
+ fontFamily: Tokens["fonts"];
80
+ fontSize: Tokens["fontSizes"];
81
+ fontWeight: Tokens["fontWeights"];
82
+ fontSmoothing: "antialiased" | "subpixel-antialiased";
83
+ letterSpacing: Tokens["letterSpacings"];
84
+ lineHeight: Tokens["lineHeights"];
85
+ textDecorationColor: Tokens["colors"];
86
+ textEmphasisColor: Tokens["colors"];
87
+ textIndent: Tokens["spacing"];
88
+ textShadow: Tokens["shadows"];
89
+ textWrap: "wrap" | "balance" | "nowrap";
90
+ truncate: boolean;
91
+ listStyleImage: Tokens["assets"];
92
+ background: Tokens["colors"];
93
+ backgroundColor: Tokens["colors"];
94
+ backgroundImage: Tokens["assets"];
95
+ backgroundGradient: Tokens["gradients"] | "to-t" | "to-tr" | "to-r" | "to-br" | "to-b" | "to-bl" | "to-l" | "to-tl";
96
+ textGradient: Tokens["gradients"] | "to-t" | "to-tr" | "to-r" | "to-br" | "to-b" | "to-bl" | "to-l" | "to-tl";
97
+ gradientFrom: Tokens["colors"];
98
+ gradientTo: Tokens["colors"];
99
+ gradientVia: Tokens["colors"];
100
+ borderRadius: Tokens["radii"];
101
+ borderTopLeftRadius: Tokens["radii"];
102
+ borderTopRightRadius: Tokens["radii"];
103
+ borderBottomRightRadius: Tokens["radii"];
104
+ borderBottomLeftRadius: Tokens["radii"];
105
+ borderTopRadius: Tokens["radii"] | CssProperties["borderRadius"];
106
+ borderRightRadius: Tokens["radii"] | CssProperties["borderRadius"];
107
+ borderBottomRadius: Tokens["radii"] | CssProperties["borderRadius"];
108
+ borderLeftRadius: Tokens["radii"] | CssProperties["borderRadius"];
109
+ borderStartStartRadius: Tokens["radii"];
110
+ borderStartEndRadius: Tokens["radii"];
111
+ borderStartRadius: Tokens["radii"] | CssProperties["borderRadius"];
112
+ borderEndStartRadius: Tokens["radii"];
113
+ borderEndEndRadius: Tokens["radii"];
114
+ borderEndRadius: Tokens["radii"] | CssProperties["borderRadius"];
115
+ border: Tokens["borders"];
116
+ borderColor: Tokens["colors"];
117
+ borderInline: Tokens["borders"];
118
+ borderInlineWidth: Tokens["borderWidths"];
119
+ borderInlineColor: Tokens["colors"];
120
+ borderBlock: Tokens["borders"];
121
+ borderBlockWidth: Tokens["borderWidths"];
122
+ borderBlockColor: Tokens["colors"];
123
+ borderLeft: Tokens["borders"];
124
+ borderLeftColor: Tokens["colors"];
125
+ borderInlineStart: Tokens["borders"];
126
+ borderInlineStartColor: Tokens["colors"];
127
+ borderRight: Tokens["borders"];
128
+ borderRightColor: Tokens["colors"];
129
+ borderInlineEnd: Tokens["borders"];
130
+ borderInlineEndColor: Tokens["colors"];
131
+ borderTop: Tokens["borders"];
132
+ borderTopColor: Tokens["colors"];
133
+ borderBottom: Tokens["borders"];
134
+ borderBottomColor: Tokens["colors"];
135
+ borderBlockEnd: Tokens["borders"];
136
+ borderBlockEndColor: Tokens["colors"];
137
+ borderBlockStart: Tokens["borders"];
138
+ borderBlockStartColor: Tokens["colors"];
139
+ boxShadow: Tokens["shadows"];
140
+ boxShadowColor: Tokens["colors"];
141
+ filter: "auto";
142
+ dropShadow: Tokens["dropShadows"];
143
+ blur: Tokens["blurs"];
144
+ backdropFilter: "auto";
145
+ backdropBlur: Tokens["blurs"];
146
+ borderSpacing: Tokens["spacing"];
147
+ borderSpacingX: Tokens["spacing"];
148
+ borderSpacingY: Tokens["spacing"];
149
+ transitionTimingFunction: Tokens["easings"];
150
+ transitionDelay: Tokens["durations"];
151
+ transitionDuration: Tokens["durations"];
152
+ transitionProperty: "all" | "none" | "opacity" | "shadow" | "transform" | "base" | "background" | "colors";
153
+ animation: Tokens["animations"];
154
+ animationDelay: Tokens["durations"];
155
+ transform: "auto" | "auto-gpu";
156
+ translateX: Tokens["spacing"] | "1/2" | "1/3" | "2/3" | "1/4" | "2/4" | "3/4" | "full";
157
+ translateY: Tokens["spacing"] | "1/2" | "1/3" | "2/3" | "1/4" | "2/4" | "3/4" | "full";
158
+ accentColor: Tokens["colors"];
159
+ caretColor: Tokens["colors"];
160
+ scrollbar: "visible" | "hidden";
161
+ scrollMargin: Tokens["spacing"];
162
+ scrollMarginX: Tokens["spacing"] | CssProperties["scrollMarginInline"];
163
+ scrollMarginY: Tokens["spacing"] | CssProperties["scrollMarginBlock"];
164
+ scrollMarginLeft: Tokens["spacing"];
165
+ scrollMarginRight: Tokens["spacing"];
166
+ scrollMarginTop: Tokens["spacing"];
167
+ scrollMarginBottom: Tokens["spacing"];
168
+ scrollMarginBlock: Tokens["spacing"];
169
+ scrollMarginBlockEnd: Tokens["spacing"];
170
+ scrollMarginBlockStart: Tokens["spacing"];
171
+ scrollMarginInline: Tokens["spacing"];
172
+ scrollMarginInlineEnd: Tokens["spacing"];
173
+ scrollMarginInlineStart: Tokens["spacing"];
174
+ scrollPadding: Tokens["spacing"];
175
+ scrollPaddingBlock: Tokens["spacing"];
176
+ scrollPaddingBlockStart: Tokens["spacing"];
177
+ scrollPaddingBlockEnd: Tokens["spacing"];
178
+ scrollPaddingInline: Tokens["spacing"];
179
+ scrollPaddingInlineEnd: Tokens["spacing"];
180
+ scrollPaddingInlineStart: Tokens["spacing"];
181
+ scrollPaddingX: Tokens["spacing"] | CssProperties["scrollPaddingInline"];
182
+ scrollPaddingY: Tokens["spacing"] | CssProperties["scrollPaddingBlock"];
183
+ scrollPaddingLeft: Tokens["spacing"];
184
+ scrollPaddingRight: Tokens["spacing"];
185
+ scrollPaddingTop: Tokens["spacing"];
186
+ scrollPaddingBottom: Tokens["spacing"];
187
+ scrollSnapType: "none" | "x" | "y" | "both";
188
+ scrollSnapStrictness: "mandatory" | "proximity";
189
+ scrollSnapMargin: Tokens["spacing"];
190
+ scrollSnapMarginTop: Tokens["spacing"];
191
+ scrollSnapMarginBottom: Tokens["spacing"];
192
+ scrollSnapMarginLeft: Tokens["spacing"];
193
+ scrollSnapMarginRight: Tokens["spacing"];
194
+ fill: Tokens["colors"];
195
+ stroke: Tokens["colors"];
196
+ srOnly: boolean;
197
+ debug: boolean;
198
+ colorPalette: "rose" | "pink" | "fuchsia" | "purple" | "indigo" | "blue" | "sky" | "cyan" | "teal" | "green" | "lime" | "yellow" | "orange" | "red" | "gray" | "slate" | "neutral";
199
+ textStyle: "xs" | "sm" | "md" | "lg" | "xl" | "2xl" | "3xl" | "4xl" | "5xl" | "6xl" | "7xl" | "8xl" | "9xl";
200
+ }
201
+
202
+
203
+
204
+ type CssValue<T> = T extends keyof CssProperties ? CssProperties[T] : never
205
+
206
+ type Shorthand<T> = T extends keyof PropertyValueTypes ? PropertyValueTypes[T] | CssValue<T> : CssValue<T>
207
+
208
+ export type PropertyTypes = PropertyValueTypes & {
209
+
210
+ pos: Shorthand<"position">;
211
+ insetEnd: Shorthand<"insetInlineEnd">;
212
+ end: Shorthand<"insetInlineEnd">;
213
+ insetStart: Shorthand<"insetInlineStart">;
214
+ start: Shorthand<"insetInlineStart">;
215
+ flexDir: Shorthand<"flexDirection">;
216
+ p: Shorthand<"padding">;
217
+ pl: Shorthand<"paddingLeft">;
218
+ pr: Shorthand<"paddingRight">;
219
+ pt: Shorthand<"paddingTop">;
220
+ pb: Shorthand<"paddingBottom">;
221
+ py: Shorthand<"paddingBlock">;
222
+ paddingY: Shorthand<"paddingBlock">;
223
+ paddingX: Shorthand<"paddingInline">;
224
+ px: Shorthand<"paddingInline">;
225
+ pe: Shorthand<"paddingInlineEnd">;
226
+ paddingEnd: Shorthand<"paddingInlineEnd">;
227
+ ps: Shorthand<"paddingInlineStart">;
228
+ paddingStart: Shorthand<"paddingInlineStart">;
229
+ ml: Shorthand<"marginLeft">;
230
+ mr: Shorthand<"marginRight">;
231
+ mt: Shorthand<"marginTop">;
232
+ mb: Shorthand<"marginBottom">;
233
+ m: Shorthand<"margin">;
234
+ my: Shorthand<"marginBlock">;
235
+ marginY: Shorthand<"marginBlock">;
236
+ mx: Shorthand<"marginInline">;
237
+ marginX: Shorthand<"marginInline">;
238
+ me: Shorthand<"marginInlineEnd">;
239
+ marginEnd: Shorthand<"marginInlineEnd">;
240
+ ms: Shorthand<"marginInlineStart">;
241
+ marginStart: Shorthand<"marginInlineStart">;
242
+ ringWidth: Shorthand<"outlineWidth">;
243
+ ringColor: Shorthand<"outlineColor">;
244
+ ring: Shorthand<"outline">;
245
+ ringOffset: Shorthand<"outlineOffset">;
246
+ w: Shorthand<"width">;
247
+ minW: Shorthand<"minWidth">;
248
+ maxW: Shorthand<"maxWidth">;
249
+ h: Shorthand<"height">;
250
+ minH: Shorthand<"minHeight">;
251
+ maxH: Shorthand<"maxHeight">;
252
+ bgPosition: Shorthand<"backgroundPosition">;
253
+ bgPositionX: Shorthand<"backgroundPositionX">;
254
+ bgPositionY: Shorthand<"backgroundPositionY">;
255
+ bgAttachment: Shorthand<"backgroundAttachment">;
256
+ bgClip: Shorthand<"backgroundClip">;
257
+ bg: Shorthand<"background">;
258
+ bgColor: Shorthand<"backgroundColor">;
259
+ bgOrigin: Shorthand<"backgroundOrigin">;
260
+ bgImage: Shorthand<"backgroundImage">;
261
+ bgRepeat: Shorthand<"backgroundRepeat">;
262
+ bgBlendMode: Shorthand<"backgroundBlendMode">;
263
+ bgSize: Shorthand<"backgroundSize">;
264
+ bgGradient: Shorthand<"backgroundGradient">;
265
+ rounded: Shorthand<"borderRadius">;
266
+ roundedTopLeft: Shorthand<"borderTopLeftRadius">;
267
+ roundedTopRight: Shorthand<"borderTopRightRadius">;
268
+ roundedBottomRight: Shorthand<"borderBottomRightRadius">;
269
+ roundedBottomLeft: Shorthand<"borderBottomLeftRadius">;
270
+ roundedTop: Shorthand<"borderTopRadius">;
271
+ roundedRight: Shorthand<"borderRightRadius">;
272
+ roundedBottom: Shorthand<"borderBottomRadius">;
273
+ roundedLeft: Shorthand<"borderLeftRadius">;
274
+ roundedStartStart: Shorthand<"borderStartStartRadius">;
275
+ roundedStartEnd: Shorthand<"borderStartEndRadius">;
276
+ roundedStart: Shorthand<"borderStartRadius">;
277
+ roundedEndStart: Shorthand<"borderEndStartRadius">;
278
+ roundedEndEnd: Shorthand<"borderEndEndRadius">;
279
+ roundedEnd: Shorthand<"borderEndRadius">;
280
+ borderX: Shorthand<"borderInline">;
281
+ borderXWidth: Shorthand<"borderInlineWidth">;
282
+ borderXColor: Shorthand<"borderInlineColor">;
283
+ borderY: Shorthand<"borderBlock">;
284
+ borderYWidth: Shorthand<"borderBlockWidth">;
285
+ borderYColor: Shorthand<"borderBlockColor">;
286
+ borderStart: Shorthand<"borderInlineStart">;
287
+ borderStartColor: Shorthand<"borderInlineStartColor">;
288
+ borderEnd: Shorthand<"borderInlineEnd">;
289
+ borderEndColor: Shorthand<"borderInlineEndColor">;
290
+ shadow: Shorthand<"boxShadow">;
291
+ shadowColor: Shorthand<"boxShadowColor">;
292
+ x: Shorthand<"translateX">;
293
+ y: Shorthand<"translateY">;
294
+ }
295
+
296
+ export type PropertyValue<T extends string> = T extends keyof PropertyTypes
297
+ ? ConditionalValue<PropertyTypes[T] | CssValue<T>>
298
+ : T extends keyof CssProperties
299
+ ? ConditionalValue<CssProperties[T]>
300
+ : ConditionalValue<string | number>
@@ -0,0 +1,79 @@
1
+ import type { SystemStyleObject } from './system-types'
2
+
3
+ type Pretty<T> = T extends infer U ? { [K in keyof U]: U[K] } : never
4
+
5
+ type StringToBoolean<T> = T extends 'true' | 'false' ? boolean : T
6
+
7
+ export type RecipeVariantRecord = Record<any, Record<any, SystemStyleObject>>
8
+
9
+ export type RecipeSelection<T extends RecipeVariantRecord> = keyof any extends keyof T
10
+ ? {}
11
+ : {
12
+ [K in keyof T]?: StringToBoolean<keyof T[K]>
13
+ }
14
+
15
+ export type RecipeVariantFn<T extends RecipeVariantRecord> = (props?: RecipeSelection<T>) => string
16
+
17
+ export type RecipeVariantProps<T extends RecipeVariantFn<RecipeVariantRecord>> = Pretty<Parameters<T>[0]>
18
+
19
+ type RecipeVariantMap<T extends RecipeVariantRecord> = {
20
+ [K in keyof T]: Array<keyof T[K]>
21
+ }
22
+
23
+ export type RecipeRuntimeFn<T extends RecipeVariantRecord> = RecipeVariantFn<T> & {
24
+ __type: RecipeSelection<T>
25
+ variantKeys: (keyof T)[]
26
+ variantMap: RecipeVariantMap<T>
27
+ resolve: (props: RecipeSelection<T>) => SystemStyleObject
28
+ config: RecipeConfig<T>
29
+ splitVariantProps<Props extends RecipeSelection<T>>(
30
+ props: Props,
31
+ ): [RecipeSelection<T>, Pretty<Omit<Props, keyof RecipeVariantRecord>>]
32
+ }
33
+
34
+ export type RecipeCompoundSelection<T extends RecipeVariantRecord> = {
35
+ [K in keyof T]?: StringToBoolean<keyof T[K]> | Array<StringToBoolean<keyof T[K]>>
36
+ }
37
+
38
+ export type RecipeCompoundVariant<T extends RecipeVariantRecord> = RecipeCompoundSelection<T> & {
39
+ css: SystemStyleObject
40
+ }
41
+
42
+ export type RecipeDefinition<T extends RecipeVariantRecord> = {
43
+ /**
44
+ * The base styles of the recipe.
45
+ */
46
+ base?: SystemStyleObject
47
+ /**
48
+ * The multi-variant styles of the recipe.
49
+ */
50
+ variants?: T | RecipeVariantRecord
51
+ /**
52
+ * The default variants of the recipe.
53
+ */
54
+ defaultVariants?: RecipeSelection<T>
55
+ /**
56
+ * The styles to apply when a combination of variants is selected.
57
+ */
58
+ compoundVariants?: Array<RecipeCompoundVariant<T>>
59
+ }
60
+
61
+ export type RecipeCreatorFn = <T extends RecipeVariantRecord>(config: RecipeDefinition<T>) => RecipeRuntimeFn<T>
62
+
63
+ export type RecipeConfig<T extends RecipeVariantRecord = RecipeVariantRecord> = RecipeDefinition<T> & {
64
+ /**
65
+ * The name of the recipe.
66
+ */
67
+ name: string
68
+ /**
69
+ * The description of the recipe. This will be used in the JSDoc comment.
70
+ */
71
+ description?: string
72
+ /**
73
+ * The jsx elements to track for this recipe. Can be string or Regexp.
74
+ *
75
+ * @default capitalize(recipe.name)
76
+ * @example ['Button', 'Link', /Button$/]
77
+ */
78
+ jsx?: Array<string | RegExp>
79
+ }
@@ -0,0 +1,56 @@
1
+ import type { Pseudos } from './csstype'
2
+
3
+ type AriaAttributes =
4
+ | '[aria-disabled]'
5
+ | '[aria-hidden]'
6
+ | '[aria-invalid]'
7
+ | '[aria-readonly]'
8
+ | '[aria-required]'
9
+ | '[aria-selected]'
10
+ | '[aria-checked]'
11
+ | '[aria-expanded]'
12
+ | '[aria-pressed]'
13
+ | `[aria-current=${'page' | 'step' | 'location' | 'date' | 'time'}]`
14
+ | '[aria-invalid]'
15
+ | `[aria-sort=${'ascending' | 'descending'}]`
16
+
17
+ type DataAttributes =
18
+ | '[data-selected]'
19
+ | '[data-highlighted]'
20
+ | '[data-hover]'
21
+ | '[data-active]'
22
+ | '[data-checked]'
23
+ | '[data-disabled]'
24
+ | '[data-readonly]'
25
+ | '[data-focus]'
26
+ | '[data-focus-visible]'
27
+ | '[data-focus-visible-added]'
28
+ | '[data-invalid]'
29
+ | '[data-pressed]'
30
+ | '[data-expanded]'
31
+ | '[data-grabbed]'
32
+ | '[data-dragged]'
33
+ | '[data-orientation=horizontal]'
34
+ | '[data-orientation=vertical]'
35
+ | '[data-in-range]'
36
+ | '[data-out-of-range]'
37
+ | '[data-placeholder-shown]'
38
+ | `[data-part=${string}]`
39
+ | `[data-attr=${string}]`
40
+ | `[data-placement=${string}]`
41
+ | `[data-theme=${string}]`
42
+ | `[data-size=${string}]`
43
+ | `[data-state=${string}]`
44
+ | '[data-empty]'
45
+ | '[data-loading]'
46
+ | '[data-loaded]'
47
+ | '[data-enter]'
48
+ | '[data-entering]'
49
+ | '[data-exited]'
50
+ | '[data-exiting]'
51
+
52
+ type AttributeSelector = `&${Pseudos | DataAttributes | AriaAttributes}`
53
+ type ParentSelector = `${DataAttributes | AriaAttributes} &`
54
+
55
+ export type AnySelector = `${string}&` | `&${string}`
56
+ export type Selectors = AttributeSelector | ParentSelector