@tolle_/tolle-ui 18.2.29 → 18.3.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 (294) hide show
  1. package/esm2022/lib/accordion-item.component.mjs +5 -11
  2. package/esm2022/lib/accordion.component.mjs +4 -9
  3. package/esm2022/lib/alert-dialog-dynamic.component.mjs +12 -12
  4. package/esm2022/lib/alert-dialog.component.mjs +82 -64
  5. package/esm2022/lib/alert-dialog.service.mjs +38 -6
  6. package/esm2022/lib/alert.component.mjs +5 -11
  7. package/esm2022/lib/aspect-ratio.component.mjs +119 -0
  8. package/esm2022/lib/attachment.component.mjs +334 -0
  9. package/esm2022/lib/avatar-fallback.component.mjs +3 -3
  10. package/esm2022/lib/avatar.component.mjs +4 -9
  11. package/esm2022/lib/badge.component.mjs +4 -9
  12. package/esm2022/lib/breadcrumb-item.component.mjs +3 -3
  13. package/esm2022/lib/breadcrumb-link.component.mjs +3 -3
  14. package/esm2022/lib/breadcrumb-separator.component.mjs +3 -3
  15. package/esm2022/lib/breadcrumb.component.mjs +3 -3
  16. package/esm2022/lib/bubble.component.mjs +301 -0
  17. package/esm2022/lib/button.component.mjs +5 -11
  18. package/esm2022/lib/calendar.component.mjs +5 -11
  19. package/esm2022/lib/card.component.mjs +14 -43
  20. package/esm2022/lib/carousel/carousel.component.mjs +5 -12
  21. package/esm2022/lib/chain-of-thought.component.mjs +380 -0
  22. package/esm2022/lib/chart-pie.component.mjs +386 -0
  23. package/esm2022/lib/chart.component.mjs +1146 -0
  24. package/esm2022/lib/chart.service.mjs +555 -0
  25. package/esm2022/lib/checkbox.component.mjs +5 -11
  26. package/esm2022/lib/checkpoint.component.mjs +134 -0
  27. package/esm2022/lib/collapsible.component.mjs +4 -11
  28. package/esm2022/lib/combobox.component.mjs +372 -0
  29. package/esm2022/lib/command-dialog.component.mjs +164 -0
  30. package/esm2022/lib/command.component.mjs +514 -0
  31. package/esm2022/lib/command.service.mjs +130 -0
  32. package/esm2022/lib/confirmation.component.mjs +219 -0
  33. package/esm2022/lib/context-menu-trigger.directive.mjs +36 -0
  34. package/esm2022/lib/context-menu.component.mjs +460 -0
  35. package/esm2022/lib/context-menu.service.mjs +125 -0
  36. package/esm2022/lib/context.component.mjs +377 -0
  37. package/esm2022/lib/conversation.component.mjs +442 -0
  38. package/esm2022/lib/country-selector.component.mjs +5 -11
  39. package/esm2022/lib/data-table.component.mjs +59 -12
  40. package/esm2022/lib/date-picker.component.mjs +251 -198
  41. package/esm2022/lib/date-range-picker.component.mjs +224 -116
  42. package/esm2022/lib/date-time-picker.component.mjs +506 -0
  43. package/esm2022/lib/direction.component.mjs +79 -0
  44. package/esm2022/lib/dropdown-item.component.mjs +3 -3
  45. package/esm2022/lib/dropdown-label.component.mjs +3 -3
  46. package/esm2022/lib/dropdown-menu.component.mjs +3 -3
  47. package/esm2022/lib/dropdown-separator.component.mjs +3 -3
  48. package/esm2022/lib/dropdown-trigger.directive.mjs +6 -4
  49. package/esm2022/lib/empty-state.component.mjs +4 -9
  50. package/esm2022/lib/field.component.mjs +394 -0
  51. package/esm2022/lib/hover-card.component.mjs +6 -16
  52. package/esm2022/lib/inline-citation.component.mjs +263 -0
  53. package/esm2022/lib/input-group.component.mjs +418 -0
  54. package/esm2022/lib/input.component.mjs +5 -11
  55. package/esm2022/lib/item.component.mjs +243 -0
  56. package/esm2022/lib/kbd.component.mjs +82 -0
  57. package/esm2022/lib/label.component.mjs +4 -9
  58. package/esm2022/lib/marker.component.mjs +135 -0
  59. package/esm2022/lib/masked-input.component.mjs +5 -11
  60. package/esm2022/lib/menubar.component.mjs +683 -0
  61. package/esm2022/lib/message-scroller.component.mjs +353 -0
  62. package/esm2022/lib/message-scroller.service.mjs +157 -0
  63. package/esm2022/lib/message.component.mjs +228 -0
  64. package/esm2022/lib/modal-ref.mjs +36 -7
  65. package/esm2022/lib/modal.component.mjs +42 -28
  66. package/esm2022/lib/modal.mjs +2 -29
  67. package/esm2022/lib/modal.service.mjs +26 -4
  68. package/esm2022/lib/model-selector.component.mjs +310 -0
  69. package/esm2022/lib/multi-select.component.mjs +155 -72
  70. package/esm2022/lib/native-select.component.mjs +201 -0
  71. package/esm2022/lib/navigation-menu.component.mjs +642 -0
  72. package/esm2022/lib/otp-group.component.mjs +3 -3
  73. package/esm2022/lib/otp-slot.component.mjs +4 -9
  74. package/esm2022/lib/otp.component.mjs +5 -11
  75. package/esm2022/lib/pagination.component.mjs +7 -10
  76. package/esm2022/lib/plan.component.mjs +335 -0
  77. package/esm2022/lib/popover-content.component.mjs +4 -9
  78. package/esm2022/lib/popover.component.mjs +15 -13
  79. package/esm2022/lib/progress.component.mjs +4 -9
  80. package/esm2022/lib/prompt-input.component.mjs +526 -0
  81. package/esm2022/lib/queue.component.mjs +280 -0
  82. package/esm2022/lib/radio-group.component.mjs +6 -13
  83. package/esm2022/lib/radio-item.component.mjs +4 -9
  84. package/esm2022/lib/range-calendar.component.mjs +5 -11
  85. package/esm2022/lib/reasoning.component.mjs +335 -0
  86. package/esm2022/lib/resizable-panel.component.mjs +5 -5
  87. package/esm2022/lib/resizable.component.mjs +219 -0
  88. package/esm2022/lib/segment.component.mjs +19 -9
  89. package/esm2022/lib/select-group.component.mjs +4 -8
  90. package/esm2022/lib/select-item.component.mjs +4 -9
  91. package/esm2022/lib/select-separator.component.mjs +4 -8
  92. package/esm2022/lib/select.component.mjs +133 -49
  93. package/esm2022/lib/separator.component.mjs +4 -9
  94. package/esm2022/lib/sheet.component.mjs +38 -56
  95. package/esm2022/lib/shimmer.component.mjs +84 -0
  96. package/esm2022/lib/sidebar.component.mjs +11 -1
  97. package/esm2022/lib/skeleton.component.mjs +4 -9
  98. package/esm2022/lib/sources.component.mjs +452 -0
  99. package/esm2022/lib/spinner.component.mjs +68 -0
  100. package/esm2022/lib/suggestion.component.mjs +207 -0
  101. package/esm2022/lib/switch.component.mjs +5 -11
  102. package/esm2022/lib/table.component.mjs +213 -0
  103. package/esm2022/lib/tabs.component.mjs +4 -11
  104. package/esm2022/lib/tag-input.component.mjs +5 -11
  105. package/esm2022/lib/task.component.mjs +359 -0
  106. package/esm2022/lib/textarea.component.mjs +5 -11
  107. package/esm2022/lib/theme.service.mjs +17 -6
  108. package/esm2022/lib/time-picker.component.mjs +923 -0
  109. package/esm2022/lib/toast.service.mjs +3 -2
  110. package/esm2022/lib/toaster.component.mjs +76 -39
  111. package/esm2022/lib/toggle-group.component.mjs +4 -9
  112. package/esm2022/lib/toggle.component.mjs +5 -11
  113. package/esm2022/lib/tool.component.mjs +462 -0
  114. package/esm2022/lib/typography.component.mjs +83 -0
  115. package/esm2022/lib/utils/color.mjs +140 -19
  116. package/esm2022/public-api.mjs +61 -1
  117. package/fesm2022/tolle-ui.mjs +16642 -1105
  118. package/fesm2022/tolle-ui.mjs.map +1 -1
  119. package/lib/alert-dialog-dynamic.component.d.ts +5 -0
  120. package/lib/alert-dialog.component.d.ts +23 -2
  121. package/lib/aspect-ratio.component.d.ts +20 -0
  122. package/lib/attachment.component.d.ts +101 -0
  123. package/lib/bubble.component.d.ts +112 -0
  124. package/lib/chain-of-thought.component.d.ts +166 -0
  125. package/lib/chart-pie.component.d.ts +108 -0
  126. package/lib/chart.component.d.ts +369 -0
  127. package/lib/chart.service.d.ts +222 -0
  128. package/lib/checkpoint.component.d.ts +51 -0
  129. package/lib/combobox.component.d.ts +90 -0
  130. package/lib/command-dialog.component.d.ts +53 -0
  131. package/lib/command.component.d.ts +189 -0
  132. package/lib/command.service.d.ts +67 -0
  133. package/lib/confirmation.component.d.ts +70 -0
  134. package/lib/context-menu-trigger.directive.d.ts +12 -0
  135. package/lib/context-menu.component.d.ts +41 -0
  136. package/lib/context-menu.service.d.ts +38 -0
  137. package/lib/context.component.d.ts +134 -0
  138. package/lib/conversation.component.d.ts +165 -0
  139. package/lib/data-table.component.d.ts +26 -1
  140. package/lib/date-picker.component.d.ts +72 -11
  141. package/lib/date-range-picker.component.d.ts +63 -6
  142. package/lib/date-time-picker.component.d.ts +119 -0
  143. package/lib/direction.component.d.ts +45 -0
  144. package/lib/field.component.d.ts +201 -0
  145. package/lib/inline-citation.component.d.ts +103 -0
  146. package/lib/input-group.component.d.ts +150 -0
  147. package/lib/item.component.d.ts +154 -0
  148. package/lib/kbd.component.d.ts +50 -0
  149. package/lib/marker.component.d.ts +58 -0
  150. package/lib/menubar.component.d.ts +247 -0
  151. package/lib/message-scroller.component.d.ts +159 -0
  152. package/lib/message-scroller.service.d.ts +73 -0
  153. package/lib/message.component.d.ts +128 -0
  154. package/lib/modal-ref.d.ts +6 -1
  155. package/lib/modal.component.d.ts +7 -4
  156. package/lib/modal.d.ts +9 -3
  157. package/lib/model-selector.component.d.ts +103 -0
  158. package/lib/multi-select.component.d.ts +66 -14
  159. package/lib/native-select.component.d.ts +57 -0
  160. package/lib/navigation-menu.component.d.ts +230 -0
  161. package/lib/plan.component.d.ts +120 -0
  162. package/lib/popover.component.d.ts +1 -0
  163. package/lib/prompt-input.component.d.ts +194 -0
  164. package/lib/queue.component.d.ts +106 -0
  165. package/lib/reasoning.component.d.ts +127 -0
  166. package/lib/resizable.component.d.ts +43 -0
  167. package/lib/segment.component.d.ts +13 -3
  168. package/lib/select.component.d.ts +37 -5
  169. package/lib/sheet.component.d.ts +3 -0
  170. package/lib/shimmer.component.d.ts +38 -0
  171. package/lib/sidebar.component.d.ts +2 -0
  172. package/lib/sources.component.d.ts +156 -0
  173. package/lib/spinner.component.d.ts +29 -0
  174. package/lib/suggestion.component.d.ts +96 -0
  175. package/lib/table.component.d.ts +106 -0
  176. package/lib/task.component.d.ts +151 -0
  177. package/lib/theme.service.d.ts +9 -0
  178. package/lib/time-picker.component.d.ts +243 -0
  179. package/lib/toast.service.d.ts +3 -1
  180. package/lib/toaster.component.d.ts +26 -9
  181. package/lib/tool.component.d.ts +158 -0
  182. package/lib/typography.component.d.ts +32 -0
  183. package/lib/utils/color.d.ts +19 -5
  184. package/package.json +3 -2
  185. package/preset.js +7 -1
  186. package/public-api.d.ts +50 -0
  187. package/registry/docs-content.json +8480 -1542
  188. package/registry/llms-full.txt +2679 -319
  189. package/registry/llms.txt +43 -4
  190. package/registry/manifest.json +9090 -1742
  191. package/registry/r/accordion-item.json +1 -1
  192. package/registry/r/accordion.json +1 -1
  193. package/registry/r/alert-dialog-dynamic.json +1 -1
  194. package/registry/r/alert-dialog.json +1 -1
  195. package/registry/r/alert.json +1 -1
  196. package/registry/r/attachment.json +23 -0
  197. package/registry/r/avatar-fallback.json +1 -1
  198. package/registry/r/avatar.json +1 -1
  199. package/registry/r/badge.json +1 -1
  200. package/registry/r/breadcrumb-item.json +1 -1
  201. package/registry/r/breadcrumb-link.json +1 -1
  202. package/registry/r/breadcrumb-separator.json +1 -1
  203. package/registry/r/breadcrumb.json +1 -1
  204. package/registry/r/bubble.json +23 -0
  205. package/registry/r/button.json +1 -1
  206. package/registry/r/calendar.json +1 -1
  207. package/registry/r/card.json +1 -1
  208. package/registry/r/carousel.json +1 -1
  209. package/registry/r/chain-of-thought.json +23 -0
  210. package/registry/r/chart-pie.json +30 -0
  211. package/registry/r/chart.json +28 -0
  212. package/registry/r/checkbox.json +1 -1
  213. package/registry/r/checkpoint.json +23 -0
  214. package/registry/r/collapsible.json +1 -1
  215. package/registry/r/combobox.json +31 -0
  216. package/registry/r/command-dialog.json +21 -0
  217. package/registry/r/command.json +26 -0
  218. package/registry/r/confirmation.json +23 -0
  219. package/registry/r/context-menu-trigger.json +1 -1
  220. package/registry/r/context-menu.json +1 -1
  221. package/registry/r/context.json +26 -0
  222. package/registry/r/conversation.json +23 -0
  223. package/registry/r/country-selector.json +1 -1
  224. package/registry/r/data-table.json +1 -1
  225. package/registry/r/date-picker.json +4 -4
  226. package/registry/r/date-range-picker.json +3 -3
  227. package/registry/r/date-time-picker.json +28 -0
  228. package/registry/r/direction.json +16 -0
  229. package/registry/r/dropdown-item.json +1 -1
  230. package/registry/r/dropdown-label.json +1 -1
  231. package/registry/r/dropdown-menu.json +1 -1
  232. package/registry/r/dropdown-separator.json +1 -1
  233. package/registry/r/dropdown-trigger.json +1 -1
  234. package/registry/r/empty-state.json +1 -1
  235. package/registry/r/field.json +23 -0
  236. package/registry/r/hover-card.json +1 -1
  237. package/registry/r/inline-citation.json +26 -0
  238. package/registry/r/input-group.json +23 -0
  239. package/registry/r/input.json +1 -1
  240. package/registry/r/item.json +23 -0
  241. package/registry/r/kbd.json +23 -0
  242. package/registry/r/label.json +1 -1
  243. package/registry/r/marker.json +23 -0
  244. package/registry/r/masked-input.json +1 -1
  245. package/registry/r/menubar.json +24 -0
  246. package/registry/r/message-scroller.json +26 -0
  247. package/registry/r/message.json +23 -0
  248. package/registry/r/modal.json +3 -3
  249. package/registry/r/model-selector.json +32 -0
  250. package/registry/r/multi-select.json +2 -2
  251. package/registry/r/native-select.json +23 -0
  252. package/registry/r/navigation-menu.json +24 -0
  253. package/registry/r/otp-group.json +1 -1
  254. package/registry/r/otp-slot.json +1 -1
  255. package/registry/r/otp.json +1 -1
  256. package/registry/r/pagination.json +3 -2
  257. package/registry/r/plan.json +23 -0
  258. package/registry/r/popover-content.json +1 -1
  259. package/registry/r/popover.json +1 -1
  260. package/registry/r/progress.json +1 -1
  261. package/registry/r/prompt-input.json +23 -0
  262. package/registry/r/queue.json +23 -0
  263. package/registry/r/radio-group.json +1 -1
  264. package/registry/r/radio-item.json +1 -1
  265. package/registry/r/range-calendar.json +1 -1
  266. package/registry/r/reasoning.json +23 -0
  267. package/registry/r/resizable-panel.json +1 -1
  268. package/registry/r/segment.json +1 -1
  269. package/registry/r/select-group.json +1 -1
  270. package/registry/r/select-item.json +1 -1
  271. package/registry/r/select-separator.json +1 -1
  272. package/registry/r/select.json +4 -3
  273. package/registry/r/separator.json +1 -1
  274. package/registry/r/sheet.json +1 -1
  275. package/registry/r/shimmer.json +23 -0
  276. package/registry/r/sidebar.json +1 -1
  277. package/registry/r/skeleton.json +1 -1
  278. package/registry/r/sources.json +23 -0
  279. package/registry/r/spinner.json +23 -0
  280. package/registry/r/suggestion.json +23 -0
  281. package/registry/r/switch.json +1 -1
  282. package/registry/r/table.json +21 -0
  283. package/registry/r/tabs.json +1 -1
  284. package/registry/r/tag-input.json +1 -1
  285. package/registry/r/task.json +23 -0
  286. package/registry/r/textarea.json +1 -1
  287. package/registry/r/time-picker.json +24 -0
  288. package/registry/r/toaster.json +2 -2
  289. package/registry/r/toggle-group.json +1 -1
  290. package/registry/r/toggle.json +1 -1
  291. package/registry/r/tool.json +23 -0
  292. package/registry/r/typography.json +23 -0
  293. package/registry/registry.json +915 -22
  294. package/theme.css +121 -8
