@luzmo/ngx-lucero 1.0.3-alpha.8 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (105) hide show
  1. package/README.md +37 -0
  2. package/esm/components/accordion-item.js +1 -1
  3. package/esm/components/accordion.js +1 -1
  4. package/esm/components/action-bar.js +1 -1
  5. package/esm/components/action-button.d.ts +6 -4
  6. package/esm/components/action-button.js +11 -3
  7. package/esm/components/action-group.js +1 -1
  8. package/esm/components/action-menu.d.ts +2 -1
  9. package/esm/components/action-menu.js +9 -2
  10. package/esm/components/avatar.d.ts +5 -1
  11. package/esm/components/avatar.js +18 -2
  12. package/esm/components/badge.js +1 -1
  13. package/esm/components/button-group.js +1 -1
  14. package/esm/components/button.d.ts +1 -3
  15. package/esm/components/button.js +3 -8
  16. package/esm/components/calendar.js +1 -1
  17. package/esm/components/chat-message-group.js +1 -1
  18. package/esm/components/chat-message.js +1 -1
  19. package/esm/components/checkbox.js +3 -2
  20. package/esm/components/clear-button.js +1 -1
  21. package/esm/components/close-button.js +1 -1
  22. package/esm/components/color-area.js +1 -1
  23. package/esm/components/color-field.js +1 -1
  24. package/esm/components/color-handle.js +1 -1
  25. package/esm/components/color-loupe.js +1 -1
  26. package/esm/components/color-menu.js +1 -1
  27. package/esm/components/color-palette-group.js +1 -1
  28. package/esm/components/color-palette.js +1 -1
  29. package/esm/components/color-picker.js +1 -1
  30. package/esm/components/color-slider.js +1 -1
  31. package/esm/components/date-range-picker.js +1 -1
  32. package/esm/components/date-time-picker.js +1 -1
  33. package/esm/components/divider.js +1 -1
  34. package/esm/components/field-group.js +1 -1
  35. package/esm/components/field-label.js +1 -1
  36. package/esm/components/help-text.js +1 -1
  37. package/esm/components/icon.js +1 -1
  38. package/esm/components/infield-button.js +1 -1
  39. package/esm/components/label.js +1 -1
  40. package/esm/components/menu-divider.js +1 -1
  41. package/esm/components/menu-group.d.ts +3 -1
  42. package/esm/components/menu-group.js +16 -2
  43. package/esm/components/menu-item.d.ts +3 -3
  44. package/esm/components/menu-item.js +7 -7
  45. package/esm/components/menu.d.ts +5 -3
  46. package/esm/components/menu.js +16 -2
  47. package/esm/components/multi-language-field.js +1 -1
  48. package/esm/components/notice.d.ts +49 -0
  49. package/esm/components/notice.js +145 -0
  50. package/esm/components/number-field.js +1 -1
  51. package/esm/components/option.d.ts +66 -0
  52. package/esm/components/option.js +241 -0
  53. package/esm/components/options-divider.d.ts +29 -0
  54. package/esm/components/options-divider.js +69 -0
  55. package/esm/components/options.d.ts +7 -6
  56. package/esm/components/options.js +2 -2
  57. package/esm/components/overlay-trigger.d.ts +45 -0
  58. package/esm/components/overlay-trigger.js +155 -0
  59. package/esm/components/overlay.d.ts +5 -3
  60. package/esm/components/overlay.js +2 -2
  61. package/esm/components/picker-button.js +1 -1
  62. package/esm/components/picker.d.ts +2 -1
  63. package/esm/components/picker.js +9 -2
  64. package/esm/components/popover.js +1 -1
  65. package/esm/components/progress-bar.js +1 -1
  66. package/esm/components/progress-circle.js +1 -1
  67. package/esm/components/progress-steps.js +1 -1
  68. package/esm/components/prompt-box.d.ts +7 -3
  69. package/esm/components/prompt-box.js +20 -3
  70. package/esm/components/question-box.d.ts +78 -0
  71. package/esm/components/question-box.js +253 -0
  72. package/esm/components/radio-group.d.ts +3 -2
  73. package/esm/components/radio-group.js +8 -7
  74. package/esm/components/radio.d.ts +1 -1
  75. package/esm/components/radio.js +4 -3
  76. package/esm/components/search.js +1 -1
  77. package/esm/components/select.js +1 -1
  78. package/esm/components/skeleton-loader.js +1 -1
  79. package/esm/components/slider-handle.d.ts +63 -0
  80. package/esm/components/slider-handle.js +218 -0
  81. package/esm/components/slider.d.ts +59 -8
  82. package/esm/components/slider.js +205 -27
  83. package/esm/components/status-light.js +1 -1
  84. package/esm/components/swatch-group.js +1 -1
  85. package/esm/components/swatch.d.ts +1 -1
  86. package/esm/components/swatch.js +1 -1
  87. package/esm/components/switch.js +1 -1
  88. package/esm/components/tab-panel.js +1 -1
  89. package/esm/components/tab.js +1 -1
  90. package/esm/components/tabs-overflow.js +1 -1
  91. package/esm/components/tabs.d.ts +1 -1
  92. package/esm/components/tabs.js +1 -1
  93. package/esm/components/tag.d.ts +1 -1
  94. package/esm/components/tag.js +2 -2
  95. package/esm/components/tags.js +1 -1
  96. package/esm/components/text-field.d.ts +3 -3
  97. package/esm/components/text-field.js +1 -1
  98. package/esm/components/toast.js +1 -1
  99. package/esm/components/tooltip.js +1 -1
  100. package/esm/components/top-nav-item.js +1 -1
  101. package/esm/components/top-nav.d.ts +2 -2
  102. package/esm/components/top-nav.js +1 -1
  103. package/esm/index.d.ts +14 -2
  104. package/esm/index.js +24 -0
  105. package/package.json +2 -2
package/README.md CHANGED
@@ -35,6 +35,43 @@ The wrapper class name mirrors the host element (`LuzmoButton`); the
35
35
  underlying `HTMLElement` subclass type is re-exported as
36
36
  `LuzmoButtonElement` for `@ViewChild` / `ElementRef<T>` use cases.
37
37
 
38
+ ## Router links
39
+
40
+ Angular 20 and newer recognize Lucero components with an `href` property as
41
+ link-compatible custom elements. Import `RouterLink` and apply it directly to
42
+ the Lucero component:
43
+
44
+ ```ts
45
+ import { Component } from '@angular/core';
46
+ import { RouterLink } from '@angular/router';
47
+ import { LuzmoActionButton } from '@luzmo/ngx-lucero';
48
+
49
+ @Component({
50
+ selector: 'app-settings-link',
51
+ standalone: true,
52
+ imports: [LuzmoActionButton, RouterLink],
53
+ template: `
54
+ <luzmo-action-button routerLink="/settings">
55
+ Settings
56
+ </luzmo-action-button>
57
+ `
58
+ })
59
+ export class SettingsLinkComponent {}
60
+ ```
61
+
62
+ `RouterLink` writes the resolved `href`, handles the click with the Angular
63
+ router, and prevents a full page refresh. The component forwards exactly one
64
+ `click` event per activation, so the router navigates once.
65
+
66
+ Because activation is proxied through an anchor inside the component's shadow
67
+ root, the button does not expose native link affordances: modified clicks
68
+ (<kbd>Cmd</kbd>/<kbd>Ctrl</kbd>/<kbd>Shift</kbd>) and **Open link in new tab**
69
+ from the context menu are not available. Use a plain `<a>` where those matter.
70
+
71
+ Angular 17–19 do not recognize custom elements as anchor-like. On those
72
+ versions, use `routerLink` without a separate `href` for client-side navigation,
73
+ or upgrade to Angular 20+ when native link behavior is required.
74
+
38
75
  ## Notes
