@egose/shadcn-theme-ng-tw 0.0.28 → 0.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 (244) hide show
  1. package/README.md +130 -13
  2. package/accordion/README.md +376 -34
  3. package/accordion/fesm2022/accordion.mjs +20 -20
  4. package/alert/README.md +343 -34
  5. package/alert/fesm2022/alert.mjs +18 -18
  6. package/alert-dialog/README.md +471 -5
  7. package/alert-dialog/fesm2022/alert-dialog.mjs +48 -48
  8. package/alert-dialog/types/alert-dialog.d.ts +1 -1
  9. package/aspect-ratio/README.md +272 -5
  10. package/aspect-ratio/fesm2022/aspect-ratio.mjs +9 -9
  11. package/autocomplete/README.md +473 -34
  12. package/autocomplete/fesm2022/autocomplete.mjs +54 -54
  13. package/autocomplete/types/autocomplete.d.ts +1 -1
  14. package/avatar/README.md +357 -5
  15. package/avatar/fesm2022/avatar.mjs +32 -32
  16. package/badge/README.md +289 -34
  17. package/badge/fesm2022/badge.mjs +4 -4
  18. package/basic-alert/README.md +324 -34
  19. package/basic-alert/fesm2022/basic-alert.mjs +4 -4
  20. package/basic-alert/types/basic-alert.d.ts +1 -1
  21. package/breadcrumb/README.md +406 -5
  22. package/breadcrumb/fesm2022/breadcrumb.mjs +34 -34
  23. package/button/README.md +453 -34
  24. package/button/fesm2022/button.mjs +96 -118
  25. package/button/types/button.d.ts +7 -10
  26. package/button-group/README.md +318 -5
  27. package/button-group/fesm2022/button-group.mjs +20 -20
  28. package/calendar/README.md +328 -34
  29. package/calendar/fesm2022/calendar.mjs +154 -154
  30. package/card/README.md +331 -5
  31. package/card/fesm2022/card.mjs +33 -33
  32. package/carousel/README.md +333 -5
  33. package/carousel/fesm2022/carousel.mjs +47 -44
  34. package/carousel/types/carousel.d.ts +1 -1
  35. package/checkbox/README.md +291 -34
  36. package/checkbox/fesm2022/checkbox.mjs +22 -20
  37. package/checkbox/types/checkbox.d.ts +5 -4
  38. package/collapsible/README.md +332 -5
  39. package/collapsible/fesm2022/collapsible.mjs +15 -15
  40. package/combobox/README.md +507 -5
  41. package/combobox/fesm2022/combobox.mjs +95 -92
  42. package/combobox/types/combobox.d.ts +1 -1
  43. package/command/README.md +435 -5
  44. package/command/fesm2022/command.mjs +56 -56
  45. package/confirmation-dialog/README.md +272 -34
  46. package/confirmation-dialog/fesm2022/confirmation-dialog.mjs +13 -12
  47. package/confirmation-dialog/types/confirmation-dialog.d.ts +9 -5
  48. package/context-menu/README.md +366 -5
  49. package/context-menu/fesm2022/context-menu.mjs +9 -9
  50. package/date-picker/README.md +436 -34
  51. package/date-picker/fesm2022/date-picker.mjs +79 -68
  52. package/date-picker/types/date-picker.d.ts +8 -4
  53. package/dialog/README.md +419 -34
  54. package/dialog/fesm2022/dialog.mjs +48 -48
  55. package/drawer/README.md +395 -5
  56. package/drawer/fesm2022/drawer.mjs +45 -45
  57. package/dropdown-menu/README.md +417 -5
  58. package/dropdown-menu/fesm2022/dropdown-menu.mjs +85 -73
  59. package/dropdown-menu/types/dropdown-menu.d.ts +4 -0
  60. package/empty/README.md +329 -5
  61. package/empty/fesm2022/empty.mjs +31 -31
  62. package/field/README.md +385 -5
  63. package/field/fesm2022/field.mjs +59 -59
  64. package/field/types/field.d.ts +1 -1
  65. package/form-checkbox/README.md +283 -34
  66. package/form-checkbox/fesm2022/form-checkbox.mjs +37 -19
  67. package/form-checkbox/types/form-checkbox.d.ts +7 -1
  68. package/form-date-picker/README.md +293 -34
  69. package/form-date-picker/fesm2022/form-date-picker.mjs +59 -24
  70. package/form-date-picker/types/form-date-picker.d.ts +7 -1
  71. package/form-field/README.md +327 -34
  72. package/form-field/fesm2022/form-field.mjs +30 -16
  73. package/form-field/types/form-field.d.ts +28 -20
  74. package/form-field-simple/README.md +311 -34
  75. package/form-field-simple/fesm2022/form-field-simple.mjs +4 -4
  76. package/form-searchable-multiselect/README.md +332 -34
  77. package/form-searchable-multiselect/fesm2022/form-searchable-multiselect.mjs +41 -21
  78. package/form-searchable-multiselect/types/form-searchable-multiselect.d.ts +8 -2
  79. package/form-select/README.md +321 -34
  80. package/form-select/fesm2022/form-select.mjs +62 -29
  81. package/form-select/types/form-select.d.ts +7 -1
  82. package/form-text-input/README.md +342 -34
  83. package/form-text-input/fesm2022/form-text-input.mjs +43 -55
  84. package/form-text-input/types/form-text-input.d.ts +9 -12
  85. package/form-textarea/README.md +318 -34
  86. package/form-textarea/fesm2022/form-textarea.mjs +42 -23
  87. package/form-textarea/types/form-textarea.d.ts +8 -1
  88. package/hover-card/README.md +256 -5
  89. package/hover-card/fesm2022/hover-card.mjs +19 -19
  90. package/icon/README.md +210 -34
  91. package/icon/fesm2022/icon.mjs +8 -8
  92. package/input/README.md +240 -34
  93. package/input/fesm2022/input.mjs +17 -12
  94. package/input/types/input.d.ts +2 -1
  95. package/input-group/README.md +335 -5
  96. package/input-group/fesm2022/input-group.mjs +37 -37
  97. package/input-group/types/input-group.d.ts +3 -3
  98. package/input-otp/README.md +375 -5
  99. package/input-otp/fesm2022/input-otp.mjs +27 -27
  100. package/item/README.md +385 -5
  101. package/item/fesm2022/item.mjs +54 -54
  102. package/kbd/README.md +291 -5
  103. package/kbd/fesm2022/kbd.mjs +13 -13
  104. package/label/README.md +243 -34
  105. package/label/fesm2022/label.mjs +9 -9
  106. package/label/types/label.d.ts +1 -1
  107. package/layout-simple/README.md +174 -44
  108. package/layout-simple/fesm2022/layout-simple.mjs +917 -398
  109. package/layout-simple/types/layout-simple.d.ts +180 -129
  110. package/menu/README.md +418 -0
  111. package/menu/fesm2022/menu.mjs +461 -0
  112. package/menu/package.json +24 -0
  113. package/menu/types/menu.d.ts +137 -0
  114. package/menubar/README.md +343 -5
  115. package/menubar/fesm2022/menubar.mjs +13 -13
  116. package/native-select/README.md +323 -5
  117. package/native-select/fesm2022/native-select.mjs +19 -19
  118. package/navigation-menu/README.md +369 -5
  119. package/navigation-menu/fesm2022/navigation-menu.mjs +37 -37
  120. package/package.json +183 -154
  121. package/pagination/README.md +388 -5
  122. package/pagination/fesm2022/pagination.mjs +63 -63
  123. package/popover/README.md +302 -34
  124. package/popover/fesm2022/popover.mjs +30 -30
  125. package/progress/README.md +311 -5
  126. package/progress/fesm2022/progress.mjs +13 -13
  127. package/radio-group/README.md +335 -34
  128. package/radio-group/fesm2022/radio-group.mjs +26 -19
  129. package/resizable/README.md +269 -5
  130. package/resizable/fesm2022/resizable.mjs +19 -19
  131. package/scroll-area/README.md +233 -5
  132. package/scroll-area/fesm2022/scroll-area.mjs +9 -9
  133. package/searchable-multiselect/README.md +294 -34
  134. package/searchable-multiselect/fesm2022/searchable-multiselect.mjs +63 -16
  135. package/searchable-multiselect/types/searchable-multiselect.d.ts +8 -2
  136. package/select/README.md +408 -34
  137. package/select/fesm2022/select.mjs +80 -72
  138. package/select/types/select.d.ts +3 -1
  139. package/separator/README.md +193 -34
  140. package/separator/fesm2022/separator.mjs +9 -9
  141. package/separator/types/separator.d.ts +1 -1
  142. package/sheet/README.md +282 -34
  143. package/sheet/fesm2022/sheet.mjs +30 -30
  144. package/sidebar/README.md +457 -5
  145. package/sidebar/fesm2022/sidebar.mjs +136 -134
  146. package/sidebar/types/sidebar.d.ts +3 -3
  147. package/skeleton/README.md +217 -5
  148. package/skeleton/fesm2022/skeleton.mjs +9 -9
  149. package/slider/README.md +273 -5
  150. package/slider/fesm2022/slider.mjs +29 -25
  151. package/sonner/README.md +317 -34
  152. package/sonner/fesm2022/sonner.mjs +9 -9
  153. package/spinner/README.md +255 -34
  154. package/spinner/fesm2022/spinner.mjs +8 -8
  155. package/switch/README.md +281 -34
  156. package/switch/fesm2022/switch.mjs +12 -14
  157. package/table/README.md +423 -5
  158. package/table/fesm2022/table.mjs +41 -41
  159. package/tabs/README.md +382 -34
  160. package/tabs/fesm2022/tabs.mjs +48 -38
  161. package/textarea/README.md +282 -5
  162. package/textarea/fesm2022/textarea.mjs +9 -9
  163. package/toggle/README.md +270 -5
  164. package/toggle/fesm2022/toggle.mjs +14 -14
  165. package/toggle-group/README.md +340 -5
  166. package/toggle-group/fesm2022/toggle-group.mjs +13 -13
  167. package/toggle-group/types/toggle-group.d.ts +13 -7
  168. package/tooltip/README.md +240 -34
  169. package/tooltip/fesm2022/tooltip.mjs +14 -14
  170. package/typography/README.md +271 -5
  171. package/typography/fesm2022/typography.mjs +53 -53
  172. package/typography/types/typography.d.ts +12 -12
  173. package/utils/README.md +274 -34
  174. package/utils/fesm2022/utils.mjs +68 -44
  175. package/accordion/fesm2022/accordion.mjs.map +0 -1
  176. package/alert/fesm2022/alert.mjs.map +0 -1
  177. package/alert-dialog/fesm2022/alert-dialog.mjs.map +0 -1
  178. package/aspect-ratio/fesm2022/aspect-ratio.mjs.map +0 -1
  179. package/autocomplete/fesm2022/autocomplete.mjs.map +0 -1
  180. package/avatar/fesm2022/avatar.mjs.map +0 -1
  181. package/badge/fesm2022/badge.mjs.map +0 -1
  182. package/basic-alert/fesm2022/basic-alert.mjs.map +0 -1
  183. package/breadcrumb/fesm2022/breadcrumb.mjs.map +0 -1
  184. package/button/fesm2022/button.mjs.map +0 -1
  185. package/button-group/fesm2022/button-group.mjs.map +0 -1
  186. package/calendar/fesm2022/calendar.mjs.map +0 -1
  187. package/card/fesm2022/card.mjs.map +0 -1
  188. package/carousel/fesm2022/carousel.mjs.map +0 -1
  189. package/checkbox/fesm2022/checkbox.mjs.map +0 -1
  190. package/collapsible/fesm2022/collapsible.mjs.map +0 -1
  191. package/combobox/fesm2022/combobox.mjs.map +0 -1
  192. package/command/fesm2022/command.mjs.map +0 -1
  193. package/confirmation-dialog/fesm2022/confirmation-dialog.mjs.map +0 -1
  194. package/context-menu/fesm2022/context-menu.mjs.map +0 -1
  195. package/date-picker/fesm2022/date-picker.mjs.map +0 -1
  196. package/dialog/fesm2022/dialog.mjs.map +0 -1
  197. package/drawer/fesm2022/drawer.mjs.map +0 -1
  198. package/dropdown-menu/fesm2022/dropdown-menu.mjs.map +0 -1
  199. package/empty/fesm2022/empty.mjs.map +0 -1
  200. package/field/fesm2022/field.mjs.map +0 -1
  201. package/form-checkbox/fesm2022/form-checkbox.mjs.map +0 -1
  202. package/form-date-picker/fesm2022/form-date-picker.mjs.map +0 -1
  203. package/form-field/fesm2022/form-field.mjs.map +0 -1
  204. package/form-field-simple/fesm2022/form-field-simple.mjs.map +0 -1
  205. package/form-searchable-multiselect/fesm2022/form-searchable-multiselect.mjs.map +0 -1
  206. package/form-select/fesm2022/form-select.mjs.map +0 -1
  207. package/form-text-input/fesm2022/form-text-input.mjs.map +0 -1
  208. package/form-textarea/fesm2022/form-textarea.mjs.map +0 -1
  209. package/hover-card/fesm2022/hover-card.mjs.map +0 -1
  210. package/icon/fesm2022/icon.mjs.map +0 -1
  211. package/input/fesm2022/input.mjs.map +0 -1
  212. package/input-group/fesm2022/input-group.mjs.map +0 -1
  213. package/input-otp/fesm2022/input-otp.mjs.map +0 -1
  214. package/item/fesm2022/item.mjs.map +0 -1
  215. package/kbd/fesm2022/kbd.mjs.map +0 -1
  216. package/label/fesm2022/label.mjs.map +0 -1
  217. package/layout-simple/fesm2022/layout-simple.mjs.map +0 -1
  218. package/menubar/fesm2022/menubar.mjs.map +0 -1
  219. package/native-select/fesm2022/native-select.mjs.map +0 -1
  220. package/navigation-menu/fesm2022/navigation-menu.mjs.map +0 -1
  221. package/pagination/fesm2022/pagination.mjs.map +0 -1
  222. package/popover/fesm2022/popover.mjs.map +0 -1
  223. package/progress/fesm2022/progress.mjs.map +0 -1
  224. package/radio-group/fesm2022/radio-group.mjs.map +0 -1
  225. package/resizable/fesm2022/resizable.mjs.map +0 -1
  226. package/scroll-area/fesm2022/scroll-area.mjs.map +0 -1
  227. package/searchable-multiselect/fesm2022/searchable-multiselect.mjs.map +0 -1
  228. package/select/fesm2022/select.mjs.map +0 -1
  229. package/separator/fesm2022/separator.mjs.map +0 -1
  230. package/sheet/fesm2022/sheet.mjs.map +0 -1
  231. package/sidebar/fesm2022/sidebar.mjs.map +0 -1
  232. package/skeleton/fesm2022/skeleton.mjs.map +0 -1
  233. package/slider/fesm2022/slider.mjs.map +0 -1
  234. package/sonner/fesm2022/sonner.mjs.map +0 -1
  235. package/spinner/fesm2022/spinner.mjs.map +0 -1
  236. package/switch/fesm2022/switch.mjs.map +0 -1
  237. package/table/fesm2022/table.mjs.map +0 -1
  238. package/tabs/fesm2022/tabs.mjs.map +0 -1
  239. package/textarea/fesm2022/textarea.mjs.map +0 -1
  240. package/toggle/fesm2022/toggle.mjs.map +0 -1
  241. package/toggle-group/fesm2022/toggle-group.mjs.map +0 -1
  242. package/tooltip/fesm2022/tooltip.mjs.map +0 -1
  243. package/typography/fesm2022/typography.mjs.map +0 -1
  244. package/utils/fesm2022/utils.mjs.map +0 -1