@@ -1,44 +1,94 @@
1
- import { QueryList, AfterContentInit, ElementRef, OnDestroy } from '@angular/core';
1
+ import { EventEmitter, QueryList, AfterContentInit, ElementRef, OnChanges, OnDestroy, ChangeDetectorRef } from '@angular/core';
2
2
  import { ControlValueAccessor } from '@angular/forms';
3
+ import { type VariantProps } from 'class-variance-authority';
3
4
  import { SelectItemComponent } from './select-item.component';
4
5
  import { SelectService } from './select.service';
5
6
  import { cn } from './utils/cn';
6
7
  import * as i0 from "@angular/core";
7
- export declare class MultiSelectComponent implements ControlValueAccessor, AfterContentInit, OnDestroy {
8
+ declare const multiSelectTriggerVariants: (props?: ({
9
+ size?: "default" | "xs" | "sm" | "lg" | null | undefined;
10
+ error?: boolean | null | undefined;
11
+ disabled?: boolean | null | undefined;
12
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
13
+ export type MultiSelectProps = VariantProps<typeof multiSelectTriggerVariants>;
14
+ /** One chip on the trigger, standing for a selected option. */
15
+ export interface MultiSelectChip {
16
+ label: string;
17
+ value: any;
18
+ }
19
+ /**
20
+ * A multi-select listbox: a trigger that shows the current selection as
21
+ * removable chips and opens a floating panel of `tolle-select-item` options.
22
+ * Implements `ControlValueAccessor`, so it works with `ngModel` and reactive
23
+ * forms.
24
+ */
25
+ export declare class MultiSelectComponent implements ControlValueAccessor, AfterContentInit, OnChanges, OnDestroy {
8
26
  private selectService;
27
+ private cdr;
28
+ /** Text shown on the trigger when nothing is selected. @default 'Select options...' */
9
29
  placeholder: string;
10
- size: 'xs' | 'sm' | 'default' | 'lg';
30
+ /** Padding and text size of the trigger. @default 'default' */
31
+ size: MultiSelectProps['size'];
32
+ /** Adds a search box that filters the projected options. @default false */
11
33
  searchable: boolean;
34
+ /** Disables the control and blocks opening the panel. @default false */
12
35
  disabled: boolean;
36
+ /** Extra Tailwind classes merged onto the trigger via `cn()` (last-wins). @default '' */
13
37
  class: string;
38
+ /** Largest number of values that can be selected at once; leave unset for no cap. */
14
39
  maxSelections?: number;
40
+ /** How many chips to render before collapsing the rest into a "+N more" hint. @default 3 */
15
41
  maxDisplayItems: number;
42
+ /** Applies the destructive border and focus ring. @default false */
16
43
  error: boolean;
44
+ /** Emitted with the full array of selected values whenever the selection changes. */
45
+ valueChange: EventEmitter<any[]>;
46
+ /** Emitted when the panel opens. */
47
+ opened: EventEmitter<void>;
48
+ /** Emitted when the panel closes. */
49
+ closed: EventEmitter<void>;
17
50
  trigger: ElementRef;
18
51
  popover: ElementRef;
19
52
  searchInput?: ElementRef<HTMLElement>;
20
53
  items: QueryList<SelectItemComponent>;
21
54
  value: any[];
22
- selectedItems: {
23
- label: string;
24
- value: any;
25
- }[];
55
+ selectedItems: MultiSelectChip[];
56
+ /**
57
+ * The chips actually rendered, built into a field rather than read from a
58
+ * getter. A getter hands `*ngFor` a freshly-allocated array on every
59
+ * change-detection pass; paired with the default identity differ that tore
60
+ * down and rebuilt every badge — including the one under the pointer, whose
61
+ * destruction re-fires its own remove handler. See `trackChip` below, which
62
+ * closes the same hole for the rebuilt chip objects `syncItems()` produces.
63
+ */
64
+ displayItems: MultiSelectChip[];
65
+ exceedsDisplayLimit: boolean;
26
66
  isOpen: boolean;
27
67
  searchQuery: string;
28
68
  noResults: boolean;
29
69
  private cleanup?;
70
+ private sub;
30
71
  activeIndex: number;
31
72
  private typeaheadBuffer;
32
73
  private typeaheadTime;
33
74
  private pendingTypeaheadChar;
34
- constructor(selectService: SelectService);
75
+ constructor(selectService: SelectService, cdr: ChangeDetectorRef);
35
76
  get computedTriggerClass(): string;
36
77
  ngAfterContentInit(): void;
37
- get displayItems(): {
38
- label: string;
39
- value: any;
40
- }[];
41
- get exceedsDisplayLimit(): boolean;
78
+ /**
79
+ * `maxDisplayItems` decides how much of the selection is rendered, so the
80
+ * chip list has to be rebuilt when it changes.
81
+ *
82
+ * The `markForCheck()` is not redundant: under OnPush a `[class]` binding is
83
+ * applied through Angular's *styling* path, which writes the input but —
84
+ * unlike a plain property binding — never marks the component dirty, so the
85
+ * trigger would keep rendering the class it was born with.
86
+ */
87
+ ngOnChanges(): void;
88
+ /** `*ngFor` identity for the chips — keyed on the option value, not the
89
+ * wrapper object, which `syncItems()` re-allocates on every sync. */
90
+ trackChip: (_index: number, chip: MultiSelectChip) => any;
91
+ private refreshDisplay;
42
92
  get selectableItems(): SelectItemComponent[];
43
93
  get availableSelections(): number;
44
94
  private _outsideClickHandler;
@@ -50,6 +100,7 @@ export declare class MultiSelectComponent implements ControlValueAccessor, After
50
100
  selectAll(): void;
51
101
  clearAll(): void;
52
102
  removeValue(event: MouseEvent, val: any): void;
103
+ private emitValue;
53
104
  private syncItems;
54
105
  onSearchChange(q: string): void;
55
106
  private get navigableItems();
@@ -76,5 +127,6 @@ export declare class MultiSelectComponent implements ControlValueAccessor, After
76
127
  setDisabledState(isDisabled: boolean): void;
77
128
  protected cn: typeof cn;
78
129
  static ɵfac: i0.ɵɵFactoryDeclaration<MultiSelectComponent, never>;
79
- static ɵcmp: i0.ɵɵComponentDeclaration<MultiSelectComponent, "tolle-multi-select", never, { "placeholder": { "alias": "placeholder"; "required": false; }; "size": { "alias": "size"; "required": false; }; "searchable": { "alias": "searchable"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "class": { "alias": "class"; "required": false; }; "maxSelections": { "alias": "maxSelections"; "required": false; }; "maxDisplayItems": { "alias": "maxDisplayItems"; "required": false; }; "error": { "alias": "error"; "required": false; }; }, {}, ["items"], ["*"], true, never>;
130
+ static ɵcmp: i0.ɵɵComponentDeclaration<MultiSelectComponent, "tolle-multi-select", never, { "placeholder": { "alias": "placeholder"; "required": false; }; "size": { "alias": "size"; "required": false; }; "searchable": { "alias": "searchable"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "class": { "alias": "class"; "required": false; }; "maxSelections": { "alias": "maxSelections"; "required": false; }; "maxDisplayItems": { "alias": "maxDisplayItems"; "required": false; }; "error": { "alias": "error"; "required": false; }; }, { "valueChange": "valueChange"; "opened": "opened"; "closed": "closed"; }, ["items"], ["*"], true, never>;
80
131
  }
132
+ export {};
@@ -0,0 +1,57 @@
1
+ import { EventEmitter, ChangeDetectorRef } from '@angular/core';
2
+ import { ControlValueAccessor } from '@angular/forms';
3
+ import { type VariantProps } from 'class-variance-authority';
4
+ import * as i0 from "@angular/core";
5
+ declare const nativeSelectVariants: (props?: ({
6
+ size?: "default" | "xs" | "sm" | "lg" | null | undefined;
7
+ invalid?: boolean | null | undefined;
8
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
9
+ export type NativeSelectProps = VariantProps<typeof nativeSelectVariants>;
10
+ export type NativeSelectOption = {
11
+ label: string;
12
+ value: any;
13
+ disabled?: boolean;
14
+ };
15
+ /**
16
+ * A styled native `<select>`. Unlike `tolle-select` it uses the platform
17
+ * dropdown, so it needs no portal or floating-ui and works well on mobile and
18
+ * inside forms that must degrade without JavaScript.
19
+ *
20
+ * Options come from `options`, or from projected `<option>` elements when you
21
+ * need `<optgroup>` or custom markup.
22
+ * @new
23
+ */
24
+ export declare class NativeSelectComponent implements ControlValueAccessor {
25
+ private cdr;
26
+ /** Id applied to the underlying `<select>`; pair it with a `tolle-label`. */
27
+ id: string;
28
+ /** Options to render. Omit and project `<option>` elements for custom markup. @default [] */
29
+ options: NativeSelectOption[];
30
+ /** Non-selectable prompt shown when no value is set. @default '' */
31
+ placeholder: string;
32
+ /** Height and text size of the control. @default 'default' */
33
+ size: NativeSelectProps['size'];
34
+ /** Applies the destructive border and sets `aria-invalid`. @default false */
35
+ invalid: boolean;
36
+ /** Disables the control. @default false */
37
+ disabled: boolean;
38
+ /** Accessible name when there is no associated visible label. @default '' */
39
+ ariaLabel: string;
40
+ /** Extra Tailwind classes merged onto the `<select>` via `cn()` (last-wins). */
41
+ class: string;
42
+ /** Emitted with the newly selected value whenever the user picks an option. */
43
+ valueChange: EventEmitter<any>;
44
+ value: any;
45
+ onChange: (value: any) => void;
46
+ onTouched: () => void;
47
+ constructor(cdr: ChangeDetectorRef);
48
+ get computedClass(): string;
49
+ onSelectChange(event: Event): void;
50
+ writeValue(value: any): void;
51
+ registerOnChange(fn: (value: any) => void): void;
52
+ registerOnTouched(fn: () => void): void;
53
+ setDisabledState(isDisabled: boolean): void;
54
+ static ɵfac: i0.ɵɵFactoryDeclaration<NativeSelectComponent, never>;
55
+ static ɵcmp: i0.ɵɵComponentDeclaration<NativeSelectComponent, "tolle-native-select", never, { "id": { "alias": "id"; "required": false; }; "options": { "alias": "options"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "size": { "alias": "size"; "required": false; }; "invalid": { "alias": "invalid"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; }; "class": { "alias": "class"; "required": false; }; }, { "valueChange": "valueChange"; }, never, ["*"], true, never>;
56
+ }
57
+ export {};
@@ -0,0 +1,230 @@
1
+ import { ElementRef, EventEmitter, OnDestroy, OnInit, OnChanges } from '@angular/core';
2
+ import { type VariantProps } from 'class-variance-authority';
3
+ import { cn } from './utils/cn';
4
+ import * as i0 from "@angular/core";
5
+ /**
6
+ * Coordinates the items of a single `tolle-navigation-menu`. Provided by
7
+ * `NavigationMenuComponent`, injected by its descendants.
8
+ *
9
+ * Closing is deferred by `closeDelay` so a pointer travelling diagonally from a
10
+ * trigger into its panel does not dismiss the menu mid-flight; re-entering
11
+ * either surface calls `cancelClose()` and the pending close is dropped.
12
+ */
13
+ export declare class NavigationMenuService {
14
+ private openIdSource;
15
+ /** Emits the id of the currently open item, or `null` when all are closed. */
16
+ readonly openId$: import("rxjs").Observable<string | null>;
17
+ /** Milliseconds to wait before closing after the pointer leaves. */
18
+ closeDelay: number;
19
+ private closeTimer;
20
+ /** Id of the open item, or `null`. */
21
+ get openId(): string | null;
22
+ /** True while any panel is open. */
23
+ get isAnyOpen(): boolean;
24
+ /** True while a deferred close is pending — exposed for tests/diagnostics. */
25
+ get isCloseScheduled(): boolean;
26
+ isOpen(id: string): boolean;
27
+ /** Opens an item immediately and cancels any pending close. */
28
+ open(id: string): void;
29
+ /** Closes immediately, dropping any pending close. */
30
+ closeNow(): void;
31
+ /** Queues a close in `closeDelay` ms; a later `open`/`cancelClose` wins. */
32
+ scheduleClose(): void;
33
+ /** Drops a pending close (pointer came back). */
34
+ cancelClose(): void;
35
+ toggle(id: string): void;
36
+ static ɵfac: i0.ɵɵFactoryDeclaration<NavigationMenuService, never>;
37
+ static ɵprov: i0.ɵɵInjectableDeclaration<NavigationMenuService>;
38
+ }
39
+ declare const navigationMenuVariants: (props?: ({
40
+ align?: "start" | "end" | "center" | null | undefined;
41
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
42
+ export type NavigationMenuProps = VariantProps<typeof navigationMenuVariants>;
43
+ declare const navigationMenuTriggerVariants: (props?: ({
44
+ size?: "default" | "sm" | "lg" | null | undefined;
45
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
46
+ export type NavigationMenuTriggerProps = VariantProps<typeof navigationMenuTriggerVariants>;
47
+ declare const navigationMenuLinkVariants: (props?: ({
48
+ variant?: "default" | "muted" | null | undefined;
49
+ active?: boolean | null | undefined;
50
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
51
+ export type NavigationMenuLinkProps = VariantProps<typeof navigationMenuLinkVariants>;
52
+ /**
53
+ * Site navigation menu: a row of links and triggers, where each trigger reveals
54
+ * a floating panel on hover, focus or click.
55
+ *
56
+ * ```html
57
+ * <tolle-navigation-menu>
58
+ * <tolle-navigation-menu-list>
59
+ * <tolle-navigation-menu-item>
60
+ * <tolle-navigation-menu-trigger>Products</tolle-navigation-menu-trigger>
61
+ * <tolle-navigation-menu-content class="w-[420px]">
62
+ * <tolle-navigation-menu-link href="/analytics">Analytics</tolle-navigation-menu-link>
63
+ * </tolle-navigation-menu-content>
64
+ * </tolle-navigation-menu-item>
65
+ * </tolle-navigation-menu-list>
66
+ * </tolle-navigation-menu>
67
+ * ```
68
+ * @new
69
+ */
70
+ export declare class NavigationMenuComponent implements OnChanges, OnInit, OnDestroy {
71
+ private readonly cdr;
72
+ /**
73
+ * Angular writes a bound `class` input through its styling path, which does
74
+ * not mark an OnPush component dirty — without this hook the component keeps
75
+ * rendering the class it was born with.
76
+ */
77
+ ngOnChanges(): void;
78
+ /** Horizontal alignment of the list within the nav. @default 'center' */
79
+ align: NavigationMenuProps['align'];
80
+ /** Accessible name for the `<nav>` landmark. @default 'Main' */
81
+ ariaLabel: string;
82
+ /**
83
+ * Milliseconds before a panel closes after the pointer leaves — the grace
84
+ * period that lets the pointer travel diagonally into the panel. @default 150
85
+ */
86
+ set closeDelay(value: number);
87
+ get closeDelay(): number;
88
+ /** Extra Tailwind classes merged onto the `<nav>` via `cn()` (last-wins). */
89
+ class: string;
90
+ /** Emitted with the id of the item that opened, or `null` when the menu closes. */
91
+ openChange: EventEmitter<string | null>;
92
+ private readonly service;
93
+ private readonly host;
94
+ private readonly sub;
95
+ private listening;
96
+ protected get computedClass(): string;
97
+ ngOnInit(): void;
98
+ protected onKeydown(event: KeyboardEvent): void;
99
+ private outsideClick;
100
+ private startListening;
101
+ private stopListening;
102
+ ngOnDestroy(): void;
103
+ static ɵfac: i0.ɵɵFactoryDeclaration<NavigationMenuComponent, never>;
104
+ static ɵcmp: i0.ɵɵComponentDeclaration<NavigationMenuComponent, "tolle-navigation-menu", never, { "align": { "alias": "align"; "required": false; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; }; "closeDelay": { "alias": "closeDelay"; "required": false; }; "class": { "alias": "class"; "required": false; }; }, { "openChange": "openChange"; }, never, ["*"], true, never>;
105
+ }
106
+ /** The horizontal list that holds the navigation items. */
107
+ export declare class NavigationMenuListComponent implements OnChanges {
108
+ private readonly cdr;
109
+ /**
110
+ * Angular writes a bound `class` input through its styling path, which does
111
+ * not mark an OnPush component dirty — without this hook the component keeps
112
+ * rendering the class it was born with.
113
+ */
114
+ ngOnChanges(): void;
115
+ /** Extra Tailwind classes merged onto the `<ul>` via `cn()` (last-wins). */
116
+ class: string;
117
+ protected readonly cn: typeof cn;
118
+ static ɵfac: i0.ɵɵFactoryDeclaration<NavigationMenuListComponent, never>;
119
+ static ɵcmp: i0.ɵɵComponentDeclaration<NavigationMenuListComponent, "tolle-navigation-menu-list", never, { "class": { "alias": "class"; "required": false; }; }, {}, never, ["*"], true, never>;
120
+ }
121
+ /** One entry in the list — a plain link, or a trigger plus its content panel. */
122
+ export declare class NavigationMenuItemComponent implements OnChanges, OnDestroy {
123
+ private readonly cdr;
124
+ /**
125
+ * Angular writes a bound `class` input through its styling path, which does
126
+ * not mark an OnPush component dirty — without this hook the component keeps
127
+ * rendering the class it was born with.
128
+ */
129
+ ngOnChanges(): void;
130
+ /** Explicit id for the item; one is generated when omitted. */
131
+ id: string;
132
+ /** Extra Tailwind classes merged onto the `<li>` via `cn()` (last-wins). */
133
+ class: string;
134
+ readonly service: NavigationMenuService;
135
+ protected readonly cn: typeof cn;
136
+ triggerElement: HTMLElement | null;
137
+ get triggerId(): string;
138
+ get contentId(): string;
139
+ get isOpen(): boolean;
140
+ ngOnDestroy(): void;
141
+ static ɵfac: i0.ɵɵFactoryDeclaration<NavigationMenuItemComponent, never>;
142
+ static ɵcmp: i0.ɵɵComponentDeclaration<NavigationMenuItemComponent, "tolle-navigation-menu-item", never, { "id": { "alias": "id"; "required": false; }; "class": { "alias": "class"; "required": false; }; }, {}, never, ["*"], true, never>;
143
+ }
144
+ /** Button that reveals its item's panel on hover, focus or click. */
145
+ export declare class NavigationMenuTriggerComponent implements OnChanges, OnDestroy {
146
+ /**
147
+ * Angular writes a bound `class` input through its styling path, which does
148
+ * not mark an OnPush component dirty — without this hook the component keeps
149
+ * rendering the class it was born with.
150
+ */
151
+ ngOnChanges(): void;
152
+ /** Prevents the panel from opening. @default false */
153
+ disabled: boolean;
154
+ /** Height/padding scale of the trigger. @default 'default' */
155
+ size: NavigationMenuTriggerProps['size'];
156
+ /** Extra Tailwind classes merged onto the trigger via `cn()` (last-wins). */
157
+ class: string;
158
+ protected readonly item: NavigationMenuItemComponent;
159
+ private readonly service;
160
+ private readonly cdr;
161
+ private readonly sub;
162
+ constructor();
163
+ set triggerRef(ref: ElementRef<HTMLButtonElement> | undefined);
164
+ protected get isOpen(): boolean;
165
+ protected get computedClass(): string;
166
+ protected onClick(): void;
167
+ protected onPointerEnter(): void;
168
+ protected onPointerLeave(): void;
169
+ protected onKeydown(event: KeyboardEvent): void;
170
+ ngOnDestroy(): void;
171
+ static ɵfac: i0.ɵɵFactoryDeclaration<NavigationMenuTriggerComponent, never>;
172
+ static ɵcmp: i0.ɵɵComponentDeclaration<NavigationMenuTriggerComponent, "tolle-navigation-menu-trigger", never, { "disabled": { "alias": "disabled"; "required": false; }; "size": { "alias": "size"; "required": false; }; "class": { "alias": "class"; "required": false; }; }, {}, never, ["*"], true, never>;
173
+ }
174
+ /** The floating panel revealed by a trigger. Rendered only while open. */
175
+ export declare class NavigationMenuContentComponent implements OnChanges, OnDestroy {
176
+ /**
177
+ * Angular writes a bound `class` input through its styling path, which does
178
+ * not mark an OnPush component dirty — without this hook the component keeps
179
+ * rendering the class it was born with.
180
+ */
181
+ ngOnChanges(): void;
182
+ /** Preferred side of the trigger to render on; flips when space is tight. @default 'bottom' */
183
+ placement: 'bottom' | 'bottom-start' | 'bottom-end' | 'top' | 'top-start' | 'top-end';
184
+ /** Gap in pixels between the trigger and the panel. @default 8 */
185
+ sideOffset: number;
186
+ /** Extra Tailwind classes merged onto the panel via `cn()` (last-wins). */
187
+ class: string;
188
+ protected readonly item: NavigationMenuItemComponent;
189
+ private readonly service;
190
+ private readonly cdr;
191
+ private readonly sub;
192
+ private cleanup?;
193
+ constructor();
194
+ set panelRef(ref: ElementRef<HTMLElement> | undefined);
195
+ protected get isOpen(): boolean;
196
+ protected get computedClass(): string;
197
+ protected onPointerEnter(): void;
198
+ protected onPointerLeave(): void;
199
+ private startPositioning;
200
+ private stopPositioning;
201
+ ngOnDestroy(): void;
202
+ static ɵfac: i0.ɵɵFactoryDeclaration<NavigationMenuContentComponent, never>;
203
+ static ɵcmp: i0.ɵɵComponentDeclaration<NavigationMenuContentComponent, "tolle-navigation-menu-content", never, { "placement": { "alias": "placement"; "required": false; }; "sideOffset": { "alias": "sideOffset"; "required": false; }; "class": { "alias": "class"; "required": false; }; }, {}, never, ["*"], true, never>;
204
+ }
205
+ /** A link inside a panel (or directly in the list, for flat entries). */
206
+ export declare class NavigationMenuLinkComponent implements OnChanges {
207
+ private readonly cdr;
208
+ /**
209
+ * Angular writes a bound `class` input through its styling path, which does
210
+ * not mark an OnPush component dirty — without this hook the component keeps
211
+ * rendering the class it was born with.
212
+ */
213
+ ngOnChanges(): void;
214
+ /** Destination URL. Omit to render a non-navigating item. */
215
+ href: string;
216
+ /** Anchor target; `_blank` also sets a safe `rel`. */
217
+ target: string;
218
+ /** Marks the link as the current page. @default false */
219
+ active: boolean;
220
+ /** Visual style of the link. @default 'default' */
221
+ variant: NavigationMenuLinkProps['variant'];
222
+ /** Extra Tailwind classes merged onto the anchor via `cn()` (last-wins). */
223
+ class: string;
224
+ /** Emitted with the click event when the link is activated. */
225
+ navigate: EventEmitter<MouseEvent>;
226
+ protected get computedClass(): string;
227
+ static ɵfac: i0.ɵɵFactoryDeclaration<NavigationMenuLinkComponent, never>;
228
+ static ɵcmp: i0.ɵɵComponentDeclaration<NavigationMenuLinkComponent, "tolle-navigation-menu-link", never, { "href": { "alias": "href"; "required": false; }; "target": { "alias": "target"; "required": false; }; "active": { "alias": "active"; "required": false; }; "variant": { "alias": "variant"; "required": false; }; "class": { "alias": "class"; "required": false; }; }, { "navigate": "navigate"; }, never, ["[label]", "*", "[description]"], true, never>;
229
+ }
230
+ export {};
@@ -0,0 +1,120 @@
1
+ import { EventEmitter, OnChanges, OnDestroy, OnInit } from '@angular/core';
2
+ import { type VariantProps } from 'class-variance-authority';
3
+ import * as i0 from "@angular/core";
4
+ /** Progress of a single step in an agent plan. */
5
+ export type PlanStepStatus = 'pending' | 'active' | 'done' | 'skipped';
6
+ /** How far through the plan the agent is. */
7
+ export interface PlanProgress {
8
+ /** 1-based position of the step being worked on, or of the last finished one. */
9
+ current: number;
10
+ /** Number of registered steps. */
11
+ total: number;
12
+ }
13
+ declare const planVariants: (props?: ({
14
+ size?: "default" | "sm" | null | undefined;
15
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
16
+ export type PlanProps = VariantProps<typeof planVariants>;
17
+ declare const planStepVariants: (props?: ({
18
+ status?: "active" | "pending" | "done" | "skipped" | null | undefined;
19
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
20
+ export type PlanStepProps = VariantProps<typeof planStepVariants>;
21
+ /**
22
+ * Coordinates a `tolle-plan` and its steps: assigns each step its number and
23
+ * derives the "Step N of M" summary.
24
+ *
25
+ * The header is `OnPush` and the step count is not one of its inputs, so the
26
+ * summary is published as an observable and every subscriber calls
27
+ * `markForCheck()`.
28
+ */
29
+ export declare class PlanService {
30
+ private readonly statuses;
31
+ private readonly order;
32
+ private readonly progressSource;
33
+ /** Emits the plan's current position and step count. */
34
+ readonly progress$: import("rxjs").Observable<PlanProgress>;
35
+ private readonly collapsedSource;
36
+ /** Emits whether the plan is showing only its summary row. */
37
+ readonly collapsed$: import("rxjs").Observable<boolean>;
38
+ get progress(): PlanProgress;
39
+ get collapsed(): boolean;
40
+ setCollapsed(collapsed: boolean): void;
41
+ toggleCollapsed(): void;
42
+ /** Registers a step and returns its 1-based number. */
43
+ register(id: string, status: PlanStepStatus): number;
44
+ setStatus(id: string, status: PlanStepStatus): void;
45
+ unregister(id: string): void;
46
+ /**
47
+ * "Current" is the first step still in flight — the active one if there is
48
+ * one, otherwise however many have already been resolved.
49
+ */
50
+ private recompute;
51
+ static ɵfac: i0.ɵɵFactoryDeclaration<PlanService, never>;
52
+ static ɵprov: i0.ɵɵInjectableDeclaration<PlanService>;
53
+ }
54
+ /**
55
+ * An ordered plan the agent intends to work through. Each `tolle-plan-step`
56
+ * numbers itself and joins the connector line; collapsing the plan swaps the
57
+ * steps for a single "Step N of M" summary.
58
+ *
59
+ * ```html
60
+ * <tolle-plan title="Migration plan">
61
+ * <tolle-plan-step label="Read the schema" status="done"></tolle-plan-step>
62
+ * <tolle-plan-step label="Write the migration" status="active"></tolle-plan-step>
63
+ * <tolle-plan-step label="Run it" status="pending"></tolle-plan-step>
64
+ * </tolle-plan>
65
+ * ```
66
+ * @new
67
+ */
68
+ export declare class PlanComponent implements OnInit, OnChanges, OnDestroy {
69
+ /** Heading shown above the steps. @default 'Plan' */
70
+ title: string;
71
+ /** Shows only the header and its "Step N of M" summary. @default false */
72
+ collapsed: boolean;
73
+ /** Lets the user collapse and expand the plan by clicking the header. @default true */
74
+ collapsible: boolean;
75
+ /** Padding and text scale of the plan. @default 'default' */
76
+ size: PlanProps['size'];
77
+ /** Extra Tailwind classes merged onto the plan via `cn()` (last-wins). */
78
+ class: string;
79
+ /** Emitted with the new collapsed state when the header is toggled. */
80
+ collapsedChange: EventEmitter<boolean>;
81
+ private readonly service;
82
+ private readonly cdr;
83
+ private readonly sub;
84
+ isCollapsed: boolean;
85
+ progress: PlanProgress;
86
+ ngOnInit(): void;
87
+ ngOnChanges(): void;
88
+ ngOnDestroy(): void;
89
+ /** The compact "Step N of M" label, empty until at least one step registers. */
90
+ get summary(): string;
91
+ get computedClass(): string;
92
+ get headerClass(): string;
93
+ toggle(): void;
94
+ static ɵfac: i0.ɵɵFactoryDeclaration<PlanComponent, never>;
95
+ static ɵcmp: i0.ɵɵComponentDeclaration<PlanComponent, "tolle-plan", never, { "title": { "alias": "title"; "required": false; }; "collapsed": { "alias": "collapsed"; "required": false; }; "collapsible": { "alias": "collapsible"; "required": false; }; "size": { "alias": "size"; "required": false; }; "class": { "alias": "class"; "required": false; }; }, { "collapsedChange": "collapsedChange"; }, never, ["*"], true, never>;
96
+ }
97
+ /** One numbered step of a `tolle-plan`. */
98
+ export declare class PlanStepComponent implements OnInit, OnChanges, OnDestroy {
99
+ /** What this step does. @default '' */
100
+ label: string;
101
+ /** Supporting detail shown under the label. @default '' */
102
+ description: string;
103
+ /** Progress of this step; drives the badge colour and glyph. @default 'pending' */
104
+ status: PlanStepStatus;
105
+ /** Extra Tailwind classes merged onto the step via `cn()` (last-wins). */
106
+ class: string;
107
+ private readonly service;
108
+ private readonly id;
109
+ /** 1-based position of this step, assigned on registration. */
110
+ index: number;
111
+ ngOnInit(): void;
112
+ ngOnChanges(): void;
113
+ ngOnDestroy(): void;
114
+ get computedClass(): string;
115
+ get badgeClass(): string;
116
+ get labelClass(): string;
117
+ static ɵfac: i0.ɵɵFactoryDeclaration<PlanStepComponent, never>;
118
+ static ɵcmp: i0.ɵɵComponentDeclaration<PlanStepComponent, "tolle-plan-step", never, { "label": { "alias": "label"; "required": false; }; "description": { "alias": "description"; "required": false; }; "status": { "alias": "status"; "required": false; }; "class": { "alias": "class"; "required": false; }; }, {}, never, ["*"], true, never>;
119
+ }
120
+ export {};
@@ -9,6 +9,7 @@ export declare class PopoverComponent implements OnDestroy {
9
9
  isOpen: boolean;
10
10
  private cleanup?;
11
11
  private _outsideClickHandler;
12
+ private _escapeHandler;
12
13
  toggle(): void;
13
14
  open(): void;
14
15
  close(): void;