fluentui-svelte 0.1.0
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/LICENSE +21 -0
- package/README.md +201 -0
- package/dist/components/auto-suggest-box/auto-suggest-box.d.ts +2 -0
- package/dist/components/auto-suggest-box/auto-suggest-box.js +2 -0
- package/dist/components/auto-suggest-box/auto-suggest-box.svelte +457 -0
- package/dist/components/auto-suggest-box/auto-suggest-box.svelte.d.ts +4 -0
- package/dist/components/auto-suggest-box/docs/llms.md +73 -0
- package/dist/components/auto-suggest-box/option.svelte +82 -0
- package/dist/components/auto-suggest-box/option.svelte.d.ts +4 -0
- package/dist/components/auto-suggest-box/types.d.ts +140 -0
- package/dist/components/auto-suggest-box/types.js +1 -0
- package/dist/components/avatar/avatar.svelte +269 -0
- package/dist/components/avatar/avatar.svelte.d.ts +20 -0
- package/dist/components/avatar/docs/llms.md +92 -0
- package/dist/components/avatar/type.d.ts +63 -0
- package/dist/components/avatar/type.js +1 -0
- package/dist/components/badge/badge-icon.svelte +103 -0
- package/dist/components/badge/badge-icon.svelte.d.ts +25 -0
- package/dist/components/badge/badge.svelte +163 -0
- package/dist/components/badge/badge.svelte.d.ts +20 -0
- package/dist/components/badge/docs/llms.md +133 -0
- package/dist/components/badge/types.d.ts +70 -0
- package/dist/components/badge/types.js +1 -0
- package/dist/components/badge/utils.svelte.d.ts +16 -0
- package/dist/components/badge/utils.svelte.js +35 -0
- package/dist/components/button/button.svelte +203 -0
- package/dist/components/button/button.svelte.d.ts +38 -0
- package/dist/components/button/docs/llms.md +102 -0
- package/dist/components/button/split-button.svelte +66 -0
- package/dist/components/button/split-button.svelte.d.ts +4 -0
- package/dist/components/button/types.d.ts +84 -0
- package/dist/components/button/types.js +1 -0
- package/dist/components/calendar-date-picker/calendar-date-picker.svelte +119 -0
- package/dist/components/calendar-date-picker/calendar-date-picker.svelte.d.ts +4 -0
- package/dist/components/calendar-date-picker/docs/llms.md +33 -0
- package/dist/components/calendar-date-picker/types.d.ts +36 -0
- package/dist/components/calendar-date-picker/types.js +1 -0
- package/dist/components/calendar-view/calendar-view-controls.svelte +115 -0
- package/dist/components/calendar-view/calendar-view-controls.svelte.d.ts +3 -0
- package/dist/components/calendar-view/calendar-view-days.svelte +210 -0
- package/dist/components/calendar-view/calendar-view-days.svelte.d.ts +3 -0
- package/dist/components/calendar-view/calendar-view-grid.d.ts +38 -0
- package/dist/components/calendar-view/calendar-view-grid.js +140 -0
- package/dist/components/calendar-view/calendar-view-header.svelte +66 -0
- package/dist/components/calendar-view/calendar-view-header.svelte.d.ts +18 -0
- package/dist/components/calendar-view/calendar-view-item.svelte +181 -0
- package/dist/components/calendar-view/calendar-view-item.svelte.d.ts +4 -0
- package/dist/components/calendar-view/calendar-view-months.svelte +165 -0
- package/dist/components/calendar-view/calendar-view-months.svelte.d.ts +3 -0
- package/dist/components/calendar-view/calendar-view-years.svelte +161 -0
- package/dist/components/calendar-view/calendar-view-years.svelte.d.ts +3 -0
- package/dist/components/calendar-view/calendar-view.svelte +451 -0
- package/dist/components/calendar-view/calendar-view.svelte.d.ts +9 -0
- package/dist/components/calendar-view/calendar-view.svelte.js +196 -0
- package/dist/components/calendar-view/docs/llms.md +121 -0
- package/dist/components/calendar-view/index.d.ts +1 -0
- package/dist/components/calendar-view/index.js +1 -0
- package/dist/components/calendar-view/types.d.ts +174 -0
- package/dist/components/calendar-view/types.js +1 -0
- package/dist/components/checkbox/checkbox.svelte +171 -0
- package/dist/components/checkbox/checkbox.svelte.d.ts +40 -0
- package/dist/components/checkbox/docs/llms.md +78 -0
- package/dist/components/checkbox/types.d.ts +50 -0
- package/dist/components/checkbox/types.js +1 -0
- package/dist/components/date-picker/date-picker.svelte +381 -0
- package/dist/components/date-picker/date-picker.svelte.d.ts +4 -0
- package/dist/components/date-picker/docs/llms.md +52 -0
- package/dist/components/date-picker/index.d.ts +1 -0
- package/dist/components/date-picker/index.js +1 -0
- package/dist/components/date-picker/types.d.ts +74 -0
- package/dist/components/date-picker/types.js +1 -0
- package/dist/components/dialog/dialog-actions.svelte +37 -0
- package/dist/components/dialog/dialog-actions.svelte.d.ts +4 -0
- package/dist/components/dialog/dialog-content.svelte +17 -0
- package/dist/components/dialog/dialog-content.svelte.d.ts +4 -0
- package/dist/components/dialog/dialog-surface.svelte +95 -0
- package/dist/components/dialog/dialog-surface.svelte.d.ts +4 -0
- package/dist/components/dialog/dialog-title.svelte +33 -0
- package/dist/components/dialog/dialog-title.svelte.d.ts +25 -0
- package/dist/components/dialog/dialog-trigger.svelte +23 -0
- package/dist/components/dialog/dialog-trigger.svelte.d.ts +4 -0
- package/dist/components/dialog/dialog.svelte +64 -0
- package/dist/components/dialog/dialog.svelte.d.ts +7 -0
- package/dist/components/dialog/dialog.svelte.js +2 -0
- package/dist/components/dialog/docs/llms.md +131 -0
- package/dist/components/dialog/types.d.ts +92 -0
- package/dist/components/dialog/types.js +1 -0
- package/dist/components/divider/divider.svelte +120 -0
- package/dist/components/divider/divider.svelte.d.ts +39 -0
- package/dist/components/divider/docs/llms.md +83 -0
- package/dist/components/divider/types.d.ts +32 -0
- package/dist/components/divider/types.js +1 -0
- package/dist/components/dropdown/docs/llms.md +70 -0
- package/dist/components/dropdown/dropdown-context.d.ts +2 -0
- package/dist/components/dropdown/dropdown-context.js +2 -0
- package/dist/components/dropdown/dropdown-option.svelte +31 -0
- package/dist/components/dropdown/dropdown-option.svelte.d.ts +4 -0
- package/dist/components/dropdown/dropdown.svelte +309 -0
- package/dist/components/dropdown/dropdown.svelte.d.ts +4 -0
- package/dist/components/dropdown/types.d.ts +82 -0
- package/dist/components/dropdown/types.js +1 -0
- package/dist/components/dropdown-select/docs/llms.md +72 -0
- package/dist/components/dropdown-select/dropdown-select-option.svelte +87 -0
- package/dist/components/dropdown-select/dropdown-select-option.svelte.d.ts +4 -0
- package/dist/components/dropdown-select/dropdown-select.svelte +165 -0
- package/dist/components/dropdown-select/dropdown-select.svelte.d.ts +4 -0
- package/dist/components/dropdown-select/dropdown-select.svelte.js +48 -0
- package/dist/components/dropdown-select/index.d.ts +2 -0
- package/dist/components/dropdown-select/index.js +2 -0
- package/dist/components/dropdown-select/types.d.ts +46 -0
- package/dist/components/dropdown-select/types.js +1 -0
- package/dist/components/expander/docs/llms.md +88 -0
- package/dist/components/expander/expander.svelte +249 -0
- package/dist/components/expander/expander.svelte.d.ts +21 -0
- package/dist/components/expander/types.d.ts +47 -0
- package/dist/components/expander/types.js +1 -0
- package/dist/components/flyout/docs/llms.md +31 -0
- package/dist/components/flyout/flyout.svelte +148 -0
- package/dist/components/flyout/flyout.svelte.d.ts +19 -0
- package/dist/components/flyout/types.d.ts +36 -0
- package/dist/components/flyout/types.js +1 -0
- package/dist/components/hyperlink/docs/llms.md +33 -0
- package/dist/components/hyperlink/hyperlink.svelte +66 -0
- package/dist/components/hyperlink/hyperlink.svelte.d.ts +16 -0
- package/dist/components/hyperlink/types.d.ts +14 -0
- package/dist/components/hyperlink/types.js +1 -0
- package/dist/components/info-bar/docs/llms.md +81 -0
- package/dist/components/info-bar/info-bar.svelte +140 -0
- package/dist/components/info-bar/info-bar.svelte.d.ts +19 -0
- package/dist/components/info-bar/types.d.ts +27 -0
- package/dist/components/info-bar/types.js +1 -0
- package/dist/components/label/docs/llms.md +67 -0
- package/dist/components/label/label.svelte +95 -0
- package/dist/components/label/label.svelte.d.ts +4 -0
- package/dist/components/label/types.d.ts +32 -0
- package/dist/components/label/types.js +1 -0
- package/dist/components/list-view/docs/llms.md +110 -0
- package/dist/components/list-view/list-view-item.svelte +168 -0
- package/dist/components/list-view/list-view-item.svelte.d.ts +25 -0
- package/dist/components/list-view/list-view.svelte +137 -0
- package/dist/components/list-view/list-view.svelte.d.ts +25 -0
- package/dist/components/list-view/types.d.ts +95 -0
- package/dist/components/list-view/types.js +1 -0
- package/dist/components/list-view/utils.d.ts +6 -0
- package/dist/components/list-view/utils.js +12 -0
- package/dist/components/menu/context-menu-trigger.svelte +84 -0
- package/dist/components/menu/context-menu-trigger.svelte.d.ts +9 -0
- package/dist/components/menu/docs/llms.md +169 -0
- package/dist/components/menu/menu-divider.svelte +9 -0
- package/dist/components/menu/menu-divider.svelte.d.ts +26 -0
- package/dist/components/menu/menu-group.svelte +31 -0
- package/dist/components/menu/menu-group.svelte.d.ts +4 -0
- package/dist/components/menu/menu-item-checkbox.svelte +143 -0
- package/dist/components/menu/menu-item-checkbox.svelte.d.ts +15 -0
- package/dist/components/menu/menu-item-radio.svelte +147 -0
- package/dist/components/menu/menu-item-radio.svelte.d.ts +15 -0
- package/dist/components/menu/menu-item-switch.svelte +194 -0
- package/dist/components/menu/menu-item-switch.svelte.d.ts +15 -0
- package/dist/components/menu/menu-item.svelte +124 -0
- package/dist/components/menu/menu-item.svelte.d.ts +18 -0
- package/dist/components/menu/menu-list.svelte +38 -0
- package/dist/components/menu/menu-list.svelte.d.ts +5 -0
- package/dist/components/menu/menu-popover.svelte +125 -0
- package/dist/components/menu/menu-popover.svelte.d.ts +12 -0
- package/dist/components/menu/menu-trigger.svelte +121 -0
- package/dist/components/menu/menu-trigger.svelte.d.ts +4 -0
- package/dist/components/menu/menu.svelte +124 -0
- package/dist/components/menu/menu.svelte.d.ts +4 -0
- package/dist/components/menu/menu.svelte.js +77 -0
- package/dist/components/menu/types.d.ts +127 -0
- package/dist/components/menu/types.js +1 -0
- package/dist/components/number-box/docs/llms.md +37 -0
- package/dist/components/number-box/number-box.svelte +115 -0
- package/dist/components/number-box/number-box.svelte.d.ts +15 -0
- package/dist/components/number-box/types.d.ts +16 -0
- package/dist/components/number-box/types.js +1 -0
- package/dist/components/persona/docs/llms.md +107 -0
- package/dist/components/persona/persona.svelte +79 -0
- package/dist/components/persona/persona.svelte.d.ts +4 -0
- package/dist/components/persona/types.d.ts +42 -0
- package/dist/components/persona/types.js +1 -0
- package/dist/components/progress-bar/docs/llms.md +67 -0
- package/dist/components/progress-bar/progress-bar.svelte +167 -0
- package/dist/components/progress-bar/progress-bar.svelte.d.ts +15 -0
- package/dist/components/progress-bar/types.d.ts +39 -0
- package/dist/components/progress-bar/types.js +1 -0
- package/dist/components/progress-ring/docs/llms.md +76 -0
- package/dist/components/progress-ring/progress-ring.svelte +145 -0
- package/dist/components/progress-ring/progress-ring.svelte.d.ts +15 -0
- package/dist/components/progress-ring/types.d.ts +42 -0
- package/dist/components/progress-ring/types.js +1 -0
- package/dist/components/radio-button/docs/llms.md +64 -0
- package/dist/components/radio-button/radio-button.svelte +129 -0
- package/dist/components/radio-button/radio-button.svelte.d.ts +19 -0
- package/dist/components/radio-button/types.d.ts +24 -0
- package/dist/components/radio-button/types.js +1 -0
- package/dist/components/skeleton/docs/llms.md +67 -0
- package/dist/components/skeleton/skeleton.svelte +106 -0
- package/dist/components/skeleton/skeleton.svelte.d.ts +39 -0
- package/dist/components/skeleton/types.d.ts +24 -0
- package/dist/components/skeleton/types.js +1 -0
- package/dist/components/slider/docs/llms.md +75 -0
- package/dist/components/slider/slider.svelte +486 -0
- package/dist/components/slider/slider.svelte.d.ts +19 -0
- package/dist/components/slider/types.d.ts +102 -0
- package/dist/components/slider/types.js +1 -0
- package/dist/components/text-box/docs/llms.md +86 -0
- package/dist/components/text-box/text-box-button.svelte +65 -0
- package/dist/components/text-box/text-box-button.svelte.d.ts +9 -0
- package/dist/components/text-box/text-box.svelte +299 -0
- package/dist/components/text-box/text-box.svelte.d.ts +16 -0
- package/dist/components/text-box/types.d.ts +60 -0
- package/dist/components/text-box/types.js +1 -0
- package/dist/components/textarea/docs/llms.md +55 -0
- package/dist/components/textarea/textarea.svelte +151 -0
- package/dist/components/textarea/textarea.svelte.d.ts +17 -0
- package/dist/components/textarea/types.d.ts +33 -0
- package/dist/components/textarea/types.js +1 -0
- package/dist/components/time-picker/docs/llms.md +47 -0
- package/dist/components/time-picker/index.d.ts +1 -0
- package/dist/components/time-picker/index.js +1 -0
- package/dist/components/time-picker/time-picker.svelte +336 -0
- package/dist/components/time-picker/time-picker.svelte.d.ts +4 -0
- package/dist/components/time-picker/types.d.ts +54 -0
- package/dist/components/time-picker/types.js +1 -0
- package/dist/components/toggle-switch/docs/llms.md +39 -0
- package/dist/components/toggle-switch/toggle-switch.svelte +151 -0
- package/dist/components/toggle-switch/toggle-switch.svelte.d.ts +17 -0
- package/dist/components/toggle-switch/types.d.ts +20 -0
- package/dist/components/toggle-switch/types.js +1 -0
- package/dist/components/tooltip/docs/llms.md +74 -0
- package/dist/components/tooltip/tooltip.svelte +246 -0
- package/dist/components/tooltip/tooltip.svelte.d.ts +18 -0
- package/dist/components/tooltip/types.d.ts +67 -0
- package/dist/components/tooltip/types.js +1 -0
- package/dist/components/tree-view/docs/llms.md +117 -0
- package/dist/components/tree-view/tree-view-item-content.svelte +158 -0
- package/dist/components/tree-view/tree-view-item-content.svelte.d.ts +4 -0
- package/dist/components/tree-view/tree-view-item.svelte +197 -0
- package/dist/components/tree-view/tree-view-item.svelte.d.ts +4 -0
- package/dist/components/tree-view/tree-view.svelte +220 -0
- package/dist/components/tree-view/tree-view.svelte.d.ts +4 -0
- package/dist/components/tree-view/tree-view.svelte.js +111 -0
- package/dist/components/tree-view/types.d.ts +185 -0
- package/dist/components/tree-view/types.js +1 -0
- package/dist/css/class-darkmode.css +186 -0
- package/dist/css/media-darkmode.css +189 -0
- package/dist/css/reset.css +53 -0
- package/dist/css/theme.css +276 -0
- package/dist/css/typography.css +67 -0
- package/dist/css/utils.d.ts +1 -0
- package/dist/css/utils.js +153 -0
- package/dist/index.d.ts +63 -0
- package/dist/index.js +129 -0
- package/dist/internal/components/dynamic-carousel/dynamic-carousel.svelte +449 -0
- package/dist/internal/components/dynamic-carousel/dynamic-carousel.svelte.d.ts +22 -0
- package/dist/internal/components/render-soc/render-soc.svelte +29 -0
- package/dist/internal/components/render-soc/render-soc.svelte.d.ts +30 -0
- package/dist/internal/constants.d.ts +26 -0
- package/dist/internal/constants.js +4036 -0
- package/dist/internal/context.d.ts +14 -0
- package/dist/internal/context.js +13 -0
- package/dist/internal/dom-utils.svelte.d.ts +6 -0
- package/dist/internal/dom-utils.svelte.js +46 -0
- package/dist/internal/floating-ui/floating.svelte.d.ts +15 -0
- package/dist/internal/floating-ui/floating.svelte.js +26 -0
- package/dist/internal/floating-ui/utils.d.ts +3 -0
- package/dist/internal/floating-ui/utils.js +30 -0
- package/dist/internal/index.d.ts +9 -0
- package/dist/internal/index.js +9 -0
- package/dist/internal/polyfills/expander.svelte.d.ts +21 -0
- package/dist/internal/polyfills/expander.svelte.js +96 -0
- package/dist/internal/transitions.d.ts +32 -0
- package/dist/internal/transitions.js +37 -0
- package/dist/internal/utils.d.ts +22 -0
- package/dist/internal/utils.js +63 -0
- package/dist/providers/fluentui-svelte/fluentui-svelte.d.ts +19 -0
- package/dist/providers/fluentui-svelte/fluentui-svelte.js +11 -0
- package/dist/providers/fluentui-svelte/fluentui-svelte.svelte +68 -0
- package/dist/providers/fluentui-svelte/fluentui-svelte.svelte.d.ts +9 -0
- package/dist/types/index.d.ts +117 -0
- package/dist/types/index.js +1 -0
- package/package.json +142 -0
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { createFSContext } from '../../internal/index.js';
|
|
2
|
+
export const [getTreeViewContext, setTreeViewContext] = createFSContext();
|
|
3
|
+
export const [getTreeViewDepth, setTreeViewDepth] = createFSContext();
|
|
4
|
+
export const [getTreeViewItemContext, setTreeViewItemContext] = createFSContext();
|
|
5
|
+
/** */
|
|
6
|
+
export function cascadeCheck(itemId, state, checked) {
|
|
7
|
+
const node = state.get(itemId);
|
|
8
|
+
if (!node)
|
|
9
|
+
throw new Error(`Node with id ${itemId} not found in TREE_NODES.`);
|
|
10
|
+
if (node.disabled)
|
|
11
|
+
return true;
|
|
12
|
+
let indeterminate = false;
|
|
13
|
+
function checkItem(id, _checked, _indeterminate = false) {
|
|
14
|
+
const _node = state.get(id);
|
|
15
|
+
if (!_node)
|
|
16
|
+
throw new Error(`[checkItem()] - Node with id ${id} not found in TREE_NODES.`);
|
|
17
|
+
_node.checked = _checked;
|
|
18
|
+
_node.indeterminate = _indeterminate;
|
|
19
|
+
state.set(id, _node);
|
|
20
|
+
}
|
|
21
|
+
if (node.type === 'branch') {
|
|
22
|
+
const children = state.values().filter((n) => n.parentId === itemId);
|
|
23
|
+
for (const child of children) {
|
|
24
|
+
if (child.disabled) {
|
|
25
|
+
indeterminate = true;
|
|
26
|
+
continue;
|
|
27
|
+
}
|
|
28
|
+
let childIndeterminate = false;
|
|
29
|
+
if (child.type === 'branch') {
|
|
30
|
+
childIndeterminate = cascadeCheck(child.id, state, checked);
|
|
31
|
+
indeterminate = indeterminate || childIndeterminate;
|
|
32
|
+
}
|
|
33
|
+
checkItem(child.id, checked, childIndeterminate);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
// Check Current (leaf or branch) Node
|
|
37
|
+
checkItem(itemId, checked, checked ? indeterminate : false);
|
|
38
|
+
return indeterminate;
|
|
39
|
+
}
|
|
40
|
+
export function bubbleCheck(itemId, state, checked, indeterminate = false) {
|
|
41
|
+
const node = state.get(itemId);
|
|
42
|
+
if (!node)
|
|
43
|
+
throw new Error(`Node with id ${itemId} not found in TREE_NODES.`);
|
|
44
|
+
// Get parent here to avoid infinite recursion if parent is not found in TREE_NODES
|
|
45
|
+
const parent = state.get(node?.parentId || '');
|
|
46
|
+
if (!parent) {
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
let _indeterminate = indeterminate;
|
|
50
|
+
if (!_indeterminate) {
|
|
51
|
+
const siblings = state.values().filter((n) => n.parentId === node.parentId);
|
|
52
|
+
const { someSiblingsChecked, allSiblingsChecked } = siblings.reduce((acc, sibling) => {
|
|
53
|
+
if (sibling.disabled) {
|
|
54
|
+
acc.allSiblingsChecked = false;
|
|
55
|
+
return acc;
|
|
56
|
+
}
|
|
57
|
+
if (sibling.checked)
|
|
58
|
+
acc.someSiblingsChecked = true;
|
|
59
|
+
else
|
|
60
|
+
acc.allSiblingsChecked = false;
|
|
61
|
+
return acc;
|
|
62
|
+
}, { someSiblingsChecked: false, allSiblingsChecked: true });
|
|
63
|
+
_indeterminate = !allSiblingsChecked && someSiblingsChecked;
|
|
64
|
+
parent.checked = allSiblingsChecked;
|
|
65
|
+
}
|
|
66
|
+
parent.indeterminate = _indeterminate;
|
|
67
|
+
bubbleCheck(parent.id, state, checked, _indeterminate);
|
|
68
|
+
}
|
|
69
|
+
export function traversalSync(itemId, state, iterable, checked) {
|
|
70
|
+
const node = state.get(itemId);
|
|
71
|
+
if (!node)
|
|
72
|
+
return;
|
|
73
|
+
const isIndeterminate = cascadeCheck(itemId, state, checked);
|
|
74
|
+
if (node.parentId) {
|
|
75
|
+
bubbleCheck(node.id, state, checked, isIndeterminate);
|
|
76
|
+
}
|
|
77
|
+
const checkedItems = Array.from(state.values()).filter((n) => n.checked);
|
|
78
|
+
if (iterable instanceof Set) {
|
|
79
|
+
iterable.clear();
|
|
80
|
+
for (const { id } of checkedItems) {
|
|
81
|
+
iterable.add(id);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
else if (Array.isArray(iterable)) {
|
|
85
|
+
iterable.length = 0;
|
|
86
|
+
iterable.push(...checkedItems.map(({ id }) => id));
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
export function traversalSyncSingleSelection(itemId, state, iterable) {
|
|
90
|
+
const node = state.get(itemId);
|
|
91
|
+
if (!node)
|
|
92
|
+
return;
|
|
93
|
+
// Uncheck all other nodes
|
|
94
|
+
for (const n of state.values()) {
|
|
95
|
+
if (n.id !== itemId && n.checked) {
|
|
96
|
+
n.checked = false;
|
|
97
|
+
n.indeterminate = false;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
// Check the current node
|
|
101
|
+
node.checked = !node.checked;
|
|
102
|
+
node.indeterminate = false;
|
|
103
|
+
if (iterable instanceof Set) {
|
|
104
|
+
iterable.clear();
|
|
105
|
+
iterable.add(node.id);
|
|
106
|
+
}
|
|
107
|
+
else if (Array.isArray(iterable)) {
|
|
108
|
+
iterable.length = 0;
|
|
109
|
+
iterable.push(node.id);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
import type { HTMLAttributes } from 'svelte/elements';
|
|
2
|
+
import type { FSContext } from '../../internal/index.js';
|
|
3
|
+
import type { Component, Snippet } from 'svelte';
|
|
4
|
+
import type { SvelteMap, SvelteSet } from 'svelte/reactivity';
|
|
5
|
+
import type { Sizes } from '../../types/index.js';
|
|
6
|
+
export type TreeViewNavigation = 'tree' | 'treegrid';
|
|
7
|
+
export type TreeViewSelectionMode = 'single' | 'multiple';
|
|
8
|
+
export type TreeViewItemType = 'item' | 'branch';
|
|
9
|
+
export type TreeViewNode = {
|
|
10
|
+
id: string;
|
|
11
|
+
type: TreeViewItemType;
|
|
12
|
+
parentId?: string;
|
|
13
|
+
disabled?: boolean;
|
|
14
|
+
checked?: boolean;
|
|
15
|
+
indeterminate?: boolean;
|
|
16
|
+
open?: boolean;
|
|
17
|
+
};
|
|
18
|
+
export type TreeViewEvent<T extends Record<string, unknown> | Iterable<unknown>> = (e: Event, data: T) => void;
|
|
19
|
+
/**
|
|
20
|
+
* Bridge to a windowing/virtual-list library. When provided to `TreeView`, only the
|
|
21
|
+
* rendered slice of items lives in the DOM; the tree exposes the real index per item
|
|
22
|
+
* (`data-index`) and registers this adapter so keyboard navigation can scroll the
|
|
23
|
+
* target into view before activating it.
|
|
24
|
+
*/
|
|
25
|
+
export type TreeViewVirtualizer = {
|
|
26
|
+
/** Total number of real items (the whole data set, not just the rendered window). */
|
|
27
|
+
size: number;
|
|
28
|
+
/** Scroll so the item at `index` renders. May be async. */
|
|
29
|
+
scrollToIndex?: (index: number) => void | Promise<void>;
|
|
30
|
+
scrollToTop?: () => void | Promise<void>;
|
|
31
|
+
scrollToBottom?: () => void | Promise<void>;
|
|
32
|
+
};
|
|
33
|
+
/** The state shape of a virtualized tree: Sets, for the lookups a windowed list does on every render. */
|
|
34
|
+
export type TreeViewVirtualProps = {
|
|
35
|
+
virtualizer?: TreeViewVirtualizer;
|
|
36
|
+
openItems?: SvelteSet<string>;
|
|
37
|
+
checkedItems?: SvelteSet<string>;
|
|
38
|
+
};
|
|
39
|
+
/** The state shape of a tree that renders every item. */
|
|
40
|
+
export type TreeViewStaticProps = {
|
|
41
|
+
virtualizer?: never;
|
|
42
|
+
openItems?: string[];
|
|
43
|
+
checkedItems?: string[];
|
|
44
|
+
};
|
|
45
|
+
/** @propsmith TreeViewProps */
|
|
46
|
+
export type TreeViewProps = {
|
|
47
|
+
/** The DOM reference of the tree element.
|
|
48
|
+
* @bindable
|
|
49
|
+
*/
|
|
50
|
+
ref?: HTMLUListElement;
|
|
51
|
+
/** The size of every item in the tree.
|
|
52
|
+
* @default 'medium'
|
|
53
|
+
*/
|
|
54
|
+
size?: Sizes;
|
|
55
|
+
/** Whether the tree takes a single tab stop, or every row is reachable on its own.
|
|
56
|
+
* @default 'tree'
|
|
57
|
+
*/
|
|
58
|
+
navigationMode?: TreeViewNavigation;
|
|
59
|
+
/** Called whenever a branch opens or closes.
|
|
60
|
+
* @type (e: Event, openItems: string[]) => void
|
|
61
|
+
*/
|
|
62
|
+
onOpenChange?: TreeViewEvent<string[]>;
|
|
63
|
+
/** How many items can be checked at a time.
|
|
64
|
+
* @default 'multiple'
|
|
65
|
+
*/
|
|
66
|
+
selectionMode?: TreeViewSelectionMode;
|
|
67
|
+
/** Called whenever an item is checked or unchecked.
|
|
68
|
+
* @type (e: Event, checkedItems: string[]) => void
|
|
69
|
+
*/
|
|
70
|
+
onCheckedChange?: TreeViewEvent<string[]>;
|
|
71
|
+
/** Bridge to a windowing library. Only the rendered slice of items lives in the DOM.
|
|
72
|
+
* @type TreeViewVirtualizer
|
|
73
|
+
*/
|
|
74
|
+
virtualizer?: TreeViewVirtualizer;
|
|
75
|
+
/** The ids of the open branches. A `SvelteSet` is required when a `virtualizer` is set.
|
|
76
|
+
* @type string[] | SvelteSet<string>
|
|
77
|
+
* @bindable
|
|
78
|
+
*/
|
|
79
|
+
openItems?: string[] | SvelteSet<string>;
|
|
80
|
+
/** The ids of the checked items. A `SvelteSet` is required when a `virtualizer` is set.
|
|
81
|
+
* @type string[] | SvelteSet<string>
|
|
82
|
+
* @bindable
|
|
83
|
+
*/
|
|
84
|
+
checkedItems?: string[] | SvelteSet<string>;
|
|
85
|
+
/** The items of the tree. */
|
|
86
|
+
children?: Snippet;
|
|
87
|
+
} & (TreeViewVirtualProps | TreeViewStaticProps) & HTMLAttributes<HTMLUListElement>;
|
|
88
|
+
/** @propsmith TreeViewItemProps */
|
|
89
|
+
export type TreeViewItemProps = {
|
|
90
|
+
/** The id of the item, used by the tree to track its state. Falls back to a generated id. */
|
|
91
|
+
id?: string;
|
|
92
|
+
/** Whether the item holds children, and can therefore be opened.
|
|
93
|
+
* @default 'item'
|
|
94
|
+
*/
|
|
95
|
+
type?: TreeViewItemType;
|
|
96
|
+
/** The DOM reference of the item element. */
|
|
97
|
+
ref?: HTMLLIElement;
|
|
98
|
+
/** The value reported by the tree events. Falls back to the id of the item.
|
|
99
|
+
* @default id
|
|
100
|
+
*/
|
|
101
|
+
value?: string | number;
|
|
102
|
+
/** The label of the item, used by the type-ahead navigation. */
|
|
103
|
+
text?: string;
|
|
104
|
+
/** Whether the branch is open. */
|
|
105
|
+
open?: boolean;
|
|
106
|
+
/** Whether the item is checked. */
|
|
107
|
+
checked?: boolean;
|
|
108
|
+
/** Renders the checkbox in its mixed state, when only some children are checked. */
|
|
109
|
+
indeterminate?: boolean;
|
|
110
|
+
/** Disables the user interaction. */
|
|
111
|
+
disabled?: boolean;
|
|
112
|
+
/** The real index of the item in the data set. Required when the tree is virtualized. */
|
|
113
|
+
index?: number;
|
|
114
|
+
/** Called when this branch opens or closes.
|
|
115
|
+
* @type (e: Event, data: { id: string; open: boolean }) => void
|
|
116
|
+
*/
|
|
117
|
+
onOpenChange?: TreeViewEvent<{
|
|
118
|
+
id: string;
|
|
119
|
+
open: boolean;
|
|
120
|
+
}>;
|
|
121
|
+
/** Called when this item is checked or unchecked.
|
|
122
|
+
* @type (e: Event, data: { id: string; checked: boolean }) => void
|
|
123
|
+
*/
|
|
124
|
+
onCheckedChange?: TreeViewEvent<{
|
|
125
|
+
id: string;
|
|
126
|
+
checked: boolean;
|
|
127
|
+
}>;
|
|
128
|
+
} & HTMLAttributes<HTMLLIElement>;
|
|
129
|
+
/** @propsmith TreeViewItemLayoutProps */
|
|
130
|
+
export type TreeViewItemLayoutProps = {
|
|
131
|
+
/** The DOM reference of the layout element. */
|
|
132
|
+
ref?: HTMLDivElement;
|
|
133
|
+
/** Custom icon for the control that opens a branch.
|
|
134
|
+
* @type Snippet | Component
|
|
135
|
+
*/
|
|
136
|
+
expandIcon?: Snippet | Component;
|
|
137
|
+
/** Content rendered before the label.
|
|
138
|
+
* @type Snippet | Component
|
|
139
|
+
*/
|
|
140
|
+
iconBefore?: Snippet | Component;
|
|
141
|
+
/** Content rendered after the label.
|
|
142
|
+
* @type Snippet | Component
|
|
143
|
+
*/
|
|
144
|
+
iconAfter?: Snippet | Component;
|
|
145
|
+
/** Content pinned to the end of the row.
|
|
146
|
+
* @type Snippet | Component
|
|
147
|
+
*/
|
|
148
|
+
aside?: Snippet | Component;
|
|
149
|
+
/** Content pinned to the end of the row, revealed on hover and on focus.
|
|
150
|
+
* @type Snippet | Component
|
|
151
|
+
*/
|
|
152
|
+
actions?: Snippet | Component;
|
|
153
|
+
} & HTMLAttributes<HTMLDivElement>;
|
|
154
|
+
export type TreeViewContext = FSContext<{
|
|
155
|
+
navigationMode: TreeViewNavigation;
|
|
156
|
+
size: Sizes;
|
|
157
|
+
virtualized: boolean;
|
|
158
|
+
virtualCount?: number;
|
|
159
|
+
}, {
|
|
160
|
+
readonly selectionMode?: TreeViewSelectionMode;
|
|
161
|
+
readonly openItems: NonNullable<TreeViewProps['openItems']>;
|
|
162
|
+
readonly checkedItems: NonNullable<TreeViewProps['checkedItems']>;
|
|
163
|
+
readonly TREE_NODES: SvelteMap<string, TreeViewNode>;
|
|
164
|
+
forceVirtualRender: boolean;
|
|
165
|
+
}, {
|
|
166
|
+
onOpenChange: TreeViewEvent<string[]>;
|
|
167
|
+
onCheckedChange: TreeViewEvent<string[]>;
|
|
168
|
+
}, {
|
|
169
|
+
handleCheck: (e: Event | null, id: string, checked: boolean) => Promise<void>;
|
|
170
|
+
openItem: (e: Event | null, id: string) => void;
|
|
171
|
+
closeItem: (e: Event | null, id: string) => void;
|
|
172
|
+
registerItem: (node: TreeViewNode) => void;
|
|
173
|
+
unregisterItem: (id: string) => void;
|
|
174
|
+
}>;
|
|
175
|
+
export type TreeViewItemContext = {
|
|
176
|
+
readonly disabled?: boolean;
|
|
177
|
+
readonly value: string | number;
|
|
178
|
+
readonly depth: number;
|
|
179
|
+
readonly id: string;
|
|
180
|
+
readonly type: TreeViewItemType;
|
|
181
|
+
readonly parentId?: string;
|
|
182
|
+
open?: boolean;
|
|
183
|
+
checked?: boolean;
|
|
184
|
+
indeterminate?: boolean;
|
|
185
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
:is(html:has(.dark), html.dark):root {
|
|
2
|
+
/* Text Colors */
|
|
3
|
+
--fs-text-primary: #fff;
|
|
4
|
+
--fs-text-secondary: #ffffffc5;
|
|
5
|
+
--fs-text-tertiary: #ffffff87;
|
|
6
|
+
--fs-text-disabled: #ffffff5d;
|
|
7
|
+
|
|
8
|
+
--fs-accent-text-primary: rgb(var(--fs-accent-light-3));
|
|
9
|
+
--fs-accent-text-secondary: rgb(var(--fs-accent-light-3));
|
|
10
|
+
--fs-accent-text-tertiary: rgb(var(--fs-accent-light-2));
|
|
11
|
+
|
|
12
|
+
--fs-text-on-accent-primary: #000;
|
|
13
|
+
--fs-text-on-accent-secondary: #00000080;
|
|
14
|
+
--fs-text-on-accent-disabled: #ffffff87;
|
|
15
|
+
/* --fs-text-on-accent-selected: #fff; <- Same on light/dark */
|
|
16
|
+
|
|
17
|
+
/* Control Fill Colors
|
|
18
|
+
* These colors are used for standard controls like buttons, dropdowns, search, etc.
|
|
19
|
+
*/
|
|
20
|
+
--fs-control-fill-default: #ffffff0f;
|
|
21
|
+
--fs-control-fill-secondary: #ffffff15;
|
|
22
|
+
--fs-control-fill-tertiary: #ffffff0b;
|
|
23
|
+
--fs-control-fill-quaternary: #ffffff0f;
|
|
24
|
+
--fs-control-fill-disabled: #f9f9f90b;
|
|
25
|
+
/* --fs-control-fill-transparent: transparent; <- Same on light/dark */
|
|
26
|
+
--fs-control-fill-input-active: #1e1e1eb3;
|
|
27
|
+
|
|
28
|
+
/* Control Alt Fill Colors
|
|
29
|
+
* These colors are used for standard controls like toggle, radio, checkbox, rating, etc.
|
|
30
|
+
*/
|
|
31
|
+
--fs-control-alt-fill-transparent: transparent;
|
|
32
|
+
--fs-control-alt-fill-secondary: #00000019;
|
|
33
|
+
--fs-control-alt-fill-tertiary: #ffffff0b;
|
|
34
|
+
--fs-control-alt-fill-quaternary: #ffffff12;
|
|
35
|
+
--fs-control-alt-fill-disabled: transparent;
|
|
36
|
+
|
|
37
|
+
/* Special Control Colors (Control solid and control strong fill)
|
|
38
|
+
* --fs-control-solid Fills used for Sliders thumb control to cover the track beneath it.
|
|
39
|
+
---------------------------
|
|
40
|
+
* --fs-control-strong-default and --fs-control-strong-disabled Used for control fills that must meet contrast ratio requirements of 3:1 Examples: Scroll bar, Slider, Flip view
|
|
41
|
+
*/
|
|
42
|
+
--fs-control-solid: #454545;
|
|
43
|
+
--fs-control-strong-default: #ffffff8b;
|
|
44
|
+
--fs-control-strong-disabled: #ffffff3f;
|
|
45
|
+
|
|
46
|
+
/* Subtle Colors */
|
|
47
|
+
/* --fs-subtle-fill-transparent: transparent; <- Same on light/dark */
|
|
48
|
+
--fs-subtle-fill-secondary: #ffffff0f;
|
|
49
|
+
--fs-subtle-fill-tertiary: #ffffff0a;
|
|
50
|
+
/* --fs-subtle-fill-disabled: transparent; <- Same on light/dark */
|
|
51
|
+
|
|
52
|
+
/* Control On Image Fill
|
|
53
|
+
* These colors are used for controls that are placed on top of images.
|
|
54
|
+
*/
|
|
55
|
+
--fs-control-on-image-fill-default: #1c1c1cb3;
|
|
56
|
+
--fs-control-on-image-fill-secondary: #1a1a1a;
|
|
57
|
+
--fs-control-on-image-fill-tertiary: #131313;
|
|
58
|
+
--fs-control-on-image-fill-disabled: #1e1e1e;
|
|
59
|
+
|
|
60
|
+
/* Accent Fill Colors */
|
|
61
|
+
--fs-accent-fill-default: rgb(var(--fs-accent-light-2));
|
|
62
|
+
--fs-accent-fill-secondary: rgba(var(--fs-accent-light-2), 0.7);
|
|
63
|
+
--fs-accent-fill-tertiary: rgba(var(--fs-accent-light-2), 0.6);
|
|
64
|
+
--fs-accent-fill-disabled: #ffffff28;
|
|
65
|
+
/* --fs-accent-fill-selected-text-bg: rgb(var(--fs-accent-base)); <- Same on light/dark */
|
|
66
|
+
|
|
67
|
+
/* Elevation */
|
|
68
|
+
--fs-elevation-control-border: linear-gradient(180deg, rgba(255, 255, 255, 0.09) 0%, rgba(255, 255, 255, 0.07) 10%);
|
|
69
|
+
--fs-elevation-accent-control-border: linear-gradient(
|
|
70
|
+
180deg,
|
|
71
|
+
rgba(255, 255, 255, 0.1) 91%,
|
|
72
|
+
/* Changed opacity to 0.1 from original 0.08 */ rgba(0, 0, 0, 0.14) 100%
|
|
73
|
+
);
|
|
74
|
+
--fs-elevation-circle-border: linear-gradient(180deg, rgba(255, 255, 255, 0.09) 0%, rgba(255, 255, 255, 0.07) 50%);
|
|
75
|
+
--fs-elevation-text-border: linear-gradient(
|
|
76
|
+
180deg,
|
|
77
|
+
rgba(255, 255, 255, 0.03) calc(100% - 0.07rem),
|
|
78
|
+
rgba(255, 255, 255, 0.54) calc(100% - 0.07rem)
|
|
79
|
+
);
|
|
80
|
+
--fs-elevation-text-border-focused: linear-gradient(
|
|
81
|
+
180deg,
|
|
82
|
+
rgba(255, 255, 255, 0.08) 94.5%,
|
|
83
|
+
rgb(var(--fs-accent-light-1)) 94.5%
|
|
84
|
+
);
|
|
85
|
+
|
|
86
|
+
/* Control Stroke */
|
|
87
|
+
--fs-control-stroke-default: #ffffff12;
|
|
88
|
+
--fs-control-stroke-secondary: #ffffff18;
|
|
89
|
+
--fs-control-stroke-on-accent-default: #ffffff14;
|
|
90
|
+
--fs-control-stroke-on-accent-secondary: #00000023;
|
|
91
|
+
--fs-control-stroke-on-accent-tertiary: #00000037;
|
|
92
|
+
--fs-control-stroke-on-accent-disabled: #00000033;
|
|
93
|
+
--fs-control-stroke-on-image: #0000006b;
|
|
94
|
+
--fs-card-stroke-default: #00000019;
|
|
95
|
+
--fs-card-stroke-solid: #1c1c1c;
|
|
96
|
+
|
|
97
|
+
/* Control Strong Stroke */
|
|
98
|
+
--fs-control-strong-stroke-default: #ffffff8b;
|
|
99
|
+
--fs-control-strong-stroke-disabled: #ffffff28;
|
|
100
|
+
|
|
101
|
+
/* Control Surface Stroke */
|
|
102
|
+
/* --fs-control-surface-stroke-default: #75757566; <- Same on light/dark */
|
|
103
|
+
--fs-control-surface-stroke-flyout: #00000033;
|
|
104
|
+
|
|
105
|
+
/* Divider Stroke */
|
|
106
|
+
--fs-divider-stroke-default: #ffffff15;
|
|
107
|
+
|
|
108
|
+
/* Focus Stroke */
|
|
109
|
+
--fs-focus-stroke-outer: #fff;
|
|
110
|
+
--fs-focus-stroke-inner: #000000b3;
|
|
111
|
+
|
|
112
|
+
/* Card Background */
|
|
113
|
+
--fs-card-background-default: #ffffff0d;
|
|
114
|
+
--fs-card-background-secondary: #ffffff08;
|
|
115
|
+
|
|
116
|
+
/* Smoke Background */
|
|
117
|
+
/* --fs-smoke-background-default: #0000004d; <- Same on light/dark */
|
|
118
|
+
|
|
119
|
+
/* Layer */
|
|
120
|
+
--fs-layer-default: #3a3a3a4c;
|
|
121
|
+
--fs-layer-alt: #ffffff0d;
|
|
122
|
+
|
|
123
|
+
/* Layer on Acrylic */
|
|
124
|
+
--fs-layer-on-acrylic-default: #ffffff09;
|
|
125
|
+
|
|
126
|
+
/* Solid Background */
|
|
127
|
+
--fs-solid-background-base: #202020;
|
|
128
|
+
--fs-solid-background-secondary: #1c1c1c;
|
|
129
|
+
--fs-solid-background-tertiary: #282828;
|
|
130
|
+
--fs-solid-background-quaternary: #2c2c2c;
|
|
131
|
+
|
|
132
|
+
/* Acrylic Background */
|
|
133
|
+
--fs-acrylic-background-base: #202020;
|
|
134
|
+
--fs-acrylic-background-default: #2c2c2c;
|
|
135
|
+
|
|
136
|
+
/* Accent Acrylic Background */
|
|
137
|
+
--fs-accent-acrylic-background-base: rgba(var(--fs-accent-dark-2), 0.8);
|
|
138
|
+
--fs-accent-acrylic-background-default: rgba(var(--fs-accent-dark-1), 0.8);
|
|
139
|
+
|
|
140
|
+
/* System */
|
|
141
|
+
--fs-system-attention: rgb(var(--fs-accent-light-3));
|
|
142
|
+
--fs-system-attetion-bg: #f6f6f608;
|
|
143
|
+
--fs-system-attention-solid-bg: #2e2e2e;
|
|
144
|
+
|
|
145
|
+
--fs-system-success: #6ccb5f;
|
|
146
|
+
--fs-system-success-bg: #393d1b;
|
|
147
|
+
|
|
148
|
+
--fs-system-caution: #fce100;
|
|
149
|
+
--fs-system-caution-bg: #433519;
|
|
150
|
+
|
|
151
|
+
--fs-system-critical: #ff99a4;
|
|
152
|
+
--fs-system-critical-bg: #442726;
|
|
153
|
+
|
|
154
|
+
--fs-system-neutral: #ffffff8b;
|
|
155
|
+
--fs-system-neutral-bg: #ffffff08;
|
|
156
|
+
|
|
157
|
+
--fs-system-solid-neutral: #9d9d9d;
|
|
158
|
+
--fs-system-solid-neutral-bg: #2e2e2e;
|
|
159
|
+
|
|
160
|
+
/* Shadows */
|
|
161
|
+
--fs-shadow-card: 0 0.125rem 0.25rem #00000021; /* 13% opacity */
|
|
162
|
+
--fs-shadow-tooltip: 0 0.25rem 0.5rem #00000042; /* 26% opacity */
|
|
163
|
+
--fs-shadow-flyout: 0 0.5rem 1rem #00000042; /* 26% opacity */
|
|
164
|
+
--fs-shadow-dialog: 0 2rem 4rem #0000005e, 0 1.125rem 1.313rem #0000005e; /* 37% opacity */
|
|
165
|
+
|
|
166
|
+
/* Shell Shadows */
|
|
167
|
+
--fs-shell-shadow-inactive: 0 1rem 2rem #0000005e, 0 0.125rem 0.625rem #0000005e; /* 37% opacity */
|
|
168
|
+
--fs-shell-shadow-active: 0 2rem 4rem #0000008f, 0 0.125rem 1.313rem #0000008c; /* 56% and 55% opacity respectively */
|
|
169
|
+
|
|
170
|
+
/* Customs Variables */
|
|
171
|
+
--fs-radial-mica-bg: radial-gradient(
|
|
172
|
+
circle,
|
|
173
|
+
rgba(28, 35, 42, 1) 0%,
|
|
174
|
+
rgba(30, 35, 43, 1) 30%,
|
|
175
|
+
rgba(27, 33, 41, 1) 43%,
|
|
176
|
+
rgba(27, 32, 40, 1) 63%,
|
|
177
|
+
rgba(27, 33, 41, 1) 72%,
|
|
178
|
+
rgba(27, 33, 41, 1) 100%
|
|
179
|
+
);
|
|
180
|
+
|
|
181
|
+
--fs-system-neutral-text: color-mix(in srgb, var(--fs-system-neutral), white 50%);
|
|
182
|
+
--fs-system-attention-text: color-mix(in srgb, var(--fs-system-attention), white 50%);
|
|
183
|
+
--fs-system-caution-text: color-mix(in srgb, var(--fs-system-caution), white 50%);
|
|
184
|
+
--fs-system-success-text: color-mix(in srgb, var(--fs-system-success), white 50%);
|
|
185
|
+
--fs-system-critical-text: color-mix(in srgb, var(--fs-system-critical), white 50%);
|
|
186
|
+
}
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
@media (prefers-color-scheme: dark) {
|
|
2
|
+
:root {
|
|
3
|
+
/* Text Colors */
|
|
4
|
+
--fs-text-primary: #fff;
|
|
5
|
+
--fs-text-secondary: #ffffffc5;
|
|
6
|
+
--fs-text-tertiary: #ffffff87;
|
|
7
|
+
--fs-text-disabled: #ffffff5d;
|
|
8
|
+
|
|
9
|
+
--fs-accent-text-primary: rgb(var(--fs-accent-light-3));
|
|
10
|
+
--fs-accent-text-secondary: rgb(var(--fs-accent-light-3));
|
|
11
|
+
--fs-accent-text-tertiary: rgb(var(--fs-accent-light-2));
|
|
12
|
+
|
|
13
|
+
--fs-text-on-accent-primary: #000;
|
|
14
|
+
--fs-text-on-accent-secondary: #00000080;
|
|
15
|
+
--fs-text-on-accent-disabled: #ffffff87;
|
|
16
|
+
/* --fs-text-on-accent-selected: #fff; <- Same on light/dark */
|
|
17
|
+
|
|
18
|
+
/* Control Fill Colors
|
|
19
|
+
* These colors are used for standard controls like buttons, dropdowns, search, etc.
|
|
20
|
+
*/
|
|
21
|
+
--fs-control-fill-default: #ffffff0f;
|
|
22
|
+
--fs-control-fill-secondary: #ffffff15;
|
|
23
|
+
--fs-control-fill-tertiary: #ffffff0b;
|
|
24
|
+
--fs-control-fill-quaternary: #ffffff0f;
|
|
25
|
+
--fs-control-fill-disabled: #f9f9f90b;
|
|
26
|
+
/* --fs-control-fill-transparent: transparent; <- Same on light/dark */
|
|
27
|
+
--fs-control-fill-input-active: #1e1e1eb3;
|
|
28
|
+
|
|
29
|
+
/* Control Alt Fill Colors
|
|
30
|
+
* These colors are used for standard controls like toggle, radio, checkbox, rating, etc.
|
|
31
|
+
*/
|
|
32
|
+
--fs-control-alt-fill-transparent: transparent;
|
|
33
|
+
--fs-control-alt-fill-secondary: #00000019;
|
|
34
|
+
--fs-control-alt-fill-tertiary: #ffffff0b;
|
|
35
|
+
--fs-control-alt-fill-quaternary: #ffffff12;
|
|
36
|
+
--fs-control-alt-fill-disabled: transparent;
|
|
37
|
+
|
|
38
|
+
/* Special Control Colors (Control solid and control strong fill)
|
|
39
|
+
* --fs-control-solid Fills used for Sliders thumb control to cover the track beneath it.
|
|
40
|
+
---------------------------
|
|
41
|
+
* --fs-control-strong-default and --fs-control-strong-disabled Used for control fills that must meet contrast ratio requirements of 3:1 Examples: Scroll bar, Slider, Flip view
|
|
42
|
+
*/
|
|
43
|
+
--fs-control-solid: #454545;
|
|
44
|
+
--fs-control-strong-default: #ffffff8b;
|
|
45
|
+
--fs-control-strong-disabled: #ffffff3f;
|
|
46
|
+
|
|
47
|
+
/* Subtle Colors */
|
|
48
|
+
/* --fs-subtle-fill-transparent: transparent; <- Same on light/dark */
|
|
49
|
+
--fs-subtle-fill-secondary: #ffffff0f;
|
|
50
|
+
--fs-subtle-fill-tertiary: #ffffff0a;
|
|
51
|
+
/* --fs-subtle-fill-disabled: transparent; <- Same on light/dark */
|
|
52
|
+
|
|
53
|
+
/* Control On Image Fill
|
|
54
|
+
* These colors are used for controls that are placed on top of images.
|
|
55
|
+
*/
|
|
56
|
+
--fs-control-on-image-fill-default: #1c1c1cb3;
|
|
57
|
+
--fs-control-on-image-fill-secondary: #1a1a1a;
|
|
58
|
+
--fs-control-on-image-fill-tertiary: #131313;
|
|
59
|
+
--fs-control-on-image-fill-disabled: #1e1e1e;
|
|
60
|
+
|
|
61
|
+
/* Accent Fill Colors */
|
|
62
|
+
--fs-accent-fill-default: rgb(var(--fs-accent-light-2));
|
|
63
|
+
--fs-accent-fill-secondary: rgba(var(--fs-accent-light-2), 0.7);
|
|
64
|
+
--fs-accent-fill-tertiary: rgba(var(--fs-accent-light-2), 0.6);
|
|
65
|
+
--fs-accent-fill-disabled: #ffffff28;
|
|
66
|
+
/* --fs-accent-fill-selected-text-bg: rgb(var(--fs-accent-base)); <- Same on light/dark */
|
|
67
|
+
|
|
68
|
+
/* Elevation */
|
|
69
|
+
--fs-elevation-control-border: linear-gradient(180deg, rgba(255, 255, 255, 0.09) 0%, rgba(255, 255, 255, 0.07) 10%);
|
|
70
|
+
--fs-elevation-accent-control-border: linear-gradient(
|
|
71
|
+
180deg,
|
|
72
|
+
rgba(255, 255, 255, 0.1) 91%,
|
|
73
|
+
/* Changed opacity to 0.1 from original 0.08 */ rgba(0, 0, 0, 0.14) 100%
|
|
74
|
+
);
|
|
75
|
+
--fs-elevation-circle-border: linear-gradient(180deg, rgba(255, 255, 255, 0.09) 0%, rgba(255, 255, 255, 0.07) 50%);
|
|
76
|
+
--fs-elevation-text-border: linear-gradient(
|
|
77
|
+
180deg,
|
|
78
|
+
rgba(255, 255, 255, 0.03) calc(100% - 0.07rem),
|
|
79
|
+
rgba(255, 255, 255, 0.54) calc(100% - 0.07rem)
|
|
80
|
+
);
|
|
81
|
+
--fs-elevation-text-border-focused: linear-gradient(
|
|
82
|
+
180deg,
|
|
83
|
+
rgba(255, 255, 255, 0.08) 94.5%,
|
|
84
|
+
rgb(var(--fs-accent-light-1)) 94.5%
|
|
85
|
+
);
|
|
86
|
+
|
|
87
|
+
/* Control Stroke */
|
|
88
|
+
--fs-control-stroke-default: #ffffff12;
|
|
89
|
+
--fs-control-stroke-secondary: #ffffff18;
|
|
90
|
+
--fs-control-stroke-on-accent-default: #ffffff14;
|
|
91
|
+
--fs-control-stroke-on-accent-secondary: #00000023;
|
|
92
|
+
--fs-control-stroke-on-accent-tertiary: #00000037;
|
|
93
|
+
--fs-control-stroke-on-accent-disabled: #00000033;
|
|
94
|
+
--fs-control-stroke-on-image: #0000006b;
|
|
95
|
+
--fs-card-stroke-default: #00000019;
|
|
96
|
+
--fs-card-stroke-solid: #1c1c1c;
|
|
97
|
+
|
|
98
|
+
/* Control Strong Stroke */
|
|
99
|
+
--fs-control-strong-stroke-default: #ffffff8b;
|
|
100
|
+
--fs-control-strong-stroke-disabled: #ffffff28;
|
|
101
|
+
|
|
102
|
+
/* Control Surface Stroke */
|
|
103
|
+
/* --fs-control-surface-stroke-default: #75757566; <- Same on light/dark */
|
|
104
|
+
--fs-control-surface-stroke-flyout: #00000033;
|
|
105
|
+
|
|
106
|
+
/* Divider Stroke */
|
|
107
|
+
--fs-divider-stroke-default: #ffffff15;
|
|
108
|
+
|
|
109
|
+
/* Focus Stroke */
|
|
110
|
+
--fs-focus-stroke-outer: #fff;
|
|
111
|
+
--fs-focus-stroke-inner: #000000b3;
|
|
112
|
+
|
|
113
|
+
/* Card Background */
|
|
114
|
+
--fs-card-background-default: #ffffff0d;
|
|
115
|
+
--fs-card-background-secondary: #ffffff08;
|
|
116
|
+
|
|
117
|
+
/* Smoke Background */
|
|
118
|
+
/* --fs-smoke-background-default: #0000004d; <- Same on light/dark */
|
|
119
|
+
|
|
120
|
+
/* Layer */
|
|
121
|
+
--fs-layer-default: #3a3a3a4c;
|
|
122
|
+
--fs-layer-alt: #ffffff0d;
|
|
123
|
+
|
|
124
|
+
/* Layer on Acrylic */
|
|
125
|
+
--fs-layer-on-acrylic-default: #ffffff09;
|
|
126
|
+
|
|
127
|
+
/* Solid Background */
|
|
128
|
+
--fs-solid-background-base: #202020;
|
|
129
|
+
--fs-solid-background-secondary: #1c1c1c;
|
|
130
|
+
--fs-solid-background-tertiary: #282828;
|
|
131
|
+
--fs-solid-background-quaternary: #2c2c2c;
|
|
132
|
+
|
|
133
|
+
/* Acrylic Background */
|
|
134
|
+
--fs-acrylic-background-base: #202020;
|
|
135
|
+
--fs-acrylic-background-default: #2c2c2c;
|
|
136
|
+
|
|
137
|
+
/* Accent Acrylic Background */
|
|
138
|
+
--fs-accent-acrylic-background-base: rgba(var(--fs-accent-dark-2), 0.8);
|
|
139
|
+
--fs-accent-acrylic-background-default: rgba(var(--fs-accent-dark-1), 0.8);
|
|
140
|
+
|
|
141
|
+
/* System */
|
|
142
|
+
--fs-system-attention: rgb(var(--fs-accent-light-3));
|
|
143
|
+
--fs-system-attetion-bg: #f6f6f608;
|
|
144
|
+
--fs-system-attention-solid-bg: #2e2e2e;
|
|
145
|
+
|
|
146
|
+
--fs-system-success: #6ccb5f;
|
|
147
|
+
--fs-system-success-bg: #393d1b;
|
|
148
|
+
|
|
149
|
+
--fs-system-caution: #fce100;
|
|
150
|
+
--fs-system-caution-bg: #433519;
|
|
151
|
+
|
|
152
|
+
--fs-system-critical: #ff4658; /* Changed from #ff99a4 to #ff4658 for better visibility */
|
|
153
|
+
--fs-system-critical-bg: #442726;
|
|
154
|
+
|
|
155
|
+
--fs-system-neutral: #ffffff8b;
|
|
156
|
+
--fs-system-neutral-bg: #ffffff08;
|
|
157
|
+
|
|
158
|
+
--fs-system-solid-neutral: #9d9d9d;
|
|
159
|
+
--fs-system-solid-neutral-bg: #2e2e2e;
|
|
160
|
+
|
|
161
|
+
/* Shadows */
|
|
162
|
+
--fs-shadow-card: 0 0.125rem 0.25rem #00000021; /* 13% opacity */
|
|
163
|
+
--fs-shadow-tooltip: 0 0.25rem 0.5rem #00000042; /* 26% opacity */
|
|
164
|
+
--fs-shadow-flyout: 0 0.5rem 1rem #00000042; /* 26% opacity */
|
|
165
|
+
--fs-shadow-dialog: 0 2rem 4rem #0000005e, 0 1.125rem 1.313rem #0000005e; /* 37% opacity */
|
|
166
|
+
|
|
167
|
+
/* Shell Shadows */
|
|
168
|
+
--fs-shell-shadow-inactive: 0 1rem 2rem #0000005e, 0 0.125rem 0.625rem #0000005e; /* 37% opacity */
|
|
169
|
+
--fs-shell-shadow-active:
|
|
170
|
+
0 2rem 4rem #0000008f, 0 0.125rem 1.313rem #0000008c; /* 56% and 55% opacity respectively */
|
|
171
|
+
|
|
172
|
+
/* Customs Variables */
|
|
173
|
+
--fs-radial-mica-bg: radial-gradient(
|
|
174
|
+
circle,
|
|
175
|
+
rgba(28, 35, 42, 1) 0%,
|
|
176
|
+
rgba(30, 35, 43, 1) 30%,
|
|
177
|
+
rgba(27, 33, 41, 1) 43%,
|
|
178
|
+
rgba(27, 32, 40, 1) 63%,
|
|
179
|
+
rgba(27, 33, 41, 1) 72%,
|
|
180
|
+
rgba(27, 33, 41, 1) 100%
|
|
181
|
+
);
|
|
182
|
+
|
|
183
|
+
--fs-system-neutral-text: color-mix(in srgb, var(--fs-system-neutral), white 50%);
|
|
184
|
+
--fs-system-attention-text: color-mix(in srgb, var(--fs-system-attention), white 50%);
|
|
185
|
+
--fs-system-caution-text: color-mix(in srgb, var(--fs-system-caution), white 50%);
|
|
186
|
+
--fs-system-success-text: color-mix(in srgb, var(--fs-system-success), white 50%);
|
|
187
|
+
--fs-system-critical-text: color-mix(in srgb, var(--fs-system-critical), white 20%);
|
|
188
|
+
}
|
|
189
|
+
}
|