banhaten 0.3.0 → 0.5.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/CHANGELOG.md +139 -73
- package/CONTRIBUTING.md +46 -44
- package/README.md +192 -190
- package/SECURITY.md +15 -15
- package/banhaten.config.example.json +11 -11
- package/docs/design-spacing.md +13 -0
- package/docs/design-system/README.md +22 -20
- package/docs/design-system/adoption-quality-remediation.md +87 -87
- package/docs/design-system/agent-usage.md +13 -13
- package/docs/design-system/appearance-presets.md +189 -189
- package/docs/design-system/appearances/default.md +94 -94
- package/docs/design-system/appearances/rounded.md +95 -95
- package/docs/design-system/appearances/sharp.md +95 -95
- package/docs/design-system/component-docs-pattern.md +81 -81
- package/docs/design-system/component-implementation-ownership-audit.md +245 -244
- package/docs/design-system/component-quality-audit-2026-08-20.md +225 -223
- package/docs/design-system/component-showcase-consistency-report.md +219 -219
- package/docs/design-system/component-token-consistency-audit.md +173 -173
- package/docs/design-system/components/README.md +90 -76
- package/docs/design-system/components/accordion.md +53 -53
- package/docs/design-system/components/activity-feed.md +94 -94
- package/docs/design-system/components/activity-heatmap.md +57 -57
- package/docs/design-system/components/agent-input.md +85 -0
- package/docs/design-system/components/alert-dialog.md +72 -72
- package/docs/design-system/components/alert.md +98 -98
- package/docs/design-system/components/approval-card.md +134 -0
- package/docs/design-system/components/aspect-ratio.md +45 -45
- package/docs/design-system/components/attribute.md +89 -89
- package/docs/design-system/components/autocomplete.md +75 -75
- package/docs/design-system/components/avatar.md +54 -54
- package/docs/design-system/components/badge.md +54 -54
- package/docs/design-system/components/banner.md +87 -87
- package/docs/design-system/components/breadcrumbs.md +177 -176
- package/docs/design-system/components/button-group.md +98 -98
- package/docs/design-system/components/button.md +83 -80
- package/docs/design-system/components/card.md +88 -88
- package/docs/design-system/components/carousel.md +46 -46
- package/docs/design-system/components/catalog-components.md +47 -47
- package/docs/design-system/components/chart.md +95 -24
- package/docs/design-system/components/checkbox.md +54 -54
- package/docs/design-system/components/collapsible.md +67 -53
- package/docs/design-system/components/command.md +62 -62
- package/docs/design-system/components/context-menu.md +46 -46
- package/docs/design-system/components/date-picker.md +81 -79
- package/docs/design-system/components/divider.md +102 -102
- package/docs/design-system/components/empty-state.md +56 -56
- package/docs/design-system/components/field.md +70 -70
- package/docs/design-system/components/file-upload.md +187 -187
- package/docs/design-system/components/hover-card.md +48 -48
- package/docs/design-system/components/icons.md +48 -48
- package/docs/design-system/components/inline-citations.md +93 -0
- package/docs/design-system/components/input-group.md +58 -58
- package/docs/design-system/components/input-otp.md +56 -56
- package/docs/design-system/components/input.md +117 -61
- package/docs/design-system/components/item.md +59 -57
- package/docs/design-system/components/kbd.md +54 -49
- package/docs/design-system/components/label.md +49 -49
- package/docs/design-system/components/menu.md +71 -61
- package/docs/design-system/components/menubar.md +47 -47
- package/docs/design-system/components/modal.md +105 -105
- package/docs/design-system/components/native-select.md +54 -54
- package/docs/design-system/components/navigation-menu.md +50 -50
- package/docs/design-system/components/onboarding-step-list-item.md +82 -82
- package/docs/design-system/components/page-header.md +93 -86
- package/docs/design-system/components/pagination.md +57 -57
- package/docs/design-system/components/popover.md +60 -60
- package/docs/design-system/components/progress-slider.md +50 -50
- package/docs/design-system/components/progress.md +76 -76
- package/docs/design-system/components/radio-card.md +51 -51
- package/docs/design-system/components/radio-group.md +57 -57
- package/docs/design-system/components/resizable.md +44 -44
- package/docs/design-system/components/rolling-count.md +61 -0
- package/docs/design-system/components/scroll-area.md +51 -51
- package/docs/design-system/components/segmented-control.md +54 -54
- package/docs/design-system/components/select.md +68 -62
- package/docs/design-system/components/sheet.md +67 -67
- package/docs/design-system/components/shimmer-text.md +67 -0
- package/docs/design-system/components/sidebar.md +127 -76
- package/docs/design-system/components/skeleton.md +75 -75
- package/docs/design-system/components/slideout.md +65 -65
- package/docs/design-system/components/slider.md +63 -63
- package/docs/design-system/components/social-button.md +50 -50
- package/docs/design-system/components/spinner.md +62 -62
- package/docs/design-system/components/steps.md +65 -65
- package/docs/design-system/components/streaming-text.md +82 -0
- package/docs/design-system/components/table.md +419 -414
- package/docs/design-system/components/tabs.md +59 -55
- package/docs/design-system/components/tag.md +80 -80
- package/docs/design-system/components/task-list.md +95 -0
- package/docs/design-system/components/textarea.md +50 -50
- package/docs/design-system/components/thinking-reasoning.md +72 -0
- package/docs/design-system/components/thinking-state.md +67 -0
- package/docs/design-system/components/timeline.md +83 -83
- package/docs/design-system/components/toast.md +58 -58
- package/docs/design-system/components/toggle.md +81 -81
- package/docs/design-system/components/toolbar.md +92 -87
- package/docs/design-system/components/tooltip.md +94 -92
- package/docs/design-system/components/typography.md +18 -18
- package/docs/design-system/density-and-elevation.md +65 -61
- package/docs/design-system/design-system-test-missing-items.md +368 -368
- package/docs/design-system/direction-and-localization.md +23 -23
- package/docs/design-system/form-recipes.md +73 -73
- package/docs/design-system/gap-promotion-policy.md +21 -21
- package/docs/design-system/icons.md +74 -69
- package/docs/design-system/installation.md +70 -68
- package/docs/design-system/launch-comparison-shadcn.md +98 -98
- package/docs/design-system/registry-and-cli.md +64 -64
- package/docs/design-system/release-policy.md +30 -30
- package/docs/design-system/roadmap.md +14 -14
- package/docs/design-system/support-matrix.md +23 -23
- package/docs/design-system/tabs.md +54 -53
- package/docs/design-system/template-gap-audit.md +32 -0
- package/docs/design-system/templates.md +59 -0
- package/docs/design-system/token-governance.md +72 -60
- package/package.json +98 -98
- package/registry/component-contract.json +40 -40
- package/registry/components/accordion.tsx +155 -155
- package/registry/components/agent-input-parts.tsx +552 -0
- package/registry/components/agent-input-state.ts +156 -0
- package/registry/components/agent-input.css +307 -0
- package/registry/components/agent-input.tsx +382 -0
- package/registry/components/alert-dialog.tsx +297 -297
- package/registry/components/alert.tsx +293 -293
- package/registry/components/approval-card.css +409 -0
- package/registry/components/approval-card.tsx +401 -0
- package/registry/components/approval-frame.tsx +108 -0
- package/registry/components/approval-questions.tsx +559 -0
- package/registry/components/aspect-ratio.tsx +30 -30
- package/registry/components/attribute.tsx +454 -448
- package/registry/components/autocomplete.tsx +598 -651
- package/registry/components/avatar.tsx +385 -381
- package/registry/components/badge.tsx +629 -629
- package/registry/components/button-group.tsx +565 -565
- package/registry/components/button.tsx +127 -123
- package/registry/components/card.tsx +638 -638
- package/registry/components/carousel.tsx +296 -296
- package/registry/components/chart-block-data.ts +177 -0
- package/registry/components/chart-block.css +171 -0
- package/registry/components/chart-block.tsx +260 -0
- package/registry/components/chart-interactions.ts +123 -0
- package/registry/components/chart-options.cartesian.ts +162 -0
- package/registry/components/chart-options.paint.ts +99 -0
- package/registry/components/chart-options.parts.ts +72 -0
- package/registry/components/chart-options.radial.ts +109 -0
- package/registry/components/chart-options.ts +44 -0
- package/registry/components/chart-options.types.ts +67 -0
- package/registry/components/chart.tsx +203 -203
- package/registry/components/checkbox.tsx +247 -247
- package/registry/components/collapsible.tsx +109 -69
- package/registry/components/command.tsx +208 -208
- package/registry/components/context-menu.tsx +236 -236
- package/registry/components/data-chart.tsx +40 -0
- package/registry/components/date-picker.tsx +1289 -1277
- package/registry/components/echart-theme.ts +246 -0
- package/registry/components/echart.css +49 -0
- package/registry/components/echart.tsx +178 -0
- package/registry/components/expanded/ActivityFeed.tsx +227 -227
- package/registry/components/expanded/ActivityHeatmap.tsx +64 -64
- package/registry/components/expanded/Banner.tsx +179 -179
- package/registry/components/expanded/Breadcrumbs.tsx +131 -131
- package/registry/components/expanded/CatalogComponentsShowcase.tsx +205 -205
- package/registry/components/expanded/CatalogDivider.tsx +49 -49
- package/registry/components/expanded/EmptyState.tsx +155 -155
- package/registry/components/expanded/FileUpload.tsx +543 -543
- package/registry/components/expanded/OnboardingStepListItem.tsx +60 -59
- package/registry/components/expanded/PageHeader.tsx +179 -166
- package/registry/components/expanded/Slideout.tsx +108 -108
- package/registry/components/expanded/Steps.tsx +402 -402
- package/registry/components/expanded/Table.tsx +1092 -1071
- package/registry/components/expanded/Timeline.tsx +203 -203
- package/registry/components/expanded/activityFeed.css +248 -248
- package/registry/components/expanded/activityHeatmap.css +66 -66
- package/registry/components/expanded/banner.css +260 -255
- package/registry/components/expanded/breadcrumbs.css +140 -140
- package/registry/components/expanded/catalogComponentsShowcase.css +87 -87
- package/registry/components/expanded/divider.css +75 -75
- package/registry/components/expanded/emptyState.css +111 -111
- package/registry/components/expanded/fileUpload.css +457 -457
- package/registry/components/expanded/onboardingStepListItem.css +135 -126
- package/registry/components/expanded/pageHeader.css +248 -290
- package/registry/components/expanded/slideout.css +276 -276
- package/registry/components/expanded/steps.css +356 -356
- package/registry/components/expanded/table.css +606 -603
- package/registry/components/expanded/timeline.css +286 -286
- package/registry/components/field.tsx +283 -283
- package/registry/components/hover-card.tsx +48 -48
- package/registry/components/inline-citations.css +126 -0
- package/registry/components/inline-citations.tsx +292 -0
- package/registry/components/input-content.ts +107 -107
- package/registry/components/input-group.tsx +130 -130
- package/registry/components/input-otp.tsx +584 -584
- package/registry/components/input.tsx +990 -972
- package/registry/components/item.tsx +189 -189
- package/registry/components/kbd.tsx +246 -151
- package/registry/components/label.tsx +78 -78
- package/registry/components/menu.tsx +978 -986
- package/registry/components/menubar.tsx +226 -226
- package/registry/components/modal.tsx +872 -872
- package/registry/components/native-select.tsx +205 -205
- package/registry/components/navigation-menu.tsx +171 -171
- package/registry/components/pagination.css +36 -36
- package/registry/components/pagination.tsx +560 -555
- package/registry/components/popover.tsx +338 -338
- package/registry/components/progress-slider.tsx +216 -216
- package/registry/components/radio-card.tsx +676 -677
- package/registry/components/radio-group.tsx +570 -570
- package/registry/components/resizable.tsx +108 -108
- package/registry/components/rolling-count.css +37 -0
- package/registry/components/rolling-count.tsx +110 -0
- package/registry/components/scroll-area.tsx +91 -91
- package/registry/components/segmented-control.tsx +87 -87
- package/registry/components/select-content.tsx +218 -218
- package/registry/components/select.tsx +937 -932
- package/registry/components/sheet.tsx +305 -305
- package/registry/components/shimmer-text.css +69 -0
- package/registry/components/shimmer-text.tsx +43 -0
- package/registry/components/sidebar.tsx +1433 -358
- package/registry/components/skeleton.css +54 -54
- package/registry/components/skeleton.tsx +482 -482
- package/registry/components/slider.tsx +380 -380
- package/registry/components/social-button.tsx +387 -387
- package/registry/components/spinner.tsx +78 -78
- package/registry/components/streaming-text.css +45 -0
- package/registry/components/streaming-text.tsx +165 -0
- package/registry/components/table-elements.tsx +128 -128
- package/registry/components/tabs.css +222 -218
- package/registry/components/tabs.tsx +241 -241
- package/registry/components/tag.tsx +423 -423
- package/registry/components/task-list.css +328 -0
- package/registry/components/task-list.tsx +429 -0
- package/registry/components/textarea.tsx +610 -610
- package/registry/components/thinking-reasoning.css +178 -0
- package/registry/components/thinking-reasoning.tsx +253 -0
- package/registry/components/thinking-state.css +8 -0
- package/registry/components/thinking-state.tsx +46 -0
- package/registry/components/toast.tsx +136 -136
- package/registry/components/toggle.tsx +256 -256
- package/registry/components/toolbar.tsx +539 -539
- package/registry/components/tooltip.tsx +433 -431
- package/registry/examples/agent-input-demo.tsx +90 -0
- package/registry/examples/alert-demo.tsx +34 -34
- package/registry/examples/alert-dialog-demo.tsx +42 -42
- package/registry/examples/approval-card-demo.tsx +83 -0
- package/registry/examples/aspect-ratio-demo.tsx +11 -11
- package/registry/examples/attribute-demo.tsx +65 -65
- package/registry/examples/autocomplete-demo.tsx +109 -109
- package/registry/examples/avatar-demo.tsx +132 -132
- package/registry/examples/badge-demo.tsx +69 -69
- package/registry/examples/button-demo.tsx +86 -83
- package/registry/examples/button-group-demo.tsx +63 -63
- package/registry/examples/card-demo.tsx +86 -86
- package/registry/examples/carousel-demo.tsx +43 -43
- package/registry/examples/chart-block-demo.tsx +5 -0
- package/registry/examples/chart-demo.tsx +18 -33
- package/registry/examples/checkbox-demo.tsx +62 -62
- package/registry/examples/collapsible-demo.tsx +16 -16
- package/registry/examples/collection-filter-bar-demo.tsx +135 -135
- package/registry/examples/command-demo.tsx +42 -42
- package/registry/examples/command-palette-demo.tsx +235 -236
- package/registry/examples/context-menu-demo.tsx +29 -29
- package/registry/examples/control-density-contract-demo.tsx +65 -61
- package/registry/examples/date-picker-demo.tsx +127 -127
- package/registry/examples/divider-demo.tsx +17 -17
- package/registry/examples/expanded/activity-heatmap-demo.tsx +29 -29
- package/registry/examples/expanded/banner-demo.tsx +48 -48
- package/registry/examples/expanded/breadcrumbs-demo.tsx +59 -59
- package/registry/examples/expanded/empty-state-demo.tsx +39 -39
- package/registry/examples/expanded/file-upload-demo.tsx +60 -60
- package/registry/examples/expanded/onboarding-step-demo.tsx +11 -11
- package/registry/examples/expanded/slideout-demo.tsx +15 -15
- package/registry/examples/expanded/steps-demo.tsx +29 -29
- package/registry/examples/expanded/tabs-demo.tsx +13 -13
- package/registry/examples/expanded/timeline-demo.tsx +18 -18
- package/registry/examples/field-demo.tsx +51 -51
- package/registry/examples/hover-card-demo.tsx +23 -23
- package/registry/examples/inline-citations-demo.tsx +31 -0
- package/registry/examples/input-actions-demo.tsx +36 -0
- package/registry/examples/input-demo.tsx +87 -87
- package/registry/examples/input-group-demo.tsx +16 -16
- package/registry/examples/input-otp-demo.tsx +72 -72
- package/registry/examples/item-demo.tsx +46 -46
- package/registry/examples/kbd-demo.tsx +12 -11
- package/registry/examples/label-demo.tsx +20 -20
- package/registry/examples/menu-demo.tsx +122 -122
- package/registry/examples/menubar-demo.tsx +34 -34
- package/registry/examples/modal-demo.tsx +74 -74
- package/registry/examples/native-select-demo.tsx +16 -16
- package/registry/examples/navigation-menu-demo.tsx +29 -29
- package/registry/examples/pagination-demo.tsx +20 -20
- package/registry/examples/popover-demo.tsx +547 -546
- package/registry/examples/progress-demo.tsx +37 -37
- package/registry/examples/progress-slider-demo.tsx +29 -29
- package/registry/examples/radio-card-demo.tsx +51 -51
- package/registry/examples/radio-group-demo.tsx +62 -62
- package/registry/examples/resizable-demo.tsx +22 -22
- package/registry/examples/results-toolbar-demo.tsx +44 -44
- package/registry/examples/rolling-count-demo.tsx +39 -0
- package/registry/examples/scroll-area-demo.tsx +15 -15
- package/registry/examples/segmented-control-demo.tsx +39 -39
- package/registry/examples/select-demo.tsx +87 -87
- package/registry/examples/sheet-demo.tsx +47 -47
- package/registry/examples/shimmer-text-demo.tsx +20 -0
- package/registry/examples/sidebar-demo.tsx +101 -57
- package/registry/examples/slider-demo.tsx +31 -31
- package/registry/examples/social-button-demo.tsx +61 -61
- package/registry/examples/spinner-demo.tsx +59 -59
- package/registry/examples/streaming-text-demo.tsx +28 -0
- package/registry/examples/tabs-demo.tsx +13 -13
- package/registry/examples/tag-demo.tsx +29 -29
- package/registry/examples/task-list-demo.tsx +74 -0
- package/registry/examples/textarea-demo.tsx +79 -79
- package/registry/examples/thinking-reasoning-demo.tsx +74 -0
- package/registry/examples/thinking-state-demo.tsx +13 -0
- package/registry/examples/toast-demo.tsx +35 -35
- package/registry/examples/toggle-demo.tsx +59 -59
- package/registry/examples/tooltip-demo.tsx +115 -115
- package/registry/guidance/USAGE.md +27 -27
- package/registry/guidance/charts.LICENSE.txt +24 -0
- package/registry/hooks/use-controllable-state.ts +33 -0
- package/registry/hooks/use-direction.ts +207 -207
- package/registry/hooks/use-listbox-navigation.ts +73 -0
- package/registry/hooks/use-motion-end.ts +55 -0
- package/registry/hooks/use-reduced-motion.ts +28 -0
- package/registry/index.json +1634 -184
- package/registry/styles/globals.css +1462 -1570
- package/registry.json +364 -10
- package/schema/config.schema.json +51 -51
- package/schema/registry.schema.json +194 -190
- package/schema/tokens.schema.json +167 -163
- package/src/cli/command-line.js +194 -194
- package/src/cli/config-editors.js +9 -9
- package/src/cli/doctor.js +399 -399
- package/src/cli/file-transaction.js +302 -295
- package/src/cli/global-css.js +153 -153
- package/src/cli/index.js +1002 -1009
- package/src/cli/install-plan.js +592 -592
- package/src/cli/install-receipt.js +171 -171
- package/src/cli/jsonc.js +203 -203
- package/src/cli/package-install-state.js +254 -254
- package/src/cli/package-manager.js +238 -238
- package/src/cli/package-plan.js +185 -185
- package/src/cli/package-version.js +97 -97
- package/src/cli/registry-query.js +207 -207
- package/src/cli/reporting.js +55 -55
- package/src/cli/schema-validation.js +19 -19
- package/src/cli/source-scanner.js +686 -686
- package/src/cli/vite-config.js +478 -478
- package/tokens/banhaten.tokens.json +458 -224
package/README.md
CHANGED
|
@@ -1,190 +1,192 @@
|
|
|
1
|
-
# Banhaten Design System
|
|
2
|
-
|
|
3
|
-
Banhaten is an Arabic and English-first React design system with source-installed components, generated design tokens, and first-class RTL behavior. It uses a shadcn-style distribution model without copying shadcn visuals: components are built around Banhaten tokens, Banhaten component aliases, and Banhaten Figma-derived interaction patterns.
|
|
4
|
-
|
|
5
|
-
## Quick Start
|
|
6
|
-
|
|
7
|
-
Run the CLI from the root of a React app:
|
|
8
|
-
|
|
9
|
-
```bash
|
|
10
|
-
npx banhaten init
|
|
11
|
-
npx banhaten add button input select
|
|
12
|
-
```
|
|
13
|
-
|
|
14
|
-
When dependencies are added, the CLI prints the install command for your package manager.
|
|
15
|
-
|
|
16
|
-
```bash
|
|
17
|
-
npm install
|
|
18
|
-
pnpm install
|
|
19
|
-
yarn install
|
|
20
|
-
bun install
|
|
21
|
-
```
|
|
22
|
-
|
|
23
|
-
## What Init Adds
|
|
24
|
-
|
|
25
|
-
`banhaten init` writes:
|
|
26
|
-
|
|
27
|
-
- `banhaten.config.json` with schema-backed aliases.
|
|
28
|
-
- The base `cn` utility and `use-direction` hook.
|
|
29
|
-
- `.banhaten/USAGE.md` with agent-readable defaults, recipes, and component-selection rules.
|
|
30
|
-
- The generated Banhaten token stylesheet in your configured CSS file.
|
|
31
|
-
- Tailwind v4 and Vite alias setup when those files are detected.
|
|
32
|
-
- Required package dependencies.
|
|
33
|
-
|
|
34
|
-
`banhaten add` and `banhaten update` also refresh the generated token stylesheet, so installed projects receive token changes as the registry evolves.
|
|
35
|
-
|
|
36
|
-
## CLI
|
|
37
|
-
|
|
38
|
-
```bash
|
|
39
|
-
npx banhaten init [--cwd <path>] [--force] [--dry-run] [--json]
|
|
40
|
-
npx banhaten add <component...> [--cwd <path>] [--force] [--dry-run] [--json]
|
|
41
|
-
npx banhaten diff [component...] [--cwd <path>] [--json]
|
|
42
|
-
npx banhaten update [component...] [--cwd <path>] [--force] [--dry-run] [--json]
|
|
43
|
-
npx banhaten list [--json]
|
|
44
|
-
npx banhaten search <query> [--json]
|
|
45
|
-
npx banhaten docs <component> [--json]
|
|
46
|
-
npx banhaten view <component> [--file <registry-source>] [--json]
|
|
47
|
-
npx banhaten doctor [--cwd <path>] [--json]
|
|
48
|
-
npx banhaten version
|
|
49
|
-
```
|
|
50
|
-
|
|
51
|
-
The CLI validates each command before doing project work: unknown flags, missing
|
|
52
|
-
flag values, duplicate flags, and unexpected arguments fail without writing.
|
|
53
|
-
Mutating commands then compute one install plan from the configured destinations
|
|
54
|
-
and the existing TypeScript/Vite root aliases. An alias declared on only one side
|
|
55
|
-
is mirrored to the other; conflicting, ambiguous, or dynamic aliases stop before
|
|
56
|
-
files are staged. The install receipt records the resolved destinations so later
|
|
57
|
-
runs cannot silently create a second generated tree.
|
|
58
|
-
|
|
59
|
-
Dependency ranges follow a guarantee policy: every version admitted by the
|
|
60
|
-
consumer declaration must satisfy Banhaten's requirement. Broader semver ranges
|
|
61
|
-
are safely narrowed when possible and trigger an install hint; partial overlaps,
|
|
62
|
-
disjoint ranges, and opaque package protocols fail without writes. A lockfile is
|
|
63
|
-
never accepted instead of that manifest guarantee. When the manifest is already
|
|
64
|
-
safe, the CLI verifies the bounded installed resolution and npm lock state;
|
|
65
|
-
stale or unverifiable lock state keeps a project-rooted install action visible.
|
|
66
|
-
|
|
67
|
-
Command flags:
|
|
68
|
-
|
|
69
|
-
- `--cwd <path>` runs `init`, `add`, `diff`, `update`, or `doctor` against another project directory.
|
|
70
|
-
- `--dry-run` previews `init`, `add`, or `update` writes.
|
|
71
|
-
- `--force` replaces locally modified generated files after you review `banhaten diff`.
|
|
72
|
-
- `--json` prints machine-readable output for commands that show it above.
|
|
73
|
-
|
|
74
|
-
Global flags:
|
|
75
|
-
|
|
76
|
-
- `--help` or `-h` prints help.
|
|
77
|
-
- `--silent` or `-s` suppresses normal command output.
|
|
78
|
-
- `--yes` or `-y` is accepted for non-interactive scripts.
|
|
79
|
-
- `--version` or `-v` prints the CLI version.
|
|
80
|
-
|
|
81
|
-
## Generated File Ownership
|
|
82
|
-
|
|
83
|
-
Banhaten is a source registry. The install receipt records the exact generated hash for every managed file. Unmodified files update automatically; locally modified component files and token blocks are never replaced unless you pass `--force`.
|
|
84
|
-
|
|
85
|
-
Use `banhaten diff` before updating if you edit generated component files locally:
|
|
86
|
-
|
|
87
|
-
```bash
|
|
88
|
-
npx banhaten diff
|
|
89
|
-
npx banhaten update button --force # only after reviewing intentional replacement
|
|
90
|
-
```
|
|
91
|
-
|
|
92
|
-
Keep product-specific composition outside generated files when possible. Use local wrapper components for app behavior and keep Banhaten files focused on tokens, layout, accessibility primitives, and direction behavior.
|
|
93
|
-
|
|
94
|
-
## Tokens
|
|
95
|
-
|
|
96
|
-
Every component must style through Banhaten CSS variables, component aliases, or documented exception-ledger values. Raw colors, pixel values, opacity utilities, z-index utilities, durations, and shadow literals are blocked by the component token check.
|
|
97
|
-
|
|
98
|
-
Structured token values and aliases are authored in the owned fragments under
|
|
99
|
-
`tokens/source/`; `tokens/banhaten.tokens.json` is their compiled publication
|
|
100
|
-
artifact. Tailwind mappings, keyframes, global and accessibility rules, and
|
|
101
|
-
typography utilities are authored in `tokens/banhaten.utilities.css`.
|
|
102
|
-
`registry/styles/globals.css` is generated from the compiled token catalog and
|
|
103
|
-
the utility source; neither generated file should be edited directly.
|
|
104
|
-
|
|
105
|
-
Token modes:
|
|
106
|
-
|
|
107
|
-
- Color mode: light and dark.
|
|
108
|
-
- Brand theme: `blue`, `gray`, `brown`, `orange`, `green`, `purple`, `teal`.
|
|
109
|
-
- Radius mode: `default`, `rounded`, `sharp`.
|
|
110
|
-
- Direction: inherited LTR or RTL, with component-level `dir` support where needed.
|
|
111
|
-
|
|
112
|
-
The default appearance is the `
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
Example:
|
|
118
|
-
|
|
119
|
-
```tsx
|
|
120
|
-
<html className="dark" data-theme="brown" data-radius="rounded" dir="rtl" lang="ar">
|
|
121
|
-
```
|
|
122
|
-
|
|
123
|
-
Typography utilities are generated as `.bh-text-*` classes and map directly to token variables.
|
|
124
|
-
|
|
125
|
-
```tsx
|
|
126
|
-
<h1 className="bh-text-heading-xl-bold">...</h1>
|
|
127
|
-
<p className="bh-text-body-md-regular">...</p>
|
|
128
|
-
```
|
|
129
|
-
|
|
130
|
-
## Registry Formats
|
|
131
|
-
|
|
132
|
-
Banhaten maintains component-owned registry sources and two compiled
|
|
133
|
-
publication artifacts:
|
|
134
|
-
|
|
135
|
-
- `registry/catalog/components/<id>.json` owns each component contract, while
|
|
136
|
-
`registry/catalog/base.json` and `manifest.json` own the shared contract and
|
|
137
|
-
publication order.
|
|
138
|
-
- `registry/index.json` is the compiled Banhaten artifact used by the CLI. It
|
|
139
|
-
includes an exhaustive, module-aware `supportedExports` runtime contract plus
|
|
140
|
-
non-exhaustive `parts` anatomy, RTL behavior, examples, files, and
|
|
141
|
-
dependencies.
|
|
142
|
-
- `registry.json` is a generated shadcn-compatible export for tools that expect the public shadcn registry schema.
|
|
143
|
-
|
|
144
|
-
Compile both registry publication artifacts after authored catalog changes:
|
|
145
|
-
|
|
146
|
-
```bash
|
|
147
|
-
npm run registry:export
|
|
148
|
-
```
|
|
149
|
-
|
|
150
|
-
`supportedExports` is checked against the installed TypeScript modules during
|
|
151
|
-
`npm run registry:check`; a renamed, moved, added, or removed runtime export
|
|
152
|
-
fails the release gate. Run `npm run registry:exports` only after reviewing an
|
|
153
|
-
intentional public runtime API change. Type-only exports are outside this
|
|
154
|
-
manifest. `parts` remains an ordered composition aid and does not claim API
|
|
155
|
-
completeness.
|
|
156
|
-
|
|
157
|
-
## Documentation
|
|
158
|
-
|
|
159
|
-
Primary docs live in the playground and render live registry-backed previews, install commands, source snippets, API tables, registry files, RTL behavior, and copyable code panels.
|
|
160
|
-
|
|
161
|
-
Markdown docs live in `docs/design-system/components`. They are checked for install, API, examples, token contract, RTL rules, and accessibility sections.
|
|
162
|
-
|
|
163
|
-
Launch guides cover [installation](docs/design-system/installation.md), [direction and localization](docs/design-system/direction-and-localization.md), [form recipes](docs/design-system/form-recipes.md), [density and elevation](docs/design-system/density-and-elevation.md), the [support matrix](docs/design-system/support-matrix.md), and the [release policy](docs/design-system/release-policy.md).
|
|
164
|
-
|
|
165
|
-
The durable [launch comparison with shadcn/ui](docs/design-system/launch-comparison-shadcn.md) records every audited area, remediation, verification gate, the closed 910/910 contrast contract, and deliberate non-copying decisions.
|
|
166
|
-
|
|
167
|
-
Useful commands:
|
|
168
|
-
|
|
169
|
-
```bash
|
|
170
|
-
npm run docs:check
|
|
171
|
-
npm run docs:normalize
|
|
172
|
-
npm run playground:dev
|
|
173
|
-
```
|
|
174
|
-
|
|
175
|
-
## Components
|
|
176
|
-
|
|
177
|
-
The registry includes core primitives such as Button, Input, Select, Field, Modal, Sheet, Sidebar, Menu, Tabs, Toast, Table, and Chart. It also includes Banhaten-specific and product-oriented components such as Attribute, Radio Card, Progress Slider, Social Button, Tag, Toolbar, Timeline, Banner, File Upload, Page Header, Command Bar, Slideout, Activity Feed, and Steps.
|
|
178
|
-
|
|
179
|
-
Expanded components are larger app compositions. They are installed through the same CLI but documented as a separate tier because their layout contracts are broader than primitive controls.
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
npm run
|
|
187
|
-
npm run
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
1
|
+
# Banhaten Design System
|
|
2
|
+
|
|
3
|
+
Banhaten is an Arabic and English-first React design system with source-installed components, generated design tokens, and first-class RTL behavior. It uses a shadcn-style distribution model without copying shadcn visuals: components are built around Banhaten tokens, Banhaten component aliases, and Banhaten Figma-derived interaction patterns.
|
|
4
|
+
|
|
5
|
+
## Quick Start
|
|
6
|
+
|
|
7
|
+
Run the CLI from the root of a React app:
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
npx banhaten init
|
|
11
|
+
npx banhaten add button input select
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
When dependencies are added, the CLI prints the install command for your package manager.
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
npm install
|
|
18
|
+
pnpm install
|
|
19
|
+
yarn install
|
|
20
|
+
bun install
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## What Init Adds
|
|
24
|
+
|
|
25
|
+
`banhaten init` writes:
|
|
26
|
+
|
|
27
|
+
- `banhaten.config.json` with schema-backed aliases.
|
|
28
|
+
- The base `cn` utility and `use-direction` hook.
|
|
29
|
+
- `.banhaten/USAGE.md` with agent-readable defaults, recipes, and component-selection rules.
|
|
30
|
+
- The generated Banhaten token stylesheet in your configured CSS file.
|
|
31
|
+
- Tailwind v4 and Vite alias setup when those files are detected.
|
|
32
|
+
- Required package dependencies.
|
|
33
|
+
|
|
34
|
+
`banhaten add` and `banhaten update` also refresh the generated token stylesheet, so installed projects receive token changes as the registry evolves.
|
|
35
|
+
|
|
36
|
+
## CLI
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
npx banhaten init [--cwd <path>] [--force] [--dry-run] [--json]
|
|
40
|
+
npx banhaten add <component...> [--cwd <path>] [--force] [--dry-run] [--json]
|
|
41
|
+
npx banhaten diff [component...] [--cwd <path>] [--json]
|
|
42
|
+
npx banhaten update [component...] [--cwd <path>] [--force] [--dry-run] [--json]
|
|
43
|
+
npx banhaten list [--json]
|
|
44
|
+
npx banhaten search <query> [--json]
|
|
45
|
+
npx banhaten docs <component> [--json]
|
|
46
|
+
npx banhaten view <component> [--file <registry-source>] [--json]
|
|
47
|
+
npx banhaten doctor [--cwd <path>] [--json]
|
|
48
|
+
npx banhaten version
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
The CLI validates each command before doing project work: unknown flags, missing
|
|
52
|
+
flag values, duplicate flags, and unexpected arguments fail without writing.
|
|
53
|
+
Mutating commands then compute one install plan from the configured destinations
|
|
54
|
+
and the existing TypeScript/Vite root aliases. An alias declared on only one side
|
|
55
|
+
is mirrored to the other; conflicting, ambiguous, or dynamic aliases stop before
|
|
56
|
+
files are staged. The install receipt records the resolved destinations so later
|
|
57
|
+
runs cannot silently create a second generated tree.
|
|
58
|
+
|
|
59
|
+
Dependency ranges follow a guarantee policy: every version admitted by the
|
|
60
|
+
consumer declaration must satisfy Banhaten's requirement. Broader semver ranges
|
|
61
|
+
are safely narrowed when possible and trigger an install hint; partial overlaps,
|
|
62
|
+
disjoint ranges, and opaque package protocols fail without writes. A lockfile is
|
|
63
|
+
never accepted instead of that manifest guarantee. When the manifest is already
|
|
64
|
+
safe, the CLI verifies the bounded installed resolution and npm lock state;
|
|
65
|
+
stale or unverifiable lock state keeps a project-rooted install action visible.
|
|
66
|
+
|
|
67
|
+
Command flags:
|
|
68
|
+
|
|
69
|
+
- `--cwd <path>` runs `init`, `add`, `diff`, `update`, or `doctor` against another project directory.
|
|
70
|
+
- `--dry-run` previews `init`, `add`, or `update` writes.
|
|
71
|
+
- `--force` replaces locally modified generated files after you review `banhaten diff`.
|
|
72
|
+
- `--json` prints machine-readable output for commands that show it above.
|
|
73
|
+
|
|
74
|
+
Global flags:
|
|
75
|
+
|
|
76
|
+
- `--help` or `-h` prints help.
|
|
77
|
+
- `--silent` or `-s` suppresses normal command output.
|
|
78
|
+
- `--yes` or `-y` is accepted for non-interactive scripts.
|
|
79
|
+
- `--version` or `-v` prints the CLI version.
|
|
80
|
+
|
|
81
|
+
## Generated File Ownership
|
|
82
|
+
|
|
83
|
+
Banhaten is a source registry. The install receipt records the exact generated hash for every managed file. Unmodified files update automatically; locally modified component files and token blocks are never replaced unless you pass `--force`.
|
|
84
|
+
|
|
85
|
+
Use `banhaten diff` before updating if you edit generated component files locally:
|
|
86
|
+
|
|
87
|
+
```bash
|
|
88
|
+
npx banhaten diff
|
|
89
|
+
npx banhaten update button --force # only after reviewing intentional replacement
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
Keep product-specific composition outside generated files when possible. Use local wrapper components for app behavior and keep Banhaten files focused on tokens, layout, accessibility primitives, and direction behavior.
|
|
93
|
+
|
|
94
|
+
## Tokens
|
|
95
|
+
|
|
96
|
+
Every component must style through Banhaten CSS variables, component aliases, or documented exception-ledger values. Raw colors, pixel values, opacity utilities, z-index utilities, durations, and shadow literals are blocked by the component token check.
|
|
97
|
+
|
|
98
|
+
Structured token values and aliases are authored in the owned fragments under
|
|
99
|
+
`tokens/source/`; `tokens/banhaten.tokens.json` is their compiled publication
|
|
100
|
+
artifact. Tailwind mappings, keyframes, global and accessibility rules, and
|
|
101
|
+
typography utilities are authored in `tokens/banhaten.utilities.css`.
|
|
102
|
+
`registry/styles/globals.css` is generated from the compiled token catalog and
|
|
103
|
+
the utility source; neither generated file should be edited directly.
|
|
104
|
+
|
|
105
|
+
Token modes:
|
|
106
|
+
|
|
107
|
+
- Color mode: light and dark.
|
|
108
|
+
- Brand theme: `blue`, `gray`, `brown`, `orange`, `green`, `purple`, `teal`.
|
|
109
|
+
- Radius mode: `default`, `rounded`, `sharp`.
|
|
110
|
+
- Direction: inherited LTR or RTL, with component-level `dir` support where needed.
|
|
111
|
+
|
|
112
|
+
The default appearance is the monochrome `gray` brand theme. It keeps page,
|
|
113
|
+
card, border, and muted surfaces neutral while applying gray to links, focus
|
|
114
|
+
states, and primary actions as well. `blue` remains available as an alternate
|
|
115
|
+
brand theme.
|
|
116
|
+
|
|
117
|
+
Example:
|
|
118
|
+
|
|
119
|
+
```tsx
|
|
120
|
+
<html className="dark" data-theme="brown" data-radius="rounded" dir="rtl" lang="ar">
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
Typography utilities are generated as `.bh-text-*` classes and map directly to token variables.
|
|
124
|
+
|
|
125
|
+
```tsx
|
|
126
|
+
<h1 className="bh-text-heading-xl-bold">...</h1>
|
|
127
|
+
<p className="bh-text-body-md-regular">...</p>
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
## Registry Formats
|
|
131
|
+
|
|
132
|
+
Banhaten maintains component-owned registry sources and two compiled
|
|
133
|
+
publication artifacts:
|
|
134
|
+
|
|
135
|
+
- `registry/catalog/components/<id>.json` owns each component contract, while
|
|
136
|
+
`registry/catalog/base.json` and `manifest.json` own the shared contract and
|
|
137
|
+
publication order.
|
|
138
|
+
- `registry/index.json` is the compiled Banhaten artifact used by the CLI. It
|
|
139
|
+
includes an exhaustive, module-aware `supportedExports` runtime contract plus
|
|
140
|
+
non-exhaustive `parts` anatomy, RTL behavior, examples, files, and
|
|
141
|
+
dependencies.
|
|
142
|
+
- `registry.json` is a generated shadcn-compatible export for tools that expect the public shadcn registry schema.
|
|
143
|
+
|
|
144
|
+
Compile both registry publication artifacts after authored catalog changes:
|
|
145
|
+
|
|
146
|
+
```bash
|
|
147
|
+
npm run registry:export
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
`supportedExports` is checked against the installed TypeScript modules during
|
|
151
|
+
`npm run registry:check`; a renamed, moved, added, or removed runtime export
|
|
152
|
+
fails the release gate. Run `npm run registry:exports` only after reviewing an
|
|
153
|
+
intentional public runtime API change. Type-only exports are outside this
|
|
154
|
+
manifest. `parts` remains an ordered composition aid and does not claim API
|
|
155
|
+
completeness.
|
|
156
|
+
|
|
157
|
+
## Documentation
|
|
158
|
+
|
|
159
|
+
Primary docs live in the playground and render live registry-backed previews, install commands, source snippets, API tables, registry files, RTL behavior, and copyable code panels. The playground also includes a Templates tier with 60 searchable page, flow, and widget compositions built from current Banhaten tokens and components.
|
|
160
|
+
|
|
161
|
+
Markdown docs live in `docs/design-system/components`. They are checked for install, API, examples, token contract, RTL rules, and accessibility sections.
|
|
162
|
+
|
|
163
|
+
Launch guides cover [installation](docs/design-system/installation.md), [direction and localization](docs/design-system/direction-and-localization.md), [form recipes](docs/design-system/form-recipes.md), [density and elevation](docs/design-system/density-and-elevation.md), the [support matrix](docs/design-system/support-matrix.md), and the [release policy](docs/design-system/release-policy.md). See the [template catalog contract](docs/design-system/templates.md) and the resulting [template gap audit](docs/design-system/template-gap-audit.md) for the composition layer.
|
|
164
|
+
|
|
165
|
+
The durable [launch comparison with shadcn/ui](docs/design-system/launch-comparison-shadcn.md) records every audited area, remediation, verification gate, the closed 910/910 contrast contract, and deliberate non-copying decisions.
|
|
166
|
+
|
|
167
|
+
Useful commands:
|
|
168
|
+
|
|
169
|
+
```bash
|
|
170
|
+
npm run docs:check
|
|
171
|
+
npm run docs:normalize
|
|
172
|
+
npm run playground:dev
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
## Components
|
|
176
|
+
|
|
177
|
+
The registry includes core primitives such as Button, Input, Select, Field, Modal, Sheet, Sidebar, Menu, Tabs, Toast, Table, and Chart. It also includes Banhaten-specific and product-oriented components such as Attribute, Radio Card, Progress Slider, Social Button, Tag, Toolbar, Timeline, Banner, File Upload, Page Header, Command Bar, Slideout, Activity Feed, and Steps.
|
|
178
|
+
|
|
179
|
+
Expanded components are larger app compositions. They are installed through the same CLI but documented as a separate tier because their layout contracts are broader than primitive controls.
|
|
180
|
+
|
|
181
|
+
Templates sit above those reusable components and patterns. They demonstrate realistic page, flow, and widget assemblies without claiming product behavior or generated-file ownership; candidates become installable blocks only after their APIs and state contracts stabilize.
|
|
182
|
+
|
|
183
|
+
## Development
|
|
184
|
+
|
|
185
|
+
```bash
|
|
186
|
+
npm run check
|
|
187
|
+
npm run tokens:check
|
|
188
|
+
npm run registry:check
|
|
189
|
+
npm run playground:test
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
The full check verifies CLI behavior, generated token CSS, token contract, raw token violations, registry mirrors, shadcn-compatible registry export, markdown docs, and playground coverage.
|
package/SECURITY.md
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
# Security Policy
|
|
2
|
-
|
|
3
|
-
## Supported versions
|
|
4
|
-
|
|
5
|
-
Until Banhaten reaches 1.0, security fixes are applied to the latest published minor release. Consumers should keep the CLI and copied registry components current.
|
|
6
|
-
|
|
7
|
-
## Reporting a vulnerability
|
|
8
|
-
|
|
9
|
-
Report vulnerabilities privately through GitHub’s security-advisory workflow for this repository. Do not open a public issue containing exploit details, credentials, or consumer data.
|
|
10
|
-
|
|
11
|
-
Include the affected Banhaten version, component or CLI command, reproduction steps, impact, and any known mitigation. Maintainers will acknowledge a complete report, assess severity, and coordinate a fix and disclosure.
|
|
12
|
-
|
|
13
|
-
## Scope
|
|
14
|
-
|
|
15
|
-
The CLI, registry source, generated CSS, dependency declarations, documentation application, and release artifacts are in scope. Vulnerabilities in an upstream dependency should also be reported to that upstream project when appropriate.
|
|
1
|
+
# Security Policy
|
|
2
|
+
|
|
3
|
+
## Supported versions
|
|
4
|
+
|
|
5
|
+
Until Banhaten reaches 1.0, security fixes are applied to the latest published minor release. Consumers should keep the CLI and copied registry components current.
|
|
6
|
+
|
|
7
|
+
## Reporting a vulnerability
|
|
8
|
+
|
|
9
|
+
Report vulnerabilities privately through GitHub’s security-advisory workflow for this repository. Do not open a public issue containing exploit details, credentials, or consumer data.
|
|
10
|
+
|
|
11
|
+
Include the affected Banhaten version, component or CLI command, reproduction steps, impact, and any known mitigation. Maintainers will acknowledge a complete report, assess severity, and coordinate a fix and disclosure.
|
|
12
|
+
|
|
13
|
+
## Scope
|
|
14
|
+
|
|
15
|
+
The CLI, registry source, generated CSS, dependency declarations, documentation application, and release artifacts are in scope. Vulnerabilities in an upstream dependency should also be reported to that upstream project when appropriate.
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
{
|
|
2
|
-
"$schema": ".banhaten/schema/config.schema.json",
|
|
3
|
-
"tailwind": {
|
|
4
|
-
"css": "app/globals.css"
|
|
5
|
-
},
|
|
6
|
-
"aliases": {
|
|
7
|
-
"ui": "@/components/ui",
|
|
8
|
-
"utils": "@/lib/utils",
|
|
9
|
-
"hooks": "@/hooks"
|
|
10
|
-
}
|
|
11
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"$schema": ".banhaten/schema/config.schema.json",
|
|
3
|
+
"tailwind": {
|
|
4
|
+
"css": "app/globals.css"
|
|
5
|
+
},
|
|
6
|
+
"aliases": {
|
|
7
|
+
"ui": "@/components/ui",
|
|
8
|
+
"utils": "@/lib/utils",
|
|
9
|
+
"hooks": "@/hooks"
|
|
10
|
+
}
|
|
11
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# Design spacing
|
|
2
|
+
|
|
3
|
+
Applies to templates (Pages, Flows, Widgets), Test Lab compositions, and background designs.
|
|
4
|
+
|
|
5
|
+
Use existing Banhaten spacing tokens for padding, margin, and gaps. Ordinary content groups, headings with actions, and footers use explicit gaps with start alignment. Avoid `space-between`, `space-around`, `space-evenly`, and auto margins to spread ordinary grouped content. These turn leftover width into arbitrary gaps, including fractional pixels. Wrap groups at narrow widths rather than compressing their gaps.
|
|
6
|
+
|
|
7
|
+
Keep fluid distribution only where it serves the layout: aligned table/detail values, transaction amounts, schedule columns, chart/slider endpoints, pagination at table edges, standard field affordances, and bottom-anchored sidebar sections. Responsive grid tracks and chart geometry remain fluid. Original reference reproductions remain references.
|
|
8
|
+
|
|
9
|
+
Whole spacing tokens do not guarantee that every measured dimension is an integer. Font shaping can give text a fractional width, and responsive tracks, centering, zoom, or scale can create fractional coordinates. Do not change typography, round measurements, or add invisible filler to conceal that. The inspector continues to report real rendered measurements. A fractional text width is not a fractional CSS gap.
|
|
10
|
+
|
|
11
|
+
Preserve intentional edge alignment through explicit layout tracks. The music footer uses a flexible text column, a 160px token-width action column, and an exact 8px token gap. The music card uses an even-pixel width so its centered controls and equal timeline columns also have whole-pixel spacing. This changes the actual layout, not the inspector output; the button remains at the trailing edge.
|
|
12
|
+
|
|
13
|
+
Validation for spacing changes: inspect the affected layout and measure its actual gap; check a narrow viewport when wrapping is affected. Preserve fluid exceptions for their specific purpose, rather than applying a global pixel-snapping script.
|
|
@@ -1,20 +1,22 @@
|
|
|
1
|
-
# Banhaten Design System Docs
|
|
2
|
-
|
|
3
|
-
Use these docs with the live playground.
|
|
4
|
-
|
|
5
|
-
- [Registry and CLI](./registry-and-cli.md): registry formats, generated-file ownership, CLI commands, and schema behavior.
|
|
6
|
-
- [Installation](./installation.md): Vite, Next.js/framework-neutral setup, fonts, direction, and safe updates.
|
|
7
|
-
- [Token Governance](./token-governance.md): token-only component rules, exception ledger, and public override surface.
|
|
8
|
-
- [Appearance Presets](./appearance-presets.md): theme and radius mode guidance.
|
|
9
|
-
- [Direction and Localization](./direction-and-localization.md): inherited LTR/RTL and product localization responsibilities.
|
|
10
|
-
- [Form Recipes](./form-recipes.md): accessible Field composition, validation, selection, dates, and RTL.
|
|
11
|
-
- [Density and Elevation](./density-and-elevation.md): supported size contracts and semantic shadow layers.
|
|
12
|
-
- [Support Matrix](./support-matrix.md): framework, runtime, browser, font, and package-manager baseline.
|
|
13
|
-
- [Release Policy](./release-policy.md): stability tiers, versioning, deprecation, and launch gates.
|
|
14
|
-
- [Roadmap](./roadmap.md): explicitly deferred product-specific components and promotion gates.
|
|
15
|
-
- [
|
|
16
|
-
- [
|
|
17
|
-
- [
|
|
18
|
-
- [
|
|
19
|
-
|
|
20
|
-
|
|
1
|
+
# Banhaten Design System Docs
|
|
2
|
+
|
|
3
|
+
Use these docs with the live playground.
|
|
4
|
+
|
|
5
|
+
- [Registry and CLI](./registry-and-cli.md): registry formats, generated-file ownership, CLI commands, and schema behavior.
|
|
6
|
+
- [Installation](./installation.md): Vite, Next.js/framework-neutral setup, fonts, direction, and safe updates.
|
|
7
|
+
- [Token Governance](./token-governance.md): token-only component rules, exception ledger, and public override surface.
|
|
8
|
+
- [Appearance Presets](./appearance-presets.md): theme and radius mode guidance.
|
|
9
|
+
- [Direction and Localization](./direction-and-localization.md): inherited LTR/RTL and product localization responsibilities.
|
|
10
|
+
- [Form Recipes](./form-recipes.md): accessible Field composition, validation, selection, dates, and RTL.
|
|
11
|
+
- [Density and Elevation](./density-and-elevation.md): supported size contracts and semantic shadow layers.
|
|
12
|
+
- [Support Matrix](./support-matrix.md): framework, runtime, browser, font, and package-manager baseline.
|
|
13
|
+
- [Release Policy](./release-policy.md): stability tiers, versioning, deprecation, and launch gates.
|
|
14
|
+
- [Roadmap](./roadmap.md): explicitly deferred product-specific components and promotion gates.
|
|
15
|
+
- [Templates](./templates.md): 60 page, flow, and widget compositions built from Banhaten tokens and components.
|
|
16
|
+
- [Template Gap Audit](./template-gap-audit.md): composition friction and prioritized candidates revealed by the template catalog.
|
|
17
|
+
- [Launch Comparison](./launch-comparison-shadcn.md): the complete shadcn/ui benchmark, remediation register, and deliberate differences.
|
|
18
|
+
- [Component Docs Pattern](./component-docs-pattern.md): the Base / Anatomy / Alternatives shape every playground component page follows.
|
|
19
|
+
- [Components](./components/README.md): component markdown catalog.
|
|
20
|
+
- [Icon System](./icons.md): icon guidance and explorer notes.
|
|
21
|
+
|
|
22
|
+
The playground remains the primary documentation surface because it renders live registry-backed previews, source snippets, copyable code panels, API tables, file links, and RTL behavior.
|