@imfusion/web-ui 0.5.0

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 (152) hide show
  1. package/README.md +60 -0
  2. package/bin/install-skill.js +180 -0
  3. package/dist/assets/vendors/base-ui.d.ts +8 -0
  4. package/dist/breakpoints/index.d.ts +3 -0
  5. package/dist/breakpoints/min-width.d.ts +9 -0
  6. package/dist/breakpoints/registry.d.ts +19 -0
  7. package/dist/code-qBbqAHK-.js +190 -0
  8. package/dist/codegen/gen-breakpoints-css.d.ts +6 -0
  9. package/dist/codegen/gen-css-types.d.ts +1 -0
  10. package/dist/codegen/gen-token-css.d.ts +6 -0
  11. package/dist/codegen/run.d.ts +1 -0
  12. package/dist/components/app-shell/app-shell.d.ts +66 -0
  13. package/dist/components/app-shell/app-shell.meta.d.ts +2 -0
  14. package/dist/components/app-shell/index.d.ts +2 -0
  15. package/dist/components/button/button.d.ts +30 -0
  16. package/dist/components/button/button.meta.d.ts +2 -0
  17. package/dist/components/button/index.d.ts +2 -0
  18. package/dist/components/callout/callout.d.ts +42 -0
  19. package/dist/components/callout/callout.meta.d.ts +2 -0
  20. package/dist/components/callout/index.d.ts +2 -0
  21. package/dist/components/card/card.d.ts +64 -0
  22. package/dist/components/card/card.meta.d.ts +2 -0
  23. package/dist/components/card/index.d.ts +2 -0
  24. package/dist/components/checkbox/checkbox.d.ts +56 -0
  25. package/dist/components/checkbox/checkbox.meta.d.ts +2 -0
  26. package/dist/components/checkbox/index.d.ts +2 -0
  27. package/dist/components/chip/chip.cva.d.ts +12 -0
  28. package/dist/components/chip/chip.d.ts +11 -0
  29. package/dist/components/chip/chip.meta.d.ts +2 -0
  30. package/dist/components/chip/index.d.ts +2 -0
  31. package/dist/components/chip-link/chip-link.d.ts +17 -0
  32. package/dist/components/chip-link/chip-link.meta.d.ts +2 -0
  33. package/dist/components/chip-link/index.d.ts +2 -0
  34. package/dist/components/code/code.d.ts +60 -0
  35. package/dist/components/code/code.meta.d.ts +2 -0
  36. package/dist/components/code/index.d.ts +2 -0
  37. package/dist/components/collapsible/collapsible.d.ts +57 -0
  38. package/dist/components/collapsible/collapsible.meta.d.ts +2 -0
  39. package/dist/components/collapsible/index.d.ts +2 -0
  40. package/dist/components/copy-button/copy-button.d.ts +21 -0
  41. package/dist/components/copy-button/copy-button.meta.d.ts +2 -0
  42. package/dist/components/copy-button/index.d.ts +2 -0
  43. package/dist/components/drawer/drawer.d.ts +191 -0
  44. package/dist/components/drawer/drawer.meta.d.ts +2 -0
  45. package/dist/components/drawer/index.d.ts +2 -0
  46. package/dist/components/input/index.d.ts +2 -0
  47. package/dist/components/input/input.d.ts +25 -0
  48. package/dist/components/input/input.meta.d.ts +2 -0
  49. package/dist/components/logo/imfusion/imfusion.d.ts +16 -0
  50. package/dist/components/logo/imfusion/index.d.ts +1 -0
  51. package/dist/components/logo/index.d.ts +3 -0
  52. package/dist/components/logo/logo.d.ts +15 -0
  53. package/dist/components/logo/logo.meta.d.ts +2 -0
  54. package/dist/components/navigation-menu/index.d.ts +2 -0
  55. package/dist/components/navigation-menu/navigation-menu.d.ts +20 -0
  56. package/dist/components/navigation-menu/navigation-menu.meta.d.ts +2 -0
  57. package/dist/components/navigation-menu/subs/flyout-link.d.ts +24 -0
  58. package/dist/components/navigation-menu/subs/inline-submenu.d.ts +41 -0
  59. package/dist/components/navigation-menu/subs/link.d.ts +64 -0
  60. package/dist/components/navigation-menu/subs/overlay.d.ts +75 -0
  61. package/dist/components/navigation-menu/subs/shared.d.ts +20 -0
  62. package/dist/components/navigation-menu/subs/structure.d.ts +64 -0
  63. package/dist/components/navigation-menu/subs/trigger.d.ts +47 -0
  64. package/dist/components/popover/index.d.ts +2 -0
  65. package/dist/components/popover/popover.d.ts +181 -0
  66. package/dist/components/popover/popover.meta.d.ts +2 -0
  67. package/dist/components/row/index.d.ts +2 -0
  68. package/dist/components/row/row.d.ts +28 -0
  69. package/dist/components/row/row.meta.d.ts +2 -0
  70. package/dist/components/select/index.d.ts +2 -0
  71. package/dist/components/select/select.d.ts +278 -0
  72. package/dist/components/select/select.meta.d.ts +2 -0
  73. package/dist/components/separator/index.d.ts +2 -0
  74. package/dist/components/separator/separator.d.ts +15 -0
  75. package/dist/components/separator/separator.meta.d.ts +2 -0
  76. package/dist/components/slider/index.d.ts +2 -0
  77. package/dist/components/slider/slider.d.ts +111 -0
  78. package/dist/components/slider/slider.meta.d.ts +2 -0
  79. package/dist/components/spinner/index.d.ts +2 -0
  80. package/dist/components/spinner/spinner.d.ts +19 -0
  81. package/dist/components/spinner/spinner.geometry.d.ts +37 -0
  82. package/dist/components/spinner/spinner.meta.d.ts +2 -0
  83. package/dist/components/stack/index.d.ts +2 -0
  84. package/dist/components/stack/stack.d.ts +18 -0
  85. package/dist/components/stack/stack.meta.d.ts +2 -0
  86. package/dist/components/switch/index.d.ts +2 -0
  87. package/dist/components/switch/switch.d.ts +45 -0
  88. package/dist/components/switch/switch.meta.d.ts +2 -0
  89. package/dist/components/table/index.d.ts +2 -0
  90. package/dist/components/table/table.d.ts +66 -0
  91. package/dist/components/table/table.meta.d.ts +2 -0
  92. package/dist/components/tabs/index.d.ts +2 -0
  93. package/dist/components/tabs/tabs.d.ts +91 -0
  94. package/dist/components/tabs/tabs.meta.d.ts +2 -0
  95. package/dist/components/toggle/index.d.ts +2 -0
  96. package/dist/components/toggle/toggle.d.ts +31 -0
  97. package/dist/components/toggle/toggle.meta.d.ts +2 -0
  98. package/dist/components/toggle-group/index.d.ts +2 -0
  99. package/dist/components/toggle-group/toggle-group.d.ts +30 -0
  100. package/dist/components/toggle-group/toggle-group.meta.d.ts +2 -0
  101. package/dist/components/tooltip/index.d.ts +2 -0
  102. package/dist/components/tooltip/tooltip.d.ts +164 -0
  103. package/dist/components/tooltip/tooltip.meta.d.ts +2 -0
  104. package/dist/components/typo/index.d.ts +2 -0
  105. package/dist/components/typo/typo.d.ts +100 -0
  106. package/dist/components/typo/typo.meta.d.ts +2 -0
  107. package/dist/config.d.ts +8 -0
  108. package/dist/docgen/gen-docgen.d.ts +1 -0
  109. package/dist/docgen/gen-docgen.utils.d.ts +13 -0
  110. package/dist/hooks/index.d.ts +5 -0
  111. package/dist/hooks/use-clipboard.d.ts +12 -0
  112. package/dist/hooks/use-color-scheme.d.ts +31 -0
  113. package/dist/hooks/use-media-query.d.ts +13 -0
  114. package/dist/index.d.ts +38 -0
  115. package/dist/index.js +13103 -0
  116. package/dist/integrations/code-highlight/code-highlight.d.ts +21 -0
  117. package/dist/integrations/code-highlight/code-highlight.meta.d.ts +2 -0
  118. package/dist/integrations/code-highlight/highlighter.d.ts +6 -0
  119. package/dist/integrations/code-highlight/index.d.ts +3 -0
  120. package/dist/integrations/code-highlight.js +97 -0
  121. package/dist/integrations/image-display-options/image-display-options-view.d.ts +22 -0
  122. package/dist/integrations/image-display-options/image-display-options-view.utils.d.ts +40 -0
  123. package/dist/integrations/image-display-options/image-display-options.d.ts +29 -0
  124. package/dist/integrations/image-display-options/image-display-options.meta.d.ts +2 -0
  125. package/dist/integrations/image-display-options/index.d.ts +2 -0
  126. package/dist/integrations/image-display-options.js +319 -0
  127. package/dist/llms/gen-llms.d.ts +1 -0
  128. package/dist/meta-B8C51eyL.js +74 -0
  129. package/dist/provider/index.d.ts +1 -0
  130. package/dist/provider/web-ui-provider.d.ts +6 -0
  131. package/dist/style.css +2 -0
  132. package/dist/tabs-DqBFSqq6.js +3789 -0
  133. package/dist/tokens/apply.d.ts +55 -0
  134. package/dist/tokens/control-registry.d.ts +10 -0
  135. package/dist/tokens/token-registry.d.ts +13 -0
  136. package/dist/tokens/types.d.ts +71 -0
  137. package/dist/tokens/use-token-controls.d.ts +36 -0
  138. package/dist/types/docgen.d.ts +17 -0
  139. package/dist/types/meta.d.ts +108 -0
  140. package/dist/types/theme.d.ts +3 -0
  141. package/package.json +139 -0
  142. package/src/docgen/doc.gen.json +4695 -0
  143. package/src/llms/llms.gen.txt +176 -0
  144. package/src/llms/skills/imf-web-ui/SKILL.md +46 -0
  145. package/src/llms/skills/imf-web-ui-components/SKILL.md +100 -0
  146. package/src/llms/skills/imf-web-ui-frontend-patterns/SKILL.md +67 -0
  147. package/src/llms/skills/imf-web-ui-frontend-patterns/references/react-patterns.md +94 -0
  148. package/src/llms/skills/imf-web-ui-setup/SKILL.md +30 -0
  149. package/src/llms/skills/imf-web-ui-ux/SKILL.md +103 -0
  150. package/src/llms/skills/imf-web-ui-ux/references/forms.md +48 -0
  151. package/src/llms/skills/imf-web-ui-ux/references/usability-heuristics.md +29 -0
  152. package/src/llms/skills/imf-web-ui-ux/references/visual-design.md +38 -0
