@nadicodeai/ui 12.1.111 → 12.1.114
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/AGENTS.md +11 -9
- package/README.md +3 -2
- package/dist/components/account-menu.d.ts +1 -1
- package/dist/components/account-menu.js +1 -1
- package/dist/components/action-menu.d.ts +2 -2
- package/dist/components/action-menu.js +2 -2
- package/dist/components/activity-feed.d.ts +1 -1
- package/dist/components/activity-feed.js +1 -1
- package/dist/components/agent-card.d.ts +5 -3
- package/dist/components/agent-card.d.ts.map +1 -1
- package/dist/components/agent-card.js +5 -3
- package/dist/components/agent-list-row.d.ts +2 -2
- package/dist/components/agent-list-row.js +2 -2
- package/dist/components/agent-orb.d.ts +31 -7
- package/dist/components/agent-orb.d.ts.map +1 -1
- package/dist/components/agent-orb.js +29 -5
- package/dist/components/agent-profile.d.ts +6 -2
- package/dist/components/agent-profile.d.ts.map +1 -1
- package/dist/components/agent-profile.js +6 -2
- package/dist/components/aspect-ratio.d.ts +7 -3
- package/dist/components/aspect-ratio.d.ts.map +1 -1
- package/dist/components/aspect-ratio.js +7 -3
- package/dist/components/avatar.d.ts +11 -5
- package/dist/components/avatar.d.ts.map +1 -1
- package/dist/components/avatar.js +11 -5
- package/dist/components/breadcrumb.d.ts +1 -1
- package/dist/components/breadcrumb.js +1 -1
- package/dist/components/button.d.ts +23 -10
- package/dist/components/button.d.ts.map +1 -1
- package/dist/components/button.js +23 -10
- package/dist/components/card-row.d.ts +4 -2
- package/dist/components/card-row.d.ts.map +1 -1
- package/dist/components/card-row.js +4 -2
- package/dist/components/card.d.ts +1 -1
- package/dist/components/card.js +1 -1
- package/dist/components/carousel.d.ts +9 -4
- package/dist/components/carousel.d.ts.map +1 -1
- package/dist/components/carousel.js +9 -4
- package/dist/components/catalog-drawer.d.ts +1 -1
- package/dist/components/catalog-drawer.js +1 -1
- package/dist/components/chart-card.d.ts +1 -1
- package/dist/components/chart-card.js +1 -1
- package/dist/components/checkbox.d.ts +2 -1
- package/dist/components/checkbox.d.ts.map +1 -1
- package/dist/components/checkbox.js +2 -1
- package/dist/components/choicebox.d.ts +9 -5
- package/dist/components/choicebox.d.ts.map +1 -1
- package/dist/components/choicebox.js +9 -5
- package/dist/components/clearable-input.d.ts +2 -1
- package/dist/components/clearable-input.d.ts.map +1 -1
- package/dist/components/clearable-input.js +2 -1
- package/dist/components/code-block.d.ts +13 -10
- package/dist/components/code-block.d.ts.map +1 -1
- package/dist/components/code-block.js +13 -10
- package/dist/components/collection-filters.d.ts +1 -1
- package/dist/components/collection-filters.js +1 -1
- package/dist/components/collection-search.d.ts +11 -7
- package/dist/components/collection-search.d.ts.map +1 -1
- package/dist/components/collection-search.js +11 -7
- package/dist/components/combobox.d.ts +4 -1
- package/dist/components/combobox.d.ts.map +1 -1
- package/dist/components/combobox.js +4 -1
- package/dist/components/command.d.ts +1 -1
- package/dist/components/command.js +1 -1
- package/dist/components/company-card.d.ts +28 -5
- package/dist/components/company-card.d.ts.map +1 -1
- package/dist/components/company-card.js +28 -5
- package/dist/components/confirm-dialog.d.ts +3 -2
- package/dist/components/confirm-dialog.d.ts.map +1 -1
- package/dist/components/confirm-dialog.js +2 -2
- package/dist/components/copy-button.d.ts +2 -2
- package/dist/components/copy-button.js +2 -2
- package/dist/components/data-table.d.ts +2 -2
- package/dist/components/data-table.js +2 -2
- package/dist/components/drawer.d.ts +4 -4
- package/dist/components/drawer.d.ts.map +1 -1
- package/dist/components/drawer.js +3 -3
- package/dist/components/dropdown-menu.d.ts +2 -2
- package/dist/components/dropdown-menu.js +2 -2
- package/dist/components/empty-state.d.ts +2 -2
- package/dist/components/empty-state.js +2 -2
- package/dist/components/field.d.ts +4 -0
- package/dist/components/field.d.ts.map +1 -1
- package/dist/components/field.js +4 -0
- package/dist/components/file-diff.d.ts +5 -2
- package/dist/components/file-diff.d.ts.map +1 -1
- package/dist/components/file-diff.js +5 -2
- package/dist/components/form-dialog.d.ts +1 -1
- package/dist/components/form-dialog.js +1 -1
- package/dist/components/form-drawer.d.ts +1 -1
- package/dist/components/form-drawer.js +1 -1
- package/dist/components/gauge.d.ts +9 -7
- package/dist/components/gauge.d.ts.map +1 -1
- package/dist/components/gauge.js +9 -7
- package/dist/components/hover-card.d.ts +5 -2
- package/dist/components/hover-card.d.ts.map +1 -1
- package/dist/components/hover-card.js +5 -2
- package/dist/components/identity-mark.d.ts +3 -3
- package/dist/components/identity-mark.js +3 -3
- package/dist/components/input-group.d.ts +1 -0
- package/dist/components/input-group.d.ts.map +1 -1
- package/dist/components/input-group.js +1 -0
- package/dist/components/input-otp.d.ts +5 -3
- package/dist/components/input-otp.d.ts.map +1 -1
- package/dist/components/input-otp.js +5 -3
- package/dist/components/input.d.ts +4 -2
- package/dist/components/input.d.ts.map +1 -1
- package/dist/components/input.js +4 -2
- package/dist/components/item.d.ts +1 -1
- package/dist/components/item.js +1 -1
- package/dist/components/kbd.d.ts +4 -2
- package/dist/components/kbd.d.ts.map +1 -1
- package/dist/components/kbd.js +4 -2
- package/dist/components/label.d.ts +8 -3
- package/dist/components/label.d.ts.map +1 -1
- package/dist/components/label.js +8 -3
- package/dist/components/load-more-button.d.ts +3 -2
- package/dist/components/load-more-button.d.ts.map +1 -1
- package/dist/components/load-more-button.js +3 -2
- package/dist/components/message-notice.d.ts +1 -1
- package/dist/components/message-notice.js +1 -1
- package/dist/components/multi-select.d.ts +6 -4
- package/dist/components/multi-select.d.ts.map +1 -1
- package/dist/components/multi-select.js +6 -4
- package/dist/components/notice-banner.d.ts +2 -2
- package/dist/components/notice-banner.js +2 -2
- package/dist/components/object-workspace.d.ts +3 -3
- package/dist/components/object-workspace.d.ts.map +1 -1
- package/dist/components/object-workspace.js +2 -2
- package/dist/components/pairing-code.d.ts +2 -2
- package/dist/components/pairing-code.js +2 -2
- package/dist/components/picture-label.d.ts +3 -2
- package/dist/components/picture-label.d.ts.map +1 -1
- package/dist/components/picture-label.js +3 -2
- package/dist/components/popover.d.ts +7 -3
- package/dist/components/popover.d.ts.map +1 -1
- package/dist/components/popover.js +7 -3
- package/dist/components/progress-checklist.d.ts +1 -1
- package/dist/components/progress-checklist.js +1 -1
- package/dist/components/progress.d.ts +4 -2
- package/dist/components/progress.d.ts.map +1 -1
- package/dist/components/progress.js +4 -2
- package/dist/components/qr-code.d.ts +5 -2
- package/dist/components/qr-code.d.ts.map +1 -1
- package/dist/components/qr-code.js +5 -2
- package/dist/components/radio-group.d.ts +8 -5
- package/dist/components/radio-group.d.ts.map +1 -1
- package/dist/components/radio-group.js +8 -5
- package/dist/components/record-identity.d.ts +1 -1
- package/dist/components/record-identity.js +1 -1
- package/dist/components/record-list.d.ts +2 -2
- package/dist/components/record-list.js +2 -2
- package/dist/components/record-sheet.d.ts +2 -2
- package/dist/components/record-sheet.js +2 -2
- package/dist/components/record-time.d.ts +1 -1
- package/dist/components/record-time.js +1 -1
- package/dist/components/resizable.d.ts +2 -2
- package/dist/components/resizable.js +2 -2
- package/dist/components/row-edit-form.d.ts +1 -1
- package/dist/components/row-edit-form.js +1 -1
- package/dist/components/run-timeline.d.ts +2 -2
- package/dist/components/run-timeline.js +2 -2
- package/dist/components/scroll-area.d.ts +5 -3
- package/dist/components/scroll-area.d.ts.map +1 -1
- package/dist/components/scroll-area.js +5 -3
- package/dist/components/segmented-control.d.ts +1 -1
- package/dist/components/segmented-control.js +1 -1
- package/dist/components/select.d.ts +5 -3
- package/dist/components/select.d.ts.map +1 -1
- package/dist/components/select.js +5 -3
- package/dist/components/separator.d.ts +4 -2
- package/dist/components/separator.d.ts.map +1 -1
- package/dist/components/separator.js +4 -2
- package/dist/components/settings-facts.d.ts +3 -2
- package/dist/components/settings-facts.d.ts.map +1 -1
- package/dist/components/settings-facts.js +3 -2
- package/dist/components/settings-section.d.ts +1 -1
- package/dist/components/settings-section.js +1 -1
- package/dist/components/sheet.d.ts +6 -3
- package/dist/components/sheet.d.ts.map +1 -1
- package/dist/components/sheet.js +6 -3
- package/dist/components/skeleton.d.ts +1 -1
- package/dist/components/skeleton.js +1 -1
- package/dist/components/slider.d.ts +2 -1
- package/dist/components/slider.d.ts.map +1 -1
- package/dist/components/slider.js +2 -1
- package/dist/components/snippet.d.ts +3 -1
- package/dist/components/snippet.d.ts.map +1 -1
- package/dist/components/snippet.js +3 -1
- package/dist/components/sonner.d.ts +2 -2
- package/dist/components/sonner.js +2 -2
- package/dist/components/status-badge.d.ts +5 -2
- package/dist/components/status-badge.d.ts.map +1 -1
- package/dist/components/status-badge.js +5 -2
- package/dist/components/status-dot.d.ts +2 -1
- package/dist/components/status-dot.d.ts.map +1 -1
- package/dist/components/status-dot.js +2 -1
- package/dist/components/switch.d.ts +7 -6
- package/dist/components/switch.d.ts.map +1 -1
- package/dist/components/switch.js +7 -6
- package/dist/components/table.d.ts +18 -11
- package/dist/components/table.d.ts.map +1 -1
- package/dist/components/table.js +18 -11
- package/dist/components/tabs.d.ts +19 -13
- package/dist/components/tabs.d.ts.map +1 -1
- package/dist/components/tabs.js +19 -13
- package/dist/components/text-link.d.ts +9 -4
- package/dist/components/text-link.d.ts.map +1 -1
- package/dist/components/text-link.js +9 -4
- package/dist/components/text-with-copy-button.d.ts +2 -2
- package/dist/components/text-with-copy-button.js +2 -2
- package/dist/components/textarea.d.ts +4 -3
- package/dist/components/textarea.d.ts.map +1 -1
- package/dist/components/textarea.js +4 -3
- package/dist/components/tooltip.d.ts +5 -3
- package/dist/components/tooltip.d.ts.map +1 -1
- package/dist/components/tooltip.js +5 -3
- package/dist/components/usage-meter.d.ts +2 -2
- package/dist/components/usage-meter.js +2 -2
- package/dist/components/waiting-line.d.ts +1 -1
- package/dist/components/waiting-line.js +1 -1
- package/dist/showcase/usage.generated.d.ts.map +1 -1
- package/dist/showcase/usage.generated.js +147 -147
- package/dist/styles/shadcn.tailwind.css +8 -0
- package/package.json +3 -3
|
@@ -29,7 +29,7 @@ type TabsProps = Omit<TabsPrimitive.Root.Props, "value" | "defaultValue" | "onVa
|
|
|
29
29
|
* @family Navigation
|
|
30
30
|
* @when "Use Tabs to switch between sibling views inside a single page (`Overview`, `Logs`, `Settings`)." (https://vercel.com/geist/tabs)
|
|
31
31
|
* "Cap a Tabs row at 5–7 entries on desktop and 3–4 on mobile. Past that, consolidate or move secondary views behind a `Menu`." (https://vercel.com/geist/tabs)
|
|
32
|
-
* Ours: the cap is 7 on a desktop and 4 on a phone.
|
|
32
|
+
* Ours: the cap is 7 on a desktop and 4 on a phone, for a row of line tabs.
|
|
33
33
|
* @instead "For navigation between unrelated pages, use a sub-menu, not Tabs." (https://vercel.com/geist/tabs) "Tabs imply the views share scope, URL parent, and data model." (https://vercel.com/geist/tabs)
|
|
34
34
|
* Ours: views with their own URL are `TabsNav`. A choice that changes a value is a `RadioGroup` or
|
|
35
35
|
* `ToggleGroup`. A stable destination belongs in the `Sidebar`.
|
|
@@ -37,19 +37,22 @@ type TabsProps = Omit<TabsPrimitive.Root.Props, "value" | "defaultValue" | "onVa
|
|
|
37
37
|
* "Reflect the active tab in the URL (query param or path) so deep-links and refresh restore state." (https://vercel.com/geist/tabs)
|
|
38
38
|
* "Disable individual tabs only for permission or empty-state reasons; pair the disabled tab with a `tooltip` that names the constraint." (https://vercel.com/geist/tabs)
|
|
39
39
|
* Ours: the `tooltip` is `disabledReason`, shown on hover and focus and kept as the tab's
|
|
40
|
-
* description
|
|
41
|
-
*
|
|
42
|
-
*
|
|
43
|
-
*
|
|
40
|
+
* description; a tab is disabled only for a permission or an empty state, and `disabled` requires
|
|
41
|
+
* its `disabledReason`. One treatment among siblings, chosen through `variant`, never a page border:
|
|
42
|
+
* `line` (50 px high with 2 px sides, `body-sm` at 400, 24 px between tabs, a 2 px ink underline over
|
|
43
|
+
* the full-width row's 1 px rule) for a page's collections, `default` (a 32 px pill with 12 px
|
|
44
|
+
* sides, `label-sm` at 400, no gap between tabs, on the selection fill) for an object's sections.
|
|
45
|
+
* On a coarse or non-hover input a tab is at least 44 px high and wide, as a touch target.
|
|
46
|
+
* The page owns the chosen tab: `value` and `onValueChange` are required. There is no sliding underline. Colour is neutral only: the
|
|
44
47
|
* chosen tab is ink, the rest are muted until hover, and a disabled tab is never dimmed: in `line`
|
|
45
48
|
* it reads as an unchosen one, in `default` it sits on the selection fill with muted text, both
|
|
46
49
|
* with a not-allowed cursor.
|
|
47
50
|
* @words "`tabs[].title` is Title Case, 1–2 words, and names the destination noun (`Overview`, `Logs`, `Settings`). Verbs belong on buttons; `View Logs` is wrong on a tab." (https://vercel.com/geist/tabs)
|
|
48
51
|
* "`tabs[].tooltip` is sentence case and explains the constraint (`Only visible to project owners.`), not the tab’s purpose." (https://vercel.com/geist/tabs)
|
|
49
52
|
* "Don’t append a count to the title (`Logs (12)`); use a badge slot instead and drop the badge at zero." (https://vercel.com/geist/tabs)
|
|
50
|
-
* Ours: the title is sentence case (*Overview*, *Installations*), not Title
|
|
51
|
-
* slot: a count belongs to the list's footer. A reason is *Only owners see
|
|
52
|
-
* (*Installazioni*) scrolls, never wraps or truncates.
|
|
53
|
+
* Ours: the title is a noun with no icon, in sentence case (*Overview*, *Installations*), not Title
|
|
54
|
+
* Case. There is no badge slot: a count belongs to the list's footer. A reason is *Only owners see
|
|
55
|
+
* billing*. Italian (*Installazioni*) scrolls, never wraps or truncates.
|
|
53
56
|
* @access "Keep Left/Right arrows moving focus across tabs and Enter/Space activating; don’t hijack with global shortcuts." (https://vercel.com/geist/tabs)
|
|
54
57
|
* "Label the tablist with `aria-label` when no visible heading sits above it (`aria-label="Sections"`)." (https://vercel.com/geist/tabs)
|
|
55
58
|
* "Maintain a visible focus ring on the active tab; don’t suppress focus styles for visual polish." (https://vercel.com/geist/tabs)
|
|
@@ -74,10 +77,12 @@ declare function TabsContent({ className, ...props }: TabsPrimitive.Panel.Props)
|
|
|
74
77
|
* An object's ancestry is the `Breadcrumb`.
|
|
75
78
|
* @behaviour "Reflect the active tab in the URL (query param or path) so deep-links and refresh restore state." (https://vercel.com/geist/tabs)
|
|
76
79
|
* Ours: each view is its own URL, so a link carries it. Overflow scrolls sideways and brings the
|
|
77
|
-
* current link into view, and the row fades out over 32 px at each end where links stand beyond it.
|
|
78
|
-
*
|
|
79
|
-
*
|
|
80
|
-
*
|
|
80
|
+
* current link into view, and the row fades out over 32 px at each end where links stand beyond it.
|
|
81
|
+
* The current link takes the selection fill, or in `line` a 2 px ink underline over the row's 1 px
|
|
82
|
+
* rule; the other links are muted until hover, with no hue. Sizes and spacing follow `Tabs`. The
|
|
83
|
+
* row holds at most 7 links; in a `band`, which a phone scrolls sideways instead of holding
|
|
84
|
+
* fewer, that is 7 at every width, as an Agent's six views do, and a `line` row follows the 7 and 4 cap of `Tabs`. The sub-pages of one object stand as the filled-pill row in a
|
|
85
|
+
* `band` under the top bar, as Vercel draws a deployment's tabs: the band is this component's, with `above` for the
|
|
81
86
|
* object's identity, so no page draws the border, the fill or the gutters around the row. The band
|
|
82
87
|
* keeps the page's own column and gutter, and the first link's words start at the page title's edge,
|
|
83
88
|
* its fill reaching into the gutter as Vercel's tabs do. The
|
|
@@ -85,7 +90,8 @@ declare function TabsContent({ className, ...props }: TabsPrimitive.Panel.Props)
|
|
|
85
90
|
* @words "`tabs[].title` is Title Case, 1–2 words, and names the destination noun (`Overview`, `Logs`, `Settings`). Verbs belong on buttons; `View Logs` is wrong on a tab." (https://vercel.com/geist/tabs)
|
|
86
91
|
* "Don’t append a count to the title (`Logs (12)`); use a badge slot instead and drop the badge at zero." (https://vercel.com/geist/tabs)
|
|
87
92
|
* Ours: the title is sentence case (*Overview*, *Installations*), not Title Case. There is no badge
|
|
88
|
-
* slot: a count belongs to the list's footer. Italian scrolls, never wraps or
|
|
93
|
+
* slot: a count belongs to the list's footer. A link has no icon. Italian scrolls, never wraps or
|
|
94
|
+
* truncates.
|
|
89
95
|
* @access "Label the tablist with `aria-label` when no visible heading sits above it (`aria-label="Sections"`)." (https://vercel.com/geist/tabs)
|
|
90
96
|
* "Maintain a visible focus ring on the active tab; don’t suppress focus styles for visual polish." (https://vercel.com/geist/tabs)
|
|
91
97
|
* Ours: a `nav` of links named by `aria-label` or `aria-labelledby`, which the type requires, with
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tabs.d.ts","sourceRoot":"","sources":["../../src/components/tabs.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,IAAI,IAAI,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAE5D,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAKlE,KAAK,YAAY,GACb;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,iBAAiB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,GAChE;IAAE,iBAAiB,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAAC;AAErE,KAAK,YAAY,GACb;IAAE,QAAQ,CAAC,EAAE,KAAK,GAAG,SAAS,CAAC;IAAC,cAAc,CAAC,EAAE,SAAS,CAAA;CAAE,GAC5D;IACE,QAAQ,EAAE,IAAI,CAAC;IACf,qEAAqE;IACrE,cAAc,EAAE,MAAM,CAAC;CACxB,CAAC;AAEN,KAAK,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,EAAE,UAAU,CAAC,GAAG,YAAY,CAAC;AAEjF,KAAK,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,GAAG,cAAc,GAAG,eAAe,CAAC,GAAG;IAC5F,wEAAwE;IACxE,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,aAAa,CAAC,IAAI,CAAC,kBAAkB,KAAK,IAAI,CAAC;CAC7F,CAAC;AAEF
|
|
1
|
+
{"version":3,"file":"tabs.d.ts","sourceRoot":"","sources":["../../src/components/tabs.tsx"],"names":[],"mappings":"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"}
|
package/dist/components/tabs.js
CHANGED
|
@@ -13,7 +13,7 @@ import { cn } from "../lib/utils.js";
|
|
|
13
13
|
* @family Navigation
|
|
14
14
|
* @when "Use Tabs to switch between sibling views inside a single page (`Overview`, `Logs`, `Settings`)." (https://vercel.com/geist/tabs)
|
|
15
15
|
* "Cap a Tabs row at 5–7 entries on desktop and 3–4 on mobile. Past that, consolidate or move secondary views behind a `Menu`." (https://vercel.com/geist/tabs)
|
|
16
|
-
* Ours: the cap is 7 on a desktop and 4 on a phone.
|
|
16
|
+
* Ours: the cap is 7 on a desktop and 4 on a phone, for a row of line tabs.
|
|
17
17
|
* @instead "For navigation between unrelated pages, use a sub-menu, not Tabs." (https://vercel.com/geist/tabs) "Tabs imply the views share scope, URL parent, and data model." (https://vercel.com/geist/tabs)
|
|
18
18
|
* Ours: views with their own URL are `TabsNav`. A choice that changes a value is a `RadioGroup` or
|
|
19
19
|
* `ToggleGroup`. A stable destination belongs in the `Sidebar`.
|
|
@@ -21,19 +21,22 @@ import { cn } from "../lib/utils.js";
|
|
|
21
21
|
* "Reflect the active tab in the URL (query param or path) so deep-links and refresh restore state." (https://vercel.com/geist/tabs)
|
|
22
22
|
* "Disable individual tabs only for permission or empty-state reasons; pair the disabled tab with a `tooltip` that names the constraint." (https://vercel.com/geist/tabs)
|
|
23
23
|
* Ours: the `tooltip` is `disabledReason`, shown on hover and focus and kept as the tab's
|
|
24
|
-
* description
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
24
|
+
* description; a tab is disabled only for a permission or an empty state, and `disabled` requires
|
|
25
|
+
* its `disabledReason`. One treatment among siblings, chosen through `variant`, never a page border:
|
|
26
|
+
* `line` (50 px high with 2 px sides, `body-sm` at 400, 24 px between tabs, a 2 px ink underline over
|
|
27
|
+
* the full-width row's 1 px rule) for a page's collections, `default` (a 32 px pill with 12 px
|
|
28
|
+
* sides, `label-sm` at 400, no gap between tabs, on the selection fill) for an object's sections.
|
|
29
|
+
* On a coarse or non-hover input a tab is at least 44 px high and wide, as a touch target.
|
|
30
|
+
* The page owns the chosen tab: `value` and `onValueChange` are required. There is no sliding underline. Colour is neutral only: the
|
|
28
31
|
* chosen tab is ink, the rest are muted until hover, and a disabled tab is never dimmed: in `line`
|
|
29
32
|
* it reads as an unchosen one, in `default` it sits on the selection fill with muted text, both
|
|
30
33
|
* with a not-allowed cursor.
|
|
31
34
|
* @words "`tabs[].title` is Title Case, 1–2 words, and names the destination noun (`Overview`, `Logs`, `Settings`). Verbs belong on buttons; `View Logs` is wrong on a tab." (https://vercel.com/geist/tabs)
|
|
32
35
|
* "`tabs[].tooltip` is sentence case and explains the constraint (`Only visible to project owners.`), not the tab’s purpose." (https://vercel.com/geist/tabs)
|
|
33
36
|
* "Don’t append a count to the title (`Logs (12)`); use a badge slot instead and drop the badge at zero." (https://vercel.com/geist/tabs)
|
|
34
|
-
* Ours: the title is sentence case (*Overview*, *Installations*), not Title
|
|
35
|
-
* slot: a count belongs to the list's footer. A reason is *Only owners see
|
|
36
|
-
* (*Installazioni*) scrolls, never wraps or truncates.
|
|
37
|
+
* Ours: the title is a noun with no icon, in sentence case (*Overview*, *Installations*), not Title
|
|
38
|
+
* Case. There is no badge slot: a count belongs to the list's footer. A reason is *Only owners see
|
|
39
|
+
* billing*. Italian (*Installazioni*) scrolls, never wraps or truncates.
|
|
37
40
|
* @access "Keep Left/Right arrows moving focus across tabs and Enter/Space activating; don’t hijack with global shortcuts." (https://vercel.com/geist/tabs)
|
|
38
41
|
* "Label the tablist with `aria-label` when no visible heading sits above it (`aria-label="Sections"`)." (https://vercel.com/geist/tabs)
|
|
39
42
|
* "Maintain a visible focus ring on the active tab; don’t suppress focus styles for visual polish." (https://vercel.com/geist/tabs)
|
|
@@ -93,10 +96,12 @@ const HIDDEN_FADE = {
|
|
|
93
96
|
* An object's ancestry is the `Breadcrumb`.
|
|
94
97
|
* @behaviour "Reflect the active tab in the URL (query param or path) so deep-links and refresh restore state." (https://vercel.com/geist/tabs)
|
|
95
98
|
* Ours: each view is its own URL, so a link carries it. Overflow scrolls sideways and brings the
|
|
96
|
-
* current link into view, and the row fades out over 32 px at each end where links stand beyond it.
|
|
97
|
-
*
|
|
98
|
-
*
|
|
99
|
-
*
|
|
99
|
+
* current link into view, and the row fades out over 32 px at each end where links stand beyond it.
|
|
100
|
+
* The current link takes the selection fill, or in `line` a 2 px ink underline over the row's 1 px
|
|
101
|
+
* rule; the other links are muted until hover, with no hue. Sizes and spacing follow `Tabs`. The
|
|
102
|
+
* row holds at most 7 links; in a `band`, which a phone scrolls sideways instead of holding
|
|
103
|
+
* fewer, that is 7 at every width, as an Agent's six views do, and a `line` row follows the 7 and 4 cap of `Tabs`. The sub-pages of one object stand as the filled-pill row in a
|
|
104
|
+
* `band` under the top bar, as Vercel draws a deployment's tabs: the band is this component's, with `above` for the
|
|
100
105
|
* object's identity, so no page draws the border, the fill or the gutters around the row. The band
|
|
101
106
|
* keeps the page's own column and gutter, and the first link's words start at the page title's edge,
|
|
102
107
|
* its fill reaching into the gutter as Vercel's tabs do. The
|
|
@@ -104,7 +109,8 @@ const HIDDEN_FADE = {
|
|
|
104
109
|
* @words "`tabs[].title` is Title Case, 1–2 words, and names the destination noun (`Overview`, `Logs`, `Settings`). Verbs belong on buttons; `View Logs` is wrong on a tab." (https://vercel.com/geist/tabs)
|
|
105
110
|
* "Don’t append a count to the title (`Logs (12)`); use a badge slot instead and drop the badge at zero." (https://vercel.com/geist/tabs)
|
|
106
111
|
* Ours: the title is sentence case (*Overview*, *Installations*), not Title Case. There is no badge
|
|
107
|
-
* slot: a count belongs to the list's footer. Italian scrolls, never wraps or
|
|
112
|
+
* slot: a count belongs to the list's footer. A link has no icon. Italian scrolls, never wraps or
|
|
113
|
+
* truncates.
|
|
108
114
|
* @access "Label the tablist with `aria-label` when no visible heading sits above it (`aria-label="Sections"`)." (https://vercel.com/geist/tabs)
|
|
109
115
|
* "Maintain a visible focus ring on the active tab; don’t suppress focus styles for visual polish." (https://vercel.com/geist/tabs)
|
|
110
116
|
* Ours: a `nav` of links named by `aria-label` or `aria-labelledby`, which the type requires, with
|
|
@@ -4,13 +4,18 @@ import { type VariantProps } from "class-variance-authority";
|
|
|
4
4
|
* for a muted way out.
|
|
5
5
|
*
|
|
6
6
|
* @family Navigation
|
|
7
|
-
* @when A link inside a sentence
|
|
8
|
-
*
|
|
7
|
+
* @when A link inside a sentence, or offered alone as a section's way on (`inline`, blue and
|
|
8
|
+
* underlined at rest); a link that is itself the value, such as a record's name or a fact (`plain`);
|
|
9
|
+
* a secondary way out beside the content, such as a card header's *See everything*, which takes the
|
|
10
|
+
* same blue treatment as `inline`; or a muted way to somewhere such as a footer's *Learn more*
|
|
11
|
+
* (`quiet`).
|
|
9
12
|
* @instead A command is a `Button`; a destination drawn as a button is a link with
|
|
10
13
|
* `buttonVariants`. Going to a record from its row is the record's name in `RecordIdentity`.
|
|
14
|
+
* Breadcrumb and back navigation are not text links: they keep their own quieter navigation
|
|
15
|
+
* treatment.
|
|
11
16
|
* @behaviour Classes only: the caller renders the real anchor or router link. `inline` thickens its
|
|
12
|
-
* underline on hover; `plain` and `quiet` underline on hover.
|
|
13
|
-
* transition. Colour: only `inline` takes the link blue, as Vercel puts blue on links and nowhere
|
|
17
|
+
* underline on hover; `plain` and `quiet` underline on hover. The underline sits 4 px under the text
|
|
18
|
+
* in every kind. Paint changes ride the shared paint transition. Colour: only `inline` takes the link blue, as Vercel puts blue on links and nowhere
|
|
14
19
|
* else in running text; `plain` keeps the colour of the text around it, and `quiet` is muted and
|
|
15
20
|
* turns ink on hover, which is how a card footer's or a list note's *Learn more* reads. A link that
|
|
16
21
|
* leaves the product ends in the arrow icon after its text, which `quiet` sizes.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"text-link.d.ts","sourceRoot":"","sources":["../../src/components/text-link.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAElE
|
|
1
|
+
{"version":3,"file":"text-link.d.ts","sourceRoot":"","sources":["../../src/components/text-link.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAElE;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,QAAA,MAAM,gBAAgB;;8EAYpB,CAAC;AAEH,KAAK,YAAY,GAAG,WAAW,CAAC,YAAY,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAE/E,OAAO,EAAE,gBAAgB,EAAE,KAAK,YAAY,EAAE,CAAC"}
|
|
@@ -4,13 +4,18 @@ import { cva } from "class-variance-authority";
|
|
|
4
4
|
* for a muted way out.
|
|
5
5
|
*
|
|
6
6
|
* @family Navigation
|
|
7
|
-
* @when A link inside a sentence
|
|
8
|
-
*
|
|
7
|
+
* @when A link inside a sentence, or offered alone as a section's way on (`inline`, blue and
|
|
8
|
+
* underlined at rest); a link that is itself the value, such as a record's name or a fact (`plain`);
|
|
9
|
+
* a secondary way out beside the content, such as a card header's *See everything*, which takes the
|
|
10
|
+
* same blue treatment as `inline`; or a muted way to somewhere such as a footer's *Learn more*
|
|
11
|
+
* (`quiet`).
|
|
9
12
|
* @instead A command is a `Button`; a destination drawn as a button is a link with
|
|
10
13
|
* `buttonVariants`. Going to a record from its row is the record's name in `RecordIdentity`.
|
|
14
|
+
* Breadcrumb and back navigation are not text links: they keep their own quieter navigation
|
|
15
|
+
* treatment.
|
|
11
16
|
* @behaviour Classes only: the caller renders the real anchor or router link. `inline` thickens its
|
|
12
|
-
* underline on hover; `plain` and `quiet` underline on hover.
|
|
13
|
-
* transition. Colour: only `inline` takes the link blue, as Vercel puts blue on links and nowhere
|
|
17
|
+
* underline on hover; `plain` and `quiet` underline on hover. The underline sits 4 px under the text
|
|
18
|
+
* in every kind. Paint changes ride the shared paint transition. Colour: only `inline` takes the link blue, as Vercel puts blue on links and nowhere
|
|
14
19
|
* else in running text; `plain` keeps the colour of the text around it, and `quiet` is muted and
|
|
15
20
|
* turns ink on hover, which is how a card footer's or a list note's *Learn more* reads. A link that
|
|
16
21
|
* leaves the product ends in the arrow icon after its text, which `quiet` sizes.
|
|
@@ -12,8 +12,8 @@ type TextWithCopyButtonProps = {
|
|
|
12
12
|
* server address.
|
|
13
13
|
* @instead Several lines are a `CodeBlock`; a command is a `Snippet`. A value that needs no copying
|
|
14
14
|
* is plain text. The button alone, beside text that is not the value, is `CopyButton`.
|
|
15
|
-
* @behaviour Shows the value in the body type, with a 24 px
|
|
16
|
-
* after it. The value is slightly softer than the full text colour and the mark softer still;
|
|
15
|
+
* @behaviour Shows the exact `value`, which is also what is copied, in the body type, with a 24 px
|
|
16
|
+
* `CopyButton` whose 16 px mark sits 6 px after it. The value is slightly softer than the full text colour and the mark softer still;
|
|
17
17
|
* hovering either takes both to the full text colour, with no fill, border or shadow. Only the
|
|
18
18
|
* button copies: the value stays selectable, so a copy the clipboard refuses can be done by hand. A
|
|
19
19
|
* value too long for its row wraps at any character; `ellipsis` instead cuts it in the middle in
|
|
@@ -13,8 +13,8 @@ const BUTTON_WITHOUT_FILL = "[&_[data-slot=button]]:hover:bg-transparent [&_[dat
|
|
|
13
13
|
* server address.
|
|
14
14
|
* @instead Several lines are a `CodeBlock`; a command is a `Snippet`. A value that needs no copying
|
|
15
15
|
* is plain text. The button alone, beside text that is not the value, is `CopyButton`.
|
|
16
|
-
* @behaviour Shows the value in the body type, with a 24 px
|
|
17
|
-
* after it. The value is slightly softer than the full text colour and the mark softer still;
|
|
16
|
+
* @behaviour Shows the exact `value`, which is also what is copied, in the body type, with a 24 px
|
|
17
|
+
* `CopyButton` whose 16 px mark sits 6 px after it. The value is slightly softer than the full text colour and the mark softer still;
|
|
18
18
|
* hovering either takes both to the full text colour, with no fill, border or shadow. Only the
|
|
19
19
|
* button copies: the value stays selectable, so a copy the clipboard refuses can be done by hand. A
|
|
20
20
|
* value too long for its row wraps at any character; `ellipsis` instead cuts it in the middle in
|
|
@@ -19,9 +19,10 @@ type TextareaProps = Omit<React.ComponentProps<"textarea">, "size"> & {
|
|
|
19
19
|
* @behaviour Same ring, halo, hover, disabled and error as `Input`; the red of an error sits on the
|
|
20
20
|
* ring, the halo and the message only, and holds while the box has focus. It grows with its content
|
|
21
21
|
* (`field-sizing: content`) from a roomy 100 px minimum with a 10 px by 12 px inset; `lg` takes
|
|
22
|
-
*
|
|
23
|
-
* does not look disabled. `label` and `error`
|
|
24
|
-
* `
|
|
22
|
+
* 16 px type at every width (the others drop to 14 px from `md` up) and the larger corner, `sm` is
|
|
23
|
+
* the default's size. Read-only keeps the plain fill: it does not look disabled. `label` and `error`
|
|
24
|
+
* draw the `Field` parts around the box (in a settings section, `SettingsField` does it), and a
|
|
25
|
+
* string `label` requires `id`, as on `Input`; a box with no name does not compile. "Set a generous
|
|
25
26
|
* default `rows` and grow only when the surface has vertical room; don’t let the field push primary
|
|
26
27
|
* actions below the fold." (https://vercel.com/geist/textarea) Ours: there is no resize handle and
|
|
27
28
|
* `rows` does not set the height. Nothing caps the growth, so a form keeps its footer's primary
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"textarea.d.ts","sourceRoot":"","sources":["../../src/components/textarea.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,EAAc,KAAK,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,EAAyC,KAAK,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAqB7F,KAAK,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC,GAAG;IACpE,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,mFAAmF;IACnF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,wFAAwF;IACxF,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG,SAAS,CAAC;AAEd
|
|
1
|
+
{"version":3,"file":"textarea.d.ts","sourceRoot":"","sources":["../../src/components/textarea.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,EAAc,KAAK,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,EAAyC,KAAK,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAqB7F,KAAK,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC,GAAG;IACpE,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,mFAAmF;IACnF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,wFAAwF;IACxF,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG,SAAS,CAAC;AAEd;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,iBAAS,QAAQ,CAAC,EAChB,KAAK,EACL,WAAW,EACX,KAAK,EACL,IAAgB,EAChB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,aAAa,qBAef;AAED,OAAO,EAAE,QAAQ,EAAE,CAAC"}
|
|
@@ -29,9 +29,10 @@ const textareaVariants = cva([
|
|
|
29
29
|
* @behaviour Same ring, halo, hover, disabled and error as `Input`; the red of an error sits on the
|
|
30
30
|
* ring, the halo and the message only, and holds while the box has focus. It grows with its content
|
|
31
31
|
* (`field-sizing: content`) from a roomy 100 px minimum with a 10 px by 12 px inset; `lg` takes
|
|
32
|
-
*
|
|
33
|
-
* does not look disabled. `label` and `error`
|
|
34
|
-
* `
|
|
32
|
+
* 16 px type at every width (the others drop to 14 px from `md` up) and the larger corner, `sm` is
|
|
33
|
+
* the default's size. Read-only keeps the plain fill: it does not look disabled. `label` and `error`
|
|
34
|
+
* draw the `Field` parts around the box (in a settings section, `SettingsField` does it), and a
|
|
35
|
+
* string `label` requires `id`, as on `Input`; a box with no name does not compile. "Set a generous
|
|
35
36
|
* default `rows` and grow only when the surface has vertical room; don’t let the field push primary
|
|
36
37
|
* actions below the fold." (https://vercel.com/geist/textarea) Ours: there is no resize handle and
|
|
37
38
|
* `rows` does not set the height. Nothing caps the growth, so a form keeps its footer's primary
|
|
@@ -10,7 +10,8 @@ declare function TooltipProvider({ delay, ...props }: TooltipPrimitive.Provider.
|
|
|
10
10
|
* (https://vercel.com/geist/tooltip)
|
|
11
11
|
* "Use lifecycle Tooltips (`Alpha`, `Experimental`, `Beta`, `Early Access`) to name the limits that
|
|
12
12
|
* apply: API stability, SLA, support, pricing, retention." (https://vercel.com/geist/tooltip)
|
|
13
|
-
* Ours:
|
|
13
|
+
* Ours: the parts are `TooltipProvider`, `Tooltip`, `TooltipTrigger` and `TooltipContent`. A shortcut
|
|
14
|
+
* is shown in a tooltip only when one is bound.
|
|
14
15
|
* @instead "For an entity preview with metadata rows (avatar, identifier, 2–4 facts, optional
|
|
15
16
|
* action), use `Context Card`." "For long-form content or actions that need persistence, route to a
|
|
16
17
|
* `Drawer` or page navigation." (https://vercel.com/geist/tooltip)
|
|
@@ -24,8 +25,9 @@ declare function TooltipProvider({ delay, ...props }: TooltipPrimitive.Provider.
|
|
|
24
25
|
* (https://vercel.com/geist/tooltip)
|
|
25
26
|
* Ours: the pointer wait is 150 ms and keyboard focus opens it at once; `delay={0}` on the trigger
|
|
26
27
|
* or a `TooltipProvider` removes the wait. Above by default, 10 px from the trigger, at most 250 px
|
|
27
|
-
* wide, 13 px text balanced over its lines. Never interactive. `arrow={false}` drops the stem
|
|
28
|
-
* `centerText={false}` left-aligns a tooltip that wraps
|
|
28
|
+
* wide, 13 px text balanced over its lines. Never interactive. `arrow={false}` drops the stem (Geist's
|
|
29
|
+
* `tip={false}`); `centerText={false}` left-aligns a tooltip that wraps (Geist's `center={false}`).
|
|
30
|
+
* Geist's coloured `type` is not provided. `TooltipContent` requires its text as
|
|
29
31
|
* children. Colour: one inverted neutral, the page's ink as the fill and its surface as the
|
|
30
32
|
* text, with a stem of the same fill and no hue, in both themes; a shortcut is a `Kbd` after the
|
|
31
33
|
* text, drawn 20 px high.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tooltip.d.ts","sourceRoot":"","sources":["../../src/components/tooltip.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAIrE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAQjE,iBAAS,eAAe,CAAC,EAAE,KAAqB,EAAE,GAAG,KAAK,EAAE,EAAE,gBAAgB,CAAC,QAAQ,CAAC,KAAK,+BAM5F;AAED
|
|
1
|
+
{"version":3,"file":"tooltip.d.ts","sourceRoot":"","sources":["../../src/components/tooltip.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAIrE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAQjE,iBAAS,eAAe,CAAC,EAAE,KAAqB,EAAE,GAAG,KAAK,EAAE,EAAE,gBAAgB,CAAC,QAAQ,CAAC,KAAK,+BAM5F;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,iBAAS,OAAO,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,gBAAgB,CAAC,IAAI,CAAC,KAAK,+BAEzD;AAED,iBAAS,cAAc,CAAC,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,EAAE,gBAAgB,CAAC,OAAO,CAAC,KAAK,+BAS1E;AAED,iBAAS,cAAc,CAAC,EACtB,SAAS,EACT,IAAY,EACZ,UAAe,EACf,KAAgB,EAChB,WAAe,EACf,KAAY,EACZ,UAAiB,EACjB,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,gBAAgB,CAAC,KAAK,CAAC,KAAK,GAC7B,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,aAAa,GAAG,MAAM,GAAG,YAAY,CAAC,GAAG;IACzF,uEAAuE;IACvE,QAAQ,EAAE,cAAc,CAAC;IACzB,oFAAoF;IACpF,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,wEAAwE;IACxE,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,+BA8BF;AAED,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,eAAe,EAAE,CAAC"}
|
|
@@ -19,7 +19,8 @@ function TooltipProvider({ delay = TOOLTIP_DELAY, ...props }) {
|
|
|
19
19
|
* (https://vercel.com/geist/tooltip)
|
|
20
20
|
* "Use lifecycle Tooltips (`Alpha`, `Experimental`, `Beta`, `Early Access`) to name the limits that
|
|
21
21
|
* apply: API stability, SLA, support, pricing, retention." (https://vercel.com/geist/tooltip)
|
|
22
|
-
* Ours:
|
|
22
|
+
* Ours: the parts are `TooltipProvider`, `Tooltip`, `TooltipTrigger` and `TooltipContent`. A shortcut
|
|
23
|
+
* is shown in a tooltip only when one is bound.
|
|
23
24
|
* @instead "For an entity preview with metadata rows (avatar, identifier, 2–4 facts, optional
|
|
24
25
|
* action), use `Context Card`." "For long-form content or actions that need persistence, route to a
|
|
25
26
|
* `Drawer` or page navigation." (https://vercel.com/geist/tooltip)
|
|
@@ -33,8 +34,9 @@ function TooltipProvider({ delay = TOOLTIP_DELAY, ...props }) {
|
|
|
33
34
|
* (https://vercel.com/geist/tooltip)
|
|
34
35
|
* Ours: the pointer wait is 150 ms and keyboard focus opens it at once; `delay={0}` on the trigger
|
|
35
36
|
* or a `TooltipProvider` removes the wait. Above by default, 10 px from the trigger, at most 250 px
|
|
36
|
-
* wide, 13 px text balanced over its lines. Never interactive. `arrow={false}` drops the stem
|
|
37
|
-
* `centerText={false}` left-aligns a tooltip that wraps
|
|
37
|
+
* wide, 13 px text balanced over its lines. Never interactive. `arrow={false}` drops the stem (Geist's
|
|
38
|
+
* `tip={false}`); `centerText={false}` left-aligns a tooltip that wraps (Geist's `center={false}`).
|
|
39
|
+
* Geist's coloured `type` is not provided. `TooltipContent` requires its text as
|
|
38
40
|
* children. Colour: one inverted neutral, the page's ink as the fill and its surface as the
|
|
39
41
|
* text, with a stem of the same fill and no hue, in both themes; a shortcut is a `Kbd` after the
|
|
40
42
|
* text, drawn 20 px high.
|
|
@@ -3,8 +3,8 @@ import * as React from "react";
|
|
|
3
3
|
* Consumption against an allowance in a dense spot.
|
|
4
4
|
*
|
|
5
5
|
* @family Data
|
|
6
|
-
* @when `UsageMeter`: consumption against an allowance in a dense spot, such as
|
|
7
|
-
* cost.
|
|
6
|
+
* @when `UsageMeter`: consumption against an allowance in a dense spot, such as tokens,
|
|
7
|
+
* cost, latency or run count, with the figure printed.
|
|
8
8
|
* @instead A known amount against a real maximum with its label is `Progress`. An unknown wait is
|
|
9
9
|
* the waiting line, never a bar with an invented percentage. A single figure is a `KpiCard`.
|
|
10
10
|
* @behaviour The fill moves only when the reading changes, on `transition`; still under reduced
|
|
@@ -5,8 +5,8 @@ import { cn } from "../lib/utils.js";
|
|
|
5
5
|
* Consumption against an allowance in a dense spot.
|
|
6
6
|
*
|
|
7
7
|
* @family Data
|
|
8
|
-
* @when `UsageMeter`: consumption against an allowance in a dense spot, such as
|
|
9
|
-
* cost.
|
|
8
|
+
* @when `UsageMeter`: consumption against an allowance in a dense spot, such as tokens,
|
|
9
|
+
* cost, latency or run count, with the figure printed.
|
|
10
10
|
* @instead A known amount against a real maximum with its label is `Progress`. An unknown wait is
|
|
11
11
|
* the waiting line, never a bar with an invented percentage. A single figure is a `KpiCard`.
|
|
12
12
|
* @behaviour The fill moves only when the reading changes, on `transition`; still under reduced
|
|
@@ -22,7 +22,7 @@ type WaitingLineProps = Omit<React.ComponentProps<"div">, "children"> & ({
|
|
|
22
22
|
* A page load is `Skeleton`. An Agent working is her orb and a sentence.
|
|
23
23
|
* @behaviour Takes its 2 px from the start and stays empty until 1 s, so its arrival moves nothing.
|
|
24
24
|
* No track colour; the segment is ink, never info blue, crossing at 32% width. Under reduced motion
|
|
25
|
-
* it breathes.
|
|
25
|
+
* it breathes in opacity, across the whole track, instead of travelling.
|
|
26
26
|
* @words None of its own. The control beside it carries the pending word; a standalone line takes a
|
|
27
27
|
* `label` naming the work: *Connecting Telegram*.
|
|
28
28
|
* @access With a label: `role="status"`, announced once after the second. `decorative` when the
|
|
@@ -18,7 +18,7 @@ const WAITING_LINE_DELAY_MS = 1000;
|
|
|
18
18
|
* A page load is `Skeleton`. An Agent working is her orb and a sentence.
|
|
19
19
|
* @behaviour Takes its 2 px from the start and stays empty until 1 s, so its arrival moves nothing.
|
|
20
20
|
* No track colour; the segment is ink, never info blue, crossing at 32% width. Under reduced motion
|
|
21
|
-
* it breathes.
|
|
21
|
+
* it breathes in opacity, across the whole track, instead of travelling.
|
|
22
22
|
* @words None of its own. The control beside it carries the pending word; a standalone line takes a
|
|
23
23
|
* `label` naming the work: *Connecting Telegram*.
|
|
24
24
|
* @access With a label: `role="status"`, announced once after the second. `decorative` when the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usage.generated.d.ts","sourceRoot":"","sources":["../../src/showcase/usage.generated.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"usage.generated.d.ts","sourceRoot":"","sources":["../../src/showcase/usage.generated.ts"],"names":[],"mappings":"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"}
|