@imfusion/web-ui 0.11.1-dev.3.ga6fcf91c → 0.11.1-dev.30.g5f35727d

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.
Files changed (43) hide show
  1. package/CHANGELOG.md +69 -0
  2. package/dist/{code-NTcddiYk.js → code-BXlEW54h.js} +7 -7
  3. package/dist/components/autocomplete/autocomplete.d.ts +144 -0
  4. package/dist/components/autocomplete/autocomplete.meta.d.ts +2 -0
  5. package/dist/components/autocomplete/index.d.ts +2 -0
  6. package/dist/components/checkbox/checkbox.cva.d.ts +3 -0
  7. package/dist/components/combobox/combobox.cva.d.ts +37 -0
  8. package/dist/components/combobox/combobox.d.ts +171 -0
  9. package/dist/components/combobox/combobox.meta.d.ts +2 -0
  10. package/dist/components/combobox/index.d.ts +2 -0
  11. package/dist/components/popover/popover.d.ts +1 -1
  12. package/dist/components/select/select.cva.d.ts +7 -0
  13. package/dist/components/select/select.d.ts +1 -1
  14. package/dist/components/table/table.d.ts +8 -0
  15. package/dist/components/textarea/index.d.ts +2 -0
  16. package/dist/components/textarea/textarea.d.ts +32 -0
  17. package/dist/components/textarea/textarea.meta.d.ts +2 -0
  18. package/dist/components/toast/toast.d.ts +1 -1
  19. package/dist/components/typo/typo.d.ts +5 -1
  20. package/dist/docgen/component-sources.d.ts +4 -0
  21. package/dist/icons/catalog.gen.d.ts +28 -0
  22. package/dist/icons/icons.gen.d.ts +4 -0
  23. package/dist/{icons-BsK_o-Cb.js → icons-vc1WZCxX.js} +1027 -879
  24. package/dist/icons.js +1 -1
  25. package/dist/index.d.ts +3 -0
  26. package/dist/index.js +2637 -1873
  27. package/dist/integrations/code-highlight.js +2 -2
  28. package/dist/integrations/frame-selection.js +1 -1
  29. package/dist/integrations/image-display-options.js +3 -3
  30. package/dist/{scroll-area-z9Lf9uIk.js → scroll-area-CUo1NBaW.js} +20 -20
  31. package/dist/{slider-Bf274cMe.js → slider-BKDxeTmk.js} +23 -23
  32. package/dist/style.css +1 -1
  33. package/dist/{tabs-CU46aGud.js → tabs-U3Cg6YAw.js} +42 -42
  34. package/dist/utils/index.d.ts +2 -0
  35. package/dist/utils/item-parts.d.ts +23 -0
  36. package/dist/utils/stable-popup-height.d.ts +10 -0
  37. package/dist/utils-RZJAXfcf.js +56 -0
  38. package/package.json +1 -1
  39. package/src/docgen/doc.gen.json +3235 -676
  40. package/src/llms/icon-catalog.gen.json +32 -0
  41. package/src/llms/llms.gen.txt +18 -0
  42. package/src/llms/skills/imf-web-ui-conventions/topics/styling.md +13 -0
  43. package/dist/resolve-state-props-DQf9WiGv.js +0 -22
package/CHANGELOG.md CHANGED
@@ -4,16 +4,85 @@
4
4
 
5
5
  ### Added
6
6
 
