tycho-components 0.42.5 → 0.43.1

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.
@@ -7,7 +7,7 @@ export type { ApplyAuthErrorHandlingOptions, AuthErrorHandling, CreateApiClientO
7
7
  export { getCommonDispatch, registerCommonDispatch, } from "./store/commonDispatchBridge";
8
8
  export { commonResources, featureResources, mergeResources, commonLocalization, } from "./Localization";
9
9
  export { default as ProfileService } from "./services/ProfileService";
10
- export type { Corpus, CorpusRequest, Github } from "./types/Corpus";
10
+ export type { Corpus, CorpusRequest } from "./types/Corpus";
11
11
  export { CorpusStatusNames } from "./types/CorpusStatus";
12
12
  export type { CorpusStatus } from "./types/CorpusStatus";
13
13
  export { DocumentStatusNames, DocumentEditableStatusNames, DocumentStatusTagColors, } from "./types/Document";
@@ -5,7 +5,7 @@ export const HelpTexts = {
5
5
  'title.tour': 'Live Tour',
6
6
  'title.autoOpen': 'Enable Auto-Open',
7
7
  'button.tour': 'Start Live Tour',
8
- 'button.updateLiveTourPreference': 'Update your live tour preference',
8
+ 'button.updateLiveTourPreference': 'Update preference',
9
9
  'description.tutorials': 'Access our comprehensive tutorials and documentation',
10
10
  'description.tour': 'Start an interactive tour of the platform or enable it to open automatically',
11
11
  'checkbox.autoOpen': 'Enable Auto-Open',
@@ -17,7 +17,7 @@ export const HelpTexts = {
17
17
  'title.tour': 'Tour ao Vivo',
18
18
  'title.autoOpen': 'Ativar Abertura Automática',
19
19
  'button.tour': 'Iniciar Tour ao Vivo',
20
- 'button.updateLiveTourPreference': 'Atualizar sua preferência de tour ao vivo',
20
+ 'button.updateLiveTourPreference': 'Atualizar preferência',
21
21
  'description.tutorials': 'Acesse nossos tutoriais abrangentes e documentação',
22
22
  'description.tour': 'Inicie um tour interativo da plataforma ou ative para abrir automaticamente',
23
23
  'checkbox.autoOpen': 'Ativar Abertura Automática',
@@ -27,7 +27,7 @@ export const HelpTexts = {
27
27
  'modal.title': 'Centro Assistenza',
28
28
  'title.tutorials': 'Tutorial',
29
29
  'button.tour': 'Avvia Tour Interattivo',
30
- 'button.updateLiveTourPreference': 'Aggiorna la preferenza del tour interattivo',
30
+ 'button.updateLiveTourPreference': 'Aggiorna la preferenza',
31
31
  'title.tour': 'Tour Interattivo',
32
32
  'title.autoOpen': 'Abilita Apertura Automatica',
33
33
  'description.tutorials': 'Accedi ai nostri tutorial completi e alla documentazione',
@@ -16,7 +16,6 @@ export type Corpus = {
16
16
  opened: boolean;
17
17
  featured?: boolean;
18
18
  owner?: User;
19
- github?: Github;
20
19
  images?: CorpusImage[];
21
20
  keyboardLayout?: string;
22
21
  catalog?: string[];
@@ -49,14 +48,5 @@ export type CorpusRequest = {
49
48
  rejectedDate: string | null;
50
49
  confirmedDate: string | null;
51
50
  };
52
- export type Github = {
53
- username: string;
54
- token: string;
55
- remote: string;
56
- path: string;
57
- branch: string;
58
- commit: string;
59
- isPublic: boolean;
60
- };
61
51
  export declare const EMPTY_CORPUS: Corpus;
62
52
  export {};
Binary file
@@ -22,6 +22,12 @@ type Props = {
22
22
  hideNotifications?: boolean;
23
23
  hideLanguageSelector?: boolean;
24
24
  hideHelpButton?: boolean;
25
+ /** Overrides i18n `label.platform` (e.g. CorpusHub whitelabel). */
26
+ platformName?: string;
27
+ /** Overrides i18n `label.platform.complete` in the apps drawer. */
28
+ platformCompleteName?: string;
29
+ /** Overrides the apps-drawer platform tile image. */
30
+ platformLogo?: string;
25
31
  };
26
- export default function Header({ tool, redirect, autoload, hideKeyboard, customHeader, notifications, keyboardLayout, navigateHome, navigateCorpora, navigateLogout, navigateNotLogged, helpActions, useOpenCorpora, hideCorpora, hideNotifications, hideLanguageSelector, hideHelpButton, }: Props): import("react").JSX.Element;
32
+ export default function Header({ tool, redirect, autoload, hideKeyboard, customHeader, notifications, keyboardLayout, navigateHome, navigateCorpora, navigateLogout, navigateNotLogged, helpActions, useOpenCorpora, hideCorpora, hideNotifications, hideLanguageSelector, hideHelpButton, platformName, platformCompleteName, platformLogo, }: Props): import("react").JSX.Element;
27
33
  export {};
@@ -8,10 +8,10 @@ import HeaderUser from './HeaderUser';
8
8
  import './styles.scss';
9
9
  export default function Header({ tool, redirect, autoload, hideKeyboard, customHeader, notifications, keyboardLayout, navigateHome, navigateCorpora, navigateLogout, navigateNotLogged = () => {
10
10
  location.href = '/auth';
11
- }, helpActions, useOpenCorpora = true, hideCorpora = false, hideNotifications = false, hideLanguageSelector = false, hideHelpButton = false, }) {
11
+ }, helpActions, useOpenCorpora = true, hideCorpora = false, hideNotifications = false, hideLanguageSelector = false, hideHelpButton = false, platformName, platformCompleteName, platformLogo, }) {
12
12
  const { t } = useTranslation('header');
13
13
  const homeTextsClass = cx('app-title', {
14
14
  pointer: navigateHome !== undefined,
15
15
  });
16
- return (_jsxs("div", { className: "ds-header", children: [_jsxs("div", { className: "header-left", children: [_jsx(HeaderApps, { navigateLogout: navigateLogout, navigateNotLogged: navigateNotLogged, hideKeyboard: hideKeyboard, notifications: notifications, keyboardLayout: keyboardLayout, helpActions: helpActions }), _jsxs("div", { className: homeTextsClass, onClick: () => navigateHome && navigateHome(), children: [_jsx("span", { className: "title", children: t('label.platform') }), _jsx("span", { className: "subtitle", children: tool })] }), _jsxs("div", { className: "header-corpus", children: [!hideCorpora && (_jsx(HeaderCorpora, { redirect: redirect, autoload: autoload, navigateCorpora: navigateCorpora, useOpenCorpora: useOpenCorpora })), customHeader && customHeader] })] }), _jsxs("div", { className: "header-right", children: [_jsx(HeaderButtons, { hideKeyboard: hideKeyboard, notifications: notifications, keyboardLayout: keyboardLayout, helpActions: helpActions, hideNotifications: hideNotifications, hideLanguageSelector: hideLanguageSelector, hideHelpButton: hideHelpButton }), _jsx(HeaderUser, { navigateLogout: navigateLogout, navigateNotLogged: navigateNotLogged })] })] }));
16
+ return (_jsxs("div", { className: "ds-header", children: [_jsxs("div", { className: "header-left", children: [_jsx(HeaderApps, { navigateLogout: navigateLogout, navigateNotLogged: navigateNotLogged, hideKeyboard: hideKeyboard, notifications: notifications, keyboardLayout: keyboardLayout, helpActions: helpActions, platformCompleteName: platformCompleteName, platformLogo: platformLogo }), _jsxs("div", { className: homeTextsClass, onClick: () => navigateHome && navigateHome(), children: [_jsx("span", { className: "title", children: platformName ?? t('label.platform') }), _jsx("span", { className: "subtitle", children: tool })] }), _jsxs("div", { className: "header-corpus", children: [!hideCorpora && (_jsx(HeaderCorpora, { redirect: redirect, autoload: autoload, navigateCorpora: navigateCorpora, useOpenCorpora: useOpenCorpora })), customHeader && customHeader] })] }), _jsxs("div", { className: "header-right", children: [_jsx(HeaderButtons, { hideKeyboard: hideKeyboard, notifications: notifications, keyboardLayout: keyboardLayout, helpActions: helpActions, hideNotifications: hideNotifications, hideLanguageSelector: hideLanguageSelector, hideHelpButton: hideHelpButton }), _jsx(HeaderUser, { navigateLogout: navigateLogout, navigateNotLogged: navigateNotLogged })] })] }));
17
17
  }
@@ -10,6 +10,8 @@ type Props = {
10
10
  };
11
11
  keyboardLayout?: string;
12
12
  helpActions?: HelpAction[];
13
+ platformCompleteName?: string;
14
+ platformLogo?: string;
13
15
  };
14
- export default function HeaderApps({ navigateLogout, navigateNotLogged, hideKeyboard, notifications, keyboardLayout, helpActions, }: Props): import("react").JSX.Element;
16
+ export default function HeaderApps({ navigateLogout, navigateNotLogged, hideKeyboard, notifications, keyboardLayout, helpActions, platformCompleteName, platformLogo, }: Props): import("react").JSX.Element;
15
17
  export {};
@@ -11,11 +11,26 @@ import { AvailableApps } from "../types/App";
11
11
  import logo from "./logo.png";
12
12
  import youtube from "./youtube.png";
13
13
  import "./style.scss";
14
- export default function HeaderApps({ navigateLogout, navigateNotLogged, hideKeyboard, notifications, keyboardLayout, helpActions, }) {
14
+ export default function HeaderApps({ navigateLogout, navigateNotLogged, hideKeyboard, notifications, keyboardLayout, helpActions, platformCompleteName, platformLogo, }) {
15
15
  const { t } = useTranslation("header-app");
16
16
  const { getCorpus, hasCorpus } = useCorpusUtils();
17
17
  const { isAdminOfAnyCorpus, isEditorOfAnyCorpus, isLogged } = useLoggedUtils();
18
18
  const [open, setOpen] = useState(false);
19
+ const platformOrigin = (import.meta.env.VITE_APP_ORIGIN ?? "").replace(/\/+$/, "");
20
+ const resources = [
21
+ {
22
+ code: "platform",
23
+ image: platformLogo || logo,
24
+ visibility: "public",
25
+ external: platformOrigin || undefined,
26
+ },
27
+ {
28
+ code: "youtube",
29
+ image: youtube,
30
+ visibility: "public",
31
+ external: "https://www.youtube.com/@tychoplatform",
32
+ },
33
+ ];
19
34
  const goto = (app, blank) => {
20
35
  const shouldAppendCorpusUid = app.appendCorpusUid !== false;
21
36
  const url = hasCorpus() && shouldAppendCorpusUid
@@ -35,25 +50,12 @@ export default function HeaderApps({ navigateLogout, navigateNotLogged, hideKeyb
35
50
  return null;
36
51
  if (item.editor && !isEditorOfAnyCorpus())
37
52
  return null;
38
- return (_jsxs("div", { className: "item", title: t(`${item.code}.desc`), onClick: () => goto(item, item.external ? true : false), children: [item.icon && _jsx(Icon, { name: item.icon, size: "medium" }), item.image && _jsx("img", { src: item.image }), _jsx("span", { className: "title-app", children: t(`${item.code}.name`) }), _jsxs("div", { className: "options", children: [item.visibility && (_jsx(Tag, { text: t(`common:label.${item.visibility}`), size: "small", color: "green", className: "d-none" })), _jsx(IconButton, { name: "open_in_new", size: "x-small", className: "icon-open", mode: "ghost", onClick: (e) => {
53
+ return (_jsxs("div", { className: "item", title: t(`${item.code}.desc`), onClick: () => goto(item, item.external ? true : false), children: [item.icon && _jsx(Icon, { name: item.icon, size: "medium" }), item.image && _jsx("img", { src: item.image }), _jsx("span", { className: "title-app", children: item.code === "platform" && platformCompleteName
54
+ ? platformCompleteName
55
+ : t(`${item.code}.name`) }), _jsxs("div", { className: "options", children: [item.visibility && (_jsx(Tag, { text: t(`common:label.${item.visibility}`), size: "small", color: "green", className: "d-none" })), _jsx(IconButton, { name: "open_in_new", size: "x-small", className: "icon-open", mode: "ghost", onClick: (e) => {
39
56
  e.stopPropagation();
40
57
  goto(item, true);
41
58
  }, title: t("label.open.tab") })] })] }, idx.valueOf()));
42
59
  };
43
- return (_jsxs("div", { className: "header-apps-container", children: [_jsx(IconButton, { name: "apps", className: "icon-apps", size: "large", onClick: () => setOpen(!open), filledIcon: true, "data-tour": "header-apps" }), open && (_jsxs(Drawer, { anchor: "left", open: true, onClose: () => setOpen(false), className: "offcanvas-apps", children: [_jsxs("div", { className: "header", children: [_jsx(IconButton, { name: "close", size: "medium", mode: "ghost", iconSize: "medium", onClick: () => setOpen(false) }), _jsx("span", { className: "header-apps-title", children: t("header:label.platform.complete") }), _jsx("div", { className: "header-profile-apps", children: _jsx(HeaderUser, { navigateLogout: navigateLogout, navigateNotLogged: navigateNotLogged }) })] }), _jsxs("div", { className: "body", children: [_jsx("div", { className: "title", children: t("label.tools") }), AvailableApps.map((item, idx) => renderItem(item, idx)), _jsx("div", { className: "title", children: t("label.quick") }), resources.map((item, idx) => renderItem(item, idx))] }), _jsx("div", { className: "footer", children: _jsx("div", { className: "header-apps-buttons", children: _jsx(HeaderButtons, { hideKeyboard: hideKeyboard, notifications: notifications, keyboardLayout: keyboardLayout, helpActions: helpActions, mobile: true }) }) })] }))] }));
60
+ return (_jsxs("div", { className: "header-apps-container", children: [_jsx(IconButton, { name: "apps", className: "icon-apps", size: "large", onClick: () => setOpen(!open), filledIcon: true, "data-tour": "header-apps" }), open && (_jsxs(Drawer, { anchor: "left", open: true, onClose: () => setOpen(false), className: "offcanvas-apps", children: [_jsxs("div", { className: "header", children: [_jsx(IconButton, { name: "close", size: "medium", mode: "ghost", iconSize: "medium", onClick: () => setOpen(false) }), _jsx("span", { className: "header-apps-title", children: platformCompleteName ?? t("header:label.platform.complete") }), _jsx("div", { className: "header-profile-apps", children: _jsx(HeaderUser, { navigateLogout: navigateLogout, navigateNotLogged: navigateNotLogged }) })] }), _jsxs("div", { className: "body", children: [_jsx("div", { className: "title", children: t("label.tools") }), AvailableApps.map((item, idx) => renderItem(item, idx)), _jsx("div", { className: "title", children: t("label.quick") }), resources.map((item, idx) => renderItem(item, idx))] }), _jsx("div", { className: "footer", children: _jsx("div", { className: "header-apps-buttons", children: _jsx(HeaderButtons, { hideKeyboard: hideKeyboard, notifications: notifications, keyboardLayout: keyboardLayout, helpActions: helpActions, mobile: true }) }) })] }))] }));
44
61
  }
45
- const platformOrigin = (import.meta.env.VITE_APP_ORIGIN ?? "").replace(/\/+$/, "");
46
- const resources = [
47
- {
48
- code: "platform",
49
- image: logo,
50
- visibility: "public",
51
- external: platformOrigin || undefined,
52
- },
53
- {
54
- code: "youtube",
55
- image: youtube,
56
- visibility: "public",
57
- external: "https://www.youtube.com/@tychoplatform",
58
- },
59
- ];
@@ -2,14 +2,12 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { useState } from 'react';
3
3
  import { useTranslation } from 'react-i18next';
4
4
  import { Button } from 'tycho-storybook';
5
- import { AppPicture } from '../../../common';
6
5
  import AppModal from '../../../common/AppModal/AppModal';
7
6
  import CookieStorage from '../../../configs/CookieStorage';
8
7
  import ProfileService from '../../../configs/services/ProfileService';
9
8
  import { useLoggedUtils } from '../../../configs/useLoggedUtils';
10
9
  import { useTourUtils } from '../../../configs/useTourUtils';
11
10
  import SecurityUtils from '../../../functions/SecurityUtils';
12
- import liveTour from './live-tour.png';
13
11
  import './style.scss';
14
12
  export default function HelpModal({ onClose, helpActions = [] }) {
15
13
  const { t } = useTranslation('help');
@@ -65,14 +63,14 @@ export default function HelpModal({ onClose, helpActions = [] }) {
65
63
  setAutoOpenEnabled(event.target.checked);
66
64
  };
67
65
  const actionItems = [
68
- {
69
- title: t('title.tutorials'),
70
- desc: t('description.tutorials'),
71
- action: handleTutorials,
72
- },
66
+ // {
67
+ // title: t('title.tutorials'),
68
+ // desc: t('description.tutorials'),
69
+ // action: handleTutorials,
70
+ // },
73
71
  ...helpActions,
74
72
  ];
75
- return (_jsxs(AppModal, { title: t('modal.title'), close: onClose, hideFooter: true, className: "help-modal", children: [_jsxs("div", { className: "live-tour", children: [_jsx(AppPicture, { src: liveTour }), _jsxs("div", { className: "tour-content", children: [_jsx("div", { className: "title", children: t('title.tour') }), _jsx("div", { className: "desc", children: t('description.tour') }), _jsxs("label", { className: "help-checkbox-label", children: [_jsx("input", { type: "checkbox", checked: autoOpenEnabled, onChange: handleAutoOpenChange, disabled: updatingLiveTour, className: "help-checkbox" }), _jsx("span", { children: t('checkbox.autoOpen') })] }), _jsx(Button, { text: isDisablingAutoOpen
76
- ? t('button.updateLiveTourPreference')
77
- : t('button.tour'), size: "small", icon: "keyboard_arrow_right", onClick: handleTourToggle, disabled: updatingLiveTour, "data-tour": "guided-tour-start" })] })] }), _jsx("div", { className: "other-actions", children: actionItems.map((item, idx) => (_jsxs("div", { className: "item", children: [_jsx("div", { className: "title", children: item.title }), _jsx("div", { className: "desc", children: item.desc }), _jsx(Button, { text: t('button.open'), size: "x-small", mode: "outlined", icon: "keyboard_arrow_right", onClick: () => handleCustomAction(item) })] }, idx))) })] }));
73
+ return (_jsxs(AppModal, { title: t('modal.title'), close: onClose, hideFooter: true, className: "help-modal", children: [_jsxs("div", { className: "item item-tour", children: [_jsx("div", { className: "title", children: t('title.tour') }), _jsx("div", { className: "desc", children: t('description.tour') }), _jsxs("label", { className: "help-checkbox-label", children: [_jsx("input", { type: "checkbox", checked: autoOpenEnabled, onChange: handleAutoOpenChange, disabled: updatingLiveTour, className: "help-checkbox" }), _jsx("span", { children: t('checkbox.autoOpen') })] }), _jsx(Button, { text: isDisablingAutoOpen
74
+ ? t('button.updateLiveTourPreference')
75
+ : t('button.tour'), size: "small", icon: isDisablingAutoOpen ? 'save' : 'keyboard_arrow_right', onClick: handleTourToggle, disabled: updatingLiveTour, "data-tour": "guided-tour-start" })] }), actionItems.map((item, idx) => (_jsxs("div", { className: "item", children: [_jsx("div", { className: "title", children: item.title }), _jsx("div", { className: "desc", children: item.desc }), _jsx(Button, { text: t('button.open'), size: "small", mode: "outlined", icon: "keyboard_arrow_right", onClick: () => handleCustomAction(item) })] }, idx)))] }));
78
76
  }
@@ -3,84 +3,49 @@
3
3
  width: 60vw !important;
4
4
 
5
5
  .body {
6
- display: flex;
7
- flex-direction: column;
8
- gap: 16px;
6
+ display: grid;
7
+ grid-template-columns: repeat(3, minmax(0, 1fr));
8
+ gap: var(--spacing-200);
9
9
 
10
- .live-tour {
10
+ .item {
11
11
  display: flex;
12
+ flex-direction: column;
13
+ min-width: 0;
12
14
  padding: 24px 24px 16px;
13
15
  border: 1px solid var(--border-subtle-2);
14
16
  border-radius: var(--radius-100);
15
- background-color: #ebeff8;
16
- gap: 48px;
17
-
18
- .tour-content {
19
- display: flex;
20
- flex-direction: column;
21
- gap: 8px;
22
- max-width: 50%;
23
17
 
24
- > .title {
25
- @include subtitle-medium-2;
26
- }
18
+ > .title {
19
+ @include subtitle-small-2;
20
+ color: var(--text-primary);
21
+ margin-bottom: 4px;
22
+ }
27
23
 
28
- > .desc {
29
- @include body-medium-1;
30
- color: var(--text-secondary);
31
- }
24
+ > .desc {
25
+ @include body-medium-1;
26
+ color: var(--text-secondary);
32
27
  }
33
28
 
34
- .app-picture-container > img {
35
- width: 240px;
36
- height: 180px;
29
+ > .ds-button {
30
+ margin-top: auto;
37
31
  }
32
+ }
33
+
34
+ .item-tour {
35
+ background-color: #ebeff8;
38
36
 
39
37
  .help-checkbox-label {
40
38
  display: flex;
41
39
  align-items: center;
42
40
  gap: var(--spacing-100);
43
41
  cursor: pointer;
44
- user-select: none;
45
- font-size: 0.875rem;
46
- margin-bottom: 16px;
42
+ margin: 8px 0;
47
43
 
48
44
  .help-checkbox {
49
45
  cursor: pointer;
50
46
  }
51
47
  }
52
48
  }
53
-
54
- .other-actions {
55
- display: grid;
56
- grid-template-columns: repeat(3, minmax(0, 1fr));
57
- gap: var(--spacing-200);
58
-
59
- .item {
60
- display: flex;
61
- flex-direction: column;
62
- min-width: 0;
63
- padding: 24px 24px 16px;
64
- border: 1px solid var(--border-subtle-2);
65
- border-radius: var(--radius-100);
66
-
67
- > .title {
68
- @include subtitle-small-2;
69
- color: var(--text-primary);
70
- margin-bottom: 4px;
71
- }
72
-
73
- > .desc {
74
- @include body-medium-1;
75
- color: var(--text-secondary);
76
- margin-bottom: 24px;
77
- }
78
-
79
- > .ds-button {
80
- margin-top: auto;
81
- }
82
- }
83
- }
84
49
  }
85
50
  }
86
51
 
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "tycho-components",
3
3
  "private": false,
4
- "version": "0.42.5",
4
+ "version": "0.43.1",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
7
7
  "exports": {