@nanahoshi/mona-ui 0.7.0 → 0.8.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 (38) hide show
  1. package/fesm2022/nanahoshi-mona-ui-button.mjs +10 -3
  2. package/fesm2022/nanahoshi-mona-ui-calendar.mjs +1 -1
  3. package/fesm2022/nanahoshi-mona-ui-chip.mjs +1 -1
  4. package/fesm2022/nanahoshi-mona-ui-color-gradient.mjs +1 -1
  5. package/fesm2022/nanahoshi-mona-ui-color-picker.mjs +1 -1
  6. package/fesm2022/nanahoshi-mona-ui-date-picker.mjs +1 -1
  7. package/fesm2022/nanahoshi-mona-ui-datetime-picker.mjs +1 -1
  8. package/fesm2022/nanahoshi-mona-ui-dialog.mjs +1 -1
  9. package/fesm2022/nanahoshi-mona-ui-dropdown-button.mjs +1 -1
  10. package/fesm2022/nanahoshi-mona-ui-editor.mjs +13 -13
  11. package/fesm2022/nanahoshi-mona-ui-filter.mjs +1 -1
  12. package/fesm2022/{nanahoshi-mona-ui-grid-grid-footer-cell.component-C6M8hmzY.mjs → nanahoshi-mona-ui-grid-grid-footer-cell.component-BbBPZj7t.mjs} +2 -2
  13. package/fesm2022/{nanahoshi-mona-ui-grid-grid-footer-table-cell.directive-BwwDwf6_.mjs → nanahoshi-mona-ui-grid-grid-footer-table-cell.directive-BkISJoqL.mjs} +2 -2
  14. package/fesm2022/{nanahoshi-mona-ui-grid-grid-list.component-DTqG52dg.mjs → nanahoshi-mona-ui-grid-grid-list.component-DReEfWfG.mjs} +5 -5
  15. package/fesm2022/{nanahoshi-mona-ui-grid-grid-toggle.component-CaTuM3-x.mjs → nanahoshi-mona-ui-grid-grid-toggle.component-QDo6TweF.mjs} +3 -3
  16. package/fesm2022/{nanahoshi-mona-ui-grid-grid-virtual-list.component-BcTk4OPK.mjs → nanahoshi-mona-ui-grid-grid-virtual-list.component-BCIs_lmz.mjs} +5 -5
  17. package/fesm2022/{nanahoshi-mona-ui-grid-nanahoshi-mona-ui-grid-CvCis4-I.mjs → nanahoshi-mona-ui-grid-nanahoshi-mona-ui-grid-DWzYyGnb.mjs} +13 -13
  18. package/fesm2022/nanahoshi-mona-ui-grid.mjs +1 -1
  19. package/fesm2022/nanahoshi-mona-ui-list-box.mjs +1 -1
  20. package/fesm2022/nanahoshi-mona-ui-notification.mjs +1 -1
  21. package/fesm2022/nanahoshi-mona-ui-numeric-text-box.mjs +1 -1
  22. package/fesm2022/nanahoshi-mona-ui-pager.mjs +1 -1
  23. package/fesm2022/nanahoshi-mona-ui-segmented.mjs +159 -0
  24. package/fesm2022/nanahoshi-mona-ui-sheet.mjs +1 -1
  25. package/fesm2022/nanahoshi-mona-ui-split-button.mjs +1 -1
  26. package/fesm2022/nanahoshi-mona-ui-splitter.mjs +1 -1
  27. package/fesm2022/nanahoshi-mona-ui-tabs.mjs +159 -97
  28. package/fesm2022/nanahoshi-mona-ui-text-box.mjs +1 -1
  29. package/fesm2022/nanahoshi-mona-ui-theme.mjs +4 -12
  30. package/fesm2022/nanahoshi-mona-ui-time-picker.mjs +1 -1
  31. package/fesm2022/nanahoshi-mona-ui-time-selector.mjs +1 -1
  32. package/fesm2022/nanahoshi-mona-ui-window.mjs +1 -1
  33. package/package.json +5 -1
  34. package/segmented/package.json +4 -0
  35. package/types/nanahoshi-mona-ui-button.d.ts +7 -1
  36. package/types/nanahoshi-mona-ui-segmented.d.ts +90 -0
  37. package/types/nanahoshi-mona-ui-tabs.d.ts +16 -11
  38. package/types/nanahoshi-mona-ui-theme.d.ts +1 -1
