@haiilo/catalyst 0.7.2 → 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 (154) hide show
  1. package/dist/catalyst/catalyst.css +2 -2
  2. package/dist/catalyst/catalyst.esm.js +1 -1
  3. package/dist/catalyst/catalyst.esm.js.map +1 -1
  4. package/dist/catalyst/index.esm.js +1 -1
  5. package/dist/catalyst/p-2ad6f8d8.js +2 -0
  6. package/dist/catalyst/{p-7c06183a.js.map → p-2ad6f8d8.js.map} +1 -1
  7. package/dist/catalyst/p-659073b5.js +3 -0
  8. package/dist/catalyst/p-659073b5.js.map +1 -0
  9. package/dist/catalyst/{p-c7f3b231.js → p-6a8a4dc0.js} +2 -2
  10. package/dist/catalyst/{p-c7f3b231.js.map → p-6a8a4dc0.js.map} +0 -0
  11. package/dist/catalyst/{p-5616e2cd.js → p-6fce43dd.js} +2 -2
  12. package/dist/catalyst/{p-5616e2cd.js.map → p-6fce43dd.js.map} +0 -0
  13. package/dist/catalyst/p-89c24fb5.entry.js +12 -0
  14. package/dist/catalyst/p-89c24fb5.entry.js.map +1 -0
  15. package/dist/catalyst/{p-4254363e.entry.js → p-c0b4200d.entry.js} +2 -2
  16. package/dist/catalyst/{p-4254363e.entry.js.map → p-c0b4200d.entry.js.map} +0 -0
  17. package/dist/catalyst/{p-12486027.js → p-decdc6f1.js} +2 -2
  18. package/dist/catalyst/p-decdc6f1.js.map +1 -0
  19. package/dist/catalyst/p-f45bcfd6.js +2 -0
  20. package/dist/catalyst/p-f45bcfd6.js.map +1 -0
  21. package/dist/catalyst/scss/_mixins.scss +1 -1
  22. package/dist/catalyst/scss/_variables.scss +2 -0
  23. package/dist/catalyst/scss/{utils → core}/_toast.scss +2 -2
  24. package/dist/catalyst/scss/fonts/_fonts-mixins.scss +17 -0
  25. package/dist/catalyst/scss/fonts/_fonts.mixins.azeret.scss +1 -1
  26. package/dist/catalyst/scss/fonts/_fonts.mixins.dm.scss +6 -6
  27. package/dist/catalyst/scss/fonts/_fonts.mixins.lato.scss +36 -36
  28. package/dist/catalyst/scss/index.scss +23 -20
  29. package/dist/cjs/{app-globals-aa29ad72.js → app-globals-79765026.js} +3 -3
  30. package/dist/cjs/{app-globals-aa29ad72.js.map → app-globals-79765026.js.map} +1 -1
  31. package/dist/cjs/cat-alert_20.cjs.entry.js +12632 -0
  32. package/dist/cjs/cat-alert_20.cjs.entry.js.map +1 -0
  33. package/dist/cjs/{cat-form-hint-93a6936b.js → cat-form-hint-25fdfed5.js} +2 -2
  34. package/dist/cjs/{cat-form-hint-93a6936b.js.map → cat-form-hint-25fdfed5.js.map} +1 -1
  35. package/dist/cjs/{cat-icon-registry-49b11b51.js → cat-icon-registry-b015a65f.js} +37 -43
  36. package/dist/cjs/cat-icon-registry-b015a65f.js.map +1 -0
  37. package/dist/cjs/{cat-notification-156f4cf5.js → cat-notification-fe237312.js} +2 -2
  38. package/dist/cjs/{cat-notification-156f4cf5.js.map → cat-notification-fe237312.js.map} +1 -1
  39. package/dist/cjs/cat-textarea.cjs.entry.js +3 -3
  40. package/dist/cjs/catalyst.cjs.js +6 -6
  41. package/dist/cjs/catalyst.cjs.js.map +1 -1
  42. package/dist/cjs/{index-499bad41.js → index-936b777e.js} +10 -5
  43. package/dist/cjs/index-936b777e.js.map +1 -0
  44. package/dist/cjs/index.cjs.js +3 -3
  45. package/dist/cjs/loader.cjs.js +6 -6
  46. package/dist/cjs/loader.cjs.js.map +1 -1
  47. package/dist/cjs/{loglevel-c9b2d01f.js → loglevel-b5d158ad.js} +6 -1
  48. package/dist/cjs/loglevel-b5d158ad.js.map +1 -0
  49. package/dist/collection/collection-manifest.json +3 -1
  50. package/dist/collection/components/cat-avatar/cat-avatar.js +2 -2
  51. package/dist/collection/components/cat-avatar/cat-avatar.js.map +1 -1
  52. package/dist/collection/components/cat-i18n/cat-i18n-registry.js +35 -41
  53. package/dist/collection/components/cat-i18n/cat-i18n-registry.js.map +1 -1
  54. package/dist/collection/components/cat-input/cat-input.js +2 -2
  55. package/dist/collection/components/cat-input/cat-input.js.map +1 -1
  56. package/dist/collection/components/cat-modal/cat-modal.css +65 -0
  57. package/dist/collection/components/cat-modal/cat-modal.js +117 -0
  58. package/dist/collection/components/cat-modal/cat-modal.js.map +1 -0
  59. package/dist/collection/components/cat-select/cat-select.css +602 -0
  60. package/dist/collection/components/cat-select/cat-select.js +528 -0
  61. package/dist/collection/components/cat-select/cat-select.js.map +1 -0
  62. package/dist/collection/init.js +1 -1
  63. package/dist/collection/init.js.map +1 -1
  64. package/dist/collection/scss/_mixins.scss +1 -1
  65. package/dist/collection/scss/_variables.scss +2 -0
  66. package/dist/collection/scss/{utils → core}/_toast.scss +2 -2
  67. package/dist/collection/scss/fonts/_fonts-mixins.scss +17 -0
  68. package/dist/collection/scss/fonts/_fonts.mixins.azeret.scss +1 -1
  69. package/dist/collection/scss/fonts/_fonts.mixins.dm.scss +6 -6
  70. package/dist/collection/scss/fonts/_fonts.mixins.lato.scss +36 -36
  71. package/dist/collection/scss/index.scss +23 -20
  72. package/dist/components/cat-avatar.js +2 -2
  73. package/dist/components/cat-avatar.js.map +1 -1
  74. package/dist/components/cat-i18n-registry.js +35 -41
  75. package/dist/components/cat-i18n-registry.js.map +1 -1
  76. package/dist/components/cat-icon.js +1 -1
  77. package/dist/components/cat-icon2.js +56 -2
  78. package/dist/components/cat-icon2.js.map +1 -1
  79. package/dist/components/cat-input.js +2 -2
  80. package/dist/components/cat-input.js.map +1 -1
  81. package/dist/components/cat-menu.js +3 -742
  82. package/dist/components/cat-menu.js.map +1 -1
  83. package/dist/components/cat-modal.d.ts +11 -0
  84. package/dist/components/cat-modal.js +111 -0
  85. package/dist/components/cat-modal.js.map +1 -0
  86. package/dist/components/cat-select.d.ts +11 -0
  87. package/dist/components/cat-select.js +7790 -0
  88. package/dist/components/cat-select.js.map +1 -0
  89. package/dist/components/cat-toast-demo.js +549 -4
  90. package/dist/components/cat-toast-demo.js.map +1 -1
  91. package/dist/components/cat-tooltip.js +2 -1
  92. package/dist/components/cat-tooltip.js.map +1 -1
  93. package/dist/components/first-tabbable.js +1 -1068
  94. package/dist/components/first-tabbable.js.map +1 -1
  95. package/dist/components/floating-ui.dom.esm.js +1070 -0
  96. package/dist/components/floating-ui.dom.esm.js.map +1 -0
  97. package/dist/components/focus-trap.esm.js +746 -0
  98. package/dist/components/focus-trap.esm.js.map +1 -0
  99. package/dist/components/index.d.ts +21 -5
  100. package/dist/components/index.js +24 -4
  101. package/dist/components/index.js.map +1 -1
  102. package/dist/components/loglevel.js +5 -1
  103. package/dist/components/loglevel.js.map +1 -1
  104. package/dist/esm/{app-globals-cf55f7f5.js → app-globals-7d163b94.js} +3 -3
  105. package/dist/esm/{app-globals-cf55f7f5.js.map → app-globals-7d163b94.js.map} +1 -1
  106. package/dist/esm/cat-alert_20.entry.js +12609 -0
  107. package/dist/esm/cat-alert_20.entry.js.map +1 -0
  108. package/dist/esm/{cat-form-hint-dc443c7c.js → cat-form-hint-790d1e46.js} +2 -2
  109. package/dist/esm/{cat-form-hint-dc443c7c.js.map → cat-form-hint-790d1e46.js.map} +1 -1
  110. package/dist/esm/{cat-icon-registry-3ea75755.js → cat-icon-registry-dc1ef79a.js} +37 -43
  111. package/dist/esm/cat-icon-registry-dc1ef79a.js.map +1 -0
  112. package/dist/{components/cat-notification.js → esm/cat-notification-a9655c00.js} +2 -2
  113. package/dist/esm/{cat-notification-cd98c266.js.map → cat-notification-a9655c00.js.map} +1 -1
  114. package/dist/esm/cat-textarea.entry.js +3 -3
  115. package/dist/esm/catalyst.js +6 -6
  116. package/dist/esm/catalyst.js.map +1 -1
  117. package/dist/esm/{index-039e6f5f.js → index-41ceb7da.js} +10 -5
  118. package/dist/esm/index-41ceb7da.js.map +1 -0
  119. package/dist/esm/index.js +3 -3
  120. package/dist/esm/loader.js +6 -6
  121. package/dist/esm/loader.js.map +1 -1
  122. package/dist/esm/{loglevel-39a9e3f9.js → loglevel-c8b59c3a.js} +6 -2
  123. package/dist/{cjs/loglevel-c9b2d01f.js.map → esm/loglevel-c8b59c3a.js.map} +1 -1
  124. package/dist/esm/polyfills/css-shim.js +1 -1
  125. package/dist/types/components/cat-i18n/cat-i18n-registry.d.ts +9 -10
  126. package/dist/types/components/cat-modal/cat-modal.d.ts +20 -0
  127. package/dist/types/components/cat-select/cat-select.d.ts +84 -0
  128. package/dist/types/components.d.ts +184 -25
  129. package/package.json +11 -10
  130. package/dist/catalyst/p-12486027.js.map +0 -1
  131. package/dist/catalyst/p-12b96af6.js +0 -2
  132. package/dist/catalyst/p-12b96af6.js.map +0 -1
  133. package/dist/catalyst/p-2ec5c87a.js +0 -2
  134. package/dist/catalyst/p-2ec5c87a.js.map +0 -1
  135. package/dist/catalyst/p-7c06183a.js +0 -2
  136. package/dist/catalyst/p-dda85567.entry.js +0 -10
  137. package/dist/catalyst/p-dda85567.entry.js.map +0 -1
  138. package/dist/catalyst/scss/fonts/_fonts.mixins.scss +0 -3
  139. package/dist/catalyst/scss/fonts/_fonts.scss +0 -13
  140. package/dist/cjs/cat-alert_18.cjs.entry.js +0 -4831
  141. package/dist/cjs/cat-alert_18.cjs.entry.js.map +0 -1
  142. package/dist/cjs/cat-icon-registry-49b11b51.js.map +0 -1
  143. package/dist/cjs/index-499bad41.js.map +0 -1
  144. package/dist/collection/scss/fonts/_fonts.mixins.scss +0 -3
  145. package/dist/collection/scss/fonts/_fonts.scss +0 -13
  146. package/dist/components/cat-icon-registry.js +0 -59
  147. package/dist/components/cat-icon-registry.js.map +0 -1
  148. package/dist/components/cat-notification.js.map +0 -1
  149. package/dist/esm/cat-alert_18.entry.js +0 -4810
  150. package/dist/esm/cat-alert_18.entry.js.map +0 -1
  151. package/dist/esm/cat-icon-registry-3ea75755.js.map +0 -1
  152. package/dist/esm/cat-notification-cd98c266.js +0 -550
  153. package/dist/esm/index-039e6f5f.js.map +0 -1
  154. package/dist/esm/loglevel-39a9e3f9.js.map +0 -1
