@almadar/shell-web 0.0.0-stage → 1.0.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 (266) hide show
  1. package/bundling.d.mts +18 -0
  2. package/bundling.mjs +28 -0
  3. package/dist/ArbitraryClassCompiler-CO_iASBn.d.ts +195 -0
  4. package/dist/AvlGlyph-EPJKFEO3.js +6 -0
  5. package/dist/AvlStateMachine-RKZIKNGC.js +9 -0
  6. package/dist/AvlTransitionDetail-63SD6GZF.js +11 -0
  7. package/dist/AvlTransitionExplainer-ZBTLOM3T.js +12 -0
  8. package/dist/BehaviorView-YS5G4GNB.js +11 -0
  9. package/dist/Canvas3DHost-BkZQB5l2.d.ts +552 -0
  10. package/dist/EventBusProvider-BFFHfN4O.d.ts +296 -0
  11. package/dist/FileTree-BCFnBEuQ.d.ts +254 -0
  12. package/dist/FlowCanvas-3JRMNJLV.css +1756 -0
  13. package/dist/FlowCanvas-AUMTWMNG.js +26 -0
  14. package/dist/GameAudioProvider-ceM_n0ey.d.ts +90 -0
  15. package/dist/KaTeX_AMS-Regular-CYEKBG2K.woff +0 -0
  16. package/dist/KaTeX_AMS-Regular-JKX5W2C4.ttf +0 -0
  17. package/dist/KaTeX_AMS-Regular-U6PRYMIZ.woff2 +0 -0
  18. package/dist/KaTeX_Caligraphic-Bold-5QL5CMTE.woff2 +0 -0
  19. package/dist/KaTeX_Caligraphic-Bold-WZ3QSGD3.woff +0 -0
  20. package/dist/KaTeX_Caligraphic-Bold-ZTS3R3HK.ttf +0 -0
  21. package/dist/KaTeX_Caligraphic-Regular-3LKEU76G.woff +0 -0
  22. package/dist/KaTeX_Caligraphic-Regular-A7XRTZ5Q.ttf +0 -0
  23. package/dist/KaTeX_Caligraphic-Regular-KX5MEWCF.woff2 +0 -0
  24. package/dist/KaTeX_Fraktur-Bold-2QVFK6NQ.woff2 +0 -0
  25. package/dist/KaTeX_Fraktur-Bold-T4SWXBMT.woff +0 -0
  26. package/dist/KaTeX_Fraktur-Bold-WGHVTYOR.ttf +0 -0
  27. package/dist/KaTeX_Fraktur-Regular-2PEIFJSJ.woff2 +0 -0
  28. package/dist/KaTeX_Fraktur-Regular-5U4OPH2X.ttf +0 -0
  29. package/dist/KaTeX_Fraktur-Regular-PQMHCIK6.woff +0 -0
  30. package/dist/KaTeX_Main-Bold-2GA4IZIN.woff +0 -0
  31. package/dist/KaTeX_Main-Bold-W5FBVCZM.ttf +0 -0
  32. package/dist/KaTeX_Main-Bold-YP5VVQRP.woff2 +0 -0
  33. package/dist/KaTeX_Main-BoldItalic-4P4C7HJH.woff +0 -0
  34. package/dist/KaTeX_Main-BoldItalic-N4V3DX7S.woff2 +0 -0
  35. package/dist/KaTeX_Main-BoldItalic-ODMLBJJQ.ttf +0 -0
  36. package/dist/KaTeX_Main-Italic-I43T2HSR.ttf +0 -0
  37. package/dist/KaTeX_Main-Italic-RELBIK7M.woff2 +0 -0
  38. package/dist/KaTeX_Main-Italic-SASNQFN2.woff +0 -0
  39. package/dist/KaTeX_Main-Regular-ARRPAO67.woff2 +0 -0
  40. package/dist/KaTeX_Main-Regular-P5I74A2A.woff +0 -0
  41. package/dist/KaTeX_Main-Regular-W74P5G27.ttf +0 -0
  42. package/dist/KaTeX_Math-BoldItalic-6EBV3DK5.woff +0 -0
  43. package/dist/KaTeX_Math-BoldItalic-K4WTGH3J.woff2 +0 -0
  44. package/dist/KaTeX_Math-BoldItalic-VB447A4D.ttf +0 -0
  45. package/dist/KaTeX_Math-Italic-6KGCHLFN.woff2 +0 -0
  46. package/dist/KaTeX_Math-Italic-KKK3USB2.woff +0 -0
  47. package/dist/KaTeX_Math-Italic-SON4MRCA.ttf +0 -0
  48. package/dist/KaTeX_SansSerif-Bold-RRNVJFFW.woff2 +0 -0
  49. package/dist/KaTeX_SansSerif-Bold-STQ6RXC7.ttf +0 -0
  50. package/dist/KaTeX_SansSerif-Bold-X5M5EMOD.woff +0 -0
  51. package/dist/KaTeX_SansSerif-Italic-HMPFTM52.woff2 +0 -0
  52. package/dist/KaTeX_SansSerif-Italic-PSN4QKYX.woff +0 -0
  53. package/dist/KaTeX_SansSerif-Italic-WTBAZBGY.ttf +0 -0
  54. package/dist/KaTeX_SansSerif-Regular-2TL3USAE.ttf +0 -0
  55. package/dist/KaTeX_SansSerif-Regular-OQCII6EP.woff +0 -0
  56. package/dist/KaTeX_SansSerif-Regular-XIQ62X4E.woff2 +0 -0
  57. package/dist/KaTeX_Script-Regular-72OLXYNA.ttf +0 -0
  58. package/dist/KaTeX_Script-Regular-A5IFOEBS.woff +0 -0
  59. package/dist/KaTeX_Script-Regular-APUWIHLP.woff2 +0 -0
  60. package/dist/KaTeX_Size1-Regular-4HRHTS65.woff +0 -0
  61. package/dist/KaTeX_Size1-Regular-5LRUTBFT.woff2 +0 -0
  62. package/dist/KaTeX_Size1-Regular-7K6AASVL.ttf +0 -0
  63. package/dist/KaTeX_Size2-Regular-222HN3GT.ttf +0 -0
  64. package/dist/KaTeX_Size2-Regular-K5ZHAIS6.woff +0 -0
  65. package/dist/KaTeX_Size2-Regular-LELKET5D.woff2 +0 -0
  66. package/dist/KaTeX_Size3-Regular-TLFPAHDE.woff +0 -0
  67. package/dist/KaTeX_Size3-Regular-UFCO6WCA.ttf +0 -0
  68. package/dist/KaTeX_Size3-Regular-WQRQ47UD.woff2 +0 -0
  69. package/dist/KaTeX_Size4-Regular-7PGNVPQK.ttf +0 -0
  70. package/dist/KaTeX_Size4-Regular-CDMV7U5C.woff2 +0 -0
  71. package/dist/KaTeX_Size4-Regular-PKMWZHNC.woff +0 -0
  72. package/dist/KaTeX_Typewriter-Regular-3F5K6SQ6.ttf +0 -0
  73. package/dist/KaTeX_Typewriter-Regular-MJMFSK64.woff +0 -0
  74. package/dist/KaTeX_Typewriter-Regular-VBYJ4NRC.woff2 +0 -0
  75. package/dist/KernelEngineContext-CcxGYtlr.d.ts +33 -0
  76. package/dist/LayersPanel-M2LHWUFF.js +6 -0
  77. package/dist/ModuleCard-QHDGK5XK.js +7 -0
  78. package/dist/OrbInspector-MHLJ6OEE.css +1756 -0
  79. package/dist/OrbInspector-QCPEPUPH.js +26 -0
  80. package/dist/Select-B-iDdnvE.d.ts +185 -0
  81. package/dist/ServerBridge-Bqsj-lOU.d.ts +124 -0
  82. package/dist/ThemeContext-DJmO59xd.d.ts +147 -0
  83. package/dist/UISlotContext-Dl_ewwCI.d.ts +79 -0
  84. package/dist/UISlotRenderer-C7WWOK43.js +26 -0
  85. package/dist/UISlotRenderer-KVFO6J7R.css +1756 -0
  86. package/dist/auth/browser/index.d.ts +2 -0
  87. package/dist/auth/browser/index.js +2 -0
  88. package/dist/auth/react/index.d.ts +56 -0
  89. package/dist/auth/react/index.js +157 -0
  90. package/dist/avl/index.css +1756 -0
  91. package/dist/avl/index.d.ts +2248 -0
  92. package/dist/avl/index.js +2693 -0
  93. package/dist/avl-3d-context-BycmO6tG.d.ts +201 -0
  94. package/dist/avl-schema-parser-CtJxJ9KU.d.ts +132 -0
  95. package/dist/avl-zoom-state-CKMVuBFg.d.ts +17 -0
  96. package/dist/chunk-3BBUBJFF.js +339 -0
  97. package/dist/chunk-3S54FWRC.js +131 -0
  98. package/dist/chunk-3VZ36ZKO.js +775 -0
  99. package/dist/chunk-4T3P43NS.js +1133 -0
  100. package/dist/chunk-4YXBKHHM.js +11488 -0
  101. package/dist/chunk-57DC34LY.js +525 -0
  102. package/dist/chunk-5QTYQTPS.js +15 -0
  103. package/dist/chunk-A2LR6VQQ.js +349 -0
  104. package/dist/chunk-AB3X7QTE.js +505 -0
  105. package/dist/chunk-AE7VCQB6.js +561 -0
  106. package/dist/chunk-AGXD77SL.js +98 -0
  107. package/dist/chunk-AU7O65OX.js +66 -0
  108. package/dist/chunk-CPLN6NBQ.js +701 -0
  109. package/dist/chunk-DZBQA2OW.js +176 -0
  110. package/dist/chunk-E6KA4J6N.js +227 -0
  111. package/dist/chunk-EOWMARUB.js +16 -0
  112. package/dist/chunk-G7DCAZ22.js +19 -0
  113. package/dist/chunk-GFXCPUMX.js +1334 -0
  114. package/dist/chunk-HH5KSMH5.js +311 -0
  115. package/dist/chunk-ILQXJ2AR.js +280 -0
  116. package/dist/chunk-ILZ7ORX7.js +432 -0
  117. package/dist/chunk-K4MOPSEL.js +674 -0
  118. package/dist/chunk-LHP2TK7O.js +47587 -0
  119. package/dist/chunk-P4ZFUQFF.js +93 -0
  120. package/dist/chunk-PCR37T3U.js +296 -0
  121. package/dist/chunk-PRXQGGCO.js +580 -0
  122. package/dist/chunk-REXYVBUO.js +191 -0
  123. package/dist/chunk-ROICKAU7.js +24 -0
  124. package/dist/chunk-SP5CDJ6K.js +338 -0
  125. package/dist/chunk-TUPZWTRE.js +1051 -0
  126. package/dist/chunk-TXAUOLWZ.js +490 -0
  127. package/dist/chunk-TZZBINQY.js +82 -0
  128. package/dist/chunk-UTDC2NEA.js +14 -0
  129. package/dist/chunk-UU57VNS2.js +1053 -0
  130. package/dist/chunk-UXLE3IPR.js +421 -0
  131. package/dist/chunk-VO2TTLS5.js +94 -0
  132. package/dist/chunk-X3DMMX27.js +11 -0
  133. package/dist/chunk-YHMRX6YA.js +455 -0
  134. package/dist/components/index.css +1756 -0
  135. package/dist/components/index.d.ts +11299 -0
  136. package/dist/components/index.js +1110 -0
  137. package/dist/context/index.d.ts +8 -0
  138. package/dist/context/index.js +8 -0
  139. package/dist/core.d.ts +2599 -0
  140. package/dist/core.js +3 -0
  141. package/dist/design-classes/index.cjs +431 -0
  142. package/dist/design-classes/index.d.cts +165 -0
  143. package/dist/design-classes/index.d.ts +165 -0
  144. package/dist/design-classes/index.js +399 -0
  145. package/dist/emojiItems-QGSNAABW.js +20 -0
  146. package/dist/fx-CmQjnHmT.d.ts +371 -0
  147. package/dist/hooks/index.d.ts +971 -0
  148. package/dist/hooks/index.js +8 -0
  149. package/dist/index.d.ts +408 -0
  150. package/dist/index.js +178 -0
  151. package/dist/katexPlugin-FA7NX4PE.css +1161 -0
  152. package/dist/katexPlugin-NCDKOOQY.js +2 -0
  153. package/dist/kernel-client-TZKGHJRY.js +516 -0
  154. package/dist/kernel-wire-wNdAPfhJ.d.ts +88 -0
  155. package/dist/lib/index.d.ts +602 -0
  156. package/dist/lib/index.js +1289 -0
  157. package/dist/paintDispatch-CuJLsr9Y.d.ts +688 -0
  158. package/dist/parseLessonSegments-GpCeMrb2.d.ts +334 -0
  159. package/dist/perf-CKiBKbkw.d.ts +22 -0
  160. package/dist/perf-Dr28-AgT.d.ts +57 -0
  161. package/dist/prism-X5YWKXO5.js +136 -0
  162. package/dist/providers/index.css +1756 -0
  163. package/dist/providers/index.d.ts +355 -0
  164. package/dist/providers/index.js +29 -0
  165. package/dist/renderer/index.d.ts +465 -0
  166. package/dist/renderer/index.js +4 -0
  167. package/dist/runtime/index.css +1756 -0
  168. package/dist/runtime/index.d.ts +239 -0
  169. package/dist/runtime/index.js +28 -0
  170. package/dist/slot-host-CPzrxLo9.d.ts +48 -0
  171. package/dist/ssr/index.cjs +9739 -0
  172. package/dist/ssr/index.d.cts +464 -0
  173. package/dist/ssr/index.d.ts +464 -0
  174. package/dist/ssr/index.js +9703 -0
  175. package/dist/storage/browser/index.d.ts +1 -0
  176. package/dist/storage/browser/index.js +2 -0
  177. package/dist/test-support.d.ts +42 -0
  178. package/dist/test-support.js +181 -0
  179. package/dist/themeTokens-CRd8AEDF.d.ts +125 -0
  180. package/dist/three/index.css +503 -0
  181. package/dist/three/index.d.ts +1185 -0
  182. package/dist/three/index.js +3908 -0
  183. package/dist/useUISlots-CiobNFGb.d.ts +211 -0
  184. package/dist/verification-C5pTeMJv.d.ts +66 -0
  185. package/dist/verificationRegistry-CVrcxG1s.d.ts +122 -0
  186. package/dist/wrapCallbackForEvent-B9QLbhxX.d.ts +19 -0
  187. package/index.css +199 -0
  188. package/package.json +273 -3
  189. package/src/core/lib/band-shapes.json +7 -0
  190. package/src/core/locales/ar.json +1276 -0
  191. package/src/core/locales/en.json +1276 -0
  192. package/src/core/locales/index.ts +54 -0
  193. package/src/core/locales/sl.json +1276 -0
  194. package/src/core/tokens/native-tokens.json +369 -0
  195. package/tailwind-compile.cjs +29 -0
  196. package/tailwind-preset.cjs +1020 -0
  197. package/themes/_base.css +451 -0
  198. package/themes/_contract.md +307 -0
  199. package/themes/_fonts-kenney.css +11 -0
  200. package/themes/_fonts.css +12 -0
  201. package/themes/_foundation.css +105 -0
  202. package/themes/_head.css +22 -0
  203. package/themes/_presets.css +67 -0
  204. package/themes/almadar-heritage.css +455 -0
  205. package/themes/almadar-website.css +269 -0
  206. package/themes/almadar.css +269 -0
  207. package/themes/aqua.css +455 -0
  208. package/themes/arabesque.css +459 -0
  209. package/themes/art-deco.css +457 -0
  210. package/themes/art-nouveau.css +459 -0
  211. package/themes/atelier.css +463 -0
  212. package/themes/bauhaus.css +461 -0
  213. package/themes/bloomberg-dense.css +463 -0
  214. package/themes/blueprint.css +457 -0
  215. package/themes/clay.css +449 -0
  216. package/themes/comic.css +453 -0
  217. package/themes/constructivist.css +457 -0
  218. package/themes/corporate.css +449 -0
  219. package/themes/cyberpunk.css +453 -0
  220. package/themes/frutiger-aero.css +458 -0
  221. package/themes/game-adventure.css +201 -0
  222. package/themes/game-rpg.css +203 -0
  223. package/themes/game-sci-fi.css +201 -0
  224. package/themes/game-ui-pack.css +200 -0
  225. package/themes/gazette.css +449 -0
  226. package/themes/glass.css +457 -0
  227. package/themes/gothic.css +453 -0
  228. package/themes/index.css +21 -0
  229. package/themes/ink-wash.css +459 -0
  230. package/themes/kawaii.css +459 -0
  231. package/themes/kflow.css +310 -0
  232. package/themes/kiosk.css +449 -0
  233. package/themes/linear-clean.css +463 -0
  234. package/themes/luxury.css +451 -0
  235. package/themes/mac-classic.css +455 -0
  236. package/themes/material.css +463 -0
  237. package/themes/memphis.css +453 -0
  238. package/themes/mid-century.css +455 -0
  239. package/themes/minimalist.css +449 -0
  240. package/themes/mudcloth.css +459 -0
  241. package/themes/nata.css +310 -0
  242. package/themes/neon.css +453 -0
  243. package/themes/neumorphic.css +451 -0
  244. package/themes/newsprint.css +455 -0
  245. package/themes/notion-editorial.css +463 -0
  246. package/themes/orb.css +465 -0
  247. package/themes/pixel.css +449 -0
  248. package/themes/prism.css +309 -0
  249. package/themes/rawi.css +310 -0
  250. package/themes/retro.css +452 -0
  251. package/themes/risograph.css +463 -0
  252. package/themes/scandi.css +469 -0
  253. package/themes/sketch.css +455 -0
  254. package/themes/solarpunk.css +469 -0
  255. package/themes/steampunk.css +451 -0
  256. package/themes/swiss.css +455 -0
  257. package/themes/terminal.css +466 -0
  258. package/themes/trait-wars.css +487 -0
  259. package/themes/ukiyo-e.css +459 -0
  260. package/themes/vaporwave.css +455 -0
  261. package/themes/victorian.css +453 -0
  262. package/themes/wabi-sabi.css +459 -0
  263. package/themes/win95.css +455 -0
  264. package/themes/wireframe.css +439 -0
  265. package/themes/zine.css +455 -0
  266. package/README.md +0 -3
