@hachej/boring-ui-kit 0.1.13 → 0.1.14
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 +268 -31
- package/dist/index.d.ts +11 -1
- package/dist/index.js +113 -55
- package/dist/styles.css +2848 -0
- package/package.json +13 -4
package/README.md
CHANGED
|
@@ -1,65 +1,302 @@
|
|
|
1
|
-
# @boring
|
|
1
|
+
# @hachej/boring-ui-kit
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
<div align="center">
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
```
|
|
5
|
+
[](https://opensource.org/licenses/MIT)
|
|
6
|
+
[](https://www.npmjs.com/package/@hachej/boring-ui-kit)
|
|
8
7
|
|
|
9
|
-
|
|
8
|
+
</div>
|
|
10
9
|
|
|
11
|
-
|
|
10
|
+
Shared shadcn-style UI primitives for boring-ui packages and plugins. Buttons, dialogs, panes, inputs, feedback states, settings panels — everything a panel needs to look consistent. Zero global CSS dependencies.
|
|
12
11
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
12
|
+
```bash
|
|
13
|
+
pnpm add @hachej/boring-ui-kit
|
|
14
|
+
```
|
|
16
15
|
|
|
17
|
-
|
|
16
|
+
---
|
|
18
17
|
|
|
19
|
-
|
|
18
|
+
## TL;DR
|
|
20
19
|
|
|
21
|
-
**
|
|
20
|
+
**The Problem**: Building panel-based plugins means re-implementing basic UI — buttons, dialogs, form fields, loading states, empty states — over and over. Without a shared design system, every panel looks different and maintenance is a nightmare.
|
|
22
21
|
|
|
23
|
-
**
|
|
22
|
+
**The Solution**: `@hachej/boring-ui-kit` provides ~40 reusable components designed for IDE-style surfaces (panes, toolbars, sidebars). No global CSS — styles inherit from the host app's CSS variables. Drop it in any boring-ui plugin or app and panels look native from day one.
|
|
24
23
|
|
|
25
|
-
|
|
24
|
+
### Why Use @hachej/boring-ui-kit?
|
|
26
25
|
|
|
27
|
-
|
|
26
|
+
| Feature | What It Does |
|
|
27
|
+
|---------|--------------|
|
|
28
|
+
| **Pane primitives** | `Pane`, `PaneHeader`, `PaneBody`, `PaneToolbar`, `FloatingPanel` — built for Dockview panels |
|
|
29
|
+
| **~40 components** | Buttons, inputs, dialogs, tooltips, badges, spinners, empty states, settings panels, and more |
|
|
30
|
+
| **Zero global CSS** | Styles use CSS custom properties from the host; no conflicting style sheets |
|
|
31
|
+
| **shadcn-style** | Composable, headless-compatible, restylable via `className` / `class-variance-authority` |
|
|
32
|
+
| **TypeScript-first** | Every component is typed; props are explicit; no implicit `any` |
|
|
33
|
+
| **Works anywhere** | Plugin panels, standalone apps, storybook — no framework lock-in |
|
|
28
34
|
|
|
29
35
|
---
|
|
30
36
|
|
|
31
|
-
##
|
|
37
|
+
## Quick Example
|
|
32
38
|
|
|
33
39
|
```tsx
|
|
34
|
-
import {
|
|
40
|
+
import {
|
|
41
|
+
Pane, PaneHeader, PaneBody,
|
|
42
|
+
Button, ButtonGroup,
|
|
43
|
+
EmptyState, Spinner,
|
|
44
|
+
Input, Field, FieldLabel
|
|
45
|
+
} from "@hachej/boring-ui-kit"
|
|
35
46
|
|
|
36
|
-
export function
|
|
47
|
+
export function SearchPane() {
|
|
37
48
|
return (
|
|
38
49
|
<Pane>
|
|
39
|
-
<PaneHeader>
|
|
50
|
+
<PaneHeader>Search</PaneHeader>
|
|
40
51
|
<PaneBody>
|
|
41
|
-
<
|
|
42
|
-
|
|
52
|
+
<Field>
|
|
53
|
+
<FieldLabel>Query</FieldLabel>
|
|
54
|
+
<Input placeholder="Search files…" />
|
|
55
|
+
</Field>
|
|
56
|
+
<EmptyState
|
|
57
|
+
title="No results"
|
|
58
|
+
description="Try a different search term"
|
|
59
|
+
icon="search"
|
|
60
|
+
/>
|
|
61
|
+
<ButtonGroup>
|
|
62
|
+
<Button variant="secondary">Cancel</Button>
|
|
63
|
+
<Button>Search</Button>
|
|
64
|
+
</ButtonGroup>
|
|
43
65
|
</PaneBody>
|
|
44
66
|
</Pane>
|
|
45
67
|
)
|
|
46
68
|
}
|
|
47
69
|
```
|
|
48
70
|
|
|
49
|
-
|
|
71
|
+
---
|
|
72
|
+
|
|
73
|
+
## Installation
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
# pnpm
|
|
77
|
+
pnpm add @hachej/boring-ui-kit
|
|
78
|
+
|
|
79
|
+
# npm
|
|
80
|
+
npm install @hachej/boring-ui-kit
|
|
81
|
+
|
|
82
|
+
# from source
|
|
83
|
+
git clone https://github.com/hachej/boring-ui.git
|
|
84
|
+
cd boring-ui && pnpm install
|
|
85
|
+
pnpm --filter @hachej/boring-ui-kit build
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
---
|
|
89
|
+
|
|
90
|
+
## Architecture
|
|
91
|
+
|
|
92
|
+
`@hachej/boring-ui-kit` is the shared design system at the bottom of every boring-ui package:
|
|
93
|
+
|
|
94
|
+
```
|
|
95
|
+
┌──────────────────────────────────────────┐
|
|
96
|
+
│ @hachej/boring-workspace │
|
|
97
|
+
│ (Dockview chrome, panels, plugins) │
|
|
98
|
+
├──────────────────────────────────────────┤
|
|
99
|
+
│ @hachej/boring-ui-kit ◄── YOU ARE HERE │
|
|
100
|
+
│ │
|
|
101
|
+
│ ┌────────┐ ┌────────┐ ┌────────┐ │
|
|
102
|
+
│ │ Layout │ │ Form │ │Overlay │ │
|
|
103
|
+
│ │Pane, … │ │Input, …│ │Dialog, │ │
|
|
104
|
+
│ └────────┘ └────────┘ └────────┘ │
|
|
105
|
+
│ │
|
|
106
|
+
│ Styled by CSS vars from host: │
|
|
107
|
+
│ – @boring-core/theme.css │
|
|
108
|
+
│ – @boring-workspace/globals.css │
|
|
109
|
+
│ (or your own --boring-* vars) │
|
|
110
|
+
└──────────────────────────────────────────┘
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
The kit imports **no global CSS**. Styles come from CSS custom properties set by the host app. In a full app, you import the workspace globals once:
|
|
50
114
|
|
|
51
115
|
```ts
|
|
52
116
|
// In your app shell (once)
|
|
53
|
-
import "@boring
|
|
117
|
+
import "@hachej/boring-workspace/globals.css"
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
Then every UI kit component picks up those variables automatically.
|
|
121
|
+
|
|
122
|
+
### Styling Contract
|
|
123
|
+
|
|
124
|
+
Override any CSS variable at any scope:
|
|
125
|
+
|
|
126
|
+
```css
|
|
127
|
+
/* Use :root for normal React apps, :host for Shadow DOM */
|
|
128
|
+
:root {
|
|
129
|
+
--boring-border: 1px solid rgba(255, 255, 255, 0.1);
|
|
130
|
+
--boring-radius: 6px;
|
|
131
|
+
--boring-color-bg: #1a1a1a;
|
|
132
|
+
--boring-color-text: #e0e0e0;
|
|
133
|
+
/* ... more vars set by @hachej/boring-workspace/globals.css */
|
|
134
|
+
}
|
|
54
135
|
```
|
|
55
136
|
|
|
137
|
+
### Theming
|
|
138
|
+
|
|
139
|
+
```css
|
|
140
|
+
.my-green-panel {
|
|
141
|
+
--boring-color-accent: #22c55e;
|
|
142
|
+
--boring-color-accent-hover: #16a34a;
|
|
143
|
+
}
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
The kit uses class-variance-authority (CVA) for consistent variant patterns:
|
|
147
|
+
|
|
148
|
+
```tsx
|
|
149
|
+
<Button variant="destructive" size="sm">Delete</Button>
|
|
150
|
+
{/* variants: default | destructive | secondary | ghost */}
|
|
151
|
+
{/* sizes: sm | md | lg */}
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
---
|
|
155
|
+
|
|
156
|
+
## Component Index
|
|
157
|
+
|
|
158
|
+
### Layout & Surfaces
|
|
159
|
+
|
|
160
|
+
| Component | Purpose |
|
|
161
|
+
|-----------|---------|
|
|
162
|
+
| `Pane` | Container for panel surfaces (bordered, rounded, sized for Dockview) |
|
|
163
|
+
| `PaneHeader` | Title bar for panes (title + optional actions) |
|
|
164
|
+
| `PaneBody` | Scrollable content area with proper padding |
|
|
165
|
+
| `PaneToolbar` | Horizontal toolbar for panes (actions, filters, etc.) |
|
|
166
|
+
| `FloatingPanel` | Overlay panel (popovers, contextual menus, inline editors) |
|
|
167
|
+
|
|
168
|
+
### Actions
|
|
169
|
+
|
|
170
|
+
| Component | Purpose |
|
|
171
|
+
|-----------|---------|
|
|
172
|
+
| `Button` | Primary action button with variant + size props |
|
|
173
|
+
| `IconButton` | Icon-only button (tooltips built in) |
|
|
174
|
+
| `ButtonGroup` | Grouped buttons with merged borders |
|
|
175
|
+
| `Toolbar` | Horizontal container for toolbar buttons |
|
|
176
|
+
| `ToolbarButton` | Icon button for toolbar context |
|
|
177
|
+
|
|
178
|
+
### Forms
|
|
179
|
+
|
|
180
|
+
| Component | Purpose |
|
|
181
|
+
|-----------|---------|
|
|
182
|
+
| `Input` | Text input with validation states |
|
|
183
|
+
| `Textarea` | Multi-line text input |
|
|
184
|
+
| `Select` | Dropdown selection (Radix-backed) |
|
|
185
|
+
| `Field` | Form field wrapper (label + input + error) |
|
|
186
|
+
| `FieldLabel` | Accessible form label |
|
|
187
|
+
| `InputGroup` | Input with prepended/appended elements |
|
|
188
|
+
|
|
189
|
+
### Feedback
|
|
190
|
+
|
|
191
|
+
| Component | Purpose |
|
|
192
|
+
|-----------|---------|
|
|
193
|
+
| `Notice` | Banner alerts (info, warning, error, success) |
|
|
194
|
+
| `EmptyState` | Placeholder for empty content areas |
|
|
195
|
+
| `ErrorState` | Error display with retry action |
|
|
196
|
+
| `Spinner` | Loading indicator |
|
|
197
|
+
| `Skeleton` | Loading placeholder shapes |
|
|
198
|
+
| `StatusBadge` | Colored status indicators |
|
|
199
|
+
| `toast` | Programmatic toast notifications |
|
|
200
|
+
|
|
201
|
+
### Display
|
|
202
|
+
|
|
203
|
+
| Component | Purpose |
|
|
204
|
+
|-----------|---------|
|
|
205
|
+
| `Badge` | Small inline labels |
|
|
206
|
+
| `Chip` | Selectable/removable tags |
|
|
207
|
+
| `InlineCode` | Monospaced inline text |
|
|
208
|
+
| `Kbd` | Keyboard shortcut display |
|
|
209
|
+
| `Avatar` | User/profile image with fallback |
|
|
210
|
+
| `List` | Vertical list with row actions |
|
|
211
|
+
| `DetailList` | Key-value display (label + value pairs) |
|
|
212
|
+
|
|
213
|
+
### Overlays
|
|
214
|
+
|
|
215
|
+
| Component | Purpose |
|
|
216
|
+
|-----------|---------|
|
|
217
|
+
| `Dialog` | Modal dialog with title, body, footer |
|
|
218
|
+
| `DropdownMenu` | Context menu (Radix `@radix-ui/react-dropdown-menu`) |
|
|
219
|
+
| `Tooltip` | Hover tooltips (Radix `@radix-ui/react-tooltip`) |
|
|
220
|
+
| `HoverCard` | Hover-reveal cards |
|
|
221
|
+
| `Tabs` | Tabbed navigation (Radix `@radix-ui/react-tabs`) |
|
|
222
|
+
| `Command` | Command palette input (cmdk-based) |
|
|
223
|
+
|
|
224
|
+
### Settings
|
|
225
|
+
|
|
226
|
+
| Component | Purpose |
|
|
227
|
+
|-----------|---------|
|
|
228
|
+
| `SettingsPanel` | Full-page settings layout |
|
|
229
|
+
| `SettingsNav` | Vertical navigation for settings sections |
|
|
230
|
+
| `SettingsActionRow` | Row with label, description, and action control |
|
|
231
|
+
|
|
232
|
+
---
|
|
233
|
+
|
|
234
|
+
## How @hachej/boring-ui-kit Compares
|
|
235
|
+
|
|
236
|
+
| Feature | @hachej/boring-ui-kit | shadcn/ui | Radix UI | @mui/material |
|
|
237
|
+
|---------|------------------------|-----------|----------|---------------|
|
|
238
|
+
| IDE-optimized primitives | ✅ `Pane`, `PaneHeader`, `PaneToolbar` | ❌ None | ❌ None | ❌ None |
|
|
239
|
+
| Zero global CSS | ✅ Host-inherited | ⚠️ Tailwind classes | ✅ Headless | ❌ CSS-in-JS |
|
|
240
|
+
| Ready-made components | ✅ ~40, opinionated | ⚠️ Copy-paste source | ❌ Headless only | ✅ 100+ |
|
|
241
|
+
| Plugin-safe bundle | ✅ Tree-shaked, small | ⚠️ You pick files | ⚠️ Many packages | ❌ Heavy |
|
|
242
|
+
| Settings panels | ✅ `SettingsPanel`, `SettingsNav` | ❌ DIY | ❌ DIY | ❌ DIY |
|
|
243
|
+
| Command palette | ✅ `Command` (cmdk) | ⚠️ Copy-paste | ❌ DIY | ❌ DIY |
|
|
244
|
+
|
|
245
|
+
**When to use @hachej/boring-ui-kit:**
|
|
246
|
+
- Building plugin panels for boring-ui workspace apps
|
|
247
|
+
- You want consistent, IDE-style UI without a heavy material library
|
|
248
|
+
- You need pane-specific primitives (`Pane`, `PaneToolbar`)
|
|
249
|
+
|
|
250
|
+
**When it might not fit:**
|
|
251
|
+
- You need a full design system with charts, maps, and data grids (use MUI)
|
|
252
|
+
- You want complete source-level customization (use shadcn/ui directly)
|
|
253
|
+
- You're building a consumer-facing marketing site (use Tailwind components)
|
|
254
|
+
|
|
255
|
+
---
|
|
256
|
+
|
|
257
|
+
## Troubleshooting
|
|
258
|
+
|
|
259
|
+
| Error | Cause | Fix |
|
|
260
|
+
|-------|-------|-----|
|
|
261
|
+
| Unstyled components | Host CSS variables not set | Import `@hachej/boring-workspace/globals.css` or `@hachej/boring-ui-kit/styles.css` |
|
|
262
|
+
| `Cannot find module` | Package not built | Run `pnpm --filter @hachej/boring-ui-kit build` |
|
|
263
|
+
| Dialog not showing | Portal container missing | Ensure `<div id="overlay-root">` exists in your DOM |
|
|
264
|
+
| Theme looks wrong | CSS vars overridden elsewhere | Check specificity — your vars should be at `:root` or `html` scope |
|
|
265
|
+
|
|
266
|
+
---
|
|
267
|
+
|
|
268
|
+
## Limitations
|
|
269
|
+
|
|
270
|
+
- **Not a standalone design system** — Designed as a shared dependency for boring-ui packages and plugins. Standalone use is supported but you'll need to provide CSS variables.
|
|
271
|
+
- **No data-heavy components** — No charts, data grids, calendar pickers, or Kanban boards. Use `@hachej/boring-workspace/charts` (recharts wrappers) or external libs for those.
|
|
272
|
+
- **No i18n built-in** — All text content (button labels, empty state messages) is plain strings. Wrap externally for localization.
|
|
273
|
+
- **No SSR testing** – Components are client-rendered and rely on browser APIs for portal rendering.
|
|
274
|
+
|
|
275
|
+
---
|
|
276
|
+
|
|
277
|
+
## FAQ
|
|
278
|
+
|
|
279
|
+
**Q: Do I need to import CSS separately in my plugins?**
|
|
280
|
+
A: No. If your app already imports `@hachej/boring-workspace/globals.css`, the UI kit inherits those variables. Only import `@hachej/boring-ui-kit/styles.css` if you're using the kit outside of a boring-ui workspace.
|
|
281
|
+
|
|
282
|
+
**Q: Can I override component styles?**
|
|
283
|
+
A: Yes. Every component accepts `className` and uses `clsx`/`tailwind-merge` so your Tailwind classes compose correctly. For deeper customization, override CSS variables.
|
|
284
|
+
|
|
285
|
+
**Q: Is this just re-exported shadcn?**
|
|
286
|
+
A: No. While the kit uses Radix UI primitives (like shadcn does), it adds IDE-specific components (`Pane`, `PaneToolbar`, `SettingsPanel`) that shadcn doesn't ship. The kit is authored and maintained, not copied.
|
|
287
|
+
|
|
288
|
+
**Q: Can I use this without the rest of boring-ui?**
|
|
289
|
+
A: Yes. The kit is a standalone npm package with no internal boring-ui dependencies. You'll need to provide CSS variables for theming.
|
|
290
|
+
|
|
291
|
+
**Q: What about code editors and rich text?**
|
|
292
|
+
A: Not in this package. The kit focuses on UI chrome. Code editing (CodeMirror) and rich text (TipTap) are handled by `@hachej/boring-workspace` and its plugins.
|
|
293
|
+
|
|
294
|
+
---
|
|
295
|
+
|
|
296
|
+
*About Contributions:* Please don't take this the wrong way, but I do not accept outside contributions for any of my projects. I simply don't have the mental bandwidth to review anything, and it's my name on the thing, so I'm responsible for any problems it causes; thus, the risk-reward is highly asymmetric from my perspective. I'd also have to worry about other "stakeholders," which seems unwise for tools I mostly make for myself for free. Feel free to submit issues, and even PRs if you want to illustrate a proposed fix, but know I won't merge them directly. Instead, I'll have Claude or Codex review submissions via `gh` and independently decide whether and how to address them. Bug reports in particular are welcome. Sorry if this offends, but I want to avoid wasted time and hurt feelings. I understand this isn't in sync with the prevailing open-source ethos that seeks community contributions, but it's the only way I can move at this velocity and keep my sanity.
|
|
297
|
+
|
|
56
298
|
---
|
|
57
299
|
|
|
58
|
-
##
|
|
300
|
+
## License
|
|
59
301
|
|
|
60
|
-
|
|
61
|
-
|---|---|
|
|
62
|
-
| `@boring/core` | DB, auth, app factory |
|
|
63
|
-
| `@boring/workspace` | Plugin system, layouts |
|
|
64
|
-
| `@boring/agent` | Agent runtime + tools |
|
|
65
|
-
| `@boring/ui` | Shared UI primitives |
|
|
302
|
+
MIT
|
package/dist/index.d.ts
CHANGED
|
@@ -356,6 +356,9 @@ declare function Label({ className, ...props }: React.ComponentProps<typeof Labe
|
|
|
356
356
|
|
|
357
357
|
declare function Checkbox({ className, ...props }: React.ComponentProps<typeof CheckboxPrimitive.Root>): react_jsx_runtime.JSX.Element;
|
|
358
358
|
|
|
359
|
+
type RadioProps = Omit<React.ComponentProps<'input'>, 'type'>;
|
|
360
|
+
declare const Radio: React.ForwardRefExoticComponent<Omit<RadioProps, "ref"> & React.RefAttributes<HTMLInputElement>>;
|
|
361
|
+
|
|
359
362
|
declare function AlertDialog({ ...props }: React.ComponentProps<typeof AlertDialogPrimitive.Root>): react_jsx_runtime.JSX.Element;
|
|
360
363
|
declare function AlertDialogTrigger({ ...props }: React.ComponentProps<typeof AlertDialogPrimitive.Trigger>): react_jsx_runtime.JSX.Element;
|
|
361
364
|
declare function AlertDialogPortal({ ...props }: React.ComponentProps<typeof AlertDialogPrimitive.Portal>): react_jsx_runtime.JSX.Element;
|
|
@@ -435,4 +438,11 @@ declare function InputGroupText({ className, ...props }: React.ComponentProps<'s
|
|
|
435
438
|
declare function InputGroupInput({ className, ...props }: React.ComponentProps<'input'>): react_jsx_runtime.JSX.Element;
|
|
436
439
|
declare function InputGroupTextarea({ className, ...props }: React.ComponentProps<'textarea'>): react_jsx_runtime.JSX.Element;
|
|
437
440
|
|
|
438
|
-
|
|
441
|
+
declare function ChoiceGroup({ className, ...props }: React.ComponentProps<'fieldset'>): react_jsx_runtime.JSX.Element;
|
|
442
|
+
declare function ChoiceGroupLegend({ className, ...props }: React.ComponentProps<'legend'>): react_jsx_runtime.JSX.Element;
|
|
443
|
+
declare function ChoiceItem({ className, ...props }: React.ComponentProps<'label'>): react_jsx_runtime.JSX.Element;
|
|
444
|
+
declare function ChoiceItemBody({ className, ...props }: React.ComponentProps<'span'>): react_jsx_runtime.JSX.Element;
|
|
445
|
+
declare function ChoiceItemTitle({ className, ...props }: React.ComponentProps<'span'>): react_jsx_runtime.JSX.Element;
|
|
446
|
+
declare function ChoiceItemDescription({ className, ...props }: React.ComponentProps<'small'>): react_jsx_runtime.JSX.Element;
|
|
447
|
+
|
|
448
|
+
export { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogMedia, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, Avatar, AvatarFallback, type AvatarFallbackProps, type AvatarProps, Badge, type BadgeProps, Button, ButtonGroup, ButtonGroupSeparator, ButtonGroupText, type ButtonProps, Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Checkbox, Chip, ChipButton, type ChipButtonProps, type ChipProps, ChipRemove, type ChipRemoveProps, ChoiceGroup, ChoiceGroupLegend, ChoiceItem, ChoiceItemBody, ChoiceItemDescription, ChoiceItemTitle, Collapsible, CollapsibleContent, CollapsibleTrigger, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, DetailLine, type DetailLineProps, DetailList, type DetailListProps, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, Disclosure, DisclosureChevron, DisclosureContent, DisclosureTrigger, type DisclosureTriggerProps, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EmptyState, type EmptyStateProps, ErrorState, type ErrorStateProps, Field, FieldDescription, FieldError, FieldLabel, FloatingPanel, FloatingPanelBody, type FloatingPanelBodyProps, FloatingPanelHeader, type FloatingPanelHeaderProps, type FloatingPanelProps, HoverCard, HoverCardContent, HoverCardTrigger, IconButton, type IconButtonProps, InitialsAvatar, type InitialsAvatarProps, InlineCode, type InlineCodeProps, Input, InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput, InputGroupText, InputGroupTextarea, type InputProps, Kbd, type KbdProps, Label, List, type ListProps, ListRow, ListRowActions, type ListRowActionsProps, ListRowDescription, type ListRowDescriptionProps, ListRowMain, type ListRowMainProps, ListRowMeta, type ListRowMetaProps, type ListRowProps, ListRowTitle, type ListRowTitleProps, LoadingState, type LoadingStateProps, Notice, type NoticeProps, type NoticeTone, Pane, PaneBody, PaneDescription, PaneFooter, PaneHeader, PaneTitle, PaneToolbar, Popover, PopoverAnchor, PopoverContent, PopoverDescription, PopoverHeader, PopoverTitle, PopoverTrigger, Radio, type RadioProps, ResizeHandle, type ResizeHandleOrientation, type ResizeHandleProps, ScrollArea, ScrollBar, SegmentedControl, SegmentedControlItem, type SegmentedControlItemProps, type SegmentedControlProps, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, type SeparatorProps, SettingsActionRow, type SettingsActionRowProps, SettingsNav, type SettingsNavItem, type SettingsNavProps, SettingsPageHeader, type SettingsPageHeaderProps, SettingsPanel, type SettingsPanelProps, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, SheetTrigger, Skeleton, type SkeletonProps, Spinner, type SpinnerProps, StatusBadge, type StatusBadgeProps, type StatusBadgeTone, Tabs, TabsContent, TabsList, TabsTrigger, Textarea, type TextareaProps, type ToastApi$1 as ToastApi, type ToastApi as ToastEventApi, type ToastInput as ToastEventInput, type ToastVariant as ToastEventVariant, type ToastInput$1 as ToastInput, type ToastRecord, type ToastVariant$1 as ToastVariant, Toaster, type ToasterProps, Toolbar, ToolbarButton, type ToolbarButtonProps, ToolbarGroup, type ToolbarGroupProps, type ToolbarProps, ToolbarSeparator, type ToolbarSeparatorProps, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, badgeVariants, buttonGroupVariants, buttonVariants, clearToasts, cn, dismissToast, getActiveToasts, subscribeToasts, tabsListVariants, toast, useToast };
|