@imfusion/web-ui 0.11.1-dev.27.g921aea14 → 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.
package/CHANGELOG.md CHANGED
@@ -4,6 +4,9 @@
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>
7
10
  - `Table.RowButton` is a button that stands for its whole row, like `Table.RowLink`, for rows that open a drawer or run an
8
11
  action instead of navigating. [Table](src/components/table/table.stories.tsx#RowButton) — Nikolaus Brunner
9
12
  <brunner@imfusion.com>
@@ -22,6 +25,8 @@
22
25
 
23
26
  ### Changed
24
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>
25
30
  - `Drawer` draws no border by default; `borderColor` adds one, such as `borderColor="primary"` for the previous look.
26
31
  [Drawer](src/components/drawer/drawer.mdx) — Nikolaus Brunner <brunner@imfusion.com>
27
32
  - `Typo.UnorderedList` draws its dash in the text colour by default; `markerVariant="primary"` gives the brand dash.
@@ -41,6 +46,8 @@
41
46
  - `web-ui-dev-new-component` and `web-ui-dev-update-component` wait for the user to approve the design on the canvas
42
47
  before writing the plan.
43
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.
44
51
  - The `imf-web-ui-conventions` `styling` topic shows a container setting a custom property that its child reads with
45
52
  its own default as the fallback.
46
53
  - `web-ui-dev-release` syncs the Claude Design system once npm serves the stable version.
@@ -49,7 +56,7 @@
49
56
  keeps its block under an "Implemented" note that names its story.
50
57
  - `docs/conventions.md` shows how a component declares its default as a custom-property fallback that a container
51
58
  overrides.
52
- - `design/DESIGN.md` draws a field's focus ring on its border: one line, never a second one outside it.
59
+ - `design/DESIGN.md` says focus turns a field's hairline border primary: one line, same width, nothing outside it.
53
60
  - Storybook — Nikolaus Brunner <brunner@imfusion.com>
54
61
  - The Controls table lists a component's own props first, then the props it inherits from Base UI or React.
55
62
  - `withFrame` draws its border only with `bordered: true`. Layout stories such as Stack and Row use it to show their bounds.
@@ -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;
package/dist/index.d.ts CHANGED
@@ -14,6 +14,7 @@ export { NumberField, numberFieldMeta } from './components/number-field';
14
14
  export { Select, selectMeta } from './components/select';
15
15
  export { Slider, sliderMeta } from './components/slider';
16
16
  export { Switch, switchMeta } from './components/switch';
17
+ export { Textarea, textareaMeta } from './components/textarea';
17
18
  export { Toggle, toggleMeta } from './components/toggle';
18
19
  export { ToggleGroup, toggleGroupMeta } from './components/toggle-group';
19
20
  export { AppShell, appShellMeta } from './components/app-shell';