@atlaskit/primitives 1.10.1 → 1.11.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/report.api.md CHANGED
@@ -883,6 +883,15 @@ const negativeSpaceMap: {
883
883
  'space.negative.400': 'var(--ds-space-negative-400)';
884
884
  };
885
885
 
886
+ // @public (undocumented)
887
+ type Opacity = keyof typeof opacityMap;
888
+
889
+ // @public
890
+ const opacityMap: {
891
+ readonly 'opacity.disabled': 'var(--ds-opacity-disabled)';
892
+ readonly 'opacity.loading': 'var(--ds-opacity-loading)';
893
+ };
894
+
886
895
  // @public (undocumented)
887
896
  type SafeCSSObject = CSSPseudos &
888
897
  CSSAtRules &
@@ -1130,8 +1139,32 @@ type TokenisedProps = {
1130
1139
  backgroundColor?: BackgroundColor;
1131
1140
  blockSize?: AutoComplete<Dimension>;
1132
1141
  borderColor?: BorderColor;
1142
+ borderBlockStartColor?: AutoComplete<BorderColor>;
1143
+ borderBlockEndColor?: AutoComplete<BorderColor>;
1144
+ borderInlineStartColor?: AutoComplete<BorderColor>;
1145
+ borderInlineEndColor?: AutoComplete<BorderColor>;
1146
+ borderBottomColor?: AutoComplete<BorderColor>;
1147
+ borderLeftColor?: AutoComplete<BorderColor>;
1148
+ borderRightColor?: AutoComplete<BorderColor>;
1149
+ borderTopColor?: AutoComplete<BorderColor>;
1133
1150
  borderRadius?: BorderRadius;
1151
+ borderStartStartRadius?: AutoComplete<BorderRadius>;
1152
+ borderStartEndRadius?: AutoComplete<BorderRadius>;
1153
+ borderEndStartRadius?: AutoComplete<BorderRadius>;
1154
+ borderEndEndRadius?: AutoComplete<BorderRadius>;
1155
+ borderBottomLeftRadius?: AutoComplete<BorderRadius>;
1156
+ borderBottomRightRadius?: AutoComplete<BorderRadius>;
1157
+ borderTopLeftRadius?: AutoComplete<BorderRadius>;
1158
+ borderTopRightRadius?: AutoComplete<BorderRadius>;
1134
1159
  borderWidth?: BorderWidth;
1160
+ borderBlockStartWidth?: AutoComplete<BorderWidth>;
1161
+ borderBlockEndWidth?: AutoComplete<BorderWidth>;
1162
+ borderInlineStartWidth?: AutoComplete<BorderWidth>;
1163
+ borderInlineEndWidth?: AutoComplete<BorderWidth>;
1164
+ borderBottomWidth?: AutoComplete<BorderWidth>;
1165
+ borderLeftWidth?: AutoComplete<BorderWidth>;
1166
+ borderRightWidth?: AutoComplete<BorderWidth>;
1167
+ borderTopWidth?: AutoComplete<BorderWidth>;
1135
1168
  bottom?: AutoComplete<Space>;
1136
1169
  boxShadow?: Shadow;
1137
1170
  color?: TextColor;
@@ -1166,6 +1199,7 @@ type TokenisedProps = {
1166
1199
  minHeight?: AutoComplete<Dimension>;
1167
1200
  minInlineSize?: AutoComplete<Dimension>;
1168
1201
  minWidth?: AutoComplete<Dimension>;
1202
+ opacity?: AutoComplete<Opacity> | number;
1169
1203
  outlineColor?: BorderColor;
1170
1204
  outlineOffset?: Space;
1171
1205
  outlineWidth?: BorderWidth;
@@ -1,6 +1,6 @@
1
1
  // Jest Snapshot v1, https://goo.gl/fbAQLP
2
2
 
3
- exports[`@atlaskit/primitives bg styles are generated correctly 1`] = `
3
+ exports[`@atlaskit/primitives background styles are generated correctly 1`] = `
4
4
  "export const backgroundColorMap = {
5
5
  'color.background.accent.lime.subtlest': token(
6
6
  'color.background.accent.lime.subtlest',
@@ -771,6 +771,78 @@ export type BorderColor = keyof typeof borderColorMap;
771
771
  "
772
772
  `;
773
773
 
774
+ exports[`@atlaskit/primitives opacity styles are generated correctly 1`] = `
775
+ "export const opacityMap = {
776
+ 'opacity.disabled': token('opacity.disabled', '0.4'),
777
+ 'opacity.loading': token('opacity.loading', '0.2'),
778
+ } as const;
779
+
780
+ export type Opacity = keyof typeof opacityMap;
781
+ "
782
+ `;
783
+
784
+ exports[`@atlaskit/primitives shadow styles are generated correctly 1`] = `
785
+ "export const shadowMap = {
786
+ 'elevation.shadow.overflow': token(
787
+ 'elevation.shadow.overflow',
788
+ '0px 0px 8px #091e423f, 0px 0px 1px #091e424f',
789
+ ),
790
+ 'elevation.shadow.overflow.perimeter': token(
791
+ 'elevation.shadow.overflow.perimeter',
792
+ '#091e421f',
793
+ ),
794
+ 'elevation.shadow.overflow.spread': token(
795
+ 'elevation.shadow.overflow.spread',
796
+ '#091e4229',
797
+ ),
798
+ 'elevation.shadow.overlay': token(
799
+ 'elevation.shadow.overlay',
800
+ '0px 8px 12px #091e423f, 0px 0px 1px #091e424f',
801
+ ),
802
+ 'elevation.shadow.raised': token(
803
+ 'elevation.shadow.raised',
804
+ '0px 1px 1px #091e423f, 0px 0px 1px #091e4221',
805
+ ),
806
+ } as const;
807
+
808
+ export type Shadow = keyof typeof shadowMap;
809
+ "
810
+ `;
811
+
812
+ exports[`@atlaskit/primitives spacing styles are generated correctly 1`] = `
813
+ "export const spaceMap = {
814
+ 'space.0': token('space.0', '0px'),
815
+ 'space.025': token('space.025', '2px'),
816
+ 'space.050': token('space.050', '4px'),
817
+ 'space.075': token('space.075', '6px'),
818
+ 'space.100': token('space.100', '8px'),
819
+ 'space.150': token('space.150', '12px'),
820
+ 'space.200': token('space.200', '16px'),
821
+ 'space.250': token('space.250', '20px'),
822
+ 'space.300': token('space.300', '24px'),
823
+ 'space.400': token('space.400', '32px'),
824
+ 'space.500': token('space.500', '40px'),
825
+ 'space.600': token('space.600', '48px'),
826
+ 'space.800': token('space.800', '64px'),
827
+ 'space.1000': token('space.1000', '80px'),
828
+ };
829
+ export type Space = keyof typeof spaceMap;
830
+
831
+ export const negativeSpaceMap = {
832
+ 'space.negative.025': token('space.negative.025', '-2px'),
833
+ 'space.negative.050': token('space.negative.050', '-4px'),
834
+ 'space.negative.075': token('space.negative.075', '-6px'),
835
+ 'space.negative.100': token('space.negative.100', '-8px'),
836
+ 'space.negative.150': token('space.negative.150', '-12px'),
837
+ 'space.negative.200': token('space.negative.200', '-16px'),
838
+ 'space.negative.250': token('space.negative.250', '-20px'),
839
+ 'space.negative.300': token('space.negative.300', '-24px'),
840
+ 'space.negative.400': token('space.negative.400', '-32px'),
841
+ };
842
+ export type NegativeSpace = keyof typeof negativeSpaceMap;
843
+ "
844
+ `;
845
+
774
846
  exports[`@atlaskit/primitives surface styles are generated correctly 1`] = `
