@titan-design/react-ui 0.12.1 → 0.14.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 +60 -47
- package/dist/bodymap.js +856 -736
- package/dist/bodymap.js.map +1 -1
- package/dist/bodymap.mjs +858 -738
- package/dist/bodymap.mjs.map +1 -1
- package/dist/index.d.mts +1431 -237
- package/dist/index.d.ts +1431 -237
- package/dist/index.js +6506 -4781
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +6280 -4642
- package/dist/index.mjs.map +1 -1
- package/dist/{pages-B1hqnGIC.d.ts → pages-CsjsUn0G.d.ts} +51 -16
- package/dist/{pages-CvsFqNtx.d.mts → pages-ZbT_pD_U.d.mts} +51 -16
- package/dist/pages.d.mts +1 -1
- package/dist/pages.d.ts +1 -1
- package/dist/pages.js +1919 -1937
- package/dist/pages.js.map +1 -1
- package/dist/pages.mjs +1927 -1945
- package/dist/pages.mjs.map +1 -1
- package/dist/theme/index.d.mts +225 -140
- package/dist/theme/index.d.ts +225 -140
- package/dist/theme/index.js +298 -319
- package/dist/theme/index.js.map +1 -1
- package/dist/theme/index.mjs +283 -315
- package/dist/theme/index.mjs.map +1 -1
- package/dist/theme/tokens-css.js +145 -24
- package/dist/theme/tokens-css.js.map +1 -1
- package/dist/theme/tokens-css.mjs +145 -24
- package/dist/theme/tokens-css.mjs.map +1 -1
- package/dist/theme/tokens.d.mts +128 -11
- package/dist/theme/tokens.d.ts +128 -11
- package/dist/theme/tokens.js +126 -26
- package/dist/theme/tokens.js.map +1 -1
- package/dist/theme/tokens.mjs +124 -27
- package/dist/theme/tokens.mjs.map +1 -1
- package/docs/audits/2026-09-08-critique-addenda.md +51 -0
- package/docs/audits/2026-09-08-library-critique.md +212 -0
- package/docs/library-roadmap.md +99 -0
- package/docs/render-testing-pattern.md +130 -0
- package/package.json +1 -1
- package/src/arch/Architecture.stories.tsx +3 -1
- package/src/arch/arch-graph.freshness.test.ts +52 -0
- package/src/arch/arch-graph.json +4989 -1583
- package/src/components/custom/ActiveWork/CoChangeChip.stories.tsx +44 -0
- package/src/components/custom/ActiveWork/CoChangeChip.test.tsx +29 -0
- package/src/components/custom/ActiveWork/CoChangeChip.tsx +48 -0
- package/src/components/custom/ActiveWork/Eyebrow.stories.tsx +25 -0
- package/src/components/custom/ActiveWork/Eyebrow.test.tsx +16 -0
- package/src/components/custom/ActiveWork/Eyebrow.tsx +26 -0
- package/src/components/custom/ActiveWork/FileActivityDetail.stories.tsx +50 -0
- package/src/components/custom/ActiveWork/FileActivityDetail.test.tsx +66 -0
- package/src/components/custom/ActiveWork/FileActivityDetail.tsx +202 -0
- package/src/components/custom/ActiveWork/FileActivityRow.stories.tsx +70 -0
- package/src/components/custom/ActiveWork/FileActivityRow.test.tsx +67 -0
- package/src/components/custom/ActiveWork/FileActivityRow.tsx +130 -0
- package/src/components/custom/ActiveWork/FileHistoryExplorer.stories.tsx +84 -0
- package/src/components/custom/ActiveWork/FileHistoryExplorer.test.tsx +99 -0
- package/src/components/custom/ActiveWork/FileHistoryExplorer.tsx +138 -0
- package/src/components/custom/ActiveWork/FilePathLabel.stories.tsx +39 -0
- package/src/components/custom/ActiveWork/FilePathLabel.test.tsx +53 -0
- package/src/components/custom/ActiveWork/FilePathLabel.tsx +63 -0
- package/src/components/custom/ActiveWork/InitiativeBrief.stories.tsx +50 -0
- package/src/components/custom/ActiveWork/InitiativeBrief.test.tsx +62 -0
- package/src/components/custom/ActiveWork/InitiativeBrief.tsx +182 -0
- package/src/components/custom/ActiveWork/InitiativeCard.stories.tsx +73 -0
- package/src/components/custom/ActiveWork/InitiativeCard.test.tsx +68 -0
- package/src/components/custom/ActiveWork/InitiativeCard.tsx +136 -0
- package/src/components/custom/ActiveWork/InitiativeHeader.stories.tsx +59 -0
- package/src/components/custom/ActiveWork/InitiativeHeader.test.tsx +40 -0
- package/src/components/custom/ActiveWork/InitiativeHeader.tsx +73 -0
- package/src/components/custom/ActiveWork/InitiativeReader.stories.tsx +145 -0
- package/src/components/custom/ActiveWork/OpenLoops.stories.tsx +58 -0
- package/src/components/custom/ActiveWork/OpenLoops.test.tsx +61 -0
- package/src/components/custom/ActiveWork/OpenLoops.tsx +107 -0
- package/src/components/custom/ActiveWork/PortfolioOverview.stories.tsx +101 -0
- package/src/components/custom/ActiveWork/PortfolioOverview.test.tsx +81 -0
- package/src/components/custom/ActiveWork/PortfolioOverview.tsx +83 -0
- package/src/components/custom/ActiveWork/README.md +305 -0
- package/src/components/custom/ActiveWork/SessionDetail.stories.tsx +71 -0
- package/src/components/custom/ActiveWork/SessionDetail.test.tsx +84 -0
- package/src/components/custom/ActiveWork/SessionDetail.tsx +180 -0
- package/src/components/custom/ActiveWork/SessionList.stories.tsx +69 -0
- package/src/components/custom/ActiveWork/SessionList.test.tsx +78 -0
- package/src/components/custom/ActiveWork/SessionList.tsx +103 -0
- package/src/components/custom/ActiveWork/SessionListItem.stories.tsx +64 -0
- package/src/components/custom/ActiveWork/SessionListItem.test.tsx +62 -0
- package/src/components/custom/ActiveWork/SessionListItem.tsx +152 -0
- package/src/components/custom/ActiveWork/SessionReader.stories.tsx +113 -0
- package/src/components/custom/ActiveWork/SeverityLabel.stories.tsx +51 -0
- package/src/components/custom/ActiveWork/SeverityLabel.test.tsx +68 -0
- package/src/components/custom/ActiveWork/SeverityLabel.tsx +97 -0
- package/src/components/custom/ActiveWork/TaskRow.stories.tsx +63 -0
- package/src/components/custom/ActiveWork/TaskRow.test.tsx +112 -0
- package/src/components/custom/ActiveWork/TaskRow.tsx +176 -0
- package/src/components/custom/ActiveWork/TaskTable.stories.tsx +123 -0
- package/src/components/custom/ActiveWork/TaskTable.test.tsx +233 -0
- package/src/components/custom/ActiveWork/TaskTable.tsx +321 -0
- package/src/components/custom/ActiveWork/active-work-depth.test.tsx +102 -0
- package/src/components/custom/ActiveWork/file-history-fixture.ts +91 -0
- package/src/components/custom/ActiveWork/format-time.test.ts +23 -0
- package/src/components/custom/ActiveWork/format-time.ts +32 -0
- package/src/components/custom/ActiveWork/index.ts +19 -0
- package/src/components/custom/ActiveWork/initiative-fixture.ts +104 -0
- package/src/components/custom/ActiveWork/session-fixture.ts +267 -0
- package/src/components/custom/ActiveWork/session-linkers.ts +56 -0
- package/src/components/custom/ActiveWork/task-list-fixture.ts +97 -0
- package/src/components/custom/CircularTimer/CircularTimer.stories.tsx +12 -6
- package/src/components/custom/DateTime/DateTime.stories.tsx +2 -1
- package/src/components/custom/DateTime/DateTime.test.tsx +3 -1
- package/src/components/custom/EmptyState/EmptyState.stories.tsx +22 -9
- package/src/components/custom/EmptyState/EmptyState.test.tsx +7 -13
- package/src/components/custom/EmptyState/EmptyState.tsx +4 -18
- package/src/components/custom/Fatigue/DualGhostSpark.stories.tsx +4 -3
- package/src/components/custom/Fatigue/FatigueLights.stories.tsx +2 -2
- package/src/components/custom/Fatigue/GhostSpark.stories.tsx +4 -3
- package/src/components/custom/Fatigue/LiveFatigueCard.stories.tsx +2 -2
- package/src/components/custom/Fatigue/LiveFatigueCard.tsx +8 -4
- package/src/components/custom/Fatigue/LiveFatiguePanel.stories.tsx +116 -6
- package/src/components/custom/Fatigue/LiveFatiguePanel.test.tsx +134 -0
- package/src/components/custom/Fatigue/LiveFatiguePanel.tsx +54 -83
- package/src/components/custom/Fatigue/README.md +40 -3
- package/src/components/custom/Fatigue/RomProgressionChart.stories.tsx +2 -2
- package/src/components/custom/Fatigue/SilverRedPalette.stories.tsx +2 -1
- package/src/components/custom/Fatigue/VelocityHero.stories.tsx +4 -3
- package/src/components/custom/Fatigue/VerdictHero.stories.tsx +2 -2
- package/src/components/custom/Fatigue/fatigue-mock.test.ts +0 -5
- package/src/components/custom/Fatigue/fatigue-mock.ts +2 -10
- package/src/components/custom/Fatigue/fatigue-tokens.ts +12 -0
- package/src/components/custom/Fatigue/index.ts +17 -5
- package/src/components/custom/Fatigue/panel-layout.test.ts +149 -0
- package/src/components/custom/Fatigue/panel-layout.ts +185 -0
- package/src/components/custom/Gauge/Gauge.stories.tsx +6 -3
- package/src/components/custom/Gauge/Gauge.test.tsx +1 -1
- package/src/components/custom/Gauge/Gauge.tsx +7 -2
- package/src/components/custom/Metric/Metric.stories.tsx +10 -1
- package/src/components/custom/Metric/Metric.test.tsx +1 -3
- package/src/components/custom/Metric/Metric.tsx +5 -20
- package/src/components/custom/Prose/MarkdownProse.stories.tsx +88 -0
- package/src/components/custom/Prose/MarkdownProse.test.tsx +87 -0
- package/src/components/custom/Prose/MarkdownProse.tsx +201 -0
- package/src/components/custom/Prose/README.md +58 -0
- package/src/components/custom/Prose/index.ts +1 -0
- package/src/components/custom/Scatter/Scatter.stories.tsx +55 -14
- package/src/components/custom/Scatter/Scatter.test.tsx +2 -2
- package/src/components/custom/Scatter/Scatter.tsx +122 -18
- package/src/components/custom/Sidebar/Sidebar.stories.tsx +41 -8
- package/src/components/custom/Sidebar/Sidebar.test.tsx +5 -1
- package/src/components/custom/Sidebar/Sidebar.tsx +16 -33
- package/src/components/custom/Table/Table.stories.tsx +99 -16
- package/src/components/custom/Table/Table.test.tsx +273 -86
- package/src/components/custom/Table/Table.tsx +159 -67
- package/src/components/custom/Table/column-fit.test.ts +75 -0
- package/src/components/custom/Table/column-fit.ts +116 -0
- package/src/components/custom/Table/index.ts +9 -0
- package/src/components/custom/TimerReadout/TimerReadout.stories.tsx +8 -6
- package/src/components/custom/Treemap/Treemap.stories.tsx +15 -12
- package/src/components/custom/Treemap/Treemap.test.tsx +1 -1
- package/src/components/custom/Treemap/Treemap.tsx +11 -3
- package/src/components/custom/Typography/Typography.stories.tsx +28 -1
- package/src/components/custom/Typography/Typography.test.tsx +34 -0
- package/src/components/custom/Typography/Typography.tsx +6 -0
- package/src/components/custom/Typography/index.ts +1 -8
- package/src/components/custom/Workout/ActiveWorkoutPage.stories.tsx +11 -2
- package/src/components/custom/Workout/BaseBadge.stories.tsx +27 -11
- package/src/components/custom/Workout/BaseBadge.test.tsx +31 -11
- package/src/components/custom/Workout/BaseBadge.tsx +6 -2
- package/src/components/custom/Workout/BodyMap.stories.tsx +4 -1
- package/src/components/custom/Workout/BodyMap.tsx +8 -4
- package/src/components/custom/Workout/BodyMapDetailPanel.stories.tsx +28 -6
- package/src/components/custom/Workout/BodyMapDetailPanel.test.tsx +11 -15
- package/src/components/custom/Workout/BodyMapDetailPanel.tsx +50 -12
- package/src/components/custom/Workout/CapacityBandChart.stories.tsx +12 -9
- package/src/components/custom/Workout/CapacityBandChart.test.tsx +24 -51
- package/src/components/custom/Workout/CapacityBandChart.tsx +144 -111
- package/src/components/custom/Workout/DeviationBar.stories.tsx +1 -1
- package/src/components/custom/Workout/DeviationBar.test.tsx +10 -4
- package/src/components/custom/Workout/DeviationBar.tsx +24 -16
- package/src/components/custom/Workout/DualVelocityStrip.stories.tsx +183 -0
- package/src/components/custom/Workout/DualVelocityStrip.test.tsx +32 -18
- package/src/components/custom/Workout/ExerciseCard.stories.tsx +12 -11
- package/src/components/custom/Workout/ExerciseCard.test.tsx +52 -22
- package/src/components/custom/Workout/ExerciseCard.tsx +99 -183
- package/src/components/custom/Workout/ExerciseCardHeading.stories.tsx +95 -12
- package/src/components/custom/Workout/ExerciseCardHeading.test.tsx +189 -1
- package/src/components/custom/Workout/ExerciseCardHeading.tsx +167 -18
- package/src/components/custom/Workout/ExerciseDetailPage.stories.tsx +9 -1
- package/src/components/custom/Workout/ExerciseDetailPage.tsx +3 -2
- package/src/components/custom/Workout/ExerciseHeading.stories.tsx +8 -8
- package/src/components/custom/Workout/ExerciseHeading.tsx +194 -46
- package/src/components/custom/Workout/ExerciseIndicator.stories.tsx +12 -9
- package/src/components/custom/Workout/ExerciseIndicator.test.tsx +27 -11
- package/src/components/custom/Workout/ExerciseIndicator.tsx +14 -15
- package/src/components/custom/Workout/FatigueMeter.stories.tsx +5 -5
- package/src/components/custom/Workout/InputBar.stories.tsx +4 -5
- package/src/components/custom/Workout/InputBar.tsx +4 -2
- package/src/components/custom/Workout/IntensityBar.stories.tsx +1 -1
- package/src/components/custom/Workout/IntensityBar.test.tsx +5 -1
- package/src/components/custom/Workout/IntensityBar.tsx +8 -3
- package/src/components/custom/Workout/LiveAuraFrame.stories.tsx +5 -4
- package/src/components/custom/Workout/MesoCard.stories.tsx +4 -1
- package/src/components/custom/Workout/MesoCard.test.tsx +7 -18
- package/src/components/custom/Workout/MesoCard.tsx +14 -10
- package/src/components/custom/Workout/MesoProgressBar.stories.tsx +1 -1
- package/src/components/custom/Workout/MesoProgressBar.test.tsx +18 -11
- package/src/components/custom/Workout/MesoProgressBar.tsx +15 -13
- package/src/components/custom/Workout/MesoStatusCard.stories.tsx +2 -1
- package/src/components/custom/Workout/MesoStatusCard.test.tsx +14 -44
- package/src/components/custom/Workout/MesoStatusCard.tsx +20 -33
- package/src/components/custom/Workout/MetricTiles.stories.tsx +3 -2
- package/src/components/custom/Workout/MuscleGroupChip.stories.tsx +2 -8
- package/src/components/custom/Workout/MuscleGroupChip.test.tsx +23 -31
- package/src/components/custom/Workout/MuscleGroupChip.tsx +28 -67
- package/src/components/custom/Workout/PlaceholderStrip.stories.tsx +9 -4
- package/src/components/custom/Workout/PlaceholderStrip.test.tsx +17 -10
- package/src/components/custom/Workout/PlaceholderStrip.tsx +9 -8
- package/src/components/custom/Workout/PrBadge.stories.tsx +2 -1
- package/src/components/custom/Workout/PrBadge.test.tsx +3 -9
- package/src/components/custom/Workout/PrBadge.tsx +13 -17
- package/src/components/custom/Workout/PrHistoryModal.stories.tsx +16 -3
- package/src/components/custom/Workout/PrHistoryModal.test.tsx +13 -36
- package/src/components/custom/Workout/PrHistoryModal.tsx +8 -4
- package/src/components/custom/Workout/ProgramPlanningPage.stories.tsx +6 -1
- package/src/components/custom/Workout/README.md +68 -17
- package/src/components/custom/Workout/ReadinessCheck.stories.tsx +3 -2
- package/src/components/custom/Workout/ReadinessCheck.test.tsx +12 -18
- package/src/components/custom/Workout/ReadinessCheck.tsx +22 -4
- package/src/components/custom/Workout/RestTimer.stories.tsx +16 -4
- package/src/components/custom/Workout/RestTimer.tsx +4 -2
- package/src/components/custom/Workout/ScheduleTiles.stories.tsx +3 -2
- package/src/components/custom/Workout/ScheduleTiles.test.tsx +3 -4
- package/src/components/custom/Workout/ScheduleTiles.tsx +4 -7
- package/src/components/custom/Workout/SegmentedBar.stories.tsx +21 -17
- package/src/components/custom/Workout/SegmentedBar.tsx +10 -5
- package/src/components/custom/Workout/SegmentedProgressBar.stories.tsx +5 -5
- package/src/components/custom/Workout/SessionHeader.stories.tsx +6 -6
- package/src/components/custom/Workout/SessionHeader.tsx +12 -12
- package/src/components/custom/Workout/SessionRail.stories.tsx +12 -11
- package/src/components/custom/Workout/SessionRail.tsx +7 -9
- package/src/components/custom/Workout/SetBar.stories.tsx +10 -6
- package/src/components/custom/Workout/SetBar.test.tsx +49 -4
- package/src/components/custom/Workout/SetBar.tsx +38 -12
- package/src/components/custom/Workout/SetRow.stories.tsx +3 -2
- package/src/components/custom/Workout/SetRow.test.tsx +16 -2
- package/src/components/custom/Workout/SetRow.tsx +61 -23
- package/src/components/custom/Workout/SetStrip.stories.tsx +63 -7
- package/src/components/custom/Workout/SetStrip.test.tsx +25 -0
- package/src/components/custom/Workout/SetStrip.tsx +24 -4
- package/src/components/custom/Workout/SetTableHeader.stories.tsx +6 -6
- package/src/components/custom/Workout/SetTableHeader.tsx +9 -12
- package/src/components/custom/Workout/SetsRepsLoad.stories.tsx +7 -7
- package/src/components/custom/Workout/SetsRepsLoad.tsx +24 -12
- package/src/components/custom/Workout/Sparkline.stories.tsx +14 -11
- package/src/components/custom/Workout/Sparkline.test.tsx +37 -19
- package/src/components/custom/Workout/Sparkline.tsx +14 -18
- package/src/components/custom/Workout/StatusDot.stories.tsx +1 -1
- package/src/components/custom/Workout/StatusDot.test.tsx +44 -5
- package/src/components/custom/Workout/StatusDot.tsx +93 -63
- package/src/components/custom/Workout/StatusPill.stories.tsx +1 -1
- package/src/components/custom/Workout/StatusPill.test.tsx +6 -15
- package/src/components/custom/Workout/StatusPill.tsx +27 -38
- package/src/components/custom/Workout/StrengthTrendChart.stories.tsx +11 -4
- package/src/components/custom/Workout/StrengthTrendChart.test.tsx +15 -37
- package/src/components/custom/Workout/StrengthTrendChart.tsx +39 -36
- package/src/components/custom/Workout/SupersetWrapper.stories.tsx +27 -64
- package/src/components/custom/Workout/SupersetWrapper.test.tsx +16 -14
- package/src/components/custom/Workout/SupersetWrapper.tsx +17 -21
- package/src/components/custom/Workout/TempoDisplay.stories.tsx +26 -10
- package/src/components/custom/Workout/TempoDisplay.test.tsx +18 -4
- package/src/components/custom/Workout/TempoDisplay.tsx +2 -0
- package/src/components/custom/Workout/TrainingStatusPage.stories.tsx +9 -1
- package/src/components/custom/Workout/VelocityStrip.compact.stories.tsx +4 -1
- package/src/components/custom/Workout/VelocityStrip.dual.stories.tsx +10 -6
- package/src/components/custom/Workout/VelocityStrip.expanded.stories.tsx +5 -2
- package/src/components/custom/Workout/VelocityStrip.hero.stories.tsx +44 -1
- package/src/components/custom/Workout/VelocityStrip.stories.tsx +12 -6
- package/src/components/custom/Workout/VelocityStrip.test.tsx +48 -6
- package/src/components/custom/Workout/VelocityStrip.tsx +26 -14
- package/src/components/custom/Workout/VolumeLandmarkBar.stories.tsx +6 -7
- package/src/components/custom/Workout/VolumeLandmarkBar.tsx +15 -6
- package/src/components/custom/Workout/WeekRow.stories.tsx +4 -1
- package/src/components/custom/Workout/WeekRow.test.tsx +18 -15
- package/src/components/custom/Workout/WeekRow.tsx +23 -16
- package/src/components/custom/Workout/WeightBadge.stories.tsx +2 -1
- package/src/components/custom/Workout/WeightBadge.test.tsx +50 -19
- package/src/components/custom/Workout/WeightBadge.tsx +28 -27
- package/src/components/custom/Workout/WorkoutCard.stories.tsx +6 -1
- package/src/components/custom/Workout/WorkoutCard.test.tsx +18 -0
- package/src/components/custom/Workout/WorkoutCard.tsx +35 -57
- package/src/components/custom/Workout/WorkoutPill.stories.tsx +5 -2
- package/src/components/custom/Workout/WorkoutPill.test.tsx +39 -7
- package/src/components/custom/Workout/WorkoutPill.tsx +88 -57
- package/src/components/custom/Workout/ZoneTrack.stories.tsx +10 -7
- package/src/components/custom/Workout/ZoneTrack.tsx +10 -9
- package/src/components/custom/Workout/exerciseRowState.ts +29 -0
- package/src/components/custom/Workout/index.ts +17 -2
- package/src/components/custom/Workout/metricText.stories.tsx +15 -13
- package/src/components/custom/Workout/metricText.tsx +8 -2
- package/src/components/custom/Workout/setHeadingKit.tsx +219 -36
- package/src/components/custom/Workout/velocity-story-kit.tsx +2 -2
- package/src/components/custom/charts/README.md +66 -0
- package/src/components/custom/charts/SetBarChart.test.tsx +46 -1
- package/src/components/custom/charts/SetBarChart.tsx +56 -9
- package/src/components/custom/charts/SparkBars.stories.tsx +55 -0
- package/src/components/custom/charts/SparkBars.test.tsx +69 -0
- package/src/components/custom/charts/SparkBars.tsx +85 -0
- package/src/components/custom/charts/flatBarGeometry.test.ts +41 -0
- package/src/components/custom/charts/flatBarGeometry.ts +32 -0
- package/src/components/custom/charts/index.ts +3 -0
- package/src/components/custom/index.ts +3 -0
- package/src/components/custom/stepper/Stepper.stories.tsx +13 -10
- package/src/components/custom/stepper/Stepper.test.tsx +1 -7
- package/src/components/custom/stepper/Stepper.tsx +21 -34
- package/src/components/icons/icons.stories.tsx +1 -1
- package/src/components/icons/icons.tsx +51 -0
- package/src/components/shell/AppShell.stories.tsx +150 -0
- package/src/components/shell/AppShell.test.tsx +70 -0
- package/src/components/shell/AppShell.tsx +90 -0
- package/src/components/shell/BrandLockup.stories.tsx +66 -5
- package/src/components/shell/BrandLockup.test.tsx +34 -1
- package/src/components/shell/BrandLockup.tsx +27 -11
- package/src/components/shell/NavItem.stories.tsx +4 -4
- package/src/components/shell/NavItem.test.tsx +17 -0
- package/src/components/shell/NavItem.tsx +17 -5
- package/src/components/shell/README.md +89 -26
- package/src/components/shell/SideNav.stories.tsx +38 -7
- package/src/components/shell/SideNav.test.tsx +16 -8
- package/src/components/shell/SideNav.tsx +17 -17
- package/src/components/shell/TopBar.stories.tsx +44 -19
- package/src/components/shell/TopBar.test.tsx +34 -12
- package/src/components/shell/TopBar.tsx +61 -40
- package/src/components/shell/brands.tsx +66 -0
- package/src/components/shell/index.ts +9 -8
- package/src/components/shell/{DeviceIndicator.stories.tsx → workout/DeviceIndicator.stories.tsx} +2 -2
- package/src/components/shell/{DeviceIndicator.tsx → workout/DeviceIndicator.tsx} +2 -2
- package/src/components/shell/{DeviceMenu.stories.tsx → workout/DeviceMenu.stories.tsx} +2 -2
- package/src/components/shell/{DeviceMenu.tsx → workout/DeviceMenu.tsx} +3 -3
- package/src/components/shell/{DeviceRow.stories.tsx → workout/DeviceRow.stories.tsx} +2 -2
- package/src/components/shell/{DeviceRow.tsx → workout/DeviceRow.tsx} +3 -3
- package/src/components/shell/{SessionStatePill.stories.tsx → workout/SessionStatePill.stories.tsx} +2 -2
- package/src/components/shell/{SessionStatePill.tsx → workout/SessionStatePill.tsx} +5 -3
- package/src/components/shell/workout/WorkoutShell.stories.tsx +71 -0
- package/src/components/shell/{DashboardShell.test.tsx → workout/WorkoutShell.test.tsx} +19 -8
- package/src/components/shell/workout/WorkoutShell.tsx +77 -0
- package/src/components/shell/workout/WorkoutTopBar.stories.tsx +58 -0
- package/src/components/shell/workout/WorkoutTopBar.test.tsx +39 -0
- package/src/components/shell/workout/WorkoutTopBar.tsx +52 -0
- package/src/components/shell/workout/index.ts +9 -0
- package/src/components/shell/workout/workoutNavItems.tsx +16 -0
- package/src/components/ui/README.md +110 -0
- package/src/components/ui/alert/Alert.stories.tsx +15 -5
- package/src/components/ui/alert/Alert.tsx +24 -3
- package/src/components/ui/autocomplete/Autocomplete.stories.tsx +11 -13
- package/src/components/ui/autocomplete/Autocomplete.test.tsx +7 -25
- package/src/components/ui/autocomplete/Autocomplete.tsx +21 -28
- package/src/components/ui/avatar/Avatar.stories.tsx +1 -1
- package/src/components/ui/avatar/Avatar.tsx +2 -10
- package/src/components/ui/badge/Badge.stories.tsx +83 -28
- package/src/components/ui/badge/Badge.test.tsx +19 -3
- package/src/components/ui/badge/Badge.tsx +48 -55
- package/src/components/ui/breadcrumbs/Breadcrumbs.stories.tsx +1 -1
- package/src/components/ui/breadcrumbs/Breadcrumbs.tsx +4 -16
- package/src/components/ui/button/Button.stories.tsx +46 -12
- package/src/components/ui/button/Button.tsx +44 -37
- package/src/components/ui/card/Card.stories.tsx +90 -94
- package/src/components/ui/card/Card.test.tsx +80 -6
- package/src/components/ui/card/Card.tsx +150 -203
- package/src/components/ui/checkbox/Checkbox.stories.tsx +1 -1
- package/src/components/ui/checkbox/Checkbox.tsx +7 -27
- package/src/components/ui/chip/Chip.stories.tsx +37 -13
- package/src/components/ui/chip/Chip.test.tsx +10 -6
- package/src/components/ui/chip/Chip.tsx +76 -91
- package/src/components/ui/collapse/Collapse.stories.tsx +23 -23
- package/src/components/ui/collapse/Collapse.tsx +6 -11
- package/src/components/ui/data-row/DataRow.stories.tsx +14 -3
- package/src/components/ui/data-row/DataRow.test.tsx +5 -15
- package/src/components/ui/data-row/DataRow.tsx +18 -7
- package/src/components/ui/divider/Divider.stories.tsx +1 -1
- package/src/components/ui/divider/Divider.tsx +1 -5
- package/src/components/ui/drawer/Drawer.stories.tsx +5 -16
- package/src/components/ui/drawer/Drawer.tsx +13 -27
- package/src/components/ui/floating-overlay-depth.test.tsx +143 -0
- package/src/components/ui/form-field/FormField.stories.tsx +6 -20
- package/src/components/ui/form-field/FormField.test.tsx +1 -5
- package/src/components/ui/form-field/FormField.tsx +10 -46
- package/src/components/ui/help-tip/HelpTip.stories.tsx +8 -19
- package/src/components/ui/help-tip/HelpTip.test.tsx +1 -3
- package/src/components/ui/help-tip/HelpTip.tsx +21 -22
- package/src/components/ui/help-tip/index.ts +7 -1
- package/src/components/ui/icon-box/IconBox.stories.tsx +1 -1
- package/src/components/ui/icon-box/IconBox.test.tsx +1 -7
- package/src/components/ui/icon-box/IconBox.tsx +10 -18
- package/src/components/ui/indicator/Indicator.stories.tsx +5 -4
- package/src/components/ui/indicator/Indicator.tsx +20 -14
- package/src/components/ui/input/Input.stories.tsx +3 -11
- package/src/components/ui/input/Input.test.tsx +2 -10
- package/src/components/ui/input/Input.tsx +10 -25
- package/src/components/ui/input/index.ts +7 -1
- package/src/components/ui/link/Link.stories.tsx +19 -7
- package/src/components/ui/list-item/ListItem.stories.tsx +17 -5
- package/src/components/ui/list-item/ListItem.tsx +2 -9
- package/src/components/ui/menu/Menu.stories.tsx +21 -15
- package/src/components/ui/menu/Menu.test.tsx +2 -11
- package/src/components/ui/menu/Menu.tsx +12 -14
- package/src/components/ui/menu/index.ts +8 -1
- package/src/components/ui/modal/Modal.stories.tsx +2 -2
- package/src/components/ui/modal/Modal.tsx +31 -19
- package/src/components/ui/pill/Pill.stories.tsx +111 -23
- package/src/components/ui/pill/Pill.test.tsx +101 -3
- package/src/components/ui/pill/Pill.tsx +168 -49
- package/src/components/ui/pill/index.ts +1 -1
- package/src/components/ui/popover/Popover.stories.tsx +6 -8
- package/src/components/ui/popover/Popover.test.tsx +1 -6
- package/src/components/ui/popover/Popover.tsx +20 -15
- package/src/components/ui/popover/index.ts +7 -1
- package/src/components/ui/progress/Progress.stories.tsx +3 -12
- package/src/components/ui/progress/Progress.test.tsx +1 -5
- package/src/components/ui/progress/Progress.tsx +9 -6
- package/src/components/ui/radio/Radio.stories.tsx +42 -21
- package/src/components/ui/radio/Radio.test.tsx +6 -2
- package/src/components/ui/radio/Radio.tsx +23 -22
- package/src/components/ui/section/Section.stories.tsx +12 -21
- package/src/components/ui/section/Section.test.tsx +1 -6
- package/src/components/ui/section/Section.tsx +1 -3
- package/src/components/ui/section/index.ts +1 -5
- package/src/components/ui/select/Select.stories.tsx +3 -13
- package/src/components/ui/select/Select.test.tsx +2 -11
- package/src/components/ui/select/Select.tsx +16 -15
- package/src/components/ui/skeleton/Skeleton.stories.tsx +3 -11
- package/src/components/ui/skeleton/Skeleton.tsx +3 -14
- package/src/components/ui/skeleton/index.ts +1 -7
- package/src/components/ui/spinner/Spinner.stories.tsx +1 -1
- package/src/components/ui/spinner/Spinner.tsx +4 -5
- package/src/components/ui/stack/Stack.stories.tsx +8 -8
- package/src/components/ui/stack/Stack.tsx +1 -1
- package/src/components/ui/surface/Surface.stories.tsx +92 -33
- package/src/components/ui/surface/Surface.test.tsx +88 -28
- package/src/components/ui/surface/Surface.tsx +37 -87
- package/src/components/ui/surface/SurfaceContext.ts +22 -62
- package/src/components/ui/surface/index.ts +8 -0
- package/src/components/ui/surface/resolveSurface.ts +98 -0
- package/src/components/ui/surface/surface.contract.test.ts +6 -1
- package/src/components/ui/switch/Switch.stories.tsx +1 -1
- package/src/components/ui/switch/Switch.tsx +7 -6
- package/src/components/ui/tabs/Tabs.stories.tsx +1 -1
- package/src/components/ui/tabs/Tabs.tsx +8 -21
- package/src/components/ui/tabs/index.ts +1 -7
- package/src/components/ui/tile/Tile.stories.tsx +1 -1
- package/src/components/ui/tile/Tile.tsx +3 -0
- package/src/components/ui/toast/Toast.stories.tsx +1 -1
- package/src/components/ui/toast/Toast.test.tsx +2 -8
- package/src/components/ui/toast/Toast.tsx +49 -57
- package/src/components/ui/toast/index.ts +0 -1
- package/src/components/ui/toolbar-button/ToolbarButton.stories.tsx +92 -71
- package/src/components/ui/toolbar-button/ToolbarButton.test.tsx +3 -18
- package/src/components/ui/toolbar-button/ToolbarButton.tsx +38 -49
- package/src/components/ui/tooltip/Tooltip.stories.tsx +12 -3
- package/src/components/ui/tooltip/Tooltip.test.tsx +21 -3
- package/src/components/ui/tooltip/Tooltip.tsx +55 -36
- package/src/components/ui/tooltip/index.ts +1 -1
- package/src/components/ui/trigger/TriggerSurface.test.tsx +215 -0
- package/src/components/ui/trigger/TriggerSurface.tsx +81 -0
- package/src/components/ui/trigger/index.ts +2 -0
- package/src/stories/PresetShowcase.stories.tsx +101 -48
- package/src/test/no-device-internals.test.ts +3 -3
- package/src/test/no-raw-color.test.ts +39 -0
- package/src/theme/Alpha.stories.tsx +103 -0
- package/src/theme/ChoosingTokens.stories.tsx +48 -0
- package/src/theme/ColorPalettes.stories.tsx +62 -45
- package/src/theme/ColorPrimitives.stories.tsx +35 -35
- package/src/theme/Depth.stories.tsx +132 -65
- package/src/theme/DepthCalibration.stories.tsx +23 -21
- package/src/theme/ProposedTokensVW82.stories.tsx +414 -0
- package/src/theme/ThemeProvider.test.tsx +4 -4
- package/src/theme/barrel.ts +7 -6
- package/src/theme/color-stories.coverage.test.ts +1 -1
- package/src/theme/color-utils.ts +41 -29
- package/src/theme/config.completeness.test.ts +1 -1
- package/src/theme/config.ts +40 -0
- package/src/theme/elevation.test.ts +82 -56
- package/src/theme/elevation.ts +77 -561
- package/src/theme/global.css +45 -5
- package/src/theme/grey-ramp.test.ts +24 -8
- package/src/theme/lift.test.ts +39 -0
- package/src/theme/lift.ts +102 -0
- package/src/theme/materials.test.ts +5 -2
- package/src/theme/materials.ts +38 -4
- package/src/theme/native-theming-guard.test.ts +5 -5
- package/src/theme/presets/apply.ts +4 -0
- package/src/theme/presets/audiobook.ts +5 -2
- package/src/theme/presets/default.ts +4 -0
- package/src/theme/presets/index.ts +14 -1
- package/src/theme/presets/types.ts +1 -1
- package/src/theme/semantic-contrast.test.ts +13 -4
- package/src/theme/status-distinctness.test.ts +66 -0
- package/src/theme/subtle-tone-weight.test.ts +163 -0
- package/src/theme/surface-planes.test.ts +37 -0
- package/src/theme/surface-planes.ts +68 -0
- package/src/theme/tailwind-var-opacity.test.ts +163 -0
- package/src/theme/token-export-guard.test.ts +1 -3
- package/src/theme/tokens/primitives.test.ts +15 -7
- package/src/theme/tokens/primitives.ts +98 -33
- package/src/theme/tokens/semantic-hex-guard.test.ts +322 -0
- package/src/theme/tokens/semantic.ts +124 -54
- package/src/theme/wash-ladder.test.ts +58 -0
- package/src/theme/workout-tokens.ts +1 -7
- package/src/types/jest-axe.d.ts +2 -6
- package/src/types/raw-md.d.ts +5 -0
- package/src/utils/colors.alpha-adoption.test.ts +408 -0
- package/src/utils/colors.ts +4 -4
- package/src/utils/form.ts +1 -3
- package/src/utils/index.ts +2 -7
- package/src/utils/number-format.ts +17 -0
- package/src/utils/workout-format.ts +15 -6
- package/src/web-jsx/jsx-runtime.ts +1 -5
- package/tailwind.config.js +55 -9
- package/src/components/custom/Workout/ExerciseCardUnified.stories.tsx +0 -151
- package/src/components/custom/Workout/RowInventory.stories.tsx +0 -408
- package/src/components/custom/Workout/S3FullRail.stories.tsx +0 -46
- package/src/components/custom/Workout/S3SessionPace.stories.tsx +0 -95
- package/src/components/custom/Workout/S3SessionRailHeading.stories.tsx +0 -61
- package/src/components/custom/Workout/S3SetTypes.stories.tsx +0 -176
- package/src/components/custom/Workout/S3WorkoutExpansion.stories.tsx +0 -240
- package/src/components/shell/DashboardShell.stories.tsx +0 -65
- package/src/components/shell/DashboardShell.tsx +0 -75
- package/src/components/shell/SessionRailSpecimen.stories.tsx +0 -753
- package/src/theme/elevation.stories.tsx +0 -346
- package/src/utils/useTheme.ts +0 -72
- /package/src/components/shell/{DeviceIndicator.test.tsx → workout/DeviceIndicator.test.tsx} +0 -0
- /package/src/components/shell/{DeviceMenu.test.tsx → workout/DeviceMenu.test.tsx} +0 -0
- /package/src/components/shell/{DeviceRow.test.tsx → workout/DeviceRow.test.tsx} +0 -0
- /package/src/components/shell/{SessionStatePill.test.tsx → workout/SessionStatePill.test.tsx} +0 -0
package/dist/theme/index.d.mts
CHANGED
|
@@ -1,158 +1,137 @@
|
|
|
1
1
|
import { ThemeMode, getSemanticColors } from './tokens.mjs';
|
|
2
|
-
export { CATEGORICAL_CVD_SAFE_MAX, CategoricalVariant, SURFACE_PLANE_STEPS, bestTextColor, buttonSizes, categoricalPalette, discreteRainbow, divergingScale, getCategoricalColor, getDiscreteRainbowColor, greyRamp, primitiveBorderRadius, primitiveBreakpoints, primitiveColors, primitiveRamps, primitiveSpacing, primitiveTypography, primitiveZIndex, semanticColorsDark, semanticColorsLight, semanticTypography, sequentialEffort } from './tokens.mjs';
|
|
3
|
-
import { ViewStyle, ViewProps } from 'react-native';
|
|
2
|
+
export { CATEGORICAL_CVD_SAFE_MAX, CategoricalVariant, SURFACE_PLANE_STEPS, alertRedVivid, bestTextColor, buttonSizes, categoricalPalette, discreteRainbow, divergingScale, getCategoricalColor, getDiscreteRainbowColor, greyRamp, primitiveBorderRadius, primitiveBreakpoints, primitiveColors, primitiveRamps, primitiveSpacing, primitiveTypography, primitiveZIndex, resultPaletteColors, semanticColorsDark, semanticColorsLight, semanticPins, semanticTypography, sequentialEffort } from './tokens.mjs';
|
|
3
|
+
import { ViewStyle, TextStyle, ViewProps } from 'react-native';
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
|
-
*
|
|
6
|
+
* LIFT — the treatment a plane wears when it sits above its neighbour.
|
|
7
7
|
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
* - Shadow intensity and style (raised/pressed)
|
|
11
|
-
* - Dynamically calculated shadow colors (derived from surface color)
|
|
12
|
-
* - Semantic name for reference
|
|
8
|
+
* Tone says which plane a container sits on; lift says it is resting ON the one
|
|
9
|
+
* below. Two cues, both lit from above:
|
|
13
10
|
*
|
|
14
|
-
*
|
|
11
|
+
* RIM a crisp 1px top rim-light. The one neumorphism half that survives
|
|
12
|
+
* near black. paperSheet's hero rim is 0.20 (VW-99 run 2); a card is
|
|
13
|
+
* not a hero, so the default lift sits one grade quieter at 0.12,
|
|
14
|
+
* chosen against 0.20 side by side in Lab/Depth (2026-09-08).
|
|
15
|
+
* AMBIENT a soft shadow cast onto the plane below, growing with the number of
|
|
16
|
+
* planes crossed. Content lifts (1–3) are tight; floating lifts (4–5)
|
|
17
|
+
* are large and soft, describing separation from the page rather than
|
|
18
|
+
* rank in a stack.
|
|
15
19
|
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
* All colors are calculated dynamically from a base surface color,
|
|
21
|
-
* allowing for custom surfaces and consistent color relationships.
|
|
22
|
-
*
|
|
23
|
-
* Lighting Model: Light source from upper-right corner
|
|
24
|
-
* - Raised elements are always lighter than base (consistent across themes)
|
|
25
|
-
* - Base colors must allow sufficient lightening in both themes
|
|
20
|
+
* Neither cue is a hairline ring: a ring is an edge, not a lift, and stays the
|
|
21
|
+
* divider's job. Web carries the multi-layer boxShadow; native gets the single
|
|
22
|
+
* shadow* set. The tone underneath is load-bearing on its own either way.
|
|
26
23
|
*/
|
|
27
24
|
|
|
28
|
-
type
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
/**
|
|
35
|
-
|
|
36
|
-
/** Shadow style: raised (floating) or pressed (inset) */
|
|
37
|
-
shadowStyle: 'raised' | 'pressed';
|
|
38
|
-
/** Description of use case */
|
|
39
|
-
description: string;
|
|
25
|
+
type LiftStep = 1 | 2 | 3 | 4 | 5;
|
|
26
|
+
/** The lowest lift that is FLOATING (menu, popover, toast) rather than content. */
|
|
27
|
+
declare const FLOATING_LIFT_MIN: LiftStep;
|
|
28
|
+
/** Rim-light alpha per mode. Light mode is a placeholder pending its own pass. */
|
|
29
|
+
declare const LIFT_RIM_ALPHA: Record<ThemeMode, number>;
|
|
30
|
+
interface LiftOptions {
|
|
31
|
+
/** Override the rim alpha. `0` drops the rim and leaves the ambient shadow alone. */
|
|
32
|
+
rim?: number;
|
|
40
33
|
}
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
34
|
+
/** The web boxShadow string for a lift: rim first, then the ambient layers. */
|
|
35
|
+
declare function liftShadow(step: LiftStep, mode?: ThemeMode, opts?: LiftOptions): string;
|
|
36
|
+
/** Platform style for a lift. Compose after `backgroundColor`; never instead of it. */
|
|
37
|
+
declare function liftStyle(step: LiftStep, mode?: ThemeMode, opts?: LiftOptions): ViewStyle;
|
|
38
|
+
|
|
46
39
|
/**
|
|
47
|
-
*
|
|
48
|
-
* Results are cached to avoid redundant calculations.
|
|
40
|
+
* The surface planes: the grey-ramp steps a container can sit on, darkest first.
|
|
49
41
|
*
|
|
50
|
-
*
|
|
51
|
-
*
|
|
52
|
-
*
|
|
53
|
-
* @returns Calculated surface color (hex)
|
|
54
|
-
*/
|
|
55
|
-
declare function getElevationSurface(baseColor: string, level: ElevationLevel, theme: 'light' | 'dark'): string;
|
|
56
|
-
/**
|
|
57
|
-
* Get shadow style for an elevation level, calculated dynamically from surface color.
|
|
58
|
-
* Results are cached to avoid redundant calculations.
|
|
42
|
+
* Every background a `<Surface>` or `<Card>` paints resolves through this list,
|
|
43
|
+
* so a container can only ever land ON the ramp. Stepping up (a lifted card) or
|
|
44
|
+
* down (a pressed well) is indexing `PLANE_ORDER`, clamped at both ends.
|
|
59
45
|
*
|
|
60
|
-
*
|
|
61
|
-
*
|
|
62
|
-
*
|
|
63
|
-
* @param isHovered - Whether element is hovered
|
|
64
|
-
* @returns ViewStyle with shadow properties
|
|
46
|
+
* `frame` is the bezel the ramp sits inside and the floor a pressed surface
|
|
47
|
+
* clamps at. It replaced a separate `inset` level in TD-07.14: at ΔE 1.10 from
|
|
48
|
+
* the frame that level was an imperceptible duplicate.
|
|
65
49
|
*/
|
|
50
|
+
|
|
51
|
+
type SurfaceLevel = 'frame' | 'background' | 'base' | 'elevated' | 'raised' | 'overlay';
|
|
52
|
+
declare const SURFACE_LEVEL_TOKEN: {
|
|
53
|
+
readonly frame: "background-frame";
|
|
54
|
+
readonly background: "background-base";
|
|
55
|
+
readonly base: "surface-base";
|
|
56
|
+
readonly elevated: "surface-elevated";
|
|
57
|
+
readonly raised: "surface-raised";
|
|
58
|
+
readonly overlay: "surface-overlay";
|
|
59
|
+
};
|
|
60
|
+
/** Darkest → lightest. Kept in lockstep with the grey ramp and surface.contract.test. */
|
|
61
|
+
declare const PLANE_ORDER: readonly ["frame", "background", "base", "elevated", "raised", "overlay"];
|
|
62
|
+
/** The background hex for a plane under a theme mode (literal hex, never a var()). */
|
|
63
|
+
declare function surfaceBackground(level: SurfaceLevel, mode: ThemeMode): string;
|
|
66
64
|
/**
|
|
67
|
-
* The
|
|
68
|
-
*
|
|
69
|
-
*
|
|
70
|
-
*
|
|
71
|
-
* composite layer. Material dropped shadow-as-hierarchy for the same reason.
|
|
72
|
-
* Inline hierarchy is the hairline's job (`hairline-*`), which composites by a
|
|
73
|
-
* constant amount over any plane.
|
|
74
|
-
*
|
|
75
|
-
* At 4+ the element is genuinely FLOATING over a backdrop — menu, popover,
|
|
76
|
-
* toast — where a large soft shadow describes separation from the page rather
|
|
77
|
-
* than a rank in a stack. Those should also carry a hairline ring.
|
|
65
|
+
* The plane a `<Surface pressed>` resolves to: its parent's plane stepped one
|
|
66
|
+
* index DOWN the ramp, clamped at the `frame` floor.
|
|
67
|
+
* overlay→raised, raised→elevated, elevated→base, base→background,
|
|
68
|
+
* background→frame, frame→frame (clamped).
|
|
78
69
|
*/
|
|
79
|
-
declare
|
|
80
|
-
declare function getElevationShadow(baseColor: string, level: ElevationLevel, theme: 'light' | 'dark', isHovered?: boolean): ViewStyle;
|
|
70
|
+
declare function pressedLevel(parent: SurfaceLevel): SurfaceLevel;
|
|
81
71
|
/**
|
|
82
|
-
*
|
|
83
|
-
*
|
|
84
|
-
*
|
|
72
|
+
* The plane a lifted surface resolves to: its parent's plane stepped `steps`
|
|
73
|
+
* UP the ramp, clamped at `overlay`. The clamp is what makes raised-on-raised
|
|
74
|
+
* unrepresentable: a card inside an overlay stays on the overlay and relies on
|
|
75
|
+
* its lift treatment, never on a lighter grey that is not on the ramp.
|
|
85
76
|
*/
|
|
86
|
-
declare
|
|
77
|
+
declare function raisedLevel(parent: SurfaceLevel, steps: number): SurfaceLevel;
|
|
78
|
+
|
|
87
79
|
/**
|
|
88
|
-
*
|
|
89
|
-
* fill colour so the rim/shadow tints track the darker fill. Composes WITH the
|
|
90
|
-
* darker pressed fill: on web it adds an inset boxShadow; on the native path
|
|
91
|
-
* (no inset-shadow support) it's a no-op and the recess reads via the fill
|
|
92
|
-
* alone — so a pressed surface stays legibly sunken with or without the shadow.
|
|
80
|
+
* Elevation — numeric depth that resolves to the grey ramp.
|
|
93
81
|
*
|
|
94
|
-
*
|
|
95
|
-
* @param theme - Current theme ('light' or 'dark').
|
|
96
|
-
*/
|
|
97
|
-
declare function getPressedRecessShadow(fillColor: string, theme: 'light' | 'dark'): ViewStyle;
|
|
98
|
-
/**
|
|
99
|
-
* Get base surface color from theme.
|
|
100
|
-
* This is the foundation color that all elevations are calculated from.
|
|
82
|
+
* A level is a plane on the surface ramp plus the treatment that plane wears:
|
|
101
83
|
*
|
|
102
|
-
*
|
|
84
|
+
* -2 frame recessed (inset well, two planes down)
|
|
85
|
+
* -1 background recessed (inset well, one plane down)
|
|
86
|
+
* 0 base flat, no treatment
|
|
87
|
+
* 1 elevated lifted (tone + rim-light + ambient shadow)
|
|
88
|
+
* 2 raised lifted
|
|
89
|
+
* 3 overlay lifted
|
|
90
|
+
* 4 overlay floating (same recipe, larger shadow)
|
|
91
|
+
* 5 overlay floating
|
|
103
92
|
*
|
|
104
|
-
*
|
|
105
|
-
*
|
|
106
|
-
*
|
|
93
|
+
* These are ABSOLUTE readings from the page plane. `<Surface>` and `<Card>`
|
|
94
|
+
* apply the same numbers RELATIVE to the plane they are nested in; see
|
|
95
|
+
* `resolveSurfaceDepth`.
|
|
107
96
|
*
|
|
108
|
-
*
|
|
109
|
-
*
|
|
97
|
+
* No level can produce a colour off the ramp. The previous ladder lightened a
|
|
98
|
+
* base colour in HSV by 2.5% per level and put five of its six stops between
|
|
99
|
+
* ramp steps, drifting warmer as it rose while the ramp is designed to cool.
|
|
100
|
+
* Floating levels share the overlay plane on purpose: past the top of the ramp,
|
|
101
|
+
* separation is the shadow's job, not a lighter grey.
|
|
110
102
|
*
|
|
111
|
-
*
|
|
103
|
+
* Depth is TONE + LIFT by default. The earlier rule that levels 1–3 separate by
|
|
104
|
+
* tone alone (TD-07.16) was reversed on 2026-09-08: the tight upper steps of the
|
|
105
|
+
* ramp (ΔL* 2.5–3) need the second channel, and a soft ambient shadow on a
|
|
106
|
+
* near-black plane is not inert once the rim-light gives it an edge to fall
|
|
107
|
+
* from. See Foundations/Depth.
|
|
112
108
|
*/
|
|
113
|
-
|
|
109
|
+
|
|
110
|
+
type ElevationLevel = -2 | -1 | 0 | 1 | 2 | 3 | 4 | 5;
|
|
111
|
+
declare const ELEVATION_PLANE: Record<ElevationLevel, SurfaceLevel>;
|
|
112
|
+
/** The lowest elevation that is floating (menu, popover, toast) rather than content. */
|
|
113
|
+
declare const FLOATING_ELEVATION_MIN: ElevationLevel;
|
|
114
|
+
/** Elevation backing a `<Surface pressed>` recess: one plane down. */
|
|
115
|
+
declare const PRESSED_ELEVATION_LEVEL: ElevationLevel;
|
|
116
|
+
/** The ramp plane an absolute elevation sits on. */
|
|
117
|
+
declare function elevationPlane(level: ElevationLevel): SurfaceLevel;
|
|
118
|
+
/** The background hex for an absolute elevation: always a ramp step. */
|
|
119
|
+
declare function getElevationSurface(level: ElevationLevel, mode?: ThemeMode): string;
|
|
114
120
|
/**
|
|
115
|
-
*
|
|
116
|
-
*
|
|
121
|
+
* Inner-shadow recess for a pressed (sunken) surface: the `insetWell` material's
|
|
122
|
+
* cut, which the wall calibrated in VW-99. Web only; on native the recess reads
|
|
123
|
+
* from the darker fill alone, which is why the fill is never optional.
|
|
117
124
|
*/
|
|
118
|
-
declare
|
|
119
|
-
readonly button: {
|
|
120
|
-
readonly allowed: readonly [2];
|
|
121
|
-
readonly default: 2;
|
|
122
|
-
readonly hover: 3;
|
|
123
|
-
};
|
|
124
|
-
readonly card: {
|
|
125
|
-
readonly allowed: readonly [1, 2, 3];
|
|
126
|
-
readonly default: 2;
|
|
127
|
-
readonly hover: 3;
|
|
128
|
-
};
|
|
129
|
-
readonly input: {
|
|
130
|
-
readonly allowed: readonly [-2, -1, 0];
|
|
131
|
-
readonly default: -1;
|
|
132
|
-
};
|
|
133
|
-
readonly overlay: {
|
|
134
|
-
readonly allowed: readonly [4, 5];
|
|
135
|
-
readonly default: 4;
|
|
136
|
-
};
|
|
137
|
-
};
|
|
138
|
-
type ComponentType = keyof typeof componentElevationRanges;
|
|
125
|
+
declare function getPressedRecessShadow(fillColor: string, _mode?: ThemeMode): ViewStyle;
|
|
139
126
|
/**
|
|
140
|
-
*
|
|
127
|
+
* The treatment an absolute elevation wears: a recess below 0, nothing at 0,
|
|
128
|
+
* a lift above it. Compose after `backgroundColor`.
|
|
141
129
|
*/
|
|
142
|
-
declare function
|
|
143
|
-
type GlowIntensity = 'subtle' | 'medium' | 'strong';
|
|
130
|
+
declare function getElevationShadow(level: ElevationLevel, mode?: ThemeMode, opts?: LiftOptions): ViewStyle;
|
|
131
|
+
type GlowIntensity = 'tight' | 'subtle' | 'medium' | 'strong';
|
|
144
132
|
/**
|
|
145
|
-
*
|
|
146
|
-
*
|
|
147
|
-
* Creates a colored radial glow around an element, useful for:
|
|
148
|
-
* - Active recording indicators (orange glow)
|
|
149
|
-
* - Success states (green glow)
|
|
150
|
-
* - Error/danger indicators (red glow)
|
|
151
|
-
* - Focus rings and attention-drawing elements
|
|
152
|
-
*
|
|
153
|
-
* @param color - Glow color (hex string, e.g. '#FF7900')
|
|
154
|
-
* @param intensity - Glow intensity level
|
|
155
|
-
* @returns ViewStyle with platform-specific shadow properties
|
|
133
|
+
* A coloured radial glow around an element, for emphasis and active states:
|
|
134
|
+
* a live recording indicator, a success or error pulse, a focus halo.
|
|
156
135
|
*/
|
|
157
136
|
declare function getGlowShadow(color: string, intensity?: GlowIntensity): ViewStyle;
|
|
158
137
|
|
|
@@ -186,26 +165,42 @@ declare const lightThemeCSSVars: {
|
|
|
186
165
|
readonly '--color-brand-primary-light': "#FFA063";
|
|
187
166
|
readonly '--color-brand-primary-dark': "#DA5F00";
|
|
188
167
|
readonly '--color-brand-primary-subtle': "rgba(255, 121, 0, 0.08)";
|
|
168
|
+
readonly '--color-brand-primary-muted': "rgba(255, 121, 0, 0.30)";
|
|
169
|
+
readonly '--color-brand-primary-strong': "rgba(255, 121, 0, 0.50)";
|
|
189
170
|
readonly '--color-brand-secondary': "#307B9B";
|
|
190
171
|
readonly '--color-brand-secondary-light': "#2697B7";
|
|
191
172
|
readonly '--color-brand-secondary-dark': "#2A617F";
|
|
192
173
|
readonly '--color-brand-secondary-subtle': "rgba(48, 123, 155, 0.08)";
|
|
174
|
+
readonly '--color-brand-secondary-muted': "rgba(48, 123, 155, 0.30)";
|
|
175
|
+
readonly '--color-brand-secondary-strong': "rgba(48, 123, 155, 0.50)";
|
|
193
176
|
readonly '--color-on-brand-primary': "#FFFFFF";
|
|
194
177
|
readonly '--color-on-brand-secondary': "#FFFFFF";
|
|
178
|
+
readonly '--color-on-brand-primary-subtle': "#FF7900";
|
|
179
|
+
readonly '--color-on-brand-secondary-subtle': "#307B9B";
|
|
195
180
|
readonly '--color-status-success': "#2ED573";
|
|
196
181
|
readonly '--color-status-success-subtle': "#E3FFEE";
|
|
182
|
+
readonly '--color-status-success-muted': "rgba(46, 213, 115, 0.30)";
|
|
183
|
+
readonly '--color-status-success-strong': "rgba(46, 213, 115, 0.50)";
|
|
197
184
|
readonly '--color-status-live': "#2ED573";
|
|
198
185
|
readonly '--color-status-live-muted': "#22A444";
|
|
199
186
|
readonly '--color-status-error': "#D14343";
|
|
200
187
|
readonly '--color-status-error-subtle': "#FFF4F4";
|
|
188
|
+
readonly '--color-status-error-muted': "rgba(209, 67, 67, 0.30)";
|
|
189
|
+
readonly '--color-status-error-strong': "rgba(209, 67, 67, 0.50)";
|
|
201
190
|
readonly '--color-status-warning': "#F9B415";
|
|
202
191
|
readonly '--color-status-warning-subtle': "#FFF7DD";
|
|
192
|
+
readonly '--color-status-warning-muted': "rgba(249, 180, 21, 0.30)";
|
|
193
|
+
readonly '--color-status-warning-strong': "rgba(249, 180, 21, 0.50)";
|
|
203
194
|
readonly '--color-status-info': "#2196F3";
|
|
204
195
|
readonly '--color-status-info-subtle': "#EFF8FF";
|
|
205
|
-
readonly '--color-status-
|
|
196
|
+
readonly '--color-status-info-muted': "rgba(33, 150, 243, 0.30)";
|
|
197
|
+
readonly '--color-status-info-strong': "rgba(33, 150, 243, 0.50)";
|
|
198
|
+
readonly '--color-status-error-vivid': "#FF4757";
|
|
206
199
|
readonly '--color-status-error-vivid-light': "#E05254";
|
|
207
200
|
readonly '--color-status-error-vivid-dark': "#A4221C";
|
|
208
201
|
readonly '--color-status-error-vivid-subtle': "rgba(255, 71, 87, 0.12)";
|
|
202
|
+
readonly '--color-status-error-vivid-muted': "rgba(255, 71, 87, 0.30)";
|
|
203
|
+
readonly '--color-status-error-vivid-strong': "rgba(255, 71, 87, 0.50)";
|
|
209
204
|
readonly '--color-text-primary': "#121828";
|
|
210
205
|
readonly '--color-text-secondary': "#65748B";
|
|
211
206
|
readonly '--color-text-tertiary': "#A29F9D";
|
|
@@ -243,6 +238,10 @@ declare const lightThemeCSSVars: {
|
|
|
243
238
|
readonly '--color-on-status-error': "#FFFFFF";
|
|
244
239
|
readonly '--color-on-status-warning': "#FFFFFF";
|
|
245
240
|
readonly '--color-on-status-info': "#FFFFFF";
|
|
241
|
+
readonly '--color-on-status-success-subtle': "#2ED573";
|
|
242
|
+
readonly '--color-on-status-error-subtle': "#D14343";
|
|
243
|
+
readonly '--color-on-status-warning-subtle': "#F9B415";
|
|
244
|
+
readonly '--color-on-status-info-subtle': "#2196F3";
|
|
246
245
|
readonly '--color-result-improve': "#4caf50";
|
|
247
246
|
readonly '--color-result-improve-light': "rgba(76, 175, 80, 0.12)";
|
|
248
247
|
readonly '--color-result-improve-dark': "#248a24";
|
|
@@ -302,26 +301,42 @@ declare const darkThemeCSSVars: {
|
|
|
302
301
|
readonly '--color-brand-primary-light': "#FFA063";
|
|
303
302
|
readonly '--color-brand-primary-dark': "#DA5F00";
|
|
304
303
|
readonly '--color-brand-primary-subtle': "rgba(255, 121, 0, 0.12)";
|
|
304
|
+
readonly '--color-brand-primary-muted': "rgba(255, 121, 0, 0.30)";
|
|
305
|
+
readonly '--color-brand-primary-strong': "rgba(255, 121, 0, 0.50)";
|
|
305
306
|
readonly '--color-brand-secondary': "#307B9B";
|
|
306
307
|
readonly '--color-brand-secondary-light': "#2697B7";
|
|
307
308
|
readonly '--color-brand-secondary-dark': "#2A617F";
|
|
308
|
-
readonly '--color-brand-secondary-subtle': "rgba(
|
|
309
|
+
readonly '--color-brand-secondary-subtle': "rgba(34, 211, 238, 0.12)";
|
|
310
|
+
readonly '--color-brand-secondary-muted': "rgba(48, 123, 155, 0.30)";
|
|
311
|
+
readonly '--color-brand-secondary-strong': "rgba(48, 123, 155, 0.50)";
|
|
309
312
|
readonly '--color-on-brand-primary': "#FFFFFF";
|
|
310
313
|
readonly '--color-on-brand-secondary': "#FFFFFF";
|
|
314
|
+
readonly '--color-on-brand-primary-subtle': "#FF7900";
|
|
315
|
+
readonly '--color-on-brand-secondary-subtle': "#22D3EE";
|
|
311
316
|
readonly '--color-status-success': "#2ED573";
|
|
312
317
|
readonly '--color-status-success-subtle': "rgba(46, 213, 115, 0.12)";
|
|
318
|
+
readonly '--color-status-success-muted': "rgba(46, 213, 115, 0.30)";
|
|
319
|
+
readonly '--color-status-success-strong': "rgba(46, 213, 115, 0.50)";
|
|
313
320
|
readonly '--color-status-live': "#2ED573";
|
|
314
321
|
readonly '--color-status-live-muted': "#22A444";
|
|
315
322
|
readonly '--color-status-error': "#D14343";
|
|
316
|
-
readonly '--color-status-error-subtle': "rgba(
|
|
323
|
+
readonly '--color-status-error-subtle': "rgba(247, 113, 117, 0.08)";
|
|
324
|
+
readonly '--color-status-error-muted': "rgba(209, 67, 67, 0.30)";
|
|
325
|
+
readonly '--color-status-error-strong': "rgba(209, 67, 67, 0.50)";
|
|
317
326
|
readonly '--color-status-warning': "#F9B415";
|
|
318
327
|
readonly '--color-status-warning-subtle': "rgba(249, 180, 21, 0.12)";
|
|
328
|
+
readonly '--color-status-warning-muted': "rgba(249, 180, 21, 0.30)";
|
|
329
|
+
readonly '--color-status-warning-strong': "rgba(249, 180, 21, 0.50)";
|
|
319
330
|
readonly '--color-status-info': "#2196F3";
|
|
320
|
-
readonly '--color-status-info-subtle': "rgba(
|
|
321
|
-
readonly '--color-status-
|
|
331
|
+
readonly '--color-status-info-subtle': "rgba(120, 194, 255, 0.12)";
|
|
332
|
+
readonly '--color-status-info-muted': "rgba(33, 150, 243, 0.30)";
|
|
333
|
+
readonly '--color-status-info-strong': "rgba(33, 150, 243, 0.50)";
|
|
334
|
+
readonly '--color-status-error-vivid': "#FF4757";
|
|
322
335
|
readonly '--color-status-error-vivid-light': "#E05254";
|
|
323
336
|
readonly '--color-status-error-vivid-dark': "#A4221C";
|
|
324
337
|
readonly '--color-status-error-vivid-subtle': "rgba(255, 71, 87, 0.12)";
|
|
338
|
+
readonly '--color-status-error-vivid-muted': "rgba(255, 71, 87, 0.30)";
|
|
339
|
+
readonly '--color-status-error-vivid-strong': "rgba(255, 71, 87, 0.50)";
|
|
325
340
|
readonly '--color-text-primary': "#F9F6F3";
|
|
326
341
|
readonly '--color-text-secondary': "#A29F9D";
|
|
327
342
|
readonly '--color-text-tertiary': "#888684";
|
|
@@ -359,6 +374,10 @@ declare const darkThemeCSSVars: {
|
|
|
359
374
|
readonly '--color-on-status-error': "#FFFFFF";
|
|
360
375
|
readonly '--color-on-status-warning': "#FFFFFF";
|
|
361
376
|
readonly '--color-on-status-info': "#FFFFFF";
|
|
377
|
+
readonly '--color-on-status-success-subtle': "#2ED573";
|
|
378
|
+
readonly '--color-on-status-error-subtle': "#F77175";
|
|
379
|
+
readonly '--color-on-status-warning-subtle': "#F9B415";
|
|
380
|
+
readonly '--color-on-status-info-subtle': "#78C2FF";
|
|
362
381
|
readonly '--color-result-improve': "#4caf50";
|
|
363
382
|
readonly '--color-result-improve-light': "rgba(76, 175, 80, 0.16)";
|
|
364
383
|
readonly '--color-result-improve-dark': "#248a24";
|
|
@@ -418,26 +437,42 @@ declare function getThemeCSSVars(mode: ThemeMode): {
|
|
|
418
437
|
readonly '--color-brand-primary-light': "#FFA063";
|
|
419
438
|
readonly '--color-brand-primary-dark': "#DA5F00";
|
|
420
439
|
readonly '--color-brand-primary-subtle': "rgba(255, 121, 0, 0.08)";
|
|
440
|
+
readonly '--color-brand-primary-muted': "rgba(255, 121, 0, 0.30)";
|
|
441
|
+
readonly '--color-brand-primary-strong': "rgba(255, 121, 0, 0.50)";
|
|
421
442
|
readonly '--color-brand-secondary': "#307B9B";
|
|
422
443
|
readonly '--color-brand-secondary-light': "#2697B7";
|
|
423
444
|
readonly '--color-brand-secondary-dark': "#2A617F";
|
|
424
445
|
readonly '--color-brand-secondary-subtle': "rgba(48, 123, 155, 0.08)";
|
|
446
|
+
readonly '--color-brand-secondary-muted': "rgba(48, 123, 155, 0.30)";
|
|
447
|
+
readonly '--color-brand-secondary-strong': "rgba(48, 123, 155, 0.50)";
|
|
425
448
|
readonly '--color-on-brand-primary': "#FFFFFF";
|
|
426
449
|
readonly '--color-on-brand-secondary': "#FFFFFF";
|
|
450
|
+
readonly '--color-on-brand-primary-subtle': "#FF7900";
|
|
451
|
+
readonly '--color-on-brand-secondary-subtle': "#307B9B";
|
|
427
452
|
readonly '--color-status-success': "#2ED573";
|
|
428
453
|
readonly '--color-status-success-subtle': "#E3FFEE";
|
|
454
|
+
readonly '--color-status-success-muted': "rgba(46, 213, 115, 0.30)";
|
|
455
|
+
readonly '--color-status-success-strong': "rgba(46, 213, 115, 0.50)";
|
|
429
456
|
readonly '--color-status-live': "#2ED573";
|
|
430
457
|
readonly '--color-status-live-muted': "#22A444";
|
|
431
458
|
readonly '--color-status-error': "#D14343";
|
|
432
459
|
readonly '--color-status-error-subtle': "#FFF4F4";
|
|
460
|
+
readonly '--color-status-error-muted': "rgba(209, 67, 67, 0.30)";
|
|
461
|
+
readonly '--color-status-error-strong': "rgba(209, 67, 67, 0.50)";
|
|
433
462
|
readonly '--color-status-warning': "#F9B415";
|
|
434
463
|
readonly '--color-status-warning-subtle': "#FFF7DD";
|
|
464
|
+
readonly '--color-status-warning-muted': "rgba(249, 180, 21, 0.30)";
|
|
465
|
+
readonly '--color-status-warning-strong': "rgba(249, 180, 21, 0.50)";
|
|
435
466
|
readonly '--color-status-info': "#2196F3";
|
|
436
467
|
readonly '--color-status-info-subtle': "#EFF8FF";
|
|
437
|
-
readonly '--color-status-
|
|
468
|
+
readonly '--color-status-info-muted': "rgba(33, 150, 243, 0.30)";
|
|
469
|
+
readonly '--color-status-info-strong': "rgba(33, 150, 243, 0.50)";
|
|
470
|
+
readonly '--color-status-error-vivid': "#FF4757";
|
|
438
471
|
readonly '--color-status-error-vivid-light': "#E05254";
|
|
439
472
|
readonly '--color-status-error-vivid-dark': "#A4221C";
|
|
440
473
|
readonly '--color-status-error-vivid-subtle': "rgba(255, 71, 87, 0.12)";
|
|
474
|
+
readonly '--color-status-error-vivid-muted': "rgba(255, 71, 87, 0.30)";
|
|
475
|
+
readonly '--color-status-error-vivid-strong': "rgba(255, 71, 87, 0.50)";
|
|
441
476
|
readonly '--color-text-primary': "#121828";
|
|
442
477
|
readonly '--color-text-secondary': "#65748B";
|
|
443
478
|
readonly '--color-text-tertiary': "#A29F9D";
|
|
@@ -475,6 +510,10 @@ declare function getThemeCSSVars(mode: ThemeMode): {
|
|
|
475
510
|
readonly '--color-on-status-error': "#FFFFFF";
|
|
476
511
|
readonly '--color-on-status-warning': "#FFFFFF";
|
|
477
512
|
readonly '--color-on-status-info': "#FFFFFF";
|
|
513
|
+
readonly '--color-on-status-success-subtle': "#2ED573";
|
|
514
|
+
readonly '--color-on-status-error-subtle': "#D14343";
|
|
515
|
+
readonly '--color-on-status-warning-subtle': "#F9B415";
|
|
516
|
+
readonly '--color-on-status-info-subtle': "#2196F3";
|
|
478
517
|
readonly '--color-result-improve': "#4caf50";
|
|
479
518
|
readonly '--color-result-improve-light': "rgba(76, 175, 80, 0.12)";
|
|
480
519
|
readonly '--color-result-improve-dark': "#248a24";
|
|
@@ -533,26 +572,42 @@ declare function getThemeCSSVars(mode: ThemeMode): {
|
|
|
533
572
|
readonly '--color-brand-primary-light': "#FFA063";
|
|
534
573
|
readonly '--color-brand-primary-dark': "#DA5F00";
|
|
535
574
|
readonly '--color-brand-primary-subtle': "rgba(255, 121, 0, 0.12)";
|
|
575
|
+
readonly '--color-brand-primary-muted': "rgba(255, 121, 0, 0.30)";
|
|
576
|
+
readonly '--color-brand-primary-strong': "rgba(255, 121, 0, 0.50)";
|
|
536
577
|
readonly '--color-brand-secondary': "#307B9B";
|
|
537
578
|
readonly '--color-brand-secondary-light': "#2697B7";
|
|
538
579
|
readonly '--color-brand-secondary-dark': "#2A617F";
|
|
539
|
-
readonly '--color-brand-secondary-subtle': "rgba(
|
|
580
|
+
readonly '--color-brand-secondary-subtle': "rgba(34, 211, 238, 0.12)";
|
|
581
|
+
readonly '--color-brand-secondary-muted': "rgba(48, 123, 155, 0.30)";
|
|
582
|
+
readonly '--color-brand-secondary-strong': "rgba(48, 123, 155, 0.50)";
|
|
540
583
|
readonly '--color-on-brand-primary': "#FFFFFF";
|
|
541
584
|
readonly '--color-on-brand-secondary': "#FFFFFF";
|
|
585
|
+
readonly '--color-on-brand-primary-subtle': "#FF7900";
|
|
586
|
+
readonly '--color-on-brand-secondary-subtle': "#22D3EE";
|
|
542
587
|
readonly '--color-status-success': "#2ED573";
|
|
543
588
|
readonly '--color-status-success-subtle': "rgba(46, 213, 115, 0.12)";
|
|
589
|
+
readonly '--color-status-success-muted': "rgba(46, 213, 115, 0.30)";
|
|
590
|
+
readonly '--color-status-success-strong': "rgba(46, 213, 115, 0.50)";
|
|
544
591
|
readonly '--color-status-live': "#2ED573";
|
|
545
592
|
readonly '--color-status-live-muted': "#22A444";
|
|
546
593
|
readonly '--color-status-error': "#D14343";
|
|
547
|
-
readonly '--color-status-error-subtle': "rgba(
|
|
594
|
+
readonly '--color-status-error-subtle': "rgba(247, 113, 117, 0.08)";
|
|
595
|
+
readonly '--color-status-error-muted': "rgba(209, 67, 67, 0.30)";
|
|
596
|
+
readonly '--color-status-error-strong': "rgba(209, 67, 67, 0.50)";
|
|
548
597
|
readonly '--color-status-warning': "#F9B415";
|
|
549
598
|
readonly '--color-status-warning-subtle': "rgba(249, 180, 21, 0.12)";
|
|
599
|
+
readonly '--color-status-warning-muted': "rgba(249, 180, 21, 0.30)";
|
|
600
|
+
readonly '--color-status-warning-strong': "rgba(249, 180, 21, 0.50)";
|
|
550
601
|
readonly '--color-status-info': "#2196F3";
|
|
551
|
-
readonly '--color-status-info-subtle': "rgba(
|
|
552
|
-
readonly '--color-status-
|
|
602
|
+
readonly '--color-status-info-subtle': "rgba(120, 194, 255, 0.12)";
|
|
603
|
+
readonly '--color-status-info-muted': "rgba(33, 150, 243, 0.30)";
|
|
604
|
+
readonly '--color-status-info-strong': "rgba(33, 150, 243, 0.50)";
|
|
605
|
+
readonly '--color-status-error-vivid': "#FF4757";
|
|
553
606
|
readonly '--color-status-error-vivid-light': "#E05254";
|
|
554
607
|
readonly '--color-status-error-vivid-dark': "#A4221C";
|
|
555
608
|
readonly '--color-status-error-vivid-subtle': "rgba(255, 71, 87, 0.12)";
|
|
609
|
+
readonly '--color-status-error-vivid-muted': "rgba(255, 71, 87, 0.30)";
|
|
610
|
+
readonly '--color-status-error-vivid-strong': "rgba(255, 71, 87, 0.50)";
|
|
556
611
|
readonly '--color-text-primary': "#F9F6F3";
|
|
557
612
|
readonly '--color-text-secondary': "#A29F9D";
|
|
558
613
|
readonly '--color-text-tertiary': "#888684";
|
|
@@ -590,6 +645,10 @@ declare function getThemeCSSVars(mode: ThemeMode): {
|
|
|
590
645
|
readonly '--color-on-status-error': "#FFFFFF";
|
|
591
646
|
readonly '--color-on-status-warning': "#FFFFFF";
|
|
592
647
|
readonly '--color-on-status-info': "#FFFFFF";
|
|
648
|
+
readonly '--color-on-status-success-subtle': "#2ED573";
|
|
649
|
+
readonly '--color-on-status-error-subtle': "#F77175";
|
|
650
|
+
readonly '--color-on-status-warning-subtle': "#F9B415";
|
|
651
|
+
readonly '--color-on-status-info-subtle': "#78C2FF";
|
|
593
652
|
readonly '--color-result-improve': "#4caf50";
|
|
594
653
|
readonly '--color-result-improve-light': "rgba(76, 175, 80, 0.16)";
|
|
595
654
|
readonly '--color-result-improve-dark': "#248a24";
|
|
@@ -751,8 +810,10 @@ type ThemeConfig = typeof gluestackConfig;
|
|
|
751
810
|
*
|
|
752
811
|
* Kept: grain, rim-light, contact shadow.
|
|
753
812
|
*
|
|
754
|
-
* See sources/design/surface-system-north-star.md §4 and
|
|
755
|
-
* sources/runbooks/VW-99-depth-wall-calibration.md
|
|
813
|
+
* See `sources/design/surface-system-north-star.md` §4 and
|
|
814
|
+
* `sources/runbooks/VW-99-depth-wall-calibration.md`. Those paths are relative to
|
|
815
|
+
* the `voltras-workspace` active-work initiative (`active-work open voltras-workspace`), not this repo —
|
|
816
|
+
* titan-design has no `sources/` directory, so they do not resolve from here.
|
|
756
817
|
*/
|
|
757
818
|
|
|
758
819
|
/**
|
|
@@ -837,6 +898,19 @@ declare function insetWell(tone?: string): ViewStyle;
|
|
|
837
898
|
* wrong, so grain and shadow carry the material alone.
|
|
838
899
|
*/
|
|
839
900
|
declare function barPaper(color: string, flip?: boolean): ViewStyle;
|
|
901
|
+
/**
|
|
902
|
+
* A POST-IT card: a matte tinted sheet with a crisp rim, a defined contact
|
|
903
|
+
* shadow, and a deliberate CANT (`deg`) so it reads as a stuck note — where a
|
|
904
|
+
* small unit of data wants to feel pinned to the surface (alerts, next-set). A
|
|
905
|
+
* degree or two, not a fraction, so the tilt is intentional rather than a bug.
|
|
906
|
+
*/
|
|
907
|
+
declare function postIt(tone?: string, deg?: number): ViewStyle;
|
|
908
|
+
/**
|
|
909
|
+
* DEBOSSED (engraved) text: a 1px light highlight dropped just below the glyphs
|
|
910
|
+
* so a label reads as pressed INTO the surface. Deliberate, for section eyebrows
|
|
911
|
+
* on a matte plane — not body copy. Pair with a tertiary/dim text colour.
|
|
912
|
+
*/
|
|
913
|
+
declare const debossLabel: TextStyle;
|
|
840
914
|
|
|
841
915
|
/**
|
|
842
916
|
* Colour math shared by the depth system.
|
|
@@ -1064,7 +1138,7 @@ interface ThemePresetColors {
|
|
|
1064
1138
|
'hairline-subtle'?: string;
|
|
1065
1139
|
'hairline-strong'?: string;
|
|
1066
1140
|
'border-focus'?: string;
|
|
1067
|
-
|
|
1141
|
+
divider?: string;
|
|
1068
1142
|
[key: `${string}`]: string | undefined;
|
|
1069
1143
|
}
|
|
1070
1144
|
interface ThemePresetFonts {
|
|
@@ -1103,8 +1177,16 @@ interface ThemePreset {
|
|
|
1103
1177
|
fontImport?: string;
|
|
1104
1178
|
}
|
|
1105
1179
|
|
|
1180
|
+
/**
|
|
1181
|
+
* @deprecated Use `ThemeProvider` with semantic tokens — removed once audiobook
|
|
1182
|
+
* migrates off presets (AW-129).
|
|
1183
|
+
*/
|
|
1106
1184
|
declare function applyThemePreset(preset: ThemePreset): () => void;
|
|
1107
1185
|
|
|
1186
|
+
/**
|
|
1187
|
+
* @deprecated Use `ThemeProvider` with semantic tokens — removed once audiobook
|
|
1188
|
+
* migrates off presets (AW-129).
|
|
1189
|
+
*/
|
|
1108
1190
|
declare const defaultPreset: ThemePreset;
|
|
1109
1191
|
|
|
1110
1192
|
/**
|
|
@@ -1112,7 +1194,10 @@ declare const defaultPreset: ThemePreset;
|
|
|
1112
1194
|
*
|
|
1113
1195
|
* Warm copper/patina aesthetic inspired by vintage audio equipment
|
|
1114
1196
|
* and reading lounges. Dark-mode only design with editorial typography.
|
|
1197
|
+
*
|
|
1198
|
+
* @deprecated Use `ThemeProvider` with semantic tokens — removed once audiobook
|
|
1199
|
+
* migrates off presets (AW-129).
|
|
1115
1200
|
*/
|
|
1116
1201
|
declare const audiobookPreset: ThemePreset;
|
|
1117
1202
|
|
|
1118
|
-
export { type
|
|
1203
|
+
export { type CssPropertyEntry, type CssPropertyManifest, ELEVATION_PLANE, type ElevationLevel, FLOATING_ELEVATION_MIN, FLOATING_LIFT_MIN, type GlowIntensity, type GradientStyle, LIFT_RIM_ALPHA, type LiftOptions, type LiftStep, type ManifestValidationResult, PLANE_ORDER, PRESSED_ELEVATION_LEVEL, SURFACE_LEVEL_TOKEN, type ShadowIntensity, type SurfaceLevel, type ThemeConfig, ThemeMode, type ThemePreset, type ThemePresetColors, type ThemePresetFonts, type ThemePresetRadii, type ThemePresetShadows, ThemeProvider, type ThemeProviderMode, type ThemeProviderProps, type VariantAxes, type VariantOverride, applyThemePreset, audiobookPreset, barPaper, darkThemeCSSVars, darken, debossLabel, defaultPreset, elevationPlane, getElevationShadow, getElevationSurface, getGlowShadow, getHoverColors, getPressedRecessShadow, getSemanticColors, getThemeCSSVars, gluestackConfig, grainForTone, grainOpacityForTone, hexToRgb, hsvToRgb, insetWell, isCssPropertyManifest, isDark, liftShadow, liftStyle, lightThemeCSSVars, lighten, linearGradient, paperSheet, postIt, pressedLevel, raisedLevel, resolveColor, rgbToHex, rgbToHsv, surfaceBackground, surfaceGradient, validateCssPropertyManifest };
|