@fanfare-io/fanfare-sdk-solid 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (96) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +53 -0
  3. package/dist/components/auth/access-code-input.d.ts +17 -0
  4. package/dist/components/auth/auth-form.d.ts +34 -0
  5. package/dist/components/auth/auth-input.d.ts +19 -0
  6. package/dist/components/auth/email-input.d.ts +14 -0
  7. package/dist/components/auth/index.d.ts +6 -0
  8. package/dist/components/auth/otp-input.d.ts +21 -0
  9. package/dist/components/auth/phone-input.d.ts +14 -0
  10. package/dist/components/compositions/access-code-form.d.ts +25 -0
  11. package/dist/components/compositions/challenge-gate.d.ts +24 -0
  12. package/dist/components/compositions/ended-module.d.ts +13 -0
  13. package/dist/components/compositions/error-view.d.ts +21 -0
  14. package/dist/components/compositions/granted-panel.d.ts +14 -0
  15. package/dist/components/compositions/index.d.ts +14 -0
  16. package/dist/components/compositions/journey-gate.d.ts +27 -0
  17. package/dist/components/compositions/outcome-panel.d.ts +12 -0
  18. package/dist/components/internal/appointment-day-tabs.d.ts +18 -0
  19. package/dist/components/internal/appointment-module.d.ts +27 -0
  20. package/dist/components/internal/appointment-slot-grid.d.ts +9 -0
  21. package/dist/components/internal/appointment-slot-item.d.ts +9 -0
  22. package/dist/components/internal/auction-module.d.ts +32 -0
  23. package/dist/components/internal/draw-module.d.ts +27 -0
  24. package/dist/components/internal/index.d.ts +15 -0
  25. package/dist/components/internal/loading-view.d.ts +9 -0
  26. package/dist/components/internal/queue-module.d.ts +28 -0
  27. package/dist/components/internal/start-view.d.ts +19 -0
  28. package/dist/components/internal/timed-release-module.d.ts +28 -0
  29. package/dist/components/internal/upcoming-module.d.ts +15 -0
  30. package/dist/components/internal/waitlist-view.d.ts +14 -0
  31. package/dist/components/module/alert-panel.d.ts +17 -0
  32. package/dist/components/module/index.d.ts +5 -0
  33. package/dist/components/module/info-panel.d.ts +8 -0
  34. package/dist/components/module/outcome-reason.d.ts +27 -0
  35. package/dist/components/module/panel-heading.d.ts +13 -0
  36. package/dist/components/module/panel-layout.d.ts +21 -0
  37. package/dist/components/primitives/badge.d.ts +17 -0
  38. package/dist/components/primitives/button.d.ts +16 -0
  39. package/dist/components/primitives/card.d.ts +49 -0
  40. package/dist/components/primitives/countdown.d.ts +16 -0
  41. package/dist/components/primitives/fade-presence.d.ts +11 -0
  42. package/dist/components/primitives/fanfare-logo.d.ts +8 -0
  43. package/dist/components/primitives/index.d.ts +11 -0
  44. package/dist/components/primitives/input.d.ts +18 -0
  45. package/dist/components/primitives/progress.d.ts +11 -0
  46. package/dist/components/primitives/skeleton.d.ts +8 -0
  47. package/dist/components/primitives/spinner.d.ts +14 -0
  48. package/dist/components/primitives/transition.d.ts +13 -0
  49. package/dist/components/provider.d.ts +27 -0
  50. package/dist/components/web/fanfare-web-component-provider.d.ts +20 -0
  51. package/dist/components/web/web-component-styles.d.ts +4 -0
  52. package/dist/components/widgets/auction/auction-actions.d.ts +21 -0
  53. package/dist/components/widgets/auction/auction-bid-display.d.ts +19 -0
  54. package/dist/components/widgets/auction/index.d.ts +7 -0
  55. package/dist/components/widgets/draw/draw-actions.d.ts +22 -0
  56. package/dist/components/widgets/draw/index.d.ts +6 -0
  57. package/dist/components/widgets/experience-widget.d.ts +127 -0
  58. package/dist/components/widgets/index.d.ts +11 -0
  59. package/dist/components/widgets/queue/index.d.ts +6 -0
  60. package/dist/components/widgets/queue/queue-actions.d.ts +20 -0
  61. package/dist/components/widgets/timed-release/index.d.ts +6 -0
  62. package/dist/components/widgets/timed-release/timed-release-actions.d.ts +21 -0
  63. package/dist/components/widgets/waitlist/index.d.ts +6 -0
  64. package/dist/components/widgets/waitlist/waitlist-actions.d.ts +22 -0
  65. package/dist/hooks/index.d.ts +12 -0
  66. package/dist/hooks/use-auth.d.ts +11 -0
  67. package/dist/hooks/use-experience-journey.d.ts +17 -0
  68. package/dist/hooks/use-journey-snapshot.d.ts +8 -0
  69. package/dist/hooks/use-nanostore.d.ts +7 -0
  70. package/dist/i18n/i18n-context.d.ts +19 -0
  71. package/dist/i18n/i18n-provider.d.ts +16 -0
  72. package/dist/i18n/index.d.ts +12 -0
  73. package/dist/index.d.ts +18 -0
  74. package/dist/index.js +6370 -0
  75. package/dist/internal-sdk.d.ts +2 -0
  76. package/dist/lib/animations.d.ts +31 -0
  77. package/dist/lib/appointment-format.d.ts +26 -0
  78. package/dist/lib/confetti.d.ts +3 -0
  79. package/dist/lib/currency.d.ts +9 -0
  80. package/dist/lib/phone-formatter-lite.d.ts +4 -0
  81. package/dist/lib/use-grant-celebration.d.ts +2 -0
  82. package/dist/lib/utils.d.ts +13 -0
  83. package/dist/register.d.ts +52 -0
  84. package/dist/styles/base.css +2301 -0
  85. package/dist/styles/index.d.ts +2 -0
  86. package/dist/styles/theme.css +82 -0
  87. package/dist/theme/index.d.ts +8 -0
  88. package/dist/theme/theme-context.d.ts +10 -0
  89. package/dist/theme/theme-provider.d.ts +15 -0
  90. package/dist/theme/theme-utils.d.ts +6 -0
  91. package/dist/theme/theme.types.d.ts +47 -0
  92. package/dist/theme/use-theme.d.ts +8 -0
  93. package/dist/utils/solid.d.ts +1 -0
  94. package/dist/utils/to-accessor.d.ts +3 -0
  95. package/docs/SLOTS.md +91 -0
  96. package/package.json +128 -0
