diff --git a/src/stories/Theming.stories.tsx b/src/stories/Theming.stories.tsx
index f26e849b2..41719e3cd 100644
--- a/src/stories/Theming.stories.tsx
+++ b/src/stories/Theming.stories.tsx
@@ -251,7 +251,7 @@ function StoryPage({
{title}
- {description}
+ {description}
{children}
@@ -317,7 +317,7 @@ function ColorResolution({ resolved }: { resolved?: Tokens }) {
{palette.pastel ? (
) : null}
@@ -469,7 +469,7 @@ function AccentSourceControls({ resolved }: { resolved?: Tokens }) {
// Clearing the field is a change of path, so it lands back on a hue seed
@@ -497,7 +497,7 @@ function AccentSourceControls({ resolved }: { resolved?: Tokens }) {
// No value in the label: the slider already prints it on the right, and
// the same number twice on one line reads as two facts.
label="Hue"
- tooltip="Drives the whole accent family, `primary` / `purple` / `special`, and the brand-tinted odds and ends — the focus ring, the loading faces, the disabled chip."
+ tooltip="Sets the brand hue used by the accent, primary, purple, and special colors, plus focus and loading states."
value={Math.round(palette.hue)}
onChange={(hue) =>
setPalette((config) => ({
@@ -511,7 +511,7 @@ function AccentSourceControls({ resolved }: { resolved?: Tokens }) {
{palette.pastel ? null : (
setPalette((config) => ({
@@ -547,6 +547,7 @@ function BaseSourceControls() {
labelPosition="split"
type="button"
value={isOwn ? 'own' : 'accent'}
+ tooltip="Follow accent derives neutral UI colors from the accent seed. Own lets you set a separate base hue or color for surfaces, text, borders, and placeholders."
onChange={(next) =>
setPalette(({ base, ...config }) =>
next === 'own'
@@ -573,7 +574,7 @@ function BaseSourceControls() {
// Same shape as the accent field above, and for the same reason: one seed
@@ -598,7 +599,7 @@ function BaseSourceControls() {
<>
setPalette((config) => ({
@@ -612,8 +613,8 @@ function BaseSourceControls() {
label="Saturation"
tooltip={
palette.surfaceMode === 'tinted'
- ? `The same 0–100 scale the accent saturation uses, on the chrome alone. The shipped value is 12 — a faint tint is what a neutral surface is — so the interesting range is the low end, and past about 25 the base colors run out of scale and converge.`
- : `Reaches surface-2…surface-4, the borders and the text ramp, but not the page surface: at the end of the tone scale there is no room for chroma. Switch Surfaces to Tinted to give it some.`
+ ? 'Controls how strongly the base hue tints neutral UI colors. Values above about 25 produce little visible change because the base palette intentionally stays near-neutral.'
+ : 'Tints elevated surfaces, borders, and text, but not the page background. Choose Tinted surfaces to make the base hue visible on the page background too.'
}
// The clip a derived base color gets, so the manual and the derived
// routes agree on what the top of the range means. `surface-inverse`
@@ -762,21 +763,21 @@ function PaletteModeTabs() {
Pastel
Advanced
Color
@@ -807,7 +808,7 @@ function GlobalControls() {
labelPosition="split"
type="button"
value={palette.surfaceMode}
- tooltip="Tinted moves the whole surface ramp two tones off the end of the tone scale — the neutral surfaces, the status themes' tinted ones, and the mirrored surface the syntax palette solves against. Not a lightness change: chroma needs distance from the extreme to exist at all, so a neutral light page is white whatever the base saturation asks for. Two tones is the cheapest room in which the base hue becomes visible."
+ tooltip="Neutral keeps the page background at the end of the tone scale. Tinted shifts the surface ramp slightly inward, giving the base hue room to appear across neutral and status surfaces."
onChange={(surfaceMode) =>
setPalette((config) => ({
...config,
@@ -964,8 +965,8 @@ function ContrastControls() {
label="Contrast level"
tooltip={
hasContrastTier()
- ? 'The level moves the normal colors only. The high-contrast tier is the true high-contrast resolution at every level, so the two compose — a contrast preference still escalates on top of wherever the slider puts the baseline.'
- : 'One tier at level 100: the normal colors already are the high-contrast ones here, so data-contrast="high" and prefers-contrast: more have nothing left to escalate to. Every level below this keeps both tiers.'
+ ? 'Raises the normal palette from its shipped contrast at 0 toward the high-contrast palette at 100. The separate high-contrast tier remains available until the level reaches 100.'
+ : 'At 100, the normal palette already matches the high-contrast palette, so only one tier is generated. Lower the level to preview normal and high contrast separately.'
}
value={level}
onChange={(contrastLevel) =>
@@ -1524,7 +1525,7 @@ function StatusThemeButton({
theme="current"
size="small"
color={`#${name}-text`}
- tooltip={`Tune the ${name} theme — currently ${Math.round(seed.hue)}°`}
+ tooltip={`Edit the ${name} theme. Current hue: ${Math.round(seed.hue)}°.`}
icon={
// Clearing lands back on a hue pinned where the color left it. There is
@@ -1558,7 +1559,7 @@ function StatusThemeButton({
) : (
setPalette(
@@ -1588,14 +1589,14 @@ function StatusThemeButton({
Saturation {pinnedSaturation} — pinned
) : null
) : (
setPalette(
@@ -1656,7 +1657,11 @@ function ExportButton() {
mobileType="tray"
placement="bottom start"
>
- }>
+ }
+ tooltip="Open a copyable setPaletteConfig(...) snippet."
+ >
Export