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,127 +1,127 @@
|
|
|
1
|
-
import {
|
|
2
|
-
Calendar,
|
|
3
|
-
DatePicker,
|
|
4
|
-
DateRangePicker,
|
|
5
|
-
RangeCalendar,
|
|
6
|
-
type CalendarRange,
|
|
7
|
-
} from "@/components/ui/date-picker"
|
|
8
|
-
|
|
9
|
-
const selectedDate = new Date(2050, 6, 18)
|
|
10
|
-
const selectedRange: CalendarRange = {
|
|
11
|
-
from: new Date(2050, 6, 15),
|
|
12
|
-
to: new Date(2050, 7, 23),
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
const staticPopoverClassName =
|
|
16
|
-
"static left-auto top-auto mt-[var(--bh-space-md-8)] translate-x-0"
|
|
17
|
-
const datePickerClassName =
|
|
18
|
-
"w-[var(--bh-date-surface-width-picker)] max-w-full"
|
|
19
|
-
const dateRangePickerClassName = "w-max max-w-none"
|
|
20
|
-
|
|
21
|
-
export function DatePickerDemo() {
|
|
22
|
-
return (
|
|
23
|
-
<div className="grid gap-[var(--bh-space-6xl-32)]">
|
|
24
|
-
<div className="grid gap-[var(--bh-space-5xl-24)] lg:grid-cols-[repeat(auto-fit,minmax(calc(var(--bh-space-16xl-256)_+_var(--bh-space-xs-4)),max-content))]">
|
|
25
|
-
<div data-date-demo-item>
|
|
26
|
-
<Calendar value={selectedDate} />
|
|
27
|
-
</div>
|
|
28
|
-
<div data-date-demo-item>
|
|
29
|
-
<Calendar view="month-year" value={selectedDate} />
|
|
30
|
-
</div>
|
|
31
|
-
</div>
|
|
32
|
-
|
|
33
|
-
<div className="grid gap-[var(--bh-space-5xl-24)] xl:grid-cols-2">
|
|
34
|
-
<div data-date-demo-item>
|
|
35
|
-
<DatePicker
|
|
36
|
-
calendarProps={{ className: staticPopoverClassName }}
|
|
37
|
-
className={datePickerClassName}
|
|
38
|
-
defaultValue={selectedDate}
|
|
39
|
-
/>
|
|
40
|
-
</div>
|
|
41
|
-
<div data-date-demo-item dir="rtl">
|
|
42
|
-
<DatePicker
|
|
43
|
-
calendarProps={{ className: staticPopoverClassName }}
|
|
44
|
-
className={datePickerClassName}
|
|
45
|
-
dir="rtl"
|
|
46
|
-
placeholder={"\u0627\u062e\u062a\u0631 \u062a\u0627\u0631\u064a\u062e"}
|
|
47
|
-
/>
|
|
48
|
-
</div>
|
|
49
|
-
</div>
|
|
50
|
-
|
|
51
|
-
<div className="grid gap-[var(--bh-space-5xl-24)] xl:grid-cols-2">
|
|
52
|
-
<div data-date-demo-item>
|
|
53
|
-
<DatePicker
|
|
54
|
-
calendarProps={{ className: staticPopoverClassName }}
|
|
55
|
-
className={datePickerClassName}
|
|
56
|
-
defaultOpen
|
|
57
|
-
defaultValue={selectedDate}
|
|
58
|
-
/>
|
|
59
|
-
</div>
|
|
60
|
-
<div data-date-demo-item dir="rtl">
|
|
61
|
-
<DatePicker
|
|
62
|
-
calendarProps={{ className: staticPopoverClassName }}
|
|
63
|
-
className={datePickerClassName}
|
|
64
|
-
defaultOpen
|
|
65
|
-
defaultValue={selectedDate}
|
|
66
|
-
dir="rtl"
|
|
67
|
-
placeholder={"\u0627\u062e\u062a\u0631 \u062a\u0627\u0631\u064a\u062e"}
|
|
68
|
-
/>
|
|
69
|
-
</div>
|
|
70
|
-
</div>
|
|
71
|
-
|
|
72
|
-
<div className="grid gap-[var(--bh-space-5xl-24)] overflow-x-auto">
|
|
73
|
-
<div data-date-demo-item>
|
|
74
|
-
<RangeCalendar value={selectedRange} />
|
|
75
|
-
</div>
|
|
76
|
-
<div data-date-demo-item>
|
|
77
|
-
<RangeCalendar type="double-with-presets" value={selectedRange} />
|
|
78
|
-
</div>
|
|
79
|
-
<div data-date-demo-item>
|
|
80
|
-
<RangeCalendar type="single" value={selectedRange} />
|
|
81
|
-
</div>
|
|
82
|
-
</div>
|
|
83
|
-
|
|
84
|
-
<div className="grid gap-[var(--bh-space-5xl-24)] xl:grid-cols-2">
|
|
85
|
-
<div data-date-demo-item className="overflow-x-auto pb-[var(--bh-space-md-8)]">
|
|
86
|
-
<DateRangePicker
|
|
87
|
-
calendarProps={{ className: staticPopoverClassName }}
|
|
88
|
-
className={dateRangePickerClassName}
|
|
89
|
-
value={selectedRange}
|
|
90
|
-
/>
|
|
91
|
-
</div>
|
|
92
|
-
<div data-date-demo-item className="overflow-x-auto pb-[var(--bh-space-md-8)]" dir="rtl">
|
|
93
|
-
<DateRangePicker
|
|
94
|
-
calendarProps={{ className: staticPopoverClassName }}
|
|
95
|
-
className={dateRangePickerClassName}
|
|
96
|
-
dir="rtl"
|
|
97
|
-
placeholder={"\u0627\u062e\u062a\u0631 \u0646\u0637\u0627\u0642 \u0627\u0644\u062a\u0627\u0631\u064a\u062e"}
|
|
98
|
-
value={selectedRange}
|
|
99
|
-
/>
|
|
100
|
-
</div>
|
|
101
|
-
</div>
|
|
102
|
-
|
|
103
|
-
<div className="grid gap-[var(--bh-space-5xl-24)]">
|
|
104
|
-
<div data-date-demo-item className="overflow-x-auto pb-[var(--bh-space-md-8)]">
|
|
105
|
-
<DateRangePicker
|
|
106
|
-
calendarProps={{ className: staticPopoverClassName }}
|
|
107
|
-
className={dateRangePickerClassName}
|
|
108
|
-
defaultOpen
|
|
109
|
-
type="double-with-presets"
|
|
110
|
-
value={selectedRange}
|
|
111
|
-
/>
|
|
112
|
-
</div>
|
|
113
|
-
<div data-date-demo-item className="overflow-x-auto pb-[var(--bh-space-md-8)]" dir="rtl">
|
|
114
|
-
<DateRangePicker
|
|
115
|
-
calendarProps={{ className: staticPopoverClassName }}
|
|
116
|
-
className={dateRangePickerClassName}
|
|
117
|
-
defaultOpen
|
|
118
|
-
dir="rtl"
|
|
119
|
-
placeholder={"\u064a\u0648\u0645 / \u0634\u0647\u0631 / \u0633\u0646\u0629"}
|
|
120
|
-
type="double-with-presets"
|
|
121
|
-
value={selectedRange}
|
|
122
|
-
/>
|
|
123
|
-
</div>
|
|
124
|
-
</div>
|
|
125
|
-
</div>
|
|
126
|
-
)
|
|
127
|
-
}
|
|
1
|
+
import {
|
|
2
|
+
Calendar,
|
|
3
|
+
DatePicker,
|
|
4
|
+
DateRangePicker,
|
|
5
|
+
RangeCalendar,
|
|
6
|
+
type CalendarRange,
|
|
7
|
+
} from "@/components/ui/date-picker"
|
|
8
|
+
|
|
9
|
+
const selectedDate = new Date(2050, 6, 18)
|
|
10
|
+
const selectedRange: CalendarRange = {
|
|
11
|
+
from: new Date(2050, 6, 15),
|
|
12
|
+
to: new Date(2050, 7, 23),
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
const staticPopoverClassName =
|
|
16
|
+
"static left-auto top-auto mt-[var(--bh-space-md-8)] translate-x-0"
|
|
17
|
+
const datePickerClassName =
|
|
18
|
+
"w-[var(--bh-date-surface-width-picker)] max-w-full"
|
|
19
|
+
const dateRangePickerClassName = "w-max max-w-none"
|
|
20
|
+
|
|
21
|
+
export function DatePickerDemo() {
|
|
22
|
+
return (
|
|
23
|
+
<div className="grid gap-[var(--bh-space-6xl-32)]">
|
|
24
|
+
<div className="grid gap-[var(--bh-space-5xl-24)] lg:grid-cols-[repeat(auto-fit,minmax(calc(var(--bh-space-16xl-256)_+_var(--bh-space-xs-4)),max-content))]">
|
|
25
|
+
<div data-date-demo-item>
|
|
26
|
+
<Calendar value={selectedDate} />
|
|
27
|
+
</div>
|
|
28
|
+
<div data-date-demo-item>
|
|
29
|
+
<Calendar view="month-year" value={selectedDate} />
|
|
30
|
+
</div>
|
|
31
|
+
</div>
|
|
32
|
+
|
|
33
|
+
<div className="grid gap-[var(--bh-space-5xl-24)] xl:grid-cols-2">
|
|
34
|
+
<div data-date-demo-item>
|
|
35
|
+
<DatePicker
|
|
36
|
+
calendarProps={{ className: staticPopoverClassName }}
|
|
37
|
+
className={datePickerClassName}
|
|
38
|
+
defaultValue={selectedDate}
|
|
39
|
+
/>
|
|
40
|
+
</div>
|
|
41
|
+
<div data-date-demo-item dir="rtl">
|
|
42
|
+
<DatePicker
|
|
43
|
+
calendarProps={{ className: staticPopoverClassName }}
|
|
44
|
+
className={datePickerClassName}
|
|
45
|
+
dir="rtl"
|
|
46
|
+
placeholder={"\u0627\u062e\u062a\u0631 \u062a\u0627\u0631\u064a\u062e"}
|
|
47
|
+
/>
|
|
48
|
+
</div>
|
|
49
|
+
</div>
|
|
50
|
+
|
|
51
|
+
<div className="grid gap-[var(--bh-space-5xl-24)] xl:grid-cols-2">
|
|
52
|
+
<div data-date-demo-item>
|
|
53
|
+
<DatePicker
|
|
54
|
+
calendarProps={{ className: staticPopoverClassName }}
|
|
55
|
+
className={datePickerClassName}
|
|
56
|
+
defaultOpen
|
|
57
|
+
defaultValue={selectedDate}
|
|
58
|
+
/>
|
|
59
|
+
</div>
|
|
60
|
+
<div data-date-demo-item dir="rtl">
|
|
61
|
+
<DatePicker
|
|
62
|
+
calendarProps={{ className: staticPopoverClassName }}
|
|
63
|
+
className={datePickerClassName}
|
|
64
|
+
defaultOpen
|
|
65
|
+
defaultValue={selectedDate}
|
|
66
|
+
dir="rtl"
|
|
67
|
+
placeholder={"\u0627\u062e\u062a\u0631 \u062a\u0627\u0631\u064a\u062e"}
|
|
68
|
+
/>
|
|
69
|
+
</div>
|
|
70
|
+
</div>
|
|
71
|
+
|
|
72
|
+
<div className="grid gap-[var(--bh-space-5xl-24)] overflow-x-auto">
|
|
73
|
+
<div data-date-demo-item>
|
|
74
|
+
<RangeCalendar value={selectedRange} />
|
|
75
|
+
</div>
|
|
76
|
+
<div data-date-demo-item>
|
|
77
|
+
<RangeCalendar type="double-with-presets" value={selectedRange} />
|
|
78
|
+
</div>
|
|
79
|
+
<div data-date-demo-item>
|
|
80
|
+
<RangeCalendar type="single" value={selectedRange} />
|
|
81
|
+
</div>
|
|
82
|
+
</div>
|
|
83
|
+
|
|
84
|
+
<div className="grid gap-[var(--bh-space-5xl-24)] xl:grid-cols-2">
|
|
85
|
+
<div data-date-demo-item className="overflow-x-auto pb-[var(--bh-space-md-8)]">
|
|
86
|
+
<DateRangePicker
|
|
87
|
+
calendarProps={{ className: staticPopoverClassName }}
|
|
88
|
+
className={dateRangePickerClassName}
|
|
89
|
+
value={selectedRange}
|
|
90
|
+
/>
|
|
91
|
+
</div>
|
|
92
|
+
<div data-date-demo-item className="overflow-x-auto pb-[var(--bh-space-md-8)]" dir="rtl">
|
|
93
|
+
<DateRangePicker
|
|
94
|
+
calendarProps={{ className: staticPopoverClassName }}
|
|
95
|
+
className={dateRangePickerClassName}
|
|
96
|
+
dir="rtl"
|
|
97
|
+
placeholder={"\u0627\u062e\u062a\u0631 \u0646\u0637\u0627\u0642 \u0627\u0644\u062a\u0627\u0631\u064a\u062e"}
|
|
98
|
+
value={selectedRange}
|
|
99
|
+
/>
|
|
100
|
+
</div>
|
|
101
|
+
</div>
|
|
102
|
+
|
|
103
|
+
<div className="grid gap-[var(--bh-space-5xl-24)]">
|
|
104
|
+
<div data-date-demo-item className="overflow-x-auto pb-[var(--bh-space-md-8)]">
|
|
105
|
+
<DateRangePicker
|
|
106
|
+
calendarProps={{ className: staticPopoverClassName }}
|
|
107
|
+
className={dateRangePickerClassName}
|
|
108
|
+
defaultOpen
|
|
109
|
+
type="double-with-presets"
|
|
110
|
+
value={selectedRange}
|
|
111
|
+
/>
|
|
112
|
+
</div>
|
|
113
|
+
<div data-date-demo-item className="overflow-x-auto pb-[var(--bh-space-md-8)]" dir="rtl">
|
|
114
|
+
<DateRangePicker
|
|
115
|
+
calendarProps={{ className: staticPopoverClassName }}
|
|
116
|
+
className={dateRangePickerClassName}
|
|
117
|
+
defaultOpen
|
|
118
|
+
dir="rtl"
|
|
119
|
+
placeholder={"\u064a\u0648\u0645 / \u0634\u0647\u0631 / \u0633\u0646\u0629"}
|
|
120
|
+
type="double-with-presets"
|
|
121
|
+
value={selectedRange}
|
|
122
|
+
/>
|
|
123
|
+
</div>
|
|
124
|
+
</div>
|
|
125
|
+
</div>
|
|
126
|
+
)
|
|
127
|
+
}
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
import { Divider } from "@/components/ui/divider"
|
|
2
|
-
|
|
3
|
-
export function DividerDemo() {
|
|
4
|
-
return (
|
|
5
|
-
<div className="grid gap-[var(--bh-space-5xl-24)]">
|
|
6
|
-
<div className="grid gap-[var(--bh-space-3xl-16)]">
|
|
7
|
-
<Divider />
|
|
8
|
-
<Divider type="dotted" />
|
|
9
|
-
</div>
|
|
10
|
-
|
|
11
|
-
<div className="flex h-[var(--bh-space-15xl-224)] items-start gap-[var(--bh-space-5xl-24)]">
|
|
12
|
-
<Divider direction="vertical" type="dotted" />
|
|
13
|
-
<Divider direction="vertical" />
|
|
14
|
-
</div>
|
|
15
|
-
</div>
|
|
16
|
-
)
|
|
17
|
-
}
|
|
1
|
+
import { Divider } from "@/components/ui/divider"
|
|
2
|
+
|
|
3
|
+
export function DividerDemo() {
|
|
4
|
+
return (
|
|
5
|
+
<div className="grid gap-[var(--bh-space-5xl-24)]">
|
|
6
|
+
<div className="grid gap-[var(--bh-space-3xl-16)]">
|
|
7
|
+
<Divider />
|
|
8
|
+
<Divider type="dotted" />
|
|
9
|
+
</div>
|
|
10
|
+
|
|
11
|
+
<div className="flex h-[var(--bh-space-15xl-224)] items-start gap-[var(--bh-space-5xl-24)]">
|
|
12
|
+
<Divider direction="vertical" type="dotted" />
|
|
13
|
+
<Divider direction="vertical" />
|
|
14
|
+
</div>
|
|
15
|
+
</div>
|
|
16
|
+
)
|
|
17
|
+
}
|
|
@@ -1,29 +1,29 @@
|
|
|
1
|
-
import {
|
|
2
|
-
ActivityHeatmap,
|
|
3
|
-
type ActivityHeatmapItem,
|
|
4
|
-
type ActivityHeatmapLevel,
|
|
5
|
-
} from "@/components/ui/expanded/ActivityHeatmap"
|
|
6
|
-
|
|
7
|
-
const activityItems: ActivityHeatmapItem[] = Array.from(
|
|
8
|
-
{ length: 39 * 7 },
|
|
9
|
-
(_, index) => {
|
|
10
|
-
const column = Math.floor(index / 7)
|
|
11
|
-
const row = index % 7
|
|
12
|
-
const level = ((column * 11 + row * 7 + column * row * 3) % 5) as ActivityHeatmapLevel
|
|
13
|
-
|
|
14
|
-
return {
|
|
15
|
-
id: `activity-${index}`,
|
|
16
|
-
label: `Activity level ${level} of 4`,
|
|
17
|
-
level,
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
)
|
|
21
|
-
|
|
22
|
-
export function ActivityHeatmapDemo() {
|
|
23
|
-
return (
|
|
24
|
-
<ActivityHeatmap
|
|
25
|
-
ariaLabel="Weekly activity over the last 39 weeks"
|
|
26
|
-
items={activityItems}
|
|
27
|
-
/>
|
|
28
|
-
)
|
|
29
|
-
}
|
|
1
|
+
import {
|
|
2
|
+
ActivityHeatmap,
|
|
3
|
+
type ActivityHeatmapItem,
|
|
4
|
+
type ActivityHeatmapLevel,
|
|
5
|
+
} from "@/components/ui/expanded/ActivityHeatmap"
|
|
6
|
+
|
|
7
|
+
const activityItems: ActivityHeatmapItem[] = Array.from(
|
|
8
|
+
{ length: 39 * 7 },
|
|
9
|
+
(_, index) => {
|
|
10
|
+
const column = Math.floor(index / 7)
|
|
11
|
+
const row = index % 7
|
|
12
|
+
const level = ((column * 11 + row * 7 + column * row * 3) % 5) as ActivityHeatmapLevel
|
|
13
|
+
|
|
14
|
+
return {
|
|
15
|
+
id: `activity-${index}`,
|
|
16
|
+
label: `Activity level ${level} of 4`,
|
|
17
|
+
level,
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
)
|
|
21
|
+
|
|
22
|
+
export function ActivityHeatmapDemo() {
|
|
23
|
+
return (
|
|
24
|
+
<ActivityHeatmap
|
|
25
|
+
ariaLabel="Weekly activity over the last 39 weeks"
|
|
26
|
+
items={activityItems}
|
|
27
|
+
/>
|
|
28
|
+
)
|
|
29
|
+
}
|
|
@@ -1,48 +1,48 @@
|
|
|
1
|
-
import { Banner } from "@/components/ui/expanded/Banner"
|
|
2
|
-
|
|
3
|
-
const bannerDemoCopy = {
|
|
4
|
-
actionLabel: "Button",
|
|
5
|
-
ariaLabel: "Announcement banner",
|
|
6
|
-
closeLabel: "Dismiss banner",
|
|
7
|
-
description: "Discover the Latest Updates in Our New Release",
|
|
8
|
-
linkLabel: "Link button",
|
|
9
|
-
title: "Big news!",
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
const rtlBannerDemoCopy = {
|
|
13
|
-
actionLabel: "تطبيق",
|
|
14
|
-
ariaLabel: "شريط إعلان",
|
|
15
|
-
closeLabel: "إغلاق",
|
|
16
|
-
description: "اكتشف آخر التحديثات في إصدارنا الجديد",
|
|
17
|
-
linkLabel: "الرابط",
|
|
18
|
-
title: "أخبار مهمة!",
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
export function BannerDemo() {
|
|
22
|
-
return (
|
|
23
|
-
<div className="grid gap-[var(--bh-space-3xl-16)]">
|
|
24
|
-
<Banner {...bannerDemoCopy} />
|
|
25
|
-
<Banner {...bannerDemoCopy} type="single-action-inline" />
|
|
26
|
-
<Banner {...bannerDemoCopy} size="full-width" type="single-action" />
|
|
27
|
-
<Banner
|
|
28
|
-
{...bannerDemoCopy}
|
|
29
|
-
color="grey"
|
|
30
|
-
content="title-description"
|
|
31
|
-
size="full-width"
|
|
32
|
-
type="single-action"
|
|
33
|
-
/>
|
|
34
|
-
<Banner
|
|
35
|
-
{...bannerDemoCopy}
|
|
36
|
-
color="brand-light"
|
|
37
|
-
content="title-description"
|
|
38
|
-
type="single-action-inline"
|
|
39
|
-
/>
|
|
40
|
-
<Banner
|
|
41
|
-
{...rtlBannerDemoCopy}
|
|
42
|
-
content="title-description"
|
|
43
|
-
dir="rtl"
|
|
44
|
-
type="single-action-inline"
|
|
45
|
-
/>
|
|
46
|
-
</div>
|
|
47
|
-
)
|
|
48
|
-
}
|
|
1
|
+
import { Banner } from "@/components/ui/expanded/Banner"
|
|
2
|
+
|
|
3
|
+
const bannerDemoCopy = {
|
|
4
|
+
actionLabel: "Button",
|
|
5
|
+
ariaLabel: "Announcement banner",
|
|
6
|
+
closeLabel: "Dismiss banner",
|
|
7
|
+
description: "Discover the Latest Updates in Our New Release",
|
|
8
|
+
linkLabel: "Link button",
|
|
9
|
+
title: "Big news!",
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
const rtlBannerDemoCopy = {
|
|
13
|
+
actionLabel: "تطبيق",
|
|
14
|
+
ariaLabel: "شريط إعلان",
|
|
15
|
+
closeLabel: "إغلاق",
|
|
16
|
+
description: "اكتشف آخر التحديثات في إصدارنا الجديد",
|
|
17
|
+
linkLabel: "الرابط",
|
|
18
|
+
title: "أخبار مهمة!",
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export function BannerDemo() {
|
|
22
|
+
return (
|
|
23
|
+
<div className="grid gap-[var(--bh-space-3xl-16)]">
|
|
24
|
+
<Banner {...bannerDemoCopy} />
|
|
25
|
+
<Banner {...bannerDemoCopy} type="single-action-inline" />
|
|
26
|
+
<Banner {...bannerDemoCopy} size="full-width" type="single-action" />
|
|
27
|
+
<Banner
|
|
28
|
+
{...bannerDemoCopy}
|
|
29
|
+
color="grey"
|
|
30
|
+
content="title-description"
|
|
31
|
+
size="full-width"
|
|
32
|
+
type="single-action"
|
|
33
|
+
/>
|
|
34
|
+
<Banner
|
|
35
|
+
{...bannerDemoCopy}
|
|
36
|
+
color="brand-light"
|
|
37
|
+
content="title-description"
|
|
38
|
+
type="single-action-inline"
|
|
39
|
+
/>
|
|
40
|
+
<Banner
|
|
41
|
+
{...rtlBannerDemoCopy}
|
|
42
|
+
content="title-description"
|
|
43
|
+
dir="rtl"
|
|
44
|
+
type="single-action-inline"
|
|
45
|
+
/>
|
|
46
|
+
</div>
|
|
47
|
+
)
|
|
48
|
+
}
|
|
@@ -1,59 +1,59 @@
|
|
|
1
|
-
import {
|
|
2
|
-
BreadcrumbFolderIcon,
|
|
3
|
-
BreadcrumbHomeIcon,
|
|
4
|
-
Breadcrumbs,
|
|
5
|
-
type BreadcrumbItem,
|
|
6
|
-
} from "@/components/ui/expanded/Breadcrumbs"
|
|
7
|
-
|
|
8
|
-
const breadcrumbItems: BreadcrumbItem[] = [
|
|
9
|
-
{ label: "Home", href: "#", icon: <BreadcrumbHomeIcon /> },
|
|
10
|
-
{ label: "Design system", href: "#", icon: <BreadcrumbFolderIcon /> },
|
|
11
|
-
{ label: "Components", href: "#" },
|
|
12
|
-
{ label: "Breadcrumbs", current: true },
|
|
13
|
-
]
|
|
14
|
-
|
|
15
|
-
const longBreadcrumbItems: BreadcrumbItem[] = [
|
|
16
|
-
{ label: "Home", href: "#", icon: <BreadcrumbHomeIcon /> },
|
|
17
|
-
{ label: "Workspace", href: "#", icon: <BreadcrumbFolderIcon /> },
|
|
18
|
-
{ label: "Design System", href: "#" },
|
|
19
|
-
{ label: "Components", href: "#" },
|
|
20
|
-
{ label: "Navigation", href: "#" },
|
|
21
|
-
{ label: "Breadcrumbs", current: true },
|
|
22
|
-
]
|
|
23
|
-
|
|
24
|
-
const rtlBreadcrumbItems: BreadcrumbItem[] = [
|
|
25
|
-
{ label: "\u0627\u0644\u0631\u0626\u064a\u0633\u064a\u0629", href: "#", icon: <BreadcrumbHomeIcon /> },
|
|
26
|
-
{ label: "\u0627\u0644\u0646\u0638\u0627\u0645", href: "#", icon: <BreadcrumbFolderIcon /> },
|
|
27
|
-
{ label: "\u0627\u0644\u0645\u0643\u0648\u0646\u0627\u062a", current: true },
|
|
28
|
-
]
|
|
29
|
-
|
|
30
|
-
export function BreadcrumbsDemo() {
|
|
31
|
-
return (
|
|
32
|
-
<div className="grid gap-[var(--bh-space-3xl-16)]">
|
|
33
|
-
<Breadcrumbs aria-label="Default breadcrumb" items={breadcrumbItems} overflowLabel="More" />
|
|
34
|
-
<Breadcrumbs
|
|
35
|
-
aria-label="Raised breadcrumb"
|
|
36
|
-
items={breadcrumbItems}
|
|
37
|
-
overflowLabel="More"
|
|
38
|
-
separator="chevron"
|
|
39
|
-
style="raised"
|
|
40
|
-
/>
|
|
41
|
-
<Breadcrumbs
|
|
42
|
-
aria-label="Collapsed breadcrumb"
|
|
43
|
-
items={longBreadcrumbItems}
|
|
44
|
-
maxItems={4}
|
|
45
|
-
overflowLabel="More"
|
|
46
|
-
separator="chevron"
|
|
47
|
-
style="raised"
|
|
48
|
-
/>
|
|
49
|
-
<Breadcrumbs
|
|
50
|
-
aria-label={"\u0627\u0644\u0645\u0633\u0627\u0631"}
|
|
51
|
-
dir="rtl"
|
|
52
|
-
items={rtlBreadcrumbItems}
|
|
53
|
-
overflowLabel={"\u0627\u0644\u0645\u0632\u064a\u062f"}
|
|
54
|
-
separator="chevron"
|
|
55
|
-
style="raised"
|
|
56
|
-
/>
|
|
57
|
-
</div>
|
|
58
|
-
)
|
|
59
|
-
}
|
|
1
|
+
import {
|
|
2
|
+
BreadcrumbFolderIcon,
|
|
3
|
+
BreadcrumbHomeIcon,
|
|
4
|
+
Breadcrumbs,
|
|
5
|
+
type BreadcrumbItem,
|
|
6
|
+
} from "@/components/ui/expanded/Breadcrumbs"
|
|
7
|
+
|
|
8
|
+
const breadcrumbItems: BreadcrumbItem[] = [
|
|
9
|
+
{ label: "Home", href: "#", icon: <BreadcrumbHomeIcon /> },
|
|
10
|
+
{ label: "Design system", href: "#", icon: <BreadcrumbFolderIcon /> },
|
|
11
|
+
{ label: "Components", href: "#" },
|
|
12
|
+
{ label: "Breadcrumbs", current: true },
|
|
13
|
+
]
|
|
14
|
+
|
|
15
|
+
const longBreadcrumbItems: BreadcrumbItem[] = [
|
|
16
|
+
{ label: "Home", href: "#", icon: <BreadcrumbHomeIcon /> },
|
|
17
|
+
{ label: "Workspace", href: "#", icon: <BreadcrumbFolderIcon /> },
|
|
18
|
+
{ label: "Design System", href: "#" },
|
|
19
|
+
{ label: "Components", href: "#" },
|
|
20
|
+
{ label: "Navigation", href: "#" },
|
|
21
|
+
{ label: "Breadcrumbs", current: true },
|
|
22
|
+
]
|
|
23
|
+
|
|
24
|
+
const rtlBreadcrumbItems: BreadcrumbItem[] = [
|
|
25
|
+
{ label: "\u0627\u0644\u0631\u0626\u064a\u0633\u064a\u0629", href: "#", icon: <BreadcrumbHomeIcon /> },
|
|
26
|
+
{ label: "\u0627\u0644\u0646\u0638\u0627\u0645", href: "#", icon: <BreadcrumbFolderIcon /> },
|
|
27
|
+
{ label: "\u0627\u0644\u0645\u0643\u0648\u0646\u0627\u062a", current: true },
|
|
28
|
+
]
|
|
29
|
+
|
|
30
|
+
export function BreadcrumbsDemo() {
|
|
31
|
+
return (
|
|
32
|
+
<div className="grid gap-[var(--bh-space-3xl-16)]">
|
|
33
|
+
<Breadcrumbs aria-label="Default breadcrumb" items={breadcrumbItems} overflowLabel="More" />
|
|
34
|
+
<Breadcrumbs
|
|
35
|
+
aria-label="Raised breadcrumb"
|
|
36
|
+
items={breadcrumbItems}
|
|
37
|
+
overflowLabel="More"
|
|
38
|
+
separator="chevron"
|
|
39
|
+
style="raised"
|
|
40
|
+
/>
|
|
41
|
+
<Breadcrumbs
|
|
42
|
+
aria-label="Collapsed breadcrumb"
|
|
43
|
+
items={longBreadcrumbItems}
|
|
44
|
+
maxItems={4}
|
|
45
|
+
overflowLabel="More"
|
|
46
|
+
separator="chevron"
|
|
47
|
+
style="raised"
|
|
48
|
+
/>
|
|
49
|
+
<Breadcrumbs
|
|
50
|
+
aria-label={"\u0627\u0644\u0645\u0633\u0627\u0631"}
|
|
51
|
+
dir="rtl"
|
|
52
|
+
items={rtlBreadcrumbItems}
|
|
53
|
+
overflowLabel={"\u0627\u0644\u0645\u0632\u064a\u062f"}
|
|
54
|
+
separator="chevron"
|
|
55
|
+
style="raised"
|
|
56
|
+
/>
|
|
57
|
+
</div>
|
|
58
|
+
)
|
|
59
|
+
}
|
|
@@ -1,39 +1,39 @@
|
|
|
1
|
-
import { InboxIcon, PlusIcon, SearchIcon } from "lucide-react"
|
|
2
|
-
|
|
3
|
-
import {
|
|
4
|
-
EmptyState,
|
|
5
|
-
type EmptyStateAction,
|
|
6
|
-
} from "@/components/ui/expanded/EmptyState"
|
|
7
|
-
|
|
8
|
-
const searchActions: EmptyStateAction[] = [
|
|
9
|
-
{ label: "Reset filters", variant: "secondary" },
|
|
10
|
-
{ label: "Create item" },
|
|
11
|
-
]
|
|
12
|
-
|
|
13
|
-
const inboxActions: EmptyStateAction[] = [
|
|
14
|
-
{
|
|
15
|
-
icon: <PlusIcon data-icon="inline-start" />,
|
|
16
|
-
label: "Add record",
|
|
17
|
-
},
|
|
18
|
-
]
|
|
19
|
-
|
|
20
|
-
export function EmptyStateDemo() {
|
|
21
|
-
return (
|
|
22
|
-
<div className="grid gap-[var(--bh-space-5xl-24)]">
|
|
23
|
-
<EmptyState
|
|
24
|
-
actions={searchActions}
|
|
25
|
-
description="Try adjusting your search or filters"
|
|
26
|
-
icon={<SearchIcon />}
|
|
27
|
-
title="No results found"
|
|
28
|
-
/>
|
|
29
|
-
<EmptyState
|
|
30
|
-
actions={inboxActions}
|
|
31
|
-
align="start"
|
|
32
|
-
description="Create a record to start tracking this workflow."
|
|
33
|
-
icon={<InboxIcon />}
|
|
34
|
-
size="compact"
|
|
35
|
-
title="Nothing here yet"
|
|
36
|
-
/>
|
|
37
|
-
</div>
|
|
38
|
-
)
|
|
39
|
-
}
|
|
1
|
+
import { InboxIcon, PlusIcon, SearchIcon } from "lucide-react"
|
|
2
|
+
|
|
3
|
+
import {
|
|
4
|
+
EmptyState,
|
|
5
|
+
type EmptyStateAction,
|
|
6
|
+
} from "@/components/ui/expanded/EmptyState"
|
|
7
|
+
|
|
8
|
+
const searchActions: EmptyStateAction[] = [
|
|
9
|
+
{ label: "Reset filters", variant: "secondary" },
|
|
10
|
+
{ label: "Create item" },
|
|
11
|
+
]
|
|
12
|
+
|
|
13
|
+
const inboxActions: EmptyStateAction[] = [
|
|
14
|
+
{
|
|
15
|
+
icon: <PlusIcon data-icon="inline-start" />,
|
|
16
|
+
label: "Add record",
|
|
17
|
+
},
|
|
18
|
+
]
|
|
19
|
+
|
|
20
|
+
export function EmptyStateDemo() {
|
|
21
|
+
return (
|
|
22
|
+
<div className="grid gap-[var(--bh-space-5xl-24)]">
|
|
23
|
+
<EmptyState
|
|
24
|
+
actions={searchActions}
|
|
25
|
+
description="Try adjusting your search or filters"
|
|
26
|
+
icon={<SearchIcon />}
|
|
27
|
+
title="No results found"
|
|
28
|
+
/>
|
|
29
|
+
<EmptyState
|
|
30
|
+
actions={inboxActions}
|
|
31
|
+
align="start"
|
|
32
|
+
description="Create a record to start tracking this workflow."
|
|
33
|
+
icon={<InboxIcon />}
|
|
34
|
+
size="compact"
|
|
35
|
+
title="Nothing here yet"
|
|
36
|
+
/>
|
|
37
|
+
</div>
|
|
38
|
+
)
|
|
39
|
+
}
|