@@ -0,0 +1,127 @@
1
+ import { BotMitigationState, RoutingChallenge } from '@fanfare-io/fanfare-sdk-core/challenges';
2
+ import { JourneyHandle, JourneySnapshot, JourneyView, SequenceView } from '@fanfare-io/fanfare-sdk-core/experiences';
3
+ import { BrandTheme } from '@fanfare-io/fanfare-sdk-core/theme';
4
+ import { JSX } from 'solid-js';
5
+ import { WidgetVariant } from '../../theme';
6
+ import { AuthInputMode } from '../auth/auth-input';
7
+ type ParticipationType = "queue" | "draw" | "auction" | "timed_release" | "appointment";
8
+ type EnterableSlotSequence = Extract<SequenceView, {
9
+ phase: "enterable";
10
+ mechanism: ParticipationType;
11
+ }>;
12
+ type ParticipatingSlotSequence = Extract<SequenceView, {
13
+ phase: "participating";
14
+ mechanism: ParticipationType;
15
+ }>;
16
+ type GrantedSlotSequence = Extract<SequenceView, {
17
+ phase: "granted";
18
+ }>;
19
+ export interface SlotProps {
20
+ snapshot: JourneySnapshot | null;
21
+ view: JourneyView | null;
22
+ error: string | null;
23
+ }
24
+ export interface StartSlotProps extends SlotProps {
25
+ onStart: () => void;
26
+ isStarting: boolean;
27
+ }
28
+ export interface AuthSlotProps extends SlotProps {
29
+ onSubmit: (credential: string, type: AuthInputMode) => Promise<void>;
30
+ onVerify: (otp: string) => Promise<void>;
31
+ onSkip?: () => void;
32
+ }
33
+ export interface AccessCodeSlotProps extends SlotProps {
34
+ onSubmit: (code: string) => Promise<void>;
35
+ onSkip?: () => void;
36
+ }
37
+ export interface UpcomingSlotProps extends SlotProps {
38
+ startsAt?: Date;
39
+ canEnter: boolean;
40
+ onEnter: () => void;
41
+ isEntering: boolean;
42
+ }
43
+ export interface WaitlistSlotProps extends SlotProps {
44
+ startsAt?: Date;
45
+ onLeave: () => void;
46
+ isLeaving: boolean;
47
+ }
48
+ export interface EnterableSlotProps extends SlotProps {
49
+ sequence: EnterableSlotSequence;
50
+ participationType: ParticipationType;
51
+ }
52
+ export interface ParticipatingSlotProps extends SlotProps {
53
+ sequence: ParticipatingSlotSequence;
54
+ participationType: ParticipationType;
55
+ position?: number;
56
+ }
57
+ export interface GrantedSlotProps extends SlotProps {
58
+ sequence: GrantedSlotSequence;
59
+ grant?: string;
60
+ expiresAt?: number;
61
+ }
62
+ export interface ExpiredSlotProps extends SlotProps {
63
+ reason: string;
64
+ endedAt?: Date;
65
+ }
66
+ export interface EndedSlotProps extends SlotProps {
67
+ reason: string;
68
+ endedAt?: Date;
69
+ }
70
+ export interface ErrorSlotProps extends SlotProps {
71
+ error: string;
72
+ onRetry: () => void;
73
+ }
74
+ export interface LoadingSlotProps extends SlotProps {
75
+ /** Stage-specific message (e.g. routing). `undefined` for generic loading — show just a spinner. */
76
+ message?: string;
77
+ }
78
+ export interface ChallengeSlotProps extends SlotProps {
79
+ challenge: RoutingChallenge | null;
80
+ botMitigation?: BotMitigationState;
81
+ onVerifyToken: (token: string) => Promise<void>;
82
+ onRetry: () => void;
83
+ }
84
+ export interface ExperienceWidgetSlots {
85
+ start?: (props: StartSlotProps) => JSX.Element;
86
+ loading?: (props: LoadingSlotProps) => JSX.Element;
87
+ auth?: (props: AuthSlotProps) => JSX.Element;
88
+ accessCode?: (props: AccessCodeSlotProps) => JSX.Element;
89
+ challenge?: (props: ChallengeSlotProps) => JSX.Element;
90
+ upcoming?: (props: UpcomingSlotProps) => JSX.Element;
91
+ waitlist?: (props: WaitlistSlotProps) => JSX.Element;
92
+ enterable?: (props: EnterableSlotProps) => JSX.Element;
93
+ participating?: (props: ParticipatingSlotProps) => JSX.Element;
94
+ granted?: (props: GrantedSlotProps) => JSX.Element;
95
+ expired?: (props: ExpiredSlotProps) => JSX.Element;
96
+ ended?: (props: EndedSlotProps) => JSX.Element;
97
+ error?: (props: ErrorSlotProps) => JSX.Element;
98
+ }
99
+ export interface ExperienceRenderProps {
100
+ journey: JourneyHandle | null;
101
+ view: JourneyView | null;
102
+ snapshot: JourneySnapshot | null;
103
+ error: string | null;
104
+ start: () => Promise<void>;
105
+ isStarting: boolean;
106
+ }
107
+ export interface ExperienceWidgetProps {
108
+ experienceId: string;
109
+ autoStart?: boolean;
110
+ accessCode?: string;
111
+ autoEnterWaitlist?: boolean;
112
+ theme?: BrandTheme;
113
+ variant?: WidgetVariant;
114
+ slots?: ExperienceWidgetSlots;
115
+ children?: (props: ExperienceRenderProps) => JSX.Element;
116
+ checkoutUrl?: string;
117
+ onJourneyChange?: (snapshot: JourneySnapshot) => void;
118
+ onGranted?: (grant: string) => void;
119
+ onError?: (error: Error) => void;
120
+ class?: string;
121
+ className?: string;
122
+ }
123
+ export declare function ExperienceWidget(props: ExperienceWidgetProps): JSX.Element;
124
+ export declare namespace ExperienceWidget {
125
+ var displayName: string;
126
+ }
127
+ export {};
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Widget Components
3
+ *
4
+ * Complete, self-contained experiences that orchestrate the full journey flow.
5
+ * Widgets support variants, slots, and render props for customization.
6
+ *
7
+ * @packageDocumentation
8
+ */
9
+ export { ExperienceWidget, type AccessCodeSlotProps, type AuthSlotProps, type ChallengeSlotProps, type EndedSlotProps, type EnterableSlotProps, type ErrorSlotProps, type ExperienceRenderProps, type ExperienceWidgetProps, type ExperienceWidgetSlots, type ExpiredSlotProps, type GrantedSlotProps, type LoadingSlotProps, type ParticipatingSlotProps, type SlotProps, type StartSlotProps, type UpcomingSlotProps, type WaitlistSlotProps, } from './experience-widget';
10
+ export { LoadingView, StartView, UpcomingModule, WaitlistView, type LoadingViewProps, type StartViewProps, type UpcomingModuleProps, type WaitlistViewProps, } from '../internal';
11
+ export { AppointmentModule, AuctionModule, DrawModule, QueueModule, TimedReleaseModule, type AppointmentModuleProps, type AuctionModuleProps, type DrawModuleProps, type QueueModuleProps, type TimedReleaseModuleProps, } from '../internal';
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Queue Widget Internal Components
3
+ *
4
+ * Building blocks for the QueueWidget.
5
+ */
6
+ export { QueueActions, type QueueActionsProps, type QueueStatus } from './queue-actions';
@@ -0,0 +1,20 @@
1
+ export type QueueStatus = "enterable" | "queued" | "granted" | "error";
2
+ export interface QueueActionsProps {
3
+ status: QueueStatus;
4
+ onEnter?: () => void;
5
+ onLeave?: () => void;
6
+ onShare?: () => void;
7
+ isEntering?: boolean;
8
+ isLeaving?: boolean;
9
+ enterLabel?: string;
10
+ leaveLabel?: string;
11
+ shareLabel?: string;
12
+ showShare?: boolean;
13
+ layout?: "horizontal" | "vertical";
14
+ class?: string;
15
+ className?: string;
16
+ }
17
+ export declare function QueueActions(props: QueueActionsProps): import("solid-js").JSX.Element;
18
+ export declare namespace QueueActions {
19
+ var displayName: string;
20
+ }
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Timed Release Widget Internal Components
3
+ *
4
+ * Building blocks for the TimedReleaseWidget.
5
+ */
6
+ export { TimedReleaseActions, type TimedReleaseActionsProps, type TimedReleaseStatus } from './timed-release-actions';
@@ -0,0 +1,21 @@
1
+ export type TimedReleaseStatus = "open" | "entered" | "shopping" | "completed" | "expired" | "ended";
2
+ export interface TimedReleaseActionsProps {
3
+ status: TimedReleaseStatus;
4
+ onEnter?: () => void;
5
+ onShop?: () => void;
6
+ onComplete?: () => void;
7
+ onExit?: () => void;
8
+ isEntering?: boolean;
9
+ isExiting?: boolean;
10
+ enterLabel?: string;
11
+ shopLabel?: string;
12
+ completeLabel?: string;
13
+ exitLabel?: string;
14
+ layout?: "horizontal" | "vertical";
15
+ class?: string;
16
+ className?: string;
17
+ }
18
+ export declare function TimedReleaseActions(props: TimedReleaseActionsProps): import("solid-js").JSX.Element;
19
+ export declare namespace TimedReleaseActions {
20
+ var displayName: string;
21
+ }
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Waitlist Widget Internal Components
3
+ *
4
+ * Building blocks for the WaitlistWidget.
5
+ */
6
+ export { WaitlistActions, type WaitlistActionsProps, type WaitlistStatus } from './waitlist-actions';
@@ -0,0 +1,22 @@
1
+ export type WaitlistStatus = "available" | "entered" | "opening" | "opened";
2
+ export interface WaitlistActionsProps {
3
+ status: WaitlistStatus;
4
+ onEnter?: () => void;
5
+ onLeave?: () => void;
6
+ onShare?: () => void;
7
+ onProceed?: () => void;
8
+ isEntering?: boolean;
9
+ isLeaving?: boolean;
10
+ enterLabel?: string;
11
+ leaveLabel?: string;
12
+ shareLabel?: string;
13
+ proceedLabel?: string;
14
+ showShare?: boolean;
15
+ layout?: "horizontal" | "vertical";
16
+ class?: string;
17
+ className?: string;
18
+ }
19
+ export declare function WaitlistActions(props: WaitlistActionsProps): import("solid-js").JSX.Element;
20
+ export declare namespace WaitlistActions {
21
+ var displayName: string;
22
+ }
@@ -0,0 +1,12 @@
1
+ /**
2
+ * SolidJS Hooks
3
+ *
4
+ * Reactive wrappers around the core SDK modules.
5
+ *
6
+ * @packageDocumentation
7
+ */
8
+ export { useFanfareAuth } from './use-auth';
9
+ export { useExperienceJourney } from './use-experience-journey';
10
+ export type { ExperienceJourneyOptions, UseExperienceJourneyOptions, UseExperienceJourneyResult, } from './use-experience-journey';
11
+ export { useJourneySnapshot } from './use-journey-snapshot';
12
+ export { useNanostore } from './use-nanostore';
@@ -0,0 +1,11 @@
1
+ import { AuthStatus, OtpRequest, OtpVerify } from '@fanfare-io/fanfare-sdk-core/auth';
2
+ export declare function useFanfareAuth(): {
3
+ authStatus: import('solid-js').Accessor<AuthStatus>;
4
+ isAuthenticated: import('solid-js').Accessor<boolean>;
5
+ isGuest: import('solid-js').Accessor<boolean | undefined>;
6
+ session: import('solid-js').Accessor<import('@fanfare-io/fanfare-sdk-core/auth').Session | undefined>;
7
+ guest: () => Promise<import('@fanfare-io/fanfare-sdk-core/auth').GuestSession>;
8
+ requestOtp: (options: OtpRequest) => Promise<void>;
9
+ verifyOtp: (options: OtpVerify) => Promise<import('@fanfare-io/fanfare-sdk-core/auth').AuthenticatedSession>;
10
+ logout: () => Promise<void>;
11
+ };
@@ -0,0 +1,17 @@
1
+ import { JourneyHandle, JourneySnapshot, JourneyView } from '@fanfare-io/fanfare-sdk-core/experiences';
2
+ import { MaybeAccessor } from '../utils/to-accessor';
3
+ export interface ExperienceJourneyOptions {
4
+ accessCode?: MaybeAccessor<string | undefined>;
5
+ autoEnterWaitlist?: MaybeAccessor<boolean | undefined>;
6
+ }
7
+ export interface UseExperienceJourneyOptions extends ExperienceJourneyOptions {
8
+ autoStart?: MaybeAccessor<boolean | undefined>;
9
+ }
10
+ export interface UseExperienceJourneyResult {
11
+ journey: () => JourneyHandle | null;
12
+ view: () => JourneyView | null;
13
+ snapshot: () => JourneySnapshot | null;
14
+ error: () => string | null;
15
+ start: (options?: ExperienceJourneyOptions) => Promise<JourneyView>;
16
+ }
17
+ export declare function useExperienceJourney(experienceId: MaybeAccessor<string | undefined>, options?: UseExperienceJourneyOptions): UseExperienceJourneyResult;
@@ -0,0 +1,8 @@
1
+ import { JourneyHandle, JourneySnapshot } from '@fanfare-io/fanfare-sdk-core/experiences';
2
+ import { Accessor } from 'solid-js';
3
+ /**
4
+ * Subscribe to the full journey snapshot. Re-renders on every snapshot change.
5
+ * Use this for exhaustive DU switching or when you need the complete snapshot.
6
+ * Prefer `useNanostore(handle.view$)` for view-level subscriptions.
7
+ */
8
+ export declare function useJourneySnapshot(handle: JourneyHandle): Accessor<JourneySnapshot>;
@@ -0,0 +1,7 @@
1
+ import { ReadableAtom } from 'nanostores';
2
+ import { Accessor } from 'solid-js';
3
+ /**
4
+ * Subscribe to a nanostores `ReadableAtom` and return a Solid accessor.
5
+ * Re-renders only when the atom's value changes.
6
+ */
7
+ export declare function useNanostore<T>(atom: ReadableAtom<T> | Accessor<ReadableAtom<T>>): Accessor<T>;
@@ -0,0 +1,19 @@
1
+ import { Locale, PartialTranslationMessages, TextDirection, TranslateFunction, TranslationKey, TranslationMessageKey, TranslationMessages } from '@fanfare-io/fanfare-sdk-i18n';
2
+ import { Accessor } from 'solid-js';
3
+ export interface I18nContextValue {
4
+ locale: Accessor<Locale>;
5
+ messages: Accessor<TranslationMessages<TranslationMessageKey>>;
6
+ isRoot: boolean;
7
+ t: TranslateFunction<TranslationKey>;
8
+ dir: Accessor<TextDirection>;
9
+ experienceTranslations: Accessor<PartialTranslationMessages<TranslationMessageKey> | null>;
10
+ setExperienceTranslations: (translations: PartialTranslationMessages<TranslationMessageKey> | null) => void;
11
+ }
12
+ export declare const I18nContext: import('solid-js').Context<I18nContextValue>;
13
+ export declare function useI18nContext(): I18nContextValue;
14
+ export declare function useTranslations(): {
15
+ t: TranslateFunction<TranslationKey>;
16
+ locale: Accessor<Locale>;
17
+ dir: Accessor<TextDirection>;
18
+ };
19
+ export declare function createMergedTranslations(parent: I18nContextValue, locale: Accessor<Locale | undefined>, translations: Accessor<PartialTranslationMessages<TranslationMessageKey> | undefined>, experienceTranslations: Accessor<PartialTranslationMessages<TranslationMessageKey> | null>, setExperienceTranslations: (translations: PartialTranslationMessages<TranslationMessageKey> | null) => void): I18nContextValue;
@@ -0,0 +1,16 @@
1
+ import { Locale, PartialTranslationMessages, TranslationMessageKey } from '@fanfare-io/fanfare-sdk-i18n';
2
+ import { JSX } from 'solid-js';
3
+ export interface I18nProviderProps {
4
+ /**
5
+ * The locale to use for translations.
6
+ * @default "en"
7
+ */
8
+ locale?: Locale;
9
+ /**
10
+ * Custom translations to merge with or override defaults.
11
+ * Keys should match the default translation keys.
12
+ */
13
+ translations?: PartialTranslationMessages<TranslationMessageKey>;
14
+ children: JSX.Element;
15
+ }
16
+ export declare function I18nProvider(props: I18nProviderProps): JSX.Element;
@@ -0,0 +1,12 @@
1
+ /**
2
+ * i18n Module
3
+ *
4
+ * Re-exports core i18n utilities from @fanfare-io/fanfare-sdk-i18n.
5
+ *
6
+ * @packageDocumentation
7
+ */
8
+ export { RTL_LOCALES, TRANSLATION_KEYS, createTranslateFunction, en, interpolate, isRTLLocale, mergeTranslations, type I18nConfig, type Locale, type PartialTranslationMessages, type RTLLocale, type TextDirection, type TranslateFunction, type TranslateOptions, type TranslationKey, type TranslationMessageKey, type TranslationMessages, } from '@fanfare-io/fanfare-sdk-i18n';
9
+ export { I18nContext, createMergedTranslations, useI18nContext, useTranslations } from './i18n-context';
10
+ export type { I18nContextValue } from './i18n-context';
11
+ export { I18nProvider } from './i18n-provider';
12
+ export type { I18nProviderProps } from './i18n-provider';
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Fanfare SolidJS Web Components
3
+ *
4
+ * Web components for integrating Fanfare experiences
5
+ *
6
+ * @packageDocumentation
7
+ */
8
+ export { FanfareProvider, useFanfare } from './components/provider';
9
+ export * from './hooks';
10
+ export * from './i18n';
11
+ export * from './theme';
12
+ export * from './components/auth';
13
+ export * from './components/compositions';
14
+ export * from './components/module';
15
+ export * from './components/primitives';
16
+ export * from './components/widgets';
17
+ export * from './styles';
18
+ export { registerWebComponents } from './register';