@datalayer/primer-addons 1.0.17 → 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.
- package/lib/components/appearance/AppearanceControls.d.ts +3 -2
- package/lib/components/appearance/AppearanceControls.js +71 -3
- package/lib/components/appearance/AppearanceMenu.d.ts +30 -0
- package/lib/components/appearance/AppearanceMenu.js +15 -0
- package/lib/components/appearance/ColorModeCircle.d.ts +28 -0
- package/lib/components/appearance/ColorModeCircle.js +132 -0
- package/lib/components/appearance/ThemeCircle.d.ts +21 -0
- package/lib/components/appearance/ThemeCircle.js +46 -0
- package/lib/components/appearance/ThemePreviewCard.d.ts +12 -0
- package/lib/components/appearance/ThemePreviewCard.js +83 -0
- package/lib/components/appearance/index.d.ts +4 -0
- package/lib/components/appearance/index.js +4 -0
- package/lib/components/box/Box.d.ts +1 -1
- package/lib/components/closeable-flash/CloseableFlash.js +58 -1
- package/lib/components/color/ColorSwatch.d.ts +23 -0
- package/lib/components/color/ColorSwatch.js +62 -0
- package/lib/components/color/index.d.ts +1 -0
- package/lib/components/color/index.js +5 -0
- package/lib/components/content-loader/ContentLoader.js +4 -2
- package/lib/components/icons/CircleIcon.js +6 -4
- package/lib/components/index.d.ts +7 -1
- package/lib/components/index.js +7 -1
- package/lib/components/logo/AI2.d.ts +20 -0
- package/lib/components/logo/AI2.js +23 -0
- package/lib/components/logo/DI.d.ts +19 -0
- package/lib/components/logo/DI.js +20 -0
- package/lib/components/logo/DatalayerLogo.js +49 -1
- package/lib/components/logo/index.d.ts +2 -0
- package/lib/components/logo/index.js +2 -0
- package/lib/components/{overlay/Overlay.d.ts → side-overlay/SideOverlay.d.ts} +3 -3
- package/lib/components/{overlay/Overlay.js → side-overlay/SideOverlay.js} +16 -16
- package/lib/components/side-overlay/SideOverlay.stories.d.ts +16 -0
- package/lib/components/{overlay/Overlay.stories.js → side-overlay/SideOverlay.stories.js} +13 -13
- package/lib/components/slider/Slider.js +2 -1
- package/lib/components/sliding-panel/SlidingPanel.d.ts +19 -0
- package/lib/components/sliding-panel/SlidingPanel.js +217 -0
- package/lib/components/sliding-panel/SlidingPanel.stories.d.ts +16 -0
- package/lib/components/sliding-panel/SlidingPanel.stories.js +68 -0
- package/lib/components/toolbar/FloatingToolbar.js +2 -2
- package/lib/theme/colors/datalayerColors.d.ts +12 -0
- package/lib/theme/colors/datalayerColors.js +13 -0
- package/lib/theme/colors/earthColors.d.ts +12 -0
- package/lib/theme/colors/earthColors.js +13 -0
- package/lib/theme/colors/index.d.ts +3 -0
- package/lib/theme/colors/index.js +9 -0
- package/lib/theme/colors/ivoryColors.d.ts +46 -0
- package/lib/theme/colors/ivoryColors.js +56 -0
- package/lib/theme/colors/lovelyColors.d.ts +12 -0
- package/lib/theme/colors/lovelyColors.js +13 -0
- package/lib/theme/colors/matrixColors.d.ts +12 -0
- package/lib/theme/colors/matrixColors.js +13 -0
- package/lib/theme/colors/sandColors.d.ts +45 -0
- package/lib/theme/colors/sandColors.js +55 -0
- package/lib/theme/colors/spatialColors.d.ts +12 -0
- package/lib/theme/colors/spatialColors.js +13 -0
- package/lib/theme/colors/sunColors.d.ts +45 -0
- package/lib/theme/colors/sunColors.js +55 -0
- package/lib/theme/css/createThemeCSSVars.d.ts +25 -1
- package/lib/theme/css/createThemeCSSVars.js +63 -3
- package/lib/theme/index.d.ts +3 -0
- package/lib/theme/index.js +3 -0
- package/lib/theme/palettes/ColorPalette.js +121 -1
- package/lib/theme/themeRegistry.d.ts +1 -1
- package/lib/theme/themeRegistry.js +151 -1
- package/lib/theme/themes/datalayerTheme.js +58 -7
- package/lib/theme/themes/earthTheme.js +50 -0
- package/lib/theme/themes/ivoryTheme.d.ts +1091 -0
- package/lib/theme/themes/ivoryTheme.js +257 -0
- package/lib/theme/themes/lovelyTheme.js +58 -7
- package/lib/theme/themes/matrixTheme.js +57 -8
- package/lib/theme/themes/sandTheme.d.ts +1091 -0
- package/lib/theme/themes/sandTheme.js +256 -0
- package/lib/theme/themes/spatialTheme.js +58 -7
- package/lib/theme/themes/sunTheme.d.ts +1091 -0
- package/lib/theme/themes/sunTheme.js +257 -0
- package/lib/theme/useThemeStore.d.ts +5 -3
- package/lib/theme/useThemeStore.js +78 -9
- package/lib/utils/Helper.d.ts +1 -1
- package/lib/utils/Portals.d.ts +0 -1
- package/lib/utils/Portals.js +0 -1
- package/package.json +14 -8
- package/lib/App.d.ts +0 -13
- package/lib/App.js +0 -25
- package/lib/components/overlay/Overlay.stories.d.ts +0 -16
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect, useMemo, useState } from 'react';
|
|
3
|
+
import { IconButton } from '@primer/react';
|
|
4
|
+
import { XIcon } from '@primer/octicons-react';
|
|
5
|
+
import { Box } from '../box/Box';
|
|
6
|
+
const variantStyles = {
|
|
7
|
+
default: {
|
|
8
|
+
bg: 'var(--bgColor-default, #ffffff)',
|
|
9
|
+
border: 'var(--borderColor-default, #d0d7de)',
|
|
10
|
+
fg: 'var(--fgColor-default, #1f2328)',
|
|
11
|
+
},
|
|
12
|
+
info: {
|
|
13
|
+
bg: 'var(--bgColor-accent-muted, #ddf4ff)',
|
|
14
|
+
border: 'var(--borderColor-accent-emphasis, #218bff)',
|
|
15
|
+
fg: 'var(--fgColor-default, #1f2328)',
|
|
16
|
+
},
|
|
17
|
+
success: {
|
|
18
|
+
bg: 'var(--bgColor-success-muted, #dafbe1)',
|
|
19
|
+
border: 'var(--borderColor-success-emphasis, #1a7f37)',
|
|
20
|
+
fg: 'var(--fgColor-success, #1a7f37)',
|
|
21
|
+
},
|
|
22
|
+
warning: {
|
|
23
|
+
bg: 'var(--bgColor-attention-muted, #fff8c5)',
|
|
24
|
+
border: 'var(--borderColor-attention-emphasis, #9a6700)',
|
|
25
|
+
fg: 'var(--fgColor-attention, #9a6700)',
|
|
26
|
+
},
|
|
27
|
+
error: {
|
|
28
|
+
bg: 'var(--bgColor-danger-muted, #ffebe9)',
|
|
29
|
+
border: 'var(--borderColor-danger-emphasis, #cf222e)',
|
|
30
|
+
fg: 'var(--fgColor-danger, #cf222e)',
|
|
31
|
+
},
|
|
32
|
+
danger: {
|
|
33
|
+
bg: 'var(--bgColor-danger-muted, #ffebe9)',
|
|
34
|
+
border: 'var(--borderColor-danger-emphasis, #cf222e)',
|
|
35
|
+
fg: 'var(--fgColor-danger, #cf222e)',
|
|
36
|
+
},
|
|
37
|
+
};
|
|
38
|
+
const closeButtonStyles = {
|
|
39
|
+
default: {
|
|
40
|
+
fg: 'var(--fgColor-default, #1f2328)',
|
|
41
|
+
hoverBg: 'rgba(31, 35, 40, 0.10)',
|
|
42
|
+
},
|
|
43
|
+
info: {
|
|
44
|
+
fg: 'var(--fgColor-accent, #0969da)',
|
|
45
|
+
hoverBg: 'rgba(9, 105, 218, 0.14)',
|
|
46
|
+
},
|
|
47
|
+
success: {
|
|
48
|
+
fg: 'var(--fgColor-success, #1a7f37)',
|
|
49
|
+
hoverBg: 'rgba(26, 127, 55, 0.14)',
|
|
50
|
+
},
|
|
51
|
+
warning: {
|
|
52
|
+
fg: 'var(--fgColor-attention, #9a6700)',
|
|
53
|
+
hoverBg: 'rgba(154, 103, 0, 0.16)',
|
|
54
|
+
},
|
|
55
|
+
error: {
|
|
56
|
+
fg: 'var(--fgColor-danger, #cf222e)',
|
|
57
|
+
hoverBg: 'rgba(207, 34, 46, 0.14)',
|
|
58
|
+
},
|
|
59
|
+
danger: {
|
|
60
|
+
fg: 'var(--fgColor-danger, #cf222e)',
|
|
61
|
+
hoverBg: 'rgba(207, 34, 46, 0.14)',
|
|
62
|
+
},
|
|
63
|
+
};
|
|
64
|
+
const closedTransforms = {
|
|
65
|
+
north: 'translateY(-100%)',
|
|
66
|
+
south: 'translateY(100%)',
|
|
67
|
+
west: 'translateX(-100%)',
|
|
68
|
+
east: 'translateX(100%)',
|
|
69
|
+
};
|
|
70
|
+
const edgeBorderStyles = {
|
|
71
|
+
north: {
|
|
72
|
+
borderTop: '0',
|
|
73
|
+
borderRight: '0',
|
|
74
|
+
borderBottom: '1px solid',
|
|
75
|
+
borderLeft: '0',
|
|
76
|
+
},
|
|
77
|
+
south: {
|
|
78
|
+
borderTop: '1px solid',
|
|
79
|
+
borderRight: '0',
|
|
80
|
+
borderBottom: '0',
|
|
81
|
+
borderLeft: '0',
|
|
82
|
+
},
|
|
83
|
+
west: {
|
|
84
|
+
borderTop: '0',
|
|
85
|
+
borderRight: '1px solid',
|
|
86
|
+
borderBottom: '0',
|
|
87
|
+
borderLeft: '0',
|
|
88
|
+
},
|
|
89
|
+
east: {
|
|
90
|
+
borderTop: '0',
|
|
91
|
+
borderRight: '0',
|
|
92
|
+
borderBottom: '0',
|
|
93
|
+
borderLeft: '1px solid',
|
|
94
|
+
},
|
|
95
|
+
};
|
|
96
|
+
export const SlidingPanel = ({ isOpen, message, details, onDismiss, position = 'north', variant = 'default', durationMs, transitionMs = 260, zIndex = 200, offset = 0, panelSize = 360, fullWidth = true, }) => {
|
|
97
|
+
const [isMounted, setIsMounted] = useState(isOpen);
|
|
98
|
+
const [isVisible, setIsVisible] = useState(isOpen);
|
|
99
|
+
useEffect(() => {
|
|
100
|
+
if (isOpen) {
|
|
101
|
+
setIsMounted(true);
|
|
102
|
+
const showTimer = window.setTimeout(() => setIsVisible(true), 10);
|
|
103
|
+
return () => window.clearTimeout(showTimer);
|
|
104
|
+
}
|
|
105
|
+
setIsVisible(false);
|
|
106
|
+
const hideTimer = window.setTimeout(() => setIsMounted(false), transitionMs);
|
|
107
|
+
return () => window.clearTimeout(hideTimer);
|
|
108
|
+
}, [isOpen, transitionMs]);
|
|
109
|
+
useEffect(() => {
|
|
110
|
+
if (!isOpen || !onDismiss) {
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
if (durationMs === undefined || durationMs <= 0) {
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
116
|
+
const timer = window.setTimeout(() => {
|
|
117
|
+
onDismiss();
|
|
118
|
+
}, durationMs);
|
|
119
|
+
return () => {
|
|
120
|
+
window.clearTimeout(timer);
|
|
121
|
+
};
|
|
122
|
+
}, [isOpen, durationMs, onDismiss]);
|
|
123
|
+
const anchorStyles = useMemo(() => {
|
|
124
|
+
if (position === 'north') {
|
|
125
|
+
return {
|
|
126
|
+
top: offset,
|
|
127
|
+
left: 0,
|
|
128
|
+
right: 0,
|
|
129
|
+
justifyContent: 'center',
|
|
130
|
+
alignItems: 'flex-start',
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
if (position === 'south') {
|
|
134
|
+
return {
|
|
135
|
+
bottom: offset,
|
|
136
|
+
left: 0,
|
|
137
|
+
right: 0,
|
|
138
|
+
justifyContent: 'center',
|
|
139
|
+
alignItems: 'flex-end',
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
if (position === 'west') {
|
|
143
|
+
return {
|
|
144
|
+
left: offset,
|
|
145
|
+
top: 0,
|
|
146
|
+
bottom: 0,
|
|
147
|
+
justifyContent: 'flex-start',
|
|
148
|
+
alignItems: 'stretch',
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
return {
|
|
152
|
+
right: offset,
|
|
153
|
+
top: 0,
|
|
154
|
+
bottom: 0,
|
|
155
|
+
justifyContent: 'flex-end',
|
|
156
|
+
alignItems: 'stretch',
|
|
157
|
+
};
|
|
158
|
+
}, [position, offset]);
|
|
159
|
+
if (!isMounted) {
|
|
160
|
+
return null;
|
|
161
|
+
}
|
|
162
|
+
const style = variantStyles[variant];
|
|
163
|
+
const closeStyle = closeButtonStyles[variant];
|
|
164
|
+
const horizontal = position === 'north' || position === 'south';
|
|
165
|
+
const edgeBorder = edgeBorderStyles[position];
|
|
166
|
+
return (_jsx(Box, { sx: {
|
|
167
|
+
position: 'fixed',
|
|
168
|
+
zIndex,
|
|
169
|
+
display: 'flex',
|
|
170
|
+
pointerEvents: 'none',
|
|
171
|
+
...anchorStyles,
|
|
172
|
+
}, children: _jsxs(Box, { role: variant === 'error' || variant === 'danger' ? 'alert' : 'status', "aria-live": variant === 'error' || variant === 'danger' ? 'assertive' : 'polite', onClick: onDismiss, sx: {
|
|
173
|
+
pointerEvents: 'auto',
|
|
174
|
+
position: 'relative',
|
|
175
|
+
display: 'flex',
|
|
176
|
+
alignItems: 'center',
|
|
177
|
+
justifyContent: 'flex-start',
|
|
178
|
+
cursor: onDismiss ? 'pointer' : 'default',
|
|
179
|
+
width: horizontal
|
|
180
|
+
? fullWidth
|
|
181
|
+
? '100vw'
|
|
182
|
+
: 'min(960px, 96vw)'
|
|
183
|
+
: panelSize,
|
|
184
|
+
maxWidth: horizontal ? '100vw' : undefined,
|
|
185
|
+
height: horizontal ? undefined : '100vh',
|
|
186
|
+
maxHeight: horizontal ? undefined : '100vh',
|
|
187
|
+
borderColor: style.border,
|
|
188
|
+
borderTop: edgeBorder.borderTop,
|
|
189
|
+
borderRight: edgeBorder.borderRight,
|
|
190
|
+
borderBottom: edgeBorder.borderBottom,
|
|
191
|
+
borderLeft: edgeBorder.borderLeft,
|
|
192
|
+
backgroundColor: style.bg,
|
|
193
|
+
color: style.fg,
|
|
194
|
+
textAlign: 'left',
|
|
195
|
+
px: 4,
|
|
196
|
+
py: horizontal ? 3 : 4,
|
|
197
|
+
boxShadow: 'shadow.large',
|
|
198
|
+
transform: isVisible ? 'translate(0, 0)' : closedTransforms[position],
|
|
199
|
+
opacity: isVisible ? 1 : 0,
|
|
200
|
+
transition: `transform ${transitionMs}ms ease, opacity ${transitionMs}ms ease`,
|
|
201
|
+
overflow: 'auto',
|
|
202
|
+
}, children: [onDismiss ? (_jsx(Box, { sx: {
|
|
203
|
+
position: 'absolute',
|
|
204
|
+
top: 2,
|
|
205
|
+
right: 3,
|
|
206
|
+
}, children: _jsx(IconButton, { variant: "invisible", icon: XIcon, "aria-label": "Close panel", onClick: event => {
|
|
207
|
+
event.stopPropagation();
|
|
208
|
+
onDismiss();
|
|
209
|
+
}, sx: {
|
|
210
|
+
color: closeStyle.fg,
|
|
211
|
+
borderRadius: 2,
|
|
212
|
+
'&:hover': {
|
|
213
|
+
backgroundColor: closeStyle.hoverBg,
|
|
214
|
+
},
|
|
215
|
+
} }) })) : null, _jsxs(Box, { sx: { width: 'min(980px, 100%)', display: 'grid', gap: 1, pr: onDismiss ? 6 : 0 }, children: [_jsx(Box, { sx: { fontSize: 3, fontWeight: 500, lineHeight: 1.4 }, children: message }), details ? (_jsx(Box, { sx: { fontSize: 1, fontWeight: 400, lineHeight: 1.4, color: 'fg.muted' }, children: details })) : null] })] }) }));
|
|
216
|
+
};
|
|
217
|
+
export default SlidingPanel;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { StoryObj } from '@storybook/react';
|
|
2
|
+
import { type SlidingPanelProps } from './SlidingPanel';
|
|
3
|
+
declare const meta: {
|
|
4
|
+
title: string;
|
|
5
|
+
component: ({ isOpen, message, details, onDismiss, position, variant, durationMs, transitionMs, zIndex, offset, panelSize, fullWidth, }: SlidingPanelProps) => import("react/jsx-runtime").JSX.Element | null;
|
|
6
|
+
tags: string[];
|
|
7
|
+
parameters: {
|
|
8
|
+
layout: string;
|
|
9
|
+
};
|
|
10
|
+
};
|
|
11
|
+
export default meta;
|
|
12
|
+
type Story = StoryObj<typeof meta>;
|
|
13
|
+
export declare const NorthInfo: Story;
|
|
14
|
+
export declare const SouthWarning: Story;
|
|
15
|
+
export declare const EastSuccess: Story;
|
|
16
|
+
export declare const WestError: Story;
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useRef, useState } from 'react';
|
|
3
|
+
import { Box, Button, Heading } from '@primer/react';
|
|
4
|
+
import { SlidingPanel } from './SlidingPanel';
|
|
5
|
+
const meta = {
|
|
6
|
+
title: 'Components/SlidingPanel',
|
|
7
|
+
component: SlidingPanel,
|
|
8
|
+
tags: ['autodocs'],
|
|
9
|
+
parameters: {
|
|
10
|
+
layout: 'fullscreen',
|
|
11
|
+
},
|
|
12
|
+
};
|
|
13
|
+
export default meta;
|
|
14
|
+
const Demo = (props) => {
|
|
15
|
+
const [isOpen, setIsOpen] = useState(false);
|
|
16
|
+
const openButtonRef = useRef(null);
|
|
17
|
+
return (_jsxs(Box, { sx: { p: 4, minHeight: '100vh', bg: 'canvas.default' }, children: [_jsx(Heading, { as: "h2", sx: { fontSize: 3, mb: 3 }, children: "Sliding Panel Demo" }), _jsx(Button, { ref: openButtonRef, onClick: () => setIsOpen(true), children: "Open panel" }), _jsx(SlidingPanel, { ...props, isOpen: isOpen, onDismiss: () => setIsOpen(false) }), isOpen ? (_jsx(Box, { sx: { mt: 3 }, children: _jsx(Button, { size: "small", onClick: () => setIsOpen(false), children: "Close" }) })) : null] }));
|
|
18
|
+
};
|
|
19
|
+
export const NorthInfo = {
|
|
20
|
+
args: {
|
|
21
|
+
isOpen: false,
|
|
22
|
+
message: 'Sliding panel message',
|
|
23
|
+
details: 'Additional details appear below the message in normal font.',
|
|
24
|
+
position: 'north',
|
|
25
|
+
variant: 'info',
|
|
26
|
+
durationMs: 4500,
|
|
27
|
+
fullWidth: true,
|
|
28
|
+
},
|
|
29
|
+
render: args => _jsx(Demo, { ...args }),
|
|
30
|
+
};
|
|
31
|
+
export const SouthWarning = {
|
|
32
|
+
args: {
|
|
33
|
+
isOpen: false,
|
|
34
|
+
message: 'Sliding panel message',
|
|
35
|
+
details: 'Additional details appear below the message in normal font.',
|
|
36
|
+
position: 'south',
|
|
37
|
+
variant: 'warning',
|
|
38
|
+
durationMs: 0,
|
|
39
|
+
fullWidth: true,
|
|
40
|
+
},
|
|
41
|
+
render: args => _jsx(Demo, { ...args }),
|
|
42
|
+
};
|
|
43
|
+
export const EastSuccess = {
|
|
44
|
+
args: {
|
|
45
|
+
isOpen: false,
|
|
46
|
+
message: 'Sliding panel message',
|
|
47
|
+
details: 'Additional details appear below the message in normal font.',
|
|
48
|
+
position: 'east',
|
|
49
|
+
variant: 'success',
|
|
50
|
+
durationMs: 0,
|
|
51
|
+
panelSize: 360,
|
|
52
|
+
fullWidth: false,
|
|
53
|
+
},
|
|
54
|
+
render: args => _jsx(Demo, { ...args }),
|
|
55
|
+
};
|
|
56
|
+
export const WestError = {
|
|
57
|
+
args: {
|
|
58
|
+
isOpen: false,
|
|
59
|
+
message: 'Sliding panel message',
|
|
60
|
+
details: 'Additional details appear below the message in normal font.',
|
|
61
|
+
position: 'west',
|
|
62
|
+
variant: 'error',
|
|
63
|
+
durationMs: 0,
|
|
64
|
+
panelSize: 360,
|
|
65
|
+
fullWidth: false,
|
|
66
|
+
},
|
|
67
|
+
render: args => _jsx(Demo, { ...args }),
|
|
68
|
+
};
|
|
@@ -114,9 +114,9 @@ export function FloatingToolbar({ items, extraItems, anchorElement, isVisible, c
|
|
|
114
114
|
gap: '2px',
|
|
115
115
|
px: 1,
|
|
116
116
|
py: '4px',
|
|
117
|
-
bg: '
|
|
117
|
+
bg: 'var(--overlay-bgColor, var(--bgColor-default))',
|
|
118
118
|
border: '1px solid',
|
|
119
|
-
borderColor: '
|
|
119
|
+
borderColor: 'var(--borderColor-muted, transparent)',
|
|
120
120
|
borderRadius: 2,
|
|
121
121
|
boxShadow: 'shadow.large',
|
|
122
122
|
position: 'absolute',
|
|
@@ -12,6 +12,18 @@ export declare const datalayerColors: {
|
|
|
12
12
|
greenTint: string;
|
|
13
13
|
greenBright: string;
|
|
14
14
|
greenHover: string;
|
|
15
|
+
attentionBrand: string;
|
|
16
|
+
attentionAccent: string;
|
|
17
|
+
attentionTint: string;
|
|
18
|
+
dangerBrand: string;
|
|
19
|
+
dangerAccent: string;
|
|
20
|
+
dangerTint: string;
|
|
21
|
+
severeBrand: string;
|
|
22
|
+
severeAccent: string;
|
|
23
|
+
severeTint: string;
|
|
24
|
+
doneBrand: string;
|
|
25
|
+
doneAccent: string;
|
|
26
|
+
doneTint: string;
|
|
15
27
|
brightGlow: string;
|
|
16
28
|
brightPop: string;
|
|
17
29
|
brightSpark: string;
|
|
@@ -18,6 +18,19 @@ export const datalayerColors = {
|
|
|
18
18
|
greenTint: '#E9F7F1', // Soft background for success / callouts
|
|
19
19
|
greenBright: '#2ECC71', // Highlights and glow on dark backgrounds
|
|
20
20
|
greenHover: '#0E6655', // Primary button hover
|
|
21
|
+
// Semantic roles
|
|
22
|
+
attentionBrand: '#B08800',
|
|
23
|
+
attentionAccent: '#D4A72C',
|
|
24
|
+
attentionTint: '#FFF8C5',
|
|
25
|
+
dangerBrand: '#D1242F',
|
|
26
|
+
dangerAccent: '#FF6A69',
|
|
27
|
+
dangerTint: '#FFE5E5',
|
|
28
|
+
severeBrand: '#BC4C00',
|
|
29
|
+
severeAccent: '#F0883E',
|
|
30
|
+
severeTint: '#FFF1E5',
|
|
31
|
+
doneBrand: '#0969DA',
|
|
32
|
+
doneAccent: '#54AEFF',
|
|
33
|
+
doneTint: '#DDF4FF',
|
|
21
34
|
// Bright / vivid colours for SVG illustrations (OpenAI-blog style)
|
|
22
35
|
brightGlow: '#00D68F', // Ultra-vivid emerald — primary glow
|
|
23
36
|
brightPop: '#00E5FF', // Electric cyan — contrasting accent
|
|
@@ -22,6 +22,18 @@ export declare const earthColors: {
|
|
|
22
22
|
earthWarm: string;
|
|
23
23
|
earthSand: string;
|
|
24
24
|
earthClay: string;
|
|
25
|
+
attentionBrand: string;
|
|
26
|
+
attentionAccent: string;
|
|
27
|
+
attentionTint: string;
|
|
28
|
+
dangerBrand: string;
|
|
29
|
+
dangerAccent: string;
|
|
30
|
+
dangerTint: string;
|
|
31
|
+
severeBrand: string;
|
|
32
|
+
severeAccent: string;
|
|
33
|
+
severeTint: string;
|
|
34
|
+
doneBrand: string;
|
|
35
|
+
doneAccent: string;
|
|
36
|
+
doneTint: string;
|
|
25
37
|
brightGlow: string;
|
|
26
38
|
brightPop: string;
|
|
27
39
|
brightSpark: string;
|
|
@@ -31,6 +31,19 @@ export const earthColors = {
|
|
|
31
31
|
earthWarm: '#92400E', // Red earth / laterite
|
|
32
32
|
earthSand: '#D97706', // Sandstone / amber
|
|
33
33
|
earthClay: '#B45309', // Terracotta
|
|
34
|
+
// Semantic roles
|
|
35
|
+
attentionBrand: '#CA8A04',
|
|
36
|
+
attentionAccent: '#EAB308',
|
|
37
|
+
attentionTint: '#FEF9C3',
|
|
38
|
+
dangerBrand: '#B42318',
|
|
39
|
+
dangerAccent: '#EF4444',
|
|
40
|
+
dangerTint: '#FEE4E2',
|
|
41
|
+
severeBrand: '#B45309',
|
|
42
|
+
severeAccent: '#F59E0B',
|
|
43
|
+
severeTint: '#FFF1DA',
|
|
44
|
+
doneBrand: '#1D4ED8',
|
|
45
|
+
doneAccent: '#3B82F6',
|
|
46
|
+
doneTint: '#DBEAFE',
|
|
34
47
|
// Bright / vivid colours for SVG illustrations
|
|
35
48
|
brightGlow: '#0EA5E9', // Vivid ocean blue — primary glow (sea)
|
|
36
49
|
brightPop: '#22C55E', // Vivid green — contrasting accent (vegetation)
|
|
@@ -3,6 +3,9 @@ export { spatialColors } from './spatialColors';
|
|
|
3
3
|
export { lovelyColors } from './lovelyColors';
|
|
4
4
|
export { matrixColors } from './matrixColors';
|
|
5
5
|
export { earthColors } from './earthColors';
|
|
6
|
+
export { sandColors } from './sandColors';
|
|
7
|
+
export { ivoryColors } from './ivoryColors';
|
|
8
|
+
export { sunColors } from './sunColors';
|
|
6
9
|
import type { ThemeVariant } from '../themeRegistry';
|
|
7
10
|
/**
|
|
8
11
|
* Themed color palettes — maps each `ThemeVariant` to its corresponding
|
|
@@ -7,11 +7,17 @@ export { spatialColors } from './spatialColors';
|
|
|
7
7
|
export { lovelyColors } from './lovelyColors';
|
|
8
8
|
export { matrixColors } from './matrixColors';
|
|
9
9
|
export { earthColors } from './earthColors';
|
|
10
|
+
export { sandColors } from './sandColors';
|
|
11
|
+
export { ivoryColors } from './ivoryColors';
|
|
12
|
+
export { sunColors } from './sunColors';
|
|
10
13
|
import { datalayerColors } from './datalayerColors';
|
|
11
14
|
import { spatialColors } from './spatialColors';
|
|
12
15
|
import { lovelyColors } from './lovelyColors';
|
|
13
16
|
import { matrixColors } from './matrixColors';
|
|
14
17
|
import { earthColors } from './earthColors';
|
|
18
|
+
import { sandColors } from './sandColors';
|
|
19
|
+
import { ivoryColors } from './ivoryColors';
|
|
20
|
+
import { sunColors } from './sunColors';
|
|
15
21
|
/**
|
|
16
22
|
* Themed color palettes — maps each `ThemeVariant` to its corresponding
|
|
17
23
|
* color object so consumers can pick the right palette at runtime.
|
|
@@ -28,4 +34,7 @@ export const themedColors = {
|
|
|
28
34
|
lovely: lovelyColors,
|
|
29
35
|
matrix: matrixColors,
|
|
30
36
|
earth: earthColors,
|
|
37
|
+
sand: sandColors,
|
|
38
|
+
ivory: ivoryColors,
|
|
39
|
+
sun: sunColors,
|
|
31
40
|
};
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ivory Color System – Soft, warm off-white neutrals.
|
|
3
|
+
*
|
|
4
|
+
* Anchored on the light-ivory base #E6D2B5 (R:230 G:210 B:181): a calm,
|
|
5
|
+
* refined, and welcoming palette paired with a deep warm taupe for
|
|
6
|
+
* accessible text. Gentle and editorial, with a hospitable, paper-like
|
|
7
|
+
* warmth. WCAG AA/AAA for text & buttons.
|
|
8
|
+
*/
|
|
9
|
+
export declare const ivoryColors: {
|
|
10
|
+
black: string;
|
|
11
|
+
gray: string;
|
|
12
|
+
white: string;
|
|
13
|
+
ivoryBase: string;
|
|
14
|
+
ivoryBrand: string;
|
|
15
|
+
ivoryAccent: string;
|
|
16
|
+
ivoryText: string;
|
|
17
|
+
ivoryTint: string;
|
|
18
|
+
ivoryBright: string;
|
|
19
|
+
ivoryHover: string;
|
|
20
|
+
attentionBrand: string;
|
|
21
|
+
attentionAccent: string;
|
|
22
|
+
attentionTint: string;
|
|
23
|
+
dangerBrand: string;
|
|
24
|
+
dangerAccent: string;
|
|
25
|
+
dangerTint: string;
|
|
26
|
+
severeBrand: string;
|
|
27
|
+
severeAccent: string;
|
|
28
|
+
severeTint: string;
|
|
29
|
+
doneBrand: string;
|
|
30
|
+
doneAccent: string;
|
|
31
|
+
doneTint: string;
|
|
32
|
+
brightGlow: string;
|
|
33
|
+
brightPop: string;
|
|
34
|
+
brightSpark: string;
|
|
35
|
+
brightBlaze: string;
|
|
36
|
+
brightSurge: string;
|
|
37
|
+
brightFlame: string;
|
|
38
|
+
brightGold: string;
|
|
39
|
+
brightLightGlow: string;
|
|
40
|
+
brightLightPop: string;
|
|
41
|
+
brightLightSpark: string;
|
|
42
|
+
brightLightBlaze: string;
|
|
43
|
+
brightLightSurge: string;
|
|
44
|
+
brightLightFlame: string;
|
|
45
|
+
brightLightGold: string;
|
|
46
|
+
};
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2023-2025 Datalayer, Inc.
|
|
3
|
+
* Distributed under the terms of the Modified BSD License.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Ivory Color System – Soft, warm off-white neutrals.
|
|
7
|
+
*
|
|
8
|
+
* Anchored on the light-ivory base #E6D2B5 (R:230 G:210 B:181): a calm,
|
|
9
|
+
* refined, and welcoming palette paired with a deep warm taupe for
|
|
10
|
+
* accessible text. Gentle and editorial, with a hospitable, paper-like
|
|
11
|
+
* warmth. WCAG AA/AAA for text & buttons.
|
|
12
|
+
*/
|
|
13
|
+
export const ivoryColors = {
|
|
14
|
+
// Core Neutrals — warm, soft
|
|
15
|
+
black: '#211C15', // Warm espresso — primary dark background
|
|
16
|
+
gray: '#6F6353', // Warm taupe — secondary text
|
|
17
|
+
white: '#FBF6EC', // Soft ivory — primary light background
|
|
18
|
+
// Ivory palette (Brand) — anchored on the base #E6D2B5
|
|
19
|
+
ivoryBase: '#E6D2B5', // Base color — light ivory
|
|
20
|
+
ivoryBrand: '#E6D2B5', // Brand / swatch — light ivory
|
|
21
|
+
ivoryAccent: '#D8C09B', // Deeper ivory — charts, highlights on dark surfaces
|
|
22
|
+
ivoryText: '#6B5A3E', // Deep warm taupe — accessible buttons & text on ivory (AA+)
|
|
23
|
+
ivoryTint: '#F3E9D6', // Pale ivory — soft background for callouts
|
|
24
|
+
ivoryBright: '#EFDFC2', // Bright ivory — highlights on dark backgrounds
|
|
25
|
+
ivoryHover: '#52442D', // Dark taupe — primary button hover
|
|
26
|
+
// Semantic roles — kept warm & refined
|
|
27
|
+
attentionBrand: '#8A7320',
|
|
28
|
+
attentionAccent: '#CBAA35',
|
|
29
|
+
attentionTint: '#F4ECCD',
|
|
30
|
+
dangerBrand: '#A34632',
|
|
31
|
+
dangerAccent: '#CE6047',
|
|
32
|
+
dangerTint: '#F5DFD8',
|
|
33
|
+
severeBrand: '#9C6221',
|
|
34
|
+
severeAccent: '#CE8637',
|
|
35
|
+
severeTint: '#F4E6D2',
|
|
36
|
+
doneBrand: '#6A5591',
|
|
37
|
+
doneAccent: '#8B72B2',
|
|
38
|
+
doneTint: '#EAE3F3',
|
|
39
|
+
// Bright / vivid colours for SVG illustrations (warm, luminous)
|
|
40
|
+
brightGlow: '#E6D2B5', // Ivory glow — primary glow (the base)
|
|
41
|
+
brightPop: '#D8B27E', // Warm tan — contrasting accent
|
|
42
|
+
brightSpark: '#EFDFC2', // Bright ivory — sparkle / tertiary
|
|
43
|
+
brightBlaze: '#DD7048', // Soft terracotta — warm accent
|
|
44
|
+
brightSurge: '#98A783', // Sage — cool accent
|
|
45
|
+
// Warm vivid colours — amber & gold accents
|
|
46
|
+
brightFlame: '#E0912F', // Amber — warm energy
|
|
47
|
+
brightGold: '#EACF6A', // Soft gold — highlight
|
|
48
|
+
// Vivid brights for light backgrounds — deeper for contrast on ivory
|
|
49
|
+
brightLightGlow: '#6B5A3E', // Deep taupe
|
|
50
|
+
brightLightPop: '#9C6626', // Deep amber-tan
|
|
51
|
+
brightLightSpark: '#8A7320', // Deep gold
|
|
52
|
+
brightLightBlaze: '#AB4229', // Deep terracotta
|
|
53
|
+
brightLightSurge: '#5C6C4C', // Deep sage
|
|
54
|
+
brightLightFlame: '#9C6221', // Deep amber
|
|
55
|
+
brightLightGold: '#836A18', // Deep gold
|
|
56
|
+
};
|
|
@@ -12,6 +12,18 @@ export declare const lovelyColors: {
|
|
|
12
12
|
roseTint: string;
|
|
13
13
|
roseBright: string;
|
|
14
14
|
roseHover: string;
|
|
15
|
+
attentionBrand: string;
|
|
16
|
+
attentionAccent: string;
|
|
17
|
+
attentionTint: string;
|
|
18
|
+
dangerBrand: string;
|
|
19
|
+
dangerAccent: string;
|
|
20
|
+
dangerTint: string;
|
|
21
|
+
severeBrand: string;
|
|
22
|
+
severeAccent: string;
|
|
23
|
+
severeTint: string;
|
|
24
|
+
doneBrand: string;
|
|
25
|
+
doneAccent: string;
|
|
26
|
+
doneTint: string;
|
|
15
27
|
brightGlow: string;
|
|
16
28
|
brightPop: string;
|
|
17
29
|
brightSpark: string;
|
|
@@ -18,6 +18,19 @@ export const lovelyColors = {
|
|
|
18
18
|
roseTint: '#FDF2F8', // Soft background for callouts
|
|
19
19
|
roseBright: '#F472B6', // Highlights & glow on dark
|
|
20
20
|
roseHover: '#831843', // Primary button hover
|
|
21
|
+
// Semantic roles
|
|
22
|
+
attentionBrand: '#B7791F',
|
|
23
|
+
attentionAccent: '#F6AD55',
|
|
24
|
+
attentionTint: '#FFF5E6',
|
|
25
|
+
dangerBrand: '#D61F69',
|
|
26
|
+
dangerAccent: '#FF5C8A',
|
|
27
|
+
dangerTint: '#FFE6EF',
|
|
28
|
+
severeBrand: '#C05621',
|
|
29
|
+
severeAccent: '#ED8936',
|
|
30
|
+
severeTint: '#FFF1E8',
|
|
31
|
+
doneBrand: '#805AD5',
|
|
32
|
+
doneAccent: '#B794F4',
|
|
33
|
+
doneTint: '#F3E8FF',
|
|
21
34
|
// Bright / vivid colours for SVG illustrations (OpenAI-blog style)
|
|
22
35
|
brightGlow: '#FF4081', // Hot pink — primary glow
|
|
23
36
|
brightPop: '#FF6E40', // Vivid coral — contrasting accent
|
|
@@ -17,6 +17,18 @@ export declare const matrixColors: {
|
|
|
17
17
|
greenGlow: string;
|
|
18
18
|
greenHover: string;
|
|
19
19
|
greenTerminal: string;
|
|
20
|
+
attentionBrand: string;
|
|
21
|
+
attentionAccent: string;
|
|
22
|
+
attentionTint: string;
|
|
23
|
+
dangerBrand: string;
|
|
24
|
+
dangerAccent: string;
|
|
25
|
+
dangerTint: string;
|
|
26
|
+
severeBrand: string;
|
|
27
|
+
severeAccent: string;
|
|
28
|
+
severeTint: string;
|
|
29
|
+
doneBrand: string;
|
|
30
|
+
doneAccent: string;
|
|
31
|
+
doneTint: string;
|
|
20
32
|
brightGlow: string;
|
|
21
33
|
brightPop: string;
|
|
22
34
|
brightSpark: string;
|
|
@@ -23,6 +23,19 @@ export const matrixColors = {
|
|
|
23
23
|
greenGlow: '#39FF14', // Neon phosphor glow — brightest accent on dark
|
|
24
24
|
greenHover: '#0E6655', // Datalayer hover — primary button hover
|
|
25
25
|
greenTerminal: '#003B00', // Deep terminal — dark mode subtle/canvas
|
|
26
|
+
// Semantic roles
|
|
27
|
+
attentionBrand: '#A78E00',
|
|
28
|
+
attentionAccent: '#FFEA00',
|
|
29
|
+
attentionTint: '#3A3400',
|
|
30
|
+
dangerBrand: '#C62828',
|
|
31
|
+
dangerAccent: '#FF1744',
|
|
32
|
+
dangerTint: '#3A0F16',
|
|
33
|
+
severeBrand: '#C75B12',
|
|
34
|
+
severeAccent: '#FF8A00',
|
|
35
|
+
severeTint: '#332000',
|
|
36
|
+
doneBrand: '#008B8B',
|
|
37
|
+
doneAccent: '#00E5FF',
|
|
38
|
+
doneTint: '#042A2E',
|
|
26
39
|
// Bright / vivid colours for SVG illustrations (OpenAI-blog style)
|
|
27
40
|
brightGlow: '#39FF14', // Neon green — primary glow (re-stated for palette API)
|
|
28
41
|
brightPop: '#00FF88', // Phosphor cyan — contrasting accent
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sand Color System – Warm golden desert neutrals.
|
|
3
|
+
*
|
|
4
|
+
* Anchored on the golden-wheat base #E2CA76: sun-bleached dunes paired
|
|
5
|
+
* with deep ochre for accessible text. A calm, editorial, earthy feel
|
|
6
|
+
* with an Anthropic-like book warmth. WCAG AA/AAA for text & buttons.
|
|
7
|
+
*/
|
|
8
|
+
export declare const sandColors: {
|
|
9
|
+
black: string;
|
|
10
|
+
gray: string;
|
|
11
|
+
white: string;
|
|
12
|
+
sandBase: string;
|
|
13
|
+
sandBrand: string;
|
|
14
|
+
sandAccent: string;
|
|
15
|
+
sandText: string;
|
|
16
|
+
sandTint: string;
|
|
17
|
+
sandBright: string;
|
|
18
|
+
sandHover: string;
|
|
19
|
+
attentionBrand: string;
|
|
20
|
+
attentionAccent: string;
|
|
21
|
+
attentionTint: string;
|
|
22
|
+
dangerBrand: string;
|
|
23
|
+
dangerAccent: string;
|
|
24
|
+
dangerTint: string;
|
|
25
|
+
severeBrand: string;
|
|
26
|
+
severeAccent: string;
|
|
27
|
+
severeTint: string;
|
|
28
|
+
doneBrand: string;
|
|
29
|
+
doneAccent: string;
|
|
30
|
+
doneTint: string;
|
|
31
|
+
brightGlow: string;
|
|
32
|
+
brightPop: string;
|
|
33
|
+
brightSpark: string;
|
|
34
|
+
brightBlaze: string;
|
|
35
|
+
brightSurge: string;
|
|
36
|
+
brightFlame: string;
|
|
37
|
+
brightGold: string;
|
|
38
|
+
brightLightGlow: string;
|
|
39
|
+
brightLightPop: string;
|
|
40
|
+
brightLightSpark: string;
|
|
41
|
+
brightLightBlaze: string;
|
|
42
|
+
brightLightSurge: string;
|
|
43
|
+
brightLightFlame: string;
|
|
44
|
+
brightLightGold: string;
|
|
45
|
+
};
|