775
847
  "export const surfaceColorMap = {
776
848
  'elevation.surface': token('elevation.surface', '#FFFFFF'),
@@ -1,24 +1,41 @@
1
1
  import { createColorStylesFromTemplate } from '../color-codegen-template';
2
+ import { createElevationStylesFromTemplate } from '../elevation-codegen-template';
3
+ import { createSpacingStylesFromTemplate } from '../spacing-codegen-template';
4
+
2
5
  describe('@atlaskit/primitives', () => {
6
+ // colour stuff
3
7
  test('text styles are generated correctly', () => {
4
8
  expect(createColorStylesFromTemplate('text')).toMatchSnapshot();
5
9
  });
6
-
7
- test('bg styles are generated correctly', () => {
10
+ test('background styles are generated correctly', () => {
8
11
  expect(createColorStylesFromTemplate('background')).toMatchSnapshot();
9
12
  });
10
-
11
13
  test('border styles are generated correctly', () => {
12
14
  expect(createColorStylesFromTemplate('border')).toMatchSnapshot();
13
15
  });
14
16
 
17
+ // elevation stuff
18
+ test('opacity styles are generated correctly', () => {
19
+ expect(createElevationStylesFromTemplate('opacity')).toMatchSnapshot();
20
+ });
21
+ test('shadow styles are generated correctly', () => {
22
+ expect(createElevationStylesFromTemplate('shadow')).toMatchSnapshot();
23
+ });
15
24
  test('surface styles are generated correctly', () => {
16
- expect(createColorStylesFromTemplate('surface')).toMatchSnapshot();
25
+ expect(createElevationStylesFromTemplate('surface')).toMatchSnapshot();
26
+ });
27
+
28
+ // spacing
29
+ test('spacing styles are generated correctly', () => {
30
+ expect(createSpacingStylesFromTemplate()).toMatchSnapshot();
17
31
  });
18
32
 
19
33
  test('incorrect config throws', () => {
20
34
  expect(() =>
21
35
  createColorStylesFromTemplate('fizzbuzz' as any),
22
36
  ).toThrowError();
37
+ expect(() =>
38
+ createElevationStylesFromTemplate('fizzbuzz' as any),
39
+ ).toThrowError();
23
40
  });
24
41
  });
@@ -6,6 +6,7 @@ import { createPartialSignedArtifact } from '@atlassian/codegen';
6
6
 
7
7
  import { createBorderStylesFromTemplate } from './border-codegen-template';
8
8
  import { createColorStylesFromTemplate } from './color-codegen-template';
9
+ import { createElevationStylesFromTemplate } from './elevation-codegen-template';
9
10
  import { createInverseColorMapTemplate } from './inverse-color-map-template';
10
11
  import { createStylesFromFileTemplate } from './misc-codegen-template';
11
12
  import { createSpacingStylesFromTemplate } from './spacing-codegen-template';
@@ -58,7 +59,7 @@ const sourceFns = [
58
59
  dependencies: [spacingTokensDependencyPath],
59
60
  },
60
61
  ),
61
- // text color, background-color, border-color, shadow
62
+ // text color, background-color, border-color
62
63
  () =>
63
64
  createPartialSignedArtifact(
64
65
  options => options.map(createColorStylesFromTemplate).join('\n'),
@@ -80,6 +81,17 @@ const sourceFns = [
80
81
  dependencies: [colorTokensDependencyPath],
81
82
  },
82
83
  ),
84
+ // elevation (opacity, shadow, surface)
85
+ () =>
86
+ createPartialSignedArtifact(
87
+ options => options.map(createElevationStylesFromTemplate).join('\n'),
88
+ 'yarn workspace @atlaskit/primitives codegen-styles',
89
+ {
90
+ id: 'elevation',
91
+ absoluteFilePath: targetPath,
92
+ dependencies: [colorTokensDependencyPath],
93
+ },
94
+ ),
83
95
  // border-width, border-radius
84
96
  () =>
85
97
  createPartialSignedArtifact(
@@ -1,7 +1,6 @@
1
1
  import prettier from 'prettier';
2
2
  import parserTypeScript from 'prettier/parser-typescript';
3
3
 
4
- import { CURRENT_SURFACE_CSS_VAR } from '@atlaskit/tokens';
5
4
  // eslint-disable-next-line @atlassian/tangerine/import/entry-points
6
5
  import legacyTokens from '@atlaskit/tokens/src/artifacts/tokens-raw/atlassian-legacy-light';
7
6
  // eslint-disable-next-line @atlassian/tangerine/import/entry-points
@@ -46,13 +45,6 @@ const tokenStyles = {
46
45
  filterFn: <T extends Token>(t: T) =>
47
46
  t.token.startsWith(tokenStyles.border.prefix),
48
47
  },
49
- shadow: {
50
- objectName: 'shadow',
51
- prefix: 'elevation.shadow.',
52
- cssProperty: 'boxShadow',
53
- filterFn: <T extends Token>(t: T) =>
54
- t.token.startsWith(tokenStyles.shadow.prefix),
55
- },
56
48
  fill: {
57
49
  objectName: 'fill',
58
50
  prefix: 'color.icon.',
@@ -60,13 +52,6 @@ const tokenStyles = {
60
52
  filterFn: <T extends Token>(t: T) =>
61
53
  t.token.startsWith(tokenStyles.fill.prefix),
62
54
  },
63
- surface: {
64
- objectName: 'surfaceColor',
65
- prefix: 'elevation.surface.',
66
- cssProperty: CURRENT_SURFACE_CSS_VAR,
67
- filterFn: <T extends Token>(t: T) =>
68
- t.token.startsWith(tokenStyles.surface.prefix),
69
- },
70
55
  } as const;
71
56
 
72
57
  const bothTokens = tokens.map((t, i) => [t, legacyTokens[i]]);
@@ -0,0 +1,94 @@
1
+ import prettier from 'prettier';
2
+ import parserTypeScript from 'prettier/parser-typescript';
3
+
4
+ import { CURRENT_SURFACE_CSS_VAR } from '@atlaskit/tokens';
5
+ // eslint-disable-next-line @atlassian/tangerine/import/entry-points
6
+ import legacyTokens from '@atlaskit/tokens/src/artifacts/tokens-raw/atlassian-legacy-light';
7
+ // eslint-disable-next-line @atlassian/tangerine/import/entry-points
8
+ import tokens from '@atlaskit/tokens/src/artifacts/tokens-raw/atlassian-light';
9
+
10
+ import {
11
+ capitalize,
12
+ constructTokenFunctionCall,
13
+ ShadowDefinition,
14
+ } from './utils';
15
+
16
+ type Token = {
17
+ token: string;
18
+ fallback: string | ShadowDefinition;
19
+ isDeprecated: boolean;
20
+ };
21
+
22
+ // NB: Fallback CSS variables can be deleted when tokens are no longer behind a feature flag
23
+ const tokenStyles = {
24
+ opacity: {
25
+ objectName: 'opacity',
26
+ prefix: 'opacity.',
27
+ cssProperty: 'opacity',
28
+ filterFn: <T extends Token>(t: T) =>
29
+ t.token.startsWith(tokenStyles.opacity.prefix),
30
+ },
31
+ shadow: {
32
+ objectName: 'shadow',
33
+ prefix: 'elevation.shadow.',
34
+ cssProperty: 'boxShadow',
35
+ filterFn: <T extends Token>(t: T) =>
36
+ t.token.startsWith(tokenStyles.shadow.prefix),
37
+ },
38
+ surface: {
39
+ objectName: 'surfaceColor',
40
+ prefix: 'elevation.surface.',
41
+ cssProperty: CURRENT_SURFACE_CSS_VAR,
42
+ filterFn: <T extends Token>(t: T) =>
43
+ t.token.startsWith(tokenStyles.surface.prefix),
44
+ },
45
+ } as const;
46
+
47
+ const bothTokens = tokens.map((t, i) => [t, legacyTokens[i]]);
48
+
49
+ const activeTokens = bothTokens
50
+ .filter(([t]) => t.attributes.state !== 'deleted')
51
+ .map(t => t)
52
+ .map(
53
+ ([t, legacy]): Token => ({
54
+ token: t.name,
55
+ fallback: legacy.value as string | ShadowDefinition,
56
+ isDeprecated: t.attributes.state === 'deprecated',
57
+ }),
58
+ );
59
+
60
+ export const createElevationStylesFromTemplate = (
61
+ property: keyof typeof tokenStyles,
62
+ ) => {
63
+ if (!tokenStyles[property]) {
64
+ throw new Error(`[codegen] Unknown option found "${property}"`);
65
+ }
66
+
67
+ const { filterFn, objectName } = tokenStyles[property];
68
+
69
+ return (
70
+ prettier.format(
71
+ `
72
+ export const ${objectName}Map = {
73
+ ${activeTokens
74
+ .filter(filterFn)
75
+ // @ts-ignore
76
+ .map(t => ({ ...t, token: t.token.replaceAll('.[default]', '') }))
77
+ .map(t => {
78
+ return `
79
+ ${t.isDeprecated ? '// @deprecated' : ''}
80
+ '${t.token}': ${constructTokenFunctionCall(t.token, t.fallback)}
81
+ `.trim();
82
+ })
83
+ .join(',\n\t')}
84
+ } as const;`,
85
+ {
86
+ singleQuote: true,
87
+ parser: 'typescript',
88
+ trailingComma: 'all',
89
+ plugins: [parserTypeScript],
90
+ },
91
+ ) +
92
+ `\nexport type ${capitalize(objectName)} = keyof typeof ${objectName}Map;\n`
93
+ );
94
+ };
@@ -634,6 +634,15 @@ const negativeSpaceMap: {
634
634
  'space.negative.400': "var(--ds-space-negative-400)";
635
635
  };
636
636
 
637
+ // @public (undocumented)
638
+ type Opacity = keyof typeof opacityMap;
639
+
640
+ // @public
641
+ const opacityMap: {
642
+ readonly 'opacity.disabled': "var(--ds-opacity-disabled)";
643
+ readonly 'opacity.loading': "var(--ds-opacity-loading)";
644
+ };
645
+
637
646
  // @public (undocumented)
638
647
  type SafeCSSObject = CSSPseudos & CSSAtRules & TokenisedProps & CSSMediaQueries & Omit<CSSPropertiesWithMultiValues, keyof TokenisedProps>;
639
648
 
@@ -784,8 +793,32 @@ type TokenisedProps = {
784
793
  backgroundColor?: BackgroundColor;
785
794
  blockSize?: AutoComplete<Dimension>;
786
795
  borderColor?: BorderColor;
796
+ borderBlockStartColor?: AutoComplete<BorderColor>;
797
+ borderBlockEndColor?: AutoComplete<BorderColor>;
798
+ borderInlineStartColor?: AutoComplete<BorderColor>;
799
+ borderInlineEndColor?: AutoComplete<BorderColor>;
800
+ borderBottomColor?: AutoComplete<BorderColor>;
801
+ borderLeftColor?: AutoComplete<BorderColor>;
802
+ borderRightColor?: AutoComplete<BorderColor>;
803
+ borderTopColor?: AutoComplete<BorderColor>;
787
804
  borderRadius?: BorderRadius;
805
+ borderStartStartRadius?: AutoComplete<BorderRadius>;
806
+ borderStartEndRadius?: AutoComplete<BorderRadius>;
807
+ borderEndStartRadius?: AutoComplete<BorderRadius>;
808
+ borderEndEndRadius?: AutoComplete<BorderRadius>;
809
+ borderBottomLeftRadius?: AutoComplete<BorderRadius>;
810
+ borderBottomRightRadius?: AutoComplete<BorderRadius>;
811
+ borderTopLeftRadius?: AutoComplete<BorderRadius>;
812
+ borderTopRightRadius?: AutoComplete<BorderRadius>;
788
813
  borderWidth?: BorderWidth;
814
+ borderBlockStartWidth?: AutoComplete<BorderWidth>;
815
+ borderBlockEndWidth?: AutoComplete<BorderWidth>;
816
+ borderInlineStartWidth?: AutoComplete<BorderWidth>;
817
+ borderInlineEndWidth?: AutoComplete<BorderWidth>;
818
+ borderBottomWidth?: AutoComplete<BorderWidth>;
819
+ borderLeftWidth?: AutoComplete<BorderWidth>;
820
+ borderRightWidth?: AutoComplete<BorderWidth>;
821
+ borderTopWidth?: AutoComplete<BorderWidth>;
789
822
  bottom?: AutoComplete<Space>;
790
823
  boxShadow?: Shadow;
791
824
  color?: TextColor;
@@ -820,6 +853,7 @@ type TokenisedProps = {
820
853
  minHeight?: AutoComplete<Dimension>;
821
854
  minInlineSize?: AutoComplete<Dimension>;
822
855
  minWidth?: AutoComplete<Dimension>;
856
+ opacity?: AutoComplete<Opacity> | number;
823
857
  outlineColor?: BorderColor;
824
858
  outlineOffset?: Space;
825
859
  outlineWidth?: BorderWidth;