aeon-ui-engine 1.3.5 → 1.5.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.
Files changed (104) hide show
  1. package/CHANGELOG.md +52 -0
  2. package/CONSUMER.md +67 -27
  3. package/INTEGRATION.md +1 -1
  4. package/README.md +17 -8
  5. package/package.json +4 -1
  6. package/packages/cli/README.md +13 -1
  7. package/packages/cli/dist/bin.js +50 -6
  8. package/packages/cli/dist/chunk-JMNRJCWF.js +301 -0
  9. package/packages/cli/dist/index.d.ts +31 -1
  10. package/packages/cli/dist/index.js +7 -3
  11. package/packages/cli/src/bin.ts +50 -4
  12. package/packages/cli/src/index.ts +2 -0
  13. package/packages/cli/src/init.ts +10 -4
  14. package/packages/cli/src/link.ts +61 -0
  15. package/packages/cli/src/migrate.ts +170 -0
  16. package/packages/core/dist/index.d.ts +35 -7
  17. package/packages/core/dist/index.js +102 -2
  18. package/packages/core/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -1
  19. package/packages/core/src/anatomy.ts +39 -3
  20. package/packages/core/src/identicon.test.ts +39 -0
  21. package/packages/core/src/identicon.ts +79 -0
  22. package/packages/core/src/index.ts +1 -0
  23. package/packages/panda/panda.config.ts +4 -0
  24. package/packages/panda/src/recipes/composer.ts +58 -4
  25. package/packages/panda/src/recipes/file-upload.ts +100 -0
  26. package/packages/panda/src/recipes/index.ts +2 -0
  27. package/packages/panda/src/recipes/range-slider.ts +59 -0
  28. package/packages/panda/src/recipes/thread.ts +77 -2
  29. package/packages/panda/styled-system/recipes/aeon-composer.d.ts +1 -1
  30. package/packages/panda/styled-system/recipes/aeon-composer.mjs +12 -0
  31. package/packages/panda/styled-system/recipes/aeon-file-upload.d.ts +31 -0
  32. package/packages/panda/styled-system/recipes/aeon-file-upload.mjs +61 -0
  33. package/packages/panda/styled-system/recipes/aeon-range-slider.d.ts +31 -0
  34. package/packages/panda/styled-system/recipes/aeon-range-slider.mjs +49 -0
  35. package/packages/panda/styled-system/recipes/aeon-thread.d.ts +1 -1
  36. package/packages/panda/styled-system/recipes/aeon-thread.mjs +20 -0
  37. package/packages/panda/styled-system/recipes/index.d.ts +2 -0
  38. package/packages/panda/styled-system/recipes/index.mjs +2 -0
  39. package/packages/panda/styled-system/styles.css +292 -0
  40. package/packages/primitives/dist/chunk-CV4UXXZF.js +44 -0
  41. package/packages/primitives/dist/chunk-IZKQSCYU.js +164 -0
  42. package/packages/primitives/dist/{chunk-PB3LFHXU.js → chunk-VUPWYBGU.js} +14 -0
  43. package/packages/primitives/dist/index.d.ts +2 -0
  44. package/packages/primitives/dist/index.js +23 -7
  45. package/packages/primitives/dist/machines/file-upload.d.ts +39 -0
  46. package/packages/primitives/dist/machines/file-upload.js +8 -0
  47. package/packages/primitives/dist/machines/range-slider.d.ts +129 -0
  48. package/packages/primitives/dist/machines/range-slider.js +12 -0
  49. package/packages/primitives/dist/machines/slider.d.ts +22 -0
  50. package/packages/primitives/dist/machines/slider.js +1 -1
  51. package/packages/primitives/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -1
  52. package/packages/primitives/src/__tests__/file-upload.test.ts +25 -0
  53. package/packages/primitives/src/__tests__/range-slider.test.ts +39 -0
  54. package/packages/primitives/src/index.ts +2 -0
  55. package/packages/primitives/src/machines/file-upload.ts +55 -0
  56. package/packages/primitives/src/machines/range-slider.ts +209 -0
  57. package/packages/primitives/src/machines/slider.ts +17 -0
  58. package/packages/react/dist/index.d.ts +132 -26
  59. package/packages/react/dist/index.js +1822 -1029
  60. package/packages/react/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -1
  61. package/packages/react/src/button/index.tsx +50 -15
  62. package/packages/react/src/composer/index.tsx +58 -3
  63. package/packages/react/src/file-upload/index.tsx +322 -0
  64. package/packages/react/src/floating/FloatingPositioner.tsx +8 -0
  65. package/packages/react/src/hooks/use-anchor-position.ts +88 -17
  66. package/packages/react/src/index.ts +3 -0
  67. package/packages/react/src/menu/index.tsx +37 -3
  68. package/packages/react/src/popover/index.tsx +7 -1
  69. package/packages/react/src/prompt/index.tsx +45 -0
  70. package/packages/react/src/range-slider/index.tsx +322 -0
  71. package/packages/react/src/slider/index.tsx +54 -14
  72. package/packages/react/src/thread/index.tsx +74 -3
  73. package/packages/react/src/tooltip/index.tsx +7 -1
  74. package/packages/react/src/utils/slot.tsx +47 -0
  75. package/packages/schemas/dist/index.d.ts +4 -0
  76. package/packages/schemas/dist/index.js +67 -1
  77. package/packages/schemas/json/button.json +6 -0
  78. package/packages/schemas/json/catalog.json +333 -0
  79. package/packages/schemas/json/fileUpload.json +168 -0
  80. package/packages/schemas/json/rangeSlider.json +157 -0
  81. package/packages/schemas/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -1
  82. package/packages/schemas/prompts/cursorrules.md +3 -1
  83. package/packages/schemas/prompts/statecharts.md +1 -1
  84. package/packages/schemas/registry/catalog.json +18 -0
  85. package/packages/schemas/registry/components/button.json +6 -0
  86. package/packages/schemas/registry/components/fileUpload.json +168 -0
  87. package/packages/schemas/registry/components/rangeSlider.json +157 -0
  88. package/packages/schemas/registry/machines/fileUpload.json +182 -0
  89. package/packages/schemas/registry/machines/rangeSlider.json +201 -0
  90. package/packages/schemas/scripts/emit.ts +4 -0
  91. package/packages/schemas/src/components.ts +70 -0
  92. package/packages/schemas/src/prompts.ts +3 -1
  93. package/packages/schemas/tsconfig.json +1 -1
  94. package/packages/ui/dist/index.d.ts +100 -46
  95. package/packages/ui/dist/index.js +463 -341
  96. package/packages/ui/src/composer.tsx +37 -11
  97. package/packages/ui/src/file-upload.tsx +36 -0
  98. package/packages/ui/src/index.ts +2 -0
  99. package/packages/ui/src/prompt.tsx +3 -0
  100. package/packages/ui/src/range-slider.tsx +24 -0
  101. package/packages/ui/src/thread.tsx +40 -0
  102. package/scripts/link-scoped-packages.mjs +206 -0
  103. package/scripts/vite-aliases.mjs +6 -8
  104. package/packages/cli/dist/chunk-IW5NT2Z2.js +0 -103
