@nanahoshi/mona-ui 0.23.3 → 0.24.1

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 (110) hide show
  1. package/README.md +1 -0
  2. package/fesm2022/nanahoshi-mona-ui-auto-complete.mjs +2 -0
  3. package/fesm2022/nanahoshi-mona-ui-breadcrumb.mjs +2 -0
  4. package/fesm2022/nanahoshi-mona-ui-button-group.mjs +2 -0
  5. package/fesm2022/nanahoshi-mona-ui-calendar.mjs +13 -11
  6. package/fesm2022/nanahoshi-mona-ui-card.mjs +2 -0
  7. package/fesm2022/nanahoshi-mona-ui-chart.mjs +4 -2
  8. package/fesm2022/nanahoshi-mona-ui-chip.mjs +2 -0
  9. package/fesm2022/nanahoshi-mona-ui-color-gradient.mjs +5 -3
  10. package/fesm2022/nanahoshi-mona-ui-color-palette.mjs +2 -0
  11. package/fesm2022/nanahoshi-mona-ui-color-picker.mjs +2 -0
  12. package/fesm2022/nanahoshi-mona-ui-combo-box.mjs +2 -0
  13. package/fesm2022/nanahoshi-mona-ui-common.mjs +265 -159
  14. package/fesm2022/nanahoshi-mona-ui-date-picker.mjs +2 -0
  15. package/fesm2022/nanahoshi-mona-ui-datetime-picker.mjs +2 -0
  16. package/fesm2022/nanahoshi-mona-ui-dialog.mjs +2 -0
  17. package/fesm2022/nanahoshi-mona-ui-dropdown-list.mjs +2 -0
  18. package/fesm2022/nanahoshi-mona-ui-dropdowns.mjs +5 -3
  19. package/fesm2022/nanahoshi-mona-ui-editor.mjs +5 -3
  20. package/fesm2022/nanahoshi-mona-ui-filter.mjs +3 -1
  21. package/fesm2022/{nanahoshi-mona-ui-grid-grid-footer-row.component-BSVlcB9_.mjs → nanahoshi-mona-ui-grid-grid-footer-row.component-CnPhVIr4.mjs} +2 -2
  22. package/fesm2022/{nanahoshi-mona-ui-grid-grid-list.component-B2pBOuLa.mjs → nanahoshi-mona-ui-grid-grid-list.component-DxY6bfTX.mjs} +4 -4
  23. package/fesm2022/{nanahoshi-mona-ui-grid-grid-row.component-Buf4evf5.mjs → nanahoshi-mona-ui-grid-grid-row.component-CaO5Lae6.mjs} +3 -3
  24. package/fesm2022/{nanahoshi-mona-ui-grid-grid-virtual-list.component-1RdqLEa9.mjs → nanahoshi-mona-ui-grid-grid-virtual-list.component-jNYtqg5B.mjs} +4 -4
  25. package/fesm2022/{nanahoshi-mona-ui-grid-nanahoshi-mona-ui-grid-DeRc_QcP.mjs → nanahoshi-mona-ui-grid-nanahoshi-mona-ui-grid-9FtfCutf.mjs} +12 -10
  26. package/fesm2022/nanahoshi-mona-ui-grid.mjs +1 -1
  27. package/fesm2022/nanahoshi-mona-ui-i18n-icu.mjs +888 -0
  28. package/fesm2022/nanahoshi-mona-ui-i18n.mjs +337 -104
  29. package/fesm2022/nanahoshi-mona-ui-internal-list.mjs +2 -0
  30. package/fesm2022/nanahoshi-mona-ui-internal-tree.mjs +2 -0
  31. package/fesm2022/nanahoshi-mona-ui-list-box.mjs +2 -0
  32. package/fesm2022/nanahoshi-mona-ui-locales-ar-sa.mjs +401 -0
  33. package/fesm2022/nanahoshi-mona-ui-locales-de-de.mjs +399 -0
  34. package/fesm2022/nanahoshi-mona-ui-locales-es-es.mjs +399 -0
  35. package/fesm2022/nanahoshi-mona-ui-locales-fr-fr.mjs +399 -0
  36. package/fesm2022/nanahoshi-mona-ui-locales-id-id.mjs +397 -0
  37. package/fesm2022/nanahoshi-mona-ui-locales-it-it.mjs +399 -0
  38. package/fesm2022/nanahoshi-mona-ui-locales-ja-jp.mjs +397 -0
  39. package/fesm2022/nanahoshi-mona-ui-locales-ko-kr.mjs +397 -0
  40. package/fesm2022/nanahoshi-mona-ui-locales-pt-br.mjs +399 -0
  41. package/fesm2022/nanahoshi-mona-ui-locales-ru-ru.mjs +401 -0
  42. package/fesm2022/nanahoshi-mona-ui-locales-tr-tr.mjs +397 -0
  43. package/fesm2022/nanahoshi-mona-ui-locales-zh-cn.mjs +397 -0
  44. package/fesm2022/nanahoshi-mona-ui-locales-zh-tw.mjs +397 -0
  45. package/fesm2022/nanahoshi-mona-ui-locales.mjs +76 -5060
  46. package/fesm2022/nanahoshi-mona-ui-multi-select.mjs +5 -3
  47. package/fesm2022/nanahoshi-mona-ui-notification.mjs +2 -0
  48. package/fesm2022/nanahoshi-mona-ui-numeric-text-box.mjs +299 -167
  49. package/fesm2022/nanahoshi-mona-ui-otp-input.mjs +2 -0
  50. package/fesm2022/nanahoshi-mona-ui-pager.mjs +5 -3
  51. package/fesm2022/nanahoshi-mona-ui-rating.mjs +4 -2
  52. package/fesm2022/nanahoshi-mona-ui-scroll-view.mjs +5 -3
  53. package/fesm2022/nanahoshi-mona-ui-sheet.mjs +2 -0
  54. package/fesm2022/nanahoshi-mona-ui-slider.mjs +2 -0
  55. package/fesm2022/nanahoshi-mona-ui-spinner.mjs +2 -0
  56. package/fesm2022/nanahoshi-mona-ui-split-button.mjs +2 -0
  57. package/fesm2022/nanahoshi-mona-ui-splitter.mjs +2 -0
  58. package/fesm2022/nanahoshi-mona-ui-stepper.mjs +2 -0
  59. package/fesm2022/nanahoshi-mona-ui-tabs.mjs +2 -0
  60. package/fesm2022/nanahoshi-mona-ui-text-box.mjs +2 -0
  61. package/fesm2022/nanahoshi-mona-ui-time-picker.mjs +2 -0
  62. package/fesm2022/nanahoshi-mona-ui-time-selector.mjs +2 -0
  63. package/fesm2022/nanahoshi-mona-ui-window.mjs +2 -0
  64. package/i18n/catalogs/en-US.messages.json +373 -0
  65. package/i18n/icu/package.json +4 -0
  66. package/locales/ar-sa/ar-sa.messages.json +373 -0
  67. package/locales/ar-sa/package.json +4 -0
  68. package/locales/de-de/de-de.messages.json +373 -0
  69. package/locales/de-de/package.json +4 -0
  70. package/locales/es-es/es-es.messages.json +373 -0
  71. package/locales/es-es/package.json +4 -0
  72. package/locales/fr-fr/fr-fr.messages.json +373 -0
  73. package/locales/fr-fr/package.json +4 -0
  74. package/locales/id-id/id-id.messages.json +373 -0
  75. package/locales/id-id/package.json +4 -0
  76. package/locales/it-it/it-it.messages.json +373 -0
  77. package/locales/it-it/package.json +4 -0
  78. package/locales/ja-jp/ja-jp.messages.json +373 -0
  79. package/locales/ja-jp/package.json +4 -0
  80. package/locales/ko-kr/ko-kr.messages.json +373 -0
  81. package/locales/ko-kr/package.json +4 -0
  82. package/locales/pt-br/package.json +4 -0
  83. package/locales/pt-br/pt-br.messages.json +373 -0
  84. package/locales/ru-ru/package.json +4 -0
  85. package/locales/ru-ru/ru-ru.messages.json +373 -0
  86. package/locales/tr-tr/package.json +4 -0
  87. package/locales/tr-tr/tr-tr.messages.json +373 -0
  88. package/locales/zh-cn/package.json +4 -0
  89. package/locales/zh-cn/zh-cn.messages.json +373 -0
  90. package/locales/zh-tw/package.json +4 -0
  91. package/locales/zh-tw/zh-tw.messages.json +373 -0
  92. package/package.json +111 -53
  93. package/types/nanahoshi-mona-ui-common.d.ts +116 -73
  94. package/types/nanahoshi-mona-ui-i18n-icu.d.ts +74 -0
  95. package/types/nanahoshi-mona-ui-i18n.d.ts +108 -6
  96. package/types/nanahoshi-mona-ui-locales-ar-sa.d.ts +379 -0
  97. package/types/nanahoshi-mona-ui-locales-de-de.d.ts +379 -0
  98. package/types/nanahoshi-mona-ui-locales-es-es.d.ts +379 -0
  99. package/types/nanahoshi-mona-ui-locales-fr-fr.d.ts +379 -0
  100. package/types/nanahoshi-mona-ui-locales-id-id.d.ts +379 -0
  101. package/types/nanahoshi-mona-ui-locales-it-it.d.ts +379 -0
  102. package/types/nanahoshi-mona-ui-locales-ja-jp.d.ts +379 -0
  103. package/types/nanahoshi-mona-ui-locales-ko-kr.d.ts +379 -0
  104. package/types/nanahoshi-mona-ui-locales-pt-br.d.ts +379 -0
  105. package/types/nanahoshi-mona-ui-locales-ru-ru.d.ts +379 -0
  106. package/types/nanahoshi-mona-ui-locales-tr-tr.d.ts +379 -0
  107. package/types/nanahoshi-mona-ui-locales-zh-cn.d.ts +379 -0
  108. package/types/nanahoshi-mona-ui-locales-zh-tw.d.ts +379 -0
  109. package/types/nanahoshi-mona-ui-locales.d.ts +30 -4915
  110. package/types/nanahoshi-mona-ui-numeric-text-box.d.ts +113 -37
