@tolle_/tolle-ui 21.1.2 → 21.2.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 (128) hide show
  1. package/fesm2022/tolle-ui.mjs +30099 -5285
  2. package/fesm2022/tolle-ui.mjs.map +1 -1
  3. package/package.json +17 -5
  4. package/preset.js +35 -1
  5. package/registry/docs-content.json +11486 -0
  6. package/registry/llms-full.txt +4067 -0
  7. package/registry/llms.txt +127 -0
  8. package/registry/manifest.json +12656 -0
  9. package/registry/r/accordion-item.json +21 -0
  10. package/registry/r/accordion.json +23 -0
  11. package/registry/r/alert-dialog-dynamic.json +31 -0
  12. package/registry/r/alert-dialog.json +26 -0
  13. package/registry/r/alert.json +23 -0
  14. package/registry/r/aspect-ratio.json +21 -0
  15. package/registry/r/attachment.json +23 -0
  16. package/registry/r/avatar-fallback.json +16 -0
  17. package/registry/r/avatar.json +23 -0
  18. package/registry/r/badge.json +23 -0
  19. package/registry/r/bar-list.json +21 -0
  20. package/registry/r/breadcrumb-item.json +16 -0
  21. package/registry/r/breadcrumb-link.json +16 -0
  22. package/registry/r/breadcrumb-separator.json +16 -0
  23. package/registry/r/breadcrumb.json +21 -0
  24. package/registry/r/bubble.json +23 -0
  25. package/registry/r/button-group.json +21 -0
  26. package/registry/r/button.json +23 -0
  27. package/registry/r/calendar.json +23 -0
  28. package/registry/r/card.json +21 -0
  29. package/registry/r/carousel.json +18 -0
  30. package/registry/r/category-bar.json +21 -0
  31. package/registry/r/chain-of-thought.json +23 -0
  32. package/registry/r/chart-pie.json +30 -0
  33. package/registry/r/chart-spark.json +30 -0
  34. package/registry/r/chart.json +28 -0
  35. package/registry/r/checkbox.json +23 -0
  36. package/registry/r/checkpoint.json +23 -0
  37. package/registry/r/collapsible.json +21 -0
  38. package/registry/r/combobox.json +31 -0
  39. package/registry/r/command-dialog.json +21 -0
  40. package/registry/r/command.json +26 -0
  41. package/registry/r/confirmation.json +23 -0
  42. package/registry/r/context-menu-trigger.json +23 -0
  43. package/registry/r/context-menu.json +28 -0
  44. package/registry/r/context.json +26 -0
  45. package/registry/r/conversation.json +23 -0
  46. package/registry/r/country-selector.json +31 -0
  47. package/registry/r/data-table.json +38 -0
  48. package/registry/r/date-picker.json +27 -0
  49. package/registry/r/date-range-picker.json +32 -0
  50. package/registry/r/date-time-picker.json +28 -0
  51. package/registry/r/direction.json +16 -0
  52. package/registry/r/dropdown-item.json +21 -0
  53. package/registry/r/dropdown-label.json +16 -0
  54. package/registry/r/dropdown-menu.json +16 -0
  55. package/registry/r/dropdown-separator.json +16 -0
  56. package/registry/r/dropdown-trigger.json +20 -0
  57. package/registry/r/empty-state.json +23 -0
  58. package/registry/r/field.json +23 -0
  59. package/registry/r/hover-card.json +23 -0
  60. package/registry/r/inline-citation.json +26 -0
  61. package/registry/r/input-group.json +23 -0
  62. package/registry/r/input.json +21 -0
  63. package/registry/r/item.json +23 -0
  64. package/registry/r/kbd.json +23 -0
  65. package/registry/r/label.json +21 -0
  66. package/registry/r/marker.json +23 -0
  67. package/registry/r/masked-input.json +21 -0
  68. package/registry/r/menubar.json +24 -0
  69. package/registry/r/message-scroller.json +26 -0
  70. package/registry/r/message.json +23 -0
  71. package/registry/r/modal.json +36 -0
  72. package/registry/r/model-selector.json +32 -0
  73. package/registry/r/multi-select.json +33 -0
  74. package/registry/r/native-select.json +23 -0
  75. package/registry/r/navigation-menu.json +24 -0
  76. package/registry/r/otp-group.json +16 -0
  77. package/registry/r/otp-slot.json +21 -0
  78. package/registry/r/otp.json +21 -0
  79. package/registry/r/pagination.json +33 -0
  80. package/registry/r/phone-number-input.json +34 -0
  81. package/registry/r/plan.json +23 -0
  82. package/registry/r/popover-content.json +21 -0
  83. package/registry/r/popover.json +18 -0
  84. package/registry/r/progress-circle.json +21 -0
  85. package/registry/r/progress.json +21 -0
  86. package/registry/r/prompt-input.json +23 -0
  87. package/registry/r/queue.json +23 -0
  88. package/registry/r/radio-group.json +26 -0
  89. package/registry/r/radio-item.json +26 -0
  90. package/registry/r/range-calendar.json +28 -0
  91. package/registry/r/reasoning.json +23 -0
  92. package/registry/r/resizable-panel-item.json +23 -0
  93. package/registry/r/resizable-panel.json +23 -0
  94. package/registry/r/resizable.json +21 -0
  95. package/registry/r/scroll-area.json +21 -0
  96. package/registry/r/segment.json +21 -0
  97. package/registry/r/select-group.json +21 -0
  98. package/registry/r/select-item.json +26 -0
  99. package/registry/r/select-separator.json +21 -0
  100. package/registry/r/select.json +32 -0
  101. package/registry/r/separator.json +21 -0
  102. package/registry/r/sheet-wrapper.json +31 -0
  103. package/registry/r/sheet.json +21 -0
  104. package/registry/r/shimmer.json +23 -0
  105. package/registry/r/sidebar.json +21 -0
  106. package/registry/r/skeleton.json +23 -0
  107. package/registry/r/slider.json +21 -0
  108. package/registry/r/sources.json +23 -0
  109. package/registry/r/spinner.json +23 -0
  110. package/registry/r/suggestion.json +23 -0
  111. package/registry/r/switch.json +23 -0
  112. package/registry/r/table.json +21 -0
  113. package/registry/r/tabs.json +23 -0
  114. package/registry/r/tag-input.json +25 -0
  115. package/registry/r/task.json +23 -0
  116. package/registry/r/textarea.json +21 -0
  117. package/registry/r/time-picker.json +24 -0
  118. package/registry/r/toaster.json +26 -0
  119. package/registry/r/toggle-group.json +25 -0
  120. package/registry/r/toggle.json +23 -0
  121. package/registry/r/tolle-cell.json +16 -0
  122. package/registry/r/tool.json +23 -0
  123. package/registry/r/tooltip.json +23 -0
  124. package/registry/r/tracker.json +25 -0
  125. package/registry/r/typography.json +23 -0
  126. package/registry/registry.json +2545 -0
  127. package/theme.css +230 -10
  128. package/types/tolle-ui.d.ts +7433 -823
