@jacshuo/onyx 2.2.0 → 2.4.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 (135) hide show
  1. package/dist/Chart/BarChart.cjs +1 -1
  2. package/dist/Chart/BarChart.js +1 -1
  3. package/dist/Chart/PieChart.cjs +1 -1
  4. package/dist/Chart/PieChart.js +1 -1
  5. package/dist/Chart/ScatterChart.cjs +1 -1
  6. package/dist/Chart/ScatterChart.js +1 -1
  7. package/dist/Chart/index.cjs +1 -1
  8. package/dist/Chart/index.js +1 -1
  9. package/dist/DataDisplay/VirtualList.cjs +2 -0
  10. package/dist/DataDisplay/VirtualList.css +1 -0
  11. package/dist/DataDisplay/VirtualList.d.cts +5 -0
  12. package/dist/DataDisplay/VirtualList.d.ts +5 -0
  13. package/dist/DataDisplay/VirtualList.js +2 -0
  14. package/dist/DataDisplay/index.cjs +3 -2
  15. package/dist/DataDisplay/index.css +1 -0
  16. package/dist/DataDisplay/index.d.cts +5 -0
  17. package/dist/DataDisplay/index.d.ts +5 -0
  18. package/dist/DataDisplay/index.js +3 -2
  19. package/dist/Extras/FileExplorer.cjs +2 -2
  20. package/dist/Extras/FileExplorer.js +2 -2
  21. package/dist/Extras/LoginPanel.cjs +1 -0
  22. package/dist/Extras/LoginPanel.css +1 -0
  23. package/dist/Extras/LoginPanel.d.cts +3 -0
  24. package/dist/Extras/LoginPanel.d.ts +3 -0
  25. package/dist/Extras/LoginPanel.js +1 -0
  26. package/dist/Extras/RichTextEditor.cjs +45 -0
  27. package/dist/Extras/RichTextEditor.css +1 -0
  28. package/dist/Extras/RichTextEditor.d.cts +10 -0
  29. package/dist/Extras/RichTextEditor.d.ts +10 -0
  30. package/dist/Extras/RichTextEditor.js +45 -0
  31. package/dist/Extras/TypewriterText.cjs +2 -1
  32. package/dist/Extras/TypewriterText.css +1 -1
  33. package/dist/Extras/TypewriterText.js +2 -1
  34. package/dist/Extras/index.cjs +48 -4
  35. package/dist/Extras/index.css +1 -1
  36. package/dist/Extras/index.d.cts +7 -0
  37. package/dist/Extras/index.d.ts +7 -0
  38. package/dist/Extras/index.js +48 -4
  39. package/dist/Forms/Form.cjs +1 -1
  40. package/dist/Forms/Form.js +1 -1
  41. package/dist/Forms/OTPInput.cjs +1 -0
  42. package/dist/Forms/OTPInput.css +1 -0
  43. package/dist/Forms/OTPInput.d.cts +4 -0
  44. package/dist/Forms/OTPInput.d.ts +4 -0
  45. package/dist/Forms/OTPInput.js +1 -0
  46. package/dist/Forms/Select.cjs +1 -1
  47. package/dist/Forms/Select.js +1 -1
  48. package/dist/Forms/index.cjs +1 -1
  49. package/dist/Forms/index.css +1 -0
  50. package/dist/Forms/index.d.cts +4 -0
  51. package/dist/Forms/index.d.ts +4 -0
  52. package/dist/Forms/index.js +1 -1
  53. package/dist/Layout/SplitPanel.cjs +1 -0
  54. package/dist/Layout/SplitPanel.d.cts +3 -0
  55. package/dist/Layout/SplitPanel.d.ts +3 -0
  56. package/dist/Layout/SplitPanel.js +1 -0
  57. package/dist/Layout/index.cjs +1 -1
  58. package/dist/Layout/index.d.cts +3 -0
  59. package/dist/Layout/index.d.ts +3 -0
  60. package/dist/Layout/index.js +1 -1
  61. package/dist/Navigation/Header.cjs +1 -1
  62. package/dist/Navigation/Header.js +1 -1
  63. package/dist/Navigation/RibbonBar.d.cts +3 -3
  64. package/dist/Navigation/RibbonBar.d.ts +3 -3
  65. package/dist/Navigation/index.cjs +2 -2
  66. package/dist/Navigation/index.d.cts +3 -3
  67. package/dist/Navigation/index.d.ts +3 -3
  68. package/dist/Navigation/index.js +2 -2
  69. package/dist/Primitives/Avatar.cjs +1 -1
  70. package/dist/Primitives/Avatar.js +1 -1
  71. package/dist/Primitives/Badge.cjs +1 -1
  72. package/dist/Primitives/Badge.js +1 -1
  73. package/dist/Primitives/Button.cjs +1 -1
  74. package/dist/Primitives/Button.js +1 -1
  75. package/dist/Primitives/Checkbox.cjs +1 -1
  76. package/dist/Primitives/Checkbox.js +1 -1
  77. package/dist/Primitives/Dropdown.cjs +1 -1
  78. package/dist/Primitives/Dropdown.js +1 -1
  79. package/dist/Primitives/DropdownButton.cjs +1 -1
  80. package/dist/Primitives/DropdownButton.js +1 -1
  81. package/dist/Primitives/Indicator.cjs +1 -1
  82. package/dist/Primitives/Indicator.js +1 -1
  83. package/dist/Primitives/Input.cjs +1 -1
  84. package/dist/Primitives/Input.js +1 -1
  85. package/dist/Primitives/Kbd.cjs +1 -0
  86. package/dist/Primitives/Kbd.css +0 -0
  87. package/dist/Primitives/Kbd.d.cts +6 -0
  88. package/dist/Primitives/Kbd.d.ts +6 -0
  89. package/dist/Primitives/Kbd.js +1 -0
  90. package/dist/Primitives/Label.cjs +1 -1
  91. package/dist/Primitives/Label.js +1 -1
  92. package/dist/Primitives/Radio.cjs +1 -1
  93. package/dist/Primitives/Radio.js +1 -1
  94. package/dist/Primitives/Rating.cjs +2 -0
  95. package/dist/Primitives/Rating.css +0 -0
  96. package/dist/Primitives/Rating.d.cts +4 -0
  97. package/dist/Primitives/Rating.d.ts +4 -0
  98. package/dist/Primitives/Rating.js +2 -0
  99. package/dist/Primitives/Slider.cjs +1 -1
  100. package/dist/Primitives/Slider.js +1 -1
  101. package/dist/Primitives/Switch.cjs +1 -1
  102. package/dist/Primitives/Switch.js +1 -1
  103. package/dist/Primitives/Tag.cjs +1 -1
  104. package/dist/Primitives/Tag.js +1 -1
  105. package/dist/Primitives/index.cjs +2 -1
  106. package/dist/Primitives/index.d.cts +10 -0
  107. package/dist/Primitives/index.d.ts +10 -0
  108. package/dist/Primitives/index.js +2 -1
  109. package/dist/_tsup-dts-rollup.d.cts +843 -1
  110. package/dist/_tsup-dts-rollup.d.ts +843 -1
  111. package/dist/index.cjs +49 -5
  112. package/dist/index.css +1 -1
  113. package/dist/index.d.cts +35 -0
  114. package/dist/index.d.ts +35 -0
  115. package/dist/index.js +49 -5
  116. package/dist/styles/DataDisplay/VirtualList.css +35 -0
  117. package/dist/styles/Extras/CinePlayer.css +63 -1
  118. package/dist/styles/Extras/FileExplorer.css +39 -1
  119. package/dist/styles/Extras/FilmReel.css +24 -1
  120. package/dist/styles/Extras/LoginPanel.css +16 -0
  121. package/dist/styles/Extras/MiniPlayer.css +84 -1
  122. package/dist/styles/Extras/RichTextEditor.css +908 -0
  123. package/dist/styles/Extras/TypewriterText.css +254 -0
  124. package/dist/styles/Forms/OTPInput.css +11 -0
  125. package/dist/styles/Layout/SplitPanel.css +15 -0
  126. package/dist/styles/Primitives/DropdownButton.css +26 -1
  127. package/dist/styles/Primitives/Kbd.css +1 -0
  128. package/dist/styles/Primitives/Rating.css +1 -0
  129. package/dist/styles/base.css +281 -0
  130. package/dist/styles.css +281 -0
  131. package/dist/theme.cjs +1 -1
  132. package/dist/theme.d.cts +3 -0
  133. package/dist/theme.d.ts +3 -0
  134. package/dist/theme.js +1 -1
  135. package/package.json +22 -1