package/README.md CHANGED
@@ -18,6 +18,7 @@ A modern, high-performance, accessible UI component library built for Angular an
18
18
  ## Documentation
19
19
 
20
20
  - [Internationalization (i18n) & RTL Guide](docs/i18n.md)
21
+ - [Patch Stores & Merge Utilities](docs/patch-store.md)
21
22
  - [Component Migration Inventory](docs/internal/i18n-rtl-migration-inventory.md)
22
23
 
23
24
  ---
@@ -16,6 +16,8 @@ import { Subject, filter, debounceTime, identity, take, tap } from 'rxjs';
16
16
  import { twMerge } from 'tailwind-merge';
17
17
  import { cva } from 'class-variance-authority';
18
18
 
19
+ // Generated from i18n/catalogs/en-US.messages.json by scripts/generate-locale-catalogs.ts. Do not edit.
20
+ // Edit the JSON file and run `npm run generate:locale-catalogs`.
19
21
  const AUTO_COMPLETE_DEFAULT_MESSAGES = {
20
22
  clear: "Clear"
21
23
  };
@@ -97,6 +97,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImpor
97
97
  }]
98
98
  }] });
99
99
 
100
+ // Generated from i18n/catalogs/en-US.messages.json by scripts/generate-locale-catalogs.ts. Do not edit.
101
+ // Edit the JSON file and run `npm run generate:locale-catalogs`.
100
102
  const BREADCRUMB_DEFAULT_MESSAGES = {
101
103
  breadcrumb: "Breadcrumb"
102
104
  };
