@unisphere/nx 3.13.0 → 3.16.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/dist/generators/add-documentation/USAGE.md +64 -0
- package/dist/generators/add-documentation/add-documentation.d.ts +1 -1
- package/dist/generators/add-documentation/add-documentation.d.ts.map +1 -1
- package/dist/generators/add-documentation/add-documentation.js +80 -41
- package/dist/generators/add-documentation/schema.d.ts +4 -1
- package/dist/generators/add-documentation/schema.json +19 -10
- package/dist/generators/add-documentation/templates/babel.config.js +3 -0
- package/dist/generators/add-documentation/templates/docs/api/overview.md +8 -0
- package/dist/generators/add-documentation/templates/docs/changelog/overview.md +8 -0
- package/dist/generators/add-documentation/templates/docs/getting-started/overview.md +8 -0
- package/dist/generators/add-documentation/templates/docusaurus.config.ts.template +116 -0
- package/dist/generators/add-documentation/templates/package.json.template +57 -0
- package/dist/generators/add-documentation/templates/postcss.config.js +6 -0
- package/dist/generators/add-documentation/templates/sidebars.ts +9 -0
- package/dist/generators/add-documentation/templates/src/components/demo-placeholder-card.tsx +33 -0
- package/dist/generators/add-documentation/templates/src/components/guides/experiences/genie/integrate-genie-guide.tsx +149 -0
- package/dist/generators/add-documentation/templates/src/components/guides/experiences/notifications/notifications-react-guide.tsx +211 -0
- package/dist/generators/add-documentation/templates/src/components/homepage-features/index.tsx +239 -0
- package/dist/generators/add-documentation/templates/src/components/homepage-features/styles.module.css +87 -0
- package/dist/generators/add-documentation/templates/src/components/homepage-modules/index.tsx +76 -0
- package/dist/generators/add-documentation/templates/src/components/homepage-modules/styles.module.css +120 -0
- package/dist/generators/add-documentation/templates/src/components/homepage-start-now/index.tsx +22 -0
- package/dist/generators/add-documentation/templates/src/components/homepage-start-now/styles.module.css +38 -0
- package/dist/generators/add-documentation/templates/src/components/interactive-code-panel.tsx +258 -0
- package/dist/generators/add-documentation/templates/src/components/introductions/developer-toolbox-experience.tsx +84 -0
- package/dist/generators/add-documentation/templates/src/components/introductions/hello-world-experience.tsx +130 -0
- package/dist/generators/add-documentation/templates/src/components/introductions/notificaitons-experience.tsx +635 -0
- package/dist/generators/add-documentation/templates/src/components/introductions/reactions-experience.tsx +117 -0
- package/dist/generators/add-documentation/templates/src/components/ui-shared/introduction-card.tsx +117 -0
- package/dist/generators/add-documentation/templates/src/components/ui-shared/playground-card.tsx +67 -0
- package/dist/generators/add-documentation/templates/src/components/ui-shared/use-color-mode.ts +20 -0
- package/dist/generators/add-documentation/templates/src/components/ui-shared/utils.ts +8 -0
- package/dist/generators/add-documentation/templates/src/css/custom.css +487 -0
- package/dist/generators/add-documentation/templates/src/css/hero.module.css +190 -0
- package/dist/generators/add-documentation/templates/src/pages/index.module.css +59 -0
- package/dist/generators/add-documentation/templates/src/pages/index.tsx.template +191 -0
- package/dist/generators/add-documentation/templates/src/theme/Navbar/Content/index.tsx +145 -0
- package/dist/generators/add-documentation/templates/src/theme/Navbar/Content/styles.module.css +132 -0
- package/dist/generators/add-documentation/templates/src/theme/Navbar/MobileSidebar/Header/index.tsx +45 -0
- package/dist/generators/add-documentation/templates/static/.nojekyll +0 -0
- package/dist/generators/add-documentation/templates/static/docs/overview/unisphere-for-dummies-1.png +0 -0
- package/dist/generators/add-documentation/templates/static/docs/overview/unisphere-for-dummies-2.png +0 -0
- package/dist/generators/add-documentation/templates/static/docs/overview/unisphere-for-dummies-3.png +0 -0
- package/dist/generators/add-documentation/templates/static/docs/overview/unisphere-for-dummies-4.png +0 -0
- package/dist/generators/add-documentation/templates/static/homepage/divider.svg +5 -0
- package/dist/generators/add-documentation/templates/static/homepage/icons/Architecture.svg +4 -0
- package/dist/generators/add-documentation/templates/static/homepage/icons/Cost.svg +4 -0
- package/dist/generators/add-documentation/templates/static/homepage/icons/ExternalLink.svg +3 -0
- package/dist/generators/add-documentation/templates/static/homepage/icons/Infra.svg +8 -0
- package/dist/generators/add-documentation/templates/static/homepage/icons/Redundancies.svg +6 -0
- package/dist/generators/add-documentation/templates/static/homepage/icons/Speed.svg +6 -0
- package/dist/generators/add-documentation/templates/static/homepage/icons/Standards.svg +4 -0
- package/dist/generators/add-documentation/templates/static/homepage/icons/Unified.svg +12 -0
- package/dist/generators/add-documentation/templates/static/homepage/services/custo.jpg +0 -0
- package/dist/generators/add-documentation/templates/static/homepage/services/flame.jpg +0 -0
- package/dist/generators/add-documentation/templates/static/homepage/services/keepr.jpg +0 -0
- package/dist/generators/add-documentation/templates/static/homepage/services/loggi.jpg +0 -0
- package/dist/generators/add-documentation/templates/static/homepage/services/palleto.jpg +0 -0
- package/dist/generators/add-documentation/templates/static/homepage/services/publi.jpg +0 -0
- package/dist/generators/add-documentation/templates/static/homepage/services/tinker.jpg +0 -0
- package/dist/generators/add-documentation/templates/static/img/favicon.ico +0 -0
- package/dist/generators/add-documentation/templates/static/img/logo.svg +6 -0
- package/dist/generators/add-documentation/templates/static/img/logo_big.svg +12 -0
- package/dist/generators/add-documentation/templates/static/img/logo_big_dark.svg +12 -0
- package/dist/generators/add-documentation/templates/static/img/logo_dark.svg +6 -0
- package/dist/generators/add-documentation/templates/static/img/unisphere-social-card.jpg +0 -0
- package/dist/generators/add-documentation/templates/static/llm/INTEGRATE.md +497 -0
- package/dist/generators/add-documentation/templates/static/robots.txt +5 -0
- package/dist/generators/add-documentation/templates/static/team/amirc.jpeg +0 -0
- package/dist/generators/add-documentation/templates/static/team/erans.jpeg +0 -0
- package/dist/generators/add-documentation/templates/static/team/hadass.jpeg +0 -0
- package/dist/generators/add-documentation/templates/static/team/hillelc.jpeg +0 -0
- package/dist/generators/add-documentation/templates/static/team/idoz.jpeg +0 -0
- package/dist/generators/add-documentation/templates/static/team/lianb.jpeg +0 -0
- package/dist/generators/add-documentation/templates/static/team/nirb.jpeg +0 -0
- package/dist/generators/add-documentation/templates/static/team/nivs.jpeg +0 -0
- package/dist/generators/add-documentation/templates/static/team/omric.jpeg +0 -0
- package/dist/generators/add-documentation/templates/static/team/roeed.jpeg +0 -0
- package/dist/generators/add-documentation/templates/static/team/sivana.jpeg +0 -0
- package/dist/generators/add-documentation/templates/static/team/stask.png +0 -0
- package/dist/generators/add-documentation/templates/static/team/tanyal.jpeg +0 -0
- package/dist/generators/add-documentation/templates/static/team/tomere.jpeg +0 -0
- package/dist/generators/add-documentation/templates/static/team/tornikem.jpeg +0 -0
- package/dist/generators/add-documentation/templates/static/team/yairn.jpeg +0 -0
- package/dist/generators/add-documentation/templates/tailwind.config.js +30 -0
- package/dist/generators/add-documentation/templates/tsconfig.json +7 -0
- package/dist/generators/add-package/add-package.d.ts.map +1 -1
- package/dist/generators/add-package/add-package.js +9 -4
- package/dist/generators/add-package/schema.d.ts +1 -1
- package/dist/generators/add-package/schema.json +18 -10
- package/dist/generators/rename-package/rename-package.d.ts.map +1 -1
- package/dist/generators/rename-package/rename-package.js +12 -0
- package/dist/generators/utils.d.ts +1 -1
- package/dist/generators/utils.d.ts.map +1 -1
- package/dist/generators/utils.js +8 -10
- package/dist/migrations/3-15-0/add-experience-documentation.d.ts +10 -0
- package/dist/migrations/3-15-0/add-experience-documentation.d.ts.map +1 -0
- package/dist/migrations/3-15-0/add-experience-documentation.js +20 -0
- package/dist/migrations/3-16-0/remove-rollup-patch.d.ts +10 -0
- package/dist/migrations/3-16-0/remove-rollup-patch.d.ts.map +1 -0
- package/dist/migrations/3-16-0/remove-rollup-patch.js +32 -0
- package/dist/migrations/3-6-3/remove-rollup-patch.d.ts +1 -1
- package/dist/migrations/3-6-3/remove-rollup-patch.d.ts.map +1 -1
- package/dist/migrations/3-6-3/remove-rollup-patch.js +16 -6
- package/dist/migrations/3-7-0/update-gitignore-claude-exclusions.d.ts +9 -0
- package/dist/migrations/3-7-0/update-gitignore-claude-exclusions.d.ts.map +1 -0
- package/dist/migrations/3-7-0/update-gitignore-claude-exclusions.js +68 -0
- package/dist/shared.d.ts +4 -2
- package/dist/shared.d.ts.map +1 -1
- package/dist/shared.js +3 -1
- package/migrations.json +36 -1
- package/package.json +1 -1
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Tab, InteractiveCodePanel } from '../../../interactive-code-panel';
|
|
3
|
+
|
|
4
|
+
export const IntegrateGenieGuide: React.FC = () => {
|
|
5
|
+
const tabs: Tab[] = [
|
|
6
|
+
{
|
|
7
|
+
id: 'verify-setup',
|
|
8
|
+
title: '1. Verify Setup',
|
|
9
|
+
icon: '✅',
|
|
10
|
+
language: 'bash',
|
|
11
|
+
content: ``,
|
|
12
|
+
description: `Ensure your Unisphere workspace is properly set up before integrating Genie.`
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
id: 'install-genie',
|
|
16
|
+
title: '2. Install Genie Types',
|
|
17
|
+
icon: '📦',
|
|
18
|
+
language: 'bash',
|
|
19
|
+
content: `npm i @unisphere/genie-core`,
|
|
20
|
+
description: `Install the Genie core package to access Genie functionality.`
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
id: 'configure-genie',
|
|
24
|
+
title: '3. Load Genie',
|
|
25
|
+
icon: '⚙️',
|
|
26
|
+
language: 'typescript',
|
|
27
|
+
content: `import { GenieSettings } from '@unisphere/genie-core';
|
|
28
|
+
|
|
29
|
+
// Extract settings to a const using the Genie type
|
|
30
|
+
const genieSettings: GenieSettings = {
|
|
31
|
+
getSourceUrl: ({ entryId, startTime }) => {
|
|
32
|
+
return ""; // return your entry URL
|
|
33
|
+
},
|
|
34
|
+
kalturaServerURI: "https://www.kaltura.com",
|
|
35
|
+
ks: "",
|
|
36
|
+
partnerId: "",
|
|
37
|
+
uiconfId: "",
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
// Genie experience configuration
|
|
41
|
+
const genieExperience = {
|
|
42
|
+
widgetName: "unisphere.widget.genie",
|
|
43
|
+
runtimeName: "chat",
|
|
44
|
+
settings: genieSettings,
|
|
45
|
+
visuals: [
|
|
46
|
+
{
|
|
47
|
+
type: "page",
|
|
48
|
+
target: "class-genie-container",
|
|
49
|
+
settings: {},
|
|
50
|
+
},
|
|
51
|
+
],
|
|
52
|
+
};`,
|
|
53
|
+
description: `The settings are extracted to a const using the GenieSettings type for better type safety. Copy it to your workspace configuration.`
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
id: 'render-genie',
|
|
57
|
+
title: '4. Render Genie',
|
|
58
|
+
icon: '🚀',
|
|
59
|
+
language: 'html',
|
|
60
|
+
content: `
|
|
61
|
+
<style>
|
|
62
|
+
:root {
|
|
63
|
+
--host-header-height: 4rem;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
body {
|
|
67
|
+
margin: 0;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
.host-root-container {
|
|
71
|
+
width: 100vw;
|
|
72
|
+
height: calc(100vh - var(--host-header-height));
|
|
73
|
+
overflow-x: hidden;
|
|
74
|
+
overflow-y: auto;
|
|
75
|
+
padding-top: var(--host-header-height);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
.host-root-header {
|
|
79
|
+
z-index: 10;
|
|
80
|
+
position: fixed;
|
|
81
|
+
top: 0;
|
|
82
|
+
left: 0;
|
|
83
|
+
height: var(--host-header-height);
|
|
84
|
+
width: 100%;
|
|
85
|
+
background: navy;
|
|
86
|
+
color: white;
|
|
87
|
+
display: flex;
|
|
88
|
+
align-items: center;
|
|
89
|
+
padding: 0 2rem;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
.host-root-content {
|
|
93
|
+
width: 100%;
|
|
94
|
+
height: 100%;
|
|
95
|
+
display: flex;
|
|
96
|
+
justify-content: center;
|
|
97
|
+
align-items: center;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
#class-genie-container {
|
|
101
|
+
display: flex;
|
|
102
|
+
width: 100%;
|
|
103
|
+
height: 100%;
|
|
104
|
+
min-height: calc(100vh - var(--host-header-height));
|
|
105
|
+
}
|
|
106
|
+
</style>
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
<body>
|
|
110
|
+
<div class="host-root-container">
|
|
111
|
+
<header class="host-root-header">Genie Expo</header>
|
|
112
|
+
<main class="host-root-content">
|
|
113
|
+
<div id="class-genie-container"></div>
|
|
114
|
+
</main>
|
|
115
|
+
</div>
|
|
116
|
+
</body>
|
|
117
|
+
`,
|
|
118
|
+
description: `Copy the HTML code to your application. Make sure you style as shown above`
|
|
119
|
+
},
|
|
120
|
+
];
|
|
121
|
+
|
|
122
|
+
return (
|
|
123
|
+
<>
|
|
124
|
+
<style>{`
|
|
125
|
+
@media (max-width: 768px) {
|
|
126
|
+
.tab-navigation {
|
|
127
|
+
flex-direction: column !important;
|
|
128
|
+
}
|
|
129
|
+
.tab-navigation button {
|
|
130
|
+
flex: none !important;
|
|
131
|
+
border-bottom: 1px solid var(--ifm-color-emphasis-300) !important;
|
|
132
|
+
border-right: none !important;
|
|
133
|
+
}
|
|
134
|
+
.tab-navigation button:last-child {
|
|
135
|
+
border-bottom: none !important;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
`}</style>
|
|
139
|
+
<InteractiveCodePanel
|
|
140
|
+
title="🧞 Integrate Genie Experience"
|
|
141
|
+
description="Complete guide for integrating Genie AI assistant into your Unisphere application"
|
|
142
|
+
tabs={tabs}
|
|
143
|
+
defaultTab="verify-setup"
|
|
144
|
+
defaultExpanded={false}
|
|
145
|
+
showCopyButton={true}
|
|
146
|
+
/>
|
|
147
|
+
</>
|
|
148
|
+
);
|
|
149
|
+
};
|
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Tab, InteractiveCodePanel } from '../../../interactive-code-panel';
|
|
3
|
+
|
|
4
|
+
export const NotificationsReactGuide: React.FC = () => {
|
|
5
|
+
const tabs: Tab[] = [
|
|
6
|
+
{
|
|
7
|
+
id: 'verify-setup',
|
|
8
|
+
title: '1. Verify Setup',
|
|
9
|
+
icon: '✅',
|
|
10
|
+
language: 'bash',
|
|
11
|
+
content: ``,
|
|
12
|
+
description: `Ensure your Unisphere workspace is properly set up before integrating notifications.`
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
id: 'install-runtime',
|
|
16
|
+
title: '2. Install Runtime',
|
|
17
|
+
icon: '📦',
|
|
18
|
+
language: 'bash',
|
|
19
|
+
content: `npm install @unisphere/runtime-react`,
|
|
20
|
+
description: `Install the React-optimized Unisphere runtime package for host applications.`
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
id: 'configure-provider',
|
|
24
|
+
title: '3. Configure Provider',
|
|
25
|
+
icon: '⚙️',
|
|
26
|
+
language: 'tsx',
|
|
27
|
+
content: `import React from 'react';
|
|
28
|
+
import { UnisphereProvider } from '@unisphere/runtime-react';
|
|
29
|
+
|
|
30
|
+
function HostAppComponent() {
|
|
31
|
+
const unisphereConfiguration = React.useMemo(() => ({
|
|
32
|
+
serverUrl: process.env.REACT_APP_UNISPHERE_SERVER_URL,
|
|
33
|
+
runtimes: [{
|
|
34
|
+
widgetName: 'unisphere.widget.notifications',
|
|
35
|
+
runtimeName: 'notifications',
|
|
36
|
+
settings: {},
|
|
37
|
+
runtimeArea: { target: 'body' }
|
|
38
|
+
}]
|
|
39
|
+
}), []);
|
|
40
|
+
|
|
41
|
+
return (
|
|
42
|
+
<UnisphereProvider initialConfiguration={unisphereConfiguration}>
|
|
43
|
+
<MyApplication />
|
|
44
|
+
</UnisphereProvider>
|
|
45
|
+
);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
export default HostAppComponent;`,
|
|
49
|
+
description: `Configure the UnisphereProvider with notifications runtime. Replace serverUrl with your actual Unisphere server URL.`
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
id: 'install-notifications',
|
|
53
|
+
title: '4. Install Notifications',
|
|
54
|
+
icon: '🔔',
|
|
55
|
+
language: 'bash',
|
|
56
|
+
content: `npm install @unisphere/notifications-runtime-react @unisphere/notifications-core`,
|
|
57
|
+
description: `Install the React notifications runtime and core packages.`
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
id: 'setup-notifications-provider',
|
|
61
|
+
title: '5. Setup Provider',
|
|
62
|
+
icon: '🔧',
|
|
63
|
+
language: 'tsx',
|
|
64
|
+
content: `import React from 'react';
|
|
65
|
+
import { UnisphereProvider } from '@unisphere/runtime-react';
|
|
66
|
+
import { UnisphereNotificationsProvider } from '@unisphere/notifications-runtime-react';
|
|
67
|
+
|
|
68
|
+
function App() {
|
|
69
|
+
const unisphereConfiguration = React.useMemo(() => ({
|
|
70
|
+
serverUrl: process.env.REACT_APP_UNISPHERE_SERVER_URL,
|
|
71
|
+
runtimes: [{
|
|
72
|
+
widgetName: 'unisphere.widget.notifications',
|
|
73
|
+
runtimeName: 'notifications',
|
|
74
|
+
settings: {},
|
|
75
|
+
runtimeArea: { target: 'body' }
|
|
76
|
+
}]
|
|
77
|
+
}), []);
|
|
78
|
+
|
|
79
|
+
return (
|
|
80
|
+
<UnisphereProvider initialConfiguration={unisphereConfiguration}>
|
|
81
|
+
<UnisphereNotificationsProvider>
|
|
82
|
+
<MyApplication />
|
|
83
|
+
</UnisphereNotificationsProvider>
|
|
84
|
+
</UnisphereProvider>
|
|
85
|
+
);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
export default App;`,
|
|
89
|
+
description: `Wrap your app with both UnisphereProvider and UnisphereNotificationsProvider for complete setup.`
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
id: 'show-notifications',
|
|
93
|
+
title: '6. Show Notifications',
|
|
94
|
+
icon: '✨',
|
|
95
|
+
language: 'tsx',
|
|
96
|
+
content: `import React, { useContext } from 'react';
|
|
97
|
+
import { UnisphereNotificationsContext, NotificationTypes } from '@unisphere/notifications-runtime-react';
|
|
98
|
+
|
|
99
|
+
function MyComponent() {
|
|
100
|
+
const { addNotification } = useContext(UnisphereNotificationsContext);
|
|
101
|
+
|
|
102
|
+
const showNotification = () => {
|
|
103
|
+
addNotification({
|
|
104
|
+
type: NotificationTypes.Toast,
|
|
105
|
+
content: { message: "Hello everyone!" },
|
|
106
|
+
author: {
|
|
107
|
+
name: "Brian Dennis",
|
|
108
|
+
position: "Director of Brand, Kaltura",
|
|
109
|
+
url: "https://avatar.com",
|
|
110
|
+
},
|
|
111
|
+
buttons: [{
|
|
112
|
+
id: 'btn-1',
|
|
113
|
+
type: 'link',
|
|
114
|
+
label: 'Read Post',
|
|
115
|
+
url: 'www.example.com'
|
|
116
|
+
}]
|
|
117
|
+
});
|
|
118
|
+
};
|
|
119
|
+
|
|
120
|
+
return (
|
|
121
|
+
<button onClick={showNotification}>
|
|
122
|
+
Show Notification
|
|
123
|
+
</button>
|
|
124
|
+
);
|
|
125
|
+
}`,
|
|
126
|
+
description: `Use the notifications context to display toast notifications with author information and action buttons.`
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
id: 'custom-hook',
|
|
130
|
+
title: '7. Custom Hook',
|
|
131
|
+
icon: '🎣',
|
|
132
|
+
language: 'tsx',
|
|
133
|
+
content: `import { useContext, useCallback } from 'react';
|
|
134
|
+
import { UnisphereNotificationsContext, NotificationTypes } from '@unisphere/notifications-runtime-react';
|
|
135
|
+
|
|
136
|
+
// Custom hook for common notification patterns
|
|
137
|
+
export const useNotifications = () => {
|
|
138
|
+
const { addNotification } = useContext(UnisphereNotificationsContext);
|
|
139
|
+
|
|
140
|
+
const showSuccess = useCallback((message: string, options?: any) => {
|
|
141
|
+
addNotification({
|
|
142
|
+
type: NotificationTypes.Toast,
|
|
143
|
+
content: { message, title: "Success" },
|
|
144
|
+
author: { name: "System", position: "Success Handler" },
|
|
145
|
+
duration: 3000,
|
|
146
|
+
priority: 'normal',
|
|
147
|
+
...options
|
|
148
|
+
});
|
|
149
|
+
}, [addNotification]);
|
|
150
|
+
|
|
151
|
+
const showError = useCallback((message: string, options?: any) => {
|
|
152
|
+
addNotification({
|
|
153
|
+
type: NotificationTypes.Toast,
|
|
154
|
+
content: { message, title: "Error" },
|
|
155
|
+
author: { name: "System", position: "Error Handler" },
|
|
156
|
+
persistent: true,
|
|
157
|
+
priority: 'urgent',
|
|
158
|
+
...options
|
|
159
|
+
});
|
|
160
|
+
}, [addNotification]);
|
|
161
|
+
|
|
162
|
+
return { showSuccess, showError, addNotification };
|
|
163
|
+
};
|
|
164
|
+
|
|
165
|
+
// Usage in component
|
|
166
|
+
function MyComponent() {
|
|
167
|
+
const { showSuccess, showError } = useNotifications();
|
|
168
|
+
|
|
169
|
+
const handleSave = async () => {
|
|
170
|
+
try {
|
|
171
|
+
await saveData();
|
|
172
|
+
showSuccess("Data saved successfully!");
|
|
173
|
+
} catch (error) {
|
|
174
|
+
showError("Failed to save data. Please try again.");
|
|
175
|
+
}
|
|
176
|
+
};
|
|
177
|
+
|
|
178
|
+
return <button onClick={handleSave}>Save Data</button>;
|
|
179
|
+
}`,
|
|
180
|
+
description: `Create reusable custom hooks for common notification patterns with success, error, and info helpers.`
|
|
181
|
+
}
|
|
182
|
+
];
|
|
183
|
+
|
|
184
|
+
return (
|
|
185
|
+
<>
|
|
186
|
+
<style>{`
|
|
187
|
+
@media (max-width: 768px) {
|
|
188
|
+
.tab-navigation {
|
|
189
|
+
flex-direction: column !important;
|
|
190
|
+
}
|
|
191
|
+
.tab-navigation button {
|
|
192
|
+
flex: none !important;
|
|
193
|
+
border-bottom: 1px solid var(--ifm-color-emphasis-300) !important;
|
|
194
|
+
border-right: none !important;
|
|
195
|
+
}
|
|
196
|
+
.tab-navigation button:last-child {
|
|
197
|
+
border-bottom: none !important;
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
`}</style>
|
|
201
|
+
<InteractiveCodePanel
|
|
202
|
+
title="Integrate Notifications Experience - React"
|
|
203
|
+
description="Complete guide for integrating Unisphere notifications into your React application"
|
|
204
|
+
tabs={tabs}
|
|
205
|
+
defaultTab="verify-setup"
|
|
206
|
+
defaultExpanded={false}
|
|
207
|
+
showCopyButton={true}
|
|
208
|
+
/>
|
|
209
|
+
</>
|
|
210
|
+
);
|
|
211
|
+
};
|
package/dist/generators/add-documentation/templates/src/components/homepage-features/index.tsx
ADDED
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
import clsx from 'clsx';
|
|
2
|
+
import Heading from '@theme/Heading';
|
|
3
|
+
import styles from './styles.module.css';
|
|
4
|
+
|
|
5
|
+
type FeatureItem = {
|
|
6
|
+
title: string;
|
|
7
|
+
target: string;
|
|
8
|
+
description: JSX.Element;
|
|
9
|
+
Svg: React.ComponentType<React.ComponentProps<'svg'>>;
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
const FeatureList: FeatureItem[] = [
|
|
13
|
+
{
|
|
14
|
+
title: 'Robust Documentation',
|
|
15
|
+
target: 'Everyone',
|
|
16
|
+
Svg: require('@site/static/homepage/icons/Infra.svg').default,
|
|
17
|
+
description: (
|
|
18
|
+
<>
|
|
19
|
+
Access detailed guides, tutorials, and examples to get started quickly,
|
|
20
|
+
whether you're new to web development or an experienced developer.
|
|
21
|
+
</>
|
|
22
|
+
),
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
title: 'Compliance and Standards',
|
|
26
|
+
target: 'Product managers',
|
|
27
|
+
Svg: require('@site/static/homepage/icons/Standards.svg').default,
|
|
28
|
+
description: (
|
|
29
|
+
<>
|
|
30
|
+
Ensure all modules adhere to essential standards and regulations,
|
|
31
|
+
including accessibility, terms of conditions, theming, language support,
|
|
32
|
+
and recovery handling, providing a robust and compliant platform
|
|
33
|
+
experience.
|
|
34
|
+
</>
|
|
35
|
+
),
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
title: 'Reusable Experiences',
|
|
39
|
+
target: 'Product managers & developers',
|
|
40
|
+
Svg: require('@site/static/homepage/icons/Infra.svg').default,
|
|
41
|
+
description: (
|
|
42
|
+
<>
|
|
43
|
+
Benefit from highly reusable components and modules designed to ensure
|
|
44
|
+
consistency and reduce development time.
|
|
45
|
+
</>
|
|
46
|
+
),
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
title: 'Kaltura Player Integration',
|
|
50
|
+
target: 'Product managers',
|
|
51
|
+
Svg: require('@site/static/homepage/icons/Architecture.svg').default,
|
|
52
|
+
description: (
|
|
53
|
+
<>
|
|
54
|
+
Leverage deep integration with the Kaltura player, allowing seamless
|
|
55
|
+
synchronization between the player’s current time and Unisphere modules.
|
|
56
|
+
This enables displaying visual elements on the player area, player seek
|
|
57
|
+
bar, and content modules based on the current playback time.
|
|
58
|
+
</>
|
|
59
|
+
),
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
title: 'Dynamic Workspaces',
|
|
63
|
+
target: 'Product managers & professional services',
|
|
64
|
+
Svg: require('@site/static/homepage/icons/Redundancies.svg').default,
|
|
65
|
+
description: (
|
|
66
|
+
<>
|
|
67
|
+
Effortlessly create and configure an Unisphere workspace at runtime in
|
|
68
|
+
the application, allowing you to adapt to changes and updates without
|
|
69
|
+
significant code modifications.
|
|
70
|
+
</>
|
|
71
|
+
),
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
title: 'Enhanced Developer Experience',
|
|
75
|
+
target: 'Developers',
|
|
76
|
+
Svg: require('@site/static/homepage/icons/Unified.svg').default,
|
|
77
|
+
description: (
|
|
78
|
+
<>
|
|
79
|
+
Take advantage of a robust suite of tools tailored to streamline your
|
|
80
|
+
development workflow. This includes generators, boilerplates, CLI,
|
|
81
|
+
playground applications, Storybook integration, and runtime features
|
|
82
|
+
like theming and translation infrastructure.
|
|
83
|
+
</>
|
|
84
|
+
),
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
title: 'Advanced Customization',
|
|
88
|
+
target: 'Developers',
|
|
89
|
+
Svg: require('@site/static/homepage/icons/Architecture.svg').default,
|
|
90
|
+
description: (
|
|
91
|
+
<>
|
|
92
|
+
For more advanced needs, directly consume components and modules from
|
|
93
|
+
NPM or Yarn. Customize these elements to perfectly suit your specific
|
|
94
|
+
requirements.
|
|
95
|
+
</>
|
|
96
|
+
),
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
title: 'Version Control',
|
|
100
|
+
target: 'Developers',
|
|
101
|
+
Svg: require('@site/static/homepage/icons/Architecture.svg').default,
|
|
102
|
+
description: (
|
|
103
|
+
<>
|
|
104
|
+
Grow confidently with versioned components and modules that effectively
|
|
105
|
+
manage dependencies and ensure backward compatibility.
|
|
106
|
+
</>
|
|
107
|
+
),
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
title: 'Dynamic Workspaces',
|
|
111
|
+
target: 'Professional services',
|
|
112
|
+
Svg: require('@site/static/homepage/icons/Infra.svg').default,
|
|
113
|
+
description: (
|
|
114
|
+
<>
|
|
115
|
+
Effortlessly create and configure an Unisphere workspace at runtime in
|
|
116
|
+
the application, allowing you to adapt to changes and updates without
|
|
117
|
+
significant code modifications.
|
|
118
|
+
</>
|
|
119
|
+
),
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
title: 'Streamlined Delivery',
|
|
123
|
+
target: 'Professional services',
|
|
124
|
+
Svg: require('@site/static/homepage/icons/Speed.svg').default,
|
|
125
|
+
description: (
|
|
126
|
+
<>
|
|
127
|
+
Leverage our platform to accelerate project delivery, minimize risks,
|
|
128
|
+
and ensure successful implementations.
|
|
129
|
+
</>
|
|
130
|
+
),
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
title: 'Enhanced Client Value',
|
|
134
|
+
target: 'Professional services',
|
|
135
|
+
Svg: require('@site/static/homepage/icons/Cost.svg').default,
|
|
136
|
+
description: (
|
|
137
|
+
<>
|
|
138
|
+
Deliver exceptional value to your clients by creating tailored,
|
|
139
|
+
innovative solutions that exceed their expectations.
|
|
140
|
+
</>
|
|
141
|
+
),
|
|
142
|
+
},
|
|
143
|
+
];
|
|
144
|
+
|
|
145
|
+
function Feature({ title, target, Svg, description }: FeatureItem) {
|
|
146
|
+
return (
|
|
147
|
+
<div className="group relative bg-white dark:bg-gray-800 rounded-2xl p-8 shadow-sm hover:shadow-xl border border-gray-100 dark:border-gray-700 transition-all duration-300 hover:-translate-y-1">
|
|
148
|
+
{/* Gradient background on hover */}
|
|
149
|
+
<div className="absolute inset-0 bg-gradient-to-br from-blue-50/50 to-purple-100/50 dark:from-blue-900/20 dark:to-purple-800/20 rounded-2xl opacity-0 group-hover:opacity-100 transition-opacity duration-300"></div>
|
|
150
|
+
|
|
151
|
+
<div className="relative z-10">
|
|
152
|
+
{/* Icon with modern styling */}
|
|
153
|
+
<div className="w-16 h-16 mb-6 bg-gradient-to-br from-blue-500 to-purple-400 rounded-xl flex items-center justify-center shadow-lg group-hover:shadow-xl transition-shadow duration-300">
|
|
154
|
+
<Svg className="w-8 h-8 text-white" role="img" />
|
|
155
|
+
</div>
|
|
156
|
+
|
|
157
|
+
{/* Content */}
|
|
158
|
+
<div className="space-y-4">
|
|
159
|
+
<div>
|
|
160
|
+
<Heading as="h3" className="text-xl font-bold text-gray-900 dark:text-white mb-2 group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors duration-200">
|
|
161
|
+
{title}
|
|
162
|
+
</Heading>
|
|
163
|
+
<div className="inline-flex items-center px-3 py-1 bg-blue-50 dark:bg-blue-900/30 text-blue-700 dark:text-blue-300 text-sm font-medium rounded-full">
|
|
164
|
+
<svg className="w-4 h-4 mr-1" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
165
|
+
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M4.318 6.318a4.5 4.5 0 000 6.364L12 20.364l7.682-7.682a4.5 4.5 0 00-6.364-6.364L12 7.636l-1.318-1.318a4.5 4.5 0 00-6.364 0z" />
|
|
166
|
+
</svg>
|
|
167
|
+
{target} love this
|
|
168
|
+
</div>
|
|
169
|
+
</div>
|
|
170
|
+
|
|
171
|
+
<div className="text-gray-600 dark:text-gray-300 leading-relaxed">
|
|
172
|
+
{description}
|
|
173
|
+
</div>
|
|
174
|
+
</div>
|
|
175
|
+
</div>
|
|
176
|
+
</div>
|
|
177
|
+
);
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
export default function HomepageFeatures(): JSX.Element {
|
|
181
|
+
return (
|
|
182
|
+
<section className="py-20 px-4 max-w-7xl mx-auto">
|
|
183
|
+
{/* Modern section header */}
|
|
184
|
+
<div className="text-center mb-16">
|
|
185
|
+
<Heading as="h2" className="text-4xl md:text-5xl font-bold text-gray-900 dark:text-white mb-4">
|
|
186
|
+
<span className="text-transparent bg-clip-text bg-gradient-to-r from-blue-600 to-purple-400 dark:from-blue-400 dark:to-purple-300">
|
|
187
|
+
The Unisphere
|
|
188
|
+
</span>
|
|
189
|
+
{' '}
|
|
190
|
+
<span className="text-transparent bg-clip-text bg-gradient-to-r from-purple-400 to-pink-400 dark:from-purple-300 dark:to-pink-300">
|
|
191
|
+
Advantage
|
|
192
|
+
</span>
|
|
193
|
+
</Heading>
|
|
194
|
+
<p className="text-xl text-gray-600 dark:text-gray-300 max-w-3xl mx-auto leading-relaxed">
|
|
195
|
+
Discover the powerful features that make Unisphere the perfect choice for modern development teams
|
|
196
|
+
</p>
|
|
197
|
+
</div>
|
|
198
|
+
|
|
199
|
+
{/* Features grid with modern responsive design */}
|
|
200
|
+
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8">
|
|
201
|
+
{FeatureList.map((props, idx) => (
|
|
202
|
+
<Feature key={idx} {...props} />
|
|
203
|
+
))}
|
|
204
|
+
</div>
|
|
205
|
+
|
|
206
|
+
{/* Call-to-action section */}
|
|
207
|
+
<div className="mt-16 text-center">
|
|
208
|
+
<div className="bg-gradient-to-r from-blue-50 to-purple-100 dark:from-gray-800 dark:to-gray-700 rounded-2xl p-8">
|
|
209
|
+
<h3 className="text-2xl font-bold text-gray-900 dark:text-white mb-4">
|
|
210
|
+
Ready to get started?
|
|
211
|
+
</h3>
|
|
212
|
+
<p className="text-gray-600 dark:text-gray-300 mb-6 max-w-2xl mx-auto">
|
|
213
|
+
Join thousands of developers who are already building amazing applications with Unisphere
|
|
214
|
+
</p>
|
|
215
|
+
<div className="flex flex-col sm:flex-row gap-4 justify-center">
|
|
216
|
+
<a
|
|
217
|
+
href="/docs/documentation/overview"
|
|
218
|
+
className="inline-flex items-center px-6 py-3 bg-gradient-to-r from-blue-600 to-blue-700 hover:from-blue-700 hover:to-blue-800 text-white font-semibold rounded-lg shadow-md hover:shadow-lg transition-all duration-200 transform hover:-translate-y-0.5"
|
|
219
|
+
>
|
|
220
|
+
<svg className="w-5 h-5 mr-2" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
221
|
+
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M13 10V3L4 14h7v7l9-11h-7z" />
|
|
222
|
+
</svg>
|
|
223
|
+
Get Started
|
|
224
|
+
</a>
|
|
225
|
+
<a
|
|
226
|
+
href="/docs/documentation/overview"
|
|
227
|
+
className="inline-flex items-center px-6 py-3 bg-white dark:bg-gray-600 text-gray-700 dark:text-gray-200 font-semibold rounded-lg border border-gray-200 dark:border-gray-500 hover:border-gray-300 dark:hover:border-gray-400 shadow-md hover:shadow-lg transition-all duration-200 transform hover:-translate-y-0.5"
|
|
228
|
+
>
|
|
229
|
+
<svg className="w-5 h-5 mr-2" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
230
|
+
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z" />
|
|
231
|
+
</svg>
|
|
232
|
+
Learn About Unisphere
|
|
233
|
+
</a>
|
|
234
|
+
</div>
|
|
235
|
+
</div>
|
|
236
|
+
</div>
|
|
237
|
+
</section>
|
|
238
|
+
);
|
|
239
|
+
}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
.features {
|
|
2
|
+
display: flex;
|
|
3
|
+
align-items: center;
|
|
4
|
+
flex-direction: column;
|
|
5
|
+
gap: 2.5rem;
|
|
6
|
+
padding: 2rem 0;
|
|
7
|
+
width: 100%;
|
|
8
|
+
max-width: 64rem;
|
|
9
|
+
margin: 0 auto;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
.featuresContainer {
|
|
13
|
+
display: grid;
|
|
14
|
+
grid-template-columns: repeat(3, 1fr);
|
|
15
|
+
gap: 1rem;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
@media screen and (max-width: 1023px) {
|
|
19
|
+
.featuresContainer {
|
|
20
|
+
grid-template-columns: repeat(2, 1fr);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
@media screen and (max-width: 768px) {
|
|
26
|
+
.featuresContainer {
|
|
27
|
+
grid-template-columns: repeat(1, 1fr);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
.featuresContainer :last-child:nth-last-child(1):nth-child(3n + 1) {
|
|
33
|
+
grid-column: 2;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
.featureText {
|
|
37
|
+
font-size: 1.125rem;
|
|
38
|
+
line-height: 1.35rem;
|
|
39
|
+
font-weight: 500;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
.featureCard {
|
|
43
|
+
gap: 1.5rem;
|
|
44
|
+
padding: 1.5rem;
|
|
45
|
+
border: thin solid var(--uc-border-color);
|
|
46
|
+
box-shadow: none;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
.featureHeader, .featureBody {
|
|
50
|
+
padding: 0;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
.featureTarget {
|
|
54
|
+
color: #888888;
|
|
55
|
+
font-style: italic;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
.featureTitle {
|
|
59
|
+
font-size: 1.125rem;
|
|
60
|
+
line-height: 1.35rem;
|
|
61
|
+
font-weight: 700;
|
|
62
|
+
margin-bottom: 0.75rem;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
.featureIcon {
|
|
66
|
+
width: 5.25rem;
|
|
67
|
+
height: 5.25rem;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
.heading {
|
|
71
|
+
font-size: 3.5rem;
|
|
72
|
+
font-weight: 500;
|
|
73
|
+
font-style: italic;
|
|
74
|
+
line-height: 4.375rem;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
@media screen and (max-width: 489px) {
|
|
78
|
+
.heading {
|
|
79
|
+
font-size: 2.5rem;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
@media screen and (max-width: 369px) {
|
|
84
|
+
.heading {
|
|
85
|
+
font-size: 1.5rem;
|
|
86
|
+
}
|
|
87
|
+
}
|