@area8975/ui 0.2.2-dev.48 → 0.2.2-dev.49

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.
@@ -1,6 +1,6 @@
1
1
  import * as i0 from "@angular/core";
2
- import { ChangeDetectionStrategy, ChangeDetectorRef, Component, DestroyRef, Directive, ElementRef, Injectable, InjectionToken, Injector, TemplateRef, ViewEncapsulation, afterNextRender, afterRenderEffect, booleanAttribute, computed, contentChild, contentChildren, effect, inject, input, isDevMode, linkedSignal, makeEnvironmentProviders, model, numberAttribute, output, provideAppInitializer, signal, untracked, viewChild } from "@angular/core";
3
- import { DOCUMENT, NgTemplateOutlet } from "@angular/common";
2
+ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, DOCUMENT, DestroyRef, Directive, ElementRef, Injectable, InjectionToken, Injector, TemplateRef, ViewEncapsulation, afterNextRender, afterRenderEffect, booleanAttribute, computed, contentChild, contentChildren, effect, inject, input, isDevMode, linkedSignal, makeEnvironmentProviders, model, numberAttribute, output, provideAppInitializer, signal, untracked, viewChild } from "@angular/core";
3
+ import { DOCUMENT as DOCUMENT$1, NgTemplateOutlet } from "@angular/common";
4
4
  import { NgIcon, provideIcons } from "@ng-icons/core";
5
5
  import { heroArrowUp, heroArrowUpTray, heroArrowUturnLeft, heroArrowUturnRight, heroBars2, heroBars3, heroBold, heroCalendar, heroCalendarDateRange, heroChatBubbleLeft, heroCheck, heroChevronDoubleLeft, heroChevronDown, heroChevronLeft, heroChevronRight, heroClock, heroCodeBracket, heroCodeBracketSquare, heroDocument, heroEye, heroEyeSlash, heroFunnel, heroH1, heroH2, heroH3, heroItalic, heroLink, heroListBullet, heroMagnifyingGlass, heroMinus, heroNumberedList, heroPlus, heroQuestionMarkCircle, heroStrikethrough, heroUnderline, heroViewColumns, heroXMark } from "@ng-icons/heroicons/outline";
6
6
  import { Editor } from "@tiptap/core";