@@ -1,11 +1,11 @@
1
1
  import * as react from 'react';
2
2
  import { ButtonHTMLAttributes, ReactNode, HTMLAttributes, InputHTMLAttributes, LabelHTMLAttributes, TextareaHTMLAttributes, RefObject, ImgHTMLAttributes, FormHTMLAttributes } from 'react';
3
- import * as react_jsx_runtime from 'react/jsx-runtime';
4
3
  import * as xstate from 'xstate';
5
4
  import { AnyStateMachine } from 'xstate';
5
+ import { useMachine } from '@xstate/react';
6
+ import * as react_jsx_runtime from 'react/jsx-runtime';
6
7
  import { AsyncContext, ContentRegionState, AppNavChild, StickyBarState } from '@aeon-ui/primitives';
7
8
  export { AppNavChild, AppNavContext, createAsyncMachine, fieldMachine } from '@aeon-ui/primitives';
8
- import { useMachine } from '@xstate/react';
9
9
  import { fieldFace, AeonColorMode, ResponsiveLayoutSpec, LayoutMode, LayoutCompositionSpec } from '@aeon-ui/core';
10
10
  export { AeonColorMode as AeonMode } from '@aeon-ui/core';
11
11
 
@@ -16,6 +16,11 @@ interface ButtonRootProps extends ButtonHTMLAttributes<HTMLButtonElement> {
16
16
  size?: 'xs' | 'sm' | 'md' | 'lg';
17
17
  /** Machine-aligned lifecycle; `disabled` prop overrides to `disabled`. */
18
18
  status?: ButtonStatus;
19
+ /**
20
+ * Merge button attrs onto a single child (e.g. Next.js `<Link>` / `<a>`).
21
+ * Child must be one React element.
22
+ */
23
+ asChild?: boolean;
19
24
  children?: ReactNode;
20
25
  }
