@netfoundry/docusaurus-shared 0.0.168

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 (112) hide show
  1. package/dist/components/Alert/Alert.d.ts +8 -0
  2. package/dist/components/Alert/index.d.ts +2 -0
  3. package/dist/components/CodeBlock/CodeBlock.d.ts +9 -0
  4. package/dist/components/CodeBlock/index.d.ts +2 -0
  5. package/dist/components/Common/Common.d.ts +23 -0
  6. package/dist/components/Common/index.d.ts +1 -0
  7. package/dist/components/NetFoundry/Divider/Divider.d.ts +2 -0
  8. package/dist/components/NetFoundry/Divider/index.d.ts +1 -0
  9. package/dist/components/NetFoundry/index.d.ts +1 -0
  10. package/dist/components/NetFoundryFooter/NetFoundryFooter.d.ts +22 -0
  11. package/dist/components/NetFoundryFooter/index.d.ts +1 -0
  12. package/dist/components/NetFoundryHighlight/NetFoundryHighlight.d.ts +6 -0
  13. package/dist/components/NetFoundryHighlight/index.d.ts +2 -0
  14. package/dist/components/NetFoundryHorizontalSection/NetFoundryHorizontalSection.d.ts +8 -0
  15. package/dist/components/NetFoundryHorizontalSection/index.d.ts +2 -0
  16. package/dist/components/NetFoundryLayout/NetFoundryLayout.d.ts +29 -0
  17. package/dist/components/NetFoundryLayout/index.d.ts +1 -0
  18. package/dist/components/NetFoundryNavbarItems/NetFoundryNavbarItems.d.ts +9 -0
  19. package/dist/components/NetFoundryNavbarItems/index.d.ts +2 -0
  20. package/dist/components/OsTabs/OsTabs.d.ts +5 -0
  21. package/dist/components/OsTabs/index.d.ts +2 -0
  22. package/dist/components/StarUs/StarUs.d.ts +6 -0
  23. package/dist/components/StarUs/index.d.ts +2 -0
  24. package/dist/components/index.d.ts +11 -0
  25. package/dist/docusaurus-envhelper.d.ts +15 -0
  26. package/dist/docusaurus-plugins/index.d.ts +7 -0
  27. package/dist/docusaurus-plugins/logger.d.ts +12 -0
  28. package/dist/docusaurus-plugins/remarkCodeSections.d.ts +7 -0
  29. package/dist/docusaurus-plugins/remarkReplaceMetaUrl.d.ts +10 -0
  30. package/dist/docusaurus-plugins/remarkScopedPath.d.ts +12 -0
  31. package/dist/docusaurus-plugins/remarkYamlTable.d.ts +7 -0
  32. package/dist/docusaurus-plugins/remarkYouTube.d.ts +7 -0
  33. package/dist/docusaurus-plugins/timedPlugin.d.ts +5 -0
  34. package/dist/index.cjs +8 -0
  35. package/dist/index.cjs.map +1 -0
  36. package/dist/index.css +1 -0
  37. package/dist/index.d.ts +1 -0
  38. package/dist/index.esm.js +6 -0
  39. package/dist/index.esm.js.map +1 -0
  40. package/dist/node.cjs +80 -0
  41. package/dist/node.cjs.map +1 -0
  42. package/dist/node.d.ts +1 -0
  43. package/dist/node.esm.js +68 -0
  44. package/dist/node.esm.js.map +1 -0
  45. package/dist/plugins.cjs +4643 -0
  46. package/dist/plugins.cjs.map +1 -0
  47. package/dist/plugins.d.ts +1 -0
  48. package/dist/plugins.esm.js +4634 -0
  49. package/dist/plugins.esm.js.map +1 -0
  50. package/dist/ui.cjs +1312 -0
  51. package/dist/ui.cjs.map +1 -0
  52. package/dist/ui.d.ts +2 -0
  53. package/dist/ui.esm.js +1284 -0
  54. package/dist/ui.esm.js.map +1 -0
  55. package/dist/version.cjs +6 -0
  56. package/dist/version.cjs.map +1 -0
  57. package/dist/version.d.ts +1 -0
  58. package/dist/version.esm.js +4 -0
  59. package/dist/version.esm.js.map +1 -0
  60. package/package.json +82 -0
  61. package/src/components/Alert/Alert.module.css +39 -0
  62. package/src/components/Alert/Alert.tsx +24 -0
  63. package/src/components/Alert/index.ts +2 -0
  64. package/src/components/CodeBlock/CodeBlock.module.css +27 -0
  65. package/src/components/CodeBlock/CodeBlock.tsx +32 -0
  66. package/src/components/CodeBlock/index.ts +2 -0
  67. package/src/components/Common/Common.module.css +0 -0
  68. package/src/components/Common/Common.tsx +53 -0
  69. package/src/components/Common/index.ts +1 -0
  70. package/src/components/NetFoundry/Divider/Divider.module.css +23 -0
  71. package/src/components/NetFoundry/Divider/Divider.tsx +20 -0
  72. package/src/components/NetFoundry/Divider/index.ts +1 -0
  73. package/src/components/NetFoundry/index.ts +1 -0
  74. package/src/components/NetFoundryFooter/NetFoundryFooter.tsx +164 -0
  75. package/src/components/NetFoundryFooter/index.ts +1 -0
  76. package/src/components/NetFoundryFooter/styles.module.css +99 -0
  77. package/src/components/NetFoundryHighlight/NetFoundryHighlight.tsx +15 -0
  78. package/src/components/NetFoundryHighlight/index.ts +2 -0
  79. package/src/components/NetFoundryHighlight/styles.module.css +26 -0
  80. package/src/components/NetFoundryHorizontalSection/NetFoundryHorizontalSection.tsx +23 -0
  81. package/src/components/NetFoundryHorizontalSection/index.ts +2 -0
  82. package/src/components/NetFoundryHorizontalSection/styles.module.css +23 -0
  83. package/src/components/NetFoundryLayout/NetFoundryLayout.module.css +6 -0
  84. package/src/components/NetFoundryLayout/NetFoundryLayout.tsx +110 -0
  85. package/src/components/NetFoundryLayout/index.ts +1 -0
  86. package/src/components/NetFoundryNavbarItems/NetFoundryNavbarItems.tsx +22 -0
  87. package/src/components/NetFoundryNavbarItems/index.ts +2 -0
  88. package/src/components/OsTabs/OsTabs.tsx +30 -0
  89. package/src/components/OsTabs/index.ts +2 -0
  90. package/src/components/StarUs/StarUs.tsx +19 -0
  91. package/src/components/StarUs/index.ts +2 -0
  92. package/src/components/StarUs/styles.module.css +6 -0
  93. package/src/components/index.ts +11 -0
  94. package/src/css/layout.css +14 -0
  95. package/src/css/legacy.css +2348 -0
  96. package/src/css/vars-dark.css +7 -0
  97. package/src/css/vars.css +8 -0
  98. package/src/docusaurus-envhelper.ts +105 -0
  99. package/src/docusaurus-plugins/index.ts +7 -0
  100. package/src/docusaurus-plugins/logger.ts +38 -0
  101. package/src/docusaurus-plugins/remarkCodeSections.ts +115 -0
  102. package/src/docusaurus-plugins/remarkReplaceMetaUrl.ts +35 -0
  103. package/src/docusaurus-plugins/remarkScopedPath.ts +70 -0
  104. package/src/docusaurus-plugins/remarkYamlTable.ts +83 -0
  105. package/src/docusaurus-plugins/remarkYouTube.ts +56 -0
  106. package/src/docusaurus-plugins/timedPlugin.ts +22 -0
  107. package/src/global.d.ts +1 -0
  108. package/src/index.ts +3 -0
  109. package/src/node.ts +1 -0
  110. package/src/plugins.ts +1 -0
  111. package/src/ui.ts +2 -0
  112. package/src/version.ts +1 -0
