From a2054d3a2635965a08cae5cc3eacd0fd8ae2fdd8 Mon Sep 17 00:00:00 2001 From: John Leider Date: Wed, 1 Jul 2026 20:47:27 -0500 Subject: [PATCH 1/2] feat(genesis): add GnDocsBadge primitive --- .changeset/gn-docs-badge.md | 5 ++ packages/genesis/SPEC.md | 61 +++++++++++--- .../components/GnDocsBadge/GnDocsBadge.vue | 79 +++++++++++++++++++ .../src/components/GnDocsBadge/index.ts | 2 + packages/genesis/src/components/index.ts | 1 + 5 files changed, 138 insertions(+), 10 deletions(-) create mode 100644 .changeset/gn-docs-badge.md create mode 100644 packages/genesis/src/components/GnDocsBadge/GnDocsBadge.vue create mode 100644 packages/genesis/src/components/GnDocsBadge/index.ts diff --git a/.changeset/gn-docs-badge.md b/.changeset/gn-docs-badge.md new file mode 100644 index 0000000000..0cd9c1bfcc --- /dev/null +++ b/.changeset/gn-docs-badge.md @@ -0,0 +1,5 @@ +--- +"@paper/genesis": minor +--- + +feat(GnDocsBadge): add a static label/tag primitive for skill levels, modes, category tags, and similar docs-site chrome. Icon is slot-injected (no icon-name string), matching the GnPeek/GnDocsExampleTabs icon strategy; the icon wrapper is aria-hidden and slotted icons keep their own dimensions. diff --git a/packages/genesis/SPEC.md b/packages/genesis/SPEC.md index 4f2297f257..5420970dcf 100644 --- a/packages/genesis/SPEC.md +++ b/packages/genesis/SPEC.md @@ -16,13 +16,10 @@ packages/genesis/ │ ├── index.ts # re-exports components │ └── components/ │ ├── index.ts -│ ├── GnDocsExample/ -│ ├── GnDocsExampleDescription/ -│ ├── GnDocsExamplePreview/ -│ ├── GnDocsExampleCode/ -│ ├── GnDocsExampleTabs/ -│ ├── GnDocsExamplePanel/ -│ ├── GnDocsExampleActions/ +│ ├── GnActionButton/ +│ ├── GnDocsBadge/ +│ ├── GnDocsExample/ # GnDocsExample.vue + Description / Preview / Code / Tabs / Panel / Actions SFCs +│ ├── GnDotGrid/ │ └── GnPeek/ ``` @@ -30,7 +27,7 @@ No `GnDocsIcon`, no `adapter.ts`, no `plugin.ts`, no `theme.ts`. Genesis is just ## Theme inheritance -Every component's scoped ` diff --git a/packages/genesis/src/components/GnDocsBadge/index.ts b/packages/genesis/src/components/GnDocsBadge/index.ts new file mode 100644 index 0000000000..9f703b9812 --- /dev/null +++ b/packages/genesis/src/components/GnDocsBadge/index.ts @@ -0,0 +1,2 @@ +export type { GnDocsBadgeProps } from './GnDocsBadge.vue' +export { default as GnDocsBadge } from './GnDocsBadge.vue' diff --git a/packages/genesis/src/components/index.ts b/packages/genesis/src/components/index.ts index 7d7b89a833..236ee9e715 100644 --- a/packages/genesis/src/components/index.ts +++ b/packages/genesis/src/components/index.ts @@ -1,4 +1,5 @@ export * from './GnActionButton' +export * from './GnDocsBadge' export * from './GnDocsExample' export * from './GnDotGrid' export * from './GnPeek' From 2c21b257799beec3d621cc86839d38da87b33c4c Mon Sep 17 00:00:00 2001 From: John Leider Date: Wed, 1 Jul 2026 22:14:37 -0500 Subject: [PATCH 2/2] docs(genesis): sync SPEC.md with shipped GnDocsExample surface --- packages/genesis/SPEC.md | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/packages/genesis/SPEC.md b/packages/genesis/SPEC.md index 5420970dcf..a4817dfae5 100644 --- a/packages/genesis/SPEC.md +++ b/packages/genesis/SPEC.md @@ -4,7 +4,7 @@ A focused **docs-primitives library**: Vue 3 components that documentation sites need (live examples, callouts, code groups, API tables, atomic primitives). Headless on the parts that vary across consumers — code highlighting and icons are slot-injected. -Genesis is a **thin component layer over v0's theme system**. Components consume `var(--v0-*)` tokens directly so they inherit whatever theme v0 has applied to the page. There is no Genesis-specific token namespace, no Genesis-specific theme plugin, no Genesis-specific stylesheet. Drop the package into any v0-themed app and components blend with the page's chrome. +Genesis is a **thin component layer over v0's theme system**. Components consume `var(--v0-*)` tokens directly so they inherit whatever theme v0 has applied to the page. There is no Genesis-specific *theme* token namespace (the few `--gn-*` custom properties are consumer-tunable layout knobs, not tokens), no Genesis-specific theme plugin, no Genesis-specific stylesheet. Drop the package into any v0-themed app and components blend with the page's chrome. ## Package shape @@ -27,7 +27,7 @@ No `GnDocsIcon`, no `adapter.ts`, no `plugin.ts`, no `theme.ts`. Genesis is just ## Theme inheritance -Every component's `