aquasis-fe-components 2.3.0 → 2.4.0-b

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (29) hide show
  1. package/dist/aquasis-fe-components.js +63138 -76154
  2. package/dist/aquasis-fe-components.umd.cjs +270 -344
  3. package/dist/config/aquasisApiContext.d.ts +11 -0
  4. package/dist/helpers/cookies.d.ts +3 -0
  5. package/dist/helpers/index.d.ts +1 -3
  6. package/dist/helpers/storageKeyPrefix.d.ts +4 -0
  7. package/dist/i18n/locales/br.json.d.ts +1 -0
  8. package/dist/i18n/locales/en.json.d.ts +1 -0
  9. package/dist/i18n/locales/es.json.d.ts +1 -0
  10. package/dist/i18n/locales/jp.json.d.ts +1 -0
  11. package/dist/i18n/locales/pt.json.d.ts +1 -0
  12. package/dist/i18n/locales/ro.json.d.ts +1 -0
  13. package/dist/index.css +1 -1
  14. package/dist/index.d.ts +4 -2
  15. package/dist/lib/LanguageSwitcher/index.d.ts +1 -0
  16. package/dist/lib/LanguageSwitcher/languageSwitcher.constants.d.ts +7 -0
  17. package/dist/lib/ThemeModeToggle/ThemeModeToggleConnector.d.ts +4 -0
  18. package/dist/lib/ThemeModeToggle/index.d.ts +9 -0
  19. package/dist/lib/UserModal/index.d.ts +4 -2
  20. package/dist/reactQuery/index.d.ts +1 -1
  21. package/dist/types/apiContext.d.ts +12 -0
  22. package/dist/types/app.d.ts +3 -1
  23. package/package.json +107 -113
  24. package/dist/lib/ReleaseNote/CreateReleaseNote/ReleaseNoteSlides/ReleaseNotesFields/index.d.ts +0 -6
  25. package/dist/lib/ReleaseNote/CreateReleaseNote/ReleaseNoteSlides/index.d.ts +0 -10
  26. package/dist/lib/ReleaseNote/CreateReleaseNote/ReleaseNoteTabContent/index.d.ts +0 -3
  27. package/dist/lib/ReleaseNote/CreateReleaseNote/index.d.ts +0 -12
  28. package/dist/lib/ReleaseNote/ReleaseNoteConnector.d.ts +0 -8
  29. package/dist/lib/ReleaseNote/index.d.ts +0 -15
@@ -0,0 +1,11 @@
1
+ import { AquasisApiContextPatch } from '../types/apiContext';
2
+ /**
3
+ * Merges values into the current API context (e.g. after login or tenant switch).
4
+ */
5
+ export declare function setAquasisApiContext(values: AquasisApiContextPatch): void;
6
+ /**
7
+ * Replaces the entire context. Prefer when resetting session.
8
+ */
9
+ export declare function replaceAquasisApiContext(values: AquasisApiContextPatch): void;
10
+ export declare function getAquasisApiContext(): Readonly<AquasisApiContextPatch>;
11
+ export declare function clearAquasisApiContext(): void;
@@ -0,0 +1,3 @@
1
+ export declare function getCookie<T>(key: string): T;
2
+ export declare const setCookie: (key: string, value: unknown) => void;
3
+ export declare const removeCookie: (key: string) => void;
@@ -1,9 +1,7 @@
1
1
  import { RcFile } from 'antd/es/upload';
2
+ export { getCookie, removeCookie, setCookie } from './cookies';
2
3
  export declare const getCurrTenantId: () => string;
3
4
  export declare const getCurrAppId: () => string;
4
- export declare function getCookie<T>(key: string): T;
5
- export declare const setCookie: (key: string, value: any) => void;
6
- export declare const removeCookie: (key: string) => void;
7
5
  export declare const getBase64: (img: RcFile, callback: (url: string) => void) => void;
8
6
  export declare const beforeUpload: (file: RcFile) => boolean;
9
7
  export declare const formatBase642render: (base64url?: string) => string | undefined;
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Resolves the localStorage key prefix: explicit context first, then legacy cookie.
3
+ */
4
+ export declare function resolveStorageAppNamePrefix(): string | undefined;
@@ -22,6 +22,7 @@ declare const _default: {
22
22
  }
23
23
  },
24
24
  "JPG_PNG_WARNING": "Apenas suporta ficheiros JPG ou PNG.",
25
+ "LANGUAGE_SWITCHER_ARIA": "Selecionar idioma",
25
26
  "MENU": "Menu",
