@imfusion/web-ui 0.11.1-dev.5.g8a97f4f6 → 0.11.1-dev.52.g8c3c8d4b

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 (83) hide show
  1. package/CHANGELOG.md +137 -1
  2. package/dist/{code-NTcddiYk.js → code-BaLXMEMa.js} +13 -13
  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/avatar/avatar.d.ts +1 -1
  7. package/dist/components/card/card.d.ts +3 -2
  8. package/dist/components/checkbox/checkbox.cva.d.ts +3 -0
  9. package/dist/components/combobox/combobox.cva.d.ts +37 -0
  10. package/dist/components/combobox/combobox.d.ts +171 -0
  11. package/dist/components/combobox/combobox.meta.d.ts +2 -0
  12. package/dist/components/combobox/index.d.ts +2 -0
  13. package/dist/components/file-drop-zone/collect-files.d.ts +56 -0
  14. package/dist/components/file-drop-zone/file-drop-zone-context.d.ts +15 -0
  15. package/dist/components/file-drop-zone/file-drop-zone.d.ts +185 -0
  16. package/dist/components/file-drop-zone/file-drop-zone.meta.d.ts +2 -0
  17. package/dist/components/file-drop-zone/format-bytes.d.ts +5 -0
  18. package/dist/components/file-drop-zone/index.d.ts +4 -0
  19. package/dist/components/logo/logo.d.ts +1 -1
  20. package/dist/components/popover/popover.d.ts +2 -2
  21. package/dist/components/progress/index.d.ts +2 -0
  22. package/dist/components/progress/progress.d.ts +40 -0
  23. package/dist/components/progress/progress.meta.d.ts +2 -0
  24. package/dist/components/select/select.cva.d.ts +7 -0
  25. package/dist/components/select/select.d.ts +1 -1
  26. package/dist/components/tab-nav/index.d.ts +2 -0
  27. package/dist/components/tab-nav/tab-nav.d.ts +26 -0
  28. package/dist/components/tab-nav/tab-nav.meta.d.ts +2 -0
  29. package/dist/components/table/table.d.ts +8 -0
  30. package/dist/components/tabs/tabs-underline.cva.d.ts +6 -0
  31. package/dist/components/tabs/tabs.d.ts +13 -4
  32. package/dist/components/textarea/index.d.ts +2 -0
  33. package/dist/components/textarea/textarea.d.ts +32 -0
  34. package/dist/components/textarea/textarea.meta.d.ts +2 -0
  35. package/dist/components/toast/toast.d.ts +2 -2
  36. package/dist/components/typo/typo.d.ts +5 -1
  37. package/dist/docgen/component-sources.d.ts +4 -0
  38. package/dist/icon-button-roSB497o.js +171 -0
  39. package/dist/icons/catalog.gen.d.ts +28 -0
  40. package/dist/icons/icons.gen.d.ts +4 -0
  41. package/dist/{icons-BsK_o-Cb.js → icons-vc1WZCxX.js} +1027 -879
  42. package/dist/icons.js +1 -1
  43. package/dist/index.d.ts +8 -0
  44. package/dist/index.js +4336 -2930
  45. package/dist/integrations/code-highlight.js +2 -2
  46. package/dist/integrations/frame-selection.js +1 -1
  47. package/dist/integrations/image-display-options.js +73 -71
  48. package/dist/integrations/layout-mode/index.d.ts +2 -0
  49. package/dist/integrations/layout-mode/layout-mode-view.d.ts +32 -0
  50. package/dist/integrations/layout-mode/layout-mode.d.ts +13 -0
  51. package/dist/integrations/layout-mode/layout-mode.meta.d.ts +2 -0
  52. package/dist/integrations/layout-mode.js +103 -0
  53. package/dist/integrations/view-tools/index.d.ts +4 -0
  54. package/dist/integrations/view-tools/use-view-interaction.d.ts +21 -0
  55. package/dist/integrations/view-tools/view-tools-view.d.ts +23 -0
  56. package/dist/integrations/view-tools/view-tools.d.ts +14 -0
  57. package/dist/integrations/view-tools/view-tools.meta.d.ts +2 -0
  58. package/dist/integrations/view-tools.js +133 -0
  59. package/dist/{resolve-state-props-DQf9WiGv.js → rolldown-runtime-Dy4uBu1J.js} +1 -12
  60. package/dist/row-CImu8yXV.js +136 -0
  61. package/dist/{scroll-area-z9Lf9uIk.js → scroll-area-CXQ_SxPX.js} +2 -1
  62. package/dist/{slider-Bf274cMe.js → slider-CpIZMAFl.js} +2 -1
  63. package/dist/style.css +2 -1
  64. package/dist/tabs-BqgyMmo6.js +173 -0
  65. package/dist/toggle-group-Bhb3qicp.js +31 -0
  66. package/dist/toggle-group-eGr6_hgQ.js +125 -0
  67. package/dist/utils/email.d.ts +4 -1
  68. package/dist/utils/index.d.ts +2 -0
  69. package/dist/utils/initials.d.ts +4 -0
  70. package/dist/utils/item-parts.d.ts +23 -0
  71. package/dist/utils/stable-popup-height.d.ts +10 -0
  72. package/dist/utils-J6vbjIt1.js +46 -0
  73. package/package.json +3 -3
  74. package/src/docgen/doc.gen.json +5187 -1669
  75. package/src/llms/icon-catalog.gen.json +32 -0
  76. package/src/llms/llms.gen.txt +47 -1
  77. package/src/llms/skills/imf-web-ui-conventions/templates/AUDIT_CHECKLIST.md +3 -1
  78. package/src/llms/skills/imf-web-ui-conventions/topics/assets.md +24 -4
  79. package/src/llms/skills/imf-web-ui-conventions/topics/components.md +10 -0
  80. package/src/llms/skills/imf-web-ui-conventions/topics/library-boundary.md +3 -0
  81. package/src/llms/skills/imf-web-ui-conventions/topics/styling.md +22 -1
  82. package/src/llms/tokens.gen.json +19 -1
  83. package/dist/tabs-CU46aGud.js +0 -376
