@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.
- package/README.md +130 -13
- package/accordion/README.md +376 -34
- package/accordion/fesm2022/accordion.mjs +20 -20
- package/alert/README.md +343 -34
- package/alert/fesm2022/alert.mjs +18 -18
- package/alert-dialog/README.md +471 -5
- package/alert-dialog/fesm2022/alert-dialog.mjs +48 -48
- package/alert-dialog/types/alert-dialog.d.ts +1 -1
- package/aspect-ratio/README.md +272 -5
- package/aspect-ratio/fesm2022/aspect-ratio.mjs +9 -9
- package/autocomplete/README.md +473 -34
- package/autocomplete/fesm2022/autocomplete.mjs +54 -54
- package/autocomplete/types/autocomplete.d.ts +1 -1
- package/avatar/README.md +357 -5
- package/avatar/fesm2022/avatar.mjs +32 -32
- package/badge/README.md +289 -34
- package/badge/fesm2022/badge.mjs +4 -4
- package/basic-alert/README.md +324 -34
- package/basic-alert/fesm2022/basic-alert.mjs +4 -4
- package/basic-alert/types/basic-alert.d.ts +1 -1
- package/breadcrumb/README.md +406 -5
- package/breadcrumb/fesm2022/breadcrumb.mjs +34 -34
- package/button/README.md +453 -34
- package/button/fesm2022/button.mjs +96 -118
- package/button/types/button.d.ts +7 -10
- package/button-group/README.md +318 -5
- package/button-group/fesm2022/button-group.mjs +20 -20
- package/calendar/README.md +328 -34
- package/calendar/fesm2022/calendar.mjs +154 -154
- package/card/README.md +331 -5
- package/card/fesm2022/card.mjs +33 -33
- package/carousel/README.md +333 -5
- package/carousel/fesm2022/carousel.mjs +47 -44
- package/carousel/types/carousel.d.ts +1 -1
- package/checkbox/README.md +291 -34
- package/checkbox/fesm2022/checkbox.mjs +22 -20
- package/checkbox/types/checkbox.d.ts +5 -4
- package/collapsible/README.md +332 -5
- package/collapsible/fesm2022/collapsible.mjs +15 -15
- package/combobox/README.md +507 -5
- package/combobox/fesm2022/combobox.mjs +95 -92
- package/combobox/types/combobox.d.ts +1 -1
- package/command/README.md +435 -5
- package/command/fesm2022/command.mjs +56 -56
- package/confirmation-dialog/README.md +272 -34
- package/confirmation-dialog/fesm2022/confirmation-dialog.mjs +13 -12
- package/confirmation-dialog/types/confirmation-dialog.d.ts +9 -5
- package/context-menu/README.md +366 -5
- package/context-menu/fesm2022/context-menu.mjs +9 -9
- package/date-picker/README.md +436 -34
- package/date-picker/fesm2022/date-picker.mjs +79 -68
- package/date-picker/types/date-picker.d.ts +8 -4
- package/dialog/README.md +419 -34
- package/dialog/fesm2022/dialog.mjs +48 -48
- package/drawer/README.md +395 -5
- package/drawer/fesm2022/drawer.mjs +45 -45
- package/dropdown-menu/README.md +417 -5
- package/dropdown-menu/fesm2022/dropdown-menu.mjs +85 -73
- package/dropdown-menu/types/dropdown-menu.d.ts +4 -0
- package/empty/README.md +329 -5
- package/empty/fesm2022/empty.mjs +31 -31
- package/field/README.md +385 -5
- package/field/fesm2022/field.mjs +59 -59
- package/field/types/field.d.ts +1 -1
- package/form-checkbox/README.md +283 -34
- package/form-checkbox/fesm2022/form-checkbox.mjs +37 -19
- package/form-checkbox/types/form-checkbox.d.ts +7 -1
- package/form-date-picker/README.md +293 -34
- package/form-date-picker/fesm2022/form-date-picker.mjs +59 -24
- package/form-date-picker/types/form-date-picker.d.ts +7 -1
- package/form-field/README.md +327 -34
- package/form-field/fesm2022/form-field.mjs +30 -16
- package/form-field/types/form-field.d.ts +28 -20
- package/form-field-simple/README.md +311 -34
- package/form-field-simple/fesm2022/form-field-simple.mjs +4 -4
- package/form-searchable-multiselect/README.md +332 -34
- package/form-searchable-multiselect/fesm2022/form-searchable-multiselect.mjs +41 -21
- package/form-searchable-multiselect/types/form-searchable-multiselect.d.ts +8 -2
- package/form-select/README.md +321 -34
- package/form-select/fesm2022/form-select.mjs +62 -29
- package/form-select/types/form-select.d.ts +7 -1
- package/form-text-input/README.md +342 -34
- package/form-text-input/fesm2022/form-text-input.mjs +43 -55
- package/form-text-input/types/form-text-input.d.ts +9 -12
- package/form-textarea/README.md +318 -34
- package/form-textarea/fesm2022/form-textarea.mjs +42 -23
- package/form-textarea/types/form-textarea.d.ts +8 -1
- package/hover-card/README.md +256 -5
- package/hover-card/fesm2022/hover-card.mjs +19 -19
- package/icon/README.md +210 -34
- package/icon/fesm2022/icon.mjs +8 -8
- package/input/README.md +240 -34
- package/input/fesm2022/input.mjs +17 -12
- package/input/types/input.d.ts +2 -1
- package/input-group/README.md +335 -5
- package/input-group/fesm2022/input-group.mjs +37 -37
- package/input-group/types/input-group.d.ts +3 -3
- package/input-otp/README.md +375 -5
- package/input-otp/fesm2022/input-otp.mjs +27 -27
- package/item/README.md +385 -5
- package/item/fesm2022/item.mjs +54 -54
- package/kbd/README.md +291 -5
- package/kbd/fesm2022/kbd.mjs +13 -13
- package/label/README.md +243 -34
- package/label/fesm2022/label.mjs +9 -9
- package/label/types/label.d.ts +1 -1
- package/layout-simple/README.md +174 -44
- package/layout-simple/fesm2022/layout-simple.mjs +917 -398
- package/layout-simple/types/layout-simple.d.ts +180 -129
- package/menu/README.md +418 -0
- package/menu/fesm2022/menu.mjs +461 -0
- package/menu/package.json +24 -0
- package/menu/types/menu.d.ts +137 -0
- package/menubar/README.md +343 -5
- package/menubar/fesm2022/menubar.mjs +13 -13
- package/native-select/README.md +323 -5
- package/native-select/fesm2022/native-select.mjs +19 -19
- package/navigation-menu/README.md +369 -5
- package/navigation-menu/fesm2022/navigation-menu.mjs +37 -37
- package/package.json +183 -154
- package/pagination/README.md +388 -5
- package/pagination/fesm2022/pagination.mjs +63 -63
- package/popover/README.md +302 -34
- package/popover/fesm2022/popover.mjs +30 -30
- package/progress/README.md +311 -5
- package/progress/fesm2022/progress.mjs +13 -13
- package/radio-group/README.md +335 -34
- package/radio-group/fesm2022/radio-group.mjs +26 -19
- package/resizable/README.md +269 -5
- package/resizable/fesm2022/resizable.mjs +19 -19
- package/scroll-area/README.md +233 -5
- package/scroll-area/fesm2022/scroll-area.mjs +9 -9
- package/searchable-multiselect/README.md +294 -34
- package/searchable-multiselect/fesm2022/searchable-multiselect.mjs +63 -16
- package/searchable-multiselect/types/searchable-multiselect.d.ts +8 -2
- package/select/README.md +408 -34
- package/select/fesm2022/select.mjs +80 -72
- package/select/types/select.d.ts +3 -1
- package/separator/README.md +193 -34
- package/separator/fesm2022/separator.mjs +9 -9
- package/separator/types/separator.d.ts +1 -1
- package/sheet/README.md +282 -34
- package/sheet/fesm2022/sheet.mjs +30 -30
- package/sidebar/README.md +457 -5
- package/sidebar/fesm2022/sidebar.mjs +136 -134
- package/sidebar/types/sidebar.d.ts +3 -3
- package/skeleton/README.md +217 -5
- package/skeleton/fesm2022/skeleton.mjs +9 -9
- package/slider/README.md +273 -5
- package/slider/fesm2022/slider.mjs +29 -25
- package/sonner/README.md +317 -34
- package/sonner/fesm2022/sonner.mjs +9 -9
- package/spinner/README.md +255 -34
- package/spinner/fesm2022/spinner.mjs +8 -8
- package/switch/README.md +281 -34
- package/switch/fesm2022/switch.mjs +12 -14
- package/table/README.md +423 -5
- package/table/fesm2022/table.mjs +41 -41
- package/tabs/README.md +382 -34
- package/tabs/fesm2022/tabs.mjs +48 -38
- package/textarea/README.md +282 -5
- package/textarea/fesm2022/textarea.mjs +9 -9
- package/toggle/README.md +270 -5
- package/toggle/fesm2022/toggle.mjs +14 -14
- package/toggle-group/README.md +340 -5
- package/toggle-group/fesm2022/toggle-group.mjs +13 -13
- package/toggle-group/types/toggle-group.d.ts +13 -7
- package/tooltip/README.md +240 -34
- package/tooltip/fesm2022/tooltip.mjs +14 -14
- package/typography/README.md +271 -5
- package/typography/fesm2022/typography.mjs +53 -53
- package/typography/types/typography.d.ts +12 -12
- package/utils/README.md +274 -34
- package/utils/fesm2022/utils.mjs +68 -44
- package/accordion/fesm2022/accordion.mjs.map +0 -1
- package/alert/fesm2022/alert.mjs.map +0 -1
- package/alert-dialog/fesm2022/alert-dialog.mjs.map +0 -1
- package/aspect-ratio/fesm2022/aspect-ratio.mjs.map +0 -1
- package/autocomplete/fesm2022/autocomplete.mjs.map +0 -1
- package/avatar/fesm2022/avatar.mjs.map +0 -1
- package/badge/fesm2022/badge.mjs.map +0 -1
- package/basic-alert/fesm2022/basic-alert.mjs.map +0 -1
- package/breadcrumb/fesm2022/breadcrumb.mjs.map +0 -1
- package/button/fesm2022/button.mjs.map +0 -1
- package/button-group/fesm2022/button-group.mjs.map +0 -1
- package/calendar/fesm2022/calendar.mjs.map +0 -1
- package/card/fesm2022/card.mjs.map +0 -1
- package/carousel/fesm2022/carousel.mjs.map +0 -1
- package/checkbox/fesm2022/checkbox.mjs.map +0 -1
- package/collapsible/fesm2022/collapsible.mjs.map +0 -1
- package/combobox/fesm2022/combobox.mjs.map +0 -1
- package/command/fesm2022/command.mjs.map +0 -1
- package/confirmation-dialog/fesm2022/confirmation-dialog.mjs.map +0 -1
- package/context-menu/fesm2022/context-menu.mjs.map +0 -1
- package/date-picker/fesm2022/date-picker.mjs.map +0 -1
- package/dialog/fesm2022/dialog.mjs.map +0 -1
- package/drawer/fesm2022/drawer.mjs.map +0 -1
- package/dropdown-menu/fesm2022/dropdown-menu.mjs.map +0 -1
- package/empty/fesm2022/empty.mjs.map +0 -1
- package/field/fesm2022/field.mjs.map +0 -1
- package/form-checkbox/fesm2022/form-checkbox.mjs.map +0 -1
- package/form-date-picker/fesm2022/form-date-picker.mjs.map +0 -1
- package/form-field/fesm2022/form-field.mjs.map +0 -1
- package/form-field-simple/fesm2022/form-field-simple.mjs.map +0 -1
- package/form-searchable-multiselect/fesm2022/form-searchable-multiselect.mjs.map +0 -1
- package/form-select/fesm2022/form-select.mjs.map +0 -1
- package/form-text-input/fesm2022/form-text-input.mjs.map +0 -1
- package/form-textarea/fesm2022/form-textarea.mjs.map +0 -1
- package/hover-card/fesm2022/hover-card.mjs.map +0 -1
- package/icon/fesm2022/icon.mjs.map +0 -1
- package/input/fesm2022/input.mjs.map +0 -1
- package/input-group/fesm2022/input-group.mjs.map +0 -1
- package/input-otp/fesm2022/input-otp.mjs.map +0 -1
- package/item/fesm2022/item.mjs.map +0 -1
- package/kbd/fesm2022/kbd.mjs.map +0 -1
- package/label/fesm2022/label.mjs.map +0 -1
- package/layout-simple/fesm2022/layout-simple.mjs.map +0 -1
- package/menubar/fesm2022/menubar.mjs.map +0 -1
- package/native-select/fesm2022/native-select.mjs.map +0 -1
- package/navigation-menu/fesm2022/navigation-menu.mjs.map +0 -1
- package/pagination/fesm2022/pagination.mjs.map +0 -1
- package/popover/fesm2022/popover.mjs.map +0 -1
- package/progress/fesm2022/progress.mjs.map +0 -1
- package/radio-group/fesm2022/radio-group.mjs.map +0 -1
- package/resizable/fesm2022/resizable.mjs.map +0 -1
- package/scroll-area/fesm2022/scroll-area.mjs.map +0 -1
- package/searchable-multiselect/fesm2022/searchable-multiselect.mjs.map +0 -1
- package/select/fesm2022/select.mjs.map +0 -1
- package/separator/fesm2022/separator.mjs.map +0 -1
- package/sheet/fesm2022/sheet.mjs.map +0 -1
- package/sidebar/fesm2022/sidebar.mjs.map +0 -1
- package/skeleton/fesm2022/skeleton.mjs.map +0 -1
- package/slider/fesm2022/slider.mjs.map +0 -1
- package/sonner/fesm2022/sonner.mjs.map +0 -1
- package/spinner/fesm2022/spinner.mjs.map +0 -1
- package/switch/fesm2022/switch.mjs.map +0 -1
- package/table/fesm2022/table.mjs.map +0 -1
- package/tabs/fesm2022/tabs.mjs.map +0 -1
- package/textarea/fesm2022/textarea.mjs.map +0 -1
- package/toggle/fesm2022/toggle.mjs.map +0 -1
- package/toggle-group/fesm2022/toggle-group.mjs.map +0 -1
- package/tooltip/fesm2022/tooltip.mjs.map +0 -1
- package/typography/fesm2022/typography.mjs.map +0 -1
- package/utils/fesm2022/utils.mjs.map +0 -1
package/breadcrumb/README.md
CHANGED
|
@@ -1,11 +1,412 @@
|
|
|
1
|
-
# Breadcrumb
|
|
1
|
+
# Breadcrumb (`@egose/shadcn-theme-ng/breadcrumb`)
|
|
2
2
|
|
|
3
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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.
|
|
12
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.
|
|
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.
|
|
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,15 @@ 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(() => 'tw:size-5 tw:[&>ng-icon]:text-[length:--spacing(4)] tw:flex tw:items-center tw:justify-center');
|
|
32
32
|
}
|
|
33
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.
|
|
34
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.
|
|
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: `
|
|
35
35
|
<ng-icon name="lucideEllipsis" />
|
|
36
|
-
<span class="sr-only">{{ srOnlyText() }}</span>
|
|
36
|
+
<span class="tw:sr-only">{{ srOnlyText() }}</span>
|
|
37
37
|
`, isInline: true, dependencies: [{ kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
38
38
|
}
|
|
39
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.
|
|
39
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmBreadcrumbEllipsis, decorators: [{
|
|
40
40
|
type: Component,
|
|
41
41
|
args: [{
|
|
42
42
|
selector: 'hlm-breadcrumb-ellipsis',
|
|
@@ -49,19 +49,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImpor
|
|
|
49
49
|
},
|
|
50
50
|
template: `
|
|
51
51
|
<ng-icon name="lucideEllipsis" />
|
|
52
|
-
<span class="sr-only">{{ srOnlyText() }}</span>
|
|
52
|
+
<span class="tw:sr-only">{{ srOnlyText() }}</span>
|
|
53
53
|
`,
|
|
54
54
|
}]
|
|
55
55
|
}], ctorParameters: () => [], propDecorators: { srOnlyText: [{ type: i0.Input, args: [{ isSignal: true, alias: "srOnlyText", required: false }] }] } });
|
|
56
56
|
|
|
57
57
|
class HlmBreadcrumbItem {
|
|
58
58
|
constructor() {
|
|
59
|
-
classes(() => 'gap-1.5 inline-flex items-center');
|
|
59
|
+
classes(() => 'tw:gap-1.5 tw:inline-flex tw:items-center');
|
|
60
60
|
}
|
|
61
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.
|
|
62
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.
|
|
61
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmBreadcrumbItem, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
62
|
+
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
63
|
}
|
|
64
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.
|
|
64
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmBreadcrumbItem, decorators: [{
|
|
65
65
|
type: Directive,
|
|
66
66
|
args: [{
|
|
67
67
|
selector: '[hlmBreadcrumbItem]',
|
|
@@ -76,12 +76,12 @@ class HlmBreadcrumbLink {
|
|
|
76
76
|
link = input(/* @ts-ignore */
|
|
77
77
|
...(ngDevMode ? [undefined, { debugName: "link" }] : /* istanbul ignore next */ []));
|
|
78
78
|
constructor() {
|
|
79
|
-
classes(() => 'hover:text-foreground transition-colors');
|
|
79
|
+
classes(() => 'tw:hover:text-foreground tw:transition-colors');
|
|
80
80
|
}
|
|
81
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.
|
|
82
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.
|
|
81
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmBreadcrumbLink, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
82
|
+
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
83
|
}
|
|
84
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.
|
|
84
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmBreadcrumbLink, decorators: [{
|
|
85
85
|
type: Directive,
|
|
86
86
|
args: [{
|
|
87
87
|
selector: '[hlmBreadcrumbLink]',
|
|
@@ -111,12 +111,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImpor
|
|
|
111
111
|
|
|
112
112
|
class HlmBreadcrumbList {
|
|
113
113
|
constructor() {
|
|
114
|
-
classes(() => 'text-muted-foreground gap-1.5 text-sm sm:gap-2.5 flex flex-wrap items-center wrap-break-word');
|
|
114
|
+
classes(() => 'tw:text-muted-foreground tw:gap-1.5 tw:text-sm tw:sm:gap-2.5 tw:flex tw:flex-wrap tw:items-center tw:wrap-break-word');
|
|
115
115
|
}
|
|
116
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.
|
|
117
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.
|
|
116
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmBreadcrumbList, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
117
|
+
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
118
|
}
|
|
119
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.
|
|
119
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmBreadcrumbList, decorators: [{
|
|
120
120
|
type: Directive,
|
|
121
121
|
args: [{
|
|
122
122
|
selector: '[hlmBreadcrumbList]',
|
|
@@ -128,12 +128,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImpor
|
|
|
128
128
|
|
|
129
129
|
class HlmBreadcrumbPage {
|
|
130
130
|
constructor() {
|
|
131
|
-
classes(() => 'text-foreground font-normal');
|
|
131
|
+
classes(() => 'tw:text-foreground tw:font-normal');
|
|
132
132
|
}
|
|
133
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.
|
|
134
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.
|
|
133
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmBreadcrumbPage, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
134
|
+
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
135
|
}
|
|
136
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.
|
|
136
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmBreadcrumbPage, decorators: [{
|
|
137
137
|
type: Directive,
|
|
138
138
|
args: [{
|
|
139
139
|
selector: '[hlmBreadcrumbPage]',
|
|
@@ -148,16 +148,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImpor
|
|
|
148
148
|
|
|
149
149
|
class HlmBreadcrumbSeparator {
|
|
150
150
|
constructor() {
|
|
151
|
-
classes(() => '[&>ng-icon]:text-[length:--spacing(3.5)] [&>ng-icon]:flex');
|
|
151
|
+
classes(() => 'tw:[&>ng-icon]:text-[length:--spacing(3.5)] tw:[&>ng-icon]:flex');
|
|
152
152
|
}
|
|
153
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.
|
|
154
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.
|
|
153
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmBreadcrumbSeparator, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
154
|
+
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
155
|
<ng-content>
|
|
156
156
|
<ng-icon name="lucideChevronRight" />
|
|
157
157
|
</ng-content>
|
|
158
158
|
`, isInline: true, dependencies: [{ kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
159
159
|
}
|
|
160
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.
|
|
160
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmBreadcrumbSeparator, decorators: [{
|
|
161
161
|
type: Component,
|
|
162
162
|
args: [{
|
|
163
163
|
// eslint-disable-next-line @angular-eslint/component-selector
|
|
@@ -191,8 +191,8 @@ const HlmBreadcrumbImports = [
|
|
|
191
191
|
HlmBreadcrumbList,
|
|
192
192
|
];
|
|
193
193
|
class HlmBreadcrumbModule {
|
|
194
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.
|
|
195
|
-
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.
|
|
194
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmBreadcrumbModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
195
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.1.3", ngImport: i0, type: HlmBreadcrumbModule, imports: [HlmBreadcrumb,
|
|
196
196
|
HlmBreadcrumbEllipsis,
|
|
197
197
|
HlmBreadcrumbSeparator,
|
|
198
198
|
HlmBreadcrumbItem,
|
|
@@ -205,10 +205,10 @@ class HlmBreadcrumbModule {
|
|
|
205
205
|
HlmBreadcrumbLink,
|
|
206
206
|
HlmBreadcrumbPage,
|
|
207
207
|
HlmBreadcrumbList] });
|
|
208
|
-
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.
|
|
208
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmBreadcrumbModule, imports: [HlmBreadcrumbEllipsis,
|
|
209
209
|
HlmBreadcrumbSeparator] });
|
|
210
210
|
}
|
|
211
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.
|
|
211
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmBreadcrumbModule, decorators: [{
|
|
212
212
|
type: NgModule,
|
|
213
213
|
args: [{
|
|
214
214
|
imports: [...HlmBreadcrumbImports],
|
|
@@ -221,4 +221,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImpor
|
|
|
221
221
|
*/
|
|
222
222
|
|
|
223
223
|
export { HlmBreadcrumb, HlmBreadcrumbEllipsis, HlmBreadcrumbImports, HlmBreadcrumbItem, HlmBreadcrumbLink, HlmBreadcrumbList, HlmBreadcrumbModule, HlmBreadcrumbPage, HlmBreadcrumbSeparator };
|
|
224
|
-
|
|
224
|
+
|