@@ -0,0 +1,159 @@
1
+ import * as i0 from '@angular/core';
2
+ import { computed, input, output, model, Component } from '@angular/core';
3
+ import { themeControlSurfaceClasses, createElementControlId } from '@nanahoshi/mona-ui/internal';
4
+ import { twMerge } from 'tailwind-merge';
5
+ import { cva } from 'class-variance-authority';
6
+
7
+ const segmentedContainerThemeVariants = cva(`
8
+ inline-flex items-center gap-0.5
9
+ ${themeControlSurfaceClasses}
10
+ border border-input-border
11
+ rounded-lg
12
+ p-1
13
+ data-[invalid='true']:border-error
14
+ data-[invalid='true']:ring-2 data-[invalid='true']:ring-error/35
15
+ transition-colors duration-(--mona-motion-fast)
16
+ `);
17
+ const segmentedOptionThemeVariants = cva(`
18
+ relative flex flex-1 cursor-pointer items-center justify-center gap-1
19
+ whitespace-nowrap
20
+ rounded-md
21
+ transition-colors duration-(--mona-motion-fast)
22
+ data-[disabled='true']:pointer-events-none
23
+ data-[disabled='true']:cursor-not-allowed
24
+ data-[disabled='true']:text-disabled-foreground
25
+ data-[selected='true']:bg-primary data-[selected='true']:text-primary-foreground
26
+ data-[selected='true']:shadow-sm data-[selected='true']:ring-1 data-[selected='true']:ring-selected-border
27
+ data-[selected='false']:text-muted-foreground
28
+ data-[selected='false']:hover:bg-hover data-[selected='false']:hover:text-foreground
29
+ `, {
30
+ variants: {
31
+ size: {
32
+ small: "h-6 px-1.5 text-sm",
33
+ medium: "h-8 px-2.5 text-sm",
34
+ large: "h-10 px-3.5 text-base"
35
+ }
36
+ },
37
+ defaultVariants: {
38
+ size: "medium"
39
+ }
40
+ });
41
+ const segmentedInputThemeVariants = cva(`
42
+ peer absolute inset-0 z-10 h-full w-full
43
+ cursor-pointer appearance-none opacity-0
44
+ outline-none
45
+ disabled:cursor-not-allowed
46
+ `);
47
+
48
+ class SegmentedComponent {
49
+ constructor() {
50
+ this.containerClasses = computed(() => {
51
+ const classes = segmentedContainerThemeVariants();
52
+ return twMerge(classes, this.userClass());
53
+ }, /* @ts-ignore */
54
+ ...(ngDevMode ? [{ debugName: "containerClasses" }] : /* istanbul ignore next */ []));
55
+ this.groupName = createElementControlId();
56
+ this.inputClasses = computed(() => segmentedInputThemeVariants(), /* @ts-ignore */
57
+ ...(ngDevMode ? [{ debugName: "inputClasses" }] : /* istanbul ignore next */ []));
58
+ this.invalidState = computed(() => this.touched() && this.invalid(), /* @ts-ignore */
59
+ ...(ngDevMode ? [{ debugName: "invalidState" }] : /* istanbul ignore next */ []));
60
+ this.optionClasses = computed(() => {
61
+ const size = this.size();
62
+ return segmentedOptionThemeVariants({ size });
63
+ }, /* @ts-ignore */
64
+ ...(ngDevMode ? [{ debugName: "optionClasses" }] : /* istanbul ignore next */ []));
65
+ /**
66
+ * @description Accessible name for the radio group. Provide either `aria-label` or `aria-labelledby`.
67
+ * @default null
68
+ */
69
+ this.ariaLabel = input(null, { ...(ngDevMode ? { debugName: "ariaLabel" } : /* istanbul ignore next */ {}), alias: "aria-label" });
70
+ /**
71
+ * @description ID of an external element that provides the accessible name for the radio group.
72
+ * @default null
73
+ */
74
+ this.ariaLabelledBy = input(null, { ...(ngDevMode ? { debugName: "ariaLabelledBy" } : /* istanbul ignore next */ {}), alias: "aria-labelledby" });
75
+ /**
76
+ * @description Disables every option in the group and prevents value changes.
77
+ * @default false
78
+ */
79
+ this.disabled = input(false, /* @ts-ignore */
80
+ ...(ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []));
81
+ /**
82
+ * @description Marks the component as invalid. Error styling requires both `invalid` and `touched` to be `true`.
83
+ * When bound to a signal form field via `[formField]`, this is written by the signal forms `Field` directive.
84
+ * @default false
85
+ */
86
+ this.invalid = input(false, /* @ts-ignore */
87
+ ...(ngDevMode ? [{ debugName: "invalid" }] : /* istanbul ignore next */ []));
88
+ /**
89
+ * @description The list of selectable options. Exactly one option is selected at a time.
90
+ */
91
+ this.options = input.required(/* @ts-ignore */
92
+ ...(ngDevMode ? [{ debugName: "options" }] : /* istanbul ignore next */ []));
93
+ /**
94
+ * @description Size preset controlling the height, horizontal padding, text size, and spacing of each option.
95
+ * @default "medium"
96
+ */
97
+ this.size = input("medium", /* @ts-ignore */
98
+ ...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
99
+ /**
100
+ * @description Emitted when the selected value changes or focus leaves a radio input.
101
+ */
102
+ this.touch = output();
103
+ /**
104
+ * @description Marks the component as touched. When bound to a signal form field via `[formField]`,
105
+ * this is written by the signal forms `Field` directive.
106
+ * @default false
107
+ */
108
+ this.touched = input(false, /* @ts-ignore */
109
+ ...(ngDevMode ? [{ debugName: "touched" }] : /* istanbul ignore next */ []));
110
+ /**
111
+ * @description Additional CSS classes merged onto the host element via `tailwind-merge`.
112
+ * @default ""
113
+ */
114
+ this.userClass = input("", { ...(ngDevMode ? { debugName: "userClass" } : /* istanbul ignore next */ {}), alias: "class" });
115
+ /**
116
+ * @description The currently selected value. When it matches no current option, no option is checked.
117
+ * A `null` value is allowed initially but cannot be restored through segmented interaction.
118
+ * @default null
119
+ */
120
+ this.value = model(null, /* @ts-ignore */
121
+ ...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
122
+ }
123
+ onOptionBlur() {
124
+ this.touch.emit();
125
+ }
126
+ onOptionChange(option) {
127
+ if (this.disabled() || option.disabled) {
128
+ return;
129
+ }
130
+ this.value.set(option.value);
131
+ this.touch.emit();
132
+ }
133
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: SegmentedComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
134
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.6", type: SegmentedComponent, isStandalone: true, selector: "mona-segmented", inputs: { ariaLabel: { classPropertyName: "ariaLabel", publicName: "aria-label", isSignal: true, isRequired: false, transformFunction: null }, ariaLabelledBy: { classPropertyName: "ariaLabelledBy", publicName: "aria-labelledby", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, invalid: { classPropertyName: "invalid", publicName: "invalid", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: true, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, touched: { classPropertyName: "touched", publicName: "touched", isSignal: true, isRequired: false, transformFunction: null }, userClass: { classPropertyName: "userClass", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { touch: "touch", value: "valueChange" }, host: { properties: { "attr.aria-disabled": "disabled() || undefined", "attr.aria-invalid": "invalidState() ? 'true' : null", "attr.aria-label": "ariaLabel()", "attr.aria-labelledby": "ariaLabelledBy()", "attr.data-disabled": "disabled()", "attr.data-invalid": "invalidState() || null", "attr.role": "'radiogroup'", "class": "containerClasses()" } }, ngImport: i0, template: "@for (option of options(); track option.value) {\n @let selected = option.value === value();\n @let optionDisabled = disabled() || option.disabled;\n\n <label [class]=\"optionClasses()\" [attr.data-selected]=\"selected\" [attr.data-disabled]=\"optionDisabled\">\n <input\n type=\"radio\"\n [name]=\"groupName\"\n [value]=\"option.value\"\n [checked]=\"selected\"\n [disabled]=\"optionDisabled\"\n [class]=\"inputClasses()\"\n (change)=\"onOptionChange(option)\"\n (blur)=\"onOptionBlur()\" />\n\n <span\n class=\"pointer-events-none absolute inset-0 flex items-center justify-center gap-1 rounded-md peer-focus-visible:ring-2 peer-focus-visible:ring-focus-indicator/35\">\n {{ option.label }}\n </span>\n </label>\n}\n" }); }
135
+ }
136
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: SegmentedComponent, decorators: [{
137
+ type: Component,
138
+ args: [{ selector: "mona-segmented", host: {
139
+ "[attr.aria-disabled]": "disabled() || undefined",
140
+ "[attr.aria-invalid]": "invalidState() ? 'true' : null",
141
+ "[attr.aria-label]": "ariaLabel()",
142
+ "[attr.aria-labelledby]": "ariaLabelledBy()",
143
+ "[attr.data-disabled]": "disabled()",
144
+ "[attr.data-invalid]": "invalidState() || null",
145
+ "[attr.role]": "'radiogroup'",
146
+ "[class]": "containerClasses()"
147
+ }, template: "@for (option of options(); track option.value) {\n @let selected = option.value === value();\n @let optionDisabled = disabled() || option.disabled;\n\n <label [class]=\"optionClasses()\" [attr.data-selected]=\"selected\" [attr.data-disabled]=\"optionDisabled\">\n <input\n type=\"radio\"\n [name]=\"groupName\"\n [value]=\"option.value\"\n [checked]=\"selected\"\n [disabled]=\"optionDisabled\"\n [class]=\"inputClasses()\"\n (change)=\"onOptionChange(option)\"\n (blur)=\"onOptionBlur()\" />\n\n <span\n class=\"pointer-events-none absolute inset-0 flex items-center justify-center gap-1 rounded-md peer-focus-visible:ring-2 peer-focus-visible:ring-focus-indicator/35\">\n {{ option.label }}\n </span>\n </label>\n}\n" }]
148
+ }], propDecorators: { ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "aria-label", required: false }] }], ariaLabelledBy: [{ type: i0.Input, args: [{ isSignal: true, alias: "aria-labelledby", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], invalid: [{ type: i0.Input, args: [{ isSignal: true, alias: "invalid", required: false }] }], options: [{ type: i0.Input, args: [{ isSignal: true, alias: "options", required: true }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], touch: [{ type: i0.Output, args: ["touch"] }], touched: [{ type: i0.Input, args: [{ isSignal: true, alias: "touched", required: false }] }], userClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }, { type: i0.Output, args: ["valueChange"] }] } });
149
+
150
+ /*
151
+ * Public API Surface of @nanahoshi/mona-ui/segmented
152
+ */
153
+
154
+ /**
155
+ * Generated bundle index. Do not edit.
156
+ */
157
+
158
+ export { SegmentedComponent };
159
+ //# sourceMappingURL=nanahoshi-mona-ui-segmented.mjs.map
@@ -225,7 +225,7 @@ class SheetComponent {
225
225
  });
