@burtson-labs/ui 0.14.0 → 0.15.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/LICENSES/DEPENDENCIES.txt +1 -1
- package/README.md +15 -11
- package/dist/components/accordion.d.ts +3 -3
- package/dist/components/accordion.js +13 -10
- package/dist/components/accordion.js.map +1 -1
- package/dist/components/agent-run.d.ts +22 -0
- package/dist/components/agent-run.js +131 -0
- package/dist/components/agent-run.js.map +1 -0
- package/dist/components/alert-dialog.d.ts +12 -10
- package/dist/components/alert-dialog.js +29 -20
- package/dist/components/alert-dialog.js.map +1 -1
- package/dist/components/alert.d.ts +5 -3
- package/dist/components/alert.js +11 -7
- package/dist/components/alert.js.map +1 -1
- package/dist/components/app-shell.d.ts +7 -6
- package/dist/components/app-shell.js +21 -14
- package/dist/components/app-shell.js.map +1 -1
- package/dist/components/attachment.d.ts +3 -3
- package/dist/components/attachment.js +10 -7
- package/dist/components/attachment.js.map +1 -1
- package/dist/components/audio-player.d.ts +2 -2
- package/dist/components/audio-player.js +8 -6
- package/dist/components/audio-player.js.map +1 -1
- package/dist/components/avatar-upload.d.ts +19 -0
- package/dist/components/avatar-upload.js +359 -0
- package/dist/components/avatar-upload.js.map +1 -0
- package/dist/components/avatar.d.ts +3 -3
- package/dist/components/avatar.js +10 -7
- package/dist/components/avatar.js.map +1 -1
- package/dist/components/badge.d.ts +1 -1
- package/dist/components/badge.js +12 -10
- package/dist/components/badge.js.map +1 -1
- package/dist/components/breadcrumb.d.ts +8 -8
- package/dist/components/breadcrumb.js +24 -17
- package/dist/components/breadcrumb.js.map +1 -1
- package/dist/components/button.d.ts +8 -1
- package/dist/components/button.js +12 -3
- package/dist/components/button.js.map +1 -1
- package/dist/components/card.d.ts +8 -8
- package/dist/components/card.js +32 -23
- package/dist/components/card.js.map +1 -1
- package/dist/components/chat-history.d.ts +1 -1
- package/dist/components/chat-history.js +10 -9
- package/dist/components/chat-history.js.map +1 -1
- package/dist/components/chat-layout.d.ts +1 -1
- package/dist/components/chat-layout.js +7 -3
- package/dist/components/chat-layout.js.map +1 -1
- package/dist/components/checkbox-card.d.ts +2 -2
- package/dist/components/checkbox-card.js +9 -7
- package/dist/components/checkbox-card.js.map +1 -1
- package/dist/components/checkbox.d.ts +23 -2
- package/dist/components/checkbox.js +48 -6
- package/dist/components/checkbox.js.map +1 -1
- package/dist/components/collapsible.d.ts +2 -2
- package/dist/components/collapsible.js +7 -5
- package/dist/components/collapsible.js.map +1 -1
- package/dist/components/combobox.d.ts +14 -4
- package/dist/components/combobox.js +18 -8
- package/dist/components/combobox.js.map +1 -1
- package/dist/components/command.d.ts +68 -12
- package/dist/components/command.js +38 -25
- package/dist/components/command.js.map +1 -1
- package/dist/components/composer.d.ts +2 -2
- package/dist/components/composer.js +9 -7
- package/dist/components/composer.js.map +1 -1
- package/dist/components/connection-status.d.ts +3 -3
- package/dist/components/connection-status.js +18 -14
- package/dist/components/connection-status.js.map +1 -1
- package/dist/components/context-menu.d.ts +14 -13
- package/dist/components/context-menu.js +33 -23
- package/dist/components/context-menu.js.map +1 -1
- package/dist/components/conversation.d.ts +1 -1
- package/dist/components/conversation.js +6 -5
- package/dist/components/conversation.js.map +1 -1
- package/dist/components/copy-button.d.ts +1 -1
- package/dist/components/copy-button.js +3 -2
- package/dist/components/copy-button.js.map +1 -1
- package/dist/components/data-table.d.ts +7 -2
- package/dist/components/data-table.js +16 -42
- package/dist/components/data-table.js.map +1 -1
- package/dist/components/dialog.d.ts +18 -9
- package/dist/components/dialog.js +38 -22
- package/dist/components/dialog.js.map +1 -1
- package/dist/components/dropdown-menu.d.ts +14 -13
- package/dist/components/dropdown-menu.js +33 -23
- package/dist/components/dropdown-menu.js.map +1 -1
- package/dist/components/editor-tabs.d.ts +1 -1
- package/dist/components/editor-tabs.js +6 -5
- package/dist/components/editor-tabs.js.map +1 -1
- package/dist/components/empty-state.d.ts +5 -5
- package/dist/components/empty-state.js +16 -11
- package/dist/components/empty-state.js.map +1 -1
- package/dist/components/error-summary.d.ts +21 -0
- package/dist/components/error-summary.js +62 -0
- package/dist/components/error-summary.js.map +1 -0
- package/dist/components/field.d.ts +66 -7
- package/dist/components/field.js +151 -20
- package/dist/components/field.js.map +1 -1
- package/dist/components/form-actions.d.ts +18 -0
- package/dist/components/form-actions.js +30 -0
- package/dist/components/form-actions.js.map +1 -0
- package/dist/components/icon-button.d.ts +3 -1
- package/dist/components/icon-button.js +5 -3
- package/dist/components/icon-button.js.map +1 -1
- package/dist/components/input.d.ts +42 -7
- package/dist/components/input.js +53 -10
- package/dist/components/input.js.map +1 -1
- package/dist/components/kbd.d.ts +2 -2
- package/dist/components/kbd.js +7 -5
- package/dist/components/kbd.js.map +1 -1
- package/dist/components/label.d.ts +6 -1
- package/dist/components/label.js +10 -4
- package/dist/components/label.js.map +1 -1
- package/dist/components/markdown.d.ts +4 -3
- package/dist/components/markdown.js +7 -6
- package/dist/components/markdown.js.map +1 -1
- package/dist/components/menubar.d.ts +16 -14
- package/dist/components/menubar.js +39 -27
- package/dist/components/menubar.js.map +1 -1
- package/dist/components/message-actions.d.ts +3 -3
- package/dist/components/message-actions.js +15 -12
- package/dist/components/message-actions.js.map +1 -1
- package/dist/components/message.d.ts +1 -1
- package/dist/components/message.js +5 -3
- package/dist/components/message.js.map +1 -1
- package/dist/components/mobile-nav.d.ts +1 -1
- package/dist/components/mobile-nav.js +6 -5
- package/dist/components/mobile-nav.js.map +1 -1
- package/dist/components/native-select.d.ts +16 -0
- package/dist/components/native-select.js +33 -0
- package/dist/components/native-select.js.map +1 -0
- package/dist/components/navigation-menu.d.ts +12 -11
- package/dist/components/navigation-menu.js +32 -23
- package/dist/components/navigation-menu.js.map +1 -1
- package/dist/components/number-input.d.ts +23 -0
- package/dist/components/number-input.js +45 -0
- package/dist/components/number-input.js.map +1 -0
- package/dist/components/onboarding-checklist.d.ts +1 -1
- package/dist/components/onboarding-checklist.js +4 -3
- package/dist/components/onboarding-checklist.js.map +1 -1
- package/dist/components/page-header.d.ts +7 -6
- package/dist/components/page-header.js +22 -15
- package/dist/components/page-header.js.map +1 -1
- package/dist/components/pagination.d.ts +1 -1
- package/dist/components/pagination.js +3 -2
- package/dist/components/pagination.js.map +1 -1
- package/dist/components/popover.d.ts +13 -10
- package/dist/components/popover.js +23 -17
- package/dist/components/popover.js.map +1 -1
- package/dist/components/progress.d.ts +1 -1
- package/dist/components/progress.js +6 -5
- package/dist/components/progress.js.map +1 -1
- package/dist/components/radio-group.d.ts +22 -3
- package/dist/components/radio-group.js +51 -10
- package/dist/components/radio-group.js.map +1 -1
- package/dist/components/reasoning.d.ts +3 -3
- package/dist/components/reasoning.js +9 -7
- package/dist/components/reasoning.js.map +1 -1
- package/dist/components/scroll-area.d.ts +3 -2
- package/dist/components/scroll-area.js +10 -7
- package/dist/components/scroll-area.js.map +1 -1
- package/dist/components/secret-input.d.ts +3 -2
- package/dist/components/secret-input.js +6 -4
- package/dist/components/secret-input.js.map +1 -1
- package/dist/components/select.d.ts +11 -6
- package/dist/components/select.js +24 -18
- package/dist/components/select.js.map +1 -1
- package/dist/components/separator.d.ts +1 -1
- package/dist/components/separator.js +4 -3
- package/dist/components/separator.js.map +1 -1
- package/dist/components/sheet.d.ts +10 -8
- package/dist/components/sheet.js +31 -20
- package/dist/components/sheet.js.map +1 -1
- package/dist/components/skeleton.d.ts +2 -1
- package/dist/components/skeleton.js +6 -4
- package/dist/components/skeleton.js.map +1 -1
- package/dist/components/slider.d.ts +10 -6
- package/dist/components/slider.js +15 -7
- package/dist/components/slider.js.map +1 -1
- package/dist/components/source.d.ts +2 -2
- package/dist/components/source.js +9 -7
- package/dist/components/source.js.map +1 -1
- package/dist/components/spinner.d.ts +4 -2
- package/dist/components/spinner.js +4 -3
- package/dist/components/spinner.js.map +1 -1
- package/dist/components/stat-card.d.ts +27 -2
- package/dist/components/stat-card.js +69 -9
- package/dist/components/stat-card.js.map +1 -1
- package/dist/components/status.d.ts +7 -6
- package/dist/components/status.js +11 -5
- package/dist/components/status.js.map +1 -1
- package/dist/components/steps.d.ts +1 -1
- package/dist/components/steps.js +4 -3
- package/dist/components/steps.js.map +1 -1
- package/dist/components/switch.d.ts +46 -2
- package/dist/components/switch.js +85 -8
- package/dist/components/switch.js.map +1 -1
- package/dist/components/table.d.ts +29 -12
- package/dist/components/table.js +79 -34
- package/dist/components/table.js.map +1 -1
- package/dist/components/tabs.d.ts +9 -4
- package/dist/components/tabs.js +22 -13
- package/dist/components/tabs.js.map +1 -1
- package/dist/components/textarea.d.ts +6 -1
- package/dist/components/textarea.js +3 -3
- package/dist/components/textarea.js.map +1 -1
- package/dist/components/toast.d.ts +10 -6
- package/dist/components/toast.js +27 -18
- package/dist/components/toast.js.map +1 -1
- package/dist/components/toaster.d.ts +4 -2
- package/dist/components/toaster.js +6 -2
- package/dist/components/toaster.js.map +1 -1
- package/dist/components/tool-call.d.ts +3 -3
- package/dist/components/tool-call.js +16 -12
- package/dist/components/tool-call.js.map +1 -1
- package/dist/components/toolbar.d.ts +9 -4
- package/dist/components/toolbar.js +14 -9
- package/dist/components/toolbar.js.map +1 -1
- package/dist/components/tooltip.d.ts +3 -2
- package/dist/components/tooltip.js +7 -4
- package/dist/components/tooltip.js.map +1 -1
- package/dist/components/tour.js +2 -2
- package/dist/components/tour.js.map +1 -1
- package/dist/components/tree-view.d.ts +1 -1
- package/dist/components/tree-view.js +9 -5
- package/dist/components/tree-view.js.map +1 -1
- package/dist/components/voice-recorder.d.ts +1 -1
- package/dist/components/voice-recorder.js +4 -2
- package/dist/components/voice-recorder.js.map +1 -1
- package/dist/index.d.ts +8 -1
- package/dist/index.js +19 -12
- package/dist/lib/media.d.ts +18 -0
- package/dist/lib/media.js +34 -0
- package/dist/lib/media.js.map +1 -0
- package/dist/lib/utils.d.ts +32 -0
- package/dist/lib/utils.js +33 -1
- package/dist/lib/utils.js.map +1 -1
- package/dist/mui/index.js +20 -8
- package/dist/mui/index.js.map +1 -1
- package/dist/styles.css +1 -1
- package/dist/theme.css +36 -17
- package/dist/tokens.d.ts +78 -36
- package/dist/tokens.js +63 -32
- package/dist/tokens.js.map +1 -1
- package/package.json +5 -3
package/README.md
CHANGED
|
@@ -58,9 +58,11 @@ npx shadcn@latest add https://ui.burtson.ai/r/button.json
|
|
|
58
58
|
|
|
59
59
|
## <picture><source media="(prefers-color-scheme: dark)" srcset="https://icons.burtson.ai/svg-white/panel-grid.svg"/><img src="https://icons.burtson.ai/svg-black/panel-grid.svg" align="center" alt=""/></picture> Components
|
|
60
60
|
|
|
61
|
-
Accordion · Alert · Alert Dialog · App Shell · Attachment · Audio Player · Avatar · Badge · Breadcrumb · Button · Card · Chat History · Chat Layout · Checkbox · Checkbox Card · Collapsible · Combobox · Command · Composer · Connection Status · Context Menu · Conversation · Copy Button · Data Table · Dialog · Dropdown Menu · Editor Tabs · Empty State · Field · Icon Button · Input · Kbd · Label · Markdown · Menubar · Message · Message Actions · Mobile Nav · Navigation Menu · Onboarding Checklist · Page Header · Pagination · Popover · Progress · Radio Group · Reasoning · Resizable · Scroll Area · Secret Input · Select · Separator · Sheet · Skeleton · Slider · Source · Spinner · Stat Card · Status · Steps · Switch · Table · Tabs · Textarea · Toast · Toaster · Tool Call · Toolbar · Tooltip · Tour · Tree View · Voice Recorder
|
|
61
|
+
Accordion · Agent Run · Alert · Alert Dialog · App Shell · Attachment · Audio Player · Avatar · Avatar Upload · Badge · Breadcrumb · Button · Card · Chat History · Chat Layout · Checkbox · Checkbox Card · Collapsible · Combobox · Command · Composer · Connection Status · Context Menu · Conversation · Copy Button · Data Table · Dialog · Dropdown Menu · Editor Tabs · Empty State · Error Summary · Field · Form Actions · Icon Button · Input · Kbd · Label · Markdown · Menubar · Message · Message Actions · Mobile Nav · Native Select · Navigation Menu · Number Input · Onboarding Checklist · Page Header · Pagination · Popover · Progress · Radio Group · Reasoning · Resizable · Scroll Area · Secret Input · Select · Separator · Sheet · Skeleton · Slider · Source · Spinner · Stat Card · Status · Steps · Switch · Table · Tabs · Textarea · Toast · Toaster · Tool Call · Toolbar · Tooltip · Tour · Tree View · Voice Recorder
|
|
62
62
|
|
|
63
|
-
Live previews and code for each one are at [ui.burtson.ai](https://ui.burtson.ai/docs/components/button). Building a chat app? The [chat recipe](https://ui.burtson.ai/docs/recipes/chat) puts history, attachments, streaming, voice notes and full screen together, with the complete source.
|
|
63
|
+
Live previews, when-to-use notes, accessibility notes and code for each one are at [ui.burtson.ai](https://ui.burtson.ai/docs/components/button). Building a chat app? The [chat recipe](https://ui.burtson.ai/docs/recipes/chat) puts history, attachments, streaming, voice notes and full screen together, with the complete source. Building a form? `Field` wires label, help and error onto any control, `FieldGrid` lines fields up and `FormActions` places the buttons, on phones too.
|
|
64
|
+
|
|
65
|
+
Every control is at least 44px on touch screens, shows one focus style per kind of control (`focusRingClasses`, `fieldFocusClasses`) and meets 4.5:1 for text and 3:1 for boundaries in both palettes and any accent; a Playwright smoke in CI measures it.
|
|
64
66
|
|
|
65
67
|
## <picture><source media="(prefers-color-scheme: dark)" srcset="https://icons.burtson.ai/svg-white/palette.svg"/><img src="https://icons.burtson.ai/svg-black/palette.svg" align="center" alt=""/></picture> Theming
|
|
66
68
|
|
|
@@ -80,7 +82,7 @@ import { createBurtsonTheme } from '@burtson-labs/ui/mui';
|
|
|
80
82
|
createBurtsonTheme({ mode: 'dark', accent: '#2563eb', density: 'compact' });
|
|
81
83
|
```
|
|
82
84
|
|
|
83
|
-
`@burtson-labs/ui/tokens` also exports `accentTokens(accent, mode)` for the CSS side,
|
|
85
|
+
`@burtson-labs/ui/tokens` also exports `accentTokens(accent, mode)` for the CSS side, the motion timing (`duration`, `easing`) that `theme.css` exposes as `--duration-*` and `--ease-*` and every `transition-*` utility runs on, the `elevation` levels (`shadow.lg` for floating surfaces, `shadow.xl` for modal ones) and the `layer` z-index scale (raised 10, chrome 40, overlay 50, toast 100).
|
|
84
86
|
|
|
85
87
|
## <picture><source media="(prefers-color-scheme: dark)" srcset="https://icons.burtson.ai/svg-white/terminal.svg"/><img src="https://icons.burtson.ai/svg-black/terminal.svg" align="center" alt=""/></picture> Develop
|
|
86
88
|
|
|
@@ -88,17 +90,19 @@ createBurtsonTheme({ mode: 'dark', accent: '#2563eb', density: 'compact' });
|
|
|
88
90
|
npm install
|
|
89
91
|
npm run dev # docs site with live components, http://localhost:5173
|
|
90
92
|
npm run check # typecheck, lint, format, tests, package build, site build
|
|
93
|
+
npm run smoke # Playwright: touch targets, focus, overflow, keyboard (needs npm run site)
|
|
91
94
|
```
|
|
92
95
|
|
|
93
|
-
| Path | What
|
|
94
|
-
| ----------------- |
|
|
95
|
-
| `src/components/` | One file per component; also the registry source
|
|
96
|
-
| `src/tokens.ts` | Design tokens (edit here, then `npm run theme`)
|
|
97
|
-
| `src/mui/` | MUI theme adapter
|
|
98
|
-
| `site/` | Docs site for [ui.burtson.ai](https://ui.burtson.ai); demos in `site/src/demos
|
|
99
|
-
| `
|
|
96
|
+
| Path | What |
|
|
97
|
+
| ----------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
98
|
+
| `src/components/` | One file per component; also the registry source |
|
|
99
|
+
| `src/tokens.ts` | Design tokens (edit here, then `npm run theme`) |
|
|
100
|
+
| `src/mui/` | MUI theme adapter |
|
|
101
|
+
| `site/` | Docs site for [ui.burtson.ai](https://ui.burtson.ai); demos in `site/src/demos/`, notes in `site/src/usage.ts`; `/matrix` renders every component in every state |
|
|
102
|
+
| `e2e/` | Browser smoke (Playwright, Chromium at 1440 and 390 touch) |
|
|
103
|
+
| `scripts/` | Package build, theme and registry generators, link-preview card |
|
|
100
104
|
|
|
101
|
-
Adding a component: write `src/components/<name>.tsx
|
|
105
|
+
Adding a component: write `src/components/<name>.tsx` (forwardRef, `data-slot` on every part, `focusRingClasses` or `fieldFocusClasses` for focus, 44px on touch), export it from `src/index.ts`, add a demo in `site/src/demos/<name>.tsx`, an entry in `site/src/docs.ts`, its notes in `site/src/usage.ts` and a cell in `site/src/matrix.tsx`. The registry picks it up on the next build.
|
|
102
106
|
|
|
103
107
|
Linting and formatting follow [Burtson Labs frontend standards](https://github.com/Burtson-Labs/frontend-standards). Every push is audited by [Sentinel](https://github.com/Burtson-Labs/sentinel-audit).
|
|
104
108
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import * as AccordionPrimitive from '../primitives/vendor/radix/react-accordion';
|
|
3
3
|
declare function Accordion(props: React.ComponentProps<typeof AccordionPrimitive.Root>): React.JSX.Element;
|
|
4
|
-
declare
|
|
5
|
-
declare
|
|
6
|
-
declare
|
|
4
|
+
declare const AccordionItem: React.ForwardRefExoticComponent<Omit<AccordionPrimitive.AccordionItemProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
5
|
+
declare const AccordionTrigger: React.ForwardRefExoticComponent<Omit<AccordionPrimitive.AccordionTriggerProps & React.RefAttributes<HTMLButtonElement>, "ref"> & React.RefAttributes<HTMLButtonElement>>;
|
|
6
|
+
declare const AccordionContent: React.ForwardRefExoticComponent<Omit<AccordionPrimitive.AccordionContentProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
7
7
|
export { Accordion, AccordionContent, AccordionItem, AccordionTrigger };
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { cn } from "../lib/utils.js";
|
|
2
|
+
import { cn, focusRingClasses } from "../lib/utils.js";
|
|
3
3
|
import { Content, Header, Item, Root, Trigger } from "../primitives/vendor/radix/react-accordion/accordion.js";
|
|
4
|
+
import * as React from "react";
|
|
4
5
|
import ChevronDown from "@burtson-labs/icons/react/chevron-down";
|
|
5
|
-
import "react";
|
|
6
6
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
7
7
|
//#region src/components/accordion.tsx
|
|
8
8
|
function Accordion(props) {
|
|
@@ -11,29 +11,32 @@ function Accordion(props) {
|
|
|
11
11
|
...props
|
|
12
12
|
});
|
|
13
13
|
}
|
|
14
|
-
function AccordionItem({ className, ...props }) {
|
|
14
|
+
var AccordionItem = React.forwardRef(function AccordionItem({ className, ...props }, ref) {
|
|
15
15
|
return /* @__PURE__ */ jsx(Item, {
|
|
16
|
+
ref,
|
|
16
17
|
"data-slot": "accordion-item",
|
|
17
18
|
className: cn("border-b last:border-b-0", className),
|
|
18
19
|
...props
|
|
19
20
|
});
|
|
20
|
-
}
|
|
21
|
-
function AccordionTrigger({ className, children, ...props }) {
|
|
21
|
+
});
|
|
22
|
+
var AccordionTrigger = React.forwardRef(function AccordionTrigger({ className, children, ...props }, ref) {
|
|
22
23
|
return /* @__PURE__ */ jsx(Header, {
|
|
23
24
|
className: "flex",
|
|
24
25
|
children: /* @__PURE__ */ jsxs(Trigger, {
|
|
26
|
+
ref,
|
|
25
27
|
"data-slot": "accordion-trigger",
|
|
26
|
-
className: cn("flex flex-1 items-start justify-between gap-4 rounded-md py-4 text-left text-sm font-semibold transition-
|
|
28
|
+
className: cn("flex flex-1 items-start justify-between gap-4 rounded-md py-4 text-left text-sm font-semibold transition-colors hover:text-brand disabled:pointer-events-none disabled:opacity-50 [&[data-state=open]>svg]:rotate-180", focusRingClasses, "focus-visible:outline-offset-[-2px]", className),
|
|
27
29
|
...props,
|
|
28
30
|
children: [children, /* @__PURE__ */ jsx(ChevronDown, {
|
|
29
|
-
className: "pointer-events-none size-4 shrink-0 translate-y-0.5 text-muted-foreground transition-transform duration-
|
|
31
|
+
className: "pointer-events-none size-4 shrink-0 translate-y-0.5 text-muted-foreground transition-transform duration-(--duration-standard)",
|
|
30
32
|
"aria-hidden": true
|
|
31
33
|
})]
|
|
32
34
|
})
|
|
33
35
|
});
|
|
34
|
-
}
|
|
35
|
-
function AccordionContent({ className, children, ...props }) {
|
|
36
|
+
});
|
|
37
|
+
var AccordionContent = React.forwardRef(function AccordionContent({ className, children, ...props }, ref) {
|
|
36
38
|
return /* @__PURE__ */ jsx(Content, {
|
|
39
|
+
ref,
|
|
37
40
|
"data-slot": "accordion-content",
|
|
38
41
|
className: "overflow-hidden text-sm data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down",
|
|
39
42
|
...props,
|
|
@@ -42,7 +45,7 @@ function AccordionContent({ className, children, ...props }) {
|
|
|
42
45
|
children
|
|
43
46
|
})
|
|
44
47
|
});
|
|
45
|
-
}
|
|
48
|
+
});
|
|
46
49
|
//#endregion
|
|
47
50
|
export { Accordion, AccordionContent, AccordionItem, AccordionTrigger };
|
|
48
51
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accordion.js","names":["AccordionPrimitive.Root","AccordionPrimitive.Item","AccordionPrimitive.Header","AccordionPrimitive.Trigger","AccordionPrimitive.Content"],"sources":["../../src/components/accordion.tsx"],"sourcesContent":["import ChevronDown from '@burtson-labs/icons/react/chevron-down';\nimport * as React from 'react';\n\nimport { cn } from '../lib/utils';\nimport * as AccordionPrimitive from '../primitives/vendor/radix/react-accordion';\n\nfunction Accordion(props: React.ComponentProps<typeof AccordionPrimitive.Root>) {\n return <AccordionPrimitive.Root data-slot=\"accordion\" {...props} />;\n}\n\
|
|
1
|
+
{"version":3,"file":"accordion.js","names":["AccordionPrimitive.Root","AccordionPrimitive.Item","AccordionPrimitive.Header","AccordionPrimitive.Trigger","AccordionPrimitive.Content"],"sources":["../../src/components/accordion.tsx"],"sourcesContent":["import ChevronDown from '@burtson-labs/icons/react/chevron-down';\nimport * as React from 'react';\n\nimport { cn, focusRingClasses } from '../lib/utils';\nimport * as AccordionPrimitive from '../primitives/vendor/radix/react-accordion';\n\nfunction Accordion(props: React.ComponentProps<typeof AccordionPrimitive.Root>) {\n return <AccordionPrimitive.Root data-slot=\"accordion\" {...props} />;\n}\n\nconst AccordionItem = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<typeof AccordionPrimitive.Item>\n>(function AccordionItem({ className, ...props }, ref) {\n return (\n <AccordionPrimitive.Item\n ref={ref}\n data-slot=\"accordion-item\"\n className={cn('border-b last:border-b-0', className)}\n {...props}\n />\n );\n});\n\nconst AccordionTrigger = React.forwardRef<\n HTMLButtonElement,\n React.ComponentProps<typeof AccordionPrimitive.Trigger>\n>(function AccordionTrigger({ className, children, ...props }, ref) {\n return (\n <AccordionPrimitive.Header className=\"flex\">\n <AccordionPrimitive.Trigger\n ref={ref}\n data-slot=\"accordion-trigger\"\n className={cn(\n 'flex flex-1 items-start justify-between gap-4 rounded-md py-4 text-left text-sm font-semibold transition-colors hover:text-brand disabled:pointer-events-none disabled:opacity-50 [&[data-state=open]>svg]:rotate-180',\n focusRingClasses,\n 'focus-visible:outline-offset-[-2px]',\n className,\n )}\n {...props}\n >\n {children}\n <ChevronDown\n className=\"pointer-events-none size-4 shrink-0 translate-y-0.5 text-muted-foreground transition-transform duration-(--duration-standard)\"\n aria-hidden\n />\n </AccordionPrimitive.Trigger>\n </AccordionPrimitive.Header>\n );\n});\n\nconst AccordionContent = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<typeof AccordionPrimitive.Content>\n>(function AccordionContent({ className, children, ...props }, ref) {\n return (\n <AccordionPrimitive.Content\n ref={ref}\n data-slot=\"accordion-content\"\n className=\"overflow-hidden text-sm data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down\"\n {...props}\n >\n <div className={cn('pt-0 pb-4', className)}>{children}</div>\n </AccordionPrimitive.Content>\n );\n});\n\nexport { Accordion, AccordionContent, AccordionItem, AccordionTrigger };\n"],"mappings":";;;;;;;AAMA,SAAS,UAAU,OAA6D;CAC9E,OAAO,oBAACA,MAAD;EAAyB,aAAU;EAAY,GAAI;CAAQ,CAAA;AACpE;AAEA,IAAM,gBAAgB,MAAM,WAG1B,SAAS,cAAc,EAAE,WAAW,GAAG,SAAS,KAAK;CACrD,OACE,oBAACC,MAAD;EACO;EACL,aAAU;EACV,WAAW,GAAG,4BAA4B,SAAS;EACnD,GAAI;CACL,CAAA;AAEL,CAAC;AAED,IAAM,mBAAmB,MAAM,WAG7B,SAAS,iBAAiB,EAAE,WAAW,UAAU,GAAG,SAAS,KAAK;CAClE,OACE,oBAACC,QAAD;EAA2B,WAAU;EACnC,UAAA,qBAACC,SAAD;GACO;GACL,aAAU;GACV,WAAW,GACT,yNACA,kBACA,uCACA,SACF;GACA,GAAI;GATN,UAAA,CAWG,UACD,oBAAC,aAAD;IACE,WAAU;IACV,eAAA;GACD,CAAA,CACyB;;CACH,CAAA;AAE/B,CAAC;AAED,IAAM,mBAAmB,MAAM,WAG7B,SAAS,iBAAiB,EAAE,WAAW,UAAU,GAAG,SAAS,KAAK;CAClE,OACE,oBAACC,SAAD;EACO;EACL,aAAU;EACV,WAAU;EACV,GAAI;EAEJ,UAAA,oBAAC,OAAD;GAAK,WAAW,GAAG,aAAa,SAAS;GAAI;EAAc,CAAA;CACjC,CAAA;AAEhC,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
export type AgentRunState = 'queued' | 'running' | 'waiting' | 'paused' | 'completed' | 'failed' | 'canceled';
|
|
3
|
+
export interface AgentRunStep {
|
|
4
|
+
id: string;
|
|
5
|
+
label: string;
|
|
6
|
+
state: AgentRunState;
|
|
7
|
+
detail?: React.ReactNode;
|
|
8
|
+
}
|
|
9
|
+
export interface AgentRunProps extends Omit<React.ComponentProps<'section'>, 'title'> {
|
|
10
|
+
title: string;
|
|
11
|
+
state: AgentRunState;
|
|
12
|
+
steps: AgentRunStep[];
|
|
13
|
+
/** Explain the current state, especially what a person needs to do next. */
|
|
14
|
+
summary?: React.ReactNode;
|
|
15
|
+
busy?: boolean;
|
|
16
|
+
onPause?: () => void;
|
|
17
|
+
onResume?: () => void;
|
|
18
|
+
onCancel?: () => void;
|
|
19
|
+
onRetry?: () => void;
|
|
20
|
+
}
|
|
21
|
+
/** A controlled run timeline. The application owns execution, cancellation and retry. */
|
|
22
|
+
export declare function AgentRun({ title, state, steps, summary, busy, onPause, onResume, onCancel, onRetry, children, className, ...props }: AgentRunProps): React.JSX.Element;
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { cn } from "../lib/utils.js";
|
|
3
|
+
import { Button } from "./button.js";
|
|
4
|
+
import { Spinner } from "./spinner.js";
|
|
5
|
+
import * as React from "react";
|
|
6
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
7
|
+
import AlertCircle from "@burtson-labs/icons/react/alert-circle";
|
|
8
|
+
import Pause from "@burtson-labs/icons/react/pause";
|
|
9
|
+
import Check from "@burtson-labs/icons/react/check";
|
|
10
|
+
import Circle from "@burtson-labs/icons/react/circle";
|
|
11
|
+
//#region src/components/agent-run.tsx
|
|
12
|
+
var labels = {
|
|
13
|
+
queued: "Queued",
|
|
14
|
+
running: "Running",
|
|
15
|
+
waiting: "Needs your input",
|
|
16
|
+
paused: "Paused",
|
|
17
|
+
completed: "Completed",
|
|
18
|
+
failed: "Failed",
|
|
19
|
+
canceled: "Canceled"
|
|
20
|
+
};
|
|
21
|
+
function RunIcon({ state }) {
|
|
22
|
+
if (state === "running") return /* @__PURE__ */ jsx(Spinner, {
|
|
23
|
+
className: "size-4",
|
|
24
|
+
label: "Running"
|
|
25
|
+
});
|
|
26
|
+
return /* @__PURE__ */ jsx(state === "completed" ? Check : state === "failed" || state === "waiting" ? AlertCircle : state === "paused" ? Pause : Circle, {
|
|
27
|
+
"aria-hidden": true,
|
|
28
|
+
className: cn("size-4", state === "completed" && "text-success", state === "failed" && "text-destructive", state === "waiting" && "text-warning")
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
/** A controlled run timeline. The application owns execution, cancellation and retry. */
|
|
32
|
+
function AgentRun({ title, state, steps, summary, busy = false, onPause, onResume, onCancel, onRetry, children, className, ...props }) {
|
|
33
|
+
const id = React.useId();
|
|
34
|
+
const active = [
|
|
35
|
+
"queued",
|
|
36
|
+
"running",
|
|
37
|
+
"waiting",
|
|
38
|
+
"paused"
|
|
39
|
+
].includes(state);
|
|
40
|
+
return /* @__PURE__ */ jsxs("section", {
|
|
41
|
+
"data-slot": "agent-run",
|
|
42
|
+
"data-state": state,
|
|
43
|
+
"aria-labelledby": id,
|
|
44
|
+
className: cn("min-w-0 overflow-hidden rounded-lg border border-border bg-surface", className),
|
|
45
|
+
...props,
|
|
46
|
+
children: [
|
|
47
|
+
/* @__PURE__ */ jsxs("header", {
|
|
48
|
+
className: "grid gap-2 border-b border-border p-4",
|
|
49
|
+
children: [/* @__PURE__ */ jsxs("div", {
|
|
50
|
+
className: "flex flex-wrap items-center justify-between gap-2",
|
|
51
|
+
children: [/* @__PURE__ */ jsx("h3", {
|
|
52
|
+
id,
|
|
53
|
+
className: "min-w-0 text-sm font-semibold break-words",
|
|
54
|
+
children: title
|
|
55
|
+
}), /* @__PURE__ */ jsxs("span", {
|
|
56
|
+
role: "status",
|
|
57
|
+
className: "inline-flex items-center gap-1.5 text-xs text-muted-foreground",
|
|
58
|
+
children: [/* @__PURE__ */ jsx(RunIcon, { state }), labels[state]]
|
|
59
|
+
})]
|
|
60
|
+
}), summary && /* @__PURE__ */ jsx("p", {
|
|
61
|
+
className: "text-sm leading-relaxed text-muted-foreground",
|
|
62
|
+
children: summary
|
|
63
|
+
})]
|
|
64
|
+
}),
|
|
65
|
+
/* @__PURE__ */ jsx("ol", {
|
|
66
|
+
className: "grid gap-4 p-4",
|
|
67
|
+
"aria-label": "Run steps",
|
|
68
|
+
children: steps.map((step) => /* @__PURE__ */ jsxs("li", {
|
|
69
|
+
className: "flex min-w-0 gap-3",
|
|
70
|
+
"aria-current": step.state === "running" || step.state === "waiting" ? "step" : void 0,
|
|
71
|
+
children: [/* @__PURE__ */ jsx("span", {
|
|
72
|
+
className: "mt-0.5 shrink-0",
|
|
73
|
+
children: /* @__PURE__ */ jsx(RunIcon, { state: step.state })
|
|
74
|
+
}), /* @__PURE__ */ jsxs("div", {
|
|
75
|
+
className: "grid min-w-0 flex-1 gap-1",
|
|
76
|
+
children: [/* @__PURE__ */ jsxs("span", {
|
|
77
|
+
className: "text-sm font-medium break-words",
|
|
78
|
+
children: [step.label, /* @__PURE__ */ jsxs("span", {
|
|
79
|
+
className: "sr-only",
|
|
80
|
+
children: [" — ", labels[step.state]]
|
|
81
|
+
})]
|
|
82
|
+
}), step.detail && /* @__PURE__ */ jsx("div", {
|
|
83
|
+
className: "text-xs leading-relaxed break-words text-muted-foreground",
|
|
84
|
+
children: step.detail
|
|
85
|
+
})]
|
|
86
|
+
})]
|
|
87
|
+
}, step.id))
|
|
88
|
+
}),
|
|
89
|
+
children && /* @__PURE__ */ jsx("div", {
|
|
90
|
+
className: "grid min-w-0 gap-3 border-t border-border p-4",
|
|
91
|
+
children
|
|
92
|
+
}),
|
|
93
|
+
(state === "running" && onPause || state === "paused" && onResume || state === "failed" && onRetry || active && onCancel) && /* @__PURE__ */ jsxs("footer", {
|
|
94
|
+
className: "flex flex-wrap justify-end gap-2 border-t border-border p-3",
|
|
95
|
+
"aria-busy": busy || void 0,
|
|
96
|
+
children: [
|
|
97
|
+
active && onCancel && /* @__PURE__ */ jsx(Button, {
|
|
98
|
+
variant: "ghost",
|
|
99
|
+
size: "sm",
|
|
100
|
+
disabled: busy,
|
|
101
|
+
onClick: onCancel,
|
|
102
|
+
children: "Cancel run"
|
|
103
|
+
}),
|
|
104
|
+
state === "running" && onPause && /* @__PURE__ */ jsx(Button, {
|
|
105
|
+
variant: "outline",
|
|
106
|
+
size: "sm",
|
|
107
|
+
disabled: busy,
|
|
108
|
+
onClick: onPause,
|
|
109
|
+
children: "Pause run"
|
|
110
|
+
}),
|
|
111
|
+
state === "paused" && onResume && /* @__PURE__ */ jsx(Button, {
|
|
112
|
+
size: "sm",
|
|
113
|
+
disabled: busy,
|
|
114
|
+
onClick: onResume,
|
|
115
|
+
children: "Resume run"
|
|
116
|
+
}),
|
|
117
|
+
state === "failed" && onRetry && /* @__PURE__ */ jsx(Button, {
|
|
118
|
+
size: "sm",
|
|
119
|
+
disabled: busy,
|
|
120
|
+
onClick: onRetry,
|
|
121
|
+
children: "Retry run"
|
|
122
|
+
})
|
|
123
|
+
]
|
|
124
|
+
})
|
|
125
|
+
]
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
//#endregion
|
|
129
|
+
export { AgentRun };
|
|
130
|
+
|
|
131
|
+
//# sourceMappingURL=agent-run.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-run.js","names":[],"sources":["../../src/components/agent-run.tsx"],"sourcesContent":["import AlertCircle from '@burtson-labs/icons/react/alert-circle';\nimport Check from '@burtson-labs/icons/react/check';\nimport Circle from '@burtson-labs/icons/react/circle';\nimport Pause from '@burtson-labs/icons/react/pause';\nimport * as React from 'react';\n\nimport { cn } from '../lib/utils';\n\nimport { Button } from './button';\nimport { Spinner } from './spinner';\n\nexport type AgentRunState =\n 'queued' | 'running' | 'waiting' | 'paused' | 'completed' | 'failed' | 'canceled';\nexport interface AgentRunStep {\n id: string;\n label: string;\n state: AgentRunState;\n detail?: React.ReactNode;\n}\nexport interface AgentRunProps extends Omit<React.ComponentProps<'section'>, 'title'> {\n title: string;\n state: AgentRunState;\n steps: AgentRunStep[];\n /** Explain the current state, especially what a person needs to do next. */\n summary?: React.ReactNode;\n busy?: boolean;\n onPause?: () => void;\n onResume?: () => void;\n onCancel?: () => void;\n onRetry?: () => void;\n}\nconst labels: Record<AgentRunState, string> = {\n queued: 'Queued',\n running: 'Running',\n waiting: 'Needs your input',\n paused: 'Paused',\n completed: 'Completed',\n failed: 'Failed',\n canceled: 'Canceled',\n};\nfunction RunIcon({ state }: { state: AgentRunState }) {\n if (state === 'running') return <Spinner className=\"size-4\" label=\"Running\" />;\n const Icon =\n state === 'completed'\n ? Check\n : state === 'failed' || state === 'waiting'\n ? AlertCircle\n : state === 'paused'\n ? Pause\n : Circle;\n return (\n <Icon\n aria-hidden\n className={cn(\n 'size-4',\n state === 'completed' && 'text-success',\n state === 'failed' && 'text-destructive',\n state === 'waiting' && 'text-warning',\n )}\n />\n );\n}\n\n/** A controlled run timeline. The application owns execution, cancellation and retry. */\nexport function AgentRun({\n title,\n state,\n steps,\n summary,\n busy = false,\n onPause,\n onResume,\n onCancel,\n onRetry,\n children,\n className,\n ...props\n}: AgentRunProps) {\n const id = React.useId();\n const active = ['queued', 'running', 'waiting', 'paused'].includes(state);\n return (\n <section\n data-slot=\"agent-run\"\n data-state={state}\n aria-labelledby={id}\n className={cn(\n 'min-w-0 overflow-hidden rounded-lg border border-border bg-surface',\n className,\n )}\n {...props}\n >\n <header className=\"grid gap-2 border-b border-border p-4\">\n <div className=\"flex flex-wrap items-center justify-between gap-2\">\n <h3 id={id} className=\"min-w-0 text-sm font-semibold break-words\">\n {title}\n </h3>\n <span\n role=\"status\"\n className=\"inline-flex items-center gap-1.5 text-xs text-muted-foreground\"\n >\n <RunIcon state={state} />\n {labels[state]}\n </span>\n </div>\n {summary && <p className=\"text-sm leading-relaxed text-muted-foreground\">{summary}</p>}\n </header>\n <ol className=\"grid gap-4 p-4\" aria-label=\"Run steps\">\n {steps.map((step) => (\n <li\n key={step.id}\n className=\"flex min-w-0 gap-3\"\n aria-current={step.state === 'running' || step.state === 'waiting' ? 'step' : undefined}\n >\n <span className=\"mt-0.5 shrink-0\">\n <RunIcon state={step.state} />\n </span>\n <div className=\"grid min-w-0 flex-1 gap-1\">\n <span className=\"text-sm font-medium break-words\">\n {step.label}\n <span className=\"sr-only\"> — {labels[step.state]}</span>\n </span>\n {step.detail && (\n <div className=\"text-xs leading-relaxed break-words text-muted-foreground\">\n {step.detail}\n </div>\n )}\n </div>\n </li>\n ))}\n </ol>\n {children && <div className=\"grid min-w-0 gap-3 border-t border-border p-4\">{children}</div>}\n {((state === 'running' && onPause) ||\n (state === 'paused' && onResume) ||\n (state === 'failed' && onRetry) ||\n (active && onCancel)) && (\n <footer\n className=\"flex flex-wrap justify-end gap-2 border-t border-border p-3\"\n aria-busy={busy || undefined}\n >\n {active && onCancel && (\n <Button variant=\"ghost\" size=\"sm\" disabled={busy} onClick={onCancel}>\n Cancel run\n </Button>\n )}\n {state === 'running' && onPause && (\n <Button variant=\"outline\" size=\"sm\" disabled={busy} onClick={onPause}>\n Pause run\n </Button>\n )}\n {state === 'paused' && onResume && (\n <Button size=\"sm\" disabled={busy} onClick={onResume}>\n Resume run\n </Button>\n )}\n {state === 'failed' && onRetry && (\n <Button size=\"sm\" disabled={busy} onClick={onRetry}>\n Retry run\n </Button>\n )}\n </footer>\n )}\n </section>\n );\n}\n"],"mappings":";;;;;;;;;;;AA+BA,IAAM,SAAwC;CAC5C,QAAQ;CACR,SAAS;CACT,SAAS;CACT,QAAQ;CACR,WAAW;CACX,QAAQ;CACR,UAAU;AACZ;AACA,SAAS,QAAQ,EAAE,SAAmC;CACpD,IAAI,UAAU,WAAW,OAAO,oBAAC,SAAD;EAAS,WAAU;EAAS,OAAM;CAAW,CAAA;CAS7E,OACE,oBARA,UAAU,cACN,QACA,UAAU,YAAY,UAAU,YAC9B,cACA,UAAU,WACR,QACA,QAER;EACE,eAAA;EACA,WAAW,GACT,UACA,UAAU,eAAe,gBACzB,UAAU,YAAY,oBACtB,UAAU,aAAa,cACzB;CACD,CAAA;AAEL;;AAGA,SAAgB,SAAS,EACvB,OACA,OACA,OACA,SACA,OAAO,OACP,SACA,UACA,UACA,SACA,UACA,WACA,GAAG,SACa;CAChB,MAAM,KAAK,MAAM,MAAM;CACvB,MAAM,SAAS;EAAC;EAAU;EAAW;EAAW;CAAQ,CAAC,CAAC,SAAS,KAAK;CACxE,OACE,qBAAC,WAAD;EACE,aAAU;EACV,cAAY;EACZ,mBAAiB;EACjB,WAAW,GACT,sEACA,SACF;EACA,GAAI;EARN,UAAA;GAUE,qBAAC,UAAD;IAAQ,WAAU;IAAlB,UAAA,CACE,qBAAC,OAAD;KAAK,WAAU;KAAf,UAAA,CACE,oBAAC,MAAD;MAAQ;MAAI,WAAU;MACnB,UAAA;KACC,CAAA,GACJ,qBAAC,QAAD;MACE,MAAK;MACL,WAAU;MAFZ,UAAA,CAIE,oBAAC,SAAD,EAAgB,MAAQ,CAAA,GACvB,OAAO,MACJ;KACH,CAAA,CAAA;IACJ,CAAA,GAAA,WAAW,oBAAC,KAAD;KAAG,WAAU;KAAiD,UAAA;IAAW,CAAA,CAC/E;;GACR,oBAAC,MAAD;IAAI,WAAU;IAAiB,cAAW;IACvC,UAAA,MAAM,KAAK,SACV,qBAAC,MAAD;KAEE,WAAU;KACV,gBAAc,KAAK,UAAU,aAAa,KAAK,UAAU,YAAY,SAAS,KAAA;KAHhF,UAAA,CAKE,oBAAC,QAAD;MAAM,WAAU;MACd,UAAA,oBAAC,SAAD,EAAS,OAAO,KAAK,MAAQ,CAAA;KACzB,CAAA,GACN,qBAAC,OAAD;MAAK,WAAU;MAAf,UAAA,CACE,qBAAC,QAAD;OAAM,WAAU;OAAhB,UAAA,CACG,KAAK,OACN,qBAAC,QAAD;QAAM,WAAU;QAAhB,UAAA,CAA0B,OAAI,OAAO,KAAK,MAAa;OACnD,CAAA,CAAA;MACL,CAAA,GAAA,KAAK,UACJ,oBAAC,OAAD;OAAK,WAAU;OACZ,UAAA,KAAK;MACH,CAAA,CAEJ;KACH,CAAA,CAAA;IAlBG,GAAA,KAAK,EAkBR,CACL;GACC,CAAA;GACH,YAAY,oBAAC,OAAD;IAAK,WAAU;IAAiD;GAAc,CAAA;IACxF,UAAU,aAAa,WACvB,UAAU,YAAY,YACtB,UAAU,YAAY,WACtB,UAAU,aACX,qBAAC,UAAD;IACE,WAAU;IACV,aAAW,QAAQ,KAAA;IAFrB,UAAA;KAIG,UAAU,YACT,oBAAC,QAAD;MAAQ,SAAQ;MAAQ,MAAK;MAAK,UAAU;MAAM,SAAS;MAAU,UAAA;KAE7D,CAAA;KAET,UAAU,aAAa,WACtB,oBAAC,QAAD;MAAQ,SAAQ;MAAU,MAAK;MAAK,UAAU;MAAM,SAAS;MAAS,UAAA;KAE9D,CAAA;KAET,UAAU,YAAY,YACrB,oBAAC,QAAD;MAAQ,MAAK;MAAK,UAAU;MAAM,SAAS;MAAU,UAAA;KAE7C,CAAA;KAET,UAAU,YAAY,WACrB,oBAAC,QAAD;MAAQ,MAAK;MAAK,UAAU;MAAM,SAAS;MAAS,UAAA;KAE5C,CAAA;IAEJ;;EAEH;;AAEb"}
|
|
@@ -6,15 +6,17 @@ import * as AlertDialogPrimitive from '../primitives/vendor/radix/react-alert-di
|
|
|
6
6
|
* answers it; Escape still cancels. Focus starts on Cancel.
|
|
7
7
|
*/
|
|
8
8
|
declare function AlertDialog(props: React.ComponentProps<typeof AlertDialogPrimitive.Root>): React.JSX.Element;
|
|
9
|
-
declare
|
|
10
|
-
declare
|
|
11
|
-
declare
|
|
12
|
-
declare
|
|
13
|
-
declare
|
|
14
|
-
declare
|
|
15
|
-
|
|
16
|
-
|
|
9
|
+
declare const AlertDialogTrigger: React.ForwardRefExoticComponent<Omit<AlertDialogPrimitive.AlertDialogTriggerProps & React.RefAttributes<HTMLButtonElement>, "ref"> & React.RefAttributes<HTMLButtonElement>>;
|
|
10
|
+
declare const AlertDialogContent: React.ForwardRefExoticComponent<Omit<AlertDialogPrimitive.AlertDialogContentProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
11
|
+
declare const AlertDialogHeader: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
12
|
+
declare const AlertDialogFooter: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
13
|
+
declare const AlertDialogTitle: React.ForwardRefExoticComponent<Omit<AlertDialogPrimitive.AlertDialogTitleProps & React.RefAttributes<HTMLHeadingElement>, "ref"> & React.RefAttributes<HTMLHeadingElement>>;
|
|
14
|
+
declare const AlertDialogDescription: React.ForwardRefExoticComponent<Omit<AlertDialogPrimitive.AlertDialogDescriptionProps & React.RefAttributes<HTMLParagraphElement>, "ref"> & React.RefAttributes<HTMLParagraphElement>>;
|
|
15
|
+
export interface AlertDialogActionProps extends React.ComponentProps<typeof AlertDialogPrimitive.Action> {
|
|
16
|
+
/** Paints the confirming button as a danger action. */
|
|
17
17
|
destructive?: boolean;
|
|
18
|
-
}
|
|
19
|
-
|
|
18
|
+
}
|
|
19
|
+
/** The confirming button. */
|
|
20
|
+
declare const AlertDialogAction: React.ForwardRefExoticComponent<Omit<AlertDialogActionProps, "ref"> & React.RefAttributes<HTMLButtonElement>>;
|
|
21
|
+
declare const AlertDialogCancel: React.ForwardRefExoticComponent<Omit<AlertDialogPrimitive.AlertDialogCancelProps & React.RefAttributes<HTMLButtonElement>, "ref"> & React.RefAttributes<HTMLButtonElement>>;
|
|
20
22
|
export { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle, AlertDialogTrigger, };
|
|
@@ -2,7 +2,8 @@
|
|
|
2
2
|
import { cn } from "../lib/utils.js";
|
|
3
3
|
import { Action, Cancel, Content, Description, Overlay, Portal, Root, Title, Trigger } from "../primitives/vendor/radix/react-alert-dialog/alert-dialog.js";
|
|
4
4
|
import { buttonVariants } from "./button.js";
|
|
5
|
-
import "
|
|
5
|
+
import { overlayClasses } from "./dialog.js";
|
|
6
|
+
import * as React from "react";
|
|
6
7
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
7
8
|
//#region src/components/alert-dialog.tsx
|
|
8
9
|
/**
|
|
@@ -16,65 +17,73 @@ function AlertDialog(props) {
|
|
|
16
17
|
...props
|
|
17
18
|
});
|
|
18
19
|
}
|
|
19
|
-
function AlertDialogTrigger(props) {
|
|
20
|
+
var AlertDialogTrigger = React.forwardRef(function AlertDialogTrigger(props, ref) {
|
|
20
21
|
return /* @__PURE__ */ jsx(Trigger, {
|
|
22
|
+
ref,
|
|
21
23
|
"data-slot": "alert-dialog-trigger",
|
|
22
24
|
...props
|
|
23
25
|
});
|
|
24
|
-
}
|
|
25
|
-
function AlertDialogContent({ className, ...props }) {
|
|
26
|
+
});
|
|
27
|
+
var AlertDialogContent = React.forwardRef(function AlertDialogContent({ className, ...props }, ref) {
|
|
26
28
|
return /* @__PURE__ */ jsxs(Portal, { children: [/* @__PURE__ */ jsx(Overlay, {
|
|
27
29
|
"data-slot": "alert-dialog-overlay",
|
|
28
|
-
className:
|
|
30
|
+
className: overlayClasses
|
|
29
31
|
}), /* @__PURE__ */ jsx(Content, {
|
|
32
|
+
ref,
|
|
30
33
|
"data-slot": "alert-dialog-content",
|
|
31
|
-
className: cn("fixed top-1/2 left-1/2 z-50 grid [--bl-scale:0.95] [--bl-ty:8px] w-[calc(100%-2rem)] max-w-md max-h-[calc(100dvh-2rem)] overflow-y-auto overscroll-contain -translate-x-1/2 -translate-y-1/2 gap-5 rounded-xl border border-border-strong bg-surface-raised p-5 text-foreground shadow-
|
|
34
|
+
className: cn("fixed top-1/2 left-1/2 z-50 grid [--bl-scale:0.95] [--bl-ty:8px] w-[calc(100%-2rem)] max-w-md max-h-[calc(100dvh-2rem)] overflow-y-auto overscroll-contain -translate-x-1/2 -translate-y-1/2 gap-5 rounded-xl border border-border-strong bg-surface-raised p-5 text-foreground shadow-xl outline-none data-[state=closed]:animate-out data-[state=open]:animate-in sm:p-6", className),
|
|
32
35
|
...props
|
|
33
36
|
})] });
|
|
34
|
-
}
|
|
35
|
-
function AlertDialogHeader({ className, ...props }) {
|
|
37
|
+
});
|
|
38
|
+
var AlertDialogHeader = React.forwardRef(function AlertDialogHeader({ className, ...props }, ref) {
|
|
36
39
|
return /* @__PURE__ */ jsx("div", {
|
|
40
|
+
ref,
|
|
37
41
|
"data-slot": "alert-dialog-header",
|
|
38
42
|
className: cn("grid gap-1.5", className),
|
|
39
43
|
...props
|
|
40
44
|
});
|
|
41
|
-
}
|
|
42
|
-
function AlertDialogFooter({ className, ...props }) {
|
|
45
|
+
});
|
|
46
|
+
var AlertDialogFooter = React.forwardRef(function AlertDialogFooter({ className, ...props }, ref) {
|
|
43
47
|
return /* @__PURE__ */ jsx("div", {
|
|
48
|
+
ref,
|
|
44
49
|
"data-slot": "alert-dialog-footer",
|
|
45
50
|
className: cn("flex flex-col-reverse gap-2 sm:flex-row sm:justify-end", className),
|
|
46
51
|
...props
|
|
47
52
|
});
|
|
48
|
-
}
|
|
49
|
-
function AlertDialogTitle({ className, ...props }) {
|
|
53
|
+
});
|
|
54
|
+
var AlertDialogTitle = React.forwardRef(function AlertDialogTitle({ className, ...props }, ref) {
|
|
50
55
|
return /* @__PURE__ */ jsx(Title, {
|
|
56
|
+
ref,
|
|
51
57
|
"data-slot": "alert-dialog-title",
|
|
52
58
|
className: cn("text-base font-semibold tracking-[-0.02em]", className),
|
|
53
59
|
...props
|
|
54
60
|
});
|
|
55
|
-
}
|
|
56
|
-
function AlertDialogDescription({ className, ...props }) {
|
|
61
|
+
});
|
|
62
|
+
var AlertDialogDescription = React.forwardRef(function AlertDialogDescription({ className, ...props }, ref) {
|
|
57
63
|
return /* @__PURE__ */ jsx(Description, {
|
|
64
|
+
ref,
|
|
58
65
|
"data-slot": "alert-dialog-description",
|
|
59
66
|
className: cn("text-sm leading-5 text-muted-foreground", className),
|
|
60
67
|
...props
|
|
61
68
|
});
|
|
62
|
-
}
|
|
63
|
-
/** The confirming button.
|
|
64
|
-
function AlertDialogAction({ className, destructive = false, ...props }) {
|
|
69
|
+
});
|
|
70
|
+
/** The confirming button. */
|
|
71
|
+
var AlertDialogAction = React.forwardRef(function AlertDialogAction({ className, destructive = false, ...props }, ref) {
|
|
65
72
|
return /* @__PURE__ */ jsx(Action, {
|
|
73
|
+
ref,
|
|
66
74
|
"data-slot": "alert-dialog-action",
|
|
67
75
|
className: cn(buttonVariants({ variant: destructive ? "destructive" : "default" }), className),
|
|
68
76
|
...props
|
|
69
77
|
});
|
|
70
|
-
}
|
|
71
|
-
function AlertDialogCancel({ className, ...props }) {
|
|
78
|
+
});
|
|
79
|
+
var AlertDialogCancel = React.forwardRef(function AlertDialogCancel({ className, ...props }, ref) {
|
|
72
80
|
return /* @__PURE__ */ jsx(Cancel, {
|
|
81
|
+
ref,
|
|
73
82
|
"data-slot": "alert-dialog-cancel",
|
|
74
83
|
className: cn(buttonVariants({ variant: "outline" }), className),
|
|
75
84
|
...props
|
|
76
85
|
});
|
|
77
|
-
}
|
|
86
|
+
});
|
|
78
87
|
//#endregion
|
|
79
88
|
export { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle, AlertDialogTrigger };
|
|
80
89
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"alert-dialog.js","names":["AlertDialogPrimitive.Root","AlertDialogPrimitive.Trigger","AlertDialogPrimitive.Portal","AlertDialogPrimitive.Overlay","AlertDialogPrimitive.Content","AlertDialogPrimitive.Title","AlertDialogPrimitive.Description","AlertDialogPrimitive.Action","AlertDialogPrimitive.Cancel"],"sources":["../../src/components/alert-dialog.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { cn } from '../lib/utils';\nimport * as AlertDialogPrimitive from '../primitives/vendor/radix/react-alert-dialog';\n\nimport { buttonVariants } from './button';\n\n/**\n * A confirmation that interrupts: \"Delete 3 keys?\", \"Revoke access?\". Unlike\n * Dialog it has no close button and ignores outside clicks, so the person\n * answers it; Escape still cancels. Focus starts on Cancel.\n */\nfunction AlertDialog(props: React.ComponentProps<typeof AlertDialogPrimitive.Root>) {\n return <AlertDialogPrimitive.Root data-slot=\"alert-dialog\" {...props} />;\n}\n\
|
|
1
|
+
{"version":3,"file":"alert-dialog.js","names":["AlertDialogPrimitive.Root","AlertDialogPrimitive.Trigger","AlertDialogPrimitive.Portal","AlertDialogPrimitive.Overlay","AlertDialogPrimitive.Content","AlertDialogPrimitive.Title","AlertDialogPrimitive.Description","AlertDialogPrimitive.Action","AlertDialogPrimitive.Cancel"],"sources":["../../src/components/alert-dialog.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { cn } from '../lib/utils';\nimport * as AlertDialogPrimitive from '../primitives/vendor/radix/react-alert-dialog';\n\nimport { buttonVariants } from './button';\nimport { overlayClasses } from './dialog';\n\n/**\n * A confirmation that interrupts: \"Delete 3 keys?\", \"Revoke access?\". Unlike\n * Dialog it has no close button and ignores outside clicks, so the person\n * answers it; Escape still cancels. Focus starts on Cancel.\n */\nfunction AlertDialog(props: React.ComponentProps<typeof AlertDialogPrimitive.Root>) {\n return <AlertDialogPrimitive.Root data-slot=\"alert-dialog\" {...props} />;\n}\n\nconst AlertDialogTrigger = React.forwardRef<\n HTMLButtonElement,\n React.ComponentProps<typeof AlertDialogPrimitive.Trigger>\n>(function AlertDialogTrigger(props, ref) {\n return <AlertDialogPrimitive.Trigger ref={ref} data-slot=\"alert-dialog-trigger\" {...props} />;\n});\n\nconst AlertDialogContent = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<typeof AlertDialogPrimitive.Content>\n>(function AlertDialogContent({ className, ...props }, ref) {\n return (\n <AlertDialogPrimitive.Portal>\n <AlertDialogPrimitive.Overlay data-slot=\"alert-dialog-overlay\" className={overlayClasses} />\n <AlertDialogPrimitive.Content\n ref={ref}\n data-slot=\"alert-dialog-content\"\n className={cn(\n 'fixed top-1/2 left-1/2 z-50 grid [--bl-scale:0.95] [--bl-ty:8px] w-[calc(100%-2rem)] max-w-md max-h-[calc(100dvh-2rem)] overflow-y-auto overscroll-contain -translate-x-1/2 -translate-y-1/2 gap-5 rounded-xl border border-border-strong bg-surface-raised p-5 text-foreground shadow-xl outline-none data-[state=closed]:animate-out data-[state=open]:animate-in sm:p-6',\n className,\n )}\n {...props}\n />\n </AlertDialogPrimitive.Portal>\n );\n});\n\nconst AlertDialogHeader = React.forwardRef<HTMLDivElement, React.ComponentProps<'div'>>(\n function AlertDialogHeader({ className, ...props }, ref) {\n return (\n <div\n ref={ref}\n data-slot=\"alert-dialog-header\"\n className={cn('grid gap-1.5', className)}\n {...props}\n />\n );\n },\n);\n\nconst AlertDialogFooter = React.forwardRef<HTMLDivElement, React.ComponentProps<'div'>>(\n function AlertDialogFooter({ className, ...props }, ref) {\n return (\n <div\n ref={ref}\n data-slot=\"alert-dialog-footer\"\n className={cn('flex flex-col-reverse gap-2 sm:flex-row sm:justify-end', className)}\n {...props}\n />\n );\n },\n);\n\nconst AlertDialogTitle = React.forwardRef<\n HTMLHeadingElement,\n React.ComponentProps<typeof AlertDialogPrimitive.Title>\n>(function AlertDialogTitle({ className, ...props }, ref) {\n return (\n <AlertDialogPrimitive.Title\n ref={ref}\n data-slot=\"alert-dialog-title\"\n className={cn('text-base font-semibold tracking-[-0.02em]', className)}\n {...props}\n />\n );\n});\n\nconst AlertDialogDescription = React.forwardRef<\n HTMLParagraphElement,\n React.ComponentProps<typeof AlertDialogPrimitive.Description>\n>(function AlertDialogDescription({ className, ...props }, ref) {\n return (\n <AlertDialogPrimitive.Description\n ref={ref}\n data-slot=\"alert-dialog-description\"\n className={cn('text-sm leading-5 text-muted-foreground', className)}\n {...props}\n />\n );\n});\n\nexport interface AlertDialogActionProps extends React.ComponentProps<\n typeof AlertDialogPrimitive.Action\n> {\n /** Paints the confirming button as a danger action. */\n destructive?: boolean;\n}\n\n/** The confirming button. */\nconst AlertDialogAction = React.forwardRef<HTMLButtonElement, AlertDialogActionProps>(\n function AlertDialogAction({ className, destructive = false, ...props }, ref) {\n return (\n <AlertDialogPrimitive.Action\n ref={ref}\n data-slot=\"alert-dialog-action\"\n className={cn(\n buttonVariants({ variant: destructive ? 'destructive' : 'default' }),\n className,\n )}\n {...props}\n />\n );\n },\n);\n\nconst AlertDialogCancel = React.forwardRef<\n HTMLButtonElement,\n React.ComponentProps<typeof AlertDialogPrimitive.Cancel>\n>(function AlertDialogCancel({ className, ...props }, ref) {\n return (\n <AlertDialogPrimitive.Cancel\n ref={ref}\n data-slot=\"alert-dialog-cancel\"\n className={cn(buttonVariants({ variant: 'outline' }), className)}\n {...props}\n />\n );\n});\n\nexport {\n AlertDialog,\n AlertDialogAction,\n AlertDialogCancel,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogTitle,\n AlertDialogTrigger,\n};\n"],"mappings":";;;;;;;;;;;;;AAaA,SAAS,YAAY,OAA+D;CAClF,OAAO,oBAACA,MAAD;EAA2B,aAAU;EAAe,GAAI;CAAQ,CAAA;AACzE;AAEA,IAAM,qBAAqB,MAAM,WAG/B,SAAS,mBAAmB,OAAO,KAAK;CACxC,OAAO,oBAACC,SAAD;EAAmC;EAAK,aAAU;EAAuB,GAAI;CAAQ,CAAA;AAC9F,CAAC;AAED,IAAM,qBAAqB,MAAM,WAG/B,SAAS,mBAAmB,EAAE,WAAW,GAAG,SAAS,KAAK;CAC1D,OACE,qBAACC,QAAD,EAAA,UAAA,CACE,oBAACC,SAAD;EAA8B,aAAU;EAAuB,WAAW;CAAiB,CAAA,GAC3F,oBAACC,SAAD;EACO;EACL,aAAU;EACV,WAAW,GACT,8WACA,SACF;EACA,GAAI;CACL,CAAA,CAC0B,EAAA,CAAA;AAEjC,CAAC;AAED,IAAM,oBAAoB,MAAM,WAC9B,SAAS,kBAAkB,EAAE,WAAW,GAAG,SAAS,KAAK;CACvD,OACE,oBAAC,OAAD;EACO;EACL,aAAU;EACV,WAAW,GAAG,gBAAgB,SAAS;EACvC,GAAI;CACL,CAAA;AAEL,CACF;AAEA,IAAM,oBAAoB,MAAM,WAC9B,SAAS,kBAAkB,EAAE,WAAW,GAAG,SAAS,KAAK;CACvD,OACE,oBAAC,OAAD;EACO;EACL,aAAU;EACV,WAAW,GAAG,0DAA0D,SAAS;EACjF,GAAI;CACL,CAAA;AAEL,CACF;AAEA,IAAM,mBAAmB,MAAM,WAG7B,SAAS,iBAAiB,EAAE,WAAW,GAAG,SAAS,KAAK;CACxD,OACE,oBAACC,OAAD;EACO;EACL,aAAU;EACV,WAAW,GAAG,8CAA8C,SAAS;EACrE,GAAI;CACL,CAAA;AAEL,CAAC;AAED,IAAM,yBAAyB,MAAM,WAGnC,SAAS,uBAAuB,EAAE,WAAW,GAAG,SAAS,KAAK;CAC9D,OACE,oBAACC,aAAD;EACO;EACL,aAAU;EACV,WAAW,GAAG,2CAA2C,SAAS;EAClE,GAAI;CACL,CAAA;AAEL,CAAC;;AAUD,IAAM,oBAAoB,MAAM,WAC9B,SAAS,kBAAkB,EAAE,WAAW,cAAc,OAAO,GAAG,SAAS,KAAK;CAC5E,OACE,oBAACC,QAAD;EACO;EACL,aAAU;EACV,WAAW,GACT,eAAe,EAAE,SAAS,cAAc,gBAAgB,UAAU,CAAC,GACnE,SACF;EACA,GAAI;CACL,CAAA;AAEL,CACF;AAEA,IAAM,oBAAoB,MAAM,WAG9B,SAAS,kBAAkB,EAAE,WAAW,GAAG,SAAS,KAAK;CACzD,OACE,oBAACC,QAAD;EACO;EACL,aAAU;EACV,WAAW,GAAG,eAAe,EAAE,SAAS,UAAU,CAAC,GAAG,SAAS;EAC/D,GAAI;CACL,CAAA;AAEL,CAAC"}
|
|
@@ -3,7 +3,9 @@ import * as React from 'react';
|
|
|
3
3
|
declare const alertVariants: (props?: ({
|
|
4
4
|
variant?: "destructive" | "success" | "warning" | "info" | "brand" | "default" | null | undefined;
|
|
5
5
|
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
declare
|
|
6
|
+
export interface AlertProps extends React.ComponentProps<'div'>, VariantProps<typeof alertVariants> {
|
|
7
|
+
}
|
|
8
|
+
declare const Alert: React.ForwardRefExoticComponent<Omit<AlertProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
9
|
+
declare const AlertTitle: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
10
|
+
declare const AlertDescription: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
9
11
|
export { Alert, AlertDescription, AlertTitle, alertVariants };
|
package/dist/components/alert.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { cn } from "../lib/utils.js";
|
|
3
|
-
import "react";
|
|
3
|
+
import * as React from "react";
|
|
4
4
|
import { jsx } from "react/jsx-runtime";
|
|
5
5
|
import { cva } from "class-variance-authority";
|
|
6
6
|
//#region src/components/alert.tsx
|
|
@@ -15,28 +15,32 @@ var alertVariants = cva("group/alert relative grid w-full grid-cols-1 has-[>svg]
|
|
|
15
15
|
} },
|
|
16
16
|
defaultVariants: { variant: "default" }
|
|
17
17
|
});
|
|
18
|
-
function Alert({ className, variant, ...props }) {
|
|
18
|
+
var Alert = React.forwardRef(function Alert({ className, variant, ...props }, ref) {
|
|
19
19
|
return /* @__PURE__ */ jsx("div", {
|
|
20
|
+
ref,
|
|
20
21
|
"data-slot": "alert",
|
|
22
|
+
"data-variant": variant ?? "default",
|
|
21
23
|
role: "alert",
|
|
22
24
|
className: cn(alertVariants({ variant }), className),
|
|
23
25
|
...props
|
|
24
26
|
});
|
|
25
|
-
}
|
|
26
|
-
function AlertTitle({ className, ...props }) {
|
|
27
|
+
});
|
|
28
|
+
var AlertTitle = React.forwardRef(function AlertTitle({ className, ...props }, ref) {
|
|
27
29
|
return /* @__PURE__ */ jsx("div", {
|
|
30
|
+
ref,
|
|
28
31
|
"data-slot": "alert-title",
|
|
29
32
|
className: cn("font-semibold tracking-[-0.01em]", className),
|
|
30
33
|
...props
|
|
31
34
|
});
|
|
32
|
-
}
|
|
33
|
-
function AlertDescription({ className, ...props }) {
|
|
35
|
+
});
|
|
36
|
+
var AlertDescription = React.forwardRef(function AlertDescription({ className, ...props }, ref) {
|
|
34
37
|
return /* @__PURE__ */ jsx("div", {
|
|
38
|
+
ref,
|
|
35
39
|
"data-slot": "alert-description",
|
|
36
40
|
className: cn("col-start-1 group-has-[>svg]/alert:col-start-2 text-[13px] leading-5 text-muted-foreground", className),
|
|
37
41
|
...props
|
|
38
42
|
});
|
|
39
|
-
}
|
|
43
|
+
});
|
|
40
44
|
//#endregion
|
|
41
45
|
export { Alert, AlertDescription, AlertTitle, alertVariants };
|
|
42
46
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"alert.js","names":[],"sources":["../../src/components/alert.tsx"],"sourcesContent":["import { cva, type VariantProps } from 'class-variance-authority';\nimport * as React from 'react';\n\nimport { cn } from '../lib/utils';\n\nconst alertVariants = cva(\n 'group/alert relative grid w-full grid-cols-1 has-[>svg]:grid-cols-[auto_1fr] gap-x-3 gap-y-0.5 rounded-lg border px-4 py-3.5 text-sm shadow-xs [&>svg]:mt-0.5 [&>svg]:size-4',\n {\n variants: {\n variant: {\n default: 'border-border bg-surface text-foreground [&>svg]:text-muted-foreground',\n brand: 'border-brand/25 bg-brand-soft/70 text-foreground [&>svg]:text-brand',\n success: 'border-success/25 bg-success/10 text-foreground [&>svg]:text-success',\n warning: 'border-warning/25 bg-warning/10 text-foreground [&>svg]:text-warning',\n destructive:\n 'border-destructive/25 bg-destructive/10 text-foreground [&>svg]:text-destructive',\n info: 'border-info/25 bg-info/10 text-foreground [&>svg]:text-info',\n },\n },\n defaultVariants: { variant: 'default' },\n },\n);\n\
|
|
1
|
+
{"version":3,"file":"alert.js","names":[],"sources":["../../src/components/alert.tsx"],"sourcesContent":["import { cva, type VariantProps } from 'class-variance-authority';\nimport * as React from 'react';\n\nimport { cn } from '../lib/utils';\n\nconst alertVariants = cva(\n 'group/alert relative grid w-full grid-cols-1 has-[>svg]:grid-cols-[auto_1fr] gap-x-3 gap-y-0.5 rounded-lg border px-4 py-3.5 text-sm shadow-xs [&>svg]:mt-0.5 [&>svg]:size-4',\n {\n variants: {\n variant: {\n default: 'border-border bg-surface text-foreground [&>svg]:text-muted-foreground',\n brand: 'border-brand/25 bg-brand-soft/70 text-foreground [&>svg]:text-brand',\n success: 'border-success/25 bg-success/10 text-foreground [&>svg]:text-success',\n warning: 'border-warning/25 bg-warning/10 text-foreground [&>svg]:text-warning',\n destructive:\n 'border-destructive/25 bg-destructive/10 text-foreground [&>svg]:text-destructive',\n info: 'border-info/25 bg-info/10 text-foreground [&>svg]:text-info',\n },\n },\n defaultVariants: { variant: 'default' },\n },\n);\n\nexport interface AlertProps\n extends React.ComponentProps<'div'>, VariantProps<typeof alertVariants> {}\n\nconst Alert = React.forwardRef<HTMLDivElement, AlertProps>(function Alert(\n { className, variant, ...props },\n ref,\n) {\n return (\n <div\n ref={ref}\n data-slot=\"alert\"\n data-variant={variant ?? 'default'}\n role=\"alert\"\n className={cn(alertVariants({ variant }), className)}\n {...props}\n />\n );\n});\n\nconst AlertTitle = React.forwardRef<HTMLDivElement, React.ComponentProps<'div'>>(\n function AlertTitle({ className, ...props }, ref) {\n return (\n <div\n ref={ref}\n data-slot=\"alert-title\"\n className={cn('font-semibold tracking-[-0.01em]', className)}\n {...props}\n />\n );\n },\n);\n\nconst AlertDescription = React.forwardRef<HTMLDivElement, React.ComponentProps<'div'>>(\n function AlertDescription({ className, ...props }, ref) {\n return (\n <div\n ref={ref}\n data-slot=\"alert-description\"\n className={cn(\n 'col-start-1 group-has-[>svg]/alert:col-start-2 text-[13px] leading-5 text-muted-foreground',\n className,\n )}\n {...props}\n />\n );\n },\n);\n\nexport { Alert, AlertDescription, AlertTitle, alertVariants };\n"],"mappings":";;;;;;AAKA,IAAM,gBAAgB,IACpB,gLACA;CACE,UAAU,EACR,SAAS;EACP,SAAS;EACT,OAAO;EACP,SAAS;EACT,SAAS;EACT,aACE;EACF,MAAM;CACR,EACF;CACA,iBAAiB,EAAE,SAAS,UAAU;AACxC,CACF;AAKA,IAAM,QAAQ,MAAM,WAAuC,SAAS,MAClE,EAAE,WAAW,SAAS,GAAG,SACzB,KACA;CACA,OACE,oBAAC,OAAD;EACO;EACL,aAAU;EACV,gBAAc,WAAW;EACzB,MAAK;EACL,WAAW,GAAG,cAAc,EAAE,QAAQ,CAAC,GAAG,SAAS;EACnD,GAAI;CACL,CAAA;AAEL,CAAC;AAED,IAAM,aAAa,MAAM,WACvB,SAAS,WAAW,EAAE,WAAW,GAAG,SAAS,KAAK;CAChD,OACE,oBAAC,OAAD;EACO;EACL,aAAU;EACV,WAAW,GAAG,oCAAoC,SAAS;EAC3D,GAAI;CACL,CAAA;AAEL,CACF;AAEA,IAAM,mBAAmB,MAAM,WAC7B,SAAS,iBAAiB,EAAE,WAAW,GAAG,SAAS,KAAK;CACtD,OACE,oBAAC,OAAD;EACO;EACL,aAAU;EACV,WAAW,GACT,8FACA,SACF;EACA,GAAI;CACL,CAAA;AAEL,CACF"}
|