@stack-spot/portal-layout 2.17.0 → 2.18.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,19 @@
1
1
  # Changelog
2
2
 
3
+ ## [2.18.0](https://github.com/stack-spot/portal-commons/compare/portal-layout@v2.17.1...portal-layout@v2.18.0) (2024-12-06)
4
+
5
+
6
+ ### Features
7
+
8
+ * okCookies saved on cookies ([#534](https://github.com/stack-spot/portal-commons/issues/534)) ([8a29298](https://github.com/stack-spot/portal-commons/commit/8a29298152d2383db1da4fe9dae390ff6a360ae3))
9
+
10
+ ## [2.17.1](https://github.com/stack-spot/portal-commons/compare/portal-layout@v2.17.0...portal-layout@v2.17.1) (2024-11-28)
11
+
12
+
13
+ ### Bug Fixes
14
+
15
+ * Remove target blank ([#514](https://github.com/stack-spot/portal-commons/issues/514)) ([5564d17](https://github.com/stack-spot/portal-commons/commit/5564d1751febd8926c2e6b4973f7af514d6b905f))
16
+
3
17
  ## [2.17.0](https://github.com/stack-spot/portal-commons/compare/portal-layout@v2.16.1...portal-layout@v2.17.0) (2024-11-28)
4
18
 
5
19
 
@@ -85,7 +85,7 @@ export const PortalSwitcher = ({ portals = [] }) => {
85
85
  id: portal.acronym,
86
86
  element: _jsx(Flex, { w: "250px", children: Logos[portal.acronym] }),
87
87
  },
88
- target: '_blank',
88
+ target: '_self',
89
89
  href: portal.url,
90
90
  active: currentPortal?.acronym == portal.acronym,
91
91
  iconActive: _jsx(CheckCircleFill, {}),
@@ -1 +1 @@
1
- {"version":3,"file":"PortalSwitcher.js","sourceRoot":"","sources":["../../src/components/PortalSwitcher.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PortalSwitcher.js","sourceRoot":"","sources":["../../src/components/PortalSwitcher.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACpD,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,6CAA6C,CAAA;AAC3E,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,mCAAmC,CAAA;AAC1E,OAAO,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAA;AAChD,OAAO,EAAa,QAAQ,EAAE,MAAM,OAAO,CAAA;AAC3C,OAAO,MAAM,MAAM,mBAAmB,CAAA;AAGtC,MAAM,KAAK,GAAqC;IAC9C,IAAI,EAAE,KAAC,EAAE,KAAG;IACZ,KAAK,EAAE,KAAC,GAAG,KAAG;IACd,KAAK,EAAE,KAAC,GAAG,KAAG;IACd,IAAI,EAAE,KAAC,EAAE,KAAG;IACZ,SAAS,EAAE,KAAC,IAAI,KAAG;CACpB,CAAA;AAwBD,MAAM,iBAAiB,GAAG,MAAM,CAAC,IAAI,CAAC,CAAA;;;;;;;;;;0BAUZ,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;;;;;;;;;;;;;;sBAc1B,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC;;;;;;;;;4BASlB,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC;;;wBAG5B,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC;;;;8BAIlB,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC;;;;;;;;;;;;;CAarD,CAAA;AACD,MAAM,kBAAkB,GAAG,gBAAgB,CAAA;AAE3C;;;;GAIG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,EAAE,OAAO,GAAG,EAAE,EAAuB,EAAE,EAAE;IACtE,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAU,KAAK,CAAC,CAAA;IACtD,MAAM,aAAa,GAAG,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;IAEnF,OAAO,MAAC,iBAAiB,eACtB,aAAa,CAAC,CAAC;gBACd,KAAC,MAAM,IACL,SAAS,EAAC,gBAAgB,EAC1B,UAAU,EAAC,MAAM,EACjB,WAAW,EAAC,OAAO,mBACJ,kBAAkB,mBAClB,OAAO,EACtB,OAAO,EAAE,GAAG,EAAE;wBACZ,UAAU,CAAC,CAAC,OAAO,CAAC,CAAA;oBACtB,CAAC,YACD,MAAC,IAAI,IAAC,UAAU,EAAC,QAAQ,EAAC,SAAS,EAAC,iBAAiB,aAClD,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,EAC7B,KAAC,OAAO,IAAC,IAAI,EAAC,IAAI,EAAC,EAAE,EAAE,CAAC,YACtB,KAAC,MAAM,KAAG,GACF,IACL,GACA,CAAC,CAAC;gBACX,KAAC,IAAI,KAAG,EACV,KAAC,aAAa,IACZ,EAAE,EAAE,kBAAkB,EACtB,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,KAAK,KAAK,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;oBAC7E,KAAK,EAAE;wBACL,EAAE,EAAE,MAAM,CAAC,OAAO;wBAClB,OAAO,EAAE,KAAC,IAAI,IAAC,CAAC,EAAC,OAAO,YAAE,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,GAAQ;qBACxD;oBACD,MAAM,EAAE,OAAO;oBACf,IAAI,EAAE,MAAM,CAAC,GAAG;oBAChB,MAAM,EAAE,aAAa,EAAE,OAAO,IAAI,MAAM,CAAC,OAAO;oBAChD,UAAU,EAAE,KAAC,eAAe,KAAG;oBAC/B,SAAS,EAAE,MAAM,CAAC,OAAO,KAAK,aAAa,EAAE,OAAO,CAAC,CAAC,CAAC,KAAC,UAAU,KAAG,CAAC,CAAC,CAAC,SAAS;iBAClF,CAAC,CAAC,EACH,OAAO,EAAE,OAAO,EAChB,SAAS,EAAC,OAAO,EACjB,MAAM,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,GAAI,IAClB,CAAA;AACvB,CAAC,CAAA"}
@@ -0,0 +1,10 @@
1
+ import { PrivacyPolicyMessageProps } from './index.js';
2
+ interface PrivacyPolicyProps extends PrivacyPolicyMessageProps {
3
+ policy?: string;
4
+ policyValue?: string;
5
+ domain?: string;
6
+ confirmText?: string;
7
+ }
8
+ export declare function usePrivacyPolicyEffect({ policy, policyValue, domain, privacyPoliceUrl, message, policyText, confirmText, }: PrivacyPolicyProps): void;
9
+ export {};
10
+ //# sourceMappingURL=hooks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../../src/components/PrivacyPolicyMessage/hooks.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAwB,yBAAyB,EAAE,MAAM,GAAG,CAAA;AAEnE,UAAU,kBAAmB,SAAQ,yBAAyB;IAC5D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,wBAAgB,sBAAsB,CAAC,EACrC,MAAoB,EACpB,WAAoB,EACpB,MAAyB,EACzB,gBAAgB,EAChB,OAAO,EACP,UAAU,EACV,WAAW,GACZ,EAAE,kBAAkB,QAmBpB"}
@@ -0,0 +1,33 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { useTranslate } from '@stack-spot/portal-translate';
3
+ import { useEffect, useState } from 'react';
4
+ import { overlay } from '../../LayoutOverlayManager.js';
5
+ import { PrivacyPolicyMessage } from './index.js';
6
+ export function usePrivacyPolicyEffect({ policy = 'okCookies', policyValue = 'true', domain = '.stackspot.com', privacyPoliceUrl, message, policyText, confirmText, }) {
7
+ const t = useTranslate(dictionary);
8
+ const [visible, setVisible] = useState(!document.cookie.match(new RegExp(`${policy}=([^;]+)`))?.[1]);
9
+ async function checkPolicy() {
10
+ if (visible) {
11
+ await overlay.showBottomDialog({
12
+ confirm: confirmText || t.ok,
13
+ children: _jsx(PrivacyPolicyMessage, { privacyPoliceUrl: privacyPoliceUrl, message: message, policyText: policyText }),
14
+ });
15
+ document.cookie = `${policy}=${policyValue};path=/${location.host.endsWith(domain) ? `;domain=${domain}` : ''}`;
16
+ setVisible(false);
17
+ }
18
+ else
19
+ overlay.closeBottomDialog();
20
+ }
21
+ useEffect(() => {
22
+ checkPolicy();
23
+ }, [visible]);
24
+ }
25
+ const dictionary = {
26
+ en: {
27
+ ok: 'Ok',
28
+ },
29
+ pt: {
30
+ ok: 'Ok',
31
+ },
32
+ };
33
+ //# sourceMappingURL=hooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../../src/components/PrivacyPolicyMessage/hooks.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAc,YAAY,EAAE,MAAM,8BAA8B,CAAA;AACvE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AACpD,OAAO,EAAE,oBAAoB,EAA6B,MAAM,GAAG,CAAA;AASnE,MAAM,UAAU,sBAAsB,CAAC,EACrC,MAAM,GAAG,WAAW,EACpB,WAAW,GAAG,MAAM,EACpB,MAAM,GAAG,gBAAgB,EACzB,gBAAgB,EAChB,OAAO,EACP,UAAU,EACV,WAAW,GACQ;IACnB,MAAM,CAAC,GAAG,YAAY,CAAC,UAAU,CAAC,CAAA;IAClC,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,GAAG,MAAM,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;IAEpG,KAAK,UAAU,WAAW;QACxB,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,OAAO,CAAC,gBAAgB,CAAC;gBAC7B,OAAO,EAAE,WAAW,IAAI,CAAC,CAAC,EAAE;gBAC5B,QAAQ,EAAE,KAAC,oBAAoB,IAAC,gBAAgB,EAAE,gBAAgB,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,GAAI;aACjH,CAAC,CAAA;YACF,QAAQ,CAAC,MAAM,GAAG,GAAG,MAAM,IAAI,WAAW,UAAU,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAA;YAC/G,UAAU,CAAC,KAAK,CAAC,CAAA;QACnB,CAAC;;YACI,OAAO,CAAC,iBAAiB,EAAE,CAAA;IAClC,CAAC;IAED,SAAS,CAAC,GAAG,EAAE;QACb,WAAW,EAAE,CAAA;IACf,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAA;AACf,CAAC;AAED,MAAM,UAAU,GAAG;IACjB,EAAE,EAAE;QACF,EAAE,EAAE,IAAI;KACT;IACD,EAAE,EAAE;QACF,EAAE,EAAE,IAAI;KACT;CACmB,CAAA"}
@@ -0,0 +1,7 @@
1
+ export interface PrivacyPolicyMessageProps {
2
+ message: string;
3
+ policyText?: string;
4
+ privacyPoliceUrl?: string;
5
+ }
6
+ export declare const PrivacyPolicyMessage: ({ message, policyText, privacyPoliceUrl }: PrivacyPolicyMessageProps) => import("react/jsx-runtime").JSX.Element;
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/PrivacyPolicyMessage/index.tsx"],"names":[],"mappings":"AAGA,MAAM,WAAW,yBAAyB;IACxC,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,eAAO,MAAM,oBAAoB,8CAA+C,yBAAyB,4CAUtG,CAAA"}
@@ -0,0 +1,5 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { IconBox, Link, Text } from '@citric/core';
3
+ import { Cookie } from '@citric/icons';
4
+ export const PrivacyPolicyMessage = ({ message, policyText, privacyPoliceUrl }) => _jsxs(_Fragment, { children: [_jsx(IconBox, { size: "md", colorIcon: "inverse", children: _jsx(Cookie, {}) }), _jsxs(Text, { children: [message, privacyPoliceUrl && _jsx(Link, { colorScheme: "inverse.contrastText", weight: "bold", href: privacyPoliceUrl, target: "_blank", children: policyText })] })] });
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/PrivacyPolicyMessage/index.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,cAAc,CAAA;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AAQtC,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAA6B,EAAE,EAAE,CAAC,8BAC5G,KAAC,OAAO,IAAC,IAAI,EAAC,IAAI,EAAC,SAAS,EAAC,SAAS,YACpC,KAAC,MAAM,KAAG,GACF,EACV,MAAC,IAAI,eACF,OAAO,EACP,gBAAgB,IAAI,KAAC,IAAI,IAAC,WAAW,EAAC,sBAAsB,EAAC,MAAM,EAAC,MAAM,EAAC,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAC,QAAQ,YAChH,UAAU,GACN,IACF,IACN,CAAA"}
package/dist/index.d.ts CHANGED
@@ -1,6 +1,5 @@
1
1
  export { Backdrop } from './components/Backdrop.js';
2
2
  export { showContactUsModal } from './components/Contact/show-contact-modal.js';
3
- export { showFeedbackModal, showRateUsModal } from './components/Rate/show-rate-us-modals.js';
4
3
  export { Dialog } from './components/Dialog.js';
5
4
  export { Header, HeaderProps } from './components/Header.js';
6
5
  export { ActionItem, MenuContent, MenuGroup, Title } from './components/menu/MenuContent.js';
@@ -8,8 +7,10 @@ export { MenuSections } from './components/menu/MenuSections.js';
8
7
  export * from './components/menu/types.js';
9
8
  export { CLOSE_OVERLAY_ID, OverlayContent } from './components/OverlayContent.js';
10
9
  export { PortalSwitcher } from './components/PortalSwitcher.js';
10
+ export { usePrivacyPolicyEffect } from './components/PrivacyPolicyMessage/hooks.js';
11
11
  export { RateComponent } from './components/Rate/index.js';
12
- export { useRatingEffect, shouldShowNpsModal } from './components/Rate/hook.js';
12
+ export { shouldShowNpsModal, useRatingEffect } from './components/Rate/hook.js';
13
+ export { showFeedbackModal, showRateUsModal } from './components/Rate/show-rate-us-modals.js';
13
14
  export * from './components/tour/index.js';
14
15
  export * from './elements.js';
15
16
  export * from './errors.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAChD,OAAO,EAAE,kBAAkB,EAAG,MAAM,yCAAyC,CAAA;AAC7E,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAA;AAC1F,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAC5C,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AACzD,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,+BAA+B,CAAA;AACzF,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAA;AAC7D,cAAc,yBAAyB,CAAA;AACvC,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AAC9E,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;AAC5E,cAAc,mBAAmB,CAAA;AACjC,cAAc,YAAY,CAAA;AAC1B,cAAc,UAAU,CAAA;AACxB,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAA;AAChD,cAAc,SAAS,CAAA;AACvB,cAAc,SAAS,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAA;AAC5E,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAC5C,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AACzD,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,+BAA+B,CAAA;AACzF,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAA;AAC7D,cAAc,yBAAyB,CAAA;AACvC,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AAC9E,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAA;AAChF,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAC5E,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAA;AAC1F,cAAc,mBAAmB,CAAA;AACjC,cAAc,YAAY,CAAA;AAC1B,cAAc,UAAU,CAAA;AACxB,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAA;AAChD,cAAc,SAAS,CAAA;AACvB,cAAc,SAAS,CAAA"}
package/dist/index.js CHANGED
@@ -1,6 +1,5 @@
1
1
  export { Backdrop } from './components/Backdrop.js';
2
2
  export { showContactUsModal } from './components/Contact/show-contact-modal.js';
3
- export { showFeedbackModal, showRateUsModal } from './components/Rate/show-rate-us-modals.js';
4
3
  export { Dialog } from './components/Dialog.js';
5
4
  export { Header } from './components/Header.js';
6
5
  export { ActionItem, MenuContent, MenuGroup, Title } from './components/menu/MenuContent.js';
@@ -8,8 +7,10 @@ export { MenuSections } from './components/menu/MenuSections.js';
8
7
  export * from './components/menu/types.js';
9
8
  export { CLOSE_OVERLAY_ID, OverlayContent } from './components/OverlayContent.js';
10
9
  export { PortalSwitcher } from './components/PortalSwitcher.js';
10
+ export { usePrivacyPolicyEffect } from './components/PrivacyPolicyMessage/hooks.js';
11
11
  export { RateComponent } from './components/Rate/index.js';
12
- export { useRatingEffect, shouldShowNpsModal } from './components/Rate/hook.js';
12
+ export { shouldShowNpsModal, useRatingEffect } from './components/Rate/hook.js';
13
+ export { showFeedbackModal, showRateUsModal } from './components/Rate/show-rate-us-modals.js';
13
14
  export * from './components/tour/index.js';
14
15
  export * from './elements.js';
15
16
  export * from './errors.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAChD,OAAO,EAAE,kBAAkB,EAAG,MAAM,yCAAyC,CAAA;AAC7E,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAA;AAC1F,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAC5C,OAAO,EAAE,MAAM,EAAe,MAAM,qBAAqB,CAAA;AACzD,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,+BAA+B,CAAA;AACzF,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAA;AAC7D,cAAc,yBAAyB,CAAA;AACvC,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AAC9E,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;AAC5E,cAAc,mBAAmB,CAAA;AACjC,cAAc,YAAY,CAAA;AAC1B,cAAc,UAAU,CAAA;AACxB,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAA;AAChD,cAAc,SAAS,CAAA;AACvB,cAAc,SAAS,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAA;AAC5E,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAC5C,OAAO,EAAE,MAAM,EAAe,MAAM,qBAAqB,CAAA;AACzD,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,+BAA+B,CAAA;AACzF,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAA;AAC7D,cAAc,yBAAyB,CAAA;AACvC,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AAC9E,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAA;AAChF,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAC5E,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAA;AAC1F,cAAc,mBAAmB,CAAA;AACjC,cAAc,YAAY,CAAA;AAC1B,cAAc,UAAU,CAAA;AACxB,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAA;AAChD,cAAc,SAAS,CAAA;AACvB,cAAc,SAAS,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stack-spot/portal-layout",
3
- "version": "2.17.0",
3
+ "version": "2.18.0",
4
4
  "type": "module",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -128,7 +128,7 @@ export const PortalSwitcher = ({ portals = [] }: PortalSwitcherProps) => {
128
128
  id: portal.acronym,
129
129
  element: <Flex w="250px">{Logos[portal.acronym]}</Flex>,
130
130
  },
131
- target: '_blank',
131
+ target: '_self',
132
132
  href: portal.url,
133
133
  active: currentPortal?.acronym == portal.acronym,
134
134
  iconActive: <CheckCircleFill />,
@@ -0,0 +1,49 @@
1
+ import { Dictionary, useTranslate } from '@stack-spot/portal-translate'
2
+ import { useEffect, useState } from 'react'
3
+ import { overlay } from '../../LayoutOverlayManager'
4
+ import { PrivacyPolicyMessage, PrivacyPolicyMessageProps } from '.'
5
+
6
+ interface PrivacyPolicyProps extends PrivacyPolicyMessageProps {
7
+ policy?: string,
8
+ policyValue?: string,
9
+ domain?: string,
10
+ confirmText?: string,
11
+ }
12
+
13
+ export function usePrivacyPolicyEffect({
14
+ policy = 'okCookies',
15
+ policyValue = 'true',
16
+ domain = '.stackspot.com',
17
+ privacyPoliceUrl,
18
+ message,
19
+ policyText,
20
+ confirmText,
21
+ }: PrivacyPolicyProps) {
22
+ const t = useTranslate(dictionary)
23
+ const [visible, setVisible] = useState(!document.cookie.match(new RegExp(`${policy}=([^;]+)`))?.[1])
24
+
25
+ async function checkPolicy() {
26
+ if (visible) {
27
+ await overlay.showBottomDialog({
28
+ confirm: confirmText || t.ok,
29
+ children: <PrivacyPolicyMessage privacyPoliceUrl={privacyPoliceUrl} message={message} policyText={policyText} />,
30
+ })
31
+ document.cookie = `${policy}=${policyValue};path=/${location.host.endsWith(domain) ? `;domain=${domain}` : ''}`
32
+ setVisible(false)
33
+ }
34
+ else overlay.closeBottomDialog()
35
+ }
36
+
37
+ useEffect(() => {
38
+ checkPolicy()
39
+ }, [visible])
40
+ }
41
+
42
+ const dictionary = {
43
+ en: {
44
+ ok: 'Ok',
45
+ },
46
+ pt: {
47
+ ok: 'Ok',
48
+ },
49
+ } satisfies Dictionary
@@ -0,0 +1,21 @@
1
+ import { IconBox, Link, Text } from '@citric/core'
2
+ import { Cookie } from '@citric/icons'
3
+
4
+ export interface PrivacyPolicyMessageProps {
5
+ message: string,
6
+ policyText?: string,
7
+ privacyPoliceUrl?: string,
8
+ }
9
+
10
+ export const PrivacyPolicyMessage = ({ message, policyText, privacyPoliceUrl }: PrivacyPolicyMessageProps) => <>
11
+ <IconBox size="md" colorIcon="inverse">
12
+ <Cookie />
13
+ </IconBox>
14
+ <Text>
15
+ {message}
16
+ {privacyPoliceUrl && <Link colorScheme="inverse.contrastText" weight="bold" href={privacyPoliceUrl} target="_blank">
17
+ {policyText}
18
+ </Link>}
19
+ </Text>
20
+ </>
21
+
package/src/index.ts CHANGED
@@ -1,6 +1,5 @@
1
1
  export { Backdrop } from './components/Backdrop'
2
- export { showContactUsModal } from './components/Contact/show-contact-modal'
3
- export { showFeedbackModal, showRateUsModal } from './components/Rate/show-rate-us-modals'
2
+ export { showContactUsModal } from './components/Contact/show-contact-modal'
4
3
  export { Dialog } from './components/Dialog'
5
4
  export { Header, HeaderProps } from './components/Header'
6
5
  export { ActionItem, MenuContent, MenuGroup, Title } from './components/menu/MenuContent'
@@ -8,8 +7,10 @@ export { MenuSections } from './components/menu/MenuSections'
8
7
  export * from './components/menu/types'
9
8
  export { CLOSE_OVERLAY_ID, OverlayContent } from './components/OverlayContent'
10
9
  export { PortalSwitcher } from './components/PortalSwitcher'
10
+ export { usePrivacyPolicyEffect } from './components/PrivacyPolicyMessage/hooks'
11
11
  export { RateComponent } from './components/Rate'
12
- export { useRatingEffect, shouldShowNpsModal } from './components/Rate/hook'
12
+ export { shouldShowNpsModal, useRatingEffect } from './components/Rate/hook'
13
+ export { showFeedbackModal, showRateUsModal } from './components/Rate/show-rate-us-modals'
13
14
  export * from './components/tour'
14
15
  export * from './elements'
15
16
  export * from './errors'