@gram-ai/elements 1.27.4 → 1.27.6
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/README.md +72 -60
- package/README.typedoc.md +6 -6
- package/bin/cli.js +74 -74
- package/dist/compat-shims-CO9JXXV4.cjs.map +1 -1
- package/dist/{compat-shims-BPJ7Q68c.js → compat-shims-DxtUrORi.js} +4 -2
- package/dist/compat-shims-DxtUrORi.js.map +1 -0
- package/dist/components/ShareButton/index.d.ts +2 -2
- package/dist/components/assistant-ui/message-feedback.d.ts +1 -1
- package/dist/components/assistant-ui/tooltip-icon-button.d.ts +2 -2
- package/dist/components/ui/avatar.d.ts +2 -2
- package/dist/components/ui/button.d.ts +1 -1
- package/dist/components/ui/calendar.d.ts +1 -1
- package/dist/components/ui/collapsible.d.ts +1 -1
- package/dist/components/ui/dialog.d.ts +4 -4
- package/dist/components/ui/popover.d.ts +2 -2
- package/dist/components/ui/skeleton.d.ts +1 -1
- package/dist/components/ui/time-range-picker.d.ts +1 -1
- package/dist/components/ui/tool-ui.d.ts +7 -7
- package/dist/components/ui/tooltip.d.ts +2 -2
- package/dist/contexts/ConnectionStatusContext.d.ts +1 -1
- package/dist/elements.cjs +1 -1
- package/dist/elements.css +1 -1
- package/dist/elements.js +2 -2
- package/dist/hooks/useDensity.d.ts +73 -73
- package/dist/hooks/useMCPTools.d.ts +1 -1
- package/dist/hooks/useRadius.d.ts +1 -1
- package/dist/{index-KSX4Qjip.cjs → index-A17b62wR.cjs} +10 -10
- package/dist/index-A17b62wR.cjs.map +1 -0
- package/dist/{index-BpJstUh1.cjs → index-C4bFBGfl.cjs} +4 -4
- package/dist/{index-BpJstUh1.cjs.map → index-C4bFBGfl.cjs.map} +1 -1
- package/dist/{index-CUitXazZ.js → index-D93pV0_o.js} +55 -55
- package/dist/{index-CUitXazZ.js.map → index-D93pV0_o.js.map} +1 -1
- package/dist/{index-D0bAYNQy.js → index-Dm2wLFTN.js} +304 -282
- package/dist/index-Dm2wLFTN.js.map +1 -0
- package/dist/lib/cassette.d.ts +4 -4
- package/dist/lib/errorTracking.d.ts +1 -1
- package/dist/lib/messageConverter.d.ts +1 -1
- package/dist/lib/models.d.ts +1 -1
- package/dist/plugins/chart/ui/bar-chart.d.ts +1 -1
- package/dist/plugins/generative-ui/ui/accordion-wrapper.d.ts +2 -2
- package/dist/plugins/generative-ui/ui/accordion.d.ts +1 -1
- package/dist/plugins/generative-ui/ui/action-button.d.ts +2 -2
- package/dist/plugins/generative-ui/ui/alert-wrapper.d.ts +1 -1
- package/dist/plugins/generative-ui/ui/alert.d.ts +4 -4
- package/dist/plugins/generative-ui/ui/avatar.d.ts +5 -5
- package/dist/plugins/generative-ui/ui/badge.d.ts +2 -2
- package/dist/plugins/generative-ui/ui/button-wrapper.d.ts +2 -2
- package/dist/plugins/generative-ui/ui/button.d.ts +2 -2
- package/dist/plugins/generative-ui/ui/card-wrapper.d.ts +2 -2
- package/dist/plugins/generative-ui/ui/card.d.ts +8 -8
- package/dist/plugins/generative-ui/ui/checkbox.d.ts +1 -1
- package/dist/plugins/generative-ui/ui/data-table.d.ts +2 -2
- package/dist/plugins/generative-ui/ui/dialog.d.ts +3 -3
- package/dist/plugins/generative-ui/ui/dropdown-menu.d.ts +3 -3
- package/dist/plugins/generative-ui/ui/grid.d.ts +3 -3
- package/dist/plugins/generative-ui/ui/input-wrapper.d.ts +1 -1
- package/dist/plugins/generative-ui/ui/input.d.ts +2 -2
- package/dist/plugins/generative-ui/ui/label.d.ts +1 -1
- package/dist/plugins/generative-ui/ui/metric.d.ts +3 -3
- package/dist/plugins/generative-ui/ui/pagination.d.ts +6 -6
- package/dist/plugins/generative-ui/ui/popover.d.ts +4 -4
- package/dist/plugins/generative-ui/ui/progress.d.ts +2 -2
- package/dist/plugins/generative-ui/ui/radio-group.d.ts +1 -1
- package/dist/plugins/generative-ui/ui/select.d.ts +2 -2
- package/dist/plugins/generative-ui/ui/separator.d.ts +1 -1
- package/dist/plugins/generative-ui/ui/skeleton.d.ts +1 -1
- package/dist/plugins/generative-ui/ui/stack.d.ts +6 -6
- package/dist/plugins/generative-ui/ui/switch.d.ts +2 -2
- package/dist/plugins/generative-ui/ui/table.d.ts +9 -9
- package/dist/plugins/generative-ui/ui/tabs-wrapper.d.ts +1 -1
- package/dist/plugins/generative-ui/ui/tabs.d.ts +1 -1
- package/dist/plugins/generative-ui/ui/text.d.ts +3 -3
- package/dist/plugins/generative-ui/ui/textarea.d.ts +2 -2
- package/dist/plugins/generative-ui/ui/tooltip.d.ts +1 -1
- package/dist/plugins.cjs +1 -1
- package/dist/plugins.js +1 -1
- package/dist/{profiler-CyzxBxVz.cjs → profiler-Cbbf4eEX.cjs} +2 -2
- package/dist/{profiler-CyzxBxVz.cjs.map → profiler-Cbbf4eEX.cjs.map} +1 -1
- package/dist/{profiler-BFkhZRxj.js → profiler-mca4IXaY.js} +2 -2
- package/dist/{profiler-BFkhZRxj.js.map → profiler-mca4IXaY.js.map} +1 -1
- package/dist/react-shim.js +1 -1
- package/dist/server/express.cjs.map +1 -1
- package/dist/server/express.js.map +1 -1
- package/dist/{startRecording-C-PPAs_Z.js → startRecording-BCafdS7B.js} +2 -2
- package/dist/{startRecording-C-PPAs_Z.js.map → startRecording-BCafdS7B.js.map} +1 -1
- package/dist/{startRecording-Dq92sEHf.cjs → startRecording-Eb5f7wqP.cjs} +2 -2
- package/dist/{startRecording-Dq92sEHf.cjs.map → startRecording-Eb5f7wqP.cjs.map} +1 -1
- package/dist/types/index.d.ts +4 -4
- package/package.json +1 -5
- package/src/compat-plugin.ts +14 -14
- package/src/compat-shims.ts +33 -31
- package/src/compat.test.ts +48 -48
- package/src/compat.ts +6 -6
- package/src/components/Chat/index.tsx +17 -17
- package/src/components/Chat/stories/Charts.stories.tsx +98 -98
- package/src/components/Chat/stories/Composer.stories.tsx +15 -15
- package/src/components/Chat/stories/ConnectionConfiguration.stories.tsx +44 -44
- package/src/components/Chat/stories/CustomComponents.stories.tsx +17 -17
- package/src/components/Chat/stories/Density.stories.tsx +20 -20
- package/src/components/Chat/stories/ErrorBoundary.stories.tsx +47 -47
- package/src/components/Chat/stories/FrontendTools.stories.tsx +39 -39
- package/src/components/Chat/stories/GenerativeUI.stories.tsx +48 -48
- package/src/components/Chat/stories/MessageFeedback.stories.tsx +52 -52
- package/src/components/Chat/stories/Modal.stories.tsx +28 -28
- package/src/components/Chat/stories/Model.stories.tsx +11 -11
- package/src/components/Chat/stories/Radius.stories.tsx +20 -20
- package/src/components/Chat/stories/Sidecar.stories.tsx +13 -13
- package/src/components/Chat/stories/StyleIsolation.stories.tsx +11 -11
- package/src/components/Chat/stories/Theme.stories.tsx +25 -25
- package/src/components/Chat/stories/Thread.stories.tsx +25 -25
- package/src/components/Chat/stories/ToolApproval.stories.tsx +55 -55
- package/src/components/Chat/stories/ToolMentions.stories.tsx +17 -17
- package/src/components/Chat/stories/Tools.stories.tsx +88 -88
- package/src/components/Chat/stories/Variants.stories.tsx +32 -32
- package/src/components/Chat/stories/Welcome.stories.tsx +14 -14
- package/src/components/ChatHistory.tsx +7 -7
- package/src/components/FrontendTools/index.tsx +5 -5
- package/src/components/Replay.stories.tsx +157 -157
- package/src/components/Replay.tsx +76 -73
- package/src/components/ShadowRoot.tsx +40 -40
- package/src/components/ShareButton/index.tsx +32 -32
- package/src/components/assistant-ui/assistant-modal.tsx +92 -87
- package/src/components/assistant-ui/assistant-sidecar.tsx +35 -35
- package/src/components/assistant-ui/attachment.tsx +80 -80
- package/src/components/assistant-ui/connection-status-indicator.tsx +33 -33
- package/src/components/assistant-ui/error-boundary.tsx +34 -34
- package/src/components/assistant-ui/follow-on-suggestions.tsx +26 -26
- package/src/components/assistant-ui/markdown-text.tsx +69 -69
- package/src/components/assistant-ui/mentioned-tools-badges.tsx +38 -38
- package/src/components/assistant-ui/message-feedback.tsx +57 -50
- package/src/components/assistant-ui/reasoning.tsx +83 -83
- package/src/components/assistant-ui/thread-list.tsx +45 -45
- package/src/components/assistant-ui/thread.tsx +278 -278
- package/src/components/assistant-ui/tool-fallback.tsx +37 -37
- package/src/components/assistant-ui/tool-group.tsx +26 -26
- package/src/components/assistant-ui/tool-mention-autocomplete.tsx +122 -122
- package/src/components/assistant-ui/tooltip-icon-button.tsx +18 -18
- package/src/components/ui/avatar.tsx +12 -12
- package/src/components/ui/button.tsx +12 -12
- package/src/components/ui/buttonVariants.ts +17 -17
- package/src/components/ui/calendar.tsx +106 -106
- package/src/components/ui/charts.stories.tsx +56 -56
- package/src/components/ui/collapsible.tsx +5 -5
- package/src/components/ui/dialog.tsx +30 -30
- package/src/components/ui/generative-ui.stories.tsx +200 -200
- package/src/components/ui/generative-ui.tsx +26 -26
- package/src/components/ui/popover.tsx +14 -14
- package/src/components/ui/skeleton.tsx +5 -5
- package/src/components/ui/time-range-picker.stories.tsx +80 -80
- package/src/components/ui/time-range-picker.tsx +248 -246
- package/src/components/ui/tool-ui.stories.tsx +37 -37
- package/src/components/ui/tool-ui.tsx +221 -215
- package/src/components/ui/tooltip.tsx +15 -15
- package/src/constants/tailwind.ts +1 -1
- package/src/contexts/ChatIdContext.tsx +7 -7
- package/src/contexts/ConnectionStatusContext.tsx +64 -64
- package/src/contexts/ElementsProvider.tsx +214 -213
- package/src/contexts/ReplayContext.ts +3 -3
- package/src/contexts/ToolApprovalContext.tsx +54 -54
- package/src/contexts/ToolExecutionContext.tsx +34 -34
- package/src/contexts/contexts.ts +7 -7
- package/src/contexts/portal-container-context.ts +2 -2
- package/src/contexts/portal-container.tsx +7 -7
- package/src/embedded.ts +1 -1
- package/src/global.css +25 -25
- package/src/hooks/useAuth.ts +72 -72
- package/src/hooks/useDensity.ts +79 -79
- package/src/hooks/useElements.ts +6 -6
- package/src/hooks/useExpanded.ts +12 -12
- package/src/hooks/useFollowOnSuggestions.ts +83 -83
- package/src/hooks/useGramThreadListAdapter.tsx +99 -99
- package/src/hooks/useMCPTools.ts +47 -47
- package/src/hooks/useModel.ts +14 -14
- package/src/hooks/usePluginComponents.ts +11 -11
- package/src/hooks/usePortalContainer.ts +5 -5
- package/src/hooks/useRadius.ts +23 -23
- package/src/hooks/useRecordCassette.ts +34 -34
- package/src/hooks/useSession.ts +11 -11
- package/src/hooks/useThemeProps.ts +13 -13
- package/src/hooks/useThreadId.ts +4 -4
- package/src/hooks/useToolApproval.ts +7 -7
- package/src/hooks/useToolMentions.ts +40 -40
- package/src/index.ts +26 -26
- package/src/lib/api.test.ts +61 -61
- package/src/lib/api.ts +4 -3
- package/src/lib/auth.ts +13 -13
- package/src/lib/cassette.ts +84 -84
- package/src/lib/easing.ts +1 -1
- package/src/lib/errorTracking.config.ts +5 -5
- package/src/lib/errorTracking.ts +29 -29
- package/src/lib/generative-ui.ts +7 -7
- package/src/lib/humanize.ts +3 -3
- package/src/lib/messageConverter.test.ts +130 -127
- package/src/lib/messageConverter.ts +196 -196
- package/src/lib/models.ts +28 -20
- package/src/lib/token.test.ts +56 -56
- package/src/lib/token.ts +14 -14
- package/src/lib/tool-mentions.ts +45 -45
- package/src/lib/tools.ts +66 -62
- package/src/lib/utils.ts +5 -5
- package/src/lib.d.ts +1 -1
- package/src/plugins/README.md +5 -5
- package/src/plugins/chart/catalog.ts +18 -18
- package/src/plugins/chart/chart.test.ts +31 -31
- package/src/plugins/chart/component.tsx +34 -34
- package/src/plugins/chart/index.ts +4 -4
- package/src/plugins/chart/ui/area-chart.tsx +42 -42
- package/src/plugins/chart/ui/bar-chart.tsx +46 -46
- package/src/plugins/chart/ui/donut-chart.tsx +48 -48
- package/src/plugins/chart/ui/index.ts +7 -7
- package/src/plugins/chart/ui/line-chart.tsx +43 -43
- package/src/plugins/chart/ui/pie-chart.tsx +44 -44
- package/src/plugins/chart/ui/radar-chart.tsx +33 -33
- package/src/plugins/chart/ui/scatter-chart.tsx +43 -43
- package/src/plugins/components/MacOSWindowFrame.tsx +15 -15
- package/src/plugins/components/PluginLoadingState.tsx +10 -10
- package/src/plugins/components/index.ts +1 -1
- package/src/plugins/generative-ui/catalog.ts +54 -54
- package/src/plugins/generative-ui/component.tsx +85 -85
- package/src/plugins/generative-ui/index.ts +4 -4
- package/src/plugins/generative-ui/ui/accordion-wrapper.tsx +16 -16
- package/src/plugins/generative-ui/ui/accordion.tsx +16 -16
- package/src/plugins/generative-ui/ui/action-button.tsx +28 -28
- package/src/plugins/generative-ui/ui/alert-wrapper.tsx +8 -8
- package/src/plugins/generative-ui/ui/alert.tsx +20 -20
- package/src/plugins/generative-ui/ui/avatar-wrapper.tsx +7 -7
- package/src/plugins/generative-ui/ui/avatar.tsx +30 -30
- package/src/plugins/generative-ui/ui/badge.tsx +22 -22
- package/src/plugins/generative-ui/ui/button-wrapper.tsx +12 -12
- package/src/plugins/generative-ui/ui/button.tsx +28 -28
- package/src/plugins/generative-ui/ui/card-wrapper.tsx +8 -8
- package/src/plugins/generative-ui/ui/card.tsx +27 -27
- package/src/plugins/generative-ui/ui/checkbox-wrapper.tsx +9 -9
- package/src/plugins/generative-ui/ui/checkbox.tsx +9 -9
- package/src/plugins/generative-ui/ui/data-table.tsx +8 -8
- package/src/plugins/generative-ui/ui/dialog.tsx +31 -31
- package/src/plugins/generative-ui/ui/dropdown-menu.tsx +44 -44
- package/src/plugins/generative-ui/ui/grid.tsx +12 -12
- package/src/plugins/generative-ui/ui/index.ts +40 -40
- package/src/plugins/generative-ui/ui/input-wrapper.tsx +11 -11
- package/src/plugins/generative-ui/ui/input.tsx +9 -9
- package/src/plugins/generative-ui/ui/label.tsx +8 -8
- package/src/plugins/generative-ui/ui/list.tsx +11 -11
- package/src/plugins/generative-ui/ui/metric.tsx +23 -23
- package/src/plugins/generative-ui/ui/pagination.tsx +28 -28
- package/src/plugins/generative-ui/ui/popover.tsx +21 -21
- package/src/plugins/generative-ui/ui/progress.tsx +13 -13
- package/src/plugins/generative-ui/ui/radio-group.tsx +12 -12
- package/src/plugins/generative-ui/ui/select-wrapper.tsx +7 -7
- package/src/plugins/generative-ui/ui/select.tsx +37 -37
- package/src/plugins/generative-ui/ui/separator.tsx +9 -9
- package/src/plugins/generative-ui/ui/skeleton-wrapper.tsx +10 -10
- package/src/plugins/generative-ui/ui/skeleton.tsx +5 -5
- package/src/plugins/generative-ui/ui/stack.tsx +28 -28
- package/src/plugins/generative-ui/ui/switch.tsx +11 -11
- package/src/plugins/generative-ui/ui/table.tsx +32 -32
- package/src/plugins/generative-ui/ui/tabs-wrapper.tsx +11 -11
- package/src/plugins/generative-ui/ui/tabs.tsx +26 -26
- package/src/plugins/generative-ui/ui/text.tsx +12 -12
- package/src/plugins/generative-ui/ui/textarea.tsx +7 -7
- package/src/plugins/generative-ui/ui/tooltip.tsx +12 -12
- package/src/plugins/index.ts +7 -7
- package/src/react-shim.ts +6 -6
- package/src/server/bun.ts +12 -12
- package/src/server/core.ts +25 -25
- package/src/server/express.ts +17 -15
- package/src/server/fastify.ts +14 -14
- package/src/server/hono.ts +9 -9
- package/src/server/nextjs.ts +12 -12
- package/src/server/tanstack-start.ts +12 -12
- package/src/server.ts +27 -27
- package/src/storybook.d.ts +4 -4
- package/src/types/index.ts +124 -124
- package/src/types/plugins.ts +7 -7
- package/src/vite-env.d.ts +12 -12
- package/dist/compat-shims-BPJ7Q68c.js.map +0 -1
- package/dist/index-D0bAYNQy.js.map +0 -1
- package/dist/index-KSX4Qjip.cjs.map +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Meta, StoryObj } from
|
|
1
|
+
import type { Meta, StoryObj } from "@storybook/react-vite";
|
|
2
2
|
import {
|
|
3
3
|
AreaChart,
|
|
4
4
|
BarChart,
|
|
@@ -7,79 +7,79 @@ import {
|
|
|
7
7
|
DonutChart,
|
|
8
8
|
RadarChart,
|
|
9
9
|
ScatterChart,
|
|
10
|
-
} from
|
|
10
|
+
} from "@/plugins/chart/ui";
|
|
11
11
|
|
|
12
12
|
// Wrapper component to render different chart types
|
|
13
13
|
const ChartWrapper = ({ children }: { children: React.ReactNode }) => (
|
|
14
14
|
<div className="w-full">{children}</div>
|
|
15
|
-
)
|
|
15
|
+
);
|
|
16
16
|
|
|
17
17
|
const meta: Meta = {
|
|
18
|
-
title:
|
|
18
|
+
title: "Components/Charts",
|
|
19
19
|
parameters: {
|
|
20
|
-
layout:
|
|
20
|
+
layout: "fullscreen",
|
|
21
21
|
},
|
|
22
22
|
decorators: [
|
|
23
23
|
(Story) => (
|
|
24
|
-
<div className="
|
|
24
|
+
<div className="min-h-screen bg-background p-6 text-foreground">
|
|
25
25
|
<div className="max-w-2xl">
|
|
26
26
|
<Story />
|
|
27
27
|
</div>
|
|
28
28
|
</div>
|
|
29
29
|
),
|
|
30
30
|
],
|
|
31
|
-
}
|
|
31
|
+
};
|
|
32
32
|
|
|
33
|
-
export default meta
|
|
33
|
+
export default meta;
|
|
34
34
|
|
|
35
35
|
// Sample data for time series charts
|
|
36
36
|
const timeSeriesData = [
|
|
37
|
-
{ label:
|
|
38
|
-
{ label:
|
|
39
|
-
{ label:
|
|
40
|
-
{ label:
|
|
41
|
-
{ label:
|
|
42
|
-
{ label:
|
|
43
|
-
{ label:
|
|
44
|
-
]
|
|
37
|
+
{ label: "Jan", value: 4000, revenue: 2400, profit: 1200 },
|
|
38
|
+
{ label: "Feb", value: 3000, revenue: 1398, profit: 900 },
|
|
39
|
+
{ label: "Mar", value: 2000, revenue: 9800, profit: 2100 },
|
|
40
|
+
{ label: "Apr", value: 2780, revenue: 3908, profit: 1500 },
|
|
41
|
+
{ label: "May", value: 1890, revenue: 4800, profit: 1800 },
|
|
42
|
+
{ label: "Jun", value: 2390, revenue: 3800, profit: 1400 },
|
|
43
|
+
{ label: "Jul", value: 3490, revenue: 4300, profit: 2000 },
|
|
44
|
+
];
|
|
45
45
|
|
|
46
46
|
// Sample data for category charts
|
|
47
47
|
const categoryData = [
|
|
48
|
-
{ label:
|
|
49
|
-
{ label:
|
|
50
|
-
{ label:
|
|
51
|
-
{ label:
|
|
52
|
-
{ label:
|
|
53
|
-
]
|
|
48
|
+
{ label: "Electronics", value: 4500 },
|
|
49
|
+
{ label: "Clothing", value: 3200 },
|
|
50
|
+
{ label: "Home & Garden", value: 2800 },
|
|
51
|
+
{ label: "Sports", value: 2100 },
|
|
52
|
+
{ label: "Books", value: 1500 },
|
|
53
|
+
];
|
|
54
54
|
|
|
55
55
|
// Sample data for pie/donut charts
|
|
56
56
|
const pieData = [
|
|
57
|
-
{ label:
|
|
58
|
-
{ label:
|
|
59
|
-
{ label:
|
|
60
|
-
{ label:
|
|
61
|
-
]
|
|
57
|
+
{ label: "Desktop", value: 45 },
|
|
58
|
+
{ label: "Mobile", value: 35 },
|
|
59
|
+
{ label: "Tablet", value: 15 },
|
|
60
|
+
{ label: "Other", value: 5 },
|
|
61
|
+
];
|
|
62
62
|
|
|
63
63
|
// Sample data for radar chart
|
|
64
64
|
const radarData = [
|
|
65
|
-
{ label:
|
|
66
|
-
{ label:
|
|
67
|
-
{ label:
|
|
68
|
-
{ label:
|
|
69
|
-
{ label:
|
|
70
|
-
]
|
|
65
|
+
{ label: "Speed", value: 85 },
|
|
66
|
+
{ label: "Reliability", value: 90 },
|
|
67
|
+
{ label: "Comfort", value: 78 },
|
|
68
|
+
{ label: "Safety", value: 95 },
|
|
69
|
+
{ label: "Efficiency", value: 82 },
|
|
70
|
+
];
|
|
71
71
|
|
|
72
72
|
// Sample data for scatter chart
|
|
73
73
|
const scatterData = [
|
|
74
|
-
{ x: 10, y: 30, label:
|
|
75
|
-
{ x: 40, y: 50, label:
|
|
76
|
-
{ x: 20, y: 80, label:
|
|
77
|
-
{ x: 60, y: 40, label:
|
|
78
|
-
{ x: 80, y: 90, label:
|
|
79
|
-
{ x: 30, y: 60, label:
|
|
80
|
-
{ x: 50, y: 20, label:
|
|
81
|
-
{ x: 70, y: 70, label:
|
|
82
|
-
]
|
|
74
|
+
{ x: 10, y: 30, label: "A" },
|
|
75
|
+
{ x: 40, y: 50, label: "B" },
|
|
76
|
+
{ x: 20, y: 80, label: "C" },
|
|
77
|
+
{ x: 60, y: 40, label: "D" },
|
|
78
|
+
{ x: 80, y: 90, label: "E" },
|
|
79
|
+
{ x: 30, y: 60, label: "F" },
|
|
80
|
+
{ x: 50, y: 20, label: "G" },
|
|
81
|
+
{ x: 70, y: 70, label: "H" },
|
|
82
|
+
];
|
|
83
83
|
|
|
84
84
|
/**
|
|
85
85
|
* Area chart showing trends over time with filled areas.
|
|
@@ -90,13 +90,13 @@ export const Area: StoryObj = {
|
|
|
90
90
|
<AreaChart
|
|
91
91
|
title="Revenue Over Time"
|
|
92
92
|
data={timeSeriesData}
|
|
93
|
-
series={[
|
|
93
|
+
series={["value", "revenue"]}
|
|
94
94
|
showGrid
|
|
95
95
|
showLegend
|
|
96
96
|
/>
|
|
97
97
|
</ChartWrapper>
|
|
98
98
|
),
|
|
99
|
-
}
|
|
99
|
+
};
|
|
100
100
|
|
|
101
101
|
/**
|
|
102
102
|
* Stacked area chart comparing multiple data series.
|
|
@@ -107,14 +107,14 @@ export const AreaStacked: StoryObj = {
|
|
|
107
107
|
<AreaChart
|
|
108
108
|
title="Stacked Revenue Breakdown"
|
|
109
109
|
data={timeSeriesData}
|
|
110
|
-
series={[
|
|
110
|
+
series={["revenue", "profit"]}
|
|
111
111
|
stacked
|
|
112
112
|
showGrid
|
|
113
113
|
showLegend
|
|
114
114
|
/>
|
|
115
115
|
</ChartWrapper>
|
|
116
116
|
),
|
|
117
|
-
}
|
|
117
|
+
};
|
|
118
118
|
|
|
119
119
|
/**
|
|
120
120
|
* Vertical bar chart for comparing categories.
|
|
@@ -130,7 +130,7 @@ export const Bar: StoryObj = {
|
|
|
130
130
|
/>
|
|
131
131
|
</ChartWrapper>
|
|
132
132
|
),
|
|
133
|
-
}
|
|
133
|
+
};
|
|
134
134
|
|
|
135
135
|
/**
|
|
136
136
|
* Horizontal bar chart layout.
|
|
@@ -146,7 +146,7 @@ export const BarHorizontal: StoryObj = {
|
|
|
146
146
|
/>
|
|
147
147
|
</ChartWrapper>
|
|
148
148
|
),
|
|
149
|
-
}
|
|
149
|
+
};
|
|
150
150
|
|
|
151
151
|
/**
|
|
152
152
|
* Line chart for tracking trends over time.
|
|
@@ -157,14 +157,14 @@ export const Line: StoryObj = {
|
|
|
157
157
|
<LineChart
|
|
158
158
|
title="Monthly Performance"
|
|
159
159
|
data={timeSeriesData}
|
|
160
|
-
series={[
|
|
160
|
+
series={["value", "revenue"]}
|
|
161
161
|
showGrid
|
|
162
162
|
showLegend
|
|
163
163
|
showDots
|
|
164
164
|
/>
|
|
165
165
|
</ChartWrapper>
|
|
166
166
|
),
|
|
167
|
-
}
|
|
167
|
+
};
|
|
168
168
|
|
|
169
169
|
/**
|
|
170
170
|
* Curved line chart with smooth interpolation.
|
|
@@ -175,14 +175,14 @@ export const LineCurved: StoryObj = {
|
|
|
175
175
|
<LineChart
|
|
176
176
|
title="Smooth Trend Line"
|
|
177
177
|
data={timeSeriesData}
|
|
178
|
-
series={[
|
|
178
|
+
series={["value"]}
|
|
179
179
|
showGrid
|
|
180
180
|
curved
|
|
181
181
|
showDots
|
|
182
182
|
/>
|
|
183
183
|
</ChartWrapper>
|
|
184
184
|
),
|
|
185
|
-
}
|
|
185
|
+
};
|
|
186
186
|
|
|
187
187
|
/**
|
|
188
188
|
* Pie chart showing proportional data.
|
|
@@ -198,7 +198,7 @@ export const Pie: StoryObj = {
|
|
|
198
198
|
/>
|
|
199
199
|
</ChartWrapper>
|
|
200
200
|
),
|
|
201
|
-
}
|
|
201
|
+
};
|
|
202
202
|
|
|
203
203
|
/**
|
|
204
204
|
* Donut chart with center label.
|
|
@@ -215,7 +215,7 @@ export const Donut: StoryObj = {
|
|
|
215
215
|
/>
|
|
216
216
|
</ChartWrapper>
|
|
217
217
|
),
|
|
218
|
-
}
|
|
218
|
+
};
|
|
219
219
|
|
|
220
220
|
/**
|
|
221
221
|
* Radar chart for multi-dimensional comparison.
|
|
@@ -226,7 +226,7 @@ export const Radar: StoryObj = {
|
|
|
226
226
|
<RadarChart title="Product Metrics" data={radarData} showLegend />
|
|
227
227
|
</ChartWrapper>
|
|
228
228
|
),
|
|
229
|
-
}
|
|
229
|
+
};
|
|
230
230
|
|
|
231
231
|
/**
|
|
232
232
|
* Scatter chart for showing correlation between variables.
|
|
@@ -243,4 +243,4 @@ export const Scatter: StoryObj = {
|
|
|
243
243
|
/>
|
|
244
244
|
</ChartWrapper>
|
|
245
245
|
),
|
|
246
|
-
}
|
|
246
|
+
};
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import * as CollapsiblePrimitive from
|
|
1
|
+
import * as CollapsiblePrimitive from "@radix-ui/react-collapsible";
|
|
2
2
|
|
|
3
3
|
function Collapsible({
|
|
4
4
|
...props
|
|
5
5
|
}: React.ComponentProps<typeof CollapsiblePrimitive.Root>) {
|
|
6
|
-
return <CollapsiblePrimitive.Root data-slot="collapsible" {...props}
|
|
6
|
+
return <CollapsiblePrimitive.Root data-slot="collapsible" {...props} />;
|
|
7
7
|
}
|
|
8
8
|
|
|
9
9
|
function CollapsibleTrigger({
|
|
@@ -14,7 +14,7 @@ function CollapsibleTrigger({
|
|
|
14
14
|
data-slot="collapsible-trigger"
|
|
15
15
|
{...props}
|
|
16
16
|
/>
|
|
17
|
-
)
|
|
17
|
+
);
|
|
18
18
|
}
|
|
19
19
|
|
|
20
20
|
function CollapsibleContent({
|
|
@@ -25,7 +25,7 @@ function CollapsibleContent({
|
|
|
25
25
|
data-slot="collapsible-content"
|
|
26
26
|
{...props}
|
|
27
27
|
/>
|
|
28
|
-
)
|
|
28
|
+
);
|
|
29
29
|
}
|
|
30
30
|
|
|
31
|
-
export { Collapsible, CollapsibleTrigger, CollapsibleContent }
|
|
31
|
+
export { Collapsible, CollapsibleTrigger, CollapsibleContent };
|
|
@@ -1,40 +1,40 @@
|
|
|
1
|
-
import * as React from
|
|
2
|
-
import * as DialogPrimitive from
|
|
3
|
-
import { XIcon } from
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import * as DialogPrimitive from "@radix-ui/react-dialog";
|
|
3
|
+
import { XIcon } from "lucide-react";
|
|
4
4
|
|
|
5
|
-
import { cn } from
|
|
6
|
-
import { usePortalContainer } from
|
|
5
|
+
import { cn } from "@/lib/utils";
|
|
6
|
+
import { usePortalContainer } from "@/hooks/usePortalContainer";
|
|
7
7
|
|
|
8
8
|
function Dialog({
|
|
9
9
|
...props
|
|
10
10
|
}: React.ComponentProps<typeof DialogPrimitive.Root>) {
|
|
11
|
-
return <DialogPrimitive.Root data-slot="dialog" {...props}
|
|
11
|
+
return <DialogPrimitive.Root data-slot="dialog" {...props} />;
|
|
12
12
|
}
|
|
13
13
|
|
|
14
14
|
function DialogTrigger({
|
|
15
15
|
...props
|
|
16
16
|
}: React.ComponentProps<typeof DialogPrimitive.Trigger>) {
|
|
17
|
-
return <DialogPrimitive.Trigger data-slot="dialog-trigger" {...props}
|
|
17
|
+
return <DialogPrimitive.Trigger data-slot="dialog-trigger" {...props} />;
|
|
18
18
|
}
|
|
19
19
|
|
|
20
20
|
function DialogPortal({
|
|
21
21
|
container,
|
|
22
22
|
...props
|
|
23
23
|
}: React.ComponentProps<typeof DialogPrimitive.Portal>) {
|
|
24
|
-
const portalContainer = usePortalContainer()
|
|
24
|
+
const portalContainer = usePortalContainer();
|
|
25
25
|
return (
|
|
26
26
|
<DialogPrimitive.Portal
|
|
27
27
|
data-slot="dialog-portal"
|
|
28
28
|
container={container ?? portalContainer}
|
|
29
29
|
{...props}
|
|
30
30
|
/>
|
|
31
|
-
)
|
|
31
|
+
);
|
|
32
32
|
}
|
|
33
33
|
|
|
34
34
|
function DialogClose({
|
|
35
35
|
...props
|
|
36
36
|
}: React.ComponentProps<typeof DialogPrimitive.Close>) {
|
|
37
|
-
return <DialogPrimitive.Close data-slot="dialog-close" {...props}
|
|
37
|
+
return <DialogPrimitive.Close data-slot="dialog-close" {...props} />;
|
|
38
38
|
}
|
|
39
39
|
|
|
40
40
|
function DialogOverlay({
|
|
@@ -45,12 +45,12 @@ function DialogOverlay({
|
|
|
45
45
|
<DialogPrimitive.Overlay
|
|
46
46
|
data-slot="dialog-overlay"
|
|
47
47
|
className={cn(
|
|
48
|
-
|
|
49
|
-
className
|
|
48
|
+
"fixed inset-0 z-50 bg-black/50 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:animate-in data-[state=open]:fade-in-0",
|
|
49
|
+
className,
|
|
50
50
|
)}
|
|
51
51
|
{...props}
|
|
52
52
|
/>
|
|
53
|
-
)
|
|
53
|
+
);
|
|
54
54
|
}
|
|
55
55
|
|
|
56
56
|
function DialogContent({
|
|
@@ -59,7 +59,7 @@ function DialogContent({
|
|
|
59
59
|
showCloseButton = true,
|
|
60
60
|
...props
|
|
61
61
|
}: React.ComponentProps<typeof DialogPrimitive.Content> & {
|
|
62
|
-
showCloseButton?: boolean
|
|
62
|
+
showCloseButton?: boolean;
|
|
63
63
|
}) {
|
|
64
64
|
return (
|
|
65
65
|
<DialogPortal data-slot="dialog-portal">
|
|
@@ -67,8 +67,8 @@ function DialogContent({
|
|
|
67
67
|
<DialogPrimitive.Content
|
|
68
68
|
data-slot="dialog-content"
|
|
69
69
|
className={cn(
|
|
70
|
-
|
|
71
|
-
className
|
|
70
|
+
"fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border bg-background p-6 shadow-lg duration-200 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 sm:max-w-lg",
|
|
71
|
+
className,
|
|
72
72
|
)}
|
|
73
73
|
{...props}
|
|
74
74
|
>
|
|
@@ -76,7 +76,7 @@ function DialogContent({
|
|
|
76
76
|
{showCloseButton && (
|
|
77
77
|
<DialogPrimitive.Close
|
|
78
78
|
data-slot="dialog-close"
|
|
79
|
-
className="
|
|
79
|
+
className="absolute top-4 right-4 rounded-xs opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:ring-2 focus:ring-ring focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4"
|
|
80
80
|
>
|
|
81
81
|
<XIcon />
|
|
82
82
|
<span className="sr-only">Close</span>
|
|
@@ -84,30 +84,30 @@ function DialogContent({
|
|
|
84
84
|
)}
|
|
85
85
|
</DialogPrimitive.Content>
|
|
86
86
|
</DialogPortal>
|
|
87
|
-
)
|
|
87
|
+
);
|
|
88
88
|
}
|
|
89
89
|
|
|
90
|
-
function DialogHeader({ className, ...props }: React.ComponentProps<
|
|
90
|
+
function DialogHeader({ className, ...props }: React.ComponentProps<"div">) {
|
|
91
91
|
return (
|
|
92
92
|
<div
|
|
93
93
|
data-slot="dialog-header"
|
|
94
|
-
className={cn(
|
|
94
|
+
className={cn("flex flex-col gap-2 text-center sm:text-left", className)}
|
|
95
95
|
{...props}
|
|
96
96
|
/>
|
|
97
|
-
)
|
|
97
|
+
);
|
|
98
98
|
}
|
|
99
99
|
|
|
100
|
-
function DialogFooter({ className, ...props }: React.ComponentProps<
|
|
100
|
+
function DialogFooter({ className, ...props }: React.ComponentProps<"div">) {
|
|
101
101
|
return (
|
|
102
102
|
<div
|
|
103
103
|
data-slot="dialog-footer"
|
|
104
104
|
className={cn(
|
|
105
|
-
|
|
106
|
-
className
|
|
105
|
+
"flex flex-col-reverse gap-2 sm:flex-row sm:justify-end",
|
|
106
|
+
className,
|
|
107
107
|
)}
|
|
108
108
|
{...props}
|
|
109
109
|
/>
|
|
110
|
-
)
|
|
110
|
+
);
|
|
111
111
|
}
|
|
112
112
|
|
|
113
113
|
function DialogTitle({
|
|
@@ -117,10 +117,10 @@ function DialogTitle({
|
|
|
117
117
|
return (
|
|
118
118
|
<DialogPrimitive.Title
|
|
119
119
|
data-slot="dialog-title"
|
|
120
|
-
className={cn(
|
|
120
|
+
className={cn("text-lg leading-none font-semibold", className)}
|
|
121
121
|
{...props}
|
|
122
122
|
/>
|
|
123
|
-
)
|
|
123
|
+
);
|
|
124
124
|
}
|
|
125
125
|
|
|
126
126
|
function DialogDescription({
|
|
@@ -130,10 +130,10 @@ function DialogDescription({
|
|
|
130
130
|
return (
|
|
131
131
|
<DialogPrimitive.Description
|
|
132
132
|
data-slot="dialog-description"
|
|
133
|
-
className={cn(
|
|
133
|
+
className={cn("text-sm text-muted-foreground", className)}
|
|
134
134
|
{...props}
|
|
135
135
|
/>
|
|
136
|
-
)
|
|
136
|
+
);
|
|
137
137
|
}
|
|
138
138
|
|
|
139
139
|
export {
|
|
@@ -147,4 +147,4 @@ export {
|
|
|
147
147
|
DialogPortal,
|
|
148
148
|
DialogTitle,
|
|
149
149
|
DialogTrigger,
|
|
150
|
-
}
|
|
150
|
+
};
|