@dust-tt/sparkle 0.3.6 → 0.3.8

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.
Files changed (87) hide show
  1. package/dist/cjs/index.js +1 -1
  2. package/dist/esm/components/ConversationMessage.d.ts.map +1 -1
  3. package/dist/esm/components/ConversationMessage.js +2 -2
  4. package/dist/esm/components/ConversationMessage.js.map +1 -1
  5. package/dist/esm/components/NavigationList.d.ts.map +1 -1
  6. package/dist/esm/components/NavigationList.js +3 -3
  7. package/dist/esm/components/NavigationList.js.map +1 -1
  8. package/dist/esm/components/ScrollArea.d.ts +1 -1
  9. package/dist/esm/components/ScrollArea.d.ts.map +1 -1
  10. package/dist/esm/components/markdown/Markdown.js +1 -1
  11. package/dist/esm/components/markdown/Markdown.js.map +1 -1
  12. package/dist/esm/stories/AnchoredPopover.stories.d.ts +1 -2
  13. package/dist/esm/stories/AnchoredPopover.stories.d.ts.map +1 -1
  14. package/dist/esm/stories/AnchoredPopover.stories.js +36 -48
  15. package/dist/esm/stories/AnchoredPopover.stories.js.map +1 -1
  16. package/dist/esm/stories/Avatar.stories.d.ts +64 -5
  17. package/dist/esm/stories/Avatar.stories.d.ts.map +1 -1
  18. package/dist/esm/stories/Avatar.stories.js +407 -331
  19. package/dist/esm/stories/Avatar.stories.js.map +1 -1
  20. package/dist/esm/stories/Button.stories.d.ts +1 -0
  21. package/dist/esm/stories/Button.stories.d.ts.map +1 -1
  22. package/dist/esm/stories/Button.stories.js +1 -0
  23. package/dist/esm/stories/Button.stories.js.map +1 -1
  24. package/dist/esm/stories/Card.stories.d.ts +39 -3
  25. package/dist/esm/stories/Card.stories.d.ts.map +1 -1
  26. package/dist/esm/stories/Card.stories.js +92 -22
  27. package/dist/esm/stories/Card.stories.js.map +1 -1
  28. package/dist/esm/stories/Chip.stories.d.ts +4 -3
  29. package/dist/esm/stories/Chip.stories.d.ts.map +1 -1
  30. package/dist/esm/stories/Chip.stories.js +37 -30
  31. package/dist/esm/stories/Chip.stories.js.map +1 -1
  32. package/dist/esm/stories/Dropdown.stories.d.ts +13 -4
  33. package/dist/esm/stories/Dropdown.stories.d.ts.map +1 -1
  34. package/dist/esm/stories/Dropdown.stories.js +418 -411
  35. package/dist/esm/stories/Dropdown.stories.js.map +1 -1
  36. package/dist/esm/stories/Icon.stories.d.ts +1 -0
  37. package/dist/esm/stories/Icon.stories.d.ts.map +1 -1
  38. package/dist/esm/stories/Icon.stories.js +1 -0
  39. package/dist/esm/stories/Icon.stories.js.map +1 -1
  40. package/dist/esm/stories/IconSet.stories.d.ts +7 -5
  41. package/dist/esm/stories/IconSet.stories.d.ts.map +1 -1
  42. package/dist/esm/stories/IconSet.stories.js +21 -15
  43. package/dist/esm/stories/IconSet.stories.js.map +1 -1
  44. package/dist/esm/stories/Input.stories.d.ts +46 -1
  45. package/dist/esm/stories/Input.stories.d.ts.map +1 -1
  46. package/dist/esm/stories/Input.stories.js +94 -16
  47. package/dist/esm/stories/Input.stories.js.map +1 -1
  48. package/dist/esm/stories/Logo.stories.d.ts +6 -4
  49. package/dist/esm/stories/Logo.stories.d.ts.map +1 -1
  50. package/dist/esm/stories/Logo.stories.js +41 -37
  51. package/dist/esm/stories/Logo.stories.js.map +1 -1
  52. package/dist/esm/stories/Markdown.stories.d.ts +24 -2
  53. package/dist/esm/stories/Markdown.stories.d.ts.map +1 -1
  54. package/dist/esm/stories/Markdown.stories.js +1 -0
  55. package/dist/esm/stories/Markdown.stories.js.map +1 -1
  56. package/dist/esm/stories/ScrollArea.stories.d.ts +12 -5
  57. package/dist/esm/stories/ScrollArea.stories.d.ts.map +1 -1
  58. package/dist/esm/stories/ScrollArea.stories.js +7 -3
  59. package/dist/esm/stories/ScrollArea.stories.js.map +1 -1
  60. package/dist/esm/stories/Spinner.stories.d.ts +22 -1
  61. package/dist/esm/stories/Spinner.stories.d.ts.map +1 -1
  62. package/dist/esm/stories/Spinner.stories.js +91 -50
  63. package/dist/esm/stories/Spinner.stories.js.map +1 -1
  64. package/dist/esm/stories/Tabs.stories.d.ts +6 -2
  65. package/dist/esm/stories/Tabs.stories.d.ts.map +1 -1
  66. package/dist/esm/stories/Tabs.stories.js +10 -8
  67. package/dist/esm/stories/Tabs.stories.js.map +1 -1
  68. package/dist/sparkle.css +8 -19
  69. package/package.json +1 -1
  70. package/src/components/ConversationMessage.tsx +2 -9
  71. package/src/components/NavigationList.tsx +2 -3
  72. package/src/components/ScrollArea.tsx +1 -1
  73. package/src/components/markdown/Markdown.tsx +1 -1
  74. package/src/stories/AnchoredPopover.stories.tsx +77 -91
  75. package/src/stories/Avatar.stories.tsx +558 -478
  76. package/src/stories/Button.stories.tsx +1 -0
  77. package/src/stories/Card.stories.tsx +146 -70
  78. package/src/stories/Chip.stories.tsx +108 -101
  79. package/src/stories/Dropdown.stories.tsx +725 -717
  80. package/src/stories/Icon.stories.tsx +1 -0
  81. package/src/stories/IconSet.stories.tsx +61 -52
  82. package/src/stories/Input.stories.tsx +168 -79
  83. package/src/stories/Logo.stories.tsx +76 -69
  84. package/src/stories/Markdown.stories.tsx +3 -2
  85. package/src/stories/ScrollArea.stories.tsx +10 -6
  86. package/src/stories/Spinner.stories.tsx +134 -87
  87. package/src/stories/Tabs.stories.tsx +13 -10