21
26
  declare const Button: {
@@ -104,6 +109,9 @@ declare const Prompt: {
104
109
  Eyebrow: react.ForwardRefExoticComponent<HTMLAttributes<HTMLParagraphElement> & react.RefAttributes<HTMLParagraphElement>>;
105
110
  Meta: react.ForwardRefExoticComponent<HTMLAttributes<HTMLDListElement> & react.RefAttributes<HTMLDListElement>>;
106
111
  Amount: react.ForwardRefExoticComponent<HTMLAttributes<HTMLDivElement> & react.RefAttributes<HTMLDivElement>>;
112
+ Verb: react.ForwardRefExoticComponent<HTMLAttributes<HTMLParagraphElement> & react.RefAttributes<HTMLParagraphElement>>;
113
+ Recipient: react.ForwardRefExoticComponent<HTMLAttributes<HTMLParagraphElement> & react.RefAttributes<HTMLParagraphElement>>;
114
+ Effect: react.ForwardRefExoticComponent<HTMLAttributes<HTMLParagraphElement> & react.RefAttributes<HTMLParagraphElement>>;
107
115
  Actions: react.ForwardRefExoticComponent<HTMLAttributes<HTMLDivElement> & react.RefAttributes<HTMLDivElement>>;
108
116
  Primary: react.ForwardRefExoticComponent<ButtonHTMLAttributes<HTMLButtonElement> & react.RefAttributes<HTMLButtonElement>>;
109
117
  Secondary: react.ForwardRefExoticComponent<ButtonHTMLAttributes<HTMLButtonElement> & react.RefAttributes<HTMLButtonElement>>;
@@ -205,6 +213,67 @@ declare const Slider: {
205
213
  ValueText: react.ForwardRefExoticComponent<HTMLAttributes<HTMLSpanElement> & react.RefAttributes<HTMLSpanElement>>;
206
214
  };
207
215
 
216
+ type ThumbIndex = 0 | 1;
217
+ interface RangeSliderRootProps {
218
+ value?: [number, number];
219
+ defaultValue?: [number, number];
220
+ min?: number;
221
+ max?: number;
222
+ step?: number;
223
+ minStepsBetween?: number;
224
+ disabled?: boolean;
225
+ onValueChange?: (value: [number, number]) => void;
226
+ children?: ReactNode;
227
+ className?: string;
228
+ }
229
+ interface RangeSliderThumbProps extends HTMLAttributes<HTMLSpanElement> {
230
+ index: ThumbIndex;
231
+ }
232
+ declare const RangeSlider: {
233
+ Root: react.ForwardRefExoticComponent<RangeSliderRootProps & react.RefAttributes<HTMLDivElement>>;
234
+ Track: react.ForwardRefExoticComponent<HTMLAttributes<HTMLDivElement> & react.RefAttributes<HTMLDivElement>>;
235
+ Range: react.ForwardRefExoticComponent<HTMLAttributes<HTMLDivElement> & react.RefAttributes<HTMLDivElement>>;
236
+ Thumb: react.ForwardRefExoticComponent<RangeSliderThumbProps & react.RefAttributes<HTMLSpanElement>>;
237
+ ValueText: react.ForwardRefExoticComponent<HTMLAttributes<HTMLSpanElement> & react.RefAttributes<HTMLSpanElement>>;
238
+ };
239
+
240
+ /** Bridge executable statecharts to React — UI = f(snapshot). */
241
+ declare function useAeonMachine<M extends AnyStateMachine>(machine: M, options?: Parameters<typeof useMachine<M>>[1]): [xstate.StateFrom<M>, (event: xstate.EventFromLogic<M>) => void, xstate.Actor<M>];
242
+
243
+ interface FileUploadContextValue {
244
+ phase: 'idle' | 'dragging' | 'rejected';
245
+ accept: string;
246
+ disabled: boolean;
247
+ file: File | null;
248
+ inputId: string;
249
+ inputRef: React.RefObject<HTMLInputElement | null>;
250
+ send: ReturnType<typeof useAeonMachine<typeof fileUploadMachine>>[1];
251
+ selectFile: (file: File | null) => void;
252
+ clear: () => void;
253
+ openPicker: () => void;
254
+ }
255
+ declare function useFileUploadCtx(): FileUploadContextValue;
256
+ interface FileUploadRootProps {
257
+ accept?: string;
258
+ disabled?: boolean;
259
+ /** Controlled selected file (bytes stay outside the machine). */
260
+ file?: File | null;
261
+ defaultFile?: File | null;
262
+ onFileSelect?: (file: File | null) => void;
263
+ children?: ReactNode;
264
+ className?: string;
265
+ }
266
+ declare const FileUpload: {
267
+ Root: react.ForwardRefExoticComponent<FileUploadRootProps & react.RefAttributes<HTMLDivElement>>;
268
+ Label: react.ForwardRefExoticComponent<HTMLAttributes<HTMLLabelElement> & react.RefAttributes<HTMLLabelElement>>;
269
+ Dropzone: react.ForwardRefExoticComponent<HTMLAttributes<HTMLDivElement> & react.RefAttributes<HTMLDivElement>>;
270
+ Input: react.ForwardRefExoticComponent<InputHTMLAttributes<HTMLInputElement> & react.RefAttributes<HTMLInputElement>>;
271
+ Hint: react.ForwardRefExoticComponent<HTMLAttributes<HTMLParagraphElement> & react.RefAttributes<HTMLParagraphElement>>;
272
+ Preview: react.ForwardRefExoticComponent<HTMLAttributes<HTMLDivElement> & react.RefAttributes<HTMLDivElement>>;
273
+ ClearTrigger: react.ForwardRefExoticComponent<HTMLAttributes<HTMLButtonElement> & react.RefAttributes<HTMLButtonElement>>;
274
+ RejectionMessage: react.ForwardRefExoticComponent<HTMLAttributes<HTMLParagraphElement> & react.RefAttributes<HTMLParagraphElement>>;
275
+ };
276
+
208
277
  interface PinInputRootProps {
209
278
  length?: number;
210
279
  value?: string;
@@ -275,9 +344,6 @@ interface AsyncRootProps extends HTMLAttributes<HTMLDivElement> {
275
344
  }
276
345
  declare const AsyncRoot: react.ForwardRefExoticComponent<AsyncRootProps & react.RefAttributes<HTMLDivElement>>;
277
346
 
278
- /** Bridge executable statecharts to React — UI = f(snapshot). */
279
- declare function useAeonMachine<M extends AnyStateMachine>(machine: M, options?: Parameters<typeof useMachine<M>>[1]): [xstate.StateFrom<M>, (event: xstate.EventFromLogic<M>) => void, xstate.Actor<M>];
280
-
281
347
  declare const defaultMachine: xstate.StateMachine<AsyncContext<unknown>, {
282
348
  type: "FETCH";
283
349
  } | {
@@ -453,7 +519,9 @@ declare const Combobox: {
453
519
  Empty: react.ForwardRefExoticComponent<HTMLAttributes<HTMLDivElement> & react.RefAttributes<HTMLDivElement>>;
454
520
  };
455
521
 
456
- type AnchorPlacement = 'bottom-start' | 'top-start';
522
+ type AnchorSide = 'top' | 'bottom';
523
+ type AnchorAlign = 'start' | 'end' | 'center';
524
+ type AnchorPlacement = `${AnchorSide}-${AnchorAlign}`;
457
525
 
458
526
  interface PopoverRootProps {
459
527
  open?: boolean;
@@ -466,6 +534,10 @@ interface PopoverPositionerProps extends HTMLAttributes<HTMLDivElement> {
466
534
  /** Mount panel in document.body (default true). */
467
535
  portalled?: boolean;
468
536
  placement?: AnchorPlacement;
537
+ /** Gap between trigger and panel (default 4). */
538
+ gutter?: number;
539
+ /** Stack level for the portalled surface (default 50). */
540
+ zIndex?: number;
469
541
  children?: ReactNode;
470
542
  }
471
543
  declare const Popover: {
@@ -488,6 +560,10 @@ interface MenuPositionerProps extends HTMLAttributes<HTMLDivElement> {
488
560
  /** Mount menu in document.body (default true). */
489
561
  portalled?: boolean;
490
562
  placement?: AnchorPlacement;
563
+ /** Gap between trigger and menu (default 4). */
564
+ gutter?: number;
565
+ /** Stack level for the portalled surface (default 50). */
566
+ zIndex?: number;
491
567
  children?: ReactNode;
492
568
  }
493
569
  interface MenuItemProps extends ButtonHTMLAttributes<HTMLButtonElement> {
@@ -522,6 +598,10 @@ interface TooltipPositionerProps extends HTMLAttributes<HTMLDivElement> {
522
598
  /** Mount tooltip in document.body (default true). */
523
599
  portalled?: boolean;
524
600
  placement?: AnchorPlacement;
601
+ /** Gap between trigger and tip (default 4). */
602
+ gutter?: number;
603
+ /** Stack level for the portalled surface (default 50). */
604
+ zIndex?: number;
525
605
  children?: ReactNode;
526
606
  }
527
607
  declare const Tooltip: {
@@ -703,40 +783,40 @@ declare const Entry: {
703
783
  List: react.ForwardRefExoticComponent<EntryListProps & react.RefAttributes<HTMLDivElement>>;
704
784
  Root: react.ForwardRefExoticComponent<EntryRootProps & react.RefAttributes<HTMLElement>>;
705
785
  Header: react.ForwardRefExoticComponent<HTMLAttributes<HTMLElement> & {
706
- as?: "span" | "div" | "footer" | "header" | "p";
786
+ as?: "div" | "footer" | "header" | "p" | "span";
707
787
  } & react.RefAttributes<HTMLElement>>;
708
788
  Leading: react.ForwardRefExoticComponent<HTMLAttributes<HTMLElement> & {
709
- as?: "span" | "div" | "footer" | "header" | "p";
789
+ as?: "div" | "footer" | "header" | "p" | "span";
710
790
  } & react.RefAttributes<HTMLElement>>;
711
791
  Heading: react.ForwardRefExoticComponent<HTMLAttributes<HTMLElement> & {
712
- as?: "span" | "div" | "footer" | "header" | "p";
792
+ as?: "div" | "footer" | "header" | "p" | "span";
713
793
  } & react.RefAttributes<HTMLElement>>;
714
794
  Title: react.ForwardRefExoticComponent<HTMLAttributes<HTMLElement> & {
715
- as?: "span" | "div" | "footer" | "header" | "p";
795
+ as?: "div" | "footer" | "header" | "p" | "span";
716
796
  } & react.RefAttributes<HTMLElement>>;
717
797
  Subtitle: react.ForwardRefExoticComponent<HTMLAttributes<HTMLElement> & {
718
- as?: "span" | "div" | "footer" | "header" | "p";
798
+ as?: "div" | "footer" | "header" | "p" | "span";
719
799
  } & react.RefAttributes<HTMLElement>>;
720
800
  Meta: react.ForwardRefExoticComponent<HTMLAttributes<HTMLElement> & {
721
- as?: "span" | "div" | "footer" | "header" | "p";
801
+ as?: "div" | "footer" | "header" | "p" | "span";
722
802
  } & react.RefAttributes<HTMLElement>>;
723
803
  Media: react.ForwardRefExoticComponent<HTMLAttributes<HTMLElement> & {
724
- as?: "span" | "div" | "footer" | "header" | "p";
804
+ as?: "div" | "footer" | "header" | "p" | "span";
725
805
  } & react.RefAttributes<HTMLElement>>;
726
806
  Body: react.ForwardRefExoticComponent<HTMLAttributes<HTMLElement> & {
727
- as?: "span" | "div" | "footer" | "header" | "p";
807
+ as?: "div" | "footer" | "header" | "p" | "span";
728
808
  } & react.RefAttributes<HTMLElement>>;
729
809
  Values: react.ForwardRefExoticComponent<HTMLAttributes<HTMLElement> & {
730
- as?: "span" | "div" | "footer" | "header" | "p";
810
+ as?: "div" | "footer" | "header" | "p" | "span";
731
811
  } & react.RefAttributes<HTMLElement>>;
732
812
  Value: react.ForwardRefExoticComponent<HTMLAttributes<HTMLElement> & {
733
- as?: "span" | "div" | "footer" | "header" | "p";
813
+ as?: "div" | "footer" | "header" | "p" | "span";
734
814
  } & react.RefAttributes<HTMLElement>>;
735
815
  Actions: react.ForwardRefExoticComponent<HTMLAttributes<HTMLElement> & {
736
- as?: "span" | "div" | "footer" | "header" | "p";
816
+ as?: "div" | "footer" | "header" | "p" | "span";
737
817
  } & react.RefAttributes<HTMLElement>>;
738
818
  Footer: react.ForwardRefExoticComponent<HTMLAttributes<HTMLElement> & {
739
- as?: "span" | "div" | "footer" | "header" | "p";
819
+ as?: "div" | "footer" | "header" | "p" | "span";
740
820
  } & react.RefAttributes<HTMLElement>>;
741
821
  };
742
822
 
@@ -759,12 +839,15 @@ declare const Conversation: {
759
839
  Badge: react.ForwardRefExoticComponent<HTMLAttributes<HTMLSpanElement> & react.RefAttributes<HTMLSpanElement>>;
760
840
  };
761
841
 
842
+ /** Base alignment / delivery states. */
762
843
  type ThreadMessageState = 'mine' | 'theirs' | 'pending' | 'failed';
844
+ /** Structured in-thread faces (space-combinable with mine/theirs). */
845
+ type ThreadItemFace = 'command-result' | 'payment-card' | 'request-card';
763
846
  interface ThreadRootProps extends HTMLAttributes<HTMLElement> {
764
847
  children?: ReactNode;
765
848
  }
766
849
  interface ThreadItemProps extends HTMLAttributes<HTMLDivElement> {
767
- state?: ThreadMessageState | `${ThreadMessageState} ${string}`;
850
+ state?: ThreadMessageState | ThreadItemFace | `${ThreadMessageState} ${ThreadItemFace}` | string;
768
851
  }
769
852
  declare const Thread: {
770
853
  Root: react.ForwardRefExoticComponent<ThreadRootProps & react.RefAttributes<HTMLElement>>;
@@ -773,9 +856,21 @@ declare const Thread: {
773
856
  Bubble: react.ForwardRefExoticComponent<HTMLAttributes<HTMLDivElement> & react.RefAttributes<HTMLDivElement>>;
774
857
  Meta: react.ForwardRefExoticComponent<HTMLAttributes<HTMLSpanElement> & react.RefAttributes<HTMLSpanElement>>;
775
858
  Day: react.ForwardRefExoticComponent<HTMLAttributes<HTMLDivElement> & react.RefAttributes<HTMLDivElement>>;
859
+ Bind: react.ForwardRefExoticComponent<ButtonHTMLAttributes<HTMLButtonElement> & react.RefAttributes<HTMLButtonElement>>;
860
+ Card: react.ForwardRefExoticComponent<HTMLAttributes<HTMLDivElement> & react.RefAttributes<HTMLDivElement>>;
861
+ CardTitle: react.ForwardRefExoticComponent<HTMLAttributes<HTMLDivElement> & react.RefAttributes<HTMLDivElement>>;
862
+ CardBody: react.ForwardRefExoticComponent<HTMLAttributes<HTMLDivElement> & react.RefAttributes<HTMLDivElement>>;
863
+ CardActions: react.ForwardRefExoticComponent<HTMLAttributes<HTMLDivElement> & react.RefAttributes<HTMLDivElement>>;
776
864
  };
777
865
 
778
- type ComposerState = 'idle' | 'sending' | 'disabled' | 'error';
866
+ /**
867
+ * Composer root states.
868
+ * - chat: plain message compose
869
+ * - command: local slash input (BRC-218) — never from received text
870
+ * - lookup: non-confirming verbs (/whois, /help)
871
+ * - idle | sending | disabled | error: transport chrome
872
+ */
873
+ type ComposerState = 'idle' | 'sending' | 'disabled' | 'error' | 'chat' | 'command' | 'lookup';
779
874
  interface ComposerRootProps extends FormHTMLAttributes<HTMLFormElement> {
780
875
  state?: ComposerState;
781
876
  children?: ReactNode;
@@ -785,6 +880,9 @@ declare const Composer: {
785
880
  Input: react.ForwardRefExoticComponent<TextareaHTMLAttributes<HTMLTextAreaElement> & react.RefAttributes<HTMLTextAreaElement>>;
786
881
  Actions: react.ForwardRefExoticComponent<HTMLAttributes<HTMLDivElement> & react.RefAttributes<HTMLDivElement>>;
787
882
  Send: react.ForwardRefExoticComponent<HTMLAttributes<HTMLSpanElement> & react.RefAttributes<HTMLSpanElement>>;
883
+ Toolbar: react.ForwardRefExoticComponent<HTMLAttributes<HTMLDivElement> & react.RefAttributes<HTMLDivElement>>;
884
+ Suggestions: react.ForwardRefExoticComponent<HTMLAttributes<HTMLUListElement> & react.RefAttributes<HTMLUListElement>>;
885
+ Suggestion: react.ForwardRefExoticComponent<ButtonHTMLAttributes<HTMLButtonElement> & react.RefAttributes<HTMLButtonElement>>;
788
886
  };
789
887
 
790
888
  interface ProfileHeaderRootProps extends HTMLAttributes<HTMLElement> {
@@ -888,19 +986,19 @@ interface AppShellRootProps extends HTMLAttributes<HTMLDivElement> {
888
986
  declare const AppShell: {
889
987
  Root: react.ForwardRefExoticComponent<AppShellRootProps & react.RefAttributes<HTMLDivElement>>;
890
988
  Header: react.ForwardRefExoticComponent<HTMLAttributes<HTMLDivElement> & {
891
- as?: "main" | "div" | "aside" | "footer" | "header";
989
+ as?: "aside" | "div" | "footer" | "header" | "main";
892
990
  } & react.RefAttributes<HTMLDivElement>>;
893
991
  Subheader: react.ForwardRefExoticComponent<HTMLAttributes<HTMLDivElement> & {
894
- as?: "main" | "div" | "aside" | "footer" | "header";
992
+ as?: "aside" | "div" | "footer" | "header" | "main";
895
993
  } & react.RefAttributes<HTMLDivElement>>;
896
994
  Content: react.ForwardRefExoticComponent<HTMLAttributes<HTMLDivElement> & {
897
- as?: "main" | "div" | "aside" | "footer" | "header";
995
+ as?: "aside" | "div" | "footer" | "header" | "main";
898
996
  } & react.RefAttributes<HTMLDivElement>>;
899
997
  Aside: react.ForwardRefExoticComponent<HTMLAttributes<HTMLDivElement> & {
900
- as?: "main" | "div" | "aside" | "footer" | "header";
998
+ as?: "aside" | "div" | "footer" | "header" | "main";
901
999
  } & react.RefAttributes<HTMLDivElement>>;
902
1000
  Footer: react.ForwardRefExoticComponent<HTMLAttributes<HTMLDivElement> & {
903
- as?: "main" | "div" | "aside" | "footer" | "header";
1001
+ as?: "aside" | "div" | "footer" | "header" | "main";
904
1002
  } & react.RefAttributes<HTMLDivElement>>;
905
1003
  Dock: react.ForwardRefExoticComponent<HTMLAttributes<HTMLDivElement> & react.RefAttributes<HTMLDivElement>>;
906
1004
  Scrim: react.ForwardRefExoticComponent<HTMLAttributes<HTMLDivElement> & react.RefAttributes<HTMLDivElement>>;
@@ -1080,4 +1178,12 @@ type FitTextOptions = {
1080
1178
  */
1081
1179
  declare function useFitText(slotRef: RefObject<HTMLElement | null>, contentRef: RefObject<HTMLElement | null>, opts?: FitTextOptions): void;
1082
1180
 
1083
- export { Accordion, type AccordionItemContentProps, type AccordionItemProps, type AccordionItemTriggerProps, type AccordionRootProps, AppNav, type AppNavBreadcrumbProps, type AppNavRootProps, type AppNavSectionProps, AppShell, type AppShellRootProps, Async, AsyncActions, AsyncProvider, AsyncReadout, AsyncRoot, AsyncTrack, Avatar, type AvatarRootProps, type AvatarStatus, Bar, type BarRootProps, Button, type ButtonRootProps, type ButtonStatus, Checkbox, type CheckboxRootProps, Combobox, type ComboboxItemProps, type ComboboxRootProps, Composer, type ComposerRootProps, type ComposerState, Content, type ContentRootProps, Conversation, type ConversationItemProps, type ConversationItemState, type ConversationRootProps, Dialog, type DialogPortalProps, type DialogRootProps, Entry, type EntryListProps, type EntryRootProps, type EntryState, Field, type FieldControlProps, type FieldRootProps, type FieldTextareaProps, Identity, type IdentityRootProps, ListRow, type ListRowRootProps, Menu, type MenuItemProps, type MenuPositionerProps, type MenuRootProps, MetricStrip, type MetricStripRootProps, Nav, type NavItemProps, type NavRootProps, Panel, type PanelContentProps, type PanelGroupProps, type PanelLabelProps, type PanelRootProps, type PanelTriggerProps, PinInput, type PinInputInputProps, type PinInputRootProps, Popover, type PopoverPositionerProps, type PopoverRootProps, type PresenceState, ProfileHeader, type ProfileHeaderRootProps, Progress, type ProgressRootProps, Prompt, type PromptRootProps, type PromptStatus, RadioGroup, type RadioGroupItemProps, type RadioGroupRootProps, Scroll, type ScrollRootProps, type ScrollViewportProps, Select, type SelectContentProps, type SelectItemProps, type SelectPositionerProps, type SelectRootProps, Separator, type SeparatorRootProps, Slider, type SliderRootProps, StatusBanner, type StatusBannerRootProps, type StatusBannerTone, StickyBar, type StickyBarRootProps, Switch, type SwitchRootProps, Tabs, type TabsContentProps, type TabsRootProps, type TabsTriggerProps, ThemeSwitcher, type ThemeSwitcherModeBtnProps, type ThemeSwitcherModesProps, type ThemeSwitcherRootProps, type ThemeSwitcherThemeSelectProps, Thread, type ThreadItemProps, type ThreadMessageState, type ThreadRootProps, Toast, ToastItem, type ToastPlacement, type ToastProviderProps, type ToastPublishOptions, type ToastRecord, type ToastRootProps, type ToastStore, type ToastViewportProps, Tooltip, type TooltipPositionerProps, type TooltipRootProps, asyncStatusToContentState, useAeonMachine, useAppNav, useAppNavMachine, useAppShellContext, useAsyncContext, useContentContext, useFieldContext, useFitText, useLayoutMode, useScrollContext, useScrollState, useStickyBarContext, useToast, useToastStore };
1181
+ /**
1182
+ * Radix-style Slot — merges Aeon attrs onto a single child element
1183
+ * (e.g. Next.js Link) instead of rendering a wrapper.
1184
+ */
1185
+ declare const Slot: react.ForwardRefExoticComponent<HTMLAttributes<HTMLElement> & {
1186
+ children?: ReactNode;
1187
+ } & react.RefAttributes<HTMLElement>>;
1188
+
1189
+ export { Accordion, type AccordionItemContentProps, type AccordionItemProps, type AccordionItemTriggerProps, type AccordionRootProps, AppNav, type AppNavBreadcrumbProps, type AppNavRootProps, type AppNavSectionProps, AppShell, type AppShellRootProps, Async, AsyncActions, AsyncProvider, AsyncReadout, AsyncRoot, AsyncTrack, Avatar, type AvatarRootProps, type AvatarStatus, Bar, type BarRootProps, Button, type ButtonRootProps, type ButtonStatus, Checkbox, type CheckboxRootProps, Combobox, type ComboboxItemProps, type ComboboxRootProps, Composer, type ComposerRootProps, type ComposerState, Content, type ContentRootProps, Conversation, type ConversationItemProps, type ConversationItemState, type ConversationRootProps, Dialog, type DialogPortalProps, type DialogRootProps, Entry, type EntryListProps, type EntryRootProps, type EntryState, Field, type FieldControlProps, type FieldRootProps, type FieldTextareaProps, FileUpload, type FileUploadRootProps, Identity, type IdentityRootProps, ListRow, type ListRowRootProps, Menu, type MenuItemProps, type MenuPositionerProps, type MenuRootProps, MetricStrip, type MetricStripRootProps, Nav, type NavItemProps, type NavRootProps, Panel, type PanelContentProps, type PanelGroupProps, type PanelLabelProps, type PanelRootProps, type PanelTriggerProps, PinInput, type PinInputInputProps, type PinInputRootProps, Popover, type PopoverPositionerProps, type PopoverRootProps, type PresenceState, ProfileHeader, type ProfileHeaderRootProps, Progress, type ProgressRootProps, Prompt, type PromptRootProps, type PromptStatus, RadioGroup, type RadioGroupItemProps, type RadioGroupRootProps, RangeSlider, type RangeSliderRootProps, type RangeSliderThumbProps, Scroll, type ScrollRootProps, type ScrollViewportProps, Select, type SelectContentProps, type SelectItemProps, type SelectPositionerProps, type SelectRootProps, Separator, type SeparatorRootProps, Slider, type SliderRootProps, Slot, StatusBanner, type StatusBannerRootProps, type StatusBannerTone, StickyBar, type StickyBarRootProps, Switch, type SwitchRootProps, Tabs, type TabsContentProps, type TabsRootProps, type TabsTriggerProps, ThemeSwitcher, type ThemeSwitcherModeBtnProps, type ThemeSwitcherModesProps, type ThemeSwitcherRootProps, type ThemeSwitcherThemeSelectProps, Thread, type ThreadItemFace, type ThreadItemProps, type ThreadMessageState, type ThreadRootProps, Toast, ToastItem, type ToastPlacement, type ToastProviderProps, type ToastPublishOptions, type ToastRecord, type ToastRootProps, type ToastStore, type ToastViewportProps, Tooltip, type TooltipPositionerProps, type TooltipRootProps, asyncStatusToContentState, useAeonMachine, useAppNav, useAppNavMachine, useAppShellContext, useAsyncContext, useContentContext, useFieldContext, useFileUploadCtx as useFileUpload, useFitText, useLayoutMode, useScrollContext, useScrollState, useStickyBarContext, useToast, useToastStore };