39
76
 
40
77
  - This package depends on `@luzmo/lucero` for the underlying custom elements.
@@ -83,7 +83,7 @@ export class LuzmoAccordionItem {
83
83
  static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: LuzmoAccordionItem, selectors: [["luzmo-accordion-item"]], inputs: { open: "open", label: "label", disabled: "disabled", size: "size", tabIndex: "tabIndex" }, outputs: { luzmoAccordionItemToggleEvent: "luzmo-accordion-item-toggle", keydownEvent: "keydown" }, exportAs: ["luzmoAccordionItem"], features: [i0.ɵɵNgOnChangesFeature], ngContentSelectors: _c0, decls: 1, vars: 0, template: function LuzmoAccordionItem_Template(rf, ctx) { if (rf & 1) {
84
84
  i0.ɵɵprojectionDef();
85
85
  i0.ɵɵprojection(0);
86
- } }, encapsulation: 2, changeDetection: 0 });
86
+ } }, encapsulation: 2 });
87
87
  }
88
88
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(LuzmoAccordionItem, [{
89
89
  type: Component,
@@ -81,7 +81,7 @@ export class LuzmoAccordion {
81
81
  static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: LuzmoAccordion, selectors: [["luzmo-accordion"]], inputs: { allowMultiple: "allowMultiple", density: "density", headerCase: "headerCase", noContentPadding: "noContentPadding", variant: "variant", size: "size" }, exportAs: ["luzmoAccordion"], features: [i0.ɵɵNgOnChangesFeature], ngContentSelectors: _c0, decls: 1, vars: 0, template: function LuzmoAccordion_Template(rf, ctx) { if (rf & 1) {
82
82
  i0.ɵɵprojectionDef();
83
83
  i0.ɵɵprojection(0);
84
- } }, encapsulation: 2, changeDetection: 0 });
84
+ } }, encapsulation: 2 });
85
85
  }
86
86
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(LuzmoAccordion, [{
87
87
  type: Component,
@@ -62,7 +62,7 @@ export class LuzmoActionBar {
62
62
  static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: LuzmoActionBar, selectors: [["luzmo-action-bar"]], inputs: { emphasized: "emphasized", open: "open" }, outputs: { closeEvent: "close" }, exportAs: ["luzmoActionBar"], features: [i0.ɵɵNgOnChangesFeature], ngContentSelectors: _c0, decls: 1, vars: 0, template: function LuzmoActionBar_Template(rf, ctx) { if (rf & 1) {
63
63
  i0.ɵɵprojectionDef();
64
64
  i0.ɵɵprojection(0);
65
- } }, encapsulation: 2, changeDetection: 0 });
65
+ } }, encapsulation: 2 });
66
66
  }
