@svgrid/grid 2.0.2 → 2.1.1

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.
@@ -0,0 +1,159 @@
1
+ /**
2
+ * SvGrid's built-in design-system theme presets (shadcn/ui, Tailwind, Material 3,
3
+ * Excel, Fluent 2, ...). Each preset carries an explicit light + dark palette;
4
+ * resolving one (plus a light/dark mode) yields the full `--sg-*` token set that
5
+ * restyles the whole grid - not just the accent.
6
+ *
7
+ * Pure, framework-agnostic data + helpers - safe to import from Node or the
8
+ * browser. `@svgrid/enterprise`'s Studio layer builds its `ProjectTheme`-aware
9
+ * wrapper on top of this module instead of keeping its own copy.
10
+ */
11
+
12
+ export type ThemeMode = 'light' | 'dark'
13
+
14
+ /** The core palette for one mode. */
15
+ export type ThemePalette = {
16
+ bg: string; fg: string; muted: string; border: string
17
+ headerBg: string; headerFg: string; accent: string
18
+ rowAlt: string; rowHover: string; selectionBg: string
19
+ }
20
+
21
+ export type ThemePreset = {
22
+ /** Stable id, e.g. used as a CSS file name (`themes/<id>.css`). */
23
+ id: string
24
+ /** Display name shown on a theme picker. */
25
+ name: string
26
+ /** Control corner rounding (px). */
27
+ radius: number
28
+ /** Font stack applied to the app surface. */
29
+ font: string
30
+ light: ThemePalette
31
+ dark: ThemePalette
32
+ }
33
+
34
+ /** The built-in theme presets, in gallery order (default first). */
35
+ export const themePresets: ThemePreset[] = [
36
+ { id: 'shadcn', name: 'shadcn/ui', radius: 6, font: 'ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif',
37
+ light: { bg: '#ffffff', fg: '#09090b', muted: '#71717a', border: '#e4e4e7', headerBg: '#fafafa', headerFg: '#71717a', accent: '#18181b', rowAlt: '#ffffff', rowHover: '#f4f4f5', selectionBg: '#f4f4f5' },
38
+ dark: { bg: '#0a0a0a', fg: '#fafafa', muted: '#a1a1aa', border: '#27272a', headerBg: '#18181b', headerFg: '#a1a1aa', accent: '#fafafa', rowAlt: '#0a0a0a', rowHover: '#18181b', selectionBg: '#27272a' } },
39
+ { id: 'tailwind', name: 'Tailwind', radius: 6, font: 'Inter, ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif',
40
+ light: { bg: '#ffffff', fg: '#0f172a', muted: '#64748b', border: '#e2e8f0', headerBg: '#f8fafc', headerFg: '#0f172a', accent: '#4f46e5', rowAlt: '#ffffff', rowHover: '#f1f5f9', selectionBg: '#e0e7ff' },
41
+ dark: { bg: '#0f172a', fg: '#f8fafc', muted: '#94a3b8', border: '#334155', headerBg: '#1e293b', headerFg: '#f8fafc', accent: '#818cf8', rowAlt: '#0f172a', rowHover: '#1e293b', selectionBg: '#312e81' } },
42
+ { id: 'material', name: 'Material 3', radius: 8, font: '"Roboto Flex", Roboto, "Segoe UI", system-ui, sans-serif',
43
+ light: { bg: '#fef7ff', fg: '#1d1b20', muted: '#49454f', border: '#cac4d0', headerBg: '#f3edf7', headerFg: '#1d1b20', accent: '#6750a4', rowAlt: '#fffbfe', rowHover: '#ece6f0', selectionBg: '#e8def8' },
44
+ dark: { bg: '#141218', fg: '#e6e0e9', muted: '#cac4d0', border: '#49454f', headerBg: '#211f26', headerFg: '#e6e0e9', accent: '#d0bcff', rowAlt: '#141218', rowHover: '#2b2930', selectionBg: '#4a4458' } },
45
+ { id: 'excel', name: 'Excel', radius: 0, font: '"Aptos", "Segoe UI", Calibri, Arial, sans-serif',
46
+ light: { bg: '#ffffff', fg: '#323130', muted: '#605e5c', border: '#d2d0ce', headerBg: '#f3f2f1', headerFg: '#444444', accent: '#107c41', rowAlt: '#ffffff', rowHover: '#edebe9', selectionBg: 'rgba(16, 124, 65, 0.10)' },
47
+ dark: { bg: '#1b1a19', fg: '#f3f2f1', muted: '#c8c6c4', border: '#3b3a39', headerBg: '#252423', headerFg: '#c8c6c4', accent: '#58c188', rowAlt: '#1b1a19', rowHover: '#323130', selectionBg: 'rgba(88, 193, 136, 0.16)' } },
48
+ { id: 'fluent', name: 'Fluent 2', radius: 4, font: '"Segoe UI Variable", "Segoe UI", system-ui, sans-serif',
49
+ light: { bg: '#ffffff', fg: '#242424', muted: '#616161', border: '#e0e0e0', headerBg: '#f5f5f5', headerFg: '#242424', accent: '#0f6cbd', rowAlt: '#fafafa', rowHover: '#f0f0f0', selectionBg: '#ebebeb' },
50
+ dark: { bg: '#1f1f1f', fg: '#ffffff', muted: '#d6d6d6', border: '#666666', headerBg: '#141414', headerFg: '#ffffff', accent: '#479ef5', rowAlt: '#1a1a1a', rowHover: '#3d3d3d', selectionBg: '#383838' } },
51
+ { id: 'carbon', name: 'Carbon', radius: 0, font: '"IBM Plex Sans", "Helvetica Neue", Arial, sans-serif',
52
+ light: { bg: '#ffffff', fg: '#161616', muted: '#525252', border: '#e0e0e0', headerBg: '#e0e0e0', headerFg: '#161616', accent: '#0f62fe', rowAlt: '#f4f4f4', rowHover: '#e8e8e8', selectionBg: '#d0e2ff' },
53
+ dark: { bg: '#161616', fg: '#f4f4f4', muted: '#c6c6c6', border: '#393939', headerBg: '#393939', headerFg: '#f4f4f4', accent: '#78a9ff', rowAlt: '#262626', rowHover: '#333333', selectionBg: '#393939' } },
54
+ { id: 'sap', name: 'SAP Fiori', radius: 6, font: '"72", "72full", "Arial", sans-serif',
55
+ light: { bg: '#f5f6f7', fg: '#131e29', muted: '#556b82', border: '#e5e5e5', headerBg: '#ffffff', headerFg: '#131e29', accent: '#0070f2', rowAlt: '#f5f6f7', rowHover: '#eaecee', selectionBg: '#ebf8ff' },
56
+ dark: { bg: '#12171c', fg: '#f5f6f7', muted: '#8396a8', border: '#2e3742', headerBg: '#1d232a', headerFg: '#f5f6f7', accent: '#4db1ff', rowAlt: '#12171c', rowHover: '#222b35', selectionBg: '#1d2d3e' } },
57
+ { id: 'salesforce', name: 'Salesforce', radius: 4, font: '"Salesforce Sans", "SF Pro", Helvetica, Arial, sans-serif',
58
+ light: { bg: '#ffffff', fg: '#181818', muted: '#757575', border: '#c9c9c9', headerBg: '#f3f3f3', headerFg: '#181818', accent: '#0176d3', rowAlt: '#ffffff', rowHover: '#f3f3f3', selectionBg: '#ecebea' },
59
+ dark: { bg: '#181818', fg: '#ffffff', muted: '#c9c9c9', border: '#3e3e3c', headerBg: '#2e2e2e', headerFg: '#ffffff', accent: '#1b96ff', rowAlt: '#181818', rowHover: '#2e2e2e', selectionBg: '#1e4d8e' } },
60
+ { id: 'atlassian', name: 'Atlassian', radius: 3, font: '"Charlie Display", "Atlassian Sans", -apple-system, "Segoe UI", sans-serif',
61
+ light: { bg: '#ffffff', fg: '#172b4d', muted: '#44546f', border: '#dcdfe4', headerBg: '#fafbfc', headerFg: '#44546f', accent: '#0c66e4', rowAlt: '#ffffff', rowHover: '#f1f2f4', selectionBg: '#e9f2ff' },
62
+ dark: { bg: '#1d2125', fg: '#b6c2cf', muted: '#8590a2', border: '#38414a', headerBg: '#22272b', headerFg: '#8590a2', accent: '#579dff', rowAlt: '#1d2125', rowHover: '#2c333a', selectionBg: '#09326c' } },
63
+ { id: 'github', name: 'GitHub', radius: 6, font: '-apple-system, BlinkMacSystemFont, "Segoe UI", "Noto Sans", Helvetica, Arial, sans-serif',
64
+ light: { bg: '#ffffff', fg: '#1f2328', muted: '#59636e', border: '#d1d9e0', headerBg: '#f6f8fa', headerFg: '#59636e', accent: '#0969da', rowAlt: '#ffffff', rowHover: '#f6f8fa', selectionBg: '#ddf4ff' },
65
+ dark: { bg: '#0d1117', fg: '#f0f6fc', muted: '#9198a1', border: '#3d444d', headerBg: '#151b23', headerFg: '#9198a1', accent: '#4493f8', rowAlt: '#0d1117', rowHover: '#151b23', selectionBg: 'rgba(56, 139, 253, 0.10)' } },
66
+ { id: 'antd', name: 'Ant Design', radius: 6, font: '-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "PingFang SC", sans-serif',
67
+ light: { bg: '#ffffff', fg: 'rgba(0, 0, 0, 0.88)', muted: 'rgba(0, 0, 0, 0.65)', border: '#d9d9d9', headerBg: '#fafafa', headerFg: 'rgba(0, 0, 0, 0.88)', accent: '#1677ff', rowAlt: '#ffffff', rowHover: '#f5f5f5', selectionBg: '#e6f4ff' },
68
+ dark: { bg: '#141414', fg: 'rgba(255, 255, 255, 0.85)', muted: 'rgba(255, 255, 255, 0.65)', border: '#424242', headerBg: '#1f1f1f', headerFg: 'rgba(255, 255, 255, 0.85)', accent: '#177ddc', rowAlt: '#141414', rowHover: '#262626', selectionBg: '#111a2c' } },
69
+ { id: 'ag-alpine', name: 'Alpine', radius: 3, font: '-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif',
70
+ light: { bg: '#ffffff', fg: '#181d1f', muted: 'rgba(24, 29, 31, 0.5)', border: '#babfc7', headerBg: '#f8f8f8', headerFg: '#181d1f', accent: '#2196f3', rowAlt: '#fcfcfc', rowHover: 'rgba(33, 150, 243, 0.1)', selectionBg: 'rgba(33, 150, 243, 0.3)' },
71
+ dark: { bg: '#181d1f', fg: '#ffffff', muted: 'rgba(255, 255, 255, 0.5)', border: '#68686e', headerBg: '#222628', headerFg: '#ffffff', accent: '#2196f3', rowAlt: '#222628', rowHover: 'rgba(33, 150, 243, 0.1)', selectionBg: 'rgba(33, 150, 243, 0.3)' } },
72
+ { id: 'bootstrap', name: 'Bootstrap 5', radius: 6, font: 'system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif',
73
+ light: { bg: '#ffffff', fg: '#212529', muted: '#6c757d', border: '#dee2e6', headerBg: '#f8f9fa', headerFg: '#212529', accent: '#0d6efd', rowAlt: '#fcfcfd', rowHover: '#f2f2f2', selectionBg: '#cfe2ff' },
74
+ dark: { bg: '#212529', fg: '#dee2e6', muted: '#adb5bd', border: '#495057', headerBg: '#2b3035', headerFg: '#dee2e6', accent: '#0d6efd', rowAlt: '#25292e', rowHover: '#2c3034', selectionBg: '#031633' } },
75
+ { id: 'vercel', name: 'Vercel', radius: 6, font: '"Geist", "Geist Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif',
76
+ light: { bg: '#ffffff', fg: '#000000', muted: '#666666', border: '#eaeaea', headerBg: '#fafafa', headerFg: '#666666', accent: '#0070f3', rowAlt: '#fafafa', rowHover: '#f5f5f5', selectionBg: '#e8f0fe' },
77
+ dark: { bg: '#000000', fg: '#ffffff', muted: '#888888', border: '#333333', headerBg: '#111111', headerFg: '#888888', accent: '#3291ff', rowAlt: '#0a0a0a', rowHover: '#1a1a1a', selectionBg: '#0d2847' } },
78
+ { id: 'linear', name: 'Linear', radius: 6, font: '"Inter Variable", "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif',
79
+ light: { bg: '#ffffff', fg: '#282a30', muted: '#6b6f76', border: '#e9e9eb', headerBg: '#f7f8f8', headerFg: '#6b6f76', accent: '#5e6ad2', rowAlt: '#fbfbfc', rowHover: '#f4f4f5', selectionBg: '#e8eafd' },
80
+ dark: { bg: '#08090a', fg: '#f7f8f8', muted: '#8a8f98', border: '#23252a', headerBg: '#0f1011', headerFg: '#8a8f98', accent: '#5e6ad2', rowAlt: '#0f1011', rowHover: '#1a1b1e', selectionBg: '#2a2d4a' } },
81
+ { id: 'notion', name: 'Notion', radius: 4, font: 'ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif',
82
+ light: { bg: '#ffffff', fg: '#37352f', muted: '#787774', border: '#e9e9e7', headerBg: '#f7f6f3', headerFg: '#787774', accent: '#2383e2', rowAlt: '#fbfbfa', rowHover: '#f1f1ef', selectionBg: '#d9eaf7' },
83
+ dark: { bg: '#191919', fg: '#d4d4d4', muted: '#9b9b9b', border: '#2f2f2f', headerBg: '#202020', headerFg: '#9b9b9b', accent: '#529cca', rowAlt: '#1c1c1c', rowHover: '#252525', selectionBg: '#20415c' } },
84
+ { id: 'nord', name: 'Nord', radius: 4, font: '"Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif',
85
+ light: { bg: '#eceff4', fg: '#2e3440', muted: '#4c566a', border: '#d8dee9', headerBg: '#e5e9f0', headerFg: '#2e3440', accent: '#5e81ac', rowAlt: '#e5e9f0', rowHover: '#dde3ec', selectionBg: '#d8dee9' },
86
+ dark: { bg: '#2e3440', fg: '#d8dee9', muted: '#4c566a', border: '#434c5e', headerBg: '#3b4252', headerFg: '#e5e9f0', accent: '#88c0d0', rowAlt: '#333b48', rowHover: '#3b4252', selectionBg: '#434c5e' } },
87
+ { id: 'dracula', name: 'Dracula', radius: 6, font: '-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif',
88
+ light: { bg: '#fffbeb', fg: '#1f1f1f', muted: '#6c664b', border: '#dedccf', headerBg: '#ece9df', headerFg: '#1f1f1f', accent: '#644ac9', rowAlt: '#fffdf5', rowHover: '#f2efe3', selectionBg: '#cfcfde' },
89
+ dark: { bg: '#282a36', fg: '#f8f8f2', muted: '#6272a4', border: '#44475a', headerBg: '#21222c', headerFg: '#f8f8f2', accent: '#bd93f9', rowAlt: '#2d2f3b', rowHover: '#343746', selectionBg: '#44475a' } },
90
+ { id: 'catppuccin', name: 'Catppuccin', radius: 8, font: '"Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif',
91
+ light: { bg: '#eff1f5', fg: '#4c4f69', muted: '#6c6f85', border: '#ccd0da', headerBg: '#e6e9ef', headerFg: '#4c4f69', accent: '#8839ef', rowAlt: '#e6e9ef', rowHover: '#dce0e8', selectionBg: '#dce0e8' },
92
+ dark: { bg: '#1e1e2e', fg: '#cdd6f4', muted: '#a6adc8', border: '#313244', headerBg: '#181825', headerFg: '#cdd6f4', accent: '#cba6f7', rowAlt: '#1a1a28', rowHover: '#313244', selectionBg: '#45475a' } },
93
+ ]
94
+
95
+ /** The default preset (used when nothing is chosen). */
96
+ export const defaultThemePreset: ThemePreset = themePresets.find((t) => t.id === 'tailwind') ?? themePresets[0]!
97
+
98
+ /** Look up a preset by id. */
99
+ export const getThemePreset = (id?: string): ThemePreset | undefined =>
100
+ id ? themePresets.find((t) => t.id === id) : undefined
101
+
102
+ /** A readable (near-black / white) foreground for text placed on the accent. */
103
+ function onAccent(accent: string): string {
104
+ const m = /^#?([0-9a-f]{6})$/i.exec(accent.trim())
105
+ if (!m) return '#ffffff'
106
+ const n = parseInt(m[1]!, 16)
107
+ const r = (n >> 16) & 255, g = (n >> 8) & 255, b = n & 255
108
+ // Perceived luminance (sRGB, quick approximation).
109
+ const lum = (0.299 * r + 0.587 * g + 0.114 * b) / 255
110
+ return lum > 0.6 ? '#18181b' : '#ffffff'
111
+ }
112
+
113
+ /** Resolve the effective `--sg-*` tokens for a preset in a given mode, with an
114
+ * optional accent override applied. */
115
+ export function resolveThemeTokens(preset: ThemePreset | undefined, mode: ThemeMode, accentOverride?: string): Record<string, string> {
116
+ const resolved = preset ?? defaultThemePreset
117
+ const p = resolved[mode]
118
+ const accent = accentOverride || p.accent
119
+ return {
120
+ '--sg-bg': p.bg,
121
+ '--sg-fg': p.fg,
122
+ '--sg-muted': p.muted,
123
+ '--sg-border': p.border,
124
+ '--sg-header-bg': p.headerBg,
125
+ '--sg-header-fg': p.headerFg,
126
+ // A subtle inset surface (used by e.g. the master-detail region behind the
127
+ // nested grid). Themed so it isn't a fixed light grey on dark presets.
128
+ '--sg-bg-subtle': p.headerBg,
129
+ '--sg-row-alt-bg': p.rowAlt,
130
+ '--sg-row-hover-bg': p.rowHover,
131
+ '--sg-selection-bg': p.selectionBg,
132
+ // Inputs/checkboxes: pin to the theme's own surface so they never borrow the
133
+ // host page's input tokens (which is how a themed grid ended up with dark
134
+ // checkboxes on a light page when the host mode differed).
135
+ '--sg-input-bg': p.bg,
136
+ '--sg-input-border': p.border,
137
+ '--sg-accent': accent,
138
+ '--sg-on-accent': onAccent(accent),
139
+ '--sg-radius': `${resolved.radius}px`,
140
+ '--sg-font': resolved.font,
141
+ // The grid's custom scrollbar is a shadow-DOM web component that reads its
142
+ // OWN --sg-scrollbar-* tokens (with fixed light-mode fallbacks). Without
143
+ // these it ignores the theme entirely - a light scrollbar left on a dark
144
+ // grid. CSS custom properties pierce shadow DOM, so defining them here (on
145
+ // the themed container) reaches the scrollbar. Derive them from the palette
146
+ // so the scrollbar tracks the preset + light/dark mode like everything else.
147
+ '--sg-scrollbar-bg': p.headerBg,
148
+ '--sg-scrollbar-border': p.border,
149
+ '--sg-scrollbar-thumb': p.muted,
150
+ '--sg-scrollbar-thumb-hover': p.fg,
151
+ '--sg-scrollbar-thumb-active': p.fg,
152
+ '--sg-scrollbar-arrow': p.muted,
153
+ '--sg-scrollbar-arrow-hover': p.fg,
154
+ '--sg-scrollbar-arrow-hover-bg': p.rowHover,
155
+ '--sg-scrollbar-arrow-active': p.fg,
156
+ '--sg-scrollbar-arrow-active-bg': p.selectionBg,
157
+ '--sg-scrollbar-arrow-disabled': p.border,
158
+ }
159
+ }
@@ -0,0 +1,59 @@
1
+ /* Alpine - generated from packages/grid/src/themes/index.ts. Do not edit by hand. */
2
+ :root {
3
+ --sg-bg: #ffffff;
4
+ --sg-fg: #181d1f;
5
+ --sg-muted: rgba(24, 29, 31, 0.5);
6
+ --sg-border: #babfc7;
7
+ --sg-header-bg: #f8f8f8;
8
+ --sg-header-fg: #181d1f;
9
+ --sg-bg-subtle: #f8f8f8;
10
+ --sg-row-alt-bg: #fcfcfc;
11
+ --sg-row-hover-bg: rgba(33, 150, 243, 0.1);
12
+ --sg-selection-bg: rgba(33, 150, 243, 0.3);
13
+ --sg-input-bg: #ffffff;
14
+ --sg-input-border: #babfc7;
15
+ --sg-accent: #2196f3;
16
+ --sg-on-accent: #ffffff;
17
+ --sg-radius: 3px;
18
+ --sg-font: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
19
+ --sg-scrollbar-bg: #f8f8f8;
20
+ --sg-scrollbar-border: #babfc7;
21
+ --sg-scrollbar-thumb: rgba(24, 29, 31, 0.5);
22
+ --sg-scrollbar-thumb-hover: #181d1f;
23
+ --sg-scrollbar-thumb-active: #181d1f;
24
+ --sg-scrollbar-arrow: rgba(24, 29, 31, 0.5);
25
+ --sg-scrollbar-arrow-hover: #181d1f;
26
+ --sg-scrollbar-arrow-hover-bg: rgba(33, 150, 243, 0.1);
27
+ --sg-scrollbar-arrow-active: #181d1f;
28
+ --sg-scrollbar-arrow-active-bg: rgba(33, 150, 243, 0.3);
29
+ --sg-scrollbar-arrow-disabled: #babfc7;
30
+ }
31
+ :root[data-theme='dark'] {
32
+ --sg-bg: #181d1f;
33
+ --sg-fg: #ffffff;
34
+ --sg-muted: rgba(255, 255, 255, 0.5);
35
+ --sg-border: #68686e;
36
+ --sg-header-bg: #222628;
37
+ --sg-header-fg: #ffffff;
38
+ --sg-bg-subtle: #222628;
39
+ --sg-row-alt-bg: #222628;
40
+ --sg-row-hover-bg: rgba(33, 150, 243, 0.1);
41
+ --sg-selection-bg: rgba(33, 150, 243, 0.3);
42
+ --sg-input-bg: #181d1f;
43
+ --sg-input-border: #68686e;
44
+ --sg-accent: #2196f3;
45
+ --sg-on-accent: #ffffff;
46
+ --sg-radius: 3px;
47
+ --sg-font: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
48
+ --sg-scrollbar-bg: #222628;
49
+ --sg-scrollbar-border: #68686e;
50
+ --sg-scrollbar-thumb: rgba(255, 255, 255, 0.5);
51
+ --sg-scrollbar-thumb-hover: #ffffff;
52
+ --sg-scrollbar-thumb-active: #ffffff;
53
+ --sg-scrollbar-arrow: rgba(255, 255, 255, 0.5);
54
+ --sg-scrollbar-arrow-hover: #ffffff;
55
+ --sg-scrollbar-arrow-hover-bg: rgba(33, 150, 243, 0.1);
56
+ --sg-scrollbar-arrow-active: #ffffff;
57
+ --sg-scrollbar-arrow-active-bg: rgba(33, 150, 243, 0.3);
58
+ --sg-scrollbar-arrow-disabled: #68686e;
59
+ }
@@ -0,0 +1,59 @@
1
+ /* Ant Design - generated from packages/grid/src/themes/index.ts. Do not edit by hand. */
2
+ :root {
3
+ --sg-bg: #ffffff;
4
+ --sg-fg: rgba(0, 0, 0, 0.88);
5
+ --sg-muted: rgba(0, 0, 0, 0.65);
6
+ --sg-border: #d9d9d9;
7
+ --sg-header-bg: #fafafa;
8
+ --sg-header-fg: rgba(0, 0, 0, 0.88);
9
+ --sg-bg-subtle: #fafafa;
10
+ --sg-row-alt-bg: #ffffff;
11
+ --sg-row-hover-bg: #f5f5f5;
12
+ --sg-selection-bg: #e6f4ff;
13
+ --sg-input-bg: #ffffff;
14
+ --sg-input-border: #d9d9d9;
15
+ --sg-accent: #1677ff;
16
+ --sg-on-accent: #ffffff;
17
+ --sg-radius: 6px;
18
+ --sg-font: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "PingFang SC", sans-serif;
19
+ --sg-scrollbar-bg: #fafafa;
20
+ --sg-scrollbar-border: #d9d9d9;
21
+ --sg-scrollbar-thumb: rgba(0, 0, 0, 0.65);
22
+ --sg-scrollbar-thumb-hover: rgba(0, 0, 0, 0.88);
23
+ --sg-scrollbar-thumb-active: rgba(0, 0, 0, 0.88);
24
+ --sg-scrollbar-arrow: rgba(0, 0, 0, 0.65);
25
+ --sg-scrollbar-arrow-hover: rgba(0, 0, 0, 0.88);
26
+ --sg-scrollbar-arrow-hover-bg: #f5f5f5;
27
+ --sg-scrollbar-arrow-active: rgba(0, 0, 0, 0.88);
28
+ --sg-scrollbar-arrow-active-bg: #e6f4ff;
29
+ --sg-scrollbar-arrow-disabled: #d9d9d9;
30
+ }
31
+ :root[data-theme='dark'] {
32
+ --sg-bg: #141414;
33
+ --sg-fg: rgba(255, 255, 255, 0.85);
34
+ --sg-muted: rgba(255, 255, 255, 0.65);
35
+ --sg-border: #424242;
36
+ --sg-header-bg: #1f1f1f;
37
+ --sg-header-fg: rgba(255, 255, 255, 0.85);
38
+ --sg-bg-subtle: #1f1f1f;
39
+ --sg-row-alt-bg: #141414;
40
+ --sg-row-hover-bg: #262626;
41
+ --sg-selection-bg: #111a2c;
42
+ --sg-input-bg: #141414;
43
+ --sg-input-border: #424242;
44
+ --sg-accent: #177ddc;
45
+ --sg-on-accent: #ffffff;
46
+ --sg-radius: 6px;
47
+ --sg-font: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "PingFang SC", sans-serif;
48
+ --sg-scrollbar-bg: #1f1f1f;
49
+ --sg-scrollbar-border: #424242;
50
+ --sg-scrollbar-thumb: rgba(255, 255, 255, 0.65);
51
+ --sg-scrollbar-thumb-hover: rgba(255, 255, 255, 0.85);
52
+ --sg-scrollbar-thumb-active: rgba(255, 255, 255, 0.85);
53
+ --sg-scrollbar-arrow: rgba(255, 255, 255, 0.65);
54
+ --sg-scrollbar-arrow-hover: rgba(255, 255, 255, 0.85);
55
+ --sg-scrollbar-arrow-hover-bg: #262626;
56
+ --sg-scrollbar-arrow-active: rgba(255, 255, 255, 0.85);
57
+ --sg-scrollbar-arrow-active-bg: #111a2c;
58
+ --sg-scrollbar-arrow-disabled: #424242;
59
+ }
@@ -0,0 +1,59 @@
1
+ /* Atlassian - generated from packages/grid/src/themes/index.ts. Do not edit by hand. */
2
+ :root {
3
+ --sg-bg: #ffffff;
4
+ --sg-fg: #172b4d;
5
+ --sg-muted: #44546f;
6
+ --sg-border: #dcdfe4;
7
+ --sg-header-bg: #fafbfc;
8
+ --sg-header-fg: #44546f;
9
+ --sg-bg-subtle: #fafbfc;
10
+ --sg-row-alt-bg: #ffffff;
11
+ --sg-row-hover-bg: #f1f2f4;
12
+ --sg-selection-bg: #e9f2ff;
13
+ --sg-input-bg: #ffffff;
14
+ --sg-input-border: #dcdfe4;
15
+ --sg-accent: #0c66e4;
16
+ --sg-on-accent: #ffffff;
17
+ --sg-radius: 3px;
18
+ --sg-font: "Charlie Display", "Atlassian Sans", -apple-system, "Segoe UI", sans-serif;
19
+ --sg-scrollbar-bg: #fafbfc;
20
+ --sg-scrollbar-border: #dcdfe4;
21
+ --sg-scrollbar-thumb: #44546f;
22
+ --sg-scrollbar-thumb-hover: #172b4d;
23
+ --sg-scrollbar-thumb-active: #172b4d;
24
+ --sg-scrollbar-arrow: #44546f;
25
+ --sg-scrollbar-arrow-hover: #172b4d;
26
+ --sg-scrollbar-arrow-hover-bg: #f1f2f4;
27
+ --sg-scrollbar-arrow-active: #172b4d;
28
+ --sg-scrollbar-arrow-active-bg: #e9f2ff;
29
+ --sg-scrollbar-arrow-disabled: #dcdfe4;
30
+ }
31
+ :root[data-theme='dark'] {
32
+ --sg-bg: #1d2125;
33
+ --sg-fg: #b6c2cf;
34
+ --sg-muted: #8590a2;
35
+ --sg-border: #38414a;
36
+ --sg-header-bg: #22272b;
37
+ --sg-header-fg: #8590a2;
38
+ --sg-bg-subtle: #22272b;
39
+ --sg-row-alt-bg: #1d2125;
40
+ --sg-row-hover-bg: #2c333a;
41
+ --sg-selection-bg: #09326c;
42
+ --sg-input-bg: #1d2125;
43
+ --sg-input-border: #38414a;
44
+ --sg-accent: #579dff;
45
+ --sg-on-accent: #ffffff;
46
+ --sg-radius: 3px;
47
+ --sg-font: "Charlie Display", "Atlassian Sans", -apple-system, "Segoe UI", sans-serif;
48
+ --sg-scrollbar-bg: #22272b;
49
+ --sg-scrollbar-border: #38414a;
50
+ --sg-scrollbar-thumb: #8590a2;
51
+ --sg-scrollbar-thumb-hover: #b6c2cf;
52
+ --sg-scrollbar-thumb-active: #b6c2cf;
53
+ --sg-scrollbar-arrow: #8590a2;
54
+ --sg-scrollbar-arrow-hover: #b6c2cf;
55
+ --sg-scrollbar-arrow-hover-bg: #2c333a;
56
+ --sg-scrollbar-arrow-active: #b6c2cf;
57
+ --sg-scrollbar-arrow-active-bg: #09326c;
58
+ --sg-scrollbar-arrow-disabled: #38414a;
59
+ }
@@ -0,0 +1,59 @@
1
+ /* Bootstrap 5 - generated from packages/grid/src/themes/index.ts. Do not edit by hand. */
2
+ :root {
3
+ --sg-bg: #ffffff;
4
+ --sg-fg: #212529;
5
+ --sg-muted: #6c757d;
6
+ --sg-border: #dee2e6;
7
+ --sg-header-bg: #f8f9fa;
8
+ --sg-header-fg: #212529;
9
+ --sg-bg-subtle: #f8f9fa;
10
+ --sg-row-alt-bg: #fcfcfd;
11
+ --sg-row-hover-bg: #f2f2f2;
12
+ --sg-selection-bg: #cfe2ff;
13
+ --sg-input-bg: #ffffff;
14
+ --sg-input-border: #dee2e6;
15
+ --sg-accent: #0d6efd;
16
+ --sg-on-accent: #ffffff;
17
+ --sg-radius: 6px;
18
+ --sg-font: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
19
+ --sg-scrollbar-bg: #f8f9fa;
20
+ --sg-scrollbar-border: #dee2e6;
21
+ --sg-scrollbar-thumb: #6c757d;
22
+ --sg-scrollbar-thumb-hover: #212529;
23
+ --sg-scrollbar-thumb-active: #212529;
24
+ --sg-scrollbar-arrow: #6c757d;
25
+ --sg-scrollbar-arrow-hover: #212529;
26
+ --sg-scrollbar-arrow-hover-bg: #f2f2f2;
27
+ --sg-scrollbar-arrow-active: #212529;
28
+ --sg-scrollbar-arrow-active-bg: #cfe2ff;
29
+ --sg-scrollbar-arrow-disabled: #dee2e6;
30
+ }
31
+ :root[data-theme='dark'] {
32
+ --sg-bg: #212529;
33
+ --sg-fg: #dee2e6;
34
+ --sg-muted: #adb5bd;
35
+ --sg-border: #495057;
36
+ --sg-header-bg: #2b3035;
37
+ --sg-header-fg: #dee2e6;
38
+ --sg-bg-subtle: #2b3035;
39
+ --sg-row-alt-bg: #25292e;
40
+ --sg-row-hover-bg: #2c3034;
41
+ --sg-selection-bg: #031633;
42
+ --sg-input-bg: #212529;
43
+ --sg-input-border: #495057;
44
+ --sg-accent: #0d6efd;
45
+ --sg-on-accent: #ffffff;
46
+ --sg-radius: 6px;
47
+ --sg-font: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
48
+ --sg-scrollbar-bg: #2b3035;
49
+ --sg-scrollbar-border: #495057;
50
+ --sg-scrollbar-thumb: #adb5bd;
51
+ --sg-scrollbar-thumb-hover: #dee2e6;
52
+ --sg-scrollbar-thumb-active: #dee2e6;
53
+ --sg-scrollbar-arrow: #adb5bd;
54
+ --sg-scrollbar-arrow-hover: #dee2e6;
55
+ --sg-scrollbar-arrow-hover-bg: #2c3034;
56
+ --sg-scrollbar-arrow-active: #dee2e6;
57
+ --sg-scrollbar-arrow-active-bg: #031633;
58
+ --sg-scrollbar-arrow-disabled: #495057;
59
+ }
@@ -0,0 +1,59 @@
1
+ /* Carbon - generated from packages/grid/src/themes/index.ts. Do not edit by hand. */
2
+ :root {
3
+ --sg-bg: #ffffff;
4
+ --sg-fg: #161616;
5
+ --sg-muted: #525252;
6
+ --sg-border: #e0e0e0;
7
+ --sg-header-bg: #e0e0e0;
8
+ --sg-header-fg: #161616;
9
+ --sg-bg-subtle: #e0e0e0;
10
+ --sg-row-alt-bg: #f4f4f4;
11
+ --sg-row-hover-bg: #e8e8e8;
12
+ --sg-selection-bg: #d0e2ff;
13
+ --sg-input-bg: #ffffff;
14
+ --sg-input-border: #e0e0e0;
15
+ --sg-accent: #0f62fe;
16
+ --sg-on-accent: #ffffff;
17
+ --sg-radius: 0px;
18
+ --sg-font: "IBM Plex Sans", "Helvetica Neue", Arial, sans-serif;
19
+ --sg-scrollbar-bg: #e0e0e0;
20
+ --sg-scrollbar-border: #e0e0e0;
21
+ --sg-scrollbar-thumb: #525252;
22
+ --sg-scrollbar-thumb-hover: #161616;
23
+ --sg-scrollbar-thumb-active: #161616;
24
+ --sg-scrollbar-arrow: #525252;
25
+ --sg-scrollbar-arrow-hover: #161616;
26
+ --sg-scrollbar-arrow-hover-bg: #e8e8e8;
27
+ --sg-scrollbar-arrow-active: #161616;
28
+ --sg-scrollbar-arrow-active-bg: #d0e2ff;
29
+ --sg-scrollbar-arrow-disabled: #e0e0e0;
30
+ }
31
+ :root[data-theme='dark'] {
32
+ --sg-bg: #161616;
33
+ --sg-fg: #f4f4f4;
34
+ --sg-muted: #c6c6c6;
35
+ --sg-border: #393939;
36
+ --sg-header-bg: #393939;
37
+ --sg-header-fg: #f4f4f4;
38
+ --sg-bg-subtle: #393939;
39
+ --sg-row-alt-bg: #262626;
40
+ --sg-row-hover-bg: #333333;
41
+ --sg-selection-bg: #393939;
42
+ --sg-input-bg: #161616;
43
+ --sg-input-border: #393939;
44
+ --sg-accent: #78a9ff;
45
+ --sg-on-accent: #18181b;
46
+ --sg-radius: 0px;
47
+ --sg-font: "IBM Plex Sans", "Helvetica Neue", Arial, sans-serif;
48
+ --sg-scrollbar-bg: #393939;
49
+ --sg-scrollbar-border: #393939;
50
+ --sg-scrollbar-thumb: #c6c6c6;
51
+ --sg-scrollbar-thumb-hover: #f4f4f4;
52
+ --sg-scrollbar-thumb-active: #f4f4f4;
53
+ --sg-scrollbar-arrow: #c6c6c6;
54
+ --sg-scrollbar-arrow-hover: #f4f4f4;
55
+ --sg-scrollbar-arrow-hover-bg: #333333;
56
+ --sg-scrollbar-arrow-active: #f4f4f4;
57
+ --sg-scrollbar-arrow-active-bg: #393939;
58
+ --sg-scrollbar-arrow-disabled: #393939;
59
+ }
@@ -0,0 +1,59 @@
1
+ /* Catppuccin - generated from packages/grid/src/themes/index.ts. Do not edit by hand. */
2
+ :root {
3
+ --sg-bg: #eff1f5;
4
+ --sg-fg: #4c4f69;
5
+ --sg-muted: #6c6f85;
6
+ --sg-border: #ccd0da;
7
+ --sg-header-bg: #e6e9ef;
8
+ --sg-header-fg: #4c4f69;
9
+ --sg-bg-subtle: #e6e9ef;
10
+ --sg-row-alt-bg: #e6e9ef;
11
+ --sg-row-hover-bg: #dce0e8;
12
+ --sg-selection-bg: #dce0e8;
13
+ --sg-input-bg: #eff1f5;
14
+ --sg-input-border: #ccd0da;
15
+ --sg-accent: #8839ef;
16
+ --sg-on-accent: #ffffff;
17
+ --sg-radius: 8px;
18
+ --sg-font: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
19
+ --sg-scrollbar-bg: #e6e9ef;
20
+ --sg-scrollbar-border: #ccd0da;
21
+ --sg-scrollbar-thumb: #6c6f85;
22
+ --sg-scrollbar-thumb-hover: #4c4f69;
23
+ --sg-scrollbar-thumb-active: #4c4f69;
24
+ --sg-scrollbar-arrow: #6c6f85;
25
+ --sg-scrollbar-arrow-hover: #4c4f69;
26
+ --sg-scrollbar-arrow-hover-bg: #dce0e8;
27
+ --sg-scrollbar-arrow-active: #4c4f69;
28
+ --sg-scrollbar-arrow-active-bg: #dce0e8;
29
+ --sg-scrollbar-arrow-disabled: #ccd0da;
30
+ }
31
+ :root[data-theme='dark'] {
32
+ --sg-bg: #1e1e2e;
33
+ --sg-fg: #cdd6f4;
34
+ --sg-muted: #a6adc8;
35
+ --sg-border: #313244;
36
+ --sg-header-bg: #181825;
37
+ --sg-header-fg: #cdd6f4;
38
+ --sg-bg-subtle: #181825;
39
+ --sg-row-alt-bg: #1a1a28;
40
+ --sg-row-hover-bg: #313244;
41
+ --sg-selection-bg: #45475a;
42
+ --sg-input-bg: #1e1e2e;
43
+ --sg-input-border: #313244;
44
+ --sg-accent: #cba6f7;
45
+ --sg-on-accent: #18181b;
46
+ --sg-radius: 8px;
47
+ --sg-font: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
48
+ --sg-scrollbar-bg: #181825;
49
+ --sg-scrollbar-border: #313244;
50
+ --sg-scrollbar-thumb: #a6adc8;
51
+ --sg-scrollbar-thumb-hover: #cdd6f4;
52
+ --sg-scrollbar-thumb-active: #cdd6f4;
53
+ --sg-scrollbar-arrow: #a6adc8;
54
+ --sg-scrollbar-arrow-hover: #cdd6f4;
55
+ --sg-scrollbar-arrow-hover-bg: #313244;
56
+ --sg-scrollbar-arrow-active: #cdd6f4;
57
+ --sg-scrollbar-arrow-active-bg: #45475a;
58
+ --sg-scrollbar-arrow-disabled: #313244;
59
+ }
@@ -0,0 +1,59 @@
1
+ /* Dracula - generated from packages/grid/src/themes/index.ts. Do not edit by hand. */
2
+ :root {
3
+ --sg-bg: #fffbeb;
4
+ --sg-fg: #1f1f1f;
5
+ --sg-muted: #6c664b;
6
+ --sg-border: #dedccf;
7
+ --sg-header-bg: #ece9df;
8
+ --sg-header-fg: #1f1f1f;
9
+ --sg-bg-subtle: #ece9df;
10
+ --sg-row-alt-bg: #fffdf5;
11
+ --sg-row-hover-bg: #f2efe3;
12
+ --sg-selection-bg: #cfcfde;
13
+ --sg-input-bg: #fffbeb;
14
+ --sg-input-border: #dedccf;
15
+ --sg-accent: #644ac9;
16
+ --sg-on-accent: #ffffff;
17
+ --sg-radius: 6px;
18
+ --sg-font: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
19
+ --sg-scrollbar-bg: #ece9df;
20
+ --sg-scrollbar-border: #dedccf;
21
+ --sg-scrollbar-thumb: #6c664b;
22
+ --sg-scrollbar-thumb-hover: #1f1f1f;
23
+ --sg-scrollbar-thumb-active: #1f1f1f;
24
+ --sg-scrollbar-arrow: #6c664b;
25
+ --sg-scrollbar-arrow-hover: #1f1f1f;
26
+ --sg-scrollbar-arrow-hover-bg: #f2efe3;
27
+ --sg-scrollbar-arrow-active: #1f1f1f;
28
+ --sg-scrollbar-arrow-active-bg: #cfcfde;
29
+ --sg-scrollbar-arrow-disabled: #dedccf;
30
+ }
31
+ :root[data-theme='dark'] {
32
+ --sg-bg: #282a36;
33
+ --sg-fg: #f8f8f2;
34
+ --sg-muted: #6272a4;
35
+ --sg-border: #44475a;
36
+ --sg-header-bg: #21222c;
37
+ --sg-header-fg: #f8f8f2;
38
+ --sg-bg-subtle: #21222c;
39
+ --sg-row-alt-bg: #2d2f3b;
40
+ --sg-row-hover-bg: #343746;
41
+ --sg-selection-bg: #44475a;
42
+ --sg-input-bg: #282a36;
43
+ --sg-input-border: #44475a;
44
+ --sg-accent: #bd93f9;
45
+ --sg-on-accent: #18181b;
46
+ --sg-radius: 6px;
47
+ --sg-font: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
48
+ --sg-scrollbar-bg: #21222c;
49
+ --sg-scrollbar-border: #44475a;
50
+ --sg-scrollbar-thumb: #6272a4;
51
+ --sg-scrollbar-thumb-hover: #f8f8f2;
52
+ --sg-scrollbar-thumb-active: #f8f8f2;
53
+ --sg-scrollbar-arrow: #6272a4;
54
+ --sg-scrollbar-arrow-hover: #f8f8f2;
55
+ --sg-scrollbar-arrow-hover-bg: #343746;
56
+ --sg-scrollbar-arrow-active: #f8f8f2;
57
+ --sg-scrollbar-arrow-active-bg: #44475a;
58
+ --sg-scrollbar-arrow-disabled: #44475a;
59
+ }
@@ -0,0 +1,59 @@
1
+ /* Excel - generated from packages/grid/src/themes/index.ts. Do not edit by hand. */
2
+ :root {
3
+ --sg-bg: #ffffff;
4
+ --sg-fg: #323130;
5
+ --sg-muted: #605e5c;
6
+ --sg-border: #d2d0ce;
7
+ --sg-header-bg: #f3f2f1;
8
+ --sg-header-fg: #444444;
9
+ --sg-bg-subtle: #f3f2f1;
10
+ --sg-row-alt-bg: #ffffff;
11
+ --sg-row-hover-bg: #edebe9;
12
+ --sg-selection-bg: rgba(16, 124, 65, 0.10);
13
+ --sg-input-bg: #ffffff;
14
+ --sg-input-border: #d2d0ce;
15
+ --sg-accent: #107c41;
16
+ --sg-on-accent: #ffffff;
17
+ --sg-radius: 0px;
18
+ --sg-font: "Aptos", "Segoe UI", Calibri, Arial, sans-serif;
19
+ --sg-scrollbar-bg: #f3f2f1;
20
+ --sg-scrollbar-border: #d2d0ce;
21
+ --sg-scrollbar-thumb: #605e5c;
22
+ --sg-scrollbar-thumb-hover: #323130;
23
+ --sg-scrollbar-thumb-active: #323130;
24
+ --sg-scrollbar-arrow: #605e5c;
25
+ --sg-scrollbar-arrow-hover: #323130;
26
+ --sg-scrollbar-arrow-hover-bg: #edebe9;
27
+ --sg-scrollbar-arrow-active: #323130;
28
+ --sg-scrollbar-arrow-active-bg: rgba(16, 124, 65, 0.10);
29
+ --sg-scrollbar-arrow-disabled: #d2d0ce;
30
+ }
31
+ :root[data-theme='dark'] {
32
+ --sg-bg: #1b1a19;
33
+ --sg-fg: #f3f2f1;
34
+ --sg-muted: #c8c6c4;
35
+ --sg-border: #3b3a39;
36
+ --sg-header-bg: #252423;
37
+ --sg-header-fg: #c8c6c4;
38
+ --sg-bg-subtle: #252423;
39
+ --sg-row-alt-bg: #1b1a19;
40
+ --sg-row-hover-bg: #323130;
41
+ --sg-selection-bg: rgba(88, 193, 136, 0.16);
42
+ --sg-input-bg: #1b1a19;
43
+ --sg-input-border: #3b3a39;
44
+ --sg-accent: #58c188;
45
+ --sg-on-accent: #18181b;
46
+ --sg-radius: 0px;
47
+ --sg-font: "Aptos", "Segoe UI", Calibri, Arial, sans-serif;
48
+ --sg-scrollbar-bg: #252423;
49
+ --sg-scrollbar-border: #3b3a39;
50
+ --sg-scrollbar-thumb: #c8c6c4;
51
+ --sg-scrollbar-thumb-hover: #f3f2f1;
52
+ --sg-scrollbar-thumb-active: #f3f2f1;
53
+ --sg-scrollbar-arrow: #c8c6c4;
54
+ --sg-scrollbar-arrow-hover: #f3f2f1;
55
+ --sg-scrollbar-arrow-hover-bg: #323130;
56
+ --sg-scrollbar-arrow-active: #f3f2f1;
57
+ --sg-scrollbar-arrow-active-bg: rgba(88, 193, 136, 0.16);
58
+ --sg-scrollbar-arrow-disabled: #3b3a39;
59
+ }