@@ -14,6 +14,7 @@ const ICONS = {
14
14
  const meta = {
15
15
  title: "Primitives/Button",
16
16
  component: Button,
17
+ tags: ["autodocs"],
17
18
  argTypes: {
18
19
  variant: {
19
20
  description: "The visual style variant of the button",
@@ -1,4 +1,4 @@
1
- import type { Meta } from "@storybook/react";
1
+ import type { Meta, StoryObj } from "@storybook/react";
2
2
  import React, { ComponentType } from "react";
3
3
 
4
4
  import { Card, Icon } from "@sparkle/components";
@@ -22,59 +22,133 @@ import {
22
22
  const meta = {
23
23
  title: "Primitives/Card",
24
24
  component: Card,
25
+ tags: ["autodocs"],
26
+ argTypes: {
27
+ variant: {
28
+ options: CARD_VARIANTS,
29
+ control: { type: "select" },
30
+ description: "Visual style variant of the card",
31
+ },
32
+ size: {
33
+ options: CARD_SIZES,
34
+ control: { type: "select" },
35
+ description: "Size/padding of the card",
36
+ },
37
+ disabled: {
38
+ control: "boolean",
39
+ description:
40
+ "Whether the card is disabled (reduced opacity, no interactions)",
41
+ },
42
+ className: {
43
+ control: "text",
44
+ description: "Additional CSS classes to apply",
45
+ },
46
+ children: {
47
+ control: "text",
48
+ description: "Content to display inside the card",
49
+ },
50
+ },
25
51
  } satisfies Meta<typeof Card>;
26
52
 
27
53
  export default meta;
54
+ type Story = StoryObj<typeof meta>;
28
55
 
29
- export const Demo = () => {
30
- const variants = CARD_VARIANTS;
31
- const sizes = CARD_SIZES;
56
+ export const Playground: Story = {
57
+ args: {
58
+ variant: "primary",
59
+ size: "md",
60
+ disabled: false,
61
+ children: "Card Content",
62
+ },
63
+ render: (args) => <Card {...args} />,
64
+ };
65
+
66
+ export const Primary: Story = {
67
+ args: {
68
+ variant: "primary",
69
+ size: "md",
70
+ children: "Primary Card",
71
+ },
72
+ };
73
+
74
+ export const Secondary: Story = {
75
+ args: {
76
+ variant: "secondary",
77
+ size: "md",
78
+ children: "Secondary Card",
79
+ },
80
+ };
32
81
 
33
- return (
34
- <div className="s-flex s-flex-col s-gap-8 s-text-foreground dark:s-text-foreground-night">
35
- {variants.map((variant) => (
36
- <div key={variant} className="s-flex s-flex-col s-gap-4">
37
- <h3 className="s-text-lg s-font-semibold">
38
- {variant.charAt(0).toUpperCase() + variant.slice(1)} Variant
39
- </h3>
40
- <div className="s-flex s-gap-4">
41
- {sizes.map((size) => (
42
- <div>
43
- <Card
44
- key={size}
45
- variant={variant}
46
- size={size}
47
- onClick={() => {
48
- console.log(
49
- `Button clicked - Size: ${size}, Variant: ${variant}`
50
- );
51
- }}
52
- >
53
- Hello World
54
- </Card>
55
- </div>
56
- ))}
82
+ export const Tertiary: Story = {
83
+ args: {
84
+ variant: "tertiary",
85
+ size: "md",
86
+ children: "Tertiary Card",
87
+ },
88
+ };
89
+
90
+ export const DisabledCard: Story = {
91
+ args: {
92
+ variant: "primary",
93
+ size: "md",
94
+ disabled: true,
95
+ children: "Disabled Card",
96
+ },
97
+ };
98
+
99
+ export const AllVariants: Story = {
100
+ render: () => {
101
+ const variants = CARD_VARIANTS;
102
+ const sizes = CARD_SIZES;
103
+
104
+ return (
105
+ <div className="s-flex s-flex-col s-gap-8 s-text-foreground dark:s-text-foreground-night">
106
+ {variants.map((variant) => (
107
+ <div key={variant} className="s-flex s-flex-col s-gap-4">
108
+ <h3 className="s-text-lg s-font-semibold">
109
+ {variant.charAt(0).toUpperCase() + variant.slice(1)} Variant
110
+ </h3>
111
+ <div className="s-flex s-gap-4">
112
+ {sizes.map((size) => (
113
+ <div>
114
+ <Card
115
+ key={size}
116
+ variant={variant}
117
+ size={size}
118
+ onClick={() => {
119
+ console.log(
120
+ `Button clicked - Size: ${size}, Variant: ${variant}`
121
+ );
122
+ }}
123
+ >
124
+ Hello World
125
+ </Card>
126
+ </div>
127
+ ))}
128
+ </div>
57
129
  </div>
58
- </div>
59
- ))}
60
- </div>
61
- );
130
+ ))}
131
+ </div>
132
+ );
133
+ },
62
134
  };
63
135
 
64
- export const InteractiveStates = () => (
65
- <div className="s-flex s-gap-4">
66
- <Card
67
- variant="primary"
68
- onClick={() => alert("Primary Clicked")}
69
- className="s-hover:bg-primary-200"
70
- >
71
- Hover/Active
72
- </Card>
73
- <Card variant="secondary" disabled>
74
- Disabled
75
- </Card>
76
- </div>
77
- );
136
+ export const InteractiveStates: Story = {
137
+ render: () => (
138
+ <div className="s-flex s-gap-4">
139
+ <Card
140
+ variant="primary"
141
+ onClick={() => alert("Primary Clicked")}
142
+ className="s-hover:bg-primary-200"
143
+ >
144
+ Hover/Active
145
+ </Card>
146
+ <Card variant="secondary" disabled>
147
+ Disabled
148
+ </Card>
149
+ </div>
150
+ ),
151
+ };
78
152
 
79
153
  interface CardData {
80
154
  icon: ComponentType<{ className?: string }>;
@@ -120,28 +194,30 @@ const cardData: CardData[] = [
120
194
  },
121
195
  ];
122
196
 
123
- export const ActionCardDemo: React.FC = () => (
124
- <CardGrid>
125
- {cardData.map((card, index) => (
126
- <Card
127
- key={index}
128
- variant="primary"
129
- size="md"
130
- onClick={() => {
131
- alert(`You clicked on ${card.title}`);
132
- }}
133
- action={<CardActionButton size="mini" icon={XMarkIcon} />}
134
- >
135
- <div className="s-flex s-w-full s-flex-col s-gap-1 s-text-sm">
136
- <div className="s-flex s-w-full s-gap-1 s-font-semibold s-text-foreground">
137
- <Icon visual={card.icon} size="sm" />
138
- <div className="s-w-full">{card.title}</div>
197
+ export const WithActions: Story = {
198
+ render: () => (
199
+ <CardGrid>
200
+ {cardData.map((card, index) => (
201
+ <Card
202
+ key={index}
203
+ variant="primary"
204
+ size="md"
205
+ onClick={() => {
206
+ alert(`You clicked on ${card.title}`);
207
+ }}
208
+ action={<CardActionButton size="mini" icon={XMarkIcon} />}
209
+ >
210
+ <div className="s-flex s-w-full s-flex-col s-gap-1 s-text-sm">
211
+ <div className="s-flex s-w-full s-gap-1 s-font-semibold s-text-foreground">
212
+ <Icon visual={card.icon} size="sm" />
213
+ <div className="s-w-full">{card.title}</div>
214
+ </div>
215
+ <div className="s-w-full s-truncate s-text-sm s-text-muted-foreground">
216
+ {card.description}
217
+ </div>
139
218
  </div>
140
- <div className="s-w-full s-truncate s-text-sm s-text-muted-foreground">
141
- {card.description}
142
- </div>
143
- </div>
144
- </Card>
145
- ))}
146
- </CardGrid>
147
- );
219
+ </Card>
220
+ ))}
221
+ </CardGrid>
222
+ ),
223
+ };
@@ -13,6 +13,7 @@ const ICONS = {
13
13
  const meta = {
14
14
  title: "Primitives/Chip",
15
15
  component: Chip,
16
+ tags: ["autodocs"],
16
17
  parameters: {
17
18
  layout: "padded",
18
19
  },
@@ -72,120 +73,126 @@ export const MiniChip: Story = {
72
73
  },
73
74
  };
74
75
 
75
- export const ThinkingChip = () => (
76
- <Chip
77
- size="sm"
78
- label="Thinking, Searching"
79
- isBusy
80
- onClick={() => console.log()}
81
- />
82
- );
83
-
84
- export const RemovableChip = () => (
85
- <div className="s-space-x-2">
86
- <Chip
87
- size="mini"
88
- color="golden"
89
- label="Remove me"
90
- onRemove={() => alert("Removed")}
91
- />
92
- <Chip
93
- size="xs"
94
- color="golden"
95
- label="Remove me"
96
- onRemove={() => alert("Removed")}
97
- />
76
+ export const ThinkingChip: Story = {
77
+ render: () => (
98
78
  <Chip
99
79
  size="sm"
100
- color="golden"
101
- label="Remove me"
102
- onRemove={() => alert("Removed")}
80
+ label="Thinking, Searching"
81
+ isBusy
82
+ onClick={() => console.log()}
103
83
  />
104
- </div>
105
- );
84
+ ),
85
+ };
106
86
 
107
- export const AllColors = () => (
108
- <div className="s-flex s-flex-col s-gap-4">
109
- <div className="s-flex s-flex-wrap s-gap-2">
110
- <Chip size="mini" color="primary" label="Primary" />
111
- <Chip size="xs" color="primary" label="Primary" />
112
- <Chip size="sm" color="primary" label="Primary" />
113
- </div>
114
- <div className="s-flex s-flex-wrap s-gap-2">
115
- <Chip size="sm" color="primary" label="Primary" />
116
- <Chip size="sm" color="highlight" label="Highlight" />
117
- <Chip size="sm" color="success" label="Success" />
118
- <Chip size="sm" color="warning" label="Warning" />
119
- <Chip size="sm" color="info" label="Info" />
120
- <Chip size="sm" color="green" label="Green" />
121
- <Chip size="sm" color="blue" label="Blue" />
122
- <Chip size="sm" color="rose" label="Rose" />
123
- <Chip size="sm" color="golden" label="Golden" />
124
- </div>
125
- <div className="s-flex s-flex-wrap s-gap-2">
126
- <Chip
127
- size="sm"
128
- color="primary"
129
- label="Primary"
130
- onClick={() => alert("Clicked")}
131
- onRemove={() => alert("Removed")}
132
- />
133
- <Chip
134
- size="sm"
135
- color="highlight"
136
- label="Highlight"
137
- onClick={() => alert("Clicked")}
138
- onRemove={() => alert("Removed")}
139
- />
140
- <Chip
141
- size="sm"
142
- color="success"
143
- label="Success"
144
- onClick={() => alert("Clicked")}
145
- onRemove={() => alert("Removed")}
146
- />
87
+ export const RemovableChip: Story = {
88
+ render: () => (
89
+ <div className="s-space-x-2">
147
90
  <Chip
148
- size="sm"
149
- color="warning"
150
- label="Warning"
151
- onClick={() => alert("Clicked")}
152
- onRemove={() => alert("Removed")}
153
- />
154
- <Chip
155
- size="sm"
156
- color="info"
157
- label="Info"
158
- onClick={() => alert("Clicked")}
159
- onRemove={() => alert("Removed")}
160
- />
161
- <Chip
162
- size="sm"
163
- color="green"
164
- label="Green"
165
- onClick={() => alert("Clicked")}
166
- onRemove={() => alert("Removed")}
167
- />
168
- <Chip
169
- size="sm"
170
- color="blue"
171
- label="Blue"
172
- onClick={() => alert("Clicked")}
91
+ size="mini"
92
+ color="golden"
93
+ label="Remove me"
173
94
  onRemove={() => alert("Removed")}
174
95
  />
175
96
  <Chip
176
- size="sm"
177
- color="rose"
178
- label="Rose"
179
- onClick={() => alert("Clicked")}
97
+ size="xs"
98
+ color="golden"
99
+ label="Remove me"
180
100
  onRemove={() => alert("Removed")}
181
101
  />
182
102
  <Chip
183
103
  size="sm"
184
104
  color="golden"
185
- label="Golden"
186
- onClick={() => alert("Clicked")}
105
+ label="Remove me"
187
106
  onRemove={() => alert("Removed")}
188
107
  />
189
108
  </div>
190
- </div>
191
- );
109
+ ),
110
+ };
111
+
112
+ export const AllColors: Story = {
113
+ render: () => (
114
+ <div className="s-flex s-flex-col s-gap-4">
115
+ <div className="s-flex s-flex-wrap s-gap-2">
116
+ <Chip size="mini" color="primary" label="Primary" />
117
+ <Chip size="xs" color="primary" label="Primary" />
118
+ <Chip size="sm" color="primary" label="Primary" />
119
+ </div>
120
+ <div className="s-flex s-flex-wrap s-gap-2">
121
+ <Chip size="sm" color="primary" label="Primary" />
122
+ <Chip size="sm" color="highlight" label="Highlight" />
123
+ <Chip size="sm" color="success" label="Success" />
124
+ <Chip size="sm" color="warning" label="Warning" />
125
+ <Chip size="sm" color="info" label="Info" />
126
+ <Chip size="sm" color="green" label="Green" />
127
+ <Chip size="sm" color="blue" label="Blue" />
128
+ <Chip size="sm" color="rose" label="Rose" />
129
+ <Chip size="sm" color="golden" label="Golden" />
130
+ </div>
131
+ <div className="s-flex s-flex-wrap s-gap-2">
132
+ <Chip
133
+ size="sm"
134
+ color="primary"
135
+ label="Primary"
136
+ onClick={() => alert("Clicked")}
137
+ onRemove={() => alert("Removed")}
138
+ />
139
+ <Chip
140
+ size="sm"
141
+ color="highlight"
142
+ label="Highlight"
143
+ onClick={() => alert("Clicked")}
144
+ onRemove={() => alert("Removed")}
145
+ />
146
+ <Chip
147
+ size="sm"
148
+ color="success"
149
+ label="Success"
150
+ onClick={() => alert("Clicked")}
151
+ onRemove={() => alert("Removed")}
152
+ />
153
+ <Chip
154
+ size="sm"
155
+ color="warning"
156
+ label="Warning"
157
+ onClick={() => alert("Clicked")}
158
+ onRemove={() => alert("Removed")}
159
+ />
160
+ <Chip
161
+ size="sm"
162
+ color="info"
163
+ label="Info"
164
+ onClick={() => alert("Clicked")}
165
+ onRemove={() => alert("Removed")}
166
+ />
167
+ <Chip
168
+ size="sm"
169
+ color="green"
170
+ label="Green"
171
+ onClick={() => alert("Clicked")}
172
+ onRemove={() => alert("Removed")}
173
+ />
174
+ <Chip
175
+ size="sm"
176
+ color="blue"
177
+ label="Blue"
178
+ onClick={() => alert("Clicked")}
179
+ onRemove={() => alert("Removed")}
180
+ />
181
+ <Chip
182
+ size="sm"
183
+ color="rose"
184
+ label="Rose"
185
+ onClick={() => alert("Clicked")}
186
+ onRemove={() => alert("Removed")}
187
+ />
188
+ <Chip
189
+ size="sm"
190
+ color="golden"
191
+ label="Golden"
192
+ onClick={() => alert("Clicked")}
193
+ onRemove={() => alert("Removed")}
194
+ />
195
+ </div>
196
+ </div>
197
+ ),
198
+ };