@tolle_/tolle-ui 18.2.24 → 18.2.25

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 (184) hide show
  1. package/esm2022/lib/accordion-item.component.mjs +17 -5
  2. package/esm2022/lib/alert-dialog-dynamic.component.mjs +1 -1
  3. package/esm2022/lib/alert-dialog.component.mjs +48 -10
  4. package/esm2022/lib/alert-dialog.service.mjs +13 -2
  5. package/esm2022/lib/alert.component.mjs +5 -5
  6. package/esm2022/lib/avatar.component.mjs +30 -9
  7. package/esm2022/lib/badge.component.mjs +41 -15
  8. package/esm2022/lib/breadcrumb-link.component.mjs +5 -5
  9. package/esm2022/lib/button.component.mjs +14 -3
  10. package/esm2022/lib/calendar.component.mjs +99 -17
  11. package/esm2022/lib/card.component.mjs +29 -9
  12. package/esm2022/lib/carousel/carousel.component.mjs +19 -3
  13. package/esm2022/lib/checkbox.component.mjs +44 -21
  14. package/esm2022/lib/collapsible.component.mjs +12 -4
  15. package/esm2022/lib/country-selector.component.mjs +140 -20
  16. package/esm2022/lib/data-table.component.mjs +27 -16
  17. package/esm2022/lib/date-picker.component.mjs +24 -4
  18. package/esm2022/lib/date-range-picker.component.mjs +37 -9
  19. package/esm2022/lib/dropdown-item.component.mjs +19 -5
  20. package/esm2022/lib/dropdown-label.component.mjs +3 -3
  21. package/esm2022/lib/dropdown-menu.component.mjs +3 -3
  22. package/esm2022/lib/dropdown-separator.component.mjs +3 -3
  23. package/esm2022/lib/dropdown-trigger.directive.mjs +7 -3
  24. package/esm2022/lib/empty-state.component.mjs +3 -3
  25. package/esm2022/lib/hover-card.component.mjs +4 -2
  26. package/esm2022/lib/input.component.mjs +7 -5
  27. package/esm2022/lib/label.component.mjs +2 -2
  28. package/esm2022/lib/masked-input.component.mjs +3 -3
  29. package/esm2022/lib/modal.component.mjs +58 -22
  30. package/esm2022/lib/modal.service.mjs +13 -1
  31. package/esm2022/lib/multi-select.component.mjs +228 -20
  32. package/esm2022/lib/otp.component.mjs +6 -3
  33. package/esm2022/lib/pagination.component.mjs +19 -9
  34. package/esm2022/lib/progress.component.mjs +8 -5
  35. package/esm2022/lib/radio-group.component.mjs +51 -3
  36. package/esm2022/lib/radio-item.component.mjs +46 -8
  37. package/esm2022/lib/radio-service.mjs +60 -1
  38. package/esm2022/lib/range-calendar.component.mjs +317 -98
  39. package/esm2022/lib/resizable-panel.component.mjs +5 -4
  40. package/esm2022/lib/scroll-area.component.mjs +5 -5
  41. package/esm2022/lib/segment.component.mjs +73 -7
  42. package/esm2022/lib/select-item.component.mjs +20 -2
  43. package/esm2022/lib/select-separator.component.mjs +3 -3
  44. package/esm2022/lib/select.component.mjs +221 -14
  45. package/esm2022/lib/separator.component.mjs +12 -6
  46. package/esm2022/lib/sheet-ref.mjs +8 -1
  47. package/esm2022/lib/sheet-wrapper.component.mjs +27 -11
  48. package/esm2022/lib/sheet.component.mjs +57 -16
  49. package/esm2022/lib/sheet.service.mjs +5 -1
  50. package/esm2022/lib/sidebar.component.mjs +73 -15
  51. package/esm2022/lib/skeleton.component.mjs +19 -5
  52. package/esm2022/lib/switch.component.mjs +59 -53
  53. package/esm2022/lib/tabs.component.mjs +75 -13
  54. package/esm2022/lib/tag-input.component.mjs +6 -3
  55. package/esm2022/lib/textarea.component.mjs +9 -7
  56. package/esm2022/lib/theme.service.mjs +114 -138
  57. package/esm2022/lib/toaster.component.mjs +19 -9
  58. package/esm2022/lib/toggle-group.component.mjs +76 -4
  59. package/esm2022/lib/tolle-config.mjs +1 -1
  60. package/esm2022/lib/tooltip.directive.mjs +41 -17
  61. package/esm2022/lib/utils/color.mjs +324 -0
  62. package/esm2022/public-api.mjs +2 -1
  63. package/fesm2022/tolle-ui.mjs +2645 -637
  64. package/fesm2022/tolle-ui.mjs.map +1 -1
  65. package/lib/alert-dialog.component.d.ts +10 -1
  66. package/lib/avatar.component.d.ts +16 -3
  67. package/lib/badge.component.d.ts +17 -5
  68. package/lib/button.component.d.ts +10 -3
  69. package/lib/calendar.component.d.ts +21 -3
  70. package/lib/card.component.d.ts +6 -0
  71. package/lib/carousel/carousel.component.d.ts +1 -0
  72. package/lib/checkbox.component.d.ts +12 -4
  73. package/lib/country-selector.component.d.ts +11 -2
  74. package/lib/date-picker.component.d.ts +1 -0
  75. package/lib/date-range-picker.component.d.ts +4 -1
  76. package/lib/dropdown-item.component.d.ts +4 -2
  77. package/lib/dropdown-trigger.directive.d.ts +1 -1
  78. package/lib/modal.component.d.ts +6 -0
  79. package/lib/multi-select.component.d.ts +20 -0
  80. package/lib/otp.component.d.ts +1 -0
  81. package/lib/progress.component.d.ts +1 -0
  82. package/lib/radio-group.component.d.ts +8 -0
  83. package/lib/radio-item.component.d.ts +10 -4
  84. package/lib/radio-service.d.ts +29 -0
  85. package/lib/range-calendar.component.d.ts +33 -4
  86. package/lib/segment.component.d.ts +13 -0
  87. package/lib/select-item.component.d.ts +4 -1
  88. package/lib/select.component.d.ts +20 -0
  89. package/lib/separator.component.d.ts +2 -0
  90. package/lib/sheet-wrapper.component.d.ts +4 -0
  91. package/lib/sheet.component.d.ts +10 -1
  92. package/lib/sidebar.component.d.ts +2 -0
  93. package/lib/skeleton.component.d.ts +9 -3
  94. package/lib/switch.component.d.ts +13 -20
  95. package/lib/tabs.component.d.ts +11 -1
  96. package/lib/theme.service.d.ts +21 -6
  97. package/lib/toaster.component.d.ts +2 -2
  98. package/lib/toggle-group.component.d.ts +20 -2
  99. package/lib/toggle.component.d.ts +1 -1
  100. package/lib/tolle-config.d.ts +8 -0
  101. package/lib/tooltip.directive.d.ts +3 -0
  102. package/lib/utils/color.d.ts +87 -0
  103. package/package.json +4 -1
  104. package/preset.js +28 -0
  105. package/public-api.d.ts +1 -0
  106. package/registry/docs-content.json +4214 -0
  107. package/registry/llms-full.txt +1599 -0
  108. package/registry/llms.txt +83 -0
  109. package/registry/manifest.json +4925 -0
  110. package/registry/r/accordion-item.json +21 -0
  111. package/registry/r/accordion.json +23 -0
  112. package/registry/r/alert-dialog-dynamic.json +31 -0
  113. package/registry/r/alert-dialog.json +26 -0
  114. package/registry/r/alert.json +23 -0
  115. package/registry/r/aspect-ratio.json +21 -0
  116. package/registry/r/avatar-fallback.json +16 -0
  117. package/registry/r/avatar.json +23 -0
  118. package/registry/r/badge.json +23 -0
  119. package/registry/r/breadcrumb-item.json +16 -0
  120. package/registry/r/breadcrumb-link.json +16 -0
  121. package/registry/r/breadcrumb-separator.json +16 -0
  122. package/registry/r/breadcrumb.json +21 -0
  123. package/registry/r/button-group.json +21 -0
  124. package/registry/r/button.json +23 -0
  125. package/registry/r/calendar.json +23 -0
  126. package/registry/r/card.json +21 -0
  127. package/registry/r/carousel.json +18 -0
  128. package/registry/r/checkbox.json +23 -0
  129. package/registry/r/collapsible.json +21 -0
  130. package/registry/r/context-menu-trigger.json +23 -0
  131. package/registry/r/context-menu.json +28 -0
  132. package/registry/r/country-selector.json +31 -0
  133. package/registry/r/data-table.json +38 -0
  134. package/registry/r/date-picker.json +27 -0
  135. package/registry/r/date-range-picker.json +32 -0
  136. package/registry/r/dropdown-item.json +21 -0
  137. package/registry/r/dropdown-label.json +16 -0
  138. package/registry/r/dropdown-menu.json +16 -0
  139. package/registry/r/dropdown-separator.json +16 -0
  140. package/registry/r/dropdown-trigger.json +20 -0
  141. package/registry/r/empty-state.json +23 -0
  142. package/registry/r/hover-card.json +23 -0
  143. package/registry/r/input.json +21 -0
  144. package/registry/r/label.json +21 -0
  145. package/registry/r/masked-input.json +21 -0
  146. package/registry/r/modal.json +36 -0
  147. package/registry/r/multi-select.json +33 -0
  148. package/registry/r/otp-group.json +16 -0
  149. package/registry/r/otp-slot.json +21 -0
  150. package/registry/r/otp.json +21 -0
  151. package/registry/r/pagination.json +32 -0
  152. package/registry/r/phone-number-input.json +34 -0
  153. package/registry/r/popover-content.json +21 -0
  154. package/registry/r/popover.json +18 -0
  155. package/registry/r/progress.json +21 -0
  156. package/registry/r/radio-group.json +26 -0
  157. package/registry/r/radio-item.json +26 -0
  158. package/registry/r/range-calendar.json +28 -0
  159. package/registry/r/resizable-panel-item.json +23 -0
  160. package/registry/r/resizable-panel.json +23 -0
  161. package/registry/r/resizable.json +21 -0
  162. package/registry/r/scroll-area.json +21 -0
  163. package/registry/r/segment.json +21 -0
  164. package/registry/r/select-group.json +21 -0
  165. package/registry/r/select-item.json +26 -0
  166. package/registry/r/select-separator.json +21 -0
  167. package/registry/r/select.json +31 -0
  168. package/registry/r/separator.json +21 -0
  169. package/registry/r/sheet-wrapper.json +31 -0
  170. package/registry/r/sheet.json +21 -0
  171. package/registry/r/sidebar.json +21 -0
  172. package/registry/r/skeleton.json +23 -0
  173. package/registry/r/slider.json +21 -0
  174. package/registry/r/switch.json +23 -0
  175. package/registry/r/tabs.json +23 -0
  176. package/registry/r/tag-input.json +25 -0
  177. package/registry/r/textarea.json +21 -0
  178. package/registry/r/toaster.json +26 -0
  179. package/registry/r/toggle-group.json +25 -0
  180. package/registry/r/toggle.json +23 -0
  181. package/registry/r/tolle-cell.json +16 -0
  182. package/registry/r/tooltip.json +23 -0
  183. package/registry/registry.json +1540 -0
  184. package/theme.css +56 -1
