@semantic-components/ui 0.9.0 → 0.11.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/fesm2022/semantic-components-ui.mjs +1175 -1776
- package/fesm2022/semantic-components-ui.mjs.map +1 -1
- package/index.d.ts +4 -0
- package/lib/components/autocomplete/autocomplete-item.d.ts +18 -0
- package/lib/components/autocomplete/autocomplete-model.d.ts +4 -0
- package/lib/components/autocomplete/autocomplete.d.ts +20 -0
- package/lib/components/autocomplete/index.d.ts +1 -0
- package/lib/components/{date-picker/inline-date-picker.d.ts → calendar/calendar.d.ts} +5 -3
- package/lib/components/calendar/index.d.ts +1 -0
- package/lib/components/{date-picker → calendar}/month-days.d.ts +3 -1
- package/lib/components/calendar/month-year-header.d.ts +9 -0
- package/lib/components/checkbox/checkbox.d.ts +6 -1
- package/lib/components/date-picker/date-picker.d.ts +4 -2
- package/lib/components/date-picker/index.d.ts +0 -1
- package/lib/components/editor/editor.d.ts +4 -1
- package/lib/components/full-calendar/full-calendar.d.ts +7 -0
- package/lib/components/full-calendar/index.d.ts +1 -0
- package/lib/components/menu/menu-checkbox-item.d.ts +4 -3
- package/lib/components/overlay/index.d.ts +1 -0
- package/lib/components/overlay/utils.d.ts +1 -0
- package/lib/components/select/listbox-option.d.ts +8 -0
- package/lib/components/select/listbox.d.ts +7 -0
- package/lib/components/select/option.d.ts +3 -5
- package/lib/components/select/select.d.ts +11 -9
- package/lib/components/sheet/index.d.ts +2 -1
- package/lib/components/sheet/sheet-close.d.ts +10 -0
- package/lib/components/sheet/sheet-config.d.ts +5 -0
- package/lib/components/sheet/sheet-container.d.ts +9 -0
- package/lib/components/sheet/sheet-trigger.d.ts +11 -11
- package/lib/components/sheet/sheet.d.ts +3 -3
- package/lib/components/sidebar/constants.d.ts +3 -0
- package/lib/components/sidebar/index.d.ts +4 -0
- package/lib/components/sidebar/sidebar-mobile.d.ts +13 -0
- package/lib/components/sidebar/sidebar-provider.d.ts +11 -0
- package/lib/components/sidebar/sidebar-state.d.ts +9 -0
- package/lib/components/sidebar/sidebar-toggler.d.ts +8 -0
- package/lib/components/sidebar/sidebar.d.ts +20 -0
- package/lib/components/typography/article.d.ts +8 -0
- package/lib/components/typography/heading.d.ts +8 -0
- package/lib/components/typography/index.d.ts +2 -0
- package/package.json +1 -2
- package/lib/components/date-picker/month-year-header.d.ts +0 -8
- package/lib/components/select/select-state.d.ts +0 -9
- package/lib/components/sheet/sheet-toggler.d.ts +0 -10
- package/lib/components/sheet/sidebar-content.d.ts +0 -7
- /package/lib/components/{date-picker → calendar}/util.d.ts +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { clsx } from 'clsx';
|
|
2
2
|
import { twMerge } from 'tailwind-merge';
|
|
3
3
|
import * as i0 from '@angular/core';
|
|
4
|
-
import { input, computed, Component, ViewEncapsulation, ChangeDetectionStrategy, inject, ElementRef, Directive, HostListener,
|
|
4
|
+
import { input, computed, Component, ViewEncapsulation, ChangeDetectionStrategy, signal, inject, ElementRef, Directive, HostListener, Injectable, ChangeDetectorRef, viewChild, afterNextRender, forwardRef, ViewContainerRef, contentChildren, model, output, effect, LOCALE_ID, Injector, booleanAttribute, untracked, viewChildren } from '@angular/core';
|
|
5
5
|
import * as i1 from '@angular/forms';
|
|
6
6
|
import { FormGroup, FormControl, Validators, ReactiveFormsModule, NG_VALUE_ACCESSOR, FormArray, NgForm, FormGroupDirective, NgControl, FormBuilder, FormsModule } from '@angular/forms';
|
|
7
7
|
import { Editor } from '@tiptap/core';
|
|
@@ -9,34 +9,87 @@ import Document from '@tiptap/extension-document';
|
|
|
9
9
|
import Heading from '@tiptap/extension-heading';
|
|
10
10
|
import Paragraph from '@tiptap/extension-paragraph';
|
|
11
11
|
import Text from '@tiptap/extension-text';
|
|
12
|
-
import { SvgQuoteIcon, SvgBoldIcon, SvgListIcon, SvgCodeIcon, SvgPaletteIcon, SvgHighlighterIcon, SvgUndoIcon, SvgRedoIcon, SvgMinusIcon, SvgItalicIcon, SvgListOrderedIcon, SvgStrikethroughIcon, SvgAlignLeftIcon, SvgAlignRightIcon, SvgAlignCenterIcon, SvgUnderlineIcon, SvgEllipsisIcon, SvgChevronLeftIcon, SvgChevronsLeftIcon, SvgChevronRightIcon, SvgChevronsRightIcon, SvgCalendarIcon, SvgMoonIcon, SvgSunIcon, SvgChevronDownIcon, SvgCheckIcon, SvgMenuIcon, SvgXIcon, SvgChevronUpIcon, SvgCircleIcon, SvgDotIcon, SvgSearchIcon } from '@semantic-icons/lucide-icons';
|
|
13
12
|
import { cva } from 'class-variance-authority';
|
|
14
|
-
import {
|
|
13
|
+
import { SvgQuoteIcon, SvgBoldIcon, SvgListIcon, SvgCodeIcon, SvgPaletteIcon, SvgHighlighterIcon, SvgUndoIcon, SvgRedoIcon, SvgMinusIcon, SvgItalicIcon, SvgListOrderedIcon, SvgStrikethroughIcon, SvgAlignLeftIcon, SvgAlignRightIcon, SvgAlignCenterIcon, SvgUnderlineIcon, SvgCheckIcon, SvgChevronDownIcon, SvgEllipsisIcon, SvgChevronLeftIcon, SvgChevronsLeftIcon, SvgChevronRightIcon, SvgChevronsRightIcon, SvgCalendarIcon, SvgMoonIcon, SvgSunIcon, SvgXIcon, SvgChevronUpIcon, SvgCircleIcon, SvgDotIcon, SvgSearchIcon } from '@semantic-icons/lucide-icons';
|
|
14
|
+
import { Overlay, OverlayModule, OverlayContainer, OverlayConfig } from '@angular/cdk/overlay';
|
|
15
15
|
import { ComponentPortal, TemplatePortal } from '@angular/cdk/portal';
|
|
16
16
|
import * as i1$5 from '@angular/cdk/menu';
|
|
17
17
|
import { CdkMenuTrigger, CdkMenu, CdkMenuItem, CdkContextMenuTrigger, CdkMenuItemCheckbox, CdkMenuGroup, CdkMenuItemRadio, CdkMenuBar } from '@angular/cdk/menu';
|
|
18
18
|
import { DialogRef, Dialog, DialogModule } from '@angular/cdk/dialog';
|
|
19
|
+
import * as i1$1 from '@angular/cdk/a11y';
|
|
20
|
+
import { A11yModule, FocusMonitor, ActiveDescendantKeyManager } from '@angular/cdk/a11y';
|
|
19
21
|
import { Directionality } from '@angular/cdk/bidi';
|
|
22
|
+
import { TAB, ESCAPE, hasModifierKey, ENTER } from '@angular/cdk/keycodes';
|
|
23
|
+
import { CdkOption, CdkListbox } from '@angular/cdk/listbox';
|
|
20
24
|
import { _getEventTarget } from '@angular/cdk/platform';
|
|
21
25
|
import * as i1$3 from '@angular/common';
|
|
22
|
-
import { NgClass, DOCUMENT, CommonModule, AsyncPipe, JsonPipe,
|
|
23
|
-
import
|
|
24
|
-
import * as i1$2 from '@angular/router';
|
|
25
|
-
import { RouterModule } from '@angular/router';
|
|
26
|
-
import * as i1$1 from 'ngx-scrollbar';
|
|
26
|
+
import { NgClass, DOCUMENT, NgTemplateOutlet, CommonModule, AsyncPipe, JsonPipe, NgOptimizedImage } from '@angular/common';
|
|
27
|
+
import * as i1$2 from 'ngx-scrollbar';
|
|
27
28
|
import { NgScrollbarModule } from 'ngx-scrollbar';
|
|
28
29
|
import EmblaCarousel from 'embla-carousel';
|
|
29
30
|
import { coerceBooleanProperty } from '@angular/cdk/coercion';
|
|
30
31
|
import * as i1$4 from '@angular/cdk/accordion';
|
|
31
32
|
import { CdkAccordionModule } from '@angular/cdk/accordion';
|
|
32
|
-
import {
|
|
33
|
-
import {
|
|
34
|
-
import
|
|
33
|
+
import { takeUntilDestroyed, toSignal } from '@angular/core/rxjs-interop';
|
|
34
|
+
import { Subject, debounceTime } from 'rxjs';
|
|
35
|
+
import * as i1$6 from '@angular/cdk/layout';
|
|
36
|
+
import { LayoutModule } from '@angular/cdk/layout';
|
|
35
37
|
|
|
36
38
|
function cn(...inputs) {
|
|
37
39
|
return twMerge(clsx(inputs));
|
|
38
40
|
}
|
|
39
41
|
|
|
42
|
+
const scHeadingVariants = cva('', {
|
|
43
|
+
variants: {
|
|
44
|
+
level: {
|
|
45
|
+
1: 'text-4xl font-extrabold tracking-tight lg:text-5xl',
|
|
46
|
+
2: 'text-3xl font-semibold tracking-tight',
|
|
47
|
+
3: 'text-2xl font-semibold tracking-tight',
|
|
48
|
+
4: 'text-xl font-semibold tracking-tight',
|
|
49
|
+
5: '',
|
|
50
|
+
6: '',
|
|
51
|
+
},
|
|
52
|
+
},
|
|
53
|
+
defaultVariants: {
|
|
54
|
+
level: 1,
|
|
55
|
+
},
|
|
56
|
+
});
|
|
57
|
+
class ScHeading {
|
|
58
|
+
level = input(1);
|
|
59
|
+
class = input('');
|
|
60
|
+
classes = computed(() => cn(scHeadingVariants({ level: this.level() }), this.class()));
|
|
61
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScHeading, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
62
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.0.5", type: ScHeading, isStandalone: true, selector: "h1[sc-heading], h2[sc-heading], h3[sc-heading], h4[sc-heading], h5[sc-heading], h6[sc-heading]", inputs: { level: { classPropertyName: "level", publicName: "level", isSignal: true, isRequired: false, transformFunction: null }, class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "classes()" } }, ngImport: i0, template: `
|
|
63
|
+
<ng-content />
|
|
64
|
+
`, isInline: true, styles: [""], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
65
|
+
}
|
|
66
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScHeading, decorators: [{
|
|
67
|
+
type: Component,
|
|
68
|
+
args: [{ selector: 'h1[sc-heading], h2[sc-heading], h3[sc-heading], h4[sc-heading], h5[sc-heading], h6[sc-heading]', imports: [], template: `
|
|
69
|
+
<ng-content />
|
|
70
|
+
`, host: {
|
|
71
|
+
'[class]': 'classes()',
|
|
72
|
+
}, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush }]
|
|
73
|
+
}] });
|
|
74
|
+
|
|
75
|
+
const scArticleClasses = signal('prose prose-sm sm:prose lg:prose-lg xl:prose-2xl');
|
|
76
|
+
class ScArticle {
|
|
77
|
+
class = input('');
|
|
78
|
+
classes = computed(() => cn(scArticleClasses(), this.class()));
|
|
79
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScArticle, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
80
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.0.5", type: ScArticle, isStandalone: true, selector: "sc-article", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "classes()" } }, ngImport: i0, template: `
|
|
81
|
+
<ng-content />
|
|
82
|
+
`, isInline: true, styles: [""], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
83
|
+
}
|
|
84
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScArticle, decorators: [{
|
|
85
|
+
type: Component,
|
|
86
|
+
args: [{ selector: 'sc-article', imports: [], template: `
|
|
87
|
+
<ng-content />
|
|
88
|
+
`, host: {
|
|
89
|
+
'[class]': 'classes()',
|
|
90
|
+
}, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush }]
|
|
91
|
+
}] });
|
|
92
|
+
|
|
40
93
|
const toggleVariants = cva('inline-flex items-center justify-center gap-2 rounded-md text-sm font-medium ring-offset-background transition-colors hover:bg-muted hover:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground [&_.svg]:pointer-events-none [&_.svg]:size-4 [&_.svg]:shrink-0', {
|
|
41
94
|
variants: {
|
|
42
95
|
variant: {
|
|
@@ -4571,6 +4624,9 @@ class ScEditor {
|
|
|
4571
4624
|
_value = signal('');
|
|
4572
4625
|
_isEditable = signal(true);
|
|
4573
4626
|
class = input('');
|
|
4627
|
+
classes = computed(() => cn('', this.class()));
|
|
4628
|
+
editorClass = input('');
|
|
4629
|
+
editorClasses = computed(() => cn('mx-auto focus:outline-none', scArticleClasses(), this.editorClass()));
|
|
4574
4630
|
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
4575
4631
|
_onChange = () => { };
|
|
4576
4632
|
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
@@ -4685,7 +4741,7 @@ class ScEditor {
|
|
|
4685
4741
|
editable: this._isEditable(),
|
|
4686
4742
|
editorProps: {
|
|
4687
4743
|
attributes: {
|
|
4688
|
-
class: this.
|
|
4744
|
+
class: this.editorClasses(),
|
|
4689
4745
|
},
|
|
4690
4746
|
},
|
|
4691
4747
|
});
|
|
@@ -4714,7 +4770,7 @@ class ScEditor {
|
|
|
4714
4770
|
this._cdr.markForCheck();
|
|
4715
4771
|
}
|
|
4716
4772
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScEditor, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
4717
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "19.0.5", type: ScEditor, isStandalone: true, selector: "sc-editor", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, providers: [
|
|
4773
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "19.0.5", type: ScEditor, isStandalone: true, selector: "sc-editor", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, editorClass: { classPropertyName: "editorClass", publicName: "editorClass", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "classes()" } }, providers: [
|
|
4718
4774
|
{
|
|
4719
4775
|
provide: NG_VALUE_ACCESSOR,
|
|
4720
4776
|
useExisting: forwardRef(() => ScEditor),
|
|
@@ -4844,7 +4900,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImpor
|
|
|
4844
4900
|
></div>
|
|
4845
4901
|
</div>
|
|
4846
4902
|
</div>
|
|
4847
|
-
`,
|
|
4903
|
+
`, host: {
|
|
4904
|
+
'[class]': 'classes()',
|
|
4905
|
+
}, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [
|
|
4848
4906
|
{
|
|
4849
4907
|
provide: NG_VALUE_ACCESSOR,
|
|
4850
4908
|
useExisting: forwardRef(() => ScEditor),
|
|
@@ -4894,6 +4952,301 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImpor
|
|
|
4894
4952
|
}, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush }]
|
|
4895
4953
|
}] });
|
|
4896
4954
|
|
|
4955
|
+
class ScListbox {
|
|
4956
|
+
class = input('');
|
|
4957
|
+
classes = computed(() => cn('relative z-50 max-h-96 w-full min-w-32 overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2', this.class()));
|
|
4958
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScListbox, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
4959
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.0.5", type: ScListbox, isStandalone: true, selector: "ul[sc-listbox]", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "classes()" } }, ngImport: i0, template: `
|
|
4960
|
+
<ng-content />
|
|
4961
|
+
`, isInline: true, styles: [""], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
4962
|
+
}
|
|
4963
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScListbox, decorators: [{
|
|
4964
|
+
type: Component,
|
|
4965
|
+
args: [{ selector: 'ul[sc-listbox]', imports: [], template: `
|
|
4966
|
+
<ng-content />
|
|
4967
|
+
`, host: {
|
|
4968
|
+
'[class]': 'classes()',
|
|
4969
|
+
}, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush }]
|
|
4970
|
+
}] });
|
|
4971
|
+
|
|
4972
|
+
class ScListboxOption {
|
|
4973
|
+
class = input('');
|
|
4974
|
+
classes = computed(() => cn('relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50', this.class()));
|
|
4975
|
+
isSelected = input.required();
|
|
4976
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScListboxOption, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
4977
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.5", type: ScListboxOption, isStandalone: true, selector: "li[sc-listbox-option]", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, isSelected: { classPropertyName: "isSelected", publicName: "isSelected", isSignal: true, isRequired: true, transformFunction: null } }, host: { properties: { "class": "classes()" } }, ngImport: i0, template: `
|
|
4978
|
+
@if (isSelected()) {
|
|
4979
|
+
<svg-check-icon class="absolute left-2 flex size-4 items-center justify-center" />
|
|
4980
|
+
}
|
|
4981
|
+
|
|
4982
|
+
<ng-content />
|
|
4983
|
+
`, isInline: true, styles: [""], dependencies: [{ kind: "component", type: SvgCheckIcon, selector: "svg-check-icon", inputs: ["class", "svgClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
4984
|
+
}
|
|
4985
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScListboxOption, decorators: [{
|
|
4986
|
+
type: Component,
|
|
4987
|
+
args: [{ selector: 'li[sc-listbox-option]', imports: [SvgCheckIcon], template: `
|
|
4988
|
+
@if (isSelected()) {
|
|
4989
|
+
<svg-check-icon class="absolute left-2 flex size-4 items-center justify-center" />
|
|
4990
|
+
}
|
|
4991
|
+
|
|
4992
|
+
<ng-content />
|
|
4993
|
+
`, host: {
|
|
4994
|
+
'[class]': 'classes()',
|
|
4995
|
+
}, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush }]
|
|
4996
|
+
}] });
|
|
4997
|
+
|
|
4998
|
+
class ScOption {
|
|
4999
|
+
value = input.required();
|
|
5000
|
+
labelEl = viewChild.required('label');
|
|
5001
|
+
label = computed(() => {
|
|
5002
|
+
return this.labelEl().nativeElement.textContent?.trim();
|
|
5003
|
+
});
|
|
5004
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScOption, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
5005
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "19.0.5", type: ScOption, isStandalone: true, selector: "sc-option", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: true, transformFunction: null } }, viewQueries: [{ propertyName: "labelEl", first: true, predicate: ["label"], descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
5006
|
+
<span #label>
|
|
5007
|
+
<ng-content />
|
|
5008
|
+
</span>
|
|
5009
|
+
`, isInline: true, styles: [""], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
5010
|
+
}
|
|
5011
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScOption, decorators: [{
|
|
5012
|
+
type: Component,
|
|
5013
|
+
args: [{ selector: 'sc-option', imports: [], template: `
|
|
5014
|
+
<span #label>
|
|
5015
|
+
<ng-content />
|
|
5016
|
+
</span>
|
|
5017
|
+
`, host: {}, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush }]
|
|
5018
|
+
}] });
|
|
5019
|
+
|
|
5020
|
+
class ScSelect {
|
|
5021
|
+
static nextId = 0;
|
|
5022
|
+
id = 0;
|
|
5023
|
+
_getPanelId() {
|
|
5024
|
+
return `panel-${this.id}`;
|
|
5025
|
+
}
|
|
5026
|
+
_cdr = inject(ChangeDetectorRef);
|
|
5027
|
+
_overlay = inject(Overlay);
|
|
5028
|
+
_dir = inject(Directionality, { optional: true });
|
|
5029
|
+
_viewContainerRef = inject(ViewContainerRef);
|
|
5030
|
+
_portal = null;
|
|
5031
|
+
scSelectTrigger = viewChild.required('scSelectTrigger');
|
|
5032
|
+
_panelTemplate = viewChild.required('panelTemplate');
|
|
5033
|
+
placeholder = input('');
|
|
5034
|
+
isOpen = signal(false);
|
|
5035
|
+
constructor() {
|
|
5036
|
+
this.id = ++ScSelect.nextId;
|
|
5037
|
+
}
|
|
5038
|
+
options = contentChildren(ScOption);
|
|
5039
|
+
value = model(undefined);
|
|
5040
|
+
isDisabled = signal(false);
|
|
5041
|
+
writeValue(value) {
|
|
5042
|
+
this.value.set(value);
|
|
5043
|
+
}
|
|
5044
|
+
handleValueChange(v) {
|
|
5045
|
+
this.setValue(v[0]);
|
|
5046
|
+
this.close();
|
|
5047
|
+
}
|
|
5048
|
+
setValue(value) {
|
|
5049
|
+
this.value.set(value);
|
|
5050
|
+
this._onChange(value);
|
|
5051
|
+
this._cdr.markForCheck();
|
|
5052
|
+
}
|
|
5053
|
+
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
5054
|
+
_onChange = () => { };
|
|
5055
|
+
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
5056
|
+
_onTouched = () => { };
|
|
5057
|
+
registerOnChange(fn) {
|
|
5058
|
+
this._onChange = fn;
|
|
5059
|
+
}
|
|
5060
|
+
registerOnTouched(fn) {
|
|
5061
|
+
this._onTouched = fn;
|
|
5062
|
+
}
|
|
5063
|
+
setDisabledState(isDisabled) {
|
|
5064
|
+
this.isDisabled.set(isDisabled);
|
|
5065
|
+
}
|
|
5066
|
+
label = computed(() => {
|
|
5067
|
+
if (this.value()) {
|
|
5068
|
+
return this.options()
|
|
5069
|
+
.find((element) => element.value() === this.value())
|
|
5070
|
+
?.label();
|
|
5071
|
+
}
|
|
5072
|
+
return this.placeholder();
|
|
5073
|
+
});
|
|
5074
|
+
_isExpanded = computed(() => {
|
|
5075
|
+
return this.isOpen();
|
|
5076
|
+
});
|
|
5077
|
+
_overlayRef = null;
|
|
5078
|
+
_getOverlayRef() {
|
|
5079
|
+
if (this._overlayRef) {
|
|
5080
|
+
return this._overlayRef;
|
|
5081
|
+
}
|
|
5082
|
+
const positionStrategy = this._overlay
|
|
5083
|
+
.position()
|
|
5084
|
+
.flexibleConnectedTo(this.scSelectTrigger())
|
|
5085
|
+
.withFlexibleDimensions(false)
|
|
5086
|
+
.withPush(false)
|
|
5087
|
+
.withPositions([
|
|
5088
|
+
{
|
|
5089
|
+
originX: 'start',
|
|
5090
|
+
originY: 'bottom',
|
|
5091
|
+
overlayX: 'start',
|
|
5092
|
+
overlayY: 'top',
|
|
5093
|
+
offsetY: 8,
|
|
5094
|
+
},
|
|
5095
|
+
{
|
|
5096
|
+
originX: 'start',
|
|
5097
|
+
originY: 'top',
|
|
5098
|
+
overlayX: 'start',
|
|
5099
|
+
overlayY: 'bottom',
|
|
5100
|
+
offsetY: -8,
|
|
5101
|
+
},
|
|
5102
|
+
]);
|
|
5103
|
+
this._overlayRef = this._overlay.create({
|
|
5104
|
+
positionStrategy,
|
|
5105
|
+
scrollStrategy: this._overlay.scrollStrategies.reposition(),
|
|
5106
|
+
direction: this._dir || 'ltr',
|
|
5107
|
+
hasBackdrop: false,
|
|
5108
|
+
});
|
|
5109
|
+
this._overlayRef.keydownEvents().subscribe((event) => {
|
|
5110
|
+
this._handleKeydown(event);
|
|
5111
|
+
});
|
|
5112
|
+
this._overlayRef.outsidePointerEvents().subscribe((event) => {
|
|
5113
|
+
const target = _getEventTarget(event);
|
|
5114
|
+
const origin = this.scSelectTrigger().nativeElement;
|
|
5115
|
+
if (target && target !== origin && !origin.contains(target)) {
|
|
5116
|
+
this.close();
|
|
5117
|
+
}
|
|
5118
|
+
});
|
|
5119
|
+
return this._overlayRef;
|
|
5120
|
+
}
|
|
5121
|
+
open() {
|
|
5122
|
+
if (this.isOpen()) {
|
|
5123
|
+
return;
|
|
5124
|
+
}
|
|
5125
|
+
this.isOpen.set(true);
|
|
5126
|
+
const overlayRef = this._getOverlayRef();
|
|
5127
|
+
overlayRef.updateSize({ width: this.scSelectTrigger().nativeElement.offsetWidth });
|
|
5128
|
+
this._portal ??= new TemplatePortal(this._panelTemplate(), this._viewContainerRef);
|
|
5129
|
+
overlayRef.attach(this._portal);
|
|
5130
|
+
}
|
|
5131
|
+
close() {
|
|
5132
|
+
if (this.isOpen()) {
|
|
5133
|
+
this.isOpen.set(false);
|
|
5134
|
+
this._overlayRef?.detach();
|
|
5135
|
+
}
|
|
5136
|
+
}
|
|
5137
|
+
/** Handles keyboard events while the overlay is open. */
|
|
5138
|
+
_handleKeydown(event) {
|
|
5139
|
+
const keyCode = event.keyCode;
|
|
5140
|
+
if (keyCode === TAB) {
|
|
5141
|
+
this.close();
|
|
5142
|
+
}
|
|
5143
|
+
else if (keyCode === ESCAPE && !hasModifierKey(event)) {
|
|
5144
|
+
event.preventDefault();
|
|
5145
|
+
this.close();
|
|
5146
|
+
}
|
|
5147
|
+
else if (keyCode === ENTER) {
|
|
5148
|
+
//TODO for me it's mean it's was selected
|
|
5149
|
+
this.close();
|
|
5150
|
+
}
|
|
5151
|
+
}
|
|
5152
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScSelect, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
5153
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.5", type: ScSelect, isStandalone: true, selector: "sc-select", inputs: { placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange" }, providers: [
|
|
5154
|
+
{
|
|
5155
|
+
provide: NG_VALUE_ACCESSOR,
|
|
5156
|
+
useExisting: forwardRef(() => ScSelect),
|
|
5157
|
+
multi: true,
|
|
5158
|
+
},
|
|
5159
|
+
], queries: [{ propertyName: "options", predicate: ScOption, isSignal: true }], viewQueries: [{ propertyName: "scSelectTrigger", first: true, predicate: ["scSelectTrigger"], descendants: true, isSignal: true }, { propertyName: "_panelTemplate", first: true, predicate: ["panelTemplate"], descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
5160
|
+
<button
|
|
5161
|
+
class="flex h-10 w-full items-center justify-between rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1"
|
|
5162
|
+
#scSelectTrigger
|
|
5163
|
+
[disabled]="isDisabled()"
|
|
5164
|
+
[attr.aria-expanded]="_isExpanded()"
|
|
5165
|
+
[attr.aria-controls]="_getPanelId()"
|
|
5166
|
+
(click)="open()"
|
|
5167
|
+
type="button"
|
|
5168
|
+
role="combobox"
|
|
5169
|
+
>
|
|
5170
|
+
{{ label() }}
|
|
5171
|
+
<svg-chevron-down-icon class="size-4 opacity-50" />
|
|
5172
|
+
</button>
|
|
5173
|
+
|
|
5174
|
+
<ng-template #panelTemplate>
|
|
5175
|
+
<ul
|
|
5176
|
+
[id]="_getPanelId()"
|
|
5177
|
+
[cdkTrapFocusAutoCapture]="true"
|
|
5178
|
+
(cdkListboxValueChange)="handleValueChange($event.value)"
|
|
5179
|
+
sc-listbox
|
|
5180
|
+
cdkListbox
|
|
5181
|
+
cdkTrapFocus
|
|
5182
|
+
>
|
|
5183
|
+
@for (option of options(); track $index) {
|
|
5184
|
+
<li
|
|
5185
|
+
[isSelected]="option.value() === this.value()"
|
|
5186
|
+
[cdkOption]="option.value()"
|
|
5187
|
+
sc-listbox-option
|
|
5188
|
+
>
|
|
5189
|
+
{{ option.label() }}
|
|
5190
|
+
</li>
|
|
5191
|
+
}
|
|
5192
|
+
</ul>
|
|
5193
|
+
</ng-template>
|
|
5194
|
+
`, isInline: true, styles: [""], dependencies: [{ kind: "component", type: SvgChevronDownIcon, selector: "svg-chevron-down-icon", inputs: ["class", "svgClass"] }, { kind: "ngmodule", type: OverlayModule }, { kind: "component", type: ScListbox, selector: "ul[sc-listbox]", inputs: ["class"] }, { kind: "component", type: ScListboxOption, selector: "li[sc-listbox-option]", inputs: ["class", "isSelected"] }, { kind: "directive", type: CdkOption, selector: "[cdkOption]", inputs: ["id", "cdkOption", "cdkOptionTypeaheadLabel", "cdkOptionDisabled", "tabindex"], exportAs: ["cdkOption"] }, { kind: "directive", type: CdkListbox, selector: "[cdkListbox]", inputs: ["id", "tabindex", "cdkListboxValue", "cdkListboxMultiple", "cdkListboxDisabled", "cdkListboxUseActiveDescendant", "cdkListboxOrientation", "cdkListboxCompareWith", "cdkListboxNavigationWrapDisabled", "cdkListboxNavigatesDisabledOptions"], outputs: ["cdkListboxValueChange"], exportAs: ["cdkListbox"] }, { kind: "ngmodule", type: A11yModule }, { kind: "directive", type: i1$1.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
5195
|
+
}
|
|
5196
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScSelect, decorators: [{
|
|
5197
|
+
type: Component,
|
|
5198
|
+
args: [{ selector: 'sc-select', imports: [
|
|
5199
|
+
SvgChevronDownIcon,
|
|
5200
|
+
OverlayModule,
|
|
5201
|
+
ScListbox,
|
|
5202
|
+
ScListboxOption,
|
|
5203
|
+
CdkOption,
|
|
5204
|
+
CdkListbox,
|
|
5205
|
+
A11yModule,
|
|
5206
|
+
], template: `
|
|
5207
|
+
<button
|
|
5208
|
+
class="flex h-10 w-full items-center justify-between rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1"
|
|
5209
|
+
#scSelectTrigger
|
|
5210
|
+
[disabled]="isDisabled()"
|
|
5211
|
+
[attr.aria-expanded]="_isExpanded()"
|
|
5212
|
+
[attr.aria-controls]="_getPanelId()"
|
|
5213
|
+
(click)="open()"
|
|
5214
|
+
type="button"
|
|
5215
|
+
role="combobox"
|
|
5216
|
+
>
|
|
5217
|
+
{{ label() }}
|
|
5218
|
+
<svg-chevron-down-icon class="size-4 opacity-50" />
|
|
5219
|
+
</button>
|
|
5220
|
+
|
|
5221
|
+
<ng-template #panelTemplate>
|
|
5222
|
+
<ul
|
|
5223
|
+
[id]="_getPanelId()"
|
|
5224
|
+
[cdkTrapFocusAutoCapture]="true"
|
|
5225
|
+
(cdkListboxValueChange)="handleValueChange($event.value)"
|
|
5226
|
+
sc-listbox
|
|
5227
|
+
cdkListbox
|
|
5228
|
+
cdkTrapFocus
|
|
5229
|
+
>
|
|
5230
|
+
@for (option of options(); track $index) {
|
|
5231
|
+
<li
|
|
5232
|
+
[isSelected]="option.value() === this.value()"
|
|
5233
|
+
[cdkOption]="option.value()"
|
|
5234
|
+
sc-listbox-option
|
|
5235
|
+
>
|
|
5236
|
+
{{ option.label() }}
|
|
5237
|
+
</li>
|
|
5238
|
+
}
|
|
5239
|
+
</ul>
|
|
5240
|
+
</ng-template>
|
|
5241
|
+
`, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [
|
|
5242
|
+
{
|
|
5243
|
+
provide: NG_VALUE_ACCESSOR,
|
|
5244
|
+
useExisting: forwardRef(() => ScSelect),
|
|
5245
|
+
multi: true,
|
|
5246
|
+
},
|
|
5247
|
+
] }]
|
|
5248
|
+
}], ctorParameters: () => [] });
|
|
5249
|
+
|
|
4897
5250
|
class ScPageItem {
|
|
4898
5251
|
currentPage = input.required();
|
|
4899
5252
|
page = input.required();
|
|
@@ -5083,11 +5436,11 @@ class ScPaginator {
|
|
|
5083
5436
|
@if (!hidePageSize()) {
|
|
5084
5437
|
<div>
|
|
5085
5438
|
<label class="" for="items-per-page">Items per page:</label>
|
|
5086
|
-
<select class="" id="items-per-page" [formControl]="pageSizeFormControl">
|
|
5439
|
+
<sc-select class="" id="items-per-page" [formControl]="pageSizeFormControl">
|
|
5087
5440
|
@for (pageSizeOption of pageSizeOptions(); track $index) {
|
|
5088
|
-
<option [value]="pageSizeOption">{{ pageSizeOption }}</option>
|
|
5441
|
+
<sc-option [value]="pageSizeOption">{{ pageSizeOption }}</sc-option>
|
|
5089
5442
|
}
|
|
5090
|
-
</select>
|
|
5443
|
+
</sc-select>
|
|
5091
5444
|
</div>
|
|
5092
5445
|
}
|
|
5093
5446
|
|
|
@@ -5169,7 +5522,7 @@ class ScPaginator {
|
|
|
5169
5522
|
}
|
|
5170
5523
|
</ul>
|
|
5171
5524
|
</nav>
|
|
5172
|
-
`, isInline: true, styles: [""], dependencies: [{ kind: "component", type: ScPageItem, selector: "sc-page-item", inputs: ["currentPage", "page"], outputs: ["pageChanged"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.
|
|
5525
|
+
`, isInline: true, styles: [""], dependencies: [{ kind: "component", type: ScPageItem, selector: "sc-page-item", inputs: ["currentPage", "page"], outputs: ["pageChanged"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: ScPagination, selector: "nav[sc-pagination]", inputs: ["class"] }, { kind: "component", type: ScButton, selector: "button[sc-button], a[sc-button]", inputs: ["variant", "size", "class"] }, { kind: "component", type: SvgChevronLeftIcon, selector: "svg-chevron-left-icon", inputs: ["class", "svgClass"] }, { kind: "component", type: SvgChevronsLeftIcon, selector: "svg-chevrons-left-icon", inputs: ["class", "svgClass"] }, { kind: "component", type: SvgChevronRightIcon, selector: "svg-chevron-right-icon", inputs: ["class", "svgClass"] }, { kind: "component", type: SvgChevronsRightIcon, selector: "svg-chevrons-right-icon", inputs: ["class", "svgClass"] }, { kind: "component", type: ScSelect, selector: "sc-select", inputs: ["placeholder", "value"], outputs: ["valueChange"] }, { kind: "component", type: ScOption, selector: "sc-option", inputs: ["value"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
5173
5526
|
}
|
|
5174
5527
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScPaginator, decorators: [{
|
|
5175
5528
|
type: Component,
|
|
@@ -5182,15 +5535,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImpor
|
|
|
5182
5535
|
SvgChevronsLeftIcon,
|
|
5183
5536
|
SvgChevronRightIcon,
|
|
5184
5537
|
SvgChevronsRightIcon,
|
|
5538
|
+
ScSelect,
|
|
5539
|
+
ScOption,
|
|
5185
5540
|
], template: `
|
|
5186
5541
|
@if (!hidePageSize()) {
|
|
5187
5542
|
<div>
|
|
5188
5543
|
<label class="" for="items-per-page">Items per page:</label>
|
|
5189
|
-
<select class="" id="items-per-page" [formControl]="pageSizeFormControl">
|
|
5544
|
+
<sc-select class="" id="items-per-page" [formControl]="pageSizeFormControl">
|
|
5190
5545
|
@for (pageSizeOption of pageSizeOptions(); track $index) {
|
|
5191
|
-
<option [value]="pageSizeOption">{{ pageSizeOption }}</option>
|
|
5546
|
+
<sc-option [value]="pageSizeOption">{{ pageSizeOption }}</sc-option>
|
|
5192
5547
|
}
|
|
5193
|
-
</select>
|
|
5548
|
+
</sc-select>
|
|
5194
5549
|
</div>
|
|
5195
5550
|
}
|
|
5196
5551
|
|
|
@@ -5277,24 +5632,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImpor
|
|
|
5277
5632
|
}, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush }]
|
|
5278
5633
|
}], ctorParameters: () => [] });
|
|
5279
5634
|
|
|
5280
|
-
class
|
|
5281
|
-
class = input('');
|
|
5282
|
-
classes = computed(() => cn('flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-base ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 md:text-sm', this.class()));
|
|
5283
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScInput, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
5284
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.0.5", type: ScInput, isStandalone: true, selector: "input[sc-input]", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "classes()" } }, ngImport: i0, template: `
|
|
5285
|
-
<ng-content />
|
|
5286
|
-
`, isInline: true, styles: [""], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
5287
|
-
}
|
|
5288
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScInput, decorators: [{
|
|
5289
|
-
type: Component,
|
|
5290
|
-
args: [{ selector: 'input[sc-input]', imports: [], template: `
|
|
5291
|
-
<ng-content />
|
|
5292
|
-
`, host: {
|
|
5293
|
-
'[class]': 'classes()',
|
|
5294
|
-
}, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush }]
|
|
5295
|
-
}] });
|
|
5296
|
-
|
|
5297
|
-
class ScCard {
|
|
5635
|
+
class ScCard {
|
|
5298
5636
|
class = input('');
|
|
5299
5637
|
classes = computed(() => cn('rounded-lg border bg-card text-card-foreground shadow-sm', this.class()));
|
|
5300
5638
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScCard, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
@@ -5397,6 +5735,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImpor
|
|
|
5397
5735
|
}] });
|
|
5398
5736
|
|
|
5399
5737
|
class ScMonthDays {
|
|
5738
|
+
class = input('');
|
|
5739
|
+
classes = computed(() => cn('grid grid-cols-7 place-items-center', this.class()));
|
|
5400
5740
|
weekDaysNames = input.required();
|
|
5401
5741
|
days = input.required();
|
|
5402
5742
|
firstDayMonth = input.required();
|
|
@@ -5411,88 +5751,87 @@ class ScMonthDays {
|
|
|
5411
5751
|
this.selectedDayChange.emit(selectedDay);
|
|
5412
5752
|
}
|
|
5413
5753
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScMonthDays, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
5414
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.5", type: ScMonthDays, isStandalone: true, selector: "sc-month-days", inputs: { weekDaysNames: { classPropertyName: "weekDaysNames", publicName: "weekDaysNames", isSignal: true, isRequired: true, transformFunction: null }, days: { classPropertyName: "days", publicName: "days", isSignal: true, isRequired: true, transformFunction: null }, firstDayMonth: { classPropertyName: "firstDayMonth", publicName: "firstDayMonth", isSignal: true, isRequired: true, transformFunction: null }, selectedDay: { classPropertyName: "selectedDay", publicName: "selectedDay", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selectedDayChange: "selectedDayChange" }, ngImport: i0, template: `
|
|
5415
|
-
|
|
5416
|
-
|
|
5417
|
-
|
|
5418
|
-
|
|
5419
|
-
|
|
5420
|
-
|
|
5421
|
-
|
|
5422
|
-
|
|
5423
|
-
|
|
5424
|
-
|
|
5425
|
-
|
|
5426
|
-
|
|
5427
|
-
|
|
5428
|
-
|
|
5429
|
-
|
|
5430
|
-
|
|
5431
|
-
|
|
5432
|
-
|
|
5433
|
-
|
|
5434
|
-
|
|
5435
|
-
|
|
5436
|
-
|
|
5437
|
-
|
|
5438
|
-
|
|
5439
|
-
|
|
5440
|
-
|
|
5441
|
-
|
|
5442
|
-
|
|
5443
|
-
|
|
5444
|
-
|
|
5445
|
-
}
|
|
5446
|
-
</div>
|
|
5754
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.5", type: ScMonthDays, isStandalone: true, selector: "sc-month-days", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, weekDaysNames: { classPropertyName: "weekDaysNames", publicName: "weekDaysNames", isSignal: true, isRequired: true, transformFunction: null }, days: { classPropertyName: "days", publicName: "days", isSignal: true, isRequired: true, transformFunction: null }, firstDayMonth: { classPropertyName: "firstDayMonth", publicName: "firstDayMonth", isSignal: true, isRequired: true, transformFunction: null }, selectedDay: { classPropertyName: "selectedDay", publicName: "selectedDay", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selectedDayChange: "selectedDayChange" }, host: { properties: { "class": "classes()" } }, ngImport: i0, template: `
|
|
5755
|
+
@for (weekDayName of weekDaysNames(); track weekDayName.long) {
|
|
5756
|
+
<abbr
|
|
5757
|
+
class="size-10 text-center text-muted-foreground"
|
|
5758
|
+
[title]="weekDayName.long"
|
|
5759
|
+
[attr.aria-label]="weekDayName.long"
|
|
5760
|
+
>
|
|
5761
|
+
{{ weekDayName.short }}
|
|
5762
|
+
</abbr>
|
|
5763
|
+
}
|
|
5764
|
+
|
|
5765
|
+
@for (day of days(); track $index; let index = $index) {
|
|
5766
|
+
<button
|
|
5767
|
+
[ngClass]="{
|
|
5768
|
+
'col-start-1': index === 0 && firstDayMonth() === 0,
|
|
5769
|
+
'col-start-2': index === 0 && firstDayMonth() === 1,
|
|
5770
|
+
'col-start-3': index === 0 && firstDayMonth() === 2,
|
|
5771
|
+
'col-start-4': index === 0 && firstDayMonth() === 3,
|
|
5772
|
+
'col-start-5': index === 0 && firstDayMonth() === 4,
|
|
5773
|
+
'col-start-6': index === 0 && firstDayMonth() === 5,
|
|
5774
|
+
'col-start-7': index === 0 && firstDayMonth() === 6,
|
|
5775
|
+
}"
|
|
5776
|
+
[attr.data-sc-day]="day"
|
|
5777
|
+
[variant]="isSelected(day) ? 'primary' : 'ghost'"
|
|
5778
|
+
(click)="setSelectedDay($event)"
|
|
5779
|
+
sc-button
|
|
5780
|
+
size="icon"
|
|
5781
|
+
>
|
|
5782
|
+
{{ day.slice(-2) }}
|
|
5783
|
+
</button>
|
|
5784
|
+
}
|
|
5447
5785
|
`, isInline: true, styles: [""], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: ScButton, selector: "button[sc-button], a[sc-button]", inputs: ["variant", "size", "class"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
5448
5786
|
}
|
|
5449
5787
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScMonthDays, decorators: [{
|
|
5450
5788
|
type: Component,
|
|
5451
5789
|
args: [{ selector: 'sc-month-days', imports: [NgClass, ScButton], template: `
|
|
5452
|
-
|
|
5453
|
-
|
|
5454
|
-
|
|
5455
|
-
|
|
5456
|
-
|
|
5457
|
-
|
|
5458
|
-
|
|
5459
|
-
|
|
5460
|
-
|
|
5461
|
-
|
|
5462
|
-
|
|
5463
|
-
|
|
5464
|
-
|
|
5465
|
-
|
|
5466
|
-
|
|
5467
|
-
|
|
5468
|
-
|
|
5469
|
-
|
|
5470
|
-
|
|
5471
|
-
|
|
5472
|
-
|
|
5473
|
-
|
|
5474
|
-
|
|
5475
|
-
|
|
5476
|
-
|
|
5477
|
-
|
|
5478
|
-
|
|
5479
|
-
|
|
5480
|
-
|
|
5481
|
-
|
|
5482
|
-
|
|
5483
|
-
|
|
5484
|
-
|
|
5790
|
+
@for (weekDayName of weekDaysNames(); track weekDayName.long) {
|
|
5791
|
+
<abbr
|
|
5792
|
+
class="size-10 text-center text-muted-foreground"
|
|
5793
|
+
[title]="weekDayName.long"
|
|
5794
|
+
[attr.aria-label]="weekDayName.long"
|
|
5795
|
+
>
|
|
5796
|
+
{{ weekDayName.short }}
|
|
5797
|
+
</abbr>
|
|
5798
|
+
}
|
|
5799
|
+
|
|
5800
|
+
@for (day of days(); track $index; let index = $index) {
|
|
5801
|
+
<button
|
|
5802
|
+
[ngClass]="{
|
|
5803
|
+
'col-start-1': index === 0 && firstDayMonth() === 0,
|
|
5804
|
+
'col-start-2': index === 0 && firstDayMonth() === 1,
|
|
5805
|
+
'col-start-3': index === 0 && firstDayMonth() === 2,
|
|
5806
|
+
'col-start-4': index === 0 && firstDayMonth() === 3,
|
|
5807
|
+
'col-start-5': index === 0 && firstDayMonth() === 4,
|
|
5808
|
+
'col-start-6': index === 0 && firstDayMonth() === 5,
|
|
5809
|
+
'col-start-7': index === 0 && firstDayMonth() === 6,
|
|
5810
|
+
}"
|
|
5811
|
+
[attr.data-sc-day]="day"
|
|
5812
|
+
[variant]="isSelected(day) ? 'primary' : 'ghost'"
|
|
5813
|
+
(click)="setSelectedDay($event)"
|
|
5814
|
+
sc-button
|
|
5815
|
+
size="icon"
|
|
5816
|
+
>
|
|
5817
|
+
{{ day.slice(-2) }}
|
|
5818
|
+
</button>
|
|
5819
|
+
}
|
|
5820
|
+
`, host: {
|
|
5821
|
+
'[class]': 'classes()',
|
|
5822
|
+
}, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush }]
|
|
5485
5823
|
}] });
|
|
5486
5824
|
|
|
5487
5825
|
class ScMonthYearHeader {
|
|
5488
|
-
|
|
5826
|
+
class = input('');
|
|
5827
|
+
classes = computed(() => cn('flex justify-between', this.class()));
|
|
5489
5828
|
monthYear = input.required();
|
|
5490
5829
|
monthYearChange = output();
|
|
5491
5830
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScMonthYearHeader, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
5492
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.0.5", type: ScMonthYearHeader, isStandalone: true, selector: "sc-month-year-header", inputs: { monthYear: { classPropertyName: "monthYear", publicName: "monthYear", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { monthYearChange: "monthYearChange" }, host: { properties: { "class": "classes()" } }, ngImport: i0, template: `
|
|
5831
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.0.5", type: ScMonthYearHeader, isStandalone: true, selector: "sc-month-year-header", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, monthYear: { classPropertyName: "monthYear", publicName: "monthYear", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { monthYearChange: "monthYearChange" }, host: { properties: { "class": "classes()" } }, ngImport: i0, template: `
|
|
5493
5832
|
<button
|
|
5494
|
-
[attr.aria-label]="'Previous month'"
|
|
5495
5833
|
(click)="monthYearChange.emit(-1)"
|
|
5834
|
+
aria-label="Previous month"
|
|
5496
5835
|
sc-button
|
|
5497
5836
|
variant="outline"
|
|
5498
5837
|
type="button"
|
|
@@ -5506,8 +5845,8 @@ class ScMonthYearHeader {
|
|
|
5506
5845
|
</button>
|
|
5507
5846
|
|
|
5508
5847
|
<button
|
|
5509
|
-
[attr.aria-label]="'Next month'"
|
|
5510
5848
|
(click)="monthYearChange.emit(1)"
|
|
5849
|
+
aria-label="Next month"
|
|
5511
5850
|
sc-button
|
|
5512
5851
|
variant="outline"
|
|
5513
5852
|
type="button"
|
|
@@ -5522,8 +5861,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImpor
|
|
|
5522
5861
|
type: Component,
|
|
5523
5862
|
args: [{ selector: 'sc-month-year-header', imports: [SvgChevronRightIcon, SvgChevronLeftIcon, ScButton], template: `
|
|
5524
5863
|
<button
|
|
5525
|
-
[attr.aria-label]="'Previous month'"
|
|
5526
5864
|
(click)="monthYearChange.emit(-1)"
|
|
5865
|
+
aria-label="Previous month"
|
|
5527
5866
|
sc-button
|
|
5528
5867
|
variant="outline"
|
|
5529
5868
|
type="button"
|
|
@@ -5537,8 +5876,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImpor
|
|
|
5537
5876
|
</button>
|
|
5538
5877
|
|
|
5539
5878
|
<button
|
|
5540
|
-
[attr.aria-label]="'Next month'"
|
|
5541
5879
|
(click)="monthYearChange.emit(1)"
|
|
5880
|
+
aria-label="Next month"
|
|
5542
5881
|
sc-button
|
|
5543
5882
|
variant="outline"
|
|
5544
5883
|
type="button"
|
|
@@ -5552,7 +5891,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImpor
|
|
|
5552
5891
|
}, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush }]
|
|
5553
5892
|
}] });
|
|
5554
5893
|
|
|
5555
|
-
class
|
|
5894
|
+
class ScCalendar {
|
|
5895
|
+
class = input('');
|
|
5896
|
+
classes = computed(() => cn('', this.class()));
|
|
5556
5897
|
localeId = inject(LOCALE_ID);
|
|
5557
5898
|
year = signal(0);
|
|
5558
5899
|
month = signal(0);
|
|
@@ -5657,8 +5998,8 @@ class ScInlineDatePicker {
|
|
|
5657
5998
|
useGrouping: false,
|
|
5658
5999
|
});
|
|
5659
6000
|
}
|
|
5660
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type:
|
|
5661
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
6001
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScCalendar, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
6002
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.0.5", type: ScCalendar, isStandalone: true, selector: "sc-calendar", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "classes()" } }, ngImport: i0, template: `
|
|
5662
6003
|
<div sc-card>
|
|
5663
6004
|
<div sc-card-header>
|
|
5664
6005
|
<sc-month-year-header [monthYear]="monthYear()" (monthYearChange)="setMonthYear($event)" />
|
|
@@ -5679,11 +6020,11 @@ class ScInlineDatePicker {
|
|
|
5679
6020
|
<button sc-button type="button">Done</button>
|
|
5680
6021
|
</div>
|
|
5681
6022
|
</div>
|
|
5682
|
-
`, isInline: true, styles: [""], dependencies: [{ kind: "component", type: ScMonthYearHeader, selector: "sc-month-year-header", inputs: ["monthYear"], outputs: ["monthYearChange"] }, { kind: "component", type: ScMonthDays, selector: "sc-month-days", inputs: ["weekDaysNames", "days", "firstDayMonth", "selectedDay"], outputs: ["selectedDayChange"] }, { kind: "component", type: ScCard, selector: "div[sc-card]", inputs: ["class"] }, { kind: "component", type: ScCardHeader, selector: "div[sc-card-header]", inputs: ["class"] }, { kind: "component", type: ScButton, selector: "button[sc-button], a[sc-button]", inputs: ["variant", "size", "class"] }, { kind: "component", type: ScCardFooter, selector: "div[sc-card-footer]", inputs: ["class"] }, { kind: "component", type: ScCardContent, selector: "div[sc-card-content]", inputs: ["class"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
6023
|
+
`, isInline: true, styles: [""], dependencies: [{ kind: "component", type: ScMonthYearHeader, selector: "sc-month-year-header", inputs: ["class", "monthYear"], outputs: ["monthYearChange"] }, { kind: "component", type: ScMonthDays, selector: "sc-month-days", inputs: ["class", "weekDaysNames", "days", "firstDayMonth", "selectedDay"], outputs: ["selectedDayChange"] }, { kind: "component", type: ScCard, selector: "div[sc-card]", inputs: ["class"] }, { kind: "component", type: ScCardHeader, selector: "div[sc-card-header]", inputs: ["class"] }, { kind: "component", type: ScButton, selector: "button[sc-button], a[sc-button]", inputs: ["variant", "size", "class"] }, { kind: "component", type: ScCardFooter, selector: "div[sc-card-footer]", inputs: ["class"] }, { kind: "component", type: ScCardContent, selector: "div[sc-card-content]", inputs: ["class"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
5683
6024
|
}
|
|
5684
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type:
|
|
6025
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScCalendar, decorators: [{
|
|
5685
6026
|
type: Component,
|
|
5686
|
-
args: [{ selector: 'sc-
|
|
6027
|
+
args: [{ selector: 'sc-calendar', imports: [
|
|
5687
6028
|
ScMonthYearHeader,
|
|
5688
6029
|
ScMonthDays,
|
|
5689
6030
|
ScCard,
|
|
@@ -5712,10 +6053,49 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImpor
|
|
|
5712
6053
|
<button sc-button type="button">Done</button>
|
|
5713
6054
|
</div>
|
|
5714
6055
|
</div>
|
|
5715
|
-
`,
|
|
6056
|
+
`, host: {
|
|
6057
|
+
'[class]': 'classes()',
|
|
6058
|
+
}, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush }]
|
|
6059
|
+
}] });
|
|
6060
|
+
|
|
6061
|
+
class ScFullCalendar {
|
|
6062
|
+
class = input('');
|
|
6063
|
+
classes = computed(() => cn('', this.class()));
|
|
6064
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScFullCalendar, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
6065
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.0.5", type: ScFullCalendar, isStandalone: true, selector: "sc-full-calendar", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "classes()" } }, ngImport: i0, template: `
|
|
6066
|
+
<ng-content />
|
|
6067
|
+
`, isInline: true, styles: [""], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
6068
|
+
}
|
|
6069
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScFullCalendar, decorators: [{
|
|
6070
|
+
type: Component,
|
|
6071
|
+
args: [{ selector: 'sc-full-calendar', imports: [], template: `
|
|
6072
|
+
<ng-content />
|
|
6073
|
+
`, host: {
|
|
6074
|
+
'[class]': 'classes()',
|
|
6075
|
+
}, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush }]
|
|
6076
|
+
}] });
|
|
6077
|
+
|
|
6078
|
+
class ScInput {
|
|
6079
|
+
class = input('');
|
|
6080
|
+
classes = computed(() => cn('flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-base ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 md:text-sm', this.class()));
|
|
6081
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScInput, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
6082
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.0.5", type: ScInput, isStandalone: true, selector: "input[sc-input]", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "classes()" } }, ngImport: i0, template: `
|
|
6083
|
+
<ng-content />
|
|
6084
|
+
`, isInline: true, styles: [""], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
6085
|
+
}
|
|
6086
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScInput, decorators: [{
|
|
6087
|
+
type: Component,
|
|
6088
|
+
args: [{ selector: 'input[sc-input]', imports: [], template: `
|
|
6089
|
+
<ng-content />
|
|
6090
|
+
`, host: {
|
|
6091
|
+
'[class]': 'classes()',
|
|
6092
|
+
}, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush }]
|
|
5716
6093
|
}] });
|
|
5717
6094
|
|
|
5718
6095
|
class ScDatePicker {
|
|
6096
|
+
class = input('');
|
|
6097
|
+
classes = computed(() => cn('flex relative', this.class()));
|
|
6098
|
+
host = inject(ElementRef);
|
|
5719
6099
|
localeId = inject(LOCALE_ID);
|
|
5720
6100
|
dateFormatPattern = signal('');
|
|
5721
6101
|
ngOnInit() {
|
|
@@ -5746,7 +6126,7 @@ class ScDatePicker {
|
|
|
5746
6126
|
_overlay = inject(Overlay);
|
|
5747
6127
|
_isOpen = signal(false);
|
|
5748
6128
|
_input = viewChild('input');
|
|
5749
|
-
_overlayOrigin = viewChild('overlayOrigin');
|
|
6129
|
+
// private readonly _overlayOrigin = viewChild<ElementRef<HTMLDivElement>>('overlayOrigin');
|
|
5750
6130
|
_overlayRef = null;
|
|
5751
6131
|
_portal = null;
|
|
5752
6132
|
/** Emits when the datepicker is opened. */
|
|
@@ -5772,7 +6152,7 @@ class ScDatePicker {
|
|
|
5772
6152
|
const overlayRef = this._getOverlayRef();
|
|
5773
6153
|
//overlayRef.updateSize({ width: this._overlayOrigin()?.nativeElement.offsetWidth });
|
|
5774
6154
|
overlayRef.updateSize({ width: 400 });
|
|
5775
|
-
this._portal ??= new ComponentPortal(
|
|
6155
|
+
this._portal ??= new ComponentPortal(ScCalendar);
|
|
5776
6156
|
overlayRef.attach(this._portal);
|
|
5777
6157
|
this.opened.emit();
|
|
5778
6158
|
}
|
|
@@ -5789,7 +6169,7 @@ class ScDatePicker {
|
|
|
5789
6169
|
if (this._overlayRef) {
|
|
5790
6170
|
return this._overlayRef;
|
|
5791
6171
|
}
|
|
5792
|
-
const _overlayOrigin = this.
|
|
6172
|
+
const _overlayOrigin = this.host;
|
|
5793
6173
|
if (_overlayOrigin === undefined) {
|
|
5794
6174
|
throw new Error('_overlayOrigin is undefined');
|
|
5795
6175
|
}
|
|
@@ -5825,7 +6205,7 @@ class ScDatePicker {
|
|
|
5825
6205
|
});
|
|
5826
6206
|
this._overlayRef.outsidePointerEvents().subscribe((event) => {
|
|
5827
6207
|
const target = _getEventTarget(event);
|
|
5828
|
-
const origin = this.
|
|
6208
|
+
const origin = this.host?.nativeElement;
|
|
5829
6209
|
if (target && target !== origin && !origin?.contains(target)) {
|
|
5830
6210
|
this.close();
|
|
5831
6211
|
}
|
|
@@ -5839,27 +6219,23 @@ class ScDatePicker {
|
|
|
5839
6219
|
this._input()?.nativeElement.focus();
|
|
5840
6220
|
}
|
|
5841
6221
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScDatePicker, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
5842
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "19.0.5", type: ScDatePicker, isStandalone: true, selector: "sc-date-picker",
|
|
5843
|
-
|
|
5844
|
-
|
|
5845
|
-
|
|
5846
|
-
|
|
5847
|
-
|
|
5848
|
-
<input #input sc-input type="text" placeholder="Select date" />
|
|
5849
|
-
</div>
|
|
5850
|
-
`, isInline: true, styles: [""], dependencies: [{ kind: "component", type: ScInput, selector: "input[sc-input]", inputs: ["class"] }, { kind: "component", type: SvgCalendarIcon, selector: "svg-calendar-icon", inputs: ["class", "svgClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
6222
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "19.0.5", type: ScDatePicker, isStandalone: true, selector: "sc-date-picker", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { opened: "opened", closed: "closed", selected: "selected" }, host: { properties: { "class": "classes()" } }, viewQueries: [{ propertyName: "_input", first: true, predicate: ["input"], descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
6223
|
+
<button class="absolute inset-y-0 end-0 pe-4" (click)="open()" sc-button variant="ghost">
|
|
6224
|
+
<svg-calendar-icon />
|
|
6225
|
+
</button>
|
|
6226
|
+
<input #input sc-input type="text" placeholder="Select date" />
|
|
6227
|
+
`, isInline: true, styles: [""], dependencies: [{ kind: "component", type: ScInput, selector: "input[sc-input]", inputs: ["class"] }, { kind: "component", type: SvgCalendarIcon, selector: "svg-calendar-icon", inputs: ["class", "svgClass"] }, { kind: "component", type: ScButton, selector: "button[sc-button], a[sc-button]", inputs: ["variant", "size", "class"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
5851
6228
|
}
|
|
5852
6229
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScDatePicker, decorators: [{
|
|
5853
6230
|
type: Component,
|
|
5854
|
-
args: [{ selector: 'sc-date-picker', imports: [ScInput, SvgCalendarIcon], template: `
|
|
5855
|
-
|
|
5856
|
-
|
|
5857
|
-
|
|
5858
|
-
|
|
5859
|
-
|
|
5860
|
-
|
|
5861
|
-
|
|
5862
|
-
`, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush }]
|
|
6231
|
+
args: [{ selector: 'sc-date-picker', imports: [ScInput, SvgCalendarIcon, ScButton], template: `
|
|
6232
|
+
<button class="absolute inset-y-0 end-0 pe-4" (click)="open()" sc-button variant="ghost">
|
|
6233
|
+
<svg-calendar-icon />
|
|
6234
|
+
</button>
|
|
6235
|
+
<input #input sc-input type="text" placeholder="Select date" />
|
|
6236
|
+
`, host: {
|
|
6237
|
+
'[class]': 'classes()',
|
|
6238
|
+
}, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush }]
|
|
5863
6239
|
}] });
|
|
5864
6240
|
|
|
5865
6241
|
class ScNav {
|
|
@@ -6125,1648 +6501,154 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImpor
|
|
|
6125
6501
|
}, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush }]
|
|
6126
6502
|
}] });
|
|
6127
6503
|
|
|
6128
|
-
class
|
|
6129
|
-
|
|
6130
|
-
|
|
6131
|
-
|
|
6132
|
-
|
|
6133
|
-
|
|
6134
|
-
|
|
6504
|
+
class ScProgress {
|
|
6505
|
+
class = input('');
|
|
6506
|
+
classes = computed(() => cn('block relative h-4 w-full overflow-hidden rounded-full bg-secondary', this.class()));
|
|
6507
|
+
/** Current value of the progressbar. */
|
|
6508
|
+
value = input(0);
|
|
6509
|
+
transform = computed(() => {
|
|
6510
|
+
return `translateX(-${100 - this.value()}%)`;
|
|
6511
|
+
});
|
|
6512
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScProgress, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
6513
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.0.5", type: ScProgress, isStandalone: true, selector: "sc-progress", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "progressbar", "aria-valuemin": "0", "aria-valuemax": "100" }, properties: { "attr.aria-valuenow": "value()", "class": "classes()" } }, ngImport: i0, template: `
|
|
6514
|
+
<div class="size-full flex-1 bg-primary transition-all" [style.transform]="transform()"></div>
|
|
6515
|
+
`, isInline: true, styles: [""], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
6135
6516
|
}
|
|
6136
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type:
|
|
6137
|
-
type:
|
|
6517
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScProgress, decorators: [{
|
|
6518
|
+
type: Component,
|
|
6519
|
+
args: [{ selector: 'sc-progress', imports: [], template: `
|
|
6520
|
+
<div class="size-full flex-1 bg-primary transition-all" [style.transform]="transform()"></div>
|
|
6521
|
+
`, host: {
|
|
6522
|
+
// Sets the role for this component to "progressbar"
|
|
6523
|
+
role: 'progressbar',
|
|
6524
|
+
// Sets the minimum and maximum values for the progressbar role.
|
|
6525
|
+
'aria-valuemin': '0',
|
|
6526
|
+
'aria-valuemax': '100',
|
|
6527
|
+
// Binding that updates the current value of the progressbar.
|
|
6528
|
+
'[attr.aria-valuenow]': 'value()',
|
|
6529
|
+
'[class]': 'classes()',
|
|
6530
|
+
}, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush }]
|
|
6138
6531
|
}] });
|
|
6139
6532
|
|
|
6140
|
-
|
|
6141
|
-
|
|
6142
|
-
|
|
6143
|
-
|
|
6144
|
-
|
|
6533
|
+
const scOverlayClasses = signal([
|
|
6534
|
+
'bg-black/80',
|
|
6535
|
+
'data-[state=open]:animate-in',
|
|
6536
|
+
'data-[state=closed]:animate-out',
|
|
6537
|
+
'data-[state=closed]:fade-out-0',
|
|
6538
|
+
'data-[state=open]:fade-in-0',
|
|
6539
|
+
]);
|
|
6540
|
+
|
|
6541
|
+
class ScSheetContainer {
|
|
6542
|
+
class = input('');
|
|
6543
|
+
classes = computed(() => cn('block size-full', this.class()));
|
|
6544
|
+
templateRef = signal(null);
|
|
6545
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScSheetContainer, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
6546
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.5", type: ScSheetContainer, isStandalone: true, selector: "sc-sheet-container", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "classes()" } }, ngImport: i0, template: `
|
|
6547
|
+
@if (templateRef()) {
|
|
6548
|
+
<ng-container *ngTemplateOutlet="templateRef()"></ng-container>
|
|
6145
6549
|
}
|
|
6146
|
-
|
|
6147
|
-
|
|
6550
|
+
`, isInline: true, styles: [""], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
6551
|
+
}
|
|
6552
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScSheetContainer, decorators: [{
|
|
6553
|
+
type: Component,
|
|
6554
|
+
args: [{ selector: 'sc-sheet-container', imports: [NgTemplateOutlet], template: `
|
|
6555
|
+
@if (templateRef()) {
|
|
6556
|
+
<ng-container *ngTemplateOutlet="templateRef()"></ng-container>
|
|
6557
|
+
}
|
|
6558
|
+
`, host: {
|
|
6559
|
+
'[class]': 'classes()',
|
|
6560
|
+
}, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush }]
|
|
6561
|
+
}] });
|
|
6562
|
+
|
|
6563
|
+
class ScSheetTrigger {
|
|
6564
|
+
_overlayContainer = inject(OverlayContainer);
|
|
6148
6565
|
_overlay = inject(Overlay);
|
|
6149
|
-
|
|
6150
|
-
|
|
6151
|
-
|
|
6152
|
-
scSelectTrigger = viewChild.required('scSelectTrigger');
|
|
6153
|
-
_panelTemplate = viewChild.required('panelTemplate');
|
|
6154
|
-
placeholder = input('');
|
|
6566
|
+
_overlayRef;
|
|
6567
|
+
state = signal('closed');
|
|
6568
|
+
side = signal('right');
|
|
6155
6569
|
constructor() {
|
|
6156
|
-
this.id = ++ScSelect.nextId;
|
|
6157
6570
|
effect(() => {
|
|
6158
|
-
|
|
6159
|
-
|
|
6160
|
-
const closeOverlay = this.state.closeOverlay();
|
|
6161
|
-
if (closeOverlay) {
|
|
6162
|
-
this.close();
|
|
6163
|
-
this.state.closeOverlay.set(false);
|
|
6571
|
+
if (this.state() === 'open') {
|
|
6572
|
+
this._overlayContainer.getContainerElement().classList.add(...scOverlayClasses());
|
|
6164
6573
|
}
|
|
6165
|
-
|
|
6166
|
-
|
|
6167
|
-
_value = signal('');
|
|
6168
|
-
isDisabled = signal(false);
|
|
6169
|
-
writeValue(value) {
|
|
6170
|
-
this._value.set(value);
|
|
6171
|
-
}
|
|
6172
|
-
setValue(value) {
|
|
6173
|
-
this._value.set(value);
|
|
6174
|
-
this._onChange(value);
|
|
6175
|
-
this._cdr.markForCheck();
|
|
6176
|
-
}
|
|
6177
|
-
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
6178
|
-
_onChange = () => { };
|
|
6179
|
-
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
6180
|
-
_onTouched = () => { };
|
|
6181
|
-
registerOnChange(fn) {
|
|
6182
|
-
this._onChange = fn;
|
|
6183
|
-
}
|
|
6184
|
-
registerOnTouched(fn) {
|
|
6185
|
-
this._onTouched = fn;
|
|
6186
|
-
}
|
|
6187
|
-
setDisabledState(isDisabled) {
|
|
6188
|
-
this.isDisabled.set(isDisabled);
|
|
6189
|
-
}
|
|
6190
|
-
label = computed(() => {
|
|
6191
|
-
if (this.state.selectedLabel()) {
|
|
6192
|
-
return this.state.selectedLabel();
|
|
6193
|
-
}
|
|
6194
|
-
return this.placeholder();
|
|
6195
|
-
});
|
|
6196
|
-
_isExpanded = computed(() => {
|
|
6197
|
-
return this.state.isOpen();
|
|
6198
|
-
});
|
|
6199
|
-
_overlayRef = null;
|
|
6200
|
-
_getOverlayRef() {
|
|
6201
|
-
if (this._overlayRef) {
|
|
6202
|
-
return this._overlayRef;
|
|
6203
|
-
}
|
|
6204
|
-
const positionStrategy = this._overlay
|
|
6205
|
-
.position()
|
|
6206
|
-
.flexibleConnectedTo(this.scSelectTrigger())
|
|
6207
|
-
.withFlexibleDimensions(false)
|
|
6208
|
-
.withPush(false)
|
|
6209
|
-
.withPositions([
|
|
6210
|
-
{
|
|
6211
|
-
originX: 'start',
|
|
6212
|
-
originY: 'bottom',
|
|
6213
|
-
overlayX: 'start',
|
|
6214
|
-
overlayY: 'top',
|
|
6215
|
-
offsetY: 8,
|
|
6216
|
-
},
|
|
6217
|
-
{
|
|
6218
|
-
originX: 'start',
|
|
6219
|
-
originY: 'top',
|
|
6220
|
-
overlayX: 'start',
|
|
6221
|
-
overlayY: 'bottom',
|
|
6222
|
-
offsetY: -8,
|
|
6223
|
-
},
|
|
6224
|
-
]);
|
|
6225
|
-
this._overlayRef = this._overlay.create({
|
|
6226
|
-
positionStrategy,
|
|
6227
|
-
scrollStrategy: this._overlay.scrollStrategies.reposition(),
|
|
6228
|
-
direction: this._dir || 'ltr',
|
|
6229
|
-
hasBackdrop: false,
|
|
6230
|
-
});
|
|
6231
|
-
this._overlayRef.keydownEvents().subscribe((event) => {
|
|
6232
|
-
this._handleKeydown(event);
|
|
6233
|
-
});
|
|
6234
|
-
this._overlayRef.outsidePointerEvents().subscribe((event) => {
|
|
6235
|
-
const target = _getEventTarget(event);
|
|
6236
|
-
const origin = this.scSelectTrigger().nativeElement;
|
|
6237
|
-
if (target && target !== origin && !origin.contains(target)) {
|
|
6238
|
-
this.close();
|
|
6574
|
+
if (this.state() === 'closed') {
|
|
6575
|
+
this._overlayContainer.getContainerElement().classList.remove(...scOverlayClasses());
|
|
6239
6576
|
}
|
|
6577
|
+
this._overlayContainer.getContainerElement().setAttribute('data-state', this.state());
|
|
6240
6578
|
});
|
|
6241
|
-
return this._overlayRef;
|
|
6242
6579
|
}
|
|
6243
|
-
open() {
|
|
6244
|
-
|
|
6245
|
-
|
|
6246
|
-
|
|
6247
|
-
this.
|
|
6248
|
-
const
|
|
6249
|
-
|
|
6250
|
-
|
|
6251
|
-
|
|
6580
|
+
open(templateRef, config) {
|
|
6581
|
+
this.state.set('open');
|
|
6582
|
+
this.side.set(config.side);
|
|
6583
|
+
const overlayConfig = this.getOverlayConfig(config);
|
|
6584
|
+
this._overlayRef = this._overlay.create(overlayConfig);
|
|
6585
|
+
const scSheetPortal = new ComponentPortal(ScSheetContainer);
|
|
6586
|
+
const scSheetRef = this._overlayRef.attach(scSheetPortal);
|
|
6587
|
+
scSheetRef.instance.templateRef.set(templateRef);
|
|
6588
|
+
this._overlayRef.backdropClick().subscribe(() => this.close());
|
|
6252
6589
|
}
|
|
6253
6590
|
close() {
|
|
6254
|
-
if (this.
|
|
6255
|
-
this.state.isOpen.set(false);
|
|
6591
|
+
if (this._overlayRef?.hasAttached()) {
|
|
6256
6592
|
this._overlayRef?.detach();
|
|
6593
|
+
this.state.set('closed');
|
|
6257
6594
|
}
|
|
6258
6595
|
}
|
|
6259
|
-
|
|
6260
|
-
|
|
6261
|
-
const keyCode = event.keyCode;
|
|
6262
|
-
if (keyCode === TAB) {
|
|
6263
|
-
this.close();
|
|
6264
|
-
}
|
|
6265
|
-
else if (keyCode === ESCAPE && !hasModifierKey(event)) {
|
|
6266
|
-
event.preventDefault();
|
|
6267
|
-
this.close();
|
|
6268
|
-
}
|
|
6269
|
-
//TODO handle keyCode === ENTER and other cases
|
|
6270
|
-
}
|
|
6271
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScSelect, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
6272
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "19.0.5", type: ScSelect, isStandalone: true, selector: "sc-select", inputs: { placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null } }, providers: [
|
|
6273
|
-
{
|
|
6274
|
-
provide: NG_VALUE_ACCESSOR,
|
|
6275
|
-
useExisting: forwardRef(() => ScSelect),
|
|
6276
|
-
multi: true,
|
|
6277
|
-
},
|
|
6278
|
-
ScSelectState,
|
|
6279
|
-
], viewQueries: [{ propertyName: "scSelectTrigger", first: true, predicate: ["scSelectTrigger"], descendants: true, isSignal: true }, { propertyName: "_panelTemplate", first: true, predicate: ["panelTemplate"], descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
6280
|
-
<button
|
|
6281
|
-
class="flex h-10 w-full items-center justify-between rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1"
|
|
6282
|
-
#scSelectTrigger
|
|
6283
|
-
[disabled]="isDisabled()"
|
|
6284
|
-
[attr.aria-expanded]="_isExpanded()"
|
|
6285
|
-
[attr.aria-controls]="_getPanelId()"
|
|
6286
|
-
(click)="open()"
|
|
6287
|
-
type="button"
|
|
6288
|
-
role="combobox"
|
|
6289
|
-
>
|
|
6290
|
-
{{ label() }}
|
|
6291
|
-
<svg-chevron-down-icon class="size-4 opacity-50" />
|
|
6292
|
-
</button>
|
|
6293
|
-
|
|
6294
|
-
<ng-template #panelTemplate>
|
|
6295
|
-
<div
|
|
6296
|
-
class="relative z-50 max-h-96 w-full min-w-32 overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2"
|
|
6297
|
-
[id]="_getPanelId()"
|
|
6298
|
-
>
|
|
6299
|
-
<ng-content />
|
|
6300
|
-
</div>
|
|
6301
|
-
</ng-template>
|
|
6302
|
-
`, isInline: true, styles: [""], dependencies: [{ kind: "component", type: SvgChevronDownIcon, selector: "svg-chevron-down-icon", inputs: ["class", "svgClass"] }, { kind: "ngmodule", type: OverlayModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
6303
|
-
}
|
|
6304
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScSelect, decorators: [{
|
|
6305
|
-
type: Component,
|
|
6306
|
-
args: [{ selector: 'sc-select', imports: [SvgChevronDownIcon, OverlayModule], template: `
|
|
6307
|
-
<button
|
|
6308
|
-
class="flex h-10 w-full items-center justify-between rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1"
|
|
6309
|
-
#scSelectTrigger
|
|
6310
|
-
[disabled]="isDisabled()"
|
|
6311
|
-
[attr.aria-expanded]="_isExpanded()"
|
|
6312
|
-
[attr.aria-controls]="_getPanelId()"
|
|
6313
|
-
(click)="open()"
|
|
6314
|
-
type="button"
|
|
6315
|
-
role="combobox"
|
|
6316
|
-
>
|
|
6317
|
-
{{ label() }}
|
|
6318
|
-
<svg-chevron-down-icon class="size-4 opacity-50" />
|
|
6319
|
-
</button>
|
|
6320
|
-
|
|
6321
|
-
<ng-template #panelTemplate>
|
|
6322
|
-
<div
|
|
6323
|
-
class="relative z-50 max-h-96 w-full min-w-32 overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2"
|
|
6324
|
-
[id]="_getPanelId()"
|
|
6325
|
-
>
|
|
6326
|
-
<ng-content />
|
|
6327
|
-
</div>
|
|
6328
|
-
</ng-template>
|
|
6329
|
-
`, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [
|
|
6330
|
-
{
|
|
6331
|
-
provide: NG_VALUE_ACCESSOR,
|
|
6332
|
-
useExisting: forwardRef(() => ScSelect),
|
|
6333
|
-
multi: true,
|
|
6334
|
-
},
|
|
6335
|
-
ScSelectState,
|
|
6336
|
-
] }]
|
|
6337
|
-
}], ctorParameters: () => [] });
|
|
6338
|
-
|
|
6339
|
-
class ScOption {
|
|
6340
|
-
state = inject(ScSelectState);
|
|
6341
|
-
value = input.required();
|
|
6342
|
-
label = viewChild.required('label');
|
|
6343
|
-
select() {
|
|
6344
|
-
this.state.selectedValue.set(this.value());
|
|
6345
|
-
this.state.selectedLabel.set(this.label().nativeElement.textContent ?? '');
|
|
6346
|
-
this.state.closeOverlay.set(true);
|
|
6347
|
-
}
|
|
6348
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScOption, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
6349
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.5", type: ScOption, isStandalone: true, selector: "sc-option", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: true, transformFunction: null } }, viewQueries: [{ propertyName: "label", first: true, predicate: ["label"], descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
6350
|
-
<button
|
|
6351
|
-
class="relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50"
|
|
6352
|
-
(click)="select()"
|
|
6353
|
-
type="button"
|
|
6354
|
-
>
|
|
6355
|
-
@if (state.selectedValue() === value()) {
|
|
6356
|
-
<span class="absolute left-2 flex size-3.5 items-center justify-center">
|
|
6357
|
-
<svg-check-icon class="size-4" />
|
|
6358
|
-
</span>
|
|
6359
|
-
}
|
|
6360
|
-
|
|
6361
|
-
<span #label>
|
|
6362
|
-
<ng-content />
|
|
6363
|
-
</span>
|
|
6364
|
-
</button>
|
|
6365
|
-
`, isInline: true, styles: [""], dependencies: [{ kind: "component", type: SvgCheckIcon, selector: "svg-check-icon", inputs: ["class", "svgClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
6366
|
-
}
|
|
6367
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScOption, decorators: [{
|
|
6368
|
-
type: Component,
|
|
6369
|
-
args: [{ selector: 'sc-option', imports: [SvgCheckIcon], template: `
|
|
6370
|
-
<button
|
|
6371
|
-
class="relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50"
|
|
6372
|
-
(click)="select()"
|
|
6373
|
-
type="button"
|
|
6374
|
-
>
|
|
6375
|
-
@if (state.selectedValue() === value()) {
|
|
6376
|
-
<span class="absolute left-2 flex size-3.5 items-center justify-center">
|
|
6377
|
-
<svg-check-icon class="size-4" />
|
|
6378
|
-
</span>
|
|
6379
|
-
}
|
|
6380
|
-
|
|
6381
|
-
<span #label>
|
|
6382
|
-
<ng-content />
|
|
6383
|
-
</span>
|
|
6384
|
-
</button>
|
|
6385
|
-
`, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush }]
|
|
6386
|
-
}] });
|
|
6387
|
-
|
|
6388
|
-
class ScProgress {
|
|
6389
|
-
class = input('');
|
|
6390
|
-
classes = computed(() => cn('block relative h-4 w-full overflow-hidden rounded-full bg-secondary', this.class()));
|
|
6391
|
-
/** Current value of the progressbar. */
|
|
6392
|
-
value = input(0);
|
|
6393
|
-
transform = computed(() => {
|
|
6394
|
-
return `translateX(-${100 - this.value()}%)`;
|
|
6395
|
-
});
|
|
6396
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScProgress, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
6397
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.0.5", type: ScProgress, isStandalone: true, selector: "sc-progress", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "progressbar", "aria-valuemin": "0", "aria-valuemax": "100" }, properties: { "attr.aria-valuenow": "value()", "class": "classes()" } }, ngImport: i0, template: `
|
|
6398
|
-
<div class="size-full flex-1 bg-primary transition-all" [style.transform]="transform()"></div>
|
|
6399
|
-
`, isInline: true, styles: [""], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
6400
|
-
}
|
|
6401
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScProgress, decorators: [{
|
|
6402
|
-
type: Component,
|
|
6403
|
-
args: [{ selector: 'sc-progress', imports: [], template: `
|
|
6404
|
-
<div class="size-full flex-1 bg-primary transition-all" [style.transform]="transform()"></div>
|
|
6405
|
-
`, host: {
|
|
6406
|
-
// Sets the role for this component to "progressbar"
|
|
6407
|
-
role: 'progressbar',
|
|
6408
|
-
// Sets the minimum and maximum values for the progressbar role.
|
|
6409
|
-
'aria-valuemin': '0',
|
|
6410
|
-
'aria-valuemax': '100',
|
|
6411
|
-
// Binding that updates the current value of the progressbar.
|
|
6412
|
-
'[attr.aria-valuenow]': 'value()',
|
|
6413
|
-
'[class]': 'classes()',
|
|
6414
|
-
}, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush }]
|
|
6415
|
-
}] });
|
|
6416
|
-
|
|
6417
|
-
class ScSheetTrigger {
|
|
6418
|
-
_overlayContainer = inject(OverlayContainer);
|
|
6419
|
-
overlay = inject(Overlay);
|
|
6420
|
-
overlayRef;
|
|
6421
|
-
open = signal(false);
|
|
6422
|
-
openSheet() {
|
|
6423
|
-
const side = 'left';
|
|
6424
|
-
this._overlayContainer.getContainerElement().classList.add('sc-overlay-container');
|
|
6425
|
-
const positionStrategy = this.getPositionStrategy(side);
|
|
6426
|
-
this.overlayRef = this.overlay.create({ positionStrategy });
|
|
6427
|
-
this.updateSize(side);
|
|
6428
|
-
const tooltipPortal = new ComponentPortal(ScSheet);
|
|
6429
|
-
const tooltipRef = this.overlayRef.attach(tooltipPortal);
|
|
6430
|
-
tooltipRef.instance.side.set(side);
|
|
6431
|
-
}
|
|
6432
|
-
toggle() {
|
|
6433
|
-
if (this.overlayRef?.hasAttached() === true) {
|
|
6434
|
-
this.overlayRef?.detach();
|
|
6435
|
-
this.open.set(false);
|
|
6436
|
-
this._overlayContainer.getContainerElement().classList.remove('sc-overlay-container');
|
|
6437
|
-
}
|
|
6438
|
-
else {
|
|
6439
|
-
this.openSheet();
|
|
6440
|
-
this.open.set(true);
|
|
6441
|
-
}
|
|
6442
|
-
}
|
|
6443
|
-
getPositionStrategy(side) {
|
|
6444
|
-
return this.overlay
|
|
6445
|
-
.position()
|
|
6446
|
-
.flexibleConnectedTo(this._overlayContainer.getContainerElement())
|
|
6447
|
-
.withPositions(this.getPositions(side));
|
|
6448
|
-
}
|
|
6449
|
-
getPositions(side) {
|
|
6450
|
-
switch (side) {
|
|
6451
|
-
case 'top': {
|
|
6452
|
-
return [
|
|
6453
|
-
{
|
|
6454
|
-
originX: 'start',
|
|
6455
|
-
originY: 'top',
|
|
6456
|
-
overlayX: 'start',
|
|
6457
|
-
overlayY: 'top',
|
|
6458
|
-
},
|
|
6459
|
-
];
|
|
6460
|
-
}
|
|
6461
|
-
case 'bottom': {
|
|
6462
|
-
return [
|
|
6463
|
-
{
|
|
6464
|
-
originX: 'end',
|
|
6465
|
-
originY: 'bottom',
|
|
6466
|
-
overlayX: 'end',
|
|
6467
|
-
overlayY: 'bottom',
|
|
6468
|
-
},
|
|
6469
|
-
];
|
|
6470
|
-
}
|
|
6471
|
-
case 'left': {
|
|
6472
|
-
return [
|
|
6473
|
-
{
|
|
6474
|
-
originX: 'start',
|
|
6475
|
-
originY: 'top',
|
|
6476
|
-
overlayX: 'start',
|
|
6477
|
-
overlayY: 'top',
|
|
6478
|
-
},
|
|
6479
|
-
];
|
|
6480
|
-
}
|
|
6481
|
-
case 'right': {
|
|
6482
|
-
return [
|
|
6483
|
-
{
|
|
6484
|
-
originX: 'end',
|
|
6485
|
-
originY: 'top',
|
|
6486
|
-
overlayX: 'end',
|
|
6487
|
-
overlayY: 'top',
|
|
6488
|
-
},
|
|
6489
|
-
];
|
|
6490
|
-
}
|
|
6491
|
-
default: {
|
|
6492
|
-
throw new Error('Error in switch case');
|
|
6493
|
-
}
|
|
6494
|
-
}
|
|
6495
|
-
}
|
|
6496
|
-
updateSize(side) {
|
|
6497
|
-
switch (side) {
|
|
6596
|
+
getOverlayConfig(config) {
|
|
6597
|
+
switch (config.side) {
|
|
6498
6598
|
case 'top': {
|
|
6499
|
-
|
|
6500
|
-
|
|
6599
|
+
return new OverlayConfig({
|
|
6600
|
+
positionStrategy: this._overlay.position().global().top(),
|
|
6601
|
+
width: config.width,
|
|
6602
|
+
height: config.height,
|
|
6603
|
+
hasBackdrop: true,
|
|
6604
|
+
});
|
|
6501
6605
|
}
|
|
6502
6606
|
case 'bottom': {
|
|
6503
|
-
|
|
6504
|
-
|
|
6607
|
+
return new OverlayConfig({
|
|
6608
|
+
positionStrategy: this._overlay.position().global().bottom(),
|
|
6609
|
+
width: config.width,
|
|
6610
|
+
height: config.height,
|
|
6611
|
+
hasBackdrop: true,
|
|
6612
|
+
});
|
|
6505
6613
|
}
|
|
6506
6614
|
case 'left': {
|
|
6507
|
-
|
|
6508
|
-
|
|
6615
|
+
return new OverlayConfig({
|
|
6616
|
+
positionStrategy: this._overlay.position().global().left(),
|
|
6617
|
+
width: config.width,
|
|
6618
|
+
height: config.height,
|
|
6619
|
+
hasBackdrop: true,
|
|
6620
|
+
});
|
|
6509
6621
|
}
|
|
6510
6622
|
case 'right': {
|
|
6511
|
-
|
|
6512
|
-
|
|
6623
|
+
return new OverlayConfig({
|
|
6624
|
+
positionStrategy: this._overlay.position().global().right(),
|
|
6625
|
+
width: config.width,
|
|
6626
|
+
height: config.height,
|
|
6627
|
+
hasBackdrop: true,
|
|
6628
|
+
});
|
|
6513
6629
|
}
|
|
6514
6630
|
default: {
|
|
6515
|
-
throw new Error('Error in switch case');
|
|
6516
|
-
}
|
|
6517
|
-
}
|
|
6518
|
-
}
|
|
6519
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScSheetTrigger, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
6520
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScSheetTrigger, providedIn: 'root' });
|
|
6521
|
-
}
|
|
6522
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScSheetTrigger, decorators: [{
|
|
6523
|
-
type: Injectable,
|
|
6524
|
-
args: [{
|
|
6525
|
-
providedIn: 'root',
|
|
6526
|
-
}]
|
|
6527
|
-
}] });
|
|
6528
|
-
|
|
6529
|
-
class ScSheetToggler {
|
|
6530
|
-
sidebarState = inject(ScSheetTrigger);
|
|
6531
|
-
class = input('');
|
|
6532
|
-
classes = computed(() => cn('', this.class()));
|
|
6533
|
-
toggle() {
|
|
6534
|
-
this.sidebarState.toggle();
|
|
6535
|
-
}
|
|
6536
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScSheetToggler, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
6537
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.5", type: ScSheetToggler, isStandalone: true, selector: "sc-sheet-toggler", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
|
|
6538
|
-
<button
|
|
6539
|
-
[class]="classes()"
|
|
6540
|
-
(click)="toggle()"
|
|
6541
|
-
sc-button
|
|
6542
|
-
data-sidebar="trigger"
|
|
6543
|
-
variant="ghost"
|
|
6544
|
-
size="icon"
|
|
6545
|
-
type="button"
|
|
6546
|
-
>
|
|
6547
|
-
@if (sidebarState.open()) {
|
|
6548
|
-
<svg-x-icon />
|
|
6549
|
-
}
|
|
6550
|
-
|
|
6551
|
-
@if (!sidebarState.open()) {
|
|
6552
|
-
<svg-menu-icon />
|
|
6553
|
-
}
|
|
6554
|
-
|
|
6555
|
-
<span class="sr-only">Toggle Sidebar</span>
|
|
6556
|
-
</button>
|
|
6557
|
-
`, isInline: true, styles: [""], dependencies: [{ kind: "component", type: ScButton, selector: "button[sc-button], a[sc-button]", inputs: ["variant", "size", "class"] }, { kind: "component", type: SvgMenuIcon, selector: "svg-menu-icon", inputs: ["class", "svgClass"] }, { kind: "component", type: SvgXIcon, selector: "svg-x-icon", inputs: ["class", "svgClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
6558
|
-
}
|
|
6559
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScSheetToggler, decorators: [{
|
|
6560
|
-
type: Component,
|
|
6561
|
-
args: [{ selector: 'sc-sheet-toggler', imports: [ScButton, SvgMenuIcon, SvgXIcon], template: `
|
|
6562
|
-
<button
|
|
6563
|
-
[class]="classes()"
|
|
6564
|
-
(click)="toggle()"
|
|
6565
|
-
sc-button
|
|
6566
|
-
data-sidebar="trigger"
|
|
6567
|
-
variant="ghost"
|
|
6568
|
-
size="icon"
|
|
6569
|
-
type="button"
|
|
6570
|
-
>
|
|
6571
|
-
@if (sidebarState.open()) {
|
|
6572
|
-
<svg-x-icon />
|
|
6573
|
-
}
|
|
6574
|
-
|
|
6575
|
-
@if (!sidebarState.open()) {
|
|
6576
|
-
<svg-menu-icon />
|
|
6577
|
-
}
|
|
6578
|
-
|
|
6579
|
-
<span class="sr-only">Toggle Sidebar</span>
|
|
6580
|
-
</button>
|
|
6581
|
-
`, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush }]
|
|
6582
|
-
}] });
|
|
6583
|
-
|
|
6584
|
-
class ScScrollArea {
|
|
6585
|
-
host = inject(ElementRef);
|
|
6586
|
-
class = input('');
|
|
6587
|
-
classes = computed(() => cn('', this.class()));
|
|
6588
|
-
visibility = input('native');
|
|
6589
|
-
//TODO remove use of ngAfterViewInit
|
|
6590
|
-
ngAfterViewInit() {
|
|
6591
|
-
const height = this.host.nativeElement.scrollHeight;
|
|
6592
|
-
console.log(height);
|
|
6593
|
-
}
|
|
6594
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScScrollArea, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
6595
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.0.5", type: ScScrollArea, isStandalone: true, selector: "div[sc-scroll-area]", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, visibility: { classPropertyName: "visibility", publicName: "visibility", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "classes()" } }, ngImport: i0, template: `
|
|
6596
|
-
<ng-scrollbar
|
|
6597
|
-
[visibility]="visibility()"
|
|
6598
|
-
[style]="{
|
|
6599
|
-
'--scrollbar-border-radius': '100px',
|
|
6600
|
-
'--scrollbar-padding': '1px',
|
|
6601
|
-
'--scrollbar-thumb-color': 'hsl(var(--border))',
|
|
6602
|
-
'--scrollbar-thumb-hover-color': 'hsl(var(--border))',
|
|
6603
|
-
'--scrollbar-size': '7px',
|
|
6604
|
-
}"
|
|
6605
|
-
>
|
|
6606
|
-
<ng-content />
|
|
6607
|
-
</ng-scrollbar>
|
|
6608
|
-
`, isInline: true, styles: [""], dependencies: [{ kind: "ngmodule", type: NgScrollbarModule }, { kind: "component", type: i1$1.NgScrollbar, selector: "ng-scrollbar:not([externalViewport])", exportAs: ["ngScrollbar"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
6609
|
-
}
|
|
6610
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScScrollArea, decorators: [{
|
|
6611
|
-
type: Component,
|
|
6612
|
-
args: [{ selector: 'div[sc-scroll-area]', imports: [NgScrollbarModule], template: `
|
|
6613
|
-
<ng-scrollbar
|
|
6614
|
-
[visibility]="visibility()"
|
|
6615
|
-
[style]="{
|
|
6616
|
-
'--scrollbar-border-radius': '100px',
|
|
6617
|
-
'--scrollbar-padding': '1px',
|
|
6618
|
-
'--scrollbar-thumb-color': 'hsl(var(--border))',
|
|
6619
|
-
'--scrollbar-thumb-hover-color': 'hsl(var(--border))',
|
|
6620
|
-
'--scrollbar-size': '7px',
|
|
6621
|
-
}"
|
|
6622
|
-
>
|
|
6623
|
-
<ng-content />
|
|
6624
|
-
</ng-scrollbar>
|
|
6625
|
-
`, host: {
|
|
6626
|
-
'[class]': 'classes()',
|
|
6627
|
-
}, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush }]
|
|
6628
|
-
}] });
|
|
6629
|
-
|
|
6630
|
-
class SidebarContent {
|
|
6631
|
-
class = input('');
|
|
6632
|
-
classes = computed(() => cn('flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden', this.class()));
|
|
6633
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: SidebarContent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
6634
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.0.5", type: SidebarContent, isStandalone: true, selector: "app-sidebar-content", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "classes()" } }, ngImport: i0, template: `
|
|
6635
|
-
<div class="w-full pl-5 pt-5" sc-scroll-area>
|
|
6636
|
-
<div class="pb-4">
|
|
6637
|
-
<h4 class="mb-1 rounded-md px-2 py-1 text-sm font-semibold">Getting Started</h4>
|
|
6638
|
-
<div class="grid grid-flow-row auto-rows-max gap-0.5 text-sm">
|
|
6639
|
-
<a
|
|
6640
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
6641
|
-
target=""
|
|
6642
|
-
rel=""
|
|
6643
|
-
href="/docs"
|
|
6644
|
-
>
|
|
6645
|
-
Introduction
|
|
6646
|
-
</a>
|
|
6647
|
-
<a
|
|
6648
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
6649
|
-
target=""
|
|
6650
|
-
rel=""
|
|
6651
|
-
href="/docs/installation"
|
|
6652
|
-
>
|
|
6653
|
-
Installation
|
|
6654
|
-
</a>
|
|
6655
|
-
<a
|
|
6656
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
6657
|
-
target=""
|
|
6658
|
-
rel=""
|
|
6659
|
-
href="/docs/components-json"
|
|
6660
|
-
>
|
|
6661
|
-
components.json
|
|
6662
|
-
</a>
|
|
6663
|
-
<a
|
|
6664
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
6665
|
-
target=""
|
|
6666
|
-
rel=""
|
|
6667
|
-
href="/docs/theming"
|
|
6668
|
-
>
|
|
6669
|
-
Theming
|
|
6670
|
-
</a>
|
|
6671
|
-
<a
|
|
6672
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
6673
|
-
target=""
|
|
6674
|
-
rel=""
|
|
6675
|
-
href="/docs/dark-mode"
|
|
6676
|
-
>
|
|
6677
|
-
Dark mode
|
|
6678
|
-
</a>
|
|
6679
|
-
<a
|
|
6680
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
6681
|
-
target=""
|
|
6682
|
-
rel=""
|
|
6683
|
-
href="/docs/cli"
|
|
6684
|
-
>
|
|
6685
|
-
CLI
|
|
6686
|
-
</a>
|
|
6687
|
-
<a
|
|
6688
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
6689
|
-
target=""
|
|
6690
|
-
rel=""
|
|
6691
|
-
href="/docs/react-19"
|
|
6692
|
-
>
|
|
6693
|
-
Next.js 15 + React 19
|
|
6694
|
-
</a>
|
|
6695
|
-
<a
|
|
6696
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
6697
|
-
target=""
|
|
6698
|
-
rel=""
|
|
6699
|
-
href="/docs/components/typography"
|
|
6700
|
-
>
|
|
6701
|
-
Typography
|
|
6702
|
-
</a>
|
|
6703
|
-
<a
|
|
6704
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
6705
|
-
target=""
|
|
6706
|
-
rel=""
|
|
6707
|
-
href="/docs/v0"
|
|
6708
|
-
>
|
|
6709
|
-
Open in v0
|
|
6710
|
-
</a>
|
|
6711
|
-
<a
|
|
6712
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
6713
|
-
target=""
|
|
6714
|
-
rel=""
|
|
6715
|
-
href="/docs/figma"
|
|
6716
|
-
>
|
|
6717
|
-
Figma
|
|
6718
|
-
</a>
|
|
6719
|
-
<a
|
|
6720
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
6721
|
-
target=""
|
|
6722
|
-
rel=""
|
|
6723
|
-
href="/docs/changelog"
|
|
6724
|
-
>
|
|
6725
|
-
Changelog
|
|
6726
|
-
</a>
|
|
6727
|
-
</div>
|
|
6728
|
-
</div>
|
|
6729
|
-
<div class="pb-4">
|
|
6730
|
-
<h4 class="mb-1 rounded-md px-2 py-1 text-sm font-semibold">Installation</h4>
|
|
6731
|
-
<div class="grid grid-flow-row auto-rows-max gap-0.5 text-sm">
|
|
6732
|
-
<a
|
|
6733
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
6734
|
-
target=""
|
|
6735
|
-
rel=""
|
|
6736
|
-
href="/docs/installation/next"
|
|
6737
|
-
>
|
|
6738
|
-
Next.js
|
|
6739
|
-
</a>
|
|
6740
|
-
<a
|
|
6741
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
6742
|
-
target=""
|
|
6743
|
-
rel=""
|
|
6744
|
-
href="/docs/installation/vite"
|
|
6745
|
-
>
|
|
6746
|
-
Vite
|
|
6747
|
-
</a>
|
|
6748
|
-
<a
|
|
6749
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
6750
|
-
target=""
|
|
6751
|
-
rel=""
|
|
6752
|
-
href="/docs/installation/remix"
|
|
6753
|
-
>
|
|
6754
|
-
Remix
|
|
6755
|
-
</a>
|
|
6756
|
-
<a
|
|
6757
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
6758
|
-
target=""
|
|
6759
|
-
rel=""
|
|
6760
|
-
href="/docs/installation/astro"
|
|
6761
|
-
>
|
|
6762
|
-
Astro
|
|
6763
|
-
</a>
|
|
6764
|
-
<a
|
|
6765
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
6766
|
-
target=""
|
|
6767
|
-
rel=""
|
|
6768
|
-
href="/docs/installation/laravel"
|
|
6769
|
-
>
|
|
6770
|
-
Laravel
|
|
6771
|
-
</a>
|
|
6772
|
-
<a
|
|
6773
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
6774
|
-
target=""
|
|
6775
|
-
rel=""
|
|
6776
|
-
href="/docs/installation/gatsby"
|
|
6777
|
-
>
|
|
6778
|
-
Gatsby
|
|
6779
|
-
</a>
|
|
6780
|
-
<a
|
|
6781
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
6782
|
-
target=""
|
|
6783
|
-
rel=""
|
|
6784
|
-
href="/docs/installation/manual"
|
|
6785
|
-
>
|
|
6786
|
-
Manual
|
|
6787
|
-
</a>
|
|
6788
|
-
</div>
|
|
6789
|
-
</div>
|
|
6790
|
-
<div class="pb-4">
|
|
6791
|
-
<h4 class="mb-1 rounded-md px-2 py-1 text-sm font-semibold">Components</h4>
|
|
6792
|
-
<div class="grid grid-flow-row auto-rows-max gap-0.5 text-sm">
|
|
6793
|
-
<a
|
|
6794
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline underline-offset-2 hover:underline"
|
|
6795
|
-
routerLink="/editor"
|
|
6796
|
-
>
|
|
6797
|
-
Editor
|
|
6798
|
-
</a>
|
|
6799
|
-
<a
|
|
6800
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline underline-offset-2 hover:underline"
|
|
6801
|
-
routerLink="/theme-toggler"
|
|
6802
|
-
>
|
|
6803
|
-
Theme toggler
|
|
6804
|
-
</a>
|
|
6805
|
-
<a
|
|
6806
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline underline-offset-2 hover:underline"
|
|
6807
|
-
routerLink="/dropdown"
|
|
6808
|
-
>
|
|
6809
|
-
Dropdown
|
|
6810
|
-
</a>
|
|
6811
|
-
<a
|
|
6812
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
6813
|
-
target=""
|
|
6814
|
-
rel=""
|
|
6815
|
-
href="/docs/components/sidebar"
|
|
6816
|
-
>
|
|
6817
|
-
Sidebar
|
|
6818
|
-
<span
|
|
6819
|
-
class="ml-2 rounded-md bg-[#adfa1d] px-1.5 py-0.5 text-xs leading-none text-[#000000] no-underline group-hover:no-underline"
|
|
6820
|
-
>
|
|
6821
|
-
New
|
|
6822
|
-
</span>
|
|
6823
|
-
</a>
|
|
6824
|
-
|
|
6825
|
-
<a
|
|
6826
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline underline-offset-2 hover:underline"
|
|
6827
|
-
target=""
|
|
6828
|
-
rel=""
|
|
6829
|
-
href="/docs/components/accordion"
|
|
6830
|
-
>
|
|
6831
|
-
Accordion
|
|
6832
|
-
</a>
|
|
6833
|
-
<a
|
|
6834
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
6835
|
-
target=""
|
|
6836
|
-
rel=""
|
|
6837
|
-
href="/docs/components/alert"
|
|
6838
|
-
>
|
|
6839
|
-
Alert
|
|
6840
|
-
</a>
|
|
6841
|
-
<a
|
|
6842
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
6843
|
-
routerLink="/alert-dialog"
|
|
6844
|
-
>
|
|
6845
|
-
Alert Dialog
|
|
6846
|
-
</a>
|
|
6847
|
-
<a
|
|
6848
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
6849
|
-
target=""
|
|
6850
|
-
rel=""
|
|
6851
|
-
href="/docs/components/aspect-ratio"
|
|
6852
|
-
>
|
|
6853
|
-
Aspect Ratio
|
|
6854
|
-
</a>
|
|
6855
|
-
<a
|
|
6856
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
6857
|
-
target=""
|
|
6858
|
-
rel=""
|
|
6859
|
-
href="/docs/components/avatar"
|
|
6860
|
-
>
|
|
6861
|
-
Avatar
|
|
6862
|
-
</a>
|
|
6863
|
-
<a
|
|
6864
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
6865
|
-
target=""
|
|
6866
|
-
rel=""
|
|
6867
|
-
href="/docs/components/badge"
|
|
6868
|
-
>
|
|
6869
|
-
Badge
|
|
6870
|
-
</a>
|
|
6871
|
-
<a
|
|
6872
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
6873
|
-
routerLink="/breadcrumb"
|
|
6874
|
-
>
|
|
6875
|
-
Breadcrumb
|
|
6876
|
-
</a>
|
|
6877
|
-
<a
|
|
6878
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
6879
|
-
routerLink="/button"
|
|
6880
|
-
>
|
|
6881
|
-
Button
|
|
6882
|
-
</a>
|
|
6883
|
-
<a
|
|
6884
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
6885
|
-
routerLink="/date-picker"
|
|
6886
|
-
>
|
|
6887
|
-
Calendar
|
|
6888
|
-
</a>
|
|
6889
|
-
<a
|
|
6890
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
6891
|
-
target=""
|
|
6892
|
-
rel=""
|
|
6893
|
-
href="/docs/components/card"
|
|
6894
|
-
>
|
|
6895
|
-
Card
|
|
6896
|
-
</a>
|
|
6897
|
-
<a
|
|
6898
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
6899
|
-
target=""
|
|
6900
|
-
rel=""
|
|
6901
|
-
href="/docs/components/carousel"
|
|
6902
|
-
>
|
|
6903
|
-
Carousel
|
|
6904
|
-
</a>
|
|
6905
|
-
<a
|
|
6906
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
6907
|
-
target=""
|
|
6908
|
-
rel=""
|
|
6909
|
-
href="/docs/components/chart"
|
|
6910
|
-
>
|
|
6911
|
-
Chart
|
|
6912
|
-
</a>
|
|
6913
|
-
<a
|
|
6914
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
6915
|
-
target=""
|
|
6916
|
-
rel=""
|
|
6917
|
-
href="/docs/components/checkbox"
|
|
6918
|
-
>
|
|
6919
|
-
Checkbox
|
|
6920
|
-
</a>
|
|
6921
|
-
<a
|
|
6922
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
6923
|
-
target=""
|
|
6924
|
-
rel=""
|
|
6925
|
-
href="/docs/components/collapsible"
|
|
6926
|
-
>
|
|
6927
|
-
Collapsible
|
|
6928
|
-
</a>
|
|
6929
|
-
<a
|
|
6930
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
6931
|
-
target=""
|
|
6932
|
-
rel=""
|
|
6933
|
-
href="/docs/components/combobox"
|
|
6934
|
-
>
|
|
6935
|
-
Combobox
|
|
6936
|
-
</a>
|
|
6937
|
-
<a
|
|
6938
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
6939
|
-
target=""
|
|
6940
|
-
rel=""
|
|
6941
|
-
href="/docs/components/command"
|
|
6942
|
-
>
|
|
6943
|
-
Command
|
|
6944
|
-
</a>
|
|
6945
|
-
<a
|
|
6946
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
6947
|
-
target=""
|
|
6948
|
-
rel=""
|
|
6949
|
-
href="/docs/components/context-menu"
|
|
6950
|
-
>
|
|
6951
|
-
Context Menu
|
|
6952
|
-
</a>
|
|
6953
|
-
<a
|
|
6954
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
6955
|
-
target=""
|
|
6956
|
-
rel=""
|
|
6957
|
-
href="/docs/components/data-table"
|
|
6958
|
-
>
|
|
6959
|
-
Data Table
|
|
6960
|
-
</a>
|
|
6961
|
-
<a
|
|
6962
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
6963
|
-
routerLink="/date-picker"
|
|
6964
|
-
>
|
|
6965
|
-
Date Picker
|
|
6966
|
-
</a>
|
|
6967
|
-
<a
|
|
6968
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
6969
|
-
routerLink="/dialog"
|
|
6970
|
-
>
|
|
6971
|
-
Dialog
|
|
6972
|
-
</a>
|
|
6973
|
-
<a
|
|
6974
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
6975
|
-
target=""
|
|
6976
|
-
rel=""
|
|
6977
|
-
href="/docs/components/drawer"
|
|
6978
|
-
>
|
|
6979
|
-
Drawer
|
|
6980
|
-
</a>
|
|
6981
|
-
<a
|
|
6982
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
6983
|
-
target=""
|
|
6984
|
-
rel=""
|
|
6985
|
-
href="/docs/components/dropdown-menu"
|
|
6986
|
-
>
|
|
6987
|
-
Dropdown Menu
|
|
6988
|
-
</a>
|
|
6989
|
-
<a
|
|
6990
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
6991
|
-
target=""
|
|
6992
|
-
rel=""
|
|
6993
|
-
href="/docs/components/form"
|
|
6994
|
-
>
|
|
6995
|
-
Form
|
|
6996
|
-
</a>
|
|
6997
|
-
<a
|
|
6998
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
6999
|
-
target=""
|
|
7000
|
-
rel=""
|
|
7001
|
-
href="/docs/components/hover-card"
|
|
7002
|
-
>
|
|
7003
|
-
Hover Card
|
|
7004
|
-
</a>
|
|
7005
|
-
<a
|
|
7006
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7007
|
-
target=""
|
|
7008
|
-
rel=""
|
|
7009
|
-
href="/docs/components/input"
|
|
7010
|
-
>
|
|
7011
|
-
Input
|
|
7012
|
-
</a>
|
|
7013
|
-
<a
|
|
7014
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7015
|
-
target=""
|
|
7016
|
-
rel=""
|
|
7017
|
-
href="/docs/components/input-otp"
|
|
7018
|
-
>
|
|
7019
|
-
Input OTP
|
|
7020
|
-
</a>
|
|
7021
|
-
<a
|
|
7022
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7023
|
-
target=""
|
|
7024
|
-
rel=""
|
|
7025
|
-
href="/docs/components/label"
|
|
7026
|
-
>
|
|
7027
|
-
Label
|
|
7028
|
-
</a>
|
|
7029
|
-
<a
|
|
7030
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7031
|
-
target=""
|
|
7032
|
-
rel=""
|
|
7033
|
-
href="/docs/components/menubar"
|
|
7034
|
-
>
|
|
7035
|
-
Menubar
|
|
7036
|
-
</a>
|
|
7037
|
-
<a
|
|
7038
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7039
|
-
routerLink="/nav"
|
|
7040
|
-
>
|
|
7041
|
-
Navigation Menu
|
|
7042
|
-
</a>
|
|
7043
|
-
<a
|
|
7044
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7045
|
-
routerLink="/paginator"
|
|
7046
|
-
>
|
|
7047
|
-
Pagination
|
|
7048
|
-
</a>
|
|
7049
|
-
<a
|
|
7050
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7051
|
-
target=""
|
|
7052
|
-
rel=""
|
|
7053
|
-
href="/docs/components/popover"
|
|
7054
|
-
>
|
|
7055
|
-
Popover
|
|
7056
|
-
</a>
|
|
7057
|
-
<a
|
|
7058
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7059
|
-
routerLink="/progress"
|
|
7060
|
-
>
|
|
7061
|
-
Progress
|
|
7062
|
-
</a>
|
|
7063
|
-
<a
|
|
7064
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7065
|
-
target=""
|
|
7066
|
-
rel=""
|
|
7067
|
-
href="/docs/components/radio-group"
|
|
7068
|
-
>
|
|
7069
|
-
Radio Group
|
|
7070
|
-
</a>
|
|
7071
|
-
<a
|
|
7072
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7073
|
-
target=""
|
|
7074
|
-
rel=""
|
|
7075
|
-
href="/docs/components/resizable"
|
|
7076
|
-
>
|
|
7077
|
-
Resizable
|
|
7078
|
-
</a>
|
|
7079
|
-
<a
|
|
7080
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7081
|
-
target=""
|
|
7082
|
-
rel=""
|
|
7083
|
-
href="/docs/components/scroll-area"
|
|
7084
|
-
>
|
|
7085
|
-
Scroll Area
|
|
7086
|
-
</a>
|
|
7087
|
-
<a
|
|
7088
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7089
|
-
routerLink="/select"
|
|
7090
|
-
>
|
|
7091
|
-
Select
|
|
7092
|
-
</a>
|
|
7093
|
-
<a
|
|
7094
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7095
|
-
target=""
|
|
7096
|
-
rel=""
|
|
7097
|
-
href="/docs/components/separator"
|
|
7098
|
-
>
|
|
7099
|
-
Separator
|
|
7100
|
-
</a>
|
|
7101
|
-
<a
|
|
7102
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7103
|
-
target=""
|
|
7104
|
-
rel=""
|
|
7105
|
-
href="/docs/components/sheet"
|
|
7106
|
-
>
|
|
7107
|
-
Sheet
|
|
7108
|
-
</a>
|
|
7109
|
-
<a
|
|
7110
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7111
|
-
target=""
|
|
7112
|
-
rel=""
|
|
7113
|
-
href="/docs/components/skeleton"
|
|
7114
|
-
>
|
|
7115
|
-
Skeleton
|
|
7116
|
-
</a>
|
|
7117
|
-
<a
|
|
7118
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7119
|
-
target=""
|
|
7120
|
-
rel=""
|
|
7121
|
-
href="/docs/components/slider"
|
|
7122
|
-
>
|
|
7123
|
-
Slider
|
|
7124
|
-
</a>
|
|
7125
|
-
<a
|
|
7126
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7127
|
-
target=""
|
|
7128
|
-
rel=""
|
|
7129
|
-
href="/docs/components/sonner"
|
|
7130
|
-
>
|
|
7131
|
-
Sonner
|
|
7132
|
-
</a>
|
|
7133
|
-
<a
|
|
7134
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7135
|
-
target=""
|
|
7136
|
-
rel=""
|
|
7137
|
-
href="/docs/components/switch"
|
|
7138
|
-
>
|
|
7139
|
-
Switch
|
|
7140
|
-
</a>
|
|
7141
|
-
<a
|
|
7142
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7143
|
-
target=""
|
|
7144
|
-
rel=""
|
|
7145
|
-
href="/docs/components/table"
|
|
7146
|
-
>
|
|
7147
|
-
Table
|
|
7148
|
-
</a>
|
|
7149
|
-
<a
|
|
7150
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7151
|
-
routerLink="/editor"
|
|
7152
|
-
>
|
|
7153
|
-
Tabs
|
|
7154
|
-
</a>
|
|
7155
|
-
<a
|
|
7156
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7157
|
-
target=""
|
|
7158
|
-
rel=""
|
|
7159
|
-
href="/docs/components/textarea"
|
|
7160
|
-
>
|
|
7161
|
-
Textarea
|
|
7162
|
-
</a>
|
|
7163
|
-
<a
|
|
7164
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7165
|
-
target=""
|
|
7166
|
-
rel=""
|
|
7167
|
-
href="/docs/components/toast"
|
|
7168
|
-
>
|
|
7169
|
-
Toast
|
|
7170
|
-
</a>
|
|
7171
|
-
<a
|
|
7172
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7173
|
-
routerLink="/nav"
|
|
7174
|
-
>
|
|
7175
|
-
Toggle
|
|
7176
|
-
</a>
|
|
7177
|
-
<a
|
|
7178
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7179
|
-
target=""
|
|
7180
|
-
rel=""
|
|
7181
|
-
href="/docs/components/toggle-group"
|
|
7182
|
-
>
|
|
7183
|
-
Toggle Group
|
|
7184
|
-
</a>
|
|
7185
|
-
<a
|
|
7186
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7187
|
-
routerLink="/tooltip"
|
|
7188
|
-
>
|
|
7189
|
-
Tooltip
|
|
7190
|
-
</a>
|
|
7191
|
-
</div>
|
|
7192
|
-
</div>
|
|
7193
|
-
</div>
|
|
7194
|
-
`, isInline: true, styles: [""], dependencies: [{ kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i1$2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: ScScrollArea, selector: "div[sc-scroll-area]", inputs: ["class", "visibility"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
7195
|
-
}
|
|
7196
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: SidebarContent, decorators: [{
|
|
7197
|
-
type: Component,
|
|
7198
|
-
args: [{ selector: 'app-sidebar-content', imports: [RouterModule, ScScrollArea], template: `
|
|
7199
|
-
<div class="w-full pl-5 pt-5" sc-scroll-area>
|
|
7200
|
-
<div class="pb-4">
|
|
7201
|
-
<h4 class="mb-1 rounded-md px-2 py-1 text-sm font-semibold">Getting Started</h4>
|
|
7202
|
-
<div class="grid grid-flow-row auto-rows-max gap-0.5 text-sm">
|
|
7203
|
-
<a
|
|
7204
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7205
|
-
target=""
|
|
7206
|
-
rel=""
|
|
7207
|
-
href="/docs"
|
|
7208
|
-
>
|
|
7209
|
-
Introduction
|
|
7210
|
-
</a>
|
|
7211
|
-
<a
|
|
7212
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7213
|
-
target=""
|
|
7214
|
-
rel=""
|
|
7215
|
-
href="/docs/installation"
|
|
7216
|
-
>
|
|
7217
|
-
Installation
|
|
7218
|
-
</a>
|
|
7219
|
-
<a
|
|
7220
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7221
|
-
target=""
|
|
7222
|
-
rel=""
|
|
7223
|
-
href="/docs/components-json"
|
|
7224
|
-
>
|
|
7225
|
-
components.json
|
|
7226
|
-
</a>
|
|
7227
|
-
<a
|
|
7228
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7229
|
-
target=""
|
|
7230
|
-
rel=""
|
|
7231
|
-
href="/docs/theming"
|
|
7232
|
-
>
|
|
7233
|
-
Theming
|
|
7234
|
-
</a>
|
|
7235
|
-
<a
|
|
7236
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7237
|
-
target=""
|
|
7238
|
-
rel=""
|
|
7239
|
-
href="/docs/dark-mode"
|
|
7240
|
-
>
|
|
7241
|
-
Dark mode
|
|
7242
|
-
</a>
|
|
7243
|
-
<a
|
|
7244
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7245
|
-
target=""
|
|
7246
|
-
rel=""
|
|
7247
|
-
href="/docs/cli"
|
|
7248
|
-
>
|
|
7249
|
-
CLI
|
|
7250
|
-
</a>
|
|
7251
|
-
<a
|
|
7252
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7253
|
-
target=""
|
|
7254
|
-
rel=""
|
|
7255
|
-
href="/docs/react-19"
|
|
7256
|
-
>
|
|
7257
|
-
Next.js 15 + React 19
|
|
7258
|
-
</a>
|
|
7259
|
-
<a
|
|
7260
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7261
|
-
target=""
|
|
7262
|
-
rel=""
|
|
7263
|
-
href="/docs/components/typography"
|
|
7264
|
-
>
|
|
7265
|
-
Typography
|
|
7266
|
-
</a>
|
|
7267
|
-
<a
|
|
7268
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7269
|
-
target=""
|
|
7270
|
-
rel=""
|
|
7271
|
-
href="/docs/v0"
|
|
7272
|
-
>
|
|
7273
|
-
Open in v0
|
|
7274
|
-
</a>
|
|
7275
|
-
<a
|
|
7276
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7277
|
-
target=""
|
|
7278
|
-
rel=""
|
|
7279
|
-
href="/docs/figma"
|
|
7280
|
-
>
|
|
7281
|
-
Figma
|
|
7282
|
-
</a>
|
|
7283
|
-
<a
|
|
7284
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7285
|
-
target=""
|
|
7286
|
-
rel=""
|
|
7287
|
-
href="/docs/changelog"
|
|
7288
|
-
>
|
|
7289
|
-
Changelog
|
|
7290
|
-
</a>
|
|
7291
|
-
</div>
|
|
7292
|
-
</div>
|
|
7293
|
-
<div class="pb-4">
|
|
7294
|
-
<h4 class="mb-1 rounded-md px-2 py-1 text-sm font-semibold">Installation</h4>
|
|
7295
|
-
<div class="grid grid-flow-row auto-rows-max gap-0.5 text-sm">
|
|
7296
|
-
<a
|
|
7297
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7298
|
-
target=""
|
|
7299
|
-
rel=""
|
|
7300
|
-
href="/docs/installation/next"
|
|
7301
|
-
>
|
|
7302
|
-
Next.js
|
|
7303
|
-
</a>
|
|
7304
|
-
<a
|
|
7305
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7306
|
-
target=""
|
|
7307
|
-
rel=""
|
|
7308
|
-
href="/docs/installation/vite"
|
|
7309
|
-
>
|
|
7310
|
-
Vite
|
|
7311
|
-
</a>
|
|
7312
|
-
<a
|
|
7313
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7314
|
-
target=""
|
|
7315
|
-
rel=""
|
|
7316
|
-
href="/docs/installation/remix"
|
|
7317
|
-
>
|
|
7318
|
-
Remix
|
|
7319
|
-
</a>
|
|
7320
|
-
<a
|
|
7321
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7322
|
-
target=""
|
|
7323
|
-
rel=""
|
|
7324
|
-
href="/docs/installation/astro"
|
|
7325
|
-
>
|
|
7326
|
-
Astro
|
|
7327
|
-
</a>
|
|
7328
|
-
<a
|
|
7329
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7330
|
-
target=""
|
|
7331
|
-
rel=""
|
|
7332
|
-
href="/docs/installation/laravel"
|
|
7333
|
-
>
|
|
7334
|
-
Laravel
|
|
7335
|
-
</a>
|
|
7336
|
-
<a
|
|
7337
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7338
|
-
target=""
|
|
7339
|
-
rel=""
|
|
7340
|
-
href="/docs/installation/gatsby"
|
|
7341
|
-
>
|
|
7342
|
-
Gatsby
|
|
7343
|
-
</a>
|
|
7344
|
-
<a
|
|
7345
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7346
|
-
target=""
|
|
7347
|
-
rel=""
|
|
7348
|
-
href="/docs/installation/manual"
|
|
7349
|
-
>
|
|
7350
|
-
Manual
|
|
7351
|
-
</a>
|
|
7352
|
-
</div>
|
|
7353
|
-
</div>
|
|
7354
|
-
<div class="pb-4">
|
|
7355
|
-
<h4 class="mb-1 rounded-md px-2 py-1 text-sm font-semibold">Components</h4>
|
|
7356
|
-
<div class="grid grid-flow-row auto-rows-max gap-0.5 text-sm">
|
|
7357
|
-
<a
|
|
7358
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline underline-offset-2 hover:underline"
|
|
7359
|
-
routerLink="/editor"
|
|
7360
|
-
>
|
|
7361
|
-
Editor
|
|
7362
|
-
</a>
|
|
7363
|
-
<a
|
|
7364
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline underline-offset-2 hover:underline"
|
|
7365
|
-
routerLink="/theme-toggler"
|
|
7366
|
-
>
|
|
7367
|
-
Theme toggler
|
|
7368
|
-
</a>
|
|
7369
|
-
<a
|
|
7370
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline underline-offset-2 hover:underline"
|
|
7371
|
-
routerLink="/dropdown"
|
|
7372
|
-
>
|
|
7373
|
-
Dropdown
|
|
7374
|
-
</a>
|
|
7375
|
-
<a
|
|
7376
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7377
|
-
target=""
|
|
7378
|
-
rel=""
|
|
7379
|
-
href="/docs/components/sidebar"
|
|
7380
|
-
>
|
|
7381
|
-
Sidebar
|
|
7382
|
-
<span
|
|
7383
|
-
class="ml-2 rounded-md bg-[#adfa1d] px-1.5 py-0.5 text-xs leading-none text-[#000000] no-underline group-hover:no-underline"
|
|
7384
|
-
>
|
|
7385
|
-
New
|
|
7386
|
-
</span>
|
|
7387
|
-
</a>
|
|
7388
|
-
|
|
7389
|
-
<a
|
|
7390
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline underline-offset-2 hover:underline"
|
|
7391
|
-
target=""
|
|
7392
|
-
rel=""
|
|
7393
|
-
href="/docs/components/accordion"
|
|
7394
|
-
>
|
|
7395
|
-
Accordion
|
|
7396
|
-
</a>
|
|
7397
|
-
<a
|
|
7398
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7399
|
-
target=""
|
|
7400
|
-
rel=""
|
|
7401
|
-
href="/docs/components/alert"
|
|
7402
|
-
>
|
|
7403
|
-
Alert
|
|
7404
|
-
</a>
|
|
7405
|
-
<a
|
|
7406
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7407
|
-
routerLink="/alert-dialog"
|
|
7408
|
-
>
|
|
7409
|
-
Alert Dialog
|
|
7410
|
-
</a>
|
|
7411
|
-
<a
|
|
7412
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7413
|
-
target=""
|
|
7414
|
-
rel=""
|
|
7415
|
-
href="/docs/components/aspect-ratio"
|
|
7416
|
-
>
|
|
7417
|
-
Aspect Ratio
|
|
7418
|
-
</a>
|
|
7419
|
-
<a
|
|
7420
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7421
|
-
target=""
|
|
7422
|
-
rel=""
|
|
7423
|
-
href="/docs/components/avatar"
|
|
7424
|
-
>
|
|
7425
|
-
Avatar
|
|
7426
|
-
</a>
|
|
7427
|
-
<a
|
|
7428
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7429
|
-
target=""
|
|
7430
|
-
rel=""
|
|
7431
|
-
href="/docs/components/badge"
|
|
7432
|
-
>
|
|
7433
|
-
Badge
|
|
7434
|
-
</a>
|
|
7435
|
-
<a
|
|
7436
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7437
|
-
routerLink="/breadcrumb"
|
|
7438
|
-
>
|
|
7439
|
-
Breadcrumb
|
|
7440
|
-
</a>
|
|
7441
|
-
<a
|
|
7442
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7443
|
-
routerLink="/button"
|
|
7444
|
-
>
|
|
7445
|
-
Button
|
|
7446
|
-
</a>
|
|
7447
|
-
<a
|
|
7448
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7449
|
-
routerLink="/date-picker"
|
|
7450
|
-
>
|
|
7451
|
-
Calendar
|
|
7452
|
-
</a>
|
|
7453
|
-
<a
|
|
7454
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7455
|
-
target=""
|
|
7456
|
-
rel=""
|
|
7457
|
-
href="/docs/components/card"
|
|
7458
|
-
>
|
|
7459
|
-
Card
|
|
7460
|
-
</a>
|
|
7461
|
-
<a
|
|
7462
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7463
|
-
target=""
|
|
7464
|
-
rel=""
|
|
7465
|
-
href="/docs/components/carousel"
|
|
7466
|
-
>
|
|
7467
|
-
Carousel
|
|
7468
|
-
</a>
|
|
7469
|
-
<a
|
|
7470
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7471
|
-
target=""
|
|
7472
|
-
rel=""
|
|
7473
|
-
href="/docs/components/chart"
|
|
7474
|
-
>
|
|
7475
|
-
Chart
|
|
7476
|
-
</a>
|
|
7477
|
-
<a
|
|
7478
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7479
|
-
target=""
|
|
7480
|
-
rel=""
|
|
7481
|
-
href="/docs/components/checkbox"
|
|
7482
|
-
>
|
|
7483
|
-
Checkbox
|
|
7484
|
-
</a>
|
|
7485
|
-
<a
|
|
7486
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7487
|
-
target=""
|
|
7488
|
-
rel=""
|
|
7489
|
-
href="/docs/components/collapsible"
|
|
7490
|
-
>
|
|
7491
|
-
Collapsible
|
|
7492
|
-
</a>
|
|
7493
|
-
<a
|
|
7494
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7495
|
-
target=""
|
|
7496
|
-
rel=""
|
|
7497
|
-
href="/docs/components/combobox"
|
|
7498
|
-
>
|
|
7499
|
-
Combobox
|
|
7500
|
-
</a>
|
|
7501
|
-
<a
|
|
7502
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7503
|
-
target=""
|
|
7504
|
-
rel=""
|
|
7505
|
-
href="/docs/components/command"
|
|
7506
|
-
>
|
|
7507
|
-
Command
|
|
7508
|
-
</a>
|
|
7509
|
-
<a
|
|
7510
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7511
|
-
target=""
|
|
7512
|
-
rel=""
|
|
7513
|
-
href="/docs/components/context-menu"
|
|
7514
|
-
>
|
|
7515
|
-
Context Menu
|
|
7516
|
-
</a>
|
|
7517
|
-
<a
|
|
7518
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7519
|
-
target=""
|
|
7520
|
-
rel=""
|
|
7521
|
-
href="/docs/components/data-table"
|
|
7522
|
-
>
|
|
7523
|
-
Data Table
|
|
7524
|
-
</a>
|
|
7525
|
-
<a
|
|
7526
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7527
|
-
routerLink="/date-picker"
|
|
7528
|
-
>
|
|
7529
|
-
Date Picker
|
|
7530
|
-
</a>
|
|
7531
|
-
<a
|
|
7532
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7533
|
-
routerLink="/dialog"
|
|
7534
|
-
>
|
|
7535
|
-
Dialog
|
|
7536
|
-
</a>
|
|
7537
|
-
<a
|
|
7538
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7539
|
-
target=""
|
|
7540
|
-
rel=""
|
|
7541
|
-
href="/docs/components/drawer"
|
|
7542
|
-
>
|
|
7543
|
-
Drawer
|
|
7544
|
-
</a>
|
|
7545
|
-
<a
|
|
7546
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7547
|
-
target=""
|
|
7548
|
-
rel=""
|
|
7549
|
-
href="/docs/components/dropdown-menu"
|
|
7550
|
-
>
|
|
7551
|
-
Dropdown Menu
|
|
7552
|
-
</a>
|
|
7553
|
-
<a
|
|
7554
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7555
|
-
target=""
|
|
7556
|
-
rel=""
|
|
7557
|
-
href="/docs/components/form"
|
|
7558
|
-
>
|
|
7559
|
-
Form
|
|
7560
|
-
</a>
|
|
7561
|
-
<a
|
|
7562
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7563
|
-
target=""
|
|
7564
|
-
rel=""
|
|
7565
|
-
href="/docs/components/hover-card"
|
|
7566
|
-
>
|
|
7567
|
-
Hover Card
|
|
7568
|
-
</a>
|
|
7569
|
-
<a
|
|
7570
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7571
|
-
target=""
|
|
7572
|
-
rel=""
|
|
7573
|
-
href="/docs/components/input"
|
|
7574
|
-
>
|
|
7575
|
-
Input
|
|
7576
|
-
</a>
|
|
7577
|
-
<a
|
|
7578
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7579
|
-
target=""
|
|
7580
|
-
rel=""
|
|
7581
|
-
href="/docs/components/input-otp"
|
|
7582
|
-
>
|
|
7583
|
-
Input OTP
|
|
7584
|
-
</a>
|
|
7585
|
-
<a
|
|
7586
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7587
|
-
target=""
|
|
7588
|
-
rel=""
|
|
7589
|
-
href="/docs/components/label"
|
|
7590
|
-
>
|
|
7591
|
-
Label
|
|
7592
|
-
</a>
|
|
7593
|
-
<a
|
|
7594
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7595
|
-
target=""
|
|
7596
|
-
rel=""
|
|
7597
|
-
href="/docs/components/menubar"
|
|
7598
|
-
>
|
|
7599
|
-
Menubar
|
|
7600
|
-
</a>
|
|
7601
|
-
<a
|
|
7602
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7603
|
-
routerLink="/nav"
|
|
7604
|
-
>
|
|
7605
|
-
Navigation Menu
|
|
7606
|
-
</a>
|
|
7607
|
-
<a
|
|
7608
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7609
|
-
routerLink="/paginator"
|
|
7610
|
-
>
|
|
7611
|
-
Pagination
|
|
7612
|
-
</a>
|
|
7613
|
-
<a
|
|
7614
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7615
|
-
target=""
|
|
7616
|
-
rel=""
|
|
7617
|
-
href="/docs/components/popover"
|
|
7618
|
-
>
|
|
7619
|
-
Popover
|
|
7620
|
-
</a>
|
|
7621
|
-
<a
|
|
7622
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7623
|
-
routerLink="/progress"
|
|
7624
|
-
>
|
|
7625
|
-
Progress
|
|
7626
|
-
</a>
|
|
7627
|
-
<a
|
|
7628
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7629
|
-
target=""
|
|
7630
|
-
rel=""
|
|
7631
|
-
href="/docs/components/radio-group"
|
|
7632
|
-
>
|
|
7633
|
-
Radio Group
|
|
7634
|
-
</a>
|
|
7635
|
-
<a
|
|
7636
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7637
|
-
target=""
|
|
7638
|
-
rel=""
|
|
7639
|
-
href="/docs/components/resizable"
|
|
7640
|
-
>
|
|
7641
|
-
Resizable
|
|
7642
|
-
</a>
|
|
7643
|
-
<a
|
|
7644
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7645
|
-
target=""
|
|
7646
|
-
rel=""
|
|
7647
|
-
href="/docs/components/scroll-area"
|
|
7648
|
-
>
|
|
7649
|
-
Scroll Area
|
|
7650
|
-
</a>
|
|
7651
|
-
<a
|
|
7652
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7653
|
-
routerLink="/select"
|
|
7654
|
-
>
|
|
7655
|
-
Select
|
|
7656
|
-
</a>
|
|
7657
|
-
<a
|
|
7658
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7659
|
-
target=""
|
|
7660
|
-
rel=""
|
|
7661
|
-
href="/docs/components/separator"
|
|
7662
|
-
>
|
|
7663
|
-
Separator
|
|
7664
|
-
</a>
|
|
7665
|
-
<a
|
|
7666
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7667
|
-
target=""
|
|
7668
|
-
rel=""
|
|
7669
|
-
href="/docs/components/sheet"
|
|
7670
|
-
>
|
|
7671
|
-
Sheet
|
|
7672
|
-
</a>
|
|
7673
|
-
<a
|
|
7674
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7675
|
-
target=""
|
|
7676
|
-
rel=""
|
|
7677
|
-
href="/docs/components/skeleton"
|
|
7678
|
-
>
|
|
7679
|
-
Skeleton
|
|
7680
|
-
</a>
|
|
7681
|
-
<a
|
|
7682
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7683
|
-
target=""
|
|
7684
|
-
rel=""
|
|
7685
|
-
href="/docs/components/slider"
|
|
7686
|
-
>
|
|
7687
|
-
Slider
|
|
7688
|
-
</a>
|
|
7689
|
-
<a
|
|
7690
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7691
|
-
target=""
|
|
7692
|
-
rel=""
|
|
7693
|
-
href="/docs/components/sonner"
|
|
7694
|
-
>
|
|
7695
|
-
Sonner
|
|
7696
|
-
</a>
|
|
7697
|
-
<a
|
|
7698
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7699
|
-
target=""
|
|
7700
|
-
rel=""
|
|
7701
|
-
href="/docs/components/switch"
|
|
7702
|
-
>
|
|
7703
|
-
Switch
|
|
7704
|
-
</a>
|
|
7705
|
-
<a
|
|
7706
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7707
|
-
target=""
|
|
7708
|
-
rel=""
|
|
7709
|
-
href="/docs/components/table"
|
|
7710
|
-
>
|
|
7711
|
-
Table
|
|
7712
|
-
</a>
|
|
7713
|
-
<a
|
|
7714
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7715
|
-
routerLink="/editor"
|
|
7716
|
-
>
|
|
7717
|
-
Tabs
|
|
7718
|
-
</a>
|
|
7719
|
-
<a
|
|
7720
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7721
|
-
target=""
|
|
7722
|
-
rel=""
|
|
7723
|
-
href="/docs/components/textarea"
|
|
7724
|
-
>
|
|
7725
|
-
Textarea
|
|
7726
|
-
</a>
|
|
7727
|
-
<a
|
|
7728
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7729
|
-
target=""
|
|
7730
|
-
rel=""
|
|
7731
|
-
href="/docs/components/toast"
|
|
7732
|
-
>
|
|
7733
|
-
Toast
|
|
7734
|
-
</a>
|
|
7735
|
-
<a
|
|
7736
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7737
|
-
routerLink="/nav"
|
|
7738
|
-
>
|
|
7739
|
-
Toggle
|
|
7740
|
-
</a>
|
|
7741
|
-
<a
|
|
7742
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7743
|
-
target=""
|
|
7744
|
-
rel=""
|
|
7745
|
-
href="/docs/components/toggle-group"
|
|
7746
|
-
>
|
|
7747
|
-
Toggle Group
|
|
7748
|
-
</a>
|
|
7749
|
-
<a
|
|
7750
|
-
class="group flex w-full items-center px-2 py-1 font-normal text-foreground underline-offset-2 hover:underline"
|
|
7751
|
-
routerLink="/tooltip"
|
|
7752
|
-
>
|
|
7753
|
-
Tooltip
|
|
7754
|
-
</a>
|
|
7755
|
-
</div>
|
|
7756
|
-
</div>
|
|
7757
|
-
</div>
|
|
7758
|
-
`, host: {
|
|
7759
|
-
'[class]': 'classes()',
|
|
7760
|
-
}, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush }]
|
|
7761
|
-
}] });
|
|
6631
|
+
throw new Error('Error in switch case');
|
|
6632
|
+
}
|
|
6633
|
+
}
|
|
6634
|
+
}
|
|
6635
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScSheetTrigger, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
6636
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScSheetTrigger, providedIn: 'root' });
|
|
6637
|
+
}
|
|
6638
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScSheetTrigger, decorators: [{
|
|
6639
|
+
type: Injectable,
|
|
6640
|
+
args: [{
|
|
6641
|
+
providedIn: 'root',
|
|
6642
|
+
}]
|
|
6643
|
+
}], ctorParameters: () => [] });
|
|
7762
6644
|
|
|
7763
6645
|
const sheetVariants = cva('relative z-50 gap-4 bg-background p-6 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500 data-[state=open]:animate-in data-[state=closed]:animate-out', {
|
|
7764
6646
|
variants: {
|
|
7765
6647
|
side: {
|
|
7766
6648
|
top: 'size-full border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top',
|
|
7767
6649
|
bottom: 'size-full border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom',
|
|
7768
|
-
left: 'size-full border-r
|
|
7769
|
-
right: 'size-full border-l
|
|
6650
|
+
left: 'size-full border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm',
|
|
6651
|
+
right: 'size-full border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm',
|
|
7770
6652
|
},
|
|
7771
6653
|
},
|
|
7772
6654
|
defaultVariants: {
|
|
@@ -7774,32 +6656,58 @@ const sheetVariants = cva('relative z-50 gap-4 bg-background p-6 shadow-lg trans
|
|
|
7774
6656
|
},
|
|
7775
6657
|
});
|
|
7776
6658
|
class ScSheet {
|
|
7777
|
-
|
|
6659
|
+
scSheetTrigger = inject(ScSheetTrigger);
|
|
7778
6660
|
state = computed(() => {
|
|
7779
|
-
return this.
|
|
6661
|
+
return this.scSheetTrigger.state();
|
|
6662
|
+
});
|
|
6663
|
+
side = computed(() => {
|
|
6664
|
+
return this.scSheetTrigger.side();
|
|
7780
6665
|
});
|
|
7781
|
-
side = signal('right');
|
|
7782
6666
|
class = input('');
|
|
7783
6667
|
classes = computed(() => cn(sheetVariants({ side: this.side() }), this.class()));
|
|
7784
6668
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScSheet, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
7785
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.0.5", type: ScSheet, isStandalone: true, selector: "sc-sheet", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "classes()", "attr.data-state": "state()" } }, ngImport: i0, template: `
|
|
7786
|
-
<
|
|
7787
|
-
|
|
7788
|
-
<app-sidebar-content />
|
|
7789
|
-
`, isInline: true, styles: [""], dependencies: [{ kind: "component", type: ScSheetToggler, selector: "sc-sheet-toggler", inputs: ["class"] }, { kind: "component", type: SidebarContent, selector: "app-sidebar-content", inputs: ["class"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
6669
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.0.5", type: ScSheet, isStandalone: true, selector: "div[sc-sheet]", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "classes()", "attr.data-state": "state()" } }, ngImport: i0, template: `
|
|
6670
|
+
<ng-content />
|
|
6671
|
+
`, isInline: true, styles: [""], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
7790
6672
|
}
|
|
7791
6673
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScSheet, decorators: [{
|
|
7792
6674
|
type: Component,
|
|
7793
|
-
args: [{ selector: 'sc-sheet', imports: [
|
|
7794
|
-
<
|
|
7795
|
-
|
|
7796
|
-
<app-sidebar-content />
|
|
6675
|
+
args: [{ selector: 'div[sc-sheet]', imports: [], template: `
|
|
6676
|
+
<ng-content />
|
|
7797
6677
|
`, host: {
|
|
7798
6678
|
'[class]': 'classes()',
|
|
7799
6679
|
'[attr.data-state]': 'state()',
|
|
7800
6680
|
}, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush }]
|
|
7801
6681
|
}] });
|
|
7802
6682
|
|
|
6683
|
+
class ScSheetConfig {
|
|
6684
|
+
side = 'right';
|
|
6685
|
+
width = '100%';
|
|
6686
|
+
height = '100%';
|
|
6687
|
+
}
|
|
6688
|
+
|
|
6689
|
+
class ScSheetClose {
|
|
6690
|
+
scSheetTrigger = inject(ScSheetTrigger);
|
|
6691
|
+
class = input('');
|
|
6692
|
+
classes = computed(() => cn('absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground', this.class()));
|
|
6693
|
+
close() {
|
|
6694
|
+
this.scSheetTrigger.close();
|
|
6695
|
+
}
|
|
6696
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScSheetClose, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
6697
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.0.5", type: ScSheetClose, isStandalone: true, selector: "button[sc-sheet-close]", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "click": "close()" }, properties: { "class": "classes()" } }, ngImport: i0, template: `
|
|
6698
|
+
<ng-content />
|
|
6699
|
+
`, isInline: true, styles: [""], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
6700
|
+
}
|
|
6701
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScSheetClose, decorators: [{
|
|
6702
|
+
type: Component,
|
|
6703
|
+
args: [{ selector: 'button[sc-sheet-close]', imports: [], template: `
|
|
6704
|
+
<ng-content />
|
|
6705
|
+
`, host: {
|
|
6706
|
+
'[class]': 'classes()',
|
|
6707
|
+
'(click)': 'close()',
|
|
6708
|
+
}, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush }]
|
|
6709
|
+
}] });
|
|
6710
|
+
|
|
7803
6711
|
class ScBreadcrumb {
|
|
7804
6712
|
ariaLabel = 'breadcrumb';
|
|
7805
6713
|
class = input('');
|
|
@@ -8321,6 +7229,52 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImpor
|
|
|
8321
7229
|
}, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush }]
|
|
8322
7230
|
}] });
|
|
8323
7231
|
|
|
7232
|
+
class ScScrollArea {
|
|
7233
|
+
host = inject(ElementRef);
|
|
7234
|
+
class = input('');
|
|
7235
|
+
classes = computed(() => cn('', this.class()));
|
|
7236
|
+
visibility = input('native');
|
|
7237
|
+
//TODO remove use of ngAfterViewInit
|
|
7238
|
+
ngAfterViewInit() {
|
|
7239
|
+
const height = this.host.nativeElement.scrollHeight;
|
|
7240
|
+
console.log(height);
|
|
7241
|
+
}
|
|
7242
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScScrollArea, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
7243
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.0.5", type: ScScrollArea, isStandalone: true, selector: "div[sc-scroll-area]", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, visibility: { classPropertyName: "visibility", publicName: "visibility", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "classes()" } }, ngImport: i0, template: `
|
|
7244
|
+
<ng-scrollbar
|
|
7245
|
+
[visibility]="visibility()"
|
|
7246
|
+
[style]="{
|
|
7247
|
+
'--scrollbar-border-radius': '100px',
|
|
7248
|
+
'--scrollbar-padding': '1px',
|
|
7249
|
+
'--scrollbar-thumb-color': 'hsl(var(--border))',
|
|
7250
|
+
'--scrollbar-thumb-hover-color': 'hsl(var(--border))',
|
|
7251
|
+
'--scrollbar-size': '7px',
|
|
7252
|
+
}"
|
|
7253
|
+
>
|
|
7254
|
+
<ng-content />
|
|
7255
|
+
</ng-scrollbar>
|
|
7256
|
+
`, isInline: true, styles: [""], dependencies: [{ kind: "ngmodule", type: NgScrollbarModule }, { kind: "component", type: i1$2.NgScrollbar, selector: "ng-scrollbar:not([externalViewport])", exportAs: ["ngScrollbar"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
7257
|
+
}
|
|
7258
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScScrollArea, decorators: [{
|
|
7259
|
+
type: Component,
|
|
7260
|
+
args: [{ selector: 'div[sc-scroll-area]', imports: [NgScrollbarModule], template: `
|
|
7261
|
+
<ng-scrollbar
|
|
7262
|
+
[visibility]="visibility()"
|
|
7263
|
+
[style]="{
|
|
7264
|
+
'--scrollbar-border-radius': '100px',
|
|
7265
|
+
'--scrollbar-padding': '1px',
|
|
7266
|
+
'--scrollbar-thumb-color': 'hsl(var(--border))',
|
|
7267
|
+
'--scrollbar-thumb-hover-color': 'hsl(var(--border))',
|
|
7268
|
+
'--scrollbar-size': '7px',
|
|
7269
|
+
}"
|
|
7270
|
+
>
|
|
7271
|
+
<ng-content />
|
|
7272
|
+
</ng-scrollbar>
|
|
7273
|
+
`, host: {
|
|
7274
|
+
'[class]': 'classes()',
|
|
7275
|
+
}, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush }]
|
|
7276
|
+
}] });
|
|
7277
|
+
|
|
8324
7278
|
class ScTab {
|
|
8325
7279
|
class = input('');
|
|
8326
7280
|
classes = computed(() => cn('', this.class()));
|
|
@@ -8930,11 +7884,15 @@ class ScCheckbox {
|
|
|
8930
7884
|
checkboxClasses = computed(() => cn('peer appearance-none h-4 w-4 shrink-0 cursor-pointer rounded-sm border border-primary ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground', this.checkboxClass()));
|
|
8931
7885
|
svgClass = input('');
|
|
8932
7886
|
svgClasses = computed(() => cn('absolute top-0 left-0 w-4 h-4 outline-none cursor-pointer text-primary-foreground', this.svgClass()));
|
|
7887
|
+
indeterminate = model(false);
|
|
7888
|
+
ariaLabel = input(null, { alias: 'aria-label' });
|
|
8933
7889
|
checked = model(false);
|
|
8934
7890
|
disabled = model(false);
|
|
7891
|
+
change = output();
|
|
8935
7892
|
state = computed(() => {
|
|
8936
7893
|
return this.checked() ? 'checked' : 'unchecked';
|
|
8937
7894
|
});
|
|
7895
|
+
host = inject(ElementRef);
|
|
8938
7896
|
constructor() {
|
|
8939
7897
|
effect(() => {
|
|
8940
7898
|
if (this.checked() !== true && this.checked() !== false) {
|
|
@@ -8943,6 +7901,7 @@ class ScCheckbox {
|
|
|
8943
7901
|
if (this.disabled() !== true && this.disabled() !== false) {
|
|
8944
7902
|
this.disabled.update((v) => coerceBooleanProperty(v));
|
|
8945
7903
|
}
|
|
7904
|
+
this.host.nativeElement.indeterminate = this.indeterminate();
|
|
8946
7905
|
});
|
|
8947
7906
|
}
|
|
8948
7907
|
toggle() {
|
|
@@ -8951,6 +7910,10 @@ class ScCheckbox {
|
|
|
8951
7910
|
}
|
|
8952
7911
|
const v = !this.checked();
|
|
8953
7912
|
this.checked.set(v);
|
|
7913
|
+
this.change.emit(v);
|
|
7914
|
+
if (this.indeterminate() === true) {
|
|
7915
|
+
this.indeterminate.set(false);
|
|
7916
|
+
}
|
|
8954
7917
|
this.onChange(v);
|
|
8955
7918
|
this._cdr.markForCheck();
|
|
8956
7919
|
}
|
|
@@ -8970,8 +7933,14 @@ class ScCheckbox {
|
|
|
8970
7933
|
setDisabledState(isDisabled) {
|
|
8971
7934
|
this.disabled.set(isDisabled);
|
|
8972
7935
|
}
|
|
7936
|
+
_onInteractionEvent(event) {
|
|
7937
|
+
// We always have to stop propagation on the change event.
|
|
7938
|
+
// Otherwise the change event, from the input element, will bubble up and
|
|
7939
|
+
// emit its event object to the `change` output.
|
|
7940
|
+
event.stopPropagation();
|
|
7941
|
+
}
|
|
8973
7942
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScCheckbox, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
8974
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.5", type: ScCheckbox, isStandalone: true, selector: "sc-checkbox", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, checkboxClass: { classPropertyName: "checkboxClass", publicName: "checkboxClass", isSignal: true, isRequired: false, transformFunction: null }, svgClass: { classPropertyName: "svgClass", publicName: "svgClass", isSignal: true, isRequired: false, transformFunction: null }, checked: { classPropertyName: "checked", publicName: "checked", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { checked: "checkedChange", disabled: "disabledChange" }, host: { listeners: { "click": "toggle()" }, properties: { "class": "classes()" } }, providers: [
|
|
7943
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.5", type: ScCheckbox, isStandalone: true, selector: "sc-checkbox", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, checkboxClass: { classPropertyName: "checkboxClass", publicName: "checkboxClass", isSignal: true, isRequired: false, transformFunction: null }, svgClass: { classPropertyName: "svgClass", publicName: "svgClass", isSignal: true, isRequired: false, transformFunction: null }, indeterminate: { classPropertyName: "indeterminate", publicName: "indeterminate", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "aria-label", isSignal: true, isRequired: false, transformFunction: null }, checked: { classPropertyName: "checked", publicName: "checked", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { indeterminate: "indeterminateChange", checked: "checkedChange", disabled: "disabledChange", change: "change" }, host: { listeners: { "click": "toggle()" }, properties: { "class": "classes()" } }, providers: [
|
|
8975
7944
|
{
|
|
8976
7945
|
provide: NG_VALUE_ACCESSOR,
|
|
8977
7946
|
useExisting: forwardRef(() => ScCheckbox),
|
|
@@ -8979,28 +7948,38 @@ class ScCheckbox {
|
|
|
8979
7948
|
},
|
|
8980
7949
|
], ngImport: i0, template: `
|
|
8981
7950
|
<input
|
|
7951
|
+
[attr.aria-label]="ariaLabel()"
|
|
8982
7952
|
[class]="checkboxClasses()"
|
|
8983
7953
|
[disabled]="disabled()"
|
|
7954
|
+
[checked]="checked()"
|
|
8984
7955
|
[attr.data-state]="state()"
|
|
7956
|
+
(change)="_onInteractionEvent($event)"
|
|
8985
7957
|
type="checkbox"
|
|
8986
7958
|
/>
|
|
8987
7959
|
|
|
8988
|
-
@if (
|
|
7960
|
+
@if (this.indeterminate() === true) {
|
|
7961
|
+
<svg-minus-icon [class]="svgClasses()" />
|
|
7962
|
+
} @else if (checked() === true) {
|
|
8989
7963
|
<svg-check-icon [class]="svgClasses()" />
|
|
8990
7964
|
}
|
|
8991
|
-
`, isInline: true, styles: [""], dependencies: [{ kind: "component", type: SvgCheckIcon, selector: "svg-check-icon", inputs: ["class", "svgClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
7965
|
+
`, isInline: true, styles: [""], dependencies: [{ kind: "component", type: SvgCheckIcon, selector: "svg-check-icon", inputs: ["class", "svgClass"] }, { kind: "component", type: SvgMinusIcon, selector: "svg-minus-icon", inputs: ["class", "svgClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
8992
7966
|
}
|
|
8993
7967
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScCheckbox, decorators: [{
|
|
8994
7968
|
type: Component,
|
|
8995
|
-
args: [{ selector: 'sc-checkbox', imports: [SvgCheckIcon], template: `
|
|
7969
|
+
args: [{ selector: 'sc-checkbox', imports: [SvgCheckIcon, SvgMinusIcon], template: `
|
|
8996
7970
|
<input
|
|
7971
|
+
[attr.aria-label]="ariaLabel()"
|
|
8997
7972
|
[class]="checkboxClasses()"
|
|
8998
7973
|
[disabled]="disabled()"
|
|
7974
|
+
[checked]="checked()"
|
|
8999
7975
|
[attr.data-state]="state()"
|
|
7976
|
+
(change)="_onInteractionEvent($event)"
|
|
9000
7977
|
type="checkbox"
|
|
9001
7978
|
/>
|
|
9002
7979
|
|
|
9003
|
-
@if (
|
|
7980
|
+
@if (this.indeterminate() === true) {
|
|
7981
|
+
<svg-minus-icon [class]="svgClasses()" />
|
|
7982
|
+
} @else if (checked() === true) {
|
|
9004
7983
|
<svg-check-icon [class]="svgClasses()" />
|
|
9005
7984
|
}
|
|
9006
7985
|
`, host: {
|
|
@@ -10603,18 +9582,23 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImpor
|
|
|
10603
9582
|
}] });
|
|
10604
9583
|
|
|
10605
9584
|
class ScMenuCheckboxItem {
|
|
9585
|
+
_cdkMenuItemCheckbox = inject(CdkMenuItemCheckbox, { host: true });
|
|
10606
9586
|
class = input('');
|
|
10607
9587
|
classes = computed(() => cn('relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50', this.class()));
|
|
10608
9588
|
disabled = input(false, {
|
|
10609
9589
|
transform: booleanAttribute,
|
|
10610
9590
|
});
|
|
10611
|
-
|
|
10612
|
-
|
|
10613
|
-
|
|
10614
|
-
|
|
9591
|
+
constructor() {
|
|
9592
|
+
effect(() => {
|
|
9593
|
+
this._cdkMenuItemCheckbox.disabled = this.disabled();
|
|
9594
|
+
});
|
|
10615
9595
|
}
|
|
9596
|
+
scChecked = input(false, {
|
|
9597
|
+
transform: booleanAttribute,
|
|
9598
|
+
});
|
|
9599
|
+
scTriggered = output();
|
|
10616
9600
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScMenuCheckboxItem, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
10617
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.5", type: ScMenuCheckboxItem, isStandalone: true, selector: "button[sc-menu-checkbox-item]", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, scChecked: { classPropertyName: "scChecked", publicName: "scChecked", isSignal: true, isRequired: false, transformFunction: null } }, outputs: {
|
|
9601
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.5", type: ScMenuCheckboxItem, isStandalone: true, selector: "button[sc-menu-checkbox-item]", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, scChecked: { classPropertyName: "scChecked", publicName: "scChecked", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { scTriggered: "scTriggered" }, host: { properties: { "class": "classes()" } }, hostDirectives: [{ directive: i1$5.CdkMenuItemCheckbox, inputs: ["cdkMenuItemChecked", "scChecked"], outputs: ["cdkMenuItemTriggered", "scTriggered"] }], ngImport: i0, template: `
|
|
10618
9602
|
@if (scChecked()) {
|
|
10619
9603
|
<span class="absolute left-2 flex size-3.5 items-center justify-center">
|
|
10620
9604
|
<svg-check-icon class="size-4" />
|
|
@@ -10634,7 +9618,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImpor
|
|
|
10634
9618
|
<ng-content />
|
|
10635
9619
|
`, host: {
|
|
10636
9620
|
'[class]': 'classes()',
|
|
10637
|
-
'(click)': 'toggle()',
|
|
10638
9621
|
}, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, hostDirectives: [
|
|
10639
9622
|
{
|
|
10640
9623
|
directive: CdkMenuItemCheckbox,
|
|
@@ -10642,7 +9625,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImpor
|
|
|
10642
9625
|
outputs: ['cdkMenuItemTriggered: scTriggered'],
|
|
10643
9626
|
},
|
|
10644
9627
|
] }]
|
|
10645
|
-
}] });
|
|
9628
|
+
}], ctorParameters: () => [] });
|
|
10646
9629
|
|
|
10647
9630
|
class ScMenuRadioGroup {
|
|
10648
9631
|
class = input('');
|
|
@@ -11071,9 +10054,425 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImpor
|
|
|
11071
10054
|
}, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush }]
|
|
11072
10055
|
}] });
|
|
11073
10056
|
|
|
10057
|
+
const SIDEBAR_WIDTH = '16rem';
|
|
10058
|
+
const SIDEBAR_WIDTH_MOBILE = '18rem';
|
|
10059
|
+
const SIDEBAR_WIDTH_ICON = '3rem';
|
|
10060
|
+
|
|
10061
|
+
class ScSidebarState {
|
|
10062
|
+
open = signal(true);
|
|
10063
|
+
openMobile = signal(false);
|
|
10064
|
+
isMobile = signal(false);
|
|
10065
|
+
// Helper to toggle the sidebar.
|
|
10066
|
+
toggleSidebar() {
|
|
10067
|
+
return this.isMobile()
|
|
10068
|
+
? this.openMobile.update((open) => !open)
|
|
10069
|
+
: this.open.update((open) => !open);
|
|
10070
|
+
}
|
|
10071
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScSidebarState, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
10072
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScSidebarState, providedIn: 'root' });
|
|
10073
|
+
}
|
|
10074
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScSidebarState, decorators: [{
|
|
10075
|
+
type: Injectable,
|
|
10076
|
+
args: [{ providedIn: 'root' }]
|
|
10077
|
+
}] });
|
|
10078
|
+
|
|
10079
|
+
class ScSidebarToggler {
|
|
10080
|
+
sidebarState = inject(ScSidebarState);
|
|
10081
|
+
toggleSidebar() {
|
|
10082
|
+
this.sidebarState.toggleSidebar();
|
|
10083
|
+
}
|
|
10084
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScSidebarToggler, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
10085
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.5", type: ScSidebarToggler, isStandalone: true, selector: "sc-sidebar-toggler", ngImport: i0, template: `
|
|
10086
|
+
<button
|
|
10087
|
+
class="size-7"
|
|
10088
|
+
(click)="toggleSidebar()"
|
|
10089
|
+
sc-button
|
|
10090
|
+
data-sidebar="trigger"
|
|
10091
|
+
variant="ghost"
|
|
10092
|
+
size="icon"
|
|
10093
|
+
>
|
|
10094
|
+
<ng-content />
|
|
10095
|
+
<span class="sr-only">Toggle Sidebar</span>
|
|
10096
|
+
</button>
|
|
10097
|
+
`, isInline: true, styles: [""], dependencies: [{ kind: "component", type: ScButton, selector: "button[sc-button], a[sc-button]", inputs: ["variant", "size", "class"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
10098
|
+
}
|
|
10099
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScSidebarToggler, decorators: [{
|
|
10100
|
+
type: Component,
|
|
10101
|
+
args: [{ selector: 'sc-sidebar-toggler', imports: [ScButton], template: `
|
|
10102
|
+
<button
|
|
10103
|
+
class="size-7"
|
|
10104
|
+
(click)="toggleSidebar()"
|
|
10105
|
+
sc-button
|
|
10106
|
+
data-sidebar="trigger"
|
|
10107
|
+
variant="ghost"
|
|
10108
|
+
size="icon"
|
|
10109
|
+
>
|
|
10110
|
+
<ng-content />
|
|
10111
|
+
<span class="sr-only">Toggle Sidebar</span>
|
|
10112
|
+
</button>
|
|
10113
|
+
`, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush }]
|
|
10114
|
+
}] });
|
|
10115
|
+
|
|
10116
|
+
class ScSidebarMobile {
|
|
10117
|
+
sidebarState = inject(ScSidebarState);
|
|
10118
|
+
styles = signal(`--sidebar-width: ${SIDEBAR_WIDTH_MOBILE};`);
|
|
10119
|
+
side = input.required();
|
|
10120
|
+
openMobile = computed(() => this.sidebarState.openMobile());
|
|
10121
|
+
state = computed(() => {
|
|
10122
|
+
return this.openMobile() ? 'open' : 'closed';
|
|
10123
|
+
});
|
|
10124
|
+
class = input('');
|
|
10125
|
+
classes = computed(() => cn('absolute top-0 h-full bg-sidebar p-0 text-sidebar-foreground [&>button]:hidden transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500 data-[state=open]:animate-in data-[state=closed]:animate-out', this.openMobile() && 'w-[--sidebar-width]', !this.openMobile() && 'w-0 overflow-hidden', this.side() === 'left' &&
|
|
10126
|
+
'left-0 data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left', this.side() === 'right' &&
|
|
10127
|
+
'right-0 data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right', this.class()));
|
|
10128
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScSidebarMobile, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
10129
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.0.5", type: ScSidebarMobile, isStandalone: true, selector: "sc-sidebar-mobile", inputs: { side: { classPropertyName: "side", publicName: "side", isSignal: true, isRequired: true, transformFunction: null }, class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "classes()", "style": "styles()", "attr.data-sidebar": "\"sidebar\"", "attr.data-mobile": "\"true\"", "attr.data-state": "state()" } }, ngImport: i0, template: `
|
|
10130
|
+
<div class="flex size-full flex-col">
|
|
10131
|
+
<sc-sidebar-toggler class="absolute right-1 top-1">
|
|
10132
|
+
<svg-x-icon />
|
|
10133
|
+
</sc-sidebar-toggler>
|
|
10134
|
+
|
|
10135
|
+
<br />
|
|
10136
|
+
<br />
|
|
10137
|
+
open : {{ sidebarState.open() }}
|
|
10138
|
+
<br />
|
|
10139
|
+
openMobile : {{ sidebarState.openMobile() }}
|
|
10140
|
+
<br />
|
|
10141
|
+
isMobile : {{ sidebarState.isMobile() }}
|
|
10142
|
+
|
|
10143
|
+
<ng-content />
|
|
10144
|
+
</div>
|
|
10145
|
+
`, isInline: true, styles: [""], dependencies: [{ kind: "component", type: ScSidebarToggler, selector: "sc-sidebar-toggler" }, { kind: "component", type: SvgXIcon, selector: "svg-x-icon", inputs: ["class", "svgClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
10146
|
+
}
|
|
10147
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScSidebarMobile, decorators: [{
|
|
10148
|
+
type: Component,
|
|
10149
|
+
args: [{ selector: 'sc-sidebar-mobile', imports: [ScSidebarToggler, SvgXIcon], template: `
|
|
10150
|
+
<div class="flex size-full flex-col">
|
|
10151
|
+
<sc-sidebar-toggler class="absolute right-1 top-1">
|
|
10152
|
+
<svg-x-icon />
|
|
10153
|
+
</sc-sidebar-toggler>
|
|
10154
|
+
|
|
10155
|
+
<br />
|
|
10156
|
+
<br />
|
|
10157
|
+
open : {{ sidebarState.open() }}
|
|
10158
|
+
<br />
|
|
10159
|
+
openMobile : {{ sidebarState.openMobile() }}
|
|
10160
|
+
<br />
|
|
10161
|
+
isMobile : {{ sidebarState.isMobile() }}
|
|
10162
|
+
|
|
10163
|
+
<ng-content />
|
|
10164
|
+
</div>
|
|
10165
|
+
`, host: {
|
|
10166
|
+
'[class]': 'classes()',
|
|
10167
|
+
'[style]': 'styles()',
|
|
10168
|
+
'[attr.data-sidebar]': '"sidebar"',
|
|
10169
|
+
'[attr.data-mobile]': '"true"',
|
|
10170
|
+
'[attr.data-state]': 'state()',
|
|
10171
|
+
}, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush }]
|
|
10172
|
+
}] });
|
|
10173
|
+
|
|
10174
|
+
class ScSidebar {
|
|
10175
|
+
observer;
|
|
10176
|
+
sidebarState = inject(ScSidebarState);
|
|
10177
|
+
class = input('');
|
|
10178
|
+
classes = computed(() => cn('block relative', this.class()));
|
|
10179
|
+
side = input('left');
|
|
10180
|
+
variant = input('sidebar');
|
|
10181
|
+
collapsible = input('offcanvas');
|
|
10182
|
+
isMobile = computed(() => this.sidebarState.isMobile());
|
|
10183
|
+
openMobile = computed(() => this.sidebarState.openMobile());
|
|
10184
|
+
// We add a state so that we can do data-state="expanded" or "collapsed".
|
|
10185
|
+
// This makes it easier to style the sidebar with Tailwind classes.
|
|
10186
|
+
state = computed(() => (this.sidebarState.open() ? 'expanded' : 'collapsed'));
|
|
10187
|
+
classes1 = signal(cn('duration-200 relative h-svh w-[--sidebar-width] bg-transparent transition-[width] ease-linear', 'group-data-[collapsible=offcanvas]:w-0', 'group-data-[side=right]:rotate-180', this.variant() === 'floating' || this.variant() === 'inset'
|
|
10188
|
+
? 'group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)_+_theme(spacing.4))]'
|
|
10189
|
+
: 'group-data-[collapsible=icon]:w-[--sidebar-width-icon]'));
|
|
10190
|
+
classes2 = signal(cn('duration-200 fixed inset-y-0 z-10 hidden h-svh w-[--sidebar-width] transition-[left,right,width] ease-linear md:flex', this.side() === 'left'
|
|
10191
|
+
? 'left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]'
|
|
10192
|
+
: 'right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]',
|
|
10193
|
+
// Adjust the padding for floating and inset variants.
|
|
10194
|
+
this.variant() === 'floating' || this.variant() === 'inset'
|
|
10195
|
+
? 'p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)_+_theme(spacing.4)_+2px)]'
|
|
10196
|
+
: 'group-data-[collapsible=icon]:w-[--sidebar-width-icon] group-data-[side=left]:border-r group-data-[side=right]:border-l'));
|
|
10197
|
+
constructor(observer) {
|
|
10198
|
+
this.observer = observer;
|
|
10199
|
+
this.observer.observe('(max-width: 768px)').subscribe((result) => {
|
|
10200
|
+
this.sidebarState.isMobile.set(result.matches);
|
|
10201
|
+
if (!result.matches && this.openMobile()) {
|
|
10202
|
+
this.sidebarState.openMobile.set(false);
|
|
10203
|
+
}
|
|
10204
|
+
});
|
|
10205
|
+
}
|
|
10206
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScSidebar, deps: [{ token: i1$6.BreakpointObserver }], target: i0.ɵɵFactoryTarget.Component });
|
|
10207
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.5", type: ScSidebar, isStandalone: true, selector: "sc-sidebar", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, side: { classPropertyName: "side", publicName: "side", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, collapsible: { classPropertyName: "collapsible", publicName: "collapsible", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "classes()" } }, ngImport: i0, template: `
|
|
10208
|
+
<ng-template #sc_sidebar_content>
|
|
10209
|
+
<ng-content />
|
|
10210
|
+
</ng-template>
|
|
10211
|
+
|
|
10212
|
+
@if (collapsible() === 'none') {
|
|
10213
|
+
<div class="flex h-full w-[--sidebar-width] flex-col bg-sidebar text-sidebar-foreground">
|
|
10214
|
+
<ng-container *ngTemplateOutlet="sc_sidebar_content" />
|
|
10215
|
+
</div>
|
|
10216
|
+
} @else if (isMobile()) {
|
|
10217
|
+
<sc-sidebar-mobile [side]="side()">
|
|
10218
|
+
<ng-container *ngTemplateOutlet="sc_sidebar_content" />
|
|
10219
|
+
</sc-sidebar-mobile>
|
|
10220
|
+
} @else {
|
|
10221
|
+
<div
|
|
10222
|
+
class="group peer hidden text-sidebar-foreground md:block"
|
|
10223
|
+
[attr.data-state]="state()"
|
|
10224
|
+
[attr.data-collapsible]="state() === 'collapsed' ? collapsible() : ''"
|
|
10225
|
+
[attr.data-variant]="variant()"
|
|
10226
|
+
[attr.data-side]="side()"
|
|
10227
|
+
>
|
|
10228
|
+
<!-- This is what handles the sidebar gap on desktop -->
|
|
10229
|
+
<div [class]="classes1()"></div>
|
|
10230
|
+
<div [class]="classes2()">
|
|
10231
|
+
<div
|
|
10232
|
+
class="flex size-full flex-col bg-sidebar group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:border-sidebar-border group-data-[variant=floating]:shadow"
|
|
10233
|
+
data-sidebar="sidebar"
|
|
10234
|
+
>
|
|
10235
|
+
<ng-container *ngTemplateOutlet="sc_sidebar_content" />
|
|
10236
|
+
</div>
|
|
10237
|
+
</div>
|
|
10238
|
+
</div>
|
|
10239
|
+
}
|
|
10240
|
+
`, isInline: true, styles: [""], dependencies: [{ kind: "ngmodule", type: LayoutModule }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ScSidebarMobile, selector: "sc-sidebar-mobile", inputs: ["side", "class"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
10241
|
+
}
|
|
10242
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScSidebar, decorators: [{
|
|
10243
|
+
type: Component,
|
|
10244
|
+
args: [{ selector: 'sc-sidebar', imports: [LayoutModule, NgTemplateOutlet, ScSidebarMobile], template: `
|
|
10245
|
+
<ng-template #sc_sidebar_content>
|
|
10246
|
+
<ng-content />
|
|
10247
|
+
</ng-template>
|
|
10248
|
+
|
|
10249
|
+
@if (collapsible() === 'none') {
|
|
10250
|
+
<div class="flex h-full w-[--sidebar-width] flex-col bg-sidebar text-sidebar-foreground">
|
|
10251
|
+
<ng-container *ngTemplateOutlet="sc_sidebar_content" />
|
|
10252
|
+
</div>
|
|
10253
|
+
} @else if (isMobile()) {
|
|
10254
|
+
<sc-sidebar-mobile [side]="side()">
|
|
10255
|
+
<ng-container *ngTemplateOutlet="sc_sidebar_content" />
|
|
10256
|
+
</sc-sidebar-mobile>
|
|
10257
|
+
} @else {
|
|
10258
|
+
<div
|
|
10259
|
+
class="group peer hidden text-sidebar-foreground md:block"
|
|
10260
|
+
[attr.data-state]="state()"
|
|
10261
|
+
[attr.data-collapsible]="state() === 'collapsed' ? collapsible() : ''"
|
|
10262
|
+
[attr.data-variant]="variant()"
|
|
10263
|
+
[attr.data-side]="side()"
|
|
10264
|
+
>
|
|
10265
|
+
<!-- This is what handles the sidebar gap on desktop -->
|
|
10266
|
+
<div [class]="classes1()"></div>
|
|
10267
|
+
<div [class]="classes2()">
|
|
10268
|
+
<div
|
|
10269
|
+
class="flex size-full flex-col bg-sidebar group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:border-sidebar-border group-data-[variant=floating]:shadow"
|
|
10270
|
+
data-sidebar="sidebar"
|
|
10271
|
+
>
|
|
10272
|
+
<ng-container *ngTemplateOutlet="sc_sidebar_content" />
|
|
10273
|
+
</div>
|
|
10274
|
+
</div>
|
|
10275
|
+
</div>
|
|
10276
|
+
}
|
|
10277
|
+
`, host: {
|
|
10278
|
+
'[class]': 'classes()',
|
|
10279
|
+
}, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush }]
|
|
10280
|
+
}], ctorParameters: () => [{ type: i1$6.BreakpointObserver }] });
|
|
10281
|
+
|
|
10282
|
+
class ScSidebarProvider {
|
|
10283
|
+
sidebarState = inject(ScSidebarState);
|
|
10284
|
+
class = input('');
|
|
10285
|
+
classes = computed(() => cn('group/sidebar-wrapper flex min-h-svh w-full has-[[data-variant=inset]]:bg-sidebar', this.sidebarState.openMobile() && scOverlayClasses(), this.class()));
|
|
10286
|
+
styles = signal(`--sidebar-width: ${SIDEBAR_WIDTH}; --sidebar-width-icon: ${SIDEBAR_WIDTH_ICON};`);
|
|
10287
|
+
stateMobile = computed(() => {
|
|
10288
|
+
return this.sidebarState.openMobile() ? 'open' : 'closed';
|
|
10289
|
+
});
|
|
10290
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScSidebarProvider, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
10291
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.0.5", type: ScSidebarProvider, isStandalone: true, selector: "sc-sidebar-provider", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "classes()", "style": "styles()", "attr.data-state": "stateMobile()" } }, providers: [], ngImport: i0, template: `
|
|
10292
|
+
<ng-content />
|
|
10293
|
+
`, isInline: true, styles: [""], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
10294
|
+
}
|
|
10295
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScSidebarProvider, decorators: [{
|
|
10296
|
+
type: Component,
|
|
10297
|
+
args: [{ selector: 'sc-sidebar-provider', imports: [], template: `
|
|
10298
|
+
<ng-content />
|
|
10299
|
+
`, host: {
|
|
10300
|
+
'[class]': 'classes()',
|
|
10301
|
+
'[style]': 'styles()',
|
|
10302
|
+
'[attr.data-state]': 'stateMobile()',
|
|
10303
|
+
}, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [] }]
|
|
10304
|
+
}] });
|
|
10305
|
+
|
|
10306
|
+
class ScAutocompleteItem {
|
|
10307
|
+
class = input('');
|
|
10308
|
+
classes = computed(() => cn('relative flex cursor-default gap-2 select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none data-[disabled=true]:pointer-events-none hover:bg-accent hover:text-accent-foreground data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground data-[disabled=true]:opacity-50 [&_.svg]:pointer-events-none [&_.svg]:size-4 [&_.svg]:shrink-0', this.class()));
|
|
10309
|
+
_disabled = input(false, {
|
|
10310
|
+
transform: booleanAttribute,
|
|
10311
|
+
});
|
|
10312
|
+
item = input.required();
|
|
10313
|
+
selectedItem = input(undefined);
|
|
10314
|
+
isSelected = computed(() => {
|
|
10315
|
+
return this.item().id === this.selectedItem()?.id;
|
|
10316
|
+
});
|
|
10317
|
+
_isActive = signal(false);
|
|
10318
|
+
disabled;
|
|
10319
|
+
getLabel() {
|
|
10320
|
+
return this.item.name;
|
|
10321
|
+
}
|
|
10322
|
+
setActiveStyles() {
|
|
10323
|
+
this._isActive.set(true);
|
|
10324
|
+
}
|
|
10325
|
+
setInactiveStyles() {
|
|
10326
|
+
this._isActive.set(false);
|
|
10327
|
+
}
|
|
10328
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScAutocompleteItem, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
10329
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.5", type: ScAutocompleteItem, isStandalone: true, selector: "sc-autocomplete-item", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, _disabled: { classPropertyName: "_disabled", publicName: "_disabled", isSignal: true, isRequired: false, transformFunction: null }, item: { classPropertyName: "item", publicName: "item", isSignal: true, isRequired: true, transformFunction: null }, selectedItem: { classPropertyName: "selectedItem", publicName: "selectedItem", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "classes()", "attr.data-disabled": "_disabled()", "attr.data-selected": "_isActive()" } }, ngImport: i0, template: `
|
|
10330
|
+
<ng-content />
|
|
10331
|
+
|
|
10332
|
+
@if (isSelected()) {
|
|
10333
|
+
<svg-check-icon class="ml-auto" />
|
|
10334
|
+
}
|
|
10335
|
+
`, isInline: true, styles: [""], dependencies: [{ kind: "component", type: SvgCheckIcon, selector: "svg-check-icon", inputs: ["class", "svgClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
10336
|
+
}
|
|
10337
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScAutocompleteItem, decorators: [{
|
|
10338
|
+
type: Component,
|
|
10339
|
+
args: [{ selector: 'sc-autocomplete-item', imports: [SvgCheckIcon], template: `
|
|
10340
|
+
<ng-content />
|
|
10341
|
+
|
|
10342
|
+
@if (isSelected()) {
|
|
10343
|
+
<svg-check-icon class="ml-auto" />
|
|
10344
|
+
}
|
|
10345
|
+
`, host: {
|
|
10346
|
+
'[class]': 'classes()',
|
|
10347
|
+
'[attr.data-disabled]': '_disabled()',
|
|
10348
|
+
'[attr.data-selected]': '_isActive()',
|
|
10349
|
+
}, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush }]
|
|
10350
|
+
}] });
|
|
10351
|
+
|
|
10352
|
+
class ScAutocomplete {
|
|
10353
|
+
class = input('');
|
|
10354
|
+
classes = computed(() => cn('flex h-full w-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground', this.class()));
|
|
10355
|
+
items = signal([
|
|
10356
|
+
{
|
|
10357
|
+
id: '5b902934d965e7501f4e1c6f',
|
|
10358
|
+
label: 'Caroline Hodges',
|
|
10359
|
+
},
|
|
10360
|
+
{
|
|
10361
|
+
id: '5b9029348f7eed8b6f5f02db',
|
|
10362
|
+
label: 'Delores Rivas',
|
|
10363
|
+
},
|
|
10364
|
+
{
|
|
10365
|
+
id: '5b9029346f48c8407c64d0d5',
|
|
10366
|
+
label: 'Darlene Franklin',
|
|
10367
|
+
},
|
|
10368
|
+
{
|
|
10369
|
+
id: '5b9029341eff315fa87f9e21',
|
|
10370
|
+
label: 'Alfreda Love',
|
|
10371
|
+
},
|
|
10372
|
+
{
|
|
10373
|
+
id: '5b9029342e8917c6ccdb9865',
|
|
10374
|
+
label: 'Marcy Ratliff',
|
|
10375
|
+
},
|
|
10376
|
+
{
|
|
10377
|
+
id: '5b9029349dbb48013460e01f',
|
|
10378
|
+
label: 'Beulah Nielsen',
|
|
10379
|
+
},
|
|
10380
|
+
{
|
|
10381
|
+
id: '5b902934f4f1586e5e72d74a',
|
|
10382
|
+
label: 'Morton Kerr',
|
|
10383
|
+
},
|
|
10384
|
+
{
|
|
10385
|
+
id: '5b9029347918bb204bf7014e',
|
|
10386
|
+
label: 'Autumn Tillman',
|
|
10387
|
+
},
|
|
10388
|
+
{
|
|
10389
|
+
id: '5b902934b86f80e1fc60c626',
|
|
10390
|
+
label: 'Diane Bennett',
|
|
10391
|
+
},
|
|
10392
|
+
{
|
|
10393
|
+
id: '5b9029348999f59215020349',
|
|
10394
|
+
label: 'June Eaton',
|
|
10395
|
+
},
|
|
10396
|
+
]);
|
|
10397
|
+
searchControl = new FormControl();
|
|
10398
|
+
input = toSignal(this.searchControl.valueChanges.pipe(debounceTime(300)));
|
|
10399
|
+
filteredItems = computed(() => {
|
|
10400
|
+
if (!this.input()) {
|
|
10401
|
+
return this.items();
|
|
10402
|
+
}
|
|
10403
|
+
return this.items().filter((item) => item.label.toLowerCase().indexOf(this.input().toLowerCase()) !== -1);
|
|
10404
|
+
});
|
|
10405
|
+
selectedItem = signal(undefined);
|
|
10406
|
+
viewItems = viewChildren(ScAutocompleteItem);
|
|
10407
|
+
keyManager;
|
|
10408
|
+
ngAfterViewInit() {
|
|
10409
|
+
this.keyManager = new ActiveDescendantKeyManager(this.viewItems()).withWrap().withTypeAhead();
|
|
10410
|
+
}
|
|
10411
|
+
onKeydown(event) {
|
|
10412
|
+
if (event.keyCode === ENTER) {
|
|
10413
|
+
this.selectedItem.set(this.keyManager.activeItem ? this.keyManager.activeItem.item() : undefined);
|
|
10414
|
+
}
|
|
10415
|
+
else {
|
|
10416
|
+
this.keyManager.onKeydown(event);
|
|
10417
|
+
}
|
|
10418
|
+
}
|
|
10419
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScAutocomplete, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
10420
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.5", type: ScAutocomplete, isStandalone: true, selector: "sc-autocomplete", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "classes()" } }, viewQueries: [{ propertyName: "viewItems", predicate: ScAutocompleteItem, descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
10421
|
+
<!--sc-autocomplete-input /-->
|
|
10422
|
+
|
|
10423
|
+
<input
|
|
10424
|
+
[formControl]="searchControl"
|
|
10425
|
+
(keyup)="onKeydown($event)"
|
|
10426
|
+
sc-input
|
|
10427
|
+
placeholder="Search..."
|
|
10428
|
+
/>
|
|
10429
|
+
|
|
10430
|
+
@for (item of filteredItems(); track $index) {
|
|
10431
|
+
<sc-autocomplete-item [item]="item" [selectedItem]="selectedItem()">
|
|
10432
|
+
{{ item.label }}
|
|
10433
|
+
</sc-autocomplete-item>
|
|
10434
|
+
}
|
|
10435
|
+
|
|
10436
|
+
<br />
|
|
10437
|
+
<br />
|
|
10438
|
+
<br />
|
|
10439
|
+
<br />
|
|
10440
|
+
|
|
10441
|
+
selectedItem : {{ selectedItem() | json }}
|
|
10442
|
+
`, isInline: true, styles: [""], dependencies: [{ kind: "component", type: ScInput, selector: "input[sc-input]", inputs: ["class"] }, { kind: "component", type: ScAutocompleteItem, selector: "sc-autocomplete-item", inputs: ["class", "_disabled", "item", "selectedItem"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "pipe", type: JsonPipe, name: "json" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
10443
|
+
}
|
|
10444
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScAutocomplete, decorators: [{
|
|
10445
|
+
type: Component,
|
|
10446
|
+
args: [{ selector: 'sc-autocomplete', imports: [ScInput, ScAutocompleteItem, ReactiveFormsModule, JsonPipe], template: `
|
|
10447
|
+
<!--sc-autocomplete-input /-->
|
|
10448
|
+
|
|
10449
|
+
<input
|
|
10450
|
+
[formControl]="searchControl"
|
|
10451
|
+
(keyup)="onKeydown($event)"
|
|
10452
|
+
sc-input
|
|
10453
|
+
placeholder="Search..."
|
|
10454
|
+
/>
|
|
10455
|
+
|
|
10456
|
+
@for (item of filteredItems(); track $index) {
|
|
10457
|
+
<sc-autocomplete-item [item]="item" [selectedItem]="selectedItem()">
|
|
10458
|
+
{{ item.label }}
|
|
10459
|
+
</sc-autocomplete-item>
|
|
10460
|
+
}
|
|
10461
|
+
|
|
10462
|
+
<br />
|
|
10463
|
+
<br />
|
|
10464
|
+
<br />
|
|
10465
|
+
<br />
|
|
10466
|
+
|
|
10467
|
+
selectedItem : {{ selectedItem() | json }}
|
|
10468
|
+
`, host: {
|
|
10469
|
+
'[class]': 'classes()',
|
|
10470
|
+
}, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush }]
|
|
10471
|
+
}] });
|
|
10472
|
+
|
|
11074
10473
|
/**
|
|
11075
10474
|
* Generated bundle index. Do not edit.
|
|
11076
10475
|
*/
|
|
11077
10476
|
|
|
11078
|
-
export { FormFieldCustomControlComponent, ScAccordion, ScAccordionContent, ScAccordionHeader, ScAccordionItem, ScAccordionItemDescription, ScAccordionTrigger, ScAlert, ScAlertDescription, ScAlertDialog, ScAlertTitle, ScAspectRatio, ScAvatar, ScBadge, ScBreadcrumb, ScBreadcrumbEllipsis, ScBreadcrumbItem, ScBreadcrumbLink, ScBreadcrumbList, ScBreadcrumbPage, ScBreadcrumbSeparator, ScButton, ScCard, ScCardContent, ScCardDescription, ScCardFooter, ScCardHeader, ScCardTitle, ScCarousel, ScCarouselContainer, ScCarouselItem, ScCarouselItems, ScCarouselNext, ScCarouselPrevious, ScCheckbox, ScCollapsible, ScCollapsibleContent, ScCollapsibleTrigger, ScCommand, ScCommandDialog, ScCommandEmpty, ScCommandError, ScCommandGroup, ScCommandInput, ScCommandItem, ScCommandList, ScCommandLoading, ScCommandSeparator, ScCommandShortcut, ScContextMenuTriggerFor, ScDataTable, ScDatePicker, ScDialog, ScDialogClose, ScDialogContent, ScDialogDescription, ScDialogFooter, ScDialogHeader, ScDialogTitle, ScEditor, ScHoverCard, ScHoverCardTriggerFor,
|
|
10477
|
+
export { FormFieldCustomControlComponent, ScAccordion, ScAccordionContent, ScAccordionHeader, ScAccordionItem, ScAccordionItemDescription, ScAccordionTrigger, ScAlert, ScAlertDescription, ScAlertDialog, ScAlertTitle, ScAspectRatio, ScAutocomplete, ScAvatar, ScBadge, ScBreadcrumb, ScBreadcrumbEllipsis, ScBreadcrumbItem, ScBreadcrumbLink, ScBreadcrumbList, ScBreadcrumbPage, ScBreadcrumbSeparator, ScButton, ScCalendar, ScCard, ScCardContent, ScCardDescription, ScCardFooter, ScCardHeader, ScCardTitle, ScCarousel, ScCarouselContainer, ScCarouselItem, ScCarouselItems, ScCarouselNext, ScCarouselPrevious, ScCheckbox, ScCollapsible, ScCollapsibleContent, ScCollapsibleTrigger, ScCommand, ScCommandDialog, ScCommandEmpty, ScCommandError, ScCommandGroup, ScCommandInput, ScCommandItem, ScCommandList, ScCommandLoading, ScCommandSeparator, ScCommandShortcut, ScContextMenuTriggerFor, ScDataTable, ScDatePicker, ScDialog, ScDialogClose, ScDialogContent, ScDialogDescription, ScDialogFooter, ScDialogHeader, ScDialogTitle, ScEditor, ScFullCalendar, ScHoverCard, ScHoverCardTriggerFor, ScInput, ScInputOTPGroup, ScInputOTPSeparator, ScInputOTPSlot, ScInputOtp, ScLabel, ScMenu, ScMenuBar, ScMenuBarItem, ScMenuCheckboxGroup, ScMenuCheckboxItem, ScMenuGroup, ScMenuItem, ScMenuLabel, ScMenuRadioGroup, ScMenuRadioItem, ScMenuSeparator, ScMenuShortcut, ScMenuTriggerFor, ScNav, ScNavItem, ScNavItemDropdown, ScNavLink, ScNavList, ScOption, ScPaginator, ScPopoverTriggerFor, ScProgress, ScRadioGroup, ScRadioItem, ScScrollArea, ScSelect, ScSheet, ScSheetClose, ScSheetConfig, ScSheetTrigger, ScSidebar, ScSidebarProvider, ScSidebarState, ScSidebarToggler, ScSkeleton, ScSlider, ScSwitch, ScTab, ScTabContent, ScTabLabel, ScTable, ScTableBody, ScTableCaption, ScTableCell, ScTableContainer, ScTableFooter, ScTableHead, ScTableHeader, ScTableRow, ScTabs, ScTextarea, ScThemeToggler, ScToast, ScToastExample, ScToggle, ScTooltip, TelInputComponent, TelModel, Toaster, buttonVariants, cn, scThemeProvider };
|
|
11079
10478
|
//# sourceMappingURL=semantic-components-ui.mjs.map
|