@@ -1,11 +1,346 @@
1
- # ToggleGroup
1
+ # Toggle Group (`@egose/shadcn-theme-ng/toggle-group`)
2
2
 
3
- This project was generated using [Angular CLI](https://github.com/angular/angular-cli).
3
+ A set of related two-state buttons, equivalent to [shadcn/ui Toggle Group](https://ui.shadcn.com/docs/components/toggle-group). This subpath ships `HlmToggleGroup` (container, `[hlmToggleGroup]` / `<hlm-toggle-group>`) and `HlmToggleGroupItem` (member, `button[hlmToggleGroupItem]`) over spartan-ng's `BrnToggleGroup` / `BrnToggleGroupItem` primitives, plus the `HlmToggleGroupToken` injection context (`injectHlmToggleGroup()`, `provideHlmToggleGroup()`). Sizing/variant cascade from the group to items via DI; item-level inputs override the group.
4
4
 
5
- ## Building
5
+ > **Ships as:** `@egose/shadcn-theme-ng/toggle-group` and `@egose/shadcn-theme-ng-tw/toggle-group` (the `tw:`-prefixed Tailwind variant). See the [package README](../../README.md) for install steps, peer dependencies, Tailwind setup, and testing/release guidance. Do not publish this project directory independently.
6
6
 
7
- To build the library, run:
7
+ ## Installation
8
8
 
9
9
  ```bash
10
- ng build toggle-group
10
+ # Plain Tailwind (no prefix)
11
+ npm install @egose/shadcn-theme-ng
12
+
13
+ # Or the tw:-prefixed variant
14
+ npm install @egose/shadcn-theme-ng-tw
15
+ ```
16
+
17
+ `@spartan-ng/brain` and `@egose/shadcn-theme-ng/toggle` (for `toggleVariants`) arrive transitively. See the [package README](../../README.md) for the full peer-dependency table.
18
+
19
+ ## Imports
20
+
21
+ All public symbols are re-exported from `projects/toggle-group/src/public-api.ts`:
22
+
23
+ ```ts
24
+ import {
25
+ HlmToggleGroup,
26
+ HlmToggleGroupImports,
27
+ HlmToggleGroupItem,
28
+ HlmToggleGroupModule,
29
+ HlmToggleGroupToken,
30
+ injectHlmToggleGroup,
31
+ provideHlmToggleGroup,
32
+ } from '@egose/shadcn-theme-ng/toggle-group';
33
+ import type { HlmToggleGroupContext } from '@egose/shadcn-theme-ng/toggle-group';
34
+ // tw variant: swap to '@egose/shadcn-theme-ng-tw/toggle-group'
35
+ ```
36
+
37
+ Standalone-component usage (preferred):
38
+
39
+ ```ts
40
+ import { Component } from '@angular/core';
41
+ import { HlmToggleGroupImports } from '@egose/shadcn-theme-ng/toggle-group';
42
+
43
+ @Component({
44
+ selector: 'app-demo',
45
+ standalone: true,
46
+ imports: [...HlmToggleGroupImports],
47
+ template: `
48
+ <div hlmToggleGroup>
49
+ <button hlmToggleGroupItem value="a">A</button>
50
+ </div>
51
+ `,
52
+ })
53
+ export class DemoComponent {}
11
54
  ```
55
+
56
+ NgModule usage:
57
+
58
+ ```ts
59
+ import { NgModule } from '@angular/core';
60
+ import { HlmToggleGroupModule } from '@egose/shadcn-theme-ng/toggle-group';
61
+
62
+ @NgModule({ imports: [HlmToggleGroupModule] })
63
+ export class FeatureModule {}
64
+ ```
65
+
66
+ | Symbol | Kind | Description |
67
+ | ------------------------- | ---------------- | ------------------------------------------------------------------------ |
68
+ | `HlmToggleGroup` | Directive | Container: `[hlmToggleGroup], hlm-toggle-group`. Provides group context. |
69
+ | `HlmToggleGroupItem` | Directive | Member: `button[hlmToggleGroupItem]`. Inherits group variant/size. |
70
+ | `HlmToggleGroupToken` | `InjectionToken` | DI token for `HlmToggleGroupContext` (variant/size/spacing). |
71
+ | `injectHlmToggleGroup()` | Function | Injects the parent group context (for custom items). |
72
+ | `provideHlmToggleGroup()` | Function | Provides the group context for a custom container. |
73
+ | `HlmToggleGroupContext` | Interface (type) | `{ variant, size, spacing }` input signals shared via DI. |
74
+ | `HlmToggleGroupImports` | `const` array | `[HlmToggleGroup, HlmToggleGroupItem]`. |
75
+ | `HlmToggleGroupModule` | NgModule | Imports + re-exports both directives. |
76
+
77
+ ## Anatomy / Structure
78
+
79
+ ```html
80
+ <!-- single-select formatting group -->
81
+ <div hlmToggleGroup type="single" variant="outline" size="default">
82
+ <button hlmToggleGroupItem value="bold" aria-label="Toggle bold">B</button>
83
+ <button hlmToggleGroupItem value="italic" aria-label="Toggle italic">I</button>
84
+ <button hlmToggleGroupItem value="underline" aria-label="Toggle underline">U</button>
85
+ </div>
86
+
87
+ <!-- multi-select with spacing + vertical orientation -->
88
+ <div hlmToggleGroup type="multiple" variant="outline" [spacing]="1" orientation="vertical">
89
+ <button hlmToggleGroupItem value="left" aria-label="Align left">L</button>
90
+ <button hlmToggleGroupItem value="center" aria-label="Align center">C</button>
91
+ <button hlmToggleGroupItem value="right" aria-label="Align right">R</button>
92
+ </div>
93
+ ```
94
+
95
+ > Items must be `<button hlmToggleGroupItem value="…">`. The group `type` is `'single' | 'multiple'` (from Brn); omit `type` only for uncontrolled demos.
96
+
97
+ ## API reference
98
+
99
+ ### `HlmToggleGroup` — selector `[hlmToggleGroup], hlm-toggle-group` (directive, hosts `BrnToggleGroup`)
100
+
101
+ Own styling inputs:
102
+
103
+ | Input | Type | Default | Description |
104
+ | ------------- | ------------------------------------------------------ | -------------- | ----------------------------------------------------------------------------------------------------------------- |
105
+ | `variant` | `ToggleVariants['variant']` (`'default' \| 'outline'`) | `'default'` | Cascades to items (item input wins when set). Reflected to `data-variant`. |
106
+ | `size` | `ToggleVariants['size']` (`'default' \| 'sm' \| 'lg'`) | `'default'` | Cascades to items. Reflected to `data-size`. |
107
+ | `spacing` | `number` (coerced with `numberAttribute`) | `0` | Gap level. Reflected to `data-spacing` + `--gap` (`gap-[--spacing(var(--gap))]`). `0` = joined segmented control. |
108
+ | `orientation` | `'horizontal' \| 'vertical'` | `'horizontal'` | Layout direction. Reflected to `data-orientation`. |
109
+
110
+ Forwarded to `BrnToggleGroup` via `hostDirectives`:
111
+
112
+ | Input / Output | Direction | Description |
113
+ | -------------- | --------- | ------------------------------------------------------------- |
114
+ | `type` | input | `'single' \| 'multiple'` selection mode. |
115
+ | `value` | input | Current value(s). Supports two-way binding. |
116
+ | `nullable` | input | (single mode) whether deselecting the active item is allowed. |
117
+ | `disabled` | input | Disables the whole group. |
118
+ | `valueChange` | output | Emits when the group value changes. |
119
+
120
+ Host: `data-slot="toggle-group"`, `flex w-fit` (column when `data-vertical`).
121
+
122
+ ### `HlmToggleGroupItem` — selector `button[hlmToggleGroupItem]` (directive, hosts `BrnToggleGroupItem`)
123
+
124
+ | Input | Type | Default | Description |
125
+ | --------- | --------------------------- | ----------- | ----------------------------------------------------------------------------------------------------- |
126
+ | `variant` | `ToggleVariants['variant']` | `'default'` | Overrides the group variant when set (group wins when the group value is truthy — see surprise note). |
127
+ | `size` | `ToggleVariants['size']` | `'default'` | Overrides the group size when set (same precedence rule). |
128
+
129
+ Forwarded to `BrnToggleGroupItem`: `id`, `value` (required per item), `disabled`, `state`, `aria-label`, `type` inputs and `stateChange` output.
130
+
131
+ Host: `data-slot="toggle-group-item"`, reflects resolved `data-variant` / `data-size` and group `data-spacing`. Styling = item overrides + `toggleVariants({ variant, size })`.
132
+
133
+ ### Token helpers — `hlm-toggle-group.token.ts`
134
+
135
+ ```ts
136
+ interface HlmToggleGroupContext {
137
+ readonly variant: InputSignal<ToggleVariants['variant']>;
138
+ readonly size: InputSignal<ToggleVariants['size']>;
139
+ readonly spacing: InputSignalWithTransform<number, NumberInput>;
140
+ }
141
+ ```
142
+
143
+ `provideHlmToggleGroup(HlmToggleGroup)` is wired automatically on the group directive; call it manually only for custom container components. `injectHlmToggleGroup()` reads the parent context (throws outside a group).
144
+
145
+ ## Examples
146
+
147
+ ### 1. Basic single-select formatting group
148
+
149
+ ```ts
150
+ // demo-basic.component.ts
151
+ import { Component } from '@angular/core';
152
+ import { HlmToggleGroupImports } from '@egose/shadcn-theme-ng/toggle-group';
153
+ import { NgIcon, provideIcons } from '@ng-icons/core';
154
+ import { lucideBold, lucideItalic, lucideUnderline } from '@ng-icons/lucide';
155
+
156
+ @Component({
157
+ selector: 'demo-basic',
158
+ standalone: true,
159
+ imports: [...HlmToggleGroupImports, NgIcon],
160
+ providers: [provideIcons({ lucideBold, lucideItalic, lucideUnderline })],
161
+ template: `
162
+ <div hlmToggleGroup type="single" variant="outline">
163
+ <button hlmToggleGroupItem value="bold" aria-label="Toggle bold"><ng-icon name="lucideBold" /></button>
164
+ <button hlmToggleGroupItem value="italic" aria-label="Toggle italic"><ng-icon name="lucideItalic" /></button>
165
+ <button hlmToggleGroupItem value="underline" aria-label="Toggle underline">
166
+ <ng-icon name="lucideUnderline" />
167
+ </button>
168
+ </div>
169
+ `,
170
+ })
171
+ export class DemoBasic {}
172
+ ```
173
+
174
+ ### 2. Controlled value (`value` / `valueChange`)
175
+
176
+ ```ts
177
+ // demo-controlled.component.ts
178
+ import { Component, signal } from '@angular/core';
179
+ import { HlmToggleGroupImports } from '@egose/shadcn-theme-ng/toggle-group';
180
+
181
+ @Component({
182
+ selector: 'demo-controlled',
183
+ standalone: true,
184
+ imports: [...HlmToggleGroupImports],
185
+ template: `
186
+ <div hlmToggleGroup type="single" [value]="align()" (valueChange)="align.set($event)" variant="outline">
187
+ <button hlmToggleGroupItem value="left">Left</button>
188
+ <button hlmToggleGroupItem value="center">Center</button>
189
+ <button hlmToggleGroupItem value="right">Right</button>
190
+ </div>
191
+ <p class="text-sm text-muted-foreground">Align: {{ align() ?? 'none' }}</p>
192
+ `,
193
+ })
194
+ export class DemoControlled {
195
+ readonly align = signal<string | null>('left');
196
+ }
197
+ ```
198
+
199
+ Multi-select holds an array:
200
+
201
+ ```html
202
+ <div hlmToggleGroup type="multiple" [value]="picked()" (valueChange)="picked.set($event)">
203
+ <button hlmToggleGroupItem value="a">A</button>
204
+ <button hlmToggleGroupItem value="b">B</button>
205
+ <button hlmToggleGroupItem value="c">C</button>
206
+ </div>
207
+ ```
208
+
209
+ ```ts
210
+ readonly picked = signal<string[]>(['a']);
211
+ ```
212
+
213
+ ### 3. Sizes, spacing, and orientation
214
+
215
+ ```ts
216
+ // demo-layout.component.ts
217
+ import { Component } from '@angular/core';
218
+ import { HlmToggleGroupImports } from '@egose/shadcn-theme-ng/toggle-group';
219
+
220
+ @Component({
221
+ selector: 'demo-layout',
222
+ standalone: true,
223
+ imports: [...HlmToggleGroupImports],
224
+ template: `
225
+ <!-- joined segmented control (spacing 0) -->
226
+ <div hlmToggleGroup type="single" variant="outline" size="sm">
227
+ <button hlmToggleGroupItem value="day">Day</button>
228
+ <button hlmToggleGroupItem value="week">Week</button>
229
+ <button hlmToggleGroupItem value="month">Month</button>
230
+ </div>
231
+
232
+ <!-- separated pills -->
233
+ <div hlmToggleGroup type="multiple" variant="default" [spacing]="2" class="mt-4">
234
+ <button hlmToggleGroupItem value="a">A</button>
235
+ <button hlmToggleGroupItem value="b">B</button>
236
+ <button hlmToggleGroupItem value="c">C</button>
237
+ </div>
238
+
239
+ <!-- vertical stack -->
240
+ <div hlmToggleGroup type="single" variant="outline" orientation="vertical" class="mt-4">
241
+ <button hlmToggleGroupItem value="top">Top</button>
242
+ <button hlmToggleGroupItem value="mid">Middle</button>
243
+ <button hlmToggleGroupItem value="bot">Bottom</button>
244
+ </div>
245
+ `,
246
+ })
247
+ export class DemoLayout {}
248
+ ```
249
+
250
+ ### 4. Disabled group / disabled item
251
+
252
+ ```ts
253
+ // demo-disabled.component.ts
254
+ import { Component } from '@angular/core';
255
+ import { HlmToggleGroupImports } from '@egose/shadcn-theme-ng/toggle-group';
256
+
257
+ @Component({
258
+ selector: 'demo-disabled',
259
+ standalone: true,
260
+ imports: [...HlmToggleGroupImports],
261
+ template: `
262
+ <div hlmToggleGroup type="single" disabled variant="outline">
263
+ <button hlmToggleGroupItem value="a">A</button>
264
+ <button hlmToggleGroupItem value="b">B</button>
265
+ </div>
266
+ <div hlmToggleGroup type="single" variant="outline" class="mt-2">
267
+ <button hlmToggleGroupItem value="a">A</button>
268
+ <button hlmToggleGroupItem value="b" disabled>B (off)</button>
269
+ </div>
270
+ `,
271
+ })
272
+ export class DemoDisabled {}
273
+ ```
274
+
275
+ ### 5. Per-item variant/size override
276
+
277
+ ```ts
278
+ // demo-override.component.ts
279
+ import { Component } from '@angular/core';
280
+ import { HlmToggleGroupImports } from '@egose/shadcn-theme-ng/toggle-group';
281
+
282
+ @Component({
283
+ selector: 'demo-override',
284
+ standalone: true,
285
+ imports: [...HlmToggleGroupImports],
286
+ template: `
287
+ <div hlmToggleGroup type="single" variant="outline" size="sm">
288
+ <button hlmToggleGroupItem value="a">A (group sm)</button>
289
+ <button hlmToggleGroupItem value="b" size="lg">B (own lg)</button>
290
+ </div>
291
+ `,
292
+ })
293
+ export class DemoOverride {}
294
+ ```
295
+
296
+ > Precedence surprise: `_variant = group.variant() || item.variant()` — the **group value wins whenever truthy**. Since both default to `'default'` (truthy), item overrides only take effect when the group variant/size is set to a falsy value or the group input is removed. In practice, set variant/size on the group _or_ per item, not both.
297
+
298
+ ### 6. Advanced: custom item via `injectHlmToggleGroup()`
299
+
300
+ Build your own item that still follows the group:
301
+
302
+ ```ts
303
+ // custom-item.component.ts
304
+ import { Component, computed } from '@angular/core';
305
+ import { hlm } from '@egose/shadcn-theme-ng/utils';
306
+ import { toggleVariants } from '@egose/shadcn-theme-ng/toggle';
307
+ import { injectHlmToggleGroup } from '@egose/shadcn-theme-ng/toggle-group';
308
+
309
+ @Component({
310
+ selector: 'button[customGroupItem]',
311
+ standalone: true,
312
+ template: `<ng-content />`,
313
+ host: { '[class]': 'classes()' },
314
+ })
315
+ export class CustomGroupItem {
316
+ private readonly group = injectHlmToggleGroup(); // must sit inside [hlmToggleGroup]
317
+ protected classes = computed(() =>
318
+ hlm(toggleVariants({ variant: this.group.variant(), size: this.group.size() }), 'uppercase'),
319
+ );
320
+ }
321
+ ```
322
+
323
+ ```html
324
+ <div hlmToggleGroup type="single" variant="outline">
325
+ <button customGroupItem value="a">A</button>
326
+ </div>
327
+ ```
328
+
329
+ ## Accessibility notes
330
+
331
+ - Give the group an accessible name (`aria-label` on the group element) when its purpose is not obvious from surrounding headings.
332
+ - Icon-only items need `aria-label` each; text items get names from content.
333
+ - Keyboard follows the toolbar pattern via the Brn primitive (arrows move, Space/Enter toggle). Keep DOM order = visual order, especially in `vertical` orientation.
334
+ - `disabled` on the group disables all items; a single `disabled` item is skipped in navigation — explain why when it blocks a workflow.
335
+ - Single-select groups should allow a null/empty state or document that one option is always active (`nullable` input).
336
+
337
+ ## Theming / CSS variables
338
+
339
+ Group and items share the toggle token set (`bg-muted` pressed, `border-input` outline, `ring-ring/50` focus). `spacing="0"` + `outline` renders a joined segmented control with `shadow-xs`; non-zero spacing renders separated pills with `--gap`. Follows your shadcn theme automatically.
340
+
341
+ ## Related subpaths
342
+
343
+ - `@egose/shadcn-theme-ng/toggle` — standalone toggle button + `toggleVariants` reused here.
344
+ - `@egose/shadcn-theme-ng/button-group` — action button groups (vs. pressed-state groups).
345
+ - `@egose/shadcn-theme-ng/tooltip` — labels for icon-only items.
346
+ - `@egose/shadcn-theme-ng/utils` — `hlm()` merger used for custom items.
@@ -22,12 +22,12 @@ class HlmToggleGroup {
22
22
  orientation = input('horizontal', /* @ts-ignore */
23
23
  ...(ngDevMode ? [{ debugName: "orientation" }] : /* istanbul ignore next */ []));
24
24
  constructor() {
25
- classes(() => 'rounded-md data-[spacing=0]:data-[variant=outline]:shadow-xs group/toggle-group flex w-fit flex-row items-center gap-[--spacing(var(--gap))] data-vertical:flex-col data-vertical:items-stretch');
25
+ classes(() => 'tw:rounded-md tw:data-[spacing=0]:data-[variant=outline]:shadow-xs tw:group/toggle-group tw:flex tw:w-fit tw:flex-row tw:items-center tw:gap-[--spacing(var(--gap))] tw:data-vertical:flex-col tw:data-vertical:items-stretch');
26
26
  }
27
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: HlmToggleGroup, deps: [], target: i0.ɵɵFactoryTarget.Directive });
28
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.0.7", type: HlmToggleGroup, isStandalone: true, selector: "[hlmToggleGroup],hlm-toggle-group", inputs: { variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, spacing: { classPropertyName: "spacing", publicName: "spacing", isSignal: true, isRequired: false, transformFunction: null }, orientation: { classPropertyName: "orientation", publicName: "orientation", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "data-slot": "toggle-group" }, properties: { "attr.data-variant": "variant()", "attr.data-size": "size()", "attr.data-spacing": "spacing()", "attr.data-orientation": "orientation()", "style.--gap": "spacing()" } }, providers: [provideHlmToggleGroup(HlmToggleGroup)], hostDirectives: [{ directive: i1.BrnToggleGroup, inputs: ["type", "type", "value", "value", "nullable", "nullable", "disabled", "disabled"], outputs: ["valueChange", "valueChange"] }], ngImport: i0 });
27
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmToggleGroup, deps: [], target: i0.ɵɵFactoryTarget.Directive });
28
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.1.3", type: HlmToggleGroup, isStandalone: true, selector: "[hlmToggleGroup],hlm-toggle-group", inputs: { variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, spacing: { classPropertyName: "spacing", publicName: "spacing", isSignal: true, isRequired: false, transformFunction: null }, orientation: { classPropertyName: "orientation", publicName: "orientation", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "data-slot": "toggle-group" }, properties: { "attr.data-variant": "variant()", "attr.data-size": "size()", "attr.data-spacing": "spacing()", "attr.data-orientation": "orientation()", "style.--gap": "spacing()" } }, providers: [provideHlmToggleGroup(HlmToggleGroup)], hostDirectives: [{ directive: i1.BrnToggleGroup, inputs: ["type", "type", "value", "value", "nullable", "nullable", "disabled", "disabled"], outputs: ["valueChange", "valueChange"] }], ngImport: i0 });
29
29
  }