@@ -7,6 +7,8 @@ import { map, pairwise } from 'rxjs';
7
7
  import { twMerge } from 'tailwind-merge';
8
8
  import { cva } from 'class-variance-authority';
9
9
 
10
+ // Generated from i18n/catalogs/en-US.messages.json by scripts/generate-locale-catalogs.ts. Do not edit.
11
+ // Edit the JSON file and run `npm run generate:locale-catalogs`.
10
12
  const BUTTON_GROUP_DEFAULT_MESSAGES = {
11
13
  buttonGroup: "Button group"
12
14
  };
@@ -14,25 +14,27 @@ import { twMerge } from 'tailwind-merge';
14
14
  import { formatNumber, MonaI18nService, injectComponentDirection, gregorianDateTime, formatGregorianDateToLocaleString, getLocaleFirstDayOfWeek, gregorianDateTimeFromObject } from '@nanahoshi/mona-ui/i18n';
15
15
  import { cva } from 'class-variance-authority';
16
16
 
17
- function localizeYear(year) {
18
- return formatNumber(year, "en-US", { useGrouping: false });
17
+ // Generated from i18n/catalogs/en-US.messages.json by scripts/generate-locale-catalogs.ts. Do not edit.
18
+ // Edit the JSON file and run `npm run generate:locale-catalogs`.
19
+ function localizeNumber(value, options) {
20
+ return formatNumber(value, "en-US", options);
19
21
  }
20
22
  const CALENDAR_DEFAULT_MESSAGES = {
21
23
  calendarLabel: (formattedMonthAndYear) => `Calendar, ${formattedMonthAndYear}`,
22
- yearViewLabel: (year) => `Year view, ${year}`,
23
- decadeViewLabel: (start, end) => `Decade view, ${localizeYear(start)} - ${localizeYear(end)}`,
24
+ decadeRange: (start, end) => `${localizeNumber(start, { useGrouping: false })} to ${localizeNumber(end, { useGrouping: false })}`,
25
+ decadeViewLabel: (start, end) => `Decade view, ${localizeNumber(start, { useGrouping: false })} - ${localizeNumber(end, { useGrouping: false })}`,
26
+ goToToday: (formattedDate) => `Go to today, ${formattedDate}`,
27
+ nextDecade: "Next decade",
24
28
  nextMonth: "Next month",
25
29
  nextYear: "Next year",
26
- nextDecade: "Next decade",
30
+ previousDecade: "Previous decade",
27
31
  previousMonth: "Previous month",
28
32
  previousYear: "Previous year",
29
- previousDecade: "Previous decade",
30
- today: "Today",
31
- goToToday: (formattedDate) => `Go to today, ${formattedDate}`,
32
- switchToYearView: (currentMonthAndYear) => `Switch to year view, currently ${currentMonthAndYear}`,
33
33
  switchToDecadeView: (currentYear) => `Switch to decade view, currently ${currentYear}`,
34
- decadeRange: (start, end) => `${localizeYear(start)} to ${localizeYear(end)}`,
35
- yearCellLabel: (year) => `Year ${localizeYear(year)}`
34
+ switchToYearView: (currentMonthAndYear) => `Switch to year view, currently ${currentMonthAndYear}`,
35
+ today: "Today",
36
+ yearCellLabel: (year) => `Year ${localizeNumber(year, { useGrouping: false })}`,
37
+ yearViewLabel: (year) => `Year view, ${year}`
36
38
  };
37
39
 
38
40
  class CalendarDecadeCellTemplateDirective {
@@ -21,6 +21,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImpor
21
21
  }]
