@reactberry/system 2.0.0-beta

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 (165) hide show
  1. package/README.md +48 -0
  2. package/package.json +74 -0
  3. package/src/blocks/Accordion/index.tsx +158 -0
  4. package/src/blocks/AnimatedCarousel/index.tsx +188 -0
  5. package/src/blocks/AppleGlow/index.tsx +144 -0
  6. package/src/blocks/Avatar/index.tsx +167 -0
  7. package/src/blocks/Await/index.tsx +45 -0
  8. package/src/blocks/Cards/AnimatedCard/index.tsx +175 -0
  9. package/src/blocks/Cards/FluorescentCard/index.tsx +180 -0
  10. package/src/blocks/Cards/InfoCard/index.tsx +206 -0
  11. package/src/blocks/Cards/TickerCard/index.tsx +125 -0
  12. package/src/blocks/Carousel/index.tsx +216 -0
  13. package/src/blocks/Checkbox/index.tsx +101 -0
  14. package/src/blocks/Collection/index.tsx +59 -0
  15. package/src/blocks/Container/index.tsx +55 -0
  16. package/src/blocks/Controls/Control.tsx +67 -0
  17. package/src/blocks/Controls/index.tsx +11 -0
  18. package/src/blocks/CyclingNumber/index.tsx +78 -0
  19. package/src/blocks/DisplaySet/index.tsx +42 -0
  20. package/src/blocks/Divider/index.tsx +14 -0
  21. package/src/blocks/Draggable/index.tsx +266 -0
  22. package/src/blocks/Drawer/index.tsx +136 -0
  23. package/src/blocks/DynamicIsland/DynamicIsland.tsx +89 -0
  24. package/src/blocks/DynamicIsland/index.tsx +2 -0
  25. package/src/blocks/Fader/index.tsx +145 -0
  26. package/src/blocks/FamilyDrawer/README.md +116 -0
  27. package/src/blocks/FamilyDrawer/example.tsx +108 -0
  28. package/src/blocks/FamilyDrawer/index.tsx +119 -0
  29. package/src/blocks/FamilyDrawer/views/DefaultView.tsx +93 -0
  30. package/src/blocks/FamilyDrawer/views/KeyView.tsx +129 -0
  31. package/src/blocks/FamilyDrawer/views/PhraseView.tsx +129 -0
  32. package/src/blocks/FamilyDrawer/views/RemoveView.tsx +81 -0
  33. package/src/blocks/FieldSet/index.tsx +173 -0
  34. package/src/blocks/Filesystem/index.tsx +198 -0
  35. package/src/blocks/Gallery/Carousel/index.tsx +257 -0
  36. package/src/blocks/Gallery/Modal/index.tsx +83 -0
  37. package/src/blocks/Gallery/index.tsx +57 -0
  38. package/src/blocks/Gallery/utils/animationVariants.ts +18 -0
  39. package/src/blocks/Gallery/utils/aspectRatio.ts +14 -0
  40. package/src/blocks/Gallery/utils/downloadPhoto.ts +24 -0
  41. package/src/blocks/Gallery/utils/range.ts +11 -0
  42. package/src/blocks/GradientMesh/index.tsx +106 -0
  43. package/src/blocks/Group/index.tsx +152 -0
  44. package/src/blocks/Heading/index.tsx +111 -0
  45. package/src/blocks/HorizontalScroller/index.tsx +135 -0
  46. package/src/blocks/Icon/index.tsx +45 -0
  47. package/src/blocks/Indicator/index.tsx +27 -0
  48. package/src/blocks/InlineEditor/index.tsx +216 -0
  49. package/src/blocks/List/index.tsx +657 -0
  50. package/src/blocks/Main/index.tsx +17 -0
  51. package/src/blocks/Marquee/index.tsx +116 -0
  52. package/src/blocks/MaskedField/index.tsx +199 -0
  53. package/src/blocks/Menu/MenuContent.tsx +246 -0
  54. package/src/blocks/Menu/MenuContext.tsx +34 -0
  55. package/src/blocks/Menu/MenuItem.tsx +104 -0
  56. package/src/blocks/Menu/index.tsx +60 -0
  57. package/src/blocks/Modal/index.tsx +268 -0
  58. package/src/blocks/MorphingPopover/index.tsx +294 -0
  59. package/src/blocks/Overlay/Backdrop.tsx +48 -0
  60. package/src/blocks/Overlay/OverscrollGuard.tsx +36 -0
  61. package/src/blocks/Overlay/index.ts +2 -0
  62. package/src/blocks/Parallax/index.tsx +117 -0
  63. package/src/blocks/ParallaxSection/index.tsx +61 -0
  64. package/src/blocks/Placeholder/index.tsx +48 -0
  65. package/src/blocks/Popover/index.tsx +402 -0
  66. package/src/blocks/Progress/getProgressColor.ts +61 -0
  67. package/src/blocks/Progress/index.tsx +179 -0
  68. package/src/blocks/ProgressiveBlur/index.tsx +75 -0
  69. package/src/blocks/README.md +15 -0
  70. package/src/blocks/RenderAsset/index.tsx +18 -0
  71. package/src/blocks/ScrollContainer/index.tsx +93 -0
  72. package/src/blocks/ShinyText/index.tsx +72 -0
  73. package/src/blocks/Skeleton/index.tsx +71 -0
  74. package/src/blocks/Slider/SliderControls.tsx +119 -0
  75. package/src/blocks/Slider/index.tsx +140 -0
  76. package/src/blocks/Slider/useSlider.ts +126 -0
  77. package/src/blocks/Slideshow/index.tsx +177 -0
  78. package/src/blocks/Spotlight/index.tsx +144 -0
  79. package/src/blocks/Steps/StepIndicator.tsx +149 -0
  80. package/src/blocks/Steps/StepProgress.tsx +164 -0
  81. package/src/blocks/Steps/Steps.tsx +197 -0
  82. package/src/blocks/Steps/StepsNav.tsx +30 -0
  83. package/src/blocks/Steps/StepsTracker.tsx +80 -0
  84. package/src/blocks/Steps/hooks.ts +71 -0
  85. package/src/blocks/Steps/index.tsx +16 -0
  86. package/src/blocks/Steps/types.ts +71 -0
  87. package/src/blocks/StickySectionStack/index.tsx +136 -0
  88. package/src/blocks/Switch/index.tsx +85 -0
  89. package/src/blocks/SystemNotice/index.tsx +81 -0
  90. package/src/blocks/Table/README.md +251 -0
  91. package/src/blocks/Table/Table.tsx +207 -0
  92. package/src/blocks/Table/TablePagination.tsx +189 -0
  93. package/src/blocks/Table/index.ts +33 -0
  94. package/src/blocks/Table/useTableControls.ts +331 -0
  95. package/src/blocks/Tag/index.tsx +27 -0
  96. package/src/blocks/TextBreak/index.tsx +96 -0
  97. package/src/blocks/TextReveal/index.tsx +104 -0
  98. package/src/blocks/Thumbnail/index.tsx +26 -0
  99. package/src/blocks/Ticker/index.tsx +112 -0
  100. package/src/blocks/Toast/index.tsx +77 -0
  101. package/src/blocks/Tooltip/index.tsx +174 -0
  102. package/src/blocks/Underlay/index.tsx +104 -0
  103. package/src/blocks/Upload/Dropzone.tsx +92 -0
  104. package/src/blocks/Upload/UploadBtn.tsx +38 -0
  105. package/src/blocks/Upload/index.tsx +61 -0
  106. package/src/blocks/Upload/types.ts +37 -0
  107. package/src/blocks/VideoMarquee/index.tsx +511 -0
  108. package/src/blocks/index.ts +119 -0
  109. package/src/blocks/pagination/Pagination.tsx +148 -0
  110. package/src/blocks/pagination/PaginationList.tsx +41 -0
  111. package/src/blocks/pagination/index.ts +2 -0
  112. package/src/charts/BarChart.tsx +63 -0
  113. package/src/charts/PieChart.tsx +39 -0
  114. package/src/charts/index.ts +3 -0
  115. package/src/charts/utils.ts +103 -0
  116. package/src/docs/README.md +373 -0
  117. package/src/docs/reference/README.md +299 -0
  118. package/src/elements/box.ts +163 -0
  119. package/src/elements/button.ts +49 -0
  120. package/src/elements/field.ts +129 -0
  121. package/src/elements/index.ts +8 -0
  122. package/src/elements/text.ts +47 -0
  123. package/src/elements/utils.js +97 -0
  124. package/src/hooks/use-copy-to-clipboard.tsx +33 -0
  125. package/src/hooks/use-enter-submit.tsx +23 -0
  126. package/src/hooks/use-local-storage.ts +42 -0
  127. package/src/hooks/use-sidebar.tsx +109 -0
  128. package/src/hooks/useAnimatedText.ts +32 -0
  129. package/src/hooks/useAutosizeTextArea.ts +45 -0
  130. package/src/hooks/useBreakpoint.tsx +123 -0
  131. package/src/hooks/useClickOutside.tsx +38 -0
  132. package/src/hooks/useHover.tsx +33 -0
  133. package/src/hooks/useHoverList.tsx +17 -0
  134. package/src/hooks/useKeyboardShortcuts.ts +91 -0
  135. package/src/hooks/useKeypress.ts +27 -0
  136. package/src/hooks/useOverlay.ts +32 -0
  137. package/src/hooks/useReducedMotion.ts +25 -0
  138. package/src/hooks/useStandaloneMode.ts +35 -0
  139. package/src/hooks/useTouchDevice.ts +34 -0
  140. package/src/icons/index.tsx +129 -0
  141. package/src/index.ts +12 -0
  142. package/src/providers/DesignSystemProvider.tsx +35 -0
  143. package/src/providers/StyledComponentsRegistry.tsx +30 -0
  144. package/src/providers/index.ts +2 -0
  145. package/src/themes/README.md +30 -0
  146. package/src/themes/default/assets/badge-avatar.tsx +45 -0
  147. package/src/themes/default/assets/logo.tsx +42 -0
  148. package/src/themes/default/global.ts +138 -0
  149. package/src/themes/default/modes/dark/config.js +49 -0
  150. package/src/themes/default/modes/dark/skins.js +631 -0
  151. package/src/themes/default/modes/dark/theme.js +87 -0
  152. package/src/themes/default/modes/light/config.js +48 -0
  153. package/src/themes/default/modes/light/skins.js +1026 -0
  154. package/src/themes/default/modes/light/theme.js +74 -0
  155. package/src/themes/default/tokens/controls.js +53 -0
  156. package/src/themes/default/tokens/shadows.js +63 -0
  157. package/src/themes/default/tokens/shapes.js +37 -0
  158. package/src/themes/default/tokens/space.js +143 -0
  159. package/src/themes/default/tokens/spectre.js +16 -0
  160. package/src/themes/default/utils.js +523 -0
  161. package/src/themes/index.ts +11 -0
  162. package/src/types.ts +394 -0
  163. package/src/utils/overlayTheme.ts +61 -0
  164. package/src/utils/pickColor.ts +15 -0
  165. package/tsconfig.json +24 -0