30
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: HlmToggleGroup, decorators: [{
30
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmToggleGroup, decorators: [{
31
31
  type: Directive,
32
32
  args: [{
33
33
  selector: '[hlmToggleGroup],hlm-toggle-group',
@@ -62,17 +62,17 @@ class HlmToggleGroupItem {
62
62
  ...(ngDevMode ? [{ debugName: "_size" }] : /* istanbul ignore next */ []));
63
63
  constructor() {
64
64
  classes(() => [
65
- 'data-[state=on]:bg-muted group-data-[spacing=0]/toggle-group:rounded-none group-data-[spacing=0]/toggle-group:px-2 group-data-[spacing=0]/toggle-group:shadow-none group-data-horizontal/toggle-group:data-[spacing=0]:first:rounded-s-md group-data-vertical/toggle-group:data-[spacing=0]:first:rounded-t-md group-data-horizontal/toggle-group:data-[spacing=0]:last:rounded-e-md group-data-vertical/toggle-group:data-[spacing=0]:last:rounded-b-md shrink-0 focus:z-10 focus-visible:z-10 group-data-horizontal/toggle-group:data-[spacing=0]:data-[variant=outline]:border-s-0 group-data-vertical/toggle-group:data-[spacing=0]:data-[variant=outline]:border-t-0 group-data-horizontal/toggle-group:data-[spacing=0]:data-[variant=outline]:first:border-s group-data-vertical/toggle-group:data-[spacing=0]:data-[variant=outline]:first:border-t',
65
+ 'tw:data-[state=on]:bg-muted tw:group-data-[spacing=0]/toggle-group:rounded-none tw:group-data-[spacing=0]/toggle-group:px-2 tw:group-data-[spacing=0]/toggle-group:shadow-none tw:group-data-horizontal/toggle-group:data-[spacing=0]:first:rounded-s-md tw:group-data-vertical/toggle-group:data-[spacing=0]:first:rounded-t-md tw:group-data-horizontal/toggle-group:data-[spacing=0]:last:rounded-e-md tw:group-data-vertical/toggle-group:data-[spacing=0]:last:rounded-b-md tw:shrink-0 tw:focus:z-10 tw:focus-visible:z-10 tw:group-data-horizontal/toggle-group:data-[spacing=0]:data-[variant=outline]:border-s-0 tw:group-data-vertical/toggle-group:data-[spacing=0]:data-[variant=outline]:border-t-0 tw:group-data-horizontal/toggle-group:data-[spacing=0]:data-[variant=outline]:first:border-s tw:group-data-vertical/toggle-group:data-[spacing=0]:data-[variant=outline]:first:border-t',
66
66
  toggleVariants({
67
67
  variant: this._variant(),
68
68
  size: this._size(),
69
69
  }),
70
70
  ]);
71
71
  }
72
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: HlmToggleGroupItem, deps: [], target: i0.ɵɵFactoryTarget.Directive });
73
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.0.7", type: HlmToggleGroupItem, isStandalone: true, selector: "button[hlmToggleGroupItem]", inputs: { variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "data-slot": "toggle-group-item" }, properties: { "attr.data-variant": "_variant()", "attr.data-size": "_size()", "attr.data-spacing": "_toggleGroup.spacing()" } }, hostDirectives: [{ directive: i1.BrnToggleGroupItem, inputs: ["id", "id", "value", "value", "disabled", "disabled", "state", "state", "aria-label", "aria-label", "type", "type"], outputs: ["stateChange", "stateChange"] }], ngImport: i0 });
72
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmToggleGroupItem, deps: [], target: i0.ɵɵFactoryTarget.Directive });
73
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.1.3", type: HlmToggleGroupItem, isStandalone: true, selector: "button[hlmToggleGroupItem]", inputs: { variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "data-slot": "toggle-group-item" }, properties: { "attr.data-variant": "_variant()", "attr.data-size": "_size()", "attr.data-spacing": "_toggleGroup.spacing()" } }, hostDirectives: [{ directive: i1.BrnToggleGroupItem, inputs: ["id", "id", "value", "value", "disabled", "disabled", "state", "state", "aria-label", "aria-label", "type", "type"], outputs: ["stateChange", "stateChange"] }], ngImport: i0 });
74
74
  }
75
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: HlmToggleGroupItem, decorators: [{
75
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmToggleGroupItem, decorators: [{
76
76
  type: Directive,
77
77
  args: [{
78
78
  selector: 'button[hlmToggleGroupItem]',
@@ -97,11 +97,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImpor
97
97
  */
98
98
  const HlmToggleGroupImports = [HlmToggleGroup, HlmToggleGroupItem];
99
99
  class HlmToggleGroupModule {
100
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: HlmToggleGroupModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
101
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.0.7", ngImport: i0, type: HlmToggleGroupModule, imports: [HlmToggleGroup, HlmToggleGroupItem], exports: [HlmToggleGroup, HlmToggleGroupItem] });
102
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: HlmToggleGroupModule });
100
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmToggleGroupModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
101
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.1.3", ngImport: i0, type: HlmToggleGroupModule, imports: [HlmToggleGroup, HlmToggleGroupItem], exports: [HlmToggleGroup, HlmToggleGroupItem] });
102
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmToggleGroupModule });
103
103
  }
104
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: HlmToggleGroupModule, decorators: [{
104
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmToggleGroupModule, decorators: [{
105
105
  type: NgModule,
106
106
  args: [{
107
107
  imports: [...HlmToggleGroupImports],
@@ -114,4 +114,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImpor
114
114
  */
115
115
 
116
116
  export { HlmToggleGroup, HlmToggleGroupImports, HlmToggleGroupItem, HlmToggleGroupModule, HlmToggleGroupToken, injectHlmToggleGroup, provideHlmToggleGroup };
117
- //# sourceMappingURL=toggle-group.mjs.map
117
+
@@ -1,8 +1,8 @@
1
1
  import * as _angular_core from '@angular/core';
2
- import { InjectionToken, Type, ExistingProvider } from '@angular/core';
2
+ import { InputSignal, InputSignalWithTransform, InjectionToken, Type, ExistingProvider } from '@angular/core';
3
3
  import { NumberInput } from '@angular/cdk/coercion';
4
4
  import * as i1 from '@spartan-ng/brain/toggle-group';
5
- import * as toggle_group from 'toggle-group';
5
+ import { ToggleVariants } from '@egose/shadcn-theme-ng-tw/toggle';
6
6
 
7
7
  declare class HlmToggleGroup {
8
8
  readonly variant: _angular_core.InputSignal<"default" | "outline" | null | undefined>;
@@ -14,8 +14,17 @@ declare class HlmToggleGroup {
14
14
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<HlmToggleGroup, "[hlmToggleGroup],hlm-toggle-group", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "spacing": { "alias": "spacing"; "required": false; "isSignal": true; }; "orientation": { "alias": "orientation"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof i1.BrnToggleGroup; inputs: { "type": "type"; "value": "value"; "nullable": "nullable"; "disabled": "disabled"; }; outputs: { "valueChange": "valueChange"; }; }]>;
15
15
  }
16
16
 
17
+ interface HlmToggleGroupContext {
18
+ readonly variant: InputSignal<ToggleVariants['variant']>;
19
+ readonly size: InputSignal<ToggleVariants['size']>;
20
+ readonly spacing: InputSignalWithTransform<number, NumberInput>;
21
+ }
22
+ declare const HlmToggleGroupToken: InjectionToken<HlmToggleGroupContext>;
23
+ declare function injectHlmToggleGroup(): HlmToggleGroupContext;
24
+ declare function provideHlmToggleGroup(toggleGroup: Type<HlmToggleGroupContext>): ExistingProvider;
25
+
17
26
  declare class HlmToggleGroupItem {
18
- protected readonly _toggleGroup: toggle_group.HlmToggleGroup;
27
+ protected readonly _toggleGroup: HlmToggleGroupContext;
19
28
  readonly variant: _angular_core.InputSignal<"default" | "outline" | null | undefined>;
20
29
  readonly size: _angular_core.InputSignal<"default" | "sm" | "lg" | null | undefined>;
21
30
  protected readonly _variant: _angular_core.Signal<"default" | "outline" | null | undefined>;
@@ -25,10 +34,6 @@ declare class HlmToggleGroupItem {
25
34
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<HlmToggleGroupItem, "button[hlmToggleGroupItem]", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof i1.BrnToggleGroupItem; inputs: { "id": "id"; "value": "value"; "disabled": "disabled"; "state": "state"; "aria-label": "aria-label"; "type": "type"; }; outputs: { "stateChange": "stateChange"; }; }]>;
26
35
  }
27
36
 
28
- declare const HlmToggleGroupToken: InjectionToken<HlmToggleGroup>;
29
- declare function injectHlmToggleGroup(): HlmToggleGroup;
30
- declare function provideHlmToggleGroup(toggleGroup: Type<HlmToggleGroup>): ExistingProvider;
31
-
32
37
  declare const HlmToggleGroupImports: readonly [typeof HlmToggleGroup, typeof HlmToggleGroupItem];
33
38
  declare class HlmToggleGroupModule {
34
39
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<HlmToggleGroupModule, never>;
@@ -37,3 +42,4 @@ declare class HlmToggleGroupModule {
37
42
  }
38
43
 
39
44
  export { HlmToggleGroup, HlmToggleGroupImports, HlmToggleGroupItem, HlmToggleGroupModule, HlmToggleGroupToken, injectHlmToggleGroup, provideHlmToggleGroup };
45
+ export type { HlmToggleGroupContext };