@infonomic/uikit 5.9.0 → 5.10.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.
Files changed (43) hide show
  1. package/dist/components/button/@types/button.d.ts +1 -1
  2. package/dist/components/button/@types/button.d.ts.map +1 -1
  3. package/dist/components/button/@types/button.js +1 -0
  4. package/dist/components/button/button.module.css +107 -28
  5. package/dist/components/button/button.module.js +2 -0
  6. package/dist/components/button/button_module.css +53 -0
  7. package/dist/components/chips/@types/chip.d.ts +6 -0
  8. package/dist/components/chips/@types/chip.d.ts.map +1 -0
  9. package/dist/components/chips/@types/chip.js +7 -0
  10. package/dist/components/chips/chip.d.ts +32 -0
  11. package/dist/components/chips/chip.d.ts.map +1 -0
  12. package/dist/components/chips/chip.js +97 -0
  13. package/dist/components/chips/chip.module.css +425 -0
  14. package/dist/components/chips/chip.module.js +28 -0
  15. package/dist/components/chips/chip_module.css +319 -0
  16. package/dist/components/chips/index.js +2 -0
  17. package/dist/icons/check-icon.js +1 -0
  18. package/dist/icons/close-icon.d.ts.map +1 -1
  19. package/dist/icons/close-icon.js +21 -9
  20. package/dist/icons/icon-element.d.ts.map +1 -1
  21. package/dist/icons/icon-element.js +1 -4
  22. package/dist/icons/icons.module.css +8 -0
  23. package/dist/icons/icons_module.css +8 -0
  24. package/dist/react.d.ts +1 -0
  25. package/dist/react.d.ts.map +1 -1
  26. package/dist/react.js +1 -0
  27. package/dist/styles/components-vanilla.css +1 -1
  28. package/dist/styles/styles.css +1 -1
  29. package/package.json +18 -18
  30. package/src/components/button/@types/button.ts +1 -1
  31. package/src/components/button/button-intents.stories.tsx +2 -2
  32. package/src/components/button/button.module.css +107 -28
  33. package/src/components/chips/@types/chip.ts +7 -0
  34. package/src/components/chips/chip.module.css +425 -0
  35. package/src/components/chips/chip.stories.tsx +108 -0
  36. package/src/components/chips/chip.tsx +185 -0
  37. package/src/components/chips/index.ts +2 -0
  38. package/src/icons/check-icon.tsx +1 -1
  39. package/src/icons/close-icon.tsx +12 -11
  40. package/src/icons/icon-element.tsx +1 -4
  41. package/src/icons/icons.module.css +8 -0
  42. package/src/react.ts +1 -0
  43. package/src/styles/functional/colors.css +116 -107
