@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
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { IBaseInputProps } from '../../../interfaces/form';
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
export interface ITextareaProps extends IBaseInputProps {
|
|
4
|
+
label?: string;
|
|
5
|
+
isRequired?: boolean;
|
|
6
|
+
labelStyles?: string;
|
|
7
|
+
containerStyles?: string;
|
|
8
|
+
textAreaProps?: React.TextareaHTMLAttributes<HTMLTextAreaElement>;
|
|
9
|
+
textAreaStyles?: string;
|
|
10
|
+
onChange?: (e: React.ChangeEvent<HTMLTextAreaElement>) => void;
|
|
11
|
+
onBlur?: (e: React.FocusEvent<HTMLTextAreaElement>) => void;
|
|
12
|
+
}
|
|
13
|
+
declare const FormTextarea: React.ForwardRefExoticComponent<ITextareaProps & React.RefAttributes<HTMLTextAreaElement>>;
|
|
14
|
+
export { FormTextarea };
|
|
15
|
+
//# sourceMappingURL=FormTextarea.d.ts.map
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import { ComponentType, ForwardRefExoticComponent, ReactElement,
|
|
1
|
+
import { ComponentType, ForwardRefExoticComponent, ReactElement, ReactNode, RefAttributes } from 'react';
|
|
2
2
|
import { IFieldConfig, IStyles } from '../interfaces';
|
|
3
|
-
type
|
|
4
|
-
type BlockChildren = ReactNode | RenderFunction;
|
|
3
|
+
type BlockChildren = ReactNode;
|
|
5
4
|
/**
|
|
6
5
|
* Base props interface for all studio elements
|
|
7
6
|
*
|
|
@@ -15,11 +14,9 @@ export interface BaseElementProps {
|
|
|
15
14
|
content?: any;
|
|
16
15
|
generatedClassName?: string;
|
|
17
16
|
}
|
|
18
|
-
export
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
}): ReactElement | null;
|
|
22
|
-
}
|
|
17
|
+
export type WithBlockPropsComponent<P = {}> = (props: P & {
|
|
18
|
+
children?: BlockChildren;
|
|
19
|
+
}) => ReactElement | null;
|
|
23
20
|
/**
|
|
24
21
|
* withBlockProps - Higher-Order Component for Studio Elements
|
|
25
22
|
*
|
|
@@ -32,17 +29,12 @@ export interface WithBlockPropsComponent<P = {}> {
|
|
|
32
29
|
* 2. Generates CSS classes for element targeting and theme variants
|
|
33
30
|
* 3. Handles nested data access via dot-notation element keys
|
|
34
31
|
* 4. Provides consistent interface for all studio elements
|
|
35
|
-
* 5.
|
|
32
|
+
* 5. Supports Framer Motion animations via whileInView for entry animations
|
|
36
33
|
*
|
|
37
34
|
* CSS Class Generation:
|
|
38
35
|
* - Base class: `levo-{blockId}-{elementKey}` for unique element targeting
|
|
39
36
|
* - Variant classes: `levo-variant-{groupId}-{variantId}` for theme variants
|
|
40
37
|
*
|
|
41
|
-
* The generated classes enable:
|
|
42
|
-
* - Element-specific styling in CSS
|
|
43
|
-
* - Theme variant styling via class selectors
|
|
44
|
-
* - CSS cascade integration with theme system
|
|
45
|
-
*
|
|
46
38
|
* @example
|
|
47
39
|
* // Element with theme variants selected
|
|
48
40
|
* <Button elementKey="hero.button" />
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { AnimationProperties, TransitionConfig, ViewportConfig } from '../interfaces';
|
|
2
|
+
/** Default visible state - target for all animations */
|
|
3
|
+
export declare const DEFAULT_VISIBLE_STATE: AnimationProperties;
|
|
4
|
+
/** Default "from" state for entry/scroll animations */
|
|
5
|
+
export declare const DEFAULT_FROM_STATE: AnimationProperties;
|
|
6
|
+
/** Default transition config */
|
|
7
|
+
export declare const DEFAULT_TRANSITION: TransitionConfig;
|
|
8
|
+
/** Default viewport config for entry animations */
|
|
9
|
+
export declare const DEFAULT_VIEWPORT: ViewportConfig;
|
|
10
|
+
//# sourceMappingURL=animation.d.ts.map
|
|
@@ -1,13 +1,16 @@
|
|
|
1
1
|
import { ILevoClient, IResponseMultiple } from '@levo-so/core';
|
|
2
2
|
import { IBlockInstance, IPageExpanded, ISite, IStudioSource } from '../interfaces';
|
|
3
3
|
import { IPageContext, IPageDataContext } from './types';
|
|
4
|
-
export type ILevoPageData = Pick<IPageExpanded, "id" | "workspace_id" | "blocks" | "source" | "title" | "description" | "access" | "style_config"
|
|
5
|
-
export declare const resolveVariables: ({ skeleton, blockFetchedContent, blockSources, pageContext, currentPath, }: {
|
|
4
|
+
export type ILevoPageData = Pick<IPageExpanded, "id" | "workspace_id" | "blocks" | "source" | "title" | "description" | "access" | "style_config">;
|
|
5
|
+
export declare const resolveVariables: ({ skeleton, blockFetchedContent, blockSources, pageContext, siteData, currentPath, _resolvedKeys, _contextKeys, }: {
|
|
6
6
|
skeleton: any;
|
|
7
7
|
blockFetchedContent: Record<string, any>;
|
|
8
8
|
blockSources: IStudioSource[];
|
|
9
9
|
pageContext: Record<string, any>;
|
|
10
|
+
siteData?: Record<string, any>;
|
|
10
11
|
currentPath?: string;
|
|
12
|
+
_resolvedKeys?: Record<string, any>;
|
|
13
|
+
_contextKeys?: Record<string, any>;
|
|
11
14
|
}) => any;
|
|
12
15
|
export declare const resolveStyles: ({ skeleton, blockFetchedContent, blockSources, currentPath, }: {
|
|
13
16
|
skeleton: any;
|
|
@@ -25,11 +28,13 @@ export declare const getPageSource: ({ levoClient, pageData, slugs, cookies, dra
|
|
|
25
28
|
pageContext: IPageContext;
|
|
26
29
|
pageNotFound: boolean;
|
|
27
30
|
}>;
|
|
28
|
-
export declare const parseVariablesFromResolvedSource: ({ levoClient, block, resolvedSources, pageContext, cookies, draft, }: {
|
|
31
|
+
export declare const parseVariablesFromResolvedSource: ({ levoClient, block, resolvedSources, pageContext, siteData, cookies, draft, workspace_id, }: {
|
|
29
32
|
levoClient: ILevoClient;
|
|
30
33
|
block: IBlockInstance;
|
|
31
34
|
resolvedSources: IBlockInstance["source"];
|
|
35
|
+
workspace_id: string;
|
|
32
36
|
pageContext?: IPageContext;
|
|
37
|
+
siteData?: Record<string, any>;
|
|
33
38
|
cookies?: string;
|
|
34
39
|
draft?: boolean;
|
|
35
40
|
}) => Promise<[IBlockInstance, Record<string, IResponseMultiple<Record<string, unknown>>>]>;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export * from './content';
|
|
2
|
-
export * from './sourceFetcher';
|
|
3
|
-
export * from './useContentEngine';
|
|
4
|
-
export * from './types';
|
|
5
2
|
export * from './getPage';
|
|
3
|
+
export * from './sourceFetcher';
|
|
6
4
|
export * from './themeUtils';
|
|
5
|
+
export * from './types';
|
|
6
|
+
export * from './useContentEngine';
|
|
7
7
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ILemaCollection, ILevoClient, IResponseMultiple, IResponseSingle } from '@levo-so/core';
|
|
2
2
|
import { SourceFetchOptions } from './types';
|
|
3
|
-
export declare const fetchSource: ({ levoClient, source, slugs, params, cookies, draft, }: SourceFetchOptions) => Promise<IResponseMultiple | IResponseSingle | null>;
|
|
3
|
+
export declare const fetchSource: ({ levoClient, source, workspace_id, slugs, params, cookies, draft, }: SourceFetchOptions) => Promise<IResponseMultiple | IResponseSingle | null>;
|
|
4
4
|
export declare const fetchCollectionSchema: ({ levoClient, source, cookies, draft, }: {
|
|
5
5
|
levoClient: ILevoClient;
|
|
6
6
|
source: {
|
|
@@ -30,6 +30,18 @@ export declare const processFonts: (theme: ITheme) => {
|
|
|
30
30
|
fontUrl: string;
|
|
31
31
|
fontTags: string;
|
|
32
32
|
};
|
|
33
|
+
/**
|
|
34
|
+
* Normalizes a custom color name to a valid CSS variable suffix
|
|
35
|
+
* Replaces spaces with underscores, converts to lowercase
|
|
36
|
+
* Example: "Primary Accent" -> "primary_accent"
|
|
37
|
+
*/
|
|
38
|
+
export declare const normalizeColorName: (name: string) => string;
|
|
39
|
+
/**
|
|
40
|
+
* Normalizes a custom font name to a valid CSS variable suffix
|
|
41
|
+
* Replaces spaces with underscores, converts to lowercase
|
|
42
|
+
* Example: "Code Font" -> "code_font"
|
|
43
|
+
*/
|
|
44
|
+
export declare const normalizeFontName: (name: string) => string;
|
|
33
45
|
/**
|
|
34
46
|
* CSS Custom Properties Generation
|
|
35
47
|
*
|
|
@@ -41,6 +53,7 @@ export declare const processFonts: (theme: ITheme) => {
|
|
|
41
53
|
* - var(--color-brand) for theme colors
|
|
42
54
|
* - var(--font-heading) for theme fonts
|
|
43
55
|
* - var(--base-spacing) for theme sizes
|
|
56
|
+
* - var(--color-custom-{name}) for custom colors
|
|
44
57
|
*
|
|
45
58
|
* @param theme - Theme configuration object
|
|
46
59
|
* @returns Object mapping CSS property names to values
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export declare const useContextEngine: (field_key: string) => {
|
|
2
|
+
query: Record<string, any>;
|
|
3
|
+
setQuery: (newQuery: Record<string, any>) => void;
|
|
4
|
+
loading: boolean;
|
|
5
|
+
response: {
|
|
6
|
+
meta: import('@levo-so/core').IMeta;
|
|
7
|
+
data: Record<string, unknown>[];
|
|
8
|
+
} | undefined;
|
|
9
|
+
};
|
|
10
|
+
export default useContextEngine;
|
|
11
|
+
//# sourceMappingURL=useContextEngine.d.ts.map
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { IForum, IForumJoinRequest } from '@levo-so/core';
|
|
2
|
+
import { default as React } from 'react';
|
|
3
|
+
/**
|
|
4
|
+
* Forum context
|
|
5
|
+
*/
|
|
6
|
+
interface IForumContext {
|
|
7
|
+
forum: IForum | null;
|
|
8
|
+
isMember: boolean;
|
|
9
|
+
isLoadingMembership: boolean;
|
|
10
|
+
isInviteOnly: boolean;
|
|
11
|
+
/** Whether user can interact with posts (upvote/downvote) */
|
|
12
|
+
canInteractWithPosts: boolean;
|
|
13
|
+
/** Whether user can interact with comments (reply/vote) */
|
|
14
|
+
canInteractWithComments: boolean;
|
|
15
|
+
/** Current user's pending join request, if any */
|
|
16
|
+
joinRequest: IForumJoinRequest | null;
|
|
17
|
+
/** Whether user has a pending join request */
|
|
18
|
+
isJoinRequestPending: boolean;
|
|
19
|
+
/** Whether the forum allows join requests */
|
|
20
|
+
allowJoinRequests: boolean;
|
|
21
|
+
/** Submit a join request for the current user */
|
|
22
|
+
submitJoinRequest: (message?: string) => Promise<boolean>;
|
|
23
|
+
/** Refresh membership status from the server */
|
|
24
|
+
refreshMembershipStatus: () => Promise<void>;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Forum provider
|
|
28
|
+
*/
|
|
29
|
+
export declare const ForumProvider: React.FC<{
|
|
30
|
+
children: React.ReactNode;
|
|
31
|
+
forum: IForum | null;
|
|
32
|
+
isMember: boolean;
|
|
33
|
+
isLoadingMembership: boolean;
|
|
34
|
+
isInviteOnly: boolean;
|
|
35
|
+
canInteractWithPosts: boolean;
|
|
36
|
+
canInteractWithComments: boolean;
|
|
37
|
+
joinRequest?: IForumJoinRequest | null;
|
|
38
|
+
isJoinRequestPending?: boolean;
|
|
39
|
+
allowJoinRequests?: boolean;
|
|
40
|
+
submitJoinRequest?: (message?: string) => Promise<boolean>;
|
|
41
|
+
refreshMembershipStatus?: () => Promise<void>;
|
|
42
|
+
}>;
|
|
43
|
+
/**
|
|
44
|
+
* Hook to use forum context
|
|
45
|
+
*/
|
|
46
|
+
export declare const useForumContext: () => IForumContext;
|
|
47
|
+
export {};
|
|
48
|
+
//# sourceMappingURL=ForumContext.d.ts.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
+
import { ILevoPageData } from '../../contentEngine';
|
|
1
2
|
import { ISite } from '../../interfaces';
|
|
2
3
|
import { IAuthOverride } from '../../providers/AuthProvider';
|
|
3
|
-
import { ILevoPageData } from '../../contentEngine';
|
|
4
4
|
declare const AccessManager: React.FC<{
|
|
5
5
|
page: ILevoPageData;
|
|
6
6
|
site: ISite;
|
package/dist/core/LevoBlock.d.ts
CHANGED
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
import { default as React } from 'react';
|
|
2
|
-
import { IBlockInstance, ILevoBlockProps } from '../interfaces';
|
|
3
2
|
import { IPageContext, IPageDataContext } from '../contentEngine';
|
|
3
|
+
import { IBlockInstance, ILevoBlockProps } from '../interfaces';
|
|
4
4
|
interface LevoBlockProps {
|
|
5
5
|
html_id?: string;
|
|
6
6
|
isBuilder?: boolean;
|
|
7
7
|
blocks: Record<string, React.FC<ILevoBlockProps>>;
|
|
8
8
|
parsedBlockData: IBlockInstance;
|
|
9
|
+
workspace_id: string;
|
|
9
10
|
blockData?: IBlockInstance;
|
|
10
11
|
pageContext?: IPageContext;
|
|
11
12
|
blockContext?: IPageDataContext["blocks"][number];
|
|
12
13
|
}
|
|
13
|
-
export declare const LevoBlock: React.MemoExoticComponent<({ html_id, isBuilder, blocks, parsedBlockData, blockData, pageContext, blockContext, }: LevoBlockProps) => import("react/jsx-runtime").JSX.Element>;
|
|
14
|
+
export declare const LevoBlock: React.MemoExoticComponent<({ html_id, isBuilder, blocks, parsedBlockData, blockData, pageContext, blockContext, workspace_id, }: LevoBlockProps) => import("react/jsx-runtime").JSX.Element>;
|
|
14
15
|
export {};
|
|
15
16
|
//# sourceMappingURL=LevoBlock.d.ts.map
|
package/dist/core/LevoPage.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { default as React } from 'react';
|
|
2
1
|
import { IWorkspace } from '@levo-so/core';
|
|
3
|
-
import {
|
|
2
|
+
import { default as React } from 'react';
|
|
4
3
|
import { ILevoPageData, IPageDataContext } from '../contentEngine';
|
|
4
|
+
import { BlockComponent, ISite } from '../interfaces';
|
|
5
5
|
import { IAuthOverride } from '../providers';
|
|
6
6
|
export interface ILevoPageProps {
|
|
7
7
|
pageData: ILevoPageData;
|
package/dist/core/index.d.ts
CHANGED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Alert dialog props
|
|
4
|
+
*/
|
|
5
|
+
interface IAlertDialogProps {
|
|
6
|
+
isOpen: boolean;
|
|
7
|
+
setIsOpen: (open: boolean) => void;
|
|
8
|
+
title: string;
|
|
9
|
+
description: string;
|
|
10
|
+
onCancel?: () => void;
|
|
11
|
+
onConfirm: () => void;
|
|
12
|
+
isLoading?: boolean;
|
|
13
|
+
cancelText?: string;
|
|
14
|
+
confirmText?: string;
|
|
15
|
+
confirmButtonClassName?: string;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Alert dialog component using Dialog component
|
|
19
|
+
*/
|
|
20
|
+
declare const AlertDialog: React.FC<IAlertDialogProps>;
|
|
21
|
+
export { AlertDialog };
|
|
22
|
+
export type { IAlertDialogProps };
|
|
23
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { default as React } from 'react';
|
|
2
1
|
import { default as useEmblaCarousel, UseEmblaCarouselType } from 'embla-carousel-react';
|
|
2
|
+
import { default as React } from 'react';
|
|
3
3
|
import { BaseElementProps } from '../components/withBlockProps';
|
|
4
4
|
import { BaseButtonProps } from './Button';
|
|
5
5
|
type CarouselApi = UseEmblaCarouselType[1];
|
|
@@ -10,10 +10,18 @@ interface CarouselProps extends BaseElementProps {
|
|
|
10
10
|
orientation?: "horizontal" | "vertical";
|
|
11
11
|
setApi?: (api: CarouselApi) => void;
|
|
12
12
|
}
|
|
13
|
+
interface IUseDotButtonType {
|
|
14
|
+
selectedIndex: number;
|
|
15
|
+
scrollSnaps: number[];
|
|
16
|
+
onDotButtonClick: (index: number) => void;
|
|
17
|
+
}
|
|
18
|
+
export declare const useDotButton: (emblaApi: CarouselApi | undefined) => IUseDotButtonType;
|
|
13
19
|
declare const CarouselContent: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
|
|
14
20
|
declare const CarouselItem: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
|
|
15
21
|
declare const CarouselPrevious: React.ForwardRefExoticComponent<BaseButtonProps & React.RefAttributes<HTMLButtonElement>>;
|
|
16
22
|
declare const CarouselNext: React.ForwardRefExoticComponent<BaseButtonProps & React.RefAttributes<HTMLButtonElement>>;
|
|
23
|
+
declare const CarouselDotButton: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, "ref"> & React.RefAttributes<HTMLButtonElement>>;
|
|
24
|
+
declare const CarouselDots: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
|
|
17
25
|
export declare const Carousel: import('../components/withBlockProps').WithBlockPropsComponent<React.HTMLAttributes<HTMLDivElement> & CarouselProps & React.RefAttributes<HTMLDivElement>>;
|
|
18
|
-
export { type CarouselApi, CarouselContent, CarouselItem, CarouselPrevious, CarouselNext, };
|
|
26
|
+
export { type CarouselApi, CarouselContent, CarouselItem, CarouselPrevious, CarouselNext, CarouselDotButton, CarouselDots, };
|
|
19
27
|
//# sourceMappingURL=Carousel.d.ts.map
|
package/dist/elements/Tabs.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Tabs as TabsPrimitive } from 'radix-ui';
|
|
2
2
|
import { BaseElementProps } from '../components/withBlockProps';
|
|
3
|
-
import * as React from "react";
|
|
3
|
+
import type * as React from "react";
|
|
4
4
|
declare const TabsRoot: React.ForwardRefExoticComponent<TabsPrimitive.TabsProps & React.RefAttributes<HTMLDivElement>>;
|
|
5
5
|
type TypeTabsListComponentProps = React.ComponentPropsWithoutRef<typeof TabsPrimitive.List>;
|
|
6
6
|
interface BaseTabsListProps extends BaseElementProps, Omit<TypeTabsListComponentProps, "content"> {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { BaseElementProps } from '../components/withBlockProps';
|
|
2
|
-
import * as React from "react";
|
|
2
|
+
import type * as React from "react";
|
|
3
3
|
export interface BaseUserMenuProps extends React.HTMLAttributes<HTMLDivElement>, Omit<BaseElementProps, "content"> {
|
|
4
4
|
}
|
|
5
5
|
export declare const BaseUserMenu: React.FC<BaseUserMenuProps>;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Accordion as AccordionPrimitive } from 'radix-ui';
|
|
2
2
|
import { BaseElementProps } from '../../components/withBlockProps';
|
|
3
|
-
import * as React from "react";
|
|
3
|
+
import type * as React from "react";
|
|
4
4
|
type TypeAccordionComponentProps = React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Root>;
|
|
5
5
|
interface BaseAccordionRootProps extends BaseElementProps, Omit<TypeAccordionComponentProps, "content"> {
|
|
6
6
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Dialog as DialogPrimitive } from 'radix-ui';
|
|
2
|
-
import * as React from "react";
|
|
2
|
+
import type * as React from "react";
|
|
3
3
|
declare function Dialog({ ...props }: React.ComponentProps<typeof DialogPrimitive.Root>): import("react/jsx-runtime").JSX.Element;
|
|
4
4
|
declare function DialogTrigger({ ...props }: React.ComponentProps<typeof DialogPrimitive.Trigger>): import("react/jsx-runtime").JSX.Element;
|
|
5
5
|
declare function DialogPortal({ ...props }: React.ComponentProps<typeof DialogPrimitive.Portal>): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { IForumPost } from '@levo-so/core';
|
|
2
|
+
import { default as React } from 'react';
|
|
3
|
+
import { IPostActionsLoadingState } from './utility';
|
|
4
|
+
declare const ForumPost: React.FC<{
|
|
5
|
+
post: IForumPost;
|
|
6
|
+
postDetailPageBaseURL?: string | null;
|
|
7
|
+
isRenderedSolo?: boolean;
|
|
8
|
+
actionsLoadingState?: IPostActionsLoadingState;
|
|
9
|
+
forumKey?: string;
|
|
10
|
+
wrapperStyles?: string;
|
|
11
|
+
}>;
|
|
12
|
+
export { ForumPost };
|
|
13
|
+
export declare const PostLinkWrapper: React.FC<{
|
|
14
|
+
post: IForumPost;
|
|
15
|
+
postDetailPageBaseURL?: string | null;
|
|
16
|
+
children: React.ReactNode;
|
|
17
|
+
}>;
|
|
18
|
+
//# sourceMappingURL=ForumPost.d.ts.map
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { IForumPost } from '@levo-so/core';
|
|
2
|
+
import { default as React } from 'react';
|
|
3
|
+
declare const ForumPostContentRenderer: React.FC<{
|
|
4
|
+
post: IForumPost;
|
|
5
|
+
isRenderedSolo?: boolean;
|
|
6
|
+
}>;
|
|
7
|
+
export { ForumPostContentRenderer };
|
|
8
|
+
//# sourceMappingURL=ForumPostContentRenderer.d.ts.map
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export interface ICategoryFilterProps {
|
|
2
|
+
/** The forum key/slug to fetch categories for */
|
|
3
|
+
forumKey: string;
|
|
4
|
+
/** Currently selected category IDs */
|
|
5
|
+
selectedCategories: string[];
|
|
6
|
+
/** Callback when category selection changes */
|
|
7
|
+
onCategoryToggle: (categoryId: string) => void;
|
|
8
|
+
/** Optional className for the container */
|
|
9
|
+
className?: string;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* CategoryFilter displays a list of selectable category pills for filtering forum posts.
|
|
13
|
+
* Fetches categories from the API and renders them as toggleable buttons.
|
|
14
|
+
*/
|
|
15
|
+
export declare const CategoryFilter: React.FC<ICategoryFilterProps>;
|
|
16
|
+
//# sourceMappingURL=CategoryFilter.d.ts.map
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { IComment, ICommentsUserEngagement, IForumPost } from '@levo-so/core';
|
|
2
|
+
import { default as React } from 'react';
|
|
3
|
+
declare const Comment: React.FC<{
|
|
4
|
+
post: IForumPost;
|
|
5
|
+
comment: IComment;
|
|
6
|
+
isRoot?: boolean;
|
|
7
|
+
index?: number;
|
|
8
|
+
forumKey: string;
|
|
9
|
+
onChildReplyAdded?: () => void;
|
|
10
|
+
userEngagementHashMap?: Record<string, ICommentsUserEngagement>;
|
|
11
|
+
setUserEngagementHashMap?: React.Dispatch<React.SetStateAction<Record<string, ICommentsUserEngagement>>>;
|
|
12
|
+
}>;
|
|
13
|
+
export default Comment;
|
|
14
|
+
//# sourceMappingURL=Comment.d.ts.map
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { IForumPost } from '@levo-so/core';
|
|
2
|
+
import { default as React } from 'react';
|
|
3
|
+
declare const Comments: React.FC<{
|
|
4
|
+
forumKey: string;
|
|
5
|
+
post: IForumPost;
|
|
6
|
+
onCommentCountChange?: (delta: number) => void;
|
|
7
|
+
}>;
|
|
8
|
+
export { Comments };
|
|
9
|
+
//# sourceMappingURL=Comments.d.ts.map
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { IComment, IForumPost } from '@levo-so/core';
|
|
2
|
+
import { default as React } from 'react';
|
|
3
|
+
declare const ReplyBox: React.FC<{
|
|
4
|
+
post: IForumPost;
|
|
5
|
+
parentCommentId?: string | null;
|
|
6
|
+
isParent?: boolean;
|
|
7
|
+
onCommentAdded?: (comment: IComment) => void;
|
|
8
|
+
forumKey: string;
|
|
9
|
+
}>;
|
|
10
|
+
export default ReplyBox;
|
|
11
|
+
//# sourceMappingURL=ReplyBox.d.ts.map
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { IComment, ICommentsUserEngagement, IForumPost } from '@levo-so/core';
|
|
2
|
+
import { default as React } from 'react';
|
|
3
|
+
export declare const CommentAvatar: React.FC<{
|
|
4
|
+
comment: IComment;
|
|
5
|
+
avatarStyles?: string;
|
|
6
|
+
}>;
|
|
7
|
+
export declare const CommentAuthorInfo: React.FC<{
|
|
8
|
+
comment: IComment;
|
|
9
|
+
}>;
|
|
10
|
+
declare const CommentHeader: React.FC<{
|
|
11
|
+
comment: IComment;
|
|
12
|
+
}>;
|
|
13
|
+
declare const CommentAction: React.FC<{
|
|
14
|
+
post: IForumPost;
|
|
15
|
+
comment: IComment;
|
|
16
|
+
replyCount?: number;
|
|
17
|
+
onReplyAdded?: (reply: IComment) => void;
|
|
18
|
+
onToggleReplies?: () => void;
|
|
19
|
+
forumKey: string;
|
|
20
|
+
showReplyBox?: boolean;
|
|
21
|
+
userEngagementHashMap?: Record<string, ICommentsUserEngagement>;
|
|
22
|
+
setUserEngagementHashMap?: React.Dispatch<React.SetStateAction<Record<string, ICommentsUserEngagement>>>;
|
|
23
|
+
}>;
|
|
24
|
+
export { CommentAction, CommentHeader };
|
|
25
|
+
//# sourceMappingURL=commentUtility.d.ts.map
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { IForumPost } from '@levo-so/core';
|
|
2
|
+
import { default as React } from 'react';
|
|
3
|
+
interface ICreateForumPostProps {
|
|
4
|
+
forumKey: string;
|
|
5
|
+
onPostCreated?: (post: IForumPost) => void;
|
|
6
|
+
}
|
|
7
|
+
declare const CreateForumPost: React.FC<ICreateForumPostProps>;
|
|
8
|
+
export { CreateForumPost };
|
|
9
|
+
//# sourceMappingURL=CreateForumPost.d.ts.map
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { IForumPost } from '@levo-so/core';
|
|
2
|
+
import { default as React } from 'react';
|
|
3
|
+
declare const CreateForumPostModal: React.FC<{
|
|
4
|
+
children?: React.ReactNode;
|
|
5
|
+
triggerContainerStyles?: string;
|
|
6
|
+
useCustomOpenState?: boolean;
|
|
7
|
+
isOpen?: boolean;
|
|
8
|
+
handleCreateForumPostModalOpen?: (open: boolean) => void;
|
|
9
|
+
isCreateForumPostModalReady?: boolean;
|
|
10
|
+
forumKey: string;
|
|
11
|
+
onSuccess?: (post: IForumPost) => void;
|
|
12
|
+
onClose?: () => void;
|
|
13
|
+
mode?: "create" | "edit";
|
|
14
|
+
initialValues?: IForumPost;
|
|
15
|
+
}>;
|
|
16
|
+
export default CreateForumPostModal;
|
|
17
|
+
/**
|
|
18
|
+
* PostAsSelector - Commented out for future use
|
|
19
|
+
* This component was previously used to select whether to post as yourself or as the workspace.
|
|
20
|
+
*
|
|
21
|
+
* interface IPostAsSelectorProps {
|
|
22
|
+
* postAs: "myself" | "workspace";
|
|
23
|
+
* setPostAs: (value: "myself" | "workspace") => void;
|
|
24
|
+
* isPostAsOpen: boolean;
|
|
25
|
+
* setIsPostAsOpen: (open: boolean) => void;
|
|
26
|
+
* workspace?: { name?: string };
|
|
27
|
+
* }
|
|
28
|
+
*
|
|
29
|
+
* const PostAsSelector: React.FC<IPostAsSelectorProps> = ({
|
|
30
|
+
* postAs,
|
|
31
|
+
* setPostAs,
|
|
32
|
+
* isPostAsOpen,
|
|
33
|
+
* setIsPostAsOpen,
|
|
34
|
+
* workspace,
|
|
35
|
+
* }) => {
|
|
36
|
+
* const postAsOptions = [
|
|
37
|
+
* { label: "Myself", value: "myself" },
|
|
38
|
+
* { label: workspace?.name || "Workspace", value: "workspace" },
|
|
39
|
+
* ];
|
|
40
|
+
*
|
|
41
|
+
* return (
|
|
42
|
+
* <div className="flex items-center gap-2">
|
|
43
|
+
* <p className="text-text-1 text-sm font-medium">Post as</p>
|
|
44
|
+
* <PopoverRoot open={isPostAsOpen} onOpenChange={setIsPostAsOpen}>
|
|
45
|
+
* <PopoverTrigger elementKey="post-as-trigger" asChild>
|
|
46
|
+
* <button
|
|
47
|
+
* autoFocus={false}
|
|
48
|
+
* className="flex items-center gap-1.5 rounded-md border border-[#D1D6E1] bg-white px-3 py-1.5 text-sm font-medium transition-colors hover:bg-gray-50"
|
|
49
|
+
* >
|
|
50
|
+
* <span className="text-text-1">
|
|
51
|
+
* {postAsOptions.find((opt) => opt.value === postAs)?.label}
|
|
52
|
+
* </span>
|
|
53
|
+
* <ChevronDown className="text-text-2 size-4" />
|
|
54
|
+
* </button>
|
|
55
|
+
* </PopoverTrigger>
|
|
56
|
+
* <PopoverContent
|
|
57
|
+
* elementKey="post-as-content"
|
|
58
|
+
* align="start"
|
|
59
|
+
* className="!w-[unset] min-w-36 rounded-lg border border-gray-200 bg-white !p-1 shadow-lg"
|
|
60
|
+
* >
|
|
61
|
+
* {postAsOptions.map((option) => (
|
|
62
|
+
* <button
|
|
63
|
+
* key={option.value}
|
|
64
|
+
* onClick={() => {
|
|
65
|
+
* setPostAs(option.value as "myself" | "workspace");
|
|
66
|
+
* setIsPostAsOpen(false);
|
|
67
|
+
* }}
|
|
68
|
+
* className={cn(
|
|
69
|
+
* "flex w-full cursor-pointer items-center justify-between rounded-md px-3 py-2 text-left text-sm transition-colors hover:bg-gray-100",
|
|
70
|
+
* postAs === option.value
|
|
71
|
+
* ? "text-text-1 font-medium"
|
|
72
|
+
* : "text-text-2",
|
|
73
|
+
* )}
|
|
74
|
+
* >
|
|
75
|
+
* <span>{option.label}</span>
|
|
76
|
+
* {postAs === option.value && (
|
|
77
|
+
* <Check className="text-brand size-4" />
|
|
78
|
+
* )}
|
|
79
|
+
* </button>
|
|
80
|
+
* ))}
|
|
81
|
+
* </PopoverContent>
|
|
82
|
+
* </PopoverRoot>
|
|
83
|
+
* </div>
|
|
84
|
+
* );
|
|
85
|
+
* };
|
|
86
|
+
*/
|
|
87
|
+
//# sourceMappingURL=CreateForumPostModal.d.ts.map
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export * from './categoryFilter';
|
|
2
|
+
export * from './comments';
|
|
3
|
+
export * from './createForumPost';
|
|
4
|
+
export * from './ForumPost';
|
|
5
|
+
export * from './restrictionOverlays';
|
|
6
|
+
export * from './SearchInput';
|
|
7
|
+
export * from './utility';
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
/** Sample comment skeleton for background display */
|
|
3
|
+
declare const SampleCommentSkeleton: React.FC<{
|
|
4
|
+
opacity?: number;
|
|
5
|
+
}>;
|
|
6
|
+
interface ICommentsRestrictionOverlayProps {
|
|
7
|
+
communityName?: string;
|
|
8
|
+
className?: string;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Absolutely positioned overlay shown over comments section
|
|
12
|
+
* when non-member cannot view comments in invite-only community
|
|
13
|
+
*/
|
|
14
|
+
declare const CommentsRestrictionOverlay: React.FC<ICommentsRestrictionOverlayProps>;
|
|
15
|
+
export { CommentsRestrictionOverlay, SampleCommentSkeleton };
|
|
16
|
+
//# sourceMappingURL=CommentsRestrictionOverlay.d.ts.map
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
interface IJoinRequestFormProps {
|
|
3
|
+
onSubmit: (message?: string) => Promise<boolean>;
|
|
4
|
+
isSubmitting: boolean;
|
|
5
|
+
error: string | null;
|
|
6
|
+
communityName?: string;
|
|
7
|
+
className?: string;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Form for submitting a join request to an invite-only community
|
|
11
|
+
*/
|
|
12
|
+
declare const JoinRequestForm: React.FC<IJoinRequestFormProps>;
|
|
13
|
+
export { JoinRequestForm };
|
|
14
|
+
//# sourceMappingURL=JoinRequestForm.d.ts.map
|