22
22
  }] });
23
23
 
24
+ // Generated from i18n/catalogs/en-US.messages.json by scripts/generate-locale-catalogs.ts. Do not edit.
25
+ // Edit the JSON file and run `npm run generate:locale-catalogs`.
24
26
  const CARD_DEFAULT_MESSAGES = {
25
27
  actionsLabel: "Card actions"
26
28
  };
@@ -53,6 +53,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImpor
53
53
  }]
54
54
  }] });
55
55
 
56
+ // Generated from i18n/catalogs/en-US.messages.json by scripts/generate-locale-catalogs.ts. Do not edit.
57
+ // Edit the JSON file and run `npm run generate:locale-catalogs`.
56
58
  const CHART_DEFAULT_MESSAGES = {
57
59
  change: "Change",
58
60
  chart: "Chart",
@@ -61,7 +63,7 @@ const CHART_DEFAULT_MESSAGES = {
61
63
  closeAbbreviation: "C",
62
64
  colorScale: "Color scale",
63
65
  conversion: "Conversion",
64
- divergingRangeDescription: (title, min, mid, max) => `${title}, ${min} to ${mid} to ${max}`,
66
+ divergingRangeDescription: (title, minimum, midpoint, maximum) => `${title}, ${minimum} to ${midpoint} to ${maximum}`,
65
67
  dropOff: "Drop-off",
66
68
  falling: "Falling",
67
69
  high: "High",
@@ -74,7 +76,7 @@ const CHART_DEFAULT_MESSAGES = {
74
76
  openAbbreviation: "O",
75
77
  overall: "Overall",
76
78
  range: "Range",
77
- rangeDescription: (title, min, max) => `${title}, ${min} to ${max}`,
79
+ rangeDescription: (title, minimum, maximum) => `${title}, ${minimum} to ${maximum}`,
78
80
  rising: "Rising",
79
81
  runningTotal: "Running Total",
80
82
  size: "size",
@@ -11,6 +11,8 @@ import { twMerge } from 'tailwind-merge';
11
11
  import { cva } from 'class-variance-authority';
12
12
  import { themeRaisedSurfaceClasses } from '@nanahoshi/mona-ui/internal';
13
13
 
14
+ // Generated from i18n/catalogs/en-US.messages.json by scripts/generate-locale-catalogs.ts. Do not edit.
15
+ // Edit the JSON file and run `npm run generate:locale-catalogs`.
14
16
  const CHIP_DEFAULT_MESSAGES = {
15
17
  removeLabel: (label) => (label ? `Remove, ${label}` : "Remove, item")
16
18
  };
@@ -14,8 +14,10 @@ import { formatNumber, MonaI18nService } from '@nanahoshi/mona-ui/i18n';
14
14
  import { Subject, fromEvent, switchMap, takeUntil, distinctUntilChanged } from 'rxjs';
15
15
  import { cva } from 'class-variance-authority';
16
16
 
17
- function localizeNumber(value) {
18
- return formatNumber(value, "en-US");
17
+ // Generated from i18n/catalogs/en-US.messages.json by scripts/generate-locale-catalogs.ts. Do not edit.
18
+ // Edit the JSON file and run `npm run generate:locale-catalogs`.
19
+ function localizeNumber(value, options) {
20
+ return formatNumber(value, "en-US", options);
19
21
  }
20
22
  const COLOR_GRADIENT_DEFAULT_MESSAGES = {
21
23
  apply: "Apply",
@@ -787,7 +789,7 @@ class ColorGradientComponent {
787
789
  }
788
790
  }
789
791
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: ColorGradientComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
790
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.6", type: ColorGradientComponent, isStandalone: true, selector: "mona-color-gradient", inputs: { disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, format: { classPropertyName: "format", publicName: "format", isSignal: true, isRequired: false, transformFunction: null }, invalid: { classPropertyName: "invalid", publicName: "invalid", isSignal: true, isRequired: false, transformFunction: null }, opacity: { classPropertyName: "opacity", publicName: "opacity", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, rounded: { classPropertyName: "rounded", publicName: "rounded", isSignal: true, isRequired: false, transformFunction: null }, showButtons: { classPropertyName: "showButtons", publicName: "showButtons", isSignal: true, isRequired: false, transformFunction: null }, showHexInput: { classPropertyName: "showHexInput", publicName: "showHexInput", isSignal: true, isRequired: false, transformFunction: null }, showColorInputs: { classPropertyName: "showColorInputs", publicName: "showColorInputs", isSignal: true, isRequired: false, transformFunction: null }, touched: { classPropertyName: "touched", publicName: "touched", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { apply: "apply", cancel: "cancel", touch: "touch", value: "valueChange" }, host: { properties: { "class": "baseClasses()", "attr.data-disabled": "disabled()", "attr.data-invalid": "invalidState() || null", "attr.aria-invalid": "invalidState() ? 'true' : null" } }, viewQueries: [{ propertyName: "hsvHandle", first: true, predicate: ["hsvPointer"], descendants: true, isSignal: true }, { propertyName: "hsvRectangle", first: true, predicate: ["hsvRectangle"], descendants: true, isSignal: true }], ngImport: i0, template: "<div [class]=\"hsvRectangleClasses()\" [style.background-color]=\"hsvRectangleBackground()\" #hsvRectangle>\n <div\n [class]=\"hsvRectangleHandleClasses()\"\n [style.left.px]=\"hsvHandleLeft()\"\n [style.top.px]=\"hsvHandleTop()\"\n [attr.tabindex]=\"disabled() ? -1 : 0\"\n [attr.role]=\"'slider'\"\n [attr.aria-label]=\"messages().saturationAndValue\"\n [attr.aria-valuemin]=\"0\"\n [attr.aria-valuemax]=\"100\"\n [attr.aria-valuenow]=\"hsv().s\"\n [attr.aria-valuetext]=\"messages().saturationAndValueText(hsv().s ?? 0, hsv().v ?? 0)\"\n [attr.aria-disabled]=\"disabled() || null\"\n (keydown)=\"onHsvHandleKeyDown($event)\"\n (blur)=\"onHsvHandleBlur()\"\n #hsvPointer></div>\n</div>\n<div class=\"flex items-center gap-2\">\n <div class=\"flex flex-1 flex-col gap-1 me-2\">\n <mona-slider\n [minValue]=\"0\"\n [maxValue]=\"360\"\n [trackBackground]=\"'linear-gradient(to right, #ff0000, #ffff00, #00ff00, #00ffff, #0000ff, #ff00ff, #ff0000)'\"\n [selectionBackground]=\"'transparent'\"\n [handleClasses]=\"sliderHandleClasses()\"\n [trackSize]=\"sliderHeight\"\n [rounded]=\"rounded()\"\n [value]=\"hsv().h ?? 0\"\n (valueChange)=\"hueValue$.next($event)\"\n (touch)=\"onSliderBlur()\"></mona-slider>\n @if (opacity()) {\n <mona-slider\n [minValue]=\"0\"\n [maxValue]=\"255\"\n [trackBackground]=\"alphaSliderBackground()\"\n [selectionBackground]=\"'transparent'\"\n [handleClasses]=\"sliderHandleClasses()\"\n [trackSize]=\"sliderHeight\"\n [rounded]=\"rounded()\"\n [value]=\"alpha()\"\n (valueChange)=\"onAlphaChange($event)\"\n (touch)=\"onSliderBlur()\"></mona-slider>\n }\n </div>\n @for (preview of colorPreviews(); track preview.type) {\n <div\n [class]=\"colorPreviewClasses()\"\n [class.cursor-pointer]=\"$index === 1\"\n [style.background-color]=\"preview.color\"\n [attr.title]=\"$index === 1 ? preview.title : null\"\n [attr.aria-label]=\"$index === 1 ? preview.title : null\"\n [attr.aria-hidden]=\"$index === 0 ? 'true' : null\"\n [attr.role]=\"$index === 1 ? 'button' : null\"\n [attr.tabindex]=\"$index === 1 ? 0 : null\"\n (click)=\"preview.onClick?.()\"\n (keydown)=\"onPreviousColorKeyDown($event, preview.onClick)\"></div>\n }\n <button monaButton look=\"ghost\" size=\"small\" [attr.aria-label]=\"messages().clearColor\" (click)=\"onClearClick()\">\n <svg lucideDropletOff [size]=\"16\" aria-hidden=\"true\"></svg>\n </button>\n</div>\n<div class=\"flex flex-col gap-2\">\n @if (showColorInputs()) {\n <div class=\"flex gap-2\">\n <div class=\"flex gap-1\">\n @for (input of colorInputs(); track input.key) {\n <mona-numeric-text-box\n [value]=\"input.value\"\n [minValue]=\"input.min\"\n [maxValue]=\"input.max\"\n [decimals]=\"0\"\n [spinners]=\"false\"\n [nullable]=\"false\"\n [rounded]=\"rounded()\"\n [size]=\"'small'\"\n class=\"w-18\"\n (valueChange)=\"input.change($event)\"\n (inputBlur)=\"onNumericInputBlur()\">\n <ng-template monaNumericTextBoxPrefixTemplate>\n <ng-container\n [ngTemplateOutlet]=\"numericInputPrefixTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: input.label }\"></ng-container>\n </ng-template>\n </mona-numeric-text-box>\n }\n </div>\n <div class=\"flex flex-1 items-center justify-end\">\n <button\n monaButton\n look=\"ghost\"\n [rounded]=\"rounded()\"\n size=\"small\"\n [attr.aria-label]=\"messages().switchColorMode\"\n (click)=\"onSwitchColorModeClick()\">\n <svg lucideChevronsUpDown [size]=\"16\" aria-hidden=\"true\"></svg>\n </button>\n </div>\n </div>\n }\n @if (showHexInput()) {\n <mona-text-box\n [rounded]=\"rounded()\"\n [value]=\"hex()\"\n (valueChange)=\"onHexChange($event)\"\n (inputBlur)=\"onHexInputBlur()\"\n (inputFocus)=\"onHexInputFocus()\"\n class=\"w-full\">\n <ng-template monaTextBoxPrefixTemplate>\n <ng-container\n [ngTemplateOutlet]=\"numericInputPrefixTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: 'HEX', classes: 'w-auto px-2' }\"></ng-container>\n </ng-template>\n <ng-template monaTextBoxSuffixTemplate>\n <mona-dropdown-button look=\"ghost\" [attr.aria-label]=\"messages().copyColor\" class=\"h-full\">\n <svg lucideCopy [size]=\"12\"></svg>\n <mona-dropdown-button-item\n [label]=\"messages().copyAsHex\"\n (menuClick)=\"onCopyColorSelect('hex')\"></mona-dropdown-button-item>\n <mona-dropdown-button-item\n [label]=\"messages().copyAsRgb\"\n (menuClick)=\"onCopyColorSelect('rgb')\"></mona-dropdown-button-item>\n </mona-dropdown-button>\n </ng-template>\n </mona-text-box>\n }\n @if (showButtons()) {\n <div class=\"flex items-center justify-end gap-2\">\n <button monaButton [rounded]=\"rounded()\" look=\"primary\" (click)=\"onApply()\">{{ messages().apply }}</button>\n <button monaButton [rounded]=\"rounded()\" (click)=\"onCancel()\">{{ messages().cancel }}</button>\n </div>\n }\n</div>\n\n<ng-template #numericInputPrefixTemplate let-text let-classes=\"classes\">\n <span\n [class]=\"classes\"\n class=\"inline-flex items-center justify-center select-none w-7.5 [background-color:var(--mona-input-addon-background,var(--color-secondary))] h-full text-foreground text-xs font-semibold border-e border-e-input-border\"\n >{{ text }}</span\n >\n</ng-template>\n", dependencies: [{ kind: "component", type: LucideDropletOff, selector: "svg[lucideDropletOff]" }, { kind: "component", type: LucideChevronsUpDown, selector: "svg[lucideChevronsUpDown]" }, { kind: "component", type: NumericTextBoxComponent, selector: "mona-numeric-text-box", inputs: ["aria-label", "decimals", "disabled", "formatter", "invalid", "maxValue", "minValue", "nullable", "readonly", "required", "rounded", "size", "spinners", "step", "tabindex", "touched", "class", "value"], outputs: ["inputBlur", "inputFocus", "inputFocusOut", "touch", "valueChange"] }, { kind: "directive", type: NumericTextBoxPrefixTemplateDirective, selector: "ng-template[monaNumericTextBoxPrefixTemplate]" }, { 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: TextBoxComponent, selector: "mona-text-box", inputs: ["clearButton", "disabled", "inputAttributes", "inputClass", "inputStyle", "invalid", "placeholder", "readonly", "required", "rounded", "size", "touched", "type", "class", "value"], outputs: ["inputBlur", "inputFocus", "touch", "valueChange"] }, { kind: "directive", type: TextBoxPrefixTemplateDirective, selector: "ng-template[monaTextBoxPrefixTemplate]" }, { kind: "directive", type: TextBoxSuffixTemplateDirective, selector: "ng-template[monaTextBoxSuffixTemplate]" }, { kind: "component", type: SliderComponent, selector: "mona-slider", inputs: ["aria-label", "aria-labelledby", "value"], outputs: ["valueChange"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: DropdownButtonComponent, selector: "mona-dropdown-button", inputs: ["aria-label", "aria-labelledby", "iconOnly", "disabled", "loading", "look", "rounded", "size", "text", "class"], outputs: ["menuItemClick"] }, { kind: "component", type: DropdownButtonItemComponent, selector: "mona-dropdown-button-item" }, { kind: "component", type: LucideCopy, selector: "svg[lucideCopy]" }] }); }
792
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.6", type: ColorGradientComponent, isStandalone: true, selector: "mona-color-gradient", inputs: { disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, format: { classPropertyName: "format", publicName: "format", isSignal: true, isRequired: false, transformFunction: null }, invalid: { classPropertyName: "invalid", publicName: "invalid", isSignal: true, isRequired: false, transformFunction: null }, opacity: { classPropertyName: "opacity", publicName: "opacity", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, rounded: { classPropertyName: "rounded", publicName: "rounded", isSignal: true, isRequired: false, transformFunction: null }, showButtons: { classPropertyName: "showButtons", publicName: "showButtons", isSignal: true, isRequired: false, transformFunction: null }, showHexInput: { classPropertyName: "showHexInput", publicName: "showHexInput", isSignal: true, isRequired: false, transformFunction: null }, showColorInputs: { classPropertyName: "showColorInputs", publicName: "showColorInputs", isSignal: true, isRequired: false, transformFunction: null }, touched: { classPropertyName: "touched", publicName: "touched", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { apply: "apply", cancel: "cancel", touch: "touch", value: "valueChange" }, host: { properties: { "class": "baseClasses()", "attr.data-disabled": "disabled()", "attr.data-invalid": "invalidState() || null", "attr.aria-invalid": "invalidState() ? 'true' : null" } }, viewQueries: [{ propertyName: "hsvHandle", first: true, predicate: ["hsvPointer"], descendants: true, isSignal: true }, { propertyName: "hsvRectangle", first: true, predicate: ["hsvRectangle"], descendants: true, isSignal: true }], ngImport: i0, template: "<div [class]=\"hsvRectangleClasses()\" [style.background-color]=\"hsvRectangleBackground()\" #hsvRectangle>\n <div\n [class]=\"hsvRectangleHandleClasses()\"\n [style.left.px]=\"hsvHandleLeft()\"\n [style.top.px]=\"hsvHandleTop()\"\n [attr.tabindex]=\"disabled() ? -1 : 0\"\n [attr.role]=\"'slider'\"\n [attr.aria-label]=\"messages().saturationAndValue\"\n [attr.aria-valuemin]=\"0\"\n [attr.aria-valuemax]=\"100\"\n [attr.aria-valuenow]=\"hsv().s\"\n [attr.aria-valuetext]=\"messages().saturationAndValueText(hsv().s ?? 0, hsv().v ?? 0)\"\n [attr.aria-disabled]=\"disabled() || null\"\n (keydown)=\"onHsvHandleKeyDown($event)\"\n (blur)=\"onHsvHandleBlur()\"\n #hsvPointer></div>\n</div>\n<div class=\"flex items-center gap-2\">\n <div class=\"flex flex-1 flex-col gap-1 me-2\">\n <mona-slider\n [minValue]=\"0\"\n [maxValue]=\"360\"\n [trackBackground]=\"'linear-gradient(to right, #ff0000, #ffff00, #00ff00, #00ffff, #0000ff, #ff00ff, #ff0000)'\"\n [selectionBackground]=\"'transparent'\"\n [handleClasses]=\"sliderHandleClasses()\"\n [trackSize]=\"sliderHeight\"\n [rounded]=\"rounded()\"\n [value]=\"hsv().h ?? 0\"\n (valueChange)=\"hueValue$.next($event)\"\n (touch)=\"onSliderBlur()\"></mona-slider>\n @if (opacity()) {\n <mona-slider\n [minValue]=\"0\"\n [maxValue]=\"255\"\n [trackBackground]=\"alphaSliderBackground()\"\n [selectionBackground]=\"'transparent'\"\n [handleClasses]=\"sliderHandleClasses()\"\n [trackSize]=\"sliderHeight\"\n [rounded]=\"rounded()\"\n [value]=\"alpha()\"\n (valueChange)=\"onAlphaChange($event)\"\n (touch)=\"onSliderBlur()\"></mona-slider>\n }\n </div>\n @for (preview of colorPreviews(); track preview.type) {\n <div\n [class]=\"colorPreviewClasses()\"\n [class.cursor-pointer]=\"$index === 1\"\n [style.background-color]=\"preview.color\"\n [attr.title]=\"$index === 1 ? preview.title : null\"\n [attr.aria-label]=\"$index === 1 ? preview.title : null\"\n [attr.aria-hidden]=\"$index === 0 ? 'true' : null\"\n [attr.role]=\"$index === 1 ? 'button' : null\"\n [attr.tabindex]=\"$index === 1 ? 0 : null\"\n (click)=\"preview.onClick?.()\"\n (keydown)=\"onPreviousColorKeyDown($event, preview.onClick)\"></div>\n }\n <button monaButton look=\"ghost\" size=\"small\" [attr.aria-label]=\"messages().clearColor\" (click)=\"onClearClick()\">\n <svg lucideDropletOff [size]=\"16\" aria-hidden=\"true\"></svg>\n </button>\n</div>\n<div class=\"flex flex-col gap-2\">\n @if (showColorInputs()) {\n <div class=\"flex gap-2\">\n <div class=\"flex gap-1\">\n @for (input of colorInputs(); track input.key) {\n <mona-numeric-text-box\n [value]=\"input.value\"\n [minValue]=\"input.min\"\n [maxValue]=\"input.max\"\n [decimals]=\"0\"\n [spinners]=\"false\"\n [nullable]=\"false\"\n [rounded]=\"rounded()\"\n [size]=\"'small'\"\n class=\"w-18\"\n (valueChange)=\"input.change($event)\"\n (inputBlur)=\"onNumericInputBlur()\">\n <ng-template monaNumericTextBoxPrefixTemplate>\n <ng-container\n [ngTemplateOutlet]=\"numericInputPrefixTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: input.label }\"></ng-container>\n </ng-template>\n </mona-numeric-text-box>\n }\n </div>\n <div class=\"flex flex-1 items-center justify-end\">\n <button\n monaButton\n look=\"ghost\"\n [rounded]=\"rounded()\"\n size=\"small\"\n [attr.aria-label]=\"messages().switchColorMode\"\n (click)=\"onSwitchColorModeClick()\">\n <svg lucideChevronsUpDown [size]=\"16\" aria-hidden=\"true\"></svg>\n </button>\n </div>\n </div>\n }\n @if (showHexInput()) {\n <mona-text-box\n [rounded]=\"rounded()\"\n [value]=\"hex()\"\n (valueChange)=\"onHexChange($event)\"\n (inputBlur)=\"onHexInputBlur()\"\n (inputFocus)=\"onHexInputFocus()\"\n class=\"w-full\">\n <ng-template monaTextBoxPrefixTemplate>\n <ng-container\n [ngTemplateOutlet]=\"numericInputPrefixTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: 'HEX', classes: 'w-auto px-2' }\"></ng-container>\n </ng-template>\n <ng-template monaTextBoxSuffixTemplate>\n <mona-dropdown-button look=\"ghost\" [attr.aria-label]=\"messages().copyColor\" class=\"h-full\">\n <svg lucideCopy [size]=\"12\"></svg>\n <mona-dropdown-button-item\n [label]=\"messages().copyAsHex\"\n (menuClick)=\"onCopyColorSelect('hex')\"></mona-dropdown-button-item>\n <mona-dropdown-button-item\n [label]=\"messages().copyAsRgb\"\n (menuClick)=\"onCopyColorSelect('rgb')\"></mona-dropdown-button-item>\n </mona-dropdown-button>\n </ng-template>\n </mona-text-box>\n }\n @if (showButtons()) {\n <div class=\"flex items-center justify-end gap-2\">\n <button monaButton [rounded]=\"rounded()\" look=\"primary\" (click)=\"onApply()\">{{ messages().apply }}</button>\n <button monaButton [rounded]=\"rounded()\" (click)=\"onCancel()\">{{ messages().cancel }}</button>\n </div>\n }\n</div>\n\n<ng-template #numericInputPrefixTemplate let-text let-classes=\"classes\">\n <span\n [class]=\"classes\"\n class=\"inline-flex items-center justify-center select-none w-7.5 [background-color:var(--mona-input-addon-background,var(--color-secondary))] h-full text-foreground text-xs font-semibold border-e border-e-input-border\"\n >{{ text }}</span\n >\n</ng-template>\n", dependencies: [{ kind: "component", type: LucideDropletOff, selector: "svg[lucideDropletOff]" }, { kind: "component", type: LucideChevronsUpDown, selector: "svg[lucideChevronsUpDown]" }, { kind: "component", type: NumericTextBoxComponent, selector: "mona-numeric-text-box", inputs: ["formatter", "maxValue", "minValue", "step", "value"], outputs: ["valueChange"] }, { kind: "directive", type: NumericTextBoxPrefixTemplateDirective, selector: "ng-template[monaNumericTextBoxPrefixTemplate]" }, { 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: TextBoxComponent, selector: "mona-text-box", inputs: ["clearButton", "disabled", "inputAttributes", "inputClass", "inputStyle", "invalid", "placeholder", "readonly", "required", "rounded", "size", "touched", "type", "class", "value"], outputs: ["inputBlur", "inputFocus", "touch", "valueChange"] }, { kind: "directive", type: TextBoxPrefixTemplateDirective, selector: "ng-template[monaTextBoxPrefixTemplate]" }, { kind: "directive", type: TextBoxSuffixTemplateDirective, selector: "ng-template[monaTextBoxSuffixTemplate]" }, { kind: "component", type: SliderComponent, selector: "mona-slider", inputs: ["aria-label", "aria-labelledby", "value"], outputs: ["valueChange"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: DropdownButtonComponent, selector: "mona-dropdown-button", inputs: ["aria-label", "aria-labelledby", "iconOnly", "disabled", "loading", "look", "rounded", "size", "text", "class"], outputs: ["menuItemClick"] }, { kind: "component", type: DropdownButtonItemComponent, selector: "mona-dropdown-button-item" }, { kind: "component", type: LucideCopy, selector: "svg[lucideCopy]" }] }); }
791
793
  }
