@datalayer/primer-addons 1.0.18 → 1.0.19

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 (68) hide show
  1. package/lib/components/appearance/AppearanceControls.d.ts +3 -2
  2. package/lib/components/appearance/AppearanceControls.js +71 -3
  3. package/lib/components/appearance/AppearanceMenu.d.ts +30 -0
  4. package/lib/components/appearance/AppearanceMenu.js +15 -0
  5. package/lib/components/appearance/ColorModeCircle.d.ts +28 -0
  6. package/lib/components/appearance/ColorModeCircle.js +132 -0
  7. package/lib/components/appearance/ThemeCircle.d.ts +21 -0
  8. package/lib/components/appearance/ThemeCircle.js +46 -0
  9. package/lib/components/appearance/ThemePreviewCard.d.ts +12 -0
  10. package/lib/components/appearance/ThemePreviewCard.js +83 -0
  11. package/lib/components/appearance/index.d.ts +4 -0
  12. package/lib/components/appearance/index.js +4 -0
  13. package/lib/components/box/Box.d.ts +2 -1
  14. package/lib/components/closeable-flash/CloseableFlash.js +58 -1
  15. package/lib/components/color/ColorSwatch.d.ts +23 -0
  16. package/lib/components/color/ColorSwatch.js +62 -0
  17. package/lib/components/color/index.d.ts +1 -0
  18. package/lib/components/color/index.js +5 -0
  19. package/lib/components/index.d.ts +6 -0
  20. package/lib/components/index.js +6 -0
  21. package/lib/components/logo/DatalayerLogo.js +49 -1
  22. package/lib/components/side-overlay/SideOverlay.js +1 -1
  23. package/lib/components/sliding-panel/SlidingPanel.d.ts +19 -0
  24. package/lib/components/sliding-panel/SlidingPanel.js +217 -0
  25. package/lib/components/sliding-panel/SlidingPanel.stories.d.ts +16 -0
  26. package/lib/components/sliding-panel/SlidingPanel.stories.js +68 -0
  27. package/lib/theme/colors/datalayerColors.d.ts +12 -0
  28. package/lib/theme/colors/datalayerColors.js +13 -0
  29. package/lib/theme/colors/earthColors.d.ts +12 -0
  30. package/lib/theme/colors/earthColors.js +13 -0
  31. package/lib/theme/colors/index.d.ts +3 -0
  32. package/lib/theme/colors/index.js +9 -0
  33. package/lib/theme/colors/ivoryColors.d.ts +46 -0
  34. package/lib/theme/colors/ivoryColors.js +56 -0
  35. package/lib/theme/colors/lovelyColors.d.ts +12 -0
  36. package/lib/theme/colors/lovelyColors.js +13 -0
  37. package/lib/theme/colors/matrixColors.d.ts +12 -0
  38. package/lib/theme/colors/matrixColors.js +13 -0
  39. package/lib/theme/colors/sandColors.d.ts +45 -0
  40. package/lib/theme/colors/sandColors.js +55 -0
  41. package/lib/theme/colors/spatialColors.d.ts +12 -0
  42. package/lib/theme/colors/spatialColors.js +13 -0
  43. package/lib/theme/colors/sunColors.d.ts +45 -0
  44. package/lib/theme/colors/sunColors.js +55 -0
  45. package/lib/theme/css/createThemeCSSVars.d.ts +25 -1
  46. package/lib/theme/css/createThemeCSSVars.js +56 -3
  47. package/lib/theme/index.d.ts +3 -0
  48. package/lib/theme/index.js +3 -0
  49. package/lib/theme/palettes/ColorPalette.js +121 -1
  50. package/lib/theme/themeRegistry.d.ts +1 -1
  51. package/lib/theme/themeRegistry.js +151 -1
  52. package/lib/theme/themes/datalayerTheme.js +58 -7
  53. package/lib/theme/themes/earthTheme.js +50 -0
  54. package/lib/theme/themes/ivoryTheme.d.ts +1091 -0
  55. package/lib/theme/themes/ivoryTheme.js +257 -0
  56. package/lib/theme/themes/lovelyTheme.js +58 -7
  57. package/lib/theme/themes/matrixTheme.js +57 -8
  58. package/lib/theme/themes/sandTheme.d.ts +1091 -0
  59. package/lib/theme/themes/sandTheme.js +256 -0
  60. package/lib/theme/themes/spatialTheme.js +58 -7
  61. package/lib/theme/themes/sunTheme.d.ts +1091 -0
  62. package/lib/theme/themes/sunTheme.js +257 -0
  63. package/lib/utils/Helper.d.ts +1 -1
  64. package/lib/utils/Portals.d.ts +0 -1
  65. package/lib/utils/Portals.js +0 -1
  66. package/package.json +9 -5
  67. package/lib/App.d.ts +0 -13
  68. package/lib/App.js +0 -25