@@ -0,0 +1,1026 @@
1
+ import { breakpoints, fontSizes, sizes, space } from "../../tokens/space"
2
+ import { shapes } from "../../tokens/shapes"
3
+ import { shadows } from "../../tokens/shadows"
4
+ import { getShade, getTint, getTransparent } from "../../utils"
5
+ import { controlSizes } from "../../tokens/controls"
6
+ import colors from "./config"
7
+
8
+ // TODO: Decide if we want to include borderColor.
9
+ const staticPairs = {
10
+ red: {
11
+ color: colors.palette.reds[0],
12
+ backgroundColor: colors.palette.reds[7],
13
+ },
14
+ orange: {
15
+ color: colors.palette.oranges[11],
16
+ backgroundColor: colors.palette.oranges[6],
17
+ },
18
+ yellow: {
19
+ color: colors.palette.yellows[11],
20
+ backgroundColor: colors.palette.yellows[5],
21
+ },
22
+ green: {
23
+ color: colors.palette.greens[11],
24
+ backgroundColor: colors.palette.greens[5],
25
+ },
26
+ teal: {
27
+ color: colors.palette.teals[11],
28
+ backgroundColor: colors.palette.teals[5],
29
+ },
30
+ blue: {
31
+ color: colors.palette.blues[0],
32
+ backgroundColor: colors.palette.blues[7],
33
+ },
34
+ purple: {
35
+ color: colors.palette.purples[0],
36
+ backgroundColor: colors.palette.purples[7],
37
+ },
38
+ pink: {
39
+ color: colors.palette.pinks[11],
40
+ backgroundColor: colors.palette.pinks[5],
41
+ },
42
+ gray: {
43
+ color: colors.palette.grays[11],
44
+ backgroundColor: colors.palette.grays[5],
45
+ },
46
+ primary: {
47
+ backgroundColor: colors.palette.brands[6],
48
+ color: colors.dark,
49
+ borderColor: colors.palette.brands[4],
50
+ },
51
+ accent: {
52
+ color: colors.white,
53
+ backgroundColor: colors.palette.accents[6],
54
+ subtle: {
55
+ color: colors.palette.accents[10],
56
+ backgroundColor: colors.palette.accents[1],
57
+ },
58
+ },
59
+ neutral: {
60
+ color: colors.palette.neutrals[0],
61
+ backgroundColor: colors.palette.neutrals[8],
62
+ },
63
+ contrast: {
64
+ backgroundColor: colors.light,
65
+ color: colors.dark,
66
+ },
67
+ none: {
68
+ color: "inherit",
69
+ backgroundColor: "transparent",
70
+ borderColor: "transparent",
71
+ },
72
+ }
73
+
74
+ const signalPairs = {
75
+ error: {
76
+ static: {
77
+ color: colors.palette.reds[0],
78
+ backgroundColor: colors.error,
79
+ borderColor: colors.palette.reds[8],
80
+ },
81
+ interactive: {
82
+ color: colors.palette.reds[0],
83
+ backgroundColor: getShade(colors.error, 0.3),
84
+ },
85
+ subtle: {
86
+ color: colors.palette.reds[9],
87
+ backgroundColor: colors.palette.reds[1],
88
+ },
89
+ light: {
90
+ color: colors.palette.reds[9],
91
+ backgroundColor: colors.palette.reds[0],
92
+ },
93
+ },
94
+ success: {
95
+ static: {
96
+ color: colors.palette.greens[0],
97
+ backgroundColor: colors.success,
98
+ },
99
+ interactive: {
100
+ color: colors.palette.greens[0],
101
+ backgroundColor: getShade(colors.success, 0.3),
102
+ },
103
+ subtle: {
104
+ color: colors.palette.greens[9],
105
+ backgroundColor: colors.palette.greens[1],
106
+ },
107
+ },
108
+ warning: {
109
+ static: {
110
+ color: colors.palette.yellows[10],
111
+ backgroundColor: colors.palette.yellows[3],
112
+ },
113
+ interactive: {
114
+ color: colors.palette.yellows[0],
115
+ backgroundColor: getShade(colors.warning, 0.3),
116
+ },
117
+ subtle: {
118
+ color: colors.palette.yellows[9],
119
+ backgroundColor: colors.palette.yellows[0],
120
+ },
121
+ },
122
+ info: {
123
+ static: {
124
+ color: colors.palette.blues[10],
125
+ backgroundColor: colors.palette.blues[3],
126
+ },
127
+ interactive: {
128
+ color: colors.palette.blues[0],
129
+ backgroundColor: getShade(colors.blue, 0.3),
130
+ },
131
+ subtle: {
132
+ color: colors.palette.blues[9],
133
+ backgroundColor: colors.palette.blues[1],
134
+ },
135
+ light: {
136
+ color: colors.palette.blues[9],
137
+ backgroundColor: colors.palette.blues[0],
138
+ },
139
+ },
140
+ brand: {
141
+ static: {
142
+ color: colors.palette.brands[10],
143
+ backgroundColor: colors.palette.brands[3],
144
+ },
145
+ interactive: {
146
+ color: colors.palette.brands[0],
147
+ backgroundColor: getShade(colors.brand, 0.3),
148
+ },
149
+ subtle: {
150
+ color: colors.palette.brands[9],
151
+ backgroundColor: colors.palette.brands[0],
152
+ borderColor: colors.transparent.light[5],
153
+ },
154
+ },
155
+ neutral: {
156
+ static: {
157
+ color: colors.palette.neutrals[10],
158
+ backgroundColor: colors.palette.neutrals[3],
159
+ },
160
+ interactive: {
161
+ color: colors.palette.neutrals[0],
162
+ backgroundColor: getShade(colors.neutral, 0.3),
163
+ },
164
+ subtle: {
165
+ color: colors.palette.neutrals[9],
166
+ backgroundColor: colors.palette.neutrals[2],
167
+ },
168
+ },
169
+ signal: {
170
+ static: {
171
+ color: colors.red,
172
+ backgroundColor: colors.signal,
173
+ },
174
+ interactive: {
175
+ color: colors.palette.neutrals[0],
176
+ backgroundColor: getShade(colors.neutral, 0.3),
177
+ },
178
+ subtle: {
179
+ color: colors.palette.neutrals[9],
180
+ backgroundColor: colors.palette.neutrals[2],
181
+ borderColor: colors.transparent.light[5],
182
+ },
183
+ },
184
+ }
185
+
186
+ const stateSkins = {
187
+ highlight: {
188
+ color: colors.primary,
189
+ backgroundColor: colors.overlay,
190
+ borderColor: colors.palette.accents[5],
191
+ boxShadow: "0 0 0 3px " + getTransparent(colors.palette.accents[3], 0.8),
192
+ },
193
+ focused: {
194
+ borderColor: colors.palette.accents[7],
195
+ boxShadow:
196
+ "inset 0 0 0 2px " + getTransparent(colors.palette.neutrals[7], 0.8),
197
+ },
198
+ minimal: {
199
+ backgroundColor: colors.surface,
200
+ borderColor: colors.palette.neutrals[8],
201
+ color: colors.light,
202
+ },
203
+ outlined: {
204
+ borderColor: colors.palette.accents[5],
205
+ boxShadow: "0 0 0 3px " + getTransparent(colors.palette.accents[3], 0.8),
206
+ },
207
+ }
208
+
209
+ const surfaceSkins = {
210
+ base: {
211
+ color: colors.light,
212
+ backgroundColor: colors.base,
213
+ borderColor: colors.transparent.light[1],
214
+ shade: {
215
+ backgroundColor: getShade(colors.base, 0.25),
216
+ borderColor: colors.transparent.light[1],
217
+ },
218
+ tint: {
219
+ backgroundColor: getTint(colors.base, 0.025),
220
+ borderColor: colors.transparent.light[1],
221
+ },
222
+ },
223
+ surface: {
224
+ color: colors.light,
225
+ backgroundColor: colors.surface,
226
+ borderColor: colors.transparent.light[2],
227
+ shade: {
228
+ backgroundColor: getShade(colors.surface, 0.05),
229
+ borderColor: colors.transparent.light[1],
230
+ },
231
+ tint: {
232
+ backgroundColor: getTint(colors.surface, 0.025),
233
+ borderColor: colors.transparent.light[1],
234
+ },
235
+ },
236
+ panel: {
237
+ color: colors.light,
238
+ backgroundColor: colors.panel,
239
+ borderColor: colors.transparent.light[1],
240
+ shade: {
241
+ backgroundColor: getShade(colors.panel, 0.25),
242
+ borderColor: colors.transparent.light[1],
243
+ },
244
+ tint: {
245
+ backgroundColor: getTint(colors.panel, 0.025),
246
+ borderColor: colors.transparent.light[1],
247
+ },
248
+ },
249
+ card: {
250
+ color: colors.light,
251
+ backgroundColor: colors.card,
252
+ borderColor: colors.transparent.light[2],
253
+ shade: {
254
+ backgroundColor: getShade(colors.card, 0.25),
255
+ borderColor: colors.transparent.light[1],
256
+ },
257
+ tint: {
258
+ backgroundColor: getTint(colors.card, 0.025),
259
+ borderColor: colors.transparent.light[1],
260
+ },
261
+ },
262
+ overlay: {
263
+ color: colors.light,
264
+ backgroundColor: colors.overlay,
265
+ borderColor: colors.transparent.light[1],
266
+ shade: {
267
+ backgroundColor: getShade(colors.overlay, 0.25),
268
+ borderColor: colors.transparent.light[1],
269
+ },
270
+ tint: {
271
+ backgroundColor: getTint(colors.overlay, 0.025),
272
+ borderColor: colors.transparent.light[1],
273
+ },
274
+ },
275
+ }
276
+
277
+ const specialSkins = {
278
+ transparent: {
279
+ color: colors.secondary,
280
+ backgroundColor: "rgba(0,0,0,0.0)",
281
+ },
282
+ translucent: {
283
+ borderColor: colors.transparent.light[2],
284
+ backdropFilter: "blur(8px)",
285
+ "-webkit-backdrop-filter": "blur(8px)",
286
+ backgroundColor: getTransparent(colors.white, 0.8),
287
+ color: colors.primary,
288
+ light: {
289
+ borderColor: colors.transparent.light[2],
290
+ backdropFilter: "blur(8px)",
291
+ "-webkit-backdrop-filter": "blur(8px)",
292
+ backgroundColor: getTransparent(colors.white, 0.4),
293
+ color: colors.primary,
294
+ },
295
+ dark: {
296
+ borderColor: colors.transparent.dark[2],
297
+ backdropFilter: "blur(8px)",
298
+ "-webkit-backdrop-filter": "blur(8px)",
299
+ backgroundColor: getTransparent(colors.black, 0.7),
300
+ color: colors.white,
301
+ },
302
+ },
303
+ gradient: {
304
+ backgroundImage: `linear-gradient(to bottom, ${colors.palette.blues[1]} 50%, ${colors.palette.yellows[1]} 100%)`,
305
+ },
306
+ }
307
+
308
+ const hoverSkins = {
309
+ default: {
310
+ color: colors.light,
311
+ backgroundColor: colors.palette.darks[4],
312
+ },
313
+ subtle: {
314
+ backgroundColor: getTransparent(colors.brand, 0.05),
315
+ color: colors.light,
316
+ },
317
+ dim: {
318
+ backgroundColor: getTransparent(colors.black, 0.05),
319
+ color: colors.light,
320
+ },
321
+ brand: {
322
+ color: colors.dark,
323
+ backgroundColor: colors.palette.brands[7],
324
+ light: {
325
+ color: colors.light,
326
+ backgroundColor: colors.palette.brands[0],
327
+ },
328
+ },
329
+ error: {
330
+ color: colors.palette.reds[0],
331
+ backgroundColor: colors.palette.reds[8],
332
+ },
333
+ success: {
334
+ color: colors.palette.greens[0],
335
+ backgroundColor: colors.palette.greens[8],
336
+ },
337
+ }
338
+
339
+ const colorPairs = {
340
+ ...staticPairs,
341
+ ...specialSkins,
342
+ ...signalPairs,
343
+ ...surfaceSkins,
344
+ ...stateSkins,
345
+ dark: surfaceSkins.base,
346
+ hover: hoverSkins,
347
+ }
348
+
349
+ const skins = {
350
+ ...colorPairs,
351
+ button: {
352
+ default: {
353
+ color: colors.secondary,
354
+ backgroundColor: colors.transparent.dark[8],
355
+ border: "1px solid",
356
+ borderColor: colors.transparent.light[2],
357
+ boxShadow: "0 1px 2px 0 rgba(0,0,0,0.05)",
358
+ "&:hover": {
359
+ ...hoverSkins.brand,
360
+ boxShadow: "0 2px 0 0 rgba(0,0,0,0.04)",
361
+ },
362
+ surface: {
363
+ color: colors.secondary,
364
+ backgroundColor: colors.surface,
365
+ border: "1px solid",
366
+ borderColor: colors.transparent.light[3],
367
+ boxShadow: "0 1px 1px 0 rgba(0,0,0,0.1), 0 2px 2px 0 rgba(0,0,0,0.05)",
368
+ "&:hover": {
369
+ ...hoverSkins.subtle,
370
+ boxShadow: "0 2px 0 0 rgba(0,0,0,0.04)",
371
+ },
372
+ },
373
+ danger: {
374
+ color: colors.palette.reds[8],
375
+ border: "1px solid",
376
+ backgroundColor: getTransparent(colors.red, 0.075),
377
+ borderColor: colors.transparent.light[2],
378
+ boxShadow: "0 1px 2px 0 rgba(0,0,0,0.05)",
379
+ "&:hover": {
380
+ ...hoverSkins.error,
381
+ boxShadow: "0 2px 0 0 rgba(0,0,0,0.04)",
382
+ },
383
+ },
384
+ success: {
385
+ color: colors.secondary,
386
+ border: "1px solid",
387
+ backgroundColor: getTransparent(colors.green, 0.25),
388
+ borderColor: colors.transparent.light[2],
389
+ boxShadow: "0 1px 2px 0 rgba(0,0,0,0.05)",
390
+ "&:hover": {
391
+ ...hoverSkins.success,
392
+ boxShadow: "0 2px 0 0 rgba(0,0,0,0.04)",
393
+ },
394
+ },
395
+ },
396
+ active: {
397
+ color: colors.palette.brands[10],
398
+ backgroundColor: colors.transparent.brand[3],
399
+ border: "1px solid",
400
+ borderColor: "transparent",
401
+ "&:hover": {
402
+ color: colors.primary,
403
+ backgroundColor: colors.transparent.light[2],
404
+ boxShadow: "0 2px 0 0 rgba(0,0,0,0.04)",
405
+ },
406
+ },
407
+ primary: {
408
+ border: "1px solid",
409
+ ...colorPairs.primary,
410
+ borderColor: colors.transparent.light[1],
411
+ "&:hover": {
412
+ ...hoverSkins.brand,
413
+ },
414
+ },
415
+ outline: {
416
+ color: colors.light,
417
+ border: "1px solid",
418
+ backgroundColor: "transparent",
419
+ borderColor: colors.transparent.light[3],
420
+ "&:hover": {
421
+ ...hoverSkins.brand,
422
+ },
423
+ dark: {
424
+ color: colors.dark,
425
+ border: "1px solid",
426
+ backgroundColor: "transparent",
427
+ borderColor: colors.transparent.dark[5],
428
+ "&:hover": {
429
+ ...hoverSkins.brand,
430
+ },
431
+ },
432
+ },
433
+ solid: {
434
+ backgroundColor: colors.white,
435
+ border: "none",
436
+ borderColor: "transparent",
437
+ color: colors.primary,
438
+ boxShadow: shadows.medium,
439
+ "&:hover": {
440
+ //transform: "scale(1.05)",
441
+ },
442
+ },
443
+ ghost: {
444
+ backgroundColor: "transparent",
445
+ border: "1px solid",
446
+ borderColor: "transparent",
447
+ color: colors.secondary,
448
+ "&:hover": {
449
+ ...hoverSkins.subtle,
450
+ },
451
+ danger: {
452
+ color: colors.primary,
453
+ backgroundColor: getTransparent(colors.red, 0.25),
454
+ borderColor: getTransparent(colors.red, 0.5),
455
+ "&:hover": {
456
+ ...hoverSkins.error,
457
+ },
458
+ },
459
+ subtle: {
460
+ backgroundColor: "transparent",
461
+ border: "1px solid",
462
+ borderColor: "transparent",
463
+ color: colors.secondary,
464
+ "&:hover": {
465
+ ...hoverSkins.default,
466
+ },
467
+ },
468
+ dim: {
469
+ backgroundColor: "transparent",
470
+ border: "1px solid",
471
+ borderColor: "transparent",
472
+ color: colors.tertiary,
473
+ "&:hover": {
474
+ ...hoverSkins.dim,
475
+ },
476
+ },
477
+ },
478
+ subtle: {
479
+ backgroundColor: colors.base,
480
+ border: "1px solid",
481
+ borderColor: "transparent",
482
+ color: colors.tertiary,
483
+ "&:hover": {
484
+ ...hoverSkins.default,
485
+ },
486
+ },
487
+ clean: {
488
+ border: "0px solid",
489
+ backgroundColor: "transparent",
490
+ color: colors.light,
491
+ borderColor: "transparent",
492
+ borderRadius: 0,
493
+ },
494
+ cta: {
495
+ color: colors.white,
496
+ backgroundColor: colors.palette.brands[6],
497
+ border: "1px solid",
498
+ borderColor: colors.palette.brands[7],
499
+ boxShadow:
500
+ "0 2px 2px 0 rgba(0,0,0,0.072), 0 0px 10px 2px rgba(0,0,0,0.082)",
501
+ "&:hover": {
502
+ ...hoverSkins.brand,
503
+ },
504
+ subtle: {
505
+ color: colors.palette.brands[11],
506
+ backgroundColor: colors.transparent.brand[2],
507
+ border: "1px solid",
508
+ borderColor: colors.palette.brands[3],
509
+ boxShadow:
510
+ "0 2px 2px 0 rgba(0,0,0,0.072), 0 0px 10px 2px rgba(0,0,0,0.082)",
511
+ "&:hover": {
512
+ ...hoverSkins.brand,
513
+ },
514
+ },
515
+ },
516
+ tab: {
517
+ color: colors.primary,
518
+ backgroundColor: colors.surface,
519
+ boxShadow: "none",
520
+ borderBottom: "2px solid",
521
+ borderBottomColor: "transparent",
522
+ "&:hover": {
523
+ ...hoverSkins.subtle,
524
+ borderBottomColor: colors.palette.brands[3],
525
+ },
526
+ "&[data-active='true']": {
527
+ backgroundColor: colors.palette.brands[0],
528
+ borderBottomColor: colors.palette.brands[7],
529
+ color: colors.palette.brands[10],
530
+ },
531
+ },
532
+ segment: {
533
+ border: "1px solid",
534
+ backgroundColor: colors.surface,
535
+ color: colors.primary,
536
+ borderColor: colors.transparent.light[3],
537
+ ...shadows.xsmall,
538
+ "&:hover": {
539
+ backgroundColor: colors.surface,
540
+ color: colors.primary,
541
+ borderColor: colors.transparent.light[4],
542
+ },
543
+ },
544
+ success: {
545
+ ...colorPairs.success.static,
546
+ "&:hover": {
547
+ ...colorPairs.success.interactive,
548
+ },
549
+ },
550
+ warning: {
551
+ ...colorPairs.warning.static,
552
+ "&:hover": {
553
+ ...colorPairs.warning.interactive,
554
+ },
555
+ },
556
+ danger: {
557
+ ...colorPairs.error.static,
558
+ "&:hover": {
559
+ ...colorPairs.error.interactive,
560
+ },
561
+ },
562
+ sizes: {
563
+ xxxsmall: {
564
+ ...controlSizes.xxxsmall,
565
+ fontSize: fontSizes[3],
566
+ fontWeight: 600,
567
+ },
568
+ xxsmall: {
569
+ ...controlSizes.xxsmall,
570
+ fontSize: fontSizes[3],
571
+ fontWeight: 600,
572
+ },
573
+ xsmall: {
574
+ ...controlSizes.xsmall,
575
+ fontSize: fontSizes[3],
576
+ fontWeight: 600,
577
+ },
578
+ small: {
579
+ ...controlSizes.small,
580
+ fontSize: fontSizes[3],
581
+ fontWeight: 600,
582
+ },
583
+ medium: {
584
+ ...controlSizes.medium,
585
+ fontSize: fontSizes[4],
586
+ fontWeight: 600,
587
+ condensed: {
588
+ ...controlSizes.medium,
589
+ fontSize: fontSizes[4],
590
+ fontWeight: 600,
591
+ paddingLeft: space.xs,
592
+ paddingRight: space.xs,
593
+ },
594
+ },
595
+ large: {
596
+ ...controlSizes.large,
597
+ fontSize: fontSizes[5],
598
+ fontWeight: 600,
599
+ },
600
+ icon: {
601
+ width: space[14],
602
+ height: space[14],
603
+ large: {
604
+ width: space[15],
605
+ height: space[15],
606
+ },
607
+ small: {
608
+ width: space[13],
609
+ height: space[13],
610
+ },
611
+ xsmall: {
612
+ width: space[12],
613
+ height: space[12],
614
+ },
615
+ xxsmall: {
616
+ width: space[10],
617
+ height: space[10],
618
+ },
619
+ },
620
+ },
621
+ },
622
+ field: {
623
+ default: {
624
+ border: "1px solid",
625
+ backgroundColor: surfaceSkins.base.backgroundColor,
626
+ color: colors.light,
627
+ borderColor: colors.palette.neutrals[5],
628
+ "&:hover, &:focus, &:focus-within": {
629
+ backgroundColor: colors.palette.neutrals[0],
630
+ borderColor: colors.palette.neutrals[8],
631
+ color: colors.light,
632
+ boxShadow: "0 2px 2px 0 rgba(0,0,0,0.05)",
633
+ },
634
+ "&::placeholder": {
635
+ opacity: 0.6,
636
+ },
637
+ "&:focus": {
638
+ outline: "none",
639
+ borderColor: colors.palette.brands[8],
640
+ },
641
+ },
642
+ primary: {
643
+ border: "1.5px solid",
644
+ backgroundColor: getTint(colors.brand, 0.9),
645
+ color: colors.primary,
646
+ borderColor: colors.palette.neutrals[6],
647
+ boxShadow: "0 2px 0px 0 rgba(0,0,0,0.025) inset",
648
+
649
+ "&:hover, &:focus": {
650
+ backgroundColor: colors.surface,
651
+ color: colors.primary,
652
+ borderColor: colors.palette.neutrals[7],
653
+ boxShadow: "0 2px 2px 0 rgba(0,0,0,0.05)",
654
+ },
655
+ // "&:invalid": {
656
+ // borderColor: colors.palette.reds[4],
657
+ // color: colors.light,
658
+ // },
659
+ "&::placeholder": {
660
+ opacity: 0.8,
661
+ },
662
+ "&:focus": {
663
+ outline: "none",
664
+ },
665
+ },
666
+ ghost: {
667
+ border: "0px solid",
668
+ backgroundColor: "transparent",
669
+ color: colors.light,
670
+ borderColor: "transparent",
671
+ borderRadius: 0,
672
+ "&:hover, &:focus": {
673
+ borderColor: "transparent",
674
+ color: colors.light,
675
+ outline: "none",
676
+ },
677
+ "&:user-invalid, &:invalid:not(:placeholder-shown)": {
678
+ borderColor: colors.palette.reds[4],
679
+ color: colors.primary,
680
+ },
681
+ dark: {
682
+ border: "0px solid",
683
+ backgroundColor: "transparent",
684
+ color: colors.dark,
685
+ borderColor: "transparent",
686
+ borderRadius: 0,
687
+ "&:hover, &:focus": {
688
+ borderColor: "transparent",
689
+ color: colors.dark,
690
+ outline: "none",
691
+ },
692
+ "&:user-invalid, &:invalid:not(:placeholder-shown)": {
693
+ borderColor: colors.palette.reds[4],
694
+ color: colors.palette.reds[4],
695
+ },
696
+ },
697
+ },
698
+ outline: {
699
+ border: "1px solid",
700
+ backgroundColor: colors.surface,
701
+ color: colors.primary,
702
+ borderColor: colors.palette.neutrals[7],
703
+ boxShadow: "0 2px 0px 0 rgba(0,0,0,0.05) inset",
704
+ "&:hover, &:focus": {
705
+ borderColor: colors.palette.neutrals[8],
706
+ color: colors.primary,
707
+ outline: "none",
708
+ },
709
+ "&:user-invalid, &:invalid:not(:placeholder-shown)": {
710
+ borderColor: colors.palette.reds[4],
711
+ color: colors.primary,
712
+ },
713
+ required: {
714
+ border: "1px solid",
715
+ backgroundColor: colors.transparent.light[0],
716
+ color: colors.primary,
717
+ borderColor: colors.palette.reds[7],
718
+ boxShadow: "0 2px 0px 0 rgba(0,0,0,0.025) inset",
719
+ "&:hover, &:focus": {
720
+ borderColor: colors.palette.reds[8],
721
+ color: colors.primary,
722
+ outline: "none",
723
+ },
724
+ "&:user-invalid, &:invalid:not(:placeholder-shown)": {
725
+ borderColor: colors.palette.reds[4],
726
+ backgroundColor: colors.palette.reds[0],
727
+ color: colors.primary,
728
+ },
729
+ },
730
+ prefilled: {
731
+ border: "1px solid",
732
+ backgroundColor: colors.transparent.accent[2],
733
+ color: colors.primary,
734
+ borderColor: colors.palette.accents[6],
735
+ boxShadow: "0 2px 0px 0 rgba(0,0,0,0.05) inset",
736
+ "&:hover, &:focus": {
737
+ borderColor: colors.palette.accents[8],
738
+ backgroundColor: colors.transparent.accent[0],
739
+ color: colors.primary,
740
+ outline: "none",
741
+ },
742
+ "&:user-invalid, &:invalid:not(:placeholder-shown)": {
743
+ borderColor: colors.palette.reds[4],
744
+ backgroundColor: colors.palette.reds[0],
745
+ color: colors.primary,
746
+ },
747
+ },
748
+ },
749
+ underline: {
750
+ border: "1px dashed",
751
+ borderWidth: "0px 0px 1.5px 0px",
752
+ backgroundColor: "transparent",
753
+ color: colors.primary,
754
+ borderColor: colors.palette.neutrals[4],
755
+ "&:hover, &:focus": {
756
+ borderColor: "transparent",
757
+ backgroundColor: colors.palette.brands[0],
758
+ color: colors.primary,
759
+ outline: "none",
760
+ },
761
+ "&:user-invalid, &:invalid:not(:placeholder-shown)": {
762
+ borderColor: colors.palette.reds[4],
763
+ color: colors.primary,
764
+ },
765
+ required: {
766
+ border: "1px solid",
767
+ backgroundColor: colors.transparent.light[0],
768
+ color: colors.primary,
769
+ borderColor: colors.palette.reds[7],
770
+ boxShadow: "0 2px 0px 0 rgba(0,0,0,0.025) inset",
771
+ "&:hover, &:focus": {
772
+ borderColor: colors.palette.reds[8],
773
+ color: colors.primary,
774
+ outline: "none",
775
+ },
776
+ "&:user-invalid, &:invalid:not(:placeholder-shown)": {
777
+ borderColor: colors.palette.reds[4],
778
+ backgroundColor: colors.palette.reds[0],
779
+ color: colors.primary,
780
+ },
781
+ },
782
+ prefilled: {
783
+ border: "1px solid",
784
+ backgroundColor: colors.transparent.accent[2],
785
+ color: colors.primary,
786
+ borderColor: colors.palette.accents[6],
787
+ boxShadow: "0 2px 0px 0 rgba(0,0,0,0.05) inset",
788
+ "&:hover, &:focus": {
789
+ borderColor: colors.palette.accents[8],
790
+ backgroundColor: colors.transparent.accent[0],
791
+ color: colors.primary,
792
+ outline: "none",
793
+ },
794
+ "&:user-invalid, &:invalid:not(:placeholder-shown)": {
795
+ borderColor: colors.palette.reds[4],
796
+ backgroundColor: colors.palette.reds[0],
797
+ color: colors.primary,
798
+ },
799
+ },
800
+ },
801
+ select: {
802
+ border: "1px solid",
803
+ backgroundColor: colors.surface,
804
+ color: colors.primary,
805
+ borderColor: colors.palette.neutrals[7],
806
+ boxShadow: "0 -2px 0px 0 rgba(0,0,0,0.025) inset",
807
+
808
+ "&:hover, &:focus": {
809
+ backgroundColor: colors.card,
810
+ color: colors.primary,
811
+ borderColor: colors.palette.brands[8],
812
+ boxShadow: "0 2px 2px 0 rgba(0,0,0,0.05)",
813
+ },
814
+ // "&:invalid": {
815
+ // borderColor: colors.palette.reds[4],
816
+ // color: colors.light,
817
+ // },
818
+ "&::placeholder": {
819
+ opacity: 0.8,
820
+ },
821
+ "&:focus": {
822
+ outline: "none",
823
+ },
824
+ },
825
+ checked: {
826
+ border: "1px solid",
827
+ backgroundColor: colors.palette.neutrals[2],
828
+ color: colors.light,
829
+ borderColor: colors.palette.neutrals[7],
830
+ "&:hover, &:focus": {
831
+ backgroundColor: colors.palette.neutrals[0],
832
+ borderColor: colors.palette.accents[8],
833
+ color: colors.light,
834
+ },
835
+ "&::placeholder": {
836
+ opacity: 0.6,
837
+ },
838
+ "&:focus": {
839
+ outline: "none",
840
+ },
841
+ },
842
+ sizes: {
843
+ xsmall: {
844
+ ...controlSizes.xsmall,
845
+ fontSize: fontSizes[3],
846
+ fontWeight: 400,
847
+ select: {
848
+ fontSize: fontSizes[3],
849
+ fontWeight: 400,
850
+ height: space[11],
851
+ paddingLeft: space.xs,
852
+ paddingRight: space.m,
853
+ paddingTop: space.mini,
854
+ paddingBottom: space.mini,
855
+ },
856
+ },
857
+ small: {
858
+ ...controlSizes.small,
859
+ fontSize: fontSizes[4],
860
+ fontWeight: 400,
861
+ prefix: {
862
+ paddingLeft: space.xl,
863
+ paddingRight: space.s,
864
+ paddingTop: space.xxxsmall,
865
+ paddingBottom: space.xxxsmall,
866
+ fontSize: fontSizes[3],
867
+ fontWeight: 400,
868
+ },
869
+ },
870
+ medium: {
871
+ //...controlSizes.medium,
872
+ paddingLeft: space.s,
873
+ paddingRight: space.s,
874
+ paddingTop: space.xsmall,
875
+ paddingBottom: space.xsmall,
876
+ fontSize: fontSizes[4],
877
+ fontWeight: 400,
878
+ prefix: {
879
+ paddingLeft: space.xxl,
880
+ paddingRight: space.s,
881
+ paddingTop: space.xsmall,
882
+ paddingBottom: space.xsmall,
883
+ fontSize: fontSizes[4],
884
+ fontWeight: 400,
885
+ },
886
+ },
887
+ large: {
888
+ // height: space[15],
889
+ paddingLeft: space.s,
890
+ paddingRight: space.s,
891
+ paddingTop: space.xsmall,
892
+ paddingBottom: space.xsmall,
893
+ fontSize: fontSizes[5],
894
+ fontWeight: 400,
895
+ prefix: {
896
+ //paddingLeft: space.xxs,
897
+ paddingRight: space.s,
898
+ paddingTop: space.xsmall,
899
+ paddingBottom: space.xsmall,
900
+ fontSize: fontSizes[5],
901
+ fontWeight: 400,
902
+ },
903
+ },
904
+ },
905
+ },
906
+ link: {
907
+ default: {
908
+ color: colors.palette.brands[8],
909
+ textDecoration: "underline",
910
+ textDecorationColor: colors.transparent.brand[5],
911
+ textDecorationThickness: "1px",
912
+ },
913
+ highlight: {
914
+ color: colors.palette.brands[6],
915
+ },
916
+ underline: {
917
+ color: colors.palette.brands[7],
918
+ textDecoration: "underline",
919
+ textDecorationColor: colors.palette.brands[1],
920
+ textDecorationThickness: "1.5px",
921
+ //textUnderlinePosition: "under",
922
+ },
923
+ button: {
924
+ paddingLeft: space.s,
925
+ paddingRight: space.s,
926
+ paddingTop: space.mini,
927
+ paddingBottom: space.mini,
928
+ ...shapes.rounded,
929
+ color: colors.primary,
930
+ backgroundColor: getTransparent(colors.primary, 0.05),
931
+ "&:hover": {
932
+ ...colorPairs.primary.hover,
933
+ },
934
+ },
935
+ },
936
+ textarea: {
937
+ border: "1px solid",
938
+ color: colors.light,
939
+ backgroundColor: colors.overlay,
940
+ borderColor: colors.transparent.light[2],
941
+ "&:hover, &:focus, &:focus-within": {
942
+ ...stateSkins.highlight,
943
+ // backgroundColor: colors.card,
944
+ // borderColor: colors.palette.brands[5],
945
+ // color: colors.light,
946
+ // boxShadow: "0 0 0 3px " + getTransparent(colors.palette.brands[4], 0.125),
947
+ },
948
+ "& *::placeholder": {
949
+ opacity: 0.6,
950
+ },
951
+ "&:focus": {
952
+ outline: "none",
953
+ },
954
+ },
955
+ codeblock: {
956
+ backgroundColor: colors.card,
957
+ color: colors.light,
958
+ highlight: {
959
+ color: colors.palette.yellows[11],
960
+ backgroundColor: colors.palette.yellows[1],
961
+ "& > code": {
962
+ backgroundColor: "transparent",
963
+ },
964
+ },
965
+ },
966
+ row: {
967
+ backgroundColor: colors.surface,
968
+ color: colors.primary,
969
+ borderColor: colors.palette.neutrals[5],
970
+ empty: {
971
+ backgroundColor: colors.palette.neutrals[2],
972
+ color: colors.primary,
973
+ borderColor: colors.palette.neutrals[5],
974
+ },
975
+ selected: {
976
+ backgroundColor: colors.palette.blues[0],
977
+ color: colors.primary,
978
+ borderColor: colors.palette.neutrals[5],
979
+ "&:hover, &:focus": {
980
+ backgroundColor: colors.palette.darks[0],
981
+ color: colors.primary,
982
+ borderColor: colors.palette.neutrals[5],
983
+ },
984
+ },
985
+ clean: {
986
+ backgroundColor: "transparent",
987
+ color: colors.primary,
988
+ borderColor: colors.palette.neutrals[5],
989
+ },
990
+ group: {
991
+ backgroundColor: colors.palette.neutrals[1],
992
+ color: colors.secondary,
993
+ },
994
+ header: {
995
+ backgroundColor: colors.palette.neutrals[1],
996
+ color: colors.secondary,
997
+ },
998
+ alt: {
999
+ backgroundColor: colors.palette.neutrals[1],
1000
+ color: colors.secondary,
1001
+ borderColor: colors.palette.neutrals[3],
1002
+ },
1003
+ },
1004
+ cell: {
1005
+ ...signalPairs.error,
1006
+ },
1007
+ danger: {
1008
+ backgroundColor: colors.danger,
1009
+ color: colors.primary,
1010
+ },
1011
+ }
1012
+
1013
+ const skinconfig = {
1014
+ colors,
1015
+ colorPairs,
1016
+ controlSizes,
1017
+ breakpoints,
1018
+ fontSizes,
1019
+ space,
1020
+ sizes,
1021
+ shapes,
1022
+ skins,
1023
+ shadows,
1024
+ }
1025
+
1026
+ export default skinconfig