@colletdev/docs 0.2.1

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/components.md ADDED
@@ -0,0 +1,2268 @@
1
+ # Collet Component API Reference
2
+
3
+ > Auto-generated by `scripts/generate-skill-docs.mjs` from `custom-elements.json`.
4
+ > Do not edit manually — re-run the generator after manifest changes.
5
+
6
+ ## Overview
7
+
8
+ Collet ships 49 components as Custom Elements (`<cx-*>`) with
9
+ framework wrappers for React, Vue, Svelte, and Angular.
10
+
11
+ **npm packages:**
12
+ - `@colletdev/core` — Custom Elements + WASM runtime + types
13
+ - `@colletdev/react` — React wrappers with typed props, events, and refs
14
+ - `@colletdev/vue` — Vue 3 SFC wrappers (planned)
15
+ - `@colletdev/svelte` — Svelte components (planned)
16
+ - `@colletdev/angular` — Angular directives with CVA support (planned)
17
+
18
+ **Form-associated components** participate in native `<form>` submission and
19
+ expose `name`, `value`, and `disabled` through the `ElementInternals` API.
20
+
21
+ **Structured props** (arrays/objects) accept both typed objects and JSON strings.
22
+ Import TypeScript interfaces from `@colletdev/core/types`.
23
+
24
+ ---
25
+
26
+ ## Components
27
+
28
+ ### Accordion
29
+
30
+ Collapsible content panels with single or multiple mode.
31
+
32
+ **Tag:** `<cx-accordion>` | **Form:** no
33
+
34
+ #### Import
35
+
36
+ | Framework | Import |
37
+ |-----------|--------|
38
+ | React | `import { Accordion } from '@colletdev/react'` |
39
+ | Vue | `import { Accordion } from '@colletdev/vue'` |
40
+ | Svelte | `import Accordion from '@colletdev/svelte/accordion.svelte'` |
41
+ | Angular | `import { CxAccordion } from '@colletdev/angular'` |
42
+
43
+ #### Props
44
+
45
+ | Prop | Type | Default | Description |
46
+ |------|------|---------|-------------|
47
+ | id | `string` | — | |
48
+ | label | `string` | — | |
49
+ | items | `AccordionItem[] \| string` | — | |
50
+ | mode | `'single' \| 'multiple'` | — | |
51
+ | collapsible | `boolean` | `false` | |
52
+ | headingLevel | `'h2' \| 'h3' \| 'h4' \| 'h5' \| 'h6'` | — | |
53
+ | defaultExpanded | `string[] \| string` | — | |
54
+ | size | `'xs' \| 'sm' \| 'md' \| 'lg' \| 'xl'` | — | |
55
+ | disabled | `boolean` | `false` | |
56
+
57
+ #### Events
58
+
59
+ | Event | React | Vue | Detail |
60
+ |-------|-------|-----|--------|
61
+ | `cx-change` | `onChange` | `@cx-change` | `AccordionDetail` |
62
+
63
+ #### Structured Types
64
+
65
+ Import from `@colletdev/core/types`:
66
+
67
+ - `AccordionDetail`
68
+ - `AccordionItem`
69
+
70
+ ---
71
+
72
+ ### ActivityGroup
73
+
74
+ Grouped activity feed with expandable entries and status indicators.
75
+
76
+ **Tag:** `<cx-activity-group>` | **Form:** no
77
+
78
+ #### Import
79
+
80
+ | Framework | Import |
81
+ |-----------|--------|
82
+ | React | `import { ActivityGroup } from '@colletdev/react'` |
83
+ | Vue | `import { ActivityGroup } from '@colletdev/vue'` |
84
+ | Svelte | `import ActivityGroup from '@colletdev/svelte/activity-group.svelte'` |
85
+ | Angular | `import { CxActivityGroup } from '@colletdev/angular'` |
86
+
87
+ #### Props
88
+
89
+ | Prop | Type | Default | Description |
90
+ |------|------|---------|-------------|
91
+ | id | `string` | — | |
92
+ | status | `string` | — | |
93
+ | size | `'xs' \| 'sm' \| 'md' \| 'lg' \| 'xl'` | — | |
94
+ | border | `string` | — | |
95
+ | summary | `string` | — | |
96
+ | action | `string` | — | |
97
+ | expanded | `boolean` | `false` | |
98
+ | parts | `string` | — | |
99
+
100
+ ---
101
+
102
+ ### Alert
103
+
104
+ Contextual feedback banner with intent, icon, and optional dismiss action.
105
+
106
+ **Tag:** `<cx-alert>` | **Form:** no | **Slots:** actions
107
+
108
+ #### Import
109
+
110
+ | Framework | Import |
111
+ |-----------|--------|
112
+ | React | `import { Alert } from '@colletdev/react'` |
113
+ | Vue | `import { Alert } from '@colletdev/vue'` |
114
+ | Svelte | `import Alert from '@colletdev/svelte/alert.svelte'` |
115
+ | Angular | `import { CxAlert } from '@colletdev/angular'` |
116
+
117
+ #### Props
118
+
119
+ | Prop | Type | Default | Description |
120
+ |------|------|---------|-------------|
121
+ | id | `string` | — | |
122
+ | title | `string` | — | |
123
+ | description | `string` | — | |
124
+ | variant | `'subtle' \| 'filled' \| 'outline'` | — | |
125
+ | intent | `'neutral' \| 'primary' \| 'info' \| 'success' \| 'warning' \| 'danger'` | — | |
126
+ | size | `'xs' \| 'sm' \| 'md' \| 'lg' \| 'xl'` | — | |
127
+ | showIcon | `boolean` | `false` | |
128
+ | icon | `string` | — | |
129
+ | dismissible | `boolean` | `false` | |
130
+ | dismissLabel | `string` | — | |
131
+ | compact | `boolean` | `false` | |
132
+ | dynamic | `boolean` | `false` | |
133
+ | actionsHtml | `string` | — | |
134
+
135
+ #### Events
136
+
137
+ | Event | React | Vue | Detail |
138
+ |-------|-------|-----|--------|
139
+ | `cx-dismiss` | `onDismiss` | `@cx-dismiss` | `DismissDetail` |
140
+
141
+ #### Structured Types
142
+
143
+ Import from `@colletdev/core/types`:
144
+
145
+ - `DismissDetail`
146
+
147
+ ---
148
+
149
+ ### Autocomplete
150
+
151
+ Combobox input with filterable suggestions, single or multi-select.
152
+
153
+ **Tag:** `<cx-autocomplete>` | **Form:** yes | **Ref methods:** open, close, clear, focus
154
+
155
+ #### Import
156
+
157
+ | Framework | Import |
158
+ |-----------|--------|
159
+ | React | `import { Autocomplete } from '@colletdev/react'` |
160
+ | Vue | `import { Autocomplete } from '@colletdev/vue'` |
161
+ | Svelte | `import Autocomplete from '@colletdev/svelte/autocomplete.svelte'` |
162
+ | Angular | `import { CxAutocomplete } from '@colletdev/angular'` |
163
+
164
+ #### Props
165
+
166
+ | Prop | Type | Default | Description |
167
+ |------|------|---------|-------------|
168
+ | id | `string` | — | |
169
+ | label | `string` | — | |
170
+ | variant | `'outline' \| 'filled' \| 'ghost'` | — | |
171
+ | shape | `'sharp' \| 'rounded' \| 'pill'` | — | |
172
+ | size | `'xs' \| 'sm' \| 'md' \| 'lg' \| 'xl'` | — | |
173
+ | mode | `'single' \| 'multiple'` | — | 'single' for single select, 'multiple' for multi-select with chips. |
174
+ | selected | `string[] \| string` | — | |
175
+ | query | `string` | — | Current search query text. Controlled by onInput events. |
176
+ | placeholder | `string` | — | |
177
+ | helperText | `string` | — | |
178
+ | error | `string` | — | |
179
+ | disabled | `boolean` | `false` | |
180
+ | required | `boolean` | `false` | |
181
+ | readonly | `boolean` | `false` | |
182
+ | name | `string` | — | |
183
+ | allowCustom | `boolean` | `false` | When true, user can submit values not in the items list. |
184
+ | clearable | `boolean` | `false` | |
185
+ | items | `SelectOption[] \| string` | — | Options to filter from. Filtering is client-side (fuzzy substring match). For server-side search, update this array in your onInput handler. |
186
+ | groups | `OptionGroup[] \| string` | — | |
187
+
188
+ #### Events
189
+
190
+ | Event | React | Vue | Detail |
191
+ |-------|-------|-----|--------|
192
+ | `cx-input` | `onInput` | `@cx-input` | `InputDetail` |
193
+ | `cx-change` | `onChange` | `@cx-change` | `SelectDetail` |
194
+ | `cx-focus` | `onFocus` | `@cx-focus` | `FocusDetail` |
195
+ | `cx-blur` | `onBlur` | `@cx-blur` | `FocusDetail` |
196
+ | `cx-keydown` | `onKeydown` | `@cx-keydown` | `KeyboardDetail` |
197
+ | `cx-keyup` | `onKeyup` | `@cx-keyup` | `KeyboardDetail` |
198
+
199
+ #### Ref Methods
200
+
201
+ | Method | Description |
202
+ |--------|-------------|
203
+ | `open()` | Opens the suggestion dropdown. |
204
+ | `close()` | Closes the suggestion dropdown. |
205
+ | `clear()` | Clears all selections (multi-mode) or the input (single-mode). |
206
+ | `focus()` | Focuses the search input. |
207
+
208
+ #### Structured Types
209
+
210
+ Import from `@colletdev/core/types`:
211
+
212
+ - `FocusDetail`
213
+ - `InputDetail`
214
+ - `KeyboardDetail`
215
+ - `OptionGroup`
216
+ - `SelectDetail`
217
+ - `SelectOption`
218
+
219
+ ---
220
+
221
+ ### Avatar
222
+
223
+ User or entity representation with image, initials, or icon fallback.
224
+
225
+ **Tag:** `<cx-avatar>` | **Form:** no
226
+
227
+ #### Import
228
+
229
+ | Framework | Import |
230
+ |-----------|--------|
231
+ | React | `import { Avatar } from '@colletdev/react'` |
232
+ | Vue | `import { Avatar } from '@colletdev/vue'` |
233
+ | Svelte | `import Avatar from '@colletdev/svelte/avatar.svelte'` |
234
+ | Angular | `import { CxAvatar } from '@colletdev/angular'` |
235
+
236
+ #### Props
237
+
238
+ | Prop | Type | Default | Description |
239
+ |------|------|---------|-------------|
240
+ | id | `string` | — | |
241
+ | label | `string` | — | |
242
+ | shape | `'circle' \| 'rounded'` | — | |
243
+ | size | `'xs' \| 'sm' \| 'md' \| 'lg' \| 'xl'` | — | |
244
+ | image | `string` | — | |
245
+ | initials | `string` | — | |
246
+ | clickable | `boolean` | `false` | |
247
+
248
+ ---
249
+
250
+ ### Backdrop
251
+
252
+ Overlay layer for modals and drawers with click-to-close support.
253
+
254
+ **Tag:** `<cx-backdrop>` | **Form:** no
255
+
256
+ #### Import
257
+
258
+ | Framework | Import |
259
+ |-----------|--------|
260
+ | React | `import { Backdrop } from '@colletdev/react'` |
261
+ | Vue | `import { Backdrop } from '@colletdev/vue'` |
262
+ | Svelte | `import Backdrop from '@colletdev/svelte/backdrop.svelte'` |
263
+ | Angular | `import { CxBackdrop } from '@colletdev/angular'` |
264
+
265
+ #### Props
266
+
267
+ | Prop | Type | Default | Description |
268
+ |------|------|---------|-------------|
269
+ | tint | `string` | — | |
270
+ | blur | `string` | — | |
271
+ | dismissible | `boolean` | `false` | |
272
+
273
+ ---
274
+
275
+ ### Badge
276
+
277
+ Small status indicator or count label, with optional dismiss.
278
+
279
+ **Tag:** `<cx-badge>` | **Form:** no
280
+
281
+ #### Import
282
+
283
+ | Framework | Import |
284
+ |-----------|--------|
285
+ | React | `import { Badge } from '@colletdev/react'` |
286
+ | Vue | `import { Badge } from '@colletdev/vue'` |
287
+ | Svelte | `import Badge from '@colletdev/svelte/badge.svelte'` |
288
+ | Angular | `import { CxBadge } from '@colletdev/angular'` |
289
+
290
+ #### Props
291
+
292
+ | Prop | Type | Default | Description |
293
+ |------|------|---------|-------------|
294
+ | id | `string` | — | |
295
+ | label | `string` | — | |
296
+ | variant | `'filled' \| 'outline' \| 'ghost'` | — | |
297
+ | intent | `'neutral' \| 'primary' \| 'info' \| 'success' \| 'warning' \| 'danger'` | — | |
298
+ | shape | `'rounded' \| 'pill'` | — | |
299
+ | size | `'xs' \| 'sm' \| 'md' \| 'lg' \| 'xl'` | — | |
300
+ | dot | `boolean` | `false` | |
301
+ | dismissible | `boolean` | `false` | |
302
+ | dismissLabel | `string` | — | |
303
+ | dynamic | `boolean` | `false` | |
304
+
305
+ #### Events
306
+
307
+ | Event | React | Vue | Detail |
308
+ |-------|-------|-----|--------|
309
+ | `cx-dismiss` | `onDismiss` | `@cx-dismiss` | — |
310
+
311
+ ---
312
+
313
+ ### Breadcrumb
314
+
315
+ Navigation trail showing current location in the hierarchy.
316
+
317
+ **Tag:** `<cx-breadcrumb>` | **Form:** no
318
+
319
+ #### Import
320
+
321
+ | Framework | Import |
322
+ |-----------|--------|
323
+ | React | `import { Breadcrumb } from '@colletdev/react'` |
324
+ | Vue | `import { Breadcrumb } from '@colletdev/vue'` |
325
+ | Svelte | `import Breadcrumb from '@colletdev/svelte/breadcrumb.svelte'` |
326
+ | Angular | `import { CxBreadcrumb } from '@colletdev/angular'` |
327
+
328
+ #### Props
329
+
330
+ | Prop | Type | Default | Description |
331
+ |------|------|---------|-------------|
332
+ | id | `string` | — | |
333
+ | items | `BreadcrumbItem[] \| string` | — | |
334
+ | separator | `string` | — | |
335
+ | size | `'xs' \| 'sm' \| 'md' \| 'lg' \| 'xl'` | — | |
336
+ | navLabel | `string` | — | |
337
+ | disabled | `boolean` | `false` | |
338
+
339
+ #### Events
340
+
341
+ | Event | React | Vue | Detail |
342
+ |-------|-------|-----|--------|
343
+ | `cx-navigate` | `onNavigate` | `@cx-navigate` | `NavigateDetail` |
344
+
345
+ #### Structured Types
346
+
347
+ Import from `@colletdev/core/types`:
348
+
349
+ - `BreadcrumbItem`
350
+ - `NavigateDetail`
351
+
352
+ ---
353
+
354
+ ### Button
355
+
356
+ Interactive button with variants, intents, sizes, and icon support.
357
+
358
+ **Tag:** `<cx-button>` | **Form:** no
359
+
360
+ #### Import
361
+
362
+ | Framework | Import |
363
+ |-----------|--------|
364
+ | React | `import { Button } from '@colletdev/react'` |
365
+ | Vue | `import { Button } from '@colletdev/vue'` |
366
+ | Svelte | `import Button from '@colletdev/svelte/button.svelte'` |
367
+ | Angular | `import { CxButton } from '@colletdev/angular'` |
368
+
369
+ #### Props
370
+
371
+ | Prop | Type | Default | Description |
372
+ |------|------|---------|-------------|
373
+ | label | `string` | — | |
374
+ | variant | `'filled' \| 'ghost' \| 'outline' \| 'underline' \| 'side-indicator'` | — | |
375
+ | intent | `'neutral' \| 'primary' \| 'info' \| 'success' \| 'warning' \| 'danger'` | — | |
376
+ | shape | `'sharp' \| 'rounded' \| 'pill'` | — | |
377
+ | size | `'xs' \| 'sm' \| 'md' \| 'lg' \| 'xl'` | — | |
378
+ | disabled | `boolean` | `false` | |
379
+ | iconLeading | `string` | — | |
380
+ | iconTrailing | `string` | — | |
381
+ | iconOnly | `string` | — | |
382
+ | ariaLabel | `string` | — | |
383
+ | kind | `'button' \| 'submit' \| 'toggle' \| 'link'` | — | |
384
+ | pressed | `boolean` | `false` | |
385
+ | href | `string` | — | |
386
+
387
+ #### Events
388
+
389
+ | Event | React | Vue | Detail |
390
+ |-------|-------|-----|--------|
391
+ | `cx-click` | `onClick` | `@cx-click` | `ClickDetail` |
392
+
393
+ #### Structured Types
394
+
395
+ Import from `@colletdev/core/types`:
396
+
397
+ - `ClickDetail`
398
+
399
+ ---
400
+
401
+ ### Card
402
+
403
+ Content container with optional header, footer, and clickable behavior.
404
+
405
+ **Tag:** `<cx-card>` | **Form:** no | **Slots:** default, header, footer
406
+
407
+ #### Import
408
+
409
+ | Framework | Import |
410
+ |-----------|--------|
411
+ | React | `import { Card } from '@colletdev/react'` |
412
+ | Vue | `import { Card } from '@colletdev/vue'` |
413
+ | Svelte | `import Card from '@colletdev/svelte/card.svelte'` |
414
+ | Angular | `import { CxCard } from '@colletdev/angular'` |
415
+
416
+ #### Props
417
+
418
+ | Prop | Type | Default | Description |
419
+ |------|------|---------|-------------|
420
+ | id | `string` | — | |
421
+ | label | `string` | — | |
422
+ | variant | `'elevated' \| 'outlined' \| 'filled'` | — | |
423
+ | shape | `'rounded' \| 'sharp' \| 'soft'` | — | |
424
+ | size | `'xs' \| 'sm' \| 'md' \| 'lg' \| 'xl'` | — | |
425
+ | clickable | `boolean` | `false` | |
426
+ | texture | `boolean` | `false` | |
427
+
428
+ #### Events
429
+
430
+ | Event | React | Vue | Detail |
431
+ |-------|-------|-----|--------|
432
+ | `cx-click` | `onClick` | `@cx-click` | `ClickDetail` |
433
+ | `cx-keydown` | `onKeydown` | `@cx-keydown` | `KeyboardDetail` |
434
+ | `cx-keyup` | `onKeyup` | `@cx-keyup` | `KeyboardDetail` |
435
+
436
+ #### Structured Types
437
+
438
+ Import from `@colletdev/core/types`:
439
+
440
+ - `ClickDetail`
441
+ - `KeyboardDetail`
442
+
443
+ ---
444
+
445
+ ### Carousel
446
+
447
+ Slide-based content viewer with navigation, autoplay, and indicators.
448
+
449
+ **Tag:** `<cx-carousel>` | **Form:** no | **Ref methods:** next, prev, goTo
450
+
451
+ #### Import
452
+
453
+ | Framework | Import |
454
+ |-----------|--------|
455
+ | React | `import { Carousel } from '@colletdev/react'` |
456
+ | Vue | `import { Carousel } from '@colletdev/vue'` |
457
+ | Svelte | `import Carousel from '@colletdev/svelte/carousel.svelte'` |
458
+ | Angular | `import { CxCarousel } from '@colletdev/angular'` |
459
+
460
+ #### Props
461
+
462
+ | Prop | Type | Default | Description |
463
+ |------|------|---------|-------------|
464
+ | id | `string` | — | |
465
+ | label | `string` | — | |
466
+ | variant | `'editorial' \| 'card'` | — | |
467
+ | shape | `'sharp' \| 'rounded'` | — | |
468
+ | size | `'xs' \| 'sm' \| 'md' \| 'lg' \| 'xl'` | — | |
469
+ | slides | `CarouselSlide[] \| string` | — | |
470
+ | autoplay | `'off' \| 'on'` | — | |
471
+ | autoplayInterval | `number` | `0` | |
472
+ | loopMode | `boolean` | `false` | |
473
+ | motionBlur | `boolean` | `false` | |
474
+ | customCursor | `boolean` | `false` | |
475
+ | indicator | `string` | — | |
476
+
477
+ #### Events
478
+
479
+ | Event | React | Vue | Detail |
480
+ |-------|-------|-----|--------|
481
+ | `cx-change` | `onChange` | `@cx-change` | `CarouselDetail` |
482
+
483
+ #### Ref Methods
484
+
485
+ | Method | Description |
486
+ |--------|-------------|
487
+ | `next()` | Advances to the next slide. |
488
+ | `prev()` | Returns to the previous slide. |
489
+ | `goTo(index: number): void` | Navigates to the slide at the given index. |
490
+
491
+ #### Structured Types
492
+
493
+ Import from `@colletdev/core/types`:
494
+
495
+ - `CarouselDetail`
496
+ - `CarouselSlide`
497
+
498
+ ---
499
+
500
+ ### ChatInput
501
+
502
+ Multi-line text area optimized for chat message composition.
503
+
504
+ **Tag:** `<cx-chat-input>` | **Form:** yes | **Ref methods:** focus
505
+
506
+ #### Import
507
+
508
+ | Framework | Import |
509
+ |-----------|--------|
510
+ | React | `import { ChatInput } from '@colletdev/react'` |
511
+ | Vue | `import { ChatInput } from '@colletdev/vue'` |
512
+ | Svelte | `import ChatInput from '@colletdev/svelte/chat-input.svelte'` |
513
+ | Angular | `import { CxChatInput } from '@colletdev/angular'` |
514
+
515
+ #### Props
516
+
517
+ | Prop | Type | Default | Description |
518
+ |------|------|---------|-------------|
519
+ | id | `string` | — | |
520
+ | shape | `'sharp' \| 'rounded' \| 'pill'` | — | |
521
+ | size | `'xs' \| 'sm' \| 'md' \| 'lg' \| 'xl'` | — | |
522
+ | placeholder | `string` | — | |
523
+ | value | `string` | — | |
524
+ | disabled | `boolean` | `false` | |
525
+ | maxRows | `number` | `0` | |
526
+ | showActionButton | `boolean` | `false` | |
527
+ | actionLabel | `string` | — | |
528
+ | submitLabel | `string` | — | |
529
+ | label | `string` | — | |
530
+ | slotted | `boolean` | `false` | |
531
+
532
+ #### Events
533
+
534
+ | Event | React | Vue | Detail |
535
+ |-------|-------|-----|--------|
536
+ | `cx-focus` | `onFocus` | `@cx-focus` | `FocusDetail` |
537
+ | `cx-blur` | `onBlur` | `@cx-blur` | `FocusDetail` |
538
+ | `cx-keydown` | `onKeydown` | `@cx-keydown` | `KeyboardDetail` |
539
+ | `cx-keyup` | `onKeyup` | `@cx-keyup` | `KeyboardDetail` |
540
+
541
+ #### Ref Methods
542
+
543
+ | Method | Description |
544
+ |--------|-------------|
545
+ | `focus()` | Focuses the textarea. |
546
+
547
+ #### Structured Types
548
+
549
+ Import from `@colletdev/core/types`:
550
+
551
+ - `FocusDetail`
552
+ - `KeyboardDetail`
553
+
554
+ ---
555
+
556
+ ### Checkbox
557
+
558
+ Three-state checkbox (unchecked, checked, indeterminate) with label.
559
+
560
+ **Tag:** `<cx-checkbox>` | **Form:** yes | **Ref methods:** focus
561
+
562
+ #### Import
563
+
564
+ | Framework | Import |
565
+ |-----------|--------|
566
+ | React | `import { Checkbox } from '@colletdev/react'` |
567
+ | Vue | `import { Checkbox } from '@colletdev/vue'` |
568
+ | Svelte | `import Checkbox from '@colletdev/svelte/checkbox.svelte'` |
569
+ | Angular | `import { CxCheckbox } from '@colletdev/angular'` |
570
+
571
+ #### Props
572
+
573
+ | Prop | Type | Default | Description |
574
+ |------|------|---------|-------------|
575
+ | id | `string` | — | |
576
+ | label | `string` | — | |
577
+ | shape | `'sharp' \| 'rounded'` | — | |
578
+ | size | `'xs' \| 'sm' \| 'md' \| 'lg' \| 'xl'` | — | |
579
+ | checked | `boolean \| '' \| 'checked' \| 'indeterminate'` | — | Three-state check. Accepts true/false as aliases for 'checked'/unchecked, and keeps 'indeterminate' for the third state. |
580
+ | disabled | `boolean` | `false` | |
581
+ | required | `boolean` | `false` | |
582
+ | helperText | `string` | — | |
583
+ | error | `string` | — | |
584
+ | unlabeled | `boolean` | `false` | |
585
+
586
+ #### Events
587
+
588
+ | Event | React | Vue | Detail |
589
+ |-------|-------|-----|--------|
590
+ | `cx-input` | `onInput` | `@cx-input` | `CheckedDetail` |
591
+ | `cx-change` | `onChange` | `@cx-change` | `CheckedDetail` |
592
+ | `cx-focus` | `onFocus` | `@cx-focus` | `FocusDetail` |
593
+ | `cx-blur` | `onBlur` | `@cx-blur` | `FocusDetail` |
594
+ | `cx-keydown` | `onKeydown` | `@cx-keydown` | `KeyboardDetail` |
595
+ | `cx-keyup` | `onKeyup` | `@cx-keyup` | `KeyboardDetail` |
596
+
597
+ #### Ref Methods
598
+
599
+ | Method | Description |
600
+ |--------|-------------|
601
+ | `focus()` | Focuses the checkbox input. |
602
+
603
+ #### Structured Types
604
+
605
+ Import from `@colletdev/core/types`:
606
+
607
+ - `CheckedDetail`
608
+ - `FocusDetail`
609
+ - `KeyboardDetail`
610
+
611
+ ---
612
+
613
+ ### CodeBlock
614
+
615
+ CodeBlock component.
616
+
617
+ **Tag:** `<cx-code-block>` | **Form:** no
618
+
619
+ #### Import
620
+
621
+ | Framework | Import |
622
+ |-----------|--------|
623
+ | React | `import { CodeBlock } from '@colletdev/react'` |
624
+ | Vue | `import { CodeBlock } from '@colletdev/vue'` |
625
+ | Svelte | `import CodeBlock from '@colletdev/svelte/code-block.svelte'` |
626
+ | Angular | `import { CxCodeBlock } from '@colletdev/angular'` |
627
+
628
+ #### Props
629
+
630
+ | Prop | Type | Default | Description |
631
+ |------|------|---------|-------------|
632
+ | id | `string` | — | |
633
+ | content | `string` | — | |
634
+ | variant | `string` | — | |
635
+ | shape | `string` | — | |
636
+ | size | `'xs' \| 'sm' \| 'md' \| 'lg' \| 'xl'` | — | |
637
+ | language | `string` | — | |
638
+ | filename | `string` | — | |
639
+ | lineNumbers | `boolean` | `false` | |
640
+ | copyButton | `boolean` | `false` | |
641
+ | trafficLights | `boolean` | `false` | |
642
+ | slotted | `boolean` | `false` | |
643
+
644
+ ---
645
+
646
+ ### Collapsible
647
+
648
+ Expandable/collapsible content section with custom trigger.
649
+
650
+ **Tag:** `<cx-collapsible>` | **Form:** no | **Slots:** default, trigger | **Ref methods:** open, close, toggle
651
+
652
+ #### Import
653
+
654
+ | Framework | Import |
655
+ |-----------|--------|
656
+ | React | `import { Collapsible } from '@colletdev/react'` |
657
+ | Vue | `import { Collapsible } from '@colletdev/vue'` |
658
+ | Svelte | `import Collapsible from '@colletdev/svelte/collapsible.svelte'` |
659
+ | Angular | `import { CxCollapsible } from '@colletdev/angular'` |
660
+
661
+ #### Props
662
+
663
+ | Prop | Type | Default | Description |
664
+ |------|------|---------|-------------|
665
+ | id | `string` | — | |
666
+ | label | `string` | — | |
667
+ | triggerHtml | `string` | — | |
668
+ | open | `boolean` | `false` | |
669
+ | icon | `string` | — | |
670
+ | noIcon | `boolean` | `false` | |
671
+ | size | `'xs' \| 'sm' \| 'md' \| 'lg' \| 'xl'` | — | |
672
+ | disabled | `boolean` | `false` | |
673
+
674
+ #### Events
675
+
676
+ | Event | React | Vue | Detail |
677
+ |-------|-------|-----|--------|
678
+ | `cx-change` | `onChange` | `@cx-change` | `CollapsibleDetail` |
679
+
680
+ #### Ref Methods
681
+
682
+ | Method | Description |
683
+ |--------|-------------|
684
+ | `open()` | Expands the collapsible content. |
685
+ | `close()` | Collapses the content. |
686
+ | `toggle()` | Toggles the collapsible state. |
687
+
688
+ #### Structured Types
689
+
690
+ Import from `@colletdev/core/types`:
691
+
692
+ - `CollapsibleDetail`
693
+
694
+ ---
695
+
696
+ ### DatePicker
697
+
698
+ Calendar-based date input with keyboard navigation and locale support.
699
+
700
+ **Tag:** `<cx-date-picker>` | **Form:** yes | **Ref methods:** open, close, focus
701
+
702
+ #### Import
703
+
704
+ | Framework | Import |
705
+ |-----------|--------|
706
+ | React | `import { DatePicker } from '@colletdev/react'` |
707
+ | Vue | `import { DatePicker } from '@colletdev/vue'` |
708
+ | Svelte | `import DatePicker from '@colletdev/svelte/date-picker.svelte'` |
709
+ | Angular | `import { CxDatePicker } from '@colletdev/angular'` |
710
+
711
+ #### Props
712
+
713
+ | Prop | Type | Default | Description |
714
+ |------|------|---------|-------------|
715
+ | id | `string` | — | |
716
+ | label | `string` | — | **Required.** |
717
+ | variant | `'outline' \| 'filled' \| 'ghost'` | — | |
718
+ | shape | `'sharp' \| 'rounded'` | — | |
719
+ | size | `'xs' \| 'sm' \| 'md' \| 'lg' \| 'xl'` | — | |
720
+ | selected | `string` | — | |
721
+ | min | `string` | — | |
722
+ | max | `string` | — | |
723
+ | disabledDates | `string[] \| string` | — | |
724
+ | format | `'iso' \| 'us-short' \| 'eu-short' \| 'eu-dot'` | — | |
725
+ | firstDay | `'monday' \| 'sunday'` | — | |
726
+ | placeholder | `string` | — | |
727
+ | helperText | `string` | — | |
728
+ | error | `string` | — | |
729
+ | disabled | `boolean` | `false` | |
730
+ | required | `boolean` | `false` | |
731
+ | readonly | `boolean` | `false` | |
732
+ | name | `string` | — | |
733
+ | onChange | `string` | — | |
734
+
735
+ #### Events
736
+
737
+ | Event | React | Vue | Detail |
738
+ |-------|-------|-----|--------|
739
+ | `cx-input` | `onInput` | `@cx-input` | `InputDetail` |
740
+ | `cx-change` | `onChange` | `@cx-change` | `InputDetail` |
741
+ | `cx-focus` | `onFocus` | `@cx-focus` | `FocusDetail` |
742
+ | `cx-blur` | `onBlur` | `@cx-blur` | `FocusDetail` |
743
+ | `cx-keydown` | `onKeydown` | `@cx-keydown` | `KeyboardDetail` |
744
+ | `cx-keyup` | `onKeyup` | `@cx-keyup` | `KeyboardDetail` |
745
+
746
+ #### Ref Methods
747
+
748
+ | Method | Description |
749
+ |--------|-------------|
750
+ | `open()` | Opens the calendar panel. |
751
+ | `close()` | Closes the calendar panel. |
752
+ | `focus()` | Focuses the trigger button. |
753
+
754
+ #### Structured Types
755
+
756
+ Import from `@colletdev/core/types`:
757
+
758
+ - `FocusDetail`
759
+ - `InputDetail`
760
+ - `KeyboardDetail`
761
+
762
+ ---
763
+
764
+ ### Dialog
765
+
766
+ Modal dialog with backdrop, entrance/exit animation, and focus trap.
767
+
768
+ **Tag:** `<cx-dialog>` | **Form:** no | **Slots:** default, footer | **Ref methods:** open, close
769
+
770
+ #### Import
771
+
772
+ | Framework | Import |
773
+ |-----------|--------|
774
+ | React | `import { Dialog } from '@colletdev/react'` |
775
+ | Vue | `import { Dialog } from '@colletdev/vue'` |
776
+ | Svelte | `import Dialog from '@colletdev/svelte/dialog.svelte'` |
777
+ | Angular | `import { CxDialog } from '@colletdev/angular'` |
778
+
779
+ #### Props
780
+
781
+ | Prop | Type | Default | Description |
782
+ |------|------|---------|-------------|
783
+ | id | `string` | — | |
784
+ | title | `string` | — | |
785
+ | variant | `'standard' \| 'alert'` | — | |
786
+ | description | `string` | — | |
787
+ | size | `'sm' \| 'md' \| 'lg' \| 'xl' \| 'full'` | — | |
788
+ | closeButton | `string` | — | |
789
+ | drawer | `string` | — | |
790
+
791
+ #### Events
792
+
793
+ | Event | React | Vue | Detail |
794
+ |-------|-------|-----|--------|
795
+ | `cx-close` | `onClose` | `@cx-close` | `CloseDetail` |
796
+
797
+ #### Ref Methods
798
+
799
+ | Method | Description |
800
+ |--------|-------------|
801
+ | `open()` | Opens the dialog modal with entrance animation. |
802
+ | `close()` | Closes the dialog modal with exit animation. |
803
+
804
+ #### Structured Types
805
+
806
+ Import from `@colletdev/core/types`:
807
+
808
+ - `CloseDetail`
809
+
810
+ ---
811
+
812
+ ### Drawer
813
+
814
+ Slide-in panel anchored to a screen edge with backdrop.
815
+
816
+ **Tag:** `<cx-drawer>` | **Form:** no | **Slots:** default, footer | **Ref methods:** open, close
817
+
818
+ #### Import
819
+
820
+ | Framework | Import |
821
+ |-----------|--------|
822
+ | React | `import { Drawer } from '@colletdev/react'` |
823
+ | Vue | `import { Drawer } from '@colletdev/vue'` |
824
+ | Svelte | `import Drawer from '@colletdev/svelte/drawer.svelte'` |
825
+ | Angular | `import { CxDrawer } from '@colletdev/angular'` |
826
+
827
+ #### Props
828
+
829
+ | Prop | Type | Default | Description |
830
+ |------|------|---------|-------------|
831
+ | id | `string` | — | |
832
+ | title | `string` | — | |
833
+ | description | `string` | — | |
834
+ | side | `'left' \| 'right' \| 'top' \| 'bottom'` | — | |
835
+ | size | `'sm' \| 'md' \| 'lg' \| 'xl' \| 'full'` | — | |
836
+ | shape | `'sharp' \| 'rounded' \| 'pill'` | — | |
837
+ | closeButton | `string` | — | |
838
+
839
+ #### Events
840
+
841
+ | Event | React | Vue | Detail |
842
+ |-------|-------|-----|--------|
843
+ | `cx-close` | `onClose` | `@cx-close` | `CloseDetail` |
844
+
845
+ #### Ref Methods
846
+
847
+ | Method | Description |
848
+ |--------|-------------|
849
+ | `open()` | Opens the drawer panel with slide-in animation. |
850
+ | `close()` | Closes the drawer panel with slide-out animation. |
851
+
852
+ #### Structured Types
853
+
854
+ Import from `@colletdev/core/types`:
855
+
856
+ - `CloseDetail`
857
+
858
+ ---
859
+
860
+ ### Fab
861
+
862
+ Floating action button, mobile-first, with optional speed-dial trigger.
863
+
864
+ **Tag:** `<cx-fab>` | **Form:** no
865
+
866
+ #### Import
867
+
868
+ | Framework | Import |
869
+ |-----------|--------|
870
+ | React | `import { Fab } from '@colletdev/react'` |
871
+ | Vue | `import { Fab } from '@colletdev/vue'` |
872
+ | Svelte | `import Fab from '@colletdev/svelte/fab.svelte'` |
873
+ | Angular | `import { CxFab } from '@colletdev/angular'` |
874
+
875
+ #### Props
876
+
877
+ | Prop | Type | Default | Description |
878
+ |------|------|---------|-------------|
879
+ | icon | `string` | — | |
880
+ | label | `string` | — | |
881
+ | ariaLabel | `string` | — | |
882
+ | variant | `'filled' \| 'outline' \| 'ghost'` | — | |
883
+ | intent | `'neutral' \| 'primary' \| 'info' \| 'success' \| 'warning' \| 'danger'` | — | |
884
+ | shape | `'rounded' \| 'pill'` | — | |
885
+ | size | `'sm' \| 'md' \| 'lg'` | — | |
886
+ | disabled | `boolean` | `false` | |
887
+ | hasPopup | `boolean` | `false` | |
888
+ | expanded | `boolean` | `false` | |
889
+ | controls | `string` | — | |
890
+
891
+ #### Events
892
+
893
+ | Event | React | Vue | Detail |
894
+ |-------|-------|-----|--------|
895
+ | `cx-click` | `onClick` | `@cx-click` | `ClickDetail` |
896
+
897
+ #### Structured Types
898
+
899
+ Import from `@colletdev/core/types`:
900
+
901
+ - `ClickDetail`
902
+
903
+ ---
904
+
905
+ ### FileUpload
906
+
907
+ File selection with drag-and-drop zone, preview, and validation.
908
+
909
+ **Tag:** `<cx-file-upload>` | **Form:** no
910
+
911
+ #### Import
912
+
913
+ | Framework | Import |
914
+ |-----------|--------|
915
+ | React | `import { FileUpload } from '@colletdev/react'` |
916
+ | Vue | `import { FileUpload } from '@colletdev/vue'` |
917
+ | Svelte | `import FileUpload from '@colletdev/svelte/file-upload.svelte'` |
918
+ | Angular | `import { CxFileUpload } from '@colletdev/angular'` |
919
+
920
+ #### Props
921
+
922
+ | Prop | Type | Default | Description |
923
+ |------|------|---------|-------------|
924
+ | id | `string` | — | |
925
+ | label | `string` | — | |
926
+ | mode | `'inline' \| 'overlay'` | — | |
927
+ | variant | `'outline' \| 'filled' \| 'subtle'` | — | |
928
+ | shape | `'sharp' \| 'rounded' \| 'pill'` | — | |
929
+ | size | `'xs' \| 'sm' \| 'md' \| 'lg' \| 'xl'` | — | |
930
+ | disabled | `boolean` | `false` | |
931
+ | multiple | `boolean` | `false` | |
932
+ | accept | `string` | — | |
933
+ | maxSize | `number` | `0` | |
934
+ | heading | `string` | — | |
935
+ | browseText | `string` | — | |
936
+ | hint | `string` | — | |
937
+ | capture | `string` | — | |
938
+ | preview | `boolean` | `false` | |
939
+
940
+ #### Events
941
+
942
+ | Event | React | Vue | Detail |
943
+ |-------|-------|-----|--------|
944
+ | `cx-change` | `onChange` | `@cx-change` | — |
945
+
946
+ ---
947
+
948
+ ### Listbox
949
+
950
+ Keyboard-navigable list of selectable options (single or multi).
951
+
952
+ **Tag:** `<cx-listbox>` | **Form:** no
953
+
954
+ #### Import
955
+
956
+ | Framework | Import |
957
+ |-----------|--------|
958
+ | React | `import { Listbox } from '@colletdev/react'` |
959
+ | Vue | `import { Listbox } from '@colletdev/vue'` |
960
+ | Svelte | `import Listbox from '@colletdev/svelte/listbox.svelte'` |
961
+ | Angular | `import { CxListbox } from '@colletdev/angular'` |
962
+
963
+ #### Props
964
+
965
+ | Prop | Type | Default | Description |
966
+ |------|------|---------|-------------|
967
+ | id | `string` | — | |
968
+ | label | `string` | — | |
969
+ | shape | `'sharp' \| 'rounded' \| 'pill'` | — | |
970
+ | size | `'xs' \| 'sm' \| 'md' \| 'lg' \| 'xl'` | — | |
971
+ | selectionMode | `string` | — | |
972
+ | selected | `string[] \| string` | — | |
973
+ | items | `SelectOption[] \| string` | — | |
974
+ | groups | `OptionGroup[] \| string` | — | |
975
+
976
+ #### Events
977
+
978
+ | Event | React | Vue | Detail |
979
+ |-------|-------|-----|--------|
980
+ | `cx-focus` | `onFocus` | `@cx-focus` | `FocusDetail` |
981
+ | `cx-blur` | `onBlur` | `@cx-blur` | `FocusDetail` |
982
+ | `cx-keydown` | `onKeydown` | `@cx-keydown` | `KeyboardDetail` |
983
+ | `cx-keyup` | `onKeyup` | `@cx-keyup` | `KeyboardDetail` |
984
+
985
+ #### Structured Types
986
+
987
+ Import from `@colletdev/core/types`:
988
+
989
+ - `FocusDetail`
990
+ - `KeyboardDetail`
991
+ - `OptionGroup`
992
+ - `SelectOption`
993
+
994
+ ---
995
+
996
+ ### Menu
997
+
998
+ Dropdown menu with items, checkboxes, radio groups, and keyboard navigation.
999
+
1000
+ **Tag:** `<cx-menu>` | **Form:** no | **Ref methods:** open, close
1001
+
1002
+ #### Import
1003
+
1004
+ | Framework | Import |
1005
+ |-----------|--------|
1006
+ | React | `import { Menu } from '@colletdev/react'` |
1007
+ | Vue | `import { Menu } from '@colletdev/vue'` |
1008
+ | Svelte | `import Menu from '@colletdev/svelte/menu.svelte'` |
1009
+ | Angular | `import { CxMenu } from '@colletdev/angular'` |
1010
+
1011
+ #### Props
1012
+
1013
+ | Prop | Type | Default | Description |
1014
+ |------|------|---------|-------------|
1015
+ | id | `string` | — | |
1016
+ | triggerLabel | `string` | — | **Required.** |
1017
+ | entries | `MenuEntry[] \| string` | — | |
1018
+ | variant | `'filled' \| 'outline' \| 'ghost'` | — | |
1019
+ | shape | `'sharp' \| 'rounded' \| 'pill'` | — | |
1020
+ | width | `'auto' \| 'sm' \| 'md' \| 'lg'` | — | |
1021
+ | size | `'xs' \| 'sm' \| 'md' \| 'lg' \| 'xl'` | — | |
1022
+ | icon | `string` | — | |
1023
+ | disabled | `boolean` | `false` | |
1024
+
1025
+ #### Events
1026
+
1027
+ | Event | React | Vue | Detail |
1028
+ |-------|-------|-----|--------|
1029
+ | `cx-action` | `onAction` | `@cx-action` | `MenuActionDetail` |
1030
+ | `cx-change` | `onChange` | `@cx-change` | `MenuChangeDetail` |
1031
+ | `cx-keydown` | `onKeydown` | `@cx-keydown` | `KeyboardDetail` |
1032
+ | `cx-keyup` | `onKeyup` | `@cx-keyup` | `KeyboardDetail` |
1033
+
1034
+ #### Ref Methods
1035
+
1036
+ | Method | Description |
1037
+ |--------|-------------|
1038
+ | `open()` | Opens the menu dropdown. |
1039
+ | `close()` | Closes the menu dropdown. |
1040
+
1041
+ #### Structured Types
1042
+
1043
+ Import from `@colletdev/core/types`:
1044
+
1045
+ - `KeyboardDetail`
1046
+ - `MenuActionDetail`
1047
+ - `MenuChangeDetail`
1048
+ - `MenuEntry`
1049
+
1050
+ ---
1051
+
1052
+ ### MessageBubble
1053
+
1054
+ Chat message container with sender alignment and avatar.
1055
+
1056
+ **Tag:** `<cx-message-bubble>` | **Form:** no | **Slots:** default
1057
+
1058
+ #### Import
1059
+
1060
+ | Framework | Import |
1061
+ |-----------|--------|
1062
+ | React | `import { MessageBubble } from '@colletdev/react'` |
1063
+ | Vue | `import { MessageBubble } from '@colletdev/vue'` |
1064
+ | Svelte | `import MessageBubble from '@colletdev/svelte/message-bubble.svelte'` |
1065
+ | Angular | `import { CxMessageBubble } from '@colletdev/angular'` |
1066
+
1067
+ #### Props
1068
+
1069
+ | Prop | Type | Default | Description |
1070
+ |------|------|---------|-------------|
1071
+ | id | `string` | — | |
1072
+ | role | `'user' \| 'assistant'` | — | |
1073
+ | variant | `'filled' \| 'ghost'` | — | |
1074
+ | shape | `'sharp' \| 'rounded'` | — | |
1075
+ | alignment | `'auto' \| 'start' \| 'end'` | — | |
1076
+ | size | `'xs' \| 'sm' \| 'md' \| 'lg' \| 'xl'` | — | |
1077
+ | htmlContent | `string` | — | |
1078
+ | senderName | `string` | — | |
1079
+ | timestamp | `string` | — | |
1080
+ | border | `string` | — | |
1081
+ | animated | `boolean` | `false` | |
1082
+
1083
+ ---
1084
+
1085
+ ### MessageGroup
1086
+
1087
+ Grouped sequence of message parts (text, code, tool calls, thinking).
1088
+
1089
+ **Tag:** `<cx-message-group>` | **Form:** no
1090
+
1091
+ #### Import
1092
+
1093
+ | Framework | Import |
1094
+ |-----------|--------|
1095
+ | React | `import { MessageGroup } from '@colletdev/react'` |
1096
+ | Vue | `import { MessageGroup } from '@colletdev/vue'` |
1097
+ | Svelte | `import MessageGroup from '@colletdev/svelte/message-group.svelte'` |
1098
+ | Angular | `import { CxMessageGroup } from '@colletdev/angular'` |
1099
+
1100
+ #### Props
1101
+
1102
+ | Prop | Type | Default | Description |
1103
+ |------|------|---------|-------------|
1104
+ | id | `string` | — | |
1105
+ | role | `'user' \| 'assistant'` | — | |
1106
+ | alignment | `'auto' \| 'start' \| 'end'` | — | |
1107
+ | size | `'xs' \| 'sm' \| 'md' \| 'lg' \| 'xl'` | — | |
1108
+ | senderName | `string` | — | |
1109
+ | animated | `boolean` | `false` | |
1110
+ | parts | `MessageGroupPart[] \| string` | — | |
1111
+
1112
+ #### Structured Types
1113
+
1114
+ Import from `@colletdev/core/types`:
1115
+
1116
+ - `MessageGroupPart`
1117
+
1118
+ ---
1119
+
1120
+ ### MessagePart
1121
+
1122
+ Individual message segment with streaming markdown support.
1123
+
1124
+ **Tag:** `<cx-message-part>` | **Form:** no
1125
+
1126
+ #### Import
1127
+
1128
+ | Framework | Import |
1129
+ |-----------|--------|
1130
+ | React | `import { MessagePart } from '@colletdev/react'` |
1131
+ | Vue | `import { MessagePart } from '@colletdev/vue'` |
1132
+ | Svelte | `import MessagePart from '@colletdev/svelte/message-part.svelte'` |
1133
+ | Angular | `import { CxMessagePart } from '@colletdev/angular'` |
1134
+
1135
+ ---
1136
+
1137
+ ### Pagination
1138
+
1139
+ Page navigation controls with page size selector.
1140
+
1141
+ **Tag:** `<cx-pagination>` | **Form:** no
1142
+
1143
+ #### Import
1144
+
1145
+ | Framework | Import |
1146
+ |-----------|--------|
1147
+ | React | `import { Pagination } from '@colletdev/react'` |
1148
+ | Vue | `import { Pagination } from '@colletdev/vue'` |
1149
+ | Svelte | `import Pagination from '@colletdev/svelte/pagination.svelte'` |
1150
+ | Angular | `import { CxPagination } from '@colletdev/angular'` |
1151
+
1152
+ #### Props
1153
+
1154
+ | Prop | Type | Default | Description |
1155
+ |------|------|---------|-------------|
1156
+ | id | `string` | — | |
1157
+ | currentPage | `number` | — | **Required.** |
1158
+ | pageSize | `number` | — | **Required.** |
1159
+ | totalItems | `number` | — | **Required.** |
1160
+ | label | `string` | — | |
1161
+ | size | `'xs' \| 'sm' \| 'md' \| 'lg' \| 'xl'` | — | |
1162
+ | showInfo | `boolean` | `false` | |
1163
+ | showPrevNext | `boolean` | `false` | |
1164
+ | variant | `string` | — | |
1165
+ | prevLabel | `string` | — | |
1166
+ | nextLabel | `string` | — | |
1167
+ | loadMoreLabel | `string` | — | |
1168
+ | pageSizeOptions | `string` | — | |
1169
+
1170
+ ---
1171
+
1172
+ ### Popover
1173
+
1174
+ Floating panel anchored to a trigger element.
1175
+
1176
+ **Tag:** `<cx-popover>` | **Form:** no | **Slots:** default | **Ref methods:** open, close
1177
+
1178
+ #### Import
1179
+
1180
+ | Framework | Import |
1181
+ |-----------|--------|
1182
+ | React | `import { Popover } from '@colletdev/react'` |
1183
+ | Vue | `import { Popover } from '@colletdev/vue'` |
1184
+ | Svelte | `import Popover from '@colletdev/svelte/popover.svelte'` |
1185
+ | Angular | `import { CxPopover } from '@colletdev/angular'` |
1186
+
1187
+ #### Props
1188
+
1189
+ | Prop | Type | Default | Description |
1190
+ |------|------|---------|-------------|
1191
+ | id | `string` | — | |
1192
+ | triggerLabel | `string` | — | **Required.** |
1193
+ | title | `string` | — | |
1194
+ | description | `string` | — | |
1195
+ | width | `'sm' \| 'md' \| 'lg' \| 'xl' \| 'auto'` | — | |
1196
+ | placement | `'top' \| 'bottom'` | — | |
1197
+ | align | `'start' \| 'center' \| 'end'` | — | |
1198
+ | arrow | `boolean` | `false` | |
1199
+ | closeButton | `boolean` | `false` | |
1200
+ | variant | `'outline' \| 'filled' \| 'ghost'` | — | |
1201
+ | shape | `'sharp' \| 'rounded' \| 'pill'` | — | |
1202
+ | size | `'xs' \| 'sm' \| 'md' \| 'lg' \| 'xl'` | — | |
1203
+ | icon | `string` | — | |
1204
+ | disabled | `boolean` | `false` | |
1205
+
1206
+ #### Ref Methods
1207
+
1208
+ | Method | Description |
1209
+ |--------|-------------|
1210
+ | `open()` | Opens the popover panel. |
1211
+ | `close()` | Closes the popover panel. |
1212
+
1213
+ ---
1214
+
1215
+ ### ProfileMenu
1216
+
1217
+ Avatar-triggered dropdown menu for user account actions.
1218
+
1219
+ **Tag:** `<cx-profile-menu>` | **Form:** no | **Ref methods:** open, close
1220
+
1221
+ #### Import
1222
+
1223
+ | Framework | Import |
1224
+ |-----------|--------|
1225
+ | React | `import { ProfileMenu } from '@colletdev/react'` |
1226
+ | Vue | `import { ProfileMenu } from '@colletdev/vue'` |
1227
+ | Svelte | `import ProfileMenu from '@colletdev/svelte/profile-menu.svelte'` |
1228
+ | Angular | `import { CxProfileMenu } from '@colletdev/angular'` |
1229
+
1230
+ #### Props
1231
+
1232
+ | Prop | Type | Default | Description |
1233
+ |------|------|---------|-------------|
1234
+ | id | `string` | — | |
1235
+ | label | `string` | — | **Required.** |
1236
+ | image | `string` | — | |
1237
+ | initials | `string` | — | |
1238
+ | shape | `'circle' \| 'rounded'` | — | |
1239
+ | size | `'xs' \| 'sm' \| 'md' \| 'lg' \| 'xl'` | — | |
1240
+ | width | `'auto' \| 'sm' \| 'md' \| 'lg'` | — | |
1241
+ | entries | `MenuEntry[] \| string` | — | |
1242
+ | disabled | `boolean` | `false` | |
1243
+
1244
+ #### Events
1245
+
1246
+ | Event | React | Vue | Detail |
1247
+ |-------|-------|-----|--------|
1248
+ | `cx-action` | `onAction` | `@cx-action` | `MenuActionDetail` |
1249
+
1250
+ #### Ref Methods
1251
+
1252
+ | Method | Description |
1253
+ |--------|-------------|
1254
+ | `open()` | Opens the profile menu dropdown. |
1255
+ | `close()` | Closes the profile menu dropdown. |
1256
+
1257
+ #### Structured Types
1258
+
1259
+ Import from `@colletdev/core/types`:
1260
+
1261
+ - `MenuActionDetail`
1262
+ - `MenuEntry`
1263
+
1264
+ ---
1265
+
1266
+ ### Progress
1267
+
1268
+ Determinate progress bar with percentage label.
1269
+
1270
+ **Tag:** `<cx-progress>` | **Form:** no
1271
+
1272
+ #### Import
1273
+
1274
+ | Framework | Import |
1275
+ |-----------|--------|
1276
+ | React | `import { Progress } from '@colletdev/react'` |
1277
+ | Vue | `import { Progress } from '@colletdev/vue'` |
1278
+ | Svelte | `import Progress from '@colletdev/svelte/progress.svelte'` |
1279
+ | Angular | `import { CxProgress } from '@colletdev/angular'` |
1280
+
1281
+ #### Props
1282
+
1283
+ | Prop | Type | Default | Description |
1284
+ |------|------|---------|-------------|
1285
+ | id | `string` | — | |
1286
+ | label | `string` | — | |
1287
+ | value | `number` | `0` | Percentage 0–100. No max prop — the component assumes max=100. |
1288
+ | valueText | `string` | — | |
1289
+ | intent | `'neutral' \| 'primary' \| 'info' \| 'success' \| 'warning' \| 'danger'` | — | |
1290
+ | shape | `'rounded' \| 'sharp' \| 'pill'` | — | |
1291
+ | size | `'xs' \| 'sm' \| 'md' \| 'lg' \| 'xl'` | — | |
1292
+
1293
+ ---
1294
+
1295
+ ### RadioGroup
1296
+
1297
+ Mutually exclusive option set with keyboard arrow-key navigation.
1298
+
1299
+ **Tag:** `<cx-radio-group>` | **Form:** yes
1300
+
1301
+ #### Import
1302
+
1303
+ | Framework | Import |
1304
+ |-----------|--------|
1305
+ | React | `import { RadioGroup } from '@colletdev/react'` |
1306
+ | Vue | `import { RadioGroup } from '@colletdev/vue'` |
1307
+ | Svelte | `import RadioGroup from '@colletdev/svelte/radio-group.svelte'` |
1308
+ | Angular | `import { CxRadioGroup } from '@colletdev/angular'` |
1309
+
1310
+ #### Props
1311
+
1312
+ | Prop | Type | Default | Description |
1313
+ |------|------|---------|-------------|
1314
+ | name | `string` | — | |
1315
+ | legend | `string` | — | **Required.** |
1316
+ | options | `RadioOption[] \| string` | — | |
1317
+ | shape | `'round' \| 'rounded'` | — | |
1318
+ | orientation | `'vertical' \| 'horizontal'` | — | |
1319
+ | size | `'xs' \| 'sm' \| 'md' \| 'lg' \| 'xl'` | — | |
1320
+ | selected | `string` | — | |
1321
+ | disabled | `boolean` | `false` | |
1322
+ | required | `boolean` | `false` | |
1323
+ | helperText | `string` | — | |
1324
+ | error | `string` | — | |
1325
+
1326
+ #### Events
1327
+
1328
+ | Event | React | Vue | Detail |
1329
+ |-------|-------|-----|--------|
1330
+ | `cx-input` | `onInput` | `@cx-input` | — |
1331
+ | `cx-change` | `onChange` | `@cx-change` | `SelectDetail` |
1332
+ | `cx-focus` | `onFocus` | `@cx-focus` | `FocusDetail` |
1333
+ | `cx-blur` | `onBlur` | `@cx-blur` | `FocusDetail` |
1334
+ | `cx-keydown` | `onKeydown` | `@cx-keydown` | `KeyboardDetail` |
1335
+ | `cx-keyup` | `onKeyup` | `@cx-keyup` | `KeyboardDetail` |
1336
+
1337
+ #### Structured Types
1338
+
1339
+ Import from `@colletdev/core/types`:
1340
+
1341
+ - `FocusDetail`
1342
+ - `KeyboardDetail`
1343
+ - `RadioOption`
1344
+ - `SelectDetail`
1345
+
1346
+ ---
1347
+
1348
+ ### Scrollbar
1349
+
1350
+ Custom-styled scrollbar container for overflow content.
1351
+
1352
+ **Tag:** `<cx-scrollbar>` | **Form:** no | **Slots:** default
1353
+
1354
+ #### Import
1355
+
1356
+ | Framework | Import |
1357
+ |-----------|--------|
1358
+ | React | `import { Scrollbar } from '@colletdev/react'` |
1359
+ | Vue | `import { Scrollbar } from '@colletdev/vue'` |
1360
+ | Svelte | `import Scrollbar from '@colletdev/svelte/scrollbar.svelte'` |
1361
+ | Angular | `import { CxScrollbar } from '@colletdev/angular'` |
1362
+
1363
+ #### Props
1364
+
1365
+ | Prop | Type | Default | Description |
1366
+ |------|------|---------|-------------|
1367
+ | id | `string` | — | |
1368
+ | shape | `'sharp' \| 'rounded' \| 'pill'` | — | |
1369
+ | track | `'with-track' \| 'floating'` | — | |
1370
+ | axis | `'vertical' \| 'horizontal' \| 'both'` | — | |
1371
+ | size | `'xs' \| 'sm' \| 'md' \| 'lg' \| 'xl'` | — | |
1372
+ | height | `string` | — | |
1373
+ | label | `string` | — | |
1374
+
1375
+ ---
1376
+
1377
+ ### SearchBar
1378
+
1379
+ Search input with clear button, shimmer animation, and icon.
1380
+
1381
+ **Tag:** `<cx-search-bar>` | **Form:** yes | **Ref methods:** focus, clear
1382
+
1383
+ #### Import
1384
+
1385
+ | Framework | Import |
1386
+ |-----------|--------|
1387
+ | React | `import { SearchBar } from '@colletdev/react'` |
1388
+ | Vue | `import { SearchBar } from '@colletdev/vue'` |
1389
+ | Svelte | `import SearchBar from '@colletdev/svelte/search-bar.svelte'` |
1390
+ | Angular | `import { CxSearchBar } from '@colletdev/angular'` |
1391
+
1392
+ #### Props
1393
+
1394
+ | Prop | Type | Default | Description |
1395
+ |------|------|---------|-------------|
1396
+ | id | `string` | — | |
1397
+ | placeholder | `string` | — | |
1398
+ | label | `string` | — | |
1399
+ | variant | `'outline' \| 'filled' \| 'ghost'` | — | |
1400
+ | shape | `'sharp' \| 'rounded' \| 'pill'` | — | |
1401
+ | size | `'xs' \| 'sm' \| 'md' \| 'lg' \| 'xl'` | — | |
1402
+ | name | `string` | — | |
1403
+ | value | `string` | — | |
1404
+ | debounceMs | `number` | `0` | |
1405
+ | loading | `boolean` | `false` | |
1406
+ | shortcut | `string` | — | |
1407
+ | expandable | `boolean` | `false` | |
1408
+ | disabled | `boolean` | `false` | |
1409
+ | readonly | `boolean` | `false` | |
1410
+ | controls | `string` | — | |
1411
+ | shimmer | `boolean` | `false` | |
1412
+
1413
+ #### Events
1414
+
1415
+ | Event | React | Vue | Detail |
1416
+ |-------|-------|-----|--------|
1417
+ | `cx-focus` | `onFocus` | `@cx-focus` | `FocusDetail` |
1418
+ | `cx-blur` | `onBlur` | `@cx-blur` | `FocusDetail` |
1419
+ | `cx-keydown` | `onKeydown` | `@cx-keydown` | `KeyboardDetail` |
1420
+ | `cx-keyup` | `onKeyup` | `@cx-keyup` | `KeyboardDetail` |
1421
+
1422
+ #### Ref Methods
1423
+
1424
+ | Method | Description |
1425
+ |--------|-------------|
1426
+ | `focus()` | Focuses the search input. |
1427
+ | `clear()` | Clears the search input value. |
1428
+
1429
+ #### Structured Types
1430
+
1431
+ Import from `@colletdev/core/types`:
1432
+
1433
+ - `FocusDetail`
1434
+ - `KeyboardDetail`
1435
+
1436
+ ---
1437
+
1438
+ ### Select
1439
+
1440
+ Dropdown select with single or multi-select, groups, and search.
1441
+
1442
+ **Tag:** `<cx-select>` | **Form:** yes | **Ref methods:** open, close, focus
1443
+
1444
+ #### Import
1445
+
1446
+ | Framework | Import |
1447
+ |-----------|--------|
1448
+ | React | `import { Select } from '@colletdev/react'` |
1449
+ | Vue | `import { Select } from '@colletdev/vue'` |
1450
+ | Svelte | `import Select from '@colletdev/svelte/select.svelte'` |
1451
+ | Angular | `import { CxSelect } from '@colletdev/angular'` |
1452
+
1453
+ #### Props
1454
+
1455
+ | Prop | Type | Default | Description |
1456
+ |------|------|---------|-------------|
1457
+ | id | `string` | — | |
1458
+ | label | `string` | — | |
1459
+ | variant | `'outline' \| 'filled' \| 'ghost'` | — | |
1460
+ | shape | `'sharp' \| 'rounded' \| 'pill'` | — | |
1461
+ | size | `'xs' \| 'sm' \| 'md' \| 'lg' \| 'xl'` | — | |
1462
+ | mode | `'single' \| 'multiple'` | — | |
1463
+ | selected | `string[] \| string` | — | |
1464
+ | placeholder | `string` | — | |
1465
+ | helperText | `string` | — | |
1466
+ | error | `string` | — | |
1467
+ | disabled | `boolean` | `false` | |
1468
+ | required | `boolean` | `false` | |
1469
+ | name | `string` | — | |
1470
+ | items | `SelectOption[] \| string` | — | |
1471
+ | groups | `OptionGroup[] \| string` | — | |
1472
+
1473
+ #### Events
1474
+
1475
+ | Event | React | Vue | Detail |
1476
+ |-------|-------|-----|--------|
1477
+ | `cx-input` | `onInput` | `@cx-input` | `InputDetail` |
1478
+ | `cx-change` | `onChange` | `@cx-change` | `SelectDetail` |
1479
+ | `cx-focus` | `onFocus` | `@cx-focus` | `FocusDetail` |
1480
+ | `cx-blur` | `onBlur` | `@cx-blur` | `FocusDetail` |
1481
+ | `cx-keydown` | `onKeydown` | `@cx-keydown` | `KeyboardDetail` |
1482
+ | `cx-keyup` | `onKeyup` | `@cx-keyup` | `KeyboardDetail` |
1483
+
1484
+ #### Ref Methods
1485
+
1486
+ | Method | Description |
1487
+ |--------|-------------|
1488
+ | `open()` | Opens the dropdown. |
1489
+ | `close()` | Closes the dropdown. |
1490
+ | `focus()` | Focuses the trigger button. |
1491
+
1492
+ #### Structured Types
1493
+
1494
+ Import from `@colletdev/core/types`:
1495
+
1496
+ - `FocusDetail`
1497
+ - `InputDetail`
1498
+ - `KeyboardDetail`
1499
+ - `OptionGroup`
1500
+ - `SelectDetail`
1501
+ - `SelectOption`
1502
+
1503
+ ---
1504
+
1505
+ ### Sidebar
1506
+
1507
+ Navigation sidebar with grouped links and collapsible mobile drawer.
1508
+
1509
+ **Tag:** `<cx-sidebar>` | **Form:** no | **Slots:** header, footer | **Ref methods:** open, close
1510
+
1511
+ #### Import
1512
+
1513
+ | Framework | Import |
1514
+ |-----------|--------|
1515
+ | React | `import { Sidebar } from '@colletdev/react'` |
1516
+ | Vue | `import { Sidebar } from '@colletdev/vue'` |
1517
+ | Svelte | `import Sidebar from '@colletdev/svelte/sidebar.svelte'` |
1518
+ | Angular | `import { CxSidebar } from '@colletdev/angular'` |
1519
+
1520
+ #### Props
1521
+
1522
+ | Prop | Type | Default | Description |
1523
+ |------|------|---------|-------------|
1524
+ | id | `string` | — | |
1525
+ | label | `string` | — | |
1526
+ | groups | `SidebarGroup[] \| string` | — | |
1527
+ | separatorsAfter | `string` | — | |
1528
+ | side | `'left' \| 'right'` | — | |
1529
+ | state | `'expanded' \| 'narrow' \| 'hidden'` | — | |
1530
+ | shape | `'sharp' \| 'rounded' \| 'pill'` | — | |
1531
+ | size | `'xs' \| 'sm' \| 'md' \| 'lg' \| 'xl'` | — | |
1532
+
1533
+ #### Events
1534
+
1535
+ | Event | React | Vue | Detail |
1536
+ |-------|-------|-----|--------|
1537
+ | `cx-close` | `onClose` | `@cx-close` | `CloseDetail` |
1538
+ | `cx-navigate` | `onNavigate` | `@cx-navigate` | `NavigateDetail` |
1539
+
1540
+ #### Ref Methods
1541
+
1542
+ | Method | Description |
1543
+ |--------|-------------|
1544
+ | `open()` | Opens the mobile sidebar drawer. |
1545
+ | `close()` | Closes the mobile sidebar drawer. |
1546
+
1547
+ #### Structured Types
1548
+
1549
+ Import from `@colletdev/core/types`:
1550
+
1551
+ - `CloseDetail`
1552
+ - `NavigateDetail`
1553
+ - `SidebarGroup`
1554
+
1555
+ ---
1556
+
1557
+ ### Skeleton
1558
+
1559
+ Placeholder loading shape (text, circle, rectangle) with pulse animation.
1560
+
1561
+ **Tag:** `<cx-skeleton>` | **Form:** no
1562
+
1563
+ #### Import
1564
+
1565
+ | Framework | Import |
1566
+ |-----------|--------|
1567
+ | React | `import { Skeleton } from '@colletdev/react'` |
1568
+ | Vue | `import { Skeleton } from '@colletdev/vue'` |
1569
+ | Svelte | `import Skeleton from '@colletdev/svelte/skeleton.svelte'` |
1570
+ | Angular | `import { CxSkeleton } from '@colletdev/angular'` |
1571
+
1572
+ #### Props
1573
+
1574
+ | Prop | Type | Default | Description |
1575
+ |------|------|---------|-------------|
1576
+ | id | `string` | — | |
1577
+ | variant | `'text' \| 'circle' \| 'rectangular'` | — | |
1578
+ | animation | `'pulse' \| 'wave'` | — | |
1579
+ | label | `string` | — | |
1580
+ | size | `'xs' \| 'sm' \| 'md' \| 'lg' \| 'xl'` | — | |
1581
+ | lines | `number` | `0` | |
1582
+
1583
+ ---
1584
+
1585
+ ### Slider
1586
+
1587
+ Range input with min/max, step, tick marks, and value label.
1588
+
1589
+ **Tag:** `<cx-slider>` | **Form:** yes | **Ref methods:** focus
1590
+
1591
+ #### Import
1592
+
1593
+ | Framework | Import |
1594
+ |-----------|--------|
1595
+ | React | `import { Slider } from '@colletdev/react'` |
1596
+ | Vue | `import { Slider } from '@colletdev/vue'` |
1597
+ | Svelte | `import Slider from '@colletdev/svelte/slider.svelte'` |
1598
+ | Angular | `import { CxSlider } from '@colletdev/angular'` |
1599
+
1600
+ #### Props
1601
+
1602
+ | Prop | Type | Default | Description |
1603
+ |------|------|---------|-------------|
1604
+ | id | `string` | — | |
1605
+ | label | `string` | — | |
1606
+ | ariaLabel | `string` | — | |
1607
+ | value | `number` | `0` | |
1608
+ | min | `number` | `0` | |
1609
+ | max | `number` | `0` | |
1610
+ | step | `number` | `0` | |
1611
+ | orientation | `'horizontal' \| 'vertical'` | — | |
1612
+ | shape | `'sharp' \| 'rounded' \| 'pill'` | — | |
1613
+ | intent | `'neutral' \| 'primary' \| 'info' \| 'success' \| 'warning' \| 'danger'` | — | |
1614
+ | size | `'xs' \| 'sm' \| 'md' \| 'lg' \| 'xl'` | — | |
1615
+ | showValue | `boolean` | `false` | |
1616
+ | valueText | `string` | — | |
1617
+ | helperText | `string` | — | |
1618
+ | errorText | `string` | — | |
1619
+ | disabled | `boolean` | `false` | |
1620
+ | unlabeled | `boolean` | `false` | |
1621
+
1622
+ #### Events
1623
+
1624
+ | Event | React | Vue | Detail |
1625
+ |-------|-------|-----|--------|
1626
+ | `cx-input` | `onInput` | `@cx-input` | `SliderDetail` |
1627
+ | `cx-change` | `onChange` | `@cx-change` | — |
1628
+ | `cx-focus` | `onFocus` | `@cx-focus` | `FocusDetail` |
1629
+ | `cx-blur` | `onBlur` | `@cx-blur` | `FocusDetail` |
1630
+ | `cx-keydown` | `onKeydown` | `@cx-keydown` | `KeyboardDetail` |
1631
+ | `cx-keyup` | `onKeyup` | `@cx-keyup` | `KeyboardDetail` |
1632
+
1633
+ #### Ref Methods
1634
+
1635
+ | Method | Description |
1636
+ |--------|-------------|
1637
+ | `focus()` | Focuses the range input. |
1638
+
1639
+ #### Structured Types
1640
+
1641
+ Import from `@colletdev/core/types`:
1642
+
1643
+ - `FocusDetail`
1644
+ - `KeyboardDetail`
1645
+ - `SliderDetail`
1646
+
1647
+ ---
1648
+
1649
+ ### SpeedDial
1650
+
1651
+ FAB with expandable action menu, backdrop, and staggered animation.
1652
+
1653
+ **Tag:** `<cx-speed-dial>` | **Form:** no | **Ref methods:** open, close, toggle
1654
+
1655
+ #### Import
1656
+
1657
+ | Framework | Import |
1658
+ |-----------|--------|
1659
+ | React | `import { SpeedDial } from '@colletdev/react'` |
1660
+ | Vue | `import { SpeedDial } from '@colletdev/vue'` |
1661
+ | Svelte | `import SpeedDial from '@colletdev/svelte/speed-dial.svelte'` |
1662
+ | Angular | `import { CxSpeedDial } from '@colletdev/angular'` |
1663
+
1664
+ #### Props
1665
+
1666
+ | Prop | Type | Default | Description |
1667
+ |------|------|---------|-------------|
1668
+ | id | `string` | — | **Required.** |
1669
+ | icon | `string` | — | **Required.** |
1670
+ | ariaLabel | `string` | — | |
1671
+ | closeIcon | `string` | — | |
1672
+ | actions | `SpeedDialAction[] \| string` | — | |
1673
+ | variant | `'filled' \| 'outline' \| 'ghost'` | — | |
1674
+ | shape | `'rounded' \| 'pill'` | — | |
1675
+ | size | `'sm' \| 'md' \| 'lg'` | — | |
1676
+ | direction | `'up' \| 'down' \| 'left' \| 'right'` | — | |
1677
+ | backdrop | `boolean` | `false` | |
1678
+ | tooltips | `boolean` | `false` | |
1679
+ | disabled | `boolean` | `false` | |
1680
+
1681
+ #### Events
1682
+
1683
+ | Event | React | Vue | Detail |
1684
+ |-------|-------|-----|--------|
1685
+ | `cx-action` | `onAction` | `@cx-action` | `MenuActionDetail` |
1686
+ | `cx-change` | `onChange` | `@cx-change` | `CollapsibleDetail` |
1687
+
1688
+ #### Ref Methods
1689
+
1690
+ | Method | Description |
1691
+ |--------|-------------|
1692
+ | `open()` | Opens the speed dial action menu. |
1693
+ | `close()` | Closes the speed dial action menu. |
1694
+ | `toggle()` | Toggles the speed dial action menu. |
1695
+
1696
+ #### Structured Types
1697
+
1698
+ Import from `@colletdev/core/types`:
1699
+
1700
+ - `CollapsibleDetail`
1701
+ - `MenuActionDetail`
1702
+ - `SpeedDialAction`
1703
+
1704
+ ---
1705
+
1706
+ ### Spinner
1707
+
1708
+ Indeterminate loading indicator (spinning circle).
1709
+
1710
+ **Tag:** `<cx-spinner>` | **Form:** no
1711
+
1712
+ #### Import
1713
+
1714
+ | Framework | Import |
1715
+ |-----------|--------|
1716
+ | React | `import { Spinner } from '@colletdev/react'` |
1717
+ | Vue | `import { Spinner } from '@colletdev/vue'` |
1718
+ | Svelte | `import Spinner from '@colletdev/svelte/spinner.svelte'` |
1719
+ | Angular | `import { CxSpinner } from '@colletdev/angular'` |
1720
+
1721
+ #### Props
1722
+
1723
+ | Prop | Type | Default | Description |
1724
+ |------|------|---------|-------------|
1725
+ | id | `string` | — | |
1726
+ | variant | `'circle' \| 'square'` | — | |
1727
+ | label | `string` | — | |
1728
+ | size | `'xs' \| 'sm' \| 'md' \| 'lg' \| 'xl'` | — | |
1729
+
1730
+ ---
1731
+
1732
+ ### SplitButton
1733
+
1734
+ Button with attached dropdown trigger for secondary actions.
1735
+
1736
+ **Tag:** `<cx-split-button>` | **Form:** no | **Ref methods:** open, close
1737
+
1738
+ #### Import
1739
+
1740
+ | Framework | Import |
1741
+ |-----------|--------|
1742
+ | React | `import { SplitButton } from '@colletdev/react'` |
1743
+ | Vue | `import { SplitButton } from '@colletdev/vue'` |
1744
+ | Svelte | `import SplitButton from '@colletdev/svelte/split-button.svelte'` |
1745
+ | Angular | `import { CxSplitButton } from '@colletdev/angular'` |
1746
+
1747
+ #### Props
1748
+
1749
+ | Prop | Type | Default | Description |
1750
+ |------|------|---------|-------------|
1751
+ | id | `string` | — | **Required.** |
1752
+ | label | `string` | — | **Required.** |
1753
+ | entries | `SplitMenuEntry[] \| string` | — | |
1754
+ | variant | `'filled' \| 'outline' \| 'ghost'` | — | |
1755
+ | intent | `'neutral' \| 'primary' \| 'info' \| 'success' \| 'warning' \| 'danger'` | — | |
1756
+ | shape | `'sharp' \| 'rounded' \| 'pill'` | — | |
1757
+ | size | `'xs' \| 'sm' \| 'md' \| 'lg' \| 'xl'` | — | |
1758
+ | iconLeading | `string` | — | |
1759
+ | disabled | `boolean` | `false` | |
1760
+ | primaryDisabled | `boolean` | `false` | |
1761
+ | triggerDisabled | `boolean` | `false` | |
1762
+ | triggerLabel | `string` | — | |
1763
+
1764
+ #### Events
1765
+
1766
+ | Event | React | Vue | Detail |
1767
+ |-------|-------|-----|--------|
1768
+ | `cx-click` | `onClick` | `@cx-click` | `ClickDetail` |
1769
+ | `cx-action` | `onAction` | `@cx-action` | `MenuActionDetail` |
1770
+
1771
+ #### Ref Methods
1772
+
1773
+ | Method | Description |
1774
+ |--------|-------------|
1775
+ | `open()` | Opens the dropdown menu. |
1776
+ | `close()` | Closes the dropdown menu. |
1777
+
1778
+ #### Structured Types
1779
+
1780
+ Import from `@colletdev/core/types`:
1781
+
1782
+ - `ClickDetail`
1783
+ - `MenuActionDetail`
1784
+ - `SplitMenuEntry`
1785
+
1786
+ ---
1787
+
1788
+ ### Stepper
1789
+
1790
+ Multi-step progress indicator with status per step.
1791
+
1792
+ **Tag:** `<cx-stepper>` | **Form:** no
1793
+
1794
+ #### Import
1795
+
1796
+ | Framework | Import |
1797
+ |-----------|--------|
1798
+ | React | `import { Stepper } from '@colletdev/react'` |
1799
+ | Vue | `import { Stepper } from '@colletdev/vue'` |
1800
+ | Svelte | `import Stepper from '@colletdev/svelte/stepper.svelte'` |
1801
+ | Angular | `import { CxStepper } from '@colletdev/angular'` |
1802
+
1803
+ #### Props
1804
+
1805
+ | Prop | Type | Default | Description |
1806
+ |------|------|---------|-------------|
1807
+ | id | `string` | — | |
1808
+ | label | `string` | — | |
1809
+ | steps | `StepperStep[] \| string` | — | |
1810
+ | current | `number` | `0` | |
1811
+ | variant | `'outline' \| 'filled' \| 'ghost'` | — | |
1812
+ | shape | `'sharp' \| 'rounded'` | — | |
1813
+ | orientation | `'horizontal' \| 'vertical'` | — | |
1814
+ | size | `'xs' \| 'sm' \| 'md' \| 'lg' \| 'xl'` | — | |
1815
+ | linear | `boolean` | `false` | |
1816
+
1817
+ #### Events
1818
+
1819
+ | Event | React | Vue | Detail |
1820
+ |-------|-------|-----|--------|
1821
+ | `cx-change` | `onChange` | `@cx-change` | `SelectDetail` |
1822
+
1823
+ #### Structured Types
1824
+
1825
+ Import from `@colletdev/core/types`:
1826
+
1827
+ - `SelectDetail`
1828
+ - `StepperStep`
1829
+
1830
+ ---
1831
+
1832
+ ### Switch
1833
+
1834
+ Toggle switch for binary on/off states.
1835
+
1836
+ **Tag:** `<cx-switch>` | **Form:** yes | **Ref methods:** focus
1837
+
1838
+ #### Import
1839
+
1840
+ | Framework | Import |
1841
+ |-----------|--------|
1842
+ | React | `import { Switch } from '@colletdev/react'` |
1843
+ | Vue | `import { Switch } from '@colletdev/vue'` |
1844
+ | Svelte | `import Switch from '@colletdev/svelte/switch.svelte'` |
1845
+ | Angular | `import { CxSwitch } from '@colletdev/angular'` |
1846
+
1847
+ #### Props
1848
+
1849
+ | Prop | Type | Default | Description |
1850
+ |------|------|---------|-------------|
1851
+ | id | `string` | — | |
1852
+ | label | `string` | — | |
1853
+ | shape | `'sharp' \| 'rounded' \| 'pill'` | — | |
1854
+ | size | `'xs' \| 'sm' \| 'md' \| 'lg' \| 'xl'` | — | |
1855
+ | checked | `boolean` | `false` | Boolean checked state (unlike Checkbox, which uses a string). |
1856
+ | disabled | `boolean` | `false` | |
1857
+ | required | `boolean` | `false` | |
1858
+ | helperText | `string` | — | |
1859
+ | error | `string` | — | |
1860
+ | description | `string` | — | |
1861
+ | unlabeled | `boolean` | `false` | |
1862
+
1863
+ #### Events
1864
+
1865
+ | Event | React | Vue | Detail |
1866
+ |-------|-------|-----|--------|
1867
+ | `cx-input` | `onInput` | `@cx-input` | `CheckedDetail` |
1868
+ | `cx-change` | `onChange` | `@cx-change` | `CheckedDetail` |
1869
+ | `cx-focus` | `onFocus` | `@cx-focus` | `FocusDetail` |
1870
+ | `cx-blur` | `onBlur` | `@cx-blur` | `FocusDetail` |
1871
+ | `cx-keydown` | `onKeydown` | `@cx-keydown` | `KeyboardDetail` |
1872
+ | `cx-keyup` | `onKeyup` | `@cx-keyup` | `KeyboardDetail` |
1873
+
1874
+ #### Ref Methods
1875
+
1876
+ | Method | Description |
1877
+ |--------|-------------|
1878
+ | `focus()` | Focuses the switch input. |
1879
+
1880
+ #### Structured Types
1881
+
1882
+ Import from `@colletdev/core/types`:
1883
+
1884
+ - `CheckedDetail`
1885
+ - `FocusDetail`
1886
+ - `KeyboardDetail`
1887
+
1888
+ ---
1889
+
1890
+ ### Table
1891
+
1892
+ Data table with sorting, selection, pagination, and expandable rows.
1893
+
1894
+ **Tag:** `<cx-table>` | **Form:** no
1895
+
1896
+ #### Import
1897
+
1898
+ | Framework | Import |
1899
+ |-----------|--------|
1900
+ | React | `import { Table } from '@colletdev/react'` |
1901
+ | Vue | `import { Table } from '@colletdev/vue'` |
1902
+ | Svelte | `import Table from '@colletdev/svelte/table.svelte'` |
1903
+ | Angular | `import { CxTable } from '@colletdev/angular'` |
1904
+
1905
+ #### Props
1906
+
1907
+ | Prop | Type | Default | Description |
1908
+ |------|------|---------|-------------|
1909
+ | id | `string` | — | |
1910
+ | caption | `string` | — | **Required.** |
1911
+ | columns | `TableColumn[] \| string` | — | |
1912
+ | rows | `TableRow[] \| string` | — | |
1913
+ | variant | `'plain' \| 'striped' \| 'bordered'` | — | |
1914
+ | size | `'xs' \| 'sm' \| 'md' \| 'lg' \| 'xl'` | — | |
1915
+ | selectable | `string` | — | |
1916
+ | selected | `string[] \| string` | — | |
1917
+ | sorts | `SortState[] \| string` | — | |
1918
+ | pagination | `PaginationConfig \| string` | — | |
1919
+ | hoverable | `boolean` | `false` | |
1920
+ | stickyHeader | `boolean` | `false` | |
1921
+ | footer | `FooterRow[] \| string` | — | |
1922
+ | emptyState | `EmptyStateConfig \| string` | — | |
1923
+ | columnOrder | `string[] \| string` | — | |
1924
+ | disabled | `boolean` | `false` | |
1925
+ | loading | `number` | `0` | |
1926
+ | error | `string` | — | |
1927
+
1928
+ #### Events
1929
+
1930
+ | Event | React | Vue | Detail |
1931
+ |-------|-------|-----|--------|
1932
+ | `cx-sort` | `onSort` | `@cx-sort` | `SortDetail` |
1933
+ | `cx-select` | `onSelect` | `@cx-select` | `TableSelectDetail` |
1934
+ | `cx-expand` | `onExpand` | `@cx-expand` | `TableExpandDetail` |
1935
+ | `cx-page` | `onPage` | `@cx-page` | `PageDetail` |
1936
+ | `cx-keydown` | `onKeydown` | `@cx-keydown` | `KeyboardDetail` |
1937
+ | `cx-keyup` | `onKeyup` | `@cx-keyup` | `KeyboardDetail` |
1938
+
1939
+ #### Structured Types
1940
+
1941
+ Import from `@colletdev/core/types`:
1942
+
1943
+ - `EmptyStateConfig`
1944
+ - `FooterRow`
1945
+ - `KeyboardDetail`
1946
+ - `PageDetail`
1947
+ - `PaginationConfig`
1948
+ - `SortDetail`
1949
+ - `SortState`
1950
+ - `TableColumn`
1951
+ - `TableExpandDetail`
1952
+ - `TableRow`
1953
+ - `TableSelectDetail`
1954
+
1955
+ ---
1956
+
1957
+ ### Tabs
1958
+
1959
+ Tabbed interface with keyboard navigation and dynamic panels.
1960
+
1961
+ **Tag:** `<cx-tabs>` | **Form:** no | **Ref methods:** focus
1962
+
1963
+ #### Import
1964
+
1965
+ | Framework | Import |
1966
+ |-----------|--------|
1967
+ | React | `import { Tabs } from '@colletdev/react'` |
1968
+ | Vue | `import { Tabs } from '@colletdev/vue'` |
1969
+ | Svelte | `import Tabs from '@colletdev/svelte/tabs.svelte'` |
1970
+ | Angular | `import { CxTabs } from '@colletdev/angular'` |
1971
+
1972
+ #### Props
1973
+
1974
+ | Prop | Type | Default | Description |
1975
+ |------|------|---------|-------------|
1976
+ | id | `string` | — | |
1977
+ | label | `string` | — | |
1978
+ | items | `TabItem[] \| string` | — | |
1979
+ | defaultTab | `string` | — | |
1980
+ | variant | `'underline' \| 'enclosed' \| 'pill'` | — | |
1981
+ | orientation | `'horizontal' \| 'vertical'` | — | |
1982
+ | width | `'auto' \| 'full'` | — | |
1983
+ | size | `'xs' \| 'sm' \| 'md' \| 'lg' \| 'xl'` | — | |
1984
+
1985
+ #### Events
1986
+
1987
+ | Event | React | Vue | Detail |
1988
+ |-------|-------|-----|--------|
1989
+ | `cx-change` | `onChange` | `@cx-change` | `SelectDetail` |
1990
+
1991
+ #### Ref Methods
1992
+
1993
+ | Method | Description |
1994
+ |--------|-------------|
1995
+ | `focus()` | Focuses the active tab. |
1996
+
1997
+ #### Structured Types
1998
+
1999
+ Import from `@colletdev/core/types`:
2000
+
2001
+ - `SelectDetail`
2002
+ - `TabItem`
2003
+
2004
+ ---
2005
+
2006
+ ### Text
2007
+
2008
+ Typography primitive with semantic elements, clamping, and prose styles.
2009
+
2010
+ **Tag:** `<cx-text>` | **Form:** no | **Slots:** default
2011
+
2012
+ #### Import
2013
+
2014
+ | Framework | Import |
2015
+ |-----------|--------|
2016
+ | React | `import { Text } from '@colletdev/react'` |
2017
+ | Vue | `import { Text } from '@colletdev/vue'` |
2018
+ | Svelte | `import Text from '@colletdev/svelte/text.svelte'` |
2019
+ | Angular | `import { CxText } from '@colletdev/angular'` |
2020
+
2021
+ #### Props
2022
+
2023
+ | Prop | Type | Default | Description |
2024
+ |------|------|---------|-------------|
2025
+ | id | `string` | — | |
2026
+ | textRole | `'display' \| 'h1' \| 'h2' \| 'h3' \| 'label-lg' \| 'label-md' \| 'label-sm' \| 'body-lg' \| 'body-md' \| 'body-sm' \| 'overline' \| 'caption' \| 'code'` | — | |
2027
+ | align | `'start' \| 'center' \| 'end'` | — | |
2028
+ | color | `'primary' \| 'inverse' \| 'muted'` | — | |
2029
+ | muted | `boolean` | `false` | |
2030
+ | strong | `boolean` | `false` | |
2031
+ | italic | `boolean` | `false` | |
2032
+ | underline | `boolean` | `false` | |
2033
+ | underlineStrong | `boolean` | `false` | |
2034
+ | truncate | `boolean` | `false` | |
2035
+ | lineClamp | `number` | `0` | |
2036
+ | balance | `boolean` | `false` | |
2037
+ | prose | `boolean` | `false` | |
2038
+ | elementAs | `string` | — | |
2039
+
2040
+ ---
2041
+
2042
+ ### TextInput
2043
+
2044
+ Text input field with validation, icons, multiline, and auto-grow.
2045
+
2046
+ **Tag:** `<cx-text-input>` | **Form:** yes | **Ref methods:** focus, blur, select
2047
+
2048
+ #### Import
2049
+
2050
+ | Framework | Import |
2051
+ |-----------|--------|
2052
+ | React | `import { TextInput } from '@colletdev/react'` |
2053
+ | Vue | `import { TextInput } from '@colletdev/vue'` |
2054
+ | Svelte | `import TextInput from '@colletdev/svelte/text-input.svelte'` |
2055
+ | Angular | `import { CxTextInput } from '@colletdev/angular'` |
2056
+
2057
+ #### Props
2058
+
2059
+ | Prop | Type | Default | Description |
2060
+ |------|------|---------|-------------|
2061
+ | id | `string` | — | |
2062
+ | label | `string` | — | |
2063
+ | variant | `'outline' \| 'filled' \| 'ghost'` | — | |
2064
+ | shape | `'sharp' \| 'rounded' \| 'pill'` | — | |
2065
+ | size | `'xs' \| 'sm' \| 'md' \| 'lg' \| 'xl'` | — | |
2066
+ | kind | `'text' \| 'email' \| 'password' \| 'search' \| 'multiline'` | — | Input type. Use 'multiline' for textarea behavior with optional rows and autoGrow. |
2067
+ | placeholder | `string` | — | |
2068
+ | value | `string` | — | Controlled value. Set via onInput callback. |
2069
+ | helperText | `string` | — | |
2070
+ | error | `string` | — | |
2071
+ | disabled | `boolean` | `false` | |
2072
+ | readonly | `boolean` | `false` | |
2073
+ | required | `boolean` | `false` | |
2074
+ | clearable | `boolean` | `false` | |
2075
+ | prefixIcon | `string` | — | |
2076
+ | suffixIcon | `string` | — | |
2077
+ | passwordToggle | `boolean` | `false` | |
2078
+ | passwordVisible | `boolean` | `false` | |
2079
+ | name | `string` | — | |
2080
+ | minLength | `number` | `0` | |
2081
+ | maxLength | `number` | `0` | |
2082
+ | pattern | `string` | — | |
2083
+ | autocomplete | `string` | — | |
2084
+ | rows | `number` | `0` | |
2085
+ | autoGrow | `boolean` | `false` | |
2086
+
2087
+ #### Events
2088
+
2089
+ | Event | React | Vue | Detail |
2090
+ |-------|-------|-----|--------|
2091
+ | `cx-input` | `onInput` | `@cx-input` | `InputDetail` |
2092
+ | `cx-change` | `onChange` | `@cx-change` | `InputDetail` |
2093
+ | `cx-focus` | `onFocus` | `@cx-focus` | `FocusDetail` |
2094
+ | `cx-blur` | `onBlur` | `@cx-blur` | `FocusDetail` |
2095
+ | `cx-keydown` | `onKeydown` | `@cx-keydown` | `KeyboardDetail` |
2096
+ | `cx-keyup` | `onKeyup` | `@cx-keyup` | `KeyboardDetail` |
2097
+
2098
+ #### Ref Methods
2099
+
2100
+ | Method | Description |
2101
+ |--------|-------------|
2102
+ | `focus()` | Focuses the inner input or textarea. |
2103
+ | `blur()` | Blurs the inner input or textarea. |
2104
+ | `select()` | Selects all text in the input. |
2105
+
2106
+ #### Structured Types
2107
+
2108
+ Import from `@colletdev/core/types`:
2109
+
2110
+ - `FocusDetail`
2111
+ - `InputDetail`
2112
+ - `KeyboardDetail`
2113
+
2114
+ ---
2115
+
2116
+ ### Thinking
2117
+
2118
+ Animated thinking/loading indicator with shimmer effect.
2119
+
2120
+ **Tag:** `<cx-thinking>` | **Form:** no
2121
+
2122
+ #### Import
2123
+
2124
+ | Framework | Import |
2125
+ |-----------|--------|
2126
+ | React | `import { Thinking } from '@colletdev/react'` |
2127
+ | Vue | `import { Thinking } from '@colletdev/vue'` |
2128
+ | Svelte | `import Thinking from '@colletdev/svelte/thinking.svelte'` |
2129
+ | Angular | `import { CxThinking } from '@colletdev/angular'` |
2130
+
2131
+ #### Props
2132
+
2133
+ | Prop | Type | Default | Description |
2134
+ |------|------|---------|-------------|
2135
+ | id | `string` | — | |
2136
+ | variant | `'ghost' \| 'filled'` | — | |
2137
+ | shape | `'sharp' \| 'rounded' \| 'pill'` | — | |
2138
+ | label | `string` | — | |
2139
+ | size | `'xs' \| 'sm' \| 'md' \| 'lg' \| 'xl'` | — | |
2140
+ | speed | `string` | — | |
2141
+
2142
+ ---
2143
+
2144
+ ### Toast
2145
+
2146
+ Temporary notification with auto-dismiss, intent, and action slot.
2147
+
2148
+ **Tag:** `<cx-toast>` | **Form:** no | **Slots:** action | **Ref methods:** dismiss
2149
+
2150
+ #### Import
2151
+
2152
+ | Framework | Import |
2153
+ |-----------|--------|
2154
+ | React | `import { Toast } from '@colletdev/react'` |
2155
+ | Vue | `import { Toast } from '@colletdev/vue'` |
2156
+ | Svelte | `import Toast from '@colletdev/svelte/toast.svelte'` |
2157
+ | Angular | `import { CxToast } from '@colletdev/angular'` |
2158
+
2159
+ #### Props
2160
+
2161
+ | Prop | Type | Default | Description |
2162
+ |------|------|---------|-------------|
2163
+ | id | `string` | — | |
2164
+ | title | `string` | — | |
2165
+ | description | `string` | — | |
2166
+ | variant | `'subtle' \| 'filled' \| 'outline'` | — | |
2167
+ | intent | `'neutral' \| 'primary' \| 'info' \| 'success' \| 'warning' \| 'danger'` | — | |
2168
+ | size | `'xs' \| 'sm' \| 'md' \| 'lg' \| 'xl'` | — | |
2169
+ | showIcon | `boolean` | `false` | |
2170
+ | icon | `string` | — | |
2171
+ | dismissible | `boolean` | `false` | |
2172
+ | dismissLabel | `string` | — | |
2173
+ | duration | `number` | `0` | |
2174
+
2175
+ #### Events
2176
+
2177
+ | Event | React | Vue | Detail |
2178
+ |-------|-------|-----|--------|
2179
+ | `cx-dismiss` | `onDismiss` | `@cx-dismiss` | `DismissDetail` |
2180
+
2181
+ #### Ref Methods
2182
+
2183
+ | Method | Description |
2184
+ |--------|-------------|
2185
+ | `dismiss()` | Dismisses the toast with exit animation. |
2186
+
2187
+ #### Structured Types
2188
+
2189
+ Import from `@colletdev/core/types`:
2190
+
2191
+ - `DismissDetail`
2192
+
2193
+ ---
2194
+
2195
+ ### ToggleGroup
2196
+
2197
+ Group of toggle buttons with single or multiple selection.
2198
+
2199
+ **Tag:** `<cx-toggle-group>` | **Form:** yes
2200
+
2201
+ #### Import
2202
+
2203
+ | Framework | Import |
2204
+ |-----------|--------|
2205
+ | React | `import { ToggleGroup } from '@colletdev/react'` |
2206
+ | Vue | `import { ToggleGroup } from '@colletdev/vue'` |
2207
+ | Svelte | `import ToggleGroup from '@colletdev/svelte/toggle-group.svelte'` |
2208
+ | Angular | `import { CxToggleGroup } from '@colletdev/angular'` |
2209
+
2210
+ #### Props
2211
+
2212
+ | Prop | Type | Default | Description |
2213
+ |------|------|---------|-------------|
2214
+ | id | `string` | — | |
2215
+ | label | `string` | — | |
2216
+ | items | `ToggleItem[] \| string` | — | |
2217
+ | variant | `'outline' \| 'ghost' \| 'filled'` | — | |
2218
+ | shape | `'sharp' \| 'rounded' \| 'pill'` | — | |
2219
+ | mode | `'single' \| 'multiple'` | — | |
2220
+ | orientation | `'horizontal' \| 'vertical'` | — | |
2221
+ | intent | `'neutral' \| 'primary' \| 'info' \| 'success' \| 'warning' \| 'danger'` | — | |
2222
+ | size | `'xs' \| 'sm' \| 'md' \| 'lg' \| 'xl'` | — | |
2223
+ | disabled | `boolean` | `false` | |
2224
+ | value | `string \| string[]` | — | Controlled pressed item IDs. Pass a single ID or an array. |
2225
+
2226
+ #### Events
2227
+
2228
+ | Event | React | Vue | Detail |
2229
+ |-------|-------|-----|--------|
2230
+ | `cx-input` | `onInput` | `@cx-input` | — |
2231
+ | `cx-change` | `onChange` | `@cx-change` | `ToggleDetail` |
2232
+
2233
+ #### Structured Types
2234
+
2235
+ Import from `@colletdev/core/types`:
2236
+
2237
+ - `ToggleDetail`
2238
+ - `ToggleItem`
2239
+
2240
+ ---
2241
+
2242
+ ### Tooltip
2243
+
2244
+ Hover/focus-triggered informational overlay anchored to a trigger.
2245
+
2246
+ **Tag:** `<cx-tooltip>` | **Form:** no | **Slots:** trigger | **Children alias:** trigger
2247
+
2248
+ #### Import
2249
+
2250
+ | Framework | Import |
2251
+ |-----------|--------|
2252
+ | React | `import { Tooltip } from '@colletdev/react'` |
2253
+ | Vue | `import { Tooltip } from '@colletdev/vue'` |
2254
+ | Svelte | `import Tooltip from '@colletdev/svelte/tooltip.svelte'` |
2255
+ | Angular | `import { CxTooltip } from '@colletdev/angular'` |
2256
+
2257
+ #### Props
2258
+
2259
+ | Prop | Type | Default | Description |
2260
+ |------|------|---------|-------------|
2261
+ | id | `string` | — | |
2262
+ | content | `string` | — | Tooltip text shown on hover/focus. Also serves as the accessible name. |
2263
+ | triggerHtml | `string` | — | |
2264
+ | position | `'top' \| 'bottom' \| 'left' \| 'right'` | — | |
2265
+ | arrow | `boolean` | `false` | |
2266
+ | openDelay | `number` | `0` | |
2267
+ | closeDelay | `number` | `0` | |
2268
+