@sanity/ui 1.8.3 → 2.0.0-alpha.10

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 (137) hide show
  1. package/dist/index.cjs.mjs +3 -0
  2. package/dist/index.d.ts +339 -415
  3. package/dist/index.esm.js +5374 -2489
  4. package/dist/index.esm.js.map +1 -1
  5. package/dist/index.js +5375 -2487
  6. package/dist/index.js.map +1 -1
  7. package/package.json +21 -3
  8. package/src/components/autocomplete/autocomplete.tsx +2 -1
  9. package/src/components/dialog/constants.ts +4 -0
  10. package/src/components/dialog/dialog.tsx +89 -27
  11. package/src/components/dialog/styles.ts +3 -4
  12. package/src/components/hotkeys/hotkeys.tsx +2 -1
  13. package/src/components/menu/__workshop__/closableMenuButton.tsx +2 -2
  14. package/src/components/menu/menuButton.tsx +2 -2
  15. package/src/components/menu/menuDivider.ts +2 -1
  16. package/src/components/menu/menuGroup.tsx +24 -25
  17. package/src/components/menu/menuItem.tsx +31 -37
  18. package/src/components/skeleton/styles.ts +8 -7
  19. package/src/components/tab/tab.tsx +2 -1
  20. package/src/components/tree/style.ts +19 -20
  21. package/src/primitives/_selectable/style.ts +25 -23
  22. package/src/primitives/avatar/avatar.tsx +8 -3
  23. package/src/primitives/avatar/avatarCounter.tsx +5 -4
  24. package/src/primitives/avatar/spotColors.ts +53 -0
  25. package/src/primitives/avatar/styles.ts +6 -8
  26. package/src/primitives/avatar/types.ts +14 -0
  27. package/src/primitives/badge/badge.tsx +5 -3
  28. package/src/primitives/badge/styles.ts +7 -8
  29. package/src/primitives/box/__workshop__/responsive.tsx +2 -2
  30. package/src/primitives/button/__workshop__/sanityUploadButton.tsx +1 -2
  31. package/src/primitives/button/button.tsx +8 -9
  32. package/src/primitives/button/styles.ts +100 -17
  33. package/src/primitives/card/__workshop__/selected.tsx +8 -9
  34. package/src/primitives/card/card.tsx +43 -7
  35. package/src/primitives/card/styles.ts +31 -24
  36. package/src/primitives/card/types.ts +3 -1
  37. package/src/primitives/checkbox/checkbox.tsx +1 -0
  38. package/src/primitives/checkbox/styles.ts +53 -23
  39. package/src/primitives/code/code.tsx +15 -3
  40. package/src/primitives/code/styles.ts +51 -42
  41. package/src/primitives/heading/styles.ts +6 -5
  42. package/src/primitives/kbd/kbd.tsx +7 -6
  43. package/src/primitives/label/styles.ts +3 -2
  44. package/src/primitives/popover/popoverArrow.tsx +3 -2
  45. package/src/primitives/popover/popoverCard.tsx +8 -4
  46. package/src/primitives/radio/radio.tsx +1 -0
  47. package/src/primitives/radio/styles.ts +26 -13
  48. package/src/primitives/select/select.tsx +3 -2
  49. package/src/primitives/select/styles.ts +22 -24
  50. package/src/primitives/switch/__workshop__/props.tsx +4 -4
  51. package/src/primitives/switch/styles.ts +19 -12
  52. package/src/primitives/text/__workshop__/colored.tsx +10 -11
  53. package/src/primitives/text/styles.ts +10 -8
  54. package/src/primitives/textArea/textArea.tsx +8 -12
  55. package/src/primitives/textInput/textInput.tsx +15 -14
  56. package/src/primitives/tooltip/__workshop__/props.tsx +20 -3
  57. package/src/primitives/tooltip/tooltip.tsx +2 -2
  58. package/src/primitives/tooltip/tooltipArrow.tsx +3 -2
  59. package/src/primitives/types.ts +3 -2
  60. package/src/styles/border/borderStyle.ts +2 -1
  61. package/src/styles/colorVars/colorVarsStyle.ts +73 -30
  62. package/src/styles/focusRing/index.ts +8 -4
  63. package/src/styles/input/textInputStyle.ts +78 -94
  64. package/src/styles/margin/marginsStyle.test.ts +1 -2
  65. package/src/styles/padding/paddingStyle.test.ts +1 -2
  66. package/src/styles/radius/radiusStyle.ts +14 -4
  67. package/src/styles/radius/types.ts +3 -1
  68. package/src/styles/shadow/shadowStyle.ts +5 -5
  69. package/src/theme/__workshop__/color.tsx +2 -2
  70. package/src/theme/__workshop__/index.ts +0 -5
  71. package/src/theme/lib/color-fns/blend/multiply.ts +2 -2
  72. package/src/theme/lib/color-fns/blend/screen.ts +2 -2
  73. package/src/theme/lib/color-fns/convert.ts +15 -1
  74. package/src/theme/lib/color-fns/parse.ts +7 -3
  75. package/src/theme/lib/color-fns/types.ts +11 -0
  76. package/src/theme/lib/theme/avatar.ts +3 -0
  77. package/src/theme/lib/theme/color/_legacy/createColorTheme.ts +7 -0
  78. package/src/theme/lib/theme/color/_legacy/index.ts +1 -0
  79. package/src/theme/lib/theme/color/_legacy/legacyColor.ts +3997 -0
  80. package/src/theme/lib/theme/color/cssVariables/cardVariables.ts +88 -0
  81. package/src/theme/lib/theme/color/cssVariables/createCssVars.ts +31 -0
  82. package/src/theme/lib/theme/color/cssVariables/cssVars.test.ts +262 -0
  83. package/src/theme/lib/theme/color/cssVariables/index.ts +1 -0
  84. package/src/theme/lib/theme/color/cssVariables/tints.ts +312 -0
  85. package/src/theme/lib/theme/color/cssVariables/tones.ts +67 -0
  86. package/src/theme/lib/theme/color/cssVariables/utils.test.ts +15 -0
  87. package/src/theme/lib/theme/color/cssVariables/utils.ts +9 -0
  88. package/src/theme/lib/theme/color/index.ts +3 -12
  89. package/src/theme/lib/theme/color/types.ts +6 -37
  90. package/src/theme/lib/theme/input.ts +11 -0
  91. package/src/theme/lib/theme/theme.ts +7 -1
  92. package/src/theme/studioTheme/color.ts +6 -633
  93. package/src/theme/studioTheme/fonts.ts +3 -3
  94. package/src/theme/studioTheme/helpers.ts +15 -1
  95. package/src/theme/studioTheme/theme.ts +26 -6
  96. package/src/theme/themeColorProvider.tsx +2 -0
  97. package/src/theme/themeProvider.tsx +28 -8
  98. package/src/theme/toneContext/toneContext.ts +12 -0
  99. package/src/theme/toneContext/toneProvider.tsx +31 -0
  100. package/src/theme/toneContext/types.ts +10 -0
  101. package/src/theme/toneContext/useToneContext.tsx +26 -0
  102. package/src/theme/types.ts +10 -4
  103. package/src/types/index.ts +1 -0
  104. package/src/types/radius.ts +4 -0
  105. package/src/utils/elementQuery/__workshop__/customMedia.tsx +4 -3
  106. package/src/theme/__workshop__/canvas.tsx +0 -395
  107. package/src/theme/lib/theme/color/_generic/index.ts +0 -1
  108. package/src/theme/lib/theme/color/_generic/types.ts +0 -29
  109. package/src/theme/lib/theme/color/base/index.ts +0 -1
  110. package/src/theme/lib/theme/color/base/types.ts +0 -19
  111. package/src/theme/lib/theme/color/button/createButtonModes.ts +0 -20
  112. package/src/theme/lib/theme/color/button/createButtonTones.ts +0 -52
  113. package/src/theme/lib/theme/color/button/index.ts +0 -1
  114. package/src/theme/lib/theme/color/button/types.ts +0 -44
  115. package/src/theme/lib/theme/color/card/createCardStates.ts +0 -58
  116. package/src/theme/lib/theme/color/card/index.ts +0 -1
  117. package/src/theme/lib/theme/color/card/types.ts +0 -18
  118. package/src/theme/lib/theme/color/color.test.ts +0 -62
  119. package/src/theme/lib/theme/color/defaults.ts +0 -382
  120. package/src/theme/lib/theme/color/factory.ts +0 -138
  121. package/src/theme/lib/theme/color/input/createInputModes.ts +0 -84
  122. package/src/theme/lib/theme/color/input/index.ts +0 -1
  123. package/src/theme/lib/theme/color/input/types.ts +0 -27
  124. package/src/theme/lib/theme/color/muted/createMuted.ts +0 -56
  125. package/src/theme/lib/theme/color/muted/index.ts +0 -1
  126. package/src/theme/lib/theme/color/muted/types.ts +0 -24
  127. package/src/theme/lib/theme/color/selectable/createSelectableTones.ts +0 -73
  128. package/src/theme/lib/theme/color/selectable/index.ts +0 -1
  129. package/src/theme/lib/theme/color/selectable/types.ts +0 -29
  130. package/src/theme/lib/theme/color/solid/createSolidTones.ts +0 -56
  131. package/src/theme/lib/theme/color/solid/index.ts +0 -1
  132. package/src/theme/lib/theme/color/solid/types.ts +0 -24
  133. package/src/theme/lib/theme/color/spot/createSpot.ts +0 -21
  134. package/src/theme/lib/theme/color/spot/index.ts +0 -1
  135. package/src/theme/lib/theme/color/spot/types.ts +0 -28
  136. package/src/theme/lib/theme/color/syntax/index.ts +0 -1
  137. package/src/theme/lib/theme/color/syntax/types.ts +0 -41
