valtech-components 2.0.530 → 2.0.531

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 (29) hide show
  1. package/esm2022/lib/components/molecules/docs-api-table/docs-api-table.component.mjs +218 -0
  2. package/esm2022/lib/components/molecules/docs-api-table/types.mjs +11 -0
  3. package/esm2022/lib/components/molecules/docs-code-example/docs-code-example.component.mjs +217 -0
  4. package/esm2022/lib/components/molecules/docs-code-example/types.mjs +2 -0
  5. package/esm2022/lib/components/molecules/docs-nav-links/docs-nav-links.component.mjs +133 -0
  6. package/esm2022/lib/components/molecules/docs-nav-links/types.mjs +2 -0
  7. package/esm2022/lib/components/organisms/docs-sidebar/docs-sidebar.component.mjs +276 -0
  8. package/esm2022/lib/components/organisms/docs-sidebar/types.mjs +2 -0
  9. package/esm2022/lib/components/organisms/docs-toc/docs-toc.component.mjs +255 -0
  10. package/esm2022/lib/components/organisms/docs-toc/types.mjs +2 -0
  11. package/esm2022/lib/components/templates/docs-layout/docs-layout.component.mjs +203 -0
  12. package/esm2022/lib/components/templates/docs-layout/types.mjs +2 -0
  13. package/esm2022/public-api.mjs +15 -1
  14. package/fesm2022/valtech-components.mjs +1279 -2
  15. package/fesm2022/valtech-components.mjs.map +1 -1
  16. package/lib/components/molecules/docs-api-table/docs-api-table.component.d.ts +41 -0
  17. package/lib/components/molecules/docs-api-table/types.d.ts +62 -0
  18. package/lib/components/molecules/docs-code-example/docs-code-example.component.d.ts +35 -0
  19. package/lib/components/molecules/docs-code-example/types.d.ts +63 -0
  20. package/lib/components/molecules/docs-nav-links/docs-nav-links.component.d.ts +29 -0
  21. package/lib/components/molecules/docs-nav-links/types.d.ts +31 -0
  22. package/lib/components/organisms/docs-sidebar/docs-sidebar.component.d.ts +51 -0
  23. package/lib/components/organisms/docs-sidebar/types.d.ts +93 -0
  24. package/lib/components/organisms/docs-toc/docs-toc.component.d.ts +58 -0
  25. package/lib/components/organisms/docs-toc/types.d.ts +62 -0
  26. package/lib/components/templates/docs-layout/docs-layout.component.d.ts +41 -0
  27. package/lib/components/templates/docs-layout/types.d.ts +39 -0
  28. package/package.json +1 -1
  29. package/public-api.d.ts +12 -0
