@wordpress/theme 0.2.1-next.dc3f6d3c1.0 → 0.3.1-next.8b30e05b0.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.
@@ -18,6 +18,7 @@ import {
18
18
  * Internal dependencies
19
19
  */
20
20
  import { ThemeProvider } from '../theme-provider';
21
+ import '../prebuilt/css/design-tokens.css';
21
22
 
22
23
  const meta: Meta< typeof ThemeProvider > = {
23
24
  title: 'Design System/Theme Provider',
@@ -198,10 +199,10 @@ export const WithPicker: StoryObj< typeof ThemeProvider > = {
198
199
  },
199
200
  };
200
201
 
201
- const NestingDebug = ( { bg = '', primary = '' } ) => (
202
+ const NestingDebug = ( { bg = '', primary = '', density = '' } ) => (
202
203
  <div
203
204
  style={ {
204
- padding: '0.25rem',
205
+ padding: 'var(--wpds-dimension-padding-surface-sm)',
205
206
  color: 'var(--wpds-color-fg-content-neutral)',
206
207
  backgroundColor: 'var(--wpds-color-bg-surface-neutral)',
207
208
  display: 'flex',
@@ -210,13 +211,13 @@ const NestingDebug = ( { bg = '', primary = '' } ) => (
210
211
  gap: '1rem',
211
212
  } }
212
213
  >
213
- <pre>
214
- bg: { bg } | primary: { primary }
214
+ <pre style={ { margin: 0 } }>
215
+ bg: { bg } | primary: { primary } | density: { density }
215
216
  </pre>
216
217
  <span
217
218
  style={ {
218
219
  display: 'inline-block',
219
- padding: '0.25rem',
220
+ padding: 'var(--wpds-dimension-padding-surface-xs)',
220
221
  borderRadius: '0.25rem',
221
222
  backgroundColor:
222
223
  'var(--wpds-color-bg-interactive-brand-strong)',
@@ -229,7 +230,7 @@ const NestingDebug = ( { bg = '', primary = '' } ) => (
229
230
  style={ {
230
231
  display: 'inline-block',
231
232
  marginInlineStart: '0.25rem',
232
- padding: '0.25rem',
233
+ padding: 'var(--wpds-dimension-padding-surface-xs)',
233
234
  borderRadius: '0.25rem',
234
235
  backgroundColor:
235
236
  'var(--wpds-color-bg-interactive-brand-weak-disabled)',
@@ -245,27 +246,39 @@ export const NestingAndInheriting: StoryObj< typeof ThemeProvider > = {
245
246
  render: () => {
246
247
  return (
247
248
  <ThemeProvider>
248
- <NestingDebug bg="inherit (root)" primary="inherit (root)" />
249
+ <NestingDebug
250
+ bg="inherit (root)"
251
+ primary="inherit (root)"
252
+ density="inherit (root)"
253
+ />
249
254
  <div style={ { paddingInlineStart: '1rem' } }>
250
255
  <ThemeProvider
251
256
  color={ {
252
257
  bg: '#1e1e1e',
253
258
  } }
259
+ density="compact"
254
260
  >
255
- <NestingDebug bg="#1e1e1e" primary="inherit (root)" />
261
+ <NestingDebug
262
+ bg="#1e1e1e"
263
+ primary="inherit (root)"
264
+ density="compact"
265
+ />
256
266
  <div style={ { paddingInlineStart: '1rem' } }>
257
267
  <ThemeProvider>
258
268
  <NestingDebug
259
269
  bg="inherit (#1e1e1e)"
260
270
  primary="inherit (root)"
271
+ density="inherit (compact)"
261
272
  />
262
273
  <div style={ { paddingInlineStart: '1rem' } }>
263
274
  <ThemeProvider
264
275
  color={ { primary: 'hotpink' } }
276
+ density="default"
265
277
  >
266
278
  <NestingDebug
267
279
  bg="inherit (#1e1e1e)"
268
280
  primary="hotpink"
281
+ density="default"
269
282
  />
270
283
  <div
271
284
  style={ {
@@ -278,6 +291,7 @@ export const NestingAndInheriting: StoryObj< typeof ThemeProvider > = {
278
291
  <NestingDebug
279
292
  bg="#f8f8f8"
280
293
  primary="inherit (hotpink)"
294
+ density="inherit (default)"
281
295
  />
282
296
  </ThemeProvider>
283
297
  </div>
@@ -397,7 +411,7 @@ export const AcrossIframes: StoryObj< typeof ThemeProvider > = {
397
411
  <span
398
412
  style={ {
399
413
  display: 'inline-block',
400
- padding: '0.25rem',
414
+ padding: 'var(--wpds-dimension-padding-surface-xs)',
401
415
  borderRadius: '0.25rem',
402
416
  backgroundColor:
403
417
  'var(--wpds-color-bg-interactive-brand-strong)',
@@ -49,6 +49,7 @@ export const ThemeProvider = ( {
49
49
  children,
50
50
  color = {},
51
51
  isRoot = false,
52
+ density,
52
53
  }: ThemeProviderProps ) => {
53
54
  const instanceId = useId();
54
55
 
@@ -76,6 +77,7 @@ export const ThemeProvider = ( {
76
77
  <div
77
78
  data-wpds-theme-provider-id={ instanceId }
78
79
  data-wpds-root-provider={ isRoot }
80
+ data-wpds-density={ density }
79
81
  className={ styles.root }
80
82
  >
81
83
  <ThemeContext.Provider value={ contextValue }>
package/src/types.ts CHANGED
@@ -23,6 +23,15 @@ export interface ThemeProviderSettings {
23
23
  */
24
24
  bg?: string;
25
25
  };
26
+
27
+ /**
28
+ * The density of the theme. If left unspecified, the theme inherits from
29
+ * the density of the closest `ThemeProvider`, or uses the default density
30
+ * if there is no inherited density.
31
+ *
32
+ * @default undefined
33
+ */
34
+ density?: undefined | 'default' | 'compact' | 'comfortable';
26
35
  }
27
36
 
28
37
  export interface ThemeProviderProps extends ThemeProviderSettings {
@@ -40,6 +40,27 @@ export default defineConfig( {
40
40
  makeCSSVar( `wpds.${ publicTokenId( token.id ) }` ),
41
41
  baseSelector: ':root',
42
42
  modeSelectors: [
43
+ {
44
+ tokens: [ 'dimension.*' ],
45
+ mode: '.',
46
+ selectors: [
47
+ "[data-wpds-theme-provider-id][data-wpds-density='default']",
48
+ ],
49
+ },
50
+ {
51
+ tokens: [ 'dimension.*' ],
52
+ mode: 'compact',
53
+ selectors: [
54
+ "[data-wpds-theme-provider-id][data-wpds-density='compact']",
55
+ ],
56
+ },
57
+ {
58
+ tokens: [ 'dimension.*' ],
59
+ mode: 'comfortable',
60
+ selectors: [
61
+ "[data-wpds-theme-provider-id][data-wpds-density='comfortable']",
62
+ ],
63
+ },
43
64
  {
44
65
  mode: 'high-dpi',
45
66
  selectors: [
@@ -52,21 +52,55 @@
52
52
  },
53
53
  "padding": {
54
54
  "surface": {
55
- "x-small": {
56
- "$value": "{dimension.primitive.space.20}",
57
- "$description": "Extra small spacing for surfaces"
55
+ "2xs": {
56
+ "$value": "{dimension.primitive.space.10}",
57
+ "$description": "2x extra small spacing for surfaces",
58
+ "$extensions": {
59
+ "mode": {
60
+ "compact": "{dimension.primitive.space.10}",
61
+ "comfortable": "{dimension.primitive.space.20}"
62
+ }
63
+ }
58
64
  },
59
- "small": {
60
- "$value": "{dimension.primitive.space.30}",
61
- "$description": "Small spacing for surfaces"
65
+ "xs": {
66
+ "$value": "{dimension.primitive.space.20}",
67
+ "$description": "Extra small spacing for surfaces",
68
+ "$extensions": {
69
+ "mode": {
70
+ "compact": "{dimension.primitive.space.10}",
71
+ "comfortable": "{dimension.primitive.space.30}"
72
+ }
73
+ }
62
74
  },
63
- "medium": {
75
+ "sm": {
64
76
  "$value": "{dimension.primitive.space.40}",
65
- "$description": "Medium spacing for surfaces"
77
+ "$description": "Small spacing for surfaces",
78
+ "$extensions": {
79
+ "mode": {
80
+ "compact": "{dimension.primitive.space.30}",
81
+ "comfortable": "{dimension.primitive.space.50}"
82
+ }
83
+ }
66
84
  },
67
- "large": {
85
+ "md": {
68
86
  "$value": "{dimension.primitive.space.60}",
69
- "$description": "Large spacing for surfaces"
87
+ "$description": "Medium spacing for surfaces",
88
+ "$extensions": {
89
+ "mode": {
90
+ "compact": "{dimension.primitive.space.50}",
91
+ "comfortable": "{dimension.primitive.space.70}"
92
+ }
93
+ }
94
+ },
95
+ "lg": {
96
+ "$value": "{dimension.primitive.space.70}",
97
+ "$description": "Large spacing for surfaces",
98
+ "$extensions": {
99
+ "mode": {
100
+ "compact": "{dimension.primitive.space.60}",
101
+ "comfortable": "{dimension.primitive.space.80}"
102
+ }
103
+ }
70
104
  }
71
105
  }
72
106
  }