@egose/shadcn-theme-ng 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 (237) hide show
  1. package/README.md +130 -13
  2. package/accordion/README.md +376 -34
  3. package/accordion/fesm2022/accordion.mjs +27 -39
  4. package/alert/README.md +343 -34
  5. package/alert/fesm2022/alert.mjs +47 -47
  6. package/alert-dialog/README.md +471 -5
  7. package/alert-dialog/fesm2022/alert-dialog.mjs +47 -47
  8. package/aspect-ratio/README.md +272 -5
  9. package/aspect-ratio/fesm2022/aspect-ratio.mjs +9 -9
  10. package/autocomplete/README.md +473 -34
  11. package/autocomplete/fesm2022/autocomplete.mjs +53 -71
  12. package/avatar/README.md +357 -5
  13. package/avatar/fesm2022/avatar.mjs +32 -32
  14. package/badge/README.md +289 -34
  15. package/badge/fesm2022/badge.mjs +57 -57
  16. package/basic-alert/README.md +324 -34
  17. package/basic-alert/fesm2022/basic-alert.mjs +6 -18
  18. package/breadcrumb/README.md +406 -5
  19. package/breadcrumb/fesm2022/breadcrumb.mjs +33 -39
  20. package/button/README.md +453 -34
  21. package/button/fesm2022/button.mjs +147 -219
  22. package/button/types/button.d.ts +7 -10
  23. package/button-group/README.md +318 -5
  24. package/button-group/fesm2022/button-group.mjs +20 -20
  25. package/calendar/README.md +328 -34
  26. package/calendar/fesm2022/calendar.mjs +29 -743
  27. package/card/README.md +331 -5
  28. package/card/fesm2022/card.mjs +33 -33
  29. package/carousel/README.md +333 -5
  30. package/carousel/fesm2022/carousel.mjs +39 -78
  31. package/checkbox/README.md +291 -34
  32. package/checkbox/fesm2022/checkbox.mjs +20 -58
  33. package/checkbox/types/checkbox.d.ts +5 -4
  34. package/collapsible/README.md +332 -5
  35. package/collapsible/fesm2022/collapsible.mjs +15 -15
  36. package/combobox/README.md +507 -5
  37. package/combobox/fesm2022/combobox.mjs +91 -224
  38. package/command/README.md +435 -5
  39. package/command/fesm2022/command.mjs +49 -109
  40. package/confirmation-dialog/README.md +272 -34
  41. package/confirmation-dialog/fesm2022/confirmation-dialog.mjs +15 -40
  42. package/confirmation-dialog/types/confirmation-dialog.d.ts +8 -4
  43. package/context-menu/README.md +366 -5
  44. package/context-menu/fesm2022/context-menu.mjs +9 -9
  45. package/date-picker/README.md +436 -34
  46. package/date-picker/fesm2022/date-picker.mjs +64 -267
  47. package/date-picker/types/date-picker.d.ts +7 -3
  48. package/dialog/README.md +419 -34
  49. package/dialog/fesm2022/dialog.mjs +45 -71
  50. package/drawer/README.md +395 -5
  51. package/drawer/fesm2022/drawer.mjs +44 -54
  52. package/dropdown-menu/README.md +417 -5
  53. package/dropdown-menu/fesm2022/dropdown-menu.mjs +82 -70
  54. package/dropdown-menu/types/dropdown-menu.d.ts +4 -0
  55. package/empty/README.md +329 -5
  56. package/empty/fesm2022/empty.mjs +30 -30
  57. package/field/README.md +385 -5
  58. package/field/fesm2022/field.mjs +56 -72
  59. package/form-checkbox/README.md +283 -34
  60. package/form-checkbox/fesm2022/form-checkbox.mjs +25 -85
  61. package/form-checkbox/types/form-checkbox.d.ts +7 -1
  62. package/form-date-picker/README.md +293 -34
  63. package/form-date-picker/fesm2022/form-date-picker.mjs +31 -84
  64. package/form-date-picker/types/form-date-picker.d.ts +7 -1
  65. package/form-field/README.md +327 -34
  66. package/form-field/fesm2022/form-field.mjs +33 -19
  67. package/form-field/types/form-field.d.ts +28 -20
  68. package/form-field-simple/README.md +311 -34
  69. package/form-field-simple/fesm2022/form-field-simple.mjs +4 -4
  70. package/form-searchable-multiselect/README.md +332 -34
  71. package/form-searchable-multiselect/fesm2022/form-searchable-multiselect.mjs +31 -91
  72. package/form-searchable-multiselect/types/form-searchable-multiselect.d.ts +7 -1
  73. package/form-select/README.md +321 -34
  74. package/form-select/fesm2022/form-select.mjs +32 -149
  75. package/form-select/types/form-select.d.ts +7 -1
  76. package/form-text-input/README.md +342 -34
  77. package/form-text-input/fesm2022/form-text-input.mjs +35 -149
  78. package/form-text-input/types/form-text-input.d.ts +9 -12
  79. package/form-textarea/README.md +318 -34
  80. package/form-textarea/fesm2022/form-textarea.mjs +34 -109
  81. package/form-textarea/types/form-textarea.d.ts +8 -1
  82. package/hover-card/README.md +256 -5
  83. package/hover-card/fesm2022/hover-card.mjs +19 -19
  84. package/icon/README.md +210 -34
  85. package/icon/fesm2022/icon.mjs +8 -8
  86. package/input/README.md +240 -34
  87. package/input/fesm2022/input.mjs +17 -12
  88. package/input/types/input.d.ts +2 -1
  89. package/input-group/README.md +335 -5
  90. package/input-group/fesm2022/input-group.mjs +34 -34
  91. package/input-otp/README.md +375 -5
  92. package/input-otp/fesm2022/input-otp.mjs +26 -26
  93. package/item/README.md +385 -5
  94. package/item/fesm2022/item.mjs +53 -53
  95. package/kbd/README.md +291 -5
  96. package/kbd/fesm2022/kbd.mjs +12 -12
  97. package/label/README.md +243 -34
  98. package/label/fesm2022/label.mjs +10 -10
  99. package/label/types/label.d.ts +1 -1
  100. package/layout-simple/README.md +174 -44
  101. package/layout-simple/fesm2022/layout-simple.mjs +508 -603
  102. package/layout-simple/types/layout-simple.d.ts +179 -128
  103. package/menu/README.md +418 -0
  104. package/menu/fesm2022/menu.mjs +455 -0
  105. package/menu/package.json +24 -0
  106. package/menu/types/menu.d.ts +137 -0
  107. package/menubar/README.md +343 -5
  108. package/menubar/fesm2022/menubar.mjs +13 -13
  109. package/native-select/README.md +323 -5
  110. package/native-select/fesm2022/native-select.mjs +19 -19
  111. package/navigation-menu/README.md +369 -5
  112. package/navigation-menu/fesm2022/navigation-menu.mjs +35 -47
  113. package/package.json +183 -154
  114. package/pagination/README.md +388 -5
  115. package/pagination/fesm2022/pagination.mjs +45 -331
  116. package/popover/README.md +302 -34
  117. package/popover/fesm2022/popover.mjs +30 -30
  118. package/progress/README.md +311 -5
  119. package/progress/fesm2022/progress.mjs +13 -13
  120. package/radio-group/README.md +335 -34
  121. package/radio-group/fesm2022/radio-group.mjs +26 -19
  122. package/radio-group/types/radio-group.d.ts +1 -1
  123. package/resizable/README.md +269 -5
  124. package/resizable/fesm2022/resizable.mjs +18 -26
  125. package/scroll-area/README.md +233 -5
  126. package/scroll-area/fesm2022/scroll-area.mjs +9 -9
  127. package/searchable-multiselect/README.md +294 -34
  128. package/searchable-multiselect/fesm2022/searchable-multiselect.mjs +28 -117
  129. package/searchable-multiselect/types/searchable-multiselect.d.ts +8 -2
  130. package/select/README.md +408 -34
  131. package/select/fesm2022/select.mjs +71 -111
  132. package/select/types/select.d.ts +3 -1
  133. package/separator/README.md +193 -34
  134. package/separator/fesm2022/separator.mjs +9 -9
  135. package/separator/types/separator.d.ts +1 -1
  136. package/sheet/README.md +282 -34
  137. package/sheet/fesm2022/sheet.mjs +41 -53
  138. package/sidebar/README.md +457 -5
  139. package/sidebar/fesm2022/sidebar.mjs +125 -227
  140. package/skeleton/README.md +217 -5
  141. package/skeleton/fesm2022/skeleton.mjs +9 -9
  142. package/slider/README.md +273 -5
  143. package/slider/fesm2022/slider.mjs +10 -80
  144. package/sonner/README.md +317 -34
  145. package/sonner/fesm2022/sonner.mjs +13 -13
  146. package/spinner/README.md +255 -34
  147. package/spinner/fesm2022/spinner.mjs +11 -11
  148. package/switch/README.md +281 -34
  149. package/switch/fesm2022/switch.mjs +13 -15
  150. package/table/README.md +423 -5
  151. package/table/fesm2022/table.mjs +41 -41
  152. package/tabs/README.md +382 -34
  153. package/tabs/fesm2022/tabs.mjs +35 -111
  154. package/textarea/README.md +282 -5
  155. package/textarea/fesm2022/textarea.mjs +9 -9
  156. package/toggle/README.md +270 -5
  157. package/toggle/fesm2022/toggle.mjs +13 -13
  158. package/toggle-group/README.md +340 -5
  159. package/toggle-group/fesm2022/toggle-group.mjs +13 -13
  160. package/toggle-group/types/toggle-group.d.ts +13 -7
  161. package/tooltip/README.md +240 -34
  162. package/tooltip/fesm2022/tooltip.mjs +14 -14
  163. package/typography/README.md +271 -5
  164. package/typography/fesm2022/typography.mjs +53 -53
  165. package/typography/types/typography.d.ts +19 -19
  166. package/utils/README.md +274 -34
  167. package/utils/fesm2022/utils.mjs +68 -44
  168. package/accordion/fesm2022/accordion.mjs.map +0 -1
  169. package/alert/fesm2022/alert.mjs.map +0 -1
  170. package/alert-dialog/fesm2022/alert-dialog.mjs.map +0 -1
  171. package/aspect-ratio/fesm2022/aspect-ratio.mjs.map +0 -1
  172. package/autocomplete/fesm2022/autocomplete.mjs.map +0 -1
  173. package/avatar/fesm2022/avatar.mjs.map +0 -1
  174. package/badge/fesm2022/badge.mjs.map +0 -1
  175. package/basic-alert/fesm2022/basic-alert.mjs.map +0 -1
  176. package/breadcrumb/fesm2022/breadcrumb.mjs.map +0 -1
  177. package/button/fesm2022/button.mjs.map +0 -1
  178. package/button-group/fesm2022/button-group.mjs.map +0 -1
  179. package/calendar/fesm2022/calendar.mjs.map +0 -1
  180. package/card/fesm2022/card.mjs.map +0 -1
  181. package/carousel/fesm2022/carousel.mjs.map +0 -1
  182. package/checkbox/fesm2022/checkbox.mjs.map +0 -1
  183. package/collapsible/fesm2022/collapsible.mjs.map +0 -1
  184. package/combobox/fesm2022/combobox.mjs.map +0 -1
  185. package/command/fesm2022/command.mjs.map +0 -1
  186. package/confirmation-dialog/fesm2022/confirmation-dialog.mjs.map +0 -1
  187. package/context-menu/fesm2022/context-menu.mjs.map +0 -1
  188. package/date-picker/fesm2022/date-picker.mjs.map +0 -1
  189. package/dialog/fesm2022/dialog.mjs.map +0 -1
  190. package/drawer/fesm2022/drawer.mjs.map +0 -1
  191. package/dropdown-menu/fesm2022/dropdown-menu.mjs.map +0 -1
  192. package/empty/fesm2022/empty.mjs.map +0 -1
  193. package/field/fesm2022/field.mjs.map +0 -1
  194. package/form-checkbox/fesm2022/form-checkbox.mjs.map +0 -1
  195. package/form-date-picker/fesm2022/form-date-picker.mjs.map +0 -1
  196. package/form-field/fesm2022/form-field.mjs.map +0 -1
  197. package/form-field-simple/fesm2022/form-field-simple.mjs.map +0 -1
  198. package/form-searchable-multiselect/fesm2022/form-searchable-multiselect.mjs.map +0 -1
  199. package/form-select/fesm2022/form-select.mjs.map +0 -1
  200. package/form-text-input/fesm2022/form-text-input.mjs.map +0 -1
  201. package/form-textarea/fesm2022/form-textarea.mjs.map +0 -1
  202. package/hover-card/fesm2022/hover-card.mjs.map +0 -1
  203. package/icon/fesm2022/icon.mjs.map +0 -1
  204. package/input/fesm2022/input.mjs.map +0 -1
  205. package/input-group/fesm2022/input-group.mjs.map +0 -1
  206. package/input-otp/fesm2022/input-otp.mjs.map +0 -1
  207. package/item/fesm2022/item.mjs.map +0 -1
  208. package/kbd/fesm2022/kbd.mjs.map +0 -1
  209. package/label/fesm2022/label.mjs.map +0 -1
  210. package/layout-simple/fesm2022/layout-simple.mjs.map +0 -1
  211. package/menubar/fesm2022/menubar.mjs.map +0 -1
  212. package/native-select/fesm2022/native-select.mjs.map +0 -1
  213. package/navigation-menu/fesm2022/navigation-menu.mjs.map +0 -1
  214. package/pagination/fesm2022/pagination.mjs.map +0 -1
  215. package/popover/fesm2022/popover.mjs.map +0 -1
  216. package/progress/fesm2022/progress.mjs.map +0 -1
  217. package/radio-group/fesm2022/radio-group.mjs.map +0 -1
  218. package/resizable/fesm2022/resizable.mjs.map +0 -1
  219. package/scroll-area/fesm2022/scroll-area.mjs.map +0 -1
  220. package/searchable-multiselect/fesm2022/searchable-multiselect.mjs.map +0 -1
  221. package/select/fesm2022/select.mjs.map +0 -1
  222. package/separator/fesm2022/separator.mjs.map +0 -1
  223. package/sheet/fesm2022/sheet.mjs.map +0 -1
  224. package/sidebar/fesm2022/sidebar.mjs.map +0 -1
  225. package/skeleton/fesm2022/skeleton.mjs.map +0 -1
  226. package/slider/fesm2022/slider.mjs.map +0 -1
  227. package/sonner/fesm2022/sonner.mjs.map +0 -1
  228. package/spinner/fesm2022/spinner.mjs.map +0 -1
  229. package/switch/fesm2022/switch.mjs.map +0 -1
  230. package/table/fesm2022/table.mjs.map +0 -1
  231. package/tabs/fesm2022/tabs.mjs.map +0 -1
  232. package/textarea/fesm2022/textarea.mjs.map +0 -1
  233. package/toggle/fesm2022/toggle.mjs.map +0 -1
  234. package/toggle-group/fesm2022/toggle-group.mjs.map +0 -1
  235. package/tooltip/fesm2022/tooltip.mjs.map +0 -1
  236. package/typography/fesm2022/typography.mjs.map +0 -1
  237. package/utils/fesm2022/utils.mjs.map +0 -1
