@elabs-ai/components-ui 5.1.0 → 5.3.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/dist/{chunk-KBWHHAI3.js → chunk-2ZWUTZHE.js} +2 -2
- package/dist/{chunk-SSQG36MH.js → chunk-34CYSZ2F.js} +2 -2
- package/dist/chunk-34CYSZ2F.js.map +1 -0
- package/dist/{chunk-AXHMQOIZ.js → chunk-3GJLYUZ6.js} +3 -3
- package/dist/{chunk-CEDK5GM2.js → chunk-5AJQUJ5C.js} +2 -2
- package/dist/{chunk-MDQYRES4.js → chunk-5KNLME6F.js} +11 -5
- package/dist/chunk-5KNLME6F.js.map +1 -0
- package/dist/{chunk-ERTYAID6.js → chunk-5QQFXDUY.js} +5 -3
- package/dist/{chunk-ERTYAID6.js.map → chunk-5QQFXDUY.js.map} +1 -1
- package/dist/{chunk-E3GNYOLS.js → chunk-64BKIIJC.js} +2 -2
- package/dist/{chunk-RHVYRQN4.js → chunk-7ZJLR6RP.js} +2 -2
- package/dist/{chunk-HWVU636Q.js → chunk-A3JF66ZC.js} +3 -3
- package/dist/{chunk-NZUKZRT7.js → chunk-A3TT32GE.js} +2 -2
- package/dist/{chunk-C2ICCCP5.js → chunk-A4ZSNEZD.js} +2 -2
- package/dist/{chunk-JTY3REOB.js → chunk-BGXBANS2.js} +3 -3
- package/dist/{chunk-MY5H6D5Y.js → chunk-C4FNDXBM.js} +2 -2
- package/dist/{chunk-QF6UWWDY.js → chunk-C4FZWPI4.js} +1 -1
- package/dist/{chunk-QF6UWWDY.js.map → chunk-C4FZWPI4.js.map} +1 -1
- package/dist/{chunk-QLM3KTAQ.js → chunk-C6I5I5LA.js} +3 -3
- package/dist/{chunk-IE5GWE72.js → chunk-CF7YSCCA.js} +3 -3
- package/dist/chunk-CF7YSCCA.js.map +1 -0
- package/dist/{chunk-RYPK72YP.js → chunk-CGY25FAG.js} +2 -2
- package/dist/{chunk-HDS64Z5L.js → chunk-DIL73NE3.js} +2 -2
- package/dist/{chunk-VC4GKLZL.js → chunk-EHN5ZAHP.js} +2 -2
- package/dist/{chunk-HXQ4MDCH.js → chunk-F6FF4EJN.js} +2 -2
- package/dist/{chunk-V5QCJHDA.js → chunk-FC2LHNJG.js} +3 -3
- package/dist/{chunk-ZRMF4YAS.js → chunk-FCVHZDP7.js} +3 -3
- package/dist/{chunk-BYFRDLDL.js → chunk-FKDI2T7X.js} +2 -2
- package/dist/{chunk-GWHO5ACE.js → chunk-FNRVVVXX.js} +2 -2
- package/dist/{chunk-Y33ZFTMR.js → chunk-FWAFP76U.js} +2 -2
- package/dist/{chunk-ZALGMUSW.js → chunk-HUXLE3K3.js} +2 -2
- package/dist/{chunk-NRPZ3BH4.js → chunk-I3LBIBVN.js} +2 -2
- package/dist/{chunk-GTDCC4YX.js → chunk-IV6OYZTL.js} +2 -2
- package/dist/{chunk-4DWIMWR5.js → chunk-JQIXRCLG.js} +2 -2
- package/dist/{chunk-M5WPZXBA.js → chunk-JU4KW7JN.js} +3 -3
- package/dist/{chunk-PSXUEWUS.js → chunk-LVY7B5PD.js} +2 -2
- package/dist/{chunk-FLCQKC64.js → chunk-MIWFBH5S.js} +3 -3
- package/dist/{chunk-6TJVJPNU.js → chunk-O6AIFSTX.js} +46 -1
- package/dist/chunk-O6AIFSTX.js.map +1 -0
- package/dist/{chunk-EJQYE4MY.js → chunk-OFFWEDKY.js} +2 -2
- package/dist/{chunk-W7OIVERI.js → chunk-ONXBRQJT.js} +2 -2
- package/dist/{chunk-ENL3CCZB.js → chunk-PCNQ6NP2.js} +5 -5
- package/dist/{chunk-BRL2HMZJ.js → chunk-PFGQDW3H.js} +2 -2
- package/dist/{chunk-GMXSCEYN.js → chunk-R6CITZBB.js} +2 -2
- package/dist/{chunk-CY5ISPFB.js → chunk-RHZSAWAU.js} +2 -2
- package/dist/{chunk-FXC64HLD.js → chunk-S7YR3FYZ.js} +2 -2
- package/dist/{chunk-W35X6J5P.js → chunk-SD5MGHIJ.js} +3 -3
- package/dist/{chunk-2DFB4YTK.js → chunk-SJHDX73F.js} +2 -2
- package/dist/{chunk-MRBDJASL.js → chunk-SQLEVIAD.js} +3 -3
- package/dist/{chunk-3EDNWHWD.js → chunk-SR3SC2Q3.js} +2 -2
- package/dist/{chunk-HANBQNW3.js → chunk-U7ADXWTI.js} +26 -14
- package/dist/chunk-U7ADXWTI.js.map +1 -0
- package/dist/{chunk-CEHCVDYR.js → chunk-U7CSWQAE.js} +3 -3
- package/dist/{chunk-SWQCCR6Q.js → chunk-U7FC5J6J.js} +3 -3
- package/dist/{chunk-4VCU3GFI.js → chunk-UVVVKPSH.js} +2 -2
- package/dist/{chunk-BDOG4YSM.js → chunk-VAWYYETZ.js} +8 -8
- package/dist/{chunk-ALNJV4XB.js → chunk-WDZ47ZTX.js} +2 -2
- package/dist/{chunk-HHZJALGA.js → chunk-WL2EZDSD.js} +3 -3
- package/dist/{chunk-UQPW7INX.js → chunk-XE6GYGWS.js} +2 -2
- package/dist/{chunk-OGTILHKP.js → chunk-Y3CKZ7SH.js} +3 -3
- package/dist/{chunk-RIYDAMSQ.js → chunk-YA2CG4YL.js} +2 -2
- package/dist/{chunk-4DZGAY6R.js → chunk-ZESSUMCO.js} +2 -2
- package/dist/{chunk-L6A3RXCU.js → chunk-ZGNWDYSC.js} +3 -3
- package/dist/components/advanced-group/advanced-group.js +3 -3
- package/dist/components/advanced-group/index.js +3 -3
- package/dist/components/app-sidebar/app-sidebar.js +5 -5
- package/dist/components/app-sidebar/index.js +5 -5
- package/dist/components/attribution-panel/attribution-panel.js +4 -4
- package/dist/components/attribution-panel/attributions.generated.js +1 -1
- package/dist/components/attribution-panel/index.js +4 -4
- package/dist/components/bounded-number/bounded-number.js +4 -4
- package/dist/components/bounded-number/index.js +4 -4
- package/dist/components/breadcrumb/breadcrumb.js +3 -3
- package/dist/components/breadcrumb/index.js +3 -3
- package/dist/components/carousel/carousel.js +3 -3
- package/dist/components/carousel/index.js +3 -3
- package/dist/components/change-review/change-review.js +4 -4
- package/dist/components/change-review/index.js +4 -4
- package/dist/components/color-picker/color-picker.js +3 -3
- package/dist/components/color-picker/index.js +3 -3
- package/dist/components/combobox/combobox.js +5 -5
- package/dist/components/combobox/index.js +5 -5
- package/dist/components/command/command.js +4 -4
- package/dist/components/command/index.js +4 -4
- package/dist/components/confirm-dialog/confirm-dialog.js +4 -4
- package/dist/components/confirm-dialog/index.js +4 -4
- package/dist/components/context-rail/context-rail.js +6 -6
- package/dist/components/context-rail/index.js +6 -6
- package/dist/components/copyable-value/copyable-value.js +3 -3
- package/dist/components/copyable-value/index.js +3 -3
- package/dist/components/date-picker/date-picker.js +3 -3
- package/dist/components/date-picker/index.js +3 -3
- package/dist/components/date-range-picker/date-range-picker.js +3 -3
- package/dist/components/date-range-picker/index.js +3 -3
- package/dist/components/dialog/dialog.js +3 -3
- package/dist/components/dialog/index.js +3 -3
- package/dist/components/empty-state/empty-state.js +4 -4
- package/dist/components/empty-state/index.js +4 -4
- package/dist/components/error-state/error-state.js +4 -4
- package/dist/components/error-state/index.js +4 -4
- package/dist/components/expand-dialog/expand-dialog.js +4 -4
- package/dist/components/expand-dialog/index.js +4 -4
- package/dist/components/file-upload/file-upload.js +3 -3
- package/dist/components/file-upload/index.js +3 -3
- package/dist/components/key-value-editor/index.js +3 -3
- package/dist/components/key-value-editor/key-value-editor.js +3 -3
- package/dist/components/keyboard-shortcuts/index.js +4 -4
- package/dist/components/keyboard-shortcuts/keyboard-shortcuts.js +4 -4
- package/dist/components/list-editor/index.js +3 -3
- package/dist/components/list-editor/list-editor.js +3 -3
- package/dist/components/loading-state/index.js +4 -4
- package/dist/components/loading-state/loading-state.js +4 -4
- package/dist/components/locale-provider/index.js +2 -2
- package/dist/components/locale-provider/locale-provider.js +2 -2
- package/dist/components/locale-provider/messages.js +1 -1
- package/dist/components/mention-input/index.js +3 -3
- package/dist/components/mention-input/mention-input.js +3 -3
- package/dist/components/metric-card/index.js +4 -4
- package/dist/components/metric-card/metric-card.js +4 -4
- package/dist/components/model-picker/index.js +5 -5
- package/dist/components/model-picker/model-picker.js +5 -5
- package/dist/components/nav-main/index.js +5 -5
- package/dist/components/nav-main/nav-main.js +5 -5
- package/dist/components/nav-notifications/index.js +3 -3
- package/dist/components/nav-notifications/nav-notifications.js +3 -3
- package/dist/components/nav-user/index.js +5 -5
- package/dist/components/nav-user/nav-user.js +5 -5
- package/dist/components/number-input/index.js +3 -3
- package/dist/components/number-input/number-input.js +3 -3
- package/dist/components/pagination/index.js +3 -3
- package/dist/components/pagination/pagination.js +3 -3
- package/dist/components/revision-timeline/index.js +3 -3
- package/dist/components/revision-timeline/revision-timeline.js +3 -3
- package/dist/components/schema-form/index.js +9 -9
- package/dist/components/schema-form/schema-form.js +9 -9
- package/dist/components/sheet/index.js +3 -3
- package/dist/components/sheet/sheet.js +3 -3
- package/dist/components/side-dock/index.js +4 -4
- package/dist/components/side-dock/side-dock.js +4 -4
- package/dist/components/sidebar/index.js +4 -4
- package/dist/components/sidebar/sidebar.js +4 -4
- package/dist/components/slider-number/index.js +4 -4
- package/dist/components/slider-number/slider-number.js +4 -4
- package/dist/components/spec-playground/index.js +2 -2
- package/dist/components/spec-playground/locate-json-path.js +1 -1
- package/dist/components/spec-playground/spec-playground.js +2 -2
- package/dist/components/spinner/index.js +3 -3
- package/dist/components/spinner/spinner.js +3 -3
- package/dist/components/state-panel/index.js +3 -3
- package/dist/components/state-panel/state-panel.js +3 -3
- package/dist/components/table/index.js +3 -3
- package/dist/components/table/table.js +3 -3
- package/dist/components/team-switcher/index.js +5 -5
- package/dist/components/team-switcher/team-switcher.js +5 -5
- package/dist/components/theme-switcher/index.js +3 -3
- package/dist/components/theme-switcher/theme-switcher.js +3 -3
- package/dist/components/toolbar/index.js +1 -1
- package/dist/components/toolbar/toolbar.js +1 -1
- package/dist/components/transfer/index.js +3 -3
- package/dist/components/transfer/transfer.js +3 -3
- package/dist/components/tree/index.js +4 -4
- package/dist/components/tree/tree.js +4 -4
- package/dist/components/tree-select/index.js +5 -5
- package/dist/components/tree-select/tree-select.js +5 -5
- package/dist/components/view-toolbar/index.js +3 -3
- package/dist/components/view-toolbar/view-toolbar.js +3 -3
- package/dist/components/virtual-select/index.js +3 -3
- package/dist/components/virtual-select/virtual-select.js +3 -3
- package/dist/components/workspace-picker/index.js +6 -6
- package/dist/components/workspace-picker/workspace-picker.js +6 -6
- package/dist/index.d.ts +18 -3
- package/dist/index.js +60 -57
- package/dist/lib/streamdown-translations.js +3 -3
- package/package.json +3 -3
- package/src/components/attribution-panel/attributions.generated.ts +26 -14
- package/src/components/locale-provider/messages.ts +47 -0
- package/src/components/metric-card/metric-card.tsx +1 -1
- package/src/components/spec-playground/locate-json-path.ts +1 -1
- package/src/components/spec-playground/spec-playground.tsx +1 -1
- package/src/components/toolbar/toolbar.tsx +4 -2
- package/src/components/tree/tree.stories.tsx +28 -0
- package/src/components/tree/tree.tsx +17 -2
- package/src/index.ts +3 -0
- package/dist/chunk-6TJVJPNU.js.map +0 -1
- package/dist/chunk-HANBQNW3.js.map +0 -1
- package/dist/chunk-IE5GWE72.js.map +0 -1
- package/dist/chunk-MDQYRES4.js.map +0 -1
- package/dist/chunk-SSQG36MH.js.map +0 -1
- /package/dist/{chunk-KBWHHAI3.js.map → chunk-2ZWUTZHE.js.map} +0 -0
- /package/dist/{chunk-AXHMQOIZ.js.map → chunk-3GJLYUZ6.js.map} +0 -0
- /package/dist/{chunk-CEDK5GM2.js.map → chunk-5AJQUJ5C.js.map} +0 -0
- /package/dist/{chunk-E3GNYOLS.js.map → chunk-64BKIIJC.js.map} +0 -0
- /package/dist/{chunk-RHVYRQN4.js.map → chunk-7ZJLR6RP.js.map} +0 -0
- /package/dist/{chunk-HWVU636Q.js.map → chunk-A3JF66ZC.js.map} +0 -0
- /package/dist/{chunk-NZUKZRT7.js.map → chunk-A3TT32GE.js.map} +0 -0
- /package/dist/{chunk-C2ICCCP5.js.map → chunk-A4ZSNEZD.js.map} +0 -0
- /package/dist/{chunk-JTY3REOB.js.map → chunk-BGXBANS2.js.map} +0 -0
- /package/dist/{chunk-MY5H6D5Y.js.map → chunk-C4FNDXBM.js.map} +0 -0
- /package/dist/{chunk-QLM3KTAQ.js.map → chunk-C6I5I5LA.js.map} +0 -0
- /package/dist/{chunk-RYPK72YP.js.map → chunk-CGY25FAG.js.map} +0 -0
- /package/dist/{chunk-HDS64Z5L.js.map → chunk-DIL73NE3.js.map} +0 -0
- /package/dist/{chunk-VC4GKLZL.js.map → chunk-EHN5ZAHP.js.map} +0 -0
- /package/dist/{chunk-HXQ4MDCH.js.map → chunk-F6FF4EJN.js.map} +0 -0
- /package/dist/{chunk-V5QCJHDA.js.map → chunk-FC2LHNJG.js.map} +0 -0
- /package/dist/{chunk-ZRMF4YAS.js.map → chunk-FCVHZDP7.js.map} +0 -0
- /package/dist/{chunk-BYFRDLDL.js.map → chunk-FKDI2T7X.js.map} +0 -0
- /package/dist/{chunk-GWHO5ACE.js.map → chunk-FNRVVVXX.js.map} +0 -0
- /package/dist/{chunk-Y33ZFTMR.js.map → chunk-FWAFP76U.js.map} +0 -0
- /package/dist/{chunk-ZALGMUSW.js.map → chunk-HUXLE3K3.js.map} +0 -0
- /package/dist/{chunk-NRPZ3BH4.js.map → chunk-I3LBIBVN.js.map} +0 -0
- /package/dist/{chunk-GTDCC4YX.js.map → chunk-IV6OYZTL.js.map} +0 -0
- /package/dist/{chunk-4DWIMWR5.js.map → chunk-JQIXRCLG.js.map} +0 -0
- /package/dist/{chunk-M5WPZXBA.js.map → chunk-JU4KW7JN.js.map} +0 -0
- /package/dist/{chunk-PSXUEWUS.js.map → chunk-LVY7B5PD.js.map} +0 -0
- /package/dist/{chunk-FLCQKC64.js.map → chunk-MIWFBH5S.js.map} +0 -0
- /package/dist/{chunk-EJQYE4MY.js.map → chunk-OFFWEDKY.js.map} +0 -0
- /package/dist/{chunk-W7OIVERI.js.map → chunk-ONXBRQJT.js.map} +0 -0
- /package/dist/{chunk-ENL3CCZB.js.map → chunk-PCNQ6NP2.js.map} +0 -0
- /package/dist/{chunk-BRL2HMZJ.js.map → chunk-PFGQDW3H.js.map} +0 -0
- /package/dist/{chunk-GMXSCEYN.js.map → chunk-R6CITZBB.js.map} +0 -0
- /package/dist/{chunk-CY5ISPFB.js.map → chunk-RHZSAWAU.js.map} +0 -0
- /package/dist/{chunk-FXC64HLD.js.map → chunk-S7YR3FYZ.js.map} +0 -0
- /package/dist/{chunk-W35X6J5P.js.map → chunk-SD5MGHIJ.js.map} +0 -0
- /package/dist/{chunk-2DFB4YTK.js.map → chunk-SJHDX73F.js.map} +0 -0
- /package/dist/{chunk-MRBDJASL.js.map → chunk-SQLEVIAD.js.map} +0 -0
- /package/dist/{chunk-3EDNWHWD.js.map → chunk-SR3SC2Q3.js.map} +0 -0
- /package/dist/{chunk-CEHCVDYR.js.map → chunk-U7CSWQAE.js.map} +0 -0
- /package/dist/{chunk-SWQCCR6Q.js.map → chunk-U7FC5J6J.js.map} +0 -0
- /package/dist/{chunk-4VCU3GFI.js.map → chunk-UVVVKPSH.js.map} +0 -0
- /package/dist/{chunk-BDOG4YSM.js.map → chunk-VAWYYETZ.js.map} +0 -0
- /package/dist/{chunk-ALNJV4XB.js.map → chunk-WDZ47ZTX.js.map} +0 -0
- /package/dist/{chunk-HHZJALGA.js.map → chunk-WL2EZDSD.js.map} +0 -0
- /package/dist/{chunk-UQPW7INX.js.map → chunk-XE6GYGWS.js.map} +0 -0
- /package/dist/{chunk-OGTILHKP.js.map → chunk-Y3CKZ7SH.js.map} +0 -0
- /package/dist/{chunk-RIYDAMSQ.js.map → chunk-YA2CG4YL.js.map} +0 -0
- /package/dist/{chunk-4DZGAY6R.js.map → chunk-ZESSUMCO.js.map} +0 -0
- /package/dist/{chunk-L6A3RXCU.js.map → chunk-ZGNWDYSC.js.map} +0 -0
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
} from "./chunk-LDOCY4SU.js";
|
|
5
5
|
import {
|
|
6
6
|
CopyableValue
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-5AJQUJ5C.js";
|
|
8
8
|
import {
|
|
9
9
|
Card,
|
|
10
10
|
CardContent
|
|
@@ -14,7 +14,7 @@ import {
|
|
|
14
14
|
} from "./chunk-UPGIQXUY.js";
|
|
15
15
|
import {
|
|
16
16
|
useLocale
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-OFFWEDKY.js";
|
|
18
18
|
import {
|
|
19
19
|
cn
|
|
20
20
|
} from "./chunk-FXWWDMMP.js";
|
|
@@ -174,4 +174,4 @@ var MetricCard = forwardRef(function MetricCard2({
|
|
|
174
174
|
export {
|
|
175
175
|
MetricCard
|
|
176
176
|
};
|
|
177
|
-
//# sourceMappingURL=chunk-
|
|
177
|
+
//# sourceMappingURL=chunk-CF7YSCCA.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/metric-card/metric-card.tsx"],"sourcesContent":["\"use client\";\n\nimport { type HTMLAttributes, type ReactNode, forwardRef } from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { Card, CardContent } from \"../card\";\nimport { CopyableValue } from \"../copyable-value\";\nimport { Skeleton } from \"../skeleton\";\nimport { useLocale } from \"../locale-provider\";\nimport { cn } from \"../../lib/cn\";\nimport {\n type NumberFormat,\n type ResolvedNumberFormat,\n resolveNumberFormat,\n} from \"../../lib/compact-number\";\n\n/**\n * Applies a {@link ResolvedNumberFormat}'s `prefix`/`suffix`/`parens` on top\n * of the plain `Intl` string `formatNumber` produces — the two things Intl\n * itself cannot render (RM-109). Twin of `formatResolvedChartValue`\n * (`packages/charts/src/charts/chart-formatters.ts`).\n */\nfunction formatResolvedNumber(\n resolved: ResolvedNumberFormat,\n formatNumber: (n: number, opts?: Intl.NumberFormatOptions) => string,\n value: number,\n): string {\n const numeric = formatNumber(resolved.parens ? Math.abs(value) : value, resolved.options);\n const signed = resolved.parens && value < 0 ? `(${numeric})` : numeric;\n return `${resolved.prefix}${signed}${resolved.suffix}`;\n}\n\n/*\n * ADR 0012: this is the ONE KPI tile — `@elabs-ai/components-charts` re-exports it.\n * RM-072 adds `size` (sm | md | lg) for dashboard tiles and a `sparkline`\n * slot under the value. `ui` never imports `charts`: the host passes the\n * `<Sparkline …/>` element in.\n */\n\n/*\n * `emphasis` — size/weight/space ONLY, no new hue (research 11 §B.5 KPI-1/5):\n * `headline` is the answer-leading rung (`text-kpi`, ~32px); `default` stays\n * calm on the intermediate 1.5rem reading rung (the pre-#188 step between\n * `title` and `kpi` — no app role exists there, same precedent as the prose\n * h1/h3 rungs; baselined in the text-scale ratchet).\n */\nconst metricValueVariants = cva(\"tabular-nums text-foreground\", {\n variants: {\n emphasis: {\n default: \"text-2xl font-semibold tracking-tight\",\n headline: \"text-kpi\",\n },\n /* `md` adds nothing (today's rungs); `sm`/`lg` override the size via `cn()`. */\n size: {\n sm: \"text-title\",\n md: \"\",\n lg: \"text-kpi\",\n },\n },\n defaultVariants: { emphasis: \"default\", size: \"md\" },\n});\n\nconst metricContentVariants = cva(\"space-y-2\", {\n variants: {\n emphasis: {\n default: \"p-5\",\n headline: \"p-6\",\n },\n size: {\n sm: \"space-y-1 p-3\",\n md: \"\",\n lg: \"p-6\",\n },\n },\n defaultVariants: { emphasis: \"default\", size: \"md\" },\n});\n\nconst metricSparklineVariants = cva(\"\", {\n variants: {\n size: {\n /* never rendered — `sm` drops the slot; kept so the axis is total */\n sm: \"\",\n md: \"pt-1\",\n lg: \"min-h-12 pt-2\",\n },\n },\n defaultVariants: { size: \"md\" },\n});\n\nexport type MetricCardEmphasis = NonNullable<VariantProps<typeof metricValueVariants>[\"emphasis\"]>;\n\n/**\n * Tile tier (RM-072). `sm`: label + value only (no icon, delta, description,\n * sparkline, visual or evidence); `md`: the default tile; `lg`: the kpi value\n * rung with more room for the `sparkline` slot.\n */\nexport type MetricCardSize = NonNullable<VariantProps<typeof metricValueVariants>[\"size\"]>;\n\n/**\n * How a NUMERIC `value` is rendered. A function takes over completely.\n *\n * `\"compact\"` is the default because a KPI tile is a small box and\n * `50012102.632741` does not fit in one — the exact figure stays one click\n * away via `CopyableValue`. Anything that is not a `number` (a string, an\n * element) is passed through untouched, so every existing call site is\n * unaffected.\n *\n * Also accepts the object form (RM-109, `NumberFormatSpec` —\n * `{ decimals, abbreviate, sign, prefix, suffix, … }`,\n * `packages/ui/src/lib/compact-number.ts`) for a tile that needs e.g.\n * `{ decimals: 1, suffix: \"%\" }` without hand-formatting the string itself.\n * The two preset-string cases render byte-for-byte as before this type\n * widened — only a spec OBJECT argument reaches the new code path.\n */\nexport type MetricCardValueFormat = NumberFormat | ((value: number) => ReactNode);\n\nexport interface MetricCardProps\n extends HTMLAttributes<HTMLDivElement>, VariantProps<typeof metricValueVariants> {\n label: ReactNode;\n value: ReactNode;\n /**\n * How to render a NUMERIC `value`. Default: `\"compact\"`. Ignored for every\n * other `ReactNode` — a string you already formatted is rendered verbatim.\n */\n valueFormat?: MetricCardValueFormat;\n /** ISO 4217 code for `valueFormat: \"currency\"`. Default: `\"USD\"`. */\n currency?: string;\n /**\n * Offer the exact figure on click when a numeric `value` was shortened.\n * Default: `true`. Turning it off leaves a compacted number with no way back\n * to its digits, so only do that when the tile is decorative.\n */\n copyExactValue?: boolean;\n /** Secondary line under the value — sublabel / context. */\n description?: ReactNode;\n /** Signed change, e.g. \"+12.4%\". Direction colors it. */\n delta?: string;\n deltaDirection?: \"up\" | \"down\" | \"neutral\";\n /** Whether \"up\" is good (green) — flip for metrics where down is good. */\n positiveIsGood?: boolean;\n icon?: ReactNode;\n /** Optional inline visual shown under the value/description. */\n visual?: ReactNode;\n /**\n * Trend slot rendered directly under the value (RM-072) — pass a\n * `<Sparkline …/>` from `@elabs-ai/components-charts`. Hidden at `size=\"sm\"`.\n */\n sparkline?: ReactNode;\n /**\n * Optional grounding footer (research 11 §B.5 KPI-3) — connects a cited\n * figure to its source (e.g. an `EvidenceChip` from `@elabs-ai/components-ai`). Rendered\n * subdued (`text-meta text-muted-foreground`) under the tile body.\n */\n evidence?: ReactNode;\n /**\n * Loading vs ready — renders a layout-shaped skeleton (matching the real\n * box height) instead of the value/label/delta text. Default: `false`.\n */\n loading?: boolean;\n /**\n * Whether this tile announces its own `loading` state via a live region.\n * Set to `false` when several tiles are composed inside a container that\n * already announces once for the whole region (e.g. a loading\n * `MetricGrid`) — see loading-states.md §a11y (\"one live region per\n * region, not per box\"). Default: `true`.\n */\n announceLoading?: boolean;\n}\n\n/** Compact KPI tile for dashboards. */\nexport const MetricCard = forwardRef<HTMLDivElement, MetricCardProps>(function MetricCard(\n {\n label,\n value,\n valueFormat = \"compact\",\n currency,\n copyExactValue = true,\n description,\n delta,\n deltaDirection = \"neutral\",\n positiveIsGood = true,\n icon,\n visual,\n sparkline,\n evidence,\n emphasis,\n size,\n loading = false,\n announceLoading = true,\n className,\n ...props\n },\n ref,\n) {\n const { t, formatNumber } = useLocale();\n\n // Formatting applies to NUMBERS only. Every shipped call site passes a string\n // it formatted itself, so this branch is inert for them — that is what makes\n // a new default safe.\n const isNumeric = typeof value === \"number\";\n const formattedValue: ReactNode = !isNumeric\n ? value\n : typeof valueFormat === \"function\"\n ? valueFormat(value)\n : formatResolvedNumber(\n resolveNumberFormat(valueFormat, value, currency),\n formatNumber,\n value,\n );\n // Only offer the exact figure when the display actually differs from it —\n // a button around a value that was never shortened is noise.\n const showsExact = isNumeric && String(formattedValue) === String(value);\n const canCopyExact =\n isNumeric && copyExactValue && typeof valueFormat !== \"function\" && !showsExact;\n\n const good =\n deltaDirection === \"up\" ? positiveIsGood : deltaDirection === \"down\" ? !positiveIsGood : null;\n const deltaColor =\n good === null ? \"text-muted-foreground\" : good ? \"text-success-text\" : \"text-destructive-text\";\n // Stable, theme-agnostic polarity hook. High decoration reveals a non-color\n // polarity glyph from this attribute (decoration.css); chromatic themes ignore it\n // and use color. Issue #162.\n const polarity = good === null ? \"neutral\" : good ? \"good\" : \"bad\";\n const arrow = deltaDirection === \"up\" ? \"↑\" : deltaDirection === \"down\" ? \"↓\" : \"\";\n // Direction is conveyed visually by the arrow glyph + color; give AT a single\n // unambiguous name (\"up 12.4%, favorable\") since neither the glyph nor color is a\n // reliable signal (high decoration / high-contrast collapse the hue) — and good/bad\n // polarity is otherwise invisible to AT. See accessibility.md, #162.\n const directionLabel = deltaDirection === \"up\" ? \"up\" : deltaDirection === \"down\" ? \"down\" : \"\";\n const polarityLabel = good === null ? \"\" : good ? \", favorable\" : \", unfavorable\";\n // `sm` is label + value only: every secondary row is dropped (RM-072).\n const compact = size === \"sm\";\n const valueClassName = cn(metricValueVariants({ emphasis, size }));\n\n return (\n <Card ref={ref} className={cn(\"overflow-hidden\", className)} {...props}>\n <CardContent\n className={cn(metricContentVariants({ emphasis, size }))}\n {...(loading && announceLoading ? { role: \"status\", \"aria-live\": \"polite\" as const } : {})}\n >\n {loading && announceLoading ? (\n <span className=\"sr-only\">{t(\"ui.metricCard.loading\")}</span>\n ) : null}\n <div className=\"flex items-center justify-between\">\n {loading ? (\n <Skeleton className=\"h-4 w-24\" />\n ) : (\n /* `min-w-0` + `truncate`, not just the text utility: a flex child's\n default `min-width: auto` refuses to shrink below its content, so\n without it the label OVERFLOWS the row and `Card`'s own\n `overflow-hidden` hard-clips it — characters lost mid-word, no\n ellipsis, no title. Measured on a 230px pane: \"Awaiting approval\"\n rendered as \"Awaiting approva\". See interaction-guidelines.md\n § Content handling (\"flex children need `min-w-0`\"). `title` only\n when the label is a string — there is nothing to put in the\n attribute otherwise, and the ellipsis needs a way back to the\n full words. */\n <span\n className=\"min-w-0 truncate text-body font-medium text-muted-foreground\"\n title={typeof label === \"string\" ? label : undefined}\n >\n {label}\n </span>\n )}\n {/* `shrink-0`: the icon is a fixed 16px mark, so the LABEL is what\n gives way when the row runs out of width. */}\n {icon && !compact ? (\n <span className=\"shrink-0 text-muted-foreground [&_svg]:size-4\">{icon}</span>\n ) : null}\n </div>\n <div className=\"flex items-baseline gap-2\">\n {loading ? (\n <Skeleton className={emphasis === \"headline\" ? \"h-9 w-28\" : \"h-8 w-24\"} />\n ) : canCopyExact ? (\n <CopyableValue\n className={valueClassName}\n // Two tiles in one grid can compact to the same display (\"$1.2M\"),\n // and the visible label is a sibling node the button's name does\n // not include — so without this a screen-reader user tabbing the\n // grid hears the identical name twice. A non-string label has no\n // text to borrow; the default hint stands.\n hint={\n typeof label === \"string\" ? `${label}, ${t(\"ui.copyableValue.hint\")}` : undefined\n }\n value={String(value)}\n >\n {formattedValue}\n </CopyableValue>\n ) : (\n <span className={valueClassName}>{formattedValue}</span>\n )}\n {delta && !compact ? (\n loading ? (\n <Skeleton className=\"h-4 w-14\" />\n ) : (\n <span\n data-polarity={polarity}\n className={cn(\"text-meta tabular-nums\", deltaColor)}\n aria-label={\n directionLabel ? `${directionLabel} ${delta}${polarityLabel}` : undefined\n }\n >\n {arrow ? <span aria-hidden=\"true\">{arrow} </span> : null}\n {delta}\n </span>\n )\n ) : null}\n </div>\n {sparkline && !compact ? (\n <div className={metricSparklineVariants({ size })}>\n {loading ? <Skeleton className=\"h-8 w-full\" /> : sparkline}\n </div>\n ) : null}\n {description && !compact ? (\n loading ? (\n <Skeleton className=\"h-3 w-32\" />\n ) : (\n <p className=\"text-meta font-normal text-muted-foreground\">{description}</p>\n )\n ) : null}\n {visual && !compact ? (\n <div className=\"pt-1\">{loading ? <Skeleton className=\"h-8 w-full\" /> : visual}</div>\n ) : null}\n {evidence && !compact ? (\n <div className=\"pt-1 text-meta font-normal text-muted-foreground\">\n {loading ? <Skeleton className=\"h-3 w-24\" /> : evidence}\n </div>\n ) : null}\n </CardContent>\n </Card>\n );\n});\n"],"mappings":"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","names":["MetricCard"]}
|
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
} from "./chunk-HND6FAMX.js";
|
|
5
5
|
import {
|
|
6
6
|
useLocale
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-OFFWEDKY.js";
|
|
8
8
|
import {
|
|
9
9
|
Button
|
|
10
10
|
} from "./chunk-C5QBV5RE.js";
|
|
@@ -392,4 +392,4 @@ export {
|
|
|
392
392
|
FileUploadList,
|
|
393
393
|
FileUploadItem
|
|
394
394
|
};
|
|
395
|
-
//# sourceMappingURL=chunk-
|
|
395
|
+
//# sourceMappingURL=chunk-CGY25FAG.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import {
|
|
3
3
|
useLocale
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-OFFWEDKY.js";
|
|
5
5
|
|
|
6
6
|
// src/lib/streamdown-translations.ts
|
|
7
7
|
import { useMemo } from "react";
|
|
@@ -51,4 +51,4 @@ export {
|
|
|
51
51
|
STREAMDOWN_TRANSLATION_KEYS,
|
|
52
52
|
useStreamdownTranslations
|
|
53
53
|
};
|
|
54
|
-
//# sourceMappingURL=chunk-
|
|
54
|
+
//# sourceMappingURL=chunk-DIL73NE3.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import {
|
|
3
3
|
useLocale
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-OFFWEDKY.js";
|
|
5
5
|
import {
|
|
6
6
|
cn
|
|
7
7
|
} from "./chunk-FXWWDMMP.js";
|
|
@@ -108,4 +108,4 @@ export {
|
|
|
108
108
|
BreadcrumbEllipsis,
|
|
109
109
|
BreadcrumbItems
|
|
110
110
|
};
|
|
111
|
-
//# sourceMappingURL=chunk-
|
|
111
|
+
//# sourceMappingURL=chunk-EHN5ZAHP.js.map
|
|
@@ -15,7 +15,7 @@ import {
|
|
|
15
15
|
} from "./chunk-HNLYRHAU.js";
|
|
16
16
|
import {
|
|
17
17
|
useLocale
|
|
18
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-OFFWEDKY.js";
|
|
19
19
|
import {
|
|
20
20
|
Button
|
|
21
21
|
} from "./chunk-C5QBV5RE.js";
|
|
@@ -293,4 +293,4 @@ var VirtualSelect = forwardRef(
|
|
|
293
293
|
export {
|
|
294
294
|
VirtualSelect
|
|
295
295
|
};
|
|
296
|
-
//# sourceMappingURL=chunk-
|
|
296
|
+
//# sourceMappingURL=chunk-F6FF4EJN.js.map
|
|
@@ -11,7 +11,7 @@ import {
|
|
|
11
11
|
CommandInput,
|
|
12
12
|
CommandItem,
|
|
13
13
|
CommandList
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-RHZSAWAU.js";
|
|
15
15
|
import {
|
|
16
16
|
Popover,
|
|
17
17
|
PopoverContent,
|
|
@@ -22,7 +22,7 @@ import {
|
|
|
22
22
|
} from "./chunk-UPGIQXUY.js";
|
|
23
23
|
import {
|
|
24
24
|
useLocale
|
|
25
|
-
} from "./chunk-
|
|
25
|
+
} from "./chunk-OFFWEDKY.js";
|
|
26
26
|
import {
|
|
27
27
|
Button
|
|
28
28
|
} from "./chunk-C5QBV5RE.js";
|
|
@@ -170,4 +170,4 @@ var ModelPicker = forwardRef(function ModelPicker2({
|
|
|
170
170
|
export {
|
|
171
171
|
ModelPicker
|
|
172
172
|
};
|
|
173
|
-
//# sourceMappingURL=chunk-
|
|
173
|
+
//# sourceMappingURL=chunk-FC2LHNJG.js.map
|
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
} from "./chunk-5C5W52O2.js";
|
|
5
5
|
import {
|
|
6
6
|
StatePanel
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-FWAFP76U.js";
|
|
8
8
|
import {
|
|
9
9
|
Input
|
|
10
10
|
} from "./chunk-I3U52BDH.js";
|
|
@@ -18,7 +18,7 @@ import {
|
|
|
18
18
|
} from "./chunk-HNLYRHAU.js";
|
|
19
19
|
import {
|
|
20
20
|
useLocale
|
|
21
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-OFFWEDKY.js";
|
|
22
22
|
import {
|
|
23
23
|
cn
|
|
24
24
|
} from "./chunk-FXWWDMMP.js";
|
|
@@ -155,4 +155,4 @@ function ShortcutGroupItem({ group, items, forceOpen }) {
|
|
|
155
155
|
export {
|
|
156
156
|
KeyboardShortcuts
|
|
157
157
|
};
|
|
158
|
-
//# sourceMappingURL=chunk-
|
|
158
|
+
//# sourceMappingURL=chunk-FCVHZDP7.js.map
|
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
} from "./chunk-5MXQ5CP7.js";
|
|
6
6
|
import {
|
|
7
7
|
useLocale
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-OFFWEDKY.js";
|
|
9
9
|
import {
|
|
10
10
|
cn
|
|
11
11
|
} from "./chunk-FXWWDMMP.js";
|
|
@@ -243,4 +243,4 @@ export {
|
|
|
243
243
|
DialogBody,
|
|
244
244
|
DialogSection
|
|
245
245
|
};
|
|
246
|
-
//# sourceMappingURL=chunk-
|
|
246
|
+
//# sourceMappingURL=chunk-FKDI2T7X.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import {
|
|
3
3
|
useLocale
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-OFFWEDKY.js";
|
|
5
5
|
import {
|
|
6
6
|
cn
|
|
7
7
|
} from "./chunk-FXWWDMMP.js";
|
|
@@ -634,4 +634,4 @@ export {
|
|
|
634
634
|
laneColor,
|
|
635
635
|
RevisionTimeline
|
|
636
636
|
};
|
|
637
|
-
//# sourceMappingURL=chunk-
|
|
637
|
+
//# sourceMappingURL=chunk-FNRVVVXX.js.map
|
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
} from "./chunk-CEQ3YKHR.js";
|
|
5
5
|
import {
|
|
6
6
|
useLocale
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-OFFWEDKY.js";
|
|
8
8
|
import {
|
|
9
9
|
cn
|
|
10
10
|
} from "./chunk-FXWWDMMP.js";
|
|
@@ -160,4 +160,4 @@ export {
|
|
|
160
160
|
statePanelVariants,
|
|
161
161
|
StatePanel
|
|
162
162
|
};
|
|
163
|
-
//# sourceMappingURL=chunk-
|
|
163
|
+
//# sourceMappingURL=chunk-FWAFP76U.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import {
|
|
3
3
|
useLocale
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-OFFWEDKY.js";
|
|
5
5
|
import {
|
|
6
6
|
Button
|
|
7
7
|
} from "./chunk-C5QBV5RE.js";
|
|
@@ -233,4 +233,4 @@ export {
|
|
|
233
233
|
CarouselPrevious,
|
|
234
234
|
CarouselNext
|
|
235
235
|
};
|
|
236
|
-
//# sourceMappingURL=chunk-
|
|
236
|
+
//# sourceMappingURL=chunk-HUXLE3K3.js.map
|
|
@@ -13,7 +13,7 @@ import {
|
|
|
13
13
|
} from "./chunk-PGKQZBLZ.js";
|
|
14
14
|
import {
|
|
15
15
|
useLocale
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-OFFWEDKY.js";
|
|
17
17
|
import {
|
|
18
18
|
Button
|
|
19
19
|
} from "./chunk-C5QBV5RE.js";
|
|
@@ -82,4 +82,4 @@ function NavNotifications({
|
|
|
82
82
|
export {
|
|
83
83
|
NavNotifications
|
|
84
84
|
};
|
|
85
|
-
//# sourceMappingURL=chunk-
|
|
85
|
+
//# sourceMappingURL=chunk-I3LBIBVN.js.map
|
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
} from "./chunk-55BM2IU2.js";
|
|
7
7
|
import {
|
|
8
8
|
useLocale
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-OFFWEDKY.js";
|
|
10
10
|
|
|
11
11
|
// src/components/number-input/number-input.tsx
|
|
12
12
|
import { forwardRef, useCallback, useRef, useState } from "react";
|
|
@@ -194,4 +194,4 @@ var NumberInput = forwardRef(function NumberInput2({
|
|
|
194
194
|
export {
|
|
195
195
|
NumberInput
|
|
196
196
|
};
|
|
197
|
-
//# sourceMappingURL=chunk-
|
|
197
|
+
//# sourceMappingURL=chunk-IV6OYZTL.js.map
|
|
@@ -22,7 +22,7 @@ import {
|
|
|
22
22
|
} from "./chunk-FZEG2R3E.js";
|
|
23
23
|
import {
|
|
24
24
|
useLocale
|
|
25
|
-
} from "./chunk-
|
|
25
|
+
} from "./chunk-OFFWEDKY.js";
|
|
26
26
|
import {
|
|
27
27
|
cn
|
|
28
28
|
} from "./chunk-FXWWDMMP.js";
|
|
@@ -723,4 +723,4 @@ export {
|
|
|
723
723
|
MentionInputItem,
|
|
724
724
|
MentionInputEmpty
|
|
725
725
|
};
|
|
726
|
-
//# sourceMappingURL=chunk-
|
|
726
|
+
//# sourceMappingURL=chunk-JQIXRCLG.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import {
|
|
3
3
|
Tree
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-5KNLME6F.js";
|
|
5
5
|
import {
|
|
6
6
|
Popover,
|
|
7
7
|
PopoverContent,
|
|
@@ -12,7 +12,7 @@ import {
|
|
|
12
12
|
} from "./chunk-HNLYRHAU.js";
|
|
13
13
|
import {
|
|
14
14
|
useLocale
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-OFFWEDKY.js";
|
|
16
16
|
import {
|
|
17
17
|
Button
|
|
18
18
|
} from "./chunk-C5QBV5RE.js";
|
|
@@ -115,4 +115,4 @@ var TreeSelect = forwardRef(function TreeSelect2({ nodes, value, defaultValue, o
|
|
|
115
115
|
export {
|
|
116
116
|
TreeSelect
|
|
117
117
|
};
|
|
118
|
-
//# sourceMappingURL=chunk-
|
|
118
|
+
//# sourceMappingURL=chunk-JU4KW7JN.js.map
|
|
@@ -9,7 +9,7 @@ import {
|
|
|
9
9
|
} from "./chunk-HNLYRHAU.js";
|
|
10
10
|
import {
|
|
11
11
|
useLocale
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-OFFWEDKY.js";
|
|
13
13
|
import {
|
|
14
14
|
cn
|
|
15
15
|
} from "./chunk-FXWWDMMP.js";
|
|
@@ -84,4 +84,4 @@ function AdvancedGroup({
|
|
|
84
84
|
export {
|
|
85
85
|
AdvancedGroup
|
|
86
86
|
};
|
|
87
|
-
//# sourceMappingURL=chunk-
|
|
87
|
+
//# sourceMappingURL=chunk-LVY7B5PD.js.map
|
|
@@ -18,10 +18,10 @@ import {
|
|
|
18
18
|
SidebarMenuButton,
|
|
19
19
|
SidebarMenuItem,
|
|
20
20
|
useSidebar
|
|
21
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-A3JF66ZC.js";
|
|
22
22
|
import {
|
|
23
23
|
useLocale
|
|
24
|
-
} from "./chunk-
|
|
24
|
+
} from "./chunk-OFFWEDKY.js";
|
|
25
25
|
|
|
26
26
|
// src/components/nav-user/nav-user.tsx
|
|
27
27
|
import { ChevronsUpDown, LogOut, Settings } from "lucide-react";
|
|
@@ -94,4 +94,4 @@ function NavUser({ user, onSettings, settingsHref, onSignOut, children }) {
|
|
|
94
94
|
export {
|
|
95
95
|
NavUser
|
|
96
96
|
};
|
|
97
|
-
//# sourceMappingURL=chunk-
|
|
97
|
+
//# sourceMappingURL=chunk-MIWFBH5S.js.map
|
|
@@ -385,6 +385,13 @@ var DEFAULT_MESSAGES = {
|
|
|
385
385
|
"charts.gantt.unitMinute": "Minute",
|
|
386
386
|
"charts.gantt.unitSecond": "Second",
|
|
387
387
|
"charts.gantt.unitMillisecond": "Millisecond",
|
|
388
|
+
// Gantt zoom controls (the scale buttons are presets; these move the density freely).
|
|
389
|
+
"charts.gantt.zoom": "Zoom",
|
|
390
|
+
"charts.gantt.zoomIn": "Zoom in",
|
|
391
|
+
"charts.gantt.zoomOut": "Zoom out",
|
|
392
|
+
"charts.gantt.zoomToFit": "Fit to width",
|
|
393
|
+
"charts.gantt.scrollToToday": "Today",
|
|
394
|
+
"charts.gantt.scrollToTask": "Scroll to {name}",
|
|
388
395
|
// BulletChart (Few's bullet graph, RM-061). The SVG is aria-hidden, so this
|
|
389
396
|
// sentence — built from these fragments — is the ONLY thing AT reads: it
|
|
390
397
|
// states the value, its relationship to the target, and which qualitative
|
|
@@ -428,6 +435,44 @@ var DEFAULT_MESSAGES = {
|
|
|
428
435
|
"charts.dashboard.edit.clampedEdge": "At the {edge} edge. ({x},{y}) {w} \xD7 {h}",
|
|
429
436
|
"charts.dashboard.edit.moveCancelled": "Move cancelled. Restored to column {x}, row {y}",
|
|
430
437
|
"charts.dashboard.edit.resizeCancelled": "Resize cancelled. Restored to column {x}, row {y}, size {w} by {h}",
|
|
438
|
+
// dashboard pack rebuild: locked tiles, the empty sheet, the edit-mode tile chrome.
|
|
439
|
+
"charts.dashboard.edit.locked": "{title} is locked",
|
|
440
|
+
"charts.dashboard.edit.lock": "Lock position and size",
|
|
441
|
+
"charts.dashboard.edit.unlock": "Unlock",
|
|
442
|
+
"charts.dashboard.edit.emptyTitle": "This sheet is empty",
|
|
443
|
+
"charts.dashboard.edit.emptyDescription": "Drag a tile from the asset panel onto the sheet, or press Add in the toolbar.",
|
|
444
|
+
"charts.dashboard.edit.emptyViewTitle": "Nothing to show yet",
|
|
445
|
+
"charts.dashboard.edit.emptyViewDescription": "Switch to Edit to add the first tile.",
|
|
446
|
+
"charts.dashboard.edit.tileDuplicate": "Duplicate {title}",
|
|
447
|
+
"charts.dashboard.edit.tileDelete": "Delete {title}",
|
|
448
|
+
"charts.dashboard.edit.tileProperties": "Properties of {title}",
|
|
449
|
+
"charts.dashboard.edit.tileMore": "More actions for {title}",
|
|
450
|
+
"charts.dashboard.toolbar.assets": "Assets",
|
|
451
|
+
"charts.dashboard.toolbar.properties": "Properties",
|
|
452
|
+
"charts.dashboard.toolbar.layout": "Layout",
|
|
453
|
+
"charts.dashboard.toolbar.showGrid": "Show grid",
|
|
454
|
+
"charts.dashboard.toolbar.tidyUp": "Tidy up",
|
|
455
|
+
"charts.dashboard.toolbar.tidyUpDescription": "Reflow every tile into a clean reading order",
|
|
456
|
+
"charts.dashboard.toolbar.selectAll": "Select all",
|
|
457
|
+
"charts.dashboard.toolbar.deleteSelection": "Delete selection",
|
|
458
|
+
"charts.dashboard.toolbar.duplicateSelection": "Duplicate selection",
|
|
459
|
+
"charts.dashboard.toolbar.editSheet": "Edit sheet",
|
|
460
|
+
"charts.dashboard.toolbar.done": "Done",
|
|
461
|
+
"charts.dashboard.toolbar.more": "More",
|
|
462
|
+
"charts.dashboard.toolbar.saved": "All changes saved",
|
|
463
|
+
"charts.dashboard.toolbar.layoutFor": "Layout for",
|
|
464
|
+
"charts.dashboard.toolbar.layoutBase": "Desktop",
|
|
465
|
+
"charts.dashboard.toolbar.layoutMd": "Tablet",
|
|
466
|
+
"charts.dashboard.toolbar.layoutSm": "Phone",
|
|
467
|
+
"charts.dashboard.toolbar.gridDensityNow": "{columns} \xD7 {rows} cells",
|
|
468
|
+
"charts.dashboard.toolbar.gridDensityFlow": "{columns} columns \xB7 {rowHeight} px rows",
|
|
469
|
+
"charts.dashboard.properties.layout": "Layout",
|
|
470
|
+
"charts.dashboard.properties.column": "Column",
|
|
471
|
+
"charts.dashboard.properties.row": "Row",
|
|
472
|
+
"charts.dashboard.properties.width": "Width",
|
|
473
|
+
"charts.dashboard.properties.height": "Height",
|
|
474
|
+
"charts.dashboard.properties.lockedDescription": "A locked tile keeps its cells when others move.",
|
|
475
|
+
"charts.dashboard.properties.noRoom": "No room for that size here",
|
|
431
476
|
// dashboard toolbar — RM-079: mode switch, undo/redo, grid settings, save/discard, shortcuts.
|
|
432
477
|
"charts.dashboard.toolbar.ariaLabel": "Dashboard toolbar",
|
|
433
478
|
"charts.dashboard.toolbar.viewMode": "View",
|
|
@@ -1318,4 +1363,4 @@ var DEFAULT_MESSAGES = {
|
|
|
1318
1363
|
export {
|
|
1319
1364
|
DEFAULT_MESSAGES
|
|
1320
1365
|
};
|
|
1321
|
-
//# sourceMappingURL=chunk-
|
|
1366
|
+
//# sourceMappingURL=chunk-O6AIFSTX.js.map
|