@ablehi/automation-app-ui 0.1.13 → 0.2.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.
@@ -0,0 +1,305 @@
1
+ import * as react from 'react';
2
+ import { A as AutomationAppGridProps, a as AutomationAppHeaderProps, b as AutomationAppSectionProps, c as AutomationAppStackProps, d as AutomationAppButtonProps, e as AutomationAppFieldProps, f as AutomationAppSelectProps, g as AutomationAppCheckboxProps, h as AutomationAppRadioGroupProps, i as AutomationAppSwitchProps, j as AutomationAppTabsProps, k as AutomationAppDialogProps, l as AutomationAppPopoverProps, m as AutomationAppToastProps, n as AutomationAppTooltipProps, o as AutomationAppAlertProps, p as AutomationAppStateProps, q as AutomationAppErrorStateProps, r as AutomationAppStatusProps, s as AutomationAppBadgeProps, t as AutomationAppProgressProps, u as AutomationAppTableProps } from './data-display-CmUtl6XB.js';
3
+ import 'react/jsx-runtime';
4
+ import 'class-variance-authority/types';
5
+ import 'class-variance-authority';
6
+ import '@base-ui/react/button';
7
+
8
+ type AutomationAppUiFoundationComponentName = "AutomationAppGrid" | "AutomationAppHeader" | "AutomationAppLayout" | "AutomationAppSection" | "AutomationAppStack" | "AutomationAppButton" | "AutomationAppField" | "AutomationAppInput" | "AutomationAppSelect" | "AutomationAppTextarea" | "AutomationAppCheckbox" | "AutomationAppRadioGroup" | "AutomationAppSwitch" | "AutomationAppTabs" | "AutomationAppDialog" | "AutomationAppPopover" | "AutomationAppToast" | "AutomationAppTooltip" | "AutomationAppAlert" | "AutomationAppEmptyState" | "AutomationAppErrorState" | "AutomationAppLoadingState" | "AutomationAppStatus" | "AutomationAppBadge" | "AutomationAppSkeleton" | "AutomationAppProgress" | "AutomationAppSeparator" | "AutomationAppTable";
9
+ type AutomationAppUiFoundationTokenName = "--aaui-background" | "--aaui-foreground" | "--aaui-card" | "--aaui-popover" | "--aaui-muted" | "--aaui-muted-foreground" | "--aaui-border" | "--aaui-input" | "--aaui-primary" | "--aaui-primary-foreground" | "--aaui-secondary" | "--aaui-secondary-foreground" | "--aaui-accent" | "--aaui-destructive" | "--aaui-success" | "--aaui-warning" | "--aaui-info" | "--aaui-ring" | "--aaui-radius" | "--aaui-shadow" | "--aaui-font-sans" | "--aaui-space-1" | "--aaui-space-2" | "--aaui-space-3" | "--aaui-space-4" | "--aaui-space-6" | "--aaui-space-8";
10
+ type ComponentCategory = "layout" | "form" | "navigation" | "feedback" | "status" | "data-display";
11
+ type CatalogProp = Readonly<{
12
+ name: string;
13
+ type: string;
14
+ required: boolean;
15
+ description: string;
16
+ }>;
17
+ type AutomationAppUiFoundationCatalogV1 = Readonly<{
18
+ schemaVersion: "automation.app-ui-foundation-catalog.v1";
19
+ packageName: "@ablehi/automation-app-ui";
20
+ packageVersion: string;
21
+ styleEntry: "@ablehi/automation-app-ui/styles.css";
22
+ runtimeExports: readonly [
23
+ "AutomationAppPortalProvider",
24
+ "useAutomationAppOverlayRoot"
25
+ ];
26
+ tokens: readonly {
27
+ name: AutomationAppUiFoundationTokenName;
28
+ role: string;
29
+ }[];
30
+ components: readonly {
31
+ exportName: AutomationAppUiFoundationComponentName;
32
+ category: ComponentCategory;
33
+ summary: string;
34
+ nativeElement: string | null;
35
+ props: readonly CatalogProp[];
36
+ variants: Readonly<Record<string, readonly string[]>>;
37
+ accessibility: readonly string[];
38
+ }[];
39
+ patterns: readonly {
40
+ id: "form-action" | "collection" | "detail-status" | "confirmation";
41
+ description: string;
42
+ source: string;
43
+ }[];
44
+ }>;
45
+ type CatalogPropFor<Props extends object> = {
46
+ [Name in Extract<keyof Props, string>]: Omit<CatalogProp, "name" | "required"> & Readonly<{
47
+ name: Name;
48
+ required: Pick<Props, Name> extends Required<Pick<Props, Name>> ? true : false;
49
+ }>;
50
+ }[Extract<keyof Props, string>];
51
+ declare const AUTOMATION_APP_UI_FOUNDATION_CATALOG: {
52
+ readonly schemaVersion: "automation.app-ui-foundation-catalog.v1";
53
+ readonly packageName: "@ablehi/automation-app-ui";
54
+ readonly packageVersion: string;
55
+ readonly styleEntry: "@ablehi/automation-app-ui/styles.css";
56
+ readonly runtimeExports: readonly ["AutomationAppPortalProvider", "useAutomationAppOverlayRoot"];
57
+ readonly tokens: {
58
+ name: "--aaui-background" | "--aaui-foreground" | "--aaui-card" | "--aaui-popover" | "--aaui-muted" | "--aaui-muted-foreground" | "--aaui-border" | "--aaui-input" | "--aaui-primary" | "--aaui-primary-foreground" | "--aaui-secondary" | "--aaui-secondary-foreground" | "--aaui-accent" | "--aaui-destructive" | "--aaui-success" | "--aaui-warning" | "--aaui-info" | "--aaui-ring" | "--aaui-radius" | "--aaui-shadow" | "--aaui-font-sans" | "--aaui-space-1" | "--aaui-space-2" | "--aaui-space-3" | "--aaui-space-4" | "--aaui-space-6" | "--aaui-space-8";
59
+ role: "Frame and page background" | "Primary text and icon color" | "Section surface" | "Floating overlay surface" | "Subdued surface" | "Secondary text" | "Structural border" | "Input border and surface" | "Primary action" | "Text on primary action" | "Secondary action surface" | "Text on secondary action" | "Interactive highlight" | "Destructive or error emphasis" | "Success emphasis" | "Warning emphasis" | "Informational emphasis" | "Keyboard focus ring" | "Foundation corner radius" | "Floating-surface shadow" | "Frame sans-serif font stack" | "4px spacing step" | "8px spacing step" | "12px spacing step" | "16px spacing step" | "24px spacing step" | "32px spacing step";
60
+ }[];
61
+ readonly components: readonly [{
62
+ exportName: AutomationAppUiFoundationComponentName;
63
+ category: ComponentCategory;
64
+ summary: string;
65
+ nativeElement: string | null;
66
+ props: readonly CatalogPropFor<AutomationAppGridProps>[];
67
+ variants: {};
68
+ accessibility: readonly string[];
69
+ }, {
70
+ exportName: AutomationAppUiFoundationComponentName;
71
+ category: ComponentCategory;
72
+ summary: string;
73
+ nativeElement: string | null;
74
+ props: readonly CatalogPropFor<AutomationAppHeaderProps>[];
75
+ variants: {};
76
+ accessibility: readonly string[];
77
+ }, {
78
+ exportName: AutomationAppUiFoundationComponentName;
79
+ category: ComponentCategory;
80
+ summary: string;
81
+ nativeElement: string | null;
82
+ props: readonly CatalogPropFor<react.DetailedHTMLProps<react.HTMLAttributes<HTMLElement>, HTMLElement>>[];
83
+ variants: {};
84
+ accessibility: readonly string[];
85
+ }, {
86
+ exportName: AutomationAppUiFoundationComponentName;
87
+ category: ComponentCategory;
88
+ summary: string;
89
+ nativeElement: string | null;
90
+ props: readonly CatalogPropFor<AutomationAppSectionProps>[];
91
+ variants: {};
92
+ accessibility: readonly string[];
93
+ }, {
94
+ exportName: AutomationAppUiFoundationComponentName;
95
+ category: ComponentCategory;
96
+ summary: string;
97
+ nativeElement: string | null;
98
+ props: readonly CatalogPropFor<AutomationAppStackProps>[];
99
+ variants: {};
100
+ accessibility: readonly string[];
101
+ }, {
102
+ exportName: AutomationAppUiFoundationComponentName;
103
+ category: ComponentCategory;
104
+ summary: string;
105
+ nativeElement: string | null;
106
+ props: readonly CatalogPropFor<AutomationAppButtonProps>[];
107
+ variants: {};
108
+ accessibility: readonly string[];
109
+ }, {
110
+ exportName: AutomationAppUiFoundationComponentName;
111
+ category: ComponentCategory;
112
+ summary: string;
113
+ nativeElement: string | null;
114
+ props: readonly CatalogPropFor<AutomationAppFieldProps>[];
115
+ variants: {};
116
+ accessibility: readonly string[];
117
+ }, {
118
+ exportName: AutomationAppUiFoundationComponentName;
119
+ category: ComponentCategory;
120
+ summary: string;
121
+ nativeElement: string | null;
122
+ props: readonly CatalogPropFor<react.DetailedHTMLProps<react.InputHTMLAttributes<HTMLInputElement>, HTMLInputElement>>[];
123
+ variants: {};
124
+ accessibility: readonly string[];
125
+ }, {
126
+ exportName: AutomationAppUiFoundationComponentName;
127
+ category: ComponentCategory;
128
+ summary: string;
129
+ nativeElement: string | null;
130
+ props: readonly CatalogPropFor<AutomationAppSelectProps>[];
131
+ variants: {};
132
+ accessibility: readonly string[];
133
+ }, {
134
+ exportName: AutomationAppUiFoundationComponentName;
135
+ category: ComponentCategory;
136
+ summary: string;
137
+ nativeElement: string | null;
138
+ props: readonly CatalogPropFor<react.DetailedHTMLProps<react.TextareaHTMLAttributes<HTMLTextAreaElement>, HTMLTextAreaElement>>[];
139
+ variants: {};
140
+ accessibility: readonly string[];
141
+ }, {
142
+ exportName: AutomationAppUiFoundationComponentName;
143
+ category: ComponentCategory;
144
+ summary: string;
145
+ nativeElement: string | null;
146
+ props: readonly CatalogPropFor<AutomationAppCheckboxProps>[];
147
+ variants: {};
148
+ accessibility: readonly string[];
149
+ }, {
150
+ exportName: AutomationAppUiFoundationComponentName;
151
+ category: ComponentCategory;
152
+ summary: string;
153
+ nativeElement: string | null;
154
+ props: readonly CatalogPropFor<AutomationAppRadioGroupProps>[];
155
+ variants: {};
156
+ accessibility: readonly string[];
157
+ }, {
158
+ exportName: AutomationAppUiFoundationComponentName;
159
+ category: ComponentCategory;
160
+ summary: string;
161
+ nativeElement: string | null;
162
+ props: readonly CatalogPropFor<AutomationAppSwitchProps>[];
163
+ variants: {};
164
+ accessibility: readonly string[];
165
+ }, {
166
+ exportName: AutomationAppUiFoundationComponentName;
167
+ category: ComponentCategory;
168
+ summary: string;
169
+ nativeElement: string | null;
170
+ props: readonly CatalogPropFor<AutomationAppTabsProps>[];
171
+ variants: {};
172
+ accessibility: readonly string[];
173
+ }, {
174
+ exportName: AutomationAppUiFoundationComponentName;
175
+ category: ComponentCategory;
176
+ summary: string;
177
+ nativeElement: string | null;
178
+ props: readonly CatalogPropFor<AutomationAppDialogProps>[];
179
+ variants: {};
180
+ accessibility: readonly string[];
181
+ }, {
182
+ exportName: AutomationAppUiFoundationComponentName;
183
+ category: ComponentCategory;
184
+ summary: string;
185
+ nativeElement: string | null;
186
+ props: readonly CatalogPropFor<AutomationAppPopoverProps>[];
187
+ variants: {};
188
+ accessibility: readonly string[];
189
+ }, {
190
+ exportName: AutomationAppUiFoundationComponentName;
191
+ category: ComponentCategory;
192
+ summary: string;
193
+ nativeElement: string | null;
194
+ props: readonly CatalogPropFor<AutomationAppToastProps>[];
195
+ variants: {};
196
+ accessibility: readonly string[];
197
+ }, {
198
+ exportName: AutomationAppUiFoundationComponentName;
199
+ category: ComponentCategory;
200
+ summary: string;
201
+ nativeElement: string | null;
202
+ props: readonly CatalogPropFor<AutomationAppTooltipProps>[];
203
+ variants: {};
204
+ accessibility: readonly string[];
205
+ }, {
206
+ exportName: AutomationAppUiFoundationComponentName;
207
+ category: ComponentCategory;
208
+ summary: string;
209
+ nativeElement: string | null;
210
+ props: readonly CatalogPropFor<AutomationAppAlertProps>[];
211
+ variants: {};
212
+ accessibility: readonly string[];
213
+ }, {
214
+ exportName: AutomationAppUiFoundationComponentName;
215
+ category: ComponentCategory;
216
+ summary: string;
217
+ nativeElement: string | null;
218
+ props: readonly CatalogPropFor<AutomationAppStateProps>[];
219
+ variants: {};
220
+ accessibility: readonly string[];
221
+ }, {
222
+ exportName: AutomationAppUiFoundationComponentName;
223
+ category: ComponentCategory;
224
+ summary: string;
225
+ nativeElement: string | null;
226
+ props: readonly CatalogPropFor<AutomationAppErrorStateProps>[];
227
+ variants: {};
228
+ accessibility: readonly string[];
229
+ }, {
230
+ exportName: AutomationAppUiFoundationComponentName;
231
+ category: ComponentCategory;
232
+ summary: string;
233
+ nativeElement: string | null;
234
+ props: readonly CatalogPropFor<AutomationAppStateProps>[];
235
+ variants: {};
236
+ accessibility: readonly string[];
237
+ }, {
238
+ exportName: AutomationAppUiFoundationComponentName;
239
+ category: ComponentCategory;
240
+ summary: string;
241
+ nativeElement: string | null;
242
+ props: readonly CatalogPropFor<AutomationAppStatusProps>[];
243
+ variants: {};
244
+ accessibility: readonly string[];
245
+ }, {
246
+ exportName: AutomationAppUiFoundationComponentName;
247
+ category: ComponentCategory;
248
+ summary: string;
249
+ nativeElement: string | null;
250
+ props: readonly CatalogPropFor<AutomationAppBadgeProps>[];
251
+ variants: {};
252
+ accessibility: readonly string[];
253
+ }, {
254
+ exportName: AutomationAppUiFoundationComponentName;
255
+ category: ComponentCategory;
256
+ summary: string;
257
+ nativeElement: string | null;
258
+ props: readonly CatalogPropFor<react.DetailedHTMLProps<react.HTMLAttributes<HTMLDivElement>, HTMLDivElement>>[];
259
+ variants: {};
260
+ accessibility: readonly string[];
261
+ }, {
262
+ exportName: AutomationAppUiFoundationComponentName;
263
+ category: ComponentCategory;
264
+ summary: string;
265
+ nativeElement: string | null;
266
+ props: readonly CatalogPropFor<AutomationAppProgressProps>[];
267
+ variants: {};
268
+ accessibility: readonly string[];
269
+ }, {
270
+ exportName: AutomationAppUiFoundationComponentName;
271
+ category: ComponentCategory;
272
+ summary: string;
273
+ nativeElement: string | null;
274
+ props: readonly CatalogPropFor<react.DetailedHTMLProps<react.HTMLAttributes<HTMLHRElement>, HTMLHRElement>>[];
275
+ variants: {};
276
+ accessibility: readonly string[];
277
+ }, {
278
+ exportName: AutomationAppUiFoundationComponentName;
279
+ category: ComponentCategory;
280
+ summary: string;
281
+ nativeElement: string | null;
282
+ props: readonly CatalogPropFor<AutomationAppTableProps>[];
283
+ variants: {};
284
+ accessibility: readonly string[];
285
+ }];
286
+ readonly patterns: readonly [{
287
+ readonly id: "form-action";
288
+ readonly description: "A labeled form with inline validation and one primary action.";
289
+ readonly source: "<AutomationAppSection title=\"Create profile\"><AutomationAppStack><AutomationAppField label=\"Name\" error={error}><AutomationAppInput value={name} onChange={onNameChange} /></AutomationAppField><AutomationAppButton onClick={save}>Save</AutomationAppButton></AutomationAppStack></AutomationAppSection>";
290
+ }, {
291
+ readonly id: "collection";
292
+ readonly description: "A collection with loading, empty, error and populated branches.";
293
+ readonly source: "{loading ? <AutomationAppLoadingState title=\"Loading runs\" /> : error ? <AutomationAppErrorState title=\"Runs unavailable\" action={<AutomationAppButton onClick={retry}>Retry</AutomationAppButton>} /> : rows.length === 0 ? <AutomationAppEmptyState title=\"No runs yet\" /> : <AutomationAppTable caption=\"Recent runs\"><tbody>{rows.map(renderRow)}</tbody></AutomationAppTable>}";
294
+ }, {
295
+ readonly id: "detail-status";
296
+ readonly description: "A detail page with categorical metadata and live status.";
297
+ readonly source: "<AutomationAppLayout><AutomationAppHeader title={title} actions={<AutomationAppStatus intent={intent}>{status}</AutomationAppStatus>} /><AutomationAppSection title=\"Details\"><AutomationAppBadge>{category}</AutomationAppBadge>{content}</AutomationAppSection></AutomationAppLayout>";
298
+ }, {
299
+ readonly id: "confirmation";
300
+ readonly description: "An explicit confirmation for a consequential command.";
301
+ readonly source: "<AutomationAppDialog trigger={<AutomationAppButton variant=\"destructive\">Delete</AutomationAppButton>} title=\"Delete profile?\" description=\"Runs stop and this cannot be undone.\" footer={<><AutomationAppButton variant=\"secondary\">Cancel</AutomationAppButton><AutomationAppButton variant=\"destructive\" onClick={confirm}>Delete</AutomationAppButton></>}>{detail}</AutomationAppDialog>";
302
+ }];
303
+ };
304
+
305
+ export { AUTOMATION_APP_UI_FOUNDATION_CATALOG, type AutomationAppUiFoundationCatalogV1, type AutomationAppUiFoundationComponentName, type AutomationAppUiFoundationTokenName };
@@ -0,0 +1 @@
1
+ var r={name:"@ablehi/automation-app-ui",version:"0.2.0",description:"Iframe-native public UI Foundation for Ablehi Automation Apps.",license:"UNLICENSED",private:!1,type:"module",main:"dist/index.js",types:"dist/index.d.ts",exports:{".":{types:"./dist/index.d.ts",import:"./dist/index.js"},"./styles.css":"./dist/styles.css","./catalog":{types:"./dist/catalog.d.ts",import:"./dist/catalog.js"},"./package.json":"./package.json"},files:["dist"],sideEffects:["./dist/styles.css"],publishConfig:{access:"public",registry:"https://registry.npmjs.org/"},scripts:{build:"tsup && esbuild styles.css --bundle --minify --outfile=dist/styles.css",typecheck:"tsc --noEmit -p tsconfig.json",lint:"eslint src --ext .ts,.tsx",test:"vitest run",check:"pnpm build && pnpm typecheck && pnpm lint && pnpm test"},dependencies:{"@ablehi/automation-app-host-bridge":"0.2.0","@base-ui/react":"1.6.0","class-variance-authority":"0.7.1",clsx:"2.1.1","lucide-react":"1.16.0","tailwind-merge":"3.6.0"},peerDependencies:{react:"19.2.4","react-dom":"19.2.4"},devDependencies:{"@ablehi/server-api-contract":"0.6.0","@types/react":"19.2.14","@types/react-dom":"19.2.3",esbuild:"0.27.7",eslint:"9.39.2",jsdom:"27.4.0",react:"19.2.4","react-dom":"19.2.4",tsup:"8.5.1",typescript:"5.9.3",vitest:"4.1.7"}};var t=(o,a,i,n)=>({name:o,type:a,required:i,description:n}),e=()=>(o,a,i,n,p,s,u=[])=>({exportName:o,category:a,summary:i,nativeElement:n,props:p,variants:s??{},accessibility:u}),c=[["--aaui-background","Frame and page background"],["--aaui-foreground","Primary text and icon color"],["--aaui-card","Section surface"],["--aaui-popover","Floating overlay surface"],["--aaui-muted","Subdued surface"],["--aaui-muted-foreground","Secondary text"],["--aaui-border","Structural border"],["--aaui-input","Input border and surface"],["--aaui-primary","Primary action"],["--aaui-primary-foreground","Text on primary action"],["--aaui-secondary","Secondary action surface"],["--aaui-secondary-foreground","Text on secondary action"],["--aaui-accent","Interactive highlight"],["--aaui-destructive","Destructive or error emphasis"],["--aaui-success","Success emphasis"],["--aaui-warning","Warning emphasis"],["--aaui-info","Informational emphasis"],["--aaui-ring","Keyboard focus ring"],["--aaui-radius","Foundation corner radius"],["--aaui-shadow","Floating-surface shadow"],["--aaui-font-sans","Frame sans-serif font stack"],["--aaui-space-1","4px spacing step"],["--aaui-space-2","8px spacing step"],["--aaui-space-3","12px spacing step"],["--aaui-space-4","16px spacing step"],["--aaui-space-6","24px spacing step"],["--aaui-space-8","32px spacing step"]],d=[e()("AutomationAppGrid","layout","Responsive grid for peer surfaces.","div",[t("columns","1 | 2 | 3 | 4",!1,"Maximum desktop column count."),t("gap",'"sm" | "md" | "lg"',!1,"Foundation gap step.")],{columns:["1","2","3","4"],gap:["sm","md","lg"]}),e()("AutomationAppHeader","layout","Page heading with description and actions.","header",[t("title","ReactNode",!0,"Unique page title."),t("description","ReactNode",!1,"Supporting page copy."),t("actions","ReactNode",!1,"Primary page actions.")],{},["Keep one h1-level header per mounted mode."]),e()("AutomationAppLayout","layout","Top-level frame layout.","main",[],{},["Use once as the mode's main landmark."]),e()("AutomationAppSection","layout","Titled card-like content surface.","section",[t("title","ReactNode",!1,"Section heading."),t("description","ReactNode",!1,"Section description."),t("actions","ReactNode",!1,"Section-scoped actions.")],{},["Use a title when the section needs a navigable heading."]),e()("AutomationAppStack","layout","Horizontal or vertical flex stack.","div",[t("direction",'"horizontal" | "vertical"',!1,"Stack direction."),t("align",'"start" | "center" | "end" | "stretch"',!1,"Cross-axis alignment."),t("gap",'"sm" | "md" | "lg"',!1,"Foundation gap step.")],{direction:["horizontal","vertical"],align:["start","center","end","stretch"],gap:["sm","md","lg"]}),e()("AutomationAppButton","form","Accessible action button.","button",[t("variant",'"primary" | "secondary" | "ghost" | "destructive"',!1,"Action hierarchy."),t("size",'"sm" | "md" | "lg"',!1,"Control size."),t("disabled","boolean",!1,"Prevents activation.")],{variant:["primary","secondary","ghost","destructive"],size:["sm","md","lg"]},["Buttons with icons only require an aria-label."]),e()("AutomationAppField","form","Label, description and error wrapper for one control.","div",[t("label","ReactNode",!0,"Visible control label."),t("children","ReactElement",!0,"Single form control."),t("description","ReactNode",!1,"Helpful input guidance."),t("error","ReactNode",!1,"Validation message announced as an alert."),t("required","boolean",!1,"Marks and wires a required control.")],{},["Do not use placeholder text as the only label."]),e()("AutomationAppInput","form","Single-line text input.","input",[t("type","HTMLInputTypeAttribute",!1,"Native input type."),t("value","string | number",!1,"Controlled value.")]),e()("AutomationAppSelect","form","Portal-safe single-value select.",null,[t("options","readonly AutomationAppSelectOption[]",!0,"Closed option inventory."),t("value","string | null",!1,"Controlled selection."),t("onValueChange","(value: string | null) => void",!1,"Selection callback."),t("placeholder","ReactNode",!1,"No-selection prompt.")],{},["Provide a visible AutomationAppField label."]),e()("AutomationAppTextarea","form","Multi-line text input.","textarea",[t("value","string",!1,"Controlled value."),t("rows","number",!1,"Visible line count.")]),e()("AutomationAppCheckbox","form","Native boolean checkbox.","input",[t("checked","boolean",!1,"Controlled checked state."),t("onChange","ChangeEventHandler<HTMLInputElement>",!1,"Change callback.")],{},["Pair with visible label text through AutomationAppField or label."]),e()("AutomationAppRadioGroup","form","Single selection from visible radio options.","fieldset",[t("legend","ReactNode",!0,"Visible group label."),t("name","string",!0,"Native radio group name."),t("options","readonly AutomationAppRadioOption[]",!0,"Closed option inventory."),t("value","string",!1,"Controlled selection."),t("onValueChange","(value: string) => void",!1,"Selection callback.")],{},["The legend must describe the decision represented by the options."]),e()("AutomationAppSwitch","form","Immediate boolean setting switch.","button",[t("label","ReactNode",!0,"Visible setting label."),t("checked","boolean",!1,"Controlled checked state."),t("onCheckedChange","(checked: boolean) => void",!1,"State callback.")],{},["Use for immediate settings, not form submission consent."]),e()("AutomationAppTabs","navigation","Keyboard-operable local view tabs.",null,[t("label","string",!0,"Accessible tab-list label."),t("tabs","readonly AutomationAppTabItem[]",!0,"Tab and panel inventory."),t("value","string",!1,"Controlled tab id."),t("onValueChange","(value: string) => void",!1,"Tab callback.")],{},["Tab ids must be unique and stable."]),e()("AutomationAppDialog","feedback","Modal confirmation or focused task overlay.",null,[t("trigger","ReactElement",!0,"Element that opens the dialog."),t("title","ReactNode",!0,"Dialog title."),t("description","ReactNode",!1,"Dialog purpose and consequence."),t("footer","ReactNode",!1,"Confirmation and cancel actions.")],{},["Destructive confirmation must state the consequence and offer cancel."]),e()("AutomationAppPopover","feedback","Non-modal contextual overlay.",null,[t("trigger","ReactElement",!0,"Element that opens the popover."),t("title","ReactNode",!1,"Popover title."),t("description","ReactNode",!1,"Popover description.")]),e()("AutomationAppToast","feedback","Transient portal-safe notification.","div",[t("title","ReactNode",!0,"Concise outcome."),t("description","ReactNode",!1,"Supporting detail."),t("intent",'"info" | "success" | "warning" | "error"',!1,"Semantic tone.")],{intent:["info","success","warning","error"]},["Do not use a toast as the only record of a blocking error."]),e()("AutomationAppTooltip","feedback","Short supplemental label or explanation.",null,[t("children","ReactElement",!0,"Focusable trigger."),t("content","ReactNode",!0,"Supplemental text."),t("side",'"bottom" | "left" | "right" | "top"',!1,"Preferred placement.")],{},["Never hide required instructions only in a tooltip."]),e()("AutomationAppAlert","feedback","Persistent inline feedback.","div",[t("children","ReactNode",!0,"Alert details."),t("title","ReactNode",!1,"Concise feedback title."),t("intent",'"info" | "success" | "warning" | "error"',!1,"Semantic tone."),t("action","ReactNode",!1,"Recovery action.")],{intent:["info","success","warning","error"]}),e()("AutomationAppEmptyState","status","Full-surface no-content state.","div",[t("title","ReactNode",!0,"State summary."),t("description","ReactNode",!1,"Why no content exists."),t("action","ReactNode",!1,"Available next action.")]),e()("AutomationAppErrorState","status","Full-surface failed state.","div",[t("title","ReactNode",!0,"Failure summary."),t("description","ReactNode",!1,"Safe failure detail."),t("action","ReactNode",!1,"Recovery action."),t("severity",'"error" | "warning"',!1,"Failure severity.")],{severity:["error","warning"]}),e()("AutomationAppLoadingState","status","Full-surface loading state.","div",[t("title","ReactNode",!0,"Current activity."),t("description","ReactNode",!1,"Expected next state.")],{},["Use a specific loading title instead of an unlabeled spinner."]),e()("AutomationAppStatus","status","Live workflow or application state label.","span",[t("intent",'"neutral" | "info" | "success" | "warning" | "error"',!1,"Semantic state tone.")],{intent:["neutral","info","success","warning","error"]},["Include state text; color is supplemental."]),e()("AutomationAppBadge","status","Non-live categorical label.","span",[t("intent",'"neutral" | "info" | "success" | "warning" | "error"',!1,"Category tone.")],{intent:["neutral","info","success","warning","error"]}),e()("AutomationAppSkeleton","status","Decorative content placeholder.","div",[],{},["Pair with nearby loading text or a loading landmark."]),e()("AutomationAppProgress","status","Labeled determinate or indeterminate progress.","progress",[t("label","string",!0,"Visible progress label."),t("value","number",!1,"Omit for indeterminate progress."),t("max","number",!1,"Maximum progress value.")]),e()("AutomationAppSeparator","data-display","Semantic content separator.","hr",[]),e()("AutomationAppTable","data-display","Responsive semantic table shell with horizontal overflow.","table",[t("caption","ReactNode",!1,"Visible table description."),t("captionPosition",'"bottom" | "top"',!1,"Caption placement."),t("children","ReactNode",!1,"Semantic thead/tbody/tr/th/td content.")],{},["Use scope on header cells and a caption for unfamiliar data."])],m=[{id:"form-action",description:"A labeled form with inline validation and one primary action.",source:'<AutomationAppSection title="Create profile"><AutomationAppStack><AutomationAppField label="Name" error={error}><AutomationAppInput value={name} onChange={onNameChange} /></AutomationAppField><AutomationAppButton onClick={save}>Save</AutomationAppButton></AutomationAppStack></AutomationAppSection>'},{id:"collection",description:"A collection with loading, empty, error and populated branches.",source:'{loading ? <AutomationAppLoadingState title="Loading runs" /> : error ? <AutomationAppErrorState title="Runs unavailable" action={<AutomationAppButton onClick={retry}>Retry</AutomationAppButton>} /> : rows.length === 0 ? <AutomationAppEmptyState title="No runs yet" /> : <AutomationAppTable caption="Recent runs"><tbody>{rows.map(renderRow)}</tbody></AutomationAppTable>}'},{id:"detail-status",description:"A detail page with categorical metadata and live status.",source:'<AutomationAppLayout><AutomationAppHeader title={title} actions={<AutomationAppStatus intent={intent}>{status}</AutomationAppStatus>} /><AutomationAppSection title="Details"><AutomationAppBadge>{category}</AutomationAppBadge>{content}</AutomationAppSection></AutomationAppLayout>'},{id:"confirmation",description:"An explicit confirmation for a consequential command.",source:'<AutomationAppDialog trigger={<AutomationAppButton variant="destructive">Delete</AutomationAppButton>} title="Delete profile?" description="Runs stop and this cannot be undone." footer={<><AutomationAppButton variant="secondary">Cancel</AutomationAppButton><AutomationAppButton variant="destructive" onClick={confirm}>Delete</AutomationAppButton></>}>{detail}</AutomationAppDialog>'}],f={schemaVersion:"automation.app-ui-foundation-catalog.v1",packageName:"@ablehi/automation-app-ui",packageVersion:r.version,styleEntry:"@ablehi/automation-app-ui/styles.css",runtimeExports:["AutomationAppPortalProvider","useAutomationAppOverlayRoot"],tokens:c.map(([o,a])=>({name:o,role:a})),components:d,patterns:m};export{f as AUTOMATION_APP_UI_FOUNDATION_CATALOG};
@@ -0,0 +1,208 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import * as class_variance_authority_types from 'class-variance-authority/types';
3
+ import { VariantProps } from 'class-variance-authority';
4
+ import * as react from 'react';
5
+ import { ComponentProps, ReactNode, ReactElement } from 'react';
6
+ import { Button } from '@base-ui/react/button';
7
+
8
+ declare const stackVariants: (props?: ({
9
+ align?: "center" | "start" | "end" | "stretch" | null | undefined;
10
+ direction?: "horizontal" | "vertical" | null | undefined;
11
+ gap?: "sm" | "md" | "lg" | null | undefined;
12
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
13
+ declare const gridVariants: (props?: ({
14
+ columns?: 2 | 1 | 3 | 4 | null | undefined;
15
+ gap?: "sm" | "md" | "lg" | null | undefined;
16
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
17
+ type AutomationAppLayoutProps = ComponentProps<"main">;
18
+ declare function AutomationAppLayout({ className, ...props }: AutomationAppLayoutProps): react_jsx_runtime.JSX.Element;
19
+ interface AutomationAppHeaderProps extends Omit<ComponentProps<"header">, "title"> {
20
+ actions?: ReactNode;
21
+ description?: ReactNode;
22
+ title: ReactNode;
23
+ }
24
+ declare function AutomationAppHeader({ actions, children, className, description, title, ...props }: AutomationAppHeaderProps): react_jsx_runtime.JSX.Element;
25
+ interface AutomationAppSectionProps extends Omit<ComponentProps<"section">, "title"> {
26
+ actions?: ReactNode;
27
+ description?: ReactNode;
28
+ title?: ReactNode;
29
+ }
30
+ declare function AutomationAppSection({ actions, children, className, description, title, ...props }: AutomationAppSectionProps): react_jsx_runtime.JSX.Element;
31
+ type AutomationAppStackProps = ComponentProps<"div"> & VariantProps<typeof stackVariants>;
32
+ declare function AutomationAppStack({ align, className, direction, gap, ...props }: AutomationAppStackProps): react_jsx_runtime.JSX.Element;
33
+ type AutomationAppGridProps = ComponentProps<"div"> & VariantProps<typeof gridVariants>;
34
+ declare function AutomationAppGrid({ className, columns, gap, ...props }: AutomationAppGridProps): react_jsx_runtime.JSX.Element;
35
+
36
+ declare const buttonVariants: (props?: ({
37
+ size?: "sm" | "md" | "lg" | null | undefined;
38
+ variant?: "primary" | "secondary" | "ghost" | "destructive" | null | undefined;
39
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
40
+ interface AutomationAppFieldProps extends ComponentProps<"div"> {
41
+ children: ReactElement;
42
+ description?: ReactNode;
43
+ disabled?: boolean;
44
+ error?: ReactNode;
45
+ label: ReactNode;
46
+ required?: boolean;
47
+ }
48
+ declare function AutomationAppField({ children, className, description, disabled, error, label, required, ...props }: AutomationAppFieldProps): react_jsx_runtime.JSX.Element;
49
+ type AutomationAppButtonProps = Button.Props & VariantProps<typeof buttonVariants>;
50
+ declare function AutomationAppButton({ className, size, variant, ...props }: AutomationAppButtonProps): react_jsx_runtime.JSX.Element;
51
+ type AutomationAppInputProps = ComponentProps<"input">;
52
+ declare function AutomationAppInput({ className, ...props }: AutomationAppInputProps): react_jsx_runtime.JSX.Element;
53
+ type AutomationAppTextareaProps = ComponentProps<"textarea">;
54
+ declare function AutomationAppTextarea({ className, ...props }: AutomationAppTextareaProps): react_jsx_runtime.JSX.Element;
55
+ interface AutomationAppSelectOption {
56
+ disabled?: boolean;
57
+ label: ReactNode;
58
+ textValue?: string;
59
+ value: string;
60
+ }
61
+ interface AutomationAppSelectProps {
62
+ "aria-describedby"?: string;
63
+ "aria-invalid"?: boolean | "false" | "true";
64
+ className?: string;
65
+ defaultValue?: string | null;
66
+ disabled?: boolean;
67
+ id?: string;
68
+ name?: string;
69
+ onValueChange?: (value: string | null) => void;
70
+ options: readonly AutomationAppSelectOption[];
71
+ placeholder?: ReactNode;
72
+ required?: boolean;
73
+ value?: string | null;
74
+ }
75
+ type AutomationAppCheckboxProps = Omit<ComponentProps<"input">, "type">;
76
+ declare function AutomationAppCheckbox({ className, ...props }: AutomationAppCheckboxProps): react_jsx_runtime.JSX.Element;
77
+ interface AutomationAppRadioOption {
78
+ disabled?: boolean;
79
+ label: ReactNode;
80
+ value: string;
81
+ }
82
+ interface AutomationAppRadioGroupProps extends Omit<ComponentProps<"fieldset">, "defaultValue" | "onChange"> {
83
+ defaultValue?: string;
84
+ legend: ReactNode;
85
+ name: string;
86
+ onValueChange?: (value: string) => void;
87
+ options: readonly AutomationAppRadioOption[];
88
+ value?: string;
89
+ }
90
+ declare function AutomationAppRadioGroup({ className, defaultValue, disabled, legend, name, onValueChange, options, value, ...props }: AutomationAppRadioGroupProps): react_jsx_runtime.JSX.Element;
91
+ interface AutomationAppSwitchProps extends Omit<ComponentProps<"button">, "onChange" | "role" | "type" | "value"> {
92
+ checked?: boolean;
93
+ defaultChecked?: boolean;
94
+ label: ReactNode;
95
+ onCheckedChange?: (checked: boolean) => void;
96
+ }
97
+ declare function AutomationAppSwitch({ checked, className, defaultChecked, disabled, label, onCheckedChange, onClick, ...props }: AutomationAppSwitchProps): react_jsx_runtime.JSX.Element;
98
+ declare function AutomationAppSelect({ className, defaultValue, disabled, id, name, onValueChange, options, placeholder, required, value, ...triggerProps }: AutomationAppSelectProps): react_jsx_runtime.JSX.Element;
99
+
100
+ interface AutomationAppDialogProps {
101
+ children: ReactNode;
102
+ className?: string;
103
+ closeLabel?: string;
104
+ defaultOpen?: boolean;
105
+ description?: ReactNode;
106
+ footer?: ReactNode;
107
+ onOpenChange?: (open: boolean) => void;
108
+ open?: boolean;
109
+ title: ReactNode;
110
+ trigger: ReactElement;
111
+ }
112
+ declare function AutomationAppDialog({ children, className, closeLabel, defaultOpen, description, footer, onOpenChange, open, title, trigger, }: AutomationAppDialogProps): react_jsx_runtime.JSX.Element;
113
+ interface AutomationAppPopoverProps {
114
+ children: ReactNode;
115
+ className?: string;
116
+ defaultOpen?: boolean;
117
+ description?: ReactNode;
118
+ onOpenChange?: (open: boolean) => void;
119
+ open?: boolean;
120
+ title?: ReactNode;
121
+ trigger: ReactElement;
122
+ }
123
+ declare function AutomationAppPopover({ children, className, defaultOpen, description, onOpenChange, open, title, trigger, }: AutomationAppPopoverProps): react_jsx_runtime.JSX.Element;
124
+ interface AutomationAppTooltipProps {
125
+ children: ReactElement;
126
+ content: ReactNode;
127
+ delay?: number;
128
+ disabled?: boolean;
129
+ side?: "bottom" | "left" | "right" | "top";
130
+ }
131
+ declare function AutomationAppTooltip({ children, content, delay, disabled, side, }: AutomationAppTooltipProps): react_jsx_runtime.JSX.Element;
132
+ declare const toastVariants: (props?: ({
133
+ intent?: "error" | "info" | "success" | "warning" | null | undefined;
134
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
135
+ declare const alertVariants: (props?: ({
136
+ intent?: "error" | "info" | "success" | "warning" | null | undefined;
137
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
138
+ interface AutomationAppAlertProps extends VariantProps<typeof alertVariants> {
139
+ action?: ReactNode;
140
+ children: ReactNode;
141
+ className?: string;
142
+ title?: ReactNode;
143
+ }
144
+ declare function AutomationAppAlert({ action, children, className, intent, title, }: AutomationAppAlertProps): react_jsx_runtime.JSX.Element;
145
+ interface AutomationAppToastProps extends VariantProps<typeof toastVariants> {
146
+ action?: ReactNode;
147
+ className?: string;
148
+ closeLabel?: string;
149
+ description?: ReactNode;
150
+ onClose?: () => void;
151
+ open?: boolean;
152
+ title: ReactNode;
153
+ }
154
+ declare function AutomationAppToast({ action, className, closeLabel, description, intent, onClose, open, title, }: AutomationAppToastProps): react.ReactPortal | null;
155
+
156
+ declare const statusVariants: (props?: ({
157
+ intent?: "error" | "info" | "success" | "warning" | "neutral" | null | undefined;
158
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
159
+ declare const badgeVariants: (props?: ({
160
+ intent?: "error" | "info" | "success" | "warning" | "neutral" | null | undefined;
161
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
162
+ type AutomationAppStatusProps = ComponentProps<"span"> & VariantProps<typeof statusVariants>;
163
+ declare function AutomationAppStatus({ className, intent, ...props }: AutomationAppStatusProps): react_jsx_runtime.JSX.Element;
164
+ type AutomationAppBadgeProps = ComponentProps<"span"> & VariantProps<typeof badgeVariants>;
165
+ declare function AutomationAppBadge({ className, intent, ...props }: AutomationAppBadgeProps): react_jsx_runtime.JSX.Element;
166
+ type AutomationAppSkeletonProps = ComponentProps<"div">;
167
+ declare function AutomationAppSkeleton({ className, ...props }: AutomationAppSkeletonProps): react_jsx_runtime.JSX.Element;
168
+ interface AutomationAppProgressProps extends Omit<ComponentProps<"progress">, "children"> {
169
+ label: string;
170
+ }
171
+ declare function AutomationAppProgress({ className, label, max, ...props }: AutomationAppProgressProps): react_jsx_runtime.JSX.Element;
172
+ interface AutomationAppStateProps extends Omit<ComponentProps<"div">, "title"> {
173
+ action?: ReactNode;
174
+ description?: ReactNode;
175
+ title: ReactNode;
176
+ }
177
+ declare function AutomationAppLoadingState({ "aria-live": ariaLive, title, ...props }: AutomationAppStateProps): react_jsx_runtime.JSX.Element;
178
+ declare function AutomationAppEmptyState(props: AutomationAppStateProps): react_jsx_runtime.JSX.Element;
179
+ interface AutomationAppErrorStateProps extends AutomationAppStateProps {
180
+ severity?: "error" | "warning";
181
+ }
182
+ declare function AutomationAppErrorState({ severity, ...props }: AutomationAppErrorStateProps): react_jsx_runtime.JSX.Element;
183
+
184
+ interface AutomationAppTabItem {
185
+ disabled?: boolean;
186
+ id: string;
187
+ label: ReactNode;
188
+ panel: ReactNode;
189
+ }
190
+ interface AutomationAppTabsProps extends Omit<ComponentProps<"div">, "onChange"> {
191
+ defaultValue?: string;
192
+ label: string;
193
+ onValueChange?: (value: string) => void;
194
+ tabs: readonly AutomationAppTabItem[];
195
+ value?: string;
196
+ }
197
+ declare function AutomationAppTabs({ className, defaultValue, label, onValueChange, tabs, value, ...props }: AutomationAppTabsProps): react_jsx_runtime.JSX.Element;
198
+
199
+ type AutomationAppSeparatorProps = ComponentProps<"hr">;
200
+ declare function AutomationAppSeparator({ className, ...props }: AutomationAppSeparatorProps): react_jsx_runtime.JSX.Element;
201
+ interface AutomationAppTableProps extends ComponentProps<"table"> {
202
+ caption?: ReactNode;
203
+ captionPosition?: "bottom" | "top";
204
+ containerClassName?: string;
205
+ }
206
+ declare function AutomationAppTable({ caption, captionPosition, children, className, containerClassName, ...props }: AutomationAppTableProps): react_jsx_runtime.JSX.Element;
207
+
208
+ export { type AutomationAppGridProps as A, AutomationAppEmptyState as B, AutomationAppErrorState as C, AutomationAppField as D, AutomationAppGrid as E, AutomationAppHeader as F, AutomationAppInput as G, AutomationAppLayout as H, AutomationAppLoadingState as I, AutomationAppPopover as J, AutomationAppProgress as K, AutomationAppRadioGroup as L, AutomationAppSection as M, AutomationAppSelect as N, AutomationAppSeparator as O, AutomationAppSkeleton as P, AutomationAppStack as Q, AutomationAppStatus as R, AutomationAppSwitch as S, AutomationAppTable as T, AutomationAppTabs as U, AutomationAppTextarea as V, AutomationAppToast as W, AutomationAppTooltip as X, type AutomationAppHeaderProps as a, type AutomationAppSectionProps as b, type AutomationAppStackProps as c, type AutomationAppButtonProps as d, type AutomationAppFieldProps as e, type AutomationAppSelectProps as f, type AutomationAppCheckboxProps as g, type AutomationAppRadioGroupProps as h, type AutomationAppSwitchProps as i, type AutomationAppTabsProps as j, type AutomationAppDialogProps as k, type AutomationAppPopoverProps as l, type AutomationAppToastProps as m, type AutomationAppTooltipProps as n, type AutomationAppAlertProps as o, type AutomationAppStateProps as p, type AutomationAppErrorStateProps as q, type AutomationAppStatusProps as r, type AutomationAppBadgeProps as s, type AutomationAppProgressProps as t, type AutomationAppTableProps as u, AutomationAppAlert as v, AutomationAppBadge as w, AutomationAppButton as x, AutomationAppCheckbox as y, AutomationAppDialog as z };
package/dist/index.d.ts CHANGED
@@ -1,9 +1,9 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
- import * as react from 'react';
3
- import { ReactNode, ComponentProps, ReactElement } from 'react';
4
- import * as class_variance_authority_types from 'class-variance-authority/types';
5
- import { VariantProps } from 'class-variance-authority';
6
- import { Button } from '@base-ui/react/button';
2
+ import { ReactNode } from 'react';
3
+ export { v as AutomationAppAlert, w as AutomationAppBadge, x as AutomationAppButton, y as AutomationAppCheckbox, z as AutomationAppDialog, B as AutomationAppEmptyState, C as AutomationAppErrorState, D as AutomationAppField, E as AutomationAppGrid, F as AutomationAppHeader, G as AutomationAppInput, H as AutomationAppLayout, I as AutomationAppLoadingState, J as AutomationAppPopover, K as AutomationAppProgress, L as AutomationAppRadioGroup, M as AutomationAppSection, N as AutomationAppSelect, O as AutomationAppSeparator, P as AutomationAppSkeleton, Q as AutomationAppStack, R as AutomationAppStatus, S as AutomationAppSwitch, T as AutomationAppTable, U as AutomationAppTabs, V as AutomationAppTextarea, W as AutomationAppToast, X as AutomationAppTooltip } from './data-display-CmUtl6XB.js';
4
+ import 'class-variance-authority/types';
5
+ import 'class-variance-authority';
6
+ import '@base-ui/react/button';
7
7
 
8
8
  interface AutomationAppPortalProviderProps {
9
9
  children: ReactNode;
@@ -12,129 +12,4 @@ interface AutomationAppPortalProviderProps {
12
12
  declare function AutomationAppPortalProvider({ children, overlayRoot, }: AutomationAppPortalProviderProps): react_jsx_runtime.JSX.Element;
13
13
  declare function useAutomationAppOverlayRoot(): HTMLElement;
14
14
 
15
- declare const stackVariants: (props?: ({
16
- align?: "start" | "center" | "end" | "stretch" | null | undefined;
17
- direction?: "horizontal" | "vertical" | null | undefined;
18
- gap?: "sm" | "md" | "lg" | null | undefined;
19
- } & class_variance_authority_types.ClassProp) | undefined) => string;
20
- declare const gridVariants: (props?: ({
21
- columns?: 1 | 2 | 3 | 4 | null | undefined;
22
- gap?: "sm" | "md" | "lg" | null | undefined;
23
- } & class_variance_authority_types.ClassProp) | undefined) => string;
24
- declare function AutomationAppLayout({ className, ...props }: ComponentProps<"main">): react_jsx_runtime.JSX.Element;
25
- interface AutomationAppHeaderProps extends Omit<ComponentProps<"header">, "title"> {
26
- actions?: ReactNode;
27
- description?: ReactNode;
28
- title: ReactNode;
29
- }
30
- declare function AutomationAppHeader({ actions, children, className, description, title, ...props }: AutomationAppHeaderProps): react_jsx_runtime.JSX.Element;
31
- interface AutomationAppSectionProps extends Omit<ComponentProps<"section">, "title"> {
32
- actions?: ReactNode;
33
- description?: ReactNode;
34
- title?: ReactNode;
35
- }
36
- declare function AutomationAppSection({ actions, children, className, description, title, ...props }: AutomationAppSectionProps): react_jsx_runtime.JSX.Element;
37
- declare function AutomationAppStack({ align, className, direction, gap, ...props }: ComponentProps<"div"> & VariantProps<typeof stackVariants>): react_jsx_runtime.JSX.Element;
38
- declare function AutomationAppGrid({ className, columns, gap, ...props }: ComponentProps<"div"> & VariantProps<typeof gridVariants>): react_jsx_runtime.JSX.Element;
39
-
40
- declare const buttonVariants: (props?: ({
41
- size?: "sm" | "md" | "lg" | null | undefined;
42
- variant?: "primary" | "secondary" | "ghost" | "destructive" | null | undefined;
43
- } & class_variance_authority_types.ClassProp) | undefined) => string;
44
- interface AutomationAppFieldProps extends ComponentProps<"div"> {
45
- children: ReactElement;
46
- description?: ReactNode;
47
- disabled?: boolean;
48
- error?: ReactNode;
49
- label: ReactNode;
50
- required?: boolean;
51
- }
52
- declare function AutomationAppField({ children, className, description, disabled, error, label, required, ...props }: AutomationAppFieldProps): react_jsx_runtime.JSX.Element;
53
- declare function AutomationAppButton({ className, size, variant, ...props }: Button.Props & VariantProps<typeof buttonVariants>): react_jsx_runtime.JSX.Element;
54
- declare function AutomationAppInput({ className, ...props }: ComponentProps<"input">): react_jsx_runtime.JSX.Element;
55
- declare function AutomationAppTextarea({ className, ...props }: ComponentProps<"textarea">): react_jsx_runtime.JSX.Element;
56
- interface AutomationAppSelectOption {
57
- disabled?: boolean;
58
- label: ReactNode;
59
- textValue?: string;
60
- value: string;
61
- }
62
- interface AutomationAppSelectProps {
63
- "aria-describedby"?: string;
64
- "aria-invalid"?: boolean | "false" | "true";
65
- className?: string;
66
- defaultValue?: string | null;
67
- disabled?: boolean;
68
- id?: string;
69
- name?: string;
70
- onValueChange?: (value: string | null) => void;
71
- options: readonly AutomationAppSelectOption[];
72
- placeholder?: ReactNode;
73
- required?: boolean;
74
- value?: string | null;
75
- }
76
- declare function AutomationAppSelect({ className, defaultValue, disabled, id, name, onValueChange, options, placeholder, required, value, ...triggerProps }: AutomationAppSelectProps): react_jsx_runtime.JSX.Element;
77
-
78
- interface AutomationAppDialogProps {
79
- children: ReactNode;
80
- className?: string;
81
- closeLabel?: string;
82
- defaultOpen?: boolean;
83
- description?: ReactNode;
84
- footer?: ReactNode;
85
- onOpenChange?: (open: boolean) => void;
86
- open?: boolean;
87
- title: ReactNode;
88
- trigger: ReactElement;
89
- }
90
- declare function AutomationAppDialog({ children, className, closeLabel, defaultOpen, description, footer, onOpenChange, open, title, trigger, }: AutomationAppDialogProps): react_jsx_runtime.JSX.Element;
91
- interface AutomationAppPopoverProps {
92
- children: ReactNode;
93
- className?: string;
94
- defaultOpen?: boolean;
95
- description?: ReactNode;
96
- onOpenChange?: (open: boolean) => void;
97
- open?: boolean;
98
- title?: ReactNode;
99
- trigger: ReactElement;
100
- }
101
- declare function AutomationAppPopover({ children, className, defaultOpen, description, onOpenChange, open, title, trigger, }: AutomationAppPopoverProps): react_jsx_runtime.JSX.Element;
102
- interface AutomationAppTooltipProps {
103
- children: ReactElement;
104
- content: ReactNode;
105
- delay?: number;
106
- disabled?: boolean;
107
- side?: "bottom" | "left" | "right" | "top";
108
- }
109
- declare function AutomationAppTooltip({ children, content, delay, disabled, side, }: AutomationAppTooltipProps): react_jsx_runtime.JSX.Element;
110
- declare const toastVariants: (props?: ({
111
- intent?: "error" | "info" | "success" | "warning" | null | undefined;
112
- } & class_variance_authority_types.ClassProp) | undefined) => string;
113
- interface AutomationAppToastProps extends VariantProps<typeof toastVariants> {
114
- action?: ReactNode;
115
- className?: string;
116
- closeLabel?: string;
117
- description?: ReactNode;
118
- onClose?: () => void;
119
- open?: boolean;
120
- title: ReactNode;
121
- }
122
- declare function AutomationAppToast({ action, className, closeLabel, description, intent, onClose, open, title, }: AutomationAppToastProps): react.ReactPortal | null;
123
-
124
- declare const statusVariants: (props?: ({
125
- intent?: "error" | "info" | "success" | "warning" | "neutral" | null | undefined;
126
- } & class_variance_authority_types.ClassProp) | undefined) => string;
127
- declare function AutomationAppStatus({ className, intent, ...props }: ComponentProps<"span"> & VariantProps<typeof statusVariants>): react_jsx_runtime.JSX.Element;
128
- interface AutomationAppStateProps extends Omit<ComponentProps<"div">, "title"> {
129
- action?: ReactNode;
130
- description?: ReactNode;
131
- title: ReactNode;
132
- }
133
- declare function AutomationAppLoadingState({ "aria-live": ariaLive, title, ...props }: AutomationAppStateProps): react_jsx_runtime.JSX.Element;
134
- declare function AutomationAppEmptyState(props: AutomationAppStateProps): react_jsx_runtime.JSX.Element;
135
- interface AutomationAppErrorStateProps extends AutomationAppStateProps {
136
- severity?: "error" | "warning";
137
- }
138
- declare function AutomationAppErrorState({ severity, ...props }: AutomationAppErrorStateProps): react_jsx_runtime.JSX.Element;
139
-
140
- export { AutomationAppButton, AutomationAppDialog, AutomationAppEmptyState, AutomationAppErrorState, AutomationAppField, AutomationAppGrid, AutomationAppHeader, AutomationAppInput, AutomationAppLayout, AutomationAppLoadingState, AutomationAppPopover, AutomationAppPortalProvider, AutomationAppSection, AutomationAppSelect, AutomationAppStack, AutomationAppStatus, AutomationAppTextarea, AutomationAppToast, AutomationAppTooltip, useAutomationAppOverlayRoot };
15
+ export { AutomationAppPortalProvider, useAutomationAppOverlayRoot };
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- import{Tooltip as D}from"@base-ui/react/tooltip";import{createContext as k,useContext as w}from"react";import{jsx as T}from"react/jsx-runtime";var I=k(null);function L({children:a,overlayRoot:t}){if(!t)throw new Error("AutomationAppPortalProvider requires an overlay root");return T(I.Provider,{value:t,children:T(D.Provider,{delay:400,children:a})})}function N(){let a=w(I);if(!a)throw new Error("AutomationAppPortalProvider is required");return a}import{cva as x}from"class-variance-authority";import{clsx as F}from"clsx";import{twMerge as B}from"tailwind-merge";function s(...a){return B(F(a))}import{jsx as f,jsxs as y}from"react/jsx-runtime";var H=x("aaui-stack",{variants:{align:{start:"aaui-stack--align-start",center:"aaui-stack--align-center",end:"aaui-stack--align-end",stretch:"aaui-stack--align-stretch"},direction:{horizontal:"aaui-stack--horizontal",vertical:"aaui-stack--vertical"},gap:{sm:"aaui-gap-sm",md:"aaui-gap-md",lg:"aaui-gap-lg"}},defaultVariants:{align:"stretch",direction:"vertical",gap:"md"}}),z=x("aaui-grid",{variants:{columns:{1:"aaui-grid--1",2:"aaui-grid--2",3:"aaui-grid--3",4:"aaui-grid--4"},gap:{sm:"aaui-gap-sm",md:"aaui-gap-md",lg:"aaui-gap-lg"}},defaultVariants:{columns:1,gap:"md"}});function M({className:a,...t}){return f("main",{className:s("aaui-layout",a),...t})}function $({actions:a,children:t,className:o,description:e,title:i,...r}){return y("header",{className:s("aaui-header",o),...r,children:[y("div",{className:"aaui-header__copy",children:[f("h1",{className:"aaui-header__title",children:i}),e?f("div",{className:"aaui-header__description",children:e}):null]}),a?f("div",{className:"aaui-header__actions",children:a}):null,t]})}function q({actions:a,children:t,className:o,description:e,title:i,...r}){return y("section",{className:s("aaui-section",o),...r,children:[i||e||a?y("div",{className:"aaui-section__header",children:[y("div",{className:"aaui-section__copy",children:[i?f("h2",{className:"aaui-section__title",children:i}):null,e?f("div",{className:"aaui-section__description",children:e}):null]}),a?f("div",{className:"aaui-section__actions",children:a}):null]}):null,t]})}function G({align:a,className:t,direction:o,gap:e,...i}){return f("div",{className:s(H({align:a,direction:o,gap:e}),t),...i})}function X({className:a,columns:t,gap:o,...e}){return f("div",{className:s(z({columns:t,gap:o}),a),...e})}import{Button as W}from"@base-ui/react/button";import{Input as J}from"@base-ui/react/input";import{Select as c}from"@base-ui/react/select";import{cva as K}from"class-variance-authority";import{CheckIcon as Q,ChevronDownIcon as U}from"lucide-react";import{cloneElement as Y,isValidElement as Z,useId as j}from"react";import{jsx as l,jsxs as h}from"react/jsx-runtime";var aa=K("aaui-button",{variants:{size:{sm:"aaui-button--sm",md:"aaui-button--md",lg:"aaui-button--lg"},variant:{primary:"aaui-button--primary",secondary:"aaui-button--secondary",ghost:"aaui-button--ghost",destructive:"aaui-button--destructive"}},defaultVariants:{size:"md",variant:"primary"}});function ta({children:a,className:t,description:o,disabled:e,error:i,label:r,required:p,...A}){let v=j(),g=a.props,P=g.id??`aaui-field-${v}`,R=o?`${P}-description`:void 0,V=i?`${P}-error`:void 0,u=[g["aria-describedby"],R,V].filter(Boolean).join(" ")||void 0,E=Z(a)?Y(a,{"aria-describedby":u,...i?{"aria-invalid":!0}:{},...e===void 0?{}:{disabled:e},id:P,...p===void 0?{}:{required:p}}):a;return h("div",{className:s("aaui-field",t),"data-disabled":e||void 0,"data-invalid":!!i||void 0,...A,children:[h("label",{className:"aaui-field__label",htmlFor:P,children:[r,p?l("span",{"aria-hidden":"true",children:" *"}):null]}),E,o?l("div",{className:"aaui-field__description",id:R,children:o}):null,i?l("div",{className:"aaui-field__error",id:V,role:"alert",children:i}):null]})}function oa({className:a,size:t,variant:o,...e}){return l(W,{className:s(aa({size:t,variant:o}),a),...e})}function ea({className:a,...t}){return l(J,{className:s("aaui-input",a),...t})}function ia({className:a,...t}){return l("textarea",{className:s("aaui-textarea",a),...t})}function na({className:a,defaultValue:t,disabled:o,id:e,name:i,onValueChange:r,options:p,placeholder:A,required:v,value:g,...P}){let R=N(),V=p.map(u=>({label:u.label,value:u.value}));return h(c.Root,{defaultValue:t,disabled:o,id:e,items:V,name:i,onValueChange:u=>r?.(u),required:v,value:g,children:[h(c.Trigger,{className:s("aaui-select__trigger",a),...P,children:[l(c.Value,{placeholder:A}),l(c.Icon,{className:"aaui-select__icon",children:l(U,{"aria-hidden":"true"})})]}),l(c.Portal,{container:R,children:l(c.Positioner,{alignItemWithTrigger:!1,className:"aaui-select__positioner",sideOffset:4,children:l(c.Popup,{className:"aaui-select__popup",children:l(c.List,{className:"aaui-select__list",children:p.map(u=>h(c.Item,{className:"aaui-select__item",disabled:u.disabled,label:u.textValue,value:u.value,children:[l(c.ItemText,{children:u.label}),l(c.ItemIndicator,{className:"aaui-select__indicator",children:l(Q,{"aria-hidden":"true"})})]},u.value))})})})})]})}import{Dialog as _}from"@base-ui/react/dialog";import{Popover as b}from"@base-ui/react/popover";import{Tooltip as S}from"@base-ui/react/tooltip";import{cva as ra}from"class-variance-authority";import{XIcon as O}from"lucide-react";import{createPortal as sa}from"react-dom";import{jsx as n,jsxs as m}from"react/jsx-runtime";function la({children:a,className:t,closeLabel:o="Close",defaultOpen:e,description:i,footer:r,onOpenChange:p,open:A,title:v,trigger:g}){let P=N();return m(_.Root,{defaultOpen:e,onOpenChange:R=>p?.(R),open:A,children:[n(_.Trigger,{render:g}),m(_.Portal,{container:P,children:[n(_.Backdrop,{className:"aaui-dialog__backdrop"}),m(_.Popup,{className:s("aaui-dialog",t),children:[m("div",{className:"aaui-dialog__header",children:[m("div",{className:"aaui-dialog__copy",children:[n(_.Title,{className:"aaui-dialog__title",children:v}),i?n(_.Description,{className:"aaui-dialog__description",children:i}):null]}),n(_.Close,{className:"aaui-icon-button","aria-label":o,children:n(O,{"aria-hidden":"true"})})]}),n("div",{className:"aaui-dialog__content",children:a}),r?n("div",{className:"aaui-dialog__footer",children:r}):null]})]})]})}function pa({children:a,className:t,defaultOpen:o,description:e,onOpenChange:i,open:r,title:p,trigger:A}){let v=N();return m(b.Root,{defaultOpen:o,onOpenChange:g=>i?.(g),open:r,children:[n(b.Trigger,{render:A}),n(b.Portal,{container:v,children:n(b.Positioner,{align:"start",sideOffset:6,children:m(b.Popup,{className:s("aaui-popover",t),children:[p?n(b.Title,{className:"aaui-popover__title",children:p}):null,e?n(b.Description,{className:"aaui-popover__description",children:e}):null,a]})})})]})}function ua({children:a,content:t,delay:o,disabled:e,side:i="top"}){let r=N();return m(S.Root,{disabled:e,children:[n(S.Trigger,{delay:o,render:a}),n(S.Portal,{container:r,children:n(S.Positioner,{side:i,sideOffset:4,children:n(S.Popup,{className:"aaui-tooltip",children:t})})})]})}var ca=ra("aaui-toast",{variants:{intent:{info:"aaui-toast--info",success:"aaui-toast--success",warning:"aaui-toast--warning",error:"aaui-toast--error"}},defaultVariants:{intent:"info"}});function da({action:a,className:t,closeLabel:o="Dismiss",description:e,intent:i,onClose:r,open:p=!0,title:A}){let v=N();return p?sa(m("div",{"aria-atomic":"true",className:s(ca({intent:i}),t),role:i==="error"?"alert":"status",children:[m("div",{className:"aaui-toast__copy",children:[n("div",{className:"aaui-toast__title",children:A}),e?n("div",{className:"aaui-toast__description",children:e}):null]}),a?n("div",{className:"aaui-toast__action",children:a}):null,r?n("button",{"aria-label":o,className:"aaui-icon-button",onClick:r,type:"button",children:n(O,{"aria-hidden":"true"})}):null]}),v):null}import{cva as ma}from"class-variance-authority";import{CircleAlertIcon as Aa,CircleXIcon as va,InfoIcon as fa,Loader2Icon as ga}from"lucide-react";import{jsx as d,jsxs as ya}from"react/jsx-runtime";var Pa=ma("aaui-status",{variants:{intent:{neutral:"aaui-status--neutral",info:"aaui-status--info",success:"aaui-status--success",warning:"aaui-status--warning",error:"aaui-status--error"}},defaultVariants:{intent:"neutral"}});function Na({className:a,intent:t,...o}){return d("span",{className:s(Pa({intent:t}),a),...o})}function C({action:a,children:t,className:o,description:e,title:i,...r}){return ya("div",{className:s("aaui-state",o),...r,children:[d("div",{className:"aaui-state__icon",children:t}),d("div",{className:"aaui-state__title",children:i}),e?d("div",{className:"aaui-state__description",children:e}):null,a?d("div",{className:"aaui-state__action",children:a}):null]})}function _a({"aria-live":a="polite",title:t,...o}){return d(C,{"aria-live":a,title:t,...o,children:d(ga,{"aria-hidden":"true",className:"aaui-spin"})})}function ba(a){return d(C,{...a,children:d(fa,{"aria-hidden":"true"})})}function Ra({severity:a="error",...t}){let o=a==="warning"?Aa:va;return d(C,{className:`aaui-state--${a}`,role:"alert",...t,children:d(o,{"aria-hidden":"true"})})}export{oa as AutomationAppButton,la as AutomationAppDialog,ba as AutomationAppEmptyState,Ra as AutomationAppErrorState,ta as AutomationAppField,X as AutomationAppGrid,$ as AutomationAppHeader,ea as AutomationAppInput,M as AutomationAppLayout,_a as AutomationAppLoadingState,pa as AutomationAppPopover,L as AutomationAppPortalProvider,q as AutomationAppSection,na as AutomationAppSelect,G as AutomationAppStack,Na as AutomationAppStatus,ia as AutomationAppTextarea,da as AutomationAppToast,ua as AutomationAppTooltip,N as useAutomationAppOverlayRoot};
1
+ import{Tooltip as q}from"@base-ui/react/tooltip";import{createContext as U,useContext as X}from"react";import{jsx as L}from"react/jsx-runtime";var $=U(null);function W({children:a,overlayRoot:t}){if(!t)throw new Error("AutomationAppPortalProvider requires an overlay root");return L($.Provider,{value:t,children:L(q.Provider,{delay:400,children:a})})}function x(){let a=X($);if(!a)throw new Error("AutomationAppPortalProvider is required");return a}import{cva as H}from"class-variance-authority";import{clsx as J}from"clsx";import{twMerge as Q}from"tailwind-merge";function n(...a){return Q(J(a))}import{jsx as y,jsxs as T}from"react/jsx-runtime";var Y=H("aaui-stack",{variants:{align:{start:"aaui-stack--align-start",center:"aaui-stack--align-center",end:"aaui-stack--align-end",stretch:"aaui-stack--align-stretch"},direction:{horizontal:"aaui-stack--horizontal",vertical:"aaui-stack--vertical"},gap:{sm:"aaui-gap-sm",md:"aaui-gap-md",lg:"aaui-gap-lg"}},defaultVariants:{align:"stretch",direction:"vertical",gap:"md"}}),Z=H("aaui-grid",{variants:{columns:{1:"aaui-grid--1",2:"aaui-grid--2",3:"aaui-grid--3",4:"aaui-grid--4"},gap:{sm:"aaui-gap-sm",md:"aaui-gap-md",lg:"aaui-gap-lg"}},defaultVariants:{columns:1,gap:"md"}});function j({className:a,...t}){return y("main",{className:n("aaui-layout",a),...t})}function aa({actions:a,children:t,className:e,description:o,title:i,...r}){return T("header",{className:n("aaui-header",e),...r,children:[T("div",{className:"aaui-header__copy",children:[y("h1",{className:"aaui-header__title",children:i}),o?y("div",{className:"aaui-header__description",children:o}):null]}),a?y("div",{className:"aaui-header__actions",children:a}):null,t]})}function ta({actions:a,children:t,className:e,description:o,title:i,...r}){return T("section",{className:n("aaui-section",e),...r,children:[i||o||a?T("div",{className:"aaui-section__header",children:[T("div",{className:"aaui-section__copy",children:[i?y("h2",{className:"aaui-section__title",children:i}):null,o?y("div",{className:"aaui-section__description",children:o}):null]}),a?y("div",{className:"aaui-section__actions",children:a}):null]}):null,t]})}function ea({align:a,className:t,direction:e,gap:o,...i}){return y("div",{className:n(Y({align:a,direction:e,gap:o}),t),...i})}function oa({className:a,columns:t,gap:e,...o}){return y("div",{className:n(Z({columns:t,gap:e}),a),...o})}import{Button as ia}from"@base-ui/react/button";import{Input as na}from"@base-ui/react/input";import{Select as N}from"@base-ui/react/select";import{cva as ra}from"class-variance-authority";import{CheckIcon as pa,ChevronDownIcon as sa}from"lucide-react";import{cloneElement as la,isValidElement as ua,useId as da,useState as ca}from"react";import{jsx as l,jsxs as R}from"react/jsx-runtime";var ma=ra("aaui-button",{variants:{size:{sm:"aaui-button--sm",md:"aaui-button--md",lg:"aaui-button--lg"},variant:{primary:"aaui-button--primary",secondary:"aaui-button--secondary",ghost:"aaui-button--ghost",destructive:"aaui-button--destructive"}},defaultVariants:{size:"md",variant:"primary"}});function Aa({children:a,className:t,description:e,disabled:o,error:i,label:r,required:c,...u}){let f=da(),d=a.props,g=d.id??`aaui-field-${f}`,P=e?`${g}-description`:void 0,_=i?`${g}-error`:void 0,m=[d["aria-describedby"],P,_].filter(Boolean).join(" ")||void 0,I=ua(a)?la(a,{"aria-describedby":m,...i?{"aria-invalid":!0}:{},...o===void 0?{}:{disabled:o},id:g,...c===void 0?{}:{required:c}}):a;return R("div",{className:n("aaui-field",t),"data-disabled":o||void 0,"data-invalid":!!i||void 0,...u,children:[R("label",{className:"aaui-field__label",htmlFor:g,children:[r,c?l("span",{"aria-hidden":"true",children:" *"}):null]}),I,e?l("div",{className:"aaui-field__description",id:P,children:e}):null,i?l("div",{className:"aaui-field__error",id:_,role:"alert",children:i}):null]})}function fa({className:a,size:t,variant:e,...o}){return l(ia,{className:n(ma({size:t,variant:e}),a),...o})}function va({className:a,...t}){return l(na,{className:n("aaui-input",a),...t})}function ga({className:a,...t}){return l("textarea",{className:n("aaui-textarea",a),...t})}function Pa({className:a,...t}){return l("input",{...t,className:n("aaui-checkbox",a),type:"checkbox"})}function ba({className:a,defaultValue:t,disabled:e,legend:o,name:i,onValueChange:r,options:c,value:u,...f}){return R("fieldset",{className:n("aaui-radio-group",a),disabled:e,...f,children:[l("legend",{className:"aaui-radio-group__legend",children:o}),l("div",{className:"aaui-radio-group__options",children:c.map(d=>R("label",{className:"aaui-radio-group__option",children:[l("input",{checked:u===void 0?void 0:u===d.value,defaultChecked:u===void 0?t===d.value:void 0,disabled:d.disabled,name:i,onChange:()=>r?.(d.value),type:"radio",value:d.value}),l("span",{children:d.label})]},d.value))})]})}function Na({checked:a,className:t,defaultChecked:e=!1,disabled:o,label:i,onCheckedChange:r,onClick:c,...u}){let[f,d]=ca(e),g=a??f;return R("button",{...u,"aria-checked":g,className:n("aaui-switch",t),disabled:o,onClick:P=>{if(c?.(P),P.defaultPrevented)return;let _=!g;a===void 0&&d(_),r?.(_)},role:"switch",type:"button",children:[l("span",{"aria-hidden":"true",className:"aaui-switch__track",children:l("span",{className:"aaui-switch__thumb"})}),l("span",{className:"aaui-switch__label",children:i})]})}function _a({className:a,defaultValue:t,disabled:e,id:o,name:i,onValueChange:r,options:c,placeholder:u,required:f,value:d,...g}){let P=x(),_=c.map(m=>({label:m.label,value:m.value}));return R(N.Root,{defaultValue:t,disabled:e,id:o,items:_,name:i,onValueChange:m=>r?.(m),required:f,value:d,children:[R(N.Trigger,{className:n("aaui-select__trigger",a),...g,children:[l(N.Value,{placeholder:u}),l(N.Icon,{className:"aaui-select__icon",children:l(sa,{"aria-hidden":"true"})})]}),l(N.Portal,{container:P,children:l(N.Positioner,{alignItemWithTrigger:!1,className:"aaui-select__positioner",sideOffset:4,children:l(N.Popup,{className:"aaui-select__popup",children:l(N.List,{className:"aaui-select__list",children:c.map(m=>R(N.Item,{className:"aaui-select__item",disabled:m.disabled,label:m.textValue,value:m.value,children:[l(N.ItemText,{children:m.label}),l(N.ItemIndicator,{className:"aaui-select__indicator",children:l(pa,{"aria-hidden":"true"})})]},m.value))})})})})]})}import{Dialog as C}from"@base-ui/react/dialog";import{Popover as S}from"@base-ui/react/popover";import{Tooltip as V}from"@base-ui/react/tooltip";import{cva as F}from"class-variance-authority";import{XIcon as G}from"lucide-react";import{createPortal as ya}from"react-dom";import{jsx as s,jsxs as b}from"react/jsx-runtime";function ha({children:a,className:t,closeLabel:e="Close",defaultOpen:o,description:i,footer:r,onOpenChange:c,open:u,title:f,trigger:d}){let g=x();return b(C.Root,{defaultOpen:o,onOpenChange:P=>c?.(P),open:u,children:[s(C.Trigger,{render:d}),b(C.Portal,{container:g,children:[s(C.Backdrop,{className:"aaui-dialog__backdrop"}),b(C.Popup,{className:n("aaui-dialog",t),children:[b("div",{className:"aaui-dialog__header",children:[b("div",{className:"aaui-dialog__copy",children:[s(C.Title,{className:"aaui-dialog__title",children:f}),i?s(C.Description,{className:"aaui-dialog__description",children:i}):null]}),s(C.Close,{className:"aaui-icon-button","aria-label":e,children:s(G,{"aria-hidden":"true"})})]}),s("div",{className:"aaui-dialog__content",children:a}),r?s("div",{className:"aaui-dialog__footer",children:r}):null]})]})]})}function xa({children:a,className:t,defaultOpen:e,description:o,onOpenChange:i,open:r,title:c,trigger:u}){let f=x();return b(S.Root,{defaultOpen:e,onOpenChange:d=>i?.(d),open:r,children:[s(S.Trigger,{render:u}),s(S.Portal,{container:f,children:s(S.Positioner,{align:"start",sideOffset:6,children:b(S.Popup,{className:n("aaui-popover",t),children:[c?s(S.Title,{className:"aaui-popover__title",children:c}):null,o?s(S.Description,{className:"aaui-popover__description",children:o}):null,a]})})})]})}function Ra({children:a,content:t,delay:e,disabled:o,side:i="top"}){let r=x();return b(V.Root,{disabled:o,children:[s(V.Trigger,{delay:e,render:a}),s(V.Portal,{container:r,children:s(V.Positioner,{side:i,sideOffset:4,children:s(V.Popup,{className:"aaui-tooltip",children:t})})})]})}var Ca=F("aaui-toast",{variants:{intent:{info:"aaui-toast--info",success:"aaui-toast--success",warning:"aaui-toast--warning",error:"aaui-toast--error"}},defaultVariants:{intent:"info"}}),Sa=F("aaui-alert",{variants:{intent:{info:"aaui-alert--info",success:"aaui-alert--success",warning:"aaui-alert--warning",error:"aaui-alert--error"}},defaultVariants:{intent:"info"}});function ka({action:a,children:t,className:e,intent:o,title:i}){return b("div",{className:n(Sa({intent:o}),e),role:o==="error"?"alert":"status",children:[b("div",{className:"aaui-alert__copy",children:[i?s("div",{className:"aaui-alert__title",children:i}):null,s("div",{className:"aaui-alert__description",children:t})]}),a?s("div",{className:"aaui-alert__action",children:a}):null]})}function Ta({action:a,className:t,closeLabel:e="Dismiss",description:o,intent:i,onClose:r,open:c=!0,title:u}){let f=x();return c?ya(b("div",{"aria-atomic":"true",className:n(Ca({intent:i}),t),role:i==="error"?"alert":"status",children:[b("div",{className:"aaui-toast__copy",children:[s("div",{className:"aaui-toast__title",children:u}),o?s("div",{className:"aaui-toast__description",children:o}):null]}),a?s("div",{className:"aaui-toast__action",children:a}):null,r?s("button",{"aria-label":e,className:"aaui-icon-button",onClick:r,type:"button",children:s(G,{"aria-hidden":"true"})}):null]}),f):null}import{cva as M}from"class-variance-authority";import{CircleAlertIcon as Va,CircleXIcon as Ia,InfoIcon as wa,Loader2Icon as Oa}from"lucide-react";import{jsx as v,jsxs as z}from"react/jsx-runtime";var Ea=M("aaui-status",{variants:{intent:{neutral:"aaui-status--neutral",info:"aaui-status--info",success:"aaui-status--success",warning:"aaui-status--warning",error:"aaui-status--error"}},defaultVariants:{intent:"neutral"}}),Da=M("aaui-badge",{variants:{intent:{neutral:"aaui-badge--neutral",info:"aaui-badge--info",success:"aaui-badge--success",warning:"aaui-badge--warning",error:"aaui-badge--error"}},defaultVariants:{intent:"neutral"}});function Ba({className:a,intent:t,...e}){return v("span",{className:n(Ea({intent:t}),a),...e})}function La({className:a,intent:t,...e}){return v("span",{className:n(Da({intent:t}),a),...e})}function $a({className:a,...t}){return v("div",{"aria-hidden":"true",className:n("aaui-skeleton",a),...t})}function Ha({className:a,label:t,max:e=100,...o}){return z("label",{className:n("aaui-progress",a),children:[v("span",{className:"aaui-progress__label",children:t}),v("progress",{max:e,...o})]})}function O({action:a,children:t,className:e,description:o,title:i,...r}){return z("div",{className:n("aaui-state",e),...r,children:[v("div",{className:"aaui-state__icon",children:t}),v("div",{className:"aaui-state__title",children:i}),o?v("div",{className:"aaui-state__description",children:o}):null,a?v("div",{className:"aaui-state__action",children:a}):null]})}function Fa({"aria-live":a="polite",title:t,...e}){return v(O,{"aria-live":a,title:t,...e,children:v(Oa,{"aria-hidden":"true",className:"aaui-spin"})})}function Ga(a){return v(O,{...a,children:v(wa,{"aria-hidden":"true"})})}function Ma({severity:a="error",...t}){let e=a==="warning"?Va:Ia;return v(O,{className:`aaui-state--${a}`,role:"alert",...t,children:v(e,{"aria-hidden":"true"})})}import{useId as za,useState as Ka}from"react";import{jsx as E,jsxs as Ua}from"react/jsx-runtime";function qa({className:a,defaultValue:t,label:e,onValueChange:o,tabs:i,value:r,...c}){let u=za(),f=i.find(p=>!p.disabled)?.id,[d,g]=Ka(t??f??""),P=r??d,_=p=>{r===void 0&&g(p),o?.(p)},m=(p,h)=>{h!==void 0&&(p.preventDefault(),_(h.id),document.getElementById(`${u}-tab-${h.id}`)?.focus())},I=(p,h)=>{let A=i.filter(w=>!w.disabled);if(A.length===0)return;let k=A.findIndex(w=>w.id===P),K=(Math.max(k,0)+h+A.length)%A.length;m(p,A[K])},B=i.find(p=>p.id===P&&!p.disabled);return Ua("div",{className:n("aaui-tabs",a),...c,children:[E("div",{"aria-label":e,className:"aaui-tabs__list",role:"tablist",children:i.map(p=>{let h=p.id===B?.id;return E("button",{"aria-controls":`${u}-panel-${p.id}`,"aria-selected":h,className:"aaui-tabs__tab",disabled:p.disabled,id:`${u}-tab-${p.id}`,onClick:()=>_(p.id),onKeyDown:A=>{A.key==="ArrowRight"||A.key==="ArrowDown"?I(A,1):A.key==="ArrowLeft"||A.key==="ArrowUp"?I(A,-1):A.key==="Home"?m(A,i.find(k=>!k.disabled)):A.key==="End"&&m(A,[...i].reverse().find(k=>!k.disabled))},role:"tab",tabIndex:h?0:-1,type:"button",children:p.label},p.id)})}),i.map(p=>E("div",{"aria-labelledby":`${u}-tab-${p.id}`,className:"aaui-tabs__panel",hidden:p.id!==B?.id,id:`${u}-panel-${p.id}`,role:"tabpanel",tabIndex:0,children:p.panel},p.id))]})}import{jsx as D,jsxs as Ja}from"react/jsx-runtime";function Xa({className:a,...t}){return D("hr",{className:n("aaui-separator",a),...t})}function Wa({caption:a,captionPosition:t="top",children:e,className:o,containerClassName:i,...r}){return D("div",{className:n("aaui-table__scroll",i),children:Ja("table",{className:n("aaui-table",o),...r,children:[a?D("caption",{"data-position":t,children:a}):null,e]})})}export{ka as AutomationAppAlert,La as AutomationAppBadge,fa as AutomationAppButton,Pa as AutomationAppCheckbox,ha as AutomationAppDialog,Ga as AutomationAppEmptyState,Ma as AutomationAppErrorState,Aa as AutomationAppField,oa as AutomationAppGrid,aa as AutomationAppHeader,va as AutomationAppInput,j as AutomationAppLayout,Fa as AutomationAppLoadingState,xa as AutomationAppPopover,W as AutomationAppPortalProvider,Ha as AutomationAppProgress,ba as AutomationAppRadioGroup,ta as AutomationAppSection,_a as AutomationAppSelect,Xa as AutomationAppSeparator,$a as AutomationAppSkeleton,ea as AutomationAppStack,Ba as AutomationAppStatus,Na as AutomationAppSwitch,Wa as AutomationAppTable,qa as AutomationAppTabs,ga as AutomationAppTextarea,Ta as AutomationAppToast,Ra as AutomationAppTooltip,x as useAutomationAppOverlayRoot};
package/dist/styles.css CHANGED
@@ -1 +1 @@
1
- @layer components{.aaui-layout,.aaui-dialog,.aaui-popover,.aaui-tooltip,.aaui-toast,.aaui-select__popup{color:var(--foreground, oklch(.21 .006 285.885));font-family:var(--font-sans, ui-sans-serif, system-ui, sans-serif)}.aaui-layout{box-sizing:border-box;display:flex;min-width:0;width:100%;flex-direction:column;gap:1.5rem}.aaui-header,.aaui-section__header{display:flex;min-width:0;align-items:flex-start;justify-content:space-between;gap:1rem}.aaui-header__copy,.aaui-section__copy{min-width:0}.aaui-header__title,.aaui-section__title{margin:0;color:var(--foreground);font-weight:600;line-height:1.25}.aaui-header__title{font-size:1.5rem}.aaui-section__title{font-size:1rem}.aaui-header__description,.aaui-section__description,.aaui-dialog__description,.aaui-popover__description,.aaui-toast__description,.aaui-state__description,.aaui-field__description{margin-top:.25rem;color:var(--muted-foreground, oklch(.55 .016 285.938));font-size:.875rem;line-height:1.45}.aaui-header__actions,.aaui-section__actions,.aaui-dialog__footer,.aaui-toast__action,.aaui-state__action{display:flex;align-items:center;gap:.5rem}.aaui-section{box-sizing:border-box;display:flex;min-width:0;flex-direction:column;gap:1rem;border:1px solid var(--border, oklch(.92 .004 286.32));border-radius:var(--radius, .75rem);background:var(--card, var(--background, white));padding:1rem}.aaui-stack{display:flex;min-width:0}.aaui-stack--vertical{flex-direction:column}.aaui-stack--horizontal{flex-direction:row}.aaui-stack--align-start{align-items:flex-start}.aaui-stack--align-center{align-items:center}.aaui-stack--align-end{align-items:flex-end}.aaui-stack--align-stretch{align-items:stretch}.aaui-grid{display:grid;min-width:0}.aaui-grid--1{grid-template-columns:minmax(0,1fr)}.aaui-grid--2{grid-template-columns:repeat(2,minmax(0,1fr))}.aaui-grid--3{grid-template-columns:repeat(3,minmax(0,1fr))}.aaui-grid--4{grid-template-columns:repeat(4,minmax(0,1fr))}.aaui-gap-sm{gap:.5rem}.aaui-gap-md{gap:1rem}.aaui-gap-lg{gap:1.5rem}.aaui-field{display:flex;min-width:0;flex-direction:column;gap:.375rem}.aaui-field__label{color:var(--foreground);font-size:.875rem;font-weight:500}.aaui-field__error{color:var(--destructive, oklch(.58 .22 27.325));font-size:.875rem}.aaui-field[data-disabled]{opacity:.6}.aaui-button,.aaui-icon-button,.aaui-select__trigger{box-sizing:border-box;display:inline-flex;align-items:center;justify-content:center;border:1px solid transparent;border-radius:calc(var(--radius, .75rem) - .125rem);font:inherit;font-size:.875rem;font-weight:500;outline:none;transition:background-color .12s ease,border-color .12s ease,color .12s ease,box-shadow .12s ease}.aaui-button:focus-visible,.aaui-icon-button:focus-visible,.aaui-select__trigger:focus-visible,.aaui-input:focus-visible,.aaui-textarea:focus-visible{border-color:var(--ring, var(--primary));box-shadow:0 0 0 3px color-mix(in oklch,var(--ring, var(--primary)) 25%,transparent)}.aaui-button:disabled,.aaui-icon-button:disabled,.aaui-select__trigger:disabled,.aaui-input:disabled,.aaui-textarea:disabled{cursor:not-allowed;opacity:.5}.aaui-button--sm{min-height:1.75rem;padding:.25rem .625rem}.aaui-button--md{min-height:2rem;padding:.375rem .75rem}.aaui-button--lg{min-height:2.5rem;padding:.5rem 1rem}.aaui-button--primary{background:var(--primary, oklch(.21 .006 285.885));color:var(--primary-foreground, white)}.aaui-button--secondary,.aaui-button--ghost{color:var(--foreground)}.aaui-button--secondary{border-color:var(--border);background:var(--secondary, oklch(.967 .001 286.375))}.aaui-button--ghost{background:transparent}.aaui-button--destructive{background:color-mix(in oklch,var(--destructive) 12%,transparent);color:var(--destructive)}.aaui-button:hover:not(:disabled),.aaui-icon-button:hover:not(:disabled),.aaui-select__trigger:hover:not(:disabled){filter:brightness(.96)}.aaui-input,.aaui-textarea,.aaui-select__trigger{box-sizing:border-box;width:100%;border:1px solid var(--input, var(--border));border-radius:calc(var(--radius, .75rem) - .125rem);background:transparent;color:var(--foreground);font:inherit;font-size:.875rem;outline:none}.aaui-input,.aaui-select__trigger{min-height:2rem;padding:.375rem .625rem}.aaui-textarea{min-height:5rem;resize:vertical;padding:.5rem .625rem}.aaui-select__trigger{justify-content:space-between;gap:.5rem}.aaui-select__icon,.aaui-select__indicator,.aaui-icon-button{flex:0 0 auto}.aaui-select__icon svg,.aaui-select__indicator svg,.aaui-icon-button svg,.aaui-state__icon svg{width:1rem;height:1rem}.aaui-select__positioner,.aaui-popover,.aaui-tooltip{z-index:60}.aaui-select__popup,.aaui-popover,.aaui-tooltip,.aaui-toast,.aaui-dialog{box-sizing:border-box;border:1px solid var(--border);border-radius:var(--radius, .75rem);background:var(--popover, var(--background, white));color:var(--popover-foreground, var(--foreground));box-shadow:var(--shadow-lg, 0 12px 32px rgb(0 0 0 / .14))}.aaui-select__popup{min-width:var(--anchor-width);max-height:min(20rem,var(--available-height));overflow:auto;padding:.25rem}.aaui-select__list{outline:none}.aaui-select__item{display:flex;min-height:2rem;cursor:default;align-items:center;justify-content:space-between;gap:.75rem;border-radius:calc(var(--radius, .75rem) - .25rem);padding:.375rem .5rem;font-size:.875rem;outline:none}.aaui-select__item[data-highlighted]{background:var(--accent, var(--muted))}.aaui-select__item[data-disabled]{opacity:.5}.aaui-dialog__backdrop{position:fixed;z-index:70;inset:0;background:#00000059;backdrop-filter:blur(2px)}.aaui-dialog{position:fixed;z-index:71;top:50%;left:50%;display:flex;width:min(32rem,calc(100% - 2rem));max-height:calc(100% - 2rem);transform:translate(-50%,-50%);flex-direction:column;overflow:auto}.aaui-dialog__header,.aaui-toast{display:flex;align-items:flex-start;gap:.75rem}.aaui-dialog__header{justify-content:space-between;padding:1rem 1rem 0}.aaui-dialog__copy,.aaui-toast__copy{min-width:0;flex:1 1 auto}.aaui-dialog__title,.aaui-popover__title,.aaui-toast__title,.aaui-state__title{margin:0;font-size:.9375rem;font-weight:600;line-height:1.35}.aaui-dialog__content{padding:1rem}.aaui-dialog__footer{justify-content:flex-end;border-top:1px solid var(--border);background:color-mix(in oklch,var(--muted) 40%,transparent);padding:.75rem 1rem}.aaui-icon-button{width:2rem;height:2rem;padding:0;background:transparent;color:var(--muted-foreground)}.aaui-popover{max-width:min(22rem,calc(100vw - 2rem));padding:.75rem}.aaui-popover__title+.aaui-popover__description{margin-bottom:.75rem}.aaui-tooltip{max-width:18rem;padding:.375rem .625rem;background:var(--foreground);color:var(--background);font-size:.75rem;line-height:1.35}.aaui-toast{position:absolute;z-index:80;right:1rem;bottom:1rem;width:min(24rem,calc(100% - 2rem));padding:.75rem;border-left-width:.25rem}.aaui-toast--info{border-left-color:var(--primary)}.aaui-toast--success{border-left-color:var(--success, oklch(.58 .16 145))}.aaui-toast--warning{border-left-color:var(--warning, oklch(.68 .16 75))}.aaui-toast--error{border-left-color:var(--destructive)}.aaui-status{display:inline-flex;align-items:center;width:fit-content;border:1px solid currentColor;border-radius:999px;padding:.125rem .5rem;font-size:.75rem;font-weight:500;line-height:1.4}.aaui-status--neutral{color:var(--muted-foreground)}.aaui-status--info{color:var(--primary)}.aaui-status--success{color:var(--success, oklch(.48 .14 145))}.aaui-status--warning{color:var(--warning, oklch(.55 .15 75))}.aaui-status--error,.aaui-state--error{color:var(--destructive)}.aaui-state{display:flex;min-height:10rem;align-items:center;justify-content:center;flex-direction:column;gap:.5rem;border:1px dashed var(--border);border-radius:var(--radius, .75rem);padding:1.5rem;text-align:center}.aaui-state--warning{color:var(--warning, oklch(.55 .15 75))}.aaui-state__description{max-width:28rem}.aaui-spin{animation:aaui-spin .9s linear infinite}}@keyframes aaui-spin{to{transform:rotate(360deg)}}@media(max-width:42rem){.aaui-grid--2,.aaui-grid--3,.aaui-grid--4{grid-template-columns:minmax(0,1fr)}.aaui-header,.aaui-section__header{flex-direction:column}}@media(prefers-reduced-motion:reduce){.aaui-spin{animation-duration:1.8s}}
1
+ :root{color-scheme:light;--aaui-background: #ffffff;--aaui-foreground: #202024;--aaui-card: #ffffff;--aaui-popover: #ffffff;--aaui-muted: #f4f4f5;--aaui-muted-foreground: #6b6b73;--aaui-border: #e2e2e6;--aaui-input: #d4d4d9;--aaui-primary: #242429;--aaui-primary-foreground: #ffffff;--aaui-secondary: #f0f0f2;--aaui-secondary-foreground: #242429;--aaui-accent: #e8e8eb;--aaui-destructive: #c93434;--aaui-success: #198754;--aaui-warning: #a16207;--aaui-info: #2563eb;--aaui-ring: #5b5bd6;--aaui-radius: .75rem;--aaui-shadow: 0 12px 32px rgb(0 0 0 / .14);--aaui-font-sans: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--aaui-space-1: .25rem;--aaui-space-2: .5rem;--aaui-space-3: .75rem;--aaui-space-4: 1rem;--aaui-space-6: 1.5rem;--aaui-space-8: 2rem;--accent: var(--aaui-accent);--background: var(--aaui-background);--border: var(--aaui-border);--card: var(--aaui-card);--foreground: var(--aaui-foreground);--muted: var(--aaui-muted);--muted-foreground: var(--aaui-muted-foreground);--primary: var(--aaui-primary);--radius: var(--aaui-radius);--ring: var(--aaui-ring);--success: var(--aaui-success);--warning: var(--aaui-warning)}*,*:before,*:after{box-sizing:border-box}html,body{min-width:0;min-height:100%}body{margin:0;background:var(--aaui-background);color:var(--aaui-foreground);font-family:var(--aaui-font-sans);line-height:1.5}button,input,select,textarea{font:inherit}button,[role=button]{touch-action:manipulation}.aaui-layout,.aaui-dialog,.aaui-popover,.aaui-tooltip,.aaui-toast,.aaui-alert,.aaui-select__popup{color:var(--aaui-foreground);font-family:var(--aaui-font-sans)}.aaui-layout{display:flex;width:100%;min-width:0;flex-direction:column;gap:var(--aaui-space-6);padding:var(--aaui-space-4)}.aaui-header,.aaui-section__header{display:flex;min-width:0;align-items:flex-start;justify-content:space-between;gap:var(--aaui-space-4)}.aaui-header__copy,.aaui-section__copy{min-width:0}.aaui-header__title,.aaui-section__title{margin:0;color:var(--aaui-foreground);font-weight:650;line-height:1.25}.aaui-header__title{font-size:1.5rem}.aaui-section__title{font-size:1rem}.aaui-header__description,.aaui-section__description,.aaui-dialog__description,.aaui-popover__description,.aaui-toast__description,.aaui-alert__description,.aaui-state__description,.aaui-field__description{margin-top:var(--aaui-space-1);color:var(--aaui-muted-foreground);font-size:.875rem;line-height:1.45}.aaui-header__actions,.aaui-section__actions,.aaui-dialog__footer,.aaui-toast__action,.aaui-alert__action,.aaui-state__action{display:flex;align-items:center;gap:var(--aaui-space-2)}.aaui-section{display:flex;min-width:0;flex-direction:column;gap:var(--aaui-space-4);border:1px solid var(--aaui-border);border-radius:var(--aaui-radius);background:var(--aaui-card);padding:var(--aaui-space-4)}.aaui-stack{display:flex;min-width:0}.aaui-stack--vertical{flex-direction:column}.aaui-stack--horizontal{flex-direction:row;flex-wrap:wrap}.aaui-stack--align-start{align-items:flex-start}.aaui-stack--align-center{align-items:center}.aaui-stack--align-end{align-items:flex-end}.aaui-stack--align-stretch{align-items:stretch}.aaui-grid{display:grid;min-width:0}.aaui-grid--1{grid-template-columns:minmax(0,1fr)}.aaui-grid--2{grid-template-columns:repeat(2,minmax(0,1fr))}.aaui-grid--3{grid-template-columns:repeat(3,minmax(0,1fr))}.aaui-grid--4{grid-template-columns:repeat(4,minmax(0,1fr))}.aaui-gap-sm{gap:var(--aaui-space-2)}.aaui-gap-md{gap:var(--aaui-space-4)}.aaui-gap-lg{gap:var(--aaui-space-6)}.aaui-field{display:flex;min-width:0;flex-direction:column;gap:calc(var(--aaui-space-1) * 1.5)}.aaui-field__label,.aaui-radio-group__legend,.aaui-progress__label{color:var(--aaui-foreground);font-size:.875rem;font-weight:600}.aaui-field__error{color:var(--aaui-destructive);font-size:.875rem}.aaui-field[data-disabled]{opacity:.6}.aaui-button,.aaui-icon-button,.aaui-select__trigger,.aaui-tabs__tab,.aaui-switch{display:inline-flex;align-items:center;justify-content:center;border:1px solid transparent;border-radius:calc(var(--aaui-radius) - .125rem);font-size:.875rem;font-weight:600;outline:none;transition:background-color .12s ease,border-color .12s ease,color .12s ease,box-shadow .12s ease}.aaui-button:focus-visible,.aaui-icon-button:focus-visible,.aaui-select__trigger:focus-visible,.aaui-input:focus-visible,.aaui-textarea:focus-visible,.aaui-checkbox:focus-visible,.aaui-radio-group input:focus-visible,.aaui-switch:focus-visible,.aaui-tabs__tab:focus-visible,.aaui-tabs__panel:focus-visible{outline:3px solid color-mix(in srgb,var(--aaui-ring) 35%,transparent);outline-offset:2px}.aaui-button:disabled,.aaui-icon-button:disabled,.aaui-select__trigger:disabled,.aaui-input:disabled,.aaui-textarea:disabled,.aaui-switch:disabled,.aaui-tabs__tab:disabled{cursor:not-allowed;opacity:.5}.aaui-button--sm{min-height:1.75rem;padding:var(--aaui-space-1) calc(var(--aaui-space-2) * 1.25)}.aaui-button--md{min-height:2.25rem;padding:calc(var(--aaui-space-1) * 1.5) var(--aaui-space-3)}.aaui-button--lg{min-height:2.75rem;padding:var(--aaui-space-2) var(--aaui-space-4)}.aaui-button--primary{background:var(--aaui-primary);color:var(--aaui-primary-foreground)}.aaui-button--secondary{border-color:var(--aaui-border);background:var(--aaui-secondary);color:var(--aaui-secondary-foreground)}.aaui-button--ghost{background:transparent;color:var(--aaui-foreground)}.aaui-button--destructive{background:color-mix(in srgb,var(--aaui-destructive) 12%,transparent);color:var(--aaui-destructive)}.aaui-button:hover:not(:disabled),.aaui-icon-button:hover:not(:disabled),.aaui-select__trigger:hover:not(:disabled),.aaui-tabs__tab:hover:not(:disabled),.aaui-switch:hover:not(:disabled){filter:brightness(.96)}.aaui-input,.aaui-textarea,.aaui-select__trigger{width:100%;border:1px solid var(--aaui-input);border-radius:calc(var(--aaui-radius) - .125rem);background:var(--aaui-background);color:var(--aaui-foreground);font-size:.875rem;outline:none}.aaui-input,.aaui-select__trigger{min-height:2.25rem;padding:calc(var(--aaui-space-1) * 1.5) var(--aaui-space-2)}.aaui-textarea{min-height:5rem;resize:vertical;padding:var(--aaui-space-2)}.aaui-select__trigger{justify-content:space-between;gap:var(--aaui-space-2)}.aaui-select__icon,.aaui-select__indicator,.aaui-icon-button{flex:0 0 auto}.aaui-select__icon svg,.aaui-select__indicator svg,.aaui-icon-button svg,.aaui-state__icon svg{width:1rem;height:1rem}.aaui-select__positioner,.aaui-popover,.aaui-tooltip{z-index:60}.aaui-select__popup,.aaui-popover,.aaui-tooltip,.aaui-toast,.aaui-dialog{border:1px solid var(--aaui-border);border-radius:var(--aaui-radius);background:var(--aaui-popover);color:var(--aaui-foreground);box-shadow:var(--aaui-shadow)}.aaui-select__popup{min-width:var(--anchor-width);max-height:min(20rem,var(--available-height));overflow:auto;padding:var(--aaui-space-1)}.aaui-select__list{outline:none}.aaui-select__item{display:flex;min-height:2rem;cursor:default;align-items:center;justify-content:space-between;gap:var(--aaui-space-3);border-radius:calc(var(--aaui-radius) - .25rem);padding:calc(var(--aaui-space-1) * 1.5) var(--aaui-space-2);font-size:.875rem;outline:none}.aaui-select__item[data-highlighted]{background:var(--aaui-accent)}.aaui-select__item[data-disabled]{opacity:.5}.aaui-checkbox,.aaui-radio-group input{width:1rem;height:1rem;margin:0;accent-color:var(--aaui-primary)}.aaui-radio-group{min-width:0;margin:0;border:0;padding:0}.aaui-radio-group__legend{margin-bottom:var(--aaui-space-2);padding:0}.aaui-radio-group__options{display:flex;flex-direction:column;gap:var(--aaui-space-2)}.aaui-radio-group__option{display:flex;align-items:center;gap:var(--aaui-space-2);font-size:.875rem}.aaui-switch{cursor:pointer;justify-content:flex-start;gap:var(--aaui-space-2);padding:0;background:transparent;color:var(--aaui-foreground)}.aaui-switch__track{position:relative;display:inline-flex;width:2.25rem;height:1.25rem;border-radius:999px;background:var(--aaui-muted-foreground);padding:.125rem;transition:background-color .12s ease}.aaui-switch__thumb{width:1rem;height:1rem;border-radius:999px;background:var(--aaui-background);box-shadow:0 1px 3px #00000040;transition:transform .12s ease}.aaui-switch[aria-checked=true] .aaui-switch__track{background:var(--aaui-primary)}.aaui-switch[aria-checked=true] .aaui-switch__thumb{transform:translate(1rem)}.aaui-tabs__list{display:flex;gap:var(--aaui-space-1);overflow-x:auto;border-bottom:1px solid var(--aaui-border)}.aaui-tabs__tab{min-height:2.5rem;cursor:pointer;border-radius:calc(var(--aaui-radius) - .25rem) calc(var(--aaui-radius) - .25rem) 0 0;background:transparent;color:var(--aaui-muted-foreground);padding:var(--aaui-space-2) var(--aaui-space-3)}.aaui-tabs__tab[aria-selected=true]{border-bottom-color:var(--aaui-primary);color:var(--aaui-foreground)}.aaui-tabs__panel{min-width:0;padding-top:var(--aaui-space-4);outline:none}.aaui-dialog__backdrop{position:fixed;z-index:70;inset:0;background:#00000059;backdrop-filter:blur(2px)}.aaui-dialog{position:fixed;z-index:71;top:50%;left:50%;width:min(32rem,calc(100vw - 2rem));max-height:calc(100vh - 2rem);transform:translate(-50%,-50%);overflow:auto;padding:var(--aaui-space-4)}.aaui-dialog__header{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--aaui-space-4)}.aaui-dialog__title,.aaui-popover__title,.aaui-toast__title,.aaui-alert__title{margin:0;font-weight:650}.aaui-dialog__content{margin-block:var(--aaui-space-4)}.aaui-dialog__footer{justify-content:flex-end}.aaui-icon-button{width:2rem;height:2rem;cursor:pointer;background:transparent;color:var(--aaui-foreground)}.aaui-popover{max-width:min(22rem,calc(100vw - 1rem));padding:var(--aaui-space-3)}.aaui-tooltip{max-width:18rem;padding:var(--aaui-space-1) var(--aaui-space-2);font-size:.75rem}.aaui-toast{position:fixed;z-index:80;right:var(--aaui-space-4);bottom:var(--aaui-space-4);display:flex;width:min(24rem,calc(100vw - 2rem));align-items:flex-start;gap:var(--aaui-space-3);padding:var(--aaui-space-3)}.aaui-toast__copy,.aaui-alert__copy{min-width:0;flex:1}.aaui-toast--success,.aaui-alert--success{border-color:color-mix(in srgb,var(--aaui-success) 45%,var(--aaui-border))}.aaui-toast--warning,.aaui-alert--warning{border-color:color-mix(in srgb,var(--aaui-warning) 45%,var(--aaui-border))}.aaui-toast--error,.aaui-alert--error{border-color:color-mix(in srgb,var(--aaui-destructive) 45%,var(--aaui-border))}.aaui-toast--info,.aaui-alert--info{border-color:color-mix(in srgb,var(--aaui-info) 45%,var(--aaui-border))}.aaui-alert{display:flex;align-items:flex-start;gap:var(--aaui-space-3);border:1px solid var(--aaui-border);border-radius:calc(var(--aaui-radius) - .125rem);background:var(--aaui-muted);padding:var(--aaui-space-3)}.aaui-status,.aaui-badge{display:inline-flex;align-items:center;border-radius:999px;font-size:.75rem;font-weight:650;line-height:1.25}.aaui-status{gap:var(--aaui-space-1);padding:var(--aaui-space-1) var(--aaui-space-2)}.aaui-badge{border:1px solid var(--aaui-border);padding:.125rem var(--aaui-space-2)}.aaui-status--neutral,.aaui-badge--neutral{background:var(--aaui-muted);color:var(--aaui-muted-foreground)}.aaui-status--info,.aaui-badge--info{background:color-mix(in srgb,var(--aaui-info) 12%,transparent);color:var(--aaui-info)}.aaui-status--success,.aaui-badge--success{background:color-mix(in srgb,var(--aaui-success) 12%,transparent);color:var(--aaui-success)}.aaui-status--warning,.aaui-badge--warning{background:color-mix(in srgb,var(--aaui-warning) 12%,transparent);color:var(--aaui-warning)}.aaui-status--error,.aaui-badge--error{background:color-mix(in srgb,var(--aaui-destructive) 12%,transparent);color:var(--aaui-destructive)}.aaui-state{display:grid;min-height:10rem;place-items:center;align-content:center;gap:var(--aaui-space-2);border:1px dashed var(--aaui-border);border-radius:var(--aaui-radius);padding:var(--aaui-space-6);text-align:center}.aaui-state__icon{display:grid;width:2rem;height:2rem;place-items:center;color:var(--aaui-muted-foreground)}.aaui-state__title{font-weight:650}.aaui-state--error .aaui-state__icon{color:var(--aaui-destructive)}.aaui-state--warning .aaui-state__icon{color:var(--aaui-warning)}.aaui-skeleton{min-height:1rem;border-radius:calc(var(--aaui-radius) - .25rem);background:linear-gradient(90deg,var(--aaui-muted) 20%,var(--aaui-accent) 45%,var(--aaui-muted) 70%);background-size:250% 100%;animation:aaui-skeleton 1.4s ease-in-out infinite}.aaui-progress{display:flex;flex-direction:column;gap:var(--aaui-space-1)}.aaui-progress progress{width:100%;height:.625rem;accent-color:var(--aaui-primary)}.aaui-separator{width:100%;height:1px;margin:var(--aaui-space-4) 0;border:0;background:var(--aaui-border)}.aaui-table__scroll{max-width:100%;overflow-x:auto;border:1px solid var(--aaui-border);border-radius:var(--aaui-radius)}.aaui-table{width:100%;min-width:32rem;border-collapse:collapse;color:var(--aaui-foreground);font-size:.875rem}.aaui-table caption{padding:var(--aaui-space-3);color:var(--aaui-muted-foreground);text-align:left}.aaui-table caption[data-position=bottom]{caption-side:bottom}.aaui-table th,.aaui-table td{border-bottom:1px solid var(--aaui-border);padding:var(--aaui-space-2) var(--aaui-space-3);text-align:left;vertical-align:top}.aaui-table th{background:var(--aaui-muted);font-weight:650}.aaui-table tbody tr:last-child td{border-bottom:0}.aaui-spin{animation:aaui-spin .8s linear infinite}@keyframes aaui-spin{to{transform:rotate(360deg)}}@keyframes aaui-skeleton{to{background-position:-250% 0}}@media(max-width:42rem){.aaui-grid--2,.aaui-grid--3,.aaui-grid--4{grid-template-columns:minmax(0,1fr)}.aaui-header,.aaui-section__header{flex-direction:column}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@ablehi/automation-app-ui",
3
- "version": "0.1.13",
4
- "description": "ShadowRoot-safe public UI primitives for Ablehi Automation Apps.",
3
+ "version": "0.2.0",
4
+ "description": "Iframe-native public UI Foundation for Ablehi Automation Apps.",
5
5
  "license": "UNLICENSED",
6
6
  "private": false,
7
7
  "type": "module",
@@ -13,6 +13,10 @@
13
13
  "import": "./dist/index.js"
14
14
  },
15
15
  "./styles.css": "./dist/styles.css",
16
+ "./catalog": {
17
+ "types": "./dist/catalog.d.ts",
18
+ "import": "./dist/catalog.js"
19
+ },
16
20
  "./package.json": "./package.json"
17
21
  },
18
22
  "files": [
@@ -26,7 +30,7 @@
26
30
  "registry": "https://registry.npmjs.org/"
27
31
  },
28
32
  "dependencies": {
29
- "@ablehi/automation-app-host-bridge": "0.1.14",
33
+ "@ablehi/automation-app-host-bridge": "0.2.0",
30
34
  "@base-ui/react": "1.6.0",
31
35
  "class-variance-authority": "0.7.1",
32
36
  "clsx": "2.1.1",
@@ -38,6 +42,8 @@
38
42
  "react-dom": "19.2.4"
39
43
  },
40
44
  "devDependencies": {
45
+ "@ablehi/server-api-contract": "0.6.0",
46
+ "@types/node": "20.19.41",
41
47
  "@types/react": "19.2.14",
42
48
  "@types/react-dom": "19.2.3",
43
49
  "esbuild": "0.27.7",