@sanity/ui 4.0.0-static.26 → 4.0.0-static.27

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.
@@ -15,14 +15,8 @@ import {_style} from '../../_style.css'
15
15
  import {layers} from '../../layers.css'
16
16
  import {vars} from '../../vars.css'
17
17
 
18
- export const root: string = _style(layers.primitives, {
19
- backgroundColor: vars.color.bg,
20
- color: vars.color.fg,
21
-
22
- transition:
23
- 'background-color 100ms ease-in-out, border-color 100ms, box-shadow 100ms ease-in-out, color 100ms ease-in-out',
24
-
25
- vars: {
18
+ const stateVars = {
19
+ enabled: {
26
20
  [vars.color.bg]: vars.color.tinted.default.bg[0],
27
21
  [vars.color.border]: vars.color.tinted.default.border[1],
28
22
  [vars.color.fg]: vars.color.tinted.default.fg[0],
@@ -31,7 +25,93 @@ export const root: string = _style(layers.primitives, {
31
25
  [vars.color.muted.fg]: vars.color.tinted.default.fg[4],
32
26
  },
33
27
 
34
- selectors: {
28
+ hovered: {
29
+ [vars.color.bg]: vars.color.tinted.default.bg[1],
30
+ [vars.color.border]: vars.color.tinted.default.border[3],
31
+ [vars.color.fg]: vars.color.tinted.default.fg[1],
32
+ [vars.color.code.bg]: vars.color.tinted.default.bg[2],
33
+ [vars.color.code.fg]: vars.color.tinted.default.fg[4],
34
+ [vars.color.muted.bg]: vars.color.tinted.default.bg[2],
35
+ [vars.color.muted.fg]: vars.color.tinted.default.fg[4],
36
+ },
37
+
38
+ pressed: {
39
+ [vars.color.bg]: vars.color.tinted.default.bg[2],
40
+ [vars.color.border]: vars.color.tinted.default.border[4],
41
+ [vars.color.fg]: vars.color.tinted.default.fg[0],
42
+ [vars.color.code.bg]: vars.color.tinted.default.bg[3],
43
+ [vars.color.code.fg]: vars.color.tinted.default.fg[4],
44
+ [vars.color.muted.bg]: vars.color.tinted.default.bg[3],
45
+ [vars.color.muted.fg]: vars.color.tinted.default.fg[4],
46
+ },
47
+
48
+ selected: {
49
+ [vars.color.bg]: vars.color.solid.primary.bg[0],
50
+ [vars.color.border]: vars.color.solid.primary.border[1],
51
+ [vars.color.fg]: vars.color.solid.primary.fg[0],
52
+ [vars.color.code.bg]: vars.color.solid.primary.bg[1],
53
+ [vars.color.code.fg]: vars.color.solid.primary.fg[3],
54
+ [vars.color.muted.bg]: vars.color.solid.primary.bg[1],
55
+ [vars.color.muted.fg]: vars.color.solid.primary.fg[3],
56
+ },
57
+
58
+ disabled: {
59
+ [vars.color.bg]: vars.color.tinted.default.bg[0],
60
+ [vars.color.border]: vars.color.tinted.default.border[1],
61
+ [vars.color.fg]: vars.color.tinted.default.border[3],
62
+ [vars.color.code.bg]: vars.color.tinted.default.bg[0],
63
+ [vars.color.code.fg]: vars.color.tinted.default.border[2],
64
+ [vars.color.muted.bg]: vars.color.tinted.default.bg[1],
65
+ [vars.color.muted.fg]: vars.color.tinted.default.border[2],
66
+ },
67
+ }
68
+
69
+ export const root: string = _style(layers.primitives, {
70
+ 'backgroundColor': vars.color.bg,
71
+ 'color': vars.color.fg,
72
+
73
+ 'transition':
74
+ 'background-color 100ms ease-in-out, border-color 100ms, box-shadow 100ms ease-in-out, color 100ms ease-in-out',
75
+
76
+ 'vars': stateVars.enabled,
77
+
78
+ '@media': {
79
+ '(hover: hover)': {
80
+ selectors: {
81
+ [[
82
+ 'a.&',
83
+ ':not(:active)',
84
+ ':not(:focus)',
85
+ ':not(:disabled)',
86
+ ':not([aria-pressed="true"])',
87
+ ':not([data-pressed])',
88
+ ':not([data-focused])',
89
+ ':not([data-selected])',
90
+ ':not([data-disabled])',
91
+ ':hover',
92
+ ].join('')]: {
93
+ vars: stateVars.hovered,
94
+ },
95
+
96
+ [[
97
+ 'button.&',
98
+ ':not(:active)',
99
+ ':not(:focus)',
100
+ ':not(:disabled)',
101
+ ':not([aria-pressed="true"])',
102
+ ':not([data-pressed])',
103
+ ':not([data-focused])',
104
+ ':not([data-selected])',
105
+ ':not([data-disabled])',
106
+ ':hover',
107
+ ].join('')]: {
108
+ vars: stateVars.hovered,
109
+ },
110
+ },
111
+ },
112
+ },
113
+
114
+ 'selectors': {
35
115
  'a.&': {
36
116
  outline: 'none',
37
117
  textDecoration: 'none',
@@ -49,89 +129,65 @@ export const root: string = _style(layers.primitives, {
49
129
  `repeating-conic-gradient(${vars.color.bg} 0% 25%, ${vars.color.muted.bg} 0% 50%)` as string,
50
130
  },
51
131
 
52
- 'a.&:not([data-disabled]):hover, button.&:not([data-disabled]):hover': {
53
- vars: {
54
- [vars.color.bg]: vars.color.tinted.default.bg[1],
55
- [vars.color.border]: vars.color.tinted.default.border[3],
56
- [vars.color.fg]: vars.color.tinted.default.fg[1],
57
- [vars.color.code.bg]: vars.color.tinted.default.bg[2],
58
- [vars.color.code.fg]: vars.color.tinted.default.fg[4],
59
- [vars.color.muted.bg]: vars.color.tinted.default.bg[2],
60
- [vars.color.muted.fg]: vars.color.tinted.default.fg[4],
61
- },
132
+ // hovered
133
+ [[
134
+ //
135
+ 'a.&:not([data-disabled])[data-hovered]',
136
+ 'button.&:not([data-disabled])[data-hovered]',
137
+ ].join(',')]: {
138
+ vars: stateVars.hovered,
62
139
  },
63
140
 
64
- 'a&:not([data-disabled]):active, button&:not([data-disabled]):active': {
65
- vars: {
66
- [vars.color.bg]: vars.color.tinted.default.bg[2],
67
- [vars.color.border]: vars.color.tinted.default.border[4],
68
- [vars.color.fg]: vars.color.tinted.default.fg[0],
69
- [vars.color.code.bg]: vars.color.tinted.default.bg[3],
70
- [vars.color.code.fg]: vars.color.tinted.default.fg[4],
71
- [vars.color.muted.bg]: vars.color.tinted.default.bg[3],
72
- [vars.color.muted.fg]: vars.color.tinted.default.fg[4],
73
- },
141
+ // pressed
142
+ [[
143
+ 'a.&:not([data-disabled]):active',
144
+ 'button.&:not([data-disabled]):active',
145
+ 'a.&:not([data-disabled])[aria-pressed="true"]',
146
+ 'button.&:not([data-disabled])[aria-pressed="true"]',
147
+ 'a.&:not([data-disabled])[data-pressed]',
148
+ 'button.&:not([data-disabled])[data-pressed]',
149
+ ].join(',')]: {
150
+ vars: stateVars.pressed,
74
151
  },
75
152
 
76
- // toggle button
77
- 'a&:not([data-disabled])[aria-pressed="true"], button&:not([data-disabled])[aria-pressed="true"]':
78
- {
79
- vars: {
80
- [vars.color.bg]: vars.color.tinted.default.bg[2],
81
- [vars.color.border]: vars.color.tinted.default.border[4],
82
- [vars.color.fg]: vars.color.tinted.default.fg[0],
83
- [vars.color.code.bg]: vars.color.tinted.default.bg[3],
84
- [vars.color.code.fg]: vars.color.tinted.default.fg[4],
85
- [vars.color.muted.bg]: vars.color.tinted.default.bg[3],
86
- [vars.color.muted.fg]: vars.color.tinted.default.fg[4],
87
- },
88
- },
89
-
90
- 'a&:not([data-disabled])[data-pressed], button&:not([data-disabled])[data-pressed]': {
91
- vars: {
92
- [vars.color.bg]: vars.color.tinted.default.bg[2],
93
- [vars.color.border]: vars.color.tinted.default.border[4],
94
- [vars.color.fg]: vars.color.tinted.default.fg[0],
95
- [vars.color.code.bg]: vars.color.tinted.default.bg[3],
96
- [vars.color.code.fg]: vars.color.tinted.default.fg[4],
97
- [vars.color.muted.bg]: vars.color.tinted.default.bg[3],
98
- [vars.color.muted.fg]: vars.color.tinted.default.fg[4],
99
- },
100
- },
101
-
102
- 'a&:not([data-disabled])[data-selected], button&:not([data-disabled])[data-selected]': {
103
- vars: {
104
- [vars.color.bg]: vars.color.solid.primary.bg[0],
105
- [vars.color.border]: vars.color.solid.primary.border[1],
106
- [vars.color.fg]: vars.color.solid.primary.fg[0],
107
- [vars.color.code.bg]: vars.color.solid.primary.bg[1],
108
- [vars.color.code.fg]: vars.color.solid.primary.fg[3],
109
- [vars.color.muted.bg]: vars.color.solid.primary.bg[1],
110
- [vars.color.muted.fg]: vars.color.solid.primary.fg[3],
111
- },
153
+ // selected
154
+ [[
155
+ //
156
+ 'a.&:not([data-disabled])[data-selected]',
157
+ 'button.&:not([data-disabled])[data-selected]',
158
+ ].join(',')]: {
159
+ vars: stateVars.selected,
112
160
  },
113
161
 
114
- 'a&[data-disabled], button&[data-disabled]': {
115
- vars: {
116
- [vars.color.bg]: vars.color.tinted.default.bg[0],
117
- [vars.color.border]: vars.color.tinted.default.border[1],
118
- [vars.color.fg]: vars.color.tinted.default.border[3],
119
- [vars.color.code.bg]: vars.color.tinted.default.bg[0],
120
- [vars.color.code.fg]: vars.color.tinted.default.border[2],
121
- [vars.color.muted.bg]: vars.color.tinted.default.bg[1],
122
- [vars.color.muted.fg]: vars.color.tinted.default.border[2],
123
- },
162
+ // disabled
163
+ [[
164
+ //
165
+ 'a.&:disabled',
166
+ 'a.&[data-disabled]',
167
+ 'button.&:disabled',
168
+ 'button.&[data-disabled]',
169
+ ].join(',')]: {
170
+ vars: stateVars.disabled,
124
171
  },
125
172
 
126
- 'a&[data-focus-ring]:focus, button&[data-focus-ring]:focus': {
173
+ // focus ring
174
+ [[
175
+ //
176
+ 'a.&[data-focus-ring]:focus',
177
+ 'button.&[data-focus-ring]:focus',
178
+ ].join(',')]: {
127
179
  outline: `${vars.card.focusRing.width} solid ${vars.color.focusRing}`,
128
180
  outlineOffset: vars.card.focusRing.offset,
129
181
  },
130
182
 
131
- 'a&[data-focus-ring]:focus:not(:focus-visible), button&[data-focus-ring]:focus:not(:focus-visible)':
132
- {
133
- outline: 'none',
134
- },
183
+ // focus ring - not focus visible
184
+ [[
185
+ //
186
+ 'a.&[data-focus-ring]:focus:not(:focus-visible)',
187
+ 'button.&[data-focus-ring]:focus:not(:focus-visible)',
188
+ ].join(',')]: {
189
+ outline: 'none',
190
+ },
135
191
  },
136
192
  })
137
193
 
@@ -35,67 +35,102 @@ export const tones: Record<ElementTone, string> = {
35
35
  const focused = vars.color.solid.primary
36
36
  const disabled = vars.color.tinted.default
37
37
 
38
+ const stateVars = {
39
+ enabled: {
40
+ [vars.color.bg]: tinted.bg[0],
41
+ [vars.color.border]: tinted.border[1],
42
+ [vars.color.fg]: tinted.fg[2],
43
+ [vars.color.muted.bg]: tinted.bg[1],
44
+ [vars.color.muted.fg]: tinted.fg[3],
45
+ },
46
+
47
+ hovered: {
48
+ [vars.color.bg]: tinted.bg[1],
49
+ [vars.color.border]: tinted.border[2],
50
+ [vars.color.fg]: tinted.fg[1],
51
+ [vars.color.muted.bg]: tinted.bg[2],
52
+ [vars.color.muted.fg]: tinted.fg[4],
53
+ },
54
+
55
+ pressed: {
56
+ [vars.color.bg]: tinted.bg[2],
57
+ [vars.color.border]: tinted.border[4],
58
+ [vars.color.fg]: tinted.fg[0],
59
+ [vars.color.muted.bg]: tinted.bg[3],
60
+ [vars.color.muted.fg]: tinted.fg[4],
61
+ },
62
+
63
+ focused: {
64
+ [vars.color.bg]: focused.bg[0],
65
+ [vars.color.border]: focused.border[1],
66
+ [vars.color.fg]: focused.fg[0],
67
+ [vars.color.muted.bg]: focused.bg[1],
68
+ [vars.color.muted.fg]: focused.fg[3],
69
+ },
70
+
71
+ disabled: {
72
+ [vars.color.bg]: disabled.bg[0],
73
+ [vars.color.border]: disabled.border[1],
74
+ [vars.color.fg]: disabled.border[4],
75
+ [vars.color.muted.bg]: disabled.bg[1],
76
+ [vars.color.muted.fg]: disabled.border[4],
77
+ },
78
+ } as const
79
+
38
80
  return [
39
81
  t,
40
82
  _style(layers.primitives, {
41
- 'vars': {
42
- [vars.color.bg]: tinted.bg[0],
43
- [vars.color.border]: tinted.border[1],
44
- [vars.color.fg]: tinted.fg[2],
45
- [vars.color.muted.bg]: tinted.bg[1],
46
- [vars.color.muted.fg]: tinted.fg[3],
47
- },
83
+ 'vars': stateVars.enabled,
48
84
 
49
85
  '@media': {
50
86
  '(hover: hover)': {
51
87
  selectors: {
52
- '&:not([data-pressed]):not([data-selected]):not([data-focused]):not([data-disabled]):not(:active):not(:focus):hover':
53
- {
54
- vars: {
55
- [vars.color.bg]: tinted.bg[1],
56
- [vars.color.border]: tinted.border[2],
57
- [vars.color.fg]: tinted.fg[1],
58
- [vars.color.muted.bg]: tinted.bg[2],
59
- [vars.color.muted.fg]: tinted.fg[4],
60
- },
61
- },
88
+ [[
89
+ '&',
90
+ ':not(:active)',
91
+ ':not(:focus)',
92
+ ':not(:disabled)',
93
+ ':not([aria-pressed="true"])',
94
+ ':not([data-pressed])',
95
+ ':not([data-focused])',
96
+ ':not([data-selected])',
97
+ ':not([data-disabled])',
98
+ ':hover',
99
+ ].join('')]: {
100
+ vars: stateVars.hovered,
101
+ },
62
102
  },
63
103
  },
64
104
  },
65
105
 
66
106
  'selectors': {
67
- // selected
68
- '&:not([data-disabled]):active, &:not([data-disabled])[aria-pressed="true"], &:not([data-disabled])[data-selected]':
69
- {
70
- vars: {
71
- [vars.color.bg]: tinted.bg[2],
72
- [vars.color.border]: tinted.border[4],
73
- [vars.color.fg]: tinted.fg[0],
74
- [vars.color.muted.bg]: tinted.bg[3],
75
- [vars.color.muted.fg]: tinted.fg[4],
76
- },
77
- },
107
+ // hovered
108
+ [['&:not([data-disabled])[data-hovered]'].join(',')]: {
109
+ vars: stateVars.hovered,
110
+ },
111
+
112
+ // pressed
113
+ [[
114
+ '&:not([data-disabled]):active',
115
+ '&:not([data-disabled])[aria-pressed="true"]',
116
+ '&:not([data-disabled])[data-pressed]',
117
+ ].join(',')]: {
118
+ vars: stateVars.pressed,
119
+ },
78
120
 
79
121
  // focused
80
- '&:not([data-disabled]):focus, &:not([data-disabled])[data-focused]': {
81
- vars: {
82
- [vars.color.bg]: focused.bg[0],
83
- [vars.color.border]: focused.border[1],
84
- [vars.color.fg]: focused.fg[0],
85
- [vars.color.muted.bg]: focused.bg[1],
86
- [vars.color.muted.fg]: focused.fg[3],
87
- },
122
+ // selected
123
+ [[
124
+ '&:not([data-disabled]):focus',
125
+ '&:not([data-disabled])[data-focused]',
126
+ '&:not([data-disabled])[data-selected]',
127
+ ].join(',')]: {
128
+ vars: stateVars.focused,
88
129
  },
89
130
 
90
131
  // disabled
91
- '&[data-disabled]': {
92
- vars: {
93
- [vars.color.bg]: disabled.bg[0],
94
- [vars.color.border]: disabled.border[1],
95
- [vars.color.fg]: disabled.border[4],
96
- [vars.color.muted.bg]: disabled.bg[1],
97
- [vars.color.muted.fg]: disabled.border[4],
98
- },
132
+ [['&:disabled', '&[data-disabled]'].join(',')]: {
133
+ vars: stateVars.disabled,
99
134
  },
100
135
  },
101
136
  }),