@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.
Files changed (121) hide show
  1. package/dist/{Beams-0Cg_3upg.js → Beams-sKsW_tr4.js} +46 -55
  2. package/dist/{Dots-turX9wMO.js → Dots-BEIutbKS.js} +44 -40
  3. package/dist/{Gradient-Be4Kqh_1.js → Gradient-DAR7R3Mz.js} +2 -2
  4. package/dist/Grid-BuKIXWMJ.js +174 -0
  5. package/dist/MessageCard-C8v6oHmf.js +45 -0
  6. package/dist/{Waves-DL4kuojY.js → Waves-C8qlIS1W.js} +29 -80
  7. package/dist/bridge/Highlighter.d.ts +3 -5
  8. package/dist/bridge/StudioBlockPreview.d.ts +1 -0
  9. package/dist/bridge/StudioPagePreview.d.ts +2 -2
  10. package/dist/bridge/StudioPreview.d.ts +1 -1
  11. package/dist/bridge/constants.d.ts +2 -0
  12. package/dist/bridge/hooks/useElementTracker.d.ts +9 -0
  13. package/dist/bridge/index.d.ts +3 -3
  14. package/dist/bridge/utils.d.ts +1 -4
  15. package/dist/components/AnimatedBlock.d.ts +50 -0
  16. package/dist/components/backgroundPresets/exports.d.ts +1 -1
  17. package/dist/components/backgroundPresets/presetSystem.d.ts +2 -2
  18. package/dist/components/bookingCard/BookingCard.d.ts +65 -0
  19. package/dist/components/bookingCard/index.d.ts +2 -0
  20. package/dist/components/bookingModal/BookingConfirmation.d.ts +48 -0
  21. package/dist/components/bookingModal/BookingModal.d.ts +19 -0
  22. package/dist/components/bookingModal/BookingSummary.d.ts +34 -0
  23. package/dist/components/bookingModal/index.d.ts +4 -0
  24. package/dist/components/index.d.ts +1 -0
  25. package/dist/components/integrationFilters/FieldRenderer.d.ts +3 -0
  26. package/dist/components/integrationFilters/IntegrationFilters.d.ts +1 -1
  27. package/dist/components/integrationFilters/fields/DropdownField.d.ts +1 -1
  28. package/dist/components/integrationFilters/fields/TextField.d.ts +1 -1
  29. package/dist/components/registerModal/AttendeeForm.d.ts +27 -0
  30. package/dist/components/registerModal/CouponView.d.ts +14 -0
  31. package/dist/components/registerModal/RegisterModal.d.ts +2 -1
  32. package/dist/components/registerModal/TicketSelectionStep.d.ts +15 -0
  33. package/dist/components/registerModal/utils.d.ts +85 -1
  34. package/dist/components/stripePaymentModal/StripePaymentModal.d.ts +22 -0
  35. package/dist/components/stripePaymentModal/index.d.ts +3 -0
  36. package/dist/components/ui/Calendar.d.ts +1 -1
  37. package/dist/components/ui/base/avatar.d.ts +13 -0
  38. package/dist/components/ui/base/index.d.ts +3 -0
  39. package/dist/components/ui/base/input.d.ts +1 -1
  40. package/dist/components/ui/base/skeleton.d.ts +3 -0
  41. package/dist/components/ui/base/textarea.d.ts +4 -0
  42. package/dist/components/ui/base/tooltip.d.ts +17 -0
  43. package/dist/components/ui/form/FormTextarea.d.ts +15 -0
  44. package/dist/components/ui/index.d.ts +3 -0
  45. package/dist/components/withBlockProps.d.ts +6 -14
  46. package/dist/constants/animation.d.ts +10 -0
  47. package/dist/contentEngine/content.d.ts +8 -3
  48. package/dist/contentEngine/index.d.ts +3 -3
  49. package/dist/contentEngine/sourceFetcher.d.ts +1 -1
  50. package/dist/contentEngine/themeUtils.d.ts +13 -0
  51. package/dist/contentEngine/types.d.ts +1 -0
  52. package/dist/contentEngine/useContextEngine.d.ts +11 -0
  53. package/dist/context/ForumContext.d.ts +48 -0
  54. package/dist/core/AccessManager/index.d.ts +1 -1
  55. package/dist/core/LevoBlock.d.ts +3 -2
  56. package/dist/core/LevoPage.d.ts +2 -2
  57. package/dist/core/index.d.ts +1 -1
  58. package/dist/elements/AlertDialog/index.d.ts +23 -0
  59. package/dist/elements/Carousel.d.ts +10 -2
  60. package/dist/elements/Tabs.d.ts +1 -1
  61. package/dist/elements/UserMenu.d.ts +1 -1
  62. package/dist/elements/accordion/index.d.ts +1 -1
  63. package/dist/elements/dialog/index.d.ts +1 -1
  64. package/dist/elements/forum/ForumPost.d.ts +18 -0
  65. package/dist/elements/forum/ForumPostContentRenderer.d.ts +8 -0
  66. package/dist/elements/forum/SearchInput.d.ts +5 -0
  67. package/dist/elements/forum/categoryFilter/CategoryFilter.d.ts +16 -0
  68. package/dist/elements/forum/categoryFilter/index.d.ts +2 -0
  69. package/dist/elements/forum/comments/Comment.d.ts +14 -0
  70. package/dist/elements/forum/comments/Comments.d.ts +9 -0
  71. package/dist/elements/forum/comments/ReplyBox.d.ts +11 -0
  72. package/dist/elements/forum/comments/commentUtility.d.ts +25 -0
  73. package/dist/elements/forum/comments/index.d.ts +2 -0
  74. package/dist/elements/forum/createForumPost/CreateForumPost.d.ts +9 -0
  75. package/dist/elements/forum/createForumPost/CreateForumPostModal.d.ts +87 -0
  76. package/dist/elements/forum/createForumPost/index.d.ts +2 -0
  77. package/dist/elements/forum/index.d.ts +8 -0
  78. package/dist/elements/forum/restrictionOverlays/CommentsRestrictionOverlay.d.ts +16 -0
  79. package/dist/elements/forum/restrictionOverlays/JoinRequestForm.d.ts +14 -0
  80. package/dist/elements/forum/restrictionOverlays/PendingRequestState.d.ts +11 -0
  81. package/dist/elements/forum/restrictionOverlays/PostsRestrictionOverlay.d.ts +16 -0
  82. package/dist/elements/forum/restrictionOverlays/index.d.ts +5 -0
  83. package/dist/elements/forum/utility/Video.d.ts +16 -0
  84. package/dist/elements/forum/utility/index.d.ts +49 -0
  85. package/dist/elements/index.d.ts +10 -9
  86. package/dist/elements-BxhlsyhI.js +9 -0
  87. package/dist/hooks/index.d.ts +3 -0
  88. package/dist/hooks/useLogin.d.ts +1 -1
  89. package/dist/hooks/useStripePayment.d.ts +49 -0
  90. package/dist/index-BJrh8CwF.js +16197 -0
  91. package/dist/{index-BdswdesP.js → index-BYXw6aHi.js} +3 -4
  92. package/dist/index-CV5mr-8e.js +365 -0
  93. package/dist/index-CXtfbmpx.js +23 -0
  94. package/dist/index-CgUU2EbC.js +765 -0
  95. package/dist/index-DsAqikcl.js +29 -0
  96. package/dist/index-DxsNKR4p.js +56 -0
  97. package/dist/{index-DHHPZcEh.js → index-IcG2wuuE.js} +1 -8
  98. package/dist/index.d.ts +16 -13
  99. package/dist/index.js +159 -107
  100. package/dist/interfaces/block.d.ts +2 -2
  101. package/dist/interfaces/levoBlock.d.ts +64 -10
  102. package/dist/interfaces/site.d.ts +1 -193
  103. package/dist/interfaces/sites.d.ts +201 -3
  104. package/dist/interfaces/theme.d.ts +2 -0
  105. package/dist/pixel/parserUtil.d.ts +1 -0
  106. package/dist/providers/AuthProvider.d.ts +1 -0
  107. package/dist/providers/BlockContext.d.ts +2 -1
  108. package/dist/providers/LazyMotionProvider.d.ts +15 -0
  109. package/dist/providers/index.d.ts +1 -0
  110. package/dist/studio.css +1 -1
  111. package/dist/utils/colorUtils.d.ts +7 -0
  112. package/dist/utils/getKeysWithValue.d.ts +1 -1
  113. package/dist/utils/string.d.ts +7 -0
  114. package/dist/utils/withBlockPropsUtils.d.ts +6 -55
  115. package/package.json +13 -16
  116. package/dist/Grid-B0vqOT42.js +0 -184
  117. package/dist/MessageCard-CCngWCHS.js +0 -53
  118. package/dist/components/withBlockProps copy.d.ts +0 -61
  119. package/dist/index-CPJI9a7D.js +0 -13503
  120. package/dist/index-CmNhuPZp.js +0 -34
  121. package/dist/index-kVKDoWCh.js +0 -57
