@squadbase/vantage 0.6.1 → 0.6.2-dev1.0010f67
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-O5TVNH4E.js → build-U7GO26HR.js} +9 -9
- package/dist/{build-O5TVNH4E.js.map → build-U7GO26HR.js.map} +1 -1
- package/dist/{check-WFBEDHDR.js → check-MRVAIHG5.js} +7 -7
- package/dist/{check-WFBEDHDR.js.map → check-MRVAIHG5.js.map} +1 -1
- package/dist/chunk-2IAPIOPS.js +152 -0
- package/dist/chunk-2IAPIOPS.js.map +1 -0
- package/dist/chunk-3RJEOP3J.js +174 -0
- package/dist/chunk-3RJEOP3J.js.map +1 -0
- package/dist/chunk-77CISBMG.js +7581 -0
- package/dist/chunk-77CISBMG.js.map +1 -0
- package/dist/{chunk-QDZA5JSL.js → chunk-AABMKHEU.js} +4 -4
- package/dist/{chunk-QDZA5JSL.js.map → chunk-AABMKHEU.js.map} +1 -1
- package/dist/{chunk-PVTHHV7X.js → chunk-ANZLVSEP.js} +28 -7
- package/dist/chunk-ANZLVSEP.js.map +1 -0
- package/dist/chunk-CKWPK4RO.js +50 -0
- package/dist/chunk-CKWPK4RO.js.map +1 -0
- package/dist/chunk-EG4PX726.js +678 -0
- package/dist/chunk-EG4PX726.js.map +1 -0
- package/dist/{chunk-3G43C6OL.js → chunk-GNXCX4WE.js} +46 -3
- package/dist/chunk-GNXCX4WE.js.map +1 -0
- package/dist/chunk-NZ5QIIG4.js +74 -0
- package/dist/chunk-NZ5QIIG4.js.map +1 -0
- package/dist/{chunk-BCE22JSM.js → chunk-PJ4SPXHS.js} +52 -16
- package/dist/chunk-PJ4SPXHS.js.map +1 -0
- package/dist/{chunk-MXI3PZFT.js → chunk-QNOX7WLZ.js} +257 -210
- package/dist/chunk-QNOX7WLZ.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-ROHNXP7J.js +123 -0
- package/dist/chunk-ROHNXP7J.js.map +1 -0
- package/dist/chunk-S5MDTHH7.js +466 -0
- package/dist/chunk-S5MDTHH7.js.map +1 -0
- package/dist/chunk-SDJTTMLK.js +1877 -0
- package/dist/chunk-SDJTTMLK.js.map +1 -0
- package/dist/{chunk-EP6JHXSR.js → chunk-SHZM3EXB.js} +68 -12
- package/dist/chunk-SHZM3EXB.js.map +1 -0
- package/dist/chunk-TRMHNMMZ.js +61 -0
- package/dist/chunk-TRMHNMMZ.js.map +1 -0
- package/dist/{chunk-A2UUGASH.js → chunk-U736PVHY.js} +2 -2
- package/dist/chunk-U736PVHY.js.map +1 -0
- package/dist/{chunk-JGRMRXXZ.js → chunk-UWSQUHX6.js} +4 -99
- package/dist/chunk-UWSQUHX6.js.map +1 -0
- package/dist/cli.js +15 -11
- package/dist/cli.js.map +1 -1
- package/dist/client/index.d.ts +34 -3
- package/dist/client/index.js +211 -12
- package/dist/client/index.js.map +1 -1
- package/dist/components/index.d.ts +1768 -30
- package/dist/components/index.js +7 -3
- package/dist/delta-text-CbrOaW83.d.ts +17 -0
- package/dist/{dev-NZRLOQCL.js → dev-O42JFQ64.js} +24 -13
- package/dist/dev-O42JFQ64.js.map +1 -0
- package/dist/doc/index.d.ts +219 -2
- package/dist/doc/index.js +525 -11
- package/dist/doc/index.js.map +1 -1
- package/dist/{docs-ZGDJUHJI.js → docs-JVP4RPKT.js} +3 -3
- package/dist/{docs-ZGDJUHJI.js.map → docs-JVP4RPKT.js.map} +1 -1
- package/dist/{doctor-VFKEMR54.js → doctor-YD3XAAOT.js} +8 -8
- package/dist/doctor-YD3XAAOT.js.map +1 -0
- package/dist/format-DihQkL1N.d.ts +249 -0
- package/dist/markdown/index.js +1 -1
- package/dist/markdown/index.js.map +1 -1
- package/dist/{preview-QDCIVVSR.js → preview-T6CLSQVX.js} +12 -4
- package/dist/preview-T6CLSQVX.js.map +1 -0
- package/dist/query/index.d.ts +0 -11
- package/dist/query/index.js +2 -2
- package/dist/{routes-RHP5FVGD.js → routes-PVKNT777.js} +6 -6
- package/dist/{routes-RHP5FVGD.js.map → routes-PVKNT777.js.map} +1 -1
- package/dist/{search-RFBELGY7.js → search-5LC4XPB5.js} +3 -3
- package/dist/{search-RFBELGY7.js.map → search-5LC4XPB5.js.map} +1 -1
- package/dist/slide/index.d.ts +272 -1
- package/dist/slide/index.js +1086 -19
- package/dist/slide/index.js.map +1 -1
- package/dist/table/index.js +14 -9
- package/dist/table/index.js.map +1 -1
- package/dist/ui/index.d.ts +148 -12
- package/dist/ui/index.js +1340 -87
- package/dist/ui/index.js.map +1 -1
- package/dist/{upgrade-GF2P67M6.js → upgrade-6DT7ADRP.js} +7 -7
- package/dist/{upgrade-GF2P67M6.js.map → upgrade-6DT7ADRP.js.map} +1 -1
- package/dist/vite/index.d.ts +10 -0
- package/dist/vite/index.js +4 -4
- package/docs/en/agent-skills.md +1 -1
- package/docs/en/changelog.md +26 -0
- package/docs/en/cli-reference.md +30 -0
- package/docs/en/components.md +42 -17
- package/docs/en/doc/delta-text.md +40 -0
- package/docs/en/doc/doc-action-items.md +49 -0
- package/docs/en/doc/doc-callout.md +38 -0
- package/docs/en/doc/doc-data-table.md +60 -0
- package/docs/en/doc/doc-executive-summary.md +64 -0
- package/docs/en/doc/doc-figure.md +56 -0
- package/docs/en/doc/doc-key-findings.md +61 -0
- package/docs/en/doc/doc-kpi-scorecard.md +80 -0
- package/docs/en/doc/doc-notes-and-sources.md +43 -0
- package/docs/en/doc/doc-report-header.md +46 -0
- package/docs/en/pages-and-metadata.md +15 -0
- package/docs/en/parts/area-chart.md +99 -0
- package/docs/en/parts/bar-chart.md +91 -0
- package/docs/en/parts/bar-list.md +50 -0
- package/docs/en/parts/category-bar.md +37 -0
- package/docs/en/parts/chart-frame.md +39 -0
- package/docs/en/parts/data-table.md +22 -0
- package/docs/en/parts/delta.md +51 -0
- package/docs/en/parts/donut-chart.md +72 -0
- package/docs/en/parts/format.md +43 -0
- package/docs/en/parts/funnel-steps.md +2 -1
- package/docs/en/parts/heatmap.md +53 -0
- package/docs/en/parts/kpi-card.md +58 -0
- package/docs/en/parts/legend.md +35 -0
- package/docs/en/parts/line-chart.md +94 -0
- package/docs/en/parts/metric-value.md +3 -2
- package/docs/en/parts/page-shell.md +1 -1
- package/docs/en/parts/progress-circle.md +33 -0
- package/docs/en/parts/sample-data.md +39 -0
- package/docs/en/parts/scatter-chart.md +56 -0
- package/docs/en/parts/sparkline.md +1 -1
- package/docs/en/parts/tracker.md +36 -0
- package/docs/en/parts/trend-indicator.md +17 -1
- package/docs/en/parts/updated-at.md +30 -0
- package/docs/en/parts/waterfall-chart.md +56 -0
- package/docs/en/routing.md +4 -2
- package/docs/en/slide/slide-chart-full.md +48 -0
- package/docs/en/slide/slide-chart-insight.md +52 -0
- package/docs/en/slide/slide-columns.md +46 -0
- package/docs/en/slide/slide-comparison.md +68 -0
- package/docs/en/slide/slide-cover.md +39 -0
- package/docs/en/slide/slide-exec-summary.md +47 -0
- package/docs/en/slide/slide-heading.md +38 -0
- package/docs/en/slide/slide-kpi-grid.md +55 -0
- package/docs/en/slide/slide-kpi-hero.md +58 -0
- package/docs/en/slide/slide-next-actions.md +49 -0
- package/docs/en/slide/slide-scorecard-table.md +54 -0
- package/docs/en/slide/slide-section.md +44 -0
- package/docs/en/slide/slide-source-line.md +34 -0
- package/docs/en/ui/alert-dialog.md +42 -0
- package/docs/en/ui/avatar.md +31 -0
- package/docs/en/ui/combobox.md +74 -0
- package/docs/en/ui/drawer.md +41 -0
- package/docs/en/ui/empty.md +1 -1
- package/docs/en/ui/error-state.md +4 -3
- package/docs/en/ui/field.md +42 -0
- package/docs/en/ui/hover-card.md +21 -0
- package/docs/en/ui/kbd.md +17 -0
- package/docs/en/ui/loading.md +1 -1
- package/docs/en/ui/pagination.md +36 -0
- package/docs/en/ui/radio-group.md +21 -0
- package/docs/en/ui/toast.md +44 -0
- package/docs/en/ui/toggle-group.md +4 -3
- package/docs/en/ui-and-theming.md +1 -1
- package/docs/index.json +1184 -114
- package/docs/ja/agent-skills.md +1 -1
- package/docs/ja/changelog.md +57 -0
- package/docs/ja/cli-reference.md +29 -0
- package/docs/ja/components.md +68 -101
- package/docs/ja/doc/delta-text.md +40 -0
- package/docs/ja/doc/doc-action-items.md +49 -0
- package/docs/ja/doc/doc-callout.md +38 -0
- package/docs/ja/doc/doc-data-table.md +60 -0
- package/docs/ja/doc/doc-executive-summary.md +64 -0
- package/docs/ja/doc/doc-figure.md +56 -0
- package/docs/ja/doc/doc-key-findings.md +61 -0
- package/docs/ja/doc/doc-kpi-scorecard.md +80 -0
- package/docs/ja/doc/doc-notes-and-sources.md +43 -0
- package/docs/ja/doc/doc-report-header.md +46 -0
- 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 +133 -0
- package/docs/ja/page-types.md +47 -0
- package/docs/ja/pages-and-metadata.md +15 -0
- package/docs/ja/parts/area-chart.md +85 -0
- package/docs/ja/parts/bar-chart.md +95 -0
- package/docs/ja/parts/bar-list.md +58 -0
- package/docs/ja/parts/category-bar.md +36 -0
- package/docs/ja/parts/chart-frame.md +36 -0
- package/docs/ja/parts/data-table.md +22 -0
- package/docs/ja/parts/delta.md +51 -0
- package/docs/ja/parts/donut-chart.md +66 -0
- package/docs/ja/parts/echart.md +3 -0
- package/docs/ja/parts/format.md +44 -0
- package/docs/ja/parts/funnel-steps.md +27 -8
- package/docs/ja/parts/heatmap.md +45 -0
- package/docs/ja/parts/kpi-card.md +56 -0
- package/docs/ja/parts/legend.md +36 -0
- package/docs/ja/parts/line-chart.md +84 -0
- package/docs/ja/parts/metric-value.md +3 -2
- package/docs/ja/parts/page-shell.md +1 -1
- package/docs/ja/parts/progress-circle.md +34 -0
- package/docs/ja/parts/sample-data.md +61 -0
- package/docs/ja/parts/scatter-chart.md +69 -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/parts/updated-at.md +27 -0
- package/docs/ja/parts/waterfall-chart.md +61 -0
- package/docs/ja/routing.md +8 -84
- package/docs/ja/slide/slide-chart-full.md +48 -0
- package/docs/ja/slide/slide-chart-insight.md +52 -0
- package/docs/ja/slide/slide-columns.md +46 -0
- package/docs/ja/slide/slide-comparison.md +68 -0
- package/docs/ja/slide/slide-cover.md +39 -0
- package/docs/ja/slide/slide-exec-summary.md +47 -0
- package/docs/ja/slide/slide-heading.md +38 -0
- package/docs/ja/slide/slide-kpi-grid.md +55 -0
- package/docs/ja/slide/slide-kpi-hero.md +58 -0
- package/docs/ja/slide/slide-next-actions.md +49 -0
- package/docs/ja/slide/slide-scorecard-table.md +54 -0
- package/docs/ja/slide/slide-section.md +44 -0
- package/docs/ja/slide/slide-source-line.md +34 -0
- 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/empty.md +1 -1
- package/docs/ja/ui/error-state.md +4 -3
- 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/loading.md +1 -1
- 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/toggle-group.md +4 -3
- package/docs/ja/ui-and-theming.md +14 -7
- package/package.json +43 -29
- 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 +424 -0
- package/registry/ui/area-chart.tsx +3960 -0
- package/registry/ui/attention-list.tsx +465 -0
- package/registry/ui/avatar.tsx +110 -0
- package/registry/ui/badge.tsx +56 -0
- package/registry/ui/bar-chart.tsx +3954 -0
- package/registry/ui/bar-list.tsx +3998 -0
- package/registry/ui/box-plot-chart.tsx +4214 -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 +1498 -0
- package/registry/ui/chart-frame.tsx +1604 -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 +896 -157
- package/registry/ui/date-range-picker.tsx +544 -0
- package/registry/ui/delta.tsx +350 -0
- package/registry/ui/dialog.tsx +161 -0
- package/registry/ui/donut-chart.tsx +4006 -0
- package/registry/ui/drawer.tsx +229 -0
- package/registry/ui/dropdown-menu.tsx +274 -0
- package/registry/ui/echart.tsx +1178 -0
- package/registry/ui/field.tsx +240 -0
- package/registry/ui/filter-bar.tsx +551 -0
- package/registry/ui/funnel-steps.tsx +3843 -0
- package/registry/ui/heatmap.tsx +2027 -0
- package/registry/ui/histogram-chart.tsx +4284 -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 +905 -0
- package/registry/ui/label.tsx +22 -0
- package/registry/ui/legend.tsx +3817 -0
- package/registry/ui/line-chart.tsx +3958 -0
- package/registry/ui/metric-value.tsx +62 -0
- package/registry/ui/multi-select.tsx +382 -0
- package/registry/ui/page-shell.tsx +420 -0
- package/registry/ui/pagination.tsx +140 -0
- package/registry/ui/paired-chart.tsx +4086 -0
- package/registry/ui/placeholder.tsx +36 -0
- package/registry/ui/popover.tsx +92 -0
- package/registry/ui/progress-circle.tsx +1033 -0
- package/registry/ui/progress.tsx +85 -0
- package/registry/ui/radio-group.tsx +39 -0
- package/registry/ui/sample-data.tsx +230 -0
- package/registry/ui/scatter-chart.tsx +4503 -0
- package/registry/ui/scroll-area.tsx +56 -0
- package/registry/ui/searchable-select.tsx +352 -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 +247 -0
- package/registry/ui/status-badge.tsx +286 -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 +72 -0
- package/registry/ui/tracker.tsx +1015 -0
- package/registry/ui/trend-indicator.tsx +217 -0
- package/registry/ui/updated-at.tsx +276 -0
- package/registry/ui/waterfall-chart.tsx +4561 -0
- package/skills/vantage-add-feature/SKILL.md +9 -7
- package/skills/vantage-design/SKILL.md +62 -52
- package/skills/vantage-design/references/extract.md +26 -27
- package/skills/vantage-design/references/format.md +12 -172
- package/skills/vantage-design/references/presets.md +50 -110
- package/skills/vantage-pitfalls/SKILL.md +10 -1
- package/skills/vantage-slide/SKILL.md +71 -36
- package/templates/AGENTS.md +53 -16
- package/templates/agents/api.md +29 -0
- package/templates/agents/csv.md +2 -1
- package/templates/agents/doc.md +54 -3
- package/templates/agents/page.md +55 -10
- package/templates/agents/slide.md +90 -4
- package/templates/agents/xlsx.md +2 -1
- package/theme.css +287 -128
- package/dist/add-EISGSZAH.js +0 -6
- package/dist/add-EISGSZAH.js.map +0 -1
- package/dist/chunk-3G43C6OL.js.map +0 -1
- package/dist/chunk-5ZOP4SQR.js +0 -47
- package/dist/chunk-5ZOP4SQR.js.map +0 -1
- package/dist/chunk-A2UUGASH.js.map +0 -1
- package/dist/chunk-BCE22JSM.js.map +0 -1
- package/dist/chunk-DTDVSFRY.js +0 -29
- package/dist/chunk-DTDVSFRY.js.map +0 -1
- package/dist/chunk-EP6JHXSR.js.map +0 -1
- package/dist/chunk-JGRMRXXZ.js.map +0 -1
- package/dist/chunk-KLEIVDUV.js +0 -165
- package/dist/chunk-KLEIVDUV.js.map +0 -1
- package/dist/chunk-MXI3PZFT.js.map +0 -1
- package/dist/chunk-PLST5Q7T.js +0 -2221
- package/dist/chunk-PLST5Q7T.js.map +0 -1
- package/dist/chunk-PVTHHV7X.js.map +0 -1
- package/dist/chunk-T3FLAGI6.js +0 -316
- package/dist/chunk-T3FLAGI6.js.map +0 -1
- package/dist/dev-NZRLOQCL.js.map +0 -1
- package/dist/doctor-VFKEMR54.js.map +0 -1
- package/dist/preview-QDCIVVSR.js.map +0 -1
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
// Copied by `vantage add ui progress`. This file is yours to edit.
|
|
2
|
+
// Generated from @squadbase/squadkit registry/ui/progress.tsx by `pnpm run registry` (in Vantage, edit packages/squadkit, not registry/).
|
|
3
|
+
"use client"
|
|
4
|
+
|
|
5
|
+
import { Progress as ProgressPrimitive } from "@base-ui/react/progress"
|
|
6
|
+
|
|
7
|
+
import { cn } from "@squadbase/vantage/ui"
|
|
8
|
+
|
|
9
|
+
function Progress({
|
|
10
|
+
className,
|
|
11
|
+
children,
|
|
12
|
+
value,
|
|
13
|
+
...props
|
|
14
|
+
}: ProgressPrimitive.Root.Props) {
|
|
15
|
+
return (
|
|
16
|
+
<ProgressPrimitive.Root
|
|
17
|
+
value={value}
|
|
18
|
+
data-slot="progress"
|
|
19
|
+
className={cn("flex flex-wrap gap-3", className)}
|
|
20
|
+
{...props}
|
|
21
|
+
>
|
|
22
|
+
{children}
|
|
23
|
+
<ProgressTrack>
|
|
24
|
+
<ProgressIndicator />
|
|
25
|
+
</ProgressTrack>
|
|
26
|
+
</ProgressPrimitive.Root>
|
|
27
|
+
)
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
function ProgressTrack({ className, ...props }: ProgressPrimitive.Track.Props) {
|
|
31
|
+
return (
|
|
32
|
+
<ProgressPrimitive.Track
|
|
33
|
+
className={cn(
|
|
34
|
+
"relative flex h-1 w-full items-center overflow-x-hidden rounded-full bg-muted",
|
|
35
|
+
className
|
|
36
|
+
)}
|
|
37
|
+
data-slot="progress-track"
|
|
38
|
+
{...props}
|
|
39
|
+
/>
|
|
40
|
+
)
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
function ProgressIndicator({
|
|
44
|
+
className,
|
|
45
|
+
...props
|
|
46
|
+
}: ProgressPrimitive.Indicator.Props) {
|
|
47
|
+
return (
|
|
48
|
+
<ProgressPrimitive.Indicator
|
|
49
|
+
data-slot="progress-indicator"
|
|
50
|
+
className={cn("h-full bg-primary transition-all", className)}
|
|
51
|
+
{...props}
|
|
52
|
+
/>
|
|
53
|
+
)
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
function ProgressLabel({ className, ...props }: ProgressPrimitive.Label.Props) {
|
|
57
|
+
return (
|
|
58
|
+
<ProgressPrimitive.Label
|
|
59
|
+
className={cn("text-sm font-medium", className)}
|
|
60
|
+
data-slot="progress-label"
|
|
61
|
+
{...props}
|
|
62
|
+
/>
|
|
63
|
+
)
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
function ProgressValue({ className, ...props }: ProgressPrimitive.Value.Props) {
|
|
67
|
+
return (
|
|
68
|
+
<ProgressPrimitive.Value
|
|
69
|
+
className={cn(
|
|
70
|
+
"ml-auto text-sm text-muted-foreground tabular-nums",
|
|
71
|
+
className
|
|
72
|
+
)}
|
|
73
|
+
data-slot="progress-value"
|
|
74
|
+
{...props}
|
|
75
|
+
/>
|
|
76
|
+
)
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
export {
|
|
80
|
+
Progress,
|
|
81
|
+
ProgressTrack,
|
|
82
|
+
ProgressIndicator,
|
|
83
|
+
ProgressLabel,
|
|
84
|
+
ProgressValue,
|
|
85
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
// Copied by `vantage add ui radio-group`. This file is yours to edit.
|
|
2
|
+
// Generated from @squadbase/squadkit registry/ui/radio-group.tsx by `pnpm run registry` (in Vantage, edit packages/squadkit, not registry/).
|
|
3
|
+
"use client"
|
|
4
|
+
|
|
5
|
+
import { Radio as RadioPrimitive } from "@base-ui/react/radio"
|
|
6
|
+
import { RadioGroup as RadioGroupPrimitive } from "@base-ui/react/radio-group"
|
|
7
|
+
import { cn } from "@squadbase/vantage/ui"
|
|
8
|
+
|
|
9
|
+
function RadioGroup({ className, ...props }: RadioGroupPrimitive.Props) {
|
|
10
|
+
return (
|
|
11
|
+
<RadioGroupPrimitive
|
|
12
|
+
data-slot="radio-group"
|
|
13
|
+
className={cn("grid w-full gap-2", className)}
|
|
14
|
+
{...props}
|
|
15
|
+
/>
|
|
16
|
+
)
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
function RadioGroupItem({ className, ...props }: RadioPrimitive.Root.Props) {
|
|
20
|
+
return (
|
|
21
|
+
<RadioPrimitive.Root
|
|
22
|
+
data-slot="radio-group-item"
|
|
23
|
+
className={cn(
|
|
24
|
+
"group/radio-group-item peer relative flex aspect-square size-4 shrink-0 rounded-full border border-input outline-none group-has-[:focus-visible]/field-label:ring-0 group-has-[:focus-visible]/field-label:not-data-checked:border-input after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 aria-invalid:aria-checked:border-primary dark:bg-input/30 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-checked:border-primary data-checked:bg-primary data-checked:text-primary-foreground group-has-[:focus-visible]/field-label:data-checked:border-primary dark:data-checked:bg-primary",
|
|
25
|
+
className
|
|
26
|
+
)}
|
|
27
|
+
{...props}
|
|
28
|
+
>
|
|
29
|
+
<RadioPrimitive.Indicator
|
|
30
|
+
data-slot="radio-group-indicator"
|
|
31
|
+
className="flex size-4 items-center justify-center"
|
|
32
|
+
>
|
|
33
|
+
<span className="absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2 rounded-full bg-primary-foreground" />
|
|
34
|
+
</RadioPrimitive.Indicator>
|
|
35
|
+
</RadioPrimitive.Root>
|
|
36
|
+
)
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export { RadioGroup, RadioGroupItem }
|
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
// Copied by `vantage add ui sample-data`. This file is yours to edit.
|
|
2
|
+
// Generated from @squadbase/squadkit registry/components/sample-data.tsx by `pnpm run registry` (in Vantage, edit packages/squadkit, not registry/).
|
|
3
|
+
"use client"
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* SampleData — marks the values inside it as a sample: they are not connected to real data yet
|
|
7
|
+
* (a draft laid out before its queries are wired, a screen built from column definitions only).
|
|
8
|
+
* Not the same as `provisional` on KpiCard and the charts, which means 速報 — real values that are
|
|
9
|
+
* not final yet. For a single value in running text or a heading, use `Placeholder` instead.
|
|
10
|
+
*
|
|
11
|
+
* - **No box of its own.** It renders `display: contents`, so the grid / subgrid of the parent
|
|
12
|
+
* still sees the cards inside as its direct children (KpiCard rows keep lining up).
|
|
13
|
+
* - **The card shows the mark.** The nearest `KpiCard` or `DashboardCardPreset` inside it puts a
|
|
14
|
+
* `SampleBadge` in its header, once (also while loading): a card claims the mark, so the parts
|
|
15
|
+
* anywhere inside that card (body, actions, footer) do not repeat it. Put a bare chart in a
|
|
16
|
+
* `DashboardCardPreset` to have it marked.
|
|
17
|
+
* - The mark is a word, not only a colour (`--warning` on `--warning-subtle`), and its
|
|
18
|
+
* `title` says what it means.
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* import { SampleData } from "@/components/sample-data"
|
|
22
|
+
* // Vantage: import { SampleData } from "@squadbase/vantage/components"
|
|
23
|
+
* <SampleData>
|
|
24
|
+
* <KpiCard label="売上" value={12400000} format={{ type: "currency", currency: "JPY" }} />
|
|
25
|
+
* </SampleData>
|
|
26
|
+
*/
|
|
27
|
+
import { createContext, useContext, useMemo, type HTMLAttributes, type ReactNode } from "react"
|
|
28
|
+
|
|
29
|
+
import { cn } from "@squadbase/vantage/ui"
|
|
30
|
+
import { Badge } from "@squadbase/vantage/ui"
|
|
31
|
+
import { useSyncExternalStore } from "react"
|
|
32
|
+
|
|
33
|
+
/* ---------- inlined from @squadbase/squadkit registry/lib/locale.ts (internal to @squadbase/vantage) ---------- */
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* The display language of the parts and the defaults that follow it.
|
|
37
|
+
*
|
|
38
|
+
* The language comes from `<html lang>`: a tag starting with `ja` reads Japanese, anything else English.
|
|
39
|
+
* Without a usable `lang` (missing, invalid, or no `document` — SSR, Node) the locale is `FALLBACK_LOCALE`
|
|
40
|
+
* (`en-US`). A `locale` passed explicitly (a prop, an argument) always wins.
|
|
41
|
+
*
|
|
42
|
+
* Parts read the locale through `useLocale` (`hooks/use-locale`) and pass it down; the pure helpers here
|
|
43
|
+
* and in `format` / `comparison` / `chart-*` take it as an argument and fall back to `documentLocale()`.
|
|
44
|
+
*/
|
|
45
|
+
|
|
46
|
+
/** The language of the built-in wording: Japanese or English. */
|
|
47
|
+
type UiLanguage = "ja" | "en"
|
|
48
|
+
|
|
49
|
+
/** The locale used when `<html lang>` gives none (and on the server). */
|
|
50
|
+
const FALLBACK_LOCALE = "en-US"
|
|
51
|
+
|
|
52
|
+
/** `"ja"` when `locale` starts with `ja` (`ja`, `ja-JP`), else `"en"`. A missing locale is `"en"`. */
|
|
53
|
+
function uiLanguage(locale: string | null | undefined): UiLanguage {
|
|
54
|
+
return typeof locale === "string" && locale.trim().toLowerCase().startsWith("ja") ? "ja" : "en"
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/** A BCP 47 tag in its canonical form (`en-gb` → `en-GB`), or `FALLBACK_LOCALE` when it is empty or invalid. */
|
|
58
|
+
function normalizeLocale(tag: string | null | undefined): string {
|
|
59
|
+
const value = tag?.trim()
|
|
60
|
+
if (!value) return FALLBACK_LOCALE
|
|
61
|
+
try {
|
|
62
|
+
return Intl.getCanonicalLocales(value)[0] ?? FALLBACK_LOCALE
|
|
63
|
+
} catch {
|
|
64
|
+
return FALLBACK_LOCALE
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* The locale of the page: `document.documentElement.lang`, canonicalized. `FALLBACK_LOCALE` when it is empty or
|
|
70
|
+
* invalid, or there is no `document`. Parts read it through `useLocale`, never while rendering.
|
|
71
|
+
*/
|
|
72
|
+
function documentLocale(): string {
|
|
73
|
+
if (typeof document === "undefined") return FALLBACK_LOCALE
|
|
74
|
+
return normalizeLocale(document.documentElement?.getAttribute("lang"))
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
/** `locale` when given, else the page's locale (`documentLocale()`). */
|
|
78
|
+
function resolveLocale(locale?: string | null): string {
|
|
79
|
+
return locale || documentLocale()
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
/** Picks the wording table of the locale's language. */
|
|
83
|
+
function pickLocale<T>(table: { ja: T; en: T }, locale?: string | null): T {
|
|
84
|
+
return table[uiLanguage(resolveLocale(locale))]
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
/** The currency `format="currency"` uses without a `currency`: JPY for Japanese, USD otherwise. */
|
|
88
|
+
function defaultCurrency(locale?: string | null): string {
|
|
89
|
+
return uiLanguage(resolveLocale(locale)) === "ja" ? "JPY" : "USD"
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
/** The month a fiscal year starts in (1–12) when none is given: April for Japanese, January otherwise. */
|
|
93
|
+
function defaultFiscalYearStartMonth(locale?: string | null): number {
|
|
94
|
+
return uiLanguage(resolveLocale(locale)) === "ja" ? 4 : 1
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
/** A day of the week, 0 = Sunday … 6 = Saturday (the `Date#getDay` / date-fns numbering). */
|
|
98
|
+
type WeekDay = 0 | 1 | 2 | 3 | 4 | 5 | 6
|
|
99
|
+
|
|
100
|
+
/** Locales whose week starts on Sunday when the runtime has no week data. */
|
|
101
|
+
const SUNDAY_FIRST = new Set(["en", "en-US", "en-CA"])
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* The first day of the week: Monday for Japanese; otherwise the locale's convention from `Intl.Locale`
|
|
105
|
+
* (`en-US` Sunday, `en-GB` Monday). Without week data in the runtime: Sunday for `en` / `en-US` / `en-CA`,
|
|
106
|
+
* Monday for the rest.
|
|
107
|
+
*/
|
|
108
|
+
function weekStartsOn(locale?: string | null): WeekDay {
|
|
109
|
+
const tag = normalizeLocale(resolveLocale(locale))
|
|
110
|
+
if (uiLanguage(tag) === "ja") return 1
|
|
111
|
+
try {
|
|
112
|
+
const info = new Intl.Locale(tag) as Intl.Locale & {
|
|
113
|
+
getWeekInfo?: () => { firstDay: number }
|
|
114
|
+
weekInfo?: { firstDay: number }
|
|
115
|
+
}
|
|
116
|
+
const firstDay = info.getWeekInfo?.().firstDay ?? info.weekInfo?.firstDay
|
|
117
|
+
if (typeof firstDay === "number" && firstDay >= 1 && firstDay <= 7) return (firstDay % 7) as WeekDay
|
|
118
|
+
} catch {
|
|
119
|
+
// Fall through to the table below.
|
|
120
|
+
}
|
|
121
|
+
return SUNDAY_FIRST.has(tag) ? 0 : 1
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
/* ---------- inlined from @squadbase/squadkit registry/hooks/use-locale.ts (internal to @squadbase/vantage) ---------- */
|
|
125
|
+
|
|
126
|
+
const listeners = new Set<() => void>()
|
|
127
|
+
let observer: MutationObserver | null = null
|
|
128
|
+
|
|
129
|
+
/** One observer on `<html lang>` for every subscribed part. */
|
|
130
|
+
function subscribe(onChange: () => void): () => void {
|
|
131
|
+
if (typeof document === "undefined" || typeof MutationObserver === "undefined") return () => {}
|
|
132
|
+
listeners.add(onChange)
|
|
133
|
+
if (!observer) {
|
|
134
|
+
observer = new MutationObserver(() => {
|
|
135
|
+
for (const listener of [...listeners]) listener()
|
|
136
|
+
})
|
|
137
|
+
observer.observe(document.documentElement, { attributes: true, attributeFilter: ["lang"] })
|
|
138
|
+
}
|
|
139
|
+
return () => {
|
|
140
|
+
listeners.delete(onChange)
|
|
141
|
+
if (listeners.size === 0 && observer) {
|
|
142
|
+
observer.disconnect()
|
|
143
|
+
observer = null
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
const serverLocale = () => FALLBACK_LOCALE
|
|
149
|
+
|
|
150
|
+
/**
|
|
151
|
+
* The page's locale (`<html lang>`), following changes made while the page runs. On the server and during
|
|
152
|
+
* hydration it is `FALLBACK_LOCALE` (`en-US`), so the markup matches; it switches right after.
|
|
153
|
+
*/
|
|
154
|
+
function useDocumentLocale(): string {
|
|
155
|
+
return useSyncExternalStore(subscribe, documentLocale, serverLocale)
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
/** The locale a part renders in: its `locale` prop when given, else the page's (`useDocumentLocale`). */
|
|
159
|
+
function useLocale(locale?: string | null): string {
|
|
160
|
+
const page = useDocumentLocale()
|
|
161
|
+
return locale || page
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
/* ---------- end of inlined code ---------- */
|
|
165
|
+
|
|
166
|
+
const TEXT = {
|
|
167
|
+
ja: { label: "見本の値", title: "実データにまだつながっていない見本の値です" },
|
|
168
|
+
en: { label: "Sample data", title: "Sample values, not connected to real data yet" },
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
/**
|
|
172
|
+
* The mark's wording in English (the fallback language). Without a `label`, the mark follows the page's
|
|
173
|
+
* language (`<html lang>`): ja reads「見本の値」.
|
|
174
|
+
*/
|
|
175
|
+
export const DEFAULT_SAMPLE_LABEL = TEXT.en.label
|
|
176
|
+
|
|
177
|
+
interface SampleState {
|
|
178
|
+
label: string
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
const SampleContext = createContext<SampleState | null>(null)
|
|
182
|
+
|
|
183
|
+
/**
|
|
184
|
+
* The mark a card inside `SampleData` should show, or null. A card that shows it wraps its
|
|
185
|
+
* content in `<SampleClaim>` so the parts inside do not show it again.
|
|
186
|
+
*/
|
|
187
|
+
export function useSampleMark(): SampleState | null {
|
|
188
|
+
return useContext(SampleContext)
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
/** Ends the `SampleData` scope for the parts inside a card that already shows the mark. */
|
|
192
|
+
export function SampleClaim({ children }: { children?: ReactNode }) {
|
|
193
|
+
return <SampleContext.Provider value={null}>{children}</SampleContext.Provider>
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
export interface SampleBadgeProps extends HTMLAttributes<HTMLSpanElement> {
|
|
197
|
+
/** 印の文言。既定はページの言語で「見本の値」(英語は "Sample data")。 */
|
|
198
|
+
label?: string
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
export function SampleBadge({ label, className, ...props }: SampleBadgeProps) {
|
|
202
|
+
const t = TEXT[uiLanguage(useLocale())]
|
|
203
|
+
return (
|
|
204
|
+
<Badge
|
|
205
|
+
data-slot="sample-badge"
|
|
206
|
+
title={t.title}
|
|
207
|
+
className={cn("border-warning/20 dark:border-warning/25 bg-warning-subtle text-warning align-middle", className)}
|
|
208
|
+
{...props}
|
|
209
|
+
>
|
|
210
|
+
{label ?? t.label}
|
|
211
|
+
</Badge>
|
|
212
|
+
)
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
export interface SampleDataProps {
|
|
216
|
+
/** 印の文言。既定はページの言語で「見本の値」(英語は "Sample data")。 */
|
|
217
|
+
label?: string
|
|
218
|
+
children?: ReactNode
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
export function SampleData({ label, children }: SampleDataProps) {
|
|
222
|
+
const shown = label ?? TEXT[uiLanguage(useLocale())].label
|
|
223
|
+
// A stable value, so the cards inside do not re-render when only the parent does.
|
|
224
|
+
const state = useMemo(() => ({ label: shown }), [shown])
|
|
225
|
+
return (
|
|
226
|
+
<div data-slot="sample-data" style={{ display: "contents" }}>
|
|
227
|
+
<SampleContext.Provider value={state}>{children}</SampleContext.Provider>
|
|
228
|
+
</div>
|
|
229
|
+
)
|
|
230
|
+
}
|