@squadbase/vantage 0.6.2-dev1.b332e5a → 0.6.2-dev1.d7c0911
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/dist/add-4GHF2TX2.js +6 -0
- package/dist/add-4GHF2TX2.js.map +1 -0
- package/dist/{build-TVKFIVFQ.js → build-X5NVCQKT.js} +7 -7
- package/dist/{build-TVKFIVFQ.js.map → build-X5NVCQKT.js.map} +1 -1
- package/dist/{check-3KHZXZMQ.js → check-ZBIH422T.js} +5 -5
- package/dist/{check-3KHZXZMQ.js.map → check-ZBIH422T.js.map} +1 -1
- package/dist/chunk-2ICNHUG6.js +1820 -0
- package/dist/chunk-2ICNHUG6.js.map +1 -0
- package/dist/{chunk-5ZOP4SQR.js → chunk-2N72FKLB.js} +12 -7
- package/dist/chunk-2N72FKLB.js.map +1 -0
- package/dist/{chunk-P7W4LR3Z.js → chunk-7DZGJQ3P.js} +3 -3
- package/dist/{chunk-P7W4LR3Z.js.map → chunk-7DZGJQ3P.js.map} +1 -1
- package/dist/{chunk-U2M6HGKQ.js → chunk-AABMKHEU.js} +4 -4
- package/dist/{chunk-U2M6HGKQ.js.map → chunk-AABMKHEU.js.map} +1 -1
- package/dist/{chunk-QI3XQKHS.js → chunk-GNXCX4WE.js} +10 -3
- package/dist/chunk-GNXCX4WE.js.map +1 -0
- package/dist/{chunk-PXRX5PEC.js → chunk-PDOBHMUQ.js} +3 -3
- package/dist/chunk-PDOBHMUQ.js.map +1 -0
- package/dist/{chunk-ZVANIULZ.js → chunk-RNTDBX6S.js} +4 -4
- package/dist/{chunk-ZVANIULZ.js.map → chunk-RNTDBX6S.js.map} +1 -1
- package/dist/{chunk-A2UUGASH.js → chunk-U736PVHY.js} +2 -2
- package/dist/chunk-U736PVHY.js.map +1 -0
- package/dist/{chunk-PVTHHV7X.js → chunk-V3LF7BE7.js} +27 -5
- package/dist/chunk-V3LF7BE7.js.map +1 -0
- package/dist/{chunk-LMUACBMA.js → chunk-WAMZWZJB.js} +53 -8
- package/dist/chunk-WAMZWZJB.js.map +1 -0
- package/dist/chunk-WRSX2MDK.js +7866 -0
- package/dist/chunk-WRSX2MDK.js.map +1 -0
- package/dist/{chunk-RPZAALCX.js → chunk-XPQSTZUU.js} +254 -164
- package/dist/chunk-XPQSTZUU.js.map +1 -0
- package/dist/{chunk-DTDVSFRY.js → chunk-XQUSGIDG.js} +17 -3
- package/dist/chunk-XQUSGIDG.js.map +1 -0
- package/dist/cli.js +12 -11
- package/dist/cli.js.map +1 -1
- package/dist/client/index.d.ts +32 -3
- package/dist/client/index.js +205 -12
- package/dist/client/index.js.map +1 -1
- package/dist/components/index.d.ts +1975 -28
- package/dist/components/index.js +4 -4
- package/dist/{dev-GDKATCC7.js → dev-4XEDTELV.js} +8 -8
- package/dist/dev-4XEDTELV.js.map +1 -0
- package/dist/doc/index.js +2 -2
- package/dist/doc/index.js.map +1 -1
- package/dist/{docs-EJJ3BECT.js → docs-JVP4RPKT.js} +3 -3
- package/dist/{docs-EJJ3BECT.js.map → docs-JVP4RPKT.js.map} +1 -1
- package/dist/{doctor-WQXPXP6K.js → doctor-5E2VEZPK.js} +5 -5
- package/dist/{doctor-WQXPXP6K.js.map → doctor-5E2VEZPK.js.map} +1 -1
- package/dist/markdown/index.js +1 -1
- package/dist/markdown/index.js.map +1 -1
- package/dist/{preview-OGMCNQUO.js → preview-T6CLSQVX.js} +3 -3
- package/dist/{preview-OGMCNQUO.js.map → preview-T6CLSQVX.js.map} +1 -1
- package/dist/query/index.d.ts +0 -11
- package/dist/query/index.js +2 -2
- package/dist/{routes-MWBWWOJ2.js → routes-3SGAFDMC.js} +4 -4
- package/dist/{routes-MWBWWOJ2.js.map → routes-3SGAFDMC.js.map} +1 -1
- package/dist/{search-6Y422SV6.js → search-5LC4XPB5.js} +3 -3
- package/dist/{search-6Y422SV6.js.map → search-5LC4XPB5.js.map} +1 -1
- package/dist/table/index.js +10 -9
- package/dist/table/index.js.map +1 -1
- package/dist/ui/index.d.ts +144 -11
- package/dist/ui/index.js +1339 -87
- package/dist/ui/index.js.map +1 -1
- package/dist/{upgrade-HCANX4GQ.js → upgrade-JHXZBGQS.js} +6 -6
- package/dist/{upgrade-HCANX4GQ.js.map → upgrade-JHXZBGQS.js.map} +1 -1
- package/dist/vite/index.d.ts +10 -0
- package/dist/vite/index.js +3 -3
- package/docs/en/components.md +29 -15
- package/docs/en/parts/data-table.md +22 -0
- package/docs/en/parts/delta.md +50 -0
- package/docs/en/parts/format.md +43 -0
- package/docs/en/parts/kpi-card.md +57 -0
- package/docs/en/parts/metric-value.md +3 -2
- package/docs/en/parts/sparkline.md +1 -1
- package/docs/en/parts/trend-indicator.md +17 -1
- package/docs/en/ui-and-theming.md +1 -1
- package/docs/index.json +366 -76
- package/docs/ja/changelog.md +31 -0
- package/docs/ja/components.md +57 -101
- package/docs/ja/page-types/csv.md +83 -0
- package/docs/ja/page-types/doc.md +83 -0
- package/docs/ja/page-types/excel.md +82 -0
- package/docs/ja/page-types/slide.md +132 -0
- package/docs/ja/page-types.md +47 -0
- package/docs/ja/parts/area-chart.md +61 -0
- package/docs/ja/parts/bar-chart.md +69 -0
- package/docs/ja/parts/bar-list.md +35 -0
- package/docs/ja/parts/category-bar.md +36 -0
- package/docs/ja/parts/data-table.md +22 -0
- package/docs/ja/parts/delta.md +50 -0
- package/docs/ja/parts/donut-chart.md +47 -0
- package/docs/ja/parts/echart.md +3 -0
- package/docs/ja/parts/format.md +44 -0
- package/docs/ja/parts/kpi-card.md +55 -0
- package/docs/ja/parts/line-chart.md +58 -0
- package/docs/ja/parts/metric-value.md +3 -2
- package/docs/ja/parts/progress-circle.md +34 -0
- package/docs/ja/parts/sparkline.md +2 -2
- package/docs/ja/parts/tracker.md +32 -0
- package/docs/ja/parts/trend-indicator.md +17 -1
- package/docs/ja/routing.md +8 -86
- package/docs/ja/ui/alert-dialog.md +41 -0
- package/docs/ja/ui/avatar.md +31 -0
- package/docs/ja/ui/combobox.md +74 -0
- package/docs/ja/ui/drawer.md +41 -0
- package/docs/ja/ui/field.md +42 -0
- package/docs/ja/ui/hover-card.md +21 -0
- package/docs/ja/ui/kbd.md +16 -0
- package/docs/ja/ui/pagination.md +36 -0
- package/docs/ja/ui/radio-group.md +21 -0
- package/docs/ja/ui/toast.md +46 -0
- package/docs/ja/ui-and-theming.md +14 -7
- package/package.json +13 -4
- package/registry/ui/accordion.tsx +76 -0
- package/registry/ui/alert-dialog.tsx +189 -0
- package/registry/ui/alert.tsx +80 -0
- package/registry/ui/app-shell.tsx +287 -0
- package/registry/ui/area-chart.tsx +3639 -0
- package/registry/ui/avatar.tsx +110 -0
- package/registry/ui/badge.tsx +56 -0
- package/registry/ui/bar-chart.tsx +3636 -0
- package/registry/ui/bar-list.tsx +3680 -0
- package/registry/ui/breadcrumb.tsx +128 -0
- package/registry/ui/button.tsx +62 -0
- package/registry/ui/calendar.tsx +223 -0
- package/registry/ui/card.tsx +107 -0
- package/registry/ui/category-bar.tsx +1255 -0
- package/registry/ui/chart-frame.tsx +1358 -0
- package/registry/ui/checkbox.tsx +30 -0
- package/registry/ui/collapsible.tsx +23 -0
- package/registry/ui/combobox.tsx +310 -0
- package/registry/ui/command.tsx +198 -0
- package/registry/ui/dashboard-card.tsx +217 -0
- package/registry/ui/data-table.tsx +693 -146
- package/registry/ui/date-range-picker.tsx +390 -0
- package/registry/ui/delta.tsx +188 -0
- package/registry/ui/dialog.tsx +161 -0
- package/registry/ui/donut-chart.tsx +3688 -0
- package/registry/ui/drawer.tsx +229 -0
- package/registry/ui/dropdown-menu.tsx +274 -0
- package/registry/ui/echart.tsx +890 -0
- package/registry/ui/field.tsx +240 -0
- package/registry/ui/filter-bar.tsx +392 -0
- package/registry/ui/funnel-steps.tsx +3541 -0
- package/registry/ui/heatmap.tsx +1752 -0
- package/registry/ui/hover-card.tsx +52 -0
- package/registry/ui/input-group.tsx +160 -0
- package/registry/ui/input.tsx +24 -0
- package/registry/ui/kbd.tsx +30 -0
- package/registry/ui/kpi-card.tsx +677 -0
- package/registry/ui/label.tsx +22 -0
- package/registry/ui/legend.tsx +3500 -0
- package/registry/ui/line-chart.tsx +3637 -0
- package/registry/ui/metric-value.tsx +62 -0
- package/registry/ui/multi-select.tsx +232 -0
- package/registry/ui/page-shell.tsx +282 -0
- package/registry/ui/pagination.tsx +140 -0
- package/registry/ui/placeholder.tsx +36 -0
- package/registry/ui/popover.tsx +92 -0
- package/registry/ui/progress-circle.tsx +867 -0
- package/registry/ui/progress.tsx +85 -0
- package/registry/ui/radio-group.tsx +39 -0
- package/registry/ui/sample-data.tsx +86 -0
- package/registry/ui/scatter-chart.tsx +4150 -0
- package/registry/ui/scroll-area.tsx +56 -0
- package/registry/ui/searchable-select.tsx +214 -0
- package/registry/ui/section-header.tsx +43 -0
- package/registry/ui/segmented-control.tsx +76 -0
- package/registry/ui/select.tsx +255 -0
- package/registry/ui/separator.tsx +27 -0
- package/registry/ui/sheet.tsx +139 -0
- package/registry/ui/sidebar.tsx +725 -0
- package/registry/ui/skeleton.tsx +17 -0
- package/registry/ui/slider.tsx +56 -0
- package/registry/ui/sparkline.tsx +230 -0
- package/registry/ui/spinner.tsx +14 -0
- package/registry/ui/states.tsx +90 -0
- package/registry/ui/status-badge.tsx +121 -0
- package/registry/ui/switch.tsx +34 -0
- package/registry/ui/table.tsx +118 -0
- package/registry/ui/tabs.tsx +84 -0
- package/registry/ui/textarea.tsx +22 -0
- package/registry/ui/toast.tsx +250 -0
- package/registry/ui/toggle-group.tsx +91 -0
- package/registry/ui/toggle.tsx +47 -0
- package/registry/ui/tooltip.tsx +68 -0
- package/registry/ui/tracker.tsx +843 -0
- package/registry/ui/trend-indicator.tsx +74 -0
- package/registry/ui/updated-at.tsx +122 -0
- package/registry/ui/waterfall-chart.tsx +4186 -0
- package/skills/vantage-add-feature/SKILL.md +9 -7
- package/skills/vantage-pitfalls/SKILL.md +5 -1
- package/templates/AGENTS.md +22 -1
- package/templates/agents/csv.md +2 -1
- package/templates/agents/doc.md +4 -3
- package/templates/agents/page.md +20 -6
- package/templates/agents/xlsx.md +2 -1
- package/theme.css +237 -136
- package/dist/add-DY4AXANK.js +0 -6
- package/dist/add-DY4AXANK.js.map +0 -1
- package/dist/chunk-5ZOP4SQR.js.map +0 -1
- package/dist/chunk-A2UUGASH.js.map +0 -1
- package/dist/chunk-DTDVSFRY.js.map +0 -1
- package/dist/chunk-LMUACBMA.js.map +0 -1
- package/dist/chunk-NKFBFDRZ.js +0 -2241
- package/dist/chunk-NKFBFDRZ.js.map +0 -1
- package/dist/chunk-PVTHHV7X.js.map +0 -1
- package/dist/chunk-PXRX5PEC.js.map +0 -1
- package/dist/chunk-QI3XQKHS.js.map +0 -1
- package/dist/chunk-RPZAALCX.js.map +0 -1
- package/dist/chunk-VA776YE5.js +0 -316
- package/dist/chunk-VA776YE5.js.map +0 -1
- package/dist/dev-GDKATCC7.js.map +0 -1
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
// Copied by `vantage add ui dashboard-card`. This file is yours to edit.
|
|
2
|
+
// Generated from @squadbase/squadkit registry/components/dashboard-card.tsx by `npm run registry` (in Vantage, edit packages/squadkit, not registry/).
|
|
3
|
+
"use client"
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* DashboardCard — the tighter card used for dashboard tiles: smaller padding
|
|
7
|
+
* than the plain `Card`, a title/description/action header, and a matching
|
|
8
|
+
* skeleton for the loading state. `DashboardCardPreset` wires the common
|
|
9
|
+
* arrangement in one prop-driven component.
|
|
10
|
+
*
|
|
11
|
+
* - **Rows line up by subgrid.** `subgrid={3}` (header, content, footer) or `{2}` makes the
|
|
12
|
+
* tile span that many rows of its parent grid (`row-span-N` + `grid-template-rows: subgrid`),
|
|
13
|
+
* so tiles placed directly in one grid share the top edge of each part. Parts that are not
|
|
14
|
+
* given are not drawn (no empty header or footer, no fixed `h-*` / `min-h-*`); the preset puts
|
|
15
|
+
* each part on its own row. Without `subgrid` it is a plain block.
|
|
16
|
+
* - **`size="sm"`** is a step tighter (padding), for two tiles side by side in a narrow place.
|
|
17
|
+
*
|
|
18
|
+
* Use it for tiles that hold a chart, ranking or table. For a single KPI use
|
|
19
|
+
* `KpiCard` — it is already a card, and computes the delta, labels and target
|
|
20
|
+
* lines from the values.
|
|
21
|
+
*/
|
|
22
|
+
import { forwardRef, type HTMLAttributes, type ReactNode } from "react"
|
|
23
|
+
|
|
24
|
+
import { cn } from "@squadbase/vantage/ui"
|
|
25
|
+
import { Skeleton } from "@squadbase/vantage/ui"
|
|
26
|
+
import { SampleBadge, SampleClaim, useSampleMark } from "@squadbase/vantage/components"
|
|
27
|
+
|
|
28
|
+
export interface DashboardCardProps extends HTMLAttributes<HTMLDivElement> {
|
|
29
|
+
/** 親の grid の何行にまたがって subgrid で揃えるか(ヘッダー・本文・フッターなら 3、ヘッダー・本文なら 2)。未指定なら通常のブロック。 */
|
|
30
|
+
subgrid?: 2 | 3
|
|
31
|
+
/** `"sm"` は一段小さい余白。Sheet の中などで 2 枚を横に並べるとき。既定 `"default"`。 */
|
|
32
|
+
size?: "default" | "sm"
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
const SUBGRID_CLASS = {
|
|
36
|
+
2: "row-span-2 grid content-start grid-rows-subgrid",
|
|
37
|
+
3: "row-span-3 grid content-start grid-rows-subgrid",
|
|
38
|
+
} as const
|
|
39
|
+
|
|
40
|
+
export const DashboardCard = forwardRef<HTMLDivElement, DashboardCardProps>(
|
|
41
|
+
({ className, subgrid, size = "default", ...props }, ref) => (
|
|
42
|
+
<div
|
|
43
|
+
ref={ref}
|
|
44
|
+
data-slot="dashboard-card"
|
|
45
|
+
data-size={size}
|
|
46
|
+
className={cn(
|
|
47
|
+
"group rounded-xl border bg-card shadow-[var(--shadow-card)] px-1 py-1 text-card-foreground",
|
|
48
|
+
subgrid && SUBGRID_CLASS[subgrid],
|
|
49
|
+
className,
|
|
50
|
+
)}
|
|
51
|
+
{...props}
|
|
52
|
+
/>
|
|
53
|
+
),
|
|
54
|
+
)
|
|
55
|
+
DashboardCard.displayName = "DashboardCard"
|
|
56
|
+
|
|
57
|
+
export interface DashboardCardHeaderProps extends HTMLAttributes<HTMLDivElement> {}
|
|
58
|
+
|
|
59
|
+
export const DashboardCardHeader = forwardRef<HTMLDivElement, DashboardCardHeaderProps>(
|
|
60
|
+
({ className, ...props }, ref) => (
|
|
61
|
+
<div
|
|
62
|
+
ref={ref}
|
|
63
|
+
data-slot="dashboard-card-header"
|
|
64
|
+
className={cn("flex flex-row items-start justify-between gap-4 px-3 py-3 group-data-[size=sm]:px-2 group-data-[size=sm]:py-2", className)}
|
|
65
|
+
{...props}
|
|
66
|
+
/>
|
|
67
|
+
),
|
|
68
|
+
)
|
|
69
|
+
DashboardCardHeader.displayName = "DashboardCardHeader"
|
|
70
|
+
|
|
71
|
+
export interface DashboardCardTitleProps extends HTMLAttributes<HTMLHeadingElement> {}
|
|
72
|
+
|
|
73
|
+
export const DashboardCardTitle = forwardRef<HTMLHeadingElement, DashboardCardTitleProps>(
|
|
74
|
+
({ className, ...props }, ref) => (
|
|
75
|
+
<h3
|
|
76
|
+
ref={ref}
|
|
77
|
+
data-slot="dashboard-card-title"
|
|
78
|
+
className={cn("text-sm leading-none font-semibold tracking-tight", className)}
|
|
79
|
+
{...props}
|
|
80
|
+
/>
|
|
81
|
+
),
|
|
82
|
+
)
|
|
83
|
+
DashboardCardTitle.displayName = "DashboardCardTitle"
|
|
84
|
+
|
|
85
|
+
export interface DashboardCardDescriptionProps extends HTMLAttributes<HTMLParagraphElement> {}
|
|
86
|
+
|
|
87
|
+
export const DashboardCardDescription = forwardRef<
|
|
88
|
+
HTMLParagraphElement,
|
|
89
|
+
DashboardCardDescriptionProps
|
|
90
|
+
>(({ className, ...props }, ref) => (
|
|
91
|
+
<p
|
|
92
|
+
ref={ref}
|
|
93
|
+
data-slot="dashboard-card-description"
|
|
94
|
+
className={cn("text-xs text-muted-foreground", className)}
|
|
95
|
+
{...props}
|
|
96
|
+
/>
|
|
97
|
+
))
|
|
98
|
+
DashboardCardDescription.displayName = "DashboardCardDescription"
|
|
99
|
+
|
|
100
|
+
export interface DashboardCardActionProps extends HTMLAttributes<HTMLDivElement> {}
|
|
101
|
+
|
|
102
|
+
export const DashboardCardAction = forwardRef<HTMLDivElement, DashboardCardActionProps>(
|
|
103
|
+
({ className, ...props }, ref) => (
|
|
104
|
+
<div
|
|
105
|
+
ref={ref}
|
|
106
|
+
data-slot="dashboard-card-action"
|
|
107
|
+
className={cn("ml-auto shrink-0", className)}
|
|
108
|
+
{...props}
|
|
109
|
+
/>
|
|
110
|
+
),
|
|
111
|
+
)
|
|
112
|
+
DashboardCardAction.displayName = "DashboardCardAction"
|
|
113
|
+
|
|
114
|
+
export interface DashboardCardContentProps extends HTMLAttributes<HTMLDivElement> {}
|
|
115
|
+
|
|
116
|
+
export const DashboardCardContent = forwardRef<HTMLDivElement, DashboardCardContentProps>(
|
|
117
|
+
({ className, ...props }, ref) => (
|
|
118
|
+
<div ref={ref} data-slot="dashboard-card-content" className={cn("p-3 group-data-[size=sm]:p-2", className)} {...props} />
|
|
119
|
+
),
|
|
120
|
+
)
|
|
121
|
+
DashboardCardContent.displayName = "DashboardCardContent"
|
|
122
|
+
|
|
123
|
+
export interface DashboardCardFooterProps extends HTMLAttributes<HTMLDivElement> {}
|
|
124
|
+
|
|
125
|
+
export const DashboardCardFooter = forwardRef<HTMLDivElement, DashboardCardFooterProps>(
|
|
126
|
+
({ className, ...props }, ref) => (
|
|
127
|
+
<div
|
|
128
|
+
ref={ref}
|
|
129
|
+
data-slot="dashboard-card-footer"
|
|
130
|
+
className={cn("flex items-center px-3 py-1.5 group-data-[size=sm]:px-2", className)}
|
|
131
|
+
{...props}
|
|
132
|
+
/>
|
|
133
|
+
),
|
|
134
|
+
)
|
|
135
|
+
DashboardCardFooter.displayName = "DashboardCardFooter"
|
|
136
|
+
|
|
137
|
+
export interface DashboardCardSkeletonProps {
|
|
138
|
+
className?: string
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
export function DashboardCardSkeleton({ className }: DashboardCardSkeletonProps) {
|
|
142
|
+
return (
|
|
143
|
+
<div
|
|
144
|
+
data-slot="dashboard-card-skeleton"
|
|
145
|
+
className={cn("rounded-xl border bg-card p-6 shadow-[var(--shadow-card)]", className)}
|
|
146
|
+
>
|
|
147
|
+
<div className="flex items-start justify-between gap-4 pb-4">
|
|
148
|
+
<Skeleton className="h-5 w-32" />
|
|
149
|
+
<Skeleton className="h-8 w-8 rounded-md" />
|
|
150
|
+
</div>
|
|
151
|
+
<Skeleton className="h-4 w-full" />
|
|
152
|
+
<Skeleton className="mt-2 h-4 w-3/4" />
|
|
153
|
+
</div>
|
|
154
|
+
)
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
export interface DashboardCardPresetProps
|
|
158
|
+
extends Omit<HTMLAttributes<HTMLDivElement>, "title">,
|
|
159
|
+
Pick<DashboardCardProps, "subgrid" | "size"> {
|
|
160
|
+
title?: ReactNode
|
|
161
|
+
description?: ReactNode
|
|
162
|
+
actions?: ReactNode
|
|
163
|
+
footer?: ReactNode
|
|
164
|
+
headerClassName?: string
|
|
165
|
+
contentClassName?: string
|
|
166
|
+
footerClassName?: string
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
export function DashboardCardPreset({
|
|
170
|
+
title,
|
|
171
|
+
description,
|
|
172
|
+
actions,
|
|
173
|
+
footer,
|
|
174
|
+
children,
|
|
175
|
+
headerClassName,
|
|
176
|
+
contentClassName,
|
|
177
|
+
footerClassName,
|
|
178
|
+
className,
|
|
179
|
+
subgrid,
|
|
180
|
+
...props
|
|
181
|
+
}: DashboardCardPresetProps) {
|
|
182
|
+
// Inside SampleData the card shows the mark in its header, and the parts inside it do not repeat it.
|
|
183
|
+
const sample = useSampleMark()
|
|
184
|
+
const hasHeader = title || description || actions || sample
|
|
185
|
+
return (
|
|
186
|
+
<DashboardCard className={className} subgrid={subgrid} {...props}>
|
|
187
|
+
<SampleClaim>
|
|
188
|
+
{hasHeader && (
|
|
189
|
+
<DashboardCardHeader className={cn(subgrid && "row-start-1", headerClassName)}>
|
|
190
|
+
{(title || description) && (
|
|
191
|
+
<div>
|
|
192
|
+
{title && <DashboardCardTitle>{title}</DashboardCardTitle>}
|
|
193
|
+
{description && <DashboardCardDescription>{description}</DashboardCardDescription>}
|
|
194
|
+
</div>
|
|
195
|
+
)}
|
|
196
|
+
{(actions || sample) && (
|
|
197
|
+
<DashboardCardAction className={cn(sample && actions && "flex items-center gap-2")}>
|
|
198
|
+
{sample && <SampleBadge label={sample.label} />}
|
|
199
|
+
{actions}
|
|
200
|
+
</DashboardCardAction>
|
|
201
|
+
)}
|
|
202
|
+
</DashboardCardHeader>
|
|
203
|
+
)}
|
|
204
|
+
{children && (
|
|
205
|
+
<DashboardCardContent className={cn(subgrid && "row-start-2", contentClassName)}>
|
|
206
|
+
{children}
|
|
207
|
+
</DashboardCardContent>
|
|
208
|
+
)}
|
|
209
|
+
{footer && (
|
|
210
|
+
<DashboardCardFooter className={cn(subgrid === 3 && "row-start-3", footerClassName)}>
|
|
211
|
+
{footer}
|
|
212
|
+
</DashboardCardFooter>
|
|
213
|
+
)}
|
|
214
|
+
</SampleClaim>
|
|
215
|
+
</DashboardCard>
|
|
216
|
+
)
|
|
217
|
+
}
|