@@ -5,14 +5,14 @@
5
5
  @if list.index($weights, 400) {
6
6
  @font-face {
7
7
  font-family: 'DM Sans';
8
- src: url('#{$path}#{cat-token("asset.font.dmSans.woff2Regular")}') format('woff2');
8
+ src: url('#{$path}/#{cat-token("asset.font.dmSans.woff2Regular")}') format('woff2');
9
9
  font-style: normal;
10
10
  font-weight: 400;
11
11
  @content;
12
12
  }
13
13
  @font-face {
14
14
  font-family: 'DM Sans';
15
- src: url('#{$path}#{cat-token("asset.font.dmSans.woff2Italic")}') format('woff2');
15
+ src: url('#{$path}/#{cat-token("asset.font.dmSans.woff2Italic")}') format('woff2');
16
16
  font-style: italic;
17
17
  font-weight: 400;
18
18
  @content;
@@ -21,14 +21,14 @@
21
21
  @if list.index($weights, 500) {
22
22
  @font-face {
23
23
  font-family: 'DM Sans';
24
- src: url('#{$path}#{cat-token("asset.font.dmSans.woff2Medium")}') format('woff2');
24
+ src: url('#{$path}/#{cat-token("asset.font.dmSans.woff2Medium")}') format('woff2');
25
25
  font-style: normal;
26
26
  font-weight: 500;
27
27
  @content;
28
28
  }
29
29
  @font-face {
30
30
  font-family: 'DM Sans';
31
- src: url('#{$path}#{cat-token("asset.font.dmSans.woff2MediumItalic")}') format('woff2');
31
+ src: url('#{$path}/#{cat-token("asset.font.dmSans.woff2MediumItalic")}') format('woff2');
32
32
  font-style: italic;
33
33
  font-weight: 500;
34
34
  @content;
@@ -37,14 +37,14 @@
37
37
  @if list.index($weights, 700) {
38
38
  @font-face {
39
39
  font-family: 'DM Sans';
40
- src: url('#{$path}#{cat-token("asset.font.dmSans.woff2Bold")}') format('woff2');
40
+ src: url('#{$path}/#{cat-token("asset.font.dmSans.woff2Bold")}') format('woff2');
41
41
  font-style: normal;
42
42
  font-weight: 700;
43
43
  font-display: swap;
44
44
  }
45
45
  @font-face {
46
46
  font-family: 'DM Sans';
47
- src: url('#{$path}#{cat-token("asset.font.dmSans.woff2BoldItalic")}') format('woff2');
47
+ src: url('#{$path}/#{cat-token("asset.font.dmSans.woff2BoldItalic")}') format('woff2');
48
48
  font-style: italic;
49
49
  font-weight: 700;
50
50
  font-display: swap;
@@ -5,8 +5,8 @@
5
5
  @if list.index($weights, 100) {
6
6
  @font-face {
7
7
  font-family: Lato;
8
- src: url('#{$path}#{cat-token("asset.font.lato.woff2Hairline")}') format('woff2'),
9
- url('#{$path}#{cat-token("asset.font.lato.woffHairline")}') format('woff');
8
+ src: url('#{$path}/#{cat-token("asset.font.lato.woff2Hairline")}') format('woff2'),
9
+ url('#{$path}/#{cat-token("asset.font.lato.woffHairline")}') format('woff');
10
10
  font-style: normal;
11
11
  font-weight: 100;
12
12
  text-rendering: optimizeLegibility;
@@ -14,8 +14,8 @@
14
14
  }
15
15
  @font-face {
16
16
  font-family: Lato;
17
- src: url('#{$path}#{cat-token("asset.font.lato.woff2HairlineItalic")}') format('woff2'),
18
- url('#{$path}#{cat-token("asset.font.lato.woffHairlineItalic")}') format('woff');
17
+ src: url('#{$path}/#{cat-token("asset.font.lato.woff2HairlineItalic")}') format('woff2'),
18
+ url('#{$path}/#{cat-token("asset.font.lato.woffHairlineItalic")}') format('woff');
19
19
  font-style: italic;
20
20
  font-weight: 100;
21
21
  text-rendering: optimizeLegibility;
@@ -25,8 +25,8 @@
25
25
  @if list.index($weights, 200) {
26
26
  @font-face {
27
27
  font-family: Lato;
28
- src: url('#{$path}#{cat-token("asset.font.lato.woff2Thin")}') format('woff2'),
29
- url('#{$path}#{cat-token("asset.font.lato.woffThin")}') format('woff');
28
+ src: url('#{$path}/#{cat-token("asset.font.lato.woff2Thin")}') format('woff2'),
29
+ url('#{$path}/#{cat-token("asset.font.lato.woffThin")}') format('woff');
30
30
  font-style: normal;
31
31
  font-weight: 200;
32
32
  text-rendering: optimizeLegibility;
@@ -34,8 +34,8 @@
34
34
  }
35
35
  @font-face {
36
36
  font-family: Lato;
37
- src: url('#{$path}#{cat-token("asset.font.lato.woff2ThinItalic")}') format('woff2'),
38
- url('#{$path}#{cat-token("asset.font.lato.woffThinItalic")}') format('woff');
37
+ src: url('#{$path}/#{cat-token("asset.font.lato.woff2ThinItalic")}') format('woff2'),
38
+ url('#{$path}/#{cat-token("asset.font.lato.woffThinItalic")}') format('woff');
39
39
  font-style: italic;
40
40
  font-weight: 200;
41
41
  text-rendering: optimizeLegibility;
@@ -45,8 +45,8 @@
45
45
  @if list.index($weights, 300) {
46
46
  @font-face {
47
47
  font-family: Lato;
48
- src: url('#{$path}#{cat-token("asset.font.lato.woff2Light")}') format('woff2'),
49
- url('#{$path}#{cat-token("asset.font.lato.woffLight")}') format('woff');
48
+ src: url('#{$path}/#{cat-token("asset.font.lato.woff2Light")}') format('woff2'),
49
+ url('#{$path}/#{cat-token("asset.font.lato.woffLight")}') format('woff');
50
50
  font-style: normal;
51
51
  font-weight: 300;
52
52
  text-rendering: optimizeLegibility;
@@ -54,8 +54,8 @@
54
54
  }
55
55
  @font-face {
56
56
  font-family: Lato;
57
- src: url('#{$path}#{cat-token("asset.font.lato.woff2LightItalic")}') format('woff2'),
58
- url('#{$path}#{cat-token("asset.font.lato.woffLightItalic")}') format('woff');
57
+ src: url('#{$path}/#{cat-token("asset.font.lato.woff2LightItalic")}') format('woff2'),
58
+ url('#{$path}/#{cat-token("asset.font.lato.woffLightItalic")}') format('woff');
59
59
  font-style: italic;
60
60
  font-weight: 300;
61
61
  text-rendering: optimizeLegibility;
@@ -65,8 +65,8 @@
65
65
  @if list.index($weights, 400) {
66
66
  @font-face {
67
67
  font-family: Lato;
68
- src: url('#{$path}#{cat-token("asset.font.lato.woff2Regular")}') format('woff2'),
69
- url('#{$path}#{cat-token("asset.font.lato.woffRegular")}') format('woff');
68
+ src: url('#{$path}/#{cat-token("asset.font.lato.woff2Regular")}') format('woff2'),
69
+ url('#{$path}/#{cat-token("asset.font.lato.woffRegular")}') format('woff');
70
70
  font-style: normal;
71
71
  font-weight: 400;
72
72
  text-rendering: optimizeLegibility;
@@ -74,8 +74,8 @@
74
74
  }
75
75
  @font-face {
76
76
  font-family: Lato;
77
- src: url('#{$path}#{cat-token("asset.font.lato.woff2Italic")}') format('woff2'),
78
- url('#{$path}#{cat-token("asset.font.lato.woffItalic")}') format('woff');
77
+ src: url('#{$path}/#{cat-token("asset.font.lato.woff2Italic")}') format('woff2'),
78
+ url('#{$path}/#{cat-token("asset.font.lato.woffItalic")}') format('woff');
79
79
  font-style: italic;
80
80
  font-weight: 400;
81
81
  text-rendering: optimizeLegibility;
@@ -85,8 +85,8 @@
85
85
  @if list.index($weights, 500) {
86
86
  @font-face {
87
87
  font-family: Lato;
88
- src: url('#{$path}#{cat-token("asset.font.lato.woff2Medium")}') format('woff2'),
89
- url('#{$path}#{cat-token("asset.font.lato.woffMedium")}') format('woff');
88
+ src: url('#{$path}/#{cat-token("asset.font.lato.woff2Medium")}') format('woff2'),
89
+ url('#{$path}/#{cat-token("asset.font.lato.woffMedium")}') format('woff');
90
90
  font-style: normal;
91
91
  font-weight: 500;
92
92
  text-rendering: optimizeLegibility;
@@ -94,8 +94,8 @@
94
94
  }
95
95
  @font-face {
96
96
  font-family: Lato;
97
- src: url('#{$path}#{cat-token("asset.font.lato.woff2MediumItalic")}') format('woff2'),
98
- url('#{$path}#{cat-token("asset.font.lato.woffMediumItalic")}') format('woff');
97
+ src: url('#{$path}/#{cat-token("asset.font.lato.woff2MediumItalic")}') format('woff2'),
98
+ url('#{$path}/#{cat-token("asset.font.lato.woffMediumItalic")}') format('woff');
99
99
  font-style: italic;
100
100
  font-weight: 500;
101
101
  text-rendering: optimizeLegibility;
@@ -105,8 +105,8 @@
105
105
  @if list.index($weights, 600) {
106
106
  @font-face {
107
107
  font-family: Lato;
108
- src: url('#{$path}#{cat-token("asset.font.lato.woff2Semibold")}') format('woff2'),
109
- url('#{$path}#{cat-token("asset.font.lato.woffSemibold")}') format('woff');
108
+ src: url('#{$path}/#{cat-token("asset.font.lato.woff2Semibold")}') format('woff2'),
109
+ url('#{$path}/#{cat-token("asset.font.lato.woffSemibold")}') format('woff');
110
110
  font-style: normal;
111
111
  font-weight: 600;
112
112
  text-rendering: optimizeLegibility;
@@ -114,8 +114,8 @@
114
114
  }
115
115
  @font-face {
116
116
  font-family: Lato;
117
- src: url('#{$path}#{cat-token("asset.font.lato.woff2SemiboldItalic")}') format('woff2'),
118
- url('#{$path}#{cat-token("asset.font.lato.woffSemiboldItalic")}') format('woff');
117
+ src: url('#{$path}/#{cat-token("asset.font.lato.woff2SemiboldItalic")}') format('woff2'),
118
+ url('#{$path}/#{cat-token("asset.font.lato.woffSemiboldItalic")}') format('woff');
119
119
  font-style: italic;
120
120
  font-weight: 600;
121
121
  text-rendering: optimizeLegibility;
@@ -125,8 +125,8 @@
125
125
  @if list.index($weights, 700) {
126
126
  @font-face {
127
127
  font-family: Lato;
128
- src: url('#{$path}#{cat-token("asset.font.lato.woff2Bold")}') format('woff2'),
129
- url('#{$path}#{cat-token("asset.font.lato.woffBold")}') format('woff');
128
+ src: url('#{$path}/#{cat-token("asset.font.lato.woff2Bold")}') format('woff2'),
129
+ url('#{$path}/#{cat-token("asset.font.lato.woffBold")}') format('woff');
130
130
  font-style: normal;
131
131
  font-weight: 700;
132
132
  text-rendering: optimizeLegibility;
@@ -134,8 +134,8 @@
134
134
  }
135
135
  @font-face {
136
136
  font-family: Lato;
137
- src: url('#{$path}#{cat-token("asset.font.lato.woff2BoldItalic")}') format('woff2'),
138
- url('#{$path}#{cat-token("asset.font.lato.woffBoldItalic")}') format('woff');
137
+ src: url('#{$path}/#{cat-token("asset.font.lato.woff2BoldItalic")}') format('woff2'),
138
+ url('#{$path}/#{cat-token("asset.font.lato.woffBoldItalic")}') format('woff');
139
139
  font-style: italic;
140
140
  font-weight: 700;
141
141
  text-rendering: optimizeLegibility;
@@ -145,8 +145,8 @@
145
145
  @if list.index($weights, 800) {
146
146
  @font-face {
147
147
  font-family: Lato;
148
- src: url('#{$path}#{cat-token("asset.font.lato.woff2Heavy")}') format('woff2'),
149
- url('#{$path}#{cat-token("asset.font.lato.woffHeavy")}') format('woff');
148
+ src: url('#{$path}/#{cat-token("asset.font.lato.woff2Heavy")}') format('woff2'),
149
+ url('#{$path}/#{cat-token("asset.font.lato.woffHeavy")}') format('woff');
150
150
  font-style: normal;
151
151
  font-weight: 800;
152
152
  text-rendering: optimizeLegibility;
@@ -154,8 +154,8 @@
154
154
  }
155
155
  @font-face {
156
156
  font-family: Lato;
157
- src: url('#{$path}#{cat-token("asset.font.lato.woff2HeavyItalic")}') format('woff2'),
158
- url('#{$path}#{cat-token("asset.font.lato.woffHeavyItalic")}') format('woff');
157
+ src: url('#{$path}/#{cat-token("asset.font.lato.woff2HeavyItalic")}') format('woff2'),
158
+ url('#{$path}/#{cat-token("asset.font.lato.woffHeavyItalic")}') format('woff');
159
159
  font-style: italic;
160
160
  font-weight: 800;
161
161
  text-rendering: optimizeLegibility;
@@ -165,8 +165,8 @@
165
165
  @if list.index($weights, 900) {
166
166
  @font-face {
167
167
  font-family: Lato;
168
- src: url('#{$path}#{cat-token("asset.font.lato.woff2Black")}') format('woff2'),
169
- url('#{$path}#{cat-token("asset.font.lato.woffBlack")}') format('woff');
168
+ src: url('#{$path}/#{cat-token("asset.font.lato.woff2Black")}') format('woff2'),
169
+ url('#{$path}/#{cat-token("asset.font.lato.woffBlack")}') format('woff');
170
170
  font-style: normal;
171
171
  font-weight: 900;
172
172
  text-rendering: optimizeLegibility;
@@ -174,8 +174,8 @@
174
174
  }
175
175
  @font-face {
176
176
  font-family: Lato;
177
- src: url('#{$path}#{cat-token("asset.font.lato.woff2BlackItalic")}') format('woff2'),
178
- url('#{$path}#{cat-token("asset.font.lato.woffBlackItalic")}') format('woff');
177
+ src: url('#{$path}/#{cat-token("asset.font.lato.woff2BlackItalic")}') format('woff2'),
178
+ url('#{$path}/#{cat-token("asset.font.lato.woffBlackItalic")}') format('woff');
179
179
  font-style: italic;
180
180
  font-weight: 900;
181
181
  text-rendering: optimizeLegibility;
@@ -1,32 +1,35 @@
1
1
  // -- Reset
2
2
 
3
- @use '~sanitize.css/sanitize.css';
4
- @use '~sanitize.css/assets.css';
5
- @use '~sanitize.css/reduce-motion.css';
3
+ @import '~sanitize.css/sanitize.css';
4
+ @import '~sanitize.css/assets.css';
5
+ @import '~sanitize.css/reduce-motion.css';
6
6
 
7
7
  // -- Vendor
8
8
 
9
- @use '~toastify-js/src/toastify.css';
9
+ @import '~toastify-js/src/toastify.css';
10
10
 
11
- // -- Core
11
+ // -- Fonts
12
12
 
13
- @use 'core/base' as *;
14
- @use 'core/nav' as *;
15
- @use 'core/typography' as *;
13
+ @import 'fonts/fonts-mixins';
16
14
 
17
- // -- Fonts
15
+ // -- Core
18
16
 
19
- @use 'fonts/fonts' as *;
17
+ @import 'core/base';
18
+ @import 'core/nav';
19
+ @import 'core/toast';
20
+ @import 'core/typography';
20
21
 
21
22
  // -- Utils
22
23
 
23
- @use 'utils/color';
24
- @use 'utils/display';
25
- @use 'utils/elevation';
26
- @use 'utils/layout';
27
- @use 'utils/sizing';
28
- @use 'utils/spacing';
29
- @use 'utils/typography';
30
- @use 'utils/visibility';
31
- @use 'utils/ratio';
32
- @use 'utils/toast';
24
+ @import 'utils/color';
25
+ @import 'utils/display';
26
+ @import 'utils/elevation';
27
+ @import 'utils/layout';
28
+ @import 'utils/sizing';
29
+ @import 'utils/spacing';
30
+ @import 'utils/typography';
31
+ @import 'utils/visibility';
32
+ @import 'utils/ratio';
33
+
34
+ $cat-font-path: 'assets/fonts' !default;
35
+ @include cat-fonts($cat-font-path);
@@ -77,8 +77,8 @@ const CatAvatar$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
77
77
  };
78
78
  }
79
79
  getInitials() {
80
- var _a;
81
- return ((_a = this.initials) !== null && _a !== void 0 ? _a : this.label
80
+ var _a, _b;
81
+ return ((_a = this.initials) !== null && _a !== void 0 ? _a : ((_b = this.label) !== null && _b !== void 0 ? _b : '')
82
82
  .split(' ')
83
83
  .map(n => n[0])
84
84
  .join(''));
@@ -1 +1 @@
1
- {"file":"cat-avatar.js","mappings":";;;;AAAA;;;;;;AAMA,MAAM,OAAO,GAAG,CAAC,GAAW;EAC1B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM;IACjC,MAAM,KAAK,GAAG,IAAI,KAAK,EAAE,CAAC;IAC1B,KAAK,CAAC,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACxC,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACxC,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC;GACjB,CAAC,CAAC;AACL,CAAC;;ACbD,MAAM,YAAY,GAAG,o5CAAo5C;;MCY55CA,WAAS;EALtB;;;;;;;IAWU,SAAI,GAAkC,GAAG,CAAC;;;;IAK1C,UAAK,GAAG,KAAK,CAAC;;;;IAKd,UAAK,GAAG,EAAE,CAAC;GA4FpB;EAhEC,YAAY,CAAC,KAAc;IACzB,IAAI,KAAK,EAAE;MACT,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CACjB,OAAO,IAAI,CAAC,eAAe,GAAG,OAAO,KAAK,GAAG,CAAC,EAC9C,OAAO,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC,CACzC,CAAC;KACH;SAAM;MACL,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;KAClC;GACF;EAED,iBAAiB;IACf,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;GAC7B;EAED,mBAAmB;IACjB,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;MACfC,QAAG,CAAC,IAAI,CAAC,qCAAqC,EAAE,IAAI,CAAC,CAAC;KACvD;GACF;EAED,MAAM;IACJ,IAAI,IAAI,CAAC,GAAG,EAAE;MACZ,QACE,SAAG,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,gBAAc,IAAI,CAAC,KAAK,IAC1G,IAAI,CAAC,OAAO,CACX,EACJ;KACH;SAAM;MACL,QACE,YAAM,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,gBAAc,IAAI,CAAC,KAAK,IACrE,IAAI,CAAC,OAAO,CACR,EACP;KACH;GACF;EAED,IAAY,OAAO;IACjB,OAAO,CAAC,IAAI,CAAC,eAAe;QACxB,CAAC,IAAI,CAAC,IAAI,GAAG,gBAAU,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,GAAa,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAC1F,EAAE,CAAC;GACR;EAED,IAAY,QAAQ;IAClB,OAAO,EAAE,kBAAkB,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC;GACrD;EAED,IAAY,QAAQ;IAClB,OAAO;MACL,MAAM,EAAE,IAAI;MACZ,cAAc,EAAE,IAAI,CAAC,KAAK;MAC1B,CAAC,UAAU,IAAI,CAAC,IAAI,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;KAC5C,CAAC;GACH;EAEO,WAAW;;IACjB,QACE,MAAA,IAAI,CAAC,QAAQ,mCACb,IAAI,CAAC,KAAK;OACP,KAAK,CAAC,GAAG,CAAC;OACV,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;OACd,IAAI,CAAC,EAAE,CAAC,EACX;GACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","names":["CatAvatar","log"],"sources":["./src/utils/load-img.ts","./src/components/cat-avatar/cat-avatar.scss?tag=cat-avatar&encapsulation=shadow","./src/components/cat-avatar/cat-avatar.tsx"],"sourcesContent":["/**\n * Loads an image and wraps the result in a promise.\n *\n * @param src the image URL\n * @returns a promise\n */\nconst loadImg = (src: string): Promise<Event> => {\n return new Promise((resolve, reject) => {\n const image = new Image();\n image.addEventListener('load', resolve);\n image.addEventListener('error', reject);\n image.src = src;\n });\n};\n\nexport default loadImg;\n","@use 'variables' as *;\n@use 'mixins' as *;\n\n:host {\n /**\n * @prop --cat-avatar-bg: The background color of the avatar.\n * @prop --cat-avatar-fill: The text color of the avatar.\n * @prop --cat-avatar-size: The size of the avatar.\n * @prop --cat-avatar-font-size: The font size of the avatar.\n */\n display: inline-block;\n vertical-align: middle;\n @include cat-select(none);\n}\n\n:host([hidden]) {\n display: none;\n}\n\n.avatar {\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: cat-border-radius('m');\n text-decoration: inherit;\n color: var(--cat-avatar-fill, cat-token('color.ui.font.avatar'));\n background-color: var(--cat-avatar-bg, cat-token('color.ui.background.avatar'));\n background-size: cover;\n background-position: center;\n white-space: nowrap;\n overflow: hidden;\n\n &:focus-visible {\n outline: 2px solid cat-token('color.ui.border.focus');\n outline-offset: 1px;\n }\n}\n\n.avatar-round {\n border-radius: 50%;\n}\n\n// ----- size\n\n@mixin size($size, $fontSize) {\n .avatar-#{$size} {\n width: var(--cat-avatar-size, cat-size($size));\n height: var(--cat-avatar-size, cat-size($size));\n line-height: var(--cat-avatar-size, cat-size($size));\n font-size: var(--cat-avatar-font-size, cat-body-font-size($fontSize));\n }\n}\n\n@include size('xs', 'xs');\n@include size('s', 's');\n@include size('m', 'm');\n@include size('l', 'l');\n@include size('xl', 'xl');\n","import { Component, h, Prop, State, Watch } from '@stencil/core';\nimport log from 'loglevel';\nimport loadImg from '../../utils/load-img';\n\n/**\n * Avatars are used to represent a person or object.\n */\n@Component({\n tag: 'cat-avatar',\n styleUrl: 'cat-avatar.scss',\n shadow: true\n})\nexport class CatAvatar {\n @State() backgroundImage?: string;\n\n /**\n * The size of the avatar.\n */\n @Prop() size: 'xs' | 's' | 'm' | 'l' | 'xl' = 'm';\n\n /**\n * Use round avatar edges.\n */\n @Prop() round = false;\n\n /**\n * The label of the avatar.\n */\n @Prop() label = '';\n\n /**\n * Custom initials for the avatar.\n */\n @Prop() initials?: string;\n\n /**\n * An optional avatar image.\n */\n @Prop() src?: string;\n\n /**\n * An icon to be used instead of the initials.\n */\n @Prop() icon?: string;\n\n /**\n * A destination to link to, rendered in the href attribute of a link.\n */\n @Prop() url?: string;\n\n /**\n * Specifies where to open the linked document.\n */\n @Prop() urlTarget?: '_blank' | '_self';\n\n @Watch('src')\n onSrcChanged(value?: string): void {\n if (value) {\n loadImg(value).then(\n () => (this.backgroundImage = `url(${value})`),\n () => (this.backgroundImage = undefined)\n );\n } else {\n this.backgroundImage = undefined;\n }\n }\n\n componentWillLoad(): void {\n this.onSrcChanged(this.src);\n }\n\n componentWillRender(): void {\n if (!this.label) {\n log.warn('[A11y] Missing ARIA label on avatar', this);\n }\n }\n\n render() {\n if (this.url) {\n return (\n <a href={this.url} target={this.urlTarget} style={this.cssStyle} class={this.cssClass} aria-label={this.label}>\n {this.content}\n </a>\n );\n } else {\n return (\n <span style={this.cssStyle} class={this.cssClass} aria-label={this.label}>\n {this.content}\n </span>\n );\n }\n }\n\n private get content() {\n return !this.backgroundImage\n ? [this.icon ? <cat-icon icon={this.icon} size={this.size}></cat-icon> : this.getInitials()]\n : [];\n }\n\n private get cssStyle() {\n return { 'background-image': this.backgroundImage };\n }\n\n private get cssClass() {\n return {\n avatar: true,\n 'avatar-round': this.round,\n [`avatar-${this.size}`]: Boolean(this.size)\n };\n }\n\n private getInitials(): string {\n return (\n this.initials ??\n this.label\n .split(' ')\n .map(n => n[0])\n .join('')\n );\n }\n}\n"],"version":3}
1
+ {"file":"cat-avatar.js","mappings":";;;;AAAA;;;;;;AAMA,MAAM,OAAO,GAAG,CAAC,GAAW;EAC1B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM;IACjC,MAAM,KAAK,GAAG,IAAI,KAAK,EAAE,CAAC;IAC1B,KAAK,CAAC,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACxC,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACxC,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC;GACjB,CAAC,CAAC;AACL,CAAC;;ACbD,MAAM,YAAY,GAAG,o5CAAo5C;;MCY55CA,WAAS;EALtB;;;;;;;IAWU,SAAI,GAAkC,GAAG,CAAC;;;;IAK1C,UAAK,GAAG,KAAK,CAAC;;;;IAKd,UAAK,GAAG,EAAE,CAAC;GA4FpB;EAhEC,YAAY,CAAC,KAAc;IACzB,IAAI,KAAK,EAAE;MACT,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CACjB,OAAO,IAAI,CAAC,eAAe,GAAG,OAAO,KAAK,GAAG,CAAC,EAC9C,OAAO,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC,CACzC,CAAC;KACH;SAAM;MACL,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;KAClC;GACF;EAED,iBAAiB;IACf,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;GAC7B;EAED,mBAAmB;IACjB,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;MACfC,QAAG,CAAC,IAAI,CAAC,qCAAqC,EAAE,IAAI,CAAC,CAAC;KACvD;GACF;EAED,MAAM;IACJ,IAAI,IAAI,CAAC,GAAG,EAAE;MACZ,QACE,SAAG,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,gBAAc,IAAI,CAAC,KAAK,IAC1G,IAAI,CAAC,OAAO,CACX,EACJ;KACH;SAAM;MACL,QACE,YAAM,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,gBAAc,IAAI,CAAC,KAAK,IACrE,IAAI,CAAC,OAAO,CACR,EACP;KACH;GACF;EAED,IAAY,OAAO;IACjB,OAAO,CAAC,IAAI,CAAC,eAAe;QACxB,CAAC,IAAI,CAAC,IAAI,GAAG,gBAAU,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,GAAa,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAC1F,EAAE,CAAC;GACR;EAED,IAAY,QAAQ;IAClB,OAAO,EAAE,kBAAkB,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC;GACrD;EAED,IAAY,QAAQ;IAClB,OAAO;MACL,MAAM,EAAE,IAAI;MACZ,cAAc,EAAE,IAAI,CAAC,KAAK;MAC1B,CAAC,UAAU,IAAI,CAAC,IAAI,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;KAC5C,CAAC;GACH;EAEO,WAAW;;IACjB,QACE,MAAA,IAAI,CAAC,QAAQ,mCACb,CAAC,MAAA,IAAI,CAAC,KAAK,mCAAI,EAAE;OACd,KAAK,CAAC,GAAG,CAAC;OACV,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;OACd,IAAI,CAAC,EAAE,CAAC,EACX;GACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","names":["CatAvatar","log"],"sources":["./src/utils/load-img.ts","./src/components/cat-avatar/cat-avatar.scss?tag=cat-avatar&encapsulation=shadow","./src/components/cat-avatar/cat-avatar.tsx"],"sourcesContent":["/**\n * Loads an image and wraps the result in a promise.\n *\n * @param src the image URL\n * @returns a promise\n */\nconst loadImg = (src: string): Promise<Event> => {\n return new Promise((resolve, reject) => {\n const image = new Image();\n image.addEventListener('load', resolve);\n image.addEventListener('error', reject);\n image.src = src;\n });\n};\n\nexport default loadImg;\n","@use 'variables' as *;\n@use 'mixins' as *;\n\n:host {\n /**\n * @prop --cat-avatar-bg: The background color of the avatar.\n * @prop --cat-avatar-fill: The text color of the avatar.\n * @prop --cat-avatar-size: The size of the avatar.\n * @prop --cat-avatar-font-size: The font size of the avatar.\n */\n display: inline-block;\n vertical-align: middle;\n @include cat-select(none);\n}\n\n:host([hidden]) {\n display: none;\n}\n\n.avatar {\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: cat-border-radius('m');\n text-decoration: inherit;\n color: var(--cat-avatar-fill, cat-token('color.ui.font.avatar'));\n background-color: var(--cat-avatar-bg, cat-token('color.ui.background.avatar'));\n background-size: cover;\n background-position: center;\n white-space: nowrap;\n overflow: hidden;\n\n &:focus-visible {\n outline: 2px solid cat-token('color.ui.border.focus');\n outline-offset: 1px;\n }\n}\n\n.avatar-round {\n border-radius: 50%;\n}\n\n// ----- size\n\n@mixin size($size, $fontSize) {\n .avatar-#{$size} {\n width: var(--cat-avatar-size, cat-size($size));\n height: var(--cat-avatar-size, cat-size($size));\n line-height: var(--cat-avatar-size, cat-size($size));\n font-size: var(--cat-avatar-font-size, cat-body-font-size($fontSize));\n }\n}\n\n@include size('xs', 'xs');\n@include size('s', 's');\n@include size('m', 'm');\n@include size('l', 'l');\n@include size('xl', 'xl');\n","import { Component, h, Prop, State, Watch } from '@stencil/core';\nimport log from 'loglevel';\nimport loadImg from '../../utils/load-img';\n\n/**\n * Avatars are used to represent a person or object.\n */\n@Component({\n tag: 'cat-avatar',\n styleUrl: 'cat-avatar.scss',\n shadow: true\n})\nexport class CatAvatar {\n @State() backgroundImage?: string;\n\n /**\n * The size of the avatar.\n */\n @Prop() size: 'xs' | 's' | 'm' | 'l' | 'xl' = 'm';\n\n /**\n * Use round avatar edges.\n */\n @Prop() round = false;\n\n /**\n * The label of the avatar.\n */\n @Prop() label = '';\n\n /**\n * Custom initials for the avatar.\n */\n @Prop() initials?: string;\n\n /**\n * An optional avatar image.\n */\n @Prop() src?: string;\n\n /**\n * An icon to be used instead of the initials.\n */\n @Prop() icon?: string;\n\n /**\n * A destination to link to, rendered in the href attribute of a link.\n */\n @Prop() url?: string;\n\n /**\n * Specifies where to open the linked document.\n */\n @Prop() urlTarget?: '_blank' | '_self';\n\n @Watch('src')\n onSrcChanged(value?: string): void {\n if (value) {\n loadImg(value).then(\n () => (this.backgroundImage = `url(${value})`),\n () => (this.backgroundImage = undefined)\n );\n } else {\n this.backgroundImage = undefined;\n }\n }\n\n componentWillLoad(): void {\n this.onSrcChanged(this.src);\n }\n\n componentWillRender(): void {\n if (!this.label) {\n log.warn('[A11y] Missing ARIA label on avatar', this);\n }\n }\n\n render() {\n if (this.url) {\n return (\n <a href={this.url} target={this.urlTarget} style={this.cssStyle} class={this.cssClass} aria-label={this.label}>\n {this.content}\n </a>\n );\n } else {\n return (\n <span style={this.cssStyle} class={this.cssClass} aria-label={this.label}>\n {this.content}\n </span>\n );\n }\n }\n\n private get content() {\n return !this.backgroundImage\n ? [this.icon ? <cat-icon icon={this.icon} size={this.size}></cat-icon> : this.getInitials()]\n : [];\n }\n\n private get cssStyle() {\n return { 'background-image': this.backgroundImage };\n }\n\n private get cssClass() {\n return {\n avatar: true,\n 'avatar-round': this.round,\n [`avatar-${this.size}`]: Boolean(this.size)\n };\n }\n\n private getInitials(): string {\n return (\n this.initials ??\n (this.label ?? '')\n .split(' ')\n .map(n => n[0])\n .join('')\n );\n }\n}\n"],"version":3}
@@ -2,8 +2,8 @@ import { l as loglevel } from './loglevel.js';
2
2
 
3
3
  class CatI18nRegistry {
4
4
  constructor() {
5
- this.lang = 'en';
6
- this.messages = new Map();
5
+ this._locale = 'en';
6
+ this._dicts = new Map();
7
7
  // hide constructor
8
8
  }
9
9
  static getInstance() {
@@ -12,45 +12,39 @@ class CatI18nRegistry {
12
12
  }
13
13
  return CatI18nRegistry.instance;
14
14
  }
15
- getLanguage() {
16
- return this.lang;
17
- }
18
- setLanguage(lang) {
19
- this.lang = lang;
20
- }
21
- getMessage(key) {
22
- var _a;
23
- const message = (_a = this.messages.get(this.lang)) === null || _a === void 0 ? void 0 : _a.get(key);
24
- if (!message) {
25
- loglevel.error(`[CatI18nRegistry] Unknown message for lang ${this.lang}: ${key}`);
15
+ locale(locale) {
16
+ if (locale) {
17
+ this._locale = locale;
18
+ loglevel.info(`[CatI18nRegistry] Locale set to ${locale}`);
19
+ window.dispatchEvent(this.buildEvent('cat-i18n-locale', { locale }));
26
20
  }
27
- return message;
28
- }
29
- addMessage(lang, key, message) {
30
- this.getDict(lang).set(key, message);
31
- loglevel.info(`[CatI18nRegistry] Added message for lang ${lang}: ${key}`);
32
- window.dispatchEvent(this.buildEvent('cat-i18n-added', { lang, key }));
33
- return this;
21
+ return this._locale;
34
22
  }
35
- addMessages(lang, i18n) {
36
- const dict = this.getDict(lang);
23
+ register(locale, i18n) {
24
+ const dict = this.getDict(locale);
37
25
  Object.entries(i18n).forEach(([key, message]) => dict.set(key, message));
38
- loglevel.info(`[CatI18nRegistry] Added message for lang ${lang}: ${Object.keys(i18n).concat(', ')}`);
39
- window.dispatchEvent(this.buildEvent('cat-i18n-added', { lang, keys: Object.keys(i18n) }));
40
- return this;
26
+ loglevel.info(`[CatI18nRegistry] Registered messages for ${locale}`, i18n);
27
+ window.dispatchEvent(this.buildEvent('cat-i18n-register', { i18n }));
41
28
  }
42
- removeMessage(lang, key) {
43
- this.getDict(lang).delete(key);
44
- loglevel.info(`[CatI18nRegistry] Removed message for lang ${lang}: ${key}`);
45
- window.dispatchEvent(this.buildEvent('cat-i18n-removed', { lang, key }));
46
- return this;
29
+ clear(locale) {
30
+ if (locale) {
31
+ this.getDict(locale).clear();
32
+ loglevel.info(`[CatI18nRegistry] Cleared messages for ${locale}`);
33
+ window.dispatchEvent(this.buildEvent('cat-i18n-clear', { locale }));
34
+ }
35
+ else {
36
+ this._dicts.clear();
37
+ loglevel.info(`[CatI18nRegistry] Cleared messages`);
38
+ window.dispatchEvent(this.buildEvent('cat-i18n-clear'));
39
+ }
47
40
  }
48
- removeMessages(lang, keys) {
49
- const dict = this.getDict(lang);
50
- keys.forEach(key => dict.delete(key));
51
- loglevel.info(`[CatI18nRegistry] Removed messages for lang ${lang}: ${keys.concat(', ')}`);
52
- window.dispatchEvent(this.buildEvent('cat-i18n-added', { lang, keys }));
53
- return this;
41
+ t(key, params) {
42
+ var _a;
43
+ const message = (_a = this._dicts.get(this._locale)) === null || _a === void 0 ? void 0 : _a.get(key);
44
+ if (!message) {
45
+ loglevel.error(`[CatI18nRegistry] Unknown message for ${this._locale}: ${key}`);
46
+ }
47
+ return (message === null || message === void 0 ? void 0 : message.replace(/{{\s*([-a-zA-Z._]+)\s*}}/g, (_match, key) => { var _a; return `${(_a = params === null || params === void 0 ? void 0 : params[key]) !== null && _a !== void 0 ? _a : ''}`; })) || '';
54
48
  }
55
49
  buildEvent(name, detail) {
56
50
  return new CustomEvent(name, {
@@ -60,12 +54,12 @@ class CatI18nRegistry {
60
54
  });
61
55
  }
62
56
  getDict(lang) {
63
- let messages = this.messages.get(lang);
64
- if (!messages) {
65
- messages = new Map();
66
- this.messages.set(lang, messages);
57
+ let dict = this._dicts.get(lang);
58
+ if (!dict) {
59
+ dict = new Map();
60
+ this._dicts.set(lang, dict);
67
61
  }
68
- return messages;
62
+ return dict;
69
63
  }
70
64
  }
71
65
 
@@ -1 +1 @@
1
- {"file":"cat-i18n-registry.js","mappings":"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","names":["log"],"sources":["./src/components/cat-i18n/cat-i18n-registry.ts"],"sourcesContent":["import log from 'loglevel';\n\nexport class CatI18nRegistry {\n private static instance: CatI18nRegistry;\n\n private lang = 'en';\n private readonly messages: Map<string, Map<string, string>> = new Map();\n\n private constructor() {\n // hide constructor\n }\n\n static getInstance(): CatI18nRegistry {\n if (!CatI18nRegistry.instance) {\n CatI18nRegistry.instance = new CatI18nRegistry();\n }\n return CatI18nRegistry.instance;\n }\n\n getLanguage(): string {\n return this.lang;\n }\n\n setLanguage(lang: string): void {\n this.lang = lang;\n }\n\n getMessage(key: string): string | undefined {\n const message = this.messages.get(this.lang)?.get(key);\n if (!message) {\n log.error(`[CatI18nRegistry] Unknown message for lang ${this.lang}: ${key}`);\n }\n return message;\n }\n\n addMessage(lang: string, key: string, message: string): CatI18nRegistry {\n this.getDict(lang).set(key, message);\n log.info(`[CatI18nRegistry] Added message for lang ${lang}: ${key}`);\n window.dispatchEvent(this.buildEvent('cat-i18n-added', { lang, key }));\n return this;\n }\n\n addMessages(lang: string, i18n: { [key: string]: string }): CatI18nRegistry {\n const dict = this.getDict(lang);\n Object.entries(i18n).forEach(([key, message]) => dict.set(key, message));\n log.info(`[CatI18nRegistry] Added message for lang ${lang}: ${Object.keys(i18n).concat(', ')}`);\n window.dispatchEvent(this.buildEvent('cat-i18n-added', { lang, keys: Object.keys(i18n) }));\n return this;\n }\n\n removeMessage(lang: string, key: string): CatI18nRegistry {\n this.getDict(lang).delete(key);\n log.info(`[CatI18nRegistry] Removed message for lang ${lang}: ${key}`);\n window.dispatchEvent(this.buildEvent('cat-i18n-removed', { lang, key }));\n return this;\n }\n\n removeMessages(lang: string, keys: string[]): CatI18nRegistry {\n const dict = this.getDict(lang);\n keys.forEach(key => dict.delete(key));\n log.info(`[CatI18nRegistry] Removed messages for lang ${lang}: ${keys.concat(', ')}`);\n window.dispatchEvent(this.buildEvent('cat-i18n-added', { lang, keys }));\n return this;\n }\n\n private buildEvent<T>(name: string, detail?: T) {\n return new CustomEvent(name, {\n bubbles: true,\n composed: true,\n detail\n });\n }\n\n private getDict(lang: string) {\n let messages = this.messages.get(lang);\n if (!messages) {\n messages = new Map();\n this.messages.set(lang, messages);\n }\n return messages;\n }\n}\n"],"version":3}
1
+ {"file":"cat-i18n-registry.js","mappings":"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","names":["log"],"sources":["./src/components/cat-i18n/cat-i18n-registry.ts"],"sourcesContent":["import log from 'loglevel';\n\nexport class CatI18nRegistry {\n private static instance: CatI18nRegistry;\n\n private _locale = 'en';\n private readonly _dicts: Map<string, Map<string, string>> = new Map();\n\n private constructor() {\n // hide constructor\n }\n\n static getInstance(): CatI18nRegistry {\n if (!CatI18nRegistry.instance) {\n CatI18nRegistry.instance = new CatI18nRegistry();\n }\n return CatI18nRegistry.instance;\n }\n\n locale(locale?: string): string {\n if (locale) {\n this._locale = locale;\n log.info(`[CatI18nRegistry] Locale set to ${locale}`);\n window.dispatchEvent(this.buildEvent('cat-i18n-locale', { locale }));\n }\n return this._locale;\n }\n\n register(locale: string, i18n: { [key: string]: string }): void {\n const dict = this.getDict(locale);\n Object.entries(i18n).forEach(([key, message]) => dict.set(key, message));\n log.info(`[CatI18nRegistry] Registered messages for ${locale}`, i18n);\n window.dispatchEvent(this.buildEvent('cat-i18n-register', { i18n }));\n }\n\n clear(locale?: string): void {\n if (locale) {\n this.getDict(locale).clear();\n log.info(`[CatI18nRegistry] Cleared messages for ${locale}`);\n window.dispatchEvent(this.buildEvent('cat-i18n-clear', { locale }));\n } else {\n this._dicts.clear();\n log.info(`[CatI18nRegistry] Cleared messages`);\n window.dispatchEvent(this.buildEvent('cat-i18n-clear'));\n }\n }\n\n t(key: string, params?: { [key: string]: string | number }): string {\n const message = this._dicts.get(this._locale)?.get(key);\n if (!message) {\n log.error(`[CatI18nRegistry] Unknown message for ${this._locale}: ${key}`);\n }\n return message?.replace(/{{\\s*([-a-zA-Z._]+)\\s*}}/g, (_match, key) => `${params?.[key] ?? ''}`) || '';\n }\n\n private buildEvent<T>(name: string, detail?: T) {\n return new CustomEvent(name, {\n bubbles: true,\n composed: true,\n detail\n });\n }\n\n private getDict(lang: string) {\n let dict = this._dicts.get(lang);\n if (!dict) {\n dict = new Map();\n this._dicts.set(lang, dict);\n }\n return dict;\n }\n}\n"],"version":3}
@@ -1,4 +1,4 @@
1
- import { C as CatIcon$1, d as defineCustomElement$1 } from './cat-icon2.js';
1
+ import { a as CatIcon$1, d as defineCustomElement$1 } from './cat-icon2.js';
2
2
 
3
3
  const CatIcon = CatIcon$1;
4
4
  const defineCustomElement = defineCustomElement$1;
@@ -1,5 +1,59 @@
1
1
  import { proxyCustomElement, HTMLElement, h } from '@stencil/core/internal/client';
2
- import { C as CatIconRegistry } from './cat-icon-registry.js';
2
+ import { l as loglevel } from './loglevel.js';
3
+
4
+ class CatIconRegistry {
5
+ constructor() {
6
+ this.icons = new Map();
7
+ // hide constructor
8
+ }
9
+ static getInstance() {
10
+ if (!CatIconRegistry.instance) {
11
+ CatIconRegistry.instance = new CatIconRegistry();
12
+ }
13
+ return CatIconRegistry.instance;
14
+ }
15
+ getIcon(name, setName) {
16
+ const icon = this.icons.get(this.buildName(name, setName));
17
+ if (!icon) {
18
+ loglevel.error(`[CatIconRegistry] Unknown icon${setName ? ` in set ${setName}` : ''}: ${name}`);
19
+ }
20
+ return icon;
21
+ }
22
+ addIcon(name, data, setName) {
23
+ this.icons.set(this.buildName(name, setName), data);
24
+ loglevel.info(`[CatIconRegistry] Added icon${setName ? ` to set ${setName}` : ''}: ${name}`);
25
+ window.dispatchEvent(this.buildEvent('cat-icon-added', { name, setName }));
26
+ return this;
27
+ }
28
+ addIcons(icons, setName) {
29
+ Object.entries(icons).forEach(([name, data]) => this.icons.set(this.buildName(name, setName), data));
30
+ loglevel.info(`[CatIconRegistry] Added icons${setName ? ` to set ${setName}` : ''}: ${Object.keys(icons).concat(', ')}`);
31
+ window.dispatchEvent(this.buildEvent('cat-icons-added', { names: Object.keys(icons), setName }));
32
+ return this;
33
+ }
34
+ removeIcon(name, setName) {
35
+ this.icons.delete(this.buildName(name, setName));
36
+ loglevel.info(`[CatIconRegistry] Removed icon${setName ? ` from set ${setName}` : ''}: ${name}`);
37
+ window.dispatchEvent(this.buildEvent('cat-icon-removed', { name, setName }));
38
+ return this;
39
+ }
40
+ removeIcons(names, setName) {
41
+ names.forEach(name => this.icons.delete(this.buildName(name, setName)));
42
+ loglevel.info(`[CatIconRegistry] Removed icons${setName ? ` from set ${setName}` : ''}: ${names.concat(', ')}`);
43
+ window.dispatchEvent(this.buildEvent('cat-icons-removed', { names, setName }));
44
+ return this;
45
+ }
46
+ buildName(name, setName) {
47
+ return setName ? `${setName}:name` : name;
48
+ }
49
+ buildEvent(name, detail) {
50
+ return new CustomEvent(name, {
51
+ bubbles: true,
52
+ composed: true,
53
+ detail
54
+ });
55
+ }
56
+ }
3
57
 
4
58
  const catIconCss = ":host{display:inline-flex;vertical-align:middle;-webkit-user-select:none;-ms-user-select:none;user-select:none;}:host([hidden]){display:none}span{display:inline-flex}svg{fill:currentColor;stroke:none;transform-origin:center center;height:1em;width:calc(var(--cat-icon-ratio, 1) * 1em)}.icon-xs svg{font-size:0.75rem}.icon-s svg{font-size:1rem}.icon-m svg{font-size:1.25rem}.icon-l svg{font-size:1.5rem}.icon-xl svg{font-size:1.75rem}";
5
59
 
@@ -44,6 +98,6 @@ function defineCustomElement() {
44
98
  } });
45
99
  }
46
100
 
47
- export { CatIcon as C, defineCustomElement as d };
101
+ export { CatIconRegistry as C, CatIcon as a, defineCustomElement as d };
48
102
 
49
103
  //# sourceMappingURL=cat-icon2.js.map
@@ -1 +1 @@
1
- {"file":"cat-icon2.js","mappings":";;;AAAA,MAAM,UAAU,GAAG,mbAAmb;;MCczb,OAAO;EALpB;;;;IAMmB,iBAAY,GAAG,eAAe,CAAC,WAAW,EAAE,CAAC;;;;IAKtD,SAAI,GAAG,EAAE,CAAC;;;;IAKV,SAAI,GAA6C,GAAG,CAAC;GAsB9D;EAdC,MAAM;IACJ,QACE,YACE,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,gBACnC,IAAI,CAAC,SAAS,iBACb,IAAI,CAAC,SAAS,GAAG,IAAI,GAAG,MAAM,EAC3C,IAAI,EAAC,MAAM,EACX,KAAK,EAAE;QACL,IAAI,EAAE,IAAI;QACV,CAAC,QAAQ,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,KAAK,QAAQ;OAC9C,GACK,EACR;GACH;;;;;;;;;;;;;;;;;;;;;;;","names":[],"sources":["./src/components/cat-icon/cat-icon.scss?tag=cat-icon&encapsulation=shadow","./src/components/cat-icon/cat-icon.tsx"],"sourcesContent":["@use 'variables' as *;\n@use 'mixins' as *;\n\n:host {\n /**\n * @prop --cat-icon-ratio: The aspect ratio of the avatar.\n */\n display: inline-flex;\n vertical-align: middle;\n @include cat-select(none);\n}\n\n:host([hidden]) {\n display: none;\n}\n\nspan {\n display: inline-flex;\n}\n\nsvg {\n fill: currentColor;\n stroke: none;\n transform-origin: center center;\n height: 1em;\n width: calc(var(--cat-icon-ratio, 1) * 1em);\n}\n\n// ----- size\n\n@mixin size($size) {\n .icon-#{$size} svg {\n font-size: cat-size($size) * 0.5;\n }\n}\n\n@include size('xs');\n@include size('s');\n@include size('m');\n@include size('l');\n@include size('xl');\n","import { Component, h, Prop } from '@stencil/core';\nimport { CatIconRegistry } from './cat-icon-registry';\n\n/**\n * Icons are used to provide additional meaning or in places where text label\n * doesn't fit.\n *\n * @part icon - The span element wrapping the SVG icon.\n */\n@Component({\n tag: 'cat-icon',\n styleUrl: 'cat-icon.scss',\n shadow: true\n})\nexport class CatIcon {\n private readonly iconRegistry = CatIconRegistry.getInstance();\n\n /**\n * The name of the icon.\n */\n @Prop() icon = '';\n\n /**\n * The size of the icon.\n */\n @Prop() size: 'xs' | 's' | 'm' | 'l' | 'xl' | 'inline' = 'm';\n\n /**\n * Adds accessible label for the icon that is only shown for screen\n * readers. The `aria-hidden` attribute will be set if no label is present.\n */\n @Prop({ attribute: 'a11y-label' }) a11yLabel?: string;\n\n render() {\n return (\n <span\n innerHTML={this.iconRegistry.getIcon(this.icon)}\n aria-label={this.a11yLabel}\n aria-hidden={this.a11yLabel ? null : 'true'}\n part=\"icon\"\n class={{\n icon: true,\n [`icon-${this.size}`]: this.size !== 'inline'\n }}\n ></span>\n );\n }\n}\n"],"version":3}
1
+ {"file":"cat-icon2.js","mappings":"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","names":["log"],"sources":["./src/components/cat-icon/cat-icon-registry.ts","./src/components/cat-icon/cat-icon.scss?tag=cat-icon&encapsulation=shadow","./src/components/cat-icon/cat-icon.tsx"],"sourcesContent":["import log from 'loglevel';\n\nexport class CatIconRegistry {\n private static instance: CatIconRegistry;\n\n private readonly icons: Map<string, string> = new Map();\n\n private constructor() {\n // hide constructor\n }\n\n static getInstance(): CatIconRegistry {\n if (!CatIconRegistry.instance) {\n CatIconRegistry.instance = new CatIconRegistry();\n }\n return CatIconRegistry.instance;\n }\n\n getIcon(name: string, setName?: string): string | undefined {\n const icon = this.icons.get(this.buildName(name, setName));\n if (!icon) {\n log.error(`[CatIconRegistry] Unknown icon${setName ? ` in set ${setName}` : ''}: ${name}`);\n }\n return icon;\n }\n\n addIcon(name: string, data: string, setName?: string): CatIconRegistry {\n this.icons.set(this.buildName(name, setName), data);\n log.info(`[CatIconRegistry] Added icon${setName ? ` to set ${setName}` : ''}: ${name}`);\n window.dispatchEvent(this.buildEvent('cat-icon-added', { name, setName }));\n return this;\n }\n\n addIcons(icons: { [name: string]: string }, setName?: string): CatIconRegistry {\n Object.entries(icons).forEach(([name, data]) => this.icons.set(this.buildName(name, setName), data));\n log.info(`[CatIconRegistry] Added icons${setName ? ` to set ${setName}` : ''}: ${Object.keys(icons).concat(', ')}`);\n window.dispatchEvent(this.buildEvent('cat-icons-added', { names: Object.keys(icons), setName }));\n return this;\n }\n\n removeIcon(name: string, setName?: string): CatIconRegistry {\n this.icons.delete(this.buildName(name, setName));\n log.info(`[CatIconRegistry] Removed icon${setName ? ` from set ${setName}` : ''}: ${name}`);\n window.dispatchEvent(this.buildEvent('cat-icon-removed', { name, setName }));\n return this;\n }\n\n removeIcons(names: string[], setName?: string): CatIconRegistry {\n names.forEach(name => this.icons.delete(this.buildName(name, setName)));\n log.info(`[CatIconRegistry] Removed icons${setName ? ` from set ${setName}` : ''}: ${names.concat(', ')}`);\n window.dispatchEvent(this.buildEvent('cat-icons-removed', { names, setName }));\n return this;\n }\n\n private buildName(name: string, setName?: string) {\n return setName ? `${setName}:name` : name;\n }\n\n private buildEvent<T>(name: string, detail?: T) {\n return new CustomEvent(name, {\n bubbles: true,\n composed: true,\n detail\n });\n }\n}\n","@use 'variables' as *;\n@use 'mixins' as *;\n\n:host {\n /**\n * @prop --cat-icon-ratio: The aspect ratio of the avatar.\n */\n display: inline-flex;\n vertical-align: middle;\n @include cat-select(none);\n}\n\n:host([hidden]) {\n display: none;\n}\n\nspan {\n display: inline-flex;\n}\n\nsvg {\n fill: currentColor;\n stroke: none;\n transform-origin: center center;\n height: 1em;\n width: calc(var(--cat-icon-ratio, 1) * 1em);\n}\n\n// ----- size\n\n@mixin size($size) {\n .icon-#{$size} svg {\n font-size: cat-size($size) * 0.5;\n }\n}\n\n@include size('xs');\n@include size('s');\n@include size('m');\n@include size('l');\n@include size('xl');\n","import { Component, h, Prop } from '@stencil/core';\nimport { CatIconRegistry } from './cat-icon-registry';\n\n/**\n * Icons are used to provide additional meaning or in places where text label\n * doesn't fit.\n *\n * @part icon - The span element wrapping the SVG icon.\n */\n@Component({\n tag: 'cat-icon',\n styleUrl: 'cat-icon.scss',\n shadow: true\n})\nexport class CatIcon {\n private readonly iconRegistry = CatIconRegistry.getInstance();\n\n /**\n * The name of the icon.\n */\n @Prop() icon = '';\n\n /**\n * The size of the icon.\n */\n @Prop() size: 'xs' | 's' | 'm' | 'l' | 'xl' | 'inline' = 'm';\n\n /**\n * Adds accessible label for the icon that is only shown for screen\n * readers. The `aria-hidden` attribute will be set if no label is present.\n */\n @Prop({ attribute: 'a11y-label' }) a11yLabel?: string;\n\n render() {\n return (\n <span\n innerHTML={this.iconRegistry.getIcon(this.icon)}\n aria-label={this.a11yLabel}\n aria-hidden={this.a11yLabel ? null : 'true'}\n part=\"icon\"\n class={{\n icon: true,\n [`icon-${this.size}`]: this.size !== 'inline'\n }}\n ></span>\n );\n }\n}\n"],"version":3}
@@ -83,13 +83,13 @@ const CatInput$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
83
83
  this.value = '';
84
84
  }
85
85
  render() {
86
- return (h(Host, null, (this.hasSlottedLabel || this.label) && (h("label", { htmlFor: this.id, class: { hidden: this.labelHidden } }, h("span", { part: "label" }, (this.hasSlottedLabel && h("slot", { name: "label" })) || this.label, !this.required && (h("span", { class: "input-optional", "aria-hidden": "true" }, "(", this.i18n.getMessage('input.optional'), ")"))))), h("div", { class: {
86
+ return (h(Host, null, (this.hasSlottedLabel || this.label) && (h("label", { htmlFor: this.id, class: { hidden: this.labelHidden } }, h("span", { part: "label" }, (this.hasSlottedLabel && h("slot", { name: "label" })) || this.label, !this.required && (h("span", { class: "input-optional", "aria-hidden": "true" }, "(", this.i18n.t('input.optional'), ")"))))), h("div", { class: {
87
87
  'input-wrapper': true,
88
88
  'input-round': this.round,
89
89
  'input-disabled': this.disabled
90
90
  }, onClick: () => this.input.focus() }, this.textPrefix && (h("span", { class: "text-prefix", part: "prefix" }, this.textPrefix)), this.icon && !this.iconRight && h("cat-icon", { icon: this.icon, class: "icon-prefix", size: "l" }), h("div", { class: "input-inner-wrapper" }, h("input", { ref: el => (this.input = el), id: this.id, class: {
91
91
  'has-clearable': this.clearable && !this.disabled
92
- }, autocomplete: this.autoComplete, disabled: this.disabled, max: this.max, maxlength: this.maxLength, min: this.max, minlength: this.minLength, name: this.name, placeholder: this.placeholder, readonly: this.readonly, required: this.required, type: this.type, value: this.value, onInput: this.onInput.bind(this), onFocus: this.onFocus.bind(this), onBlur: this.onBlur.bind(this) }), this.clearable && !this.disabled && this.value && (h("cat-button", { class: "clearable", icon: "cross-circle-outlined", "icon-only": "true", size: "s", variant: "text", "a11y-label": this.i18n.getMessage('input.clear'), onClick: this.clear.bind(this) }))), this.icon && this.iconRight && h("cat-icon", { icon: this.icon, class: "icon-suffix", size: "l" }), this.textSuffix && (h("span", { class: "text-suffix", part: "suffix" }, this.textSuffix))), this.hintSection));
92
+ }, autocomplete: this.autoComplete, disabled: this.disabled, max: this.max, maxlength: this.maxLength, min: this.max, minlength: this.minLength, name: this.name, placeholder: this.placeholder, readonly: this.readonly, required: this.required, type: this.type, value: this.value, onInput: this.onInput.bind(this), onFocus: this.onFocus.bind(this), onBlur: this.onBlur.bind(this) }), this.clearable && !this.disabled && this.value && (h("cat-button", { class: "clearable", icon: "cross-circle-outlined", "icon-only": "true", size: "s", variant: "text", "a11y-label": this.i18n.t('input.clear'), onClick: this.clear.bind(this) }))), this.icon && this.iconRight && h("cat-icon", { icon: this.icon, class: "icon-suffix", size: "l" }), this.textSuffix && (h("span", { class: "text-suffix", part: "suffix" }, this.textSuffix))), this.hintSection));
93
93
  }
94
94
  get hintSection() {
95
95
  const hasSlottedHint = !!this.hostElement.querySelector('[slot="hint"]');