@tonycodes-ui/mortar 0.0.0-stage → 0.12.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.
Files changed (107) hide show
  1. package/AGENTS.md +10 -0
  2. package/CHANGELOG.md +268 -0
  3. package/CONTRIBUTING.md +60 -0
  4. package/DESIGN.md +51 -0
  5. package/LICENSE +21 -0
  6. package/README.md +155 -2
  7. package/TESTING.md +83 -0
  8. package/baseline-policy.json +16 -0
  9. package/bin/mortar.mjs +258 -0
  10. package/catalog.json +9900 -0
  11. package/cli/audit.mjs +943 -0
  12. package/cli/data.mjs +176 -0
  13. package/cli/mcp.mjs +216 -0
  14. package/cli/migrations.mjs +128 -0
  15. package/cli/packet.mjs +267 -0
  16. package/cli/search.mjs +246 -0
  17. package/cli/tools.mjs +229 -0
  18. package/design-principles.json +30 -0
  19. package/dist/agent-data.json +1 -0
  20. package/dist/application.d.ts +340 -0
  21. package/dist/application.js +240 -0
  22. package/dist/auth.d.ts +121 -0
  23. package/dist/auth.js +97 -0
  24. package/dist/brand.d.ts +69 -0
  25. package/dist/brand.js +266 -0
  26. package/dist/calendar.d.ts +75 -0
  27. package/dist/calendar.js +310 -0
  28. package/dist/choice.d.ts +36 -0
  29. package/dist/choice.js +36 -0
  30. package/dist/composer.d.ts +28 -0
  31. package/dist/composer.js +47 -0
  32. package/dist/display.d.ts +136 -0
  33. package/dist/display.js +75 -0
  34. package/dist/docs.d.ts +145 -0
  35. package/dist/docs.js +141 -0
  36. package/dist/ecommerce.d.ts +261 -0
  37. package/dist/ecommerce.js +177 -0
  38. package/dist/feedback.d.ts +80 -0
  39. package/dist/feedback.js +98 -0
  40. package/dist/foundation.d.ts +42 -0
  41. package/dist/foundation.js +121 -0
  42. package/dist/heading.d.ts +5 -0
  43. package/dist/heading.js +9 -0
  44. package/dist/icons.d.ts +50 -0
  45. package/dist/icons.js +70 -0
  46. package/dist/illustration.d.ts +47 -0
  47. package/dist/illustration.js +47 -0
  48. package/dist/index.d.ts +36 -0
  49. package/dist/index.js +18 -0
  50. package/dist/inspection.d.ts +24 -0
  51. package/dist/inspection.js +14 -0
  52. package/dist/internal.d.ts +514 -0
  53. package/dist/internal.js +332 -0
  54. package/dist/layout.d.ts +107 -0
  55. package/dist/layout.js +66 -0
  56. package/dist/marketing-sections.d.ts +161 -0
  57. package/dist/marketing-sections.js +58 -0
  58. package/dist/marketing.d.ts +277 -0
  59. package/dist/marketing.js +163 -0
  60. package/dist/navigation.d.ts +35 -0
  61. package/dist/navigation.js +44 -0
  62. package/dist/primitives.d.ts +258 -0
  63. package/dist/primitives.js +244 -0
  64. package/dist/showcase.d.ts +29 -0
  65. package/dist/showcase.js +10 -0
  66. package/dist/workspace.d.ts +80 -0
  67. package/dist/workspace.js +48 -0
  68. package/docs/agents.md +127 -0
  69. package/docs/auth-flows.md +71 -0
  70. package/docs/migrating-to-0.6.md +94 -0
  71. package/docs/theming.md +170 -0
  72. package/package.json +94 -4
  73. package/skills/mortar/SKILL.md +36 -0
  74. package/src/application.css +1487 -0
  75. package/src/application.tsx +1413 -0
  76. package/src/auth.tsx +452 -0
  77. package/src/brand.ts +335 -0
  78. package/src/calendar.css +468 -0
  79. package/src/calendar.tsx +868 -0
  80. package/src/choice.tsx +240 -0
  81. package/src/composer.tsx +158 -0
  82. package/src/data.css +690 -0
  83. package/src/display.tsx +452 -0
  84. package/src/docs.css +704 -0
  85. package/src/docs.tsx +737 -0
  86. package/src/ecommerce.css +810 -0
  87. package/src/ecommerce.tsx +1033 -0
  88. package/src/feedback.tsx +388 -0
  89. package/src/foundation.css +1867 -0
  90. package/src/foundation.tsx +227 -0
  91. package/src/heading.ts +13 -0
  92. package/src/icons.tsx +237 -0
  93. package/src/illustration.tsx +169 -0
  94. package/src/index.ts +233 -0
  95. package/src/inspection.tsx +91 -0
  96. package/src/internal.tsx +700 -0
  97. package/src/layout.tsx +342 -0
  98. package/src/marketing-sections.tsx +621 -0
  99. package/src/marketing.css +2579 -0
  100. package/src/marketing.tsx +1235 -0
  101. package/src/navigation.tsx +118 -0
  102. package/src/overlays.css +350 -0
  103. package/src/primitives.tsx +1135 -0
  104. package/src/showcase.tsx +120 -0
  105. package/src/tokens.css +449 -0
  106. package/src/workspace.tsx +333 -0
  107. package/styles.css +56 -0