26
27
  "MESSAGES": {
27
28
  "ERROR": {
@@ -22,6 +22,7 @@ declare const _default: {
22
22
  }
23
23
  },
24
24
  "JPG_PNG_WARNING": "Only supports JPG or PNG files.",
25
+ "LANGUAGE_SWITCHER_ARIA": "Select language",
25
26
  "MENU": "Menu",
26
27
  "MESSAGES": {
27
28
  "ERROR": {
@@ -22,6 +22,7 @@ declare const _default: {
22
22
  }
23
23
  },
24
24
  "JPG_PNG_WARNING": "Solo admite archivos JPG o PNG.",
25
+ "LANGUAGE_SWITCHER_ARIA": "Seleccionar idioma",
25
26
  "MENU": "Menú",
26
27
  "MESSAGES": {
27
28
  "ERROR": {
@@ -22,6 +22,7 @@ declare const _default: {
22
22
  }
23
23
  },
24
24
  "JPG_PNG_WARNING": "Only supports JPG or PNG files.",
25
+ "LANGUAGE_SWITCHER_ARIA": "言語を選択",
25
26
  "MENU": "Menu",
26
27
  "MESSAGES": {
27
28
  "ERROR": {
@@ -22,6 +22,7 @@ declare const _default: {
22
22
  }
23
23
  },
24
24
  "JPG_PNG_WARNING": "Apenas suporta ficheiros JPG ou PNG.",
25
+ "LANGUAGE_SWITCHER_ARIA": "Selecionar idioma",
25
26
  "MENU": "Menu",
26
27
  "MESSAGES": {
27
28
  "ERROR": {
@@ -22,6 +22,7 @@ declare const _default: {
22
22
  }
23
23
  },
24
24
  "JPG_PNG_WARNING": "Acceptă numai fișiere JPG sau PNG.",
25
+ "LANGUAGE_SWITCHER_ARIA": "Selectați limba",
25
26
  "MENU": "Meniu",
26
27
  "MESSAGES": {
27
28
  "ERROR": {
package/dist/index.css CHANGED
@@ -1 +1 @@
1
- .helpdesk__container .ant-card .ant-card-body{height:100%;max-height:80dvh;overflow-y:auto}.helpdesk__content{border-radius:10px;padding:10px;max-width:400px;background-color:#f7f7f7}.helpdesk__title{padding:10px 16px}.helpdesk__title.ant-typography{color:#60c5cf}.helpdesk__fields-files{flex-direction:column;margin-top:10px;width:100%}.helpdesk__fields-files .ant-upload-list{margin-top:5px;width:100%}body.dark .helpdesk__content{background-color:#333}.form__item-multiTable .ant-transfer-list-body-customize-wrapper{overflow-y:auto}.switcher__option{display:flex;align-items:center;column-gap:5px}.switcher__option img{max-width:20px}.switcher__option span{text-transform:uppercase}.ant-skeleton.ant-skeleton-element .language-switcher-skeleton.ant-skeleton-image{border-radius:50%;width:40px;height:40px}.ant-skeleton.ant-skeleton-element .language-switcher-skeleton.ant-skeleton-image svg{width:20px;height:20px}.release-notes-image.ant-upload-wrapper,.release-notes-image-uploader .ant-upload-select{width:100%}.addUser__modal .ant-form-item-control-input{min-height:0}body{height:100vh;width:100vw;overflow:hidden;background-color:#fff}body #root{height:100%}body ::placeholder{color:#919191}body .map-container{height:90dvh;width:100%}body .map-container canvas{border-radius:8px}body .map-widgets-wrapper{padding:0;min-width:400px;max-height:540px;overflow-y:auto}body .page__title-container{margin:0;padding:10px 20px;height:auto;border-bottom:1px solid rgba(5,5,5,.06)}body .page__title-container h1,body .page__title-container h2,body .page__title-container h3,body .page__title-container h4,body .page__title-container h5{color:#60c5cf;margin:0}body .recaptcha{display:flex;justify-content:center;width:100%;margin-bottom:24px}body .ant-layout-sider-trigger{border-right:1px solid rgba(5,5,5,.06)}body .ant-skeleton.ant-skeleton-element,body .ant-skeleton.ant-skeleton-element .ant-skeleton-image{width:100%;height:100%}body .filter__buttons{display:flex;align-items:center;justify-content:center;width:100%;gap:10px}body .ant-form-item .ant-form-item-control-input{min-height:32px}body .ant-form-item .ant-form-item-control-input .ant-form-item-control-input-content{display:flex}body .ant-form-item .ant-form-item-control-input .ant-form-item-control-input-content .ant-upload-wrapper{display:flex;align-items:center}body .ant-form-item .ant-form-item-control-input .ant-form-item-control-input-content .ant-upload-wrapper .ant-upload-list-item{margin:0 0 0 10px}body .avatar-uploader.ant-upload-wrapper.ant-upload-picture-circle-wrapper .ant-upload,body .avatar-uploader.ant-upload-wrapper.ant-upload-picture-circle-wrapper .ant-upload-select{margin-inline-end:0;margin-bottom:0}body .avatar-uploader .float-btn{opacity:0;position:absolute;bottom:3px;left:40%;transition:opacity .5s ease;display:flex;justify-content:center;align-items:center}body .avatar-uploader .float-btn-container{width:100%;height:100%;display:flex;justify-content:center}body .avatar-uploader .float-btn-container:hover .float-btn{opacity:1}body .rule-form-badge{margin-right:5px}body .rule-form-badge.ant-badge.ant-badge-status .ant-badge-status-dot{width:20px;height:20px}body .skeleton__loading{height:100%}body .ant-list-items .ant-list-item .ant-list-item-action{margin-inline-start:12px}body .ant-notification .ant-notification-notice.table-notification{min-width:500px}body .ant-notification .ant-notification-notice.notification-error{width:250px;padding:14px 16px}body .ant-notification .ant-notification-notice.notification-error .ant-notification-notice-icon{font-size:20px}body .ant-notification .ant-notification-notice.notification-error .ant-notification-notice-close{top:14px;right:14px}body .ant-notification .ant-notification-notice.notification-error .ant-notification-notice-message{font-size:14px;margin-inline-start:30px}body .ant-notification .ant-notification-notice.notification-error .ant-notification-notice-description{font-size:12px;margin-inline-start:30px}body .ant-spin-nested-loading,body .ant-spin-nested-loading .ant-spin-container{height:100%;width:100%}body .ant-skeleton.ant-skeleton-element.custom-skeleton{display:flex}body .esri-attribution{display:none}body .ant-carousel .slick-slider .slick-arrow{color:#60c5cf}body .ant-carousel .slick-slider .slick-dots>li>button{background:#60c5cf}body .ant-carousel .slick-slider .slick-list .slick-track .slick-slide{width:100%}body.dark{background-color:#333}body.dark .ant-layout-sider-trigger{border-right:1px solid rgba(253,253,253,.12)}body.dark .page__title-container{border-bottom:1px solid rgba(253,253,253,.12)}body.dark .ant-popover .ant-popover-arrow{--antd-arrow-background-color: #3b3b3b}body.dark .ant-popover .ant-popover-content .ant-popover-inner{background-color:#3b3b3b}body.dark .ant-badge .ant-badge-count{color:#fff;box-shadow:0 0 0 1px #3b3b3b}
1
+ .helpdesk__container .ant-card .ant-card-body{height:100%;max-height:80dvh;overflow-y:auto}.helpdesk__content{border-radius:10px;padding:10px;max-width:400px;background-color:#f7f7f7}.helpdesk__title{padding:10px 16px}.helpdesk__title.ant-typography{color:#60c5cf}.helpdesk__fields-files{flex-direction:column;margin-top:10px;width:100%}.helpdesk__fields-files .ant-upload-list{margin-top:5px;width:100%}body.dark .helpdesk__content{background-color:#333}.form__item-multiTable .ant-transfer-list-body-customize-wrapper{overflow-y:auto}.language-switcher__trigger{display:inline-flex;max-width:100%;align-items:center;gap:.5rem;border-radius:9999px;border:1px solid rgba(226,232,240,.9);background-color:#ffffffb3;padding:.375rem .625rem;text-align:left;font-size:.875rem;line-height:1.25;color:#334155;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);box-shadow:0 1px 2px #0000000d;cursor:pointer;outline:none;transition:box-shadow .2s ease,transform .2s ease,border-color .2s ease,background-color .2s ease,opacity .2s ease}.language-switcher__trigger:hover:not(:disabled){transform:translateY(-1px);border-color:#67e8f9b3;background-color:#ffffffeb;box-shadow:0 4px 6px -1px #00000014,0 2px 4px -2px #0000000f,0 0 0 1px #06b6d426}.language-switcher__trigger:focus-visible{box-shadow:0 0 0 2px #fff,0 0 0 4px #06b6d459}.language-switcher__trigger:disabled{cursor:wait;opacity:.6;pointer-events:none}.language-switcher__trigger--dark{border-color:#475569cc;background-color:#1e293ba6;color:#f1f5f9}.language-switcher__trigger--dark:hover:not(:disabled){border-color:#06b6d473;background-color:#1e293be6;box-shadow:0 4px 6px -1px #00000040,0 0 0 1px #06b6d41a}.language-switcher__trigger--dark:focus-visible{box-shadow:0 0 0 2px #020617,0 0 0 4px #22d3ee66}.language-switcher__trigger:hover:not(:disabled) .language-switcher__globe{opacity:1}.language-switcher__trigger-label{display:none;min-width:0;max-width:6.5rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.75rem;font-weight:600;letter-spacing:-.025em;color:#475569}@media(min-width:640px){.language-switcher__trigger-label{display:inline}}.language-switcher__trigger--dark .language-switcher__trigger-label{color:#cbd5e1}.language-switcher__globe{flex-shrink:0;width:.875rem;height:.875rem;font-size:.875rem;color:#0891b2;opacity:.85;transition:opacity .2s ease}.language-switcher__trigger--dark .language-switcher__globe{color:#22d3ee}.language-switcher__chevron{flex-shrink:0;width:.875rem;height:.875rem;font-size:.875rem;opacity:.45;transition:transform .2s ease-out}.language-switcher__chevron--open{transform:rotate(180deg)}.language-switcher__check-icon{font-size:.875rem}.language-switcher__panel{overflow:hidden;border-radius:1rem;border:1px solid rgba(226,232,240,.9);background-color:#fffffff2;padding:.375rem;box-shadow:0 25px 50px -12px #0f172a1a,0 12px 24px #0f172a0f;-webkit-backdrop-filter:blur(24px);backdrop-filter:blur(24px)}.language-switcher__panel--dark{border-color:#334155cc;background-color:#0f172af2;box-shadow:0 25px 50px -12px #00000080,0 12px 24px #00000040}.language-switcher__flag-shell{display:inline-flex;flex-shrink:0;-webkit-user-select:none;user-select:none;overflow:hidden;border-radius:9999px;align-items:center;justify-content:center;line-height:1;box-sizing:border-box;background:linear-gradient(to bottom,#f1f5f9,#e2e8f0e6);box-shadow:inset 0 1px #ffffff59,inset 0 0 0 1px #cbd5e1b3}.language-switcher__flag-shell--sm{width:1.5rem;height:1.5rem}.language-switcher__flag-shell--md{width:1.75rem;height:1.75rem}.language-switcher__flag-shell--emoji.language-switcher__flag-shell--sm{font-size:15px}.language-switcher__flag-shell--emoji.language-switcher__flag-shell--md{font-size:17px}.language-switcher__flag-shell--dark{background:linear-gradient(to bottom,#334155,#0f172a);box-shadow:inset 0 1px #ffffff0f,inset 0 0 0 1px #64748b73}.language-switcher__flag-img{width:100%;height:100%;object-fit:cover;object-position:center 42%;transform:scale(1.06)}.language-switcher__menu-row{display:flex;width:100%;min-width:11rem;align-items:center;gap:.75rem}.language-switcher__menu-row--flag-only{min-width:2.75rem;justify-content:center;gap:0}.language-switcher__menu-text{display:flex;min-width:0;flex:1;flex-direction:column;gap:.125rem;text-align:left}.language-switcher__menu-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.875rem;font-weight:500;color:#1e293b}.language-switcher__panel--dark .language-switcher__menu-title{color:#f1f5f9}.language-switcher__menu-code{font-size:11px;font-weight:500;letter-spacing:.06em;text-transform:uppercase;color:#94a3b8}.language-switcher__panel--dark .language-switcher__menu-code{color:#64748b}.language-switcher__check{margin-left:auto;display:flex;width:1rem;height:1rem;flex-shrink:0;align-items:center;justify-content:center;color:#0891b2}.language-switcher__check--flag-only{margin-left:0}.language-switcher__panel--dark .language-switcher__check{color:#22d3ee}.language-switcher__panel .language-switcher__ant-menu.ant-dropdown-menu,.language-switcher__panel .ant-dropdown-menu.language-switcher__ant-menu{margin:0;border:0!important;background:transparent!important;box-shadow:none!important;padding:0!important}.language-switcher__panel .language-switcher__ant-menu .ant-dropdown-menu-item,.language-switcher__panel .ant-dropdown-menu.language-switcher__ant-menu .ant-dropdown-menu-item{margin-inline:0!important;margin-block:.125rem!important;height:auto!important;line-height:1.375!important;border-radius:.75rem!important;padding:.5rem!important}.language-switcher__panel .ant-dropdown-menu-item-active{background-color:#f1f5f9e6!important}.language-switcher__panel--dark .ant-dropdown-menu-item-active{background-color:#33415580!important}.language-switcher__panel .ant-dropdown-menu-item-selected{background-color:#06b6d41f!important}.language-switcher__panel--dark .ant-dropdown-menu-item-selected{background-color:#22d3ee26!important}.theme-mode-toggle{position:relative;z-index:20;isolation:isolate;display:inline-flex;height:2.5rem;min-height:2.5rem;flex-shrink:0;-webkit-user-select:none;user-select:none;align-items:center;justify-content:center;border-radius:9999px;padding:.25rem;line-height:1;border:1px solid rgba(226,232,240,.8);background-color:#ffffffb3;box-shadow:0 1px 2px #0f172a0f,0 2px 6px #0f172a0a;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);transition:box-shadow .3s ease,background-color .3s ease}.theme-mode-toggle:hover{box-shadow:0 2px 8px #0f172a14,0 1px 2px #0f172a0d,0 0 0 1px #06b6d41a}.theme-mode-toggle:focus-visible{outline:none;box-shadow:0 0 0 2px #fff,0 0 0 4px #06b6d466}.theme-mode-toggle--dark-context{border-color:#ffffff1a;background-color:#0f172a99;box-shadow:0 1px 2px #00000059,0 2px 8px #0003}.theme-mode-toggle--dark-context:hover{box-shadow:0 2px 10px #0006,0 0 0 1px #06b6d426}.theme-mode-toggle--dark-context:focus-visible{box-shadow:0 0 0 2px #020617,0 0 0 4px #22d3ee59}.theme-mode-toggle--dark-context .theme-mode-toggle__thumb{background:linear-gradient(to bottom right,#475569,#334155);box-shadow:0 1px 3px #00000073;border-color:#ffffff1f}.theme-mode-toggle__track{position:relative;height:2rem;width:4rem;flex-shrink:0}.theme-mode-toggle__thumb{pointer-events:none;position:absolute;inset-block:0;left:0;z-index:0;width:2rem;border-radius:9999px;background:linear-gradient(to bottom right,#fff,#f1f5f9);box-shadow:0 1px 2px #0f172a1f,inset 0 1px #ffffffd9;border:1px solid rgba(15,23,42,.08);transition:transform .38s cubic-bezier(.34,1.56,.64,1);will-change:transform}.theme-mode-toggle__thumb--dark{transform:translate(2rem)}.theme-mode-toggle__icons{position:relative;z-index:10;display:grid;height:100%;width:100%;grid-template-columns:repeat(2,1fr);place-items:center}.theme-mode-toggle__icon-cell{display:flex;height:100%;width:100%;align-items:center;justify-content:center}.theme-mode-toggle__icon{display:block;width:1rem;height:1rem;flex-shrink:0;transition:color .2s ease}.theme-mode-toggle__icon--sun-active{color:#f59e0b}.theme-mode-toggle__icon--sun-idle{color:#94a3b8}.theme-mode-toggle__icon--moon-active{color:#67e8f9}.theme-mode-toggle__icon--moon-idle{color:#94a3b8}.addUser__modal .ant-form-item-control-input{min-height:0}.user-modal__header{border-bottom:1px solid rgba(226,232,240,.8);padding-bottom:.75rem}.user-modal__header--dark{border-bottom-color:#ffffff1a}.user-modal__title-block{display:flex;flex-direction:column;gap:.25rem}.user-modal__title{font-size:1rem;font-weight:600;letter-spacing:-.02em;color:#0f172a;margin:0}.user-modal__header--dark .user-modal__title{color:#f8fafc}.user-modal__meta{display:flex;flex-direction:column;gap:.125rem;padding-top:.25rem}.user-modal__display-name{font-size:.9375rem;font-weight:600;color:#1e293b}.user-modal__header--dark .user-modal__display-name{color:#f1f5f9}.user-modal__role{font-size:.75rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:#64748b}.user-modal__header--dark .user-modal__role{color:#94a3b8}.user-modal__body{padding-top:.5rem}.user-modal__container{overflow:hidden;border-radius:1rem;border:1px solid rgba(226,232,240,.9);box-shadow:0 20px 25px -5px #0f172a14,0 8px 10px -6px #0f172a0f}.user-modal__container--dark{border-color:#ffffff1f;box-shadow:0 20px 25px -5px #00000059,0 8px 10px -6px #00000040}.user-modal__form .ant-form-item-label>label{font-size:.75rem;font-weight:500;color:#475569}.user-modal__form .ant-input,.user-modal__form .ant-input-affix-wrapper{border-radius:.5rem;border-color:#e2e8f0e6;background-color:#f8fafccc}.user-modal__form--dark .ant-form-item-label>label{color:#cbd5e1}.user-modal__form--dark .ant-input,.user-modal__form--dark .ant-input-affix-wrapper{border-color:#ffffff1f;background-color:#ffffff0d}.release-notes-image.ant-upload-wrapper,.release-notes-image-uploader .ant-upload-select{width:100%}body{height:100vh;width:100vw;overflow:hidden;background-color:#fff}body #root{height:100%}body ::placeholder{color:#919191}body .map-container{height:90dvh;width:100%}body .map-container canvas{border-radius:8px}body .map-widgets-wrapper{padding:0;min-width:400px;max-height:540px;overflow-y:auto}body .page__title-container{margin:0;padding:10px 20px;height:auto;border-bottom:1px solid rgba(5,5,5,.06)}body .page__title-container h1,body .page__title-container h2,body .page__title-container h3,body .page__title-container h4,body .page__title-container h5{color:#60c5cf;margin:0}body .recaptcha{display:flex;justify-content:center;width:100%;margin-bottom:24px}body .ant-layout-sider-trigger{border-right:1px solid rgba(5,5,5,.06)}body .ant-skeleton.ant-skeleton-element,body .ant-skeleton.ant-skeleton-element .ant-skeleton-image{width:100%;height:100%}body .filter__buttons{display:flex;align-items:center;justify-content:center;width:100%;gap:10px}body .ant-form-item .ant-form-item-control-input{min-height:32px}body .ant-form-item .ant-form-item-control-input .ant-form-item-control-input-content{display:flex}body .ant-form-item .ant-form-item-control-input .ant-form-item-control-input-content .ant-upload-wrapper{display:flex;align-items:center}body .ant-form-item .ant-form-item-control-input .ant-form-item-control-input-content .ant-upload-wrapper .ant-upload-list-item{margin:0 0 0 10px}body .avatar-uploader.ant-upload-wrapper.ant-upload-picture-circle-wrapper .ant-upload,body .avatar-uploader.ant-upload-wrapper.ant-upload-picture-circle-wrapper .ant-upload-select{margin-inline-end:0;margin-bottom:0}body .avatar-uploader .float-btn{opacity:0;position:absolute;bottom:3px;left:40%;transition:opacity .5s ease;display:flex;justify-content:center;align-items:center}body .avatar-uploader .float-btn-container{width:100%;height:100%;display:flex;justify-content:center}body .avatar-uploader .float-btn-container:hover .float-btn{opacity:1}body .rule-form-badge{margin-right:5px}body .rule-form-badge.ant-badge.ant-badge-status .ant-badge-status-dot{width:20px;height:20px}body .skeleton__loading{height:100%}body .ant-list-items .ant-list-item .ant-list-item-action{margin-inline-start:12px}body .ant-notification .ant-notification-notice.table-notification{min-width:500px}body .ant-notification .ant-notification-notice.notification-error{width:250px;padding:14px 16px}body .ant-notification .ant-notification-notice.notification-error .ant-notification-notice-icon{font-size:20px}body .ant-notification .ant-notification-notice.notification-error .ant-notification-notice-close{top:14px;right:14px}body .ant-notification .ant-notification-notice.notification-error .ant-notification-notice-message{font-size:14px;margin-inline-start:30px}body .ant-notification .ant-notification-notice.notification-error .ant-notification-notice-description{font-size:12px;margin-inline-start:30px}body .ant-spin-nested-loading,body .ant-spin-nested-loading .ant-spin-container{height:100%;width:100%}body .ant-skeleton.ant-skeleton-element.custom-skeleton{display:flex}body .esri-attribution{display:none}body .ant-carousel .slick-slider .slick-arrow{color:#60c5cf}body .ant-carousel .slick-slider .slick-dots>li>button{background:#60c5cf}body .ant-carousel .slick-slider .slick-list .slick-track .slick-slide{width:100%}body.dark{background-color:#333}body.dark .ant-layout-sider-trigger{border-right:1px solid rgba(253,253,253,.12)}body.dark .page__title-container{border-bottom:1px solid rgba(253,253,253,.12)}body.dark .ant-popover .ant-popover-arrow{--antd-arrow-background-color: #3b3b3b}body.dark .ant-popover .ant-popover-content .ant-popover-inner{background-color:#3b3b3b}body.dark .ant-badge .ant-badge-count{color:#fff;box-shadow:0 0 0 1px #3b3b3b}
package/dist/index.d.ts CHANGED
@@ -1,12 +1,14 @@
1
1
  import { HelpdeskComponent as Helpdesk } from './lib/Helpdesk/HelpdeskConnector';
2
2
  import { LanguageSwitcherComponent as LanguageSwitcher } from './lib/LanguageSwitcher/LanguageSwitcherConnector';
3
- import { ReleaseNoteComponent as ReleaseNote } from './lib/ReleaseNote/ReleaseNoteConnector';
3
+ import { ThemeModeToggleComponent as ThemeModeToggle } from './lib/ThemeModeToggle/ThemeModeToggleConnector';
4
4
  import { UserModalComponent as UserModal } from './lib/UserModal/UserModalConnector';
5
5
  import { WhatsNewsComponent as WhatsNews } from './lib/WhatsNews/WhatsNewsConnector';
6
6
  import { default as i18n } from './i18n';
7
+ export type * from './types/apiContext';
7
8
  export type * from './types/app';
8
9
  export type * from './types/helpdesk';
9
10
  export type * from './types/user';
10
11
  export type * from './types/whatsNews';
12
+ export { clearAquasisApiContext, getAquasisApiContext, replaceAquasisApiContext, setAquasisApiContext, } from './config/aquasisApiContext';
11
13
  /** @deprecated ReleaseNote will be removed in the next major version. Use WhatsNews instead. */
12
- export { Helpdesk, i18n, LanguageSwitcher, ReleaseNote, UserModal, WhatsNews };
14
+ export { Helpdesk, i18n, LanguageSwitcher, ThemeModeToggle, UserModal, WhatsNews };
@@ -2,5 +2,6 @@ import { FC } from 'react';
2
2
  export interface LanguageSwitcherProps {
3
3
  onlyFlag?: boolean;
4
4
  gauApiUrl: string;
5
+ className?: string;
5
6
  }
6
7
  export declare const LanguageSwitcher: FC<LanguageSwitcherProps>;
@@ -0,0 +1,7 @@
1
+ import { LanguageSwitcherCode } from '../../types/app';
2
+ /** Emoji fallback when flag image fails to load. */
3
+ export declare const LANGUAGE_FLAG_EMOJI: Record<LanguageSwitcherCode, string>;
4
+ /** Primary label shown in the switcher (native language names). */
5
+ export declare const LANGUAGE_PRIMARY_LABEL: Record<LanguageSwitcherCode, string>;
6
+ export declare function resolveLanguageSwitcherCode(raw: string): LanguageSwitcherCode;
7
+ export declare function labelForLanguageCode(code: string): string;
@@ -0,0 +1,4 @@
1
+ import { FC } from 'react';
2
+ import { ThemeModeToggleProps } from '.';
3
+ declare const ThemeModeToggleComponent: FC<ThemeModeToggleProps>;
4
+ export { ThemeModeToggleComponent };
@@ -0,0 +1,9 @@
1
+ import { FC } from 'react';
2
+ export interface ThemeModeToggleProps {
3
+ className?: string;
4
+ }
5
+ /**
6
+ * Pill switch for light/dark theme. Syncs with Redux `app.theme` and persists to LocalStorage.
7
+ */
8
+ export declare const ThemeModeToggle: FC<ThemeModeToggleProps>;
9
+ export default ThemeModeToggle;
@@ -3,8 +3,10 @@ import { FC } from 'react';
3
3
  export interface UserModalProps {
4
4
  isOpen: boolean;
5
5
  user: IUser;
6
- /** Current application id from the host app (e.g. cookie); used to resolve the user's role for this app */
7
- appId: string;
6
+ /**
7
+ * When provided, resolves the user's role for this app from `user.userRolesApp` and shows it in the modal header.
8
+ */
9
+ appId?: string;
8
10
  /** Base URL for the GA / auth HTTP API (same value used for roles and maintain user). */
9
11
  gauApiUrl: string;
10
12
  isLoading?: boolean;
@@ -1,5 +1,5 @@
1
1
  import { IApp, ILanguage, IRole } from '../types/app';
2
2
  import { AxiosError } from 'axios';
3
3
  export declare const useGetApps: (gauApiUrl: string) => import('@tanstack/react-query').UseQueryResult<IApp[], AxiosError<unknown, any>>;
4
- export declare const useGetRoles: (gauApiUrl: string) => import('@tanstack/react-query').UseQueryResult<IRole[], AxiosError<unknown, any>>;
4
+ export declare const useGetRoles: (gauApiUrl: string, enabled?: boolean) => import('@tanstack/react-query').UseQueryResult<IRole[], AxiosError<unknown, any>>;
5
5
  export declare const useGetLanguages: (gauApiUrl: string) => import('@tanstack/react-query').UseQueryResult<ILanguage[], AxiosError<unknown, any>>;
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Explicit tenant/app identity for API requests and storage namespacing.
3
+ * Host applications should call setAquasisApiContext() at bootstrap instead of
4
+ * relying only on cookies for appId / tenantId / appName.
5
+ */
6
+ export interface AquasisApiContext {
7
+ appId: string;
8
+ tenantId: string;
9
+ /** Namespaces localStorage keys; sent as AppName header when set */
10
+ appName: string;
11
+ }
12
+ export type AquasisApiContextPatch = Partial<AquasisApiContext>;
@@ -8,7 +8,9 @@ export interface IApp {
8
8
  appName: string;
9
9
  isPrivate: boolean;
10
10
  }
11
- export type LanguageType = "EN" | "ES" | "PT" | "RO" | "BR";
11
+ export type LanguageType = "EN" | "ES" | "PT" | "RO" | "BR" | "JP";
12
+ /** Codes supported by the pill language switcher UI (matches GA language codes). */
13
+ export type LanguageSwitcherCode = LanguageType;
12
14
  export interface ILanguage {
13
15
  idLanguage: number;
14
16
  description: LanguageType;
package/package.json CHANGED
@@ -1,113 +1,107 @@
1
- {
2
- "name": "aquasis-fe-components",
3
- "private": false,
4
- "version": "2.3.0",
5
- "type": "module",
6
- "license": "ISC",
7
- "author": "Ewerton Souza",
8
- "scripts": {
9
- "dev": "vite",
10
- "build": "tsc && vite build",
11
- "lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0",
12
- "preview": "vite preview",
13
- "upd-version": "pnpm version patch --no-git-tag-version",
14
- "prepublishOnly": "pnpm run build",
15
- "publish-beta": "pnpm publish --tag beta"
16
- },
17
- "peerDependencies": {
18
- "i18next": "^25.8.0",
19
- "react": "^19.0.0",
20
- "react-dom": "^19.0.0",
21
- "react-i18next": "^16.5.4",
22
- "@tanstack/react-query": "^5.90.21"
23
- },
24
- "files": [
25
- "dist"
26
- ],
27
- "main": "dist/aquasis-fe-components.umd.cjs",
28
- "module": "dist/aquasis-fe-components.js",
29
- "types": "dist/src/index.d.ts",
30
- "exports": {
31
- ".": {
32
- "import": {
33
- "types": "./dist/src/index.d.ts",
34
- "default": "./dist/aquasis-fe-components.js"
35
- },
36
- "require": {
37
- "types": "./dist/src/index.d.ts",
38
- "default": "./dist/aquasis-fe-components.umd.cjs"
39
- }
40
- }
41
- },
42
- "repository": {
43
- "type": "git",
44
- "url": "git+https://github.com/AQUASISPT/FrontendComponents.git"
45
- },
46
- "keywords": [
47
- "react"
48
- ],
49
- "homepage": "https://github.com/AQUASISPT/FrontendComponents",
50
- "browserslist": {
51
- "production": [
52
- ">0.2%",
53
- "not dead",
54
- "not op_mini all"
55
- ],
56
- "development": [
57
- "last 1 chrome version",
58
- "last 1 firefox version",
59
- "last 1 safari version"
60
- ]
61
- },
62
- "pnpm": {
63
- "overrides": {
64
- "@rc-component/trigger": "^3.9.0"
65
- }
66
- },
67
- "devDependencies": {
68
- "@tanstack/react-query": "^5.90.21",
69
- "@types/hoist-non-react-statics": "^3.3.7",
70
- "@types/lodash": "^4.17.23",
71
- "@types/node": "^25.1.0",
72
- "@types/react": "^19.2.10",
73
- "@types/react-dom": "^19.2.3",
74
- "@typescript-eslint/eslint-plugin": "^8.54.0",
75
- "@typescript-eslint/parser": "^8.54.0",
76
- "@vitejs/plugin-react": "^5.1.2",
77
- "eslint": "^9.39.2",
78
- "eslint-plugin-react-hooks": "^7.0.1",
79
- "eslint-plugin-react-refresh": "^0.4.26",
80
- "i18next": "^25.8.0",
81
- "react": "^19.2.4",
82
- "react-dom": "^19.2.4",
83
- "react-i18next": "^16.5.4",
84
- "sass": "^1.97.3",
85
- "typescript": "^5.9.3",
86
- "vite": "^7.3.1",
87
- "vite-plugin-dts": "^4.5.4",
88
- "vite-plugin-lib-inject-css": "^2.2.2"
89
- },
90
- "dependencies": {
91
- "@ant-design/icons": "^6.1.0",
92
- "@fortawesome/fontawesome-svg-core": "^7.1.0",
93
- "@fortawesome/free-regular-svg-icons": "^7.1.0",
94
- "@fortawesome/free-solid-svg-icons": "^7.1.0",
95
- "@fortawesome/react-fontawesome": "^3.1.1",
96
- "@rc-component/trigger": "^3.9.0",
97
- "@reduxjs/toolkit": "^2.11.2",
98
- "@uidotdev/usehooks": "^2.4.1",
99
- "antd": "^6.2.2",
100
- "axios": "^1.13.4",
101
- "classnames": "^2.5.1",
102
- "dayjs": "^1.11.19",
103
- "hoist-non-react-statics": "^3.3.2",
104
- "i18next-browser-languagedetector": "^8.2.0",
105
- "lodash": "^4.17.23",
106
- "rc-motion": "^2.9.5",
107
- "rc-resize-observer": "^1.4.3",
108
- "react-redux": "^9.1.2",
109
- "react-router-dom": "^7.13.0",
110
- "redux": "^5.0.1",
111
- "universal-cookie": "^8.0.1"
112
- }
113
- }
1
+ {
2
+ "name": "aquasis-fe-components",
3
+ "private": false,
4
+ "version": "2.4.0b",
5
+ "type": "module",
6
+ "license": "ISC",
7
+ "author": "Ewerton Souza",
8
+ "peerDependencies": {
9
+ "i18next": "^25.8.0",
10
+ "react": "^19.0.0",
11
+ "react-dom": "^19.0.0",
12
+ "react-i18next": "^16.5.4",
13
+ "@tanstack/react-query": "^5.90.21"
14
+ },
15
+ "files": [
16
+ "dist"
17
+ ],
18
+ "main": "dist/aquasis-fe-components.umd.cjs",
19
+ "module": "dist/aquasis-fe-components.js",
20
+ "types": "dist/src/index.d.ts",
21
+ "exports": {
22
+ ".": {
23
+ "import": {
24
+ "types": "./dist/src/index.d.ts",
25
+ "default": "./dist/aquasis-fe-components.js"
26
+ },
27
+ "require": {
28
+ "types": "./dist/src/index.d.ts",
29
+ "default": "./dist/aquasis-fe-components.umd.cjs"
30
+ }
31
+ }
32
+ },
33
+ "repository": {
34
+ "type": "git",
35
+ "url": "git+https://github.com/AQUASISPT/FrontendComponents.git"
36
+ },
37
+ "keywords": [
38
+ "react"
39
+ ],
40
+ "homepage": "https://github.com/AQUASISPT/FrontendComponents",
41
+ "browserslist": {
42
+ "production": [
43
+ ">0.2%",
44
+ "not dead",
45
+ "not op_mini all"
46
+ ],
47
+ "development": [
48
+ "last 1 chrome version",
49
+ "last 1 firefox version",
50
+ "last 1 safari version"
51
+ ]
52
+ },
53
+ "devDependencies": {
54
+ "@tanstack/react-query": "^5.90.21",
55
+ "@types/hoist-non-react-statics": "^3.3.7",
56
+ "@types/lodash": "^4.17.23",
57
+ "@types/node": "^25.1.0",
58
+ "@types/react": "^19.2.10",
59
+ "@types/react-dom": "^19.2.3",
60
+ "@typescript-eslint/eslint-plugin": "^8.54.0",
61
+ "@typescript-eslint/parser": "^8.54.0",
62
+ "@vitejs/plugin-react": "^5.1.2",
63
+ "eslint": "^9.39.2",
64
+ "eslint-plugin-react-hooks": "^7.0.1",
65
+ "eslint-plugin-react-refresh": "^0.4.26",
66
+ "i18next": "^25.8.0",
67
+ "react": "^19.2.4",
68
+ "react-dom": "^19.2.4",
69
+ "react-i18next": "^16.5.4",
70
+ "sass": "^1.97.3",
71
+ "typescript": "^5.9.3",
72
+ "vite": "^7.3.1",
73
+ "vite-plugin-dts": "^4.5.4",
74
+ "vite-plugin-lib-inject-css": "^2.2.2"
75
+ },
76
+ "dependencies": {
77
+ "@ant-design/icons": "^6.1.0",
78
+ "@fortawesome/fontawesome-svg-core": "^7.1.0",
79
+ "@fortawesome/free-regular-svg-icons": "^7.1.0",
80
+ "@fortawesome/free-solid-svg-icons": "^7.1.0",
81
+ "@fortawesome/react-fontawesome": "^3.1.1",
82
+ "@rc-component/trigger": "^3.9.0",
83
+ "@reduxjs/toolkit": "^2.11.2",
84
+ "@uidotdev/usehooks": "^2.4.1",
85
+ "antd": "^6.2.2",
86
+ "axios": "^1.13.4",
87
+ "classnames": "^2.5.1",
88
+ "dayjs": "^1.11.19",
89
+ "hoist-non-react-statics": "^3.3.2",
90
+ "i18next-browser-languagedetector": "^8.2.0",
91
+ "lodash": "^4.17.23",
92
+ "rc-motion": "^2.9.5",
93
+ "rc-resize-observer": "^1.4.3",
94
+ "react-redux": "^9.1.2",
95
+ "react-router-dom": "^7.13.0",
96
+ "redux": "^5.0.1",
97
+ "universal-cookie": "^8.0.1"
98
+ },
99
+ "scripts": {
100
+ "dev": "vite",
101
+ "build": "tsc && vite build",
102
+ "lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0",
103
+ "preview": "vite preview",
104
+ "upd-version": "pnpm version patch --no-git-tag-version",
105
+ "publish-beta": "pnpm publish --tag beta --no-git-checks"
106
+ }
107
+ }
@@ -1,6 +0,0 @@
1
- import { FC } from 'react';
2
- type Props = {
3
- index: number;
4
- };
5
- export declare const ReleaseNotesFields: FC<Props>;
6
- export {};
@@ -1,10 +0,0 @@
1
- import { ActiveSlide } from '../../../../types/releaseNotes';
2
- import { CarouselProps } from 'antd/es/carousel';
3
- import { FC } from 'react';
4
- export interface ReleaseNotesSlidesProps {
5
- idLanguage: number;
6
- currentSlide: ActiveSlide;
7
- changeSlide: CarouselProps["beforeChange"];
8
- gauApiUrl: string;
9
- }
10
- export declare const ReleaseNotesSlides: FC<ReleaseNotesSlidesProps>;
@@ -1,3 +0,0 @@
1
- import { FC } from 'react';
2
- import { ReleaseNotesSlidesProps } from '../ReleaseNoteSlides';
3
- export declare const ReleaseNoteTabContent: FC<ReleaseNotesSlidesProps>;
@@ -1,12 +0,0 @@
1
- import { IReleaseNote } from '../../../types/releaseNotes';
2
- import { FC } from 'react';
3
- export interface CreateReleaseNoteProps {
4
- addBtnLabel?: string;
5
- addBtnTooltipText?: string;
6
- release2edit?: IReleaseNote;
7
- beforeOpenModal?: () => void;
8
- beforeCloseModal?: () => void;
9
- afterSubmit?: () => void;
10
- gauApiUrl: string;
11
- }
12
- export declare const CreateReleaseNote: FC<CreateReleaseNoteProps>;
@@ -1,8 +0,0 @@
1
- import { FC } from 'react';
2
- import { ReleaseNoteProps } from '.';
3
- /**
4
- * @deprecated ReleaseNote will be removed in the next major version.
5
- * Use WhatsNews for read-only display or CreateReleaseNote for creation.
6
- */
7
- declare const ReleaseNoteComponent: FC<ReleaseNoteProps>;
8
- export { ReleaseNoteComponent };
@@ -1,15 +0,0 @@
1
- import { FC } from 'react';
2
- import { CreateReleaseNoteProps } from './CreateReleaseNote';
3
- /**
4
- * @deprecated ReleaseNote will be removed in the next major version.
5
- * Use WhatsNews for read-only display.
6
- */
7
- export interface ReleaseNoteProps extends CreateReleaseNoteProps {
8
- showAddBtn?: boolean;
9
- gauApiUrl: string;
10
- }
11
- /**
12
- * @deprecated ReleaseNote will be removed in the next major version.
13
- * Use WhatsNews for read-only display.
14
- */
15
- export declare const ReleaseNote: FC<ReleaseNoteProps>;