226
226
  }
227
227
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: SheetComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
228
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.6", type: SheetComponent, isStandalone: true, selector: "mona-sheet", inputs: { ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null }, closable: { classPropertyName: "closable", publicName: "closable", isSignal: true, isRequired: false, transformFunction: null }, closeOnBackdropClick: { classPropertyName: "closeOnBackdropClick", publicName: "closeOnBackdropClick", isSignal: true, isRequired: false, transformFunction: null }, closeOnEscape: { classPropertyName: "closeOnEscape", publicName: "closeOnEscape", isSignal: true, isRequired: false, transformFunction: null }, description: { classPropertyName: "description", publicName: "description", isSignal: true, isRequired: false, transformFunction: null }, height: { classPropertyName: "height", publicName: "height", isSignal: true, isRequired: false, transformFunction: null }, side: { classPropertyName: "side", publicName: "side", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, userClass: { classPropertyName: "userClass", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, width: { classPropertyName: "width", publicName: "width", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { close: "close", closed: "closed" }, host: { classAttribute: "hidden" }, viewQueries: [{ propertyName: "sheetTemplate", first: true, predicate: ["sheetTemplate"], descendants: true, isSignal: true }], ngImport: i0, template: "<ng-template #sheetTemplate>\n <section\n cdkTrapFocus\n [cdkTrapFocusAutoCapture]=\"true\"\n [class]=\"baseClass()\"\n role=\"dialog\"\n aria-modal=\"true\"\n tabindex=\"-1\"\n [attr.aria-labelledby]=\"title() ? titleId : null\"\n [attr.aria-describedby]=\"description() ? descriptionId : null\"\n [attr.aria-label]=\"!title() ? ariaLabel() : null\">\n @if (title() || description() || closable()) {\n <header [class]=\"headerClass()\">\n <div class=\"min-w-0 flex-1\">\n @if (title()) {\n <h2 [id]=\"titleId\" [class]=\"titleClass()\">{{ title() }}</h2>\n }\n @if (description()) {\n <p [id]=\"descriptionId\" [class]=\"descriptionClass()\">{{ description() }}</p>\n }\n </div>\n @if (closable()) {\n <button\n monaButton\n type=\"button\"\n look=\"ghost\"\n [iconOnly]=\"true\"\n aria-label=\"Close sheet\"\n size=\"small\"\n [class]=\"closeButtonClass()\"\n (click)=\"closeSheet()\">\n <svg lucideX [size]=\"16\"></svg>\n </button>\n }\n </header>\n }\n <div [class]=\"contentClass()\">\n <ng-content></ng-content>\n </div>\n </section>\n</ng-template>\n", dependencies: [{ kind: "directive", type: ButtonDirective, selector: "button[monaButton]", inputs: ["aria-haspopup", "disabled", "iconOnly", "loading", "look", "rounded", "selected", "size", "tabindex", "toggleable", "class"], outputs: ["disabledChange", "loadingChange", "lookChange", "selectedChange"] }, { kind: "directive", type: CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "component", type: LucideX, selector: "svg[lucideX]" }] }); }
228
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.6", type: SheetComponent, isStandalone: true, selector: "mona-sheet", inputs: { ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null }, closable: { classPropertyName: "closable", publicName: "closable", isSignal: true, isRequired: false, transformFunction: null }, closeOnBackdropClick: { classPropertyName: "closeOnBackdropClick", publicName: "closeOnBackdropClick", isSignal: true, isRequired: false, transformFunction: null }, closeOnEscape: { classPropertyName: "closeOnEscape", publicName: "closeOnEscape", isSignal: true, isRequired: false, transformFunction: null }, description: { classPropertyName: "description", publicName: "description", isSignal: true, isRequired: false, transformFunction: null }, height: { classPropertyName: "height", publicName: "height", isSignal: true, isRequired: false, transformFunction: null }, side: { classPropertyName: "side", publicName: "side", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, userClass: { classPropertyName: "userClass", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, width: { classPropertyName: "width", publicName: "width", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { close: "close", closed: "closed" }, host: { classAttribute: "hidden" }, viewQueries: [{ propertyName: "sheetTemplate", first: true, predicate: ["sheetTemplate"], descendants: true, isSignal: true }], ngImport: i0, template: "<ng-template #sheetTemplate>\n <section\n cdkTrapFocus\n [cdkTrapFocusAutoCapture]=\"true\"\n [class]=\"baseClass()\"\n role=\"dialog\"\n aria-modal=\"true\"\n tabindex=\"-1\"\n [attr.aria-labelledby]=\"title() ? titleId : null\"\n [attr.aria-describedby]=\"description() ? descriptionId : null\"\n [attr.aria-label]=\"!title() ? ariaLabel() : null\">\n @if (title() || description() || closable()) {\n <header [class]=\"headerClass()\">\n <div class=\"min-w-0 flex-1\">\n @if (title()) {\n <h2 [id]=\"titleId\" [class]=\"titleClass()\">{{ title() }}</h2>\n }\n @if (description()) {\n <p [id]=\"descriptionId\" [class]=\"descriptionClass()\">{{ description() }}</p>\n }\n </div>\n @if (closable()) {\n <button\n monaButton\n type=\"button\"\n look=\"ghost\"\n [iconOnly]=\"true\"\n aria-label=\"Close sheet\"\n size=\"small\"\n [class]=\"closeButtonClass()\"\n (click)=\"closeSheet()\">\n <svg lucideX [size]=\"16\"></svg>\n </button>\n }\n </header>\n }\n <div [class]=\"contentClass()\">\n <ng-content></ng-content>\n </div>\n </section>\n</ng-template>\n", dependencies: [{ kind: "directive", type: ButtonDirective, selector: "button[monaButton]", inputs: ["aria-haspopup", "disabled", "iconOnly", "loading", "look", "rounded", "selected", "size", "tabindex", "type", "toggleable", "class"], outputs: ["disabledChange", "loadingChange", "lookChange", "selectedChange"] }, { kind: "directive", type: CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "component", type: LucideX, selector: "svg[lucideX]" }] }); }
229
229
  }
