@3fn/core 14.0.0 → 14.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/.kiro/steering/Civitas-System-Overview.md +3 -12
- package/.kiro/steering/Spec-Feedback-Protocol.md +2 -11
- package/.kiro/steering/Task-Completion-Protocol.md +7 -7
- package/.kiro/steering/start-up-tasks.md +4 -4
- package/dist/ComponentTokens.android.kt +12 -12
- package/dist/ComponentTokens.ios.swift +12 -12
- package/dist/ComponentTokens.web.css +3 -3
- package/dist/DesignTokens.android.kt +1 -1
- package/dist/DesignTokens.dtcg.json +2 -2
- package/dist/DesignTokens.ios.swift +1 -1
- package/dist/DesignTokens.web.css +1 -1
- package/dist/android/DesignTokens.android.kt +1 -1
- package/dist/browser/designerpunk.esm.js +14 -9
- package/dist/browser/designerpunk.esm.min.js +7 -7
- package/dist/browser/designerpunk.umd.js +14 -9
- package/dist/browser/designerpunk.umd.min.js +12 -12
- package/dist/browser/tokens.css +3 -3
- package/dist/build/tokens/defineComponentTokens.d.ts +10 -0
- package/dist/build/tokens/defineComponentTokens.js +26 -0
- package/dist/components/core/Avatar-Base/avatar.tokens.d.ts +21 -26
- package/dist/components/core/Avatar-Base/avatar.tokens.js +31 -34
- package/dist/components/core/Avatar-Base/index.d.ts +1 -1
- package/dist/components/core/Avatar-Base/index.js +2 -2
- package/dist/components/core/Button-Icon/buttonIcon.tokens.d.ts +28 -14
- package/dist/components/core/Button-Icon/buttonIcon.tokens.js +35 -20
- package/dist/generators/TokenFileGenerator.js +7 -2
- package/dist/ios/DesignTokens.ios.swift +1 -1
- package/dist/tokens/component/progress.d.ts +65 -5
- package/dist/tokens/component/progress.js +79 -18
- package/dist/types/generated/TokenTypes.d.ts +1 -1
- package/dist/types/generated/TokenTypes.js +1 -1
- package/dist/web/DesignTokens.web.css +1 -1
- package/governance/BUILD-SYSTEM-SETUP.md +1 -2
- package/governance/Component-Development-Guide.md +1 -1
- package/governance/Component-Development-Standards.md +19 -18
- package/governance/Component-Family-Avatar.md +6 -6
- package/governance/Component-Family-Badge.md +19 -19
- package/governance/Component-Family-Button.md +26 -26
- package/governance/Component-Family-Chip.md +14 -14
- package/governance/Component-Family-Container.md +12 -12
- package/governance/Component-Family-Form-Inputs.md +61 -61
- package/governance/Component-Family-Icon.md +8 -8
- package/governance/Component-Family-Navigation.md +1 -1
- package/governance/Component-Inheritance-Structures.md +29 -28
- package/governance/Component-Readiness-Status.md +6 -7
- package/governance/Component-Templates.md +26 -26
- package/governance/Contract-System-Reference.md +1 -1
- package/governance/Process-Development-Workflow.md +4 -4
- package/governance/Process-File-Organization.md +1 -4
- package/governance/Process-Hook-Operations.md +6 -7
- package/governance/Process-Spec-Planning.md +8 -14
- package/governance/Rosetta-System-Architecture.md +7 -5
- package/governance/Token-Quick-Reference.md +35 -22
- package/governance/Web-Authoring-Standards.md +1 -1
- package/governance/classification-map.md +109 -3
- package/governance/completion-documentation-guide.md +14 -31
- package/governance/platform-implementation-guidelines.md +1 -2
- package/governance/release-management-system.md +28 -63
- package/package.json +2 -6
- package/src/build/tokens/__tests__/defineComponentTokens.test.ts +113 -0
- package/src/build/tokens/defineComponentTokens.ts +43 -1
- package/src/components/core/Avatar-Base/avatar.tokens.ts +31 -34
- package/src/components/core/Avatar-Base/index.ts +1 -1
- package/src/components/core/Button-Icon/buttonIcon.tokens.ts +43 -27
- package/src/generators/TokenFileGenerator.ts +7 -2
- package/src/tokens/__tests__/ProgressTokenCompliance.test.ts +5 -3
- package/src/tokens/__tests__/ProgressTokenFormulas.test.ts +11 -11
- package/src/tokens/__tests__/ProgressTokenTranslation.test.ts +22 -20
- package/src/tokens/component/progress.ts +83 -21
- package/src/types/generated/TokenTypes.ts +1 -1
- package/token-index/components.yaml +8 -8
- package/src/tools/release/__tests__/ChangeClassifier.test.ts +0 -133
- package/src/tools/release/__tests__/ChangeExtractor.test.ts +0 -222
- package/src/tools/release/__tests__/GitHubPublisher.test.ts +0 -240
- package/src/tools/release/__tests__/NotesRenderer.test.ts +0 -142
- package/src/tools/release/__tests__/NpmPublisher.test.ts +0 -289
- package/src/tools/release/__tests__/PipelineIntegration.test.ts +0 -188
- package/src/tools/release/__tests__/ReleasePipeline.test.ts +0 -192
- package/src/tools/release/__tests__/SemanticVersionValidator.test.ts +0 -49
- package/src/tools/release/__tests__/SummaryScanner.test.ts +0 -141
- package/src/tools/release/__tests__/TagResolver.test.ts +0 -91
- package/src/tools/release/__tests__/VersionCalculator.test.ts +0 -270
- package/src/tools/release/__tests__/helpers/NpmMockHelper.ts +0 -80
- package/src/tools/release/cli/ReleasePipeline.ts +0 -165
- package/src/tools/release/cli/release-tool.ts +0 -107
- package/src/tools/release/pipeline/ChangeClassifier.ts +0 -61
- package/src/tools/release/pipeline/ChangeExtractor.ts +0 -87
- package/src/tools/release/pipeline/NotesRenderer.ts +0 -66
- package/src/tools/release/pipeline/SummaryScanner.ts +0 -70
- package/src/tools/release/pipeline/TagResolver.ts +0 -40
- package/src/tools/release/pipeline/VersionCalculator.ts +0 -375
- package/src/tools/release/publishers/GitHubPublisher.ts +0 -228
- package/src/tools/release/publishers/NpmPublisher.ts +0 -196
- package/src/tools/release/release-config.json +0 -5
- package/src/tools/release/types/index.ts +0 -282
- package/src/tools/release/validators/SemanticVersionValidator.ts +0 -67
|
@@ -120,15 +120,6 @@ The three systems form a complete design system ecosystem: Rosetta defines the v
|
|
|
120
120
|
|
|
121
121
|
---
|
|
122
122
|
|
|
123
|
-
##
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
```
|
|
127
|
-
get_document_full({ path: "civitas-system-overview" })
|
|
128
|
-
```
|
|
129
|
-
|
|
130
|
-
For specific sections:
|
|
131
|
-
```
|
|
132
|
-
get_section({ path: "civitas-system-overview", heading: "The Three-Layer Boundary" })
|
|
133
|
-
get_section({ path: "civitas-system-overview", heading: "Relationship to Rosetta and Stemma" })
|
|
134
|
-
```
|
|
123
|
+
## Document Access
|
|
124
|
+
|
|
125
|
+
This is an identity doc (Spec 119) — never MCP-served, always loaded in full into every agent's context. No query is needed to access it. If you need to point to a specific part of it, use an in-document § reference (e.g., this doc's § "The Three-Layer Boundary" or § "Relationship to Rosetta and Stemma"), not an MCP call.
|
|
@@ -228,15 +228,6 @@ The feedback document uses this structure:
|
|
|
228
228
|
|
|
229
229
|
---
|
|
230
230
|
|
|
231
|
-
##
|
|
231
|
+
## Document Access
|
|
232
232
|
|
|
233
|
-
|
|
234
|
-
```
|
|
235
|
-
get_document_full({ path: "spec-feedback-protocol" })
|
|
236
|
-
```
|
|
237
|
-
|
|
238
|
-
For specific sections:
|
|
239
|
-
```
|
|
240
|
-
get_section({ path: "spec-feedback-protocol", heading: "Stamp Format" })
|
|
241
|
-
get_section({ path: "spec-feedback-protocol", heading: "Mandatory @ Mention Scanning" })
|
|
242
|
-
```
|
|
233
|
+
This is an identity doc (Spec 119) — never MCP-served, always loaded in full into every agent's context. No query is needed to access it. If you need to point to a specific part of it, use an in-document § reference (e.g., this doc's § "Stamp Format" or § "Mandatory @ Mention Scanning"), not an MCP call.
|
|
@@ -8,7 +8,7 @@ description: Operational law for ending a task — when to write completion docs
|
|
|
8
8
|
# Task Completion Protocol
|
|
9
9
|
|
|
10
10
|
**Date**: 2026-06-29
|
|
11
|
-
**Last Reviewed**: 2026-
|
|
11
|
+
**Last Reviewed**: 2026-08-12
|
|
12
12
|
**Purpose**: The end-of-task operational sequence (completion docs, tiers, parent vs. subtask, stop-and-wait, PR flow) — operational law, always loaded
|
|
13
13
|
**Organization**: process-standard
|
|
14
14
|
**Scope**: cross-project
|
|
@@ -37,7 +37,7 @@ get_section({ path: "completion-documentation-guide", heading: "Documentation Ti
|
|
|
37
37
|
1. [ ] Run targeted tests relevant to the change (not the full suite)
|
|
38
38
|
2. [ ] Create completion doc: `.kiro/specs/[spec]/completion/task-N-M-completion.md`
|
|
39
39
|
3. [ ] Mark subtask complete (use the `taskStatus` tool)
|
|
40
|
-
4. [ ] **Commit is optional and judgment-based — not mechanical per subtask.** When you commit, **commit AND push the unit branch** (`task/<spec>-<unit-slug>` or `task/<spec>-<N>-<slug>`, created at the first subtask — `git switch -c` or the completion tooling's equivalent); the two stay coupled because the push is the off-machine backup guarantee (a local-only commit is not backed up). Commit-and-push at a **checkpoint** (delicate or potentially-breaking work — a restore point worth having), when **backup-worthy work has accumulated** (a unit branch is longer-lived than a single task, so more unpushed work sits at risk between merges — push before the pile grows), or at a **session/handoff boundary**. Do NOT commit mechanically after every trivial subtask — the unit squash-merges anyway, so subtask granularity is cosmetic to `main`'s history. No PR opens and no required checks fire until unit completion. Subtasks do NOT open PRs.
|
|
40
|
+
4. [ ] **Commit is optional and judgment-based — not mechanical per subtask.** When you commit, **commit AND push the unit branch** (`task/<spec>-<unit-slug>` or `task/<spec>-<N>-<slug>`, created at the first subtask — `git switch -c` or the completion tooling's equivalent); the two stay coupled because the push is the off-machine backup guarantee (a local-only commit is not backed up). Commit-and-push at a **checkpoint** (delicate or potentially-breaking work — a restore point worth having), when **backup-worthy work has accumulated** (a unit branch is longer-lived than a single task, so more unpushed work sits at risk between merges — push before the pile grows), or at a **session/handoff boundary**. Do NOT commit mechanically after every trivial subtask — the unit squash-merges anyway, so subtask granularity is cosmetic to `main`'s history. No PR opens and no required checks fire until unit completion. Subtasks do NOT open PRs.
|
|
41
41
|
5. [ ] **STOP** and wait for user authorization
|
|
42
42
|
|
|
43
43
|
### For PARENT TASKS (Implementation or Architecture type)
|
|
@@ -48,7 +48,7 @@ get_section({ path: "completion-documentation-guide", heading: "Documentation Ti
|
|
|
48
48
|
5. [ ] Complete the parent on its unit branch: `./.kiro/hooks/complete-task.sh "..."`.
|
|
49
49
|
- **If this parent IS its own merge unit** (a standalone task, or a small single-unit spec): the tooling opens the PR and reports the URL.
|
|
50
50
|
- **If this parent is one of several in a declared multi-parent unit** (see the spec's tasks.md unit grouping): the tooling commits the completion+summary docs on the branch — **no PR yet**. The PR opens when the UNIT completes (its final/gating parent).
|
|
51
|
-
6. [ ] **STOP** — if a PR opened, report the PR URL; otherwise report the on-branch parent completion. **The task is accepted when Peter merges the UNIT's PR** (merge on green = the authorization act). Never merge your own PR
|
|
51
|
+
6. [ ] **STOP** — if a PR opened, report the PR URL; otherwise report the on-branch parent completion. **The task is accepted when Peter merges the UNIT's PR** (merge on green = the authorization act). Never merge your own PR.
|
|
52
52
|
|
|
53
53
|
### For PARENT TASKS (Setup or Documentation type)
|
|
54
54
|
1. [ ] Verify artifacts created/updated as specified
|
|
@@ -58,7 +58,7 @@ get_section({ path: "completion-documentation-guide", heading: "Documentation Ti
|
|
|
58
58
|
5. [ ] Complete the parent on its unit branch: `./.kiro/hooks/complete-task.sh "..."`.
|
|
59
59
|
- **If this parent IS its own merge unit**: the tooling opens the PR and reports the URL.
|
|
60
60
|
- **If this parent is one of several in a declared multi-parent unit** (spec's tasks.md unit grouping): the tooling commits the completion+summary docs on the branch — **no PR yet**; the PR opens at UNIT completion.
|
|
61
|
-
6. [ ] **STOP** — if a PR opened, report the PR URL; otherwise report the on-branch parent completion. **The task is accepted when Peter merges the UNIT's PR** (merge on green = the authorization act). Never merge your own PR
|
|
61
|
+
6. [ ] **STOP** — if a PR opened, report the PR URL; otherwise report the on-branch parent completion. **The task is accepted when Peter merges the UNIT's PR** (merge on green = the authorization act). Never merge your own PR.
|
|
62
62
|
|
|
63
63
|
---
|
|
64
64
|
|
|
@@ -77,7 +77,7 @@ Branch → PR → required checks → merge.
|
|
|
77
77
|
3. **Dependent tasks branch from `main` after the prior task's PR merges.** Starting a dependent task before the prior merge is not sanctioned by default — this composes with stop-and-wait (Peter's go for the next task typically follows his merge of the prior one), so the wait costs nothing in practice. Exception, only on Peter's explicit direction: branch from the prior task branch and declare `Stacked-on: #<PR>` in the PR body; stacked PRs merge in base-first order.
|
|
78
78
|
4. At **unit** completion (a standalone task, a small single-unit spec, or the final/gating parent of a declared multi-parent unit), the tooling commits, pushes the branch, **opens a PR**, and reports the PR URL. A parent completing *inside* a multi-parent unit commits its completion+summary docs on the branch and does NOT open a PR — its acceptance is the unit's merge.
|
|
79
79
|
5. Required checks run on the PR. A failing check blocks merge at the platform.
|
|
80
|
-
6. **Peter merges on green** (see The Merge Rule below).
|
|
80
|
+
6. **Peter merges on green** (see The Merge Rule below). The repository is configured **squash-merge-only** (method drift closed by configuration, not convention). The PR collapses to one commit on `main`, preserving the atomic-commit-per-unit history that serves as the release changelog spine; the PR title becomes the commit subject.
|
|
81
81
|
7. Direct pushes to `main` are rejected by branch protection, **admins included**.
|
|
82
82
|
|
|
83
83
|
**A task is complete at MERGE, not at PR-open.** The PR is the submission; the merge is the acceptance.
|
|
@@ -121,7 +121,7 @@ Branch → PR → required checks → merge.
|
|
|
121
121
|
|
|
122
122
|
### The Merge Rule
|
|
123
123
|
|
|
124
|
-
- **Agents open PRs; Peter merges on green** during bake-in (Spec 125-A Task 5's gate). Agents NEVER merge their own PRs
|
|
124
|
+
- **Agents open PRs; Peter merges on green** during bake-in (Spec 125-A Task 5's gate). Agents NEVER merge their own PRs.
|
|
125
125
|
- Any later **delegation of merge-on-green must be a recorded rule** (ballot or committed record with date and scope) — never a verbal grant. The relayed-authority lesson: authority is a record.
|
|
126
126
|
- **Standing carve-out, surviving any delegation**: PRs touching governance law (`governance/**`, `.kiro/steering/**`, `.kiro/docs/ballots/**`, agent prompts/configs) stay Peter-merged — the closest ratification proxy until 125-B's CODEOWNERS layer.
|
|
127
127
|
|
|
@@ -148,7 +148,7 @@ When the gate must be bypassed (broken gate, urgent fix the checks themselves bl
|
|
|
148
148
|
- **All tasks**: STOP after completion — never auto-proceed to the next task. Authorization to START the next task is governed by Start Up Tasks; the merge that completes this task is not that authorization.
|
|
149
149
|
- **Parent vs. subtask** is the load-bearing distinction: subtasks get targeted tests + a completion doc + an **optional, judgment-based** branch commit-and-push (at a checkpoint, on backup-worthy accumulation, or at a session/handoff boundary — not mechanically per subtask); parents get full validation + completion doc + summary doc, committed on the branch.
|
|
150
150
|
- **The merge unit is the coherent unit** — the smallest chunk that is coherent-on-its-own AND reviewable as a single diff, DECLARED in the spec's tasks.md (a small spec = one unit = one PR; a large spec declares internal units). The unit's completion opens the PR; a parent inside a multi-parent unit is done-on-branch, accepted at the unit's merge.
|
|
151
|
-
- **A task is accepted at the MERGE of its unit.** Agents open PRs at unit completion; Peter merges on green. Never merge your own PR
|
|
151
|
+
- **A task is accepted at the MERGE of its unit.** Agents open PRs at unit completion; Peter merges on green. Never merge your own PR. Pushes to `main` are rejected by branch protection (admins included).
|
|
152
152
|
- **On merge, the unit's branch is cleaned up** — remote auto-deleted by repo setting; local deleted on return to `main`; stale/unmerged branches swept in the monthly Civitas health check.
|
|
153
153
|
- **A checks-only merge is NOT ratification**: governance-law changes still ratify via the record-first ballot protocol (`.kiro/docs/ballots/README.md`).
|
|
154
154
|
- **Delegated-tier capture (exception-based)**: if the agent/model that actually did the work **diverged** from the task's planned `**Agent**: <agent> (<Model>)` — a different tier, or additional agents pulled in — record the delta and a one-line reason in the completion doc. A plan that held needs no note. This is a cheap data-point, **not** a justification to defend (overriding a stale or rote stamp is the *correct* move) — it feeds model-tier recalibration and process audits. Agent-evolution (routing/scope estimate was off) and model-evolution (cognitive-demand estimate was off) are distinct signals — note which. See `process-orchestration-model-selection`.
|
|
@@ -19,7 +19,7 @@ description: Essential pre-task checklist — date verification, governance heal
|
|
|
19
19
|
|
|
20
20
|
2. **Civitas Governance Health Check**
|
|
21
21
|
|
|
22
|
-
IF it's been >30 days since last governance health check **[2026-08-
|
|
22
|
+
IF it's been >30 days since last governance health check **[2026-08-25]**, THEN flag: "Governance health check overdue — Thurgood (Civitas steward) should run the monthly health check before proceeding."
|
|
23
23
|
|
|
24
24
|
*Only Thurgood runs the health check. All agents check the date and flag if overdue.*
|
|
25
25
|
|
|
@@ -83,7 +83,7 @@ description: Essential pre-task checklist — date verification, governance heal
|
|
|
83
83
|
|
|
84
84
|
**WHEN validating parent task completion THEN:**
|
|
85
85
|
- **Default**: Use `npm test` (comprehensive functional validation)
|
|
86
|
-
- **If task
|
|
86
|
+
- **If task is performance-critical**: Use `npm run test:all` (adds the performance suites; the cost difference is now seconds, so when in doubt, run `test:all`)
|
|
87
87
|
|
|
88
88
|
**WHEN task involves performance changes THEN:**
|
|
89
89
|
- Run BOTH `npm run test:performance` AND `npm run test:performance:isolated` (perf coverage is split across the two lanes), or simply `npm run test:all`
|
|
@@ -92,7 +92,7 @@ description: Essential pre-task checklist — date verification, governance heal
|
|
|
92
92
|
**Decision tree:**
|
|
93
93
|
```
|
|
94
94
|
Is this a parent task completion?
|
|
95
|
-
├─ YES → Does task modify
|
|
95
|
+
├─ YES → Does task modify performance systems?
|
|
96
96
|
│ ├─ YES → npm run test:all (includes performance regression tests)
|
|
97
97
|
│ └─ NO → npm test (comprehensive functional validation)
|
|
98
98
|
└─ NO → Does task involve performance changes?
|
|
@@ -105,7 +105,7 @@ description: Essential pre-task checklist — date verification, governance heal
|
|
|
105
105
|
- `npm run test:all` additionally runs the performance suites (seconds of extra cost, but wall-clock-sensitive — avoid under heavy machine load)
|
|
106
106
|
- Most parent tasks only need functional validation
|
|
107
107
|
|
|
108
|
-
**Default assumption**: Use `npm test` for parent tasks unless working on
|
|
108
|
+
**Default assumption**: Use `npm test` for parent tasks unless working on performance systems.
|
|
109
109
|
|
|
110
110
|
6. **Model-tier calibration — when this task will delegate to subagents**
|
|
111
111
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* DesignerPunk Design System - Component Tokens
|
|
3
|
-
* Generated: 2026-08-
|
|
3
|
+
* Generated: 2026-08-26T14:15:24.259Z
|
|
4
4
|
* Version: 1.0.0
|
|
5
5
|
* Platform: Android (Kotlin Constants)
|
|
6
6
|
*
|
|
@@ -45,11 +45,11 @@ object ButtonIconTokens {
|
|
|
45
45
|
// Small button variant uses 8px padding (1× base) for minimal footprint in dense UI layouts while meeting minimum touch target requirements
|
|
46
46
|
val insetSmall = SpacingTokens.space100
|
|
47
47
|
// Large button size (48px = 6× base) provides generous touch target exceeding tapAreaRecommended, calculated as icon (24px) + padding (12px × 2)
|
|
48
|
-
val sizeLarge =
|
|
48
|
+
val sizeLarge = SizingTokens.size600
|
|
49
49
|
// Medium button size (40px = 5× base) provides standard touch target, calculated as icon (18px) + padding (10px × 2) rounded to grid
|
|
50
|
-
val sizeMedium =
|
|
50
|
+
val sizeMedium = SizingTokens.size500
|
|
51
51
|
// Small button size (32px = 4× base) provides compact visual footprint, calculated as icon (13px) + padding (8px × 2) rounded to grid
|
|
52
|
-
val sizeSmall =
|
|
52
|
+
val sizeSmall = SizingTokens.size400
|
|
53
53
|
}
|
|
54
54
|
|
|
55
55
|
/** InputCheckbox Component Tokens */
|
|
@@ -74,26 +74,26 @@ object InputRadioTokens {
|
|
|
74
74
|
|
|
75
75
|
/** Progress Component Tokens */
|
|
76
76
|
object ProgressTokens {
|
|
77
|
+
// Connector line thickness (1px). References borderDefault primitive for consistent border treatment across the design system.
|
|
78
|
+
val connectorThickness = BorderWidthTokens.borderWidth100
|
|
77
79
|
// Small node base size (12px). Inactive dots in compact mobile contexts.
|
|
78
|
-
val nodeSizeSm =
|
|
80
|
+
val nodeSizeSm = SizingTokens.size150
|
|
79
81
|
// Medium node base size (16px). Default inactive dot size.
|
|
80
|
-
val nodeSizeMd =
|
|
82
|
+
val nodeSizeMd = SizingTokens.size200
|
|
81
83
|
// Large node base size (20px). Inactive dots in desktop contexts.
|
|
82
|
-
val nodeSizeLg =
|
|
84
|
+
val nodeSizeLg = SizingTokens.size250
|
|
83
85
|
// Current node emphasis for sm (16px). +4px over base 12px for non-color visual differentiation.
|
|
84
|
-
val nodeSizeSmCurrent =
|
|
86
|
+
val nodeSizeSmCurrent = SizingTokens.size200
|
|
85
87
|
// Current node emphasis for md (20px). +4px over base 16px for non-color visual differentiation.
|
|
86
|
-
val nodeSizeMdCurrent =
|
|
88
|
+
val nodeSizeMdCurrent = SizingTokens.size250
|
|
87
89
|
// Current node emphasis for lg (24px). +4px over base 20px for non-color visual differentiation.
|
|
88
|
-
val nodeSizeLgCurrent =
|
|
90
|
+
val nodeSizeLgCurrent = SizingTokens.size300
|
|
89
91
|
// Small gap between nodes (6px = 0.75× base). Tight spacing for compact pagination dots in mobile contexts.
|
|
90
92
|
val nodeGapSm = SpacingTokens.space075
|
|
91
93
|
// Medium gap between nodes (8px = 1× base). Default spacing for stepper nodes, providing clear separation without excessive whitespace.
|
|
92
94
|
val nodeGapMd = SpacingTokens.space100
|
|
93
95
|
// Large gap between nodes (12px = 1.5× base). Generous spacing for detailed steppers with labels in desktop contexts.
|
|
94
96
|
val nodeGapLg = SpacingTokens.space150
|
|
95
|
-
// Connector line thickness (1px). References borderDefault primitive for consistent border treatment across the design system.
|
|
96
|
-
val connectorThickness = SpacingTokens.borderWidth100
|
|
97
97
|
}
|
|
98
98
|
|
|
99
99
|
/** VerticalListItem Component Tokens */
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
///
|
|
2
2
|
/// DesignerPunk Design System - Component Tokens
|
|
3
|
-
/// Generated: 2026-08-
|
|
3
|
+
/// Generated: 2026-08-26T14:15:24.259Z
|
|
4
4
|
/// Version: 1.0.0
|
|
5
5
|
/// Platform: iOS (Swift Constants)
|
|
6
6
|
///
|
|
@@ -45,11 +45,11 @@ public enum ButtonIconTokens {
|
|
|
45
45
|
/// Small button variant uses 8px padding (1× base) for minimal footprint in dense UI layouts while meeting minimum touch target requirements
|
|
46
46
|
public static let insetSmall: CGFloat = SpacingTokens.space100
|
|
47
47
|
/// Large button size (48px = 6× base) provides generous touch target exceeding tapAreaRecommended, calculated as icon (24px) + padding (12px × 2)
|
|
48
|
-
public static let sizeLarge: CGFloat =
|
|
48
|
+
public static let sizeLarge: CGFloat = SizingTokens.size600
|
|
49
49
|
/// Medium button size (40px = 5× base) provides standard touch target, calculated as icon (18px) + padding (10px × 2) rounded to grid
|
|
50
|
-
public static let sizeMedium: CGFloat =
|
|
50
|
+
public static let sizeMedium: CGFloat = SizingTokens.size500
|
|
51
51
|
/// Small button size (32px = 4× base) provides compact visual footprint, calculated as icon (13px) + padding (8px × 2) rounded to grid
|
|
52
|
-
public static let sizeSmall: CGFloat =
|
|
52
|
+
public static let sizeSmall: CGFloat = SizingTokens.size400
|
|
53
53
|
}
|
|
54
54
|
|
|
55
55
|
/// InputCheckbox Component Tokens
|
|
@@ -74,26 +74,26 @@ public enum InputRadioTokens {
|
|
|
74
74
|
|
|
75
75
|
/// Progress Component Tokens
|
|
76
76
|
public enum ProgressTokens {
|
|
77
|
+
/// Connector line thickness (1px). References borderDefault primitive for consistent border treatment across the design system.
|
|
78
|
+
public static let connectorThickness: CGFloat = BorderWidthTokens.borderWidth100
|
|
77
79
|
/// Small node base size (12px). Inactive dots in compact mobile contexts.
|
|
78
|
-
public static let nodeSizeSm: CGFloat =
|
|
80
|
+
public static let nodeSizeSm: CGFloat = SizingTokens.size150
|
|
79
81
|
/// Medium node base size (16px). Default inactive dot size.
|
|
80
|
-
public static let nodeSizeMd: CGFloat =
|
|
82
|
+
public static let nodeSizeMd: CGFloat = SizingTokens.size200
|
|
81
83
|
/// Large node base size (20px). Inactive dots in desktop contexts.
|
|
82
|
-
public static let nodeSizeLg: CGFloat =
|
|
84
|
+
public static let nodeSizeLg: CGFloat = SizingTokens.size250
|
|
83
85
|
/// Current node emphasis for sm (16px). +4px over base 12px for non-color visual differentiation.
|
|
84
|
-
public static let nodeSizeSmCurrent: CGFloat =
|
|
86
|
+
public static let nodeSizeSmCurrent: CGFloat = SizingTokens.size200
|
|
85
87
|
/// Current node emphasis for md (20px). +4px over base 16px for non-color visual differentiation.
|
|
86
|
-
public static let nodeSizeMdCurrent: CGFloat =
|
|
88
|
+
public static let nodeSizeMdCurrent: CGFloat = SizingTokens.size250
|
|
87
89
|
/// Current node emphasis for lg (24px). +4px over base 20px for non-color visual differentiation.
|
|
88
|
-
public static let nodeSizeLgCurrent: CGFloat =
|
|
90
|
+
public static let nodeSizeLgCurrent: CGFloat = SizingTokens.size300
|
|
89
91
|
/// Small gap between nodes (6px = 0.75× base). Tight spacing for compact pagination dots in mobile contexts.
|
|
90
92
|
public static let nodeGapSm: CGFloat = SpacingTokens.space075
|
|
91
93
|
/// Medium gap between nodes (8px = 1× base). Default spacing for stepper nodes, providing clear separation without excessive whitespace.
|
|
92
94
|
public static let nodeGapMd: CGFloat = SpacingTokens.space100
|
|
93
95
|
/// Large gap between nodes (12px = 1.5× base). Generous spacing for detailed steppers with labels in desktop contexts.
|
|
94
96
|
public static let nodeGapLg: CGFloat = SpacingTokens.space150
|
|
95
|
-
/// Connector line thickness (1px). References borderDefault primitive for consistent border treatment across the design system.
|
|
96
|
-
public static let connectorThickness: CGFloat = SpacingTokens.borderWidth100
|
|
97
97
|
}
|
|
98
98
|
|
|
99
99
|
/// VerticalListItem Component Tokens
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* DesignerPunk Design System - Component Tokens
|
|
3
|
-
* Generated: 2026-08-
|
|
3
|
+
* Generated: 2026-08-26T14:15:24.259Z
|
|
4
4
|
* Version: 1.0.0
|
|
5
5
|
* Platform: Web (CSS Custom Properties)
|
|
6
6
|
*
|
|
@@ -63,6 +63,8 @@
|
|
|
63
63
|
--inputradio-box-lg: var(--size-500);
|
|
64
64
|
|
|
65
65
|
/* Progress Component Tokens */
|
|
66
|
+
/* Connector line thickness (1px). References borderDefault primitive for consistent border treatment across the design system. */
|
|
67
|
+
--progress-connector-thickness: var(--border-width-100);
|
|
66
68
|
/* Small node base size (12px). Inactive dots in compact mobile contexts. */
|
|
67
69
|
--progress-node-size-sm: var(--size-150);
|
|
68
70
|
/* Medium node base size (16px). Default inactive dot size. */
|
|
@@ -81,8 +83,6 @@
|
|
|
81
83
|
--progress-node-gap-md: var(--space-100);
|
|
82
84
|
/* Large gap between nodes (12px = 1.5× base). Generous spacing for detailed steppers with labels in desktop contexts. */
|
|
83
85
|
--progress-node-gap-lg: var(--space-150);
|
|
84
|
-
/* Connector line thickness (1px). References borderDefault primitive for consistent border treatment across the design system. */
|
|
85
|
-
--progress-connector-thickness: var(--border-width-100);
|
|
86
86
|
|
|
87
87
|
/* VerticalListItem Component Tokens */
|
|
88
88
|
/* Block padding at rest state (1px border). 11px padding + 1px border = 12px per side, achieving 48px total with 24px content. Uses TokenWithValue pattern as no primitive token exists for 11px. */
|
|
@@ -4830,6 +4830,11 @@ function defineComponentTokens(config) {
|
|
|
4830
4830
|
const tokenName = `${component.toLowerCase()}.${key}`;
|
|
4831
4831
|
if (isTokenWithReference(definition)) {
|
|
4832
4832
|
const primitiveToken = definition.reference;
|
|
4833
|
+
if (typeof primitiveToken.category === "string" && primitiveToken.category !== family) {
|
|
4834
|
+
throw new Error(
|
|
4835
|
+
`Token family mismatch in defineComponentTokens() for component '${component}': token '${key}' is declared in a '${family}' family call but references primitive '${primitiveToken.name}' from the '${primitiveToken.category}' family. Every token in a call is stamped with that call's family, which drives platform output (e.g. the generated '${family.charAt(0).toUpperCase() + family.slice(1)}Tokens' class reference), so this would emit a non-existent platform member. Fix: move '${key}' into a separate defineComponentTokens() call with family: '${primitiveToken.category}', or use the value path if no token-chain relationship is intended.`
|
|
4836
|
+
);
|
|
4837
|
+
}
|
|
4833
4838
|
const value = primitiveToken.baseValue;
|
|
4834
4839
|
values[key] = value;
|
|
4835
4840
|
registeredTokens.push({
|
|
@@ -7916,15 +7921,15 @@ var AvatarSizingTokens = defineComponentTokens({
|
|
|
7916
7921
|
"size.xxl": {
|
|
7917
7922
|
reference: sizingTokens.size1600,
|
|
7918
7923
|
reasoning: "Extra extra large avatar (128px). Full profile view, onboarding."
|
|
7919
|
-
}
|
|
7920
|
-
|
|
7921
|
-
|
|
7922
|
-
|
|
7923
|
-
|
|
7924
|
-
|
|
7925
|
-
|
|
7926
|
-
//
|
|
7927
|
-
//
|
|
7924
|
+
},
|
|
7925
|
+
// Icon size tokens (gap fillers for sizes without an existing icon token).
|
|
7926
|
+
// Kept on the VALUE path deliberately: sizing primitives exist at both values
|
|
7927
|
+
// (size150 = 12, size800 = 64), but the reference path currently emits a
|
|
7928
|
+
// fabricated `SizingTokens.<name>` class on iOS/Android that no generated or
|
|
7929
|
+
// hand-written platform file defines. Switching these to `reference:` would
|
|
7930
|
+
// trade compiling output (`12.dp`) for non-compiling output and break
|
|
7931
|
+
// Avatar.android.kt's `val iconSizeXs: Dp = GeneratedAvatarTokens.iconSizeXs`.
|
|
7932
|
+
// Revisit once TokenFileGenerator.getFamilyClassName emits a real platform type.
|
|
7928
7933
|
"icon.size.xs": {
|
|
7929
7934
|
value: SIZING_BASE_VALUE * 1.5,
|
|
7930
7935
|
reasoning: "Icon size for xs avatar (12px = 1.5\xD7 base) maintains 50% ratio (12/24). No existing icon token at this size, so component token fills the gap."
|