@levo-so/studio 0.1.59 → 0.1.61
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{Beams-0Cg_3upg.js → Beams-sKsW_tr4.js} +46 -55
- package/dist/{Dots-turX9wMO.js → Dots-BEIutbKS.js} +44 -40
- package/dist/{Gradient-Be4Kqh_1.js → Gradient-DAR7R3Mz.js} +2 -2
- package/dist/Grid-BuKIXWMJ.js +174 -0
- package/dist/MessageCard-C8v6oHmf.js +45 -0
- package/dist/{Waves-DL4kuojY.js → Waves-C8qlIS1W.js} +29 -80
- package/dist/bridge/Highlighter.d.ts +3 -5
- package/dist/bridge/StudioBlockPreview.d.ts +1 -0
- package/dist/bridge/StudioPagePreview.d.ts +2 -2
- package/dist/bridge/StudioPreview.d.ts +1 -1
- package/dist/bridge/constants.d.ts +2 -0
- package/dist/bridge/hooks/useElementTracker.d.ts +9 -0
- package/dist/bridge/index.d.ts +3 -3
- package/dist/bridge/utils.d.ts +1 -4
- package/dist/components/AnimatedBlock.d.ts +50 -0
- package/dist/components/backgroundPresets/exports.d.ts +1 -1
- package/dist/components/backgroundPresets/presetSystem.d.ts +2 -2
- package/dist/components/bookingCard/BookingCard.d.ts +65 -0
- package/dist/components/bookingCard/index.d.ts +2 -0
- package/dist/components/bookingModal/BookingConfirmation.d.ts +48 -0
- package/dist/components/bookingModal/BookingModal.d.ts +19 -0
- package/dist/components/bookingModal/BookingSummary.d.ts +34 -0
- package/dist/components/bookingModal/index.d.ts +4 -0
- package/dist/components/index.d.ts +1 -0
- package/dist/components/integrationFilters/FieldRenderer.d.ts +3 -0
- package/dist/components/integrationFilters/IntegrationFilters.d.ts +1 -1
- package/dist/components/integrationFilters/fields/DropdownField.d.ts +1 -1
- package/dist/components/integrationFilters/fields/TextField.d.ts +1 -1
- package/dist/components/registerModal/AttendeeForm.d.ts +27 -0
- package/dist/components/registerModal/CouponView.d.ts +14 -0
- package/dist/components/registerModal/RegisterModal.d.ts +2 -1
- package/dist/components/registerModal/TicketSelectionStep.d.ts +15 -0
- package/dist/components/registerModal/utils.d.ts +85 -1
- package/dist/components/stripePaymentModal/StripePaymentModal.d.ts +22 -0
- package/dist/components/stripePaymentModal/index.d.ts +3 -0
- package/dist/components/ui/Calendar.d.ts +1 -1
- package/dist/components/ui/base/avatar.d.ts +13 -0
- package/dist/components/ui/base/index.d.ts +3 -0
- package/dist/components/ui/base/input.d.ts +1 -1
- package/dist/components/ui/base/skeleton.d.ts +3 -0
- package/dist/components/ui/base/textarea.d.ts +4 -0
- package/dist/components/ui/base/tooltip.d.ts +17 -0
- package/dist/components/ui/form/FormTextarea.d.ts +15 -0
- package/dist/components/ui/index.d.ts +3 -0
- package/dist/components/withBlockProps.d.ts +6 -14
- package/dist/constants/animation.d.ts +10 -0
- package/dist/contentEngine/content.d.ts +8 -3
- package/dist/contentEngine/index.d.ts +3 -3
- package/dist/contentEngine/sourceFetcher.d.ts +1 -1
- package/dist/contentEngine/themeUtils.d.ts +13 -0
- package/dist/contentEngine/types.d.ts +1 -0
- package/dist/contentEngine/useContextEngine.d.ts +11 -0
- package/dist/context/ForumContext.d.ts +48 -0
- package/dist/core/AccessManager/index.d.ts +1 -1
- package/dist/core/LevoBlock.d.ts +3 -2
- package/dist/core/LevoPage.d.ts +2 -2
- package/dist/core/index.d.ts +1 -1
- package/dist/elements/AlertDialog/index.d.ts +23 -0
- package/dist/elements/Carousel.d.ts +10 -2
- package/dist/elements/Tabs.d.ts +1 -1
- package/dist/elements/UserMenu.d.ts +1 -1
- package/dist/elements/accordion/index.d.ts +1 -1
- package/dist/elements/dialog/index.d.ts +1 -1
- package/dist/elements/forum/ForumPost.d.ts +18 -0
- package/dist/elements/forum/ForumPostContentRenderer.d.ts +8 -0
- package/dist/elements/forum/SearchInput.d.ts +5 -0
- package/dist/elements/forum/categoryFilter/CategoryFilter.d.ts +16 -0
- package/dist/elements/forum/categoryFilter/index.d.ts +2 -0
- package/dist/elements/forum/comments/Comment.d.ts +14 -0
- package/dist/elements/forum/comments/Comments.d.ts +9 -0
- package/dist/elements/forum/comments/ReplyBox.d.ts +11 -0
- package/dist/elements/forum/comments/commentUtility.d.ts +25 -0
- package/dist/elements/forum/comments/index.d.ts +2 -0
- package/dist/elements/forum/createForumPost/CreateForumPost.d.ts +9 -0
- package/dist/elements/forum/createForumPost/CreateForumPostModal.d.ts +87 -0
- package/dist/elements/forum/createForumPost/index.d.ts +2 -0
- package/dist/elements/forum/index.d.ts +8 -0
- package/dist/elements/forum/restrictionOverlays/CommentsRestrictionOverlay.d.ts +16 -0
- package/dist/elements/forum/restrictionOverlays/JoinRequestForm.d.ts +14 -0
- package/dist/elements/forum/restrictionOverlays/PendingRequestState.d.ts +11 -0
- package/dist/elements/forum/restrictionOverlays/PostsRestrictionOverlay.d.ts +16 -0
- package/dist/elements/forum/restrictionOverlays/index.d.ts +5 -0
- package/dist/elements/forum/utility/Video.d.ts +16 -0
- package/dist/elements/forum/utility/index.d.ts +49 -0
- package/dist/elements/index.d.ts +10 -9
- package/dist/elements-BxhlsyhI.js +9 -0
- package/dist/hooks/index.d.ts +3 -0
- package/dist/hooks/useLogin.d.ts +1 -1
- package/dist/hooks/useStripePayment.d.ts +49 -0
- package/dist/index-BJrh8CwF.js +16197 -0
- package/dist/{index-BdswdesP.js → index-BYXw6aHi.js} +3 -4
- package/dist/index-CV5mr-8e.js +365 -0
- package/dist/index-CXtfbmpx.js +23 -0
- package/dist/index-CgUU2EbC.js +765 -0
- package/dist/index-DsAqikcl.js +29 -0
- package/dist/index-DxsNKR4p.js +56 -0
- package/dist/{index-DHHPZcEh.js → index-IcG2wuuE.js} +1 -8
- package/dist/index.d.ts +16 -13
- package/dist/index.js +159 -107
- package/dist/interfaces/block.d.ts +2 -2
- package/dist/interfaces/levoBlock.d.ts +64 -10
- package/dist/interfaces/site.d.ts +1 -193
- package/dist/interfaces/sites.d.ts +201 -3
- package/dist/interfaces/theme.d.ts +2 -0
- package/dist/pixel/parserUtil.d.ts +1 -0
- package/dist/providers/AuthProvider.d.ts +1 -0
- package/dist/providers/BlockContext.d.ts +2 -1
- package/dist/providers/LazyMotionProvider.d.ts +15 -0
- package/dist/providers/index.d.ts +1 -0
- package/dist/studio.css +1 -1
- package/dist/utils/colorUtils.d.ts +7 -0
- package/dist/utils/getKeysWithValue.d.ts +1 -1
- package/dist/utils/string.d.ts +7 -0
- package/dist/utils/withBlockPropsUtils.d.ts +6 -55
- package/package.json +13 -16
- package/dist/Grid-B0vqOT42.js +0 -184
- package/dist/MessageCard-CCngWCHS.js +0 -53
- package/dist/components/withBlockProps copy.d.ts +0 -61
- package/dist/index-CPJI9a7D.js +0 -13503
- package/dist/index-CmNhuPZp.js +0 -34
- package/dist/index-kVKDoWCh.js +0 -57
|
@@ -1,16 +1,14 @@
|
|
|
1
|
-
import {
|
|
2
|
-
interface
|
|
1
|
+
import { IBlockGenerationInfo, IGenerationStatusOverlay, ISocketUser, IUserHighlight, SelectionState } from './types';
|
|
2
|
+
interface IHighlighterProps {
|
|
3
3
|
selections: SelectionState;
|
|
4
4
|
userHighlights: IUserHighlight[];
|
|
5
5
|
users: ISocketUser[];
|
|
6
|
-
isScrolling: boolean;
|
|
7
|
-
isPageGenerating?: boolean;
|
|
8
6
|
showPill?: boolean;
|
|
9
7
|
isGenerationCompleted?: boolean;
|
|
10
8
|
totalBlocksCount?: number;
|
|
11
9
|
blocksGenerationInfo?: IBlockGenerationInfo[];
|
|
12
10
|
generationStatusOverlays?: IGenerationStatusOverlay[];
|
|
13
11
|
}
|
|
14
|
-
export declare const Highlighter: React.FC<
|
|
12
|
+
export declare const Highlighter: React.FC<IHighlighterProps>;
|
|
15
13
|
export {};
|
|
16
14
|
//# sourceMappingURL=Highlighter.d.ts.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { IWorkspace } from '@levo-so/core';
|
|
2
|
-
import { IPageExpanded, ISite } from '../interfaces';
|
|
3
|
-
import { ILevoPageProps } from '../core';
|
|
4
2
|
import { IPageDataContext } from '../contentEngine';
|
|
3
|
+
import { ILevoPageProps } from '../core';
|
|
4
|
+
import { IPageExpanded, ISite } from '../interfaces';
|
|
5
5
|
interface StudioPageData {
|
|
6
6
|
pageData: IPageExpanded;
|
|
7
7
|
parsedPageData: IPageExpanded;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { IWorkspace } from '@levo-so/core';
|
|
2
|
-
import { IBlockInstance, IPageExpanded, ITheme, BlockComponent, ISite } from '../interfaces';
|
|
3
2
|
import { IPageDataContext } from '../contentEngine';
|
|
3
|
+
import { BlockComponent, IBlockInstance, IPageExpanded, ISite, ITheme } from '../interfaces';
|
|
4
4
|
export type StudioData = {
|
|
5
5
|
pageData?: {
|
|
6
6
|
pageData: IPageExpanded;
|
|
@@ -9,6 +9,8 @@ export declare const MESSAGE_TYPES: {
|
|
|
9
9
|
readonly PREVIEW_HOVER: "PREVIEW_HOVER";
|
|
10
10
|
readonly PREVIEW_SELECT: "PREVIEW_SELECT";
|
|
11
11
|
readonly PREVIEW_MOUSE_LEAVE: "PREVIEW_MOUSE_LEAVE";
|
|
12
|
+
readonly PREVIEW_UNDO: "PREVIEW_UNDO";
|
|
13
|
+
readonly PREVIEW_REDO: "PREVIEW_REDO";
|
|
12
14
|
readonly STUDIO_SELECT: "STUDIO_SELECT";
|
|
13
15
|
readonly STUDIO_HOVER: "STUDIO_HOVER";
|
|
14
16
|
readonly STUDIO_AUTH_OVERRIDE: "STUDIO_AUTH_OVERRIDE";
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tracks an element's position every frame via a shared rAF loop.
|
|
3
|
+
* Handles moving elements (carousels, animations), scroll, resize, and DOM removal.
|
|
4
|
+
*/
|
|
5
|
+
export declare function useElementTracker(element: HTMLElement | null): {
|
|
6
|
+
highlightRef: import('react').RefObject<HTMLDivElement | null>;
|
|
7
|
+
isVisible: boolean;
|
|
8
|
+
};
|
|
9
|
+
//# sourceMappingURL=useElementTracker.d.ts.map
|
package/dist/bridge/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export * from './PreviewHighlighter';
|
|
2
|
-
export * from './types';
|
|
3
1
|
export * from './constants';
|
|
4
|
-
export * from './StudioPreview';
|
|
5
2
|
export { MESSAGE_TYPES } from './constants';
|
|
3
|
+
export * from './PreviewHighlighter';
|
|
4
|
+
export * from './StudioPreview';
|
|
5
|
+
export * from './types';
|
|
6
6
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/bridge/utils.d.ts
CHANGED
|
@@ -1,16 +1,13 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { HighlightRect, IBlockGenerationInfo, IGenerationStatusOverlay, ISelection, ISocketUser, IUserHighlight, SelectionState } from './types';
|
|
2
2
|
export declare function getElementCoordinates(element: HTMLElement): HighlightRect;
|
|
3
3
|
export declare function getSelectionFromElement(element: HTMLElement): ISelection | null;
|
|
4
4
|
export declare function findElementBySelection(selection: ISelection): HTMLElement | null;
|
|
5
5
|
export declare function createSelectionState(element: HTMLElement, type: "selected" | "hovered"): SelectionState;
|
|
6
6
|
export declare function findParentElement(currentSelections: SelectionState): HTMLElement | null;
|
|
7
|
-
export declare function updateSelectionRects(selections: SelectionState): SelectionState;
|
|
8
7
|
export declare function findBlockElementById(blockId: string): HTMLElement | null;
|
|
9
8
|
export declare function createUserHighlight(user: ISocketUser): IUserHighlight | null;
|
|
10
9
|
export declare function createUserHighlights(users: ISocketUser[]): IUserHighlight[];
|
|
11
|
-
export declare function updateUserHighlightRects(highlights: IUserHighlight[]): IUserHighlight[];
|
|
12
10
|
export declare function isElementWithinUserSelectedBlock(element: HTMLElement, userHighlights: IUserHighlight[]): boolean;
|
|
13
11
|
export declare function createGenerationStatusOverlay(blockInfo: IBlockGenerationInfo): IGenerationStatusOverlay | null;
|
|
14
12
|
export declare function createGenerationStatusOverlays(blocksInfo: IBlockGenerationInfo[]): IGenerationStatusOverlay[];
|
|
15
|
-
export declare function updateGenerationStatusOverlayRects(overlays: IGenerationStatusOverlay[]): IGenerationStatusOverlay[];
|
|
16
13
|
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { ComponentType, ReactNode } from 'react';
|
|
2
|
+
import { AnimationProperties, ScrollAnimationOffset, TransitionConfig, ViewportConfig } from '../interfaces';
|
|
3
|
+
/** Children accepted by AnimatedBlock */
|
|
4
|
+
type BlockChildren = ReactNode;
|
|
5
|
+
/** Scroll-linked animation configuration */
|
|
6
|
+
interface IScrollConfig {
|
|
7
|
+
/** Starting animation state */
|
|
8
|
+
from: AnimationProperties;
|
|
9
|
+
/** Ending animation state */
|
|
10
|
+
to: AnimationProperties;
|
|
11
|
+
/** Scroll offset range for animation timeline */
|
|
12
|
+
offset: ScrollAnimationOffset;
|
|
13
|
+
}
|
|
14
|
+
/** Entry (viewport-triggered) animation configuration */
|
|
15
|
+
interface IEntryConfig {
|
|
16
|
+
/** Starting animation state */
|
|
17
|
+
from: AnimationProperties;
|
|
18
|
+
/** Ending animation state */
|
|
19
|
+
to: AnimationProperties;
|
|
20
|
+
/** Transition timing config */
|
|
21
|
+
transition?: TransitionConfig;
|
|
22
|
+
/** Viewport detection options */
|
|
23
|
+
viewport?: ViewportConfig;
|
|
24
|
+
}
|
|
25
|
+
/** Props for AnimatedBlock component */
|
|
26
|
+
interface IAnimatedBlockProps {
|
|
27
|
+
/** Content to render inside the animated container */
|
|
28
|
+
children: BlockChildren;
|
|
29
|
+
/** Motion component to render (e.g., motion.div) */
|
|
30
|
+
MotionComponent: ComponentType<Record<string, unknown>>;
|
|
31
|
+
/** Props forwarded to the Motion component */
|
|
32
|
+
motionProps: Record<string, unknown>;
|
|
33
|
+
/** Scroll animation config — timeline tied to scroll position */
|
|
34
|
+
scroll?: IScrollConfig;
|
|
35
|
+
/** Entry animation config — plays once when entering viewport */
|
|
36
|
+
entry?: IEntryConfig;
|
|
37
|
+
/** Hover animation state */
|
|
38
|
+
whileHover?: unknown;
|
|
39
|
+
/** Exit animation state */
|
|
40
|
+
exit?: unknown;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* AnimatedBlock - Unified animation component for studio elements
|
|
44
|
+
*
|
|
45
|
+
* Handles both entry (viewport-triggered) and scroll-linked animations.
|
|
46
|
+
* Entry and scroll are mutually exclusive - scroll takes precedence if both provided.
|
|
47
|
+
*/
|
|
48
|
+
declare const AnimatedBlock: React.FC<IAnimatedBlockProps>;
|
|
49
|
+
export default AnimatedBlock;
|
|
50
|
+
//# sourceMappingURL=AnimatedBlock.d.ts.map
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* This module provides a complete preset system for background effects,
|
|
5
5
|
* including built-in presets and application logic.
|
|
6
6
|
*/
|
|
7
|
-
export {
|
|
7
|
+
export type { BackgroundEffectConfig, BackgroundPreset, } from '../../interfaces';
|
|
8
|
+
export { BUILT_IN_PRESETS, getAvailableCategories, getPresetsByCategory, PRESET_CATEGORIES, PRESET_MAP, } from './presets';
|
|
8
9
|
export { getEffectConfigFromPresetId, type PresetOperationResult, } from './presetUtils';
|
|
9
|
-
export type { BackgroundPreset, BackgroundEffectConfig, } from '../../interfaces';
|
|
10
10
|
//# sourceMappingURL=presetSystem.d.ts.map
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Tax line item from booking calculation
|
|
4
|
+
* Note: percentage is included in label (e.g., "GST 18%")
|
|
5
|
+
*/
|
|
6
|
+
export interface ITaxLineItem {
|
|
7
|
+
id: string;
|
|
8
|
+
label: string;
|
|
9
|
+
amount: number;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Booking summary from create booking API
|
|
13
|
+
*/
|
|
14
|
+
export interface IBookingSummary {
|
|
15
|
+
_id: string;
|
|
16
|
+
instance_label: string;
|
|
17
|
+
/** Collection/form name (e.g., "Registration Form") */
|
|
18
|
+
context_label: string;
|
|
19
|
+
cover_image: {
|
|
20
|
+
location: string;
|
|
21
|
+
} | null;
|
|
22
|
+
/** QR code image for check-in scanning */
|
|
23
|
+
qr_image: {
|
|
24
|
+
location: string;
|
|
25
|
+
} | null;
|
|
26
|
+
/** Invoice PDF file, null if not generated */
|
|
27
|
+
invoice: {
|
|
28
|
+
location: string;
|
|
29
|
+
} | null;
|
|
30
|
+
starts_at: string | null;
|
|
31
|
+
ends_at: string | null;
|
|
32
|
+
quantity: number;
|
|
33
|
+
currency: string;
|
|
34
|
+
unit_amount: number;
|
|
35
|
+
total_amount: number;
|
|
36
|
+
status: string;
|
|
37
|
+
paid: boolean;
|
|
38
|
+
/** User-submitted form fields */
|
|
39
|
+
form_data: Record<string, unknown>;
|
|
40
|
+
/** Tax line items breakdown */
|
|
41
|
+
taxes?: ITaxLineItem[];
|
|
42
|
+
/** Whether tax is included in unit_amount */
|
|
43
|
+
tax_inclusive?: boolean;
|
|
44
|
+
/** Discount amount applied */
|
|
45
|
+
discount?: number;
|
|
46
|
+
}
|
|
47
|
+
export interface IBookingCardProps {
|
|
48
|
+
summary: IBookingSummary;
|
|
49
|
+
onComplete?: () => void;
|
|
50
|
+
className?: string;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* BookingCard
|
|
54
|
+
*
|
|
55
|
+
* Inline card for booking payment flow (not a modal):
|
|
56
|
+
* - Summary: Shows booking details and "Pay Now" button
|
|
57
|
+
* - Processing: Shows loading state during payment
|
|
58
|
+
* - Failed: Shows error with retry option
|
|
59
|
+
* - Confirmed: Shows success message after payment
|
|
60
|
+
*
|
|
61
|
+
* For free bookings (status = confirmed), shows confirmation directly.
|
|
62
|
+
*/
|
|
63
|
+
export declare const BookingCard: React.FC<IBookingCardProps>;
|
|
64
|
+
export default BookingCard;
|
|
65
|
+
//# sourceMappingURL=BookingCard.d.ts.map
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
interface IBookingRecord {
|
|
3
|
+
_id: string;
|
|
4
|
+
status: string;
|
|
5
|
+
paid: boolean;
|
|
6
|
+
unit_amount: number;
|
|
7
|
+
currency: string;
|
|
8
|
+
quantity: number;
|
|
9
|
+
instance_label?: string;
|
|
10
|
+
}
|
|
11
|
+
interface IBookingSummaryData {
|
|
12
|
+
_id: string;
|
|
13
|
+
instance_label: string;
|
|
14
|
+
cover_image: {
|
|
15
|
+
location: string;
|
|
16
|
+
} | null;
|
|
17
|
+
/** QR code image for check-in scanning */
|
|
18
|
+
qr_image: {
|
|
19
|
+
location: string;
|
|
20
|
+
} | null;
|
|
21
|
+
/** Invoice PDF file, null if not generated */
|
|
22
|
+
invoice: {
|
|
23
|
+
location: string;
|
|
24
|
+
} | null;
|
|
25
|
+
starts_at: string | null;
|
|
26
|
+
ends_at: string | null;
|
|
27
|
+
quantity: number;
|
|
28
|
+
currency: string;
|
|
29
|
+
unit_amount: number;
|
|
30
|
+
total_amount: number;
|
|
31
|
+
}
|
|
32
|
+
interface IBookingConfirmationProps {
|
|
33
|
+
booking: IBookingRecord;
|
|
34
|
+
summary: IBookingSummaryData | null;
|
|
35
|
+
onClose: () => void;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* BookingConfirmation
|
|
39
|
+
*
|
|
40
|
+
* Displays confirmation after successful booking:
|
|
41
|
+
* - Success icon and message
|
|
42
|
+
* - Booking ID
|
|
43
|
+
* - Booking details (name, dates, amount)
|
|
44
|
+
* - Close button
|
|
45
|
+
*/
|
|
46
|
+
export declare const BookingConfirmation: React.FC<IBookingConfirmationProps>;
|
|
47
|
+
export default BookingConfirmation;
|
|
48
|
+
//# sourceMappingURL=BookingConfirmation.d.ts.map
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export interface BookingModalProps {
|
|
2
|
+
isOpen: boolean;
|
|
3
|
+
onClose: () => void;
|
|
4
|
+
contentId: string;
|
|
5
|
+
collectionKey: string;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* BookingModal
|
|
9
|
+
*
|
|
10
|
+
* Multi-step modal for booking payment flow:
|
|
11
|
+
* 1. Loading: Creates booking from content
|
|
12
|
+
* 2. Summary: Shows booking details and "Pay Now" button
|
|
13
|
+
* 3. Confirmation: Shows success message after payment
|
|
14
|
+
*
|
|
15
|
+
* For free bookings (unit_amount = 0), skips payment and goes directly to confirmation.
|
|
16
|
+
*/
|
|
17
|
+
export declare const BookingModal: ({ isOpen, onClose, contentId, collectionKey }: BookingModalProps) => import("react/jsx-runtime").JSX.Element | null;
|
|
18
|
+
export default BookingModal;
|
|
19
|
+
//# sourceMappingURL=BookingModal.d.ts.map
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
interface IBookingSummaryData {
|
|
3
|
+
_id: string;
|
|
4
|
+
instance_label: string;
|
|
5
|
+
cover_image: {
|
|
6
|
+
location: string;
|
|
7
|
+
} | null;
|
|
8
|
+
starts_at: string | null;
|
|
9
|
+
ends_at: string | null;
|
|
10
|
+
quantity: number;
|
|
11
|
+
currency: string;
|
|
12
|
+
unit_amount: number;
|
|
13
|
+
total_amount: number;
|
|
14
|
+
status: string;
|
|
15
|
+
paid: boolean;
|
|
16
|
+
}
|
|
17
|
+
interface IBookingSummaryProps {
|
|
18
|
+
summary: IBookingSummaryData;
|
|
19
|
+
onPay: () => void;
|
|
20
|
+
isLoading: boolean;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* BookingSummary
|
|
24
|
+
*
|
|
25
|
+
* Displays booking details before payment:
|
|
26
|
+
* - Cover image (if available)
|
|
27
|
+
* - Instance label (booking name)
|
|
28
|
+
* - Date/time (if available)
|
|
29
|
+
* - Quantity and pricing
|
|
30
|
+
* - Pay Now button
|
|
31
|
+
*/
|
|
32
|
+
export declare const BookingSummary: React.FC<IBookingSummaryProps>;
|
|
33
|
+
export default BookingSummary;
|
|
34
|
+
//# sourceMappingURL=BookingSummary.d.ts.map
|
|
@@ -2,6 +2,9 @@ import { ILemaField } from '@levo-so/core';
|
|
|
2
2
|
import { default as React } from 'react';
|
|
3
3
|
declare const FieldRenderer: React.FC<{
|
|
4
4
|
field: ILemaField;
|
|
5
|
+
settings?: {
|
|
6
|
+
enableVerification?: boolean;
|
|
7
|
+
};
|
|
5
8
|
}>;
|
|
6
9
|
export default FieldRenderer;
|
|
7
10
|
//# sourceMappingURL=FieldRenderer.d.ts.map
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export interface IAttendeeFormProps {
|
|
2
|
+
values: {
|
|
3
|
+
name: string;
|
|
4
|
+
email: string;
|
|
5
|
+
is_business_purchase?: boolean;
|
|
6
|
+
billing_details?: {
|
|
7
|
+
name?: string;
|
|
8
|
+
tax_id?: string;
|
|
9
|
+
address?: {
|
|
10
|
+
line1?: string;
|
|
11
|
+
line2?: string;
|
|
12
|
+
city?: string;
|
|
13
|
+
state?: string;
|
|
14
|
+
postal_code?: string;
|
|
15
|
+
country?: string;
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
};
|
|
19
|
+
handleChange: (e: React.ChangeEvent<HTMLInputElement>) => void;
|
|
20
|
+
handleBlur: (e: React.FocusEvent<HTMLInputElement>) => void;
|
|
21
|
+
handleSubmit: (e?: React.FormEvent<HTMLFormElement>) => void;
|
|
22
|
+
registerLoading: boolean;
|
|
23
|
+
onBack: () => void;
|
|
24
|
+
submitLabel: string;
|
|
25
|
+
}
|
|
26
|
+
export declare const AttendeeForm: React.FC<IAttendeeFormProps>;
|
|
27
|
+
//# sourceMappingURL=AttendeeForm.d.ts.map
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { LevoEvent } from '@levo-so/core';
|
|
2
|
+
import { ITicketWithTaxBreakdown } from './utils';
|
|
3
|
+
export interface ICouponViewProps {
|
|
4
|
+
couponCode: string;
|
|
5
|
+
onCouponCodeChange: (code: string) => void;
|
|
6
|
+
couponError: string | null;
|
|
7
|
+
couponLoading: boolean;
|
|
8
|
+
onValidateCoupon: (code?: string) => void;
|
|
9
|
+
publicCoupons: LevoEvent.Coupon.Root[];
|
|
10
|
+
onBack: () => void;
|
|
11
|
+
selectedTicket: LevoEvent.Ticket.Root | ITicketWithTaxBreakdown | null;
|
|
12
|
+
}
|
|
13
|
+
export declare const CouponView: React.FC<ICouponViewProps>;
|
|
14
|
+
//# sourceMappingURL=CouponView.d.ts.map
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
export declare const RegisterModal: ({ eventID, title, buttonText, }: {
|
|
1
|
+
export declare const RegisterModal: ({ eventID, title, external, buttonText, }: {
|
|
2
2
|
eventID: string;
|
|
3
3
|
title?: string;
|
|
4
|
+
external?: string;
|
|
4
5
|
buttonText?: string;
|
|
5
6
|
}) => import("react/jsx-runtime").JSX.Element;
|
|
6
7
|
//# sourceMappingURL=RegisterModal.d.ts.map
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { LevoEvent } from '@levo-so/core';
|
|
2
|
+
import { IDiscount, ITicketWithTaxBreakdown } from './utils';
|
|
3
|
+
export interface ITicketSelectionStepProps {
|
|
4
|
+
tickets: (LevoEvent.Ticket.Root | ITicketWithTaxBreakdown)[];
|
|
5
|
+
selectedTicket: LevoEvent.Ticket.Root | ITicketWithTaxBreakdown | null;
|
|
6
|
+
onSelectTicket: (ticket: LevoEvent.Ticket.Root | ITicketWithTaxBreakdown) => void;
|
|
7
|
+
discount: IDiscount | null;
|
|
8
|
+
couponCode: string;
|
|
9
|
+
publicCouponsCount: number;
|
|
10
|
+
onApplyCouponClick: () => void;
|
|
11
|
+
onRemoveCoupon: () => void;
|
|
12
|
+
onNext: () => void;
|
|
13
|
+
}
|
|
14
|
+
export declare const TicketSelectionStep: React.FC<ITicketSelectionStepProps>;
|
|
15
|
+
//# sourceMappingURL=TicketSelectionStep.d.ts.map
|
|
@@ -1,2 +1,86 @@
|
|
|
1
|
-
|
|
1
|
+
import { LevoEvent } from '@levo-so/core';
|
|
2
|
+
export declare const currencySymbol: Record<string, string>;
|
|
3
|
+
/**
|
|
4
|
+
* Tax line item from API (pre-calculated)
|
|
5
|
+
*/
|
|
6
|
+
export interface ITaxLineItem {
|
|
7
|
+
id?: string;
|
|
8
|
+
_id?: string;
|
|
9
|
+
label: string;
|
|
10
|
+
percentage: number;
|
|
11
|
+
amount: number;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Extended ticket with server-calculated tax breakdown
|
|
15
|
+
* All values are pre-calculated by the API - no client-side calculation needed
|
|
16
|
+
*/
|
|
17
|
+
export interface ITicketWithTaxBreakdown extends Omit<LevoEvent.Ticket.Root, "taxes"> {
|
|
18
|
+
/** Base price before tax (for tax-inclusive, back-calculated) */
|
|
19
|
+
subtotal: number;
|
|
20
|
+
/** Total tax amount */
|
|
21
|
+
tax_amount: number;
|
|
22
|
+
/** Final payable amount */
|
|
23
|
+
total: number;
|
|
24
|
+
/** Individual tax line items with amounts */
|
|
25
|
+
taxes: ITaxLineItem[];
|
|
26
|
+
/** Whether price includes tax */
|
|
27
|
+
tax_inclusive: boolean;
|
|
28
|
+
/** Whether taxes are enabled */
|
|
29
|
+
tax_enabled: boolean;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Response from coupon validation API (pre-calculated by server)
|
|
33
|
+
* All values are pre-calculated - no client-side calculation needed
|
|
34
|
+
*/
|
|
35
|
+
export interface IDiscountWithTax {
|
|
36
|
+
/** Base price before discount */
|
|
37
|
+
base_amount: number;
|
|
38
|
+
/** Final payable amount (legacy, same as total_amount) */
|
|
39
|
+
sale_amount: number;
|
|
40
|
+
/** Amount eligible for discount */
|
|
41
|
+
discountable_amount: number;
|
|
42
|
+
/** Discount amount applied */
|
|
43
|
+
discount: number;
|
|
44
|
+
/** Taxable amount after discount */
|
|
45
|
+
taxable_amount: number;
|
|
46
|
+
/** Individual tax line items with amounts */
|
|
47
|
+
taxes: ITaxLineItem[];
|
|
48
|
+
/** Total tax amount */
|
|
49
|
+
tax_amount: number;
|
|
50
|
+
/** Whether price includes tax */
|
|
51
|
+
tax_inclusive: boolean;
|
|
52
|
+
/** Final total payable */
|
|
53
|
+
total_amount: number;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Legacy discount interface (for backwards compatibility)
|
|
57
|
+
* @deprecated Use IDiscountWithTax instead
|
|
58
|
+
*/
|
|
59
|
+
export interface IDiscount {
|
|
60
|
+
base_amount: number;
|
|
61
|
+
sale_amount: number;
|
|
62
|
+
discount: number;
|
|
63
|
+
taxable_amount?: number;
|
|
64
|
+
taxes?: ITaxLineItem[];
|
|
65
|
+
tax_amount?: number;
|
|
66
|
+
tax_inclusive?: boolean;
|
|
67
|
+
total_amount?: number;
|
|
68
|
+
}
|
|
69
|
+
export declare const formatCurrency: (value?: {
|
|
70
|
+
unit_amount?: number;
|
|
71
|
+
currency?: string;
|
|
72
|
+
} | null) => string;
|
|
73
|
+
/**
|
|
74
|
+
* Get tax label suffix for price display in ticket selector
|
|
75
|
+
* Returns "+ taxes" for exclusive, "(inclusive of taxes)" for inclusive
|
|
76
|
+
*/
|
|
77
|
+
export declare const getTaxLabel: (ticket: ITicketWithTaxBreakdown | LevoEvent.Ticket.Root | null) => string | null;
|
|
78
|
+
/**
|
|
79
|
+
* Check if discount has tax information from API
|
|
80
|
+
*/
|
|
81
|
+
export declare const hasDiscountTaxInfo: (discount: IDiscount | null) => discount is IDiscount & Required<Pick<IDiscount, "taxes" | "tax_amount" | "taxable_amount" | "total_amount">>;
|
|
82
|
+
/**
|
|
83
|
+
* Check if ticket has tax breakdown from API
|
|
84
|
+
*/
|
|
85
|
+
export declare const hasTicketTaxBreakdown: (ticket: LevoEvent.Ticket.Root | ITicketWithTaxBreakdown | null) => ticket is ITicketWithTaxBreakdown;
|
|
2
86
|
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { Stripe } from '@stripe/stripe-js';
|
|
2
|
+
export interface IStripeEmbeddedCheckoutProps {
|
|
3
|
+
/** Whether modal is open */
|
|
4
|
+
isOpen: boolean;
|
|
5
|
+
/** Close modal handler */
|
|
6
|
+
onClose: () => void;
|
|
7
|
+
/** Stripe Promise from loadStripe */
|
|
8
|
+
stripePromise: Promise<Stripe | null> | null;
|
|
9
|
+
/** Checkout Session client_secret (from embedded mode session) */
|
|
10
|
+
clientSecret: string;
|
|
11
|
+
/** Called when checkout completes successfully */
|
|
12
|
+
onComplete?: () => void;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Stripe Embedded Checkout Modal
|
|
16
|
+
*
|
|
17
|
+
* Renders Stripe's hosted checkout UI inside a modal.
|
|
18
|
+
* Backend must create Checkout Session with ui_mode: 'embedded'.
|
|
19
|
+
*/
|
|
20
|
+
export declare const StripePaymentModal: ({ isOpen, onClose, stripePromise, clientSecret, onComplete, }: IStripeEmbeddedCheckoutProps) => import("react/jsx-runtime").JSX.Element | null;
|
|
21
|
+
export default StripePaymentModal;
|
|
22
|
+
//# sourceMappingURL=StripePaymentModal.d.ts.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { DayPicker } from 'react-day-picker';
|
|
2
|
-
import * as React from "react";
|
|
2
|
+
import type * as React from "react";
|
|
3
3
|
export type CalendarProps = React.ComponentProps<typeof DayPicker>;
|
|
4
4
|
export declare const Calendar: ({ className, classNames, showOutsideDays, captionLayout, formatters, components, ...props }: CalendarProps) => import("react/jsx-runtime").JSX.Element;
|
|
5
5
|
//# sourceMappingURL=Calendar.d.ts.map
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Avatar as AvatarPrimitive } from 'radix-ui';
|
|
2
|
+
import type * as React from "react";
|
|
3
|
+
declare function Avatar({ className, ...props }: React.ComponentProps<typeof AvatarPrimitive.Root>): import("react/jsx-runtime").JSX.Element;
|
|
4
|
+
declare function AvatarImage({ className, isActive, ...props }: React.ComponentProps<typeof AvatarPrimitive.Image> & {
|
|
5
|
+
isActive?: boolean;
|
|
6
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
declare function AvatarImageV2({ className, ...props }: React.ComponentProps<typeof AvatarPrimitive.Image>): import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
declare function AvatarFallback({ className, isActive, ...props }: React.ComponentProps<typeof AvatarPrimitive.Fallback> & {
|
|
9
|
+
isActive?: boolean;
|
|
10
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
11
|
+
declare function AvatarFallbackV2({ className, ...props }: React.ComponentProps<typeof AvatarPrimitive.Fallback>): import("react/jsx-runtime").JSX.Element;
|
|
12
|
+
export { Avatar, AvatarImage, AvatarImageV2, AvatarFallback, AvatarFallbackV2 };
|
|
13
|
+
//# sourceMappingURL=avatar.d.ts.map
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Tooltip as TooltipPrimitive } from 'radix-ui';
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
declare const TooltipProvider: React.FC<TooltipPrimitive.TooltipProviderProps>;
|
|
4
|
+
declare const Tooltip: React.FC<TooltipPrimitive.TooltipProps>;
|
|
5
|
+
declare const TooltipTrigger: React.ForwardRefExoticComponent<TooltipPrimitive.TooltipTriggerProps & React.RefAttributes<HTMLButtonElement>>;
|
|
6
|
+
declare const TooltipPortal: React.FC<TooltipPrimitive.TooltipPortalProps>;
|
|
7
|
+
declare const TooltipContent: React.ForwardRefExoticComponent<Omit<TooltipPrimitive.TooltipContentProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
8
|
+
declare const SimpleTooltipWrapper: React.FC<{
|
|
9
|
+
children: React.ReactNode;
|
|
10
|
+
label?: string | React.ReactElement;
|
|
11
|
+
labelClassName?: string;
|
|
12
|
+
asChild?: boolean;
|
|
13
|
+
contentProps?: React.ComponentProps<typeof TooltipContent>;
|
|
14
|
+
side?: "top" | "bottom" | "left" | "right";
|
|
15
|
+
}>;
|
|
16
|
+
export { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider, SimpleTooltipWrapper, TooltipPortal, };
|
|
17
|
+
//# sourceMappingURL=tooltip.d.ts.map
|