banhaten 0.5.0 → 0.6.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 +177 -139
- package/CONTRIBUTING.md +46 -46
- package/README.md +192 -192
- package/SECURITY.md +15 -15
- package/banhaten.config.example.json +11 -11
- package/docs/design-spacing.md +13 -13
- package/docs/design-system/README.md +22 -22
- 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 +91 -90
- package/docs/design-system/components/accordion.md +52 -52
- package/docs/design-system/components/activity-feed.md +93 -93
- package/docs/design-system/components/activity-heatmap.md +56 -56
- package/docs/design-system/components/alert-dialog.md +71 -71
- package/docs/design-system/components/alert.md +103 -97
- package/docs/design-system/components/app-header.md +97 -0
- package/docs/design-system/components/aspect-ratio.md +45 -45
- package/docs/design-system/components/attribute.md +101 -89
- package/docs/design-system/components/autocomplete.md +75 -75
- package/docs/design-system/components/avatar.md +53 -53
- package/docs/design-system/components/badge.md +55 -55
- package/docs/design-system/components/banner.md +86 -86
- package/docs/design-system/components/breadcrumbs.md +181 -177
- package/docs/design-system/components/button-group.md +97 -97
- package/docs/design-system/components/button.md +80 -80
- package/docs/design-system/components/card.md +102 -88
- package/docs/design-system/components/carousel.md +46 -46
- package/docs/design-system/components/catalog-components.md +46 -46
- package/docs/design-system/components/checkbox.md +53 -53
- package/docs/design-system/components/collapsible.md +63 -63
- package/docs/design-system/components/command.md +61 -61
- package/docs/design-system/components/context-menu.md +45 -45
- package/docs/design-system/components/date-picker.md +80 -80
- 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 +186 -186
- package/docs/design-system/components/hover-card.md +47 -47
- package/docs/design-system/components/icons.md +48 -48
- package/docs/design-system/components/input-group.md +57 -57
- package/docs/design-system/components/input-otp.md +56 -56
- package/docs/design-system/components/input.md +111 -109
- package/docs/design-system/components/item.md +58 -58
- package/docs/design-system/components/kbd.md +49 -49
- package/docs/design-system/components/label.md +49 -49
- package/docs/design-system/components/menu.md +94 -73
- package/docs/design-system/components/menubar.md +46 -46
- package/docs/design-system/components/modal.md +104 -104
- package/docs/design-system/components/native-select.md +53 -53
- package/docs/design-system/components/navigation-menu.md +49 -49
- package/docs/design-system/components/onboarding-step-list-item.md +81 -81
- package/docs/design-system/components/page-header.md +127 -93
- package/docs/design-system/components/pagination.md +56 -56
- package/docs/design-system/components/popover.md +59 -59
- package/docs/design-system/components/progress-slider.md +49 -49
- package/docs/design-system/components/progress.md +76 -76
- package/docs/design-system/components/radio-card.md +50 -50
- package/docs/design-system/components/radio-group.md +56 -56
- package/docs/design-system/components/resizable.md +43 -43
- package/docs/design-system/components/scroll-area.md +50 -50
- package/docs/design-system/components/segmented-control.md +54 -54
- package/docs/design-system/components/select.md +68 -64
- package/docs/design-system/components/sheet.md +66 -66
- package/docs/design-system/components/sidebar.md +167 -111
- package/docs/design-system/components/skeleton.md +74 -74
- package/docs/design-system/components/slideout.md +64 -64
- package/docs/design-system/components/slider.md +62 -62
- package/docs/design-system/components/social-button.md +49 -49
- package/docs/design-system/components/spinner.md +62 -62
- package/docs/design-system/components/steps.md +65 -65
- package/docs/design-system/components/table.md +499 -422
- package/docs/design-system/components/tabs.md +74 -59
- package/docs/design-system/components/tag.md +79 -79
- package/docs/design-system/components/textarea.md +49 -49
- package/docs/design-system/components/timeline.md +82 -82
- package/docs/design-system/components/toast.md +57 -57
- package/docs/design-system/components/toggle.md +80 -80
- package/docs/design-system/components/toolbar.md +89 -89
- package/docs/design-system/components/tooltip.md +92 -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 -70
- 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 -54
- package/docs/design-system/template-gap-audit.md +32 -32
- package/docs/design-system/templates.md +59 -59
- package/docs/design-system/token-governance.md +72 -72
- package/package.json +98 -98
- package/registry/component-contract.json +40 -40
- package/registry/components/accordion.tsx +155 -155
- package/registry/components/alert-dialog.tsx +297 -297
- package/registry/components/alert.tsx +309 -293
- package/registry/components/app-header.tsx +151 -0
- package/registry/components/aspect-ratio.tsx +30 -30
- package/registry/components/attribute.tsx +489 -454
- package/registry/components/autocomplete.tsx +598 -598
- package/registry/components/avatar.tsx +385 -385
- package/registry/components/badge.tsx +630 -629
- package/registry/components/button-group.tsx +565 -565
- package/registry/components/button.tsx +128 -127
- package/registry/components/card.tsx +651 -638
- package/registry/components/carousel.tsx +296 -296
- package/registry/components/chart.tsx +203 -203
- package/registry/components/checkbox.tsx +247 -247
- package/registry/components/collapsible.tsx +109 -109
- package/registry/components/command.tsx +208 -208
- package/registry/components/context-menu.tsx +236 -236
- package/registry/components/date-picker.tsx +1289 -1289
- 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 +135 -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 +209 -179
- package/registry/components/expanded/Slideout.tsx +108 -108
- package/registry/components/expanded/Steps.tsx +402 -402
- package/registry/components/expanded/Table.tsx +1109 -1092
- 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 +157 -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 +284 -248
- package/registry/components/expanded/slideout.css +276 -276
- package/registry/components/expanded/steps.css +356 -356
- package/registry/components/expanded/table.css +655 -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/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 +992 -990
- package/registry/components/item.tsx +189 -189
- package/registry/components/kbd.tsx +246 -246
- package/registry/components/label.tsx +78 -78
- package/registry/components/menu.tsx +1091 -978
- 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/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 -937
- package/registry/components/sheet.tsx +305 -305
- package/registry/components/sidebar.tsx +1535 -1433
- 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/table-elements.tsx +287 -128
- package/registry/components/tabs.css +246 -222
- package/registry/components/tabs.tsx +245 -241
- package/registry/components/tag.tsx +423 -423
- package/registry/components/textarea.tsx +610 -610
- 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 -433
- package/registry/examples/alert-demo.tsx +34 -34
- package/registry/examples/alert-dialog-demo.tsx +42 -42
- package/registry/examples/app-header-demo.tsx +40 -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 -86
- 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-demo.tsx +18 -18
- 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 -65
- 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/input-actions-demo.tsx +36 -36
- 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 -547
- 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/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/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/tabs-demo.tsx +13 -13
- package/registry/examples/tag-demo.tsx +29 -29
- package/registry/examples/textarea-demo.tsx +79 -79
- 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/hooks/use-direction.ts +207 -207
- package/registry/index.json +387 -17
- package/registry/styles/globals.css +46 -0
- package/registry.json +24 -2
- package/schema/config.schema.json +51 -51
- package/schema/registry.schema.json +194 -194
- package/schema/tokens.schema.json +167 -167
- 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 -302
- package/src/cli/global-css.js +153 -153
- package/src/cli/index.js +1002 -1002
- 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 +184 -0
|
@@ -1,37 +1,37 @@
|
|
|
1
|
-
import { Progress } from "@/components/ui/progress"
|
|
2
|
-
|
|
3
|
-
export function ProgressDemo() {
|
|
4
|
-
return (
|
|
5
|
-
<div className="grid w-full max-w-md gap-[var(--bh-space-5xl-24)]">
|
|
6
|
-
<Progress
|
|
7
|
-
aria-label="Upload progress"
|
|
8
|
-
helperText="Preparing the final file"
|
|
9
|
-
label="Upload"
|
|
10
|
-
optional="(Optional)"
|
|
11
|
-
showInfo
|
|
12
|
-
showSpinner
|
|
13
|
-
value={40}
|
|
14
|
-
/>
|
|
15
|
-
|
|
16
|
-
<Progress
|
|
17
|
-
aria-label="Storage usage"
|
|
18
|
-
label="Storage"
|
|
19
|
-
labelPosition="bottom"
|
|
20
|
-
value={68}
|
|
21
|
-
/>
|
|
22
|
-
|
|
23
|
-
<div dir="rtl">
|
|
24
|
-
<Progress
|
|
25
|
-
aria-label="Arabic upload progress"
|
|
26
|
-
indicator="40%"
|
|
27
|
-
label={"\u0639\u0646\u0648\u0627\u0646"}
|
|
28
|
-
optional={"\u0028\u0627\u062e\u062a\u064a\u0627\u0631\u064a\u0029"}
|
|
29
|
-
showInfo
|
|
30
|
-
showSpinner
|
|
31
|
-
size="sm"
|
|
32
|
-
value={40}
|
|
33
|
-
/>
|
|
34
|
-
</div>
|
|
35
|
-
</div>
|
|
36
|
-
)
|
|
37
|
-
}
|
|
1
|
+
import { Progress } from "@/components/ui/progress"
|
|
2
|
+
|
|
3
|
+
export function ProgressDemo() {
|
|
4
|
+
return (
|
|
5
|
+
<div className="grid w-full max-w-md gap-[var(--bh-space-5xl-24)]">
|
|
6
|
+
<Progress
|
|
7
|
+
aria-label="Upload progress"
|
|
8
|
+
helperText="Preparing the final file"
|
|
9
|
+
label="Upload"
|
|
10
|
+
optional="(Optional)"
|
|
11
|
+
showInfo
|
|
12
|
+
showSpinner
|
|
13
|
+
value={40}
|
|
14
|
+
/>
|
|
15
|
+
|
|
16
|
+
<Progress
|
|
17
|
+
aria-label="Storage usage"
|
|
18
|
+
label="Storage"
|
|
19
|
+
labelPosition="bottom"
|
|
20
|
+
value={68}
|
|
21
|
+
/>
|
|
22
|
+
|
|
23
|
+
<div dir="rtl">
|
|
24
|
+
<Progress
|
|
25
|
+
aria-label="Arabic upload progress"
|
|
26
|
+
indicator="40%"
|
|
27
|
+
label={"\u0639\u0646\u0648\u0627\u0646"}
|
|
28
|
+
optional={"\u0028\u0627\u062e\u062a\u064a\u0627\u0631\u064a\u0029"}
|
|
29
|
+
showInfo
|
|
30
|
+
showSpinner
|
|
31
|
+
size="sm"
|
|
32
|
+
value={40}
|
|
33
|
+
/>
|
|
34
|
+
</div>
|
|
35
|
+
</div>
|
|
36
|
+
)
|
|
37
|
+
}
|
|
@@ -1,29 +1,29 @@
|
|
|
1
|
-
import { ProgressSlider } from "@/components/ui/progress-slider"
|
|
2
|
-
|
|
3
|
-
export function ProgressSliderDemo() {
|
|
4
|
-
return (
|
|
5
|
-
<div className="grid gap-[var(--bh-space-5xl-24)]">
|
|
6
|
-
<ProgressSlider
|
|
7
|
-
aria-label="Investment amount"
|
|
8
|
-
defaultValue={28}
|
|
9
|
-
showTicks
|
|
10
|
-
size="lg"
|
|
11
|
-
tone="brand"
|
|
12
|
-
/>
|
|
13
|
-
|
|
14
|
-
<ProgressSlider
|
|
15
|
-
aria-label="Savings progress"
|
|
16
|
-
defaultValue={62}
|
|
17
|
-
showTicks
|
|
18
|
-
tone="success"
|
|
19
|
-
/>
|
|
20
|
-
|
|
21
|
-
<ProgressSlider
|
|
22
|
-
aria-label="Disabled progress"
|
|
23
|
-
defaultValue={44}
|
|
24
|
-
disabled
|
|
25
|
-
tone="neutral"
|
|
26
|
-
/>
|
|
27
|
-
</div>
|
|
28
|
-
)
|
|
29
|
-
}
|
|
1
|
+
import { ProgressSlider } from "@/components/ui/progress-slider"
|
|
2
|
+
|
|
3
|
+
export function ProgressSliderDemo() {
|
|
4
|
+
return (
|
|
5
|
+
<div className="grid gap-[var(--bh-space-5xl-24)]">
|
|
6
|
+
<ProgressSlider
|
|
7
|
+
aria-label="Investment amount"
|
|
8
|
+
defaultValue={28}
|
|
9
|
+
showTicks
|
|
10
|
+
size="lg"
|
|
11
|
+
tone="brand"
|
|
12
|
+
/>
|
|
13
|
+
|
|
14
|
+
<ProgressSlider
|
|
15
|
+
aria-label="Savings progress"
|
|
16
|
+
defaultValue={62}
|
|
17
|
+
showTicks
|
|
18
|
+
tone="success"
|
|
19
|
+
/>
|
|
20
|
+
|
|
21
|
+
<ProgressSlider
|
|
22
|
+
aria-label="Disabled progress"
|
|
23
|
+
defaultValue={44}
|
|
24
|
+
disabled
|
|
25
|
+
tone="neutral"
|
|
26
|
+
/>
|
|
27
|
+
</div>
|
|
28
|
+
)
|
|
29
|
+
}
|
|
@@ -1,51 +1,51 @@
|
|
|
1
|
-
import { RadioCard } from "@/components/ui/radio-card"
|
|
2
|
-
|
|
3
|
-
const radioCardDemoProps = {
|
|
4
|
-
description: "checkbox card description",
|
|
5
|
-
label: "Label",
|
|
6
|
-
supportDescription: "Support Description",
|
|
7
|
-
supportLabel: "Support",
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
const radioCardRtlDemoProps = {
|
|
11
|
-
description:
|
|
12
|
-
"\u0648\u0635\u0641 \u0628\u0637\u0627\u0642\u0629 \u0645\u0631\u0628\u0639 \u0627\u0644\u0627\u062e\u062a\u064a\u0627\u0631",
|
|
13
|
-
label: "\u0627\u0644\u062a\u0633\u0645\u064a\u0629",
|
|
14
|
-
supportDescription: "\u0648\u0635\u0641 \u062f\u0627\u0639\u0645",
|
|
15
|
-
supportLabel: "\u062f\u0639\u0645",
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
export function RadioCardDemo() {
|
|
19
|
-
return (
|
|
20
|
-
<div className="grid gap-[var(--bh-space-5xl-24)]">
|
|
21
|
-
<div className="flex flex-wrap items-start gap-[var(--bh-space-3xl-16)]">
|
|
22
|
-
<RadioCard {...radioCardDemoProps} type="with-icon" />
|
|
23
|
-
<RadioCard {...radioCardDemoProps} type="icon-radio-right" />
|
|
24
|
-
<RadioCard {...radioCardDemoProps} type="icon-radio-left" />
|
|
25
|
-
<RadioCard {...radioCardDemoProps} type="radio-label" />
|
|
26
|
-
</div>
|
|
27
|
-
|
|
28
|
-
<div className="flex flex-wrap items-start gap-[var(--bh-space-3xl-16)]">
|
|
29
|
-
<RadioCard {...radioCardDemoProps} checked type="with-avatar" />
|
|
30
|
-
<RadioCard {...radioCardDemoProps} checked type="payment" />
|
|
31
|
-
<RadioCard {...radioCardDemoProps} checked type="company-icon" />
|
|
32
|
-
</div>
|
|
33
|
-
|
|
34
|
-
<div className="flex flex-wrap items-start gap-[var(--bh-space-3xl-16)]" dir="rtl">
|
|
35
|
-
<RadioCard {...radioCardRtlDemoProps} direction="rtl" type="with-icon" />
|
|
36
|
-
<RadioCard
|
|
37
|
-
{...radioCardRtlDemoProps}
|
|
38
|
-
checked
|
|
39
|
-
direction="rtl"
|
|
40
|
-
type="payment"
|
|
41
|
-
/>
|
|
42
|
-
<RadioCard
|
|
43
|
-
{...radioCardRtlDemoProps}
|
|
44
|
-
disabled
|
|
45
|
-
direction="rtl"
|
|
46
|
-
type="company-icon"
|
|
47
|
-
/>
|
|
48
|
-
</div>
|
|
49
|
-
</div>
|
|
50
|
-
)
|
|
51
|
-
}
|
|
1
|
+
import { RadioCard } from "@/components/ui/radio-card"
|
|
2
|
+
|
|
3
|
+
const radioCardDemoProps = {
|
|
4
|
+
description: "checkbox card description",
|
|
5
|
+
label: "Label",
|
|
6
|
+
supportDescription: "Support Description",
|
|
7
|
+
supportLabel: "Support",
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
const radioCardRtlDemoProps = {
|
|
11
|
+
description:
|
|
12
|
+
"\u0648\u0635\u0641 \u0628\u0637\u0627\u0642\u0629 \u0645\u0631\u0628\u0639 \u0627\u0644\u0627\u062e\u062a\u064a\u0627\u0631",
|
|
13
|
+
label: "\u0627\u0644\u062a\u0633\u0645\u064a\u0629",
|
|
14
|
+
supportDescription: "\u0648\u0635\u0641 \u062f\u0627\u0639\u0645",
|
|
15
|
+
supportLabel: "\u062f\u0639\u0645",
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export function RadioCardDemo() {
|
|
19
|
+
return (
|
|
20
|
+
<div className="grid gap-[var(--bh-space-5xl-24)]">
|
|
21
|
+
<div className="flex flex-wrap items-start gap-[var(--bh-space-3xl-16)]">
|
|
22
|
+
<RadioCard {...radioCardDemoProps} type="with-icon" />
|
|
23
|
+
<RadioCard {...radioCardDemoProps} type="icon-radio-right" />
|
|
24
|
+
<RadioCard {...radioCardDemoProps} type="icon-radio-left" />
|
|
25
|
+
<RadioCard {...radioCardDemoProps} type="radio-label" />
|
|
26
|
+
</div>
|
|
27
|
+
|
|
28
|
+
<div className="flex flex-wrap items-start gap-[var(--bh-space-3xl-16)]">
|
|
29
|
+
<RadioCard {...radioCardDemoProps} checked type="with-avatar" />
|
|
30
|
+
<RadioCard {...radioCardDemoProps} checked type="payment" />
|
|
31
|
+
<RadioCard {...radioCardDemoProps} checked type="company-icon" />
|
|
32
|
+
</div>
|
|
33
|
+
|
|
34
|
+
<div className="flex flex-wrap items-start gap-[var(--bh-space-3xl-16)]" dir="rtl">
|
|
35
|
+
<RadioCard {...radioCardRtlDemoProps} direction="rtl" type="with-icon" />
|
|
36
|
+
<RadioCard
|
|
37
|
+
{...radioCardRtlDemoProps}
|
|
38
|
+
checked
|
|
39
|
+
direction="rtl"
|
|
40
|
+
type="payment"
|
|
41
|
+
/>
|
|
42
|
+
<RadioCard
|
|
43
|
+
{...radioCardRtlDemoProps}
|
|
44
|
+
disabled
|
|
45
|
+
direction="rtl"
|
|
46
|
+
type="company-icon"
|
|
47
|
+
/>
|
|
48
|
+
</div>
|
|
49
|
+
</div>
|
|
50
|
+
)
|
|
51
|
+
}
|
|
@@ -1,62 +1,62 @@
|
|
|
1
|
-
import {
|
|
2
|
-
RadioField,
|
|
3
|
-
RadioGroup,
|
|
4
|
-
RadioGroupItem,
|
|
5
|
-
} from "@/components/ui/radio-group"
|
|
6
|
-
|
|
7
|
-
export function RadioGroupDemo() {
|
|
8
|
-
return (
|
|
9
|
-
<div className="grid gap-[var(--bh-space-5xl-24)]">
|
|
10
|
-
<RadioGroup
|
|
11
|
-
defaultValue="monthly"
|
|
12
|
-
description="Choose the cadence for generated invoices."
|
|
13
|
-
label="Billing cadence"
|
|
14
|
-
name="billing-cadence"
|
|
15
|
-
>
|
|
16
|
-
<RadioGroupItem
|
|
17
|
-
value="monthly"
|
|
18
|
-
label="Monthly"
|
|
19
|
-
description="Send one invoice every calendar month."
|
|
20
|
-
/>
|
|
21
|
-
<RadioGroupItem
|
|
22
|
-
value="quarterly"
|
|
23
|
-
label="Quarterly"
|
|
24
|
-
description="Collect three months into a single invoice."
|
|
25
|
-
/>
|
|
26
|
-
<RadioGroupItem
|
|
27
|
-
disabled
|
|
28
|
-
value="annual"
|
|
29
|
-
label="Annual"
|
|
30
|
-
description="Requires an active enterprise agreement."
|
|
31
|
-
/>
|
|
32
|
-
</RadioGroup>
|
|
33
|
-
|
|
34
|
-
<RadioGroup
|
|
35
|
-
defaultValue="card"
|
|
36
|
-
label="Payment method"
|
|
37
|
-
name="payment-method"
|
|
38
|
-
orientation="horizontal"
|
|
39
|
-
>
|
|
40
|
-
<RadioGroupItem value="card" label="Card" />
|
|
41
|
-
<RadioGroupItem value="bank" label="Bank transfer" />
|
|
42
|
-
<RadioGroupItem value="wallet" label="Wallet" />
|
|
43
|
-
</RadioGroup>
|
|
44
|
-
|
|
45
|
-
<div className="grid gap-[var(--bh-space-xl-12)]">
|
|
46
|
-
<RadioField
|
|
47
|
-
defaultChecked
|
|
48
|
-
label="Use as default"
|
|
49
|
-
name="default-method"
|
|
50
|
-
value="default"
|
|
51
|
-
/>
|
|
52
|
-
<RadioField
|
|
53
|
-
controlPosition="end"
|
|
54
|
-
description="Use the same account for refunds and future charges."
|
|
55
|
-
label="Keep account on file"
|
|
56
|
-
name="account-storage"
|
|
57
|
-
value="stored"
|
|
58
|
-
/>
|
|
59
|
-
</div>
|
|
60
|
-
</div>
|
|
61
|
-
)
|
|
62
|
-
}
|
|
1
|
+
import {
|
|
2
|
+
RadioField,
|
|
3
|
+
RadioGroup,
|
|
4
|
+
RadioGroupItem,
|
|
5
|
+
} from "@/components/ui/radio-group"
|
|
6
|
+
|
|
7
|
+
export function RadioGroupDemo() {
|
|
8
|
+
return (
|
|
9
|
+
<div className="grid gap-[var(--bh-space-5xl-24)]">
|
|
10
|
+
<RadioGroup
|
|
11
|
+
defaultValue="monthly"
|
|
12
|
+
description="Choose the cadence for generated invoices."
|
|
13
|
+
label="Billing cadence"
|
|
14
|
+
name="billing-cadence"
|
|
15
|
+
>
|
|
16
|
+
<RadioGroupItem
|
|
17
|
+
value="monthly"
|
|
18
|
+
label="Monthly"
|
|
19
|
+
description="Send one invoice every calendar month."
|
|
20
|
+
/>
|
|
21
|
+
<RadioGroupItem
|
|
22
|
+
value="quarterly"
|
|
23
|
+
label="Quarterly"
|
|
24
|
+
description="Collect three months into a single invoice."
|
|
25
|
+
/>
|
|
26
|
+
<RadioGroupItem
|
|
27
|
+
disabled
|
|
28
|
+
value="annual"
|
|
29
|
+
label="Annual"
|
|
30
|
+
description="Requires an active enterprise agreement."
|
|
31
|
+
/>
|
|
32
|
+
</RadioGroup>
|
|
33
|
+
|
|
34
|
+
<RadioGroup
|
|
35
|
+
defaultValue="card"
|
|
36
|
+
label="Payment method"
|
|
37
|
+
name="payment-method"
|
|
38
|
+
orientation="horizontal"
|
|
39
|
+
>
|
|
40
|
+
<RadioGroupItem value="card" label="Card" />
|
|
41
|
+
<RadioGroupItem value="bank" label="Bank transfer" />
|
|
42
|
+
<RadioGroupItem value="wallet" label="Wallet" />
|
|
43
|
+
</RadioGroup>
|
|
44
|
+
|
|
45
|
+
<div className="grid gap-[var(--bh-space-xl-12)]">
|
|
46
|
+
<RadioField
|
|
47
|
+
defaultChecked
|
|
48
|
+
label="Use as default"
|
|
49
|
+
name="default-method"
|
|
50
|
+
value="default"
|
|
51
|
+
/>
|
|
52
|
+
<RadioField
|
|
53
|
+
controlPosition="end"
|
|
54
|
+
description="Use the same account for refunds and future charges."
|
|
55
|
+
label="Keep account on file"
|
|
56
|
+
name="account-storage"
|
|
57
|
+
value="stored"
|
|
58
|
+
/>
|
|
59
|
+
</div>
|
|
60
|
+
</div>
|
|
61
|
+
)
|
|
62
|
+
}
|
|
@@ -1,22 +1,22 @@
|
|
|
1
|
-
import {
|
|
2
|
-
ResizableHandle,
|
|
3
|
-
ResizablePanel,
|
|
4
|
-
ResizablePanelGroup,
|
|
5
|
-
} from "@/components/ui/resizable"
|
|
6
|
-
|
|
7
|
-
export function ResizableDemo() {
|
|
8
|
-
return (
|
|
9
|
-
<ResizablePanelGroup
|
|
10
|
-
direction="horizontal"
|
|
11
|
-
className="h-[var(--bh-space-14xl-192)] rounded-xl border border-[var(--bh-border-subtle)]"
|
|
12
|
-
>
|
|
13
|
-
<ResizablePanel defaultSize={35}>
|
|
14
|
-
<div className="flex size-full items-center justify-center text-sm">Sidebar</div>
|
|
15
|
-
</ResizablePanel>
|
|
16
|
-
<ResizableHandle withHandle />
|
|
17
|
-
<ResizablePanel defaultSize={65}>
|
|
18
|
-
<div className="flex size-full items-center justify-center text-sm">Content</div>
|
|
19
|
-
</ResizablePanel>
|
|
20
|
-
</ResizablePanelGroup>
|
|
21
|
-
)
|
|
22
|
-
}
|
|
1
|
+
import {
|
|
2
|
+
ResizableHandle,
|
|
3
|
+
ResizablePanel,
|
|
4
|
+
ResizablePanelGroup,
|
|
5
|
+
} from "@/components/ui/resizable"
|
|
6
|
+
|
|
7
|
+
export function ResizableDemo() {
|
|
8
|
+
return (
|
|
9
|
+
<ResizablePanelGroup
|
|
10
|
+
direction="horizontal"
|
|
11
|
+
className="h-[var(--bh-space-14xl-192)] rounded-xl border border-[var(--bh-border-subtle)]"
|
|
12
|
+
>
|
|
13
|
+
<ResizablePanel defaultSize={35}>
|
|
14
|
+
<div className="flex size-full items-center justify-center text-sm">Sidebar</div>
|
|
15
|
+
</ResizablePanel>
|
|
16
|
+
<ResizableHandle withHandle />
|
|
17
|
+
<ResizablePanel defaultSize={65}>
|
|
18
|
+
<div className="flex size-full items-center justify-center text-sm">Content</div>
|
|
19
|
+
</ResizablePanel>
|
|
20
|
+
</ResizablePanelGroup>
|
|
21
|
+
)
|
|
22
|
+
}
|
|
@@ -1,44 +1,44 @@
|
|
|
1
|
-
import {
|
|
2
|
-
SegmentedControl,
|
|
3
|
-
SegmentedControlItem,
|
|
4
|
-
SegmentedControlLabel,
|
|
5
|
-
} from "@/components/ui/segmented-control"
|
|
6
|
-
import {
|
|
7
|
-
Toolbar,
|
|
8
|
-
ToolbarButton,
|
|
9
|
-
ToolbarSection,
|
|
10
|
-
ToolbarText,
|
|
11
|
-
} from "@/components/ui/toolbar"
|
|
12
|
-
|
|
13
|
-
export function ResultsToolbarDemo() {
|
|
14
|
-
return (
|
|
15
|
-
<Toolbar
|
|
16
|
-
aria-label="Bookmark results"
|
|
17
|
-
data-recipe="results-toolbar"
|
|
18
|
-
layout="split"
|
|
19
|
-
wrap
|
|
20
|
-
>
|
|
21
|
-
<ToolbarText density="default">
|
|
22
|
-
<strong>5,371</strong> bookmarks · keep scrolling to browse all
|
|
23
|
-
</ToolbarText>
|
|
24
|
-
|
|
25
|
-
<ToolbarSection align="end" wrap>
|
|
26
|
-
<SegmentedControl
|
|
27
|
-
aria-label="Cards per row"
|
|
28
|
-
defaultValue="4"
|
|
29
|
-
density="default"
|
|
30
|
-
>
|
|
31
|
-
<SegmentedControlLabel>Cards / row</SegmentedControlLabel>
|
|
32
|
-
{[3, 4, 5, 6].map((count) => (
|
|
33
|
-
<SegmentedControlItem key={count} value={String(count)}>
|
|
34
|
-
{count}
|
|
35
|
-
</SegmentedControlItem>
|
|
36
|
-
))}
|
|
37
|
-
</SegmentedControl>
|
|
38
|
-
<ToolbarButton density="default" variant="outline">
|
|
39
|
-
Select
|
|
40
|
-
</ToolbarButton>
|
|
41
|
-
</ToolbarSection>
|
|
42
|
-
</Toolbar>
|
|
43
|
-
)
|
|
44
|
-
}
|
|
1
|
+
import {
|
|
2
|
+
SegmentedControl,
|
|
3
|
+
SegmentedControlItem,
|
|
4
|
+
SegmentedControlLabel,
|
|
5
|
+
} from "@/components/ui/segmented-control"
|
|
6
|
+
import {
|
|
7
|
+
Toolbar,
|
|
8
|
+
ToolbarButton,
|
|
9
|
+
ToolbarSection,
|
|
10
|
+
ToolbarText,
|
|
11
|
+
} from "@/components/ui/toolbar"
|
|
12
|
+
|
|
13
|
+
export function ResultsToolbarDemo() {
|
|
14
|
+
return (
|
|
15
|
+
<Toolbar
|
|
16
|
+
aria-label="Bookmark results"
|
|
17
|
+
data-recipe="results-toolbar"
|
|
18
|
+
layout="split"
|
|
19
|
+
wrap
|
|
20
|
+
>
|
|
21
|
+
<ToolbarText density="default">
|
|
22
|
+
<strong>5,371</strong> bookmarks · keep scrolling to browse all
|
|
23
|
+
</ToolbarText>
|
|
24
|
+
|
|
25
|
+
<ToolbarSection align="end" wrap>
|
|
26
|
+
<SegmentedControl
|
|
27
|
+
aria-label="Cards per row"
|
|
28
|
+
defaultValue="4"
|
|
29
|
+
density="default"
|
|
30
|
+
>
|
|
31
|
+
<SegmentedControlLabel>Cards / row</SegmentedControlLabel>
|
|
32
|
+
{[3, 4, 5, 6].map((count) => (
|
|
33
|
+
<SegmentedControlItem key={count} value={String(count)}>
|
|
34
|
+
{count}
|
|
35
|
+
</SegmentedControlItem>
|
|
36
|
+
))}
|
|
37
|
+
</SegmentedControl>
|
|
38
|
+
<ToolbarButton density="default" variant="outline">
|
|
39
|
+
Select
|
|
40
|
+
</ToolbarButton>
|
|
41
|
+
</ToolbarSection>
|
|
42
|
+
</Toolbar>
|
|
43
|
+
)
|
|
44
|
+
}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import { ScrollArea } from "@/components/ui/scroll-area"
|
|
2
|
-
|
|
3
|
-
export function ScrollAreaDemo() {
|
|
4
|
-
return (
|
|
5
|
-
<ScrollArea className="h-[var(--bh-space-14xl-192)] w-[var(--bh-space-17xl-288)] rounded-xl border border-[var(--bh-border-subtle)] bg-[var(--bh-bg-raised)]">
|
|
6
|
-
<div className="grid gap-[var(--bh-space-md-8)] p-[var(--bh-space-3xl-16)]">
|
|
7
|
-
{Array.from({ length: 12 }, (_, index) => (
|
|
8
|
-
<div key={index} className="rounded-lg bg-[var(--bh-bg-neutral-subtle)] px-[var(--bh-space-xl-12)] py-[var(--bh-space-md-8)] text-sm">
|
|
9
|
-
Activity item {index + 1}
|
|
10
|
-
</div>
|
|
11
|
-
))}
|
|
12
|
-
</div>
|
|
13
|
-
</ScrollArea>
|
|
14
|
-
)
|
|
15
|
-
}
|
|
1
|
+
import { ScrollArea } from "@/components/ui/scroll-area"
|
|
2
|
+
|
|
3
|
+
export function ScrollAreaDemo() {
|
|
4
|
+
return (
|
|
5
|
+
<ScrollArea className="h-[var(--bh-space-14xl-192)] w-[var(--bh-space-17xl-288)] rounded-xl border border-[var(--bh-border-subtle)] bg-[var(--bh-bg-raised)]">
|
|
6
|
+
<div className="grid gap-[var(--bh-space-md-8)] p-[var(--bh-space-3xl-16)]">
|
|
7
|
+
{Array.from({ length: 12 }, (_, index) => (
|
|
8
|
+
<div key={index} className="rounded-lg bg-[var(--bh-bg-neutral-subtle)] px-[var(--bh-space-xl-12)] py-[var(--bh-space-md-8)] text-sm">
|
|
9
|
+
Activity item {index + 1}
|
|
10
|
+
</div>
|
|
11
|
+
))}
|
|
12
|
+
</div>
|
|
13
|
+
</ScrollArea>
|
|
14
|
+
)
|
|
15
|
+
}
|
|
@@ -1,39 +1,39 @@
|
|
|
1
|
-
import {
|
|
2
|
-
SegmentedControl,
|
|
3
|
-
SegmentedControlItem,
|
|
4
|
-
SegmentedControlLabel,
|
|
5
|
-
} from "@/components/ui/segmented-control"
|
|
6
|
-
|
|
7
|
-
export function SegmentedControlDemo() {
|
|
8
|
-
return (
|
|
9
|
-
<div className="grid gap-[var(--bh-space-3xl-16)]">
|
|
10
|
-
<SegmentedControl
|
|
11
|
-
aria-label="Cards per row"
|
|
12
|
-
defaultValue="4"
|
|
13
|
-
density="default"
|
|
14
|
-
>
|
|
15
|
-
<SegmentedControlLabel>Cards / row</SegmentedControlLabel>
|
|
16
|
-
{[3, 4, 5, 6].map((count) => (
|
|
17
|
-
<SegmentedControlItem key={count} value={String(count)}>
|
|
18
|
-
{count}
|
|
19
|
-
</SegmentedControlItem>
|
|
20
|
-
))}
|
|
21
|
-
</SegmentedControl>
|
|
22
|
-
|
|
23
|
-
<div dir="rtl">
|
|
24
|
-
<SegmentedControl
|
|
25
|
-
aria-label="عدد البطاقات في الصف"
|
|
26
|
-
defaultValue="4"
|
|
27
|
-
density="compact"
|
|
28
|
-
>
|
|
29
|
-
<SegmentedControlLabel>بطاقات / صف</SegmentedControlLabel>
|
|
30
|
-
{[3, 4, 5, 6].map((count) => (
|
|
31
|
-
<SegmentedControlItem key={count} value={String(count)}>
|
|
32
|
-
{count}
|
|
33
|
-
</SegmentedControlItem>
|
|
34
|
-
))}
|
|
35
|
-
</SegmentedControl>
|
|
36
|
-
</div>
|
|
37
|
-
</div>
|
|
38
|
-
)
|
|
39
|
-
}
|
|
1
|
+
import {
|
|
2
|
+
SegmentedControl,
|
|
3
|
+
SegmentedControlItem,
|
|
4
|
+
SegmentedControlLabel,
|
|
5
|
+
} from "@/components/ui/segmented-control"
|
|
6
|
+
|
|
7
|
+
export function SegmentedControlDemo() {
|
|
8
|
+
return (
|
|
9
|
+
<div className="grid gap-[var(--bh-space-3xl-16)]">
|
|
10
|
+
<SegmentedControl
|
|
11
|
+
aria-label="Cards per row"
|
|
12
|
+
defaultValue="4"
|
|
13
|
+
density="default"
|
|
14
|
+
>
|
|
15
|
+
<SegmentedControlLabel>Cards / row</SegmentedControlLabel>
|
|
16
|
+
{[3, 4, 5, 6].map((count) => (
|
|
17
|
+
<SegmentedControlItem key={count} value={String(count)}>
|
|
18
|
+
{count}
|
|
19
|
+
</SegmentedControlItem>
|
|
20
|
+
))}
|
|
21
|
+
</SegmentedControl>
|
|
22
|
+
|
|
23
|
+
<div dir="rtl">
|
|
24
|
+
<SegmentedControl
|
|
25
|
+
aria-label="عدد البطاقات في الصف"
|
|
26
|
+
defaultValue="4"
|
|
27
|
+
density="compact"
|
|
28
|
+
>
|
|
29
|
+
<SegmentedControlLabel>بطاقات / صف</SegmentedControlLabel>
|
|
30
|
+
{[3, 4, 5, 6].map((count) => (
|
|
31
|
+
<SegmentedControlItem key={count} value={String(count)}>
|
|
32
|
+
{count}
|
|
33
|
+
</SegmentedControlItem>
|
|
34
|
+
))}
|
|
35
|
+
</SegmentedControl>
|
|
36
|
+
</div>
|
|
37
|
+
</div>
|
|
38
|
+
)
|
|
39
|
+
}
|