67
67
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(LuzmoActionBar, [{
68
68
  type: Component,
@@ -1,9 +1,9 @@
1
1
  import { OnChanges, SimpleChanges } from '@angular/core';
2
2
  import { ControlValueAccessor } from '@angular/forms';
3
3
  import '@luzmo/lucero/action-button';
4
- import type { LuzmoActionButton as LuzmoActionButtonHostElement, ActionButtonVariants } from '@luzmo/lucero/action-button';
4
+ import type { LuzmoActionButton as LuzmoActionButtonHostElement, ActionButtonTreatments, ActionButtonVariants } from '@luzmo/lucero/action-button';
5
5
  import * as i0 from "@angular/core";
6
- export type { ActionButtonVariants } from '@luzmo/lucero/action-button';
6
+ export type { ActionButtonTreatments, ActionButtonVariants } from '@luzmo/lucero/action-button';
7
7
  export declare class LuzmoActionButton implements OnChanges, ControlValueAccessor {
8
8
  private readonly elementRef;
9
9
  private readonly renderer;
@@ -18,6 +18,8 @@ export declare class LuzmoActionButton implements OnChanges, ControlValueAccesso
18
18
  holdAffordance?: boolean;
19
19
  /** Whether the Action Button should show in a quiet state */
20
20
  quiet?: boolean;
21
+ /** The surface treatment for neutral action buttons. `outline` preserves the standard surface; `fill` uses highlighted neutral surface tokens. Quiet, selected, and static-color appearances take precedence. Other variants retain their existing appearance. */
22
+ treatment?: ActionButtonTreatments;
21
23
  /** The role for the Action Button */
22
24
  role?: string;
23
25
  /** Whether an Action Button with `role='button'` should also be `aria-pressed='true'` */
@@ -26,7 +28,7 @@ export declare class LuzmoActionButton implements OnChanges, ControlValueAccesso
26
28
  toggles?: boolean;
27
29
  /** The static color variant to use for the action button. */
28
30
  staticColor?: 'white' | 'black';
29
- /** The appearance preset to apply to this action button. - `neutral` (default): the standard action button. - `pill`: a content-width chip using the standard action-button radius. - `accent`: a content-width chip with a soft, primary-tinted theme. */
31
+ /** The appearance preset to apply to this action button. - `neutral` (default): the standard action button. - `primary`: a primary-colored outline action button. - `negative`: a destructive tool with negative text and icon colors. - `pill`: a content-width chip using the standard action-button radius. - `accent`: a content-width chip with a soft, primary-tinted theme. */
30
32
  variant?: ActionButtonVariants;
31
33
  /** The value of the Action Button */
32
34
  value?: string;
@@ -76,7 +78,7 @@ export declare class LuzmoActionButton implements OnChanges, ControlValueAccesso
76
78
  setDisabledState(isDisabled: boolean): void;
77
79
  focus(options?: FocusOptions): void;
78
80
  static ɵfac: i0.ɵɵFactoryDeclaration<LuzmoActionButton, never>;
79
- static ɵcmp: i0.ɵɵComponentDeclaration<LuzmoActionButton, "luzmo-action-button", ["luzmoActionButton"], { "emphasized": { "alias": "emphasized"; "required": false; }; "holdAffordance": { "alias": "holdAffordance"; "required": false; }; "quiet": { "alias": "quiet"; "required": false; }; "role": { "alias": "role"; "required": false; }; "selected": { "alias": "selected"; "required": false; }; "toggles": { "alias": "toggles"; "required": false; }; "staticColor": { "alias": "staticColor"; "required": false; }; "variant": { "alias": "variant"; "required": false; }; "value": { "alias": "value"; "required": false; }; "size": { "alias": "size"; "required": false; }; "download": { "alias": "download"; "required": false; }; "label": { "alias": "label"; "required": false; }; "href": { "alias": "href"; "required": false; }; "target": { "alias": "target"; "required": false; }; "referrerpolicy": { "alias": "referrerpolicy"; "required": false; }; "rel": { "alias": "rel"; "required": false; }; "active": { "alias": "active"; "required": false; }; "type": { "alias": "type"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "tabIndex": { "alias": "tabIndex"; "required": false; }; }, { "longpressEvent": "longpress"; "changeEvent": "change"; "keydownEvent": "keydown"; }, never, ["*"], true, never>;
81
+ static ɵcmp: i0.ɵɵComponentDeclaration<LuzmoActionButton, "luzmo-action-button", ["luzmoActionButton"], { "emphasized": { "alias": "emphasized"; "required": false; }; "holdAffordance": { "alias": "holdAffordance"; "required": false; }; "quiet": { "alias": "quiet"; "required": false; }; "treatment": { "alias": "treatment"; "required": false; }; "role": { "alias": "role"; "required": false; }; "selected": { "alias": "selected"; "required": false; }; "toggles": { "alias": "toggles"; "required": false; }; "staticColor": { "alias": "staticColor"; "required": false; }; "variant": { "alias": "variant"; "required": false; }; "value": { "alias": "value"; "required": false; }; "size": { "alias": "size"; "required": false; }; "download": { "alias": "download"; "required": false; }; "label": { "alias": "label"; "required": false; }; "href": { "alias": "href"; "required": false; }; "target": { "alias": "target"; "required": false; }; "referrerpolicy": { "alias": "referrerpolicy"; "required": false; }; "rel": { "alias": "rel"; "required": false; }; "active": { "alias": "active"; "required": false; }; "type": { "alias": "type"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "tabIndex": { "alias": "tabIndex"; "required": false; }; }, { "longpressEvent": "longpress"; "changeEvent": "change"; "keydownEvent": "keydown"; }, never, ["*"], true, never>;
80
82
  }
81
83
  /** The underlying custom element type for LuzmoActionButton */
82
84
  export type LuzmoActionButtonElement = LuzmoActionButtonHostElement;
@@ -25,6 +25,8 @@ export class LuzmoActionButton {
25
25
  holdAffordance;
26
26
  /** Whether the Action Button should show in a quiet state */
27
27
  quiet;
28
+ /** The surface treatment for neutral action buttons. `outline` preserves the standard surface; `fill` uses highlighted neutral surface tokens. Quiet, selected, and static-color appearances take precedence. Other variants retain their existing appearance. */
29
+ treatment;
28
30
  /** The role for the Action Button */
29
31
  role;
30
32
  /** Whether an Action Button with `role='button'` should also be `aria-pressed='true'` */
@@ -33,7 +35,7 @@ export class LuzmoActionButton {
33
35
  toggles;
34
36
  /** The static color variant to use for the action button. */
35
37
  staticColor;
36
- /** The appearance preset to apply to this action button. - `neutral` (default): the standard action button. - `pill`: a content-width chip using the standard action-button radius. - `accent`: a content-width chip with a soft, primary-tinted theme. */
38
+ /** The appearance preset to apply to this action button. - `neutral` (default): the standard action button. - `primary`: a primary-colored outline action button. - `negative`: a destructive tool with negative text and icon colors. - `pill`: a content-width chip using the standard action-button radius. - `accent`: a content-width chip with a soft, primary-tinted theme. */
37
39
  variant;
38
40
  /** The value of the Action Button */
39
41
  value;
@@ -83,6 +85,9 @@ export class LuzmoActionButton {
83
85
  case 'quiet':
84
86
  this.setHostProperty('quiet', changes['quiet'].currentValue);
85
87
  break;
88
+ case 'treatment':
89
+ this.setHostProperty('treatment', changes['treatment'].currentValue);
90
+ break;
86
91
  case 'role':
87
92
  this.setHostProperty('role', changes['role'].currentValue);
88
93
  break;
@@ -209,7 +214,7 @@ export class LuzmoActionButton {
209
214
  return this.host.focus(options);
210
215
  }
211
216
  static ɵfac = function LuzmoActionButton_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || LuzmoActionButton)(); };
212
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: LuzmoActionButton, selectors: [["luzmo-action-button"]], inputs: { emphasized: "emphasized", holdAffordance: "holdAffordance", quiet: "quiet", role: "role", selected: "selected", toggles: "toggles", staticColor: "staticColor", variant: "variant", value: "value", size: "size", download: "download", label: "label", href: "href", target: "target", referrerpolicy: "referrerpolicy", rel: "rel", active: "active", type: "type", disabled: "disabled", tabIndex: "tabIndex" }, outputs: { longpressEvent: "longpress", changeEvent: "change", keydownEvent: "keydown" }, exportAs: ["luzmoActionButton"], features: [i0.ɵɵProvidersFeature([
217
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: LuzmoActionButton, selectors: [["luzmo-action-button"]], inputs: { emphasized: "emphasized", holdAffordance: "holdAffordance", quiet: "quiet", treatment: "treatment", role: "role", selected: "selected", toggles: "toggles", staticColor: "staticColor", variant: "variant", value: "value", size: "size", download: "download", label: "label", href: "href", target: "target", referrerpolicy: "referrerpolicy", rel: "rel", active: "active", type: "type", disabled: "disabled", tabIndex: "tabIndex" }, outputs: { longpressEvent: "longpress", changeEvent: "change", keydownEvent: "keydown" }, exportAs: ["luzmoActionButton"], features: [i0.ɵɵProvidersFeature([
213
218
  {
214
219
  provide: NG_VALUE_ACCESSOR,
215
220
  useExisting: forwardRef(() => LuzmoActionButton),
@@ -218,7 +223,7 @@ export class LuzmoActionButton {
218
223
  ]), i0.ɵɵNgOnChangesFeature], ngContentSelectors: _c0, decls: 1, vars: 0, template: function LuzmoActionButton_Template(rf, ctx) { if (rf & 1) {
219
224
  i0.ɵɵprojectionDef();
220
225
  i0.ɵɵprojection(0);
221
- } }, encapsulation: 2, changeDetection: 0 });
226
+ } }, encapsulation: 2 });
222
227
  }
223
228
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(LuzmoActionButton, [{
224
229
  type: Component,
@@ -245,6 +250,9 @@ export class LuzmoActionButton {
245
250
  }], quiet: [{
246
251
  type: Input,
247
252
  args: [{ alias: 'quiet' }]
253
+ }], treatment: [{
254
+ type: Input,
255
+ args: [{ alias: 'treatment' }]
248
256
  }], role: [{
249
257
  type: Input,
250
258
  args: [{ alias: 'role' }]
@@ -108,7 +108,7 @@ export class LuzmoActionGroup {
108
108
  static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: LuzmoActionGroup, selectors: [["luzmo-action-group"]], inputs: { buttons: "buttons", rovingTabindexController: "rovingTabindexController", compact: "compact", emphasized: "emphasized", justified: "justified", label: "label", quiet: "quiet", selects: "selects", staticColor: "staticColor", vertical: "vertical", selected: "selected", slotElement: "slotElement", size: "size" }, outputs: { changeEvent: "change" }, exportAs: ["luzmoActionGroup"], features: [i0.ɵɵNgOnChangesFeature], ngContentSelectors: _c0, decls: 1, vars: 0, template: function LuzmoActionGroup_Template(rf, ctx) { if (rf & 1) {
109
109
  i0.ɵɵprojectionDef();
110
110
  i0.ɵɵprojection(0);
111
- } }, encapsulation: 2, changeDetection: 0 });
111
+ } }, encapsulation: 2 });
112
112
  }
113
113
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(LuzmoActionGroup, [{
114
114
  type: Component,
@@ -44,6 +44,7 @@ export declare class LuzmoActionMenu implements OnChanges, ControlValueAccessor
44
44
  selectedItem?: unknown;
45
45
  dependencyManager?: unknown;
46
46
  isMobile?: unknown;
47
+ isTouchDevice?: unknown;
47
48
  strategy?: unknown;
48
49
  pendingStateController?: unknown;
49
50
  applyFocusElementLabel?: unknown;
@@ -75,7 +76,7 @@ export declare class LuzmoActionMenu implements OnChanges, ControlValueAccessor
75
76
  toggle(target?: boolean): void;
76
77
  close(): void;
77
78
  static ɵfac: i0.ɵɵFactoryDeclaration<LuzmoActionMenu, never>;
78
- static ɵcmp: i0.ɵɵComponentDeclaration<LuzmoActionMenu, "luzmo-action-menu", ["luzmoActionMenu"], { "selects": { "alias": "selects"; "required": false; }; "staticColor": { "alias": "staticColor"; "required": false; }; "handleSlottableRequest": { "alias": "handleSlottableRequest"; "required": false; }; "managePresenceObservedSlot": { "alias": "managePresenceObservedSlot"; "required": false; }; "size": { "alias": "size"; "required": false; }; "appliedLabel": { "alias": "appliedLabel"; "required": false; }; "button": { "alias": "button"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "focused": { "alias": "focused"; "required": false; }; "icons": { "alias": "icons"; "required": false; }; "variant": { "alias": "variant"; "required": false; }; "invalid": { "alias": "invalid"; "required": false; }; "pending": { "alias": "pending"; "required": false; }; "pendingLabel": { "alias": "pendingLabel"; "required": false; }; "label": { "alias": "label"; "required": false; }; "open": { "alias": "open"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "labelAlignment": { "alias": "labelAlignment"; "required": false; }; "optionsMenu": { "alias": "optionsMenu"; "required": false; }; "overlayElement": { "alias": "overlayElement"; "required": false; }; "placement": { "alias": "placement"; "required": false; }; "quiet": { "alias": "quiet"; "required": false; }; "value": { "alias": "value"; "required": false; }; "selectedItem": { "alias": "selectedItem"; "required": false; }; "dependencyManager": { "alias": "dependencyManager"; "required": false; }; "isMobile": { "alias": "isMobile"; "required": false; }; "strategy": { "alias": "strategy"; "required": false; }; "pendingStateController": { "alias": "pendingStateController"; "required": false; }; "applyFocusElementLabel": { "alias": "applyFocusElementLabel"; "required": false; }; "tabIndex": { "alias": "tabIndex"; "required": false; }; }, { "changeEvent": "change"; "scrollEvent": "scroll"; "keydownEvent": "keydown"; }, never, ["*"], true, never>;
79
+ static ɵcmp: i0.ɵɵComponentDeclaration<LuzmoActionMenu, "luzmo-action-menu", ["luzmoActionMenu"], { "selects": { "alias": "selects"; "required": false; }; "staticColor": { "alias": "staticColor"; "required": false; }; "handleSlottableRequest": { "alias": "handleSlottableRequest"; "required": false; }; "managePresenceObservedSlot": { "alias": "managePresenceObservedSlot"; "required": false; }; "size": { "alias": "size"; "required": false; }; "appliedLabel": { "alias": "appliedLabel"; "required": false; }; "button": { "alias": "button"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "focused": { "alias": "focused"; "required": false; }; "icons": { "alias": "icons"; "required": false; }; "variant": { "alias": "variant"; "required": false; }; "invalid": { "alias": "invalid"; "required": false; }; "pending": { "alias": "pending"; "required": false; }; "pendingLabel": { "alias": "pendingLabel"; "required": false; }; "label": { "alias": "label"; "required": false; }; "open": { "alias": "open"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "labelAlignment": { "alias": "labelAlignment"; "required": false; }; "optionsMenu": { "alias": "optionsMenu"; "required": false; }; "overlayElement": { "alias": "overlayElement"; "required": false; }; "placement": { "alias": "placement"; "required": false; }; "quiet": { "alias": "quiet"; "required": false; }; "value": { "alias": "value"; "required": false; }; "selectedItem": { "alias": "selectedItem"; "required": false; }; "dependencyManager": { "alias": "dependencyManager"; "required": false; }; "isMobile": { "alias": "isMobile"; "required": false; }; "isTouchDevice": { "alias": "isTouchDevice"; "required": false; }; "strategy": { "alias": "strategy"; "required": false; }; "pendingStateController": { "alias": "pendingStateController"; "required": false; }; "applyFocusElementLabel": { "alias": "applyFocusElementLabel"; "required": false; }; "tabIndex": { "alias": "tabIndex"; "required": false; }; }, { "changeEvent": "change"; "scrollEvent": "scroll"; "keydownEvent": "keydown"; }, never, ["*"], true, never>;
79
80
  }
80
81
  /** The underlying custom element type for LuzmoActionMenu */
81
82
  export type LuzmoActionMenuElement = LuzmoActionMenuHostElement;
@@ -55,6 +55,7 @@ export class LuzmoActionMenu {
55
55
  selectedItem;
56
56
  dependencyManager;
57
57
  isMobile;
58
+ isTouchDevice;
58
59
  strategy;
59
60
  pendingStateController;
60
61
  applyFocusElementLabel;
@@ -153,6 +154,9 @@ export class LuzmoActionMenu {
153
154
  case 'isMobile':
154
155
  this.setHostProperty('isMobile', changes['isMobile'].currentValue);
155
156
  break;
157
+ case 'isTouchDevice':
158
+ this.setHostProperty('isTouchDevice', changes['isTouchDevice'].currentValue);
159
+ break;
156
160
  case 'strategy':
157
161
  this.setHostProperty('strategy', changes['strategy'].currentValue);
158
162
  break;
@@ -246,7 +250,7 @@ export class LuzmoActionMenu {
246
250
  return this.host.close();
247
251
  }
248
252
  static ɵfac = function LuzmoActionMenu_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || LuzmoActionMenu)(); };
249
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: LuzmoActionMenu, selectors: [["luzmo-action-menu"]], inputs: { selects: "selects", staticColor: "staticColor", handleSlottableRequest: "handleSlottableRequest", managePresenceObservedSlot: "managePresenceObservedSlot", size: "size", appliedLabel: "appliedLabel", button: "button", disabled: "disabled", focused: "focused", icons: "icons", variant: "variant", invalid: "invalid", pending: "pending", pendingLabel: "pendingLabel", label: "label", open: "open", readonly: "readonly", labelAlignment: "labelAlignment", optionsMenu: "optionsMenu", overlayElement: "overlayElement", placement: "placement", quiet: "quiet", value: "value", selectedItem: "selectedItem", dependencyManager: "dependencyManager", isMobile: "isMobile", strategy: "strategy", pendingStateController: "pendingStateController", applyFocusElementLabel: "applyFocusElementLabel", tabIndex: "tabIndex" }, outputs: { changeEvent: "change", scrollEvent: "scroll", keydownEvent: "keydown" }, exportAs: ["luzmoActionMenu"], features: [i0.ɵɵProvidersFeature([
253
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: LuzmoActionMenu, selectors: [["luzmo-action-menu"]], inputs: { selects: "selects", staticColor: "staticColor", handleSlottableRequest: "handleSlottableRequest", managePresenceObservedSlot: "managePresenceObservedSlot", size: "size", appliedLabel: "appliedLabel", button: "button", disabled: "disabled", focused: "focused", icons: "icons", variant: "variant", invalid: "invalid", pending: "pending", pendingLabel: "pendingLabel", label: "label", open: "open", readonly: "readonly", labelAlignment: "labelAlignment", optionsMenu: "optionsMenu", overlayElement: "overlayElement", placement: "placement", quiet: "quiet", value: "value", selectedItem: "selectedItem", dependencyManager: "dependencyManager", isMobile: "isMobile", isTouchDevice: "isTouchDevice", strategy: "strategy", pendingStateController: "pendingStateController", applyFocusElementLabel: "applyFocusElementLabel", tabIndex: "tabIndex" }, outputs: { changeEvent: "change", scrollEvent: "scroll", keydownEvent: "keydown" }, exportAs: ["luzmoActionMenu"], features: [i0.ɵɵProvidersFeature([
250
254
  {
251
255
  provide: NG_VALUE_ACCESSOR,
252
256
  useExisting: forwardRef(() => LuzmoActionMenu),
@@ -255,7 +259,7 @@ export class LuzmoActionMenu {
255
259
  ]), i0.ɵɵNgOnChangesFeature], ngContentSelectors: _c0, decls: 1, vars: 0, template: function LuzmoActionMenu_Template(rf, ctx) { if (rf & 1) {
256
260
  i0.ɵɵprojectionDef();
257
261
  i0.ɵɵprojection(0);
258
- } }, encapsulation: 2, changeDetection: 0 });
262
+ } }, encapsulation: 2 });
259
263
  }
260
264
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(LuzmoActionMenu, [{
261
265
  type: Component,
@@ -351,6 +355,9 @@ export class LuzmoActionMenu {
351
355
  }], isMobile: [{
352
356
  type: Input,
353
357
  args: [{ alias: 'isMobile' }]
358
+ }], isTouchDevice: [{
359
+ type: Input,
360
+ args: [{ alias: 'isTouchDevice' }]
354
361
  }], strategy: [{
355
362
  type: Input,
356
363
  args: [{ alias: 'strategy' }]
@@ -16,6 +16,10 @@ export declare class LuzmoAvatar implements OnChanges {
16
16
  rounding?: 'none' | 'full';
17
17
  /** The src of the avatar image. */
18
18
  src?: string;
19
+ /** The letter to show when no image is available. Pass a single character; the host decides what to display (for example the first letter of a name). */
20
+ letter?: string;
21
+ /** When true, the letter fallback derives its background color from the letter instead of using the neutral default. */
22
+ colorFromLetter?: boolean;
19
23
  /** When true, marks the avatar image as decorative (sets alt=""). Use when the avatar does not convey meaningful information. */
20
24
  isDecorative?: boolean;
21
25
  /** Causes the browser to treat the linked URL as a download. */
@@ -49,7 +53,7 @@ export declare class LuzmoAvatar implements OnChanges {
49
53
  private bindEvents;
50
54
  focus(options?: FocusOptions): void;
51
55
  static ɵfac: i0.ɵɵFactoryDeclaration<LuzmoAvatar, never>;
52
- static ɵcmp: i0.ɵɵComponentDeclaration<LuzmoAvatar, "luzmo-avatar", ["luzmoAvatar"], { "border": { "alias": "border"; "required": false; }; "rounding": { "alias": "rounding"; "required": false; }; "src": { "alias": "src"; "required": false; }; "isDecorative": { "alias": "isDecorative"; "required": false; }; "download": { "alias": "download"; "required": false; }; "label": { "alias": "label"; "required": false; }; "href": { "alias": "href"; "required": false; }; "target": { "alias": "target"; "required": false; }; "referrerpolicy": { "alias": "referrerpolicy"; "required": false; }; "rel": { "alias": "rel"; "required": false; }; "size": { "alias": "size"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "tabIndex": { "alias": "tabIndex"; "required": false; }; }, { "keydownEvent": "keydown"; }, never, ["*"], true, never>;
56
+ static ɵcmp: i0.ɵɵComponentDeclaration<LuzmoAvatar, "luzmo-avatar", ["luzmoAvatar"], { "border": { "alias": "border"; "required": false; }; "rounding": { "alias": "rounding"; "required": false; }; "src": { "alias": "src"; "required": false; }; "letter": { "alias": "letter"; "required": false; }; "colorFromLetter": { "alias": "colorFromLetter"; "required": false; }; "isDecorative": { "alias": "isDecorative"; "required": false; }; "download": { "alias": "download"; "required": false; }; "label": { "alias": "label"; "required": false; }; "href": { "alias": "href"; "required": false; }; "target": { "alias": "target"; "required": false; }; "referrerpolicy": { "alias": "referrerpolicy"; "required": false; }; "rel": { "alias": "rel"; "required": false; }; "size": { "alias": "size"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "tabIndex": { "alias": "tabIndex"; "required": false; }; }, { "keydownEvent": "keydown"; }, never, ["*"], true, never>;
53
57
  }
54
58
  /** The underlying custom element type for LuzmoAvatar */
55
59
  export type LuzmoAvatarElement = LuzmoAvatarHostElement;
@@ -21,6 +21,10 @@ export class LuzmoAvatar {
21
21
  rounding;
22
22
  /** The src of the avatar image. */
23
23
  src;
24
+ /** The letter to show when no image is available. Pass a single character; the host decides what to display (for example the first letter of a name). */
25
+ letter;
26
+ /** When true, the letter fallback derives its background color from the letter instead of using the neutral default. */
27
+ colorFromLetter;
24
28
  /** When true, marks the avatar image as decorative (sets alt=""). Use when the avatar does not convey meaningful information. */
25
29
  isDecorative;
26
30
  /** Causes the browser to treat the linked URL as a download. */
@@ -62,6 +66,12 @@ export class LuzmoAvatar {
62
66
  case 'src':
63
67
  this.setHostProperty('src', changes['src'].currentValue);
64
68
  break;
69
+ case 'letter':
70
+ this.setHostProperty('letter', changes['letter'].currentValue);
71
+ break;
72
+ case 'colorFromLetter':
73
+ this.setHostProperty('colorFromLetter', changes['colorFromLetter'].currentValue);
74
+ break;
65
75
  case 'isDecorative':
66
76
  this.setHostProperty('isDecorative', changes['isDecorative'].currentValue);
67
77
  break;
@@ -115,10 +125,10 @@ export class LuzmoAvatar {
115
125
  return this.host.focus(options);
116
126
  }
117
127
  static ɵfac = function LuzmoAvatar_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || LuzmoAvatar)(); };
118
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: LuzmoAvatar, selectors: [["luzmo-avatar"]], inputs: { border: "border", rounding: "rounding", src: "src", isDecorative: "isDecorative", download: "download", label: "label", href: "href", target: "target", referrerpolicy: "referrerpolicy", rel: "rel", size: "size", disabled: "disabled", tabIndex: "tabIndex" }, outputs: { keydownEvent: "keydown" }, exportAs: ["luzmoAvatar"], features: [i0.ɵɵNgOnChangesFeature], ngContentSelectors: _c0, decls: 1, vars: 0, template: function LuzmoAvatar_Template(rf, ctx) { if (rf & 1) {
128
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: LuzmoAvatar, selectors: [["luzmo-avatar"]], inputs: { border: "border", rounding: "rounding", src: "src", letter: "letter", colorFromLetter: "colorFromLetter", isDecorative: "isDecorative", download: "download", label: "label", href: "href", target: "target", referrerpolicy: "referrerpolicy", rel: "rel", size: "size", disabled: "disabled", tabIndex: "tabIndex" }, outputs: { keydownEvent: "keydown" }, exportAs: ["luzmoAvatar"], features: [i0.ɵɵNgOnChangesFeature], ngContentSelectors: _c0, decls: 1, vars: 0, template: function LuzmoAvatar_Template(rf, ctx) { if (rf & 1) {
119
129
  i0.ɵɵprojectionDef();
120
130
  i0.ɵɵprojection(0);
121
- } }, encapsulation: 2, changeDetection: 0 });
131
+ } }, encapsulation: 2 });
122
132
  }
123
133
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(LuzmoAvatar, [{
124
134
  type: Component,
@@ -138,6 +148,12 @@ export class LuzmoAvatar {
138
148
  }], src: [{
139
149
  type: Input,
140
150
  args: [{ alias: 'src' }]
151
+ }], letter: [{
152
+ type: Input,
153
+ args: [{ alias: 'letter' }]
154
+ }], colorFromLetter: [{
155
+ type: Input,
156
+ args: [{ alias: 'colorFromLetter' }]
141
157
  }], isDecorative: [{
142
158
  type: Input,
143
159
  args: [{ alias: 'isDecorative' }]
@@ -66,7 +66,7 @@ export class LuzmoBadge {
66
66
  static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: LuzmoBadge, selectors: [["luzmo-badge"]], inputs: { variant: "variant", treatment: "treatment", fixed: "fixed", size: "size" }, exportAs: ["luzmoBadge"], features: [i0.ɵɵNgOnChangesFeature], ngContentSelectors: _c0, decls: 1, vars: 0, template: function LuzmoBadge_Template(rf, ctx) { if (rf & 1) {
67
67
  i0.ɵɵprojectionDef();
68
68
  i0.ɵɵprojection(0);
69
- } }, encapsulation: 2, changeDetection: 0 });
69
+ } }, encapsulation: 2 });
70
70
  }
71
71
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(LuzmoBadge, [{
72
72
  type: Component,
@@ -57,7 +57,7 @@ export class LuzmoButtonGroup {
57
57
  static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: LuzmoButtonGroup, selectors: [["luzmo-button-group"]], inputs: { vertical: "vertical", size: "size" }, exportAs: ["luzmoButtonGroup"], features: [i0.ɵɵNgOnChangesFeature], ngContentSelectors: _c0, decls: 1, vars: 0, template: function LuzmoButtonGroup_Template(rf, ctx) { if (rf & 1) {
58
58
  i0.ɵɵprojectionDef();
59
59
  i0.ɵɵprojection(0);
60
- } }, encapsulation: 2, changeDetection: 0 });
60
+ } }, encapsulation: 2 });
61
61
  }
62
62
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(LuzmoButtonGroup, [{
63
63
  type: Component,
@@ -38,8 +38,6 @@ export declare class LuzmoButton implements OnChanges {
38
38
  disabled?: boolean;
39
39
  /** The tab index to apply to this control. See general documentation about the tabindex HTML property */
40
40
  tabIndex?: number;
41
- /** Announces that the `value` of the element has changed */
42
- readonly changeEvent: import("@angular/core").OutputEmitterRef<CustomEvent<unknown>>;
43
41
  /** Trick :focus-visible polyfill into thinking keyboard based focus */
44
42
  readonly keydownEvent: import("@angular/core").OutputEmitterRef<unknown>;
45
43
  constructor();
@@ -54,7 +52,7 @@ export declare class LuzmoButton implements OnChanges {
54
52
  private bindEvents;
55
53
  focus(options?: FocusOptions): void;
56
54
  static ɵfac: i0.ɵɵFactoryDeclaration<LuzmoButton, never>;
57
- static ɵcmp: i0.ɵɵComponentDeclaration<LuzmoButton, "luzmo-button", ["luzmoButton"], { "pendingLabel": { "alias": "pendingLabel"; "required": false; }; "pending": { "alias": "pending"; "required": false; }; "variant": { "alias": "variant"; "required": false; }; "staticColor": { "alias": "staticColor"; "required": false; }; "treatment": { "alias": "treatment"; "required": false; }; "quiet": { "alias": "quiet"; "required": false; }; "noWrap": { "alias": "noWrap"; "required": false; }; "pendingStateController": { "alias": "pendingStateController"; "required": false; }; "size": { "alias": "size"; "required": false; }; "download": { "alias": "download"; "required": false; }; "label": { "alias": "label"; "required": false; }; "href": { "alias": "href"; "required": false; }; "target": { "alias": "target"; "required": false; }; "referrerpolicy": { "alias": "referrerpolicy"; "required": false; }; "rel": { "alias": "rel"; "required": false; }; "active": { "alias": "active"; "required": false; }; "type": { "alias": "type"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "tabIndex": { "alias": "tabIndex"; "required": false; }; }, { "changeEvent": "change"; "keydownEvent": "keydown"; }, never, ["*"], true, never>;
55
+ static ɵcmp: i0.ɵɵComponentDeclaration<LuzmoButton, "luzmo-button", ["luzmoButton"], { "pendingLabel": { "alias": "pendingLabel"; "required": false; }; "pending": { "alias": "pending"; "required": false; }; "variant": { "alias": "variant"; "required": false; }; "staticColor": { "alias": "staticColor"; "required": false; }; "treatment": { "alias": "treatment"; "required": false; }; "quiet": { "alias": "quiet"; "required": false; }; "noWrap": { "alias": "noWrap"; "required": false; }; "pendingStateController": { "alias": "pendingStateController"; "required": false; }; "size": { "alias": "size"; "required": false; }; "download": { "alias": "download"; "required": false; }; "label": { "alias": "label"; "required": false; }; "href": { "alias": "href"; "required": false; }; "target": { "alias": "target"; "required": false; }; "referrerpolicy": { "alias": "referrerpolicy"; "required": false; }; "rel": { "alias": "rel"; "required": false; }; "active": { "alias": "active"; "required": false; }; "type": { "alias": "type"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "tabIndex": { "alias": "tabIndex"; "required": false; }; }, { "keydownEvent": "keydown"; }, never, ["*"], true, never>;
58
56
  }
59
57
  /** The underlying custom element type for LuzmoButton */
60
58
  export type LuzmoButtonElement = LuzmoButtonHostElement;
@@ -46,8 +46,6 @@ export class LuzmoButton {
46
46
  disabled;
47
47
  /** The tab index to apply to this control. See general documentation about the tabindex HTML property */
48
48
  tabIndex;
49
- /** Announces that the `value` of the element has changed */
50
- changeEvent = output({ alias: 'change' });
51
49
  /** Trick :focus-visible polyfill into thinking keyboard based focus */
52
50
  keydownEvent = output({ alias: 'keydown' });
53
51
  constructor() {
@@ -133,9 +131,6 @@ export class LuzmoButton {
133
131
  this.renderer.setProperty(this.host, key, value);
134
132
  }
135
133
  bindEvents() {
136
- this.listenerCleanup.push(this.renderer.listen(this.host, 'change', (event) => {
137
- this.changeEvent.emit(event);
138
- }));
139
134
  this.listenerCleanup.push(this.renderer.listen(this.host, 'keydown', (event) => {
140
135
  this.keydownEvent.emit(event);
141
136
  }));
@@ -144,10 +139,10 @@ export class LuzmoButton {
144
139
  return this.host.focus(options);
145
140
  }
146
141
  static ɵfac = function LuzmoButton_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || LuzmoButton)(); };
147
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: LuzmoButton, selectors: [["luzmo-button"]], inputs: { pendingLabel: "pendingLabel", pending: "pending", variant: "variant", staticColor: "staticColor", treatment: "treatment", quiet: "quiet", noWrap: "noWrap", pendingStateController: "pendingStateController", size: "size", download: "download", label: "label", href: "href", target: "target", referrerpolicy: "referrerpolicy", rel: "rel", active: "active", type: "type", disabled: "disabled", tabIndex: "tabIndex" }, outputs: { changeEvent: "change", keydownEvent: "keydown" }, exportAs: ["luzmoButton"], features: [i0.ɵɵNgOnChangesFeature], ngContentSelectors: _c0, decls: 1, vars: 0, template: function LuzmoButton_Template(rf, ctx) { if (rf & 1) {
142
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: LuzmoButton, selectors: [["luzmo-button"]], inputs: { pendingLabel: "pendingLabel", pending: "pending", variant: "variant", staticColor: "staticColor", treatment: "treatment", quiet: "quiet", noWrap: "noWrap", pendingStateController: "pendingStateController", size: "size", download: "download", label: "label", href: "href", target: "target", referrerpolicy: "referrerpolicy", rel: "rel", active: "active", type: "type", disabled: "disabled", tabIndex: "tabIndex" }, outputs: { keydownEvent: "keydown" }, exportAs: ["luzmoButton"], features: [i0.ɵɵNgOnChangesFeature], ngContentSelectors: _c0, decls: 1, vars: 0, template: function LuzmoButton_Template(rf, ctx) { if (rf & 1) {
148
143
  i0.ɵɵprojectionDef();
149
144
  i0.ɵɵprojection(0);
150
- } }, encapsulation: 2, changeDetection: 0 });
145
+ } }, encapsulation: 2 });
151
146
  }
152
147
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(LuzmoButton, [{
153
148
  type: Component,
@@ -215,5 +210,5 @@ export class LuzmoButton {
215
210
  }], tabIndex: [{
216
211
  type: Input,
217
212
  args: [{ alias: 'tabIndex' }]
218
- }], changeEvent: [{ type: i0.Output, args: ["change"] }], keydownEvent: [{ type: i0.Output, args: ["keydown"] }] }); })();
213
+ }], keydownEvent: [{ type: i0.Output, args: ["keydown"] }] }); })();
219
214
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(LuzmoButton, { className: "LuzmoButton", filePath: "components/button.ts", lineNumber: 18 }); })();
@@ -173,7 +173,7 @@ export class LuzmoCalendar {
173
173
  ]), i0.ɵɵNgOnChangesFeature], ngContentSelectors: _c0, decls: 1, vars: 0, template: function LuzmoCalendar_Template(rf, ctx) { if (rf & 1) {
174
174
  i0.ɵɵprojectionDef();
175
175
  i0.ɵɵprojection(0);
176
- } }, encapsulation: 2, changeDetection: 0 });
176
+ } }, encapsulation: 2 });
177
177
  }
