@imfusion/web-ui 0.11.1-dev.6.gf4b6c627 → 0.11.1-dev.64.gdd82b76a
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/CHANGELOG.md +176 -1
- package/dist/{code-Cl9AzRyF.js → code-BaLXMEMa.js} +8 -8
- package/dist/components/autocomplete/autocomplete.d.ts +144 -0
- package/dist/components/autocomplete/autocomplete.meta.d.ts +2 -0
- package/dist/components/autocomplete/index.d.ts +2 -0
- package/dist/components/avatar/avatar.d.ts +1 -1
- package/dist/components/card/card.d.ts +3 -2
- package/dist/components/checkbox/checkbox.cva.d.ts +3 -0
- package/dist/components/combobox/combobox.cva.d.ts +37 -0
- package/dist/components/combobox/combobox.d.ts +171 -0
- package/dist/components/combobox/combobox.meta.d.ts +2 -0
- package/dist/components/combobox/index.d.ts +2 -0
- package/dist/components/dialog/dialog.d.ts +23 -3
- package/dist/components/file-drop-zone/collect-files.d.ts +56 -0
- package/dist/components/file-drop-zone/file-drop-zone-context.d.ts +15 -0
- package/dist/components/file-drop-zone/file-drop-zone.d.ts +185 -0
- package/dist/components/file-drop-zone/file-drop-zone.meta.d.ts +2 -0
- package/dist/components/file-drop-zone/format-bytes.d.ts +5 -0
- package/dist/components/file-drop-zone/index.d.ts +4 -0
- package/dist/components/image/image.d.ts +50 -0
- package/dist/components/image/image.meta.d.ts +2 -0
- package/dist/components/image/index.d.ts +2 -0
- package/dist/components/logo/logo.d.ts +1 -1
- package/dist/components/menu/index.d.ts +2 -0
- package/dist/components/menu/menu.d.ts +135 -0
- package/dist/components/menu/menu.meta.d.ts +2 -0
- package/dist/components/popover/popover.d.ts +2 -2
- package/dist/components/progress/index.d.ts +2 -0
- package/dist/components/progress/progress.d.ts +40 -0
- package/dist/components/progress/progress.meta.d.ts +2 -0
- package/dist/components/rich-link/rich-link.d.ts +1 -1
- package/dist/components/select/select.cva.d.ts +7 -0
- package/dist/components/select/select.d.ts +1 -1
- package/dist/components/tab-nav/index.d.ts +2 -0
- package/dist/components/tab-nav/tab-nav.d.ts +26 -0
- package/dist/components/tab-nav/tab-nav.meta.d.ts +2 -0
- package/dist/components/table/table.d.ts +8 -0
- package/dist/components/tabs/tabs-underline.cva.d.ts +6 -0
- package/dist/components/tabs/tabs.d.ts +13 -4
- package/dist/components/textarea/index.d.ts +2 -0
- package/dist/components/textarea/textarea.d.ts +32 -0
- package/dist/components/textarea/textarea.meta.d.ts +2 -0
- package/dist/components/toast/toast.d.ts +2 -2
- package/dist/components/typo/typo.d.ts +5 -1
- package/dist/docgen/component-sources.d.ts +4 -0
- package/dist/icon-button-roSB497o.js +171 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.js +4891 -2970
- package/dist/integrations/code-highlight.js +2 -2
- package/dist/integrations/frame-selection.js +1 -1
- package/dist/integrations/image-display-options.js +73 -71
- package/dist/integrations/layout-mode/index.d.ts +2 -0
- package/dist/integrations/layout-mode/layout-mode-view.d.ts +32 -0
- package/dist/integrations/layout-mode/layout-mode.d.ts +13 -0
- package/dist/integrations/layout-mode/layout-mode.meta.d.ts +2 -0
- package/dist/integrations/layout-mode.js +103 -0
- package/dist/integrations/view-tools/index.d.ts +4 -0
- package/dist/integrations/view-tools/use-view-interaction.d.ts +21 -0
- package/dist/integrations/view-tools/view-tools-view.d.ts +23 -0
- package/dist/integrations/view-tools/view-tools.d.ts +14 -0
- package/dist/integrations/view-tools/view-tools.meta.d.ts +2 -0
- package/dist/integrations/view-tools.js +133 -0
- package/dist/{resolve-state-props-DQf9WiGv.js → rolldown-runtime-Dy4uBu1J.js} +1 -12
- package/dist/row-CImu8yXV.js +136 -0
- package/dist/{scroll-area-z9Lf9uIk.js → scroll-area-CXQ_SxPX.js} +2 -1
- package/dist/{slider-Bf274cMe.js → slider-CpIZMAFl.js} +2 -1
- package/dist/style.css +2 -1
- package/dist/tabs-BqgyMmo6.js +173 -0
- package/dist/toggle-group-Bhb3qicp.js +31 -0
- package/dist/toggle-group-eGr6_hgQ.js +125 -0
- package/dist/utils/email.d.ts +4 -1
- package/dist/utils/index.d.ts +2 -0
- package/dist/utils/initials.d.ts +4 -0
- package/dist/utils/item-parts.d.ts +23 -0
- package/dist/utils/stable-popup-height.d.ts +10 -0
- package/dist/utils-J6vbjIt1.js +46 -0
- package/package.json +4 -4
- package/src/docgen/doc.gen.json +7130 -1968
- package/src/llms/llms.gen.txt +58 -1
- package/src/llms/skills/imf-web-ui-audit/SKILL.md +5 -2
- package/src/llms/skills/imf-web-ui-conventions/SKILL.md +2 -2
- package/src/llms/skills/imf-web-ui-conventions/templates/AUDIT_CHECKLIST.md +19 -2
- package/src/llms/skills/imf-web-ui-conventions/topics/assets.md +28 -4
- package/src/llms/skills/imf-web-ui-conventions/topics/components.md +10 -0
- package/src/llms/skills/imf-web-ui-conventions/topics/library-boundary.md +3 -0
- package/src/llms/skills/imf-web-ui-conventions/topics/npm-project.md +2 -1
- package/src/llms/skills/imf-web-ui-conventions/topics/react/composition.md +54 -0
- package/src/llms/skills/imf-web-ui-conventions/topics/react/effects.md +59 -0
- package/src/llms/skills/imf-web-ui-conventions/topics/react/state.md +41 -0
- package/src/llms/skills/imf-web-ui-conventions/topics/react.md +7 -60
- package/src/llms/skills/imf-web-ui-conventions/topics/styling.md +22 -1
- package/src/llms/skills/imf-web-ui-conventions/topics/tooling.md +3 -2
- package/src/llms/skills/imf-web-ui-conventions/topics/validation.md +7 -0
- package/src/llms/skills/imf-web-ui-ux/references/forms.md +3 -2
- package/src/llms/tokens.gen.json +19 -1
- package/dist/tabs-DsDSCA--.js +0 -376
package/CHANGELOG.md
CHANGED
|
@@ -4,26 +4,201 @@
|
|
|
4
4
|
|
|
5
5
|
### Added
|
|
6
6
|
|
|
7
|
+
- `Image` is a new picture box over native `<picture>` and `<img>`, with an AVIF and a WebP source and a fallback `<img>`.
|
|
8
|
+
`width` and `height` are required and reserve the box before the image loads. It loads lazily and decodes asynchronously;
|
|
9
|
+
`priority` loads it eagerly with high fetch priority. A soft pulse shows while it loads and a glyph when it fails.
|
|
10
|
+
`radius`, `fit`, `border`, `borderWidth` and `aspectRatio` shape the box. [Image](src/components/image/image.mdx)
|
|
11
|
+
([WEBSDK-250](https://imfusion.atlassian.net/browse/WEBSDK-250)) — Nikolaus Brunner <brunner@imfusion.com>
|
|
12
|
+
- `Menu` is a new action menu adapted from Base UI, with every upstream part. Items take `icon`, `description`, and `badge`;
|
|
13
|
+
`CheckboxItem` and `RadioItem` draw their check in the trailing cell; `Popup` has a `size` of `sm` (dense, the default) or
|
|
14
|
+
`md`. A menu where no item has an icon drops the icon gutter. [Menu](src/components/menu/menu.mdx)
|
|
15
|
+
([WEBSDK-248](https://imfusion.atlassian.net/browse/WEBSDK-248)) — Nikolaus Brunner <brunner@imfusion.com>
|
|
16
|
+
- `Dialog.Alert` composes a confirmation from props like `Dialog.Simple`, on Base UI's Alert Dialog: screen readers announce
|
|
17
|
+
it as an `alertdialog`, it is always modal, and a click on the overlay leaves it open. `actions` is required, the header has
|
|
18
|
+
no close button, and `status` takes any variant. It replaces a `Dialog.Simple` or a hand-composed `Dialog.Root` that asks
|
|
19
|
+
the user to confirm a step, such as removing a member or discarding changes. [Dialog](src/components/dialog/dialog.mdx)
|
|
20
|
+
([WEBSDK-247](https://imfusion.atlassian.net/browse/WEBSDK-247)) — Nikolaus Brunner <brunner@imfusion.com>
|
|
21
|
+
- `Progress` is a new bar for the completion of a running task, adapted from Base UI. `size` runs from `xs` (a 2px hairline) to
|
|
22
|
+
`lg`, `layout` is `stacked` or `inline`, `value={null}` sweeps while the amount is unknown, and the fill turns positive at the
|
|
23
|
+
maximum. [Progress](src/components/progress/progress.mdx) — Nikolaus Brunner <brunner@imfusion.com>
|
|
24
|
+
- `FileDropZone` is a new zone that collects files or whole folders by drop or through its `Trigger` buttons, in sizes `sm`,
|
|
25
|
+
`md` and `lg`. It reports accepted and rejected files through `onFilesAdded`, scans folders recursively, and reads the
|
|
26
|
+
result out to screen readers. `FileDropZone.Upload` composes the zone with a file list, a skipped-files note, per-file and
|
|
27
|
+
overall `Progress`, and an upload button; the app owns the items and the upload, and `onRetry` adds a Retry button to
|
|
28
|
+
failed rows. A single-file zone shows its file with `FileDropZone.File` and `FileDropZone.Remove`, and the glyph changes to a
|
|
29
|
+
page.
|
|
30
|
+
[FileDropZone](src/components/file-drop-zone/file-drop-zone.mdx) — Nikolaus Brunner <brunner@imfusion.com>
|
|
31
|
+
- `@imfusion/web-ui/integrations/view-tools` adds `ViewTools`: Pan, Zoom, and Windowing toggles that limit the left mouse
|
|
32
|
+
button in the ImFusion main 2D and MPR views to one action, and a button that resets the view group. `orientation` lays
|
|
33
|
+
the tools out in a row (`"horizontal"`, the default) or a column (`"vertical"`). It needs `@imfusion/sdk` 1.3.0 or later. [ViewTools](src/integrations/view-tools/view-tools.mdx)
|
|
34
|
+
([WEBSDK-290](https://imfusion.atlassian.net/browse/WEBSDK-290)) — Stephan Wenninger <wenninger@imfusion.com>
|
|
35
|
+
- `useViewInteraction` from `@imfusion/web-ui/integrations/view-tools` reads and sets the active `ViewTools` tool, so the
|
|
36
|
+
app and the toolbar share one value. `setViewInteraction("Default")` releases the tool. [ViewTools](src/integrations/view-tools/view-tools.mdx)
|
|
37
|
+
([WEBSDK-290](https://imfusion.atlassian.net/browse/WEBSDK-290)) — Nikolaus Brunner <brunner@imfusion.com>
|
|
38
|
+
- `TabNav` is a new row of links to routes with a bar under the current one, in the underline look of `Tabs`. `TabNav.Item`
|
|
39
|
+
renders an `<a>`, takes a router link as `render`, and sets `aria-current="page"` from `current`.
|
|
40
|
+
[TabNav](src/components/tab-nav/tab-nav.stories.tsx#InAProjectHeader) — Nikolaus Brunner <brunner@imfusion.com>
|
|
41
|
+
- `Tabs.Root` takes `appearance`: `"boxed"` (the default, unchanged) or `"underline"`, with mono labels, a 2px bar under the
|
|
42
|
+
active tab on a hairline rule, and an unframed panel. Underline is horizontal only; a vertical Tabs stays boxed.
|
|
43
|
+
[Tabs](src/components/tabs/tabs.stories.tsx#Underline) — Nikolaus Brunner <brunner@imfusion.com>
|
|
44
|
+
- `Textarea` is a new multi-line input adapted from Base UI, with the `Input` variants and sizes, a drag-to-resize corner, and
|
|
45
|
+
validation state from `Field`. [Textarea](src/components/textarea/textarea.mdx)
|
|
46
|
+
([WEBSDK-244](https://imfusion.atlassian.net/browse/WEBSDK-244)) — Nikolaus Brunner <brunner@imfusion.com>
|
|
47
|
+
- `Table.RowButton` is a button that stands for its whole row, like `Table.RowLink`, for rows that open a drawer or run an
|
|
48
|
+
action instead of navigating. [Table](src/components/table/table.stories.tsx#RowButton) — Nikolaus Brunner
|
|
49
|
+
<brunner@imfusion.com>
|
|
50
|
+
- `Combobox` and `Autocomplete` are new inputs adapted from Base UI: a text field with a filterable list, for choosing one or
|
|
51
|
+
several options (`Combobox`) or suggesting options while keeping free text (`Autocomplete`). Multi-select lists show a
|
|
52
|
+
checkbox on every row. [Combobox](src/components/combobox/combobox.mdx),
|
|
53
|
+
[Autocomplete](src/components/autocomplete/autocomplete.mdx) ([WEBSDK-245](https://imfusion.atlassian.net/browse/WEBSDK-245))
|
|
54
|
+
— Nikolaus Brunner <brunner@imfusion.com>
|
|
7
55
|
- `minWidth` and the `BreakpointName` type are exported, so `useMediaQuery(minWidth("md"))` works as the `styling` topic
|
|
8
56
|
shows. — Nikolaus Brunner <brunner@imfusion.com>
|
|
9
57
|
- `@imfusion/web-ui/icons` adds four viewport layout icons in the Layout category: `LayoutAuto`, `LayoutRows`,
|
|
10
58
|
`LayoutFocusPlusStack`, and `LayoutFocusPlusRows`. [Iconography](src/icons/iconography.stories.tsx#Iconography)
|
|
11
59
|
— Stephan Wenninger <wenninger@imfusion.com>
|
|
60
|
+
- `LayoutMode` is new, from `@imfusion/web-ui/integrations/layout-mode`. It switches the ImFusion Web SDK viewer between
|
|
61
|
+
Auto, Rows, Focus + stack, and Focus + rows through `useLayoutMode`. `variant="compact"` is a row of icon toggles and
|
|
62
|
+
`variant="labeled"` a vertical list with each mode's name beside its icon; every name can be replaced through its label
|
|
63
|
+
prop. [LayoutMode](src/integrations/layout-mode/layout-mode.mdx)
|
|
64
|
+
([WEBSDK-292](https://imfusion.atlassian.net/browse/WEBSDK-292)) — Stephan Wenninger <wenninger@imfusion.com>
|
|
65
|
+
- `Typo.UnorderedList` takes `markerVariant` to colour its dash apart from the text, such as the brand dash on main text.
|
|
66
|
+
[Typo](src/components/typo/typo.stories.tsx#MarkerVariant) — Nikolaus Brunner <brunner@imfusion.com>
|
|
67
|
+
- Focus ring tokens: `--imf-ui-focus-ring-width`, `--imf-ui-focus-ring-color`, and two offsets for a ring outside the
|
|
68
|
+
element or inside it (`-offset`, `-offset-inset`).
|
|
69
|
+
([WEBSDK-274](https://imfusion.atlassian.net/browse/WEBSDK-274)) — Nikolaus Brunner <brunner@imfusion.com>
|
|
70
|
+
- `initialsFromName` gives one or two initials from a display name for `Avatar.Fallback`: `Mona Keller` gives `MK`, a single
|
|
71
|
+
word gives its first two letters, and an empty name gives `?`. [Avatar](src/components/avatar/avatar.mdx) — Nikolaus
|
|
72
|
+
Brunner <brunner@imfusion.com>
|
|
12
73
|
|
|
13
74
|
### Changed
|
|
14
75
|
|
|
76
|
+
- `Button`, `IconButton`, and `CopyButton` keep their hover look while the popup, menu, or drawer they open is shown
|
|
77
|
+
(`data-popup-open` with `aria-expanded`). A tooltip does not trigger it. This includes a `Button` passed as `render` to a
|
|
78
|
+
`Popover.Trigger`, `Menu.Trigger`, or `Drawer.Trigger`.
|
|
79
|
+
[Button](src/components/button/button.mdx) — Nikolaus Brunner <brunner@imfusion.com>
|
|
80
|
+
- `Dialog.Simple` and `Dialog.Inline` without children render no `Dialog.Body`, so the header sits directly on the footer
|
|
81
|
+
without the body's padding between them. [Dialog](src/components/dialog/dialog.mdx)
|
|
82
|
+
([WEBSDK-247](https://imfusion.atlassian.net/browse/WEBSDK-247)) — Nikolaus Brunner <brunner@imfusion.com>
|
|
83
|
+
- `initialsFromEmail` gives the first two letters of a single-segment local part, `jkeller@…` gives `JK`, and `?` for an
|
|
84
|
+
empty one, the same rule as `initialsFromName`. [Avatar](src/components/avatar/avatar.mdx) — Nikolaus Brunner
|
|
85
|
+
<brunner@imfusion.com>
|
|
86
|
+
- `Input`, `Field.Control`, `NumberField`, `Select`, `Combobox`, and `Autocomplete` show focus by turning their 1px border
|
|
87
|
+
primary, with no outline. [Input](src/components/input/input.mdx) — Nikolaus Brunner <brunner@imfusion.com>
|
|
88
|
+
- `Drawer` draws no border by default; `borderColor` adds one, such as `borderColor="primary"` for the previous look.
|
|
89
|
+
[Drawer](src/components/drawer/drawer.mdx) — Nikolaus Brunner <brunner@imfusion.com>
|
|
90
|
+
- Focus ring ([WEBSDK-274](https://imfusion.atlassian.net/browse/WEBSDK-274)) — Nikolaus Brunner <brunner@imfusion.com>
|
|
91
|
+
- Every component draws the same focus ring from the focus ring tokens, and popups draw none.
|
|
92
|
+
- Navigation items and toasts draw the ring fully inside the item.
|
|
93
|
+
- A focused `Toggle` draws no box: its icon turns bolder and its label underlined, in primary unless pressed.
|
|
94
|
+
- An open `Select` trigger keeps its surface and turns its border primary instead of filling with primary.
|
|
95
|
+
- A focused `Tabs.Tab` underlines its label instead of drawing a box that looks like the active indicator. A focused
|
|
96
|
+
`Tabs.Panel` tints together with the active tab instead of drawing a second line inside its border.
|
|
97
|
+
- The branded `AppShell` header and navbar draw a light ring. A focused `AppShell.NavItem` shows its active underline at
|
|
98
|
+
double thickness instead of an outline.
|
|
99
|
+
- A light ring shows on blue fills: an active or open `NavigationMenu` link or trigger, and the `oncolor` context of
|
|
100
|
+
`Button`, `AccountCard`, and `Typo`.
|
|
101
|
+
- `AppShell.Burger` draws the primary ring on default surfaces, where it used the text colour.
|
|
102
|
+
- A focused chamfered `Button` shows its hover state, and `Code.Block`'s copy button colours its icon; a ring cannot
|
|
103
|
+
show through their clip-path.
|
|
104
|
+
- `Code`'s inline copy button shows the ring in place of the browser default.
|
|
105
|
+
- `Typo.UnorderedList` draws its dash in the text colour by default; `markerVariant="primary"` gives the brand dash.
|
|
106
|
+
— Nikolaus Brunner <brunner@imfusion.com>
|
|
107
|
+
- `Callout.Root` defaults to `maxWidth="lg"`, keeps a minimum width of 15rem, and spaces its title, description, and list
|
|
108
|
+
items more evenly. [Callout](src/components/callout/callout.stories.tsx#WithList) — Nikolaus Brunner <brunner@imfusion.com>
|
|
109
|
+
- `Select` items have more room: 1rem padding at the sides and 0.75rem above, below, and between the indicator and text.
|
|
110
|
+
The trigger's focus ring sits on its border. [Select](src/components/select/select.mdx)
|
|
111
|
+
([WEBSDK-245](https://imfusion.atlassian.net/browse/WEBSDK-245)) — Nikolaus Brunner <brunner@imfusion.com>
|
|
15
112
|
- Agent skills — Nikolaus Brunner <brunner@imfusion.com>
|
|
16
113
|
- `imf-web-ui-conventions` exempts React components from the explicit return type on exported functions.
|
|
114
|
+
- The `imf-web-ui-conventions` `npm-project` topic sets `engines.node` to Web UI's own range, and `imf-web-ui-audit`
|
|
115
|
+
reports an app whose range admits a Node outside it.
|
|
116
|
+
- The `imf-web-ui-conventions` `assets` topic points to `Image` for content images.
|
|
117
|
+
- `web-ui-dev-new-component` adds a review step before handover: conventions and plan checklist against the code, a token
|
|
118
|
+
showcase entry, the docs audit, and an `implementation-reviewer` pass.
|
|
119
|
+
- `web-ui-dev-new-component` and the design-system doc require rendering every published drafts-canvas board and looking
|
|
120
|
+
at it, by the session that owns the work, using a local copy of the board.
|
|
17
121
|
- The `project-structure` topic keeps a route's only view, such as a form, in the route file and moves views to the `-`
|
|
18
122
|
folder only when the page composes several. `imf-web-ui-audit` reports by views, not line counts.
|
|
19
|
-
- The `imf-web-ui-conventions`
|
|
123
|
+
- The `imf-web-ui-conventions` `assets` topic encodes photographs as AVIF and WebP at 800 and 1600px and renders them
|
|
124
|
+
through `<picture>` with `srcSet` and `sizes`. Every `<img>` has `width` and `height`, below-the-fold images load
|
|
125
|
+
lazily, and only the largest paint gets `fetchpriority="high"`.
|
|
126
|
+
- The `imf-web-ui-conventions` `components` topic names the landmarks `AppShell` renders and asks for one `Typo.H1` per
|
|
127
|
+
page, `Button` for actions, and `Link` for destinations.
|
|
128
|
+
- The `imf-web-ui-conventions` `library-boundary` topic reports a native element or local function that duplicates a Web
|
|
129
|
+
UI component, part, or helper such as `initialsFromName`.
|
|
130
|
+
- Forms use TanStack Form: `imf-web-ui-ux` names it for every form, the `imf-web-ui-conventions` `validation` topic
|
|
131
|
+
validates user input in the form's validators with the Zod schema, and `imf-web-ui-audit` reports a form whose state and
|
|
132
|
+
validation are written by hand.
|
|
133
|
+
- The `imf-web-ui-conventions` `react` topic splits into `composition`, `state`, and `effects`, and each rule names the
|
|
134
|
+
React version it needs. New rules from react.dev: pure render, no component defined inside another, no `ref.current`
|
|
135
|
+
during render, `ref` as a prop, `useId` for accessibility ids, error boundaries around UI units, one `status` over
|
|
136
|
+
exclusive booleans, pure reducers, no object or function effect dependencies, and `useEffectEvent` for values an effect
|
|
137
|
+
should not react to. React's `<form action>`, `useActionState`, and `useOptimistic` are the fallbacks without TanStack.
|
|
138
|
+
- `web-ui-dev-new-component`, `web-ui-dev-update-component`, and `web-ui-dev-design-component` draft on the shared
|
|
139
|
+
Web UI Component Drafts canvas: a block per component on its Storybook group's page, one row per fidelity rung.
|
|
140
|
+
- `web-ui-dev-new-component` and `web-ui-dev-update-component` wait for the user to approve the design on the canvas
|
|
141
|
+
before writing the plan.
|
|
142
|
+
- Agents verify visual work on their own Storybook, started with `npm run dev`, against the approved canvas design.
|
|
143
|
+
- `web-ui-dev-teardown-worktree` lands local base-branch commits together with the worktree branch, and a branch with
|
|
144
|
+
an open Bitbucket pull request merges in Bitbucket with `bkt pr merge`.
|
|
145
|
+
- `web-ui-dev-new-component` and `web-ui-dev-update-component` open a drafts-canvas block with an API table and short
|
|
146
|
+
usage snippets.
|
|
147
|
+
- `web-ui-dev-design-system-sync` leaves every story exported from `renderAll` out of the sync on its own, so a new
|
|
148
|
+
component's `All` story no longer breaks the next sync. Until 2026-12-14 every sync also uploads the same build to the
|
|
149
|
+
standalone Claude Design project.
|
|
150
|
+
- The `imf-web-ui-conventions` `styling` topic shows a container setting a custom property that its child reads with
|
|
151
|
+
its own default as the fallback.
|
|
152
|
+
- `web-ui-dev-release` syncs the Claude Design system once npm serves the stable version.
|
|
153
|
+
- `web-ui-dev-record-clip` records every clip in light and dark, and release highlights list both files of each pair.
|
|
154
|
+
- Documentation — Nikolaus Brunner <brunner@imfusion.com>
|
|
155
|
+
- The Changelog page's screenshot carousel shows one file of each `-light`/`-dark` pair, the one for the page's color
|
|
156
|
+
scheme, and switches with the Storybook toolbar.
|
|
157
|
+
- `docs/design-system.md` describes the Web UI Component Drafts canvas, and `AGENTS.md` links it. A shipped component
|
|
158
|
+
keeps its block under an "Implemented" note that names its story.
|
|
159
|
+
- `docs/conventions.md` shows how a component declares its default as a custom-property fallback that a container
|
|
160
|
+
overrides.
|
|
161
|
+
- `design/DESIGN.md` says focus turns a field's hairline border primary: one line, same width, nothing outside it.
|
|
162
|
+
- Storybook — Nikolaus Brunner <brunner@imfusion.com>
|
|
163
|
+
- The Controls table lists a component's own props first, then the props it inherits from Base UI or React.
|
|
164
|
+
- `withFrame` draws its border only with `bordered: true`. Layout stories such as Stack and Row use it to show their bounds.
|
|
165
|
+
- Interaction tests live in hidden `Test-only:` stories, and default-open popups open only in the single-story view,
|
|
166
|
+
as `docs/story-conventions.md` describes.
|
|
167
|
+
- Combobox and Autocomplete stories start at the same top-left corner, so clicking through them does not shift the
|
|
168
|
+
layout. A story resizes its frame with `parameters.frame`, which `withFrame` reads.
|
|
169
|
+
- The Autocomplete interaction test reads the popup's height after it reopens, so it passes on every run.
|
|
170
|
+
- `engines.node` is `^24.14 || >=26`. Node 22 and Node 24 before 24.14 reject `#/` subpath imports, so Storybook did not
|
|
171
|
+
start there. CI builds on Node 24.14.0, and `.nvmrc` selects Node 24. — Nikolaus Brunner <brunner@imfusion.com>
|
|
172
|
+
- `RichLink` sets every label in the strong weight, with or without a `description`. [RichLink](src/components/rich-link/rich-link.mdx) — Nikolaus Brunner <brunner@imfusion.com>
|
|
20
173
|
|
|
21
174
|
### Fixed
|
|
22
175
|
|
|
176
|
+
- `Drawer.Title` wraps a long title instead of running past the panel edge.
|
|
177
|
+
[Drawer](src/components/drawer/drawer.stories.tsx#LongTitle) — Nikolaus Brunner <brunner@imfusion.com>
|
|
178
|
+
- `Card` describes its coloured fills correctly: they set the background, and their content takes `oncolor` variants. —
|
|
179
|
+
Nikolaus Brunner <brunner@imfusion.com>
|
|
180
|
+
- Typo inside `Callout.Description`, such as `Typo.UnorderedList` or `Typo.P`, matches the description's size and takes
|
|
181
|
+
the variant's colour. [Callout](src/components/callout/callout.stories.tsx#WithList) — Nikolaus Brunner <brunner@imfusion.com>
|
|
182
|
+
- A `Select` option with `Select.ItemDescription` is named by its text alone and reads the description as its accessible
|
|
183
|
+
description. ([WEBSDK-245](https://imfusion.atlassian.net/browse/WEBSDK-245)) — Nikolaus Brunner <brunner@imfusion.com>
|
|
184
|
+
- Generated CSS module types skip `:global()` selectors instead of listing their names as classes. — Nikolaus Brunner
|
|
185
|
+
<brunner@imfusion.com>
|
|
23
186
|
- `Table.RowLink` covers its whole row: a click anywhere in the row follows the link, while buttons, checkboxes, switches,
|
|
24
187
|
links, and form fields in the row keep their own click. — Nikolaus Brunner <brunner@imfusion.com>
|
|
25
188
|
- `npm run dev` starts Storybook on the next free port again while another checkout's Storybook runs. — Nikolaus Brunner
|
|
26
189
|
<brunner@imfusion.com>
|
|
190
|
+
- A Storybook sidebar row's status icon stays in place on hover. — Nikolaus Brunner <brunner@imfusion.com>
|
|
191
|
+
- `npm run ci:status` lists queued and running builds beside finished ones. — Nikolaus Brunner <brunner@imfusion.com>
|
|
192
|
+
- Components — Nikolaus Brunner <brunner@imfusion.com>
|
|
193
|
+
- A `Drawer.Close` or `Popover.Close` rendered as another component, such as a `Button`, keeps that component's styles.
|
|
194
|
+
- A `Popover.Trigger` rendered as another component keeps that component's styles, so `render={<Button />}` looks like a Button.
|
|
195
|
+
- `dist/style.css` opens with the layer order statement (`imf-ui.tokens`, `imf-ui.base`, `imf-ui.components`), so each
|
|
196
|
+
component's own focus style beats the base focus ring and a focused field shows only its primary border.
|
|
197
|
+
([WEBSDK-274](https://imfusion.atlassian.net/browse/WEBSDK-274)) — Nikolaus Brunner <brunner@imfusion.com>
|
|
198
|
+
- `Popover.Positioner` sets the popup 4px away from its trigger by default, as `Select` does, on whichever side it opens.
|
|
199
|
+
— Nikolaus Brunner <brunner@imfusion.com>
|
|
200
|
+
- `Button variant="primary"` hovers to a blue outline on any surface. Its hover fill was the `main` background, which showed as a
|
|
201
|
+
white box on a `support` card. [Button](src/components/button/button.stories.tsx#OnSupportCard) — Nikolaus Brunner <brunner@imfusion.com>
|
|
27
202
|
|
|
28
203
|
---
|
|
29
204
|
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { t as e } from "./rolldown-runtime-Dy4uBu1J.js";
|
|
2
2
|
import { Xo as t, _M as n, ja as r } from "./icons-vc1WZCxX.js";
|
|
3
3
|
import { t as i } from "./meta-V_KyLeGn.js";
|
|
4
|
-
import { a, i as o, n as s, o as c, s as l } from "./scroll-area-
|
|
4
|
+
import { a, i as o, n as s, o as c, s as l } from "./scroll-area-CXQ_SxPX.js";
|
|
5
5
|
import { cx as u } from "class-variance-authority";
|
|
6
6
|
import { Fragment as d, jsx as f, jsxs as p } from "react/jsx-runtime";
|
|
7
7
|
import { useCallback as m, useEffect as h, useRef as g, useState as _ } from "react";
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
8
|
+
import { useRender as v } from "@base-ui/react/use-render";
|
|
9
|
+
import { mergeProps as y } from "@base-ui/react/merge-props";
|
|
10
10
|
//#region src/hooks/use-clipboard.ts
|
|
11
11
|
function b({ timeout: e = 1500 } = {}) {
|
|
12
12
|
let [t, n] = _(!1), r = g(void 0);
|
|
@@ -35,11 +35,11 @@ var x = {
|
|
|
35
35
|
});
|
|
36
36
|
function C({ copyable: e = !1, children: i, render: a, ...o }) {
|
|
37
37
|
let { copied: s, copy: c } = b(), l = g(null), u = s ? r : t;
|
|
38
|
-
return
|
|
38
|
+
return v({
|
|
39
39
|
defaultTagName: "code",
|
|
40
40
|
render: a,
|
|
41
41
|
props: {
|
|
42
|
-
...
|
|
42
|
+
...y(o, {
|
|
43
43
|
className: x.inline,
|
|
44
44
|
children: /* @__PURE__ */ p(d, { children: [
|
|
45
45
|
/* @__PURE__ */ f("span", {
|
|
@@ -72,11 +72,11 @@ function w({ kind: e = "external", ...t }) {
|
|
|
72
72
|
target: "_blank",
|
|
73
73
|
rel: "noreferrer"
|
|
74
74
|
} : {};
|
|
75
|
-
return
|
|
75
|
+
return v({
|
|
76
76
|
defaultTagName: "a",
|
|
77
77
|
render: t.render,
|
|
78
78
|
props: {
|
|
79
|
-
...
|
|
79
|
+
...y(n, t, {
|
|
80
80
|
className: u(x.inline, x.inlineLink, t.className),
|
|
81
81
|
children: t.children
|
|
82
82
|
}),
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
import { Autocomplete as AutocompletePrimitive } from '@base-ui/react/autocomplete';
|
|
2
|
+
import { Separator as SeparatorPrimitive } from '@base-ui/react/separator';
|
|
3
|
+
import { VariantProps } from 'class-variance-authority';
|
|
4
|
+
import { comboboxRoot } from '../combobox/combobox.cva';
|
|
5
|
+
type UpstreamItem = React.ComponentProps<typeof AutocompletePrimitive.Item>;
|
|
6
|
+
type RootProps<ItemValue> = Omit<AutocompletePrimitive.Root.Props<ItemValue>, "items"> & {
|
|
7
|
+
items?: readonly ItemValue[] | undefined;
|
|
8
|
+
/** Field width: `auto` keeps the compact minimum; `wide` raises it; `full` fills the parent. @default "auto" */
|
|
9
|
+
width?: VariantProps<typeof comboboxRoot>["width"];
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* Autocomplete.Root — text input that suggests options as you type and keeps free text.
|
|
13
|
+
*
|
|
14
|
+
* Wraps children in a div so the field and its label stack regardless of the parent's layout.
|
|
15
|
+
* Autocomplete.Portal is unaffected (it renders to document.body).
|
|
16
|
+
*
|
|
17
|
+
* @doc https://base-ui.com/react/components/autocomplete
|
|
18
|
+
* @llm https://base-ui.com/react/components/autocomplete.md
|
|
19
|
+
*/
|
|
20
|
+
export declare function Root<ItemValue = unknown>({ width, className, style, ...props }: RootProps<ItemValue> & {
|
|
21
|
+
className?: string;
|
|
22
|
+
style?: React.CSSProperties;
|
|
23
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
24
|
+
export declare namespace Root {
|
|
25
|
+
var displayName: string;
|
|
26
|
+
}
|
|
27
|
+
/** Autocomplete.InputGroup — the field box that holds the input, clear button, and trigger. */
|
|
28
|
+
export declare function InputGroup(props: React.ComponentProps<typeof AutocompletePrimitive.InputGroup>): import("react/jsx-runtime").JSX.Element;
|
|
29
|
+
export declare namespace InputGroup {
|
|
30
|
+
var displayName: string;
|
|
31
|
+
}
|
|
32
|
+
/** Autocomplete.Input — the text input. Its text is the value. */
|
|
33
|
+
export declare function Input(props: React.ComponentProps<typeof AutocompletePrimitive.Input>): import("react/jsx-runtime").JSX.Element;
|
|
34
|
+
export declare namespace Input {
|
|
35
|
+
var displayName: string;
|
|
36
|
+
}
|
|
37
|
+
/** Autocomplete.Trigger — button that opens the popup. Without children it draws a chevron. */
|
|
38
|
+
export declare function Trigger({ children, ...props }: React.ComponentProps<typeof AutocompletePrimitive.Trigger>): import("react/jsx-runtime").JSX.Element;
|
|
39
|
+
export declare namespace Trigger {
|
|
40
|
+
var displayName: string;
|
|
41
|
+
}
|
|
42
|
+
/** Autocomplete.Icon — visual indicator (chevron) inside the trigger. */
|
|
43
|
+
export declare function Icon(props: React.ComponentProps<typeof AutocompletePrimitive.Icon>): import("react/jsx-runtime").JSX.Element;
|
|
44
|
+
export declare namespace Icon {
|
|
45
|
+
var displayName: string;
|
|
46
|
+
}
|
|
47
|
+
/** Autocomplete.Clear — button that clears the text. Without children it draws a cross. */
|
|
48
|
+
export declare function Clear({ children, ...props }: React.ComponentProps<typeof AutocompletePrimitive.Clear>): import("react/jsx-runtime").JSX.Element;
|
|
49
|
+
export declare namespace Clear {
|
|
50
|
+
var displayName: string;
|
|
51
|
+
}
|
|
52
|
+
/** Autocomplete.Value — renders the input text. */
|
|
53
|
+
export declare function Value(props: React.ComponentProps<typeof AutocompletePrimitive.Value>): import("react/jsx-runtime").JSX.Element;
|
|
54
|
+
export declare namespace Value {
|
|
55
|
+
var displayName: string;
|
|
56
|
+
}
|
|
57
|
+
/** Autocomplete.Portal — portals the popup tree to document.body (or a custom container). */
|
|
58
|
+
export declare function Portal(props: React.ComponentProps<typeof AutocompletePrimitive.Portal>): import("react/jsx-runtime").JSX.Element;
|
|
59
|
+
export declare namespace Portal {
|
|
60
|
+
var displayName: string;
|
|
61
|
+
}
|
|
62
|
+
/** Autocomplete.Backdrop — overlay behind the popup (visible only in modal mode). */
|
|
63
|
+
export declare function Backdrop(props: React.ComponentProps<typeof AutocompletePrimitive.Backdrop>): import("react/jsx-runtime").JSX.Element;
|
|
64
|
+
export declare namespace Backdrop {
|
|
65
|
+
var displayName: string;
|
|
66
|
+
}
|
|
67
|
+
/** Autocomplete.Positioner — positions the popup relative to the field. */
|
|
68
|
+
export declare function Positioner({ align, sideOffset, ...props }: React.ComponentProps<typeof AutocompletePrimitive.Positioner>): import("react/jsx-runtime").JSX.Element;
|
|
69
|
+
export declare namespace Positioner {
|
|
70
|
+
var displayName: string;
|
|
71
|
+
}
|
|
72
|
+
/** Autocomplete.Popup — dropdown surface. It keeps the height it had when it opened while the list filters. */
|
|
73
|
+
export declare function Popup(props: React.ComponentProps<typeof AutocompletePrimitive.Popup>): import("react/jsx-runtime").JSX.Element;
|
|
74
|
+
export declare namespace Popup {
|
|
75
|
+
var displayName: string;
|
|
76
|
+
}
|
|
77
|
+
/** Autocomplete.Arrow — pointer arrow attached to the popup. */
|
|
78
|
+
export declare function Arrow(props: React.ComponentProps<typeof AutocompletePrimitive.Arrow>): import("react/jsx-runtime").JSX.Element;
|
|
79
|
+
export declare namespace Arrow {
|
|
80
|
+
var displayName: string;
|
|
81
|
+
}
|
|
82
|
+
/** Autocomplete.Status — live-region line for loading and result counts, announced to screen readers. */
|
|
83
|
+
export declare function Status(props: React.ComponentProps<typeof AutocompletePrimitive.Status>): import("react/jsx-runtime").JSX.Element;
|
|
84
|
+
export declare namespace Status {
|
|
85
|
+
var displayName: string;
|
|
86
|
+
}
|
|
87
|
+
/** Autocomplete.Empty — message shown while no item matches. */
|
|
88
|
+
export declare function Empty(props: React.ComponentProps<typeof AutocompletePrimitive.Empty>): import("react/jsx-runtime").JSX.Element;
|
|
89
|
+
export declare namespace Empty {
|
|
90
|
+
var displayName: string;
|
|
91
|
+
}
|
|
92
|
+
/** Autocomplete.List — items container. An `inline` list keeps the height it had when it mounted while it filters. */
|
|
93
|
+
export declare function List(props: React.ComponentProps<typeof AutocompletePrimitive.List>): import("react/jsx-runtime").JSX.Element;
|
|
94
|
+
export declare namespace List {
|
|
95
|
+
var displayName: string;
|
|
96
|
+
}
|
|
97
|
+
/** Autocomplete.Row — one row of a `grid` list. */
|
|
98
|
+
export declare function Row(props: React.ComponentProps<typeof AutocompletePrimitive.Row>): import("react/jsx-runtime").JSX.Element;
|
|
99
|
+
export declare namespace Row {
|
|
100
|
+
var displayName: string;
|
|
101
|
+
}
|
|
102
|
+
/** Autocomplete.Collection — renders a list of items inside a group. */
|
|
103
|
+
export declare function Collection(props: React.ComponentProps<typeof AutocompletePrimitive.Collection>): import("react/jsx-runtime").JSX.Element;
|
|
104
|
+
export declare namespace Collection {
|
|
105
|
+
var displayName: string;
|
|
106
|
+
}
|
|
107
|
+
interface ItemProps extends Omit<UpstreamItem, "value"> {
|
|
108
|
+
value: UpstreamItem["value"];
|
|
109
|
+
}
|
|
110
|
+
/** Autocomplete.Item — individual suggestion. It carries no selection state, so it has no indicator column. */
|
|
111
|
+
export declare function Item(props: ItemProps): import("react/jsx-runtime").JSX.Element;
|
|
112
|
+
export declare namespace Item {
|
|
113
|
+
var displayName: string;
|
|
114
|
+
}
|
|
115
|
+
/** Autocomplete.ItemText — text label for an item. */
|
|
116
|
+
export declare function ItemText(props: React.ComponentProps<"span">): import("react/jsx-runtime").JSX.Element;
|
|
117
|
+
export declare namespace ItemText {
|
|
118
|
+
var displayName: string;
|
|
119
|
+
}
|
|
120
|
+
/** Autocomplete.ItemDescription — a muted second line under an item's text. */
|
|
121
|
+
export declare function ItemDescription(props: React.ComponentProps<"div">): import("react/jsx-runtime").JSX.Element;
|
|
122
|
+
export declare namespace ItemDescription {
|
|
123
|
+
var displayName: string;
|
|
124
|
+
}
|
|
125
|
+
/** Autocomplete.Group — wrapper around a grouped set of items. */
|
|
126
|
+
export declare function Group(props: React.ComponentProps<typeof AutocompletePrimitive.Group>): import("react/jsx-runtime").JSX.Element;
|
|
127
|
+
export declare namespace Group {
|
|
128
|
+
var displayName: string;
|
|
129
|
+
}
|
|
130
|
+
/** Autocomplete.GroupLabel — heading for an Autocomplete.Group. */
|
|
131
|
+
export declare function GroupLabel(props: React.ComponentProps<typeof AutocompletePrimitive.GroupLabel>): import("react/jsx-runtime").JSX.Element;
|
|
132
|
+
export declare namespace GroupLabel {
|
|
133
|
+
var displayName: string;
|
|
134
|
+
}
|
|
135
|
+
/** Autocomplete.Separator — thin divider between items. */
|
|
136
|
+
export declare function Separator(props: React.ComponentProps<typeof SeparatorPrimitive>): import("react/jsx-runtime").JSX.Element;
|
|
137
|
+
export declare namespace Separator {
|
|
138
|
+
var displayName: string;
|
|
139
|
+
}
|
|
140
|
+
/** The upstream hook that builds a `filter` function from locale and match options. */
|
|
141
|
+
export declare const useFilter: typeof import('@base-ui/react/internals/filter').getFilter;
|
|
142
|
+
/** Reads the filtered items inside an autocomplete, for a custom list renderer. */
|
|
143
|
+
export declare const useFilteredItems: typeof AutocompletePrimitive.useFilteredItems;
|
|
144
|
+
export {};
|
|
@@ -23,7 +23,7 @@ declare namespace Root {
|
|
|
23
23
|
}
|
|
24
24
|
/**
|
|
25
25
|
* Avatar.Fallback — the initials the consumer passes, one or two letters. Without children it shows a person glyph.
|
|
26
|
-
* It derives nothing from a name or email.
|
|
26
|
+
* It derives nothing from a name or email; `initialsFromName` and `initialsFromEmail` do.
|
|
27
27
|
*/
|
|
28
28
|
declare function Fallback({ children, ...props }: React.ComponentProps<typeof AvatarPrimitive.Fallback>): import("react/jsx-runtime").JSX.Element;
|
|
29
29
|
declare namespace Fallback {
|
|
@@ -17,8 +17,9 @@ type RootProps = React.ComponentProps<"div"> & VariantProps<typeof root> & {
|
|
|
17
17
|
* `Card.Footer`. `density` sets one scale that drives both each slot's padding
|
|
18
18
|
* and the gap between slots. `variant` picks the look — neutral tonal surfaces
|
|
19
19
|
* (`main`/`support`/`minor`) carry a hairline border; coloured intent fills
|
|
20
|
-
* (`primary`/`brand`)
|
|
21
|
-
*
|
|
20
|
+
* (`primary`/`brand`) set the background only and are borderless. Put `oncolor`
|
|
21
|
+
* content inside them, e.g. `Typo variant="oncolor"` and `Button context="oncolor"`.
|
|
22
|
+
* `shadow` and `radius` layer on top. Also called a panel, tile, or paper.
|
|
22
23
|
*
|
|
23
24
|
* The image is always the first entry in the stack, so `orientation` just
|
|
24
25
|
* switches the stack between a column and a row without reordering slots.
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
/** Checkbox's box and mark styles, shared with primitives that draw the same visual on another element. */
|
|
2
|
+
export declare const checkboxRoot: (props?: import('class-variance-authority/types').ClassProp | undefined) => string;
|
|
3
|
+
export declare const checkboxIndicator: (props?: import('class-variance-authority/types').ClassProp | undefined) => string;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Class recipes for every Combobox part, shared with Autocomplete, which renders the same field and list.
|
|
3
|
+
* Popup, list, and item styles compose Select's.
|
|
4
|
+
*/
|
|
5
|
+
export declare const comboboxRoot: (props?: ({
|
|
6
|
+
width?: "auto" | "wide" | "full" | null | undefined;
|
|
7
|
+
} & import('class-variance-authority/types').ClassProp) | undefined) => string;
|
|
8
|
+
export declare const comboboxLabel: (props?: import('class-variance-authority/types').ClassProp | undefined) => string;
|
|
9
|
+
export declare const comboboxInputGroup: (props?: import('class-variance-authority/types').ClassProp | undefined) => string;
|
|
10
|
+
export declare const comboboxChips: (props?: import('class-variance-authority/types').ClassProp | undefined) => string;
|
|
11
|
+
export declare const comboboxInput: (props?: import('class-variance-authority/types').ClassProp | undefined) => string;
|
|
12
|
+
export declare const comboboxTrigger: (props?: import('class-variance-authority/types').ClassProp | undefined) => string;
|
|
13
|
+
export declare const comboboxIcon: (props?: import('class-variance-authority/types').ClassProp | undefined) => string;
|
|
14
|
+
export declare const comboboxClear: (props?: import('class-variance-authority/types').ClassProp | undefined) => string;
|
|
15
|
+
export declare const comboboxChip: (props?: import('class-variance-authority/types').ClassProp | undefined) => string;
|
|
16
|
+
export declare const comboboxChipRemove: (props?: import('class-variance-authority/types').ClassProp | undefined) => string;
|
|
17
|
+
export declare const comboboxBackdrop: (props?: import('class-variance-authority/types').ClassProp | undefined) => string;
|
|
18
|
+
export declare const comboboxPositioner: (props?: import('class-variance-authority/types').ClassProp | undefined) => string;
|
|
19
|
+
export declare const comboboxPopup: (props?: import('class-variance-authority/types').ClassProp | undefined) => string;
|
|
20
|
+
export declare const comboboxArrow: (props?: import('class-variance-authority/types').ClassProp | undefined) => string;
|
|
21
|
+
export declare const comboboxList: (props?: import('class-variance-authority/types').ClassProp | undefined) => string;
|
|
22
|
+
export declare const comboboxRow: (props?: import('class-variance-authority/types').ClassProp | undefined) => string;
|
|
23
|
+
export declare const comboboxStatus: (props?: import('class-variance-authority/types').ClassProp | undefined) => string;
|
|
24
|
+
export declare const comboboxEmpty: (props?: import('class-variance-authority/types').ClassProp | undefined) => string;
|
|
25
|
+
export declare const comboboxGroup: (props?: import('class-variance-authority/types').ClassProp | undefined) => string;
|
|
26
|
+
export declare const comboboxGroupLabel: (props?: import('class-variance-authority/types').ClassProp | undefined) => string;
|
|
27
|
+
export declare const comboboxSeparator: (props?: import('class-variance-authority/types').ClassProp | undefined) => string;
|
|
28
|
+
export declare const comboboxItem: (props?: import('class-variance-authority/types').ClassProp | undefined) => string;
|
|
29
|
+
export declare const comboboxItemIndicator: (props?: import('class-variance-authority/types').ClassProp | undefined) => string;
|
|
30
|
+
export declare const comboboxItemIndicatorBox: (props?: import('class-variance-authority/types').ClassProp | undefined) => string;
|
|
31
|
+
export declare const comboboxItemMark: (props?: import('class-variance-authority/types').ClassProp | undefined) => string;
|
|
32
|
+
export declare const comboboxItemText: (props?: import('class-variance-authority/types').ClassProp | undefined) => string;
|
|
33
|
+
export declare const comboboxItemDescription: (props?: import('class-variance-authority/types').ClassProp | undefined) => string;
|
|
34
|
+
/** Autocomplete items have no indicator column, so text and description start in the first one. */
|
|
35
|
+
export declare const autocompleteItem: (props?: import('class-variance-authority/types').ClassProp | undefined) => string;
|
|
36
|
+
export declare const autocompleteItemText: (props?: import('class-variance-authority/types').ClassProp | undefined) => string;
|
|
37
|
+
export declare const autocompleteItemDescription: (props?: import('class-variance-authority/types').ClassProp | undefined) => string;
|