@svgrid/grid 2.2.31 → 2.2.32
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/README.md +1 -1
- package/dist/SvAvatar.svelte +1 -1
- package/dist/SvCheckBox.svelte +2 -1
- package/dist/SvCircularProgress.svelte +1 -1
- package/dist/SvGrid.controller.svelte.d.ts +20 -0
- package/dist/SvGrid.controller.svelte.js +358 -18
- package/dist/SvGrid.css +103 -3
- package/dist/SvGrid.svelte +162 -10
- package/dist/SvGrid.types.d.ts +81 -0
- package/dist/SvGridDropdown.svelte +38 -6
- package/dist/SvGridDropdown.svelte.d.ts +4 -0
- package/dist/SvGridSelect.svelte +12 -3
- package/dist/SvGridSelect.svelte.d.ts +6 -0
- package/dist/SvGroupCell.svelte +9 -2
- package/dist/SvMultiSelect.svelte +12 -3
- package/dist/SvMultiSelect.svelte.d.ts +6 -0
- package/dist/SvPasswordInput.svelte +1 -1
- package/dist/SvProgress.svelte +1 -1
- package/dist/SvRating.svelte +1 -1
- package/dist/SvResult.svelte +1 -1
- package/dist/SvRichText.svelte +31 -16
- package/dist/SvRichText.svelte.d.ts +9 -0
- package/dist/SvSwitchButton.svelte +2 -1
- package/dist/SvToaster.svelte +1 -1
- package/dist/SvTree.svelte +9 -2
- package/dist/SvTree.svelte.d.ts +5 -0
- package/dist/SvTreeSelect.svelte +6 -2
- package/dist/build-api.js +16 -0
- package/dist/cdn/{GridMenus-Ds3OpzZT.js → GridMenus-C6ixSGWW.js} +33 -33
- package/dist/cdn/{GridMenus-Da_p7SKS.js → GridMenus-Cyk3qpJ7.js} +33 -33
- package/dist/cdn/{SvDateTimePicker-B8GopjhC.js → SvDateTimePicker-CdqaP61H.js} +2 -1
- package/dist/cdn/{SvDateTimePicker-DB0aIEk8.js → SvDateTimePicker-ClqtVIj3.js} +2 -1
- package/dist/cdn/{SvGridDropdown-DjALc_4f.js → SvGridDropdown-D0VdjeR8.js} +129 -123
- package/dist/cdn/{SvGridDropdown-hpnHvOGt.js → SvGridDropdown-Dh-2ej8j.js} +92 -87
- package/dist/cdn/{src-BLJfdyL0.js → src-BgHjWF0Q.js} +4193 -3837
- package/dist/cdn/{src-DYDCiC0D.js → src-CgD-wiuS.js} +5956 -5602
- package/dist/cdn/svgrid.js +8 -8
- package/dist/cdn/svgrid.svelte-external.js +8 -8
- package/dist/cell-render.d.ts +1 -0
- package/dist/cell-render.js +115 -1
- package/dist/cell-values.js +5 -0
- package/dist/core.d.ts +80 -9
- package/dist/core.js +89 -0
- package/dist/editor-contract.d.ts +12 -5
- package/dist/editor-registry.d.ts +18 -7
- package/dist/editor-registry.js +10 -1
- package/dist/group-display.d.ts +39 -0
- package/dist/group-display.js +52 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.js +2 -2
- package/dist/keyboard-handlers.js +16 -0
- package/dist/recurrence.js +3 -2
- package/dist/svgrid-wrapper.types.d.ts +8 -2
- package/dist/themes/index.d.ts +10 -0
- package/dist/themes/index.js +26 -0
- package/package.json +1 -1
- package/src/SvAccordion.test.ts +5 -5
- package/src/SvAvatar.svelte +1 -1
- package/src/SvButtonGroup.test.ts +6 -6
- package/src/SvCheckBox.svelte +2 -1
- package/src/SvCircularProgress.svelte +1 -1
- package/src/SvFileUpload.test.ts +1 -1
- package/src/SvGrid.controller.svelte.ts +367 -17
- package/src/SvGrid.css +103 -3
- package/src/SvGrid.svelte +162 -10
- package/src/SvGrid.types.ts +81 -0
- package/src/SvGridDropdown.svelte +38 -6
- package/src/SvGridSelect.svelte +12 -3
- package/src/SvGroupCell.svelte +9 -2
- package/src/SvMultiSelect.svelte +12 -3
- package/src/SvPasswordInput.svelte +1 -1
- package/src/SvProgress.svelte +1 -1
- package/src/SvRating.svelte +1 -1
- package/src/SvResult.svelte +1 -1
- package/src/SvRichText.svelte +31 -16
- package/src/SvSwitchButton.svelte +2 -1
- package/src/SvToaster.svelte +1 -1
- package/src/SvTree.svelte +9 -2
- package/src/SvTreeSelect.svelte +6 -2
- package/src/build-api.ts +15 -0
- package/src/builtin-editors.test.ts +3 -1
- package/src/cell-render.test.ts +27 -3
- package/src/cell-render.ts +122 -1
- package/src/cell-values.ts +4 -0
- package/src/chart-export.test.ts +2 -2
- package/src/clipboard.test.ts +0 -2
- package/src/core.ts +157 -8
- package/src/editing.test.ts +1 -1
- package/src/editor-contract.ts +12 -5
- package/src/editor-registry.grid.test.ts +48 -0
- package/src/editor-registry.test.ts +3 -1
- package/src/editor-registry.ts +23 -7
- package/src/facet-buckets.test.ts +33 -33
- package/src/group-display.test.ts +91 -1
- package/src/group-display.ts +83 -0
- package/src/index.ts +9 -0
- package/src/keyboard-handlers.ts +17 -0
- package/src/list-power.test.ts +2 -2
- package/src/menus.test.ts +4 -4
- package/src/named-views.coverage.test.ts +3 -3
- package/src/recurrence.ts +3 -2
- package/src/row-resize.test.ts +40 -40
- package/src/scheduler-model.ts +1 -1
- package/src/server-data-source.coverage.test.ts +1 -1
- package/src/server-group-model.test.ts +6 -6
- package/src/spreadsheet.test.ts +0 -1
- package/src/svgrid-wrapper.types.ts +11 -9
- package/src/svgrid.async-editor-options.test.ts +271 -0
- package/src/svgrid.auto-row-height.test.ts +204 -0
- package/src/svgrid.charting.test.ts +4 -4
- package/src/svgrid.comments-autocomplete.test.ts +8 -2
- package/src/svgrid.context-menu.test.ts +25 -9
- package/src/svgrid.filter-depth.test.ts +163 -0
- package/src/svgrid.filter-menu-listbox.svelte.test.ts +16 -2
- package/src/svgrid.filter-menu-scroll.test.ts +10 -2
- package/src/svgrid.grand-total.test.ts +188 -0
- package/src/svgrid.group-display-mode.test.ts +171 -0
- package/src/svgrid.group-footers.test.ts +121 -0
- package/src/svgrid.group-pagination.test.ts +153 -0
- package/src/svgrid.tree-data.test.ts +186 -0
- package/src/svgriddropdown.async-panel.svelte.test.ts +195 -0
- package/src/themes/index.ts +42 -0
- package/src/tree-edit.test.ts +4 -4
- package/src/tree-row-model.test.ts +169 -0
- package/src/ui-localization.test.ts +113 -0
- package/themes/ag-alpine.css +22 -0
- package/themes/antd.css +22 -0
- package/themes/atlassian.css +22 -0
- package/themes/bootstrap.css +22 -0
- package/themes/carbon.css +22 -0
- package/themes/catppuccin.css +22 -0
- package/themes/dracula.css +22 -0
- package/themes/ember.css +22 -0
- package/themes/excel.css +22 -0
- package/themes/fluent.css +22 -0
- package/themes/github.css +22 -0
- package/themes/linear.css +22 -0
- package/themes/material.css +22 -0
- package/themes/nord.css +22 -0
- package/themes/notion.css +22 -0
- package/themes/salesforce.css +22 -0
- package/themes/sap.css +22 -0
- package/themes/shadcn.css +22 -0
- package/themes/tailwind.css +22 -0
- package/themes/vercel.css +22 -0
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
import { describe, expect, it } from 'vitest'
|
|
2
|
+
import { createTreeRowModel, flattenTreeData } from './core'
|
|
3
|
+
|
|
4
|
+
type Node = { id: number; parent: number | null; name: string }
|
|
5
|
+
|
|
6
|
+
/** Minimal Row stand-ins - the model only reads `original`, `id` and spreads. */
|
|
7
|
+
function rowsFrom(data: Node[]) {
|
|
8
|
+
return data.map((original, index) => ({
|
|
9
|
+
id: String(original.id),
|
|
10
|
+
index,
|
|
11
|
+
original,
|
|
12
|
+
depth: 0,
|
|
13
|
+
getCanExpand: () => false,
|
|
14
|
+
getIsExpanded: () => false,
|
|
15
|
+
toggleExpanded: () => {},
|
|
16
|
+
getIsSelected: () => false,
|
|
17
|
+
toggleSelected: () => {},
|
|
18
|
+
getAllCells: () => [],
|
|
19
|
+
getCellValueByColumnId: (c: string) => (original as never as Record<string, unknown>)[c],
|
|
20
|
+
})) as never[]
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
let expandedState: Record<string, boolean> = {}
|
|
24
|
+
const table = {
|
|
25
|
+
getState: () => ({ expanded: expandedState }),
|
|
26
|
+
setExpanded: (fn: (p: Record<string, boolean>) => Record<string, boolean>) => {
|
|
27
|
+
expandedState = fn(expandedState)
|
|
28
|
+
},
|
|
29
|
+
} as never
|
|
30
|
+
|
|
31
|
+
const run = (data: Node[], opts = { parentField: 'parent' }) =>
|
|
32
|
+
createTreeRowModel<never>(opts)({ table, rows: rowsFrom(data) } as never)
|
|
33
|
+
|
|
34
|
+
const ids = (rows: readonly { id: string }[]) => rows.map((r) => r.id)
|
|
35
|
+
|
|
36
|
+
describe('createTreeRowModel', () => {
|
|
37
|
+
const data: Node[] = [
|
|
38
|
+
{ id: 1, parent: null, name: 'root' },
|
|
39
|
+
{ id: 2, parent: 1, name: 'child a' },
|
|
40
|
+
{ id: 3, parent: 1, name: 'child b' },
|
|
41
|
+
{ id: 4, parent: 2, name: 'grandchild' },
|
|
42
|
+
{ id: 5, parent: null, name: 'other root' },
|
|
43
|
+
]
|
|
44
|
+
|
|
45
|
+
it('nests by parent id and returns only roots', () => {
|
|
46
|
+
const out = run(data)
|
|
47
|
+
expect(ids(out)).toEqual(['1', '5'])
|
|
48
|
+
})
|
|
49
|
+
|
|
50
|
+
it('records depth down the chain', () => {
|
|
51
|
+
const [root] = run(data) as never as Array<{ depth: number; subRows: never[] }>
|
|
52
|
+
expect(root!.depth).toBe(0)
|
|
53
|
+
const child = (root!.subRows as never as Array<{ id: string; depth: number; subRows: never[] }>)[0]!
|
|
54
|
+
expect(child.depth).toBe(1)
|
|
55
|
+
expect((child.subRows as never as Array<{ depth: number }>)[0]!.depth).toBe(2)
|
|
56
|
+
})
|
|
57
|
+
|
|
58
|
+
it('marks rows with children expandable and leaves not', () => {
|
|
59
|
+
const [root, other] = run(data) as never as Array<{ getCanExpand: () => boolean }>
|
|
60
|
+
expect(root!.getCanExpand()).toBe(true)
|
|
61
|
+
expect(other!.getCanExpand()).toBe(false)
|
|
62
|
+
})
|
|
63
|
+
|
|
64
|
+
it('counts descendants, not just direct children', () => {
|
|
65
|
+
const [root] = run(data) as never as Array<{ leafCount: number }>
|
|
66
|
+
// children a + b, plus a's grandchild
|
|
67
|
+
expect(root!.leafCount).toBe(3)
|
|
68
|
+
})
|
|
69
|
+
|
|
70
|
+
it('tags rows so they are not mistaken for group banners', async () => {
|
|
71
|
+
const { isGroupRow } = await import('./cell-values')
|
|
72
|
+
const [root] = run(data) as never as Array<never>
|
|
73
|
+
expect((root as never as { __treeRow: boolean }).__treeRow).toBe(true)
|
|
74
|
+
// Expandable, but must NOT render as a full-width banner.
|
|
75
|
+
expect(isGroupRow(root!)).toBe(false)
|
|
76
|
+
})
|
|
77
|
+
|
|
78
|
+
it('drives expansion through the table state', () => {
|
|
79
|
+
expandedState = {}
|
|
80
|
+
const [root] = run(data) as never as Array<{
|
|
81
|
+
getIsExpanded: () => boolean
|
|
82
|
+
toggleExpanded: () => void
|
|
83
|
+
}>
|
|
84
|
+
expect(root!.getIsExpanded()).toBe(false)
|
|
85
|
+
root!.toggleExpanded()
|
|
86
|
+
expect(expandedState['1']).toBe(true)
|
|
87
|
+
})
|
|
88
|
+
|
|
89
|
+
it('promotes a row whose parent is missing rather than dropping it', () => {
|
|
90
|
+
// Parent 99 does not exist - e.g. the filter removed it. The row must still
|
|
91
|
+
// be reachable.
|
|
92
|
+
const orphaned: Node[] = [
|
|
93
|
+
{ id: 1, parent: null, name: 'root' },
|
|
94
|
+
{ id: 2, parent: 99, name: 'orphan' },
|
|
95
|
+
]
|
|
96
|
+
expect(ids(run(orphaned))).toEqual(['1', '2'])
|
|
97
|
+
})
|
|
98
|
+
|
|
99
|
+
it('survives a parent cycle', () => {
|
|
100
|
+
const cyclic: Node[] = [
|
|
101
|
+
{ id: 1, parent: 2, name: 'a' },
|
|
102
|
+
{ id: 2, parent: 1, name: 'b' },
|
|
103
|
+
]
|
|
104
|
+
// Neither is a root by parent link, so nothing is emitted rather than
|
|
105
|
+
// recursing forever. The guard is what matters.
|
|
106
|
+
expect(() => run(cyclic)).not.toThrow()
|
|
107
|
+
})
|
|
108
|
+
|
|
109
|
+
it('treats a self-parenting row as a root', () => {
|
|
110
|
+
expect(ids(run([{ id: 1, parent: 1, name: 'self' }]))).toEqual(['1'])
|
|
111
|
+
})
|
|
112
|
+
|
|
113
|
+
it('passes an empty set straight through', () => {
|
|
114
|
+
expect(run([])).toEqual([])
|
|
115
|
+
})
|
|
116
|
+
|
|
117
|
+
it('honours a custom idField', () => {
|
|
118
|
+
type K = { key: number; parent: number | null }
|
|
119
|
+
const keyed = [
|
|
120
|
+
{ key: 10, parent: null },
|
|
121
|
+
{ key: 11, parent: 10 },
|
|
122
|
+
] as never as Node[]
|
|
123
|
+
const out = createTreeRowModel<never>({ parentField: 'parent', idField: 'key' })({
|
|
124
|
+
table,
|
|
125
|
+
rows: rowsFrom(keyed),
|
|
126
|
+
} as never) as never as Array<{ subRows: never[] }>
|
|
127
|
+
expect(out).toHaveLength(1)
|
|
128
|
+
expect(out[0]!.subRows).toHaveLength(1)
|
|
129
|
+
})
|
|
130
|
+
})
|
|
131
|
+
|
|
132
|
+
describe('flattenTreeData', () => {
|
|
133
|
+
const nested = [
|
|
134
|
+
{ id: 1, name: 'a', kids: [{ id: 2, name: 'a1', kids: [{ id: 3, name: 'a1a' }] }] },
|
|
135
|
+
{ id: 4, name: 'b' },
|
|
136
|
+
]
|
|
137
|
+
|
|
138
|
+
it('emits children directly after their parent', () => {
|
|
139
|
+
const flat = flattenTreeData(nested as never, { childrenField: 'kids' })
|
|
140
|
+
expect(flat.map((r) => (r as never as { id: number }).id)).toEqual([1, 2, 3, 4])
|
|
141
|
+
})
|
|
142
|
+
|
|
143
|
+
it('stamps the parent link the tree model reads', () => {
|
|
144
|
+
const flat = flattenTreeData(nested as never, { childrenField: 'kids' }) as never as Array<
|
|
145
|
+
Record<string, unknown>
|
|
146
|
+
>
|
|
147
|
+
expect(flat[0]!.__parentId).toBeNull()
|
|
148
|
+
expect(flat[1]!.__parentId).toBe(1)
|
|
149
|
+
expect(flat[2]!.__parentId).toBe(2)
|
|
150
|
+
})
|
|
151
|
+
|
|
152
|
+
it('round-trips into createTreeRowModel', () => {
|
|
153
|
+
const flat = flattenTreeData(nested as never, { childrenField: 'kids' })
|
|
154
|
+
const out = createTreeRowModel<never>({ parentField: '__parentId' })({
|
|
155
|
+
table,
|
|
156
|
+
rows: rowsFrom(flat as never as Node[]),
|
|
157
|
+
} as never) as never as Array<{ id: string; subRows: never[] }>
|
|
158
|
+
expect(out.map((r) => r.id)).toEqual(['1', '4'])
|
|
159
|
+
expect(out[0]!.subRows).toHaveLength(1)
|
|
160
|
+
})
|
|
161
|
+
|
|
162
|
+
it('accepts a custom parent field name', () => {
|
|
163
|
+
const flat = flattenTreeData(nested as never, {
|
|
164
|
+
childrenField: 'kids',
|
|
165
|
+
parentField: 'pid',
|
|
166
|
+
}) as never as Array<Record<string, unknown>>
|
|
167
|
+
expect(flat[1]!.pid).toBe(1)
|
|
168
|
+
})
|
|
169
|
+
})
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Every user-facing string in the kit must be overridable.
|
|
3
|
+
*
|
|
4
|
+
* These components shipped chrome copy - toolbar tooltips, "No matches", the
|
|
5
|
+
* lazy-load placeholder, search-box labels - baked in as literals, so an app in
|
|
6
|
+
* any other language had English fragments it could not reach. Each is now a
|
|
7
|
+
* prop; these tests pin that down so the strings cannot quietly go back to
|
|
8
|
+
* being hard-coded.
|
|
9
|
+
*/
|
|
10
|
+
import { describe, expect, it, afterEach } from 'vitest'
|
|
11
|
+
import { mount, unmount, flushSync } from 'svelte'
|
|
12
|
+
import SvRichText from './SvRichText.svelte'
|
|
13
|
+
import SvMultiSelect from './SvMultiSelect.svelte'
|
|
14
|
+
import SvGridSelect from './SvGridSelect.svelte'
|
|
15
|
+
import SvTree from './SvTree.svelte'
|
|
16
|
+
|
|
17
|
+
function mnt(Comp: unknown, props: Record<string, unknown>) {
|
|
18
|
+
const target = document.createElement('div')
|
|
19
|
+
document.body.appendChild(target)
|
|
20
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
21
|
+
const app = mount(Comp as any, { target, props: props as any })
|
|
22
|
+
flushSync()
|
|
23
|
+
return { target, destroy: () => { unmount(app); target.remove() } }
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
let cleanup: (() => void) | null = null
|
|
27
|
+
afterEach(() => {
|
|
28
|
+
cleanup?.()
|
|
29
|
+
cleanup = null
|
|
30
|
+
document.querySelectorAll('.sv-ms__panel, .sv-gs__panel').forEach((n) => n.remove())
|
|
31
|
+
})
|
|
32
|
+
|
|
33
|
+
describe('SvRichText localization', () => {
|
|
34
|
+
it('defaults to English toolbar labels', () => {
|
|
35
|
+
const g = mnt(SvRichText, {})
|
|
36
|
+
cleanup = g.destroy
|
|
37
|
+
const bold = g.target.querySelector('[data-tool="bold"]')!
|
|
38
|
+
expect(bold.getAttribute('title')).toBe('Bold')
|
|
39
|
+
expect(bold.getAttribute('aria-label')).toBe('Bold')
|
|
40
|
+
expect(g.target.querySelector('[role="toolbar"]')!.getAttribute('aria-label')).toBe('Formatting')
|
|
41
|
+
})
|
|
42
|
+
|
|
43
|
+
it('takes per-tool overrides through `messages`', () => {
|
|
44
|
+
const g = mnt(SvRichText, { messages: { bold: 'Fett', italic: 'Kursiv', toolbar: 'Formatierung' } })
|
|
45
|
+
cleanup = g.destroy
|
|
46
|
+
const bold = g.target.querySelector('[data-tool="bold"]')!
|
|
47
|
+
expect(bold.getAttribute('title')).toBe('Fett')
|
|
48
|
+
expect(bold.getAttribute('aria-label')).toBe('Fett')
|
|
49
|
+
expect(g.target.querySelector('[data-tool="italic"]')!.getAttribute('title')).toBe('Kursiv')
|
|
50
|
+
expect(g.target.querySelector('[role="toolbar"]')!.getAttribute('aria-label')).toBe('Formatierung')
|
|
51
|
+
// An un-overridden key keeps its default rather than going blank.
|
|
52
|
+
expect(g.target.querySelector('[data-tool="underline"]')!.getAttribute('title')).toBe('Underline')
|
|
53
|
+
})
|
|
54
|
+
|
|
55
|
+
it('keeps the glyphs fixed - they are not language-dependent', () => {
|
|
56
|
+
const g = mnt(SvRichText, { messages: { bold: 'Fett' } })
|
|
57
|
+
cleanup = g.destroy
|
|
58
|
+
expect(g.target.querySelector('[data-tool="bold"]')!.textContent?.trim()).toBe('B')
|
|
59
|
+
})
|
|
60
|
+
})
|
|
61
|
+
|
|
62
|
+
describe('empty / search text is overridable', () => {
|
|
63
|
+
it('SvMultiSelect emptyText + search chrome', () => {
|
|
64
|
+
const g = mnt(SvMultiSelect, {
|
|
65
|
+
options: [],
|
|
66
|
+
emptyText: 'Keine Treffer',
|
|
67
|
+
searchPlaceholder: 'Suchen…',
|
|
68
|
+
searchLabel: 'Optionen suchen',
|
|
69
|
+
})
|
|
70
|
+
cleanup = g.destroy
|
|
71
|
+
g.target.querySelector<HTMLButtonElement>('.sv-ms__trigger')?.click()
|
|
72
|
+
flushSync()
|
|
73
|
+
const panel = document.querySelector('.sv-ms__panel')
|
|
74
|
+
expect(panel?.textContent).toContain('Keine Treffer')
|
|
75
|
+
const search = panel?.querySelector('input')
|
|
76
|
+
expect(search?.getAttribute('placeholder')).toBe('Suchen…')
|
|
77
|
+
expect(search?.getAttribute('aria-label')).toBe('Optionen suchen')
|
|
78
|
+
})
|
|
79
|
+
|
|
80
|
+
it('SvGridSelect emptyText + search chrome', () => {
|
|
81
|
+
const g = mnt(SvGridSelect, {
|
|
82
|
+
columns: [{ field: 'name', header: 'Name' }],
|
|
83
|
+
options: [],
|
|
84
|
+
emptyText: 'Sin resultados',
|
|
85
|
+
searchPlaceholder: 'Buscar…',
|
|
86
|
+
searchLabel: 'Buscar opciones',
|
|
87
|
+
})
|
|
88
|
+
cleanup = g.destroy
|
|
89
|
+
g.target.querySelector<HTMLButtonElement>('.sv-gs__trigger')?.click()
|
|
90
|
+
flushSync()
|
|
91
|
+
const panel = document.querySelector('.sv-gs__panel')
|
|
92
|
+
expect(panel?.textContent).toContain('Sin resultados')
|
|
93
|
+
const search = panel?.querySelector('input')
|
|
94
|
+
expect(search?.getAttribute('placeholder')).toBe('Buscar…')
|
|
95
|
+
expect(search?.getAttribute('aria-label')).toBe('Buscar opciones')
|
|
96
|
+
})
|
|
97
|
+
|
|
98
|
+
it('SvTree lazy-load placeholder', async () => {
|
|
99
|
+
let resolveKids: (v: Array<{ id: string; label: string }>) => void = () => {}
|
|
100
|
+
const g = mnt(SvTree, {
|
|
101
|
+
nodes: [{ id: 'root', label: 'Root', lazy: true }],
|
|
102
|
+
loadChildren: () => new Promise<Array<{ id: string; label: string }>>((r) => { resolveKids = r }),
|
|
103
|
+
loadingText: 'Chargement…',
|
|
104
|
+
})
|
|
105
|
+
cleanup = g.destroy
|
|
106
|
+
g.target.querySelector<HTMLElement>('.sv-tree__twist')?.click()
|
|
107
|
+
flushSync()
|
|
108
|
+
await Promise.resolve()
|
|
109
|
+
flushSync()
|
|
110
|
+
expect(g.target.textContent).toContain('Chargement…')
|
|
111
|
+
resolveKids([{ id: 'kid', label: 'Child' }])
|
|
112
|
+
})
|
|
113
|
+
})
|
package/themes/ag-alpine.css
CHANGED
|
@@ -16,6 +16,17 @@
|
|
|
16
16
|
--sg-on-accent: #ffffff;
|
|
17
17
|
--sg-radius: 3px;
|
|
18
18
|
--sg-font: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
|
|
19
|
+
--sg-danger: #dc2626;
|
|
20
|
+
--sg-success: #16a34a;
|
|
21
|
+
--sg-warning: #d97706;
|
|
22
|
+
--sg-info: #0891b2;
|
|
23
|
+
--sg-focus-ring: #2196f3;
|
|
24
|
+
--sg-muted-bg: rgba(33, 150, 243, 0.1);
|
|
25
|
+
--sg-skeleton-bg: rgba(33, 150, 243, 0.1);
|
|
26
|
+
--sg-radius-lg: 6px;
|
|
27
|
+
--sg-rating-on: #d97706;
|
|
28
|
+
--sg-rating-empty: #babfc7;
|
|
29
|
+
--sg-invalid-fg: #dc2626;
|
|
19
30
|
--sg-scrollbar-bg: #f8f8f8;
|
|
20
31
|
--sg-scrollbar-border: #babfc7;
|
|
21
32
|
--sg-scrollbar-thumb: rgba(24, 29, 31, 0.5);
|
|
@@ -45,6 +56,17 @@
|
|
|
45
56
|
--sg-on-accent: #ffffff;
|
|
46
57
|
--sg-radius: 3px;
|
|
47
58
|
--sg-font: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
|
|
59
|
+
--sg-danger: #f87171;
|
|
60
|
+
--sg-success: #4ade80;
|
|
61
|
+
--sg-warning: #fbbf24;
|
|
62
|
+
--sg-info: #22d3ee;
|
|
63
|
+
--sg-focus-ring: #2196f3;
|
|
64
|
+
--sg-muted-bg: rgba(33, 150, 243, 0.1);
|
|
65
|
+
--sg-skeleton-bg: rgba(33, 150, 243, 0.1);
|
|
66
|
+
--sg-radius-lg: 6px;
|
|
67
|
+
--sg-rating-on: #fbbf24;
|
|
68
|
+
--sg-rating-empty: #68686e;
|
|
69
|
+
--sg-invalid-fg: #f87171;
|
|
48
70
|
--sg-scrollbar-bg: #222628;
|
|
49
71
|
--sg-scrollbar-border: #68686e;
|
|
50
72
|
--sg-scrollbar-thumb: rgba(255, 255, 255, 0.5);
|
package/themes/antd.css
CHANGED
|
@@ -16,6 +16,17 @@
|
|
|
16
16
|
--sg-on-accent: #ffffff;
|
|
17
17
|
--sg-radius: 6px;
|
|
18
18
|
--sg-font: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "PingFang SC", sans-serif;
|
|
19
|
+
--sg-danger: #dc2626;
|
|
20
|
+
--sg-success: #16a34a;
|
|
21
|
+
--sg-warning: #d97706;
|
|
22
|
+
--sg-info: #0891b2;
|
|
23
|
+
--sg-focus-ring: #1677ff;
|
|
24
|
+
--sg-muted-bg: #f5f5f5;
|
|
25
|
+
--sg-skeleton-bg: #f5f5f5;
|
|
26
|
+
--sg-radius-lg: 12px;
|
|
27
|
+
--sg-rating-on: #d97706;
|
|
28
|
+
--sg-rating-empty: #d9d9d9;
|
|
29
|
+
--sg-invalid-fg: #dc2626;
|
|
19
30
|
--sg-scrollbar-bg: #fafafa;
|
|
20
31
|
--sg-scrollbar-border: #d9d9d9;
|
|
21
32
|
--sg-scrollbar-thumb: rgba(0, 0, 0, 0.65);
|
|
@@ -45,6 +56,17 @@
|
|
|
45
56
|
--sg-on-accent: #ffffff;
|
|
46
57
|
--sg-radius: 6px;
|
|
47
58
|
--sg-font: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "PingFang SC", sans-serif;
|
|
59
|
+
--sg-danger: #f87171;
|
|
60
|
+
--sg-success: #4ade80;
|
|
61
|
+
--sg-warning: #fbbf24;
|
|
62
|
+
--sg-info: #22d3ee;
|
|
63
|
+
--sg-focus-ring: #177ddc;
|
|
64
|
+
--sg-muted-bg: #262626;
|
|
65
|
+
--sg-skeleton-bg: #262626;
|
|
66
|
+
--sg-radius-lg: 12px;
|
|
67
|
+
--sg-rating-on: #fbbf24;
|
|
68
|
+
--sg-rating-empty: #424242;
|
|
69
|
+
--sg-invalid-fg: #f87171;
|
|
48
70
|
--sg-scrollbar-bg: #1f1f1f;
|
|
49
71
|
--sg-scrollbar-border: #424242;
|
|
50
72
|
--sg-scrollbar-thumb: rgba(255, 255, 255, 0.65);
|
package/themes/atlassian.css
CHANGED
|
@@ -16,6 +16,17 @@
|
|
|
16
16
|
--sg-on-accent: #ffffff;
|
|
17
17
|
--sg-radius: 3px;
|
|
18
18
|
--sg-font: "Charlie Display", "Atlassian Sans", -apple-system, "Segoe UI", sans-serif;
|
|
19
|
+
--sg-danger: #dc2626;
|
|
20
|
+
--sg-success: #16a34a;
|
|
21
|
+
--sg-warning: #d97706;
|
|
22
|
+
--sg-info: #0891b2;
|
|
23
|
+
--sg-focus-ring: #0c66e4;
|
|
24
|
+
--sg-muted-bg: #f1f2f4;
|
|
25
|
+
--sg-skeleton-bg: #f1f2f4;
|
|
26
|
+
--sg-radius-lg: 6px;
|
|
27
|
+
--sg-rating-on: #d97706;
|
|
28
|
+
--sg-rating-empty: #dcdfe4;
|
|
29
|
+
--sg-invalid-fg: #dc2626;
|
|
19
30
|
--sg-scrollbar-bg: #fafbfc;
|
|
20
31
|
--sg-scrollbar-border: #dcdfe4;
|
|
21
32
|
--sg-scrollbar-thumb: #44546f;
|
|
@@ -45,6 +56,17 @@
|
|
|
45
56
|
--sg-on-accent: #ffffff;
|
|
46
57
|
--sg-radius: 3px;
|
|
47
58
|
--sg-font: "Charlie Display", "Atlassian Sans", -apple-system, "Segoe UI", sans-serif;
|
|
59
|
+
--sg-danger: #f87171;
|
|
60
|
+
--sg-success: #4ade80;
|
|
61
|
+
--sg-warning: #fbbf24;
|
|
62
|
+
--sg-info: #22d3ee;
|
|
63
|
+
--sg-focus-ring: #579dff;
|
|
64
|
+
--sg-muted-bg: #2c333a;
|
|
65
|
+
--sg-skeleton-bg: #2c333a;
|
|
66
|
+
--sg-radius-lg: 6px;
|
|
67
|
+
--sg-rating-on: #fbbf24;
|
|
68
|
+
--sg-rating-empty: #38414a;
|
|
69
|
+
--sg-invalid-fg: #f87171;
|
|
48
70
|
--sg-scrollbar-bg: #22272b;
|
|
49
71
|
--sg-scrollbar-border: #38414a;
|
|
50
72
|
--sg-scrollbar-thumb: #8590a2;
|
package/themes/bootstrap.css
CHANGED
|
@@ -16,6 +16,17 @@
|
|
|
16
16
|
--sg-on-accent: #ffffff;
|
|
17
17
|
--sg-radius: 6px;
|
|
18
18
|
--sg-font: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
|
|
19
|
+
--sg-danger: #dc2626;
|
|
20
|
+
--sg-success: #16a34a;
|
|
21
|
+
--sg-warning: #d97706;
|
|
22
|
+
--sg-info: #0891b2;
|
|
23
|
+
--sg-focus-ring: #0d6efd;
|
|
24
|
+
--sg-muted-bg: #f2f2f2;
|
|
25
|
+
--sg-skeleton-bg: #f2f2f2;
|
|
26
|
+
--sg-radius-lg: 12px;
|
|
27
|
+
--sg-rating-on: #d97706;
|
|
28
|
+
--sg-rating-empty: #dee2e6;
|
|
29
|
+
--sg-invalid-fg: #dc2626;
|
|
19
30
|
--sg-scrollbar-bg: #f8f9fa;
|
|
20
31
|
--sg-scrollbar-border: #dee2e6;
|
|
21
32
|
--sg-scrollbar-thumb: #6c757d;
|
|
@@ -45,6 +56,17 @@
|
|
|
45
56
|
--sg-on-accent: #ffffff;
|
|
46
57
|
--sg-radius: 6px;
|
|
47
58
|
--sg-font: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
|
|
59
|
+
--sg-danger: #f87171;
|
|
60
|
+
--sg-success: #4ade80;
|
|
61
|
+
--sg-warning: #fbbf24;
|
|
62
|
+
--sg-info: #22d3ee;
|
|
63
|
+
--sg-focus-ring: #0d6efd;
|
|
64
|
+
--sg-muted-bg: #2c3034;
|
|
65
|
+
--sg-skeleton-bg: #2c3034;
|
|
66
|
+
--sg-radius-lg: 12px;
|
|
67
|
+
--sg-rating-on: #fbbf24;
|
|
68
|
+
--sg-rating-empty: #495057;
|
|
69
|
+
--sg-invalid-fg: #f87171;
|
|
48
70
|
--sg-scrollbar-bg: #2b3035;
|
|
49
71
|
--sg-scrollbar-border: #495057;
|
|
50
72
|
--sg-scrollbar-thumb: #adb5bd;
|
package/themes/carbon.css
CHANGED
|
@@ -16,6 +16,17 @@
|
|
|
16
16
|
--sg-on-accent: #ffffff;
|
|
17
17
|
--sg-radius: 0px;
|
|
18
18
|
--sg-font: "IBM Plex Sans", "Helvetica Neue", Arial, sans-serif;
|
|
19
|
+
--sg-danger: #dc2626;
|
|
20
|
+
--sg-success: #16a34a;
|
|
21
|
+
--sg-warning: #d97706;
|
|
22
|
+
--sg-info: #0891b2;
|
|
23
|
+
--sg-focus-ring: #0f62fe;
|
|
24
|
+
--sg-muted-bg: #e8e8e8;
|
|
25
|
+
--sg-skeleton-bg: #e8e8e8;
|
|
26
|
+
--sg-radius-lg: 0px;
|
|
27
|
+
--sg-rating-on: #d97706;
|
|
28
|
+
--sg-rating-empty: #e0e0e0;
|
|
29
|
+
--sg-invalid-fg: #dc2626;
|
|
19
30
|
--sg-scrollbar-bg: #e0e0e0;
|
|
20
31
|
--sg-scrollbar-border: #e0e0e0;
|
|
21
32
|
--sg-scrollbar-thumb: #525252;
|
|
@@ -45,6 +56,17 @@
|
|
|
45
56
|
--sg-on-accent: #18181b;
|
|
46
57
|
--sg-radius: 0px;
|
|
47
58
|
--sg-font: "IBM Plex Sans", "Helvetica Neue", Arial, sans-serif;
|
|
59
|
+
--sg-danger: #f87171;
|
|
60
|
+
--sg-success: #4ade80;
|
|
61
|
+
--sg-warning: #fbbf24;
|
|
62
|
+
--sg-info: #22d3ee;
|
|
63
|
+
--sg-focus-ring: #78a9ff;
|
|
64
|
+
--sg-muted-bg: #333333;
|
|
65
|
+
--sg-skeleton-bg: #333333;
|
|
66
|
+
--sg-radius-lg: 0px;
|
|
67
|
+
--sg-rating-on: #fbbf24;
|
|
68
|
+
--sg-rating-empty: #393939;
|
|
69
|
+
--sg-invalid-fg: #f87171;
|
|
48
70
|
--sg-scrollbar-bg: #393939;
|
|
49
71
|
--sg-scrollbar-border: #393939;
|
|
50
72
|
--sg-scrollbar-thumb: #c6c6c6;
|
package/themes/catppuccin.css
CHANGED
|
@@ -16,6 +16,17 @@
|
|
|
16
16
|
--sg-on-accent: #ffffff;
|
|
17
17
|
--sg-radius: 8px;
|
|
18
18
|
--sg-font: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
|
|
19
|
+
--sg-danger: #dc2626;
|
|
20
|
+
--sg-success: #16a34a;
|
|
21
|
+
--sg-warning: #d97706;
|
|
22
|
+
--sg-info: #0891b2;
|
|
23
|
+
--sg-focus-ring: #8839ef;
|
|
24
|
+
--sg-muted-bg: #dce0e8;
|
|
25
|
+
--sg-skeleton-bg: #dce0e8;
|
|
26
|
+
--sg-radius-lg: 16px;
|
|
27
|
+
--sg-rating-on: #d97706;
|
|
28
|
+
--sg-rating-empty: #ccd0da;
|
|
29
|
+
--sg-invalid-fg: #dc2626;
|
|
19
30
|
--sg-scrollbar-bg: #e6e9ef;
|
|
20
31
|
--sg-scrollbar-border: #ccd0da;
|
|
21
32
|
--sg-scrollbar-thumb: #6c6f85;
|
|
@@ -45,6 +56,17 @@
|
|
|
45
56
|
--sg-on-accent: #18181b;
|
|
46
57
|
--sg-radius: 8px;
|
|
47
58
|
--sg-font: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
|
|
59
|
+
--sg-danger: #f87171;
|
|
60
|
+
--sg-success: #4ade80;
|
|
61
|
+
--sg-warning: #fbbf24;
|
|
62
|
+
--sg-info: #22d3ee;
|
|
63
|
+
--sg-focus-ring: #cba6f7;
|
|
64
|
+
--sg-muted-bg: #313244;
|
|
65
|
+
--sg-skeleton-bg: #313244;
|
|
66
|
+
--sg-radius-lg: 16px;
|
|
67
|
+
--sg-rating-on: #fbbf24;
|
|
68
|
+
--sg-rating-empty: #313244;
|
|
69
|
+
--sg-invalid-fg: #f87171;
|
|
48
70
|
--sg-scrollbar-bg: #181825;
|
|
49
71
|
--sg-scrollbar-border: #313244;
|
|
50
72
|
--sg-scrollbar-thumb: #a6adc8;
|
package/themes/dracula.css
CHANGED
|
@@ -16,6 +16,17 @@
|
|
|
16
16
|
--sg-on-accent: #ffffff;
|
|
17
17
|
--sg-radius: 6px;
|
|
18
18
|
--sg-font: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
|
|
19
|
+
--sg-danger: #dc2626;
|
|
20
|
+
--sg-success: #16a34a;
|
|
21
|
+
--sg-warning: #d97706;
|
|
22
|
+
--sg-info: #0891b2;
|
|
23
|
+
--sg-focus-ring: #644ac9;
|
|
24
|
+
--sg-muted-bg: #f2efe3;
|
|
25
|
+
--sg-skeleton-bg: #f2efe3;
|
|
26
|
+
--sg-radius-lg: 12px;
|
|
27
|
+
--sg-rating-on: #d97706;
|
|
28
|
+
--sg-rating-empty: #dedccf;
|
|
29
|
+
--sg-invalid-fg: #dc2626;
|
|
19
30
|
--sg-scrollbar-bg: #ece9df;
|
|
20
31
|
--sg-scrollbar-border: #dedccf;
|
|
21
32
|
--sg-scrollbar-thumb: #6c664b;
|
|
@@ -45,6 +56,17 @@
|
|
|
45
56
|
--sg-on-accent: #18181b;
|
|
46
57
|
--sg-radius: 6px;
|
|
47
58
|
--sg-font: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
|
|
59
|
+
--sg-danger: #f87171;
|
|
60
|
+
--sg-success: #4ade80;
|
|
61
|
+
--sg-warning: #fbbf24;
|
|
62
|
+
--sg-info: #22d3ee;
|
|
63
|
+
--sg-focus-ring: #bd93f9;
|
|
64
|
+
--sg-muted-bg: #343746;
|
|
65
|
+
--sg-skeleton-bg: #343746;
|
|
66
|
+
--sg-radius-lg: 12px;
|
|
67
|
+
--sg-rating-on: #fbbf24;
|
|
68
|
+
--sg-rating-empty: #44475a;
|
|
69
|
+
--sg-invalid-fg: #f87171;
|
|
48
70
|
--sg-scrollbar-bg: #21222c;
|
|
49
71
|
--sg-scrollbar-border: #44475a;
|
|
50
72
|
--sg-scrollbar-thumb: #6272a4;
|
package/themes/ember.css
CHANGED
|
@@ -22,6 +22,17 @@
|
|
|
22
22
|
--sg-on-accent: #ffffff;
|
|
23
23
|
--sg-radius: 6px;
|
|
24
24
|
--sg-font: ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
|
|
25
|
+
--sg-danger: #dc2626;
|
|
26
|
+
--sg-success: #16a34a;
|
|
27
|
+
--sg-warning: #d97706;
|
|
28
|
+
--sg-info: #0891b2;
|
|
29
|
+
--sg-focus-ring: #ff3e00;
|
|
30
|
+
--sg-muted-bg: #f5f5f4;
|
|
31
|
+
--sg-skeleton-bg: #f5f5f4;
|
|
32
|
+
--sg-radius-lg: 12px;
|
|
33
|
+
--sg-rating-on: #d97706;
|
|
34
|
+
--sg-rating-empty: #e7e5e4;
|
|
35
|
+
--sg-invalid-fg: #dc2626;
|
|
25
36
|
--sg-scrollbar-bg: #fafaf9;
|
|
26
37
|
--sg-scrollbar-border: #e7e5e4;
|
|
27
38
|
--sg-scrollbar-thumb: #78716c;
|
|
@@ -57,6 +68,17 @@
|
|
|
57
68
|
--sg-on-accent: #ffffff;
|
|
58
69
|
--sg-radius: 6px;
|
|
59
70
|
--sg-font: ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
|
|
71
|
+
--sg-danger: #f87171;
|
|
72
|
+
--sg-success: #4ade80;
|
|
73
|
+
--sg-warning: #fbbf24;
|
|
74
|
+
--sg-info: #22d3ee;
|
|
75
|
+
--sg-focus-ring: #ff5a1f;
|
|
76
|
+
--sg-muted-bg: #1c1917;
|
|
77
|
+
--sg-skeleton-bg: #1c1917;
|
|
78
|
+
--sg-radius-lg: 12px;
|
|
79
|
+
--sg-rating-on: #fbbf24;
|
|
80
|
+
--sg-rating-empty: #292524;
|
|
81
|
+
--sg-invalid-fg: #f87171;
|
|
60
82
|
--sg-scrollbar-bg: #1c1917;
|
|
61
83
|
--sg-scrollbar-border: #292524;
|
|
62
84
|
--sg-scrollbar-thumb: #a8a29e;
|
package/themes/excel.css
CHANGED
|
@@ -16,6 +16,17 @@
|
|
|
16
16
|
--sg-on-accent: #ffffff;
|
|
17
17
|
--sg-radius: 0px;
|
|
18
18
|
--sg-font: "Aptos", "Segoe UI", Calibri, Arial, sans-serif;
|
|
19
|
+
--sg-danger: #dc2626;
|
|
20
|
+
--sg-success: #16a34a;
|
|
21
|
+
--sg-warning: #d97706;
|
|
22
|
+
--sg-info: #0891b2;
|
|
23
|
+
--sg-focus-ring: #107c41;
|
|
24
|
+
--sg-muted-bg: #edebe9;
|
|
25
|
+
--sg-skeleton-bg: #edebe9;
|
|
26
|
+
--sg-radius-lg: 0px;
|
|
27
|
+
--sg-rating-on: #d97706;
|
|
28
|
+
--sg-rating-empty: #d2d0ce;
|
|
29
|
+
--sg-invalid-fg: #dc2626;
|
|
19
30
|
--sg-scrollbar-bg: #f3f2f1;
|
|
20
31
|
--sg-scrollbar-border: #d2d0ce;
|
|
21
32
|
--sg-scrollbar-thumb: #605e5c;
|
|
@@ -45,6 +56,17 @@
|
|
|
45
56
|
--sg-on-accent: #18181b;
|
|
46
57
|
--sg-radius: 0px;
|
|
47
58
|
--sg-font: "Aptos", "Segoe UI", Calibri, Arial, sans-serif;
|
|
59
|
+
--sg-danger: #f87171;
|
|
60
|
+
--sg-success: #4ade80;
|
|
61
|
+
--sg-warning: #fbbf24;
|
|
62
|
+
--sg-info: #22d3ee;
|
|
63
|
+
--sg-focus-ring: #58c188;
|
|
64
|
+
--sg-muted-bg: #323130;
|
|
65
|
+
--sg-skeleton-bg: #323130;
|
|
66
|
+
--sg-radius-lg: 0px;
|
|
67
|
+
--sg-rating-on: #fbbf24;
|
|
68
|
+
--sg-rating-empty: #3b3a39;
|
|
69
|
+
--sg-invalid-fg: #f87171;
|
|
48
70
|
--sg-scrollbar-bg: #252423;
|
|
49
71
|
--sg-scrollbar-border: #3b3a39;
|
|
50
72
|
--sg-scrollbar-thumb: #c8c6c4;
|
package/themes/fluent.css
CHANGED
|
@@ -16,6 +16,17 @@
|
|
|
16
16
|
--sg-on-accent: #ffffff;
|
|
17
17
|
--sg-radius: 4px;
|
|
18
18
|
--sg-font: "Segoe UI Variable", "Segoe UI", system-ui, sans-serif;
|
|
19
|
+
--sg-danger: #dc2626;
|
|
20
|
+
--sg-success: #16a34a;
|
|
21
|
+
--sg-warning: #d97706;
|
|
22
|
+
--sg-info: #0891b2;
|
|
23
|
+
--sg-focus-ring: #0f6cbd;
|
|
24
|
+
--sg-muted-bg: #f0f0f0;
|
|
25
|
+
--sg-skeleton-bg: #f0f0f0;
|
|
26
|
+
--sg-radius-lg: 8px;
|
|
27
|
+
--sg-rating-on: #d97706;
|
|
28
|
+
--sg-rating-empty: #e0e0e0;
|
|
29
|
+
--sg-invalid-fg: #dc2626;
|
|
19
30
|
--sg-scrollbar-bg: #f5f5f5;
|
|
20
31
|
--sg-scrollbar-border: #e0e0e0;
|
|
21
32
|
--sg-scrollbar-thumb: #616161;
|
|
@@ -45,6 +56,17 @@
|
|
|
45
56
|
--sg-on-accent: #ffffff;
|
|
46
57
|
--sg-radius: 4px;
|
|
47
58
|
--sg-font: "Segoe UI Variable", "Segoe UI", system-ui, sans-serif;
|
|
59
|
+
--sg-danger: #f87171;
|
|
60
|
+
--sg-success: #4ade80;
|
|
61
|
+
--sg-warning: #fbbf24;
|
|
62
|
+
--sg-info: #22d3ee;
|
|
63
|
+
--sg-focus-ring: #479ef5;
|
|
64
|
+
--sg-muted-bg: #3d3d3d;
|
|
65
|
+
--sg-skeleton-bg: #3d3d3d;
|
|
66
|
+
--sg-radius-lg: 8px;
|
|
67
|
+
--sg-rating-on: #fbbf24;
|
|
68
|
+
--sg-rating-empty: #666666;
|
|
69
|
+
--sg-invalid-fg: #f87171;
|
|
48
70
|
--sg-scrollbar-bg: #141414;
|
|
49
71
|
--sg-scrollbar-border: #666666;
|
|
50
72
|
--sg-scrollbar-thumb: #d6d6d6;
|
package/themes/github.css
CHANGED
|
@@ -16,6 +16,17 @@
|
|
|
16
16
|
--sg-on-accent: #ffffff;
|
|
17
17
|
--sg-radius: 6px;
|
|
18
18
|
--sg-font: -apple-system, BlinkMacSystemFont, "Segoe UI", "Noto Sans", Helvetica, Arial, sans-serif;
|
|
19
|
+
--sg-danger: #dc2626;
|
|
20
|
+
--sg-success: #16a34a;
|
|
21
|
+
--sg-warning: #d97706;
|
|
22
|
+
--sg-info: #0891b2;
|
|
23
|
+
--sg-focus-ring: #0969da;
|
|
24
|
+
--sg-muted-bg: #f6f8fa;
|
|
25
|
+
--sg-skeleton-bg: #f6f8fa;
|
|
26
|
+
--sg-radius-lg: 12px;
|
|
27
|
+
--sg-rating-on: #d97706;
|
|
28
|
+
--sg-rating-empty: #d1d9e0;
|
|
29
|
+
--sg-invalid-fg: #dc2626;
|
|
19
30
|
--sg-scrollbar-bg: #f6f8fa;
|
|
20
31
|
--sg-scrollbar-border: #d1d9e0;
|
|
21
32
|
--sg-scrollbar-thumb: #59636e;
|
|
@@ -45,6 +56,17 @@
|
|
|
45
56
|
--sg-on-accent: #ffffff;
|
|
46
57
|
--sg-radius: 6px;
|
|
47
58
|
--sg-font: -apple-system, BlinkMacSystemFont, "Segoe UI", "Noto Sans", Helvetica, Arial, sans-serif;
|
|
59
|
+
--sg-danger: #f87171;
|
|
60
|
+
--sg-success: #4ade80;
|
|
61
|
+
--sg-warning: #fbbf24;
|
|
62
|
+
--sg-info: #22d3ee;
|
|
63
|
+
--sg-focus-ring: #4493f8;
|
|
64
|
+
--sg-muted-bg: #151b23;
|
|
65
|
+
--sg-skeleton-bg: #151b23;
|
|
66
|
+
--sg-radius-lg: 12px;
|
|
67
|
+
--sg-rating-on: #fbbf24;
|
|
68
|
+
--sg-rating-empty: #3d444d;
|
|
69
|
+
--sg-invalid-fg: #f87171;
|
|
48
70
|
--sg-scrollbar-bg: #151b23;
|
|
49
71
|
--sg-scrollbar-border: #3d444d;
|
|
50
72
|
--sg-scrollbar-thumb: #9198a1;
|