178
178
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(LuzmoCalendar, [{
179
179
  type: Component,
@@ -62,7 +62,7 @@ export class LuzmoChatMessageGroup {
62
62
  static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: LuzmoChatMessageGroup, selectors: [["luzmo-chat-message-group"]], inputs: { avatarPlacement: "avatarPlacement", size: "size" }, exportAs: ["luzmoChatMessageGroup"], features: [i0.ɵɵNgOnChangesFeature], ngContentSelectors: _c0, decls: 1, vars: 0, template: function LuzmoChatMessageGroup_Template(rf, ctx) { if (rf & 1) {
63
63
  i0.ɵɵprojectionDef();
64
64
  i0.ɵɵprojection(0);
65
- } }, encapsulation: 2, changeDetection: 0 });
65
+ } }, encapsulation: 2 });
66
66
  }
67
67
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(LuzmoChatMessageGroup, [{
68
68
  type: Component,
@@ -112,7 +112,7 @@ export class LuzmoChatMessage {
112
112
  static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: LuzmoChatMessage, selectors: [["luzmo-chat-message"]], inputs: { position: "position", variant: "variant", treatment: "treatment", quiet: "quiet", name: "name", datetime: "datetime", datetimeFormatOptions: "datetimeFormatOptions", datetimeLanguage: "datetimeLanguage", meta: "meta", actionsPosition: [0, "actions", "actionsPosition"], avatarPlacement: "avatarPlacement", size: "size" }, exportAs: ["luzmoChatMessage"], features: [i0.ɵɵNgOnChangesFeature], ngContentSelectors: _c0, decls: 1, vars: 0, template: function LuzmoChatMessage_Template(rf, ctx) { if (rf & 1) {
113
113
  i0.ɵɵprojectionDef();
114
114
  i0.ɵɵprojection(0);
115
- } }, encapsulation: 2, changeDetection: 0 });
115
+ } }, encapsulation: 2 });
116
116
  }