@@ -10,12 +10,15 @@ export declare class SelectItemComponent {
10
10
  selected: boolean;
11
11
  disabled: boolean;
12
12
  multiSelect: boolean;
13
+ id: string;
14
+ active: boolean;
13
15
  hidden: boolean;
14
16
  constructor(selectService: SelectService, el: ElementRef);
15
17
  getLabel(): string;
18
+ scrollIntoActiveView(): void;
16
19
  getItemClasses(): string;
17
20
  onClick(event: MouseEvent): void;
18
21
  protected cn: typeof cn;
19
22
  static ɵfac: i0.ɵɵFactoryDeclaration<SelectItemComponent, [{ optional: true; }, null]>;
20
- static ɵcmp: i0.ɵɵComponentDeclaration<SelectItemComponent, "tolle-select-item", never, { "value": { "alias": "value"; "required": false; }; "class": { "alias": "class"; "required": false; }; "selected": { "alias": "selected"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "multiSelect": { "alias": "multiSelect"; "required": false; }; }, {}, never, ["*"], true, never>;
23
+ static ɵcmp: i0.ɵɵComponentDeclaration<SelectItemComponent, "tolle-select-item", never, { "value": { "alias": "value"; "required": false; }; "class": { "alias": "class"; "required": false; }; "selected": { "alias": "selected"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "multiSelect": { "alias": "multiSelect"; "required": false; }; "id": { "alias": "id"; "required": false; }; "active": { "alias": "active"; "required": false; }; }, {}, never, ["*"], true, never>;
21
24
  }
@@ -16,6 +16,7 @@ export declare class SelectComponent implements ControlValueAccessor, AfterConte
16
16
  trigger: ElementRef;
17
17
  popover: ElementRef;
18
18
  container: ElementRef;
19
+ searchInput?: ElementRef<HTMLElement>;
19
20
  items: QueryList<SelectItemComponent>;
20
21
  private sub;
21
22
  private itemsChangeSub?;
@@ -26,6 +27,10 @@ export declare class SelectComponent implements ControlValueAccessor, AfterConte
26
27
  value: any;
27
28
  selectedLabel: string;
28
29
  cleanupAutoUpdate?: () => void;
30
+ activeIndex: number;
31
+ private typeaheadBuffer;
32
+ private typeaheadTime;
33
+ private pendingTypeaheadChar;
29
34
  onChange: any;
30
35
  onTouched: any;
31
36
  protected cn: typeof cn;
@@ -42,6 +47,21 @@ export declare class SelectComponent implements ControlValueAccessor, AfterConte
42
47
  close(): void;
43
48
  private updatePosition;
44
49
  onSearchChange(query: string): void;
50
+ private get navigableItems();
51
+ get activeDescendantId(): string | null;
52
+ private updateActiveStates;
53
+ private syncActiveDescendant;
54
+ private setActive;
55
+ private setActiveItem;
56
+ private moveActive;
57
+ private setActiveToSelectedOrFirst;
58
+ private initActiveAfterOpen;
59
+ private resetActive;
60
+ private isTypeaheadChar;
61
+ private typeahead;
62
+ private selectActive;
63
+ onTriggerKeyDown(event: KeyboardEvent): void;
64
+ onSearchKeyDown(event: KeyboardEvent): void;
45
65
  writeValue(value: any): void;
46
66
  registerOnChange(fn: any): void;
47
67
  registerOnTouched(fn: any): void;
@@ -1,6 +1,8 @@
1
1
  import * as i0 from "@angular/core";
2
2
  export declare class SeparatorComponent {
3
+ /** Orientation of the rule. @default 'horizontal' */
3
4
  orientation: 'horizontal' | 'vertical';
5
+ /** When true, the separator is purely visual (aria-hidden, role="none"). @default true */
4
6
  decorative: boolean;
5
7
  class: string;
6
8
  get computedClass(): string;
@@ -5,6 +5,10 @@ export declare class SheetWrapperComponent implements OnInit {
5
5
  contentType: 'template' | 'string' | 'component';
6
6
  content: any;
7
7
  isOpen: boolean;
8
+ /** Stable, per-instance ids used to wire dialog ARIA relationships. */
9
+ private readonly _uid;
10
+ readonly titleId: string;
11
+ readonly descId: string;
8
12
  ref: SheetRef<any>;
9
13
  ngOnInit(): void;
10
14
  private determineContentType;
@@ -8,6 +8,8 @@ export declare class SheetComponent {
8
8
  private viewContainerRef;
9
9
  private scrollStrategy;
10
10
  private overlayRef?;
11
+ /** Element focused before the sheet opened, restored on close. */
12
+ private previouslyFocused?;
11
13
  contentComponent?: any;
12
14
  open(): void;
13
15
  close(): void;
@@ -28,11 +30,14 @@ export declare class SheetContentComponent {
28
30
  rounded: boolean;
29
31
  class: string;
30
32
  contentTemplate: TemplateRef<any>;
33
+ /** Projected title/description used to build the dialog's accessible name. */
34
+ titleCmp?: SheetTitleComponent;
35
+ descriptionCmp?: SheetDescriptionComponent;
31
36
  sheet: SheetComponent;
32
37
  close(): void;
33
38
  get computedClass(): string;
34
39
  static ɵfac: i0.ɵɵFactoryDeclaration<SheetContentComponent, never>;
35
- static ɵcmp: i0.ɵɵComponentDeclaration<SheetContentComponent, "tolle-sheet-content", never, { "side": { "alias": "side"; "required": false; }; "rounded": { "alias": "rounded"; "required": false; }; "class": { "alias": "class"; "required": false; }; }, {}, never, ["*"], true, never>;
40
+ static ɵcmp: i0.ɵɵComponentDeclaration<SheetContentComponent, "tolle-sheet-content", never, { "side": { "alias": "side"; "required": false; }; "rounded": { "alias": "rounded"; "required": false; }; "class": { "alias": "class"; "required": false; }; }, {}, ["titleCmp", "descriptionCmp"], ["*"], true, never>;
36
41
  }
37
42
  export declare class SheetHeaderComponent {
38
43
  static ɵfac: i0.ɵɵFactoryDeclaration<SheetHeaderComponent, never>;
@@ -43,10 +48,14 @@ export declare class SheetFooterComponent {
43
48
  static ɵcmp: i0.ɵɵComponentDeclaration<SheetFooterComponent, "tolle-sheet-footer", never, {}, {}, never, ["*"], true, never>;
44
49
  }
45
50
  export declare class SheetTitleComponent {
51
+ /** Stable id referenced by the sheet's `aria-labelledby`. */
52
+ readonly id: string;
46
53
  static ɵfac: i0.ɵɵFactoryDeclaration<SheetTitleComponent, never>;
47
54
  static ɵcmp: i0.ɵɵComponentDeclaration<SheetTitleComponent, "tolle-sheet-title", never, {}, {}, never, ["*"], true, never>;
48
55
  }
49
56
  export declare class SheetDescriptionComponent {
57
+ /** Stable id referenced by the sheet's `aria-describedby`. */
58
+ readonly id: string;
50
59
  static ɵfac: i0.ɵɵFactoryDeclaration<SheetDescriptionComponent, never>;
51
60
  static ɵcmp: i0.ɵɵComponentDeclaration<SheetDescriptionComponent, "tolle-sheet-description", never, {}, {}, never, ["*"], true, never>;
52
61
  }
@@ -9,6 +9,8 @@ export type SidebarItem = {
9
9
  items?: SidebarItem[];
10
10
  id?: string;
11
11
  expanded?: boolean;
12
+ /** Render as a plain anchor to an external URL / static file (opens in a new tab) instead of a router link. */
13
+ external?: boolean;
12
14
  };
13
15
  export type SidebarGroup = {
14
16
  title: string;
@@ -1,10 +1,16 @@
1
- import { cn } from './utils/cn';
1
+ import { type VariantProps } from 'class-variance-authority';
2
2
  import * as i0 from "@angular/core";
3
+ declare const skeletonVariants: (props?: ({
4
+ variant?: "rect" | "circle" | "pill" | null | undefined;
5
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
6
+ export type SkeletonProps = VariantProps<typeof skeletonVariants>;
3
7
  export declare class SkeletonComponent {
4
- variant: 'rect' | 'circle' | 'pill';
8
+ /** Shape of the skeleton placeholder. @default 'rect' */
9
+ variant: SkeletonProps['variant'];
10
+ /** Extra Tailwind classes merged onto the skeleton via `cn()` (last-wins). */
5
11
  class: string;
6
- protected readonly cn: typeof cn;
7
12
  get computedClass(): string;
8
13
  static ɵfac: i0.ɵɵFactoryDeclaration<SkeletonComponent, never>;
9
14
  static ɵcmp: i0.ɵɵComponentDeclaration<SkeletonComponent, "tolle-skeleton", never, { "variant": { "alias": "variant"; "required": false; }; "class": { "alias": "class"; "required": false; }; }, {}, never, never, true, never>;
10
15
  }
16
+ export {};
@@ -1,34 +1,26 @@
1
1
  import { ChangeDetectorRef } from '@angular/core';
2
2
  import { ControlValueAccessor } from '@angular/forms';
3
- import { cn } from './utils/cn';
3
+ import { type VariantProps } from 'class-variance-authority';
4
4
  import * as i0 from "@angular/core";
5
+ declare const switchTrackVariants: (props?: ({
6
+ size?: "default" | "xs" | "sm" | "lg" | null | undefined;
7
+ checked?: boolean | null | undefined;
8
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
9
+ export type SwitchProps = VariantProps<typeof switchTrackVariants>;
5
10
  export declare class SwitchComponent implements ControlValueAccessor {
6
11
  private cdr;
12
+ /** Extra Tailwind classes merged onto the switch track via `cn()` (last-wins). */
7
13
  class: string;
14
+ /** Disables the switch and blocks toggling. @default false */
8
15
  disabled: boolean;
9
- size: 'xs' | 'sm' | 'default' | 'lg';
16
+ /** Size of the switch. @default 'default' */
17
+ size: SwitchProps['size'];
10
18
  checked: boolean;
11
19
  onChange: any;
12
20
  onTouched: any;
13
21
  constructor(cdr: ChangeDetectorRef);
14
- get sizeClasses(): {
15
- track: string;
16
- thumb: string;
17
- translate: string;
18
- } | {
19
- track: string;
20
- thumb: string;
21
- translate: string;
22
- } | {
23
- track: string;
24
- thumb: string;
25
- translate: string;
26
- } | {
27
- track: string;
28
- thumb: string;
29
- translate: string;
30
- };
31
- protected cn: typeof cn;
22
+ get trackClass(): string;
23
+ get thumbClass(): string;
32
24
  toggle(): void;
33
25
  writeValue(value: boolean): void;
34
26
  registerOnChange(fn: any): void;
@@ -37,3 +29,4 @@ export declare class SwitchComponent implements ControlValueAccessor {
37
29
  static ɵfac: i0.ɵɵFactoryDeclaration<SwitchComponent, never>;
38
30
  static ɵcmp: i0.ɵɵComponentDeclaration<SwitchComponent, "tolle-switch", never, { "class": { "alias": "class"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "size": { "alias": "size"; "required": false; }; }, {}, never, never, true, never>;
39
31
  }
32
+ export {};
@@ -1,5 +1,10 @@
1
1
  import { EventEmitter } from '@angular/core';
2
+ import { type VariantProps } from 'class-variance-authority';
2
3
  import * as i0 from "@angular/core";
4
+ declare const tabsListVariants: (props?: ({
5
+ variant?: "default" | "underline" | null | undefined;
6
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
7
+ export type TabsListProps = VariantProps<typeof tabsListVariants>;
3
8
  export declare class TabsComponent {
4
9
  defaultValue?: string;
5
10
  value?: string;
@@ -12,8 +17,10 @@ export declare class TabsComponent {
12
17
  static ɵcmp: i0.ɵɵComponentDeclaration<TabsComponent, "tolle-tabs", never, { "defaultValue": { "alias": "defaultValue"; "required": false; }; "value": { "alias": "value"; "required": false; }; "class": { "alias": "class"; "required": false; }; }, { "valueChange": "valueChange"; }, never, ["*"], true, never>;
13
18
  }
14
19
  export declare class TabsListComponent {
20
+ /** Extra Tailwind classes merged onto the tabs list via `cn()` (last-wins). */
15
21
  class: string;
16
- variant: 'default' | 'underline';
22
+ /** Visual style of the tab list. @default 'default' */
23
+ variant: TabsListProps['variant'];
17
24
  get computedClass(): string;
18
25
  static ɵfac: i0.ɵɵFactoryDeclaration<TabsListComponent, never>;
19
26
  static ɵcmp: i0.ɵɵComponentDeclaration<TabsListComponent, "tolle-tabs-list", never, { "class": { "alias": "class"; "required": false; }; "variant": { "alias": "variant"; "required": false; }; }, {}, never, ["*"], true, never>;
@@ -23,9 +30,11 @@ export declare class TabsTriggerComponent {
23
30
  class: string;
24
31
  private tabsService;
25
32
  private tabsList;
33
+ private el;
26
34
  isActive: boolean;
27
35
  constructor();
28
36
  onActivate(): void;
37
+ onKeydown(event: KeyboardEvent): void;
29
38
  get computedClass(): string;
30
39
  static ɵfac: i0.ɵɵFactoryDeclaration<TabsTriggerComponent, never>;
31
40
  static ɵcmp: i0.ɵɵComponentDeclaration<TabsTriggerComponent, "tolle-tabs-trigger", never, { "value": { "alias": "value"; "required": true; }; "class": { "alias": "class"; "required": false; }; }, {}, never, ["*"], true, never>;
@@ -40,3 +49,4 @@ export declare class TabsContentComponent {
40
49
  static ɵfac: i0.ɵɵFactoryDeclaration<TabsContentComponent, never>;
41
50
  static ɵcmp: i0.ɵɵComponentDeclaration<TabsContentComponent, "tolle-tabs-content", never, { "value": { "alias": "value"; "required": true; }; "class": { "alias": "class"; "required": false; }; }, {}, never, ["*"], true, never>;
42
51
  }
52
+ export {};
@@ -9,18 +9,33 @@ export declare class ThemeService {
9
9
  private _isDark;
10
10
  isDark$: import("rxjs").Observable<boolean>;
11
11
  private styleId;
12
+ private baseStyleId;
13
+ private chartStyleId;
12
14
  constructor(document: Document, platformId: object, config: TolleConfig, rendererFactory: RendererFactory2);
13
15
  private initializeTheme;
16
+ /** Set a typography stack (`--font-sans` / `--font-serif` / `--font-mono`). */
17
+ setFont(kind: 'sans' | 'serif' | 'mono', stack: string, persist?: boolean): void;
18
+ /** Read the current stack for a font role from the live document. */
19
+ getFont(kind: 'sans' | 'serif' | 'mono'): string;
20
+ /** Set light/dark explicitly (a directional companion to `toggleTheme`). */
21
+ setAppearance(mode: 'light' | 'dark', persist?: boolean): void;
22
+ /**
23
+ * Set the neutral base-color family (background/foreground/card/muted/border…).
24
+ * Accepts a family id: `zinc` | `slate` | `gray` | `neutral` | `stone`.
25
+ */
26
+ setBaseColor(baseId: string, persist?: boolean): void;
27
+ /** Set the chart palette from a base hex; derives `--chart-1…5`. */
28
+ setChartColor(hex: string, persist?: boolean): void;
29
+ /** Read the current base-color family id (persisted), or null. */
30
+ get baseColor(): string | null;
31
+ /** Read the current chart base color (persisted), or null. */
32
+ get chartColor(): string | null;
33
+ /** Upsert a keyed <style> element in <head> with the given CSS text. */
34
+ private injectStyleById;
14
35
  setRadius(radius: string, persist?: boolean): void;
15
36
  private updateAllRadiusVariables;
16
37
  private updateRadiusInDynamicStyles;
17
38
  private generatePrimaryShades;
18
- private hexToRgb;
19
- private hexToRgbString;
20
- private getContrastColorRgb;
21
- private lightenColor;
22
- private darkenColor;
23
- private getContrastColor;
24
39
  private injectDynamicStyles;
25
40
  toggleTheme(): void;
26
41
  private enableDarkMode;
@@ -10,8 +10,8 @@ export declare class ToastContainerComponent {
10
10
  success: string;
11
11
  default: string;
12
12
  };
13
- getVariantClasses(variant?: string): "border-destructive/50 bg-destructive/5 dark:bg-red-950 text-destructive dark:text-red-400" | "border-emerald-500/50 bg-emerald-50 dark:bg-emerald-950 text-emerald-700 dark:text-emerald-400" | "bg-background text-foreground border-border";
14
- getProgressClasses(variant?: string): "bg-destructive dark:bg-red-400" | "bg-emerald-600 dark:bg-emerald-400" | "bg-primary";
13
+ getVariantClasses(variant?: string): "border-destructive/50 bg-destructive/10 text-destructive" | "border-success/50 bg-success/10 text-success" | "bg-background text-foreground border-border";
14
+ getProgressClasses(variant?: string): "bg-primary" | "bg-destructive" | "bg-success";
15
15
  get positionClasses(): string;
16
16
  protected cn: typeof cn;
17
17
  static ɵfac: i0.ɵɵFactoryDeclaration<ToastContainerComponent, never>;
@@ -1,7 +1,7 @@
1
- import { EventEmitter, QueryList, AfterContentInit, ChangeDetectorRef } from '@angular/core';
1
+ import { EventEmitter, QueryList, AfterContentInit, AfterViewInit, ChangeDetectorRef } from '@angular/core';
2
2
  import { ControlValueAccessor } from '@angular/forms';
3
3
  import * as i0 from "@angular/core";
4
- export declare class ToggleGroupComponent implements AfterContentInit, ControlValueAccessor {
4
+ export declare class ToggleGroupComponent implements AfterContentInit, AfterViewInit, ControlValueAccessor {
5
5
  type: 'single' | 'multiple';
6
6
  variant: 'default' | 'outline';
7
7
  size: 'default' | 'sm' | 'lg';
@@ -11,12 +11,30 @@ export declare class ToggleGroupComponent implements AfterContentInit, ControlVa
11
11
  items: QueryList<ToggleGroupItemComponent>;
12
12
  private _value;
13
13
  private cdr;
14
+ private host;
15
+ /** Index (into the full button list) of the current roving tab stop. */
16
+ private activeIndex;
14
17
  onChange: any;
15
18
  onTouched: any;
16
19
  get value(): any;
17
20
  set value(v: any);
18
21
  ngAfterContentInit(): void;
22
+ ngAfterViewInit(): void;
19
23
  get computedClass(): string;
24
+ /** All toggle button elements in DOM order. */
25
+ private get toggleButtons();
26
+ /**
27
+ * Roving tabindex: exactly one toggle button is tab-reachable at a time.
28
+ * Defaults to the current active button, falling back to the first enabled.
29
+ */
30
+ private applyRovingTabindex;
31
+ /**
32
+ * Toolbar keyboard nav: Arrow Left/Right (and Home/End) move focus between
33
+ * toggle buttons without activating them (toggles activate on Enter/Space/click).
34
+ */
35
+ onKeydown(event: KeyboardEvent): void;
36
+ /** Keep the roving tab stop in sync when a button gains focus (tab/click). */
37
+ onFocusIn(event: FocusEvent): void;
20
38
  writeValue(value: any): void;
21
39
  registerOnChange(fn: any): void;
22
40
  registerOnTouched(fn: any): void;
@@ -4,7 +4,7 @@ import { type VariantProps } from 'class-variance-authority';
4
4
  import * as i0 from "@angular/core";
5
5
  declare const toggleVariants: (props?: ({
6
6
  variant?: "default" | "outline" | null | undefined;
7
- size?: "sm" | "default" | "lg" | null | undefined;
7
+ size?: "default" | "sm" | "lg" | null | undefined;
8
8
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
9
9
  export type ToggleProps = VariantProps<typeof toggleVariants>;
10
10
  export declare class ToggleComponent implements ControlValueAccessor {
@@ -4,6 +4,14 @@ export interface TolleConfig {
4
4
  radius?: string;
5
5
  defaultToastDuration?: number;
6
6
  darkByDefault?: boolean;
7
+ /** Neutral base-color family: `zinc` | `slate` | `gray` | `neutral` | `stone`. */
8
+ baseColor?: string;
9
+ /** Chart base color (hex); derives `--chart-1…5`. */
10
+ chartColor?: string;
11
+ /** Typography stacks applied to `--font-sans` / `--font-serif` / `--font-mono`. */
12
+ fontSans?: string;
13
+ fontSerif?: string;
14
+ fontMono?: string;
7
15
  }
8
16
  export declare const TOLLE_CONFIG: InjectionToken<TolleConfig>;
9
17
  export declare function provideTolleConfig(config: TolleConfig): Provider[];
@@ -6,8 +6,11 @@ export declare class TooltipDirective implements OnDestroy {
6
6
  placement: 'top' | 'bottom' | 'left' | 'right';
7
7
  private tooltipEl;
8
8
  private cleanup?;
9
+ private showTimeout?;
10
+ private readonly tooltipId;
9
11
  constructor(el: ElementRef);
10
12
  show(): void;
13
+ onFocus(): void;
11
14
  hide(): void;
12
15
  ngOnDestroy(): void;
13
16
  static ɵfac: i0.ɵɵFactoryDeclaration<TooltipDirective, never>;
@@ -0,0 +1,87 @@
1
+ /**
2
+ * Pure color + theme-token math for Tolle UI.
3
+ *
4
+ * Framework- and DOM-free so it can back both the runtime `ThemeService` and a
5
+ * build-time theme generator (the shadcn-style "copy this CSS block" flow), and
6
+ * to centralize the math ahead of a future oklch migration. No side effects.
7
+ */
8
+ export interface Rgb {
9
+ r: number;
10
+ g: number;
11
+ b: number;
12
+ }
13
+ /** Parse a #RGB or #RRGGBB hex string to RGB, or null if malformed. */
14
+ export declare function hexToRgb(hex: string): Rgb | null;
15
+ /** Space-separated RGB triplet for a hex color (Tailwind `<alpha-value>` form). */
16
+ export declare function rgbTriplet(hex: string, fallback?: string): string;
17
+ /** Black or white, whichever contrasts better with the given color. */
18
+ export declare function getContrastColor(hex: string): string;
19
+ /** Contrast color as an RGB triplet (for `--primary-foreground`). */
20
+ export declare function contrastTriplet(hex: string): string;
21
+ /** Lighten a hex color toward white by `percent` (0–100). */
22
+ export declare function lightenColor(hex: string, percent: number): string;
23
+ export interface Hsl {
24
+ h: number;
25
+ s: number;
26
+ l: number;
27
+ }
28
+ /** Convert a hex color to HSL (h 0–360, s/l 0–100), or null if malformed. */
29
+ export declare function hexToHsl(hex: string): Hsl | null;
30
+ /** Convert HSL (h 0–360, s/l 0–100) to a #RRGGBB hex string. */
31
+ export declare function hslToHex(h: number, s: number, l: number): string;
32
+ /** Darken a hex color toward black by `percent` (0–100). */
33
+ export declare function darkenColor(hex: string, percent: number): string;
34
+ /** Derived radius scale from a base radius (e.g. '0.5rem'), or null if malformed. */
35
+ export declare function radiusScale(radius: string): Record<string, string> | null;
36
+ /** Optional typography stacks for the theme generator. */
37
+ export interface FontTokens {
38
+ sans?: string;
39
+ serif?: string;
40
+ mono?: string;
41
+ }
42
+ /**
43
+ * Generate the `:root` + `.dark` CSS custom-property block for a primary color
44
+ * (full 50–900 ramp, contrast foreground, focus ring, and radius scale). This is
45
+ * the theme-generator engine — identical to what `ThemeService` injects at runtime,
46
+ * and suitable for emitting a copy-paste block a consumer can commit.
47
+ *
48
+ * Pass `fonts` to also emit `--font-sans` / `--font-serif` / `--font-mono` (they
49
+ * do not vary between light and dark, so they land in `:root` only).
50
+ */
51
+ export declare function generateThemeCss(primaryHex: string, radius?: string, fonts?: FontTokens): string;
52
+ /** The neutral surface/foreground tokens a base color drives (one appearance). */
53
+ export interface BaseTokens {
54
+ background: string;
55
+ foreground: string;
56
+ card: string;
57
+ cardForeground: string;
58
+ popover: string;
59
+ popoverForeground: string;
60
+ muted: string;
61
+ mutedForeground: string;
62
+ accent: string;
63
+ accentForeground: string;
64
+ secondary: string;
65
+ secondaryForeground: string;
66
+ border: string;
67
+ input: string;
68
+ }
69
+ export interface BasePalette {
70
+ light: BaseTokens;
71
+ dark: BaseTokens;
72
+ }
73
+ /**
74
+ * Neutral base-color families (RGB triplets), matching Tailwind's Zinc / Slate /
75
+ * Gray / Neutral / Stone ramps. `zinc` reproduces the library's shipped defaults.
76
+ */
77
+ export declare const BASE_PALETTES: Record<string, BasePalette>;
78
+ /** Emit the `:root` + `.dark` neutral-token block for a base color id. */
79
+ export declare function generateBaseCss(baseId: string): string;
80
+ /**
81
+ * Derive 5 harmonious chart colors from one base hex — the base hue plus
82
+ * analogous hues at ±30°/±60°, with paired lightness shifts for separation.
83
+ * Returns RGB triplets for `--chart-1`…`--chart-5`.
84
+ */
85
+ export declare function generateChartRamp(hex: string): string[];
86
+ /** Emit the `:root` + `.dark` `--chart-1…5` block for a chart base color. */
87
+ export declare function generateChartCss(hex: string): string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tolle_/tolle-ui",
3
- "version": "18.2.24",
3
+ "version": "18.2.25",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -11,6 +11,9 @@
11
11
  "./preset": {
12
12
  "default": "./preset.js"
13
13
  },
14
+ "./registry/*": {
15
+ "default": "./registry/*"
16
+ },
14
17
  "./package.json": {
15
18
  "default": "./package.json"
16
19
  },
package/preset.js CHANGED
@@ -36,6 +36,18 @@ module.exports = {
36
36
  DEFAULT: 'rgb(var(--destructive) / <alpha-value>)',
37
37
  foreground: 'rgb(var(--destructive-foreground) / <alpha-value>)',
38
38
  },
39
+ success: {
40
+ DEFAULT: 'rgb(var(--success) / <alpha-value>)',
41
+ foreground: 'rgb(var(--success-foreground) / <alpha-value>)',
42
+ },
43
+ warning: {
44
+ DEFAULT: 'rgb(var(--warning) / <alpha-value>)',
45
+ foreground: 'rgb(var(--warning-foreground) / <alpha-value>)',
46
+ },
47
+ info: {
48
+ DEFAULT: 'rgb(var(--info) / <alpha-value>)',
49
+ foreground: 'rgb(var(--info-foreground) / <alpha-value>)',
50
+ },
39
51
  muted: {
40
52
  DEFAULT: 'rgb(var(--muted) / <alpha-value>)',
41
53
  foreground: 'rgb(var(--muted-foreground) / <alpha-value>)',
@@ -52,6 +64,22 @@ module.exports = {
52
64
  DEFAULT: 'rgb(var(--card) / <alpha-value>)',
53
65
  foreground: 'rgb(var(--card-foreground) / <alpha-value>)',
54
66
  },
67
+
68
+ // Chart palette — driven by --chart-1..5 (theme generator / ThemeService).
69
+ chart: {
70
+ 1: 'rgb(var(--chart-1) / <alpha-value>)',
71
+ 2: 'rgb(var(--chart-2) / <alpha-value>)',
72
+ 3: 'rgb(var(--chart-3) / <alpha-value>)',
73
+ 4: 'rgb(var(--chart-4) / <alpha-value>)',
74
+ 5: 'rgb(var(--chart-5) / <alpha-value>)',
75
+ },
76
+ },
77
+ fontFamily: {
78
+ // Driven by the CSS custom properties in theme.css so the theme
79
+ // generator / ThemeService can re-skin typography at runtime.
80
+ sans: ['var(--font-sans)'],
81
+ serif: ['var(--font-serif)'],
82
+ mono: ['var(--font-mono)'],
55
83
  },
56
84
  borderRadius: {
57
85
  lg: 'var(--radius)',
package/public-api.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  export * from './lib/utils/cn';
2
+ export * from './lib/utils/color';
2
3
  export * from './lib/button.component';
3
4
  export * from './lib/input.component';
4
5
  export * from './lib/card.component';