@@ -79,7 +79,7 @@ function injectMoneyFormatter(options = {}) {
79
79
  var UiDarkClass = class UiDarkClass {
80
80
  isDark = signal(false, ...ngDevMode ? [{ debugName: "isDark" }] : /* istanbul ignore next */ []);
81
81
  constructor() {
82
- const root = inject(DOCUMENT).documentElement;
82
+ const root = inject(DOCUMENT$1).documentElement;
83
83
  const read = () => this.isDark.set(root.classList.contains("dark"));
84
84
  read();
85
85
  if (typeof MutationObserver === "undefined") return;
@@ -3661,6 +3661,7 @@ var UiDropzoneComponent = class UiDropzoneComponent {
3661
3661
  value: "valueChange",
3662
3662
  rejected: "rejected"
3663
3663
  },
3664
+ host: { properties: { "attr.id": "null" } },
3664
3665
  providers: [provideIcons({
3665
3666
  heroArrowUpTray,
3666
3667
  heroDocument
@@ -3698,6 +3699,7 @@ i0.ɵɵngDeclareClassMetadata({
3698
3699
  type: Component,
3699
3700
  args: [{
3700
3701
  selector: "ui-dropzone",
3702
+ host: { "[attr.id]": "null" },
3701
3703
  imports: [NgIcon],
3702
3704
  providers: [provideIcons({
3703
3705
  heroArrowUpTray,
@@ -3820,9 +3822,25 @@ var UiFieldComponent = class UiFieldComponent {
3820
3822
  for = input("", ...ngDevMode ? [{ debugName: "for" }] : /* istanbul ignore next */ []);
3821
3823
  hintId = input("", ...ngDevMode ? [{ debugName: "hintId" }] : /* istanbul ignore next */ []);
3822
3824
  errorId = input("", ...ngDevMode ? [{ debugName: "errorId" }] : /* istanbul ignore next */ []);
3825
+ labelId = computed(() => this.for() && this.label() ? `${this.for()}-label` : "", ...ngDevMode ? [{ debugName: "labelId" }] : /* istanbul ignore next */ []);
3826
+ document = inject(DOCUMENT);
3823
3827
  get forAttr() {
3824
3828
  return this.for() || null;
3825
3829
  }
3830
+ get labelIdAttr() {
3831
+ return this.labelId() || null;
3832
+ }
3833
+ onClick(event) {
3834
+ const label = event.target.closest("label");
3835
+ if (!label?.classList.contains("ui-field-label")) return;
3836
+ const control = label.control;
3837
+ if (control instanceof HTMLInputElement && (control.type === "checkbox" || control.type === "radio")) return;
3838
+ const target = control ?? (this.for() ? this.document.getElementById(this.for()) : null);
3839
+ if (target) {
3840
+ event.preventDefault();
3841
+ target.focus();
3842
+ }
3843
+ }
3826
3844
  get hintAttr() {
3827
3845
  return this.hintId() || null;
3828
3846
  }
@@ -3894,9 +3912,12 @@ var UiFieldComponent = class UiFieldComponent {
3894
3912
  transformFunction: null
3895
3913
  }
3896
3914
  },
3897
- host: { classAttribute: "block" },
3915
+ host: {
3916
+ listeners: { "click": "onClick($event)" },
3917
+ classAttribute: "block"
3918
+ },
3898
3919
  ngImport: i0,
3899
- template: "@if (label()) {\n <label\n [attr.for]=\"forAttr\"\n class=\"ui-text-body ui-field-label\"\n >\n {{ label() }}\n\n @if (required()) {\n <span class=\"text-danger-500\" aria-hidden=\"true\">*</span>\n <span class=\"sr-only\">(required)</span>\n }\n </label>\n}\n\n<ng-content />\n\n@if (error()) {\n <div\n [attr.id]=\"errorAttr\"\n class=\"text-danger-600 ui-text-caption ui-field-hint\"\n role=\"alert\"\n >\n {{ error() }}\n </div>\n} @else if (hint()) {\n <div\n [attr.id]=\"hintAttr\"\n class=\"text-muted-foreground-1 ui-text-caption ui-field-hint\"\n >\n {{ hint() }}\n </div>\n}\n",
3920
+ template: "@if (label()) {\n <label\n [attr.id]=\"labelIdAttr\"\n [attr.for]=\"forAttr\"\n class=\"ui-text-body ui-field-label\"\n >\n {{ label() }}\n\n @if (required()) {\n <span class=\"text-danger-500\" aria-hidden=\"true\">*</span>\n <span class=\"sr-only\">(required)</span>\n }\n </label>\n}\n\n<ng-content />\n\n@if (error()) {\n <div\n [attr.id]=\"errorAttr\"\n class=\"text-danger-600 ui-text-caption ui-field-hint\"\n role=\"alert\"\n >\n {{ error() }}\n </div>\n} @else if (hint()) {\n <div\n [attr.id]=\"hintAttr\"\n class=\"text-muted-foreground-1 ui-text-caption ui-field-hint\"\n >\n {{ hint() }}\n </div>\n}\n",
3900
3921
  styles: [":host{position:relative}.ui-field-label{margin-bottom:calc(var(--spacing, .25rem) * 1.5);display:inline-flex;align-items:center;column-gap:calc(var(--spacing, .25rem) * 2)}.ui-field-hint{margin-top:calc(var(--spacing, .25rem) * 1.5);display:inline-flex;align-items:center;column-gap:calc(var(--spacing, .25rem) * 2)}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"]
3901
3922
  });
3902
3923
  };
@@ -3909,8 +3930,11 @@ i0.ɵɵngDeclareClassMetadata({
3909
3930
  type: Component,
3910
3931
  args: [{
3911
3932
  selector: "ui-field",
3912
- host: { class: "block" },
3913
- template: "@if (label()) {\n <label\n [attr.for]=\"forAttr\"\n class=\"ui-text-body ui-field-label\"\n >\n {{ label() }}\n\n @if (required()) {\n <span class=\"text-danger-500\" aria-hidden=\"true\">*</span>\n <span class=\"sr-only\">(required)</span>\n }\n </label>\n}\n\n<ng-content />\n\n@if (error()) {\n <div\n [attr.id]=\"errorAttr\"\n class=\"text-danger-600 ui-text-caption ui-field-hint\"\n role=\"alert\"\n >\n {{ error() }}\n </div>\n} @else if (hint()) {\n <div\n [attr.id]=\"hintAttr\"\n class=\"text-muted-foreground-1 ui-text-caption ui-field-hint\"\n >\n {{ hint() }}\n </div>\n}\n",
3933
+ host: {
3934
+ class: "block",
3935
+ "(click)": "onClick($event)"
3936
+ },
3937
+ template: "@if (label()) {\n <label\n [attr.id]=\"labelIdAttr\"\n [attr.for]=\"forAttr\"\n class=\"ui-text-body ui-field-label\"\n >\n {{ label() }}\n\n @if (required()) {\n <span class=\"text-danger-500\" aria-hidden=\"true\">*</span>\n <span class=\"sr-only\">(required)</span>\n }\n </label>\n}\n\n<ng-content />\n\n@if (error()) {\n <div\n [attr.id]=\"errorAttr\"\n class=\"text-danger-600 ui-text-caption ui-field-hint\"\n role=\"alert\"\n >\n {{ error() }}\n </div>\n} @else if (hint()) {\n <div\n [attr.id]=\"hintAttr\"\n class=\"text-muted-foreground-1 ui-text-caption ui-field-hint\"\n >\n {{ hint() }}\n </div>\n}\n",
3914
3938
  styles: [":host{position:relative}.ui-field-label{margin-bottom:calc(var(--spacing, .25rem) * 1.5);display:inline-flex;align-items:center;column-gap:calc(var(--spacing, .25rem) * 2)}.ui-field-hint{margin-top:calc(var(--spacing, .25rem) * 1.5);display:inline-flex;align-items:center;column-gap:calc(var(--spacing, .25rem) * 2)}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"]
3915
3939
  }]
3916
3940
  }],
@@ -4282,6 +4306,7 @@ var UiInputComponent = class UiInputComponent {
4282
4306
  focused: "focused",
4283
4307
  blurred: "blurred"
4284
4308
  },
4309
+ host: { properties: { "attr.id": "null" } },
4285
4310
  providers: [provideIcons({
4286
4311
  heroEyeSlash,
4287
4312
  heroEye
@@ -4334,6 +4359,7 @@ i0.ɵɵngDeclareClassMetadata({
4334
4359
  type: Component,
4335
4360
  args: [{
4336
4361
  selector: "ui-input",
4362
+ host: { "[attr.id]": "null" },
4337
4363
  imports: [NgTemplateOutlet, NgIcon],
4338
4364
  providers: [provideIcons({
4339
4365
  heroEyeSlash,
@@ -5317,9 +5343,11 @@ var UiRichTextEditorComponent = class UiRichTextEditorComponent {
5317
5343
  });
5318
5344
  ariaLabel = input("", ...ngDevMode ? [{ debugName: "ariaLabel" }] : /* istanbul ignore next */ []);
5319
5345
  describedBy = input("", ...ngDevMode ? [{ debugName: "describedBy" }] : /* istanbul ignore next */ []);
5346
+ labelledBy = input("", ...ngDevMode ? [{ debugName: "labelledBy" }] : /* istanbul ignore next */ []);
5320
5347
  focused = output();
5321
5348
  blurred = output();
5322
5349
  injector = inject(Injector);
5350
+ field = inject(UiFieldComponent, { optional: true });
5323
5351
  host = inject(ElementRef);
5324
5352
  content = viewChild.required("content", ...ngDevMode ? [{ debugName: "content" }] : /* istanbul ignore next */ []);
5325
5353
  editor = signal(null, ...ngDevMode ? [{ debugName: "editor" }] : /* istanbul ignore next */ []);
@@ -5330,6 +5358,11 @@ var UiRichTextEditorComponent = class UiRichTextEditorComponent {
5330
5358
  linkOpen = signal(false, ...ngDevMode ? [{ debugName: "linkOpen" }] : /* istanbul ignore next */ []);
5331
5359
  linkHref = signal("", ...ngDevMode ? [{ debugName: "linkHref" }] : /* istanbul ignore next */ []);
5332
5360
  focusIndex = signal(0, ...ngDevMode ? [{ debugName: "focusIndex" }] : /* istanbul ignore next */ []);
5361
+ resolvedLabelledBy = computed(() => {
5362
+ if (this.labelledBy()) return this.labelledBy();
5363
+ const id = this.id();
5364
+ return id && this.field?.for() === id ? this.field.labelId() : "";
5365
+ }, ...ngDevMode ? [{ debugName: "resolvedLabelledBy" }] : /* istanbul ignore next */ []);
5333
5366
  editable = computed(() => !this.disabled() && !this.readonly(), ...ngDevMode ? [{ debugName: "editable" }] : /* istanbul ignore next */ []);
5334
5367
  toolGroups = computed(() => {
5335
5368
  const tools = new Set(this.tools());
@@ -5363,6 +5396,7 @@ var UiRichTextEditorComponent = class UiRichTextEditorComponent {
5363
5396
  };
5364
5397
  const optional = {
5365
5398
  "aria-label": this.ariaLabel(),
5399
+ "aria-labelledby": this.resolvedLabelledBy(),
5366
5400
  "aria-describedby": this.describedBy(),
5367
5401
  "aria-required": this.required() && "true",
5368
5402
  "aria-readonly": this.readonly() && "true",
@@ -5621,6 +5655,13 @@ var UiRichTextEditorComponent = class UiRichTextEditorComponent {
5621
5655
  isSignal: true,
5622
5656
  isRequired: false,
5623
5657
  transformFunction: null
5658
+ },
5659
+ labelledBy: {
5660
+ classPropertyName: "labelledBy",
5661
+ publicName: "labelledBy",
5662
+ isSignal: true,
5663
+ isRequired: false,
5664
+ transformFunction: null
5624
5665
  }
5625
5666
  },
5626
5667
  outputs: {
@@ -5629,7 +5670,10 @@ var UiRichTextEditorComponent = class UiRichTextEditorComponent {
5629
5670
  focused: "focused",
5630
5671
  blurred: "blurred"
5631
5672
  },
5632
- host: { classAttribute: "ui-rich-text-editor-host" },
5673
+ host: {
5674
+ properties: { "attr.id": "null" },
5675
+ classAttribute: "ui-rich-text-editor-host"
5676
+ },
5633
5677
  providers: [provideIcons({
5634
5678
  heroArrowUturnLeft,
5635
5679
  heroArrowUturnRight,
@@ -5768,7 +5812,10 @@ i0.ɵɵngDeclareClassMetadata({
5768
5812
  heroStrikethrough,
5769
5813
  heroUnderline
5770
5814
  })],
5771
- host: { class: "ui-rich-text-editor-host" },
5815
+ host: {
5816
+ class: "ui-rich-text-editor-host",
5817
+ "[attr.id]": "null"
5818
+ },
5772
5819
  template: "<div\n [class]=\"generatedClasses()\"\n [attr.data-invalid]=\"validationState() === false ? '' : null\"\n [attr.data-valid]=\"validationState() === true ? '' : null\"\n [attr.data-disabled]=\"disabled() ? '' : null\"\n>\n @if (showToolbar()) {\n <div\n class=\"ui-rich-text-editor__toolbar\"\n role=\"toolbar\"\n tabindex=\"-1\"\n aria-label=\"Formatting\"\n [attr.aria-controls]=\"id() || contentId\"\n (keydown)=\"onToolbarKeydown($event)\"\n >\n @for (group of toolGroups(); track group[0]) {\n @if (!$first) {\n <span\n class=\"ui-rich-text-editor__divider\"\n role=\"separator\"\n aria-orientation=\"vertical\"\n ></span>\n }\n\n @for (tool of group; track tool) {\n @let definition = toolDefinition(tool);\n @let state = toolState()[tool];\n\n <button\n type=\"button\"\n class=\"ui-rich-text-editor__tool\"\n [title]=\"definition.label\"\n [attr.aria-label]=\"definition.label\"\n [attr.aria-pressed]=\"definition.active ? state.active : null\"\n [attr.aria-disabled]=\"state.enabled ? null : 'true'\"\n [attr.data-active]=\"state.active ? '' : null\"\n [tabIndex]=\"flatTools().indexOf(tool) === focusIndex() ? 0 : -1\"\n (mousedown)=\"$event.preventDefault()\"\n (focus)=\"focusIndex.set(flatTools().indexOf(tool))\"\n (click)=\"runTool(tool)\"\n >\n <ng-icon [name]=\"definition.icon\" aria-hidden=\"true\" />\n </button>\n }\n }\n </div>\n }\n\n @if (linkOpen()) {\n <div\n class=\"ui-rich-text-editor__link\"\n tabindex=\"-1\"\n (keydown)=\"onLinkKeydown($event)\"\n >\n <ui-input\n class=\"ui-rich-text-editor__link-input\"\n type=\"url\"\n placeholder=\"https://\"\n ariaLabel=\"Link address\"\n [id]=\"linkInputId\"\n [(value)]=\"linkHref\"\n />\n\n <ui-button size=\"sm\" (click)=\"applyLink()\">Apply</ui-button>\n\n @if (toolState()['link']?.active) {\n <ui-button\n size=\"sm\"\n appearance=\"ghost\"\n intent=\"danger\"\n (click)=\"removeLink()\"\n >\n Remove\n </ui-button>\n }\n\n <ui-button\n size=\"sm\"\n appearance=\"ghost\"\n intent=\"secondary\"\n (click)=\"closeLink()\"\n >\n Cancel\n </ui-button>\n </div>\n }\n\n <div #content class=\"ui-rich-text-editor__body\"></div>\n</div>\n",
5773
5820
  styles: ["@layer properties;@layer components{.ui-rich-text-editor-host{width:100%}}.ui-rich-text-editor-host{display:block}.ui-rich-text-editor{display:flex;flex-direction:column;overflow:hidden;border-radius:var(--radius-md, .375rem);border-style:var(--tw-border-style);border-width:1px;border-color:var(--border-line-2);background-color:var(--layer)}.ui-rich-text-editor:focus-within{border-color:var(--primary-focus)}.ui-rich-text-editor:focus-within{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ui-rich-text-editor:focus-within{--tw-ring-color: color-mix(in srgb, oklch(88.2% .059 254.128) 50%, transparent)}@supports (color: color-mix(in lab,red,red)){.ui-rich-text-editor:focus-within{--tw-ring-color: color-mix(in oklab, var(--color-primary-200, var(--color-blue-200)) 50%, transparent)}}.ui-rich-text-editor[data-disabled]{opacity:50%}.ui-rich-text-editor[data-invalid]{border-color:var(--color-danger-500, var(--color-red-500))}.ui-rich-text-editor[data-invalid]:focus-within{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ui-rich-text-editor[data-invalid]:focus-within{--tw-ring-color: color-mix(in srgb, oklch(88.5% .062 18.334) 50%, transparent)}@supports (color: color-mix(in lab,red,red)){.ui-rich-text-editor[data-invalid]:focus-within{--tw-ring-color: color-mix(in oklab, var(--color-danger-200, var(--color-red-200)) 50%, transparent)}}.ui-rich-text-editor[data-valid]{border-color:var(--color-success-500, var(--color-teal-500))}.ui-rich-text-editor[data-valid]:focus-within{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ui-rich-text-editor[data-valid]:focus-within{--tw-ring-color: color-mix(in srgb, oklch(91% .096 180.426) 50%, transparent)}@supports (color: color-mix(in lab,red,red)){.ui-rich-text-editor[data-valid]:focus-within{--tw-ring-color: color-mix(in oklab, var(--color-success-200, var(--color-teal-200)) 50%, transparent)}}.ui-rich-text-editor__toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:calc(var(--spacing, .25rem) * .5);border-bottom-style:var(--tw-border-style);border-bottom-width:1px;border-color:var(--border-line-2);padding:var(--spacing, .25rem)}.ui-rich-text-editor__divider{margin-inline:var(--spacing, .25rem);height:calc(var(--spacing, .25rem) * 5);width:1px;background-color:var(--border-line-2)}.ui-rich-text-editor__tool{display:inline-flex;width:calc(var(--spacing, .25rem) * 8);height:calc(var(--spacing, .25rem) * 8);align-items:center;justify-content:center;border-radius:var(--radius-md, .375rem);color:var(--muted-foreground-1)}.ui-rich-text-editor__tool:hover{background-color:var(--layer-hover)}.ui-rich-text-editor__tool:hover{color:var(--foreground)}.ui-rich-text-editor__tool:focus{--tw-outline-style: none;outline-style:none}.ui-rich-text-editor__tool:focus-visible{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ui-rich-text-editor__tool:focus-visible{--tw-ring-color: color-mix(in srgb, oklch(88.2% .059 254.128) 50%, transparent)}@supports (color: color-mix(in lab,red,red)){.ui-rich-text-editor__tool:focus-visible{--tw-ring-color: color-mix(in oklab, var(--color-primary-200, var(--color-blue-200)) 50%, transparent)}}.ui-rich-text-editor__tool[data-active]{background-color:var(--color-primary-100, var(--color-blue-100));color:var(--color-primary-700, var(--color-blue-700))}.ui-rich-text-editor__tool[data-active]:where(.dark,.dark *){background-color:color-mix(in srgb,oklch(37.9% .146 265.522) 50%,transparent)}@supports (color: color-mix(in lab,red,red)){.ui-rich-text-editor__tool[data-active]:where(.dark,.dark *){background-color:color-mix(in oklab,var(--color-primary-900, var(--color-blue-900)) 50%,transparent)}}.ui-rich-text-editor__tool[data-active]:where(.dark,.dark *){color:var(--color-primary-300, var(--color-blue-300))}.ui-rich-text-editor__tool[aria-disabled]{pointer-events:none;opacity:40%}.ui-rich-text-editor__link{display:flex;align-items:center;gap:calc(var(--spacing, .25rem) * 2);border-bottom-style:var(--tw-border-style);border-bottom-width:1px;border-color:var(--border-line-2);padding:calc(var(--spacing, .25rem) * 2)}.ui-rich-text-editor__link-input{height:calc(var(--spacing, .25rem) * 9);flex:1}.ui-rich-text-editor__body{max-height:32rem;min-height:calc(var(--spacing, .25rem) * 32);overflow-y:auto}.ui-rich-text-editor__content{min-height:calc(var(--spacing, .25rem) * 32);padding:calc(var(--spacing, .25rem) * 3);color:var(--foreground)}.ui-rich-text-editor__content:focus{--tw-outline-style: none;outline-style:none}.ui-rich-text-editor__content>*+*{margin-top:calc(var(--spacing, .25rem) * 3)}.ui-rich-text-editor__content h1{font-size:var(--text-2xl, 1.5rem);line-height:var(--tw-leading, var(--text-2xl--line-height, calc(2 / 1.5)));--tw-font-weight: var(--font-weight-semibold, 600);font-weight:var(--font-weight-semibold, 600)}.ui-rich-text-editor__content h2{font-size:var(--text-xl, 1.25rem);line-height:var(--tw-leading, var(--text-xl--line-height, calc(1.75 / 1.25)));--tw-font-weight: var(--font-weight-semibold, 600);font-weight:var(--font-weight-semibold, 600)}.ui-rich-text-editor__content h3{font-size:var(--text-lg, 1.125rem);line-height:var(--tw-leading, var(--text-lg--line-height, calc(1.75 / 1.125)));--tw-font-weight: var(--font-weight-semibold, 600);font-weight:var(--font-weight-semibold, 600)}.ui-rich-text-editor__content ul{list-style-type:disc;padding-inline-start:calc(var(--spacing, .25rem) * 6)}.ui-rich-text-editor__content ol{list-style-type:decimal;padding-inline-start:calc(var(--spacing, .25rem) * 6)}.ui-rich-text-editor__content li>p{margin-block:calc(var(--spacing, .25rem) * .5)}.ui-rich-text-editor__content blockquote{border-inline-start-style:var(--tw-border-style);border-inline-start-width:4px;border-color:var(--border-line-3);padding-inline-start:calc(var(--spacing, .25rem) * 4);color:var(--muted-foreground-1)}.ui-rich-text-editor__content code{border-radius:.25rem;background-color:var(--muted);padding-inline:var(--spacing, .25rem);padding-block:calc(var(--spacing, .25rem) * .5);font-family:var(--font-mono, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace);font-size:.875em}.ui-rich-text-editor__content pre{overflow-x:auto;border-radius:var(--radius-md, .375rem);background-color:var(--muted);padding:calc(var(--spacing, .25rem) * 3);font-family:var(--font-mono, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace);font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)))}.ui-rich-text-editor__content pre code{background-color:transparent;padding:0;color:inherit}.ui-rich-text-editor__content hr{border-color:var(--border-line-2)}.ui-rich-text-editor__content hr.ProseMirror-selectednode{border-color:var(--color-primary-500, var(--color-blue-500))}.ui-rich-text-editor__content a{color:var(--color-primary-600, var(--color-blue-600));text-decoration-line:underline}.ui-rich-text-editor__content a:where(.dark,.dark *){color:var(--color-primary-400, var(--color-blue-400))}.ui-rich-text-editor__content p.is-editor-empty:first-child:before{pointer-events:none;float:inline-start;height:0px;color:var(--muted-foreground-2);content:attr(data-placeholder)}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@property --tw-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-shadow-color{syntax: \"*\"; inherits: false;}@property --tw-shadow-alpha{syntax: \"<percentage>\"; inherits: false; initial-value: 100%;}@property --tw-inset-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-inset-shadow-color{syntax: \"*\"; inherits: false;}@property --tw-inset-shadow-alpha{syntax: \"<percentage>\"; inherits: false; initial-value: 100%;}@property --tw-ring-color{syntax: \"*\"; inherits: false;}@property --tw-ring-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-inset-ring-color{syntax: \"*\"; inherits: false;}@property --tw-inset-ring-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-ring-inset{syntax: \"*\"; inherits: false;}@property --tw-ring-offset-width{syntax: \"<length>\"; inherits: false; initial-value: 0px;}@property --tw-ring-offset-color{syntax: \"*\"; inherits: false; initial-value: #fff;}@property --tw-ring-offset-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style: solid;--tw-shadow: 0 0 #0000;--tw-shadow-color: initial;--tw-shadow-alpha: 100%;--tw-inset-shadow: 0 0 #0000;--tw-inset-shadow-color: initial;--tw-inset-shadow-alpha: 100%;--tw-ring-color: initial;--tw-ring-shadow: 0 0 #0000;--tw-inset-ring-color: initial;--tw-inset-ring-shadow: 0 0 #0000;--tw-ring-inset: initial;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-offset-shadow: 0 0 #0000;--tw-font-weight: initial}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"]
5774
5821
  }]
@@ -5877,6 +5924,14 @@ i0.ɵɵngDeclareClassMetadata({
5877
5924
  required: false
5878
5925
  }]
5879
5926
  }],
5927
+ labelledBy: [{
5928
+ type: i0.Input,
5929
+ args: [{
5930
+ isSignal: true,
5931
+ alias: "labelledBy",
5932
+ required: false
5933
+ }]
5934
+ }],
5880
5935
  focused: [{
5881
5936
  type: i0.Output,
5882
5937
  args: ["focused"]
@@ -7052,7 +7107,10 @@ var UiSelectComponent = class UiSelectComponent {
7052
7107
  selectedItem: "selectedItemChange",
7053
7108
  selectedItems: "selectedItemsChange"
7054
7109
  },
7055
- host: { listeners: { "focusout": "onFocusOut($event)" } },
7110
+ host: {
7111
+ listeners: { "focusout": "onFocusOut($event)" },
7112
+ properties: { "attr.id": "null" }
7113
+ },
7056
7114
  providers: [provideIcons({
7057
7115
  heroChevronDown,
7058
7116
  heroXMark,
@@ -7207,7 +7265,10 @@ i0.ɵɵngDeclareClassMetadata({
7207
7265
  NgIcon,
7208
7266
  NgTemplateOutlet
7209
7267
  ],
7210
- host: { "(focusout)": "onFocusOut($event)" },
7268
+ host: {
7269
+ "[attr.id]": "null",
7270
+ "(focusout)": "onFocusOut($event)"
7271
+ },
7211
7272
  providers: [provideIcons({
7212
7273
  heroChevronDown,
7213
7274
  heroXMark,
@@ -7662,6 +7723,7 @@ var UiTextareaComponent = class UiTextareaComponent {
7662
7723
  focused: "focused",
7663
7724
  blurred: "blurred"
7664
7725
  },
7726
+ host: { properties: { "attr.id": "null" } },
7665
7727
  ngImport: i0,
7666
7728
  template: "<textarea\n [value]=\"value()\"\n [class]=\"generatedClasses()\"\n [attr.id]=\"id() || null\"\n [attr.name]=\"name() || null\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled()\"\n [readOnly]=\"readonly()\"\n [required]=\"required()\"\n [rows]=\"rows()\"\n [style.resize]=\"resize()\"\n [attr.maxlength]=\"maxlength()\"\n [attr.minlength]=\"minlength()\"\n \n [attr.spellcheck]=\"spellcheck()\"\n [attr.aria-label]=\"ariaLabel() || null\"\n [attr.aria-describedby]=\"describedBy() || null\"\n [attr.data-invalid]=\"validationState() === false ? '' : null\"\n [attr.data-valid]=\"validationState() === true ? '' : null\"\n (input)=\"handleInput($event)\"\n (focus)=\"handleFocus($event)\"\n (blur)=\"handleBlur($event)\"\n></textarea>\n",
7667
7729
  styles: ["@layer properties;@layer components{:host{width:100%}}:host{display:block}.ui-textarea{display:block;width:100%;border-radius:var(--radius-md, .375rem);border-style:var(--tw-border-style);border-width:1px;border-color:var(--border-line-2);background-color:var(--layer);padding:calc(var(--spacing, .25rem) * 3)}.ui-textarea:focus{border-color:var(--primary-focus)}.ui-textarea:focus{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ui-textarea:focus{--tw-ring-color: color-mix(in srgb, oklch(88.2% .059 254.128) 50%, transparent)}@supports (color: color-mix(in lab,red,red)){.ui-textarea:focus{--tw-ring-color: color-mix(in oklab, var(--color-primary-200, var(--color-blue-200)) 50%, transparent)}}.ui-textarea:focus{--tw-outline-style: none;outline-style:none}.ui-textarea:disabled{opacity:50%}.ui-textarea[data-invalid]{border-color:var(--color-danger-500, var(--color-red-500))}.ui-textarea[data-invalid]:focus{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ui-textarea[data-invalid]:focus{--tw-ring-color: color-mix(in srgb, oklch(88.5% .062 18.334) 50%, transparent)}@supports (color: color-mix(in lab,red,red)){.ui-textarea[data-invalid]:focus{--tw-ring-color: color-mix(in oklab, var(--color-danger-200, var(--color-red-200)) 50%, transparent)}}.ui-textarea[data-valid]{border-color:var(--color-success-500, var(--color-teal-500))}.ui-textarea[data-valid]:focus{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ui-textarea[data-valid]:focus{--tw-ring-color: color-mix(in srgb, oklch(91% .096 180.426) 50%, transparent)}@supports (color: color-mix(in lab,red,red)){.ui-textarea[data-valid]:focus{--tw-ring-color: color-mix(in oklab, var(--color-success-200, var(--color-teal-200)) 50%, transparent)}}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@property --tw-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-shadow-color{syntax: \"*\"; inherits: false;}@property --tw-shadow-alpha{syntax: \"<percentage>\"; inherits: false; initial-value: 100%;}@property --tw-inset-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-inset-shadow-color{syntax: \"*\"; inherits: false;}@property --tw-inset-shadow-alpha{syntax: \"<percentage>\"; inherits: false; initial-value: 100%;}@property --tw-ring-color{syntax: \"*\"; inherits: false;}@property --tw-ring-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-inset-ring-color{syntax: \"*\"; inherits: false;}@property --tw-inset-ring-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-ring-inset{syntax: \"*\"; inherits: false;}@property --tw-ring-offset-width{syntax: \"<length>\"; inherits: false; initial-value: 0px;}@property --tw-ring-offset-color{syntax: \"*\"; inherits: false; initial-value: #fff;}@property --tw-ring-offset-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style: solid;--tw-shadow: 0 0 #0000;--tw-shadow-color: initial;--tw-shadow-alpha: 100%;--tw-inset-shadow: 0 0 #0000;--tw-inset-shadow-color: initial;--tw-inset-shadow-alpha: 100%;--tw-ring-color: initial;--tw-ring-shadow: 0 0 #0000;--tw-inset-ring-color: initial;--tw-inset-ring-shadow: 0 0 #0000;--tw-ring-inset: initial;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-offset-shadow: 0 0 #0000}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"]
@@ -7676,6 +7738,7 @@ i0.ɵɵngDeclareClassMetadata({
7676
7738
  type: Component,
7677
7739
  args: [{
7678
7740
  selector: "ui-textarea",
7741
+ host: { "[attr.id]": "null" },
7679
7742
  template: "<textarea\n [value]=\"value()\"\n [class]=\"generatedClasses()\"\n [attr.id]=\"id() || null\"\n [attr.name]=\"name() || null\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled()\"\n [readOnly]=\"readonly()\"\n [required]=\"required()\"\n [rows]=\"rows()\"\n [style.resize]=\"resize()\"\n [attr.maxlength]=\"maxlength()\"\n [attr.minlength]=\"minlength()\"\n \n [attr.spellcheck]=\"spellcheck()\"\n [attr.aria-label]=\"ariaLabel() || null\"\n [attr.aria-describedby]=\"describedBy() || null\"\n [attr.data-invalid]=\"validationState() === false ? '' : null\"\n [attr.data-valid]=\"validationState() === true ? '' : null\"\n (input)=\"handleInput($event)\"\n (focus)=\"handleFocus($event)\"\n (blur)=\"handleBlur($event)\"\n></textarea>\n",
7680
7743
  styles: ["@layer properties;@layer components{:host{width:100%}}:host{display:block}.ui-textarea{display:block;width:100%;border-radius:var(--radius-md, .375rem);border-style:var(--tw-border-style);border-width:1px;border-color:var(--border-line-2);background-color:var(--layer);padding:calc(var(--spacing, .25rem) * 3)}.ui-textarea:focus{border-color:var(--primary-focus)}.ui-textarea:focus{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ui-textarea:focus{--tw-ring-color: color-mix(in srgb, oklch(88.2% .059 254.128) 50%, transparent)}@supports (color: color-mix(in lab,red,red)){.ui-textarea:focus{--tw-ring-color: color-mix(in oklab, var(--color-primary-200, var(--color-blue-200)) 50%, transparent)}}.ui-textarea:focus{--tw-outline-style: none;outline-style:none}.ui-textarea:disabled{opacity:50%}.ui-textarea[data-invalid]{border-color:var(--color-danger-500, var(--color-red-500))}.ui-textarea[data-invalid]:focus{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ui-textarea[data-invalid]:focus{--tw-ring-color: color-mix(in srgb, oklch(88.5% .062 18.334) 50%, transparent)}@supports (color: color-mix(in lab,red,red)){.ui-textarea[data-invalid]:focus{--tw-ring-color: color-mix(in oklab, var(--color-danger-200, var(--color-red-200)) 50%, transparent)}}.ui-textarea[data-valid]{border-color:var(--color-success-500, var(--color-teal-500))}.ui-textarea[data-valid]:focus{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ui-textarea[data-valid]:focus{--tw-ring-color: color-mix(in srgb, oklch(91% .096 180.426) 50%, transparent)}@supports (color: color-mix(in lab,red,red)){.ui-textarea[data-valid]:focus{--tw-ring-color: color-mix(in oklab, var(--color-success-200, var(--color-teal-200)) 50%, transparent)}}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@property --tw-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-shadow-color{syntax: \"*\"; inherits: false;}@property --tw-shadow-alpha{syntax: \"<percentage>\"; inherits: false; initial-value: 100%;}@property --tw-inset-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-inset-shadow-color{syntax: \"*\"; inherits: false;}@property --tw-inset-shadow-alpha{syntax: \"<percentage>\"; inherits: false; initial-value: 100%;}@property --tw-ring-color{syntax: \"*\"; inherits: false;}@property --tw-ring-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-inset-ring-color{syntax: \"*\"; inherits: false;}@property --tw-inset-ring-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-ring-inset{syntax: \"*\"; inherits: false;}@property --tw-ring-offset-width{syntax: \"<length>\"; inherits: false; initial-value: 0px;}@property --tw-ring-offset-color{syntax: \"*\"; inherits: false; initial-value: #fff;}@property --tw-ring-offset-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style: solid;--tw-shadow: 0 0 #0000;--tw-shadow-color: initial;--tw-shadow-alpha: 100%;--tw-inset-shadow: 0 0 #0000;--tw-inset-shadow-color: initial;--tw-inset-shadow-alpha: 100%;--tw-ring-color: initial;--tw-ring-shadow: 0 0 #0000;--tw-inset-ring-color: initial;--tw-inset-ring-shadow: 0 0 #0000;--tw-ring-inset: initial;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-offset-shadow: 0 0 #0000}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"]
7681
7744
  }]
@@ -7947,10 +8010,17 @@ const AlertIntents = [
7947
8010
  "danger"
7948
8011
  ];
7949
8012
  const AlertAppearances = ["soft", "bordered"];
8013
+ const TEXT_CLASSES = {
8014
+ sm: "ui-text-caption",
8015
+ md: "ui-text-caption",
8016
+ lg: "ui-text-body-alt",
8017
+ xl: "ui-text-h3"
8018
+ };
7950
8019
  var UiAvatarComponent = class UiAvatarComponent {
7951
8020
  name = input.required(...ngDevMode ? [{ debugName: "name" }] : /* istanbul ignore next */ []);
7952
8021
  src = input(null, ...ngDevMode ? [{ debugName: "src" }] : /* istanbul ignore next */ []);
7953
8022
  size = input("md", ...ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []);
8023
+ colour = input(null, ...ngDevMode ? [{ debugName: "colour" }] : /* istanbul ignore next */ []);
7954
8024
  failedSrc = signal(null, ...ngDevMode ? [{ debugName: "failedSrc" }] : /* istanbul ignore next */ []);
7955
8025
  showImage = computed(() => {
7956
8026
  const src = this.src();
@@ -7960,10 +8030,14 @@ var UiAvatarComponent = class UiAvatarComponent {
7960
8030
  const words = this.name().trim().split(/\s+/).filter(Boolean);
7961
8031
  return ((words[0]?.[0] ?? "") + (words.length > 1 ? words[words.length - 1][0] : "")).toUpperCase();
7962
8032
  }, ...ngDevMode ? [{ debugName: "initials" }] : /* istanbul ignore next */ []);
8033
+ ink = computed(() => {
8034
+ const colour = this.colour();
8035
+ return colour ? chartLabelInk(colour) : null;
8036
+ }, ...ngDevMode ? [{ debugName: "ink" }] : /* istanbul ignore next */ []);
7963
8037
  generatedClasses = computed(() => [
7964
8038
  "ui-avatar",
7965
8039
  `ui-avatar--${this.size()}`,
7966
- this.size() === "lg" ? "ui-text-body-alt" : "ui-text-caption"
8040
+ TEXT_CLASSES[this.size()]
7967
8041
  ].join(" "), ...ngDevMode ? [{ debugName: "generatedClasses" }] : /* istanbul ignore next */ []);
7968
8042
  imageFailed() {
7969
8043
  this.failedSrc.set(this.src());
@@ -8003,18 +8077,27 @@ var UiAvatarComponent = class UiAvatarComponent {
8003
8077
  isSignal: true,
8004
8078
  isRequired: false,
8005
8079
  transformFunction: null
8080
+ },
8081
+ colour: {
8082
+ classPropertyName: "colour",
8083
+ publicName: "colour",
8084
+ isSignal: true,
8085
+ isRequired: false,
8086
+ transformFunction: null
8006
8087
  }
8007
8088
  },
8008
8089
  host: {
8009
8090
  attributes: { "role": "img" },
8010
8091
  properties: {
8011
8092
  "attr.aria-label": "name()",
8012
- "class": "generatedClasses()"
8093
+ "class": "generatedClasses()",
8094
+ "style.background-color": "colour()",
8095
+ "style.color": "ink()"
8013
8096
  }
8014
8097
  },
8015
8098
  ngImport: i0,
8016
8099
  template: "@if (showImage()) {\n <img class=\"ui-avatar-image\" [src]=\"src()\" alt=\"\" (error)=\"imageFailed()\" />\n} @else {\n <span aria-hidden=\"true\">{{ initials() }}</span>\n}\n",
8017
- styles: ["@layer properties;:host(.ui-avatar){display:inline-flex;flex-shrink:0;align-items:center;justify-content:center;overflow:hidden;border-radius:var(--radius-full, calc(infinity * 1px));background-color:var(--surface);--tw-font-weight: var(--font-weight-medium, 500);font-weight:var(--font-weight-medium, 500);color:var(--foreground);-webkit-user-select:none;user-select:none}:host(.ui-avatar--sm){width:calc(var(--spacing, .25rem) * 6);height:calc(var(--spacing, .25rem) * 6)}:host(.ui-avatar--md){width:calc(var(--spacing, .25rem) * 8);height:calc(var(--spacing, .25rem) * 8)}:host(.ui-avatar--lg){width:calc(var(--spacing, .25rem) * 10);height:calc(var(--spacing, .25rem) * 10)}.ui-avatar-image{width:100%;height:100%;object-fit:cover}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-font-weight: initial}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"]
8100
+ styles: ["@layer properties;:host(.ui-avatar){display:inline-flex;flex-shrink:0;align-items:center;justify-content:center;overflow:hidden;border-radius:var(--radius-full, calc(infinity * 1px));background-color:var(--surface);--tw-font-weight: var(--font-weight-medium, 500);font-weight:var(--font-weight-medium, 500);color:var(--foreground);-webkit-user-select:none;user-select:none}:host(.ui-avatar--sm){width:calc(var(--spacing, .25rem) * 6);height:calc(var(--spacing, .25rem) * 6)}:host(.ui-avatar--md){width:calc(var(--spacing, .25rem) * 8);height:calc(var(--spacing, .25rem) * 8)}:host(.ui-avatar--lg){width:calc(var(--spacing, .25rem) * 10);height:calc(var(--spacing, .25rem) * 10)}:host(.ui-avatar--xl){width:calc(var(--spacing, .25rem) * 16);height:calc(var(--spacing, .25rem) * 16)}.ui-avatar-image{width:100%;height:100%;object-fit:cover}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-font-weight: initial}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"]
8018
8101
  });
8019
8102
  };
8020
8103
  i0.ɵɵngDeclareClassMetadata({
@@ -8029,10 +8112,12 @@ i0.ɵɵngDeclareClassMetadata({
8029
8112
  host: {
8030
8113
  role: "img",
8031
8114
  "[attr.aria-label]": "name()",
8032
- "[class]": "generatedClasses()"
8115
+ "[class]": "generatedClasses()",
8116
+ "[style.background-color]": "colour()",
8117
+ "[style.color]": "ink()"
8033
8118
  },
8034
8119
  template: "@if (showImage()) {\n <img class=\"ui-avatar-image\" [src]=\"src()\" alt=\"\" (error)=\"imageFailed()\" />\n} @else {\n <span aria-hidden=\"true\">{{ initials() }}</span>\n}\n",
8035
- styles: ["@layer properties;:host(.ui-avatar){display:inline-flex;flex-shrink:0;align-items:center;justify-content:center;overflow:hidden;border-radius:var(--radius-full, calc(infinity * 1px));background-color:var(--surface);--tw-font-weight: var(--font-weight-medium, 500);font-weight:var(--font-weight-medium, 500);color:var(--foreground);-webkit-user-select:none;user-select:none}:host(.ui-avatar--sm){width:calc(var(--spacing, .25rem) * 6);height:calc(var(--spacing, .25rem) * 6)}:host(.ui-avatar--md){width:calc(var(--spacing, .25rem) * 8);height:calc(var(--spacing, .25rem) * 8)}:host(.ui-avatar--lg){width:calc(var(--spacing, .25rem) * 10);height:calc(var(--spacing, .25rem) * 10)}.ui-avatar-image{width:100%;height:100%;object-fit:cover}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-font-weight: initial}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"]
8120
+ styles: ["@layer properties;:host(.ui-avatar){display:inline-flex;flex-shrink:0;align-items:center;justify-content:center;overflow:hidden;border-radius:var(--radius-full, calc(infinity * 1px));background-color:var(--surface);--tw-font-weight: var(--font-weight-medium, 500);font-weight:var(--font-weight-medium, 500);color:var(--foreground);-webkit-user-select:none;user-select:none}:host(.ui-avatar--sm){width:calc(var(--spacing, .25rem) * 6);height:calc(var(--spacing, .25rem) * 6)}:host(.ui-avatar--md){width:calc(var(--spacing, .25rem) * 8);height:calc(var(--spacing, .25rem) * 8)}:host(.ui-avatar--lg){width:calc(var(--spacing, .25rem) * 10);height:calc(var(--spacing, .25rem) * 10)}:host(.ui-avatar--xl){width:calc(var(--spacing, .25rem) * 16);height:calc(var(--spacing, .25rem) * 16)}.ui-avatar-image{width:100%;height:100%;object-fit:cover}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-font-weight: initial}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"]
8036
8121
  }]
8037
8122
  }],
8038
8123
  propDecorators: {
@@ -8059,13 +8144,22 @@ i0.ɵɵngDeclareClassMetadata({
8059
8144
  alias: "size",
8060
8145
  required: false
8061
8146
  }]
8147
+ }],
8148
+ colour: [{
8149
+ type: i0.Input,
8150
+ args: [{
8151
+ isSignal: true,
8152
+ alias: "colour",
8153
+ required: false
8154
+ }]
8062
8155
  }]
8063
8156
  }
8064
8157
  });
8065
8158
  const AvatarSizes = [
8066
8159
  "sm",
8067
8160
  "md",
8068
- "lg"
8161
+ "lg",
8162
+ "xl"
8069
8163
  ];
8070
8164
  const BadgeIntents = [
8071
8165
  "primary",
@@ -8196,6 +8290,35 @@ i0.ɵɵngDeclareClassMetadata({
8196
8290
  }]
8197
8291
  }
8198
8292
  });
8293
+ var UiCalendarDayDirective = class UiCalendarDayDirective {
8294
+ template = inject(TemplateRef);
8295
+ static ɵfac = i0.ɵɵngDeclareFactory({
8296
+ minVersion: "12.0.0",
8297
+ version: "22.2.1",
8298
+ ngImport: i0,
8299
+ type: UiCalendarDayDirective,
8300
+ deps: [],
8301
+ target: i0.ɵɵFactoryTarget.Directive
8302
+ });
8303
+ static ɵdir = i0.ɵɵngDeclareDirective({
8304
+ minVersion: "14.0.0",
8305
+ version: "22.2.1",
8306
+ type: UiCalendarDayDirective,
8307
+ isStandalone: true,
8308
+ selector: "ng-template[uiCalendarDay]",
8309
+ ngImport: i0
8310
+ });
8311
+ };
8312
+ i0.ɵɵngDeclareClassMetadata({
8313
+ minVersion: "12.0.0",
8314
+ version: "22.2.1",
8315
+ ngImport: i0,
8316
+ type: UiCalendarDayDirective,
8317
+ decorators: [{
8318
+ type: Directive,
8319
+ args: [{ selector: "ng-template[uiCalendarDay]" }]
8320
+ }]
8321
+ });
8199
8322
  const ISO_PATTERN = /^(\d{4})-(\d{2})-(\d{2})$/;
8200
8323
  const TIME_PATTERN = /^([01]\d|2[0-3]):([0-5]\d)$/;
8201
8324
  function toIsoDate(date) {
@@ -8253,6 +8376,11 @@ var UiCalendarComponent = class UiCalendarComponent {
8253
8376
  isDateDisabled = input(() => false, ...ngDevMode ? [{ debugName: "isDateDisabled" }] : /* istanbul ignore next */ []);
8254
8377
  weekStart = input(1, ...ngDevMode ? [{ debugName: "weekStart" }] : /* istanbul ignore next */ []);
8255
8378
  locale = input("en-GB", ...ngDevMode ? [{ debugName: "locale" }] : /* istanbul ignore next */ []);
8379
+ dayClass = input(() => "", ...ngDevMode ? [{ debugName: "dayClass" }] : /* istanbul ignore next */ []);
8380
+ hideSelection = input(false, ...ngDevMode ? [{ debugName: "hideSelection" }] : /* istanbul ignore next */ []);
8381
+ dayClick = output();
8382
+ monthChange = output();
8383
+ dayTemplate = contentChild(UiCalendarDayDirective, ...ngDevMode ? [{ debugName: "dayTemplate" }] : /* istanbul ignore next */ []);
8256
8384
  today = toIsoDate(/* @__PURE__ */ new Date());
8257
8385
  anchorDate = computed(() => this.mode() === "range" ? this.range().start : this.value(), ...ngDevMode ? [{ debugName: "anchorDate" }] : /* istanbul ignore next */ []);
8258
8386
  activeDate = linkedSignal(() => parseIsoDate(this.anchorDate()) ?? parseIsoDate(this.today), ...ngDevMode ? [{ debugName: "activeDate" }] : /* istanbul ignore next */ []);
@@ -8296,11 +8424,28 @@ var UiCalendarComponent = class UiCalendarComponent {
8296
8424
  isDisabled: this.isUnavailable(iso),
8297
8425
  isInRange: !!start && !!previewEnd && iso > start && iso < previewEnd,
8298
8426
  isRangeStart: !!previewEnd && iso === start && start !== previewEnd,
8299
- isRangeEnd: !!start && iso === previewEnd && start !== previewEnd
8427
+ isRangeEnd: !!start && iso === previewEnd && start !== previewEnd,
8428
+ className: this.dayClass()(iso)
8300
8429
  };
8301
8430
  });
8302
8431
  }, ...ngDevMode ? [{ debugName: "days" }] : /* istanbul ignore next */ []);
8432
+ view = computed(() => {
8433
+ const days = this.days();
8434
+ return {
8435
+ month: toIsoDate(new Date(this.viewYear(), this.viewMonth(), 1)),
8436
+ start: days[0].iso,
8437
+ end: days[days.length - 1].iso
8438
+ };
8439
+ }, {
8440
+ ...ngDevMode ? { debugName: "view" } : /* istanbul ignore next */ {},
8441
+ equal: (a, b) => a.month === b.month && a.start === b.start
8442
+ });
8303
8443
  rangeBounds = computed(() => {
8444
+ if (this.hideSelection()) return {
8445
+ start: null,
8446
+ end: null,
8447
+ previewEnd: null
8448
+ };
8304
8449
  if (this.mode() === "single") return {
8305
8450
  start: this.value(),
8306
8451
  end: null,
@@ -8328,6 +8473,9 @@ var UiCalendarComponent = class UiCalendarComponent {
8328
8473
  const firstOfNext = new Date(this.viewYear(), this.viewMonth() + 1, 1);
8329
8474
  return !max || toIsoDate(firstOfNext) <= max;
8330
8475
  }, ...ngDevMode ? [{ debugName: "canGoForward" }] : /* istanbul ignore next */ []);
8476
+ constructor() {
8477
+ effect(() => this.monthChange.emit(this.view()));
8478
+ }
8331
8479
  focusActiveDate() {
8332
8480
  this.host.nativeElement.querySelector(`[data-date="${this.tabbableDate()}"]`)?.focus();
8333
8481
  }
@@ -8338,6 +8486,7 @@ var UiCalendarComponent = class UiCalendarComponent {
8338
8486
  }
8339
8487
  select(day) {
8340
8488
  if (day.isDisabled) return;
8489
+ this.dayClick.emit(day.iso);
8341
8490
  if (this.mode() === "single") {
8342
8491
  this.value.set(day.iso);
8343
8492
  return;
@@ -8454,68 +8603,104 @@ var UiCalendarComponent = class UiCalendarComponent {
8454
8603
  isSignal: true,
8455
8604
  isRequired: false,
8456
8605
  transformFunction: null
8606
+ },
8607
+ dayClass: {
8608
+ classPropertyName: "dayClass",
8609
+ publicName: "dayClass",
8610
+ isSignal: true,
8611
+ isRequired: false,
8612
+ transformFunction: null
8613
+ },
8614
+ hideSelection: {
8615
+ classPropertyName: "hideSelection",
8616
+ publicName: "hideSelection",
8617
+ isSignal: true,
8618
+ isRequired: false,
8619
+ transformFunction: null
8457
8620
  }
8458
8621
  },
8459
8622
  outputs: {
8460
8623
  value: "valueChange",
8461
- range: "rangeChange"
8624
+ range: "rangeChange",
8625
+ dayClick: "dayClick",
8626
+ monthChange: "monthChange"
8462
8627
  },
8463
8628
  providers: [provideIcons({
8464
8629
  heroChevronLeft,
8465
8630
  heroChevronRight
8466
8631
  })],
8632
+ queries: [{
8633
+ propertyName: "dayTemplate",
8634
+ first: true,
8635
+ predicate: UiCalendarDayDirective,
8636
+ descendants: true,
8637
+ isSignal: true
8638
+ }],
8467
8639
  ngImport: i0,
8468
- template: "<div class=\"ui-calendar-header\">\n <button\n type=\"button\"\n class=\"ui-calendar-nav\"\n aria-label=\"Previous month\"\n [disabled]=\"!canGoBack()\"\n (click)=\"showMonth(-1)\"\n >\n <ng-icon name=\"heroChevronLeft\" class=\"shrink-0\" />\n </button>\n\n <div class=\"ui-calendar-selects\">\n <ui-select\n class=\"ui-calendar-month\"\n [dataSource]=\"monthSource()\"\n [displayWith]=\"displayMonth\"\n [pageSize]=\"12\"\n [(selectedItem)]=\"viewMonth\"\n />\n <ui-select\n class=\"ui-calendar-year\"\n [dataSource]=\"yearSource()\"\n [pageSize]=\"500\"\n [(selectedItem)]=\"viewYear\"\n />\n </div>\n\n <button\n type=\"button\"\n class=\"ui-calendar-nav\"\n aria-label=\"Next month\"\n [disabled]=\"!canGoForward()\"\n (click)=\"showMonth(1)\"\n >\n <ng-icon name=\"heroChevronRight\" class=\"shrink-0\" />\n </button>\n</div>\n\n<div class=\"ui-calendar-weekdays\" aria-hidden=\"true\">\n @for (weekday of weekdays(); track $index) {\n <span class=\"ui-calendar-weekday ui-text-caption\">{{ weekday }}</span>\n }\n</div>\n\n<div class=\"ui-calendar-grid\" (mouseleave)=\"preview(null)\">\n @for (day of days(); track day.iso) {\n <button\n type=\"button\"\n class=\"ui-calendar-day ui-text-body-alt\"\n [attr.data-date]=\"day.iso\"\n [attr.data-outside]=\"day.isOutside ? '' : null\"\n [attr.data-today]=\"day.isToday ? '' : null\"\n [attr.data-in-range]=\"day.isInRange ? '' : null\"\n [attr.data-range-start]=\"day.isRangeStart ? '' : null\"\n [attr.data-range-end]=\"day.isRangeEnd ? '' : null\"\n [attr.aria-current]=\"day.isToday ? 'date' : null\"\n [attr.aria-pressed]=\"day.isSelected\"\n [attr.aria-label]=\"day.label\"\n [tabindex]=\"day.iso === tabbableDate() ? 0 : -1\"\n [attr.aria-disabled]=\"day.isDisabled || null\"\n (click)=\"select(day)\"\n (keydown)=\"handleKeydown($event)\"\n (mouseenter)=\"preview(day.iso)\"\n (focus)=\"preview(day.iso)\"\n >\n {{ day.day }}\n </button>\n }\n</div>\n",
8469
- styles: ["@layer properties;:host{display:inline-flex;flex-direction:column;row-gap:calc(var(--spacing, .25rem) * 2)}.ui-calendar-header{display:flex;align-items:center;column-gap:var(--spacing, .25rem);padding-bottom:var(--spacing, .25rem)}.ui-calendar-selects{display:flex;min-width:0px;flex:1;column-gap:var(--spacing, .25rem)}.ui-calendar-month{min-width:0px;flex:1}.ui-calendar-year{width:calc(var(--spacing, .25rem) * 24);flex-shrink:0}.ui-calendar-nav{display:inline-flex;width:calc(var(--spacing, .25rem) * 8);height:calc(var(--spacing, .25rem) * 8);flex-shrink:0;align-items:center;justify-content:center;border-radius:var(--radius-full, calc(infinity * 1px));color:var(--foreground)}.ui-calendar-nav:focus{--tw-outline-style: none;outline-style:none}.ui-calendar-nav:focus-visible{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ui-calendar-nav:focus-visible{--tw-ring-color: color-mix(in srgb, oklch(88.2% .059 254.128) 50%, transparent)}@supports (color: color-mix(in lab,red,red)){.ui-calendar-nav:focus-visible{--tw-ring-color: color-mix(in oklab, var(--color-primary-200, var(--color-blue-200)) 50%, transparent)}}.ui-calendar-nav:disabled{pointer-events:none}.ui-calendar-nav:disabled{opacity:50%}.ui-calendar-nav:hover,.ui-calendar-nav:focus-visible{background-color:var(--surface)}.ui-calendar-weekdays,.ui-calendar-grid{display:grid;grid-template-columns:repeat(7,calc(var(--spacing, .25rem) * 10.5));justify-content:center}.ui-calendar-grid{row-gap:calc(var(--spacing, .25rem) * .5)}.ui-calendar-weekday{width:calc(var(--spacing, .25rem) * 10.5);padding-bottom:var(--spacing, .25rem);text-align:center;color:var(--muted-foreground-1)}.ui-calendar-day{position:relative;display:inline-flex;width:calc(var(--spacing, .25rem) * 10.5);height:calc(var(--spacing, .25rem) * 10.5);align-items:center;justify-content:center;border-radius:var(--radius-full, calc(infinity * 1px));border-style:var(--tw-border-style);border-width:1.5px;border-color:transparent;color:var(--foreground);transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function, cubic-bezier(.4, 0, .2, 1)));transition-duration:var(--tw-duration, var(--default-transition-duration, .15s));--tw-duration: .15s;transition-duration:.15s}.ui-calendar-day:focus-visible{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ui-calendar-day:focus-visible{--tw-ring-color: color-mix(in srgb, oklch(88.2% .059 254.128) 50%, transparent)}@supports (color: color-mix(in lab,red,red)){.ui-calendar-day:focus-visible{--tw-ring-color: color-mix(in oklab, var(--color-primary-200, var(--color-blue-200)) 50%, transparent)}}.ui-calendar-day:focus-visible{--tw-outline-style: none;outline-style:none}.ui-calendar-day:hover,.ui-calendar-day:focus-visible{border-color:var(--color-primary-600, var(--color-blue-600))}.ui-calendar-day:hover,.ui-calendar-day:focus-visible{color:var(--color-primary-600, var(--color-blue-600))}.ui-calendar-day[aria-disabled]{cursor:not-allowed;text-decoration-line:line-through;opacity:40%}.ui-calendar-day[aria-disabled]:hover{border-color:transparent}.ui-calendar-day[aria-disabled]:hover{color:inherit}.ui-calendar-day[data-outside]{color:var(--muted-foreground)}.ui-calendar-day[data-today]{--tw-font-weight: var(--font-weight-semibold, 600);font-weight:var(--font-weight-semibold, 600);color:var(--color-primary-600, var(--color-blue-600))}.ui-calendar-day[aria-pressed=true]{border-color:var(--color-primary-600, var(--color-blue-600));background-color:var(--color-primary-600, var(--color-blue-600));color:var(--color-white, #fff)}.ui-calendar-day[aria-pressed=true]:hover,.ui-calendar-day[aria-pressed=true]:focus-visible{border-color:var(--color-primary-700, var(--color-blue-700))}.ui-calendar-day[aria-pressed=true]:hover,.ui-calendar-day[aria-pressed=true]:focus-visible{background-color:var(--color-primary-700, var(--color-blue-700))}.ui-calendar-day[aria-pressed=true]:hover,.ui-calendar-day[aria-pressed=true]:focus-visible{color:var(--color-white, #fff)}.ui-calendar-day[data-in-range]{border-radius:0;background-color:var(--color-primary-100, var(--color-blue-100));color:var(--foreground)}.ui-calendar-day[data-range-start]{border-top-right-radius:0;border-bottom-right-radius:0}.ui-calendar-day[data-range-end]{border-top-left-radius:0;border-bottom-left-radius:0}.ui-calendar-day[data-range-end]:not([aria-pressed=true]){background-color:var(--color-primary-100, var(--color-blue-100))}.ui-calendar-day[data-in-range]:not(:nth-child(7n)),.ui-calendar-day[data-range-start]:not(:nth-child(7n)){--tw-shadow: 1px 0 0 var(--tw-shadow-color, var(--color-primary-100));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ui-calendar-day[data-in-range]:nth-child(7n+1),.ui-calendar-day[data-range-end]:nth-child(7n+1){border-top-left-radius:var(--radius-full, calc(infinity * 1px));border-bottom-left-radius:var(--radius-full, calc(infinity * 1px))}.ui-calendar-day[data-in-range]:nth-child(7n),.ui-calendar-day[data-range-start]:nth-child(7n){border-top-right-radius:var(--radius-full, calc(infinity * 1px));border-bottom-right-radius:var(--radius-full, calc(infinity * 1px))}@property --tw-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-shadow-color{syntax: \"*\"; inherits: false;}@property --tw-shadow-alpha{syntax: \"<percentage>\"; inherits: false; initial-value: 100%;}@property --tw-inset-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-inset-shadow-color{syntax: \"*\"; inherits: false;}@property --tw-inset-shadow-alpha{syntax: \"<percentage>\"; inherits: false; initial-value: 100%;}@property --tw-ring-color{syntax: \"*\"; inherits: false;}@property --tw-ring-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-inset-ring-color{syntax: \"*\"; inherits: false;}@property --tw-inset-ring-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-ring-inset{syntax: \"*\"; inherits: false;}@property --tw-ring-offset-width{syntax: \"<length>\"; inherits: false; initial-value: 0px;}@property --tw-ring-offset-color{syntax: \"*\"; inherits: false; initial-value: #fff;}@property --tw-ring-offset-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@property --tw-duration{syntax: \"*\"; inherits: false;}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-shadow: 0 0 #0000;--tw-shadow-color: initial;--tw-shadow-alpha: 100%;--tw-inset-shadow: 0 0 #0000;--tw-inset-shadow-color: initial;--tw-inset-shadow-alpha: 100%;--tw-ring-color: initial;--tw-ring-shadow: 0 0 #0000;--tw-inset-ring-color: initial;--tw-inset-ring-shadow: 0 0 #0000;--tw-ring-inset: initial;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-offset-shadow: 0 0 #0000;--tw-border-style: solid;--tw-duration: initial;--tw-font-weight: initial}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"],
8470
- dependencies: [{
8471
- kind: "component",
8472
- type: NgIcon,
8473
- selector: "ng-icon",
8474
- inputs: [
8475
- "name",
8476
- "svg",
8477
- "size",
8478
- "strokeWidth",
8479
- "color"
8480
- ]
8481
- }, {
8482
- kind: "component",
8483
- type: UiSelectComponent,
8484
- selector: "ui-select",
8485
- inputs: [
8486
- "placement",
8487
- "closeBehaviour",
8488
- "dataSource",
8489
- "placeholder",
8490
- "id",
8491
- "describedBy",
8492
- "pageSize",
8493
- "searchMode",
8494
- "disabled",
8495
- "validationState",
8496
- "clearable",
8497
- "clearLabel",
8498
- "creatable",
8499
- "createLabel",
8500
- "groupBy",
8501
- "scrollToSelected",
8502
- "multiple",
8503
- "multipleDisplay",
8504
- "counterAfter",
8505
- "counterLabel",
8506
- "compareWith",
8507
- "displayWith",
8508
- "selectedItem",
8509
- "selectedItems"
8510
- ],
8511
- outputs: [
8512
- "validationStateChange",
8513
- "selectionChange",
8514
- "create",
8515
- "selectedItemChange",
8516
- "selectedItemsChange"
8517
- ]
8518
- }]
8640
+ template: "<div class=\"ui-calendar-header\">\n <button\n type=\"button\"\n class=\"ui-calendar-nav\"\n aria-label=\"Previous month\"\n [disabled]=\"!canGoBack()\"\n (click)=\"showMonth(-1)\"\n >\n <ng-icon name=\"heroChevronLeft\" class=\"shrink-0\" />\n </button>\n\n <div class=\"ui-calendar-selects\">\n <ui-select\n class=\"ui-calendar-month\"\n [dataSource]=\"monthSource()\"\n [displayWith]=\"displayMonth\"\n [pageSize]=\"12\"\n [(selectedItem)]=\"viewMonth\"\n />\n <ui-select\n class=\"ui-calendar-year\"\n [dataSource]=\"yearSource()\"\n [pageSize]=\"500\"\n [(selectedItem)]=\"viewYear\"\n />\n </div>\n\n <button\n type=\"button\"\n class=\"ui-calendar-nav\"\n aria-label=\"Next month\"\n [disabled]=\"!canGoForward()\"\n (click)=\"showMonth(1)\"\n >\n <ng-icon name=\"heroChevronRight\" class=\"shrink-0\" />\n </button>\n</div>\n\n<div class=\"ui-calendar-weekdays\" aria-hidden=\"true\">\n @for (weekday of weekdays(); track $index) {\n <span class=\"ui-calendar-weekday ui-text-caption\">{{ weekday }}</span>\n }\n</div>\n\n<div class=\"ui-calendar-grid\" (mouseleave)=\"preview(null)\">\n @for (day of days(); track day.iso) {\n <button\n type=\"button\"\n class=\"ui-calendar-day ui-text-body-alt\"\n [class]=\"day.className\"\n [attr.data-date]=\"day.iso\"\n [attr.data-outside]=\"day.isOutside ? '' : null\"\n [attr.data-today]=\"day.isToday ? '' : null\"\n [attr.data-in-range]=\"day.isInRange ? '' : null\"\n [attr.data-range-start]=\"day.isRangeStart ? '' : null\"\n [attr.data-range-end]=\"day.isRangeEnd ? '' : null\"\n [attr.aria-current]=\"day.isToday ? 'date' : null\"\n [attr.aria-pressed]=\"hideSelection() ? null : day.isSelected\"\n [attr.aria-label]=\"day.label\"\n [tabindex]=\"day.iso === tabbableDate() ? 0 : -1\"\n [attr.aria-disabled]=\"day.isDisabled || null\"\n (click)=\"select(day)\"\n (keydown)=\"handleKeydown($event)\"\n (mouseenter)=\"preview(day.iso)\"\n (focus)=\"preview(day.iso)\"\n >\n @if (dayTemplate(); as dayTemplate) {\n <ng-container\n [ngTemplateOutlet]=\"dayTemplate.template\"\n [ngTemplateOutletContext]=\"{ $implicit: day.iso, day }\"\n />\n } @else {\n {{ day.day }}\n }\n </button>\n }\n</div>\n",
8641
+ styles: ["@layer properties;:host{display:inline-flex;flex-direction:column;row-gap:calc(var(--spacing, .25rem) * 2)}.ui-calendar-header{display:flex;align-items:center;column-gap:var(--spacing, .25rem);padding-bottom:var(--spacing, .25rem)}.ui-calendar-selects{display:flex;min-width:0px;flex:1;column-gap:var(--spacing, .25rem)}.ui-calendar-month{min-width:0px;flex:1}.ui-calendar-year{width:calc(var(--spacing, .25rem) * 24);flex-shrink:0}.ui-calendar-nav{display:inline-flex;width:calc(var(--spacing, .25rem) * 8);height:calc(var(--spacing, .25rem) * 8);flex-shrink:0;align-items:center;justify-content:center;border-radius:var(--radius-full, calc(infinity * 1px));color:var(--foreground)}.ui-calendar-nav:focus{--tw-outline-style: none;outline-style:none}.ui-calendar-nav:focus-visible{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ui-calendar-nav:focus-visible{--tw-ring-color: color-mix(in srgb, oklch(88.2% .059 254.128) 50%, transparent)}@supports (color: color-mix(in lab,red,red)){.ui-calendar-nav:focus-visible{--tw-ring-color: color-mix(in oklab, var(--color-primary-200, var(--color-blue-200)) 50%, transparent)}}.ui-calendar-nav:disabled{pointer-events:none}.ui-calendar-nav:disabled{opacity:50%}.ui-calendar-nav:hover,.ui-calendar-nav:focus-visible{background-color:var(--surface)}.ui-calendar-weekdays,.ui-calendar-grid{display:grid;grid-template-columns:repeat(7,calc(var(--spacing, .25rem) * 10.5));justify-content:center}.ui-calendar-grid{row-gap:calc(var(--spacing, .25rem) * .5)}.ui-calendar-weekday{width:calc(var(--spacing, .25rem) * 10.5);padding-bottom:var(--spacing, .25rem);text-align:center;color:var(--muted-foreground-1)}.ui-calendar-day{position:relative;display:inline-flex;width:calc(var(--spacing, .25rem) * 10.5);height:calc(var(--spacing, .25rem) * 10.5);flex-direction:column;align-items:center;justify-content:center;border-radius:var(--radius-full, calc(infinity * 1px));border-style:var(--tw-border-style);border-width:1.5px;border-color:transparent;color:var(--foreground);transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function, cubic-bezier(.4, 0, .2, 1)));transition-duration:var(--tw-duration, var(--default-transition-duration, .15s));--tw-duration: .15s;transition-duration:.15s}.ui-calendar-day:focus-visible{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ui-calendar-day:focus-visible{--tw-ring-color: color-mix(in srgb, oklch(88.2% .059 254.128) 50%, transparent)}@supports (color: color-mix(in lab,red,red)){.ui-calendar-day:focus-visible{--tw-ring-color: color-mix(in oklab, var(--color-primary-200, var(--color-blue-200)) 50%, transparent)}}.ui-calendar-day:focus-visible{--tw-outline-style: none;outline-style:none}.ui-calendar-day:hover,.ui-calendar-day:focus-visible{border-color:var(--color-primary-600, var(--color-blue-600))}.ui-calendar-day:hover,.ui-calendar-day:focus-visible{color:var(--color-primary-600, var(--color-blue-600))}.ui-calendar-day[aria-disabled]{cursor:not-allowed;text-decoration-line:line-through;opacity:40%}.ui-calendar-day[aria-disabled]:hover{border-color:transparent}.ui-calendar-day[aria-disabled]:hover{color:inherit}.ui-calendar-day[data-outside]{color:var(--muted-foreground)}.ui-calendar-day[data-today]{--tw-font-weight: var(--font-weight-semibold, 600);font-weight:var(--font-weight-semibold, 600);color:var(--color-primary-600, var(--color-blue-600))}.ui-calendar-day[aria-pressed=true]{border-color:var(--color-primary-600, var(--color-blue-600));background-color:var(--color-primary-600, var(--color-blue-600));color:var(--color-white, #fff)}.ui-calendar-day[aria-pressed=true]:hover,.ui-calendar-day[aria-pressed=true]:focus-visible{border-color:var(--color-primary-700, var(--color-blue-700))}.ui-calendar-day[aria-pressed=true]:hover,.ui-calendar-day[aria-pressed=true]:focus-visible{background-color:var(--color-primary-700, var(--color-blue-700))}.ui-calendar-day[aria-pressed=true]:hover,.ui-calendar-day[aria-pressed=true]:focus-visible{color:var(--color-white, #fff)}.ui-calendar-day[data-in-range]{border-radius:0;background-color:var(--color-primary-100, var(--color-blue-100));color:var(--foreground)}.ui-calendar-day[data-range-start]{border-top-right-radius:0;border-bottom-right-radius:0}.ui-calendar-day[data-range-end]{border-top-left-radius:0;border-bottom-left-radius:0}.ui-calendar-day[data-range-end]:not([aria-pressed=true]){background-color:var(--color-primary-100, var(--color-blue-100))}.ui-calendar-day[data-in-range]:not(:nth-child(7n)),.ui-calendar-day[data-range-start]:not(:nth-child(7n)){--tw-shadow: 1px 0 0 var(--tw-shadow-color, var(--color-primary-100));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ui-calendar-day[data-in-range]:nth-child(7n+1),.ui-calendar-day[data-range-end]:nth-child(7n+1){border-top-left-radius:var(--radius-full, calc(infinity * 1px));border-bottom-left-radius:var(--radius-full, calc(infinity * 1px))}.ui-calendar-day[data-in-range]:nth-child(7n),.ui-calendar-day[data-range-start]:nth-child(7n){border-top-right-radius:var(--radius-full, calc(infinity * 1px));border-bottom-right-radius:var(--radius-full, calc(infinity * 1px))}@property --tw-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-shadow-color{syntax: \"*\"; inherits: false;}@property --tw-shadow-alpha{syntax: \"<percentage>\"; inherits: false; initial-value: 100%;}@property --tw-inset-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-inset-shadow-color{syntax: \"*\"; inherits: false;}@property --tw-inset-shadow-alpha{syntax: \"<percentage>\"; inherits: false; initial-value: 100%;}@property --tw-ring-color{syntax: \"*\"; inherits: false;}@property --tw-ring-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-inset-ring-color{syntax: \"*\"; inherits: false;}@property --tw-inset-ring-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-ring-inset{syntax: \"*\"; inherits: false;}@property --tw-ring-offset-width{syntax: \"<length>\"; inherits: false; initial-value: 0px;}@property --tw-ring-offset-color{syntax: \"*\"; inherits: false; initial-value: #fff;}@property --tw-ring-offset-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@property --tw-duration{syntax: \"*\"; inherits: false;}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-shadow: 0 0 #0000;--tw-shadow-color: initial;--tw-shadow-alpha: 100%;--tw-inset-shadow: 0 0 #0000;--tw-inset-shadow-color: initial;--tw-inset-shadow-alpha: 100%;--tw-ring-color: initial;--tw-ring-shadow: 0 0 #0000;--tw-inset-ring-color: initial;--tw-inset-ring-shadow: 0 0 #0000;--tw-ring-inset: initial;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-offset-shadow: 0 0 #0000;--tw-border-style: solid;--tw-duration: initial;--tw-font-weight: initial}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"],
8642
+ dependencies: [
8643
+ {
8644
+ kind: "component",
8645
+ type: NgIcon,
8646
+ selector: "ng-icon",
8647
+ inputs: [
8648
+ "name",
8649
+ "svg",
8650
+ "size",
8651
+ "strokeWidth",
8652
+ "color"
8653
+ ]
8654
+ },
8655
+ {
8656
+ kind: "directive",
8657
+ type: NgTemplateOutlet,
8658
+ selector: "[ngTemplateOutlet]",
8659
+ inputs: [
8660
+ "ngTemplateOutletContext",
8661
+ "ngTemplateOutlet",
8662
+ "ngTemplateOutletInjector"
8663
+ ]
8664
+ },
8665
+ {
8666
+ kind: "component",
8667
+ type: UiSelectComponent,
8668
+ selector: "ui-select",
8669
+ inputs: [
8670
+ "placement",
8671
+ "closeBehaviour",
8672
+ "dataSource",
8673
+ "placeholder",
8674
+ "id",
8675
+ "describedBy",
8676
+ "pageSize",
8677
+ "searchMode",
8678
+ "disabled",
8679
+ "validationState",
8680
+ "clearable",
8681
+ "clearLabel",
8682
+ "creatable",
8683
+ "createLabel",
8684
+ "groupBy",
8685
+ "scrollToSelected",
8686
+ "multiple",
8687
+ "multipleDisplay",
8688
+ "counterAfter",
8689
+ "counterLabel",
8690
+ "compareWith",
8691
+ "displayWith",
8692
+ "selectedItem",
8693
+ "selectedItems"
8694
+ ],
8695
+ outputs: [
8696
+ "validationStateChange",
8697
+ "selectionChange",
8698
+ "create",
8699
+ "selectedItemChange",
8700
+ "selectedItemsChange"
8701
+ ]
8702
+ }
8703
+ ]
8519
8704
  });
8520
8705
  };
8521
8706
  i0.ɵɵngDeclareClassMetadata({
@@ -8527,15 +8712,20 @@ i0.ɵɵngDeclareClassMetadata({
8527
8712
  type: Component,
8528
8713
  args: [{
8529
8714
  selector: "ui-calendar",
8530
- imports: [NgIcon, UiSelectComponent],
8715
+ imports: [
8716
+ NgIcon,
8717
+ NgTemplateOutlet,
8718
+ UiSelectComponent
8719
+ ],
8531
8720
  providers: [provideIcons({
8532
8721
  heroChevronLeft,
8533
8722
  heroChevronRight
8534
8723
  })],
8535
- template: "<div class=\"ui-calendar-header\">\n <button\n type=\"button\"\n class=\"ui-calendar-nav\"\n aria-label=\"Previous month\"\n [disabled]=\"!canGoBack()\"\n (click)=\"showMonth(-1)\"\n >\n <ng-icon name=\"heroChevronLeft\" class=\"shrink-0\" />\n </button>\n\n <div class=\"ui-calendar-selects\">\n <ui-select\n class=\"ui-calendar-month\"\n [dataSource]=\"monthSource()\"\n [displayWith]=\"displayMonth\"\n [pageSize]=\"12\"\n [(selectedItem)]=\"viewMonth\"\n />\n <ui-select\n class=\"ui-calendar-year\"\n [dataSource]=\"yearSource()\"\n [pageSize]=\"500\"\n [(selectedItem)]=\"viewYear\"\n />\n </div>\n\n <button\n type=\"button\"\n class=\"ui-calendar-nav\"\n aria-label=\"Next month\"\n [disabled]=\"!canGoForward()\"\n (click)=\"showMonth(1)\"\n >\n <ng-icon name=\"heroChevronRight\" class=\"shrink-0\" />\n </button>\n</div>\n\n<div class=\"ui-calendar-weekdays\" aria-hidden=\"true\">\n @for (weekday of weekdays(); track $index) {\n <span class=\"ui-calendar-weekday ui-text-caption\">{{ weekday }}</span>\n }\n</div>\n\n<div class=\"ui-calendar-grid\" (mouseleave)=\"preview(null)\">\n @for (day of days(); track day.iso) {\n <button\n type=\"button\"\n class=\"ui-calendar-day ui-text-body-alt\"\n [attr.data-date]=\"day.iso\"\n [attr.data-outside]=\"day.isOutside ? '' : null\"\n [attr.data-today]=\"day.isToday ? '' : null\"\n [attr.data-in-range]=\"day.isInRange ? '' : null\"\n [attr.data-range-start]=\"day.isRangeStart ? '' : null\"\n [attr.data-range-end]=\"day.isRangeEnd ? '' : null\"\n [attr.aria-current]=\"day.isToday ? 'date' : null\"\n [attr.aria-pressed]=\"day.isSelected\"\n [attr.aria-label]=\"day.label\"\n [tabindex]=\"day.iso === tabbableDate() ? 0 : -1\"\n [attr.aria-disabled]=\"day.isDisabled || null\"\n (click)=\"select(day)\"\n (keydown)=\"handleKeydown($event)\"\n (mouseenter)=\"preview(day.iso)\"\n (focus)=\"preview(day.iso)\"\n >\n {{ day.day }}\n </button>\n }\n</div>\n",
8536
- styles: ["@layer properties;:host{display:inline-flex;flex-direction:column;row-gap:calc(var(--spacing, .25rem) * 2)}.ui-calendar-header{display:flex;align-items:center;column-gap:var(--spacing, .25rem);padding-bottom:var(--spacing, .25rem)}.ui-calendar-selects{display:flex;min-width:0px;flex:1;column-gap:var(--spacing, .25rem)}.ui-calendar-month{min-width:0px;flex:1}.ui-calendar-year{width:calc(var(--spacing, .25rem) * 24);flex-shrink:0}.ui-calendar-nav{display:inline-flex;width:calc(var(--spacing, .25rem) * 8);height:calc(var(--spacing, .25rem) * 8);flex-shrink:0;align-items:center;justify-content:center;border-radius:var(--radius-full, calc(infinity * 1px));color:var(--foreground)}.ui-calendar-nav:focus{--tw-outline-style: none;outline-style:none}.ui-calendar-nav:focus-visible{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ui-calendar-nav:focus-visible{--tw-ring-color: color-mix(in srgb, oklch(88.2% .059 254.128) 50%, transparent)}@supports (color: color-mix(in lab,red,red)){.ui-calendar-nav:focus-visible{--tw-ring-color: color-mix(in oklab, var(--color-primary-200, var(--color-blue-200)) 50%, transparent)}}.ui-calendar-nav:disabled{pointer-events:none}.ui-calendar-nav:disabled{opacity:50%}.ui-calendar-nav:hover,.ui-calendar-nav:focus-visible{background-color:var(--surface)}.ui-calendar-weekdays,.ui-calendar-grid{display:grid;grid-template-columns:repeat(7,calc(var(--spacing, .25rem) * 10.5));justify-content:center}.ui-calendar-grid{row-gap:calc(var(--spacing, .25rem) * .5)}.ui-calendar-weekday{width:calc(var(--spacing, .25rem) * 10.5);padding-bottom:var(--spacing, .25rem);text-align:center;color:var(--muted-foreground-1)}.ui-calendar-day{position:relative;display:inline-flex;width:calc(var(--spacing, .25rem) * 10.5);height:calc(var(--spacing, .25rem) * 10.5);align-items:center;justify-content:center;border-radius:var(--radius-full, calc(infinity * 1px));border-style:var(--tw-border-style);border-width:1.5px;border-color:transparent;color:var(--foreground);transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function, cubic-bezier(.4, 0, .2, 1)));transition-duration:var(--tw-duration, var(--default-transition-duration, .15s));--tw-duration: .15s;transition-duration:.15s}.ui-calendar-day:focus-visible{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ui-calendar-day:focus-visible{--tw-ring-color: color-mix(in srgb, oklch(88.2% .059 254.128) 50%, transparent)}@supports (color: color-mix(in lab,red,red)){.ui-calendar-day:focus-visible{--tw-ring-color: color-mix(in oklab, var(--color-primary-200, var(--color-blue-200)) 50%, transparent)}}.ui-calendar-day:focus-visible{--tw-outline-style: none;outline-style:none}.ui-calendar-day:hover,.ui-calendar-day:focus-visible{border-color:var(--color-primary-600, var(--color-blue-600))}.ui-calendar-day:hover,.ui-calendar-day:focus-visible{color:var(--color-primary-600, var(--color-blue-600))}.ui-calendar-day[aria-disabled]{cursor:not-allowed;text-decoration-line:line-through;opacity:40%}.ui-calendar-day[aria-disabled]:hover{border-color:transparent}.ui-calendar-day[aria-disabled]:hover{color:inherit}.ui-calendar-day[data-outside]{color:var(--muted-foreground)}.ui-calendar-day[data-today]{--tw-font-weight: var(--font-weight-semibold, 600);font-weight:var(--font-weight-semibold, 600);color:var(--color-primary-600, var(--color-blue-600))}.ui-calendar-day[aria-pressed=true]{border-color:var(--color-primary-600, var(--color-blue-600));background-color:var(--color-primary-600, var(--color-blue-600));color:var(--color-white, #fff)}.ui-calendar-day[aria-pressed=true]:hover,.ui-calendar-day[aria-pressed=true]:focus-visible{border-color:var(--color-primary-700, var(--color-blue-700))}.ui-calendar-day[aria-pressed=true]:hover,.ui-calendar-day[aria-pressed=true]:focus-visible{background-color:var(--color-primary-700, var(--color-blue-700))}.ui-calendar-day[aria-pressed=true]:hover,.ui-calendar-day[aria-pressed=true]:focus-visible{color:var(--color-white, #fff)}.ui-calendar-day[data-in-range]{border-radius:0;background-color:var(--color-primary-100, var(--color-blue-100));color:var(--foreground)}.ui-calendar-day[data-range-start]{border-top-right-radius:0;border-bottom-right-radius:0}.ui-calendar-day[data-range-end]{border-top-left-radius:0;border-bottom-left-radius:0}.ui-calendar-day[data-range-end]:not([aria-pressed=true]){background-color:var(--color-primary-100, var(--color-blue-100))}.ui-calendar-day[data-in-range]:not(:nth-child(7n)),.ui-calendar-day[data-range-start]:not(:nth-child(7n)){--tw-shadow: 1px 0 0 var(--tw-shadow-color, var(--color-primary-100));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ui-calendar-day[data-in-range]:nth-child(7n+1),.ui-calendar-day[data-range-end]:nth-child(7n+1){border-top-left-radius:var(--radius-full, calc(infinity * 1px));border-bottom-left-radius:var(--radius-full, calc(infinity * 1px))}.ui-calendar-day[data-in-range]:nth-child(7n),.ui-calendar-day[data-range-start]:nth-child(7n){border-top-right-radius:var(--radius-full, calc(infinity * 1px));border-bottom-right-radius:var(--radius-full, calc(infinity * 1px))}@property --tw-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-shadow-color{syntax: \"*\"; inherits: false;}@property --tw-shadow-alpha{syntax: \"<percentage>\"; inherits: false; initial-value: 100%;}@property --tw-inset-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-inset-shadow-color{syntax: \"*\"; inherits: false;}@property --tw-inset-shadow-alpha{syntax: \"<percentage>\"; inherits: false; initial-value: 100%;}@property --tw-ring-color{syntax: \"*\"; inherits: false;}@property --tw-ring-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-inset-ring-color{syntax: \"*\"; inherits: false;}@property --tw-inset-ring-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-ring-inset{syntax: \"*\"; inherits: false;}@property --tw-ring-offset-width{syntax: \"<length>\"; inherits: false; initial-value: 0px;}@property --tw-ring-offset-color{syntax: \"*\"; inherits: false; initial-value: #fff;}@property --tw-ring-offset-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@property --tw-duration{syntax: \"*\"; inherits: false;}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-shadow: 0 0 #0000;--tw-shadow-color: initial;--tw-shadow-alpha: 100%;--tw-inset-shadow: 0 0 #0000;--tw-inset-shadow-color: initial;--tw-inset-shadow-alpha: 100%;--tw-ring-color: initial;--tw-ring-shadow: 0 0 #0000;--tw-inset-ring-color: initial;--tw-inset-ring-shadow: 0 0 #0000;--tw-ring-inset: initial;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-offset-shadow: 0 0 #0000;--tw-border-style: solid;--tw-duration: initial;--tw-font-weight: initial}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"]
8724
+ template: "<div class=\"ui-calendar-header\">\n <button\n type=\"button\"\n class=\"ui-calendar-nav\"\n aria-label=\"Previous month\"\n [disabled]=\"!canGoBack()\"\n (click)=\"showMonth(-1)\"\n >\n <ng-icon name=\"heroChevronLeft\" class=\"shrink-0\" />\n </button>\n\n <div class=\"ui-calendar-selects\">\n <ui-select\n class=\"ui-calendar-month\"\n [dataSource]=\"monthSource()\"\n [displayWith]=\"displayMonth\"\n [pageSize]=\"12\"\n [(selectedItem)]=\"viewMonth\"\n />\n <ui-select\n class=\"ui-calendar-year\"\n [dataSource]=\"yearSource()\"\n [pageSize]=\"500\"\n [(selectedItem)]=\"viewYear\"\n />\n </div>\n\n <button\n type=\"button\"\n class=\"ui-calendar-nav\"\n aria-label=\"Next month\"\n [disabled]=\"!canGoForward()\"\n (click)=\"showMonth(1)\"\n >\n <ng-icon name=\"heroChevronRight\" class=\"shrink-0\" />\n </button>\n</div>\n\n<div class=\"ui-calendar-weekdays\" aria-hidden=\"true\">\n @for (weekday of weekdays(); track $index) {\n <span class=\"ui-calendar-weekday ui-text-caption\">{{ weekday }}</span>\n }\n</div>\n\n<div class=\"ui-calendar-grid\" (mouseleave)=\"preview(null)\">\n @for (day of days(); track day.iso) {\n <button\n type=\"button\"\n class=\"ui-calendar-day ui-text-body-alt\"\n [class]=\"day.className\"\n [attr.data-date]=\"day.iso\"\n [attr.data-outside]=\"day.isOutside ? '' : null\"\n [attr.data-today]=\"day.isToday ? '' : null\"\n [attr.data-in-range]=\"day.isInRange ? '' : null\"\n [attr.data-range-start]=\"day.isRangeStart ? '' : null\"\n [attr.data-range-end]=\"day.isRangeEnd ? '' : null\"\n [attr.aria-current]=\"day.isToday ? 'date' : null\"\n [attr.aria-pressed]=\"hideSelection() ? null : day.isSelected\"\n [attr.aria-label]=\"day.label\"\n [tabindex]=\"day.iso === tabbableDate() ? 0 : -1\"\n [attr.aria-disabled]=\"day.isDisabled || null\"\n (click)=\"select(day)\"\n (keydown)=\"handleKeydown($event)\"\n (mouseenter)=\"preview(day.iso)\"\n (focus)=\"preview(day.iso)\"\n >\n @if (dayTemplate(); as dayTemplate) {\n <ng-container\n [ngTemplateOutlet]=\"dayTemplate.template\"\n [ngTemplateOutletContext]=\"{ $implicit: day.iso, day }\"\n />\n } @else {\n {{ day.day }}\n }\n </button>\n }\n</div>\n",
8725
+ styles: ["@layer properties;:host{display:inline-flex;flex-direction:column;row-gap:calc(var(--spacing, .25rem) * 2)}.ui-calendar-header{display:flex;align-items:center;column-gap:var(--spacing, .25rem);padding-bottom:var(--spacing, .25rem)}.ui-calendar-selects{display:flex;min-width:0px;flex:1;column-gap:var(--spacing, .25rem)}.ui-calendar-month{min-width:0px;flex:1}.ui-calendar-year{width:calc(var(--spacing, .25rem) * 24);flex-shrink:0}.ui-calendar-nav{display:inline-flex;width:calc(var(--spacing, .25rem) * 8);height:calc(var(--spacing, .25rem) * 8);flex-shrink:0;align-items:center;justify-content:center;border-radius:var(--radius-full, calc(infinity * 1px));color:var(--foreground)}.ui-calendar-nav:focus{--tw-outline-style: none;outline-style:none}.ui-calendar-nav:focus-visible{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ui-calendar-nav:focus-visible{--tw-ring-color: color-mix(in srgb, oklch(88.2% .059 254.128) 50%, transparent)}@supports (color: color-mix(in lab,red,red)){.ui-calendar-nav:focus-visible{--tw-ring-color: color-mix(in oklab, var(--color-primary-200, var(--color-blue-200)) 50%, transparent)}}.ui-calendar-nav:disabled{pointer-events:none}.ui-calendar-nav:disabled{opacity:50%}.ui-calendar-nav:hover,.ui-calendar-nav:focus-visible{background-color:var(--surface)}.ui-calendar-weekdays,.ui-calendar-grid{display:grid;grid-template-columns:repeat(7,calc(var(--spacing, .25rem) * 10.5));justify-content:center}.ui-calendar-grid{row-gap:calc(var(--spacing, .25rem) * .5)}.ui-calendar-weekday{width:calc(var(--spacing, .25rem) * 10.5);padding-bottom:var(--spacing, .25rem);text-align:center;color:var(--muted-foreground-1)}.ui-calendar-day{position:relative;display:inline-flex;width:calc(var(--spacing, .25rem) * 10.5);height:calc(var(--spacing, .25rem) * 10.5);flex-direction:column;align-items:center;justify-content:center;border-radius:var(--radius-full, calc(infinity * 1px));border-style:var(--tw-border-style);border-width:1.5px;border-color:transparent;color:var(--foreground);transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function, cubic-bezier(.4, 0, .2, 1)));transition-duration:var(--tw-duration, var(--default-transition-duration, .15s));--tw-duration: .15s;transition-duration:.15s}.ui-calendar-day:focus-visible{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ui-calendar-day:focus-visible{--tw-ring-color: color-mix(in srgb, oklch(88.2% .059 254.128) 50%, transparent)}@supports (color: color-mix(in lab,red,red)){.ui-calendar-day:focus-visible{--tw-ring-color: color-mix(in oklab, var(--color-primary-200, var(--color-blue-200)) 50%, transparent)}}.ui-calendar-day:focus-visible{--tw-outline-style: none;outline-style:none}.ui-calendar-day:hover,.ui-calendar-day:focus-visible{border-color:var(--color-primary-600, var(--color-blue-600))}.ui-calendar-day:hover,.ui-calendar-day:focus-visible{color:var(--color-primary-600, var(--color-blue-600))}.ui-calendar-day[aria-disabled]{cursor:not-allowed;text-decoration-line:line-through;opacity:40%}.ui-calendar-day[aria-disabled]:hover{border-color:transparent}.ui-calendar-day[aria-disabled]:hover{color:inherit}.ui-calendar-day[data-outside]{color:var(--muted-foreground)}.ui-calendar-day[data-today]{--tw-font-weight: var(--font-weight-semibold, 600);font-weight:var(--font-weight-semibold, 600);color:var(--color-primary-600, var(--color-blue-600))}.ui-calendar-day[aria-pressed=true]{border-color:var(--color-primary-600, var(--color-blue-600));background-color:var(--color-primary-600, var(--color-blue-600));color:var(--color-white, #fff)}.ui-calendar-day[aria-pressed=true]:hover,.ui-calendar-day[aria-pressed=true]:focus-visible{border-color:var(--color-primary-700, var(--color-blue-700))}.ui-calendar-day[aria-pressed=true]:hover,.ui-calendar-day[aria-pressed=true]:focus-visible{background-color:var(--color-primary-700, var(--color-blue-700))}.ui-calendar-day[aria-pressed=true]:hover,.ui-calendar-day[aria-pressed=true]:focus-visible{color:var(--color-white, #fff)}.ui-calendar-day[data-in-range]{border-radius:0;background-color:var(--color-primary-100, var(--color-blue-100));color:var(--foreground)}.ui-calendar-day[data-range-start]{border-top-right-radius:0;border-bottom-right-radius:0}.ui-calendar-day[data-range-end]{border-top-left-radius:0;border-bottom-left-radius:0}.ui-calendar-day[data-range-end]:not([aria-pressed=true]){background-color:var(--color-primary-100, var(--color-blue-100))}.ui-calendar-day[data-in-range]:not(:nth-child(7n)),.ui-calendar-day[data-range-start]:not(:nth-child(7n)){--tw-shadow: 1px 0 0 var(--tw-shadow-color, var(--color-primary-100));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ui-calendar-day[data-in-range]:nth-child(7n+1),.ui-calendar-day[data-range-end]:nth-child(7n+1){border-top-left-radius:var(--radius-full, calc(infinity * 1px));border-bottom-left-radius:var(--radius-full, calc(infinity * 1px))}.ui-calendar-day[data-in-range]:nth-child(7n),.ui-calendar-day[data-range-start]:nth-child(7n){border-top-right-radius:var(--radius-full, calc(infinity * 1px));border-bottom-right-radius:var(--radius-full, calc(infinity * 1px))}@property --tw-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-shadow-color{syntax: \"*\"; inherits: false;}@property --tw-shadow-alpha{syntax: \"<percentage>\"; inherits: false; initial-value: 100%;}@property --tw-inset-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-inset-shadow-color{syntax: \"*\"; inherits: false;}@property --tw-inset-shadow-alpha{syntax: \"<percentage>\"; inherits: false; initial-value: 100%;}@property --tw-ring-color{syntax: \"*\"; inherits: false;}@property --tw-ring-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-inset-ring-color{syntax: \"*\"; inherits: false;}@property --tw-inset-ring-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-ring-inset{syntax: \"*\"; inherits: false;}@property --tw-ring-offset-width{syntax: \"<length>\"; inherits: false; initial-value: 0px;}@property --tw-ring-offset-color{syntax: \"*\"; inherits: false; initial-value: #fff;}@property --tw-ring-offset-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@property --tw-duration{syntax: \"*\"; inherits: false;}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-shadow: 0 0 #0000;--tw-shadow-color: initial;--tw-shadow-alpha: 100%;--tw-inset-shadow: 0 0 #0000;--tw-inset-shadow-color: initial;--tw-inset-shadow-alpha: 100%;--tw-ring-color: initial;--tw-ring-shadow: 0 0 #0000;--tw-inset-ring-color: initial;--tw-inset-ring-shadow: 0 0 #0000;--tw-ring-inset: initial;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-offset-shadow: 0 0 #0000;--tw-border-style: solid;--tw-duration: initial;--tw-font-weight: initial}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"]
8537
8726
  }]
8538
8727
  }],
8728
+ ctorParameters: () => [],
8539
8729
  propDecorators: {
8540
8730
  mode: [{
8541
8731
  type: i0.Input,
@@ -8606,6 +8796,34 @@ i0.ɵɵngDeclareClassMetadata({
8606
8796
  alias: "locale",
8607
8797
  required: false
8608
8798
  }]
8799
+ }],
8800
+ dayClass: [{
8801
+ type: i0.Input,
8802
+ args: [{
8803
+ isSignal: true,
8804
+ alias: "dayClass",
8805
+ required: false
8806
+ }]
8807
+ }],
8808
+ hideSelection: [{
8809
+ type: i0.Input,
8810
+ args: [{
8811
+ isSignal: true,
8812
+ alias: "hideSelection",
8813
+ required: false
8814
+ }]
8815
+ }],
8816
+ dayClick: [{
8817
+ type: i0.Output,
8818
+ args: ["dayClick"]
8819
+ }],
8820
+ monthChange: [{
8821
+ type: i0.Output,
8822
+ args: ["monthChange"]
8823
+ }],
8824
+ dayTemplate: [{
8825
+ type: i0.ContentChild,
8826
+ args: [i0.forwardRef(() => UiCalendarDayDirective), { isSignal: true }]
8609
8827
  }]
8610
8828
  }
8611
8829
  });
@@ -12898,6 +13116,7 @@ var UiColourComponent = class UiColourComponent {
12898
13116
  }
12899
13117
  },
12900
13118
  outputs: { value: "valueChange" },
13119
+ host: { properties: { "attr.id": "null" } },
12901
13120
  viewQueries: [{
12902
13121
  propertyName: "picker",
12903
13122
  first: true,
@@ -12990,6 +13209,7 @@ i0.ɵɵngDeclareClassMetadata({
12990
13209
  UiInputGroupComponent,
12991
13210
  UiButtonComponent
12992
13211
  ],
13212
+ host: { "[attr.id]": "null" },
12993
13213
  template: "<ui-input-group [validationState]=\"isValid() ? null : false\">\n <ui-button\n appearance=\"white\"\n intent=\"secondary\"\n size=\"sm\"\n classes=\"h-full\"\n ariaLabel=\"Pick colour\"\n [disabled]=\"disabled()\"\n (click)=\"openPicker()\"\n >\n <span\n class=\"border border-line-2 rounded size-5\"\n [style.background-color]=\"isValid() ? value() : 'transparent'\"\n ></span>\n </ui-button>\n\n <input\n #picker\n type=\"color\"\n class=\"sr-only\"\n tabindex=\"-1\"\n aria-hidden=\"true\"\n [value]=\"pickerValue()\"\n [disabled]=\"disabled()\"\n (input)=\"handlePick($event)\"\n />\n\n <ui-input\n [(value)]=\"value\"\n [id]=\"id()\"\n [disabled]=\"disabled()\"\n [maxlength]=\"7\"\n [spellcheck]=\"false\"\n autocomplete=\"off\"\n placeholder=\"#000000\"\n />\n</ui-input-group>\n"
12994
13214
  }]
12995
13215
  }],
@@ -13467,7 +13687,10 @@ var UiDateRangePickerComponent = class UiDateRangePickerComponent {
13467
13687
  }
13468
13688
  },
13469
13689
  outputs: { value: "valueChange" },
13470
- host: { classAttribute: "block" },
13690
+ host: {
13691
+ properties: { "attr.id": "null" },
13692
+ classAttribute: "block"
13693
+ },
13471
13694
  providers: [provideIcons({
13472
13695
  heroCalendarDateRange,
13473
13696
  heroXMark
@@ -13538,9 +13761,16 @@ var UiDateRangePickerComponent = class UiDateRangePickerComponent {
13538
13761
  "max",
13539
13762
  "isDateDisabled",
13540
13763
  "weekStart",
13541
- "locale"
13764
+ "locale",
13765
+ "dayClass",
13766
+ "hideSelection"
13542
13767
  ],
13543
- outputs: ["valueChange", "rangeChange"]
13768
+ outputs: [
13769
+ "valueChange",
13770
+ "rangeChange",
13771
+ "dayClick",
13772
+ "monthChange"
13773
+ ]
13544
13774
  },
13545
13775
  {
13546
13776
  kind: "component",
@@ -13592,7 +13822,10 @@ i0.ɵɵngDeclareClassMetadata({
13592
13822
  UiDropdownDirective,
13593
13823
  NgIcon
13594
13824
  ],
13595
- host: { class: "block" },
13825
+ host: {
13826
+ class: "block",
13827
+ "[attr.id]": "null"
13828
+ },
13596
13829
  providers: [provideIcons({
13597
13830
  heroCalendarDateRange,
13598
13831
  heroXMark
@@ -14170,7 +14403,10 @@ var UiDatepickerComponent = class UiDatepickerComponent {
14170
14403
  }
14171
14404
  },
14172
14405
  outputs: { value: "valueChange" },
14173
- host: { classAttribute: "block" },
14406
+ host: {
14407
+ properties: { "attr.id": "null" },
14408
+ classAttribute: "block"
14409
+ },
14174
14410
  providers: [provideIcons({
14175
14411
  heroCalendar,
14176
14412
  heroXMark
@@ -14241,9 +14477,16 @@ var UiDatepickerComponent = class UiDatepickerComponent {
14241
14477
  "max",
14242
14478
  "isDateDisabled",
14243
14479
  "weekStart",
14244
- "locale"
14480
+ "locale",
14481
+ "dayClass",
14482
+ "hideSelection"
14245
14483
  ],
14246
- outputs: ["valueChange", "rangeChange"]
14484
+ outputs: [
14485
+ "valueChange",
14486
+ "rangeChange",
14487
+ "dayClick",
14488
+ "monthChange"
14489
+ ]
14247
14490
  },
14248
14491
  {
14249
14492
  kind: "component",
@@ -14330,7 +14573,10 @@ i0.ɵɵngDeclareClassMetadata({
14330
14573
  NgIcon,
14331
14574
  UiCardComponent
14332
14575
  ],
14333
- host: { class: "block" },
14576
+ host: {
14577
+ class: "block",
14578
+ "[attr.id]": "null"
14579
+ },
14334
14580
  providers: [provideIcons({
14335
14581
  heroCalendar,
14336
14582
  heroXMark
@@ -14823,6 +15069,7 @@ var UiFileInputComponent = class UiFileInputComponent {
14823
15069
  value: "valueChange",
14824
15070
  rejected: "rejected"
14825
15071
  },
15072
+ host: { properties: { "attr.id": "null" } },
14826
15073
  providers: [provideIcons({
14827
15074
  heroArrowUp,
14828
15075
  heroXMark
@@ -14936,6 +15183,7 @@ i0.ɵɵngDeclareClassMetadata({
14936
15183
  heroArrowUp,
14937
15184
  heroXMark
14938
15185
  })],
15186
+ host: { "[attr.id]": "null" },
14939
15187
  template: "<ui-input-group [validationState]=\"hasRejection() ? false : null\">\n <ui-button\n appearance=\"white\"\n intent=\"secondary\"\n size=\"sm\"\n classes=\"h-full\"\n [disabled]=\"disabled()\"\n (click)=\"openPicker()\"\n >\n <ng-icon name=\"heroArrowUpTray\" class=\"shrink-0\" />\n {{ buttonLabel() }}\n </ui-button>\n\n <input\n #picker\n type=\"file\"\n class=\"sr-only\"\n tabindex=\"-1\"\n aria-hidden=\"true\"\n [accept]=\"accept()\"\n [multiple]=\"multiple()\"\n [disabled]=\"disabled()\"\n (change)=\"handlePick($event)\"\n />\n\n <ui-input\n [value]=\"summary()\"\n [id]=\"id()\"\n [disabled]=\"disabled()\"\n [placeholder]=\"placeholder()\"\n [describedBy]=\"describedBy()\"\n classes=\"truncate cursor-pointer\"\n readonly\n (click)=\"openPicker()\"\n >\n <ng-template #trailing>\n @if (value().length && !disabled()) {\n <button\n type=\"button\"\n class=\"inline-flex justify-center items-center w-8 self-stretch text-muted-foreground-1 hover:text-foreground\"\n aria-label=\"Clear files\"\n (click)=\"clear($event)\"\n >\n <ng-icon name=\"heroXMark\" class=\"shrink-0\" />\n </button>\n }\n </ng-template>\n </ui-input>\n</ui-input-group>\n"
14940
15188
  }]
14941
15189
  }],
@@ -15335,6 +15583,7 @@ var UiSwitchComponent = class UiSwitchComponent {
15335
15583
  }
15336
15584
  },
15337
15585
  outputs: { value: "valueChange" },
15586
+ host: { properties: { "attr.id": "null" } },
15338
15587
  ngImport: i0,
15339
15588
  template: "<label class=\"inline-flex items-center gap-2 cursor-pointer\" [class.opacity-50]=\"disabled()\">\n <span class=\"relative inline-flex items-center rounded-full focus-within:ring-2 focus-within:ring-primary-200/50\">\n <!--\n reuses ui-checkbox for the real state/behaviour, class-bound track/thumb below\n react to value() directly instead of peer-checked, since peer-* relies on the\n input and the styled element being real DOM siblings, which breaks once the\n input is nested inside ui-checkbox's own host element\n -->\n <ui-checkbox\n [(value)]=\"value\"\n [disabled]=\"disabled()\"\n [id]=\"id()\"\n [name]=\"name()\"\n classes=\"sr-only\"\n />\n\n <span\n class=\"w-9 h-5 rounded-full transition-colors\"\n [class.bg-primary-600]=\"value()\"\n [class.bg-surface-1]=\"!value()\"\n ></span>\n\n <span\n class=\"absolute left-0.5 size-4 rounded-full bg-white shadow transition-transform\"\n [class.translate-x-4]=\"value()\"\n ></span>\n </span>\n\n <ng-content />\n</label>\n",
15340
15589
  dependencies: [{
@@ -15365,6 +15614,7 @@ i0.ɵɵngDeclareClassMetadata({
15365
15614
  args: [{
15366
15615
  selector: "ui-switch",
15367
15616
  imports: [UiCheckboxComponent],
15617
+ host: { "[attr.id]": "null" },
15368
15618
  template: "<label class=\"inline-flex items-center gap-2 cursor-pointer\" [class.opacity-50]=\"disabled()\">\n <span class=\"relative inline-flex items-center rounded-full focus-within:ring-2 focus-within:ring-primary-200/50\">\n <!--\n reuses ui-checkbox for the real state/behaviour, class-bound track/thumb below\n react to value() directly instead of peer-checked, since peer-* relies on the\n input and the styled element being real DOM siblings, which breaks once the\n input is nested inside ui-checkbox's own host element\n -->\n <ui-checkbox\n [(value)]=\"value\"\n [disabled]=\"disabled()\"\n [id]=\"id()\"\n [name]=\"name()\"\n classes=\"sr-only\"\n />\n\n <span\n class=\"w-9 h-5 rounded-full transition-colors\"\n [class.bg-primary-600]=\"value()\"\n [class.bg-surface-1]=\"!value()\"\n ></span>\n\n <span\n class=\"absolute left-0.5 size-4 rounded-full bg-white shadow transition-transform\"\n [class.translate-x-4]=\"value()\"\n ></span>\n </span>\n\n <ng-content />\n</label>\n"
15369
15619
  }]
15370
15620
  }],
@@ -15432,7 +15682,7 @@ var UiTableFiltersComponent = class UiTableFiltersComponent {
15432
15682
  }, ...ngDevMode ? [{ debugName: "linked" }] : /* istanbul ignore next */ []);
15433
15683
  appliedCount = computed(() => this.facets().filter((facet) => facet.id in this.value()).length, ...ngDevMode ? [{ debugName: "appliedCount" }] : /* istanbul ignore next */ []);
15434
15684
  anyApplied = computed(() => this.appliedCount() > 0, ...ngDevMode ? [{ debugName: "anyApplied" }] : /* istanbul ignore next */ []);
15435
- window = inject(DOCUMENT).defaultView;
15685
+ window = inject(DOCUMENT$1).defaultView;
15436
15686
  wide = signal(true, ...ngDevMode ? [{ debugName: "wide" }] : /* istanbul ignore next */ []);
15437
15687
  constructor() {
15438
15688
  effect((onCleanup) => {
@@ -15994,7 +16244,8 @@ var UiUserMenuComponent = class UiUserMenuComponent {
15994
16244
  inputs: [
15995
16245
  "name",
15996
16246
  "src",
15997
- "size"
16247
+ "size",
16248
+ "colour"
15998
16249
  ]
15999
16250
  },
16000
16251
  {
@@ -16076,7 +16327,7 @@ const PREFERENCES = [
16076
16327
  "dark"
16077
16328
  ];
16078
16329
  var UiThemeService = class UiThemeService {
16079
- document = inject(DOCUMENT);
16330
+ document = inject(DOCUMENT$1);
16080
16331
  storageKey = inject(UI_THEME_CONFIG).storageKey;
16081
16332
  media = this.document.defaultView?.matchMedia?.("(prefers-color-scheme: dark)");
16082
16333
  preference = signal(this.stored(), ...ngDevMode ? [{ debugName: "preference" }] : /* istanbul ignore next */ []);
@@ -16264,6 +16515,6 @@ i0.ɵɵngDeclareClassMetadata({
16264
16515
  }]
16265
16516
  }
16266
16517
  });
16267
- export { AlertAppearances, AlertIntents, AvatarSizes, BadgeAppearances, BadgeIntents, BadgeSizes, BarChartOrientations, ButtonAppearances, ButtonGroupAppearances, ButtonIntents, ButtonSizes, ButtonTypes, CHART_COLOURS, CHART_INK, CHART_INK_DARK, CHART_MAX_LINE_SERIES, CHART_MAX_SERIES, CHART_PALETTE, CHART_PALETTE_DARK, CalendarModes, CardHeadingLevels, CardRadii, DisclosureTriggerAppearances, FileRejectionReasons, InputAriaAutocompletes, InputAriaHasPopups, InputModes, InputTypes, LineChartCurves, MoneySignDisplays, PRIVATE_TEXT_LABEL, PRIVATE_TEXT_MASK, PieChartVariants, ProgressIntents, ProgressLabelPositions, ProgressOrientations, ProgressShapes, ProgressSizes, RichTextToolGroups, RichTextTools, SelectLocalDataSource, SelectMultipleDisplays, SelectRemoteDataSource, SkeletonShapes, TableFiltersBreakpoints, TableLocalDataSource, TableRemoteDataSource, TextareaResizeOptions, ToastIntents, ToasterPositions, UI_BUTTON_GROUP, UI_FORMAT, UI_FORMAT_DEFAULTS, UI_LOADING_TYPES, UI_PRIVACY, UI_THEME_CONFIG, UiAlertComponent, UiAvatarComponent, UiBadgeComponent, UiBarChartComponent, UiButtonComponent, UiButtonGroupComponent, UiCalendarComponent, UiCardComponent, UiCardHeaderComponent, UiChartComponent, UiChartFrameComponent, UiChartLegendComponent, UiChartTableComponent, UiCheckboxComponent, UiColourComponent, UiContainerComponent, UiCounterComponent, UiDateRangePickerComponent, UiDatepickerComponent, UiDisclosureChevronComponent, UiDisclosureComponent, UiDisclosurePanelDirective, UiDisclosureTriggerComponent, UiDrawerComponent, UiDropdownButtonComponent, UiDropdownComponent, UiDropdownDirective, UiDropdownMenuComponent, UiDropzoneComponent, UiFieldComponent, UiFileInputComponent, UiInputAddonComponent, UiInputComponent, UiInputGroupComponent, UiKpiComponent, UiLayoutComponent, UiLineChartComponent, UiLoadingComponent, UiModalComponent, UiMoneyComponent, UiOverlayComponent, UiPaginationComponent, UiPieChartComponent, UiPrivacies, UiPrivateComponent, UiProgressComponent, UiRadioComponent, UiRichTextEditorComponent, UiSearchComponent, UiSegmentedComponent, UiSelectComponent, UiSidebarComponent, UiSidebarGroupComponent, UiSidebarItemComponent, UiSkeletonComponent, UiStatComponent, UiSwitchComponent, UiTabComponent, UiTabDirective, UiTableBarDirective, UiTableCellDirective, UiTableComponent, UiTableFiltersComponent, UiTableRegistry, UiTextareaComponent, UiThemeService, UiThemeSwitchComponent, UiTimeSelectComponent, UiToastComponent, UiToastService, UiToasterComponent, UiTooltipComponent, UiTreemapChartComponent, UiUserMenuComponent, WeekStarts, chartColour, chartInk, chartLabelInk, chartSeriesStyle, defaultDateRangePresets, financialYearPreset, injectMoneyFormatter, injectPrivateText, lastDaysPreset, maskMoney, mixChartColours, moneyFormatterParts, monthPreset, pickedChartColour, provideUiFormat, provideUiPrivacy, provideUiTheme, radiusClasses, thisWeekPreset, todayPreset, yearPreset };
16518
+ export { AlertAppearances, AlertIntents, AvatarSizes, BadgeAppearances, BadgeIntents, BadgeSizes, BarChartOrientations, ButtonAppearances, ButtonGroupAppearances, ButtonIntents, ButtonSizes, ButtonTypes, CHART_COLOURS, CHART_INK, CHART_INK_DARK, CHART_MAX_LINE_SERIES, CHART_MAX_SERIES, CHART_PALETTE, CHART_PALETTE_DARK, CalendarModes, CardHeadingLevels, CardRadii, DisclosureTriggerAppearances, FileRejectionReasons, InputAriaAutocompletes, InputAriaHasPopups, InputModes, InputTypes, LineChartCurves, MoneySignDisplays, PRIVATE_TEXT_LABEL, PRIVATE_TEXT_MASK, PieChartVariants, ProgressIntents, ProgressLabelPositions, ProgressOrientations, ProgressShapes, ProgressSizes, RichTextToolGroups, RichTextTools, SelectLocalDataSource, SelectMultipleDisplays, SelectRemoteDataSource, SkeletonShapes, TableFiltersBreakpoints, TableLocalDataSource, TableRemoteDataSource, TextareaResizeOptions, ToastIntents, ToasterPositions, UI_BUTTON_GROUP, UI_FORMAT, UI_FORMAT_DEFAULTS, UI_LOADING_TYPES, UI_PRIVACY, UI_THEME_CONFIG, UiAlertComponent, UiAvatarComponent, UiBadgeComponent, UiBarChartComponent, UiButtonComponent, UiButtonGroupComponent, UiCalendarComponent, UiCalendarDayDirective, UiCardComponent, UiCardHeaderComponent, UiChartComponent, UiChartFrameComponent, UiChartLegendComponent, UiChartTableComponent, UiCheckboxComponent, UiColourComponent, UiContainerComponent, UiCounterComponent, UiDateRangePickerComponent, UiDatepickerComponent, UiDisclosureChevronComponent, UiDisclosureComponent, UiDisclosurePanelDirective, UiDisclosureTriggerComponent, UiDrawerComponent, UiDropdownButtonComponent, UiDropdownComponent, UiDropdownDirective, UiDropdownMenuComponent, UiDropzoneComponent, UiFieldComponent, UiFileInputComponent, UiInputAddonComponent, UiInputComponent, UiInputGroupComponent, UiKpiComponent, UiLayoutComponent, UiLineChartComponent, UiLoadingComponent, UiModalComponent, UiMoneyComponent, UiOverlayComponent, UiPaginationComponent, UiPieChartComponent, UiPrivacies, UiPrivateComponent, UiProgressComponent, UiRadioComponent, UiRichTextEditorComponent, UiSearchComponent, UiSegmentedComponent, UiSelectComponent, UiSidebarComponent, UiSidebarGroupComponent, UiSidebarItemComponent, UiSkeletonComponent, UiStatComponent, UiSwitchComponent, UiTabComponent, UiTabDirective, UiTableBarDirective, UiTableCellDirective, UiTableComponent, UiTableFiltersComponent, UiTableRegistry, UiTextareaComponent, UiThemeService, UiThemeSwitchComponent, UiTimeSelectComponent, UiToastComponent, UiToastService, UiToasterComponent, UiTooltipComponent, UiTreemapChartComponent, UiUserMenuComponent, WeekStarts, chartColour, chartInk, chartLabelInk, chartSeriesStyle, defaultDateRangePresets, financialYearPreset, injectMoneyFormatter, injectPrivateText, lastDaysPreset, maskMoney, mixChartColours, moneyFormatterParts, monthPreset, pickedChartColour, provideUiFormat, provideUiPrivacy, provideUiTheme, radiusClasses, thisWeekPreset, todayPreset, yearPreset };
16268
16519
 
16269
16520
  //# sourceMappingURL=area8975-ui.mjs.map