117
117
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(LuzmoChatMessage, [{
118
118
  type: Component,
@@ -7,6 +7,7 @@ const _c0 = ["*"];
7
7
  * Angular wrapper component for <luzmo-checkbox>
8
8
  *
9
9
  * @slot (default) - content to display as the label for the Checkbox
10
+ * @csspart control - Native checkbox indicator. Hidden when used inside `luzmo-question-box`.
10
11
  */
11
12
  export class LuzmoCheckbox {
12
13
  elementRef = inject(ElementRef);
@@ -154,7 +155,7 @@ export class LuzmoCheckbox {
154
155
  ]), i0.ɵɵNgOnChangesFeature], ngContentSelectors: _c0, decls: 1, vars: 0, template: function LuzmoCheckbox_Template(rf, ctx) { if (rf & 1) {
155
156
  i0.ɵɵprojectionDef();
156
157
  i0.ɵɵprojection(0);
157
- } }, encapsulation: 2, changeDetection: 0 });
158
+ } }, encapsulation: 2 });
158
159
  }
159
160
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(LuzmoCheckbox, [{
160
161
  type: Component,
@@ -203,4 +204,4 @@ export class LuzmoCheckbox {
203
204
  type: Input,
204
205
  args: [{ alias: 'readonly' }]
205
206
  }], changeEvent: [{ type: i0.Output, args: ["change"] }] }); })();