230
230
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: SheetComponent, decorators: [{
231
231
  type: Component,
@@ -371,7 +371,7 @@ class SplitButtonComponent {
371
371
  });
372
372
  }
373
373
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: SplitButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
374
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.6", type: SplitButtonComponent, isStandalone: true, selector: "mona-split-button", inputs: { ariaLabel: { classPropertyName: "ariaLabel", publicName: "aria-label", isSignal: true, isRequired: false, transformFunction: null }, ariaLabelledby: { classPropertyName: "ariaLabelledby", publicName: "aria-labelledby", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, look: { classPropertyName: "look", publicName: "look", isSignal: true, isRequired: false, transformFunction: null }, menuButtonAriaLabel: { classPropertyName: "menuButtonAriaLabel", publicName: "menuButtonAriaLabel", isSignal: true, isRequired: false, transformFunction: null }, popupWidth: { classPropertyName: "popupWidth", publicName: "popupWidth", isSignal: true, isRequired: false, transformFunction: null }, rounded: { classPropertyName: "rounded", publicName: "rounded", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, text: { classPropertyName: "text", publicName: "text", isSignal: true, isRequired: false, transformFunction: null }, userClass: { classPropertyName: "userClass", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { buttonClick: "buttonClick", menuItemClick: "menuItemClick" }, host: { properties: { "class": "classes()" } }, queries: [{ propertyName: "menuItemComponents", predicate: PopupMenuToken, isSignal: true }, { propertyName: "groupTemplate", first: true, predicate: SplitButtonMenuGroupTemplateDirective, read: TemplateRef, isSignal: true }, { propertyName: "iconTemplate", first: true, predicate: SplitButtonMenuItemIconTemplateDirective, read: TemplateRef, isSignal: true }, { propertyName: "mainButtonTextTemplate", first: true, predicate: SplitButtonTextTemplateDirective, descendants: true, read: TemplateRef, isSignal: true }, { propertyName: "menuButtonTemplate", first: true, predicate: SplitButtonMenuButtonTemplateDirective, descendants: true, read: TemplateRef, isSignal: true }, { propertyName: "shortcutTemplate", first: true, predicate: SplitButtonMenuItemShortcutTemplateDirective, read: TemplateRef, isSignal: true }, { propertyName: "textTemplate", first: true, predicate: SplitButtonMenuItemTextTemplateDirective, read: TemplateRef, isSignal: true }], viewQueries: [{ propertyName: "menuButtonRef", first: true, predicate: ["menuButton"], descendants: true, isSignal: true }, { propertyName: "popupMenuRef", first: true, predicate: ["popupMenu"], descendants: true, isSignal: true }], ngImport: i0, template: "<button\n monaButton\n (click)=\"buttonClick.emit($event)\"\n [disabled]=\"disabled()\"\n [look]=\"look()\"\n [size]=\"size()\"\n [rounded]=\"rounded()\"\n class=\"rounded-tr-none rounded-br-none\"\n [attr.aria-label]=\"splitButtonAriaLabel() || null\"\n [attr.aria-labelledby]=\"ariaLabelledby() || null\"\n [tabindex]=\"disabled() ? -1 : 0\"\n #mainButton>\n @if (mainButtonTextTemplate()) {\n <ng-container [ngTemplateOutlet]=\"mainButtonTextTemplate()\"></ng-container>\n } @else {\n <span>{{ text() }}</span>\n }\n</button>\n<button\n monaButton\n [disabled]=\"disabled()\"\n [iconOnly]=\"true\"\n [look]=\"look()\"\n [size]=\"size()\"\n [rounded]=\"rounded()\"\n class=\"rounded-tl-none rounded-bl-none border-l-0\"\n [attr.aria-haspopup]=\"'menu'\"\n [attr.aria-expanded]=\"menuOpen()\"\n [attr.aria-controls]=\"menuId\"\n [attr.aria-label]=\"menuButtonAriaLabel()\"\n [tabindex]=\"disabled() ? -1 : 0\"\n #menuButton>\n @if (menuButtonTemplate()) {\n <ng-container [ngTemplateOutlet]=\"menuButtonTemplate()\"></ng-container>\n } @else {\n <svg lucideChevronDown [size]=\"16\"></svg>\n }\n</button>\n\n<mona-popup-menu\n [anchorConnectionPoint]=\"'bottomleft'\"\n [anchor]=\"mainButton\"\n [items]=\"menuItems()\"\n (menuClick)=\"onMenuItemClick($event)\"\n (open)=\"onMenuOpen()\"\n (close)=\"onMenuClose()\"\n [offset]=\"{ horizontal: 0, vertical: 2 }\"\n [popupConnectionPoint]=\"'topleft'\"\n [rounded]=\"popupMenuRounded()\"\n [size]=\"size()\"\n [target]=\"menuButton\"\n [trigger]=\"'click'\"\n [id]=\"menuId\"\n [minWidth]=\"popupWidth() || undefined\"\n #popupMenu>\n @if (groupTemplate()) {\n <ng-template monaPopupMenuGroupTemplate let-group>\n <ng-container\n [ngTemplateOutlet]=\"groupTemplate()\"\n [ngTemplateOutletContext]=\"{ $implicit: group }\"></ng-container>\n </ng-template>\n }\n @if (iconTemplate()) {\n <ng-template monaPopupMenuIconTemplate let-item>\n <ng-container\n [ngTemplateOutlet]=\"iconTemplate()\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-container>\n </ng-template>\n }\n @if (shortcutTemplate()) {\n <ng-template monaPopupMenuShortcutTemplate let-item>\n <ng-container\n [ngTemplateOutlet]=\"shortcutTemplate()\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-container>\n </ng-template>\n }\n @if (textTemplate()) {\n <ng-template monaPopupMenuTextTemplate let-item>\n <ng-container\n [ngTemplateOutlet]=\"textTemplate()\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-container>\n </ng-template>\n }\n</mona-popup-menu>\n", dependencies: [{ kind: "directive", type: ButtonDirective, selector: "button[monaButton]", inputs: ["aria-haspopup", "disabled", "iconOnly", "loading", "look", "rounded", "selected", "size", "tabindex", "toggleable", "class"], outputs: ["disabledChange", "loadingChange", "lookChange", "selectedChange"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: PopupMenuComponent, selector: "mona-popup-menu", inputs: ["anchor", "anchorConnectionPoint", "items", "id", "minWidth", "offset", "popupConnectionPoint", "precise", "rounded", "size", "target", "trigger", "width", "class"], outputs: ["close", "menuClick", "navigate", "open"] }, { kind: "directive", type: PopupMenuGroupTemplateDirective, selector: "ng-template[monaPopupMenuGroupTemplate]" }, { kind: "directive", type: PopupMenuIconTemplateDirective, selector: "ng-template[monaPopupMenuIconTemplate]" }, { kind: "directive", type: PopupMenuShortcutTemplateDirective, selector: "ng-template[monaPopupMenuShortcutTemplate]" }, { kind: "directive", type: PopupMenuTextTemplateDirective, selector: "ng-template[monaPopupMenuTextTemplate]" }, { kind: "component", type: LucideChevronDown, selector: "svg[lucideChevronDown]" }] }); }
374
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.6", type: SplitButtonComponent, isStandalone: true, selector: "mona-split-button", inputs: { ariaLabel: { classPropertyName: "ariaLabel", publicName: "aria-label", isSignal: true, isRequired: false, transformFunction: null }, ariaLabelledby: { classPropertyName: "ariaLabelledby", publicName: "aria-labelledby", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, look: { classPropertyName: "look", publicName: "look", isSignal: true, isRequired: false, transformFunction: null }, menuButtonAriaLabel: { classPropertyName: "menuButtonAriaLabel", publicName: "menuButtonAriaLabel", isSignal: true, isRequired: false, transformFunction: null }, popupWidth: { classPropertyName: "popupWidth", publicName: "popupWidth", isSignal: true, isRequired: false, transformFunction: null }, rounded: { classPropertyName: "rounded", publicName: "rounded", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, text: { classPropertyName: "text", publicName: "text", isSignal: true, isRequired: false, transformFunction: null }, userClass: { classPropertyName: "userClass", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { buttonClick: "buttonClick", menuItemClick: "menuItemClick" }, host: { properties: { "class": "classes()" } }, queries: [{ propertyName: "menuItemComponents", predicate: PopupMenuToken, isSignal: true }, { propertyName: "groupTemplate", first: true, predicate: SplitButtonMenuGroupTemplateDirective, read: TemplateRef, isSignal: true }, { propertyName: "iconTemplate", first: true, predicate: SplitButtonMenuItemIconTemplateDirective, read: TemplateRef, isSignal: true }, { propertyName: "mainButtonTextTemplate", first: true, predicate: SplitButtonTextTemplateDirective, descendants: true, read: TemplateRef, isSignal: true }, { propertyName: "menuButtonTemplate", first: true, predicate: SplitButtonMenuButtonTemplateDirective, descendants: true, read: TemplateRef, isSignal: true }, { propertyName: "shortcutTemplate", first: true, predicate: SplitButtonMenuItemShortcutTemplateDirective, read: TemplateRef, isSignal: true }, { propertyName: "textTemplate", first: true, predicate: SplitButtonMenuItemTextTemplateDirective, read: TemplateRef, isSignal: true }], viewQueries: [{ propertyName: "menuButtonRef", first: true, predicate: ["menuButton"], descendants: true, isSignal: true }, { propertyName: "popupMenuRef", first: true, predicate: ["popupMenu"], descendants: true, isSignal: true }], ngImport: i0, template: "<button\n monaButton\n (click)=\"buttonClick.emit($event)\"\n [disabled]=\"disabled()\"\n [look]=\"look()\"\n [size]=\"size()\"\n [rounded]=\"rounded()\"\n class=\"rounded-tr-none rounded-br-none\"\n [attr.aria-label]=\"splitButtonAriaLabel() || null\"\n [attr.aria-labelledby]=\"ariaLabelledby() || null\"\n [tabindex]=\"disabled() ? -1 : 0\"\n #mainButton>\n @if (mainButtonTextTemplate()) {\n <ng-container [ngTemplateOutlet]=\"mainButtonTextTemplate()\"></ng-container>\n } @else {\n <span>{{ text() }}</span>\n }\n</button>\n<button\n monaButton\n [disabled]=\"disabled()\"\n [iconOnly]=\"true\"\n [look]=\"look()\"\n [size]=\"size()\"\n [rounded]=\"rounded()\"\n class=\"rounded-tl-none rounded-bl-none border-l-0\"\n [attr.aria-haspopup]=\"'menu'\"\n [attr.aria-expanded]=\"menuOpen()\"\n [attr.aria-controls]=\"menuId\"\n [attr.aria-label]=\"menuButtonAriaLabel()\"\n [tabindex]=\"disabled() ? -1 : 0\"\n #menuButton>\n @if (menuButtonTemplate()) {\n <ng-container [ngTemplateOutlet]=\"menuButtonTemplate()\"></ng-container>\n } @else {\n <svg lucideChevronDown [size]=\"16\"></svg>\n }\n</button>\n\n<mona-popup-menu\n [anchorConnectionPoint]=\"'bottomleft'\"\n [anchor]=\"mainButton\"\n [items]=\"menuItems()\"\n (menuClick)=\"onMenuItemClick($event)\"\n (open)=\"onMenuOpen()\"\n (close)=\"onMenuClose()\"\n [offset]=\"{ horizontal: 0, vertical: 2 }\"\n [popupConnectionPoint]=\"'topleft'\"\n [rounded]=\"popupMenuRounded()\"\n [size]=\"size()\"\n [target]=\"menuButton\"\n [trigger]=\"'click'\"\n [id]=\"menuId\"\n [minWidth]=\"popupWidth() || undefined\"\n #popupMenu>\n @if (groupTemplate()) {\n <ng-template monaPopupMenuGroupTemplate let-group>\n <ng-container\n [ngTemplateOutlet]=\"groupTemplate()\"\n [ngTemplateOutletContext]=\"{ $implicit: group }\"></ng-container>\n </ng-template>\n }\n @if (iconTemplate()) {\n <ng-template monaPopupMenuIconTemplate let-item>\n <ng-container\n [ngTemplateOutlet]=\"iconTemplate()\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-container>\n </ng-template>\n }\n @if (shortcutTemplate()) {\n <ng-template monaPopupMenuShortcutTemplate let-item>\n <ng-container\n [ngTemplateOutlet]=\"shortcutTemplate()\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-container>\n </ng-template>\n }\n @if (textTemplate()) {\n <ng-template monaPopupMenuTextTemplate let-item>\n <ng-container\n [ngTemplateOutlet]=\"textTemplate()\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-container>\n </ng-template>\n }\n</mona-popup-menu>\n", dependencies: [{ kind: "directive", type: ButtonDirective, selector: "button[monaButton]", inputs: ["aria-haspopup", "disabled", "iconOnly", "loading", "look", "rounded", "selected", "size", "tabindex", "type", "toggleable", "class"], outputs: ["disabledChange", "loadingChange", "lookChange", "selectedChange"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: PopupMenuComponent, selector: "mona-popup-menu", inputs: ["anchor", "anchorConnectionPoint", "items", "id", "minWidth", "offset", "popupConnectionPoint", "precise", "rounded", "size", "target", "trigger", "width", "class"], outputs: ["close", "menuClick", "navigate", "open"] }, { kind: "directive", type: PopupMenuGroupTemplateDirective, selector: "ng-template[monaPopupMenuGroupTemplate]" }, { kind: "directive", type: PopupMenuIconTemplateDirective, selector: "ng-template[monaPopupMenuIconTemplate]" }, { kind: "directive", type: PopupMenuShortcutTemplateDirective, selector: "ng-template[monaPopupMenuShortcutTemplate]" }, { kind: "directive", type: PopupMenuTextTemplateDirective, selector: "ng-template[monaPopupMenuTextTemplate]" }, { kind: "component", type: LucideChevronDown, selector: "svg[lucideChevronDown]" }] }); }
375
375
  }
