@graphprotocol/gds-css 0.0.1

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 (136) hide show
  1. package/README.md +80 -0
  2. package/dist/component-registry.d.ts +90 -0
  3. package/dist/component-registry.d.ts.map +1 -0
  4. package/dist/component-registry.js +93 -0
  5. package/dist/component-registry.js.map +1 -0
  6. package/dist/css-props/getCSSPropRawValue.d.ts +4 -0
  7. package/dist/css-props/getCSSPropRawValue.d.ts.map +1 -0
  8. package/dist/css-props/getCSSPropRawValue.js +41 -0
  9. package/dist/css-props/getCSSPropRawValue.js.map +1 -0
  10. package/dist/css-props/index.d.ts +5 -0
  11. package/dist/css-props/index.d.ts.map +1 -0
  12. package/dist/css-props/index.js +5 -0
  13. package/dist/css-props/index.js.map +1 -0
  14. package/dist/css-props/parseCSSPropValue.d.ts +7 -0
  15. package/dist/css-props/parseCSSPropValue.d.ts.map +1 -0
  16. package/dist/css-props/parseCSSPropValue.js +70 -0
  17. package/dist/css-props/parseCSSPropValue.js.map +1 -0
  18. package/dist/css-props/registerCSSProps.d.ts +7 -0
  19. package/dist/css-props/registerCSSProps.d.ts.map +1 -0
  20. package/dist/css-props/registerCSSProps.js +231 -0
  21. package/dist/css-props/registerCSSProps.js.map +1 -0
  22. package/dist/css-props/types.d.ts +29 -0
  23. package/dist/css-props/types.d.ts.map +1 -0
  24. package/dist/css-props/types.js +2 -0
  25. package/dist/css-props/types.js.map +1 -0
  26. package/dist/css-states/index.d.ts +3 -0
  27. package/dist/css-states/index.d.ts.map +1 -0
  28. package/dist/css-states/index.js +3 -0
  29. package/dist/css-states/index.js.map +1 -0
  30. package/dist/css-states/registerCSSStates.d.ts +23 -0
  31. package/dist/css-states/registerCSSStates.d.ts.map +1 -0
  32. package/dist/css-states/registerCSSStates.js +119 -0
  33. package/dist/css-states/registerCSSStates.js.map +1 -0
  34. package/dist/css-states/states.d.ts +71 -0
  35. package/dist/css-states/states.d.ts.map +1 -0
  36. package/dist/css-states/states.js +140 -0
  37. package/dist/css-states/states.js.map +1 -0
  38. package/dist/design-tokens.generated.d.ts +1167 -0
  39. package/dist/design-tokens.generated.d.ts.map +1 -0
  40. package/dist/design-tokens.generated.js +2675 -0
  41. package/dist/design-tokens.generated.js.map +1 -0
  42. package/dist/index.d.ts +7 -0
  43. package/dist/index.d.ts.map +1 -0
  44. package/dist/index.js +7 -0
  45. package/dist/index.js.map +1 -0
  46. package/dist/tailwind-customizations/index.d.ts +3 -0
  47. package/dist/tailwind-customizations/index.d.ts.map +1 -0
  48. package/dist/tailwind-customizations/index.js +3 -0
  49. package/dist/tailwind-customizations/index.js.map +1 -0
  50. package/dist/tailwind-customizations/registerUtilities.d.ts +9 -0
  51. package/dist/tailwind-customizations/registerUtilities.d.ts.map +1 -0
  52. package/dist/tailwind-customizations/registerUtilities.js +59 -0
  53. package/dist/tailwind-customizations/registerUtilities.js.map +1 -0
  54. package/dist/tailwind-customizations/registerVariants.d.ts +8 -0
  55. package/dist/tailwind-customizations/registerVariants.d.ts.map +1 -0
  56. package/dist/tailwind-customizations/registerVariants.js +197 -0
  57. package/dist/tailwind-customizations/registerVariants.js.map +1 -0
  58. package/dist/tailwind-customizations/variants.d.ts +72 -0
  59. package/dist/tailwind-customizations/variants.d.ts.map +1 -0
  60. package/dist/tailwind-customizations/variants.js +153 -0
  61. package/dist/tailwind-customizations/variants.js.map +1 -0
  62. package/dist/tailwind-plugin.d.ts +4 -0
  63. package/dist/tailwind-plugin.d.ts.map +1 -0
  64. package/dist/tailwind-plugin.js +12 -0
  65. package/dist/tailwind-plugin.js.map +1 -0
  66. package/dist/types.d.ts +4 -0
  67. package/dist/types.d.ts.map +1 -0
  68. package/dist/types.js +2 -0
  69. package/dist/types.js.map +1 -0
  70. package/dist/utils/cssUnescape.d.ts +20 -0
  71. package/dist/utils/cssUnescape.d.ts.map +1 -0
  72. package/dist/utils/cssUnescape.js +44 -0
  73. package/dist/utils/cssUnescape.js.map +1 -0
  74. package/dist/utils/index.d.ts +6 -0
  75. package/dist/utils/index.d.ts.map +1 -0
  76. package/dist/utils/index.js +6 -0
  77. package/dist/utils/index.js.map +1 -0
  78. package/dist/utils/pxToTw.d.ts +3 -0
  79. package/dist/utils/pxToTw.d.ts.map +1 -0
  80. package/dist/utils/pxToTw.js +5 -0
  81. package/dist/utils/pxToTw.js.map +1 -0
  82. package/dist/utils/twToPx.d.ts +3 -0
  83. package/dist/utils/twToPx.d.ts.map +1 -0
  84. package/dist/utils/twToPx.js +5 -0
  85. package/dist/utils/twToPx.js.map +1 -0
  86. package/dist/utils/twToRem.d.ts +3 -0
  87. package/dist/utils/twToRem.d.ts.map +1 -0
  88. package/dist/utils/twToRem.js +5 -0
  89. package/dist/utils/twToRem.js.map +1 -0
  90. package/dist/utils/wrapSelector.d.ts +10 -0
  91. package/dist/utils/wrapSelector.d.ts.map +1 -0
  92. package/dist/utils/wrapSelector.js +57 -0
  93. package/dist/utils/wrapSelector.js.map +1 -0
  94. package/package.json +65 -0
  95. package/src/component-registry.ts +213 -0
  96. package/src/css-props/getCSSPropRawValue.ts +52 -0
  97. package/src/css-props/index.ts +4 -0
  98. package/src/css-props/parseCSSPropValue.ts +81 -0
  99. package/src/css-props/registerCSSProps.ts +274 -0
  100. package/src/css-props/types.ts +35 -0
  101. package/src/css-states/index.ts +2 -0
  102. package/src/css-states/registerCSSStates.ts +136 -0
  103. package/src/css-states/states.ts +160 -0
  104. package/src/design-tokens.generated.ts +2799 -0
  105. package/src/index.ts +6 -0
  106. package/src/tailwind-customizations/index.ts +2 -0
  107. package/src/tailwind-customizations/registerUtilities.ts +65 -0
  108. package/src/tailwind-customizations/registerVariants.ts +296 -0
  109. package/src/tailwind-customizations/variants.ts +190 -0
  110. package/src/tailwind-plugin.ts +14 -0
  111. package/src/types.ts +4 -0
  112. package/src/utils/cssUnescape.ts +49 -0
  113. package/src/utils/index.ts +5 -0
  114. package/src/utils/pxToTw.ts +4 -0
  115. package/src/utils/twToPx.ts +4 -0
  116. package/src/utils/twToRem.ts +4 -0
  117. package/src/utils/wrapSelector.ts +60 -0
  118. package/styles/fonts/EuclidCircularA-Bold.woff2 +0 -0
  119. package/styles/fonts/EuclidCircularA-BoldItalic.woff2 +0 -0
  120. package/styles/fonts/EuclidCircularA-Light.woff2 +0 -0
  121. package/styles/fonts/EuclidCircularA-LightItalic.woff2 +0 -0
  122. package/styles/fonts/EuclidCircularA-Medium.woff2 +0 -0
  123. package/styles/fonts/EuclidCircularA-MediumItalic.woff2 +0 -0
  124. package/styles/fonts/EuclidCircularA-Regular.woff2 +0 -0
  125. package/styles/fonts/EuclidCircularA-RegularItalic.woff2 +0 -0
  126. package/styles/fonts/EuclidCircularA-Semibold.woff2 +0 -0
  127. package/styles/fonts/EuclidCircularA-SemiboldItalic.woff2 +0 -0
  128. package/styles/fonts.css +83 -0
  129. package/styles/global.css +203 -0
  130. package/styles/layers.css +8 -0
  131. package/styles/tailwind.css +13 -0
  132. package/styles/tailwind.vscode.css +11 -0
  133. package/styles/theme.css +420 -0
  134. package/styles/typography.css +198 -0
  135. package/styles/utilities.css +305 -0
  136. package/styles/variants.css +34 -0