@@ -0,0 +1,64 @@
1
+ import { VariantProps } from 'class-variance-authority';
2
+ declare const root: (props?: ({
3
+ density?: "compact" | "comfortable" | "spacious" | null | undefined;
4
+ variant?: "primary" | "main" | "support" | "minor" | "brand" | null | undefined;
5
+ shadow?: "sm" | "md" | "lg" | "none" | null | undefined;
6
+ radius?: "sm" | "md" | "lg" | "brand" | null | undefined;
7
+ orientation?: "horizontal" | "vertical" | null | undefined;
8
+ } & import('class-variance-authority/types').ClassProp) | undefined) => string;
9
+ type RootProps = React.HTMLAttributes<HTMLDivElement> & VariantProps<typeof root> & {
10
+ /** Draws the hairline border. Applies to the neutral variants only — coloured variants are always borderless. */
11
+ /** @default true */
12
+ withBorder?: boolean;
13
+ };
14
+ /**
15
+ * Card.Root — a surface container composed of slots: an optional `Card.Image`
16
+ * (bleeds edge-to-edge, no padding), then `Card.Header` / `Card.Content` /
17
+ * `Card.Footer`. `density` sets one scale that drives both each slot's padding
18
+ * and the gap between slots. `variant` picks the look — neutral tonal surfaces
19
+ * (`main`/`support`/`minor`) carry a hairline border; coloured intent fills
20
+ * (`primary`/`brand`) flip to contrast text and drop the border. `shadow` and
21
+ * `radius` layer on top. Also called a panel, tile, or paper.
22
+ *
23
+ * The image is always the first entry in the stack, so `orientation` just
24
+ * switches the stack between a column and a row without reordering slots.
25
+ *
26
+ * The ImFusion brand ships flat (`shadow="none"`), but the shadow scale is a
27
+ * first-class opt-in axis for third-party consumers. `shadow` picks the elevation
28
+ * level only — how hard or spread that shadow reads is a global lighting decision,
29
+ * owned by the `--imf-ui-shadow-hardness` / `--imf-ui-shadow-spread` tokens.
30
+ */
31
+ declare function Root({ density, variant, shadow, radius, orientation, withBorder, className, ...props }: RootProps): import("react/jsx-runtime").JSX.Element;
32
+ declare namespace Root {
33
+ var displayName: string;
34
+ }
35
+ type ImageProps = React.ImgHTMLAttributes<HTMLImageElement>;
36
+ /**
37
+ * Card.Image — an edge-to-edge media slot. Has no padding, so the image bleeds
38
+ * to the card edges. Always place it first among the slots.
39
+ */
40
+ declare function Image({ className, alt, ...props }: ImageProps): import("react/jsx-runtime").JSX.Element;
41
+ declare namespace Image {
42
+ var displayName: string;
43
+ }
44
+ type SlotProps = React.HTMLAttributes<HTMLDivElement>;
45
+ /** Card.Header — the padded title region at the top of the card body. */
46
+ declare function Header({ className, ...props }: SlotProps): import("react/jsx-runtime").JSX.Element;
47
+ declare namespace Header {
48
+ var displayName: string;
49
+ }
50
+ /** Card.Content — the padded main body of the card. */
51
+ declare function Content({ className, ...props }: SlotProps): import("react/jsx-runtime").JSX.Element;
52
+ declare namespace Content {
53
+ var displayName: string;
54
+ }
55
+ /**
56
+ * Card.Footer — the padded action region at the bottom. Its background inherits
57
+ * the card fill by default; override `background` in `style` for a distinct
58
+ * action bar.
59
+ */
60
+ declare function Footer({ className, ...props }: SlotProps): import("react/jsx-runtime").JSX.Element;
61
+ declare namespace Footer {
62
+ var displayName: string;
63
+ }
64
+ export { Root, Image, Header, Content, Footer };
@@ -0,0 +1,2 @@
1
+ import { ComponentMeta } from '../../types/meta';
2
+ export declare const cardMeta: ComponentMeta;
@@ -0,0 +1,2 @@
1
+ export * as Card from './card';
2
+ export { cardMeta } from './card.meta';
@@ -0,0 +1,56 @@
1
+ import { Checkbox as CheckboxPrimitive } from '@base-ui/react/checkbox';
2
+ type UpstreamRoot = React.ComponentProps<typeof CheckboxPrimitive.Root>;
3
+ type UpstreamIndicator = React.ComponentProps<typeof CheckboxPrimitive.Indicator>;
4
+ type RootProps = Omit<React.HTMLAttributes<HTMLSpanElement>, "className" | "style"> & {
5
+ /** @default false */
6
+ defaultChecked?: boolean;
7
+ checked?: boolean;
8
+ onCheckedChange?: UpstreamRoot["onCheckedChange"];
9
+ /** @default false */
10
+ indeterminate?: boolean;
11
+ /** @default false */
12
+ disabled?: boolean;
13
+ /** @default false */
14
+ readOnly?: boolean;
15
+ /** @default false */
16
+ required?: boolean;
17
+ /** @default false */
18
+ nativeButton?: boolean;
19
+ /** @default false */
20
+ parent?: boolean;
21
+ name?: string;
22
+ value?: string;
23
+ uncheckedValue?: string;
24
+ form?: string;
25
+ inputRef?: React.Ref<HTMLInputElement>;
26
+ className?: UpstreamRoot["className"];
27
+ style?: UpstreamRoot["style"];
28
+ render?: UpstreamRoot["render"];
29
+ };
30
+ /**
31
+ * Checkbox.Root — binary form control; renders a `<span>` plus a hidden `<input>`.
32
+ *
33
+ * @doc https://base-ui.com/react/components/checkbox
34
+ * @llm https://base-ui.com/react/components/checkbox.md
35
+ */
36
+ export declare function Root({ className, ...props }: RootProps): import("react/jsx-runtime").JSX.Element;
37
+ export declare namespace Root {
38
+ var displayName: string;
39
+ }
40
+ type IndicatorProps = Omit<React.HTMLAttributes<HTMLSpanElement>, "className" | "style"> & {
41
+ /** @default false */
42
+ keepMounted?: boolean;
43
+ className?: UpstreamIndicator["className"];
44
+ style?: UpstreamIndicator["style"];
45
+ render?: UpstreamIndicator["render"];
46
+ };
47
+ /**
48
+ * Checkbox.Indicator — shows the checked / indeterminate mark. Ships brand
49
+ * icons by default (check, and a minus while `indeterminate`); pass children
50
+ * to replace them.
51
+ */
52
+ export declare function Indicator({ className, children, ...props }: IndicatorProps): import("react/jsx-runtime").JSX.Element;
53
+ export declare namespace Indicator {
54
+ var displayName: string;
55
+ }
56
+ export {};
@@ -0,0 +1,2 @@
1
+ import { ComponentMeta } from '../../types/meta';
2
+ export declare const checkboxMeta: ComponentMeta;
@@ -0,0 +1,2 @@
1
+ export * as Checkbox from './checkbox';
2
+ export { checkboxMeta } from './checkbox.meta';
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Shared variants for `Chip` and any sibling primitive that renders the same
3
+ * Chip visual on a different element (`ChipLink` renders `<a>`; a future
4
+ * `ChipButton` would render `<button>`). Keeping them in their own module
5
+ * means variant axes stay aligned without cross-component imports of a
6
+ * component file.
7
+ */
8
+ export declare const chip: (props?: ({
9
+ variant?: "primary" | "positive" | "negative" | "main" | "support" | "minor" | "brand" | "warning" | "info" | "accent-1" | "accent-2" | "accent-3" | null | undefined;
10
+ appearance?: "outline" | "solid" | "subtle" | null | undefined;
11
+ inline?: boolean | null | undefined;
12
+ } & import('class-variance-authority/types').ClassProp) | undefined) => string;
@@ -0,0 +1,11 @@
1
+ import { VariantProps } from 'class-variance-authority';
2
+ import { chip } from './chip.cva';
3
+ type Props = React.HTMLAttributes<HTMLSpanElement> & VariantProps<typeof chip> & {
4
+ children: React.ReactNode;
5
+ };
6
+ /**
7
+ * Chip — compact inline label for status or category.
8
+ * Not based on any upstream component.
9
+ */
10
+ export declare function Chip({ variant, appearance, inline, className, ...props }: Props): import("react/jsx-runtime").JSX.Element;
11
+ export {};
@@ -0,0 +1,2 @@
1
+ import { ComponentMeta } from '../../types/meta';
2
+ export declare const chipMeta: ComponentMeta;
@@ -0,0 +1,2 @@
1
+ export { Chip } from './chip';
2
+ export { chipMeta } from './chip.meta';
@@ -0,0 +1,17 @@
1
+ import { chip } from '../chip/chip.cva';
2
+ import { VariantProps } from 'class-variance-authority';
3
+ export type ChipLinkKind = "external" | "internal";
4
+ type Props = React.AnchorHTMLAttributes<HTMLAnchorElement> & VariantProps<typeof chip> & {
5
+ href: string;
6
+ /** Link target scope. `"external"` (default) opens in a new tab with a diagonal `ArrowUpRight` icon; `"internal"` stays in the current tab with a horizontal `ArrowRight` icon. */
7
+ kind?: ChipLinkKind;
8
+ className?: string;
9
+ children: React.ReactNode;
10
+ };
11
+ /**
12
+ * ChipLink — anchor styled as a Chip. Reuses Chip's shared variants so the
13
+ * variant and appearance axes stay aligned, and auto-appends a directional icon
14
+ * (Lucide `ArrowUpRight` for external, `ArrowRight` for internal).
15
+ */
16
+ export declare function ChipLink({ variant, appearance, inline, kind, className, children, ...props }: Props): import("react/jsx-runtime").JSX.Element;
17
+ export {};
@@ -0,0 +1,2 @@
1
+ import { ComponentMeta } from '../../types/meta';
2
+ export declare const chipLinkMeta: ComponentMeta;
@@ -0,0 +1,2 @@
1
+ export { ChipLink } from './chip-link';
2
+ export { chipLinkMeta } from './chip-link.meta';
@@ -0,0 +1,60 @@
1
+ type InlineProps = Omit<React.HTMLAttributes<HTMLElement>, "children"> & {
2
+ /** The inline code, as a raw string — also the value copied when `copyable`. */
3
+ children: string;
4
+ /** Show a small copy button on the right, behind a hairline separator. @default false */
5
+ copyable?: boolean;
6
+ /** Pre-rendered display content (e.g. syntax-highlighted tokens) shown in place of `children`, which stays the copied value. The code-highlight integration fills this slot. */
7
+ highlighted?: React.ReactNode;
8
+ };
9
+ /**
10
+ * Code.Inline — an inline code fragment (a `<code>` chip) for use inside running
11
+ * text. Dumb: styling only — syntax coloring arrives pre-rendered through the
12
+ * `highlighted` slot (the code-highlight integration supplies it). `Typo.InlineCode`
13
+ * renders this under the hood so inline-code chrome is defined in one place.
14
+ * Children must be a string so an opted-in copy button has clean text to copy.
15
+ */
16
+ export declare function Inline({ className, copyable, highlighted, children, ...props }: InlineProps): import("react/jsx-runtime").JSX.Element;
17
+ export declare namespace Inline {
18
+ var displayName: string;
19
+ }
20
+ export type CodeInlineLinkKind = "external" | "internal";
21
+ type InlineLinkProps = Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, "children"> & {
22
+ /** The link text, as a raw string, rendered as a code fragment. */
23
+ children: string;
24
+ /** Link target scope. `"external"` (default) opens in a new tab with a diagonal `ArrowUpRight` icon; `"internal"` stays in the current tab with a horizontal `ArrowRight` icon. */
25
+ kind?: CodeInlineLinkKind;
26
+ };
27
+ /**
28
+ * Code.InlineLink — the inline-code chip rendered as a link: the same hairline
29
+ * box, with a directional arrow behind the separator instead of a copy button.
30
+ * Sibling of `Code.Inline`, sharing its chip visual (`.inline`) — never both a
31
+ * copy button and a link on the same chip. Mirrors `ChipLink`'s shape (anchor
32
+ * is the chip root, trailing icon nudges on hover, `data-kind` picks the icon).
33
+ */
34
+ export declare function InlineLink({ className, kind, children, ...props }: InlineLinkProps): import("react/jsx-runtime").JSX.Element;
35
+ export declare namespace InlineLink {
36
+ var displayName: string;
37
+ }
38
+ type BlockProps = Omit<React.HTMLAttributes<HTMLPreElement>, "children"> & {
39
+ /** The code to display, as a raw string — also the value copied by the copy button. */
40
+ children: string;
41
+ /** Language label shown in the corner notch. Omit to hide the notch. */
42
+ language?: string;
43
+ /** Hide the copy button. @default false */
44
+ hideCopy?: boolean;
45
+ /** Pre-rendered display content (e.g. syntax-highlighted tokens) shown in place of `children`, which stays the copied value. The code-highlight integration fills this slot. */
46
+ highlighted?: React.ReactNode;
47
+ };
48
+ /**
49
+ * Code.Block — a fenced code block on a flat brand surface, with an optional
50
+ * chamfered language notch (top-left) and a copy button (top-right). The
51
+ * surface follows the global corner-radius token when a preset opts in.
52
+ * Dumb: styling only — syntax coloring arrives pre-rendered through the
53
+ * `highlighted` slot (the code-highlight integration supplies it). Children
54
+ * must be a string so the copy button has clean text to copy.
55
+ */
56
+ export declare function Block({ className, language, hideCopy, highlighted, children, ...props }: BlockProps): import("react/jsx-runtime").JSX.Element;
57
+ export declare namespace Block {
58
+ var displayName: string;
59
+ }
60
+ export {};
@@ -0,0 +1,2 @@
1
+ import { ComponentMeta } from '../../types/meta';
2
+ export declare const codeMeta: ComponentMeta;
@@ -0,0 +1,2 @@
1
+ export * as Code from './code';
2
+ export { codeMeta } from './code.meta';
@@ -0,0 +1,57 @@
1
+ import { Collapsible as CollapsiblePrimitive } from '@base-ui/react/collapsible';
2
+ import { VariantProps } from 'class-variance-authority';
3
+ type UpstreamRoot = React.ComponentProps<typeof CollapsiblePrimitive.Root>;
4
+ type UpstreamTrigger = React.ComponentProps<typeof CollapsiblePrimitive.Trigger>;
5
+ type UpstreamPanel = React.ComponentProps<typeof CollapsiblePrimitive.Panel>;
6
+ declare const collapsibleRoot: (props?: ({
7
+ variant?: "solid" | "default" | null | undefined;
8
+ } & import('class-variance-authority/types').ClassProp) | undefined) => string;
9
+ type RootProps = Omit<React.HTMLAttributes<HTMLDivElement>, "className" | "style"> & VariantProps<typeof collapsibleRoot> & {
10
+ /** Visual treatment applied to the trigger. `solid` gives the trigger a contained surface background; `default` is transparent at rest and drenched-blue when open. */
11
+ /** @default false */
12
+ defaultOpen?: UpstreamRoot["defaultOpen"];
13
+ open?: UpstreamRoot["open"];
14
+ onOpenChange?: UpstreamRoot["onOpenChange"];
15
+ /** @default false */
16
+ disabled?: UpstreamRoot["disabled"];
17
+ className?: UpstreamRoot["className"];
18
+ style?: UpstreamRoot["style"];
19
+ render?: UpstreamRoot["render"];
20
+ };
21
+ /**
22
+ * Collapsible.Root — container that manages open/closed state for a trigger–panel pair.
23
+ *
24
+ * @see https://base-ui.com/react/components/collapsible
25
+ * @llm https://base-ui.com/react/components/collapsible.md
26
+ */
27
+ export declare function Root({ variant, className, ...props }: RootProps): import("react/jsx-runtime").JSX.Element;
28
+ export declare namespace Root {
29
+ var displayName: string;
30
+ }
31
+ type TriggerProps = Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, "className" | "style"> & {
32
+ /** @default true */
33
+ nativeButton?: UpstreamTrigger["nativeButton"];
34
+ className?: UpstreamTrigger["className"];
35
+ style?: UpstreamTrigger["style"];
36
+ render?: UpstreamTrigger["render"];
37
+ };
38
+ /** Collapsible.Trigger — button that toggles the panel open and closed. */
39
+ export declare function Trigger({ className, children, ...props }: TriggerProps): import("react/jsx-runtime").JSX.Element;
40
+ export declare namespace Trigger {
41
+ var displayName: string;
42
+ }
43
+ type PanelProps = Omit<React.HTMLAttributes<HTMLDivElement>, "className" | "style"> & {
44
+ /** @default false */
45
+ hiddenUntilFound?: UpstreamPanel["hiddenUntilFound"];
46
+ /** @default false */
47
+ keepMounted?: UpstreamPanel["keepMounted"];
48
+ className?: UpstreamPanel["className"];
49
+ style?: UpstreamPanel["style"];
50
+ render?: UpstreamPanel["render"];
51
+ };
52
+ /** Collapsible.Panel — region that expands and collapses when the trigger is activated. */
53
+ export declare function Panel({ className, ...props }: PanelProps): import("react/jsx-runtime").JSX.Element;
54
+ export declare namespace Panel {
55
+ var displayName: string;
56
+ }
57
+ export {};
@@ -0,0 +1,2 @@
1
+ import { ComponentMeta } from '../../types/meta';
2
+ export declare const collapsibleMeta: ComponentMeta;
@@ -0,0 +1,2 @@
1
+ export * as Collapsible from './collapsible';
2
+ export { collapsibleMeta } from './collapsible.meta';
@@ -0,0 +1,21 @@
1
+ import { Button } from '../button';
2
+ type Props = Omit<React.ComponentProps<typeof Button>, "children" | "onClick"> & {
3
+ /** Text written to the clipboard when the button is pressed. */
4
+ value: string;
5
+ /** Accessible label in the idle state. @default "Copy" */
6
+ label?: string;
7
+ /** Accessible label shown briefly after a successful copy. @default "Copied" */
8
+ copiedLabel?: string;
9
+ /** Variant to use for the button. @default "secondary" */
10
+ variant?: React.ComponentProps<typeof Button>["variant"];
11
+ };
12
+ /**
13
+ * CopyButton — a Button that copies `value` to the clipboard and shows a
14
+ * transient confirmation (Copy → Check). Composes Button rather than rendering
15
+ * its own element, so all Button variants and native attributes pass through.
16
+ */
17
+ export declare function CopyButton({ value, label, copiedLabel, variant, size, className, ...props }: Props): import("react/jsx-runtime").JSX.Element;
18
+ export declare namespace CopyButton {
19
+ var displayName: string;
20
+ }
21
+ export {};
@@ -0,0 +1,2 @@
1
+ import { ComponentMeta } from '../../types/meta';
2
+ export declare const copyButtonMeta: ComponentMeta;
@@ -0,0 +1,2 @@
1
+ export { CopyButton } from './copy-button';
2
+ export { copyButtonMeta } from './copy-button.meta';
@@ -0,0 +1,191 @@
1
+ import { Drawer as DrawerPrimitive } from '@base-ui/react/drawer';
2
+ type BorderColor = "primary" | "fg-minor" | "fg-support" | "none";
3
+ type BorderStyle = "solid" | "dashed" | "none";
4
+ type UpstreamRoot = React.ComponentProps<typeof DrawerPrimitive.Root>;
5
+ type UpstreamTrigger = React.ComponentProps<typeof DrawerPrimitive.Trigger>;
6
+ type UpstreamPortal = React.ComponentProps<typeof DrawerPrimitive.Portal>;
7
+ type UpstreamBackdrop = React.ComponentProps<typeof DrawerPrimitive.Backdrop>;
8
+ type UpstreamViewport = React.ComponentProps<typeof DrawerPrimitive.Viewport>;
9
+ type UpstreamPopup = React.ComponentProps<typeof DrawerPrimitive.Popup>;
10
+ type UpstreamContent = React.ComponentProps<typeof DrawerPrimitive.Content>;
11
+ type UpstreamTitle = React.ComponentProps<typeof DrawerPrimitive.Title>;
12
+ type UpstreamDescription = React.ComponentProps<typeof DrawerPrimitive.Description>;
13
+ type UpstreamClose = React.ComponentProps<typeof DrawerPrimitive.Close>;
14
+ type UpstreamIndent = React.ComponentProps<typeof DrawerPrimitive.Indent>;
15
+ type UpstreamIndentBackground = React.ComponentProps<typeof DrawerPrimitive.IndentBackground>;
16
+ type UpstreamSwipeArea = React.ComponentProps<typeof DrawerPrimitive.SwipeArea>;
17
+ type RootProps = {
18
+ open?: UpstreamRoot["open"];
19
+ /** @default false */
20
+ defaultOpen?: UpstreamRoot["defaultOpen"];
21
+ onOpenChange?: UpstreamRoot["onOpenChange"];
22
+ onOpenChangeComplete?: UpstreamRoot["onOpenChangeComplete"];
23
+ /** @default true */
24
+ modal?: UpstreamRoot["modal"];
25
+ /** @default 'down' */
26
+ swipeDirection?: UpstreamRoot["swipeDirection"];
27
+ snapPoints?: UpstreamRoot["snapPoints"];
28
+ snapPoint?: UpstreamRoot["snapPoint"];
29
+ onSnapPointChange?: UpstreamRoot["onSnapPointChange"];
30
+ /** @default false */
31
+ disablePointerDismissal?: UpstreamRoot["disablePointerDismissal"];
32
+ /** @default false */
33
+ snapToSequentialPoints?: UpstreamRoot["snapToSequentialPoints"];
34
+ /**
35
+ * Colour of the border on the panel's open edge. Inherited by Drawer.Popup;
36
+ * a Popup-level prop overrides it.
37
+ * @default 'primary'
38
+ */
39
+ borderColor?: BorderColor;
40
+ /**
41
+ * Stroke style of the border on the panel's open edge. Inherited by
42
+ * Drawer.Popup; a Popup-level prop overrides it.
43
+ * @default 'solid'
44
+ */
45
+ borderStyle?: BorderStyle;
46
+ children?: UpstreamRoot["children"];
47
+ };
48
+ /**
49
+ * Drawer.Root — container that manages open/closed state and gesture interaction.
50
+ *
51
+ * @see https://base-ui.com/react/components/drawer
52
+ * @llm https://base-ui.com/react/components/drawer.md
53
+ */
54
+ export declare function Root({ borderColor, borderStyle, ...props }: RootProps): import("react/jsx-runtime").JSX.Element;
55
+ export declare namespace Root {
56
+ var displayName: string;
57
+ }
58
+ type TriggerProps = Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, "className"> & {
59
+ /** @default true */
60
+ nativeButton?: UpstreamTrigger["nativeButton"];
61
+ className?: UpstreamTrigger["className"];
62
+ render?: UpstreamTrigger["render"];
63
+ };
64
+ /** Drawer.Trigger — button that opens the drawer. */
65
+ export declare function Trigger({ className, ...props }: TriggerProps): import("react/jsx-runtime").JSX.Element;
66
+ export declare namespace Trigger {
67
+ var displayName: string;
68
+ }
69
+ type PortalProps = {
70
+ container?: UpstreamPortal["container"];
71
+ children?: UpstreamPortal["children"];
72
+ };
73
+ /** Drawer.Portal — renders backdrop and popup in a portal outside the main document flow. */
74
+ export declare function Portal(props: PortalProps): import("react/jsx-runtime").JSX.Element;
75
+ export declare namespace Portal {
76
+ var displayName: string;
77
+ }
78
+ type BackdropProps = Omit<React.HTMLAttributes<HTMLDivElement>, "className"> & {
79
+ className?: UpstreamBackdrop["className"];
80
+ render?: UpstreamBackdrop["render"];
81
+ };
82
+ /** Drawer.Backdrop — semi-transparent overlay that dims the page content behind the drawer. */
83
+ export declare function Backdrop({ className, ...props }: BackdropProps): import("react/jsx-runtime").JSX.Element;
84
+ export declare namespace Backdrop {
85
+ var displayName: string;
86
+ }
87
+ type ViewportProps = Omit<React.HTMLAttributes<HTMLDivElement>, "className"> & {
88
+ className?: UpstreamViewport["className"];
89
+ render?: UpstreamViewport["render"];
90
+ };
91
+ /** Drawer.Viewport — full-screen container that positions the popup. */
92
+ export declare function Viewport({ className, ...props }: ViewportProps): import("react/jsx-runtime").JSX.Element;
93
+ export declare namespace Viewport {
94
+ var displayName: string;
95
+ }
96
+ type PopupProps = Omit<React.HTMLAttributes<HTMLDivElement>, "className"> & {
97
+ /**
98
+ * Colour of the border on the open edge. Overrides the value inherited from
99
+ * Drawer.Root; defaults to it when unset.
100
+ */
101
+ borderColor?: BorderColor;
102
+ /**
103
+ * Stroke style of the border on the open edge. Overrides the value inherited
104
+ * from Drawer.Root; defaults to it when unset.
105
+ */
106
+ borderStyle?: BorderStyle;
107
+ initialFocus?: UpstreamPopup["initialFocus"];
108
+ finalFocus?: UpstreamPopup["finalFocus"];
109
+ className?: UpstreamPopup["className"];
110
+ render?: UpstreamPopup["render"];
111
+ };
112
+ /** Drawer.Popup — the visible panel surface. Positioning is driven automatically by the nearest Drawer.Root's swipeDirection. */
113
+ export declare function Popup({ borderColor, borderStyle, className, ...props }: PopupProps): import("react/jsx-runtime").JSX.Element;
114
+ export declare namespace Popup {
115
+ var displayName: string;
116
+ }
117
+ type ContentProps = Omit<React.HTMLAttributes<HTMLDivElement>, "className"> & {
118
+ className?: UpstreamContent["className"];
119
+ render?: UpstreamContent["render"];
120
+ };
121
+ /** Drawer.Content — scrollable content wrapper inside the popup. */
122
+ export declare function Content({ className, ...props }: ContentProps): import("react/jsx-runtime").JSX.Element;
123
+ export declare namespace Content {
124
+ var displayName: string;
125
+ }
126
+ type TitleProps = React.HTMLAttributes<HTMLHeadingElement> & {
127
+ render?: UpstreamTitle["render"];
128
+ };
129
+ /** Drawer.Title — semantic heading for the drawer for screen readers. */
130
+ export declare function Title({ className, ...props }: TitleProps): import("react/jsx-runtime").JSX.Element;
131
+ export declare namespace Title {
132
+ var displayName: string;
133
+ }
134
+ type CloseProps = Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, "className"> & {
135
+ /** @default true */
136
+ nativeButton?: UpstreamClose["nativeButton"];
137
+ className?: UpstreamClose["className"];
138
+ render?: UpstreamClose["render"];
139
+ };
140
+ /** Drawer.Close — button that closes the drawer. */
141
+ export declare function Close({ className, ...props }: CloseProps): import("react/jsx-runtime").JSX.Element;
142
+ export declare namespace Close {
143
+ var displayName: string;
144
+ }
145
+ type DescriptionProps = React.HTMLAttributes<HTMLParagraphElement> & {
146
+ render?: UpstreamDescription["render"];
147
+ };
148
+ /** Drawer.Description — supplementary paragraph describing the drawer's purpose for screen readers. */
149
+ export declare function Description({ className, ...props }: DescriptionProps): import("react/jsx-runtime").JSX.Element;
150
+ export declare namespace Description {
151
+ var displayName: string;
152
+ }
153
+ type ProviderProps = {
154
+ children?: React.ReactNode;
155
+ };
156
+ /** Drawer.Provider — shared context for coordinating indent/background effects across multiple drawers. Required ancestor for Drawer.Indent and Drawer.IndentBackground. */
157
+ export declare function Provider(props: ProviderProps): import("react/jsx-runtime").JSX.Element;
158
+ export declare namespace Provider {
159
+ var displayName: string;
160
+ }
161
+ type IndentProps = Omit<React.HTMLAttributes<HTMLDivElement>, "className"> & {
162
+ className?: UpstreamIndent["className"];
163
+ render?: UpstreamIndent["render"];
164
+ };
165
+ /** Drawer.Indent — wraps app content that scales and lifts when a drawer opens. Receives `data-active` from Base UI; use `--drawer-swipe-progress` in CSS to drive the animation. */
166
+ export declare function Indent({ className, ...props }: IndentProps): import("react/jsx-runtime").JSX.Element;
167
+ export declare namespace Indent {
168
+ var displayName: string;
169
+ }
170
+ type IndentBackgroundProps = Omit<React.HTMLAttributes<HTMLDivElement>, "className"> & {
171
+ className?: UpstreamIndentBackground["className"];
172
+ render?: UpstreamIndentBackground["render"];
173
+ };
174
+ /** Drawer.IndentBackground — background layer placed behind Drawer.Indent. Styled to reveal a dark surface as the app content scales away. */
175
+ export declare function IndentBackground({ className, ...props }: IndentBackgroundProps): import("react/jsx-runtime").JSX.Element;
176
+ export declare namespace IndentBackground {
177
+ var displayName: string;
178
+ }
179
+ type SwipeAreaProps = Omit<React.HTMLAttributes<HTMLDivElement>, "className"> & {
180
+ /** @default false */
181
+ disabled?: UpstreamSwipeArea["disabled"];
182
+ swipeDirection?: UpstreamSwipeArea["swipeDirection"];
183
+ className?: UpstreamSwipeArea["className"];
184
+ render?: UpstreamSwipeArea["render"];
185
+ };
186
+ /** Drawer.SwipeArea — invisible fixed region that listens for swipe gestures to open the drawer. Position and size it at the screen edge relevant to the swipeDirection. */
187
+ export declare function SwipeArea({ className, ...props }: SwipeAreaProps): import("react/jsx-runtime").JSX.Element;
188
+ export declare namespace SwipeArea {
189
+ var displayName: string;
190
+ }
191
+ export {};
@@ -0,0 +1,2 @@
1
+ import { ComponentMeta } from '../../types/meta';
2
+ export declare const drawerMeta: ComponentMeta;
@@ -0,0 +1,2 @@
1
+ export * as Drawer from './drawer';
2
+ export { drawerMeta } from './drawer.meta';
@@ -0,0 +1,2 @@
1
+ export { Input } from './input';
2
+ export { inputMeta } from './input.meta';
@@ -0,0 +1,25 @@
1
+ import { Input as InputPrimitive } from '@base-ui/react/input';
2
+ import { VariantProps } from 'class-variance-authority';
3
+ declare const input: (props?: ({
4
+ variant?: "outline" | "ghost" | "filled" | null | undefined;
5
+ size?: "sm" | "md" | "lg" | null | undefined;
6
+ } & import('class-variance-authority/types').ClassProp) | undefined) => string;
7
+ type UpstreamInput = React.ComponentProps<typeof InputPrimitive>;
8
+ type Props = Omit<React.InputHTMLAttributes<HTMLInputElement>, "className" | "style" | "size"> & VariantProps<typeof input> & {
9
+ value?: UpstreamInput["value"];
10
+ defaultValue?: UpstreamInput["defaultValue"];
11
+ onValueChange?: UpstreamInput["onValueChange"];
12
+ className?: UpstreamInput["className"];
13
+ style?: UpstreamInput["style"];
14
+ render?: UpstreamInput["render"];
15
+ };
16
+ /**
17
+ * Single-line text input. Also called a text field or input field.
18
+ * Wraps Base UI Input for controlled/uncontrolled state, form integration,
19
+ * and Field context awareness (valid/invalid/dirty/touched/filled/focused).
20
+ *
21
+ * @see https://base-ui.com/react/components/input
22
+ * @llm https://base-ui.com/react/components/input.md
23
+ */
24
+ export declare function Input({ variant, size, className, ...props }: Props): import("react/jsx-runtime").JSX.Element;
25
+ export {};
@@ -0,0 +1,2 @@
1
+ import { ComponentMeta } from '../../types/meta';
2
+ export declare const inputMeta: ComponentMeta;
@@ -0,0 +1,16 @@
1
+ import { Logo } from '../logo';
2
+ type Props = Omit<React.ComponentProps<typeof Logo>, "src" | "alt"> & {
3
+ /** Render the compact glyph instead of the full wordmark. */
4
+ glyph?: boolean;
5
+ /** Override the accessible label. Defaults to "ImFusion". */
6
+ alt?: string;
7
+ };
8
+ /**
9
+ * ImFusion's own logo — the generic {@link Logo} primitive pre-wired with the
10
+ * ImFusion marks and the brand variant. The single branded entry point and the
11
+ * only export from this module; external consumers compose `<Logo src={…} />`
12
+ * with their own asset. Pass `glyph` for the compact mark; the default is the
13
+ * full wordmark.
14
+ */
15
+ export declare function ImFusionLogo({ glyph, alt, variant, ...props }: Props): import("react/jsx-runtime").JSX.Element;
16
+ export {};
@@ -0,0 +1 @@
1
+ export { ImFusionLogo } from './imfusion';
@@ -0,0 +1,3 @@
1
+ export { Logo } from './logo';
2
+ export { logoMeta } from './logo.meta';
3
+ export { ImFusionLogo } from './imfusion';
@@ -0,0 +1,15 @@
1
+ import { ReactNode } from 'react';
2
+ import { VariantProps } from 'class-variance-authority';
3
+ declare const logo: (props?: ({
4
+ size?: "sm" | "md" | "lg" | "hero" | "xs" | "xl" | "fit" | null | undefined;
5
+ variant?: "main" | "inherit" | "support" | "minor" | "brand" | null | undefined;
6
+ } & import('class-variance-authority/types').ClassProp) | undefined) => string;
7
+ type Props = Omit<React.HTMLAttributes<HTMLSpanElement>, "children"> & VariantProps<typeof logo> & {
8
+ /** Logo source — an image URL or an inline SVG node. Required; this primitive carries no brand default (see `ImFusionLogo` for our own mark). */
9
+ src: string | ReactNode;
10
+ alt: string;
11
+ /** Explicit height — overrides `size` variant when set. */
12
+ height?: string | number;
13
+ };
14
+ export declare function Logo({ src, alt, size, variant, height, className, style, ...props }: Props): import("react/jsx-runtime").JSX.Element;
15
+ export {};