@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.
Files changed (46) hide show
  1. package/fesm2022/semantic-components-ui.mjs +1175 -1776
  2. package/fesm2022/semantic-components-ui.mjs.map +1 -1
  3. package/index.d.ts +4 -0
  4. package/lib/components/autocomplete/autocomplete-item.d.ts +18 -0
  5. package/lib/components/autocomplete/autocomplete-model.d.ts +4 -0
  6. package/lib/components/autocomplete/autocomplete.d.ts +20 -0
  7. package/lib/components/autocomplete/index.d.ts +1 -0
  8. package/lib/components/{date-picker/inline-date-picker.d.ts → calendar/calendar.d.ts} +5 -3
  9. package/lib/components/calendar/index.d.ts +1 -0
  10. package/lib/components/{date-picker → calendar}/month-days.d.ts +3 -1
  11. package/lib/components/calendar/month-year-header.d.ts +9 -0
  12. package/lib/components/checkbox/checkbox.d.ts +6 -1
  13. package/lib/components/date-picker/date-picker.d.ts +4 -2
  14. package/lib/components/date-picker/index.d.ts +0 -1
  15. package/lib/components/editor/editor.d.ts +4 -1
  16. package/lib/components/full-calendar/full-calendar.d.ts +7 -0
  17. package/lib/components/full-calendar/index.d.ts +1 -0
  18. package/lib/components/menu/menu-checkbox-item.d.ts +4 -3
  19. package/lib/components/overlay/index.d.ts +1 -0
  20. package/lib/components/overlay/utils.d.ts +1 -0
  21. package/lib/components/select/listbox-option.d.ts +8 -0
  22. package/lib/components/select/listbox.d.ts +7 -0
  23. package/lib/components/select/option.d.ts +3 -5
  24. package/lib/components/select/select.d.ts +11 -9
  25. package/lib/components/sheet/index.d.ts +2 -1
  26. package/lib/components/sheet/sheet-close.d.ts +10 -0
  27. package/lib/components/sheet/sheet-config.d.ts +5 -0
  28. package/lib/components/sheet/sheet-container.d.ts +9 -0
  29. package/lib/components/sheet/sheet-trigger.d.ts +11 -11
  30. package/lib/components/sheet/sheet.d.ts +3 -3
  31. package/lib/components/sidebar/constants.d.ts +3 -0
  32. package/lib/components/sidebar/index.d.ts +4 -0
  33. package/lib/components/sidebar/sidebar-mobile.d.ts +13 -0
  34. package/lib/components/sidebar/sidebar-provider.d.ts +11 -0
  35. package/lib/components/sidebar/sidebar-state.d.ts +9 -0
  36. package/lib/components/sidebar/sidebar-toggler.d.ts +8 -0
  37. package/lib/components/sidebar/sidebar.d.ts +20 -0
  38. package/lib/components/typography/article.d.ts +8 -0
  39. package/lib/components/typography/heading.d.ts +8 -0
  40. package/lib/components/typography/index.d.ts +2 -0
  41. package/package.json +1 -2
  42. package/lib/components/date-picker/month-year-header.d.ts +0 -8
  43. package/lib/components/select/select-state.d.ts +0 -9
  44. package/lib/components/sheet/sheet-toggler.d.ts +0 -10
  45. package/lib/components/sheet/sidebar-content.d.ts +0 -7
  46. /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, signal, Injectable, ChangeDetectorRef, viewChild, afterNextRender, forwardRef, output, effect, LOCALE_ID, Injector, ViewContainerRef, contentChildren, model, booleanAttribute, untracked } from '@angular/core';
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 { Overlay, OverlayModule, OverlayContainer } from '@angular/cdk/overlay';
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, NgTemplateOutlet, NgOptimizedImage } from '@angular/common';
23
- import { TAB, ESCAPE, hasModifierKey } from '@angular/cdk/keycodes';
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 { FocusMonitor } from '@angular/cdk/a11y';
33
- import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
34
- import { Subject } from 'rxjs';
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.class(),
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
- `, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [
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.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { 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"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
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 ScInput {
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
- <div class="grid grid-cols-7">
5416
- @for (weekDayName of weekDaysNames(); track weekDayName.long) {
5417
- <abbr
5418
- class="text-center text-muted-foreground"
5419
- [title]="weekDayName.long"
5420
- [attr.aria-label]="weekDayName.long"
5421
- >
5422
- {{ weekDayName.short }}
5423
- </abbr>
5424
- }
5425
-
5426
- @for (day of days(); track $index; let index = $index) {
5427
- <button
5428
- [ngClass]="{
5429
- 'col-start-1': index === 0 && firstDayMonth() === 0,
5430
- 'col-start-2': index === 0 && firstDayMonth() === 1,
5431
- 'col-start-3': index === 0 && firstDayMonth() === 2,
5432
- 'col-start-4': index === 0 && firstDayMonth() === 3,
5433
- 'col-start-5': index === 0 && firstDayMonth() === 4,
5434
- 'col-start-6': index === 0 && firstDayMonth() === 5,
5435
- 'col-start-7': index === 0 && firstDayMonth() === 6,
5436
- }"
5437
- [attr.data-sc-day]="day"
5438
- [variant]="isSelected(day) ? 'primary' : 'ghost'"
5439
- (click)="setSelectedDay($event)"
5440
- sc-button
5441
- size="icon"
5442
- >
5443
- {{ day.slice(-2) }}
5444
- </button>
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
- <div class="grid grid-cols-7">
5453
- @for (weekDayName of weekDaysNames(); track weekDayName.long) {
5454
- <abbr
5455
- class="text-center text-muted-foreground"
5456
- [title]="weekDayName.long"
5457
- [attr.aria-label]="weekDayName.long"
5458
- >
5459
- {{ weekDayName.short }}
5460
- </abbr>
5461
- }
5462
-
5463
- @for (day of days(); track $index; let index = $index) {
5464
- <button
5465
- [ngClass]="{
5466
- 'col-start-1': index === 0 && firstDayMonth() === 0,
5467
- 'col-start-2': index === 0 && firstDayMonth() === 1,
5468
- 'col-start-3': index === 0 && firstDayMonth() === 2,
5469
- 'col-start-4': index === 0 && firstDayMonth() === 3,
5470
- 'col-start-5': index === 0 && firstDayMonth() === 4,
5471
- 'col-start-6': index === 0 && firstDayMonth() === 5,
5472
- 'col-start-7': index === 0 && firstDayMonth() === 6,
5473
- }"
5474
- [attr.data-sc-day]="day"
5475
- [variant]="isSelected(day) ? 'primary' : 'ghost'"
5476
- (click)="setSelectedDay($event)"
5477
- sc-button
5478
- size="icon"
5479
- >
5480
- {{ day.slice(-2) }}
5481
- </button>
5482
- }
5483
- </div>
5484
- `, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush }]
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
- classes = signal('flex justify-between');
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 ScInlineDatePicker {
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: ScInlineDatePicker, deps: [], target: i0.ɵɵFactoryTarget.Component });
5661
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.5", type: ScInlineDatePicker, isStandalone: true, selector: "sc-inline-date-picker", ngImport: i0, template: `
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: ScInlineDatePicker, decorators: [{
6025
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScCalendar, decorators: [{
5685
6026
  type: Component,
5686
- args: [{ selector: 'sc-inline-date-picker', imports: [
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
- `, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush }]
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(ScInlineDatePicker);
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._overlayOrigin();
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._overlayOrigin()?.nativeElement;
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", outputs: { opened: "opened", closed: "closed", selected: "selected" }, viewQueries: [{ propertyName: "_input", first: true, predicate: ["input"], descendants: true, isSignal: true }, { propertyName: "_overlayOrigin", first: true, predicate: ["overlayOrigin"], descendants: true, isSignal: true }], ngImport: i0, template: `
5843
- {{ dateFormatPattern() }}
5844
- <div class="relative" #overlayOrigin>
5845
- <button class="absolute inset-y-0 end-0 pe-2" (click)="open()">
5846
- <svg-calendar-icon />
5847
- </button>
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
- {{ dateFormatPattern() }}
5856
- <div class="relative" #overlayOrigin>
5857
- <button class="absolute inset-y-0 end-0 pe-2" (click)="open()">
5858
- <svg-calendar-icon />
5859
- </button>
5860
- <input #input sc-input type="text" placeholder="Select date" />
5861
- </div>
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 ScSelectState {
6129
- selectedValue = signal('');
6130
- selectedLabel = signal('');
6131
- isOpen = signal(false);
6132
- closeOverlay = signal(false);
6133
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScSelectState, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
6134
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ScSelectState });
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: ScSelectState, decorators: [{
6137
- type: Injectable
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
- class ScSelect {
6141
- static nextId = 0;
6142
- id = 0;
6143
- _getPanelId() {
6144
- return `panel-${this.id}`;
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
- _cdr = inject(ChangeDetectorRef);
6147
- state = inject(ScSelectState);
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
- _dir = inject(Directionality, { optional: true });
6150
- _viewContainerRef = inject(ViewContainerRef);
6151
- _portal = null;
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
- const selectedValue = this.state.selectedValue();
6159
- this.setValue(selectedValue);
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
- if (this.state.isOpen()) {
6245
- return;
6246
- }
6247
- this.state.isOpen.set(true);
6248
- const overlayRef = this._getOverlayRef();
6249
- overlayRef.updateSize({ width: this.scSelectTrigger().nativeElement.offsetWidth });
6250
- this._portal ??= new TemplatePortal(this._panelTemplate(), this._viewContainerRef);
6251
- overlayRef.attach(this._portal);
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.state.isOpen()) {
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
- /** Handles keyboard events while the overlay is open. */
6260
- _handleKeydown(event) {
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
- this.overlayRef.updateSize({ height: 300, width: '100%' });
6500
- return;
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
- this.overlayRef.updateSize({ height: 300, width: '100%' });
6504
- return;
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
- this.overlayRef.updateSize({ width: 620 });
6508
- return;
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
- this.overlayRef.updateSize({ width: 620 });
6512
- return;
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 data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm',
7769
- right: 'size-full border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm',
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
- sidebarState = inject(ScSheetTrigger);
6659
+ scSheetTrigger = inject(ScSheetTrigger);
7778
6660
  state = computed(() => {
7779
- return this.sidebarState.open() ? 'open' : 'closed';
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
- <sc-sheet-toggler class="absolute right-1 top-1" />
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: [ScSheetToggler, SidebarContent], template: `
7794
- <sc-sheet-toggler class="absolute right-1 top-1" />
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 (checked() === true) {
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 (checked() === true) {
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
- scChecked = model();
10612
- scTriggered = output();
10613
- toggle() {
10614
- this.scChecked.update((v) => !v);
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: { scChecked: "scCheckedChange", scTriggered: "scTriggered" }, host: { listeners: { "click": "toggle()" }, properties: { "class": "classes()" } }, hostDirectives: [{ directive: i1$5.CdkMenuItemCheckbox, inputs: ["cdkMenuItemChecked", "scChecked"], outputs: ["cdkMenuItemTriggered", "scTriggered"] }], ngImport: i0, template: `
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, ScInlineDatePicker, 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, ScSheetToggler, ScSheetTrigger, 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 };
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