@@ -0,0 +1,32 @@
1
+ import React from 'react';
2
+ import { useThemeConfig } from '@docusaurus/theme-common';
3
+ import styles from './CodeBlock.module.css';
4
+
5
+ export interface CodeBlockProps {
6
+ children: string;
7
+ language?: string;
8
+ title?: string;
9
+ showLineNumbers?: boolean;
10
+ className?: string;
11
+ }
12
+
13
+ export const CodeBlock: React.FC<CodeBlockProps> = ({
14
+ children,
15
+ language = 'text',
16
+ title,
17
+ showLineNumbers = false,
18
+ className
19
+ }) => {
20
+ const { prism } = useThemeConfig();
21
+
22
+ return (
23
+ <div className={`${styles.codeBlock} ${className || ''}`}>
24
+ {title && <div className={styles.title}>{title}</div>}
25
+ <pre className={`language-${language}`}>
26
+ <code className={`language-${language}`}>
27
+ {children}
28
+ </code>
29
+ </pre>
30
+ </div>
31
+ );
32
+ };
@@ -0,0 +1,2 @@
1
+ export { CodeBlock } from './CodeBlock';
2
+ export type { CodeBlockProps } from './CodeBlock';
File without changes
@@ -0,0 +1,53 @@
1
+ import React, { JSX } from 'react';
2
+ import clsx from 'clsx';
3
+ import styles from './Common.module.css';
4
+
5
+ export interface H1Props {
6
+ children: React.ReactNode;
7
+ id?: string;
8
+ className?: string;
9
+ }
10
+
11
+ export interface H2Props {
12
+ children: React.ReactNode;
13
+ className?: string;
14
+ }
15
+
16
+ export interface H3Props {
17
+ children: React.ReactNode;
18
+ style?: React.CSSProperties;
19
+ className?: string;
20
+ }
21
+
22
+ export interface HighlightProps {
23
+ children: React.ReactNode;
24
+ className?: string;
25
+ }
26
+
27
+ export function H1(props: H1Props): JSX.Element {
28
+ const {children, id, className} = props;
29
+ return (
30
+ <p id={id} className={clsx(styles.h1, className)}>{children}</p>
31
+ );
32
+ }
33
+
34
+ export function H2(props: H2Props): JSX.Element {
35
+ const {children, className} = props;
36
+ return (
37
+ <p className={clsx(styles.h2, className)}>{children}</p>
38
+ );
39
+ }
40
+
41
+ export function H3(props: H3Props): JSX.Element {
42
+ const {children, style, className} = props;
43
+ return (
44
+ <h3 className={clsx(styles.h3, className)} style={style}>{children}</h3>
45
+ );
46
+ }
47
+
48
+ export function Highlight(props: HighlightProps): JSX.Element {
49
+ const { children, className } = props;
50
+ return (
51
+ <span className={clsx(styles.highlight, className)}>{children}</span>
52
+ );
53
+ }
@@ -0,0 +1 @@
1
+ export * from './Common';
@@ -0,0 +1,23 @@
1
+ .onpremConnector {
2
+ display: flex;
3
+ align-items: center;
4
+ gap: 0.75rem;
5
+ }
6
+
7
+ .onpremDot {
8
+ display: flex;
9
+ align-items: center;
10
+ justify-content: center;
11
+ }
12
+
13
+ .onpremDot svg {
14
+ width: 24px;
15
+ height: 24px;
16
+ color: #9aa4b2;
17
+ }
18
+
19
+ .onpremLine {
20
+ flex: 1;
21
+ height: 1px;
22
+ background: linear-gradient(90deg, #c8d0d9, #9aa4b2, #c8d0d9);
23
+ }
@@ -0,0 +1,20 @@
1
+ import React, {JSX} from 'react';
2
+ import styles from './Divider.module.css';
3
+
4
+ export function Divider(): JSX.Element {
5
+ return (
6
+ <div className={styles.onpremConnector}>
7
+ <div className={styles.onpremDot} aria-hidden="true">
8
+ <svg viewBox="0 0 24 24" role="img" aria-label="endpoint">
9
+ <circle cx="12" cy="12" r="8" fill="currentColor" />
10
+ </svg>
11
+ </div>
12
+ <div className={styles.onpremLine} role="presentation" aria-hidden="true"></div>
13
+ <div className={styles.onpremDot} aria-hidden="true">
14
+ <svg viewBox="0 0 24 24" role="img" aria-label="endpoint">
15
+ <circle cx="12" cy="12" r="8" fill="currentColor" />
16
+ </svg>
17
+ </div>
18
+ </div>
19
+ );
20
+ }
@@ -0,0 +1 @@
1
+ export * from './Divider'
@@ -0,0 +1 @@
1
+ export * from './Divider'
@@ -0,0 +1,164 @@
1
+ import React, {CSSProperties, ReactNode} from 'react';
2
+ import clsx from 'clsx';
3
+ import {NetFoundryHorizontalSection} from "../NetFoundryHorizontalSection";
4
+ import useBaseUrl from "@docusaurus/useBaseUrl";
5
+ import styles from './styles.module.css';
6
+
7
+ export interface SocialProps {
8
+ twitterUrl?: string;
9
+ linkedInUrl?: string;
10
+ githubUrl?: string;
11
+ facebookUrl?: string;
12
+ instagramUrl?: string;
13
+ youtubeUrl?: string;
14
+ }
15
+ export const defaultSocialProps: SocialProps = {
16
+ twitterUrl: '',
17
+ linkedInUrl: '',
18
+ githubUrl: '',
19
+ facebookUrl: '',
20
+ instagramUrl: '',
21
+ youtubeUrl: '',
22
+ };
23
+
24
+ export type NetFoundryFooterProps = {
25
+ className?: string;
26
+ style?: CSSProperties;
27
+ description?: string;
28
+ socialProps?: SocialProps;
29
+ documentationLinks?: React.ReactNode[];
30
+ communityLinks?: React.ReactNode[];
31
+ resourceLinks?: React.ReactNode[];
32
+ children?: ReactNode;
33
+ };
34
+
35
+ export function defaultNetFoundryFooterProps(overrides?: Partial<NetFoundryFooterProps>): NetFoundryFooterProps {
36
+ return {
37
+ description: 'Self-hosted OpenZiti for enterprises needing compliance, control, and support.',
38
+ socialProps: {
39
+ githubUrl: 'https://github.com/openziti/ziti',
40
+ linkedInUrl: 'https://www.linkedin.com/company/netfoundry',
41
+ youtubeUrl: 'https://www.youtube.com/OpenZiti',
42
+ twitterUrl: 'https://x.com/OpenZiti'
43
+ },
44
+ documentationLinks: [
45
+ <a href="/docs/openziti/learn/quickstarts/services/ztha">Getting Started</a>,
46
+ <a href="/docs/openziti/reference/developer/api/">API Reference</a>,
47
+ <a href="/docs/openziti/reference/developer/sdk/">SDK Integration</a>,
48
+ ],
49
+ communityLinks: [
50
+ <a href="https://github.com/openziti/ziti">GitHub</a>,
51
+ <a href="https://openziti.discourse.group/">Discourse Forum</a>,
52
+ <a href="/docs/openziti/policies/CONTRIBUTING">Contributing</a>,
53
+ ],
54
+ resourceLinks: [
55
+ <a href="https://blog.openziti.io">OpenZiti Tech Blog</a>,
56
+ <a href="https://netfoundry.io/">NetFoundry</a>,
57
+ ],
58
+ ...overrides
59
+ };
60
+ }
61
+
62
+ function ListBlock({title, items}:{title:string; items?: React.ReactNode[]}) {
63
+ if (!items?.length) return null;
64
+ return (
65
+ <div className={styles.footerColumn}>
66
+ <h3>{title}</h3>
67
+ <ul className={styles.footerLinks}>
68
+ {items.map((item, i) => <li key={i}>{item}</li>)}
69
+ </ul>
70
+ </div>
71
+ );
72
+ }
73
+
74
+ export function NetFoundryFooter(props: NetFoundryFooterProps) {
75
+ const { className, style, children, description } = props;
76
+ const sp = {...defaultSocialProps, ...(props.socialProps ?? {})};
77
+
78
+ if (children) return <>{children}</>;
79
+
80
+ return (
81
+ <footer className={clsx(className, styles.ozFooter)} style={style}>
82
+ <NetFoundryHorizontalSection className={styles.footer}>
83
+ <div className={styles.footerContainer}>
84
+ <div className={styles.footerGrid}>
85
+ <div className={styles.footerColumn}>
86
+ <h3>NetFoundry</h3>
87
+ <p>{description ?? 'An open source project enabling developers to embed zero trust networking directly into applications.'}</p>
88
+ <div className={styles.footerSocialLinks}>
89
+ {sp.githubUrl && (
90
+ <a href={sp.githubUrl} target="_blank" className={styles.footerSocialLink} rel="noreferrer">
91
+ <svg width="20" height="20" viewBox="0 0 16 16" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
92
+ <path d="M8 0C3.58 0 0 3.58 0 8C0 11.54 2.29 14.53 5.47 15.59C5.87 15.66 6.02 15.42 6.02 15.21C6.02 15.02 6.01 14.39 6.01 13.72C4 14.09 3.48 13.23 3.32 12.78C3.23 12.55 2.84 11.84 2.5 11.65C2.22 11.5 1.82 11.13 2.49 11.12C3.12 11.11 3.57 11.7 3.72 11.94C4.44 13.15 5.59 12.81 6.05 12.6C6.12 12.08 6.33 11.73 6.56 11.53C4.78 11.33 2.92 10.64 2.92 7.58C2.92 6.71 3.23 5.99 3.74 5.43C3.66 5.23 3.38 4.41 3.82 3.31C3.82 3.31 4.49 3.1 6.02 4.13C6.66 3.95 7.34 3.86 8.02 3.86C8.7 3.86 9.38 3.95 10.02 4.13C11.55 3.09 12.22 3.31 12.22 3.31C12.66 4.41 12.38 5.23 12.3 5.43C12.81 5.99 13.12 6.7 13.12 7.58C13.12 10.65 11.25 11.33 9.47 11.53C9.76 11.78 10.01 12.26 10.01 13.01C10.01 14.08 10 14.94 10 15.21C10 15.42 10.15 15.67 10.55 15.59C13.71 14.53 16 11.53 16 8C16 3.58 12.42 0 8 0Z"/>
93
+ </svg>
94
+ </a>
95
+ )}
96
+ {sp.linkedInUrl && (
97
+ <a href={sp.linkedInUrl} target="_blank" className={styles.footerSocialLink} rel="noreferrer">
98
+ <svg width="16" height="16" viewBox="0 0 16 16" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
99
+ <path d="M15.996 16V10.1C15.996 7.5 15.375 5.49999 12.025 5.49999C10.4 5.49999 9.325 6.39999 8.875 7.29999H8.825V5.79999H5.65V16H8.95V10.7C8.95 9.30001 9.2 7.9 10.925 7.9C12.65 7.9 12.675 9.59999 12.675 10.8V16H15.996Z"/>
100
+ <path d="M0.25 5.79999H3.575V16H0.25V5.79999Z"/>
101
+ <path d="M1.9 0C0.85 0 0 0.85 0 1.9C0 2.95 0.85 3.8 1.9 3.8C2.95 3.8 3.8 2.95 3.8 1.9C3.8 0.85 2.95 0 1.9 0Z"/>
102
+ </svg>
103
+ </a>
104
+ )}
105
+ {sp.youtubeUrl && (
106
+ <a href={sp.youtubeUrl} target="_blank" className={styles.footerSocialLink} rel="noreferrer">
107
+ <svg width="16" height="16" viewBox="0 0 16 16" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
108
+ <path d="M15.969 4.69c-.183-1.358-1.062-2.275-2.361-2.46C12.371 2 8 2 8 2S3.629 2 2.362 2.229c-1.3.186-2.179 1.103-2.361 2.461C0 6.03 0 10 0 10s0 3.97.2 5.31c.183 1.358 1.062 2.275 2.361 2.46C3.63 18 8 18 8 18s4.371 0 5.638-.23c1.3-.185 2.178-1.102 2.361-2.46.2-1.34.2-5.31.2-5.31s0-3.97-.23-5.31zm-8.36, 8.57V6.73l3.76 2.27-3.76 2.26z"/>
109
+ </svg>
110
+ </a>
111
+ )}
112
+ {sp.twitterUrl && (
113
+ <a href={sp.twitterUrl} target="_blank" className={styles.footerSocialLink} rel="noreferrer">
114
+ <svg width="16" height="16" viewBox="0 0 16 16" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
115
+ <path d="M15.996 3.038c-.59.262-1.219.44-1.885.52.677-.406 1.194-1.05 1.438-1.815-.634.375-1.337.648-2.085.795-.598-.638-1.45-1.038-2.396-1.038-1.813 0-3.283 1.469-3.283 3.282 0 .257.03.507.085.748-2.728-.137-5.147-1.445-6.766-3.43-.282.485-.444 1.05-.444 1.651 0 1.14.58 2.143 1.46 2.732-.538-.017-1.044-.164-1.487-.41v.04c0 1.59 1.13 2.918 2.633 3.219-.276.075-.567.116-.866.116-.211 0-.416-.021-.617-.06.418 1.304 1.63 2.254 3.066 2.28-1.124.883-2.539 1.406-4.077 1.406-.265 0-.526-.015-.785-.046 1.453.933 3.178 1.475 5.032 1.475 6.038 0 9.34-5.002 9.34-9.34 0-.142-.004-.284-.01-.425.641-.463 1.198-1.039 1.638-1.696"/>
116
+ </svg>
117
+ </a>
118
+ )}
119
+ {sp.facebookUrl && (
120
+ <a href={sp.facebookUrl} target="_blank" className={styles.footerSocialLink} rel="noreferrer">
121
+ <span>f</span>
122
+ </a>
123
+ )}
124
+ {sp.instagramUrl && (
125
+ <a href={sp.instagramUrl} target="_blank" className={styles.footerSocialLink} rel="noreferrer">
126
+ <span>ig</span>
127
+ </a>
128
+ )}
129
+ </div>
130
+ </div>
131
+
132
+ <ListBlock
133
+ title="Documentation"
134
+ items={props.documentationLinks ?? [
135
+ <a href={useBaseUrl("/docs/learn/quickstarts/services/ztha")}>Getting Started</a>,
136
+ <a href={useBaseUrl("/docs/reference/developer/api/")}>API Reference</a>,
137
+ <a href={useBaseUrl("/docs/reference/developer/sdk/")}>SDK Integration</a>,
138
+ ]}
139
+ />
140
+ <ListBlock
141
+ title="Community"
142
+ items={props.communityLinks ?? [
143
+ <a href="https://github.com/openziti/ziti">GitHub</a>,
144
+ <a href="https://openziti.discourse.group/">Discourse Forum</a>,
145
+ <a href="/docs/openziti/policies/CONTRIBUTING">Contributing</a>,
146
+ ]}
147
+ />
148
+ <ListBlock
149
+ title="Resources"
150
+ items={props.resourceLinks ?? [
151
+ <a href="https://blog.openziti.io">OpenZiti Tech Blog</a>,
152
+ <a href="https://netfoundry.io/">NetFoundry</a>,
153
+ ]}
154
+ />
155
+ </div>
156
+ </div>
157
+
158
+ <div className={styles.footerCopyright}>
159
+ <p>© 2025 NetFoundry Inc. OpenZiti is an open source project sponsored by NetFoundry. All rights reserved.</p>
160
+ </div>
161
+ </NetFoundryHorizontalSection>
162
+ </footer>
163
+ );
164
+ }
@@ -0,0 +1 @@
1
+ export * from './NetFoundryFooter';
@@ -0,0 +1,99 @@
1
+ .ozFooter {
2
+ width: 100%;
3
+ --ziti-footer-background-color: #121a36;
4
+ --ziti-footer-color: #aaa;
5
+ --accent: #ccc;
6
+
7
+ .ozFooterSection {
8
+ display: flex;
9
+ flex-grow: 1;
10
+ flex-direction: column;
11
+ align-items: center;
12
+ background-color: var(--ifm-background-color);
13
+ width: 100%;
14
+ }
15
+
16
+ /* Footer Styles */
17
+
18
+ .footer {
19
+ background-color: var(--ziti-footer-background-color);
20
+ color: var(--ziti-footer-color);
21
+ padding: var(--space-md) var(--space-md);
22
+ width: 100%;
23
+ }
24
+
25
+ .footerContainer {
26
+ gap: 2rem;
27
+ margin-bottom: 1rem;
28
+ max-width: var(--ziti-landing-max-width);
29
+ width: 100%;
30
+ align-content: center;
31
+ }
32
+
33
+ .footerGrid {
34
+ display: grid;
35
+ gap: var(--space-md);
36
+ grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
37
+ }
38
+
39
+ .footerColumn h3 {
40
+ color: var(--light);
41
+ font-size: 1.2rem;
42
+ margin-bottom: 1.5rem;
43
+ }
44
+
45
+ .footerLinks {
46
+ list-style: none;
47
+ }
48
+
49
+ .footerLinks li {
50
+ margin-bottom: 0.75rem;
51
+ }
52
+
53
+ .footerLinks a {
54
+ color: #aaa;
55
+ transition: var(--transition);
56
+ }
57
+
58
+ .footerLinks a:hover {
59
+ color: var(--accent);
60
+ text-decoration: underline;
61
+ }
62
+
63
+ .footerCopyright {
64
+ border-top: 1px solid #2a3552;
65
+ padding-top: 2rem;
66
+ text-align: center;
67
+ font-size: 0.9rem;
68
+ }
69
+
70
+ .footerSocialLinks {
71
+ display: flex;
72
+ gap: 1rem;
73
+ margin-top: 1rem;
74
+ }
75
+
76
+ .footerSocialLink {
77
+ display: inline-flex;
78
+ align-items: center;
79
+ justify-content: center;
80
+ width: 36px;
81
+ height: 36px;
82
+ border-radius: 50%;
83
+ background-color: #2a3552;
84
+ color: var(--light);
85
+ transition: var(--transition);
86
+ }
87
+
88
+ .footerSocialLink:hover {
89
+ background-color: var(--primary);
90
+ transform: translateY(-3px);
91
+ }
92
+
93
+ @media (max-width: 850px) {
94
+ .footerGrid {
95
+ display: grid;
96
+ grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
97
+ }
98
+ }
99
+ }
@@ -0,0 +1,15 @@
1
+ import React, { ReactNode, CSSProperties } from 'react';
2
+
3
+ export type NetFoundryHighlightProps = {
4
+ children?: ReactNode;
5
+ style?: CSSProperties;
6
+ };
7
+
8
+ export function NetFoundryHighlight(props: NetFoundryHighlightProps) {
9
+ const { children, style } = props;
10
+ return (
11
+ <span style={style}>
12
+ <span style={{ color: 'var(--ifm-color-primary)' }}>{children}</span>
13
+ </span>
14
+ );
15
+ }
@@ -0,0 +1,2 @@
1
+ export { NetFoundryHighlight } from './NetFoundryHighlight';
2
+ export type { NetFoundryHighlightProps } from './NetFoundryHighlight';
@@ -0,0 +1,26 @@
1
+ .ozHighLightRoot {
2
+ display: flex;
3
+ flex-grow: 1;
4
+ flex-direction: column;
5
+ align-items: center;
6
+ min-height: 100%;
7
+ background-color: var(--ifm-background-color);
8
+ padding-top: 20px;
9
+ padding-bottom: 20px;
10
+ }
11
+
12
+ .ozHighLightContent {
13
+ display: flex;
14
+ flex-direction: column;
15
+ flex-grow: 1;
16
+ min-height: 100%;
17
+ padding: 20px 20px;
18
+ }
19
+
20
+ @media (min-width: 1400px) {
21
+ .ozHighLightContent {
22
+ min-width: var(--ziti-max-width);
23
+ max-width: var(--ziti-max-width);
24
+ padding: 20px 20px;
25
+ }
26
+ }
@@ -0,0 +1,23 @@
1
+ import React, { ReactNode, CSSProperties } from 'react';
2
+ import clsx from 'clsx';
3
+ import styles from './styles.module.css';
4
+
5
+ export type NetFoundryHorizontalSectionProps = {
6
+ children?: ReactNode;
7
+ className?: string;
8
+ style?: CSSProperties;
9
+ id?: string;
10
+ };
11
+
12
+ export function NetFoundryHorizontalSection(props: NetFoundryHorizontalSectionProps) {
13
+ const { children, className, style, id } = props;
14
+ return (
15
+ <section
16
+ className={clsx(className, styles.ozHorizontalSectionRoot, styles.ozhsContent)}
17
+ style={style}
18
+ id={id}
19
+ >
20
+ {children}
21
+ </section>
22
+ );
23
+ }
@@ -0,0 +1,2 @@
1
+ export { NetFoundryHorizontalSection } from './NetFoundryHorizontalSection';
2
+ export type { NetFoundryHorizontalSectionProps } from './NetFoundryHorizontalSection';
@@ -0,0 +1,23 @@
1
+ .ozHorizontalSectionRoot {
2
+ display: flex;
3
+ flex-grow: 1;
4
+ flex-direction: column;
5
+ align-items: center;
6
+ background-color: var(--ifm-background-color);
7
+ max-width: var(--ziti-max-width);
8
+ width: 100%;
9
+ }
10
+
11
+ .ozhsContent {
12
+ display: flex;
13
+ flex-direction: column;
14
+ max-width: 100%;
15
+ padding: 20px;
16
+ }
17
+
18
+ @media (min-width: 1420px) {
19
+ .ozhsContent {
20
+ min-width: var(--ziti-max-width);
21
+ width: 100%;
22
+ }
23
+ }
@@ -0,0 +1,6 @@
1
+ .ozLayoutMainWrapper {
2
+ display: flex;
3
+ flex-direction: column;
4
+ justify-content: space-between;
5
+ flex-grow: 1;
6
+ }
@@ -0,0 +1,110 @@
1
+ import React, {JSX} from "react";
2
+ import clsx from "clsx";
3
+ import ErrorBoundary from "@docusaurus/ErrorBoundary";
4
+ import { ThemeClassNames } from "@docusaurus/theme-common";
5
+ // @ts-ignore
6
+ import { useKeyboardNavigation } from "@docusaurus/theme-common/internal";
7
+ import Head from "@docusaurus/Head";
8
+ import useBaseUrl from "@docusaurus/useBaseUrl";
9
+
10
+ import SkipToContent from "@theme/SkipToContent";
11
+ import AnnouncementBar from "@theme/AnnouncementBar";
12
+ import Navbar from "@theme/Navbar";
13
+ import LayoutProvider from "@theme/Layout/Provider";
14
+ import ErrorPageContent from "@theme/ErrorPageContent";
15
+ import styles from "./NetFoundryLayout.module.css";
16
+
17
+ import { NetFoundryFooter, NetFoundryFooterProps } from "../NetFoundryFooter";
18
+ import { StarUs, StarUsProps } from "../StarUs";
19
+ import { version } from '../../version';
20
+
21
+ export interface MetaProps {
22
+ title?: string;
23
+ description?: string;
24
+ url?: string;
25
+ image?: string;
26
+ siteName?: string;
27
+ locale?: string;
28
+ twitterX?: {
29
+ card?: "summary" | "summary_large_image" | "player" | "app";
30
+ site?: string;
31
+ creator?: string;
32
+ imageAlt?: string;
33
+ };
34
+ }
35
+
36
+ export interface NetFoundryLayoutProps {
37
+ children: React.ReactNode;
38
+ noFooter?: boolean;
39
+ className?: string;
40
+ footerClassName?: string;
41
+ title?: string;
42
+ description?: string;
43
+ starProps?: StarUsProps;
44
+ footerProps?: NetFoundryFooterProps;
45
+ meta?: MetaProps;
46
+ }
47
+
48
+ function useAbs() {
49
+ return (p?: string) => {
50
+ if (!p) return undefined;
51
+ if (p.startsWith("http")) return p;
52
+ return new URL(useBaseUrl(p), window.location.origin).toString();
53
+ };
54
+ }
55
+
56
+ export function NetFoundryLayout({
57
+ children,
58
+ noFooter,
59
+ className,
60
+ title,
61
+ description,
62
+ starProps = { repoUrl: "", label: "Star us on GitHub" },
63
+ footerProps,
64
+ meta: metaInput = {},
65
+ }: NetFoundryLayoutProps): JSX.Element {
66
+ useKeyboardNavigation();
67
+
68
+ const abs = useAbs();
69
+ const meta = metaInput;
70
+ const pageTitle =
71
+ (meta.title ?? title ?? "") +
72
+ (meta.siteName ? ` | ${meta.siteName}` : "");
73
+
74
+ return (
75
+ <LayoutProvider>
76
+ <Head>
77
+ <title>{pageTitle}</title>
78
+ <meta data-rh="true" name="nf-layout-version" content={version} />
79
+ {(meta.description ?? description) && (<meta name="description" content={meta.description ?? description} />)}
80
+ {meta.url && <meta property="og:url" content={meta.url} />}
81
+ {meta.siteName && <meta property="og:site_name" content={meta.siteName} />}
82
+ {meta.title && <meta property="og:title" content={meta.title} />}
83
+ {meta.description && (<meta property="og:description" content={meta.description} />)}
84
+ {meta.image && <meta property="og:image" content={abs(meta.image)} />}
85
+ {meta.locale && <meta property="og:locale" content={meta.locale} />}
86
+ <meta name="twitter:card" content={meta.twitterX?.card ?? "summary_large_image"} />
87
+ {meta.twitterX?.site && (<meta name="twitter:site" content={meta.twitterX.site} />)}
88
+ {meta.twitterX?.creator && (<meta name="twitter:creator" content={meta.twitterX.creator} />)}
89
+ {meta.image && (<meta name="twitter:image" content={abs(meta.image)} />)}
90
+ {meta.twitterX?.imageAlt && (<meta name="twitter:image:alt" content={meta.twitterX.imageAlt} />)}
91
+ </Head>
92
+ <SkipToContent />
93
+ <AnnouncementBar />
94
+ <Navbar />
95
+ {starProps.repoUrl && starProps.label && <StarUs {...starProps} />}
96
+ <div
97
+ className={clsx(
98
+ ThemeClassNames.wrapper.main,
99
+ styles.ozLayoutMainWrapper,
100
+ className,
101
+ )}
102
+ >
103
+ <ErrorBoundary fallback={<ErrorPageContent />}>
104
+ {children}
105
+ </ErrorBoundary>
106
+ {!noFooter && footerProps && <NetFoundryFooter {...footerProps} />}
107
+ </div>
108
+ </LayoutProvider>
109
+ );
110
+ }
@@ -0,0 +1 @@
1
+ export * from './NetFoundryLayout';
@@ -0,0 +1,22 @@
1
+ export type NavbarItem = {
2
+ label: string;
3
+ href?: string;
4
+ to?: string;
5
+ type?: string;
6
+ position?: 'left' | 'right';
7
+ sidebarId?: string;
8
+ };
9
+
10
+ export const NavbarItems: NavbarItem[] = [
11
+ {
12
+ type: 'docSidebar',
13
+ sidebarId: 'tutorialSidebar',
14
+ position: 'left',
15
+ label: 'Docs',
16
+ },
17
+ {
18
+ href: 'https://github.com/facebook/docusaurus',
19
+ label: 'GitHub',
20
+ position: 'right',
21
+ },
22
+ ];
@@ -0,0 +1,2 @@
1
+ export type {NavbarItem} from './NetFoundryNavbarItems';
2
+ export { NavbarItems } from './NetFoundryNavbarItems';