@saasflare/ui 3.1.2 → 3.3.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.
- package/README.md +68 -2
- package/dist/{button-0Bdl7Nqm.d.ts → button-BA7OcXqy.d.mts} +12 -17
- package/dist/{button-Brb4BhPO.d.mts → button-Bfg2Tnvx.d.ts} +12 -17
- package/dist/{chunk-D5LKWKG7.js → chunk-2GOPD64T.js} +117 -89
- package/dist/{chunk-56PMDC5F.mjs → chunk-2ONA6OMO.mjs} +29 -40
- package/dist/{chunk-RW2S3KNB.mjs → chunk-5C65JNGY.mjs} +7 -6
- package/dist/{chunk-NPNSPYTX.js → chunk-7UD3SGPP.js} +28 -39
- package/dist/chunk-GI6VN7XU.mjs +2143 -0
- package/dist/{chunk-FT66KYRN.js → chunk-ITALEYDI.js} +2 -2
- package/dist/{chunk-4BOMMZEY.js → chunk-JC7EIEGI.js} +14 -13
- package/dist/chunk-N65HIOBD.js +234 -0
- package/dist/{chunk-EJHYM2HP.mjs → chunk-OZAWULTM.mjs} +1 -1
- package/dist/chunk-R3AVBLJ3.js +2207 -0
- package/dist/{chunk-WRONFPRI.mjs → chunk-RMQBB72G.mjs} +118 -91
- package/dist/chunk-XNDTCYSO.mjs +211 -0
- package/dist/{dialog-BmY55WSX.d.ts → dialog-CZRwrqDa.d.ts} +2 -2
- package/dist/{dialog-CcaHMAsS.d.mts → dialog-Cr0becOL.d.mts} +2 -2
- package/dist/entries/calendar.d.mts +3 -3
- package/dist/entries/calendar.d.ts +3 -3
- package/dist/entries/calendar.js +13 -214
- package/dist/entries/calendar.mjs +5 -196
- package/dist/entries/carousel.d.mts +3 -3
- package/dist/entries/carousel.d.ts +3 -3
- package/dist/entries/carousel.js +17 -14
- package/dist/entries/carousel.mjs +10 -7
- package/dist/entries/chart.d.mts +1 -1
- package/dist/entries/chart.d.ts +1 -1
- package/dist/entries/chart.js +11 -11
- package/dist/entries/chart.mjs +1 -1
- package/dist/entries/command.d.mts +3 -3
- package/dist/entries/command.d.ts +3 -3
- package/dist/entries/command.js +21 -19
- package/dist/entries/command.mjs +8 -6
- package/dist/entries/drawer.d.mts +1 -1
- package/dist/entries/drawer.d.ts +1 -1
- package/dist/entries/drawer.js +9 -9
- package/dist/entries/drawer.mjs +2 -2
- package/dist/entries/input-otp.d.mts +2 -2
- package/dist/entries/input-otp.d.ts +2 -2
- package/dist/entries/input-otp.js +10 -8
- package/dist/entries/input-otp.mjs +6 -4
- package/dist/entries/resizable.d.mts +3 -2
- package/dist/entries/resizable.d.ts +3 -2
- package/dist/entries/resizable.js +8 -6
- package/dist/entries/resizable.mjs +6 -4
- package/dist/index.d.mts +2129 -57
- package/dist/index.d.ts +2129 -57
- package/dist/index.js +5168 -556
- package/dist/index.mjs +4633 -215
- package/dist/{use-saasflare-props-NrM2Glmp.d.mts → use-saasflare-props-BrjMhU0U.d.mts} +53 -4
- package/dist/{use-saasflare-props-NrM2Glmp.d.ts → use-saasflare-props-BrjMhU0U.d.ts} +53 -4
- package/package.json +4 -3
- package/styles/aurora.css +47 -0
- package/styles/palettes.css +483 -3
- package/styles/surfaces.css +89 -10
- package/styles/theme.css +11 -5
package/dist/index.d.mts
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { ClassValue } from 'clsx';
|
|
2
|
+
import * as React$1 from 'react';
|
|
3
|
+
import { Ref, MutableRefObject, RefCallback, ReactNode, JSX, ComponentProps } from 'react';
|
|
2
4
|
import { Transition } from 'motion/react';
|
|
3
|
-
import { I as Intent, B as Button } from './button-
|
|
4
|
-
export {
|
|
5
|
+
import { I as Intent, B as Button, a as ButtonProps } from './button-BA7OcXqy.mjs';
|
|
6
|
+
export { b as buttonVariants } from './button-BA7OcXqy.mjs';
|
|
5
7
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
6
|
-
import
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
export { C as CustomPalette, d as PALETTES, e as PaletteId, f as RADII, g as ResolvedSaasflareProps, h as STYLES, u as useSaasflareProps } from './use-saasflare-props-NrM2Glmp.mjs';
|
|
10
|
-
export { D as Dialog, a as DialogClose, b as DialogContent, c as DialogDescription, d as DialogFooter, e as DialogHeader, f as DialogOverlay, g as DialogPortal, h as DialogTitle, i as DialogTrigger } from './dialog-CcaHMAsS.mjs';
|
|
8
|
+
import { I as IconWeight, P as PhosphorIconProps, a as Palette, S as Surface, R as RadiusProp, b as StyleVariant, c as Radius, d as SaasflareComponentProps } from './use-saasflare-props-BrjMhU0U.mjs';
|
|
9
|
+
export { C as CustomPalette, e as IconBase, f as PALETTES, g as PaletteId, h as RADII, i as ResolvedSaasflareProps, j as STYLES, u as useSaasflareProps } from './use-saasflare-props-BrjMhU0U.mjs';
|
|
10
|
+
export { D as Dialog, a as DialogClose, b as DialogContent, c as DialogDescription, d as DialogFooter, e as DialogHeader, f as DialogOverlay, g as DialogPortal, h as DialogTitle, i as DialogTrigger } from './dialog-Cr0becOL.mjs';
|
|
11
11
|
import * as AlertDialogPrimitive from '@radix-ui/react-alert-dialog';
|
|
12
12
|
import * as AccordionPrimitive from '@radix-ui/react-accordion';
|
|
13
13
|
import * as class_variance_authority_types from 'class-variance-authority/types';
|
|
@@ -164,6 +164,32 @@ type UseMeasureReturn<T extends Element = HTMLElement> = readonly [
|
|
|
164
164
|
*/
|
|
165
165
|
declare function useMeasure<T extends Element = HTMLElement>(): UseMeasureReturn<T>;
|
|
166
166
|
|
|
167
|
+
/** Options for useLocalStorage. */
|
|
168
|
+
interface UseLocalStorageOptions<T> {
|
|
169
|
+
/** Custom serializer (default: JSON.stringify). */
|
|
170
|
+
serializer?: (value: T) => string;
|
|
171
|
+
/** Custom deserializer (default: JSON.parse). */
|
|
172
|
+
deserializer?: (raw: string) => T;
|
|
173
|
+
/** Called when read/write/remove fails. Falls back to console.warn if omitted. */
|
|
174
|
+
onError?: (error: unknown, operation: 'read' | 'write' | 'remove') => void;
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Persists state to localStorage with automatic serialization,
|
|
178
|
+
* SSR safety, and same-tab + cross-tab synchronization.
|
|
179
|
+
*
|
|
180
|
+
* @param key - The localStorage key
|
|
181
|
+
* @param initialValue - Default value when key doesn't exist
|
|
182
|
+
* @param options - Optional serializer, deserializer, and error handler
|
|
183
|
+
* @returns Tuple of [value, setter, remover]
|
|
184
|
+
*
|
|
185
|
+
* @example
|
|
186
|
+
* const [lang, setLang, removeLang] = useLocalStorage('language', 'en');
|
|
187
|
+
* setLang('de'); // sets and persists
|
|
188
|
+
* setLang(prev => prev + '-US'); // functional update
|
|
189
|
+
* removeLang(); // removes key, reverts to 'en'
|
|
190
|
+
*/
|
|
191
|
+
declare function useLocalStorage<T>(key: string, initialValue: T, options?: UseLocalStorageOptions<T>): [T, (value: T | ((prev: T) => T)) => void, () => void];
|
|
192
|
+
|
|
167
193
|
/** An item in the pagination range — either a page number or an ellipsis marker */
|
|
168
194
|
type PaginationRangeItem = number | 'dots';
|
|
169
195
|
/** Options for usePagination */
|
|
@@ -221,6 +247,141 @@ interface UsePaginationReturn {
|
|
|
221
247
|
*/
|
|
222
248
|
declare function usePagination(options: UsePaginationOptions): UsePaginationReturn;
|
|
223
249
|
|
|
250
|
+
/**
|
|
251
|
+
* @fileoverview Combine multiple refs (callback refs and ref objects) into a
|
|
252
|
+
* single ref callback. Required whenever a component both forwards a ref AND
|
|
253
|
+
* needs its own internal ref to the same DOM node.
|
|
254
|
+
* @author Saasflare™
|
|
255
|
+
* @module packages/ui/hooks/use-merged-ref
|
|
256
|
+
* @package ui
|
|
257
|
+
*
|
|
258
|
+
* @example
|
|
259
|
+
* const Card = forwardRef<HTMLDivElement, Props>(function Card(props, forwardedRef) {
|
|
260
|
+
* const internalRef = useRef<HTMLDivElement>(null);
|
|
261
|
+
* const ref = useMergedRef(internalRef, forwardedRef);
|
|
262
|
+
* return <div ref={ref}>…</div>;
|
|
263
|
+
* });
|
|
264
|
+
*/
|
|
265
|
+
|
|
266
|
+
/** Anything React accepts as a ref slot. */
|
|
267
|
+
type PossibleRef<T> = Ref<T> | MutableRefObject<T | null> | null | undefined;
|
|
268
|
+
/**
|
|
269
|
+
* Merges any number of refs into a single ref callback. The callback is
|
|
270
|
+
* memoized on the identity of the input refs — if you pass new ref objects
|
|
271
|
+
* on every render, the callback identity will change and React will
|
|
272
|
+
* detach/reattach. In practice pass stable ref objects.
|
|
273
|
+
*
|
|
274
|
+
* @param refs - One or more refs (object refs or callback refs).
|
|
275
|
+
* @returns A stable ref callback that writes the node to every input ref.
|
|
276
|
+
*
|
|
277
|
+
* @example
|
|
278
|
+
* const ref = useMergedRef(forwardedRef, internalRef);
|
|
279
|
+
* <div ref={ref} />
|
|
280
|
+
*/
|
|
281
|
+
declare function useMergedRef<T>(...refs: PossibleRef<T>[]): RefCallback<T>;
|
|
282
|
+
|
|
283
|
+
/** Return value of {@link useInterval}. */
|
|
284
|
+
interface UseIntervalReturn {
|
|
285
|
+
/** Whether the interval is currently running. */
|
|
286
|
+
active: boolean;
|
|
287
|
+
/** Start (or restart) the interval. */
|
|
288
|
+
start: () => void;
|
|
289
|
+
/** Stop the interval. */
|
|
290
|
+
stop: () => void;
|
|
291
|
+
/** Toggle the interval. */
|
|
292
|
+
toggle: () => void;
|
|
293
|
+
}
|
|
294
|
+
/** Options for {@link useInterval}. */
|
|
295
|
+
interface UseIntervalOptions {
|
|
296
|
+
/** If `true`, start the interval immediately. Default: `true`. */
|
|
297
|
+
autoInvoke?: boolean;
|
|
298
|
+
}
|
|
299
|
+
/**
|
|
300
|
+
* Calls `callback` every `delay` milliseconds. The latest callback is always
|
|
301
|
+
* invoked even if the callback identity changes between renders. Pass
|
|
302
|
+
* `delay = null` to pause.
|
|
303
|
+
*
|
|
304
|
+
* @param callback - Function to invoke on each tick.
|
|
305
|
+
* @param delay - Interval in milliseconds, or `null` to pause.
|
|
306
|
+
* @param options - Configuration.
|
|
307
|
+
* @returns Controls for starting/stopping the interval.
|
|
308
|
+
*/
|
|
309
|
+
declare function useInterval(callback: () => void, delay: number | null, options?: UseIntervalOptions): UseIntervalReturn;
|
|
310
|
+
|
|
311
|
+
/**
|
|
312
|
+
* Returns a ref to attach to a container. While `active` is `true`:
|
|
313
|
+
* - Initial focus moves to the first focusable child (or the container itself
|
|
314
|
+
* if it has `tabindex`).
|
|
315
|
+
* - Tab and Shift+Tab cycle within the container.
|
|
316
|
+
* - On deactivate, focus is restored to whatever was focused before.
|
|
317
|
+
*
|
|
318
|
+
* @param active - Whether the trap is engaged.
|
|
319
|
+
* @returns A ref callback to attach to the container element.
|
|
320
|
+
*
|
|
321
|
+
* @example
|
|
322
|
+
* const trapRef = useFocusTrap<HTMLDivElement>(open);
|
|
323
|
+
* <div ref={trapRef}>…</div>
|
|
324
|
+
*/
|
|
325
|
+
declare function useFocusTrap<T extends HTMLElement = HTMLElement>(active: boolean): (node: T | null) => void;
|
|
326
|
+
|
|
327
|
+
/** Return value of the useCountdown hook. */
|
|
328
|
+
interface CountdownValue {
|
|
329
|
+
/** Days remaining. */
|
|
330
|
+
days: number;
|
|
331
|
+
/** Hours remaining (0–23). */
|
|
332
|
+
hours: number;
|
|
333
|
+
/** Minutes remaining (0–59). */
|
|
334
|
+
minutes: number;
|
|
335
|
+
/** Seconds remaining (0–59). */
|
|
336
|
+
seconds: number;
|
|
337
|
+
/** Total milliseconds remaining. */
|
|
338
|
+
totalMs: number;
|
|
339
|
+
/** Whether the target date has passed. */
|
|
340
|
+
isExpired: boolean;
|
|
341
|
+
}
|
|
342
|
+
/**
|
|
343
|
+
* Returns a live countdown to a target date, updating every second.
|
|
344
|
+
*
|
|
345
|
+
* @param {Date | string | number} target - The target date/time
|
|
346
|
+
* @returns {CountdownValue} The current countdown values
|
|
347
|
+
*
|
|
348
|
+
* @example
|
|
349
|
+
* const { days, hours, minutes, seconds } = useCountdown('2026-12-31T00:00:00');
|
|
350
|
+
*/
|
|
351
|
+
declare function useCountdown(target: Date | string | number): CountdownValue;
|
|
352
|
+
|
|
353
|
+
/** Options for {@link useFileDialog}. */
|
|
354
|
+
interface UseFileDialogOptions {
|
|
355
|
+
/** MIME types or extensions to filter (matches `<input accept>`). */
|
|
356
|
+
accept?: string;
|
|
357
|
+
/** Allow multiple selection. Default: `false`. */
|
|
358
|
+
multiple?: boolean;
|
|
359
|
+
/** Restrict to a folder picker (only supported in Chromium). */
|
|
360
|
+
directory?: boolean;
|
|
361
|
+
/** Camera capture mode for mobile (`"user"` | `"environment"`). */
|
|
362
|
+
capture?: "user" | "environment";
|
|
363
|
+
/** Called after the user picks files. */
|
|
364
|
+
onChange?: (files: File[]) => void;
|
|
365
|
+
}
|
|
366
|
+
/** Return value of {@link useFileDialog}. */
|
|
367
|
+
interface UseFileDialogReturn {
|
|
368
|
+
/** Most recently picked files (empty array if reset/never opened). */
|
|
369
|
+
files: File[];
|
|
370
|
+
/** Open the native file picker. */
|
|
371
|
+
open: () => void;
|
|
372
|
+
/** Clear the current selection. */
|
|
373
|
+
reset: () => void;
|
|
374
|
+
}
|
|
375
|
+
/**
|
|
376
|
+
* Returns an `open()` trigger that pops the native file picker, plus the
|
|
377
|
+
* selected `files`. No DOM rendered by the consumer is required — the hook
|
|
378
|
+
* mounts a hidden `<input>` lazily on first call.
|
|
379
|
+
*
|
|
380
|
+
* @param options - Configuration mirroring `<input type="file">` attributes.
|
|
381
|
+
* @returns The selected files and control callbacks.
|
|
382
|
+
*/
|
|
383
|
+
declare function useFileDialog(options?: UseFileDialogOptions): UseFileDialogReturn;
|
|
384
|
+
|
|
224
385
|
/**
|
|
225
386
|
* @fileoverview Shared motion presets for premium UI components.
|
|
226
387
|
* @module packages/core/components/ui/motion-config
|
|
@@ -234,7 +395,7 @@ declare function usePagination(options: UsePaginationOptions): UsePaginationRetu
|
|
|
234
395
|
* Use `useReducedMotion()` to disable springs when the user prefers reduced motion.
|
|
235
396
|
*
|
|
236
397
|
* @example
|
|
237
|
-
* import { spring, useReducedMotion } from "@saasflare/
|
|
398
|
+
* import { spring, useReducedMotion } from "@saasflare/ui";
|
|
238
399
|
* const reduced = useReducedMotion();
|
|
239
400
|
* <motion.div transition={reduced ? { duration: 0 } : spring} />
|
|
240
401
|
*/
|
|
@@ -430,6 +591,77 @@ type Size = "xs" | "sm" | "md" | "lg" | "xl";
|
|
|
430
591
|
*/
|
|
431
592
|
type Density = "compact" | "normal" | "comfortable";
|
|
432
593
|
|
|
594
|
+
/**
|
|
595
|
+
* @fileoverview Base primitive for brand-logo Phosphor icons.
|
|
596
|
+
*
|
|
597
|
+
* Brand logos extend the standard four Phosphor weights with a fifth,
|
|
598
|
+
* `"colorful"` — the canonical multi-color brand mark from Iconify's `logos:`
|
|
599
|
+
* set. The colorful path can't reuse {@link IconBase} because brand SVGs
|
|
600
|
+
* have non-square viewBoxes (Apple is 256×315, Discord is 256×199, …) and
|
|
601
|
+
* use hardcoded brand colors instead of `currentColor`.
|
|
602
|
+
*
|
|
603
|
+
* BrandIconBase forks the render at the top:
|
|
604
|
+
* - weight === "colorful" → emit own `<svg>` with the brand viewBox + content
|
|
605
|
+
* - otherwise → delegate to {@link IconBase}
|
|
606
|
+
*
|
|
607
|
+
* @module @saasflare/ui/components/ui/phosphor/brand-icon-base
|
|
608
|
+
*/
|
|
609
|
+
|
|
610
|
+
/** Brand-logo weight set: standard Phosphor weights + the colored brand variant. */
|
|
611
|
+
type BrandIconWeight = IconWeight | "colorful";
|
|
612
|
+
|
|
613
|
+
declare const ArrowLeftIcon: React$1.ForwardRefExoticComponent<PhosphorIconProps & React$1.RefAttributes<SVGSVGElement>>;
|
|
614
|
+
|
|
615
|
+
declare const ArrowRightIcon: React$1.ForwardRefExoticComponent<PhosphorIconProps & React$1.RefAttributes<SVGSVGElement>>;
|
|
616
|
+
|
|
617
|
+
declare const ArrowUpIcon: React$1.ForwardRefExoticComponent<PhosphorIconProps & React$1.RefAttributes<SVGSVGElement>>;
|
|
618
|
+
|
|
619
|
+
declare const CaretDownIcon: React$1.ForwardRefExoticComponent<PhosphorIconProps & React$1.RefAttributes<SVGSVGElement>>;
|
|
620
|
+
|
|
621
|
+
declare const CaretLeftIcon: React$1.ForwardRefExoticComponent<PhosphorIconProps & React$1.RefAttributes<SVGSVGElement>>;
|
|
622
|
+
|
|
623
|
+
declare const CaretRightIcon: React$1.ForwardRefExoticComponent<PhosphorIconProps & React$1.RefAttributes<SVGSVGElement>>;
|
|
624
|
+
|
|
625
|
+
declare const CaretUpIcon: React$1.ForwardRefExoticComponent<PhosphorIconProps & React$1.RefAttributes<SVGSVGElement>>;
|
|
626
|
+
|
|
627
|
+
declare const CheckIcon: React$1.ForwardRefExoticComponent<PhosphorIconProps & React$1.RefAttributes<SVGSVGElement>>;
|
|
628
|
+
|
|
629
|
+
declare const CheckCircleIcon: React$1.ForwardRefExoticComponent<PhosphorIconProps & React$1.RefAttributes<SVGSVGElement>>;
|
|
630
|
+
|
|
631
|
+
declare const CircleIcon: React$1.ForwardRefExoticComponent<PhosphorIconProps & React$1.RefAttributes<SVGSVGElement>>;
|
|
632
|
+
|
|
633
|
+
declare const CircleNotchIcon: React$1.ForwardRefExoticComponent<PhosphorIconProps & React$1.RefAttributes<SVGSVGElement>>;
|
|
634
|
+
|
|
635
|
+
declare const DotsSixVerticalIcon: React$1.ForwardRefExoticComponent<PhosphorIconProps & React$1.RefAttributes<SVGSVGElement>>;
|
|
636
|
+
|
|
637
|
+
declare const DotsThreeIcon: React$1.ForwardRefExoticComponent<PhosphorIconProps & React$1.RefAttributes<SVGSVGElement>>;
|
|
638
|
+
|
|
639
|
+
declare const InfoIcon: React$1.ForwardRefExoticComponent<PhosphorIconProps & React$1.RefAttributes<SVGSVGElement>>;
|
|
640
|
+
|
|
641
|
+
declare const MagnifyingGlassIcon: React$1.ForwardRefExoticComponent<PhosphorIconProps & React$1.RefAttributes<SVGSVGElement>>;
|
|
642
|
+
|
|
643
|
+
declare const MinusIcon: React$1.ForwardRefExoticComponent<PhosphorIconProps & React$1.RefAttributes<SVGSVGElement>>;
|
|
644
|
+
|
|
645
|
+
declare const MonitorIcon: React$1.ForwardRefExoticComponent<PhosphorIconProps & React$1.RefAttributes<SVGSVGElement>>;
|
|
646
|
+
|
|
647
|
+
declare const MoonIcon: React$1.ForwardRefExoticComponent<PhosphorIconProps & React$1.RefAttributes<SVGSVGElement>>;
|
|
648
|
+
|
|
649
|
+
declare const PauseIcon: React$1.ForwardRefExoticComponent<PhosphorIconProps & React$1.RefAttributes<SVGSVGElement>>;
|
|
650
|
+
|
|
651
|
+
declare const PlayIcon: React$1.ForwardRefExoticComponent<PhosphorIconProps & React$1.RefAttributes<SVGSVGElement>>;
|
|
652
|
+
|
|
653
|
+
declare const QuotesIcon: React$1.ForwardRefExoticComponent<PhosphorIconProps & React$1.RefAttributes<SVGSVGElement>>;
|
|
654
|
+
|
|
655
|
+
declare const SidebarSimpleIcon: React$1.ForwardRefExoticComponent<PhosphorIconProps & React$1.RefAttributes<SVGSVGElement>>;
|
|
656
|
+
|
|
657
|
+
declare const SunIcon: React$1.ForwardRefExoticComponent<PhosphorIconProps & React$1.RefAttributes<SVGSVGElement>>;
|
|
658
|
+
|
|
659
|
+
declare const WarningIcon: React$1.ForwardRefExoticComponent<PhosphorIconProps & React$1.RefAttributes<SVGSVGElement>>;
|
|
660
|
+
|
|
661
|
+
declare const XIcon: React$1.ForwardRefExoticComponent<PhosphorIconProps & React$1.RefAttributes<SVGSVGElement>>;
|
|
662
|
+
|
|
663
|
+
declare const XCircleIcon: React$1.ForwardRefExoticComponent<PhosphorIconProps & React$1.RefAttributes<SVGSVGElement>>;
|
|
664
|
+
|
|
433
665
|
/** Context value exposed by useSaasflareTheme(). */
|
|
434
666
|
interface SaasflareThemeContextType {
|
|
435
667
|
/** Active brand palette id, or null when using baseline. */
|
|
@@ -438,12 +670,16 @@ interface SaasflareThemeContextType {
|
|
|
438
670
|
surface: StyleVariant;
|
|
439
671
|
/** Active radius preset. */
|
|
440
672
|
radius: Radius;
|
|
673
|
+
/** Active icon weight for component-rendered Phosphor icons. */
|
|
674
|
+
iconWeight: IconWeight;
|
|
441
675
|
/** Set the active brand palette (persists to localStorage). */
|
|
442
676
|
setPalette: (id: string) => void;
|
|
443
677
|
/** Set the active surface style (persists to localStorage). */
|
|
444
678
|
setSurface: (style: StyleVariant) => void;
|
|
445
679
|
/** Set the active radius preset (persists to localStorage). */
|
|
446
680
|
setRadius: (radius: Radius) => void;
|
|
681
|
+
/** Set the active icon weight (persists to localStorage). */
|
|
682
|
+
setIconWeight: (weight: IconWeight) => void;
|
|
447
683
|
}
|
|
448
684
|
/**
|
|
449
685
|
* Access the Saasflare theme context.
|
|
@@ -478,9 +714,19 @@ interface SaasflareProviderProps {
|
|
|
478
714
|
* - Omit to defer: uses persisted preference if any, otherwise "rounded"
|
|
479
715
|
*/
|
|
480
716
|
radius?: RadiusProp;
|
|
481
|
-
/**
|
|
717
|
+
/**
|
|
718
|
+
* Default icon weight for component-rendered Phosphor icons.
|
|
719
|
+
* - IconWeight ("regular" | "bold" | "fill" | "duotone") → forces the value
|
|
720
|
+
* - Omit to defer: uses persisted preference if any, otherwise "regular"
|
|
721
|
+
*/
|
|
722
|
+
iconWeight?: IconWeight;
|
|
723
|
+
/**
|
|
724
|
+
* Global animation kill switch.
|
|
725
|
+
* - boolean → forces the value
|
|
726
|
+
* - Omit to defer: uses persisted preference if any, otherwise `true`
|
|
727
|
+
*/
|
|
482
728
|
animated?: boolean;
|
|
483
|
-
/** Enable smooth scrolling site-wide. @default
|
|
729
|
+
/** Enable smooth scrolling site-wide. @default true */
|
|
484
730
|
smoothScrolling?: boolean;
|
|
485
731
|
/**
|
|
486
732
|
* Skip rendering the pre-hydration FOUT-prevention script.
|
|
@@ -520,7 +766,7 @@ interface SaasflareProviderProps {
|
|
|
520
766
|
* @component
|
|
521
767
|
* @package ui
|
|
522
768
|
*/
|
|
523
|
-
declare function SaasflareProvider({ children, theme, palette, surface, radius, animated, smoothScrolling, disableScript, scriptNonce, storageKey, themeStorageKey, }: SaasflareProviderProps): react_jsx_runtime.JSX.Element;
|
|
769
|
+
declare function SaasflareProvider({ children, theme, palette, surface, radius, iconWeight, animated, smoothScrolling, disableScript, scriptNonce, storageKey, themeStorageKey, }: SaasflareProviderProps): react_jsx_runtime.JSX.Element;
|
|
524
770
|
|
|
525
771
|
/** Props for {@link SaasflareShell}. */
|
|
526
772
|
interface SaasflareShellProps extends Omit<SaasflareProviderProps, "children" | "disableScript" | "scriptNonce"> {
|
|
@@ -665,7 +911,7 @@ declare function AlertDialogCancel({ className, ...props }: React$1.ComponentPro
|
|
|
665
911
|
declare function Accordion({ ...props }: React$1.ComponentProps<typeof AccordionPrimitive.Root>): react_jsx_runtime.JSX.Element;
|
|
666
912
|
interface AccordionItemProps extends Omit<React$1.ComponentProps<typeof AccordionPrimitive.Item>, keyof SaasflareComponentProps>, SaasflareComponentProps {
|
|
667
913
|
}
|
|
668
|
-
declare function AccordionItem({ className, surface, radius, animated, ...props }: AccordionItemProps): react_jsx_runtime.JSX.Element;
|
|
914
|
+
declare function AccordionItem({ className, surface, radius, animated, iconWeight, ...props }: AccordionItemProps): react_jsx_runtime.JSX.Element;
|
|
669
915
|
/**
|
|
670
916
|
* Accordion trigger with animated chevron indicator.
|
|
671
917
|
*
|
|
@@ -711,7 +957,7 @@ declare function Textarea({ className, surface, radius, animated, ...props }: Te
|
|
|
711
957
|
|
|
712
958
|
interface CheckboxProps extends Omit<React$1.ComponentProps<typeof CheckboxPrimitive.Root>, keyof SaasflareComponentProps>, SaasflareComponentProps {
|
|
713
959
|
}
|
|
714
|
-
declare function Checkbox({ className, surface, radius, animated, ...props }: CheckboxProps): react_jsx_runtime.JSX.Element;
|
|
960
|
+
declare function Checkbox({ className, surface, radius, animated, iconWeight, ...props }: CheckboxProps): react_jsx_runtime.JSX.Element;
|
|
715
961
|
|
|
716
962
|
interface SwitchProps extends Omit<React$1.ComponentProps<typeof SwitchPrimitive.Root>, keyof SaasflareComponentProps>, SaasflareComponentProps {
|
|
717
963
|
size?: "sm" | "default";
|
|
@@ -733,6 +979,41 @@ interface ProgressProps extends Omit<React$1.ComponentProps<typeof ProgressPrimi
|
|
|
733
979
|
*/
|
|
734
980
|
declare function Progress({ className, value, surface, radius, animated, ...props }: ProgressProps): react_jsx_runtime.JSX.Element;
|
|
735
981
|
|
|
982
|
+
declare const SIZE_PX$1: {
|
|
983
|
+
readonly sm: 48;
|
|
984
|
+
readonly md: 64;
|
|
985
|
+
readonly lg: 96;
|
|
986
|
+
readonly xl: 128;
|
|
987
|
+
};
|
|
988
|
+
type ProgressCircleSize = keyof typeof SIZE_PX$1;
|
|
989
|
+
/** Props for the ProgressCircle component. */
|
|
990
|
+
interface ProgressCircleProps extends SaasflareComponentProps {
|
|
991
|
+
/** Current value in the range `[0, max]`. */
|
|
992
|
+
value: number;
|
|
993
|
+
/** Maximum value. Default: `100`. */
|
|
994
|
+
max?: number;
|
|
995
|
+
/** Size preset. Default: `"md"`. */
|
|
996
|
+
size?: ProgressCircleSize;
|
|
997
|
+
/** Ring stroke width in pixels. Default: derived from `size`. */
|
|
998
|
+
strokeWidth?: number;
|
|
999
|
+
/** Center content (e.g. the numeric label). */
|
|
1000
|
+
children?: ReactNode;
|
|
1001
|
+
/** Additional class names on the outer wrapper. */
|
|
1002
|
+
className?: string;
|
|
1003
|
+
/** Accessible label. Default: `"<value>%"`. */
|
|
1004
|
+
"aria-label"?: string;
|
|
1005
|
+
}
|
|
1006
|
+
/**
|
|
1007
|
+
* Circular progress indicator. Drop-in radial counterpart to Progress.
|
|
1008
|
+
*
|
|
1009
|
+
* @component
|
|
1010
|
+
* @layer core
|
|
1011
|
+
*
|
|
1012
|
+
* @example
|
|
1013
|
+
* <ProgressCircle value={72} />
|
|
1014
|
+
*/
|
|
1015
|
+
declare function ProgressCircle({ value, max, size, strokeWidth, children, className, surface, radius, animated, "aria-label": ariaLabel, }: ProgressCircleProps): react_jsx_runtime.JSX.Element;
|
|
1016
|
+
|
|
736
1017
|
/**
|
|
737
1018
|
* Badge variant definitions.
|
|
738
1019
|
*
|
|
@@ -799,7 +1080,7 @@ declare function SelectTrigger({ className, size, children, ...props }: React$1.
|
|
|
799
1080
|
}): react_jsx_runtime.JSX.Element;
|
|
800
1081
|
interface SelectContentProps extends Omit<React$1.ComponentProps<typeof SelectPrimitive.Content>, keyof SaasflareComponentProps>, SaasflareComponentProps {
|
|
801
1082
|
}
|
|
802
|
-
declare function SelectContent({ className, children, position, surface, radius, animated, ...props }: SelectContentProps): react_jsx_runtime.JSX.Element;
|
|
1083
|
+
declare function SelectContent({ className, children, position, surface, radius, animated, iconWeight, ...props }: SelectContentProps): react_jsx_runtime.JSX.Element;
|
|
803
1084
|
declare function SelectLabel({ className, ...props }: React$1.ComponentProps<typeof SelectPrimitive.Label>): react_jsx_runtime.JSX.Element;
|
|
804
1085
|
declare function SelectItem({ className, children, ...props }: React$1.ComponentProps<typeof SelectPrimitive.Item>): react_jsx_runtime.JSX.Element;
|
|
805
1086
|
declare function SelectSeparator({ className, ...props }: React$1.ComponentProps<typeof SelectPrimitive.Separator>): react_jsx_runtime.JSX.Element;
|
|
@@ -814,7 +1095,7 @@ declare function DropdownMenuSub({ ...props }: React$1.ComponentProps<typeof Dro
|
|
|
814
1095
|
declare function DropdownMenuRadioGroup({ ...props }: React$1.ComponentProps<typeof DropdownMenuPrimitive.RadioGroup>): react_jsx_runtime.JSX.Element;
|
|
815
1096
|
interface DropdownMenuContentProps extends Omit<React$1.ComponentProps<typeof DropdownMenuPrimitive.Content>, keyof SaasflareComponentProps>, SaasflareComponentProps {
|
|
816
1097
|
}
|
|
817
|
-
declare function DropdownMenuContent({ className, sideOffset, surface, radius, animated, ...props }: DropdownMenuContentProps): react_jsx_runtime.JSX.Element;
|
|
1098
|
+
declare function DropdownMenuContent({ className, sideOffset, surface, radius, animated, iconWeight, ...props }: DropdownMenuContentProps): react_jsx_runtime.JSX.Element;
|
|
818
1099
|
declare function DropdownMenuItem({ className, inset, variant, ...props }: React$1.ComponentProps<typeof DropdownMenuPrimitive.Item> & {
|
|
819
1100
|
inset?: boolean;
|
|
820
1101
|
variant?: "default" | "destructive";
|
|
@@ -838,7 +1119,7 @@ interface SheetContentProps extends Omit<React$1.ComponentProps<typeof DialogPri
|
|
|
838
1119
|
side?: "top" | "right" | "bottom" | "left";
|
|
839
1120
|
showCloseButton?: boolean;
|
|
840
1121
|
}
|
|
841
|
-
declare function SheetContent({ className, children, side, showCloseButton, surface, radius, animated, ...props }: SheetContentProps): react_jsx_runtime.JSX.Element;
|
|
1122
|
+
declare function SheetContent({ className, children, side, showCloseButton, surface, radius, animated, iconWeight, ...props }: SheetContentProps): react_jsx_runtime.JSX.Element;
|
|
842
1123
|
declare function SheetHeader({ className, ...props }: React$1.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
|
|
843
1124
|
declare function SheetFooter({ className, ...props }: React$1.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
|
|
844
1125
|
declare function SheetTitle({ className, ...props }: React$1.ComponentProps<typeof DialogPrimitive.Title>): react_jsx_runtime.JSX.Element;
|
|
@@ -880,7 +1161,7 @@ interface AlertProps extends Omit<React$1.ComponentProps<"div">, keyof Saasflare
|
|
|
880
1161
|
* <AlertDescription>Something went wrong.</AlertDescription>
|
|
881
1162
|
* </Alert>
|
|
882
1163
|
*/
|
|
883
|
-
declare function Alert({ className, intent: intentProp, variant, surface, radius, animated, ...props }: AlertProps): react_jsx_runtime.JSX.Element;
|
|
1164
|
+
declare function Alert({ className, intent: intentProp, variant, surface, radius, animated, iconWeight, ...props }: AlertProps): react_jsx_runtime.JSX.Element;
|
|
884
1165
|
/**
|
|
885
1166
|
* Alert title text.
|
|
886
1167
|
*
|
|
@@ -918,7 +1199,7 @@ declare function ContextMenuSubTrigger({ className, inset, children, ...props }:
|
|
|
918
1199
|
declare function ContextMenuSubContent({ className, ...props }: React$1.ComponentProps<typeof ContextMenuPrimitive.SubContent>): react_jsx_runtime.JSX.Element;
|
|
919
1200
|
interface ContextMenuContentProps extends Omit<React$1.ComponentProps<typeof ContextMenuPrimitive.Content>, keyof SaasflareComponentProps>, SaasflareComponentProps {
|
|
920
1201
|
}
|
|
921
|
-
declare function ContextMenuContent({ className, surface, radius, animated, ...props }: ContextMenuContentProps): react_jsx_runtime.JSX.Element;
|
|
1202
|
+
declare function ContextMenuContent({ className, surface, radius, animated, iconWeight, ...props }: ContextMenuContentProps): react_jsx_runtime.JSX.Element;
|
|
922
1203
|
declare function ContextMenuItem({ className, inset, variant, ...props }: React$1.ComponentProps<typeof ContextMenuPrimitive.Item> & {
|
|
923
1204
|
inset?: boolean;
|
|
924
1205
|
variant?: "default" | "destructive";
|
|
@@ -933,7 +1214,7 @@ declare function ContextMenuShortcut({ className, ...props }: React$1.ComponentP
|
|
|
933
1214
|
|
|
934
1215
|
interface MenubarProps extends Omit<React$1.ComponentProps<typeof MenubarPrimitive.Root>, keyof SaasflareComponentProps>, SaasflareComponentProps {
|
|
935
1216
|
}
|
|
936
|
-
declare function Menubar({ className, surface, radius, animated, ...props }: MenubarProps): react_jsx_runtime.JSX.Element;
|
|
1217
|
+
declare function Menubar({ className, surface, radius, animated, iconWeight, ...props }: MenubarProps): react_jsx_runtime.JSX.Element;
|
|
937
1218
|
declare function MenubarMenu({ ...props }: React$1.ComponentProps<typeof MenubarPrimitive.Menu>): react_jsx_runtime.JSX.Element;
|
|
938
1219
|
declare function MenubarGroup({ ...props }: React$1.ComponentProps<typeof MenubarPrimitive.Group>): react_jsx_runtime.JSX.Element;
|
|
939
1220
|
declare function MenubarPortal({ ...props }: React$1.ComponentProps<typeof MenubarPrimitive.Portal>): react_jsx_runtime.JSX.Element;
|
|
@@ -941,7 +1222,7 @@ declare function MenubarRadioGroup({ ...props }: React$1.ComponentProps<typeof M
|
|
|
941
1222
|
declare function MenubarTrigger({ className, ...props }: React$1.ComponentProps<typeof MenubarPrimitive.Trigger>): react_jsx_runtime.JSX.Element;
|
|
942
1223
|
interface MenubarContentProps extends Omit<React$1.ComponentProps<typeof MenubarPrimitive.Content>, keyof SaasflareComponentProps>, SaasflareComponentProps {
|
|
943
1224
|
}
|
|
944
|
-
declare function MenubarContent({ className, align, alignOffset, sideOffset, surface, radius, animated, ...props }: MenubarContentProps): react_jsx_runtime.JSX.Element;
|
|
1225
|
+
declare function MenubarContent({ className, align, alignOffset, sideOffset, surface, radius, animated, iconWeight, ...props }: MenubarContentProps): react_jsx_runtime.JSX.Element;
|
|
945
1226
|
declare function MenubarItem({ className, inset, variant, ...props }: React$1.ComponentProps<typeof MenubarPrimitive.Item> & {
|
|
946
1227
|
inset?: boolean;
|
|
947
1228
|
variant?: "default" | "destructive";
|
|
@@ -962,7 +1243,7 @@ declare function MenubarSubContent({ className, ...props }: React$1.ComponentPro
|
|
|
962
1243
|
interface NavigationMenuProps extends Omit<React$1.ComponentProps<typeof NavigationMenuPrimitive.Root>, keyof SaasflareComponentProps>, SaasflareComponentProps {
|
|
963
1244
|
viewport?: boolean;
|
|
964
1245
|
}
|
|
965
|
-
declare function NavigationMenu({ className, children, viewport, surface, radius, animated, ...props }: NavigationMenuProps): react_jsx_runtime.JSX.Element;
|
|
1246
|
+
declare function NavigationMenu({ className, children, viewport, surface, radius, animated, iconWeight, ...props }: NavigationMenuProps): react_jsx_runtime.JSX.Element;
|
|
966
1247
|
declare function NavigationMenuList({ className, ...props }: React$1.ComponentProps<typeof NavigationMenuPrimitive.List>): react_jsx_runtime.JSX.Element;
|
|
967
1248
|
declare function NavigationMenuItem({ className, ...props }: React$1.ComponentProps<typeof NavigationMenuPrimitive.Item>): react_jsx_runtime.JSX.Element;
|
|
968
1249
|
declare const navigationMenuTriggerStyle: (props?: class_variance_authority_types.ClassProp | undefined) => string;
|
|
@@ -1012,7 +1293,7 @@ declare function ToggleGroupItem({ className, children, variant, size, ...props
|
|
|
1012
1293
|
|
|
1013
1294
|
interface RadioGroupProps extends Omit<React$1.ComponentProps<typeof RadioGroupPrimitive.Root>, keyof SaasflareComponentProps>, SaasflareComponentProps {
|
|
1014
1295
|
}
|
|
1015
|
-
declare function RadioGroup({ className, surface, radius, animated, ...props }: RadioGroupProps): react_jsx_runtime.JSX.Element;
|
|
1296
|
+
declare function RadioGroup({ className, surface, radius, animated, iconWeight, ...props }: RadioGroupProps): react_jsx_runtime.JSX.Element;
|
|
1016
1297
|
declare function RadioGroupItem({ className, ...props }: React$1.ComponentProps<typeof RadioGroupPrimitive.Item>): react_jsx_runtime.JSX.Element;
|
|
1017
1298
|
|
|
1018
1299
|
interface CollapsibleContentProps extends Omit<React$1.ComponentProps<typeof CollapsiblePrimitive.CollapsibleContent>, keyof SaasflareComponentProps>, SaasflareComponentProps {
|
|
@@ -1032,13 +1313,13 @@ declare function ScrollBar({ className, orientation, ...props }: React$1.Compone
|
|
|
1032
1313
|
|
|
1033
1314
|
interface SaasflareToasterProps extends Omit<ToasterProps, keyof SaasflareComponentProps>, SaasflareComponentProps {
|
|
1034
1315
|
}
|
|
1035
|
-
declare const Toaster: ({ surface, radius, animated, ...props }: SaasflareToasterProps) => react_jsx_runtime.JSX.Element;
|
|
1316
|
+
declare const Toaster: ({ surface, radius, animated, iconWeight, ...props }: SaasflareToasterProps) => react_jsx_runtime.JSX.Element;
|
|
1036
1317
|
|
|
1037
1318
|
declare function AspectRatio({ ...props }: React.ComponentProps<typeof AspectRatioPrimitive.Root>): react_jsx_runtime.JSX.Element;
|
|
1038
1319
|
|
|
1039
1320
|
interface BreadcrumbProps extends Omit<React$1.ComponentProps<"nav">, keyof SaasflareComponentProps>, SaasflareComponentProps {
|
|
1040
1321
|
}
|
|
1041
|
-
declare function Breadcrumb({ surface, radius, animated, ...props }: BreadcrumbProps): react_jsx_runtime.JSX.Element;
|
|
1322
|
+
declare function Breadcrumb({ surface, radius, animated, iconWeight, ...props }: BreadcrumbProps): react_jsx_runtime.JSX.Element;
|
|
1042
1323
|
declare function BreadcrumbList({ className, ...props }: React$1.ComponentProps<"ol">): react_jsx_runtime.JSX.Element;
|
|
1043
1324
|
declare function BreadcrumbItem({ className, ...props }: React$1.ComponentProps<"li">): react_jsx_runtime.JSX.Element;
|
|
1044
1325
|
declare function BreadcrumbLink({ asChild, className, ...props }: React$1.ComponentProps<"a"> & {
|
|
@@ -1221,7 +1502,7 @@ declare function KbdGroup({ className, ...props }: React.ComponentProps<"div">):
|
|
|
1221
1502
|
interface NativeSelectProps extends Omit<React$1.ComponentProps<"select">, "size" | keyof SaasflareComponentProps>, SaasflareComponentProps {
|
|
1222
1503
|
size?: "sm" | "default";
|
|
1223
1504
|
}
|
|
1224
|
-
declare function NativeSelect({ className, size, surface, radius, animated, ...props }: NativeSelectProps): react_jsx_runtime.JSX.Element;
|
|
1505
|
+
declare function NativeSelect({ className, size, surface, radius, animated, iconWeight, ...props }: NativeSelectProps): react_jsx_runtime.JSX.Element;
|
|
1225
1506
|
declare function NativeSelectOption({ ...props }: React$1.ComponentProps<"option">): react_jsx_runtime.JSX.Element;
|
|
1226
1507
|
declare function NativeSelectOptGroup({ className, ...props }: React$1.ComponentProps<"optgroup">): react_jsx_runtime.JSX.Element;
|
|
1227
1508
|
|
|
@@ -1478,6 +1759,480 @@ interface MetricCardProps extends Omit<React$1.ComponentProps<"div">, keyof Saas
|
|
|
1478
1759
|
*/
|
|
1479
1760
|
declare function MetricCard({ label, value, trend, icon, className, surface, radius, animated, ...props }: MetricCardProps): react_jsx_runtime.JSX.Element;
|
|
1480
1761
|
|
|
1762
|
+
/** A single row in the list. */
|
|
1763
|
+
interface BarListItem {
|
|
1764
|
+
/** Row label. */
|
|
1765
|
+
name: string;
|
|
1766
|
+
/** Numeric value driving the bar width. */
|
|
1767
|
+
value: number;
|
|
1768
|
+
/** Optional icon shown left of the label. */
|
|
1769
|
+
icon?: ReactNode;
|
|
1770
|
+
/** Optional click target for the row label (wraps in `<a>`). */
|
|
1771
|
+
href?: string;
|
|
1772
|
+
/** Optional per-row color override (any CSS color). */
|
|
1773
|
+
color?: string;
|
|
1774
|
+
}
|
|
1775
|
+
/** Props for the BarList component. */
|
|
1776
|
+
interface BarListProps extends SaasflareComponentProps {
|
|
1777
|
+
/** Rows to render. */
|
|
1778
|
+
data: BarListItem[];
|
|
1779
|
+
/** Formats the numeric value on the right edge. Default: `String(n)`. */
|
|
1780
|
+
valueFormatter?: (value: number) => string;
|
|
1781
|
+
/** Sort rows by value descending. Default: `true`. */
|
|
1782
|
+
sortDescending?: boolean;
|
|
1783
|
+
/** Maximum rows rendered (truncates after sort). */
|
|
1784
|
+
limit?: number;
|
|
1785
|
+
/** Additional class names. */
|
|
1786
|
+
className?: string;
|
|
1787
|
+
}
|
|
1788
|
+
/**
|
|
1789
|
+
* Horizontal bar list — common dashboard "top N" rankings pattern.
|
|
1790
|
+
*
|
|
1791
|
+
* @component
|
|
1792
|
+
* @layer core
|
|
1793
|
+
*/
|
|
1794
|
+
declare function BarList({ data, valueFormatter, sortDescending, limit, className, surface, radius, animated, }: BarListProps): react_jsx_runtime.JSX.Element;
|
|
1795
|
+
|
|
1796
|
+
/** Visual variant of the spark chart. */
|
|
1797
|
+
type SparkChartVariant = "line" | "area" | "bar";
|
|
1798
|
+
/** Props for the SparkChart component. */
|
|
1799
|
+
interface SparkChartProps extends SaasflareComponentProps {
|
|
1800
|
+
/** Series of numeric points (length ≥ 2). */
|
|
1801
|
+
data: number[];
|
|
1802
|
+
/** Visual treatment. Default: `"area"`. */
|
|
1803
|
+
variant?: SparkChartVariant;
|
|
1804
|
+
/** Stroke / fill color (any CSS color). Default: `var(--primary)`. */
|
|
1805
|
+
color?: string;
|
|
1806
|
+
/** SVG width in pixels. Default: `64`. */
|
|
1807
|
+
width?: number;
|
|
1808
|
+
/** SVG height in pixels. Default: `24`. */
|
|
1809
|
+
height?: number;
|
|
1810
|
+
/** Line stroke width in pixels. Default: `1.5`. */
|
|
1811
|
+
strokeWidth?: number;
|
|
1812
|
+
/** Additional class names. */
|
|
1813
|
+
className?: string;
|
|
1814
|
+
/** Accessible label. */
|
|
1815
|
+
"aria-label"?: string;
|
|
1816
|
+
}
|
|
1817
|
+
/**
|
|
1818
|
+
* Inline mini chart for KPI tiles, table cells, and metric cards.
|
|
1819
|
+
*
|
|
1820
|
+
* @component
|
|
1821
|
+
* @layer core
|
|
1822
|
+
*/
|
|
1823
|
+
declare function SparkChart({ data, variant, color, width, height, strokeWidth, className, surface, radius, animated, "aria-label": ariaLabel, }: SparkChartProps): react_jsx_runtime.JSX.Element | null;
|
|
1824
|
+
|
|
1825
|
+
/** A single tracker block. */
|
|
1826
|
+
interface TrackerBlock {
|
|
1827
|
+
/** Named color key (emerald|teal|blue|amber|red|rose|gray) or any CSS color. */
|
|
1828
|
+
color?: string;
|
|
1829
|
+
/** Tooltip text shown on hover. */
|
|
1830
|
+
tooltip?: ReactNode;
|
|
1831
|
+
/** Custom key (helps React when blocks rearrange). */
|
|
1832
|
+
key?: string | number;
|
|
1833
|
+
}
|
|
1834
|
+
/** Props for the Tracker component. */
|
|
1835
|
+
interface TrackerProps extends SaasflareComponentProps {
|
|
1836
|
+
/** Blocks to render, left-to-right. */
|
|
1837
|
+
data: TrackerBlock[];
|
|
1838
|
+
/** Height of each block in px. Default: `32`. */
|
|
1839
|
+
blockHeight?: number;
|
|
1840
|
+
/** Gap between blocks in px. Default: `2`. */
|
|
1841
|
+
gap?: number;
|
|
1842
|
+
/** Additional class names. */
|
|
1843
|
+
className?: string;
|
|
1844
|
+
}
|
|
1845
|
+
/**
|
|
1846
|
+
* Status segment grid (uptime/incident timeline).
|
|
1847
|
+
*
|
|
1848
|
+
* @component
|
|
1849
|
+
* @layer core
|
|
1850
|
+
*/
|
|
1851
|
+
declare function Tracker({ data, blockHeight, gap, className, surface, radius, animated, }: TrackerProps): react_jsx_runtime.JSX.Element;
|
|
1852
|
+
|
|
1853
|
+
/** Reason a file was rejected by the dropzone's built-in validation. */
|
|
1854
|
+
type DropzoneRejectionReason = "too-large" | "type-mismatch";
|
|
1855
|
+
/** A rejected file with the reason. */
|
|
1856
|
+
interface DropzoneRejection {
|
|
1857
|
+
file: File;
|
|
1858
|
+
reason: DropzoneRejectionReason;
|
|
1859
|
+
}
|
|
1860
|
+
/** Props for the Dropzone component. */
|
|
1861
|
+
interface DropzoneProps extends SaasflareComponentProps {
|
|
1862
|
+
/** Called with `(accepted, rejected)` when the user drops or picks files. */
|
|
1863
|
+
onDrop?: (accepted: File[], rejected: DropzoneRejection[]) => void;
|
|
1864
|
+
/** MIME types or extensions to accept (matches `<input accept>`). */
|
|
1865
|
+
accept?: string;
|
|
1866
|
+
/** Maximum file size in bytes. */
|
|
1867
|
+
maxSize?: number;
|
|
1868
|
+
/** Allow multiple file selection. Default: `true`. */
|
|
1869
|
+
multiple?: boolean;
|
|
1870
|
+
/** Disable the dropzone. */
|
|
1871
|
+
disabled?: boolean;
|
|
1872
|
+
/** Render-prop body. Receives `isDragActive`. Falls back to the default UI. */
|
|
1873
|
+
children?: ReactNode | ((state: {
|
|
1874
|
+
isDragActive: boolean;
|
|
1875
|
+
}) => ReactNode);
|
|
1876
|
+
/** Additional class names. */
|
|
1877
|
+
className?: string;
|
|
1878
|
+
}
|
|
1879
|
+
/**
|
|
1880
|
+
* Drag-and-drop file upload area with click-to-open fallback.
|
|
1881
|
+
*
|
|
1882
|
+
* @component
|
|
1883
|
+
* @layer core
|
|
1884
|
+
*/
|
|
1885
|
+
declare function Dropzone({ onDrop, accept, maxSize, multiple, disabled, children, className, surface, radius, animated, }: DropzoneProps): react_jsx_runtime.JSX.Element;
|
|
1886
|
+
|
|
1887
|
+
/** Inclusive date range, identical shape to react-day-picker's `DateRange`. */
|
|
1888
|
+
interface DateRange {
|
|
1889
|
+
from: Date | undefined;
|
|
1890
|
+
to?: Date | undefined;
|
|
1891
|
+
}
|
|
1892
|
+
/** Props for the DateRangePicker component. */
|
|
1893
|
+
interface DateRangePickerProps extends SaasflareComponentProps {
|
|
1894
|
+
/** Controlled value. */
|
|
1895
|
+
value?: DateRange;
|
|
1896
|
+
/** Uncontrolled default value. */
|
|
1897
|
+
defaultValue?: DateRange;
|
|
1898
|
+
/** Called when the user picks a new range. */
|
|
1899
|
+
onChange?: (range: DateRange | undefined) => void;
|
|
1900
|
+
/** Placeholder shown in the trigger when no range is set. */
|
|
1901
|
+
placeholder?: string;
|
|
1902
|
+
/** Number of months shown side-by-side. Default: `2`. */
|
|
1903
|
+
numberOfMonths?: number;
|
|
1904
|
+
/** Earliest pickable date. */
|
|
1905
|
+
minDate?: Date;
|
|
1906
|
+
/** Latest pickable date. */
|
|
1907
|
+
maxDate?: Date;
|
|
1908
|
+
/** Disable the trigger. */
|
|
1909
|
+
disabled?: boolean;
|
|
1910
|
+
/** Format function for the trigger label. Default: locale-aware `toLocaleDateString`. */
|
|
1911
|
+
formatRange?: (range: DateRange) => string;
|
|
1912
|
+
/** Additional class names on the trigger. */
|
|
1913
|
+
className?: string;
|
|
1914
|
+
}
|
|
1915
|
+
/**
|
|
1916
|
+
* Date-range input + popover calendar. Composes Button + Popover + Calendar.
|
|
1917
|
+
*
|
|
1918
|
+
* @component
|
|
1919
|
+
* @layer core
|
|
1920
|
+
*/
|
|
1921
|
+
declare function DateRangePicker({ value, defaultValue, onChange, placeholder, numberOfMonths, minDate, maxDate, disabled, formatRange, className, surface, radius, animated, iconWeight, }: DateRangePickerProps): react_jsx_runtime.JSX.Element;
|
|
1922
|
+
|
|
1923
|
+
/** Props for the DatePicker component. */
|
|
1924
|
+
interface DatePickerProps extends SaasflareComponentProps {
|
|
1925
|
+
/** Controlled value. */
|
|
1926
|
+
value?: Date;
|
|
1927
|
+
/** Uncontrolled default value. */
|
|
1928
|
+
defaultValue?: Date;
|
|
1929
|
+
/** Called when the user picks a date. */
|
|
1930
|
+
onChange?: (date: Date | undefined) => void;
|
|
1931
|
+
/** Placeholder shown when no date is set. */
|
|
1932
|
+
placeholder?: string;
|
|
1933
|
+
/** Earliest pickable date. */
|
|
1934
|
+
minDate?: Date;
|
|
1935
|
+
/** Latest pickable date. */
|
|
1936
|
+
maxDate?: Date;
|
|
1937
|
+
/** Disable the trigger. */
|
|
1938
|
+
disabled?: boolean;
|
|
1939
|
+
/** Format function for the trigger label. Default: locale-aware. */
|
|
1940
|
+
formatDate?: (date: Date) => string;
|
|
1941
|
+
/** Additional class names on the trigger. */
|
|
1942
|
+
className?: string;
|
|
1943
|
+
}
|
|
1944
|
+
/**
|
|
1945
|
+
* Single-date input + popover calendar. Composes Button + Popover + Calendar.
|
|
1946
|
+
*
|
|
1947
|
+
* @component
|
|
1948
|
+
* @layer core
|
|
1949
|
+
*/
|
|
1950
|
+
declare function DatePicker({ value, defaultValue, onChange, placeholder, minDate, maxDate, disabled, formatDate, className, surface, radius, animated, iconWeight, }: DatePickerProps): react_jsx_runtime.JSX.Element;
|
|
1951
|
+
|
|
1952
|
+
declare const INTENTS: readonly ["primary", "neutral", "success", "warning", "danger", "info"];
|
|
1953
|
+
type CalloutIntent = (typeof INTENTS)[number];
|
|
1954
|
+
/** Props for the Callout component. */
|
|
1955
|
+
interface CalloutProps extends SaasflareComponentProps {
|
|
1956
|
+
/** Color intent. Default: `"info"`. */
|
|
1957
|
+
intent?: CalloutIntent;
|
|
1958
|
+
/** Bold title rendered above the body. */
|
|
1959
|
+
title?: ReactNode;
|
|
1960
|
+
/** Leading icon (rendered in the same color as the intent stripe). */
|
|
1961
|
+
icon?: ReactNode;
|
|
1962
|
+
/** Body content. */
|
|
1963
|
+
children?: ReactNode;
|
|
1964
|
+
/** Additional class names. */
|
|
1965
|
+
className?: string;
|
|
1966
|
+
}
|
|
1967
|
+
/**
|
|
1968
|
+
* Inline emphasized message box with intent-driven coloring.
|
|
1969
|
+
*
|
|
1970
|
+
* @component
|
|
1971
|
+
* @layer core
|
|
1972
|
+
*
|
|
1973
|
+
* @example
|
|
1974
|
+
* <Callout intent="success" title="Saved">Your changes are live.</Callout>
|
|
1975
|
+
*/
|
|
1976
|
+
declare function Callout({ intent, title, icon, children, className, surface, radius, animated, iconWeight, }: CalloutProps): react_jsx_runtime.JSX.Element;
|
|
1977
|
+
|
|
1978
|
+
/** Props for the TagInput component. */
|
|
1979
|
+
interface TagInputProps extends SaasflareComponentProps {
|
|
1980
|
+
/** Controlled list of tags. */
|
|
1981
|
+
value?: string[];
|
|
1982
|
+
/** Uncontrolled initial tags. */
|
|
1983
|
+
defaultValue?: string[];
|
|
1984
|
+
/** Called whenever the tag list changes. */
|
|
1985
|
+
onChange?: (tags: string[]) => void;
|
|
1986
|
+
/** Placeholder shown in the input. */
|
|
1987
|
+
placeholder?: string;
|
|
1988
|
+
/** Maximum number of tags accepted. */
|
|
1989
|
+
maxTags?: number;
|
|
1990
|
+
/** Characters that commit the current input as a tag. Default: `[",", "Enter"]`. */
|
|
1991
|
+
separators?: string[];
|
|
1992
|
+
/** Reject duplicate tags. Default: `true`. */
|
|
1993
|
+
unique?: boolean;
|
|
1994
|
+
/** Disable the input. */
|
|
1995
|
+
disabled?: boolean;
|
|
1996
|
+
/** Custom renderer for each pill. Falls back to the default pill UI. */
|
|
1997
|
+
renderTag?: (tag: string, onRemove: () => void) => ReactNode;
|
|
1998
|
+
/** Additional class names on the outer wrapper. */
|
|
1999
|
+
className?: string;
|
|
2000
|
+
/** Accessible label. */
|
|
2001
|
+
"aria-label"?: string;
|
|
2002
|
+
}
|
|
2003
|
+
/**
|
|
2004
|
+
* Input field that converts text into removable tag pills.
|
|
2005
|
+
*
|
|
2006
|
+
* @component
|
|
2007
|
+
* @layer core
|
|
2008
|
+
*/
|
|
2009
|
+
declare function TagInput({ value, defaultValue, onChange, placeholder, maxTags, separators, unique, disabled, renderTag, className, surface, radius, animated, "aria-label": ariaLabel, }: TagInputProps): react_jsx_runtime.JSX.Element;
|
|
2010
|
+
|
|
2011
|
+
/** Props for the NumberInput component. */
|
|
2012
|
+
interface NumberInputProps extends SaasflareComponentProps {
|
|
2013
|
+
/** Controlled value. */
|
|
2014
|
+
value?: number;
|
|
2015
|
+
/** Uncontrolled initial value. */
|
|
2016
|
+
defaultValue?: number;
|
|
2017
|
+
/** Called when the value changes (after clamp). */
|
|
2018
|
+
onChange?: (value: number) => void;
|
|
2019
|
+
/** Minimum allowed value. */
|
|
2020
|
+
min?: number;
|
|
2021
|
+
/** Maximum allowed value. */
|
|
2022
|
+
max?: number;
|
|
2023
|
+
/** Step for stepper buttons + arrow keys. Default: `1`. */
|
|
2024
|
+
step?: number;
|
|
2025
|
+
/** Decimal precision for display. Default: derived from `step`. */
|
|
2026
|
+
precision?: number;
|
|
2027
|
+
/** Placeholder shown when empty. */
|
|
2028
|
+
placeholder?: string;
|
|
2029
|
+
/** Disable the input. */
|
|
2030
|
+
disabled?: boolean;
|
|
2031
|
+
/** Read-only input. */
|
|
2032
|
+
readOnly?: boolean;
|
|
2033
|
+
/** Hide the stepper buttons. */
|
|
2034
|
+
hideSteppers?: boolean;
|
|
2035
|
+
/** Additional class names on the outer wrapper. */
|
|
2036
|
+
className?: string;
|
|
2037
|
+
/** Name attribute (for form submission). */
|
|
2038
|
+
name?: string;
|
|
2039
|
+
/** Accessible label. */
|
|
2040
|
+
"aria-label"?: string;
|
|
2041
|
+
}
|
|
2042
|
+
/**
|
|
2043
|
+
* Numeric input with stepper buttons and clamping.
|
|
2044
|
+
*
|
|
2045
|
+
* @component
|
|
2046
|
+
* @layer core
|
|
2047
|
+
*/
|
|
2048
|
+
declare function NumberInput({ value, defaultValue, onChange, min, max, step, precision, placeholder, disabled, readOnly, hideSteppers, className, name, surface, radius, animated, "aria-label": ariaLabel, }: NumberInputProps): react_jsx_runtime.JSX.Element;
|
|
2049
|
+
|
|
2050
|
+
declare const SIZE_PX: {
|
|
2051
|
+
readonly sm: 14;
|
|
2052
|
+
readonly md: 20;
|
|
2053
|
+
readonly lg: 28;
|
|
2054
|
+
readonly xl: 36;
|
|
2055
|
+
};
|
|
2056
|
+
type RatingSize = keyof typeof SIZE_PX;
|
|
2057
|
+
/** Props for the Rating component. */
|
|
2058
|
+
interface RatingProps extends SaasflareComponentProps {
|
|
2059
|
+
/** Controlled value (0..count). */
|
|
2060
|
+
value?: number;
|
|
2061
|
+
/** Uncontrolled initial value. */
|
|
2062
|
+
defaultValue?: number;
|
|
2063
|
+
/** Called when the user clicks a star. */
|
|
2064
|
+
onChange?: (value: number) => void;
|
|
2065
|
+
/** Number of stars. Default: `5`. */
|
|
2066
|
+
count?: number;
|
|
2067
|
+
/** Allow half-star granularity. Default: `false`. */
|
|
2068
|
+
allowHalf?: boolean;
|
|
2069
|
+
/** Read-only display mode (no interaction, no hover preview). */
|
|
2070
|
+
readOnly?: boolean;
|
|
2071
|
+
/** Disable the rating. */
|
|
2072
|
+
disabled?: boolean;
|
|
2073
|
+
/** Star size. Default: `"md"`. */
|
|
2074
|
+
size?: RatingSize;
|
|
2075
|
+
/** Star color (any CSS color). Default: `var(--warning)` — brand-independent gold. */
|
|
2076
|
+
color?: string;
|
|
2077
|
+
/** Additional class names. */
|
|
2078
|
+
className?: string;
|
|
2079
|
+
/** Accessible label. */
|
|
2080
|
+
"aria-label"?: string;
|
|
2081
|
+
}
|
|
2082
|
+
/**
|
|
2083
|
+
* Star rating input with half-star and read-only support.
|
|
2084
|
+
*
|
|
2085
|
+
* @component
|
|
2086
|
+
* @layer core
|
|
2087
|
+
*/
|
|
2088
|
+
declare function Rating({ value, defaultValue, onChange, count, allowHalf, readOnly, disabled, size, color, className, surface, radius, animated, "aria-label": ariaLabel, }: RatingProps): react_jsx_runtime.JSX.Element;
|
|
2089
|
+
|
|
2090
|
+
/** A single segment of the bar. */
|
|
2091
|
+
interface CategoryBarSegment {
|
|
2092
|
+
/** Numeric value driving the segment width (auto-normalized). */
|
|
2093
|
+
value: number;
|
|
2094
|
+
/** Any CSS color. Falls back to a derived primary tint. */
|
|
2095
|
+
color?: string;
|
|
2096
|
+
/** Optional label shown below the segment when `showLabels` is true. */
|
|
2097
|
+
label?: string;
|
|
2098
|
+
}
|
|
2099
|
+
/** Props for the CategoryBar component. */
|
|
2100
|
+
interface CategoryBarProps extends SaasflareComponentProps {
|
|
2101
|
+
/** Segments to render, left-to-right. */
|
|
2102
|
+
segments: CategoryBarSegment[];
|
|
2103
|
+
/** Bar height in pixels. Default: `8`. */
|
|
2104
|
+
height?: number;
|
|
2105
|
+
/** Render labels + percentages under each segment. */
|
|
2106
|
+
showLabels?: boolean;
|
|
2107
|
+
/** Formats the percentage text. Default: `"NN%"`. */
|
|
2108
|
+
valueFormatter?: (percent: number) => string;
|
|
2109
|
+
/** Additional class names. */
|
|
2110
|
+
className?: string;
|
|
2111
|
+
/** Accessible label for the bar group. */
|
|
2112
|
+
"aria-label"?: string;
|
|
2113
|
+
}
|
|
2114
|
+
/**
|
|
2115
|
+
* Segmented progress bar with optional labels.
|
|
2116
|
+
*
|
|
2117
|
+
* @component
|
|
2118
|
+
* @layer core
|
|
2119
|
+
*/
|
|
2120
|
+
declare function CategoryBar({ segments, height, showLabels, valueFormatter, className, surface, radius, animated, "aria-label": ariaLabel, }: CategoryBarProps): react_jsx_runtime.JSX.Element | null;
|
|
2121
|
+
|
|
2122
|
+
/** A single tree node. */
|
|
2123
|
+
interface TreeNode {
|
|
2124
|
+
/** Unique node id (stable across renders). */
|
|
2125
|
+
id: string;
|
|
2126
|
+
/** Display label or any ReactNode. */
|
|
2127
|
+
label: ReactNode;
|
|
2128
|
+
/** Leading icon (e.g. file/folder glyph). */
|
|
2129
|
+
icon?: ReactNode;
|
|
2130
|
+
/** Child nodes (omit for leaves). */
|
|
2131
|
+
children?: TreeNode[];
|
|
2132
|
+
/** Disable interaction for this node. */
|
|
2133
|
+
disabled?: boolean;
|
|
2134
|
+
}
|
|
2135
|
+
/** Props for the TreeView component. */
|
|
2136
|
+
interface TreeViewProps extends SaasflareComponentProps {
|
|
2137
|
+
/** Tree data, top-level nodes. */
|
|
2138
|
+
data: TreeNode[];
|
|
2139
|
+
/** Controlled expanded ids. */
|
|
2140
|
+
expanded?: string[];
|
|
2141
|
+
/** Uncontrolled initial expansion. */
|
|
2142
|
+
defaultExpanded?: string[];
|
|
2143
|
+
/** Called when a node is expanded/collapsed. */
|
|
2144
|
+
onExpand?: (ids: string[]) => void;
|
|
2145
|
+
/** Controlled selected id. */
|
|
2146
|
+
selected?: string | null;
|
|
2147
|
+
/** Uncontrolled initial selection. */
|
|
2148
|
+
defaultSelected?: string | null;
|
|
2149
|
+
/** Called when selection changes. */
|
|
2150
|
+
onSelect?: (id: string | null) => void;
|
|
2151
|
+
/** Additional class names on the root. */
|
|
2152
|
+
className?: string;
|
|
2153
|
+
}
|
|
2154
|
+
/**
|
|
2155
|
+
* Recursive expand/collapse tree with keyboard navigation.
|
|
2156
|
+
*
|
|
2157
|
+
* @component
|
|
2158
|
+
* @layer core
|
|
2159
|
+
*/
|
|
2160
|
+
declare function TreeView({ data, expanded, defaultExpanded, onExpand, selected, defaultSelected, onSelect, className, surface, radius, animated, iconWeight, }: TreeViewProps): react_jsx_runtime.JSX.Element;
|
|
2161
|
+
|
|
2162
|
+
/** Props for the CodeBlock component. */
|
|
2163
|
+
interface CodeBlockProps extends SaasflareComponentProps {
|
|
2164
|
+
/** Plain source code (rendered as monospace, no highlighting). */
|
|
2165
|
+
code?: string;
|
|
2166
|
+
/** Pre-highlighted HTML — e.g. output from Shiki's `codeToHtml`. */
|
|
2167
|
+
highlighted?: string;
|
|
2168
|
+
/** Language label shown in the header (purely cosmetic). */
|
|
2169
|
+
language?: string;
|
|
2170
|
+
/** Filename shown left of the language badge. */
|
|
2171
|
+
filename?: string;
|
|
2172
|
+
/** Show 1-based line numbers in the gutter. */
|
|
2173
|
+
showLineNumbers?: boolean;
|
|
2174
|
+
/** Hide the top bar (copy button still floats inside the block). */
|
|
2175
|
+
hideHeader?: boolean;
|
|
2176
|
+
/** Hide the copy-to-clipboard button. */
|
|
2177
|
+
hideCopyButton?: boolean;
|
|
2178
|
+
/** Additional class names on the outer wrapper. */
|
|
2179
|
+
className?: string;
|
|
2180
|
+
}
|
|
2181
|
+
/**
|
|
2182
|
+
* Code block with filename header, language badge, copy button, and optional
|
|
2183
|
+
* line numbers. Highlighting is BYO (pass `highlighted` HTML or `code` text).
|
|
2184
|
+
*
|
|
2185
|
+
* @component
|
|
2186
|
+
* @layer core
|
|
2187
|
+
*/
|
|
2188
|
+
declare function CodeBlock({ code, highlighted, language, filename, showLineNumbers, hideHeader, hideCopyButton, className, surface, radius, animated, }: CodeBlockProps): react_jsx_runtime.JSX.Element;
|
|
2189
|
+
|
|
2190
|
+
/** A single notification item. */
|
|
2191
|
+
interface NotificationItem {
|
|
2192
|
+
/** Stable unique id. */
|
|
2193
|
+
id: string;
|
|
2194
|
+
/** Bold title line. */
|
|
2195
|
+
title: ReactNode;
|
|
2196
|
+
/** Secondary body line. */
|
|
2197
|
+
description?: ReactNode;
|
|
2198
|
+
/** Display timestamp (already formatted — e.g. "5m ago"). */
|
|
2199
|
+
timestamp?: string;
|
|
2200
|
+
/** Whether the notification has been read. */
|
|
2201
|
+
read?: boolean;
|
|
2202
|
+
/** Optional leading icon. */
|
|
2203
|
+
icon?: ReactNode;
|
|
2204
|
+
/** Optional href — wraps the row in `<a>`. */
|
|
2205
|
+
href?: string;
|
|
2206
|
+
}
|
|
2207
|
+
/** Props for the NotificationCenter component. */
|
|
2208
|
+
interface NotificationCenterProps extends SaasflareComponentProps {
|
|
2209
|
+
/** Notifications to display. */
|
|
2210
|
+
items: NotificationItem[];
|
|
2211
|
+
/** Header title in the popover. Default: `"Notifications"`. */
|
|
2212
|
+
title?: string;
|
|
2213
|
+
/** Called when the user clicks a row (also passes the item). */
|
|
2214
|
+
onItemClick?: (item: NotificationItem) => void;
|
|
2215
|
+
/** Called when "Mark as read" is tapped on a row. */
|
|
2216
|
+
onMarkRead?: (id: string) => void;
|
|
2217
|
+
/** Called when "Mark all as read" is tapped. Hide the action by omitting this. */
|
|
2218
|
+
onMarkAllRead?: () => void;
|
|
2219
|
+
/** Custom empty-state content. */
|
|
2220
|
+
emptyState?: ReactNode;
|
|
2221
|
+
/** Maximum items rendered (older ones truncated). */
|
|
2222
|
+
limit?: number;
|
|
2223
|
+
/** Additional class names on the trigger button. */
|
|
2224
|
+
triggerClassName?: string;
|
|
2225
|
+
/** Additional class names on the popover content. */
|
|
2226
|
+
contentClassName?: string;
|
|
2227
|
+
}
|
|
2228
|
+
/**
|
|
2229
|
+
* Bell trigger + dropdown inbox of notifications.
|
|
2230
|
+
*
|
|
2231
|
+
* @component
|
|
2232
|
+
* @layer core
|
|
2233
|
+
*/
|
|
2234
|
+
declare function NotificationCenter({ items, title, onItemClick, onMarkRead, onMarkAllRead, emptyState, limit, triggerClassName, contentClassName, surface, radius, animated, iconWeight, }: NotificationCenterProps): react_jsx_runtime.JSX.Element;
|
|
2235
|
+
|
|
1481
2236
|
/** Props for the EmptyState component */
|
|
1482
2237
|
interface EmptyStateProps extends Omit<React$1.ComponentProps<"div">, keyof SaasflareComponentProps>, SaasflareComponentProps {
|
|
1483
2238
|
/** Icon or illustration element */
|
|
@@ -1536,7 +2291,7 @@ interface SearchFieldProps extends Omit<React$1.ComponentProps<"input">, "type"
|
|
|
1536
2291
|
* loading={isSearching}
|
|
1537
2292
|
* />
|
|
1538
2293
|
*/
|
|
1539
|
-
declare function SearchField({ className, loading, onClear, value, surface, radius, animated, ...props }: SearchFieldProps): react_jsx_runtime.JSX.Element;
|
|
2294
|
+
declare function SearchField({ className, loading, onClear, value, surface, radius, animated, iconWeight, ...props }: SearchFieldProps): react_jsx_runtime.JSX.Element;
|
|
1540
2295
|
|
|
1541
2296
|
/** Props for the SettingsSection component */
|
|
1542
2297
|
interface SettingsSectionProps extends Omit<React$1.ComponentProps<"div">, keyof SaasflareComponentProps>, SaasflareComponentProps {
|
|
@@ -1606,7 +2361,7 @@ interface PricingCardProps extends Omit<React$1.ComponentProps<"div">, keyof Saa
|
|
|
1606
2361
|
* featured
|
|
1607
2362
|
* />
|
|
1608
2363
|
*/
|
|
1609
|
-
declare function PricingCard({ name, price, period, description, features, cta, featured, className, surface, radius, animated, ...props }: PricingCardProps): react_jsx_runtime.JSX.Element;
|
|
2364
|
+
declare function PricingCard({ name, price, period, description, features, cta, featured, className, surface, radius, animated, iconWeight, ...props }: PricingCardProps): react_jsx_runtime.JSX.Element;
|
|
1610
2365
|
|
|
1611
2366
|
interface DataToolbarProps extends Omit<React$1.ComponentProps<"div">, keyof SaasflareComponentProps>, SaasflareComponentProps {
|
|
1612
2367
|
}
|
|
@@ -1647,51 +2402,1368 @@ declare function DataToolbarFilters({ className, ...props }: React$1.ComponentPr
|
|
|
1647
2402
|
*/
|
|
1648
2403
|
declare function DataToolbarActions({ className, ...props }: React$1.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
|
|
1649
2404
|
|
|
2405
|
+
/** Props for the AuroraBackground component. */
|
|
2406
|
+
interface AuroraBackgroundProps extends Omit<ComponentProps<"div">, keyof SaasflareComponentProps | "color">, SaasflareComponentProps {
|
|
2407
|
+
/**
|
|
2408
|
+
* Three ambient blob colors in order: top-left, right, bottom-left.
|
|
2409
|
+
* Default: curated peach + blue + violet showcase palette.
|
|
2410
|
+
*/
|
|
2411
|
+
colors?: readonly [string, string, string];
|
|
2412
|
+
/** Overall blob opacity (0–1). Default: `0.55`. Auto-halved in dark mode via `dark:` modifier. */
|
|
2413
|
+
intensity?: number;
|
|
2414
|
+
}
|
|
1650
2415
|
/**
|
|
1651
|
-
*
|
|
2416
|
+
* Soft multi-color gradient backdrop for showcase, demo, and marketing sections.
|
|
1652
2417
|
*
|
|
1653
|
-
*
|
|
1654
|
-
*
|
|
2418
|
+
* Renders three blurred radial blobs positioned at corners around the children
|
|
2419
|
+
* slot. Default palette is a fixed showcase combination (peach / blue / violet)
|
|
2420
|
+
* so the visual stays consistent across brand palettes; pass `colors` to switch
|
|
2421
|
+
* to brand-rotating tokens. Drift animation is on by default and respects
|
|
2422
|
+
* `prefers-reduced-motion`.
|
|
2423
|
+
*
|
|
2424
|
+
* @component
|
|
2425
|
+
* @layer core
|
|
1655
2426
|
*/
|
|
1656
|
-
|
|
1657
|
-
|
|
1658
|
-
|
|
1659
|
-
|
|
1660
|
-
|
|
1661
|
-
|
|
1662
|
-
/**
|
|
1663
|
-
|
|
1664
|
-
|
|
1665
|
-
*/
|
|
1666
|
-
scrollOffset?: number;
|
|
1667
|
-
/** Additional class names merged onto the root button. */
|
|
2427
|
+
declare function AuroraBackground({ colors, intensity, className, children, surface, radius, animated, ...props }: AuroraBackgroundProps): react_jsx_runtime.JSX.Element;
|
|
2428
|
+
|
|
2429
|
+
/** Props for the AudioPlayer component. */
|
|
2430
|
+
interface AudioPlayerProps extends SaasflareComponentProps {
|
|
2431
|
+
/** Audio source URL. */
|
|
2432
|
+
src: string;
|
|
2433
|
+
/** Track title. */
|
|
2434
|
+
title?: string;
|
|
2435
|
+
/** Additional class names. */
|
|
1668
2436
|
className?: string;
|
|
1669
2437
|
}
|
|
1670
2438
|
/**
|
|
1671
|
-
*
|
|
1672
|
-
* the user back to the top of the container (or window).
|
|
2439
|
+
* Styled audio player with play/pause, seek, and time display.
|
|
1673
2440
|
*
|
|
1674
2441
|
* @component
|
|
2442
|
+
* @package ui
|
|
1675
2443
|
*/
|
|
1676
|
-
declare function
|
|
2444
|
+
declare function AudioPlayer({ src, title, className, surface, radius, animated, }: AudioPlayerProps): react_jsx_runtime.JSX.Element;
|
|
1677
2445
|
|
|
2446
|
+
/** Props for the BentoGrid container. */
|
|
2447
|
+
interface BentoGridProps {
|
|
2448
|
+
/** Grid items. */
|
|
2449
|
+
children: ReactNode;
|
|
2450
|
+
/** Number of columns at md+ breakpoint. Default: `3` */
|
|
2451
|
+
columns?: 2 | 3 | 4;
|
|
2452
|
+
/** Gap between items in Tailwind spacing units (4 = 1rem). Default: `4` */
|
|
2453
|
+
gap?: number;
|
|
2454
|
+
/** Additional class names. */
|
|
2455
|
+
className?: string;
|
|
2456
|
+
}
|
|
1678
2457
|
/**
|
|
1679
|
-
*
|
|
2458
|
+
* Responsive bento-style grid container with staggered item entrance.
|
|
2459
|
+
*
|
|
2460
|
+
* - Items animate in with a staggered fade+slide
|
|
2461
|
+
* - Supports 2, 3, or 4 column layouts (1 column on mobile)
|
|
2462
|
+
* - Items can span multiple columns/rows via BentoGridItem
|
|
1680
2463
|
*
|
|
1681
2464
|
* @component
|
|
1682
|
-
* @
|
|
2465
|
+
* @package ui
|
|
2466
|
+
*/
|
|
2467
|
+
declare function BentoGrid({ children, columns, gap, className, }: BentoGridProps): react_jsx_runtime.JSX.Element;
|
|
2468
|
+
/** Props for a BentoGridItem. */
|
|
2469
|
+
interface BentoGridItemProps extends SaasflareComponentProps {
|
|
2470
|
+
/** Item content. */
|
|
2471
|
+
children: ReactNode;
|
|
2472
|
+
/** Number of columns to span (1–4). Default: `1` */
|
|
2473
|
+
colSpan?: 1 | 2 | 3 | 4;
|
|
2474
|
+
/** Number of rows to span (1–3). Default: `1` */
|
|
2475
|
+
rowSpan?: 1 | 2 | 3;
|
|
2476
|
+
/** Stagger delay index (multiply by 0.08 for delay). Default: `0` */
|
|
2477
|
+
index?: number;
|
|
2478
|
+
/** Additional class names. */
|
|
2479
|
+
className?: string;
|
|
2480
|
+
}
|
|
2481
|
+
/**
|
|
2482
|
+
* Individual item within a BentoGrid.
|
|
1683
2483
|
*
|
|
1684
|
-
*
|
|
1685
|
-
*
|
|
1686
|
-
*
|
|
1687
|
-
*
|
|
1688
|
-
* @
|
|
2484
|
+
* - Supports column and row spanning
|
|
2485
|
+
* - Animates in with a staggered fade + vertical slide
|
|
2486
|
+
* - Pass `index` for stagger ordering
|
|
2487
|
+
*
|
|
2488
|
+
* @component
|
|
2489
|
+
* @package ui
|
|
1689
2490
|
*/
|
|
1690
|
-
declare function
|
|
1691
|
-
|
|
1692
|
-
|
|
2491
|
+
declare function BentoGridItem({ children, colSpan, rowSpan, index, className, surface, radius, animated, }: BentoGridItemProps): react_jsx_runtime.JSX.Element;
|
|
2492
|
+
|
|
2493
|
+
/** Props for the BlurFade component. */
|
|
2494
|
+
interface BlurFadeProps {
|
|
2495
|
+
/** Content to animate. */
|
|
2496
|
+
children: ReactNode;
|
|
2497
|
+
/** Animation delay in seconds (use for staggering). Default: `0` */
|
|
2498
|
+
delay?: number;
|
|
2499
|
+
/** Initial blur amount in pixels. Default: `8` */
|
|
2500
|
+
blur?: number;
|
|
2501
|
+
/** Vertical offset in pixels. Default: `12` */
|
|
2502
|
+
yOffset?: number;
|
|
2503
|
+
/** Animation duration in seconds. Default: `0.5` */
|
|
2504
|
+
duration?: number;
|
|
2505
|
+
/** Whether animation triggers only once. Default: `true` */
|
|
2506
|
+
once?: boolean;
|
|
2507
|
+
/** Additional class names. */
|
|
2508
|
+
className?: string;
|
|
2509
|
+
}
|
|
2510
|
+
/**
|
|
2511
|
+
* Entrance animation that combines blur, opacity, and vertical slide.
|
|
2512
|
+
*
|
|
2513
|
+
* - Great for staggered reveals: pass incrementing `delay` values
|
|
2514
|
+
* - Blur clears simultaneously with the fade for a cohesive effect
|
|
2515
|
+
* - Renders children statically when reduced motion is preferred
|
|
2516
|
+
* - Uses Intersection Observer to trigger on viewport entry
|
|
2517
|
+
*
|
|
2518
|
+
* @component
|
|
2519
|
+
* @package ui
|
|
2520
|
+
*/
|
|
2521
|
+
declare function BlurFade({ children, delay, blur, yOffset, duration, once, className, }: BlurFadeProps): react_jsx_runtime.JSX.Element;
|
|
2522
|
+
|
|
2523
|
+
/** Props for the BorderBeam component. */
|
|
2524
|
+
interface BorderBeamProps {
|
|
2525
|
+
/** Beam color. Default: `"hsl(var(--primary))"` */
|
|
2526
|
+
color?: string;
|
|
2527
|
+
/** Tail fade color. Default: `"transparent"` */
|
|
2528
|
+
colorFrom?: string;
|
|
2529
|
+
/** Animation cycle duration in seconds. Default: `6` */
|
|
2530
|
+
duration?: number;
|
|
2531
|
+
/** Beam length in pixels. Default: `150` */
|
|
2532
|
+
size?: number;
|
|
2533
|
+
/** Border radius to follow (CSS value). Default: `"inherit"` */
|
|
2534
|
+
borderRadius?: string;
|
|
2535
|
+
/** Additional class names. */
|
|
1693
2536
|
className?: string;
|
|
1694
|
-
}
|
|
2537
|
+
}
|
|
2538
|
+
/**
|
|
2539
|
+
* Glowing beam that orbits the border of its parent container.
|
|
2540
|
+
*
|
|
2541
|
+
* - Place inside a `position: relative; overflow: hidden` parent
|
|
2542
|
+
* - CSS-only animation (no JS animation loop)
|
|
2543
|
+
* - Renders nothing when reduced motion is preferred
|
|
2544
|
+
*
|
|
2545
|
+
* @component
|
|
2546
|
+
* @package ui
|
|
2547
|
+
*/
|
|
2548
|
+
declare function BorderBeam({ color, colorFrom, duration, size, borderRadius, className, }: BorderBeamProps): react_jsx_runtime.JSX.Element | null;
|
|
2549
|
+
|
|
2550
|
+
/** Props for the Compare component. */
|
|
2551
|
+
interface CompareProps {
|
|
2552
|
+
/** Content shown on the left (before) side. */
|
|
2553
|
+
before: ReactNode;
|
|
2554
|
+
/** Content shown on the right (after) side. */
|
|
2555
|
+
after: ReactNode;
|
|
2556
|
+
/** Label for the before side. */
|
|
2557
|
+
beforeLabel?: string;
|
|
2558
|
+
/** Label for the after side. */
|
|
2559
|
+
afterLabel?: string;
|
|
2560
|
+
/** Initial divider position as percentage (0–100). Default: `50` */
|
|
2561
|
+
initialPosition?: number;
|
|
2562
|
+
/** CSS aspect-ratio for the container. Default: `"16/9"` */
|
|
2563
|
+
aspectRatio?: string;
|
|
2564
|
+
/** Additional class names. */
|
|
2565
|
+
className?: string;
|
|
2566
|
+
}
|
|
2567
|
+
/**
|
|
2568
|
+
* Draggable before/after comparison slider.
|
|
2569
|
+
*
|
|
2570
|
+
* - Pointer-based dragging (works on mouse and touch)
|
|
2571
|
+
* - Optional before/after labels
|
|
2572
|
+
* - Content is clipped, not resized
|
|
2573
|
+
* - Fully accessible with keyboard support
|
|
2574
|
+
*
|
|
2575
|
+
* @component
|
|
2576
|
+
* @package ui
|
|
2577
|
+
*/
|
|
2578
|
+
declare function Compare({ before, after, beforeLabel, afterLabel, initialPosition, aspectRatio, className, }: CompareProps): react_jsx_runtime.JSX.Element;
|
|
2579
|
+
|
|
2580
|
+
/** Props for the Confetti component. */
|
|
2581
|
+
interface ConfettiProps {
|
|
2582
|
+
/** Whether the confetti burst is active. */
|
|
2583
|
+
active: boolean;
|
|
2584
|
+
/** Number of confetti particles. Default: `40` */
|
|
2585
|
+
count?: number;
|
|
2586
|
+
/** Array of CSS colors for particles. */
|
|
2587
|
+
colors?: string[];
|
|
2588
|
+
/** Duration in milliseconds before auto-cleanup. Default: `3000` */
|
|
2589
|
+
duration?: number;
|
|
2590
|
+
/** Callback when animation completes. */
|
|
2591
|
+
onComplete?: () => void;
|
|
2592
|
+
/** Additional class names. */
|
|
2593
|
+
className?: string;
|
|
2594
|
+
}
|
|
2595
|
+
/**
|
|
2596
|
+
* Confetti burst animation overlay.
|
|
2597
|
+
*
|
|
2598
|
+
* - CSS-only particles with randomized trajectories
|
|
2599
|
+
* - Fires once when `active` becomes `true`
|
|
2600
|
+
* - Calls `onComplete` when the animation finishes
|
|
2601
|
+
* - Renders nothing when reduced motion is preferred
|
|
2602
|
+
*
|
|
2603
|
+
* @component
|
|
2604
|
+
* @package ui
|
|
2605
|
+
*/
|
|
2606
|
+
declare function Confetti({ active, count, colors, duration, onComplete, className, }: ConfettiProps): react_jsx_runtime.JSX.Element | null;
|
|
2607
|
+
|
|
2608
|
+
/** Props for the Countdown component. */
|
|
2609
|
+
interface CountdownProps {
|
|
2610
|
+
/** Number of days remaining. */
|
|
2611
|
+
days: number;
|
|
2612
|
+
/** Number of hours remaining (0–23). */
|
|
2613
|
+
hours: number;
|
|
2614
|
+
/** Number of minutes remaining (0–59). */
|
|
2615
|
+
minutes: number;
|
|
2616
|
+
/** Number of seconds remaining (0–59). */
|
|
2617
|
+
seconds: number;
|
|
2618
|
+
/** Show the labels below each box. Default: `true` */
|
|
2619
|
+
showLabels?: boolean;
|
|
2620
|
+
/** Additional class names. */
|
|
2621
|
+
className?: string;
|
|
2622
|
+
}
|
|
2623
|
+
/**
|
|
2624
|
+
* Countdown display with segmented boxes for each time unit.
|
|
2625
|
+
*
|
|
2626
|
+
* @component
|
|
2627
|
+
* @package ui
|
|
2628
|
+
*/
|
|
2629
|
+
declare function Countdown({ days, hours, minutes, seconds, showLabels, className, }: CountdownProps): react_jsx_runtime.JSX.Element;
|
|
2630
|
+
|
|
2631
|
+
/** Props for the SafariMock component. */
|
|
2632
|
+
interface SafariMockProps {
|
|
2633
|
+
/** Content to display inside the browser frame. */
|
|
2634
|
+
children: ReactNode;
|
|
2635
|
+
/** URL text shown in the address bar. Default: `"https://example.com"` */
|
|
2636
|
+
url?: string;
|
|
2637
|
+
/** Additional class names. */
|
|
2638
|
+
className?: string;
|
|
2639
|
+
}
|
|
2640
|
+
/**
|
|
2641
|
+
* Safari-style browser frame for wrapping screenshots.
|
|
2642
|
+
*
|
|
2643
|
+
* - CSS-only traffic lights (red/yellow/green dots)
|
|
2644
|
+
* - Address bar with optional URL text
|
|
2645
|
+
* - Rounded corners matching macOS window chrome
|
|
2646
|
+
*
|
|
2647
|
+
* @component
|
|
2648
|
+
* @package ui
|
|
2649
|
+
*/
|
|
2650
|
+
declare function SafariMock({ children, url, className, }: SafariMockProps): react_jsx_runtime.JSX.Element;
|
|
2651
|
+
/** Props for the IPhoneMock component. */
|
|
2652
|
+
interface IPhoneMockProps {
|
|
2653
|
+
/** Content to display inside the phone frame. */
|
|
2654
|
+
children: ReactNode;
|
|
2655
|
+
/** Additional class names. */
|
|
2656
|
+
className?: string;
|
|
2657
|
+
}
|
|
2658
|
+
/**
|
|
2659
|
+
* iPhone-style device frame for wrapping mobile screenshots.
|
|
2660
|
+
*
|
|
2661
|
+
* - CSS-only frame with rounded corners and notch
|
|
2662
|
+
* - Status bar with time and signal indicators
|
|
2663
|
+
* - Aspect ratio matches iPhone 15 Pro proportions
|
|
2664
|
+
*
|
|
2665
|
+
* @component
|
|
2666
|
+
* @package ui
|
|
2667
|
+
*/
|
|
2668
|
+
declare function IPhoneMock({ children, className, }: IPhoneMockProps): react_jsx_runtime.JSX.Element;
|
|
2669
|
+
|
|
2670
|
+
/** Props for the Dock container. */
|
|
2671
|
+
interface DockProps extends SaasflareComponentProps {
|
|
2672
|
+
/** Dock items. */
|
|
2673
|
+
children: ReactNode;
|
|
2674
|
+
/** Maximum scale factor for magnified items. Default: `1.5` */
|
|
2675
|
+
magnification?: number;
|
|
2676
|
+
/** Mouse proximity distance in pixels that triggers magnification. Default: `100` */
|
|
2677
|
+
distance?: number;
|
|
2678
|
+
/** Additional class names. */
|
|
2679
|
+
className?: string;
|
|
2680
|
+
}
|
|
2681
|
+
/**
|
|
2682
|
+
* Horizontal dock bar with proximity-based item magnification.
|
|
2683
|
+
*
|
|
2684
|
+
* - Items scale up as the mouse approaches them
|
|
2685
|
+
* - Uses spring physics for smooth, elastic scaling
|
|
2686
|
+
* - Falls back to a static icon bar when reduced motion is preferred
|
|
2687
|
+
* - Tracks mouse X position across the entire dock
|
|
2688
|
+
*
|
|
2689
|
+
* @component
|
|
2690
|
+
* @package ui
|
|
2691
|
+
*/
|
|
2692
|
+
declare function Dock({ children, magnification, distance, className, surface, radius, animated, }: DockProps): react_jsx_runtime.JSX.Element;
|
|
2693
|
+
/** Props for a DockItem. */
|
|
2694
|
+
interface DockItemProps {
|
|
2695
|
+
/** Icon or content inside the dock item. */
|
|
2696
|
+
children: ReactNode;
|
|
2697
|
+
/** Tooltip label for the item. */
|
|
2698
|
+
label: string;
|
|
2699
|
+
/** Click handler. */
|
|
2700
|
+
onClick?: () => void;
|
|
2701
|
+
/** Additional class names. */
|
|
2702
|
+
className?: string;
|
|
2703
|
+
}
|
|
2704
|
+
/**
|
|
2705
|
+
* Individual item within a Dock.
|
|
2706
|
+
*
|
|
2707
|
+
* - Magnifies based on mouse proximity using spring interpolation
|
|
2708
|
+
* - Shows a tooltip label on hover
|
|
2709
|
+
* - Renders at static base size when reduced motion is preferred
|
|
2710
|
+
*
|
|
2711
|
+
* @component
|
|
2712
|
+
* @package ui
|
|
2713
|
+
*/
|
|
2714
|
+
declare function DockItem({ children, label, onClick, className, }: DockItemProps): react_jsx_runtime.JSX.Element;
|
|
2715
|
+
|
|
2716
|
+
/** Props for the FeatureCard component. */
|
|
2717
|
+
interface FeatureCardProps extends SaasflareComponentProps {
|
|
2718
|
+
/** Icon element displayed at the top. */
|
|
2719
|
+
icon?: ReactNode;
|
|
2720
|
+
/** Feature title. */
|
|
2721
|
+
title: string;
|
|
2722
|
+
/** Feature description text. */
|
|
2723
|
+
description: string;
|
|
2724
|
+
/** Additional class names. */
|
|
2725
|
+
className?: string;
|
|
2726
|
+
}
|
|
2727
|
+
/**
|
|
2728
|
+
* Feature card with icon, title, and description.
|
|
2729
|
+
*
|
|
2730
|
+
* @component
|
|
2731
|
+
* @package ui
|
|
2732
|
+
*/
|
|
2733
|
+
declare function FeatureCard({ icon, title, description, className, surface, radius, animated, }: FeatureCardProps): react_jsx_runtime.JSX.Element;
|
|
2734
|
+
|
|
2735
|
+
/** Props for the FlipWords component. */
|
|
2736
|
+
interface FlipWordsProps {
|
|
2737
|
+
/** Array of words to cycle through. */
|
|
2738
|
+
words: string[];
|
|
2739
|
+
/** Cycle interval in milliseconds. Default: `2500` */
|
|
2740
|
+
interval?: number;
|
|
2741
|
+
/** Additional class names. */
|
|
2742
|
+
className?: string;
|
|
2743
|
+
}
|
|
2744
|
+
/**
|
|
2745
|
+
* Inline word rotator with vertical flip animation.
|
|
2746
|
+
*
|
|
2747
|
+
* - Words flip upward with a spring transition
|
|
2748
|
+
* - Container width matches the longest word to prevent layout shifts
|
|
2749
|
+
* - Falls back to showing the first word statically when reduced motion is preferred
|
|
2750
|
+
* - Renders inline, so it can be placed mid-sentence
|
|
2751
|
+
*
|
|
2752
|
+
* @component
|
|
2753
|
+
* @package ui
|
|
2754
|
+
*/
|
|
2755
|
+
declare function FlipWords({ words, interval, className, }: FlipWordsProps): react_jsx_runtime.JSX.Element;
|
|
2756
|
+
|
|
2757
|
+
/** Props for the GalleryLightbox component. */
|
|
2758
|
+
interface GalleryLightboxProps {
|
|
2759
|
+
/** Array of image URLs. */
|
|
2760
|
+
images: string[];
|
|
2761
|
+
/** Whether the lightbox is open. */
|
|
2762
|
+
open: boolean;
|
|
2763
|
+
/** Current image index. */
|
|
2764
|
+
index: number;
|
|
2765
|
+
/** Called when the lightbox should close. */
|
|
2766
|
+
onClose: () => void;
|
|
2767
|
+
/** Called when the index changes. */
|
|
2768
|
+
onIndexChange: (index: number) => void;
|
|
2769
|
+
/** Additional class names. */
|
|
2770
|
+
className?: string;
|
|
2771
|
+
}
|
|
2772
|
+
/**
|
|
2773
|
+
* Fullscreen image lightbox with keyboard navigation.
|
|
2774
|
+
*
|
|
2775
|
+
* @component
|
|
2776
|
+
* @package ui
|
|
2777
|
+
*/
|
|
2778
|
+
declare function GalleryLightbox({ images, open, index, onClose, onIndexChange, className, }: GalleryLightboxProps): react_jsx_runtime.JSX.Element;
|
|
2779
|
+
|
|
2780
|
+
/** Props for the GlowingEffect component. */
|
|
2781
|
+
interface GlowingEffectProps {
|
|
2782
|
+
/** Glow color. Default: `"hsl(var(--primary))"` */
|
|
2783
|
+
color?: string;
|
|
2784
|
+
/** Glow spread diameter in pixels. Default: `150` */
|
|
2785
|
+
spread?: number;
|
|
2786
|
+
/** Blur radius in pixels. Default: `20` */
|
|
2787
|
+
blur?: number;
|
|
2788
|
+
/** Glow opacity (0–1). Default: `0.4` */
|
|
2789
|
+
opacity?: number;
|
|
2790
|
+
/** Border radius to match parent (CSS value). Default: `"inherit"` */
|
|
2791
|
+
borderRadius?: string;
|
|
2792
|
+
/** Additional class names. */
|
|
2793
|
+
className?: string;
|
|
2794
|
+
}
|
|
2795
|
+
/**
|
|
2796
|
+
* Mouse-following glow effect for container borders.
|
|
2797
|
+
*
|
|
2798
|
+
* - Tracks mouse position and renders a radial gradient at cursor
|
|
2799
|
+
* - Only glows along the border (uses inset mask to hollow out center)
|
|
2800
|
+
* - Fades out when the mouse leaves
|
|
2801
|
+
* - Renders nothing when reduced motion is preferred
|
|
2802
|
+
*
|
|
2803
|
+
* @component
|
|
2804
|
+
* @package ui
|
|
2805
|
+
*/
|
|
2806
|
+
declare function GlowingEffect({ color, spread, blur, opacity, borderRadius, className, }: GlowingEffectProps): react_jsx_runtime.JSX.Element | null;
|
|
2807
|
+
|
|
2808
|
+
/** Props for the GradientText component. */
|
|
2809
|
+
interface GradientTextProps {
|
|
2810
|
+
/** Text content to apply the gradient to. */
|
|
2811
|
+
children: ReactNode;
|
|
2812
|
+
/** Gradient color stops. Default: primary → chart-1 → chart-2 tokens */
|
|
2813
|
+
colors?: string[];
|
|
2814
|
+
/** Whether to animate the gradient position. Default: `true` */
|
|
2815
|
+
animate?: boolean;
|
|
2816
|
+
/** Animation cycle duration in seconds. Default: `6` */
|
|
2817
|
+
speed?: number;
|
|
2818
|
+
/** Gradient direction in degrees. Default: `90` */
|
|
2819
|
+
angle?: number;
|
|
2820
|
+
/** Additional class names. */
|
|
2821
|
+
className?: string;
|
|
2822
|
+
}
|
|
2823
|
+
/**
|
|
2824
|
+
* Text with a vibrant gradient fill, optionally animated.
|
|
2825
|
+
*
|
|
2826
|
+
* - Uses `background-clip: text` for the gradient effect
|
|
2827
|
+
* - Animates via CSS `@keyframes` (no JS frames)
|
|
2828
|
+
* - Falls back to primary color when reduced motion is preferred
|
|
2829
|
+
* - Renders as an inline `<span>` to nest inside any heading or paragraph
|
|
2830
|
+
*
|
|
2831
|
+
* @component
|
|
2832
|
+
* @package ui
|
|
2833
|
+
*/
|
|
2834
|
+
declare function GradientText({ children, colors, animate, speed, angle, className, }: GradientTextProps): react_jsx_runtime.JSX.Element;
|
|
2835
|
+
|
|
2836
|
+
/** Props for the HeroVideoDialog component. */
|
|
2837
|
+
interface HeroVideoDialogProps {
|
|
2838
|
+
/** Video embed URL (YouTube/Vimeo embed or direct video URL). */
|
|
2839
|
+
videoSrc: string;
|
|
2840
|
+
/** Poster thumbnail image URL. */
|
|
2841
|
+
thumbnailSrc: string;
|
|
2842
|
+
/** Alt text for the thumbnail image. */
|
|
2843
|
+
thumbnailAlt: string;
|
|
2844
|
+
/** CSS aspect-ratio for the thumbnail. Default: `"16/9"` */
|
|
2845
|
+
aspectRatio?: string;
|
|
2846
|
+
/** Additional class names for the container. */
|
|
2847
|
+
className?: string;
|
|
2848
|
+
}
|
|
2849
|
+
/**
|
|
2850
|
+
* Hero video section with click-to-play dialog.
|
|
2851
|
+
*
|
|
2852
|
+
* - Shows a thumbnail with a centered play button
|
|
2853
|
+
* - Opens a modal dialog with the embedded video on click
|
|
2854
|
+
* - Animated with spring physics (scale + fade)
|
|
2855
|
+
* - Accessible: focus management, keyboard close, aria labels
|
|
2856
|
+
*
|
|
2857
|
+
* @component
|
|
2858
|
+
* @package ui
|
|
2859
|
+
*/
|
|
2860
|
+
declare function HeroVideoDialog({ videoSrc, thumbnailSrc, thumbnailAlt, aspectRatio, className, }: HeroVideoDialogProps): react_jsx_runtime.JSX.Element;
|
|
2861
|
+
|
|
2862
|
+
/** Props for the Hotspot container. */
|
|
2863
|
+
interface HotspotProps {
|
|
2864
|
+
/** Background content (image, illustration, etc.) plus HotspotMarker children. */
|
|
2865
|
+
children: ReactNode;
|
|
2866
|
+
/** Additional class names. */
|
|
2867
|
+
className?: string;
|
|
2868
|
+
}
|
|
2869
|
+
/**
|
|
2870
|
+
* Container for positioned hotspot markers.
|
|
2871
|
+
*
|
|
2872
|
+
* @component
|
|
2873
|
+
* @package ui
|
|
2874
|
+
*/
|
|
2875
|
+
declare function Hotspot({ children, className }: HotspotProps): react_jsx_runtime.JSX.Element;
|
|
2876
|
+
/** Props for a HotspotMarker. */
|
|
2877
|
+
interface HotspotMarkerProps {
|
|
2878
|
+
/** Horizontal position as percentage (0–100). */
|
|
2879
|
+
x: number;
|
|
2880
|
+
/** Vertical position as percentage (0–100). */
|
|
2881
|
+
y: number;
|
|
2882
|
+
/** Tooltip label text. */
|
|
2883
|
+
label: string;
|
|
2884
|
+
/** Detailed description shown in the tooltip. */
|
|
2885
|
+
description?: string;
|
|
2886
|
+
/** Marker dot color. Default: `"hsl(var(--primary))"` */
|
|
2887
|
+
color?: string;
|
|
2888
|
+
/** Additional class names. */
|
|
2889
|
+
className?: string;
|
|
2890
|
+
}
|
|
2891
|
+
/**
|
|
2892
|
+
* Pulsing dot marker with hover tooltip at an absolute position.
|
|
2893
|
+
*
|
|
2894
|
+
* @component
|
|
2895
|
+
* @package ui
|
|
2896
|
+
*/
|
|
2897
|
+
declare function HotspotMarker({ x, y, label, description, color, className, }: HotspotMarkerProps): react_jsx_runtime.JSX.Element;
|
|
2898
|
+
|
|
2899
|
+
/**
|
|
2900
|
+
* @fileoverview Image that swaps to an alternate source on hover.
|
|
2901
|
+
* @author Saasflare™
|
|
2902
|
+
* Crossfades between a primary and alternate image on mouse hover.
|
|
2903
|
+
* @module packages/ui/components/ui/image-swap-hover
|
|
2904
|
+
* @package ui
|
|
2905
|
+
*
|
|
2906
|
+
* @component
|
|
2907
|
+
* @example
|
|
2908
|
+
* import { ImageSwapHover } from '@saasflare/ui';
|
|
2909
|
+
* <ImageSwapHover
|
|
2910
|
+
* src="/product-front.jpg"
|
|
2911
|
+
* hoverSrc="/product-back.jpg"
|
|
2912
|
+
* alt="Product view"
|
|
2913
|
+
* />
|
|
2914
|
+
*/
|
|
2915
|
+
/** Props for the ImageSwapHover component. */
|
|
2916
|
+
interface ImageSwapHoverProps {
|
|
2917
|
+
/** Default image source. */
|
|
2918
|
+
src: string;
|
|
2919
|
+
/** Image source to show on hover. */
|
|
2920
|
+
hoverSrc: string;
|
|
2921
|
+
/** Alt text for both images. */
|
|
2922
|
+
alt: string;
|
|
2923
|
+
/** CSS aspect-ratio. Default: `"1/1"` */
|
|
2924
|
+
aspectRatio?: string;
|
|
2925
|
+
/** Additional class names. */
|
|
2926
|
+
className?: string;
|
|
2927
|
+
}
|
|
2928
|
+
/**
|
|
2929
|
+
* Image that crossfades to an alternate source on hover.
|
|
2930
|
+
*
|
|
2931
|
+
* @component
|
|
2932
|
+
* @package ui
|
|
2933
|
+
*/
|
|
2934
|
+
declare function ImageSwapHover({ src, hoverSrc, alt, aspectRatio, className, }: ImageSwapHoverProps): react_jsx_runtime.JSX.Element;
|
|
2935
|
+
|
|
2936
|
+
/** Props for the Marquee component. */
|
|
2937
|
+
interface MarqueeProps {
|
|
2938
|
+
/** Items to scroll infinitely. */
|
|
2939
|
+
children: ReactNode;
|
|
2940
|
+
/** Reverse scroll direction. Default: `false` */
|
|
2941
|
+
reverse?: boolean;
|
|
2942
|
+
/** Scroll duration in seconds for one full cycle. Default: `40` */
|
|
2943
|
+
speed?: number;
|
|
2944
|
+
/** Pause scrolling on hover. Default: `true` */
|
|
2945
|
+
pauseOnHover?: boolean;
|
|
2946
|
+
/** Gap between items in pixels. Default: `48` */
|
|
2947
|
+
gap?: number;
|
|
2948
|
+
/** Number of times to duplicate the content strip. Default: `2` */
|
|
2949
|
+
repeat?: number;
|
|
2950
|
+
/** Enable vertical scrolling instead of horizontal. Default: `false` */
|
|
2951
|
+
vertical?: boolean;
|
|
2952
|
+
/** Additional class names for the container. */
|
|
2953
|
+
className?: string;
|
|
2954
|
+
}
|
|
2955
|
+
/**
|
|
2956
|
+
* Infinite-scrolling content ticker.
|
|
2957
|
+
*
|
|
2958
|
+
* - Pure CSS animation (no JS frames, no Framer Motion overhead)
|
|
2959
|
+
* - Duplicates children to create a seamless loop
|
|
2960
|
+
* - Pauses on hover for readability (configurable)
|
|
2961
|
+
* - Falls back to static flex row when reduced motion is preferred
|
|
2962
|
+
*
|
|
2963
|
+
* @component
|
|
2964
|
+
* @package ui
|
|
2965
|
+
*/
|
|
2966
|
+
declare function Marquee({ children, reverse, speed, pauseOnHover, gap, repeat, vertical, className, }: MarqueeProps): react_jsx_runtime.JSX.Element;
|
|
2967
|
+
|
|
2968
|
+
/** Props for the MouseGradientBlob component. */
|
|
2969
|
+
interface MouseGradientBlobProps {
|
|
2970
|
+
/** Diameter of the blob in pixels. Default: `500` */
|
|
2971
|
+
size?: number;
|
|
2972
|
+
/** Gradient color stops. Default: primary + chart-2 tokens */
|
|
2973
|
+
colors?: [string, string];
|
|
2974
|
+
/** Opacity of the blob (0–1). Default: `0.15` */
|
|
2975
|
+
opacity?: number;
|
|
2976
|
+
/** Blur radius in pixels. Default: `80` */
|
|
2977
|
+
blur?: number;
|
|
2978
|
+
/** Additional class names for the container */
|
|
2979
|
+
className?: string;
|
|
2980
|
+
}
|
|
2981
|
+
/**
|
|
2982
|
+
* Ambient gradient blob that follows the mouse.
|
|
2983
|
+
*
|
|
2984
|
+
* - Uses spring physics for smooth, organic motion
|
|
2985
|
+
* - Fades out when the mouse leaves the container
|
|
2986
|
+
* - Renders nothing when reduced motion is preferred
|
|
2987
|
+
* - Uses `pointer-events: none` so it never blocks interaction
|
|
2988
|
+
*
|
|
2989
|
+
* @component
|
|
2990
|
+
* @package ui
|
|
2991
|
+
*/
|
|
2992
|
+
declare function MouseGradientBlob({ size, colors, opacity, blur, className, }: MouseGradientBlobProps): react_jsx_runtime.JSX.Element | null;
|
|
2993
|
+
|
|
2994
|
+
/** Props for the MovingBorder component. */
|
|
2995
|
+
interface MovingBorderProps {
|
|
2996
|
+
/** Content inside the border. */
|
|
2997
|
+
children: ReactNode;
|
|
2998
|
+
/** Gradient colors for the rotating border. */
|
|
2999
|
+
colors?: string[];
|
|
3000
|
+
/** Rotation cycle duration in seconds. Default: `6` */
|
|
3001
|
+
duration?: number;
|
|
3002
|
+
/** Border width in pixels. Default: `1.5` */
|
|
3003
|
+
borderWidth?: number;
|
|
3004
|
+
/** Border radius (CSS value). Default: `"0.75rem"` */
|
|
3005
|
+
borderRadius?: string;
|
|
3006
|
+
/** Additional class names for the outer wrapper. */
|
|
3007
|
+
className?: string;
|
|
3008
|
+
}
|
|
3009
|
+
/**
|
|
3010
|
+
* Wrapper with a continuously rotating gradient border.
|
|
3011
|
+
*
|
|
3012
|
+
* - Uses a conic-gradient that rotates via CSS animation
|
|
3013
|
+
* - Inner content sits on top with a solid background
|
|
3014
|
+
* - Renders a static border when reduced motion is preferred
|
|
3015
|
+
* - Works on any element (buttons, cards, containers)
|
|
3016
|
+
*
|
|
3017
|
+
* @component
|
|
3018
|
+
* @package ui
|
|
3019
|
+
*/
|
|
3020
|
+
declare function MovingBorder({ children, colors, duration, borderWidth, borderRadius, className, }: MovingBorderProps): react_jsx_runtime.JSX.Element;
|
|
3021
|
+
|
|
3022
|
+
/** Animation variant presets for page transitions. */
|
|
3023
|
+
declare const VARIANTS: {
|
|
3024
|
+
readonly fade: {
|
|
3025
|
+
readonly initial: {
|
|
3026
|
+
readonly opacity: 0;
|
|
3027
|
+
};
|
|
3028
|
+
readonly animate: {
|
|
3029
|
+
readonly opacity: 1;
|
|
3030
|
+
};
|
|
3031
|
+
readonly exit: {
|
|
3032
|
+
readonly opacity: 0;
|
|
3033
|
+
};
|
|
3034
|
+
};
|
|
3035
|
+
readonly slideUp: {
|
|
3036
|
+
readonly initial: {
|
|
3037
|
+
readonly opacity: 0;
|
|
3038
|
+
readonly y: 16;
|
|
3039
|
+
};
|
|
3040
|
+
readonly animate: {
|
|
3041
|
+
readonly opacity: 1;
|
|
3042
|
+
readonly y: 0;
|
|
3043
|
+
};
|
|
3044
|
+
readonly exit: {
|
|
3045
|
+
readonly opacity: 0;
|
|
3046
|
+
readonly y: -16;
|
|
3047
|
+
};
|
|
3048
|
+
};
|
|
3049
|
+
readonly slideDown: {
|
|
3050
|
+
readonly initial: {
|
|
3051
|
+
readonly opacity: 0;
|
|
3052
|
+
readonly y: -16;
|
|
3053
|
+
};
|
|
3054
|
+
readonly animate: {
|
|
3055
|
+
readonly opacity: 1;
|
|
3056
|
+
readonly y: 0;
|
|
3057
|
+
};
|
|
3058
|
+
readonly exit: {
|
|
3059
|
+
readonly opacity: 0;
|
|
3060
|
+
readonly y: 16;
|
|
3061
|
+
};
|
|
3062
|
+
};
|
|
3063
|
+
readonly scale: {
|
|
3064
|
+
readonly initial: {
|
|
3065
|
+
readonly opacity: 0;
|
|
3066
|
+
readonly scale: 0.96;
|
|
3067
|
+
};
|
|
3068
|
+
readonly animate: {
|
|
3069
|
+
readonly opacity: 1;
|
|
3070
|
+
readonly scale: 1;
|
|
3071
|
+
};
|
|
3072
|
+
readonly exit: {
|
|
3073
|
+
readonly opacity: 0;
|
|
3074
|
+
readonly scale: 0.96;
|
|
3075
|
+
};
|
|
3076
|
+
};
|
|
3077
|
+
};
|
|
3078
|
+
/** Props for the PageTransition component. */
|
|
3079
|
+
interface PageTransitionProps {
|
|
3080
|
+
/** Child content to animate. */
|
|
3081
|
+
children: ReactNode;
|
|
3082
|
+
/** Animation preset. Default: `"fade"` */
|
|
3083
|
+
variant?: keyof typeof VARIANTS;
|
|
3084
|
+
/** Transition duration in seconds. Default: `0.3` */
|
|
3085
|
+
duration?: number;
|
|
3086
|
+
/** Unique key for AnimatePresence (use pathname). Default: none */
|
|
3087
|
+
transitionKey?: string;
|
|
3088
|
+
/** Additional class names for the motion wrapper. */
|
|
3089
|
+
className?: string;
|
|
3090
|
+
}
|
|
3091
|
+
/**
|
|
3092
|
+
* Page transition wrapper with configurable enter/exit animations.
|
|
3093
|
+
*
|
|
3094
|
+
* - Provides `fade`, `slideUp`, `slideDown`, and `scale` presets
|
|
3095
|
+
* - Renders children directly (no animation) when reduced motion is preferred
|
|
3096
|
+
* - Use `transitionKey` (typically the pathname) to trigger re-animation on route changes
|
|
3097
|
+
*
|
|
3098
|
+
* @component
|
|
3099
|
+
* @package ui
|
|
3100
|
+
*/
|
|
3101
|
+
declare function PageTransition({ children, variant, duration, transitionKey, className, }: PageTransitionProps): react_jsx_runtime.JSX.Element;
|
|
3102
|
+
|
|
3103
|
+
/** Props for the ParallaxSection component. */
|
|
3104
|
+
interface ParallaxSectionProps {
|
|
3105
|
+
/** Content to apply parallax to. */
|
|
3106
|
+
children: ReactNode;
|
|
3107
|
+
/** Parallax speed factor. 0 = fixed, 0.5 = half speed, 1 = no parallax. Default: `0.5` */
|
|
3108
|
+
speed?: number;
|
|
3109
|
+
/** Additional class names. */
|
|
3110
|
+
className?: string;
|
|
3111
|
+
}
|
|
3112
|
+
/**
|
|
3113
|
+
* Section wrapper that applies scroll-based parallax to its children.
|
|
3114
|
+
*
|
|
3115
|
+
* - Children translate vertically based on scroll position and speed factor
|
|
3116
|
+
* - Falls back to static rendering when reduced motion is preferred
|
|
3117
|
+
* - Overflow hidden to prevent content leaking during parallax
|
|
3118
|
+
*
|
|
3119
|
+
* @component
|
|
3120
|
+
* @package ui
|
|
3121
|
+
*/
|
|
3122
|
+
declare function ParallaxSection({ children, speed, className, }: ParallaxSectionProps): react_jsx_runtime.JSX.Element;
|
|
3123
|
+
|
|
3124
|
+
/** Props for the ParticlesBackground component. */
|
|
3125
|
+
interface ParticlesBackgroundProps {
|
|
3126
|
+
/** Number of particles. Default: `20` */
|
|
3127
|
+
count?: number;
|
|
3128
|
+
/** CSS color of particles. Default: `"hsl(var(--primary))"` */
|
|
3129
|
+
color?: string;
|
|
3130
|
+
/** Maximum particle diameter in pixels. Default: `4` */
|
|
3131
|
+
maxSize?: number;
|
|
3132
|
+
/** Minimum particle diameter in pixels. Default: `1` */
|
|
3133
|
+
minSize?: number;
|
|
3134
|
+
/** Maximum particle opacity (0–1). Default: `0.3` */
|
|
3135
|
+
maxOpacity?: number;
|
|
3136
|
+
/** Animation speed multiplier. Default: `1` */
|
|
3137
|
+
speed?: number;
|
|
3138
|
+
/** Additional class names for the container. */
|
|
3139
|
+
className?: string;
|
|
3140
|
+
}
|
|
3141
|
+
/**
|
|
3142
|
+
* Ambient floating particles background.
|
|
3143
|
+
*
|
|
3144
|
+
* - CSS-only animation (no JS animation loop, GPU-composited)
|
|
3145
|
+
* - Deterministic positions (no layout shift between renders)
|
|
3146
|
+
* - Renders nothing when reduced motion is preferred
|
|
3147
|
+
* - Lightweight: no canvas, no WebGL
|
|
3148
|
+
*
|
|
3149
|
+
* @component
|
|
3150
|
+
* @package ui
|
|
3151
|
+
*/
|
|
3152
|
+
declare function ParticlesBackground({ count, color, maxSize, minSize, maxOpacity, speed, className, }: ParticlesBackgroundProps): react_jsx_runtime.JSX.Element | null;
|
|
3153
|
+
|
|
3154
|
+
/**
|
|
3155
|
+
* @fileoverview Perspective grid background with retro/cyberpunk aesthetic.
|
|
3156
|
+
* @author Saasflare™
|
|
3157
|
+
* A CSS-only perspective grid that fades toward the horizon. Ideal for
|
|
3158
|
+
* hero sections and feature backgrounds.
|
|
3159
|
+
* @module packages/ui/components/ui/retro-grid
|
|
3160
|
+
* @package ui
|
|
3161
|
+
*
|
|
3162
|
+
* @component
|
|
3163
|
+
* @example
|
|
3164
|
+
* import { RetroGrid } from '@saasflare/ui';
|
|
3165
|
+
* <div className="relative min-h-[500px]">
|
|
3166
|
+
* <RetroGrid />
|
|
3167
|
+
* <div className="relative z-10">Hero content</div>
|
|
3168
|
+
* </div>
|
|
3169
|
+
*
|
|
3170
|
+
* @example
|
|
3171
|
+
* // Custom grid color and size
|
|
3172
|
+
* <RetroGrid gridColor="hsl(var(--primary))" gridSize={40} angle={70} />
|
|
3173
|
+
*/
|
|
3174
|
+
/** Props for the RetroGrid component. */
|
|
3175
|
+
interface RetroGridProps {
|
|
3176
|
+
/** Grid line color. Default: `"hsl(var(--border))"` */
|
|
3177
|
+
gridColor?: string;
|
|
3178
|
+
/** Grid cell size in pixels. Default: `60` */
|
|
3179
|
+
gridSize?: number;
|
|
3180
|
+
/** Perspective tilt angle in degrees. Default: `65` */
|
|
3181
|
+
angle?: number;
|
|
3182
|
+
/** Grid line opacity (0–1). Default: `0.4` */
|
|
3183
|
+
opacity?: number;
|
|
3184
|
+
/** Additional class names. */
|
|
3185
|
+
className?: string;
|
|
3186
|
+
}
|
|
3187
|
+
/**
|
|
3188
|
+
* Perspective grid background with vanishing-point effect.
|
|
3189
|
+
*
|
|
3190
|
+
* - CSS-only (repeating linear gradients + perspective transform)
|
|
3191
|
+
* - Fades to transparent at the horizon via mask-image
|
|
3192
|
+
* - No JS, no canvas, no animation — pure visual
|
|
3193
|
+
*
|
|
3194
|
+
* @component
|
|
3195
|
+
* @package ui
|
|
3196
|
+
*/
|
|
3197
|
+
declare function RetroGrid({ gridColor, gridSize, angle, opacity, className, }: RetroGridProps): react_jsx_runtime.JSX.Element;
|
|
3198
|
+
|
|
3199
|
+
/** Direction the element slides in from. */
|
|
3200
|
+
type RevealDirection = "up" | "down" | "left" | "right" | "none";
|
|
3201
|
+
/** Props for the RevealOnScroll component. */
|
|
3202
|
+
interface RevealOnScrollProps {
|
|
3203
|
+
/** Content to reveal. */
|
|
3204
|
+
children: ReactNode;
|
|
3205
|
+
/** Direction the element slides in from. Default: `"up"` */
|
|
3206
|
+
direction?: RevealDirection;
|
|
3207
|
+
/** Animation delay in seconds. Default: `0` */
|
|
3208
|
+
delay?: number;
|
|
3209
|
+
/** Intersection Observer root margin. Default: `"-80px"` */
|
|
3210
|
+
rootMargin?: string;
|
|
3211
|
+
/** Whether the animation triggers only once. Default: `true` */
|
|
3212
|
+
once?: boolean;
|
|
3213
|
+
/** Additional class names. */
|
|
3214
|
+
className?: string;
|
|
3215
|
+
}
|
|
3216
|
+
/**
|
|
3217
|
+
* Wrapper that animates children into view on scroll intersection.
|
|
3218
|
+
*
|
|
3219
|
+
* - Fades in with an optional directional slide
|
|
3220
|
+
* - Uses a gentle spring for natural motion
|
|
3221
|
+
* - Renders children statically when reduced motion is preferred
|
|
3222
|
+
* - Triggers once by default (configurable via `once`)
|
|
3223
|
+
*
|
|
3224
|
+
* @component
|
|
3225
|
+
* @package ui
|
|
3226
|
+
*/
|
|
3227
|
+
declare function RevealOnScroll({ children, direction, delay, rootMargin, once, className, }: RevealOnScrollProps): react_jsx_runtime.JSX.Element;
|
|
3228
|
+
|
|
3229
|
+
/** Props for the ShimmerButton component. */
|
|
3230
|
+
interface ShimmerButtonProps extends ComponentProps<"button"> {
|
|
3231
|
+
/** Button content. */
|
|
3232
|
+
children: ReactNode;
|
|
3233
|
+
/** Color of the shimmer highlight. Default: `"rgba(255,255,255,0.2)"` */
|
|
3234
|
+
shimmerColor?: string;
|
|
3235
|
+
/** Shimmer cycle duration in seconds. Default: `2.5` */
|
|
3236
|
+
speed?: number;
|
|
3237
|
+
/** Background color. Default: `"hsl(var(--primary))"` */
|
|
3238
|
+
background?: string;
|
|
3239
|
+
}
|
|
3240
|
+
/**
|
|
3241
|
+
* CTA button with a continuously sweeping shimmer effect.
|
|
3242
|
+
*
|
|
3243
|
+
* - Diagonal light sweep loops infinitely
|
|
3244
|
+
* - CSS-only animation (no JS frames)
|
|
3245
|
+
* - Falls back to a static button when reduced motion is preferred
|
|
3246
|
+
* - Inherits standard button props (onClick, disabled, etc.)
|
|
3247
|
+
*
|
|
3248
|
+
* @component
|
|
3249
|
+
* @package ui
|
|
3250
|
+
*/
|
|
3251
|
+
declare function ShimmerButton({ children, shimmerColor, speed, background, className, ...props }: ShimmerButtonProps): react_jsx_runtime.JSX.Element;
|
|
3252
|
+
|
|
3253
|
+
/** Supported social login providers. */
|
|
3254
|
+
type SocialProvider$1 = "google" | "apple" | "github" | "microsoft" | "twitter";
|
|
3255
|
+
/** Props for the SocialButton component. */
|
|
3256
|
+
interface SocialButtonProps extends Omit<ComponentProps<"button">, "children"> {
|
|
3257
|
+
/** Social provider to render. */
|
|
3258
|
+
provider: SocialProvider$1;
|
|
3259
|
+
/** Override the default label text. */
|
|
3260
|
+
label?: string;
|
|
3261
|
+
/** Show only the icon (no text). Default: `false` */
|
|
3262
|
+
iconOnly?: boolean;
|
|
3263
|
+
}
|
|
3264
|
+
/**
|
|
3265
|
+
* Branded social login button. Visual only — no auth wiring.
|
|
3266
|
+
*
|
|
3267
|
+
* @component
|
|
3268
|
+
* @package ui
|
|
3269
|
+
*/
|
|
3270
|
+
declare function SocialButton({ provider, label: labelOverride, iconOnly, className, ...props }: SocialButtonProps): react_jsx_runtime.JSX.Element;
|
|
3271
|
+
|
|
3272
|
+
/** Props for the SpotlightCard component. */
|
|
3273
|
+
interface SpotlightCardProps extends SaasflareComponentProps {
|
|
3274
|
+
/** Card content. */
|
|
3275
|
+
children: ReactNode;
|
|
3276
|
+
/** Spotlight gradient color. Default: `"hsl(var(--primary))"` */
|
|
3277
|
+
spotlightColor?: string;
|
|
3278
|
+
/** Spotlight diameter in pixels. Default: `250` */
|
|
3279
|
+
spotlightSize?: number;
|
|
3280
|
+
/** Spotlight opacity (0–1). Default: `0.08` */
|
|
3281
|
+
spotlightOpacity?: number;
|
|
3282
|
+
/** Additional class names. */
|
|
3283
|
+
className?: string;
|
|
3284
|
+
}
|
|
3285
|
+
/**
|
|
3286
|
+
* Card with a radial gradient that follows the mouse cursor.
|
|
3287
|
+
*
|
|
3288
|
+
* - Gradient overlay tracks the mouse within the card boundaries
|
|
3289
|
+
* - Fades out when the mouse leaves
|
|
3290
|
+
* - Uses CSS for the gradient (no canvas, no heavy re-renders)
|
|
3291
|
+
* - Falls back to a plain card when reduced motion is preferred
|
|
3292
|
+
*
|
|
3293
|
+
* @component
|
|
3294
|
+
* @package ui
|
|
3295
|
+
*/
|
|
3296
|
+
declare function SpotlightCard({ children, spotlightColor, spotlightSize, spotlightOpacity, className, surface, radius, animated, }: SpotlightCardProps): react_jsx_runtime.JSX.Element;
|
|
3297
|
+
|
|
3298
|
+
/** Props for the StatCard component. */
|
|
3299
|
+
interface StatCardProps extends SaasflareComponentProps {
|
|
3300
|
+
/** The stat value (e.g. "10K+", "99.9%", "$2.4M"). */
|
|
3301
|
+
value: string;
|
|
3302
|
+
/** Label describing the stat. */
|
|
3303
|
+
label: string;
|
|
3304
|
+
/** Optional icon displayed above the value. */
|
|
3305
|
+
icon?: ReactNode;
|
|
3306
|
+
/** Additional class names. */
|
|
3307
|
+
className?: string;
|
|
3308
|
+
}
|
|
3309
|
+
/**
|
|
3310
|
+
* Simple statistic display card for marketing sections.
|
|
3311
|
+
*
|
|
3312
|
+
* @component
|
|
3313
|
+
* @package ui
|
|
3314
|
+
*/
|
|
3315
|
+
declare function StatCard({ value, label, icon, className, surface, radius, animated, }: StatCardProps): react_jsx_runtime.JSX.Element;
|
|
3316
|
+
|
|
3317
|
+
/** Props for the Steps container. */
|
|
3318
|
+
interface StepsProps {
|
|
3319
|
+
/** Step children. */
|
|
3320
|
+
children: ReactNode;
|
|
3321
|
+
/** Index of the current active step (0-based). Default: `0` */
|
|
3322
|
+
current?: number;
|
|
3323
|
+
/** Layout direction. Default: `"horizontal"` */
|
|
3324
|
+
direction?: "horizontal" | "vertical";
|
|
3325
|
+
/** Additional class names. */
|
|
3326
|
+
className?: string;
|
|
3327
|
+
}
|
|
3328
|
+
/** Props for an individual Step. */
|
|
3329
|
+
interface StepProps {
|
|
3330
|
+
/** Step title text. */
|
|
3331
|
+
title: string;
|
|
3332
|
+
/** Optional description below the title. */
|
|
3333
|
+
description?: string;
|
|
3334
|
+
/** Optional icon to replace the step number. */
|
|
3335
|
+
icon?: ReactNode;
|
|
3336
|
+
/** Additional class names. */
|
|
3337
|
+
className?: string;
|
|
3338
|
+
}
|
|
3339
|
+
/**
|
|
3340
|
+
* Step sequence indicator with numbered circles and connector lines.
|
|
3341
|
+
*
|
|
3342
|
+
* @component
|
|
3343
|
+
* @package ui
|
|
3344
|
+
*/
|
|
3345
|
+
declare function Steps({ children, current, direction, className, }: StepsProps): react_jsx_runtime.JSX.Element;
|
|
3346
|
+
/**
|
|
3347
|
+
* Individual step within a Steps container.
|
|
3348
|
+
* This component is a data carrier — it renders nothing on its own.
|
|
3349
|
+
*
|
|
3350
|
+
* @component
|
|
3351
|
+
* @package ui
|
|
3352
|
+
*/
|
|
3353
|
+
declare function Step(_props: StepProps): null;
|
|
3354
|
+
|
|
3355
|
+
/** A single item in the sticky scroll reveal. */
|
|
3356
|
+
interface StickyScrollItem {
|
|
3357
|
+
/** Section title. */
|
|
3358
|
+
title: string;
|
|
3359
|
+
/** Section description text. */
|
|
3360
|
+
description: string;
|
|
3361
|
+
/** Visual content (image, component, etc.) shown in the right column. */
|
|
3362
|
+
content?: ReactNode;
|
|
3363
|
+
}
|
|
3364
|
+
/** Props for the StickyScrollReveal component. */
|
|
3365
|
+
interface StickyScrollRevealProps {
|
|
3366
|
+
/** Array of scroll items. */
|
|
3367
|
+
items: StickyScrollItem[];
|
|
3368
|
+
/** Additional class names. */
|
|
3369
|
+
className?: string;
|
|
3370
|
+
}
|
|
3371
|
+
/**
|
|
3372
|
+
* Split layout with sticky left text and scrolling right content.
|
|
3373
|
+
*
|
|
3374
|
+
* - Left column text stays fixed during scroll
|
|
3375
|
+
* - Right column content transitions between items
|
|
3376
|
+
* - Each item fades in based on scroll position
|
|
3377
|
+
* - Falls back to stacked layout when reduced motion is preferred
|
|
3378
|
+
*
|
|
3379
|
+
* @component
|
|
3380
|
+
* @package ui
|
|
3381
|
+
*/
|
|
3382
|
+
declare function StickyScrollReveal({ items, className, }: StickyScrollRevealProps): react_jsx_runtime.JSX.Element;
|
|
3383
|
+
|
|
3384
|
+
/** A social link entry. */
|
|
3385
|
+
interface SocialLink {
|
|
3386
|
+
/** Accessible label for the link. */
|
|
3387
|
+
label: string;
|
|
3388
|
+
/** URL to the social profile. */
|
|
3389
|
+
url: string;
|
|
3390
|
+
/** Icon element. */
|
|
3391
|
+
icon: ReactNode;
|
|
3392
|
+
}
|
|
3393
|
+
/** Props for the TeamCard component. */
|
|
3394
|
+
interface TeamCardProps extends SaasflareComponentProps {
|
|
3395
|
+
/** Person's name. */
|
|
3396
|
+
name: string;
|
|
3397
|
+
/** Role or job title. */
|
|
3398
|
+
role: string;
|
|
3399
|
+
/** Photo URL. */
|
|
3400
|
+
photo?: string;
|
|
3401
|
+
/** Short bio text. */
|
|
3402
|
+
bio?: string;
|
|
3403
|
+
/** Social media links. */
|
|
3404
|
+
socials?: SocialLink[];
|
|
3405
|
+
/** Additional class names. */
|
|
3406
|
+
className?: string;
|
|
3407
|
+
}
|
|
3408
|
+
/**
|
|
3409
|
+
* Team member card with photo, name, role, and social links.
|
|
3410
|
+
*
|
|
3411
|
+
* @component
|
|
3412
|
+
* @package ui
|
|
3413
|
+
*/
|
|
3414
|
+
declare function TeamCard({ name, role, photo, bio, socials, className, surface, radius, animated, }: TeamCardProps): react_jsx_runtime.JSX.Element;
|
|
3415
|
+
|
|
3416
|
+
/** Props for the TestimonialCard component. */
|
|
3417
|
+
interface TestimonialCardProps extends SaasflareComponentProps {
|
|
3418
|
+
/** The testimonial quote text. */
|
|
3419
|
+
quote: string;
|
|
3420
|
+
/** Name of the person. */
|
|
3421
|
+
name: string;
|
|
3422
|
+
/** Role/title of the person. */
|
|
3423
|
+
role?: string;
|
|
3424
|
+
/** Avatar image URL. */
|
|
3425
|
+
avatar?: string;
|
|
3426
|
+
/** Star rating (1–5). Omit to hide stars. */
|
|
3427
|
+
rating?: 1 | 2 | 3 | 4 | 5;
|
|
3428
|
+
/** Additional class names. */
|
|
3429
|
+
className?: string;
|
|
3430
|
+
}
|
|
3431
|
+
/**
|
|
3432
|
+
* Testimonial card with avatar, quote, attribution, and optional star rating.
|
|
3433
|
+
*
|
|
3434
|
+
* @component
|
|
3435
|
+
* @package ui
|
|
3436
|
+
*/
|
|
3437
|
+
declare function TestimonialCard({ quote, name, role, avatar, rating, className, surface, radius, animated, }: TestimonialCardProps): react_jsx_runtime.JSX.Element;
|
|
3438
|
+
|
|
3439
|
+
/** Props for the TextGenerateEffect component. */
|
|
3440
|
+
interface TextGenerateEffectProps {
|
|
3441
|
+
/** Text string to animate word by word. */
|
|
3442
|
+
text: string;
|
|
3443
|
+
/** Delay between each word in seconds. Default: `0.05` */
|
|
3444
|
+
stagger?: number;
|
|
3445
|
+
/** Duration per word fade-in in seconds. Default: `0.4` */
|
|
3446
|
+
duration?: number;
|
|
3447
|
+
/** Whether animation triggers only once. Default: `true` */
|
|
3448
|
+
once?: boolean;
|
|
3449
|
+
/** HTML element to render. Default: `"p"` */
|
|
3450
|
+
as?: "p" | "h1" | "h2" | "h3" | "h4" | "span";
|
|
3451
|
+
/** Additional class names. */
|
|
3452
|
+
className?: string;
|
|
3453
|
+
}
|
|
3454
|
+
/**
|
|
3455
|
+
* Text that reveals word by word with staggered fade-in.
|
|
3456
|
+
*
|
|
3457
|
+
* - Each word fades from transparent to opaque sequentially
|
|
3458
|
+
* - Triggers when the element scrolls into view
|
|
3459
|
+
* - Renders full text immediately when reduced motion is preferred
|
|
3460
|
+
* - Preserves natural text wrapping and spacing
|
|
3461
|
+
*
|
|
3462
|
+
* @component
|
|
3463
|
+
* @package ui
|
|
3464
|
+
*/
|
|
3465
|
+
declare function TextGenerateEffect({ text, stagger, duration, once, as: Tag, className, }: TextGenerateEffectProps): react_jsx_runtime.JSX.Element;
|
|
3466
|
+
|
|
3467
|
+
/** Props for the Timeline container. */
|
|
3468
|
+
interface TimelineProps {
|
|
3469
|
+
/** TimelineItem children. */
|
|
3470
|
+
children: ReactNode;
|
|
3471
|
+
/** Additional class names. */
|
|
3472
|
+
className?: string;
|
|
3473
|
+
}
|
|
3474
|
+
/**
|
|
3475
|
+
* Vertical timeline with a scroll-driven progress beam.
|
|
3476
|
+
*
|
|
3477
|
+
* - Beam fills as the user scrolls through the timeline
|
|
3478
|
+
* - Each item fades in on scroll intersection
|
|
3479
|
+
* - Falls back to a static timeline when reduced motion is preferred
|
|
3480
|
+
*
|
|
3481
|
+
* @component
|
|
3482
|
+
* @package ui
|
|
3483
|
+
*/
|
|
3484
|
+
declare function Timeline({ children, className }: TimelineProps): react_jsx_runtime.JSX.Element;
|
|
3485
|
+
/** Props for a TimelineItem. */
|
|
3486
|
+
interface TimelineItemProps {
|
|
3487
|
+
/** Item title. */
|
|
3488
|
+
title: string;
|
|
3489
|
+
/** Date or time label. */
|
|
3490
|
+
date?: string;
|
|
3491
|
+
/** Item content/description. */
|
|
3492
|
+
children: ReactNode;
|
|
3493
|
+
/** Additional class names. */
|
|
3494
|
+
className?: string;
|
|
3495
|
+
}
|
|
3496
|
+
/**
|
|
3497
|
+
* Individual item within a Timeline.
|
|
3498
|
+
*
|
|
3499
|
+
* - Positioned alternating left/right on desktop, left-aligned on mobile
|
|
3500
|
+
* - Dot indicator on the timeline track
|
|
3501
|
+
* - Fades in when scrolled into view
|
|
3502
|
+
*
|
|
3503
|
+
* @component
|
|
3504
|
+
* @package ui
|
|
3505
|
+
*/
|
|
3506
|
+
declare function TimelineItem({ title, date, children, className, }: TimelineItemProps): react_jsx_runtime.JSX.Element;
|
|
3507
|
+
|
|
3508
|
+
/** Props for the TracingBeam component. */
|
|
3509
|
+
interface TracingBeamProps {
|
|
3510
|
+
/** Content alongside the beam. */
|
|
3511
|
+
children: ReactNode;
|
|
3512
|
+
/** Beam color. Default: `"hsl(var(--primary))"` */
|
|
3513
|
+
color?: string;
|
|
3514
|
+
/** Track (background line) color. Default: `"hsl(var(--border))"` */
|
|
3515
|
+
trackColor?: string;
|
|
3516
|
+
/** Additional class names. */
|
|
3517
|
+
className?: string;
|
|
3518
|
+
}
|
|
3519
|
+
/**
|
|
3520
|
+
* Vertical scroll-progress beam alongside content.
|
|
3521
|
+
*
|
|
3522
|
+
* - Fills from top to bottom as the user scrolls
|
|
3523
|
+
* - Renders on the left side with content offset
|
|
3524
|
+
* - Includes a dot indicator at the current scroll position
|
|
3525
|
+
* - Falls back to a simple left border when reduced motion is preferred
|
|
3526
|
+
*
|
|
3527
|
+
* @component
|
|
3528
|
+
* @package ui
|
|
3529
|
+
*/
|
|
3530
|
+
declare function TracingBeam({ children, color, trackColor, className, }: TracingBeamProps): react_jsx_runtime.JSX.Element;
|
|
3531
|
+
|
|
3532
|
+
/**
|
|
3533
|
+
* Props for the ScrollToTopButton component.
|
|
3534
|
+
*
|
|
3535
|
+
* @interface
|
|
3536
|
+
* @package ui
|
|
3537
|
+
*/
|
|
3538
|
+
interface ScrollToTopButtonProps extends SaasflareComponentProps {
|
|
3539
|
+
/**
|
|
3540
|
+
* Optional scroll container element ID.
|
|
3541
|
+
* If not provided, falls back to the global `window`.
|
|
3542
|
+
*/
|
|
3543
|
+
scrollContainerId?: string;
|
|
3544
|
+
/**
|
|
3545
|
+
* Vertical scroll offset (in pixels) after which the button is shown.
|
|
3546
|
+
* @default 300
|
|
3547
|
+
*/
|
|
3548
|
+
scrollOffset?: number;
|
|
3549
|
+
/** Additional class names merged onto the root button. */
|
|
3550
|
+
className?: string;
|
|
3551
|
+
}
|
|
3552
|
+
/**
|
|
3553
|
+
* A floating button that appears after scrolling down and smoothly scrolls
|
|
3554
|
+
* the user back to the top of the container (or window).
|
|
3555
|
+
*
|
|
3556
|
+
* @component
|
|
3557
|
+
*/
|
|
3558
|
+
declare function ScrollToTopButton({ scrollContainerId, scrollOffset, className, ...sfProps }: ScrollToTopButtonProps): JSX.Element;
|
|
3559
|
+
|
|
3560
|
+
/**
|
|
3561
|
+
* Props for {@link StatefulButton}. Extends {@link ButtonProps} with two
|
|
3562
|
+
* orthogonal stateful concerns. `asChild` is intentionally excluded — a
|
|
3563
|
+
* Slot-rendered button cannot own its own DOM children, so the spinner /
|
|
3564
|
+
* loading-text swap would be ambiguous.
|
|
3565
|
+
*/
|
|
3566
|
+
interface StatefulButtonProps extends Omit<ButtonProps, "asChild"> {
|
|
3567
|
+
/** Pending state: forces disabled, shows spinner, swaps label when `loadingText` is set. */
|
|
3568
|
+
loading?: boolean;
|
|
3569
|
+
/** Optional label to show in place of children while `loading` is true. */
|
|
3570
|
+
loadingText?: React$1.ReactNode;
|
|
3571
|
+
}
|
|
3572
|
+
/**
|
|
3573
|
+
* Button with built-in loading state.
|
|
3574
|
+
*
|
|
3575
|
+
* `loading` is the single source of truth for pending UI:
|
|
3576
|
+
* - sets `disabled` (forwarded to native button)
|
|
3577
|
+
* - sets `aria-busy="true"` for assistive tech
|
|
3578
|
+
* - prepends an animated spinner before the label
|
|
3579
|
+
* - replaces `children` with `loadingText` if provided (otherwise label stays)
|
|
3580
|
+
*
|
|
3581
|
+
* @component
|
|
3582
|
+
* @layer composed
|
|
3583
|
+
*
|
|
3584
|
+
* @param {boolean} loading - Pending state.
|
|
3585
|
+
* @param {React.ReactNode} loadingText - Optional override label while loading.
|
|
3586
|
+
* @param disabled
|
|
3587
|
+
* @param children
|
|
3588
|
+
* @param rest
|
|
3589
|
+
*/
|
|
3590
|
+
declare function StatefulButton({ loading, loadingText, disabled, children, ...rest }: StatefulButtonProps): react_jsx_runtime.JSX.Element;
|
|
3591
|
+
|
|
3592
|
+
declare const PROVIDERS: readonly ["google", "github", "apple", "microsoft", "x", "discord", "facebook", "linkedin", "medium", "slack", "reddit", "paypal", "stripe", "gitlab", "dribbble", "tiktok"];
|
|
3593
|
+
type SocialProvider = (typeof PROVIDERS)[number];
|
|
3594
|
+
/**
|
|
3595
|
+
* Props for {@link SocialAuthButton}. Inherits {@link StatefulButtonProps},
|
|
3596
|
+
* but widens `iconWeight` to {@link BrandIconWeight} so the colored brand
|
|
3597
|
+
* variant can be requested per-instance.
|
|
3598
|
+
*
|
|
3599
|
+
* The visible label is resolved with the precedence:
|
|
3600
|
+
* `children` > `label` > `"Continue with {Provider}"`
|
|
3601
|
+
*/
|
|
3602
|
+
interface SocialAuthButtonProps extends Omit<StatefulButtonProps, "iconWeight"> {
|
|
3603
|
+
/** Identity provider — drives icon and default label. */
|
|
3604
|
+
provider: SocialProvider;
|
|
3605
|
+
/** Override the visible label. Default: "Continue with {Provider}". */
|
|
3606
|
+
label?: React$1.ReactNode;
|
|
3607
|
+
/**
|
|
3608
|
+
* Icon weight. Accepts the four Phosphor weights (theme-aware via the
|
|
3609
|
+
* Saasflare provider chain) plus the brand-locked `"colorful"` variant.
|
|
3610
|
+
*/
|
|
3611
|
+
iconWeight?: BrandIconWeight;
|
|
3612
|
+
}
|
|
3613
|
+
/**
|
|
3614
|
+
* Generic provider-branded auth button.
|
|
3615
|
+
*
|
|
3616
|
+
* Defaults: `variant="outline"` `intent="neutral"`.
|
|
3617
|
+
*
|
|
3618
|
+
* The Phosphor weights (`regular | bold | fill | duotone`) inherit from
|
|
3619
|
+
* `<SaasflareProvider iconWeight="…">` via {@link useSaasflareProps}; the
|
|
3620
|
+
* `colorful` weight is opt-in per-instance and bypasses the provider chain
|
|
3621
|
+
* because brand colors are not themable.
|
|
3622
|
+
*
|
|
3623
|
+
* @component
|
|
3624
|
+
* @layer brand
|
|
3625
|
+
*/
|
|
3626
|
+
declare function SocialAuthButton({ provider, label, variant, intent, fullWidth, surface, radius, animated, iconWeight, children, ...rest }: SocialAuthButtonProps): react_jsx_runtime.JSX.Element;
|
|
3627
|
+
type ProviderShortcutProps = Omit<SocialAuthButtonProps, "provider">;
|
|
3628
|
+
declare const GoogleAuthButton: (props: ProviderShortcutProps) => react_jsx_runtime.JSX.Element;
|
|
3629
|
+
declare const GitHubAuthButton: (props: ProviderShortcutProps) => react_jsx_runtime.JSX.Element;
|
|
3630
|
+
declare const AppleAuthButton: (props: ProviderShortcutProps) => react_jsx_runtime.JSX.Element;
|
|
3631
|
+
declare const MicrosoftAuthButton: (props: ProviderShortcutProps) => react_jsx_runtime.JSX.Element;
|
|
3632
|
+
declare const XAuthButton: (props: ProviderShortcutProps) => react_jsx_runtime.JSX.Element;
|
|
3633
|
+
declare const DiscordAuthButton: (props: ProviderShortcutProps) => react_jsx_runtime.JSX.Element;
|
|
3634
|
+
declare const FacebookAuthButton: (props: ProviderShortcutProps) => react_jsx_runtime.JSX.Element;
|
|
3635
|
+
declare const LinkedInAuthButton: (props: ProviderShortcutProps) => react_jsx_runtime.JSX.Element;
|
|
3636
|
+
declare const MediumAuthButton: (props: ProviderShortcutProps) => react_jsx_runtime.JSX.Element;
|
|
3637
|
+
declare const SlackAuthButton: (props: ProviderShortcutProps) => react_jsx_runtime.JSX.Element;
|
|
3638
|
+
declare const RedditAuthButton: (props: ProviderShortcutProps) => react_jsx_runtime.JSX.Element;
|
|
3639
|
+
declare const PayPalAuthButton: (props: ProviderShortcutProps) => react_jsx_runtime.JSX.Element;
|
|
3640
|
+
declare const StripeAuthButton: (props: ProviderShortcutProps) => react_jsx_runtime.JSX.Element;
|
|
3641
|
+
declare const GitLabAuthButton: (props: ProviderShortcutProps) => react_jsx_runtime.JSX.Element;
|
|
3642
|
+
declare const DribbbleAuthButton: (props: ProviderShortcutProps) => react_jsx_runtime.JSX.Element;
|
|
3643
|
+
declare const TikTokAuthButton: (props: ProviderShortcutProps) => react_jsx_runtime.JSX.Element;
|
|
3644
|
+
|
|
3645
|
+
/**
|
|
3646
|
+
* Theme mode toggle button with Sun/Moon icons.
|
|
3647
|
+
*
|
|
3648
|
+
* @component
|
|
3649
|
+
* @layer core
|
|
3650
|
+
*
|
|
3651
|
+
* @param {object} props - Component props
|
|
3652
|
+
* @param {boolean} [props.showText=false] - Whether to show the label text visibly
|
|
3653
|
+
* @param {string} [props.textLight] - Label shown while in light mode (prompting switch to dark)
|
|
3654
|
+
* @param {string} [props.textDark] - Label shown while in dark mode (prompting switch to light)
|
|
3655
|
+
* @param {string} [props.className] - Additional CSS class names
|
|
3656
|
+
* @returns {JSX.Element | null} The toggle button, or null before hydration
|
|
3657
|
+
*/
|
|
3658
|
+
interface ThemeModeToggleProps extends SaasflareComponentProps {
|
|
3659
|
+
/** Whether to show the label text visibly. */
|
|
3660
|
+
showText?: boolean;
|
|
3661
|
+
/** Label shown while in light mode (prompting switch to dark). */
|
|
3662
|
+
textLight?: string;
|
|
3663
|
+
/** Label shown while in dark mode (prompting switch to light). */
|
|
3664
|
+
textDark?: string;
|
|
3665
|
+
/** Additional CSS class names. */
|
|
3666
|
+
className?: string;
|
|
3667
|
+
/**
|
|
3668
|
+
* SSR-known resolved theme (`"dark"` or `"light"`) — typically read from a
|
|
3669
|
+
* cookie in the parent server component. When provided, the button skips
|
|
3670
|
+
* its internal mount-gate and renders the correct sun/moon glyph on the
|
|
3671
|
+
* very first paint, eliminating the brief blank frame caused by
|
|
3672
|
+
* `next-themes` returning `undefined` during SSR.
|
|
3673
|
+
*
|
|
3674
|
+
* Leave undefined for the legacy mount-gated behaviour.
|
|
3675
|
+
*/
|
|
3676
|
+
initialResolvedTheme?: 'light' | 'dark';
|
|
3677
|
+
}
|
|
3678
|
+
declare function ThemeModeToggle({ showText, textLight, textDark, className, surface, radius, animated, iconWeight, initialResolvedTheme, }: ThemeModeToggleProps): JSX.Element | null;
|
|
3679
|
+
|
|
3680
|
+
/**
|
|
3681
|
+
* @fileoverview Three-segment theme toggle (light / dark / system).
|
|
3682
|
+
*
|
|
3683
|
+
* Pill-shaped segmented control with Sun, Moon, and Monitor icons. Built on
|
|
3684
|
+
* the design-system `ToggleGroup` primitive (Pattern B — CSS-motion).
|
|
3685
|
+
*
|
|
3686
|
+
* Three appearances:
|
|
3687
|
+
* - `"icon"` (default) — segments are small circles floating inside the
|
|
3688
|
+
* rail. The active segment is filled with `--background` and a subtle
|
|
3689
|
+
* ring. Segment shape is always pill, independent of the rail's
|
|
3690
|
+
* `radius`.
|
|
3691
|
+
* - `"icon-inherit"` — same compact icon footprint as `"icon"`, but each
|
|
3692
|
+
* segment's border-radius matches the rail's `radius`. Use this when
|
|
3693
|
+
* `radius="sharp"` should propagate to the segments too.
|
|
3694
|
+
* - `"button"` — segments fill the rail end-to-end. The active segment
|
|
3695
|
+
* matches the rail's outer corner radius on its outer edge and stays
|
|
3696
|
+
* flat on its inner edge so it slots cleanly into the rail.
|
|
3697
|
+
*
|
|
3698
|
+
* The `radius` prop drives the rail's outer border-radius. Default is
|
|
3699
|
+
* `"pill"` (`rounded-full`). Override with `radius="sharp" | "soft" |
|
|
3700
|
+
* "rounded" | "pill"` — segment corners adapt automatically in
|
|
3701
|
+
* `"icon-inherit"` and `"button"` appearances.
|
|
3702
|
+
*
|
|
3703
|
+
* Supports `next-themes` natively. Renders `null` until hydrated to avoid
|
|
3704
|
+
* SSR/CSR mismatch on the active segment. When the System segment is
|
|
3705
|
+
* active, its `title` reflects the OS-resolved theme (e.g.
|
|
3706
|
+
* "System mode (currently dark)") so users see what their preference
|
|
3707
|
+
* resolves to.
|
|
3708
|
+
*
|
|
3709
|
+
* @module packages/ui/components/composed/theme-mode-multi-toggle
|
|
3710
|
+
* @package ui
|
|
3711
|
+
*
|
|
3712
|
+
* @component
|
|
3713
|
+
* @example
|
|
3714
|
+
* import { ThemeModeMultiToggle } from '@saasflare/ui';
|
|
3715
|
+
* <ThemeModeMultiToggle />
|
|
3716
|
+
*
|
|
3717
|
+
* @example
|
|
3718
|
+
* // Inherit-radius icons (segments adopt the rail's radius)
|
|
3719
|
+
* <ThemeModeMultiToggle appearance="icon-inherit" radius="sharp" />
|
|
3720
|
+
*
|
|
3721
|
+
* @example
|
|
3722
|
+
* // Button appearance with rounded geometry
|
|
3723
|
+
* <ThemeModeMultiToggle appearance="button" radius="rounded" />
|
|
3724
|
+
*/
|
|
3725
|
+
|
|
3726
|
+
/** Available theme modes — mirrors next-themes' `theme` prop. */
|
|
3727
|
+
type ThemeMode = "light" | "dark" | "system";
|
|
3728
|
+
/** Visual appearance of the segments. */
|
|
3729
|
+
type ThemeModeMultiToggleAppearance = "icon" | "icon-inherit" | "button";
|
|
3730
|
+
interface ThemeModeMultiToggleProps extends SaasflareComponentProps {
|
|
3731
|
+
/** Override the default screen-reader labels per segment. */
|
|
3732
|
+
labels?: Partial<Record<ThemeMode, string>>;
|
|
3733
|
+
/** Additional class names applied to the rail. */
|
|
3734
|
+
className?: string;
|
|
3735
|
+
/** Segment size — matches the Toggle/ToggleGroup `size` axis. */
|
|
3736
|
+
size?: "sm" | "default" | "lg";
|
|
3737
|
+
/**
|
|
3738
|
+
* Visual appearance of the segments.
|
|
3739
|
+
*
|
|
3740
|
+
* - `"icon"` (default): small floating circles, always pill.
|
|
3741
|
+
* - `"icon-inherit"`: small floating shapes that match the rail's `radius`.
|
|
3742
|
+
* - `"button"`: segments fill the rail; outer corners match the rail's
|
|
3743
|
+
* `radius`, inner corners stay flat so the segment slots in.
|
|
3744
|
+
*
|
|
3745
|
+
* @default "icon"
|
|
3746
|
+
*/
|
|
3747
|
+
appearance?: ThemeModeMultiToggleAppearance;
|
|
3748
|
+
/**
|
|
3749
|
+
* SSR-known theme mode (typically read from a cookie in the parent server
|
|
3750
|
+
* component). When provided, the component skips its internal mount-gate
|
|
3751
|
+
* and renders the matching segment as active on the very first paint —
|
|
3752
|
+
* eliminating the brief invisible / wrong-segment frame caused by
|
|
3753
|
+
* `next-themes` returning `undefined` during SSR.
|
|
3754
|
+
*
|
|
3755
|
+
* Leave undefined for the legacy mount-gated behaviour (renders `null`
|
|
3756
|
+
* until mounted).
|
|
3757
|
+
*/
|
|
3758
|
+
initialMode?: ThemeMode;
|
|
3759
|
+
}
|
|
3760
|
+
/**
|
|
3761
|
+
* Three-segment theme switcher (light / dark / system).
|
|
3762
|
+
*
|
|
3763
|
+
* @component
|
|
3764
|
+
* @layer ui
|
|
3765
|
+
*/
|
|
3766
|
+
declare function ThemeModeMultiToggle({ labels, className, size, appearance, surface, radius, animated, iconWeight, initialMode, }: ThemeModeMultiToggleProps): React$1.JSX.Element | null;
|
|
1695
3767
|
|
|
1696
3768
|
/**
|
|
1697
3769
|
* Props for the TopLoadingBar component.
|
|
@@ -1739,4 +3811,4 @@ interface UserAvatarProps {
|
|
|
1739
3811
|
*/
|
|
1740
3812
|
declare function UserAvatar({ src, name, initials, size, className }: UserAvatarProps): react_jsx_runtime.JSX.Element;
|
|
1741
3813
|
|
|
1742
|
-
export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, Alert, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, type AlertProps, AlertTitle, AnimatedTooltip, AspectRatio, Avatar, AvatarBadge, AvatarFallback, AvatarGroup, AvatarGroupCount, AvatarImage, Badge, type BadgeProps, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Button, ButtonGroup, ButtonGroupSeparator, ButtonGroupText, Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Checkbox, Collapsible, CollapsibleContent, CollapsibleTrigger, Combobox, ComboboxContent, ComboboxEmpty, ComboboxGroup, ComboboxInput, ComboboxItem, ComboboxList, ComboboxSeparator, ComboboxTrigger, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, DataToolbar, DataToolbarActions, DataToolbarFilters, DataToolbarSearch, type Density, DirectionProvider, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, Empty, EmptyContent, EmptyDescription, EmptyHeader, EmptyMedia, EmptyState, type EmptyStateProps, EmptyTitle, Field, FieldContent, FieldDescription, FieldError, FieldGroup, FieldLabel, FieldLegend, FieldSeparator, FieldSet, FieldTitle, Form, FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage, HoverCard, HoverCardContent, HoverCardTrigger, Icons, Input, InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput, InputGroupText, InputGroupTextarea, Intent, Item, ItemActions, ItemContent, ItemDescription, ItemFooter, ItemGroup, ItemHeader, ItemMedia, ItemSeparator, ItemTitle, Kbd, KbdGroup, Label, type Measurement, Menubar, MenubarCheckboxItem, MenubarContent, MenubarGroup, MenubarItem, MenubarLabel, MenubarMenu, MenubarPortal, MenubarRadioGroup, MenubarRadioItem, MenubarSeparator, MenubarShortcut, MenubarSub, MenubarSubContent, MenubarSubTrigger, MenubarTrigger, MetricCard, type MetricCardProps, type MetricTrend, NativeSelect, NativeSelectOptGroup, NativeSelectOption, NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, NavigationMenuViewport, PageHeader, type PageHeaderProps, Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, type PaginationRangeItem, Palette, Popover, PopoverAnchor, PopoverContent, PopoverTrigger, PricingCard, type PricingCardProps, Progress, RadioGroup, RadioGroupItem, Radius, RadiusProp, SaasflareComponentProps, type SaasflareMotion, SaasflareProvider, type SaasflareProviderProps, SaasflareScript, type SaasflareScriptProps, SaasflareShell, type SaasflareShellProps, ScrollArea, ScrollBar, ScrollToTopButton, SearchField, type SearchFieldProps, SectionCard, type SectionCardProps, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, SettingsSection, type SettingsSectionProps, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, SheetTrigger, Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, type Size, Skeleton, Slider, SmoothScrollProvider, type SmoothScrollProviderProps, Spinner, StyleVariant, Surface, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, Textarea, ThemeModeToggle, Toaster, Toggle, ToggleGroup, ToggleGroupItem, Tooltip, TooltipContent, type TooltipItem, TooltipProvider, TooltipTrigger, TopLoadingBar, type TopLoadingBarProps, TypewriterText, type UseDisclosureOptions, type UseDisclosureReturn, type UseMeasureReturn, type UsePaginationOptions, type UsePaginationReturn, UserAvatar, type UserAvatarProps, badgeVariants, buttonGroupVariants, cn, fadeIn, navigationMenuTriggerStyle, noMotion, scaleIn, slideDown, slideUp, spring, springBouncy, springGentle, springStiff, toggleVariants, useAnimation, useDirection, useDisclosure, useFormField, useIsMobile, useMeasure, usePagination, useReducedMotion, useSaasflareMotion, useSaasflareTheme, useSidebar };
|
|
3814
|
+
export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, Alert, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, type AlertProps, AlertTitle, AnimatedTooltip, AppleAuthButton, ArrowLeftIcon, ArrowRightIcon, ArrowUpIcon, AspectRatio, AudioPlayer, type AudioPlayerProps, AuroraBackground, type AuroraBackgroundProps, Avatar, AvatarBadge, AvatarFallback, AvatarGroup, AvatarGroupCount, AvatarImage, Badge, type BadgeProps, BarList, type BarListItem, type BarListProps, BentoGrid, BentoGridItem, type BentoGridItemProps, type BentoGridProps, BlurFade, type BlurFadeProps, BorderBeam, type BorderBeamProps, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Button, ButtonGroup, ButtonGroupSeparator, ButtonGroupText, ButtonProps, Callout, type CalloutIntent, type CalloutProps, Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, CaretDownIcon, CaretLeftIcon, CaretRightIcon, CaretUpIcon, CategoryBar, type CategoryBarProps, type CategoryBarSegment, CheckCircleIcon, CheckIcon, Checkbox, CircleIcon, CircleNotchIcon, CodeBlock, type CodeBlockProps, Collapsible, CollapsibleContent, CollapsibleTrigger, Combobox, ComboboxContent, ComboboxEmpty, ComboboxGroup, ComboboxInput, ComboboxItem, ComboboxList, ComboboxSeparator, ComboboxTrigger, Compare, type CompareProps, Confetti, type ConfettiProps, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, Countdown, type CountdownProps, type CountdownValue, DataToolbar, DataToolbarActions, DataToolbarFilters, DataToolbarSearch, DatePicker, type DatePickerProps, type DateRange, DateRangePicker, type DateRangePickerProps, type Density, DirectionProvider, DiscordAuthButton, Dock, DockItem, type DockItemProps, type DockProps, DotsSixVerticalIcon, DotsThreeIcon, DribbbleAuthButton, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, Dropzone, type DropzoneProps, type DropzoneRejection, type DropzoneRejectionReason, Empty, EmptyContent, EmptyDescription, EmptyHeader, EmptyMedia, EmptyState, type EmptyStateProps, EmptyTitle, FacebookAuthButton, FeatureCard, type FeatureCardProps, Field, FieldContent, FieldDescription, FieldError, FieldGroup, FieldLabel, FieldLegend, FieldSeparator, FieldSet, FieldTitle, FlipWords, type FlipWordsProps, Form, FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage, GalleryLightbox, type GalleryLightboxProps, GitHubAuthButton, GitLabAuthButton, GlowingEffect, type GlowingEffectProps, GoogleAuthButton, GradientText, type GradientTextProps, HeroVideoDialog, type HeroVideoDialogProps, Hotspot, HotspotMarker, type HotspotMarkerProps, type HotspotProps, HoverCard, HoverCardContent, HoverCardTrigger, IPhoneMock, type IPhoneMockProps, IconWeight, Icons, ImageSwapHover, type ImageSwapHoverProps, InfoIcon, Input, InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput, InputGroupText, InputGroupTextarea, Intent, Item, ItemActions, ItemContent, ItemDescription, ItemFooter, ItemGroup, ItemHeader, ItemMedia, ItemSeparator, ItemTitle, Kbd, KbdGroup, Label, LinkedInAuthButton, MagnifyingGlassIcon, Marquee, type MarqueeProps, type Measurement, MediumAuthButton, Menubar, MenubarCheckboxItem, MenubarContent, MenubarGroup, MenubarItem, MenubarLabel, MenubarMenu, MenubarPortal, MenubarRadioGroup, MenubarRadioItem, MenubarSeparator, MenubarShortcut, MenubarSub, MenubarSubContent, MenubarSubTrigger, MenubarTrigger, MetricCard, type MetricCardProps, type MetricTrend, MicrosoftAuthButton, MinusIcon, MonitorIcon, MoonIcon, MouseGradientBlob, type MouseGradientBlobProps, MovingBorder, type MovingBorderProps, NativeSelect, NativeSelectOptGroup, NativeSelectOption, NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, NavigationMenuViewport, NotificationCenter, type NotificationCenterProps, type NotificationItem, NumberInput, type NumberInputProps, PageHeader, type PageHeaderProps, PageTransition, type PageTransitionProps, Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, type PaginationRangeItem, Palette, ParallaxSection, type ParallaxSectionProps, ParticlesBackground, type ParticlesBackgroundProps, PauseIcon, PayPalAuthButton, PhosphorIconProps, PlayIcon, Popover, PopoverAnchor, PopoverContent, PopoverTrigger, type PossibleRef, PricingCard, type PricingCardProps, Progress, ProgressCircle, type ProgressCircleProps, type ProgressCircleSize, QuotesIcon, RadioGroup, RadioGroupItem, Radius, RadiusProp, Rating, type RatingProps, type RatingSize, RedditAuthButton, RetroGrid, type RetroGridProps, RevealOnScroll, type RevealOnScrollProps, PROVIDERS as SOCIAL_AUTH_PROVIDERS, SaasflareComponentProps, type SaasflareMotion, SaasflareProvider, type SaasflareProviderProps, SaasflareScript, type SaasflareScriptProps, SaasflareShell, type SaasflareShellProps, SafariMock, type SafariMockProps, ScrollArea, ScrollBar, ScrollToTopButton, SearchField, type SearchFieldProps, SectionCard, type SectionCardProps, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, SettingsSection, type SettingsSectionProps, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, SheetTrigger, ShimmerButton, type ShimmerButtonProps, Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarSimpleIcon, SidebarTrigger, type Size, Skeleton, SlackAuthButton, Slider, SmoothScrollProvider, type SmoothScrollProviderProps, SocialAuthButton, type SocialAuthButtonProps, SocialButton, type SocialButtonProps, type SocialLink, type SocialProvider, SparkChart, type SparkChartProps, type SparkChartVariant, Spinner, SpotlightCard, type SpotlightCardProps, StatCard, type StatCardProps, StatefulButton, type StatefulButtonProps, Step, type StepProps, Steps, type StepsProps, type StickyScrollItem, StickyScrollReveal, type StickyScrollRevealProps, StripeAuthButton, StyleVariant, SunIcon, Surface, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, TagInput, type TagInputProps, TeamCard, type TeamCardProps, TestimonialCard, type TestimonialCardProps, TextGenerateEffect, type TextGenerateEffectProps, Textarea, ThemeModeMultiToggle, type ThemeModeMultiToggleAppearance, type ThemeModeMultiToggleProps, ThemeModeToggle, TikTokAuthButton, Timeline, TimelineItem, type TimelineItemProps, type TimelineProps, Toaster, Toggle, ToggleGroup, ToggleGroupItem, Tooltip, TooltipContent, type TooltipItem, TooltipProvider, TooltipTrigger, TopLoadingBar, type TopLoadingBarProps, TracingBeam, type TracingBeamProps, Tracker, type TrackerBlock, type TrackerProps, type TreeNode, TreeView, type TreeViewProps, TypewriterText, type UseDisclosureOptions, type UseDisclosureReturn, type UseFileDialogOptions, type UseFileDialogReturn, type UseIntervalOptions, type UseIntervalReturn, type UseLocalStorageOptions, type UseMeasureReturn, type UsePaginationOptions, type UsePaginationReturn, UserAvatar, type UserAvatarProps, WarningIcon, XAuthButton, XCircleIcon, XIcon, badgeVariants, buttonGroupVariants, cn, fadeIn, navigationMenuTriggerStyle, noMotion, scaleIn, slideDown, slideUp, spring, springBouncy, springGentle, springStiff, toggleVariants, useAnimation, useCountdown, useDirection, useDisclosure, useFileDialog, useFocusTrap, useFormField, useInterval, useIsMobile, useLocalStorage, useMeasure, useMergedRef, usePagination, useReducedMotion, useSaasflareMotion, useSaasflareTheme, useSidebar };
|