@cyberskill/design 1.0.0 → 1.1.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/DESIGN.md +10 -9
- package/README.md +31 -28
- package/SKILL.md +13 -9
- package/VERSION +1 -1
- package/_ds_bundle.js +660 -202
- package/_ds_manifest.json +1 -1
- package/_esm/cs.mjs +14 -8
- package/_esm/react.d.ts +216 -0
- package/_esm/react.mjs +114 -0
- package/base/collections.css +31 -0
- package/base/components.css +3 -0
- package/base/data.css +33 -0
- package/base/forms.css +8 -0
- package/base/interaction.css +1 -0
- package/base/typography.css +6 -0
- package/components/_i18n/strings.js +8 -4
- package/components/ai/ai-conversation.card.html +2 -2
- package/components/ai/ai-lumi.card.html +2 -2
- package/components/ai/ai.card.html +2 -2
- package/components/brand/brand.card.html +2 -2
- package/components/button/buttons.card.html +2 -2
- package/components/data/AspectRatio.d.ts +16 -0
- package/components/data/AspectRatio.figma.tsx +12 -0
- package/components/data/AspectRatio.jsx +16 -0
- package/components/data/AspectRatio.prompt.md +7 -0
- package/components/data/Collapsible.d.ts +21 -0
- package/components/data/Collapsible.figma.tsx +12 -0
- package/components/data/Collapsible.jsx +49 -0
- package/components/data/Collapsible.prompt.md +7 -0
- package/components/data/Image.d.ts +4 -0
- package/components/data/Image.prompt.md +2 -2
- package/components/data/Item.d.ts +26 -0
- package/components/data/Item.figma.tsx +12 -0
- package/components/data/Item.jsx +63 -0
- package/components/data/Item.prompt.md +10 -0
- package/components/data/ScrollArea.d.ts +16 -0
- package/components/data/ScrollArea.figma.tsx +12 -0
- package/components/data/ScrollArea.jsx +25 -0
- package/components/data/ScrollArea.prompt.md +7 -0
- package/components/data/collections.card.html +15 -4
- package/components/data/data.card.html +15 -4
- package/components/datatable/datatable.card.html +2 -2
- package/components/dialog/dialog.card.html +2 -2
- package/components/feedback/feedback-2.card.html +2 -2
- package/components/feedback/feedback.card.html +2 -2
- package/components/forms/Cascader.jsx +5 -3
- package/components/forms/Editor.prompt.md +1 -1
- package/components/forms/InputGroup.d.ts +4 -0
- package/components/forms/InputGroup.jsx +38 -8
- package/components/forms/InputGroup.prompt.md +3 -3
- package/components/forms/NativeSelect.d.ts +22 -0
- package/components/forms/NativeSelect.figma.tsx +12 -0
- package/components/forms/NativeSelect.jsx +56 -0
- package/components/forms/NativeSelect.prompt.md +10 -0
- package/components/forms/NumberField.d.ts +5 -0
- package/components/forms/NumberField.jsx +51 -7
- package/components/forms/NumberField.prompt.md +2 -2
- package/components/forms/SegmentedControl.jsx +1 -1
- package/components/forms/TagInput.d.ts +3 -0
- package/components/forms/TagInput.jsx +62 -20
- package/components/forms/TagInput.prompt.md +2 -2
- package/components/forms/forms-2.card.html +2 -2
- package/components/forms/forms.card.html +5 -4
- package/components/icon/Icon.prompt.md +1 -1
- package/components/icon/icon.card.html +2 -2
- package/components/logo/Logo.jsx +2 -1
- package/components/logo/logo.card.html +2 -2
- package/components/navigation/Menu.jsx +14 -1
- package/components/navigation/navigation.card.html +2 -2
- package/components/navigation/shell.card.html +2 -2
- package/components/overlays/AlertDialog.d.ts +29 -0
- package/components/overlays/AlertDialog.figma.tsx +12 -0
- package/components/overlays/AlertDialog.jsx +142 -0
- package/components/overlays/AlertDialog.prompt.md +12 -0
- package/components/overlays/Drawer.jsx +1 -1
- package/components/overlays/Popconfirm.jsx +14 -1
- package/components/overlays/Popover.jsx +14 -1
- package/components/overlays/alertdialog.card.html +42 -0
- package/components/overlays/overlays.card.html +2 -2
- package/components/textfield/textfield.card.html +2 -2
- package/docs/benchmark-rubric.md +46 -0
- package/docs/ci-cd.md +17 -11
- package/docs/consumer-grant.md +37 -0
- package/docs/consuming.md +45 -16
- package/docs/contrast-report.md +91 -103
- package/docs/conventions.md +12 -9
- package/docs/decisions.md +33 -10
- package/docs/deploy.md +1 -1
- package/docs/design-styles.md +26 -8
- package/docs/figma.md +3 -3
- package/docs/live-hub.md +5 -3
- package/docs/products.md +13 -11
- package/docs/quality-gates.md +35 -21
- package/docs/release-notes.md +13 -3
- package/docs/status/assets/favicon.svg +5 -0
- package/docs/status/assets/status-legacy.css +399 -0
- package/docs/status/assets/status-legacy.js +505 -0
- package/docs/status/assets/status.css +644 -0
- package/docs/status/assets/status.js +1308 -0
- package/docs/status/data/status-feed.json +1 -0
- package/docs/status/data/task/TASK-REL-001.js +1 -0
- package/docs/status/index.html +45 -0
- package/docs/status/roadmap.html +4 -0
- package/docs/status/status-legacy.html +121 -0
- package/docs/storybook.md +5 -4
- package/docs/sync.md +3 -2
- package/docs/tasks/BACKLOG.md +25 -0
- package/docs/tasks/release/TASK-REL-001-launch-1-1-0/spec.md +55 -0
- package/docs/template-schema-v2.md +15 -3
- package/docs/vi/benchmark-rubric.md +46 -0
- package/docs/vi/ci-cd.md +17 -11
- package/docs/vi/consumer-grant.md +37 -0
- package/docs/vi/consuming.md +45 -16
- package/docs/vi/contrast-report.md +94 -106
- package/docs/vi/conventions.md +12 -9
- package/docs/vi/decisions.md +33 -10
- package/docs/vi/deploy.md +1 -1
- package/docs/vi/design-styles.md +26 -8
- package/docs/vi/figma.md +3 -3
- package/docs/vi/live-hub.md +5 -3
- package/docs/vi/products.md +13 -11
- package/docs/vi/quality-gates.md +35 -21
- package/docs/vi/release-notes.md +18 -8
- package/docs/vi/storybook.md +5 -4
- package/docs/vi/sync.md +3 -2
- package/docs/vi/template-schema-v2.md +15 -3
- package/docs/viewer.html +2 -2
- package/fonts/spacegrotesk-var-latin-ext.woff2 +0 -0
- package/fonts/spacegrotesk-var-latin.woff2 +0 -0
- package/fonts/spacegrotesk-var-vietnamese.woff2 +0 -0
- package/guidelines/atomic-view.html +40 -27
- package/guidelines/elements-geometry.html +69 -0
- package/guidelines/elements-variants.html +17 -17
- package/guidelines/type-families.html +16 -10
- package/llms.txt +17 -11
- package/package.json +38 -16
- package/styles.css +1 -0
- package/templates/ai-cluster-demo.html +29 -14
- package/templates/app-shell/support.js +4 -4
- package/templates/article/content-schema.json +6 -0
- package/templates/article/support.js +4 -4
- package/templates/auth/support.js +4 -4
- package/templates/bod-deck/support.js +4 -4
- package/templates/bod-investor-update/support.js +4 -4
- package/templates/bod-memo/support.js +4 -4
- package/templates/bod-minutes/content-schema.json +12 -0
- package/templates/bod-minutes/support.js +4 -4
- package/templates/bod-report/support.js +4 -4
- package/templates/bod-resolution/support.js +4 -4
- package/templates/culture-event-invite/support.js +4 -4
- package/templates/dashboard/support.js +4 -4
- package/templates/delivery-change-note/support.js +4 -4
- package/templates/delivery-kickoff/support.js +4 -4
- package/templates/delivery-qbr-deck/support.js +4 -4
- package/templates/delivery-runbook/content-schema.json +6 -0
- package/templates/delivery-runbook/support.js +4 -4
- package/templates/delivery-status-email/support.js +4 -4
- package/templates/doc-style-guide/DocStyleGuide.dc.html +2 -2
- package/templates/doc-style-guide/support.js +4 -4
- package/templates/doc-suite-index/support.js +4 -4
- package/templates/doc-templates/DocTemplates.dc.html +1 -1
- package/templates/doc-templates/support.js +4 -4
- package/templates/email/support.js +4 -4
- package/templates/email-safe/README.md +17 -4
- package/templates/email-safe/email-launch.html +3 -3
- package/templates/email-safe/email-newsletter.html +1 -1
- package/templates/finance-dunning-email/support.js +4 -4
- package/templates/finance-expense-report/support.js +4 -4
- package/templates/finance-invoice/support.js +4 -4
- package/templates/finance-quote/support.js +4 -4
- package/templates/hr-announcement/support.js +4 -4
- package/templates/hr-interview-kit/content-schema.json +12 -0
- package/templates/hr-interview-kit/support.js +4 -4
- package/templates/hr-offboarding/content-schema.json +12 -0
- package/templates/hr-offboarding/support.js +4 -4
- package/templates/hr-performance-review/content-schema.json +12 -0
- package/templates/hr-performance-review/support.js +4 -4
- package/templates/hr-pip/content-schema.json +12 -0
- package/templates/hr-pip/support.js +4 -4
- package/templates/legal-msa/content-schema.json +16 -0
- package/templates/legal-msa/support.js +4 -4
- package/templates/legal-sow/support.js +4 -4
- package/templates/marketing-campaign-brief/support.js +4 -4
- package/templates/marketing-case-study/support.js +4 -4
- package/templates/marketing-launch/support.js +4 -4
- package/templates/marketing-newsletter/support.js +4 -4
- package/templates/marketing-page/content-schema.json +0 -1
- package/templates/marketing-page/support.js +4 -4
- package/templates/marketing-press-release/support.js +4 -4
- package/templates/marketing-social-kit/support.js +4 -4
- package/templates/playground.html +8 -4
- package/templates/sales-one-pager/support.js +4 -4
- package/templates/sales-proposal-deck/support.js +4 -4
- package/templates/settings/Settings.dc.html +26 -14
- package/templates/settings/content-schema.json +36 -0
- package/templates/settings/support.js +4 -4
- package/templates/slide-deck/support.js +4 -4
- package/templates/team-meeting-agenda/content-schema.json +16 -0
- package/templates/team-meeting-agenda/support.js +4 -4
- package/templates/tech-incident-report/support.js +4 -4
- package/templates/tech-release-notes/support.js +4 -4
- package/templates/tech-retro/content-schema.json +12 -0
- package/templates/tech-retro/support.js +4 -4
- package/templates/tech-rfc/content-schema.json +6 -0
- package/templates/tech-rfc/support.js +4 -4
- package/templates/vn-appointment-transfer/support.js +4 -4
- package/templates/vn-certificate-of-employment/support.js +4 -4
- package/templates/vn-code-of-conduct/support.js +4 -4
- package/templates/vn-compensation-regulation/support.js +4 -4
- package/templates/vn-contract-amendment/support.js +4 -4
- package/templates/vn-contractor-agreement/support.js +4 -4
- package/templates/vn-data-protection-policy/support.js +4 -4
- package/templates/vn-disciplinary-case-file/support.js +4 -4
- package/templates/vn-disciplinary-schedule/content-schema.json +15 -0
- package/templates/vn-disciplinary-schedule/support.js +4 -4
- package/templates/vn-employee-request/support.js +4 -4
- package/templates/vn-exit-handover/support.js +4 -4
- package/templates/vn-foreign-employee-pack/support.js +4 -4
- package/templates/vn-grassroots-democracy/support.js +4 -4
- package/templates/vn-infosec-policy/support.js +4 -4
- package/templates/vn-internal-labor-regulations/support.js +4 -4
- package/templates/vn-internship-agreement/support.js +4 -4
- package/templates/vn-job-description/support.js +4 -4
- package/templates/vn-labor-contract/support.js +4 -4
- package/templates/vn-labour-management-book/content-schema.json +15 -0
- package/templates/vn-labour-management-book/support.js +4 -4
- package/templates/vn-mutual-nda/support.js +4 -4
- package/templates/vn-ndnca-ip/support.js +4 -4
- package/templates/vn-offer-letter/support.js +4 -4
- package/templates/vn-onboarding-checklist/support.js +4 -4
- package/templates/vn-pdpl-consent/support.js +4 -4
- package/templates/vn-performance-evaluation-regulation/support.js +4 -4
- package/templates/vn-performance-review-form/support.js +4 -4
- package/templates/vn-phantom-stock/support.js +4 -4
- package/templates/vn-probation-contract/support.js +4 -4
- package/templates/vn-receipt-acknowledgement/content-schema.json +15 -0
- package/templates/vn-receipt-acknowledgement/support.js +4 -4
- package/templates/vn-remote-work-policy/support.js +4 -4
- package/templates/vn-resignation-letter/support.js +4 -4
- package/templates/vn-salary-scale/content-schema.json +15 -0
- package/templates/vn-salary-scale/support.js +4 -4
- package/templates/vn-sow-appendix/support.js +4 -4
- package/templates/vn-termination-decision/support.js +4 -4
- package/templates/vn-total-rewards-appendix/support.js +4 -4
- package/templates/vn-training-commitment/support.js +4 -4
- package/templates/vn-travel-expense-policy/support.js +4 -4
- package/tokens/element-seeds.json +112 -0
- package/tokens/elements.css +274 -187
- package/tokens/fonts.css +12 -3
- package/tokens/native/CSTokens.kt +84 -68
- package/tokens/native/CSTokens.swift +84 -68
- package/tokens/native/cs_tokens.dart +84 -68
- package/tokens/provenance.json +9 -9
- package/tokens/styles.css +15 -0
- package/tokens/tokens.dtcg.json +258 -233
- package/tokens/tokens.js +168 -167
- package/tokens/tokens.json +167 -166
- package/tokens/typography.css +9 -1
- package/ui_kits/status-hub/README.md +1 -2
- package/ui_kits/status-hub/index.html +2 -2
- package/ui_kits/status-hub/settings.html +6 -3
- package/ui_kits/website/chat.html +2 -2
- package/ui_kits/website/index.html +2 -2
- package/ui_kits/status-hub/identity-lab.html +0 -134
|
@@ -1,134 +0,0 @@
|
|
|
1
|
-
<!-- @dsCard group="Status Hub" viewport="1280x800" name="Identity Lab" subtitle="Live Theme × Element × Language on a product surface — click any pill" -->
|
|
2
|
-
<!DOCTYPE html>
|
|
3
|
-
<html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1">
|
|
4
|
-
<title>CyberSkill · Identity Lab</title>
|
|
5
|
-
<link rel="stylesheet" href="../../styles.css">
|
|
6
|
-
<style>
|
|
7
|
-
body{margin:0;background:var(--cs-color-surface-raised);font-family:var(--cs-font-family-ui);color:var(--cs-color-text-primary);min-height:100vh}
|
|
8
|
-
.bar{display:flex;flex-wrap:wrap;gap:8px 18px;align-items:center;padding:14px 28px;background:var(--cs-color-surface-panel);border-bottom:1px solid var(--cs-color-border-default);position:sticky;top:0;z-index:10}
|
|
9
|
-
.lb{font-size:10px;text-transform:uppercase;letter-spacing:0.1em;font-weight:800;color:var(--cs-color-text-muted);margin-right:2px}
|
|
10
|
-
.pills{display:flex;gap:6px;flex-wrap:wrap}
|
|
11
|
-
.pill{border:1px solid var(--cs-color-border-default);background:var(--cs-color-surface-panel);border-radius:999px;padding:6px 13px;font:inherit;font-size:12.5px;font-weight:600;color:var(--cs-color-text-primary);cursor:pointer;min-height:30px}
|
|
12
|
-
.pill:hover{background:var(--cs-color-surface-raised)}
|
|
13
|
-
.pill.on{background:var(--cs-color-brand-umber);border-color:var(--cs-color-brand-umber);color:#fff}
|
|
14
|
-
.pill:focus-visible{outline:3px solid var(--cs-color-accent-ochre);outline-offset:2px}
|
|
15
|
-
a{color:var(--cs-color-link)}a:hover{color:var(--cs-color-link-hover)}
|
|
16
|
-
[data-theme="dark"] .pill.on{background:var(--cs-color-brand-ochre);border-color:var(--cs-color-brand-ochre);color:#1a1108}
|
|
17
|
-
</style></head>
|
|
18
|
-
<body>
|
|
19
|
-
<div class="bar" id="axis-bar">
|
|
20
|
-
<span class="lb">Element</span>
|
|
21
|
-
<span class="pills" id="els">
|
|
22
|
-
<button class="pill on" data-el="" data-va="">Thổ · studio</button>
|
|
23
|
-
<button class="pill" data-el="tho" data-va="clay">Thổ · clay</button>
|
|
24
|
-
<button class="pill" data-el="tho" data-va="sand">Thổ · sand</button>
|
|
25
|
-
<button class="pill" data-el="hoa" data-va="">Hỏa</button>
|
|
26
|
-
<button class="pill" data-el="hoa" data-va="lava">Hỏa · lava</button>
|
|
27
|
-
<button class="pill" data-el="hoa" data-va="plasma">Hỏa · plasma</button>
|
|
28
|
-
<button class="pill" data-el="thuy" data-va="">Thủy</button>
|
|
29
|
-
<button class="pill" data-el="thuy" data-va="ocean">Thủy · ocean</button>
|
|
30
|
-
<button class="pill" data-el="thuy" data-va="mist">Thủy · mist</button>
|
|
31
|
-
<button class="pill" data-el="moc" data-va="">Mộc</button>
|
|
32
|
-
<button class="pill" data-el="moc" data-va="bamboo">Mộc · bamboo</button>
|
|
33
|
-
<button class="pill" data-el="moc" data-va="forest">Mộc · forest</button>
|
|
34
|
-
<button class="pill" data-el="kim" data-va="">Kim</button>
|
|
35
|
-
<button class="pill" data-el="kim" data-va="steel">Kim · steel</button>
|
|
36
|
-
<button class="pill" data-el="kim" data-va="titanium">Kim · titanium</button>
|
|
37
|
-
</span>
|
|
38
|
-
<span class="lb">Theme</span>
|
|
39
|
-
<span class="pills" id="themes">
|
|
40
|
-
<button class="pill on" data-theme="">light</button>
|
|
41
|
-
<button class="pill" data-theme="dark">dark</button>
|
|
42
|
-
</span>
|
|
43
|
-
<span class="lb">Language</span>
|
|
44
|
-
<span class="pills" id="langs">
|
|
45
|
-
<button class="pill on" data-lang="en">English</button>
|
|
46
|
-
<button class="pill" data-lang="vi">Tiếng Việt</button>
|
|
47
|
-
</span>
|
|
48
|
-
</div>
|
|
49
|
-
<div id="stage" style="max-width:1180px;margin:26px auto;padding:0 24px" lang="en">
|
|
50
|
-
<div style="position:relative;overflow:hidden;background:var(--cs-accent-strong);color:#fff;border-radius:var(--cs-radius-lg);box-shadow:var(--cs-shadow-md)">
|
|
51
|
-
<div class="cs-aurora-wash" style="position:absolute;inset:0;opacity:0.5;pointer-events:none"></div>
|
|
52
|
-
<div style="position:relative;display:flex;align-items:center;gap:14px;padding:20px 26px">
|
|
53
|
-
<span style="width:40px;height:40px;border-radius:var(--cs-radius-md);background:var(--cs-accent-bright);display:grid;place-items:center;color:var(--cs-accent-on);font-weight:800">✦</span>
|
|
54
|
-
<div>
|
|
55
|
-
<div style="font-weight:800;font-size:19px;letter-spacing:-0.01em" data-i18n="title">Status Hub</div>
|
|
56
|
-
<div style="font-size:12px;opacity:0.8" data-i18n="subtitle">Identity Lab · Theme × Element × Language</div>
|
|
57
|
-
</div>
|
|
58
|
-
<span style="margin-left:auto;display:inline-flex;align-items:center;background:var(--cs-accent-bright);color:var(--cs-accent-on);font-weight:700;font-size:13.5px;padding:0 18px;border-radius:var(--cs-component-button-radius);min-height:var(--cs-component-button-md-minHeight)" data-i18n="cta">New project</span>
|
|
59
|
-
</div>
|
|
60
|
-
</div>
|
|
61
|
-
<div style="display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin:18px 0;padding:18px 20px;background:var(--cs-color-surface-panel);border:1px solid var(--cs-color-border-default);border-radius:var(--cs-radius-lg);box-shadow:var(--cs-shadow-sm)">
|
|
62
|
-
<div><div style="font-size:10.5px;text-transform:uppercase;letter-spacing:0.08em;color:var(--cs-color-text-muted);font-weight:700" data-i18n="k1">Projects</div><div style="font-size:30px;font-weight:800;letter-spacing:-0.02em;margin-top:3px">6</div></div>
|
|
63
|
-
<div><div style="font-size:10.5px;text-transform:uppercase;letter-spacing:0.08em;color:var(--cs-color-text-muted);font-weight:700" data-i18n="k2">In progress</div><div style="font-size:30px;font-weight:800;letter-spacing:-0.02em;margin-top:3px">4</div></div>
|
|
64
|
-
<div><div style="font-size:10.5px;text-transform:uppercase;letter-spacing:0.08em;color:var(--cs-color-text-muted);font-weight:700" data-i18n="k3">Shipped</div><div style="font-size:30px;font-weight:800;letter-spacing:-0.02em;margin-top:3px">1</div></div>
|
|
65
|
-
<div><div style="font-size:10.5px;text-transform:uppercase;letter-spacing:0.08em;color:var(--cs-color-text-muted);font-weight:700" data-i18n="k4">Avg progress</div><div style="font-size:30px;font-weight:800;letter-spacing:-0.02em;margin-top:3px;color:var(--cs-color-text-accent)">70%</div></div>
|
|
66
|
-
</div>
|
|
67
|
-
<div style="display:grid;grid-template-columns:1fr 1fr;gap:16px">
|
|
68
|
-
<div style="background:var(--cs-color-surface-panel);border:1px solid var(--cs-color-border-default);border-radius:var(--cs-radius-lg);box-shadow:var(--cs-shadow-sm);padding:18px 20px">
|
|
69
|
-
<div style="display:flex;justify-content:space-between;align-items:baseline;gap:10px"><b style="font-size:15px" data-i18n="cardTitle">Checkout rebuild</b><span style="font-size:12px;color:var(--cs-color-text-muted)">72%</span></div>
|
|
70
|
-
<p style="margin:6px 0 14px;font-size:13px;color:var(--cs-color-text-muted)" data-i18n="cardBody">Staging cutover on track for the milestone.</p>
|
|
71
|
-
<div style="height:8px;border-radius:999px;background:var(--cs-color-surface-raised);overflow:hidden"><span style="display:block;height:100%;width:72%;background:var(--cs-accent);border-radius:999px"></span></div>
|
|
72
|
-
<span style="display:inline-block;margin-top:14px;background:var(--cs-accent-tint);color:var(--cs-color-text-accent);font-weight:700;font-size:11.5px;padding:4px 10px;border-radius:999px" data-i18n="badge">In progress</span>
|
|
73
|
-
</div>
|
|
74
|
-
<div style="background:var(--cs-color-surface-panel);border:1px solid var(--cs-color-border-default);border-radius:var(--cs-radius-lg);box-shadow:var(--cs-shadow-sm);padding:18px 20px;display:flex;flex-direction:column;gap:10px">
|
|
75
|
-
<b style="font-size:15px" data-i18n="wishTitle">Make a wish</b>
|
|
76
|
-
<span style="border:1px solid var(--cs-component-textfield-border-default);border-radius:var(--cs-radius-md);background:var(--cs-color-surface-panel);padding:var(--cs-component-textfield-paddingY) var(--cs-component-textfield-paddingX);font-size:13.5px;color:var(--cs-color-text-muted);min-height:var(--cs-component-textfield-minHeight);box-sizing:border-box;display:flex;align-items:center" data-i18n="wishPh">A faster checkout, an app, a tool…</span>
|
|
77
|
-
<div style="display:flex;gap:10px;align-items:center">
|
|
78
|
-
<span style="display:inline-flex;align-items:center;background:var(--cs-component-button-primary-bg);color:var(--cs-component-button-primary-fg);font-weight:700;font-size:13.5px;padding:0 var(--cs-component-button-md-paddingX);border-radius:var(--cs-component-button-radius);min-height:var(--cs-component-button-md-minHeight);box-shadow:var(--cs-shadow-xs)" data-i18n="wishCta">Make a wish</span>
|
|
79
|
-
<a href="#" style="font-size:13.5px;font-weight:600" data-i18n="how">How it works</a>
|
|
80
|
-
</div>
|
|
81
|
-
<p style="margin:2px 0 0;font-size:12px;color:var(--cs-color-text-muted)" data-i18n="focus">Focus rings stay Ochre in every identity — try tabbing the pills above.</p>
|
|
82
|
-
</div>
|
|
83
|
-
</div>
|
|
84
|
-
</div>
|
|
85
|
-
<script>
|
|
86
|
-
(function(){
|
|
87
|
-
var stage=document.getElementById('stage');
|
|
88
|
-
var I18N={
|
|
89
|
-
en:{title:'Status Hub',subtitle:'Identity Lab · Theme × Element × Language',cta:'New project',k1:'Projects',k2:'In progress',k3:'Shipped',k4:'Avg progress',cardTitle:'Checkout rebuild',cardBody:'Staging cutover on track for the milestone.',badge:'In progress',wishTitle:'Make a wish',wishPh:'A faster checkout, an app, a tool…',wishCta:'Make a wish',how:'How it works',focus:'Focus rings stay Ochre in every identity — try tabbing the pills above.'},
|
|
90
|
-
vi:{title:'Status Hub',subtitle:'Phòng lab nhận diện · Theme × Element × Language',cta:'Dự án mới',k1:'Dự án',k2:'Đang làm',k3:'Đã giao',k4:'Tiến độ TB',cardTitle:'Tái dựng checkout',cardBody:'Chuyển staging đúng milestone.',badge:'Đang làm',wishTitle:'Ước một điều',wishPh:'Checkout nhanh hơn, một app, một công cụ…',wishCta:'Ước ngay',how:'Cách hoạt động',focus:'Vòng focus luôn Ochre ở mọi nhận diện — thử Tab trên các pill phía trên.'}
|
|
91
|
-
};
|
|
92
|
-
function applyLang(lang){
|
|
93
|
-
var pack=I18N[lang]||I18N.en;
|
|
94
|
-
stage.setAttribute('lang', lang);
|
|
95
|
-
document.documentElement.setAttribute('lang', lang);
|
|
96
|
-
stage.querySelectorAll('[data-i18n]').forEach(function(el){
|
|
97
|
-
var k=el.getAttribute('data-i18n'); if(pack[k]!=null) el.textContent=pack[k];
|
|
98
|
-
});
|
|
99
|
-
}
|
|
100
|
-
function wire(rowId, apply){
|
|
101
|
-
var row=document.getElementById(rowId);
|
|
102
|
-
row.addEventListener('click',function(e){
|
|
103
|
-
var b=e.target.closest('.pill'); if(!b) return;
|
|
104
|
-
row.querySelectorAll('.pill').forEach(function(p){p.classList.remove('on')});
|
|
105
|
-
b.classList.add('on'); apply(b);
|
|
106
|
-
});
|
|
107
|
-
}
|
|
108
|
-
wire('els',function(b){
|
|
109
|
-
if(b.dataset.el){stage.setAttribute('data-cs-element',b.dataset.el);}else{stage.removeAttribute('data-cs-element');}
|
|
110
|
-
if(b.dataset.va){stage.setAttribute('data-cs-variant',b.dataset.va);}else{stage.removeAttribute('data-cs-variant');}
|
|
111
|
-
});
|
|
112
|
-
wire('themes',function(b){
|
|
113
|
-
if(b.dataset.theme){stage.setAttribute('data-theme',b.dataset.theme);document.documentElement.setAttribute('data-theme',b.dataset.theme);}
|
|
114
|
-
else{stage.removeAttribute('data-theme');document.documentElement.removeAttribute('data-theme');}
|
|
115
|
-
});
|
|
116
|
-
wire('langs',function(b){ applyLang(b.dataset.lang||'en'); });
|
|
117
|
-
// Parent frame (e.g. Storybook Live iframe host) can postMessage axes
|
|
118
|
-
window.addEventListener('message',function(ev){
|
|
119
|
-
var d=ev.data||{}; if(d.type!=='__cs_axes') return;
|
|
120
|
-
if(d.theme!==undefined){
|
|
121
|
-
if(d.theme){stage.setAttribute('data-theme',d.theme);document.documentElement.setAttribute('data-theme',d.theme);}
|
|
122
|
-
else{stage.removeAttribute('data-theme');document.documentElement.removeAttribute('data-theme');}
|
|
123
|
-
document.querySelectorAll('#themes .pill').forEach(function(p){p.classList.toggle('on',(p.dataset.theme||'')===(d.theme||''));});
|
|
124
|
-
}
|
|
125
|
-
if(d.element!==undefined){
|
|
126
|
-
if(d.element) stage.setAttribute('data-cs-element',d.element); else stage.removeAttribute('data-cs-element');
|
|
127
|
-
if(d.variant) stage.setAttribute('data-cs-variant',d.variant); else stage.removeAttribute('data-cs-variant');
|
|
128
|
-
}
|
|
129
|
-
if(d.lang) applyLang(d.lang);
|
|
130
|
-
});
|
|
131
|
-
window.__csApplyAxes=function(ax){ window.postMessage(Object.assign({type:'__cs_axes'},ax||{}), '*'); };
|
|
132
|
-
})();
|
|
133
|
-
</script>
|
|
134
|
-
</body></html>
|