@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,25 +1,25 @@
|
|
|
1
|
-
import type { Meta, StoryObj } from
|
|
2
|
-
import { GenerativeUI } from
|
|
1
|
+
import type { Meta, StoryObj } from "@storybook/react-vite";
|
|
2
|
+
import { GenerativeUI } from "./generative-ui";
|
|
3
3
|
|
|
4
4
|
const meta: Meta<typeof GenerativeUI> = {
|
|
5
|
-
title:
|
|
5
|
+
title: "Components/Generative UI",
|
|
6
6
|
component: GenerativeUI,
|
|
7
7
|
parameters: {
|
|
8
|
-
layout:
|
|
8
|
+
layout: "fullscreen",
|
|
9
9
|
},
|
|
10
10
|
decorators: [
|
|
11
11
|
(Story) => (
|
|
12
|
-
<div className="
|
|
12
|
+
<div className="min-h-screen bg-background p-6 text-foreground">
|
|
13
13
|
<div className="max-w-2xl">
|
|
14
14
|
<Story />
|
|
15
15
|
</div>
|
|
16
16
|
</div>
|
|
17
17
|
),
|
|
18
18
|
],
|
|
19
|
-
}
|
|
19
|
+
};
|
|
20
20
|
|
|
21
|
-
export default meta
|
|
22
|
-
type Story = StoryObj<typeof GenerativeUI
|
|
21
|
+
export default meta;
|
|
22
|
+
type Story = StoryObj<typeof GenerativeUI>;
|
|
23
23
|
|
|
24
24
|
/**
|
|
25
25
|
* Basic layout with Stack and Text components.
|
|
@@ -27,22 +27,22 @@ type Story = StoryObj<typeof GenerativeUI>
|
|
|
27
27
|
export const BasicLayout: Story = {
|
|
28
28
|
args: {
|
|
29
29
|
content: {
|
|
30
|
-
type:
|
|
31
|
-
props: { direction:
|
|
30
|
+
type: "Stack",
|
|
31
|
+
props: { direction: "vertical", gap: "md" },
|
|
32
32
|
children: [
|
|
33
|
-
{ type:
|
|
33
|
+
{ type: "Text", props: { content: "Hello World", variant: "heading" } },
|
|
34
34
|
{
|
|
35
|
-
type:
|
|
36
|
-
props: { content:
|
|
35
|
+
type: "Text",
|
|
36
|
+
props: { content: "This is a body text example.", variant: "body" },
|
|
37
37
|
},
|
|
38
38
|
{
|
|
39
|
-
type:
|
|
40
|
-
props: { content:
|
|
39
|
+
type: "Text",
|
|
40
|
+
props: { content: "Caption text for extra info", variant: "caption" },
|
|
41
41
|
},
|
|
42
42
|
],
|
|
43
43
|
},
|
|
44
44
|
},
|
|
45
|
-
}
|
|
45
|
+
};
|
|
46
46
|
|
|
47
47
|
/**
|
|
48
48
|
* Card with metrics displaying key statistics.
|
|
@@ -50,31 +50,31 @@ export const BasicLayout: Story = {
|
|
|
50
50
|
export const MetricsCard: Story = {
|
|
51
51
|
args: {
|
|
52
52
|
content: {
|
|
53
|
-
type:
|
|
54
|
-
props: { title:
|
|
53
|
+
type: "Card",
|
|
54
|
+
props: { title: "Monthly Overview" },
|
|
55
55
|
children: [
|
|
56
56
|
{
|
|
57
|
-
type:
|
|
58
|
-
props: { columns: 3, gap:
|
|
57
|
+
type: "Grid",
|
|
58
|
+
props: { columns: 3, gap: "md" },
|
|
59
59
|
children: [
|
|
60
60
|
{
|
|
61
|
-
type:
|
|
62
|
-
props: { label:
|
|
61
|
+
type: "Metric",
|
|
62
|
+
props: { label: "Revenue", value: 12500, format: "currency" },
|
|
63
63
|
},
|
|
64
64
|
{
|
|
65
|
-
type:
|
|
66
|
-
props: { label:
|
|
65
|
+
type: "Metric",
|
|
66
|
+
props: { label: "Orders", value: 156, format: "number" },
|
|
67
67
|
},
|
|
68
68
|
{
|
|
69
|
-
type:
|
|
70
|
-
props: { label:
|
|
69
|
+
type: "Metric",
|
|
70
|
+
props: { label: "Conversion", value: 0.032, format: "percent" },
|
|
71
71
|
},
|
|
72
72
|
],
|
|
73
73
|
},
|
|
74
74
|
],
|
|
75
75
|
},
|
|
76
76
|
},
|
|
77
|
-
}
|
|
77
|
+
};
|
|
78
78
|
|
|
79
79
|
/**
|
|
80
80
|
* Data table with headers and rows.
|
|
@@ -82,25 +82,25 @@ export const MetricsCard: Story = {
|
|
|
82
82
|
export const DataTable: Story = {
|
|
83
83
|
args: {
|
|
84
84
|
content: {
|
|
85
|
-
type:
|
|
86
|
-
props: { title:
|
|
85
|
+
type: "Card",
|
|
86
|
+
props: { title: "Recent Orders" },
|
|
87
87
|
children: [
|
|
88
88
|
{
|
|
89
|
-
type:
|
|
89
|
+
type: "Table",
|
|
90
90
|
props: {
|
|
91
|
-
headers: [
|
|
91
|
+
headers: ["Order ID", "Customer", "Amount", "Status"],
|
|
92
92
|
rows: [
|
|
93
|
-
[
|
|
94
|
-
[
|
|
95
|
-
[
|
|
96
|
-
[
|
|
93
|
+
["#1001", "Alice Johnson", "$125.00", "Shipped"],
|
|
94
|
+
["#1002", "Bob Smith", "$89.50", "Processing"],
|
|
95
|
+
["#1003", "Carol White", "$234.00", "Delivered"],
|
|
96
|
+
["#1004", "David Brown", "$56.75", "Pending"],
|
|
97
97
|
],
|
|
98
98
|
},
|
|
99
99
|
},
|
|
100
100
|
],
|
|
101
101
|
},
|
|
102
102
|
},
|
|
103
|
-
}
|
|
103
|
+
};
|
|
104
104
|
|
|
105
105
|
/**
|
|
106
106
|
* Badges showing different status variants.
|
|
@@ -108,25 +108,25 @@ export const DataTable: Story = {
|
|
|
108
108
|
export const BadgeVariants: Story = {
|
|
109
109
|
args: {
|
|
110
110
|
content: {
|
|
111
|
-
type:
|
|
112
|
-
props: { direction:
|
|
111
|
+
type: "Stack",
|
|
112
|
+
props: { direction: "horizontal", gap: "sm" },
|
|
113
113
|
children: [
|
|
114
|
-
{ type:
|
|
114
|
+
{ type: "Badge", props: { content: "Default" } },
|
|
115
115
|
{
|
|
116
|
-
type:
|
|
117
|
-
props: { content:
|
|
116
|
+
type: "Badge",
|
|
117
|
+
props: { content: "Secondary", variant: "secondary" },
|
|
118
118
|
},
|
|
119
|
-
{ type:
|
|
120
|
-
{ type:
|
|
119
|
+
{ type: "Badge", props: { content: "Success", variant: "success" } },
|
|
120
|
+
{ type: "Badge", props: { content: "Warning", variant: "warning" } },
|
|
121
121
|
{
|
|
122
|
-
type:
|
|
123
|
-
props: { content:
|
|
122
|
+
type: "Badge",
|
|
123
|
+
props: { content: "Destructive", variant: "destructive" },
|
|
124
124
|
},
|
|
125
|
-
{ type:
|
|
125
|
+
{ type: "Badge", props: { content: "Outline", variant: "outline" } },
|
|
126
126
|
],
|
|
127
127
|
},
|
|
128
128
|
},
|
|
129
|
-
}
|
|
129
|
+
};
|
|
130
130
|
|
|
131
131
|
/**
|
|
132
132
|
* Alert messages for different contexts.
|
|
@@ -134,28 +134,28 @@ export const BadgeVariants: Story = {
|
|
|
134
134
|
export const Alerts: Story = {
|
|
135
135
|
args: {
|
|
136
136
|
content: {
|
|
137
|
-
type:
|
|
138
|
-
props: { direction:
|
|
137
|
+
type: "Stack",
|
|
138
|
+
props: { direction: "vertical", gap: "md" },
|
|
139
139
|
children: [
|
|
140
140
|
{
|
|
141
|
-
type:
|
|
141
|
+
type: "Alert",
|
|
142
142
|
props: {
|
|
143
|
-
title:
|
|
144
|
-
description:
|
|
143
|
+
title: "Information",
|
|
144
|
+
description: "This is a default informational alert.",
|
|
145
145
|
},
|
|
146
146
|
},
|
|
147
147
|
{
|
|
148
|
-
type:
|
|
148
|
+
type: "Alert",
|
|
149
149
|
props: {
|
|
150
|
-
title:
|
|
151
|
-
description:
|
|
152
|
-
variant:
|
|
150
|
+
title: "Error",
|
|
151
|
+
description: "Something went wrong. Please try again.",
|
|
152
|
+
variant: "destructive",
|
|
153
153
|
},
|
|
154
154
|
},
|
|
155
155
|
],
|
|
156
156
|
},
|
|
157
157
|
},
|
|
158
|
-
}
|
|
158
|
+
};
|
|
159
159
|
|
|
160
160
|
/**
|
|
161
161
|
* Progress bars showing completion.
|
|
@@ -163,35 +163,35 @@ export const Alerts: Story = {
|
|
|
163
163
|
export const ProgressBars: Story = {
|
|
164
164
|
args: {
|
|
165
165
|
content: {
|
|
166
|
-
type:
|
|
167
|
-
props: { direction:
|
|
166
|
+
type: "Stack",
|
|
167
|
+
props: { direction: "vertical", gap: "md" },
|
|
168
168
|
children: [
|
|
169
169
|
{
|
|
170
|
-
type:
|
|
171
|
-
props: { direction:
|
|
170
|
+
type: "Stack",
|
|
171
|
+
props: { direction: "vertical", gap: "sm" },
|
|
172
172
|
children: [
|
|
173
173
|
{
|
|
174
|
-
type:
|
|
175
|
-
props: { content:
|
|
174
|
+
type: "Text",
|
|
175
|
+
props: { content: "Upload Progress", variant: "body" },
|
|
176
176
|
},
|
|
177
|
-
{ type:
|
|
177
|
+
{ type: "Progress", props: { value: 75 } },
|
|
178
178
|
],
|
|
179
179
|
},
|
|
180
180
|
{
|
|
181
|
-
type:
|
|
182
|
-
props: { direction:
|
|
181
|
+
type: "Stack",
|
|
182
|
+
props: { direction: "vertical", gap: "sm" },
|
|
183
183
|
children: [
|
|
184
184
|
{
|
|
185
|
-
type:
|
|
186
|
-
props: { content:
|
|
185
|
+
type: "Text",
|
|
186
|
+
props: { content: "Task Completion", variant: "body" },
|
|
187
187
|
},
|
|
188
|
-
{ type:
|
|
188
|
+
{ type: "Progress", props: { value: 45 } },
|
|
189
189
|
],
|
|
190
190
|
},
|
|
191
191
|
],
|
|
192
192
|
},
|
|
193
193
|
},
|
|
194
|
-
}
|
|
194
|
+
};
|
|
195
195
|
|
|
196
196
|
/**
|
|
197
197
|
* Lists - ordered and unordered.
|
|
@@ -199,34 +199,34 @@ export const ProgressBars: Story = {
|
|
|
199
199
|
export const Lists: Story = {
|
|
200
200
|
args: {
|
|
201
201
|
content: {
|
|
202
|
-
type:
|
|
203
|
-
props: { columns: 2, gap:
|
|
202
|
+
type: "Grid",
|
|
203
|
+
props: { columns: 2, gap: "lg" },
|
|
204
204
|
children: [
|
|
205
205
|
{
|
|
206
|
-
type:
|
|
207
|
-
props: { title:
|
|
206
|
+
type: "Card",
|
|
207
|
+
props: { title: "Unordered List" },
|
|
208
208
|
children: [
|
|
209
209
|
{
|
|
210
|
-
type:
|
|
210
|
+
type: "List",
|
|
211
211
|
props: {
|
|
212
212
|
items: [
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
213
|
+
"First item",
|
|
214
|
+
"Second item",
|
|
215
|
+
"Third item",
|
|
216
|
+
"Fourth item",
|
|
217
217
|
],
|
|
218
218
|
},
|
|
219
219
|
},
|
|
220
220
|
],
|
|
221
221
|
},
|
|
222
222
|
{
|
|
223
|
-
type:
|
|
224
|
-
props: { title:
|
|
223
|
+
type: "Card",
|
|
224
|
+
props: { title: "Ordered List" },
|
|
225
225
|
children: [
|
|
226
226
|
{
|
|
227
|
-
type:
|
|
227
|
+
type: "List",
|
|
228
228
|
props: {
|
|
229
|
-
items: [
|
|
229
|
+
items: ["Step one", "Step two", "Step three", "Step four"],
|
|
230
230
|
ordered: true,
|
|
231
231
|
},
|
|
232
232
|
},
|
|
@@ -235,7 +235,7 @@ export const Lists: Story = {
|
|
|
235
235
|
],
|
|
236
236
|
},
|
|
237
237
|
},
|
|
238
|
-
}
|
|
238
|
+
};
|
|
239
239
|
|
|
240
240
|
/**
|
|
241
241
|
* Accordion with collapsible sections.
|
|
@@ -243,51 +243,51 @@ export const Lists: Story = {
|
|
|
243
243
|
export const AccordionExample: Story = {
|
|
244
244
|
args: {
|
|
245
245
|
content: {
|
|
246
|
-
type:
|
|
247
|
-
props: { title:
|
|
246
|
+
type: "Card",
|
|
247
|
+
props: { title: "FAQ" },
|
|
248
248
|
children: [
|
|
249
249
|
{
|
|
250
|
-
type:
|
|
251
|
-
props: { type:
|
|
250
|
+
type: "Accordion",
|
|
251
|
+
props: { type: "single" },
|
|
252
252
|
children: [
|
|
253
253
|
{
|
|
254
|
-
type:
|
|
255
|
-
props: { value:
|
|
254
|
+
type: "AccordionItem",
|
|
255
|
+
props: { value: "q1", title: "What is your return policy?" },
|
|
256
256
|
children: [
|
|
257
257
|
{
|
|
258
|
-
type:
|
|
258
|
+
type: "Text",
|
|
259
259
|
props: {
|
|
260
260
|
content:
|
|
261
|
-
|
|
262
|
-
variant:
|
|
261
|
+
"We offer a 30-day return policy for all unused items in original packaging.",
|
|
262
|
+
variant: "body",
|
|
263
263
|
},
|
|
264
264
|
},
|
|
265
265
|
],
|
|
266
266
|
},
|
|
267
267
|
{
|
|
268
|
-
type:
|
|
269
|
-
props: { value:
|
|
268
|
+
type: "AccordionItem",
|
|
269
|
+
props: { value: "q2", title: "How long does shipping take?" },
|
|
270
270
|
children: [
|
|
271
271
|
{
|
|
272
|
-
type:
|
|
272
|
+
type: "Text",
|
|
273
273
|
props: {
|
|
274
274
|
content:
|
|
275
|
-
|
|
276
|
-
variant:
|
|
275
|
+
"Standard shipping takes 5-7 business days. Express shipping is available for 2-3 day delivery.",
|
|
276
|
+
variant: "body",
|
|
277
277
|
},
|
|
278
278
|
},
|
|
279
279
|
],
|
|
280
280
|
},
|
|
281
281
|
{
|
|
282
|
-
type:
|
|
283
|
-
props: { value:
|
|
282
|
+
type: "AccordionItem",
|
|
283
|
+
props: { value: "q3", title: "Do you ship internationally?" },
|
|
284
284
|
children: [
|
|
285
285
|
{
|
|
286
|
-
type:
|
|
286
|
+
type: "Text",
|
|
287
287
|
props: {
|
|
288
288
|
content:
|
|
289
|
-
|
|
290
|
-
variant:
|
|
289
|
+
"Yes! We ship to over 50 countries worldwide. Shipping costs vary by destination.",
|
|
290
|
+
variant: "body",
|
|
291
291
|
},
|
|
292
292
|
},
|
|
293
293
|
],
|
|
@@ -297,7 +297,7 @@ export const AccordionExample: Story = {
|
|
|
297
297
|
],
|
|
298
298
|
},
|
|
299
299
|
},
|
|
300
|
-
}
|
|
300
|
+
};
|
|
301
301
|
|
|
302
302
|
/**
|
|
303
303
|
* Tabs with multiple content panels.
|
|
@@ -305,60 +305,60 @@ export const AccordionExample: Story = {
|
|
|
305
305
|
export const TabsExample: Story = {
|
|
306
306
|
args: {
|
|
307
307
|
content: {
|
|
308
|
-
type:
|
|
309
|
-
props: { title:
|
|
308
|
+
type: "Card",
|
|
309
|
+
props: { title: "Product Details" },
|
|
310
310
|
children: [
|
|
311
311
|
{
|
|
312
|
-
type:
|
|
312
|
+
type: "Tabs",
|
|
313
313
|
props: {
|
|
314
|
-
defaultValue:
|
|
314
|
+
defaultValue: "overview",
|
|
315
315
|
tabs: [
|
|
316
|
-
{ value:
|
|
317
|
-
{ value:
|
|
318
|
-
{ value:
|
|
316
|
+
{ value: "overview", label: "Overview" },
|
|
317
|
+
{ value: "specs", label: "Specifications" },
|
|
318
|
+
{ value: "reviews", label: "Reviews" },
|
|
319
319
|
],
|
|
320
320
|
},
|
|
321
321
|
children: [
|
|
322
322
|
{
|
|
323
|
-
type:
|
|
324
|
-
props: { value:
|
|
323
|
+
type: "TabContent",
|
|
324
|
+
props: { value: "overview" },
|
|
325
325
|
children: [
|
|
326
326
|
{
|
|
327
|
-
type:
|
|
327
|
+
type: "Text",
|
|
328
328
|
props: {
|
|
329
329
|
content:
|
|
330
|
-
|
|
331
|
-
variant:
|
|
330
|
+
"This premium product features cutting-edge technology and elegant design.",
|
|
331
|
+
variant: "body",
|
|
332
332
|
},
|
|
333
333
|
},
|
|
334
334
|
],
|
|
335
335
|
},
|
|
336
336
|
{
|
|
337
|
-
type:
|
|
338
|
-
props: { value:
|
|
337
|
+
type: "TabContent",
|
|
338
|
+
props: { value: "specs" },
|
|
339
339
|
children: [
|
|
340
340
|
{
|
|
341
|
-
type:
|
|
341
|
+
type: "List",
|
|
342
342
|
props: {
|
|
343
343
|
items: [
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
344
|
+
"Weight: 1.2 kg",
|
|
345
|
+
"Dimensions: 30x20x10 cm",
|
|
346
|
+
"Material: Aluminum",
|
|
347
|
+
"Battery: 10 hours",
|
|
348
348
|
],
|
|
349
349
|
},
|
|
350
350
|
},
|
|
351
351
|
],
|
|
352
352
|
},
|
|
353
353
|
{
|
|
354
|
-
type:
|
|
355
|
-
props: { value:
|
|
354
|
+
type: "TabContent",
|
|
355
|
+
props: { value: "reviews" },
|
|
356
356
|
children: [
|
|
357
357
|
{
|
|
358
|
-
type:
|
|
358
|
+
type: "Text",
|
|
359
359
|
props: {
|
|
360
|
-
content:
|
|
361
|
-
variant:
|
|
360
|
+
content: "4.8 out of 5 stars based on 256 reviews",
|
|
361
|
+
variant: "body",
|
|
362
362
|
},
|
|
363
363
|
},
|
|
364
364
|
],
|
|
@@ -368,7 +368,7 @@ export const TabsExample: Story = {
|
|
|
368
368
|
],
|
|
369
369
|
},
|
|
370
370
|
},
|
|
371
|
-
}
|
|
371
|
+
};
|
|
372
372
|
|
|
373
373
|
/**
|
|
374
374
|
* Form elements - inputs, checkboxes, and selects.
|
|
@@ -376,60 +376,60 @@ export const TabsExample: Story = {
|
|
|
376
376
|
export const FormElements: Story = {
|
|
377
377
|
args: {
|
|
378
378
|
content: {
|
|
379
|
-
type:
|
|
380
|
-
props: { title:
|
|
379
|
+
type: "Card",
|
|
380
|
+
props: { title: "Contact Form" },
|
|
381
381
|
children: [
|
|
382
382
|
{
|
|
383
|
-
type:
|
|
384
|
-
props: { direction:
|
|
383
|
+
type: "Stack",
|
|
384
|
+
props: { direction: "vertical", gap: "md" },
|
|
385
385
|
children: [
|
|
386
386
|
{
|
|
387
|
-
type:
|
|
387
|
+
type: "Input",
|
|
388
388
|
props: {
|
|
389
|
-
label:
|
|
390
|
-
placeholder:
|
|
391
|
-
valuePath:
|
|
389
|
+
label: "Full Name",
|
|
390
|
+
placeholder: "Enter your name",
|
|
391
|
+
valuePath: "name",
|
|
392
392
|
},
|
|
393
393
|
},
|
|
394
394
|
{
|
|
395
|
-
type:
|
|
395
|
+
type: "Input",
|
|
396
396
|
props: {
|
|
397
|
-
label:
|
|
398
|
-
placeholder:
|
|
399
|
-
type:
|
|
400
|
-
valuePath:
|
|
397
|
+
label: "Email",
|
|
398
|
+
placeholder: "Enter your email",
|
|
399
|
+
type: "email",
|
|
400
|
+
valuePath: "email",
|
|
401
401
|
},
|
|
402
402
|
},
|
|
403
403
|
{
|
|
404
|
-
type:
|
|
404
|
+
type: "Select",
|
|
405
405
|
props: {
|
|
406
|
-
placeholder:
|
|
407
|
-
valuePath:
|
|
406
|
+
placeholder: "Select a topic",
|
|
407
|
+
valuePath: "topic",
|
|
408
408
|
options: [
|
|
409
|
-
{ value:
|
|
410
|
-
{ value:
|
|
411
|
-
{ value:
|
|
412
|
-
{ value:
|
|
409
|
+
{ value: "general", label: "General Inquiry" },
|
|
410
|
+
{ value: "support", label: "Technical Support" },
|
|
411
|
+
{ value: "sales", label: "Sales Question" },
|
|
412
|
+
{ value: "feedback", label: "Feedback" },
|
|
413
413
|
],
|
|
414
414
|
},
|
|
415
415
|
},
|
|
416
416
|
{
|
|
417
|
-
type:
|
|
417
|
+
type: "Checkbox",
|
|
418
418
|
props: {
|
|
419
|
-
label:
|
|
420
|
-
valuePath:
|
|
419
|
+
label: "Subscribe to newsletter",
|
|
420
|
+
valuePath: "subscribe",
|
|
421
421
|
},
|
|
422
422
|
},
|
|
423
423
|
{
|
|
424
|
-
type:
|
|
425
|
-
props: { label:
|
|
424
|
+
type: "Button",
|
|
425
|
+
props: { label: "Submit", variant: "default" },
|
|
426
426
|
},
|
|
427
427
|
],
|
|
428
428
|
},
|
|
429
429
|
],
|
|
430
430
|
},
|
|
431
431
|
},
|
|
432
|
-
}
|
|
432
|
+
};
|
|
433
433
|
|
|
434
434
|
/**
|
|
435
435
|
* Avatar and skeleton loading states.
|
|
@@ -437,29 +437,29 @@ export const FormElements: Story = {
|
|
|
437
437
|
export const AvatarsAndSkeletons: Story = {
|
|
438
438
|
args: {
|
|
439
439
|
content: {
|
|
440
|
-
type:
|
|
441
|
-
props: { direction:
|
|
440
|
+
type: "Stack",
|
|
441
|
+
props: { direction: "vertical", gap: "lg" },
|
|
442
442
|
children: [
|
|
443
443
|
{
|
|
444
|
-
type:
|
|
445
|
-
props: { direction:
|
|
444
|
+
type: "Stack",
|
|
445
|
+
props: { direction: "horizontal", gap: "md", align: "center" },
|
|
446
446
|
children: [
|
|
447
|
-
{ type:
|
|
448
|
-
{ type:
|
|
449
|
-
{ type:
|
|
447
|
+
{ type: "Avatar", props: { fallback: "JD" } },
|
|
448
|
+
{ type: "Avatar", props: { fallback: "AS" } },
|
|
449
|
+
{ type: "Avatar", props: { fallback: "MK" } },
|
|
450
450
|
],
|
|
451
451
|
},
|
|
452
452
|
{
|
|
453
|
-
type:
|
|
454
|
-
props: { title:
|
|
453
|
+
type: "Card",
|
|
454
|
+
props: { title: "Loading State" },
|
|
455
455
|
children: [
|
|
456
456
|
{
|
|
457
|
-
type:
|
|
458
|
-
props: { direction:
|
|
457
|
+
type: "Stack",
|
|
458
|
+
props: { direction: "vertical", gap: "sm" },
|
|
459
459
|
children: [
|
|
460
|
-
{ type:
|
|
461
|
-
{ type:
|
|
462
|
-
{ type:
|
|
460
|
+
{ type: "Skeleton", props: { height: "1.5rem", width: "60%" } },
|
|
461
|
+
{ type: "Skeleton", props: { height: "1rem", width: "100%" } },
|
|
462
|
+
{ type: "Skeleton", props: { height: "1rem", width: "80%" } },
|
|
463
463
|
],
|
|
464
464
|
},
|
|
465
465
|
],
|
|
@@ -467,7 +467,7 @@ export const AvatarsAndSkeletons: Story = {
|
|
|
467
467
|
],
|
|
468
468
|
},
|
|
469
469
|
},
|
|
470
|
-
}
|
|
470
|
+
};
|
|
471
471
|
|
|
472
472
|
/**
|
|
473
473
|
* Complete dashboard example combining multiple components.
|
|
@@ -475,77 +475,77 @@ export const AvatarsAndSkeletons: Story = {
|
|
|
475
475
|
export const Dashboard: Story = {
|
|
476
476
|
args: {
|
|
477
477
|
content: {
|
|
478
|
-
type:
|
|
479
|
-
props: { direction:
|
|
478
|
+
type: "Stack",
|
|
479
|
+
props: { direction: "vertical", gap: "lg" },
|
|
480
480
|
children: [
|
|
481
481
|
{
|
|
482
|
-
type:
|
|
483
|
-
props: { content:
|
|
482
|
+
type: "Text",
|
|
483
|
+
props: { content: "Store Dashboard", variant: "heading" },
|
|
484
484
|
},
|
|
485
485
|
{
|
|
486
|
-
type:
|
|
487
|
-
props: { columns: 4, gap:
|
|
486
|
+
type: "Grid",
|
|
487
|
+
props: { columns: 4, gap: "md" },
|
|
488
488
|
children: [
|
|
489
489
|
{
|
|
490
|
-
type:
|
|
490
|
+
type: "Card",
|
|
491
491
|
children: [
|
|
492
492
|
{
|
|
493
|
-
type:
|
|
493
|
+
type: "Metric",
|
|
494
494
|
props: {
|
|
495
|
-
label:
|
|
495
|
+
label: "Total Revenue",
|
|
496
496
|
value: 45231,
|
|
497
|
-
format:
|
|
497
|
+
format: "currency",
|
|
498
498
|
},
|
|
499
499
|
},
|
|
500
500
|
],
|
|
501
501
|
},
|
|
502
502
|
{
|
|
503
|
-
type:
|
|
503
|
+
type: "Card",
|
|
504
504
|
children: [
|
|
505
505
|
{
|
|
506
|
-
type:
|
|
507
|
-
props: { label:
|
|
506
|
+
type: "Metric",
|
|
507
|
+
props: { label: "Orders", value: 1234, format: "number" },
|
|
508
508
|
},
|
|
509
509
|
],
|
|
510
510
|
},
|
|
511
511
|
{
|
|
512
|
-
type:
|
|
512
|
+
type: "Card",
|
|
513
513
|
children: [
|
|
514
514
|
{
|
|
515
|
-
type:
|
|
516
|
-
props: { label:
|
|
515
|
+
type: "Metric",
|
|
516
|
+
props: { label: "Customers", value: 567, format: "number" },
|
|
517
517
|
},
|
|
518
518
|
],
|
|
519
519
|
},
|
|
520
520
|
{
|
|
521
|
-
type:
|
|
521
|
+
type: "Card",
|
|
522
522
|
children: [
|
|
523
523
|
{
|
|
524
|
-
type:
|
|
524
|
+
type: "Metric",
|
|
525
525
|
props: {
|
|
526
|
-
label:
|
|
526
|
+
label: "Conversion",
|
|
527
527
|
value: 0.0312,
|
|
528
|
-
format:
|
|
528
|
+
format: "percent",
|
|
529
529
|
},
|
|
530
530
|
},
|
|
531
531
|
],
|
|
532
532
|
},
|
|
533
533
|
],
|
|
534
534
|
},
|
|
535
|
-
{ type:
|
|
535
|
+
{ type: "Separator" },
|
|
536
536
|
{
|
|
537
|
-
type:
|
|
538
|
-
props: { title:
|
|
537
|
+
type: "Card",
|
|
538
|
+
props: { title: "Recent Orders" },
|
|
539
539
|
children: [
|
|
540
540
|
{
|
|
541
|
-
type:
|
|
541
|
+
type: "Table",
|
|
542
542
|
props: {
|
|
543
|
-
headers: [
|
|
543
|
+
headers: ["Order", "Customer", "Status", "Amount"],
|
|
544
544
|
rows: [
|
|
545
|
-
[
|
|
546
|
-
[
|
|
547
|
-
[
|
|
548
|
-
[
|
|
545
|
+
["#3210", "Olivia Martin", "Shipped", "$42.25"],
|
|
546
|
+
["#3209", "Ava Johnson", "Processing", "$74.99"],
|
|
547
|
+
["#3208", "Michael Chen", "Delivered", "$124.00"],
|
|
548
|
+
["#3207", "Lisa Wang", "Pending", "$64.75"],
|
|
549
549
|
],
|
|
550
550
|
},
|
|
551
551
|
},
|
|
@@ -554,4 +554,4 @@ export const Dashboard: Story = {
|
|
|
554
554
|
],
|
|
555
555
|
},
|
|
556
556
|
},
|
|
557
|
-
}
|
|
557
|
+
};
|