@@ -0,0 +1,514 @@
1
+ import { type HTMLAttributes, type RefObject, type ReactNode } from "react";
2
+ import { type ItemGroup } from "./navigation.js";
3
+ import { type LinkAction } from "./primitives.js";
4
+ import { type HeadingLevel } from "./heading.js";
5
+ /**
6
+ * Names a catalogue component on its root: spread it on the outermost element
7
+ * the component renders, `<nav {...componentRoot("Pagination")}>`. A dialog
8
+ * marks its dialog root (portalled), and a component that renders sibling
9
+ * elements marks the first one it always renders. Pass `root = false` when
10
+ * this element is not the outermost one for the current props, e.g. a wrapper
11
+ * then takes the name. The attribute is a hook for tests and consumers, not
12
+ * for styling; the only selector on it is the internal Prose boundary.
13
+ */
14
+ export declare function componentRoot(name: string, root?: boolean): {
15
+ "data-m-component": string | undefined;
16
+ };
17
+ /**
18
+ * Renders `children`, one `of` component, as the root of the component `name`:
19
+ * that root then carries `name` (SearchDialog renders a CommandPalette). Only
20
+ * an `of` component that reads `useComponentName` takes the name, so keep the
21
+ * same kind of component out of its slots.
22
+ */
23
+ export declare function AsComponentRoot({ name, of, children, }: {
24
+ name: string;
25
+ of: string;
26
+ children: ReactNode;
27
+ }): import("react").JSX.Element;
28
+ /**
29
+ * The root name of a component that another can render as its root: `name`,
30
+ * or the outer component's name inside its `AsComponentRoot`.
31
+ */
32
+ export declare function useComponentName(name: string): string;
33
+ /** Joins the truthy class names with single spaces. */
34
+ export declare function cx(...classes: (string | false | null | undefined)[]): string;
35
+ export interface IntroProps {
36
+ eyebrow?: string;
37
+ /** Omit to render no heading. */
38
+ title?: string;
39
+ /** A phrase in `title` to emphasise; its first occurrence renders as `<em>`. */
40
+ emphasis?: string;
41
+ description?: string;
42
+ /** Id for the heading, e.g. the target of the section's aria-labelledby. */
43
+ id?: string;
44
+ headingLevel?: HeadingLevel;
45
+ /** Class on the description paragraph; `null` leaves it unstyled. */
46
+ descriptionClassName?: string | null;
47
+ }
48
+ /**
49
+ * The eyebrow, heading and description that open a section, as three child
50
+ * slots. Spread them (`{...introSlots(props)}`) when consumer content follows
51
+ * in the same parent: React derives useId values from each child's position,
52
+ * so keeping the slots flat keeps the ids of that content unchanged.
53
+ */
54
+ export declare function introSlots({ eyebrow, title, emphasis, description, id, headingLevel, descriptionClassName, }: IntroProps): ReactNode[];
55
+ /** The section intro as one element, for parents where nothing user-supplied follows it. */
56
+ export declare function SectionIntro(props: IntroProps): import("react").JSX.Element;
57
+ /** A row of link actions: the first primary, the rest secondary. */
58
+ export declare function ActionLinks({ actions }: {
59
+ actions: LinkAction[];
60
+ }): import("react").JSX.Element;
61
+ export interface Term {
62
+ term: ReactNode;
63
+ details: ReactNode;
64
+ /** React key; defaults to the term. */
65
+ key?: string;
66
+ /** Extra content after the details, e.g. a second dd. */
67
+ after?: ReactNode;
68
+ /** Attributes for the term's wrapping div. */
69
+ attributes?: HTMLAttributes<HTMLDivElement> & Record<`data-${string}`, unknown>;
70
+ }
71
+ /** A description list whose terms each sit in a div with their details. */
72
+ export declare function TermList({ items, children, ...props }: HTMLAttributes<HTMLDListElement> & Record<`data-${string}`, unknown> & {
73
+ items: Term[];
74
+ /** Content after the terms, e.g. a total row. */
75
+ children?: ReactNode;
76
+ }): import("react").DetailedReactHTMLElement<{
77
+ [x: `data-${string}`]: unknown;
78
+ defaultChecked?: boolean | undefined;
79
+ defaultValue?: string | number | readonly string[] | undefined;
80
+ suppressContentEditableWarning?: boolean | undefined;
81
+ suppressHydrationWarning?: boolean | undefined;
82
+ accessKey?: string | undefined;
83
+ autoCapitalize?: "off" | "none" | "on" | "sentences" | "words" | "characters" | undefined | (string & {});
84
+ autoFocus?: boolean | undefined;
85
+ className?: string | undefined;
86
+ contentEditable?: (boolean | "true" | "false") | "inherit" | "plaintext-only" | undefined;
87
+ contextMenu?: string | undefined;
88
+ dir?: string | undefined;
89
+ draggable?: (boolean | "true" | "false") | undefined;
90
+ enterKeyHint?: "enter" | "done" | "go" | "next" | "previous" | "search" | "send" | undefined;
91
+ hidden?: boolean | undefined;
92
+ id?: string | undefined;
93
+ lang?: string | undefined;
94
+ nonce?: string | undefined;
95
+ slot?: string | undefined;
96
+ spellCheck?: (boolean | "true" | "false") | undefined;
97
+ style?: import("react").CSSProperties | undefined;
98
+ tabIndex?: number | undefined;
99
+ title?: string | undefined;
100
+ translate?: "yes" | "no" | undefined;
101
+ radioGroup?: string | undefined;
102
+ role?: import("react").AriaRole | undefined;
103
+ about?: string | undefined;
104
+ content?: string | undefined;
105
+ datatype?: string | undefined;
106
+ inlist?: any;
107
+ prefix?: string | undefined;
108
+ property?: string | undefined;
109
+ rel?: string | undefined;
110
+ resource?: string | undefined;
111
+ rev?: string | undefined;
112
+ typeof?: string | undefined;
113
+ vocab?: string | undefined;
114
+ autoCorrect?: string | undefined;
115
+ autoSave?: string | undefined;
116
+ color?: string | undefined;
117
+ itemProp?: string | undefined;
118
+ itemScope?: boolean | undefined;
119
+ itemType?: string | undefined;
120
+ itemID?: string | undefined;
121
+ itemRef?: string | undefined;
122
+ results?: number | undefined;
123
+ security?: string | undefined;
124
+ unselectable?: "on" | "off" | undefined;
125
+ popover?: "" | "auto" | "manual" | "hint" | undefined;
126
+ popoverTargetAction?: "toggle" | "show" | "hide" | undefined;
127
+ popoverTarget?: string | undefined;
128
+ inert?: boolean | undefined;
129
+ inputMode?: "none" | "text" | "tel" | "url" | "email" | "numeric" | "decimal" | "search" | undefined;
130
+ is?: string | undefined;
131
+ exportparts?: string | undefined;
132
+ part?: string | undefined;
133
+ "aria-activedescendant"?: string | undefined;
134
+ "aria-atomic"?: (boolean | "true" | "false") | undefined;
135
+ "aria-autocomplete"?: "none" | "inline" | "list" | "both" | undefined;
136
+ "aria-braillelabel"?: string | undefined;
137
+ "aria-brailleroledescription"?: string | undefined;
138
+ "aria-busy"?: (boolean | "true" | "false") | undefined;
139
+ "aria-checked"?: boolean | "false" | "mixed" | "true" | undefined;
140
+ "aria-colcount"?: number | undefined;
141
+ "aria-colindex"?: number | undefined;
142
+ "aria-colindextext"?: string | undefined;
143
+ "aria-colspan"?: number | undefined;
144
+ "aria-controls"?: string | undefined;
145
+ "aria-current"?: boolean | "false" | "true" | "page" | "step" | "location" | "date" | "time" | undefined;
146
+ "aria-describedby"?: string | undefined;
147
+ "aria-description"?: string | undefined;
148
+ "aria-details"?: string | undefined;
149
+ "aria-disabled"?: (boolean | "true" | "false") | undefined;
150
+ "aria-dropeffect"?: "none" | "copy" | "execute" | "link" | "move" | "popup" | undefined;
151
+ "aria-errormessage"?: string | undefined;
152
+ "aria-expanded"?: (boolean | "true" | "false") | undefined;
153
+ "aria-flowto"?: string | undefined;
154
+ "aria-grabbed"?: (boolean | "true" | "false") | undefined;
155
+ "aria-haspopup"?: boolean | "false" | "true" | "menu" | "listbox" | "tree" | "grid" | "dialog" | undefined;
156
+ "aria-hidden"?: (boolean | "true" | "false") | undefined;
157
+ "aria-invalid"?: boolean | "false" | "true" | "grammar" | "spelling" | undefined;
158
+ "aria-keyshortcuts"?: string | undefined;
159
+ "aria-label"?: string | undefined;
160
+ "aria-labelledby"?: string | undefined;
161
+ "aria-level"?: number | undefined;
162
+ "aria-live"?: "off" | "assertive" | "polite" | undefined;
163
+ "aria-modal"?: (boolean | "true" | "false") | undefined;
164
+ "aria-multiline"?: (boolean | "true" | "false") | undefined;
165
+ "aria-multiselectable"?: (boolean | "true" | "false") | undefined;
166
+ "aria-orientation"?: "horizontal" | "vertical" | undefined;
167
+ "aria-owns"?: string | undefined;
168
+ "aria-placeholder"?: string | undefined;
169
+ "aria-posinset"?: number | undefined;
170
+ "aria-pressed"?: boolean | "false" | "mixed" | "true" | undefined;
171
+ "aria-readonly"?: (boolean | "true" | "false") | undefined;
172
+ "aria-relevant"?: "additions" | "additions removals" | "additions text" | "all" | "removals" | "removals additions" | "removals text" | "text" | "text additions" | "text removals" | undefined;
173
+ "aria-required"?: (boolean | "true" | "false") | undefined;
174
+ "aria-roledescription"?: string | undefined;
175
+ "aria-rowcount"?: number | undefined;
176
+ "aria-rowindex"?: number | undefined;
177
+ "aria-rowindextext"?: string | undefined;
178
+ "aria-rowspan"?: number | undefined;
179
+ "aria-selected"?: (boolean | "true" | "false") | undefined;
180
+ "aria-setsize"?: number | undefined;
181
+ "aria-sort"?: "none" | "ascending" | "descending" | "other" | undefined;
182
+ "aria-valuemax"?: number | undefined;
183
+ "aria-valuemin"?: number | undefined;
184
+ "aria-valuenow"?: number | undefined;
185
+ "aria-valuetext"?: string | undefined;
186
+ dangerouslySetInnerHTML?: {
187
+ __html: string | TrustedHTML;
188
+ } | undefined;
189
+ onCopy?: import("react").ClipboardEventHandler<HTMLDListElement> | undefined;
190
+ onCopyCapture?: import("react").ClipboardEventHandler<HTMLDListElement> | undefined;
191
+ onCut?: import("react").ClipboardEventHandler<HTMLDListElement> | undefined;
192
+ onCutCapture?: import("react").ClipboardEventHandler<HTMLDListElement> | undefined;
193
+ onPaste?: import("react").ClipboardEventHandler<HTMLDListElement> | undefined;
194
+ onPasteCapture?: import("react").ClipboardEventHandler<HTMLDListElement> | undefined;
195
+ onCompositionEnd?: import("react").CompositionEventHandler<HTMLDListElement> | undefined;
196
+ onCompositionEndCapture?: import("react").CompositionEventHandler<HTMLDListElement> | undefined;
197
+ onCompositionStart?: import("react").CompositionEventHandler<HTMLDListElement> | undefined;
198
+ onCompositionStartCapture?: import("react").CompositionEventHandler<HTMLDListElement> | undefined;
199
+ onCompositionUpdate?: import("react").CompositionEventHandler<HTMLDListElement> | undefined;
200
+ onCompositionUpdateCapture?: import("react").CompositionEventHandler<HTMLDListElement> | undefined;
201
+ onFocus?: import("react").FocusEventHandler<HTMLDListElement> | undefined;
202
+ onFocusCapture?: import("react").FocusEventHandler<HTMLDListElement> | undefined;
203
+ onBlur?: import("react").FocusEventHandler<HTMLDListElement> | undefined;
204
+ onBlurCapture?: import("react").FocusEventHandler<HTMLDListElement> | undefined;
205
+ onChange?: import("react").ChangeEventHandler<HTMLDListElement, Element> | undefined;
206
+ onChangeCapture?: import("react").ChangeEventHandler<HTMLDListElement, Element> | undefined;
207
+ onBeforeInput?: import("react").InputEventHandler<HTMLDListElement> | undefined;
208
+ onBeforeInputCapture?: import("react").InputEventHandler<HTMLDListElement> | undefined;
209
+ onInput?: import("react").InputEventHandler<HTMLDListElement> | undefined;
210
+ onInputCapture?: import("react").InputEventHandler<HTMLDListElement> | undefined;
211
+ onReset?: import("react").ReactEventHandler<HTMLDListElement> | undefined;
212
+ onResetCapture?: import("react").ReactEventHandler<HTMLDListElement> | undefined;
213
+ onSubmit?: import("react").SubmitEventHandler<HTMLDListElement> | undefined;
214
+ onSubmitCapture?: import("react").SubmitEventHandler<HTMLDListElement> | undefined;
215
+ onInvalid?: import("react").ReactEventHandler<HTMLDListElement> | undefined;
216
+ onInvalidCapture?: import("react").ReactEventHandler<HTMLDListElement> | undefined;
217
+ onLoad?: import("react").ReactEventHandler<HTMLDListElement> | undefined;
218
+ onLoadCapture?: import("react").ReactEventHandler<HTMLDListElement> | undefined;
219
+ onError?: import("react").ReactEventHandler<HTMLDListElement> | undefined;
220
+ onErrorCapture?: import("react").ReactEventHandler<HTMLDListElement> | undefined;
221
+ onKeyDown?: import("react").KeyboardEventHandler<HTMLDListElement> | undefined;
222
+ onKeyDownCapture?: import("react").KeyboardEventHandler<HTMLDListElement> | undefined;
223
+ onKeyPress?: import("react").KeyboardEventHandler<HTMLDListElement> | undefined;
224
+ onKeyPressCapture?: import("react").KeyboardEventHandler<HTMLDListElement> | undefined;
225
+ onKeyUp?: import("react").KeyboardEventHandler<HTMLDListElement> | undefined;
226
+ onKeyUpCapture?: import("react").KeyboardEventHandler<HTMLDListElement> | undefined;
227
+ onAbort?: import("react").ReactEventHandler<HTMLDListElement> | undefined;
228
+ onAbortCapture?: import("react").ReactEventHandler<HTMLDListElement> | undefined;
229
+ onCanPlay?: import("react").ReactEventHandler<HTMLDListElement> | undefined;
230
+ onCanPlayCapture?: import("react").ReactEventHandler<HTMLDListElement> | undefined;
231
+ onCanPlayThrough?: import("react").ReactEventHandler<HTMLDListElement> | undefined;
232
+ onCanPlayThroughCapture?: import("react").ReactEventHandler<HTMLDListElement> | undefined;
233
+ onDurationChange?: import("react").ReactEventHandler<HTMLDListElement> | undefined;
234
+ onDurationChangeCapture?: import("react").ReactEventHandler<HTMLDListElement> | undefined;
235
+ onEmptied?: import("react").ReactEventHandler<HTMLDListElement> | undefined;
236
+ onEmptiedCapture?: import("react").ReactEventHandler<HTMLDListElement> | undefined;
237
+ onEncrypted?: import("react").ReactEventHandler<HTMLDListElement> | undefined;
238
+ onEncryptedCapture?: import("react").ReactEventHandler<HTMLDListElement> | undefined;
239
+ onEnded?: import("react").ReactEventHandler<HTMLDListElement> | undefined;
240
+ onEndedCapture?: import("react").ReactEventHandler<HTMLDListElement> | undefined;
241
+ onLoadedData?: import("react").ReactEventHandler<HTMLDListElement> | undefined;
242
+ onLoadedDataCapture?: import("react").ReactEventHandler<HTMLDListElement> | undefined;
243
+ onLoadedMetadata?: import("react").ReactEventHandler<HTMLDListElement> | undefined;
244
+ onLoadedMetadataCapture?: import("react").ReactEventHandler<HTMLDListElement> | undefined;
245
+ onLoadStart?: import("react").ReactEventHandler<HTMLDListElement> | undefined;
246
+ onLoadStartCapture?: import("react").ReactEventHandler<HTMLDListElement> | undefined;
247
+ onPause?: import("react").ReactEventHandler<HTMLDListElement> | undefined;
248
+ onPauseCapture?: import("react").ReactEventHandler<HTMLDListElement> | undefined;
249
+ onPlay?: import("react").ReactEventHandler<HTMLDListElement> | undefined;
250
+ onPlayCapture?: import("react").ReactEventHandler<HTMLDListElement> | undefined;
251
+ onPlaying?: import("react").ReactEventHandler<HTMLDListElement> | undefined;
252
+ onPlayingCapture?: import("react").ReactEventHandler<HTMLDListElement> | undefined;
253
+ onProgress?: import("react").ReactEventHandler<HTMLDListElement> | undefined;
254
+ onProgressCapture?: import("react").ReactEventHandler<HTMLDListElement> | undefined;
255
+ onRateChange?: import("react").ReactEventHandler<HTMLDListElement> | undefined;
256
+ onRateChangeCapture?: import("react").ReactEventHandler<HTMLDListElement> | undefined;
257
+ onSeeked?: import("react").ReactEventHandler<HTMLDListElement> | undefined;
258
+ onSeekedCapture?: import("react").ReactEventHandler<HTMLDListElement> | undefined;
259
+ onSeeking?: import("react").ReactEventHandler<HTMLDListElement> | undefined;
260
+ onSeekingCapture?: import("react").ReactEventHandler<HTMLDListElement> | undefined;
261
+ onStalled?: import("react").ReactEventHandler<HTMLDListElement> | undefined;
262
+ onStalledCapture?: import("react").ReactEventHandler<HTMLDListElement> | undefined;
263
+ onSuspend?: import("react").ReactEventHandler<HTMLDListElement> | undefined;
264
+ onSuspendCapture?: import("react").ReactEventHandler<HTMLDListElement> | undefined;
265
+ onTimeUpdate?: import("react").ReactEventHandler<HTMLDListElement> | undefined;
266
+ onTimeUpdateCapture?: import("react").ReactEventHandler<HTMLDListElement> | undefined;
267
+ onVolumeChange?: import("react").ReactEventHandler<HTMLDListElement> | undefined;
268
+ onVolumeChangeCapture?: import("react").ReactEventHandler<HTMLDListElement> | undefined;
269
+ onWaiting?: import("react").ReactEventHandler<HTMLDListElement> | undefined;
270
+ onWaitingCapture?: import("react").ReactEventHandler<HTMLDListElement> | undefined;
271
+ onAuxClick?: import("react").MouseEventHandler<HTMLDListElement> | undefined;
272
+ onAuxClickCapture?: import("react").MouseEventHandler<HTMLDListElement> | undefined;
273
+ onClick?: import("react").MouseEventHandler<HTMLDListElement> | undefined;
274
+ onClickCapture?: import("react").MouseEventHandler<HTMLDListElement> | undefined;
275
+ onContextMenu?: import("react").MouseEventHandler<HTMLDListElement> | undefined;
276
+ onContextMenuCapture?: import("react").MouseEventHandler<HTMLDListElement> | undefined;
277
+ onDoubleClick?: import("react").MouseEventHandler<HTMLDListElement> | undefined;
278
+ onDoubleClickCapture?: import("react").MouseEventHandler<HTMLDListElement> | undefined;
279
+ onDrag?: import("react").DragEventHandler<HTMLDListElement> | undefined;
280
+ onDragCapture?: import("react").DragEventHandler<HTMLDListElement> | undefined;
281
+ onDragEnd?: import("react").DragEventHandler<HTMLDListElement> | undefined;
282
+ onDragEndCapture?: import("react").DragEventHandler<HTMLDListElement> | undefined;
283
+ onDragEnter?: import("react").DragEventHandler<HTMLDListElement> | undefined;
284
+ onDragEnterCapture?: import("react").DragEventHandler<HTMLDListElement> | undefined;
285
+ onDragExit?: import("react").DragEventHandler<HTMLDListElement> | undefined;
286
+ onDragExitCapture?: import("react").DragEventHandler<HTMLDListElement> | undefined;
287
+ onDragLeave?: import("react").DragEventHandler<HTMLDListElement> | undefined;
288
+ onDragLeaveCapture?: import("react").DragEventHandler<HTMLDListElement> | undefined;
289
+ onDragOver?: import("react").DragEventHandler<HTMLDListElement> | undefined;
290
+ onDragOverCapture?: import("react").DragEventHandler<HTMLDListElement> | undefined;
291
+ onDragStart?: import("react").DragEventHandler<HTMLDListElement> | undefined;
292
+ onDragStartCapture?: import("react").DragEventHandler<HTMLDListElement> | undefined;
293
+ onDrop?: import("react").DragEventHandler<HTMLDListElement> | undefined;
294
+ onDropCapture?: import("react").DragEventHandler<HTMLDListElement> | undefined;
295
+ onMouseDown?: import("react").MouseEventHandler<HTMLDListElement> | undefined;
296
+ onMouseDownCapture?: import("react").MouseEventHandler<HTMLDListElement> | undefined;
297
+ onMouseEnter?: import("react").MouseEventHandler<HTMLDListElement> | undefined;
298
+ onMouseLeave?: import("react").MouseEventHandler<HTMLDListElement> | undefined;
299
+ onMouseMove?: import("react").MouseEventHandler<HTMLDListElement> | undefined;
300
+ onMouseMoveCapture?: import("react").MouseEventHandler<HTMLDListElement> | undefined;
301
+ onMouseOut?: import("react").MouseEventHandler<HTMLDListElement> | undefined;
302
+ onMouseOutCapture?: import("react").MouseEventHandler<HTMLDListElement> | undefined;
303
+ onMouseOver?: import("react").MouseEventHandler<HTMLDListElement> | undefined;
304
+ onMouseOverCapture?: import("react").MouseEventHandler<HTMLDListElement> | undefined;
305
+ onMouseUp?: import("react").MouseEventHandler<HTMLDListElement> | undefined;
306
+ onMouseUpCapture?: import("react").MouseEventHandler<HTMLDListElement> | undefined;
307
+ onSelect?: import("react").ReactEventHandler<HTMLDListElement> | undefined;
308
+ onSelectCapture?: import("react").ReactEventHandler<HTMLDListElement> | undefined;
309
+ onTouchCancel?: import("react").TouchEventHandler<HTMLDListElement> | undefined;
310
+ onTouchCancelCapture?: import("react").TouchEventHandler<HTMLDListElement> | undefined;
311
+ onTouchEnd?: import("react").TouchEventHandler<HTMLDListElement> | undefined;
312
+ onTouchEndCapture?: import("react").TouchEventHandler<HTMLDListElement> | undefined;
313
+ onTouchMove?: import("react").TouchEventHandler<HTMLDListElement> | undefined;
314
+ onTouchMoveCapture?: import("react").TouchEventHandler<HTMLDListElement> | undefined;
315
+ onTouchStart?: import("react").TouchEventHandler<HTMLDListElement> | undefined;
316
+ onTouchStartCapture?: import("react").TouchEventHandler<HTMLDListElement> | undefined;
317
+ onPointerDown?: import("react").PointerEventHandler<HTMLDListElement> | undefined;
318
+ onPointerDownCapture?: import("react").PointerEventHandler<HTMLDListElement> | undefined;
319
+ onPointerMove?: import("react").PointerEventHandler<HTMLDListElement> | undefined;
320
+ onPointerMoveCapture?: import("react").PointerEventHandler<HTMLDListElement> | undefined;
321
+ onPointerUp?: import("react").PointerEventHandler<HTMLDListElement> | undefined;
322
+ onPointerUpCapture?: import("react").PointerEventHandler<HTMLDListElement> | undefined;
323
+ onPointerCancel?: import("react").PointerEventHandler<HTMLDListElement> | undefined;
324
+ onPointerCancelCapture?: import("react").PointerEventHandler<HTMLDListElement> | undefined;
325
+ onPointerEnter?: import("react").PointerEventHandler<HTMLDListElement> | undefined;
326
+ onPointerLeave?: import("react").PointerEventHandler<HTMLDListElement> | undefined;
327
+ onPointerOver?: import("react").PointerEventHandler<HTMLDListElement> | undefined;
328
+ onPointerOverCapture?: import("react").PointerEventHandler<HTMLDListElement> | undefined;
329
+ onPointerOut?: import("react").PointerEventHandler<HTMLDListElement> | undefined;
330
+ onPointerOutCapture?: import("react").PointerEventHandler<HTMLDListElement> | undefined;
331
+ onGotPointerCapture?: import("react").PointerEventHandler<HTMLDListElement> | undefined;
332
+ onGotPointerCaptureCapture?: import("react").PointerEventHandler<HTMLDListElement> | undefined;
333
+ onLostPointerCapture?: import("react").PointerEventHandler<HTMLDListElement> | undefined;
334
+ onLostPointerCaptureCapture?: import("react").PointerEventHandler<HTMLDListElement> | undefined;
335
+ onScroll?: import("react").UIEventHandler<HTMLDListElement> | undefined;
336
+ onScrollCapture?: import("react").UIEventHandler<HTMLDListElement> | undefined;
337
+ onScrollEnd?: import("react").UIEventHandler<HTMLDListElement> | undefined;
338
+ onScrollEndCapture?: import("react").UIEventHandler<HTMLDListElement> | undefined;
339
+ onWheel?: import("react").WheelEventHandler<HTMLDListElement> | undefined;
340
+ onWheelCapture?: import("react").WheelEventHandler<HTMLDListElement> | undefined;
341
+ onAnimationStart?: import("react").AnimationEventHandler<HTMLDListElement> | undefined;
342
+ onAnimationStartCapture?: import("react").AnimationEventHandler<HTMLDListElement> | undefined;
343
+ onAnimationEnd?: import("react").AnimationEventHandler<HTMLDListElement> | undefined;
344
+ onAnimationEndCapture?: import("react").AnimationEventHandler<HTMLDListElement> | undefined;
345
+ onAnimationIteration?: import("react").AnimationEventHandler<HTMLDListElement> | undefined;
346
+ onAnimationIterationCapture?: import("react").AnimationEventHandler<HTMLDListElement> | undefined;
347
+ onToggle?: import("react").ToggleEventHandler<HTMLDListElement> | undefined;
348
+ onBeforeToggle?: import("react").ToggleEventHandler<HTMLDListElement> | undefined;
349
+ onTransitionCancel?: import("react").TransitionEventHandler<HTMLDListElement> | undefined;
350
+ onTransitionCancelCapture?: import("react").TransitionEventHandler<HTMLDListElement> | undefined;
351
+ onTransitionEnd?: import("react").TransitionEventHandler<HTMLDListElement> | undefined;
352
+ onTransitionEndCapture?: import("react").TransitionEventHandler<HTMLDListElement> | undefined;
353
+ onTransitionRun?: import("react").TransitionEventHandler<HTMLDListElement> | undefined;
354
+ onTransitionRunCapture?: import("react").TransitionEventHandler<HTMLDListElement> | undefined;
355
+ onTransitionStart?: import("react").TransitionEventHandler<HTMLDListElement> | undefined;
356
+ onTransitionStartCapture?: import("react").TransitionEventHandler<HTMLDListElement> | undefined;
357
+ }, HTMLElement>;
358
+ /**
359
+ * Icon, label and count inside a navigation link or tab. `prefix` picks the
360
+ * class family (`m-nav-*` or `m-tab-*`). A count shows whenever it is defined.
361
+ */
362
+ export declare function LinkContent({ prefix, label, icon, count, marker, }: {
363
+ prefix: "nav" | "tab";
364
+ label: ReactNode;
365
+ icon?: ReactNode;
366
+ count?: number | string;
367
+ /** Show the dot marker when there is no icon (sidebar links). */
368
+ marker?: boolean;
369
+ }): import("react").FunctionComponentElement<import("react").FragmentProps>;
370
+ /** A generated id that is safe in CSS selectors and URL fragments. */
371
+ export declare function useDomId(prefix: string): string;
372
+ /** Why an animation is not running; null while it plays. */
373
+ export type PauseReason = "user" | "motion" | "hidden" | "offscreen" | null;
374
+ /**
375
+ * Shared pause and resume for decorative motion. It plays only while the
376
+ * user has not paused it, reduced motion is not requested, the document is
377
+ * visible and `ref` is on screen. The user's pause is kept apart from the
378
+ * automatic reasons, so returning to the page never overrides it. `paused`
379
+ * and `onPausedChange` make the user's choice controlled, for example one
380
+ * state shared by several animations. Every listener is removed on unmount.
381
+ */
382
+ export declare function usePlayback(ref: RefObject<Element | null>, { paused, onPausedChange, enabled, }: {
383
+ paused?: boolean;
384
+ onPausedChange?: (paused: boolean) => void;
385
+ enabled?: boolean;
386
+ }): {
387
+ reason: PauseReason;
388
+ reduced: boolean;
389
+ userPaused: boolean;
390
+ toggle: () => void;
391
+ };
392
+ /**
393
+ * Next index for arrow, Home and End keys in a horizontal set (wrapping), or
394
+ * null for any other key.
395
+ */
396
+ export declare function rovingIndex(key: string, index: number, count: number): number | null;
397
+ /** Colour swatch whose label is announced in place of the colour. */
398
+ export declare function Swatch({ color, label }: {
399
+ color?: string;
400
+ label: ReactNode;
401
+ }): import("react").JSX.Element;
402
+ /** Ids and describedby wiring for a labelled field with a hint or error message. */
403
+ export declare function useField({ id, hint, error, describedBy, }: {
404
+ id?: string;
405
+ hint?: string;
406
+ error?: string;
407
+ /** The consumer's own aria-describedby, kept before the message id. */
408
+ describedBy?: string;
409
+ }): {
410
+ fieldId: string;
411
+ messageId: string;
412
+ describedBy: string | undefined;
413
+ };
414
+ /** The hint or error under a field; the error wins and is styled as one. */
415
+ export declare function FieldMessage({ id, hint, error, }: {
416
+ id: string;
417
+ hint?: string;
418
+ error?: string;
419
+ }): import("react").JSX.Element | null;
420
+ /** Headless dialog root with the shared backdrop. */
421
+ export declare function DialogFrame({ open, onClose, component, children, }: {
422
+ open: boolean;
423
+ onClose: () => void;
424
+ /** The catalogue component this dialog is the root of, if any. */
425
+ component?: string;
426
+ children: ReactNode;
427
+ }): import("react").JSX.Element;
428
+ /** Narrow-screen navigation drawer used by AppShell and DocsShell. */
429
+ export declare function MobileNavDialog({ open, onClose, title, children, }: {
430
+ open: boolean;
431
+ onClose: () => void;
432
+ title: string;
433
+ children: ReactNode;
434
+ }): import("react").JSX.Element;
435
+ /** `introSlots` with the shared `m-section-title` class on the heading. */
436
+ export declare function titledIntroSlots(props: IntroProps): ReactNode[];
437
+ /** `data-tone` for a section surface tone; the default tone sets no attribute. */
438
+ export declare function sectionTone(tone?: "default" | "muted" | "inverse" | "accent"): "accent" | "muted" | "inverse" | undefined;
439
+ /** `SectionIntro` with the `m-section-title` heading class. */
440
+ export declare function TitledIntro(props: IntroProps): import("react").JSX.Element;
441
+ /** A navigation link with optional sub-pages (NavigationItem's shape). */
442
+ export interface NavTreeItem {
443
+ label: string;
444
+ href: string;
445
+ current?: boolean;
446
+ icon?: ReactNode;
447
+ count?: number | string;
448
+ children?: NavTreeItem[];
449
+ }
450
+ /**
451
+ * Navigation links with icon and count. An item with children becomes a
452
+ * disclosure, open when it or a child is current; its own page is the first
453
+ * link inside.
454
+ */
455
+ export declare function NavTreeLinks({ items, marker, onNavigate, }: {
456
+ items: NavTreeItem[];
457
+ /** Show the dot marker when an item has no icon (sidebar links). */
458
+ marker?: boolean;
459
+ onNavigate?: () => void;
460
+ }): import("react").JSX.Element;
461
+ /**
462
+ * Labelled groups of navigation links. Group labels are not headings, so the
463
+ * page's own h1 stays first in the heading outline.
464
+ */
465
+ export declare function NavGroups({ groups, marker, onNavigate, }: {
466
+ groups: ItemGroup<NavTreeItem>[];
467
+ marker?: boolean;
468
+ onNavigate?: () => void;
469
+ }): import("react").JSX.Element;
470
+ /**
471
+ * The hint or error under a field. Unlike FieldMessage, the error is its own
472
+ * role="alert" element, so it is announced when it appears.
473
+ */
474
+ export declare function FieldFeedback({ id, hint, error, }: {
475
+ id: string;
476
+ hint?: string;
477
+ error?: string;
478
+ }): import("react").JSX.Element | null;
479
+ /** Decorative required marker after a field label; the control itself is marked required. */
480
+ export declare function RequiredMark(): import("react").JSX.Element;
481
+ /**
482
+ * Call before `element` is removed. If focus is inside it, move focus to the
483
+ * next tabbable element after it (within `scope`, default the document), else
484
+ * the previous one, else `fallback`, so focus never drops to the body.
485
+ */
486
+ export declare function focusAway(element: HTMLElement | null, { scope, fallback, }?: {
487
+ scope?: HTMLElement | null;
488
+ fallback?: HTMLElement | null;
489
+ }): void;
490
+ /**
491
+ * The data-mortar-* attributes of the nearest container-scoped ThemeProvider.
492
+ * Optional (undefined outside one), so it does not make dialogs depend on it.
493
+ */
494
+ export declare const ThemeScopeContext: import("react").Context<Record<string, string> | undefined>;
495
+ /**
496
+ * Re-applies a container-scoped theme to content rendered outside its wrapper
497
+ * (dialogs portal to the document body). The wrapper is display: contents, so
498
+ * it carries the tokens without adding a box.
499
+ */
500
+ export declare function ThemeScope({ children }: {
501
+ children: ReactNode;
502
+ }): import("react").JSX.Element;
503
+ /**
504
+ * introSlots with a class on the heading, so a title keeps its styles at any
505
+ * `headingLevel` instead of only as an h2.
506
+ */
507
+ export declare function classedIntroSlots(props: IntroProps, titleClassName: string): ReactNode[];
508
+ /**
509
+ * Call before a consumer callback that removes `element` (e.g. a chip's
510
+ * remove button). Once the removal has rendered, if focus fell to the body,
511
+ * it moves to the nearest focusable element that took the removed one's place,
512
+ * or the one before it, searching up through the ancestors that remain.
513
+ */
514
+ export declare function focusAfterRemoval(element: HTMLElement): void;