+ {label} +
+{note}
+diff --git a/apps/docs/src/components/alert.stories.tsx b/apps/docs/src/components/alert.stories.tsx index 7abd7bc..919734c 100644 --- a/apps/docs/src/components/alert.stories.tsx +++ b/apps/docs/src/components/alert.stories.tsx @@ -31,6 +31,12 @@ const meta = { } }, parameters: { + docs: { + description: { + component: + "Alert is the inline callout surface for status, guidance, and blocking information that should stay inside the current page flow. It now enters with a restrained rise/fade and uses a softly plated icon treatment so state changes feel present without turning the component into a hero panel." + } + }, layout: "centered" }, tags: ["autodocs"] diff --git a/apps/docs/src/components/avatar.stories.tsx b/apps/docs/src/components/avatar.stories.tsx index d3c0cff..5f00882 100644 --- a/apps/docs/src/components/avatar.stories.tsx +++ b/apps/docs/src/components/avatar.stories.tsx @@ -30,6 +30,12 @@ const meta = { } }, parameters: { + docs: { + description: { + component: + "Avatar is the compact identity surface for people, teams, and owners. The treatment stays quiet, but the image now resolves over the fallback with a soft crossfade so identity changes feel polished instead of abrupt." + } + }, layout: "centered" }, tags: ["autodocs"] diff --git a/apps/docs/src/components/badge.stories.tsx b/apps/docs/src/components/badge.stories.tsx index 5ee265c..50c957d 100644 --- a/apps/docs/src/components/badge.stories.tsx +++ b/apps/docs/src/components/badge.stories.tsx @@ -34,6 +34,12 @@ const meta = { } }, parameters: { + docs: { + description: { + component: + "Badge is the smallest status and chip surface in the system. It still reads as a compact token, but subtle and outline badges now carry a lighter tactile response so filter-like and live-status usage stops feeling mechanically flat." + } + }, layout: "centered" }, tags: ["autodocs"] @@ -70,3 +76,40 @@ export const Matrix: Story = { ) }; + +export const LiveAndFilters: Story = { + parameters: { + docs: { + description: { + story: + "Use `Badge` as a small status token by default, and as a tactile chip when it is rendered through `asChild` on an actual interactive element. The motion should stay restrained and chip-like, not button-heavy." + } + } + }, + render: () => ( +
+ Cached suggestions stay visible while the workspace search refreshes. +
+ +Owner
{row.owner}
{row.ownerEmail}
Next gate
@@ -307,8 +307,8 @@ function DataTablePlayground() { } return ( -Standalone workflow @@ -321,7 +321,7 @@ function DataTablePlayground() { exercising built-in search, sorting, pagination, selection, and toolbar actions.
Last action
@@ -329,7 +329,7 @@ function DataTablePlayground() {+ {label} +
+{note}
++ Asset Upload +
++ Use the same component for classic uploads and segmented dashboard meters by swapping + only the pattern instead of reaching for a separate one-off implementation. +
+Determinate
- -Indeterminate
- -Complete
- ++ Progress anatomy +
++ The public styling contract stays intentionally small: a root track and one indicator + layer, with the data attributes carrying the meaningful state. +
+
+ data-slot="root" is the tonal
+ track. It exposes data-size,{" "}
+ data-pattern,{" "}
+ data-tone,{" "}
+ data-variant, and{" "}
+ data-state so consumers can
+ respond to contract-level state instead of incidental class names.
+
+ data-slot="indicator" is the
+ filled value layer for the linear pattern. It mirrors pattern, size, variant, and
+ state so tests and downstream themes can target the active bar without reaching into
+ private markup.
+
+ In segmented mode, data-slot="segments"{" "}
+ wraps the repeated meter cells and each{" "}
+ data-slot="segment" exposes
+ active state for dashboard-style styling and assertions.
+
+ Motion review +
++ This surface is still a simple fixed-choice select. The motion should clarify focus and + settled selection without turning the menu into an animated showcase. +
++ Selection ready +
+