@@ -0,0 +1,133 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { Component, Input, Output, EventEmitter } from '@angular/core';
3
+ import { IonIcon } from '@ionic/angular/standalone';
4
+ import { addIcons } from 'ionicons';
5
+ import { arrowBackOutline, arrowForwardOutline } from 'ionicons/icons';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "@angular/router";
8
+ addIcons({ arrowBackOutline, arrowForwardOutline });
9
+ /**
10
+ * val-docs-nav-links
11
+ *
12
+ * Navigation links for previous/next page navigation in documentation.
13
+ *
14
+ * @example
15
+ * ```html
16
+ * <val-docs-nav-links
17
+ * [props]="{
18
+ * previous: { label: 'Previous', title: 'Getting Started', route: ['/docs', 'getting-started'] },
19
+ * next: { label: 'Next', title: 'Components', route: ['/docs', 'components'] }
20
+ * }"
21
+ * ></val-docs-nav-links>
22
+ * ```
23
+ */
24
+ export class DocsNavLinksComponent {
25
+ constructor(router) {
26
+ this.router = router;
27
+ this.props = {};
28
+ this.navigate = new EventEmitter();
29
+ }
30
+ getHref(route) {
31
+ return '/' + route.join('/');
32
+ }
33
+ onNavigate(event, route) {
34
+ event.preventDefault();
35
+ this.navigate.emit(route);
36
+ this.router.navigate(route);
37
+ }
38
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DocsNavLinksComponent, deps: [{ token: i1.Router }], target: i0.ɵɵFactoryTarget.Component }); }
39
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: DocsNavLinksComponent, isStandalone: true, selector: "val-docs-nav-links", inputs: { props: "props" }, outputs: { navigate: "navigate" }, ngImport: i0, template: `
40
+ <nav class="docs-nav-links" [class]="props.cssClass">
41
+ <!-- Previous -->
42
+ <div
43
+ class="docs-nav-links__item docs-nav-links__item--prev"
44
+ [class.docs-nav-links__item--empty]="!props.previous"
45
+ >
46
+ @if (props.previous) {
47
+ <a
48
+ class="docs-nav-links__link"
49
+ [href]="getHref(props.previous.route)"
50
+ (click)="onNavigate($event, props.previous.route)"
51
+ >
52
+ <ion-icon name="arrow-back-outline" class="docs-nav-links__icon"></ion-icon>
53
+ <div class="docs-nav-links__text">
54
+ <span class="docs-nav-links__label">{{ props.previous.label || 'Previous' }}</span>
55
+ <span class="docs-nav-links__title">{{ props.previous.title }}</span>
56
+ </div>
57
+ </a>
58
+ }
59
+ </div>
60
+
61
+ <!-- Next -->
62
+ <div
63
+ class="docs-nav-links__item docs-nav-links__item--next"
64
+ [class.docs-nav-links__item--empty]="!props.next"
65
+ >
66
+ @if (props.next) {
67
+ <a
68
+ class="docs-nav-links__link"
69
+ [href]="getHref(props.next.route)"
70
+ (click)="onNavigate($event, props.next.route)"
71
+ >
72
+ <div class="docs-nav-links__text">
73
+ <span class="docs-nav-links__label">{{ props.next.label || 'Next' }}</span>
74
+ <span class="docs-nav-links__title">{{ props.next.title }}</span>
75
+ </div>
76
+ <ion-icon name="arrow-forward-outline" class="docs-nav-links__icon"></ion-icon>
77
+ </a>
78
+ }
79
+ </div>
80
+ </nav>
81
+ `, isInline: true, styles: [".docs-nav-links{display:flex;gap:1rem;margin-top:3rem;padding-top:2rem;border-top:1px solid var(--ion-border-color, #e0e0e0);&__item{flex:1;&--empty{visibility:hidden}&--next{text-align:right;.docs-nav-links__link{justify-content:flex-end}.docs-nav-links__text{align-items:flex-end}}}&__link{display:flex;align-items:center;gap:.75rem;padding:1rem;border-radius:8px;text-decoration:none;color:inherit;transition:all .2s ease;border:1px solid var(--ion-border-color, #e0e0e0);&:hover{background:var(--ion-color-light, #f4f5f8);border-color:var(--ion-color-primary, #3880ff);.docs-nav-links__title{color:var(--ion-color-primary, #3880ff)}}}&__icon{font-size:1.25rem;color:var(--ion-color-medium, #666)}&__text{display:flex;flex-direction:column;gap:.25rem}&__label{font-size:.75rem;font-weight:500;text-transform:uppercase;letter-spacing:.5px;color:var(--ion-color-medium, #666)}&__title{font-size:1rem;font-weight:600;color:var(--ion-text-color, #1a1a1a);transition:color .2s ease}}// Mobile responsive @media (max-width: 600px){.docs-nav-links{flex-direction:column;&__item--next{text-align:left;.docs-nav-links__link{justify-content:flex-start;flex-direction:row-reverse}.docs-nav-links__text{align-items:flex-start}}}}// Dark mode :host-context(.dark),:host-context([color-scheme=\"dark\"]){.docs-nav-links{&__link{border-color:#3a3a3a;&:hover{background:#ffffff0d}}&__title{color:#f4f5f8}}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }] }); }
82
+ }
83
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DocsNavLinksComponent, decorators: [{
84
+ type: Component,
85
+ args: [{ selector: 'val-docs-nav-links', standalone: true, imports: [CommonModule, IonIcon], template: `
86
+ <nav class="docs-nav-links" [class]="props.cssClass">
87
+ <!-- Previous -->
88
+ <div
89
+ class="docs-nav-links__item docs-nav-links__item--prev"
90
+ [class.docs-nav-links__item--empty]="!props.previous"
91
+ >
92
+ @if (props.previous) {
93
+ <a
94
+ class="docs-nav-links__link"
95
+ [href]="getHref(props.previous.route)"
96
+ (click)="onNavigate($event, props.previous.route)"
97
+ >
98
+ <ion-icon name="arrow-back-outline" class="docs-nav-links__icon"></ion-icon>
99
+ <div class="docs-nav-links__text">
100
+ <span class="docs-nav-links__label">{{ props.previous.label || 'Previous' }}</span>
101
+ <span class="docs-nav-links__title">{{ props.previous.title }}</span>
102
+ </div>
103
+ </a>
104
+ }
105
+ </div>
106
+
107
+ <!-- Next -->
108
+ <div
109
+ class="docs-nav-links__item docs-nav-links__item--next"
110
+ [class.docs-nav-links__item--empty]="!props.next"
111
+ >
112
+ @if (props.next) {
113
+ <a
114
+ class="docs-nav-links__link"
115
+ [href]="getHref(props.next.route)"
116
+ (click)="onNavigate($event, props.next.route)"
117
+ >
118
+ <div class="docs-nav-links__text">
119
+ <span class="docs-nav-links__label">{{ props.next.label || 'Next' }}</span>
120
+ <span class="docs-nav-links__title">{{ props.next.title }}</span>
121
+ </div>
122
+ <ion-icon name="arrow-forward-outline" class="docs-nav-links__icon"></ion-icon>
123
+ </a>
124
+ }
125
+ </div>
126
+ </nav>
127
+ `, styles: [".docs-nav-links{display:flex;gap:1rem;margin-top:3rem;padding-top:2rem;border-top:1px solid var(--ion-border-color, #e0e0e0);&__item{flex:1;&--empty{visibility:hidden}&--next{text-align:right;.docs-nav-links__link{justify-content:flex-end}.docs-nav-links__text{align-items:flex-end}}}&__link{display:flex;align-items:center;gap:.75rem;padding:1rem;border-radius:8px;text-decoration:none;color:inherit;transition:all .2s ease;border:1px solid var(--ion-border-color, #e0e0e0);&:hover{background:var(--ion-color-light, #f4f5f8);border-color:var(--ion-color-primary, #3880ff);.docs-nav-links__title{color:var(--ion-color-primary, #3880ff)}}}&__icon{font-size:1.25rem;color:var(--ion-color-medium, #666)}&__text{display:flex;flex-direction:column;gap:.25rem}&__label{font-size:.75rem;font-weight:500;text-transform:uppercase;letter-spacing:.5px;color:var(--ion-color-medium, #666)}&__title{font-size:1rem;font-weight:600;color:var(--ion-text-color, #1a1a1a);transition:color .2s ease}}// Mobile responsive @media (max-width: 600px){.docs-nav-links{flex-direction:column;&__item--next{text-align:left;.docs-nav-links__link{justify-content:flex-start;flex-direction:row-reverse}.docs-nav-links__text{align-items:flex-start}}}}// Dark mode :host-context(.dark),:host-context([color-scheme=\"dark\"]){.docs-nav-links{&__link{border-color:#3a3a3a;&:hover{background:#ffffff0d}}&__title{color:#f4f5f8}}}\n"] }]
128
+ }], ctorParameters: () => [{ type: i1.Router }], propDecorators: { props: [{
129
+ type: Input
130
+ }], navigate: [{
131
+ type: Output
132
+ }] } });
133
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jcy1uYXYtbGlua3MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL21vbGVjdWxlcy9kb2NzLW5hdi1saW5rcy9kb2NzLW5hdi1saW5rcy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFdkUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDcEMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7OztBQUd2RSxRQUFRLENBQUMsRUFBRSxnQkFBZ0IsRUFBRSxtQkFBbUIsRUFBRSxDQUFDLENBQUM7QUFFcEQ7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFtS0gsTUFBTSxPQUFPLHFCQUFxQjtJQUtoQyxZQUFvQixNQUFjO1FBQWQsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUp6QixVQUFLLEdBQXlCLEVBQUUsQ0FBQztRQUVoQyxhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQVksQ0FBQztJQUViLENBQUM7SUFFdEMsT0FBTyxDQUFDLEtBQWU7UUFDckIsT0FBTyxHQUFHLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQsVUFBVSxDQUFDLEtBQVksRUFBRSxLQUFlO1FBQ3RDLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMxQixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5QixDQUFDOytHQWZVLHFCQUFxQjttR0FBckIscUJBQXFCLDZJQTlKdEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTBDVCw0N0NBM0NTLFlBQVksK0JBQUUsT0FBTzs7NEZBK0pwQixxQkFBcUI7a0JBbEtqQyxTQUFTOytCQUNFLG9CQUFvQixjQUNsQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsT0FBTyxDQUFDLFlBQ3RCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EwQ1Q7MkVBcUhRLEtBQUs7c0JBQWIsS0FBSztnQkFFSSxRQUFRO3NCQUFqQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgSW9uSWNvbiB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyL3N0YW5kYWxvbmUnO1xuaW1wb3J0IHsgYWRkSWNvbnMgfSBmcm9tICdpb25pY29ucyc7XG5pbXBvcnQgeyBhcnJvd0JhY2tPdXRsaW5lLCBhcnJvd0ZvcndhcmRPdXRsaW5lIH0gZnJvbSAnaW9uaWNvbnMvaWNvbnMnO1xuaW1wb3J0IHsgRG9jc05hdkxpbmtzTWV0YWRhdGEgfSBmcm9tICcuL3R5cGVzJztcblxuYWRkSWNvbnMoeyBhcnJvd0JhY2tPdXRsaW5lLCBhcnJvd0ZvcndhcmRPdXRsaW5lIH0pO1xuXG4vKipcbiAqIHZhbC1kb2NzLW5hdi1saW5rc1xuICpcbiAqIE5hdmlnYXRpb24gbGlua3MgZm9yIHByZXZpb3VzL25leHQgcGFnZSBuYXZpZ2F0aW9uIGluIGRvY3VtZW50YXRpb24uXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYGh0bWxcbiAqIDx2YWwtZG9jcy1uYXYtbGlua3NcbiAqICAgW3Byb3BzXT1cIntcbiAqICAgICBwcmV2aW91czogeyBsYWJlbDogJ1ByZXZpb3VzJywgdGl0bGU6ICdHZXR0aW5nIFN0YXJ0ZWQnLCByb3V0ZTogWycvZG9jcycsICdnZXR0aW5nLXN0YXJ0ZWQnXSB9LFxuICogICAgIG5leHQ6IHsgbGFiZWw6ICdOZXh0JywgdGl0bGU6ICdDb21wb25lbnRzJywgcm91dGU6IFsnL2RvY3MnLCAnY29tcG9uZW50cyddIH1cbiAqICAgfVwiXG4gKiA+PC92YWwtZG9jcy1uYXYtbGlua3M+XG4gKiBgYGBcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLWRvY3MtbmF2LWxpbmtzJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgSW9uSWNvbl0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPG5hdiBjbGFzcz1cImRvY3MtbmF2LWxpbmtzXCIgW2NsYXNzXT1cInByb3BzLmNzc0NsYXNzXCI+XG4gICAgICA8IS0tIFByZXZpb3VzIC0tPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImRvY3MtbmF2LWxpbmtzX19pdGVtIGRvY3MtbmF2LWxpbmtzX19pdGVtLS1wcmV2XCJcbiAgICAgICAgW2NsYXNzLmRvY3MtbmF2LWxpbmtzX19pdGVtLS1lbXB0eV09XCIhcHJvcHMucHJldmlvdXNcIlxuICAgICAgPlxuICAgICAgICBAaWYgKHByb3BzLnByZXZpb3VzKSB7XG4gICAgICAgICAgPGFcbiAgICAgICAgICAgIGNsYXNzPVwiZG9jcy1uYXYtbGlua3NfX2xpbmtcIlxuICAgICAgICAgICAgW2hyZWZdPVwiZ2V0SHJlZihwcm9wcy5wcmV2aW91cy5yb3V0ZSlcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uTmF2aWdhdGUoJGV2ZW50LCBwcm9wcy5wcmV2aW91cy5yb3V0ZSlcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwiYXJyb3ctYmFjay1vdXRsaW5lXCIgY2xhc3M9XCJkb2NzLW5hdi1saW5rc19faWNvblwiPjwvaW9uLWljb24+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZG9jcy1uYXYtbGlua3NfX3RleHRcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkb2NzLW5hdi1saW5rc19fbGFiZWxcIj57eyBwcm9wcy5wcmV2aW91cy5sYWJlbCB8fCAnUHJldmlvdXMnIH19PC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRvY3MtbmF2LWxpbmtzX190aXRsZVwiPnt7IHByb3BzLnByZXZpb3VzLnRpdGxlIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9hPlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cblxuICAgICAgPCEtLSBOZXh0IC0tPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImRvY3MtbmF2LWxpbmtzX19pdGVtIGRvY3MtbmF2LWxpbmtzX19pdGVtLS1uZXh0XCJcbiAgICAgICAgW2NsYXNzLmRvY3MtbmF2LWxpbmtzX19pdGVtLS1lbXB0eV09XCIhcHJvcHMubmV4dFwiXG4gICAgICA+XG4gICAgICAgIEBpZiAocHJvcHMubmV4dCkge1xuICAgICAgICAgIDxhXG4gICAgICAgICAgICBjbGFzcz1cImRvY3MtbmF2LWxpbmtzX19saW5rXCJcbiAgICAgICAgICAgIFtocmVmXT1cImdldEhyZWYocHJvcHMubmV4dC5yb3V0ZSlcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uTmF2aWdhdGUoJGV2ZW50LCBwcm9wcy5uZXh0LnJvdXRlKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRvY3MtbmF2LWxpbmtzX190ZXh0XCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZG9jcy1uYXYtbGlua3NfX2xhYmVsXCI+e3sgcHJvcHMubmV4dC5sYWJlbCB8fCAnTmV4dCcgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZG9jcy1uYXYtbGlua3NfX3RpdGxlXCI+e3sgcHJvcHMubmV4dC50aXRsZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJhcnJvdy1mb3J3YXJkLW91dGxpbmVcIiBjbGFzcz1cImRvY3MtbmF2LWxpbmtzX19pY29uXCI+PC9pb24taWNvbj5cbiAgICAgICAgICA8L2E+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIDwvbmF2PlxuICBgLFxuICBzdHlsZXM6IFtgXG4gICAgLmRvY3MtbmF2LWxpbmtzIHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBnYXA6IDFyZW07XG4gICAgICBtYXJnaW4tdG9wOiAzcmVtO1xuICAgICAgcGFkZGluZy10b3A6IDJyZW07XG4gICAgICBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0taW9uLWJvcmRlci1jb2xvciwgI2UwZTBlMCk7XG5cbiAgICAgICZfX2l0ZW0ge1xuICAgICAgICBmbGV4OiAxO1xuXG4gICAgICAgICYtLWVtcHR5IHtcbiAgICAgICAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgICAgIH1cblxuICAgICAgICAmLS1uZXh0IHtcbiAgICAgICAgICB0ZXh0LWFsaWduOiByaWdodDtcblxuICAgICAgICAgIC5kb2NzLW5hdi1saW5rc19fbGluayB7XG4gICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC5kb2NzLW5hdi1saW5rc19fdGV4dCB7XG4gICAgICAgICAgICBhbGlnbi1pdGVtczogZmxleC1lbmQ7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgICZfX2xpbmsge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IDAuNzVyZW07XG4gICAgICAgIHBhZGRpbmc6IDFyZW07XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgICAgICBjb2xvcjogaW5oZXJpdDtcbiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0taW9uLWJvcmRlci1jb2xvciwgI2UwZTBlMCk7XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0taW9uLWNvbG9yLWxpZ2h0LCAjZjRmNWY4KTtcbiAgICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLWlvbi1jb2xvci1wcmltYXJ5LCAjMzg4MGZmKTtcblxuICAgICAgICAgIC5kb2NzLW5hdi1saW5rc19fdGl0bGUge1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1wcmltYXJ5LCAjMzg4MGZmKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgJl9faWNvbiB7XG4gICAgICAgIGZvbnQtc2l6ZTogMS4yNXJlbTtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1tZWRpdW0sICM2NjYpO1xuICAgICAgfVxuXG4gICAgICAmX190ZXh0IHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgZ2FwOiAwLjI1cmVtO1xuICAgICAgfVxuXG4gICAgICAmX19sYWJlbCB7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43NXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuNXB4O1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLW1lZGl1bSwgIzY2Nik7XG4gICAgICB9XG5cbiAgICAgICZfX3RpdGxlIHtcbiAgICAgICAgZm9udC1zaXplOiAxcmVtO1xuICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLXRleHQtY29sb3IsICMxYTFhMWEpO1xuICAgICAgICB0cmFuc2l0aW9uOiBjb2xvciAwLjJzIGVhc2U7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gTW9iaWxlIHJlc3BvbnNpdmVcbiAgICBAbWVkaWEgKG1heC13aWR0aDogNjAwcHgpIHtcbiAgICAgIC5kb2NzLW5hdi1saW5rcyB7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cbiAgICAgICAgJl9faXRlbS0tbmV4dCB7XG4gICAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcblxuICAgICAgICAgIC5kb2NzLW5hdi1saW5rc19fbGluayB7XG4gICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG4gICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2U7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLmRvY3MtbmF2LWxpbmtzX190ZXh0IHtcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIERhcmsgbW9kZVxuICAgIDpob3N0LWNvbnRleHQoLmRhcmspLFxuICAgIDpob3N0LWNvbnRleHQoW2NvbG9yLXNjaGVtZT0nZGFyayddKSB7XG4gICAgICAuZG9jcy1uYXYtbGlua3Mge1xuICAgICAgICAmX19saW5rIHtcbiAgICAgICAgICBib3JkZXItY29sb3I6ICMzYTNhM2E7XG5cbiAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgJl9fdGl0bGUge1xuICAgICAgICAgIGNvbG9yOiAjZjRmNWY4O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICBgXSxcbn0pXG5leHBvcnQgY2xhc3MgRG9jc05hdkxpbmtzQ29tcG9uZW50IHtcbiAgQElucHV0KCkgcHJvcHM6IERvY3NOYXZMaW5rc01ldGFkYXRhID0ge307XG5cbiAgQE91dHB1dCgpIG5hdmlnYXRlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmdbXT4oKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJvdXRlcjogUm91dGVyKSB7fVxuXG4gIGdldEhyZWYocm91dGU6IHN0cmluZ1tdKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJy8nICsgcm91dGUuam9pbignLycpO1xuICB9XG5cbiAgb25OYXZpZ2F0ZShldmVudDogRXZlbnQsIHJvdXRlOiBzdHJpbmdbXSk6IHZvaWQge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgdGhpcy5uYXZpZ2F0ZS5lbWl0KHJvdXRlKTtcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShyb3V0ZSk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL2RvY3MtbmF2LWxpbmtzL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvbmZpZ3VyYXRpb24gZm9yIHRoZSBkb2NzLW5hdi1saW5rcyBjb21wb25lbnQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRG9jc05hdkxpbmtzTWV0YWRhdGEge1xuICAvKipcbiAgICogUHJldmlvdXMgcGFnZSBsaW5rLlxuICAgKi9cbiAgcHJldmlvdXM/OiBEb2NzTmF2TGluaztcblxuICAvKipcbiAgICogTmV4dCBwYWdlIGxpbmsuXG4gICAqL1xuICBuZXh0PzogRG9jc05hdkxpbms7XG5cbiAgLyoqXG4gICAqIEN1c3RvbSBDU1MgY2xhc3MuXG4gICAqL1xuICBjc3NDbGFzcz86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEb2NzTmF2TGluayB7XG4gIC8qKlxuICAgKiBMYWJlbCAoc21hbGwgdGV4dCwgZS5nLiwgXCJQcmV2aW91c1wiLCBcIk5leHRcIikuXG4gICAqL1xuICBsYWJlbD86IHN0cmluZztcblxuICAvKipcbiAgICogVGl0bGUgKG1haW4gdGV4dCwgcGFnZSBuYW1lKS5cbiAgICovXG4gIHRpdGxlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFJvdXRlIHRvIG5hdmlnYXRlIHRvLlxuICAgKi9cbiAgcm91dGU6IHN0cmluZ1tdO1xufVxuIl19
@@ -0,0 +1,276 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { Component, Input, Output, EventEmitter } from '@angular/core';
3
+ import { NavigationEnd } from '@angular/router';
4
+ import { IonIcon } from '@ionic/angular/standalone';
5
+ import { addIcons } from 'ionicons';
6
+ import { chevronDownOutline, chevronForwardOutline } from 'ionicons/icons';
7
+ import { filter } from 'rxjs/operators';
8
+ import * as i0 from "@angular/core";
9
+ import * as i1 from "@angular/router";
10
+ addIcons({ chevronDownOutline, chevronForwardOutline });
11
+ /**
12
+ * val-docs-sidebar
13
+ *
14
+ * A hierarchical navigation sidebar for documentation sites.
15
+ * Supports collapsible sections, active route highlighting, and badges.
16
+ *
17
+ * @example Basic usage
18
+ * ```html
19
+ * <val-docs-sidebar
20
+ * [props]="{
21
+ * logo: { src: '/assets/logo.svg', alt: 'Docs', title: 'DOCS' },
22
+ * sections: [
23
+ * { title: 'Getting Started', route: ['/docs', 'getting-started'] },
24
+ * {
25
+ * title: 'Components',
26
+ * expanded: true,
27
+ * children: [
28
+ * { label: 'Button', route: ['/docs', 'components', 'button'] },
29
+ * { label: 'Card', route: ['/docs', 'components', 'card'], badge: 'New' }
30
+ * ]
31
+ * }
32
+ * ]
33
+ * }"
34
+ * (navigate)="onNavigate($event)"
35
+ * ></val-docs-sidebar>
36
+ * ```
37
+ */
38
+ export class DocsSidebarComponent {
39
+ constructor(router) {
40
+ this.router = router;
41
+ this.props = { sections: [] };
42
+ this.navigate = new EventEmitter();
43
+ this.expandedSections = {};
44
+ this.currentRoute = [];
45
+ }
46
+ ngOnInit() {
47
+ this.initializeExpandedSections();
48
+ this.updateCurrentRoute();
49
+ // Listen for route changes
50
+ this.router.events
51
+ .pipe(filter(event => event instanceof NavigationEnd))
52
+ .subscribe(() => {
53
+ this.updateCurrentRoute();
54
+ this.autoExpandActiveSection();
55
+ });
56
+ }
57
+ ngOnChanges(changes) {
58
+ if (changes['props']) {
59
+ this.initializeExpandedSections();
60
+ }
61
+ }
62
+ initializeExpandedSections() {
63
+ this.props.sections.forEach(section => {
64
+ if (this.expandedSections[section.title] === undefined) {
65
+ this.expandedSections[section.title] = section.expanded ?? false;
66
+ }
67
+ });
68
+ }
69
+ updateCurrentRoute() {
70
+ this.currentRoute = this.router.url.split('/').filter(Boolean);
71
+ // Use activeRoute from props if provided
72
+ if (this.props.activeRoute) {
73
+ this.currentRoute = this.props.activeRoute;
74
+ }
75
+ }
76
+ autoExpandActiveSection() {
77
+ this.props.sections.forEach(section => {
78
+ if (section.children?.some(link => this.isLinkActive(link))) {
79
+ this.expandedSections[section.title] = true;
80
+ }
81
+ });
82
+ }
83
+ onSectionClick(section) {
84
+ if (section.route) {
85
+ this.onNavigate(section.route);
86
+ }
87
+ else if (section.children?.length) {
88
+ this.expandedSections[section.title] = !this.expandedSections[section.title];
89
+ }
90
+ }
91
+ onNavigate(route) {
92
+ this.navigate.emit(route);
93
+ this.router.navigate(route);
94
+ }
95
+ isSectionActive(section) {
96
+ if (section.route) {
97
+ return this.routesMatch(section.route, this.currentRoute);
98
+ }
99
+ return section.children?.some(link => this.isLinkActive(link)) ?? false;
100
+ }
101
+ isLinkActive(link) {
102
+ return this.routesMatch(link.route, this.currentRoute);
103
+ }
104
+ routesMatch(route, current) {
105
+ const routePath = route.join('/').replace(/^\//, '');
106
+ const currentPath = current.join('/');
107
+ return currentPath === routePath || currentPath.startsWith(routePath + '/');
108
+ }
109
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DocsSidebarComponent, deps: [{ token: i1.Router }], target: i0.ɵɵFactoryTarget.Component }); }
110
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: DocsSidebarComponent, isStandalone: true, selector: "val-docs-sidebar", inputs: { props: "props" }, outputs: { navigate: "navigate" }, usesOnChanges: true, ngImport: i0, template: `
111
+ <nav
112
+ class="docs-sidebar"
113
+ [class]="props.cssClass"
114
+ [style.background]="props.backgroundColor"
115
+ >
116
+ <!-- Logo -->
117
+ @if (props.logo) {
118
+ <div
119
+ class="docs-sidebar__logo"
120
+ [class.docs-sidebar__logo--clickable]="props.logo.route"
121
+ (click)="props.logo.route ? onNavigate(props.logo.route) : null"
122
+ >
123
+ <img
124
+ [src]="props.logo.src"
125
+ [alt]="props.logo.alt"
126
+ [style.height]="props.logo.height || '32px'"
127
+ />
128
+ @if (props.logo.title) {
129
+ <span class="docs-sidebar__logo-title">{{ props.logo.title }}</span>
130
+ }
131
+ </div>
132
+ }
133
+
134
+ <!-- Navigation sections -->
135
+ <div class="docs-sidebar__nav">
136
+ @for (section of props.sections; track section.title) {
137
+ <div class="docs-sidebar__section">
138
+ <!-- Section header -->
139
+ <div
140
+ class="docs-sidebar__section-header"
141
+ [class.docs-sidebar__section-header--active]="isSectionActive(section)"
142
+ [class.docs-sidebar__section-header--expanded]="expandedSections[section.title]"
143
+ [class.docs-sidebar__section-header--clickable]="section.route || section.children?.length"
144
+ (click)="onSectionClick(section)"
145
+ >
146
+ @if (section.icon) {
147
+ <ion-icon [name]="section.icon" class="docs-sidebar__section-icon"></ion-icon>
148
+ }
149
+ <span class="docs-sidebar__section-title">{{ section.title }}</span>
150
+ @if (section.badge) {
151
+ <span class="docs-sidebar__badge docs-sidebar__badge--section">{{ section.badge }}</span>
152
+ }
153
+ @if (section.children?.length) {
154
+ <ion-icon
155
+ class="docs-sidebar__chevron"
156
+ [name]="expandedSections[section.title] ? 'chevron-down-outline' : 'chevron-forward-outline'"
157
+ ></ion-icon>
158
+ }
159
+ </div>
160
+
161
+ <!-- Section children -->
162
+ @if (section.children?.length && expandedSections[section.title]) {
163
+ <div class="docs-sidebar__children">
164
+ @for (link of section.children; track link.label) {
165
+ <div
166
+ class="docs-sidebar__link"
167
+ [class.docs-sidebar__link--active]="isLinkActive(link)"
168
+ (click)="onNavigate(link.route)"
169
+ >
170
+ <span class="docs-sidebar__link-label">{{ link.label }}</span>
171
+ @if (link.badge) {
172
+ <span
173
+ class="docs-sidebar__badge"
174
+ [class.docs-sidebar__badge--primary]="link.badgeColor === 'primary'"
175
+ [class.docs-sidebar__badge--success]="link.badgeColor === 'success'"
176
+ [class.docs-sidebar__badge--warning]="link.badgeColor === 'warning'"
177
+ [class.docs-sidebar__badge--danger]="link.badgeColor === 'danger'"
178
+ >{{ link.badge }}</span>
179
+ }
180
+ </div>
181
+ }
182
+ </div>
183
+ }
184
+ </div>
185
+ }
186
+ </div>
187
+ </nav>
188
+ `, isInline: true, styles: [".docs-sidebar{--sidebar-text-color: var(--ion-text-color, #1a1a1a);--sidebar-text-secondary: var(--ion-color-medium, #666);--sidebar-active-color: var(--ion-color-primary, #3880ff);--sidebar-active-bg: var(--ion-color-primary-tint, rgba(56, 128, 255, .1));--sidebar-hover-bg: var(--ion-color-light, #f4f5f8);--sidebar-border-color: var(--ion-border-color, #e0e0e0);font-family:var(--ion-font-family, system-ui, sans-serif)}.docs-sidebar__logo{display:flex;align-items:center;gap:.75rem;padding:1rem 0;margin-bottom:1rem;border-bottom:1px solid var(--sidebar-border-color)}.docs-sidebar__logo--clickable{cursor:pointer;transition:opacity .2s ease}.docs-sidebar__logo--clickable:hover{opacity:.8}.docs-sidebar__logo img{height:32px;width:auto}.docs-sidebar__logo-title{font-size:1.25rem;font-weight:600;color:var(--sidebar-text-color);letter-spacing:.5px}.docs-sidebar__nav{display:flex;flex-direction:column;gap:.25rem}.docs-sidebar__section{margin-bottom:.25rem}.docs-sidebar__section-header{display:flex;align-items:center;gap:.5rem;padding:.625rem .75rem;border-radius:6px;font-size:.875rem;font-weight:600;color:var(--sidebar-text-color);transition:all .15s ease}.docs-sidebar__section-header--clickable{cursor:pointer}.docs-sidebar__section-header--clickable:hover{background:var(--sidebar-hover-bg)}.docs-sidebar__section-header--active{color:var(--sidebar-active-color)}.docs-sidebar__section-header--expanded .docs-sidebar__chevron{transform:rotate(0)}.docs-sidebar__section-icon{font-size:1.125rem;color:var(--sidebar-text-secondary)}.docs-sidebar__section-title{flex:1}.docs-sidebar__chevron{font-size:.875rem;color:var(--sidebar-text-secondary);transition:transform .2s ease}.docs-sidebar__children{padding-left:1rem;margin-top:.25rem;border-left:1px solid var(--sidebar-border-color);margin-left:.75rem}.docs-sidebar__link{display:flex;align-items:center;gap:.5rem;padding:.5rem .75rem;border-radius:6px;font-size:.8125rem;color:var(--sidebar-text-secondary);cursor:pointer;transition:all .15s ease}.docs-sidebar__link:hover{background:var(--sidebar-hover-bg);color:var(--sidebar-text-color)}.docs-sidebar__link--active{background:var(--sidebar-active-bg);color:var(--sidebar-active-color);font-weight:500}.docs-sidebar__link--active:hover{background:var(--sidebar-active-bg);color:var(--sidebar-active-color)}.docs-sidebar__link-label{flex:1}.docs-sidebar__badge{display:inline-flex;align-items:center;padding:.125rem .5rem;border-radius:10px;font-size:.625rem;font-weight:600;text-transform:uppercase;letter-spacing:.5px;background:var(--ion-color-primary-tint, rgba(56, 128, 255, .15));color:var(--ion-color-primary, #3880ff)}.docs-sidebar__badge--section{margin-left:auto}.docs-sidebar__badge--primary{background:var(--ion-color-primary-tint, rgba(56, 128, 255, .15));color:var(--ion-color-primary, #3880ff)}.docs-sidebar__badge--success{background:var(--ion-color-success-tint, rgba(45, 211, 111, .15));color:var(--ion-color-success, #2dd36f)}.docs-sidebar__badge--warning{background:var(--ion-color-warning-tint, rgba(255, 196, 9, .15));color:var(--ion-color-warning-shade, #e0ac08)}.docs-sidebar__badge--danger{background:var(--ion-color-danger-tint, rgba(235, 68, 90, .15));color:var(--ion-color-danger, #eb445a)}:host-context(.dark) .docs-sidebar,:host-context([color-scheme=dark]) .docs-sidebar{--sidebar-text-color: #f4f5f8;--sidebar-text-secondary: #a0a0a0;--sidebar-hover-bg: rgba(255, 255, 255, .05);--sidebar-border-color: #3a3a3a}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }] }); }
189
+ }
190
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DocsSidebarComponent, decorators: [{
191
+ type: Component,
192
+ args: [{ selector: 'val-docs-sidebar', standalone: true, imports: [CommonModule, IonIcon], template: `
193
+ <nav
194
+ class="docs-sidebar"
195
+ [class]="props.cssClass"
196
+ [style.background]="props.backgroundColor"
197
+ >
198
+ <!-- Logo -->
199
+ @if (props.logo) {
200
+ <div
201
+ class="docs-sidebar__logo"
202
+ [class.docs-sidebar__logo--clickable]="props.logo.route"
203
+ (click)="props.logo.route ? onNavigate(props.logo.route) : null"
204
+ >
205
+ <img
206
+ [src]="props.logo.src"
207
+ [alt]="props.logo.alt"
208
+ [style.height]="props.logo.height || '32px'"
209
+ />
210
+ @if (props.logo.title) {
211
+ <span class="docs-sidebar__logo-title">{{ props.logo.title }}</span>
212
+ }
213
+ </div>
214
+ }
215
+
216
+ <!-- Navigation sections -->
217
+ <div class="docs-sidebar__nav">
218
+ @for (section of props.sections; track section.title) {
219
+ <div class="docs-sidebar__section">
220
+ <!-- Section header -->
221
+ <div
222
+ class="docs-sidebar__section-header"
223
+ [class.docs-sidebar__section-header--active]="isSectionActive(section)"
224
+ [class.docs-sidebar__section-header--expanded]="expandedSections[section.title]"
225
+ [class.docs-sidebar__section-header--clickable]="section.route || section.children?.length"
226
+ (click)="onSectionClick(section)"
227
+ >
228
+ @if (section.icon) {
229
+ <ion-icon [name]="section.icon" class="docs-sidebar__section-icon"></ion-icon>
230
+ }
231
+ <span class="docs-sidebar__section-title">{{ section.title }}</span>
232
+ @if (section.badge) {
233
+ <span class="docs-sidebar__badge docs-sidebar__badge--section">{{ section.badge }}</span>
234
+ }
235
+ @if (section.children?.length) {
236
+ <ion-icon
237
+ class="docs-sidebar__chevron"
238
+ [name]="expandedSections[section.title] ? 'chevron-down-outline' : 'chevron-forward-outline'"
239
+ ></ion-icon>
240
+ }
241
+ </div>
242
+
243
+ <!-- Section children -->
244
+ @if (section.children?.length && expandedSections[section.title]) {
245
+ <div class="docs-sidebar__children">
246
+ @for (link of section.children; track link.label) {
247
+ <div
248
+ class="docs-sidebar__link"
249
+ [class.docs-sidebar__link--active]="isLinkActive(link)"
250
+ (click)="onNavigate(link.route)"
251
+ >
252
+ <span class="docs-sidebar__link-label">{{ link.label }}</span>
253
+ @if (link.badge) {
254
+ <span
255
+ class="docs-sidebar__badge"
256
+ [class.docs-sidebar__badge--primary]="link.badgeColor === 'primary'"
257
+ [class.docs-sidebar__badge--success]="link.badgeColor === 'success'"
258
+ [class.docs-sidebar__badge--warning]="link.badgeColor === 'warning'"
259
+ [class.docs-sidebar__badge--danger]="link.badgeColor === 'danger'"
260
+ >{{ link.badge }}</span>
261
+ }
262
+ </div>
263
+ }
264
+ </div>
265
+ }
266
+ </div>
267
+ }
268
+ </div>
269
+ </nav>
270
+ `, styles: [".docs-sidebar{--sidebar-text-color: var(--ion-text-color, #1a1a1a);--sidebar-text-secondary: var(--ion-color-medium, #666);--sidebar-active-color: var(--ion-color-primary, #3880ff);--sidebar-active-bg: var(--ion-color-primary-tint, rgba(56, 128, 255, .1));--sidebar-hover-bg: var(--ion-color-light, #f4f5f8);--sidebar-border-color: var(--ion-border-color, #e0e0e0);font-family:var(--ion-font-family, system-ui, sans-serif)}.docs-sidebar__logo{display:flex;align-items:center;gap:.75rem;padding:1rem 0;margin-bottom:1rem;border-bottom:1px solid var(--sidebar-border-color)}.docs-sidebar__logo--clickable{cursor:pointer;transition:opacity .2s ease}.docs-sidebar__logo--clickable:hover{opacity:.8}.docs-sidebar__logo img{height:32px;width:auto}.docs-sidebar__logo-title{font-size:1.25rem;font-weight:600;color:var(--sidebar-text-color);letter-spacing:.5px}.docs-sidebar__nav{display:flex;flex-direction:column;gap:.25rem}.docs-sidebar__section{margin-bottom:.25rem}.docs-sidebar__section-header{display:flex;align-items:center;gap:.5rem;padding:.625rem .75rem;border-radius:6px;font-size:.875rem;font-weight:600;color:var(--sidebar-text-color);transition:all .15s ease}.docs-sidebar__section-header--clickable{cursor:pointer}.docs-sidebar__section-header--clickable:hover{background:var(--sidebar-hover-bg)}.docs-sidebar__section-header--active{color:var(--sidebar-active-color)}.docs-sidebar__section-header--expanded .docs-sidebar__chevron{transform:rotate(0)}.docs-sidebar__section-icon{font-size:1.125rem;color:var(--sidebar-text-secondary)}.docs-sidebar__section-title{flex:1}.docs-sidebar__chevron{font-size:.875rem;color:var(--sidebar-text-secondary);transition:transform .2s ease}.docs-sidebar__children{padding-left:1rem;margin-top:.25rem;border-left:1px solid var(--sidebar-border-color);margin-left:.75rem}.docs-sidebar__link{display:flex;align-items:center;gap:.5rem;padding:.5rem .75rem;border-radius:6px;font-size:.8125rem;color:var(--sidebar-text-secondary);cursor:pointer;transition:all .15s ease}.docs-sidebar__link:hover{background:var(--sidebar-hover-bg);color:var(--sidebar-text-color)}.docs-sidebar__link--active{background:var(--sidebar-active-bg);color:var(--sidebar-active-color);font-weight:500}.docs-sidebar__link--active:hover{background:var(--sidebar-active-bg);color:var(--sidebar-active-color)}.docs-sidebar__link-label{flex:1}.docs-sidebar__badge{display:inline-flex;align-items:center;padding:.125rem .5rem;border-radius:10px;font-size:.625rem;font-weight:600;text-transform:uppercase;letter-spacing:.5px;background:var(--ion-color-primary-tint, rgba(56, 128, 255, .15));color:var(--ion-color-primary, #3880ff)}.docs-sidebar__badge--section{margin-left:auto}.docs-sidebar__badge--primary{background:var(--ion-color-primary-tint, rgba(56, 128, 255, .15));color:var(--ion-color-primary, #3880ff)}.docs-sidebar__badge--success{background:var(--ion-color-success-tint, rgba(45, 211, 111, .15));color:var(--ion-color-success, #2dd36f)}.docs-sidebar__badge--warning{background:var(--ion-color-warning-tint, rgba(255, 196, 9, .15));color:var(--ion-color-warning-shade, #e0ac08)}.docs-sidebar__badge--danger{background:var(--ion-color-danger-tint, rgba(235, 68, 90, .15));color:var(--ion-color-danger, #eb445a)}:host-context(.dark) .docs-sidebar,:host-context([color-scheme=dark]) .docs-sidebar{--sidebar-text-color: #f4f5f8;--sidebar-text-secondary: #a0a0a0;--sidebar-hover-bg: rgba(255, 255, 255, .05);--sidebar-border-color: #3a3a3a}\n"] }]
271
+ }], ctorParameters: () => [{ type: i1.Router }], propDecorators: { props: [{
272
+ type: Input
273
+ }], navigate: [{
274
+ type: Output
275
+ }] } });
276
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jcy1zaWRlYmFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9vcmdhbmlzbXMvZG9jcy1zaWRlYmFyL2RvY3Mtc2lkZWJhci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQW9DLE1BQU0sZUFBZSxDQUFDO0FBQ3pHLE9BQU8sRUFBVSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNwQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7OztBQUd4QyxRQUFRLENBQUMsRUFBRSxrQkFBa0IsRUFBRSxxQkFBcUIsRUFBRSxDQUFDLENBQUM7QUFFeEQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMEJHO0FBc0ZILE1BQU0sT0FBTyxvQkFBb0I7SUFRL0IsWUFBb0IsTUFBYztRQUFkLFdBQU0sR0FBTixNQUFNLENBQVE7UUFQekIsVUFBSyxHQUF3QixFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsQ0FBQztRQUU3QyxhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQVksQ0FBQztRQUVsRCxxQkFBZ0IsR0FBNEIsRUFBRSxDQUFDO1FBQ3ZDLGlCQUFZLEdBQWEsRUFBRSxDQUFDO0lBRUMsQ0FBQztJQUV0QyxRQUFRO1FBQ04sSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQUM7UUFDbEMsSUFBSSxDQUFDLGtC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QUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQztJQUMxRSxDQUFDO0lBRUQsWUFBWSxDQUFDLElBQXFCO1FBQ2hDLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRU8sV0FBVyxDQUFDLEtBQWUsRUFBRSxPQUFpQjtRQUNwRCxNQUFNLFNBQVMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDckQsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN0QyxPQUFPLFdBQVcsS0FBSyxTQUFTLElBQUksV0FBVyxDQUFDLFVBQVUsQ0FBQyxTQUFTLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDOUUsQ0FBQzsrR0FqRlUsb0JBQW9CO21HQUFwQixvQkFBb0IsZ0tBakZyQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBOEVULDQ4R0EvRVMsWUFBWSwrQkFBRSxPQUFPOzs0RkFrRnBCLG9CQUFvQjtrQkFyRmhDLFNBQVM7K0JBQ0Usa0JBQWtCLGNBQ2hCLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxPQUFPLENBQUMsWUFDdEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQThFVDsyRUFJUSxLQUFLO3NCQUFiLEtBQUs7Z0JBRUksUUFBUTtzQkFBakIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgT25Jbml0LCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlciwgTmF2aWdhdGlvbkVuZCB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBJb25JY29uIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXIvc3RhbmRhbG9uZSc7XG5pbXBvcnQgeyBhZGRJY29ucyB9IGZyb20gJ2lvbmljb25zJztcbmltcG9ydCB7IGNoZXZyb25Eb3duT3V0bGluZSwgY2hldnJvbkZvcndhcmRPdXRsaW5lIH0gZnJvbSAnaW9uaWNvbnMvaWNvbnMnO1xuaW1wb3J0IHsgZmlsdGVyIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRG9jc1NpZGViYXJNZXRhZGF0YSwgRG9jc1NpZGViYXJTZWN0aW9uLCBEb2NzU2lkZWJhckxpbmsgfSBmcm9tICcuL3R5cGVzJztcblxuYWRkSWNvbnMoeyBjaGV2cm9uRG93bk91dGxpbmUsIGNoZXZyb25Gb3J3YXJkT3V0bGluZSB9KTtcblxuLyoqXG4gKiB2YWwtZG9jcy1zaWRlYmFyXG4gKlxuICogQSBoaWVyYXJjaGljYWwgbmF2aWdhdGlvbiBzaWRlYmFyIGZvciBkb2N1bWVudGF0aW9uIHNpdGVzLlxuICogU3VwcG9ydHMgY29sbGFwc2libGUgc2VjdGlvbnMsIGFjdGl2ZSByb3V0ZSBoaWdobGlnaHRpbmcsIGFuZCBiYWRnZXMuXG4gKlxuICogQGV4YW1wbGUgQmFzaWMgdXNhZ2VcbiAqIGBgYGh0bWxcbiAqIDx2YWwtZG9jcy1zaWRlYmFyXG4gKiAgIFtwcm9wc109XCJ7XG4gKiAgICAgbG9nbzogeyBzcmM6ICcvYXNzZXRzL2xvZ28uc3ZnJywgYWx0OiAnRG9jcycsIHRpdGxlOiAnRE9DUycgfSxcbiAqICAgICBzZWN0aW9uczogW1xuICogICAgICAgeyB0aXRsZTogJ0dldHRpbmcgU3RhcnRlZCcsIHJvdXRlOiBbJy9kb2NzJywgJ2dldHRpbmctc3RhcnRlZCddIH0sXG4gKiAgICAgICB7XG4gKiAgICAgICAgIHRpdGxlOiAnQ29tcG9uZW50cycsXG4gKiAgICAgICAgIGV4cGFuZGVkOiB0cnVlLFxuICogICAgICAgICBjaGlsZHJlbjogW1xuICogICAgICAgICAgIHsgbGFiZWw6ICdCdXR0b24nLCByb3V0ZTogWycvZG9jcycsICdjb21wb25lbnRzJywgJ2J1dHRvbiddIH0sXG4gKiAgICAgICAgICAgeyBsYWJlbDogJ0NhcmQnLCByb3V0ZTogWycvZG9jcycsICdjb21wb25lbnRzJywgJ2NhcmQnXSwgYmFkZ2U6ICdOZXcnIH1cbiAqICAgICAgICAgXVxuICogICAgICAgfVxuICogICAgIF1cbiAqICAgfVwiXG4gKiAgIChuYXZpZ2F0ZSk9XCJvbk5hdmlnYXRlKCRldmVudClcIlxuICogPjwvdmFsLWRvY3Mtc2lkZWJhcj5cbiAqIGBgYFxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtZG9jcy1zaWRlYmFyJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgSW9uSWNvbl0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPG5hdlxuICAgICAgY2xhc3M9XCJkb2NzLXNpZGViYXJcIlxuICAgICAgW2NsYXNzXT1cInByb3BzLmNzc0NsYXNzXCJcbiAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kXT1cInByb3BzLmJhY2tncm91bmRDb2xvclwiXG4gICAgPlxuICAgICAgPCEtLSBMb2dvIC0tPlxuICAgICAgQGlmIChwcm9wcy5sb2dvKSB7XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cImRvY3Mtc2lkZWJhcl9fbG9nb1wiXG4gICAgICAgICAgW2NsYXNzLmRvY3Mtc2lkZWJhcl9fbG9nby0tY2xpY2thYmxlXT1cInByb3BzLmxvZ28ucm91dGVcIlxuICAgICAgICAgIChjbGljayk9XCJwcm9wcy5sb2dvLnJvdXRlID8gb25OYXZpZ2F0ZShwcm9wcy5sb2dvLnJvdXRlKSA6IG51bGxcIlxuICAgICAgICA+XG4gICAgICAgICAgPGltZ1xuICAgICAgICAgICAgW3NyY109XCJwcm9wcy5sb2dvLnNyY1wiXG4gICAgICAgICAgICBbYWx0XT1cInByb3BzLmxvZ28uYWx0XCJcbiAgICAgICAgICAgIFtzdHlsZS5oZWlnaHRdPVwicHJvcHMubG9nby5oZWlnaHQgfHwgJzMycHgnXCJcbiAgICAgICAgICAvPlxuICAgICAgICAgIEBpZiAocHJvcHMubG9nby50aXRsZSkge1xuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkb2NzLXNpZGViYXJfX2xvZ28tdGl0bGVcIj57eyBwcm9wcy5sb2dvLnRpdGxlIH19PC9zcGFuPlxuICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG5cbiAgICAgIDwhLS0gTmF2aWdhdGlvbiBzZWN0aW9ucyAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJkb2NzLXNpZGViYXJfX25hdlwiPlxuICAgICAgICBAZm9yIChzZWN0aW9uIG9mIHByb3BzLnNlY3Rpb25zOyB0cmFjayBzZWN0aW9uLnRpdGxlKSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImRvY3Mtc2lkZWJhcl9fc2VjdGlvblwiPlxuICAgICAgICAgICAgPCEtLSBTZWN0aW9uIGhlYWRlciAtLT5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJkb2NzLXNpZGViYXJfX3NlY3Rpb24taGVhZGVyXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmRvY3Mtc2lkZWJhcl9fc2VjdGlvbi1oZWFkZXItLWFjdGl2ZV09XCJpc1NlY3Rpb25BY3RpdmUoc2VjdGlvbilcIlxuICAgICAgICAgICAgICBbY2xhc3MuZG9jcy1zaWRlYmFyX19zZWN0aW9uLWhlYWRlci0tZXhwYW5kZWRdPVwiZXhwYW5kZWRTZWN0aW9uc1tzZWN0aW9uLnRpdGxlXVwiXG4gICAgICAgICAgICAgIFtjbGFzcy5kb2NzLXNpZGViYXJfX3NlY3Rpb24taGVhZGVyLS1jbGlja2FibGVdPVwic2VjdGlvbi5yb3V0ZSB8fCBzZWN0aW9uLmNoaWxkcmVuPy5sZW5ndGhcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwib25TZWN0aW9uQ2xpY2soc2VjdGlvbilcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICBAaWYgKHNlY3Rpb24uaWNvbikge1xuICAgICAgICAgICAgICAgIDxpb24taWNvbiBbbmFtZV09XCJzZWN0aW9uLmljb25cIiBjbGFzcz1cImRvY3Mtc2lkZWJhcl9fc2VjdGlvbi1pY29uXCI+PC9pb24taWNvbj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRvY3Mtc2lkZWJhcl9fc2VjdGlvbi10aXRsZVwiPnt7IHNlY3Rpb24udGl0bGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgIEBpZiAoc2VjdGlvbi5iYWRnZSkge1xuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZG9jcy1zaWRlYmFyX19iYWRnZSBkb2NzLXNpZGViYXJfX2JhZGdlLS1zZWN0aW9uXCI+e3sgc2VjdGlvbi5iYWRnZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBAaWYgKHNlY3Rpb24uY2hpbGRyZW4/Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIDxpb24taWNvblxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkb2NzLXNpZGViYXJfX2NoZXZyb25cIlxuICAgICAgICAgICAgICAgICAgW25hbWVdPVwiZXhwYW5kZWRTZWN0aW9uc1tzZWN0aW9uLnRpdGxlXSA/ICdjaGV2cm9uLWRvd24tb3V0bGluZScgOiAnY2hldnJvbi1mb3J3YXJkLW91dGxpbmUnXCJcbiAgICAgICAgICAgICAgICA+PC9pb24taWNvbj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDwhLS0gU2VjdGlvbiBjaGlsZHJlbiAtLT5cbiAgICAgICAgICAgIEBpZiAoc2VjdGlvbi5jaGlsZHJlbj8ubGVuZ3RoICYmIGV4cGFuZGVkU2VjdGlvbnNbc2VjdGlvbi50aXRsZV0pIHtcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRvY3Mtc2lkZWJhcl9fY2hpbGRyZW5cIj5cbiAgICAgICAgICAgICAgICBAZm9yIChsaW5rIG9mIHNlY3Rpb24uY2hpbGRyZW47IHRyYWNrIGxpbmsubGFiZWwpIHtcbiAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkb2NzLXNpZGViYXJfX2xpbmtcIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZG9jcy1zaWRlYmFyX19saW5rLS1hY3RpdmVdPVwiaXNMaW5rQWN0aXZlKGxpbmspXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uTmF2aWdhdGUobGluay5yb3V0ZSlcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRvY3Mtc2lkZWJhcl9fbGluay1sYWJlbFwiPnt7IGxpbmsubGFiZWwgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIEBpZiAobGluay5iYWRnZSkge1xuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRvY3Mtc2lkZWJhcl9fYmFkZ2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmRvY3Mtc2lkZWJhcl9fYmFkZ2UtLXByaW1hcnldPVwibGluay5iYWRnZUNvbG9yID09PSAncHJpbWFyeSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmRvY3Mtc2lkZWJhcl9fYmFkZ2UtLXN1Y2Nlc3NdPVwibGluay5iYWRnZUNvbG9yID09PSAnc3VjY2VzcydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmRvY3Mtc2lkZWJhcl9fYmFkZ2UtLXdhcm5pbmddPVwibGluay5iYWRnZUNvbG9yID09PSAnd2FybmluZydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmRvY3Mtc2lkZWJhcl9fYmFkZ2UtLWRhbmdlcl09XCJsaW5rLmJhZGdlQ29sb3IgPT09ICdkYW5nZXInXCJcbiAgICAgICAgICAgICAgICAgICAgICA+e3sgbGluay5iYWRnZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgPC9uYXY+XG4gIGAsXG4gIHN0eWxlVXJsczogWycuL2RvY3Mtc2lkZWJhci5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBEb2NzU2lkZWJhckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgQElucHV0KCkgcHJvcHM6IERvY3NTaWRlYmFyTWV0YWRhdGEgPSB7IHNlY3Rpb25zOiBbXSB9O1xuXG4gIEBPdXRwdXQoKSBuYXZpZ2F0ZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nW10+KCk7XG5cbiAgZXhwYW5kZWRTZWN0aW9uczogUmVjb3JkPHN0cmluZywgYm9vbGVhbj4gPSB7fTtcbiAgcHJpdmF0ZSBjdXJyZW50Um91dGU6IHN0cmluZ1tdID0gW107XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByb3V0ZXI6IFJvdXRlcikge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmluaXRpYWxpemVFeHBhbmRlZFNlY3Rpb25zKCk7XG4gICAgdGhpcy51cGRhdGVDdXJyZW50Um91dGUoKTtcblxuICAgIC8vIExpc3RlbiBmb3Igcm91dGUgY2hhbmdlc1xuICAgIHRoaXMucm91dGVyLmV2ZW50c1xuICAgICAgLnBpcGUoZmlsdGVyKGV2ZW50ID0+IGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy51cGRhdGVDdXJyZW50Um91dGUoKTtcbiAgICAgICAgdGhpcy5hdXRvRXhwYW5kQWN0aXZlU2VjdGlvbigpO1xuICAgICAgfSk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXNbJ3Byb3BzJ10pIHtcbiAgICAgIHRoaXMuaW5pdGlhbGl6ZUV4cGFuZGVkU2VjdGlvbnMoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxpemVFeHBhbmRlZFNlY3Rpb25zKCk6IHZvaWQge1xuICAgIHRoaXMucHJvcHMuc2VjdGlvbnMuZm9yRWFjaChzZWN0aW9uID0+IHtcbiAgICAgIGlmICh0aGlzLmV4cGFuZGVkU2VjdGlvbnNbc2VjdGlvbi50aXRsZV0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLmV4cGFuZGVkU2VjdGlvbnNbc2VjdGlvbi50aXRsZV0gPSBzZWN0aW9uLmV4cGFuZGVkID8/IGZhbHNlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVDdXJyZW50Um91dGUoKTogdm9pZCB7XG4gICAgdGhpcy5jdXJyZW50Um91dGUgPSB0aGlzLnJvdXRlci51cmwuc3BsaXQoJy8nKS5maWx0ZXIoQm9vbGVhbik7XG4gICAgLy8gVXNlIGFjdGl2ZVJvdXRlIGZyb20gcHJvcHMgaWYgcHJvdmlkZWRcbiAgICBpZiAodGhpcy5wcm9wcy5hY3RpdmVSb3V0ZSkge1xuICAgICAgdGhpcy5jdXJyZW50Um91dGUgPSB0aGlzLnByb3BzLmFjdGl2ZVJvdXRlO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXV0b0V4cGFuZEFjdGl2ZVNlY3Rpb24oKTogdm9pZCB7XG4gICAgdGhpcy5wcm9wcy5zZWN0aW9ucy5mb3JFYWNoKHNlY3Rpb24gPT4ge1xuICAgICAgaWYgKHNlY3Rpb24uY2hpbGRyZW4/LnNvbWUobGluayA9PiB0aGlzLmlzTGlua0FjdGl2ZShsaW5rKSkpIHtcbiAgICAgICAgdGhpcy5leHBhbmRlZFNlY3Rpb25zW3NlY3Rpb24udGl0bGVdID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIG9uU2VjdGlvbkNsaWNrKHNlY3Rpb246IERvY3NTaWRlYmFyU2VjdGlvbik6IHZvaWQge1xuICAgIGlmIChzZWN0aW9uLnJvdXRlKSB7XG4gICAgICB0aGlzLm9uTmF2aWdhdGUoc2VjdGlvbi5yb3V0ZSk7XG4gICAgfSBlbHNlIGlmIChzZWN0aW9uLmNoaWxkcmVuPy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuZXhwYW5kZWRTZWN0aW9uc1tzZWN0aW9uLnRpdGxlXSA9ICF0aGlzLmV4cGFuZGVkU2VjdGlvbnNbc2VjdGlvbi50aXRsZV07XG4gICAgfVxuICB9XG5cbiAgb25OYXZpZ2F0ZShyb3V0ZTogc3RyaW5nW10pOiB2b2lkIHtcbiAgICB0aGlzLm5hdmlnYXRlLmVtaXQocm91dGUpO1xuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKHJvdXRlKTtcbiAgfVxuXG4gIGlzU2VjdGlvbkFjdGl2ZShzZWN0aW9uOiBEb2NzU2lkZWJhclNlY3Rpb24pOiBib29sZWFuIHtcbiAgICBpZiAoc2VjdGlvbi5yb3V0ZSkge1xuICAgICAgcmV0dXJuIHRoaXMucm91dGVzTWF0Y2goc2VjdGlvbi5yb3V0ZSwgdGhpcy5jdXJyZW50Um91dGUpO1xuICAgIH1cbiAgICByZXR1cm4gc2VjdGlvbi5jaGlsZHJlbj8uc29tZShsaW5rID0+IHRoaXMuaXNMaW5rQWN0aXZlKGxpbmspKSA/PyBmYWxzZTtcbiAgfVxuXG4gIGlzTGlua0FjdGl2ZShsaW5rOiBEb2NzU2lkZWJhckxpbmspOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5yb3V0ZXNNYXRjaChsaW5rLnJvdXRlLCB0aGlzLmN1cnJlbnRSb3V0ZSk7XG4gIH1cblxuICBwcml2YXRlIHJvdXRlc01hdGNoKHJvdXRlOiBzdHJpbmdbXSwgY3VycmVudDogc3RyaW5nW10pOiBib29sZWFuIHtcbiAgICBjb25zdCByb3V0ZVBhdGggPSByb3V0ZS5qb2luKCcvJykucmVwbGFjZSgvXlxcLy8sICcnKTtcbiAgICBjb25zdCBjdXJyZW50UGF0aCA9IGN1cnJlbnQuam9pbignLycpO1xuICAgIHJldHVybiBjdXJyZW50UGF0aCA9PT0gcm91dGVQYXRoIHx8IGN1cnJlbnRQYXRoLnN0YXJ0c1dpdGgocm91dGVQYXRoICsgJy8nKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL2RvY3Mtc2lkZWJhci90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb25maWd1cmF0aW9uIGZvciB0aGUgZG9jcy1zaWRlYmFyIGNvbXBvbmVudC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEb2NzU2lkZWJhck1ldGFkYXRhIHtcbiAgLyoqXG4gICAqIE5hdmlnYXRpb24gc2VjdGlvbnMgdG8gZGlzcGxheS5cbiAgICovXG4gIHNlY3Rpb25zOiBEb2NzU2lkZWJhclNlY3Rpb25bXTtcblxuICAvKipcbiAgICogQ3VycmVudGx5IGFjdGl2ZSByb3V0ZSBmb3IgaGlnaGxpZ2h0aW5nLlxuICAgKi9cbiAgYWN0aXZlUm91dGU/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogTG9nbyBjb25maWd1cmF0aW9uIGZvciB0aGUgc2lkZWJhciBoZWFkZXIuXG4gICAqL1xuICBsb2dvPzogRG9jc1NpZGViYXJMb2dvO1xuXG4gIC8qKlxuICAgKiBDdXN0b20gQ1NTIGNsYXNzLlxuICAgKi9cbiAgY3NzQ2xhc3M/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEJhY2tncm91bmQgY29sb3Igb3ZlcnJpZGUuXG4gICAqL1xuICBiYWNrZ3JvdW5kQ29sb3I/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRG9jc1NpZGViYXJMb2dvIHtcbiAgLyoqXG4gICAqIExvZ28gaW1hZ2Ugc291cmNlLlxuICAgKi9cbiAgc3JjOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEFsdCB0ZXh0IGZvciBhY2Nlc3NpYmlsaXR5LlxuICAgKi9cbiAgYWx0OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIHRpdGxlL3RleHQgbmV4dCB0byBsb2dvLlxuICAgKi9cbiAgdGl0bGU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFJvdXRlIHRvIG5hdmlnYXRlIHdoZW4gbG9nbyBpcyBjbGlja2VkLlxuICAgKi9cbiAgcm91dGU/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogTG9nbyBoZWlnaHQgKHdpZHRoIGF1dG8tY2FsY3VsYXRlZCkuXG4gICAqIEBkZWZhdWx0ICczMnB4J1xuICAgKi9cbiAgaGVpZ2h0Pzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERvY3NTaWRlYmFyU2VjdGlvbiB7XG4gIC8qKlxuICAgKiBTZWN0aW9uIHRpdGxlIGRpc3BsYXllZCBpbiB0aGUgc2lkZWJhci5cbiAgICovXG4gIHRpdGxlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFJvdXRlIGZvciBkaXJlY3QgbmF2aWdhdGlvbiAoaWYgbm8gY2hpbGRyZW4pLlxuICAgKi9cbiAgcm91dGU/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogQ2hpbGQgbGlua3MgdW5kZXIgdGhpcyBzZWN0aW9uLlxuICAgKi9cbiAgY2hpbGRyZW4/OiBEb2NzU2lkZWJhckxpbmtbXTtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgc2VjdGlvbiBpcyBleHBhbmRlZCBieSBkZWZhdWx0LlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgZXhwYW5kZWQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBpY29uIG5hbWUgKElvbmljb25zKS5cbiAgICovXG4gIGljb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEJhZGdlIHRleHQgKGUuZy4sIFwiTmV3XCIsIFwiQmV0YVwiKS5cbiAgICovXG4gIGJhZGdlPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERvY3NTaWRlYmFyTGluayB7XG4gIC8qKlxuICAgKiBMaW5rIGRpc3BsYXkgdGV4dC5cbiAgICovXG4gIGxhYmVsOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFJvdXRlIHRvIG5hdmlnYXRlIHRvLlxuICAgKi9cbiAgcm91dGU6IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBCYWRnZSB0ZXh0IChlLmcuLCBcIk5ld1wiLCBcIkRlcHJlY2F0ZWRcIikuXG4gICAqL1xuICBiYWRnZT86IHN0cmluZztcblxuICAvKipcbiAgICogQmFkZ2UgY29sb3IgdmFyaWFudC5cbiAgICovXG4gIGJhZGdlQ29sb3I/OiAncHJpbWFyeScgfCAnc2Vjb25kYXJ5JyB8ICdzdWNjZXNzJyB8ICd3YXJuaW5nJyB8ICdkYW5nZXInO1xufVxuIl19