package/README.md ADDED
@@ -0,0 +1,80 @@
1
+ # @graphprotocol/gds-css
2
+
3
+ Tailwind preset for The Graph Design System that includes design tokens, custom utilities, and custom variants.
4
+
5
+ > **Note:** You do not need to install this package or follow these instructions in a React project. Instead, use [`@graphprotocol/gds-react`](https://github.com/graphprotocol/gds/tree/main/packages/react), which includes this package as a dependency.
6
+
7
+ ## Installation
8
+
9
+ ```bash
10
+ pnpm add @graphprotocol/gds-css
11
+ ```
12
+
13
+ ## Setup
14
+
15
+ 1. [Set up Tailwind CSS](https://tailwindcss.com/docs/installation) in your project if you haven't already (ideally using Vite).
16
+
17
+ 2. Add the following to your main CSS file:
18
+
19
+ ```diff
20
+ - @import 'tailwindcss';
21
+ + @import '@graphprotocol/gds-css';
22
+ + @plugin '@graphprotocol/gds-css/tailwind-plugin';
23
+ ```
24
+
25
+ Tailwind is already imported by `@graphprotocol/gds-css`, so you don't need the `@import 'tailwindcss'` line.
26
+
27
+ 3. [Register source paths](https://tailwindcss.com/docs/detecting-classes-in-source-files#explicitly-registering-sources) relative to your CSS file:
28
+
29
+ ```diff
30
+ @import '@graphprotocol/gds-css';
31
+ @plugin '@graphprotocol/gds-css/tailwind-plugin';
32
+ + @source '../src';
33
+ ```
34
+
35
+ `@graphprotocol/gds-css` disables Tailwind's default content scanning as an optimization measure, so you must explicitly register your source paths using `@source` directives. Make sure to include all paths where Tailwind classes are used.
36
+
37
+ 4. That's it, you're ready to use GDS utilities in your markup! Optional recommended steps:
38
+ - If you use VS Code (or a fork like Cursor), install the [Tailwind CSS IntelliSense extension](https://marketplace.visualstudio.com/items?itemName=bradlc.vscode-tailwindcss).
39
+ - If you use Prettier, install [`prettier-plugin-tailwindcss`](https://github.com/tailwindlabs/prettier-plugin-tailwindcss) and add it to your config.
40
+
41
+ ## What's Included
42
+
43
+ ### Design Tokens
44
+
45
+ - **Colors**: Primitive color scales like brand, space, starfield, solar, sonja, and galactic, as well as semantic color tokens like `text-default`, `bg-muted`, `border-subtle`, etc.
46
+ - **Border Radii**: Numbers instead of t-shirt sizes (e.g. `rounded-4`)
47
+ - **Breakpoints**: Two custom breakpoints in addition to Tailwind's core ones (`xs` and `2xs`)
48
+ - [**Typography**](https://github.com/graphprotocol/gds/blob/main/packages/css/styles/typography.css): Font families, weights, sizes, line heights, etc.
49
+ - [**See all**](https://github.com/graphprotocol/gds/blob/main/packages/css/styles/theme.css)
50
+
51
+ ### Color Schemes
52
+
53
+ Even though GDS is dark by default, all semantic color tokens support both dark and light modes using CSS `light-dark()`:
54
+
55
+ ```html
56
+ <div class="bg-canvas text-default">This text is light on a dark background.</div>
57
+
58
+ <div class="gds-light">
59
+ <div class="bg-canvas text-default">This text is dark on a light background.</div>
60
+
61
+ <div class="gds-dark">
62
+ <div class="bg-canvas text-default">This text is light on a dark background.</div>
63
+ </div>
64
+ </div>
65
+
66
+ <div class="gds-system">
67
+ <div class="bg-canvas text-default">
68
+ This text is light on a dark background when the system is dark, and dark on a light background
69
+ when the system is light.
70
+ </div>
71
+ </div>
72
+ ```
73
+
74
+ ### Tailwind Extensions
75
+
76
+ TODO: Document custom utilities and variants
77
+
78
+ ## License
79
+
80
+ MIT
@@ -0,0 +1,90 @@
1
+ import { type DeepRecord } from '@graphprotocol/gds-utils';
2
+ import type { CSSPropDefinition, CSSPropType } from './css-props/types.ts';
3
+ export type CSSPropsConfig = Record<string, CSSPropDefinition>;
4
+ type CSSProp<T extends CSSPropDefinition = CSSPropDefinition> = T & {
5
+ readonly name: string;
6
+ readonly kebabName: string;
7
+ readonly initialValue: CSSPropType<T>;
8
+ };
9
+ type CSSProps<P extends CSSPropsConfig> = {
10
+ readonly [K in keyof P]: P[K] & CSSProp<P[K]>;
11
+ };
12
+ type VarsConfig = Record<string, VarCSS>;
13
+ type VarCSS = string | DeepRecord<string>;
14
+ export declare class GDSComponent<P extends CSSPropsConfig = CSSPropsConfig, A extends boolean = boolean> {
15
+ readonly name: string;
16
+ readonly kebabName: string;
17
+ readonly className: string;
18
+ readonly containerName: string | null;
19
+ readonly addonCompatible: A;
20
+ readonly cssProps: CSSProps<P>;
21
+ readonly vars: VarsConfig | undefined;
22
+ constructor(name: string, config?: {
23
+ containerName?: string | null | undefined;
24
+ addonCompatible?: A | undefined;
25
+ cssProps?: P | undefined;
26
+ vars?: VarsConfig | undefined;
27
+ });
28
+ getCSSPropByName<T extends keyof P & string>(name: T): CSSProps<P>[T];
29
+ findCSSPropByKebabName(kebabName: string): CSSProps<P>[Extract<keyof P, string>] | undefined;
30
+ }
31
+ /** Type to validate CSS prop definitions. */
32
+ type ValidateCSSPropDefinition<P> = P extends {
33
+ type: 'values';
34
+ values: readonly unknown[];
35
+ } ? P['values'] extends readonly [unknown, ...unknown[]] ? P extends {
36
+ defaultValue?: unknown;
37
+ } ? P['defaultValue'] extends P['values'][number] ? P : never : P : never : P;
38
+ /** Type to validate all CSS props in an object. */
39
+ type ValidateCSSPropsConfig<P extends Record<string, unknown>> = {
40
+ [K in keyof P]: ValidateCSSPropDefinition<P[K]>;
41
+ };
42
+ /** Type to validate that vars don't conflict with cssProps names. */
43
+ type ValidateVarsConfig<P extends CSSPropsConfig, V extends VarsConfig> = {} extends P ? V : {
44
+ [K in keyof V]: K extends keyof P ? `Var "${K & string}" conflicts with cssProps. Choose a different name.` : V[K];
45
+ };
46
+ /** Helper function to create a `GDSComponent` instance with proper type inference. */
47
+ export declare function createComponent<const P extends CSSPropsConfig, const V extends VarsConfig, const A extends boolean>(name: string, config?: ConstructorParameters<typeof GDSComponent<P>>[1] & {
48
+ addonCompatible?: A;
49
+ cssProps?: ValidateCSSPropsConfig<P>;
50
+ vars?: ValidateVarsConfig<P, V>;
51
+ }): GDSComponent<P, A>;
52
+ /** Helper type to extract the CSS props config type from a `GDSComponent` instance. */
53
+ export type ComponentCSSPropsConfig<C extends GDSComponent> = C extends GDSComponent<infer P> ? P : never;
54
+ /**
55
+ * Helper type to extract CSS props types from components created with `createComponent`. Props
56
+ * without a `defaultValue` are required, while those with a `defaultValue` are optional. Explicitly
57
+ * includes `undefined` in the type to work with `exactOptionalPropertyTypes`.
58
+ */
59
+ export type ComponentCSSProps<C extends GDSComponent> = {
60
+ [K in keyof ComponentCSSPropsConfig<C> as string extends K ? never : 'defaultValue' extends keyof ComponentCSSPropsConfig<C>[K] ? never : K]: CSSPropType<ComponentCSSPropsConfig<C>[K]>;
61
+ } & {
62
+ [K in keyof ComponentCSSPropsConfig<C> as string extends K ? never : 'defaultValue' extends keyof ComponentCSSPropsConfig<C>[K] ? K : never]?: CSSPropType<ComponentCSSPropsConfig<C>[K]> | undefined;
63
+ };
64
+ /**
65
+ * Combined props type for GDS components. Includes CSS props and, for addon-compatible components,
66
+ * a hidden prop to mark them as such.
67
+ */
68
+ export type GDSComponentProps<C extends GDSComponent> = ComponentCSSProps<C> & (C extends GDSComponent<CSSPropsConfig, true> ? {
69
+ __addonCompatible?: undefined;
70
+ } : {
71
+ __addonCompatible?: never;
72
+ });
73
+ /** Register multiple components at once. */
74
+ export declare function registerComponents(components: GDSComponent[]): void;
75
+ /**
76
+ * Get a registered component by its kebab-case name.
77
+ *
78
+ * @param kebabName - The kebab-case name of the component.
79
+ * @returns The component if found, `undefined` otherwise.
80
+ */
81
+ export declare function getRegisteredComponent(kebabName: string): GDSComponent<CSSPropsConfig, boolean> | undefined;
82
+ /**
83
+ * Get all registered components.
84
+ *
85
+ * @param includeDummy - If true, don't filter out the dummy component.
86
+ * @returns Array of registered components.
87
+ */
88
+ export declare function getRegisteredComponents(includeDummy?: boolean): GDSComponent<CSSPropsConfig, boolean>[];
89
+ export {};
90
+ //# sourceMappingURL=component-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"component-registry.d.ts","sourceRoot":"","sources":["../src/component-registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,93 @@
1
+ import { objectEntries } from 'ts-extras';
2
+ import { camelToKebab } from '@graphprotocol/gds-utils';
3
+ export class GDSComponent {
4
+ name;
5
+ kebabName;
6
+ className;
7
+ containerName;
8
+ addonCompatible;
9
+ cssProps;
10
+ vars;
11
+ constructor(name, config) {
12
+ this.name = name;
13
+ this.kebabName = camelToKebab(name);
14
+ this.className = `gds-${this.kebabName}`;
15
+ this.containerName = config?.containerName !== undefined ? config.containerName : this.className;
16
+ this.addonCompatible = (config?.addonCompatible ?? false);
17
+ this.cssProps = Object.freeze(Object.fromEntries(objectEntries(config?.cssProps ?? {}).map(([propName, prop]) => {
18
+ const initialValue = prop.defaultValue ??
19
+ (() => {
20
+ switch (prop.type) {
21
+ case 'values':
22
+ return (prop.values[0] ?? '');
23
+ case 'string':
24
+ return '';
25
+ case 'number':
26
+ return 0;
27
+ case 'length':
28
+ return '0px';
29
+ case 'color':
30
+ return 'current';
31
+ }
32
+ })();
33
+ return [
34
+ propName,
35
+ {
36
+ ...prop,
37
+ name: propName,
38
+ kebabName: camelToKebab(propName),
39
+ initialValue,
40
+ },
41
+ ];
42
+ })));
43
+ this.vars = config?.vars;
44
+ }
45
+ getCSSPropByName(name) {
46
+ const prop = this.cssProps[name];
47
+ if (!prop) {
48
+ throw new Error(`Unknown CSS prop "${name}" for component "${this.name}"`);
49
+ }
50
+ return prop;
51
+ }
52
+ findCSSPropByKebabName(kebabName) {
53
+ for (const key in this.cssProps) {
54
+ if (this.cssProps[key].kebabName === kebabName) {
55
+ return this.cssProps[key];
56
+ }
57
+ }
58
+ return undefined;
59
+ }
60
+ }
61
+ /** Helper function to create a `GDSComponent` instance with proper type inference. */
62
+ export function createComponent(name, config) {
63
+ return new GDSComponent(name, config);
64
+ }
65
+ const componentRegistry = new Map();
66
+ /** Register multiple components at once. */
67
+ export function registerComponents(components) {
68
+ for (const component of components) {
69
+ componentRegistry.set(component.kebabName, component);
70
+ }
71
+ }
72
+ /**
73
+ * Get a registered component by its kebab-case name.
74
+ *
75
+ * @param kebabName - The kebab-case name of the component.
76
+ * @returns The component if found, `undefined` otherwise.
77
+ */
78
+ export function getRegisteredComponent(kebabName) {
79
+ return componentRegistry.get(kebabName);
80
+ }
81
+ /**
82
+ * Get all registered components.
83
+ *
84
+ * @param includeDummy - If true, don't filter out the dummy component.
85
+ * @returns Array of registered components.
86
+ */
87
+ export function getRegisteredComponents(includeDummy = false) {
88
+ const components = [...componentRegistry.values()];
89
+ return includeDummy
90
+ ? components
91
+ : components.filter((component) => component.kebabName !== 'dummy');
92
+ }
93
+ //# sourceMappingURL=component-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"component-registry.js","sourceRoot":"","sources":["../src/component-registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { CSSPropDefinition, CSSPropType } from './types.ts';
2
+ /** Converts a CSS prop value to its raw string representation for CSS custom properties. */
3
+ export declare function getCSSPropRawValue<P extends CSSPropDefinition>(prop: P, value: CSSPropType<P>): string;
4
+ //# sourceMappingURL=getCSSPropRawValue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getCSSPropRawValue.d.ts","sourceRoot":"","sources":["../../src/css-props/getCSSPropRawValue.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAEV,iBAAiB,EAEjB,WAAW,EAEZ,MAAM,YAAY,CAAA;AAEnB,4FAA4F;AAC5F,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,iBAAiB,EAC5D,IAAI,EAAE,CAAC,EACP,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,GACpB,MAAM,CAoCR"}
@@ -0,0 +1,41 @@
1
+ import cssesc from 'cssesc';
2
+ import { twToRem } from "../utils/index.js";
3
+ /** Converts a CSS prop value to its raw string representation for CSS custom properties. */
4
+ export function getCSSPropRawValue(prop, value) {
5
+ switch (prop.type) {
6
+ case 'values': {
7
+ const valuesValue = value;
8
+ // Prefix the value with `gds-` because cssnano (which Next.js uses) incorrectly minifies `--gds-prop-variant: white` to `--gds-prop-variant: #fff`
9
+ return `gds-${valuesValue}`;
10
+ }
11
+ case 'string': {
12
+ return `'${cssesc(String(value))}'`;
13
+ }
14
+ case 'number': {
15
+ return String(value);
16
+ }
17
+ case 'length': {
18
+ const lengthValue = value;
19
+ if (typeof lengthValue === 'number') {
20
+ return `${twToRem(lengthValue)}rem`;
21
+ }
22
+ else {
23
+ return lengthValue;
24
+ }
25
+ }
26
+ case 'color': {
27
+ const colorValue = value;
28
+ const [color, opacity] = colorValue.split('/');
29
+ const colorVariable = color === 'current'
30
+ ? 'currentcolor'
31
+ : color === 'transparent'
32
+ ? 'transparent'
33
+ : `var(--color-${color})`;
34
+ if (opacity && opacity !== '100') {
35
+ return `color-mix(in oklab, ${colorVariable} ${opacity}%, transparent)`;
36
+ }
37
+ return colorVariable;
38
+ }
39
+ }
40
+ }
41
+ //# sourceMappingURL=getCSSPropRawValue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getCSSPropRawValue.js","sourceRoot":"","sources":["../../src/css-props/getCSSPropRawValue.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAA;AAE3B,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAS3C,4FAA4F;AAC5F,MAAM,UAAU,kBAAkB,CAChC,IAAO,EACP,KAAqB;IAErB,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,WAAW,GAAG,KAAqB,CAAA;YACzC,mJAAmJ;YACnJ,OAAO,OAAO,WAAW,EAAE,CAAA;QAC7B,CAAC;QACD,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAA;QACrC,CAAC;QACD,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,OAAO,MAAM,CAAC,KAAK,CAAC,CAAA;QACtB,CAAC;QACD,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,WAAW,GAAG,KAAsB,CAAA;YAC1C,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE,CAAC;gBACpC,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC,KAAK,CAAA;YACrC,CAAC;iBAAM,CAAC;gBACN,OAAO,WAAW,CAAA;YACpB,CAAC;QACH,CAAC;QACD,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,MAAM,UAAU,GAAG,KAAqB,CAAA;YACxC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YAC9C,MAAM,aAAa,GACjB,KAAK,KAAK,SAAS;gBACjB,CAAC,CAAC,cAAc;gBAChB,CAAC,CAAC,KAAK,KAAK,aAAa;oBACvB,CAAC,CAAC,aAAa;oBACf,CAAC,CAAC,eAAe,KAAK,GAAG,CAAA;YAC/B,IAAI,OAAO,IAAI,OAAO,KAAK,KAAK,EAAE,CAAC;gBACjC,OAAO,uBAAuB,aAAa,IAAI,OAAO,iBAAiB,CAAA;YACzE,CAAC;YACD,OAAO,aAAa,CAAA;QACtB,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -0,0 +1,5 @@
1
+ export * from './types.ts';
2
+ export { getCSSPropRawValue } from './getCSSPropRawValue.ts';
3
+ export { parseCSSPropValue } from './parseCSSPropValue.ts';
4
+ export { registerCSSProps } from './registerCSSProps.ts';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/css-props/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA;AAC1B,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA"}
@@ -0,0 +1,5 @@
1
+ export * from "./types.js";
2
+ export { getCSSPropRawValue } from "./getCSSPropRawValue.js";
3
+ export { parseCSSPropValue } from "./parseCSSPropValue.js";
4
+ export { registerCSSProps } from "./registerCSSProps.js";
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/css-props/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA;AAC1B,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA"}
@@ -0,0 +1,7 @@
1
+ import type { CSSPropDefinition, CSSPropType } from './types.ts';
2
+ /**
3
+ * Parses a raw CSS prop value back to its typed representation. This is the inverse of
4
+ * `getCSSPropRawValue`.
5
+ */
6
+ export declare function parseCSSPropValue<P extends CSSPropDefinition>(prop: P, rawValue: string): CSSPropType<P>;
7
+ //# sourceMappingURL=parseCSSPropValue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parseCSSPropValue.d.ts","sourceRoot":"","sources":["../../src/css-props/parseCSSPropValue.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAEV,iBAAiB,EAIjB,WAAW,EAEZ,MAAM,YAAY,CAAA;AAEnB;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,iBAAiB,EAC3D,IAAI,EAAE,CAAC,EACP,QAAQ,EAAE,MAAM,GACf,WAAW,CAAC,CAAC,CAAC,CA4DhB"}
@@ -0,0 +1,70 @@
1
+ import { parseNumber } from '@graphprotocol/gds-utils';
2
+ import { cssUnescape, pxToTw } from "../utils/index.js";
3
+ /**
4
+ * Parses a raw CSS prop value back to its typed representation. This is the inverse of
5
+ * `getCSSPropRawValue`.
6
+ */
7
+ export function parseCSSPropValue(prop, rawValue) {
8
+ switch (prop.type) {
9
+ case 'values': {
10
+ // Remove the `gds-` prefix added by `getCSSPropRawValue`
11
+ const value = rawValue.replace(/^(gds-)?/, '');
12
+ // Check if it looks like a boolean
13
+ if (value === 'true')
14
+ return true;
15
+ if (value === 'false')
16
+ return false;
17
+ // Check if it looks like a number
18
+ const numberValue = parseNumber(value);
19
+ if (numberValue !== null) {
20
+ return numberValue;
21
+ }
22
+ // Otherwise it's a string
23
+ return value;
24
+ }
25
+ case 'string': {
26
+ return cssUnescape(rawValue.slice(1, -1));
27
+ }
28
+ case 'number': {
29
+ const numberValue = parseNumber(rawValue);
30
+ return (numberValue ?? 0);
31
+ }
32
+ case 'length': {
33
+ // Check if it's in pixels and convert to Tailwind units
34
+ if (/^\d+(?:\.\d+)?px$/.test(rawValue)) {
35
+ const numberValue = parseNumber(rawValue.slice(0, -2)); // Remove 'px'
36
+ return pxToTw(numberValue ?? 0);
37
+ }
38
+ // Otherwise keep as-is (e.g., "1rem", "100%")
39
+ return rawValue;
40
+ }
41
+ case 'color': {
42
+ if (rawValue === 'currentcolor') {
43
+ return 'current';
44
+ }
45
+ if (rawValue === 'transparent') {
46
+ return 'transparent';
47
+ }
48
+ // Check for `color-mix()` (color with opacity)
49
+ const colorMixMatch = rawValue.match(/^color-mix\(in oklab, (.+) (\d+)%, transparent\)$/);
50
+ if (colorMixMatch) {
51
+ const [, colorVar, opacity] = colorMixMatch;
52
+ if (colorVar && opacity) {
53
+ const varMatch = colorVar.match(/^var\(--color-(.+)\)$/);
54
+ if (varMatch && varMatch[1]) {
55
+ const color = varMatch[1];
56
+ return `${color}/${opacity}`;
57
+ }
58
+ }
59
+ }
60
+ // Check for simple color variable
61
+ const varMatch = rawValue.match(/^var\(--color-(.+)\)$/);
62
+ if (varMatch && varMatch[1]) {
63
+ return varMatch[1];
64
+ }
65
+ // Fallback - shouldn't normally happen
66
+ return rawValue;
67
+ }
68
+ }
69
+ }
70
+ //# sourceMappingURL=parseCSSPropValue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parseCSSPropValue.js","sourceRoot":"","sources":["../../src/css-props/parseCSSPropValue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AAEtD,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAWvD;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAC/B,IAAO,EACP,QAAgB;IAEhB,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,yDAAyD;YACzD,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAA;YAC9C,mCAAmC;YACnC,IAAI,KAAK,KAAK,MAAM;gBAAE,OAAO,IAA6C,CAAA;YAC1E,IAAI,KAAK,KAAK,OAAO;gBAAE,OAAO,KAA8C,CAAA;YAC5E,kCAAkC;YAClC,MAAM,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC,CAAA;YACtC,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;gBACzB,OAAO,WAAoD,CAAA;YAC7D,CAAC;YACD,0BAA0B;YAC1B,OAAO,KAA8C,CAAA;QACvD,CAAC;QACD,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,OAAO,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAA2C,CAAA;QACrF,CAAC;QACD,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,WAAW,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAA;YACzC,OAAO,CAAC,WAAW,IAAI,CAAC,CAA2C,CAAA;QACrE,CAAC;QACD,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,wDAAwD;YACxD,IAAI,mBAAmB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACvC,MAAM,WAAW,GAAG,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA,CAAC,cAAc;gBACrE,OAAO,MAAM,CAAC,WAAW,IAAI,CAAC,CAA2C,CAAA;YAC3E,CAAC;YACD,8CAA8C;YAC9C,OAAO,QAA2C,CAAA;QACpD,CAAC;QACD,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,IAAI,QAAQ,KAAK,cAAc,EAAE,CAAC;gBAChC,OAAO,SAAkD,CAAA;YAC3D,CAAC;YACD,IAAI,QAAQ,KAAK,aAAa,EAAE,CAAC;gBAC/B,OAAO,aAAsD,CAAA;YAC/D,CAAC;YACD,+CAA+C;YAC/C,MAAM,aAAa,GAAG,QAAQ,CAAC,KAAK,CAAC,mDAAmD,CAAC,CAAA;YACzF,IAAI,aAAa,EAAE,CAAC;gBAClB,MAAM,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,GAAG,aAAa,CAAA;gBAC3C,IAAI,QAAQ,IAAI,OAAO,EAAE,CAAC;oBACxB,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAA;oBACxD,IAAI,QAAQ,IAAI,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;wBAC5B,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;wBACzB,OAAO,GAAG,KAAK,IAAI,OAAO,EAAoC,CAAA;oBAChE,CAAC;gBACH,CAAC;YACH,CAAC;YACD,kCAAkC;YAClC,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAA;YACxD,IAAI,QAAQ,IAAI,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC5B,OAAO,QAAQ,CAAC,CAAC,CAAmC,CAAA;YACtD,CAAC;YACD,uCAAuC;YACvC,OAAO,QAA0B,CAAA;QACnC,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { PluginAPI } from '../types.ts';
2
+ /**
3
+ * Registers CSS Props functionality in the Tailwind plugin. This includes custom properties,
4
+ * utilities, and variants for prop-based styling.
5
+ */
6
+ export declare function registerCSSProps(api: PluginAPI): void;
7
+ //# sourceMappingURL=registerCSSProps.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registerCSSProps.d.ts","sourceRoot":"","sources":["../../src/css-props/registerCSSProps.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAI5C;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,SAAS,QAgQ9C"}