@@ -0,0 +1,2 @@
1
+ export * as Combobox from './combobox';
2
+ export { comboboxMeta } from './combobox.meta';
@@ -0,0 +1,56 @@
1
+ export interface FileDropZoneItem {
2
+ file: File;
3
+ /** Folder-relative path with the root folder's name first (`"scans/s1.nii.gz"`), or the file name for a loose file. */
4
+ path: string;
5
+ }
6
+ export interface CollectResult {
7
+ accepted: FileDropZoneItem[];
8
+ rejected: FileDropZoneItem[];
9
+ }
10
+ interface CollectOptions {
11
+ accept?: string[];
12
+ directory: boolean;
13
+ multiple: boolean;
14
+ }
15
+ /** The part of a `FileSystemEntry` the walk reads. */
16
+ export interface EntryLike {
17
+ readonly isFile: boolean;
18
+ readonly isDirectory: boolean;
19
+ readonly name: string;
20
+ readonly fullPath: string;
21
+ }
22
+ /** What the synchronous part of a `drop` handler can read; the drag data store is gone after the first `await`. */
23
+ interface DropSource {
24
+ entry: EntryLike | null;
25
+ file: File | null;
26
+ }
27
+ /** The part of a `DataTransfer` that `snapshotDrop` reads. */
28
+ interface DropData {
29
+ items: ArrayLike<{
30
+ kind: string;
31
+ webkitGetAsEntry: () => EntryLike | null;
32
+ getAsFile: () => File | null;
33
+ }>;
34
+ files: ArrayLike<File>;
35
+ }
36
+ export type DragState = "idle" | "accepting" | "rejecting";
37
+ export declare function matchesAccept(file: File, accept?: string[]): boolean;
38
+ /**
39
+ * A drag shows each item's MIME type but never its name, so only a type that is known to come from other extensions
40
+ * than the accepted ones is judged `"rejecting"`. A type missing from the table, an empty one, or an empty item list
41
+ * (Safari lists no items during a drag) stays `"accepting"`.
42
+ */
43
+ export declare function classifyDrag(items: ArrayLike<{
44
+ kind: string;
45
+ type: string;
46
+ }>, accept?: string[]): DragState;
47
+ /** Reads every `webkitGetAsEntry()` and `getAsFile()` of a drop. Call it synchronously inside the `drop` handler. */
48
+ export declare function snapshotDrop(dataTransfer: DropData): DropSource[];
49
+ export declare function collectFromDrop(sources: DropSource[], options: CollectOptions): Promise<CollectResult>;
50
+ /** Files from a picker. A folder pick carries `webkitRelativePath`, which includes the chosen folder's name. */
51
+ export declare function collectFromFileList(files: File[], options: CollectOptions & {
52
+ fromFolder: boolean;
53
+ }): CollectResult;
54
+ /** Names the accepted types for copy: `[".png", ".jpg", ".jpeg", ".webp"]` becomes "PNG, JPEG or WebP". Empty without a list. */
55
+ export declare function describeAccept(accept?: string[]): string;
56
+ export {};
@@ -0,0 +1,15 @@
1
+ export type FileDropZoneSize = "sm" | "md" | "lg";
2
+ interface FileDropZoneContextValue {
3
+ size: FileDropZoneSize;
4
+ disabled: boolean;
5
+ directory: boolean;
6
+ /** Whether a `FileDropZone.File` is mounted. */
7
+ filled: boolean;
8
+ openPicker: (mode: "files" | "folder") => void;
9
+ setFilled: (filled: boolean) => void;
10
+ registerTitle: (id: string | null) => void;
11
+ registerDescription: (id: string | null) => void;
12
+ }
13
+ /** What `FileDropZone.Root` hands to its parts; a part outside a Root reads the inert defaults. */
14
+ export declare const FileDropZoneContext: import('react').Context<FileDropZoneContextValue>;
15
+ export {};
@@ -0,0 +1,185 @@
1
+ import { VariantProps } from 'class-variance-authority';
2
+ import { Button } from '../button';
3
+ import { Icon, IconComponent } from '../icon';
4
+ import { IconButton } from '../icon-button';
5
+ import { DragState, FileDropZoneItem } from './collect-files';
6
+ declare const root: (props?: ({
7
+ size?: "sm" | "md" | "lg" | null | undefined;
8
+ } & import('class-variance-authority/types').ClassProp) | undefined) => string;
9
+ type RootProps = React.ComponentProps<"div"> & VariantProps<typeof root> & {
10
+ /** Accepted file types: extensions (`".nii.gz"`), MIME types (`"image/png"`) or wildcards (`"image/*"`). Any file when empty. */
11
+ accept?: string[];
12
+ /** Whether more than one file can be added at once. With `false`, only the first accepted file is kept. */
13
+ multiple?: boolean;
14
+ /** Whether folders can be dropped or picked. They are scanned recursively. Needs `multiple`. */
15
+ directory?: boolean;
16
+ /** Blocks dropping and picking; the Triggers follow. */
17
+ disabled?: boolean;
18
+ /** Marks the zone as holding a problem. The message belongs in `Field.Error` or a `Callout`. */
19
+ invalid?: boolean;
20
+ /** Called once per drop or pick with the files that match `accept` and those that do not. */
21
+ onFilesAdded?: (accepted: FileDropZoneItem[], rejected: FileDropZoneItem[]) => void;
22
+ /**
23
+ * Called when a drag over the zone starts, changes or ends. `"rejecting"` is reported only for a dragged type the
24
+ * browser exposes and `accept` cannot produce; names and counts are unknown until the drop.
25
+ */
26
+ onDragStateChange?: (state: DragState) => void;
27
+ /** Words for the screen reader status after each drop or pick. Return `""` to stay silent. */
28
+ formatStatus?: (accepted: number, rejected: number) => string;
29
+ };
30
+ /**
31
+ * FileDropZone.Root — a group that collects files and folders by drop or by its Triggers and reports them through
32
+ * `onFilesAdded`. The Triggers are the keyboard and screen reader path; dropping is an enhancement.
33
+ */
34
+ export declare function Root({ accept, multiple, directory, size, disabled, invalid, onFilesAdded, onDragStateChange, formatStatus, children, className, "aria-labelledby": ariaLabelledBy, "aria-describedby": ariaDescribedBy, onDragEnter, onDragOver, onDragLeave, onDrop, ...props }: RootProps): import("react/jsx-runtime").JSX.Element;
35
+ export declare namespace Root {
36
+ var displayName: string;
37
+ }
38
+ /** FileDropZone.Title — names the group. */
39
+ export declare function Title(props: React.ComponentProps<"span">): import("react/jsx-runtime").JSX.Element;
40
+ export declare namespace Title {
41
+ var displayName: string;
42
+ }
43
+ /** FileDropZone.Description — describes the group, such as the accepted file types. */
44
+ export declare function Description(props: React.ComponentProps<"p">): import("react/jsx-runtime").JSX.Element;
45
+ export declare namespace Description {
46
+ var displayName: string;
47
+ }
48
+ /** FileDropZone.Actions — the row of Triggers. */
49
+ export declare function Actions(props: React.ComponentProps<"div">): import("react/jsx-runtime").JSX.Element;
50
+ export declare namespace Actions {
51
+ var displayName: string;
52
+ }
53
+ type FileProps = React.ComponentProps<"div"> & {
54
+ /** The single file the zone holds. Its name shows middle-truncated, with the last 12 characters kept, and its size in mono. */
55
+ file: globalThis.File;
56
+ };
57
+ /**
58
+ * FileDropZone.File — the file a single-file zone holds, in place of `Title` and `Description`. It names the group,
59
+ * describes it with the size, and sets `data-filled` on the Root while mounted. Long names truncate in the middle so the
60
+ * extension stays readable; the full name is the `title`.
61
+ */
62
+ export declare function File({ file, className, ...props }: FileProps): import("react/jsx-runtime").JSX.Element;
63
+ export declare namespace File {
64
+ var displayName: string;
65
+ }
66
+ type IconButtonProps = React.ComponentProps<typeof IconButton>;
67
+ type RemoveProps = Omit<IconButtonProps, "glyph" | "label"> & {
68
+ /** Accessible name of the button. Defaults to "Remove file". */
69
+ label?: string;
70
+ /** Defaults to `"ghost"` in an `sm` zone and `"outline"` otherwise. */
71
+ variant?: IconButtonProps["variant"];
72
+ /** Defaults to `"md"` in an `lg` zone and `"sm"` otherwise. */
73
+ size?: IconButtonProps["size"];
74
+ /** Defaults to the zone's `disabled`. */
75
+ disabled?: IconButtonProps["disabled"];
76
+ };
77
+ /** FileDropZone.Remove — an icon button that empties a filled zone. It carries no behavior of its own: `onClick` clears the consumer's state. */
78
+ export declare function Remove({ label, variant, size, disabled, ...props }: RemoveProps): import("react/jsx-runtime").JSX.Element;
79
+ export declare namespace Remove {
80
+ var displayName: string;
81
+ }
82
+ type GlyphProps = Omit<React.ComponentProps<typeof Icon>, "glyph"> & {
83
+ /** Icon component imported from `@imfusion/web-ui/icons`. Defaults to `UploadSquare`, or `Page` while a File is mounted. */
84
+ glyph?: IconComponent;
85
+ };
86
+ /** FileDropZone.Glyph — the large icon of the `lg` zone: the upload icon, or a page while a `FileDropZone.File` is mounted. It renders nothing in `sm` and `md`. */
87
+ export declare function Glyph({ glyph, size, ...props }: GlyphProps): import("react/jsx-runtime").JSX.Element | null;
88
+ export declare namespace Glyph {
89
+ var displayName: string;
90
+ }
91
+ type ButtonProps = React.ComponentProps<typeof Button>;
92
+ type TriggerProps = ButtonProps & {
93
+ /** `"files"` opens the file picker, `"folder"` the folder picker. A folder Trigger needs `directory` on the Root. */
94
+ mode?: "files" | "folder";
95
+ /** Defaults to `"ghost"` in an `sm` zone and `"outline"` otherwise. */
96
+ variant?: ButtonProps["variant"];
97
+ /** Defaults to `"md"` in an `lg` zone and `"sm"` otherwise. */
98
+ size?: ButtonProps["size"];
99
+ /** Defaults to the zone's `disabled`. */
100
+ disabled?: ButtonProps["disabled"];
101
+ };
102
+ /** FileDropZone.Trigger — a Button that opens the picker. */
103
+ export declare function Trigger({ mode, variant, size, disabled, onClick, ...props }: TriggerProps): import("react/jsx-runtime").JSX.Element | null;
104
+ export declare namespace Trigger {
105
+ var displayName: string;
106
+ }
107
+ export interface FileDropZoneUploadItem {
108
+ /** Identifies the row in `onRemove`. */
109
+ id: string;
110
+ file: globalThis.File;
111
+ /** Shown instead of the file name, such as a folder-relative path. */
112
+ path?: string;
113
+ /** `"queued"` and `"error"` rows list the file with a Remove button; `"uploading"` and `"done"` rows show a progress bar. */
114
+ status: "queued" | "uploading" | "done" | "error";
115
+ /** From 0 to 100 while `"uploading"`; `null` while the amount is unknown. */
116
+ progress?: number | null;
117
+ }
118
+ interface UploadLabels {
119
+ chooseFiles: string;
120
+ chooseFolder: string;
121
+ /** Text of the upload button, from the number of queued items. */
122
+ upload: (queued: number) => string;
123
+ /** Text beside "Start over" once the upload has finished, from the number of items done and failed. */
124
+ uploaded: (done: number, failed: number) => string;
125
+ overall: string;
126
+ startOver: string;
127
+ uploading: string;
128
+ done: string;
129
+ failed: string;
130
+ waiting: string;
131
+ /** Accessible name of the file list. */
132
+ files: string;
133
+ dropToAdd: string;
134
+ cantAdd: string;
135
+ releaseToAdd: (multiple: boolean) => string;
136
+ /** Hint while a drag the zone cannot accept is over it, from the named accepted types ("" without `accept`). */
137
+ addTypes: (types: string) => string;
138
+ remove: (name: string) => string;
139
+ retry: string;
140
+ /** Accessible name of a row's Retry button. */
141
+ retryName: (name: string) => string;
142
+ /** The note under the zone. `types` is set only when every skipped file failed the `accept` check. */
143
+ skipped: (info: {
144
+ count: number;
145
+ paths: string[];
146
+ types: string;
147
+ }) => string;
148
+ /** Screen reader announcement when the upload starts. */
149
+ uploadingStatus: (count: number) => string;
150
+ }
151
+ type UploadProps = Omit<RootProps, "children" | "directory" | "title" | "onReset"> & {
152
+ /** The files to list, in order. The app owns this list and each item's `status` and `progress`. */
153
+ items: FileDropZoneUploadItem[];
154
+ /** Called with the `id` of the row whose Remove button was pressed. */
155
+ onRemove: (id: string) => void;
156
+ /** Called when the upload button is pressed. The app starts the upload and moves the queued items to `"uploading"`. */
157
+ onUpload: () => void;
158
+ /**
159
+ * Called with the `id` of a failed row whose Retry button was pressed. The app sends the file again and moves the row
160
+ * back to `"uploading"`. Failed rows show Retry only when this is set.
161
+ */
162
+ onRetry?: (id: string) => void;
163
+ /** Called by "Start over" once every item is done or failed. The button shows only when this is set. */
164
+ onReset?: () => void;
165
+ /** Heading of the card around the zone and the list. */
166
+ heading?: React.ReactNode;
167
+ /** Title of the zone. Defaults to "Drop files or a folder", or "Drop a file" without `multiple`. */
168
+ title?: React.ReactNode;
169
+ /** Text under the zone title. Defaults to the accepted types, such as "PNG, JPEG or WebP", and a note that folders are scanned. */
170
+ description?: React.ReactNode;
171
+ /** Whether the zone takes whole folders, with a "Choose folder" button. Needs `multiple`. */
172
+ folders?: boolean;
173
+ /** Replaces any of the English texts: the button texts, the drag copy, the row states, the skipped note, the finished text. */
174
+ labels?: Partial<UploadLabels>;
175
+ };
176
+ /**
177
+ * FileDropZone.Upload — the upload sequence in one piece: a zone, the list of collected files to check and remove, a
178
+ * `Progress` per row and overall once the upload runs, and the upload button. It is controlled and uploads nothing: the app
179
+ * keeps `items`, performs the upload, and reports each item's `status` and `progress`. Other props go to the zone.
180
+ */
181
+ export declare function Upload({ items, onRemove, onUpload, onRetry, onReset, heading, title, description, folders, labels, size, multiple, accept, disabled, onFilesAdded, onDragStateChange, ...zoneProps }: UploadProps): import("react/jsx-runtime").JSX.Element;
182
+ export declare namespace Upload {
183
+ var displayName: string;
184
+ }
185
+ export {};
@@ -0,0 +1,2 @@
1
+ import { ComponentMeta } from '../../types/meta';
2
+ export declare const fileDropZoneMeta: ComponentMeta;
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Formats a size such as "3.1 MB", in the unit that suits `scale` (the size itself by default). `digits` sets the decimals;
3
+ * by default one below ten units and none above. Bytes have none.
4
+ */
5
+ export declare function formatBytes(bytes: number, scale?: number, digits?: number): string;
@@ -0,0 +1,4 @@
1
+ export * as FileDropZone from './file-drop-zone';
2
+ export type { FileDropZoneItem } from './collect-files';
3
+ export type { FileDropZoneUploadItem } from './file-drop-zone';
4
+ export { fileDropZoneMeta } from './file-drop-zone.meta';
@@ -1,7 +1,7 @@
1
1
  import { ReactNode } from 'react';
