@hanzo/ui 8.27.31 → 8.27.32
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/consent/Consent.cjs +76 -0
- package/dist/consent/Consent.d.ts +13 -0
- package/dist/consent/Consent.d.ts.map +1 -0
- package/dist/consent/Consent.js +72 -0
- package/dist/consent/Consent.js.map +1 -0
- package/dist/consent/index.cjs +7 -0
- package/dist/consent/index.d.ts +2 -0
- package/dist/consent/index.d.ts.map +1 -0
- package/dist/consent/index.js +2 -0
- package/dist/consent/index.js.map +1 -0
- package/dist/gallery.html +1 -1
- package/package.json +12 -1
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
'use client';"use strict";
|
|
2
|
+
'use client';
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.ConsentLink = exports.Consent = exports.openConsent = void 0;
|
|
5
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
6
|
+
/**
|
|
7
|
+
* Consent — the one cookie banner every Hanzo, Lux and Zoo site mounts.
|
|
8
|
+
*
|
|
9
|
+
* It draws the choice; @hanzo/event stores it (`hz_consent`) and the tag
|
|
10
|
+
* manager reacts: nothing from an ad platform loads before Accept, and Google
|
|
11
|
+
* Consent Mode v2 starts denied.
|
|
12
|
+
*
|
|
13
|
+
* - opt-in zones (EU, UK, CH, anywhere that is not a US zone): a banner with
|
|
14
|
+
* Accept all, Reject all and Choose, until the visitor has chosen.
|
|
15
|
+
* - US: no banner; `ConsentLink` ("Do not sell or share my personal
|
|
16
|
+
* information") in the footer opens the same choices.
|
|
17
|
+
* - Global Privacy Control: marketing and ads are off and their switches are
|
|
18
|
+
* locked, in every zone.
|
|
19
|
+
*
|
|
20
|
+
* `Consent` mounts once near the root; `ConsentLink` goes wherever a footer
|
|
21
|
+
* link goes and opens the panel from anywhere.
|
|
22
|
+
*/
|
|
23
|
+
const gui_1 = require("@hanzo/gui");
|
|
24
|
+
const event_1 = require("@hanzo/event");
|
|
25
|
+
const react_1 = require("react");
|
|
26
|
+
const button_1 = require("../backends/gui/button.cjs");
|
|
27
|
+
const switch_1 = require("../backends/gui/switch.cjs");
|
|
28
|
+
const slot_1 = require("../backends/gui/slot.cjs");
|
|
29
|
+
const OPEN = 'hzconsent-open';
|
|
30
|
+
/** Opens the choices from anywhere. */
|
|
31
|
+
const openConsent = () => {
|
|
32
|
+
if (typeof window !== 'undefined')
|
|
33
|
+
window.dispatchEvent(new Event(OPEN));
|
|
34
|
+
};
|
|
35
|
+
exports.openConsent = openConsent;
|
|
36
|
+
const KINDS = [
|
|
37
|
+
{ key: 'analytics', title: 'Analytics', body: 'Counts visits and finds what is broken, so Hanzo can get better.' },
|
|
38
|
+
{ key: 'marketing', title: 'Marketing', body: 'Lets ad platforms measure the sign-ups and orders their ads led to.' },
|
|
39
|
+
{ key: 'ads', title: 'Personalized ads', body: 'Lets those platforms use your visit to show you ads elsewhere.' },
|
|
40
|
+
];
|
|
41
|
+
const Consent = ({ privacy = 'https://hanzo.ai/privacy' }) => {
|
|
42
|
+
const [shown, setShown] = (0, react_1.useState)(false);
|
|
43
|
+
const [choosing, setChoosing] = (0, react_1.useState)(false);
|
|
44
|
+
const [draft, setDraft] = (0, react_1.useState)({ analytics: false, marketing: false, ads: false });
|
|
45
|
+
const locked = typeof window !== 'undefined' && (0, event_1.gpc)();
|
|
46
|
+
(0, react_1.useEffect)(() => {
|
|
47
|
+
setShown((0, event_1.asks)());
|
|
48
|
+
const open = () => {
|
|
49
|
+
setDraft((0, event_1.readConsent)());
|
|
50
|
+
setChoosing(true);
|
|
51
|
+
setShown(true);
|
|
52
|
+
};
|
|
53
|
+
window.addEventListener(OPEN, open);
|
|
54
|
+
return () => window.removeEventListener(OPEN, open);
|
|
55
|
+
}, []);
|
|
56
|
+
if (!shown)
|
|
57
|
+
return null;
|
|
58
|
+
const done = (fn) => () => {
|
|
59
|
+
fn();
|
|
60
|
+
setShown(false);
|
|
61
|
+
setChoosing(false);
|
|
62
|
+
};
|
|
63
|
+
return ((0, jsx_runtime_1.jsxs)(gui_1.YStack, { ...(0, slot_1.slot)('consent'), role: "dialog", "aria-label": "Cookie preferences", position: "fixed", b: 16, l: 16, r: 16, z: 2147483000, maxW: 560, gap: "$3", p: "$4", rounded: "$5", borderWidth: 1, borderColor: "$borderColor", bg: "$background", shadowColor: "rgba(0,0,0,0.25)", shadowRadius: 24, shadowOffset: { width: 0, height: 8 }, children: [(0, jsx_runtime_1.jsxs)(gui_1.Paragraph, { size: "$3", color: "$ink", m: 0, children: [choosing
|
|
64
|
+
? 'Choose what Hanzo may measure and share. You can change this at any time.'
|
|
65
|
+
: 'Hanzo uses cookies to count visits and to measure its ads. Nothing from an advertiser loads until you accept.', ' ', (0, jsx_runtime_1.jsx)("a", { href: privacy, style: { color: 'inherit', textDecoration: 'underline' }, children: "Privacy policy" })] }), choosing ? ((0, jsx_runtime_1.jsxs)(gui_1.YStack, { gap: "$3", children: [locked ? ((0, jsx_runtime_1.jsx)(gui_1.Paragraph, { size: "$2", color: "$soft", m: 0, children: "Your browser sends Global Privacy Control, so marketing and personalized ads stay off." })) : null, KINDS.map((k) => {
|
|
66
|
+
const off = locked && k.key !== 'analytics';
|
|
67
|
+
return ((0, jsx_runtime_1.jsxs)(gui_1.XStack, { gap: "$3", items: "center", justify: "space-between", children: [(0, jsx_runtime_1.jsxs)(gui_1.YStack, { flex: 1, children: [(0, jsx_runtime_1.jsx)(gui_1.Paragraph, { size: "$3", color: "$ink", fontWeight: "500", m: 0, children: k.title }), (0, jsx_runtime_1.jsx)(gui_1.Paragraph, { size: "$2", color: "$soft", m: 0, children: k.body })] }), (0, jsx_runtime_1.jsx)(switch_1.Switch, { "aria-label": k.title, disabled: off, checked: off ? false : draft[k.key], onCheckedChange: (v) => setDraft({ ...draft, [k.key]: v === true }) })] }, k.key));
|
|
68
|
+
}), (0, jsx_runtime_1.jsxs)(gui_1.XStack, { gap: "$3", justify: "flex-end", children: [(0, jsx_runtime_1.jsx)(button_1.Button, { type: "button", variant: "secondary", onClick: done(event_1.rejectAll), children: "Reject all" }), (0, jsx_runtime_1.jsx)(button_1.Button, { type: "button", onClick: done(() => (0, event_1.saveConsent)(draft)), children: "Save choices" })] })] })) : ((0, jsx_runtime_1.jsxs)(gui_1.XStack, { gap: "$3", flexWrap: "wrap", justify: "flex-end", children: [(0, jsx_runtime_1.jsx)(button_1.Button, { type: "button", variant: "link", onClick: () => {
|
|
69
|
+
setDraft((0, event_1.readConsent)());
|
|
70
|
+
setChoosing(true);
|
|
71
|
+
}, children: "Choose" }), (0, jsx_runtime_1.jsx)(button_1.Button, { type: "button", variant: "secondary", onClick: done(event_1.rejectAll), children: "Reject all" }), (0, jsx_runtime_1.jsx)(button_1.Button, { type: "button", onClick: done(event_1.acceptAll), children: "Accept all" })] }))] }));
|
|
72
|
+
};
|
|
73
|
+
exports.Consent = Consent;
|
|
74
|
+
/** The footer link that reopens the choices. In the US it reads as the opt-out the law names. */
|
|
75
|
+
const ConsentLink = ({ label = 'Do not sell or share my personal information' }) => ((0, jsx_runtime_1.jsx)(button_1.Button, { ...(0, slot_1.slot)('consent-link'), type: "button", variant: "link", size: "sm", px: 0, minH: 0, onClick: exports.openConsent, children: label }));
|
|
76
|
+
exports.ConsentLink = ConsentLink;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/** Opens the choices from anywhere. */
|
|
2
|
+
export declare const openConsent: () => void;
|
|
3
|
+
export type ConsentProps = {
|
|
4
|
+
/** Where the privacy policy lives. */
|
|
5
|
+
privacy?: string;
|
|
6
|
+
};
|
|
7
|
+
declare const Consent: ({ privacy }: ConsentProps) => import("react").JSX.Element | null;
|
|
8
|
+
/** The footer link that reopens the choices. In the US it reads as the opt-out the law names. */
|
|
9
|
+
declare const ConsentLink: ({ label }: {
|
|
10
|
+
label?: string;
|
|
11
|
+
}) => import("react").JSX.Element;
|
|
12
|
+
export { Consent, ConsentLink };
|
|
13
|
+
//# sourceMappingURL=Consent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Consent.d.ts","sourceRoot":"","sources":["../../src/consent/Consent.tsx"],"names":[],"mappings":"AA6BA,uCAAuC;AACvC,eAAO,MAAM,WAAW,QAAO,IAE9B,CAAA;AAQD,MAAM,MAAM,YAAY,GAAG;IACzB,sCAAsC;IACtC,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB,CAAA;AAED,QAAA,MAAM,OAAO,gBAA8C,YAAY,uCAiHtE,CAAA;AAED,iGAAiG;AACjG,QAAA,MAAM,WAAW,cAAgE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,gCAIlG,CAAA;AAED,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,CAAA"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
/**
|
|
4
|
+
* Consent — the one cookie banner every Hanzo, Lux and Zoo site mounts.
|
|
5
|
+
*
|
|
6
|
+
* It draws the choice; @hanzo/event stores it (`hz_consent`) and the tag
|
|
7
|
+
* manager reacts: nothing from an ad platform loads before Accept, and Google
|
|
8
|
+
* Consent Mode v2 starts denied.
|
|
9
|
+
*
|
|
10
|
+
* - opt-in zones (EU, UK, CH, anywhere that is not a US zone): a banner with
|
|
11
|
+
* Accept all, Reject all and Choose, until the visitor has chosen.
|
|
12
|
+
* - US: no banner; `ConsentLink` ("Do not sell or share my personal
|
|
13
|
+
* information") in the footer opens the same choices.
|
|
14
|
+
* - Global Privacy Control: marketing and ads are off and their switches are
|
|
15
|
+
* locked, in every zone.
|
|
16
|
+
*
|
|
17
|
+
* `Consent` mounts once near the root; `ConsentLink` goes wherever a footer
|
|
18
|
+
* link goes and opens the panel from anywhere.
|
|
19
|
+
*/
|
|
20
|
+
import { Paragraph, XStack, YStack } from '@hanzo/gui';
|
|
21
|
+
import { acceptAll, asks, gpc, readConsent, rejectAll, saveConsent } from '@hanzo/event';
|
|
22
|
+
import { useEffect, useState } from 'react';
|
|
23
|
+
import { Button } from '../backends/gui/button.js';
|
|
24
|
+
import { Switch } from '../backends/gui/switch.js';
|
|
25
|
+
import { slot } from '../backends/gui/slot.js';
|
|
26
|
+
const OPEN = 'hzconsent-open';
|
|
27
|
+
/** Opens the choices from anywhere. */
|
|
28
|
+
export const openConsent = () => {
|
|
29
|
+
if (typeof window !== 'undefined')
|
|
30
|
+
window.dispatchEvent(new Event(OPEN));
|
|
31
|
+
};
|
|
32
|
+
const KINDS = [
|
|
33
|
+
{ key: 'analytics', title: 'Analytics', body: 'Counts visits and finds what is broken, so Hanzo can get better.' },
|
|
34
|
+
{ key: 'marketing', title: 'Marketing', body: 'Lets ad platforms measure the sign-ups and orders their ads led to.' },
|
|
35
|
+
{ key: 'ads', title: 'Personalized ads', body: 'Lets those platforms use your visit to show you ads elsewhere.' },
|
|
36
|
+
];
|
|
37
|
+
const Consent = ({ privacy = 'https://hanzo.ai/privacy' }) => {
|
|
38
|
+
const [shown, setShown] = useState(false);
|
|
39
|
+
const [choosing, setChoosing] = useState(false);
|
|
40
|
+
const [draft, setDraft] = useState({ analytics: false, marketing: false, ads: false });
|
|
41
|
+
const locked = typeof window !== 'undefined' && gpc();
|
|
42
|
+
useEffect(() => {
|
|
43
|
+
setShown(asks());
|
|
44
|
+
const open = () => {
|
|
45
|
+
setDraft(readConsent());
|
|
46
|
+
setChoosing(true);
|
|
47
|
+
setShown(true);
|
|
48
|
+
};
|
|
49
|
+
window.addEventListener(OPEN, open);
|
|
50
|
+
return () => window.removeEventListener(OPEN, open);
|
|
51
|
+
}, []);
|
|
52
|
+
if (!shown)
|
|
53
|
+
return null;
|
|
54
|
+
const done = (fn) => () => {
|
|
55
|
+
fn();
|
|
56
|
+
setShown(false);
|
|
57
|
+
setChoosing(false);
|
|
58
|
+
};
|
|
59
|
+
return (_jsxs(YStack, { ...slot('consent'), role: "dialog", "aria-label": "Cookie preferences", position: "fixed", b: 16, l: 16, r: 16, z: 2147483000, maxW: 560, gap: "$3", p: "$4", rounded: "$5", borderWidth: 1, borderColor: "$borderColor", bg: "$background", shadowColor: "rgba(0,0,0,0.25)", shadowRadius: 24, shadowOffset: { width: 0, height: 8 }, children: [_jsxs(Paragraph, { size: "$3", color: "$ink", m: 0, children: [choosing
|
|
60
|
+
? 'Choose what Hanzo may measure and share. You can change this at any time.'
|
|
61
|
+
: 'Hanzo uses cookies to count visits and to measure its ads. Nothing from an advertiser loads until you accept.', ' ', _jsx("a", { href: privacy, style: { color: 'inherit', textDecoration: 'underline' }, children: "Privacy policy" })] }), choosing ? (_jsxs(YStack, { gap: "$3", children: [locked ? (_jsx(Paragraph, { size: "$2", color: "$soft", m: 0, children: "Your browser sends Global Privacy Control, so marketing and personalized ads stay off." })) : null, KINDS.map((k) => {
|
|
62
|
+
const off = locked && k.key !== 'analytics';
|
|
63
|
+
return (_jsxs(XStack, { gap: "$3", items: "center", justify: "space-between", children: [_jsxs(YStack, { flex: 1, children: [_jsx(Paragraph, { size: "$3", color: "$ink", fontWeight: "500", m: 0, children: k.title }), _jsx(Paragraph, { size: "$2", color: "$soft", m: 0, children: k.body })] }), _jsx(Switch, { "aria-label": k.title, disabled: off, checked: off ? false : draft[k.key], onCheckedChange: (v) => setDraft({ ...draft, [k.key]: v === true }) })] }, k.key));
|
|
64
|
+
}), _jsxs(XStack, { gap: "$3", justify: "flex-end", children: [_jsx(Button, { type: "button", variant: "secondary", onClick: done(rejectAll), children: "Reject all" }), _jsx(Button, { type: "button", onClick: done(() => saveConsent(draft)), children: "Save choices" })] })] })) : (_jsxs(XStack, { gap: "$3", flexWrap: "wrap", justify: "flex-end", children: [_jsx(Button, { type: "button", variant: "link", onClick: () => {
|
|
65
|
+
setDraft(readConsent());
|
|
66
|
+
setChoosing(true);
|
|
67
|
+
}, children: "Choose" }), _jsx(Button, { type: "button", variant: "secondary", onClick: done(rejectAll), children: "Reject all" }), _jsx(Button, { type: "button", onClick: done(acceptAll), children: "Accept all" })] }))] }));
|
|
68
|
+
};
|
|
69
|
+
/** The footer link that reopens the choices. In the US it reads as the opt-out the law names. */
|
|
70
|
+
const ConsentLink = ({ label = 'Do not sell or share my personal information' }) => (_jsx(Button, { ...slot('consent-link'), type: "button", variant: "link", size: "sm", px: 0, minH: 0, onClick: openConsent, children: label }));
|
|
71
|
+
export { Consent, ConsentLink };
|
|
72
|
+
//# sourceMappingURL=Consent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Consent.js","sourceRoot":"","sources":["../../src/consent/Consent.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.openConsent = exports.ConsentLink = exports.Consent = void 0;
|
|
4
|
+
var Consent_1 = require("./Consent.cjs");
|
|
5
|
+
Object.defineProperty(exports, "Consent", { enumerable: true, get: function () { return Consent_1.Consent; } });
|
|
6
|
+
Object.defineProperty(exports, "ConsentLink", { enumerable: true, get: function () { return Consent_1.ConsentLink; } });
|
|
7
|
+
Object.defineProperty(exports, "openConsent", { enumerable: true, get: function () { return Consent_1.openConsent; } });
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/consent/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,KAAK,YAAY,EAAE,MAAM,WAAW,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/consent/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAqB,MAAM,WAAW,CAAA"}
|
package/dist/gallery.html
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<!doctype html><html lang="en" class="t_dark"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>@hanzo/ui 8.27.
|
|
1
|
+
<!doctype html><html lang="en" class="t_dark"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>@hanzo/ui 8.27.32</title><style>/* @hanzo/ui — generated by scripts/gen-css.mjs. Do not edit. */
|
|
2
2
|
:root { --hanzo-ui-styles: 1; }
|
|
3
3
|
/* Hanzo Design System — the entry point. Import THIS one file.
|
|
4
4
|
*
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hanzo/ui",
|
|
3
|
-
"version": "8.27.
|
|
3
|
+
"version": "8.27.32",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Hanzo UI — the one canonical Hanzo component library, on @hanzo/gui + @hanzo/design. ONE substrate: every component renders through @hanzo/gui primitives, so the same import works on web, native (expo) and desktop (Tauri). Self-contained (theme.css), presentational, host-agnostic, clean-room.",
|
|
6
6
|
"exports": {
|
|
@@ -110,6 +110,12 @@
|
|
|
110
110
|
"require": "./dist/auth/index.cjs",
|
|
111
111
|
"default": "./dist/auth/index.js"
|
|
112
112
|
},
|
|
113
|
+
"./consent": {
|
|
114
|
+
"types": "./dist/consent/index.d.ts",
|
|
115
|
+
"import": "./dist/consent/index.js",
|
|
116
|
+
"require": "./dist/consent/index.cjs",
|
|
117
|
+
"default": "./dist/consent/index.js"
|
|
118
|
+
},
|
|
113
119
|
"./marketing": {
|
|
114
120
|
"types": "./dist/marketing/index.d.ts",
|
|
115
121
|
"import": "./dist/marketing/index.js",
|
|
@@ -311,6 +317,7 @@
|
|
|
311
317
|
"@hanzo/canvas": ">=0.2.3",
|
|
312
318
|
"@hanzo/cd": ">=0.1.2",
|
|
313
319
|
"@hanzo/dashboard": ">=0.2.0",
|
|
320
|
+
"@hanzo/event": ">=0.3.48",
|
|
314
321
|
"@hanzo/data": ">=1.2.4",
|
|
315
322
|
"@hanzo/gui": "^8.3.5",
|
|
316
323
|
"@hanzo/iam": ">=0.21.21",
|
|
@@ -349,6 +356,9 @@
|
|
|
349
356
|
"@hanzo/cd": {
|
|
350
357
|
"optional": true
|
|
351
358
|
},
|
|
359
|
+
"@hanzo/event": {
|
|
360
|
+
"optional": true
|
|
361
|
+
},
|
|
352
362
|
"@hanzo/usage": {
|
|
353
363
|
"optional": true
|
|
354
364
|
},
|
|
@@ -367,6 +377,7 @@
|
|
|
367
377
|
},
|
|
368
378
|
"devDependencies": {
|
|
369
379
|
"@hanzo/cd": "0.1.2",
|
|
380
|
+
"@hanzo/event": "0.3.48",
|
|
370
381
|
"@hanzo/dashboard": "0.2.0",
|
|
371
382
|
"@hanzo/data": "1.2.4",
|
|
372
383
|
"@hanzo/gui": "8.3.5",
|