792
794
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: ColorGradientComponent, decorators: [{
793
795
  type: Component,
@@ -42,6 +42,8 @@ const colorPaletteItemThemeVariants = cva(`
42
42
  }
43
43
  });
44
44
 
45
+ // Generated from i18n/catalogs/en-US.messages.json by scripts/generate-locale-catalogs.ts. Do not edit.
46
+ // Edit the JSON file and run `npm run generate:locale-catalogs`.
45
47
  const COLOR_PALETTE_DEFAULT_MESSAGES = {
46
48
  color: (color) => `Color ${color}`,
47
49
  colorPalette: "Color palette"
@@ -25,6 +25,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImpor
25
25
  }]
26
26
  }] });
27
27
 
28
+ // Generated from i18n/catalogs/en-US.messages.json by scripts/generate-locale-catalogs.ts. Do not edit.
29
+ // Edit the JSON file and run `npm run generate:locale-catalogs`.
28
30
  const COLOR_PICKER_DEFAULT_MESSAGES = {
29
31
  clearColor: "Clear color",
30
32
  colorGradientPicker: "Color gradient picker",
@@ -16,6 +16,8 @@ import { Subject, fromEvent, filter, debounceTime, take, tap } from 'rxjs';
16
16
  import { twMerge } from 'tailwind-merge';
17
17
  import { cva } from 'class-variance-authority';
18
18
 
19
+ // Generated from i18n/catalogs/en-US.messages.json by scripts/generate-locale-catalogs.ts. Do not edit.
20
+ // Edit the JSON file and run `npm run generate:locale-catalogs`.
19
21
  const COMBO_BOX_DEFAULT_MESSAGES = {
20
22
  clear: "Clear"
21
23
  };