@scalably/ui 0.18.1 → 0.20.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.cts CHANGED
@@ -2253,7 +2253,7 @@ interface SelectProps extends SelectBaseProps {
2253
2253
  * />
2254
2254
  * ```
2255
2255
  */
2256
- declare const Select: react.ForwardRefExoticComponent<SelectProps & react.RefAttributes<HTMLButtonElement | HTMLSelectElement>>;
2256
+ declare const Select: react.ForwardRefExoticComponent<SelectProps & react.RefAttributes<HTMLSelectElement | HTMLButtonElement>>;
2257
2257
 
2258
2258
  type SkeletonVariant = "text" | "circle" | "rectangle";
2259
2259
  type SkeletonSize = "sm" | "md" | "lg";
@@ -3132,14 +3132,147 @@ interface LogoProps extends Omit<LogoAssetProps, "children"> {
3132
3132
  */
3133
3133
  declare const Logo: react.ForwardRefExoticComponent<LogoProps & react.RefAttributes<SVGSVGElement>>;
3134
3134
 
3135
+ interface LoadingMessageItem {
3136
+ /** The message text or React node */
3137
+ text: react__default.ReactNode;
3138
+ /** Optional custom duration in milliseconds for this specific message */
3139
+ duration?: number;
3140
+ /** Optional unique key or identifier */
3141
+ id?: string | number;
3142
+ }
3143
+ type LoadingMessagesProp = Array<react__default.ReactNode | LoadingMessageItem>;
3144
+ /**
3145
+ * Market-standard progressive loading messages for reassurance during long operations.
3146
+ */
3147
+ declare const DEFAULT_LOADING_MESSAGES: readonly ["Loading...", "Almost there...", "Still working on it, please hang tight..."];
3148
+ interface UseLoadingMessagesOptions {
3149
+ /** Single loading message */
3150
+ message?: react__default.ReactNode;
3151
+ /** Sequence of messages to cycle through */
3152
+ messages?: LoadingMessagesProp;
3153
+ /**
3154
+ * Whether to display DEFAULT_LOADING_MESSAGES when neither message nor messages is provided.
3155
+ * @default false
3156
+ */
3157
+ showDefaultMessages?: boolean;
3158
+ /**
3159
+ * Delay in milliseconds before the first message appears (loading graphic only).
3160
+ * @default 1500
3161
+ */
3162
+ initialDelay?: number;
3163
+ /**
3164
+ * Time in milliseconds each message stays before switching to the next.
3165
+ * @default 3000
3166
+ */
3167
+ interval?: number;
3168
+ /**
3169
+ * Whether to cycle back to the first message after reaching the end.
3170
+ * @default false
3171
+ */
3172
+ loop?: boolean;
3173
+ /**
3174
+ * Controlled message index. When specified, automatic timer is disabled.
3175
+ */
3176
+ currentMessageIndex?: number;
3177
+ /**
3178
+ * Signal value. Whenever this value changes, the sequence advances to the next message.
3179
+ */
3180
+ signal?: unknown;
3181
+ /**
3182
+ * Callback fired whenever the active message changes.
3183
+ */
3184
+ onMessageChange?: (index: number, message: react__default.ReactNode) => void;
3185
+ /**
3186
+ * Whether automatic timer-based message advancing is enabled.
3187
+ * @default true (unless currentMessageIndex is controlled)
3188
+ */
3189
+ autoAdvance?: boolean;
3190
+ /**
3191
+ * Duration in milliseconds for message exit animation before new message enters.
3192
+ * @default 180
3193
+ */
3194
+ transitionDuration?: number;
3195
+ }
3196
+ interface UseLoadingMessagesReturn {
3197
+ /** The active message to render (null if still in initialDelay or no messages) */
3198
+ currentMessage: react__default.ReactNode | null;
3199
+ /** The current active index (-1 if still in initialDelay or no messages) */
3200
+ currentIndex: number;
3201
+ /** Whether the initial delay has passed and a message should be visible */
3202
+ isMessageVisible: boolean;
3203
+ /** Whether the message is currently in exit transition */
3204
+ isTransitioning: boolean;
3205
+ /** Total count of configured messages */
3206
+ totalMessages: number;
3207
+ /** Normalized list of message texts */
3208
+ messageList: react__default.ReactNode[];
3209
+ /** Advance to next message */
3210
+ next: () => void;
3211
+ /** Go to previous message */
3212
+ prev: () => void;
3213
+ /** Jump to a specific message index */
3214
+ goTo: (index: number) => void;
3215
+ /** Reset to initial state */
3216
+ reset: () => void;
3217
+ }
3218
+ /**
3219
+ * Headless hook to manage loading messages with initial delay, auto-advancing intervals,
3220
+ * controlled indices, signal-driven triggers, and transition states.
3221
+ */
3222
+ declare function useLoadingMessages({ message, messages, showDefaultMessages, initialDelay, interval, loop, currentMessageIndex, signal, onMessageChange, autoAdvance, transitionDuration, }?: UseLoadingMessagesOptions): UseLoadingMessagesReturn;
3223
+
3135
3224
  interface LoadingScreenProps extends Omit<react__default.HTMLAttributes<HTMLDivElement>, "children"> {
3136
3225
  /**
3137
- * Optional loading message displayed below the logo.
3226
+ * Optional single loading message displayed below the logo.
3138
3227
  */
3139
- message?: string;
3228
+ message?: react__default.ReactNode;
3229
+ /**
3230
+ * Optional sequential loading messages to display below the logo.
3231
+ * Can be strings, React nodes, or objects with custom duration: `{ text: ReactNode, duration?: number }`.
3232
+ */
3233
+ messages?: LoadingMessagesProp;
3234
+ /**
3235
+ * Whether to display market-standard default messages when neither message nor messages is provided.
3236
+ * @default false
3237
+ */
3238
+ showDefaultMessages?: boolean;
3239
+ /**
3240
+ * Delay in milliseconds before displaying the first message.
3241
+ * During this delay, only the animated loading logo is displayed.
3242
+ * Set to 0 to show the message immediately on mount.
3243
+ * @default 1500
3244
+ */
3245
+ initialDelay?: number;
3246
+ /**
3247
+ * Time in milliseconds between sequential message transitions.
3248
+ * @default 3000
3249
+ */
3250
+ interval?: number;
3251
+ /**
3252
+ * Whether to loop back to the first message after reaching the end of messages.
3253
+ * @default false
3254
+ */
3255
+ loop?: boolean;
3256
+ /**
3257
+ * Controlled message index. When provided, timer-based auto-advancing is disabled,
3258
+ * allowing consumers to switch messages by step or external state.
3259
+ */
3260
+ currentMessageIndex?: number;
3261
+ /**
3262
+ * Signal value. Whenever this value changes, the sequence advances to the next message.
3263
+ */
3264
+ signal?: unknown;
3265
+ /**
3266
+ * Callback fired whenever the active message changes.
3267
+ */
3268
+ onMessageChange?: (index: number, message: react__default.ReactNode) => void;
3269
+ /**
3270
+ * Optional CSS class name for the message container.
3271
+ */
3272
+ messageClassName?: string;
3140
3273
  /**
3141
3274
  * Logo size in pixels. Responsive: smaller on mobile, larger on desktop.
3142
- * @default { mobile: 64, desktop: 80 }
3275
+ * @default { mobile: 64, desktop: 128 }
3143
3276
  */
3144
3277
  size?: number | {
3145
3278
  mobile: number;
@@ -3147,38 +3280,66 @@ interface LoadingScreenProps extends Omit<react__default.HTMLAttributes<HTMLDivE
3147
3280
  };
3148
3281
  /**
3149
3282
  * Accessible label for screen readers.
3150
- * Falls back to "Loading" or includes message if provided.
3283
+ * Falls back to "Loading: <message>" or "Loading".
3151
3284
  */
3152
3285
  "aria-label"?: string;
3153
3286
  }
3154
3287
  /**
3155
- * Full-screen loading overlay component with animated Scalably logo.
3288
+ * Full-screen loading overlay component with animated Scalably logo and sequential messaging.
3156
3289
  *
3157
3290
  * Features:
3158
3291
  * - Full-screen transparent overlay
3159
3292
  * - Animated logo with pulse and rotate combination
3160
- * - Optional loading message
3161
- * - Full accessibility support
3293
+ * - Progressive sequential reassurance messages with configurable initial delay and interval
3294
+ * - Controlled step-index and signal-driven message switching
3295
+ * - Smooth fade-in & slide transitions between messages
3296
+ * - Full accessibility support (role="status", aria-live="polite")
3162
3297
  * - Respects reduced motion preferences
3163
3298
  * - Mobile-first responsive design
3164
3299
  *
3165
3300
  * @example
3166
3301
  * ```tsx
3167
- * // Basic usage
3302
+ * // Basic usage with default progressive reassurance messages
3168
3303
  * <LoadingScreen />
3169
3304
  *
3170
- * // With message
3171
- * <LoadingScreen message="Loading your data..." />
3305
+ * // Immediate single message
3306
+ * <LoadingScreen message="Loading your data..." initialDelay={0} />
3172
3307
  *
3173
- * // With backdrop blur via className
3174
- * <LoadingScreen className="backdrop-blur-md" />
3308
+ * // Custom sequential messages
3309
+ * <LoadingScreen
3310
+ * messages={[
3311
+ * "Connecting to server...",
3312
+ * "Syncing your workspace...",
3313
+ * "Almost ready...",
3314
+ * ]}
3315
+ * initialDelay={1500}
3316
+ * interval={3000}
3317
+ * />
3175
3318
  *
3176
- * // Custom size
3177
- * <LoadingScreen size={{ mobile: 48, desktop: 96 }} />
3319
+ * // Signal-driven step switching
3320
+ * <LoadingScreen
3321
+ * messages={["Uploading files...", "Processing...", "Ready!"]}
3322
+ * currentMessageIndex={uploadStep}
3323
+ * />
3178
3324
  * ```
3179
3325
  */
3180
3326
  declare const LoadingScreen: react__default.ForwardRefExoticComponent<LoadingScreenProps & react__default.RefAttributes<HTMLDivElement>>;
3181
3327
 
3328
+ interface LoadingMessageProps extends react__default.HTMLAttributes<HTMLDivElement> {
3329
+ /** The message text or React node to display */
3330
+ message: react__default.ReactNode;
3331
+ /** Whether the message is currently animating out */
3332
+ isTransitioning?: boolean;
3333
+ /** HTML element to render */
3334
+ as?: "div" | "p" | "span";
3335
+ }
3336
+ /**
3337
+ * Animated presentation component for loading messages.
3338
+ * Handles entering and exiting animations and screen-reader accessibility.
3339
+ */
3340
+ declare const LoadingMessage: react__default.ForwardRefExoticComponent<LoadingMessageProps & react__default.RefAttributes<HTMLDivElement>>;
3341
+
3342
+ type LoadingSpinnerMessagePlacement = "bottom" | "right" | "top" | "left";
3182
3343
  interface LoadingSpinnerProps extends Omit<react__default.HTMLAttributes<HTMLDivElement>, "children"> {
3183
3344
  /**
3184
3345
  * Size of the spinner in pixels.
@@ -3190,38 +3351,88 @@ interface LoadingSpinnerProps extends Omit<react__default.HTMLAttributes<HTMLDiv
3190
3351
  * @default "Loading"
3191
3352
  */
3192
3353
  "aria-label"?: string;
3354
+ /**
3355
+ * Optional single loading message displayed alongside the spinner.
3356
+ */
3357
+ message?: react__default.ReactNode;
3358
+ /**
3359
+ * Optional sequential loading messages to display alongside the spinner.
3360
+ */
3361
+ messages?: LoadingMessagesProp;
3362
+ /**
3363
+ * Whether to display market-standard default messages when neither message nor messages is provided.
3364
+ * Defaults to false to prevent unexpected text inside compact inline button spinners.
3365
+ * @default false
3366
+ */
3367
+ showDefaultMessages?: boolean;
3368
+ /**
3369
+ * Delay in milliseconds before displaying the first message.
3370
+ * During this delay, only the spinner is displayed.
3371
+ * Set to 0 to show message immediately on mount.
3372
+ * @default 1500
3373
+ */
3374
+ initialDelay?: number;
3375
+ /**
3376
+ * Time in milliseconds between sequential message transitions.
3377
+ * @default 3000
3378
+ */
3379
+ interval?: number;
3380
+ /**
3381
+ * Whether to loop back to the first message after reaching the end.
3382
+ * @default false
3383
+ */
3384
+ loop?: boolean;
3385
+ /**
3386
+ * Controlled message index to switch messages by step/signal rather than time.
3387
+ */
3388
+ currentMessageIndex?: number;
3389
+ /**
3390
+ * Signal value. Whenever this value changes, advances to the next message.
3391
+ */
3392
+ signal?: unknown;
3393
+ /**
3394
+ * Callback fired whenever the active message changes.
3395
+ */
3396
+ onMessageChange?: (index: number, message: react__default.ReactNode) => void;
3397
+ /**
3398
+ * Placement of the message relative to the spinner.
3399
+ * @default "bottom"
3400
+ */
3401
+ messagePlacement?: LoadingSpinnerMessagePlacement;
3402
+ /**
3403
+ * Optional CSS class name for the message container.
3404
+ */
3405
+ messageClassName?: string;
3193
3406
  }
3194
3407
  /**
3195
- * Inline loading spinner component with animated Scalably logo.
3408
+ * Inline loading spinner component with animated Scalably logo and optional progressive messaging.
3196
3409
  *
3197
3410
  * Features:
3198
- * - Compact spinner for inline use (buttons, cards, tables, etc.)
3411
+ * - Compact spinner for inline use (buttons, cards, tables, sections)
3199
3412
  * - Animated logo with pulse and rotate combination
3413
+ * - Optional single or sequential message with configurable delay & transitions
3414
+ * - Configurable message placement (default: "bottom")
3200
3415
  * - Full accessibility support
3201
3416
  * - Respects reduced motion preferences
3202
3417
  * - Customizable size
3203
3418
  *
3204
3419
  * @example
3205
3420
  * ```tsx
3206
- * // Basic usage
3207
- * <LoadingSpinner />
3208
- *
3209
- * // Custom size
3210
- * <LoadingSpinner size={32} />
3211
- *
3212
- * // In a button
3421
+ * // Basic inline usage in button (no messages)
3213
3422
  * <Button disabled>
3214
3423
  * <LoadingSpinner size={16} className="sui-mr-2" />
3215
- * Loading...
3424
+ * Submitting
3216
3425
  * </Button>
3217
3426
  *
3218
- * // In a card
3219
- * <Card>
3220
- * <div className="sui-flex sui-items-center sui-gap-2">
3221
- * <LoadingSpinner size={20} />
3222
- * <span>Processing...</span>
3223
- * </div>
3224
- * </Card>
3427
+ * // Centered section loader with default message below spinner
3428
+ * <LoadingSpinner size={32} showDefaultMessages />
3429
+ *
3430
+ * // Custom message sequence
3431
+ * <LoadingSpinner
3432
+ * size={24}
3433
+ * messages={["Verifying...", "Saving changes...", "Done!"]}
3434
+ * messagePlacement="bottom"
3435
+ * />
3225
3436
  * ```
3226
3437
  */
3227
3438
  declare const LoadingSpinner: react__default.ForwardRefExoticComponent<LoadingSpinnerProps & react__default.RefAttributes<HTMLDivElement>>;
@@ -3307,6 +3518,17 @@ declare const WelcomeBackground: {
3307
3518
  type FloatingMenuTrigger = "slash" | "plus" | "both";
3308
3519
 
3309
3520
  type ImageSourceMode = "both" | "url-only" | "upload-only";
3521
+ /**
3522
+ * Controls the toolbar layout and feature set:
3523
+ * - "collapsible" (default): Renders basic inline tools with an expand/collapse toggle to reveal extended tools.
3524
+ * - "basic": Renders only basic formatting tools (compact 1-row layout).
3525
+ * - "extended": Always renders all basic and extended tools.
3526
+ */
3527
+ type ToolbarMode = "collapsible" | "basic" | "extended";
3528
+ interface MaxLengthExceedInfo {
3529
+ max: number;
3530
+ current: number;
3531
+ }
3310
3532
  interface RichTextEditorProps {
3311
3533
  /** Controlled HTML value of the editor */
3312
3534
  value: string;
@@ -3322,7 +3544,29 @@ interface RichTextEditorProps {
3322
3544
  placeholder?: string;
3323
3545
  /** Minimum height of the content area (e.g. "160px") */
3324
3546
  minHeight?: string;
3325
- /** When true, renders a reduced toolbar (basic formatting only) */
3547
+ /**
3548
+ * Toolbar mode:
3549
+ * - "collapsible" (default): Compact basic toolbar with a toggle to expand extended tools
3550
+ * - "basic": Only shows basic formatting tools
3551
+ * - "extended": Always displays all formatting tools
3552
+ *
3553
+ * @default "collapsible"
3554
+ */
3555
+ toolbarMode?: ToolbarMode;
3556
+ /**
3557
+ * Initial expanded state when toolbarMode is "collapsible".
3558
+ *
3559
+ * @default false
3560
+ */
3561
+ defaultToolbarExpanded?: boolean;
3562
+ /**
3563
+ * Callback fired when the toolbar expand/collapse state changes.
3564
+ */
3565
+ onToolbarExpandChange?: (isExpanded: boolean) => void;
3566
+ /**
3567
+ * @deprecated Use `toolbarMode="basic"` instead.
3568
+ * When true, renders a reduced toolbar (basic formatting only).
3569
+ */
3326
3570
  simple?: boolean;
3327
3571
  /** Disables editing and toolbar interaction */
3328
3572
  disabled?: boolean;
@@ -3400,10 +3644,7 @@ interface RichTextEditorProps {
3400
3644
  * Callback fired when the max character limit is reached.
3401
3645
  * Fired only once per breach (debounced until length drops below limit).
3402
3646
  */
3403
- onMaxLengthExceed?: (info: {
3404
- max: number;
3405
- current: number;
3406
- }) => void;
3647
+ onMaxLengthExceed?: (info: MaxLengthExceedInfo) => void;
3407
3648
  /**
3408
3649
  * Controls when Tiptap renders the editor content.
3409
3650
  *
@@ -3487,18 +3728,6 @@ interface RichTextEditorProps {
3487
3728
  * @default true
3488
3729
  */
3489
3730
  enableFloatingMenu?: boolean;
3490
- /**
3491
- * Optional fine-tuning offset (in pixels) applied to the gutter "+"
3492
- * insert button alignment.
3493
- *
3494
- * In most cases you should not need this. The library automatically
3495
- * derives a good vertical alignment from the paragraph's computed
3496
- * line-height and font-size, but if your host app overrides
3497
- * typography significantly (e.g. different base font-size or
3498
- * custom line-height), you can use this to nudge the "+" icon up
3499
- * or down to visually match your text baseline.
3500
- */
3501
- plusMenuYOffset?: number;
3502
3731
  /**
3503
3732
  * Controls how the floating insert menu is triggered:
3504
3733
  *
@@ -3510,6 +3739,7 @@ interface RichTextEditorProps {
3510
3739
  */
3511
3740
  floatingMenuTriggers?: FloatingMenuTrigger;
3512
3741
  }
3742
+
3513
3743
  /**
3514
3744
  * RichTextEditor - Controlled rich text editor built on top of Tiptap.
3515
3745
  *
@@ -3562,15 +3792,14 @@ interface RichTextEditorProps {
3562
3792
  * @see RichTextViewer - Read-only viewer component for displaying rich text content
3563
3793
  */
3564
3794
  declare const RichTextEditor: {
3565
- ({ value, onChange, label, error, helperText, placeholder, minHeight, simple, disabled, "data-testid": dataTestId, containerClassName, borderContainerClassName, toolbarClassName, contentClassName, editorClassName, labelClassName, messageContainerClassName, onImageUpload, imageUploadErrorMessage, imageSourceMode, maxCharacters, onMaxLengthExceed, immediatelyRender, stickyToolbar, stickyOffset, hideToolbar, withBorder, enableBubbleMenu, enableBubbleMenuOnTouch, enableFloatingMenu, floatingMenuTriggers, plusMenuYOffset, }: RichTextEditorProps): react_jsx_runtime.JSX.Element;
3795
+ ({ value, onChange, label, error, helperText, placeholder, minHeight, toolbarMode, defaultToolbarExpanded, onToolbarExpandChange, simple, disabled, "data-testid": dataTestId, containerClassName, borderContainerClassName, toolbarClassName, contentClassName, editorClassName, labelClassName, messageContainerClassName, onImageUpload, imageUploadErrorMessage, imageSourceMode, maxCharacters, onMaxLengthExceed, immediatelyRender, stickyToolbar, stickyOffset, hideToolbar, withBorder, enableBubbleMenu, enableBubbleMenuOnTouch, enableFloatingMenu, floatingMenuTriggers, }: RichTextEditorProps): react_jsx_runtime.JSX.Element;
3566
3796
  displayName: string;
3567
3797
  };
3568
3798
 
3569
3799
  interface RichTextViewerProps {
3570
3800
  /**
3571
3801
  * HTML content string to render (typically from RichTextEditor's value prop).
3572
- * This content will be rendered as-is, so ensure it's sanitized if it comes
3573
- * from untrusted sources.
3802
+ * This content is automatically sanitized to prevent XSS attacks.
3574
3803
  */
3575
3804
  content: string;
3576
3805
  /**
@@ -3588,16 +3817,8 @@ interface RichTextViewerProps {
3588
3817
  * This component renders HTML content with the same styling as RichTextEditor,
3589
3818
  * ensuring a consistent appearance between "edit" and "view" modes.
3590
3819
  *
3591
- * **Security Note:** This component uses `dangerouslySetInnerHTML` to render
3592
- * the provided HTML. If the content comes from untrusted sources (e.g., user
3593
- * input, external APIs), you should sanitize it first using a library like
3594
- * DOMPurify:
3595
- *
3596
- * ```tsx
3597
- * import DOMPurify from 'isomorphic-dompurify';
3598
- *
3599
- * <RichTextViewer content={DOMPurify.sanitize(userContent)} />
3600
- * ```
3820
+ * Automatically sanitizes HTML content to prevent XSS while preserving
3821
+ * valid styling, SVGs, images, tables, YouTube iframes, and task lists.
3601
3822
  *
3602
3823
  * @example
3603
3824
  * ```tsx
@@ -4563,6 +4784,18 @@ declare const AlignRightIcon: {
4563
4784
  displayName: string;
4564
4785
  };
4565
4786
 
4787
+ interface BlockquoteIconProps extends IconProps {
4788
+ }
4789
+ /**
4790
+ * Blockquote icon component for the rich text editor.
4791
+ *
4792
+ * Uses `currentColor` for dynamic styling with Tailwind CSS classes.
4793
+ */
4794
+ declare const BlockquoteIcon: {
4795
+ ({ size, ...props }: BlockquoteIconProps): react_jsx_runtime.JSX.Element;
4796
+ displayName: string;
4797
+ };
4798
+
4566
4799
  interface BoldIconProps extends IconProps {
4567
4800
  }
4568
4801
  /**
@@ -4582,6 +4815,28 @@ declare const BoldIcon: {
4582
4815
  displayName: string;
4583
4816
  };
4584
4817
 
4818
+ interface ChecklistIconProps extends IconProps {
4819
+ }
4820
+ /**
4821
+ * Checklist / Task list icon for the rich text editor.
4822
+ */
4823
+ declare const ChecklistIcon: {
4824
+ ({ size, ...props }: ChecklistIconProps): react_jsx_runtime.JSX.Element;
4825
+ displayName: string;
4826
+ };
4827
+
4828
+ interface CodeBlockIconProps extends IconProps {
4829
+ }
4830
+ /**
4831
+ * Code Block icon component for the rich text editor.
4832
+ *
4833
+ * Uses `currentColor` for dynamic styling with Tailwind CSS classes.
4834
+ */
4835
+ declare const CodeBlockIcon: {
4836
+ ({ size, ...props }: CodeBlockIconProps): react_jsx_runtime.JSX.Element;
4837
+ displayName: string;
4838
+ };
4839
+
4585
4840
  interface DividerIconProps extends IconProps {
4586
4841
  }
4587
4842
  declare const DividerIcon: {
@@ -4643,6 +4898,38 @@ declare const ListNumberIcon: {
4643
4898
  displayName: string;
4644
4899
  };
4645
4900
 
4901
+ interface RedoIconProps extends IconProps {
4902
+ }
4903
+ /**
4904
+ * Redo icon component - displays a redo action arrow.
4905
+ *
4906
+ * This icon uses `currentColor`, so it can be styled with Tailwind classes.
4907
+ *
4908
+ * @example
4909
+ * ```tsx
4910
+ * import { RedoIcon } from '@scalably/ui';
4911
+ *
4912
+ * <RedoIcon size={24} className="sui-text-primary" />
4913
+ * ```
4914
+ */
4915
+ declare const RedoIcon: {
4916
+ (props: RedoIconProps): react_jsx_runtime.JSX.Element;
4917
+ displayName: string;
4918
+ };
4919
+
4920
+ interface TableIconProps extends IconProps {
4921
+ }
4922
+ /**
4923
+ * Table icon for the rich text editor toolbar.
4924
+ *
4925
+ * Designed to market standard (Lucide / Radix / Notion) with a crisp 16x16 grid,
4926
+ * rounded outer frame, distinct header row, and balanced column/row dividers.
4927
+ */
4928
+ declare const TableIcon: {
4929
+ ({ size, ...props }: TableIconProps): react_jsx_runtime.JSX.Element;
4930
+ displayName: string;
4931
+ };
4932
+
4646
4933
  interface UnderlineIconProps extends IconProps {
4647
4934
  }
4648
4935
  /**
@@ -4662,6 +4949,25 @@ declare const UnderlineIcon: {
4662
4949
  displayName: string;
4663
4950
  };
4664
4951
 
4952
+ interface UndoIconProps extends IconProps {
4953
+ }
4954
+ /**
4955
+ * Undo icon component - displays an undo action arrow.
4956
+ *
4957
+ * This icon uses `currentColor`, so it can be styled with Tailwind classes.
4958
+ *
4959
+ * @example
4960
+ * ```tsx
4961
+ * import { UndoIcon } from '@scalably/ui';
4962
+ *
4963
+ * <UndoIcon size={24} className="sui-text-primary" />
4964
+ * ```
4965
+ */
4966
+ declare const UndoIcon: {
4967
+ (props: UndoIconProps): react_jsx_runtime.JSX.Element;
4968
+ displayName: string;
4969
+ };
4970
+
4665
4971
  interface FileIconProps extends IconProps {
4666
4972
  }
4667
4973
  /**
@@ -6363,4 +6669,4 @@ declare const WebsiteIcon: {
6363
6669
  displayName: string;
6364
6670
  };
6365
6671
 
6366
- export { AlignCenterIcon, type AlignCenterIconProps, AlignLeftIcon, type AlignLeftIconProps, AlignRightIcon, type AlignRightIconProps, AppLauncherIcon, type AppLauncherIconProps, AppLogo, ArrowDownIcon, type ArrowDownIconProps, ArrowLeftIcon, type ArrowLeftIconProps, ArrowRightIcon, type ArrowRightIconProps, ArrowUpIcon, type ArrowUpIconProps, AuthPrompt, type AuthPromptProps, AutoScrollText, type AutoScrollTextAction, type AutoScrollTextAs, type AutoScrollTextMode, type AutoScrollTextProps, AvatarPlaceholder, type AvatarPlaceholderCategory, type AvatarPlaceholderProps, type AvatarPlaceholderVariant, BackToTop, type BackToTopProps, type BasicFileValidationError, BellFilledIcon, type BellFilledIconProps, BellIcon, type BellIconProps, BlockEditor, type BlockEditorProps, BoldIcon, type BoldIconProps, BookOpenIcon, type BookOpenIconProps, BottomNavigation, BottomNavigationCloseIcon, type BottomNavigationCloseIconProps, BottomNavigationExpandIcon, type BottomNavigationExpandIconProps, BottomNavigationItem, type BottomNavigationItemProps, type BottomNavigationProps, BottomNavigationV2, type BottomNavigationV2MenuItem, type BottomNavigationV2Props, type BottomNavigationV2TabItem, Building2Icon, type Building2IconProps, Button, type ButtonProps, type ButtonSize, type ButtonVariant, CalendarIcon, type CalendarIconProps, CalendarStarIcon, type CalendarStarIconProps, CampaignLogo, CaptureIcon, type CaptureIconProps, CartIcon, type CartIconProps, CelebrationModal, type CelebrationModalProps, CheckBox, CheckBoxGroup, type CheckBoxGroupOption, type CheckBoxGroupProps, type CheckBoxProps, CheckIcon, type CheckIconProps, CloseIcon, type CloseIconProps, CopyIcon, type CopyIconProps, Countdown, type CountdownProps, type CountdownSize, type CountdownTimeValues, type CountdownUnit, CropIcon, type CropIconProps, type CroppedImageResult, DatabaseIcon, type DatabaseIconProps, DateInput, type DateInputMode, type DateInputProps, DatePicker, type DatePickerMode, type DatePickerProps, type DefaultAssetCategory, type DefaultAssetComponent, type DefaultAssetProps, type DefaultAssetVariant, type DefaultAssets, DeleteIcon, type DeleteIconProps, DiscordIcon, type DiscordIconProps, Divider, DividerIcon, type DividerIconProps, type DividerProps, type DividerVariant, DoorExitIcon, type DoorExitIconProps, DownloadIcon, type DownloadIconProps, DragableDotsIcon, type DragableDotsIconProps, DragableList, type DragableListItemType, type DragableListProps, DropUpIcon, type DropUpIconProps, DropdownIcon, type DropdownIconProps, type DropdownItem, EditIcon, type EditIconProps, ErrorIcon, type ErrorIconProps, EyeIcon, type EyeIconProps, EyeSlashIcon, type EyeSlashIconProps, FacebookIcon, type FacebookIconProps, FeedFilledIcon, type FeedFilledIconProps, FeedIcon, type FeedIconProps, type FieldErrorLike, FileIcon, type FileIconProps, FileUpload, type FileUploadError, type FileUploadFile, FileUploadIcon, type FileUploadIconProps, type FileUploadIconType, type FileUploadProps, type FileUploadSize, type FileUploadVariant, FilterIcon, type FilterIconProps, Form, type FormErrorItem, FormErrorSummary, type FormErrorSummaryProps, FormField, type FormFieldProps, type FormProps, ForwardIcon, type ForwardIconProps, type GetCroppedImgOptions, GlobeIcon, type GlobeIconProps, GmailIcon, type GmailIconProps, GridIcon, type GridIconProps, GripVerticalIcon, type GripVerticalIconProps, GroupAvatar, HelpCircleIcon, type HelpCircleIconProps, HomeFilledIcon, type HomeFilledIconProps, HomeIcon, type HomeIconProps, IconBadge, type IconBadgeProps, IconBigLogo, IconLogo, ImageCrop, ImageCropModal, type ImageCropModalProps, type ImageCropProps, ImageGallery, type ImageGalleryProps, ImageIcon, type ImageIconProps, ImagePlaceholder, type ImageSourceMode, ImageUploadIcon, type ImageUploadIconProps, IncognitoIcon, type IncognitoIconProps, IndeterminateIcon, type IndeterminateIconProps, InfoCircleIcon, type InfoCircleIconProps, InfoIcon, type InfoIconProps, Input, type InputProps, type InputVariant, InsertImageIcon, type InsertImageIconProps, InsertVideoIcon, type InsertVideoIconProps, InstagramIcon, type InstagramIconProps, ItalicIcon, type ItalicIconProps, KakaoTalkIcon, type KakaoTalkIconProps, LarkIcon, type LarkIconProps, LayoutGridIcon, type LayoutGridIconProps, LikeFilledIcon, type LikeFilledIconProps, LikeIcon, type LikeIconProps, LineIcon, type LineIconProps, LinkIcon, type LinkIconProps, LinkedInIcon, type LinkedInIconProps, ListBulletIcon, type ListBulletIconProps, ListIcon, type ListIconProps, ListNumberIcon, type ListNumberIconProps, LoadingScreen, type LoadingScreenProps, LoadingSpinner, type LoadingSpinnerProps, Logo, type LogoAssetComponent, type LogoAssetProps, type LogoAssets, type LogoFormat, type LogoProps, type LogoVariant, MediaGallery, type MediaGalleryProps, type MediaItem, type MediaSource, MessengerIcon, type MessengerIconProps, MinusIcon, type MinusIconProps, MonthInput, type MonthInputMode, type MonthInputProps, MonthPicker, type MonthPickerMode, type MonthPickerProps, type MonthRangeValue, MoreHorizontalIcon, type MoreHorizontalIconProps, MultiLevelDropdown, type MultiLevelDropdownProps, MultipleSelectionButton, type MultipleSelectionButtonProps, MultipleSelectionIcon, type MultipleSelectionIconProps, NewspaperFilledIcon, type NewspaperFilledIconProps, NewspaperIcon, type NewspaperIconProps, BellFilledIcon as NotificationFilledIcon, type BellFilledIconProps as NotificationFilledIconProps, BellIcon as NotificationIcon, type BellIconProps as NotificationIconProps, Pagination, type PaginationProps, PaletteIcon, type PaletteIconProps, PauseCircleIcon, type PauseCircleIconProps, PercentIcon, type PercentIconProps, PlayIcon, type PlayIconProps, PlusIcon, type PlusIconProps, Portal, ProfileAvatar, ProgressBar, QuantityInput, type QuantityInputProps, RSSIcon, type RSSIconProps, Radio, RadioGroup, type RadioGroupOption, type RadioGroupProps, type RadioProps, type RangeValue, Rating, type RatingProps, RedditIcon, type RedditIconProps, ResetIcon, type ResetIconProps, ReviewFilledIcon, type ReviewFilledIconProps, ReviewIcon, type ReviewIconProps, RichTextEditor, type RichTextEditorProps, RichTextViewer, type RichTextViewerProps, RotateLeftIcon, type RotateLeftIconProps, RotateRightIcon, type RotateRightIconProps, ScalablyIcon, type ScalablyIconProps, ScalablyUIProvider, type ScalablyUIProviderProps, SearchIcon, type SearchIconProps, SearchInput, type SearchInputProps, type SearchInputVariant, Select, type SelectOption, type SelectProps, type SelectVariant, SettingsIcon, type SettingsIconProps, ShareIcon, type ShareIconProps, ShoppingBagFilledIcon, type ShoppingBagFilledIconProps, ShoppingBagIcon, type ShoppingBagIconProps, SignalIcon, type SignalIconProps, Skeleton, type SkeletonProps, type SkeletonSize, SkeletonText, type SkeletonTextProps, type SkeletonVariant, SlackIcon, type SlackIconProps, Slider, SocialCampaignFilledIcon, type SocialCampaignFilledIconProps, SocialCampaignIcon, type SocialCampaignIconProps, StarIcon, type StarIconProps, StatusBadge, type StatusBadgeProps, type StatusBadgeSize, type StatusBadgeStatus, type StatusBadgeVariant, StoreFilledIcon, type StoreFilledIconProps, StoreIcon, type StoreIconProps, SuccessIcon, type SuccessIconProps, Switch, type SwitchProps, TabItem, type TabItemOption, type TabItemProps, Tabs, TabsContent, type TabsContentProps, TabsList, type TabsListProps, type TabsProps, TabsTrigger, type TabsTriggerProps, Tag, TagInput, type TagInputProps, TelegramIcon, type TelegramIconProps, TiktokIcon, type TiktokIconProps, TimePicker, type TimePickerProps, ToFirstIcon, type ToFirstIconProps, ToLastIcon, type ToLastIconProps, ToNextIcon, type ToNextIconProps, ToPreviousIcon, type ToPreviousIconProps, Toast, type ToastAction, ToastContainer, type ToastContainerProps, type ToastPosition, type ToastProps, type ToastStatus, Tooltip, type TooltipAlign, type TooltipProps, type TooltipSide, TranslateIcon, type TranslateIconProps, TrendingDownIcon, type TrendingDownIconProps, TrendingUpIcon, type TrendingUpIconProps, TwitchIcon, type TwitchIconProps, UnderlineIcon, type UnderlineIconProps, UserFilledIcon, type UserFilledIconProps, UserIcon, type UserIconProps, UserJoinIcon, type UserJoinIconProps, UserLeaveIcon, type UserLeaveIconProps, UsersFilledIcon, type UsersFilledIconProps, UsersIcon, type UsersIconProps, UsersPlusIcon, type UsersPlusIconProps, VerifiedIcon, type VerifiedIconProps, VideoIcon, type VideoIconProps, VideoUploadIcon, type VideoUploadIconProps, type ViewMode, ViewToggle, type ViewToggleProps, WalletFilledIcon, type WalletFilledIconProps, WalletIcon, type WalletIconProps, WarnIcon, type WarnIconProps, WebsiteIcon, type WebsiteIconProps, WelcomeBackground, type WelcomeBackgroundProps, WhatsAppIcon, type WhatsAppIconProps, XIcon, type XIconProps, YearInput, type YearInputMode, type YearInputProps, YearPicker, type YearPickerMode, type YearPickerProps, type YearRangeValue, YoutubeIcon, type YoutubeIconProps, clampDate, cn, daysGrid, debounce, defaultAssets, extensionToMimeType, fieldErrorToProps, formatAcceptedFileTypes, formatDateLocalized, getCroppedImg, logoAssets, mimeTypeToDisplayName, monthsForLocale, normalizeAcceptedFileTypes, scopeClass, throttle, toDateKey, validateFileTypeAndSize, weekdaysForLocale, welcomeAssets, zodErrorsToSummary };
6672
+ export { AlignCenterIcon, type AlignCenterIconProps, AlignLeftIcon, type AlignLeftIconProps, AlignRightIcon, type AlignRightIconProps, AppLauncherIcon, type AppLauncherIconProps, AppLogo, ArrowDownIcon, type ArrowDownIconProps, ArrowLeftIcon, type ArrowLeftIconProps, ArrowRightIcon, type ArrowRightIconProps, ArrowUpIcon, type ArrowUpIconProps, AuthPrompt, type AuthPromptProps, AutoScrollText, type AutoScrollTextAction, type AutoScrollTextAs, type AutoScrollTextMode, type AutoScrollTextProps, AvatarPlaceholder, type AvatarPlaceholderCategory, type AvatarPlaceholderProps, type AvatarPlaceholderVariant, BackToTop, type BackToTopProps, type BasicFileValidationError, BellFilledIcon, type BellFilledIconProps, BellIcon, type BellIconProps, BlockEditor, type BlockEditorProps, BlockquoteIcon, type BlockquoteIconProps, BoldIcon, type BoldIconProps, BookOpenIcon, type BookOpenIconProps, BottomNavigation, BottomNavigationCloseIcon, type BottomNavigationCloseIconProps, BottomNavigationExpandIcon, type BottomNavigationExpandIconProps, BottomNavigationItem, type BottomNavigationItemProps, type BottomNavigationProps, BottomNavigationV2, type BottomNavigationV2MenuItem, type BottomNavigationV2Props, type BottomNavigationV2TabItem, Building2Icon, type Building2IconProps, Button, type ButtonProps, type ButtonSize, type ButtonVariant, CalendarIcon, type CalendarIconProps, CalendarStarIcon, type CalendarStarIconProps, CampaignLogo, CaptureIcon, type CaptureIconProps, CartIcon, type CartIconProps, CelebrationModal, type CelebrationModalProps, CheckBox, CheckBoxGroup, type CheckBoxGroupOption, type CheckBoxGroupProps, type CheckBoxProps, CheckIcon, type CheckIconProps, ChecklistIcon, type ChecklistIconProps, CloseIcon, type CloseIconProps, CodeBlockIcon, type CodeBlockIconProps, CopyIcon, type CopyIconProps, Countdown, type CountdownProps, type CountdownSize, type CountdownTimeValues, type CountdownUnit, CropIcon, type CropIconProps, type CroppedImageResult, DEFAULT_LOADING_MESSAGES, DatabaseIcon, type DatabaseIconProps, DateInput, type DateInputMode, type DateInputProps, DatePicker, type DatePickerMode, type DatePickerProps, type DefaultAssetCategory, type DefaultAssetComponent, type DefaultAssetProps, type DefaultAssetVariant, type DefaultAssets, DeleteIcon, type DeleteIconProps, DiscordIcon, type DiscordIconProps, Divider, DividerIcon, type DividerIconProps, type DividerProps, type DividerVariant, DoorExitIcon, type DoorExitIconProps, DownloadIcon, type DownloadIconProps, DragableDotsIcon, type DragableDotsIconProps, DragableList, type DragableListItemType, type DragableListProps, DropUpIcon, type DropUpIconProps, DropdownIcon, type DropdownIconProps, type DropdownItem, EditIcon, type EditIconProps, ErrorIcon, type ErrorIconProps, EyeIcon, type EyeIconProps, EyeSlashIcon, type EyeSlashIconProps, FacebookIcon, type FacebookIconProps, FeedFilledIcon, type FeedFilledIconProps, FeedIcon, type FeedIconProps, type FieldErrorLike, FileIcon, type FileIconProps, FileUpload, type FileUploadError, type FileUploadFile, FileUploadIcon, type FileUploadIconProps, type FileUploadIconType, type FileUploadProps, type FileUploadSize, type FileUploadVariant, FilterIcon, type FilterIconProps, Form, type FormErrorItem, FormErrorSummary, type FormErrorSummaryProps, FormField, type FormFieldProps, type FormProps, ForwardIcon, type ForwardIconProps, type GetCroppedImgOptions, GlobeIcon, type GlobeIconProps, GmailIcon, type GmailIconProps, GridIcon, type GridIconProps, GripVerticalIcon, type GripVerticalIconProps, GroupAvatar, HelpCircleIcon, type HelpCircleIconProps, HomeFilledIcon, type HomeFilledIconProps, HomeIcon, type HomeIconProps, IconBadge, type IconBadgeProps, IconBigLogo, IconLogo, ImageCrop, ImageCropModal, type ImageCropModalProps, type ImageCropProps, ImageGallery, type ImageGalleryProps, ImageIcon, type ImageIconProps, ImagePlaceholder, type ImageSourceMode, ImageUploadIcon, type ImageUploadIconProps, IncognitoIcon, type IncognitoIconProps, IndeterminateIcon, type IndeterminateIconProps, InfoCircleIcon, type InfoCircleIconProps, InfoIcon, type InfoIconProps, Input, type InputProps, type InputVariant, InsertImageIcon, type InsertImageIconProps, InsertVideoIcon, type InsertVideoIconProps, InstagramIcon, type InstagramIconProps, ItalicIcon, type ItalicIconProps, KakaoTalkIcon, type KakaoTalkIconProps, LarkIcon, type LarkIconProps, LayoutGridIcon, type LayoutGridIconProps, LikeFilledIcon, type LikeFilledIconProps, LikeIcon, type LikeIconProps, LineIcon, type LineIconProps, LinkIcon, type LinkIconProps, LinkedInIcon, type LinkedInIconProps, ListBulletIcon, type ListBulletIconProps, ListIcon, type ListIconProps, ListNumberIcon, type ListNumberIconProps, LoadingMessage, type LoadingMessageItem, type LoadingMessageProps, type LoadingMessagesProp, LoadingScreen, type LoadingScreenProps, LoadingSpinner, type LoadingSpinnerMessagePlacement, type LoadingSpinnerProps, Logo, type LogoAssetComponent, type LogoAssetProps, type LogoAssets, type LogoFormat, type LogoProps, type LogoVariant, MediaGallery, type MediaGalleryProps, type MediaItem, type MediaSource, MessengerIcon, type MessengerIconProps, MinusIcon, type MinusIconProps, MonthInput, type MonthInputMode, type MonthInputProps, MonthPicker, type MonthPickerMode, type MonthPickerProps, type MonthRangeValue, MoreHorizontalIcon, type MoreHorizontalIconProps, MultiLevelDropdown, type MultiLevelDropdownProps, MultipleSelectionButton, type MultipleSelectionButtonProps, MultipleSelectionIcon, type MultipleSelectionIconProps, NewspaperFilledIcon, type NewspaperFilledIconProps, NewspaperIcon, type NewspaperIconProps, BellFilledIcon as NotificationFilledIcon, type BellFilledIconProps as NotificationFilledIconProps, BellIcon as NotificationIcon, type BellIconProps as NotificationIconProps, Pagination, type PaginationProps, PaletteIcon, type PaletteIconProps, PauseCircleIcon, type PauseCircleIconProps, PercentIcon, type PercentIconProps, PlayIcon, type PlayIconProps, PlusIcon, type PlusIconProps, Portal, ProfileAvatar, ProgressBar, QuantityInput, type QuantityInputProps, RSSIcon, type RSSIconProps, Radio, RadioGroup, type RadioGroupOption, type RadioGroupProps, type RadioProps, type RangeValue, Rating, type RatingProps, RedditIcon, type RedditIconProps, RedoIcon, type RedoIconProps, ResetIcon, type ResetIconProps, ReviewFilledIcon, type ReviewFilledIconProps, ReviewIcon, type ReviewIconProps, RichTextEditor, type RichTextEditorProps, RichTextViewer, type RichTextViewerProps, RotateLeftIcon, type RotateLeftIconProps, RotateRightIcon, type RotateRightIconProps, ScalablyIcon, type ScalablyIconProps, ScalablyUIProvider, type ScalablyUIProviderProps, SearchIcon, type SearchIconProps, SearchInput, type SearchInputProps, type SearchInputVariant, Select, type SelectOption, type SelectProps, type SelectVariant, SettingsIcon, type SettingsIconProps, ShareIcon, type ShareIconProps, ShoppingBagFilledIcon, type ShoppingBagFilledIconProps, ShoppingBagIcon, type ShoppingBagIconProps, SignalIcon, type SignalIconProps, Skeleton, type SkeletonProps, type SkeletonSize, SkeletonText, type SkeletonTextProps, type SkeletonVariant, SlackIcon, type SlackIconProps, Slider, SocialCampaignFilledIcon, type SocialCampaignFilledIconProps, SocialCampaignIcon, type SocialCampaignIconProps, StarIcon, type StarIconProps, StatusBadge, type StatusBadgeProps, type StatusBadgeSize, type StatusBadgeStatus, type StatusBadgeVariant, StoreFilledIcon, type StoreFilledIconProps, StoreIcon, type StoreIconProps, SuccessIcon, type SuccessIconProps, Switch, type SwitchProps, TabItem, type TabItemOption, type TabItemProps, TableIcon, type TableIconProps, Tabs, TabsContent, type TabsContentProps, TabsList, type TabsListProps, type TabsProps, TabsTrigger, type TabsTriggerProps, Tag, TagInput, type TagInputProps, TelegramIcon, type TelegramIconProps, TiktokIcon, type TiktokIconProps, TimePicker, type TimePickerProps, ToFirstIcon, type ToFirstIconProps, ToLastIcon, type ToLastIconProps, ToNextIcon, type ToNextIconProps, ToPreviousIcon, type ToPreviousIconProps, Toast, type ToastAction, ToastContainer, type ToastContainerProps, type ToastPosition, type ToastProps, type ToastStatus, type ToolbarMode, Tooltip, type TooltipAlign, type TooltipProps, type TooltipSide, TranslateIcon, type TranslateIconProps, TrendingDownIcon, type TrendingDownIconProps, TrendingUpIcon, type TrendingUpIconProps, TwitchIcon, type TwitchIconProps, UnderlineIcon, type UnderlineIconProps, UndoIcon, type UndoIconProps, type UseLoadingMessagesOptions, type UseLoadingMessagesReturn, UserFilledIcon, type UserFilledIconProps, UserIcon, type UserIconProps, UserJoinIcon, type UserJoinIconProps, UserLeaveIcon, type UserLeaveIconProps, UsersFilledIcon, type UsersFilledIconProps, UsersIcon, type UsersIconProps, UsersPlusIcon, type UsersPlusIconProps, VerifiedIcon, type VerifiedIconProps, VideoIcon, type VideoIconProps, VideoUploadIcon, type VideoUploadIconProps, type ViewMode, ViewToggle, type ViewToggleProps, WalletFilledIcon, type WalletFilledIconProps, WalletIcon, type WalletIconProps, WarnIcon, type WarnIconProps, WebsiteIcon, type WebsiteIconProps, WelcomeBackground, type WelcomeBackgroundProps, WhatsAppIcon, type WhatsAppIconProps, XIcon, type XIconProps, YearInput, type YearInputMode, type YearInputProps, YearPicker, type YearPickerMode, type YearPickerProps, type YearRangeValue, YoutubeIcon, type YoutubeIconProps, clampDate, cn, daysGrid, debounce, defaultAssets, extensionToMimeType, fieldErrorToProps, formatAcceptedFileTypes, formatDateLocalized, getCroppedImg, logoAssets, mimeTypeToDisplayName, monthsForLocale, normalizeAcceptedFileTypes, scopeClass, throttle, toDateKey, useLoadingMessages, validateFileTypeAndSize, weekdaysForLocale, welcomeAssets, zodErrorsToSummary };