@datalayer/primer-addons 1.0.7 → 1.0.9

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 (45) hide show
  1. package/lib/components/box/sx.d.ts +3 -1
  2. package/lib/components/box/sx.js +1 -1
  3. package/lib/components/overlay/Overlay.js +15 -2
  4. package/lib/components/toolbar/FloatingToolbar.js +18 -12
  5. package/lib/components/toolbar/Toolbar.js +1 -1
  6. package/lib/components/toolbar/ToolbarButton.js +1 -1
  7. package/lib/components/toolbar/ToolbarDropdown.js +68 -17
  8. package/lib/components/toolbar/types.d.ts +6 -0
  9. package/lib/index.d.ts +1 -0
  10. package/lib/index.js +2 -0
  11. package/lib/theme/DatalayerBrandThemeProvider.d.ts +41 -0
  12. package/lib/theme/DatalayerBrandThemeProvider.js +32 -0
  13. package/lib/theme/DatalayerThemeProvider.d.ts +36 -0
  14. package/lib/theme/DatalayerThemeProvider.js +35 -0
  15. package/lib/theme/Palette.d.ts +4 -0
  16. package/lib/theme/Palette.js +10 -0
  17. package/lib/theme/colors/datalayerColors.d.ts +15 -0
  18. package/lib/theme/colors/datalayerColors.js +21 -0
  19. package/lib/theme/colors/index.d.ts +4 -0
  20. package/lib/theme/colors/index.js +8 -0
  21. package/lib/theme/colors/lovelyColors.d.ts +15 -0
  22. package/lib/theme/colors/lovelyColors.js +21 -0
  23. package/lib/theme/colors/matrixColors.d.ts +20 -0
  24. package/lib/theme/colors/matrixColors.js +26 -0
  25. package/lib/theme/colors/spatialColors.d.ts +15 -0
  26. package/lib/theme/colors/spatialColors.js +21 -0
  27. package/lib/theme/index.d.ts +11 -0
  28. package/lib/theme/index.js +15 -0
  29. package/lib/theme/themes/createThemeCSSVars.d.ts +131 -0
  30. package/lib/theme/themes/createThemeCSSVars.js +172 -0
  31. package/lib/theme/themes/datalayerTheme.d.ts +1093 -0
  32. package/lib/theme/themes/datalayerTheme.js +191 -0
  33. package/lib/theme/themes/lovelyTheme.d.ts +1093 -0
  34. package/lib/theme/themes/lovelyTheme.js +190 -0
  35. package/lib/theme/themes/matrixTheme.d.ts +1093 -0
  36. package/lib/theme/themes/matrixTheme.js +190 -0
  37. package/lib/theme/themes/spatialTheme.d.ts +1093 -0
  38. package/lib/theme/themes/spatialTheme.js +190 -0
  39. package/lib/theme/themes-brand/index.d.ts +1 -0
  40. package/lib/theme/themes-brand/index.js +5 -0
  41. package/lib/theme/themes-brand/spatialBrandTheme.d.ts +16 -0
  42. package/lib/theme/themes-brand/spatialBrandTheme.js +157 -0
  43. package/lib/theme/useSystemColorMode.d.ts +9 -0
  44. package/lib/theme/useSystemColorMode.js +26 -0
  45. package/package.json +1 -1
