@aginies/ui 0.3.0 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.cts CHANGED
@@ -4,6 +4,16 @@ import * as React from 'react';
4
4
  import JSX = React.JSX;
5
5
 
6
6
  // --- core ---
7
+ /** Status tone shared by Tag, Badge, Alert, Stat deltas and widgets: neutral · signal · ok · warn · bad · info. Always paired with a word or icon. */
8
+ export type Tone = 'neutral' | 'signal' | 'ok' | 'warn' | 'bad' | 'info';
9
+ /** One of the seven product families (aginies.com). */
10
+ export type Product = 'platform' | 'hub' | 'dialog' | 'voice' | 'vision' | 'code' | 'workforce';
11
+ /** Control size: sm 28 · md 32 · lg 40 (compact density). */
12
+ export type ControlSize = 'sm' | 'md' | 'lg';
13
+ /** Avatar / display size scale. */
14
+ export type DataSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';
15
+ /** @deprecated Use `DataSize`; kept because 0.1.0–0.3.0 exported this name. */
16
+ export type Size = DataSize;
7
17
  /** A Lucide glyph by name, inline, inheriting currentColor. Stroke 2 at ≤16px, 1.75 above. */
8
18
  export interface IconProps extends Omit<React.SVGAttributes<SVGSVGElement>, 'color' | 'name' | 'size' | 'title'> {
9
19
  /** Lucide name in kebab-case (circle-check, triangle-alert, loader-circle, sparkles) */
@@ -268,7 +278,6 @@ export declare function useTheme(defaultTheme?: Theme): [Theme, (t: Theme) => vo
268
278
  export declare function resolveTheme(t: Theme): 'light' | 'dark';
269
279
 
270
280
  // --- forms ---
271
- type FormsSize = 'sm' | 'md' | 'lg';
272
281
  /** Label + control + help/error wrapper for every field. Wires id, aria-describedby and aria-invalid onto a single child control; readOnly renders the record-view stacked value with an inline-edit pencil; inline renders a settings row with the label in the left column. */
273
282
  export interface FormElementProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'label' | 'value'> {
274
283
  label?: React.ReactNode;
@@ -311,7 +320,7 @@ export interface InputProps extends Omit<React.InputHTMLAttributes<HTMLInputElem
311
320
  onClear?: () => void;
312
321
  invalid?: boolean;
313
322
  /** sm 28 · md 32 · lg 40 */
314
- size?: FormsSize;
323
+ size?: ControlSize;
315
324
  /** No border or background: inline editing in tables and headers */
316
325
  bare?: boolean;
317
326
  /** Props for the wrapping div */
@@ -324,7 +333,7 @@ export declare const Input: React.ForwardRefExoticComponent<InputProps & React.R
324
333
  /** Multi-line text field; autoGrow follows the content and maxLength shows a counter. */
325
334
  export interface TextareaProps extends Omit<React.TextareaHTMLAttributes<HTMLTextAreaElement>, 'size'> {
326
335
  invalid?: boolean;
327
- size?: FormsSize;
336
+ size?: ControlSize;
328
337
  /** Height follows the content */
329
338
  autoGrow?: boolean;
330
339
  /** "{n} / {max}" counter; over the limit it turns bad and sets aria-invalid */
@@ -341,7 +350,7 @@ export interface SelectProps extends Omit<React.SelectHTMLAttributes<HTMLSelectE
341
350
  placeholder?: string;
342
351
  icon?: string;
343
352
  invalid?: boolean;
344
- size?: FormsSize;
353
+ size?: ControlSize;
345
354
  }
346
355
  export declare const Select: React.ForwardRefExoticComponent<SelectProps & React.RefAttributes<HTMLSelectElement>>;
347
356
  /** Checkbox with label and description; indeterminate for a select-all that covers part of the set. */
@@ -436,7 +445,7 @@ export interface ComboboxProps extends Omit<React.HTMLAttributes<HTMLDivElement>
436
445
  placeholder?: string;
437
446
  disabled?: boolean;
438
447
  invalid?: boolean;
439
- size?: FormsSize;
448
+ size?: ControlSize;
440
449
  /** Leading icon in the field */
441
450
  icon?: string;
442
451
  /** Controlled open state (docs, custom triggers) */
@@ -469,7 +478,7 @@ export interface SecretFieldProps extends Omit<React.InputHTMLAttributes<HTMLInp
469
478
  onChange?: (value: string) => void;
470
479
  /** Characters left visible at the end (4) */
471
480
  revealLast?: number;
472
- size?: FormsSize;
481
+ size?: ControlSize;
473
482
  invalid?: boolean;
474
483
  labels?: { reveal?: string; hide?: string; copy?: string; copied?: string };
475
484
  }
@@ -493,7 +502,6 @@ export interface TagInputProps extends Omit<React.HTMLAttributes<HTMLDivElement>
493
502
  export declare function TagInput(props: TagInputProps): JSX.Element;
494
503
 
495
504
  // --- pickers ---
496
- type PickersSize = 'sm' | 'md' | 'lg';
497
505
  /** Date field with a calendar popover; the value is a Date. Formats 15.10.2026 for tr and 15 Oct 2026 for en through locale. */
498
506
  export interface DatepickerProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'disabled' | 'max' | 'min' | 'onChange' | 'open' | 'placeholder' | 'size' | 'value'> {
499
507
  /** A date, or [from, to] with range */
@@ -508,7 +516,7 @@ export interface DatepickerProps extends Omit<React.HTMLAttributes<HTMLDivElemen
508
516
  locale?: string;
509
517
  disabled?: boolean;
510
518
  invalid?: boolean;
511
- size?: PickersSize;
519
+ size?: ControlSize;
512
520
  min?: Date;
513
521
  max?: Date;
514
522
  /** 0 Sunday · 1 Monday (default) */
@@ -553,7 +561,7 @@ export interface TimepickerProps extends Omit<React.HTMLAttributes<HTMLDivElemen
553
561
  placeholder?: string;
554
562
  disabled?: boolean;
555
563
  invalid?: boolean;
556
- size?: PickersSize;
564
+ size?: ControlSize;
557
565
  open?: boolean;
558
566
  labels?: { empty?: string; clear?: string };
559
567
  }
@@ -570,7 +578,7 @@ export interface DatetimePickerProps extends Omit<React.HTMLAttributes<HTMLDivEl
570
578
  max?: Date;
571
579
  disabled?: boolean;
572
580
  invalid?: boolean;
573
- size?: PickersSize;
581
+ size?: ControlSize;
574
582
  labels?: CalendarProps['labels'];
575
583
  }
576
584
  export declare function DatetimePicker(props: DatetimePickerProps): JSX.Element;
@@ -605,7 +613,7 @@ export interface ColorPickerProps extends Omit<React.HTMLAttributes<HTMLDivEleme
605
613
  swatches?: (string | Swatch)[];
606
614
  disabled?: boolean;
607
615
  invalid?: boolean;
608
- size?: PickersSize;
616
+ size?: ControlSize;
609
617
  open?: boolean;
610
618
  onOpenChange?: (open: boolean) => void;
611
619
  labels?: { open?: string; custom?: string; swatches?: string; hex?: string };
@@ -621,7 +629,7 @@ export interface CounterProps extends Omit<React.HTMLAttributes<HTMLDivElement>,
621
629
  step?: number;
622
630
  disabled?: boolean;
623
631
  invalid?: boolean;
624
- size?: PickersSize;
632
+ size?: ControlSize;
625
633
  /** Mono unit after the value: "calls", "dk" */
626
634
  suffix?: React.ReactNode;
627
635
  /** Formats the displayed value while not editing */
@@ -748,9 +756,6 @@ export interface DockedFormFooterProps extends Omit<React.HTMLAttributes<HTMLDiv
748
756
  export declare function DockedFormFooter(props: DockedFormFooterProps): JSX.Element;
749
757
 
750
758
  // --- data ---
751
- export type Tone = 'neutral' | 'signal' | 'ok' | 'warn' | 'bad' | 'info';
752
- export type Size = 'xs' | 'sm' | 'md' | 'lg' | 'xl';
753
-
754
759
  /** One column of a DataTable or TreeGrid. */
755
760
  export interface DataColumn<T = any> {
756
761
  /** Field name on the row; also the sort key */
@@ -914,7 +919,7 @@ export interface AvatarProps extends Omit<React.HTMLAttributes<HTMLSpanElement>,
914
919
  /** person = circle; agent and system = square */
915
920
  kind?: 'person' | 'agent' | 'system';
916
921
  /** xs 20 · sm 24 · md 32 · lg 40 · xl 56 */
917
- size?: Size;
922
+ size?: DataSize;
918
923
  /** Lucide icon instead of initials */
919
924
  icon?: string;
920
925
  /** Product glyph for a system avatar */
@@ -925,7 +930,7 @@ export interface AvatarProps extends Omit<React.HTMLAttributes<HTMLSpanElement>,
925
930
  }
926
931
  export declare function Avatar(props: AvatarProps): JSX.Element;
927
932
  /** Overlapping avatars with a "+n" overflow. Items are names or Avatar props. */
928
- export interface AvatarGroupProps extends Omit<React.HTMLAttributes<HTMLSpanElement>, 'size'> { items: Array<string | AvatarProps>; /** Shown before the overflow (default 4) */ max?: number; size?: Size; kind?: AvatarProps['kind']; }
933
+ export interface AvatarGroupProps extends Omit<React.HTMLAttributes<HTMLSpanElement>, 'size'> { items: Array<string | AvatarProps>; /** Shown before the overflow (default 4) */ max?: number; size?: DataSize; kind?: AvatarProps['kind']; }
929
934
  export declare function AvatarGroup(props: AvatarGroupProps): JSX.Element;
930
935
 
931
936
  /** Count or one-word status on a pill. Solid signal for unread counts; soft tones for status words. */
@@ -1436,12 +1441,9 @@ export interface RoomProps extends React.HTMLAttributes<HTMLElement> {
1436
1441
  export declare function Room(props: RoomProps): JSX.Element;
1437
1442
 
1438
1443
  // --- navigation ---
1439
- type NavigationProduct = 'platform' | 'hub' | 'dialog' | 'voice' | 'vision' | 'code' | 'workforce';
1440
- type NavigationTone = 'neutral' | 'signal' | 'ok' | 'warn' | 'bad' | 'info';
1441
-
1442
1444
  /** 48px top bar: logo lockup with the product name, a search trigger with its shortcut, actions, the user's avatar. panel for consoles, ink for brand screens. */
1443
1445
  export interface GlobalHeaderProps extends React.HTMLAttributes<HTMLElement> {
1444
- /** NavigationProduct name after the wordmark ("Platform", "Dialog") */
1446
+ /** Product name after the wordmark ("Platform", "Dialog") */
1445
1447
  product?: string;
1446
1448
  /** panel (default) on --panel with a line below; ink on --text for brand screens */
1447
1449
  tone?: 'panel' | 'ink';
@@ -1468,7 +1470,7 @@ export interface GlobalHeaderProps extends React.HTMLAttributes<HTMLElement> {
1468
1470
  export declare function GlobalHeader(props: GlobalHeaderProps): JSX.Element;
1469
1471
 
1470
1472
  /** One sidebar item. */
1471
- export interface NavItem { id: string; label: string; icon?: string; href?: string; /** Count badge; a dot when collapsed */ count?: number; countTone?: NavigationTone; disabled?: boolean; }
1473
+ export interface NavItem { id: string; label: string; icon?: string; href?: string; /** Count badge; a dot when collapsed */ count?: number; countTone?: Tone; disabled?: boolean; }
1472
1474
  /** A sidebar group with its mono eyebrow (build, observe, organisation). */
1473
1475
  export interface NavGroup { id?: string; label?: string; items: NavItem[]; }
1474
1476
  /** The console sidebar: 232px (56 collapsed; `width` or `resizable`), logo top-left, search, an optional tree slot, groups under mono eyebrows, 32px items with icon, label and count; product switcher at the bottom. */
@@ -1479,7 +1481,7 @@ export interface VerticalNavigationProps extends Omit<React.HTMLAttributes<HTMLE
1479
1481
  collapsed?: boolean;
1480
1482
  /** Shows the collapse toggle */
1481
1483
  onCollapse?: (collapsed: boolean) => void;
1482
- /** NavigationProduct name in the logo lockup */
1484
+ /** Product name in the logo lockup */
1483
1485
  product?: string;
1484
1486
  /** Search trigger under the logo */
1485
1487
  search?: { onClick?: () => void; label?: string; placeholder?: string; shortcut?: string };
@@ -1530,7 +1532,7 @@ export interface TabsProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'o
1530
1532
  export declare function Tabs(props: TabsProps): JSX.Element;
1531
1533
 
1532
1534
  /** One top-navigation item. */
1533
- export interface GlobalNavItem { id: string; label: React.ReactNode; icon?: string; href?: string; /** Count badge (signal on the active item unless countTone) */ count?: number; countTone?: NavigationTone; disabled?: boolean; }
1535
+ export interface GlobalNavItem { id: string; label: React.ReactNode; icon?: string; href?: string; /** Count badge (signal on the active item unless countTone) */ count?: number; countTone?: Tone; disabled?: boolean; }
1534
1536
  /** Horizontal top navigation for GlobalHeader shells: the product's sections in a row, the active one underlined in --signal, ←/→ between items, overflow into a More menu. Pages, not views of one object (that is Tabs). */
1535
1537
  export interface GlobalNavigationProps extends Omit<React.HTMLAttributes<HTMLElement>, 'onChange'> {
1536
1538
  items: GlobalNavItem[];
@@ -1612,14 +1614,14 @@ export interface SplitViewProps extends Omit<React.HTMLAttributes<HTMLDivElement
1612
1614
  }
1613
1615
  export declare function SplitView(props: SplitViewProps): JSX.Element;
1614
1616
 
1615
- /** NavigationProduct switcher: the seven boxed product glyphs with their names, the current one marked. */
1617
+ /** Product switcher: the seven boxed product glyphs with their names, the current one marked. */
1616
1618
  export interface AppLauncherProps extends React.HTMLAttributes<HTMLDivElement> {
1617
1619
  /** Ids or { id, name, description, href } (default all seven) */
1618
- products?: Array<NavigationProduct | { id: NavigationProduct; name?: string; description?: string; href?: string }>;
1619
- current?: NavigationProduct;
1620
- onOpen?: (id: NavigationProduct, product: any) => void;
1621
- hrefs?: Partial<Record<NavigationProduct, string>>;
1622
- descriptions?: Partial<Record<NavigationProduct, string>>;
1620
+ products?: Array<Product | { id: Product; name?: string; description?: string; href?: string }>;
1621
+ current?: Product;
1622
+ onOpen?: (id: Product, product: any) => void;
1623
+ hrefs?: Partial<Record<Product, string>>;
1624
+ descriptions?: Partial<Record<Product, string>>;
1623
1625
  /** No popover frame (inside a sidebar footer) */
1624
1626
  inline?: boolean;
1625
1627
  labels?: { title?: string; current?: string };
@@ -1628,7 +1630,7 @@ export declare const AppLauncher: ((props: AppLauncherProps) => JSX.Element) & {
1628
1630
  /** The sidebar's product-switcher row: current product glyph, name and an up-down chevron, styled as a nav item; opens an AppLauncher in a Popover. Also AppLauncher.Trigger. */
1629
1631
  export interface AppLauncherTriggerProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'name' | 'open'> {
1630
1632
  /** Current product (default platform) */
1631
- product?: NavigationProduct;
1633
+ product?: Product;
1632
1634
  /** Overrides the product name */
1633
1635
  name?: string;
1634
1636
  /** Lucide icon instead of the product glyph, for a surface that has none (the data console: "database") */
@@ -1672,7 +1674,7 @@ export interface BuilderHeaderProps extends Omit<React.HTMLAttributes<HTMLElemen
1672
1674
  /** Version tag ("v8") */
1673
1675
  version?: string;
1674
1676
  /** Status Tag: a word or { label, tone, dot, icon } */
1675
- status?: string | { label: string; tone?: NavigationTone; dot?: boolean; icon?: string };
1677
+ status?: string | { label: string; tone?: Tone; dot?: boolean; icon?: string };
1676
1678
  onBack?: () => void;
1677
1679
  backHref?: string;
1678
1680
  onDeploy?: () => void;
@@ -2662,9 +2664,6 @@ export declare function fmtInt(value: number, locale?: string): string;
2662
2664
  export declare function fmtClock(seconds: number): string;
2663
2665
 
2664
2666
  // --- dashboard ---
2665
- type DashboardProduct = 'platform' | 'hub' | 'dialog' | 'voice' | 'vision' | 'code' | 'workforce';
2666
- type DashboardTone = 'neutral' | 'signal' | 'ok' | 'warn' | 'bad' | 'info';
2667
-
2668
2667
  /** Dashboard KPI: a Stat (value, label, delta) with a Sparkline in a flat Card. Use plain (or KpiRow) when the KPIs are the page summary, which is never boxed. */
2669
2668
  export interface KpiWidgetProps extends Omit<React.HTMLAttributes<HTMLElement>, 'icon' | 'label' | 'size' | 'value'> {
2670
2669
  /** Mono uppercase label: "Runs this week" */
@@ -2844,10 +2843,10 @@ export interface RecordSummaryWidgetProps extends Omit<React.HTMLAttributes<HTML
2844
2843
  avatar?: string;
2845
2844
  /** Lucide icon for the BlockIcon (bot) */
2846
2845
  icon?: string;
2847
- /** DashboardProduct glyph for the BlockIcon */
2848
- product?: DashboardProduct;
2846
+ /** Product glyph for the BlockIcon */
2847
+ product?: Product;
2849
2848
  /** A word or { label, tone, dot, icon } */
2850
- status?: string | { label: React.ReactNode; tone?: DashboardTone; dot?: boolean; icon?: string };
2849
+ status?: string | { label: React.ReactNode; tone?: Tone; dot?: boolean; icon?: string };
2851
2850
  /** SummaryDetail fields (dense) */
2852
2851
  fields?: { key?: string; label: React.ReactNode; value?: React.ReactNode; mono?: boolean; tone?: 'ok' | 'warn' | 'bad' }[];
2853
2852
  /** Path steps; omit for records without stages */
@@ -2904,7 +2903,7 @@ export interface ActivityWidgetProps extends Omit<React.HTMLAttributes<HTMLEleme
2904
2903
  export declare function ActivityWidget(props: ActivityWidgetProps): JSX.Element;
2905
2904
 
2906
2905
  /** One action tile. */
2907
- export interface QuickAction { id?: string; label: string; icon?: string; product?: DashboardProduct; description?: string; /** Kbd hint: ["⌘", "N"] or "G L" (the consumer binds the keys) */ shortcut?: string | string[]; tone?: DashboardTone; badge?: number; disabled?: boolean; onClick?: (a: QuickAction) => void; }
2906
+ export interface QuickAction { id?: string; label: string; icon?: string; product?: Product; description?: string; /** Kbd hint: ["⌘", "N"] or "G L" (the consumer binds the keys) */ shortcut?: string | string[]; tone?: Tone; badge?: number; disabled?: boolean; onClick?: (a: QuickAction) => void; }
2908
2907
  /** A grid of action tiles (BlockIcon, label, optional line, Kbd hint, badge) for the shortcuts people take most; inside a Card when titled. */
2909
2908
  export interface QuickActionsProps extends Omit<React.HTMLAttributes<HTMLElement>, 'title'> {
2910
2909
  actions: QuickAction[];
@@ -2937,7 +2936,7 @@ export interface NotificationsWidgetProps extends Omit<React.HTMLAttributes<HTML
2937
2936
  export declare function NotificationsWidget(props: NotificationsWidgetProps): JSX.Element;
2938
2937
 
2939
2938
  /** One step of the mini canvas. */
2940
- export interface FlowStep { id?: string; name: React.ReactNode; /** Block type in mono: "LLM · understand" */ kind?: React.ReactNode; icon?: string; product?: DashboardProduct; /** done · running (execution ring) · error · waiting (warn ring, human approval) · upcoming (dashed) */ state?: 'done' | 'running' | 'error' | 'waiting' | 'upcoming'; /** Runs at or through this step */ runs?: number; }
2939
+ export interface FlowStep { id?: string; name: React.ReactNode; /** Block type in mono: "LLM · understand" */ kind?: React.ReactNode; icon?: string; product?: Product; /** done · running (execution ring) · error · waiting (warn ring, human approval) · upcoming (dashed) */ state?: 'done' | 'running' | 'error' | 'waiting' | 'upcoming'; /** Runs at or through this step */ runs?: number; }
2941
2940
  /** A read-only mini canvas in a Card: three to six CanvasBlocks in a row joined by CanvasEdges, the running step ringed in execution, a caption per step saying where the live runs are. */
2942
2941
  export interface AgentFlowWidgetProps extends Omit<React.HTMLAttributes<HTMLElement>, 'title'> {
2943
2942
  agent?: React.ReactNode;
@@ -2959,7 +2958,7 @@ export interface AgentFlowWidgetProps extends Omit<React.HTMLAttributes<HTMLElem
2959
2958
  export declare function AgentFlowWidget(props: AgentFlowWidgetProps): JSX.Element;
2960
2959
 
2961
2960
  /** One ranked row. */
2962
- export interface LeaderRow { id?: string; name: string; sub?: React.ReactNode; kind?: 'agent' | 'person' | 'system'; product?: DashboardProduct; icon?: string; value: number; /** Change since the last period, in the value's unit */ delta?: number; }
2961
+ export interface LeaderRow { id?: string; name: string; sub?: React.ReactNode; kind?: 'agent' | 'person' | 'system'; product?: Product; icon?: string; value: number; /** Change since the last period, in the value's unit */ delta?: number; }
2963
2962
  /** Ranked rows in a Card: an agent or a person, a bar against the leader, the value and the change since the last period; optional period switch. */
2964
2963
  export interface LeaderboardWidgetProps extends Omit<React.HTMLAttributes<HTMLElement>, 'format' | 'max' | 'title'> {
2965
2964
  rows: LeaderRow[];
@@ -2985,7 +2984,7 @@ export interface LeaderboardWidgetProps extends Omit<React.HTMLAttributes<HTMLEl
2985
2984
  export declare function LeaderboardWidget(props: LeaderboardWidgetProps): JSX.Element;
2986
2985
 
2987
2986
  /** A CalendarView event with the agenda's extra fields. */
2988
- export interface AgendaEvent { id?: string | number; title: string; start: Date | string; end?: Date | string; allDay?: boolean; tone?: DashboardTone; kind?: 'run' | 'review' | 'call' | 'maintenance' | 'deploy' | 'meeting' | string; tenant?: string; meta?: React.ReactNode; }
2987
+ export interface AgendaEvent { id?: string | number; title: string; start: Date | string; end?: Date | string; allDay?: boolean; tone?: Tone; kind?: 'run' | 'review' | 'call' | 'maintenance' | 'deploy' | 'meeting' | string; tenant?: string; meta?: React.ReactNode; }
2989
2988
  /** One day of CalendarView events in a Card: a time rail, a tone bar per event, done / live / in n min, and a now line. */
2990
2989
  export interface AgendaWidgetProps extends Omit<React.HTMLAttributes<HTMLElement>, 'max' | 'title'> {
2991
2990
  /** Events of any day; only the shown day's are listed */
@@ -3024,7 +3023,7 @@ export interface OnboardingWidgetProps extends Omit<React.HTMLAttributes<HTMLEle
3024
3023
  export declare function OnboardingWidget(props: OnboardingWidgetProps): JSX.Element;
3025
3024
 
3026
3025
  /** One comment: FeedPost fields plus resolved. */
3027
- export interface CommentItem { id?: string | number; author: string | { name: string; kind?: 'person' | 'agent' | 'system'; product?: DashboardProduct }; kind?: 'person' | 'agent' | 'system'; action?: React.ReactNode; target?: React.ReactNode; time?: string; /** @handles are picked out in link colour */ text: React.ReactNode; replies?: any[]; likes?: number; liked?: boolean; resolved?: boolean; /** warn wraps the body (an escalation) */ tone?: 'warn'; }
3026
+ export interface CommentItem { id?: string | number; author: string | { name: string; kind?: 'person' | 'agent' | 'system'; product?: Product }; kind?: 'person' | 'agent' | 'system'; action?: React.ReactNode; target?: React.ReactNode; time?: string; /** @handles are picked out in link colour */ text: React.ReactNode; replies?: any[]; likes?: number; liked?: boolean; resolved?: boolean; /** warn wraps the body (an escalation) */ tone?: 'warn'; }
3028
3027
  /** A comment thread in a Card: FeedPosts with @mentions picked out, replies and likes, and the Publisher docked under the list. */
3029
3028
  export interface CommentsWidgetProps extends Omit<React.HTMLAttributes<HTMLElement>, 'onSubmit' | 'title'> {
3030
3029
  comments: CommentItem[];
package/dist/index.d.ts CHANGED
@@ -4,6 +4,16 @@ import * as React from 'react';
4
4
  import JSX = React.JSX;
5
5
 
6
6
  // --- core ---
7
+ /** Status tone shared by Tag, Badge, Alert, Stat deltas and widgets: neutral · signal · ok · warn · bad · info. Always paired with a word or icon. */
8
+ export type Tone = 'neutral' | 'signal' | 'ok' | 'warn' | 'bad' | 'info';
9
+ /** One of the seven product families (aginies.com). */
10
+ export type Product = 'platform' | 'hub' | 'dialog' | 'voice' | 'vision' | 'code' | 'workforce';
11
+ /** Control size: sm 28 · md 32 · lg 40 (compact density). */
12
+ export type ControlSize = 'sm' | 'md' | 'lg';
13
+ /** Avatar / display size scale. */
14
+ export type DataSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';
15
+ /** @deprecated Use `DataSize`; kept because 0.1.0–0.3.0 exported this name. */
16
+ export type Size = DataSize;
7
17
  /** A Lucide glyph by name, inline, inheriting currentColor. Stroke 2 at ≤16px, 1.75 above. */
8
18
  export interface IconProps extends Omit<React.SVGAttributes<SVGSVGElement>, 'color' | 'name' | 'size' | 'title'> {
9
19
  /** Lucide name in kebab-case (circle-check, triangle-alert, loader-circle, sparkles) */
@@ -268,7 +278,6 @@ export declare function useTheme(defaultTheme?: Theme): [Theme, (t: Theme) => vo
268
278
  export declare function resolveTheme(t: Theme): 'light' | 'dark';
269
279
 
270
280
  // --- forms ---
271
- type FormsSize = 'sm' | 'md' | 'lg';
272
281
  /** Label + control + help/error wrapper for every field. Wires id, aria-describedby and aria-invalid onto a single child control; readOnly renders the record-view stacked value with an inline-edit pencil; inline renders a settings row with the label in the left column. */
273
282
  export interface FormElementProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'label' | 'value'> {
274
283
  label?: React.ReactNode;
@@ -311,7 +320,7 @@ export interface InputProps extends Omit<React.InputHTMLAttributes<HTMLInputElem
311
320
  onClear?: () => void;
312
321
  invalid?: boolean;
313
322
  /** sm 28 · md 32 · lg 40 */
314
- size?: FormsSize;
323
+ size?: ControlSize;
315
324
  /** No border or background: inline editing in tables and headers */
316
325
  bare?: boolean;
317
326
  /** Props for the wrapping div */
@@ -324,7 +333,7 @@ export declare const Input: React.ForwardRefExoticComponent<InputProps & React.R
324
333
  /** Multi-line text field; autoGrow follows the content and maxLength shows a counter. */
325
334
  export interface TextareaProps extends Omit<React.TextareaHTMLAttributes<HTMLTextAreaElement>, 'size'> {
326
335
  invalid?: boolean;
327
- size?: FormsSize;
336
+ size?: ControlSize;
328
337
  /** Height follows the content */
329
338
  autoGrow?: boolean;
330
339
  /** "{n} / {max}" counter; over the limit it turns bad and sets aria-invalid */
@@ -341,7 +350,7 @@ export interface SelectProps extends Omit<React.SelectHTMLAttributes<HTMLSelectE
341
350
  placeholder?: string;
342
351
  icon?: string;
343
352
  invalid?: boolean;
344
- size?: FormsSize;
353
+ size?: ControlSize;
345
354
  }
346
355
  export declare const Select: React.ForwardRefExoticComponent<SelectProps & React.RefAttributes<HTMLSelectElement>>;
347
356
  /** Checkbox with label and description; indeterminate for a select-all that covers part of the set. */
@@ -436,7 +445,7 @@ export interface ComboboxProps extends Omit<React.HTMLAttributes<HTMLDivElement>
436
445
  placeholder?: string;
437
446
  disabled?: boolean;
438
447
  invalid?: boolean;
439
- size?: FormsSize;
448
+ size?: ControlSize;
440
449
  /** Leading icon in the field */
441
450
  icon?: string;
442
451
  /** Controlled open state (docs, custom triggers) */
@@ -469,7 +478,7 @@ export interface SecretFieldProps extends Omit<React.InputHTMLAttributes<HTMLInp
469
478
  onChange?: (value: string) => void;
470
479
  /** Characters left visible at the end (4) */
471
480
  revealLast?: number;
472
- size?: FormsSize;
481
+ size?: ControlSize;
473
482
  invalid?: boolean;
474
483
  labels?: { reveal?: string; hide?: string; copy?: string; copied?: string };
475
484
  }
@@ -493,7 +502,6 @@ export interface TagInputProps extends Omit<React.HTMLAttributes<HTMLDivElement>
493
502
  export declare function TagInput(props: TagInputProps): JSX.Element;
494
503
 
495
504
  // --- pickers ---
496
- type PickersSize = 'sm' | 'md' | 'lg';
497
505
  /** Date field with a calendar popover; the value is a Date. Formats 15.10.2026 for tr and 15 Oct 2026 for en through locale. */
498
506
  export interface DatepickerProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'disabled' | 'max' | 'min' | 'onChange' | 'open' | 'placeholder' | 'size' | 'value'> {
499
507
  /** A date, or [from, to] with range */
@@ -508,7 +516,7 @@ export interface DatepickerProps extends Omit<React.HTMLAttributes<HTMLDivElemen
508
516
  locale?: string;
509
517
  disabled?: boolean;
510
518
  invalid?: boolean;
511
- size?: PickersSize;
519
+ size?: ControlSize;
512
520
  min?: Date;
513
521
  max?: Date;
514
522
  /** 0 Sunday · 1 Monday (default) */
@@ -553,7 +561,7 @@ export interface TimepickerProps extends Omit<React.HTMLAttributes<HTMLDivElemen
553
561
  placeholder?: string;
554
562
  disabled?: boolean;
555
563
  invalid?: boolean;
556
- size?: PickersSize;
564
+ size?: ControlSize;
557
565
  open?: boolean;
558
566
  labels?: { empty?: string; clear?: string };
559
567
  }
@@ -570,7 +578,7 @@ export interface DatetimePickerProps extends Omit<React.HTMLAttributes<HTMLDivEl
570
578
  max?: Date;
571
579
  disabled?: boolean;
572
580
  invalid?: boolean;
573
- size?: PickersSize;
581
+ size?: ControlSize;
574
582
  labels?: CalendarProps['labels'];
575
583
  }
576
584
  export declare function DatetimePicker(props: DatetimePickerProps): JSX.Element;
@@ -605,7 +613,7 @@ export interface ColorPickerProps extends Omit<React.HTMLAttributes<HTMLDivEleme
605
613
  swatches?: (string | Swatch)[];
606
614
  disabled?: boolean;
607
615
  invalid?: boolean;
608
- size?: PickersSize;
616
+ size?: ControlSize;
609
617
  open?: boolean;
610
618
  onOpenChange?: (open: boolean) => void;
611
619
  labels?: { open?: string; custom?: string; swatches?: string; hex?: string };
@@ -621,7 +629,7 @@ export interface CounterProps extends Omit<React.HTMLAttributes<HTMLDivElement>,
621
629
  step?: number;
622
630
  disabled?: boolean;
623
631
  invalid?: boolean;
624
- size?: PickersSize;
632
+ size?: ControlSize;
625
633
  /** Mono unit after the value: "calls", "dk" */
626
634
  suffix?: React.ReactNode;
627
635
  /** Formats the displayed value while not editing */
@@ -748,9 +756,6 @@ export interface DockedFormFooterProps extends Omit<React.HTMLAttributes<HTMLDiv
748
756
  export declare function DockedFormFooter(props: DockedFormFooterProps): JSX.Element;
749
757
 
750
758
  // --- data ---
751
- export type Tone = 'neutral' | 'signal' | 'ok' | 'warn' | 'bad' | 'info';
752
- export type Size = 'xs' | 'sm' | 'md' | 'lg' | 'xl';
753
-
754
759
  /** One column of a DataTable or TreeGrid. */
755
760
  export interface DataColumn<T = any> {
756
761
  /** Field name on the row; also the sort key */
@@ -914,7 +919,7 @@ export interface AvatarProps extends Omit<React.HTMLAttributes<HTMLSpanElement>,
914
919
  /** person = circle; agent and system = square */
915
920
  kind?: 'person' | 'agent' | 'system';
916
921
  /** xs 20 · sm 24 · md 32 · lg 40 · xl 56 */
917
- size?: Size;
922
+ size?: DataSize;
918
923
  /** Lucide icon instead of initials */
919
924
  icon?: string;
920
925
  /** Product glyph for a system avatar */
@@ -925,7 +930,7 @@ export interface AvatarProps extends Omit<React.HTMLAttributes<HTMLSpanElement>,
925
930
  }
926
931
  export declare function Avatar(props: AvatarProps): JSX.Element;
927
932
  /** Overlapping avatars with a "+n" overflow. Items are names or Avatar props. */
928
- export interface AvatarGroupProps extends Omit<React.HTMLAttributes<HTMLSpanElement>, 'size'> { items: Array<string | AvatarProps>; /** Shown before the overflow (default 4) */ max?: number; size?: Size; kind?: AvatarProps['kind']; }
933
+ export interface AvatarGroupProps extends Omit<React.HTMLAttributes<HTMLSpanElement>, 'size'> { items: Array<string | AvatarProps>; /** Shown before the overflow (default 4) */ max?: number; size?: DataSize; kind?: AvatarProps['kind']; }
929
934
  export declare function AvatarGroup(props: AvatarGroupProps): JSX.Element;
930
935
 
931
936
  /** Count or one-word status on a pill. Solid signal for unread counts; soft tones for status words. */
@@ -1436,12 +1441,9 @@ export interface RoomProps extends React.HTMLAttributes<HTMLElement> {
1436
1441
  export declare function Room(props: RoomProps): JSX.Element;
1437
1442
 
1438
1443
  // --- navigation ---
1439
- type NavigationProduct = 'platform' | 'hub' | 'dialog' | 'voice' | 'vision' | 'code' | 'workforce';
1440
- type NavigationTone = 'neutral' | 'signal' | 'ok' | 'warn' | 'bad' | 'info';
1441
-
1442
1444
  /** 48px top bar: logo lockup with the product name, a search trigger with its shortcut, actions, the user's avatar. panel for consoles, ink for brand screens. */
1443
1445
  export interface GlobalHeaderProps extends React.HTMLAttributes<HTMLElement> {
1444
- /** NavigationProduct name after the wordmark ("Platform", "Dialog") */
1446
+ /** Product name after the wordmark ("Platform", "Dialog") */
1445
1447
  product?: string;
1446
1448
  /** panel (default) on --panel with a line below; ink on --text for brand screens */
1447
1449
  tone?: 'panel' | 'ink';
@@ -1468,7 +1470,7 @@ export interface GlobalHeaderProps extends React.HTMLAttributes<HTMLElement> {
1468
1470
  export declare function GlobalHeader(props: GlobalHeaderProps): JSX.Element;
1469
1471
 
1470
1472
  /** One sidebar item. */
1471
- export interface NavItem { id: string; label: string; icon?: string; href?: string; /** Count badge; a dot when collapsed */ count?: number; countTone?: NavigationTone; disabled?: boolean; }
1473
+ export interface NavItem { id: string; label: string; icon?: string; href?: string; /** Count badge; a dot when collapsed */ count?: number; countTone?: Tone; disabled?: boolean; }
1472
1474
  /** A sidebar group with its mono eyebrow (build, observe, organisation). */
1473
1475
  export interface NavGroup { id?: string; label?: string; items: NavItem[]; }
1474
1476
  /** The console sidebar: 232px (56 collapsed; `width` or `resizable`), logo top-left, search, an optional tree slot, groups under mono eyebrows, 32px items with icon, label and count; product switcher at the bottom. */
@@ -1479,7 +1481,7 @@ export interface VerticalNavigationProps extends Omit<React.HTMLAttributes<HTMLE
1479
1481
  collapsed?: boolean;
1480
1482
  /** Shows the collapse toggle */
1481
1483
  onCollapse?: (collapsed: boolean) => void;
1482
- /** NavigationProduct name in the logo lockup */
1484
+ /** Product name in the logo lockup */
1483
1485
  product?: string;
1484
1486
  /** Search trigger under the logo */
1485
1487
  search?: { onClick?: () => void; label?: string; placeholder?: string; shortcut?: string };
@@ -1530,7 +1532,7 @@ export interface TabsProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'o
1530
1532
  export declare function Tabs(props: TabsProps): JSX.Element;
1531
1533
 
1532
1534
  /** One top-navigation item. */
1533
- export interface GlobalNavItem { id: string; label: React.ReactNode; icon?: string; href?: string; /** Count badge (signal on the active item unless countTone) */ count?: number; countTone?: NavigationTone; disabled?: boolean; }
1535
+ export interface GlobalNavItem { id: string; label: React.ReactNode; icon?: string; href?: string; /** Count badge (signal on the active item unless countTone) */ count?: number; countTone?: Tone; disabled?: boolean; }
1534
1536
  /** Horizontal top navigation for GlobalHeader shells: the product's sections in a row, the active one underlined in --signal, ←/→ between items, overflow into a More menu. Pages, not views of one object (that is Tabs). */
1535
1537
  export interface GlobalNavigationProps extends Omit<React.HTMLAttributes<HTMLElement>, 'onChange'> {
1536
1538
  items: GlobalNavItem[];
@@ -1612,14 +1614,14 @@ export interface SplitViewProps extends Omit<React.HTMLAttributes<HTMLDivElement
1612
1614
  }
1613
1615
  export declare function SplitView(props: SplitViewProps): JSX.Element;
1614
1616
 
1615
- /** NavigationProduct switcher: the seven boxed product glyphs with their names, the current one marked. */
1617
+ /** Product switcher: the seven boxed product glyphs with their names, the current one marked. */
1616
1618
  export interface AppLauncherProps extends React.HTMLAttributes<HTMLDivElement> {
1617
1619
  /** Ids or { id, name, description, href } (default all seven) */
1618
- products?: Array<NavigationProduct | { id: NavigationProduct; name?: string; description?: string; href?: string }>;
1619
- current?: NavigationProduct;
1620
- onOpen?: (id: NavigationProduct, product: any) => void;
1621
- hrefs?: Partial<Record<NavigationProduct, string>>;
1622
- descriptions?: Partial<Record<NavigationProduct, string>>;
1620
+ products?: Array<Product | { id: Product; name?: string; description?: string; href?: string }>;
1621
+ current?: Product;
1622
+ onOpen?: (id: Product, product: any) => void;
1623
+ hrefs?: Partial<Record<Product, string>>;
1624
+ descriptions?: Partial<Record<Product, string>>;
1623
1625
  /** No popover frame (inside a sidebar footer) */
1624
1626
  inline?: boolean;
1625
1627
  labels?: { title?: string; current?: string };
@@ -1628,7 +1630,7 @@ export declare const AppLauncher: ((props: AppLauncherProps) => JSX.Element) & {
1628
1630
  /** The sidebar's product-switcher row: current product glyph, name and an up-down chevron, styled as a nav item; opens an AppLauncher in a Popover. Also AppLauncher.Trigger. */
1629
1631
  export interface AppLauncherTriggerProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'name' | 'open'> {
1630
1632
  /** Current product (default platform) */
1631
- product?: NavigationProduct;
1633
+ product?: Product;
1632
1634
  /** Overrides the product name */
1633
1635
  name?: string;
1634
1636
  /** Lucide icon instead of the product glyph, for a surface that has none (the data console: "database") */
@@ -1672,7 +1674,7 @@ export interface BuilderHeaderProps extends Omit<React.HTMLAttributes<HTMLElemen
1672
1674
  /** Version tag ("v8") */
1673
1675
  version?: string;
1674
1676
  /** Status Tag: a word or { label, tone, dot, icon } */
1675
- status?: string | { label: string; tone?: NavigationTone; dot?: boolean; icon?: string };
1677
+ status?: string | { label: string; tone?: Tone; dot?: boolean; icon?: string };
1676
1678
  onBack?: () => void;
1677
1679
  backHref?: string;
1678
1680
  onDeploy?: () => void;
@@ -2662,9 +2664,6 @@ export declare function fmtInt(value: number, locale?: string): string;
2662
2664
  export declare function fmtClock(seconds: number): string;
2663
2665
 
2664
2666
  // --- dashboard ---
2665
- type DashboardProduct = 'platform' | 'hub' | 'dialog' | 'voice' | 'vision' | 'code' | 'workforce';
2666
- type DashboardTone = 'neutral' | 'signal' | 'ok' | 'warn' | 'bad' | 'info';
2667
-
2668
2667
  /** Dashboard KPI: a Stat (value, label, delta) with a Sparkline in a flat Card. Use plain (or KpiRow) when the KPIs are the page summary, which is never boxed. */
2669
2668
  export interface KpiWidgetProps extends Omit<React.HTMLAttributes<HTMLElement>, 'icon' | 'label' | 'size' | 'value'> {
2670
2669
  /** Mono uppercase label: "Runs this week" */
@@ -2844,10 +2843,10 @@ export interface RecordSummaryWidgetProps extends Omit<React.HTMLAttributes<HTML
2844
2843
  avatar?: string;
2845
2844
  /** Lucide icon for the BlockIcon (bot) */
2846
2845
  icon?: string;
2847
- /** DashboardProduct glyph for the BlockIcon */
2848
- product?: DashboardProduct;
2846
+ /** Product glyph for the BlockIcon */
2847
+ product?: Product;
2849
2848
  /** A word or { label, tone, dot, icon } */
2850
- status?: string | { label: React.ReactNode; tone?: DashboardTone; dot?: boolean; icon?: string };
2849
+ status?: string | { label: React.ReactNode; tone?: Tone; dot?: boolean; icon?: string };
2851
2850
  /** SummaryDetail fields (dense) */
2852
2851
  fields?: { key?: string; label: React.ReactNode; value?: React.ReactNode; mono?: boolean; tone?: 'ok' | 'warn' | 'bad' }[];
2853
2852
  /** Path steps; omit for records without stages */
@@ -2904,7 +2903,7 @@ export interface ActivityWidgetProps extends Omit<React.HTMLAttributes<HTMLEleme
2904
2903
  export declare function ActivityWidget(props: ActivityWidgetProps): JSX.Element;
2905
2904
 
2906
2905
  /** One action tile. */
2907
- export interface QuickAction { id?: string; label: string; icon?: string; product?: DashboardProduct; description?: string; /** Kbd hint: ["⌘", "N"] or "G L" (the consumer binds the keys) */ shortcut?: string | string[]; tone?: DashboardTone; badge?: number; disabled?: boolean; onClick?: (a: QuickAction) => void; }
2906
+ export interface QuickAction { id?: string; label: string; icon?: string; product?: Product; description?: string; /** Kbd hint: ["⌘", "N"] or "G L" (the consumer binds the keys) */ shortcut?: string | string[]; tone?: Tone; badge?: number; disabled?: boolean; onClick?: (a: QuickAction) => void; }
2908
2907
  /** A grid of action tiles (BlockIcon, label, optional line, Kbd hint, badge) for the shortcuts people take most; inside a Card when titled. */
2909
2908
  export interface QuickActionsProps extends Omit<React.HTMLAttributes<HTMLElement>, 'title'> {
2910
2909
  actions: QuickAction[];
@@ -2937,7 +2936,7 @@ export interface NotificationsWidgetProps extends Omit<React.HTMLAttributes<HTML
2937
2936
  export declare function NotificationsWidget(props: NotificationsWidgetProps): JSX.Element;
2938
2937
 
2939
2938
  /** One step of the mini canvas. */
2940
- export interface FlowStep { id?: string; name: React.ReactNode; /** Block type in mono: "LLM · understand" */ kind?: React.ReactNode; icon?: string; product?: DashboardProduct; /** done · running (execution ring) · error · waiting (warn ring, human approval) · upcoming (dashed) */ state?: 'done' | 'running' | 'error' | 'waiting' | 'upcoming'; /** Runs at or through this step */ runs?: number; }
2939
+ export interface FlowStep { id?: string; name: React.ReactNode; /** Block type in mono: "LLM · understand" */ kind?: React.ReactNode; icon?: string; product?: Product; /** done · running (execution ring) · error · waiting (warn ring, human approval) · upcoming (dashed) */ state?: 'done' | 'running' | 'error' | 'waiting' | 'upcoming'; /** Runs at or through this step */ runs?: number; }
2941
2940
  /** A read-only mini canvas in a Card: three to six CanvasBlocks in a row joined by CanvasEdges, the running step ringed in execution, a caption per step saying where the live runs are. */
2942
2941
  export interface AgentFlowWidgetProps extends Omit<React.HTMLAttributes<HTMLElement>, 'title'> {
2943
2942
  agent?: React.ReactNode;
@@ -2959,7 +2958,7 @@ export interface AgentFlowWidgetProps extends Omit<React.HTMLAttributes<HTMLElem
2959
2958
  export declare function AgentFlowWidget(props: AgentFlowWidgetProps): JSX.Element;
2960
2959
 
2961
2960
  /** One ranked row. */
2962
- export interface LeaderRow { id?: string; name: string; sub?: React.ReactNode; kind?: 'agent' | 'person' | 'system'; product?: DashboardProduct; icon?: string; value: number; /** Change since the last period, in the value's unit */ delta?: number; }
2961
+ export interface LeaderRow { id?: string; name: string; sub?: React.ReactNode; kind?: 'agent' | 'person' | 'system'; product?: Product; icon?: string; value: number; /** Change since the last period, in the value's unit */ delta?: number; }
2963
2962
  /** Ranked rows in a Card: an agent or a person, a bar against the leader, the value and the change since the last period; optional period switch. */
2964
2963
  export interface LeaderboardWidgetProps extends Omit<React.HTMLAttributes<HTMLElement>, 'format' | 'max' | 'title'> {
2965
2964
  rows: LeaderRow[];
@@ -2985,7 +2984,7 @@ export interface LeaderboardWidgetProps extends Omit<React.HTMLAttributes<HTMLEl
2985
2984
  export declare function LeaderboardWidget(props: LeaderboardWidgetProps): JSX.Element;
2986
2985
 
2987
2986
  /** A CalendarView event with the agenda's extra fields. */
2988
- export interface AgendaEvent { id?: string | number; title: string; start: Date | string; end?: Date | string; allDay?: boolean; tone?: DashboardTone; kind?: 'run' | 'review' | 'call' | 'maintenance' | 'deploy' | 'meeting' | string; tenant?: string; meta?: React.ReactNode; }
2987
+ export interface AgendaEvent { id?: string | number; title: string; start: Date | string; end?: Date | string; allDay?: boolean; tone?: Tone; kind?: 'run' | 'review' | 'call' | 'maintenance' | 'deploy' | 'meeting' | string; tenant?: string; meta?: React.ReactNode; }
2989
2988
  /** One day of CalendarView events in a Card: a time rail, a tone bar per event, done / live / in n min, and a now line. */
2990
2989
  export interface AgendaWidgetProps extends Omit<React.HTMLAttributes<HTMLElement>, 'max' | 'title'> {
2991
2990
  /** Events of any day; only the shown day's are listed */
@@ -3024,7 +3023,7 @@ export interface OnboardingWidgetProps extends Omit<React.HTMLAttributes<HTMLEle
3024
3023
  export declare function OnboardingWidget(props: OnboardingWidgetProps): JSX.Element;
3025
3024
 
3026
3025
  /** One comment: FeedPost fields plus resolved. */
3027
- export interface CommentItem { id?: string | number; author: string | { name: string; kind?: 'person' | 'agent' | 'system'; product?: DashboardProduct }; kind?: 'person' | 'agent' | 'system'; action?: React.ReactNode; target?: React.ReactNode; time?: string; /** @handles are picked out in link colour */ text: React.ReactNode; replies?: any[]; likes?: number; liked?: boolean; resolved?: boolean; /** warn wraps the body (an escalation) */ tone?: 'warn'; }
3026
+ export interface CommentItem { id?: string | number; author: string | { name: string; kind?: 'person' | 'agent' | 'system'; product?: Product }; kind?: 'person' | 'agent' | 'system'; action?: React.ReactNode; target?: React.ReactNode; time?: string; /** @handles are picked out in link colour */ text: React.ReactNode; replies?: any[]; likes?: number; liked?: boolean; resolved?: boolean; /** warn wraps the body (an escalation) */ tone?: 'warn'; }
3028
3027
  /** A comment thread in a Card: FeedPosts with @mentions picked out, replies and likes, and the Publisher docked under the list. */
3029
3028
  export interface CommentsWidgetProps extends Omit<React.HTMLAttributes<HTMLElement>, 'onSubmit' | 'title'> {
3030
3029
  comments: CommentItem[];
package/dist/styles.css CHANGED
@@ -1107,7 +1107,7 @@ button.agn-card:disabled { cursor: default; opacity: .55; }
1107
1107
  .agn-card__footer { display: flex; align-items: center; justify-content: center; min-height: 36px; padding: var(--space-1) var(--space-3); border-top: 1px solid var(--line); font-size: 12px; }
1108
1108
 
1109
1109
  /* ---- Toolbar ---- */
1110
- .agn-toolbar { display: flex; align-items: center; gap: var(--space-2); min-height: var(--control-h); padding: var(--space-2) 0; background: var(--bg); min-width: 0; }
1110
+ .agn-toolbar { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-2); min-height: var(--control-h); padding: var(--space-2) 0; background: var(--bg); min-width: 0; }
1111
1111
  .agn-toolbar--sticky { position: sticky; top: 0; z-index: var(--z-sticky); }
1112
1112
  .agn-toolbar--bare { background: transparent; }
1113
1113
  .agn-toolbar__title { display: inline-flex; align-items: baseline; gap: var(--space-2); font-family: var(--font-display); font-size: 15px; font-weight: 600; letter-spacing: -.01em; color: var(--text); white-space: nowrap; margin-right: var(--space-2); }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aginies/ui",
3
- "version": "0.3.0",
3
+ "version": "0.3.1",
4
4
  "description": "Aginies Design System components for React: the agn- component layer over @aginies/tokens",
5
5
  "license": "MIT",
6
6
  "author": "Abra Partners",