@usefragments/ui 1.0.2 → 1.2.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/README.md +16 -16
- package/dist/assets/fragments-wordmark.cjs +30 -0
- package/dist/assets/fragments-wordmark.d.ts +13 -0
- package/dist/assets/fragments-wordmark.d.ts.map +1 -0
- package/dist/assets/fragments-wordmark.js +30 -0
- package/dist/assets/ui.css +3234 -3116
- package/dist/components/Accordion/Accordion.module.scss.cjs +8 -8
- package/dist/components/Accordion/Accordion.module.scss.js +8 -8
- package/dist/components/Accordion/index.cjs +22 -10
- package/dist/components/Accordion/index.d.ts.map +1 -1
- package/dist/components/Accordion/index.js +22 -10
- package/dist/components/Alert/Alert.module.scss.cjs +13 -13
- package/dist/components/Alert/Alert.module.scss.js +13 -13
- package/dist/components/AppShell/AppShell.module.scss.cjs +22 -10
- package/dist/components/AppShell/AppShell.module.scss.js +22 -10
- package/dist/components/AppShell/index.cjs +1 -1
- package/dist/components/AppShell/index.js +1 -1
- package/dist/components/Avatar/Avatar.module.scss.cjs +13 -13
- package/dist/components/Avatar/Avatar.module.scss.js +13 -13
- package/dist/components/Badge/Badge.module.scss.cjs +16 -16
- package/dist/components/Badge/Badge.module.scss.js +16 -16
- package/dist/components/BentoGrid/BentoGrid.module.scss.cjs +14 -14
- package/dist/components/BentoGrid/BentoGrid.module.scss.js +14 -14
- package/dist/components/Box/Box.module.scss.cjs +152 -152
- package/dist/components/Box/Box.module.scss.js +152 -152
- package/dist/components/Breadcrumbs/Breadcrumbs.module.scss.cjs +8 -8
- package/dist/components/Breadcrumbs/Breadcrumbs.module.scss.js +8 -8
- package/dist/components/Button/Button.module.scss.cjs +13 -13
- package/dist/components/Button/Button.module.scss.js +13 -13
- package/dist/components/Card/Card.module.scss.cjs +17 -17
- package/dist/components/Card/Card.module.scss.js +17 -17
- package/dist/components/Card/index.d.ts +3 -3
- package/dist/components/Card/index.d.ts.map +1 -1
- package/dist/components/Chart/Chart.module.scss.cjs +15 -15
- package/dist/components/Chart/Chart.module.scss.js +15 -15
- package/dist/components/Checkbox/Checkbox.module.scss.cjs +11 -11
- package/dist/components/Checkbox/Checkbox.module.scss.js +11 -11
- package/dist/components/Chip/Chip.module.scss.cjs +15 -15
- package/dist/components/Chip/Chip.module.scss.js +15 -15
- package/dist/components/CodeBlock/CodeBlock.module.scss.cjs +21 -21
- package/dist/components/CodeBlock/CodeBlock.module.scss.js +21 -21
- package/dist/components/Collapsible/Collapsible.module.scss.cjs +10 -10
- package/dist/components/Collapsible/Collapsible.module.scss.js +10 -10
- package/dist/components/ColorPicker/ColorPicker.module.scss.cjs +14 -14
- package/dist/components/ColorPicker/ColorPicker.module.scss.js +14 -14
- package/dist/components/Combobox/Combobox.module.scss.cjs +23 -23
- package/dist/components/Combobox/Combobox.module.scss.js +23 -23
- package/dist/components/Combobox/index.cjs +106 -9
- package/dist/components/Combobox/index.d.ts.map +1 -1
- package/dist/components/Combobox/index.js +106 -9
- package/dist/components/Command/Command.module.scss.cjs +11 -11
- package/dist/components/Command/Command.module.scss.js +11 -11
- package/dist/components/ConversationList/ConversationList.module.scss.cjs +10 -10
- package/dist/components/ConversationList/ConversationList.module.scss.js +10 -10
- package/dist/components/DataTable/DataTable.module.scss.cjs +37 -34
- package/dist/components/DataTable/DataTable.module.scss.js +37 -34
- package/dist/components/DataTable/index.d.ts +3 -1
- package/dist/components/DataTable/index.d.ts.map +1 -1
- package/dist/components/DatePicker/DatePicker.module.scss.cjs +33 -33
- package/dist/components/DatePicker/DatePicker.module.scss.js +33 -33
- package/dist/components/DatePicker/index.d.ts +1 -1
- package/dist/components/DatePicker/index.d.ts.map +1 -1
- package/dist/components/Dialog/Dialog.module.scss.cjs +14 -14
- package/dist/components/Dialog/Dialog.module.scss.js +14 -14
- package/dist/components/Drawer/Drawer.module.scss.cjs +28 -28
- package/dist/components/Drawer/Drawer.module.scss.js +28 -28
- package/dist/components/Drawer/index.cjs +20 -3
- package/dist/components/Drawer/index.d.ts.map +1 -1
- package/dist/components/Drawer/index.js +20 -3
- package/dist/components/Editor/Editor.module.scss.cjs +17 -17
- package/dist/components/Editor/Editor.module.scss.js +17 -17
- package/dist/components/EmptyState/EmptyState.module.scss.cjs +8 -8
- package/dist/components/EmptyState/EmptyState.module.scss.js +8 -8
- package/dist/components/Field/Field.module.scss.cjs +4 -4
- package/dist/components/Field/Field.module.scss.js +4 -4
- package/dist/components/Field/index.cjs +10 -9
- package/dist/components/Field/index.d.ts +7 -7
- package/dist/components/Field/index.d.ts.map +1 -1
- package/dist/components/Field/index.js +10 -9
- package/dist/components/Fieldset/Fieldset.module.scss.cjs +3 -3
- package/dist/components/Fieldset/Fieldset.module.scss.js +3 -3
- package/dist/components/Header/Header.module.scss.cjs +44 -29
- package/dist/components/Header/Header.module.scss.js +44 -29
- package/dist/components/Header/index.cjs +56 -3
- package/dist/components/Header/index.d.ts +25 -3
- package/dist/components/Header/index.d.ts.map +1 -1
- package/dist/components/Header/index.js +56 -3
- package/dist/components/Icon/Icon.module.scss.cjs +8 -8
- package/dist/components/Icon/Icon.module.scss.js +8 -8
- package/dist/components/IconButton/IconButton.module.scss.cjs +8 -8
- package/dist/components/IconButton/IconButton.module.scss.js +8 -8
- package/dist/components/Image/Image.module.scss.cjs +27 -27
- package/dist/components/Image/Image.module.scss.js +27 -27
- package/dist/components/Input/Input.module.scss.cjs +19 -19
- package/dist/components/Input/Input.module.scss.js +19 -19
- package/dist/components/Link/Link.module.scss.cjs +10 -10
- package/dist/components/Link/Link.module.scss.js +10 -10
- package/dist/components/List/List.module.scss.cjs +19 -19
- package/dist/components/List/List.module.scss.js +19 -19
- package/dist/components/Listbox/Listbox.module.scss.cjs +8 -8
- package/dist/components/Listbox/Listbox.module.scss.js +8 -8
- package/dist/components/Loading/Loading.module.scss.cjs +30 -30
- package/dist/components/Loading/Loading.module.scss.js +30 -30
- package/dist/components/Main/Main.module.scss.cjs +26 -0
- package/dist/components/Main/Main.module.scss.js +26 -0
- package/dist/components/Main/index.cjs +128 -0
- package/dist/components/Main/index.d.ts +22 -0
- package/dist/components/Main/index.d.ts.map +1 -0
- package/dist/components/Main/index.js +111 -0
- package/dist/components/Markdown/Markdown.module.scss.cjs +1 -1
- package/dist/components/Markdown/Markdown.module.scss.js +1 -1
- package/dist/components/Menu/Menu.module.scss.cjs +14 -14
- package/dist/components/Menu/Menu.module.scss.js +14 -14
- package/dist/components/Message/Message.module.scss.cjs +18 -18
- package/dist/components/Message/Message.module.scss.js +18 -18
- package/dist/components/NavigationMenu/NavigationMenu.module.scss.cjs +28 -28
- package/dist/components/NavigationMenu/NavigationMenu.module.scss.js +28 -28
- package/dist/components/Pagination/Pagination.module.scss.cjs +7 -7
- package/dist/components/Pagination/Pagination.module.scss.js +7 -7
- package/dist/components/Popover/Popover.module.scss.cjs +10 -10
- package/dist/components/Popover/Popover.module.scss.js +10 -10
- package/dist/components/Popover/index.cjs +27 -2
- package/dist/components/Popover/index.d.ts.map +1 -1
- package/dist/components/Popover/index.js +27 -2
- package/dist/components/Progress/Progress.module.scss.cjs +25 -25
- package/dist/components/Progress/Progress.module.scss.js +25 -25
- package/dist/components/Prompt/Prompt.module.scss.cjs +18 -18
- package/dist/components/Prompt/Prompt.module.scss.js +18 -18
- package/dist/components/RadioGroup/RadioGroup.module.scss.cjs +17 -17
- package/dist/components/RadioGroup/RadioGroup.module.scss.js +17 -17
- package/dist/components/RadioGroup/index.cjs +2 -0
- package/dist/components/RadioGroup/index.d.ts +2 -0
- package/dist/components/RadioGroup/index.d.ts.map +1 -1
- package/dist/components/RadioGroup/index.js +2 -0
- package/dist/components/ScrollArea/ScrollArea.module.scss.cjs +10 -10
- package/dist/components/ScrollArea/ScrollArea.module.scss.js +10 -10
- package/dist/components/Select/Select.module.scss.cjs +17 -17
- package/dist/components/Select/Select.module.scss.js +17 -17
- package/dist/components/Separator/Separator.module.scss.cjs +10 -10
- package/dist/components/Separator/Separator.module.scss.js +10 -10
- package/dist/components/Sidebar/Sidebar.module.scss.cjs +42 -42
- package/dist/components/Sidebar/Sidebar.module.scss.js +42 -42
- package/dist/components/Skeleton/Skeleton.module.scss.cjs +38 -38
- package/dist/components/Skeleton/Skeleton.module.scss.js +38 -38
- package/dist/components/Slider/Slider.module.scss.cjs +12 -12
- package/dist/components/Slider/Slider.module.scss.js +12 -12
- package/dist/components/Table/Table.module.scss.cjs +19 -19
- package/dist/components/Table/Table.module.scss.js +19 -19
- package/dist/components/TableOfContents/TableOfContents.module.scss.cjs +15 -15
- package/dist/components/TableOfContents/TableOfContents.module.scss.js +15 -15
- package/dist/components/TableOfContents/index.cjs +22 -42
- package/dist/components/TableOfContents/index.d.ts +3 -3
- package/dist/components/TableOfContents/index.d.ts.map +1 -1
- package/dist/components/TableOfContents/index.js +22 -42
- package/dist/components/Tabs/Tabs.module.scss.cjs +12 -12
- package/dist/components/Tabs/Tabs.module.scss.js +12 -12
- package/dist/components/Text/Text.module.scss.cjs +51 -51
- package/dist/components/Text/Text.module.scss.js +51 -51
- package/dist/components/Textarea/Textarea.module.scss.cjs +23 -23
- package/dist/components/Textarea/Textarea.module.scss.js +23 -23
- package/dist/components/Theme/ThemeToggle.module.scss.cjs +6 -6
- package/dist/components/Theme/ThemeToggle.module.scss.js +6 -6
- package/dist/components/ThinkingIndicator/ThinkingIndicator.module.scss.cjs +13 -13
- package/dist/components/ThinkingIndicator/ThinkingIndicator.module.scss.js +13 -13
- package/dist/components/Toast/Toast.module.scss.cjs +21 -21
- package/dist/components/Toast/Toast.module.scss.js +21 -21
- package/dist/components/Toggle/Toggle.module.scss.cjs +13 -13
- package/dist/components/Toggle/Toggle.module.scss.js +13 -13
- package/dist/components/ToggleGroup/ToggleGroup.module.scss.cjs +17 -17
- package/dist/components/ToggleGroup/ToggleGroup.module.scss.js +17 -17
- package/dist/components/Tooltip/Tooltip.module.scss.cjs +3 -3
- package/dist/components/Tooltip/Tooltip.module.scss.js +3 -3
- package/dist/data-table.cjs +58 -41
- package/dist/data-table.js +59 -41
- package/dist/datepicker.cjs +32 -72
- package/dist/datepicker.js +32 -72
- package/dist/index.cjs +89 -85
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/fragments.json +1 -1
- package/package.json +9 -8
- package/src/assets/fragments-wordmark.tsx +47 -0
- package/src/components/Accordion/index.tsx +13 -3
- package/src/components/Alert/Alert.module.scss +15 -2
- package/src/components/AppShell/AppShell.module.scss +73 -15
- package/src/components/AppShell/index.tsx +1 -1
- package/src/components/Button/Button.module.scss +19 -20
- package/src/components/Card/Card.module.scss +3 -3
- package/src/components/Card/index.tsx +3 -3
- package/src/components/Checkbox/Checkbox.contract.json +5 -24
- package/src/components/Checkbox/Checkbox.module.scss +4 -2
- package/src/components/Chip/Chip.contract.json +11 -28
- package/src/components/Chip/Chip.module.scss +21 -45
- package/src/components/CodeBlock/CodeBlock.module.scss +2 -7
- package/src/components/Combobox/Combobox.contract.json +6 -24
- package/src/components/Combobox/Combobox.module.scss +3 -2
- package/src/components/Combobox/index.tsx +132 -6
- package/src/components/DataTable/DataTable.contract.json +16 -23
- package/src/components/DataTable/DataTable.module.scss +31 -8
- package/src/components/DataTable/index.tsx +25 -4
- package/src/components/DatePicker/index.tsx +32 -84
- package/src/components/Drawer/index.tsx +38 -12
- package/src/components/Field/index.tsx +35 -35
- package/src/components/Header/Header.contract.json +41 -1
- package/src/components/Header/Header.module.scss +40 -0
- package/src/components/Header/index.tsx +88 -2
- package/src/components/IconButton/IconButton.contract.json +120 -0
- package/src/components/Listbox/Listbox.module.scss +5 -4
- package/src/components/Main/Main.contract.json +79 -0
- package/src/components/Main/Main.module.scss +31 -0
- package/src/components/Main/index.tsx +124 -0
- package/src/components/Menu/Menu.module.scss +8 -10
- package/src/components/Popover/index.tsx +34 -2
- package/src/components/RadioGroup/RadioGroup.contract.json +13 -27
- package/src/components/RadioGroup/index.tsx +4 -0
- package/src/components/Select/Select.module.scss +13 -12
- package/src/components/Table/Table.module.scss +22 -5
- package/src/components/TableOfContents/TableOfContents.contract.json +6 -16
- package/src/components/TableOfContents/TableOfContents.module.scss +20 -14
- package/src/components/TableOfContents/index.tsx +27 -38
- package/src/components/Toast/Toast.module.scss +15 -2
- package/src/components/ToggleGroup/ToggleGroup.module.scss +4 -1
- package/src/index.ts +4 -0
- package/src/styles/globals.scss +13 -10
- package/src/tokens/_component-properties.scss +26 -0
- package/src/tokens/_computed.scss +22 -4
- package/src/tokens/_derive.scss +55 -6
- package/src/tokens/_palettes.scss +24 -0
- package/src/tokens/_seeds.scss +20 -12
- package/src/tokens/_variables.scss +110 -63
- package/dist/components/Cloud/DashboardLayoutPrototypes.shared.d.ts +0 -33
- package/dist/components/Cloud/DashboardLayoutPrototypes.shared.d.ts.map +0 -1
- package/dist/components/Cloud/DashboardLayoutPrototypes.shell.d.ts +0 -11
- package/dist/components/Cloud/DashboardLayoutPrototypes.shell.d.ts.map +0 -1
- package/dist/components/Cloud/PullRequestsPrototypes.content.d.ts +0 -5
- package/dist/components/Cloud/PullRequestsPrototypes.content.d.ts.map +0 -1
- package/dist/components/Cloud/PullRequestsPrototypes.detail-panels.d.ts +0 -4
- package/dist/components/Cloud/PullRequestsPrototypes.detail-panels.d.ts.map +0 -1
- package/dist/components/Cloud/PullRequestsPrototypes.detail.d.ts +0 -3
- package/dist/components/Cloud/PullRequestsPrototypes.detail.d.ts.map +0 -1
- package/dist/components/Cloud/PullRequestsPrototypes.id-data.d.ts +0 -86
- package/dist/components/Cloud/PullRequestsPrototypes.id-data.d.ts.map +0 -1
- package/dist/components/Cloud/PullRequestsPrototypes.id-page.d.ts +0 -2
- package/dist/components/Cloud/PullRequestsPrototypes.id-page.d.ts.map +0 -1
- package/src/components/Accordion/Accordion.stories.tsx +0 -106
- package/src/components/Alert/Alert.stories.tsx +0 -119
- package/src/components/AppShell/AppShell.stories.tsx +0 -156
- package/src/components/Avatar/Avatar.stories.tsx +0 -74
- package/src/components/Badge/Badge.stories.tsx +0 -92
- package/src/components/BentoGrid/BentoGrid.stories.tsx +0 -98
- package/src/components/Box/Box.stories.tsx +0 -150
- package/src/components/Breadcrumbs/Breadcrumbs.stories.tsx +0 -87
- package/src/components/Button/Button.stories.tsx +0 -103
- package/src/components/ButtonGroup/ButtonGroup.stories.tsx +0 -97
- package/src/components/Card/Card.stories.tsx +0 -144
- package/src/components/Chart/Chart.stories.tsx +0 -119
- package/src/components/Checkbox/Checkbox.stories.tsx +0 -68
- package/src/components/Chip/Chip.stories.tsx +0 -70
- package/src/components/Cloud/CloudGovernanceShell.module.scss +0 -88
- package/src/components/Cloud/CloudGovernanceShell.stories.tsx +0 -446
- package/src/components/Cloud/ControlSizing.module.scss +0 -49
- package/src/components/Cloud/ControlSizing.stories.tsx +0 -238
- package/src/components/Cloud/DashboardLayoutPrototypes.module.scss +0 -462
- package/src/components/Cloud/DashboardLayoutPrototypes.shared.tsx +0 -375
- package/src/components/Cloud/DashboardLayoutPrototypes.shell.tsx +0 -147
- package/src/components/Cloud/DashboardLayoutPrototypes.stories.tsx +0 -328
- package/src/components/Cloud/PullRequestsPrototypes.content.tsx +0 -283
- package/src/components/Cloud/PullRequestsPrototypes.detail-panels.tsx +0 -381
- package/src/components/Cloud/PullRequestsPrototypes.detail.tsx +0 -204
- package/src/components/Cloud/PullRequestsPrototypes.id-data.ts +0 -395
- package/src/components/Cloud/PullRequestsPrototypes.id-page.tsx +0 -349
- package/src/components/Cloud/PullRequestsPrototypes.stories.tsx +0 -81
- package/src/components/CodeBlock/CodeBlock.stories.tsx +0 -147
- package/src/components/Collapsible/Collapsible.stories.tsx +0 -94
- package/src/components/ColorPicker/ColorPicker.stories.tsx +0 -74
- package/src/components/Combobox/Combobox.stories.tsx +0 -133
- package/src/components/Command/Command.stories.tsx +0 -102
- package/src/components/ConversationList/ConversationList.stories.tsx +0 -93
- package/src/components/DataTable/DataTable.stories.tsx +0 -129
- package/src/components/DatePicker/DatePicker.stories.tsx +0 -129
- package/src/components/Dialog/Dialog.stories.tsx +0 -154
- package/src/components/Drawer/Drawer.stories.tsx +0 -144
- package/src/components/Editor/Editor.stories.tsx +0 -99
- package/src/components/EmptyState/EmptyState.stories.tsx +0 -97
- package/src/components/Field/Field.stories.tsx +0 -109
- package/src/components/Fieldset/Fieldset.stories.tsx +0 -116
- package/src/components/Form/Form.stories.tsx +0 -142
- package/src/components/Grid/Grid.stories.tsx +0 -125
- package/src/components/Header/Header.stories.tsx +0 -133
- package/src/components/Icon/Icon.stories.tsx +0 -80
- package/src/components/IconButton/IconButton.stories.tsx +0 -78
- package/src/components/Image/Image.stories.tsx +0 -109
- package/src/components/Input/Input.stories.tsx +0 -104
- package/src/components/Link/Link.stories.tsx +0 -67
- package/src/components/List/List.stories.tsx +0 -95
- package/src/components/Listbox/Listbox.stories.tsx +0 -81
- package/src/components/Loading/Loading.stories.tsx +0 -69
- package/src/components/Markdown/Markdown.stories.tsx +0 -75
- package/src/components/Menu/Menu.stories.tsx +0 -113
- package/src/components/Message/Message.stories.tsx +0 -85
- package/src/components/NavigationMenu/NavigationMenu.stories.tsx +0 -161
- package/src/components/Pagination/Pagination.stories.tsx +0 -81
- package/src/components/Popover/Popover.stories.tsx +0 -152
- package/src/components/Progress/Progress.stories.tsx +0 -64
- package/src/components/Prompt/Prompt.stories.tsx +0 -93
- package/src/components/RadioGroup/RadioGroup.stories.tsx +0 -107
- package/src/components/ScrollArea/ScrollArea.stories.tsx +0 -97
- package/src/components/Select/Select.stories.tsx +0 -127
- package/src/components/Separator/Separator.stories.tsx +0 -84
- package/src/components/Sidebar/Sidebar.stories.tsx +0 -122
- package/src/components/Skeleton/Skeleton.stories.tsx +0 -80
- package/src/components/Slider/Slider.stories.tsx +0 -73
- package/src/components/Stack/Stack.stories.tsx +0 -73
- package/src/components/Switch/Switch.stories.tsx +0 -59
- package/src/components/Table/Table.stories.tsx +0 -219
- package/src/components/TableOfContents/TableOfContents.stories.tsx +0 -120
- package/src/components/Tabs/Tabs.stories.tsx +0 -136
- package/src/components/Text/Text.stories.tsx +0 -133
- package/src/components/Textarea/Textarea.stories.tsx +0 -107
- package/src/components/Theme/Theme.stories.tsx +0 -95
- package/src/components/ThinkingIndicator/ThinkingIndicator.stories.tsx +0 -85
- package/src/components/Toast/Toast.stories.tsx +0 -91
- package/src/components/ToggleGroup/ToggleGroup.stories.tsx +0 -114
- package/src/components/Tooltip/Tooltip.stories.tsx +0 -95
- package/src/components/VisuallyHidden/VisuallyHidden.stories.tsx +0 -78
|
@@ -27,6 +27,11 @@ $_radius: radius.get-radius-style(seeds.$fui-radius-style);
|
|
|
27
27
|
// Derive spacing from density
|
|
28
28
|
$_spacing: density.derive-spacing($_density);
|
|
29
29
|
|
|
30
|
+
// True when the brand seed is the Fragments default (pine). Lets the default
|
|
31
|
+
// theme emit exact Flight Recorder accents (sage dark / pine light) while any
|
|
32
|
+
// consumer-supplied $fui-brand keeps the full seed→accent derivation.
|
|
33
|
+
$brand-is-fragments-default: seeds.$fui-brand == #006b57;
|
|
34
|
+
|
|
30
35
|
// --------------------------------------------
|
|
31
36
|
// Computed: Base Configuration
|
|
32
37
|
// --------------------------------------------
|
|
@@ -87,7 +92,12 @@ $computed-sidebar-item-height: density.px-to-rem($_density, map.get($_density, s
|
|
|
87
92
|
|
|
88
93
|
// Accent colors (from brand seed)
|
|
89
94
|
$computed-color-accent: seeds.$fui-brand;
|
|
95
|
+
// Default (pine) fill needs white text; contrast-color mis-scores mid-dark
|
|
96
|
+
// brands, so pin on-accent to white for the Fragments default.
|
|
90
97
|
$computed-color-on-accent: derive.contrast-color(seeds.$fui-brand);
|
|
98
|
+
@if $brand-is-fragments-default {
|
|
99
|
+
$computed-color-on-accent: #ffffff;
|
|
100
|
+
}
|
|
91
101
|
$computed-color-accent-hover: derive.derive-accent-hover(seeds.$fui-brand, false);
|
|
92
102
|
$computed-color-accent-active: derive.derive-accent-active(seeds.$fui-brand, false);
|
|
93
103
|
|
|
@@ -148,7 +158,7 @@ $computed-shadow-lg: map.get($_shadows-light, lg);
|
|
|
148
158
|
$computed-focus-ring-color: derive.derive-focus-ring(seeds.$fui-brand, false);
|
|
149
159
|
|
|
150
160
|
// Scrollbar
|
|
151
|
-
$_scrollbar-light: derive.derive-scrollbar($_palette, false);
|
|
161
|
+
$_scrollbar-light: derive.derive-scrollbar($_palette, false, seeds.$fui-neutral);
|
|
152
162
|
$computed-scrollbar-track: map.get($_scrollbar-light, track);
|
|
153
163
|
$computed-scrollbar-thumb: map.get($_scrollbar-light, thumb);
|
|
154
164
|
$computed-scrollbar-thumb-hover: map.get($_scrollbar-light, thumb-hover);
|
|
@@ -160,8 +170,12 @@ $computed-backdrop: derive.derive-backdrop(false);
|
|
|
160
170
|
// Computed: Colors - Dark Mode
|
|
161
171
|
// --------------------------------------------
|
|
162
172
|
|
|
163
|
-
// Accent colors — dark brands lightened for visibility; on-accent handles text contrast
|
|
173
|
+
// Accent colors — dark brands lightened for visibility; on-accent handles text contrast.
|
|
174
|
+
// The Fragments default resolves to exact sage; overrides keep the chroma-aware lift.
|
|
164
175
|
$computed-dark-color-accent: derive.derive-dark-accent(seeds.$fui-brand);
|
|
176
|
+
@if $brand-is-fragments-default {
|
|
177
|
+
$computed-dark-color-accent: #7fc9b3;
|
|
178
|
+
}
|
|
165
179
|
$computed-dark-color-on-accent: derive.contrast-color($computed-dark-color-accent);
|
|
166
180
|
$computed-dark-color-accent-hover: derive.derive-accent-hover($computed-dark-color-accent, true);
|
|
167
181
|
$computed-dark-color-accent-active: derive.derive-accent-active($computed-dark-color-accent, true);
|
|
@@ -212,11 +226,15 @@ $computed-dark-shadow-sm: map.get($_shadows-dark, sm);
|
|
|
212
226
|
$computed-dark-shadow-md: map.get($_shadows-dark, md);
|
|
213
227
|
$computed-dark-shadow-lg: map.get($_shadows-dark, lg);
|
|
214
228
|
|
|
215
|
-
// Focus ring (dark mode)
|
|
229
|
+
// Focus ring (dark mode) — follows the dark accent. Pinned to sage for the
|
|
230
|
+
// Fragments default (derive-focus-ring mis-scores the mid-dark pine brand).
|
|
216
231
|
$computed-dark-focus-ring-color: derive.derive-focus-ring(seeds.$fui-brand, true);
|
|
232
|
+
@if $brand-is-fragments-default {
|
|
233
|
+
$computed-dark-focus-ring-color: #7fc9b3;
|
|
234
|
+
}
|
|
217
235
|
|
|
218
236
|
// Scrollbar (dark mode)
|
|
219
|
-
$_scrollbar-dark: derive.derive-scrollbar($_palette, true);
|
|
237
|
+
$_scrollbar-dark: derive.derive-scrollbar($_palette, true, seeds.$fui-neutral);
|
|
220
238
|
$computed-dark-scrollbar-track: map.get($_scrollbar-dark, track);
|
|
221
239
|
$computed-dark-scrollbar-thumb: map.get($_scrollbar-dark, thumb);
|
|
222
240
|
$computed-dark-scrollbar-thumb-hover: map.get($_scrollbar-dark, thumb-hover);
|
package/src/tokens/_derive.scss
CHANGED
|
@@ -155,6 +155,19 @@
|
|
|
155
155
|
/// @return {Map} Surface token values
|
|
156
156
|
@function derive-surfaces($palette, $is-dark: false, $palette-name: 'stone') {
|
|
157
157
|
@if $is-dark {
|
|
158
|
+
// Carbon (Fragments default) — charcoal material surfaces, not voids.
|
|
159
|
+
@if $palette-name == 'carbon' {
|
|
160
|
+
@return (
|
|
161
|
+
primary: #212121, // page / body background
|
|
162
|
+
secondary: #171717, // sidebar, recessed panels, surface
|
|
163
|
+
tertiary: #2f2f2f, // raised / hover / active row (surface-2)
|
|
164
|
+
elevated: #2f2f2f, // cards float above the page tone
|
|
165
|
+
subtle: #171717, // recessed (code wells, insets)
|
|
166
|
+
hover: rgba(255, 255, 255, 0.055),
|
|
167
|
+
active: rgba(255, 255, 255, 0.085)
|
|
168
|
+
);
|
|
169
|
+
}
|
|
170
|
+
|
|
158
171
|
@if $palette-name == 'stone' or $palette-name == 'mono' {
|
|
159
172
|
@return (
|
|
160
173
|
primary: #000000,
|
|
@@ -181,8 +194,9 @@
|
|
|
181
194
|
);
|
|
182
195
|
}
|
|
183
196
|
|
|
184
|
-
// Light mode: colorful palettes get tinted backgrounds
|
|
185
|
-
|
|
197
|
+
// Light mode: colorful palettes get tinted backgrounds. Carbon is a neutral
|
|
198
|
+
// (like stone) — white surfaces in light mode.
|
|
199
|
+
$is-colorful: $palette-name != 'stone' and $palette-name != 'carbon';
|
|
186
200
|
@if $is-colorful {
|
|
187
201
|
@return (
|
|
188
202
|
primary: get-shade($palette, 50), // Tinted page background
|
|
@@ -217,6 +231,14 @@
|
|
|
217
231
|
/// @return {Map} Body and main background values
|
|
218
232
|
@function derive-app-surfaces($palette, $is-dark: false, $palette-name: 'stone') {
|
|
219
233
|
@if $is-dark {
|
|
234
|
+
// Carbon (Fragments default) — flat page canvas at #212121.
|
|
235
|
+
@if $palette-name == 'carbon' {
|
|
236
|
+
@return (
|
|
237
|
+
body: #212121,
|
|
238
|
+
main: #212121
|
|
239
|
+
);
|
|
240
|
+
}
|
|
241
|
+
|
|
220
242
|
@if $palette-name == 'stone' or $palette-name == 'mono' or $palette-name == 'wind' {
|
|
221
243
|
@return (
|
|
222
244
|
body: #000000,
|
|
@@ -230,7 +252,7 @@
|
|
|
230
252
|
);
|
|
231
253
|
}
|
|
232
254
|
|
|
233
|
-
@if $palette-name == 'stone' or $palette-name == 'wind' {
|
|
255
|
+
@if $palette-name == 'stone' or $palette-name == 'carbon' or $palette-name == 'wind' {
|
|
234
256
|
@return (
|
|
235
257
|
body: get-shade($palette, 100),
|
|
236
258
|
main: #ffffff
|
|
@@ -256,6 +278,16 @@
|
|
|
256
278
|
/// @return {Map} Text token values
|
|
257
279
|
@function derive-text($palette, $is-dark: false, $palette-name: 'stone') {
|
|
258
280
|
@if $is-dark {
|
|
281
|
+
// Carbon (Fragments default) — ink / muted / faint text tiers.
|
|
282
|
+
@if $palette-name == 'carbon' {
|
|
283
|
+
@return (
|
|
284
|
+
primary: #ececec, // ink
|
|
285
|
+
secondary: #b4b4b4, // muted
|
|
286
|
+
tertiary: #8f8f8f, // faint / placeholder
|
|
287
|
+
inverse: #212121 // text on light (sage) accents
|
|
288
|
+
);
|
|
289
|
+
}
|
|
290
|
+
|
|
259
291
|
@if $palette-name == 'stone' or $palette-name == 'mono' {
|
|
260
292
|
@return (
|
|
261
293
|
primary: #ededed,
|
|
@@ -280,9 +312,9 @@
|
|
|
280
312
|
);
|
|
281
313
|
}
|
|
282
314
|
|
|
283
|
-
// Light mode background — stone
|
|
315
|
+
// Light mode background — stone/carbon use white, colorful palettes use palette[50]
|
|
284
316
|
$bg: #ffffff;
|
|
285
|
-
@if $palette-name != 'stone' {
|
|
317
|
+
@if $palette-name != 'stone' and $palette-name != 'carbon' {
|
|
286
318
|
$bg: get-shade($palette, 50);
|
|
287
319
|
}
|
|
288
320
|
|
|
@@ -306,6 +338,14 @@
|
|
|
306
338
|
/// @return {Map} Border token values
|
|
307
339
|
@function derive-borders($palette, $is-dark: false, $palette-name: 'stone') {
|
|
308
340
|
@if $is-dark {
|
|
341
|
+
// Carbon (Fragments default) — solid hairline + strong border.
|
|
342
|
+
@if $palette-name == 'carbon' {
|
|
343
|
+
@return (
|
|
344
|
+
default: #323232, // hairline
|
|
345
|
+
strong: #4b4b4b // strong border
|
|
346
|
+
);
|
|
347
|
+
}
|
|
348
|
+
|
|
309
349
|
@if $palette-name == 'stone' or $palette-name == 'mono' {
|
|
310
350
|
@return (
|
|
311
351
|
default: rgba(255, 255, 255, 0.075),
|
|
@@ -364,8 +404,17 @@
|
|
|
364
404
|
/// @param {Map} $palette - Neutral palette map
|
|
365
405
|
/// @param {Boolean} $is-dark - Whether in dark mode
|
|
366
406
|
/// @return {Map} Scrollbar token values
|
|
367
|
-
@function derive-scrollbar($palette, $is-dark: false) {
|
|
407
|
+
@function derive-scrollbar($palette, $is-dark: false, $palette-name: 'stone') {
|
|
368
408
|
@if $is-dark {
|
|
409
|
+
// Carbon (Fragments default) — transparent track, strong-border thumb.
|
|
410
|
+
@if $palette-name == 'carbon' {
|
|
411
|
+
@return (
|
|
412
|
+
track: transparent,
|
|
413
|
+
thumb: #4b4b4b,
|
|
414
|
+
thumb-hover: #b4b4b4
|
|
415
|
+
);
|
|
416
|
+
}
|
|
417
|
+
|
|
369
418
|
@return (
|
|
370
419
|
track: get-shade($palette, 800),
|
|
371
420
|
thumb: get-shade($palette, 600),
|
|
@@ -120,6 +120,29 @@ $palette-fragments: (
|
|
|
120
120
|
950: #0d1f17 // Darkest bg
|
|
121
121
|
);
|
|
122
122
|
|
|
123
|
+
// --------------------------------------------
|
|
124
|
+
// Carbon - Fragments brand neutral (DEFAULT)
|
|
125
|
+
// The hybrid-skin charcoal ramp. Distinct from `mono` (true black) — carbon's
|
|
126
|
+
// dark surfaces sit at #212121 (page) with #171717 recessed panels and #2f2f2f
|
|
127
|
+
// raised/elevated so panels read as material, not voids. Dark surface/text/
|
|
128
|
+
// border values are emitted explicitly by the derive-* branches; light mode
|
|
129
|
+
// behaves like a neutral white palette. Key stops: 900 = page bg,
|
|
130
|
+
// 950 = recessed surface, 800 = hairline, 700 = strong border, 500 = faint text.
|
|
131
|
+
// --------------------------------------------
|
|
132
|
+
$palette-carbon: (
|
|
133
|
+
50: #fafafa,
|
|
134
|
+
100: #f4f4f4,
|
|
135
|
+
200: #e4e4e4,
|
|
136
|
+
300: #d1d1d1,
|
|
137
|
+
400: #b0b0b0,
|
|
138
|
+
500: #8f8f8f, // faint / placeholder text
|
|
139
|
+
600: #5a5a5a,
|
|
140
|
+
700: #4b4b4b, // strong border
|
|
141
|
+
800: #323232, // hairline / default border
|
|
142
|
+
900: #212121, // page / body background
|
|
143
|
+
950: #171717 // recessed surface (cards, panels, code wells)
|
|
144
|
+
);
|
|
145
|
+
|
|
123
146
|
// --------------------------------------------
|
|
124
147
|
// Fire - Warm red/orange tones
|
|
125
148
|
// Energy, passion feel
|
|
@@ -149,6 +172,7 @@ $palettes: (
|
|
|
149
172
|
"earth": $palette-earth,
|
|
150
173
|
"fire": $palette-fire,
|
|
151
174
|
"fragments": $palette-fragments,
|
|
175
|
+
"carbon": $palette-carbon,
|
|
152
176
|
"wind": $palette-stone // Legacy alias — "wind" was renamed to "stone"
|
|
153
177
|
);
|
|
154
178
|
|
package/src/tokens/_seeds.scss
CHANGED
|
@@ -22,13 +22,16 @@
|
|
|
22
22
|
// --------------------------------------------
|
|
23
23
|
|
|
24
24
|
/// Primary brand color - derives accent colors, focus rings, etc.
|
|
25
|
+
/// Default = Fragments "pine" (the fill/foreground accent). The out-of-box
|
|
26
|
+
/// theme derives a sage foreground accent in dark mode from this seed.
|
|
25
27
|
/// @type Color
|
|
26
|
-
$fui-brand: #
|
|
28
|
+
$fui-brand: #006b57 !default;
|
|
27
29
|
|
|
28
30
|
/// Neutral palette name for surfaces, text, and borders
|
|
29
|
-
/// Options: "stone" | "mono" | "ice" | "earth" | "sand" | "fire" | "fragments"
|
|
31
|
+
/// Options: "carbon" | "stone" | "mono" | "ice" | "earth" | "sand" | "fire" | "fragments"
|
|
32
|
+
/// Default = "carbon" (the Fragments "Flight Recorder" near-black ramp).
|
|
30
33
|
/// @type String
|
|
31
|
-
$fui-neutral: "
|
|
34
|
+
$fui-neutral: "carbon" !default;
|
|
32
35
|
|
|
33
36
|
/// Density preset controlling spacing scale
|
|
34
37
|
/// Options: "compact" | "default" | "relaxed"
|
|
@@ -45,7 +48,7 @@ $fui-radius-style: "default" !default;
|
|
|
45
48
|
// --------------------------------------------
|
|
46
49
|
// Fail fast at compile time if invalid seed values are provided.
|
|
47
50
|
|
|
48
|
-
$_valid-neutrals: "stone", "mono", "ice", "earth", "sand", "fire", "fragments";
|
|
51
|
+
$_valid-neutrals: "carbon", "stone", "mono", "ice", "earth", "sand", "fire", "fragments";
|
|
49
52
|
@if not list.index($_valid-neutrals, $fui-neutral) {
|
|
50
53
|
@error "Invalid $fui-neutral: '#{$fui-neutral}'. Must be one of: #{$_valid-neutrals}";
|
|
51
54
|
}
|
|
@@ -66,18 +69,23 @@ $_valid-radii: "sharp", "subtle", "default", "rounded", "pill";
|
|
|
66
69
|
// Override these to customize semantic colors.
|
|
67
70
|
// If not overridden, they use sensible defaults.
|
|
68
71
|
|
|
69
|
-
|
|
72
|
+
// The status seeds below are tuned to sit in one family with the sage brand
|
|
73
|
+
// (`$fui-brand` / success `#7fc9b3`): soft, muted, ~60% lightness rather than
|
|
74
|
+
// neon. Danger is the warm complement of sage, warning its split-complement,
|
|
75
|
+
// info a cool teal-adjacent slate — so they read as one palette, not bolted-on.
|
|
76
|
+
|
|
77
|
+
/// Danger/error color — muted coral-terracotta, sage's warm complement.
|
|
70
78
|
/// @type Color
|
|
71
|
-
$fui-danger: #
|
|
79
|
+
$fui-danger: #d97066 !default;
|
|
72
80
|
|
|
73
|
-
/// Success color (
|
|
81
|
+
/// Success color (Fragments brand default — sage; green means "contract passing")
|
|
74
82
|
/// @type Color
|
|
75
|
-
$fui-success: #
|
|
83
|
+
$fui-success: #7fc9b3 !default;
|
|
76
84
|
|
|
77
|
-
/// Warning color
|
|
85
|
+
/// Warning color — honey amber, muted to match the sage family.
|
|
78
86
|
/// @type Color
|
|
79
|
-
$fui-warning: #
|
|
87
|
+
$fui-warning: #e0aa5c !default;
|
|
80
88
|
|
|
81
|
-
/// Info color
|
|
89
|
+
/// Info color — dusty slate-blue, a cool teal-adjacent tone (was flat grey).
|
|
82
90
|
/// @type Color
|
|
83
|
-
$fui-info: #
|
|
91
|
+
$fui-info: #7fa6c4 !default;
|
|
@@ -22,6 +22,7 @@
|
|
|
22
22
|
// ============================================
|
|
23
23
|
|
|
24
24
|
// Import computed values from seed system
|
|
25
|
+
@use "sass:string";
|
|
25
26
|
@use "computed" as computed;
|
|
26
27
|
|
|
27
28
|
// --------------------------------------------
|
|
@@ -44,17 +45,15 @@ $fui-base-unit: computed.$computed-base-unit !default;
|
|
|
44
45
|
// Typography
|
|
45
46
|
// --------------------------------------------
|
|
46
47
|
$fui-font-sans:
|
|
47
|
-
"
|
|
48
|
-
"Geist",
|
|
48
|
+
"Inter Variable",
|
|
49
49
|
Inter,
|
|
50
|
-
system-ui,
|
|
51
50
|
-apple-system,
|
|
52
51
|
BlinkMacSystemFont,
|
|
53
52
|
"Segoe UI",
|
|
54
|
-
|
|
53
|
+
system-ui,
|
|
55
54
|
sans-serif !default;
|
|
56
55
|
$fui-font-mono:
|
|
57
|
-
"
|
|
56
|
+
"JetBrains Mono Variable", "JetBrains Mono", ui-monospace, "SF Mono", Menlo, monospace !default;
|
|
58
57
|
|
|
59
58
|
// Font sizes (rem based on 14px root).
|
|
60
59
|
// Scale ladder tuned for industry-leading docs hierarchy:
|
|
@@ -197,7 +196,7 @@ $fui-shadow-lg: computed.$computed-shadow-lg !default;
|
|
|
197
196
|
// Focus ring (derived from $fui-brand)
|
|
198
197
|
$fui-focus-ring-color: computed.$computed-focus-ring-color !default;
|
|
199
198
|
$fui-focus-ring-offset: 2px !default;
|
|
200
|
-
$fui-focus-ring-width:
|
|
199
|
+
$fui-focus-ring-width: 2px !default;
|
|
201
200
|
|
|
202
201
|
// Scrollbar (derived from $fui-neutral palette)
|
|
203
202
|
$fui-scrollbar-width: 8px !default;
|
|
@@ -214,6 +213,28 @@ $fui-dark-color-on-accent: computed.$computed-dark-color-on-accent !default;
|
|
|
214
213
|
$fui-dark-color-accent-hover: computed.$computed-dark-color-accent-hover !default;
|
|
215
214
|
$fui-dark-color-accent-active: computed.$computed-dark-color-accent-active !default;
|
|
216
215
|
|
|
216
|
+
// True when the brand seed is the Fragments default (pine). When true, the
|
|
217
|
+
// runtime (relative-color) dark accent is pinned to the exact SCSS-computed
|
|
218
|
+
// sage values so the ~93% relative-color path and the SCSS fallback agree.
|
|
219
|
+
// Any consumer-supplied $fui-brand flips this false and restores the reactive
|
|
220
|
+
// OKLCH derivation that tracks --fui-seed-brand at runtime.
|
|
221
|
+
$fui-brand-is-default: computed.$brand-is-fragments-default !default;
|
|
222
|
+
|
|
223
|
+
$_rt-dark-accent: $fui-dark-color-accent;
|
|
224
|
+
$_rt-dark-accent-hover: $fui-dark-color-accent-hover;
|
|
225
|
+
$_rt-dark-accent-active: $fui-dark-color-accent-active;
|
|
226
|
+
@if not $fui-brand-is-default {
|
|
227
|
+
$_rt-dark-accent: string.unquote(
|
|
228
|
+
"oklch(from var(--fui-seed-brand) clamp(0.55, max(l, calc(0.95 - 2 * c)), 0.85) c h)"
|
|
229
|
+
);
|
|
230
|
+
$_rt-dark-accent-hover: string.unquote(
|
|
231
|
+
"oklch(from var(--fui-seed-brand) clamp(0.6, max(calc(l + 0.06), calc(0.97 - 2 * c)), 0.9) c h)"
|
|
232
|
+
);
|
|
233
|
+
$_rt-dark-accent-active: string.unquote(
|
|
234
|
+
"oklch(from var(--fui-seed-brand) clamp(0.5, max(calc(l - 0.04), calc(0.9 - 2 * c)), 0.82) c h)"
|
|
235
|
+
);
|
|
236
|
+
}
|
|
237
|
+
|
|
217
238
|
// Surface colors (dark) - derived from $fui-neutral palette
|
|
218
239
|
$fui-dark-bg-primary: computed.$computed-dark-bg-primary !default;
|
|
219
240
|
$fui-dark-bg-secondary: computed.$computed-dark-bg-secondary !default;
|
|
@@ -285,6 +306,8 @@ $fui-button-height-xs: computed.$computed-button-height-xs !default;
|
|
|
285
306
|
$fui-button-height-sm: computed.$computed-button-height-sm !default;
|
|
286
307
|
$fui-button-height-md: computed.$computed-button-height-md !default;
|
|
287
308
|
$fui-button-height-lg: computed.$computed-button-height-lg !default;
|
|
309
|
+
$fui-button-outlined-shadow: inset 0 1px 0
|
|
310
|
+
light-dark(color-mix(in srgb, white 72%, transparent), color-mix(in srgb, white 5%, transparent)) !default;
|
|
288
311
|
|
|
289
312
|
// Input heights (derived from density seed)
|
|
290
313
|
// Note: These are dedicated input tokens, not reusing button heights
|
|
@@ -323,9 +346,15 @@ $fui-sidebar-item-height: computed.$computed-sidebar-item-height !default; // de
|
|
|
323
346
|
$fui-appshell-header-height: 56px !default;
|
|
324
347
|
$fui-header-z-index: 40 !default;
|
|
325
348
|
|
|
326
|
-
// CodeBlock background — shared with Markdown's <pre> prose styling
|
|
327
|
-
//
|
|
328
|
-
|
|
349
|
+
// CodeBlock background — shared with Markdown's <pre> prose styling — and
|
|
350
|
+
// selection tint are runtime hooks so consuming apps can preserve their own
|
|
351
|
+
// code-surface treatment without forking either component.
|
|
352
|
+
$fui-code-bg: #171717 !default;
|
|
353
|
+
$fui-code-selection-bg: color-mix(
|
|
354
|
+
in srgb,
|
|
355
|
+
var(--fui-button-primary-base, #006b57) 30%,
|
|
356
|
+
transparent
|
|
357
|
+
) !default;
|
|
329
358
|
|
|
330
359
|
// --------------------------------------------
|
|
331
360
|
// CSS Custom Properties Export
|
|
@@ -508,12 +537,14 @@ $fui-code-bg: #0c0c0e !default;
|
|
|
508
537
|
--fui-border: light-dark(#{$fui-border}, #{$fui-dark-border});
|
|
509
538
|
--fui-border-default: light-dark(#{$fui-border-default}, #{$fui-dark-border-default});
|
|
510
539
|
--fui-border-strong: light-dark(#{$fui-border-strong}, #{$fui-dark-border-strong});
|
|
540
|
+
--fui-border-subtle: color-mix(in srgb, var(--fui-border-default) 68%, transparent);
|
|
511
541
|
|
|
512
|
-
// Native browser text selection
|
|
513
|
-
//
|
|
542
|
+
// Native browser text selection tracks the accent (pine in light, sage in
|
|
543
|
+
// dark) as a soft wash — matching the Flight Recorder accent-tint.
|
|
544
|
+
// Component-selected states stay tuned per control density.
|
|
514
545
|
--fui-selection-bg: light-dark(
|
|
515
|
-
color-mix(in srgb, var(--fui-
|
|
516
|
-
color-mix(in srgb, var(--fui-
|
|
546
|
+
color-mix(in srgb, var(--fui-color-accent, #006b57) 18%, transparent),
|
|
547
|
+
color-mix(in srgb, var(--fui-color-accent, #7fc9b3) 22%, transparent)
|
|
517
548
|
);
|
|
518
549
|
--fui-selection-color: var(--fui-text-primary);
|
|
519
550
|
|
|
@@ -553,30 +584,13 @@ $fui-code-bg: #0c0c0e !default;
|
|
|
553
584
|
--fui-kbd-radius: var(--fui-radius-sm);
|
|
554
585
|
--fui-kbd-reserved-width: 2.714rem; // 38px, enough for "⌘K"
|
|
555
586
|
|
|
556
|
-
// Button chrome.
|
|
557
|
-
//
|
|
558
|
-
//
|
|
559
|
-
|
|
560
|
-
--fui-button-primary-base: light-dark(#
|
|
561
|
-
--fui-button-primary-hover: light-dark(#
|
|
562
|
-
--fui-button-primary-active: light-dark(#
|
|
563
|
-
--fui-button-primary-bg: linear-gradient(
|
|
564
|
-
to bottom,
|
|
565
|
-
color-mix(in srgb, var(--fui-button-primary-base) 78%, white 22%) 0%,
|
|
566
|
-
var(--fui-button-primary-base) 52%,
|
|
567
|
-
color-mix(in srgb, var(--fui-button-primary-active) 88%, black 12%) 100%
|
|
568
|
-
);
|
|
569
|
-
--fui-button-primary-bg-hover: linear-gradient(
|
|
570
|
-
to bottom,
|
|
571
|
-
color-mix(in srgb, var(--fui-button-primary-hover) 76%, white 24%) 0%,
|
|
572
|
-
var(--fui-button-primary-hover) 52%,
|
|
573
|
-
color-mix(in srgb, var(--fui-button-primary-active) 84%, black 16%) 100%
|
|
574
|
-
);
|
|
575
|
-
--fui-button-primary-bg-active: linear-gradient(
|
|
576
|
-
to bottom,
|
|
577
|
-
color-mix(in srgb, var(--fui-button-primary-active) 88%, black 12%) 0%,
|
|
578
|
-
var(--fui-button-primary-active) 100%
|
|
579
|
-
);
|
|
587
|
+
// Button chrome. Primary fill = pine. Border/color are shared; the fill
|
|
588
|
+
// treatment and radius branch on the brand: the Fragments default renders a
|
|
589
|
+
// FLAT solid pill (hybrid-skin), while consumer-branded builds keep the
|
|
590
|
+
// raised-gradient recipe with crisp border, top highlight, and pressed inset.
|
|
591
|
+
--fui-button-primary-base: light-dark(#006b57, #006b57);
|
|
592
|
+
--fui-button-primary-hover: light-dark(#187762, #187762);
|
|
593
|
+
--fui-button-primary-active: light-dark(#005f4c, #005f4c);
|
|
580
594
|
--fui-button-primary-border-hover: color-mix(
|
|
581
595
|
in srgb,
|
|
582
596
|
var(--fui-button-primary-active) 86%,
|
|
@@ -588,13 +602,47 @@ $fui-code-bg: #0c0c0e !default;
|
|
|
588
602
|
black 26%
|
|
589
603
|
);
|
|
590
604
|
--fui-button-primary-color: #fff;
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
605
|
+
|
|
606
|
+
@if $fui-brand-is-default {
|
|
607
|
+
// Flat solid pill — hybrid-skin treatment.
|
|
608
|
+
--fui-button-radius: var(--fui-radius-full);
|
|
609
|
+
--fui-button-primary-bg: var(--fui-button-primary-base);
|
|
610
|
+
--fui-button-primary-bg-hover: var(--fui-button-primary-hover);
|
|
611
|
+
--fui-button-primary-bg-active: var(--fui-button-primary-active);
|
|
612
|
+
--fui-button-primary-shadow: none;
|
|
613
|
+
--fui-button-primary-shadow-active: inset
|
|
614
|
+
0
|
|
615
|
+
1px
|
|
616
|
+
2px
|
|
617
|
+
color-mix(in srgb, black 22%, transparent);
|
|
618
|
+
} @else {
|
|
619
|
+
// Raised-gradient recipe for consumer-branded builds.
|
|
620
|
+
--fui-button-radius: var(--fui-radius-lg);
|
|
621
|
+
--fui-button-primary-bg: linear-gradient(
|
|
622
|
+
to bottom,
|
|
623
|
+
color-mix(in srgb, var(--fui-button-primary-base) 78%, white 22%) 0%,
|
|
624
|
+
var(--fui-button-primary-base) 52%,
|
|
625
|
+
color-mix(in srgb, var(--fui-button-primary-active) 88%, black 12%) 100%
|
|
626
|
+
);
|
|
627
|
+
--fui-button-primary-bg-hover: linear-gradient(
|
|
628
|
+
to bottom,
|
|
629
|
+
color-mix(in srgb, var(--fui-button-primary-hover) 76%, white 24%) 0%,
|
|
630
|
+
var(--fui-button-primary-hover) 52%,
|
|
631
|
+
color-mix(in srgb, var(--fui-button-primary-active) 84%, black 16%) 100%
|
|
632
|
+
);
|
|
633
|
+
--fui-button-primary-bg-active: linear-gradient(
|
|
634
|
+
to bottom,
|
|
635
|
+
color-mix(in srgb, var(--fui-button-primary-active) 88%, black 12%) 0%,
|
|
636
|
+
var(--fui-button-primary-active) 100%
|
|
637
|
+
);
|
|
638
|
+
--fui-button-primary-shadow:
|
|
639
|
+
inset 0 1px 0 color-mix(in srgb, white 30%, transparent),
|
|
640
|
+
inset 0 -1px 0 color-mix(in srgb, black 18%, transparent),
|
|
641
|
+
0 1px 1px color-mix(in srgb, black 16%, transparent);
|
|
642
|
+
--fui-button-primary-shadow-active:
|
|
643
|
+
inset 0 1px 2px color-mix(in srgb, black 30%, transparent),
|
|
644
|
+
0 1px 0 color-mix(in srgb, white 8%, transparent);
|
|
645
|
+
}
|
|
598
646
|
|
|
599
647
|
--fui-button-neutral-bg: linear-gradient(
|
|
600
648
|
to bottom,
|
|
@@ -638,6 +686,7 @@ $fui-code-bg: #0c0c0e !default;
|
|
|
638
686
|
var(--fui-text-primary) 42%
|
|
639
687
|
);
|
|
640
688
|
--fui-button-neutral-color: var(--fui-text-primary);
|
|
689
|
+
--fui-button-outlined-shadow: #{$fui-button-outlined-shadow};
|
|
641
690
|
--fui-button-neutral-shadow:
|
|
642
691
|
inset 0 1px 0
|
|
643
692
|
light-dark(
|
|
@@ -650,6 +699,9 @@ $fui-code-bg: #0c0c0e !default;
|
|
|
650
699
|
inset 0 1px 2px color-mix(in srgb, black 16%, transparent),
|
|
651
700
|
inset 0 0 0 1px color-mix(in srgb, var(--fui-text-primary) 6%, transparent);
|
|
652
701
|
|
|
702
|
+
--fui-code-bg: #{$fui-code-bg};
|
|
703
|
+
--fui-code-selection-bg: #{$fui-code-selection-bg};
|
|
704
|
+
|
|
653
705
|
// Popup/menu active-item highlight — neutral, deliberately stronger than
|
|
654
706
|
// --fui-bg-hover (which is tuned for subtle surface hovers and reads as ~invisible
|
|
655
707
|
// on menu items, esp. in dark mode). Shared by every popup-list surface. Accent is
|
|
@@ -674,9 +726,12 @@ $fui-code-bg: #0c0c0e !default;
|
|
|
674
726
|
--fui-sidebar-footer-border: color-mix(in srgb, var(--fui-border-default) 68%, transparent);
|
|
675
727
|
|
|
676
728
|
// Card/panel surfaces.
|
|
729
|
+
--fui-badge-radius: var(--fui-radius-lg);
|
|
730
|
+
--fui-badge-dot-color: currentColor;
|
|
677
731
|
--fui-card-radius: var(--fui-radius-lg);
|
|
678
732
|
--fui-card-bg: color-mix(in srgb, var(--fui-bg-elevated) 92%, transparent);
|
|
679
733
|
--fui-card-border: color-mix(in srgb, var(--fui-border-default) 86%, transparent);
|
|
734
|
+
--fui-card-outlined-border: var(--fui-card-border);
|
|
680
735
|
--fui-card-shadow: inset 0 1px 0
|
|
681
736
|
light-dark(
|
|
682
737
|
color-mix(in srgb, white 86%, transparent),
|
|
@@ -692,6 +747,8 @@ $fui-code-bg: #0c0c0e !default;
|
|
|
692
747
|
var(--fui-bg-elevated) 84%,
|
|
693
748
|
var(--fui-text-primary) 6%
|
|
694
749
|
);
|
|
750
|
+
--fui-card-active-shadow: inset 0 1px 2px color-mix(in srgb, black 12%, transparent);
|
|
751
|
+
--fui-card-panel-shadow: var(--fui-card-shadow);
|
|
695
752
|
--fui-card-stat-bg: color-mix(in srgb, var(--fui-bg-elevated) 74%, transparent);
|
|
696
753
|
--fui-card-stat-border: color-mix(in srgb, var(--fui-border-default) 78%, transparent);
|
|
697
754
|
--fui-card-stat-shadow: var(--fui-card-shadow);
|
|
@@ -810,10 +867,10 @@ $fui-code-bg: #0c0c0e !default;
|
|
|
810
867
|
// brand (high c) keeps its own lightness, while a neutral grey brand (c≈0) lifts
|
|
811
868
|
// toward ~0.85 so it stays visible on dark surfaces where lightness is the only
|
|
812
869
|
// perceptual cue. Final L is clamped to [0.55, 0.85].
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
);
|
|
870
|
+
// Dark half is gated: the Fragments default emits the exact SCSS-computed
|
|
871
|
+
// sage constants (#{$_rt-dark-accent}) so this path and the fallback agree;
|
|
872
|
+
// any consumer $fui-brand restores the reactive chroma-aware OKLCH lift.
|
|
873
|
+
--fui-color-accent: light-dark(var(--fui-seed-brand), #{$_rt-dark-accent});
|
|
817
874
|
|
|
818
875
|
// Auto-contrast text for elements on accent backgrounds (buttons, chips, etc.)
|
|
819
876
|
// Lightness > 0.6 → dark text; otherwise → white. Users can override this token.
|
|
@@ -822,15 +879,11 @@ $fui-code-bg: #0c0c0e !default;
|
|
|
822
879
|
);
|
|
823
880
|
--fui-color-accent-hover: light-dark(
|
|
824
881
|
oklch(from var(--fui-seed-brand) max(0.05, calc(l - 0.06)) c h),
|
|
825
|
-
|
|
826
|
-
from var(--fui-seed-brand) clamp(0.6, max(calc(l + 0.06), calc(0.97 - 2 * c)), 0.9) c h
|
|
827
|
-
)
|
|
882
|
+
#{$_rt-dark-accent-hover}
|
|
828
883
|
);
|
|
829
884
|
--fui-color-accent-active: light-dark(
|
|
830
885
|
oklch(from var(--fui-seed-brand) max(0.05, calc(l - 0.12)) c h),
|
|
831
|
-
|
|
832
|
-
from var(--fui-seed-brand) clamp(0.5, max(calc(l - 0.04), calc(0.9 - 2 * c)), 0.82) c h
|
|
833
|
-
)
|
|
886
|
+
#{$_rt-dark-accent-active}
|
|
834
887
|
);
|
|
835
888
|
|
|
836
889
|
// Semantic hover derived from seed
|
|
@@ -881,18 +934,12 @@ $fui-code-bg: #0c0c0e !default;
|
|
|
881
934
|
// is never clamped, so saturated brands (e.g. blue-600) stay true in dark mode.
|
|
882
935
|
:root[data-theme="dark"],
|
|
883
936
|
:root.dark {
|
|
884
|
-
--fui-color-accent:
|
|
885
|
-
from var(--fui-seed-brand) clamp(0.55, max(l, calc(0.95 - 2 * c)), 0.85) c h
|
|
886
|
-
);
|
|
937
|
+
--fui-color-accent: #{$_rt-dark-accent};
|
|
887
938
|
--fui-color-on-accent: oklch(
|
|
888
939
|
from var(--fui-color-accent) calc(0 + (1 - clamp(0, calc((l - 0.6) * 999), 1))) 0 0
|
|
889
940
|
);
|
|
890
|
-
--fui-color-accent-hover:
|
|
891
|
-
|
|
892
|
-
);
|
|
893
|
-
--fui-color-accent-active: oklch(
|
|
894
|
-
from var(--fui-seed-brand) clamp(0.5, max(calc(l - 0.04), calc(0.9 - 2 * c)), 0.82) c h
|
|
895
|
-
);
|
|
941
|
+
--fui-color-accent-hover: #{$_rt-dark-accent-hover};
|
|
942
|
+
--fui-color-accent-active: #{$_rt-dark-accent-active};
|
|
896
943
|
--fui-color-danger-bg: color-mix(in oklch, var(--fui-seed-danger) 24%, black);
|
|
897
944
|
--fui-color-success-bg: color-mix(in oklch, var(--fui-seed-success) 24%, black);
|
|
898
945
|
--fui-color-warning-bg: color-mix(in oklch, var(--fui-seed-warning) 24%, black);
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import { type ProgressProps } from "../Progress";
|
|
2
|
-
export { PrototypeShell } from "./DashboardLayoutPrototypes.shell";
|
|
3
|
-
export type StateVariant = "success" | "warning" | "error" | "info";
|
|
4
|
-
export type AreaRow = {
|
|
5
|
-
area: string;
|
|
6
|
-
owner: string;
|
|
7
|
-
coverage: number;
|
|
8
|
-
drift: number;
|
|
9
|
-
criticality: string;
|
|
10
|
-
state: "Healthy" | "Watching" | "Blocked" | "Review";
|
|
11
|
-
variant: StateVariant;
|
|
12
|
-
};
|
|
13
|
-
export declare const areas: AreaRow[];
|
|
14
|
-
export declare function MetricPanel({ label, value, progress, variant, }: {
|
|
15
|
-
label: string;
|
|
16
|
-
value: string;
|
|
17
|
-
progress: number;
|
|
18
|
-
variant?: ProgressProps["variant"];
|
|
19
|
-
}): import("react/jsx-runtime").JSX.Element;
|
|
20
|
-
export declare function CoverageHero({ className }?: {
|
|
21
|
-
className?: string;
|
|
22
|
-
}): import("react/jsx-runtime").JSX.Element;
|
|
23
|
-
export declare function AreasTable({ title }: {
|
|
24
|
-
title?: string;
|
|
25
|
-
}): import("react/jsx-runtime").JSX.Element;
|
|
26
|
-
export declare function ActionPanel({ className }?: {
|
|
27
|
-
className?: string;
|
|
28
|
-
}): import("react/jsx-runtime").JSX.Element;
|
|
29
|
-
export declare function ActivityPanel(): import("react/jsx-runtime").JSX.Element;
|
|
30
|
-
export declare function ActivityTable(): import("react/jsx-runtime").JSX.Element;
|
|
31
|
-
export declare function StatePanel(): import("react/jsx-runtime").JSX.Element;
|
|
32
|
-
export declare function FindingsToolbar(): import("react/jsx-runtime").JSX.Element;
|
|
33
|
-
//# sourceMappingURL=DashboardLayoutPrototypes.shared.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DashboardLayoutPrototypes.shared.d.ts","sourceRoot":"","sources":["../../../src/components/Cloud/DashboardLayoutPrototypes.shared.tsx"],"names":[],"mappings":"AAOA,OAAO,EAAY,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAK3D,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AAGnE,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,CAAC;AAEpE,MAAM,MAAM,OAAO,GAAG;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,SAAS,GAAG,UAAU,GAAG,SAAS,GAAG,QAAQ,CAAC;IACrD,OAAO,EAAE,YAAY,CAAC;CACvB,CAAC;AAUF,eAAO,MAAM,KAAK,EAAE,OAAO,EAqC1B,CAAC;AAyFF,wBAAgB,WAAW,CAAC,EAC1B,KAAK,EACL,KAAK,EACL,QAAQ,EACR,OAAmB,GACpB,EAAE;IACD,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC;CACpC,2CAgBA;AAED,wBAAgB,YAAY,CAAC,EAAE,SAAS,EAAE,GAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO,2CAsDtE;AAED,wBAAgB,UAAU,CAAC,EAAE,KAAuB,EAAE,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,2CAwBzE;AAED,wBAAgB,WAAW,CAAC,EAAE,SAAS,EAAE,GAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO,2CAuBrE;AAED,wBAAgB,aAAa,4CAW5B;AAED,wBAAgB,aAAa,4CAY5B;AAED,wBAAgB,UAAU,4CA6BzB;AAED,wBAAgB,eAAe,4CAoB9B"}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import type { ReactNode } from "react";
|
|
2
|
-
export type CloudNavLabel = "Dashboard" | "Pull Requests" | "Backlog" | "Governance" | "Developer setup" | "Settings";
|
|
3
|
-
export declare function PrototypeShell({ activeNav, eyebrow, title, description, actions, children, }: {
|
|
4
|
-
activeNav?: CloudNavLabel;
|
|
5
|
-
eyebrow?: string;
|
|
6
|
-
title: string;
|
|
7
|
-
description?: string;
|
|
8
|
-
actions?: ReactNode;
|
|
9
|
-
children: ReactNode;
|
|
10
|
-
}): import("react/jsx-runtime").JSX.Element;
|
|
11
|
-
//# sourceMappingURL=DashboardLayoutPrototypes.shell.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DashboardLayoutPrototypes.shell.d.ts","sourceRoot":"","sources":["../../../src/components/Cloud/DashboardLayoutPrototypes.shell.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAmBvC,MAAM,MAAM,aAAa,GACrB,WAAW,GACX,eAAe,GACf,SAAS,GACT,YAAY,GACZ,iBAAiB,GACjB,UAAU,CAAC;AAmEf,wBAAgB,cAAc,CAAC,EAC7B,SAAuB,EACvB,OAAO,EACP,KAAK,EACL,WAA+E,EAC/E,OAAO,EACP,QAAQ,GACT,EAAE;IACD,SAAS,CAAC,EAAE,aAAa,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,QAAQ,EAAE,SAAS,CAAC;CACrB,2CAwCA"}
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
export declare function PrototypeActions(): import("react/jsx-runtime").JSX.Element;
|
|
2
|
-
export declare function PullRequestInbox({ density }: {
|
|
3
|
-
density?: "condensed" | "regular";
|
|
4
|
-
}): import("react/jsx-runtime").JSX.Element;
|
|
5
|
-
//# sourceMappingURL=PullRequestsPrototypes.content.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"PullRequestsPrototypes.content.d.ts","sourceRoot":"","sources":["../../../src/components/Cloud/PullRequestsPrototypes.content.tsx"],"names":[],"mappings":"AAsLA,wBAAgB,gBAAgB,4CAQ/B;AAqFD,wBAAgB,gBAAgB,CAAC,EAAE,OAAqB,EAAE,EAAE;IAAE,OAAO,CAAC,EAAE,WAAW,GAAG,SAAS,CAAA;CAAE,2CAOhG"}
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
export declare function FindingsPanel(): import("react/jsx-runtime").JSX.Element;
|
|
2
|
-
export declare function ConversationPanel(): import("react/jsx-runtime").JSX.Element;
|
|
3
|
-
export declare function ChangedFilesPanel(): import("react/jsx-runtime").JSX.Element;
|
|
4
|
-
//# sourceMappingURL=PullRequestsPrototypes.detail-panels.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"PullRequestsPrototypes.detail-panels.d.ts","sourceRoot":"","sources":["../../../src/components/Cloud/PullRequestsPrototypes.detail-panels.tsx"],"names":[],"mappings":"AAiHA,wBAAgB,aAAa,4CAyD5B;AAMD,wBAAgB,iBAAiB,4CA8ChC;AAiJD,wBAAgB,iBAAiB,4CAahC"}
|