206
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(LuzmoCheckbox, { className: "LuzmoCheckbox", filePath: "components/checkbox.ts", lineNumber: 25 }); })();
207
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(LuzmoCheckbox, { className: "LuzmoCheckbox", filePath: "components/checkbox.ts", lineNumber: 26 }); })();
@@ -115,7 +115,7 @@ export class LuzmoClearButton {
115
115
  static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: LuzmoClearButton, selectors: [["luzmo-clear-button"]], inputs: { variant: "variant", size: "size", download: "download", label: "label", href: "href", target: "target", referrerpolicy: "referrerpolicy", rel: "rel", active: "active", type: "type", disabled: "disabled", tabIndex: "tabIndex" }, outputs: { keydownEvent: "keydown" }, exportAs: ["luzmoClearButton"], features: [i0.ɵɵNgOnChangesFeature], ngContentSelectors: _c0, decls: 1, vars: 0, template: function LuzmoClearButton_Template(rf, ctx) { if (rf & 1) {
116
116
  i0.ɵɵprojectionDef();
117
117
  i0.ɵɵprojection(0);
118
- } }, encapsulation: 2, changeDetection: 0 });
118
+ } }, encapsulation: 2 });
119
119
  }
120
120
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(LuzmoClearButton, [{
121
121
  type: Component,
@@ -119,7 +119,7 @@ export class LuzmoCloseButton {
119
119
  static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: LuzmoCloseButton, selectors: [["luzmo-close-button"]], inputs: { variant: "variant", staticColor: "staticColor", size: "size", download: "download", label: "label", href: "href", target: "target", referrerpolicy: "referrerpolicy", rel: "rel", active: "active", type: "type", disabled: "disabled", tabIndex: "tabIndex" }, outputs: { keydownEvent: "keydown" }, exportAs: ["luzmoCloseButton"], features: [i0.ɵɵNgOnChangesFeature], ngContentSelectors: _c0, decls: 1, vars: 0, template: function LuzmoCloseButton_Template(rf, ctx) { if (rf & 1) {
120
120
  i0.ɵɵprojectionDef();
121
121
  i0.ɵɵprojection(0);
122
- } }, encapsulation: 2, changeDetection: 0 });
122
+ } }, encapsulation: 2 });
123
123
  }
