banhaten 0.4.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 -100
- 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 -245
- package/docs/design-system/component-quality-audit-2026-08-20.md +225 -225
- 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 +97 -97
- 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 +88 -88
- 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 +176 -175
- 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 -81
- 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 +114 -60
- package/docs/design-system/components/item.md +59 -59
- package/docs/design-system/components/kbd.md +51 -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 +110 -99
- 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 -65
- 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 -74
- 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 -59
- 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 -454
- package/registry/components/autocomplete.tsx +598 -651
- package/registry/components/avatar.tsx +385 -385
- 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 -1289
- 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 -60
- 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 -260
- 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 -135
- 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 -606
- 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 -979
- package/registry/components/item.tsx +189 -189
- package/registry/components/kbd.tsx +246 -245
- 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 -560
- package/registry/components/popover.tsx +338 -338
- package/registry/components/progress-slider.tsx +216 -216
- package/registry/components/radio-card.tsx +676 -676
- 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 -1230
- 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 -235
- 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 -12
- 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 -101
- 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 +1403 -155
- package/registry/styles/globals.css +946 -1088
- package/registry.json +361 -8
- 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 +306 -192
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# Template Gap Audit
|
|
2
|
+
|
|
3
|
+
Last updated: 2026-08-23
|
|
4
|
+
|
|
5
|
+
This audit records repeated friction encountered while composing the 60-template catalog. It does not automatically promote every local composition into a component. Candidates should pass the roadmap's reuse, accessibility, direction, and API-stability gates.
|
|
6
|
+
|
|
7
|
+
## Prioritized findings
|
|
8
|
+
|
|
9
|
+
| Priority | Missing capability | Evidence from the catalog | Current workaround | Recommended ownership |
|
|
10
|
+
| --- | --- | --- | --- | --- |
|
|
11
|
+
| P1 | Responsive app-shell and layout primitives | Nearly every dashboard, settings, data, and operations page needed the same container, split-pane, metric-grid, and responsive collapse rules | Local CSS grids using spacing and surface tokens | Add documented `Container`, `Stack`, `Cluster`, `Grid`, and `AppShell` layout patterns plus breakpoint/container tokens |
|
|
12
|
+
| P1 | Stat / KPI card pattern | Executive, product, sales, commerce, finance, campaign, and widget designs repeat label/value/change anatomy | Local Card composition with Badge and trend icon | Promote a `StatCard` pattern with value, comparison, intent, sparkline slot, loading state, and RTL-safe trend semantics |
|
|
13
|
+
| P1 | Key-value and summary rows | Checkout, billing, profile, resource detail, transfers, and review flows need dense label/value groupings | Card, Attribute, Divider, and bespoke rows | Add a responsive `DescriptionList` / `SummaryList` pattern with actions, status, truncation, and stacked mode |
|
|
14
|
+
| P1 | Data-visualization recipes | Dashboards and finance screens repeatedly need sparklines, time series, funnels, comparison bars, legends, and no-data states | Raw Recharts composition inside ChartContainer | Publish chart recipes and defaults for sparkline, KPI trend, time series, bar comparison, funnel, legend, tooltip, empty, and loading states |
|
|
15
|
+
| P1 | Amount and currency field | Send money, FX quote, wallets, savings, billing, and checkout all need amount, currency, decimal, and locale behavior | Generic Input plus nearby Badge/Button | Add an `AmountInput` pattern with currency selector, precision rules, localized formatting, min/max, fees, and RTL QA |
|
|
16
|
+
| P2 | Structured commerce form recipes | Checkout and billing need address, card, delivery, tax, and order-summary structures | Generic Input, Checkbox, Card, and Divider composition | Document `AddressForm`, `PaymentMethod`, and `OrderSummary` patterns before considering dedicated components |
|
|
17
|
+
| P2 | Schedule and board patterns | Schedule planner, editorial calendar, hiring pipeline, project board, and room planner could only approximate their core layouts | Cards and lists arranged in local grids | Add accessible calendar/schedule and board patterns with keyboard navigation, overflow, selection, drag alternatives, and mobile behavior |
|
|
18
|
+
| P2 | Rich text and message composer | Shared inbox, conversation, email campaign, and content workflows need recipients, formatting, attachments, variables, and send state | Textarea, Toolbar, Tag, File Upload, and Button assembled locally | Define a `Composer` pattern with slots for recipients, toolbar, variable chips, attachments, drafts, validation, and send status |
|
|
19
|
+
| P2 | Media and asset browser | Product detail and content library need aspect-ratio thumbnails, selection, metadata, upload progress, and preview | Card, Aspect Ratio, File Upload, and generic image assets | Add `MediaCard`, selectable asset grid, and preview-detail patterns; keep storage and transformation product-owned |
|
|
20
|
+
| P2 | Status and health summary | Infrastructure, incidents, shipment, integrations, and widgets repeat status icon, message, metric, and history anatomy | Badge, Alert, Progress, and local icon wrappers | Add `StatusSummary` and `ServiceHealthRow` patterns with severity, timestamp, trend, actions, and accessible non-color cues |
|
|
21
|
+
| P3 | Map and spatial slot guidance | Shipment tracking and room planning cannot express a real map or floor plan with current components | List/detail summaries only | Document a neutral map/canvas host contract and overlay controls; keep the mapping engine and spatial assets outside the design system |
|
|
22
|
+
| P3 | Product illustration and empty-state asset guidance | Authentication, onboarding, commerce, and zero-data moments need richer owned visuals | One existing abstract image plus icon-led Empty State | Define approved illustration ratios, theming, cropping, alt-text, and loading rules; maintain real assets separately from component code |
|
|
23
|
+
|
|
24
|
+
## What is not missing
|
|
25
|
+
|
|
26
|
+
Table, File Upload, Empty State, ChartContainer, Page Header, Steps, Sidebar, Modal, Tabs, Toolbar, and the core form controls already provide useful foundations. The friction above is primarily at the composition, recipe, and responsive-layout layers; duplicating those existing primitives would make the system harder to maintain.
|
|
27
|
+
|
|
28
|
+
## Suggested sequence
|
|
29
|
+
|
|
30
|
+
1. Stabilize layout primitives, StatCard, SummaryList, chart recipes, and AmountInput because they recur across the largest number of templates.
|
|
31
|
+
2. Validate commerce forms, schedules/boards, Composer, media browser, and status summaries in two real product flows each.
|
|
32
|
+
3. Keep map engines and illustration assets as integration guidance unless repeated product usage reveals a stable design-system API.
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# Templates
|
|
2
|
+
|
|
3
|
+
Templates are Banhaten's composition tier: reusable page, flow, and widget starting points assembled from the existing token and component contracts. They sit above Components and Patterns, and below product-specific implementation.
|
|
4
|
+
|
|
5
|
+
The live catalog is available at `#templates` in the playground. It uses a text-first, single-column directory so full application screens are not compressed into competing thumbnails. Search, category, and type filters lead to a dedicated hash route for each template, where one design is shown at full content width with previous/next navigation, composition notes, and starter-code copying. Templates are examples rather than stable registry packages; product data, routing, validation, and domain behavior remain application-owned.
|
|
6
|
+
|
|
7
|
+
## Tier boundaries
|
|
8
|
+
|
|
9
|
+
| Tier | Purpose | Examples |
|
|
10
|
+
| --- | --- | --- |
|
|
11
|
+
| Tokens | Visual decisions and modes | Color, type, spacing, radius, elevation |
|
|
12
|
+
| Components | Reusable interaction primitives | Button, Input, Table, Modal, Chart |
|
|
13
|
+
| Patterns | Repeated task-level combinations | Page Header, File Upload, Empty State, Steps |
|
|
14
|
+
| Templates | Page, flow, and widget starting points | Checkout, analytics dashboard, exchange-rate widget |
|
|
15
|
+
| Lab | Screenshot-driven visual and quality experiments | Background tests and comparison workspaces |
|
|
16
|
+
|
|
17
|
+
Templates do not introduce a second visual language. Every surface, border, state, radius, type style, spacing decision, and shadow resolves through Banhaten's semantic tokens or an existing component contract.
|
|
18
|
+
|
|
19
|
+
## Research basis
|
|
20
|
+
|
|
21
|
+
The catalog uses the breadth and taxonomy of established libraries as research inputs, without copying their styling or exact layouts:
|
|
22
|
+
|
|
23
|
+
- [shadcn/ui Blocks](https://ui.shadcn.com/blocks) separates larger dashboard, authentication, and sidebar compositions from individual components.
|
|
24
|
+
- [Tailwind Plus Application UI](https://tailwindcss.com/plus/ui-blocks/application-ui), [Ecommerce](https://tailwindcss.com/plus/ui-blocks/ecommerce), and marketing collections cover task-specific sections and screens.
|
|
25
|
+
- [Material UI Templates](https://mui.com/material-ui/getting-started/templates/) includes sign-in, checkout, CRUD, dashboard, and marketing starting points.
|
|
26
|
+
- [Carbon Patterns](https://carbondesignsystem.com/patterns/overview/) defines patterns as reusable combinations that help users complete goals and flows.
|
|
27
|
+
- [Shopify App Home patterns](https://shopify.dev/docs/api/app-home/patterns) distinguishes full-page templates from smaller compositions.
|
|
28
|
+
- [Ant Design](https://ant.design/docs/spec/overview/) demonstrates both base components and business-oriented examples.
|
|
29
|
+
|
|
30
|
+
## Catalog inventory
|
|
31
|
+
|
|
32
|
+
| Category | Type | Included templates |
|
|
33
|
+
| --- | --- | --- |
|
|
34
|
+
| Authentication | Flow | Centered sign in, Split sign in, Create account, Invite acceptance, Password recovery, Two-step verification |
|
|
35
|
+
| Dashboards | Page | Executive overview, Product analytics, Sales pulse, Support operations, Infrastructure health, Team workload |
|
|
36
|
+
| Finance | Flow | Wallet overview, Send money, Foreign exchange quote, Crypto portfolio, Card controls, Savings plan |
|
|
37
|
+
| Commerce | Page | Storefront overview, Product detail, Catalog manager, Cart summary, Checkout flow, Order tracking |
|
|
38
|
+
| Data | Page | Resource index, Resource detail, Data source browser, Import mapping, Audit log, Approval queue |
|
|
39
|
+
| Collaboration | Page | Team directory, Activity center, Shared inbox, Conversation detail, Project board, Meeting agenda |
|
|
40
|
+
| Operations | Page | Shipment tracking, Schedule planner, Incident response, Hiring pipeline, Benefits enrollment, Room planner |
|
|
41
|
+
| Settings & Admin | Page | Profile settings, Security settings, Billing settings, Notification preferences, Workspace members, Integrations hub |
|
|
42
|
+
| Marketing & Content | Page | Campaign overview, Email composer, Editorial calendar, Content library, Launch checklist, Customer story |
|
|
43
|
+
| Widgets | Widget | Metric comparison, Conversion funnel, Task progress, Exchange rate, Server status, Recent transactions |
|
|
44
|
+
|
|
45
|
+
Total: 60 templates across 10 categories.
|
|
46
|
+
|
|
47
|
+
## Quality contract
|
|
48
|
+
|
|
49
|
+
- A template must remain legible in LTR and RTL and in light and dark modes.
|
|
50
|
+
- The catalog must show template names and descriptions as a directory; full template canvases appear only on their dedicated pages.
|
|
51
|
+
- Template chrome and previews use Banhaten tokens; raw colors, bespoke shadows, and copied external CSS are not allowed.
|
|
52
|
+
- Inputs and other form controls inherit Banhaten's default `lg` density. Compact controls are reserved for genuinely constrained desktop tables and toolbars, never as a way to squeeze a template into its preview.
|
|
53
|
+
- Product imagery must come from a real owned asset. Icons use the supported icon family.
|
|
54
|
+
- Visible controls in the gallery's main journey work: search, filters, pagination, preview, close, mode selection, and copy.
|
|
55
|
+
- Repeated composition friction is recorded in the [template gap audit](./template-gap-audit.md) before a new component or pattern is proposed.
|
|
56
|
+
|
|
57
|
+
## Promotion path
|
|
58
|
+
|
|
59
|
+
A template can become an installable `registry:block` only after it has a stable public composition API, realistic data and empty/loading/error states, accessibility and direction tests, documentation, and evidence of reuse in more than one product context. Until then, the catalog remains an exploration and adoption aid rather than generated source ownership.
|
|
@@ -1,59 +1,72 @@
|
|
|
1
|
-
# Token Governance
|
|
2
|
-
|
|
3
|
-
Banhaten components must be built from Banhaten tokens. Component source may use:
|
|
4
|
-
|
|
5
|
-
- Generated `--bh-*` semantic tokens.
|
|
6
|
-
- System, typography, effect, and component variables compiled from their owned
|
|
7
|
-
fragments under `tokens/source/` into the published `cssVariables` contract.
|
|
8
|
-
- shadcn alias bridge variables such as `--background`, `--foreground`, and `--ring` only when they point back to Banhaten tokens.
|
|
9
|
-
- Documented exception-ledger values when the value is external, brand-owned, or required by a third-party primitive API.
|
|
10
|
-
|
|
11
|
-
Do not add raw component styling literals directly to `registry/components`:
|
|
12
|
-
|
|
13
|
-
- Raw color literals.
|
|
14
|
-
- Raw `px`, `rem`, or `ms` values outside approved media-query breakpoints.
|
|
15
|
-
- Raw opacity utilities such as `opacity-0` or `opacity-100`.
|
|
16
|
-
- Raw z-index, ring width, duration, icon size, or compact spacing utilities.
|
|
17
|
-
- Component-local `color-mix()` percentages.
|
|
18
|
-
- Legacy `--ds-*` fallbacks.
|
|
19
|
-
|
|
20
|
-
`npm run tokens:check` enforces the generated CSS contract
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
`tokens
|
|
27
|
-
`
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
1
|
+
# Token Governance
|
|
2
|
+
|
|
3
|
+
Banhaten components must be built from Banhaten tokens. Component source may use:
|
|
4
|
+
|
|
5
|
+
- Generated `--bh-*` semantic tokens.
|
|
6
|
+
- System, typography, effect, and component variables compiled from their owned
|
|
7
|
+
fragments under `tokens/source/` into the published `cssVariables` contract.
|
|
8
|
+
- shadcn alias bridge variables such as `--background`, `--foreground`, and `--ring` only when they point back to Banhaten tokens.
|
|
9
|
+
- Documented exception-ledger values when the value is external, brand-owned, or required by a third-party primitive API.
|
|
10
|
+
|
|
11
|
+
Do not add raw component styling literals directly to `registry/components`:
|
|
12
|
+
|
|
13
|
+
- Raw color literals.
|
|
14
|
+
- Raw `px`, `rem`, or `ms` values outside approved media-query breakpoints.
|
|
15
|
+
- Raw opacity utilities such as `opacity-0` or `opacity-100`.
|
|
16
|
+
- Raw z-index, ring width, duration, icon size, or compact spacing utilities.
|
|
17
|
+
- Component-local `color-mix()` percentages.
|
|
18
|
+
- Legacy `--ds-*` fallbacks.
|
|
19
|
+
|
|
20
|
+
`npm run tokens:check` enforces the public token schema, generated CSS contract,
|
|
21
|
+
and component token usage. `schema/tokens.schema.json#/$defs/cssVariableName`
|
|
22
|
+
owns the naming rule for published variables and alias targets: `--bh-*` and
|
|
23
|
+
`--elevation-*`. The compiler, CSS generator, component metadata scanner, and CSS
|
|
24
|
+
reference checks share that contract through `scripts/token-schema.mjs`.
|
|
25
|
+
Compilation and direct CSS generation validate the full catalog before comparing
|
|
26
|
+
or writing artifacts, so schema failures stop both `tokens:check` and
|
|
27
|
+
`contracts:check`.
|
|
28
|
+
|
|
29
|
+
Structured tokens and aliases are authored in the domain and component-owned
|
|
30
|
+
fragments under `tokens/source/`. `tokens/banhaten.tokens.json` is output-only
|
|
31
|
+
and deterministically compiled from that manifest. Authored Tailwind mappings,
|
|
32
|
+
keyframes, global and accessibility rules, and typography utilities live in
|
|
33
|
+
`tokens/banhaten.utilities.css`. The distributable
|
|
34
|
+
`registry/styles/globals.css` is regenerated from the compiled token catalog and
|
|
35
|
+
that authored CSS source.
|
|
36
|
+
|
|
37
|
+
Each theme boundary emits its complete palette, semantic aliases, effects, and
|
|
38
|
+
dependent component aliases. Dark mode rebinds the semantic and component graph
|
|
39
|
+
both on `.dark` elements and on themed descendants. CSS custom properties inherit
|
|
40
|
+
computed values, so identical `var()` declarations must be repeated at these
|
|
41
|
+
boundaries to resolve against the local theme. Other typography and layout tokens
|
|
42
|
+
retain their existing inheritance behavior. The token contract check verifies
|
|
43
|
+
these graphs for every supported light and dark theme scope.
|
|
44
|
+
|
|
45
|
+
The default appearance uses `gray` for both brand roles and the neutral ramp.
|
|
46
|
+
As a result, product surfaces, links, focus states, and primary actions are
|
|
47
|
+
monochrome by default. `cssContract.defaultTheme` and
|
|
48
|
+
`cssContract.defaultNeutralTheme` record that composition. `npm run
|
|
49
|
+
tokens:build` synchronizes it into the authored default theme and semantic
|
|
50
|
+
color-mode values before compiling the public artifacts. Alternate brand themes
|
|
51
|
+
keep their reviewed neutral ramps unless their source is explicitly changed.
|
|
52
|
+
|
|
53
|
+
Color values are design-owned. The generated Color Contrast page reports failing combinations and recommendations, but automation must not silently change source colors. A color change requires an explicit design review and regeneration of the contrast baseline.
|
|
54
|
+
|
|
55
|
+
## Exception Ledger
|
|
56
|
+
|
|
57
|
+
The following exceptions are allowed only in token generation or documented alias source, not directly in component implementation:
|
|
58
|
+
|
|
59
|
+
| Exception | Reason | Owner |
|
|
60
|
+
| --- | --- | --- |
|
|
61
|
+
| Social provider marks | Apple, Facebook, Google, LinkedIn, Twitter, and WhatsApp colors and icon geometry must preserve provider identity; color must still flow through `currentColor` and Banhaten social variables. | Component alias source and social button source |
|
|
62
|
+
| Payment or illustrative mark geometry | Some Figma-matched marks use fractional geometry that cannot be expressed cleanly through the global spacing scale. | Component alias source |
|
|
63
|
+
| Effect and shadow stops | The supplied token zips do not include effect tokens, so component shadow aliases document those values. | Component alias source |
|
|
64
|
+
| Media-query breakpoints | CSS custom properties are not reliable in media-query conditions. | Component CSS with local comment |
|
|
65
|
+
| Radix numeric offsets | Some Radix APIs require JavaScript numbers instead of CSS variables; comments must pair each number with its matching token. | Component source |
|
|
66
|
+
| Expanded composition widths | Larger app compositions may expose public layout aliases or documentation-only layout aliases. | Expanded component docs |
|
|
67
|
+
|
|
68
|
+
If a new literal is needed, add it to an alias or the exception ledger before using it.
|
|
69
|
+
|
|
70
|
+
## Public Override Surface
|
|
71
|
+
|
|
72
|
+
Stable override points are CSS variables emitted in `registry/styles/globals.css`. Prefer overriding component aliases rather than editing installed component source. Product teams should use local wrapper components for behavior and keep Banhaten files generated-owned.
|
package/package.json
CHANGED
|
@@ -1,98 +1,98 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "banhaten",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "Banhaten design system: an Arabic and English-first React design system with shadcn-style component installation.",
|
|
5
|
-
"type": "module",
|
|
6
|
-
"bin": {
|
|
7
|
-
"banhaten": "src/cli/index.js"
|
|
8
|
-
},
|
|
9
|
-
"files": [
|
|
10
|
-
"src",
|
|
11
|
-
"registry/index.json",
|
|
12
|
-
"registry/component-contract.json",
|
|
13
|
-
"registry/components",
|
|
14
|
-
"registry/examples",
|
|
15
|
-
"registry/guidance",
|
|
16
|
-
"registry/hooks",
|
|
17
|
-
"registry/styles",
|
|
18
|
-
"registry/utils",
|
|
19
|
-
"registry/assets/activity-feed-avatar.png",
|
|
20
|
-
"registry/assets/avatars/avatar-01.jpg",
|
|
21
|
-
"registry/assets/images/art-01.jpg",
|
|
22
|
-
"registry.json",
|
|
23
|
-
"tokens/banhaten.tokens.json",
|
|
24
|
-
"schema",
|
|
25
|
-
"docs",
|
|
26
|
-
"banhaten.config.example.json",
|
|
27
|
-
"README.md",
|
|
28
|
-
"CHANGELOG.md",
|
|
29
|
-
"CONTRIBUTING.md",
|
|
30
|
-
"SECURITY.md",
|
|
31
|
-
"LICENSE"
|
|
32
|
-
],
|
|
33
|
-
"scripts": {
|
|
34
|
-
"build": "npm --prefix playground ci --include=dev --include=optional && npm --prefix playground run build",
|
|
35
|
-
"build:railway": "npm --prefix playground ci --include=dev --include=optional && npm --prefix playground run build:railway",
|
|
36
|
-
"start": "node playground/scripts/serve-static.mjs playground/dist",
|
|
37
|
-
"check": "node --check src/cli/index.js && node --check src/cli/command-line.js && node --check src/cli/doctor.js && node --check src/cli/config-editors.js && node --check src/cli/source-scanner.js && node --check src/cli/jsonc.js && node --check src/cli/vite-config.js && node --check src/cli/install-plan.js && node --check src/cli/install-receipt.js && node --check src/cli/package-install-state.js && node --check src/cli/package-manager.js && node --check src/cli/package-plan.js && node --check src/cli/package-version.js && node --check scripts/compile-token-catalog.mjs && node --check scripts/sync-default-theme-neutral-values.mjs && node --check scripts/token-catalog-test.mjs && node --check scripts/registry-catalog.mjs && node --check scripts/generate-registry-index.mjs && node --check scripts/generate-shadcn-registry.mjs && node --check scripts/normalize-component-docs.mjs && node --check scripts/package-artifact.mjs && node --check scripts/check-package-contents.mjs && node --check scripts/select-react-compatibility.mjs && npm run contracts:check && npm run cli:test && npm run tokens:check && npm run components:ownership:check && npm run registry:check && npm run docs:check && npm run package:check && npm run playground:build && npm run playground:test:browser && npm run playground:audit",
|
|
38
|
-
"contracts:check": "node scripts/validate-contracts.mjs",
|
|
39
|
-
"cli:test": "node scripts/cli-argument-test.mjs && node scripts/cli-dependency-test.mjs && node scripts/cli-install-plan-test.mjs && node scripts/cli-integration-test.mjs && node scripts/cli-doctor-test.mjs",
|
|
40
|
-
"playground:build": "npm --prefix playground run build",
|
|
41
|
-
"playground:dev": "npm --prefix playground run dev",
|
|
42
|
-
"playground:test": "npm --prefix playground run test",
|
|
43
|
-
"playground:test:browser": "npm --prefix playground run test:browser",
|
|
44
|
-
"playground:audit": "npm --prefix playground audit --audit-level=high",
|
|
45
|
-
"package:check": "node scripts/generate-registry-index.mjs --check && node scripts/compile-token-catalog.mjs --check && node scripts/check-package-contents.mjs",
|
|
46
|
-
"registry:build": "node scripts/generate-registry-index.mjs --write",
|
|
47
|
-
"registry:check": "node scripts/generate-registry-index.mjs --check && node scripts/check-registry-mirrors.mjs && node scripts/generate-shadcn-registry.mjs --check && node scripts/registry-runtime-exports-test.mjs && node scripts/check-isolated-registry-installs.mjs --packed",
|
|
48
|
-
"registry:export": "node scripts/generate-registry-index.mjs --write && node scripts/generate-shadcn-registry.mjs --write",
|
|
49
|
-
"registry:exports": "node scripts/check-isolated-registry-installs.mjs --write-exports",
|
|
50
|
-
"registry:sync": "node scripts/check-registry-mirrors.mjs --write",
|
|
51
|
-
"components:tokens:check": "node scripts/check-component-token-usage.mjs",
|
|
52
|
-
"components:ownership:check": "npm --prefix playground run test:ownership",
|
|
53
|
-
"components:tokens:metadata": "node scripts/sync-component-token-metadata.mjs",
|
|
54
|
-
"docs:check": "node scripts/check-component-docs.mjs && node scripts/normalize-component-docs.mjs",
|
|
55
|
-
"docs:normalize": "node scripts/normalize-component-docs.mjs --write",
|
|
56
|
-
"smoke": "node src/cli/index.js list",
|
|
57
|
-
"tokens:aliases:check": "node scripts/sync-default-theme-neutral-values.mjs",
|
|
58
|
-
"tokens:aliases:sync": "node scripts/sync-default-theme-neutral-values.mjs --write",
|
|
59
|
-
"tokens:build": "npm run tokens:aliases:sync && node scripts/compile-token-catalog.mjs --write && node scripts/generate-token-css.mjs --write",
|
|
60
|
-
"tokens:check": "npm run tokens:aliases:check && node scripts/compile-token-catalog.mjs --check && node scripts/token-catalog-test.mjs && node scripts/generate-token-css.mjs --check && node scripts/check-token-css-reproducibility.mjs && node scripts/check-token-contract.mjs && npm run components:tokens:check && npm run components:tokens:metadata"
|
|
61
|
-
},
|
|
62
|
-
"engines": {
|
|
63
|
-
"node": ">=18.18"
|
|
64
|
-
},
|
|
65
|
-
"peerDependencies": {
|
|
66
|
-
"react": "^18.2.0 || ^19.0.0",
|
|
67
|
-
"react-dom": "^18.2.0 || ^19.0.0",
|
|
68
|
-
"tailwindcss": "^4.0.0"
|
|
69
|
-
},
|
|
70
|
-
"keywords": [
|
|
71
|
-
"banhaten",
|
|
72
|
-
"design-system",
|
|
73
|
-
"react",
|
|
74
|
-
"shadcn",
|
|
75
|
-
"rtl",
|
|
76
|
-
"arabic",
|
|
77
|
-
"components"
|
|
78
|
-
],
|
|
79
|
-
"license": "MIT",
|
|
80
|
-
"repository": {
|
|
81
|
-
"type": "git",
|
|
82
|
-
"url": "git+https://github.com/AhmadGalal85/Banhaten-design-system.git"
|
|
83
|
-
},
|
|
84
|
-
"bugs": {
|
|
85
|
-
"url": "https://github.com/AhmadGalal85/Banhaten-design-system/issues"
|
|
86
|
-
},
|
|
87
|
-
"homepage": "https://github.com/AhmadGalal85/Banhaten-design-system/tree/main/docs",
|
|
88
|
-
"directories": {
|
|
89
|
-
"doc": "docs"
|
|
90
|
-
},
|
|
91
|
-
"author": "Ahmad Galal",
|
|
92
|
-
"dependencies": {
|
|
93
|
-
"ajv": "^8.20.0",
|
|
94
|
-
"minimatch": "^10.2.5",
|
|
95
|
-
"semver": "^7.8.5",
|
|
96
|
-
"yaml": "^2.9.0"
|
|
97
|
-
}
|
|
98
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "banhaten",
|
|
3
|
+
"version": "0.5.0",
|
|
4
|
+
"description": "Banhaten design system: an Arabic and English-first React design system with shadcn-style component installation.",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"bin": {
|
|
7
|
+
"banhaten": "src/cli/index.js"
|
|
8
|
+
},
|
|
9
|
+
"files": [
|
|
10
|
+
"src",
|
|
11
|
+
"registry/index.json",
|
|
12
|
+
"registry/component-contract.json",
|
|
13
|
+
"registry/components",
|
|
14
|
+
"registry/examples",
|
|
15
|
+
"registry/guidance",
|
|
16
|
+
"registry/hooks",
|
|
17
|
+
"registry/styles",
|
|
18
|
+
"registry/utils",
|
|
19
|
+
"registry/assets/activity-feed-avatar.png",
|
|
20
|
+
"registry/assets/avatars/avatar-01.jpg",
|
|
21
|
+
"registry/assets/images/art-01.jpg",
|
|
22
|
+
"registry.json",
|
|
23
|
+
"tokens/banhaten.tokens.json",
|
|
24
|
+
"schema",
|
|
25
|
+
"docs",
|
|
26
|
+
"banhaten.config.example.json",
|
|
27
|
+
"README.md",
|
|
28
|
+
"CHANGELOG.md",
|
|
29
|
+
"CONTRIBUTING.md",
|
|
30
|
+
"SECURITY.md",
|
|
31
|
+
"LICENSE"
|
|
32
|
+
],
|
|
33
|
+
"scripts": {
|
|
34
|
+
"build": "npm --prefix playground ci --include=dev --include=optional && npm --prefix playground run build",
|
|
35
|
+
"build:railway": "npm --prefix playground ci --include=dev --include=optional && npm --prefix playground run build:railway",
|
|
36
|
+
"start": "node playground/scripts/serve-static.mjs playground/dist",
|
|
37
|
+
"check": "node --check src/cli/index.js && node --check src/cli/command-line.js && node --check src/cli/doctor.js && node --check src/cli/config-editors.js && node --check src/cli/source-scanner.js && node --check src/cli/jsonc.js && node --check src/cli/vite-config.js && node --check src/cli/install-plan.js && node --check src/cli/install-receipt.js && node --check src/cli/package-install-state.js && node --check src/cli/package-manager.js && node --check src/cli/package-plan.js && node --check src/cli/package-version.js && node --check scripts/compile-token-catalog.mjs && node --check scripts/sync-default-theme-neutral-values.mjs && node --check scripts/token-catalog-test.mjs && node --check scripts/registry-catalog.mjs && node --check scripts/generate-registry-index.mjs && node --check scripts/generate-shadcn-registry.mjs && node --check scripts/normalize-component-docs.mjs && node --check scripts/package-artifact.mjs && node --check scripts/check-package-contents.mjs && node --check scripts/select-react-compatibility.mjs && npm run contracts:check && npm run cli:test && npm run tokens:check && npm run components:ownership:check && npm run registry:check && npm run docs:check && npm run package:check && npm run playground:build && npm run playground:test:browser && npm run playground:audit",
|
|
38
|
+
"contracts:check": "node scripts/validate-contracts.mjs",
|
|
39
|
+
"cli:test": "node scripts/cli-argument-test.mjs && node scripts/cli-file-transaction-test.mjs && node scripts/cli-dependency-test.mjs && node scripts/cli-install-plan-test.mjs && node scripts/cli-integration-test.mjs && node scripts/cli-doctor-test.mjs",
|
|
40
|
+
"playground:build": "npm --prefix playground run build",
|
|
41
|
+
"playground:dev": "npm --prefix playground run dev",
|
|
42
|
+
"playground:test": "npm --prefix playground run test",
|
|
43
|
+
"playground:test:browser": "npm --prefix playground run test:browser",
|
|
44
|
+
"playground:audit": "npm --prefix playground audit --audit-level=high",
|
|
45
|
+
"package:check": "node scripts/generate-registry-index.mjs --check && node scripts/compile-token-catalog.mjs --check && node scripts/check-package-contents.mjs",
|
|
46
|
+
"registry:build": "node scripts/generate-registry-index.mjs --write",
|
|
47
|
+
"registry:check": "node scripts/generate-registry-index.mjs --check && node scripts/check-registry-mirrors.mjs && node scripts/generate-shadcn-registry.mjs --check && node scripts/registry-runtime-exports-test.mjs && node scripts/check-isolated-registry-installs.mjs --packed",
|
|
48
|
+
"registry:export": "node scripts/generate-registry-index.mjs --write && node scripts/generate-shadcn-registry.mjs --write",
|
|
49
|
+
"registry:exports": "node scripts/check-isolated-registry-installs.mjs --write-exports",
|
|
50
|
+
"registry:sync": "node scripts/check-registry-mirrors.mjs --write",
|
|
51
|
+
"components:tokens:check": "node scripts/check-component-token-usage.mjs",
|
|
52
|
+
"components:ownership:check": "npm --prefix playground run test:ownership",
|
|
53
|
+
"components:tokens:metadata": "node scripts/sync-component-token-metadata.mjs",
|
|
54
|
+
"docs:check": "node scripts/check-component-docs.mjs && node scripts/normalize-component-docs.mjs",
|
|
55
|
+
"docs:normalize": "node scripts/normalize-component-docs.mjs --write",
|
|
56
|
+
"smoke": "node src/cli/index.js list",
|
|
57
|
+
"tokens:aliases:check": "node scripts/sync-default-theme-neutral-values.mjs",
|
|
58
|
+
"tokens:aliases:sync": "node scripts/sync-default-theme-neutral-values.mjs --write",
|
|
59
|
+
"tokens:build": "npm run tokens:aliases:sync && node scripts/compile-token-catalog.mjs --write && node scripts/generate-token-css.mjs --write",
|
|
60
|
+
"tokens:check": "npm run tokens:aliases:check && node scripts/compile-token-catalog.mjs --check && node scripts/token-catalog-test.mjs && node scripts/generate-token-css.mjs --check && node scripts/check-token-css-reproducibility.mjs && node scripts/check-token-contract.mjs && npm run components:tokens:check && npm run components:tokens:metadata"
|
|
61
|
+
},
|
|
62
|
+
"engines": {
|
|
63
|
+
"node": ">=18.18"
|
|
64
|
+
},
|
|
65
|
+
"peerDependencies": {
|
|
66
|
+
"react": "^18.2.0 || ^19.0.0",
|
|
67
|
+
"react-dom": "^18.2.0 || ^19.0.0",
|
|
68
|
+
"tailwindcss": "^4.0.0"
|
|
69
|
+
},
|
|
70
|
+
"keywords": [
|
|
71
|
+
"banhaten",
|
|
72
|
+
"design-system",
|
|
73
|
+
"react",
|
|
74
|
+
"shadcn",
|
|
75
|
+
"rtl",
|
|
76
|
+
"arabic",
|
|
77
|
+
"components"
|
|
78
|
+
],
|
|
79
|
+
"license": "MIT",
|
|
80
|
+
"repository": {
|
|
81
|
+
"type": "git",
|
|
82
|
+
"url": "git+https://github.com/AhmadGalal85/Banhaten-design-system.git"
|
|
83
|
+
},
|
|
84
|
+
"bugs": {
|
|
85
|
+
"url": "https://github.com/AhmadGalal85/Banhaten-design-system/issues"
|
|
86
|
+
},
|
|
87
|
+
"homepage": "https://github.com/AhmadGalal85/Banhaten-design-system/tree/main/docs",
|
|
88
|
+
"directories": {
|
|
89
|
+
"doc": "docs"
|
|
90
|
+
},
|
|
91
|
+
"author": "Ahmad Galal",
|
|
92
|
+
"dependencies": {
|
|
93
|
+
"ajv": "^8.20.0",
|
|
94
|
+
"minimatch": "^10.2.5",
|
|
95
|
+
"semver": "^7.8.5",
|
|
96
|
+
"yaml": "^2.9.0"
|
|
97
|
+
}
|
|
98
|
+
}
|
|
@@ -1,40 +1,40 @@
|
|
|
1
|
-
{
|
|
2
|
-
"capabilities": {
|
|
3
|
-
"actions": "Actions",
|
|
4
|
-
"alignments": "Alignments",
|
|
5
|
-
"breakpoints": "Breakpoints",
|
|
6
|
-
"cardPositions": "Card Positions",
|
|
7
|
-
"colors": "Colors",
|
|
8
|
-
"controlPositions": "Control Positions",
|
|
9
|
-
"densities": "Densities",
|
|
10
|
-
"directions": "Directions",
|
|
11
|
-
"features": "Features",
|
|
12
|
-
"forms": "Forms",
|
|
13
|
-
"indicators": "Indicators",
|
|
14
|
-
"intents": "Intents",
|
|
15
|
-
"itemKinds": "Item Kinds",
|
|
16
|
-
"itemTypes": "Item Types",
|
|
17
|
-
"kinds": "Kinds",
|
|
18
|
-
"labelPositions": "Label Positions",
|
|
19
|
-
"layouts": "Layouts",
|
|
20
|
-
"modes": "Modes",
|
|
21
|
-
"offsets": "Offsets",
|
|
22
|
-
"options": "Options",
|
|
23
|
-
"orientations": "Orientations",
|
|
24
|
-
"platforms": "Platforms",
|
|
25
|
-
"pointerPositions": "Pointer Positions",
|
|
26
|
-
"selectionTypes": "Selection Types",
|
|
27
|
-
"shapes": "Shapes",
|
|
28
|
-
"sides": "Sides",
|
|
29
|
-
"sizes": "Sizes",
|
|
30
|
-
"states": "States",
|
|
31
|
-
"statusColors": "Status Colors",
|
|
32
|
-
"styles": "Styles",
|
|
33
|
-
"tokens": "Tokens",
|
|
34
|
-
"tones": "Tones",
|
|
35
|
-
"types": "Types",
|
|
36
|
-
"valueModes": "Value Modes",
|
|
37
|
-
"variants": "Variants",
|
|
38
|
-
"widths": "Widths"
|
|
39
|
-
}
|
|
40
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"capabilities": {
|
|
3
|
+
"actions": "Actions",
|
|
4
|
+
"alignments": "Alignments",
|
|
5
|
+
"breakpoints": "Breakpoints",
|
|
6
|
+
"cardPositions": "Card Positions",
|
|
7
|
+
"colors": "Colors",
|
|
8
|
+
"controlPositions": "Control Positions",
|
|
9
|
+
"densities": "Densities",
|
|
10
|
+
"directions": "Directions",
|
|
11
|
+
"features": "Features",
|
|
12
|
+
"forms": "Forms",
|
|
13
|
+
"indicators": "Indicators",
|
|
14
|
+
"intents": "Intents",
|
|
15
|
+
"itemKinds": "Item Kinds",
|
|
16
|
+
"itemTypes": "Item Types",
|
|
17
|
+
"kinds": "Kinds",
|
|
18
|
+
"labelPositions": "Label Positions",
|
|
19
|
+
"layouts": "Layouts",
|
|
20
|
+
"modes": "Modes",
|
|
21
|
+
"offsets": "Offsets",
|
|
22
|
+
"options": "Options",
|
|
23
|
+
"orientations": "Orientations",
|
|
24
|
+
"platforms": "Platforms",
|
|
25
|
+
"pointerPositions": "Pointer Positions",
|
|
26
|
+
"selectionTypes": "Selection Types",
|
|
27
|
+
"shapes": "Shapes",
|
|
28
|
+
"sides": "Sides",
|
|
29
|
+
"sizes": "Sizes",
|
|
30
|
+
"states": "States",
|
|
31
|
+
"statusColors": "Status Colors",
|
|
32
|
+
"styles": "Styles",
|
|
33
|
+
"tokens": "Tokens",
|
|
34
|
+
"tones": "Tones",
|
|
35
|
+
"types": "Types",
|
|
36
|
+
"valueModes": "Value Modes",
|
|
37
|
+
"variants": "Variants",
|
|
38
|
+
"widths": "Widths"
|
|
39
|
+
}
|
|
40
|
+
}
|