package/dist/core.d.ts ADDED
@@ -0,0 +1,2599 @@
1
+ import * as React$1 from 'react';
2
+ import React__default, { RefObject } from 'react';
3
+ import { A11yProps, AssetUrl, EventKey, TextureAtlas, Tilesheet, SpriteSheetAtlas, EventPayload, EventEmit, FieldValue, SExpr, Asset, OrbitalSchema, OrbitalPage, NavStackEntry, IconFamily as IconFamily$1, JsonValue, SurfaceMode } from '@almadar/core';
4
+ export { BusEvent, BusEventListener, BusEventSource, BusEventListener as EventListener, SurfaceMode, Unsubscribe, comparePathSpecificity, matchPath, matchPathAmong } from '@almadar/core';
5
+ import { I as IconInput } from './fx-CmQjnHmT.js';
6
+ export { B as Badge, b as BadgeColor, c as BadgeProps, d as BadgeSize, e as BadgeVariant, C as CONFETTI_BURST_KEYFRAMES, f as CONFETTI_COLORS, g as ColorToken, h as ConfettiParticle, D as DisplayField, i as DisplayFieldFormat, j as DisplayFieldVariant, F as FxItem, k as FxLifecycle, l as FxOverlayItem, m as FxOverlayKind, a as FxPreset, n as FxProceduralShape, o as FxSpace, p as FxView, q as Icon, r as IconAnimation, s as IconProps, t as IconSize, u as ImageSource, L as LinkAction, P as Point, R as Rect, U as UiError, v as createConfettiParticles, w as fxHash01, x as fxLifecycle, y as resolveFxView, z as resolveIcon } from './fx-CmQjnHmT.js';
7
+ export { B as Button, a as ButtonProps, b as ButtonSize, c as ButtonVariant, I as Input, d as InputProps, P as PatternTile, e as PatternTileProps, f as PatternVariant, S as Select, g as SelectOption, h as SelectOptionGroup, i as SelectProps, j as getTileDimensions } from './Select-B-iDdnvE.js';
8
+ export { E as EventBusContext, a as EventBusContextType, b as EventBusContextTypeExtended, c as EventBusProvider, V as VideoEmbed, d as VideoEmbedProps, e as VideoErrorPayload, f as VideoPlayPayload, g as VideoReadyPayload, h as getGlobalEventBus, s as setGlobalEventBus, u as useEmitEvent, i as useEventBus, j as useEventListener, k as useEventSubscription, l as useRootEventBus } from './EventBusProvider-BFFHfN4O.js';
9
+ import { ClassValue } from 'clsx';
10
+ import { LucideIcon } from 'lucide-react';
11
+ import { EvalContextWire, TraitSurface } from '@almadar/core/kernel-wire';
12
+ import { U as UIThemeDefinition } from './ThemeContext-DJmO59xd.js';
13
+ export { C as ColorMode, D as DesignTheme, R as ResolvedMode, a as ResolvedTheme, b as Theme, c as ThemeProvider, T as ThemeProviderProps, d as ThemeScope, e as ThemeScopeContext, k as keyInViewerMode, r as registryKeyMode, f as registryKeyTheme, t as themeHasMode, u as useScopedMode, g as useTheme, h as useThemeScope } from './ThemeContext-DJmO59xd.js';
14
+
15
+ type GraphicAnimation = 'draw' | 'fill' | 'pulse' | 'morph';
16
+ /** @accessibleName alt */
17
+ interface AnimatedGraphicProps extends Omit<React__default.HTMLAttributes<HTMLDivElement>, keyof A11yProps>, A11yProps {
18
+ /** Additional CSS classes applied to the root element. */
19
+ className?: string;
20
+ /** URL to an SVG file. Fetched and inlined to enable stroke/fill animations. */
21
+ src?: AssetUrl;
22
+ /** Inline SVG string. Takes precedence over src if both provided. */
23
+ svgContent?: string;
24
+ /** Animation type applied to SVG paths/shapes */
25
+ animation?: GraphicAnimation;
26
+ /** Whether to run the animation (default: false). Controlled externally or via AnimatedReveal. */
27
+ animate?: boolean;
28
+ /** Animation duration in ms (default: 1200) */
29
+ duration?: number;
30
+ /** Delay before animation starts in ms (default: 0) */
31
+ delay?: number;
32
+ /** Easing function (default: cubic-bezier(0.16, 1, 0.3, 1)) */
33
+ easing?: string;
34
+ /** Width of the graphic container */
35
+ width?: string | number;
36
+ /** Height of the graphic container */
37
+ height?: string | number;
38
+ /** Stroke color override for SVG paths */
39
+ strokeColor?: string;
40
+ /** Fill color for the 'fill' animation end state */
41
+ fillColor?: string;
42
+ /** Alt text for accessibility */
43
+ alt?: string;
44
+ }
45
+ declare const AnimatedGraphic: React__default.ForwardRefExoticComponent<AnimatedGraphicProps & React__default.RefAttributes<HTMLDivElement>>;
46
+
47
+ type RevealTrigger = 'scroll' | 'hover' | 'manual';
48
+ type RevealAnimation = 'fade-up' | 'fade-down' | 'fade-in' | 'fade-left' | 'fade-right' | 'scale' | 'scale-up' | 'none';
49
+ interface AnimatedRevealProps extends Omit<React__default.HTMLAttributes<HTMLDivElement>, 'children' | keyof A11yProps>, A11yProps {
50
+ /** Additional CSS classes applied to the root element. */
51
+ className?: string;
52
+ /** What triggers the animation */
53
+ trigger?: RevealTrigger;
54
+ /** Built-in animation preset */
55
+ animation?: RevealAnimation;
56
+ /** Animation duration in ms (default: 600) */
57
+ duration?: number;
58
+ /** Delay before animation starts in ms (default: 0) */
59
+ delay?: number;
60
+ /** How much of the element must be visible before triggering, 0-1 (default: 0.15) */
61
+ threshold?: number;
62
+ /**
63
+ * scroll trigger: event emitted once (as UI:{revealEvent}) the first time the element scrolls into view; never under reduced motion
64
+ * @notification
65
+ */
66
+ revealEvent?: EventKey;
67
+ /**
68
+ * scroll trigger: event emitted (as UI:{enterEvent}) every time the element enters the view
69
+ * @notification
70
+ */
71
+ enterEvent?: EventKey;
72
+ /**
73
+ * scroll trigger: event emitted (as UI:{leaveEvent}) every time the element leaves the view after having entered it
74
+ * @notification
75
+ */
76
+ leaveEvent?: EventKey;
77
+ /** Animate only the first time the element enters the viewport (default: true) */
78
+ once?: boolean;
79
+ /** Manual control: when trigger='manual', set this to true to animate */
80
+ animate?: boolean;
81
+ /** Easing function (default: cubic-bezier(0.16, 1, 0.3, 1)) */
82
+ easing?: string;
83
+ /** Children: ReactNode or render function receiving animated state */
84
+ children: React__default.ReactNode | ((animated: boolean) => React__default.ReactNode);
85
+ }
86
+ declare const AnimatedReveal: React__default.ForwardRefExoticComponent<AnimatedRevealProps & React__default.RefAttributes<HTMLDivElement>>;
87
+
88
+ /**
89
+ * Aside Atom Component
90
+ *
91
+ * Semantic wrapper for the native `<aside>` landmark. Owns raw HTML so
92
+ * molecules (SidePanel, navigation rails, callouts) can compose the
93
+ * semantic-aside primitive without falling back to a raw element.
94
+ */
95
+
96
+ /**
97
+ * Aside — a secondary side panel that hosts navigation links or supplementary
98
+ * content alongside a main content area.
99
+ *
100
+ * @capabilities settings navigation sidebar, preferences menu panel, account settings nav, secondary panel, side navigation rail
101
+ */
102
+ interface AsideProps extends Omit<React__default.HTMLAttributes<HTMLElement>, keyof A11yProps>, A11yProps {
103
+ /** Additional CSS classes */
104
+ className?: string;
105
+ /** Aside contents */
106
+ children?: React__default.ReactNode;
107
+ }
108
+ declare const Aside: React__default.ForwardRefExoticComponent<AsideProps & React__default.RefAttributes<HTMLElement>>;
109
+
110
+ /**
111
+ * atlasSlice — the ONLY place a packed sheet is cut at runtime.
112
+ *
113
+ * An `Asset` may carry `{ url: <sheet.png>, atlas: <atlas.json>, sprite: <name|index> }`. This
114
+ * module fetches + caches the atlas JSON (a `TextureAtlas` of named sub-rects or a uniform
115
+ * `Tilesheet`) and resolves the source rectangle for a `sprite`, so the canvas can `drawImage`
116
+ * exactly that sub-region of the sheet. Coexists with the whole-PNG path (an Asset with no
117
+ * `atlas`/`sprite` draws the whole image) and the `useUnitSpriteAtlas` animation path.
118
+ *
119
+ * See `docs/Almadar_Std_Assets.md` §2, §7.
120
+ *
121
+ * @packageDocumentation
122
+ */
123
+
124
+ /** The minimal draw-relevant projection of an `Asset` — a sheet URL plus an optional atlas
125
+ * sub-texture reference. A full `@almadar/core` `Asset` is structurally assignable. */
126
+ interface SpriteRef {
127
+ url?: string;
128
+ atlas?: string;
129
+ sprite?: string;
130
+ }
131
+ type ParsedAtlas = TextureAtlas | Tilesheet | SpriteSheetAtlas;
132
+ /** True for an animated sprite-sheet manifest (frame grid + animation rows). */
133
+ declare function isSpriteSheetAtlas(a: ParsedAtlas): a is SpriteSheetAtlas;
134
+ /**
135
+ * Get a parsed atlas by URL, fetching+caching on first request. Returns undefined until loaded;
136
+ * `onReady` fires once when the fetch resolves so the caller can trigger a re-render.
137
+ */
138
+ declare function getAtlas(url: string, onReady: () => void): ParsedAtlas | undefined;
139
+ /** True when the atlas fetch for `url` has failed (cached null). `getAtlas`
140
+ * collapses in-flight and failed to `undefined`; this distinguishes them. */
141
+ declare function atlasFailed(url: string): boolean;
142
+ interface SubRect {
143
+ sx: number;
144
+ sy: number;
145
+ sw: number;
146
+ sh: number;
147
+ }
148
+ /**
149
+ * Resolve the source rect for `sprite` in `atlas`.
150
+ * - `TextureAtlas`: `sprite` is a SubTexture name (e.g. `"blockBrown.png"`).
151
+ * - `Tilesheet`: `sprite` is `"col,row"` or a flat index into the row-major grid.
152
+ * Returns null if the name/index doesn't resolve.
153
+ */
154
+ declare function subRectFor(atlas: ParsedAtlas, sprite: string): SubRect | null;
155
+ /** True when the asset points into a sheet (needs slicing) rather than being a whole PNG. */
156
+ /** The asset's atlas manifest URL; an empty string means no atlas. */
157
+ declare function atlasUrlOf(asset: SpriteRef | undefined | null): string | undefined;
158
+ declare function isAtlasAsset(asset: SpriteRef | undefined | null): boolean;
159
+ interface AssetSource {
160
+ img: HTMLImageElement;
161
+ /** Sub-rect to blit; null = draw the whole image. */
162
+ rect: SubRect | null;
163
+ /** Source aspect ratio (width/height) — sub-rect for a slice, natural otherwise. */
164
+ aspect: number;
165
+ }
166
+ /**
167
+ * Resolve what to draw for `asset` given its loaded sheet `img`. Returns null when the asset is
168
+ * an atlas ref whose JSON isn't loaded yet (or whose sprite name doesn't resolve) — `onReady`
169
+ * will trigger a re-render once the fetch lands. Callers use `.aspect` to size, then `blit`.
170
+ */
171
+ declare function resolveAssetSource(img: HTMLImageElement, asset: SpriteRef | undefined | null, onReady: () => void): AssetSource | null;
172
+ /** Draw a resolved source at `(dx,dy,dw,dh)` — sliced sub-rect or whole image. */
173
+ declare function blit(ctx: CanvasRenderingContext2D, src: AssetSource, dx: number, dy: number, dw: number, dh: number): void;
174
+
175
+ /** Asset-compatible input: sheet url + optional atlas sub-texture reference. */
176
+ interface AtlasImageAsset extends SpriteRef {
177
+ name?: string;
178
+ category?: string;
179
+ }
180
+ /** @accessibleName alt */
181
+ interface AtlasImageProps extends Omit<A11yProps, 'aria-hidden'> {
182
+ asset?: AtlasImageAsset;
183
+ /** Square pixel size (icon usage). Ignored when `fill`. */
184
+ size?: number;
185
+ width?: number;
186
+ height?: number;
187
+ /** Absolutely fill the nearest positioned ancestor (background usage). */
188
+ fill?: boolean;
189
+ fit?: 'contain' | 'cover' | 'fill';
190
+ alt?: string;
191
+ className?: string;
192
+ style?: React$1.CSSProperties;
193
+ 'aria-hidden'?: boolean;
194
+ }
195
+ /**
196
+ * Resolve an atlas slice to a standalone dataURL (extracted once, cached) so CSS can 9-slice or
197
+ * tile it — `border-image`/`background-repeat` can't crop a packed sheet. Returns undefined until
198
+ * the sheet + atlas are loaded; `onReady` re-fires the caller when they land.
199
+ */
200
+ declare function useAtlasSliceDataUrl(asset: AtlasImageAsset | undefined): string | undefined;
201
+ interface AtlasPanelProps extends Omit<A11yProps, 'aria-hidden'> {
202
+ asset?: AtlasImageAsset;
203
+ /** Border thickness (source pixels) for the 9-slice cut. */
204
+ borderSlice?: number;
205
+ /** Rendered border width in CSS px. */
206
+ borderWidth?: number;
207
+ /** 'nineSlice' scales edges crisp (panels/buttons); 'repeat' tiles the slice (pattern fills). */
208
+ mode?: 'nineSlice' | 'repeat';
209
+ className?: string;
210
+ style?: React$1.CSSProperties;
211
+ children?: React$1.ReactNode;
212
+ 'aria-hidden'?: boolean;
213
+ }
214
+ /**
215
+ * A container skinned by an atlas slice: 9-sliced panel chrome or a tiled pattern. The pack sheet
216
+ * is cropped once to a dataURL; CSS border-image / background-repeat does the scaling. Falls back
217
+ * to a plain container while the sheet/atlas load.
218
+ */
219
+ declare function AtlasPanel({ asset, borderSlice, borderWidth, mode, className, style, children, 'aria-hidden': ariaHidden, ...rest }: AtlasPanelProps): React$1.JSX.Element;
220
+ declare namespace AtlasPanel {
221
+ var displayName: string;
222
+ }
223
+ /**
224
+ * The one chrome-side renderer for `Asset` images. With `atlas`+`sprite` it draws EXACTLY that
225
+ * sub-rect of the packed sheet into a canvas (never the whole sheet); otherwise it renders the
226
+ * plain `<img>` path. `fill` + `fit` cover background/panel usage (GameShell, card frames).
227
+ */
228
+ declare function AtlasImage({ asset, size, width, height, fill, fit, alt, className, style, 'aria-hidden': ariaHidden, ...rest }: AtlasImageProps): React$1.JSX.Element | null;
229
+ declare namespace AtlasImage {
230
+ var displayName: string;
231
+ }
232
+
233
+ type AvatarSize = "xs" | "sm" | "md" | "lg" | "xl";
234
+ type AvatarStatus = "online" | "offline" | "away" | "busy";
235
+ /**
236
+ * @accessibleName alt name
237
+ * @role img
238
+ * @tokens --color-muted --color-border --color-foreground
239
+ * @contrast foreground muted
240
+ * @motion css
241
+ */
242
+ interface AvatarProps extends A11yProps {
243
+ /**
244
+ * Image source URL
245
+ */
246
+ src?: AssetUrl;
247
+ /**
248
+ * Alt text for the image
249
+ */
250
+ alt?: string;
251
+ /**
252
+ * Full name - initials will be generated automatically
253
+ */
254
+ name?: string;
255
+ /**
256
+ * Initials to display (e.g., "JD" for John Doe)
257
+ * If not provided but name is, initials will be auto-generated
258
+ */
259
+ initials?: string;
260
+ /**
261
+ * Icon to display when no image or initials. Accepts a Lucide component
262
+ * directly, or a canonical kebab-case icon name string (resolved via
263
+ * `resolveIcon`) so trait/factory authors can pass an icon by name.
264
+ */
265
+ icon?: IconInput;
266
+ /**
267
+ * Size of the avatar
268
+ * @default 'md'
269
+ */
270
+ size?: AvatarSize;
271
+ /**
272
+ * Status indicator
273
+ */
274
+ status?: AvatarStatus;
275
+ /**
276
+ * Badge content (e.g., notification count)
277
+ */
278
+ badge?: string | number;
279
+ /**
280
+ * Additional CSS classes
281
+ */
282
+ className?: string;
283
+ /**
284
+ * Click handler
285
+ */
286
+ onClick?: () => void;
287
+ /** Declarative event name — emits UI:{action} via eventBus on click */
288
+ action?: EventKey;
289
+ /** Payload to include with the action event
290
+ * @payloadFor action
291
+ */
292
+ actionPayload?: EventPayload;
293
+ }
294
+ declare const Avatar: React__default.FC<AvatarProps>;
295
+
296
+ type BandEdge = 'none' | 'curve' | 'wave' | 'arc' | 'tilt' | 'step' | 'scallop';
297
+ type BandEdgeColor = 'background' | 'muted' | 'surface' | 'gradient' | 'inverse';
298
+ declare const BAND_SHAPES: Record<Exclude<BandEdge, 'none' | 'curve'>, string>;
299
+ declare const BAND_ACCENT_FALLBACK = "linear-gradient(180deg, color-mix(in oklab, var(--color-primary) 12%, var(--color-background)), var(--color-background))";
300
+ declare const BAND_EDGE_FILL: Record<BandEdgeColor, string>;
301
+ declare function bandEdgeMask(edge: Exclude<BandEdge, 'none'>): string;
302
+ declare function bandEdgeHeight(edge: Exclude<BandEdge, 'none'>): string;
303
+ interface BandEdgeLayerStyle {
304
+ height: string;
305
+ background: string;
306
+ maskImage: string;
307
+ WebkitMaskImage: string;
308
+ transform?: string;
309
+ backgroundSize?: string;
310
+ backgroundAttachment?: string;
311
+ }
312
+ declare function bandEdgeLayerStyle(edge: Exclude<BandEdge, 'none'>, side: 'top' | 'bottom', flip: boolean, color: BandEdgeColor): BandEdgeLayerStyle;
313
+ declare function bandPadding(basePad: string, edge: BandEdge): string | undefined;
314
+
315
+ /**
316
+ * Box Component
317
+ *
318
+ * A versatile layout primitive that provides spacing, background, border, and shadow controls.
319
+ * Think of it as a styled div with consistent design tokens.
320
+ */
321
+
322
+ type BoxPadding = "none" | "xs" | "sm" | "md" | "lg" | "xl" | "2xl";
323
+ type BoxMargin = "none" | "xs" | "sm" | "md" | "lg" | "xl" | "2xl" | "auto";
324
+ type BoxBg = "transparent" | "primary" | "secondary" | "muted" | "accent" | "surface" | "overlay" | "gradient" | "inverse";
325
+ type BoxRounded = "none" | "sm" | "md" | "lg" | "xl" | "2xl" | "full";
326
+ type BoxShadow = "none" | "sm" | "md" | "lg" | "xl";
327
+ interface BoxProps extends Omit<React__default.HTMLAttributes<HTMLDivElement>, keyof A11yProps>, A11yProps {
328
+ /** Additional CSS classes applied to the root element. */
329
+ className?: string;
330
+ /** Inline styles applied to the root element. */
331
+ style?: React__default.CSSProperties;
332
+ /** Data-theme attribute applied to the root element for CSS theme scoping (e.g. almadar-website-dark). */
333
+ 'data-theme'?: string;
334
+ /**
335
+ * Padding on all sides
336
+ * @example md
337
+ */
338
+ padding?: BoxPadding;
339
+ /** Horizontal padding (overrides padding for x-axis) */
340
+ paddingX?: BoxPadding;
341
+ /** Vertical padding (overrides padding for y-axis) */
342
+ paddingY?: BoxPadding;
343
+ /** Margin on all sides */
344
+ margin?: BoxMargin;
345
+ /** Horizontal margin */
346
+ marginX?: BoxMargin;
347
+ /** Vertical margin */
348
+ marginY?: BoxMargin;
349
+ /** Background color */
350
+ bg?: BoxBg;
351
+ /**
352
+ * Show border
353
+ * @example true
354
+ */
355
+ border?: boolean;
356
+ /** Border radius */
357
+ rounded?: BoxRounded;
358
+ /** Box shadow */
359
+ shadow?: BoxShadow;
360
+ /** Display type */
361
+ display?: "block" | "inline" | "inline-block" | "flex" | "inline-flex" | "grid";
362
+ /** Fill available width */
363
+ fullWidth?: boolean;
364
+ /** Fill available height */
365
+ fullHeight?: boolean;
366
+ /** Overflow behavior */
367
+ overflow?: "auto" | "hidden" | "visible" | "scroll";
368
+ /** Position */
369
+ position?: "relative" | "absolute" | "fixed" | "sticky";
370
+ /** HTML element to render as */
371
+ as?: React__default.ElementType;
372
+ /** Declarative event name — emits UI:{action} via eventBus on click */
373
+ action?: EventKey;
374
+ /** Payload to include with the action event
375
+ * @payloadFor action
376
+ */
377
+ actionPayload?: EventPayload;
378
+ /**
379
+ * Declarative hover event — emits UI:{hoverEvent} with { hovered: true/false } on mouseEnter/mouseLeave
380
+ * @notification
381
+ */
382
+ hoverEvent?: EventEmit<{
383
+ hovered: boolean;
384
+ }>;
385
+ /** When true (default), a touch/pen tap also fires `hoverEvent` (toggling hovered) so hover-only reveals work on touch. */
386
+ tapReveal?: boolean;
387
+ /** Maximum width (CSS value, e.g., "550px", "80rem") */
388
+ maxWidth?: string;
389
+ /** Shape cut into the top edge of a full-width band; "curve" uses the theme's shape */
390
+ edgeTop?: BandEdge;
391
+ /** Shape cut into the bottom edge of a full-width band; "curve" uses the theme's shape */
392
+ edgeBottom?: BandEdge;
393
+ /** Surface of the neighbouring band, which fills the cut */
394
+ edgeColor?: BandEdgeColor;
395
+ /** Mirror the edge shapes horizontally */
396
+ edgeFlip?: boolean;
397
+ /** Lay the theme's texture over the band */
398
+ texture?: boolean;
399
+ /** Content that appears or changes inside the box eases in instead of switching in one frame (new rows, swapped views, changed text), played in presentation motion (the theme's dramatic duration, standard easing) so it can be watched. Off under reduced motion. */
400
+ animateChanges?: boolean;
401
+ /** Scene behind the band's content (photo, illustration, pattern); never takes clicks */
402
+ backdrop?: React__default.ReactNode;
403
+ /** Children elements */
404
+ children?: React__default.ReactNode;
405
+ }
406
+ /**
407
+ * Box - Versatile container component with design tokens
408
+ */
409
+ declare const Box: React__default.ForwardRefExoticComponent<BoxProps & React__default.RefAttributes<HTMLDivElement>>;
410
+
411
+ type CardShadow = "none" | "sm" | "md" | "lg";
412
+ /**
413
+ * Layer 2 visual treatment for the card pattern — orthogonal to the semantic
414
+ * `variant` (which conveys role / state).
415
+ */
416
+ type CardLook = "elevated" | "flat-bordered" | "borderless-divider" | "ticket" | "invoice" | "chip" | "tile-image-first";
417
+ interface CardProps extends Omit<React__default.HTMLAttributes<HTMLDivElement>, keyof A11yProps>, A11yProps {
418
+ /** Additional CSS classes applied to the root element. */
419
+ className?: string;
420
+ variant?: "default" | "bordered" | "elevated" | "interactive";
421
+ padding?: "none" | "sm" | "md" | "lg";
422
+ /** Card title - renders in header if provided */
423
+ title?: string;
424
+ /** Card subtitle - renders below title */
425
+ subtitle?: string;
426
+ /** Shadow size override */
427
+ shadow?: CardShadow;
428
+ /** Layer 2 visual treatment — orthogonal to the semantic variant. */
429
+ look?: CardLook;
430
+ /** Card content */
431
+ children?: React__default.ReactNode;
432
+ /** Declarative event key emitted on click for trait dispatch */
433
+ action?: EventKey;
434
+ /** Shows a skeleton/spinner overlay while true. */
435
+ loading?: boolean;
436
+ }
437
+ declare const Card: React__default.ForwardRefExoticComponent<CardProps & React__default.RefAttributes<HTMLDivElement>>;
438
+ declare const CardHeader: React__default.ForwardRefExoticComponent<React__default.HTMLAttributes<HTMLDivElement> & React__default.RefAttributes<HTMLDivElement>>;
439
+ declare const CardTitle: React__default.ForwardRefExoticComponent<React__default.HTMLAttributes<HTMLHeadingElement> & React__default.RefAttributes<HTMLHeadingElement>>;
440
+ declare const CardContent: React__default.ForwardRefExoticComponent<React__default.HTMLAttributes<HTMLDivElement> & React__default.RefAttributes<HTMLDivElement>>;
441
+ declare const CardBody: React__default.ForwardRefExoticComponent<React__default.HTMLAttributes<HTMLDivElement> & React__default.RefAttributes<HTMLDivElement>>;
442
+ declare const CardFooter: React__default.ForwardRefExoticComponent<React__default.HTMLAttributes<HTMLDivElement> & React__default.RefAttributes<HTMLDivElement>>;
443
+
444
+ interface CenterProps extends A11yProps {
445
+ /** Center inline (width fits content) vs block (full width) */
446
+ inline?: boolean;
447
+ /** Center only horizontally */
448
+ horizontal?: boolean;
449
+ /** Center only vertically */
450
+ vertical?: boolean;
451
+ /** Minimum height (useful for vertical centering) */
452
+ minHeight?: string | number;
453
+ /** Fill available height */
454
+ fullHeight?: boolean;
455
+ /** Fill available width */
456
+ fullWidth?: boolean;
457
+ /** Custom class name */
458
+ className?: string;
459
+ /** Inline styles */
460
+ style?: React__default.CSSProperties;
461
+ /** Children elements */
462
+ children: React__default.ReactNode;
463
+ /** HTML element to render as */
464
+ as?: React__default.ElementType;
465
+ }
466
+ /**
467
+ * Center - Centers content horizontally and/or vertically
468
+ */
469
+ declare const Center: React__default.FC<CenterProps>;
470
+
471
+ /**
472
+ * @accessibleName label
473
+ * @role checkbox
474
+ * @tokens --color-primary --color-border --color-card --color-foreground
475
+ * @contrast foreground card
476
+ * @motion none
477
+ */
478
+ interface CheckboxProps extends Omit<React__default.InputHTMLAttributes<HTMLInputElement>, "type" | "onChange" | keyof A11yProps>, A11yProps {
479
+ /** Additional CSS classes applied to the root element. */
480
+ className?: string;
481
+ /** Whether the checkbox is checked */
482
+ checked?: boolean;
483
+ /** Default checked state (uncontrolled) */
484
+ defaultChecked?: boolean;
485
+ label?: string;
486
+ /** Error message */
487
+ error?: string;
488
+ /** onChange handler or declarative event key for trait dispatch */
489
+ onChange?: React__default.ChangeEventHandler<HTMLInputElement> | EventEmit<{
490
+ checked: boolean;
491
+ }>;
492
+ }
493
+ declare const Checkbox: React__default.ForwardRefExoticComponent<CheckboxProps & React__default.RefAttributes<HTMLInputElement>>;
494
+
495
+ /**
496
+ * ConditionalWrapper Atom Component
497
+ *
498
+ * A wrapper component that conditionally renders its children based on
499
+ * S-expression evaluation. Used for dynamic field visibility in inspection forms.
500
+ */
501
+
502
+ /**
503
+ * Context for conditional evaluation
504
+ */
505
+ type ConditionalContext = {
506
+ formValues: Record<string, FieldValue>;
507
+ globalVariables: Record<string, FieldValue>;
508
+ localVariables?: Record<string, FieldValue>;
509
+ entity?: Record<string, FieldValue>;
510
+ };
511
+ interface ConditionalWrapperProps {
512
+ /** The S-expression condition to evaluate */
513
+ condition?: SExpr;
514
+ /** Context for evaluating the condition */
515
+ context: ConditionalContext;
516
+ /** Children to render when condition is true (or when no condition is provided) */
517
+ children: React__default.ReactNode;
518
+ /** Optional fallback to render when condition is false */
519
+ fallback?: React__default.ReactNode;
520
+ /** Whether to animate the transition (uses CSS transitions) */
521
+ animate?: boolean;
522
+ }
523
+ /**
524
+ * ConditionalWrapper conditionally renders children based on S-expression evaluation.
525
+ *
526
+ * Supported bindings:
527
+ * - @entity.formValues.fieldId - Access form field values
528
+ * - @entity.globalVariables.HG_VAR - Access global inspection variables
529
+ * - @entity.localVariables.H_VAR - Access document-local variables
530
+ * - @state - Current state machine state
531
+ * - @now - Current timestamp
532
+ *
533
+ * @example
534
+ * // Simple condition - show field when another field equals a value
535
+ * <ConditionalWrapper
536
+ * condition={["=", "@entity.formValues.vehicleType", "commercial"]}
537
+ * context={{ formValues: { vehicleType: "commercial" }, globalVariables: {} }}
538
+ * >
539
+ * <Input name="commercialLicenseNumber" />
540
+ * </ConditionalWrapper>
541
+ *
542
+ * @example
543
+ * // With fallback - show message when condition not met
544
+ * <ConditionalWrapper
545
+ * condition={[">=", "@entity.formValues.loadWeight", 3500]}
546
+ * context={formContext}
547
+ * fallback={<Typography variant="small">Load weight must be at least 3500kg</Typography>}
548
+ * >
549
+ * <HeavyVehicleFields />
550
+ * </ConditionalWrapper>
551
+ *
552
+ * @example
553
+ * // Using global variables for cross-form conditions
554
+ * <ConditionalWrapper
555
+ * condition={["=", "@entity.globalVariables.HG_POTROSNIKI", "DA"]}
556
+ * context={{ formValues: {}, globalVariables: { HG_POTROSNIKI: "DA" } }}
557
+ * >
558
+ * <PriceMarkingSection />
559
+ * </ConditionalWrapper>
560
+ */
561
+ declare const ConditionalWrapper: React__default.FC<ConditionalWrapperProps>;
562
+
563
+ interface ConfettiEffectProps extends A11yProps {
564
+ /** When this changes from false to true, a burst of particles is spawned */
565
+ trigger: boolean;
566
+ /** How long the animation lasts in milliseconds */
567
+ duration?: number;
568
+ /** Number of particles to spawn */
569
+ particleCount?: number;
570
+ /** Additional class names */
571
+ className?: string;
572
+ }
573
+ declare const ConfettiEffect: React__default.FC<ConfettiEffectProps>;
574
+
575
+ interface DayCellProps extends A11yProps {
576
+ /** The date this cell represents. Optional at the dynamic render edge: an
577
+ * unbound `@config.date` arrives as `undefined`, so the cell falls back to today. */
578
+ date?: Date;
579
+ /** Whether this date is today */
580
+ isToday?: boolean;
581
+ /** Called when the day is clicked */
582
+ onClick?: (date: Date) => void;
583
+ /** Additional CSS classes */
584
+ className?: string;
585
+ }
586
+ declare function DayCell({ date, isToday, onClick, className, ...rest }: DayCellProps): React__default.JSX.Element;
587
+ declare namespace DayCell {
588
+ var displayName: string;
589
+ }
590
+
591
+ /**
592
+ * Dialog Atom Component
593
+ *
594
+ * Semantic wrapper for the native `<dialog>` element. Owns the raw
595
+ * HTML rendering so molecules (Modal, ConfirmDialog, etc.) can compose
596
+ * the dialog primitive without dropping back to raw HTML.
597
+ *
598
+ * Defaults `role="dialog"` and `aria-modal="true"`; both overridable
599
+ * for non-modal use cases.
600
+ */
601
+
602
+ interface DialogProps extends Omit<React__default.DialogHTMLAttributes<HTMLDialogElement>, keyof A11yProps>, A11yProps {
603
+ /** Additional CSS classes */
604
+ className?: string;
605
+ /** Dialog contents */
606
+ children?: React__default.ReactNode;
607
+ }
608
+ declare const Dialog: React__default.ForwardRefExoticComponent<DialogProps & React__default.RefAttributes<HTMLDialogElement>>;
609
+
610
+ /**
611
+ * Divider Atom Component
612
+ *
613
+ * A divider component for separating content sections.
614
+ */
615
+
616
+ type DividerOrientation = "horizontal" | "vertical";
617
+ type DividerVariant = "solid" | "dashed" | "dotted";
618
+ /**
619
+ * @role separator
620
+ * @tokens --color-border
621
+ * @motion none
622
+ */
623
+ interface DividerProps extends A11yProps {
624
+ /**
625
+ * Orientation of the divider
626
+ * @default 'horizontal'
627
+ */
628
+ orientation?: DividerOrientation;
629
+ /**
630
+ * Text label to display in the divider
631
+ */
632
+ label?: string;
633
+ /**
634
+ * Line style variant
635
+ * @default 'solid'
636
+ */
637
+ variant?: DividerVariant;
638
+ /**
639
+ * Additional CSS classes
640
+ */
641
+ className?: string;
642
+ }
643
+ declare const Divider: React__default.FC<DividerProps>;
644
+
645
+ type FilterPillVariant = "default" | "primary" | "secondary" | "success" | "warning" | "danger" | "info" | "neutral";
646
+ type FilterPillSize = "sm" | "md" | "lg";
647
+ interface FilterPillProps extends Omit<React__default.HTMLAttributes<HTMLSpanElement>, "onClick" | keyof A11yProps>, A11yProps {
648
+ /** Additional CSS classes applied to the root element. */
649
+ className?: string;
650
+ variant?: FilterPillVariant;
651
+ size?: FilterPillSize;
652
+ /** Pill label text (alternative to children for schema-driven rendering). */
653
+ label?: string | number;
654
+ /** Lucide icon component or canonical kebab-case icon name string */
655
+ icon?: IconInput;
656
+ /** Called when the user clicks the remove (×) button
657
+ * @offByDefault */
658
+ onRemove?: () => void;
659
+ /** Disable the remove button (renders without × control) */
660
+ removable?: boolean;
661
+ /** Pressed state of the pill body (filter toggle), exposed as aria-pressed */
662
+ selected?: boolean;
663
+ /** Click handler for the body of the pill (filter toggle) */
664
+ onClick?: () => void;
665
+ /** Event name dispatched via event bus when the pill body is clicked. Payload: { label } */
666
+ clickEvent?: EventEmit<{
667
+ label: string | number | undefined;
668
+ }>;
669
+ /** Event name dispatched via event bus when the remove (×) button is clicked. Payload: { label }
670
+ * @offByDefault */
671
+ removeEvent?: EventEmit<{
672
+ label: string | number | undefined;
673
+ }>;
674
+ }
675
+ declare const FilterPill: React__default.ForwardRefExoticComponent<FilterPillProps & React__default.RefAttributes<HTMLSpanElement>>;
676
+
677
+ /**
678
+ * FlipContainer — CSS 3D perspective atom (distinct from FlipCard molecule).
679
+ * Owns perspective/preserve-3d/rotateY only. Children are the raw face elements.
680
+ * Use FlipCard when you need standard card chrome; use FlipContainer when you
681
+ * need the flip mechanic around custom face content.
682
+ */
683
+
684
+ interface FlipContainerProps extends A11yProps {
685
+ /** Whether the container is flipped (rotateY 180deg) */
686
+ flipped: boolean;
687
+ /** Optional className for the outer wrapper */
688
+ className?: string;
689
+ /** The two face elements (front and back) */
690
+ children: React__default.ReactNode;
691
+ /** Click handler on the outer wrapper */
692
+ onClick?: () => void;
693
+ }
694
+ declare const FlipContainer: {
695
+ ({ flipped, className, children, onClick, ...rest }: FlipContainerProps): React__default.JSX.Element;
696
+ displayName: string;
697
+ };
698
+
699
+ /** @accessibleName alt */
700
+ interface GameIconProps extends A11yProps {
701
+ /** Asset — when url is present, renders an img (Asset-primary). */
702
+ assetUrl?: Asset;
703
+ /** Lucide component or kebab-case icon name (fallback when no assetUrl). */
704
+ icon: IconInput;
705
+ /** Pixel size or named variant. */
706
+ size?: number | 'sm' | 'md' | 'lg';
707
+ /** Alt text for the img (defaults to assetUrl.category). */
708
+ alt?: string;
709
+ /** Additional CSS classes. */
710
+ className?: string;
711
+ }
712
+ declare function GameIcon({ assetUrl, icon, size, alt, className, ...rest }: GameIconProps): React$1.JSX.Element;
713
+ declare namespace GameIcon {
714
+ var displayName: string;
715
+ }
716
+
717
+ type ImageFit = 'cover' | 'contain' | 'fill' | 'none';
718
+ type ImageAspect = 'auto' | '1/1' | '4/3' | '3/2' | '16/9' | '21/9';
719
+ type ImageRounded = 'none' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | 'full';
720
+ type ImagePosition = 'center' | 'top' | 'bottom' | 'left' | 'right';
721
+ /**
722
+ * @accessibleName alt
723
+ * @role img
724
+ * @tokens --color-border
725
+ * @motion none
726
+ */
727
+ interface ImageProps extends A11yProps {
728
+ /** Image source URL */
729
+ src: AssetUrl;
730
+ /** Alternative text; empty string marks the image decorative */
731
+ alt: string;
732
+ /** How the image fills its box */
733
+ fit?: ImageFit;
734
+ /** Fixed aspect ratio of the box; "auto" keeps the image's own */
735
+ aspect?: ImageAspect;
736
+ /** Corner rounding */
737
+ rounded?: ImageRounded;
738
+ /** Draw a subtle border around the image */
739
+ bordered?: boolean;
740
+ /** "lazy" defers off-screen images; "eager" for above-the-fold media */
741
+ loading?: 'lazy' | 'eager';
742
+ /** Which part of the image stays visible when it is cropped */
743
+ position?: ImagePosition;
744
+ /** Candidate sources at different widths (the HTML `srcset`) */
745
+ srcSet?: string;
746
+ /** Rendered widths at each breakpoint (the HTML `sizes`) */
747
+ sizes?: string;
748
+ /** The page's main image: load it first */
749
+ priority?: boolean;
750
+ /** Additional class names */
751
+ className?: string;
752
+ }
753
+ declare const Image: React__default.FC<ImageProps>;
754
+
755
+ interface InfiniteScrollSentinelProps extends A11yProps {
756
+ /** Event name to emit when load-more is triggered (emitted as UI:{loadMoreEvent}) */
757
+ loadMoreEvent: EventKey;
758
+ /** Optional payload to include with the load-more event
759
+ * @payloadFor loadMoreEvent
760
+ */
761
+ loadMorePayload?: EventPayload;
762
+ /** Whether a load operation is currently in progress */
763
+ isLoading?: boolean;
764
+ /** Whether there are more items to load */
765
+ hasMore?: boolean;
766
+ /** IntersectionObserver rootMargin for early trigger */
767
+ threshold?: string;
768
+ /** Additional class names */
769
+ className?: string;
770
+ }
771
+ declare const InfiniteScrollSentinel: React__default.FC<InfiniteScrollSentinelProps>;
772
+
773
+ interface LabelProps extends Omit<React__default.LabelHTMLAttributes<HTMLLabelElement>, keyof A11yProps>, A11yProps {
774
+ /** Additional CSS classes applied to the root element. */
775
+ className?: string;
776
+ /** Label text content */
777
+ text?: string;
778
+ /** Associated input element ID */
779
+ htmlFor?: string;
780
+ /** Show required indicator (decorative; the field itself carries aria-required) */
781
+ required?: boolean;
782
+ }
783
+ declare const Label: React__default.ForwardRefExoticComponent<LabelProps & React__default.RefAttributes<HTMLLabelElement>>;
784
+
785
+ /**
786
+ * LawReferenceTooltip Atom Component
787
+ *
788
+ * A specialized tooltip for displaying law references in inspection forms.
789
+ * Shows law name, article number, and relevant clause text.
790
+ */
791
+
792
+ /**
793
+ * Law reference definition
794
+ */
795
+ type LawReference = {
796
+ /** Law identifier (e.g., "VVO", "TPED") */
797
+ law: string;
798
+ /** Full name of the law */
799
+ lawName?: string;
800
+ /** Article number (e.g., "§8", "Artikel 5") */
801
+ article: string;
802
+ /** Clause or paragraph text */
803
+ clause?: string;
804
+ /** Optional link to full law text */
805
+ link?: string;
806
+ };
807
+ interface LawReferenceTooltipProps extends A11yProps {
808
+ /** The law reference to display */
809
+ reference: LawReference;
810
+ /** Children element that triggers the tooltip */
811
+ children: React__default.ReactNode;
812
+ /** Tooltip position */
813
+ position?: "top" | "bottom" | "left" | "right";
814
+ /** Additional CSS classes */
815
+ className?: string;
816
+ }
817
+ /**
818
+ * LawReferenceTooltip displays legal references with structured formatting.
819
+ *
820
+ * @example
821
+ * <LawReferenceTooltip
822
+ * reference={{
823
+ * law: "VVO",
824
+ * lawName: "Verkehrsverordnung",
825
+ * article: "§8 Abs. 3",
826
+ * clause: "Die zulässige Gesamtmasse darf 3500 kg nicht überschreiten."
827
+ * }}
828
+ * >
829
+ * <Typography variant="small" className="text-blue-600 underline cursor-help">VVO §8</Typography>
830
+ * </LawReferenceTooltip>
831
+ */
832
+ declare const LawReferenceTooltip: React__default.FC<LawReferenceTooltipProps>;
833
+
834
+ interface OverlayProps extends A11yProps {
835
+ isVisible?: boolean;
836
+ onClick?: (e: React__default.MouseEvent) => void;
837
+ className?: string;
838
+ blur?: boolean;
839
+ /** Declarative event name — emits UI:{action} via eventBus on click */
840
+ action?: EventKey;
841
+ }
842
+ declare const Overlay: React__default.FC<OverlayProps>;
843
+
844
+ /**
845
+ * Presence Atom — the single enter/leave animation mechanism.
846
+ *
847
+ * React unmounts children synchronously, so an exit animation is impossible
848
+ * unless a wrapper keeps the child mounted for one more frame. `usePresence`
849
+ * extracts Modal's `closing` + `onAnimationEnd` pattern into one reusable
850
+ * hook; the `<Presence>` component is a thin wrapper for the arbitrary case.
851
+ *
852
+ * Every animated surface converges on this: Overlay/Drawer/SidePanel/Popover/
853
+ * Toast call `usePresence` and spread the result onto their own element (no
854
+ * extra wrapper div — important for fixed/absolute positioning). Token-driven:
855
+ * the `animation` prop maps to the `animate-<name>-in/out` utilities, which
856
+ * read `--motion-*` / `--duration-*` / `--easing-*`. Toggle off per-instance
857
+ * (`animate={false}`), globally (`--motion-enable: off`), or via the OS
858
+ * (`prefers-reduced-motion`, collapsed in `_base.css`).
859
+ *
860
+ * @packageDocumentation
861
+ */
862
+
863
+ type PresenceAnimation = "modal" | "overlay" | "slide-up" | "drawer" | "popover" | "toast" | "fade" | "page";
864
+ /** Whether token-driven motion is on (`--motion-enable` is not `off`). */
865
+ declare function isMotionEnabled(): boolean;
866
+ interface UsePresenceOptions {
867
+ /** Which motion preset to use (maps to `animate-<name>-in/out`). */
868
+ animation: PresenceAnimation;
869
+ /** Per-instance opt-out. Global opt-out is `--motion-enable` / reduced-motion. @default true */
870
+ animate?: boolean;
871
+ /**
872
+ * Fired after the exit animation completes (before unmount).
873
+ * @notification
874
+ */
875
+ onExited?: () => void;
876
+ }
877
+ interface PresenceResult {
878
+ /** Whether the element should be in the tree (enter or exit phase). */
879
+ mounted: boolean;
880
+ /** True during the exit animation. */
881
+ exiting: boolean;
882
+ /** Class to merge onto the animated element: `animate-<name>-in` or `-out` (empty if disabled). */
883
+ className: string;
884
+ /** Attach to the animated element's `onAnimationEnd`. */
885
+ onAnimationEnd: (e: React__default.AnimationEvent) => void;
886
+ }
887
+ /**
888
+ * The single enter/leave mechanism. Call from a molecule, spread `className`
889
+ * (via `cn`) and `onAnimationEnd` onto the element that carries the animation.
890
+ */
891
+ declare function usePresence(show: boolean, opts: UsePresenceOptions): PresenceResult;
892
+ interface PresenceProps extends UsePresenceOptions, A11yProps {
893
+ /** When false, the exit animation runs, then children unmount. */
894
+ show: boolean;
895
+ className?: string;
896
+ children: React__default.ReactNode;
897
+ }
898
+ /**
899
+ * Wrapper form of `usePresence` for arbitrary content that doesn't already
900
+ * own its animated element. Renders a `<div>` carrying the animation class.
901
+ */
902
+ declare const Presence: React__default.FC<PresenceProps>;
903
+
904
+ /**
905
+ * ProgressBar Atom Component
906
+ *
907
+ * A progress bar component with linear, circular, and stepped variants.
908
+ */
909
+
910
+ type ProgressBarType = "linear" | "circular" | "stepped";
911
+ type ProgressBarVariant = "default" | "primary" | "success" | "warning" | "error" | "danger";
912
+ type ProgressBarColor = ProgressBarVariant;
913
+ /**
914
+ * @role progressbar
915
+ * @tokens --color-primary --color-muted --color-error --color-warning --color-foreground
916
+ * @motion css
917
+ */
918
+ interface ProgressBarProps extends A11yProps {
919
+ /**
920
+ * Progress value (0-100)
921
+ */
922
+ value: number;
923
+ /**
924
+ * Maximum value (for calculating percentage)
925
+ * @default 100
926
+ */
927
+ max?: number;
928
+ /**
929
+ * Type of the progress bar (linear, circular, stepped)
930
+ * @default 'linear'
931
+ */
932
+ progressType?: ProgressBarType;
933
+ /**
934
+ * Variant/color of the progress bar
935
+ * @default 'primary'
936
+ */
937
+ variant?: ProgressBarVariant;
938
+ /**
939
+ * Color variant (alias for variant; `variant` applies when omitted)
940
+ */
941
+ color?: ProgressBarColor;
942
+ /**
943
+ * Show percentage text
944
+ * @default false
945
+ */
946
+ showPercentage?: boolean;
947
+ /**
948
+ * Alias for showPercentage (pattern compatibility)
949
+ */
950
+ showLabel?: boolean;
951
+ /**
952
+ * Label text
953
+ */
954
+ label?: string;
955
+ /**
956
+ * Size (for circular variant)
957
+ * @default 'md'
958
+ */
959
+ size?: "sm" | "md" | "lg";
960
+ /**
961
+ * Number of steps (for stepped variant)
962
+ * @default 5
963
+ */
964
+ steps?: number;
965
+ /**
966
+ * Additional CSS classes
967
+ */
968
+ className?: string;
969
+ }
970
+ declare const ProgressBar: React__default.FC<ProgressBarProps>;
971
+
972
+ /**
973
+ * Radio Atom Component
974
+ *
975
+ * A radio button component with label support and accessibility.
976
+ */
977
+
978
+ /**
979
+ * @accessibleName label
980
+ * @role radio
981
+ * @tokens --color-primary --color-border --color-foreground
982
+ * @motion css
983
+ */
984
+ interface RadioProps extends Omit<React__default.InputHTMLAttributes<HTMLInputElement>, "type" | "size" | keyof A11yProps>, A11yProps {
985
+ /** Additional CSS classes applied to the root element. */
986
+ className?: string;
987
+ /** Radio options (string array or SelectOption array) */
988
+ options?: string[];
989
+ /** Current selected value */
990
+ value?: string;
991
+ /** Declarative event name for trait dispatch */
992
+ action?: EventEmit<{
993
+ value: string;
994
+ }>;
995
+ /**
996
+ * Label text displayed next to the radio button
997
+ */
998
+ label?: string;
999
+ /**
1000
+ * Helper text displayed below the radio button
1001
+ */
1002
+ helperText?: string;
1003
+ /**
1004
+ * Error message displayed below the radio button
1005
+ */
1006
+ error?: string;
1007
+ /**
1008
+ * Size of the radio button
1009
+ * @default 'md'
1010
+ */
1011
+ size?: "sm" | "md" | "lg";
1012
+ }
1013
+ declare const Radio: React__default.ForwardRefExoticComponent<RadioProps & React__default.RefAttributes<HTMLInputElement>>;
1014
+
1015
+ type RangeSliderSize = "sm" | "md" | "lg";
1016
+ interface RangeSliderProps extends Omit<React__default.HTMLAttributes<HTMLDivElement>, "onChange" | keyof A11yProps>, A11yProps {
1017
+ /** Additional CSS classes applied to the root element. */
1018
+ className?: string;
1019
+ /** Minimum value */
1020
+ min?: number;
1021
+ /** Maximum value */
1022
+ max?: number;
1023
+ /** Current value */
1024
+ value?: number;
1025
+ /** Step increment */
1026
+ step?: number;
1027
+ /** Show tooltip with current value on drag */
1028
+ showTooltip?: boolean;
1029
+ /** Show tick marks at step intervals */
1030
+ showTicks?: boolean;
1031
+ /** Buffered range (0-100), for media seek bars */
1032
+ buffered?: number;
1033
+ /** Slider size */
1034
+ size?: RangeSliderSize;
1035
+ /** Disabled state */
1036
+ disabled?: boolean;
1037
+ /** Declarative event name for value changes */
1038
+ action?: EventEmit<{
1039
+ value: number;
1040
+ }>;
1041
+ /** Payload to include with the action event
1042
+ * @payloadFor action
1043
+ */
1044
+ actionPayload?: EventPayload;
1045
+ /** Direct onChange callback */
1046
+ onChange?: (value: number) => void;
1047
+ /** Format function for tooltip display */
1048
+ formatValue?: (value: number) => string;
1049
+ }
1050
+ declare const RangeSlider: React__default.ForwardRefExoticComponent<RangeSliderProps & React__default.RefAttributes<HTMLDivElement>>;
1051
+
1052
+ interface SectionHeaderProps extends A11yProps {
1053
+ /** Section title text */
1054
+ title: string;
1055
+ /** Optional subtitle text */
1056
+ subtitle?: string;
1057
+ /** Text alignment */
1058
+ align?: "center" | "left" | "right";
1059
+ /** Heading level (1, 2, or 3) */
1060
+ level?: 1 | 2 | 3;
1061
+ /** Additional class names */
1062
+ className?: string;
1063
+ }
1064
+ declare const SectionHeader: React__default.FC<SectionHeaderProps>;
1065
+
1066
+ /**
1067
+ * Spacer Component
1068
+ *
1069
+ * A flexible spacer that expands to fill available space in a flex container.
1070
+ * Useful for pushing elements apart or creating consistent spacing.
1071
+ */
1072
+
1073
+ type SpacerSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | 'auto';
1074
+ interface SpacerProps extends A11yProps {
1075
+ /** Fixed size (auto = flex grow) */
1076
+ size?: SpacerSize;
1077
+ /** Orientation (for fixed sizes) */
1078
+ axis?: 'horizontal' | 'vertical';
1079
+ /** Custom class name */
1080
+ className?: string;
1081
+ }
1082
+ /**
1083
+ * Spacer - Flexible spacing element for flex layouts
1084
+ *
1085
+ * Usage:
1086
+ * - size="auto" (default): Expands to fill available space (flex: 1)
1087
+ * - size="md": Fixed size spacing
1088
+ */
1089
+ declare const Spacer: React__default.FC<SpacerProps>;
1090
+
1091
+ /**
1092
+ * Sparkline Atom Component
1093
+ *
1094
+ * Minimal inline trend chart. Pure SVG polyline over a numeric series.
1095
+ * Extracted from StatCard's sparkline path so any KPI or list row can
1096
+ * include a trend visualization without compositing the whole card.
1097
+ */
1098
+
1099
+ type SparklineColor = "auto" | "primary" | "success" | "warning" | "error" | "info" | "muted";
1100
+ interface SparklineProps extends A11yProps {
1101
+ /** Numeric series to plot. Length < 2 renders nothing. */
1102
+ data: readonly number[];
1103
+ /**
1104
+ * Stroke color.
1105
+ * `auto` (default): success when the series trends up (last ≥ first),
1106
+ * error when it trends down.
1107
+ */
1108
+ color?: SparklineColor;
1109
+ /** SVG width in px. Default 80. */
1110
+ width?: number;
1111
+ /** SVG height in px. Default 32. */
1112
+ height?: number;
1113
+ /** Stroke width in px. Default 2. */
1114
+ strokeWidth?: number;
1115
+ /** Fill the area under the line with the stroke color at low opacity. */
1116
+ fill?: boolean;
1117
+ /** Additional CSS classes. */
1118
+ className?: string;
1119
+ }
1120
+ declare const Sparkline: React__default.FC<SparklineProps>;
1121
+
1122
+ type SpinnerSize = "xs" | "sm" | "md" | "lg";
1123
+ /**
1124
+ * @role status
1125
+ * @tokens --color-foreground
1126
+ * @motion css
1127
+ */
1128
+ interface SpinnerProps extends Omit<React__default.HTMLAttributes<HTMLDivElement>, keyof A11yProps>, A11yProps {
1129
+ /** Additional CSS classes applied to the root element. */
1130
+ className?: string;
1131
+ size?: SpinnerSize;
1132
+ /** Renders a centered overlay backdrop instead of inline. */
1133
+ overlay?: boolean;
1134
+ }
1135
+ declare const Spinner: React__default.ForwardRefExoticComponent<SpinnerProps & React__default.RefAttributes<HTMLDivElement>>;
1136
+
1137
+ /**
1138
+ * Stack Component
1139
+ *
1140
+ * A layout primitive for arranging children in a vertical or horizontal stack with consistent spacing.
1141
+ * Includes convenience exports VStack and HStack for common use cases.
1142
+ */
1143
+
1144
+ type StackDirection = "horizontal" | "vertical";
1145
+ type StackGap = "none" | "xs" | "sm" | "md" | "lg" | "xl" | "2xl";
1146
+ type StackAlign = "start" | "center" | "end" | "stretch" | "baseline";
1147
+ type StackJustify = "start" | "center" | "end" | "between" | "around" | "evenly";
1148
+ interface StackProps extends Omit<React__default.AriaAttributes, keyof A11yProps>, A11yProps {
1149
+ /** Stack direction */
1150
+ direction?: StackDirection;
1151
+ /** Gap between children */
1152
+ gap?: StackGap;
1153
+ /** Align items on the cross axis */
1154
+ align?: StackAlign;
1155
+ /** Justify items on the main axis */
1156
+ justify?: StackJustify;
1157
+ /** Allow items to wrap */
1158
+ wrap?: boolean;
1159
+ /** Reverse the order of children */
1160
+ reverse?: boolean;
1161
+ /** Fill available space (flex: 1) */
1162
+ flex?: boolean;
1163
+ /** Custom class name */
1164
+ className?: string;
1165
+ /** Inline styles */
1166
+ style?: React__default.CSSProperties;
1167
+ /** Children elements */
1168
+ children?: React__default.ReactNode;
1169
+ /** HTML element to render as */
1170
+ as?: React__default.ElementType;
1171
+ /** Click handler */
1172
+ onClick?: (e: React__default.MouseEvent) => void;
1173
+ /**
1174
+ * Keyboard handler
1175
+ * @notification
1176
+ */
1177
+ onKeyDown?: (e: React__default.KeyboardEvent) => void;
1178
+ /** Element id */
1179
+ id?: string;
1180
+ /** Declarative event name — emits UI:{action} via eventBus on click */
1181
+ action?: EventKey;
1182
+ /** Payload to include with the action event
1183
+ * @payloadFor action
1184
+ */
1185
+ actionPayload?: EventPayload;
1186
+ /** When true, horizontal stacks flip to vertical below the md breakpoint (768px) */
1187
+ responsive?: boolean;
1188
+ }
1189
+ /**
1190
+ * Stack - Flexible layout component for arranging children
1191
+ */
1192
+ declare const Stack: React__default.FC<StackProps>;
1193
+ /**
1194
+ * VStack - Vertical stack shorthand
1195
+ */
1196
+ interface VStackProps extends Omit<StackProps, "direction"> {
1197
+ }
1198
+ declare const VStack: React__default.FC<VStackProps>;
1199
+ /**
1200
+ * HStack - Horizontal stack shorthand
1201
+ */
1202
+ interface HStackProps extends Omit<StackProps, "direction"> {
1203
+ }
1204
+ declare const HStack: React__default.FC<HStackProps>;
1205
+
1206
+ type StatusDotStatus = "online" | "offline" | "away" | "busy" | "warning" | "critical";
1207
+ type StatusDotSize = "sm" | "md" | "lg";
1208
+ /**
1209
+ * @role status
1210
+ * @tokens --color-success --color-warning --color-error --color-muted-foreground
1211
+ * @motion css
1212
+ */
1213
+ interface StatusDotProps extends Omit<React__default.HTMLAttributes<HTMLSpanElement>, keyof A11yProps>, A11yProps {
1214
+ /** Additional CSS classes applied to the root element. */
1215
+ className?: string;
1216
+ /** Status determines the dot color */
1217
+ status?: StatusDotStatus;
1218
+ /** Enable pulse animation for active/critical states */
1219
+ pulse?: boolean;
1220
+ /** Dot size */
1221
+ size?: StatusDotSize;
1222
+ /** Accessible label (rendered as sr-only text) */
1223
+ label?: string;
1224
+ }
1225
+ declare const StatusDot: React__default.ForwardRefExoticComponent<StatusDotProps & React__default.RefAttributes<HTMLSpanElement>>;
1226
+
1227
+ /**
1228
+ * @accessibleName label
1229
+ * @role switch
1230
+ * @tokens --color-primary --color-muted --color-background
1231
+ * @motion css
1232
+ */
1233
+ interface SwitchProps extends A11yProps {
1234
+ checked?: boolean;
1235
+ defaultChecked?: boolean;
1236
+ onChange?: (checked: boolean) => void;
1237
+ /** Declarative event name — emits UI:{action} with `actionPayload` and the new `checked` value on toggle */
1238
+ action?: EventKey;
1239
+ /** Payload to include with the action event (the new `checked` is added to it)
1240
+ * @payloadFor action
1241
+ */
1242
+ actionPayload?: EventPayload;
1243
+ disabled?: boolean;
1244
+ label?: string;
1245
+ id?: string;
1246
+ name?: string;
1247
+ className?: string;
1248
+ }
1249
+ declare const Switch: React$1.ForwardRefExoticComponent<SwitchProps & React$1.RefAttributes<HTMLButtonElement>>;
1250
+
1251
+ /**
1252
+ * TextHighlight Atom Component
1253
+ *
1254
+ * A styled span component for highlighting text with annotations (questions or notes).
1255
+ * Uses different colors for different annotation types:
1256
+ * - Questions: Blue highlight
1257
+ * - Notes: Yellow highlight
1258
+ */
1259
+
1260
+ type HighlightType = "question" | "note";
1261
+ interface TextHighlightProps extends A11yProps {
1262
+ /**
1263
+ * Type of highlight (determines color)
1264
+ */
1265
+ highlightType: HighlightType;
1266
+ /**
1267
+ * Whether the highlight is currently active/focused
1268
+ * @default false
1269
+ */
1270
+ isActive?: boolean;
1271
+ /**
1272
+ * Callback when highlight is clicked
1273
+ */
1274
+ onClick?: () => void;
1275
+ /**
1276
+ * Callback when highlight is hovered
1277
+ * @notification
1278
+ */
1279
+ onMouseEnter?: () => void;
1280
+ /**
1281
+ * Callback when hover ends
1282
+ * @notification
1283
+ */
1284
+ onMouseLeave?: () => void;
1285
+ /**
1286
+ * Unique ID for the annotation
1287
+ */
1288
+ annotationId?: string;
1289
+ /**
1290
+ * Additional CSS classes
1291
+ */
1292
+ className?: string;
1293
+ /**
1294
+ * Highlighted text content
1295
+ */
1296
+ children: React__default.ReactNode;
1297
+ /** Declarative event name — emits UI:{action} via eventBus on click */
1298
+ action?: EventEmit<{
1299
+ annotationId?: string;
1300
+ }>;
1301
+ /**
1302
+ * Declarative hover event — emits UI:{hoverEvent} with { hovered, annotationId }
1303
+ * @notification
1304
+ */
1305
+ hoverEvent?: EventEmit<{
1306
+ hovered: boolean;
1307
+ annotationId?: string;
1308
+ }>;
1309
+ }
1310
+ /**
1311
+ * TextHighlight component for rendering highlighted text annotations
1312
+ */
1313
+ declare const TextHighlight: React__default.FC<TextHighlightProps>;
1314
+
1315
+ /**
1316
+ * @accessibleName label
1317
+ * @role textbox
1318
+ * @tokens --color-card --color-border --color-foreground --color-muted-foreground
1319
+ * @contrast foreground card
1320
+ * @motion none
1321
+ */
1322
+ interface TextareaProps extends Omit<React__default.TextareaHTMLAttributes<HTMLTextAreaElement>, 'onChange' | keyof A11yProps>, A11yProps {
1323
+ /** Additional CSS classes applied to the root element. */
1324
+ className?: string;
1325
+ /** Visible label naming the field. */
1326
+ label?: string;
1327
+ /** Placeholder text */
1328
+ placeholder?: string;
1329
+ /** Number of visible rows */
1330
+ rows?: number;
1331
+ /** Controlled value, for a field the program fills or clears. */
1332
+ value?: string;
1333
+ /** Declarative event: fires on ⌘/Ctrl+Enter with `{ value }`. */
1334
+ action?: EventEmit<{
1335
+ value: string;
1336
+ }>;
1337
+ /** Helper text describing the field. */
1338
+ helperText?: string;
1339
+ /** Error message */
1340
+ error?: string;
1341
+ /** onChange handler or declarative event key for trait dispatch */
1342
+ onChange?: React__default.ChangeEventHandler<HTMLTextAreaElement> | EventEmit<{
1343
+ value: string;
1344
+ }>;
1345
+ }
1346
+ declare const Textarea: React__default.ForwardRefExoticComponent<TextareaProps & React__default.RefAttributes<HTMLTextAreaElement>>;
1347
+
1348
+ /**
1349
+ * ThemeToggle Atom Component
1350
+ *
1351
+ * A button that toggles between light and dark themes.
1352
+ * Uses Sun and Moon icons to indicate current/target theme.
1353
+ *
1354
+ * @packageDocumentation
1355
+ */
1356
+
1357
+ interface ThemeToggleProps extends A11yProps {
1358
+ /** Additional CSS classes */
1359
+ className?: string;
1360
+ /** Size variant */
1361
+ size?: "sm" | "md" | "lg";
1362
+ /** Show label text */
1363
+ showLabel?: boolean;
1364
+ /** Accessible action label when the current mode is dark. */
1365
+ switchToLightLabel?: string;
1366
+ /** Accessible action label when the current mode is light. */
1367
+ switchToDarkLabel?: string;
1368
+ /** Visible light mode label. */
1369
+ lightLabel?: string;
1370
+ /** Visible dark mode label. */
1371
+ darkLabel?: string;
1372
+ }
1373
+ /**
1374
+ * ThemeToggle component for switching between light and dark modes
1375
+ *
1376
+ * @example
1377
+ * ```tsx
1378
+ * // Basic usage
1379
+ * <ThemeToggle />
1380
+ *
1381
+ * // With label
1382
+ * <ThemeToggle showLabel />
1383
+ *
1384
+ * // Custom size
1385
+ * <ThemeToggle size="lg" />
1386
+ * ```
1387
+ */
1388
+ declare const ThemeToggle: React__default.FC<ThemeToggleProps>;
1389
+
1390
+ /**
1391
+ * TimeSlotCell
1392
+ *
1393
+ * Calendar time slot atom. Renders a clickable container for a single
1394
+ * time slot that can hold event content via children.
1395
+ */
1396
+
1397
+ interface TimeSlotCellProps extends A11yProps {
1398
+ /** Time label for this slot (e.g. "09:00") */
1399
+ time: string;
1400
+ /** Called when the slot is clicked */
1401
+ onClick?: (time: string) => void;
1402
+ /** Additional CSS classes */
1403
+ className?: string;
1404
+ /** Event content placed inside the slot */
1405
+ children?: React__default.ReactNode;
1406
+ /** Whether this slot contains an event */
1407
+ isOccupied?: boolean;
1408
+ onPointerDown?: React__default.PointerEventHandler<HTMLDivElement>;
1409
+ onPointerUp?: React__default.PointerEventHandler<HTMLDivElement>;
1410
+ onPointerCancel?: React__default.PointerEventHandler<HTMLDivElement>;
1411
+ /** @notification */
1412
+ onPointerLeave?: React__default.PointerEventHandler<HTMLDivElement>;
1413
+ "data-testid"?: string;
1414
+ }
1415
+ declare function TimeSlotCell({ time, onClick, className, children, isOccupied, onPointerDown, onPointerUp, onPointerCancel, onPointerLeave, "data-testid": testId, ...rest }: TimeSlotCellProps): React__default.JSX.Element;
1416
+ declare namespace TimeSlotCell {
1417
+ var displayName: string;
1418
+ }
1419
+
1420
+ type TrendDirection = "up" | "down" | "flat";
1421
+ type TrendIndicatorSize = "sm" | "md" | "lg";
1422
+ /**
1423
+ * @role status
1424
+ * @tokens --color-success --color-error --color-muted-foreground
1425
+ * @motion none
1426
+ */
1427
+ interface TrendIndicatorProps extends Omit<React__default.HTMLAttributes<HTMLSpanElement>, keyof A11yProps>, A11yProps {
1428
+ /** Additional CSS classes applied to the root element. */
1429
+ className?: string;
1430
+ /** Numeric value to display (e.g., 12.5 for +12.5%) */
1431
+ value?: number;
1432
+ /** Override automatic direction detection (positive=up, negative=down, zero=flat) */
1433
+ direction?: TrendDirection;
1434
+ /** Show the formatted value text next to the arrow */
1435
+ showValue?: boolean;
1436
+ /** Invert color logic (for metrics where down is good, e.g., error rate, bounce rate) */
1437
+ invert?: boolean;
1438
+ /** Accessible label override */
1439
+ label?: string;
1440
+ /** Size of the indicator */
1441
+ size?: TrendIndicatorSize;
1442
+ }
1443
+ declare const TrendIndicator: React__default.ForwardRefExoticComponent<TrendIndicatorProps & React__default.RefAttributes<HTMLSpanElement>>;
1444
+
1445
+ /**
1446
+ * TypewriterText Atom Component
1447
+ *
1448
+ * Reveals text character-by-character with a blinking cursor
1449
+ * that disappears after the full text has been typed out.
1450
+ */
1451
+
1452
+ interface TypewriterTextProps extends A11yProps {
1453
+ /** The full text to reveal */
1454
+ text: string;
1455
+ /** Milliseconds per character */
1456
+ speed?: number;
1457
+ /** Delay before typing starts (ms) */
1458
+ startDelay?: number;
1459
+ /** Additional class names */
1460
+ className?: string;
1461
+ /**
1462
+ * Event emitted (as UI:{onComplete}) when the entire text has been revealed; empty = none
1463
+ * @notification
1464
+ */
1465
+ onComplete?: EventKey;
1466
+ }
1467
+ declare const TypewriterText: React__default.FC<TypewriterTextProps>;
1468
+
1469
+ /**
1470
+ * Typography Atom Component
1471
+ *
1472
+ * Text elements following the KFlow design system with theme-aware styling.
1473
+ */
1474
+
1475
+ type TypographyVariant = "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "heading" | "subheading" | "body1" | "body2" | "body" | "caption" | "overline" | "small" | "large" | "label";
1476
+ /** `none` = no size override — the variant's baked size applies. */
1477
+ type TypographySize = "none" | "xs" | "sm" | "md" | "lg" | "xl" | "2xl" | "3xl";
1478
+ interface TypographyProps extends Omit<React__default.AriaAttributes, keyof A11yProps>, A11yProps {
1479
+ /** Typography variant */
1480
+ variant?: TypographyVariant;
1481
+ /** Heading level (1-6) - alternative to variant for headings */
1482
+ level?: 1 | 2 | 3 | 4 | 5 | 6;
1483
+ /** Text color */
1484
+ color?: "primary" | "secondary" | "muted" | "error" | "success" | "warning" | "inherit";
1485
+ /** Text alignment */
1486
+ align?: "left" | "center" | "right";
1487
+ /** Font weight override — `none` = no override, the variant's baked weight applies */
1488
+ weight?: "none" | "light" | "normal" | "medium" | "semibold" | "bold";
1489
+ /** Font size override */
1490
+ size?: TypographySize;
1491
+ /** Truncate with ellipsis (single line) */
1492
+ truncate?: boolean;
1493
+ /** Overflow handling mode */
1494
+ overflow?: "visible" | "hidden" | "wrap" | "clamp-2" | "clamp-3";
1495
+ /** Custom HTML element */
1496
+ as?: keyof React__default.JSX.IntrinsicElements;
1497
+ /** HTML id attribute */
1498
+ id?: string;
1499
+ /** Additional class names */
1500
+ className?: string;
1501
+ /** Inline style */
1502
+ style?: React__default.CSSProperties;
1503
+ /**
1504
+ * Value formatting applied to string/number/Date content — `none` (the
1505
+ * default) renders content as-is. Covers the raw-ISO-date class: a bound
1506
+ * datetime renders human-readable via `format="date"|"time"|"datetime"`.
1507
+ */
1508
+ format?: "none" | "date" | "time" | "datetime" | "number" | "currency" | "percent";
1509
+ /** Text content (alternative to children) */
1510
+ content?: React__default.ReactNode;
1511
+ /** Children elements */
1512
+ children?: React__default.ReactNode;
1513
+ }
1514
+ declare const Typography: React__default.FC<TypographyProps>;
1515
+
1516
+ interface SvgBranchProps extends A11yProps {
1517
+ x?: number;
1518
+ y?: number;
1519
+ variant?: 'fork' | 'merge' | 'diamond';
1520
+ branches?: number;
1521
+ size?: number;
1522
+ color?: string;
1523
+ opacity?: number;
1524
+ className?: string;
1525
+ /** When true (default), wraps in a standalone <svg> so the shape is visible without a parent SVG context. */
1526
+ asRoot?: boolean;
1527
+ width?: number;
1528
+ height?: number;
1529
+ }
1530
+ declare const SvgBranch: React__default.FC<SvgBranchProps>;
1531
+
1532
+ interface SvgConnectionProps extends A11yProps {
1533
+ x1?: number;
1534
+ y1?: number;
1535
+ x2?: number;
1536
+ y2?: number;
1537
+ variant?: 'solid' | 'dashed' | 'animated';
1538
+ color?: string;
1539
+ strokeWidth?: number;
1540
+ opacity?: number;
1541
+ className?: string;
1542
+ /** When true (default), wraps in a standalone <svg> so the shape is visible without a parent SVG context. */
1543
+ asRoot?: boolean;
1544
+ width?: number;
1545
+ height?: number;
1546
+ }
1547
+ declare const SvgConnection: React__default.FC<SvgConnectionProps>;
1548
+
1549
+ interface SvgFlowProps extends A11yProps {
1550
+ points?: Array<[number, number]>;
1551
+ color?: string;
1552
+ strokeWidth?: number;
1553
+ animated?: boolean;
1554
+ opacity?: number;
1555
+ className?: string;
1556
+ /** When true (default), wraps in a standalone <svg> so the shape is visible without a parent SVG context. */
1557
+ asRoot?: boolean;
1558
+ width?: number;
1559
+ height?: number;
1560
+ }
1561
+ declare const SvgFlow: React__default.FC<SvgFlowProps>;
1562
+
1563
+ interface SvgGridProps extends A11yProps {
1564
+ x?: number;
1565
+ y?: number;
1566
+ cols?: number;
1567
+ rows?: number;
1568
+ spacing?: number;
1569
+ nodeRadius?: number;
1570
+ color?: string;
1571
+ opacity?: number;
1572
+ className?: string;
1573
+ highlights?: number[];
1574
+ /** When true (default), wraps in a standalone <svg> so the shape is visible without a parent SVG context. */
1575
+ asRoot?: boolean;
1576
+ width?: number;
1577
+ height?: number;
1578
+ }
1579
+ declare const SvgGrid: React__default.FC<SvgGridProps>;
1580
+
1581
+ interface SvgLobeProps extends A11yProps {
1582
+ cx?: number;
1583
+ cy?: number;
1584
+ rx?: number;
1585
+ ry?: number;
1586
+ rotation?: number;
1587
+ shells?: number;
1588
+ color?: string;
1589
+ opacity?: number;
1590
+ className?: string;
1591
+ /** When true (default), wraps in a standalone <svg> so the shape is visible without a parent SVG context. */
1592
+ asRoot?: boolean;
1593
+ width?: number;
1594
+ height?: number;
1595
+ }
1596
+ declare const SvgLobe: React__default.FC<SvgLobeProps>;
1597
+
1598
+ interface SvgMeshProps extends A11yProps {
1599
+ cx?: number;
1600
+ cy?: number;
1601
+ nodes?: number;
1602
+ radius?: number;
1603
+ color?: string;
1604
+ connectionDensity?: number;
1605
+ opacity?: number;
1606
+ className?: string;
1607
+ /** When true (default), wraps in a standalone <svg> so the shape is visible without a parent SVG context. */
1608
+ asRoot?: boolean;
1609
+ width?: number;
1610
+ height?: number;
1611
+ }
1612
+ declare const SvgMesh: React__default.FC<SvgMeshProps>;
1613
+
1614
+ interface SvgMorphProps extends A11yProps {
1615
+ x?: number;
1616
+ y?: number;
1617
+ size?: number;
1618
+ variant?: 'text-to-code' | 'code-to-app' | 'generic';
1619
+ color?: string;
1620
+ opacity?: number;
1621
+ className?: string;
1622
+ /** When true (default), wraps in a standalone <svg> so the shape is visible without a parent SVG context. */
1623
+ asRoot?: boolean;
1624
+ width?: number;
1625
+ height?: number;
1626
+ }
1627
+ declare const SvgMorph: React__default.FC<SvgMorphProps>;
1628
+
1629
+ interface SvgNodeProps extends A11yProps {
1630
+ x?: number;
1631
+ y?: number;
1632
+ r?: number;
1633
+ variant?: 'filled' | 'stroked' | 'pulse';
1634
+ color?: string;
1635
+ opacity?: number;
1636
+ className?: string;
1637
+ label?: string;
1638
+ /** When true (default), wraps in a standalone <svg> so the shape is visible without a parent SVG context. */
1639
+ asRoot?: boolean;
1640
+ width?: number;
1641
+ height?: number;
1642
+ }
1643
+ declare const SvgNode: React__default.FC<SvgNodeProps>;
1644
+
1645
+ interface SvgPulseProps extends A11yProps {
1646
+ cx?: number;
1647
+ cy?: number;
1648
+ rings?: number;
1649
+ maxRadius?: number;
1650
+ color?: string;
1651
+ animated?: boolean;
1652
+ opacity?: number;
1653
+ className?: string;
1654
+ /** When true (default), wraps in a standalone <svg> so the shape is visible without a parent SVG context. */
1655
+ asRoot?: boolean;
1656
+ width?: number;
1657
+ height?: number;
1658
+ }
1659
+ declare const SvgPulse: React__default.FC<SvgPulseProps>;
1660
+
1661
+ interface SvgRingProps extends A11yProps {
1662
+ cx?: number;
1663
+ cy?: number;
1664
+ r?: number;
1665
+ variant?: 'solid' | 'dashed' | 'glow';
1666
+ color?: string;
1667
+ strokeWidth?: number;
1668
+ opacity?: number;
1669
+ className?: string;
1670
+ label?: string;
1671
+ /** When true (default), wraps in a standalone <svg> so the shape is visible without a parent SVG context. */
1672
+ asRoot?: boolean;
1673
+ width?: number;
1674
+ height?: number;
1675
+ }
1676
+ declare const SvgRing: React__default.FC<SvgRingProps>;
1677
+
1678
+ interface SvgShieldProps extends A11yProps {
1679
+ x?: number;
1680
+ y?: number;
1681
+ size?: number;
1682
+ variant?: 'outline' | 'filled' | 'check';
1683
+ color?: string;
1684
+ opacity?: number;
1685
+ className?: string;
1686
+ /** When true (default), wraps in a standalone <svg> so the shape is visible without a parent SVG context. */
1687
+ asRoot?: boolean;
1688
+ width?: number;
1689
+ height?: number;
1690
+ }
1691
+ declare const SvgShield: React__default.FC<SvgShieldProps>;
1692
+
1693
+ interface SvgStackProps extends A11yProps {
1694
+ x?: number;
1695
+ y?: number;
1696
+ layers?: number;
1697
+ width?: number;
1698
+ height?: number;
1699
+ color?: string;
1700
+ opacity?: number;
1701
+ className?: string;
1702
+ labels?: string[];
1703
+ /** When true (default), wraps in a standalone <svg> so the shape is visible without a parent SVG context. */
1704
+ asRoot?: boolean;
1705
+ svgWidth?: number;
1706
+ svgHeight?: number;
1707
+ }
1708
+ declare const SvgStack: React__default.FC<SvgStackProps>;
1709
+
1710
+ /**
1711
+ * useDialogBehavior — the one owner of modal-dialog keyboard behavior
1712
+ * (WAI-ARIA APG dialog pattern), shared by Modal and Drawer:
1713
+ *
1714
+ * - focus moves into the dialog on open and returns to the opener on close;
1715
+ * - Tab / Shift+Tab wrap inside the dialog (focus trap);
1716
+ * - Escape reaches only the top-most open dialog, so stacked overlays close
1717
+ * one at a time.
1718
+ *
1719
+ * A non-modal dialog (`modal: false`, e.g. Popover) joins the Escape stack
1720
+ * but neither takes focus on open nor traps Tab.
1721
+ */
1722
+
1723
+ interface DialogBehaviorOptions {
1724
+ open: boolean;
1725
+ containerRef: RefObject<HTMLElement | null>;
1726
+ onEscape: () => void;
1727
+ closeOnEscape?: boolean;
1728
+ modal?: boolean;
1729
+ /** Where focus returns on close; defaults to whatever had focus at open
1730
+ * (a click does not focus a button in every browser, so triggers pass it). */
1731
+ returnFocusRef?: RefObject<HTMLElement | null>;
1732
+ }
1733
+ declare function useDialogBehavior({ open, containerRef, onEscape, closeOnEscape, modal, returnFocusRef }: DialogBehaviorOptions): void;
1734
+
1735
+ interface InfiniteScrollOptions {
1736
+ /** Root margin for IntersectionObserver (default: "200px") */
1737
+ rootMargin?: string;
1738
+ /** Whether more items are available to load */
1739
+ hasMore?: boolean;
1740
+ /** Whether a load is currently in progress */
1741
+ isLoading?: boolean;
1742
+ }
1743
+ interface InfiniteScrollResult {
1744
+ /** Ref to attach to the sentinel element */
1745
+ sentinelRef: React.RefCallback<HTMLElement>;
1746
+ }
1747
+ declare function useInfiniteScroll(onLoadMore: () => void, options?: InfiniteScrollOptions): InfiniteScrollResult;
1748
+
1749
+ /**
1750
+ * Reactively track a CSS media query (e.g. `'(pointer: coarse)'`).
1751
+ *
1752
+ * Components whose LAYOUT MATH depends on a media feature (a JS-computed
1753
+ * grid track, an inline-action budget) can't express it in CSS alone —
1754
+ * this hook is the one owner for that. `false` on the server and wherever
1755
+ * there is no `matchMedia`.
1756
+ */
1757
+ declare function useMediaQuery(query: string): boolean;
1758
+
1759
+ /** Whether the OS asks for reduced motion — the one gate for JS/rAF/camera animations (CSS ones collapse in `_base.css`). */
1760
+ declare function usePrefersReducedMotion(): boolean;
1761
+
1762
+ /**
1763
+ * Hover-only reveals (tooltips, hover-popovers, submenus, `Box.hoverEvent`) have no hover on
1764
+ * touch, so they're invisible/unreachable. This adds the tap-to-reveal fallback: on a touch/pen
1765
+ * tap the surface reveals and fires the SAME event the hover path fires; a tap outside dismisses.
1766
+ * Mouse is left to the component's existing hover handlers (`pointerType === 'mouse'` is ignored),
1767
+ * so this is purely additive — no behavior change on desktop.
1768
+ */
1769
+ interface TapRevealOptions {
1770
+ /** Fired when a tap reveals — reuse to emit the component's existing hover event. */
1771
+ onReveal?: () => void;
1772
+ /** Fired when an outside tap (or a second trigger tap) dismisses. */
1773
+ onDismiss?: () => void;
1774
+ /**
1775
+ * Elements considered "inside" for outside-tap detection. Pass the trigger and the surface
1776
+ * (the surface may be portaled, so it isn't a DOM descendant of the trigger). A tap whose
1777
+ * target is inside none of these dismisses.
1778
+ */
1779
+ refs?: ReadonlyArray<React.RefObject<HTMLElement | null>>;
1780
+ /** When false, taps are ignored (hover-only). Default true. */
1781
+ enabled?: boolean;
1782
+ }
1783
+ interface TapRevealResult {
1784
+ /** Whether the surface is currently revealed via a tap. OR this with the hover state. */
1785
+ revealed: boolean;
1786
+ /** Spread on the trigger; toggles reveal on a touch/pen tap (ignores mouse). */
1787
+ triggerProps: {
1788
+ onPointerDown: (e: React.PointerEvent) => void;
1789
+ };
1790
+ reveal: () => void;
1791
+ dismiss: () => void;
1792
+ }
1793
+ declare function useTapReveal(options?: TapRevealOptions): TapRevealResult;
1794
+
1795
+ /**
1796
+ * Shared value formatting — the single owner of the locale-aware format
1797
+ * vocabulary used by every data display. Labels are never derived from names:
1798
+ * a display shows the declared label, or the name/value as stored.
1799
+ */
1800
+
1801
+ type ValueFormat = 'none' | 'date' | 'time' | 'datetime' | 'number' | 'currency' | 'percent' | 'boolean';
1802
+ /**
1803
+ * A `YYYY-MM-DD` value is a calendar day with no time zone. `new Date(s)`
1804
+ * reads it as UTC midnight, which shows the previous day west of UTC; this
1805
+ * parses it as local midnight instead. Returns null for any other shape.
1806
+ */
1807
+ declare function parseCalendarDate(value: string): Date | null;
1808
+ /** A field value, or the `Date` a local calendar helper builds; a `Date` is never a stored field value (that is its ISO text). */
1809
+ type DateLike = FieldValue | Date;
1810
+ /** Value for an `<input type="date">`: the LOCAL calendar day. */
1811
+ declare function toDateInputValue(value: DateLike | undefined): string;
1812
+ /** Value for an `<input type="datetime-local">`: LOCAL wall-clock time. */
1813
+ declare function toDateTimeInputValue(value: DateLike | undefined): string;
1814
+ declare function formatDate(value: FieldValue | undefined, locale?: string): string;
1815
+ declare function formatTime(value: FieldValue | undefined, locale?: string): string;
1816
+ declare function formatDateTime(value: FieldValue | undefined, locale?: string): string;
1817
+ /** Translated boolean words, resolved by the caller (`t('common.yes')` / `t('common.no')`). */
1818
+ interface BooleanLabels {
1819
+ yes: string;
1820
+ no: string;
1821
+ }
1822
+ /** The app's formatting settings (see `useFormatContext`). */
1823
+ interface FormatContext {
1824
+ /** BCP 47 locale; omitted, the runtime default */
1825
+ locale?: string;
1826
+ /** ISO 4217 currency for `currency` values */
1827
+ currency?: string;
1828
+ /** Translated Yes/No */
1829
+ booleanLabels?: BooleanLabels;
1830
+ }
1831
+ /** Money is USD unless the host declares the app's currency (I18nContext `currency`). */
1832
+ declare const DEFAULT_CURRENCY = "USD";
1833
+ /**
1834
+ * Format a field value for display. Booleans always render Yes/No regardless
1835
+ * of the declared format (a raw `true`/`false` cell is never intended output).
1836
+ */
1837
+ declare function formatValue(value: FieldValue | undefined, format?: string, fmt?: FormatContext): string;
1838
+ /** Sort direction for {@link sortRows}. */
1839
+ type SortDirection = 'asc' | 'desc';
1840
+ /**
1841
+ * Order two cell values by their own type, never by what the field is called.
1842
+ *
1843
+ * Numbers compare numerically, date-like strings chronologically, everything
1844
+ * else by locale string order. `null`/`undefined` sort last in both directions
1845
+ * so empty cells never displace real data at the top of a list.
1846
+ */
1847
+ declare function compareCellValues(a: FieldValue | undefined, b: FieldValue | undefined): number;
1848
+ /**
1849
+ * Return a new array ordered by `field`. Non-mutating, and a no-op without a
1850
+ * field so callers can pass the prop through unconditionally.
1851
+ *
1852
+ * NOTE: this orders only the rows already fetched. A collection larger than its
1853
+ * `limit` still needs ordering at the data layer — see `L-NO-COLLECTION-ORDERING`.
1854
+ */
1855
+ declare function sortRows<T extends Record<string, FieldValue | undefined>>(rows: readonly T[], field?: string, direction?: SortDirection): readonly T[];
1856
+
1857
+ /**
1858
+ * useTranslate — i18n hook for Almadar UI components.
1859
+ *
1860
+ * Provides locale-aware string translation via React context.
1861
+ * No provider = passthrough: t('key') returns 'key' as-is (never crashes).
1862
+ *
1863
+ * Usage in organisms:
1864
+ * const { t, locale, direction } = useTranslate();
1865
+ * <Button>{t('common.save')}</Button>
1866
+ * <Typography>{t('table.showing', { count: 5, total: 20 })}</Typography>
1867
+ *
1868
+ * Templates MUST NOT use this hook (flattener rule). They receive
1869
+ * translated strings via entity props from the organism above.
1870
+ */
1871
+
1872
+ type TranslateFunction = (key: string, params?: Record<string, string | number>) => string;
1873
+ interface I18nContextValue {
1874
+ /** Current locale code (e.g. 'en', 'ar', 'sl') */
1875
+ locale: string;
1876
+ /** Text direction for the current locale */
1877
+ direction: 'ltr' | 'rtl';
1878
+ /** Translate a key, with optional interpolation params */
1879
+ t: TranslateFunction;
1880
+ /** The active locale's program catalog (qualified `<behavior>:<key>` → message): the runtime evaluates `i18n/t` against it. */
1881
+ messages?: Readonly<Record<string, string>>;
1882
+ /** ISO 4217 currency of the app's money values, declared by the host with the locale (e.g. `SAR` for an ar-SA app) */
1883
+ currency?: string;
1884
+ }
1885
+ /**
1886
+ * Provider component — wrap your app or Storybook decorator with this.
1887
+ *
1888
+ * ```tsx
1889
+ * <I18nProvider value={{ locale: 'ar', direction: 'rtl', t: createTranslate(arMessages) }}>
1890
+ * <App />
1891
+ * </I18nProvider>
1892
+ * ```
1893
+ */
1894
+ interface I18nProviderProps {
1895
+ value: I18nContextValue;
1896
+ children?: React__default.ReactNode;
1897
+ /** The app's root provider: mirrors locale + direction onto `<html lang dir>`.
1898
+ * Embedded previews omit it so they never rewrite their host document. */
1899
+ documentRoot?: boolean;
1900
+ }
1901
+ declare function I18nProvider({ value, children, documentRoot }: I18nProviderProps): React__default.ReactElement;
1902
+ /**
1903
+ * Hook to access the current locale and translate function.
1904
+ * Safe to call without a provider — returns passthrough t().
1905
+ */
1906
+ declare function useTranslate(): I18nContextValue;
1907
+ /** The viewer's locale and its catalog, for `i18n/t` / `@locale` evaluated in the browser. */
1908
+ interface RenderI18n {
1909
+ locale: string;
1910
+ messages: Readonly<Record<string, string>>;
1911
+ }
1912
+ /** The provider's locale + catalog as one identity-stable value; undefined when the host supplied no catalog. */
1913
+ declare function useRenderI18n(): RenderI18n | undefined;
1914
+ /** The app's formatting settings for `formatValue`: its locale, currency and translated Yes/No. */
1915
+ declare function useFormatContext(): FormatContext;
1916
+ /**
1917
+ * Create a translate function from a flat messages object.
1918
+ *
1919
+ * ```ts
1920
+ * const t = createTranslate({ 'common.save': 'Save', 'table.showing': 'Showing {{count}} of {{total}}' });
1921
+ * t('common.save') // → 'Save'
1922
+ * t('table.showing', { count: 5, total: 20 }) // → 'Showing 5 of 20'
1923
+ * t('missing.key') // → 'missing.key' (fallback)
1924
+ * ```
1925
+ *
1926
+ * Pass `locale` so built-in component labels the app catalog doesn't carry
1927
+ * come from the UI's own catalog for that locale before English.
1928
+ */
1929
+ declare function createTranslate(messages: Record<string, string>, locale?: string): TranslateFunction;
1930
+
1931
+ /**
1932
+ * Changes inside a container ease in instead of switching in one frame: an
1933
+ * element that appears fades and rises in, text that changes in place fades
1934
+ * in on its element, blocks the change pushed glide to their new place, and the
1935
+ * container's own height eases to fit its new content. Rows with their own motion (item glides, entrance classes) are left alone. Timing is the theme's `--duration-normal` /
1936
+ * `--easing-emphasized`; off under reduced motion.
1937
+ */
1938
+
1939
+ declare function useAnimateChanges(ref: RefObject<HTMLElement | null>, enabled: boolean): void;
1940
+
1941
+ /**
1942
+ * Utility function to merge Tailwind CSS classes
1943
+ * Combines clsx for conditional classes with tailwind-merge to handle conflicts
1944
+ */
1945
+ declare function cn(...inputs: ClassValue[]): string;
1946
+
1947
+ /**
1948
+ * The attribute namespaces a layout/text primitive forwards to its element:
1949
+ * `aria-*`, `data-*`, `role`, `id`, `lang`, `dir` and `tabIndex` (HTML's own
1950
+ * global-attribute contract; @almadar/core A11yProps).
1951
+ * The runtime renderer spreads schema props onto components, so anything else
1952
+ * stays off the DOM.
1953
+ */
1954
+ type DomPassthrough = Record<string, string | number | boolean | undefined>;
1955
+ declare function domPassthrough(props: object): DomPassthrough;
1956
+
1957
+ /**
1958
+ * NavigationContext - Schema-Driven Navigation for Orbital Runtime
1959
+ *
1960
+ * Provides navigation within the orbital schema without react-router dependency.
1961
+ * Navigation works by:
1962
+ * 1. Matching path to a page in the schema
1963
+ * 2. Extracting route params (e.g., /inspection/:id → { id: "123" })
1964
+ * 3. Switching active page
1965
+ * 4. Triggering INIT with merged payload
1966
+ *
1967
+ * This approach works whether OrbitalRuntime is standalone or embedded in another app.
1968
+ *
1969
+ * Used by both:
1970
+ * - Builder runtime (interpreted execution)
1971
+ * - Compiled shells (generated applications)
1972
+ *
1973
+ * @packageDocumentation
1974
+ */
1975
+
1976
+ /**
1977
+ * Extract route params from a path given its pattern.
1978
+ * Wrapper around matchPath for explicit use.
1979
+ */
1980
+ declare function extractRouteParams(pattern: string, path: string): Record<string, string>;
1981
+ /**
1982
+ * Check if a path matches a pattern.
1983
+ */
1984
+ declare function pathMatches(pattern: string, path: string): boolean;
1985
+ /**
1986
+ * Find a page in the schema by matching its path pattern against a concrete path.
1987
+ * Returns the page and extracted route params.
1988
+ */
1989
+ declare function findPageByPath(schema: OrbitalSchema, path: string): {
1990
+ page: OrbitalPage;
1991
+ params: Record<string, string>;
1992
+ orbitalName: string;
1993
+ } | null;
1994
+ /**
1995
+ * Find a page by name.
1996
+ */
1997
+ declare function findPageByName(schema: OrbitalSchema, pageName: string): {
1998
+ page: OrbitalPage;
1999
+ orbitalName: string;
2000
+ } | null;
2001
+ /**
2002
+ * Get the first page in the schema (default page).
2003
+ */
2004
+ declare function getDefaultPage(schema: OrbitalSchema): {
2005
+ page: OrbitalPage;
2006
+ orbitalName: string;
2007
+ } | null;
2008
+ /**
2009
+ * Get all pages from the schema.
2010
+ */
2011
+ declare function getAllPages(schema: OrbitalSchema): Array<{
2012
+ page: OrbitalPage;
2013
+ orbitalName: string;
2014
+ }>;
2015
+ interface NavigationState {
2016
+ /** Current active page name */
2017
+ activePage: string;
2018
+ /** Current path (for URL sync) */
2019
+ currentPath: string;
2020
+ /** Payload to pass to INIT when page loads */
2021
+ initPayload: Record<string, FieldValue>;
2022
+ /** Navigation counter (increments on each navigation) */
2023
+ navigationId: number;
2024
+ }
2025
+ interface NavigationContextValue {
2026
+ /** Current navigation state */
2027
+ state: NavigationState;
2028
+ /** Navigate to a path with optional payload */
2029
+ navigateTo: (path: string, payload?: Record<string, FieldValue>) => void;
2030
+ /** Navigate to a page by name with optional payload */
2031
+ navigateToPage: (pageName: string, payload?: Record<string, FieldValue>) => void;
2032
+ /** The schema being navigated */
2033
+ schema: OrbitalSchema;
2034
+ /** Whether navigation is ready (schema loaded) */
2035
+ isReady: boolean;
2036
+ }
2037
+ interface NavigationProviderProps {
2038
+ /** The schema to navigate within */
2039
+ schema: OrbitalSchema;
2040
+ /** Initial page name (optional, defaults to the page marked initial, else the first) */
2041
+ initialPage?: string;
2042
+ /** Whether to update browser URL on navigation (default: true) */
2043
+ updateUrl?: boolean;
2044
+ /** Callback when navigation occurs */
2045
+ onNavigate?: (pageName: string, path: string, payload: Record<string, FieldValue>) => void;
2046
+ /** Children */
2047
+ children: React__default.ReactNode;
2048
+ }
2049
+ /**
2050
+ * NavigationProvider - Provides schema-driven navigation context
2051
+ *
2052
+ * @example
2053
+ * ```tsx
2054
+ * <NavigationProvider schema={mySchema}>
2055
+ * <OrbitalRuntimeContent />
2056
+ * </NavigationProvider>
2057
+ * ```
2058
+ */
2059
+ declare function NavigationProvider({ schema, initialPage, updateUrl, onNavigate, children, }: NavigationProviderProps): React__default.ReactElement;
2060
+ /**
2061
+ * Hook to access navigation context.
2062
+ * Returns null if not within NavigationProvider.
2063
+ */
2064
+ declare function useNavigation(): NavigationContextValue | null;
2065
+ /**
2066
+ * Hook to get the navigateTo function.
2067
+ * Returns a no-op function if not within NavigationProvider.
2068
+ */
2069
+ declare function useNavigateTo(): (path: string, payload?: Record<string, FieldValue>) => void;
2070
+ /**
2071
+ * Hook to get current navigation state.
2072
+ */
2073
+ declare function useNavigationState(): NavigationState | null;
2074
+ /**
2075
+ * Hook to get the current INIT payload (for passing to trait INIT events).
2076
+ */
2077
+ declare function useInitPayload(): Record<string, FieldValue>;
2078
+ /**
2079
+ * Hook to get current active page name.
2080
+ */
2081
+ declare function useActivePage(): string | null;
2082
+ /**
2083
+ * Hook to get navigation ID (changes on each navigation, useful for triggering effects).
2084
+ */
2085
+ declare function useNavigationId(): number;
2086
+
2087
+ /**
2088
+ * Navigation-stack core — the pure logic behind the orbital-scoped
2089
+ * client-session navigation stack both execution paths share.
2090
+ *
2091
+ * The stack is what detail-page breadcrumb bands and the `navigate-back`
2092
+ * effect read. It lives client-side only (per browser tab): the runtime
2093
+ * path's OrbPreview and the compiled app's App.tsx both mount
2094
+ * `NavStackProvider` (providers/NavStackContext.tsx), which drives this
2095
+ * module on every route change.
2096
+ *
2097
+ * Semantics (deterministic):
2098
+ * - One stack per ORBITAL, keyed by the orbital owning the current page.
2099
+ * - On route change: an entry with the same href already in the stack
2100
+ * truncates back to it (revisit); otherwise the new entry is pushed.
2101
+ * - Cold load (deep link): the stack seeds from the declared page-path
2102
+ * hierarchy — every declared page whose pattern matches a strict prefix
2103
+ * of the concrete path becomes an ancestor entry — so the trail is never
2104
+ * empty and back always has a target on nested paths.
2105
+ * - Entry label = the `crumb` carried by the navigate effect when one was
2106
+ * staged for this href, else the page's declared label, else its name as written.
2107
+ */
2108
+
2109
+ /** One declared page as the nav stack needs it: path pattern + name + owning orbital + declared label. */
2110
+ interface NavPageDecl {
2111
+ path: string;
2112
+ name: string;
2113
+ orbital: string;
2114
+ /** Declared nav label (`@label`); absent = the page name as written. */
2115
+ label?: string;
2116
+ }
2117
+ /** Per-orbital stacks. */
2118
+ type NavStackState = Record<string, NavStackEntry[]>;
2119
+ /** Crumb staged by a `(navigate … { crumb })` effect, consumed by the next sync. */
2120
+ interface PendingCrumb {
2121
+ href: string;
2122
+ crumb: string;
2123
+ }
2124
+ /** A page's entry label: its declared label, else the declared navItem label for it, else its name as written (never derived). */
2125
+ declare function pageEntryLabel(page: NavPageDecl, navLabels?: NavItemLabels): string;
2126
+ /** Declared navItem labels keyed by the page path each item's href resolves to. */
2127
+ type NavItemLabels = Readonly<Record<string, string>>;
2128
+ /** A declared navigation item (the app shell's `navItems`), children included. */
2129
+ interface NavItemDecl {
2130
+ href: string;
2131
+ label: string;
2132
+ children?: readonly NavItemDecl[];
2133
+ }
2134
+ /** Map every navItem (children too) to the declared page its href resolves to; hrefs matching no page are skipped. */
2135
+ declare function navLabelsFromItems(pages: readonly NavPageDecl[], items: readonly NavItemDecl[]): Record<string, string>;
2136
+ /**
2137
+ * Entries whose label is still their page's own fallback (declared label or
2138
+ * name) take the page's navItem label; a staged record crumb is left alone.
2139
+ */
2140
+ declare function resolveEntryLabels(entries: readonly NavStackEntry[], pages: readonly NavPageDecl[], navLabels: NavItemLabels): readonly NavStackEntry[];
2141
+ /** The page a concrete path resolves to (specificity-ranked), or null. */
2142
+ declare function matchNavPage(pages: readonly NavPageDecl[], path: string): NavPageDecl | null;
2143
+ /**
2144
+ * Fold a route change into the stack state. Returns the next state plus the
2145
+ * orbital owning the current path (`null` when no declared page matches —
2146
+ * e.g. /login — in which case the state is returned unchanged).
2147
+ */
2148
+ declare function syncNavStack(state: NavStackState, pages: readonly NavPageDecl[], path: string, pending: PendingCrumb | null): {
2149
+ state: NavStackState;
2150
+ orbital: string | null;
2151
+ };
2152
+ /**
2153
+ * Relabel the entry for the current path — the loaded record's real title
2154
+ * replacing the page-name fallback (`Contract Detail` → the contract's
2155
+ * title). Fed by DetailPanel when it renders a resolved record in the
2156
+ * routed main slot, so cold loads and refreshes read like in-app pushes.
2157
+ * Returns the same state object when nothing changes (no page match, or
2158
+ * the label already equals `label`) so callers can skip re-renders.
2159
+ */
2160
+ declare function relabelCurrent(state: NavStackState, pages: readonly NavPageDecl[], path: string, label: string): NavStackState;
2161
+ /**
2162
+ * The previous entry for the current path's orbital — the `navigate-back`
2163
+ * target — or null when the stack holds no earlier entry (top-level page).
2164
+ */
2165
+ declare function previousEntry(state: NavStackState, pages: readonly NavPageDecl[], path: string): NavStackEntry | null;
2166
+ /** Entries for the current path's orbital (empty when no page matches). */
2167
+ declare function entriesFor(state: NavStackState, pages: readonly NavPageDecl[], path: string): readonly NavStackEntry[];
2168
+
2169
+ /**
2170
+ * NavStackProvider — the orbital-scoped client-session navigation stack.
2171
+ *
2172
+ * One provider instance per app host. Both execution paths mount it:
2173
+ * - Runtime path: OrbPreview supplies `currentPath` + `navigate` explicitly.
2174
+ * - Compiled path: the emitted App.tsx mounts `NavStackRouterBridge`, which
2175
+ * reads react-router's location/navigate and renders this provider.
2176
+ *
2177
+ * Pure stack semantics live in lib/navStack.ts (one owner for both paths).
2178
+ * State persists to sessionStorage (per-tab) so a compiled app's full page
2179
+ * reload keeps the trail; every storage access is guarded with an in-memory
2180
+ * fallback.
2181
+ */
2182
+
2183
+ interface NavStackApi {
2184
+ /** Stack of the current page's orbital, root-first (empty when no declared page matches). */
2185
+ entries: readonly NavStackEntry[];
2186
+ /** True when a previous entry exists for the current page's orbital. */
2187
+ canGoBack: boolean;
2188
+ /** Stage the crumb label for the entry the target page will record, then call navigate yourself. */
2189
+ beginNavigate: (href: string, crumb?: string) => void;
2190
+ /** Pop the current orbital's stack: navigate to the previous entry (no-op without one). */
2191
+ back: () => void;
2192
+ /** Navigate to an arbitrary stack entry (breadcrumb click). */
2193
+ goTo: (href: string) => void;
2194
+ /** Relabel the current page's stack entry with the loaded record's title
2195
+ * (idempotent; no-op when the label already matches). DetailPanel calls
2196
+ * this from the routed main slot so cold-loaded crumbs read like pushes. */
2197
+ setCurrentLabel: (label: string) => void;
2198
+ /** The app shell's declared navItems: a page reached by one shows that item's label in the trail. */
2199
+ registerNavItems: (items: readonly NavItemDecl[]) => void;
2200
+ }
2201
+ /** True when no NavStackProvider is mounted above (plain React / SSR hosts). */
2202
+ declare function isInertNavStack(api: NavStackApi): boolean;
2203
+ declare function useNavStack(): NavStackApi;
2204
+ interface NavStackProviderProps {
2205
+ pages: readonly NavPageDecl[];
2206
+ /** Concrete current path (route params substituted), e.g. /contracts/42. */
2207
+ currentPath: string;
2208
+ /** Host navigation function (SPA route change). */
2209
+ navigate: (path: string) => void;
2210
+ /** sessionStorage key; omit to keep the stack in memory only. */
2211
+ storageKey?: string;
2212
+ children: React__default.ReactNode;
2213
+ }
2214
+ declare const NavStackProvider: React__default.FC<NavStackProviderProps>;
2215
+ interface NavStackRouterBridgeProps {
2216
+ pages: readonly NavPageDecl[];
2217
+ storageKey?: string;
2218
+ children: React__default.ReactNode;
2219
+ }
2220
+ /**
2221
+ * Compiled-path host: binds NavStackProvider to react-router. Must render
2222
+ * inside a Router (the emitted App.tsx mounts it directly under
2223
+ * BrowserRouter).
2224
+ */
2225
+ declare const NavStackRouterBridge: React__default.FC<NavStackRouterBridgeProps>;
2226
+
2227
+ /** True for an absolute URL (`https:`, `mailto:`, …) that must load outside the app. */
2228
+ declare function isAbsoluteHref(href: string): boolean;
2229
+ /** Follow an href: an in-page `#anchor` scrolls to it, an absolute URL loads, a path goes through the nav stack (or loads when there is none). */
2230
+ declare function followHref(href: string, navStack: NavStackApi): void;
2231
+
2232
+ /**
2233
+ * Icon family runtime resolver (Layer 1 Iconography axis).
2234
+ *
2235
+ * Reads the active `--icon-family` CSS variable from the document element and
2236
+ * dispatches a canonical icon name (kebab-case, matching lucide's vocabulary)
2237
+ * to the equivalent lucide component. Subscribes to data-theme attribute changes
2238
+ * via MutationObserver so a theme switch re-renders icons without a page reload.
2239
+ *
2240
+ * Non-lucide families (phosphor, tabler, fontawesome) are temporarily disabled
2241
+ * to keep them out of client bundles. They can be re-enabled later behind an
2242
+ * async chunk boundary once the workspace/publish dust settles.
2243
+ *
2244
+ * See `docs/Almadar_Std_Variations.md` §2 and `themes/_contract.md`.
2245
+ */
2246
+
2247
+ type IconFamily = IconFamily$1;
2248
+ /** Adapter props that EVERY family-specific icon component accepts at this layer. */
2249
+ interface RenderedIconProps {
2250
+ className?: string;
2251
+ strokeWidth?: number;
2252
+ size?: number;
2253
+ style?: React__default.CSSProperties;
2254
+ }
2255
+ /** Read --icon-family from <html> at runtime. Returns 'lucide' on SSR. */
2256
+ declare function getCurrentIconFamily(): IconFamily;
2257
+ /** React hook: whether the theme's `--icon-stroke-width` applies to the rendered icons. */
2258
+ declare function useThemeIconStrokeApplies(ref: React__default.RefObject<Element | null>): boolean;
2259
+ /** React hook: returns the active icon family, re-renders on theme switch. */
2260
+ declare function useIconFamily(): IconFamily;
2261
+ type RenderedIcon = React__default.ForwardRefExoticComponent<RenderedIconProps & React__default.RefAttributes<SVGSVGElement>>;
2262
+ /**
2263
+ * Dispatch a canonical icon name to the active family component.
2264
+ * Non-lucide families are currently disabled and fall back to lucide.
2265
+ */
2266
+ declare function resolveIconForFamily(name: string, _family: IconFamily): RenderedIcon;
2267
+ /**
2268
+ * Resolve a canonical icon name to a family-aware component. The returned
2269
+ * component re-renders the icon into the active family's library on theme
2270
+ * switch (via useIconFamily's MutationObserver subscription).
2271
+ */
2272
+ declare function useResolvedIcon(name: string): RenderedIcon;
2273
+
2274
+ /**
2275
+ * The attribute a component puts on the element that shows one of its text
2276
+ * props (value: the prop name), so an editor can edit that text in place and
2277
+ * write it back to exactly that prop.
2278
+ */
2279
+ declare const INLINE_TEXT_ATTR = "data-inline-text";
2280
+
2281
+ /** Kebab-case to PascalCase: 'shopping-cart' -> 'ShoppingCart', 'trash-2' -> 'Trash2'. */
2282
+ declare function kebabToPascal(name: string): string;
2283
+ /** The lucide module key for a kebab-case or PascalCase icon name; undefined when lucide has no such icon. */
2284
+ declare function lucideIconKey(name: string): string | undefined;
2285
+ /**
2286
+ * Resolve an icon name to a lucide component, sync. Aliases and the help glyph are bundled; every other icon
2287
+ * is its own on-demand module, so a client downloads only the icons its program names.
2288
+ */
2289
+ declare function resolveLucideByName(name: string): LucideIcon;
2290
+
2291
+ /** A CSS `<time>` (`400ms`, `.4s`) in milliseconds; NaN when it is not one. */
2292
+ declare function cssTimeMs(value: string): number;
2293
+ /**
2294
+ * Duration + easing from the named tokens as they resolve at `scope` (default: the page root),
2295
+ * or undefined when motion is off (theme, OS reduced motion, or tokens absent).
2296
+ */
2297
+ declare function motionTiming(durationToken: string, easingToken: string, scope?: Element): {
2298
+ duration: number;
2299
+ easing: string;
2300
+ } | undefined;
2301
+ /**
2302
+ * How much `el` is scaled on screen by transforms above it (a desktop-size demo scaled to fit):
2303
+ * its on-screen width over its layout width; 1 when it is not laid out. Script-driven motion
2304
+ * measures on screen and animates in layout pixels, so it divides by this.
2305
+ */
2306
+ declare function layoutScale(el: Element): number;
2307
+
2308
+ /** A fresh key for one activation of a control. */
2309
+ declare function newPendingKey(): string;
2310
+ /** A dispatch carrying `key` started. */
2311
+ declare function beginPending(key: string): void;
2312
+ /** A dispatch carrying `key` settled. */
2313
+ declare function endPending(key: string): void;
2314
+ declare function isPending(key: string): boolean;
2315
+ declare function subscribePending(key: string, cb: () => void): () => void;
2316
+ /**
2317
+ * A region (a modal) that holds still while an action started inside it is in
2318
+ * flight: its confirm button stays busy and the dialog does not leave before
2319
+ * the action settles.
2320
+ */
2321
+ interface PendingScopeValue {
2322
+ track: (key: string) => void;
2323
+ hasPending: () => boolean;
2324
+ subscribe: (cb: () => void) => () => void;
2325
+ }
2326
+ declare const PendingScopeContext: React$1.Context<PendingScopeValue | null>;
2327
+ /** Builds the value a `PendingScopeContext.Provider` carries. */
2328
+ declare function usePendingScopeValue(): PendingScopeValue;
2329
+ /** Whether the nearest pending scope (or the given one) has an action in flight. */
2330
+ declare function useScopeHasPending(scope: PendingScopeValue | null): boolean;
2331
+ /**
2332
+ * One control's busy state. `activate(emit)` hands `emit` a fresh key to stamp
2333
+ * on the event it sends; `pending` is true until every dispatch that event
2334
+ * started has settled.
2335
+ */
2336
+ declare function usePendingAction(): {
2337
+ pending: boolean;
2338
+ activate: (emit: (pendingKey: string) => void) => void;
2339
+ };
2340
+ /**
2341
+ * Busy state per row of a collection: a row action marks ITS row pending while
2342
+ * the dispatches it started are in flight.
2343
+ */
2344
+ declare function usePendingRows(): {
2345
+ isRowPending: (rowId: string) => boolean;
2346
+ activateRow: (rowId: string, emit: (pendingKey: string) => void) => void;
2347
+ };
2348
+
2349
+ /**
2350
+ * pressableProps — props that make a non-button surface (a card, a row, a cell)
2351
+ * an operable control: `role="button"`, a tab stop, and Enter/Space activation
2352
+ * (WAI-ARIA APG button). Without a handler it returns nothing, so a surface is
2353
+ * only ever a control when it declares an action. A plain function, not a
2354
+ * hook, so row loops can call it. Enter/Space dispatch a real
2355
+ * click, so the surface's `onClick` receives the same MouseEvent either way.
2356
+ */
2357
+
2358
+ interface PressableProps<T extends Element = HTMLElement> {
2359
+ role?: 'button';
2360
+ tabIndex?: number;
2361
+ 'aria-disabled'?: true;
2362
+ onClick?: (e: React__default.MouseEvent<T>) => void;
2363
+ onKeyDown?: (e: React__default.KeyboardEvent<T>) => void;
2364
+ }
2365
+ declare function pressableProps<T extends Element = HTMLElement>(onPress: ((e: React__default.MouseEvent<T>) => void) | undefined, options?: {
2366
+ disabled?: boolean;
2367
+ }): PressableProps<T>;
2368
+ interface RowActivationProps<T extends Element = HTMLElement> {
2369
+ tabIndex?: number;
2370
+ onClick?: (e: React__default.MouseEvent<T>) => void;
2371
+ onKeyDown?: (e: React__default.KeyboardEvent<T>) => void;
2372
+ }
2373
+ /**
2374
+ * A clickable table/list row keeps its own role (`row`), so it cannot become a
2375
+ * button; it gets a tab stop and Enter activation instead, dispatching the
2376
+ * same click.
2377
+ */
2378
+ declare function rowActivationProps<T extends Element = HTMLElement>(onActivate: ((e: React__default.MouseEvent<T>) => void) | undefined): RowActivationProps<T>;
2379
+ /**
2380
+ * The keyboard/AT half of a clickable row: the row container owns the plain
2381
+ * `onClick` (no role, no tab stop), and ONE element inside it — the title, or
2382
+ * an overlay for custom-rendered rows — is the named `role="button"` tab stop.
2383
+ * Enter/Space dispatch a real click that bubbles to the row, so activation runs
2384
+ * through the one handler and row-action buttons stay siblings instead of
2385
+ * buttons nested inside a button. Action clusters must stop propagation.
2386
+ */
2387
+ declare function rowOpenControlProps<T extends Element = HTMLElement>(enabled: boolean): {
2388
+ role?: 'button';
2389
+ tabIndex?: number;
2390
+ onKeyDown?: (e: React__default.KeyboardEvent<T>) => void;
2391
+ };
2392
+ /** Focus ring for a row-open control, painted over its whole row via `::after` (row needs `relative`). */
2393
+ declare const STRETCHED_CONTROL = "after:absolute after:inset-0 after:content-[''] after:rounded-[inherit] focus-visible:outline-none focus-visible:after:ring-2 focus-visible:after:ring-primary focus-visible:after:ring-inset";
2394
+ /** Lifts interactive row content (action clusters, checkboxes) above a STRETCHED_CONTROL's ::after. */
2395
+ declare const STRETCHED_ABOVE = "relative z-[1]";
2396
+
2397
+ /**
2398
+ * Render-time expression evaluation on the kernel's one evaluator.
2399
+ *
2400
+ * A render binds many expressions against one context (a form's conditional fields and sections, a list's
2401
+ * row actions). Each helper here takes the whole batch and crosses into the kernel once; a caller with no
2402
+ * expression never touches the kernel. The module that loads the kernel installs the evaluator
2403
+ * (`KernelEngineProvider`), and there is no other evaluator to fall back on.
2404
+ *
2405
+ * @packageDocumentation
2406
+ */
2407
+
2408
+ /** The value of each expression against `context`, in one crossing; throws `KernelEvalError` on the first that fails. */
2409
+ declare function evaluateBindings(context: EvalContextWire, expressions: readonly SExpr[]): JsonValue[];
2410
+ /** The value of one expression against `context`; throws `KernelEvalError` when it fails. */
2411
+ declare function evaluateBinding(context: EvalContextWire, expression: SExpr): JsonValue;
2412
+ /** Whether each guard holds against `context` (the kernel's truthiness), in one crossing; throws on the first that fails. */
2413
+ declare function guardsHold(context: EvalContextWire, guards: readonly SExpr[]): boolean[];
2414
+
2415
+ declare const SVG_MOTION_CLASSES: {
2416
+ readonly flowDash: "almadar-svg-flow-dash";
2417
+ readonly pulseRing: "almadar-svg-pulse-ring";
2418
+ readonly pulseExpand: "almadar-svg-pulse-expand";
2419
+ };
2420
+ type SvgMotion = keyof typeof SVG_MOTION_CLASSES;
2421
+ /** The class for `motion` when the element animates and theme motion is on. */
2422
+ declare function svgMotionClass(motion: SvgMotion, animated: boolean): string | undefined;
2423
+
2424
+ /**
2425
+ * The custom scale keys `tailwind-preset.cjs` adds on top of Tailwind's stock
2426
+ * scales, by theme group. `cn` registers them with tailwind-merge so a caller's
2427
+ * class replaces a component's default of the same group; `cn.test.ts` fails
2428
+ * when the preset gains a key that is missing here.
2429
+ */
2430
+ declare const THEME_SCALE_KEYS: {
2431
+ readonly height: readonly ["button-sm", "button-md", "button-lg", "input-sm", "input-md", "input-lg", "row-compact", "row-normal", "row-spacious", "icon-default"];
2432
+ readonly minHeight: readonly ["button-sm", "button-md", "button-lg", "input-sm", "input-md", "input-lg", "row-compact", "row-normal", "row-spacious"];
2433
+ readonly width: readonly ["icon-default"];
2434
+ readonly fontSize: readonly ["display-1", "display-2"];
2435
+ readonly borderRadius: readonly ["container", "interactive", "pill"];
2436
+ readonly boxShadow: readonly ["elevation-card", "elevation-popover", "elevation-dialog", "elevation-toast", "elevation-interactive", "elevation-pressed"];
2437
+ readonly spacing: readonly ["card-sm", "card-md", "card-lg", "dialog", "section"];
2438
+ };
2439
+
2440
+ /**
2441
+ * Which traits have rendered output on screen — what a `[visible]` tick asks
2442
+ * before it fires (LOLO §11). A trait is `absent` when nothing it renders is
2443
+ * mounted, `on-screen` when any of its output is near the viewport in a
2444
+ * visible tab, and `off-screen` otherwise.
2445
+ *
2446
+ * Only watched traits are tracked: `TraitScopeProvider` wraps a trait's output
2447
+ * in a layout-neutral `display: contents` element only while some tick runner
2448
+ * watches that trait, so programs without `[visible]` ticks render unchanged.
2449
+ */
2450
+
2451
+ type TraitPresenceState = 'absent' | 'on-screen' | 'off-screen';
2452
+ interface TraitPresence {
2453
+ /** Ask for these traits' output to be tracked; returns the release. */
2454
+ watch(traits: readonly string[]): () => void;
2455
+ isWatched(trait: string): boolean;
2456
+ /** Notified when the watched set changes. */
2457
+ subscribe(listener: () => void): () => void;
2458
+ /** Track `wrapper`'s rendered boxes as `trait`'s output; returns the detach. */
2459
+ attach(trait: string, wrapper: Element): () => void;
2460
+ /** The presence of a group: on screen when any member is, absent when no member renders. */
2461
+ state(traits: readonly string[]): TraitPresenceState;
2462
+ }
2463
+ /** The element boxes a wrapper renders, looking through `display: contents` layers. */
2464
+ declare function boxesOf(el: Element): Element[];
2465
+ declare function createTraitPresence(): TraitPresence;
2466
+ /** The one presence registry for this document. */
2467
+ declare function getTraitPresence(): TraitPresence;
2468
+ /** The traits whose output decides `traitName`'s presence: itself, or every trait sharing its `[shared]` entity's frame (LOLO §11). */
2469
+ declare function presenceGroup(traitIndex: {
2470
+ byName: ReadonlyMap<string, Pick<TraitSurface, 'shared' | 'frameKey'>>;
2471
+ }, traitName: string): string[];
2472
+
2473
+ /**
2474
+ * Content surfaces: the background box behind a content block (table,
2475
+ * calendar, list, chart …). Every block paints the theme-owned `.surface-content`
2476
+ * by default, so a patterned page never shows through one block and not the
2477
+ * next; the THEME decides what that surface looks like via `--surface-content-*`.
2478
+ *
2479
+ * Anything that already is a surface (a Card, a dialog, a panel, or a block that
2480
+ * painted one) marks its subtree, and a block inside that subtree stays flat —
2481
+ * declared ancestry, so a surface never nests inside another.
2482
+ */
2483
+
2484
+ /** Marks its subtree as already sitting on a surface. */
2485
+ declare function SurfaceBoundary({ children }: {
2486
+ children?: React__default.ReactNode;
2487
+ }): React__default.ReactElement;
2488
+ interface ContentSurface {
2489
+ /** `surface-content` when this block paints the surface, otherwise undefined. */
2490
+ className: string | undefined;
2491
+ /** Wraps the block's content so nested blocks know they already sit on a surface. */
2492
+ provide: (node: React__default.ReactNode) => React__default.ReactElement;
2493
+ }
2494
+ declare function useContentSurface(surface?: SurfaceMode): ContentSurface;
2495
+ /** True when an ancestor already painted a surface. */
2496
+ declare function useOnSurface(): boolean;
2497
+
2498
+ /**
2499
+ * GENERATED — do not edit by hand. One entry per @almadar/core theme preset
2500
+ * (packages/almadar-core/themes/*.json). Regenerate: almadar-sync themes.
2501
+ */
2502
+
2503
+ declare const BUILT_IN_THEMES: UIThemeDefinition[];
2504
+
2505
+ /**
2506
+ * TraitScopeProvider
2507
+ *
2508
+ * Wraps a trait's rendered subtree with its owning `{ orbital, trait }`
2509
+ * pair. Pure components inside the subtree (Button, Form, etc.) keep
2510
+ * calling `useEventBus().emit('UI:X', ...)` exactly as today; the
2511
+ * scoped wrapper that `useEventBus` returns inside this provider
2512
+ * rewrites bare `UI:X` keys into the qualified
2513
+ * `UI:Orbital.Trait.X` form that `useTraitStateMachine` (and the rest
2514
+ * of the post-Phase 4 subscriber side) listens on.
2515
+ *
2516
+ * Producer-side fix for the gap where Button-emitted bare keys never
2517
+ * reached the trait state machine in the runtime path. The compiled
2518
+ * path's codegen wraps each trait view with the same provider so both
2519
+ * paths share the qualification contract.
2520
+ *
2521
+ * ## Embedded-trait emit bubbling (R-EMBEDDED-EMIT-BUBBLE)
2522
+ *
2523
+ * Providers NEST: when a trait's `render-ui` embeds another trait
2524
+ * (`@trait.X` / inline `<External.Trait …/>`), the embedded view is
2525
+ * rendered inside the host's subtree AND wraps itself in its own
2526
+ * provider. The context therefore carries the full scope CHAIN
2527
+ * (innermost-first), not a single scope. `useEventBus` fans every
2528
+ * `UI:*` emit out to each scope on the chain so the host trait's
2529
+ * subscribers hear emits from the embedded trait — a button authored
2530
+ * as `<UiButton.traits.ButtonRender action={CREATE}/>` inside a host
2531
+ * dispatches on the host's qualified key, not only the hoisted atom's.
2532
+ *
2533
+ * @packageDocumentation
2534
+ */
2535
+
2536
+ interface TraitScope {
2537
+ /** Owning orbital name (e.g. `"ContactOrbital"`). */
2538
+ orbital: string;
2539
+ /** Trait name within the orbital (e.g. `"ContactBrowse"`). */
2540
+ trait: string;
2541
+ }
2542
+ /**
2543
+ * Scope chain, innermost-first. `chain[0]` is the trait whose subtree
2544
+ * the caller renders inside; `chain[1..]` are its host ancestors (the
2545
+ * traits whose `render-ui` embedded it, outermost last). An empty
2546
+ * chain means the caller is outside any `TraitScopeProvider`.
2547
+ */
2548
+ type TraitScopeChain = readonly TraitScope[];
2549
+ interface TraitScopeProviderProps {
2550
+ orbital: string;
2551
+ trait: string;
2552
+ children?: React__default.ReactNode;
2553
+ }
2554
+ /**
2555
+ * Wrap a trait's rendered subtree to qualify bare `UI:*` emits with the
2556
+ * trait's scope. Mount this at the slot-content boundary in runtime
2557
+ * mode (UISlotRenderer) and at each generated trait view's outermost
2558
+ * element in compiled mode (orbital-shell-typescript codegen). Nesting
2559
+ * is preserved: a provider prepends itself to the parent chain so
2560
+ * embedded-trait emits can bubble to their host.
2561
+ */
2562
+ declare function TraitScopeProvider({ orbital, trait, children, }: TraitScopeProviderProps): React__default.ReactElement;
2563
+ /**
2564
+ * Read the full trait-scope chain, innermost-first. Empty when called
2565
+ * outside any `TraitScopeProvider` (e.g. Storybook, design-system
2566
+ * catalog). `useEventBus` uses this to fan embedded-trait emits out to
2567
+ * every host ancestor.
2568
+ */
2569
+ declare function useTraitScopeChain(): TraitScopeChain;
2570
+ /**
2571
+ * Read the innermost (nearest) trait scope. Returns `null` when called
2572
+ * outside any `TraitScopeProvider`. Kept for callers that only need the
2573
+ * immediate scope.
2574
+ */
2575
+ declare function useTraitScope(): TraitScope | null;
2576
+
2577
+ /**
2578
+ * Core locale loader for @almadar/ui.
2579
+ *
2580
+ * Exports message maps for en/ar/sl and a helper to merge
2581
+ * project-specific messages on top of core.
2582
+ */
2583
+ type SupportedLocale = 'en' | 'ar' | 'sl';
2584
+ interface LocaleMeta {
2585
+ locale: string;
2586
+ direction: 'ltr' | 'rtl';
2587
+ }
2588
+ /** Core messages keyed by locale */
2589
+ declare const coreMessages: Record<SupportedLocale, Record<string, string>>;
2590
+ /** Locale metadata */
2591
+ declare const localeMeta: Record<SupportedLocale, LocaleMeta>;
2592
+ /**
2593
+ * Merge core messages with project-specific messages.
2594
+ * Project keys override core keys.
2595
+ */
2596
+ declare function mergeMessages(locale: SupportedLocale, projectMessages: Record<string, string>): Record<string, string>;
2597
+
2598
+ export { AnimatedGraphic, AnimatedReveal, Aside, AtlasImage, AtlasPanel, Avatar, BAND_ACCENT_FALLBACK, BAND_EDGE_FILL, BAND_SHAPES, BUILT_IN_THEMES, Box, Card, CardBody, CardContent, CardFooter, CardHeader, CardTitle, Center, Checkbox, ConditionalWrapper, ConfettiEffect, DEFAULT_CURRENCY, DayCell, Dialog, Divider, FilterPill, FlipContainer, GameIcon, HStack, I18nProvider, INLINE_TEXT_ATTR, IconInput, Image, InfiniteScrollSentinel, Label, LawReferenceTooltip, NavStackProvider, NavStackRouterBridge, NavigationProvider, Overlay, PendingScopeContext, Presence, ProgressBar, Radio, RangeSlider, STRETCHED_ABOVE, STRETCHED_CONTROL, SVG_MOTION_CLASSES, SectionHeader, Spacer, Sparkline, Spinner, Stack, StatusDot, SurfaceBoundary, SvgBranch, SvgConnection, SvgFlow, SvgGrid, SvgLobe, SvgMesh, SvgMorph, SvgNode, SvgPulse, SvgRing, SvgShield, SvgStack, Switch, THEME_SCALE_KEYS, TextHighlight, Textarea, ThemeToggle, TimeSlotCell, TraitScopeProvider, TrendIndicator, TypewriterText, Typography, UIThemeDefinition, VStack, atlasFailed, atlasUrlOf, bandEdgeHeight, bandEdgeLayerStyle, bandEdgeMask, bandPadding, beginPending, blit, boxesOf, cn, compareCellValues, coreMessages, createTraitPresence, createTranslate, cssTimeMs, domPassthrough, endPending, entriesFor, evaluateBinding, evaluateBindings, extractRouteParams, findPageByName, findPageByPath, followHref, formatDate, formatDateTime, formatTime, formatValue, getAllPages, getAtlas, getCurrentIconFamily, getDefaultPage, getTraitPresence, guardsHold, isAbsoluteHref, isAtlasAsset, isInertNavStack, isMotionEnabled, isPending, isSpriteSheetAtlas, kebabToPascal, layoutScale, localeMeta, lucideIconKey, matchNavPage, mergeMessages, motionTiming, navLabelsFromItems, newPendingKey, pageEntryLabel, parseCalendarDate, pathMatches, presenceGroup, pressableProps, previousEntry, relabelCurrent, resolveAssetSource, resolveEntryLabels, resolveIconForFamily, resolveLucideByName, rowActivationProps, rowOpenControlProps, sortRows, subRectFor, subscribePending, svgMotionClass, syncNavStack, toDateInputValue, toDateTimeInputValue, useActivePage, useAnimateChanges, useAtlasSliceDataUrl, useContentSurface, useDialogBehavior, useFormatContext, useIconFamily, useInfiniteScroll, useInitPayload, useMediaQuery, useNavStack, useNavigateTo, useNavigation, useNavigationId, useNavigationState, useOnSurface, usePendingAction, usePendingRows, usePendingScopeValue, usePrefersReducedMotion, usePresence, useRenderI18n, useResolvedIcon, useScopeHasPending, useTapReveal, useThemeIconStrokeApplies, useTraitScope, useTraitScopeChain, useTranslate };
2599
+ export type { AnimatedGraphicProps, AnimatedRevealProps, AsideProps, AssetSource, AtlasImageAsset, AtlasImageProps, AtlasPanelProps, AvatarProps, AvatarSize, AvatarStatus, BandEdge, BandEdgeColor, BandEdgeLayerStyle, BooleanLabels, BoxBg, BoxMargin, BoxPadding, BoxProps, BoxRounded, BoxShadow, CardLook, CardProps, CardShadow, CenterProps, CheckboxProps, ConditionalContext, ConditionalWrapperProps, ConfettiEffectProps, ContentSurface, DayCellProps, DialogBehaviorOptions, DialogProps, DividerOrientation, DividerProps, DividerVariant, DomPassthrough, FilterPillProps, FilterPillSize, FilterPillVariant, FlipContainerProps, FormatContext, GameIconProps, GraphicAnimation, HStackProps, HighlightType, I18nContextValue, I18nProviderProps, IconFamily, ImageAspect, ImageFit, ImagePosition, ImageProps, ImageRounded, InfiniteScrollOptions, InfiniteScrollResult, InfiniteScrollSentinelProps, LabelProps, LawReference, LawReferenceTooltipProps, LocaleMeta, NavItemDecl, NavItemLabels, NavPageDecl, NavStackApi, NavStackProviderProps, NavStackRouterBridgeProps, NavStackState, NavigationContextValue, NavigationProviderProps, NavigationState, OverlayProps, PendingCrumb, PendingScopeValue, PresenceAnimation, PresenceProps, PresenceResult, PressableProps, ProgressBarColor, ProgressBarProps, ProgressBarType, ProgressBarVariant, RadioProps, RangeSliderProps, RangeSliderSize, RenderI18n, RenderedIcon, RenderedIconProps, RevealAnimation, RevealTrigger, RowActivationProps, SectionHeaderProps, SortDirection, SpacerProps, SpacerSize, SparklineColor, SparklineProps, SpinnerProps, SpinnerSize, SpriteRef, StackAlign, StackDirection, StackGap, StackJustify, StackProps, StatusDotProps, StatusDotSize, StatusDotStatus, SubRect, SupportedLocale, SvgBranchProps, SvgConnectionProps, SvgFlowProps, SvgGridProps, SvgLobeProps, SvgMeshProps, SvgMorphProps, SvgMotion, SvgNodeProps, SvgPulseProps, SvgRingProps, SvgShieldProps, SvgStackProps, SwitchProps, TapRevealOptions, TapRevealResult, TextHighlightProps, TextareaProps, ThemeToggleProps, TimeSlotCellProps, TraitPresence, TraitPresenceState, TraitScope, TraitScopeProviderProps, TranslateFunction, TrendDirection, TrendIndicatorProps, TrendIndicatorSize, TypewriterTextProps, TypographyProps, TypographySize, TypographyVariant, UsePresenceOptions, VStackProps, ValueFormat };