@@ -1,11 +1,412 @@
1
- # Breadcrumb
1
+ # Breadcrumb (`@egose/shadcn-theme-ng/breadcrumb`)
2
2
 
3
- This project was generated using [Angular CLI](https://github.com/angular/angular-cli).
3
+ A wayfinding trail in the shadcn/ui Breadcrumb style ("Home / Products / Shoes"): a `nav` region
4
+ containing an ordered-feeling list of links, chevron separators, an ellipsis placeholder for
5
+ collapsed middle segments, and a current-page marker. Use it above page headers so users always
6
+ know where they are and can jump back up the hierarchy.
4
7
 
5
- ## Building
8
+ This is a **routing-aware styling layer with no single brain primitive**. `HlmBreadcrumbLink`
9
+ wraps Angular's `RouterLink` via `hostDirectives` (every router input is forwarded); the
10
+ remaining pieces are layout/semantic directives adding `data-slot` attributes plus shadcn classes
11
+ through `classes()`. Separators and ellipses are tiny components that render a Lucide
12
+ `chevron-right` / `ellipsis` `ng-icon` with an `<ng-content>` / screen-reader-text slot.
6
13
 
7
- To build the library, run:
14
+ > **Ships as:** `@egose/shadcn-theme-ng/breadcrumb` and `@egose/shadcn-theme-ng-tw/breadcrumb`
15
+ > (the `tw:`-prefixed Tailwind variant). Both expose the identical TypeScript surface; only the
16
+ > emitted Tailwind class strings differ. See the [package README](../../README.md) for install
17
+ > steps, peer dependencies, and Tailwind setup. Do not publish this project directory independently.
18
+
19
+ ## Installation
8
20
 
9
21
  ```bash
10
- ng build breadcrumb
22
+ # Plain Tailwind (no prefix)
23
+ npm install @egose/shadcn-theme-ng
24
+
25
+ # tw:-prefixed Tailwind variant
26
+ npm install @egose/shadcn-theme-ng-tw
27
+ ```
28
+
29
+ Peer dependencies (Angular, `@spartan-ng/brain`, `@ng-icons/*`, `rxjs`, …) are documented in the
30
+ [package README](../../README.md#peer-dependencies). This subpath additionally relies at runtime on
31
+ `@angular/router` (`RouterLink`), `@egose/shadcn-theme-ng/utils` (`classes()`), and
32
+ `@ng-icons/lucide` (`lucideChevronRight`, `lucideEllipsis`).
33
+
34
+ ## Imports
35
+
36
+ All symbols are exported from the subpath root (`projects/breadcrumb/src/public-api.ts`):
37
+
38
+ ```ts
39
+ import {
40
+ HlmBreadcrumb,
41
+ HlmBreadcrumbList,
42
+ HlmBreadcrumbItem,
43
+ HlmBreadcrumbLink,
44
+ HlmBreadcrumbPage,
45
+ HlmBreadcrumbSeparator,
46
+ HlmBreadcrumbEllipsis,
47
+ HlmBreadcrumbImports,
48
+ HlmBreadcrumbModule,
49
+ } from '@egose/shadcn-theme-ng/breadcrumb';
50
+ // tw variant: replace with '@egose/shadcn-theme-ng-tw/breadcrumb'
51
+ ```
52
+
53
+ Standalone component — spread the `*Imports` array:
54
+
55
+ ```ts
56
+ import { Component } from '@angular/core';
57
+ import { HlmBreadcrumbImports } from '@egose/shadcn-theme-ng/breadcrumb';
58
+
59
+ @Component({
60
+ selector: 'app-demo',
61
+ standalone: true,
62
+ imports: [...HlmBreadcrumbImports],
63
+ template: `...`,
64
+ })
65
+ export class DemoComponent {}
66
+ ```
67
+
68
+ NgModule-based consumer — import the module:
69
+
70
+ ```ts
71
+ import { NgModule } from '@angular/core';
72
+ import { HlmBreadcrumbModule } from '@egose/shadcn-theme-ng/breadcrumb';
73
+
74
+ @NgModule({ imports: [HlmBreadcrumbModule] })
75
+ export class DemoModule {}
11
76
  ```
77
+
78
+ ## Anatomy / Structure
79
+
80
+ ```html
81
+ <nav hlmBreadcrumb aria-label="breadcrumb">
82
+ <ol hlmBreadcrumbList>
83
+ <li hlmBreadcrumbItem>
84
+ <a hlmBreadcrumbLink link="/">Home</a>
85
+ </li>
86
+ <li hlmBreadcrumbSeparator></li>
87
+ <li hlmBreadcrumbItem>
88
+ <hlm-breadcrumb-ellipsis srOnlyText="More" />
89
+ </li>
90
+ <li hlmBreadcrumbSeparator></li>
91
+ <li hlmBreadcrumbItem>
92
+ <span hlmBreadcrumbPage>Current page</span>
93
+ </li>
94
+ </ol>
95
+ </nav>
96
+ ```
97
+
98
+ Real selectors (from source):
99
+
100
+ | Class | Selector(s) | Kind |
101
+ | ------------------------ | -------------------------- | --------- |
102
+ | `HlmBreadcrumb` | `[hlmBreadcrumb]` | Directive |
103
+ | `HlmBreadcrumbList` | `[hlmBreadcrumbList]` | Directive |
104
+ | `HlmBreadcrumbItem` | `[hlmBreadcrumbItem]` | Directive |
105
+ | `HlmBreadcrumbLink` | `[hlmBreadcrumbLink]` | Directive |
106
+ | `HlmBreadcrumbPage` | `[hlmBreadcrumbPage]` | Directive |
107
+ | `HlmBreadcrumbSeparator` | `[hlmBreadcrumbSeparator]` | Component |
108
+ | `HlmBreadcrumbEllipsis` | `hlm-breadcrumb-ellipsis` | Component |
109
+
110
+ Host semantics from source: `HlmBreadcrumb` sets `role="navigation"` + `aria-label`;
111
+ `HlmBreadcrumbPage` sets `role="link"`, `aria-disabled="true"`, `aria-current="page"`;
112
+ `HlmBreadcrumbSeparator` sets `role="presentation"`, `aria-hidden="true"`;
113
+ `HlmBreadcrumbEllipsis` sets `role="presentation"` and renders its `srOnlyText` in an
114
+ `sr-only` span.
115
+
116
+ ## API reference
117
+
118
+ ### `HlmBreadcrumb` — `[hlmBreadcrumb]`
119
+
120
+ | Input | Type | Default | Description |
121
+ | ----------------------------------- | -------- | -------------- | ----------------------------------------- |
122
+ | `aria-label` (alias of `ariaLabel`) | `string` | `'breadcrumb'` | Accessible name of the navigation region. |
123
+
124
+ ### `HlmBreadcrumbList` / `HlmBreadcrumbItem`
125
+
126
+ Layout-only directives, no inputs. List: wrapping muted flex row (`text-sm`, `gap-1.5/2.5`);
127
+ item: `inline-flex items-center gap-1.5` slot for one link/page/separator step.
128
+
129
+ ### `HlmBreadcrumbLink` — `[hlmBreadcrumbLink]`
130
+
131
+ Wraps `RouterLink` via `hostDirectives`; every router input is forwarded.
132
+
133
+ | Input | Type | Description |
134
+ | --------------------- | -------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |
135
+ | `link` | `RouterLink['routerLink']` | **Own input** and simultaneously the `routerLink` binding (`routerLink: link` mapping). Accepts a string, commands array, or `UrlTree`. |
136
+ | `target` | forwarded to `RouterLink` | Link target. |
137
+ | `queryParams` | forwarded | Query params. |
138
+ | `fragment` | forwarded | URL fragment. |
139
+ | `queryParamsHandling` | forwarded | `'merge' \| 'preserve' \| ''`. |
140
+ | `state` | forwarded | Router state extras. |
141
+ | `info` | forwarded | Router info extras. |
142
+ | `relativeTo` | forwarded | Base route for relative links. |
143
+ | `preserveFragment` | forwarded | Keep the current fragment. |
144
+ | `skipLocationChange` | forwarded | Navigate without pushing history. |
145
+ | `replaceUrl` | forwarded | Replace instead of push. |
146
+
147
+ ### `HlmBreadcrumbPage` — `[hlmBreadcrumbPage]`
148
+
149
+ Current-page marker. No inputs; styled `text-foreground font-normal` with
150
+ `aria-current="page"`.
151
+
152
+ ### `HlmBreadcrumbSeparator` — `[hlmBreadcrumbSeparator]`
153
+
154
+ Component (attribute selector) rendering `<ng-icon name="lucideChevronRight">` by default. No
155
+ inputs — override the icon by projecting your own content:
156
+
157
+ ```html
158
+ <li hlmBreadcrumbSeparator><span class="tw:px-1">/</span></li>
159
+ ```
160
+
161
+ ### `HlmBreadcrumbEllipsis` — `hlm-breadcrumb-ellipsis`
162
+
163
+ Collapsed-segments placeholder rendering the `ellipsis` icon plus screen-reader text.
164
+
165
+ | Input | Type | Default | Description |
166
+ | ------------ | -------- | -------- | --------------------------------- |
167
+ | `srOnlyText` | `string` | `'More'` | Text announced to screen readers. |
168
+
169
+ ## Examples
170
+
171
+ ### 1. Basic trail with router links
172
+
173
+ ```ts
174
+ import { Component } from '@angular/core';
175
+ import { HlmBreadcrumbImports } from '@egose/shadcn-theme-ng/breadcrumb';
176
+
177
+ @Component({
178
+ selector: 'app-breadcrumb-basic',
179
+ standalone: true,
180
+ imports: [...HlmBreadcrumbImports],
181
+ template: `
182
+ <nav hlmBreadcrumb>
183
+ <ol hlmBreadcrumbList>
184
+ <li hlmBreadcrumbItem>
185
+ <a hlmBreadcrumbLink link="/">Home</a>
186
+ </li>
187
+ <li hlmBreadcrumbSeparator></li>
188
+ <li hlmBreadcrumbItem>
189
+ <a hlmBreadcrumbLink link="/products">Products</a>
190
+ </li>
191
+ <li hlmBreadcrumbSeparator></li>
192
+ <li hlmBreadcrumbItem>
193
+ <span hlmBreadcrumbPage>Running shoes</span>
194
+ </li>
195
+ </ol>
196
+ </nav>
197
+ `,
198
+ })
199
+ export class BreadcrumbBasicComponent {}
200
+ ```
201
+
202
+ ```html
203
+ <app-breadcrumb-basic />
204
+ ```
205
+
206
+ ### 2. Collapsed middle segments with ellipsis
207
+
208
+ ```ts
209
+ import { Component } from '@angular/core';
210
+ import { HlmBreadcrumbImports } from '@egose/shadcn-theme-ng/breadcrumb';
211
+
212
+ @Component({
213
+ selector: 'app-breadcrumb-ellipsis',
214
+ standalone: true,
215
+ imports: [...HlmBreadcrumbImports],
216
+ template: `
217
+ <nav hlmBreadcrumb aria-label="File path">
218
+ <ol hlmBreadcrumbList>
219
+ <li hlmBreadcrumbItem><a hlmBreadcrumbLink link="/">Home</a></li>
220
+ <li hlmBreadcrumbSeparator></li>
221
+ <li hlmBreadcrumbItem><hlm-breadcrumb-ellipsis srOnlyText="3 collapsed folders" /></li>
222
+ <li hlmBreadcrumbSeparator></li>
223
+ <li hlmBreadcrumbItem><a hlmBreadcrumbLink link="/docs">Docs</a></li>
224
+ <li hlmBreadcrumbSeparator></li>
225
+ <li hlmBreadcrumbItem><span hlmBreadcrumbPage>Q3 report.pdf</span></li>
226
+ </ol>
227
+ </nav>
228
+ `,
229
+ })
230
+ export class BreadcrumbEllipsisComponent {}
231
+ ```
232
+
233
+ ### 3. Data-driven trail from the router (or any segment list)
234
+
235
+ ```ts
236
+ import { Component, computed, inject } from '@angular/core';
237
+ import { ActivatedRoute } from '@angular/router';
238
+ import { HlmBreadcrumbImports } from '@egose/shadcn-theme-ng/breadcrumb';
239
+
240
+ interface Crumb {
241
+ label: string;
242
+ link?: string[];
243
+ }
244
+
245
+ @Component({
246
+ selector: 'app-breadcrumb-dynamic',
247
+ standalone: true,
248
+ imports: [...HlmBreadcrumbImports],
249
+ template: `
250
+ <nav hlmBreadcrumb>
251
+ <ol hlmBreadcrumbList>
252
+ @for (c of crumbs(); track c.label; let last = $last) {
253
+ <li hlmBreadcrumbItem>
254
+ @if (last || !c.link) {
255
+ <span hlmBreadcrumbPage>{{ c.label }}</span>
256
+ } @else {
257
+ <a hlmBreadcrumbLink [link]="c.link">{{ c.label }}</a>
258
+ }
259
+ </li>
260
+ @if (!last) {
261
+ <li hlmBreadcrumbSeparator></li>
262
+ }
263
+ }
264
+ </ol>
265
+ </nav>
266
+ `,
267
+ })
268
+ export class BreadcrumbDynamicComponent {
269
+ private readonly route = inject(ActivatedRoute, { optional: true });
270
+
271
+ // Derive from route snapshots in real apps; static here for clarity.
272
+ readonly crumbs = computed<Crumb[]>(() => [
273
+ { label: 'Workspace', link: ['/'] },
274
+ { label: 'Projects', link: ['/', 'projects'] },
275
+ { label: this.route?.snapshot.paramMap.get('id') ?? 'apollo' },
276
+ ]);
277
+ }
278
+ ```
279
+
280
+ ### 4. Links with query params, fragments, and relative navigation
281
+
282
+ All `RouterLink` inputs forward, so deep-linking patterns work unchanged:
283
+
284
+ ```ts
285
+ import { Component } from '@angular/core';
286
+ import { HlmBreadcrumbImports } from '@egose/shadcn-theme-ng/breadcrumb';
287
+
288
+ @Component({
289
+ selector: 'app-breadcrumb-router',
290
+ standalone: true,
291
+ imports: [...HlmBreadcrumbImports],
292
+ template: `
293
+ <nav hlmBreadcrumb>
294
+ <ol hlmBreadcrumbList>
295
+ <li hlmBreadcrumbItem>
296
+ <a hlmBreadcrumbLink link="/" queryParamsHandling="preserve">Home</a>
297
+ </li>
298
+ <li hlmBreadcrumbSeparator></li>
299
+ <li hlmBreadcrumbItem>
300
+ <a hlmBreadcrumbLink [link]="['../']" fragment="reviews">Parent section</a>
301
+ </li>
302
+ <li hlmBreadcrumbSeparator></li>
303
+ <li hlmBreadcrumbItem>
304
+ <a hlmBreadcrumbLink [link]="['/search']" [queryParams]="{ q: 'shoes' }"> Search: shoes </a>
305
+ </li>
306
+ <li hlmBreadcrumbSeparator></li>
307
+ <li hlmBreadcrumbItem><span hlmBreadcrumbPage>Details</span></li>
308
+ </ol>
309
+ </nav>
310
+ `,
311
+ })
312
+ export class BreadcrumbRouterComponent {}
313
+ ```
314
+
315
+ ### 5. Custom separator glyph
316
+
317
+ Project anything into the separator to replace the chevron:
318
+
319
+ ```ts
320
+ import { Component } from '@angular/core';
321
+ import { HlmBreadcrumbImports } from '@egose/shadcn-theme-ng/breadcrumb';
322
+
323
+ @Component({
324
+ selector: 'app-breadcrumb-custom-sep',
325
+ standalone: true,
326
+ imports: [...HlmBreadcrumbImports],
327
+ template: `
328
+ <nav hlmBreadcrumb>
329
+ <ol hlmBreadcrumbList>
330
+ <li hlmBreadcrumbItem><a hlmBreadcrumbLink link="/">Home</a></li>
331
+ <li hlmBreadcrumbSeparator><span aria-hidden="true" class="tw:px-0.5">/</span></li>
332
+ <li hlmBreadcrumbItem><a hlmBreadcrumbLink link="/blog">Blog</a></li>
333
+ <li hlmBreadcrumbSeparator><span aria-hidden="true" class="tw:px-0.5">/</span></li>
334
+ <li hlmBreadcrumbItem><span hlmBreadcrumbPage>Hello world</span></li>
335
+ </ol>
336
+ </nav>
337
+ `,
338
+ })
339
+ export class BreadcrumbCustomSepComponent {}
340
+ ```
341
+
342
+ ### 6. Collapsible middle on small screens (responsive pattern)
343
+
344
+ Combine the ellipsis with a dropdown menu so hidden segments stay reachable:
345
+
346
+ ```ts
347
+ import { Component, signal } from '@angular/core';
348
+ import { RouterLink } from '@angular/router';
349
+ import { HlmBreadcrumbImports } from '@egose/shadcn-theme-ng/breadcrumb';
350
+ import { HlmDropdownMenuImports } from '@egose/shadcn-theme-ng/dropdown-menu';
351
+
352
+ @Component({
353
+ selector: 'app-breadcrumb-responsive',
354
+ standalone: true,
355
+ imports: [...HlmBreadcrumbImports, ...HlmDropdownMenuImports, RouterLink],
356
+ template: `
357
+ <nav hlmBreadcrumb>
358
+ <ol hlmBreadcrumbList>
359
+ <li hlmBreadcrumbItem><a hlmBreadcrumbLink link="/">Home</a></li>
360
+ <li hlmBreadcrumbSeparator></li>
361
+ <li hlmBreadcrumbItem>
362
+ <button hlmDropdownMenuTrigger [hlmDropdownMenuTrigger]="menu" class="tw:flex tw:items-center">
363
+ <hlm-breadcrumb-ellipsis srOnlyText="Show hidden sections" />
364
+ </button>
365
+ <ng-template #menu>
366
+ <div hlmDropdownMenu>
367
+ @for (s of hidden(); track s.label) {
368
+ <a hlmDropdownMenuItem [routerLink]="s.link">{{ s.label }}</a>
369
+ }
370
+ </div>
371
+ </ng-template>
372
+ </li>
373
+ <li hlmBreadcrumbSeparator></li>
374
+ <li hlmBreadcrumbItem><span hlmBreadcrumbPage>Current report</span></li>
375
+ </ol>
376
+ </nav>
377
+ `,
378
+ })
379
+ export class BreadcrumbResponsiveComponent {
380
+ readonly hidden = signal([
381
+ { label: '2024', link: ['/archive/2024'] },
382
+ { label: 'Q3', link: ['/archive/2024/q3'] },
383
+ ]);
384
+ }
385
+ ```
386
+
387
+ > Exact `dropdown-menu` trigger/menu/item selectors live in
388
+ > `@egose/shadcn-theme-ng/dropdown-menu` — verify names there before pasting; the breadcrumb half
389
+ > (`hlm-breadcrumb-ellipsis` inside a trigger) is verbatim.
390
+
391
+ ## Accessibility notes
392
+
393
+ - The root is `role="navigation"` with a configurable `aria-label` (default `"breadcrumb"`).
394
+ When several breadcrumbs appear on one page, give each a distinct label.
395
+ - The current page uses `aria-current="page"` + `aria-disabled="true"` with `role="link"` — it is
396
+ deliberately **not** a focusable link, so keyboard users skip it.
397
+ - Separators are `role="presentation"` + `aria-hidden`; the ellipsis carries `sr-only` text
398
+ (customize via `srOnlyText`, e.g. "3 collapsed folders") so its meaning survives without sight.
399
+ - Keep crumb labels short and unique; the link text is the accessible name, so avoid "click here".
400
+
401
+ ## Theming / CSS variables
402
+
403
+ Class-based styling (`text-muted-foreground` list, `hover:text-foreground` links); no
404
+ component-specific CSS variables. Override separators/ellipses by projecting content or targeting
405
+ `data-slot="breadcrumb-separator"`.
406
+
407
+ ## Related subpaths
408
+
409
+ - `@egose/shadcn-theme-ng/dropdown-menu` — overflow menus for collapsed segments
410
+ - `@egose/shadcn-theme-ng/navigation-menu` — full site navigation bars
411
+ - `@egose/shadcn-theme-ng/pagination` — page-step navigation with similar link semantics
412
+ - `@egose/shadcn-theme-ng/skeleton` — breadcrumb-shaped loading placeholders
@@ -8,10 +8,10 @@ import { RouterLink } from '@angular/router';
8
8
 
9
9
  class HlmBreadcrumb {
10
10
  ariaLabel = input('breadcrumb', { ...(ngDevMode ? { debugName: "ariaLabel" } : /* istanbul ignore next */ {}), alias: 'aria-label' });
11
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: HlmBreadcrumb, deps: [], target: i0.ɵɵFactoryTarget.Directive });
12
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.0.7", type: HlmBreadcrumb, isStandalone: true, selector: "[hlmBreadcrumb]", inputs: { ariaLabel: { classPropertyName: "ariaLabel", publicName: "aria-label", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "data-slot": "breadcrumb", "role": "navigation" }, properties: { "attr.aria-label": "ariaLabel()" } }, ngImport: i0 });
11
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmBreadcrumb, deps: [], target: i0.ɵɵFactoryTarget.Directive });
12
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.1.3", type: HlmBreadcrumb, isStandalone: true, selector: "[hlmBreadcrumb]", inputs: { ariaLabel: { classPropertyName: "ariaLabel", publicName: "aria-label", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "data-slot": "breadcrumb", "role": "navigation" }, properties: { "attr.aria-label": "ariaLabel()" } }, ngImport: i0 });
13
13
  }
