@imfusion/web-ui 0.10.1-dev.49.geca9b5e8 → 0.10.1-dev.53.gea04219d

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
@@ -60,9 +60,13 @@ never changes the character width, so columns stay aligned. CoFo Sans Mono still
60
60
 
61
61
  ### Added
62
62
 
63
+ - `--imf-ui-size-backdrop-edge` (`38%`) and `--imf-ui-size-backdrop-band-height` (`30dvh`) are the public backdrop's geometry tokens. The `imf-web-ui-ux` skill describes the handover. — Nikolaus Brunner <brunner@imfusion.com>
64
+ - `ProductLogo` renders the ImFusion Labels, Suite, and SDK product logos on the `Logo` sizes and color variants. The name is solid by default and cut out of the plate with `cutout`. [Product](src/components/logo/product/product.stories.tsx#Default) — Nikolaus Brunner <brunner@imfusion.com>
63
65
  - `imf-web-ui-update` proposes and `imf-web-ui-audit` reports aligning the core runtime packages (React, Base UI, Vite+) with the versions Web UI builds with. — Nikolaus Brunner <brunner@imfusion.com>
64
66
  - `localWebUILink()` and a `paths` block in `tsconfig.json` let an app run against a symlinked web-ui checkout with one React and one set of types. `imf-web-ui-setup` proposes both and `imf-web-ui-audit` reports a missing one. — Nikolaus Brunner <brunner@imfusion.com>
65
67
  - The shell's navigation toggle sets `aria-controls` from the navbar, and reads the `id` the navbar generates. A consumer `id` on the Navbar is what it points at. — Nikolaus Brunner <brunner@imfusion.com>
68
+ - `Table.Root` takes `density` (`compact`, `comfortable`, `spacious`) for the cell padding. — Nikolaus Brunner <brunner@imfusion.com>
69
+ - `Table.HeaderCell` and `Table.Cell` take `action` for a column of buttons: it shrinks to its content, so the data columns keep the width. — Nikolaus Brunner <brunner@imfusion.com>
66
70
  - [`useDisclosure`](src/hooks/use-disclosure.stories.tsx#UseDisclosure) keeps an open state that works controlled or uncontrolled, and returns `open`, `setOpen`, and `toggle`. — Nikolaus Brunner <brunner@imfusion.com>
67
71
  - `AppShell.Navbar` and `AppShell.Aside` take `defaultOpen` and keep their own open state when `open` is omitted, and close an uncontrolled drawer when they dock. A controlled `open` is never changed by docking. — Nikolaus Brunner <brunner@imfusion.com>
68
72
  - An `AppShell.Aside` opens from the consumer's state, such as a row selection, through `open` and `onOpenChange`. — Nikolaus Brunner <brunner@imfusion.com>
@@ -106,6 +110,8 @@ never changes the character width, so columns stay aligned. CoFo Sans Mono still
106
110
 
107
111
  ### Changed
108
112
 
113
+ - The `Meter` track is translucent ink (8% `fg-main`), so it stays visible on tinted surfaces such as a selected table row. — Nikolaus Brunner <brunner@imfusion.com>
114
+ - `Table` reads lighter: the header has no band, its mono labels are muted with a 1px rule under them, body rows have no rules, and cells get more vertical padding. A selected row sits one neutral step darker than a hovered row, in place of the primary tint. — Nikolaus Brunner <brunner@imfusion.com>
109
115
  - [`AppShell.Header`](src/components/app-shell/app-shell.mdx) is a page row that shows at every width, below the shell's bar on mobile. — Nikolaus Brunner <brunner@imfusion.com>
110
116
  - The header pads its inline sides with `--imf-ui-appshell-padding`, so its content lines up with Main's.
111
117
  - AppShell — Nikolaus Brunner <brunner@imfusion.com>
@@ -1,3 +1,4 @@
1
1
  export { Logo } from './logo';
2
2
  export { logoMeta } from './logo.meta';
3
3
  export { ImFusionLogo } from './imfusion';
4
+ export { ProductLogo } from './product';
@@ -0,0 +1 @@
1
+ export { ProductLogo } from './product';
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Product logo geometry. The plate is shared; each product adds its name as a separate path so the
3
+ * name can be filled on its own or cut out of the plate. Not exported from the package.
4
+ */
5
+ export declare const productViewBox = "0 0 842.21 335.39";
6
+ export declare const productPlate = "M842.21,99.26L742.95,0L0,0L0,236.13L99.26,335.39L842.21,335.39Z";
7
+ export declare const productWords: {
8
+ labels: string;
9
+ suite: string;
10
+ sdk: string;
11
+ };
@@ -0,0 +1,17 @@
1
+ import { Logo } from '../logo';
2
+ import { productWords } from './marks';
3
+ type LogoVariant = NonNullable<React.ComponentProps<typeof Logo>["variant"]>;
4
+ type Props = Omit<React.ComponentProps<typeof Logo>, "src" | "alt" | "variant"> & {
5
+ product: keyof typeof productWords;
6
+ /** Cut the product name out of the plate so the background shows through. */
7
+ cutout?: boolean;
8
+ /** Override the accessible label. Defaults to the product name, e.g. "ImFusion SDK". */
9
+ alt?: string;
10
+ variant?: Exclude<LogoVariant, "minor">;
11
+ };
12
+ /**
13
+ * An ImFusion product logo (Labels, Suite, SDK) — the generic {@link Logo} primitive pre-wired
14
+ * with the product plate. The name is filled to contrast with the plate unless `cutout` is set.
15
+ */
16
+ export declare function ProductLogo({ product, cutout, alt, variant, ...props }: Props): import("react/jsx-runtime").JSX.Element;
17
+ export {};
@@ -1,7 +1,15 @@
1
1
  import { useRender } from '@base-ui/react/use-render';
2
- type HeaderCellProps = React.ComponentProps<"th">;
2
+ type CellActionProps = {
3
+ /** Marks an action column: it shrinks to its content and keeps it on one line. */
4
+ action?: boolean;
5
+ };
6
+ type HeaderCellProps = React.ComponentProps<"th"> & CellActionProps;
7
+ type RootProps = React.ComponentProps<"table"> & {
8
+ /** Cell padding: `compact` for dense data, `spacious` for a few rows at a glance. */
9
+ density?: "compact" | "comfortable" | "spacious";
10
+ };
3
11
  /** Table.Root — the `<table>` element. */
4
- export declare function Root(props: React.ComponentProps<"table">): import("react/jsx-runtime").JSX.Element;
12
+ export declare function Root({ density, ...props }: RootProps): import("react/jsx-runtime").JSX.Element;
5
13
  export declare namespace Root {
6
14
  var displayName: string;
7
15
  }
@@ -21,12 +29,12 @@ export declare namespace Row {
21
29
  var displayName: string;
22
30
  }
23
31
  /** Table.HeaderCell — a `<th>` header cell. */
24
- export declare function HeaderCell(props: HeaderCellProps): import("react/jsx-runtime").JSX.Element;
32
+ export declare function HeaderCell({ action, ...props }: HeaderCellProps): import("react/jsx-runtime").JSX.Element;
25
33
  export declare namespace HeaderCell {
26
34
  var displayName: string;
27
35
  }
28
36
  /** Table.Cell — a `<td>` data cell. */
29
- export declare function Cell(props: React.ComponentProps<"td">): import("react/jsx-runtime").JSX.Element;
37
+ export declare function Cell({ action, ...props }: React.ComponentProps<"td"> & CellActionProps): import("react/jsx-runtime").JSX.Element;
30
38
  export declare namespace Cell {
31
39
  var displayName: string;
32
40
  }
package/dist/index.d.ts CHANGED
@@ -42,7 +42,7 @@ export { Tabs, tabsMeta } from './components/tabs';
42
42
  export { Toast, toastMeta } from './components/toast';
43
43
  export { Tooltip, tooltipMeta } from './components/tooltip';
44
44
  export { Typo, typoMeta } from './components/typo';
45
- export { ImFusionLogo } from './components/logo';
45
+ export { ImFusionLogo, ProductLogo } from './components/logo';
46
46
  export { WebUIProvider } from './provider';
47
47
  export { useClipboard, useColorScheme, useDisclosure, useMediaQuery } from './hooks';
48
48
  export type { UseClipboardOptions, UseDisclosureOptions, UseMediaQueryOptions } from './hooks';