@cyberskill/design 1.3.11 → 1.4.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 +2 -2
- package/README.md +12 -10
- package/SKILL.md +3 -3
- package/VERSION +1 -1
- package/_ds_bundle.js +2 -2
- package/_ds_manifest.json +1 -1
- package/_esm/cs.mjs +2 -2
- package/docs/contrast-report.md +1 -1
- package/docs/conventions.md +3 -3
- package/docs/decisions.md +2 -1
- package/docs/hr-suite-sources.md +91 -0
- package/docs/live-hub.md +16 -9
- package/docs/quality-gates.md +3 -3
- package/docs/release-notes.md +1 -1
- package/docs/storybook.md +6 -2
- package/docs/vi/contrast-report.md +1 -1
- package/docs/vi/conventions.md +3 -3
- package/docs/vi/decisions.md +2 -1
- package/docs/vi/hr-suite-sources.md +47 -0
- package/docs/vi/live-hub.md +24 -17
- package/docs/vi/quality-gates.md +3 -3
- package/docs/vi/release-notes.md +1 -1
- package/docs/vi/storybook.md +26 -22
- package/docs/viewer.html +2 -2
- package/llms.txt +4 -4
- package/package.json +1 -1
- package/templates/doc-suite-index/DocSuiteIndex.dc.html +1 -0
- package/templates/vn-framework-agreement/.thumbnail +0 -0
- package/templates/vn-framework-agreement/VnFrameworkAgreement.dc.html +138 -0
- package/templates/vn-framework-agreement/ds-base.js +55 -0
- package/templates/vn-framework-agreement/support.js +1834 -0
- package/tokens/element-seeds.json +1 -1
- package/tokens/native/CSTokens.kt +1 -1
- package/tokens/native/CSTokens.swift +1 -1
- package/tokens/native/cs_tokens.dart +1 -1
- package/tokens/provenance.json +6 -6
- package/tokens/tokens.dtcg.json +1 -1
- package/tokens/tokens.js +2 -2
- package/tokens/tokens.json +1 -1
package/_esm/cs.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// CyberSkill Design System — ESM entry point (GENERATED from _ds_manifest.json at v1.
|
|
1
|
+
// CyberSkill Design System — ESM entry point (GENERATED from _ds_manifest.json at v1.4.0).
|
|
2
2
|
// No build step: import this module directly in a browser. It ensures React 19.2.8 via umd-react
|
|
3
3
|
// (official React 19 dropped UMD; pinned + SRI; skipped when window.React already exists), side-loads
|
|
4
4
|
// ../_ds_bundle.js once, resolves the compiler-assigned namespace BY PREFIX (never a hardcoded suffix),
|
|
@@ -32,7 +32,7 @@ if (!found()) await ensureScript("../_ds_bundle.js");
|
|
|
32
32
|
export const CS = g[found()];
|
|
33
33
|
if (!CS) throw new Error("cs.js: bundle loaded but no CyberSkillDesignSystem_* namespace found");
|
|
34
34
|
export default CS;
|
|
35
|
-
export const VERSION = "1.
|
|
35
|
+
export const VERSION = "1.4.0";
|
|
36
36
|
export const AIDisclosureBadge = CS.AIDisclosureBadge;
|
|
37
37
|
export const Accordion = CS.Accordion;
|
|
38
38
|
export const Alert = CS.Alert;
|
package/docs/contrast-report.md
CHANGED
package/docs/conventions.md
CHANGED
|
@@ -32,13 +32,13 @@ Style’s sole pack today is **liquid-glass**. Immutable under all axes: Umber/O
|
|
|
32
32
|
|
|
33
33
|
**New component** — `Name.jsx` + `Name.d.ts` + `Name.prompt.md` in `components/<group>/`; add to the group's card html (resolve the bundle namespace **by prefix** — `const CS = window[Object.keys(window).find(k=>/^CyberSkillDesignSystem_[0-9a-f]{6}$/.test(k))]` — never a hardcoded `…_<projectId>` suffix); add to readme's group line. Consume tokens only; no hex literals except inside `tokens/`.
|
|
34
34
|
|
|
35
|
-
**Responsive** — reflow is global (`base/responsive.css`, loaded last): media never overflows, print docs relax padding, `.cs-sheet` tables scroll, `.cs-sidebar` collapses, inline fixed-column grids collapse (3+→2 tablet, →1 phone), unbreakable long tokens (write-on `______` lines, long URLs/IDs) get `overflow-wrap: anywhere` on doc surfaces so they can't prop a phone column open, the app-shell shell grid collapses to one column with `main{min-width:0}`+`.cs-table-wrap` scroll, and fixed-geometry export canvases (`class="cs-canvas-desk"`: decks, social) **always** `overflow-x:auto` so a slide wider than the window scrolls inside the desk rather than pushing the page wide. **Width stops must match the token scale** in `tokens/spacing.css` (`xs` · `phone` 360 · `sm` 640 · `md` 768 · `lg` 1024 · `xl` 1280 · `2xl` 1536) — `docs-consistency` fails off-scale `@media`/`@container` widths in `base/` (FIND-007). Verified whole-set at 390 by `_audit/responsive-overflow.html` (all
|
|
35
|
+
**Responsive** — reflow is global (`base/responsive.css`, loaded last): media never overflows, print docs relax padding, `.cs-sheet` tables scroll, `.cs-sidebar` collapses, inline fixed-column grids collapse (3+→2 tablet, →1 phone), unbreakable long tokens (write-on `______` lines, long URLs/IDs) get `overflow-wrap: anywhere` on doc surfaces so they can't prop a phone column open, the app-shell shell grid collapses to one column with `main{min-width:0}`+`.cs-table-wrap` scroll, and fixed-geometry export canvases (`class="cs-canvas-desk"`: decks, social) **always** `overflow-x:auto` so a slide wider than the window scrolls inside the desk rather than pushing the page wide. **Width stops must match the token scale** in `tokens/spacing.css` (`xs` · `phone` 360 · `sm` 640 · `md` 768 · `lg` 1024 · `xl` 1280 · `2xl` 1536) — `docs-consistency` fails off-scale `@media`/`@container` widths in `base/` (FIND-007). Verified whole-set at 390 by `_audit/responsive-overflow.html` (all 85 = 0 document overflow). **Two hard gotchas:** (1) the DC runtime compiles inline `style="…"` into React objects, so the rendered attribute is *spaced* — any `[style*=…]` responsive selector must match `grid-template-columns: repeat(4, 1fr)` (colon-space, comma-space), never the authored no-space form; (2) a global CSS rule can only override a property the template sets **inline** via an **attribute** selector (`[style*="grid-template-columns: 248px 1fr"]`) — a **class** selector loses to the inline style. Prefer fixing overflow in the template source (add `min-width:0`, `flex-wrap:wrap` inline) over fighting inline from the stylesheet.
|
|
36
36
|
|
|
37
37
|
**New template** — `templates/<slug>/<Slug>.dc.html` with `<!-- @template name description -->` first; `ds-base.js` stays single-entry (`styles.css` only — the one-line rebind was validated end-to-end Jul 2026 from a deeper path; the test scaffold has since been removed) and publishes the id-independent `window.CyberSkillDS` alias on bundle load, so mount DS components via `component-from-global-scope="CyberSkillDS.…"` — **never** a hardcoded `CyberSkillDesignSystem_<projectId>` suffix (it changes on re-import; enforced by `_audit/namespace-portability.html`); inline styles only; 1–3 tweaks (never plain copy/color — in-place editing covers those); printable docs add the `@page` + `.cs-desk`/`.cs-sheet` print block and carry **no dark tweak** (print is light-only).
|
|
38
38
|
|
|
39
39
|
**New element variant** — stay inside the element's oklch envelope; set the 10 `--cs-accent-*` contract tokens (incl. `--cs-accent-on-strong` ≥4.5:1 on `-strong`) plus `--cs-color-text-accent`/`--cs-color-link` (APCA-check both); the aurora wash inherits from the element via `.cs-aurora-wash` (override the class rule only if the variant truly needs its own image); gradient partner (`grad-b`) must follow Tương sinh.
|
|
40
40
|
|
|
41
|
-
**Ship check** — run the compiler check until clean, then run `_audit/docs-consistency.html` **and** `_audit/namespace-portability.html` (both must be green). VERSION **1.
|
|
41
|
+
**Ship check** — run the compiler check until clean, then run `_audit/docs-consistency.html` **and** `_audit/namespace-portability.html` (both must be green). VERSION **1.4.0** (auto-bumps on `main`).
|
|
42
42
|
|
|
43
43
|
## Decision log (owner-approved)
|
|
44
44
|
|
|
@@ -116,7 +116,7 @@ Vietnamese is the primary language; the type system is built for it — verified
|
|
|
116
116
|
|
|
117
117
|
## Whole-set state audits — language · theme · responsive (each its own pass, Jul 2026)
|
|
118
118
|
|
|
119
|
-
Owner doctrine: language, theme, and responsive each get their OWN whole-set pass; one clean state is not evidence for another. All three are now race-free, manifest-driven, **all-
|
|
119
|
+
Owner doctrine: language, theme, and responsive each get their OWN whole-set pass; one clean state is not evidence for another. All three are now race-free, manifest-driven, **all-85** pass/fail gates built on the same pattern — a **fresh single-navigation iframe per template** (reusing one iframe across `src` swaps races the `@import`ed CSS and yields false results), state forced via `__dcSetProps`, settle, then measure:
|
|
120
120
|
- **Language** — `_audit/language-overflow.html` — forces `Tiếng Việt`; 0 VN overflow/clip @390; also asserts VN actually applied on every template.
|
|
121
121
|
|
|
122
122
|
- **Theme** — `_audit/theme-overflow.html` — forces dark; hard gate = dark-applies + 0 dark overflow @390 + 0 open solid-bg leaf-text contrast fails outside `REVIEWED_OK`.
|
package/docs/decisions.md
CHANGED
|
@@ -25,9 +25,10 @@ Stay on the current Figma plan. Variables REST API is Enterprise-only — write
|
|
|
25
25
|
**Owner choice: Storybook is the single live hub** (Jul 2026)
|
|
26
26
|
|
|
27
27
|
- Operators use Storybook at `/` for Theme × Element × Language × Style and component control matrices.
|
|
28
|
+
- Public IA follows the atomic browse path: Foundations → Components → **Templates** → **Pages** (Atoms/Molecules/Organisms remain in CSF + Atomic View; Templates/Pages are first-class sidebar groups, including the full VN A4 / HR Suite).
|
|
28
29
|
- No separate Live View page exists in the tree.
|
|
29
30
|
- Legacy `/dashboard`, `/dashboard/`, `/dashboard.html`, `/dashboard/:path*`, `/playground`, `/playground/`, `/playground/:path*` redirect to `/`.
|
|
30
|
-
- Portable Atomic View and other static HTML remain for zero-build gates and consumers;
|
|
31
|
+
- Portable Atomic View and other static HTML remain for zero-build gates and consumers; Atomic View is also linked from **Templates → Gallery**.
|
|
31
32
|
- Surface map: `docs/live-hub.md`.
|
|
32
33
|
|
|
33
34
|
## 5. Dual token JSON sources
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
# HR Suite sources (DOCX ↔ templates)
|
|
2
|
+
|
|
3
|
+
Published on Storybook **Docs** at `design.cyberskill.world`.
|
|
4
|
+
|
|
5
|
+
## Decision
|
|
6
|
+
|
|
7
|
+
**Canonical live instruments are Design Components** under `templates/vn-*/*.dc.html` (plus `doc-suite-index`, `doc-style-guide`, `doc-templates`). Google Drive / Word (`.docx` / `.dotx`) are **source provenance**, not the Storybook product surface.
|
|
8
|
+
|
|
9
|
+
Do **not** commit large binary Word files into this design-system package. Optional local unpack for diffing:
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
# scraps/ is gitignored
|
|
13
|
+
mkdir -p scraps/hr-suite-docx
|
|
14
|
+
unzip -O UTF-8 /path/to/Templates.zip -d scraps/hr-suite-docx
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
If you keep a long-lived local copy outside git, use any path you like — the mapping table below is the contract.
|
|
18
|
+
|
|
19
|
+
## Inventory (Templates.zip, Jul 2026)
|
|
20
|
+
|
|
21
|
+
| Count | Kind |
|
|
22
|
+
|---|---|
|
|
23
|
+
| 40 | `.docx` instruments / guides |
|
|
24
|
+
| 1 | `.dotx` presentation shell |
|
|
25
|
+
| **41** | **total in zip** |
|
|
26
|
+
|
|
27
|
+
All **37** Employment Suite `templates/vn-*` folders from the zip map 1:1 to a zip `.docx`. Four zip “0.” reference files map to `doc-*` templates. An **additional** commercial framework (not in that zip) lives at `templates/vn-framework-agreement` — see below.
|
|
28
|
+
|
|
29
|
+
## Mapping
|
|
30
|
+
|
|
31
|
+
| Zip file (English title) | Repo path |
|
|
32
|
+
|---|---|
|
|
33
|
+
| CyberSkill Document Style Guide | `templates/doc-style-guide` |
|
|
34
|
+
| CyberSkill Document Template (`.dotx`) | `templates/doc-templates` |
|
|
35
|
+
| Employment Suite Usage Guide | `templates/doc-suite-index` (usage section) |
|
|
36
|
+
| HR Document Suite Index | `templates/doc-suite-index` |
|
|
37
|
+
| Labor Contract | `templates/vn-labor-contract` |
|
|
38
|
+
| Exit-Handover Agreement | `templates/vn-exit-handover` |
|
|
39
|
+
| NDNCA & IP | `templates/vn-ndnca-ip` |
|
|
40
|
+
| Phantom Stock Agreement | `templates/vn-phantom-stock` |
|
|
41
|
+
| Total Rewards & Career Path Appendix | `templates/vn-total-rewards-appendix` |
|
|
42
|
+
| Labor Contract Amendment Appendix | `templates/vn-contract-amendment` |
|
|
43
|
+
| Appointment & Transfer Decision | `templates/vn-appointment-transfer` |
|
|
44
|
+
| Probation Contract | `templates/vn-probation-contract` |
|
|
45
|
+
| Internal Labor Regulations | `templates/vn-internal-labor-regulations` |
|
|
46
|
+
| Decision on Termination | `templates/vn-termination-decision` |
|
|
47
|
+
| Disciplinary Schedule (Annex to ILR) | `templates/vn-disciplinary-schedule` |
|
|
48
|
+
| Training & Service Commitment Agreement | `templates/vn-training-commitment` |
|
|
49
|
+
| Internship Agreement | `templates/vn-internship-agreement` |
|
|
50
|
+
| Employment Offer Letter | `templates/vn-offer-letter` |
|
|
51
|
+
| Personal Data Consent (PDPL) | `templates/vn-pdpl-consent` |
|
|
52
|
+
| Foreign Employee Work Permit Pack | `templates/vn-foreign-employee-pack` |
|
|
53
|
+
| Independent Contractor Agreement | `templates/vn-contractor-agreement` |
|
|
54
|
+
| Employee Request Form | `templates/vn-employee-request` |
|
|
55
|
+
| Job Description | `templates/vn-job-description` |
|
|
56
|
+
| Acknowledgement of Receipt | `templates/vn-receipt-acknowledgement` |
|
|
57
|
+
| Labour Management Book | `templates/vn-labour-management-book` |
|
|
58
|
+
| Performance Review Form | `templates/vn-performance-review-form` |
|
|
59
|
+
| Onboarding Checklist | `templates/vn-onboarding-checklist` |
|
|
60
|
+
| Mutual NDA | `templates/vn-mutual-nda` |
|
|
61
|
+
| Statement of Work | `templates/vn-sow-appendix` |
|
|
62
|
+
| Disciplinary Case File | `templates/vn-disciplinary-case-file` |
|
|
63
|
+
| Certificate of Employment | `templates/vn-certificate-of-employment` |
|
|
64
|
+
| Resignation Letter | `templates/vn-resignation-letter` |
|
|
65
|
+
| Travel & Expense Policy | `templates/vn-travel-expense-policy` |
|
|
66
|
+
| Grassroots Democracy Regulation | `templates/vn-grassroots-democracy` |
|
|
67
|
+
| Salary Scale and Payroll Table | `templates/vn-salary-scale` |
|
|
68
|
+
| Remote & Hybrid Work Policy | `templates/vn-remote-work-policy` |
|
|
69
|
+
| Code of Conduct | `templates/vn-code-of-conduct` |
|
|
70
|
+
| Compensation & Reward Regulation | `templates/vn-compensation-regulation` |
|
|
71
|
+
| Personal Data Protection Policy | `templates/vn-data-protection-policy` |
|
|
72
|
+
| Information Security & Acceptable Use Policy | `templates/vn-infosec-policy` |
|
|
73
|
+
| Performance Evaluation Regulation | `templates/vn-performance-evaluation-regulation` |
|
|
74
|
+
|
|
75
|
+
### Outside Templates.zip (added Aug 2026)
|
|
76
|
+
|
|
77
|
+
| Source | Repo path | Taxonomy |
|
|
78
|
+
|---|---|---|
|
|
79
|
+
| `Hợp đồng Nguyên Tắc - CyberSkill - Ban QLDA Bình Quới.docx` (Downloads) | `templates/vn-framework-agreement` | **Commercial** software-services framework (not employment lifecycle). Uses the same VN A4 bilingual skin (`vn-*`) and appears under **Templates → HR** via the `HR Suite ·` catalog name; suite index lists it under Legal/client-facing. Adapted DOCX (gitignored): `scraps/hr-suite-docx/Templates/9. Hợp đồng Nguyên Tắc - Framework Agreement (Software Services).docx` |
|
|
80
|
+
|
|
81
|
+
## Browse on Storybook
|
|
82
|
+
|
|
83
|
+
- **Templates → Gallery → Atomic gallery** — full Atomic View Templates tier
|
|
84
|
+
- **Templates → HR** — every HR Suite / HR ops instrument iframe
|
|
85
|
+
- **Templates → Documents** — suite index / style guide / document template
|
|
86
|
+
|
|
87
|
+
## Sync status (Aug 2026)
|
|
88
|
+
|
|
89
|
+
Zip dated **2026-07-11**. Repo already holds converted `.dc.html` for every mapped instrument. This change **documents** the Drive/DOCX ↔ `vn-*` map and promotes Templates in Storybook; it does **not** re-import DOCX body text into DC templates. Re-sync only when counsel or ops confirm Word content drifted from the DC tree — then update the matching `templates/vn-*/` folder and regenerate Storybook CSF if names change (`node scripts/generate-template-stories.mjs`).
|
|
90
|
+
|
|
91
|
+
Counsel review remains required before real-world use (client-supplied instruments; see README / SKILL).
|
package/docs/live-hub.md
CHANGED
|
@@ -8,34 +8,39 @@ Published on Storybook **Docs** at `design.cyberskill.world`.
|
|
|
8
8
|
|
|
9
9
|
## Sidebar IA
|
|
10
10
|
|
|
11
|
+
Atomic browse order on the product site: **Foundations → Components → Templates → Pages** (Atoms / Molecules / Organisms live inside Atomic View and CSF Components; Templates and Pages are first-class sidebar groups).
|
|
12
|
+
|
|
11
13
|
| Group | Role |
|
|
12
14
|
|---|---|
|
|
13
|
-
| **Docs** | Published operator docs: **Start** (Introduction, README, SKILL, Contributing, llms, Library) · **Guides** (consuming, grant, deploy, schema, conventions, styles, products, Figma, contrast, storybook, live-hub, release runbook, benchmark, …) · **Maintainers** (doctrine, decisions, CI/CD, quality gates, sync). Curated MDX plus one sidebar entry per tracked page. EN·VI via the Documentation Library (`/docs/viewer.html`) |
|
|
15
|
+
| **Docs** | Published operator docs: **Start** (Introduction, README, SKILL, Contributing, llms, Library) · **Guides** (consuming, grant, deploy, schema, conventions, styles, products, Figma, contrast, storybook, live-hub, HR Suite sources, release runbook, benchmark, …) · **Maintainers** (doctrine, decisions, CI/CD, quality gates, sync). Curated MDX plus one sidebar entry per tracked page. EN·VI via the Documentation Library (`/docs/viewer.html`) |
|
|
14
16
|
| **Foundations** | Colors, typography, spacing, elevation, motion, elements |
|
|
15
17
|
| **Components** | Full CSF library |
|
|
18
|
+
| **Templates** | Public starting points: **Gallery** (Atomic View → Templates tier, kitchen-sink, playground) plus every `_ds_manifest.json` template grouped like Atomic View (Product · Board · … · **HR** Suite · Documents). Includes all 38 `vn-*` A4 instruments (Employment Suite + commercial framework) |
|
|
19
|
+
| **Pages** | UI kits — Status Hub, Marketing site, Slide deck |
|
|
16
20
|
| **Release Notes** | Curated product prose (**no CHANGELOG.md**) |
|
|
17
21
|
| **Status** | Full-bleed embed of `_audit/run.html` (auto-run on first load; **Re-run** on demand) |
|
|
18
22
|
| **A11y / I18n** | Accessibility + bilingual specimens |
|
|
19
|
-
| **Maintainer** | Portable HTML iframes for gates (
|
|
23
|
+
| **Maintainer** | Portable HTML iframes for gates and demos (Motion, kit mirrors, template demos, RTL, Atomic View for gates) |
|
|
20
24
|
|
|
21
25
|
## Surfaces
|
|
22
26
|
|
|
23
27
|
| Surface | Role |
|
|
24
28
|
|---|---|
|
|
25
|
-
| **Storybook** (`/`) | Host product surface: Theme × Element × Language × Style toolbar, Docs/Foundations/Components
|
|
26
|
-
| **Atomic View** (`guidelines/atomic-view.html`) | Portable zero-build
|
|
27
|
-
| **Other guidelines / templates** | Portable specimens; opened from Storybook
|
|
29
|
+
| **Storybook** (`/`) | Host product surface: Theme × Element × Language × Style toolbar, Docs/Foundations/Components/**Templates**/**Pages**/Release Notes/Status, and Maintainer/* iframes into portable HTML |
|
|
30
|
+
| **Atomic View** (`guidelines/atomic-view.html`) | Portable zero-build atomic browser (Atoms → Molecules → Organisms → Templates → Pages). Public via **Templates → Gallery → Atomic gallery**; also under Maintainer for gates / clone-and-open |
|
|
31
|
+
| **Other guidelines / templates** | Portable specimens; opened from Storybook Templates/*, Pages/*, or Maintainer/* |
|
|
28
32
|
| **Legacy `/dashboard`, `/dashboard/`, `/dashboard.html`, `/dashboard/:path*`, `/playground`, `/playground/`, `/playground/:path*`** | Redirect to `/` (stubs + Vercel redirects) |
|
|
29
33
|
|
|
30
|
-
## Surface map (Maintainer
|
|
34
|
+
## Surface map (public + Maintainer)
|
|
31
35
|
|
|
32
36
|
| Storybook entry | Portable HTML |
|
|
33
37
|
|---|---|
|
|
34
38
|
| Components/* CSF | React sources under `components/` |
|
|
39
|
+
| Templates/Gallery → Atomic gallery | `guidelines/atomic-view.html#tier-templates` |
|
|
40
|
+
| Templates/{Category}/* | `templates/**/*.dc.html` via `_ds_manifest.json` (regen: `node scripts/generate-template-stories.mjs`) |
|
|
41
|
+
| Pages → Status Hub / Marketing site / Slide deck | `ui_kits/status-hub|website|deck/index.html` |
|
|
35
42
|
| Maintainer/Surfaces → Motion | `guidelines/motion.html` |
|
|
36
|
-
| Maintainer/Surfaces → Status Hub
|
|
37
|
-
| Maintainer/Surfaces → Website | `ui_kits/website/index.html` |
|
|
38
|
-
| Maintainer/Surfaces → Deck | `ui_kits/deck/index.html` |
|
|
43
|
+
| Maintainer/Surfaces → Status Hub / Website / Deck | same UI kits (maintainer mirrors) |
|
|
39
44
|
| Maintainer/Surfaces → Template Playground | `templates/playground.html` |
|
|
40
45
|
| Maintainer/Surfaces → Kitchen Sink | `templates/kitchen-sink.html` |
|
|
41
46
|
| Maintainer/Surfaces → Image Slots | `templates/image-slots-demo.html` |
|
|
@@ -60,3 +65,5 @@ Consumers still link `styles.css` / `_ds_bundle.js` / ESM / templates. **Do not*
|
|
|
60
65
|
npm run storybook # product Storybook at http://localhost:6006
|
|
61
66
|
npm run build:site # packages Storybook at .vercel-static/ (site root `/`)
|
|
62
67
|
```
|
|
68
|
+
|
|
69
|
+
Open **Templates → Gallery → Atomic gallery** or **Templates → HR → …** for the Employment Suite.
|
package/docs/quality-gates.md
CHANGED
|
@@ -41,9 +41,9 @@ Benchmark principles (WCAG · APCA · OKLCH · DTCG · CDS doctrine + style expa
|
|
|
41
41
|
| A11y interactions | `_audit/a11y-gate.html` | Focus management (Dialog/Drawer trap + restore + Escape), roving tabindex, combobox `aria-activedescendant`, Mentions APG + Sortable move buttons (hard-fail), role/label contracts, plus open-state Esc/focus for Cascader · TreeSelect · Tour · HoverCard · ContextMenu | All keyboard/ARIA assertions pass (`__a11y`) | Hard | Fast board CI |
|
|
42
42
|
| A11y CSSOM | `_audit/a11y-harness.html` | Every interactive `.cs-*` control meets its documented touch-target floor under coarse pointer; focus-ring, reduced-motion, and contrast rules proven in source CSS | 0 floor violations, all source proofs found (`__a11ycss`) | Hard | Fast board CI |
|
|
43
43
|
| Template schema v2 | `_audit/template-schema-test.html` | Every `content-schema.json` sidecar validates against the JSON Schema, every declared slot id resolves to a real `{{ hole }}` in its template, and every template exposing an authorable **content** hole ships a sidecar (axis/control-flow and boolean tweak holes excluded — see `docs/template-schema-v2.md`) | 0 invalid sidecars, 0 dangling slot ids, 0 hole-driven templates without a sidecar (`__schemav2`) | Hard | Fast board CI |
|
|
44
|
-
| Support runtime identity | `_audit/support-runtime-identity.html` | All `templates/*/support.js` copies (one per template,
|
|
44
|
+
| Support runtime identity | `_audit/support-runtime-identity.html` | All `templates/*/support.js` copies (one per template, 85) are byte-identical: sha-256 via SubtleCrypto, exactly one unique hash, copy count == manifest template count | 1 unique hash, count match (`__supportid`) | Hard | Fast board CI |
|
|
45
45
|
| Bilingual parity | `_audit/bilingual-parity.html` | Every component in `components/_i18n/strings.js` has en + vi tables with equal key sets and no empty values | 0 missing/extra keys, 0 empty values (`__bilingual`) | Hard | Fast board CI + merge blocker |
|
|
46
|
-
| Template language parity | `_audit/template-lang-parity.html` | Static source scan of all
|
|
46
|
+
| Template language parity | `_audit/template-lang-parity.html` | Static source scan of all 85 `.dc.html`: en/vi hole-map key sets identical and non-empty (21 map templates); `sc-if` `isEN`/`isVN` branches paired (24 branch templates); every `language`-tweak template has a bilingual mechanism; EN-leak lexicon (Unsubscribe · View in browser · Preferences · All rights reserved · Manage subscription · Sent with) never appears outside `isEN` guards / the `en` map. VN-first stacked instruments (38 `vn-*` + 3 `doc-*`) are leak-exempt by design — both languages always render | 0 key drifts, 0 unpaired branches, 0 leaks (`__langparity`) | Hard | Fast board CI |
|
|
47
47
|
| APCA dark packs | `_audit/apca-dark-preview.html` | All 15 element×variant packs hold their APCA targets in dark (bright-as-text ≥ 75, accent UI ≥ 60, ink-on-accent ≥ 75, ink-on-tint ≥ 75) | 0 current failures (`__apcaPreview.currentFail === 0`) | Hard | Fast board CI |
|
|
48
48
|
| Element geometry | `_audit/element-geometry.html` | Soft/middle/deep intensity sync across five elements; variant distinctness; light↔dark hue identity; Thổ middle pins logo ochre; packs generated from seeds | `__elementgeometry.pass` | Hard | Fast board CI |
|
|
49
49
|
| Style contract | `_audit/style-contract.html` | Style axis allowlist: sole pack `liquid-glass` (absent ≡ default); `styles.css` imports `tokens/styles.css`; `--cs-style-pack` resolves; no unknown `data-cs-style` in scanned sources | `__stylecontract.pass` | Hard | Fast board CI |
|
|
@@ -57,7 +57,7 @@ Benchmark principles (WCAG · APCA · OKLCH · DTCG · CDS doctrine + style expa
|
|
|
57
57
|
|
|
58
58
|
| Gate | File | What it asserts | Pass criterion | Type | Where it runs |
|
|
59
59
|
|---|---|---|---|---|---|
|
|
60
|
-
| Responsive overflow | `_audit/responsive-overflow.html` | Every template (
|
|
60
|
+
| Responsive overflow | `_audit/responsive-overflow.html` | Every template (85) + 3 UI kits render at 390 px without horizontal document overflow | 0 overflowing surfaces (`__overflow`) | Hard | Whole-set CI (every PR + nightly) |
|
|
61
61
|
| Language overflow | `_audit/language-overflow.html` | Same set forced to Tiếng Việt: VN applies, no overflow, no clipped text in fixed/nowrap boxes, and known EN built-in strings (PromptInput hint, FileUpload, DataGrid pin, …) do not leak | 0 over/clip/EN-leak (`__language`) | Hard | Whole-set CI (every PR + nightly) |
|
|
62
62
|
| Theme overflow | `_audit/theme-overflow.html` | Same set forced dark: dark applies, no document overflow, and no reproducible solid-bg leaf-text WCAG fails outside `REVIEWED_OK` | Dark applied + 0 overflow + 0 open contrast (`__theme`) | Hard (allowlisted near-misses only) | Whole-set CI (every PR + nightly) |
|
|
63
63
|
|
package/docs/release-notes.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Release Notes
|
|
2
2
|
|
|
3
|
-
Curated product highlights for operators. This is **not** a git log and **not** a `CHANGELOG.md` — the design system does not maintain a changelog file. VERSION **1.
|
|
3
|
+
Curated product highlights for operators. This is **not** a git log and **not** a `CHANGELOG.md` — the design system does not maintain a changelog file. VERSION **1.4.0** (auto-bumps on push to `main` from Conventional Commits; owner may still force a bump). Technical continuity is the repo tip; product-facing continuity is this page (mirrored in Storybook **Release Notes**). Published on Storybook **Docs** at `design.cyberskill.world`.
|
|
4
4
|
|
|
5
5
|
## Release — `@cyberskill/design@1.3.10`
|
|
6
6
|
|
package/docs/storybook.md
CHANGED
|
@@ -21,7 +21,9 @@ Storybook **10** is the **product site** for operators on `design.cyberskill.wor
|
|
|
21
21
|
- `FullMatrix` when ≥1 of {size enums, variant enums, state keys} exist — the size × variant × key-state product via shared helpers in `stories/lib/matrix.jsx`
|
|
22
22
|
- Toolbar globals: Theme (light · dark · **system**) × Element × Language × Style (same axes as templates / Atomic View). Element lists **all 15** Ngũ Hành packs (`tokens.elements` / template EL maps / Storybook toolbar) — not a subset. Style’s sole pack is **liquid-glass**.
|
|
23
23
|
- **Docs/** published operator documentation — nested **Start / Guides / Maintainers**, curated MDX for high-traffic pages, one sidebar story per tracked markdown page, and a Documentation Library iframe of `/docs/viewer.html` (EN·VI). Canonical prose remains `docs/*.md`; Storybook is the live reading surface. **Release Notes/** curated product prose (**no CHANGELOG.md**); **Status/** embeds `_audit/run.html` full-bleed
|
|
24
|
-
- **
|
|
24
|
+
- **Templates/** public starting points — Gallery (Atomic View Templates tier + kitchen-sink/playground) and every manifest template under Atomic View categories (including **HR** / `vn-*`). Regen CSF with `node scripts/generate-template-stories.mjs` after template renames
|
|
25
|
+
- **Pages/** public UI kits (Status Hub, Marketing site, Slide deck)
|
|
26
|
+
- **Maintainer/** stories for portable HTML surfaces (Motion, kit mirrors, template demos, AI cluster, RTL; Atomic View for gates)
|
|
25
27
|
- Same `styles.css` as production
|
|
26
28
|
- Addons: `@storybook/addon-docs` + `@storybook/addon-a11y` (essentials folded into core in SB10)
|
|
27
29
|
|
|
@@ -29,6 +31,7 @@ Storybook **10** is the **product site** for operators on `design.cyberskill.wor
|
|
|
29
31
|
|
|
30
32
|
- `.storybook/main.js` — ESM Storybook 10 config, Vite + `@cs` → `components/` alias, **`base: '/'`** for domain-root assets
|
|
31
33
|
- `.storybook/manager-head.html` — OG / canonical meta for the production `/` surface
|
|
34
|
+
- `.storybook/preview.jsx` — `storySort` order: Docs · Foundations · Components · **Templates** · **Pages** · A11y · I18n · Release Notes · Status · Maintainer
|
|
32
35
|
- Autodocs via `tags: ['autodocs']` on CSF meta (no `docs.autodocs` in main)
|
|
33
36
|
|
|
34
37
|
## What consumers still use (unchanged)
|
|
@@ -50,8 +53,9 @@ npm run storybook
|
|
|
50
53
|
npm run build:storybook # → storybook-static/ (base `/`)
|
|
51
54
|
npm run build:site # packages Storybook at .vercel-static/ root
|
|
52
55
|
npm run test:storybook-contract
|
|
56
|
+
node scripts/generate-template-stories.mjs # refresh Templates/{Category} CSF from manifest
|
|
53
57
|
```
|
|
54
58
|
|
|
55
59
|
## Map
|
|
56
60
|
|
|
57
|
-
|
|
61
|
+
Public Templates/Pages and Maintainer iframes are listed in `docs/live-hub.md`. HR Suite Word originals mapping: `docs/hr-suite-sources.md`. Status embeds `_audit/run.html` (auto-run on first load; **Re-run** on demand).
|
package/docs/vi/conventions.md
CHANGED
|
@@ -32,13 +32,13 @@ Pack Style duy nhất hiện nay là **liquid-glass**. Bất biến dưới mọ
|
|
|
32
32
|
|
|
33
33
|
**Component mới** — `Name.jsx` + `Name.d.ts` + `Name.prompt.md` trong `components/<group>/`; thêm vào card html của nhóm (resolve namespace bundle **theo prefix** — `const CS = window[Object.keys(window).find(k=>/^CyberSkillDesignSystem_[0-9a-f]{6}$/.test(k))]` — không bao giờ hậu tố `…_<projectId>` hardcode); thêm vào dòng nhóm của readme. Chỉ consume token; không hex literal trừ trong `tokens/`.
|
|
34
34
|
|
|
35
|
-
**Responsive** — reflow là global (`base/responsive.css`, load cuối): media không overflow, print docs nới padding, bảng `.cs-sheet` scroll, `.cs-sidebar` thu gọn, lưới cột cố định inline thu (3+→2 tablet, →1 phone), token dài không gãy (dòng write-on `______`, URL/ID dài) nhận `overflow-wrap: anywhere` trên bề mặt doc để không chống cột phone mở, shell grid app-shell thu một cột với `main{min-width:0}`+`.cs-table-wrap` scroll, và canvas export hình học cố định (`class="cs-canvas-desk"`: decks, social) **luôn** `overflow-x:auto` để slide rộng hơn cửa sổ scroll trong desk thay vì đẩy trang rộng. Đã verify whole-set ở 390 bởi `_audit/responsive-overflow.html` (cả
|
|
35
|
+
**Responsive** — reflow là global (`base/responsive.css`, load cuối): media không overflow, print docs nới padding, bảng `.cs-sheet` scroll, `.cs-sidebar` thu gọn, lưới cột cố định inline thu (3+→2 tablet, →1 phone), token dài không gãy (dòng write-on `______`, URL/ID dài) nhận `overflow-wrap: anywhere` trên bề mặt doc để không chống cột phone mở, shell grid app-shell thu một cột với `main{min-width:0}`+`.cs-table-wrap` scroll, và canvas export hình học cố định (`class="cs-canvas-desk"`: decks, social) **luôn** `overflow-x:auto` để slide rộng hơn cửa sổ scroll trong desk thay vì đẩy trang rộng. Đã verify whole-set ở 390 bởi `_audit/responsive-overflow.html` (cả 85 = 0 document overflow). **Hai gotcha cứng:** (1) DC runtime compile `style="…"` inline thành object React, nên attribute render *có khoảng* — mọi selector responsive `[style*=…]` phải khớp `grid-template-columns: repeat(4, 1fr)` (colon-space, comma-space), không bao giờ dạng không-space lúc author; (2) rule CSS global chỉ override property template đặt **inline** qua selector **attribute** (`[style*="grid-template-columns: 248px 1fr"]`) — selector **class** thua inline style. Ưu tiên sửa overflow trong source template (thêm `min-width:0`, `flex-wrap:wrap` inline) hơn đấu inline từ stylesheet.
|
|
36
36
|
|
|
37
37
|
**Template mới** — `templates/<slug>/<Slug>.dc.html` với `<!-- @template name description -->` đầu tiên; `ds-base.js` giữ single-entry (`styles.css` thôi — rebind một dòng đã validate end-to-end Th7 2026 từ path sâu hơn; scaffold test đã gỡ) và publish alias độc lập-id `window.CyberSkillDS` lúc bundle load, nên mount DS component qua `component-from-global-scope="CyberSkillDS.…"` — **không bao giờ** hậu tố `CyberSkillDesignSystem_<projectId>` hardcode (đổi khi re-import; enforce bởi `_audit/namespace-portability.html`); chỉ inline styles; 1–3 tweaks (không plain copy/color — in-place editing phủ những cái đó); printable docs thêm khối print `@page` + `.cs-desk`/`.cs-sheet` và **không** mang dark tweak (print chỉ light).
|
|
38
38
|
|
|
39
39
|
**Element variant mới** — ở trong envelope oklch của element; đặt 10 token hợp đồng `--cs-accent-*` (gồm `--cs-accent-on-strong` ≥4.5:1 trên `-strong`) cộng `--cs-color-text-accent`/`--cs-color-link` (APCA-check cả hai); aurora wash kế thừa từ element qua `.cs-aurora-wash` (chỉ override class rule nếu variant thật sự cần ảnh riêng); đối tác gradient (`grad-b`) phải theo Tương sinh.
|
|
40
40
|
|
|
41
|
-
**Ship check** — chạy compiler check đến sạch, rồi chạy `_audit/docs-consistency.html` **và** `_audit/namespace-portability.html` (cả hai phải xanh). VERSION **1.
|
|
41
|
+
**Ship check** — chạy compiler check đến sạch, rồi chạy `_audit/docs-consistency.html` **và** `_audit/namespace-portability.html` (cả hai phải xanh). VERSION **1.4.0** (auto-bump trên `main`).
|
|
42
42
|
|
|
43
43
|
## Decision log (owner duyệt)
|
|
44
44
|
|
|
@@ -116,7 +116,7 @@ Tiếng Việt là ngôn ngữ chính; hệ chữ xây cho nó — đã verify,
|
|
|
116
116
|
|
|
117
117
|
## Whole-set state audits — language · theme · responsive (mỗi cái một pass riêng, Th7 2026)
|
|
118
118
|
|
|
119
|
-
Doctrine owner: language, theme, và responsive mỗi cái có pass whole-set RIÊNG; một state sạch không phải bằng chứng cho state khác. Cả ba giờ race-free, manifest-driven, gate pass/fail **all-
|
|
119
|
+
Doctrine owner: language, theme, và responsive mỗi cái có pass whole-set RIÊNG; một state sạch không phải bằng chứng cho state khác. Cả ba giờ race-free, manifest-driven, gate pass/fail **all-85** trên cùng pattern — **fresh single-navigation iframe mỗi template** (tái dùng một iframe qua `src` swap race CSS `@import` và cho kết quả sai), state ép qua `__dcSetProps`, settle, rồi đo:
|
|
120
120
|
- **Language** — `_audit/language-overflow.html` — ép `Tiếng Việt`; 0 VN overflow/clip @390; cũng assert VN thật sự áp dụng trên mọi template.
|
|
121
121
|
|
|
122
122
|
- **Theme** — `_audit/theme-overflow.html` — ép dark; hard gate = dark-applies + 0 dark overflow @390 + 0 fail contrast leaf-text solid-bg mở ngoài `REVIEWED_OK`.
|
package/docs/vi/decisions.md
CHANGED
|
@@ -25,9 +25,10 @@ Giữ plan Figma hiện tại. Variables REST API chỉ Enterprise — job ghi *
|
|
|
25
25
|
**Lựa chọn owner: Storybook là live hub duy nhất** (Th7 2026)
|
|
26
26
|
|
|
27
27
|
- Operator dùng Storybook tại `/` cho Theme × Element × Language × Style và ma trận điều khiển component.
|
|
28
|
+
- IA công khai theo đường duyệt atomic: Foundations → Components → **Templates** → **Pages** (Atoms/Molecules/Organisms vẫn trong CSF + Atomic View; Templates/Pages là nhóm sidebar hạng nhất, gồm cả bộ VN A4 / HR Suite).
|
|
28
29
|
- Không có trang Live View riêng trong tree.
|
|
29
30
|
- Legacy `/dashboard`, `/dashboard/`, `/dashboard.html`, `/dashboard/:path*`, `/playground`, `/playground/`, `/playground/:path*` redirect về `/`.
|
|
30
|
-
- Atomic View portable và HTML tĩnh khác vẫn phục vụ gate zero-build và consumer;
|
|
31
|
+
- Atomic View portable và HTML tĩnh khác vẫn phục vụ gate zero-build và consumer; Atomic View cũng được nối từ **Templates → Gallery**.
|
|
31
32
|
- Bản đồ bề mặt: `docs/live-hub.md`.
|
|
32
33
|
|
|
33
34
|
## 5. Hai nguồn token JSON
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# Nguồn HR Suite (DOCX ↔ templates)
|
|
2
|
+
|
|
3
|
+
Xuất bản trên Storybook **Docs** tại `design.cyberskill.world`.
|
|
4
|
+
|
|
5
|
+
## Quyết định
|
|
6
|
+
|
|
7
|
+
**Instrument sống canonical là Design Component** dưới `templates/vn-*/*.dc.html` (cộng `doc-suite-index`, `doc-style-guide`, `doc-templates`). Google Drive / Word (`.docx` / `.dotx`) là **provenance nguồn**, không phải bề mặt sản phẩm Storybook.
|
|
8
|
+
|
|
9
|
+
**Không** commit file Word binary lớn vào package design system. Giải nén local tùy chọn để diff:
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
# scraps/ đã gitignore
|
|
13
|
+
mkdir -p scraps/hr-suite-docx
|
|
14
|
+
unzip -O UTF-8 /path/to/Templates.zip -d scraps/hr-suite-docx
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## Inventory (Templates.zip, Th7 2026)
|
|
18
|
+
|
|
19
|
+
| Số | Loại |
|
|
20
|
+
|---|---|
|
|
21
|
+
| 40 | `.docx` instrument / hướng dẫn |
|
|
22
|
+
| 1 | `.dotx` shell trình bày |
|
|
23
|
+
| **41** | **tổng trong zip** |
|
|
24
|
+
|
|
25
|
+
Cả **37** thư mục Employment Suite `templates/vn-*` từ zip map 1:1 với một `.docx`. Bốn file “0.” tham chiếu map tới template `doc-*`. Thêm **một** hợp đồng nguyên tắc thương mại (không nằm trong zip) tại `templates/vn-framework-agreement`.
|
|
26
|
+
|
|
27
|
+
## Mapping
|
|
28
|
+
|
|
29
|
+
Bảng đầy đủ (tiêu đề EN → path repo) nằm ở bản EN: `docs/hr-suite-sources.md`. Tóm tắt: mọi hợp đồng / chính sách / form Employment Suite trong zip khớp một `templates/vn-*`; index + style guide + usage guide khớp `templates/doc-*`.
|
|
30
|
+
|
|
31
|
+
### Ngoài Templates.zip (thêm Th8 2026)
|
|
32
|
+
|
|
33
|
+
| Nguồn | Path repo | Phân loại |
|
|
34
|
+
|---|---|---|
|
|
35
|
+
| `Hợp đồng Nguyên Tắc - CyberSkill - Ban QLDA Bình Quới.docx` (Downloads) | `templates/vn-framework-agreement` | **Thương mại** — khung cung cấp dịch vụ & tài khoản phần mềm (không phải vòng đời lao động). Cùng skin VN A4 (`vn-*`), hiện dưới **Templates → HR** nhờ tên catalog `HR Suite ·`; mục lục suite đặt ở Legal/client-facing. DOCX đã adapt (gitignore): `scraps/hr-suite-docx/Templates/9. Hợp đồng Nguyên Tắc - Framework Agreement (Software Services).docx` |
|
|
36
|
+
|
|
37
|
+
## Duyệt trên Storybook
|
|
38
|
+
|
|
39
|
+
- **Templates → Gallery → Atomic gallery** — tier Templates của Atomic View
|
|
40
|
+
- **Templates → HR** — mọi instrument HR Suite / HR ops
|
|
41
|
+
- **Templates → Documents** — suite index / style guide / document template
|
|
42
|
+
|
|
43
|
+
## Trạng thái sync (Th8 2026)
|
|
44
|
+
|
|
45
|
+
Zip ngày **2026-07-11**. Repo đã có `.dc.html` đã chuyển cho mọi instrument đã map. Thay đổi này **ghi nhận** map Drive/DOCX ↔ `vn-*` và đưa Templates lên Storybook; **không** re-import nội dung DOCX vào DC. Chỉ sync lại khi counsel/ops xác nhận Word lệch so với cây DC — rồi sửa `templates/vn-*/` tương ứng và regen CSF Storybook nếu đổi tên (`node scripts/generate-template-stories.mjs`).
|
|
46
|
+
|
|
47
|
+
Vẫn cần counsel review trước khi dùng thật (instrument do client cung cấp; xem README / SKILL).
|
package/docs/vi/live-hub.md
CHANGED
|
@@ -4,38 +4,43 @@ Xuất bản trên Storybook **Docs** tại `design.cyberskill.world`.
|
|
|
4
4
|
|
|
5
5
|
## Quyết định
|
|
6
6
|
|
|
7
|
-
**Storybook là live
|
|
7
|
+
**Storybook là live hub tương tác duy nhất** cho operator trên `design.cyberskill.world`. Không có trang Live View riêng và không có shell dashboard HTML sản phẩm riêng. Production **`/`** là Storybook.
|
|
8
8
|
|
|
9
9
|
## Sidebar IA
|
|
10
10
|
|
|
11
|
+
Thứ tự duyệt atomic trên site sản phẩm: **Foundations → Components → Templates → Pages** (Atoms / Molecules / Organisms nằm trong Atomic View và CSF Components; Templates và Pages là nhóm sidebar hạng nhất).
|
|
12
|
+
|
|
11
13
|
| Nhóm | Vai trò |
|
|
12
14
|
|---|---|
|
|
13
|
-
| **Docs** | Docs operator đã xuất bản: **Start** (Introduction, README, SKILL, Contributing, llms, Library) · **Guides** (consuming, grant, deploy, schema, conventions, styles, products, Figma, contrast, storybook, live-hub, runbook phát hành, benchmark, …) · **Maintainers** (học thuyết, decisions, CI/CD, quality gates, sync). MDX curated cộng một mục sidebar mỗi trang tracked. EN·VI qua Thư viện tài liệu (`/docs/viewer.html`) |
|
|
14
|
-
| **Foundations** |
|
|
15
|
+
| **Docs** | Docs operator đã xuất bản: **Start** (Introduction, README, SKILL, Contributing, llms, Library) · **Guides** (consuming, grant, deploy, schema, conventions, styles, products, Figma, contrast, storybook, live-hub, nguồn HR Suite, runbook phát hành, benchmark, …) · **Maintainers** (học thuyết, decisions, CI/CD, quality gates, sync). MDX curated cộng một mục sidebar mỗi trang tracked. EN·VI qua Thư viện tài liệu (`/docs/viewer.html`) |
|
|
16
|
+
| **Foundations** | Màu, chữ, spacing, elevation, motion, elements |
|
|
15
17
|
| **Components** | Thư viện CSF đầy đủ |
|
|
18
|
+
| **Templates** | Điểm bắt đầu công khai: **Gallery** (Atomic View → tier Templates, kitchen-sink, playground) cộng mọi template `_ds_manifest.json` nhóm như Atomic View (Product · Board · … · **HR** Suite · Documents). Gồm cả 38 instrument `vn-*` A4 (Employment Suite + hợp đồng nguyên tắc thương mại) |
|
|
19
|
+
| **Pages** | UI kit — Status Hub, Marketing site, Slide deck |
|
|
16
20
|
| **Release Notes** | Prose sản phẩm curated (**không CHANGELOG.md**) |
|
|
17
|
-
| **Status** |
|
|
21
|
+
| **Status** | Embed full-bleed `_audit/run.html` (tự chạy lần đầu; **Re-run** khi cần) |
|
|
18
22
|
| **A11y / I18n** | Specimen a11y + song ngữ |
|
|
19
|
-
| **Maintainer** | Iframe HTML portable cho gates
|
|
23
|
+
| **Maintainer** | Iframe HTML portable cho gates và demo (Motion, mirror kit, demo template, RTL, Atomic View cho gates) |
|
|
20
24
|
|
|
21
25
|
## Bề mặt
|
|
22
26
|
|
|
23
27
|
| Bề mặt | Vai trò |
|
|
24
28
|
|---|---|
|
|
25
|
-
| **Storybook** (`/`) | Bề mặt sản phẩm host: toolbar Theme × Element × Language × Style, Docs/Foundations/Components
|
|
26
|
-
| **Atomic View** (`guidelines/atomic-view.html`) |
|
|
27
|
-
| **Guidelines / templates khác** | Specimen portable; mở từ Storybook
|
|
28
|
-
| **Legacy `/dashboard`, `/dashboard/`, `/dashboard.html`, `/dashboard/:path*`, `/playground`, `/playground/`, `/playground/:path*`** | Redirect về `/` (stub +
|
|
29
|
+
| **Storybook** (`/`) | Bề mặt sản phẩm host: toolbar Theme × Element × Language × Style, Docs/Foundations/Components/**Templates**/**Pages**/Release Notes/Status, và Maintainer/* iframe vào HTML portable |
|
|
30
|
+
| **Atomic View** (`guidelines/atomic-view.html`) | Trình duyệt atomic zero-build portable (Atoms → Molecules → Organisms → Templates → Pages). Công khai qua **Templates → Gallery → Atomic gallery**; cũng dưới Maintainer cho gates / clone-and-open |
|
|
31
|
+
| **Guidelines / templates khác** | Specimen portable; mở từ Storybook Templates/*, Pages/*, hoặc Maintainer/* |
|
|
32
|
+
| **Legacy `/dashboard`, `/dashboard/`, `/dashboard.html`, `/dashboard/:path*`, `/playground`, `/playground/`, `/playground/:path*`** | Redirect về `/` (stub + Vercel redirects) |
|
|
29
33
|
|
|
30
|
-
## Bản đồ bề mặt (
|
|
34
|
+
## Bản đồ bề mặt (công khai + Maintainer)
|
|
31
35
|
|
|
32
|
-
| Storybook
|
|
36
|
+
| Entry Storybook | HTML portable |
|
|
33
37
|
|---|---|
|
|
34
38
|
| Components/* CSF | Nguồn React dưới `components/` |
|
|
39
|
+
| Templates/Gallery → Atomic gallery | `guidelines/atomic-view.html#tier-templates` |
|
|
40
|
+
| Templates/{Category}/* | `templates/**/*.dc.html` qua `_ds_manifest.json` (regen: `node scripts/generate-template-stories.mjs`) |
|
|
41
|
+
| Pages → Status Hub / Marketing site / Slide deck | `ui_kits/status-hub|website|deck/index.html` |
|
|
35
42
|
| Maintainer/Surfaces → Motion | `guidelines/motion.html` |
|
|
36
|
-
| Maintainer/Surfaces → Status Hub
|
|
37
|
-
| Maintainer/Surfaces → Website | `ui_kits/website/index.html` |
|
|
38
|
-
| Maintainer/Surfaces → Deck | `ui_kits/deck/index.html` |
|
|
43
|
+
| Maintainer/Surfaces → Status Hub / Website / Deck | cùng UI kit (mirror maintainer) |
|
|
39
44
|
| Maintainer/Surfaces → Template Playground | `templates/playground.html` |
|
|
40
45
|
| Maintainer/Surfaces → Kitchen Sink | `templates/kitchen-sink.html` |
|
|
41
46
|
| Maintainer/Surfaces → Image Slots | `templates/image-slots-demo.html` |
|
|
@@ -46,9 +51,9 @@ Xuất bản trên Storybook **Docs** tại `design.cyberskill.world`.
|
|
|
46
51
|
|
|
47
52
|
## Hành vi Status
|
|
48
53
|
|
|
49
|
-
- Mở Status
|
|
50
|
-
- Storybook có thể giữ iframe cache khi điều hướng đi rồi về — **không** tự chạy lại
|
|
51
|
-
- Dùng nút **Re-run** trên board để
|
|
54
|
+
- Mở Status tải `_audit/run.html`, **tự chạy** board nhanh một lần.
|
|
55
|
+
- Storybook có thể giữ iframe cache khi điều hướng đi rồi về — **không** tự chạy lại gates.
|
|
56
|
+
- Dùng nút **Re-run** trên board để pass mới (mỗi iframe gate được cache-bust).
|
|
52
57
|
|
|
53
58
|
## Consumer portable (không đổi)
|
|
54
59
|
|
|
@@ -60,3 +65,5 @@ Consumer vẫn link `styles.css` / `_ds_bundle.js` / ESM / templates. **Không**
|
|
|
60
65
|
npm run storybook # Storybook sản phẩm tại http://localhost:6006
|
|
61
66
|
npm run build:site # đóng gói Storybook tại .vercel-static/ (root `/`)
|
|
62
67
|
```
|
|
68
|
+
|
|
69
|
+
Mở **Templates → Gallery → Atomic gallery** hoặc **Templates → HR → …** cho Employment Suite.
|
package/docs/vi/quality-gates.md
CHANGED
|
@@ -41,9 +41,9 @@ Nguyên tắc benchmark (WCAG · APCA · OKLCH · DTCG · doctrine CDS + mở r
|
|
|
41
41
|
| A11y interactions | `_audit/a11y-gate.html` | Focus trap/restore, roving, Mentions APG + Sortable buttons (hard-fail), role/label, open-state Esc | Mọi assert keyboard/ARIA pass (`__a11y`) | Hard | Fast board CI |
|
|
42
42
|
| A11y CSSOM | `_audit/a11y-harness.html` | Mọi control `.cs-*` tương tác đạt floor touch-target đã ghi dưới coarse pointer; focus-ring, reduced-motion, và contrast rule chứng minh trong source CSS | 0 vi phạm floor, mọi source proof tìm thấy (`__a11ycss`) | Hard | Fast board CI |
|
|
43
43
|
| Template schema v2 | `_audit/template-schema-test.html` | Mọi sidecar `content-schema.json` validate theo JSON Schema, mọi slot id khai báo resolve tới `{{ hole }}` thật trong template, và mọi template lộ **content** hole author được đều có sidecar (hole trục/control-flow và tweak boolean được loại trừ — xem `docs/template-schema-v2.md`) | 0 sidecar invalid, 0 slot id treo, 0 template hole-driven thiếu sidecar (`__schemav2`) | Hard | Fast board CI |
|
|
44
|
-
| Support runtime identity | `_audit/support-runtime-identity.html` | Mọi bản `templates/*/support.js` (một mỗi template,
|
|
44
|
+
| Support runtime identity | `_audit/support-runtime-identity.html` | Mọi bản `templates/*/support.js` (một mỗi template, 85) byte-identical: sha-256 qua SubtleCrypto, đúng một hash duy nhất, số bản == số template manifest | 1 hash duy nhất, count khớp (`__supportid`) | Hard | Fast board CI |
|
|
45
45
|
| Bilingual parity | `_audit/bilingual-parity.html` | Mọi component trong `components/_i18n/strings.js` có bảng en + vi với key set bằng nhau và không giá trị rỗng | 0 key thiếu/thừa, 0 giá trị rỗng (`__bilingual`) | Hard | Fast board CI + merge blocker |
|
|
46
|
-
| Template language parity | `_audit/template-lang-parity.html` | Quét source tĩnh cả
|
|
46
|
+
| Template language parity | `_audit/template-lang-parity.html` | Quét source tĩnh cả 85 `.dc.html`: en/vi hole-map key set giống và không rỗng (21 map template); nhánh `sc-if` `isEN`/`isVN` cặp (24 branch template); mọi template có language-tweak có cơ chế bilingual; lexicon EN-leak (Unsubscribe · View in browser · Preferences · All rights reserved · Manage subscription · Sent with) không bao giờ xuất hiện ngoài guard `isEN` / map `en`. Instrument VN-first stacked (38 `vn-*` + 3 `doc-*`) miễn leak theo thiết kế — cả hai ngôn ngữ luôn render | 0 key drift, 0 nhánh không cặp, 0 leak (`__langparity`) | Hard | Fast board CI |
|
|
47
47
|
| APCA dark packs | `_audit/apca-dark-preview.html` | Cả 15 pack element×variant giữ mục tiêu APCA ở dark (bright-as-text ≥ 75, accent UI ≥ 60, ink-on-accent ≥ 75, ink-on-tint ≥ 75) | 0 fail hiện tại (`__apcaPreview.currentFail === 0`) | Hard | Fast board CI |
|
|
48
48
|
| Element geometry | `_audit/element-geometry.html` | Sync cường độ soft/middle/deep giữa năm element; tách variant; khóa hue light↔dark; Thổ middle ghim ochre logo; pack generate từ seed | `__elementgeometry.pass` | Hard | Fast board CI |
|
|
49
49
|
| Style contract | `_audit/style-contract.html` | Allowlist trục Style: sole pack `liquid-glass` (vắng ≡ mặc định); `styles.css` import `tokens/styles.css`; `--cs-style-pack` resolve; không `data-cs-style` lạ | `__stylecontract.pass` | Hard | Fast board CI |
|
|
@@ -57,7 +57,7 @@ Nguyên tắc benchmark (WCAG · APCA · OKLCH · DTCG · doctrine CDS + mở r
|
|
|
57
57
|
|
|
58
58
|
| Gate | File | Assert gì | Tiêu chí pass | Loại | Chạy ở đâu |
|
|
59
59
|
|---|---|---|---|---|---|
|
|
60
|
-
| Responsive overflow | `_audit/responsive-overflow.html` | Mọi template (
|
|
60
|
+
| Responsive overflow | `_audit/responsive-overflow.html` | Mọi template (85) + 3 UI kit render ở 390 px không horizontal document overflow | 0 bề mặt overflow (`__overflow`) | Hard | Whole-set CI (mọi PR + nightly) |
|
|
61
61
|
| Language overflow | `_audit/language-overflow.html` | Cùng set ép Tiếng Việt: VN áp dụng, không overflow, không clip chữ trong hộp fixed/nowrap, và chuỗi EN built-in đã biết (hint PromptInput, FileUpload, pin DataGrid, …) không rò | 0 over/clip/EN-leak (`__language`) | Hard | Whole-set CI (mọi PR + nightly) |
|
|
62
62
|
| Theme overflow | `_audit/theme-overflow.html` | Cùng set ép dark: dark áp dụng, không document overflow, và không fail WCAG leaf-text solid-bg tái lập được ngoài `REVIEWED_OK` | Dark áp dụng + 0 overflow + 0 contrast mở (`__theme`) | Hard (chỉ near-miss allowlist) | Whole-set CI (mọi PR + nightly) |
|
|
63
63
|
|
package/docs/vi/release-notes.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Ghi chú phát hành
|
|
2
2
|
|
|
3
|
-
Điểm nổi bật sản phẩm cho operator — **không** phải git log và **không** phải `CHANGELOG.md`. Hệ thống thiết kế không maintain file changelog. VERSION **1.
|
|
3
|
+
Điểm nổi bật sản phẩm cho operator — **không** phải git log và **không** phải `CHANGELOG.md`. Hệ thống thiết kế không maintain file changelog. VERSION **1.4.0** (auto-bump khi push lên `main` từ Conventional Commits; owner vẫn có thể force bump). Chân lý kỹ thuật là tip repo; chân lý hướng sản phẩm là trang này (đồng bộ Storybook **Release Notes**). Xuất bản trên Storybook **Docs** tại `design.cyberskill.world`.
|
|
4
4
|
|
|
5
5
|
## Release — `@cyberskill/design@1.3.10`
|
|
6
6
|
|
package/docs/vi/storybook.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Storybook — bề mặt sản phẩm tại `/` (host)
|
|
2
2
|
|
|
3
|
-
Storybook **10** là **site sản phẩm** cho operator trên `design.cyberskill.world` (`/`).
|
|
3
|
+
Storybook **10** là **site sản phẩm** cho operator trên `design.cyberskill.world` (`/`). Vẫn **không** thuộc hợp đồng consumer portable. Xuất bản trên Storybook **Docs** tại `design.cyberskill.world`.
|
|
4
4
|
|
|
5
5
|
## URL
|
|
6
6
|
|
|
@@ -14,44 +14,48 @@ Storybook **10** là **site sản phẩm** cho operator trên `design.cyberskill
|
|
|
14
14
|
## Nội dung
|
|
15
15
|
|
|
16
16
|
- CSF component đầy đủ với **Default + ma trận điều khiển sâu** (`Matrix` / `AllVariants`)
|
|
17
|
-
- **CSF bar (exhaustive khi
|
|
18
|
-
- `AllSizes` khi `argTypes.size`
|
|
19
|
-
- `States` (hoặc subsection Matrix)
|
|
20
|
-
- Mọi option enum `size` / `variant`
|
|
21
|
-
- `FullMatrix` khi ≥1 trong {size enums, variant enums, state keys}
|
|
22
|
-
- Toolbar globals: Theme (light · dark · **system**) × Element × Language × Style (cùng trục với
|
|
23
|
-
- **Docs/** tài liệu operator đã xuất bản —
|
|
24
|
-
-
|
|
25
|
-
-
|
|
26
|
-
-
|
|
17
|
+
- **CSF bar (exhaustive khi có trục):**
|
|
18
|
+
- `AllSizes` khi có `argTypes.size`
|
|
19
|
+
- `States` (hoặc subsection Matrix) cho `disabled` / `loading` / `error` / `busy` khi có argTypes
|
|
20
|
+
- Mọi option enum `size` / `variant` gắn trong story họ matrix
|
|
21
|
+
- `FullMatrix` khi ≥1 trong {size enums, variant enums, state keys} — tích size × variant × key-state qua helper `stories/lib/matrix.jsx`
|
|
22
|
+
- Toolbar globals: Theme (light · dark · **system**) × Element × Language × Style (cùng trục với templates / Atomic View). Element liệt kê **đủ 15** pack Ngũ Hành. Style chỉ có **liquid-glass**.
|
|
23
|
+
- **Docs/** tài liệu operator đã xuất bản — **Start / Guides / Maintainers**, MDX curated, một story sidebar mỗi trang markdown tracked, và iframe Thư viện tài liệu `/docs/viewer.html` (EN·VI). Prose canonical vẫn `docs/*.md`. **Release Notes/** prose curated (**không CHANGELOG.md**); **Status/** embed `_audit/run.html` full-bleed
|
|
24
|
+
- **Templates/** điểm bắt đầu công khai — Gallery (tier Templates của Atomic View + kitchen-sink/playground) và mọi template manifest theo category Atomic View (gồm **HR** / `vn-*`). Regen CSF bằng `node scripts/generate-template-stories.mjs` sau khi đổi tên template
|
|
25
|
+
- **Pages/** UI kit công khai (Status Hub, Marketing site, Slide deck)
|
|
26
|
+
- **Maintainer/** story cho HTML portable (Motion, mirror kit, demo template, AI cluster, RTL; Atomic View cho gates)
|
|
27
|
+
- Cùng `styles.css` production
|
|
28
|
+
- Addon: `@storybook/addon-docs` + `@storybook/addon-a11y`
|
|
27
29
|
|
|
28
30
|
## Config
|
|
29
31
|
|
|
30
|
-
- `.storybook/main.js` —
|
|
31
|
-
- `.storybook/manager-head.html` — meta OG / canonical cho
|
|
32
|
-
-
|
|
32
|
+
- `.storybook/main.js` — ESM Storybook 10, Vite + alias `@cs` → `components/`, **`base: '/'`**
|
|
33
|
+
- `.storybook/manager-head.html` — meta OG / canonical cho `/` production
|
|
34
|
+
- `.storybook/preview.jsx` — thứ tự `storySort`: Docs · Foundations · Components · **Templates** · **Pages** · A11y · I18n · Release Notes · Status · Maintainer
|
|
35
|
+
- Autodocs qua `tags: ['autodocs']` trên CSF meta
|
|
33
36
|
|
|
34
37
|
## Consumer vẫn dùng (không đổi)
|
|
35
38
|
|
|
36
|
-
|
|
|
39
|
+
| Đối tượng | Tiêu thụ |
|
|
37
40
|
|---|---|
|
|
38
|
-
| Static /
|
|
41
|
+
| Static / mọi framework | `styles.css` + `.cs-*` |
|
|
39
42
|
| React production | `styles.css` + `_ds_bundle.js` |
|
|
40
|
-
| ESM (bundler) | `_esm/react.mjs`
|
|
41
|
-
| ESM (browser legacy) | `_esm/cs.mjs`
|
|
43
|
+
| ESM (bundler) | `_esm/react.mjs` |
|
|
44
|
+
| ESM (browser legacy) | `_esm/cs.mjs` |
|
|
42
45
|
| Tokens | `tokens/*` |
|
|
43
|
-
| DC
|
|
46
|
+
| Authoring DC | `templates/**/*.dc.html` |
|
|
44
47
|
|
|
45
48
|
## Lệnh
|
|
46
49
|
|
|
47
50
|
```bash
|
|
48
51
|
npm install
|
|
49
52
|
npm run storybook
|
|
50
|
-
npm run build:storybook
|
|
51
|
-
npm run build:site
|
|
53
|
+
npm run build:storybook
|
|
54
|
+
npm run build:site
|
|
52
55
|
npm run test:storybook-contract
|
|
56
|
+
node scripts/generate-template-stories.mjs
|
|
53
57
|
```
|
|
54
58
|
|
|
55
59
|
## Bản đồ
|
|
56
60
|
|
|
57
|
-
|
|
61
|
+
Templates/Pages công khai và iframe Maintainer nằm trong `docs/live-hub.md`. Map Word gốc HR Suite: `docs/hr-suite-sources.md`. Status embed `_audit/run.html`.
|