@@ -1,8 +1,19 @@
1
1
  import { ClassProp } from 'class-variance-authority/types';
2
2
  import { ClassValue } from 'clsx';
3
+ import type { CSSProperties } from 'react';
3
4
  import { Dispatch } from 'react';
5
+ import { Editor } from '@tiptap/core';
6
+ import { Extension } from '@tiptap/core';
7
+ import { ForwardRefExoticComponent } from 'react';
8
+ import { ImageOptions } from '@tiptap/extension-image';
4
9
  import { JSX } from 'react/jsx-runtime';
10
+ import { Node as Node_2 } from '@tiptap/core';
11
+ import type { Node as Node_3 } from '@tiptap/pm/model';
12
+ import { PluginKey } from '@tiptap/pm/state';
5
13
  import { default as React_2 } from 'react';
14
+ import type { ReactNode } from 'react';
15
+ import type { Ref } from 'react';
16
+ import { RefAttributes } from 'react';
6
17
  import { RefObject } from 'react';
7
18
  import { SetStateAction } from 'react';
8
19
  import { VariantProps } from 'class-variance-authority';
@@ -819,6 +830,11 @@ export { ContextMenuProps as ContextMenuProps_alias_2 }
819
830
  export { ContextMenuProps as ContextMenuProps_alias_3 }
820
831
  export { ContextMenuProps as ContextMenuProps_alias_4 }
821
832
 
833
+ /**
834
+ * Count words in a string.
835
+ */
836
+ export declare function countWords(text: string): number;
837
+
822
838
  /** Creates a categorical band scale (returns center-of-band x). */
823
839
  export declare function createCategoryScale(categories: string[], range: [number, number]): (cat: string) => number;
824
840
 
@@ -839,6 +855,7 @@ declare const DataDisplay: {
839
855
  CodeBlock: typeof CodeBlock;
840
856
  Stat: typeof Stat;
841
857
  MetricCard: typeof MetricCard;
858
+ VirtualList: <T>(props: VirtualListProps<T> & React.RefAttributes<VirtualListHandle>) => React.ReactElement;
842
859
  };
843
860
  export { DataDisplay }
844
861
  export { DataDisplay as DataDisplay_alias_1 }
@@ -963,11 +980,15 @@ export declare const default_alias: {
963
980
  AvatarGroup: AvatarGroup;
964
981
  Slider: Slider;
965
982
  SliderRange: SliderRange;
983
+ Rating: Rating;
984
+ Kbd: Kbd;
985
+ KbdGroup: KbdGroup;
966
986
  };
967
987
  Layout: {
968
988
  Card: Card;
969
989
  ImageCard: ImageCard;
970
990
  Panel: Panel;
991
+ SplitPanel: SplitPanel;
971
992
  };
