@marvalt/digivalt-core 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +17 -0
- package/LICENSE +21 -0
- package/README.md +13 -0
- package/dist/components/WordPressFooter.d.ts +17 -0
- package/dist/components/index.d.ts +9 -0
- package/dist/components/integrations/chatwoot-widget.d.ts +51 -0
- package/dist/components/integrations/mautic-tracking.d.ts +9 -0
- package/dist/components/molecules/CaseStudyCard.d.ts +10 -0
- package/dist/components/molecules/DynamicHeroSection.d.ts +56 -0
- package/dist/components/molecules/MemberCard.d.ts +12 -0
- package/dist/components/molecules/NavMenu.d.ts +13 -0
- package/dist/components/molecules/ProjectCard.d.ts +10 -0
- package/dist/components/molecules/SearchForm.d.ts +7 -0
- package/dist/components/molecules/TestimonialCard/TestimonialCard.d.ts +7 -0
- package/dist/components/molecules/WordPressNavMenu.d.ts +25 -0
- package/dist/components/molecules/breadcrumbs.d.ts +17 -0
- package/dist/components/molecules/hero-section.d.ts +41 -0
- package/dist/components/organisms/GravityFormPopup/GravityFormPopup.d.ts +8 -0
- package/dist/components/organisms/GravityFormSubmissions/GravityFormSubmissionsComponent.d.ts +9 -0
- package/dist/components/organisms/GravityFormSubmissions/index.d.ts +1 -0
- package/dist/components/organisms/Header.d.ts +6 -0
- package/dist/components/organisms/Hero.d.ts +2 -0
- package/dist/components/organisms/MauticForm/MauticForm.d.ts +9 -0
- package/dist/components/organisms/MauticForm/ThemedMauticForm.d.ts +9 -0
- package/dist/components/organisms/MauticForm/index.d.ts +1 -0
- package/dist/components/organisms/MauticFormPopup/MauticFormPopup.d.ts +9 -0
- package/dist/components/organisms/MemberProfileDialog.d.ts +9 -0
- package/dist/components/organisms/StaticGravityForm/StaticGravityForm.d.ts +40 -0
- package/dist/components/organisms/StaticGravityForm/index.d.ts +2 -0
- package/dist/components/organisms/SuiteCRMLeadForm/SuiteCRMLeadForm.d.ts +12 -0
- package/dist/components/organisms/SuiteCRMLeadForm/index.d.ts +2 -0
- package/dist/config/app-customization.d.ts +92 -0
- package/dist/config/environment.d.ts +69 -0
- package/dist/config/index.d.ts +2 -0
- package/dist/config/integrations.d.ts +234 -0
- package/dist/config/themes.d.ts +30 -0
- package/dist/config/widths.d.ts +47 -0
- package/dist/data/gravityFormsDataStore.d.ts +83 -0
- package/dist/data/mauticDataStore.d.ts +17 -0
- package/dist/data/mauticDataStoreTest.d.ts +48 -0
- package/dist/data/staticDataStore.d.ts +280 -0
- package/dist/data/staticDataStore.local.d.ts +251 -0
- package/dist/data/staticDataStoreProduction.d.ts +3 -0
- package/dist/data/wordpressDataStore.d.ts +117 -0
- package/dist/generators/gf.d.ts +3 -0
- package/dist/generators/index.d.ts +5 -0
- package/dist/generators/mautic.d.ts +3 -0
- package/dist/generators/suitecrm.d.ts +3 -0
- package/dist/generators/wp.d.ts +3 -0
- package/dist/hooks/use-mobile.d.ts +1 -0
- package/dist/hooks/use-toast.d.ts +43 -0
- package/dist/hooks/useCaseStudies.d.ts +30 -0
- package/dist/hooks/useCfWpWebhook.d.ts +29 -0
- package/dist/hooks/useCustomization.d.ts +71 -0
- package/dist/hooks/useGravityForms.d.ts +50 -0
- package/dist/hooks/useGravityFormsNew.d.ts +27 -0
- package/dist/hooks/useGravityFormsSubmissions.d.ts +15 -0
- package/dist/hooks/useMautic.d.ts +36 -0
- package/dist/hooks/useMembers.d.ts +31 -0
- package/dist/hooks/useProjects.d.ts +30 -0
- package/dist/hooks/useSuiteCRM.d.ts +72 -0
- package/dist/hooks/useTestimonials.d.ts +12 -0
- package/dist/hooks/useWordPressData.d.ts +115 -0
- package/dist/hooks/useWordPressDataNew.d.ts +77 -0
- package/dist/index.cjs +10433 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +1352 -0
- package/dist/index.esm.js +10404 -0
- package/dist/index.esm.js.map +1 -0
- package/dist/lib/structured-data.d.ts +49 -0
- package/dist/lib/utils.d.ts +42 -0
- package/dist/services/cf-wp-webhook.d.ts +79 -0
- package/dist/services/gravityForms.d.ts +26 -0
- package/dist/services/index.d.ts +5 -0
- package/dist/services/mautic.d.ts +82 -0
- package/dist/services/suitecrm.d.ts +98 -0
- package/dist/services/wordpress.d.ts +1 -0
- package/dist/static/wpStatic.d.ts +189 -0
- package/dist/types/caseStudies.d.ts +92 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/members.d.ts +85 -0
- package/dist/types/projects.d.ts +90 -0
- package/dist/types/wordpress.d.ts +132 -0
- package/dist/utils/cfImages.d.ts +21 -0
- package/dist/utils/eventStaticData.d.ts +11 -0
- package/dist/utils/extractDescriptionFromContent.d.ts +12 -0
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/mauticTrackingUtils.d.ts +78 -0
- package/dist/utils/memberImageUtils.d.ts +4 -0
- package/dist/utils/memberStaticData.d.ts +11 -0
- package/dist/utils/normalizeMemberForProfile.d.ts +10 -0
- package/dist/utils/passwordUtils.d.ts +24 -0
- package/dist/utils/placeholderReplacer.d.ts +34 -0
- package/dist/utils/testimonialStaticData.d.ts +12 -0
- package/dist/utils/wpRegistry.d.ts +13 -0
- package/package.json +69 -0
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project will be documented in this file.
|
|
4
|
+
|
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
+
|
|
8
|
+
## [0.1.0] - Initial Release
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
- Initial scaffolding of `@marvalt/digivalt-core` NPM package
|
|
12
|
+
- Ported static data generation and environment configuration from `digivalt-core-v1`
|
|
13
|
+
- Integrated runtime logic and service adapters (`suitecrm`, `mautic`, `wordpress`, `gravityForms`)
|
|
14
|
+
- Consolidated dynamic hooks (`useCaseStudies`, `useMautic`, `useSuiteCRM`, `useWordPressData`, etc.)
|
|
15
|
+
- Exported base UI organisms and molecule components configured to work with the overarching app Shadcn UI elements
|
|
16
|
+
- Complete configuration for Rollup CJS and ESM module exports
|
|
17
|
+
- Flexible dynamic typings allowing interoperable generic interfaces for Lovable consumers
|
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 The ViBuNe
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# @marvalt/digivalt-core
|
|
2
|
+
|
|
3
|
+
Core logic and shared context for DigiVAlt frontend applications.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install @marvalt/digivalt-core
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Overview
|
|
12
|
+
This package contains the shared "glue" code that unifies WordPress headless configurations, Mautic connections, Cloudflare setup, and form integrations for DigiValt static-first applications.
|
|
13
|
+
It makes it easy to convert any standard React/Vite app into a full DigiVAlt implementation.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
interface WordPressFooterProps {
|
|
3
|
+
fallback?: React.ReactNode;
|
|
4
|
+
className?: string;
|
|
5
|
+
onFooterStatusChange?: (hasFooter: boolean) => void;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* WordPressFooter - Renders footer from WordPress template part
|
|
9
|
+
*
|
|
10
|
+
* This component:
|
|
11
|
+
* - Loads WordPress static data
|
|
12
|
+
* - Fetches footer template part blocks
|
|
13
|
+
* - Renders using WPPage component from wparser
|
|
14
|
+
* - Applies custom colors using existing color extraction logic
|
|
15
|
+
*/
|
|
16
|
+
export declare const WordPressFooter: React.FC<WordPressFooterProps>;
|
|
17
|
+
export {};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export * from './integrations/chatwoot-widget';
|
|
2
|
+
export * from './integrations/mautic-tracking';
|
|
3
|
+
export * from './WordPressFooter';
|
|
4
|
+
export * from './organisms/StaticGravityForm';
|
|
5
|
+
export * from './organisms/MauticForm';
|
|
6
|
+
export * from './organisms/MauticFormPopup/MauticFormPopup';
|
|
7
|
+
export * from './organisms/GravityFormPopup/GravityFormPopup';
|
|
8
|
+
export * from './molecules/DynamicHeroSection';
|
|
9
|
+
export * from './molecules/WordPressNavMenu';
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
interface ChatwootConfig {
|
|
3
|
+
websiteToken: string;
|
|
4
|
+
baseUrl?: string;
|
|
5
|
+
locale?: string;
|
|
6
|
+
type?: 'standard' | 'expanded_bubble';
|
|
7
|
+
launcherTitle?: string;
|
|
8
|
+
hideMessageBubble?: boolean;
|
|
9
|
+
position?: 'left' | 'right';
|
|
10
|
+
showPopoutButton?: boolean;
|
|
11
|
+
}
|
|
12
|
+
interface ChatwootWidgetProps {
|
|
13
|
+
config: ChatwootConfig;
|
|
14
|
+
enabled?: boolean;
|
|
15
|
+
className?: string;
|
|
16
|
+
}
|
|
17
|
+
interface ChatwootWidgetRef {
|
|
18
|
+
toggle: () => void;
|
|
19
|
+
show: () => void;
|
|
20
|
+
hide: () => void;
|
|
21
|
+
reset: () => void;
|
|
22
|
+
}
|
|
23
|
+
declare global {
|
|
24
|
+
interface Window {
|
|
25
|
+
chatwootSettings: {
|
|
26
|
+
hideMessageBubble?: boolean;
|
|
27
|
+
position?: 'left' | 'right';
|
|
28
|
+
locale?: string;
|
|
29
|
+
type?: 'standard' | 'expanded_bubble';
|
|
30
|
+
launcherTitle?: string;
|
|
31
|
+
showPopoutButton?: boolean;
|
|
32
|
+
};
|
|
33
|
+
chatwootSDK: {
|
|
34
|
+
run: (config: any) => void;
|
|
35
|
+
toggle: () => void;
|
|
36
|
+
show: () => void;
|
|
37
|
+
hide: () => void;
|
|
38
|
+
reset: () => void;
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
export declare const ChatwootWidget: React.ForwardRefExoticComponent<ChatwootWidgetProps & React.RefAttributes<ChatwootWidgetRef>>;
|
|
43
|
+
export declare const useChatwoot: () => {
|
|
44
|
+
isLoaded: boolean;
|
|
45
|
+
toggle: () => void;
|
|
46
|
+
show: () => void;
|
|
47
|
+
hide: () => void;
|
|
48
|
+
reset: () => void;
|
|
49
|
+
};
|
|
50
|
+
export declare const defaultChatwootConfig: ChatwootConfig;
|
|
51
|
+
export {};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { WordPressCaseStudy } from '../../types/caseStudies';
|
|
3
|
+
interface CaseStudyCardProps {
|
|
4
|
+
caseStudy: WordPressCaseStudy;
|
|
5
|
+
onViewCaseStudy?: (caseStudy: WordPressCaseStudy) => void;
|
|
6
|
+
/** Optional: Override className */
|
|
7
|
+
className?: string;
|
|
8
|
+
}
|
|
9
|
+
declare const CaseStudyCard: React.FC<CaseStudyCardProps>;
|
|
10
|
+
export default CaseStudyCard;
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { type WordPressBlock, type ComponentRegistry } from '@marvalt/wparser';
|
|
3
|
+
export interface DynamicHeroSectionProps {
|
|
4
|
+
/** Background image URL (will be converted to Cloudflare variant) */
|
|
5
|
+
backgroundImage?: string | null;
|
|
6
|
+
/** Main heading/title (can be string or React node for shortcode support) */
|
|
7
|
+
title?: string | React.ReactNode | null;
|
|
8
|
+
/** Subtitle/description text (can be string or React node for shortcode support) */
|
|
9
|
+
subtitle?: string | React.ReactNode | null;
|
|
10
|
+
/** Button configuration */
|
|
11
|
+
buttons?: Array<{
|
|
12
|
+
text: string;
|
|
13
|
+
url: string;
|
|
14
|
+
isExternal?: boolean;
|
|
15
|
+
}>;
|
|
16
|
+
/** Video iframe HTML (for embedding videos) */
|
|
17
|
+
videoIframe?: string | null;
|
|
18
|
+
/** Overlay opacity (0-100) */
|
|
19
|
+
overlayOpacity?: number;
|
|
20
|
+
/** Overlay color (hex, rgb, or CSS color value) */
|
|
21
|
+
overlayColor?: string | null;
|
|
22
|
+
/** Minimum height (e.g., "100vh", "840px") */
|
|
23
|
+
minHeight?: string;
|
|
24
|
+
/** Content alignment - controls WHERE the container is positioned (from contentPosition) */
|
|
25
|
+
contentAlign?: 'left' | 'center' | 'right';
|
|
26
|
+
/** Text alignment - controls how text is aligned WITHIN the container (from textAlign attributes) */
|
|
27
|
+
textAlign?: 'left' | 'center' | 'right';
|
|
28
|
+
/** Vertical alignment */
|
|
29
|
+
verticalAlign?: 'top' | 'center' | 'bottom';
|
|
30
|
+
/** WordPress block alignment: 'wide', 'full', or undefined/null (None/default) */
|
|
31
|
+
align?: 'wide' | 'full' | null;
|
|
32
|
+
/** Text color class for title (e.g., 'text-white', 'text-[#eb8900]') */
|
|
33
|
+
titleTextColor?: string | null;
|
|
34
|
+
/** Optional Gravity Form ID to render inline within the hero */
|
|
35
|
+
gravityFormId?: string | number | null;
|
|
36
|
+
/** Whether cover block has columns structure - if true, render innerBlocks using registry */
|
|
37
|
+
hasColumns?: boolean;
|
|
38
|
+
/** Inner blocks to render when hasColumns is true */
|
|
39
|
+
innerBlocks?: WordPressBlock[];
|
|
40
|
+
/** Registry for rendering blocks when hasColumns is true */
|
|
41
|
+
registry?: ComponentRegistry;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Dynamic Hero Section component that accepts props from WordPress blocks
|
|
45
|
+
*
|
|
46
|
+
* This component is designed to work with WordPress cover blocks, extracting
|
|
47
|
+
* content from innerBlocks and rendering with app-controlled CSS.
|
|
48
|
+
*
|
|
49
|
+
* Content managers can control:
|
|
50
|
+
* - Vertical alignment via contentPosition in WordPress (top, center, bottom)
|
|
51
|
+
* - Horizontal alignment via contentPosition or textAlign in WordPress
|
|
52
|
+
* - Background image, overlay opacity, min height
|
|
53
|
+
* - Title, subtitle, buttons, video
|
|
54
|
+
*/
|
|
55
|
+
declare const DynamicHeroSection: React.FC<DynamicHeroSectionProps>;
|
|
56
|
+
export default DynamicHeroSection;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { WordPressMember } from '../../types/members';
|
|
3
|
+
interface MemberCardProps {
|
|
4
|
+
member: WordPressMember;
|
|
5
|
+
onViewProfile?: (member: WordPressMember) => void;
|
|
6
|
+
/** Optional: Override className */
|
|
7
|
+
className?: string;
|
|
8
|
+
/** Optional: Override title font size */
|
|
9
|
+
titleSize?: string;
|
|
10
|
+
}
|
|
11
|
+
declare const MemberCard: React.FC<MemberCardProps>;
|
|
12
|
+
export default MemberCard;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @deprecated This component is deprecated. Use WordPressNavMenu instead.
|
|
3
|
+
*
|
|
4
|
+
* This component is preserved for reference. The new WordPressNavMenu component
|
|
5
|
+
* automatically generates navigation from WordPress page hierarchy.
|
|
6
|
+
*
|
|
7
|
+
* To migrate:
|
|
8
|
+
* 1. Replace <NavMenu /> with <WordPressNavMenu />
|
|
9
|
+
* 2. Create pages in WordPress to control menu structure
|
|
10
|
+
* 3. This file can be removed after migration is complete
|
|
11
|
+
*/
|
|
12
|
+
import React from 'react';
|
|
13
|
+
export declare const NavMenu: React.FC;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { WordPressProject } from '../../types/projects';
|
|
3
|
+
interface ProjectCardProps {
|
|
4
|
+
project: WordPressProject;
|
|
5
|
+
onViewProject?: (project: WordPressProject) => void;
|
|
6
|
+
/** Optional: Override className */
|
|
7
|
+
className?: string;
|
|
8
|
+
}
|
|
9
|
+
declare const ProjectCard: React.FC<ProjectCardProps>;
|
|
10
|
+
export default ProjectCard;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
interface WordPressNavMenuProps {
|
|
3
|
+
className?: string;
|
|
4
|
+
textColor?: 'light' | 'dark';
|
|
5
|
+
/** Optional: Override fontSize (uses CSS variable by default) */
|
|
6
|
+
fontSize?: string;
|
|
7
|
+
/** Optional: Override fontWeight (uses CSS variable by default) */
|
|
8
|
+
fontWeight?: string;
|
|
9
|
+
/** Optional: Specific menu ID to use (if not provided, uses header menu) */
|
|
10
|
+
menuId?: number;
|
|
11
|
+
/** Layout direction: 'horizontal' for header, 'vertical' for footer */
|
|
12
|
+
layout?: 'horizontal' | 'vertical';
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* WordPressNavMenu - Navigation menu from WordPress header template part
|
|
16
|
+
*
|
|
17
|
+
* Priority:
|
|
18
|
+
* 1. Uses navigation menu from WordPress header template part (if available)
|
|
19
|
+
* 2. Falls back to page hierarchy-based menu (all published pages)
|
|
20
|
+
*
|
|
21
|
+
* This allows content teams to control menu items via WordPress Appearance > Menus,
|
|
22
|
+
* while still supporting automatic menu generation from page hierarchy as fallback.
|
|
23
|
+
*/
|
|
24
|
+
export declare const WordPressNavMenu: React.FC<WordPressNavMenuProps>;
|
|
25
|
+
export {};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
interface BreadcrumbItem {
|
|
3
|
+
label: string;
|
|
4
|
+
href: string;
|
|
5
|
+
current?: boolean;
|
|
6
|
+
}
|
|
7
|
+
interface BreadcrumbsProps {
|
|
8
|
+
items?: BreadcrumbItem[];
|
|
9
|
+
className?: string;
|
|
10
|
+
showHome?: boolean;
|
|
11
|
+
homeLabel?: string;
|
|
12
|
+
separator?: React.ReactNode;
|
|
13
|
+
maxItems?: number;
|
|
14
|
+
}
|
|
15
|
+
export declare const Breadcrumbs: React.FC<BreadcrumbsProps>;
|
|
16
|
+
export declare const useBreadcrumbs: (customItems?: BreadcrumbItem[]) => BreadcrumbItem[];
|
|
17
|
+
export {};
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
interface HeroSectionProps {
|
|
3
|
+
title: string;
|
|
4
|
+
subtitle?: string;
|
|
5
|
+
description?: string;
|
|
6
|
+
primaryAction?: {
|
|
7
|
+
label: string;
|
|
8
|
+
href: string;
|
|
9
|
+
variant?: 'default' | 'outline' | 'secondary';
|
|
10
|
+
};
|
|
11
|
+
secondaryAction?: {
|
|
12
|
+
label: string;
|
|
13
|
+
href: string;
|
|
14
|
+
variant?: 'default' | 'outline' | 'secondary';
|
|
15
|
+
};
|
|
16
|
+
image?: {
|
|
17
|
+
src: string;
|
|
18
|
+
alt: string;
|
|
19
|
+
};
|
|
20
|
+
video?: {
|
|
21
|
+
src: string;
|
|
22
|
+
poster?: string;
|
|
23
|
+
};
|
|
24
|
+
layout?: 'left' | 'right' | 'center' | 'split';
|
|
25
|
+
theme?: 'light' | 'dark' | 'gradient';
|
|
26
|
+
backgroundImage?: string;
|
|
27
|
+
stats?: Array<{
|
|
28
|
+
value: string;
|
|
29
|
+
label: string;
|
|
30
|
+
}>;
|
|
31
|
+
badges?: Array<{
|
|
32
|
+
text: string;
|
|
33
|
+
icon?: React.ReactNode;
|
|
34
|
+
}>;
|
|
35
|
+
className?: string;
|
|
36
|
+
}
|
|
37
|
+
export declare const HeroSection: React.FC<HeroSectionProps>;
|
|
38
|
+
export declare const HomeHero: React.FC<Omit<HeroSectionProps, 'layout' | 'theme'>>;
|
|
39
|
+
export declare const ServiceHero: React.FC<Omit<HeroSectionProps, 'layout' | 'theme'>>;
|
|
40
|
+
export declare const ProductHero: React.FC<Omit<HeroSectionProps, 'layout' | 'theme'>>;
|
|
41
|
+
export {};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { GravityFormEntry, GravityFormSubmissionResponse } from '../../../services/gravityForms';
|
|
3
|
+
interface GravityFormSubmissionsComponentProps {
|
|
4
|
+
form: GravityForm;
|
|
5
|
+
onSubmit: (entry: GravityFormEntry) => Promise<GravityFormSubmissionResponse>;
|
|
6
|
+
className?: string;
|
|
7
|
+
}
|
|
8
|
+
export declare const GravityFormSubmissionsComponent: React.FC<GravityFormSubmissionsComponentProps>;
|
|
9
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { GravityFormSubmissionsComponent } from './GravityFormSubmissionsComponent';
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export interface ThemedMauticFormProps {
|
|
3
|
+
formId: string;
|
|
4
|
+
title?: string;
|
|
5
|
+
description?: string;
|
|
6
|
+
className?: string;
|
|
7
|
+
}
|
|
8
|
+
export declare const ThemedMauticForm: React.FC<ThemedMauticFormProps>;
|
|
9
|
+
export default ThemedMauticForm;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { ThemedMauticForm as MauticForm } from './ThemedMauticForm';
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { WordPressMember } from '../../types/members';
|
|
3
|
+
interface MemberProfileDialogProps {
|
|
4
|
+
member: WordPressMember | null;
|
|
5
|
+
open: boolean;
|
|
6
|
+
onOpenChange: (open: boolean) => void;
|
|
7
|
+
}
|
|
8
|
+
declare const MemberProfileDialog: React.FC<MemberProfileDialogProps>;
|
|
9
|
+
export default MemberProfileDialog;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* StaticGravityForm Component
|
|
3
|
+
*
|
|
4
|
+
* Renders Gravity Forms using static data (from /gravity-forms-data.json)
|
|
5
|
+
* and only uses API calls for form submission.
|
|
6
|
+
*
|
|
7
|
+
* This component separates form rendering (static) from form submission (API),
|
|
8
|
+
* ensuring forms always render from static data regardless of connection type.
|
|
9
|
+
*/
|
|
10
|
+
import React from 'react';
|
|
11
|
+
import type { GravityFormsConfig, GravityFormSubmissionResult } from '@marvalt/wadapter';
|
|
12
|
+
declare global {
|
|
13
|
+
interface Window {
|
|
14
|
+
turnstile: {
|
|
15
|
+
render: (container: string | HTMLElement, options: {
|
|
16
|
+
sitekey: string;
|
|
17
|
+
action?: string;
|
|
18
|
+
cData?: string;
|
|
19
|
+
callback?: (token: string) => void;
|
|
20
|
+
'error-callback'?: () => void;
|
|
21
|
+
'expired-callback'?: () => void;
|
|
22
|
+
theme?: 'light' | 'dark' | 'auto';
|
|
23
|
+
size?: 'normal' | 'compact';
|
|
24
|
+
tabindex?: number;
|
|
25
|
+
}) => string;
|
|
26
|
+
reset: (widgetId: string) => void;
|
|
27
|
+
remove: (widgetId: string) => void;
|
|
28
|
+
getResponse: (widgetId: string) => string | undefined;
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
interface StaticGravityFormProps {
|
|
33
|
+
formId: number | string;
|
|
34
|
+
config: GravityFormsConfig;
|
|
35
|
+
className?: string;
|
|
36
|
+
onSubmit?: (result: GravityFormSubmissionResult) => void;
|
|
37
|
+
onError?: (error: Error) => void;
|
|
38
|
+
}
|
|
39
|
+
export declare const StaticGravityForm: React.FC<StaticGravityFormProps>;
|
|
40
|
+
export default StaticGravityForm;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export interface SuiteCRMLeadFormProps {
|
|
3
|
+
className?: string;
|
|
4
|
+
title?: string;
|
|
5
|
+
description?: string;
|
|
6
|
+
leadSource?: string;
|
|
7
|
+
campaign?: string;
|
|
8
|
+
successMessage?: string;
|
|
9
|
+
onSuccess?: (data: any) => void;
|
|
10
|
+
onError?: (error: Error) => void;
|
|
11
|
+
}
|
|
12
|
+
export declare const SuiteCRMLeadForm: React.FC<SuiteCRMLeadFormProps>;
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Application Customization Configuration
|
|
3
|
+
*
|
|
4
|
+
* Fork developers should ONLY modify this file (or create customization.json)
|
|
5
|
+
* for styling customizations. All other component code should remain untouched
|
|
6
|
+
* for upstream compatibility.
|
|
7
|
+
*
|
|
8
|
+
* Priority order:
|
|
9
|
+
* 1. customization.json file (if exists) - highest priority
|
|
10
|
+
* 2. Environment variables
|
|
11
|
+
* 3. Default values in this file
|
|
12
|
+
*/
|
|
13
|
+
export interface ComponentCustomization {
|
|
14
|
+
className?: string;
|
|
15
|
+
fontSize?: string;
|
|
16
|
+
fontWeight?: string;
|
|
17
|
+
fontFamily?: string;
|
|
18
|
+
textColor?: string;
|
|
19
|
+
backgroundColor?: string;
|
|
20
|
+
padding?: string;
|
|
21
|
+
gap?: string;
|
|
22
|
+
[key: string]: any;
|
|
23
|
+
}
|
|
24
|
+
export interface AppCustomizationConfig {
|
|
25
|
+
typography: {
|
|
26
|
+
menu: {
|
|
27
|
+
fontSize: string;
|
|
28
|
+
fontWeight: string;
|
|
29
|
+
lineHeight: string;
|
|
30
|
+
fontFamily?: string;
|
|
31
|
+
};
|
|
32
|
+
card: {
|
|
33
|
+
titleSize: string;
|
|
34
|
+
bodySize: string;
|
|
35
|
+
fontWeight?: string;
|
|
36
|
+
};
|
|
37
|
+
hero: {
|
|
38
|
+
titleSize: string;
|
|
39
|
+
subtitleSize: string;
|
|
40
|
+
titleWeight?: string;
|
|
41
|
+
};
|
|
42
|
+
};
|
|
43
|
+
colors: {
|
|
44
|
+
menu: {
|
|
45
|
+
text: string;
|
|
46
|
+
textHover: string;
|
|
47
|
+
textActive: string;
|
|
48
|
+
background: string;
|
|
49
|
+
};
|
|
50
|
+
card: {
|
|
51
|
+
background: string;
|
|
52
|
+
border: string;
|
|
53
|
+
text: string;
|
|
54
|
+
titleColor?: string;
|
|
55
|
+
};
|
|
56
|
+
};
|
|
57
|
+
spacing: {
|
|
58
|
+
menu: {
|
|
59
|
+
itemGap: string;
|
|
60
|
+
dropdownPadding: string;
|
|
61
|
+
};
|
|
62
|
+
card: {
|
|
63
|
+
padding: string;
|
|
64
|
+
gap: string;
|
|
65
|
+
};
|
|
66
|
+
};
|
|
67
|
+
components: {
|
|
68
|
+
WordPressNavMenu?: ComponentCustomization;
|
|
69
|
+
MemberCard?: ComponentCustomization;
|
|
70
|
+
CaseStudyCard?: ComponentCustomization;
|
|
71
|
+
ProjectCard?: ComponentCustomization;
|
|
72
|
+
DynamicHeroSection?: ComponentCustomization;
|
|
73
|
+
Header?: ComponentCustomization;
|
|
74
|
+
Footer?: ComponentCustomization;
|
|
75
|
+
NotFound?: ComponentCustomization;
|
|
76
|
+
[key: string]: ComponentCustomization | undefined;
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
export declare const defaultCustomization: AppCustomizationConfig;
|
|
80
|
+
/**
|
|
81
|
+
* Get the complete customization configuration
|
|
82
|
+
* Merges defaults with custom config and environment overrides
|
|
83
|
+
*
|
|
84
|
+
* This function is safe to call and will never throw errors
|
|
85
|
+
*/
|
|
86
|
+
export declare function getCustomizationConfig(): AppCustomizationConfig;
|
|
87
|
+
/**
|
|
88
|
+
* Get customization for a specific component
|
|
89
|
+
*
|
|
90
|
+
* This function is safe to call and will never throw errors
|
|
91
|
+
*/
|
|
92
|
+
export declare function getComponentCustomization(componentName: keyof AppCustomizationConfig['components']): ComponentCustomization | undefined;
|