376
376
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: SplitButtonComponent, decorators: [{
377
377
  type: Component,
@@ -233,7 +233,7 @@ class SplitterResizerHandleComponent {
233
233
  event.stopPropagation();
234
234
  }
235
235
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: SplitterResizerHandleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
236
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.6", type: SplitterResizerHandleComponent, isStandalone: true, selector: "mona-splitter-resizer-handle", inputs: { nextControlsVisible: { classPropertyName: "nextControlsVisible", publicName: "nextControlsVisible", isSignal: true, isRequired: true, transformFunction: null }, orientation: { classPropertyName: "orientation", publicName: "orientation", isSignal: true, isRequired: true, transformFunction: null }, previousControlsVisible: { classPropertyName: "previousControlsVisible", publicName: "previousControlsVisible", isSignal: true, isRequired: true, transformFunction: null }, resizable: { classPropertyName: "resizable", publicName: "resizable", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { collapseNext: "collapseNext", collapsePrevious: "collapsePrevious" }, host: { properties: { "class": "baseClass()" } }, ngImport: i0, template: "@if (orientation() === \"horizontal\") {\n @if (previousControlsVisible()) {\n <button\n monaButton\n look=\"secondary\"\n [rounded]=\"'none'\"\n aria-label=\"Collapse previous pane\"\n (click)=\"collapsePrevious.emit($event)\"\n (pointerdown)=\"onPointerDown($event)\">\n <svg lucideChevronLeft [size]=\"12\"></svg>\n </button>\n }\n @if (resizable()) {\n <div class=\"flex h-6 w-0.5 bg-primary/40\"></div>\n }\n @if (nextControlsVisible()) {\n <button\n monaButton\n look=\"secondary\"\n [rounded]=\"'none'\"\n aria-label=\"Collapse next pane\"\n (click)=\"collapseNext.emit($event)\"\n (pointerdown)=\"onPointerDown($event)\">\n <svg lucideChevronRight [size]=\"12\"></svg>\n </button>\n }\n} @else {\n @if (previousControlsVisible()) {\n <button\n monaButton\n look=\"secondary\"\n [rounded]=\"'none'\"\n aria-label=\"Collapse pane above\"\n (click)=\"collapsePrevious.emit($event)\"\n (pointerdown)=\"onPointerDown($event)\">\n <svg lucideChevronUp [size]=\"12\"></svg>\n </button>\n }\n @if (resizable()) {\n <div class=\"flex h-0.5 w-6 bg-primary/40\"></div>\n }\n @if (nextControlsVisible()) {\n <button\n monaButton\n look=\"secondary\"\n [rounded]=\"'none'\"\n aria-label=\"Collapse pane below\"\n (click)=\"collapseNext.emit($event)\"\n (pointerdown)=\"onPointerDown($event)\">\n <svg lucideChevronDown [size]=\"12\"></svg>\n </button>\n }\n}\n", dependencies: [{ kind: "directive", type: ButtonDirective, selector: "button[monaButton]", inputs: ["aria-haspopup", "disabled", "iconOnly", "loading", "look", "rounded", "selected", "size", "tabindex", "toggleable", "class"], outputs: ["disabledChange", "loadingChange", "lookChange", "selectedChange"] }, { kind: "component", type: LucideChevronLeft, selector: "svg[lucideChevronLeft]" }, { kind: "component", type: LucideChevronRight, selector: "svg[lucideChevronRight]" }, { kind: "component", type: LucideChevronUp, selector: "svg[lucideChevronUp]" }, { kind: "component", type: LucideChevronDown, selector: "svg[lucideChevronDown]" }] }); }
236
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.6", type: SplitterResizerHandleComponent, isStandalone: true, selector: "mona-splitter-resizer-handle", inputs: { nextControlsVisible: { classPropertyName: "nextControlsVisible", publicName: "nextControlsVisible", isSignal: true, isRequired: true, transformFunction: null }, orientation: { classPropertyName: "orientation", publicName: "orientation", isSignal: true, isRequired: true, transformFunction: null }, previousControlsVisible: { classPropertyName: "previousControlsVisible", publicName: "previousControlsVisible", isSignal: true, isRequired: true, transformFunction: null }, resizable: { classPropertyName: "resizable", publicName: "resizable", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { collapseNext: "collapseNext", collapsePrevious: "collapsePrevious" }, host: { properties: { "class": "baseClass()" } }, ngImport: i0, template: "@if (orientation() === \"horizontal\") {\n @if (previousControlsVisible()) {\n <button\n monaButton\n look=\"secondary\"\n [rounded]=\"'none'\"\n aria-label=\"Collapse previous pane\"\n (click)=\"collapsePrevious.emit($event)\"\n (pointerdown)=\"onPointerDown($event)\">\n <svg lucideChevronLeft [size]=\"12\"></svg>\n </button>\n }\n @if (resizable()) {\n <div class=\"flex h-6 w-0.5 bg-primary/40\"></div>\n }\n @if (nextControlsVisible()) {\n <button\n monaButton\n look=\"secondary\"\n [rounded]=\"'none'\"\n aria-label=\"Collapse next pane\"\n (click)=\"collapseNext.emit($event)\"\n (pointerdown)=\"onPointerDown($event)\">\n <svg lucideChevronRight [size]=\"12\"></svg>\n </button>\n }\n} @else {\n @if (previousControlsVisible()) {\n <button\n monaButton\n look=\"secondary\"\n [rounded]=\"'none'\"\n aria-label=\"Collapse pane above\"\n (click)=\"collapsePrevious.emit($event)\"\n (pointerdown)=\"onPointerDown($event)\">\n <svg lucideChevronUp [size]=\"12\"></svg>\n </button>\n }\n @if (resizable()) {\n <div class=\"flex h-0.5 w-6 bg-primary/40\"></div>\n }\n @if (nextControlsVisible()) {\n <button\n monaButton\n look=\"secondary\"\n [rounded]=\"'none'\"\n aria-label=\"Collapse pane below\"\n (click)=\"collapseNext.emit($event)\"\n (pointerdown)=\"onPointerDown($event)\">\n <svg lucideChevronDown [size]=\"12\"></svg>\n </button>\n }\n}\n", dependencies: [{ kind: "directive", type: ButtonDirective, selector: "button[monaButton]", inputs: ["aria-haspopup", "disabled", "iconOnly", "loading", "look", "rounded", "selected", "size", "tabindex", "type", "toggleable", "class"], outputs: ["disabledChange", "loadingChange", "lookChange", "selectedChange"] }, { kind: "component", type: LucideChevronLeft, selector: "svg[lucideChevronLeft]" }, { kind: "component", type: LucideChevronRight, selector: "svg[lucideChevronRight]" }, { kind: "component", type: LucideChevronUp, selector: "svg[lucideChevronUp]" }, { kind: "component", type: LucideChevronDown, selector: "svg[lucideChevronDown]" }] }); }
237
237
  }
238
238
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: SplitterResizerHandleComponent, decorators: [{
239
239
  type: Component,