124
124
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(LuzmoCloseButton, [{
125
125
  type: Component,
@@ -105,7 +105,7 @@ export class LuzmoColorArea {
105
105
  static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: LuzmoColorArea, selectors: [["luzmo-color-area"]], inputs: { disabled: "disabled", focused: "focused", labelX: "labelX", labelY: "labelY", hue: "hue", color: "color", x: "x", y: "y", step: "step", inputX: "inputX", inputY: "inputY" }, outputs: { inputEvent: "input", changeEvent: "change" }, exportAs: ["luzmoColorArea"], features: [i0.ɵɵNgOnChangesFeature], ngContentSelectors: _c0, decls: 1, vars: 0, template: function LuzmoColorArea_Template(rf, ctx) { if (rf & 1) {
106
106
  i0.ɵɵprojectionDef();
107
107
  i0.ɵɵprojection(0);
108
- } }, encapsulation: 2, changeDetection: 0 });
108
+ } }, encapsulation: 2 });
109
109
  }
110
110
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(LuzmoColorArea, [{
111
111
  type: Component,
@@ -260,7 +260,7 @@ export class LuzmoColorField {
260
260
  ]), i0.ɵɵNgOnChangesFeature], ngContentSelectors: _c0, decls: 1, vars: 0, template: function LuzmoColorField_Template(rf, ctx) { if (rf & 1) {
261
261
  i0.ɵɵprojectionDef();
262
262
  i0.ɵɵprojection(0);
263
- } }, encapsulation: 2, changeDetection: 0 });
263
+ } }, encapsulation: 2 });
264
264
  }