@@ -0,0 +1,4067 @@
1
+ # Tolle UI — Full Component Reference
2
+
3
+ Angular 18 standalone components. Install the package (`npm i @tolle_/tolle-ui`) and import, or own the source (`npx @tolle_/cli add <component>`).
4
+
5
+ ## Accordion
6
+
7
+ - Install: `npx @tolle_/cli add accordion`
8
+ - Import: `import { AccordionComponent } from '@tolle_/tolle-ui';`
9
+
10
+ ### `<tolle-accordion>`
11
+
12
+ Inputs:
13
+
14
+ | Name | Type | Default | Description |
15
+ | --- | --- | --- | --- |
16
+ | type | `'single' | 'multiple'` | `'single'` | |
17
+ | class | `string` | `''` | |
18
+
19
+ Slots: _default_
20
+
21
+ ## Accordion Item
22
+
23
+ - Install: `npx @tolle_/cli add accordion-item`
24
+ - Import: `import { AccordionItemComponent } from '@tolle_/tolle-ui';`
25
+
26
+ ### `<tolle-accordion-item>`
27
+
28
+ Inputs:
29
+
30
+ | Name | Type | Default | Description |
31
+ | --- | --- | --- | --- |
32
+ | title | `string` | `''` | |
33
+ | class | `string` | `''` | |
34
+ | id | `string | number` | — | |
35
+
36
+ Slots: _default_
37
+
38
+ ## Alert
39
+
40
+ - Install: `npx @tolle_/cli add alert`
41
+ - Import: `import { AlertComponent } from '@tolle_/tolle-ui';`
42
+
43
+ ### `<tolle-alert>`
44
+
45
+ Inputs:
46
+
47
+ | Name | Type | Default | Description |
48
+ | --- | --- | --- | --- |
49
+ | variant | `'default' | 'destructive' | 'success' | 'warning' | 'info'` | `'default'` | |
50
+ | title | `string` | — | |
51
+ | class | `string` | `''` | |
52
+ | dismissible | `boolean` | `false` | |
53
+
54
+ Outputs:
55
+
56
+ | Name | Payload | Description |
57
+ | --- | --- | --- |
58
+ | onClose | `void` | |
59
+
60
+ Slots: `[icon]`, _default_
61
+
62
+ Variants:
63
+ - `variant`: `default`, `destructive`, `success`, `warning`, `info` (default `default`)
64
+
65
+ ## Alert Dialog
66
+
67
+ - Install: `npx @tolle_/cli add alert-dialog`
68
+ - Import: `import { AlertDialogComponent, AlertDialogTriggerComponent, AlertDialogPortalComponent, AlertDialogContentComponent, AlertDialogHeaderComponent, AlertDialogFooterComponent, AlertDialogTitleComponent, AlertDialogDescriptionComponent, AlertDialogActionComponent, AlertDialogCancelComponent } from '@tolle_/tolle-ui';`
69
+
70
+ ### `<tolle-alert-dialog>`
71
+
72
+ Inputs:
73
+
74
+ | Name | Type | Default | Description |
75
+ | --- | --- | --- | --- |
76
+ | open | `boolean` | — | |
77
+
78
+ Outputs:
79
+
80
+ | Name | Payload | Description |
81
+ | --- | --- | --- |
82
+ | openChange | `boolean` | |
83
+
84
+ Slots: _default_
85
+
86
+ ### `<tolle-alert-dialog-trigger>`
87
+
88
+ Slots: _default_
89
+
90
+ ### `<tolle-alert-dialog-portal>`
91
+
92
+ Slots: _default_
93
+
94
+ ### `<tolle-alert-dialog-content>`
95
+
96
+ Inputs:
97
+
98
+ | Name | Type | Default | Description |
99
+ | --- | --- | --- | --- |
100
+ | class | `string` | `''` | |
101
+ | size | `AlertDialogSize` | `'lg'` | |
102
+
103
+ Slots: _default_
104
+
105
+ ### `<tolle-alert-dialog-header>`
106
+
107
+ Inputs:
108
+
109
+ | Name | Type | Default | Description |
110
+ | --- | --- | --- | --- |
111
+ | class | `string` | `''` | |
112
+
113
+ Slots: _default_
114
+
115
+ ### `<tolle-alert-dialog-footer>`
116
+
117
+ Inputs:
118
+
119
+ | Name | Type | Default | Description |
120
+ | --- | --- | --- | --- |
121
+ | class | `string` | `''` | |
122
+
123
+ Slots: _default_
124
+
125
+ ### `<tolle-alert-dialog-title>`
126
+
127
+ Inputs:
128
+
129
+ | Name | Type | Default | Description |
130
+ | --- | --- | --- | --- |
131
+ | class | `string` | `''` | |
132
+
133
+ Slots: _default_
134
+
135
+ ### `<tolle-alert-dialog-description>`
136
+
137
+ Inputs:
138
+
139
+ | Name | Type | Default | Description |
140
+ | --- | --- | --- | --- |
141
+ | class | `string` | `''` | |
142
+
143
+ Slots: _default_
144
+
145
+ ### `<tolle-alert-dialog-action>`
146
+
147
+ Outputs:
148
+
149
+ | Name | Payload | Description |
150
+ | --- | --- | --- |
151
+ | confirmed | `MouseEvent` | Fires before the dialog closes, so consumers can run the confirmed action. |
152
+
153
+ Slots: _default_
154
+
155
+ ### `<tolle-alert-dialog-cancel>`
156
+
157
+ Outputs:
158
+
159
+ | Name | Payload | Description |
160
+ | --- | --- | --- |
161
+ | cancelled | `MouseEvent` | Fires before the dialog closes, so consumers can react to a dismissal. |
162
+
163
+ Slots: _default_
164
+
165
+ ## Alert Dialog Dynamic
166
+
167
+ - Install: `npx @tolle_/cli add alert-dialog-dynamic`
168
+ - Import: `import { AlertDialogDynamicComponent } from '@tolle_/tolle-ui';`
169
+
170
+ ### `<tolle-alert-dialog-dynamic>`
171
+
172
+ ## Aspect Ratio
173
+
174
+ - Install: `npx @tolle_/cli add aspect-ratio`
175
+ - Import: `import { AspectRatioComponent } from '@tolle_/tolle-ui';`
176
+
177
+ ### `<tolle-aspect-ratio>`
178
+
179
+ Inputs:
180
+
181
+ | Name | Type | Default | Description |
182
+ | --- | --- | --- | --- |
183
+ | ratio | `string | number` | `'16 / 9'` | |
184
+ | class | `string` | `''` | |
185
+
186
+ Slots: _default_
187
+
188
+ ## Attachment
189
+
190
+ - Install: `npx @tolle_/cli add attachment`
191
+ - Import: `import { AttachmentComponent, AttachmentGroupComponent, AttachmentActionsComponent } from '@tolle_/tolle-ui';`
192
+
193
+ ### `<tolle-attachment>`
194
+
195
+ Inputs:
196
+
197
+ | Name | Type | Default | Description |
198
+ | --- | --- | --- | --- |
199
+ | name | `string` | `''` | File name shown as the card's title. |
200
+ | size | `number` | `0` | File size in bytes; rendered as B / KB / MB. |
201
+ | type | `string` | `''` | MIME type, e.g. 'image/png'. Chooses the thumbnail or the file icon. |
202
+ | url | `string` | `''` | Source for the thumbnail and the target of `open`. |
203
+ | state | `'idle' | 'uploading' | 'error'` | `'idle'` | Upload lifecycle state of the attachment. |
204
+ | progress | `number` | `0` | Upload progress from 0 to 100; only shown while uploading. |
205
+ | density | `'sm' | 'default'` | `'default'` | Density of the card. |
206
+ | removable | `boolean` | `false` | Shows a trailing remove button that emits `remove`. |
207
+ | removeLabel | `string` | `'Remove attachment'` | Accessible label for the remove button. |
208
+ | errorLabel | `string` | `'Upload failed'` | Text shown in place of the size when the state is 'error'. |
209
+ | class | `string` | `''` | Extra Tailwind classes merged onto the card via `cn()` (last-wins). |
210
+
211
+ Outputs:
212
+
213
+ | Name | Payload | Description |
214
+ | --- | --- | --- |
215
+ | remove | `Event` | Emitted when the remove button is pressed. |
216
+ | open | `Event` | Emitted when the card is activated by click, Enter, or Space. |
217
+
218
+ Slots: _default_
219
+
220
+ Variants:
221
+ - `state`: `idle`, `uploading`, `error` (default `idle`)
222
+ - `size`: `sm`, `default` (default `default`)
223
+
224
+ ### `<tolle-attachment-group>`
225
+
226
+ Inputs:
227
+
228
+ | Name | Type | Default | Description |
229
+ | --- | --- | --- | --- |
230
+ | class | `string` | `''` | Extra Tailwind classes merged onto the row via `cn()` (last-wins). |
231
+
232
+ Slots: _default_
233
+
234
+ ### `<tolle-attachment-actions>`
235
+
236
+ Inputs:
237
+
238
+ | Name | Type | Default | Description |
239
+ | --- | --- | --- | --- |
240
+ | alwaysVisible | `boolean` | `false` | Keeps the actions visible instead of revealing them on hover or focus. |
241
+ | class | `string` | `''` | Extra Tailwind classes merged onto the slot via `cn()` (last-wins). |
242
+
243
+ Slots: _default_
244
+
245
+ ## Avatar
246
+
247
+ - Install: `npx @tolle_/cli add avatar`
248
+ - Import: `import { AvatarComponent } from '@tolle_/tolle-ui';`
249
+
250
+ ### `<tolle-avatar>`
251
+
252
+ Inputs:
253
+
254
+ | Name | Type | Default | Description |
255
+ | --- | --- | --- | --- |
256
+ | src | `string` | — | Image URL. When absent or failed to load, projected fallback content is shown. |
257
+ | alt | `string` | `''` | Alternative text for the avatar image. |
258
+ | size | `'sm' | 'default' | 'lg' | 'xl'` | `'default'` | Size of the avatar. |
259
+ | shape | `'circle' | 'square'` | `'circle'` | Shape of the avatar. |
260
+ | class | `string` | `''` | Extra Tailwind classes merged onto the avatar via `cn()` (last-wins). |
261
+
262
+ Slots: _default_
263
+
264
+ Variants:
265
+ - `shape`: `circle`, `square` (default `circle`)
266
+ - `size`: `sm`, `default`, `lg`, `xl` (default `default`)
267
+
268
+ ## Avatar Fallback
269
+
270
+ - Install: `npx @tolle_/cli add avatar-fallback`
271
+ - Import: `import { AvatarFallbackComponent } from '@tolle_/tolle-ui';`
272
+
273
+ ### `<tolle-avatar-fallback>`
274
+
275
+ Slots: _default_
276
+
277
+ ## Badge
278
+
279
+ - Install: `npx @tolle_/cli add badge`
280
+ - Import: `import { BadgeComponent } from '@tolle_/tolle-ui';`
281
+
282
+ ### `<tolle-badge>`
283
+
284
+ Inputs:
285
+
286
+ | Name | Type | Default | Description |
287
+ | --- | --- | --- | --- |
288
+ | variant | `'default' | 'secondary' | 'outline' | 'destructive'` | `'default'` | Visual style of the badge. |
289
+ | size | `'xs' | 'sm' | 'default'` | `'default'` | Size of the badge. |
290
+ | removable | `boolean` | `false` | Shows a trailing dismiss (×) button that emits `onRemove`. |
291
+ | removeLabel | `string` | `'Remove'` | Accessible label for the dismiss button. |
292
+ | class | `string` | `''` | Extra Tailwind classes merged onto the badge via `cn()` (last-wins). |
293
+
294
+ Outputs:
295
+
296
+ | Name | Payload | Description |
297
+ | --- | --- | --- |
298
+ | onRemove | `MouseEvent` | Emitted with the click event when the dismiss button is pressed. |
299
+
300
+ Slots: `[prefix]`, _default_
301
+
302
+ Variants:
303
+ - `variant`: `default`, `secondary`, `outline`, `destructive` (default `default`)
304
+ - `size`: `xs`, `sm`, `default` (default `default`)
305
+
306
+ ## Bar List
307
+
308
+ - Install: `npx @tolle_/cli add bar-list`
309
+ - Import: `import { BarListComponent } from '@tolle_/tolle-ui';`
310
+
311
+ ### `<tolle-bar-list>`
312
+
313
+ Inputs:
314
+
315
+ | Name | Type | Default | Description |
316
+ | --- | --- | --- | --- |
317
+ | data | `Record<string, any>[]` | `[]` | Rows to rank, in the order they should be drawn. |
318
+ | labelKey | `string` | `'label'` | Row key holding each row's label. |
319
+ | valueKey | `string` | `'value'` | Row key holding each row's numeric value. |
320
+ | class | `string` | `''` | Extra Tailwind classes merged onto the list via `cn()` (last-wins). |
321
+
322
+ ## Breadcrumb
323
+
324
+ - Install: `npx @tolle_/cli add breadcrumb`
325
+ - Import: `import { BreadcrumbComponent } from '@tolle_/tolle-ui';`
326
+
327
+ ### `<tolle-breadcrumb>`
328
+
329
+ Inputs:
330
+
331
+ | Name | Type | Default | Description |
332
+ | --- | --- | --- | --- |
333
+ | class | `string` | `''` | |
334
+
335
+ Slots: _default_
336
+
337
+ ## Breadcrumb Item
338
+
339
+ - Install: `npx @tolle_/cli add breadcrumb-item`
340
+ - Import: `import { BreadcrumbItemComponent } from '@tolle_/tolle-ui';`
341
+
342
+ ### `<tolle-breadcrumb-item>`
343
+
344
+ Slots: _default_
345
+
346
+ ## Breadcrumb Link
347
+
348
+ - Install: `npx @tolle_/cli add breadcrumb-link`
349
+ - Import: `import { BreadcrumbLinkComponent } from '@tolle_/tolle-ui';`
350
+
351
+ ### `<tolle-breadcrumb-link>`
352
+
353
+ Inputs:
354
+
355
+ | Name | Type | Default | Description |
356
+ | --- | --- | --- | --- |
357
+ | active | `boolean` | `false` | |
358
+
359
+ Slots: _default_
360
+
361
+ ## Breadcrumb Separator
362
+
363
+ - Install: `npx @tolle_/cli add breadcrumb-separator`
364
+ - Import: `import { BreadcrumbSeparatorComponent } from '@tolle_/tolle-ui';`
365
+
366
+ ### `<tolle-breadcrumb-separator>`
367
+
368
+ Slots: _default_
369
+
370
+ ## Bubble
371
+
372
+ - Install: `npx @tolle_/cli add bubble`
373
+ - Import: `import { BubbleComponent, BubbleActionsComponent, BubbleReactionsComponent } from '@tolle_/tolle-ui';`
374
+
375
+ ### `<tolle-bubble>`
376
+
377
+ Inputs:
378
+
379
+ | Name | Type | Default | Description |
380
+ | --- | --- | --- | --- |
381
+ | variant | `'default' | 'primary' | 'muted' | 'outline'` | `'default'` | Visual style of the surface. |
382
+ | align | `'start' | 'end'` | `'start'` | Which edge the bubble hangs off; squares the matching bottom corner. |
383
+ | size | `'sm' | 'default' | 'lg'` | `'default'` | Padding and text scale of the surface. |
384
+ | collapsible | `boolean` | `false` | Shows a show-more / show-less toggle for long content. |
385
+ | collapsed | `boolean` | `true` | Whether the content is currently clamped. Only has an effect with `collapsible`. |
386
+ | collapsedHeight | `string` | `'6rem'` | Max height of the clamped content, as a CSS length. |
387
+ | expandLabel | `string` | `'Show more'` | Label of the toggle while the content is clamped. |
388
+ | collapseLabel | `string` | `'Show less'` | Label of the toggle while the content is expanded. |
389
+ | interactive | `boolean` | `false` | Makes the whole surface a keyboard-focusable trigger that emits `bubbleClick`. |
390
+ | class | `string` | `''` | Extra Tailwind classes merged onto the surface via `cn()` (last-wins). |
391
+
392
+ Outputs:
393
+
394
+ | Name | Payload | Description |
395
+ | --- | --- | --- |
396
+ | collapsedChange | `boolean` | Emitted with the new collapsed state when the show-more toggle is pressed. |
397
+ | bubbleClick | `Event` | Emitted when an interactive bubble is activated by click, Enter, or Space. |
398
+
399
+ Slots: _default_, `[bubbleFooter]`
400
+
401
+ Variants:
402
+ - `variant`: `default`, `primary`, `muted`, `outline` (default `default`)
403
+ - `align`: `start`, `end` (default `start`)
404
+ - `size`: `sm`, `default`, `lg` (default `default`)
405
+
406
+ ### `<tolle-bubble-actions>`
407
+
408
+ Inputs:
409
+
410
+ | Name | Type | Default | Description |
411
+ | --- | --- | --- | --- |
412
+ | alwaysVisible | `boolean` | `false` | Keeps the row permanently visible instead of revealing it on hover or focus. |
413
+ | class | `string` | `''` | Extra Tailwind classes merged onto the row via `cn()` (last-wins). |
414
+
415
+ Slots: _default_
416
+
417
+ ### `<tolle-bubble-reactions>`
418
+
419
+ Inputs:
420
+
421
+ | Name | Type | Default | Description |
422
+ | --- | --- | --- | --- |
423
+ | reactions | `BubbleReaction[]` | `[]` | Reaction chips to render, in display order. |
424
+ | class | `string` | `''` | Extra Tailwind classes merged onto the row via `cn()` (last-wins). |
425
+
426
+ Outputs:
427
+
428
+ | Name | Payload | Description |
429
+ | --- | --- | --- |
430
+ | react | `BubbleReaction` | Emitted with the reaction whose chip was clicked. |
431
+
432
+ Slots: _default_
433
+
434
+ ## Button
435
+
436
+ - Install: `npx @tolle_/cli add button`
437
+ - Import: `import { ButtonComponent } from '@tolle_/tolle-ui';`
438
+
439
+ ### `<tolle-button>`
440
+
441
+ Inputs:
442
+
443
+ | Name | Type | Default | Description |
444
+ | --- | --- | --- | --- |
445
+ | class | `string` | `''` | Extra Tailwind classes merged onto the button via `cn()` (last-wins). |
446
+ | variant | `'default' | 'destructive' | 'outline' | 'secondary' | 'ghost' | 'link'` | `'default'` | Visual style of the button. |
447
+ | size | `'default' | 'xs' | 'sm' | 'lg' | 'icon-xs' | 'icon-sm' | 'icon' | 'icon-lg'` | `'default'` | Size of the button, including icon-only sizes. |
448
+ | type | `'button' | 'submit' | 'reset'` | `'button'` | Native button type. Defaults to 'button' so it never submits a form unexpectedly. |
449
+ | disabled | `boolean` | `false` | Disables the button and blocks pointer events. |
450
+ | busy | `boolean` | `false` | Shows a spinner, sets `aria-busy`, and prevents interaction while a task runs. |
451
+
452
+ Slots: _default_
453
+
454
+ Variants:
455
+ - `variant`: `default`, `destructive`, `outline`, `secondary`, `ghost`, `link` (default `default`)
456
+ - `size`: `default`, `xs`, `sm`, `lg`, `icon-xs`, `icon-sm`, `icon`, `icon-lg` (default `default`)
457
+ - `busy`: `true`
458
+
459
+ ## Button Group
460
+
461
+ - Install: `npx @tolle_/cli add button-group`
462
+ - Import: `import { ButtonGroupComponent } from '@tolle_/tolle-ui';`
463
+
464
+ ### `<tolle-button-group>`
465
+
466
+ Inputs:
467
+
468
+ | Name | Type | Default | Description |
469
+ | --- | --- | --- | --- |
470
+ | class | `string` | `''` | |
471
+
472
+ Slots: _default_
473
+
474
+ ## Calendar
475
+
476
+ - Install: `npx @tolle_/cli add calendar`
477
+ - Import: `import { CalendarComponent } from '@tolle_/tolle-ui';`
478
+
479
+ ### `<tolle-calendar>`
480
+
481
+ Inputs:
482
+
483
+ | Name | Type | Default | Description |
484
+ | --- | --- | --- | --- |
485
+ | class | `string` | `''` | |
486
+ | bordered | `boolean` | `true` | Renders the calendar's own border, background and shadow. Set `false` when
487
+ nesting inside a card/popover that already provides the chrome. |
488
+ | mode | `CalendarMode` | `'date'` | |
489
+ | disablePastDates | `boolean` | `false` | |
490
+ | showQuickActions | `boolean` | `true` | |
491
+ | minDate | `Date` | — | |
492
+ | maxDate | `Date` | — | |
493
+ | formatMonthFn | `(date: Date) => string` | — | |
494
+ | formatYearFn | `(date: Date) => string` | — | |
495
+ | formatDateFn | `(date: Date) => string` | — | |
496
+
497
+ Outputs:
498
+
499
+ | Name | Payload | Description |
500
+ | --- | --- | --- |
501
+ | dateSelect | `Date | null` | |
502
+
503
+ ## Card
504
+
505
+ - Install: `npx @tolle_/cli add card`
506
+ - Import: `import { CardComponent, CardHeaderComponent, CardTitleComponent, CardDescriptionComponent, CardContentComponent, CardFooterComponent } from '@tolle_/tolle-ui';`
507
+
508
+ ### `<tolle-card>`
509
+
510
+ Inputs:
511
+
512
+ | Name | Type | Default | Description |
513
+ | --- | --- | --- | --- |
514
+ | class | `string` | `''` | |
515
+
516
+ Slots: _default_
517
+
518
+ ### `<tolle-card-header>`
519
+
520
+ Inputs:
521
+
522
+ | Name | Type | Default | Description |
523
+ | --- | --- | --- | --- |
524
+ | class | `string` | `''` | |
525
+
526
+ Slots: _default_
527
+
528
+ ### `<tolle-card-title>`
529
+
530
+ Inputs:
531
+
532
+ | Name | Type | Default | Description |
533
+ | --- | --- | --- | --- |
534
+ | class | `string` | `''` | |
535
+
536
+ Slots: _default_
537
+
538
+ ### `<tolle-card-description>`
539
+
540
+ Inputs:
541
+
542
+ | Name | Type | Default | Description |
543
+ | --- | --- | --- | --- |
544
+ | class | `string` | `''` | |
545
+
546
+ Slots: _default_
547
+
548
+ ### `<tolle-card-content>`
549
+
550
+ Inputs:
551
+
552
+ | Name | Type | Default | Description |
553
+ | --- | --- | --- | --- |
554
+ | class | `string` | `''` | |
555
+
556
+ Slots: _default_
557
+
558
+ ### `<tolle-card-footer>`
559
+
560
+ Inputs:
561
+
562
+ | Name | Type | Default | Description |
563
+ | --- | --- | --- | --- |
564
+ | class | `string` | `''` | |
565
+
566
+ Slots: _default_
567
+
568
+ ## Carousel
569
+
570
+ - Install: `npx @tolle_/cli add carousel`
571
+ - Import: `import { CarouselComponent, CarouselContentDirective, CarouselContainerDirective, CarouselItemDirective, CarouselPreviousDirective, CarouselNextDirective } from '@tolle_/tolle-ui';`
572
+
573
+ ### `<tolle-carousel>`
574
+
575
+ Inputs:
576
+
577
+ | Name | Type | Default | Description |
578
+ | --- | --- | --- | --- |
579
+ | opts | `EmblaOptionsType` | `{}` | |
580
+ | plugins | `EmblaPluginType[]` | `[]` | |
581
+ | orientation | `'horizontal' | 'vertical'` | `'horizontal'` | |
582
+
583
+ Outputs:
584
+
585
+ | Name | Payload | Description |
586
+ | --- | --- | --- |
587
+ | api | `EmblaCarouselType` | |
588
+
589
+ Slots: _default_
590
+
591
+ ### `<[tolleCarouselContent]>` (directive)
592
+
593
+ ### `<[tolleCarouselContainer]>` (directive)
594
+
595
+ ### `<[tolleCarouselItem]>` (directive)
596
+
597
+ ### `<[tolleCarouselPrevious]>` (directive)
598
+
599
+ ### `<[tolleCarouselNext]>` (directive)
600
+
601
+ ## Category Bar
602
+
603
+ - Install: `npx @tolle_/cli add category-bar`
604
+ - Import: `import { CategoryBarComponent } from '@tolle_/tolle-ui';`
605
+
606
+ ### `<tolle-category-bar>`
607
+
608
+ Inputs:
609
+
610
+ | Name | Type | Default | Description |
611
+ | --- | --- | --- | --- |
612
+ | values | `number[]` | `[]` | Width of each segment. Values that are not finite and greater than zero are dropped. |
613
+ | labels | `string[]` | `[]` | Name for each segment, used in the accessible summary and as a title tooltip. |
614
+ | colors | `string[]` | `[]` | Paint for each segment, by index. Falls back to the chart palette --chart-1 through --chart-5. |
615
+ | markerValue | `number | null` | `null` | Position of the pointer, 0-100 on the same scale the segments sum to. Omit to draw no pointer. |
616
+ | ariaLabel | `string` | `''` | Accessible name, prefixed onto the sr-only summary of segments and marker. |
617
+ | class | `string` | `''` | Extra Tailwind classes merged onto the bar via `cn()` (last-wins). |
618
+
619
+ ## Chain Of Thought
620
+
621
+ - Install: `npx @tolle_/cli add chain-of-thought`
622
+ - Import: `import { ChainOfThoughtComponent, ChainOfThoughtHeaderComponent, ChainOfThoughtContentComponent, ChainOfThoughtStepComponent, ChainOfThoughtSearchResultsComponent, ChainOfThoughtSearchResultComponent } from '@tolle_/tolle-ui';`
623
+
624
+ ### `<tolle-chain-of-thought>`
625
+
626
+ Inputs:
627
+
628
+ | Name | Type | Default | Description |
629
+ | --- | --- | --- | --- |
630
+ | open | `boolean` | `false` | Whether the reasoning steps are expanded. |
631
+ | size | `'sm' | 'default'` | `'default'` | Text scale of the whole trace. |
632
+ | class | `string` | `''` | Extra Tailwind classes merged onto the trace via `cn()` (last-wins). |
633
+
634
+ Outputs:
635
+
636
+ | Name | Payload | Description |
637
+ | --- | --- | --- |
638
+ | openChange | `boolean` | Emitted with the new expanded state whenever the trace opens or closes. |
639
+
640
+ Slots: _default_
641
+
642
+ Variants:
643
+ - `size`: `sm`, `default` (default `default`)
644
+
645
+ ### `<tolle-chain-of-thought-header>`
646
+
647
+ Inputs:
648
+
649
+ | Name | Type | Default | Description |
650
+ | --- | --- | --- | --- |
651
+ | label | `string` | `'Chain of Thought'` | Text shown in the header. |
652
+ | class | `string` | `''` | Extra Tailwind classes merged onto the header via `cn()` (last-wins). |
653
+
654
+ Slots: _default_
655
+
656
+ ### `<tolle-chain-of-thought-content>`
657
+
658
+ Inputs:
659
+
660
+ | Name | Type | Default | Description |
661
+ | --- | --- | --- | --- |
662
+ | class | `string` | `''` | Extra Tailwind classes merged onto the content via `cn()` (last-wins). |
663
+
664
+ Slots: _default_
665
+
666
+ ### `<tolle-chain-of-thought-step>`
667
+
668
+ Inputs:
669
+
670
+ | Name | Type | Default | Description |
671
+ | --- | --- | --- | --- |
672
+ | label | `string` | `''` | Text describing what happened in this step. |
673
+ | status | `ChainOfThoughtStepStatus` | `'complete'` | Progress of this step; drives the marker colour. |
674
+ | icon | `string` | `'ri-checkbox-blank-circle-fill'` | Remixicon class shown inside the step marker. |
675
+ | class | `string` | `''` | Extra Tailwind classes merged onto the step via `cn()` (last-wins). |
676
+
677
+ Slots: _default_
678
+
679
+ ### `<tolle-chain-of-thought-search-results>`
680
+
681
+ Inputs:
682
+
683
+ | Name | Type | Default | Description |
684
+ | --- | --- | --- | --- |
685
+ | class | `string` | `''` | Extra Tailwind classes merged onto the results row via `cn()` (last-wins). |
686
+
687
+ Slots: _default_
688
+
689
+ ### `<tolle-chain-of-thought-search-result>`
690
+
691
+ Inputs:
692
+
693
+ | Name | Type | Default | Description |
694
+ | --- | --- | --- | --- |
695
+ | icon | `string` | `''` | Optional remixicon class shown before the label. |
696
+ | class | `string` | `''` | Extra Tailwind classes merged onto the chip via `cn()` (last-wins). |
697
+
698
+ Slots: _default_
699
+
700
+ ## Chart
701
+
702
+ - Install: `npx @tolle_/cli add chart`
703
+ - Import: `import { ChartChild, ChartTooltipComponent, ChartLegendComponent, ChartTableComponent, ChartComponent, ChartGridComponent, ChartXAxisComponent, ChartYAxisComponent, ChartLineComponent, ChartAreaComponent, ChartBarComponent } from '@tolle_/tolle-ui';`
704
+
705
+ ### `<ChartChild>` (directive)
706
+
707
+ ### `<tolle-chart-tooltip>`
708
+
709
+ Inputs:
710
+
711
+ | Name | Type | Default | Description |
712
+ | --- | --- | --- | --- |
713
+ | offset | `number` | `12` | Distance in px the tooltip sits from the crosshair. |
714
+ | estimatedWidth | `number` | `160` | Assumed tooltip width in px, used to flip it near the right edge. |
715
+ | class | `string` | `''` | Extra Tailwind classes merged onto the tooltip via `cn()` (last-wins). |
716
+
717
+ ### `<tolle-chart-legend>`
718
+
719
+ Inputs:
720
+
721
+ | Name | Type | Default | Description |
722
+ | --- | --- | --- | --- |
723
+ | align | `'start' | 'center' | 'end'` | `'center'` | Horizontal alignment of the legend row. |
724
+ | size | `'sm' | 'default'` | `'default'` | Text size of the legend. |
725
+ | class | `string` | `''` | Extra Tailwind classes merged onto the legend via `cn()` (last-wins). |
726
+
727
+ Variants:
728
+ - `align`: `start`, `center`, `end` (default `center`)
729
+ - `size`: `sm`, `default` (default `default`)
730
+
731
+ ### `<tolle-chart-table>`
732
+
733
+ Inputs:
734
+
735
+ | Name | Type | Default | Description |
736
+ | --- | --- | --- | --- |
737
+ | visible | `boolean` | `false` | Shows the table instead of hiding it from sighted readers. |
738
+ | tableId | `string` | `''` | Id applied to the wrapper, for the chart's `aria-describedby`. |
739
+ | xHeader | `string` | `'Category'` | Column header for the x category. |
740
+ | caption | `string` | `'Chart data'` | Accessible caption for the table. |
741
+ | class | `string` | `''` | Extra Tailwind classes merged onto the table via `cn()` (last-wins). |
742
+
743
+ ### `<tolle-chart>`
744
+
745
+ Inputs:
746
+
747
+ | Name | Type | Default | Description |
748
+ | --- | --- | --- | --- |
749
+ | data | `Record<string, any>[]` | `[]` | Rows to plot, in x order. |
750
+ | series | `ChartSeries[]` | `[]` | Series to draw, in the order they take palette steps `--chart-1`..`--chart-5`. |
751
+ | xKey | `string` | `''` | Row key holding each row's x category label. |
752
+ | height | `number` | `260` | Height of the chart in px. |
753
+ | margin | `ChartMargin` | `{ top: 8, right: 8, bottom: 24, left: 44 }` | Space reserved around the plot for axis labels. |
754
+ | ariaLabel | `string` | `''` | Accessible name for the chart, used as the svg `<title>`. |
755
+ | description | `string` | `''` | Longer summary used as the svg `<desc>`. Falls back to `ariaLabel`. |
756
+ | stacked | `boolean` | `false` | Stacks marks on a shared baseline instead of grouping them. |
757
+ | orientation | `ChartOrientation` | `'vertical'` | Which physical axis carries the category vs the value. Only bars support
758
+ 'horizontal' — line/area marks stay vertical regardless. |
759
+ | hover | `boolean` | `true` | Renders the crosshair, hit layer and shared tooltip. |
760
+ | showTable | `boolean` | `false` | Shows the data table instead of leaving it visually hidden. |
761
+ | xHeader | `string` | `'Category'` | Column header the table fallback gives the x category. |
762
+ | variant | `'default' | 'card'` | `'default'` | Visual treatment of the chart frame. |
763
+ | density | `'default' | 'compact'` | `'default'` | Text density of the chart chrome. |
764
+ | class | `string` | `''` | Extra Tailwind classes merged onto the chart via `cn()` (last-wins). |
765
+
766
+ Outputs:
767
+
768
+ | Name | Payload | Description |
769
+ | --- | --- | --- |
770
+ | activeIndexChange | `number | null` | Emitted with the hovered row index, or null when the pointer leaves. |
771
+
772
+ Slots: _default_
773
+
774
+ Variants:
775
+ - `variant`: `default`, `card` (default `default`)
776
+ - `density`: `default`, `compact` (default `default`)
777
+
778
+ ### `<svg:g[tolle-chart-grid]>`
779
+
780
+ Inputs:
781
+
782
+ | Name | Type | Default | Description |
783
+ | --- | --- | --- | --- |
784
+ | vertical | `boolean` | `false` | Also draws a rule at every category position. |
785
+ | class | `string` | `''` | Extra Tailwind classes merged onto each rule via `cn()` (last-wins). |
786
+
787
+ ### `<svg:g[tolle-chart-x-axis]>`
788
+
789
+ Inputs:
790
+
791
+ | Name | Type | Default | Description |
792
+ | --- | --- | --- | --- |
793
+ | charWidth | `number` | `7` | Approximate px per character, used to decide when category labels would
794
+ collide. Only consulted in the vertical orientation. |
795
+ | class | `string` | `''` | Extra Tailwind classes merged onto each label via `cn()` (last-wins). |
796
+
797
+ ### `<svg:g[tolle-chart-y-axis]>`
798
+
799
+ Inputs:
800
+
801
+ | Name | Type | Default | Description |
802
+ | --- | --- | --- | --- |
803
+ | offset | `number` | `8` | Gap in px between the labels and the plot edge. |
804
+ | class | `string` | `''` | Extra Tailwind classes merged onto each label via `cn()` (last-wins). |
805
+
806
+ ### `<svg:g[tolle-chart-line]>`
807
+
808
+ Inputs:
809
+
810
+ | Name | Type | Default | Description |
811
+ | --- | --- | --- | --- |
812
+ | seriesKey | `string` | `''` | Key of the series to draw. |
813
+ | curve | `'linear' | 'smooth'` | `'linear'` | Interpolation between points; smooth is monotone cubic, so it never overshoots. |
814
+ | showDots | `boolean` | `false` | Draws a marker at every point. |
815
+ | dotRadius | `number` | `4` | Marker radius in px; 4 gives the 8px minimum diameter. |
816
+ | class | `string` | `''` | Extra Tailwind classes merged onto the path via `cn()` (last-wins). |
817
+
818
+ ### `<svg:g[tolle-chart-area]>`
819
+
820
+ Inputs:
821
+
822
+ | Name | Type | Default | Description |
823
+ | --- | --- | --- | --- |
824
+ | seriesKey | `string` | `''` | Key of the series to draw. |
825
+ | curve | `'linear' | 'smooth'` | `'linear'` | Interpolation between points. |
826
+ | fillOpacity | `number` | `0.1` | Opacity of the fill — a wash, never a saturated block. |
827
+ | class | `string` | `''` | Extra Tailwind classes merged onto the stroke via `cn()` (last-wins). |
828
+
829
+ ### `<svg:g[tolle-chart-bar]>`
830
+
831
+ Inputs:
832
+
833
+ | Name | Type | Default | Description |
834
+ | --- | --- | --- | --- |
835
+ | seriesKey | `string` | `''` | Key of the series to draw. |
836
+ | radius | `number` | `4` | Corner radius on the data end in px. |
837
+ | maxWidth | `number` | `24` | Largest bar thickness in px; a wider band becomes air, not a fatter bar. |
838
+ | gap | `number` | `2` | Gap in px between adjacent bars and between stacked segments. |
839
+ | class | `string` | `''` | Extra Tailwind classes merged onto each bar via `cn()` (last-wins). |
840
+
841
+ ## Chart Pie
842
+
843
+ - Install: `npx @tolle_/cli add chart-pie`
844
+ - Import: `import { ChartPieComponent } from '@tolle_/tolle-ui';`
845
+
846
+ ### `<tolle-chart-pie>`
847
+
848
+ Inputs:
849
+
850
+ | Name | Type | Default | Description |
851
+ | --- | --- | --- | --- |
852
+ | data | `Record<string, any>[]` | `[]` | Rows to plot, one slice each. |
853
+ | valueKey | `string` | `'value'` | Row key holding each slice's numeric value. |
854
+ | labelKey | `string` | `'label'` | Row key holding each slice's label. |
855
+ | donut | `boolean` | `false` | Cuts a hole in the middle, making it a donut. |
856
+ | innerRadius | `number` | `0.6` | Hole size as a fraction of the outer radius, used when `donut` is set. |
857
+ | size | `number` | `240` | Width and height of the square plot in px. |
858
+ | gap | `number` | `2` | Angular gap between slices, expressed in px of arc at the outer edge. |
859
+ | ariaLabel | `string` | `''` | Accessible name for the chart, used as the svg `<title>`. |
860
+ | description | `string` | `''` | Longer summary used as the svg `<desc>`. Falls back to `ariaLabel`. |
861
+ | showTable | `boolean` | `false` | Shows the data table instead of leaving it visually hidden. |
862
+ | labelHeader | `string` | `'Category'` | Column header the table fallback gives the label column. |
863
+ | valueHeader | `string` | `'Value'` | Column header the table fallback gives the value column. |
864
+ | variant | `'default' | 'card'` | `'default'` | Visual treatment of the chart frame. |
865
+ | class | `string` | `''` | Extra Tailwind classes merged onto the chart via `cn()` (last-wins). |
866
+
867
+ Outputs:
868
+
869
+ | Name | Payload | Description |
870
+ | --- | --- | --- |
871
+ | activeIndexChange | `number | null` | Emitted with the hovered slice index, or null when the pointer leaves. |
872
+
873
+ Variants:
874
+ - `variant`: `default`, `card` (default `default`)
875
+
876
+ ## Chart Spark
877
+
878
+ - Install: `npx @tolle_/cli add chart-spark`
879
+ - Import: `import { ChartSparkComponent } from '@tolle_/tolle-ui';`
880
+
881
+ ### `<tolle-chart-spark>`
882
+
883
+ Inputs:
884
+
885
+ | Name | Type | Default | Description |
886
+ | --- | --- | --- | --- |
887
+ | data | `Record<string, any>[]` | `[]` | Rows to plot, in x order. |
888
+ | valueKey | `string` | `'value'` | Row key holding each row's numeric value. |
889
+ | xKey | `string` | `''` | Row key holding each row's x position. Only matters once `hover` is on. |
890
+ | type | `'line' | 'area' | 'bar'` | `'line'` | Which mark to draw. |
891
+ | curve | `'linear' | 'smooth'` | `'linear'` | Interpolation for line/area. |
892
+ | maxBarWidth | `number` | `6` | Largest bar thickness in px, used when `type` is 'bar'. |
893
+ | height | `number` | `32` | Height in px. |
894
+ | hover | `boolean` | `false` | Renders the crosshair, hit layer and tooltip. |
895
+ | showTable | `boolean` | `false` | Shows the data table instead of leaving it visually hidden. |
896
+ | ariaLabel | `string` | `''` | Accessible name, used as the svg <title>. |
897
+ | description | `string` | `''` | Longer summary used as the svg <desc>. Falls back to `ariaLabel`. |
898
+ | margin | `ChartMargin` | `{ top: 2, right: 2, bottom: 2, left: 2 }` | Space reserved around the plot — a sparkline has no axis labels to fit. |
899
+ | class | `string` | `''` | Extra Tailwind classes merged onto the chart via `cn()` (last-wins). |
900
+
901
+ ## Checkbox
902
+
903
+ - Install: `npx @tolle_/cli add checkbox`
904
+ - Import: `import { CheckboxComponent } from '@tolle_/tolle-ui';`
905
+
906
+ ### `<tolle-checkbox>`
907
+
908
+ Inputs:
909
+
910
+ | Name | Type | Default | Description |
911
+ | --- | --- | --- | --- |
912
+ | class | `string` | `''` | Extra Tailwind classes merged onto the checkbox via `cn()` (last-wins). |
913
+ | disabled | `boolean` | `false` | Disables the checkbox and blocks toggling. |
914
+ | size | `'xs' | 'sm' | 'default' | 'lg'` | `'default'` | Size of the checkbox. |
915
+
916
+ Variants:
917
+ - `size`: `xs`, `sm`, `default`, `lg` (default `default`)
918
+ - `checked`: `true`, `false` (default `false`)
919
+
920
+ ## Checkpoint
921
+
922
+ - Install: `npx @tolle_/cli add checkpoint`
923
+ - Import: `import { CheckpointComponent } from '@tolle_/tolle-ui';`
924
+
925
+ ### `<tolle-checkpoint>`
926
+
927
+ Inputs:
928
+
929
+ | Name | Type | Default | Description |
930
+ | --- | --- | --- | --- |
931
+ | label | `string` | `'Checkpoint'` | Name of the checkpoint shown in the pill. |
932
+ | timestamp | `string` | `''` | Pre-formatted time shown after the label. |
933
+ | active | `boolean` | `false` | Highlights this checkpoint as the one currently restored to. |
934
+ | disabled | `boolean` | `false` | Prevents the pill from being activated. |
935
+ | restoreLabel | `string` | `'Restore checkpoint'` | Verb used to build the pill's accessible name. |
936
+ | ariaLabel | `string` | `''` | Overrides the pill's accessible name entirely. |
937
+ | icon | `string` | `'ri-history-line'` | Remixicon class shown before the label. |
938
+ | size | `'sm' | 'default'` | `'default'` | Size of the pill. |
939
+ | class | `string` | `''` | Extra Tailwind classes merged onto the row via `cn()` (last-wins). |
940
+
941
+ Outputs:
942
+
943
+ | Name | Payload | Description |
944
+ | --- | --- | --- |
945
+ | restore | `void` | Emitted when the user asks to restore this checkpoint. |
946
+
947
+ Slots: _default_
948
+
949
+ Variants:
950
+ - `active`: `true`, `false` (default `false`)
951
+ - `size`: `sm`, `default` (default `default`)
952
+
953
+ ## Collapsible
954
+
955
+ - Install: `npx @tolle_/cli add collapsible`
956
+ - Import: `import { CollapsibleComponent, CollapsibleTriggerComponent, CollapsibleContentComponent } from '@tolle_/tolle-ui';`
957
+
958
+ ### `<tolle-collapsible>`
959
+
960
+ Inputs:
961
+
962
+ | Name | Type | Default | Description |
963
+ | --- | --- | --- | --- |
964
+ | class | `string` | `''` | |
965
+ | open | `boolean` | — | |
966
+
967
+ Outputs:
968
+
969
+ | Name | Payload | Description |
970
+ | --- | --- | --- |
971
+ | openChange | `boolean` | |
972
+
973
+ Slots: _default_
974
+
975
+ ### `<tolle-collapsible-trigger>`
976
+
977
+ Inputs:
978
+
979
+ | Name | Type | Default | Description |
980
+ | --- | --- | --- | --- |
981
+ | class | `string` | `''` | |
982
+
983
+ Slots: _default_
984
+
985
+ ### `<tolle-collapsible-content>`
986
+
987
+ Inputs:
988
+
989
+ | Name | Type | Default | Description |
990
+ | --- | --- | --- | --- |
991
+ | class | `string` | `''` | |
992
+
993
+ Slots: _default_
994
+
995
+ ## Combobox
996
+
997
+ - Install: `npx @tolle_/cli add combobox`
998
+ - Import: `import { ComboboxComponent } from '@tolle_/tolle-ui';`
999
+
1000
+ ### `<tolle-combobox>`
1001
+
1002
+ Inputs:
1003
+
1004
+ | Name | Type | Default | Description |
1005
+ | --- | --- | --- | --- |
1006
+ | options | `ComboboxOption[]` | `[]` | Options to choose from. |
1007
+ | placeholder | `string` | `'Select an option…'` | Text shown on the trigger when nothing is selected. |
1008
+ | searchPlaceholder | `string` | `'Search…'` | Placeholder inside the search box. |
1009
+ | emptyMessage | `string` | `'No results found.'` | Message shown when the query matches no option. |
1010
+ | size | `'xs' | 'sm' | 'default' | 'lg'` | `'default'` | Height and text size of the trigger. |
1011
+ | invalid | `boolean` | `false` | Applies the destructive border and focus ring. |
1012
+ | disabled | `boolean` | `false` | Disables the control. |
1013
+ | shouldFilter | `boolean` | `true` | Set false to filter the options yourself, e.g. server-side. |
1014
+ | closeOnSelect | `boolean` | `true` | Close the panel after a value is chosen. |
1015
+ | placement | `'bottom-start' | 'bottom-end' | 'top-start' | 'top-end'` | `'bottom-start'` | Where the panel opens relative to the trigger. |
1016
+ | ariaLabel | `string` | `''` | Accessible name when there is no associated visible label. |
1017
+ | class | `string` | `''` | Extra Tailwind classes merged onto the trigger via `cn()` (last-wins). |
1018
+
1019
+ Outputs:
1020
+
1021
+ | Name | Payload | Description |
1022
+ | --- | --- | --- |
1023
+ | valueChange | `any` | Emitted with the chosen value whenever the selection changes. |
1024
+ | searchChange | `string` | Emitted with the query text as the user searches. |
1025
+ | opened | `void` | Emitted when the panel opens. |
1026
+ | closed | `void` | Emitted when the panel closes. |
1027
+
1028
+ Variants:
1029
+ - `size`: `xs`, `sm`, `default`, `lg` (default `default`)
1030
+ - `invalid`: `true`, `false` (default `false`)
1031
+
1032
+ ## Command
1033
+
1034
+ - Install: `npx @tolle_/cli add command`
1035
+ - Import: `import { CommandComponent, CommandInputComponent, CommandListComponent, CommandEmptyComponent, CommandGroupComponent, CommandItemComponent, CommandSeparatorComponent, CommandShortcutComponent } from '@tolle_/tolle-ui';`
1036
+
1037
+ ### `<tolle-command>`
1038
+
1039
+ Inputs:
1040
+
1041
+ | Name | Type | Default | Description |
1042
+ | --- | --- | --- | --- |
1043
+ | shouldFilter | `boolean` | `true` | Set false to keep every item visible and filter the list yourself —
1044
+ for server-side or fuzzy search. |
1045
+ | ariaLabel | `string` | `''` | Accessible name for the command menu. |
1046
+ | class | `string` | `''` | Extra Tailwind classes merged onto the menu via `cn()` (last-wins). |
1047
+
1048
+ Outputs:
1049
+
1050
+ | Name | Payload | Description |
1051
+ | --- | --- | --- |
1052
+ | selected | `any` | Emitted with the chosen item's `value` when the user selects one. |
1053
+ | queryChange | `string` | Emitted with the query text whenever the search input changes. |
1054
+
1055
+ Slots: _default_
1056
+
1057
+ ### `<tolle-command-input>`
1058
+
1059
+ Inputs:
1060
+
1061
+ | Name | Type | Default | Description |
1062
+ | --- | --- | --- | --- |
1063
+ | placeholder | `string` | `'Type a command or search…'` | Placeholder shown when the query is empty. |
1064
+ | ariaLabel | `string` | `''` | Accessible name for the search box. |
1065
+ | class | `string` | `''` | Extra Tailwind classes merged onto the search row via `cn()` (last-wins). |
1066
+ | inputClass | `string` | `''` | Extra Tailwind classes merged onto the `<input>` itself via `cn()` (last-wins). |
1067
+
1068
+ ### `<tolle-command-list>`
1069
+
1070
+ Inputs:
1071
+
1072
+ | Name | Type | Default | Description |
1073
+ | --- | --- | --- | --- |
1074
+ | ariaLabel | `string` | `''` | Accessible name for the list. |
1075
+ | class | `string` | `''` | Extra Tailwind classes merged onto the list via `cn()` (last-wins). |
1076
+
1077
+ Slots: _default_
1078
+
1079
+ ### `<tolle-command-empty>`
1080
+
1081
+ Inputs:
1082
+
1083
+ | Name | Type | Default | Description |
1084
+ | --- | --- | --- | --- |
1085
+ | class | `string` | `''` | Extra Tailwind classes merged onto the empty state via `cn()` (last-wins). |
1086
+
1087
+ Slots: _default_
1088
+
1089
+ ### `<tolle-command-group>`
1090
+
1091
+ Inputs:
1092
+
1093
+ | Name | Type | Default | Description |
1094
+ | --- | --- | --- | --- |
1095
+ | heading | `string` | `''` | Section heading. |
1096
+ | class | `string` | `''` | Extra Tailwind classes merged onto the group via `cn()` (last-wins). |
1097
+
1098
+ Slots: _default_
1099
+
1100
+ ### `<tolle-command-item>`
1101
+
1102
+ Inputs:
1103
+
1104
+ | Name | Type | Default | Description |
1105
+ | --- | --- | --- | --- |
1106
+ | value | `any` | `null` | Value emitted from the menu's `selected` output when this row is chosen. |
1107
+ | label | `string` | `''` | Text matched against the query. Defaults to `value` when omitted — set it
1108
+ explicitly whenever the row's visible text differs from its value. |
1109
+ | keywords | `string[]` | `[]` | Extra terms that should also match this row, e.g. synonyms. |
1110
+ | disabled | `boolean` | `false` | Makes the row unselectable and skipped by the arrow keys. |
1111
+ | class | `string` | `''` | Extra Tailwind classes merged onto the row via `cn()` (last-wins). |
1112
+
1113
+ Outputs:
1114
+
1115
+ | Name | Payload | Description |
1116
+ | --- | --- | --- |
1117
+ | selected | `any` | Emitted when this specific row is chosen. |
1118
+
1119
+ Slots: _default_
1120
+
1121
+ ### `<tolle-command-separator>`
1122
+
1123
+ Inputs:
1124
+
1125
+ | Name | Type | Default | Description |
1126
+ | --- | --- | --- | --- |
1127
+ | class | `string` | `''` | Extra Tailwind classes merged onto the separator via `cn()` (last-wins). |
1128
+
1129
+ ### `<tolle-command-shortcut>`
1130
+
1131
+ Inputs:
1132
+
1133
+ | Name | Type | Default | Description |
1134
+ | --- | --- | --- | --- |
1135
+ | class | `string` | `''` | Extra Tailwind classes merged onto the shortcut via `cn()` (last-wins). |
1136
+
1137
+ Slots: _default_
1138
+
1139
+ ## Command Dialog
1140
+
1141
+ - Install: `npx @tolle_/cli add command-dialog`
1142
+ - Import: `import { CommandDialogComponent } from '@tolle_/tolle-ui';`
1143
+
1144
+ ### `<tolle-command-dialog>`
1145
+
1146
+ Inputs:
1147
+
1148
+ | Name | Type | Default | Description |
1149
+ | --- | --- | --- | --- |
1150
+ | open | `boolean` | `false` | Whether the palette is visible. Supports two-way binding via `[(open)]`. |
1151
+ | shortcut | `string` | `'mod+k'` | Global hotkey that toggles the palette, as `mod+key` where `mod` maps to ⌘
1152
+ on macOS and Ctrl elsewhere. Set to `''` to disable the binding. |
1153
+ | closeOnBackdrop | `boolean` | `true` | Close the palette when the backdrop is clicked. |
1154
+ | ariaLabel | `string` | `'Command palette'` | Accessible name for the dialog. |
1155
+ | class | `string` | `''` | Extra Tailwind classes merged onto the panel via `cn()` (last-wins). |
1156
+
1157
+ Outputs:
1158
+
1159
+ | Name | Payload | Description |
1160
+ | --- | --- | --- |
1161
+ | openChange | `boolean` | Two-way binding partner for `open`. |
1162
+ | opened | `void` | Emitted when the palette opens. |
1163
+ | closed | `void` | Emitted when the palette closes. |
1164
+
1165
+ Slots: _default_
1166
+
1167
+ ## Confirmation
1168
+
1169
+ - Install: `npx @tolle_/cli add confirmation`
1170
+ - Import: `import { ConfirmationComponent } from '@tolle_/tolle-ui';`
1171
+
1172
+ ### `<tolle-confirmation>`
1173
+
1174
+ Inputs:
1175
+
1176
+ | Name | Type | Default | Description |
1177
+ | --- | --- | --- | --- |
1178
+ | title | `string` | `''` | Headline describing the action awaiting approval. |
1179
+ | description | `string` | `''` | Supporting detail shown under the title. |
1180
+ | confirmLabel | `string` | `'Approve'` | Label of the approve button. |
1181
+ | cancelLabel | `string` | `'Deny'` | Label of the deny button. |
1182
+ | confirmedLabel | `string` | `'Approved'` | Text shown in the resolved row after approval. |
1183
+ | cancelledLabel | `string` | `'Denied'` | Text shown in the resolved row after denial. |
1184
+ | state | `ConfirmationState` | `'pending'` | Whether the prompt is still open, and how it was answered. |
1185
+ | disabled | `boolean` | `false` | Blocks both buttons without resolving the prompt. |
1186
+ | class | `string` | `''` | Extra Tailwind classes merged onto the prompt via `cn()` (last-wins). |
1187
+
1188
+ Outputs:
1189
+
1190
+ | Name | Payload | Description |
1191
+ | --- | --- | --- |
1192
+ | confirmed | `void` | Emitted when the user approves the action. |
1193
+ | cancelled | `void` | Emitted when the user denies the action. |
1194
+
1195
+ Slots: _default_
1196
+
1197
+ ## Context
1198
+
1199
+ - Install: `npx @tolle_/cli add context`
1200
+ - Import: `import { ContextComponent, ContextTriggerComponent, ContextContentComponent } from '@tolle_/tolle-ui';`
1201
+
1202
+ ### `<tolle-context>`
1203
+
1204
+ Inputs:
1205
+
1206
+ | Name | Type | Default | Description |
1207
+ | --- | --- | --- | --- |
1208
+ | used | `number` | `0` | Tokens consumed so far. |
1209
+ | total | `number` | `0` | Size of the context window in tokens. |
1210
+ | inputTokens | `number | null` | `null` | Tokens spent on the prompt, shown in the breakdown. |
1211
+ | outputTokens | `number | null` | `null` | Tokens produced by the model, shown in the breakdown. |
1212
+ | cost | `number | null` | `null` | Spend for this context, shown in the breakdown. |
1213
+ | warningThreshold | `number` | `0.75` | Ratio at or above which the indicator turns warning-coloured. |
1214
+ | criticalThreshold | `number` | `0.9` | Ratio at or above which the indicator turns destructive-coloured. |
1215
+ | placement | `'top' | 'bottom' | 'left' | 'right'` | `'top'` | Side of the indicator the breakdown opens on. |
1216
+ | openDelay | `number` | `150` | Milliseconds to wait before opening the breakdown. |
1217
+ | closeDelay | `number` | `200` | Milliseconds to wait before closing the breakdown. |
1218
+ | class | `string` | `''` | Extra Tailwind classes merged onto the indicator via `cn()` (last-wins). |
1219
+
1220
+ ### `<tolle-context-trigger>`
1221
+
1222
+ Inputs:
1223
+
1224
+ | Name | Type | Default | Description |
1225
+ | --- | --- | --- | --- |
1226
+ | class | `string` | `''` | Extra Tailwind classes merged onto the trigger via `cn()` (last-wins). |
1227
+
1228
+ Slots: _default_
1229
+
1230
+ ### `<tolle-context-content>`
1231
+
1232
+ Inputs:
1233
+
1234
+ | Name | Type | Default | Description |
1235
+ | --- | --- | --- | --- |
1236
+ | currency | `string` | `'$'` | Symbol prefixed to the cost figure. |
1237
+ | class | `string` | `''` | Extra Tailwind classes merged onto the breakdown via `cn()` (last-wins). |
1238
+
1239
+ Slots: _default_
1240
+
1241
+ ## Context Menu
1242
+
1243
+ - Install: `npx @tolle_/cli add context-menu`
1244
+ - Import: `import { ContextMenuComponent } from '@tolle_/tolle-ui';`
1245
+
1246
+ ### `<tolle-context-menu>`
1247
+
1248
+ ## Context Menu Trigger
1249
+
1250
+ - Install: `npx @tolle_/cli add context-menu-trigger`
1251
+ - Import: `import { ContextMenuTriggerDirective } from '@tolle_/tolle-ui';`
1252
+
1253
+ ### `<[tolleContextMenuTrigger]>` (directive)
1254
+
1255
+ Inputs:
1256
+
1257
+ | Name | Type | Default | Description |
1258
+ | --- | --- | --- | --- |
1259
+ | items | `ContextMenuItem[]` | `[]` | |
1260
+
1261
+ Outputs:
1262
+
1263
+ | Name | Payload | Description |
1264
+ | --- | --- | --- |
1265
+ | action | `string` | |
1266
+
1267
+ ## Conversation
1268
+
1269
+ - Install: `npx @tolle_/cli add conversation`
1270
+ - Import: `import { ConversationComponent, ConversationContentComponent, ConversationEmptyStateComponent, ConversationScrollButtonComponent } from '@tolle_/tolle-ui';`
1271
+
1272
+ ### `<tolle-conversation>`
1273
+
1274
+ Inputs:
1275
+
1276
+ | Name | Type | Default | Description |
1277
+ | --- | --- | --- | --- |
1278
+ | size | `'sm' | 'default' | 'lg' | 'full'` | `'default'` | Height preset for the scroll region. |
1279
+ | autoScroll | `boolean` | `true` | Keeps the newest message in view while the reader is already at the bottom. |
1280
+ | empty | `boolean` | `false` | Set true before the first message so the empty state shows. |
1281
+ | threshold | `number` | `32` | Distance from the bottom, in px, still counted as "at the bottom". |
1282
+ | ariaLabel | `string` | `''` | Accessible name for the transcript. |
1283
+ | class | `string` | `''` | Extra Tailwind classes merged onto the transcript via `cn()` (last-wins). |
1284
+ | viewportClass | `string` | `''` | Extra Tailwind classes merged onto the scrolling viewport via `cn()` (last-wins). |
1285
+
1286
+ Outputs:
1287
+
1288
+ | Name | Payload | Description |
1289
+ | --- | --- | --- |
1290
+ | atBottomChange | `boolean` | Emitted whenever the transcript becomes pinned to, or leaves, the bottom. |
1291
+
1292
+ Slots: _default_, `tolle-conversation-scroll-button`
1293
+
1294
+ Variants:
1295
+ - `size`: `sm`, `default`, `lg`, `full` (default `default`)
1296
+
1297
+ ### `<tolle-conversation-content>`
1298
+
1299
+ Inputs:
1300
+
1301
+ | Name | Type | Default | Description |
1302
+ | --- | --- | --- | --- |
1303
+ | class | `string` | `''` | Extra Tailwind classes merged onto the stack via `cn()` (last-wins). |
1304
+
1305
+ Slots: _default_
1306
+
1307
+ ### `<tolle-conversation-empty-state>`
1308
+
1309
+ Inputs:
1310
+
1311
+ | Name | Type | Default | Description |
1312
+ | --- | --- | --- | --- |
1313
+ | icon | `string` | `'ri-chat-3-line'` | Remixicon class for the illustration. |
1314
+ | title | `string` | `'No messages yet'` | Headline shown above the description. |
1315
+ | description | `string` | `'Start the conversation by sending a message.'` | Supporting copy under the headline. |
1316
+ | class | `string` | `''` | Extra Tailwind classes merged onto the empty state via `cn()` (last-wins). |
1317
+
1318
+ Slots: _default_
1319
+
1320
+ ### `<tolle-conversation-scroll-button>`
1321
+
1322
+ Inputs:
1323
+
1324
+ | Name | Type | Default | Description |
1325
+ | --- | --- | --- | --- |
1326
+ | variant | `'default' | 'secondary' | 'outline'` | `'outline'` | Visual style of the button. |
1327
+ | size | `'sm' | 'default' | 'icon'` | `'default'` | Size of the button; 'icon' drops the text label. |
1328
+ | label | `string` | `'Jump to latest'` | Button text and accessible name. |
1329
+ | class | `string` | `''` | Extra Tailwind classes merged onto the button via `cn()` (last-wins). |
1330
+
1331
+ Outputs:
1332
+
1333
+ | Name | Payload | Description |
1334
+ | --- | --- | --- |
1335
+ | jumped | `void` | Emitted when the reader jumps back to the newest message. |
1336
+
1337
+ Variants:
1338
+ - `variant`: `default`, `secondary`, `outline` (default `outline`)
1339
+ - `size`: `sm`, `default`, `icon` (default `default`)
1340
+
1341
+ ## Country Selector
1342
+
1343
+ - Install: `npx @tolle_/cli add country-selector`
1344
+ - Import: `import { CountrySelectorComponent } from '@tolle_/tolle-ui';`
1345
+
1346
+ ### `<tolle-country-selector>`
1347
+
1348
+ Inputs:
1349
+
1350
+ | Name | Type | Default | Description |
1351
+ | --- | --- | --- | --- |
1352
+ | id | `any` | ``country-selector-${Math.random().toString(36).substr(2, 9)}`` | |
1353
+ | label | `string` | `''` | |
1354
+ | hint | `string` | `''` | |
1355
+ | errorMessage | `string` | `''` | |
1356
+ | error | `boolean` | `false` | |
1357
+ | hideHintOnFocus | `boolean` | `true` | |
1358
+ | placeholder | `string` | `'Select country'` | |
1359
+ | class | `string` | `''` | |
1360
+ | disabled | `boolean` | `false` | |
1361
+ | readonly | `boolean` | `false` | |
1362
+ | size | `'xs' | 'sm' | 'default' | 'lg'` | `'default'` | |
1363
+ | defaultCountryCode | `string` | `'GH'` | |
1364
+ | returnValue | `'object' | 'isoAlpha2' | 'dialCode' | 'name'` | `'isoAlpha2'` | |
1365
+ | showName | `boolean` | `true` | |
1366
+ | externalFocused | `boolean | undefined` | — | |
1367
+
1368
+ Outputs:
1369
+
1370
+ | Name | Payload | Description |
1371
+ | --- | --- | --- |
1372
+ | onSelect | `any` | |
1373
+ | onFocusChange | `void` | |
1374
+ | onBlurChange | `void` | |
1375
+
1376
+ ## Data Table
1377
+
1378
+ - Install: `npx @tolle_/cli add data-table`
1379
+ - Import: `import { DataTableComponent } from '@tolle_/tolle-ui';`
1380
+
1381
+ ### `<tolle-data-table>`
1382
+
1383
+ Inputs:
1384
+
1385
+ | Name | Type | Default | Description |
1386
+ | --- | --- | --- | --- |
1387
+ | data | `any[]` | `[]` | |
1388
+ | columns | `TableColumn[]` | `[]` | |
1389
+ | searchable | `boolean` | `true` | |
1390
+ | paginate | `boolean` | `true` | |
1391
+ | pageSizeOptions | `number[]` | `[]` | |
1392
+ | pageSize | `number` | `10` | |
1393
+ | expandable | `boolean` | `false` | |
1394
+ | size | `'xs' | 'sm' | 'default' | 'lg'` | `'default'` | |
1395
+ | stickyHeader | `boolean` | `false` | |
1396
+ | maxHeight | `string` | — | |
1397
+ | bordered | `boolean` | `true` | |
1398
+ | tableBackground | `string` | `''` | Background for the table surface, behind both header and rows. |
1399
+ | headerBackground | `string` | `'bg-background'` | Background for the header row. Must be opaque when `stickyHeader` is on,
1400
+ otherwise rows scroll visibly through the header — hence the default
1401
+ `bg-background` rather than transparent. |
1402
+ | striped | `boolean` | `false` | Alternating row backgrounds. Applied to odd rows only. |
1403
+ | stripeBackground | `string` | `'bg-muted/30'` | Background applied to odd rows when `striped` is on. |
1404
+ | rowBackground | `(row: any, index: number) => string` | — | Per-row background, resolved against the row's own data — e.g.
1405
+ `[rowBackground]="r => r.overdue ? 'bg-destructive/10' : ''"`.
1406
+ Takes precedence over `striped`. |
1407
+ | allowColumnHiding | `boolean` | `true` | |
1408
+ | showSettings | `boolean` | `true` | |
1409
+ | expandedTemplate | `TemplateRef<any>` | — | |
1410
+
1411
+ ## Date Picker
1412
+
1413
+ - Install: `npx @tolle_/cli add date-picker`
1414
+ - Import: `import { DatePickerComponent } from '@tolle_/tolle-ui';`
1415
+
1416
+ ### `<tolle-date-picker>`
1417
+
1418
+ Inputs:
1419
+
1420
+ | Name | Type | Default | Description |
1421
+ | --- | --- | --- | --- |
1422
+ | placeholder | `string` | `'Pick a date'` | Text shown on the trigger when no date is selected. |
1423
+ | disabled | `boolean` | `false` | Disables the control. |
1424
+ | class | `string` | `''` | Extra Tailwind classes merged onto the trigger via `cn()` (last-wins). |
1425
+ | disablePastDates | `boolean` | `false` | Disables every day before today in the calendar. |
1426
+ | showClear | `boolean` | `true` | Shows the footer's Clear button. |
1427
+ | showQuickActions | `boolean` | `true` | Shows the panel's Clear / Done footer. |
1428
+ | minDate | `Date` | — | Earliest selectable date; earlier days are disabled. |
1429
+ | maxDate | `Date` | — | Latest selectable date; later days are disabled. |
1430
+ | mode | `CalendarMode` | `'date'` | Whether the control picks a day, a month or a year. |
1431
+ | formatMonthFn | `(date: Date) => string` | — | Overrides how a month is labelled in the calendar header. |
1432
+ | formatYearFn | `(date: Date) => string` | — | Overrides how a year is labelled in the calendar header. |
1433
+ | displayFormat | `(date: Date, mode: CalendarMode) => string` | — | Overrides how the selected date is rendered on the trigger. |
1434
+ | size | `'xs' | 'sm' | 'default' | 'lg'` | `'default'` | Height and text size of the trigger. |
1435
+ | invalid | `boolean` | `false` | Applies the destructive border and focus ring. |
1436
+ | ariaLabel | `string` | `''` | Accessible name when there is no associated visible label. |
1437
+
1438
+ Outputs:
1439
+
1440
+ | Name | Payload | Description |
1441
+ | --- | --- | --- |
1442
+ | valueChange | `Date | null` | Emitted with the chosen date, or `null` when the value is cleared. |
1443
+ | opened | `void` | Emitted when the calendar panel opens. |
1444
+ | closed | `void` | Emitted when the calendar panel closes. |
1445
+
1446
+ Variants:
1447
+ - `size`: `xs`, `sm`, `default`, `lg` (default `default`)
1448
+ - `invalid`: `true`, `false` (default `false`)
1449
+
1450
+ ## Date Range Picker
1451
+
1452
+ - Install: `npx @tolle_/cli add date-range-picker`
1453
+ - Import: `import { DateRangePickerComponent } from '@tolle_/tolle-ui';`
1454
+
1455
+ ### `<tolle-date-range-picker>`
1456
+
1457
+ Inputs:
1458
+
1459
+ | Name | Type | Default | Description |
1460
+ | --- | --- | --- | --- |
1461
+ | disabled | `boolean` | `false` | Disables the control. |
1462
+ | placeholder | `string` | `'Pick a date range'` | Text shown on the trigger when no range is selected. |
1463
+ | class | `string` | `''` | Extra Tailwind classes merged onto the trigger via `cn()` (last-wins). |
1464
+ | disablePastDates | `boolean` | `false` | Disables every day before today in the calendar. |
1465
+ | size | `'xs' | 'sm' | 'default' | 'lg'` | `'default'` | Height and text size of the trigger. |
1466
+ | numberOfMonths | `number` | `1` | Consecutive months shown in the popover (e.g. `2` for a two-month picker). |
1467
+ | invalid | `boolean` | `false` | Applies the destructive border and focus ring. |
1468
+ | ariaLabel | `string` | `''` | Accessible name when there is no associated visible label. |
1469
+
1470
+ Outputs:
1471
+
1472
+ | Name | Payload | Description |
1473
+ | --- | --- | --- |
1474
+ | valueChange | `DateRange` | Emitted with the selected range, including the half-made `{ start, end: null }` state. |
1475
+ | opened | `void` | Emitted when the calendar panel opens. |
1476
+ | closed | `void` | Emitted when the calendar panel closes. |
1477
+
1478
+ Variants:
1479
+ - `size`: `xs`, `sm`, `default`, `lg` (default `default`)
1480
+ - `invalid`: `true`, `false` (default `false`)
1481
+
1482
+ ## Date Time Picker
1483
+
1484
+ - Install: `npx @tolle_/cli add date-time-picker`
1485
+ - Import: `import { DateTimePickerComponent } from '@tolle_/tolle-ui';`
1486
+
1487
+ ### `<tolle-date-time-picker>`
1488
+
1489
+ Inputs:
1490
+
1491
+ | Name | Type | Default | Description |
1492
+ | --- | --- | --- | --- |
1493
+ | placeholder | `string` | `'Select date and time'` | Text shown on the trigger when nothing is selected. |
1494
+ | disabled | `boolean` | `false` | Disables the control. |
1495
+ | use12Hours | `boolean` | `false` | Renders a 12-hour face with an AM/PM column. |
1496
+ | showSeconds | `boolean` | `false` | Adds a seconds column. |
1497
+ | minuteStep | `number` | `1` | Interval between minute entries, in minutes. |
1498
+ | min | `Date` | — | Earliest selectable moment; earlier days and times are disabled. |
1499
+ | max | `Date` | — | Latest selectable moment; later days and times are disabled. |
1500
+ | displayFormat | `string` | `'MMM d, yyyy h:mm a'` | date-fns pattern used to render the value on the trigger. |
1501
+ | size | `'xs' | 'sm' | 'default' | 'lg'` | `'default'` | Height and text size of the trigger and entries. |
1502
+ | invalid | `boolean` | `false` | Applies the destructive border and focus ring. |
1503
+ | ariaLabel | `string` | `''` | Accessible name when there is no associated visible label. |
1504
+ | class | `string` | `''` | Extra Tailwind classes merged onto the trigger via `cn()` (last-wins). |
1505
+
1506
+ Outputs:
1507
+
1508
+ | Name | Payload | Description |
1509
+ | --- | --- | --- |
1510
+ | valueChange | `Date | null` | Emitted with the chosen moment, or `null` when the value is cleared. |
1511
+ | opened | `void` | Emitted when the panel opens. |
1512
+ | closed | `void` | Emitted when the panel closes. |
1513
+
1514
+ Variants:
1515
+ - `size`: `xs`, `sm`, `default`, `lg` (default `default`)
1516
+ - `invalid`: `true`, `false` (default `false`)
1517
+
1518
+ ## Direction
1519
+
1520
+ - Install: `npx @tolle_/cli add direction`
1521
+ - Import: `import { DirectionDirective } from '@tolle_/tolle-ui';`
1522
+
1523
+ ### `<[tolleDirection]>` (directive)
1524
+
1525
+ Inputs:
1526
+
1527
+ | Name | Type | Default | Description |
1528
+ | --- | --- | --- | --- |
1529
+ | tolleDirection | `Direction` | `'ltr'` | Writing direction applied to the host's `dir` attribute. |
1530
+ | tolleDirectionPublish | `boolean` | `true` | Whether to publish this direction to the app-wide `DirectionService`. |
1531
+
1532
+ Outputs:
1533
+
1534
+ | Name | Payload | Description |
1535
+ | --- | --- | --- |
1536
+ | directionChange | `Direction` | Emitted with the direction whenever it changes. |
1537
+
1538
+ ## Dropdown Item
1539
+
1540
+ - Install: `npx @tolle_/cli add dropdown-item`
1541
+ - Import: `import { DropdownItemComponent } from '@tolle_/tolle-ui';`
1542
+
1543
+ ### `<tolle-dropdown-item>`
1544
+
1545
+ Inputs:
1546
+
1547
+ | Name | Type | Default | Description |
1548
+ | --- | --- | --- | --- |
1549
+ | class | `string` | `''` | |
1550
+ | disabled | `boolean` | `false` | |
1551
+
1552
+ Slots: _default_
1553
+
1554
+ ## Dropdown Label
1555
+
1556
+ - Install: `npx @tolle_/cli add dropdown-label`
1557
+ - Import: `import { DropdownLabelComponent } from '@tolle_/tolle-ui';`
1558
+
1559
+ ### `<tolle-dropdown-label>`
1560
+
1561
+ Slots: _default_
1562
+
1563
+ ## Dropdown Menu
1564
+
1565
+ - Install: `npx @tolle_/cli add dropdown-menu`
1566
+ - Import: `import { DropdownMenuComponent } from '@tolle_/tolle-ui';`
1567
+
1568
+ ### `<tolle-dropdown-menu>`
1569
+
1570
+ Slots: _default_
1571
+
1572
+ ## Dropdown Separator
1573
+
1574
+ - Install: `npx @tolle_/cli add dropdown-separator`
1575
+ - Import: `import { DropdownSeparatorComponent } from '@tolle_/tolle-ui';`
1576
+
1577
+ ### `<tolle-dropdown-separator>`
1578
+
1579
+ ## Dropdown Trigger
1580
+
1581
+ - Install: `npx @tolle_/cli add dropdown-trigger`
1582
+ - Import: `import { DropdownTriggerDirective } from '@tolle_/tolle-ui';`
1583
+
1584
+ ### `<[tolleDropdownTrigger]>` (directive)
1585
+
1586
+ Inputs:
1587
+
1588
+ | Name | Type | Default | Description |
1589
+ | --- | --- | --- | --- |
1590
+ | menu | `DropdownMenuComponent` | — | |
1591
+
1592
+ ## Empty State
1593
+
1594
+ - Install: `npx @tolle_/cli add empty-state`
1595
+ - Import: `import { EmptyStateComponent } from '@tolle_/tolle-ui';`
1596
+
1597
+ ### `<tolle-empty-state>`
1598
+
1599
+ Inputs:
1600
+
1601
+ | Name | Type | Default | Description |
1602
+ | --- | --- | --- | --- |
1603
+ | variant | `'default' | 'minimal'` | `'default'` | |
1604
+ | title | `string` | `'No items found'` | |
1605
+ | description | `string` | — | |
1606
+ | class | `string` | `''` | |
1607
+
1608
+ Slots: `[icon]`, `[actions]`
1609
+
1610
+ Variants:
1611
+ - `variant`: `default`, `minimal` (default `default`)
1612
+
1613
+ ## Field
1614
+
1615
+ - Install: `npx @tolle_/cli add field`
1616
+ - Import: `import { FieldComponent, FieldLabelComponent, FieldContentComponent, FieldDescriptionComponent, FieldErrorComponent, FieldGroupComponent, FieldSetComponent, FieldLegendComponent, FieldSeparatorComponent, FieldTitleComponent } from '@tolle_/tolle-ui';`
1617
+
1618
+ ### `<tolle-field>`
1619
+
1620
+ Inputs:
1621
+
1622
+ | Name | Type | Default | Description |
1623
+ | --- | --- | --- | --- |
1624
+ | orientation | `'vertical' | 'horizontal' | 'responsive'` | `'vertical'` | Layout direction; `responsive` goes horizontal at the `@md` container width. |
1625
+ | invalid | `boolean` | `false` | Marks the field invalid, turning on the destructive styling for descendants. |
1626
+ | class | `string` | `''` | Extra Tailwind classes merged onto the field via `cn()` (last-wins). |
1627
+
1628
+ Slots: _default_
1629
+
1630
+ Variants:
1631
+ - `orientation`: `vertical`, `horizontal`, `responsive` (default `vertical`)
1632
+
1633
+ ### `<tolle-field-label>`
1634
+
1635
+ Inputs:
1636
+
1637
+ | Name | Type | Default | Description |
1638
+ | --- | --- | --- | --- |
1639
+ | for | `string` | `''` | Id of the control this label describes; wire it to the control's `id`. |
1640
+ | required | `boolean` | `false` | Appends a required marker (*) after the label text. |
1641
+ | class | `string` | `''` | Extra Tailwind classes merged onto the label via `cn()` (last-wins). |
1642
+
1643
+ Slots: _default_
1644
+
1645
+ ### `<tolle-field-content>`
1646
+
1647
+ Inputs:
1648
+
1649
+ | Name | Type | Default | Description |
1650
+ | --- | --- | --- | --- |
1651
+ | class | `string` | `''` | Extra Tailwind classes merged onto the content column via `cn()` (last-wins). |
1652
+
1653
+ Slots: _default_
1654
+
1655
+ ### `<tolle-field-description>`
1656
+
1657
+ Inputs:
1658
+
1659
+ | Name | Type | Default | Description |
1660
+ | --- | --- | --- | --- |
1661
+ | id | `string` | `''` | Id to reference from the control's `aria-describedby`. |
1662
+ | class | `string` | `''` | Extra Tailwind classes merged onto the description via `cn()` (last-wins). |
1663
+
1664
+ Slots: _default_
1665
+
1666
+ ### `<tolle-field-error>`
1667
+
1668
+ Inputs:
1669
+
1670
+ | Name | Type | Default | Description |
1671
+ | --- | --- | --- | --- |
1672
+ | errors | `string | string[] | Record<string, any> | null` | `''` | Validation message(s). Accepts a single string, an array of strings, or an
1673
+ Angular `ValidationErrors`-style object whose values are messages. |
1674
+ | id | `string` | `''` | Id to reference from the control's `aria-describedby`. |
1675
+ | class | `string` | `''` | Extra Tailwind classes merged onto the error text via `cn()` (last-wins). |
1676
+
1677
+ ### `<tolle-field-group>`
1678
+
1679
+ Inputs:
1680
+
1681
+ | Name | Type | Default | Description |
1682
+ | --- | --- | --- | --- |
1683
+ | class | `string` | `''` | Extra Tailwind classes merged onto the group via `cn()` (last-wins). |
1684
+
1685
+ Slots: _default_
1686
+
1687
+ ### `<tolle-field-set>`
1688
+
1689
+ Inputs:
1690
+
1691
+ | Name | Type | Default | Description |
1692
+ | --- | --- | --- | --- |
1693
+ | class | `string` | `''` | Extra Tailwind classes merged onto the fieldset via `cn()` (last-wins). |
1694
+
1695
+ Slots: _default_
1696
+
1697
+ ### `<tolle-field-legend>`
1698
+
1699
+ Inputs:
1700
+
1701
+ | Name | Type | Default | Description |
1702
+ | --- | --- | --- | --- |
1703
+ | variant | `'legend' | 'label'` | `'legend'` | Type scale of the legend. |
1704
+ | class | `string` | `''` | Extra Tailwind classes merged onto the legend via `cn()` (last-wins). |
1705
+
1706
+ Slots: _default_
1707
+
1708
+ Variants:
1709
+ - `variant`: `legend`, `label` (default `legend`)
1710
+
1711
+ ### `<tolle-field-separator>`
1712
+
1713
+ Inputs:
1714
+
1715
+ | Name | Type | Default | Description |
1716
+ | --- | --- | --- | --- |
1717
+ | class | `string` | `''` | Extra Tailwind classes merged onto the separator via `cn()` (last-wins). |
1718
+
1719
+ ### `<tolle-field-title>`
1720
+
1721
+ Inputs:
1722
+
1723
+ | Name | Type | Default | Description |
1724
+ | --- | --- | --- | --- |
1725
+ | class | `string` | `''` | Extra Tailwind classes merged onto the title via `cn()` (last-wins). |
1726
+
1727
+ Slots: _default_
1728
+
1729
+ ## Hover Card
1730
+
1731
+ - Install: `npx @tolle_/cli add hover-card`
1732
+ - Import: `import { HoverCardComponent, HoverCardTriggerComponent, HoverCardContentComponent } from '@tolle_/tolle-ui';`
1733
+
1734
+ ### `<tolle-hover-card>`
1735
+
1736
+ Inputs:
1737
+
1738
+ | Name | Type | Default | Description |
1739
+ | --- | --- | --- | --- |
1740
+ | openDelay | `number` | `700` | |
1741
+ | closeDelay | `number` | `300` | |
1742
+ | placement | `'top' | 'bottom' | 'left' | 'right'` | `'bottom'` | |
1743
+
1744
+ Slots: _default_
1745
+
1746
+ ### `<tolle-hover-card-trigger>`
1747
+
1748
+ Slots: _default_
1749
+
1750
+ ### `<tolle-hover-card-content>`
1751
+
1752
+ Inputs:
1753
+
1754
+ | Name | Type | Default | Description |
1755
+ | --- | --- | --- | --- |
1756
+ | class | `string` | `''` | |
1757
+
1758
+ Slots: _default_
1759
+
1760
+ ## Inline Citation
1761
+
1762
+ - Install: `npx @tolle_/cli add inline-citation`
1763
+ - Import: `import { InlineCitationComponent, InlineCitationCardComponent, InlineCitationQuoteComponent } from '@tolle_/tolle-ui';`
1764
+
1765
+ ### `<tolle-inline-citation>`
1766
+
1767
+ Inputs:
1768
+
1769
+ | Name | Type | Default | Description |
1770
+ | --- | --- | --- | --- |
1771
+ | index | `number | string` | `1` | Number rendered in the superscript marker. |
1772
+ | variant | `'default' | 'muted' | 'subtle'` | `'default'` | Colour treatment of the marker. |
1773
+ | size | `'sm' | 'default'` | `'default'` | Text size of the marker. |
1774
+ | placement | `'top' | 'bottom' | 'left' | 'right'` | `'top'` | Side of the marker the source card opens on. |
1775
+ | openDelay | `number` | `150` | Milliseconds to wait before opening the card. |
1776
+ | closeDelay | `number` | `200` | Milliseconds to wait before closing the card. |
1777
+ | ariaLabel | `string` | `''` | Accessible label for the marker; falls back to "Citation {index}". |
1778
+ | class | `string` | `''` | Extra Tailwind classes merged onto the marker via `cn()` (last-wins). |
1779
+ | cardClass | `string` | `''` | Extra Tailwind classes merged onto the hover card panel via `cn()` (last-wins). |
1780
+
1781
+ Slots: _default_
1782
+
1783
+ Variants:
1784
+ - `variant`: `default`, `muted`, `subtle` (default `default`)
1785
+ - `size`: `sm`, `default` (default `default`)
1786
+
1787
+ ### `<tolle-inline-citation-card>`
1788
+
1789
+ Inputs:
1790
+
1791
+ | Name | Type | Default | Description |
1792
+ | --- | --- | --- | --- |
1793
+ | title | `string` | `''` | Title of the cited source. |
1794
+ | url | `string` | `''` | Link to the cited source. |
1795
+ | snippet | `string` | `''` | Short excerpt from the source. |
1796
+ | class | `string` | `''` | Extra Tailwind classes merged onto the card via `cn()` (last-wins). |
1797
+
1798
+ Slots: _default_
1799
+
1800
+ ### `<tolle-inline-citation-quote>`
1801
+
1802
+ Inputs:
1803
+
1804
+ | Name | Type | Default | Description |
1805
+ | --- | --- | --- | --- |
1806
+ | cite | `string` | `''` | Attribution shown beneath the quote. |
1807
+ | class | `string` | `''` | Extra Tailwind classes merged onto the quote via `cn()` (last-wins). |
1808
+
1809
+ Slots: _default_
1810
+
1811
+ ## Input
1812
+
1813
+ - Install: `npx @tolle_/cli add input`
1814
+ - Import: `import { InputComponent } from '@tolle_/tolle-ui';`
1815
+
1816
+ ### `<tolle-input>`
1817
+
1818
+ Inputs:
1819
+
1820
+ | Name | Type | Default | Description |
1821
+ | --- | --- | --- | --- |
1822
+ | id | `string` | ``input-${Math.random().toString(36).substr(2, 9)}`` | |
1823
+ | label | `string` | `''` | |
1824
+ | hint | `string` | `''` | |
1825
+ | errorMessage | `string` | `''` | |
1826
+ | type | `string` | `'text'` | |
1827
+ | placeholder | `string` | `''` | |
1828
+ | size | `'xs' | 'sm' | 'default' | 'lg'` | `'default'` | |
1829
+ | containerClass | `string` | `''` | |
1830
+ | class | `string` | `''` | |
1831
+ | disabled | `boolean` | `false` | |
1832
+ | readonly | `boolean` | `false` | |
1833
+ | error | `boolean` | `false` | |
1834
+ | hideHintOnFocus | `boolean` | `true` | |
1835
+
1836
+ Slots: `[prefix]`, `[suffix]`
1837
+
1838
+ ## Input Group
1839
+
1840
+ - Install: `npx @tolle_/cli add input-group`
1841
+ - Import: `import { InputGroupComponent, InputGroupAddonComponent, InputGroupButtonComponent, InputGroupTextComponent, InputGroupInputComponent, InputGroupTextareaComponent } from '@tolle_/tolle-ui';`
1842
+
1843
+ ### `<tolle-input-group>`
1844
+
1845
+ Inputs:
1846
+
1847
+ | Name | Type | Default | Description |
1848
+ | --- | --- | --- | --- |
1849
+ | size | `'xs' | 'sm' | 'default' | 'lg'` | `'default'` | Height and text size of the group; match it to the input inside. |
1850
+ | invalid | `boolean` | `false` | Applies the destructive border and focus ring. |
1851
+ | stacked | `boolean` | `false` | Switches to a stacked column layout for `block-start`/`block-end` addons. |
1852
+ | class | `string` | `''` | Extra Tailwind classes merged onto the group via `cn()` (last-wins). |
1853
+
1854
+ Slots: _default_
1855
+
1856
+ Variants:
1857
+ - `size`: `xs`, `sm`, `default`, `lg` (default `default`)
1858
+ - `invalid`: `true`, `false` (default `false`)
1859
+ - `stacked`: `true`, `false` (default `false`)
1860
+
1861
+ ### `<tolle-input-group-addon>`
1862
+
1863
+ Inputs:
1864
+
1865
+ | Name | Type | Default | Description |
1866
+ | --- | --- | --- | --- |
1867
+ | align | `'inline-start' | 'inline-end' | 'block-start' | 'block-end'` | `'inline-start'` | Where the addon sits relative to the input. |
1868
+ | class | `string` | `''` | Extra Tailwind classes merged onto the addon via `cn()` (last-wins). |
1869
+
1870
+ Slots: _default_
1871
+
1872
+ Variants:
1873
+ - `align`: `inline-start`, `inline-end`, `block-start`, `block-end` (default `inline-start`)
1874
+
1875
+ ### `<tolle-input-group-button>`
1876
+
1877
+ Inputs:
1878
+
1879
+ | Name | Type | Default | Description |
1880
+ | --- | --- | --- | --- |
1881
+ | variant | `'default' | 'secondary' | 'outline' | 'ghost' | 'destructive'` | `'ghost'` | Visual style of the button. |
1882
+ | size | `'xs' | 'sm' | 'icon-xs' | 'icon-sm'` | `'icon-sm'` | Size of the button; the `icon-*` sizes render a square. |
1883
+ | type | `'button' | 'submit' | 'reset'` | `'button'` | Native button type. |
1884
+ | disabled | `boolean` | `false` | Disables the button. |
1885
+ | ariaLabel | `string` | `''` | Accessible name — required when the button shows only an icon. |
1886
+ | class | `string` | `''` | Extra Tailwind classes merged onto the button via `cn()` (last-wins). |
1887
+
1888
+ Outputs:
1889
+
1890
+ | Name | Payload | Description |
1891
+ | --- | --- | --- |
1892
+ | clicked | `MouseEvent` | Emitted with the click event when the button is pressed. |
1893
+
1894
+ Slots: _default_
1895
+
1896
+ Variants:
1897
+ - `variant`: `default`, `secondary`, `outline`, `ghost`, `destructive` (default `ghost`)
1898
+ - `size`: `xs`, `sm`, `icon-xs`, `icon-sm` (default `icon-sm`)
1899
+
1900
+ ### `<tolle-input-group-text>`
1901
+
1902
+ Inputs:
1903
+
1904
+ | Name | Type | Default | Description |
1905
+ | --- | --- | --- | --- |
1906
+ | class | `string` | `''` | Extra Tailwind classes merged onto the text via `cn()` (last-wins). |
1907
+
1908
+ Slots: _default_
1909
+
1910
+ ### `<tolle-input-group-input>`
1911
+
1912
+ Inputs:
1913
+
1914
+ | Name | Type | Default | Description |
1915
+ | --- | --- | --- | --- |
1916
+ | id | `any` | ``input-group-input-${Math.random().toString(36).slice(2, 11)}`` | Id applied to the underlying `<input>`. |
1917
+ | type | `string` | `'text'` | Native input type. |
1918
+ | placeholder | `string` | `''` | Placeholder text. |
1919
+ | disabled | `boolean` | `false` | Disables the input. |
1920
+ | readonly | `boolean` | `false` | Makes the input read-only. |
1921
+ | ariaDescribedby | `string` | `''` | Id of the element describing this input, for `aria-describedby`. |
1922
+ | class | `string` | `''` | Extra Tailwind classes merged onto the input via `cn()` (last-wins). |
1923
+
1924
+ Outputs:
1925
+
1926
+ | Name | Payload | Description |
1927
+ | --- | --- | --- |
1928
+ | valueChange | `string` | Emitted with the new value on every keystroke. |
1929
+
1930
+ ### `<tolle-input-group-textarea>`
1931
+
1932
+ Inputs:
1933
+
1934
+ | Name | Type | Default | Description |
1935
+ | --- | --- | --- | --- |
1936
+ | id | `any` | ``input-group-textarea-${Math.random().toString(36).slice(2, 11)}`` | Id applied to the underlying `<textarea>`. |
1937
+ | rows | `number` | `3` | Visible rows. |
1938
+ | placeholder | `string` | `''` | Placeholder text. |
1939
+ | disabled | `boolean` | `false` | Disables the textarea. |
1940
+ | readonly | `boolean` | `false` | Makes the textarea read-only. |
1941
+ | ariaDescribedby | `string` | `''` | Id of the element describing this textarea, for `aria-describedby`. |
1942
+ | class | `string` | `''` | Extra Tailwind classes merged onto the textarea via `cn()` (last-wins). |
1943
+
1944
+ Outputs:
1945
+
1946
+ | Name | Payload | Description |
1947
+ | --- | --- | --- |
1948
+ | valueChange | `string` | Emitted with the new value on every keystroke. |
1949
+
1950
+ ## Item
1951
+
1952
+ - Install: `npx @tolle_/cli add item`
1953
+ - Import: `import { ItemComponent, ItemGroupComponent, ItemMediaComponent, ItemContentComponent, ItemTitleComponent, ItemDescriptionComponent, ItemActionsComponent, ItemHeaderComponent, ItemFooterComponent } from '@tolle_/tolle-ui';`
1954
+
1955
+ ### `<tolle-item>`
1956
+
1957
+ Inputs:
1958
+
1959
+ | Name | Type | Default | Description |
1960
+ | --- | --- | --- | --- |
1961
+ | variant | `'default' | 'outline' | 'muted'` | `'default'` | Visual style of the row. |
1962
+ | size | `'xs' | 'sm' | 'default'` | `'default'` | Padding and gap density of the row. |
1963
+ | class | `string` | `''` | Extra Tailwind classes merged onto the row via `cn()` (last-wins). |
1964
+
1965
+ Slots: _default_
1966
+
1967
+ Variants:
1968
+ - `variant`: `default`, `outline`, `muted` (default `default`)
1969
+ - `size`: `xs`, `sm`, `default` (default `default`)
1970
+
1971
+ ### `<tolle-item-group>`
1972
+
1973
+ Inputs:
1974
+
1975
+ | Name | Type | Default | Description |
1976
+ | --- | --- | --- | --- |
1977
+ | class | `string` | `''` | Extra Tailwind classes merged onto the group via `cn()` (last-wins). |
1978
+
1979
+ Slots: _default_
1980
+
1981
+ ### `<tolle-item-media>`
1982
+
1983
+ Inputs:
1984
+
1985
+ | Name | Type | Default | Description |
1986
+ | --- | --- | --- | --- |
1987
+ | class | `string` | `''` | Extra Tailwind classes merged onto the media slot via `cn()` (last-wins). |
1988
+
1989
+ Slots: _default_
1990
+
1991
+ ### `<tolle-item-content>`
1992
+
1993
+ Inputs:
1994
+
1995
+ | Name | Type | Default | Description |
1996
+ | --- | --- | --- | --- |
1997
+ | class | `string` | `''` | Extra Tailwind classes merged onto the content column via `cn()` (last-wins). |
1998
+
1999
+ Slots: _default_
2000
+
2001
+ ### `<tolle-item-title>`
2002
+
2003
+ Inputs:
2004
+
2005
+ | Name | Type | Default | Description |
2006
+ | --- | --- | --- | --- |
2007
+ | class | `string` | `''` | Extra Tailwind classes merged onto the title via `cn()` (last-wins). |
2008
+
2009
+ Slots: _default_
2010
+
2011
+ ### `<tolle-item-description>`
2012
+
2013
+ Inputs:
2014
+
2015
+ | Name | Type | Default | Description |
2016
+ | --- | --- | --- | --- |
2017
+ | class | `string` | `''` | Extra Tailwind classes merged onto the description via `cn()` (last-wins). |
2018
+
2019
+ Slots: _default_
2020
+
2021
+ ### `<tolle-item-actions>`
2022
+
2023
+ Inputs:
2024
+
2025
+ | Name | Type | Default | Description |
2026
+ | --- | --- | --- | --- |
2027
+ | class | `string` | `''` | Extra Tailwind classes merged onto the actions slot via `cn()` (last-wins). |
2028
+
2029
+ Slots: _default_
2030
+
2031
+ ### `<tolle-item-header>`
2032
+
2033
+ Inputs:
2034
+
2035
+ | Name | Type | Default | Description |
2036
+ | --- | --- | --- | --- |
2037
+ | class | `string` | `''` | Extra Tailwind classes merged onto the header via `cn()` (last-wins). |
2038
+
2039
+ Slots: _default_
2040
+
2041
+ ### `<tolle-item-footer>`
2042
+
2043
+ Inputs:
2044
+
2045
+ | Name | Type | Default | Description |
2046
+ | --- | --- | --- | --- |
2047
+ | class | `string` | `''` | Extra Tailwind classes merged onto the footer via `cn()` (last-wins). |
2048
+
2049
+ Slots: _default_
2050
+
2051
+ ## Kbd
2052
+
2053
+ - Install: `npx @tolle_/cli add kbd`
2054
+ - Import: `import { KbdComponent, KbdGroupComponent } from '@tolle_/tolle-ui';`
2055
+
2056
+ ### `<tolle-kbd>`
2057
+
2058
+ Inputs:
2059
+
2060
+ | Name | Type | Default | Description |
2061
+ | --- | --- | --- | --- |
2062
+ | size | `'sm' | 'default' | 'lg'` | `'default'` | Size of the key cap. |
2063
+ | variant | `'default' | 'outline'` | `'default'` | Visual style of the key cap. |
2064
+ | class | `string` | `''` | Extra Tailwind classes merged onto the key cap via `cn()` (last-wins). |
2065
+
2066
+ Slots: _default_
2067
+
2068
+ Variants:
2069
+ - `size`: `sm`, `default`, `lg` (default `default`)
2070
+ - `variant`: `default`, `outline` (default `default`)
2071
+
2072
+ ### `<tolle-kbd-group>`
2073
+
2074
+ Inputs:
2075
+
2076
+ | Name | Type | Default | Description |
2077
+ | --- | --- | --- | --- |
2078
+ | class | `string` | `''` | Extra Tailwind classes merged onto the group via `cn()` (last-wins). |
2079
+
2080
+ Slots: _default_
2081
+
2082
+ ## Label
2083
+
2084
+ - Install: `npx @tolle_/cli add label`
2085
+ - Import: `import { LabelComponent } from '@tolle_/tolle-ui';`
2086
+
2087
+ ### `<tolle-label>`
2088
+
2089
+ Inputs:
2090
+
2091
+ | Name | Type | Default | Description |
2092
+ | --- | --- | --- | --- |
2093
+ | for | `string` | — | |
2094
+ | class | `string` | `''` | |
2095
+
2096
+ Slots: _default_
2097
+
2098
+ ## Marker
2099
+
2100
+ - Install: `npx @tolle_/cli add marker`
2101
+ - Import: `import { MarkerComponent, MarkerGroupComponent } from '@tolle_/tolle-ui';`
2102
+
2103
+ ### `<tolle-marker>`
2104
+
2105
+ Inputs:
2106
+
2107
+ | Name | Type | Default | Description |
2108
+ | --- | --- | --- | --- |
2109
+ | variant | `'default' | 'separator' | 'status' | 'error'` | `'default'` | Kind of transcript marker this row represents. |
2110
+ | label | `string` | `''` | Text for the marker — the date on a separator, or the status wording. |
2111
+ | icon | `string` | `''` | Remixicon class for a leading icon, e.g. 'ri-tools-line'. |
2112
+ | shimmer | `boolean` | `false` | Applies the shimmer text sweep, for live status such as "Thinking…". |
2113
+ | class | `string` | `''` | Extra Tailwind classes merged onto the row via `cn()` (last-wins). |
2114
+
2115
+ Slots: _default_
2116
+
2117
+ Variants:
2118
+ - `variant`: `default`, `separator`, `status`, `error` (default `default`)
2119
+
2120
+ ### `<tolle-marker-group>`
2121
+
2122
+ Inputs:
2123
+
2124
+ | Name | Type | Default | Description |
2125
+ | --- | --- | --- | --- |
2126
+ | class | `string` | `''` | Extra Tailwind classes merged onto the group via `cn()` (last-wins). |
2127
+
2128
+ Slots: _default_
2129
+
2130
+ ## Masked Input
2131
+
2132
+ - Install: `npx @tolle_/cli add masked-input`
2133
+ - Import: `import { MaskedInputComponent } from '@tolle_/tolle-ui';`
2134
+
2135
+ ### `<tolle-masked-input>`
2136
+
2137
+ Inputs:
2138
+
2139
+ | Name | Type | Default | Description |
2140
+ | --- | --- | --- | --- |
2141
+ | id | `string` | ``masked-input-${Math.random().toString(36).substr(2, 9)}`` | |
2142
+ | label | `string` | `''` | |
2143
+ | hint | `string` | `''` | |
2144
+ | errorMessage | `string` | `''` | |
2145
+ | mask | `string` | `''` | |
2146
+ | placeholder | `string` | `''` | |
2147
+ | type | `string` | `'text'` | |
2148
+ | disabled | `boolean` | `false` | |
2149
+ | readonly | `boolean` | `false` | |
2150
+ | class | `string` | `''` | |
2151
+ | containerClass | `string` | `''` | |
2152
+ | error | `boolean` | `false` | |
2153
+ | size | `'xs' | 'sm' | 'default' | 'lg'` | `'default'` | |
2154
+ | returnRaw | `boolean` | `false` | |
2155
+ | hideHintOnFocus | `boolean` | `true` | |
2156
+ | externalFocused | `boolean | undefined` | — | |
2157
+
2158
+ Slots: `[prefix]`, `[suffix]`
2159
+
2160
+ ## Menubar
2161
+
2162
+ - Install: `npx @tolle_/cli add menubar`
2163
+ - Import: `import { MenubarComponent, MenubarMenuComponent, MenubarTriggerComponent, MenubarContentComponent, MenubarItemComponent, MenubarLabelComponent, MenubarSeparatorComponent } from '@tolle_/tolle-ui';`
2164
+
2165
+ ### `<tolle-menubar>`
2166
+
2167
+ Inputs:
2168
+
2169
+ | Name | Type | Default | Description |
2170
+ | --- | --- | --- | --- |
2171
+ | size | `'sm' | 'default' | 'lg'` | `'default'` | Height/padding scale, inherited by every trigger in the bar. |
2172
+ | class | `string` | `''` | Extra Tailwind classes merged onto the bar via `cn()` (last-wins). |
2173
+
2174
+ Outputs:
2175
+
2176
+ | Name | Payload | Description |
2177
+ | --- | --- | --- |
2178
+ | openChange | `string | null` | Emitted with the id of the menu that opened, or `null` when the bar closes. |
2179
+
2180
+ Slots: _default_
2181
+
2182
+ Variants:
2183
+ - `size`: `sm`, `default`, `lg` (default `default`)
2184
+
2185
+ ### `<tolle-menubar-menu>`
2186
+
2187
+ Inputs:
2188
+
2189
+ | Name | Type | Default | Description |
2190
+ | --- | --- | --- | --- |
2191
+ | id | `any` | ``tolle-menubar-menu-${menubarMenuCounter++}`` | Explicit id for the menu; one is generated when omitted. |
2192
+
2193
+ Slots: _default_
2194
+
2195
+ ### `<tolle-menubar-trigger>`
2196
+
2197
+ Inputs:
2198
+
2199
+ | Name | Type | Default | Description |
2200
+ | --- | --- | --- | --- |
2201
+ | disabled | `boolean` | `false` | Prevents the menu from opening. |
2202
+ | size | `'sm' | 'default' | 'lg'` | — | Overrides the size inherited from `tolle-menubar`. |
2203
+ | class | `string` | `''` | Extra Tailwind classes merged onto the trigger via `cn()` (last-wins). |
2204
+
2205
+ Slots: _default_
2206
+
2207
+ Variants:
2208
+ - `size`: `sm`, `default`, `lg` (default `default`)
2209
+
2210
+ ### `<tolle-menubar-content>`
2211
+
2212
+ Inputs:
2213
+
2214
+ | Name | Type | Default | Description |
2215
+ | --- | --- | --- | --- |
2216
+ | placement | `'bottom-start' | 'bottom-end' | 'top-start' | 'top-end'` | `'bottom-start'` | Preferred side of the trigger to render on; flips when space is tight. |
2217
+ | sideOffset | `number` | `4` | Gap in pixels between the trigger and the panel. |
2218
+ | class | `string` | `''` | Extra Tailwind classes merged onto the panel via `cn()` (last-wins). |
2219
+
2220
+ Slots: _default_
2221
+
2222
+ ### `<tolle-menubar-item>`
2223
+
2224
+ Inputs:
2225
+
2226
+ | Name | Type | Default | Description |
2227
+ | --- | --- | --- | --- |
2228
+ | variant | `'default' | 'destructive'` | `'default'` | Visual style of the item. |
2229
+ | inset | `boolean` | `false` | Adds left padding so the label lines up with items that have icons. |
2230
+ | disabled | `boolean` | `false` | Blocks activation and dims the item. |
2231
+ | class | `string` | `''` | Extra Tailwind classes merged onto the item via `cn()` (last-wins). |
2232
+
2233
+ Outputs:
2234
+
2235
+ | Name | Payload | Description |
2236
+ | --- | --- | --- |
2237
+ | select | `Event` | Emitted when the item is clicked or activated with Enter/Space. |
2238
+
2239
+ Slots: `[prefix]`, _default_, `[shortcut]`
2240
+
2241
+ Variants:
2242
+ - `variant`: `default`, `destructive` (default `default`)
2243
+ - `inset`: `true`, `false` (default `false`)
2244
+
2245
+ ### `<tolle-menubar-label>`
2246
+
2247
+ Inputs:
2248
+
2249
+ | Name | Type | Default | Description |
2250
+ | --- | --- | --- | --- |
2251
+ | inset | `boolean` | `false` | Adds left padding so the label lines up with items that have icons. |
2252
+ | class | `string` | `''` | Extra Tailwind classes merged onto the label via `cn()` (last-wins). |
2253
+
2254
+ Slots: _default_
2255
+
2256
+ ### `<tolle-menubar-separator>`
2257
+
2258
+ Inputs:
2259
+
2260
+ | Name | Type | Default | Description |
2261
+ | --- | --- | --- | --- |
2262
+ | class | `string` | `''` | Extra Tailwind classes merged onto the separator via `cn()` (last-wins). |
2263
+
2264
+ ## Message
2265
+
2266
+ - Install: `npx @tolle_/cli add message`
2267
+ - Import: `import { MessageAlignAware, MessageComponent, MessageGroupComponent, MessageAvatarComponent, MessageContentComponent, MessageHeaderComponent, MessageFooterComponent } from '@tolle_/tolle-ui';`
2268
+
2269
+ ### `<MessageAlignAware>` (directive)
2270
+
2271
+ Inputs:
2272
+
2273
+ | Name | Type | Default | Description |
2274
+ | --- | --- | --- | --- |
2275
+ | class | `string` | `''` | Extra Tailwind classes merged onto the element via `cn()` (last-wins). |
2276
+
2277
+ ### `<tolle-message>`
2278
+
2279
+ Inputs:
2280
+
2281
+ | Name | Type | Default | Description |
2282
+ | --- | --- | --- | --- |
2283
+ | align | `'start' | 'end'` | `'start'` | Which edge the message hangs off — 'start' for incoming, 'end' for outgoing. |
2284
+ | size | `'sm' | 'default'` | `'default'` | Gap density of the row. |
2285
+ | class | `string` | `''` | Extra Tailwind classes merged onto the row via `cn()` (last-wins). |
2286
+
2287
+ Slots: _default_
2288
+
2289
+ Variants:
2290
+ - `align`: `start`, `end` (default `start`)
2291
+ - `size`: `sm`, `default` (default `default`)
2292
+
2293
+ ### `<tolle-message-group>`
2294
+
2295
+ Inputs:
2296
+
2297
+ | Name | Type | Default | Description |
2298
+ | --- | --- | --- | --- |
2299
+ | align | `'start' | 'end'` | `'start'` | Edge the grouped messages hang off. |
2300
+ | spacing | `'tight' | 'default' | 'loose'` | `'default'` | Vertical gap between the grouped messages. |
2301
+ | class | `string` | `''` | Extra Tailwind classes merged onto the group via `cn()` (last-wins). |
2302
+
2303
+ Slots: _default_
2304
+
2305
+ Variants:
2306
+ - `align`: `start`, `end` (default `start`)
2307
+ - `spacing`: `tight`, `default`, `loose` (default `default`)
2308
+
2309
+ ### `<tolle-message-avatar>`
2310
+
2311
+ Slots: _default_
2312
+
2313
+ ### `<tolle-message-content>`
2314
+
2315
+ Slots: _default_
2316
+
2317
+ ### `<tolle-message-header>`
2318
+
2319
+ Slots: _default_
2320
+
2321
+ ### `<tolle-message-footer>`
2322
+
2323
+ Slots: _default_
2324
+
2325
+ ## Message Scroller
2326
+
2327
+ - Install: `npx @tolle_/cli add message-scroller`
2328
+ - Import: `import { MessageScrollerComponent, MessageScrollerViewportComponent, MessageScrollerContentComponent, MessageScrollerItemDirective, MessageScrollerButtonComponent } from '@tolle_/tolle-ui';`
2329
+
2330
+ ### `<tolle-message-scroller>`
2331
+
2332
+ Inputs:
2333
+
2334
+ | Name | Type | Default | Description |
2335
+ | --- | --- | --- | --- |
2336
+ | startPosition | `ScrollStartPosition` | `'last-anchor'` | Where to land when the transcript first renders. `last-anchor` opens at the
2337
+ newest turn so a long answer starts from its first line. |
2338
+ | scrollPreviousItemPeek | `number` | `48` | Pixels of the previous turn kept visible above an anchored turn, so the
2339
+ reader can see what the reply is responding to. |
2340
+ | threshold | `number` | `32` | Distance from the bottom, in px, still treated as the live edge. |
2341
+ | class | `string` | `''` | Extra Tailwind classes merged onto the frame via `cn()` (last-wins). |
2342
+
2343
+ Outputs:
2344
+
2345
+ | Name | Payload | Description |
2346
+ | --- | --- | --- |
2347
+ | atBottomChange | `boolean` | Emitted when the reader arrives at, or leaves, the live edge. |
2348
+
2349
+ Slots: _default_
2350
+
2351
+ ### `<tolle-message-scroller-viewport>`
2352
+
2353
+ Inputs:
2354
+
2355
+ | Name | Type | Default | Description |
2356
+ | --- | --- | --- | --- |
2357
+ | class | `string` | `''` | Extra Tailwind classes merged onto the viewport via `cn()` (last-wins). |
2358
+
2359
+ Slots: _default_
2360
+
2361
+ ### `<tolle-message-scroller-content>`
2362
+
2363
+ Inputs:
2364
+
2365
+ | Name | Type | Default | Description |
2366
+ | --- | --- | --- | --- |
2367
+ | class | `string` | `''` | Extra Tailwind classes merged onto the transcript via `cn()` (last-wins). |
2368
+
2369
+ Slots: _default_
2370
+
2371
+ ### `<[tolleMessageScrollerItem]>` (directive)
2372
+
2373
+ Inputs:
2374
+
2375
+ | Name | Type | Default | Description |
2376
+ | --- | --- | --- | --- |
2377
+ | scrollAnchor | `boolean` | `false` | Marks this row as the start of a turn. |
2378
+
2379
+ ### `<tolle-message-scroller-button>`
2380
+
2381
+ Inputs:
2382
+
2383
+ | Name | Type | Default | Description |
2384
+ | --- | --- | --- | --- |
2385
+ | ariaLabel | `string` | `'Jump to latest messages'` | Accessible name for the jump control. |
2386
+ | class | `string` | `''` | Extra Tailwind classes merged onto the button via `cn()` (last-wins). |
2387
+
2388
+ Slots: _default_
2389
+
2390
+ ## Modal
2391
+
2392
+ - Install: `npx @tolle_/cli add modal`
2393
+ - Import: `import { ModalComponent } from '@tolle_/tolle-ui';`
2394
+
2395
+ ### `<tolle-modal>`
2396
+
2397
+ ## Model Selector
2398
+
2399
+ - Install: `npx @tolle_/cli add model-selector`
2400
+ - Import: `import { ModelSelectorComponent } from '@tolle_/tolle-ui';`
2401
+
2402
+ ### `<tolle-model-selector>`
2403
+
2404
+ Inputs:
2405
+
2406
+ | Name | Type | Default | Description |
2407
+ | --- | --- | --- | --- |
2408
+ | models | `ModelOption[]` | `[]` | Models to choose from; grouped by `provider` when that field is set. |
2409
+ | placeholder | `string` | `'Select a model'` | Text shown on the trigger when nothing is selected. |
2410
+ | searchPlaceholder | `string` | `'Search models…'` | Placeholder inside the search box. |
2411
+ | emptyMessage | `string` | `'No models found.'` | Message shown when the query matches no model. |
2412
+ | searchable | `boolean` | `true` | Shows the search box above the list. |
2413
+ | showProviderOnTrigger | `boolean` | `false` | Prefixes the selected model's name with its provider on the trigger. |
2414
+ | size | `'xs' | 'sm' | 'default' | 'lg'` | `'default'` | Height and text size of the trigger. |
2415
+ | variant | `'default' | 'ghost'` | `'default'` | Visual style of the trigger. |
2416
+ | icon | `string` | `'ri-sparkling-line'` | Optional remixicon class shown at the start of the trigger. |
2417
+ | placement | `'top-start' | 'top-end' | 'bottom-start' | 'bottom-end'` | `'bottom-start'` | Where the list opens relative to the trigger. |
2418
+ | disabled | `boolean` | `false` | Disables the control. |
2419
+ | ariaLabel | `string` | `''` | Accessible name for the trigger and list. |
2420
+ | class | `string` | `''` | Extra Tailwind classes merged onto the trigger via `cn()` (last-wins). |
2421
+
2422
+ Outputs:
2423
+
2424
+ | Name | Payload | Description |
2425
+ | --- | --- | --- |
2426
+ | valueChange | `string | null` | Emitted with the chosen model's `id` whenever the selection changes. |
2427
+ | modelChange | `ModelOption | null` | Emitted with the whole `ModelOption` whenever the selection changes. |
2428
+
2429
+ Variants:
2430
+ - `size`: `xs`, `sm`, `default`, `lg` (default `default`)
2431
+ - `variant`: `default`, `ghost` (default `default`)
2432
+
2433
+ ## Multi Select
2434
+
2435
+ - Install: `npx @tolle_/cli add multi-select`
2436
+ - Import: `import { MultiSelectComponent } from '@tolle_/tolle-ui';`
2437
+
2438
+ ### `<tolle-multi-select>`
2439
+
2440
+ Inputs:
2441
+
2442
+ | Name | Type | Default | Description |
2443
+ | --- | --- | --- | --- |
2444
+ | placeholder | `string` | `'Select options...'` | Text shown on the trigger when nothing is selected. |
2445
+ | size | `'xs' | 'sm' | 'default' | 'lg'` | `'default'` | Padding and text size of the trigger. |
2446
+ | searchable | `boolean` | `false` | Adds a search box that filters the projected options. |
2447
+ | disabled | `boolean` | `false` | Disables the control and blocks opening the panel. |
2448
+ | class | `string` | `''` | Extra Tailwind classes merged onto the trigger via `cn()` (last-wins). |
2449
+ | maxSelections | `number` | — | Largest number of values that can be selected at once; leave unset for no cap. |
2450
+ | maxDisplayItems | `number` | `3` | How many chips to render before collapsing the rest into a "+N more" hint. |
2451
+ | error | `boolean` | `false` | Applies the destructive border and focus ring. |
2452
+
2453
+ Outputs:
2454
+
2455
+ | Name | Payload | Description |
2456
+ | --- | --- | --- |
2457
+ | valueChange | `any[]` | Emitted with the full array of selected values whenever the selection changes. |
2458
+ | opened | `void` | Emitted when the panel opens. |
2459
+ | closed | `void` | Emitted when the panel closes. |
2460
+
2461
+ Slots: _default_
2462
+
2463
+ Variants:
2464
+ - `size`: `xs`, `sm`, `default`, `lg` (default `default`)
2465
+ - `error`: `true`, `false` (default `false`)
2466
+ - `disabled`: `true`, `false` (default `false`)
2467
+
2468
+ ## Native Select
2469
+
2470
+ - Install: `npx @tolle_/cli add native-select`
2471
+ - Import: `import { NativeSelectComponent } from '@tolle_/tolle-ui';`
2472
+
2473
+ ### `<tolle-native-select>`
2474
+
2475
+ Inputs:
2476
+
2477
+ | Name | Type | Default | Description |
2478
+ | --- | --- | --- | --- |
2479
+ | id | `any` | ``native-select-${Math.random().toString(36).slice(2, 11)}`` | Id applied to the underlying `<select>`; pair it with a `tolle-label`. |
2480
+ | options | `NativeSelectOption[]` | `[]` | Options to render. Omit and project `<option>` elements for custom markup. |
2481
+ | placeholder | `string` | `''` | Non-selectable prompt shown when no value is set. |
2482
+ | size | `'xs' | 'sm' | 'default' | 'lg'` | `'default'` | Height and text size of the control. |
2483
+ | invalid | `boolean` | `false` | Applies the destructive border and sets `aria-invalid`. |
2484
+ | disabled | `boolean` | `false` | Disables the control. |
2485
+ | ariaLabel | `string` | `''` | Accessible name when there is no associated visible label. |
2486
+ | class | `string` | `''` | Extra Tailwind classes merged onto the `<select>` via `cn()` (last-wins). |
2487
+
2488
+ Outputs:
2489
+
2490
+ | Name | Payload | Description |
2491
+ | --- | --- | --- |
2492
+ | valueChange | `any` | Emitted with the newly selected value whenever the user picks an option. |
2493
+
2494
+ Slots: _default_
2495
+
2496
+ Variants:
2497
+ - `size`: `xs`, `sm`, `default`, `lg` (default `default`)
2498
+ - `invalid`: `true`, `false` (default `false`)
2499
+
2500
+ ## Navigation Menu
2501
+
2502
+ - Install: `npx @tolle_/cli add navigation-menu`
2503
+ - Import: `import { NavigationMenuComponent, NavigationMenuListComponent, NavigationMenuItemComponent, NavigationMenuTriggerComponent, NavigationMenuContentComponent, NavigationMenuLinkComponent } from '@tolle_/tolle-ui';`
2504
+
2505
+ ### `<tolle-navigation-menu>`
2506
+
2507
+ Inputs:
2508
+
2509
+ | Name | Type | Default | Description |
2510
+ | --- | --- | --- | --- |
2511
+ | align | `'start' | 'center' | 'end'` | `'center'` | Horizontal alignment of the list within the nav. |
2512
+ | ariaLabel | `string` | `'Main'` | Accessible name for the `<nav>` landmark. |
2513
+ | class | `string` | `''` | Extra Tailwind classes merged onto the `<nav>` via `cn()` (last-wins). |
2514
+ | closeDelay | `number` | `150` | Milliseconds before a panel closes after the pointer leaves — the grace
2515
+ period that lets the pointer travel diagonally into the panel. |
2516
+
2517
+ Outputs:
2518
+
2519
+ | Name | Payload | Description |
2520
+ | --- | --- | --- |
2521
+ | openChange | `string | null` | Emitted with the id of the item that opened, or `null` when the menu closes. |
2522
+
2523
+ Slots: _default_
2524
+
2525
+ Variants:
2526
+ - `align`: `start`, `center`, `end` (default `center`)
2527
+
2528
+ ### `<tolle-navigation-menu-list>`
2529
+
2530
+ Inputs:
2531
+
2532
+ | Name | Type | Default | Description |
2533
+ | --- | --- | --- | --- |
2534
+ | class | `string` | `''` | Extra Tailwind classes merged onto the `<ul>` via `cn()` (last-wins). |
2535
+
2536
+ Slots: _default_
2537
+
2538
+ ### `<tolle-navigation-menu-item>`
2539
+
2540
+ Inputs:
2541
+
2542
+ | Name | Type | Default | Description |
2543
+ | --- | --- | --- | --- |
2544
+ | id | `any` | ``tolle-navigation-menu-item-${navigationMenuItemCounter++}`` | Explicit id for the item; one is generated when omitted. |
2545
+ | class | `string` | `''` | Extra Tailwind classes merged onto the `<li>` via `cn()` (last-wins). |
2546
+
2547
+ Slots: _default_
2548
+
2549
+ ### `<tolle-navigation-menu-trigger>`
2550
+
2551
+ Inputs:
2552
+
2553
+ | Name | Type | Default | Description |
2554
+ | --- | --- | --- | --- |
2555
+ | disabled | `boolean` | `false` | Prevents the panel from opening. |
2556
+ | size | `'sm' | 'default' | 'lg'` | `'default'` | Height/padding scale of the trigger. |
2557
+ | class | `string` | `''` | Extra Tailwind classes merged onto the trigger via `cn()` (last-wins). |
2558
+
2559
+ Slots: _default_
2560
+
2561
+ Variants:
2562
+ - `size`: `sm`, `default`, `lg` (default `default`)
2563
+
2564
+ ### `<tolle-navigation-menu-content>`
2565
+
2566
+ Inputs:
2567
+
2568
+ | Name | Type | Default | Description |
2569
+ | --- | --- | --- | --- |
2570
+ | placement | `'bottom' | 'bottom-start' | 'bottom-end' | 'top' | 'top-start' | 'top-end'` | `'bottom'` | Preferred side of the trigger to render on; flips when space is tight. |
2571
+ | sideOffset | `number` | `8` | Gap in pixels between the trigger and the panel. |
2572
+ | class | `string` | `''` | Extra Tailwind classes merged onto the panel via `cn()` (last-wins). |
2573
+
2574
+ Slots: _default_
2575
+
2576
+ ### `<tolle-navigation-menu-link>`
2577
+
2578
+ Inputs:
2579
+
2580
+ | Name | Type | Default | Description |
2581
+ | --- | --- | --- | --- |
2582
+ | href | `string` | `''` | Destination URL. Omit to render a non-navigating item. |
2583
+ | target | `string` | `''` | Anchor target; `_blank` also sets a safe `rel`. |
2584
+ | active | `boolean` | `false` | Marks the link as the current page. |
2585
+ | variant | `'default' | 'muted'` | `'default'` | Visual style of the link. |
2586
+ | class | `string` | `''` | Extra Tailwind classes merged onto the anchor via `cn()` (last-wins). |
2587
+
2588
+ Outputs:
2589
+
2590
+ | Name | Payload | Description |
2591
+ | --- | --- | --- |
2592
+ | navigate | `MouseEvent` | Emitted with the click event when the link is activated. |
2593
+
2594
+ Slots: `[label]`, _default_, `[description]`
2595
+
2596
+ Variants:
2597
+ - `variant`: `default`, `muted` (default `default`)
2598
+ - `active`: `true`, `false` (default `false`)
2599
+
2600
+ ## Otp
2601
+
2602
+ - Install: `npx @tolle_/cli add otp`
2603
+ - Import: `import { OtpComponent } from '@tolle_/tolle-ui';`
2604
+
2605
+ ### `<tolle-otp>`
2606
+
2607
+ Inputs:
2608
+
2609
+ | Name | Type | Default | Description |
2610
+ | --- | --- | --- | --- |
2611
+ | disabled | `boolean` | `false` | |
2612
+ | auto | `boolean` | `false` | |
2613
+ | length | `number` | `6` | |
2614
+
2615
+ Slots: _default_
2616
+
2617
+ ## Otp Group
2618
+
2619
+ - Install: `npx @tolle_/cli add otp-group`
2620
+ - Import: `import { OtpGroupComponent } from '@tolle_/tolle-ui';`
2621
+
2622
+ ### `<tolle-otp-group>`
2623
+
2624
+ Slots: _default_
2625
+
2626
+ ## Otp Slot
2627
+
2628
+ - Install: `npx @tolle_/cli add otp-slot`
2629
+ - Import: `import { OtpSlotComponent } from '@tolle_/tolle-ui';`
2630
+
2631
+ ### `<tolle-otp-slot>`
2632
+
2633
+ Inputs:
2634
+
2635
+ | Name | Type | Default | Description |
2636
+ | --- | --- | --- | --- |
2637
+ | char | `string | undefined` | `''` | |
2638
+ | isActive | `boolean` | `false` | |
2639
+ | isFirst | `boolean` | `false` | |
2640
+ | isLast | `boolean` | `false` | |
2641
+ | class | `string` | `''` | |
2642
+
2643
+ ## Pagination
2644
+
2645
+ - Install: `npx @tolle_/cli add pagination`
2646
+ - Import: `import { PaginationComponent } from '@tolle_/tolle-ui';`
2647
+
2648
+ ### `<tolle-pagination>`
2649
+
2650
+ Inputs:
2651
+
2652
+ | Name | Type | Default | Description |
2653
+ | --- | --- | --- | --- |
2654
+ | class | `string` | `''` | |
2655
+ | showPageLinks | `boolean` | `true` | |
2656
+ | showPageOptions | `boolean` | `true` | |
2657
+ | showCurrentPageInfo | `boolean` | `true` | |
2658
+ | currentPageInfoTemplate | `string` | — | |
2659
+ | totalRecords | `number` | `0` | |
2660
+ | currentPageSize | `number` | `10` | |
2661
+ | currentPage | `number` | `1` | |
2662
+ | pageSizeOptions | `number[]` | `[10, 20, 30, 50]` | |
2663
+
2664
+ Outputs:
2665
+
2666
+ | Name | Payload | Description |
2667
+ | --- | --- | --- |
2668
+ | onPageNumberChange | `number` | |
2669
+ | onPageSizeChange | `number` | |
2670
+
2671
+ ## Phone Number Input
2672
+
2673
+ - Install: `npx @tolle_/cli add phone-number-input`
2674
+ - Import: `import { PhoneNumberInputComponent } from '@tolle_/tolle-ui';`
2675
+
2676
+ ### `<tolle-phone-number-input>`
2677
+
2678
+ Inputs:
2679
+
2680
+ | Name | Type | Default | Description |
2681
+ | --- | --- | --- | --- |
2682
+ | id | `any` | ``phone-input-${Math.random().toString(36).substr(2, 9)}`` | |
2683
+ | label | `string` | `''` | |
2684
+ | hint | `string` | `''` | |
2685
+ | errorMessage | `string` | `''` | |
2686
+ | error | `boolean` | `false` | |
2687
+ | hideHintOnFocus | `boolean` | `true` | |
2688
+ | placeholder | `string` | `'Phone number'` | |
2689
+ | size | `'xs' | 'sm' | 'default' | 'lg'` | `'default'` | |
2690
+ | disabled | `boolean` | `false` | |
2691
+ | readonly | `boolean` | `false` | |
2692
+ | defaultCountryCode | `string` | `'GH'` | |
2693
+ | dataType | `'NumberOnly' | 'FullObject'` | `'FullObject'` | |
2694
+ | mask | `string` | `'(000) 000-0000'` | |
2695
+ | class | `string` | `''` | |
2696
+ | enableCountrySelector | `boolean` | `true` | |
2697
+
2698
+ Outputs:
2699
+
2700
+ | Name | Payload | Description |
2701
+ | --- | --- | --- |
2702
+ | onSelect | `any` | |
2703
+
2704
+ ## Plan
2705
+
2706
+ - Install: `npx @tolle_/cli add plan`
2707
+ - Import: `import { PlanComponent, PlanStepComponent } from '@tolle_/tolle-ui';`
2708
+
2709
+ ### `<tolle-plan>`
2710
+
2711
+ Inputs:
2712
+
2713
+ | Name | Type | Default | Description |
2714
+ | --- | --- | --- | --- |
2715
+ | title | `string` | `'Plan'` | Heading shown above the steps. |
2716
+ | collapsed | `boolean` | `false` | Shows only the header and its "Step N of M" summary. |
2717
+ | collapsible | `boolean` | `true` | Lets the user collapse and expand the plan by clicking the header. |
2718
+ | size | `'sm' | 'default'` | `'default'` | Padding and text scale of the plan. |
2719
+ | class | `string` | `''` | Extra Tailwind classes merged onto the plan via `cn()` (last-wins). |
2720
+
2721
+ Outputs:
2722
+
2723
+ | Name | Payload | Description |
2724
+ | --- | --- | --- |
2725
+ | collapsedChange | `boolean` | Emitted with the new collapsed state when the header is toggled. |
2726
+
2727
+ Slots: _default_
2728
+
2729
+ Variants:
2730
+ - `size`: `sm`, `default` (default `default`)
2731
+
2732
+ ### `<tolle-plan-step>`
2733
+
2734
+ Inputs:
2735
+
2736
+ | Name | Type | Default | Description |
2737
+ | --- | --- | --- | --- |
2738
+ | label | `string` | `''` | What this step does. |
2739
+ | description | `string` | `''` | Supporting detail shown under the label. |
2740
+ | status | `PlanStepStatus` | `'pending'` | Progress of this step; drives the badge colour and glyph. |
2741
+ | class | `string` | `''` | Extra Tailwind classes merged onto the step via `cn()` (last-wins). |
2742
+
2743
+ Slots: _default_
2744
+
2745
+ ## Popover
2746
+
2747
+ - Install: `npx @tolle_/cli add popover`
2748
+ - Import: `import { PopoverComponent } from '@tolle_/tolle-ui';`
2749
+
2750
+ ### `<tolle-popover>`
2751
+
2752
+ Inputs:
2753
+
2754
+ | Name | Type | Default | Description |
2755
+ | --- | --- | --- | --- |
2756
+ | placement | `| 'top'
2757
+ | 'bottom'
2758
+ | 'left'
2759
+ | 'right'
2760
+ | 'top-start'
2761
+ | 'top-end'
2762
+ | 'bottom-start'
2763
+ | 'bottom-end'
2764
+ | 'left-start'
2765
+ | 'left-end'
2766
+ | 'right-start'
2767
+ | 'right-end'` | `'bottom'` | |
2768
+
2769
+ Outputs:
2770
+
2771
+ | Name | Payload | Description |
2772
+ | --- | --- | --- |
2773
+ | onOpen | `void` | |
2774
+ | onClose | `void` | |
2775
+
2776
+ Slots: `[trigger]`, _default_
2777
+
2778
+ ## Popover Content
2779
+
2780
+ - Install: `npx @tolle_/cli add popover-content`
2781
+ - Import: `import { PopoverContentComponent } from '@tolle_/tolle-ui';`
2782
+
2783
+ ### `<tolle-popover-content>`
2784
+
2785
+ Inputs:
2786
+
2787
+ | Name | Type | Default | Description |
2788
+ | --- | --- | --- | --- |
2789
+ | class | `string` | `''` | |
2790
+
2791
+ Slots: _default_
2792
+
2793
+ ## Progress
2794
+
2795
+ - Install: `npx @tolle_/cli add progress`
2796
+ - Import: `import { ProgressComponent } from '@tolle_/tolle-ui';`
2797
+
2798
+ ### `<tolle-progress>`
2799
+
2800
+ Inputs:
2801
+
2802
+ | Name | Type | Default | Description |
2803
+ | --- | --- | --- | --- |
2804
+ | value | `number | null` | `0` | |
2805
+ | class | `string` | `''` | |
2806
+
2807
+ ## Progress Circle
2808
+
2809
+ - Install: `npx @tolle_/cli add progress-circle`
2810
+ - Import: `import { ProgressCircleComponent } from '@tolle_/tolle-ui';`
2811
+
2812
+ ### `<tolle-progress-circle>`
2813
+
2814
+ Inputs:
2815
+
2816
+ | Name | Type | Default | Description |
2817
+ | --- | --- | --- | --- |
2818
+ | value | `number | null` | `0` | Percent complete, 0-100. |
2819
+ | size | `number` | `120` | Diameter of the ring in px. |
2820
+ | strokeWidth | `number` | `8` | Thickness of the ring in px. |
2821
+ | class | `string` | `''` | Extra Tailwind classes merged onto the ring via `cn()` (last-wins). |
2822
+
2823
+ Slots: _default_
2824
+
2825
+ ## Prompt Input
2826
+
2827
+ - Install: `npx @tolle_/cli add prompt-input`
2828
+ - Import: `import { PromptInputComponent, PromptInputToolbarComponent, PromptInputToolsComponent, PromptInputSubmitComponent } from '@tolle_/tolle-ui';`
2829
+
2830
+ ### `<tolle-prompt-input>`
2831
+
2832
+ Inputs:
2833
+
2834
+ | Name | Type | Default | Description |
2835
+ | --- | --- | --- | --- |
2836
+ | placeholder | `string` | `'Send a message…'` | Placeholder shown while the composer is empty. |
2837
+ | disabled | `boolean` | `false` | Blocks typing and submission. |
2838
+ | maxRows | `number` | `8` | Rows the textarea may grow to before it starts scrolling. |
2839
+ | status | `PromptInputStatus` | `'ready'` | Lifecycle of the response being composed. |
2840
+ | size | `'sm' | 'default' | 'lg'` | `'default'` | Size scale of the composer. |
2841
+ | submitOnEnter | `boolean` | `true` | Submit on Enter, keeping Shift+Enter for newlines. |
2842
+ | clearOnSubmit | `boolean` | `true` | Clears the composer after a successful submit. |
2843
+ | ariaLabel | `string` | `''` | Accessible name for the textarea. |
2844
+ | class | `string` | `''` | Extra Tailwind classes merged onto the composer via `cn()` (last-wins). |
2845
+ | textareaClass | `string` | `''` | Extra Tailwind classes merged onto the textarea via `cn()` (last-wins). |
2846
+
2847
+ Outputs:
2848
+
2849
+ | Name | Payload | Description |
2850
+ | --- | --- | --- |
2851
+ | submitted | `string` | Emitted with the trimmed message text when the user submits. |
2852
+ | stopped | `void` | Emitted when the user cancels an in-flight streaming response. |
2853
+ | valueChange | `string` | Emitted with the message text whenever it changes. |
2854
+
2855
+ Slots: _default_
2856
+
2857
+ Variants:
2858
+ - `status`: `ready`, `streaming`, `error` (default `ready`)
2859
+ - `size`: `sm`, `default`, `lg` (default `default`)
2860
+
2861
+ ### `<tolle-prompt-input-toolbar>`
2862
+
2863
+ Inputs:
2864
+
2865
+ | Name | Type | Default | Description |
2866
+ | --- | --- | --- | --- |
2867
+ | class | `string` | `''` | Extra Tailwind classes merged onto the toolbar via `cn()` (last-wins). |
2868
+
2869
+ Slots: _default_
2870
+
2871
+ ### `<tolle-prompt-input-tools>`
2872
+
2873
+ Inputs:
2874
+
2875
+ | Name | Type | Default | Description |
2876
+ | --- | --- | --- | --- |
2877
+ | class | `string` | `''` | Extra Tailwind classes merged onto the tool row via `cn()` (last-wins). |
2878
+
2879
+ Slots: _default_
2880
+
2881
+ ### `<tolle-prompt-input-submit>`
2882
+
2883
+ Inputs:
2884
+
2885
+ | Name | Type | Default | Description |
2886
+ | --- | --- | --- | --- |
2887
+ | variant | `'default' | 'secondary' | 'ghost'` | `'default'` | Visual style of the button. |
2888
+ | size | `'sm' | 'default' | 'lg'` | `'default'` | Size of the button. |
2889
+ | submitLabel | `string` | `'Send message'` | Accessible name while the composer is idle. |
2890
+ | stopLabel | `string` | `'Stop generating'` | Accessible name while the composer is streaming. |
2891
+ | showLabel | `boolean` | `false` | Renders the label next to the icon. |
2892
+ | class | `string` | `''` | Extra Tailwind classes merged onto the button via `cn()` (last-wins). |
2893
+
2894
+ Variants:
2895
+ - `variant`: `default`, `secondary`, `ghost` (default `default`)
2896
+ - `size`: `sm`, `default`, `lg` (default `default`)
2897
+
2898
+ ## Queue
2899
+
2900
+ - Install: `npx @tolle_/cli add queue`
2901
+ - Import: `import { QueueComponent, QueueItemComponent } from '@tolle_/tolle-ui';`
2902
+
2903
+ ### `<tolle-queue>`
2904
+
2905
+ Inputs:
2906
+
2907
+ | Name | Type | Default | Description |
2908
+ | --- | --- | --- | --- |
2909
+ | title | `string` | `'Queue'` | Heading shown above the queued items. |
2910
+ | emptyMessage | `string` | `'Nothing queued.'` | Text shown while the queue holds nothing. |
2911
+ | size | `'sm' | 'default'` | `'default'` | Padding and text scale of the queue. |
2912
+ | class | `string` | `''` | Extra Tailwind classes merged onto the queue via `cn()` (last-wins). |
2913
+
2914
+ Outputs:
2915
+
2916
+ | Name | Payload | Description |
2917
+ | --- | --- | --- |
2918
+ | countsChange | `QueueCounts` | Emitted with the queue's tallies whenever its items change. |
2919
+
2920
+ Slots: _default_
2921
+
2922
+ Variants:
2923
+ - `size`: `sm`, `default` (default `default`)
2924
+
2925
+ ### `<tolle-queue-item>`
2926
+
2927
+ Inputs:
2928
+
2929
+ | Name | Type | Default | Description |
2930
+ | --- | --- | --- | --- |
2931
+ | label | `string` | `''` | Text describing the queued work. |
2932
+ | status | `QueueItemStatus` | `'queued'` | Lifecycle state of this entry. |
2933
+ | removable | `boolean` | `true` | Shows the trailing dismiss button that emits `remove`. |
2934
+ | removeLabel | `string` | `'Remove from queue'` | Accessible label for the dismiss button. |
2935
+ | class | `string` | `''` | Extra Tailwind classes merged onto the entry via `cn()` (last-wins). |
2936
+
2937
+ Outputs:
2938
+
2939
+ | Name | Payload | Description |
2940
+ | --- | --- | --- |
2941
+ | remove | `void` | Emitted when the user dismisses this entry. |
2942
+
2943
+ Slots: _default_
2944
+
2945
+ ## Radio Group
2946
+
2947
+ - Install: `npx @tolle_/cli add radio-group`
2948
+ - Import: `import { RadioGroupComponent } from '@tolle_/tolle-ui';`
2949
+
2950
+ ### `<tolle-radio-group>`
2951
+
2952
+ Inputs:
2953
+
2954
+ | Name | Type | Default | Description |
2955
+ | --- | --- | --- | --- |
2956
+ | class | `string` | `''` | |
2957
+ | disabled | `boolean` | `false` | |
2958
+ | name | `any` | ``radio-group-${Math.random().toString(36).substring(2, 9)}`` | |
2959
+
2960
+ Slots: _default_
2961
+
2962
+ ## Radio Item
2963
+
2964
+ - Install: `npx @tolle_/cli add radio-item`
2965
+ - Import: `import { RadioItemComponent } from '@tolle_/tolle-ui';`
2966
+
2967
+ ### `<tolle-radio-item>`
2968
+
2969
+ Inputs:
2970
+
2971
+ | Name | Type | Default | Description |
2972
+ | --- | --- | --- | --- |
2973
+ | value | `any` | — | |
2974
+ | disabled | `boolean` | `false` | |
2975
+ | class | `string` | `''` | |
2976
+
2977
+ Slots: _default_
2978
+
2979
+ ## Range Calendar
2980
+
2981
+ - Install: `npx @tolle_/cli add range-calendar`
2982
+ - Import: `import { RangeCalendarComponent } from '@tolle_/tolle-ui';`
2983
+
2984
+ ### `<tolle-range-calendar>`
2985
+
2986
+ Inputs:
2987
+
2988
+ | Name | Type | Default | Description |
2989
+ | --- | --- | --- | --- |
2990
+ | class | `string` | `''` | |
2991
+ | disablePastDates | `boolean` | `false` | |
2992
+ | bordered | `boolean` | `true` | Renders the calendar's own border/background/shadow. Set `false` inside a
2993
+ card/popover that already provides chrome. |
2994
+ | numberOfMonths | `number` | `1` | Number of consecutive months rendered side by side. |
2995
+
2996
+ Outputs:
2997
+
2998
+ | Name | Payload | Description |
2999
+ | --- | --- | --- |
3000
+ | rangeSelect | `DateRange` | |
3001
+
3002
+ ## Reasoning
3003
+
3004
+ - Install: `npx @tolle_/cli add reasoning`
3005
+ - Import: `import { ReasoningComponent, ReasoningTriggerComponent, ReasoningContentComponent } from '@tolle_/tolle-ui';`
3006
+
3007
+ ### `<tolle-reasoning>`
3008
+
3009
+ Inputs:
3010
+
3011
+ | Name | Type | Default | Description |
3012
+ | --- | --- | --- | --- |
3013
+ | open | `boolean` | `false` | Whether the trace is expanded. |
3014
+ | streaming | `boolean` | `false` | True while the model is still producing the trace. |
3015
+ | duration | `number` | `0` | Seconds the model spent reasoning, shown once streaming finishes. |
3016
+ | size | `'sm' | 'default' | 'lg'` | `'default'` | Text scale of the trace. |
3017
+ | class | `string` | `''` | Extra Tailwind classes merged onto the trace via `cn()` (last-wins). |
3018
+
3019
+ Outputs:
3020
+
3021
+ | Name | Payload | Description |
3022
+ | --- | --- | --- |
3023
+ | openChange | `boolean` | Emitted with the new state whenever the trace is expanded or collapsed. |
3024
+
3025
+ Slots: _default_
3026
+
3027
+ Variants:
3028
+ - `size`: `sm`, `default`, `lg` (default `default`)
3029
+
3030
+ ### `<tolle-reasoning-trigger>`
3031
+
3032
+ Inputs:
3033
+
3034
+ | Name | Type | Default | Description |
3035
+ | --- | --- | --- | --- |
3036
+ | icon | `string` | `'ri-brain-line'` | Remixicon class shown before the label. |
3037
+ | thinkingLabel | `string` | `'Thinking…'` | Label shown while the trace is streaming. |
3038
+ | fallbackLabel | `string` | `'Thought for a few seconds'` | Label used when the trace finished without a measured duration. |
3039
+ | class | `string` | `''` | Extra Tailwind classes merged onto the trigger via `cn()` (last-wins). |
3040
+
3041
+ Slots: _default_
3042
+
3043
+ ### `<tolle-reasoning-content>`
3044
+
3045
+ Inputs:
3046
+
3047
+ | Name | Type | Default | Description |
3048
+ | --- | --- | --- | --- |
3049
+ | text | `string` | `''` | Reasoning text to render; project your own markup instead when richer. |
3050
+ | class | `string` | `''` | Extra Tailwind classes merged onto the content via `cn()` (last-wins). |
3051
+
3052
+ Slots: _default_
3053
+
3054
+ ## Resizable
3055
+
3056
+ - Install: `npx @tolle_/cli add resizable`
3057
+ - Import: `import { ResizableComponent } from '@tolle_/tolle-ui';`
3058
+
3059
+ ### `<tolle-resizable>`
3060
+
3061
+ Inputs:
3062
+
3063
+ | Name | Type | Default | Description |
3064
+ | --- | --- | --- | --- |
3065
+ | width | `number` | `300` | |
3066
+ | height | `number` | `200` | |
3067
+ | minWidth | `number` | `50` | |
3068
+ | minHeight | `number` | `50` | |
3069
+ | maxWidth | `number` | — | |
3070
+ | maxHeight | `number` | — | |
3071
+ | resizable | `boolean` | `true` | |
3072
+ | directions | `('right' | 'bottom' | 'both')[]` | `['right', 'bottom', 'both']` | |
3073
+ | class | `string` | `''` | |
3074
+ | containerClass | `string` | `''` | |
3075
+
3076
+ Outputs:
3077
+
3078
+ | Name | Payload | Description |
3079
+ | --- | --- | --- |
3080
+ | resizeStart | `void` | |
3081
+ | resize | `{ width: number; height: number }` | |
3082
+ | resizeEnd | `{ width: number; height: number }` | |
3083
+
3084
+ Slots: _default_
3085
+
3086
+ ## Resizable Panel
3087
+
3088
+ - Install: `npx @tolle_/cli add resizable-panel`
3089
+ - Import: `import { ResizablePanelComponent } from '@tolle_/tolle-ui';`
3090
+
3091
+ ### `<tolle-resizable-panel>`
3092
+
3093
+ Inputs:
3094
+
3095
+ | Name | Type | Default | Description |
3096
+ | --- | --- | --- | --- |
3097
+ | direction | `'horizontal' | 'vertical'` | `'horizontal'` | |
3098
+ | class | `string` | `''` | |
3099
+
3100
+ Slots: _default_
3101
+
3102
+ ## Resizable Panel Item
3103
+
3104
+ - Install: `npx @tolle_/cli add resizable-panel-item`
3105
+ - Import: `import { ResizablePanelItemComponent } from '@tolle_/tolle-ui';`
3106
+
3107
+ ### `<tolle-resizable-panel-item>`
3108
+
3109
+ Inputs:
3110
+
3111
+ | Name | Type | Default | Description |
3112
+ | --- | --- | --- | --- |
3113
+ | size | `number` | `1` | |
3114
+ | minSize | `number` | `10` | |
3115
+ | maxSize | `number` | — | |
3116
+ | resizable | `boolean` | `true` | |
3117
+ | class | `string` | `''` | |
3118
+
3119
+ Slots: _default_
3120
+
3121
+ ## Scroll Area
3122
+
3123
+ - Install: `npx @tolle_/cli add scroll-area`
3124
+ - Import: `import { ScrollAreaComponent } from '@tolle_/tolle-ui';`
3125
+
3126
+ ### `<tolle-scroll-area>`
3127
+
3128
+ Inputs:
3129
+
3130
+ | Name | Type | Default | Description |
3131
+ | --- | --- | --- | --- |
3132
+ | class | `string` | `''` | |
3133
+ | height | `string` | `'100%'` | |
3134
+ | orientation | `'vertical' | 'horizontal' | 'both'` | `'both'` | |
3135
+
3136
+ Slots: _default_
3137
+
3138
+ ## Segment
3139
+
3140
+ - Install: `npx @tolle_/cli add segment`
3141
+ - Import: `import { SegmentComponent } from '@tolle_/tolle-ui';`
3142
+
3143
+ ### `<tolle-segment>`
3144
+
3145
+ Inputs:
3146
+
3147
+ | Name | Type | Default | Description |
3148
+ | --- | --- | --- | --- |
3149
+ | items | `SegmentItem[]` | `[]` | |
3150
+ | class | `string` | `''` | |
3151
+ | disabled | `boolean` | `false` | |
3152
+ | itemTemplate | `TemplateRef<any>` | — | |
3153
+
3154
+ ## Select
3155
+
3156
+ - Install: `npx @tolle_/cli add select`
3157
+ - Import: `import { SelectComponent } from '@tolle_/tolle-ui';`
3158
+
3159
+ ### `<tolle-select>`
3160
+
3161
+ Inputs:
3162
+
3163
+ | Name | Type | Default | Description |
3164
+ | --- | --- | --- | --- |
3165
+ | placeholder | `string` | `'Select an option'` | Text shown on the trigger when nothing is selected. |
3166
+ | class | `string` | `''` | Extra Tailwind classes merged onto the trigger via `cn()` (last-wins). |
3167
+ | disabled | `boolean` | `false` | Disables the control and blocks opening the panel. |
3168
+ | searchable | `boolean` | `false` | Adds a search box that filters the projected options. |
3169
+ | size | `'xs' | 'sm' | 'default' | 'lg'` | `'default'` | Height and text size of the trigger. |
3170
+ | readonly | `boolean` | `false` | Shows the current value but blocks opening the panel. |
3171
+
3172
+ Outputs:
3173
+
3174
+ | Name | Payload | Description |
3175
+ | --- | --- | --- |
3176
+ | valueChange | `any` | Emitted with the chosen value whenever the selection changes. |
3177
+ | opened | `void` | Emitted when the panel opens. |
3178
+ | closed | `void` | Emitted when the panel closes. |
3179
+
3180
+ Slots: _default_
3181
+
3182
+ Variants:
3183
+ - `size`: `xs`, `sm`, `default`, `lg` (default `default`)
3184
+ - `disabled`: `true`, `false` (default `false`)
3185
+ - `readonly`: `true`, `false` (default `false`)
3186
+
3187
+ ## Select Group
3188
+
3189
+ - Install: `npx @tolle_/cli add select-group`
3190
+ - Import: `import { SelectGroupComponent } from '@tolle_/tolle-ui';`
3191
+
3192
+ ### `<tolle-select-group>`
3193
+
3194
+ Inputs:
3195
+
3196
+ | Name | Type | Default | Description |
3197
+ | --- | --- | --- | --- |
3198
+ | class | `string` | `''` | |
3199
+
3200
+ Slots: _default_
3201
+
3202
+ ## Select Item
3203
+
3204
+ - Install: `npx @tolle_/cli add select-item`
3205
+ - Import: `import { SelectItemComponent } from '@tolle_/tolle-ui';`
3206
+
3207
+ ### `<tolle-select-item>`
3208
+
3209
+ Inputs:
3210
+
3211
+ | Name | Type | Default | Description |
3212
+ | --- | --- | --- | --- |
3213
+ | value | `any` | — | |
3214
+ | class | `string` | `''` | |
3215
+ | selected | `boolean` | `false` | |
3216
+ | disabled | `boolean` | `false` | |
3217
+ | multiSelect | `boolean` | `false` | |
3218
+ | id | `any` | ``select-item-${Math.random().toString(36).substr(2, 9)}`` | |
3219
+ | active | `boolean` | `false` | |
3220
+
3221
+ Slots: _default_
3222
+
3223
+ ## Select Separator
3224
+
3225
+ - Install: `npx @tolle_/cli add select-separator`
3226
+ - Import: `import { SelectSeparatorComponent } from '@tolle_/tolle-ui';`
3227
+
3228
+ ### `<tolle-select-separator>`
3229
+
3230
+ Inputs:
3231
+
3232
+ | Name | Type | Default | Description |
3233
+ | --- | --- | --- | --- |
3234
+ | class | `string` | `''` | |
3235
+
3236
+ ## Separator
3237
+
3238
+ - Install: `npx @tolle_/cli add separator`
3239
+ - Import: `import { SeparatorComponent } from '@tolle_/tolle-ui';`
3240
+
3241
+ ### `<tolle-separator>`
3242
+
3243
+ Inputs:
3244
+
3245
+ | Name | Type | Default | Description |
3246
+ | --- | --- | --- | --- |
3247
+ | orientation | `'horizontal' | 'vertical'` | `'horizontal'` | Orientation of the rule. |
3248
+ | decorative | `boolean` | `true` | When true, the separator is purely visual (aria-hidden, role="none"). |
3249
+ | class | `string` | `''` | |
3250
+
3251
+ ## Sheet
3252
+
3253
+ - Install: `npx @tolle_/cli add sheet`
3254
+ - Import: `import { SheetComponent, SheetTriggerComponent, SheetContentComponent, SheetHeaderComponent, SheetFooterComponent, SheetTitleComponent, SheetDescriptionComponent } from '@tolle_/tolle-ui';`
3255
+
3256
+ ### `<tolle-sheet>`
3257
+
3258
+ Inputs:
3259
+
3260
+ | Name | Type | Default | Description |
3261
+ | --- | --- | --- | --- |
3262
+ | isOpen | `boolean` | `false` | |
3263
+ | hasBackdrop | `boolean` | `true` | |
3264
+
3265
+ Outputs:
3266
+
3267
+ | Name | Payload | Description |
3268
+ | --- | --- | --- |
3269
+ | isOpenChange | `boolean` | |
3270
+
3271
+ Slots: _default_
3272
+
3273
+ ### `<tolle-sheet-trigger>`
3274
+
3275
+ Slots: _default_
3276
+
3277
+ ### `<tolle-sheet-content>`
3278
+
3279
+ Inputs:
3280
+
3281
+ | Name | Type | Default | Description |
3282
+ | --- | --- | --- | --- |
3283
+ | side | `'top' | 'bottom' | 'left' | 'right'` | `'right'` | |
3284
+ | rounded | `boolean` | `false` | |
3285
+ | class | `string` | `''` | |
3286
+
3287
+ Slots: _default_
3288
+
3289
+ ### `<tolle-sheet-header>`
3290
+
3291
+ Slots: _default_
3292
+
3293
+ ### `<tolle-sheet-footer>`
3294
+
3295
+ Slots: _default_
3296
+
3297
+ ### `<tolle-sheet-title>`
3298
+
3299
+ Slots: _default_
3300
+
3301
+ ### `<tolle-sheet-description>`
3302
+
3303
+ Slots: _default_
3304
+
3305
+ ## Sheet Wrapper
3306
+
3307
+ - Install: `npx @tolle_/cli add sheet-wrapper`
3308
+ - Import: `import { SheetWrapperComponent } from '@tolle_/tolle-ui';`
3309
+
3310
+ ### `<tolle-sheet-wrapper>`
3311
+
3312
+ ## Shimmer
3313
+
3314
+ - Install: `npx @tolle_/cli add shimmer`
3315
+ - Import: `import { ShimmerComponent } from '@tolle_/tolle-ui';`
3316
+
3317
+ ### `<tolle-shimmer>`
3318
+
3319
+ Inputs:
3320
+
3321
+ | Name | Type | Default | Description |
3322
+ | --- | --- | --- | --- |
3323
+ | active | `boolean` | `true` | Runs the shimmer animation; false renders plain static text. |
3324
+ | size | `'xs' | 'sm' | 'default' | 'lg' | 'xl'` | `'default'` | Text size of the label. |
3325
+ | class | `string` | `''` | Extra Tailwind classes merged onto the label via `cn()` (last-wins). |
3326
+
3327
+ Slots: _default_
3328
+
3329
+ Variants:
3330
+ - `size`: `xs`, `sm`, `default`, `lg`, `xl` (default `default`)
3331
+ - `active`: `true`, `false` (default `true`)
3332
+
3333
+ ## Sidebar
3334
+
3335
+ - Install: `npx @tolle_/cli add sidebar`
3336
+ - Import: `import { SidebarComponent } from '@tolle_/tolle-ui';`
3337
+
3338
+ ### `<tolle-sidebar>`
3339
+
3340
+ Inputs:
3341
+
3342
+ | Name | Type | Default | Description |
3343
+ | --- | --- | --- | --- |
3344
+ | items | `SidebarGroup[]` | `[]` | |
3345
+ | collapsed | `boolean` | `false` | |
3346
+ | class | `string` | `''` | |
3347
+ | variant | `'default' | 'secondary' | 'ghost' | 'outline'` | `'default'` | Styling variant for active items.
3348
+ - default: Solid primary background, light text (Matches Badge Default)
3349
+ - secondary: Solid secondary background
3350
+ - ghost: Transparent background, accent text (Shadcn standard)
3351
+ - outline: Bordered |
3352
+
3353
+ Slots: `[header]`, `[footer]`
3354
+
3355
+ ## Skeleton
3356
+
3357
+ - Install: `npx @tolle_/cli add skeleton`
3358
+ - Import: `import { SkeletonComponent } from '@tolle_/tolle-ui';`
3359
+
3360
+ ### `<tolle-skeleton>`
3361
+
3362
+ Inputs:
3363
+
3364
+ | Name | Type | Default | Description |
3365
+ | --- | --- | --- | --- |
3366
+ | variant | `'rect' | 'circle' | 'pill'` | `'rect'` | Shape of the skeleton placeholder. |
3367
+ | class | `string` | `''` | Extra Tailwind classes merged onto the skeleton via `cn()` (last-wins). |
3368
+
3369
+ Variants:
3370
+ - `variant`: `rect`, `circle`, `pill` (default `rect`)
3371
+
3372
+ ## Slider
3373
+
3374
+ - Install: `npx @tolle_/cli add slider`
3375
+ - Import: `import { SliderComponent } from '@tolle_/tolle-ui';`
3376
+
3377
+ ### `<tolle-slider>`
3378
+
3379
+ Inputs:
3380
+
3381
+ | Name | Type | Default | Description |
3382
+ | --- | --- | --- | --- |
3383
+ | min | `number` | `0` | |
3384
+ | max | `number` | `100` | |
3385
+ | step | `number` | `1` | |
3386
+ | disabled | `boolean` | `false` | |
3387
+ | class | `string` | `''` | |
3388
+
3389
+ ## Sources
3390
+
3391
+ - Install: `npx @tolle_/cli add sources`
3392
+ - Import: `import { SourcesComponent, SourcesTriggerComponent, SourcesContentComponent, SourceComponent } from '@tolle_/tolle-ui';`
3393
+
3394
+ ### `<tolle-sources>`
3395
+
3396
+ Inputs:
3397
+
3398
+ | Name | Type | Default | Description |
3399
+ | --- | --- | --- | --- |
3400
+ | open | `boolean` | `false` | Whether the citation list is expanded. |
3401
+ | variant | `'default' | 'card' | 'muted'` | `'default'` | Visual treatment of the list container. |
3402
+ | class | `string` | `''` | Extra Tailwind classes merged onto the list via `cn()` (last-wins). |
3403
+
3404
+ Outputs:
3405
+
3406
+ | Name | Payload | Description |
3407
+ | --- | --- | --- |
3408
+ | openChange | `boolean` | Emitted with the new state whenever the list is expanded or collapsed. |
3409
+
3410
+ Slots: _default_
3411
+
3412
+ Variants:
3413
+ - `variant`: `default`, `card`, `muted` (default `default`)
3414
+
3415
+ ### `<tolle-sources-trigger>`
3416
+
3417
+ Inputs:
3418
+
3419
+ | Name | Type | Default | Description |
3420
+ | --- | --- | --- | --- |
3421
+ | count | `number | null` | `null` | Overrides the counted number of sources. |
3422
+ | class | `string` | `''` | Extra Tailwind classes merged onto the trigger via `cn()` (last-wins). |
3423
+
3424
+ Slots: _default_
3425
+
3426
+ ### `<tolle-sources-content>`
3427
+
3428
+ Inputs:
3429
+
3430
+ | Name | Type | Default | Description |
3431
+ | --- | --- | --- | --- |
3432
+ | class | `string` | `''` | Extra Tailwind classes merged onto the content via `cn()` (last-wins). |
3433
+
3434
+ Slots: _default_
3435
+
3436
+ ### `<tolle-source>`
3437
+
3438
+ Inputs:
3439
+
3440
+ | Name | Type | Default | Description |
3441
+ | --- | --- | --- | --- |
3442
+ | href | `string` | `''` | URL the citation points at. |
3443
+ | title | `string` | `''` | Human-readable title; falls back to the href when empty. |
3444
+ | favicon | `string` | `''` | URL of a favicon shown instead of the numbered chip. |
3445
+ | index | `number | null` | `null` | Overrides the auto-numbered position chip. |
3446
+ | size | `'sm' | 'default'` | `'default'` | Text scale of the citation. |
3447
+ | class | `string` | `''` | Extra Tailwind classes merged onto the citation via `cn()` (last-wins). |
3448
+
3449
+ Slots: _default_
3450
+
3451
+ Variants:
3452
+ - `size`: `sm`, `default` (default `default`)
3453
+
3454
+ ## Spinner
3455
+
3456
+ - Install: `npx @tolle_/cli add spinner`
3457
+ - Import: `import { SpinnerComponent } from '@tolle_/tolle-ui';`
3458
+
3459
+ ### `<tolle-spinner>`
3460
+
3461
+ Inputs:
3462
+
3463
+ | Name | Type | Default | Description |
3464
+ | --- | --- | --- | --- |
3465
+ | size | `'xs' | 'sm' | 'default' | 'lg' | 'xl'` | `'default'` | Diameter of the spinner. |
3466
+ | variant | `'default' | 'primary' | 'muted' | 'destructive'` | `'default'` | Colour of the spinner, inherited from the theme tokens. |
3467
+ | label | `string` | `'Loading'` | Accessible label announced while the spinner is visible. |
3468
+ | class | `string` | `''` | Extra Tailwind classes merged onto the spinner via `cn()` (last-wins). |
3469
+
3470
+ Variants:
3471
+ - `size`: `xs`, `sm`, `default`, `lg`, `xl` (default `default`)
3472
+ - `variant`: `default`, `primary`, `muted`, `destructive` (default `default`)
3473
+
3474
+ ## Suggestion
3475
+
3476
+ - Install: `npx @tolle_/cli add suggestion`
3477
+ - Import: `import { SuggestionsComponent, SuggestionComponent } from '@tolle_/tolle-ui';`
3478
+
3479
+ ### `<tolle-suggestions>`
3480
+
3481
+ Inputs:
3482
+
3483
+ | Name | Type | Default | Description |
3484
+ | --- | --- | --- | --- |
3485
+ | gap | `'sm' | 'default' | 'lg'` | `'default'` | Spacing between the pills. |
3486
+ | ariaLabel | `string` | `'Suggestions'` | Accessible name for the row. |
3487
+ | class | `string` | `''` | Extra Tailwind classes merged onto the row via `cn()` (last-wins). |
3488
+
3489
+ Outputs:
3490
+
3491
+ | Name | Payload | Description |
3492
+ | --- | --- | --- |
3493
+ | selected | `string` | Emitted with the `value` of whichever suggestion in the row was picked. |
3494
+
3495
+ Slots: _default_
3496
+
3497
+ Variants:
3498
+ - `gap`: `sm`, `default`, `lg` (default `default`)
3499
+
3500
+ ### `<tolle-suggestion>`
3501
+
3502
+ Inputs:
3503
+
3504
+ | Name | Type | Default | Description |
3505
+ | --- | --- | --- | --- |
3506
+ | value | `string` | `''` | Value emitted when the pill is picked. |
3507
+ | variant | `'outline' | 'secondary' | 'ghost'` | `'outline'` | Visual style of the pill. |
3508
+ | size | `'sm' | 'default' | 'lg'` | `'default'` | Size of the pill. |
3509
+ | icon | `string` | `''` | Remixicon class shown before the label. |
3510
+ | disabled | `boolean` | `false` | Blocks interaction with the pill. |
3511
+ | ariaLabel | `string` | `''` | Accessible name, when the projected label is not descriptive enough. |
3512
+ | class | `string` | `''` | Extra Tailwind classes merged onto the pill via `cn()` (last-wins). |
3513
+
3514
+ Outputs:
3515
+
3516
+ | Name | Payload | Description |
3517
+ | --- | --- | --- |
3518
+ | selected | `string` | Emitted with this pill's `value` when it is picked. |
3519
+
3520
+ Slots: _default_
3521
+
3522
+ Variants:
3523
+ - `variant`: `outline`, `secondary`, `ghost` (default `outline`)
3524
+ - `size`: `sm`, `default`, `lg` (default `default`)
3525
+
3526
+ ## Switch
3527
+
3528
+ - Install: `npx @tolle_/cli add switch`
3529
+ - Import: `import { SwitchComponent } from '@tolle_/tolle-ui';`
3530
+
3531
+ ### `<tolle-switch>`
3532
+
3533
+ Inputs:
3534
+
3535
+ | Name | Type | Default | Description |
3536
+ | --- | --- | --- | --- |
3537
+ | class | `string` | `''` | Extra Tailwind classes merged onto the switch track via `cn()` (last-wins). |
3538
+ | disabled | `boolean` | `false` | Disables the switch and blocks toggling. |
3539
+ | size | `'xs' | 'sm' | 'default' | 'lg'` | `'default'` | Size of the switch. |
3540
+
3541
+ Variants:
3542
+ - `size`: `xs`, `sm`, `default`, `lg` (default `default`)
3543
+ - `checked`: `true`, `false` (default `false`)
3544
+
3545
+ ## Table
3546
+
3547
+ - Install: `npx @tolle_/cli add table`
3548
+ - Import: `import { TableComponent, TableHeaderDirective, TableBodyDirective, TableFooterDirective, TableRowDirective, TableHeadDirective, TableCellDirective, TableCaptionDirective } from '@tolle_/tolle-ui';`
3549
+
3550
+ ### `<tolle-table>`
3551
+
3552
+ Inputs:
3553
+
3554
+ | Name | Type | Default | Description |
3555
+ | --- | --- | --- | --- |
3556
+ | containerClass | `string` | `''` | Extra Tailwind classes merged onto the scrolling container via `cn()` (last-wins). |
3557
+ | class | `string` | `''` | Extra Tailwind classes merged onto the `<table>` via `cn()` (last-wins). |
3558
+
3559
+ Slots: _default_
3560
+
3561
+ ### `<[tolleTableHeader]>` (directive)
3562
+
3563
+ Inputs:
3564
+
3565
+ | Name | Type | Default | Description |
3566
+ | --- | --- | --- | --- |
3567
+ | class | `string` | `''` | Extra Tailwind classes merged onto the `<thead>` via `cn()` (last-wins). |
3568
+
3569
+ ### `<[tolleTableBody]>` (directive)
3570
+
3571
+ Inputs:
3572
+
3573
+ | Name | Type | Default | Description |
3574
+ | --- | --- | --- | --- |
3575
+ | class | `string` | `''` | Extra Tailwind classes merged onto the `<tbody>` via `cn()` (last-wins). |
3576
+
3577
+ ### `<[tolleTableFooter]>` (directive)
3578
+
3579
+ Inputs:
3580
+
3581
+ | Name | Type | Default | Description |
3582
+ | --- | --- | --- | --- |
3583
+ | class | `string` | `''` | Extra Tailwind classes merged onto the `<tfoot>` via `cn()` (last-wins). |
3584
+
3585
+ ### `<[tolleTableRow]>` (directive)
3586
+
3587
+ Inputs:
3588
+
3589
+ | Name | Type | Default | Description |
3590
+ | --- | --- | --- | --- |
3591
+ | selected | `boolean` | `false` | Applies the selected background and sets `data-state="selected"`. |
3592
+ | class | `string` | `''` | Extra Tailwind classes merged onto the `<tr>` via `cn()` (last-wins). |
3593
+
3594
+ ### `<[tolleTableHead]>` (directive)
3595
+
3596
+ Inputs:
3597
+
3598
+ | Name | Type | Default | Description |
3599
+ | --- | --- | --- | --- |
3600
+ | scope | `'col' | 'row' | 'colgroup' | 'rowgroup'` | `'col'` | Scope of the header cell for assistive tech. |
3601
+ | sort | `'ascending' | 'descending' | 'none' | null` | `null` | Current sort direction, surfaced as `aria-sort`. |
3602
+ | class | `string` | `''` | Extra Tailwind classes merged onto the `<th>` via `cn()` (last-wins). |
3603
+
3604
+ ### `<[tolleTableCell]>` (directive)
3605
+
3606
+ Inputs:
3607
+
3608
+ | Name | Type | Default | Description |
3609
+ | --- | --- | --- | --- |
3610
+ | class | `string` | `''` | Extra Tailwind classes merged onto the `<td>` via `cn()` (last-wins). |
3611
+
3612
+ ### `<[tolleTableCaption]>` (directive)
3613
+
3614
+ Inputs:
3615
+
3616
+ | Name | Type | Default | Description |
3617
+ | --- | --- | --- | --- |
3618
+ | class | `string` | `''` | Extra Tailwind classes merged onto the `<caption>` via `cn()` (last-wins). |
3619
+
3620
+ ## Tabs
3621
+
3622
+ - Install: `npx @tolle_/cli add tabs`
3623
+ - Import: `import { TabsComponent, TabsListComponent, TabsTriggerComponent, TabsContentComponent } from '@tolle_/tolle-ui';`
3624
+
3625
+ ### `<tolle-tabs>`
3626
+
3627
+ Inputs:
3628
+
3629
+ | Name | Type | Default | Description |
3630
+ | --- | --- | --- | --- |
3631
+ | defaultValue | `string` | — | |
3632
+ | value | `string` | — | |
3633
+ | class | `string` | `''` | |
3634
+
3635
+ Outputs:
3636
+
3637
+ | Name | Payload | Description |
3638
+ | --- | --- | --- |
3639
+ | valueChange | `string` | |
3640
+
3641
+ Slots: _default_
3642
+
3643
+ ### `<tolle-tabs-list>`
3644
+
3645
+ Inputs:
3646
+
3647
+ | Name | Type | Default | Description |
3648
+ | --- | --- | --- | --- |
3649
+ | class | `string` | `''` | Extra Tailwind classes merged onto the tabs list via `cn()` (last-wins). |
3650
+ | variant | `'default' | 'underline'` | `'default'` | Visual style of the tab list. |
3651
+
3652
+ Slots: _default_
3653
+
3654
+ Variants:
3655
+ - `variant`: `default`, `underline` (default `default`)
3656
+
3657
+ ### `<tolle-tabs-trigger>`
3658
+
3659
+ Inputs:
3660
+
3661
+ | Name | Type | Default | Description |
3662
+ | --- | --- | --- | --- |
3663
+ | value (required) | `string` | — | |
3664
+ | class | `string` | `''` | |
3665
+
3666
+ Slots: _default_
3667
+
3668
+ ### `<tolle-tabs-content>`
3669
+
3670
+ Inputs:
3671
+
3672
+ | Name | Type | Default | Description |
3673
+ | --- | --- | --- | --- |
3674
+ | value (required) | `string` | — | |
3675
+ | class | `string` | `''` | |
3676
+
3677
+ Slots: _default_
3678
+
3679
+ ## Tag Input
3680
+
3681
+ - Install: `npx @tolle_/cli add tag-input`
3682
+ - Import: `import { TagInputComponent } from '@tolle_/tolle-ui';`
3683
+
3684
+ ### `<tolle-tag-input>`
3685
+
3686
+ Inputs:
3687
+
3688
+ | Name | Type | Default | Description |
3689
+ | --- | --- | --- | --- |
3690
+ | id | `string` | ``tag-input-${Math.random().toString(36).substr(2, 9)}`` | |
3691
+ | label | `string` | `''` | |
3692
+ | hint | `string` | `''` | |
3693
+ | errorMessage | `string` | `''` | |
3694
+ | placeholder | `string` | `'Type and press Enter...'` | |
3695
+ | size | `'xs' | 'sm' | 'default' | 'lg'` | `'default'` | |
3696
+ | class | `string` | `''` | |
3697
+ | disabled | `boolean` | `false` | |
3698
+ | readonly | `boolean` | `false` | |
3699
+ | error | `boolean` | `false` | |
3700
+ | delimiter | `string` | `','` | |
3701
+ | maxTags | `number | null` | `null` | |
3702
+ | allowDuplicates | `boolean` | `false` | |
3703
+ | tagPrefix | `string` | `''` | |
3704
+ | tagSuffix | `string` | `''` | |
3705
+
3706
+ ## Task
3707
+
3708
+ - Install: `npx @tolle_/cli add task`
3709
+ - Import: `import { TaskComponent, TaskTriggerComponent, TaskContentComponent, TaskItemComponent, TaskItemFileComponent } from '@tolle_/tolle-ui';`
3710
+
3711
+ ### `<tolle-task>`
3712
+
3713
+ Inputs:
3714
+
3715
+ | Name | Type | Default | Description |
3716
+ | --- | --- | --- | --- |
3717
+ | status | `TaskStatus` | `'pending'` | Lifecycle state of the task; drives the icon and border colour. |
3718
+ | title | `string` | `''` | Title shown by `tolle-task-trigger`. |
3719
+ | open | `boolean` | `false` | Whether the task's content is expanded. |
3720
+ | class | `string` | `''` | Extra Tailwind classes merged onto the task via `cn()` (last-wins). |
3721
+
3722
+ Outputs:
3723
+
3724
+ | Name | Payload | Description |
3725
+ | --- | --- | --- |
3726
+ | openChange | `boolean` | Emitted with the new expanded state whenever the task opens or closes. |
3727
+
3728
+ Slots: _default_
3729
+
3730
+ ### `<tolle-task-trigger>`
3731
+
3732
+ Inputs:
3733
+
3734
+ | Name | Type | Default | Description |
3735
+ | --- | --- | --- | --- |
3736
+ | class | `string` | `''` | Extra Tailwind classes merged onto the trigger via `cn()` (last-wins). |
3737
+
3738
+ Slots: _default_
3739
+
3740
+ ### `<tolle-task-content>`
3741
+
3742
+ Inputs:
3743
+
3744
+ | Name | Type | Default | Description |
3745
+ | --- | --- | --- | --- |
3746
+ | class | `string` | `''` | Extra Tailwind classes merged onto the content via `cn()` (last-wins). |
3747
+
3748
+ Slots: _default_
3749
+
3750
+ ### `<tolle-task-item>`
3751
+
3752
+ Inputs:
3753
+
3754
+ | Name | Type | Default | Description |
3755
+ | --- | --- | --- | --- |
3756
+ | class | `string` | `''` | Extra Tailwind classes merged onto the item via `cn()` (last-wins). |
3757
+
3758
+ Slots: _default_
3759
+
3760
+ ### `<tolle-task-item-file>`
3761
+
3762
+ Inputs:
3763
+
3764
+ | Name | Type | Default | Description |
3765
+ | --- | --- | --- | --- |
3766
+ | icon | `string` | `'ri-file-line'` | Remixicon class for the leading file glyph. |
3767
+ | class | `string` | `''` | Extra Tailwind classes merged onto the chip via `cn()` (last-wins). |
3768
+
3769
+ Slots: _default_
3770
+
3771
+ ## Textarea
3772
+
3773
+ - Install: `npx @tolle_/cli add textarea`
3774
+ - Import: `import { TextareaComponent } from '@tolle_/tolle-ui';`
3775
+
3776
+ ### `<tolle-textarea>`
3777
+
3778
+ Inputs:
3779
+
3780
+ | Name | Type | Default | Description |
3781
+ | --- | --- | --- | --- |
3782
+ | id | `any` | ``textarea-${Math.random().toString(36).substring(2, 9)}`` | |
3783
+ | label | `string` | `''` | |
3784
+ | placeholder | `string` | `''` | |
3785
+ | hint | `string` | `''` | |
3786
+ | errorMessage | `string` | `''` | |
3787
+ | rows | `number` | `3` | |
3788
+ | maxLength | `number` | — | |
3789
+ | showCharacterCount | `boolean` | `false` | |
3790
+ | autoGrow | `boolean` | `false` | |
3791
+ | error | `boolean` | `false` | |
3792
+ | className | `string` | `''` | |
3793
+ | hideHintOnFocus | `boolean` | `true` | |
3794
+ | hideCharacterCountOnFocus | `boolean` | `false` | |
3795
+ | disabled | `boolean` | `false` | |
3796
+ | readonly | `boolean` | `false` | |
3797
+
3798
+ ## Time Picker
3799
+
3800
+ - Install: `npx @tolle_/cli add time-picker`
3801
+ - Import: `import { TimeColumnsComponent, TimePickerComponent } from '@tolle_/tolle-ui';`
3802
+
3803
+ ### `<tolle-time-columns>`
3804
+
3805
+ Inputs:
3806
+
3807
+ | Name | Type | Default | Description |
3808
+ | --- | --- | --- | --- |
3809
+ | hour | `number | null` | `null` | Selected hour in 24-hour form, or `null` when nothing is chosen yet. |
3810
+ | minute | `number | null` | `null` | Selected minute, or `null` when nothing is chosen yet. |
3811
+ | second | `number | null` | `null` | Selected second, or `null` when nothing is chosen yet. |
3812
+ | use12Hours | `boolean` | `false` | Renders a 12-hour clock face with an AM/PM column. |
3813
+ | showSeconds | `boolean` | `false` | Adds the seconds column. |
3814
+ | minuteStep | `number` | `1` | Interval between minute entries, in minutes. |
3815
+ | secondStep | `number` | `1` | Interval between second entries, in seconds. |
3816
+ | minSeconds | `number` | `0` | Earliest selectable time, as seconds since midnight. |
3817
+ | maxSeconds | `any` | `SECONDS_PER_DAY - 1` | Latest selectable time, as seconds since midnight. |
3818
+ | size | `'xs' | 'sm' | 'default' | 'lg'` | `'default'` | Row height and text size of the entries. |
3819
+ | class | `string` | `''` | Extra Tailwind classes merged onto the column strip via `cn()` (last-wins). |
3820
+
3821
+ Outputs:
3822
+
3823
+ | Name | Payload | Description |
3824
+ | --- | --- | --- |
3825
+ | timeChange | `TimeParts` | Emitted with the full wall-clock time whenever an entry is chosen. |
3826
+
3827
+ Variants:
3828
+ - `size`: `xs`, `sm`, `default`, `lg` (default `default`)
3829
+ - `selected`: `true`, `false` (default `false`)
3830
+
3831
+ ### `<tolle-time-picker>`
3832
+
3833
+ Inputs:
3834
+
3835
+ | Name | Type | Default | Description |
3836
+ | --- | --- | --- | --- |
3837
+ | placeholder | `string` | `'Select a time'` | Text shown on the trigger when no time is selected. |
3838
+ | disabled | `boolean` | `false` | Disables the control. |
3839
+ | use12Hours | `boolean` | `false` | Renders a 12-hour face with an AM/PM column. The emitted value stays 24-hour. |
3840
+ | showSeconds | `boolean` | `false` | Adds a seconds column and emits `HH:mm:ss`. |
3841
+ | minuteStep | `number` | `1` | Interval between minute entries, in minutes. |
3842
+ | secondStep | `number` | `1` | Interval between second entries, in seconds. |
3843
+ | min | `string` | — | Earliest selectable time as a 24-hour `HH:mm` string; earlier entries are disabled. |
3844
+ | max | `string` | — | Latest selectable time as a 24-hour `HH:mm` string; later entries are disabled. |
3845
+ | size | `'xs' | 'sm' | 'default' | 'lg'` | `'default'` | Height and text size of the trigger and entries. |
3846
+ | invalid | `boolean` | `false` | Applies the destructive border and focus ring. |
3847
+ | ariaLabel | `string` | `''` | Accessible name when there is no associated visible label. |
3848
+ | valueType | `'string' | 'date'` | `'string'` | Exchange `Date` objects instead of `HH:mm` strings through the form control. |
3849
+ | class | `string` | `''` | Extra Tailwind classes merged onto the trigger via `cn()` (last-wins). |
3850
+
3851
+ Outputs:
3852
+
3853
+ | Name | Payload | Description |
3854
+ | --- | --- | --- |
3855
+ | valueChange | `string | Date | null` | Emitted with the chosen time whenever it changes. |
3856
+ | opened | `void` | Emitted when the panel opens. |
3857
+ | closed | `void` | Emitted when the panel closes. |
3858
+
3859
+ Variants:
3860
+ - `size`: `xs`, `sm`, `default`, `lg` (default `default`)
3861
+ - `invalid`: `true`, `false` (default `false`)
3862
+
3863
+ ## Toaster
3864
+
3865
+ - Install: `npx @tolle_/cli add toaster`
3866
+ - Import: `import { ToastContainerComponent } from '@tolle_/tolle-ui';`
3867
+
3868
+ ### `<tolle-toaster>`
3869
+
3870
+ Inputs:
3871
+
3872
+ | Name | Type | Default | Description |
3873
+ | --- | --- | --- | --- |
3874
+ | position | `ToastPosition` | `'bottom-right'` | |
3875
+
3876
+ ## Toggle
3877
+
3878
+ - Install: `npx @tolle_/cli add toggle`
3879
+ - Import: `import { ToggleComponent } from '@tolle_/tolle-ui';`
3880
+
3881
+ ### `<tolle-toggle>`
3882
+
3883
+ Inputs:
3884
+
3885
+ | Name | Type | Default | Description |
3886
+ | --- | --- | --- | --- |
3887
+ | variant | `'default' | 'outline'` | `'default'` | |
3888
+ | size | `'default' | 'sm' | 'lg'` | `'default'` | |
3889
+ | disabled | `boolean` | `false` | |
3890
+ | class | `string` | `''` | |
3891
+ | pressed | `boolean` | `false` | |
3892
+
3893
+ Outputs:
3894
+
3895
+ | Name | Payload | Description |
3896
+ | --- | --- | --- |
3897
+ | pressedChange | `boolean` | |
3898
+
3899
+ Slots: _default_
3900
+
3901
+ Variants:
3902
+ - `variant`: `default`, `outline` (default `default`)
3903
+ - `size`: `default`, `sm`, `lg` (default `default`)
3904
+
3905
+ ## Toggle Group
3906
+
3907
+ - Install: `npx @tolle_/cli add toggle-group`
3908
+ - Import: `import { ToggleGroupComponent, ToggleGroupItemComponent } from '@tolle_/tolle-ui';`
3909
+
3910
+ ### `<tolle-toggle-group>`
3911
+
3912
+ Inputs:
3913
+
3914
+ | Name | Type | Default | Description |
3915
+ | --- | --- | --- | --- |
3916
+ | type | `'single' | 'multiple'` | `'single'` | |
3917
+ | variant | `'default' | 'outline'` | `'default'` | |
3918
+ | size | `'default' | 'sm' | 'lg'` | `'default'` | |
3919
+ | class | `string` | `''` | |
3920
+ | disabled | `boolean` | `false` | |
3921
+
3922
+ Outputs:
3923
+
3924
+ | Name | Payload | Description |
3925
+ | --- | --- | --- |
3926
+ | valueChange | `any` | |
3927
+
3928
+ Slots: _default_
3929
+
3930
+ ### `<tolle-toggle-group-item>`
3931
+
3932
+ Inputs:
3933
+
3934
+ | Name | Type | Default | Description |
3935
+ | --- | --- | --- | --- |
3936
+ | value (required) | `string` | — | |
3937
+ | class | `string` | `''` | |
3938
+ | disabled | `boolean` | `false` | |
3939
+
3940
+ Slots: _default_
3941
+
3942
+ ## Tolle Cell
3943
+
3944
+ - Install: `npx @tolle_/cli add tolle-cell`
3945
+ - Import: `import { TolleCellDirective } from '@tolle_/tolle-ui';`
3946
+
3947
+ ### `<[tolleCell]>` (directive)
3948
+
3949
+ Inputs:
3950
+
3951
+ | Name | Type | Default | Description |
3952
+ | --- | --- | --- | --- |
3953
+ | name | `string` | — | |
3954
+
3955
+ ## Tool
3956
+
3957
+ - Install: `npx @tolle_/cli add tool`
3958
+ - Import: `import { ToolComponent, ToolHeaderComponent, ToolPayloadBase, ToolInputComponent, ToolOutputComponent } from '@tolle_/tolle-ui';`
3959
+
3960
+ ### `<tolle-tool>`
3961
+
3962
+ Inputs:
3963
+
3964
+ | Name | Type | Default | Description |
3965
+ | --- | --- | --- | --- |
3966
+ | state | `ToolState` | `'pending'` | Lifecycle of the call, driving the header chip and border. |
3967
+ | open | `boolean` | `false` | Whether the call's input and output are expanded. |
3968
+ | class | `string` | `''` | Extra Tailwind classes merged onto the tool via `cn()` (last-wins). |
3969
+
3970
+ Outputs:
3971
+
3972
+ | Name | Payload | Description |
3973
+ | --- | --- | --- |
3974
+ | openChange | `boolean` | Emitted with the new state whenever the call is expanded or collapsed. |
3975
+
3976
+ Slots: _default_
3977
+
3978
+ ### `<tolle-tool-header>`
3979
+
3980
+ Inputs:
3981
+
3982
+ | Name | Type | Default | Description |
3983
+ | --- | --- | --- | --- |
3984
+ | name | `string` | `''` | Name of the tool that was called. |
3985
+ | icon | `string` | `'ri-tools-line'` | Remixicon class shown before the tool name. |
3986
+ | stateLabelOverride | `string` | `''` | Overrides the chip text; defaults to a label derived from the state. |
3987
+ | class | `string` | `''` | Extra Tailwind classes merged onto the header via `cn()` (last-wins). |
3988
+ | chipClassName | `string` | `''` | Extra Tailwind classes merged onto the state chip via `cn()` (last-wins). |
3989
+
3990
+ Slots: _default_
3991
+
3992
+ ### `<ToolPayloadBase>` (directive)
3993
+
3994
+ ### `<tolle-tool-input>`
3995
+
3996
+ Inputs:
3997
+
3998
+ | Name | Type | Default | Description |
3999
+ | --- | --- | --- | --- |
4000
+ | payload | `unknown` | `null` | Arguments passed to the tool; objects are pretty-printed as JSON. |
4001
+ | label | `string` | `'Parameters'` | Heading above the payload. |
4002
+ | class | `string` | `''` | Extra Tailwind classes merged onto the panel via `cn()` (last-wins). |
4003
+
4004
+ Slots: _default_
4005
+
4006
+ ### `<tolle-tool-output>`
4007
+
4008
+ Inputs:
4009
+
4010
+ | Name | Type | Default | Description |
4011
+ | --- | --- | --- | --- |
4012
+ | payload | `unknown` | `null` | Result returned by the tool; objects are pretty-printed as JSON. |
4013
+ | label | `string` | `'Result'` | Heading above the payload. |
4014
+ | error | `boolean` | `false` | Styles the payload as a failure. |
4015
+ | class | `string` | `''` | Extra Tailwind classes merged onto the panel via `cn()` (last-wins). |
4016
+
4017
+ Slots: _default_
4018
+
4019
+ ## Tooltip
4020
+
4021
+ - Install: `npx @tolle_/cli add tooltip`
4022
+ - Import: `import { TooltipDirective } from '@tolle_/tolle-ui';`
4023
+
4024
+ ### `<[tolleTooltip]>` (directive)
4025
+
4026
+ Inputs:
4027
+
4028
+ | Name | Type | Default | Description |
4029
+ | --- | --- | --- | --- |
4030
+ | content | `string` | `''` | |
4031
+ | placement | `'top' | 'bottom' | 'left' | 'right'` | `'top'` | |
4032
+
4033
+ ## Tracker
4034
+
4035
+ - Install: `npx @tolle_/cli add tracker`
4036
+ - Import: `import { TrackerComponent } from '@tolle_/tolle-ui';`
4037
+
4038
+ ### `<tolle-tracker>`
4039
+
4040
+ Inputs:
4041
+
4042
+ | Name | Type | Default | Description |
4043
+ | --- | --- | --- | --- |
4044
+ | data | `TrackerBlock[]` | `[]` | One block per period, in chronological order. |
4045
+ | blockHeight | `number` | `32` | Height of each block in px. |
4046
+ | ariaLabel | `string` | `''` | Accessible name for the whole strip. |
4047
+ | class | `string` | `''` | Extra Tailwind classes merged onto the strip via `cn()` (last-wins). |
4048
+
4049
+ ## Typography
4050
+
4051
+ - Install: `npx @tolle_/cli add typography`
4052
+ - Import: `import { TypographyComponent } from '@tolle_/tolle-ui';`
4053
+
4054
+ ### `<tolle-typography>`
4055
+
4056
+ Inputs:
4057
+
4058
+ | Name | Type | Default | Description |
4059
+ | --- | --- | --- | --- |
4060
+ | variant | `'h1' | 'h2' | 'h3' | 'h4' | 'p' | 'blockquote' | 'lead' | 'large' | 'small' | 'muted' | 'code'` | `'p'` | Type scale step; also selects the rendered HTML tag. |
4061
+ | class | `string` | `''` | Extra Tailwind classes merged onto the element via `cn()` (last-wins). |
4062
+
4063
+ Slots: _default_
4064
+
4065
+ Variants:
4066
+ - `variant`: `h1`, `h2`, `h3`, `h4`, `p`, `blockquote`, `lead`, `large`, `small`, `muted`, `code` (default `p`)
4067
+