@@ -0,0 +1,191 @@
1
+ /*
2
+ * Copyright (c) 2023-2025 Datalayer, Inc.
3
+ * Distributed under the terms of the Modified BSD License.
4
+ */
5
+ /**
6
+ * Datalayer Theme for Primer React.
7
+ *
8
+ * Uses accessible color palette from the Datalayer brand manual.
9
+ * Theming is applied via **CSS custom-property overrides** — the
10
+ * Primer theme object is the unmodified default.
11
+ */
12
+ import { theme as primerTheme } from '@primer/react';
13
+ import { datalayerColors } from '../colors';
14
+ import { buildThemeStyles } from './createThemeCSSVars';
15
+ // Re-export so existing consumers keep working.
16
+ export { datalayerColors };
17
+ /* ── Light-mode colour definitions ───────────────────────────────────── */
18
+ const datalayerLight = {
19
+ canvas: {
20
+ default: datalayerColors.white,
21
+ },
22
+ fg: {
23
+ default: datalayerColors.black,
24
+ muted: datalayerColors.gray,
25
+ onEmphasis: datalayerColors.white,
26
+ },
27
+ accent: {
28
+ fg: datalayerColors.greenText,
29
+ emphasis: datalayerColors.greenBrand,
30
+ muted: datalayerColors.greenAccent,
31
+ },
32
+ success: {
33
+ fg: datalayerColors.greenText,
34
+ emphasis: datalayerColors.greenBrand,
35
+ muted: datalayerColors.greenAccent,
36
+ },
37
+ btn: {
38
+ text: datalayerColors.black,
39
+ bg: datalayerColors.white,
40
+ border: datalayerColors.gray,
41
+ hoverBg: datalayerColors.greenTint,
42
+ hoverBorder: datalayerColors.gray,
43
+ activeBg: datalayerColors.greenTint,
44
+ activeBorder: datalayerColors.gray,
45
+ selectedBg: datalayerColors.white,
46
+ counterBg: datalayerColors.gray,
47
+ primary: {
48
+ text: datalayerColors.white,
49
+ bg: datalayerColors.greenText,
50
+ border: datalayerColors.greenText,
51
+ hoverBg: datalayerColors.greenHover,
52
+ hoverBorder: datalayerColors.greenHover,
53
+ selectedBg: datalayerColors.greenHover,
54
+ disabledText: 'rgba(255, 255, 255, 0.8)',
55
+ disabledBg: '#94C9B9',
56
+ disabledBorder: '#94C9B9',
57
+ icon: datalayerColors.white,
58
+ counterBg: 'rgba(0, 0, 0, 0.2)',
59
+ },
60
+ outline: {
61
+ text: datalayerColors.greenText,
62
+ hoverText: datalayerColors.white,
63
+ hoverBg: datalayerColors.greenText,
64
+ hoverBorder: datalayerColors.greenText,
65
+ hoverCounterBg: 'rgba(255, 255, 255, 0.2)',
66
+ selectedText: datalayerColors.white,
67
+ selectedBg: datalayerColors.greenHover,
68
+ selectedBorder: datalayerColors.greenHover,
69
+ disabledText: datalayerColors.gray,
70
+ disabledBg: datalayerColors.greenTint,
71
+ disabledCounterBg: 'rgba(0, 0, 0, 0.05)',
72
+ counterBg: 'rgba(0, 0, 0, 0.05)',
73
+ counterFg: datalayerColors.greenText,
74
+ hoverCounterFg: datalayerColors.white,
75
+ disabledCounterFg: datalayerColors.gray,
76
+ },
77
+ danger: {
78
+ text: '#d32f2f',
79
+ hoverText: datalayerColors.white,
80
+ hoverBg: '#d32f2f',
81
+ hoverBorder: '#d32f2f',
82
+ hoverCounterBg: 'rgba(255, 255, 255, 0.2)',
83
+ selectedText: datalayerColors.white,
84
+ selectedBg: '#b71c1c',
85
+ selectedBorder: '#b71c1c',
86
+ disabledText: 'rgba(211, 47, 47, 0.5)',
87
+ disabledBg: datalayerColors.greenTint,
88
+ disabledCounterBg: 'rgba(211, 47, 47, 0.05)',
89
+ counterBg: 'rgba(211, 47, 47, 0.1)',
90
+ counterFg: '#d32f2f',
91
+ hoverCounterFg: datalayerColors.white,
92
+ disabledCounterFg: 'rgba(211, 47, 47, 0.5)',
93
+ icon: '#d32f2f',
94
+ },
95
+ },
96
+ };
97
+ /* ── Dark-mode colour definitions ────────────────────────────────────── */
98
+ const datalayerDark = {
99
+ canvas: {
100
+ default: datalayerColors.black,
101
+ subtle: '#0d1117',
102
+ },
103
+ fg: {
104
+ default: datalayerColors.white,
105
+ muted: '#8b949e',
106
+ onEmphasis: datalayerColors.white,
107
+ },
108
+ accent: {
109
+ fg: datalayerColors.greenAccent,
110
+ emphasis: datalayerColors.greenBright,
111
+ muted: datalayerColors.greenBrand,
112
+ subtle: '#1f352d',
113
+ },
114
+ success: {
115
+ fg: datalayerColors.greenAccent,
116
+ emphasis: datalayerColors.greenBright,
117
+ muted: datalayerColors.greenBrand,
118
+ subtle: '#1f352d',
119
+ },
120
+ btn: {
121
+ text: '#c9d1d9',
122
+ bg: '#21262d',
123
+ border: 'rgba(240, 246, 252, 0.1)',
124
+ hoverBg: '#30363d',
125
+ hoverBorder: '#8b949e',
126
+ activeBg: 'hsla(212, 12%, 18%, 1)',
127
+ activeBorder: '#6e7681',
128
+ selectedBg: '#161b22',
129
+ counterBg: '#30363d',
130
+ primary: {
131
+ text: datalayerColors.white,
132
+ bg: datalayerColors.greenAccent,
133
+ border: 'rgba(240, 246, 252, 0.1)',
134
+ hoverBg: datalayerColors.greenBright,
135
+ hoverBorder: 'rgba(240, 246, 252, 0.1)',
136
+ selectedBg: datalayerColors.greenBright,
137
+ disabledText: 'rgba(255, 255, 255, 0.5)',
138
+ disabledBg: 'rgba(22, 160, 133, 0.35)',
139
+ disabledBorder: 'rgba(22, 160, 133, 0.2)',
140
+ icon: datalayerColors.white,
141
+ counterBg: 'rgba(0, 0, 0, 0.2)',
142
+ },
143
+ outline: {
144
+ text: datalayerColors.greenAccent,
145
+ hoverText: datalayerColors.white,
146
+ hoverBg: datalayerColors.greenAccent,
147
+ hoverBorder: datalayerColors.greenAccent,
148
+ hoverCounterBg: 'rgba(255, 255, 255, 0.2)',
149
+ selectedText: datalayerColors.white,
150
+ selectedBg: datalayerColors.greenBright,
151
+ selectedBorder: datalayerColors.greenBright,
152
+ disabledText: 'rgba(26, 188, 156, 0.5)',
153
+ disabledBg: 'rgba(26, 188, 156, 0.1)',
154
+ disabledCounterBg: 'rgba(26, 188, 156, 0.05)',
155
+ counterBg: 'rgba(26, 188, 156, 0.1)',
156
+ counterFg: datalayerColors.greenAccent,
157
+ hoverCounterFg: datalayerColors.white,
158
+ disabledCounterFg: 'rgba(26, 188, 156, 0.5)',
159
+ },
160
+ danger: {
161
+ text: '#f85149',
162
+ hoverText: datalayerColors.white,
163
+ hoverBg: '#da3633',
164
+ hoverBorder: '#f85149',
165
+ hoverCounterBg: 'rgba(255, 255, 255, 0.2)',
166
+ selectedText: datalayerColors.white,
167
+ selectedBg: '#b62324',
168
+ selectedBorder: '#ff7b72',
169
+ disabledText: 'rgba(248, 81, 73, 0.5)',
170
+ disabledBg: 'rgba(248, 81, 73, 0.1)',
171
+ disabledCounterBg: 'rgba(248, 81, 73, 0.05)',
172
+ counterBg: 'rgba(248, 81, 73, 0.1)',
173
+ counterFg: '#f85149',
174
+ hoverCounterFg: datalayerColors.white,
175
+ disabledCounterFg: 'rgba(248, 81, 73, 0.5)',
176
+ icon: '#f85149',
177
+ },
178
+ },
179
+ };
180
+ /* ── Exports ─────────────────────────────────────────────────────────── */
181
+ /**
182
+ * The Primer theme object.
183
+ *
184
+ * Since theming is now done entirely via CSS custom properties
185
+ * (see `datalayerThemeStyles`), this is just the unmodified
186
+ * default Primer theme kept for backward compatibility.
187
+ */
188
+ export const datalayerTheme = primerTheme;
189
+ /** Comprehensive Primer CSS-variable overrides for light & dark mode. */
190
+ export const datalayerThemeStyles = buildThemeStyles(datalayerLight, datalayerDark);
191
+ export default datalayerTheme;