14
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: HlmBreadcrumb, decorators: [{
14
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmBreadcrumb, decorators: [{
15
15
  type: Directive,
16
16
  args: [{
17
17
  selector: '[hlmBreadcrumb]',
@@ -28,15 +28,12 @@ class HlmBreadcrumbEllipsis {
28
28
  srOnlyText = input('More', /* @ts-ignore */
29
29
  ...(ngDevMode ? [{ debugName: "srOnlyText" }] : /* istanbul ignore next */ []));
30
30
  constructor() {
31
- classes(() => 'size-5 [&>ng-icon]:text-[length:--spacing(4)] flex items-center justify-center');
31
+ classes(() => "size-5 [&>ng-icon]:text-[length:--spacing(4)] flex items-center justify-center");
32
32
  }
33
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: HlmBreadcrumbEllipsis, deps: [], target: i0.ɵɵFactoryTarget.Component });
34
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.7", type: HlmBreadcrumbEllipsis, isStandalone: true, selector: "hlm-breadcrumb-ellipsis", inputs: { srOnlyText: { classPropertyName: "srOnlyText", publicName: "srOnlyText", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "data-slot": "breadcrumb-ellipsis", "role": "presentation" } }, providers: [provideIcons({ lucideEllipsis })], ngImport: i0, template: `
35
- <ng-icon name="lucideEllipsis" />
36
- <span class="sr-only">{{ srOnlyText() }}</span>
37
- `, isInline: true, dependencies: [{ kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
33
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmBreadcrumbEllipsis, deps: [], target: i0.ɵɵFactoryTarget.Component });
34
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.3", type: HlmBreadcrumbEllipsis, isStandalone: true, selector: "hlm-breadcrumb-ellipsis", inputs: { srOnlyText: { classPropertyName: "srOnlyText", publicName: "srOnlyText", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "data-slot": "breadcrumb-ellipsis", "role": "presentation" } }, providers: [provideIcons({ lucideEllipsis })], ngImport: i0, template: "\n <ng-icon name=\"lucideEllipsis\" />\n <span class=\"sr-only\">{{ srOnlyText() }}</span>\n ", isInline: true, dependencies: [{ kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
38
35
  }
39
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: HlmBreadcrumbEllipsis, decorators: [{
36
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmBreadcrumbEllipsis, decorators: [{
40
37
  type: Component,
41
38
  args: [{
42
39
  selector: 'hlm-breadcrumb-ellipsis',
@@ -47,21 +44,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImpor
47
44
  'data-slot': 'breadcrumb-ellipsis',
48
45
  role: 'presentation',
49
46
  },
50
- template: `
51
- <ng-icon name="lucideEllipsis" />
52
- <span class="sr-only">{{ srOnlyText() }}</span>
53
- `,
47
+ template: "\n <ng-icon name=\"lucideEllipsis\" />\n <span class=\"sr-only\">{{ srOnlyText() }}</span>\n ",
54
48
  }]
55
49
  }], ctorParameters: () => [], propDecorators: { srOnlyText: [{ type: i0.Input, args: [{ isSignal: true, alias: "srOnlyText", required: false }] }] } });
56
50
 
57
51
  class HlmBreadcrumbItem {
58
52
  constructor() {
59
- classes(() => 'gap-1.5 inline-flex items-center');
53
+ classes(() => "gap-1.5 inline-flex items-center");
60
54
  }
61
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: HlmBreadcrumbItem, deps: [], target: i0.ɵɵFactoryTarget.Directive });
62
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.7", type: HlmBreadcrumbItem, isStandalone: true, selector: "[hlmBreadcrumbItem]", host: { attributes: { "data-slot": "breadcrumb-item" } }, ngImport: i0 });
55
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmBreadcrumbItem, deps: [], target: i0.ɵɵFactoryTarget.Directive });
56
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.3", type: HlmBreadcrumbItem, isStandalone: true, selector: "[hlmBreadcrumbItem]", host: { attributes: { "data-slot": "breadcrumb-item" } }, ngImport: i0 });
63
57
  }
64
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: HlmBreadcrumbItem, decorators: [{
58
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmBreadcrumbItem, decorators: [{
65
59
  type: Directive,
66
60
  args: [{
67
61
  selector: '[hlmBreadcrumbItem]',
@@ -76,12 +70,12 @@ class HlmBreadcrumbLink {
76
70
  link = input(/* @ts-ignore */
77
71
  ...(ngDevMode ? [undefined, { debugName: "link" }] : /* istanbul ignore next */ []));
78
72
  constructor() {
79
- classes(() => 'hover:text-foreground transition-colors');
73
+ classes(() => "hover:text-foreground transition-colors");
80
74
  }
81
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: HlmBreadcrumbLink, deps: [], target: i0.ɵɵFactoryTarget.Directive });
82
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.0.7", type: HlmBreadcrumbLink, isStandalone: true, selector: "[hlmBreadcrumbLink]", inputs: { link: { classPropertyName: "link", publicName: "link", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "data-slot": "breadcrumb-link" } }, hostDirectives: [{ directive: i1.RouterLink, inputs: ["target", "target", "queryParams", "queryParams", "fragment", "fragment", "queryParamsHandling", "queryParamsHandling", "state", "state", "info", "info", "relativeTo", "relativeTo", "preserveFragment", "preserveFragment", "skipLocationChange", "skipLocationChange", "replaceUrl", "replaceUrl", "routerLink", "link"] }], ngImport: i0 });
75
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmBreadcrumbLink, deps: [], target: i0.ɵɵFactoryTarget.Directive });
76
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.1.3", type: HlmBreadcrumbLink, isStandalone: true, selector: "[hlmBreadcrumbLink]", inputs: { link: { classPropertyName: "link", publicName: "link", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "data-slot": "breadcrumb-link" } }, hostDirectives: [{ directive: i1.RouterLink, inputs: ["target", "target", "queryParams", "queryParams", "fragment", "fragment", "queryParamsHandling", "queryParamsHandling", "state", "state", "info", "info", "relativeTo", "relativeTo", "preserveFragment", "preserveFragment", "skipLocationChange", "skipLocationChange", "replaceUrl", "replaceUrl", "routerLink", "link"] }], ngImport: i0 });
83
77
  }
84
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: HlmBreadcrumbLink, decorators: [{
78
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmBreadcrumbLink, decorators: [{
85
79
  type: Directive,
86
80
  args: [{
87
81
  selector: '[hlmBreadcrumbLink]',
@@ -111,12 +105,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImpor
111
105
 
112
106
  class HlmBreadcrumbList {
113
107
  constructor() {
114
- classes(() => 'text-muted-foreground gap-1.5 text-sm sm:gap-2.5 flex flex-wrap items-center wrap-break-word');
108
+ classes(() => "text-muted-foreground gap-1.5 text-sm sm:gap-2.5 flex flex-wrap items-center wrap-break-word");
115
109
  }
116
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: HlmBreadcrumbList, deps: [], target: i0.ɵɵFactoryTarget.Directive });
117
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.7", type: HlmBreadcrumbList, isStandalone: true, selector: "[hlmBreadcrumbList]", host: { attributes: { "data-slot": "breadcrumb-list" } }, ngImport: i0 });
110
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmBreadcrumbList, deps: [], target: i0.ɵɵFactoryTarget.Directive });
111
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.3", type: HlmBreadcrumbList, isStandalone: true, selector: "[hlmBreadcrumbList]", host: { attributes: { "data-slot": "breadcrumb-list" } }, ngImport: i0 });
118
112
  }
119
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: HlmBreadcrumbList, decorators: [{
113
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmBreadcrumbList, decorators: [{
120
114
  type: Directive,
121
115
  args: [{
122
116
  selector: '[hlmBreadcrumbList]',
@@ -128,12 +122,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImpor
128
122
 
129
123
  class HlmBreadcrumbPage {
130
124
  constructor() {
131
- classes(() => 'text-foreground font-normal');
125
+ classes(() => "text-foreground font-normal");
132
126
  }
133
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: HlmBreadcrumbPage, deps: [], target: i0.ɵɵFactoryTarget.Directive });
134
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.7", type: HlmBreadcrumbPage, isStandalone: true, selector: "[hlmBreadcrumbPage]", host: { attributes: { "data-slot": "breadcrumb-page", "role": "link", "aria-disabled": "true", "aria-current": "page" } }, ngImport: i0 });
127
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmBreadcrumbPage, deps: [], target: i0.ɵɵFactoryTarget.Directive });
128
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.3", type: HlmBreadcrumbPage, isStandalone: true, selector: "[hlmBreadcrumbPage]", host: { attributes: { "data-slot": "breadcrumb-page", "role": "link", "aria-disabled": "true", "aria-current": "page" } }, ngImport: i0 });
135
129
  }
136
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: HlmBreadcrumbPage, decorators: [{
130
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmBreadcrumbPage, decorators: [{
137
131
  type: Directive,
138
132
  args: [{
139
133
  selector: '[hlmBreadcrumbPage]',
@@ -148,16 +142,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImpor
148
142
 
149
143
  class HlmBreadcrumbSeparator {
150
144
  constructor() {
151
- classes(() => '[&>ng-icon]:text-[length:--spacing(3.5)] [&>ng-icon]:flex');
145
+ classes(() => "[&>ng-icon]:text-[length:--spacing(3.5)] [&>ng-icon]:flex");
152
146
  }
153
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: HlmBreadcrumbSeparator, deps: [], target: i0.ɵɵFactoryTarget.Component });
154
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.7", type: HlmBreadcrumbSeparator, isStandalone: true, selector: "[hlmBreadcrumbSeparator]", host: { attributes: { "data-slot": "breadcrumb-separator", "role": "presentation", "aria-hidden": "true" } }, providers: [provideIcons({ lucideChevronRight })], ngImport: i0, template: `
147
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmBreadcrumbSeparator, deps: [], target: i0.ɵɵFactoryTarget.Component });
148
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.1.3", type: HlmBreadcrumbSeparator, isStandalone: true, selector: "[hlmBreadcrumbSeparator]", host: { attributes: { "data-slot": "breadcrumb-separator", "role": "presentation", "aria-hidden": "true" } }, providers: [provideIcons({ lucideChevronRight })], ngImport: i0, template: `
155
149
  <ng-content>
156
150
  <ng-icon name="lucideChevronRight" />
157
151
  </ng-content>
158
152
  `, isInline: true, dependencies: [{ kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
159
153
  }
160
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: HlmBreadcrumbSeparator, decorators: [{
154
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmBreadcrumbSeparator, decorators: [{
161
155
  type: Component,
162
156
  args: [{
163
157
  // eslint-disable-next-line @angular-eslint/component-selector
@@ -191,8 +185,8 @@ const HlmBreadcrumbImports = [
191
185
  HlmBreadcrumbList,
192
186
  ];
193
187
  class HlmBreadcrumbModule {
194
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: HlmBreadcrumbModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
195
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.0.7", ngImport: i0, type: HlmBreadcrumbModule, imports: [HlmBreadcrumb,
188
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmBreadcrumbModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
189
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.1.3", ngImport: i0, type: HlmBreadcrumbModule, imports: [HlmBreadcrumb,
196
190
  HlmBreadcrumbEllipsis,
197
191
  HlmBreadcrumbSeparator,
198
192
  HlmBreadcrumbItem,
@@ -205,10 +199,10 @@ class HlmBreadcrumbModule {
205
199
  HlmBreadcrumbLink,
206
200
  HlmBreadcrumbPage,
207
201
  HlmBreadcrumbList] });
208
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: HlmBreadcrumbModule, imports: [HlmBreadcrumbEllipsis,
202
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmBreadcrumbModule, imports: [HlmBreadcrumbEllipsis,
209
203
  HlmBreadcrumbSeparator] });
210
204
  }
211
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: HlmBreadcrumbModule, decorators: [{
205
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmBreadcrumbModule, decorators: [{
212
206
  type: NgModule,
213
207
  args: [{
214
208
  imports: [...HlmBreadcrumbImports],
@@ -221,4 +215,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImpor
221
215
  */
222
216
 
223
217
  export { HlmBreadcrumb, HlmBreadcrumbEllipsis, HlmBreadcrumbImports, HlmBreadcrumbItem, HlmBreadcrumbLink, HlmBreadcrumbList, HlmBreadcrumbModule, HlmBreadcrumbPage, HlmBreadcrumbSeparator };
224
- //# sourceMappingURL=breadcrumb.mjs.map
218
+