@sudobility/building_blocks 0.0.18 → 0.0.21
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/components/pages/app-text-page.d.ts +149 -0
- package/dist/components/pages/index.d.ts +2 -4
- package/dist/index.js +86 -151
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/dist/components/pages/app-privacy-policy-page.d.ts +0 -137
- package/dist/components/pages/app-terms-of-service-page.d.ts +0 -107
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
import React, { type ReactNode, type ComponentType } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Configuration for a text section with paragraph content
|
|
4
|
+
*/
|
|
5
|
+
export interface TextSectionWithContent {
|
|
6
|
+
/** Section title */
|
|
7
|
+
title: string;
|
|
8
|
+
/** Paragraph content */
|
|
9
|
+
content: string;
|
|
10
|
+
/** Whether content contains HTML that should be rendered */
|
|
11
|
+
isHtml?: boolean;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Configuration for a text section with a list
|
|
15
|
+
*/
|
|
16
|
+
export interface TextSectionWithList {
|
|
17
|
+
/** Section title */
|
|
18
|
+
title: string;
|
|
19
|
+
/** Optional description before the list */
|
|
20
|
+
description?: string;
|
|
21
|
+
/** List items */
|
|
22
|
+
items: string[];
|
|
23
|
+
/** Optional additional content after the list */
|
|
24
|
+
additionalContent?: string;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Configuration for a text section with subsections (e.g., "Information You Provide" and "Information Collected Automatically")
|
|
28
|
+
*/
|
|
29
|
+
export interface TextSectionWithSubsections {
|
|
30
|
+
/** Section title */
|
|
31
|
+
title: string;
|
|
32
|
+
/** Subsections, each with a title and list items */
|
|
33
|
+
subsections: Array<{
|
|
34
|
+
title: string;
|
|
35
|
+
items: string[];
|
|
36
|
+
}>;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Union type for all section types
|
|
40
|
+
*/
|
|
41
|
+
export type TextSection = TextSectionWithContent | TextSectionWithList | TextSectionWithSubsections;
|
|
42
|
+
/**
|
|
43
|
+
* Contact information configuration
|
|
44
|
+
*/
|
|
45
|
+
export interface TextPageContactInfo {
|
|
46
|
+
/** Email label (e.g., "Email:") */
|
|
47
|
+
emailLabel: string;
|
|
48
|
+
/** Email address */
|
|
49
|
+
email: string;
|
|
50
|
+
/** Website label (e.g., "Website:") */
|
|
51
|
+
websiteLabel: string;
|
|
52
|
+
/** Website URL */
|
|
53
|
+
websiteUrl: string;
|
|
54
|
+
/** Data Protection Officer label (optional, for privacy pages) */
|
|
55
|
+
dpoLabel?: string;
|
|
56
|
+
/** DPO email (optional, for privacy pages) */
|
|
57
|
+
dpoEmail?: string;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* GDPR notice configuration (optional, for privacy pages)
|
|
61
|
+
*/
|
|
62
|
+
export interface GdprNotice {
|
|
63
|
+
/** GDPR section title */
|
|
64
|
+
title: string;
|
|
65
|
+
/** GDPR section content */
|
|
66
|
+
content: string;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Contact section configuration
|
|
70
|
+
*/
|
|
71
|
+
export interface TextPageContact {
|
|
72
|
+
/** Section title */
|
|
73
|
+
title: string;
|
|
74
|
+
/** Section description */
|
|
75
|
+
description: string;
|
|
76
|
+
/** Whether description contains HTML */
|
|
77
|
+
isHtml?: boolean;
|
|
78
|
+
/** Contact details */
|
|
79
|
+
info: TextPageContactInfo;
|
|
80
|
+
/** Optional GDPR notice (for privacy pages) */
|
|
81
|
+
gdprNotice?: GdprNotice;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* All text content for the text page
|
|
85
|
+
*/
|
|
86
|
+
export interface TextPageContent {
|
|
87
|
+
/** Page title */
|
|
88
|
+
title: string;
|
|
89
|
+
/** Last updated text (use {{date}} as placeholder for the date) */
|
|
90
|
+
lastUpdated?: string;
|
|
91
|
+
/** All sections in order */
|
|
92
|
+
sections: TextSection[];
|
|
93
|
+
/** Contact information (optional) */
|
|
94
|
+
contact?: TextPageContact;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Props for AppTextPage component
|
|
98
|
+
*/
|
|
99
|
+
export interface AppTextPageProps {
|
|
100
|
+
/** All text content (must be provided by consumer) */
|
|
101
|
+
text: TextPageContent;
|
|
102
|
+
/** Current date for "last updated" display */
|
|
103
|
+
lastUpdatedDate?: string;
|
|
104
|
+
/** Optional wrapper component for the page layout */
|
|
105
|
+
PageWrapper?: ComponentType<{
|
|
106
|
+
children: ReactNode;
|
|
107
|
+
}>;
|
|
108
|
+
/** Optional className for the container */
|
|
109
|
+
className?: string;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* AppTextPage - A reusable text page component for legal/informational pages
|
|
113
|
+
*
|
|
114
|
+
* Displays a text-heavy page with:
|
|
115
|
+
* - Flexible section structure (content, list, or subsections)
|
|
116
|
+
* - Optional contact information
|
|
117
|
+
* - Optional GDPR notice
|
|
118
|
+
*
|
|
119
|
+
* Use this for Privacy Policy, Terms of Service, Cookie Policy, etc.
|
|
120
|
+
*
|
|
121
|
+
* @example
|
|
122
|
+
* ```tsx
|
|
123
|
+
* <AppTextPage
|
|
124
|
+
* text={{
|
|
125
|
+
* title: "Privacy Policy",
|
|
126
|
+
* lastUpdated: "Last updated: {{date}}",
|
|
127
|
+
* sections: [
|
|
128
|
+
* { title: "Introduction", content: "We respect your privacy..." },
|
|
129
|
+
* { title: "Data We Collect", items: ["Email", "Usage data"] },
|
|
130
|
+
* {
|
|
131
|
+
* title: "Information We Collect",
|
|
132
|
+
* subsections: [
|
|
133
|
+
* { title: "You Provide", items: ["Email", "Name"] },
|
|
134
|
+
* { title: "Automatic", items: ["IP", "Browser"] }
|
|
135
|
+
* ]
|
|
136
|
+
* }
|
|
137
|
+
* ],
|
|
138
|
+
* contact: {
|
|
139
|
+
* title: "Contact",
|
|
140
|
+
* description: "Questions?",
|
|
141
|
+
* info: { emailLabel: "Email:", email: "support@example.com", ... }
|
|
142
|
+
* }
|
|
143
|
+
* }}
|
|
144
|
+
* lastUpdatedDate="January 1, 2025"
|
|
145
|
+
* />
|
|
146
|
+
* ```
|
|
147
|
+
*/
|
|
148
|
+
export declare const AppTextPage: React.FC<AppTextPageProps>;
|
|
149
|
+
export default AppTextPage;
|
|
@@ -1,6 +1,4 @@
|
|
|
1
1
|
export { AppSitemapPage } from './app-sitemap-page';
|
|
2
2
|
export type { AppSitemapPageProps, SitemapPageText, SitemapSection, SitemapLink, LanguageOption, QuickLink, } from './app-sitemap-page';
|
|
3
|
-
export {
|
|
4
|
-
export type {
|
|
5
|
-
export { AppTermsOfServicePage } from './app-terms-of-service-page';
|
|
6
|
-
export type { AppTermsOfServicePageProps, TermsOfServicePageText, TermsSectionWithContent, TermsSectionWithList, TermsContactInfo, } from './app-terms-of-service-page';
|
|
3
|
+
export { AppTextPage } from './app-text-page';
|
|
4
|
+
export type { AppTextPageProps, TextPageContent, TextSection, TextSectionWithContent, TextSectionWithList, TextSectionWithSubsections, TextPageContact, TextPageContactInfo, GdprNotice, } from './app-text-page';
|
package/dist/index.js
CHANGED
|
@@ -4839,129 +4839,20 @@ const AppSitemapPage = ({
|
|
|
4839
4839
|
}
|
|
4840
4840
|
return content;
|
|
4841
4841
|
};
|
|
4842
|
-
const SectionHeading$1 = ({ children }) => /* @__PURE__ */ jsx("h2", { className: "text-2xl font-bold text-gray-900 dark:text-gray-100 mt-8 mb-4", children });
|
|
4843
|
-
const SubsectionHeading = ({ children }) => /* @__PURE__ */ jsx("h3", { className: "text-xl font-semibold text-gray-900 dark:text-gray-100 mt-6 mb-3", children });
|
|
4844
|
-
const Paragraph$1 = ({
|
|
4845
|
-
children,
|
|
4846
|
-
className = ""
|
|
4847
|
-
}) => /* @__PURE__ */ jsx("p", { className: `text-gray-600 dark:text-gray-300 mb-6 ${className}`, children });
|
|
4848
|
-
const List$1 = ({ items }) => /* @__PURE__ */ jsx("ul", { className: "list-disc list-inside text-gray-600 dark:text-gray-300 mb-6", children: items.map((item, index) => /* @__PURE__ */ jsx("li", { children: item }, index)) });
|
|
4849
|
-
const AppPrivacyPolicyPage = ({
|
|
4850
|
-
text,
|
|
4851
|
-
lastUpdatedDate = (/* @__PURE__ */ new Date()).toLocaleDateString(),
|
|
4852
|
-
PageWrapper,
|
|
4853
|
-
className
|
|
4854
|
-
}) => {
|
|
4855
|
-
const content = /* @__PURE__ */ jsxs("div", { className: `max-w-7xl mx-auto px-4 py-12 ${className || ""}`, children: [
|
|
4856
|
-
/* @__PURE__ */ jsx("h1", { className: "text-4xl font-bold text-gray-900 dark:text-gray-100 mb-8", children: text.heading }),
|
|
4857
|
-
/* @__PURE__ */ jsxs("div", { className: "prose prose-lg max-w-none", children: [
|
|
4858
|
-
/* @__PURE__ */ jsxs(Paragraph$1, { className: "mb-6", children: [
|
|
4859
|
-
text.lastUpdatedLabel,
|
|
4860
|
-
" ",
|
|
4861
|
-
lastUpdatedDate
|
|
4862
|
-
] }),
|
|
4863
|
-
/* @__PURE__ */ jsx(SectionHeading$1, { children: text.introduction.title }),
|
|
4864
|
-
/* @__PURE__ */ jsx(Paragraph$1, { children: text.introduction.content }),
|
|
4865
|
-
/* @__PURE__ */ jsx(SectionHeading$1, { children: text.informationWeCollect.title }),
|
|
4866
|
-
/* @__PURE__ */ jsx(SubsectionHeading, { children: text.informationWeCollect.youProvide.title }),
|
|
4867
|
-
/* @__PURE__ */ jsx(List$1, { items: text.informationWeCollect.youProvide.items }),
|
|
4868
|
-
/* @__PURE__ */ jsx(SubsectionHeading, { children: text.informationWeCollect.automatic.title }),
|
|
4869
|
-
/* @__PURE__ */ jsx(List$1, { items: text.informationWeCollect.automatic.items }),
|
|
4870
|
-
/* @__PURE__ */ jsx(SectionHeading$1, { children: text.howWeUse.title }),
|
|
4871
|
-
text.howWeUse.description && /* @__PURE__ */ jsx(Paragraph$1, { className: "mb-4", children: text.howWeUse.description }),
|
|
4872
|
-
/* @__PURE__ */ jsx(List$1, { items: text.howWeUse.items }),
|
|
4873
|
-
/* @__PURE__ */ jsx(SectionHeading$1, { children: text.informationSharing.title }),
|
|
4874
|
-
text.informationSharing.description && /* @__PURE__ */ jsx(Paragraph$1, { className: "mb-4", children: text.informationSharing.description }),
|
|
4875
|
-
/* @__PURE__ */ jsx(List$1, { items: text.informationSharing.items }),
|
|
4876
|
-
/* @__PURE__ */ jsx(SectionHeading$1, { children: text.dataSecurity.title }),
|
|
4877
|
-
text.dataSecurity.description && /* @__PURE__ */ jsx(Paragraph$1, { className: "mb-4", children: text.dataSecurity.description }),
|
|
4878
|
-
/* @__PURE__ */ jsx(List$1, { items: text.dataSecurity.items }),
|
|
4879
|
-
/* @__PURE__ */ jsx(SectionHeading$1, { children: text.dataRetention.title }),
|
|
4880
|
-
/* @__PURE__ */ jsx(Paragraph$1, { children: text.dataRetention.content }),
|
|
4881
|
-
/* @__PURE__ */ jsx(SectionHeading$1, { children: text.privacyRights.title }),
|
|
4882
|
-
text.privacyRights.description && /* @__PURE__ */ jsx(Paragraph$1, { className: "mb-4", children: text.privacyRights.description }),
|
|
4883
|
-
/* @__PURE__ */ jsx(List$1, { items: text.privacyRights.items }),
|
|
4884
|
-
text.web3Considerations && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
4885
|
-
/* @__PURE__ */ jsx(SectionHeading$1, { children: text.web3Considerations.title }),
|
|
4886
|
-
text.web3Considerations.description && /* @__PURE__ */ jsx(Paragraph$1, { className: "mb-4", children: text.web3Considerations.description }),
|
|
4887
|
-
/* @__PURE__ */ jsx(List$1, { items: text.web3Considerations.items })
|
|
4888
|
-
] }),
|
|
4889
|
-
/* @__PURE__ */ jsx(SectionHeading$1, { children: text.internationalTransfers.title }),
|
|
4890
|
-
/* @__PURE__ */ jsx(Paragraph$1, { children: text.internationalTransfers.content }),
|
|
4891
|
-
/* @__PURE__ */ jsx(SectionHeading$1, { children: text.childrensPrivacy.title }),
|
|
4892
|
-
/* @__PURE__ */ jsx(Paragraph$1, { children: text.childrensPrivacy.content }),
|
|
4893
|
-
/* @__PURE__ */ jsx(SectionHeading$1, { children: text.cookies.title }),
|
|
4894
|
-
/* @__PURE__ */ jsx(Paragraph$1, { children: /* @__PURE__ */ jsx("span", { dangerouslySetInnerHTML: { __html: text.cookies.content } }) }),
|
|
4895
|
-
/* @__PURE__ */ jsx(SectionHeading$1, { children: text.changes.title }),
|
|
4896
|
-
/* @__PURE__ */ jsx(Paragraph$1, { children: text.changes.content }),
|
|
4897
|
-
/* @__PURE__ */ jsx(SectionHeading$1, { children: text.contact.title }),
|
|
4898
|
-
/* @__PURE__ */ jsx(Paragraph$1, { children: text.contact.description }),
|
|
4899
|
-
/* @__PURE__ */ jsx("div", { className: "bg-gray-50 dark:bg-gray-800 p-4 rounded-lg", children: /* @__PURE__ */ jsxs("p", { className: "text-gray-700 dark:text-gray-300", children: [
|
|
4900
|
-
text.contact.info.emailLabel,
|
|
4901
|
-
" ",
|
|
4902
|
-
/* @__PURE__ */ jsx(
|
|
4903
|
-
"a",
|
|
4904
|
-
{
|
|
4905
|
-
href: `mailto:${text.contact.info.email}`,
|
|
4906
|
-
className: "text-blue-600 hover:text-blue-800 dark:text-blue-400 dark:hover:text-blue-300",
|
|
4907
|
-
children: text.contact.info.email
|
|
4908
|
-
}
|
|
4909
|
-
),
|
|
4910
|
-
/* @__PURE__ */ jsx("br", {}),
|
|
4911
|
-
text.contact.info.websiteLabel,
|
|
4912
|
-
" ",
|
|
4913
|
-
/* @__PURE__ */ jsx(
|
|
4914
|
-
"a",
|
|
4915
|
-
{
|
|
4916
|
-
href: text.contact.info.websiteUrl,
|
|
4917
|
-
className: "text-blue-600 hover:text-blue-800 dark:text-blue-400 dark:hover:text-blue-300",
|
|
4918
|
-
children: text.contact.info.websiteUrl
|
|
4919
|
-
}
|
|
4920
|
-
),
|
|
4921
|
-
/* @__PURE__ */ jsx("br", {}),
|
|
4922
|
-
text.contact.info.dpoLabel,
|
|
4923
|
-
" ",
|
|
4924
|
-
/* @__PURE__ */ jsx(
|
|
4925
|
-
"a",
|
|
4926
|
-
{
|
|
4927
|
-
href: `mailto:${text.contact.info.dpoEmail}`,
|
|
4928
|
-
className: "text-blue-600 hover:text-blue-800 dark:text-blue-400 dark:hover:text-blue-300",
|
|
4929
|
-
children: text.contact.info.dpoEmail
|
|
4930
|
-
}
|
|
4931
|
-
)
|
|
4932
|
-
] }) }),
|
|
4933
|
-
/* @__PURE__ */ jsxs("div", { className: "mt-8 p-4 bg-blue-50 dark:bg-blue-900/20 rounded-lg", children: [
|
|
4934
|
-
/* @__PURE__ */ jsx("h3", { className: "text-lg font-semibold text-blue-900 dark:text-blue-200 mb-2", children: text.contact.info.gdprTitle }),
|
|
4935
|
-
/* @__PURE__ */ jsxs("p", { className: "text-blue-800 dark:text-blue-300", children: [
|
|
4936
|
-
text.contact.info.gdprContent,
|
|
4937
|
-
" ",
|
|
4938
|
-
/* @__PURE__ */ jsx(
|
|
4939
|
-
"a",
|
|
4940
|
-
{
|
|
4941
|
-
href: `mailto:${text.contact.info.dpoEmail}`,
|
|
4942
|
-
className: "text-blue-600 hover:text-blue-800 dark:text-blue-400 dark:hover:text-blue-300",
|
|
4943
|
-
children: text.contact.info.dpoEmail
|
|
4944
|
-
}
|
|
4945
|
-
)
|
|
4946
|
-
] })
|
|
4947
|
-
] })
|
|
4948
|
-
] })
|
|
4949
|
-
] });
|
|
4950
|
-
if (PageWrapper) {
|
|
4951
|
-
return /* @__PURE__ */ jsx(PageWrapper, { children: content });
|
|
4952
|
-
}
|
|
4953
|
-
return content;
|
|
4954
|
-
};
|
|
4955
4842
|
function isSectionWithList(section) {
|
|
4956
4843
|
return "items" in section && Array.isArray(section.items);
|
|
4957
4844
|
}
|
|
4845
|
+
function isSectionWithSubsections(section) {
|
|
4846
|
+
return "subsections" in section && Array.isArray(section.subsections);
|
|
4847
|
+
}
|
|
4958
4848
|
const SectionHeading = ({ children }) => /* @__PURE__ */ jsx("h2", { className: "text-2xl font-bold text-gray-900 dark:text-gray-100 mt-8 mb-4", children });
|
|
4849
|
+
const SubsectionHeading = ({ children }) => /* @__PURE__ */ jsx("h3", { className: "text-xl font-semibold text-gray-900 dark:text-gray-100 mt-6 mb-3", children });
|
|
4959
4850
|
const Paragraph = ({
|
|
4960
4851
|
children,
|
|
4961
4852
|
className = ""
|
|
4962
4853
|
}) => /* @__PURE__ */ jsx("p", { className: `text-gray-600 dark:text-gray-300 mb-6 ${className}`, children });
|
|
4963
|
-
const List = ({ items }) => /* @__PURE__ */ jsx("ul", { className: "list-disc list-inside text-gray-600 dark:text-gray-300 mb-6", children: items.map((item, index) => /* @__PURE__ */ jsx("li", {
|
|
4964
|
-
const
|
|
4854
|
+
const List = ({ items }) => /* @__PURE__ */ jsx("ul", { className: "list-disc list-inside text-gray-600 dark:text-gray-300 mb-6 space-y-1", children: items.map((item, index) => /* @__PURE__ */ jsx("li", { dangerouslySetInnerHTML: { __html: item } }, index)) });
|
|
4855
|
+
const AppTextPage = ({
|
|
4965
4856
|
text,
|
|
4966
4857
|
lastUpdatedDate = (/* @__PURE__ */ new Date()).toLocaleDateString(),
|
|
4967
4858
|
PageWrapper,
|
|
@@ -4970,45 +4861,90 @@ const AppTermsOfServicePage = ({
|
|
|
4970
4861
|
const content = /* @__PURE__ */ jsxs("div", { className: `max-w-7xl mx-auto px-4 py-12 ${className || ""}`, children: [
|
|
4971
4862
|
/* @__PURE__ */ jsx("h1", { className: "text-4xl font-bold text-gray-900 dark:text-gray-100 mb-8", children: text.title }),
|
|
4972
4863
|
/* @__PURE__ */ jsxs("div", { className: "prose prose-lg dark:prose-invert max-w-none", children: [
|
|
4973
|
-
/* @__PURE__ */ jsx(Paragraph, { className: "mb-6", children: text.lastUpdated.replace("{{date}}", lastUpdatedDate) }),
|
|
4864
|
+
text.lastUpdated && /* @__PURE__ */ jsx(Paragraph, { className: "mb-6", children: text.lastUpdated.replace("{{date}}", lastUpdatedDate) }),
|
|
4974
4865
|
text.sections.map((section, index) => /* @__PURE__ */ jsxs(React.Fragment, { children: [
|
|
4975
4866
|
/* @__PURE__ */ jsx(SectionHeading, { children: section.title }),
|
|
4976
|
-
|
|
4977
|
-
|
|
4978
|
-
/* @__PURE__ */ jsx(
|
|
4979
|
-
|
|
4980
|
-
|
|
4867
|
+
isSectionWithSubsections(section) ? (
|
|
4868
|
+
// Section with subsections (h3 + lists)
|
|
4869
|
+
/* @__PURE__ */ jsx(Fragment, { children: section.subsections.map((subsection, subIndex) => /* @__PURE__ */ jsxs(React.Fragment, { children: [
|
|
4870
|
+
/* @__PURE__ */ jsx(SubsectionHeading, { children: subsection.title }),
|
|
4871
|
+
/* @__PURE__ */ jsx(List, { items: subsection.items })
|
|
4872
|
+
] }, subIndex)) })
|
|
4873
|
+
) : isSectionWithList(section) ? (
|
|
4874
|
+
// Section with list
|
|
4875
|
+
/* @__PURE__ */ jsxs(Fragment, { children: [
|
|
4876
|
+
section.description && /* @__PURE__ */ jsx(Paragraph, { className: "mb-4", children: section.description }),
|
|
4877
|
+
/* @__PURE__ */ jsx(List, { items: section.items }),
|
|
4878
|
+
section.additionalContent && /* @__PURE__ */ jsx(Paragraph, { children: section.additionalContent })
|
|
4879
|
+
] })
|
|
4880
|
+
) : section.isHtml ? (
|
|
4881
|
+
// Section with HTML content
|
|
4882
|
+
/* @__PURE__ */ jsx(Paragraph, { children: /* @__PURE__ */ jsx("span", { dangerouslySetInnerHTML: { __html: section.content } }) })
|
|
4883
|
+
) : (
|
|
4884
|
+
// Section with plain text content
|
|
4885
|
+
/* @__PURE__ */ jsx(Paragraph, { children: section.content })
|
|
4886
|
+
)
|
|
4981
4887
|
] }, index)),
|
|
4982
|
-
/* @__PURE__ */
|
|
4983
|
-
|
|
4984
|
-
|
|
4985
|
-
|
|
4986
|
-
dangerouslySetInnerHTML: { __html: text.contact.description }
|
|
4987
|
-
}
|
|
4988
|
-
) }) : /* @__PURE__ */ jsx(Paragraph, { children: text.contact.description }),
|
|
4989
|
-
/* @__PURE__ */ jsx("div", { className: "bg-gray-50 dark:bg-gray-800 p-4 rounded-lg", children: /* @__PURE__ */ jsxs("p", { className: "text-gray-700 dark:text-gray-300", children: [
|
|
4990
|
-
text.contact.info.emailLabel,
|
|
4991
|
-
" ",
|
|
4992
|
-
/* @__PURE__ */ jsx(
|
|
4993
|
-
"a",
|
|
4994
|
-
{
|
|
4995
|
-
href: `mailto:${text.contact.info.email}`,
|
|
4996
|
-
className: "text-blue-600 hover:text-blue-800 dark:text-blue-400 dark:hover:text-blue-300",
|
|
4997
|
-
children: text.contact.info.email
|
|
4998
|
-
}
|
|
4999
|
-
),
|
|
5000
|
-
/* @__PURE__ */ jsx("br", {}),
|
|
5001
|
-
text.contact.info.websiteLabel,
|
|
5002
|
-
" ",
|
|
5003
|
-
/* @__PURE__ */ jsx(
|
|
5004
|
-
"a",
|
|
4888
|
+
text.contact && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
4889
|
+
/* @__PURE__ */ jsx(SectionHeading, { children: text.contact.title }),
|
|
4890
|
+
text.contact.isHtml ? /* @__PURE__ */ jsx(Paragraph, { children: /* @__PURE__ */ jsx(
|
|
4891
|
+
"span",
|
|
5005
4892
|
{
|
|
5006
|
-
|
|
5007
|
-
className: "text-blue-600 hover:text-blue-800 dark:text-blue-400 dark:hover:text-blue-300",
|
|
5008
|
-
children: text.contact.info.websiteUrl
|
|
4893
|
+
dangerouslySetInnerHTML: { __html: text.contact.description }
|
|
5009
4894
|
}
|
|
5010
|
-
)
|
|
5011
|
-
|
|
4895
|
+
) }) : /* @__PURE__ */ jsx(Paragraph, { children: text.contact.description }),
|
|
4896
|
+
/* @__PURE__ */ jsx("div", { className: "bg-gray-50 dark:bg-gray-800 p-4 rounded-lg", children: /* @__PURE__ */ jsxs("p", { className: "text-gray-700 dark:text-gray-300", children: [
|
|
4897
|
+
text.contact.info.emailLabel,
|
|
4898
|
+
" ",
|
|
4899
|
+
/* @__PURE__ */ jsx(
|
|
4900
|
+
"a",
|
|
4901
|
+
{
|
|
4902
|
+
href: `mailto:${text.contact.info.email}`,
|
|
4903
|
+
className: "text-blue-600 hover:text-blue-800 dark:text-blue-400 dark:hover:text-blue-300",
|
|
4904
|
+
children: text.contact.info.email
|
|
4905
|
+
}
|
|
4906
|
+
),
|
|
4907
|
+
/* @__PURE__ */ jsx("br", {}),
|
|
4908
|
+
text.contact.info.websiteLabel,
|
|
4909
|
+
" ",
|
|
4910
|
+
/* @__PURE__ */ jsx(
|
|
4911
|
+
"a",
|
|
4912
|
+
{
|
|
4913
|
+
href: text.contact.info.websiteUrl,
|
|
4914
|
+
className: "text-blue-600 hover:text-blue-800 dark:text-blue-400 dark:hover:text-blue-300",
|
|
4915
|
+
children: text.contact.info.websiteUrl
|
|
4916
|
+
}
|
|
4917
|
+
),
|
|
4918
|
+
text.contact.info.dpoLabel && text.contact.info.dpoEmail && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
4919
|
+
/* @__PURE__ */ jsx("br", {}),
|
|
4920
|
+
text.contact.info.dpoLabel,
|
|
4921
|
+
" ",
|
|
4922
|
+
/* @__PURE__ */ jsx(
|
|
4923
|
+
"a",
|
|
4924
|
+
{
|
|
4925
|
+
href: `mailto:${text.contact.info.dpoEmail}`,
|
|
4926
|
+
className: "text-blue-600 hover:text-blue-800 dark:text-blue-400 dark:hover:text-blue-300",
|
|
4927
|
+
children: text.contact.info.dpoEmail
|
|
4928
|
+
}
|
|
4929
|
+
)
|
|
4930
|
+
] })
|
|
4931
|
+
] }) }),
|
|
4932
|
+
text.contact.gdprNotice && /* @__PURE__ */ jsxs("div", { className: "mt-8 p-4 bg-blue-50 dark:bg-blue-900/20 rounded-lg", children: [
|
|
4933
|
+
/* @__PURE__ */ jsx("h3", { className: "text-lg font-semibold text-blue-900 dark:text-blue-200 mb-2", children: text.contact.gdprNotice.title }),
|
|
4934
|
+
/* @__PURE__ */ jsxs("p", { className: "text-blue-800 dark:text-blue-300", children: [
|
|
4935
|
+
text.contact.gdprNotice.content,
|
|
4936
|
+
" ",
|
|
4937
|
+
text.contact.info.dpoEmail && /* @__PURE__ */ jsx(
|
|
4938
|
+
"a",
|
|
4939
|
+
{
|
|
4940
|
+
href: `mailto:${text.contact.info.dpoEmail}`,
|
|
4941
|
+
className: "text-blue-600 hover:text-blue-800 dark:text-blue-400 dark:hover:text-blue-300",
|
|
4942
|
+
children: text.contact.info.dpoEmail
|
|
4943
|
+
}
|
|
4944
|
+
)
|
|
4945
|
+
] })
|
|
4946
|
+
] })
|
|
4947
|
+
] })
|
|
5012
4948
|
] })
|
|
5013
4949
|
] });
|
|
5014
4950
|
if (PageWrapper) {
|
|
@@ -5022,10 +4958,9 @@ export {
|
|
|
5022
4958
|
AppFooterForHomePage,
|
|
5023
4959
|
AppPageLayout,
|
|
5024
4960
|
AppPricingPage,
|
|
5025
|
-
AppPrivacyPolicyPage,
|
|
5026
4961
|
AppSitemapPage,
|
|
5027
4962
|
AppSubscriptionsPage,
|
|
5028
|
-
|
|
4963
|
+
AppTextPage,
|
|
5029
4964
|
AppTopBar,
|
|
5030
4965
|
AppTopBarWithFirebaseAuth,
|
|
5031
4966
|
AppTopBarWithWallet,
|