2
2
  import { VariantProps } from 'class-variance-authority';
3
3
  declare const logo: (props?: ({
4
- size?: "sm" | "md" | "lg" | "hero" | "xl" | "xs" | "fit" | null | undefined;
4
+ size?: "sm" | "md" | "lg" | "hero" | "xs" | "xl" | "fit" | null | undefined;
5
5
  variant?: "inherit" | "main" | "support" | "minor" | "brand" | "oncolor" | null | undefined;
6
6
  } & import('class-variance-authority/types').ClassProp) | undefined) => string;
7
7
  type Props = Omit<React.ComponentProps<"span">, "children"> & VariantProps<typeof logo> & {
@@ -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;
@@ -35,7 +35,7 @@ export declare namespace Backdrop {
35
35
  var displayName: string;
36
36
  }
37
37
  /** Popover.Positioner — positions the popup relative to the trigger via floating-point layout. */
38
- export declare function Positioner(props: React.ComponentProps<typeof PopoverPrimitive.Positioner>): import("react/jsx-runtime").JSX.Element;
38
+ export declare function Positioner({ sideOffset, ...props }: React.ComponentProps<typeof PopoverPrimitive.Positioner>): import("react/jsx-runtime").JSX.Element;
39
39
  export declare namespace Positioner {
40
40
  var displayName: string;
41
41
  }
@@ -0,0 +1,2 @@
1
+ export * as Progress from './progress';
2
+ export { progressMeta } from './progress.meta';
@@ -0,0 +1,40 @@
1
+ import { Progress as ProgressPrimitive } from '@base-ui/react/progress';
2
+ import { VariantProps } from 'class-variance-authority';
3
+ declare const progressRoot: (props?: ({
4
+ size?: "sm" | "md" | "lg" | "xs" | null | undefined;
5
+ layout?: "inline" | "stacked" | null | undefined;
6
+ } & import('class-variance-authority/types').ClassProp) | undefined) => string;
7
+ /**
8
+ * Progress.Root — completion of a running task, such as an upload or export.
9
+ *
10
+ * `value={null}` is indeterminate. Without a visible `Progress.Label`, name the bar with `aria-label`. Base UI hides
11
+ * `Progress.Value` from assistive tech, so custom Value text needs a matching `aria-valuetext`.
12
+ *
13
+ * @doc https://base-ui.com/react/components/progress
14
+ * @llm https://base-ui.com/react/components/progress.md
15
+ */
16
+ export declare function Root({ size, layout, ...props }: React.ComponentProps<typeof ProgressPrimitive.Root> & VariantProps<typeof progressRoot>): import("react/jsx-runtime").JSX.Element;
17
+ export declare namespace Root {
18
+ var displayName: string;
19
+ }
20
+ /** Progress.Label — accessible label for the progress bar. */
21
+ export declare function Label(props: React.ComponentProps<typeof ProgressPrimitive.Label>): import("react/jsx-runtime").JSX.Element;
22
+ export declare namespace Label {
23
+ var displayName: string;
24
+ }
25
+ /** Progress.Value — formatted readout of the current value. Renders nothing while indeterminate. */
26
+ export declare function Value(props: React.ComponentProps<typeof ProgressPrimitive.Value>): import("react/jsx-runtime").JSX.Element;
27
+ export declare namespace Value {
28
+ var displayName: string;
29
+ }
30
+ /** Progress.Track — the full range. */
31
+ export declare function Track(props: React.ComponentProps<typeof ProgressPrimitive.Track>): import("react/jsx-runtime").JSX.Element;
32
+ export declare namespace Track {
33
+ var displayName: string;
34
+ }
35
+ /** Progress.Indicator — filled portion of the track up to the value. */
36
+ export declare function Indicator(props: React.ComponentProps<typeof ProgressPrimitive.Indicator>): import("react/jsx-runtime").JSX.Element;
37
+ export declare namespace Indicator {
38
+ var displayName: string;
39
+ }
40
+ export {};
@@ -0,0 +1,2 @@
1
+ import { ComponentMeta } from '../../types/meta';
2
+ export declare const progressMeta: ComponentMeta;
@@ -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" */
@@ -0,0 +1,2 @@
1
+ export * as TabNav from './tab-nav';
2
+ export { tabNavMeta } from './tab-nav.meta';
@@ -0,0 +1,26 @@
1
+ import { useRender } from '@base-ui/react/use-render';
2
+ interface RootProps extends React.ComponentProps<"nav"> {
3
+ /** Names the navigation for screen readers, such as "Project". */
4
+ "aria-label": string;
5
+ }
6
+ /**
7
+ * TabNav.Root — a `<nav>` of links that draws the hairline under its items. Give it an `aria-label` that names the
8
+ * navigation, such as "Project".
9
+ * Not based on any upstream component.
10
+ */
11
+ export declare function Root(props: RootProps): import("react/jsx-runtime").JSX.Element;
12
+ export declare namespace Root {
13
+ var displayName: string;
14
+ }
15
+ type ItemProps = useRender.ComponentProps<"a"> & {
16
+ /** Marks the item as the page the user is on: sets `aria-current="page"` and `data-current`, and draws the bar. */
17
+ current?: boolean;
18
+ };
19
+ /**
20
+ * TabNav.Item — a link in the row. Renders an `<a>`; pass a router link as `render` to navigate without a page load.
21
+ */
22
+ export declare function Item({ current, render, ...props }: ItemProps): import('react').ReactElement<unknown, string | import('react').JSXElementConstructor<any>>;
23
+ export declare namespace Item {
24
+ var displayName: string;
25
+ }
26
+ export {};
@@ -0,0 +1,2 @@
1
+ import { ComponentMeta } from '../../types/meta';
2
+ export declare const tabNavMeta: ComponentMeta;
@@ -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,6 @@
1
+ /**
2
+ * The underline look shared by `Tabs` (appearance `"underline"`) and `TabNav`, which renders it on links. Keeping it here
3
+ * avoids cross-component imports between the two.
4
+ */
5
+ export declare const tabsUnderlineRule: (props?: import('class-variance-authority/types').ClassProp | undefined) => string;
6
+ export declare const tabsUnderlineItem: (props?: import('class-variance-authority/types').ClassProp | undefined) => string;
@@ -2,18 +2,27 @@ import { Tabs as TabsPrimitive } from '@base-ui/react/tabs';
2
2
  import { VariantProps } from 'class-variance-authority';
3
3
  declare const tabsList: (props?: ({
4
4
  fill?: boolean | null | undefined;
5
+ appearance?: "underline" | "boxed" | null | undefined;
5
6
  } & import('class-variance-authority/types').ClassProp) | undefined) => string;
7
+ type TabsAppearance = "boxed" | "underline";
8
+ interface RootProps extends React.ComponentProps<typeof TabsPrimitive.Root> {
9
+ /**
10
+ * `"boxed"` outlines the active tab in a box that fuses into a framed panel. `"underline"` marks it with a bar under
11
+ * its label on a hairline rule, with an unframed panel. Underline is horizontal only: a vertical Tabs stays boxed.
12
+ */
13
+ appearance?: TabsAppearance;
14
+ }
6
15
  /**
7
16
  * Tabs.Root — container that manages the active tab value and orientation context.
8
17
  *
9
18
  * @see https://base-ui.com/react/components/tabs
10
19
  * @llm https://base-ui.com/react/components/tabs.md
11
20
  */
12
- export declare function Root(props: React.ComponentProps<typeof TabsPrimitive.Root>): import("react/jsx-runtime").JSX.Element;
21
+ export declare function Root({ appearance, ...props }: RootProps): import("react/jsx-runtime").JSX.Element;
13
22
  export declare namespace Root {
14
23
  var displayName: string;
15
24
  }
16
- interface ListProps extends React.ComponentProps<typeof TabsPrimitive.List>, VariantProps<typeof tabsList> {
25
+ interface ListProps extends React.ComponentProps<typeof TabsPrimitive.List>, Pick<VariantProps<typeof tabsList>, "fill"> {
17
26
  /**
18
27
  * Give every tab an equal share of the list's length (equal width when
19
28
  * horizontal). When vertical, this only takes effect if the list is stretched
@@ -32,7 +41,7 @@ export declare namespace Tab {
32
41
  var displayName: string;
33
42
  }
34
43
  /**
35
- * Tabs.Indicator — the bordered box marking the active tab, positioned via
44
+ * Tabs.Indicator — the bordered box (boxed) or bar (underline) marking the active tab, positioned via
36
45
  * the `--active-tab-*` CSS custom properties Base UI writes onto it. Render
37
46
  * once per Tabs.List, after the Tabs.Tab list.
38
47
  */
@@ -43,7 +52,7 @@ export declare namespace Indicator {
43
52
  /**
44
53
  * Tabs.PanelViewport — the shared frame Tabs.Panel elements render inside.
45
54
  * No Base UI equivalent exists; it's surfaced as a named part since its
46
- * hairline border is what Tabs.Indicator visually fuses into.
55
+ * hairline border is what the boxed Tabs.Indicator visually fuses into. The underline appearance draws no frame.
47
56
  */
48
57
  export declare function PanelViewport(props: React.ComponentProps<"div">): import("react/jsx-runtime").JSX.Element;
49
58
  export declare namespace PanelViewport {
@@ -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,10 +2,10 @@ 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
- variant?: "warning" | "info" | "neutral" | "success" | "error" | null | undefined;
8
+ variant?: "warning" | "info" | "error" | "neutral" | "success" | null | undefined;
9
9
  } & import('class-variance-authority/types').ClassProp) | undefined) => string;
10
10
  /**
11
11
  * Toast.useToastManager — reads the queue and the add/close/update/promise
@@ -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
  }
@@ -4,4 +4,8 @@ export type ComponentSource = {
4
4
  componentFile: string;
5
5
  metaFile: string;
6
6
  };
7
+ /**
8
+ * A component folder is public when the package index exports it; an unexported folder is internal.
9
+ * Integrations ship through their own entry points and are always public.
10
+ */
7
11
  export declare function publicComponentSources(srcDir: string): ComponentSource[];