@graphprotocol/gds-css 0.1.2 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/component-registry.d.ts +112 -40
- package/dist/component-registry.d.ts.map +1 -1
- package/dist/component-registry.js +42 -7
- package/dist/component-registry.js.map +1 -1
- package/dist/css-props/index.d.ts +1 -1
- package/dist/css-props/index.d.ts.map +1 -1
- package/dist/css-props/index.js +1 -1
- package/dist/css-props/index.js.map +1 -1
- package/dist/css-props/parseCSSPropValue.js +1 -1
- package/dist/css-props/parseCSSPropValue.js.map +1 -1
- package/dist/css-props/setupCSSProps.d.ts +7 -0
- package/dist/css-props/setupCSSProps.d.ts.map +1 -0
- package/dist/css-props/{registerCSSProps.js → setupCSSProps.js} +30 -42
- package/dist/css-props/setupCSSProps.js.map +1 -0
- package/dist/css-states/index.d.ts +1 -1
- package/dist/css-states/index.d.ts.map +1 -1
- package/dist/css-states/index.js +1 -1
- package/dist/css-states/index.js.map +1 -1
- package/dist/css-states/setupCSSStates.d.ts +20 -0
- package/dist/css-states/setupCSSStates.d.ts.map +1 -0
- package/dist/css-states/{registerCSSStates.js → setupCSSStates.js} +21 -18
- package/dist/css-states/setupCSSStates.js.map +1 -0
- package/dist/css-states/states.d.ts +1 -0
- package/dist/css-states/states.d.ts.map +1 -1
- package/dist/css-states/states.js +2 -1
- package/dist/css-states/states.js.map +1 -1
- package/dist/tailwind-customizations/index.d.ts +2 -2
- package/dist/tailwind-customizations/index.d.ts.map +1 -1
- package/dist/tailwind-customizations/index.js +2 -2
- package/dist/tailwind-customizations/index.js.map +1 -1
- package/dist/tailwind-customizations/setupComponents.d.ts +8 -0
- package/dist/tailwind-customizations/setupComponents.d.ts.map +1 -0
- package/dist/tailwind-customizations/setupComponents.js +75 -0
- package/dist/tailwind-customizations/setupComponents.js.map +1 -0
- package/dist/tailwind-customizations/setupVariants.d.ts +8 -0
- package/dist/tailwind-customizations/setupVariants.d.ts.map +1 -0
- package/dist/tailwind-customizations/{registerVariants.js → setupVariants.js} +7 -7
- package/dist/tailwind-customizations/setupVariants.js.map +1 -0
- package/dist/tailwind-customizations/variants.d.ts.map +1 -1
- package/dist/tailwind-customizations/variants.js.map +1 -1
- package/dist/tailwind-plugin.js +7 -7
- package/dist/tailwind-plugin.js.map +1 -1
- package/dist/utils/cssUnescape.d.ts +5 -3
- package/dist/utils/cssUnescape.d.ts.map +1 -1
- package/dist/utils/cssUnescape.js +5 -3
- package/dist/utils/cssUnescape.js.map +1 -1
- package/package.json +5 -5
- package/src/component-registry.ts +205 -71
- package/src/css-props/index.ts +1 -1
- package/src/css-props/parseCSSPropValue.ts +1 -1
- package/src/css-props/{registerCSSProps.ts → setupCSSProps.ts} +31 -46
- package/src/css-states/index.ts +1 -1
- package/src/css-states/{registerCSSStates.ts → setupCSSStates.ts} +20 -17
- package/src/css-states/states.ts +2 -1
- package/src/tailwind-customizations/index.ts +2 -2
- package/src/tailwind-customizations/setupComponents.ts +87 -0
- package/src/tailwind-customizations/{registerVariants.ts → setupVariants.ts} +6 -6
- package/src/tailwind-customizations/variants.ts +9 -15
- package/src/tailwind-plugin.ts +7 -7
- package/src/utils/cssUnescape.ts +5 -3
- package/styles/global.css +2 -2
- package/styles/typography.css +27 -14
- package/styles/utilities.css +9 -0
- package/dist/css-props/registerCSSProps.d.ts +0 -7
- package/dist/css-props/registerCSSProps.d.ts.map +0 -1
- package/dist/css-props/registerCSSProps.js.map +0 -1
- package/dist/css-states/registerCSSStates.d.ts +0 -23
- package/dist/css-states/registerCSSStates.d.ts.map +0 -1
- package/dist/css-states/registerCSSStates.js.map +0 -1
- package/dist/tailwind-customizations/registerUtilities.d.ts +0 -9
- package/dist/tailwind-customizations/registerUtilities.d.ts.map +0 -1
- package/dist/tailwind-customizations/registerUtilities.js +0 -59
- package/dist/tailwind-customizations/registerUtilities.js.map +0 -1
- package/dist/tailwind-customizations/registerVariants.d.ts +0 -8
- package/dist/tailwind-customizations/registerVariants.d.ts.map +0 -1
- package/dist/tailwind-customizations/registerVariants.js.map +0 -1
- package/src/tailwind-customizations/registerUtilities.ts +0 -65
|
@@ -1,71 +1,143 @@
|
|
|
1
1
|
import { type DeepRecord } from '@graphprotocol/gds-utils';
|
|
2
2
|
import type { CSSPropDefinition, CSSPropType } from './css-props/types.ts';
|
|
3
3
|
export type CSSPropsConfig = Record<string, CSSPropDefinition>;
|
|
4
|
-
type CSSProp<
|
|
4
|
+
type CSSProp<Def extends CSSPropDefinition = CSSPropDefinition> = Def & {
|
|
5
5
|
readonly name: string;
|
|
6
6
|
readonly kebabName: string;
|
|
7
|
-
|
|
7
|
+
/** The container name to use in style queries for this prop. */
|
|
8
|
+
readonly containerName: string;
|
|
9
|
+
/** The CSS custom property that holds this prop's value (e.g. `--gds-button-size`). */
|
|
10
|
+
readonly cssProperty: string;
|
|
11
|
+
/** The initial value of this prop's CSS custom property. */
|
|
12
|
+
readonly initialValue: CSSPropType<Def>;
|
|
13
|
+
/** Whether this prop is defined or overridden in this component (not inherited via `extends`). */
|
|
14
|
+
readonly own: boolean;
|
|
15
|
+
/** The data attribute used by `useCSSPropsPolyfill` (e.g. `data-gds-prop-polyfill-size`). */
|
|
16
|
+
readonly polyfillAttribute: string;
|
|
8
17
|
};
|
|
9
|
-
type CSSProps<
|
|
10
|
-
readonly [K in keyof
|
|
18
|
+
type CSSProps<Props extends CSSPropsConfig> = {
|
|
19
|
+
readonly [K in keyof Props]: Props[K] & CSSProp<Props[K]>;
|
|
11
20
|
};
|
|
12
|
-
type
|
|
21
|
+
type IsolateOption = true | 'allow-inheritance' | false;
|
|
13
22
|
type VarCSS = string | DeepRecord<string>;
|
|
14
|
-
|
|
23
|
+
type VarsConfig = Record<string, VarCSS>;
|
|
24
|
+
export declare class GDSComponent<Props extends CSSPropsConfig = CSSPropsConfig, AddonCompatible extends boolean = boolean> {
|
|
15
25
|
readonly name: string;
|
|
16
26
|
readonly kebabName: string;
|
|
17
27
|
readonly className: string;
|
|
18
|
-
readonly containerName: string
|
|
19
|
-
readonly
|
|
20
|
-
readonly
|
|
28
|
+
readonly containerName: string;
|
|
29
|
+
readonly extends: GDSComponent | undefined;
|
|
30
|
+
readonly isolate: IsolateOption;
|
|
31
|
+
readonly addonCompatible: AddonCompatible;
|
|
32
|
+
readonly cssProps: CSSProps<Props>;
|
|
21
33
|
readonly vars: VarsConfig | undefined;
|
|
22
34
|
constructor(name: string, config?: {
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
35
|
+
extends?: GDSComponent | undefined;
|
|
36
|
+
isolate?: IsolateOption | undefined;
|
|
37
|
+
addonCompatible?: AddonCompatible | undefined;
|
|
38
|
+
cssProps?: Props | undefined;
|
|
26
39
|
vars?: VarsConfig | undefined;
|
|
27
40
|
});
|
|
28
|
-
|
|
29
|
-
|
|
41
|
+
/** Returns the chain of container names from the `extends` hierarchy as an array. */
|
|
42
|
+
getContainerNameChain(): string[];
|
|
43
|
+
getCSSPropByName<Name extends keyof Props & string>(name: Name): CSSProps<Props>[Name];
|
|
44
|
+
findCSSPropByKebabName(kebabName: string): CSSProps<Props>[Extract<keyof Props, string>] | undefined;
|
|
30
45
|
}
|
|
31
|
-
/**
|
|
32
|
-
|
|
46
|
+
/**
|
|
47
|
+
* Validates a CSS prop definition. Ensures:
|
|
48
|
+
*
|
|
49
|
+
* - `values` type props have at least one value.
|
|
50
|
+
* - `defaultValue` (if provided) is one of the `values`
|
|
51
|
+
*/
|
|
52
|
+
type ValidateCSSPropDefinition<Def> = Def extends {
|
|
53
|
+
type: 'values';
|
|
54
|
+
values: readonly [unknown, ...unknown[]];
|
|
55
|
+
defaultValue: infer Default;
|
|
56
|
+
} ? Default extends Def['values'][number] ? Def : Omit<Def, 'defaultValue'> & {
|
|
57
|
+
defaultValue: Def['values'][number];
|
|
58
|
+
} : Def extends {
|
|
33
59
|
type: 'values';
|
|
34
|
-
values: readonly
|
|
35
|
-
} ?
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
60
|
+
values: readonly [];
|
|
61
|
+
} ? never : Def;
|
|
62
|
+
/** Validates all CSS props in an object. Allows `null` to remove inherited props. */
|
|
63
|
+
type ValidateCSSPropsConfig<Config extends Record<string, unknown>> = {
|
|
64
|
+
[K in keyof Config]: Config[K] extends null ? null : ValidateCSSPropDefinition<Config[K]>;
|
|
65
|
+
};
|
|
66
|
+
/** Validates that `vars` names don't conflict with `cssProps` names. */
|
|
67
|
+
type ValidateVarsConfig<CSSPropsKeys, Vars extends VarsConfig> = {
|
|
68
|
+
[K in keyof Vars]: K extends CSSPropsKeys ? `Var "${K & string}" conflicts with cssProps. Choose a different name.` : Vars[K];
|
|
41
69
|
};
|
|
42
|
-
/**
|
|
43
|
-
|
|
44
|
-
|
|
70
|
+
/**
|
|
71
|
+
* Merges parent `cssProps` with own. Own props override parent props, `null` removes inherited
|
|
72
|
+
* props.
|
|
73
|
+
*/
|
|
74
|
+
type MergeCSSProps<ParentProps extends CSSPropsConfig | undefined, OwnProps extends Record<string, CSSPropDefinition | null>> = ParentProps extends CSSPropsConfig ? {
|
|
75
|
+
[K in keyof ParentProps as K extends keyof OwnProps ? OwnProps[K] extends null ? never : K : K]: K extends keyof OwnProps ? OwnProps[K] extends CSSPropDefinition ? OwnProps[K] : ParentProps[K] : ParentProps[K];
|
|
76
|
+
} & {
|
|
77
|
+
[K in keyof OwnProps as K extends keyof ParentProps ? never : OwnProps[K] extends null ? never : K]: OwnProps[K] extends CSSPropDefinition ? OwnProps[K] : never;
|
|
78
|
+
} : {
|
|
79
|
+
[K in keyof OwnProps as OwnProps[K] extends null ? never : K]: OwnProps[K] extends CSSPropDefinition ? OwnProps[K] : never;
|
|
80
|
+
};
|
|
81
|
+
/** Computed merged `cssProps` type for `createComponent`. */
|
|
82
|
+
type MergedCSSProps<Extends extends GDSComponent | undefined, OwnProps extends Record<string, CSSPropDefinition | null>> = MergeCSSProps<Extends extends GDSComponent<infer ParentProps> ? ParentProps : undefined, OwnProps>;
|
|
83
|
+
/**
|
|
84
|
+
* Empty object type without index signature (unlike `Record<string, never>` which has `keyof
|
|
85
|
+
* Record<string, never>` = `string`, not `never`).
|
|
86
|
+
*/
|
|
87
|
+
type EmptyObject = {
|
|
88
|
+
[K in never]: never;
|
|
45
89
|
};
|
|
46
90
|
/** Helper function to create a `GDSComponent` instance with proper type inference. */
|
|
47
|
-
export declare function createComponent<const
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
91
|
+
export declare function createComponent<const Extends extends GDSComponent | undefined = undefined, const OwnCSSProps extends Record<string, CSSPropDefinition | null> = EmptyObject, const Vars extends VarsConfig = EmptyObject, const AddonCompatible extends boolean = false>(name: string, config?: {
|
|
92
|
+
/**
|
|
93
|
+
* The parent component that this component extends. When set:
|
|
94
|
+
*
|
|
95
|
+
* - The component inherits all parent container names for CSS container queries (e.g. if
|
|
96
|
+
* `Checkbox` extends `Checkable`, the following CSS will be generated: `.gds-checkbox {
|
|
97
|
+
* container-name: gds-checkable gds-checkbox; }`).
|
|
98
|
+
* - The component inherits all parent `cssProps`, which can be overridden or removed (with
|
|
99
|
+
* `null`).
|
|
100
|
+
* - The `isolate` option defaults to `false` since the parent already handles isolation (if not,
|
|
101
|
+
* it can be set to `true` or `'allow-inheritance'`, but `isolate: false` will not cancel/undo
|
|
102
|
+
* the parent's isolation).
|
|
103
|
+
*/
|
|
104
|
+
extends?: Extends;
|
|
105
|
+
/**
|
|
106
|
+
* - `true`: add `isolation: isolate` and reset all inherited font/text properties.
|
|
107
|
+
* - `'allow-inheritance'`: only add `isolation: isolate` (keep inheriting font/text properties).
|
|
108
|
+
* - `false`: do nothing.
|
|
109
|
+
*
|
|
110
|
+
* @default true // or if `extends` is set, `false`
|
|
111
|
+
*/
|
|
112
|
+
isolate?: IsolateOption;
|
|
113
|
+
/**
|
|
114
|
+
* Whether the component can be used as an addon (e.g. `<Button addonBefore={Component}>`).
|
|
115
|
+
* Setting this to `true` also includes this component's class in the selector generated by the
|
|
116
|
+
* `addon-compatible` custom variant.
|
|
117
|
+
*
|
|
118
|
+
* @default false
|
|
119
|
+
*/
|
|
120
|
+
addonCompatible?: AddonCompatible;
|
|
121
|
+
cssProps?: ValidateCSSPropsConfig<OwnCSSProps>;
|
|
122
|
+
vars?: ValidateVarsConfig<keyof MergedCSSProps<Extends, OwnCSSProps>, Vars>;
|
|
123
|
+
}): GDSComponent<MergedCSSProps<Extends, OwnCSSProps>, AddonCompatible>;
|
|
124
|
+
/** Extracts the CSS props config type from a `GDSComponent` instance. */
|
|
125
|
+
export type ComponentCSSPropsConfig<Component extends GDSComponent> = Component extends GDSComponent<infer Props> ? Props : never;
|
|
54
126
|
/**
|
|
55
|
-
*
|
|
56
|
-
*
|
|
57
|
-
*
|
|
127
|
+
* Extracts CSS props types from a component for use in React props. Props without a `defaultValue`
|
|
128
|
+
* are required, those with a `defaultValue` are optional. Explicitly includes `undefined` in the
|
|
129
|
+
* type to work with `exactOptionalPropertyTypes`.
|
|
58
130
|
*/
|
|
59
|
-
export type ComponentCSSProps<
|
|
60
|
-
[K in keyof ComponentCSSPropsConfig<
|
|
131
|
+
export type ComponentCSSProps<Component extends GDSComponent> = {
|
|
132
|
+
[K in keyof ComponentCSSPropsConfig<Component> as string extends K ? never : 'defaultValue' extends keyof ComponentCSSPropsConfig<Component>[K] ? never : K]: CSSPropType<ComponentCSSPropsConfig<Component>[K]>;
|
|
61
133
|
} & {
|
|
62
|
-
[K in keyof ComponentCSSPropsConfig<
|
|
134
|
+
[K in keyof ComponentCSSPropsConfig<Component> as string extends K ? never : 'defaultValue' extends keyof ComponentCSSPropsConfig<Component>[K] ? K : never]?: CSSPropType<ComponentCSSPropsConfig<Component>[K]> | undefined;
|
|
63
135
|
};
|
|
64
136
|
/**
|
|
65
137
|
* Combined props type for GDS components. Includes CSS props and, for addon-compatible components,
|
|
66
138
|
* a hidden prop to mark them as such.
|
|
67
139
|
*/
|
|
68
|
-
export type GDSComponentProps<
|
|
140
|
+
export type GDSComponentProps<Component extends GDSComponent> = ComponentCSSProps<Component> & (Component extends GDSComponent<CSSPropsConfig, true> ? {
|
|
69
141
|
__addonCompatible?: undefined;
|
|
70
142
|
} : {
|
|
71
143
|
__addonCompatible?: never;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"component-registry.d.ts","sourceRoot":"","sources":["../src/component-registry.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"component-registry.d.ts","sourceRoot":"","sources":["../src/component-registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import { objectEntries } from 'ts-extras';
|
|
2
1
|
import { camelToKebab } from '@graphprotocol/gds-utils';
|
|
3
2
|
export class GDSComponent {
|
|
4
3
|
name;
|
|
5
4
|
kebabName;
|
|
6
5
|
className;
|
|
7
6
|
containerName;
|
|
7
|
+
extends;
|
|
8
|
+
isolate;
|
|
8
9
|
addonCompatible;
|
|
9
10
|
cssProps;
|
|
10
11
|
vars;
|
|
@@ -12,9 +13,30 @@ export class GDSComponent {
|
|
|
12
13
|
this.name = name;
|
|
13
14
|
this.kebabName = camelToKebab(name);
|
|
14
15
|
this.className = `gds-${this.kebabName}`;
|
|
15
|
-
this.containerName =
|
|
16
|
+
this.containerName = `gds-${this.kebabName}`;
|
|
17
|
+
this.extends = config?.extends;
|
|
18
|
+
this.isolate = config?.isolate ?? (this.extends ? false : true);
|
|
16
19
|
this.addonCompatible = (config?.addonCompatible ?? false);
|
|
17
|
-
this.
|
|
20
|
+
this.vars = config?.vars;
|
|
21
|
+
// Merge `cssProps` from parent with own, allowing `null` to remove inherited props
|
|
22
|
+
const parentCSSProps = this.extends?.cssProps ?? {};
|
|
23
|
+
const ownCSSProps = (config?.cssProps ?? {});
|
|
24
|
+
const ownPropNames = new Set(Object.keys(ownCSSProps));
|
|
25
|
+
const mergedCSSProps = new Map();
|
|
26
|
+
for (const [propName, prop] of Object.entries(parentCSSProps)) {
|
|
27
|
+
if (ownCSSProps[propName] !== null) {
|
|
28
|
+
mergedCSSProps.set(propName, prop);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
for (const [propName, prop] of Object.entries(ownCSSProps)) {
|
|
32
|
+
if (prop !== null) {
|
|
33
|
+
mergedCSSProps.set(propName, prop);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
this.cssProps = Object.freeze(Object.fromEntries([...mergedCSSProps.entries()].map(([propName, prop]) => {
|
|
37
|
+
const kebabName = camelToKebab(propName);
|
|
38
|
+
const own = ownPropNames.has(propName);
|
|
39
|
+
const parentProp = parentCSSProps[propName];
|
|
18
40
|
const initialValue = prop.defaultValue ??
|
|
19
41
|
(() => {
|
|
20
42
|
switch (prop.type) {
|
|
@@ -35,18 +57,31 @@ export class GDSComponent {
|
|
|
35
57
|
{
|
|
36
58
|
...prop,
|
|
37
59
|
name: propName,
|
|
38
|
-
kebabName
|
|
60
|
+
kebabName,
|
|
61
|
+
// Inherited props keep their parent's `containerName` and `cssProperty`
|
|
62
|
+
containerName: (!own && parentProp?.containerName) || this.containerName,
|
|
63
|
+
cssProperty: (!own && parentProp?.cssProperty) || `--gds-${this.kebabName}-${kebabName}`,
|
|
39
64
|
initialValue,
|
|
65
|
+
own,
|
|
66
|
+
polyfillAttribute: `data-gds-prop-polyfill-${kebabName}`,
|
|
40
67
|
},
|
|
41
68
|
];
|
|
42
69
|
})));
|
|
43
|
-
|
|
70
|
+
}
|
|
71
|
+
/** Returns the chain of container names from the `extends` hierarchy as an array. */
|
|
72
|
+
getContainerNameChain() {
|
|
73
|
+
const containerNames = [this.containerName];
|
|
74
|
+
let parent = this.extends;
|
|
75
|
+
while (parent) {
|
|
76
|
+
containerNames.unshift(parent.containerName);
|
|
77
|
+
parent = parent.extends;
|
|
78
|
+
}
|
|
79
|
+
return containerNames;
|
|
44
80
|
}
|
|
45
81
|
getCSSPropByName(name) {
|
|
46
82
|
const prop = this.cssProps[name];
|
|
47
|
-
if (!prop)
|
|
83
|
+
if (!prop)
|
|
48
84
|
throw new Error(`Unknown CSS prop "${name}" for component "${this.name}"`);
|
|
49
|
-
}
|
|
50
85
|
return prop;
|
|
51
86
|
}
|
|
52
87
|
findCSSPropByKebabName(kebabName) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"component-registry.js","sourceRoot":"","sources":["../src/component-registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"component-registry.js","sourceRoot":"","sources":["../src/component-registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export * from './types.ts';
|
|
2
2
|
export { getCSSPropRawValue } from './getCSSPropRawValue.ts';
|
|
3
3
|
export { parseCSSPropValue } from './parseCSSPropValue.ts';
|
|
4
|
-
export {
|
|
4
|
+
export { setupCSSProps } from './setupCSSProps.ts';
|
|
5
5
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +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,
|
|
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,aAAa,EAAE,MAAM,oBAAoB,CAAA"}
|
package/dist/css-props/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export * from "./types.js";
|
|
2
2
|
export { getCSSPropRawValue } from "./getCSSPropRawValue.js";
|
|
3
3
|
export { parseCSSPropValue } from "./parseCSSPropValue.js";
|
|
4
|
-
export {
|
|
4
|
+
export { setupCSSProps } from "./setupCSSProps.js";
|
|
5
5
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +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,
|
|
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,aAAa,EAAE,MAAM,oBAAoB,CAAA"}
|
|
@@ -35,7 +35,7 @@ export function parseCSSPropValue(prop, rawValue) {
|
|
|
35
35
|
const numberValue = parseNumber(rawValue.slice(0, -2)); // Remove 'px'
|
|
36
36
|
return pxToTw(numberValue ?? 0);
|
|
37
37
|
}
|
|
38
|
-
// Otherwise keep as-is (e.g
|
|
38
|
+
// Otherwise keep as-is (e.g. '1rem' or '100%')
|
|
39
39
|
return rawValue;
|
|
40
40
|
}
|
|
41
41
|
case 'color': {
|
|
@@ -1 +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
|
|
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,+CAA+C;YAC/C,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
|
+
* Sets up the CSS props system via the Tailwind plugin. This includes custom properties, utilities,
|
|
4
|
+
* and variants for prop-based styling.
|
|
5
|
+
*/
|
|
6
|
+
export declare function setupCSSProps(api: PluginAPI): void;
|
|
7
|
+
//# sourceMappingURL=setupCSSProps.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setupCSSProps.d.ts","sourceRoot":"","sources":["../../src/css-props/setupCSSProps.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAI5C;;;GAGG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,SAAS,QAiP3C"}
|
|
@@ -3,10 +3,10 @@ import { parseNumber } from '@graphprotocol/gds-utils';
|
|
|
3
3
|
import { getRegisteredComponent, getRegisteredComponents, } from "../component-registry.js";
|
|
4
4
|
import { getCSSPropRawValue } from "./getCSSPropRawValue.js";
|
|
5
5
|
/**
|
|
6
|
-
*
|
|
7
|
-
*
|
|
6
|
+
* Sets up the CSS props system via the Tailwind plugin. This includes custom properties, utilities,
|
|
7
|
+
* and variants for prop-based styling.
|
|
8
8
|
*/
|
|
9
|
-
export function
|
|
9
|
+
export function setupCSSProps(api) {
|
|
10
10
|
const componentsByCSSProp = getRegisteredComponents(true).reduce((outerMap, component) => {
|
|
11
11
|
for (const cssProp of Object.values(component.cssProps)) {
|
|
12
12
|
const innerMap = outerMap.get(cssProp.kebabName) ??
|
|
@@ -33,9 +33,13 @@ export function registerCSSProps(api) {
|
|
|
33
33
|
},
|
|
34
34
|
});
|
|
35
35
|
}
|
|
36
|
-
/** Register a custom property for each component-prop pair to restrict the allowed values. */
|
|
37
36
|
for (const component of getRegisteredComponents()) {
|
|
38
|
-
|
|
37
|
+
// Only process own props (not inherited via `extends`); inherited props are handled by the parent component
|
|
38
|
+
const ownCSSProps = Object.values(component.cssProps).filter((cssProp) => cssProp.own);
|
|
39
|
+
if (ownCSSProps.length === 0)
|
|
40
|
+
continue;
|
|
41
|
+
/** Register a custom property for each component-prop pair to restrict the allowed values. */
|
|
42
|
+
for (const cssProp of ownCSSProps) {
|
|
39
43
|
const syntax = (() => {
|
|
40
44
|
switch (cssProp.type) {
|
|
41
45
|
case 'values':
|
|
@@ -53,7 +57,7 @@ export function registerCSSProps(api) {
|
|
|
53
57
|
}
|
|
54
58
|
})();
|
|
55
59
|
api.addBase({
|
|
56
|
-
[`@property
|
|
60
|
+
[`@property ${cssProp.cssProperty}`]: {
|
|
57
61
|
syntax,
|
|
58
62
|
/**
|
|
59
63
|
* We only need this property to inherit if the type is not `values`, because `values` CSS
|
|
@@ -73,23 +77,17 @@ export function registerCSSProps(api) {
|
|
|
73
77
|
});
|
|
74
78
|
}
|
|
75
79
|
/**
|
|
76
|
-
*
|
|
77
|
-
* applying the value passed via the React prop, if any. See `
|
|
78
|
-
*
|
|
80
|
+
* Add base styles for each component-prop pair, defining the default value of each CSS prop and
|
|
81
|
+
* applying the value passed via the React prop, if any. See `getCSSPropRawValue` for details on
|
|
82
|
+
* how each prop type is handled.
|
|
79
83
|
*/
|
|
80
84
|
api.addBase({
|
|
81
85
|
'@layer components': {
|
|
82
|
-
[`.${component.className}`]: {
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
...rules,
|
|
88
|
-
[`--gds-passed-or-default-${cssProp.kebabName}`]: `var(--gds-passed-${cssProp.kebabName}, var(--gds-default-${cssProp.kebabName}, ${getCSSPropRawValue(cssProp, cssProp.initialValue)}))`,
|
|
89
|
-
[`--gds-${component.kebabName}-${cssProp.kebabName}`]: `var(--gds-prop-${cssProp.kebabName}, var(--gds-passed-or-default-${cssProp.kebabName}))`,
|
|
90
|
-
};
|
|
91
|
-
}, {}),
|
|
92
|
-
},
|
|
86
|
+
[`.${component.className}`]: ownCSSProps.reduce((rules, cssProp) => ({
|
|
87
|
+
...rules,
|
|
88
|
+
[`--gds-passed-or-default-${cssProp.kebabName}`]: `var(--gds-passed-${cssProp.kebabName}, var(--gds-default-${cssProp.kebabName}, ${getCSSPropRawValue(cssProp, cssProp.initialValue)}))`,
|
|
89
|
+
[cssProp.cssProperty]: `var(--gds-prop-${cssProp.kebabName}, var(--gds-passed-or-default-${cssProp.kebabName}))`,
|
|
90
|
+
}), {}),
|
|
93
91
|
},
|
|
94
92
|
});
|
|
95
93
|
}
|
|
@@ -163,20 +161,13 @@ export function registerCSSProps(api) {
|
|
|
163
161
|
for (const variant of ['@prop-not', '@prop']) {
|
|
164
162
|
api.matchVariant(variant, (cssPropKebabNameAndValue, { modifier: componentKebabName }) => {
|
|
165
163
|
/**
|
|
166
|
-
* If the modifier is
|
|
167
|
-
*
|
|
168
|
-
|
|
169
|
-
if (componentKebabName === 'dummy')
|
|
170
|
-
return [];
|
|
171
|
-
/**
|
|
172
|
-
* Default a missing modifier to `dummy` instead of considering the variant invalid so that
|
|
173
|
-
* it's suggested by Tailwind IntelliSense.
|
|
174
|
-
*/
|
|
175
|
-
const component = getRegisteredComponent(componentKebabName ?? 'dummy');
|
|
176
|
-
/**
|
|
177
|
-
* If no component is found (i.e. the modifier is not a valid component name), consider the
|
|
178
|
-
* variant invalid.
|
|
164
|
+
* If the modifier is missing, return some dummy CSS so that the variant is suggested by
|
|
165
|
+
* Tailwind IntelliSense. If a modifier is present but is not a valid component name, then
|
|
166
|
+
* return an empty array (no CSS is generated and the variant is considered invalid).
|
|
179
167
|
*/
|
|
168
|
+
if (componentKebabName === null)
|
|
169
|
+
return '@container dummy';
|
|
170
|
+
const component = getRegisteredComponent(componentKebabName);
|
|
180
171
|
if (!component)
|
|
181
172
|
return [];
|
|
182
173
|
try {
|
|
@@ -186,18 +177,15 @@ export function registerCSSProps(api) {
|
|
|
186
177
|
return [];
|
|
187
178
|
const cssProp = component.findCSSPropByKebabName(cssPropKebabName);
|
|
188
179
|
/**
|
|
189
|
-
*
|
|
190
|
-
*
|
|
191
|
-
* to list all variants in IntelliSense regardless of the component).
|
|
180
|
+
* If no such prop exists on the component, or if one exists but is not of type `values`
|
|
181
|
+
* or doesn't support the specified value, consider the variant invalid.
|
|
192
182
|
*/
|
|
193
|
-
if (
|
|
194
|
-
component.kebabName !== 'dummy') {
|
|
183
|
+
if (!cssProp || cssProp.type !== 'values' || !cssProp.values.includes(value))
|
|
195
184
|
return [];
|
|
196
|
-
}
|
|
197
185
|
const rawValue = cssProp ? getCSSPropRawValue(cssProp, value) : String(value);
|
|
198
186
|
return [
|
|
199
187
|
/** Style query selector for modern browsers. */
|
|
200
|
-
`@container ${
|
|
188
|
+
`@container ${cssProp.containerName} ${variant === '@prop-not' ? 'not' : ''} style(${cssProp.cssProperty}: ${rawValue})`,
|
|
201
189
|
/**
|
|
202
190
|
* Fallback selector for browsers without style query support, which unfortunately
|
|
203
191
|
* cannot be queried, but happens to be the same browsers that don't support view
|
|
@@ -207,7 +195,7 @@ export function registerCSSProps(api) {
|
|
|
207
195
|
* polyfill attributes are present even when the polyfill is not needed (see
|
|
208
196
|
* `useCSSPropsPolyfill` for an explanation why).
|
|
209
197
|
*/
|
|
210
|
-
`@supports (not (view-transition-name: none)) or (-moz-orient: inline) { &:where(.${component.className}${variant === '@prop-not' ? ':not' : ':is'}([
|
|
198
|
+
`@supports (not (view-transition-name: none)) or (-moz-orient: inline) { &:where(.${component.className}${variant === '@prop-not' ? ':not' : ':is'}([${cssProp.polyfillAttribute}=${cssesc(rawValue, { isIdentifier: true })}]) *) }`,
|
|
211
199
|
];
|
|
212
200
|
}
|
|
213
201
|
catch {
|
|
@@ -228,4 +216,4 @@ export function registerCSSProps(api) {
|
|
|
228
216
|
});
|
|
229
217
|
}
|
|
230
218
|
}
|
|
231
|
-
//# sourceMappingURL=
|
|
219
|
+
//# sourceMappingURL=setupCSSProps.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setupCSSProps.js","sourceRoot":"","sources":["../../src/css-props/setupCSSProps.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/css-states/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,KAAK,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,aAAa,CAAA;AAC7F,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/css-states/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,KAAK,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,aAAa,CAAA;AAC7F,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA"}
|
package/dist/css-states/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/css-states/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAqC,MAAM,aAAa,CAAA;AAC7F,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/css-states/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAqC,MAAM,aAAa,CAAA;AAC7F,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { PluginAPI } from '../types.ts';
|
|
2
|
+
/**
|
|
3
|
+
* Sets up the CSS states system via the Tailwind plugin. This system abstracts away CSS's native
|
|
4
|
+
* states in order to:
|
|
5
|
+
*
|
|
6
|
+
* - Allow overriding the state of components (e.g. `<Button className="state-active" />`).
|
|
7
|
+
* - Allow reading the state of components from their root element even when the native state is
|
|
8
|
+
* actually on a nested element (e.g. `group-has-checkbox-checked`), thanks to
|
|
9
|
+
* `variants/plugin.ts` overriding some of Tailwind's built-in variants.
|
|
10
|
+
* - Allow setting and reading custom states for DRY purposes (e.g. `active:state-[highlighted]` and
|
|
11
|
+
* `data-[highlighted]:state-[highlighted]` on a parent element and
|
|
12
|
+
* `@state-[highlighted]:bg-strong` on a child; also supports key-values like `state-[foo=bar]
|
|
13
|
+
* lg:state-[foo=baz]`).
|
|
14
|
+
*
|
|
15
|
+
* Like CSS props, this system leverages style queries and uses a similar fallback mechanism
|
|
16
|
+
* (querying by data attribute + using `view-transition-name` to target browsers that don't support
|
|
17
|
+
* style queries), though the CSS props polyfill is not used. See `useCSSState` for more details.
|
|
18
|
+
*/
|
|
19
|
+
export declare function setupCSSStates(api: PluginAPI): void;
|
|
20
|
+
//# sourceMappingURL=setupCSSStates.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setupCSSStates.d.ts","sourceRoot":"","sources":["../../src/css-states/setupCSSStates.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAG5C;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,SAAS,QAmH5C"}
|