972
993
  DataDisplay: {
973
994
  Table: Table;
@@ -977,6 +998,7 @@ export declare const default_alias: {
977
998
  CodeBlock: CodeBlock;
978
999
  Stat: Stat;
979
1000
  MetricCard: MetricCard;
1001
+ VirtualList: <T>(props: VirtualListProps<T> & React.RefAttributes<VirtualListHandle>) => React.ReactElement;
980
1002
  };
981
1003
  Navigation: {
982
1004
  SideNav: SideNav;
@@ -1014,9 +1036,12 @@ export declare const default_alias: {
1014
1036
  CommandPalette: CommandPalette;
1015
1037
  Timeline: Timeline;
1016
1038
  DateTimePicker: DateTimePicker;
1039
+ LoginPanel: LoginPanel;
1040
+ RichTextEditor: ForwardRefExoticComponent<RichTextEditorProps & RefAttributes<RichTextEditorHandle>>;
1017
1041
  };
1018
1042
  Forms: {
1019
1043
  Form: Form;
1044
+ OTPInput: OTPInput;
1020
1045
  };
1021
1046
  Chart: {
1022
1047
  LineChart: LineChart;
@@ -1074,8 +1099,36 @@ export declare function default_alias_120(): JSX.Element;
1074
1099
 
1075
1100
  export declare function default_alias_121(): JSX.Element;
1076
1101
 
1102
+ export declare function default_alias_122(): JSX.Element;
1103
+
1104
+ export declare function default_alias_123(): JSX.Element;
1105
+
1106
+ export declare function default_alias_124(): JSX.Element;
1107
+
1108
+ export declare function default_alias_125(): JSX.Element;
1109
+
1110
+ export declare function default_alias_126(): JSX.Element;
1111
+
1112
+ export declare function default_alias_127(): JSX.Element;
1113
+
1114
+ export declare function default_alias_128(): JSX.Element;
1115
+
1116
+ export declare function default_alias_129(): JSX.Element;
1117
+
1077
1118
  export declare function default_alias_13(): JSX.Element;
1078
1119
 
1120
+ export declare function default_alias_130(): JSX.Element;
1121
+
1122
+ export declare function default_alias_131(): JSX.Element;
1123
+
1124
+ export declare function default_alias_132(): JSX.Element;
1125
+
1126
+ export declare function default_alias_133(): JSX.Element;
1127
+
1128
+ export declare function default_alias_134(): JSX.Element;
1129
+
1130
+ export declare function default_alias_135(): JSX.Element;
1131
+
1079
1132
  export declare function default_alias_14(): JSX.Element;
1080
1133
 
1081
1134
  export declare function default_alias_15(): JSX.Element;
@@ -1559,6 +1612,11 @@ export { DropdownSingleProps }
1559
1612
  export { DropdownSingleProps as DropdownSingleProps_alias_1 }
1560
1613
  export { DropdownSingleProps as DropdownSingleProps_alias_2 }
1561
1614
 
1615
+ export declare const EmbedFrame: Node_2<any, any>;
1616
+
1617
+ /** Distribute `totalPx` equally among the provided ids. */
1618
+ export declare function even(ids: string[], totalPx: number): Record<string, number>;
1619
+
1562
1620
  declare const Extras: {
1563
1621
  FilmReel: typeof FilmReel;
1564
1622
  MiniPlayer: typeof MiniPlayer;
@@ -1569,6 +1627,8 @@ declare const Extras: {
1569
1627
  CommandPalette: typeof CommandPalette;
1570
1628
  Timeline: typeof Timeline;
1571
1629
  DateTimePicker: typeof DateTimePicker;
1630
+ LoginPanel: typeof LoginPanel;
1631
+ RichTextEditor: ForwardRefExoticComponent<RichTextEditorProps & RefAttributes<RichTextEditorHandle>>;
1572
1632
  };
1573
1633
  export { Extras }
1574
1634
  export { Extras as Extras_alias_1 }
@@ -1765,6 +1825,18 @@ export { FilmReelProps }
1765
1825
  export { FilmReelProps as FilmReelProps_alias_1 }
1766
1826
  export { FilmReelProps as FilmReelProps_alias_2 }
1767
1827
 
1828
+ /**
1829
+ * Find all occurrences of `query` in a ProseMirror document.
1830
+ * Returns positions in ProseMirror document coordinates.
1831
+ */
1832
+ export declare function findMatchesInDoc(doc: Node_3, query: string, caseSensitive?: boolean): TextMatch[];
1833
+
1834
+ /**
1835
+ * Find all occurrences of `query` in a plain string (for Markdown textarea).
1836
+ * Returns [start, end] character index pairs.
1837
+ */
1838
+ export declare function findMatchesInText(text: string, query: string, caseSensitive?: boolean): Array<[number, number]>;
1839
+
1768
1840
  /** Finds the index of the nearest category to a given SVG x position. */
1769
1841
  export declare function findNearestCategoryIndex(svgX: number, categories: string[], xScale: (cat: string) => number): number;
1770
1842
 
@@ -1864,6 +1936,7 @@ export { FormProps as FormProps_alias_2 }
1864
1936
 
1865
1937
  declare const Forms: {
1866
1938
  Form: typeof Form;
1939
+ OTPInput: typeof OTPInput;
1867
1940
  };
1868
1941
  export { Forms }
1869
1942
  export { Forms as Forms_alias_1 }
@@ -1939,6 +2012,28 @@ export declare function getYAtCategory(series: ChartSeries, category: string): n
1939
2012
 
1940
2013
  export declare function getYearRange(center: number, span?: number): number[];
1941
2014
 
2015
+ /** State passed to a rendered handle element. */
2016
+ export declare interface _HandleProps {
2017
+ /** Index in the visible-pane array: handle sits between [index] and [index+1]. */
2018
+ index: number;
2019
+ /** Configuration of the pane to the left / above. */
2020
+ paneA: SplitPanelPane;
2021
+ /** Configuration of the pane to the right / below. */
2022
+ paneB: SplitPanelPane;
2023
+ /** Whether this handle is currently being dragged. */
2024
+ isDragging: boolean;
2025
+ /** Visual bar thickness in px. */
2026
+ handleSize: number;
2027
+ /** Are panels stacked horizontally? */
2028
+ isHorizontal: boolean;
2029
+ /** Pointer event handlers. */
2030
+ onPointerDown: (e: React_2.PointerEvent<HTMLDivElement>) => void;
2031
+ onPointerMove: (e: React_2.PointerEvent<HTMLDivElement>) => void;
2032
+ onPointerUp: (e: React_2.PointerEvent<HTMLDivElement>) => void;
2033
+ /** Keyboard step resize handler. */
2034
+ onKeyDown: (e: React_2.KeyboardEvent<HTMLDivElement>) => void;
2035
+ }
2036
+
1942
2037
  declare function Header({ brand, onBrandClick, navItems, actions, linkComponent: Link, height, mobileMenu, navMenuIcon, actionsMenuIcon, className, children, }: HeaderProps): JSX.Element;
1943
2038
  export { Header }
1944
2039
  export { Header as Header_alias_1 }
@@ -2036,6 +2131,14 @@ declare type HorizontalCardProps = Omit<React_2.HTMLAttributes<HTMLDivElement>,
2036
2131
  stackOnMobile?: boolean;
2037
2132
  };
2038
2133
 
2134
+ /**
2135
+ * Converts HTML produced by Tiptap to Markdown.
2136
+ * Handles headings, bold, italic, strikethrough, code, links,
2137
+ * images, ordered/unordered lists, blockquotes, horizontal rules,
2138
+ * and falls back to plain text for unrecognised tags.
2139
+ */
2140
+ export declare function htmlToMarkdown(html: string): string;
2141
+
2039
2142
  declare function ImageCard({ src, alt, aspectRatio, className, children, ...props }: ImageCardProps): JSX.Element;
2040
2143
  export { ImageCard }
2041
2144
  export { ImageCard as ImageCard_alias_1 }
@@ -2163,6 +2266,59 @@ export declare function isToday(date: Date): boolean;
2163
2266
 
2164
2267
  export declare const ITEM_H = 40;
2165
2268
 
2269
+ declare function Kbd({ size, variant, className, children, ...rest }: KbdProps): JSX.Element;
2270
+ export { Kbd }
2271
+ export { Kbd as Kbd_alias_1 }
2272
+ export { Kbd as Kbd_alias_2 }
2273
+ export { Kbd as Kbd_alias_3 }
2274
+
2275
+ declare function KbdGroup({ separator, className, children }: KbdGroupProps): JSX.Element;
2276
+ export { KbdGroup }
2277
+ export { KbdGroup as KbdGroup_alias_1 }
2278
+ export { KbdGroup as KbdGroup_alias_2 }
2279
+ export { KbdGroup as KbdGroup_alias_3 }
2280
+
2281
+ declare interface KbdGroupProps {
2282
+ separator?: React_2.ReactNode;
2283
+ className?: string;
2284
+ children: React_2.ReactNode;
2285
+ }
2286
+ export { KbdGroupProps }
2287
+ export { KbdGroupProps as KbdGroupProps_alias_1 }
2288
+ export { KbdGroupProps as KbdGroupProps_alias_2 }
2289
+ export { KbdGroupProps as KbdGroupProps_alias_3 }
2290
+
2291
+ declare interface KbdProps extends React_2.HTMLAttributes<HTMLElement> {
2292
+ size?: KbdSize;
2293
+ variant?: KbdVariant;
2294
+ className?: string;
2295
+ children: React_2.ReactNode;
2296
+ }
2297
+ export { KbdProps }
2298
+ export { KbdProps as KbdProps_alias_1 }
2299
+ export { KbdProps as KbdProps_alias_2 }
2300
+ export { KbdProps as KbdProps_alias_3 }
2301
+
2302
+ declare type KbdSize = "xs" | "sm" | "md" | "lg";
2303
+ export { KbdSize }
2304
+ export { KbdSize as KbdSize_alias_1 }
2305
+ export { KbdSize as KbdSize_alias_2 }
2306
+ export { KbdSize as KbdSize_alias_3 }
2307
+
2308
+ declare type KbdVariant = "default" | "outline" | "ghost";
2309
+ export { KbdVariant }
2310
+ export { KbdVariant as KbdVariant_alias_1 }
2311
+ export { KbdVariant as KbdVariant_alias_2 }
2312
+ export { KbdVariant as KbdVariant_alias_3 }
2313
+
2314
+ declare const kbdVariants: (props?: ({
2315
+ size?: "sm" | "md" | "lg" | "xs" | null | undefined;
2316
+ variant?: "ghost" | "outline" | "default" | null | undefined;
2317
+ } & ClassProp) | undefined) => string;
2318
+ export { kbdVariants }
2319
+ export { kbdVariants as kbdVariants_alias_1 }
2320
+ export { kbdVariants as kbdVariants_alias_2 }
2321
+
2166
2322
  declare function Label({ intent, size, className, ...props }: LabelProps): JSX.Element;
2167
2323
  export { Label }
2168
2324
  export { Label as Label_alias_1 }
@@ -2183,6 +2339,7 @@ declare const Layout: {
2183
2339
  Card: typeof Card;
2184
2340
  ImageCard: typeof ImageCard;
2185
2341
  Panel: typeof Panel;
2342
+ SplitPanel: typeof SplitPanel;
2186
2343
  };
2187
2344
  export { Layout }
2188
2345
  export { Layout as Layout_alias_1 }
@@ -2262,6 +2419,44 @@ export { listVariants }
2262
2419
  export { listVariants as listVariants_alias_1 }
2263
2420
  export { listVariants as listVariants_alias_2 }
2264
2421
 
2422
+ declare function LoginPanel({ mode: controlledMode, onModeChange, onLogin, onRegister, onOTPComplete, onForgotPassword, logo, title, subtitle, socialLogins, showRememberMe, isLoading, error, className, style, }: LoginPanelProps): JSX.Element;
2423
+ export { LoginPanel }
2424
+ export { LoginPanel as LoginPanel_alias_1 }
2425
+ export { LoginPanel as LoginPanel_alias_2 }
2426
+ export { LoginPanel as LoginPanel_alias_3 }
2427
+
2428
+ declare type LoginPanelMode = "login" | "register" | "otp" | "forgot";
2429
+ export { LoginPanelMode }
2430
+ export { LoginPanelMode as LoginPanelMode_alias_1 }
2431
+ export { LoginPanelMode as LoginPanelMode_alias_2 }
2432
+ export { LoginPanelMode as LoginPanelMode_alias_3 }
2433
+
2434
+ declare interface LoginPanelProps {
2435
+ mode?: LoginPanelMode;
2436
+ onModeChange?: (mode: LoginPanelMode) => void;
2437
+ onLogin?: (email: string, password: string, rememberMe: boolean) => void | Promise<void>;
2438
+ onRegister?: (name: string, email: string, password: string) => void | Promise<void>;
2439
+ onOTPComplete?: (otp: string) => void | Promise<void>;
2440
+ onForgotPassword?: (email: string) => void | Promise<void>;
2441
+ logo?: React_2.ReactNode;
2442
+ title?: string;
2443
+ subtitle?: string;
2444
+ socialLogins?: Array<{
2445
+ label: string;
2446
+ icon: React_2.ReactNode;
2447
+ onClick: () => void;
2448
+ }>;
2449
+ showRememberMe?: boolean;
2450
+ isLoading?: boolean;
2451
+ error?: string;
2452
+ className?: string;
2453
+ style?: CSSProperties;
2454
+ }
2455
+ export { LoginPanelProps }
2456
+ export { LoginPanelProps as LoginPanelProps_alias_1 }
2457
+ export { LoginPanelProps as LoginPanelProps_alias_2 }
2458
+ export { LoginPanelProps as LoginPanelProps_alias_3 }
2459
+
2265
2460
  /**
2266
2461
  * Pinterest-style waterfall / masonry layout with rich interactions.
2267
2462
  *
@@ -2471,6 +2666,54 @@ export { OffsetUnit as OffsetUnit_alias_1 }
2471
2666
  export { OffsetUnit as OffsetUnit_alias_2 }
2472
2667
  export { OffsetUnit as OffsetUnit_alias_3 }
2473
2668
 
2669
+ declare function OTPInput({ length, value: controlledValue, defaultValue, onChange, onComplete, size, variant, disabled, readOnly, autoFocus, alphanumeric, mask, invalid, className, }: OTPInputProps): JSX.Element;
2670
+ export { OTPInput }
2671
+ export { OTPInput as OTPInput_alias_1 }
2672
+ export { OTPInput as OTPInput_alias_2 }
2673
+ export { OTPInput as OTPInput_alias_3 }
2674
+
2675
+ declare interface OTPInputProps {
2676
+ length?: number;
2677
+ value?: string;
2678
+ defaultValue?: string;
2679
+ onChange?: (value: string) => void;
2680
+ onComplete?: (value: string) => void;
2681
+ size?: OTPInputSize;
2682
+ variant?: OTPInputVariant;
2683
+ disabled?: boolean;
2684
+ readOnly?: boolean;
2685
+ autoFocus?: boolean;
2686
+ alphanumeric?: boolean;
2687
+ mask?: boolean;
2688
+ invalid?: boolean;
2689
+ className?: string;
2690
+ }
2691
+ export { OTPInputProps }
2692
+ export { OTPInputProps as OTPInputProps_alias_1 }
2693
+ export { OTPInputProps as OTPInputProps_alias_2 }
2694
+ export { OTPInputProps as OTPInputProps_alias_3 }
2695
+
2696
+ declare type OTPInputSize = "sm" | "md" | "lg";
2697
+ export { OTPInputSize }
2698
+ export { OTPInputSize as OTPInputSize_alias_1 }
2699
+ export { OTPInputSize as OTPInputSize_alias_2 }
2700
+ export { OTPInputSize as OTPInputSize_alias_3 }
2701
+
2702
+ declare type OTPInputVariant = "outline" | "filled" | "underline";
2703
+ export { OTPInputVariant }
2704
+ export { OTPInputVariant as OTPInputVariant_alias_1 }
2705
+ export { OTPInputVariant as OTPInputVariant_alias_2 }
2706
+ export { OTPInputVariant as OTPInputVariant_alias_3 }
2707
+
2708
+ declare const otpInputVariants: (props?: ({
2709
+ size?: "sm" | "md" | "lg" | null | undefined;
2710
+ variant?: "outline" | "underline" | "filled" | null | undefined;
2711
+ invalid?: boolean | null | undefined;
2712
+ } & ClassProp) | undefined) => string;
2713
+ export { otpInputVariants }
2714
+ export { otpInputVariants as otpInputVariants_alias_1 }
2715
+ export { otpInputVariants as otpInputVariants_alias_2 }
2716
+
2474
2717
  declare const Overlay: {
2475
2718
  Dialog: typeof Dialog;
2476
2719
  Tooltip: typeof Tooltip;
@@ -2540,6 +2783,13 @@ export { panelVariants }
2540
2783
  export { panelVariants as panelVariants_alias_1 }
2541
2784
  export { panelVariants as panelVariants_alias_2 }
2542
2785
 
2786
+ /**
2787
+ * Parse Markdown to HTML using marked.
2788
+ * Returns synchronously; marked v12+ may return Promise for async renderers,
2789
+ * but the default renderer is synchronous with no async extensions.
2790
+ */
2791
+ export declare function parseMarkdown(md: string): string;
2792
+
2543
2793
  declare function PieChart({ data, donut, donutThickness, startAngle, padAngle, labelType, centerLabel, centerSubLabel, explodeOnHover, explodeOffset, title, height, className, legend, legendPosition, animateOnMount, emptyText, }: PieChartProps): JSX.Element;
2544
2794
  export { PieChart }
2545
2795
  export { PieChart as PieChart_alias_1 }
@@ -2605,6 +2855,9 @@ declare const Primitives: {
2605
2855
  AvatarGroup: typeof AvatarGroup;
2606
2856
  Slider: typeof Slider;
2607
2857
  SliderRange: typeof SliderRange;
2858
+ Rating: typeof Rating;
2859
+ Kbd: typeof Kbd;
2860
+ KbdGroup: typeof KbdGroup;
2608
2861
  };
2609
2862
  export { Primitives }
2610
2863
  export { Primitives as Primitives_alias_1 }
@@ -2708,8 +2961,66 @@ export { radioVariants }
2708
2961
  export { radioVariants as radioVariants_alias_1 }
2709
2962
  export { radioVariants as radioVariants_alias_2 }
2710
2963
 
2964
+ declare function Rating({ value: controlledValue, defaultValue, max, size, intent, precision, readOnly, disabled, onChange, icon, emptyIcon, label, className, }: RatingProps): JSX.Element;
2965
+ export { Rating }
2966
+ export { Rating as Rating_alias_1 }
2967
+ export { Rating as Rating_alias_2 }
2968
+ export { Rating as Rating_alias_3 }
2969
+
2970
+ declare type RatingIntent = "warning" | "danger" | "success" | "primary";
2971
+ export { RatingIntent }
2972
+ export { RatingIntent as RatingIntent_alias_1 }
2973
+ export { RatingIntent as RatingIntent_alias_2 }
2974
+ export { RatingIntent as RatingIntent_alias_3 }
2975
+
2976
+ declare interface RatingProps {
2977
+ value?: number;
2978
+ defaultValue?: number;
2979
+ max?: number;
2980
+ size?: RatingSize;
2981
+ intent?: RatingIntent;
2982
+ precision?: 0.5 | 1;
2983
+ readOnly?: boolean;
2984
+ disabled?: boolean;
2985
+ onChange?: (value: number) => void;
2986
+ icon?: React_2.ReactNode;
2987
+ emptyIcon?: React_2.ReactNode;
2988
+ label?: string;
2989
+ className?: string;
2990
+ }
2991
+ export { RatingProps }
2992
+ export { RatingProps as RatingProps_alias_1 }
2993
+ export { RatingProps as RatingProps_alias_2 }
2994
+ export { RatingProps as RatingProps_alias_3 }
2995
+
2996
+ declare type RatingSize = "sm" | "md" | "lg";
2997
+ export { RatingSize }
2998
+ export { RatingSize as RatingSize_alias_1 }
2999
+ export { RatingSize as RatingSize_alias_2 }
3000
+ export { RatingSize as RatingSize_alias_3 }
3001
+
3002
+ declare const ratingVariants: (props?: ({
3003
+ size?: "sm" | "md" | "lg" | null | undefined;
3004
+ } & ClassProp) | undefined) => string;
3005
+ export { ratingVariants }
3006
+ export { ratingVariants as ratingVariants_alias_1 }
3007
+ export { ratingVariants as ratingVariants_alias_2 }
3008
+
2711
3009
  declare function removeAlert(id: string): void;
2712
3010
 
3011
+ /**
3012
+ * Parse Markdown to sanitised HTML, safe for use with `dangerouslySetInnerHTML`.
3013
+ *
3014
+ * - Uses a local `Marked` instance (does not touch the global singleton).
3015
+ * - Images are wrapped in a `<figure>` with a hidden error-state overlay.
3016
+ * - The output is sanitised with a lightweight allowlist approach.
3017
+ */
3018
+ export declare function renderMarkdown(text: string): string;
3019
+
3020
+ export declare const ResizableImage: Node_2<ImageOptions, any>;
3021
+
3022
+ export declare const ResizableVideo: Node_2<any, any>;
3023
+
2713
3024
  declare function RibbonBar({ tabs, defaultTab, activeTab: controlledTab, onTabChange, mode: controlledMode, onModeChange, sticky, className, }: RibbonBarProps): JSX.Element;
2714
3025
  export { RibbonBar }
2715
3026
  export { RibbonBar as RibbonBar_alias_1 }
@@ -2752,6 +3063,8 @@ export { RibbonGroup as RibbonGroup_alias_1 }
2752
3063
  export { RibbonGroup as RibbonGroup_alias_2 }
2753
3064
  export { RibbonGroup as RibbonGroup_alias_3 }
2754
3065
  export { RibbonGroup as RibbonGroup_alias_4 }
3066
+ export { RibbonGroup as RibbonGroup_alias_5 }
3067
+ export { RibbonGroup as RibbonGroup_alias_6 }
2755
3068
 
2756
3069
  declare interface RibbonItem {
2757
3070
  key: string;
@@ -2771,6 +3084,8 @@ export { RibbonItem as RibbonItem_alias_1 }
2771
3084
  export { RibbonItem as RibbonItem_alias_2 }
2772
3085
  export { RibbonItem as RibbonItem_alias_3 }
2773
3086
  export { RibbonItem as RibbonItem_alias_4 }
3087
+ export { RibbonItem as RibbonItem_alias_5 }
3088
+ export { RibbonItem as RibbonItem_alias_6 }
2774
3089
 
2775
3090
  declare type RibbonMode = "full" | "compact" | "icons";
2776
3091
  export { RibbonMode }
@@ -2794,6 +3109,190 @@ export { RibbonTab as RibbonTab_alias_1 }
2794
3109
  export { RibbonTab as RibbonTab_alias_2 }
2795
3110
  export { RibbonTab as RibbonTab_alias_3 }
2796
3111
  export { RibbonTab as RibbonTab_alias_4 }
3112
+ export { RibbonTab as RibbonTab_alias_5 }
3113
+ export { RibbonTab as RibbonTab_alias_6 }
3114
+
3115
+ /** Built-in tab keys for use with extraRibbonGroups. */
3116
+ declare type RichEditorBuiltInTabKey = "home" | "insert" | "format";
3117
+ export { RichEditorBuiltInTabKey }
3118
+ export { RichEditorBuiltInTabKey as RichEditorBuiltInTabKey_alias_1 }
3119
+ export { RichEditorBuiltInTabKey as RichEditorBuiltInTabKey_alias_2 }
3120
+
3121
+ declare type RichEditorMode = "richtext" | "markdown";
3122
+ export { RichEditorMode }
3123
+ export { RichEditorMode as RichEditorMode_alias_1 }
3124
+ export { RichEditorMode as RichEditorMode_alias_2 }
3125
+ export { RichEditorMode as RichEditorMode_alias_3 }
3126
+
3127
+ declare const RichTextEditor: React_2.ForwardRefExoticComponent<RichTextEditorProps & React_2.RefAttributes<RichTextEditorHandle>>;
3128
+ export { RichTextEditor }
3129
+ export { RichTextEditor as RichTextEditor_alias_1 }
3130
+ export { RichTextEditor as RichTextEditor_alias_2 }
3131
+ export { RichTextEditor as RichTextEditor_alias_3 }
3132
+
3133
+ declare interface RichTextEditorHandle {
3134
+ /** Returns HTML when in richtext mode, raw Markdown when in markdown mode. */
3135
+ getContent: () => string;
3136
+ /** The currently active editor mode. */
3137
+ getMode: () => RichEditorMode;
3138
+ getHTML: () => string;
3139
+ getMarkdown: () => string;
3140
+ getJSON: () => object;
3141
+ getText: () => string;
3142
+ setHTML: (html: string) => void;
3143
+ setMarkdown: (md: string) => void;
3144
+ setJSON: (json: object) => void;
3145
+ clear: () => void;
3146
+ focus: () => void;
3147
+ blur: () => void;
3148
+ }
3149
+ export { RichTextEditorHandle }
3150
+ export { RichTextEditorHandle as RichTextEditorHandle_alias_1 }
3151
+ export { RichTextEditorHandle as RichTextEditorHandle_alias_2 }
3152
+ export { RichTextEditorHandle as RichTextEditorHandle_alias_3 }
3153
+
3154
+ /**
3155
+ * All user-visible strings in the RichTextEditor ribbon bar.
3156
+ * Pass a partial record to override only the strings you need.
3157
+ *
3158
+ * Keys follow the pattern:
3159
+ * - tab_<tabKey> → tab header label
3160
+ * - group_<groupKey> → group header label
3161
+ * - <buttonKey> → button label
3162
+ */
3163
+ declare interface RichTextEditorLabels {
3164
+ tab_home: string;
3165
+ tab_insert: string;
3166
+ tab_format: string;
3167
+ group_clipboard: string;
3168
+ undo: string;
3169
+ redo: string;
3170
+ group_text: string;
3171
+ bold: string;
3172
+ italic: string;
3173
+ underline: string;
3174
+ strikethrough: string;
3175
+ group_headings: string;
3176
+ h1: string;
3177
+ h2: string;
3178
+ h3: string;
3179
+ paragraph: string;
3180
+ group_alignment: string;
3181
+ alignLeft: string;
3182
+ alignCenter: string;
3183
+ alignRight: string;
3184
+ alignJustify: string;
3185
+ group_lists: string;
3186
+ bulletList: string;
3187
+ orderedList: string;
3188
+ save: string;
3189
+ group_media: string;
3190
+ image: string;
3191
+ /** Label for the generic video/embed insert button (YouTube, Vimeo, Bilibili, mp4…). */
3192
+ video: string;
3193
+ /** @deprecated renamed to `video`; kept for backward compatibility */
3194
+ youtube: string;
3195
+ group_content: string;
3196
+ link: string;
3197
+ table: string;
3198
+ codeBlock: string;
3199
+ blockquote: string;
3200
+ divider: string;
3201
+ group_style: string;
3202
+ color: string;
3203
+ highlight: string;
3204
+ subscript: string;
3205
+ superscript: string;
3206
+ group_reset: string;
3207
+ clear: string;
3208
+ group_table_rows: string;
3209
+ addRowBefore: string;
3210
+ addRowAfter: string;
3211
+ deleteRow: string;
3212
+ group_table_cols: string;
3213
+ addColBefore: string;
3214
+ addColAfter: string;
3215
+ deleteColumn: string;
3216
+ group_table_cells: string;
3217
+ mergeCells: string;
3218
+ splitCell: string;
3219
+ deleteTable: string;
3220
+ }
3221
+ export { RichTextEditorLabels }
3222
+ export { RichTextEditorLabels as RichTextEditorLabels_alias_1 }
3223
+ export { RichTextEditorLabels as RichTextEditorLabels_alias_2 }
3224
+
3225
+ declare interface RichTextEditorProps extends RichTextEditorRibbonProps {
3226
+ /** Editor mode: richtext (WYSIWYG) or markdown (plain text source) */
3227
+ mode?: RichEditorMode;
3228
+ defaultMode?: RichEditorMode;
3229
+ onModeChange?: (mode: RichEditorMode) => void;
3230
+ /** Whether live preview pane is visible. Default: false (OFF) */
3231
+ showPreview?: boolean;
3232
+ /** Uncontrolled default preview visibility. Default: false */
3233
+ defaultShowPreview?: boolean;
3234
+ /** Called when preview toggle changes */
3235
+ onPreviewChange?: (show: boolean) => void;
3236
+ /** Initial HTML or Markdown content */
3237
+ defaultValue?: string;
3238
+ /** Controlled content value */
3239
+ value?: string;
3240
+ /** Called on every content change */
3241
+ onChange?: (value: {
3242
+ html: string;
3243
+ markdown: string;
3244
+ json: object;
3245
+ text: string;
3246
+ }) => void;
3247
+ /**
3248
+ * Called when the user presses Cmd/Ctrl+S or clicks the Save ribbon button.
3249
+ * `content` is the current editor content in the active `mode`:
3250
+ * HTML string for "richtext", raw Markdown string for "markdown".
3251
+ */
3252
+ onSave?: (content: string, mode: RichEditorMode) => void;
3253
+ placeholder?: string;
3254
+ readOnly?: boolean;
3255
+ height?: number | string;
3256
+ minHeight?: number | string;
3257
+ maxHeight?: number | string;
3258
+ showWordCount?: boolean;
3259
+ showCharCount?: boolean;
3260
+ /** If provided, called on image paste/upload; return public URL. Default: base64 inline */
3261
+ onImageUpload?: (file: File) => Promise<string>;
3262
+ allowedImageTypes?: string[];
3263
+ maxImageSize?: number;
3264
+ autoFocus?: boolean;
3265
+ spellCheck?: boolean;
3266
+ className?: string;
3267
+ style?: React_2.CSSProperties;
3268
+ /**
3269
+ * Override any ribbon button / group / tab label for internationalisation.
3270
+ * Unspecified keys fall back to the built-in English defaults.
3271
+ */
3272
+ labels?: Partial<RichTextEditorLabels>;
3273
+ }
3274
+ export { RichTextEditorProps }
3275
+ export { RichTextEditorProps as RichTextEditorProps_alias_1 }
3276
+ export { RichTextEditorProps as RichTextEditorProps_alias_2 }
3277
+ export { RichTextEditorProps as RichTextEditorProps_alias_3 }
3278
+
3279
+ /**
3280
+ * Inject extra groups into built-in ribbon tabs or supply entirely new tabs.
3281
+ */
3282
+ declare interface RichTextEditorRibbonProps {
3283
+ /**
3284
+ * Extra `RibbonGroup[]` to append to built-in ribbon tabs.
3285
+ * Key is the built-in tab key ("home" | "insert" | "format").
3286
+ */
3287
+ extraRibbonGroups?: Partial<Record<RichEditorBuiltInTabKey, RibbonGroup[]>>;
3288
+ /**
3289
+ * Additional ribbon tabs appended after the built-in tabs.
3290
+ */
3291
+ extraRibbonTabs?: RibbonTab[];
3292
+ }
3293
+ export { RichTextEditorRibbonProps }
3294
+ export { RichTextEditorRibbonProps as RichTextEditorRibbonProps_alias_1 }
3295
+ export { RichTextEditorRibbonProps as RichTextEditorRibbonProps_alias_2 }
2797
3296
 
2798
3297
  declare function ScatterChart({ series, xAxis, yAxis, dotRadius, dotOpacity, clusters, jitter, jitterAmount, linkedLines, title, height, className, legend, legendPosition, animateOnMount, emptyText, }: ScatterChartProps): JSX.Element;
2799
3298
  export { ScatterChart }
@@ -2824,6 +3323,17 @@ export { ScatterChartProps }
2824
3323
  export { ScatterChartProps as ScatterChartProps_alias_1 }
2825
3324
  export { ScatterChartProps as ScatterChartProps_alias_2 }
2826
3325
 
3326
+ export declare const SearchExtension: Extension<any, any>;
3327
+
3328
+ export declare const searchPluginKey: PluginKey<SearchState>;
3329
+
3330
+ export declare interface SearchState {
3331
+ query: string;
3332
+ caseSensitive: boolean;
3333
+ currentIndex: number;
3334
+ matches: TextMatch[];
3335
+ }
3336
+
2827
3337
  export declare function Section({ title, children }: {
2828
3338
  title: string;
2829
3339
  children: React_2.ReactNode;
@@ -3137,6 +3647,116 @@ export { spinVariants }
3137
3647
  export { spinVariants as spinVariants_alias_1 }
3138
3648
  export { spinVariants as spinVariants_alias_2 }
3139
3649
 
3650
+ /**
3651
+ * SplitPanel — VSCode-style resizable split-pane layout for desktop applications.
3652
+ *
3653
+ * - Supports horizontal (side-by-side) and vertical (stacked) splits.
3654
+ * - Any number of panes; each can be independently shown or hidden.
3655
+ * - Drag handles with hover & active visual feedback.
3656
+ * - Keyboard resize (arrow keys) for accessibility.
3657
+ * - Optional localStorage persistence via `autoSaveId`.
3658
+ * - Data-driven via the `panes` prop + controlled `visibility` map.
3659
+ */
3660
+ declare function SplitPanel({ direction, panes, visibility, onVisibilityChange, width, height, handleSize, defaultBackground, autoSaveId, onResizeEnd, className, style, }: SplitPanelProps): JSX.Element;
3661
+ export { SplitPanel }
3662
+ export { SplitPanel as SplitPanel_alias_1 }
3663
+ export { SplitPanel as SplitPanel_alias_2 }
3664
+ export { SplitPanel as SplitPanel_alias_3 }
3665
+
3666
+ /**
3667
+ * Configuration for a single pane inside SplitPanel.
3668
+ */
3669
+ declare interface SplitPanelPane {
3670
+ /** Unique identifier used to key the pane and track visibility/sizes. */
3671
+ id: string;
3672
+ /**
3673
+ * Initial size in pixels when the pane has no persisted size.
3674
+ * Panes without a `defaultSize` share remaining container space equally.
3675
+ */
3676
+ defaultSize?: number;
3677
+ /** Minimum size in pixels. The pane cannot be dragged smaller than this. Default: 48. */
3678
+ minSize?: number;
3679
+ /** Maximum size in pixels. The pane cannot be dragged larger than this. Default: unlimited. */
3680
+ maxSize?: number;
3681
+ /**
3682
+ * CSS background color for this pane.
3683
+ * Overrides the container-level `defaultBackground`.
3684
+ * Accepts any valid CSS color value.
3685
+ */
3686
+ background?: string;
3687
+ /** Additional CSS class names applied to this pane's wrapper element. */
3688
+ className?: string;
3689
+ /** Inline style overrides for this pane's wrapper element. */
3690
+ style?: React_2.CSSProperties;
3691
+ /** Pane content. */
3692
+ children?: React_2.ReactNode;
3693
+ }
3694
+ export { SplitPanelPane }
3695
+ export { SplitPanelPane as SplitPanelPane_alias_1 }
3696
+ export { SplitPanelPane as SplitPanelPane_alias_2 }
3697
+ export { SplitPanelPane as SplitPanelPane_alias_3 }
3698
+ export { SplitPanelPane as SplitPanelPane_alias_4 }
3699
+
3700
+ /**
3701
+ * Props for the SplitPanel component.
3702
+ */
3703
+ declare interface SplitPanelProps {
3704
+ /**
3705
+ * Controls whether panes are arranged side-by-side (`"horizontal"`) or
3706
+ * stacked top-to-bottom (`"vertical"`). Default: `"horizontal"`.
3707
+ */
3708
+ direction?: "horizontal" | "vertical";
3709
+ /**
3710
+ * Pane definitions. Order determines visual order left-to-right (horizontal)
3711
+ * or top-to-bottom (vertical).
3712
+ */
3713
+ panes: SplitPanelPane[];
3714
+ /**
3715
+ * Controlled visibility map `{ [paneId]: boolean }`.
3716
+ * Omitted or `true` → visible. `false` → the pane is removed from layout
3717
+ * and its space is redistributed to its neighbours.
3718
+ */
3719
+ visibility?: Record<string, boolean>;
3720
+ /**
3721
+ * Fires when the component wants to toggle a pane.
3722
+ * (Reserved for future imperative toggle APIs — the consumer drives state.)
3723
+ */
3724
+ onVisibilityChange?: (id: string, visible: boolean) => void;
3725
+ /** Container width. Default: `"100%"`. Accepts CSS length strings or numbers (px). */
3726
+ width?: string | number;
3727
+ /** Container height. Default: `"100%"`. Accepts CSS length strings or numbers (px). */
3728
+ height?: string | number;
3729
+ /**
3730
+ * Visual thickness of the resize divider bar in pixels. Default: 4.
3731
+ * The interactive hit-area is always ≥ 8 px for usability.
3732
+ */
3733
+ handleSize?: number;
3734
+ /**
3735
+ * Default background color applied to every pane unless the pane defines
3736
+ * its own `background`. Accepts any CSS color value.
3737
+ */
3738
+ defaultBackground?: string;
3739
+ /**
3740
+ * When provided, each pane's pixel size is persisted under
3741
+ * `localStorage["onyx-split:<autoSaveId>"]` and restored on re-mount.
3742
+ */
3743
+ autoSaveId?: string;
3744
+ /**
3745
+ * Called after the user finishes a resize drag interaction.
3746
+ * Receives a snapshot of all pane sizes (visible and hidden) in pixels.
3747
+ */
3748
+ onResizeEnd?: (sizes: Record<string, number>) => void;
3749
+ /** Additional CSS class names for the container element. */
3750
+ className?: string;
3751
+ /** Inline style overrides for the container element. */
3752
+ style?: React_2.CSSProperties;
3753
+ }
3754
+ export { SplitPanelProps }
3755
+ export { SplitPanelProps as SplitPanelProps_alias_1 }
3756
+ export { SplitPanelProps as SplitPanelProps_alias_2 }
3757
+ export { SplitPanelProps as SplitPanelProps_alias_3 }
3758
+ export { SplitPanelProps as SplitPanelProps_alias_4 }
3759
+
3140
3760
  declare function Stat({ title, value, prefix, suffix, icon, trend, trendValue, description, intent, size, className, }: StatProps): JSX.Element;
3141
3761
  export { Stat }
3142
3762
  export { Stat as Stat_alias_1 }
@@ -3384,6 +4004,11 @@ export { TextBoxProps }
3384
4004
  export { TextBoxProps as TextBoxProps_alias_1 }
3385
4005
  export { TextBoxProps as TextBoxProps_alias_2 }
3386
4006
 
4007
+ export declare interface TextMatch {
4008
+ from: number;
4009
+ to: number;
4010
+ }
4011
+
3387
4012
  declare function Timeline({ items, orientation, activeIndex, animated, lineStyle, className, }: TimelineProps): JSX.Element;
3388
4013
  export { Timeline }
3389
4014
  export { Timeline as Timeline_alias_1 }
@@ -3654,7 +4279,7 @@ declare type TreeProps = React_2.HTMLAttributes<HTMLUListElement> & {
3654
4279
  * - Waiting (stream mode, `streaming=true`): blinking cursor after catching up.
3655
4280
  * - Done: cursor fades out.
3656
4281
  */
3657
- declare function TypewriterText({ text, mode, speed, cursor, cursorChar, thinking, streaming, delay, onComplete, as: Tag, className, }: TypewriterTextProps): JSX.Element;
4282
+ declare function TypewriterText({ text, mode, speed, cursor, cursorChar, thinking, streaming, delay, onComplete, as: Tag, className, rich, }: TypewriterTextProps): JSX.Element;
3658
4283
  export { TypewriterText }
3659
4284
  export { TypewriterText as TypewriterText_alias_1 }
3660
4285
  export { TypewriterText as TypewriterText_alias_2 }
@@ -3695,6 +4320,14 @@ declare interface TypewriterTextProps {
3695
4320
  /** HTML element to render as. @default "span" */
3696
4321
  as?: "span" | "div" | "p" | "pre" | "code" | "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "label" | "li";
3697
4322
  className?: string;
4323
+ /**
4324
+ * Enable Markdown / HTML rendering.
4325
+ * When `true`, the animated text is parsed as Markdown and rendered as HTML.
4326
+ * Images are displayed as `<img>` blocks with a fade-in animation.
4327
+ * The wrapper element is always `<div role="region">`, regardless of the `as` prop.
4328
+ * @default false
4329
+ */
4330
+ rich?: boolean;
3698
4331
  }
3699
4332
  export { TypewriterTextProps }
3700
4333
  export { TypewriterTextProps as TypewriterTextProps_alias_1 }
@@ -3767,6 +4400,21 @@ export declare function usePositioning(anchorRef: {
3767
4400
  readonly current: HTMLElement | null;
3768
4401
  }, isOpen: boolean): void;
3769
4402
 
4403
+ export declare function useRichEditor(options: UseRichEditorOptions): Editor;
4404
+
4405
+ export declare interface UseRichEditorOptions {
4406
+ defaultValue?: string;
4407
+ placeholder?: string;
4408
+ readOnly?: boolean;
4409
+ autoFocus?: boolean;
4410
+ onChange?: (value: {
4411
+ html: string;
4412
+ markdown: string;
4413
+ json: object;
4414
+ text: string;
4415
+ }) => void;
4416
+ }
4417
+
3770
4418
  export declare function useScrollColumn(containerRef: React.RefObject<HTMLDivElement | null>, count: number, onSelectIndex: (idx: number) => void): {
3771
4419
  scrollToIndex: (index: number, behavior?: "smooth" | "instant" | "auto") => void;
3772
4420
  handleScroll: () => void;
@@ -3782,6 +4430,35 @@ export { useSpin }
3782
4430
  export { useSpin as useSpin_alias_1 }
3783
4431
  export { useSpin as useSpin_alias_2 }
3784
4432
 
4433
+ export declare function useSplitPanel({ panes, direction, containerRef, visibility, autoSaveId, onResizeEnd, }: UseSplitPanelOptions): UseSplitPanelReturn;
4434
+
4435
+ export declare interface UseSplitPanelOptions {
4436
+ panes: SplitPanelPane[];
4437
+ direction: "horizontal" | "vertical";
4438
+ containerRef: RefObject<HTMLDivElement | null>;
4439
+ visibility: Record<string, boolean>;
4440
+ autoSaveId?: string;
4441
+ onResizeEnd?: (sizes: Record<string, number>) => void;
4442
+ }
4443
+
4444
+ export declare interface UseSplitPanelReturn {
4445
+ /** Current px sizes for every pane, keyed by id. */
4446
+ sizes: Record<string, number>;
4447
+ /** Index of the handle currently being dragged, or null. */
4448
+ activeHandleIndex: number | null;
4449
+ /**
4450
+ * Build pointer-event handlers for interacting with a specific resize handle.
4451
+ * `handleIndex` is the index within the *visible* pane array —
4452
+ * the handle sits between visiblePanes[handleIndex] and visiblePanes[handleIndex + 1].
4453
+ */
4454
+ buildHandlers: (handleIndex: number, paneA: SplitPanelPane, paneB: SplitPanelPane) => {
4455
+ onPointerDown: (e: React.PointerEvent<HTMLDivElement>) => void;
4456
+ onPointerMove: (e: React.PointerEvent<HTMLDivElement>) => void;
4457
+ onPointerUp: (e: React.PointerEvent<HTMLDivElement>) => void;
4458
+ onKeyDown: (e: React.KeyboardEvent<HTMLDivElement>) => void;
4459
+ };
4460
+ }
4461
+
3785
4462
  /**
3786
4463
  * useToast — hook for triggering toasts from anywhere inside a <ToastProvider>.
3787
4464
  * Throws if called outside of a ToastProvider.
@@ -3803,6 +4480,18 @@ export declare function useToastManager(defaultPosition: ToastPosition, defaultD
3803
4480
  dismissAll: () => void;
3804
4481
  };
3805
4482
 
4483
+ export declare function useVirtualList<T>(props: VirtualListProps<T>, handleRef: Ref<VirtualListHandle>): UseVirtualListReturn;
4484
+
4485
+ export declare interface UseVirtualListReturn {
4486
+ scrollerRef: React.RefObject<HTMLDivElement | null>;
4487
+ startIndex: number;
4488
+ endIndex: number;
4489
+ totalSize: number;
4490
+ getItemOffset: (index: number) => number;
4491
+ getItemSize: (index: number) => number;
4492
+ measureItem: (index: number, el: Element | null) => void;
4493
+ }
4494
+
3806
4495
  /** Callback type for FormItem's `onValidate` prop. */
3807
4496
  declare type ValidateCallback = (value: unknown) => ValidationResult;
3808
4497
  export { ValidateCallback }
@@ -3818,4 +4507,157 @@ export { ValidationResult }
3818
4507
  export { ValidationResult as ValidationResult_alias_1 }
3819
4508
  export { ValidationResult as ValidationResult_alias_2 }
3820
4509
 
4510
+ /**
4511
+ * `VirtualList` renders only the visible slice of a (potentially enormous) dataset,
4512
+ * keeping DOM node count constant regardless of `items.length`.
4513
+ *
4514
+ * Supports **fixed-height** rows (O(1) offset lookup), **variable-height** rows
4515
+ * (auto-measured via `ResizeObserver`), **horizontal** axis, **infinite scroll**,
4516
+ * **scroll-to-index**, and **scroll restoration** out of the box.
4517
+ *
4518
+ * Drop it into any container — `Panel`, `SplitPanel`, `Card`, a bare `div` — and it
4519
+ * fills the available space.
4520
+ *
4521
+ * @example
4522
+ * ```tsx
4523
+ * <VirtualList
4524
+ * items={myData}
4525
+ * itemHeight={48}
4526
+ * height={400}
4527
+ * renderItem={(item, i) => <Row key={i} item={item} />}
4528
+ * />
4529
+ * ```
4530
+ */
4531
+ declare const VirtualList: <T>(props: VirtualListProps<T> & React_2.RefAttributes<VirtualListHandle>) => React_2.ReactElement;
4532
+ export { VirtualList }
4533
+ export { VirtualList as VirtualList_alias_1 }
4534
+ export { VirtualList as VirtualList_alias_2 }
4535
+ export { VirtualList as VirtualList_alias_3 }
4536
+
4537
+ /**
4538
+ * Alignment hint for `scrollToIndex`.
4539
+ * - `"start"` — item top/left aligns with viewport start
4540
+ * - `"end"` — item bottom/right aligns with viewport end
4541
+ * - `"center"` — item is centered in the viewport
4542
+ * - `"auto"` — minimal scroll to bring the item into view (default)
4543
+ */
4544
+ declare type VirtualListAlign = "start" | "center" | "end" | "auto";
4545
+ export { VirtualListAlign }
4546
+ export { VirtualListAlign as VirtualListAlign_alias_1 }
4547
+ export { VirtualListAlign as VirtualListAlign_alias_2 }
4548
+ export { VirtualListAlign as VirtualListAlign_alias_3 }
4549
+
4550
+ /** Scroll axis for the virtual list. */
4551
+ declare type VirtualListDirection = "vertical" | "horizontal";
4552
+ export { VirtualListDirection }
4553
+ export { VirtualListDirection as VirtualListDirection_alias_1 }
4554
+ export { VirtualListDirection as VirtualListDirection_alias_2 }
4555
+ export { VirtualListDirection as VirtualListDirection_alias_3 }
4556
+
4557
+ /** Imperative handle exposed via `ref` on `<VirtualList>`. */
4558
+ declare interface VirtualListHandle {
4559
+ /** Scroll to bring item at `index` into view at the specified alignment. */
4560
+ scrollToIndex: (index: number, align?: VirtualListAlign) => void;
4561
+ /** Jump to an exact pixel offset (smooth by default). */
4562
+ scrollToOffset: (offset: number) => void;
4563
+ /** Returns the current scroll offset in pixels. */
4564
+ getScrollOffset: () => number;
4565
+ }
4566
+ export { VirtualListHandle }
4567
+ export { VirtualListHandle as VirtualListHandle_alias_1 }
4568
+ export { VirtualListHandle as VirtualListHandle_alias_2 }
4569
+ export { VirtualListHandle as VirtualListHandle_alias_3 }
4570
+
4571
+ declare interface VirtualListProps<T = unknown> {
4572
+ /** Dataset to virtualise. Change the reference to swap/extend data. */
4573
+ items: T[];
4574
+ /**
4575
+ * Returns a stable key for an item. Defaults to the item's array index.
4576
+ * Provide this whenever items can be reordered or inserted at arbitrary positions.
4577
+ */
4578
+ getItemKey?: (item: T, index: number) => string | number;
4579
+ /**
4580
+ * Render callback for each visible item.
4581
+ * The component wraps every item in an absolutely-positioned container, so
4582
+ * your element can fill 100 % of its wrapper without extra layout work.
4583
+ */
4584
+ renderItem: (item: T, index: number) => ReactNode;
4585
+ /**
4586
+ * Height (vertical) or width (horizontal) of each item in pixels.
4587
+ *
4588
+ * - **number** — fixed uniform size; fastest render path (O(1) offset lookup).
4589
+ * - **function** — variable per-item size; items are measured via
4590
+ * `ResizeObserver` after first render and the layout is corrected automatically.
4591
+ */
4592
+ itemHeight: number | ((item: T, index: number) => number);
4593
+ /**
4594
+ * Estimated size used as a placeholder before a variable-height item is
4595
+ * measured. Only relevant when `itemHeight` is a function.
4596
+ * A good estimate reduces layout shift on first render.
4597
+ * @default 48
4598
+ */
4599
+ estimatedItemHeight?: number;
4600
+ /** Viewport height (CSS value). Set to `"100%"` to fill a parent container. @default "100%" */
4601
+ height?: number | string;
4602
+ /** Viewport width (CSS value). @default "100%" */
4603
+ width?: number | string;
4604
+ direction?: VirtualListDirection;
4605
+ /**
4606
+ * Extra rows rendered outside the visible viewport on each side to reduce
4607
+ * white-flash during fast scroll. Higher values trade CPU/memory for smoothness.
4608
+ * @default 3
4609
+ */
4610
+ overscan?: number;
4611
+ /** Fired when the user scrolls within `reachEndThreshold` px of the end. */
4612
+ onReachEnd?: () => void;
4613
+ /**
4614
+ * Pixel distance from the scroll end that triggers `onReachEnd`.
4615
+ * @default 120
4616
+ */
4617
+ reachEndThreshold?: number;
4618
+ /** When `true` a loading indicator is shown at the bottom/right. */
4619
+ isLoading?: boolean;
4620
+ /** Custom loading indicator. Overrides the default spinner row entirely. */
4621
+ loadingRenderer?: () => ReactNode;
4622
+ /**
4623
+ * Text shown in the **default** loading indicator (when `loadingRenderer` is not provided).
4624
+ * @default "Loading…"
4625
+ */
4626
+ loadingText?: string;
4627
+ /** Rendered when `items` is empty. Overrides the default empty state entirely. */
4628
+ emptyRenderer?: () => ReactNode;
4629
+ /**
4630
+ * Text shown in the **default** empty-state indicator (when `emptyRenderer` is not provided).
4631
+ * @default "No items"
4632
+ */
4633
+ emptyText?: string;
4634
+ /**
4635
+ * When provided the scroll position is persisted to `localStorage` under
4636
+ * the key `"onyx-vlist:<scrollRestorationId>"` and restored on mount.
4637
+ */
4638
+ scrollRestorationId?: string;
4639
+ /** Called on every scroll event with the current pixel offset. */
4640
+ onScroll?: (offset: number) => void;
4641
+ /**
4642
+ * Called whenever the set of *visually* visible items changes.
4643
+ * Indices exclude the overscan buffer.
4644
+ */
4645
+ onVisibleRangeChange?: (startIndex: number, endIndex: number) => void;
4646
+ className?: string;
4647
+ style?: CSSProperties;
4648
+ /**
4649
+ * Class name applied to every item's wrapper `<div>`. Use this to add
4650
+ * borders, hover states, or selection highlights without modifying each
4651
+ * rendered item.
4652
+ */
4653
+ itemClassName?: string;
4654
+ }
4655
+ export { VirtualListProps }
4656
+ export { VirtualListProps as VirtualListProps_alias_1 }
4657
+ export { VirtualListProps as VirtualListProps_alias_2 }
4658
+ export { VirtualListProps as VirtualListProps_alias_3 }
4659
+
4660
+ /** Return ids of panes that are currently visible. */
4661
+ export declare function visibleIds(panes: SplitPanelPane[], visibility: Record<string, boolean>): string[];
4662
+
3821
4663
  export { }