@proyecto-viviana/ui 0.6.2 → 0.6.3
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/dist/_chunk/LinkButton.js +9 -9
- package/dist/_chunk/LinkButton.js.map +1 -1
- package/dist/_chunk/LinkButton.jsx +9 -9
- package/dist/_chunk/LinkButton.jsx.map +1 -1
- package/dist/_chunk/RangeCalendar.js +7 -7
- package/dist/_chunk/RangeCalendar.js.map +1 -1
- package/dist/_chunk/RangeCalendar.jsx +7 -7
- package/dist/_chunk/RangeCalendar.jsx.map +1 -1
- package/dist/_chunk/Tabs.js +2 -2
- package/dist/_chunk/Tabs.jsx +2 -2
- package/dist/_chunk/breadcrumbs.js +2 -2
- package/dist/_chunk/breadcrumbs.js.map +1 -1
- package/dist/_chunk/breadcrumbs.jsx +2 -2
- package/dist/_chunk/breadcrumbs.jsx.map +1 -1
- package/dist/_chunk/button.js +3 -3
- package/dist/_chunk/button.jsx +3 -3
- package/dist/_chunk/color.js +4 -4
- package/dist/_chunk/color.jsx +4 -4
- package/dist/_chunk/form.js +5 -7
- package/dist/_chunk/form.js.map +1 -1
- package/dist/_chunk/form.jsx +5 -8
- package/dist/_chunk/form.jsx.map +1 -1
- package/dist/_chunk/layout.js +5 -1
- package/dist/_chunk/layout.js.map +1 -1
- package/dist/_chunk/layout.jsx +5 -1
- package/dist/_chunk/layout.jsx.map +1 -1
- package/dist/_chunk/list.js +4 -4
- package/dist/_chunk/list.jsx +4 -4
- package/dist/_chunk/menu.js +1 -1
- package/dist/_chunk/menu.js.map +1 -1
- package/dist/_chunk/menu.jsx +1 -1
- package/dist/_chunk/menu.jsx.map +1 -1
- package/dist/_chunk/numberfield.js +2 -2
- package/dist/_chunk/numberfield.jsx +2 -2
- package/dist/_chunk/s2-action-button-styles.js +8 -8
- package/dist/_chunk/s2-action-button-styles.js.map +1 -1
- package/dist/_chunk/s2-action-button-styles.jsx +8 -8
- package/dist/_chunk/s2-action-button-styles.jsx.map +1 -1
- package/dist/_chunk/s2-menu-styles.js +1 -1
- package/dist/_chunk/s2-menu-styles.jsx +1 -1
- package/dist/_chunk/slider.js +6 -6
- package/dist/_chunk/slider.jsx +6 -6
- package/dist/_chunk/switch.js +2 -2
- package/dist/_chunk/switch.jsx +2 -2
- package/dist/_chunk/table.js +3 -3
- package/dist/_chunk/table.js.map +1 -1
- package/dist/_chunk/table.jsx +3 -3
- package/dist/_chunk/table.jsx.map +1 -1
- package/dist/_chunk/text.js +1 -1
- package/dist/_chunk/text.jsx +1 -1
- package/dist/_chunk/textfield.js +4 -4
- package/dist/_chunk/textfield.jsx +4 -4
- package/dist/_chunk/toast.js +3 -3
- package/dist/_chunk/toast.jsx +3 -3
- package/dist/actiongroup/index.js +2 -2
- package/dist/actiongroup/index.jsx +2 -2
- package/dist/badge/index.js +6 -6
- package/dist/badge/index.jsx +6 -6
- package/dist/breadcrumbs/index.d.ts.map +1 -1
- package/dist/calendar/DateField.d.ts.map +1 -1
- package/dist/calendar/DateField.js +2 -2
- package/dist/calendar/DateField.js.map +1 -1
- package/dist/calendar/DateField.jsx +2 -2
- package/dist/calendar/DateField.jsx.map +1 -1
- package/dist/calendar/DatePicker.d.ts.map +1 -1
- package/dist/calendar/DatePicker.js +2 -2
- package/dist/calendar/DatePicker.js.map +1 -1
- package/dist/calendar/DatePicker.jsx +2 -2
- package/dist/calendar/DatePicker.jsx.map +1 -1
- package/dist/calendar/DateRangePicker.js +2 -2
- package/dist/calendar/DateRangePicker.jsx +2 -2
- package/dist/calendar/RangeCalendar.d.ts.map +1 -1
- package/dist/calendar/TimeField.d.ts.map +1 -1
- package/dist/calendar/TimeField.js +2 -2
- package/dist/calendar/TimeField.js.map +1 -1
- package/dist/calendar/TimeField.jsx +2 -2
- package/dist/calendar/TimeField.jsx.map +1 -1
- package/dist/calendar/index.js +5 -5
- package/dist/calendar/index.js.map +1 -1
- package/dist/calendar/index.jsx +5 -5
- package/dist/calendar/index.jsx.map +1 -1
- package/dist/checkbox/index.js +3 -3
- package/dist/checkbox/index.jsx +3 -3
- package/dist/combobox/index.js +2 -2
- package/dist/combobox/index.jsx +2 -2
- package/dist/dropzone/index.js +1 -1
- package/dist/dropzone/index.jsx +1 -1
- package/dist/form/index.d.ts.map +1 -1
- package/dist/icon/pixel-icons/PixelChartIcon.d.ts.map +1 -1
- package/dist/icon/pixel-icons/PixelChartIcon.js.map +1 -1
- package/dist/icon/pixel-icons/PixelChartIcon.jsx.map +1 -1
- package/dist/icon/pixel-icons/PixelCheckIcon.d.ts.map +1 -1
- package/dist/icon/pixel-icons/PixelCheckIcon.js.map +1 -1
- package/dist/icon/pixel-icons/PixelCheckIcon.jsx.map +1 -1
- package/dist/icon/pixel-icons/PixelChevronDownIcon.d.ts.map +1 -1
- package/dist/icon/pixel-icons/PixelChevronDownIcon.js.map +1 -1
- package/dist/icon/pixel-icons/PixelChevronDownIcon.jsx.map +1 -1
- package/dist/icon/pixel-icons/PixelChevronRightIcon.d.ts.map +1 -1
- package/dist/icon/pixel-icons/PixelChevronRightIcon.js.map +1 -1
- package/dist/icon/pixel-icons/PixelChevronRightIcon.jsx.map +1 -1
- package/dist/icon/pixel-icons/PixelClockIcon.d.ts.map +1 -1
- package/dist/icon/pixel-icons/PixelClockIcon.js.map +1 -1
- package/dist/icon/pixel-icons/PixelClockIcon.jsx.map +1 -1
- package/dist/icon/pixel-icons/PixelCodeIcon.d.ts.map +1 -1
- package/dist/icon/pixel-icons/PixelCodeIcon.js.map +1 -1
- package/dist/icon/pixel-icons/PixelCodeIcon.jsx.map +1 -1
- package/dist/icon/pixel-icons/PixelCommunityIcon.d.ts.map +1 -1
- package/dist/icon/pixel-icons/PixelCommunityIcon.js.map +1 -1
- package/dist/icon/pixel-icons/PixelCommunityIcon.jsx.map +1 -1
- package/dist/icon/pixel-icons/PixelCubeIcon.d.ts.map +1 -1
- package/dist/icon/pixel-icons/PixelCubeIcon.js.map +1 -1
- package/dist/icon/pixel-icons/PixelCubeIcon.jsx.map +1 -1
- package/dist/icon/pixel-icons/PixelFlameIcon.d.ts.map +1 -1
- package/dist/icon/pixel-icons/PixelFlameIcon.js.map +1 -1
- package/dist/icon/pixel-icons/PixelFlameIcon.jsx.map +1 -1
- package/dist/icon/pixel-icons/PixelHomeIcon.d.ts.map +1 -1
- package/dist/icon/pixel-icons/PixelHomeIcon.js.map +1 -1
- package/dist/icon/pixel-icons/PixelHomeIcon.jsx.map +1 -1
- package/dist/icon/pixel-icons/PixelLayoutIcon.d.ts.map +1 -1
- package/dist/icon/pixel-icons/PixelLayoutIcon.js.map +1 -1
- package/dist/icon/pixel-icons/PixelLayoutIcon.jsx.map +1 -1
- package/dist/icon/pixel-icons/PixelMessageIcon.d.ts.map +1 -1
- package/dist/icon/pixel-icons/PixelMessageIcon.js.map +1 -1
- package/dist/icon/pixel-icons/PixelMessageIcon.jsx.map +1 -1
- package/dist/icon/pixel-icons/PixelNavCommunityIcon.d.ts.map +1 -1
- package/dist/icon/pixel-icons/PixelNavCommunityIcon.js.map +1 -1
- package/dist/icon/pixel-icons/PixelNavCommunityIcon.jsx.map +1 -1
- package/dist/icon/pixel-icons/PixelNavExploreIcon.d.ts.map +1 -1
- package/dist/icon/pixel-icons/PixelNavExploreIcon.js.map +1 -1
- package/dist/icon/pixel-icons/PixelNavExploreIcon.jsx.map +1 -1
- package/dist/icon/pixel-icons/PixelNavLiveIcon.d.ts.map +1 -1
- package/dist/icon/pixel-icons/PixelNavLiveIcon.js.map +1 -1
- package/dist/icon/pixel-icons/PixelNavLiveIcon.jsx.map +1 -1
- package/dist/icon/pixel-icons/PixelNavPathwaysIcon.d.ts.map +1 -1
- package/dist/icon/pixel-icons/PixelNavPathwaysIcon.js.map +1 -1
- package/dist/icon/pixel-icons/PixelNavPathwaysIcon.jsx.map +1 -1
- package/dist/icon/pixel-icons/PixelNavPlaygroundIcon.d.ts.map +1 -1
- package/dist/icon/pixel-icons/PixelNavPlaygroundIcon.js.map +1 -1
- package/dist/icon/pixel-icons/PixelNavPlaygroundIcon.jsx.map +1 -1
- package/dist/icon/pixel-icons/PixelNavProjectsIcon.d.ts.map +1 -1
- package/dist/icon/pixel-icons/PixelNavProjectsIcon.js.map +1 -1
- package/dist/icon/pixel-icons/PixelNavProjectsIcon.jsx.map +1 -1
- package/dist/icon/pixel-icons/PixelNavReferenceIcon.d.ts.map +1 -1
- package/dist/icon/pixel-icons/PixelNavReferenceIcon.js.map +1 -1
- package/dist/icon/pixel-icons/PixelNavReferenceIcon.jsx.map +1 -1
- package/dist/icon/pixel-icons/PixelNavSettingsIcon.d.ts.map +1 -1
- package/dist/icon/pixel-icons/PixelNavSettingsIcon.js.map +1 -1
- package/dist/icon/pixel-icons/PixelNavSettingsIcon.jsx.map +1 -1
- package/dist/icon/pixel-icons/PixelNavTopicsIcon.d.ts.map +1 -1
- package/dist/icon/pixel-icons/PixelNavTopicsIcon.js.map +1 -1
- package/dist/icon/pixel-icons/PixelNavTopicsIcon.jsx.map +1 -1
- package/dist/icon/pixel-icons/PixelNotificationIcon.d.ts.map +1 -1
- package/dist/icon/pixel-icons/PixelNotificationIcon.js.map +1 -1
- package/dist/icon/pixel-icons/PixelNotificationIcon.jsx.map +1 -1
- package/dist/icon/pixel-icons/PixelPathwaysIcon.d.ts.map +1 -1
- package/dist/icon/pixel-icons/PixelPathwaysIcon.js.map +1 -1
- package/dist/icon/pixel-icons/PixelPathwaysIcon.jsx.map +1 -1
- package/dist/icon/pixel-icons/PixelPlayIcon.d.ts.map +1 -1
- package/dist/icon/pixel-icons/PixelPlayIcon.js.map +1 -1
- package/dist/icon/pixel-icons/PixelPlayIcon.jsx.map +1 -1
- package/dist/icon/pixel-icons/PixelSearchIcon.d.ts.map +1 -1
- package/dist/icon/pixel-icons/PixelSearchIcon.js.map +1 -1
- package/dist/icon/pixel-icons/PixelSearchIcon.jsx.map +1 -1
- package/dist/icon/pixel-icons/PixelSettingsIcon.d.ts.map +1 -1
- package/dist/icon/pixel-icons/PixelSettingsIcon.js.map +1 -1
- package/dist/icon/pixel-icons/PixelSettingsIcon.jsx.map +1 -1
- package/dist/icon/pixel-icons/PixelSparkleIcon.d.ts.map +1 -1
- package/dist/icon/pixel-icons/PixelSparkleIcon.js.map +1 -1
- package/dist/icon/pixel-icons/PixelSparkleIcon.jsx.map +1 -1
- package/dist/icon/pixel-icons/PixelTopicsIcon.d.ts.map +1 -1
- package/dist/icon/pixel-icons/PixelTopicsIcon.js.map +1 -1
- package/dist/icon/pixel-icons/PixelTopicsIcon.jsx.map +1 -1
- package/dist/icon/pixel-icons/PixelUserIcon.d.ts.map +1 -1
- package/dist/icon/pixel-icons/PixelUserIcon.js.map +1 -1
- package/dist/icon/pixel-icons/PixelUserIcon.jsx.map +1 -1
- package/dist/icon/pixel-icons/PixelZapIcon.d.ts.map +1 -1
- package/dist/icon/pixel-icons/PixelZapIcon.js.map +1 -1
- package/dist/icon/pixel-icons/PixelZapIcon.jsx.map +1 -1
- package/dist/inlinealert/index.js +6 -6
- package/dist/inlinealert/index.jsx +6 -6
- package/dist/labeledvalue/index.js +1 -1
- package/dist/labeledvalue/index.jsx +1 -1
- package/dist/layout/Flex.d.ts +2 -0
- package/dist/layout/Flex.d.ts.map +1 -1
- package/dist/link/index.d.ts.map +1 -1
- package/dist/link/index.js +1 -4
- package/dist/link/index.js.map +1 -1
- package/dist/link/index.jsx +1 -4
- package/dist/link/index.jsx.map +1 -1
- package/dist/listbox/index.js +3 -3
- package/dist/listbox/index.jsx +4 -4
- package/dist/menu/index.d.ts.map +1 -1
- package/dist/meter/index.d.ts.map +1 -1
- package/dist/meter/index.js +2 -2
- package/dist/meter/index.js.map +1 -1
- package/dist/meter/index.jsx +2 -2
- package/dist/meter/index.jsx.map +1 -1
- package/dist/notificationbadge/index.js +1 -1
- package/dist/notificationbadge/index.jsx +1 -1
- package/dist/picker/index.js +3 -3
- package/dist/picker/index.jsx +3 -3
- package/dist/popover/index.js +1 -1
- package/dist/popover/index.jsx +1 -1
- package/dist/progress/ProgressCircle.js +2 -2
- package/dist/progress/ProgressCircle.js.map +1 -1
- package/dist/progress/ProgressCircle.jsx +2 -2
- package/dist/progress/ProgressCircle.jsx.map +1 -1
- package/dist/progress-bar/index.js +4 -4
- package/dist/progress-bar/index.jsx +4 -4
- package/dist/radio/index.js +2 -2
- package/dist/radio/index.jsx +2 -2
- package/dist/searchfield/index.js +2 -2
- package/dist/searchfield/index.jsx +2 -2
- package/dist/segmentedcontrol/index.js +2 -5
- package/dist/segmentedcontrol/index.js.map +1 -1
- package/dist/segmentedcontrol/index.jsx +2 -5
- package/dist/segmentedcontrol/index.jsx.map +1 -1
- package/dist/select/index.js +3 -3
- package/dist/select/index.jsx +3 -3
- package/dist/selectboxgroup/index.js +1 -1
- package/dist/selectboxgroup/index.jsx +1 -1
- package/dist/statuslight/index.js +1 -1
- package/dist/statuslight/index.jsx +1 -1
- package/dist/steplist/index.js +5 -5
- package/dist/steplist/index.jsx +5 -5
- package/dist/style/glasselated-ramps.d.ts.map +1 -1
- package/dist/style/index.js +18 -9
- package/dist/style/index.js.map +1 -1
- package/dist/style/spectrum-theme.d.ts +7 -7
- package/dist/style/spectrum-theme.d.ts.map +1 -1
- package/dist/styles.css +1 -1
- package/dist/table/index.d.ts.map +1 -1
- package/dist/tag-group/index.js +10 -10
- package/dist/tag-group/index.js.map +1 -1
- package/dist/tag-group/index.jsx +10 -10
- package/dist/tag-group/index.jsx.map +1 -1
- package/dist/toolbar/index.d.ts.map +1 -1
- package/dist/toolbar/index.js.map +1 -1
- package/dist/toolbar/index.jsx.map +1 -1
- package/dist/tree/index.d.ts.map +1 -1
- package/dist/tree/index.js +5 -5
- package/dist/tree/index.js.map +1 -1
- package/dist/tree/index.jsx +5 -5
- package/dist/tree/index.jsx.map +1 -1
- package/dist/viviana-tokens.css +39 -12
- package/package.json +18 -5
- package/src/breadcrumbs/index.tsx +14 -7
- package/src/button/s2-action-button-styles.ts +8 -8
- package/src/button/s2-button-styles.ts +8 -8
- package/src/calendar/DateField.tsx +2 -6
- package/src/calendar/DatePicker.tsx +8 -1
- package/src/calendar/RangeCalendar.tsx +13 -7
- package/src/calendar/TimeField.tsx +2 -6
- package/src/calendar/index.tsx +4 -4
- package/src/form/index.tsx +5 -6
- package/src/icon/pixel-icons/PixelChartIcon.tsx +4 -1
- package/src/icon/pixel-icons/PixelCheckIcon.tsx +4 -1
- package/src/icon/pixel-icons/PixelChevronDownIcon.tsx +4 -1
- package/src/icon/pixel-icons/PixelChevronRightIcon.tsx +4 -1
- package/src/icon/pixel-icons/PixelClockIcon.tsx +4 -1
- package/src/icon/pixel-icons/PixelCodeIcon.tsx +4 -1
- package/src/icon/pixel-icons/PixelCommunityIcon.tsx +4 -1
- package/src/icon/pixel-icons/PixelCubeIcon.tsx +4 -1
- package/src/icon/pixel-icons/PixelFlameIcon.tsx +4 -1
- package/src/icon/pixel-icons/PixelHomeIcon.tsx +4 -1
- package/src/icon/pixel-icons/PixelLayoutIcon.tsx +4 -1
- package/src/icon/pixel-icons/PixelMessageIcon.tsx +4 -1
- package/src/icon/pixel-icons/PixelNavCommunityIcon.tsx +4 -1
- package/src/icon/pixel-icons/PixelNavExploreIcon.tsx +4 -1
- package/src/icon/pixel-icons/PixelNavLiveIcon.tsx +4 -1
- package/src/icon/pixel-icons/PixelNavPathwaysIcon.tsx +4 -1
- package/src/icon/pixel-icons/PixelNavPlaygroundIcon.tsx +4 -1
- package/src/icon/pixel-icons/PixelNavProjectsIcon.tsx +4 -1
- package/src/icon/pixel-icons/PixelNavReferenceIcon.tsx +4 -1
- package/src/icon/pixel-icons/PixelNavSettingsIcon.tsx +4 -1
- package/src/icon/pixel-icons/PixelNavTopicsIcon.tsx +4 -1
- package/src/icon/pixel-icons/PixelNotificationIcon.tsx +4 -1
- package/src/icon/pixel-icons/PixelPathwaysIcon.tsx +4 -1
- package/src/icon/pixel-icons/PixelPlayIcon.tsx +4 -1
- package/src/icon/pixel-icons/PixelSearchIcon.tsx +4 -1
- package/src/icon/pixel-icons/PixelSettingsIcon.tsx +4 -1
- package/src/icon/pixel-icons/PixelSparkleIcon.tsx +4 -1
- package/src/icon/pixel-icons/PixelTopicsIcon.tsx +4 -1
- package/src/icon/pixel-icons/PixelUserIcon.tsx +4 -1
- package/src/icon/pixel-icons/PixelZapIcon.tsx +4 -1
- package/src/layout/Flex.tsx +7 -0
- package/src/link/index.tsx +3 -1
- package/src/menu/index.tsx +1 -3
- package/src/meter/index.tsx +1 -3
- package/src/progress/ProgressCircle.tsx +1 -1
- package/src/segmentedcontrol/index.tsx +6 -6
- package/src/style/glasselated-ramps.ts +37 -33
- package/src/style/spectrum-theme.ts +22 -17
- package/src/table/index.tsx +1 -3
- package/src/tag-group/index.tsx +8 -8
- package/src/toolbar/index.tsx +4 -1
- package/src/tree/index.tsx +3 -11
- package/src/viviana-tokens.css +39 -12
|
@@ -17,18 +17,13 @@
|
|
|
17
17
|
* monotonicity and was still the wrong palette, because nothing had checked the anchors
|
|
18
18
|
* against the island. The island is the source of truth.
|
|
19
19
|
*
|
|
20
|
-
* ACCESSIBILITY.
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
* floor only — which is exactly how the island spends it (primary button, white 13px/600,
|
|
28
|
-
* glasselated.css:1361-1370; white icon masks, :808-810). It never sets body-size white
|
|
29
|
-
* text on the light accent fill; a component needing readable text on a selected surface
|
|
30
|
-
* takes the raised-pill idiom instead (TabSwitch, switch/index.tsx) or the soft accent
|
|
31
|
-
* pill (`--accent-primary-soft` + blue ink, `.glx-btn-soft` glasselated.css:1382-1392).
|
|
20
|
+
* ACCESSIBILITY. Semantic fills with white text are pinned to >= 4.5:1. Blue is the
|
|
21
|
+
* exception at the ramp level: accent-900 remains the brand `--accent-primary` #2e90fa
|
|
22
|
+
* in both columns for decorative marks, where it only needs the 3:1 non-text floor.
|
|
23
|
+
* Text-bearing accent surfaces use the standalone `interactive-fill` token below
|
|
24
|
+
* (#135fc0 / #3670ae), matching `--interactive-fill` in viviana-tokens.css. Keeping
|
|
25
|
+
* decoration and readable fill as separate semantic roles prevents a contrast repair
|
|
26
|
+
* from moving every focus ring, indicator, and glow off the published brand accent.
|
|
32
27
|
*
|
|
33
28
|
* Two invariants to hold when editing:
|
|
34
29
|
* - Emit EVERY stop of a ramp. A missing stop silently keeps the Adobe value.
|
|
@@ -77,18 +72,21 @@ const RAMPS: Record<string, Ramp> = {
|
|
|
77
72
|
* the island has no token beyond it in either direction.
|
|
78
73
|
*
|
|
79
74
|
* 500 IS THE SECONDARY INK STOP, by the same logic one rung quieter: it is pinned to
|
|
80
|
-
* `--text-secondary
|
|
81
|
-
*
|
|
82
|
-
*
|
|
83
|
-
*
|
|
75
|
+
* `--text-secondary` in viviana-tokens.css, in NEITHER column to `--slate-500`. Dark never
|
|
76
|
+
* was — the island de-tints its dark ink away from the slate ramp (#97a1ab) exactly as it
|
|
77
|
+
* does at 800 — and light no longer is either: `--slate-500` #64748b reads 3.67-4.38:1 on
|
|
78
|
+
* our light surfaces, so both `--text-secondary` and this stop step one notch darker to
|
|
79
|
+
* #556478 (4.65:1 at worst) and dark lifts #9aa0a8 -> #a0a6ae (4.36 -> 4.68:1 on
|
|
80
|
+
* `--surface-raised`, the binding surface in dark). The palette rungs themselves are
|
|
81
|
+
* untouched; what moved is an ink role, and the two files must move together.
|
|
84
82
|
* `neutral-subdued-content-color-default` is repointed onto this stop in spectrum-theme.ts;
|
|
85
83
|
* Adobe resolves it to gray-700, which paints field labels, unselected tab and segment
|
|
86
84
|
* labels, slider labels and breadcrumbs two rungs too heavy (61 elements, both schemes).
|
|
87
85
|
*
|
|
88
|
-
* Light 300/400
|
|
89
|
-
*
|
|
90
|
-
*
|
|
91
|
-
*
|
|
86
|
+
* Light 300/400 were #c5d0de/#93a3b8 — each exactly one off the island's #c4d0de/#94a3b8
|
|
87
|
+
* in the red channel. That is a round-trip through OKLCh, not a transcription; the values
|
|
88
|
+
* are now copied from the declarations. Read every anchored stop off the CSS, never
|
|
89
|
+
* recompute it: a one-digit drift still fails an equality check against the token.
|
|
92
90
|
*
|
|
93
91
|
* The dark 800->900->1000 gaps are ~0.018 OKLCh L, just under the >= 0.02 this file asks
|
|
94
92
|
* for below. That is a ceiling, not a choice: the dark ink is already at L 0.964 and 1000
|
|
@@ -111,7 +109,7 @@ const RAMPS: Record<string, Ramp> = {
|
|
|
111
109
|
200: ["#dbe3ed", "#555c64"],
|
|
112
110
|
300: ["#c4d0de", "#67717d"],
|
|
113
111
|
400: ["#94a3b8", "#7c8794"],
|
|
114
|
-
500: ["#
|
|
112
|
+
500: ["#556478", "#a0a6ae"],
|
|
115
113
|
600: ["#465569", "#a8b2c0"],
|
|
116
114
|
700: ["#33455c", "#b9c4d6"],
|
|
117
115
|
800: ["#17212e", "#f2f3f5"],
|
|
@@ -132,13 +130,18 @@ const RAMPS: Record<string, Ramp> = {
|
|
|
132
130
|
* single largest off-register cluster in both schemes was accent-coloured (24 light
|
|
133
131
|
* elements, 15 dark).
|
|
134
132
|
*
|
|
135
|
-
* 700's DARK column
|
|
136
|
-
*
|
|
137
|
-
*
|
|
138
|
-
*
|
|
139
|
-
*
|
|
140
|
-
*
|
|
141
|
-
*
|
|
133
|
+
* 700's DARK column remains #3670ae because it was the historical landing point for
|
|
134
|
+
* interactive fills. The actual semantic fill is now explicit below rather than
|
|
135
|
+
* encoded as a cross-scheme ramp pair: #135fc0 in light and #3670ae in dark. A filled
|
|
136
|
+
* accent button is a large area of colour; the island damps it and leaves the small
|
|
137
|
+
* accent marks at full strength.
|
|
138
|
+
*
|
|
139
|
+
* The damped fill carries white label text, so it answers to 4.5:1 with white. The
|
|
140
|
+
* island's #407fc1 gave 4.18:1; this column is #3670ae (5.14:1), and viviana-tokens.css
|
|
141
|
+
* moves `--interactive-fill` to the same hex — the two are one value in two files.
|
|
142
|
+
* That also repairs a gap this ramp's own rule forbade: #407fc1 sat 0.009 OKLCh L below
|
|
143
|
+
* 800, so `nextColorStop`'s hover step off the dark fill was invisible; #3670ae restores
|
|
144
|
+
* it to 0.051/0.058 either side.
|
|
142
145
|
*
|
|
143
146
|
* Nothing else here is pinned. The island publishes no accent hover, so 800 (dark
|
|
144
147
|
* hover, one step brighter than the damped fill) and 1000 (light hover, one step
|
|
@@ -151,7 +154,7 @@ const RAMPS: Record<string, Ramp> = {
|
|
|
151
154
|
400: ["#bfd9fe", "#2d415d"],
|
|
152
155
|
500: ["#9cc4fc", "#2f507f"],
|
|
153
156
|
600: ["#7bb0fa", "#2e5fa1"],
|
|
154
|
-
700: ["#5c9ff9", "#
|
|
157
|
+
700: ["#5c9ff9", "#3670ae"],
|
|
155
158
|
800: ["#398dfa", "#267ce7"],
|
|
156
159
|
900: ["#2e90fa", "#2e90fa"],
|
|
157
160
|
1000: ["#0e64c8", "#569eff"],
|
|
@@ -294,15 +297,16 @@ const SEMANTIC_OVERRIDES: Record<string, Ramp> = {
|
|
|
294
297
|
notice: RAMPS.amber,
|
|
295
298
|
};
|
|
296
299
|
|
|
297
|
-
/*
|
|
298
|
-
* exactly three values per scheme and
|
|
299
|
-
*
|
|
300
|
-
*
|
|
300
|
+
/* Standalone semantic colours with no honest ramp. The create-yellow CTA
|
|
301
|
+
* (`--accent-create-*`) declares exactly three values per scheme and does not sit on the
|
|
302
|
+
* amber trajectory. `interactive-fill` is likewise a role rather than a blue stop: it is
|
|
303
|
+
* the AA-safe fill under white text, while accent-900 remains the decorative brand blue.
|
|
301
304
|
*
|
|
302
305
|
* Spread into `baseColors` alongside the ramps, so `backgroundColor: "create-bg"` resolves
|
|
303
306
|
* like any other token. Hover/press cannot use `nextColorStop` here (no adjacent stop
|
|
304
307
|
* exists), so the button styles name the border colour explicitly for those states. */
|
|
305
308
|
export const glasselatedCreateColors: Record<string, ColorToken> = {
|
|
309
|
+
"interactive-fill": { type: "color", light: "#135fc0", dark: "#3670ae" },
|
|
306
310
|
"create-bg": { type: "color", light: "#ffedb0", dark: "#ffde81" },
|
|
307
311
|
"create-border": { type: "color", light: "#f5d88a", dark: "#ffde81" },
|
|
308
312
|
"create-ink": { type: "color", light: "#7a5600", dark: "#3a2e00" },
|
|
@@ -104,7 +104,12 @@ type ColorScale =
|
|
|
104
104
|
| "amber"
|
|
105
105
|
| "violet";
|
|
106
106
|
/** Brand colours with no Spectrum equivalent and no ramp — see glasselatedCreateColors. */
|
|
107
|
-
type VivianaColor =
|
|
107
|
+
type VivianaColor =
|
|
108
|
+
| "interactive-fill"
|
|
109
|
+
| "create-bg"
|
|
110
|
+
| "create-bg-deep"
|
|
111
|
+
| "create-border"
|
|
112
|
+
| "create-ink";
|
|
108
113
|
type TransparentScale = "transparent-white" | "transparent-black" | "transparent-overlay";
|
|
109
114
|
type HighContrastColor =
|
|
110
115
|
| "Background"
|
|
@@ -877,29 +882,29 @@ export const style = createTheme({
|
|
|
877
882
|
}),
|
|
878
883
|
backgroundColor: new SpectrumColorProperty("backgroundColor", {
|
|
879
884
|
...baseColors,
|
|
880
|
-
/* Viviana UI v2 (Glasselated):
|
|
881
|
-
*
|
|
882
|
-
*
|
|
883
|
-
*
|
|
884
|
-
*
|
|
885
|
-
*
|
|
886
|
-
|
|
887
|
-
* That split is exactly the `lightDark("accent-900", "accent-700")` pair that
|
|
888
|
-
* Button, ActionButton and Tag already declare for their emphasized-selected
|
|
889
|
-
* fills. Repointed here so the components that reach for the SEMANTIC instead of
|
|
890
|
-
* the pair — Badge's bold fill, chiefly — land on the same value rather than on
|
|
891
|
-
* Adobe's accent-800 (5 elements adrift in dark). Adobe's own resolution stepped
|
|
892
|
-
* light and dark independently down its inverted ramp; ours doesn't invert. */
|
|
893
|
-
accent: { type: "ref", light: "accent-900", dark: "accent-700" },
|
|
885
|
+
/* Viviana UI v2 (Glasselated): text-bearing accent surfaces use the explicit
|
|
886
|
+
* `interactive-fill` semantic (#135fc0 / #3670ae), which clears 4.5:1 under white
|
|
887
|
+
* in both schemes. `accent-900` remains #2e90fa for decorative marks, rings, and
|
|
888
|
+
* indicators that answer to the 3:1 non-text floor. Keeping the roles separate
|
|
889
|
+
* also puts Badge's semantic bold fill on the same contract as Button, Calendar,
|
|
890
|
+
* and Tag rather than encoding the role as a cross-scheme ramp pair. */
|
|
891
|
+
accent: baseColors["interactive-fill"],
|
|
894
892
|
"accent-subtle": weirdColorToken("accent-subtle-background-color-default"),
|
|
895
893
|
neutral: colorToken("neutral-background-color-default"),
|
|
896
894
|
"neutral-subdued": weirdColorToken("neutral-subdued-background-color-default"),
|
|
897
895
|
"neutral-subtle": weirdColorToken("neutral-subtle-background-color-default"),
|
|
898
|
-
|
|
896
|
+
/* Same repoint as `accent` above, for the same reason and by the same pair. Adobe
|
|
897
|
+
* resolves these two semantics onto the -800 stop of their ramp, which in our
|
|
898
|
+
* register is #e0332a / #208e4d in dark — 4.49:1 and 4.17:1 under the white ink
|
|
899
|
+
* Badge, Toast and InlineAlert paint on their bold fills, i.e. a hair and a wide
|
|
900
|
+
* margin under AA respectively. The `lightDark(-900, -700)` pair clears it in both
|
|
901
|
+
* schemes (negative 4.74/5.52, positive 4.80/5.17) and keeps the three components
|
|
902
|
+
* on one value. */
|
|
903
|
+
negative: { type: "ref", light: "negative-900", dark: "negative-700" },
|
|
899
904
|
"negative-subtle": weirdColorToken("negative-subtle-background-color-default"),
|
|
900
905
|
informative: weirdColorToken("informative-background-color-default"),
|
|
901
906
|
"informative-subtle": weirdColorToken("informative-subtle-background-color-default"),
|
|
902
|
-
positive:
|
|
907
|
+
positive: { type: "ref", light: "positive-900", dark: "positive-700" },
|
|
903
908
|
"positive-subtle": weirdColorToken("positive-subtle-background-color-default"),
|
|
904
909
|
notice: weirdColorToken("notice-background-color-default"),
|
|
905
910
|
"notice-subtle": weirdColorToken("notice-subtle-background-color-default"),
|
package/src/table/index.tsx
CHANGED
|
@@ -1964,9 +1964,7 @@ export function TableSelectionCheckbox(props: {
|
|
|
1964
1964
|
isDisabled: !!props.isDisabled,
|
|
1965
1965
|
})}
|
|
1966
1966
|
>
|
|
1967
|
-
{props.isSelected ?
|
|
1968
|
-
<Checkmark size="XS" class={selectionCheckboxIcon} />
|
|
1969
|
-
) : null}
|
|
1967
|
+
{props.isSelected ? <Checkmark size="XS" class={selectionCheckboxIcon} /> : null}
|
|
1970
1968
|
</span>
|
|
1971
1969
|
</span>
|
|
1972
1970
|
{renderProps.isFocusVisible ? <CellFocusRing /> : null}
|
package/src/tag-group/index.tsx
CHANGED
|
@@ -231,10 +231,10 @@ const tagStyle = style<TagGroupStyleProps>({
|
|
|
231
231
|
isSelected: {
|
|
232
232
|
default: baseColor("neutral"),
|
|
233
233
|
isEmphasized: {
|
|
234
|
-
default:
|
|
235
|
-
isHovered: lightDark("accent-1000", "accent-
|
|
236
|
-
isPressed: lightDark("accent-1000", "accent-
|
|
237
|
-
isFocusVisible: lightDark("accent-1000", "accent-
|
|
234
|
+
default: "interactive-fill",
|
|
235
|
+
isHovered: lightDark("accent-1000", "accent-600"),
|
|
236
|
+
isPressed: lightDark("accent-1000", "accent-600"),
|
|
237
|
+
isFocusVisible: lightDark("accent-1000", "accent-600"),
|
|
238
238
|
},
|
|
239
239
|
},
|
|
240
240
|
isDisabled: "disabled",
|
|
@@ -298,10 +298,10 @@ const tagStyle = style<TagGroupStyleProps>({
|
|
|
298
298
|
isSelected: {
|
|
299
299
|
default: baseColor("gray-800"),
|
|
300
300
|
isEmphasized: {
|
|
301
|
-
default:
|
|
302
|
-
isHovered: lightDark("accent-1000", "accent-
|
|
303
|
-
isPressed: lightDark("accent-1000", "accent-
|
|
304
|
-
isFocusVisible: lightDark("accent-1000", "accent-
|
|
301
|
+
default: "interactive-fill",
|
|
302
|
+
isHovered: lightDark("accent-1000", "accent-600"),
|
|
303
|
+
isPressed: lightDark("accent-1000", "accent-600"),
|
|
304
|
+
isFocusVisible: lightDark("accent-1000", "accent-600"),
|
|
305
305
|
},
|
|
306
306
|
},
|
|
307
307
|
isDisabled: "disabled",
|
package/src/toolbar/index.tsx
CHANGED
|
@@ -51,7 +51,10 @@ export function Toolbar(props: ToolbarProps): JSX.Element {
|
|
|
51
51
|
|
|
52
52
|
const mergedClass = (rp: ToolbarRenderProps): string => {
|
|
53
53
|
const cls = local.class;
|
|
54
|
-
return [
|
|
54
|
+
return [
|
|
55
|
+
toolbarStyles({ orientation: rp.orientation }),
|
|
56
|
+
typeof cls === "function" ? cls(rp) : cls,
|
|
57
|
+
]
|
|
55
58
|
.filter(Boolean)
|
|
56
59
|
.join(" ");
|
|
57
60
|
};
|
package/src/tree/index.tsx
CHANGED
|
@@ -1179,10 +1179,7 @@ export function TreeExpandButton(
|
|
|
1179
1179
|
return typeof rawChildren === "function"
|
|
1180
1180
|
? rawChildren(renderState())
|
|
1181
1181
|
: (rawChildren ?? (
|
|
1182
|
-
<Chevron
|
|
1183
|
-
size="S"
|
|
1184
|
-
class={treeExpandIcon({ ...renderState(), isExpanded: false })}
|
|
1185
|
-
/>
|
|
1182
|
+
<Chevron size="S" class={treeExpandIcon({ ...renderState(), isExpanded: false })} />
|
|
1186
1183
|
));
|
|
1187
1184
|
})()}
|
|
1188
1185
|
</button>
|
|
@@ -1198,10 +1195,7 @@ export function TreeExpandButton(
|
|
|
1198
1195
|
>
|
|
1199
1196
|
{local.children ??
|
|
1200
1197
|
(({ isExpanded }: { isExpanded: boolean }) => (
|
|
1201
|
-
<Chevron
|
|
1202
|
-
size="S"
|
|
1203
|
-
class={treeExpandIcon({ ...renderState(), isExpanded })}
|
|
1204
|
-
/>
|
|
1198
|
+
<Chevron size="S" class={treeExpandIcon({ ...renderState(), isExpanded })} />
|
|
1205
1199
|
))}
|
|
1206
1200
|
</HeadlessTreeExpandButton>
|
|
1207
1201
|
);
|
|
@@ -1243,9 +1237,7 @@ export function TreeSelectionCheckbox(props: {
|
|
|
1243
1237
|
aria-label={props["aria-label"] ?? "Select"}
|
|
1244
1238
|
/>
|
|
1245
1239
|
<span class={treeCheckboxBox(renderProps())}>
|
|
1246
|
-
{renderProps().isSelected ?
|
|
1247
|
-
<Checkmark size="XS" class={treeCheckboxIcon} />
|
|
1248
|
-
) : null}
|
|
1240
|
+
{renderProps().isSelected ? <Checkmark size="XS" class={treeCheckboxIcon} /> : null}
|
|
1249
1241
|
</span>
|
|
1250
1242
|
</span>
|
|
1251
1243
|
);
|
package/src/viviana-tokens.css
CHANGED
|
@@ -228,7 +228,8 @@
|
|
|
228
228
|
* Keep both in step with the `edgeGlassShadow` / `edgeGlassSurfaceShadow`
|
|
229
229
|
* fallbacks in style/spectrum-theme.ts. */
|
|
230
230
|
--edge-glass: inset 0 1px 0 rgba(255, 255, 255, 0.9), inset 0 0 0 1px rgba(255, 255, 255, 0.35);
|
|
231
|
-
--edge-glass-surface:
|
|
231
|
+
--edge-glass-surface:
|
|
232
|
+
inset 0 1px 0 rgba(255, 255, 255, 0.45), inset 0 0 0 1px rgba(255, 255, 255, 0.09);
|
|
232
233
|
|
|
233
234
|
/* ── Shadow + glow family (glow follows the accent, never the chrome) ── */
|
|
234
235
|
--shadow-card: 0 2px 8px rgba(0, 0, 0, 0.35), 0 8px 24px rgba(0, 0, 0, 0.4);
|
|
@@ -270,11 +271,15 @@
|
|
|
270
271
|
--slate-100: rgba(255, 255, 255, 0.06);
|
|
271
272
|
--white: #ffffff;
|
|
272
273
|
|
|
273
|
-
/* Text
|
|
274
|
+
/* Text — see the light block for why the two ink roles below are pinned to
|
|
275
|
+
WCAG AA rather than to a ramp rung. Dark's binding surface is the opaque
|
|
276
|
+
`--surface-raised` #333a44, not the near-black app background: #9aa0a8 read
|
|
277
|
+
7.4:1 on the app and 4.36:1 there, and #55a6f6 4.47:1. Both now clear 4.5:1
|
|
278
|
+
on the raised panel and sit comfortably above 6:1 everywhere else. */
|
|
274
279
|
--text-primary: #f2f3f5;
|
|
275
|
-
--text-secondary: #
|
|
280
|
+
--text-secondary: #a0a6ae;
|
|
276
281
|
--text-tertiary: #6e747c;
|
|
277
|
-
--text-link: #
|
|
282
|
+
--text-link: #5faaf7;
|
|
278
283
|
--text-on-accent: #ffffff;
|
|
279
284
|
|
|
280
285
|
/* Terminal wells — matte / opaque, NEVER glass */
|
|
@@ -293,9 +298,15 @@
|
|
|
293
298
|
--well-tutor-ink: #eaf2fb;
|
|
294
299
|
--btn-secondary-bg: var(--surface-raised);
|
|
295
300
|
|
|
296
|
-
/* Accents (app) — live pulse · create CTA · interactive fill
|
|
301
|
+
/* Accents (app) — live pulse · create CTA · interactive fill
|
|
302
|
+
The fill is damped in dark (a filled accent button is a large area of
|
|
303
|
+
colour) but it still carries white label text: #407fc1 gave 4.18:1, just
|
|
304
|
+
under AA, so it steps down to #3670ae for 5.14:1 while staying above the
|
|
305
|
+
3:1 non-text floor against the app, panel and card surfaces it sits on.
|
|
306
|
+
Kept in lockstep with blue-700's dark column in style/glasselated-ramps.ts,
|
|
307
|
+
which is the same fill for macro-styled components. */
|
|
297
308
|
--accent-live: #ff6b35;
|
|
298
|
-
--interactive-fill: #
|
|
309
|
+
--interactive-fill: #3670ae;
|
|
299
310
|
--accent-create-bg: rgb(255 222 129);
|
|
300
311
|
--accent-create-border: rgb(255 222 129);
|
|
301
312
|
--accent-create-ink: #3a2e00;
|
|
@@ -530,7 +541,8 @@
|
|
|
530
541
|
* declared anyway so a surface never inherits the night value across a scheme
|
|
531
542
|
* boundary. */
|
|
532
543
|
--edge-glass: inset 0 1px 0 rgba(255, 255, 255, 0.9), inset 0 0 0 1px rgba(255, 255, 255, 0.35);
|
|
533
|
-
--edge-glass-surface:
|
|
544
|
+
--edge-glass-surface:
|
|
545
|
+
inset 0 1px 0 rgba(255, 255, 255, 0.9), inset 0 0 0 1px rgba(255, 255, 255, 0.35);
|
|
534
546
|
--shadow-card: 0 2px 8px rgba(99, 115, 139, 0.08), 0 8px 24px rgba(99, 115, 139, 0.1);
|
|
535
547
|
--shadow-panel: 0 12px 40px rgba(99, 115, 139, 0.14);
|
|
536
548
|
--shadow-float: 0 16px 48px rgba(99, 115, 139, 0.22);
|
|
@@ -570,11 +582,22 @@
|
|
|
570
582
|
--slate-100: #eaeff6;
|
|
571
583
|
--white: #ffffff;
|
|
572
584
|
|
|
573
|
-
/* Text
|
|
585
|
+
/* Text
|
|
586
|
+
`--text-secondary` and `--text-link` are pinned to WCAG AA (4.5:1), not to
|
|
587
|
+
the nearest ramp rung, and that is why neither is an alias any more:
|
|
588
|
+
- `--slate-500` #64748b reads 3.67-4.38:1 across our light surfaces, so
|
|
589
|
+
the secondary ink steps one notch darker than the slate ramp. The rung
|
|
590
|
+
itself is unchanged — it is a palette entry, this is an ink role.
|
|
591
|
+
- `--text-link` was `var(--blue-500)`, i.e. the same #2e90fa as
|
|
592
|
+
`--accent-primary` (2.50-3.24:1). Accent-as-ink and accent-as-decoration
|
|
593
|
+
cannot share one value at AA, so the ink takes `--blue-700` and
|
|
594
|
+
`--accent-primary` keeps #2e90fa for glows, rings, borders and dots.
|
|
595
|
+
Worst case measured over every surface a docs page composites: secondary
|
|
596
|
+
4.65:1 on the accent-tinted chip, link 4.73:1 on the same. */
|
|
574
597
|
--text-primary: var(--slate-900);
|
|
575
|
-
--text-secondary:
|
|
598
|
+
--text-secondary: #556478;
|
|
576
599
|
--text-tertiary: var(--slate-400);
|
|
577
|
-
--text-link: var(--blue-
|
|
600
|
+
--text-link: var(--blue-700);
|
|
578
601
|
--text-on-accent: var(--white);
|
|
579
602
|
|
|
580
603
|
/* Terminal wells — matte, darker channel ink for daylight legibility */
|
|
@@ -593,9 +616,13 @@
|
|
|
593
616
|
--well-tutor-ink: var(--text-primary);
|
|
594
617
|
--btn-secondary-bg: #e9eff6;
|
|
595
618
|
|
|
596
|
-
/* Accents (app)
|
|
619
|
+
/* Accents (app)
|
|
620
|
+
`--interactive-fill` is the accent used as a FILL under `--text-on-accent`,
|
|
621
|
+
so it answers to 4.5:1 with white the way `--accent-primary` never has to.
|
|
622
|
+
It was `var(--accent-primary)`; white on #2e90fa is 3.24:1, the graphical
|
|
623
|
+
floor only, which is fine for an icon mask and wrong for a button label. */
|
|
597
624
|
--accent-live: #ff6b35;
|
|
598
|
-
--interactive-fill: var(--
|
|
625
|
+
--interactive-fill: var(--blue-700);
|
|
599
626
|
--accent-create-bg: #ffedb0;
|
|
600
627
|
--accent-create-border: #f5d88a;
|
|
601
628
|
--accent-create-ink: #7a5600;
|