@hai3/uikit 0.1.0-alpha.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.
package/README.md ADDED
@@ -0,0 +1,101 @@
1
+ # @hai3/uikit
2
+
3
+ Production-ready React component library for the HAI3 framework.
4
+
5
+ ## Overview
6
+
7
+ `@hai3/uikit` provides a comprehensive set of accessible, themeable React components built on shadcn/ui and Radix UI primitives. The library serves as the reference implementation of HAI3's component contracts and offers a complete design system for building modern SaaS applications.
8
+
9
+ ## Purpose
10
+
11
+ This package delivers enterprise-grade UI components with consistent APIs, full TypeScript support, and accessibility built-in. Components follow a hierarchical architecture where base primitives wrap shadcn/ui elements, and composite components combine these primitives into higher-level patterns.
12
+
13
+ ## Component Architecture
14
+
15
+ ### Base Components
16
+
17
+ Foundation-level components that wrap shadcn/ui primitives with HAI3-specific APIs and conventions. These include buttons, inputs, layout elements, and other atomic UI building blocks. All base components accept standardized prop interfaces defined in the contracts package.
18
+
19
+ ### Composite Components
20
+
21
+ Higher-level components built by combining base components into common patterns. Examples include icon buttons, theme selectors, and navigation elements. Composites demonstrate best practices for component composition and serve as templates for custom implementations.
22
+
23
+ ### Theme Integration
24
+
25
+ All components support theming through Tailwind CSS custom properties. Themes define design tokens that components consume automatically, enabling dynamic theme switching without component changes.
26
+
27
+ ## Key Features
28
+
29
+ - **Type Safety**: Complete TypeScript definitions with strict typing
30
+ - **Accessibility**: Built on Radix UI primitives following WAI-ARIA standards
31
+ - **Themeable**: Full design system integration via Tailwind CSS
32
+ - **Tree-Shakeable**: ES modules with side-effect-free exports
33
+ - **Consistent APIs**: Standardized prop interfaces across all components
34
+
35
+ ## Installation
36
+
37
+ ```bash
38
+ npm install @hai3/uikit
39
+ ```
40
+
41
+ ### Required Peer Dependencies
42
+
43
+ The package requires React 18+ and several UI primitive libraries:
44
+
45
+ ```bash
46
+ npm install react react-dom @radix-ui/react-select @radix-ui/react-slot \
47
+ class-variance-authority clsx lucide-react tailwind-merge tailwindcss-animate
48
+ ```
49
+
50
+ ## Integration
51
+
52
+ ### With HAI3 Applications
53
+
54
+ HAI3 applications integrate UI Kit through the component registry system. Register components at application startup, and the framework makes them available to all screens and layouts.
55
+
56
+ ### As Standalone Library
57
+
58
+ The package can be used independently of the HAI3 framework. Import components directly and use them as standard React components with full TypeScript support.
59
+
60
+ ## Component Categories
61
+
62
+ - **Form Controls**: Buttons, inputs, switches, sliders, and selects
63
+ - **Layout**: Headers, footers, menus, sidebars, and containers
64
+ - **Overlays**: Dialogs, popups, tooltips, and modals
65
+ - **Navigation**: Menu items, breadcrumbs, and tabs
66
+ - **Data Display**: Cards, lists, avatars, and badges
67
+ - **Feedback**: Progress indicators, loaders, and alerts
68
+
69
+ ## Customization
70
+
71
+ ### Styling Approach
72
+
73
+ Components use Tailwind CSS with class-variance-authority for variant management. Override default styles through className props or customize the Tailwind configuration.
74
+
75
+ ### Component Extension
76
+
77
+ Build custom components by composing base components or extending existing ones. The type system ensures custom components maintain compatibility with the framework.
78
+
79
+ ## Browser Support
80
+
81
+ - Chrome/Edge (latest 2 versions)
82
+ - Firefox (latest 2 versions)
83
+ - Safari (latest 2 versions)
84
+
85
+ ## Version
86
+
87
+ **Alpha Release** (`0.1.0-alpha.0`) - APIs may change before stable release.
88
+
89
+ ## License
90
+
91
+ Apache-2.0
92
+
93
+ ## Documentation
94
+
95
+ Full framework documentation: [HAI3 Documentation](https://github.com/HAI3org/HAI3)
96
+
97
+ ## Related Packages
98
+
99
+ - [`@hai3/uikit-contracts`](../uikit-contracts) - Type definitions and contracts
100
+ - [`@hai3/uicore`](../uicore) - Core framework and layout system
101
+ - [`@hai3/studio`](../studio) - Development tools overlay
@@ -0,0 +1,514 @@
1
+ import * as React$1 from 'react';
2
+ import React__default from 'react';
3
+ import * as AvatarPrimitive from '@radix-ui/react-avatar';
4
+ import * as class_variance_authority_types from 'class-variance-authority/types';
5
+ import { VariantProps } from 'class-variance-authority';
6
+ import { ButtonVariant, ButtonSize, TextDirection, IconButtonSize } from '@hai3/uikit-contracts';
7
+ export { ButtonSize, ButtonVariant, IconButtonSize } from '@hai3/uikit-contracts';
8
+ import * as react_jsx_runtime from 'react/jsx-runtime';
9
+ import * as SwitchPrimitives from '@radix-ui/react-switch';
10
+ import * as SliderPrimitive from '@radix-ui/react-slider';
11
+ import * as ProgressPrimitive from '@radix-ui/react-progress';
12
+ import * as TooltipPrimitive from '@radix-ui/react-tooltip';
13
+ import * as NavigationMenuPrimitive from '@radix-ui/react-navigation-menu';
14
+ import * as SheetPrimitive from '@radix-ui/react-dialog';
15
+ import * as SelectPrimitive from '@radix-ui/react-select';
16
+ import * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';
17
+
18
+ declare const Avatar: React$1.ForwardRefExoticComponent<Omit<AvatarPrimitive.AvatarProps & React$1.RefAttributes<HTMLSpanElement>, "ref"> & React$1.RefAttributes<HTMLSpanElement>>;
19
+ declare const AvatarImage: React$1.ForwardRefExoticComponent<Omit<AvatarPrimitive.AvatarImageProps & React$1.RefAttributes<HTMLImageElement>, "ref"> & React$1.RefAttributes<HTMLImageElement>>;
20
+ declare const AvatarFallback: React$1.ForwardRefExoticComponent<Omit<AvatarPrimitive.AvatarFallbackProps & React$1.RefAttributes<HTMLSpanElement>, "ref"> & React$1.RefAttributes<HTMLSpanElement>>;
21
+
22
+ declare const buttonVariants: (props?: ({
23
+ variant?: ButtonVariant | null | undefined;
24
+ size?: ButtonSize | null | undefined;
25
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
26
+ interface ButtonProps extends React$1.ButtonHTMLAttributes<HTMLButtonElement>, VariantProps<typeof buttonVariants> {
27
+ asChild?: boolean;
28
+ }
29
+ declare const Button: React$1.ForwardRefExoticComponent<ButtonProps & React$1.RefAttributes<HTMLButtonElement>>;
30
+
31
+ declare const badgeVariants: (props?: ({
32
+ variant?: "default" | "secondary" | "destructive" | "outline" | null | undefined;
33
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
34
+ interface BadgeProps extends React$1.HTMLAttributes<HTMLSpanElement>, VariantProps<typeof badgeVariants> {
35
+ asChild?: boolean;
36
+ }
37
+ declare function Badge({ className, variant, asChild, ...props }: BadgeProps): react_jsx_runtime.JSX.Element;
38
+
39
+ declare const Input: React$1.ForwardRefExoticComponent<Omit<React$1.DetailedHTMLProps<React$1.InputHTMLAttributes<HTMLInputElement>, HTMLInputElement>, "ref"> & React$1.RefAttributes<HTMLInputElement>>;
40
+
41
+ interface TextareaProps extends React$1.TextareaHTMLAttributes<HTMLTextAreaElement> {
42
+ /**
43
+ * Enable auto-resize behavior (adjusts height based on content)
44
+ */
45
+ autoResize?: boolean;
46
+ /**
47
+ * Minimum height in pixels when auto-resize is enabled (default: 50)
48
+ */
49
+ minHeight?: number;
50
+ /**
51
+ * Maximum height in pixels when auto-resize is enabled (default: 350)
52
+ */
53
+ maxHeight?: number;
54
+ /**
55
+ * Size variant (affects min-height)
56
+ * - sm: min-h-11 (44px / 2.75rem)
57
+ * - default: min-h-[60px] (3.75rem)
58
+ * - lg: min-h-20 (80px / 5rem)
59
+ */
60
+ size?: 'sm' | 'default' | 'lg';
61
+ }
62
+ declare const Textarea: React$1.ForwardRefExoticComponent<TextareaProps & React$1.RefAttributes<HTMLTextAreaElement>>;
63
+
64
+ declare const Switch: React$1.ForwardRefExoticComponent<Omit<SwitchPrimitives.SwitchProps & React$1.RefAttributes<HTMLButtonElement>, "ref"> & React$1.RefAttributes<HTMLButtonElement>>;
65
+
66
+ interface SkeletonProps extends React.HTMLAttributes<HTMLDivElement> {
67
+ /**
68
+ * If true, skeleton inherits text color instead of using bg-muted
69
+ * Useful for buttons, menu items, and colored text
70
+ */
71
+ inheritColor?: boolean;
72
+ }
73
+ declare function Skeleton({ className, inheritColor, ...props }: SkeletonProps): react_jsx_runtime.JSX.Element;
74
+
75
+ interface SpinnerProps extends React$1.HTMLAttributes<HTMLDivElement> {
76
+ icon?: React$1.ComponentType<{
77
+ className?: string;
78
+ }>;
79
+ size?: string;
80
+ }
81
+ declare const Spinner: React$1.ForwardRefExoticComponent<SpinnerProps & React$1.RefAttributes<HTMLDivElement>>;
82
+
83
+ declare const Slider: React$1.ForwardRefExoticComponent<Omit<SliderPrimitive.SliderProps & React$1.RefAttributes<HTMLSpanElement>, "ref"> & React$1.RefAttributes<HTMLSpanElement>>;
84
+ declare const SliderTrack: React$1.ForwardRefExoticComponent<Omit<SliderPrimitive.SliderTrackProps & React$1.RefAttributes<HTMLSpanElement>, "ref"> & React$1.RefAttributes<HTMLSpanElement>>;
85
+ declare const SliderRange: React$1.ForwardRefExoticComponent<Omit<SliderPrimitive.SliderRangeProps & React$1.RefAttributes<HTMLSpanElement>, "ref"> & React$1.RefAttributes<HTMLSpanElement>>;
86
+ declare const SliderThumb: React$1.ForwardRefExoticComponent<Omit<SliderPrimitive.SliderThumbProps & React$1.RefAttributes<HTMLSpanElement>, "ref"> & React$1.RefAttributes<HTMLSpanElement>>;
87
+
88
+ declare const Progress: React$1.ForwardRefExoticComponent<Omit<ProgressPrimitive.ProgressProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
89
+
90
+ declare const TooltipProvider: {
91
+ ({ delayDuration, ...props }: React$1.ComponentProps<typeof TooltipPrimitive.Provider>): react_jsx_runtime.JSX.Element;
92
+ displayName: string | undefined;
93
+ };
94
+ declare const Tooltip: {
95
+ ({ ...props }: React$1.ComponentProps<typeof TooltipPrimitive.Root>): react_jsx_runtime.JSX.Element;
96
+ displayName: string | undefined;
97
+ };
98
+ declare const TooltipTrigger: React$1.ForwardRefExoticComponent<Omit<TooltipPrimitive.TooltipTriggerProps & React$1.RefAttributes<HTMLButtonElement>, "ref"> & React$1.RefAttributes<HTMLButtonElement>>;
99
+ declare const TooltipContent: React$1.ForwardRefExoticComponent<Omit<TooltipPrimitive.TooltipContentProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
100
+
101
+ declare const Card: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLDivElement> & React$1.RefAttributes<HTMLDivElement>>;
102
+ declare const CardHeader: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLDivElement> & React$1.RefAttributes<HTMLDivElement>>;
103
+ declare const CardTitle: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLDivElement> & React$1.RefAttributes<HTMLDivElement>>;
104
+ declare const CardDescription: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLDivElement> & React$1.RefAttributes<HTMLDivElement>>;
105
+ declare const CardContent: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLDivElement> & React$1.RefAttributes<HTMLDivElement>>;
106
+ declare const CardFooter: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLDivElement> & React$1.RefAttributes<HTMLDivElement>>;
107
+
108
+ /**
109
+ * Header Props
110
+ */
111
+ interface HeaderProps {
112
+ children?: React__default.ReactNode;
113
+ className?: string;
114
+ }
115
+ /**
116
+ * Header Component
117
+ * Base layout primitive for app header
118
+ * HAI3 custom component (not from shadcn)
119
+ * Accepts children for flexible content (user info, actions, etc.)
120
+ */
121
+ declare const Header: React__default.ForwardRefExoticComponent<HeaderProps & React__default.RefAttributes<HTMLElement>>;
122
+
123
+ declare const NavigationMenu: React$1.ForwardRefExoticComponent<Omit<NavigationMenuPrimitive.NavigationMenuProps & React$1.RefAttributes<HTMLElement>, "ref"> & React$1.RefAttributes<HTMLElement>>;
124
+ declare const NavigationMenuList: React$1.ForwardRefExoticComponent<Omit<NavigationMenuPrimitive.NavigationMenuListProps & React$1.RefAttributes<HTMLUListElement>, "ref"> & React$1.RefAttributes<HTMLUListElement>>;
125
+ declare const NavigationMenuItem: React$1.ForwardRefExoticComponent<NavigationMenuPrimitive.NavigationMenuItemProps & React$1.RefAttributes<HTMLLIElement>>;
126
+ declare const NavigationMenuTrigger: React$1.ForwardRefExoticComponent<Omit<NavigationMenuPrimitive.NavigationMenuTriggerProps & React$1.RefAttributes<HTMLButtonElement>, "ref"> & React$1.RefAttributes<HTMLButtonElement>>;
127
+ declare const NavigationMenuContent: React$1.ForwardRefExoticComponent<Omit<NavigationMenuPrimitive.NavigationMenuContentProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
128
+ declare const NavigationMenuLink: React$1.ForwardRefExoticComponent<NavigationMenuPrimitive.NavigationMenuLinkProps & React$1.RefAttributes<HTMLAnchorElement>>;
129
+ declare const NavigationMenuViewport: React$1.ForwardRefExoticComponent<Omit<NavigationMenuPrimitive.NavigationMenuViewportProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
130
+ declare const NavigationMenuIndicator: React$1.ForwardRefExoticComponent<Omit<NavigationMenuPrimitive.NavigationMenuIndicatorProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
131
+
132
+ declare const Sheet: React$1.FC<SheetPrimitive.DialogProps>;
133
+ declare const SheetTrigger: React$1.ForwardRefExoticComponent<SheetPrimitive.DialogTriggerProps & React$1.RefAttributes<HTMLButtonElement>>;
134
+ declare const SheetClose: React$1.ForwardRefExoticComponent<SheetPrimitive.DialogCloseProps & React$1.RefAttributes<HTMLButtonElement>>;
135
+ declare const SheetPortal: React$1.FC<SheetPrimitive.DialogPortalProps>;
136
+ declare const SheetOverlay: React$1.ForwardRefExoticComponent<Omit<SheetPrimitive.DialogOverlayProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
137
+ declare const sheetVariants: (props?: ({
138
+ side?: "top" | "right" | "bottom" | "left" | null | undefined;
139
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
140
+ interface SheetContentProps extends React$1.ComponentPropsWithoutRef<typeof SheetPrimitive.Content>, VariantProps<typeof sheetVariants> {
141
+ }
142
+ declare const SheetContent: React$1.ForwardRefExoticComponent<SheetContentProps & React$1.RefAttributes<HTMLDivElement>>;
143
+ declare const SheetHeader: {
144
+ ({ className, ...props }: React$1.HTMLAttributes<HTMLDivElement>): react_jsx_runtime.JSX.Element;
145
+ displayName: string;
146
+ };
147
+ declare const SheetFooter: {
148
+ ({ className, ...props }: React$1.HTMLAttributes<HTMLDivElement>): react_jsx_runtime.JSX.Element;
149
+ displayName: string;
150
+ };
151
+ declare const SheetTitle: React$1.ForwardRefExoticComponent<Omit<SheetPrimitive.DialogTitleProps & React$1.RefAttributes<HTMLHeadingElement>, "ref"> & React$1.RefAttributes<HTMLHeadingElement>>;
152
+ declare const SheetDescription: React$1.ForwardRefExoticComponent<Omit<SheetPrimitive.DialogDescriptionProps & React$1.RefAttributes<HTMLParagraphElement>, "ref"> & React$1.RefAttributes<HTMLParagraphElement>>;
153
+
154
+ declare const Dialog: React$1.FC<SheetPrimitive.DialogProps>;
155
+ declare const DialogTrigger: React$1.ForwardRefExoticComponent<SheetPrimitive.DialogTriggerProps & React$1.RefAttributes<HTMLButtonElement>>;
156
+ declare const DialogPortal: React$1.FC<SheetPrimitive.DialogPortalProps>;
157
+ declare const DialogClose: React$1.ForwardRefExoticComponent<SheetPrimitive.DialogCloseProps & React$1.RefAttributes<HTMLButtonElement>>;
158
+ declare const DialogOverlay: React$1.ForwardRefExoticComponent<Omit<SheetPrimitive.DialogOverlayProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
159
+ declare const DialogContent: React$1.ForwardRefExoticComponent<Omit<SheetPrimitive.DialogContentProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
160
+ declare const DialogHeader: {
161
+ ({ className, ...props }: React$1.HTMLAttributes<HTMLDivElement>): react_jsx_runtime.JSX.Element;
162
+ displayName: string;
163
+ };
164
+ declare const DialogFooter: {
165
+ ({ className, ...props }: React$1.HTMLAttributes<HTMLDivElement>): react_jsx_runtime.JSX.Element;
166
+ displayName: string;
167
+ };
168
+ declare const DialogTitle: React$1.ForwardRefExoticComponent<Omit<SheetPrimitive.DialogTitleProps & React$1.RefAttributes<HTMLHeadingElement>, "ref"> & React$1.RefAttributes<HTMLHeadingElement>>;
169
+ declare const DialogDescription: React$1.ForwardRefExoticComponent<Omit<SheetPrimitive.DialogDescriptionProps & React$1.RefAttributes<HTMLParagraphElement>, "ref"> & React$1.RefAttributes<HTMLParagraphElement>>;
170
+
171
+ declare const Select: React$1.FC<SelectPrimitive.SelectProps>;
172
+ declare const SelectGroup: React$1.ForwardRefExoticComponent<SelectPrimitive.SelectGroupProps & React$1.RefAttributes<HTMLDivElement>>;
173
+ declare const SelectValue: React$1.ForwardRefExoticComponent<SelectPrimitive.SelectValueProps & React$1.RefAttributes<HTMLSpanElement>>;
174
+ declare const SelectTrigger: React$1.ForwardRefExoticComponent<Omit<SelectPrimitive.SelectTriggerProps & React$1.RefAttributes<HTMLButtonElement>, "ref"> & React$1.RefAttributes<HTMLButtonElement>>;
175
+ declare const SelectScrollUpButton: React$1.ForwardRefExoticComponent<Omit<SelectPrimitive.SelectScrollUpButtonProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
176
+ declare const SelectScrollDownButton: React$1.ForwardRefExoticComponent<Omit<SelectPrimitive.SelectScrollDownButtonProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
177
+ declare const SelectContent: React$1.ForwardRefExoticComponent<Omit<SelectPrimitive.SelectContentProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
178
+ declare const SelectLabel: React$1.ForwardRefExoticComponent<Omit<SelectPrimitive.SelectLabelProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
179
+ declare const SelectItem: React$1.ForwardRefExoticComponent<Omit<SelectPrimitive.SelectItemProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
180
+ declare const SelectSeparator: React$1.ForwardRefExoticComponent<Omit<SelectPrimitive.SelectSeparatorProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
181
+
182
+ declare const DropdownMenu: React$1.FC<Omit<React$1.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Root>, 'dir'> & {
183
+ dir?: TextDirection;
184
+ }>;
185
+ declare const DropdownMenuTrigger: React$1.ForwardRefExoticComponent<DropdownMenuPrimitive.DropdownMenuTriggerProps & React$1.RefAttributes<HTMLButtonElement>>;
186
+ declare const DropdownMenuGroup: React$1.ForwardRefExoticComponent<DropdownMenuPrimitive.DropdownMenuGroupProps & React$1.RefAttributes<HTMLDivElement>>;
187
+ declare const DropdownMenuPortal: React$1.FC<DropdownMenuPrimitive.DropdownMenuPortalProps>;
188
+ declare const DropdownMenuSub: React$1.FC<DropdownMenuPrimitive.DropdownMenuSubProps>;
189
+ declare const DropdownMenuRadioGroup: React$1.ForwardRefExoticComponent<DropdownMenuPrimitive.DropdownMenuRadioGroupProps & React$1.RefAttributes<HTMLDivElement>>;
190
+ declare const DropdownMenuSubTrigger: React$1.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuSubTriggerProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & {
191
+ inset?: boolean;
192
+ } & React$1.RefAttributes<HTMLDivElement>>;
193
+ declare const DropdownMenuSubContent: React$1.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuSubContentProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & {
194
+ container?: HTMLElement | null;
195
+ } & React$1.RefAttributes<HTMLDivElement>>;
196
+ declare const DropdownMenuContent: React$1.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuContentProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & {
197
+ container?: HTMLElement | null;
198
+ } & React$1.RefAttributes<HTMLDivElement>>;
199
+ declare const DropdownMenuItem: React$1.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuItemProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & {
200
+ inset?: boolean;
201
+ } & React$1.RefAttributes<HTMLDivElement>>;
202
+ declare const DropdownMenuCheckboxItem: React$1.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuCheckboxItemProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
203
+ declare const DropdownMenuRadioItem: React$1.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuRadioItemProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
204
+ declare const DropdownMenuLabel: React$1.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuLabelProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & {
205
+ inset?: boolean;
206
+ } & React$1.RefAttributes<HTMLDivElement>>;
207
+ declare const DropdownMenuSeparator: React$1.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuSeparatorProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
208
+ declare const DropdownMenuShortcut: {
209
+ ({ className, ...props }: React$1.HTMLAttributes<HTMLSpanElement>): react_jsx_runtime.JSX.Element;
210
+ displayName: string;
211
+ };
212
+
213
+ /**
214
+ * IconButton component for HAI3 UI-Core
215
+ * Provides a consistent icon-only button across all screens
216
+ * Composes UI Kit Button with icon size variant
217
+ */
218
+ interface IconButtonProps extends Omit<ButtonProps, 'size' | 'asChild'> {
219
+ size?: IconButtonSize;
220
+ 'aria-label': string;
221
+ }
222
+ declare const IconButton: React__default.ForwardRefExoticComponent<IconButtonProps & React__default.RefAttributes<HTMLButtonElement>>;
223
+
224
+ /**
225
+ * DropdownButton Component
226
+ * Button with integrated dropdown chevron icon
227
+ * Used for dropdown triggers in ThemeSelector, ScreensetSelector, etc.
228
+ * Forwards all props to Button for DropdownMenuTrigger compatibility
229
+ */
230
+ interface DropdownButtonProps extends React__default.ButtonHTMLAttributes<HTMLButtonElement> {
231
+ children: React__default.ReactNode;
232
+ variant?: ButtonVariant;
233
+ className?: string;
234
+ }
235
+ declare const DropdownButton: React__default.ForwardRefExoticComponent<DropdownButtonProps & React__default.RefAttributes<HTMLButtonElement>>;
236
+
237
+ declare const Sidebar: React$1.ForwardRefExoticComponent<Omit<React$1.ClassAttributes<HTMLElement> & React$1.HTMLAttributes<HTMLElement> & {
238
+ collapsed?: boolean;
239
+ }, "ref"> & React$1.RefAttributes<HTMLElement>>;
240
+ declare const SidebarContent: React$1.ForwardRefExoticComponent<Omit<React$1.DetailedHTMLProps<React$1.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
241
+ declare const SidebarMenu: React$1.ForwardRefExoticComponent<Omit<React$1.DetailedHTMLProps<React$1.HTMLAttributes<HTMLUListElement>, HTMLUListElement>, "ref"> & React$1.RefAttributes<HTMLUListElement>>;
242
+ declare const SidebarMenuItem: React$1.ForwardRefExoticComponent<Omit<React$1.DetailedHTMLProps<React$1.LiHTMLAttributes<HTMLLIElement>, HTMLLIElement>, "ref"> & React$1.RefAttributes<HTMLLIElement>>;
243
+ declare const SidebarMenuButton: React$1.ForwardRefExoticComponent<Omit<React$1.ClassAttributes<HTMLButtonElement> & React$1.ButtonHTMLAttributes<HTMLButtonElement> & {
244
+ asChild?: boolean;
245
+ isActive?: boolean;
246
+ tooltip?: string;
247
+ } & VariantProps<(props?: ({
248
+ variant?: "default" | "outline" | null | undefined;
249
+ size?: "default" | "sm" | "lg" | null | undefined;
250
+ } & class_variance_authority_types.ClassProp) | undefined) => string>, "ref"> & React$1.RefAttributes<HTMLButtonElement>>;
251
+ declare const SidebarMenuIcon: React$1.ForwardRefExoticComponent<Omit<React$1.DetailedHTMLProps<React$1.HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, "ref"> & React$1.RefAttributes<HTMLSpanElement>>;
252
+ declare const SidebarMenuLabel: React$1.ForwardRefExoticComponent<Omit<React$1.DetailedHTMLProps<React$1.HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, "ref"> & React$1.RefAttributes<HTMLSpanElement>>;
253
+
254
+ /**
255
+ * Sidebar Header Component
256
+ * Pure presentational component for sidebar logo/branding area
257
+ * Used with Sidebar component for consistent header styling
258
+ */
259
+
260
+ interface SidebarHeaderProps extends React$1.ComponentProps<"div"> {
261
+ /**
262
+ * Logo icon element (should be properly sized SVG)
263
+ */
264
+ logo?: React$1.ReactNode;
265
+ /**
266
+ * Logo text/branding element (shown when expanded)
267
+ */
268
+ logoText?: React$1.ReactNode;
269
+ /**
270
+ * Whether the sidebar is collapsed
271
+ */
272
+ collapsed?: boolean;
273
+ /**
274
+ * Click handler for the header area
275
+ */
276
+ onClick?: () => void;
277
+ }
278
+ declare const SidebarHeader: React$1.ForwardRefExoticComponent<Omit<SidebarHeaderProps, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
279
+
280
+ /**
281
+ * User Info Props
282
+ * Matches UI Core contract in uikitContracts.ts
283
+ */
284
+ interface UserInfoProps {
285
+ displayName?: string;
286
+ email?: string;
287
+ avatarUrl?: string;
288
+ className?: string;
289
+ loading?: boolean;
290
+ }
291
+ /**
292
+ * UserInfo Component
293
+ * Composite component combining shadcn Avatar + text
294
+ * Displays user avatar with fallback initials and name/email
295
+ */
296
+ declare const UserInfo: React__default.ForwardRefExoticComponent<UserInfoProps & React__default.RefAttributes<HTMLDivElement>>;
297
+
298
+ /**
299
+ * MessageBubble - Chat message display component
300
+ * Pure presentational component for displaying chat messages
301
+ */
302
+ declare enum MessageType {
303
+ User = "user",
304
+ Assistant = "assistant"
305
+ }
306
+ interface MessageBubbleProps {
307
+ type: MessageType;
308
+ content: string;
309
+ timestamp?: Date;
310
+ className?: string;
311
+ onCopy?: () => void;
312
+ onEdit?: () => void;
313
+ onDelete?: () => void;
314
+ }
315
+ declare const MessageBubble: ({ type, content, className, onCopy, onEdit, onDelete, }: MessageBubbleProps) => react_jsx_runtime.JSX.Element;
316
+
317
+ /**
318
+ * ChatInput - Message input component
319
+ * Pure presentational component for chat message input
320
+ */
321
+ interface ChatInputProps {
322
+ value: string;
323
+ onChange: (value: string) => void;
324
+ onSend: () => void;
325
+ onAttachFile?: () => void;
326
+ placeholder?: string;
327
+ disabled?: boolean;
328
+ maxRows?: number;
329
+ className?: string;
330
+ }
331
+ declare const ChatInput: ({ value, onChange, onSend, onAttachFile, placeholder, disabled, maxRows, className, }: ChatInputProps) => react_jsx_runtime.JSX.Element;
332
+
333
+ /**
334
+ * ThreadList - Chat thread list component
335
+ * Pure presentational component for displaying chat threads
336
+ */
337
+ interface ChatThread {
338
+ id: string;
339
+ title: string;
340
+ preview: string;
341
+ timestamp: Date;
342
+ isTemporary?: boolean;
343
+ }
344
+ interface ThreadListProps {
345
+ threads: ChatThread[];
346
+ selectedThreadId?: string;
347
+ onThreadSelect: (threadId: string) => void;
348
+ onNewThread: () => void;
349
+ onDeleteThread?: (threadId: string) => void;
350
+ searchQuery?: string;
351
+ onSearchChange?: (query: string) => void;
352
+ loading?: boolean;
353
+ className?: string;
354
+ }
355
+ declare const ThreadList: ({ threads, selectedThreadId, onThreadSelect, onNewThread, onDeleteThread, searchQuery, onSearchChange, loading, className, }: ThreadListProps) => react_jsx_runtime.JSX.Element;
356
+
357
+ /**
358
+ * Menu Icon ID
359
+ * Well-known constant defined where it belongs
360
+ */
361
+ declare const MENU_ICON_ID: "menu";
362
+ /**
363
+ * Menu Icon (Hamburger)
364
+ * Core icon for header menu toggle
365
+ * Tree-shakeable - imported and registered by app
366
+ */
367
+ declare const MenuIcon: React__default.FC<{
368
+ className?: string;
369
+ }>;
370
+
371
+ /**
372
+ * Close Icon ID
373
+ * Well-known constant defined where it belongs
374
+ */
375
+ declare const CLOSE_ICON_ID: "close";
376
+ /**
377
+ * Close Icon (X)
378
+ * Core icon for closing dialogs/popups
379
+ * Tree-shakeable - imported and registered by app
380
+ */
381
+ declare const CloseIcon: React__default.FC<{
382
+ className?: string;
383
+ }>;
384
+
385
+ /**
386
+ * Theme type definitions for HAI3
387
+ */
388
+ interface Theme {
389
+ name: string;
390
+ colors: {
391
+ primary: string;
392
+ secondary: string;
393
+ accent: string;
394
+ background: string;
395
+ foreground: string;
396
+ muted: string;
397
+ border: string;
398
+ error: string;
399
+ warning: string;
400
+ success: string;
401
+ info: string;
402
+ mainMenu: {
403
+ DEFAULT: string;
404
+ foreground: string;
405
+ hover: string;
406
+ selected: string;
407
+ border: string;
408
+ };
409
+ chat: {
410
+ leftMenu: {
411
+ DEFAULT: string;
412
+ foreground: string;
413
+ hover: string;
414
+ selected: string;
415
+ border: string;
416
+ };
417
+ message: {
418
+ user: {
419
+ background: string;
420
+ foreground: string;
421
+ };
422
+ assistant: {
423
+ background: string;
424
+ foreground: string;
425
+ };
426
+ };
427
+ input: {
428
+ background: string;
429
+ foreground: string;
430
+ border: string;
431
+ };
432
+ codeBlock: {
433
+ background: string;
434
+ foreground: string;
435
+ border: string;
436
+ headerBackground: string;
437
+ };
438
+ };
439
+ };
440
+ spacing: {
441
+ xs: string;
442
+ sm: string;
443
+ md: string;
444
+ lg: string;
445
+ xl: string;
446
+ '2xl': string;
447
+ '3xl': string;
448
+ };
449
+ typography: {
450
+ fontFamily: {
451
+ sans: string[];
452
+ mono: string[];
453
+ };
454
+ fontSize: {
455
+ xs: string;
456
+ sm: string;
457
+ base: string;
458
+ lg: string;
459
+ xl: string;
460
+ '2xl': string;
461
+ '3xl': string;
462
+ '4xl': string;
463
+ '5xl': string;
464
+ };
465
+ fontWeight: {
466
+ normal: string;
467
+ medium: string;
468
+ semibold: string;
469
+ bold: string;
470
+ };
471
+ lineHeight: {
472
+ tight: string;
473
+ normal: string;
474
+ relaxed: string;
475
+ };
476
+ };
477
+ borderRadius: {
478
+ none: string;
479
+ sm: string;
480
+ md: string;
481
+ lg: string;
482
+ xl: string;
483
+ full: string;
484
+ };
485
+ shadows: {
486
+ sm: string;
487
+ md: string;
488
+ lg: string;
489
+ xl: string;
490
+ };
491
+ transitions: {
492
+ fast: string;
493
+ base: string;
494
+ slow: string;
495
+ slower: string;
496
+ };
497
+ }
498
+
499
+ /**
500
+ * Theme application utility
501
+ * Generates CSS variables from theme objects dynamically
502
+ * Single source of truth: theme objects in TypeScript
503
+ * Maps to shadcn CSS variable naming convention
504
+ */
505
+
506
+ /**
507
+ * Apply theme to document by injecting CSS variables
508
+ * Theme objects are the single source of truth
509
+ * @param theme - Theme object to apply
510
+ * @param themeName - Optional theme name for data attribute
511
+ */
512
+ declare const applyTheme: (theme: Theme, themeName?: string) => void;
513
+
514
+ export { Avatar, AvatarFallback, AvatarImage, Badge, type BadgeProps, Button, type ButtonProps, CLOSE_ICON_ID, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, ChatInput, type ChatInputProps, type ChatThread, CloseIcon, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DropdownButton, type DropdownButtonProps, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, Header, type HeaderProps, IconButton, type IconButtonProps, Input, MENU_ICON_ID, MenuIcon, MessageBubble, type MessageBubbleProps, MessageType, NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, NavigationMenuViewport, Progress, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, Sidebar, SidebarContent, SidebarHeader, type SidebarHeaderProps, SidebarMenu, SidebarMenuButton, SidebarMenuIcon, SidebarMenuItem, SidebarMenuLabel, Skeleton, Slider, SliderRange, SliderThumb, SliderTrack, Spinner, type SpinnerProps, Switch, Textarea, type Theme, ThreadList, type ThreadListProps, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, UserInfo, type UserInfoProps, applyTheme, badgeVariants };