@camunda/camunda-composite-components 0.22.3 → 0.22.5
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/lib/esm/package.json +98 -0
- package/lib/esm/src/api/api.d.ts +29 -0
- package/lib/esm/src/api/api.js +92 -0
- package/lib/esm/src/api/clusters.d.ts +10 -0
- package/lib/esm/src/api/clusters.js +32 -0
- package/lib/esm/src/api/endpoints.const.d.ts +22 -0
- package/lib/esm/src/api/endpoints.const.js +70 -0
- package/lib/esm/src/api/help-center.d.ts +42 -0
- package/lib/esm/src/api/help-center.js +56 -0
- package/lib/esm/src/api/jwt.utils.d.ts +5 -0
- package/lib/esm/src/api/jwt.utils.js +26 -0
- package/lib/esm/src/api/notifications.d.ts +41 -0
- package/lib/esm/src/api/notifications.js +170 -0
- package/lib/esm/src/api/organizations.d.ts +15 -0
- package/lib/esm/src/api/organizations.js +16 -0
- package/lib/esm/src/api/profile.d.ts +20 -0
- package/lib/esm/src/api/profile.js +48 -0
- package/lib/esm/src/api/status.d.ts +7 -0
- package/lib/esm/src/api/status.js +46 -0
- package/lib/esm/src/assets/c3-icons.d.ts +5 -0
- package/lib/esm/src/assets/c3-icons.js +5 -0
- package/lib/esm/src/assets/c3-icons.types.d.ts +3 -0
- package/lib/esm/src/assets/c3-icons.types.js +6 -0
- package/lib/esm/src/components/c3-app-teaser/app-teaser-cards-config.d.ts +5 -0
- package/lib/esm/src/components/c3-app-teaser/app-teaser-cards-config.js +94 -0
- package/lib/esm/src/components/c3-app-teaser/app-teaser-cards.d.ts +17 -0
- package/lib/esm/src/components/c3-app-teaser/app-teaser-cards.js +31 -0
- package/lib/esm/src/components/c3-app-teaser/app-teaster-card.d.ts +14 -0
- package/lib/esm/src/components/c3-app-teaser/app-teaster-card.js +24 -0
- package/lib/esm/src/components/c3-app-teaser/c3-app-teaser-page.d.ts +9 -0
- package/lib/esm/src/components/c3-app-teaser/c3-app-teaser-page.js +48 -0
- package/lib/esm/src/components/c3-app-teaser/c3-app-teaser-page.test.d.ts +1 -0
- package/lib/esm/src/components/c3-app-teaser/c3-app-teaser-page.test.js +33 -0
- package/lib/esm/src/components/c3-app-teaser/c3-app-teaser.d.ts +14 -0
- package/lib/esm/src/components/c3-app-teaser/c3-app-teaser.js +53 -0
- package/lib/esm/src/components/c3-cluster-tag/c3-cluster-tag.d.ts +6 -0
- package/lib/esm/src/components/c3-cluster-tag/c3-cluster-tag.js +84 -0
- package/lib/esm/src/components/c3-cluster-tag/c3-cluster-tag.test.d.ts +1 -0
- package/lib/esm/src/components/c3-cluster-tag/c3-cluster-tag.test.js +13 -0
- package/lib/esm/src/components/c3-cluster-tag/c3-cluster-tag.types.d.ts +26 -0
- package/lib/esm/src/components/c3-cluster-tag/c3-cluster-tag.types.js +11 -0
- package/lib/esm/src/components/c3-data-table/c3-data-table.d.ts +3 -0
- package/lib/esm/src/components/c3-data-table/c3-data-table.js +509 -0
- package/lib/esm/src/components/c3-data-table/c3-data-table.types.d.ts +122 -0
- package/lib/esm/src/components/c3-data-table/c3-data-table.types.js +6 -0
- package/lib/esm/src/components/c3-data-table/link-button/link-button.d.ts +3 -0
- package/lib/esm/src/components/c3-data-table/link-button/link-button.js +15 -0
- package/lib/esm/src/components/c3-data-table/link-button/link-button.types.d.ts +8 -0
- package/lib/esm/src/components/c3-data-table/link-button/link-button.types.js +6 -0
- package/lib/esm/src/components/c3-empty-state/c3-empty-state.d.ts +3 -0
- package/lib/esm/src/components/c3-empty-state/c3-empty-state.js +15 -0
- package/lib/esm/src/components/c3-empty-state/c3-empty-state.test.d.ts +1 -0
- package/lib/esm/src/components/c3-empty-state/c3-empty-state.test.js +25 -0
- package/lib/esm/src/components/c3-empty-state/c3-empty-state.types.d.ts +29 -0
- package/lib/esm/src/components/c3-empty-state/c3-empty-state.types.js +6 -0
- package/lib/esm/src/components/c3-help-center/c3-help-center-provider.d.ts +19 -0
- package/lib/esm/src/components/c3-help-center/c3-help-center-provider.js +58 -0
- package/lib/esm/src/components/c3-help-center/c3-help-center.d.ts +16 -0
- package/lib/esm/src/components/c3-help-center/c3-help-center.js +218 -0
- package/lib/esm/src/components/c3-help-center/c3-help-center.types.d.ts +43 -0
- package/lib/esm/src/components/c3-help-center/c3-help-center.types.js +6 -0
- package/lib/esm/src/components/c3-help-center/defaultHelpCenterConfig.d.ts +10 -0
- package/lib/esm/src/components/c3-help-center/defaultHelpCenterConfig.js +17 -0
- package/lib/esm/src/components/c3-help-center/help-center-hint.d.ts +4 -0
- package/lib/esm/src/components/c3-help-center/help-center-hint.js +15 -0
- package/lib/esm/src/components/c3-help-center/help-center.d.ts +18 -0
- package/lib/esm/src/components/c3-help-center/help-center.js +189 -0
- package/lib/esm/src/components/c3-help-center/recommendations.d.ts +4 -0
- package/lib/esm/src/components/c3-help-center/recommendations.js +55 -0
- package/lib/esm/src/components/c3-help-center/styles.d.ts +4 -0
- package/lib/esm/src/components/c3-help-center/styles.js +48 -0
- package/lib/esm/src/components/c3-help-center/tabs/feedback.d.ts +9 -0
- package/lib/esm/src/components/c3-help-center/tabs/feedback.js +141 -0
- package/lib/esm/src/components/c3-help-center/tabs/tabContent.d.ts +20 -0
- package/lib/esm/src/components/c3-help-center/tabs/tabContent.js +22 -0
- package/lib/esm/src/components/c3-help-center/tabs/tabContentSkeleton.d.ts +2 -0
- package/lib/esm/src/components/c3-help-center/tabs/tabContentSkeleton.js +26 -0
- package/lib/esm/src/components/c3-help-center/tile.d.ts +10 -0
- package/lib/esm/src/components/c3-help-center/tile.js +61 -0
- package/lib/esm/src/components/c3-navigation/c3-info-button.d.ts +4 -0
- package/lib/esm/src/components/c3-navigation/c3-info-button.js +9 -0
- package/lib/esm/src/components/c3-navigation/c3-navigation-actions/c3-action-buttons.d.ts +6 -0
- package/lib/esm/src/components/c3-navigation/c3-navigation-actions/c3-action-buttons.js +18 -0
- package/lib/esm/src/components/c3-navigation/c3-navigation-actions/c3-action-buttons.types.d.ts +10 -0
- package/lib/esm/src/components/c3-navigation/c3-navigation-actions/c3-action-buttons.types.js +6 -0
- package/lib/esm/src/components/c3-navigation/c3-navigation-appbar/c3-navigation-appbar.d.ts +4 -0
- package/lib/esm/src/components/c3-navigation/c3-navigation-appbar/c3-navigation-appbar.js +380 -0
- package/lib/esm/src/components/c3-navigation/c3-navigation-appbar/components.d.ts +2 -0
- package/lib/esm/src/components/c3-navigation/c3-navigation-appbar/components.js +21 -0
- package/lib/esm/src/components/c3-navigation/c3-navigation-sidebar/c3-info-sidebar.d.ts +6 -0
- package/lib/esm/src/components/c3-navigation/c3-navigation-sidebar/c3-info-sidebar.js +38 -0
- package/lib/esm/src/components/c3-navigation/c3-navigation-sidebar/c3-navigation-sidebar-element.d.ts +12 -0
- package/lib/esm/src/components/c3-navigation/c3-navigation-sidebar/c3-navigation-sidebar-element.js +68 -0
- package/lib/esm/src/components/c3-navigation/c3-navigation-sidebar/c3-navigation-sidebar.d.ts +10 -0
- package/lib/esm/src/components/c3-navigation/c3-navigation-sidebar/c3-navigation-sidebar.js +87 -0
- package/lib/esm/src/components/c3-navigation/c3-navigation-sidebar/c3-navigation-sidebar.types.d.ts +81 -0
- package/lib/esm/src/components/c3-navigation/c3-navigation-sidebar/c3-navigation-sidebar.types.js +6 -0
- package/lib/esm/src/components/c3-navigation/c3-navigation-sidebar/c3-notification-sidebar.d.ts +5 -0
- package/lib/esm/src/components/c3-navigation/c3-navigation-sidebar/c3-notification-sidebar.js +107 -0
- package/lib/esm/src/components/c3-navigation/c3-navigation-sidebar/c3-sidebar-state-provider.d.ts +29 -0
- package/lib/esm/src/components/c3-navigation/c3-navigation-sidebar/c3-sidebar-state-provider.js +54 -0
- package/lib/esm/src/components/c3-navigation/c3-navigation-sidebar/c3-user-sidebar.d.ts +6 -0
- package/lib/esm/src/components/c3-navigation/c3-navigation-sidebar/c3-user-sidebar.js +57 -0
- package/lib/esm/src/components/c3-navigation/c3-navigation-sidebar/components.d.ts +2 -0
- package/lib/esm/src/components/c3-navigation/c3-navigation-sidebar/components.js +11 -0
- package/lib/esm/src/components/c3-navigation/c3-navigation.d.ts +7 -0
- package/lib/esm/src/components/c3-navigation/c3-navigation.js +262 -0
- package/lib/esm/src/components/c3-navigation/c3-navigation.test.d.ts +1 -0
- package/lib/esm/src/components/c3-navigation/c3-navigation.test.js +89 -0
- package/lib/esm/src/components/c3-navigation/c3-navigation.types.d.ts +97 -0
- package/lib/esm/src/components/c3-navigation/c3-navigation.types.js +6 -0
- package/lib/esm/src/components/c3-navigation/c3-notification-provider/c3-notification-container.d.ts +13 -0
- package/lib/esm/src/components/c3-navigation/c3-notification-provider/c3-notification-container.js +100 -0
- package/lib/esm/src/components/c3-navigation/c3-notification-provider/c3-notification-provider.d.ts +19 -0
- package/lib/esm/src/components/c3-navigation/c3-notification-provider/c3-notification-provider.js +110 -0
- package/lib/esm/src/components/c3-navigation/c3-org-name.d.ts +6 -0
- package/lib/esm/src/components/c3-navigation/c3-org-name.js +34 -0
- package/lib/esm/src/components/c3-navigation/c3-org-sidebar/c3-org-sidebar.d.ts +6 -0
- package/lib/esm/src/components/c3-navigation/c3-org-sidebar/c3-org-sidebar.js +188 -0
- package/lib/esm/src/components/c3-navigation/c3-org-sidebar/components.d.ts +29 -0
- package/lib/esm/src/components/c3-navigation/c3-org-sidebar/components.js +92 -0
- package/lib/esm/src/components/c3-navigation/helpers.d.ts +8 -0
- package/lib/esm/src/components/c3-navigation/helpers.js +58 -0
- package/lib/esm/src/components/c3-navigation/index.d.ts +2 -0
- package/lib/esm/src/components/c3-navigation/index.js +8 -0
- package/lib/esm/src/components/c3-navigation/stories/story-helpers.d.ts +35 -0
- package/lib/esm/src/components/c3-navigation/stories/story-helpers.js +264 -0
- package/lib/esm/src/components/c3-navigation/stories/story-templates.d.ts +9 -0
- package/lib/esm/src/components/c3-navigation/stories/story-templates.js +38 -0
- package/lib/esm/src/components/c3-onboarding-survey/c3-onboarding-survey.d.ts +14 -0
- package/lib/esm/src/components/c3-onboarding-survey/c3-onboarding-survey.js +94 -0
- package/lib/esm/src/components/c3-onboarding-survey/defaultOnboardingConfig.d.ts +16 -0
- package/lib/esm/src/components/c3-onboarding-survey/defaultOnboardingConfig.js +8 -0
- package/lib/esm/src/components/c3-onboarding-survey/elements/dropdownSelect.d.ts +15 -0
- package/lib/esm/src/components/c3-onboarding-survey/elements/dropdownSelect.js +58 -0
- package/lib/esm/src/components/c3-onboarding-survey/elements/inlineNotification.d.ts +3 -0
- package/lib/esm/src/components/c3-onboarding-survey/elements/inlineNotification.js +10 -0
- package/lib/esm/src/components/c3-onboarding-survey/elements/radioGroupMulti.d.ts +7 -0
- package/lib/esm/src/components/c3-onboarding-survey/elements/radioGroupMulti.js +53 -0
- package/lib/esm/src/components/c3-onboarding-survey/elements/radioGroupSingle.d.ts +7 -0
- package/lib/esm/src/components/c3-onboarding-survey/elements/radioGroupSingle.js +36 -0
- package/lib/esm/src/components/c3-onboarding-survey/elements/textField.d.ts +6 -0
- package/lib/esm/src/components/c3-onboarding-survey/elements/textField.js +14 -0
- package/lib/esm/src/components/c3-onboarding-survey/helpers.d.ts +1 -0
- package/lib/esm/src/components/c3-onboarding-survey/helpers.js +10 -0
- package/lib/esm/src/components/c3-onboarding-survey/onboarding.types.d.ts +30 -0
- package/lib/esm/src/components/c3-onboarding-survey/onboarding.types.js +13 -0
- package/lib/esm/src/components/c3-onboarding-survey/onboardingModal.d.ts +25 -0
- package/lib/esm/src/components/c3-onboarding-survey/onboardingModal.js +52 -0
- package/lib/esm/src/components/c3-onboarding-survey/onboardingPage.d.ts +21 -0
- package/lib/esm/src/components/c3-onboarding-survey/onboardingPage.js +35 -0
- package/lib/esm/src/components/c3-onboarding-survey/onboardingSurvey.d.ts +17 -0
- package/lib/esm/src/components/c3-onboarding-survey/onboardingSurvey.js +148 -0
- package/lib/esm/src/components/c3-onboarding-survey/step.d.ts +7 -0
- package/lib/esm/src/components/c3-onboarding-survey/step.js +44 -0
- package/lib/esm/src/components/c3-page/c3-breadcrumb/c3-breadcrumb.d.ts +3 -0
- package/lib/esm/src/components/c3-page/c3-breadcrumb/c3-breadcrumb.js +28 -0
- package/lib/esm/src/components/c3-page/c3-breadcrumb/c3-breadcrumb.types.d.ts +19 -0
- package/lib/esm/src/components/c3-page/c3-breadcrumb/c3-breadcrumb.types.js +6 -0
- package/lib/esm/src/components/c3-page/c3-page.d.ts +4 -0
- package/lib/esm/src/components/c3-page/c3-page.js +16 -0
- package/lib/esm/src/components/c3-page/c3-page.test.d.ts +1 -0
- package/lib/esm/src/components/c3-page/c3-page.test.js +25 -0
- package/lib/esm/src/components/c3-page/c3-page.types.d.ts +18 -0
- package/lib/esm/src/components/c3-page/c3-page.types.js +6 -0
- package/lib/esm/src/components/c3-page/c3-tabs/c3-tabs.d.ts +3 -0
- package/lib/esm/src/components/c3-page/c3-tabs/c3-tabs.js +37 -0
- package/lib/esm/src/components/c3-page/c3-tabs/c3-tabs.types.d.ts +14 -0
- package/lib/esm/src/components/c3-page/c3-tabs/c3-tabs.types.js +6 -0
- package/lib/esm/src/components/c3-responsive-stack/c3-responsive-stack.d.ts +2 -0
- package/lib/esm/src/components/c3-responsive-stack/c3-responsive-stack.js +18 -0
- package/lib/esm/src/components/c3-user-configuration/authToken.d.ts +30 -0
- package/lib/esm/src/components/c3-user-configuration/authToken.js +30 -0
- package/lib/esm/src/components/c3-user-configuration/c3-profile-provider/c3-profile-provider.d.ts +26 -0
- package/lib/esm/src/components/c3-user-configuration/c3-profile-provider/c3-profile-provider.js +117 -0
- package/lib/esm/src/components/c3-user-configuration/c3-profile-provider/carbon-theme-provider.d.ts +13 -0
- package/lib/esm/src/components/c3-user-configuration/c3-profile-provider/carbon-theme-provider.js +29 -0
- package/lib/esm/src/components/c3-user-configuration/c3-user-configuration-provider.d.ts +54 -0
- package/lib/esm/src/components/c3-user-configuration/c3-user-configuration-provider.js +43 -0
- package/lib/esm/src/components/styles.d.ts +13 -0
- package/lib/esm/src/components/styles.js +90 -0
- package/lib/esm/src/components/test-utils.d.ts +3 -0
- package/lib/esm/src/components/test-utils.js +32 -0
- package/lib/esm/src/contexts/c3-cluster-update-manager.d.ts +12 -0
- package/lib/esm/src/contexts/c3-cluster-update-manager.js +27 -0
- package/lib/esm/src/hooks/useApi.d.ts +20 -0
- package/lib/esm/src/hooks/useApi.js +54 -0
- package/lib/esm/src/index.d.ts +23 -0
- package/lib/esm/src/index.js +19 -0
- package/lib/esm/src/utils/camunda.d.ts +21 -0
- package/lib/esm/src/utils/camunda.js +59 -0
- package/lib/esm/src/utils/camunda.types.d.ts +63 -0
- package/lib/esm/src/utils/camunda.types.js +6 -0
- package/lib/esm/src/utils/versionCheck.utils.d.ts +15 -0
- package/lib/esm/src/utils/versionCheck.utils.js +79 -0
- package/package.json +18 -18
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/*
|
|
3
|
+
* Copyright Camunda Services GmbH and/or licensed to Camunda Services GmbH
|
|
4
|
+
* under one or more contributor license agreements. Licensed under a commercial license.
|
|
5
|
+
* You may not use this file except in compliance with the commercial license.
|
|
6
|
+
*/
|
|
7
|
+
import { Button, Link, MenuButton, MenuItem, Stack, Tile } from '@carbon/react';
|
|
8
|
+
import { C3ResponsiveStack } from '../c3-responsive-stack/c3-responsive-stack.js';
|
|
9
|
+
export const C3EmptyState = ({ icon, heading, description, button, buttons, link, }) => (_jsx(_Fragment, { children: _jsx(Tile, { style: {
|
|
10
|
+
paddingLeft: '5rem',
|
|
11
|
+
paddingTop: '3rem',
|
|
12
|
+
paddingBottom: '3rem',
|
|
13
|
+
}, children: _jsxs(C3ResponsiveStack, { orientation: 'horizontal', gap: '1.5rem', children: [icon && (_jsx("div", { style: { maxWidth: '80px' }, children: _jsx("img", { src: icon.path, alt: icon.altText, style: { width: '100%' } }) })), _jsxs(Stack, { gap: 3, children: [_jsx("h2", { children: heading }), _jsxs(Stack, { gap: 6, children: [_jsx("p", { style: { maxWidth: '400px' }, children: description }), _jsxs(Stack, { gap: 5, children: [buttons && buttons.length > 0 ? (_jsx("div", { style: { display: 'flex', gap: '0.5rem' }, children: buttons.map((btn, index) => 'items' in btn ? (_jsx(MenuButton, { size: 'md', disabled: btn.disabled, label: btn.label, kind: index === 0 ? undefined : 'tertiary', menuAlignment: 'bottom', children: btn.items.map((menuItem) => (_jsx(MenuItem, { onClick: menuItem.onClick, renderIcon: menuItem.icon, disabled: menuItem.disabled, label: menuItem.label }, menuItem.id))) }, btn.id)) : (_jsx(Button, { id: btn.id, size: 'md', kind: index === 0 ? undefined : 'tertiary', onClick: btn.onClick, renderIcon: btn.icon, disabled: btn.disabled, children: btn.label }, btn.id))) })) : button ? (_jsx(_Fragment, { children: 'items' in button ? (_jsx(MenuButton, { size: 'md', disabled: button.disabled, label: button.label, menuAlignment: 'bottom', children: button.items.map((menuItem) => {
|
|
14
|
+
return (_jsx(MenuItem, { onClick: menuItem.onClick, renderIcon: menuItem.icon, disabled: menuItem.disabled, label: menuItem.label }, menuItem.id));
|
|
15
|
+
}) })) : (_jsx(Button, { id: button.id, size: 'md', onClick: button.onClick, renderIcon: button.icon, disabled: button.disabled, children: button.label })) })) : null, link && (_jsx("div", { children: _jsx(Link, { target: '_blank', href: link.href, onClick: link.onClick, children: link.label }) }))] })] })] })] }) }) }));
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright Camunda Services GmbH and/or licensed to Camunda Services GmbH
|
|
3
|
+
* under one or more contributor license agreements. Licensed under a commercial license.
|
|
4
|
+
* You may not use this file except in compliance with the commercial license.
|
|
5
|
+
*/
|
|
6
|
+
import { expect, test } from '@playwright/test';
|
|
7
|
+
import { getStory } from '../test-utils.js';
|
|
8
|
+
test.describe('Empty State', () => {
|
|
9
|
+
test('Basic', async ({ page }) => {
|
|
10
|
+
await getStory(page, 'components-c3emptystate--basic');
|
|
11
|
+
await expect(page).toHaveScreenshot();
|
|
12
|
+
});
|
|
13
|
+
test('No icon', async ({ page }) => {
|
|
14
|
+
await getStory(page, 'components-c3emptystate--no-icon');
|
|
15
|
+
await expect(page).toHaveScreenshot();
|
|
16
|
+
});
|
|
17
|
+
test('Button with menu', async ({ page }) => {
|
|
18
|
+
await getStory(page, 'components-c3emptystate--button-with-menu');
|
|
19
|
+
await expect(page).toHaveScreenshot();
|
|
20
|
+
});
|
|
21
|
+
test('Multiple buttons with menu button', async ({ page }) => {
|
|
22
|
+
await getStory(page, 'components-c3emptystate--multiple-buttons-with-menu-button');
|
|
23
|
+
await expect(page).toHaveScreenshot();
|
|
24
|
+
});
|
|
25
|
+
});
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { ReactElement } from 'react';
|
|
2
|
+
export type Button = {
|
|
3
|
+
onClick: () => void;
|
|
4
|
+
disabled?: boolean;
|
|
5
|
+
label: string;
|
|
6
|
+
icon?: any;
|
|
7
|
+
id?: string;
|
|
8
|
+
};
|
|
9
|
+
export type MenuButton = {
|
|
10
|
+
disabled?: boolean;
|
|
11
|
+
label: string;
|
|
12
|
+
id?: string;
|
|
13
|
+
items: Button[];
|
|
14
|
+
};
|
|
15
|
+
export interface C3EmptyStateProps {
|
|
16
|
+
heading: string;
|
|
17
|
+
description: string | ReactElement;
|
|
18
|
+
icon?: {
|
|
19
|
+
path: string;
|
|
20
|
+
altText: string;
|
|
21
|
+
};
|
|
22
|
+
button?: Button | MenuButton;
|
|
23
|
+
buttons?: Array<Button | MenuButton>;
|
|
24
|
+
link?: {
|
|
25
|
+
href: string;
|
|
26
|
+
label: string;
|
|
27
|
+
onClick?: () => void;
|
|
28
|
+
};
|
|
29
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import React, { type FC, type PropsWithChildren } from 'react';
|
|
2
|
+
export declare enum HelpCenterHintType {
|
|
3
|
+
HelpCenter = "help-center",
|
|
4
|
+
Onboarding = "onboarding"
|
|
5
|
+
}
|
|
6
|
+
export type C3HelpCenterContextValue = {
|
|
7
|
+
openHelpCenter: (showTabId?: string) => void;
|
|
8
|
+
setIsHelpCenterOpen: (isOpen: boolean) => void;
|
|
9
|
+
isHelpCenterOpen: boolean;
|
|
10
|
+
showTabId?: string | null;
|
|
11
|
+
showHint: boolean;
|
|
12
|
+
setShowHint: (showHint: boolean) => void;
|
|
13
|
+
setShowHintOnClose: (showHintOnClose: boolean) => void;
|
|
14
|
+
hintType: HelpCenterHintType;
|
|
15
|
+
setHintType: (hintType: HelpCenterHintType) => void;
|
|
16
|
+
};
|
|
17
|
+
export declare const C3HelpCenterContext: React.Context<C3HelpCenterContextValue>;
|
|
18
|
+
export declare const C3HelpCenterProvider: FC<PropsWithChildren>;
|
|
19
|
+
export declare const useC3HelpCenter: () => C3HelpCenterContextValue;
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
/*
|
|
3
|
+
* Copyright Camunda Services GmbH and/or licensed to Camunda Services GmbH
|
|
4
|
+
* under one or more contributor license agreements. Licensed under a commercial license.
|
|
5
|
+
* You may not use this file except in compliance with the commercial license.
|
|
6
|
+
*/
|
|
7
|
+
import React, { useEffect, useState, } from 'react';
|
|
8
|
+
export var HelpCenterHintType;
|
|
9
|
+
(function (HelpCenterHintType) {
|
|
10
|
+
HelpCenterHintType["HelpCenter"] = "help-center";
|
|
11
|
+
HelpCenterHintType["Onboarding"] = "onboarding";
|
|
12
|
+
})(HelpCenterHintType || (HelpCenterHintType = {}));
|
|
13
|
+
export const C3HelpCenterContext = React.createContext({
|
|
14
|
+
openHelpCenter: () => undefined,
|
|
15
|
+
setIsHelpCenterOpen: () => undefined,
|
|
16
|
+
isHelpCenterOpen: false,
|
|
17
|
+
showHint: false,
|
|
18
|
+
setShowHint: () => undefined,
|
|
19
|
+
setShowHintOnClose: () => undefined,
|
|
20
|
+
hintType: HelpCenterHintType.Onboarding,
|
|
21
|
+
setHintType: () => undefined,
|
|
22
|
+
});
|
|
23
|
+
export const C3HelpCenterProvider = ({ children }) => {
|
|
24
|
+
const [isHelpCenterOpen, setIsHelpCenterOpen] = useState(false);
|
|
25
|
+
const [activeTabId, setActiveTabId] = useState(null);
|
|
26
|
+
const [showHint, setShowHint] = useState(false);
|
|
27
|
+
const [showHintOnClose, setShowHintOnClose] = useState(false);
|
|
28
|
+
const [hintType, setHintType] = useState(HelpCenterHintType.Onboarding);
|
|
29
|
+
const openHelpCenter = (showTabId) => {
|
|
30
|
+
if (!isHelpCenterOpen) {
|
|
31
|
+
setIsHelpCenterOpen(true);
|
|
32
|
+
setShowHint(false);
|
|
33
|
+
}
|
|
34
|
+
if (showTabId)
|
|
35
|
+
setActiveTabId(showTabId);
|
|
36
|
+
};
|
|
37
|
+
useEffect(() => {
|
|
38
|
+
if (!isHelpCenterOpen) {
|
|
39
|
+
setActiveTabId(null);
|
|
40
|
+
if (showHintOnClose) {
|
|
41
|
+
setShowHintOnClose(false);
|
|
42
|
+
setTimeout(() => setShowHint(true), 240);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}, [isHelpCenterOpen]);
|
|
46
|
+
return (_jsx(C3HelpCenterContext.Provider, { value: {
|
|
47
|
+
openHelpCenter,
|
|
48
|
+
setIsHelpCenterOpen,
|
|
49
|
+
isHelpCenterOpen,
|
|
50
|
+
showTabId: activeTabId,
|
|
51
|
+
showHint,
|
|
52
|
+
setShowHint,
|
|
53
|
+
setShowHintOnClose,
|
|
54
|
+
hintType,
|
|
55
|
+
setHintType,
|
|
56
|
+
}, children: children }));
|
|
57
|
+
};
|
|
58
|
+
export const useC3HelpCenter = () => React.useContext(C3HelpCenterContext);
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { Dict } from 'mixpanel-browser';
|
|
2
|
+
import { type FC } from 'react';
|
|
3
|
+
import { type Theme } from '../c3-user-configuration/c3-profile-provider/c3-profile-provider';
|
|
4
|
+
import type { Persona } from './c3-help-center.types';
|
|
5
|
+
export interface C3HelpCenterProps {
|
|
6
|
+
origin?: 'console' | 'webmodeler' | 'operate' | 'tasklist' | 'optimize' | 'identity' | 'admin';
|
|
7
|
+
theme?: Theme;
|
|
8
|
+
flags?: string[];
|
|
9
|
+
activeTab?: string;
|
|
10
|
+
autoStartSurvey?: boolean;
|
|
11
|
+
onPersonaChange?: (persona: Persona) => void;
|
|
12
|
+
onRequestClose?: () => void;
|
|
13
|
+
onRequestOpen?: () => void;
|
|
14
|
+
mixpanelTrack?: (event: string, data: Dict | undefined) => void;
|
|
15
|
+
}
|
|
16
|
+
export declare const C3HelpCenter: FC<C3HelpCenterProps>;
|
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/*
|
|
3
|
+
* Copyright Camunda Services GmbH and/or licensed to Camunda Services GmbH
|
|
4
|
+
* under one or more contributor license agreements. Licensed under a commercial license.
|
|
5
|
+
* You may not use this file except in compliance with the commercial license.
|
|
6
|
+
*/
|
|
7
|
+
import { ActionableNotification, ComposedModal, Layer, ModalBody, ModalHeader, } from '@carbon/react';
|
|
8
|
+
import React, { useEffect, useRef, useState } from 'react';
|
|
9
|
+
import { ErrorBoundary } from 'react-error-boundary';
|
|
10
|
+
import styled from 'styled-components';
|
|
11
|
+
import { getConfig, updatePersona } from '../../api/help-center.js';
|
|
12
|
+
import { C3OnboardingSurvey } from '../c3-onboarding-survey/c3-onboarding-survey.js';
|
|
13
|
+
import { defaultTheme, useC3Profile, } from '../c3-user-configuration/c3-profile-provider/c3-profile-provider.js';
|
|
14
|
+
import { resolveTheme, } from '../c3-user-configuration/c3-profile-provider/carbon-theme-provider.js';
|
|
15
|
+
import { useC3UserConfiguration } from '../c3-user-configuration/c3-user-configuration-provider.js';
|
|
16
|
+
import { useC3HelpCenter } from './c3-help-center-provider.js';
|
|
17
|
+
import { defaultHelpCenterConfig } from './defaultHelpCenterConfig.js';
|
|
18
|
+
import { HelpCenter } from './help-center.js';
|
|
19
|
+
const StyledComposedModal = styled(ComposedModal) `
|
|
20
|
+
.cds--modal-scroll-content {
|
|
21
|
+
mask-image: none;
|
|
22
|
+
}
|
|
23
|
+
`;
|
|
24
|
+
export const C3HelpCenter = ({ autoStartSurvey, origin, flags, onRequestClose, mixpanelTrack: customMixpanelTrack, onRequestOpen, theme, onPersonaChange, activeTab, }) => {
|
|
25
|
+
const { isHelpCenterOpen: isOpen, setIsHelpCenterOpen, setShowHintOnClose, } = useC3HelpCenter();
|
|
26
|
+
const { userToken, decodedToken, activeOrganizationId, handleTheme, decodedAudience, analyticsTrack, currentApp, } = useC3UserConfiguration();
|
|
27
|
+
const { theme: themeConfig, isEnabled, reloadClusters } = useC3Profile();
|
|
28
|
+
const themeHandlingEnabled = isEnabled && !!handleTheme && !!themeConfig;
|
|
29
|
+
const themeRef = useRef('system');
|
|
30
|
+
const [resolvedTheme, setResolvedTheme] = useState(defaultTheme);
|
|
31
|
+
const [persona, setPersona] = useState(undefined);
|
|
32
|
+
const [userId, setUserId] = useState('');
|
|
33
|
+
const [helpCenterConfig, setHelpCenterConfig] = useState(defaultHelpCenterConfig);
|
|
34
|
+
const [email, setEmail] = useState('');
|
|
35
|
+
const [showSurvey, setShowSurvey] = useState(autoStartSurvey);
|
|
36
|
+
if (!origin && !currentApp)
|
|
37
|
+
console.warn('No app provided to the help center. Please provide the `currentApp` prop to the `C3UserConfigurationProvider`.');
|
|
38
|
+
const hostApp = origin || currentApp === 'modeler' ? 'webmodeler' : currentApp || 'console';
|
|
39
|
+
const mixpanelTrack = (event, data) => {
|
|
40
|
+
if (customMixpanelTrack) {
|
|
41
|
+
customMixpanelTrack(event, data);
|
|
42
|
+
}
|
|
43
|
+
else if (analyticsTrack) {
|
|
44
|
+
analyticsTrack(event, data);
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
useEffect(() => {
|
|
48
|
+
const updateResolvedTheme = ({ matches }) => {
|
|
49
|
+
if (themeRef.current === 'system') {
|
|
50
|
+
setResolvedTheme(matches ? 'light' : 'dark');
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
window
|
|
54
|
+
.matchMedia('(prefers-color-scheme: light)')
|
|
55
|
+
.addEventListener('change', updateResolvedTheme);
|
|
56
|
+
return () => {
|
|
57
|
+
window
|
|
58
|
+
.matchMedia('(prefers-color-scheme: light)')
|
|
59
|
+
.removeEventListener('change', updateResolvedTheme);
|
|
60
|
+
};
|
|
61
|
+
}, []);
|
|
62
|
+
useEffect(() => {
|
|
63
|
+
const newTheme = themeHandlingEnabled ? themeConfig : theme;
|
|
64
|
+
if (newTheme) {
|
|
65
|
+
themeRef.current = newTheme;
|
|
66
|
+
}
|
|
67
|
+
setResolvedTheme(resolveTheme(newTheme || 'light'));
|
|
68
|
+
}, [theme, themeConfig, isOpen]);
|
|
69
|
+
const fetchConfig = async () => {
|
|
70
|
+
if (!userToken || !decodedAudience)
|
|
71
|
+
return;
|
|
72
|
+
const { result: config } = await getConfig(userToken, decodedAudience, activeOrganizationId);
|
|
73
|
+
setHelpCenterConfig(config || defaultHelpCenterConfig);
|
|
74
|
+
};
|
|
75
|
+
const isFirstLoad = useRef(true);
|
|
76
|
+
const fetchData = async () => {
|
|
77
|
+
if (!userToken || !decodedToken || !decodedAudience)
|
|
78
|
+
return;
|
|
79
|
+
const { userId, meta, persona: tokenPersona } = decodedToken;
|
|
80
|
+
if (tokenPersona !== undefined) {
|
|
81
|
+
setPersona(tokenPersona);
|
|
82
|
+
if (tokenPersona.wasShown) {
|
|
83
|
+
setShowSurvey(false);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
setPersona({ wasShown: false });
|
|
88
|
+
}
|
|
89
|
+
if (meta)
|
|
90
|
+
setEmail(meta.email);
|
|
91
|
+
if (userId)
|
|
92
|
+
setUserId(userId);
|
|
93
|
+
if (autoStartSurvey && !tokenPersona?.wasShown) {
|
|
94
|
+
setIsHelpCenterOpen(true);
|
|
95
|
+
onRequestOpen?.();
|
|
96
|
+
}
|
|
97
|
+
await fetchConfig();
|
|
98
|
+
isFirstLoad.current = false;
|
|
99
|
+
};
|
|
100
|
+
React.useEffect(() => {
|
|
101
|
+
fetchData();
|
|
102
|
+
}, [JSON.stringify(decodedToken), decodedAudience]);
|
|
103
|
+
useEffect(() => {
|
|
104
|
+
if (isFirstLoad.current ||
|
|
105
|
+
!userToken ||
|
|
106
|
+
!decodedAudience ||
|
|
107
|
+
!persona?.complete)
|
|
108
|
+
return;
|
|
109
|
+
fetchConfig();
|
|
110
|
+
reloadClusters();
|
|
111
|
+
}, [persona?.complete]);
|
|
112
|
+
useEffect(() => {
|
|
113
|
+
if (isFirstLoad.current || !activeOrganizationId)
|
|
114
|
+
return;
|
|
115
|
+
fetchConfig();
|
|
116
|
+
reloadClusters();
|
|
117
|
+
}, [activeOrganizationId]);
|
|
118
|
+
React.useEffect(() => {
|
|
119
|
+
const tabs = helpCenterConfig.tabs;
|
|
120
|
+
const firstTab = tabs[0]?.id;
|
|
121
|
+
if (isOpen) {
|
|
122
|
+
if (autoStartSurvey && !persona?.wasShown) {
|
|
123
|
+
setShowHintOnClose(true);
|
|
124
|
+
}
|
|
125
|
+
if (persona && !persona.wasShown && decodedAudience) {
|
|
126
|
+
updatePersona({
|
|
127
|
+
newPersona: { ...persona, wasShown: true },
|
|
128
|
+
audience: decodedAudience,
|
|
129
|
+
accessToken: userToken,
|
|
130
|
+
orgId: activeOrganizationId,
|
|
131
|
+
userId,
|
|
132
|
+
});
|
|
133
|
+
setPersona({ wasShown: true });
|
|
134
|
+
}
|
|
135
|
+
mixpanelTrack?.('helpcenter:open', {
|
|
136
|
+
to: activeTab ?? firstTab,
|
|
137
|
+
from: origin,
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
}, [isOpen]);
|
|
141
|
+
const onRequestRetakeSurvey = () => {
|
|
142
|
+
if (!userToken || !activeOrganizationId || !decodedAudience)
|
|
143
|
+
return;
|
|
144
|
+
const newPersona = {
|
|
145
|
+
...persona,
|
|
146
|
+
...{ nextStep: 0, complete: false },
|
|
147
|
+
};
|
|
148
|
+
setPersona(newPersona);
|
|
149
|
+
updatePersona({
|
|
150
|
+
newPersona,
|
|
151
|
+
audience: decodedAudience,
|
|
152
|
+
accessToken: userToken,
|
|
153
|
+
orgId: activeOrganizationId,
|
|
154
|
+
userId,
|
|
155
|
+
});
|
|
156
|
+
onPersonaChange?.(newPersona);
|
|
157
|
+
setShowSurvey(true);
|
|
158
|
+
};
|
|
159
|
+
const onRequestResumeSurvey = () => {
|
|
160
|
+
if (!userToken || !activeOrganizationId || !decodedAudience)
|
|
161
|
+
return;
|
|
162
|
+
const newPersona = { ...persona, ...{ complete: false, wasShown: true } };
|
|
163
|
+
setPersona(newPersona);
|
|
164
|
+
updatePersona({
|
|
165
|
+
newPersona,
|
|
166
|
+
audience: decodedAudience,
|
|
167
|
+
accessToken: userToken,
|
|
168
|
+
orgId: activeOrganizationId,
|
|
169
|
+
userId,
|
|
170
|
+
});
|
|
171
|
+
onPersonaChange?.(newPersona);
|
|
172
|
+
setShowSurvey(true);
|
|
173
|
+
};
|
|
174
|
+
const onRequestSkipSurvey = () => {
|
|
175
|
+
if (!userToken || !activeOrganizationId || !decodedAudience)
|
|
176
|
+
return;
|
|
177
|
+
const newPersona = { ...persona, ...{ complete: false, wasShown: true } };
|
|
178
|
+
setPersona(newPersona);
|
|
179
|
+
updatePersona({
|
|
180
|
+
newPersona,
|
|
181
|
+
audience: decodedAudience,
|
|
182
|
+
accessToken: userToken,
|
|
183
|
+
orgId: activeOrganizationId,
|
|
184
|
+
userId,
|
|
185
|
+
});
|
|
186
|
+
onPersonaChange?.(newPersona);
|
|
187
|
+
setShowSurvey(false);
|
|
188
|
+
};
|
|
189
|
+
const personaCallback = (newPersona) => {
|
|
190
|
+
setPersona(newPersona);
|
|
191
|
+
onPersonaChange?.(newPersona);
|
|
192
|
+
if (newPersona.complete) {
|
|
193
|
+
setShowSurvey(false);
|
|
194
|
+
}
|
|
195
|
+
};
|
|
196
|
+
const closeFn = () => {
|
|
197
|
+
setIsHelpCenterOpen(false);
|
|
198
|
+
if (persona && userToken && activeOrganizationId && decodedAudience) {
|
|
199
|
+
updatePersona({
|
|
200
|
+
newPersona: persona,
|
|
201
|
+
audience: decodedAudience,
|
|
202
|
+
accessToken: userToken,
|
|
203
|
+
orgId: activeOrganizationId,
|
|
204
|
+
userId,
|
|
205
|
+
});
|
|
206
|
+
}
|
|
207
|
+
onRequestClose?.();
|
|
208
|
+
fetchConfig();
|
|
209
|
+
reloadClusters();
|
|
210
|
+
// wait for modal transition
|
|
211
|
+
setTimeout(() => {
|
|
212
|
+
setShowSurvey(false);
|
|
213
|
+
}, 400);
|
|
214
|
+
};
|
|
215
|
+
return (_jsx(Layer, { children: _jsx(StyledComposedModal, { open: isOpen, size: 'lg', onClose: closeFn, className: 'help-center', "aria-label": 'HelpCenter', preventCloseOnClickOutside: true, style: showSurvey || !persona?.wasShown
|
|
216
|
+
? { backgroundColor: 'rgba(22,22,22, 0.8)' }
|
|
217
|
+
: {}, children: _jsx(ErrorBoundary, { fallbackRender: () => (_jsxs(_Fragment, { children: [_jsx(ModalHeader, { title: 'Help Center', closeModal: closeFn }), _jsx(ModalBody, { children: _jsx(ActionableNotification, { inline: true, hideCloseButton: true, lowContrast: true, kind: 'error', title: 'Something went wrong.', subtitle: 'Try reloading the page.', actionButtonLabel: 'Reload', onActionButtonClick: () => window.location.reload() }) })] })), children: showSurvey || !persona?.wasShown ? (_jsx(C3OnboardingSurvey, { personaCallback: personaCallback, persona: persona, mixpanelTrack: mixpanelTrack, onRequestClose: closeFn, onRequestSkip: onRequestSkipSurvey, theme: resolvedTheme, origin: hostApp, modal: true })) : (_jsx(HelpCenter, { configuration: helpCenterConfig, persona: persona, audience: decodedAudience || '', flags: flags, onRequestResumeSurvey: onRequestResumeSurvey, onRequestRetakeSurvey: onRequestRetakeSurvey, onRequestClose: closeFn, mixpanelTrack: mixpanelTrack, email: email, theme: resolvedTheme, origin: hostApp, initialTab: activeTab })) }) }) }));
|
|
218
|
+
};
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type { TabType } from './tabs/tabContent';
|
|
2
|
+
export interface Persona {
|
|
3
|
+
role?: string;
|
|
4
|
+
company?: string;
|
|
5
|
+
interestedInExecutingProcess?: boolean;
|
|
6
|
+
goal?: string[];
|
|
7
|
+
orchestrate?: string[];
|
|
8
|
+
client?: string;
|
|
9
|
+
clientToSupport?: string;
|
|
10
|
+
bpmnExperience?: string;
|
|
11
|
+
camunda7Experience?: string;
|
|
12
|
+
nextStep?: number;
|
|
13
|
+
complete?: boolean;
|
|
14
|
+
wasShown?: boolean;
|
|
15
|
+
[attribute: string]: unknown;
|
|
16
|
+
}
|
|
17
|
+
export interface WpCardType {
|
|
18
|
+
image: string;
|
|
19
|
+
title: string;
|
|
20
|
+
description: string;
|
|
21
|
+
timeToComplete?: string;
|
|
22
|
+
cta?: string;
|
|
23
|
+
link?: string;
|
|
24
|
+
card_id: string;
|
|
25
|
+
mixpanelId: string;
|
|
26
|
+
}
|
|
27
|
+
export interface Prerequestite {
|
|
28
|
+
id: string;
|
|
29
|
+
value: string;
|
|
30
|
+
not: boolean;
|
|
31
|
+
}
|
|
32
|
+
export interface TileConfig {
|
|
33
|
+
id: string;
|
|
34
|
+
bool: string;
|
|
35
|
+
prerequestites: Prerequestite[] | boolean;
|
|
36
|
+
}
|
|
37
|
+
export type Tab = {
|
|
38
|
+
id: string;
|
|
39
|
+
label: string;
|
|
40
|
+
title: string;
|
|
41
|
+
tiles: TileConfig[];
|
|
42
|
+
tiletype: TabType;
|
|
43
|
+
};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright Camunda Services GmbH and/or licensed to Camunda Services GmbH
|
|
3
|
+
* under one or more contributor license agreements. Licensed under a commercial license.
|
|
4
|
+
* You may not use this file except in compliance with the commercial license.
|
|
5
|
+
*/
|
|
6
|
+
export const defaultHelpCenterConfig = {
|
|
7
|
+
tabs: [
|
|
8
|
+
{
|
|
9
|
+
id: 'recommendations',
|
|
10
|
+
label: 'Your recommendations',
|
|
11
|
+
title: '',
|
|
12
|
+
tiletype: 'grid',
|
|
13
|
+
tiles: [],
|
|
14
|
+
},
|
|
15
|
+
],
|
|
16
|
+
links: [],
|
|
17
|
+
};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/*
|
|
3
|
+
* Copyright Camunda Services GmbH and/or licensed to Camunda Services GmbH
|
|
4
|
+
* under one or more contributor license agreements. Licensed under a commercial license.
|
|
5
|
+
* You may not use this file except in compliance with the commercial license.
|
|
6
|
+
*/
|
|
7
|
+
// React import not required with automatic JSX runtime
|
|
8
|
+
import { Button, Toggletip, ToggletipActions, ToggletipContent, } from '@carbon/react';
|
|
9
|
+
import { HelpCenterHintType, useC3HelpCenter } from './c3-help-center-provider.js';
|
|
10
|
+
export const HelpCenterHint = ({ children }) => {
|
|
11
|
+
const { showHint, setShowHint, hintType } = useC3HelpCenter();
|
|
12
|
+
return showHint ? (_jsxs(Toggletip, { defaultOpen: true, align: 'bottom-right', children: [children, _jsxs(ToggletipContent, { children: [_jsx("p", { children: hintType === HelpCenterHintType.HelpCenter
|
|
13
|
+
? 'Access the Help Center at any time to see your recommendations, discover guides, tutorials, or to share feedback.'
|
|
14
|
+
: 'Access the onboarding survey from the Help Center to get personalized next steps and educational content.' }), _jsx(ToggletipActions, { children: _jsx(Button, { size: 'sm', onClick: () => setShowHint(false), children: "Got it" }) })] })] })) : (children);
|
|
15
|
+
};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { Dict } from 'mixpanel-browser';
|
|
2
|
+
import { type FC } from 'react';
|
|
3
|
+
import type { Persona } from './c3-help-center.types';
|
|
4
|
+
import type { HelpCenterConfig } from './defaultHelpCenterConfig';
|
|
5
|
+
export declare const HelpCenter: FC<{
|
|
6
|
+
configuration: HelpCenterConfig;
|
|
7
|
+
persona: Persona;
|
|
8
|
+
email: string;
|
|
9
|
+
audience: string;
|
|
10
|
+
onRequestResumeSurvey: () => void;
|
|
11
|
+
onRequestRetakeSurvey: () => void;
|
|
12
|
+
onRequestClose: () => void;
|
|
13
|
+
theme: string;
|
|
14
|
+
origin: string;
|
|
15
|
+
initialTab: string | undefined;
|
|
16
|
+
flags?: string[];
|
|
17
|
+
mixpanelTrack?: (event: string, data: Dict | undefined) => void;
|
|
18
|
+
}>;
|