@@ -0,0 +1,257 @@
1
+ /*
2
+ * Copyright (c) 2023-2025 Datalayer, Inc.
3
+ * Distributed under the terms of the Modified BSD License.
4
+ */
5
+ /**
6
+ * Ivory Theme for Primer React.
7
+ *
8
+ * Soft, warm off-white neutrals with a deep-taupe accent — a calm,
9
+ * refined, and welcoming look. Uses an elegant humanist-serif type stack
10
+ * (Palatino-led) for a gentle, hospitable, printed feel.
11
+ * Theming is applied via **CSS custom-property overrides**.
12
+ */
13
+ import { theme as primerTheme } from '@primer/react';
14
+ import { ivoryColors } from '../colors/ivoryColors';
15
+ import { buildThemeStyles } from '../css/createThemeCSSVars';
16
+ /* ── Light-mode colour definitions ───────────────────────────────────── */
17
+ const ivoryLight = {
18
+ canvas: {
19
+ default: ivoryColors.white,
20
+ subtle: '#F4EDDE',
21
+ },
22
+ fg: {
23
+ default: '#2C2318',
24
+ muted: ivoryColors.gray,
25
+ onEmphasis: '#FBF7EF',
26
+ },
27
+ accent: {
28
+ fg: ivoryColors.ivoryText,
29
+ emphasis: ivoryColors.ivoryText,
30
+ muted: ivoryColors.ivoryAccent,
31
+ subtle: ivoryColors.ivoryTint,
32
+ },
33
+ success: {
34
+ fg: '#3E6B47',
35
+ emphasis: '#3E6B47',
36
+ muted: '#5E8A5E',
37
+ subtle: '#E1EEE0',
38
+ },
39
+ attention: {
40
+ fg: ivoryColors.attentionBrand,
41
+ emphasis: ivoryColors.attentionBrand,
42
+ muted: ivoryColors.attentionAccent,
43
+ subtle: ivoryColors.attentionTint,
44
+ },
45
+ danger: {
46
+ fg: ivoryColors.dangerBrand,
47
+ emphasis: ivoryColors.dangerBrand,
48
+ muted: ivoryColors.dangerAccent,
49
+ subtle: ivoryColors.dangerTint,
50
+ },
51
+ severe: {
52
+ fg: ivoryColors.severeBrand,
53
+ emphasis: ivoryColors.severeBrand,
54
+ muted: ivoryColors.severeAccent,
55
+ subtle: ivoryColors.severeTint,
56
+ },
57
+ done: {
58
+ fg: ivoryColors.doneBrand,
59
+ emphasis: ivoryColors.doneBrand,
60
+ muted: ivoryColors.doneAccent,
61
+ subtle: ivoryColors.doneTint,
62
+ },
63
+ border: {
64
+ default: '#E0D3BC',
65
+ muted: '#EBE1CE',
66
+ },
67
+ btn: {
68
+ text: '#2C2318',
69
+ bg: '#FDF9F1',
70
+ border: '#DDCEB2',
71
+ hoverBg: ivoryColors.ivoryTint,
72
+ hoverBorder: ivoryColors.gray,
73
+ activeBg: ivoryColors.ivoryTint,
74
+ activeBorder: ivoryColors.gray,
75
+ selectedBg: '#FDF9F1',
76
+ counterBg: ivoryColors.gray,
77
+ primary: {
78
+ text: '#FBF7EF',
79
+ bg: ivoryColors.ivoryText,
80
+ border: ivoryColors.ivoryText,
81
+ hoverBg: ivoryColors.ivoryHover,
82
+ hoverBorder: ivoryColors.ivoryHover,
83
+ selectedBg: ivoryColors.ivoryHover,
84
+ disabledText: 'rgba(255, 255, 255, 0.8)',
85
+ disabledBg: '#D8C9AE',
86
+ disabledBorder: '#D8C9AE',
87
+ icon: '#FBF7EF',
88
+ counterBg: 'rgba(0, 0, 0, 0.2)',
89
+ },
90
+ outline: {
91
+ text: ivoryColors.ivoryText,
92
+ hoverText: '#FBF7EF',
93
+ hoverBg: ivoryColors.ivoryText,
94
+ hoverBorder: ivoryColors.ivoryText,
95
+ hoverCounterBg: 'rgba(255, 255, 255, 0.2)',
96
+ selectedText: '#FBF7EF',
97
+ selectedBg: ivoryColors.ivoryHover,
98
+ selectedBorder: ivoryColors.ivoryHover,
99
+ disabledText: ivoryColors.gray,
100
+ disabledBg: ivoryColors.ivoryTint,
101
+ disabledCounterBg: 'rgba(0, 0, 0, 0.05)',
102
+ counterBg: 'rgba(0, 0, 0, 0.05)',
103
+ counterFg: ivoryColors.ivoryText,
104
+ hoverCounterFg: '#FBF7EF',
105
+ disabledCounterFg: ivoryColors.gray,
106
+ },
107
+ danger: {
108
+ text: '#B42318',
109
+ hoverText: '#FBF7EF',
110
+ hoverBg: '#B42318',
111
+ hoverBorder: '#B42318',
112
+ hoverCounterBg: 'rgba(255, 255, 255, 0.2)',
113
+ selectedText: '#FBF7EF',
114
+ selectedBg: '#8E1B12',
115
+ selectedBorder: '#8E1B12',
116
+ disabledText: 'rgba(180, 35, 24, 0.5)',
117
+ disabledBg: ivoryColors.ivoryTint,
118
+ disabledCounterBg: 'rgba(180, 35, 24, 0.05)',
119
+ counterBg: 'rgba(180, 35, 24, 0.1)',
120
+ counterFg: '#B42318',
121
+ hoverCounterFg: '#FBF7EF',
122
+ disabledCounterFg: 'rgba(180, 35, 24, 0.5)',
123
+ icon: '#B42318',
124
+ },
125
+ },
126
+ };
127
+ /* ── Dark-mode colour definitions ────────────────────────────────────── */
128
+ const ivoryDark = {
129
+ canvas: {
130
+ default: ivoryColors.black,
131
+ subtle: '#2A2219',
132
+ },
133
+ fg: {
134
+ default: '#EFE6D6',
135
+ muted: '#BBAC97',
136
+ onEmphasis: '#FBF7EF',
137
+ },
138
+ accent: {
139
+ fg: ivoryColors.ivoryBright,
140
+ emphasis: '#836A18',
141
+ muted: ivoryColors.ivoryBrand,
142
+ subtle: '#332A18',
143
+ },
144
+ success: {
145
+ fg: '#7CB07E',
146
+ emphasis: '#3E6B47',
147
+ muted: '#5E8A5E',
148
+ subtle: '#16261A',
149
+ },
150
+ attention: {
151
+ fg: '#E7C24E',
152
+ emphasis: '#8A6D08',
153
+ muted: ivoryColors.attentionAccent,
154
+ subtle: '#2E2606',
155
+ },
156
+ danger: {
157
+ fg: '#F08A70',
158
+ emphasis: '#A34632',
159
+ muted: ivoryColors.dangerAccent,
160
+ subtle: '#2E140E',
161
+ },
162
+ severe: {
163
+ fg: '#E6A566',
164
+ emphasis: '#9C6221',
165
+ muted: ivoryColors.severeAccent,
166
+ subtle: '#2E1D0A',
167
+ },
168
+ done: {
169
+ fg: '#B09AD0',
170
+ emphasis: '#6A5591',
171
+ muted: ivoryColors.doneAccent,
172
+ subtle: '#1F1830',
173
+ },
174
+ btn: {
175
+ text: '#EFE6D6',
176
+ bg: '#2E2519',
177
+ border: 'rgba(239, 230, 214, 0.12)',
178
+ hoverBg: '#3A2F1F',
179
+ hoverBorder: '#BBAC97',
180
+ activeBg: '#2E2519',
181
+ activeBorder: '#8C7C64',
182
+ selectedBg: '#241D12',
183
+ counterBg: '#3A2F1F',
184
+ primary: {
185
+ text: '#211A12',
186
+ bg: ivoryColors.ivoryBright,
187
+ border: 'rgba(239, 230, 214, 0.12)',
188
+ hoverBg: ivoryColors.ivoryAccent,
189
+ hoverBorder: 'rgba(239, 230, 214, 0.12)',
190
+ selectedBg: ivoryColors.ivoryAccent,
191
+ disabledText: 'rgba(33, 26, 18, 0.5)',
192
+ disabledBg: 'rgba(239, 223, 194, 0.35)',
193
+ disabledBorder: 'rgba(239, 223, 194, 0.2)',
194
+ icon: '#211A12',
195
+ counterBg: 'rgba(0, 0, 0, 0.2)',
196
+ },
197
+ outline: {
198
+ text: ivoryColors.ivoryBright,
199
+ hoverText: '#211A12',
200
+ hoverBg: ivoryColors.ivoryBright,
201
+ hoverBorder: ivoryColors.ivoryBright,
202
+ hoverCounterBg: 'rgba(0, 0, 0, 0.2)',
203
+ selectedText: '#211A12',
204
+ selectedBg: ivoryColors.ivoryAccent,
205
+ selectedBorder: ivoryColors.ivoryAccent,
206
+ disabledText: 'rgba(239, 223, 194, 0.5)',
207
+ disabledBg: 'rgba(239, 223, 194, 0.1)',
208
+ disabledCounterBg: 'rgba(239, 223, 194, 0.05)',
209
+ counterBg: 'rgba(239, 223, 194, 0.1)',
210
+ counterFg: ivoryColors.ivoryBright,
211
+ hoverCounterFg: '#211A12',
212
+ disabledCounterFg: 'rgba(239, 223, 194, 0.5)',
213
+ },
214
+ danger: {
215
+ text: '#f85149',
216
+ hoverText: '#FBF7EF',
217
+ hoverBg: '#da3633',
218
+ hoverBorder: '#f85149',
219
+ hoverCounterBg: 'rgba(255, 255, 255, 0.2)',
220
+ selectedText: '#FBF7EF',
221
+ selectedBg: '#b62324',
222
+ selectedBorder: '#ff7b72',
223
+ disabledText: 'rgba(248, 81, 73, 0.5)',
224
+ disabledBg: 'rgba(248, 81, 73, 0.1)',
225
+ disabledCounterBg: 'rgba(248, 81, 73, 0.05)',
226
+ counterBg: 'rgba(248, 81, 73, 0.1)',
227
+ counterFg: '#f85149',
228
+ hoverCounterFg: '#FBF7EF',
229
+ disabledCounterFg: 'rgba(248, 81, 73, 0.5)',
230
+ icon: '#f85149',
231
+ },
232
+ },
233
+ };
234
+ /* ── Exports ─────────────────────────────────────────────────────────── */
235
+ /**
236
+ * The Primer theme object.
237
+ *
238
+ * Since theming is done entirely via CSS custom properties
239
+ * (see `ivoryThemeStyles`), this is just the unmodified default Primer
240
+ * theme kept for backward compatibility.
241
+ */
242
+ export const ivoryTheme = primerTheme;
243
+ /**
244
+ * Elegant humanist-serif font stack for the Ivory aesthetic.
245
+ *
246
+ * Leads with Palatino — a soft, calligraphic, welcoming transitional
247
+ * serif — with metric-compatible fallbacks across macOS / Windows /
248
+ * Linux (URW Palladio L / P052) so the refined, hospitable feel renders
249
+ * consistently everywhere without web-font loading (same no-download
250
+ * approach as the Matrix monospace stack).
251
+ */
252
+ const ivoryFontFamily = '"Palatino Linotype", Palatino, "Book Antiqua", "URW Palladio L", P052, Georgia, serif';
253
+ /** Comprehensive Primer CSS-variable overrides for light & dark mode. */
254
+ export const ivoryThemeStyles = buildThemeStyles(ivoryLight, ivoryDark, {
255
+ fontFamily: ivoryFontFamily,
256
+ });
257
+ export default ivoryTheme;
@@ -15,6 +15,7 @@ import { buildThemeStyles } from '../css/createThemeCSSVars';
15
15
  const lovelyLight = {
16
16
  canvas: {
17
17
  default: lovelyColors.white,
18
+ subtle: '#F8E9ED',
18
19
  },
19
20
  fg: {
20
21
  default: '#2D1B28',
@@ -25,11 +26,37 @@ const lovelyLight = {
25
26
  fg: lovelyColors.roseText,
26
27
  emphasis: lovelyColors.roseBrand,
27
28
  muted: lovelyColors.roseAccent,
29
+ subtle: lovelyColors.roseTint,
28
30
  },
29
31
  success: {
30
- fg: lovelyColors.roseText,
31
- emphasis: lovelyColors.roseBrand,
32
- muted: lovelyColors.roseAccent,
32
+ fg: '#1a7f37',
33
+ emphasis: '#2da44e',
34
+ muted: '#4ac26b',
35
+ subtle: '#dafbe1',
36
+ },
37
+ attention: {
38
+ fg: lovelyColors.attentionBrand,
39
+ emphasis: lovelyColors.attentionAccent,
40
+ muted: lovelyColors.attentionBrand,
41
+ subtle: lovelyColors.attentionTint,
42
+ },
43
+ danger: {
44
+ fg: lovelyColors.dangerBrand,
45
+ emphasis: lovelyColors.dangerBrand,
46
+ muted: lovelyColors.dangerAccent,
47
+ subtle: lovelyColors.dangerTint,
48
+ },
49
+ severe: {
50
+ fg: lovelyColors.severeBrand,
51
+ emphasis: lovelyColors.severeBrand,
52
+ muted: lovelyColors.severeAccent,
53
+ subtle: lovelyColors.severeTint,
54
+ },
55
+ done: {
56
+ fg: lovelyColors.doneBrand,
57
+ emphasis: lovelyColors.doneBrand,
58
+ muted: lovelyColors.doneAccent,
59
+ subtle: lovelyColors.doneTint,
33
60
  },
34
61
  btn: {
35
62
  text: '#2D1B28',
@@ -109,10 +136,34 @@ const lovelyDark = {
109
136
  subtle: '#3B0A2A',
110
137
  },
111
138
  success: {
112
- fg: lovelyColors.roseAccent,
113
- emphasis: lovelyColors.roseBright,
114
- muted: lovelyColors.roseBrand,
115
- subtle: '#3B0A2A',
139
+ fg: '#3fb950',
140
+ emphasis: '#238636',
141
+ muted: '#2ea043',
142
+ subtle: '#0f2a18',
143
+ },
144
+ attention: {
145
+ fg: '#ffd8a8',
146
+ emphasis: '#b7791f',
147
+ muted: lovelyColors.attentionBrand,
148
+ subtle: '#34210f',
149
+ },
150
+ danger: {
151
+ fg: '#ff8fb1',
152
+ emphasis: '#d61f69',
153
+ muted: lovelyColors.dangerBrand,
154
+ subtle: '#3b1225',
155
+ },
156
+ severe: {
157
+ fg: '#ffc299',
158
+ emphasis: '#c05621',
159
+ muted: lovelyColors.severeBrand,
160
+ subtle: '#352012',
161
+ },
162
+ done: {
163
+ fg: '#d6bcfa',
164
+ emphasis: '#805ad5',
165
+ muted: lovelyColors.doneBrand,
166
+ subtle: '#2a1f44',
116
167
  },
117
168
  btn: {
118
169
  text: '#FCE7F3',
@@ -15,6 +15,7 @@ import { buildThemeStyles } from '../css/createThemeCSSVars';
15
15
  const matrixLight = {
16
16
  canvas: {
17
17
  default: matrixColors.white,
18
+ subtle: '#E4F5E4',
18
19
  },
19
20
  fg: {
20
21
  default: '#0A2E1A',
@@ -28,10 +29,34 @@ const matrixLight = {
28
29
  subtle: matrixColors.greenTint,
29
30
  },
30
31
  success: {
31
- fg: matrixColors.greenText,
32
- emphasis: matrixColors.greenBrand,
33
- muted: matrixColors.greenAccent,
34
- subtle: matrixColors.greenTint,
32
+ fg: '#1a7f37',
33
+ emphasis: '#2da44e',
34
+ muted: '#4ac26b',
35
+ subtle: '#dafbe1',
36
+ },
37
+ attention: {
38
+ fg: '#3B3200',
39
+ emphasis: matrixColors.attentionAccent,
40
+ muted: '#CBB100',
41
+ subtle: '#FFF7C2',
42
+ },
43
+ danger: {
44
+ fg: matrixColors.dangerBrand,
45
+ emphasis: matrixColors.dangerBrand,
46
+ muted: matrixColors.dangerAccent,
47
+ subtle: '#ffd7df',
48
+ },
49
+ severe: {
50
+ fg: matrixColors.severeBrand,
51
+ emphasis: matrixColors.severeBrand,
52
+ muted: matrixColors.severeAccent,
53
+ subtle: '#ffe3c2',
54
+ },
55
+ done: {
56
+ fg: matrixColors.doneBrand,
57
+ emphasis: matrixColors.doneBrand,
58
+ muted: matrixColors.doneAccent,
59
+ subtle: '#d9fbff',
35
60
  },
36
61
  btn: {
37
62
  text: '#0A2E1A',
@@ -111,10 +136,34 @@ const matrixDark = {
111
136
  subtle: '#0A1F0A',
112
137
  },
113
138
  success: {
114
- fg: matrixColors.greenPhosphor,
115
- emphasis: matrixColors.greenGlow,
116
- muted: matrixColors.greenAccent,
117
- subtle: '#0A1F0A',
139
+ fg: '#56d364',
140
+ emphasis: '#238636',
141
+ muted: '#2ea043',
142
+ subtle: '#0f2a18',
143
+ },
144
+ attention: {
145
+ fg: '#ffea00',
146
+ emphasis: '#a78e00',
147
+ muted: '#ffd000',
148
+ subtle: '#332b00',
149
+ },
150
+ danger: {
151
+ fg: '#ff5a77',
152
+ emphasis: '#c62828',
153
+ muted: matrixColors.dangerAccent,
154
+ subtle: '#2f0f17',
155
+ },
156
+ severe: {
157
+ fg: '#ffad4d',
158
+ emphasis: '#c75b12',
159
+ muted: matrixColors.severeAccent,
160
+ subtle: '#302000',
161
+ },
162
+ done: {
163
+ fg: '#6af7ff',
164
+ emphasis: '#008b8b',
165
+ muted: matrixColors.doneAccent,
166
+ subtle: '#062327',
118
167
  },
119
168
  btn: {
120
169
  text: '#C8E6C9',