@@ -1,16 +1,14 @@
1
- import { IUserHighlight, ISocketUser, SelectionState, IGenerationStatusOverlay, IBlockGenerationInfo } from './types';
2
- interface HighlighterProps {
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<HighlighterProps>;
12
+ export declare const Highlighter: React.FC<IHighlighterProps>;
15
13
  export {};
16
14
  //# sourceMappingURL=Highlighter.d.ts.map
@@ -4,5 +4,6 @@ export declare const StudioBlockPreview: React.FC<{
4
4
  blocks: Record<string, BlockComponent>;
5
5
  studioData: StudioData["blockData"] | undefined;
6
6
  site: ISite;
7
+ workspace_id: string;
7
8
  }>;
8
9
  //# sourceMappingURL=StudioBlockPreview.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
@@ -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
@@ -1,16 +1,13 @@
1
- import { ISelection, HighlightRect, IUserHighlight, ISocketUser, SelectionState, IGenerationStatusOverlay, IBlockGenerationInfo } from './types';
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
@@ -1,5 +1,5 @@
1
1
  export { default as BackgroundEffects } from './index';
2
- export * from './presets';
3
2
  export * from './presetSystem';
3
+ export * from './presets';
4
4
  export * from './presetUtils';
5
5
  //# sourceMappingURL=exports.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 { BUILT_IN_PRESETS, PRESET_CATEGORIES, PRESET_MAP, getPresetsByCategory, getAvailableCategories, } from './presets';
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,2 @@
1
+ export { BookingCard, type IBookingCardProps, type IBookingSummary, type ITaxLineItem, } from './BookingCard';
2
+ //# sourceMappingURL=index.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
@@ -0,0 +1,4 @@
1
+ export { BookingConfirmation } from './BookingConfirmation';
2
+ export { BookingModal, type BookingModalProps } from './BookingModal';
3
+ export { BookingSummary } from './BookingSummary';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -1,2 +1,3 @@
1
+ export * from './bookingModal';
1
2
  export * from './ui';
2
3
  //# sourceMappingURL=index.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
@@ -1,5 +1,5 @@
1
- import { default as React } from 'react';
2
1
  import { ILemaCollection } from '@levo-so/core';
2
+ import { default as React } from 'react';
3
3
  declare const IntegrationFilters: React.FC<{
4
4
  selectedFields: string[];
5
5
  schema: ILemaCollection;
@@ -1,5 +1,5 @@
1
- import { default as React } from 'react';
2
1
  import { ILemaField } from '@levo-so/core';
2
+ import { default as React } from 'react';
3
3
  declare const DropdownField: React.FC<{
4
4
  field: ILemaField;
5
5
  isMulti?: boolean;
@@ -1,5 +1,5 @@
1
- import { default as React } from 'react';
2
1
  import { ILemaField } from '@levo-so/core';
2
+ import { default as React } from 'react';
3
3
  declare const TextField: React.FC<{
4
4
  field: ILemaField;
5
5
  }>;
@@ -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
- export declare const currencySymbol: any;
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
@@ -0,0 +1,3 @@
1
+ export { StripePaymentModal } from './StripePaymentModal';
2
+ export type { IStripeEmbeddedCheckoutProps } from './StripePaymentModal';
3
+ //# sourceMappingURL=index.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
@@ -1,2 +1,5 @@
1
+ export * from './avatar';
1
2
  export * from './input';
3
+ export * from './skeleton';
4
+ export * from './tooltip';
2
5
  //# sourceMappingURL=index.d.ts.map
@@ -1,4 +1,4 @@
1
- import * as React from "react";
1
+ import type * as React from "react";
2
2
  declare function Input({ className, type, ...props }: React.ComponentProps<"input">): import("react/jsx-runtime").JSX.Element;
3
3
  export { Input };
4
4
  //# sourceMappingURL=input.d.ts.map
@@ -0,0 +1,3 @@
1
+ declare function Skeleton({ className, ...props }: React.ComponentProps<"div">): import("react/jsx-runtime").JSX.Element;
2
+ export { Skeleton };
3
+ //# sourceMappingURL=skeleton.d.ts.map
@@ -0,0 +1,4 @@
1
+ import type * as React from "react";
2
+ declare function Textarea({ className, ...props }: React.ComponentProps<"textarea">): import("react/jsx-runtime").JSX.Element;
3
+ export { Textarea };
4
+ //# sourceMappingURL=textarea.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