7
+ - `Textarea` is a new multi-line input adapted from Base UI, with the `Input` variants and sizes, a drag-to-resize corner, and
8
+ validation state from `Field`. [Textarea](src/components/textarea/textarea.mdx)
9
+ ([WEBSDK-244](https://imfusion.atlassian.net/browse/WEBSDK-244)) — Nikolaus Brunner <brunner@imfusion.com>
10
+ - `Table.RowButton` is a button that stands for its whole row, like `Table.RowLink`, for rows that open a drawer or run an
11
+ action instead of navigating. [Table](src/components/table/table.stories.tsx#RowButton) — Nikolaus Brunner
12
+ <brunner@imfusion.com>
13
+ - `Combobox` and `Autocomplete` are new inputs adapted from Base UI: a text field with a filterable list, for choosing one or
14
+ several options (`Combobox`) or suggesting options while keeping free text (`Autocomplete`). Multi-select lists show a
15
+ checkbox on every row. [Combobox](src/components/combobox/combobox.mdx),
16
+ [Autocomplete](src/components/autocomplete/autocomplete.mdx) ([WEBSDK-245](https://imfusion.atlassian.net/browse/WEBSDK-245))
17
+ — Nikolaus Brunner <brunner@imfusion.com>
7
18
  - `minWidth` and the `BreakpointName` type are exported, so `useMediaQuery(minWidth("md"))` works as the `styling` topic
8
19
  shows. — Nikolaus Brunner <brunner@imfusion.com>
20
+ - `@imfusion/web-ui/icons` adds four viewport layout icons in the Layout category: `LayoutAuto`, `LayoutRows`,
21
+ `LayoutFocusPlusStack`, and `LayoutFocusPlusRows`. [Iconography](src/icons/iconography.stories.tsx#Iconography)
22
+ — Stephan Wenninger <wenninger@imfusion.com>
23
+ - `Typo.UnorderedList` takes `markerVariant` to colour its dash apart from the text, such as the brand dash on main text.
24
+ [Typo](src/components/typo/typo.stories.tsx#MarkerVariant) — Nikolaus Brunner <brunner@imfusion.com>
9
25
 
10
26
  ### Changed
11
27
 
28
+ - `Input`, `Field.Control`, `NumberField`, `Select`, `Combobox`, and `Autocomplete` show focus by turning their 1px border
29
+ primary, with no outline. [Input](src/components/input/input.mdx) — Nikolaus Brunner <brunner@imfusion.com>
30
+ - `Drawer` draws no border by default; `borderColor` adds one, such as `borderColor="primary"` for the previous look.
31
+ [Drawer](src/components/drawer/drawer.mdx) — Nikolaus Brunner <brunner@imfusion.com>
32
+ - `Typo.UnorderedList` draws its dash in the text colour by default; `markerVariant="primary"` gives the brand dash.
33
+ — Nikolaus Brunner <brunner@imfusion.com>
34
+ - `Callout.Root` defaults to `maxWidth="lg"`, keeps a minimum width of 15rem, and spaces its title, description, and list
35
+ items more evenly. [Callout](src/components/callout/callout.stories.tsx#WithList) — Nikolaus Brunner <brunner@imfusion.com>
36
+ - `Select` items have more room: 1rem padding at the sides and 0.75rem above, below, and between the indicator and text.
37
+ The trigger's focus ring sits on its border. [Select](src/components/select/select.mdx)
38
+ ([WEBSDK-245](https://imfusion.atlassian.net/browse/WEBSDK-245)) — Nikolaus Brunner <brunner@imfusion.com>
12
39
  - Agent skills — Nikolaus Brunner <brunner@imfusion.com>
13
40
  - `imf-web-ui-conventions` exempts React components from the explicit return type on exported functions.
14
41
  - The `project-structure` topic keeps a route's only view, such as a form, in the route file and moves views to the `-`
15
42
  folder only when the page composes several. `imf-web-ui-audit` reports by views, not line counts.
16
43
  - The `imf-web-ui-conventions` audit checklist names the assets box "Photographs: WebP", like its topic heading.
44
+ - `web-ui-dev-new-component`, `web-ui-dev-update-component`, and `web-ui-dev-design-component` draft on the shared
45
+ Web UI Component Drafts canvas: a block per component on its Storybook group's page, one row per fidelity rung.
46
+ - `web-ui-dev-new-component` and `web-ui-dev-update-component` wait for the user to approve the design on the canvas
47
+ before writing the plan.
48
+ - Agents verify visual work on their own Storybook, started with `npm run dev`, against the approved canvas design.
49
+ - `web-ui-dev-teardown-worktree` lands local base-branch commits together with the worktree branch, and Bitbucket pull
50
+ requests merge with rebase and fast-forward.
51
+ - The `imf-web-ui-conventions` `styling` topic shows a container setting a custom property that its child reads with
52
+ its own default as the fallback.
53
+ - `web-ui-dev-release` syncs the Claude Design system once npm serves the stable version.
54
+ - Documentation — Nikolaus Brunner <brunner@imfusion.com>
55
+ - `docs/design-system.md` describes the Web UI Component Drafts canvas, and `AGENTS.md` links it. A shipped component
56
+ keeps its block under an "Implemented" note that names its story.
57
+ - `docs/conventions.md` shows how a component declares its default as a custom-property fallback that a container
58
+ overrides.
59
+ - `design/DESIGN.md` says focus turns a field's hairline border primary: one line, same width, nothing outside it.
60
+ - Storybook — Nikolaus Brunner <brunner@imfusion.com>
61
+ - The Controls table lists a component's own props first, then the props it inherits from Base UI or React.
62
+ - `withFrame` draws its border only with `bordered: true`. Layout stories such as Stack and Row use it to show their bounds.
63
+ - Interaction tests live in hidden `Test-only:` stories, and default-open popups open only in the single-story view,
64
+ as `docs/story-conventions.md` describes.
65
+ - Combobox and Autocomplete stories start at the same top-left corner, so clicking through them does not shift the
66
+ layout. A story resizes its frame with `parameters.frame`, which `withFrame` reads.
67
+
68
+ ### Fixed
69
+
70
+ - `Drawer.Title` wraps a long title instead of running past the panel edge.
71
+ [Drawer](src/components/drawer/drawer.stories.tsx#LongTitle) — Nikolaus Brunner <brunner@imfusion.com>
72
+ - Typo inside `Callout.Description`, such as `Typo.UnorderedList` or `Typo.P`, matches the description's size and takes
73
+ the variant's colour. [Callout](src/components/callout/callout.stories.tsx#WithList) — Nikolaus Brunner <brunner@imfusion.com>
74
+ - A `Select` option with `Select.ItemDescription` is named by its text alone and reads the description as its accessible
75
+ description. ([WEBSDK-245](https://imfusion.atlassian.net/browse/WEBSDK-245)) — Nikolaus Brunner <brunner@imfusion.com>
76
+ - Generated CSS module types skip `:global()` selectors instead of listing their names as classes. — Nikolaus Brunner
77
+ <brunner@imfusion.com>
78
+ - `Table.RowLink` covers its whole row: a click anywhere in the row follows the link, while buttons, checkboxes, switches,
79
+ links, and form fields in the row keep their own click. — Nikolaus Brunner <brunner@imfusion.com>
80
+ - `npm run dev` starts Storybook on the next free port again while another checkout's Storybook runs. — Nikolaus Brunner
81
+ <brunner@imfusion.com>
82
+ - A Storybook sidebar row's status icon stays in place on hover. — Nikolaus Brunner <brunner@imfusion.com>
83
+ - Components — Nikolaus Brunner <brunner@imfusion.com>
84
+ - A `Drawer.Close` or `Popover.Close` rendered as another component, such as a `Button`, keeps that component's styles.
85
+ - A `Popover.Trigger` rendered as another component keeps that component's styles, so `render={<Button />}` looks like a Button.
17
86
 
18
87
  ---
19
88
 
@@ -1,7 +1,7 @@
1
- import { r as e } from "./resolve-state-props-DQf9WiGv.js";
2
- import { Xo as t, ja as n, pM as r } from "./icons-BsK_o-Cb.js";
1
+ import { s as e } from "./utils-RZJAXfcf.js";
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-z9Lf9uIk.js";
4
+ import { a, i as o, n as s, o as c, s as l } from "./scroll-area-CUo1NBaW.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";
@@ -34,7 +34,7 @@ var x = {
34
34
  InlineLink: () => w
35
35
  });
36
36
  function C({ copyable: e = !1, children: i, render: a, ...o }) {
37
- let { copied: s, copy: c } = b(), l = g(null), u = s ? n : t;
37
+ let { copied: s, copy: c } = b(), l = g(null), u = s ? r : t;
38
38
  return y({
39
39
  defaultTagName: "code",
40
40
  render: a,
@@ -53,7 +53,7 @@ function C({ copyable: e = !1, children: i, render: a, ...o }) {
53
53
  "data-copied": s || void 0,
54
54
  "aria-label": s ? "Copied" : "Copy",
55
55
  onClick: () => c(l.current?.textContent ?? ""),
56
- children: /* @__PURE__ */ f(r, {
56
+ children: /* @__PURE__ */ f(n, {
57
57
  glyph: u,
58
58
  size: 12,
59
59
  strokeWidth: 2,
@@ -87,7 +87,7 @@ function w({ kind: e = "external", ...t }) {
87
87
  }
88
88
  w.displayName = "Code.InlineLink";
89
89
  function T({ className: e, language: i, hideCopy: d = !1, children: m, ...h }) {
90
- let { copied: _, copy: v } = b(), y = g(null), S = _ ? n : t;
90
+ let { copied: _, copy: v } = b(), y = g(null), S = _ ? r : t;
91
91
  return /* @__PURE__ */ p("div", {
92
92
  "data-imf-ui-component": "Code.Block",
93
93
  className: u(x.block, e),
@@ -102,7 +102,7 @@ function T({ className: e, language: i, hideCopy: d = !1, children: m, ...h }) {
102
102
  "data-copied": _ || void 0,
103
103
  "aria-label": _ ? "Copied" : "Copy",
104
104
  onClick: () => v(y.current?.textContent ?? ""),
105
- children: /* @__PURE__ */ f(r, {
105
+ children: /* @__PURE__ */ f(n, {
106
106
  glyph: S,
107
107
  size: 12,
108
108
  strokeWidth: 2,
@@ -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 {};
@@ -0,0 +1,2 @@
1
+ import { ComponentMeta } from '../../types/meta';
2
+ export declare const autocompleteMeta: ComponentMeta;
@@ -0,0 +1,2 @@
1
+ export * as Autocomplete from './autocomplete';
2
+ export { autocompleteMeta } from './autocomplete.meta';
@@ -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;
@@ -0,0 +1,171 @@
1
+ import { Combobox as ComboboxPrimitive } from '@base-ui/react/combobox';
2
+ import { Separator as SeparatorPrimitive } from '@base-ui/react/separator';
3
+ import { VariantProps } from 'class-variance-authority';
4
+ import { comboboxRoot } from './combobox.cva';
5
+ type UpstreamItem = React.ComponentProps<typeof ComboboxPrimitive.Item>;
6
+ interface RootProps<Value = unknown, Multiple extends boolean | undefined = false> extends React.ComponentProps<typeof ComboboxPrimitive.Root<Value, Multiple>> {
7
+ /** Field width: `auto` keeps the compact minimum; `wide` raises it; `full` fills the parent. @default "auto" */
8
+ width?: VariantProps<typeof comboboxRoot>["width"];
9
+ }
10
+ /**
11
+ * Combobox.Root — text input with a filterable list of options, for choosing one or several.
12
+ *
13
+ * Wraps children in a div so a sibling Combobox.Label stacks above the field regardless of the parent's layout.
14
+ * Combobox.Portal is unaffected (it renders to document.body).
15
+ *
16
+ * @doc https://base-ui.com/react/components/combobox
17
+ * @llm https://base-ui.com/react/components/combobox.md
18
+ */
19
+ export declare function Root<Value = unknown, Multiple extends boolean | undefined = false>({ width, className, style, ...props }: RootProps<Value, Multiple> & {
20
+ className?: string;
21
+ style?: React.CSSProperties;
22
+ }): import("react/jsx-runtime").JSX.Element;
23
+ export declare namespace Root {
24
+ var displayName: string;
25
+ }
26
+ /** Combobox.Label — visible label, for the trigger in the input-inside-popup pattern. Label an input with `Field.Label`. */
27
+ export declare function Label(props: React.ComponentProps<typeof ComboboxPrimitive.Label>): import("react/jsx-runtime").JSX.Element;
28
+ export declare namespace Label {
29
+ var displayName: string;
30
+ }
31
+ /** Combobox.InputGroup — the field box that holds the input, clear button, and trigger. */
32
+ export declare function InputGroup(props: React.ComponentProps<typeof ComboboxPrimitive.InputGroup>): import("react/jsx-runtime").JSX.Element;
33
+ export declare namespace InputGroup {
34
+ var displayName: string;
35
+ }
36
+ /** Combobox.Input — the text input that filters the list. An `inline` list is always open, so `aria-expanded` defaults to true. */
37
+ export declare function Input(props: React.ComponentProps<typeof ComboboxPrimitive.Input>): import("react/jsx-runtime").JSX.Element;
38
+ export declare namespace Input {
39
+ var displayName: string;
40
+ }
41
+ /** Combobox.Trigger — button that opens the popup. Without children it draws a chevron. */
42
+ export declare function Trigger({ children, ...props }: React.ComponentProps<typeof ComboboxPrimitive.Trigger>): import("react/jsx-runtime").JSX.Element;
43
+ export declare namespace Trigger {
44
+ var displayName: string;
45
+ }
46
+ /** Combobox.Icon — visual indicator (chevron) inside the trigger. */
47
+ export declare function Icon(props: React.ComponentProps<typeof ComboboxPrimitive.Icon>): import("react/jsx-runtime").JSX.Element;
48
+ export declare namespace Icon {
49
+ var displayName: string;
50
+ }
51
+ /** Combobox.Clear — button that clears the value. Without children it draws a cross. */
52
+ export declare function Clear({ children, ...props }: React.ComponentProps<typeof ComboboxPrimitive.Clear>): import("react/jsx-runtime").JSX.Element;
53
+ export declare namespace Clear {
54
+ var displayName: string;
55
+ }
56
+ /** Combobox.Value — renders the selected value, or the placeholder. */
57
+ export declare function Value(props: React.ComponentProps<typeof ComboboxPrimitive.Value>): import("react/jsx-runtime").JSX.Element;
58
+ export declare namespace Value {
59
+ var displayName: string;
60
+ }
61
+ /** Combobox.Chips — the field box of a multiple combobox, holding chips and the input. */
62
+ export declare function Chips(props: React.ComponentProps<typeof ComboboxPrimitive.Chips>): import("react/jsx-runtime").JSX.Element;
63
+ export declare namespace Chips {
64
+ var displayName: string;
65
+ }
66
+ /** Combobox.Chip — one selected value in the field. */
67
+ export declare function Chip(props: React.ComponentProps<typeof ComboboxPrimitive.Chip>): import("react/jsx-runtime").JSX.Element;
68
+ export declare namespace Chip {
69
+ var displayName: string;
70
+ }
71
+ /** Combobox.ChipRemove — button that removes its chip. Without children it draws a small cross; give it an `aria-label`. */
72
+ export declare function ChipRemove({ children, ...props }: React.ComponentProps<typeof ComboboxPrimitive.ChipRemove>): import("react/jsx-runtime").JSX.Element;
73
+ export declare namespace ChipRemove {
74
+ var displayName: string;
75
+ }
76
+ /** Combobox.Portal — portals the popup tree to document.body (or a custom container). */
77
+ export declare function Portal(props: React.ComponentProps<typeof ComboboxPrimitive.Portal>): import("react/jsx-runtime").JSX.Element;
78
+ export declare namespace Portal {
79
+ var displayName: string;
80
+ }
81
+ /** Combobox.Backdrop — overlay behind the popup (visible only in modal mode). */
82
+ export declare function Backdrop(props: React.ComponentProps<typeof ComboboxPrimitive.Backdrop>): import("react/jsx-runtime").JSX.Element;
83
+ export declare namespace Backdrop {
84
+ var displayName: string;
85
+ }
86
+ /** Combobox.Positioner — positions the popup relative to the field. */
87
+ export declare function Positioner({ align, sideOffset, ...props }: React.ComponentProps<typeof ComboboxPrimitive.Positioner>): import("react/jsx-runtime").JSX.Element;
88
+ export declare namespace Positioner {
89
+ var displayName: string;
90
+ }
91
+ /** Combobox.Popup — dropdown surface. It keeps the height it had when it opened while the list filters. */
92
+ export declare function Popup(props: React.ComponentProps<typeof ComboboxPrimitive.Popup>): import("react/jsx-runtime").JSX.Element;
93
+ export declare namespace Popup {
94
+ var displayName: string;
95
+ }
96
+ /** Combobox.Arrow — pointer arrow attached to the popup. */
97
+ export declare function Arrow(props: React.ComponentProps<typeof ComboboxPrimitive.Arrow>): import("react/jsx-runtime").JSX.Element;
98
+ export declare namespace Arrow {
99
+ var displayName: string;
100
+ }
101
+ /** Combobox.Status — live-region line for loading and result counts, announced to screen readers. */
102
+ export declare function Status(props: React.ComponentProps<typeof ComboboxPrimitive.Status>): import("react/jsx-runtime").JSX.Element;
103
+ export declare namespace Status {
104
+ var displayName: string;
105
+ }
106
+ /** Combobox.Empty — message shown while no item matches. */
107
+ export declare function Empty(props: React.ComponentProps<typeof ComboboxPrimitive.Empty>): import("react/jsx-runtime").JSX.Element;
108
+ export declare namespace Empty {
109
+ var displayName: string;
110
+ }
111
+ /** Combobox.List — items container. An `inline` list keeps the height it had when it mounted while it filters. */
112
+ export declare function List(props: React.ComponentProps<typeof ComboboxPrimitive.List>): import("react/jsx-runtime").JSX.Element;
113
+ export declare namespace List {
114
+ var displayName: string;
115
+ }
116
+ /** Combobox.Row — one row of a `grid` list. */
117
+ export declare function Row(props: React.ComponentProps<typeof ComboboxPrimitive.Row>): import("react/jsx-runtime").JSX.Element;
118
+ export declare namespace Row {
119
+ var displayName: string;
120
+ }
121
+ /** Combobox.Collection — renders a list of items inside a group. */
122
+ export declare function Collection(props: React.ComponentProps<typeof ComboboxPrimitive.Collection>): import("react/jsx-runtime").JSX.Element;
123
+ export declare namespace Collection {
124
+ var displayName: string;
125
+ }
126
+ interface ItemProps extends Omit<UpstreamItem, "value"> {
127
+ value: UpstreamItem["value"];
128
+ }
129
+ /** Combobox.Item — individual selectable option. */
130
+ export declare function Item(props: ItemProps): import("react/jsx-runtime").JSX.Element;
131
+ export declare namespace Item {
132
+ var displayName: string;
133
+ }
134
+ /**
135
+ * Combobox.ItemIndicator — marker inside the item. Without children a single combobox draws a check in the selected
136
+ * item, and a `multiple` combobox draws a checkbox box on every item, checked when selected.
137
+ */
138
+ export declare function ItemIndicator({ children, keepMounted, render, ...props }: React.ComponentProps<typeof ComboboxPrimitive.ItemIndicator>): import("react/jsx-runtime").JSX.Element;
139
+ export declare namespace ItemIndicator {
140
+ var displayName: string;
141
+ }
142
+ /** Combobox.ItemText — text label for an item, beside the indicator. */
143
+ export declare function ItemText(props: React.ComponentProps<"span">): import("react/jsx-runtime").JSX.Element;
144
+ export declare namespace ItemText {
145
+ var displayName: string;
146
+ }
147
+ /** Combobox.ItemDescription — a muted second line under an item's text, such as an email address. */
148
+ export declare function ItemDescription(props: React.ComponentProps<"div">): import("react/jsx-runtime").JSX.Element;
149
+ export declare namespace ItemDescription {
150
+ var displayName: string;
151
+ }
152
+ /** Combobox.Group — wrapper around a grouped set of items. */
153
+ export declare function Group(props: React.ComponentProps<typeof ComboboxPrimitive.Group>): import("react/jsx-runtime").JSX.Element;
154
+ export declare namespace Group {
155
+ var displayName: string;
156
+ }
157
+ /** Combobox.GroupLabel — heading for a Combobox.Group. */
158
+ export declare function GroupLabel(props: React.ComponentProps<typeof ComboboxPrimitive.GroupLabel>): import("react/jsx-runtime").JSX.Element;
159
+ export declare namespace GroupLabel {
160
+ var displayName: string;
161
+ }
162
+ /** Combobox.Separator — thin divider between items. */
163
+ export declare function Separator(props: React.ComponentProps<typeof SeparatorPrimitive>): import("react/jsx-runtime").JSX.Element;
164
+ export declare namespace Separator {
165
+ var displayName: string;
166
+ }
167
+ /** The upstream hook that builds a `filter` function from locale and match options. */
168
+ export declare const useFilter: typeof ComboboxPrimitive.useFilter;
169
+ /** Reads the filtered items inside a combobox, for a custom list renderer. */
170
+ export declare const useFilteredItems: typeof ComboboxPrimitive.useFilteredItems;
171
+ export {};
@@ -0,0 +1,2 @@
1
+ import { ComponentMeta } from '../../types/meta';
2
+ export declare const comboboxMeta: ComponentMeta;
@@ -0,0 +1,2 @@
1
+ export * as Combobox from './combobox';
2
+ export { comboboxMeta } from './combobox.meta';
@@ -19,7 +19,7 @@ export declare function Root<Payload = unknown>(props: RootProps<Payload>): impo
19
19
  export declare namespace Root {
20
20
  var displayName: string;
21
21
  }
22
- /** Popover.Trigger — button that opens the popover. */
22
+ /** Popover.Trigger — button that opens the popover. With `render`, the rendered element keeps its own styles, such as a `Button`. */
23
23
  export declare function Trigger({ variant, inline, ...props }: React.ComponentProps<typeof PopoverPrimitive.Trigger> & VariantProps<typeof popoverTrigger>): import("react/jsx-runtime").JSX.Element;
24
24
  export declare namespace Trigger {
25
25
  var displayName: string;
@@ -0,0 +1,7 @@
1
+ /** Popup, list, and item styles, shared with primitives that open the same list (Combobox, Autocomplete). */
2
+ export declare const selectPopup: (props?: import('class-variance-authority/types').ClassProp | undefined) => string;
3
+ export declare const selectList: (props?: import('class-variance-authority/types').ClassProp | undefined) => string;
4
+ export declare const selectItem: (props?: import('class-variance-authority/types').ClassProp | undefined) => string;
5
+ export declare const selectItemIndicator: (props?: import('class-variance-authority/types').ClassProp | undefined) => string;
6
+ export declare const selectItemText: (props?: import('class-variance-authority/types').ClassProp | undefined) => string;
7
+ export declare const selectItemDescription: (props?: import('class-variance-authority/types').ClassProp | undefined) => string;
@@ -2,7 +2,7 @@ import { Select as SelectPrimitive } from '@base-ui/react/select';
2
2
  import { VariantProps } from 'class-variance-authority';
3
3
  type UpstreamItem = React.ComponentProps<typeof SelectPrimitive.Item>;
4
4
  declare const selectRoot: (props?: ({
5
- width?: "auto" | "full" | "wide" | null | undefined;
5
+ width?: "auto" | "wide" | "full" | null | undefined;
6
6
  } & import('class-variance-authority/types').ClassProp) | undefined) => string;
7
7
  interface RootProps<Value = unknown, Multiple extends boolean | undefined = false> extends React.ComponentProps<typeof SelectPrimitive.Root<Value, Multiple>> {
8
8
  /** Trigger width: `auto` keeps the compact minimum; `wide` raises it; `full` fills the parent. @default "auto" */
@@ -46,6 +46,14 @@ export declare function RowLink({ render, ...props }: useRender.ComponentProps<"
46
46
  export declare namespace RowLink {
47
47
  var displayName: string;
48
48
  }
49
+ /**
50
+ * Table.RowButton — a `<button>` that stands for its whole row, such as one that opens a drawer. Use it when the row acts
51
+ * instead of navigating; a link that goes to a page is a `Table.RowLink`.
52
+ */
53
+ export declare function RowButton({ render, type, ...props }: useRender.ComponentProps<"button">): import('react').ReactElement<unknown, string | import('react').JSXElementConstructor<any>>;
54
+ export declare namespace RowButton {
55
+ var displayName: string;
56
+ }
49
57
  /**
50
58
  * Table.HeaderButton — inline action button for header cells. Generic by
51
59
  * design: sorting toggles, filter toggles, column menus all render through it
@@ -0,0 +1,2 @@
1
+ export { Textarea } from './textarea';
2
+ export { textareaMeta } from './textarea.meta';
@@ -0,0 +1,32 @@
1
+ import { Input as InputPrimitive } from '@base-ui/react/input';
2
+ import { VariantProps } from 'class-variance-authority';
3
+ declare const textarea: (props?: ({
4
+ variant?: "outline" | "ghost" | "filled" | null | undefined;
5
+ size?: "sm" | "md" | "lg" | null | undefined;
6
+ resize?: "none" | "both" | "horizontal" | "vertical" | null | undefined;
7
+ } & import('class-variance-authority/types').ClassProp) | undefined) => string;
8
+ type UpstreamInput = React.ComponentProps<typeof InputPrimitive>;
9
+ interface Props extends Omit<React.ComponentProps<"textarea">, "className" | "style" | "value" | "defaultValue">, Pick<UpstreamInput, "value" | "defaultValue" | "onValueChange" | "render">, VariantProps<typeof textarea> {
10
+ /** Number of visible text lines. */
11
+ rows?: number;
12
+ /**
13
+ * Which directions the user can drag to resize. `horizontal` and `both` size the textarea from `cols` and shrink-wrap
14
+ * the root, so the width follows the drag; `none` hides the resize corner.
15
+ */
16
+ resize?: "vertical" | "horizontal" | "both" | "none";
17
+ /** Class of the root wrapper that lays the field out. */
18
+ className?: string;
19
+ /** Style of the root wrapper that lays the field out. */
20
+ style?: React.CSSProperties;
21
+ }
22
+ /**
23
+ * Multi-line text input. Also called a text area; use Input for a single line.
24
+ * Wraps Base UI Input rendered as a textarea for controlled/uncontrolled state, form integration,
25
+ * and Field context awareness (valid/invalid/dirty/touched/filled/focused). `className` and `style`
26
+ * go to the root wrapper; every other prop goes to the textarea.
27
+ *
28
+ * @see https://base-ui.com/react/components/input
29
+ * @llm https://base-ui.com/react/components/input.md
30
+ */
31
+ export declare function Textarea({ variant, size, rows, resize, render, className, style, ...props }: Props): import("react/jsx-runtime").JSX.Element;
32
+ export {};
@@ -0,0 +1,2 @@
1
+ import { ComponentMeta } from '../../types/meta';
2
+ export declare const textareaMeta: ComponentMeta;
@@ -2,7 +2,7 @@ import { Toast as ToastPrimitive } from '@base-ui/react/toast';
2
2
  import { VariantProps } from 'class-variance-authority';
3
3
  declare const toastViewport: (props?: ({
4
4
  position?: "top-left" | "top-center" | "top-right" | "bottom-left" | "bottom-center" | "bottom-right" | null | undefined;
5
- width?: "default" | "content" | "compact" | "wide" | null | undefined;
5
+ width?: "default" | "content" | "wide" | "compact" | null | undefined;
6
6
  } & import('class-variance-authority/types').ClassProp) | undefined) => string;
7
7
  declare const toastRoot: (props?: ({
8
8
  variant?: "warning" | "info" | "neutral" | "success" | "error" | null | undefined;
@@ -9,6 +9,10 @@ type WeightProps = {
9
9
  /** Font weight. Omit to keep the member's default; `medium` firms up short body text on cards. */
10
10
  weight?: "regular" | "medium" | "strong";
11
11
  };
12
+ type MarkerProps = {
13
+ /** Colour of the dash. Omit to follow the text colour. */
14
+ markerVariant?: TypoProps["variant"];
15
+ };
12
16
  type HeadingProps = useRender.ComponentProps<"h1"> & TypoProps;
13
17
  type LongHeadingProps = HeadingProps & {
14
18
  /** Whether lines after the first use a translucent text color. */
@@ -99,7 +103,7 @@ export declare namespace OrderedList {
99
103
  var displayName: string;
100
104
  }
101
105
  /** Typo.UnorderedList — bulleted list. */
102
- export declare function UnorderedList({ variant, weight, render, ...props }: useRender.ComponentProps<"ul"> & TypoProps & WeightProps): import('react').ReactElement<unknown, string | import('react').JSXElementConstructor<any>>;
106
+ export declare function UnorderedList({ variant, markerVariant, weight, render, ...props }: useRender.ComponentProps<"ul"> & TypoProps & WeightProps & MarkerProps): import('react').ReactElement<unknown, string | import('react').JSXElementConstructor<any>>;
103
107
  export declare namespace UnorderedList {
104
108
  var displayName: string;
105
109
  }