@retoo/borda 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,1561 @@
1
+ /** Event names emitted by the borda widget event bus. */
2
+ declare enum BordaEvent {
3
+ /** Fired when the borda instance is destroyed. */
4
+ ON_BORDA_DESTROY = "borda:on-destroy",
5
+ /** Fired when the close button is clicked. */
6
+ ON_CLOSE_CLICK = "close:click",
7
+ /** Fired when the overlay backdrop is clicked or activated via Enter/Space. */
8
+ ON_OVERLAY_CLICK = "overlay:click",
9
+ /** Fired when the tour initialises (on mount). */
10
+ ON_TOUR_START = "tour:start",
11
+ /** Fired when the last step is completed. */
12
+ ON_TOUR_FINISH = "tour:finish",
13
+ /** Fired when the tour is dismissed before completion (close button, backdrop or Escape). */
14
+ ON_TOUR_CLOSE = "tour:close",
15
+ /** Fired when advancing to the next step (not on last step → finish). */
16
+ ON_TOUR_NEXT = "tour:next",
17
+ /** Fired when navigating to the previous step. */
18
+ ON_TOUR_PREV = "tour:prev",
19
+ /** Fired when the ArrowRight key is pressed during an active tour. */
20
+ ON_KEYBOARD_NEXT = "keyboard:next",
21
+ /** Fired when the ArrowLeft key is pressed during an active tour. */
22
+ ON_KEYBOARD_PREV = "keyboard:prev",
23
+ /** Fired when the active step changes. */
24
+ ON_TOUR_STEP_CHANGE = "tour:step-change",
25
+ /** Fired when the "don't show again" checkbox changes value. */
26
+ ON_SKIP_CHANGE = "skip:change",
27
+ /** Fired when the skip state is cleared via {@link BordaSkipApi.clear}. */
28
+ ON_SKIP_CLEAR = "skip:clear",
29
+ /** Fired when the widget becomes visible. */
30
+ ON_VISIBILITY_SHOW = "visibility:show",
31
+ /** Fired when the widget becomes hidden. */
32
+ ON_VISIBILITY_HIDE = "visibility:hide"
33
+ }
34
+
35
+ /** Callback invoked when a subscribed event is emitted. */
36
+ type BordaEventHandler<T = unknown> = (data: T) => void;
37
+ /** Internal storage: event name → set of handlers. */
38
+ type BordaEventMap<T = unknown> = Map<BordaEvent, Set<BordaEventHandler<T>>>;
39
+ /** Pub/sub event bus for communication between borda components. */
40
+ interface BordaEventEmitter {
41
+ /** Subscribe a handler to an event. */
42
+ on(eventName: BordaEvent, handler: BordaEventHandler): void;
43
+ /** Subscribe a handler to an event; auto-unsubscribes after first call. */
44
+ once(eventName: BordaEvent, handler: BordaEventHandler): void;
45
+ /** Unsubscribe a specific handler from an event. */
46
+ off(eventName: BordaEvent, handler: BordaEventHandler): void;
47
+ /** Emit an event, calling all subscribed handlers with optional data. */
48
+ emit<T>(eventName: BordaEvent, data?: T): void;
49
+ /** Remove all handlers for a specific event. */
50
+ remove(eventName: BordaEvent): void;
51
+ /** Remove all handlers for all events. */
52
+ clear(): void;
53
+ }
54
+
55
+ /**
56
+ * Creates a pub/sub event emitter instance.
57
+ *
58
+ * @returns A {@link BordaEventEmitter} with `on`/`off`/`emit`/`remove`/`clear` methods.
59
+ */
60
+ declare function useEventEmitter(): BordaEventEmitter;
61
+
62
+ /** T-shirt size scale used for component sizing. */
63
+ declare enum ComponentSize {
64
+ XS = "xs",
65
+ SM = "sm",
66
+ MD = "md",
67
+ LG = "lg",
68
+ XL = "xl",
69
+ XXL = "xxl"
70
+ }
71
+ /** Placement of a component within its container (3×3 grid). */
72
+ declare enum ComponentPlacement {
73
+ TOP_START = "top-start",
74
+ TOP_CENTER = "top-center",
75
+ TOP_END = "top-end",
76
+ MIDDLE_START = "middle-start",
77
+ MIDDLE_CENTER = "middle-center",
78
+ MIDDLE_END = "middle-end",
79
+ BOTTOM_START = "bottom-start",
80
+ BOTTOM_CENTER = "bottom-center",
81
+ BOTTOM_END = "bottom-end"
82
+ }
83
+ /** Shape variant for components (affects border-radius and aspect ratio). */
84
+ declare enum ComponentShape {
85
+ CIRCLE = "circle",
86
+ LANDSCAPE = "landscape",
87
+ PORTRAIT = "portrait",
88
+ SQUARE = "square"
89
+ }
90
+ /** Possible values for the `aria-pressed` attribute. */
91
+ declare enum ComponentAriaPressed {
92
+ MIXED = "mixed"
93
+ }
94
+ /** Possible values for the `aria-haspopup` attribute. */
95
+ declare enum ComponentAriaHaspopup {
96
+ MENU = "menu",
97
+ TREE = "tree",
98
+ GRID = "grid",
99
+ DIALOG = "dialog",
100
+ LISTBOX = "listbox"
101
+ }
102
+
103
+ /** Built-in animation effects for Borda components. */
104
+ declare enum AnimationEffect {
105
+ NONE = "none",
106
+ FADE = "fade",
107
+ SCALE = "scale",
108
+ SLIDE = "slide"
109
+ }
110
+
111
+ /** Named override layer. */
112
+ declare enum OverrideLayer {
113
+ RESPONSIVE = "responsive",
114
+ /** Per-step component overrides — applied on top of RESPONSIVE, cleared between steps. */
115
+ STEP = "step"
116
+ }
117
+
118
+ /** Shape of any component instance that exposes its DOM elements via `getElements()`. */
119
+ type ComponentRef<T> = {
120
+ getElements(): T;
121
+ };
122
+ /** Inline styles — a raw CSS string or a partial `CSSStyleDeclaration` object. */
123
+ type ComponentStyles = string | Partial<CSSStyleDeclaration>;
124
+ /**
125
+ * Class binding value.
126
+ * Accepts a string, falsy values (skipped), an object whose truthy keys
127
+ * are added as classes, or a nested array of the same.
128
+ */
129
+ type ComponentClasses = string | number | false | null | undefined | Record<string, boolean> | ComponentClasses[];
130
+ /** Common ARIA attributes shared across interactive components. */
131
+ interface ComponentAriaProps {
132
+ ariaLabel?: string;
133
+ ariaLabelledby?: string;
134
+ ariaDescribedby?: string;
135
+ ariaDisabled?: boolean;
136
+ ariaExpanded?: boolean;
137
+ ariaControls?: string;
138
+ ariaPressed?: ComponentAriaPressed;
139
+ ariaHaspopup?: ComponentAriaHaspopup;
140
+ }
141
+
142
+ /** Internal return type for component snippets. */
143
+ type ComponentSnippetReturn = any;
144
+ /**
145
+ * Typed Svelte 5 snippet reference.
146
+ * Produces a descriptive compile-time error when used incorrectly
147
+ * (e.g. called as a function instead of `{@render ...}`).
148
+ */
149
+ interface ComponentSnippet<Parameters extends unknown[] = []> {
150
+ (this: void, ...args: number extends Parameters['length'] ? never : Parameters): {
151
+ '{@render ...} must be called with a Snippet': "import type { ComponentSnippet } from '@retoo/borda'";
152
+ } & ComponentSnippetReturn;
153
+ }
154
+
155
+ /** Custom CSS class overrides for the container widget. */
156
+ interface BordaContainerCustomClasses {
157
+ root: ComponentClasses;
158
+ }
159
+ /** Custom inline style overrides for the container widget. */
160
+ interface BordaContainerCustomStyles {
161
+ root: ComponentStyles;
162
+ }
163
+ /** Props for the BordaContainer widget. */
164
+ interface BordaContainerProps {
165
+ id: string;
166
+ customClasses: Partial<BordaContainerCustomClasses>;
167
+ customStyles: Partial<BordaContainerCustomStyles>;
168
+ }
169
+ /** Snippet slots for the container widget. */
170
+ interface BordaContainerSnippets {
171
+ children: ComponentSnippet;
172
+ }
173
+ /** DOM elements exposed by the outer container component. */
174
+ interface BordaContainerElements {
175
+ root: HTMLDivElement | null;
176
+ }
177
+ /** Component ref for the outer container. */
178
+ interface BordaContainerRef {
179
+ getElements: () => BordaContainerElements;
180
+ }
181
+
182
+ /** Shape of the button element. */
183
+ declare enum BordaButtonShape {
184
+ RECTANGLE = "rectangle",
185
+ CIRCLE = "circle",
186
+ SQUARE = "square"
187
+ }
188
+ /** Visual variant of the button. */
189
+ declare enum BordaButtonVariant {
190
+ /** Solid background fill. */
191
+ FILLED = "filled",
192
+ /** Transparent background, bordered. */
193
+ OUTLINED = "outlined",
194
+ /** Transparent background, subtle hover surface. */
195
+ GHOST = "ghost",
196
+ /** Transparent background, text only. */
197
+ TEXT = "text"
198
+ }
199
+ /** HTML `type` attribute for the button element. */
200
+ declare enum BordaButtonType {
201
+ BUTTON = "button",
202
+ SUBMIT = "submit",
203
+ RESET = "reset"
204
+ }
205
+
206
+ /** Custom CSS class overrides for the base button. */
207
+ interface BordaButtonComponentClasses {
208
+ root: ComponentClasses;
209
+ }
210
+ /** Custom inline style overrides for the base button. */
211
+ interface BordaButtonComponentStyles {
212
+ root: ComponentStyles;
213
+ }
214
+ /** Configuration props for the base borda button component. */
215
+ interface BordaButtonProps {
216
+ id: string;
217
+ disabled: boolean;
218
+ autosize: boolean;
219
+ size: ComponentSize;
220
+ shape: BordaButtonShape;
221
+ variant: BordaButtonVariant;
222
+ type: BordaButtonType;
223
+ aria: Partial<ComponentAriaProps>;
224
+ customClasses: Partial<BordaButtonComponentClasses>;
225
+ customStyles: Partial<BordaButtonComponentStyles>;
226
+ }
227
+ /** Event handlers for the base button. */
228
+ interface BordaButtonEvents {
229
+ onclick: (event: Event) => void;
230
+ }
231
+ /** Snippet slots for the base button. */
232
+ interface BordaButtonSnippets {
233
+ children: ComponentSnippet;
234
+ }
235
+ /** DOM element references for the base button. */
236
+ interface BordaButtonElements {
237
+ root: HTMLButtonElement | null;
238
+ }
239
+
240
+ interface BordaIconCustomClasses {
241
+ root: ComponentClasses;
242
+ }
243
+ interface BordaIconCustomStyles {
244
+ root: ComponentStyles;
245
+ }
246
+ interface BordaIconProps {
247
+ id: string;
248
+ viewBox: string;
249
+ size: ComponentSize;
250
+ customClasses: Partial<BordaIconCustomClasses>;
251
+ customStyles: Partial<BordaIconCustomStyles>;
252
+ }
253
+ interface BordaIconSnippets {
254
+ children: ComponentSnippet;
255
+ }
256
+ interface BordaIconElements {
257
+ root: SVGSVGElement | null;
258
+ }
259
+
260
+ /** Custom CSS class overrides for the close button and its sub-components. */
261
+ interface BordaCloseButtonComponentClasses {
262
+ root: ComponentClasses;
263
+ button: ComponentClasses;
264
+ cross: ComponentClasses;
265
+ }
266
+ /** Custom inline style overrides for the close button and its sub-components. */
267
+ interface BordaCloseButtonComponentStyles {
268
+ root: ComponentStyles;
269
+ button: ComponentStyles;
270
+ cross: ComponentStyles;
271
+ }
272
+ /** Custom HTML override for the close button. */
273
+ interface BordaCloseButtonComponentHtml {
274
+ button: string;
275
+ }
276
+ /** Configuration props for the close button widget. */
277
+ interface BordaCloseButtonProps {
278
+ id: string;
279
+ size: ComponentSize;
280
+ shape: ComponentShape;
281
+ aria: Partial<ComponentAriaProps>;
282
+ customClasses: Partial<BordaCloseButtonComponentClasses>;
283
+ customStyles: Partial<BordaCloseButtonComponentStyles>;
284
+ customHtml: Partial<BordaCloseButtonComponentHtml>;
285
+ onClose: (event: Event) => void;
286
+ }
287
+ /** DOM elements exposed by the close button component. */
288
+ interface BordaCloseButtonElements {
289
+ root: HTMLDivElement | null;
290
+ cross: BordaIconElements | null;
291
+ button: BordaButtonElements | null;
292
+ }
293
+ /** Component ref for the close button. */
294
+ interface BordaCloseButtonRef {
295
+ getElements: () => BordaCloseButtonElements;
296
+ }
297
+
298
+ /** Per-button customization: all BordaButton props (except id) plus a text label. */
299
+ type BordaTourButtonConfig = Partial<Omit<BordaButtonProps, 'id'>> & {
300
+ label?: string;
301
+ };
302
+ /** A button config resolved with its computed root classes and merged inline styles. */
303
+ type BordaTourResolvedButton = BordaTourButtonConfig & {
304
+ classes: ComponentClasses;
305
+ styles: string | undefined;
306
+ };
307
+ /** Custom CSS class overrides for the tour buttons bar. */
308
+ interface BordaTourButtonsComponentClasses {
309
+ root: ComponentClasses;
310
+ next: ComponentClasses;
311
+ prev: ComponentClasses;
312
+ finish: ComponentClasses;
313
+ skip: ComponentClasses;
314
+ }
315
+ /** Custom inline style overrides for the tour buttons bar. */
316
+ interface BordaTourButtonsComponentStyles {
317
+ root: ComponentStyles;
318
+ next: ComponentStyles;
319
+ prev: ComponentStyles;
320
+ finish: ComponentStyles;
321
+ skip: ComponentStyles;
322
+ }
323
+ /** Custom HTML overrides for the tour buttons. */
324
+ interface BordaTourButtonsComponentHtml {
325
+ next: string;
326
+ prev: string;
327
+ finish: string;
328
+ skip: string;
329
+ }
330
+ /** Props for the BordaTourButtons component. */
331
+ interface BordaTourButtonsProps {
332
+ id: string;
333
+ currentStep: number;
334
+ totalSteps: number;
335
+ /** Default size applied to every button; overridable per button. */
336
+ size: ComponentSize;
337
+ /** Prev button config. Pass `false` to hide. */
338
+ prev: BordaTourButtonConfig | false;
339
+ /** Next button config (shown on non-last steps). Pass `false` to hide. */
340
+ next: BordaTourButtonConfig | false;
341
+ /** Finish button config (replaces next on the last step). Pass `false` to hide. */
342
+ finish: BordaTourButtonConfig | false;
343
+ /** Skip button config. Pass `false` to hide (default). */
344
+ skip: BordaTourButtonConfig | false;
345
+ /** ARIA attributes for accessibility. */
346
+ aria: Partial<ComponentAriaProps>;
347
+ customClasses: Partial<BordaTourButtonsComponentClasses>;
348
+ customStyles: Partial<BordaTourButtonsComponentStyles>;
349
+ customHtml: Partial<BordaTourButtonsComponentHtml>;
350
+ }
351
+ /** Event handlers for the tour buttons. */
352
+ interface BordaTourButtonsEvents {
353
+ onPrev: () => void;
354
+ onNext: () => void;
355
+ onFinish: () => void;
356
+ onSkip: () => void;
357
+ }
358
+ /** Snippet slots for the tour buttons. */
359
+ interface BordaTourButtonsSnippets {
360
+ /** Generic center slot rendered between prev and next buttons. */
361
+ center: ComponentSnippet;
362
+ }
363
+ /** DOM element references exposed via `getElements()`. */
364
+ interface BordaTourButtonsElements {
365
+ root: HTMLDivElement | null;
366
+ }
367
+ /** Public ref exposed by the BordaTourButtons component via `bind:this`. */
368
+ interface BordaTourButtonsRef {
369
+ getElements: () => BordaTourButtonsElements;
370
+ }
371
+
372
+ declare const bordaTourPrevButtonDefault: BordaTourButtonConfig;
373
+ declare const bordaTourNextButtonDefault: BordaTourButtonConfig;
374
+ declare const bordaTourFinishButtonDefault: BordaTourButtonConfig;
375
+ declare const bordaTourSkipButtonDefault: BordaTourButtonConfig;
376
+
377
+ /** Visual presentation of the tooltip image. */
378
+ declare enum BordaTourImageVariant {
379
+ /** Inset within the tooltip padding, with its own rounded corners. */
380
+ DEFAULT = "default",
381
+ /** Stretched to the tooltip edges; only the top corners are rounded. */
382
+ BLEED = "bleed"
383
+ }
384
+
385
+ /** Custom CSS class overrides for the image. */
386
+ interface BordaImageCustomClasses {
387
+ root: ComponentClasses;
388
+ }
389
+ /** Custom inline style overrides for the image. */
390
+ interface BordaImageCustomStyles {
391
+ root: ComponentStyles;
392
+ }
393
+ /** Custom HTML override that fully replaces the rendered image. */
394
+ interface BordaImageCustomHtml {
395
+ root: string;
396
+ }
397
+ /** Configuration props for the image component. */
398
+ interface BordaImageProps {
399
+ id: string;
400
+ /** Image source URL. */
401
+ src: string;
402
+ /** Alternative text describing the image. */
403
+ alt: string;
404
+ /** ARIA attributes for accessibility. */
405
+ aria: Partial<ComponentAriaProps>;
406
+ customClasses: Partial<BordaImageCustomClasses>;
407
+ customStyles: Partial<BordaImageCustomStyles>;
408
+ customHtml: Partial<BordaImageCustomHtml>;
409
+ }
410
+ /** DOM element references exposed via `getElements()`. */
411
+ interface BordaImageElements {
412
+ root: HTMLImageElement | null;
413
+ }
414
+ /** Public ref exposed by the BordaImage component via `bind:this`. */
415
+ interface BordaImageRef {
416
+ getElements: () => BordaImageElements;
417
+ }
418
+
419
+ /** Props for the BordaTourImage widget. Mirrors the shared image primitive it wraps. */
420
+ interface BordaTourImageProps {
421
+ id: string;
422
+ /** Image source URL. */
423
+ src: string;
424
+ /** Alternative text describing the image. */
425
+ alt: string;
426
+ /** Visual presentation — inset (`default`) or stretched to the tooltip edges (`bleed`). */
427
+ variant: BordaTourImageVariant;
428
+ /** ARIA attributes for accessibility. */
429
+ aria: Partial<ComponentAriaProps>;
430
+ customClasses: Partial<BordaImageCustomClasses>;
431
+ customStyles: Partial<BordaImageCustomStyles>;
432
+ customHtml: Partial<BordaImageCustomHtml>;
433
+ }
434
+ /** DOM element references exposed via `getElements()`. */
435
+ interface BordaTourImageElements {
436
+ root: HTMLImageElement | null;
437
+ }
438
+ /** Public ref exposed by the BordaTourImage widget via `bind:this`. */
439
+ interface BordaTourImageRef {
440
+ getElements: () => BordaTourImageElements;
441
+ }
442
+
443
+ /** Custom CSS class overrides for the overlay widget. */
444
+ interface BordaTourOverlayComponentClasses {
445
+ root: ComponentClasses;
446
+ backdrop: ComponentClasses;
447
+ }
448
+ /** Custom inline style overrides for the overlay widget. */
449
+ interface BordaTourOverlayComponentStyles {
450
+ root: ComponentStyles;
451
+ backdrop: ComponentStyles;
452
+ }
453
+ /** Props for the BordaTourOverlay widget. */
454
+ interface BordaTourOverlayProps {
455
+ id: string;
456
+ targetElement: HTMLElement | null;
457
+ padding: number;
458
+ borderRadius: number;
459
+ isAnimated: boolean;
460
+ hasCloseOnBackdropClick: boolean;
461
+ aria: Partial<ComponentAriaProps>;
462
+ customClasses: Partial<BordaTourOverlayComponentClasses>;
463
+ customStyles: Partial<BordaTourOverlayComponentStyles>;
464
+ }
465
+ /** Event handlers for the overlay widget. */
466
+ interface BordaTourOverlayEvents {
467
+ onClose: (event: MouseEvent) => void;
468
+ }
469
+ /** DOM element references exposed via `getElements()`. */
470
+ interface BordaTourOverlayElements {
471
+ root: SVGSVGElement | null;
472
+ backdrop: SVGPathElement | null;
473
+ }
474
+ /** Public ref exposed by the BordaTourOverlay widget via `bind:this`. */
475
+ interface BordaTourOverlayRef {
476
+ getElements: () => BordaTourOverlayElements;
477
+ }
478
+ /** Props accepted by the overlay spotlight hook. */
479
+ interface UseOverlayProps {
480
+ getTargetElement: () => HTMLElement | null;
481
+ getBorderRadius: () => number;
482
+ getPadding: () => number;
483
+ getIsAnimated: () => boolean;
484
+ }
485
+ /** Reactive state returned by the overlay spotlight hook. */
486
+ interface UseOverlayReturns {
487
+ backdropPath: string;
488
+ /** True for a short window after a target change — lets CSS animate the spotlight transition. */
489
+ isTransitioning: boolean;
490
+ /** Document width (used as SVG `width` attribute). */
491
+ width: number;
492
+ /** Document height (used as SVG `height` attribute). */
493
+ height: number;
494
+ }
495
+
496
+ declare function useOverlay({ getTargetElement, getBorderRadius, getPadding, getIsAnimated }: UseOverlayProps): UseOverlayReturns;
497
+
498
+ /** Custom CSS class overrides for the skip widget. */
499
+ interface BordaTourSkipComponentClasses {
500
+ root: ComponentClasses;
501
+ input: ComponentClasses;
502
+ label: ComponentClasses;
503
+ }
504
+ /** Custom inline style overrides for the skip widget. */
505
+ interface BordaTourSkipComponentStyles {
506
+ root: ComponentStyles;
507
+ input: ComponentStyles;
508
+ label: ComponentStyles;
509
+ }
510
+ /** Custom HTML override for the skip widget. */
511
+ interface BordaTourSkipComponentHtml {
512
+ input: string;
513
+ label: string;
514
+ }
515
+ /** Props for the BordaTourSkip widget. */
516
+ interface BordaTourSkipProps {
517
+ id: string;
518
+ checked: boolean;
519
+ label: string;
520
+ disabled: boolean;
521
+ /** ARIA attributes for accessibility. */
522
+ aria: Partial<ComponentAriaProps>;
523
+ customClasses: Partial<BordaTourSkipComponentClasses>;
524
+ customStyles: Partial<BordaTourSkipComponentStyles>;
525
+ customHtml: Partial<BordaTourSkipComponentHtml>;
526
+ }
527
+ /** Event handlers for the skip widget. */
528
+ interface BordaTourSkipEvents {
529
+ onSkipChange: (checked: boolean) => void;
530
+ }
531
+ /** DOM element references exposed via `getElements()`. */
532
+ interface BordaTourSkipElements {
533
+ root: HTMLLabelElement | null;
534
+ input: HTMLInputElement | null;
535
+ }
536
+ /** Public ref exposed by the BordaTourSkip widget via `bind:this`. */
537
+ interface BordaTourSkipRef {
538
+ getElements: () => BordaTourSkipElements;
539
+ }
540
+
541
+ /** Which edge of the tooltip the arrow sits on. */
542
+ declare enum BordaTooltipArrowSide {
543
+ TOP = "top",
544
+ BOTTOM = "bottom",
545
+ LEFT = "left",
546
+ RIGHT = "right"
547
+ }
548
+
549
+ /** Animation settings consumed by the tooltip widget. */
550
+ interface BordaTourTooltipAnimation {
551
+ enter: AnimationEffect;
552
+ exit: AnimationEffect;
553
+ enterDuration: number;
554
+ exitDuration: number;
555
+ easing: string;
556
+ }
557
+ /** Custom CSS classes for tooltip elements. */
558
+ interface BordaTourTooltipComponentClasses {
559
+ root: ComponentClasses;
560
+ header: ComponentClasses;
561
+ title: ComponentClasses;
562
+ description: ComponentClasses;
563
+ }
564
+ /** Custom inline styles for tooltip elements. */
565
+ interface BordaTourTooltipComponentStyles {
566
+ root: ComponentStyles;
567
+ header: ComponentStyles;
568
+ title: ComponentStyles;
569
+ description: ComponentStyles;
570
+ }
571
+ /** Custom HTML overrides for the tooltip content. */
572
+ interface BordaTourTooltipComponentHtml {
573
+ title: string;
574
+ description: string;
575
+ }
576
+ /** Spatial parameters controlling tooltip placement relative to the spotlight and viewport. */
577
+ interface BordaTourTooltipPositionProps {
578
+ offset: number;
579
+ margin: number;
580
+ padding: number;
581
+ }
582
+ /** Arrow configuration. Pass `false` to disable the arrow entirely. */
583
+ interface BordaTourTooltipArrowProps {
584
+ placement: ComponentPlacement;
585
+ }
586
+ /**
587
+ * Auto-flip placement when the requested placement does not fit in the viewport.
588
+ * The first placement from `fallback` that fits wins; if none fit, the originally
589
+ * requested placement is kept (and clamped to the viewport).
590
+ */
591
+ interface BordaTourTooltipAutoPlacement {
592
+ /** Ordered list of placements to try after the requested one. First fit wins. */
593
+ fallback: ComponentPlacement[];
594
+ }
595
+ /** Full props accepted by the BordaTourTooltip component. */
596
+ interface BordaTourTooltipProps extends BordaTourTooltipPositionProps {
597
+ id: string;
598
+ title: string;
599
+ description: string;
600
+ /** Size variant scaling the tooltip padding, gap, min-width and font sizes. */
601
+ size: ComponentSize;
602
+ placement: ComponentPlacement;
603
+ targetElement: HTMLElement | null;
604
+ arrow: BordaTourTooltipArrowProps | false;
605
+ aria: Partial<ComponentAriaProps>;
606
+ customClasses: Partial<BordaTourTooltipComponentClasses>;
607
+ customStyles: Partial<BordaTourTooltipComponentStyles>;
608
+ customHtml: Partial<BordaTourTooltipComponentHtml>;
609
+ /** Whether the tooltip should currently be hidden — drives the enter/exit animation. */
610
+ isHidden: boolean;
611
+ /** Whether the tooltip glides its position between steps (CSS transition on top/left). */
612
+ hasGlide: boolean;
613
+ /** Animation timings/kind. Pass `false` to disable animation completely. */
614
+ animation: BordaTourTooltipAnimation | false;
615
+ /**
616
+ * Auto-flip placement to fit the viewport.
617
+ * - `true` — enabled with a mirrored default fallback (e.g. `bottom-start` → `top-start`).
618
+ * - `false` — disabled, use the requested placement as-is (clamped).
619
+ * - Object — custom fallback chain.
620
+ */
621
+ autoPlacement: BordaTourTooltipAutoPlacement | boolean;
622
+ }
623
+ /** Snippet slots for the tooltip. */
624
+ interface BordaTourTooltipSnippets {
625
+ image: ComponentSnippet;
626
+ close: ComponentSnippet;
627
+ skip: ComponentSnippet;
628
+ progress: ComponentSnippet;
629
+ footer: ComponentSnippet;
630
+ }
631
+ /** DOM element references exposed via `getElements()`. */
632
+ interface BordaTourTooltipElements {
633
+ root: HTMLDivElement | null;
634
+ }
635
+ /** Public ref API exposed by the component via `bind:this`. */
636
+ interface BordaTourTooltipRef {
637
+ getElements: () => BordaTourTooltipElements;
638
+ }
639
+ /** Props accepted by the tooltip position hook. */
640
+ interface UseTooltipPositionProps {
641
+ getTargetElement: () => HTMLElement | null;
642
+ getTooltipElement: () => HTMLElement | null;
643
+ getPlacement: () => ComponentPlacement;
644
+ getOffset: () => number;
645
+ getMargin: () => number;
646
+ getPadding: () => number;
647
+ getAutoPlacement: () => BordaTourTooltipAutoPlacement | boolean;
648
+ /**
649
+ * Reactive getter for the arrow side, sourced from `useTooltipArrow().side`.
650
+ * Drives `arrowOffset` computation along the perpendicular axis.
651
+ * `null` (no arrow) skips arrow offset updates.
652
+ */
653
+ getArrowSide: () => BordaTooltipArrowSide | null;
654
+ }
655
+ /** Reactive position returned by the tooltip position hook. */
656
+ interface UseTooltipPositionReturns {
657
+ top: number;
658
+ left: number;
659
+ /** The placement actually used after auto-flip resolution. */
660
+ effectivePlacement: ComponentPlacement;
661
+ /**
662
+ * Offset (px) along the tooltip edge where the arrow should be anchored,
663
+ * measured from the tooltip's top-left corner. Used to point the arrow at
664
+ * the target's center regardless of placement variant (start/center/end).
665
+ */
666
+ arrowOffset: number;
667
+ }
668
+ /** Props accepted by the tooltip arrow hook. */
669
+ interface UseTooltipArrowProps {
670
+ getArrow: () => BordaTourTooltipArrowProps | false | undefined;
671
+ getPlacement: () => ComponentPlacement;
672
+ }
673
+ /** Reactive state returned by the tooltip arrow hook. */
674
+ interface UseTooltipArrowReturns {
675
+ /** Which edge of the tooltip the arrow sits on, or `null` when hidden. */
676
+ side: BordaTooltipArrowSide | null;
677
+ /** CSS classes to apply on the arrow element, or `null` when the arrow is hidden. */
678
+ classes: string[] | null;
679
+ }
680
+ /** Lightweight subset of DOMRect used internally by the tooltip position hook. */
681
+ interface BordaTooltipRect {
682
+ top: number;
683
+ right: number;
684
+ bottom: number;
685
+ left: number;
686
+ width: number;
687
+ height: number;
688
+ }
689
+ /** A computed top/left pair (document-relative). */
690
+ interface BordaTooltipPosition {
691
+ top: number;
692
+ left: number;
693
+ }
694
+ /** The tooltip's rendered size in pixels. */
695
+ interface BordaTooltipSize {
696
+ width: number;
697
+ height: number;
698
+ }
699
+ /** A placement that fits the viewport, together with its resolved position. */
700
+ interface BordaTooltipPlacementFit {
701
+ placement: ComponentPlacement;
702
+ position: BordaTooltipPosition;
703
+ }
704
+ /** Min/max top/left (document coordinates) that keep the tooltip inside the viewport. */
705
+ interface BordaTooltipViewportBounds {
706
+ minTop: number;
707
+ maxTop: number;
708
+ minLeft: number;
709
+ maxLeft: number;
710
+ }
711
+ /**
712
+ * Per-side overflow of a candidate position past the viewport (px).
713
+ * Positive means the tooltip overflows that side; negative is the spare gap.
714
+ */
715
+ interface BordaTooltipOverflow {
716
+ top: number;
717
+ right: number;
718
+ bottom: number;
719
+ left: number;
720
+ }
721
+ /** Props accepted by the tooltip layout hook — a snapshot of everything the geometry depends on. */
722
+ interface UseTooltipLayoutProps {
723
+ /** The DOM element the tooltip points at. */
724
+ target: HTMLElement;
725
+ /** The tooltip root element (read for its rendered size). */
726
+ tooltip: HTMLElement;
727
+ /** The requested placement. */
728
+ placement: ComponentPlacement;
729
+ /** Extra pixel gap between anchor and tooltip along the main axis. */
730
+ offset: number;
731
+ /** Minimum gap to keep from each viewport edge (added to `offset`). */
732
+ margin: number;
733
+ /** Pixels the target rect is expanded by before positioning. */
734
+ padding: number;
735
+ /** Auto-flip configuration. */
736
+ autoPlacement: BordaTourTooltipAutoPlacement | boolean;
737
+ /** The tooltip edge the arrow sits on, or `null` when hidden. */
738
+ arrowSide: BordaTooltipArrowSide | null;
739
+ /** The viewport size in pixels. */
740
+ viewport: BordaTooltipSize;
741
+ }
742
+ /** Resolved tooltip geometry returned by the tooltip layout hook. */
743
+ interface UseTooltipLayoutReturns {
744
+ /** The resolved top/left in document coordinates. */
745
+ position: BordaTooltipPosition;
746
+ /** The placement actually used (after auto-flip). */
747
+ placement: ComponentPlacement;
748
+ /** The arrow's perpendicular-axis offset in pixels. */
749
+ arrowOffset: number;
750
+ }
751
+
752
+ /**
753
+ * Reactive tooltip arrow hook.
754
+ *
755
+ * Resolves which edge of the tooltip the arrow sits on (top/bottom/left/right)
756
+ * for the current placement, and builds the matching CSS classes. The exact
757
+ * position along that edge is computed by `useTooltipPosition.arrowOffset`
758
+ * and applied as an inline CSS variable in the component.
759
+ *
760
+ * @param props - Reactive getters for the arrow config and current placement.
761
+ * @returns Reactive `side` and `classes` (both `null` when the arrow is hidden).
762
+ */
763
+ declare function useTooltipArrow({ getArrow, getPlacement }: UseTooltipArrowProps): UseTooltipArrowReturns;
764
+
765
+ /**
766
+ * Reactive tooltip positioning hook with auto-flip support.
767
+ *
768
+ * Thin reactive shell over {@link useTooltipLayout}: tracks the target,
769
+ * tooltip, placement props, viewport size and scroll position, recomputes the
770
+ * layout on every change, and exposes the placement that was actually used as
771
+ * `effectivePlacement` (so the arrow can point in the right direction).
772
+ *
773
+ * @param props - Reactive getters for target/tooltip elements, placement, spatial params, and auto-flip config.
774
+ * @returns Reactive `top`, `left`, `effectivePlacement`, and `arrowOffset` values.
775
+ */
776
+ declare function useTooltipPosition({ getTargetElement, getTooltipElement, getPlacement, getPadding, getOffset, getMargin, getAutoPlacement, getArrowSide }: UseTooltipPositionProps): UseTooltipPositionReturns;
777
+
778
+ /** Controls when a component becomes visible relative to the scroll animation. */
779
+ declare enum BordaScrollAppearance {
780
+ DURING_SCROLL = "during-scroll",
781
+ AFTER_SCROLL = "after-scroll"
782
+ }
783
+ /** How the tooltip moves between steps. */
784
+ declare enum BordaTooltipTransition {
785
+ /** Hide the tooltip while scrolling/transitioning, then fade it in at the new step. */
786
+ FADE = "fade",
787
+ /** Keep the tooltip visible and glide its position to the new step. */
788
+ GLIDE = "glide"
789
+ }
790
+
791
+ /** Tooltip enter/exit animation settings. */
792
+ interface BordaTooltipAnimation {
793
+ /** Animation effect played on enter. */
794
+ enter: AnimationEffect;
795
+ /** Animation effect played on exit. */
796
+ exit: AnimationEffect;
797
+ /** Enter animation duration in ms. */
798
+ enterDuration: number;
799
+ /** Exit animation duration in ms. */
800
+ exitDuration: number;
801
+ /** CSS easing applied to the animation. */
802
+ easing: string;
803
+ /** When to reveal the tooltip relative to the scroll animation (fade transition only). */
804
+ appearance: BordaScrollAppearance;
805
+ /** How the tooltip moves between steps: `fade` (hide + fade in) or `glide` (stay + slide). */
806
+ transition: BordaTooltipTransition;
807
+ }
808
+ /** Overlay/spotlight transition between steps. */
809
+ interface BordaOverlayAnimation {
810
+ /** Duration in ms used to wait for the overlay to settle between steps. */
811
+ transitionDuration: number;
812
+ /** CSS easing applied to the overlay transition. */
813
+ easing: string;
814
+ }
815
+ /** Full animation feature config covering tooltip + overlay timings. */
816
+ interface BordaAnimationConfig {
817
+ /** Master switch for all animations. */
818
+ isEnabled: boolean;
819
+ /** Tooltip animation settings. Unspecified keys fall back to defaults. */
820
+ tooltip: Partial<BordaTooltipAnimation>;
821
+ /** Overlay/spotlight animation settings. Unspecified keys fall back to defaults. */
822
+ overlay: Partial<BordaOverlayAnimation>;
823
+ }
824
+ /** Public API for inspecting the animation feature at runtime. */
825
+ interface BordaAnimationApi {
826
+ /** Whether animations are enabled globally. */
827
+ isEnabled: boolean;
828
+ /** Resolved tooltip animation settings. */
829
+ tooltip: BordaTooltipAnimation;
830
+ /** Resolved overlay animation settings. */
831
+ overlay: BordaOverlayAnimation;
832
+ }
833
+ /** Return value of {@link useBordaAnimation}. */
834
+ interface UseBordaAnimationReturns {
835
+ apply: () => void;
836
+ api: BordaAnimationApi;
837
+ }
838
+
839
+ /**
840
+ * Centralizes animation timings for the tooltip and overlay.
841
+ *
842
+ * Config is read reactively, so `mergeConfig({ animation: ... })` at runtime
843
+ * is picked up on the next access. Pass `animation: false` to fully disable.
844
+ */
845
+ declare function useBordaAnimation(config: UseBordaConfigReturns): UseBordaAnimationReturns;
846
+
847
+ /** Public API for controlling the tour at runtime. */
848
+ interface BordaControllerApi {
849
+ /** `true` when the tour has at least one step. */
850
+ isActivated: boolean;
851
+ /** Current 1-based step number. */
852
+ currentStep: number;
853
+ /** Current 0-based step index. */
854
+ currentStepIndex: number;
855
+ /** Total number of steps. */
856
+ totalSteps: number;
857
+ /** `true` when there is a step after the current one. */
858
+ hasNextStep: boolean;
859
+ /** `true` when there is a step before the current one. */
860
+ hasPrevStep: boolean;
861
+ /** Resolved DOM element for the current step's target. */
862
+ currentTarget: HTMLElement | null;
863
+ /** Full data object of the current step, including any per-step overrides. */
864
+ step: BordaStepConfig | undefined;
865
+ /** Navigate to a step by 0-based index. Waits for `prepareElement` if defined. */
866
+ changeStep: (index: number) => Promise<void>;
867
+ /** Navigate to the previous step. */
868
+ prev: () => Promise<void>;
869
+ /** Navigate to the next step (calls finish on the last step). */
870
+ next: () => Promise<void>;
871
+ /** Emit ON_TOUR_FINISH and end the tour. */
872
+ finish: () => void;
873
+ /**
874
+ * `true` while a navigation is paused via {@link BordaControllerApi.preventMove}.
875
+ * Resets to `false` after {@link BordaControllerApi.continue} or {@link BordaControllerApi.clearMovePrevented}.
876
+ */
877
+ isMovePrevented: boolean;
878
+ /** Pause the in-progress navigation. Call {@link BordaControllerApi.continue} to resume. */
879
+ preventMove: () => void;
880
+ /** Resume a navigation paused by {@link BordaControllerApi.preventMove}. */
881
+ continue: () => void;
882
+ /** Cancel a paused navigation without completing it. */
883
+ clearMovePrevented: () => void;
884
+ }
885
+ /** Return value of {@link useBordaController}. */
886
+ interface UseBordaControllerReturns {
887
+ /** Apply the initial step from config. */
888
+ apply: () => void;
889
+ /** Reactive public API for controlling the tour. */
890
+ api: BordaControllerApi;
891
+ }
892
+
893
+ /**
894
+ * Manages the active tour step state at the entrypoint level.
895
+ *
896
+ * Returns an API object equivalent to {@link BordaControllerApi} with reactive state
897
+ * and buttons methods, plus an `apply()` to initialize from config.
898
+ */
899
+ declare function useBordaController(config: UseBordaConfigReturns, eventEmitter: BordaEventEmitter): UseBordaControllerReturns;
900
+
901
+ /** Return value of {@link useBordaHighlight}. */
902
+ interface UseBordaHighlightReturns {
903
+ /**
904
+ * Spotlights a single element. Accepts the same data as a tour step plus
905
+ * optional top-level config, and mounts a one-step tour.
906
+ */
907
+ highlight: (step: BordaStepConfig, config?: BordaHighlightConfig, target?: BordaTarget) => Promise<BordaInstance>;
908
+ }
909
+
910
+ /**
911
+ * Provides the `highlight` shortcut — spotlights a single element by mounting
912
+ * a one-step tour through the factory's {@link mount}.
913
+ *
914
+ * @param mount - The factory's mount method, used to render the one-step tour.
915
+ * @returns The highlight API exposing {@link UseBordaHighlightReturns.highlight}.
916
+ */
917
+ declare function useBordaHighlight(mount: UseBordaReturns['mount']): UseBordaHighlightReturns;
918
+
919
+ /** Return value of {@link useBordaKeyboard}. */
920
+ interface UseBordaKeyboardReturns {
921
+ /** Attach keyboard listeners. Call once after mount. */
922
+ apply: () => void;
923
+ /** Remove keyboard listeners. Call on unmount. */
924
+ destroy: () => void;
925
+ }
926
+
927
+ /**
928
+ * Manages keyboard navigation for the borda widget.
929
+ *
930
+ * When `tour.hasKeyboardControl` is not `false`, attaches a document-level
931
+ * `keydown` listener that maps:
932
+ * - ArrowRight → emits {@link BordaEvent.ON_KEYBOARD_NEXT}
933
+ * - ArrowLeft → emits {@link BordaEvent.ON_KEYBOARD_PREV}
934
+ * - Escape → emits {@link BordaEvent.ON_TOUR_CLOSE}
935
+ *
936
+ * Keypresses originating from form controls are ignored so the widget
937
+ * does not interfere with text input.
938
+ *
939
+ * @param config - The reactive config store.
940
+ * @param eventEmitter - The shared event bus.
941
+ * @returns `apply` and `destroy` lifecycle methods.
942
+ */
943
+ declare function useBordaKeyboard(config: UseBordaConfigReturns, eventEmitter: BordaEventEmitter): UseBordaKeyboardReturns;
944
+
945
+ /** Return value of {@link useBordaOverrides}. */
946
+ interface UseBordaOverridesReturns {
947
+ /** The resolved config with all override layers applied (reactive). */
948
+ resolved: BordaConfig;
949
+ /** Compute and return the resolved config snapshot. */
950
+ resolve: () => BordaConfig;
951
+ /** Set an override factory function for a named layer, or `null` to clear that layer. */
952
+ set: (layer: OverrideLayer, value: (() => Partial<BordaConfig>) | null) => void;
953
+ /** Apply per-step component overrides from the given step, or clear them if `undefined`. */
954
+ applyStep: (step: BordaStepConfig | null) => void;
955
+ }
956
+
957
+ /**
958
+ * Manages runtime config overrides via named layers and a deep-merge strategy.
959
+ *
960
+ * Each layer is identified by name and merged in a fixed order,
961
+ * so higher-priority layers always win.
962
+ *
963
+ * @param config - The reactive config store to overlay overrides on.
964
+ * @returns A reactive `resolved` config and methods to `set`/`resolve` overrides.
965
+ */
966
+ declare function useBordaOverrides(config: UseBordaConfigReturns): UseBordaOverridesReturns;
967
+
968
+ /** Public API for the responsive feature. */
969
+ interface BordaResponsiveApi {
970
+ /** The currently active breakpoint (max-width in px), or `null` if none matched. */
971
+ activeBreakpoint: number | null;
972
+ }
973
+ /** Return value of {@link useBordaResponsive}. */
974
+ interface UseBordaResponsiveReturns {
975
+ /** Set up matchMedia listeners and apply the initial breakpoint. */
976
+ apply: () => void;
977
+ /** Remove all listeners and clear responsive overrides. */
978
+ destroy: () => void;
979
+ /** Reactive responsive API. */
980
+ api: BordaResponsiveApi;
981
+ }
982
+ /** Responsive config — object of breakpoints mapped to partial overrides. */
983
+ type BordaResponsiveConfig = Record<number, Partial<BordaOverrides>>;
984
+
985
+ /**
986
+ * Manages responsive breakpoint overrides for the borda widget.
987
+ *
988
+ * Listens to viewport width changes via `matchMedia` and applies
989
+ * the matching breakpoint's component overrides as a named layer
990
+ * in the overrides system (below preview priority).
991
+ *
992
+ * @param config - The reactive config store.
993
+ * @param configOverrides - The config overrides manager.
994
+ * @returns Methods to apply/destroy and a reactive API with activeBreakpoint.
995
+ */
996
+ declare function useBordaResponsive(config: UseBordaConfigReturns, configOverrides: UseBordaOverridesReturns): UseBordaResponsiveReturns;
997
+
998
+ /** Built-in scroll easing presets. */
999
+ declare enum BordaScrollEasingName {
1000
+ LINEAR = "linear",
1001
+ EASE = "ease",
1002
+ EASE_IN = "ease-in",
1003
+ EASE_OUT = "ease-out",
1004
+ EASE_IN_OUT = "ease-in-out"
1005
+ }
1006
+
1007
+ /** Easing function signature: maps `progress` in [0, 1] to the eased value. */
1008
+ type BordaScrollEasingFn = (progress: number) => number;
1009
+ /** Easing identifier — a built-in {@link BordaScrollEasingName} or a custom {@link BordaScrollEasingFn}. */
1010
+ type BordaScrollEasing = BordaScrollEasingName | BordaScrollEasingFn;
1011
+
1012
+ /** Pixel offsets applied to the resolved scroll destination. */
1013
+ interface BordaScrollOffset {
1014
+ x: number;
1015
+ y: number;
1016
+ }
1017
+ /** Config for the scroll feature (smooth-follow the active step target). */
1018
+ interface BordaScrollConfig {
1019
+ /** Vertical alignment of the target after scroll. */
1020
+ block: ScrollLogicalPosition;
1021
+ /** Horizontal alignment of the target after scroll. */
1022
+ inline: ScrollLogicalPosition;
1023
+ /** Animation duration in ms. Use `0` for an instant jump. */
1024
+ duration: number;
1025
+ /** Easing function or built-in name. */
1026
+ easing: BordaScrollEasing;
1027
+ /** Pixel offsets applied on top of the alignment-resolved coordinates. Unspecified axes default to `0`. */
1028
+ offset: Partial<BordaScrollOffset>;
1029
+ /** Block manual page scroll while the tour is active so the spotlight stays put. Defaults to `true`; set `false` to allow scrolling. */
1030
+ isLocked: boolean;
1031
+ }
1032
+ /** Public API for controlling scroll behavior at runtime. */
1033
+ interface BordaScrollApi {
1034
+ /** Whether a scroll-to-target animation is currently in progress. */
1035
+ isScrolling: boolean;
1036
+ /** Whether manual page scroll is currently blocked. */
1037
+ isLocked: boolean;
1038
+ /** Scroll to bring an element into view; resolves once the animation finishes. */
1039
+ scrollTo: (element: HTMLElement | null) => Promise<void>;
1040
+ }
1041
+ /** Return value of {@link useBordaScroll}. */
1042
+ interface UseBordaScrollReturns {
1043
+ apply: () => void;
1044
+ destroy: () => void;
1045
+ api: BordaScrollApi;
1046
+ }
1047
+ /** Scroll animation handle. */
1048
+ interface BordaActiveScrollAnimation {
1049
+ cancel: () => void;
1050
+ }
1051
+
1052
+ /**
1053
+ * Manages the scroll feature that smoothly follows the active tour step.
1054
+ *
1055
+ * Uses a custom rAF animation so `duration`, `easing` and `offset` are fully
1056
+ * configurable. Setting `scroll: false` makes `scrollTo` a no-op. Disabling
1057
+ * animations globally (`animation: false` or `animation.isEnabled: false`)
1058
+ * keeps the scroll itself but turns it into an instant jump.
1059
+ *
1060
+ * @param config - The reactive config store.
1061
+ * @returns Methods to apply initial state, and a reactive scroll API.
1062
+ */
1063
+ declare function useBordaScroll(config: UseBordaConfigReturns): UseBordaScrollReturns;
1064
+
1065
+ /** Config for the skip ("don't show again") feature. */
1066
+ interface BordaSkipConfig {
1067
+ storageKey: string;
1068
+ }
1069
+ /** Public API for controlling the skip feature at runtime. */
1070
+ interface BordaSkipApi {
1071
+ /** Whether the skip flag is currently set. */
1072
+ isSkipped: boolean;
1073
+ /** Effective storage key (from config or the default). */
1074
+ storageKey: string;
1075
+ /** Sets the skip flag and persists it. No-op when `skip` is disabled in config. */
1076
+ set: (value: boolean) => void;
1077
+ /** Clears the persisted flag. Works even when `skip` is disabled in config. */
1078
+ clear: () => void;
1079
+ }
1080
+ /** Return value of {@link useBordaSkip}. */
1081
+ interface UseBordaSkipReturns {
1082
+ apply: () => void;
1083
+ api: BordaSkipApi;
1084
+ }
1085
+
1086
+ /**
1087
+ * Manages the "don't show again" skip feature.
1088
+ *
1089
+ * Reads and writes the skip flag to localStorage under a configurable key.
1090
+ * Enabled by default — pass `skip: false` in the config to disable entirely.
1091
+ *
1092
+ * @param config - The reactive config store.
1093
+ * @param eventEmitter - The shared event bus for emitting skip events.
1094
+ * @returns Methods to apply initial state, and a reactive skip API.
1095
+ */
1096
+ declare function useBordaSkip(config: UseBordaConfigReturns, eventEmitter: BordaEventEmitter): UseBordaSkipReturns;
1097
+
1098
+ /** Return value of {@link useBordaVisibility}. */
1099
+ interface UseBordaVisibilityReturns {
1100
+ /** Apply initial visibility state from config defaults. */
1101
+ apply: () => void;
1102
+ /** Reactive public API for controlling widget visibility. */
1103
+ api: BordaVisibilityApi;
1104
+ }
1105
+ /** Public API for controlling widget visibility at runtime. */
1106
+ interface BordaVisibilityApi {
1107
+ /** Whether the widget is currently hidden. */
1108
+ isHidden: boolean;
1109
+ /** Show the widget (set `isHidden` to `false`). */
1110
+ show: () => void;
1111
+ /** Hide the widget (set `isHidden` to `true`). */
1112
+ hide: () => void;
1113
+ }
1114
+ /** Visibility feature configuration options. */
1115
+ interface BordaVisibilityConfig {
1116
+ /** Start the widget in a hidden state. */
1117
+ isHidden: boolean;
1118
+ /** Enable CSS animations for show/hide transitions. */
1119
+ isAnimated: boolean;
1120
+ }
1121
+
1122
+ /**
1123
+ * Manages the show/hide visibility feature for the borda widget.
1124
+ *
1125
+ * Reads initial visibility settings from config and provides
1126
+ * `show`/`hide` methods to toggle the widget at runtime.
1127
+ *
1128
+ * @param config - The reactive config store.
1129
+ * @param eventEmitter - The shared event bus for emitting visibility events.
1130
+ * @returns Methods to apply initial state, and a reactive visibility API.
1131
+ */
1132
+ declare function useBordaVisibility(config: UseBordaConfigReturns, eventEmitter: BordaEventEmitter): UseBordaVisibilityReturns;
1133
+
1134
+ /** Data-attribute matcher for {@link BordaStepTargetQuery.data}. */
1135
+ interface BordaStepTargetQueryData {
1136
+ name: string;
1137
+ value: string;
1138
+ }
1139
+ /** Structured query for resolving a step target element for {@link BordaStepTarget}. */
1140
+ interface BordaStepTargetQuery {
1141
+ id: string;
1142
+ class: string;
1143
+ data: Partial<BordaStepTargetQueryData> & Pick<BordaStepTargetQueryData, 'name'>;
1144
+ }
1145
+ /** Accepted shapes for {@link BordaStep.target}. */
1146
+ type BordaStepTarget = string | HTMLElement | Partial<BordaStepTargetQuery>;
1147
+ /** Structured image for {@link BordaStep.image}, carrying its own alt text. */
1148
+ interface BordaStepImage {
1149
+ src: string;
1150
+ alt?: string;
1151
+ }
1152
+ /** Accepted shapes for {@link BordaStep.image}. A bare string sets the source with empty alt. */
1153
+ type BordaStepImageSource = string | BordaStepImage;
1154
+ /** A single step in the onboarding tour. */
1155
+ interface BordaStep {
1156
+ /** Element to spotlight. Accepts a CSS selector string, an HTMLElement, or a structured query. */
1157
+ target: BordaStepTarget;
1158
+ /** Tooltip heading text. */
1159
+ title: string;
1160
+ /** Tooltip body text. */
1161
+ description: string;
1162
+ /** Image shown above the tooltip heading. A string sets the source (empty alt); an object carries its own alt. */
1163
+ image?: BordaStepImageSource;
1164
+ /** Preferred tooltip placement relative to the target element. */
1165
+ placement: ComponentPlacement;
1166
+ /**
1167
+ * Called before this step's target is highlighted, after any async `prepareElement` resolves.
1168
+ * Fires before the reactive step index changes.
1169
+ */
1170
+ onBeforeHighlighted?: () => void;
1171
+ /** Called after this step's target is highlighted (step index has been updated). */
1172
+ onHighlighted?: () => void;
1173
+ /** Called when navigating away from this step, before the next step is prepared. */
1174
+ onDeselected?: () => void;
1175
+ /** Step-level next handler; called alongside the tour-level `onNext`. */
1176
+ onNext?: () => void;
1177
+ /** Step-level previous handler; called alongside the tour-level `onPrev`. */
1178
+ onPrev?: () => void;
1179
+ /**
1180
+ * Async preparation hook called before entering this step.
1181
+ * Use it to mount dynamic content, expand sections, or fetch data the tooltip depends on.
1182
+ * Navigation waits for the returned Promise to settle before proceeding.
1183
+ */
1184
+ prepareElement?: () => Promise<void> | void;
1185
+ }
1186
+
1187
+ /** Visual variant of the tour progress indicator (dots, text, or line). */
1188
+ declare enum BordaTourProgressVariant {
1189
+ DOTS = "dots",
1190
+ TEXT = "text",
1191
+ LINE = "line"
1192
+ }
1193
+
1194
+ /** Custom CSS class overrides for the progress widget. */
1195
+ interface BordaTourProgressComponentClasses {
1196
+ root: ComponentClasses;
1197
+ item: ComponentClasses;
1198
+ }
1199
+ /** Custom inline style overrides for the progress widget. */
1200
+ interface BordaTourProgressComponentStyles {
1201
+ root: ComponentStyles;
1202
+ item: ComponentStyles;
1203
+ }
1204
+ /** Custom HTML override for the progress widget. */
1205
+ interface BordaTourProgressComponentHtml {
1206
+ progress: string;
1207
+ }
1208
+ /** Props for the BordaTourProgress widget. */
1209
+ interface BordaTourProgressProps {
1210
+ id: string;
1211
+ currentStep: number;
1212
+ totalSteps: number;
1213
+ variant: BordaTourProgressVariant;
1214
+ /** ARIA attributes for accessibility. */
1215
+ aria: Partial<ComponentAriaProps>;
1216
+ customClasses: Partial<BordaTourProgressComponentClasses>;
1217
+ customStyles: Partial<BordaTourProgressComponentStyles>;
1218
+ customHtml: Partial<BordaTourProgressComponentHtml>;
1219
+ }
1220
+ /** DOM element references exposed via `getElements()`. */
1221
+ interface BordaTourProgressElements {
1222
+ root: HTMLDivElement | null;
1223
+ }
1224
+ /** Public ref exposed by the BordaTourProgress widget via `bind:this`. */
1225
+ interface BordaTourProgressRef {
1226
+ getElements: () => BordaTourProgressElements;
1227
+ }
1228
+
1229
+ /** Props for the BordaTour step composition component. */
1230
+ interface BordaTourProps {
1231
+ step: BordaStep;
1232
+ currentTarget: HTMLElement | null;
1233
+ currentStep: number;
1234
+ totalSteps: number;
1235
+ size: ComponentSize;
1236
+ shape: ComponentShape;
1237
+ isSkipChecked: boolean;
1238
+ /** Hides the tooltip (fade transition) while scrolling/transitioning between steps. */
1239
+ isHidden: boolean;
1240
+ /** Enables position gliding of the tooltip between steps (glide transition). */
1241
+ hasGlide: boolean;
1242
+ tourTooltipAnimation: BordaTourTooltipAnimation | false;
1243
+ tourTooltipProps: Partial<BordaTourTooltipProps>;
1244
+ tourImageProps: Partial<BordaTourImageProps> | false;
1245
+ tourButtonsProps: Partial<BordaTourButtonsProps> | false;
1246
+ tourProgressProps: Partial<BordaTourProgressProps> | false;
1247
+ tourSkipProps: Partial<BordaTourSkipProps> | false;
1248
+ closeButtonProps: Partial<BordaCloseButtonProps> | false;
1249
+ }
1250
+ /** Event handlers for the BordaTour component. */
1251
+ interface BordaTourEvents {
1252
+ onPrev: () => void;
1253
+ onNext: () => void;
1254
+ onFinish: () => void;
1255
+ onSkip: () => void;
1256
+ onSkipChange: (checked: boolean) => void;
1257
+ }
1258
+ /** Registry of child component refs exposed by BordaTour. */
1259
+ interface BordaTourComponents {
1260
+ tourTooltip: BordaTourTooltipRef | null;
1261
+ tourImage: BordaTourImageRef | null;
1262
+ tourButtons: BordaTourButtonsRef | null;
1263
+ tourSkip: BordaTourSkipRef | null;
1264
+ closeButton: BordaCloseButtonRef | null;
1265
+ }
1266
+ /** Public ref exposed by the BordaTour component via `bind:this`. */
1267
+ interface BordaTourRef {
1268
+ getComponents: () => BordaTourComponents;
1269
+ }
1270
+ /** Config for the tour feature. */
1271
+ interface BordaTourConfig {
1272
+ startStep: number;
1273
+ /** Called once when the tour initialises (on mount). */
1274
+ onStart: () => void;
1275
+ /** Called when advancing to the next step (not fired on the last step → finish). */
1276
+ onNext: () => void;
1277
+ /** Called when navigating to the previous step. */
1278
+ onPrev: () => void;
1279
+ /** Called when the tour finishes, before the unmount animation. */
1280
+ onFinish: () => void;
1281
+ /** Called when the tour is dismissed before completion (close button, backdrop or Escape), before the unmount animation. */
1282
+ onClose: () => void;
1283
+ /**
1284
+ * Enable keyboard navigation: ArrowRight/ArrowLeft for next/prev, Escape to close.
1285
+ * Defaults to `true`. Set to `false` to disable all keyboard handling.
1286
+ */
1287
+ hasKeyboardControl: boolean;
1288
+ }
1289
+
1290
+ /**
1291
+ * A step definition with optional per-step component overrides.
1292
+ * Override fields shadow the global config while this step is active.
1293
+ * Pass `false` to disable a component for this step only.
1294
+ */
1295
+ interface BordaStepConfig extends BordaStep {
1296
+ /** Spotlight overlay props for this step. Pass `false` to disable. */
1297
+ tourOverlay?: Partial<BordaTourOverlayProps> | false;
1298
+ /** Tooltip props for this step. Pass `false` to disable. */
1299
+ tourTooltip?: Partial<BordaTourTooltipProps> | false;
1300
+ /** Tooltip image props for this step (classes/styles); source and alt come from `image`. Pass `false` to disable. */
1301
+ tourImage?: Partial<BordaTourImageProps> | false;
1302
+ /** Buttons props for this step. Pass `false` to disable. */
1303
+ tourButtons?: Partial<BordaTourButtonsProps> | false;
1304
+ /** Progress indicator props for this step. Pass `false` to disable. */
1305
+ tourProgress?: Partial<BordaTourProgressProps> | false;
1306
+ /** Skip checkbox props for this step. Pass `false` to disable. */
1307
+ tourSkip?: Partial<BordaTourSkipProps> | false;
1308
+ /** Close button props for this step. Pass `false` to disable. */
1309
+ closeButton?: Partial<BordaCloseButtonProps> | false;
1310
+ }
1311
+ /** Per-component property overrides. Pass `false` to disable a component entirely. */
1312
+ interface BordaOverrides {
1313
+ /** Global size propagated to sized components (e.g. close button, tour buttons). */
1314
+ size: ComponentSize;
1315
+ /** Global shape propagated to shaped components (e.g. close button). */
1316
+ shape: ComponentShape;
1317
+ /** Steps for the onboarding tour. */
1318
+ steps: BordaStepConfig[];
1319
+ /** Outer container props. */
1320
+ container: Partial<BordaContainerProps>;
1321
+ /** Spotlight overlay props. Pass `false` to disable. */
1322
+ tourOverlay: Partial<BordaTourOverlayProps> | false;
1323
+ /** Tooltip props. Pass `false` to disable. */
1324
+ tourTooltip: Partial<BordaTourTooltipProps> | false;
1325
+ /** Tooltip image props (classes/styles); source and alt come from each step's `image`. Pass `false` to disable. */
1326
+ tourImage: Partial<BordaTourImageProps> | false;
1327
+ /** Buttons props. Pass `false` to disable. */
1328
+ tourButtons: Partial<BordaTourButtonsProps> | false;
1329
+ /** Progress indicator props. Pass `false` to disable. */
1330
+ tourProgress: Partial<BordaTourProgressProps> | false;
1331
+ /** "Don't show again" skip checkbox props. Pass `false` to disable. */
1332
+ tourSkip: Partial<BordaTourSkipProps> | false;
1333
+ /** Close button props. Pass `false` to disable. */
1334
+ closeButton: Partial<BordaCloseButtonProps> | false;
1335
+ }
1336
+ /** Component override config. All overrides are optional except `steps` which is required. */
1337
+ type BordaConfigOverrides = Partial<BordaOverrides> & Pick<BordaOverrides, 'steps'>;
1338
+ /** Feature-specific sections of the widget config. */
1339
+ interface BordaFeatures {
1340
+ /** Tour buttons state (startStep, etc.). */
1341
+ tour: Partial<BordaTourConfig>;
1342
+ /** Visibility transitions and initial hidden state. */
1343
+ visibility: Partial<BordaVisibilityConfig>;
1344
+ /** Responsive breakpoint overrides. */
1345
+ responsive: BordaResponsiveConfig;
1346
+ /** Smooth-scroll the page to the active step target. Pass `false` to disable. */
1347
+ scroll: Partial<BordaScrollConfig> | false;
1348
+ /** Skip feature ("don't show again"). Pass `false` to disable. */
1349
+ skip: Partial<BordaSkipConfig> | false;
1350
+ /** Animations and transitions for tooltip/overlay. Pass `false` to disable. */
1351
+ animation: Partial<BordaAnimationConfig> | false;
1352
+ }
1353
+ /** Optional feature config. All feature sections are optional at the top level. */
1354
+ type BordaConfigFeatures = Partial<BordaFeatures>;
1355
+ /** Root configuration object accepted by `useBorda().mount()`. `steps` is required. */
1356
+ type BordaConfig = BordaConfigOverrides & BordaConfigFeatures;
1357
+ /**
1358
+ * Configuration accepted by `useBorda().highlight()`.
1359
+ * Identical to {@link BordaConfig} but without `steps` — the single step is passed separately.
1360
+ */
1361
+ type BordaHighlightConfig = Omit<BordaConfig, 'steps'>;
1362
+ /** Reactive config store returned by {@link useBordaConfig}. */
1363
+ interface UseBordaConfigReturns {
1364
+ /** Current resolved config snapshot. */
1365
+ current: BordaConfig;
1366
+ /** Returns the current config object. */
1367
+ getConfig: () => BordaConfig;
1368
+ /** Replaces the entire config with a new value. */
1369
+ setConfig: (value: BordaConfig) => void;
1370
+ /** Deeply merges a partial config into the current one. */
1371
+ mergeConfig: (partial: Partial<BordaConfig>) => void;
1372
+ }
1373
+
1374
+ /** Mount target — a regular DOM element or a Shadow DOM root. */
1375
+ type BordaTarget = HTMLElement | ShadowRoot;
1376
+ /** Handle returned after mounting; provides runtime access to the widget. */
1377
+ interface BordaInstance {
1378
+ /** Public widget API. */
1379
+ api: BordaApi;
1380
+ /** Reference to the mounted Svelte component. */
1381
+ component: BordaRef;
1382
+ /** Reactive config store for reading and updating the widget config. */
1383
+ config: UseBordaConfigReturns;
1384
+ /** Responsive feature API (activeBreakpoint). */
1385
+ responsive: BordaResponsiveApi;
1386
+ /** Scroll feature API (scrollTo). */
1387
+ scroll: BordaScrollApi;
1388
+ /** Animation feature API (resolved tooltip/overlay timings). */
1389
+ animation: BordaAnimationApi;
1390
+ /** Skip feature API ("don't show again" state). */
1391
+ skip: BordaSkipApi;
1392
+ /** Visibility feature API (show, hide, isHidden). */
1393
+ visibility: BordaVisibilityApi;
1394
+ }
1395
+ /** Registry of all component refs within a mounted borda widget. Nullable refs correspond to optional components. */
1396
+ interface BordaComponents {
1397
+ container: BordaContainerRef;
1398
+ tourOverlay: BordaTourOverlayRef | null;
1399
+ tourTooltip: BordaTourTooltipRef | null;
1400
+ tourImage: BordaTourImageRef | null;
1401
+ tourButtons: BordaTourButtonsRef | null;
1402
+ tourSkip: BordaTourSkipRef | null;
1403
+ closeButton: BordaCloseButtonRef | null;
1404
+ }
1405
+ /** Top-level API returned by {@link useBorda}. */
1406
+ interface UseBordaReturns {
1407
+ /** Library name. */
1408
+ NAME: string;
1409
+ /** Library version. */
1410
+ VERSION: string;
1411
+ /** Mount the widget into a target element with the given config. */
1412
+ mount: (config: BordaConfig, target?: BordaTarget) => Promise<BordaInstance>;
1413
+ /** Unmount a previously mounted widget instance. */
1414
+ unmount: (instance: BordaInstance) => Promise<void>;
1415
+ /**
1416
+ * Spotlights a single element. Accepts the same data as a tour step plus
1417
+ * optional top-level config, and mounts a one-step tour.
1418
+ */
1419
+ highlight: (step: BordaStepConfig, config?: BordaHighlightConfig, target?: BordaTarget) => Promise<BordaInstance>;
1420
+ }
1421
+ /** Internal props passed to the root Borda Svelte component. */
1422
+ interface BordaProps {
1423
+ /** Resolved widget config (with overrides applied). */
1424
+ config: BordaConfig;
1425
+ /** Tour controller, created at the entrypoint level. */
1426
+ controller: BordaControllerApi;
1427
+ /** Scroll feature API, created at the entrypoint level. */
1428
+ scroll: BordaScrollApi;
1429
+ /** Animation feature API, created at the entrypoint level. */
1430
+ animation: BordaAnimationApi;
1431
+ /** Skip feature API, created at the entrypoint level. */
1432
+ skip: BordaSkipApi;
1433
+ /** Shared event bus created by the factory. */
1434
+ eventEmitter: BordaEventEmitter;
1435
+ /** Callback invoked when the component is mounted. */
1436
+ mount: () => void;
1437
+ /** Callback invoked when the component requests unmount. */
1438
+ unmount: () => void;
1439
+ /** Callback invoked when the component requests an early dismissal of the tour. */
1440
+ close: () => void;
1441
+ }
1442
+ /** Top-level API surface exposed by a mounted borda widget. */
1443
+ interface BordaApi {
1444
+ /** Tour controller (currentStep, next, prev, changeStep, etc.). */
1445
+ controller: BordaControllerApi;
1446
+ /** References to all child component instances. */
1447
+ components: BordaComponents;
1448
+ /** Pub/sub event bus for widget events. */
1449
+ events: BordaEventEmitter;
1450
+ }
1451
+ /** Reference to the root Borda Svelte component. */
1452
+ interface BordaRef {
1453
+ /** Top-level widget API. */
1454
+ api: BordaApi;
1455
+ }
1456
+
1457
+ declare function useBorda(): UseBordaReturns;
1458
+
1459
+ /**
1460
+ * Creates a reactive config store for the borda widget.
1461
+ *
1462
+ * Provides getter, setter, and deep-merge methods for managing
1463
+ * the widget configuration at runtime.
1464
+ *
1465
+ * @param initial - The initial widget configuration.
1466
+ * @returns A reactive config store with `current`, `getConfig`, `setConfig`, and `mergeConfig`.
1467
+ */
1468
+ declare function useBordaConfig(initial: BordaConfig): UseBordaConfigReturns;
1469
+
1470
+ /** The HTML tag name used for the borda custom element. */
1471
+ type BordaElementTag = 'borda-tour-widget';
1472
+
1473
+ declare const TAG_NAME: BordaElementTag;
1474
+
1475
+ /**
1476
+ * SSR-safe `HTMLElement` constructor.
1477
+ *
1478
+ * On the server `HTMLElement` is undefined, which would throw at module
1479
+ * evaluation time when used as a base class. Falling back to an empty stub
1480
+ * lets the module be imported in SSR environments (Nuxt, Next, etc.) without
1481
+ * forcing consumers to client-only the import itself.
1482
+ */
1483
+ declare const SAFE_HTML_ELEMENT: typeof HTMLElement;
1484
+
1485
+ /**
1486
+ * Returns the custom element constructor if it has already been registered.
1487
+ *
1488
+ * @returns The registered `CustomElementConstructor`, or `undefined` if not yet defined.
1489
+ */
1490
+ declare function getBordaElement(): CustomElementConstructor | undefined;
1491
+ /**
1492
+ * Registers the `<borda-tour-widget>` custom element in the browser.
1493
+ *
1494
+ * Safe to call multiple times — skips registration if the element is already defined.
1495
+ */
1496
+ declare function defineBordaElement(): void;
1497
+
1498
+ /** Svelte context shared across all borda child components. */
1499
+ interface BordaContext {
1500
+ /** Widget-wide event bus. */
1501
+ eventEmitter: BordaEventEmitter;
1502
+ /** Trigger the component mount lifecycle. */
1503
+ mount: () => void;
1504
+ /** Trigger the component unmount lifecycle (raw teardown). */
1505
+ unmount: () => void;
1506
+ /** Dismiss the tour before completion — fires the close lifecycle, then unmounts. */
1507
+ close: () => void;
1508
+ }
1509
+
1510
+ /**
1511
+ * Svelte context pair for sharing {@link BordaContext} across the component tree.
1512
+ *
1513
+ * - `getBordaContext` — retrieve the context in a child component.
1514
+ * - `setBordaContext` — provide the context in a parent component.
1515
+ */
1516
+ declare const getBordaContext: () => BordaContext;
1517
+ declare const setBordaContext: (context: BordaContext) => BordaContext;
1518
+
1519
+ /** Custom CSS class overrides for the linear progress bar. */
1520
+ interface BordaProgressLineComponentClasses {
1521
+ root: ComponentClasses;
1522
+ track: ComponentClasses;
1523
+ progress: ComponentClasses;
1524
+ }
1525
+ /** Custom inline style overrides for the linear progress bar. */
1526
+ interface BordaProgressLineComponentStyles {
1527
+ root: ComponentStyles;
1528
+ track: ComponentStyles;
1529
+ progress: ComponentStyles;
1530
+ }
1531
+ /** Props for the linear progress bar. */
1532
+ interface BordaProgressLineProps {
1533
+ id: string;
1534
+ current: number;
1535
+ total: number;
1536
+ aria: Partial<ComponentAriaProps>;
1537
+ customClasses: Partial<BordaProgressLineComponentClasses>;
1538
+ customStyles: Partial<BordaProgressLineComponentStyles>;
1539
+ }
1540
+ /** Custom CSS class overrides for dots and text progress variants. */
1541
+ interface BordaProgressItemComponentClasses {
1542
+ root: ComponentClasses;
1543
+ item: ComponentClasses;
1544
+ }
1545
+ /** Custom inline style overrides for dots and text progress variants. */
1546
+ interface BordaProgressItemComponentStyles {
1547
+ root: ComponentStyles;
1548
+ item: ComponentStyles;
1549
+ }
1550
+ /** Props for discrete progress indicators (dots, text). */
1551
+ interface BordaProgressItemProps {
1552
+ id: string;
1553
+ current: number;
1554
+ total: number;
1555
+ aria: Partial<ComponentAriaProps>;
1556
+ customClasses: Partial<BordaProgressItemComponentClasses>;
1557
+ customStyles: Partial<BordaProgressItemComponentStyles>;
1558
+ }
1559
+
1560
+ export { AnimationEffect, BordaButtonShape, BordaButtonType, BordaButtonVariant, BordaEvent, BordaScrollAppearance, BordaTooltipArrowSide, BordaTooltipTransition, BordaTourImageVariant, BordaTourProgressVariant, ComponentAriaHaspopup, ComponentAriaPressed, ComponentPlacement, ComponentShape, ComponentSize, OverrideLayer, SAFE_HTML_ELEMENT, TAG_NAME, bordaTourFinishButtonDefault, bordaTourNextButtonDefault, bordaTourPrevButtonDefault, bordaTourSkipButtonDefault, defineBordaElement, getBordaContext, getBordaElement, setBordaContext, useBorda, useBordaAnimation, useBordaConfig, useBordaController, useBordaHighlight, useBordaKeyboard, useBordaOverrides, useBordaResponsive, useBordaScroll, useBordaSkip, useBordaVisibility, useEventEmitter, useOverlay, useTooltipArrow, useTooltipPosition };
1561
+ export type { BordaActiveScrollAnimation, BordaAnimationApi, BordaAnimationConfig, BordaApi, BordaButtonComponentClasses, BordaButtonComponentStyles, BordaButtonElements, BordaButtonEvents, BordaButtonProps, BordaButtonSnippets, BordaCloseButtonComponentClasses, BordaCloseButtonComponentHtml, BordaCloseButtonComponentStyles, BordaCloseButtonElements, BordaCloseButtonProps, BordaCloseButtonRef, BordaComponents, BordaConfig, BordaConfigFeatures, BordaConfigOverrides, BordaContainerCustomClasses, BordaContainerCustomStyles, BordaContainerElements, BordaContainerProps, BordaContainerRef, BordaContainerSnippets, BordaContext, BordaControllerApi, BordaElementTag, BordaEventEmitter, BordaEventHandler, BordaEventMap, BordaFeatures, BordaHighlightConfig, BordaIconCustomClasses, BordaIconCustomStyles, BordaIconElements, BordaIconProps, BordaIconSnippets, BordaImageCustomClasses, BordaImageCustomHtml, BordaImageCustomStyles, BordaImageElements, BordaImageProps, BordaImageRef, BordaInstance, BordaOverlayAnimation, BordaOverrides, BordaProgressItemComponentClasses, BordaProgressItemComponentStyles, BordaProgressItemProps, BordaProgressLineComponentClasses, BordaProgressLineComponentStyles, BordaProgressLineProps, BordaProps, BordaRef, BordaResponsiveApi, BordaResponsiveConfig, BordaScrollApi, BordaScrollConfig, BordaScrollOffset, BordaSkipApi, BordaSkipConfig, BordaStepConfig, BordaTarget, BordaTooltipAnimation, BordaTooltipOverflow, BordaTooltipPlacementFit, BordaTooltipPosition, BordaTooltipRect, BordaTooltipSize, BordaTooltipViewportBounds, BordaTourButtonConfig, BordaTourButtonsComponentClasses, BordaTourButtonsComponentHtml, BordaTourButtonsComponentStyles, BordaTourButtonsElements, BordaTourButtonsEvents, BordaTourButtonsProps, BordaTourButtonsRef, BordaTourButtonsSnippets, BordaTourComponents, BordaTourConfig, BordaTourEvents, BordaTourImageElements, BordaTourImageProps, BordaTourImageRef, BordaTourOverlayComponentClasses, BordaTourOverlayComponentStyles, BordaTourOverlayElements, BordaTourOverlayEvents, BordaTourOverlayProps, BordaTourOverlayRef, BordaTourProgressComponentClasses, BordaTourProgressComponentHtml, BordaTourProgressComponentStyles, BordaTourProgressElements, BordaTourProgressProps, BordaTourProgressRef, BordaTourProps, BordaTourRef, BordaTourResolvedButton, BordaTourSkipComponentClasses, BordaTourSkipComponentHtml, BordaTourSkipComponentStyles, BordaTourSkipElements, BordaTourSkipEvents, BordaTourSkipProps, BordaTourSkipRef, BordaTourTooltipAnimation, BordaTourTooltipArrowProps, BordaTourTooltipAutoPlacement, BordaTourTooltipComponentClasses, BordaTourTooltipComponentHtml, BordaTourTooltipComponentStyles, BordaTourTooltipElements, BordaTourTooltipPositionProps, BordaTourTooltipProps, BordaTourTooltipRef, BordaTourTooltipSnippets, BordaVisibilityApi, BordaVisibilityConfig, ComponentAriaProps, ComponentClasses, ComponentRef, ComponentSnippet, ComponentSnippetReturn, ComponentStyles, UseBordaAnimationReturns, UseBordaConfigReturns, UseBordaControllerReturns, UseBordaHighlightReturns, UseBordaKeyboardReturns, UseBordaOverridesReturns, UseBordaResponsiveReturns, UseBordaReturns, UseBordaScrollReturns, UseBordaSkipReturns, UseBordaVisibilityReturns, UseOverlayProps, UseOverlayReturns, UseTooltipArrowProps, UseTooltipArrowReturns, UseTooltipLayoutProps, UseTooltipLayoutReturns, UseTooltipPositionProps, UseTooltipPositionReturns };