@@ -0,0 +1,425 @@
1
+ @layer infonomic-base, infonomic-functional, infonomic-utilities, infonomic-theme, infonomic-typography, infonomic-components;
2
+
3
+ @layer infonomic-components {
4
+
5
+ .chip,
6
+ :global(.chip) {
7
+ --chip-border: var(--surface-panel-border);
8
+ --chip-font-size: 0.9rem;
9
+ --chip-height: 34px;
10
+ --chip-padding-y: 0.35rem;
11
+ --chip-padding-x: 0.4rem;
12
+ --chip-icon-size: 1rem;
13
+
14
+ appearance: none;
15
+ border: 1px solid var(--chip-border);
16
+ display: inline-flex;
17
+ align-items: center;
18
+ gap: var(--gap-1);
19
+ border-radius: var(--border-radius-sm);
20
+ cursor: pointer;
21
+ line-height: 1.1;
22
+ font-weight: 500;
23
+ text-decoration: none;
24
+ min-height: var(--chip-height);
25
+ padding: var(--chip-padding-y) var(--chip-padding-x);
26
+ font-size: var(--chip-font-size);
27
+ transition: background-color var(--transition-normal), box-shadow var(--transition-normal);
28
+ }
29
+
30
+ .chip:disabled,
31
+ .chip[disabled],
32
+ :global(.chip):disabled,
33
+ :global(.chip)[disabled] {
34
+ pointer-events: none;
35
+ }
36
+
37
+ .chip:focus,
38
+ .chip:active,
39
+ :global(.chip):focus,
40
+ :global(.chip):active {
41
+ --ring-offset-color: var(--background);
42
+ --ring-offset-shadow: var(--ring-inset) 0 0 0 var(--ring-offset-width) var(--ring-offset-color);
43
+ --ring-shadow: var(--ring-inset) 0 0 0 calc(1px + var(--ring-offset-width)) var(--ring-color);
44
+ box-shadow: var(--ring-offset-shadow), var(--ring-shadow), var(--shadow, 0 0 #0000);
45
+ }
46
+
47
+ .label {
48
+ display: inline-flex;
49
+ align-items: center;
50
+ white-space: nowrap;
51
+ }
52
+
53
+ .icon {
54
+ width: var(--chip-icon-size);
55
+ height: var(--chip-icon-size);
56
+ }
57
+
58
+ .end-icon {
59
+ margin-left: 0.3rem;
60
+ }
61
+
62
+ .iconWrapper {
63
+ display: inline-flex;
64
+ align-items: center;
65
+ justify-content: center;
66
+ line-height: 0;
67
+ }
68
+
69
+ .remove {
70
+ width: calc(var(--chip-icon-size) * 0.85);
71
+ height: calc(var(--chip-icon-size) * 0.85);
72
+ min-height: calc(var(--chip-icon-size) * 0.85);
73
+ }
74
+
75
+ /* Sizes ----------------------------------------------------------- */
76
+ .xs,
77
+ :global(.chip-xs) {
78
+ --chip-height: 24px;
79
+ --chip-padding-y: 0.15rem;
80
+ --chip-padding-x: 0.3rem;
81
+ --chip-font-size: 0.75rem;
82
+ --chip-icon-size: 1rem;
83
+ gap: var(--gap-1);
84
+ }
85
+
86
+ .sm,
87
+ :global(.chip-sm) {
88
+ --chip-height: 28px;
89
+ --chip-padding-y: 0.2rem;
90
+ --chip-padding-x: 0.4rem;
91
+ --chip-font-size: 0.82rem;
92
+ --chip-icon-size: 1.2rem;
93
+ }
94
+
95
+ .md,
96
+ :global(.chip-md) {
97
+ --chip-height: 32px;
98
+ --chip-padding-y: 0.25rem;
99
+ --chip-padding-x: 0.5rem;
100
+ --chip-font-size: 0.9rem;
101
+ --chip-icon-size: 1.3rem;
102
+ }
103
+
104
+ .lg,
105
+ :global(.chip-lg) {
106
+ --chip-height: 36px;
107
+ --chip-padding-y: 0.3rem;
108
+ --chip-padding-x: 0.6rem;
109
+ --chip-font-size: 0.98rem;
110
+ --chip-icon-size: 1.35rem;
111
+ }
112
+
113
+ .xl,
114
+ :global(.chip-xl) {
115
+ --chip-height: 40px;
116
+ --chip-padding-y: 0.3rem;
117
+ --chip-padding-x: 0.7rem;
118
+ --chip-font-size: 1rem;
119
+ --chip-icon-size: 1.4rem;
120
+ }
121
+
122
+ /* Variants -------------------------------------------------------- */
123
+ /* Variants - Consuming Variables */
124
+ .filled,
125
+ :global(.chip-filled) {
126
+ color: var(--chip-variant-filled-foreground);
127
+ background-color: var(--chip-variant-filled);
128
+ }
129
+
130
+ .filled:hover,
131
+ :global(.chip-filled):hover {
132
+ background-color: var(--chip-variant-filled-hover);
133
+ }
134
+
135
+ .filled:focus,
136
+ .filled:active,
137
+ :global(.chip-filled):focus,
138
+ :global(.chip-filled):active {
139
+ --ring-color: var(--chip-ring-color);
140
+ }
141
+
142
+ .filled:disabled,
143
+ .filled[disabled],
144
+ :global(.chip-filled):disabled,
145
+ :global(.chip-filled)[disabled] {
146
+ background-color: var(--chip-variant-filled-disabled, oklch(from var(--chip-variant-filled) calc(l * 1.1) calc(c * 0.85) h));
147
+ color: var(--chip-variant-filled-foreground-disabled, oklch(from var(--chip-variant-filled-foreground) calc(l * 0.9) calc(c * 0.85) h));
148
+ }
149
+
150
+ /* -------------------------------------------------------- */
151
+ /* Weak variant for close button on selected chip */
152
+
153
+ .filled-weak,
154
+ :global(.chip-filled) {
155
+ color: var(--chip-variant-filled-weak-foreground);
156
+ background-color: var(--chip-variant-filled-weak);
157
+ }
158
+
159
+ .filled-weak:hover,
160
+ :global(.chip-filled):hover {
161
+ background-color: var(--chip-variant-filled-weak-hover);
162
+ }
163
+
164
+ .filled-weak:focus,
165
+ .filled-weak:active,
166
+ :global(.chip-filled):focus,
167
+ :global(.chip-filled):active {
168
+ --ring-color: var(--chip-ring-color);
169
+ }
170
+
171
+ .filled-weak:disabled,
172
+ .filled[disabled],
173
+ :global(.chip-filled):disabled,
174
+ :global(.chip-filled)[disabled] {
175
+ background-color: var(--chip-variant-filled-weak-disabled, oklch(from var(--chip-variant-filled-weak) calc(l * 1.1) calc(c * 0.85) h));
176
+ color: var(--chip-variant-filled-weak-foreground-disabled, oklch(from var(--chip-variant-filled-weak-foreground) calc(l * 0.9) calc(c * 0.85) h));
177
+ }
178
+
179
+ /* -------------------------------------------------------- */
180
+ /* Outlined variant */
181
+
182
+ .outlined,
183
+ :global(.chip-outlined) {
184
+ border: 1px solid var(--chip-variant-outlined-border);
185
+ color: var(--chip-variant-outlined-foreground);
186
+ background-color: var(--chip-variant-outlined);
187
+ }
188
+
189
+ .outlined:disabled,
190
+ .outlined[disabled],
191
+ :global(.chip-outlined):disabled,
192
+ :global(.chip-outlined)[disabled] {
193
+ border-color: var(--chip-variant-outlined-border-disabled, oklch(from var(--chip-variant-outlined-border) calc(l * 1.5) calc(c * 0.8) h));
194
+ color: var(--chip-variant-outlined-foreground-disabled, oklch(from var(--chip-variant-outlined-foreground) calc(l * 1.1) calc(c * 0.7) h));
195
+ }
196
+
197
+ .outlined:hover,
198
+ :global(.chip-outlined):hover {
199
+ background-color: var(--chip-variant-outlined-hover);
200
+ }
201
+
202
+ .outlined:focus,
203
+ .outlined:active,
204
+ :global(.chip-outlined):focus,
205
+ :global(.chip-outlined):active {
206
+ --ring-color: var(--chip-ring-color);
207
+ }
208
+
209
+ .text,
210
+ :global(.chip-text) {
211
+ background-color: var(--chip-variant-text);
212
+ color: var(--chip-variant-text-foreground);
213
+ }
214
+
215
+ .text:disabled,
216
+ .text[disabled],
217
+ :global(.chip-text):disabled,
218
+ :global(.chip-text)[disabled] {
219
+ color: oklch(from var(--chip-variant-text-foreground) calc(l * 1.5) calc(c * 0.5) h);
220
+ }
221
+
222
+ .text:hover,
223
+ :global(.chip-text):hover {
224
+ background-color: var(--chip-variant-text-hover);
225
+ }
226
+
227
+ .text:focus,
228
+ .text:active,
229
+ :global(.chip-text):focus,
230
+ :global(.chip-text):active {
231
+ --ring-color: var(--chip-ring-color);
232
+ }
233
+
234
+ /* Intents - Defining Variables */
235
+ .primary,
236
+ :global(.chip-primary) {
237
+ --chip-ring-color: var(--ring-primary);
238
+
239
+ /* Filled */
240
+ --chip-variant-filled: var(--fill-primary-strong);
241
+ --chip-variant-filled-foreground: var(--text-on-primary);
242
+ --chip-variant-filled-hover: var(--fill-primary-strong-hover);
243
+ --chip-variant-filled-disabled: var(--fill-primary-strong-disabled);
244
+ --chip-variant-filled-foreground-disabled: var(--text-on-primary-disabled);
245
+
246
+ /* Filled Weak */
247
+ --chip-variant-filled-weak: var(--fill-primary-weak);
248
+ --chip-variant-filled-weak-foreground: var(--text-on-primary);
249
+ --chip-variant-filled-weak-hover: var(--fill-primary-weak-hover);
250
+ --chip-variant-filled-weak-disabled: var(--fill-primary-weak-disabled);
251
+ --chip-variant-filled-weak-foreground-disabled: var(--text-on-primary-disabled);
252
+
253
+ /* Outlined */
254
+ --chip-variant-outlined: transparent;
255
+ --chip-variant-outlined-foreground: var(--text-primary-strong);
256
+ --chip-variant-outlined-hover: var(--fill-primary-weak);
257
+ --chip-variant-outlined-border: var(--stroke-primary);
258
+ --chip-variant-outlined-border-disabled: var(--stroke-primary-disabled);
259
+ --chip-variant-outlined-foreground-disabled: var(--text-primary-disabled);
260
+ }
261
+
262
+ .secondary,
263
+ :global(.chip-secondary) {
264
+ --chip-ring-color: var(--ring-secondary);
265
+
266
+ /* Filled */
267
+ --chip-variant-filled: var(--fill-secondary-strong);
268
+ --chip-variant-filled-foreground: var(--text-on-secondary);
269
+ --chip-variant-filled-hover: var(--fill-secondary-strong-hover);
270
+ --chip-variant-filled-disabled: var(--fill-secondary-strong-disabled);
271
+ --chip-variant-filled-foreground-disabled: var(--text-on-secondary-disabled);
272
+
273
+ /* Filled Weak */
274
+ --chip-variant-filled-weak: var(--fill-secondary-weak);
275
+ --chip-variant-filled-weak-foreground: var(--text-on-secondary);
276
+ --chip-variant-filled-weak-hover: var(--fill-secondary-weak-hover);
277
+ --chip-variant-filled-weak-disabled: var(--fill-secondary-weak-disabled);
278
+ --chip-variant-filled-weak-foreground-disabled: var(--text-on-secondary-disabled);
279
+
280
+
281
+ /* Outlined */
282
+ --chip-variant-outlined: transparent;
283
+ --chip-variant-outlined-foreground: var(--text-secondary-strong);
284
+ --chip-variant-outlined-hover: var(--fill-secondary-weak);
285
+ --chip-variant-outlined-border: var(--stroke-secondary);
286
+ --chip-variant-outlined-border-disabled: var(--stroke-secondary-disabled);
287
+ --chip-variant-outlined-foreground-disabled: var(--text-secondary-disabled);
288
+ }
289
+
290
+ .noeffect,
291
+ :global(.chip-noeffect) {
292
+ --chip-ring-color: var(--ring-noeffect);
293
+
294
+ /* Filled */
295
+ --chip-variant-filled: var(--fill-noeffect-strong);
296
+ --chip-variant-filled-foreground: var(--text-on-noeffect);
297
+ --chip-variant-filled-hover: var(--fill-noeffect-strong-hover);
298
+ --chip-variant-filled-disabled: var(--fill-noeffect-strong-disabled);
299
+ --chip-variant-filled-foreground-disabled: var(--text-on-noeffect-disabled);
300
+
301
+ /* Filled Weak */
302
+ --chip-variant-filled-weak: var(--fill-noeffect-weak);
303
+ --chip-variant-filled-weak-foreground: var(--text-on-noeffect);
304
+ --chip-variant-filled-weak-hover: var(--fill-noeffect-weak-hover);
305
+ --chip-variant-filled-weak-disabled: var(--fill-noeffect-weak-disabled);
306
+ --chip-variant-filled-weak-foreground-disabled: var(--text-on-noeffect-disabled);
307
+
308
+ /* Outlined */
309
+ --chip-variant-outlined: transparent;
310
+ --chip-variant-outlined-foreground: var(--text-noeffect-strong);
311
+ --chip-variant-outlined-hover: var(--fill-noeffect-weak);
312
+ --chip-variant-outlined-border: var(--stroke-noeffect);
313
+ --chip-variant-outlined-border-disabled: var(--stroke-noeffect-disabled);
314
+ --chip-variant-outlined-foreground-disabled: var(--text-noeffect-disabled);
315
+ }
316
+
317
+ .success,
318
+ :global(.chip-success) {
319
+ --chip-ring-color: var(--ring-success);
320
+
321
+ /* Filled */
322
+ --chip-variant-filled: var(--fill-success-strong);
323
+ --chip-variant-filled-foreground: var(--text-on-success);
324
+ --chip-variant-filled-hover: var(--fill-success-strong-hover);
325
+ --chip-variant-filled-disabled: var(--fill-success-strong-disabled);
326
+ --chip-variant-filled-foreground-disabled: var(--text-on-success-disabled);
327
+
328
+ /* Filled Weak */
329
+ --chip-variant-filled-weak: var(--fill-success-weak);
330
+ --chip-variant-filled-weak-foreground: var(--text-on-success);
331
+ --chip-variant-filled-weak-hover: var(--fill-success-weak-hover);
332
+ --chip-variant-filled-weak-disabled: var(--fill-success-weak-disabled);
333
+ --chip-variant-filled-weak-foreground-disabled: var(--text-on-success-disabled);
334
+
335
+
336
+ /* Outlined */
337
+ --chip-variant-outlined: transparent;
338
+ --chip-variant-outlined-foreground: var(--text-success-strong);
339
+ --chip-variant-outlined-hover: var(--fill-success-weak);
340
+ --chip-variant-outlined-border: var(--stroke-success);
341
+ --chip-variant-outlined-border-disabled: var(--stroke-success-disabled);
342
+ --chip-variant-outlined-foreground-disabled: var(--text-success-disabled);
343
+ }
344
+
345
+ .info,
346
+ :global(.chip-info) {
347
+ --chip-ring-color: var(--ring-info);
348
+
349
+ /* Filled */
350
+ --chip-variant-filled: var(--fill-info-strong);
351
+ --chip-variant-filled-foreground: var(--text-on-info);
352
+ --chip-variant-filled-hover: var(--fill-info-strong-hover);
353
+ --chip-variant-filled-disabled: var(--fill-info-strong-disabled);
354
+ --chip-variant-filled-foreground-disabled: var(--text-on-info-disabled);
355
+
356
+ /* Filled Weak */
357
+ --chip-variant-filled-weak: var(--fill-info-weak);
358
+ --chip-variant-filled-weak-foreground: var(--text-on-info);
359
+ --chip-variant-filled-weak-hover: var(--fill-info-weak-hover);
360
+ --chip-variant-filled-weak-disabled: var(--fill-info-weak-disabled);
361
+ --chip-variant-filled-weak-foreground-disabled: var(--text-on-info-disabled);
362
+
363
+ /* Outlined */
364
+ --chip-variant-outlined: transparent;
365
+ --chip-variant-outlined-foreground: var(--text-info-strong);
366
+ --chip-variant-outlined-hover: var(--fill-info-weak);
367
+ --chip-variant-outlined-border: var(--stroke-info);
368
+ --chip-variant-outlined-border-disabled: var(--stroke-info-disabled);
369
+ --chip-variant-outlined-foreground-disabled: var(--text-info-disabled);
370
+ }
371
+
372
+ .warning,
373
+ :global(.chip-warning) {
374
+ --chip-ring-color: var(--ring-warning);
375
+
376
+ /* Filled */
377
+ --chip-variant-filled: var(--fill-warning-strong);
378
+ --chip-variant-filled-foreground: var(--text-on-warning);
379
+ --chip-variant-filled-hover: var(--fill-warning-strong-hover);
380
+ --chip-variant-filled-disabled: var(--fill-warning-strong-disabled);
381
+ --chip-variant-filled-foreground-disabled: var(--text-on-warning-disabled);
382
+
383
+ /* Filled Weak */
384
+ --chip-variant-filled-weak: var(--fill-warning-weak);
385
+ --chip-variant-filled-weak-foreground: var(--text-on-warning);
386
+ --chip-variant-filled-weak-hover: var(--fill-warning-weak-hover);
387
+ --chip-variant-filled-weak-disabled: var(--fill-warning-weak-disabled);
388
+ --chip-variant-filled-weak-foreground-disabled: var(--text-on-warning-disabled);
389
+
390
+ /* Outlined */
391
+ --chip-variant-outlined: transparent;
392
+ --chip-variant-outlined-foreground: var(--text-warning-strong);
393
+ --chip-variant-outlined-hover: var(--fill-warning-weak);
394
+ --chip-variant-outlined-border: var(--stroke-warning);
395
+ --chip-variant-outlined-border-disabled: var(--stroke-warning-disabled);
396
+ --chip-variant-outlined-foreground-disabled: var(--text-warning-disabled);
397
+ }
398
+
399
+ .danger,
400
+ :global(.chip-danger) {
401
+ --chip-ring-color: var(--ring-danger);
402
+
403
+ /* Filled */
404
+ --chip-variant-filled: var(--fill-danger-strong);
405
+ --chip-variant-filled-foreground: var(--text-on-danger);
406
+ --chip-variant-filled-hover: var(--fill-danger-strong-hover);
407
+ --chip-variant-filled-disabled: var(--fill-danger-strong-disabled);
408
+ --chip-variant-filled-foreground-disabled: var(--text-on-danger-disabled);
409
+
410
+ /* Filled Weak */
411
+ --chip-variant-filled-weak: var(--fill-danger-weak);
412
+ --chip-variant-filled-weak-foreground: var(--text-on-danger);
413
+ --chip-variant-filled-weak-hover: var(--fill-danger-weak-hover);
414
+ --chip-variant-filled-weak-disabled: var(--fill-danger-weak-disabled);
415
+ --chip-variant-filled-weak-foreground-disabled: var(--text-on-danger-disabled);
416
+
417
+ /* Outlined */
418
+ --chip-variant-outlined: transparent;
419
+ --chip-variant-outlined-foreground: var(--text-danger-strong);
420
+ --chip-variant-outlined-hover: var(--fill-danger-weak);
421
+ --chip-variant-outlined-border: var(--stroke-danger);
422
+ --chip-variant-outlined-border-disabled: var(--stroke-danger-disabled);
423
+ --chip-variant-outlined-foreground-disabled: var(--text-danger-disabled);
424
+ }
425
+ }
@@ -0,0 +1,108 @@
1
+ import type { Meta, StoryObj } from '@storybook/react-vite'
2
+ import { useState } from 'react'
3
+
4
+ import { capitalize } from '../../utils/capitalize.js'
5
+ import { intent, size } from '../@types/shared.js'
6
+ import { CalendarIcon } from '../../icons/calendar-icon.js'
7
+ import { Chip } from './chip.js'
8
+ import { chipVariant } from './@types/chip.js'
9
+
10
+ type Story = StoryObj<typeof Chip>
11
+
12
+ const Row = ({ children }: { children: React.ReactNode }) => (
13
+ <div style={{ display: 'flex', gap: '12px', flexWrap: 'wrap', alignItems: 'center' }}>{children}</div>
14
+ )
15
+
16
+ export const Intents: Story = {
17
+ render: () => (
18
+ <div style={{ maxWidth: '800px', margin: '2rem auto' }}>
19
+ <div style={{ display: 'flex', flexDirection: 'column', gap: '12px' }}>
20
+ {intent.map((i) => (
21
+ <Row key={i}>
22
+ <Chip intent={i}>{capitalize(i)} chip</Chip>
23
+ <Chip intent={i} variant="selectable" selected>
24
+ {capitalize(i)} selectable
25
+ </Chip>
26
+ </Row>
27
+ ))}
28
+ </div>
29
+ </div>
30
+ ),
31
+ }
32
+
33
+ export const Sizes: Story = {
34
+ render: () => (
35
+ <div style={{ maxWidth: '800px', margin: '2rem auto' }}>
36
+ <Row>
37
+ {size.map((s) => (
38
+ <Chip variant={"selectable-removable"} selected={true} key={s} size={s}>{`Size ${s}`}</Chip>
39
+ ))}
40
+ </Row>
41
+ </div>
42
+ ),
43
+ }
44
+
45
+ export const Variants: Story = {
46
+ render: () => (
47
+ <div style={{ maxWidth: '800px', margin: '2rem auto' }}>
48
+ <div style={{ display: 'flex', flexDirection: 'column', gap: '12px' }}>
49
+ {chipVariant.map((variant) => (
50
+ <Row key={variant}>
51
+ <Chip variant={variant}>{capitalize(variant)} chip</Chip>
52
+ <Chip variant={variant} startIcon={<CalendarIcon height="16px" width="16px" />} selected={true}>{`${capitalize(variant)} with icon`}</Chip>
53
+ {(variant === 'removable' || variant === 'selectable-removable') && (
54
+ <Chip variant={variant} onRemove={() => {}}>
55
+ {`${capitalize(variant)} with remove`}
56
+ </Chip>
57
+ )}
58
+ </Row>
59
+ ))}
60
+ </div>
61
+ </div>
62
+ ),
63
+ }
64
+
65
+ export const Selectable: Story = {
66
+ render: () => {
67
+ const [selected, setSelected] = useState(false)
68
+ return (
69
+ <div style={{ maxWidth: '800px', margin: '2rem auto' }}>
70
+ <Row>
71
+ <Chip
72
+ variant="selectable"
73
+ intent="primary"
74
+ size="sm"
75
+ selected={selected}
76
+ onToggle={(next: boolean) => setSelected(next)}
77
+ >
78
+ Toggle me
79
+ </Chip>
80
+ </Row>
81
+ </div>
82
+ )
83
+ },
84
+ }
85
+
86
+ export const Removable: Story = {
87
+ render: () => (
88
+ <div style={{ maxWidth: '800px', margin: '2rem auto' }}>
89
+ <Row>
90
+ <Chip
91
+ variant="removable"
92
+ intent="primary"
93
+ onRemove={() => {}}
94
+ startIcon={<CalendarIcon height="16px" width="16px" />}
95
+ >
96
+ Removable chip
97
+ </Chip>
98
+ </Row>
99
+ </div>
100
+ ),
101
+ }
102
+
103
+ const meta: Meta<typeof Chip> = {
104
+ title: 'Components/Chip',
105
+ component: Chip,
106
+ }
107
+
108
+ export default meta