265
265
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(LuzmoColorField, [{
266
266
  type: Component,
@@ -63,7 +63,7 @@ export class LuzmoColorHandle {
63
63
  static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: LuzmoColorHandle, selectors: [["luzmo-color-handle"]], inputs: { disabled: "disabled", focused: "focused", open: "open", color: "color" }, exportAs: ["luzmoColorHandle"], features: [i0.ɵɵNgOnChangesFeature], ngContentSelectors: _c0, decls: 1, vars: 0, template: function LuzmoColorHandle_Template(rf, ctx) { if (rf & 1) {
64
64
  i0.ɵɵprojectionDef();
65
65
  i0.ɵɵprojection(0);
66
- } }, encapsulation: 2, changeDetection: 0 });
66
+ } }, encapsulation: 2 });
67
67
  }
68
68
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(LuzmoColorHandle, [{
69
69
  type: Component,
@@ -55,7 +55,7 @@ export class LuzmoColorLoupe {
55
55
  static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: LuzmoColorLoupe, selectors: [["luzmo-color-loupe"]], inputs: { open: "open", color: "color" }, exportAs: ["luzmoColorLoupe"], features: [i0.ɵɵNgOnChangesFeature], ngContentSelectors: _c0, decls: 1, vars: 0, template: function LuzmoColorLoupe_Template(rf, ctx) { if (rf & 1) {
56
56
  i0.ɵɵprojectionDef();
57
57
  i0.ɵɵprojection(0);
58
- } }, encapsulation: 2, changeDetection: 0 });
58
+ } }, encapsulation: 2 });
59
59
  }
60
60
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(LuzmoColorLoupe, [{
61
61
  type: Component,
@@ -92,7 +92,7 @@ export class LuzmoColorMenu {
92
92
  static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: LuzmoColorMenu, selectors: [["luzmo-color-menu"]], inputs: { color: "color", noAlphaChannel: "noAlphaChannel", swatches: "swatches", areaElement: "areaElement", size: "size", disabled: "disabled", tabIndex: "tabIndex" }, outputs: { changeEvent: "change", keydownEvent: "keydown" }, exportAs: ["luzmoColorMenu"], features: [i0.ɵɵNgOnChangesFeature], ngContentSelectors: _c0, decls: 1, vars: 0, template: function LuzmoColorMenu_Template(rf, ctx) { if (rf & 1) {
93
93
  i0.ɵɵprojectionDef();
94
94
  i0.ɵɵprojection(0);
95
- } }, encapsulation: 2, changeDetection: 0 });
95
+ } }, encapsulation: 2 });
96
96
  }
97
97
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(LuzmoColorMenu, [{
98
98
  type: Component,
@@ -88,7 +88,7 @@ export class LuzmoColorPaletteGroup {
88
88
  static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: LuzmoColorPaletteGroup, selectors: [["luzmo-color-palette-group"]], inputs: { disabled: "disabled", horizontal: "horizontal", rovingTabindexController: "rovingTabindexController", label: "label", selected: "selected", slotElement: "slotElement", size: "size" }, outputs: { changeEvent: "change" }, exportAs: ["luzmoColorPaletteGroup"], features: [i0.ɵɵNgOnChangesFeature], ngContentSelectors: _c0, decls: 1, vars: 0, template: function LuzmoColorPaletteGroup_Template(rf, ctx) { if (rf & 1) {
89
89
  i0.ɵɵprojectionDef();
90
90
  i0.ɵɵprojection(0);
91
- } }, encapsulation: 2, changeDetection: 0 });
91
+ } }, encapsulation: 2 });
92
92
  }
93
93
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(LuzmoColorPaletteGroup, [{
94
94
  type: Component,
@@ -103,7 +103,7 @@ export class LuzmoColorPalette {
103
103
  static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: LuzmoColorPalette, selectors: [["luzmo-color-palette"]], inputs: { disabled: "disabled", focused: "focused", selected: "selected", active: "active", value: "value", colors: "colors", reverse: "reverse", horizontal: "horizontal", size: "size", tabIndex: "tabIndex" }, outputs: { keydownEvent: "keydown" }, exportAs: ["luzmoColorPalette"], features: [i0.ɵɵNgOnChangesFeature], ngContentSelectors: _c0, decls: 1, vars: 0, template: function LuzmoColorPalette_Template(rf, ctx) { if (rf & 1) {
104
104
  i0.ɵɵprojectionDef();
105
105
  i0.ɵɵprojection(0);
106
- } }, encapsulation: 2, changeDetection: 0 });
106
+ } }, encapsulation: 2 });
107
107
  }
108
108
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(LuzmoColorPalette, [{
109
109
  type: Component,
@@ -105,7 +105,7 @@ export class LuzmoColorPicker {
105
105
  static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: LuzmoColorPicker, selectors: [["luzmo-color-picker"]], inputs: { color: "color", open: "open", disabled: "disabled", readOnly: "readOnly", placement: "placement", rounding: "rounding", shape: "shape", swatches: "swatches", noAlphaChannel: "noAlphaChannel", size: "size" }, outputs: { changeEvent: "change", inputEvent: "input" }, exportAs: ["luzmoColorPicker"], features: [i0.ɵɵNgOnChangesFeature], ngContentSelectors: _c0, decls: 1, vars: 0, template: function LuzmoColorPicker_Template(rf, ctx) { if (rf & 1) {
106
106
  i0.ɵɵprojectionDef();
107
107
  i0.ɵɵprojection(0);
108
- } }, encapsulation: 2, changeDetection: 0 });
108
+ } }, encapsulation: 2 });
109
109
  }
110
110
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(LuzmoColorPicker, [{
111
111
  type: Component,