@@ -1,62 +0,0 @@
1
- /** @jest-environment jsdom */
2
-
3
- import {createColorTheme} from './factory'
4
-
5
- describe('color', () => {
6
- describe('createColorTheme', () => {
7
- it('should generate base (scheme=light, name=default)', () => {
8
- const theme = createColorTheme()
9
- const scheme = 'light'
10
- const name = 'default'
11
- const color = theme[scheme][name]
12
-
13
- expect(color.base).toEqual({
14
- bg: 'hsl(0, 0%, 100%)',
15
- border: 'hsl(0, 0%, 95%)',
16
- fg: 'hsl(0, 0%, 0%)',
17
- focusRing: 'hsl(240, 100%, 50%)',
18
- shadow: {
19
- ambient: 'hsl(0, 0%, 0%)',
20
- outline: 'hsl(0, 0%, 0%)',
21
- penumbra: 'hsl(0, 0%, 0%)',
22
- umbra: 'hsl(0, 0%, 0%)',
23
- },
24
- skeleton: {
25
- from: 'hsl(0, 0%, 0%)',
26
- to: 'hsl(0, 0%, 0%)',
27
- },
28
- })
29
- })
30
-
31
- it('should generate muted states (scheme=light, name=default)', () => {
32
- const theme = createColorTheme()
33
- const scheme = 'light'
34
- const name = 'default'
35
- const color = theme[scheme][name]
36
-
37
- expect(color.muted.default.enabled).toEqual({
38
- bg: 'hsl(0, 0%, 95%)',
39
- bg2: 'hsl(0, 0%, 95%)',
40
- border: 'hsl(0, 0%, 70%)',
41
- fg: 'hsl(0, 0%, 20%)',
42
- muted: {
43
- fg: 'hsl(0, 0%, 0%)',
44
- },
45
- link: {
46
- fg: 'hsl(0, 0%, 0%)',
47
- },
48
- accent: {
49
- fg: 'hsl(0, 0%, 0%)',
50
- },
51
- code: {
52
- bg: 'hsl(0, 0%, 0%)',
53
- fg: 'hsl(0, 0%, 0%)',
54
- },
55
- skeleton: {
56
- from: 'hsl(0, 0%, 0%)',
57
- to: 'hsl(0, 0%, 0%)',
58
- },
59
- })
60
- })
61
- })
62
- })
@@ -1,382 +0,0 @@
1
- import {ThemeColorBuilderOpts} from './factory'
2
-
3
- const black = 'hsl(0, 0%, 0%)'
4
- const white = 'hsl(0, 0%, 100%)'
5
-
6
- const colors = {
7
- default: {
8
- lightest: 'hsl(0, 0%, 95%)',
9
- lighter: 'hsl(0, 0%, 70%)',
10
- light: 'hsl(0, 0%, 65%)',
11
- base: 'hsl(0, 0%, 50%)',
12
- dark: 'hsl(0, 0%, 35%)',
13
- darker: 'hsl(0, 0%, 20%)',
14
- darkest: 'hsl(0, 0%, 5%)',
15
- },
16
- transparent: {
17
- lightest: 'hsl(240, 100%, 95%)',
18
- lighter: 'hsl(240, 100%, 70%)',
19
- light: 'hsl(240, 100%, 65%)',
20
- base: 'hsl(240, 100%, 50%)',
21
- dark: 'hsl(240, 100%, 35%)',
22
- darker: 'hsl(240, 100%, 20%)',
23
- darkest: 'hsl(240, 100%, 5%)',
24
- },
25
- primary: {
26
- lightest: 'hsl(240, 100%, 95%)',
27
- lighter: 'hsl(240, 100%, 70%)',
28
- light: 'hsl(240, 100%, 65%)',
29
- base: 'hsl(240, 100%, 50%)',
30
- dark: 'hsl(240, 100%, 35%)',
31
- darker: 'hsl(240, 100%, 20%)',
32
- darkest: 'hsl(240, 100%, 5%)',
33
- },
34
- positive: {
35
- lightest: 'hsl(120, 100%, 95%)',
36
- lighter: 'hsl(120, 100%, 70%)',
37
- light: 'hsl(120, 100%, 65%)',
38
- base: 'hsl(120, 100%, 50%)',
39
- dark: 'hsl(120, 100%, 35%)',
40
- darker: 'hsl(120, 100%, 20%)',
41
- darkest: 'hsl(120, 100%, 5%)',
42
- },
43
- caution: {
44
- lightest: 'hsl(60, 100%, 95%)',
45
- lighter: 'hsl(60, 100%, 70%)',
46
- light: 'hsl(60, 100%, 65%)',
47
- base: 'hsl(60, 100%, 50%)',
48
- dark: 'hsl(60, 100%, 35%)',
49
- darker: 'hsl(60, 100%, 20%)',
50
- darkest: 'hsl(60, 100%, 5%)',
51
- },
52
- critical: {
53
- lightest: 'hsl(0, 100%, 95%)',
54
- lighter: 'hsl(0, 100%, 70%)',
55
- light: 'hsl(0, 100%, 65%)',
56
- base: 'hsl(0, 100%, 50%)',
57
- dark: 'hsl(0, 100%, 35%)',
58
- darker: 'hsl(0, 100%, 20%)',
59
- darkest: 'hsl(0, 100%, 5%)',
60
- },
61
- }
62
-
63
- const spots = {
64
- gray: 'hsl(0, 0%, 50%)',
65
- red: 'hsl(0, 100%, 50%)',
66
- orange: 'hsl(30, 100%, 50%)',
67
- yellow: 'hsl(60, 100%, 50%)',
68
- green: 'hsl(120, 100%, 50%)',
69
- cyan: 'hsl(180, 100%, 50%)',
70
- blue: 'hsl(240, 100%, 50%)',
71
- purple: 'hsl(270, 100%, 50%)',
72
- magenta: 'hsl(300, 100%, 50%)',
73
- }
74
-
75
- const tones = {
76
- transparent: {
77
- bg: [colors.transparent.darkest, colors.transparent.lightest],
78
- fg: [colors.transparent.lightest, colors.transparent.darkest],
79
- border: [colors.transparent.darker, colors.transparent.lighter],
80
- focusRing: [colors.transparent.base, colors.transparent.base],
81
- },
82
- primary: {
83
- bg: [colors.primary.darkest, colors.primary.lightest],
84
- fg: [colors.primary.lightest, colors.primary.darkest],
85
- border: [colors.primary.darker, colors.primary.lighter],
86
- focusRing: [colors.primary.base, colors.primary.base],
87
- },
88
- positive: {
89
- bg: [colors.positive.darkest, colors.positive.lightest],
90
- fg: [colors.positive.lightest, colors.positive.darkest],
91
- border: [colors.positive.darker, colors.positive.lighter],
92
- focusRing: [colors.positive.base, colors.positive.base],
93
- },
94
- caution: {
95
- bg: [colors.caution.darkest, colors.caution.lightest],
96
- fg: [colors.caution.lightest, colors.caution.darkest],
97
- border: [colors.caution.darker, colors.caution.lighter],
98
- focusRing: [colors.caution.base, colors.caution.base],
99
- },
100
- critical: {
101
- bg: [colors.critical.darkest, colors.critical.lightest],
102
- fg: [colors.critical.lightest, colors.critical.darkest],
103
- border: [colors.critical.darker, colors.critical.lighter],
104
- focusRing: [colors.critical.base, colors.critical.base],
105
- },
106
- }
107
-
108
- export const defaultOpts: ThemeColorBuilderOpts = {
109
- base: ({dark, name}) => {
110
- if (name === 'default') {
111
- return {
112
- bg: dark ? black : white,
113
- fg: dark ? white : black,
114
- border: dark ? colors.default.darkest : colors.default.lightest,
115
- focusRing: colors.primary.base,
116
- shadow: {
117
- outline: black,
118
- umbra: black,
119
- penumbra: black,
120
- ambient: black,
121
- },
122
- skeleton: {
123
- from: dark ? white : black,
124
- to: dark ? white : black,
125
- },
126
- }
127
- }
128
-
129
- // Variants:
130
- // - primary
131
- // - positive
132
- // - caution
133
- // - critical
134
- return {
135
- bg: tones[name].bg[dark ? 0 : 1],
136
- fg: tones[name].fg[dark ? 0 : 1],
137
- border: tones[name].border[dark ? 0 : 1],
138
- focusRing: tones[name].focusRing[dark ? 0 : 1],
139
- shadow: {
140
- outline: black,
141
- umbra: black,
142
- penumbra: black,
143
- ambient: black,
144
- },
145
- skeleton: {
146
- from: dark ? white : black,
147
- to: dark ? white : black,
148
- },
149
- }
150
- },
151
-
152
- solid: ({base, dark, state, tone}) => {
153
- const color = colors[tone]
154
-
155
- if (state === 'hovered') {
156
- return {
157
- bg: dark ? color.light : color.dark,
158
- bg2: dark ? color.light : color.dark,
159
- border: dark ? color.lighter : color.darker,
160
- fg: dark ? color.darkest : color.lightest,
161
- muted: {
162
- fg: black,
163
- },
164
- accent: {
165
- fg: black,
166
- },
167
- link: {
168
- fg: black,
169
- },
170
- code: {
171
- bg: black,
172
- fg: black,
173
- },
174
- skeleton: base.skeleton,
175
- }
176
- }
177
-
178
- return {
179
- bg: color.base,
180
- bg2: color.base,
181
- border: dark ? color.light : color.dark,
182
- fg: dark ? color.darkest : color.lightest,
183
- muted: {
184
- fg: black,
185
- },
186
- accent: {
187
- fg: black,
188
- },
189
- link: {
190
- fg: black,
191
- },
192
- code: {
193
- bg: black,
194
- fg: black,
195
- },
196
- skeleton: base.skeleton,
197
- }
198
- },
199
-
200
- muted: ({base, dark, state, tone}) => {
201
- const color = colors[tone]
202
-
203
- if (state === 'hovered') {
204
- return {
205
- bg: dark ? color.darker : color.lighter,
206
- bg2: dark ? color.darker : color.lighter,
207
- border: dark ? color.lighter : color.darker,
208
- fg: dark ? color.lightest : color.darkest,
209
- muted: {
210
- fg: black,
211
- },
212
- accent: {
213
- fg: black,
214
- },
215
- link: {
216
- fg: black,
217
- },
218
- code: {
219
- bg: black,
220
- fg: black,
221
- },
222
- skeleton: base.skeleton,
223
- }
224
- }
225
-
226
- return {
227
- bg: dark ? color.darkest : color.lightest,
228
- bg2: dark ? color.darkest : color.lightest,
229
- border: dark ? color.darker : color.lighter,
230
- fg: dark ? color.lighter : color.darker,
231
- muted: {
232
- fg: black,
233
- },
234
- accent: {
235
- fg: black,
236
- },
237
- link: {
238
- fg: black,
239
- },
240
- code: {
241
- bg: black,
242
- fg: black,
243
- },
244
- skeleton: base.skeleton,
245
- }
246
- },
247
-
248
- button: ({base, mode, muted, solid}) => {
249
- if (mode === 'bleed') {
250
- return {
251
- ...muted,
252
- enabled: {
253
- bg: 'transparent',
254
- bg2: 'transparent',
255
- fg: muted.enabled.fg,
256
- border: 'transparent',
257
- muted: {
258
- fg: black,
259
- },
260
- accent: {
261
- fg: black,
262
- },
263
- link: {
264
- fg: black,
265
- },
266
- code: {
267
- bg: black,
268
- fg: black,
269
- },
270
- skeleton: base.skeleton,
271
- },
272
- hovered: {
273
- bg: muted.enabled.bg,
274
- bg2: muted.enabled.bg,
275
- fg: muted.hovered.fg,
276
- border: 'transparent',
277
- muted: {
278
- fg: black,
279
- },
280
- accent: {
281
- fg: black,
282
- },
283
- link: {
284
- fg: black,
285
- },
286
- code: {
287
- bg: black,
288
- fg: black,
289
- },
290
- skeleton: base.skeleton,
291
- },
292
- }
293
- }
294
-
295
- if (mode === 'ghost')
296
- return {
297
- ...solid,
298
- enabled: muted.enabled,
299
- }
300
-
301
- return solid
302
- },
303
-
304
- card: ({base}) => {
305
- return {
306
- bg: black,
307
- bg2: black,
308
- fg: black,
309
- border: black,
310
- muted: {
311
- fg: black,
312
- },
313
- accent: {
314
- fg: black,
315
- },
316
- link: {
317
- fg: black,
318
- },
319
- code: {
320
- bg: black,
321
- fg: black,
322
- },
323
- skeleton: base.skeleton,
324
- }
325
- },
326
-
327
- input: () => {
328
- return {
329
- bg: black,
330
- fg: black,
331
- border: black,
332
- placeholder: black,
333
- }
334
- },
335
-
336
- selectable: ({muted, state, tone}) => {
337
- return muted[tone][state]
338
- },
339
-
340
- spot: ({key}) => {
341
- return spots[key]
342
- },
343
-
344
- syntax: () => ({
345
- atrule: black,
346
- attrName: black,
347
- attrValue: black,
348
- attribute: black,
349
- boolean: black,
350
- builtin: black,
351
- cdata: black,
352
- char: black,
353
- class: black,
354
- className: black,
355
- comment: black,
356
- constant: black,
357
- deleted: black,
358
- doctype: black,
359
- entity: black,
360
- function: black,
361
- hexcode: black,
362
- id: black,
363
- important: black,
364
- inserted: black,
365
- keyword: black,
366
- number: black,
367
- operator: black,
368
- prolog: black,
369
- property: black,
370
- pseudoClass: black,
371
- pseudoElement: black,
372
- punctuation: black,
373
- regex: black,
374
- selector: black,
375
- string: black,
376
- symbol: black,
377
- tag: black,
378
- unit: black,
379
- url: black,
380
- variable: black,
381
- }),
382
- }
@@ -1,138 +0,0 @@
1
- import {ThemeColorGenericState} from './_generic'
2
- import {ThemeColorBase} from './base'
3
- import {ThemeColorButtonModeKey, ThemeColorButtonStates} from './button'
4
- import {createButtonModes} from './button/createButtonModes'
5
- import {ThemeColorCardState} from './card'
6
- import {createCardStates} from './card/createCardStates'
7
- import {defaultOpts} from './defaults'
8
- import {ThemeColorInputState} from './input'
9
- import {createInputModes} from './input/createInputModes'
10
- import {ThemeColorMuted, ThemeColorMutedTone} from './muted'
11
- import {createMutedTones} from './muted/createMuted'
12
- import {ThemeColorSelectableState} from './selectable'
13
- import {createSelectableTones} from './selectable/createSelectableTones'
14
- import {ThemeColorSolid, ThemeColorSolidTone} from './solid'
15
- import {createSolidTones} from './solid/createSolidTones'
16
- import {ThemeColorSpotKey} from './spot'
17
- import {createSpot} from './spot/createSpot'
18
- import {ThemeColorSyntax} from './syntax'
19
- import {
20
- ThemeColorName,
21
- ThemeColorScheme,
22
- ThemeColorSchemes,
23
- ThemeColor,
24
- ThemeColorToneKey,
25
- } from './types'
26
-
27
- /**
28
- * @public
29
- */
30
- export interface ThemeColorBuilderOpts {
31
- base: (opts: {dark: boolean; name: ThemeColorName}) => ThemeColorBase
32
- solid: (opts: {
33
- base: ThemeColorBase
34
- dark: boolean
35
- tone: ThemeColorToneKey
36
- name: ThemeColorName
37
- state: 'enabled' | 'disabled' | 'hovered' | 'pressed' | 'selected'
38
- }) => ThemeColorGenericState
39
- muted: (opts: {
40
- base: ThemeColorBase
41
- dark: boolean
42
- tone: ThemeColorToneKey
43
- name: ThemeColorName
44
- state: 'enabled' | 'disabled' | 'hovered' | 'pressed' | 'selected'
45
- }) => ThemeColorGenericState
46
- card: (opts: {
47
- base: ThemeColorBase
48
- dark: boolean
49
- muted: ThemeColorMuted
50
- name: ThemeColorName
51
- solid: ThemeColorSolid
52
- state: 'enabled' | 'disabled' | 'hovered' | 'pressed' | 'selected'
53
- }) => ThemeColorCardState
54
- button: (opts: {
55
- dark: boolean
56
- mode: ThemeColorButtonModeKey
57
- base: ThemeColorBase
58
- solid: ThemeColorSolidTone
59
- muted: ThemeColorMutedTone
60
- }) => ThemeColorButtonStates
61
- input: (opts: {
62
- base: ThemeColorBase
63
- solid: ThemeColorSolidTone
64
- muted: ThemeColorMutedTone
65
- dark: boolean
66
- mode: 'default' | 'invalid'
67
- state: 'enabled' | 'disabled' | 'hovered' | 'readOnly'
68
- }) => ThemeColorInputState
69
- selectable: (opts: {
70
- dark: boolean
71
- base: ThemeColorBase
72
- solid: ThemeColorSolid
73
- muted: ThemeColorMuted
74
- state: 'enabled' | 'disabled' | 'hovered' | 'pressed' | 'selected'
75
- tone: 'default' | 'primary' | 'positive' | 'caution' | 'critical'
76
- }) => ThemeColorSelectableState
77
- syntax: (opts: {base: ThemeColorBase; dark: boolean}) => ThemeColorSyntax
78
- spot: (opts: {base: ThemeColorBase; dark: boolean; key: ThemeColorSpotKey}) => string
79
- }
80
-
81
- /**
82
- * @public
83
- */
84
- export type PartialThemeColorBuilderOpts = Partial<ThemeColorBuilderOpts>
85
-
86
- /**
87
- * @public
88
- */
89
- export function createColorTheme(
90
- partialOpts: PartialThemeColorBuilderOpts = {},
91
- ): ThemeColorSchemes {
92
- const builders: ThemeColorBuilderOpts = {...defaultOpts, ...partialOpts}
93
-
94
- return {
95
- light: _createColorScheme(builders, false),
96
- dark: _createColorScheme(builders, true),
97
- }
98
- }
99
-
100
- /**
101
- * @internal
102
- */
103
- function _createColorScheme(opts: ThemeColorBuilderOpts, dark: boolean): ThemeColorScheme {
104
- return {
105
- default: _createColor(opts, dark, 'default'),
106
- transparent: _createColor(opts, dark, 'transparent'),
107
- primary: _createColor(opts, dark, 'primary'),
108
- positive: _createColor(opts, dark, 'positive'),
109
- caution: _createColor(opts, dark, 'caution'),
110
- critical: _createColor(opts, dark, 'critical'),
111
- }
112
- }
113
-
114
- /**
115
- * @internal
116
- */
117
- function _createColor(
118
- opts: ThemeColorBuilderOpts,
119
- dark: boolean,
120
- name: ThemeColorName,
121
- ): ThemeColor {
122
- const base = opts.base({dark, name})
123
- const solid = createSolidTones(opts, base, dark, name)
124
- const muted = createMutedTones(opts, base, dark, name)
125
-
126
- return {
127
- base,
128
- button: createButtonModes(opts, base, dark, solid, muted),
129
- card: createCardStates(opts, base, dark, name, solid, muted),
130
- dark,
131
- input: createInputModes(opts, base, dark, solid, muted),
132
- selectable: createSelectableTones(opts, base, dark, solid, muted),
133
- spot: createSpot(opts, base, dark),
134
- syntax: opts.syntax({base, dark}),
135
- solid,
136
- muted,
137
- }
138
- }
@@ -1,84 +0,0 @@
1
- import {ThemeColorBase} from '../base'
2
- import {ThemeColorBuilderOpts} from '../factory'
3
- import {ThemeColorMuted} from '../muted'
4
- import {ThemeColorSolid} from '../solid'
5
- import {ThemeColorInput} from './types'
6
-
7
- export function createInputModes(
8
- opts: ThemeColorBuilderOpts,
9
- base: ThemeColorBase,
10
- dark: boolean,
11
- solid: ThemeColorSolid,
12
- muted: ThemeColorMuted,
13
- ): ThemeColorInput {
14
- return {
15
- default: {
16
- enabled: opts.input({
17
- base,
18
- dark,
19
- mode: 'default',
20
- state: 'enabled',
21
- solid: solid.default,
22
- muted: muted.default,
23
- }),
24
- disabled: opts.input({
25
- base,
26
- dark,
27
- mode: 'default',
28
- state: 'disabled',
29
- solid: solid.default,
30
- muted: muted.default,
31
- }),
32
- hovered: opts.input({
33
- base,
34
- dark,
35
- mode: 'default',
36
- state: 'hovered',
37
- solid: solid.default,
38
- muted: muted.default,
39
- }),
40
- readOnly: opts.input({
41
- base,
42
- dark,
43
- mode: 'default',
44
- state: 'readOnly',
45
- solid: solid.default,
46
- muted: muted.default,
47
- }),
48
- },
49
- invalid: {
50
- enabled: opts.input({
51
- base,
52
- dark,
53
- mode: 'invalid',
54
- state: 'enabled',
55
- solid: solid.default,
56
- muted: muted.default,
57
- }),
58
- disabled: opts.input({
59
- base,
60
- dark,
61
- mode: 'invalid',
62
- state: 'disabled',
63
- solid: solid.default,
64
- muted: muted.default,
65
- }),
66
- hovered: opts.input({
67
- base,
68
- dark,
69
- mode: 'invalid',
70
- state: 'hovered',
71
- solid: solid.default,
72
- muted: muted.default,
73
- }),
74
- readOnly: opts.input({
75
- base,
76
- dark,
77
- mode: 'invalid',
78
- state: 'readOnly',
79
- solid: solid.default,
80
- muted: muted.default,
81
- }),
82
- },
83
- }
84
- }
@@ -1 +0,0 @@
1
- export * from './types'
@@ -1,27 +0,0 @@
1
- /**
2
- * @public
3
- */
4
- export interface ThemeColorInputState {
5
- bg: string
6
- fg: string
7
- border: string
8
- placeholder: string
9
- }
10
-
11
- /**
12
- * @public
13
- */
14
- export interface ThemeColorInputStates {
15
- enabled: ThemeColorInputState
16
- disabled: ThemeColorInputState
17
- hovered: ThemeColorInputState
18
- readOnly: ThemeColorInputState
19
- }
20
-
21
- /**
22
- * @public
23
- */
24
- export interface ThemeColorInput {
25
- default: ThemeColorInputStates
26
- invalid: ThemeColorInputStates
27
- }