@haiilo/catalyst 0.15.2 → 1.0.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 (131) 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.cdn.js +7 -17
  5. package/dist/catalyst/index.esm.js +1 -1
  6. package/dist/catalyst/p-081aece8.entry.js +10 -0
  7. package/dist/catalyst/p-081aece8.entry.js.map +1 -0
  8. package/dist/catalyst/p-10b0d7a2.js +10 -0
  9. package/dist/catalyst/p-10b0d7a2.js.map +1 -0
  10. package/dist/catalyst/{p-a255bd64.js → p-f80e3399.js} +1 -1
  11. package/dist/catalyst/p-f80e3399.js.map +1 -0
  12. package/dist/catalyst/scss/_variables.scss +4 -13
  13. package/dist/catalyst/scss/core/_nav.scss +1 -1
  14. package/dist/catalyst/scss/core/_typography.scss +20 -11
  15. package/dist/catalyst/scss/index.scss +0 -52
  16. package/dist/cjs/cat-alert_23.cjs.entry.js +7534 -0
  17. package/dist/cjs/cat-alert_23.cjs.entry.js.map +1 -0
  18. package/dist/cjs/{cat-notification-6a438ad1.js → cat-notification-bcb9fb86.js} +14 -12
  19. package/dist/cjs/cat-notification-bcb9fb86.js.map +1 -0
  20. package/dist/cjs/catalyst.cjs.js +2 -2
  21. package/dist/cjs/catalyst.cjs.js.map +1 -1
  22. package/dist/cjs/{index-c7955116.js → index-8ab22379.js} +1 -1
  23. package/dist/cjs/index-8ab22379.js.map +1 -0
  24. package/dist/cjs/index.cjs.js +1 -1
  25. package/dist/cjs/loader.cjs.js +2 -2
  26. package/dist/cjs/loader.cjs.js.map +1 -1
  27. package/dist/collection/collection-manifest.json +1 -2
  28. package/dist/collection/components/cat-alert/cat-alert.css +12 -13
  29. package/dist/collection/components/cat-badge/cat-badge.css +7 -9
  30. package/dist/collection/components/cat-card/cat-card.css +1 -1
  31. package/dist/collection/components/cat-checkbox/cat-checkbox.css +15 -1
  32. package/dist/collection/components/cat-input/cat-input.css +12 -1
  33. package/dist/collection/components/cat-radio/cat-radio.css +12 -1
  34. package/dist/collection/components/cat-select/cat-select.css +121 -552
  35. package/dist/collection/components/cat-select/cat-select.js +534 -343
  36. package/dist/collection/components/cat-select/cat-select.js.map +1 -1
  37. package/dist/collection/components/{cat-select-remote-test/cat-select-remote-test.js → cat-select-demo/cat-select-demo.js} +71 -7
  38. package/dist/collection/components/cat-select-demo/cat-select-demo.js.map +1 -0
  39. package/dist/collection/components/cat-tabs/cat-tabs.css +1 -1
  40. package/dist/collection/components/cat-textarea/cat-textarea.css +5 -1
  41. package/dist/collection/components/cat-toggle/cat-toggle.css +16 -1
  42. package/dist/collection/index.cdn.js +7 -17
  43. package/dist/collection/index.js.map +1 -1
  44. package/dist/collection/scss/_variables.scss +4 -13
  45. package/dist/collection/scss/core/_nav.scss +1 -1
  46. package/dist/collection/scss/core/_typography.scss +20 -11
  47. package/dist/collection/scss/index.scss +0 -52
  48. package/dist/components/cat-alert.js +1 -1
  49. package/dist/components/cat-alert.js.map +1 -1
  50. package/dist/components/cat-avatar.js +1 -118
  51. package/dist/components/cat-avatar.js.map +1 -1
  52. package/dist/components/cat-avatar2.js +122 -0
  53. package/dist/components/cat-avatar2.js.map +1 -0
  54. package/dist/components/cat-badge.js +1 -1
  55. package/dist/components/cat-badge.js.map +1 -1
  56. package/dist/components/cat-button2.js.map +1 -1
  57. package/dist/components/cat-card.js +1 -1
  58. package/dist/components/cat-card.js.map +1 -1
  59. package/dist/components/cat-checkbox2.js +1 -1
  60. package/dist/components/cat-checkbox2.js.map +1 -1
  61. package/dist/components/cat-input.js +1 -1
  62. package/dist/components/cat-input.js.map +1 -1
  63. package/dist/components/cat-modal.js.map +1 -1
  64. package/dist/components/cat-radio.js +1 -1
  65. package/dist/components/cat-radio.js.map +1 -1
  66. package/dist/components/cat-scrollable2.js.map +1 -1
  67. package/dist/components/{cat-select-remote.d.ts → cat-select-demo.d.ts} +4 -4
  68. package/dist/components/{cat-select-remote-test.js → cat-select-demo.js} +81 -13
  69. package/dist/components/cat-select-demo.js.map +1 -0
  70. package/dist/components/cat-select.js +1 -7864
  71. package/dist/components/cat-select.js.map +1 -1
  72. package/dist/components/{cat-select-remote2.js → cat-select2.js} +26 -19
  73. package/dist/components/cat-select2.js.map +1 -0
  74. package/dist/components/cat-tabs.js +1 -1
  75. package/dist/components/cat-tabs.js.map +1 -1
  76. package/dist/components/cat-textarea.js +1 -1
  77. package/dist/components/cat-textarea.js.map +1 -1
  78. package/dist/components/cat-toast-demo.js +13 -5
  79. package/dist/components/cat-toast-demo.js.map +1 -1
  80. package/dist/components/cat-toggle.js +1 -1
  81. package/dist/components/cat-toggle.js.map +1 -1
  82. package/dist/components/first-tabbable.js +110 -12
  83. package/dist/components/first-tabbable.js.map +1 -1
  84. package/dist/components/focus-trap.esm.js +27 -10
  85. package/dist/components/focus-trap.esm.js.map +1 -1
  86. package/dist/components/index.d.ts +1 -2
  87. package/dist/components/index.js +1 -2
  88. package/dist/components/index.js.map +1 -1
  89. package/dist/components/loglevel.js +1 -5
  90. package/dist/components/loglevel.js.map +1 -1
  91. package/dist/esm/cat-alert_23.entry.js +7508 -0
  92. package/dist/esm/cat-alert_23.entry.js.map +1 -0
  93. package/dist/esm/{cat-notification-5b6a2cd9.js → cat-notification-8bcf6fa2.js} +15 -11
  94. package/dist/esm/cat-notification-8bcf6fa2.js.map +1 -0
  95. package/dist/esm/catalyst.js +2 -2
  96. package/dist/esm/catalyst.js.map +1 -1
  97. package/dist/esm/{index-17d2bcf3.js → index-df195301.js} +1 -1
  98. package/dist/esm/index-df195301.js.map +1 -0
  99. package/dist/esm/index.js +1 -1
  100. package/dist/esm/loader.js +2 -2
  101. package/dist/esm/loader.js.map +1 -1
  102. package/dist/types/components/{cat-select-remote → cat-select}/autosize.d.ts +0 -0
  103. package/dist/types/components/cat-select/cat-select.d.ts +116 -58
  104. package/dist/types/components/cat-select-demo/cat-select-demo.d.ts +8 -0
  105. package/dist/types/components.d.ts +16 -138
  106. package/dist/types/index.d.ts +1 -4
  107. package/package.json +9 -11
  108. package/dist/catalyst/p-7fff102c.entry.js +0 -12
  109. package/dist/catalyst/p-7fff102c.entry.js.map +0 -1
  110. package/dist/catalyst/p-933b6a7a.js +0 -10
  111. package/dist/catalyst/p-933b6a7a.js.map +0 -1
  112. package/dist/catalyst/p-a255bd64.js.map +0 -1
  113. package/dist/cjs/cat-alert_24.cjs.entry.js +0 -15171
  114. package/dist/cjs/cat-alert_24.cjs.entry.js.map +0 -1
  115. package/dist/cjs/cat-notification-6a438ad1.js.map +0 -1
  116. package/dist/cjs/index-c7955116.js.map +0 -1
  117. package/dist/collection/components/cat-select-remote/cat-select-remote.css +0 -210
  118. package/dist/collection/components/cat-select-remote/cat-select-remote.js +0 -818
  119. package/dist/collection/components/cat-select-remote/cat-select-remote.js.map +0 -1
  120. package/dist/collection/components/cat-select-remote-test/cat-select-remote-test.js.map +0 -1
  121. package/dist/components/cat-select-remote-test.d.ts +0 -11
  122. package/dist/components/cat-select-remote-test.js.map +0 -1
  123. package/dist/components/cat-select-remote.js +0 -8
  124. package/dist/components/cat-select-remote.js.map +0 -1
  125. package/dist/components/cat-select-remote2.js.map +0 -1
  126. package/dist/esm/cat-alert_24.entry.js +0 -15144
  127. package/dist/esm/cat-alert_24.entry.js.map +0 -1
  128. package/dist/esm/cat-notification-5b6a2cd9.js.map +0 -1
  129. package/dist/esm/index-17d2bcf3.js.map +0 -1
  130. package/dist/types/components/cat-select-remote/cat-select-remote.d.ts +0 -164
  131. package/dist/types/components/cat-select-remote-test/cat-select-remote-test.d.ts +0 -6
@@ -13,9 +13,12 @@ h6,
13
13
  .cat-h4,
14
14
  .cat-h5,
15
15
  .cat-h6 {
16
+ font-weight: cat-token('font.weight.head');
17
+ }
18
+
19
+ :where(h1, h2, h3, h4, h5, h6, .cat-h1, .cat-h2, .cat-h3, .cat-h4, .cat-h5, .cat-h6) {
16
20
  margin-top: 0;
17
21
  margin-bottom: $cat-head-margin-bottom;
18
- font-weight: cat-token('font.weight.head');
19
22
  }
20
23
 
21
24
  // -- head styles
@@ -40,7 +43,7 @@ h6,
40
43
  }
41
44
  }
42
45
 
43
- p {
46
+ :where(p) {
44
47
  margin-top: 0;
45
48
  margin-bottom: $cat-body-margin-bottom;
46
49
  }
@@ -122,9 +125,6 @@ ul {
122
125
  ol,
123
126
  ul,
124
127
  dl {
125
- margin-top: 0;
126
- margin-bottom: 1rem;
127
-
128
128
  ol,
129
129
  ul,
130
130
  dl {
@@ -132,6 +132,11 @@ dl {
132
132
  }
133
133
  }
134
134
 
135
+ :where(ol, ul, dl) {
136
+ margin-top: 0;
137
+ margin-bottom: $cat-body-margin-bottom;
138
+ }
139
+
135
140
  nav ol,
136
141
  nav ul,
137
142
  ol.cat-plain,
@@ -159,19 +164,16 @@ dd {
159
164
  // ----- blockquotes & figures
160
165
 
161
166
  blockquote {
162
- margin: 0 0 $cat-body-margin-bottom;
163
167
  font-style: italic;
164
168
  @include cat-body('l');
165
169
  color: cat-token('color.ui.font.quote');
166
170
 
167
171
  > :last-child {
168
- margin-bottom: 0;
172
+ margin-bottom: 0 !important;
169
173
  }
170
174
  }
171
175
 
172
176
  figure {
173
- margin: 0 0 $cat-body-margin-bottom;
174
-
175
177
  figcaption {
176
178
  margin-top: -$cat-body-margin-bottom * 0.5;
177
179
  margin-bottom: 0;
@@ -184,6 +186,10 @@ figure {
184
186
  }
185
187
  }
186
188
 
189
+ :where(blockquote, figure) {
190
+ margin: 0 0 $cat-body-margin-bottom;
191
+ }
192
+
187
193
  // ----- code
188
194
 
189
195
  code,
@@ -195,8 +201,6 @@ pre {
195
201
  }
196
202
 
197
203
  pre {
198
- margin-top: 0;
199
- margin-bottom: $cat-body-margin-bottom;
200
204
  overflow: auto;
201
205
 
202
206
  code {
@@ -211,6 +215,11 @@ pre {
211
215
  }
212
216
  }
213
217
 
218
+ :where(pre) {
219
+ margin-top: 0;
220
+ margin-bottom: $cat-body-margin-bottom;
221
+ }
222
+
214
223
  kbd,
215
224
  code {
216
225
  margin: 0 0.125rem;
@@ -29,55 +29,3 @@
29
29
  // -- Includes
30
30
  $cat-font-path: 'assets/fonts' !default;
31
31
  @include cat-fonts($cat-font-path);
32
-
33
- // -- Styles
34
-
35
- .wrapper {
36
- width: 48rem;
37
- margin: 8rem auto;
38
- display: flex;
39
- flex-direction: row-reverse;
40
- gap: 8rem;
41
- }
42
-
43
- .content {
44
- flex: 3 0 0;
45
- min-width: 0;
46
- }
47
-
48
- #nav {
49
- align-self: flex-start;
50
- position: sticky;
51
- top: 8rem;
52
- flex: 1 0 0;
53
- min-width: 0;
54
-
55
- ul {
56
- display: flex;
57
- flex-direction: column;
58
- gap: 0.5rem;
59
- }
60
-
61
- .active {
62
- font-weight: bold;
63
- }
64
- }
65
-
66
- section {
67
- flex: 0 1 auto;
68
- padding: 2rem 0;
69
-
70
- &:not(:last-of-type) {
71
- border-bottom: 1px solid rgba(0, 0, 0, 10%);
72
- }
73
-
74
- > h2:not(:first-child),
75
- > h3:not(:first-child) {
76
- margin-top: 2rem;
77
- }
78
-
79
- > h2:not(:last-child),
80
- > h3:not(:last-child) {
81
- margin-bottom: 1rem;
82
- }
83
- }
@@ -1,7 +1,7 @@
1
1
  import { proxyCustomElement, HTMLElement, h, Host } from '@stencil/core/internal/client';
2
2
  import { d as defineCustomElement$2 } from './cat-icon2.js';
3
3
 
4
- const catAlertCss = ":host{display:block;margin-bottom:1rem}:host(:focus-visible){outline:2px solid rgb(var(--cat-border-color-focus, 0, 113, 255));outline-offset:1px}:host([hidden]){display:none}.alert{font:inherit;background-color:rgba(var(--bg), 0.1);border-radius:0.5rem;padding:1.25rem;display:flex;flex-direction:row;gap:0.5rem}.content{align-self:center}::slotted(:last-child){margin-bottom:0 !important}.alert-primary{--bg:var(--cat-primary-bg, 32, 127, 138)}.alert-primary cat-icon{color:#207f8a}.alert-secondary{--bg:105, 118, 135}.alert-secondary cat-icon{color:#697687}.alert-success{--bg:0, 132, 88}.alert-success cat-icon{color:#008458}.alert-warning{--bg:255, 206, 128}.alert-warning cat-icon{color:#ebb663}.alert-danger{--bg:217, 52, 13}.alert-danger cat-icon{color:#d9340d}";
4
+ const catAlertCss = ":host{display:block;border-radius:0.5rem;margin-bottom:1rem}:host([hidden]){display:none}:host(:focus-visible){outline:2px solid rgb(var(--cat-border-color-focus, 0, 113, 255));outline-offset:1px}.alert{font:inherit;display:flex;gap:0.5rem;padding:1.25rem;border-radius:0.5rem}.content{align-self:center}::slotted(:last-child){margin-bottom:0 !important}.alert-primary{background-color:rgba(var(--cat-primary-bg, 32, 127, 138), 0.1)}.alert-primary cat-icon{color:#207f8a}.alert-secondary{background-color:rgba(105, 118, 135, 0.1)}.alert-secondary cat-icon{color:#697687}.alert-success{background-color:rgba(0, 132, 88, 0.1)}.alert-success cat-icon{color:#008458}.alert-warning{background-color:rgba(255, 206, 128, 0.1)}.alert-warning cat-icon{color:#ebb663}.alert-danger{background-color:rgba(217, 52, 13, 0.1)}.alert-danger cat-icon{color:#d9340d}";
5
5
 
6
6
  const CatAlert$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
7
7
  constructor() {
@@ -1 +1 @@
1
- {"file":"cat-alert.js","mappings":";;;AAAA,MAAM,WAAW,GAAG,mwBAAmwB;;MCa1wBA,UAAQ;EALrB;;;;IAMmB,YAAO,GAAwB,IAAI,GAAG,CAAC;MACtD,CAAC,SAAS,EAAE,oBAAoB,CAAC;MACjC,CAAC,WAAW,EAAE,cAAc,CAAC;MAC7B,CAAC,SAAS,EAAE,qBAAqB,CAAC;MAClC,CAAC,SAAS,EAAE,eAAe,CAAC;MAC5B,CAAC,QAAQ,EAAE,qBAAqB,CAAC;KAClC,CAAC,CAAC;;;;IAKK,UAAK,GAA+D,SAAS,CAAC;;;;IAU9E,WAAM,GAAG,KAAK,CAAC;GA8BxB;EA5BC,MAAM;IACJ,QACE,EAAC,IAAI,IAAC,QAAQ,EAAC,GAAG,EAAC,IAAI,EAAE,IAAI,CAAC,IAAI,IAChC,WACE,IAAI,EAAC,OAAO,EACZ,KAAK,EAAE;QACL,KAAK,EAAE,IAAI;QACX,CAAC,SAAS,IAAI,CAAC,KAAK,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;OAC7C,IAEA,CAAC,IAAI,CAAC,MAAM,IAAI,gBAAU,IAAI,EAAC,GAAG,EAAC,IAAI,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAa,EAC3G,WAAK,KAAK,EAAC,SAAS,IAClB,eAAa,CACT,CACF,CACD,EACP;GACH;EAED,IAAY,IAAI;IACd,QAAQ,IAAI,CAAC,KAAK;MAChB,KAAK,QAAQ,CAAC;MACd,KAAK,SAAS;QACZ,OAAO,OAAO,CAAC;MACjB;QACE,OAAO,QAAQ,CAAC;KACnB;GACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","names":["CatAlert"],"sources":["./src/components/cat-alert/cat-alert.scss?tag=cat-alert&encapsulation=shadow","./src/components/cat-alert/cat-alert.tsx"],"sourcesContent":["@use 'variables' as *;\n@use 'mixins' as *;\n\n:host {\n display: block;\n margin-bottom: $cat-body-margin-bottom;\n}\n\n:host(:focus-visible) {\n outline: 2px solid cat-token('color.ui.border.focus');\n outline-offset: 1px;\n}\n\n:host([hidden]) {\n display: none;\n}\n\n.alert {\n font: inherit;\n background-color: cat-token-wrap(var(--bg), $alpha: 0.1);\n border-radius: cat-border-radius('l');\n padding: 1.25rem;\n display: flex;\n flex-direction: row;\n gap: 0.5rem;\n}\n\n.content {\n align-self: center;\n}\n\n::slotted(:last-child) {\n margin-bottom: 0 !important;\n}\n\n// ----- theme\n\n@mixin theme($theme) {\n .alert-#{$theme} {\n --bg: #{cat-token('color.theme.#{$theme}.bg', $wrap: false)};\n\n cat-icon {\n color: cat-token('color.ui.font.alert.#{$theme}');\n }\n }\n}\n\n@include theme('primary');\n@include theme('secondary');\n@include theme('success');\n@include theme('warning');\n@include theme('danger');\n","import { Component, h, Host, Prop } from '@stencil/core';\n\n/**\n * Informs user about important changes or conditions in the interface. Use this\n * component if you need to capture user’s attention in a prominent way.\n *\n * @part alert - The alert element.\n */\n@Component({\n tag: 'cat-alert',\n styleUrl: 'cat-alert.scss',\n shadow: true\n})\nexport class CatAlert {\n private readonly mapIcon: Map<string, string> = new Map([\n ['primary', 'star-circle-filled'],\n ['secondary', 'clock-filled'],\n ['success', 'check-circle-filled'],\n ['warning', 'danger-filled'],\n ['danger', 'cross-circle-filled']\n ]);\n\n /**\n * The color palette of the alert.\n */\n @Prop() color: 'primary' | 'secondary' | 'danger' | 'success' | 'warning' = 'primary';\n\n /**\n * The name of an icon to be displayed in the alert.\n */\n @Prop() icon?: string;\n\n /**\n * Whether the icon of the alert is deactivated.\n */\n @Prop() noIcon = false;\n\n render() {\n return (\n <Host tabindex=\"0\" role={this.role}>\n <div\n part=\"alert\"\n class={{\n alert: true,\n [`alert-${this.color}`]: Boolean(this.color)\n }}\n >\n {!this.noIcon && <cat-icon size=\"l\" icon={this.icon ? this.icon : this.mapIcon.get(this.color)}></cat-icon>}\n <div class=\"content\">\n <slot></slot>\n </div>\n </div>\n </Host>\n );\n }\n\n private get role() {\n switch (this.color) {\n case 'danger':\n case 'warning':\n return 'alert';\n default:\n return 'status';\n }\n }\n}\n"],"version":3}
1
+ {"file":"cat-alert.js","mappings":";;;AAAA,MAAM,WAAW,GAAG,k1BAAk1B;;MCaz1BA,UAAQ;EALrB;;;;IAMmB,YAAO,GAAwB,IAAI,GAAG,CAAC;MACtD,CAAC,SAAS,EAAE,oBAAoB,CAAC;MACjC,CAAC,WAAW,EAAE,cAAc,CAAC;MAC7B,CAAC,SAAS,EAAE,qBAAqB,CAAC;MAClC,CAAC,SAAS,EAAE,eAAe,CAAC;MAC5B,CAAC,QAAQ,EAAE,qBAAqB,CAAC;KAClC,CAAC,CAAC;;;;IAKK,UAAK,GAA+D,SAAS,CAAC;;;;IAU9E,WAAM,GAAG,KAAK,CAAC;GA8BxB;EA5BC,MAAM;IACJ,QACE,EAAC,IAAI,IAAC,QAAQ,EAAC,GAAG,EAAC,IAAI,EAAE,IAAI,CAAC,IAAI,IAChC,WACE,IAAI,EAAC,OAAO,EACZ,KAAK,EAAE;QACL,KAAK,EAAE,IAAI;QACX,CAAC,SAAS,IAAI,CAAC,KAAK,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;OAC7C,IAEA,CAAC,IAAI,CAAC,MAAM,IAAI,gBAAU,IAAI,EAAC,GAAG,EAAC,IAAI,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAa,EAC3G,WAAK,KAAK,EAAC,SAAS,IAClB,eAAa,CACT,CACF,CACD,EACP;GACH;EAED,IAAY,IAAI;IACd,QAAQ,IAAI,CAAC,KAAK;MAChB,KAAK,QAAQ,CAAC;MACd,KAAK,SAAS;QACZ,OAAO,OAAO,CAAC;MACjB;QACE,OAAO,QAAQ,CAAC;KACnB;GACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","names":["CatAlert"],"sources":["./src/components/cat-alert/cat-alert.scss?tag=cat-alert&encapsulation=shadow","./src/components/cat-alert/cat-alert.tsx"],"sourcesContent":["@use 'variables' as *;\n@use 'mixins' as *;\n@use 'sass:map';\n\n// -----\n\n$-background-colors: (\n 'primary': cat-token('color.theme.primary.bg', 0.1),\n 'secondary': cat-token('color.theme.secondary.bg', 0.1),\n 'success': cat-token('color.theme.success.bg', 0.1),\n 'warning': cat-token('color.theme.warning.bg', 0.1),\n 'danger': cat-token('color.theme.danger.bg', 0.1)\n);\n$-icon-colors: (\n 'primary': cat-token('color.base.brand.400'),\n 'secondary': cat-token('color.base.neutral.400'),\n 'success': cat-token('color.base.green.400'),\n 'warning': cat-token('color.base.orange.400'),\n 'danger': cat-token('color.base.red.400')\n);\n\n// -----\n\n:host {\n display: block;\n border-radius: cat-border-radius('l');\n margin-bottom: $cat-body-margin-bottom;\n}\n\n:host([hidden]) {\n display: none;\n}\n\n:host(:focus-visible) {\n outline: 2px solid cat-token('color.ui.border.focus');\n outline-offset: 1px;\n}\n\n.alert {\n font: inherit;\n display: flex;\n gap: 0.5rem;\n padding: 1.25rem;\n border-radius: cat-border-radius('l');\n}\n\n.content {\n align-self: center;\n}\n\n::slotted(:last-child) {\n margin-bottom: 0 !important;\n}\n\n// ----- theme\n\n@mixin theme($theme) {\n .alert-#{$theme} {\n background-color: map.get($-background-colors, $theme);\n\n cat-icon {\n color: map.get($-icon-colors, $theme);\n }\n }\n}\n\n@include theme('primary');\n@include theme('secondary');\n@include theme('success');\n@include theme('warning');\n@include theme('danger');\n","import { Component, h, Host, Prop } from '@stencil/core';\n\n/**\n * Informs user about important changes or conditions in the interface. Use this\n * component if you need to capture user’s attention in a prominent way.\n *\n * @part alert - The alert element.\n */\n@Component({\n tag: 'cat-alert',\n styleUrl: 'cat-alert.scss',\n shadow: true\n})\nexport class CatAlert {\n private readonly mapIcon: Map<string, string> = new Map([\n ['primary', 'star-circle-filled'],\n ['secondary', 'clock-filled'],\n ['success', 'check-circle-filled'],\n ['warning', 'danger-filled'],\n ['danger', 'cross-circle-filled']\n ]);\n\n /**\n * The color palette of the alert.\n */\n @Prop() color: 'primary' | 'secondary' | 'danger' | 'success' | 'warning' = 'primary';\n\n /**\n * The name of an icon to be displayed in the alert.\n */\n @Prop() icon?: string;\n\n /**\n * Whether the icon of the alert is deactivated.\n */\n @Prop() noIcon = false;\n\n render() {\n return (\n <Host tabindex=\"0\" role={this.role}>\n <div\n part=\"alert\"\n class={{\n alert: true,\n [`alert-${this.color}`]: Boolean(this.color)\n }}\n >\n {!this.noIcon && <cat-icon size=\"l\" icon={this.icon ? this.icon : this.mapIcon.get(this.color)}></cat-icon>}\n <div class=\"content\">\n <slot></slot>\n </div>\n </div>\n </Host>\n );\n }\n\n private get role() {\n switch (this.color) {\n case 'danger':\n case 'warning':\n return 'alert';\n default:\n return 'status';\n }\n }\n}\n"],"version":3}
@@ -1,121 +1,4 @@
1
- import { proxyCustomElement, HTMLElement, h } from '@stencil/core/internal/client';
2
- import { l as loglevel } from './loglevel.js';
3
- import { d as defineCustomElement$2 } from './cat-icon2.js';
4
-
5
- /**
6
- * Loads an image and wraps the result in a promise.
7
- *
8
- * @param src the image URL
9
- * @returns a promise
10
- */
11
- const loadImg = (src) => {
12
- return new Promise((resolve, reject) => {
13
- const image = new Image();
14
- image.addEventListener('load', resolve);
15
- image.addEventListener('error', reject);
16
- image.src = src;
17
- });
18
- };
19
-
20
- const catAvatarCss = ":host{display:inline-block;vertical-align:middle;-webkit-user-select:none;-ms-user-select:none;user-select:none;}:host([hidden]){display:none}.avatar{display:flex;align-items:center;justify-content:center;border-radius:0.25rem;text-decoration:inherit;color:var(--cat-avatar-fill, white);background-color:var(--cat-avatar-bg, #697687);background-size:cover;background-position:center;white-space:nowrap;overflow:hidden}.avatar:focus-visible{outline:2px solid rgb(var(--cat-border-color-focus, 0, 113, 255));outline-offset:1px}.avatar-round{border-radius:50%}.avatar-xs{width:var(--cat-avatar-size, 1.5rem);height:var(--cat-avatar-size, 1.5rem);line-height:var(--cat-avatar-size, 1.5rem);font-size:var(--cat-avatar-font-size, 0.75rem)}.avatar-s{width:var(--cat-avatar-size, 2rem);height:var(--cat-avatar-size, 2rem);line-height:var(--cat-avatar-size, 2rem);font-size:var(--cat-avatar-font-size, 0.875rem)}.avatar-m{width:var(--cat-avatar-size, 2.5rem);height:var(--cat-avatar-size, 2.5rem);line-height:var(--cat-avatar-size, 2.5rem);font-size:var(--cat-avatar-font-size, 0.9375rem)}.avatar-l{width:var(--cat-avatar-size, 3rem);height:var(--cat-avatar-size, 3rem);line-height:var(--cat-avatar-size, 3rem);font-size:var(--cat-avatar-font-size, 1.125rem)}.avatar-xl{width:var(--cat-avatar-size, 3.5rem);height:var(--cat-avatar-size, 3.5rem);line-height:var(--cat-avatar-size, 3.5rem);font-size:var(--cat-avatar-font-size, 1.25rem)}";
21
-
22
- const CatAvatar$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
23
- constructor() {
24
- super();
25
- this.__registerHost();
26
- this.__attachShadow();
27
- /**
28
- * The size of the avatar.
29
- */
30
- this.size = 'm';
31
- /**
32
- * Use round avatar edges.
33
- */
34
- this.round = false;
35
- /**
36
- * The label of the avatar.
37
- */
38
- this.label = '';
39
- }
40
- onSrcChanged(value) {
41
- if (value) {
42
- loadImg(value).then(() => (this.backgroundImage = `url(${value})`), () => (this.backgroundImage = undefined));
43
- }
44
- else {
45
- this.backgroundImage = undefined;
46
- }
47
- }
48
- componentWillLoad() {
49
- this.onSrcChanged(this.src);
50
- }
51
- componentWillRender() {
52
- if (!this.label) {
53
- loglevel.warn('[A11y] Missing ARIA label on avatar', this);
54
- }
55
- }
56
- render() {
57
- if (this.url) {
58
- return (h("a", { href: this.url, target: this.urlTarget, style: this.cssStyle, class: this.cssClass, "aria-label": this.label }, this.content));
59
- }
60
- else {
61
- return (h("span", { style: this.cssStyle, class: this.cssClass, "aria-label": this.label }, this.content));
62
- }
63
- }
64
- get content() {
65
- return !this.backgroundImage
66
- ? [this.icon ? h("cat-icon", { icon: this.icon, size: this.size }) : this.getInitials()]
67
- : [];
68
- }
69
- get cssStyle() {
70
- return { 'background-image': this.backgroundImage };
71
- }
72
- get cssClass() {
73
- return {
74
- avatar: true,
75
- 'avatar-round': this.round,
76
- [`avatar-${this.size}`]: Boolean(this.size)
77
- };
78
- }
79
- getInitials() {
80
- var _a, _b;
81
- return ((_a = this.initials) !== null && _a !== void 0 ? _a : ((_b = this.label) !== null && _b !== void 0 ? _b : '')
82
- .split(' ')
83
- .map(n => n[0])
84
- .join(''));
85
- }
86
- static get watchers() { return {
87
- "src": ["onSrcChanged"]
88
- }; }
89
- static get style() { return catAvatarCss; }
90
- }, [1, "cat-avatar", {
91
- "size": [1],
92
- "round": [4],
93
- "label": [1],
94
- "initials": [1],
95
- "src": [1],
96
- "icon": [1],
97
- "url": [1],
98
- "urlTarget": [1, "url-target"],
99
- "backgroundImage": [32]
100
- }]);
101
- function defineCustomElement$1() {
102
- if (typeof customElements === "undefined") {
103
- return;
104
- }
105
- const components = ["cat-avatar", "cat-icon"];
106
- components.forEach(tagName => { switch (tagName) {
107
- case "cat-avatar":
108
- if (!customElements.get(tagName)) {
109
- customElements.define(tagName, CatAvatar$1);
110
- }
111
- break;
112
- case "cat-icon":
113
- if (!customElements.get(tagName)) {
114
- defineCustomElement$2();
115
- }
116
- break;
117
- } });
118
- }
1
+ import { C as CatAvatar$1, d as defineCustomElement$1 } from './cat-avatar2.js';
119
2
 
120
3
  const CatAvatar = CatAvatar$1;
121
4
  const defineCustomElement = defineCustomElement$1;
@@ -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,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@use 'sass:map';\n\n$avatar-sizes: (\n 'xl': 3.5rem,\n 'l': 3rem,\n 'm': 2.5rem,\n 's': 2rem,\n 'xs': 1.5rem\n);\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, map.get($avatar-sizes, $size));\n height: var(--cat-avatar-size, map.get($avatar-sizes, $size));\n line-height: var(--cat-avatar-size, map.get($avatar-sizes, $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":";;;;;;;","names":[],"sources":[],"sourcesContent":[],"version":3}
@@ -0,0 +1,122 @@
1
+ import { proxyCustomElement, HTMLElement, h } from '@stencil/core/internal/client';
2
+ import { l as loglevel } from './loglevel.js';
3
+ import { d as defineCustomElement$1 } from './cat-icon2.js';
4
+
5
+ /**
6
+ * Loads an image and wraps the result in a promise.
7
+ *
8
+ * @param src the image URL
9
+ * @returns a promise
10
+ */
11
+ const loadImg = (src) => {
12
+ return new Promise((resolve, reject) => {
13
+ const image = new Image();
14
+ image.addEventListener('load', resolve);
15
+ image.addEventListener('error', reject);
16
+ image.src = src;
17
+ });
18
+ };
19
+
20
+ const catAvatarCss = ":host{display:inline-block;vertical-align:middle;-webkit-user-select:none;-ms-user-select:none;user-select:none;}:host([hidden]){display:none}.avatar{display:flex;align-items:center;justify-content:center;border-radius:0.25rem;text-decoration:inherit;color:var(--cat-avatar-fill, white);background-color:var(--cat-avatar-bg, #697687);background-size:cover;background-position:center;white-space:nowrap;overflow:hidden}.avatar:focus-visible{outline:2px solid rgb(var(--cat-border-color-focus, 0, 113, 255));outline-offset:1px}.avatar-round{border-radius:50%}.avatar-xs{width:var(--cat-avatar-size, 1.5rem);height:var(--cat-avatar-size, 1.5rem);line-height:var(--cat-avatar-size, 1.5rem);font-size:var(--cat-avatar-font-size, 0.75rem)}.avatar-s{width:var(--cat-avatar-size, 2rem);height:var(--cat-avatar-size, 2rem);line-height:var(--cat-avatar-size, 2rem);font-size:var(--cat-avatar-font-size, 0.875rem)}.avatar-m{width:var(--cat-avatar-size, 2.5rem);height:var(--cat-avatar-size, 2.5rem);line-height:var(--cat-avatar-size, 2.5rem);font-size:var(--cat-avatar-font-size, 0.9375rem)}.avatar-l{width:var(--cat-avatar-size, 3rem);height:var(--cat-avatar-size, 3rem);line-height:var(--cat-avatar-size, 3rem);font-size:var(--cat-avatar-font-size, 1.125rem)}.avatar-xl{width:var(--cat-avatar-size, 3.5rem);height:var(--cat-avatar-size, 3.5rem);line-height:var(--cat-avatar-size, 3.5rem);font-size:var(--cat-avatar-font-size, 1.25rem)}";
21
+
22
+ const CatAvatar = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
23
+ constructor() {
24
+ super();
25
+ this.__registerHost();
26
+ this.__attachShadow();
27
+ /**
28
+ * The size of the avatar.
29
+ */
30
+ this.size = 'm';
31
+ /**
32
+ * Use round avatar edges.
33
+ */
34
+ this.round = false;
35
+ /**
36
+ * The label of the avatar.
37
+ */
38
+ this.label = '';
39
+ }
40
+ onSrcChanged(value) {
41
+ if (value) {
42
+ loadImg(value).then(() => (this.backgroundImage = `url(${value})`), () => (this.backgroundImage = undefined));
43
+ }
44
+ else {
45
+ this.backgroundImage = undefined;
46
+ }
47
+ }
48
+ componentWillLoad() {
49
+ this.onSrcChanged(this.src);
50
+ }
51
+ componentWillRender() {
52
+ if (!this.label) {
53
+ loglevel.warn('[A11y] Missing ARIA label on avatar', this);
54
+ }
55
+ }
56
+ render() {
57
+ if (this.url) {
58
+ return (h("a", { href: this.url, target: this.urlTarget, style: this.cssStyle, class: this.cssClass, "aria-label": this.label }, this.content));
59
+ }
60
+ else {
61
+ return (h("span", { style: this.cssStyle, class: this.cssClass, "aria-label": this.label }, this.content));
62
+ }
63
+ }
64
+ get content() {
65
+ return !this.backgroundImage
66
+ ? [this.icon ? h("cat-icon", { icon: this.icon, size: this.size }) : this.getInitials()]
67
+ : [];
68
+ }
69
+ get cssStyle() {
70
+ return { 'background-image': this.backgroundImage };
71
+ }
72
+ get cssClass() {
73
+ return {
74
+ avatar: true,
75
+ 'avatar-round': this.round,
76
+ [`avatar-${this.size}`]: Boolean(this.size)
77
+ };
78
+ }
79
+ getInitials() {
80
+ var _a, _b;
81
+ return ((_a = this.initials) !== null && _a !== void 0 ? _a : ((_b = this.label) !== null && _b !== void 0 ? _b : '')
82
+ .split(' ')
83
+ .map(n => n[0])
84
+ .join(''));
85
+ }
86
+ static get watchers() { return {
87
+ "src": ["onSrcChanged"]
88
+ }; }
89
+ static get style() { return catAvatarCss; }
90
+ }, [1, "cat-avatar", {
91
+ "size": [1],
92
+ "round": [4],
93
+ "label": [1],
94
+ "initials": [1],
95
+ "src": [1],
96
+ "icon": [1],
97
+ "url": [1],
98
+ "urlTarget": [1, "url-target"],
99
+ "backgroundImage": [32]
100
+ }]);
101
+ function defineCustomElement() {
102
+ if (typeof customElements === "undefined") {
103
+ return;
104
+ }
105
+ const components = ["cat-avatar", "cat-icon"];
106
+ components.forEach(tagName => { switch (tagName) {
107
+ case "cat-avatar":
108
+ if (!customElements.get(tagName)) {
109
+ customElements.define(tagName, CatAvatar);
110
+ }
111
+ break;
112
+ case "cat-icon":
113
+ if (!customElements.get(tagName)) {
114
+ defineCustomElement$1();
115
+ }
116
+ break;
117
+ } });
118
+ }
119
+
120
+ export { CatAvatar as C, defineCustomElement as d };
121
+
122
+ //# sourceMappingURL=cat-avatar2.js.map
@@ -0,0 +1 @@
1
+ {"file":"cat-avatar2.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;;MCY55C,SAAS;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;MACfA,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":["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@use 'sass:map';\n\n// -----\n\n$-background-color: cat-token('color.base.neutral.400');\n$-color: cat-token('color.base.neutral.0');\n$-sizes: (\n 'xl': 3.5rem,\n 'l': 3rem,\n 'm': 2.5rem,\n 's': 2rem,\n 'xs': 1.5rem\n);\n\n// -----\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, $-color);\n background-color: var(--cat-avatar-bg, $-background-color);\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, map.get($-sizes, $size));\n height: var(--cat-avatar-size, map.get($-sizes, $size));\n line-height: var(--cat-avatar-size, map.get($-sizes, $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,6 +1,6 @@
1
1
  import { proxyCustomElement, HTMLElement, h } from '@stencil/core/internal/client';
2
2
 
3
- const catBadgeCss = ":host{display:inline-flex;max-width:100%;vertical-align:baseline}:host([hidden]){display:none}.badge{font:inherit;flex:1 1 auto;display:inline-flex;align-items:center;justify-content:center;border-radius:0.125rem;text-decoration:none;width:100%;box-sizing:border-box;line-height:1;white-space:nowrap}.badge slot{display:inline-block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.badge-round{border-radius:10rem}.badge-filled{background-color:rgb(var(--bg));color:rgb(var(--fill));font-weight:600;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:greyscale}.badge-outlined{background-color:white;box-shadow:inset 0 0 0 1px rgba(var(--border), 0.2);color:rgb(var(--text))}.badge-primary{--bg:var(--cat-primary-bg, 32, 127, 138);--fill:var(--cat-primary-fill, 255, 255, 255);--text:var(--cat-primary-text, 32, 127, 138);--border:var(--cat-primary-text, 32, 127, 138)}.badge-secondary{--bg:105, 118, 135;--fill:255, 255, 255;--text:0, 0, 0;--border:105, 118, 135}.badge-success{--bg:0, 132, 88;--fill:255, 255, 255;--text:0, 132, 88;--border:0, 132, 88}.badge-warning{--bg:255, 206, 128;--fill:0, 0, 0;--text:159, 97, 0;--border:159, 97, 0}.badge-danger{--bg:217, 52, 13;--fill:255, 255, 255;--text:217, 52, 13;--border:217, 52, 13}.badge-xs{height:1rem;min-width:1rem;font-size:12px;padding:0 0.25rem}.badge-s{height:1.5rem;min-width:1.5rem;font-size:12px;padding:0 0.5rem}.badge-m{height:2rem;min-width:2rem;font-size:13px;padding:0 0.75rem}.badge-l{height:2.5rem;min-width:2.5rem;font-size:15px;padding:0 1rem}.badge-xl{height:3rem;min-width:3rem;font-size:18px;padding:0 1rem}.badge-pulse.badge-filled{animation:1.5s ease 0s infinite normal none running pulse}.badge-pulse.badge-outlined{animation:1.5s ease 0s infinite normal none running pulse-outlined}@keyframes pulse{0%{box-shadow:0 0 0 0 rgb(var(--bg))}70%{box-shadow:transparent 0 0 0 0.5rem}100%{box-shadow:transparent 0 0 0 0}}@keyframes pulse-outlined{0%{box-shadow:0 0 0 0 rgb(var(--bg)), inset 0 0 0 1px rgba(var(--border), 0.2)}70%{box-shadow:transparent 0 0 0 0.5rem, inset 0 0 0 1px rgba(var(--border), 0.2)}100%{box-shadow:transparent 0 0 0 0, inset 0 0 0 1px rgba(var(--border), 0.2)}}";
3
+ const catBadgeCss = ":host{display:inline-block;max-width:100%;vertical-align:baseline}:host([hidden]){display:none}.badge{font:inherit;display:inline-flex;align-items:center;justify-content:center;border-radius:0.125rem;text-decoration:none;box-sizing:border-box;width:100%;line-height:1}.badge slot{display:inline-block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.badge-round{border-radius:10rem}.badge-filled{background-color:rgb(var(--bg));color:rgb(var(--fill));font-weight:600;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:greyscale}.badge-outlined{background-color:white;box-shadow:inset 0 0 0 1px rgba(var(--border), 0.2);color:rgb(var(--text))}.badge-primary{--bg:var(--cat-primary-bg, 32, 127, 138);--fill:var(--cat-primary-fill, 255, 255, 255);--text:var(--cat-primary-text, 32, 127, 138);--border:var(--cat-primary-text, 32, 127, 138)}.badge-secondary{--bg:105, 118, 135;--fill:255, 255, 255;--text:0, 0, 0;--border:105, 118, 135}.badge-success{--bg:0, 132, 88;--fill:255, 255, 255;--text:0, 132, 88;--border:0, 132, 88}.badge-warning{--bg:255, 206, 128;--fill:0, 0, 0;--text:159, 97, 0;--border:159, 97, 0}.badge-danger{--bg:217, 52, 13;--fill:255, 255, 255;--text:217, 52, 13;--border:217, 52, 13}.badge-xs{height:1rem;min-width:1rem;font-size:0.75rem;padding:0 0.25rem}.badge-s{height:1.5rem;min-width:1.5rem;font-size:0.75rem;padding:0 0.5rem}.badge-m{height:2rem;min-width:2rem;font-size:0.875rem;padding:0 0.75rem}.badge-l{height:2.5rem;min-width:2.5rem;font-size:0.9375rem;padding:0 1rem}.badge-xl{height:3rem;min-width:3rem;font-size:1.125rem;padding:0 1rem}.badge-pulse.badge-filled{animation:1.5s ease 0s infinite normal none running pulse}.badge-pulse.badge-outlined{animation:1.5s ease 0s infinite normal none running pulse-outlined}@keyframes pulse{0%{box-shadow:0 0 0 0 rgb(var(--bg))}70%{box-shadow:transparent 0 0 0 0.5rem}100%{box-shadow:transparent 0 0 0 0}}@keyframes pulse-outlined{0%{box-shadow:0 0 0 0 rgb(var(--bg)), inset 0 0 0 1px rgba(var(--border), 0.2)}70%{box-shadow:transparent 0 0 0 0.5rem, inset 0 0 0 1px rgba(var(--border), 0.2)}100%{box-shadow:transparent 0 0 0 0, inset 0 0 0 1px rgba(var(--border), 0.2)}}";
4
4
 
5
5
  const CatBadge$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
6
6
  constructor() {
@@ -1 +1 @@
1
- {"file":"cat-badge.js","mappings":";;AAAA,MAAM,WAAW,GAAG,ioEAAioE;;MCaxoEA,UAAQ;EALrB;;;;;;;IASU,YAAO,GAA0B,QAAQ,CAAC;;;;IAK1C,UAAK,GAA+D,SAAS,CAAC;;;;IAK9E,SAAI,GAAkC,GAAG,CAAC;;;;IAK1C,UAAK,GAAG,KAAK,CAAC;;;;IAKd,UAAK,GAAG,KAAK,CAAC;GAmBvB;EAjBC,MAAM;IACJ,QACE,YACE,IAAI,EAAC,OAAO,EACZ,KAAK,EAAE;QACL,KAAK,EAAE,IAAI;QACX,aAAa,EAAE,IAAI,CAAC,KAAK;QACzB,aAAa,EAAE,IAAI,CAAC,KAAK;QACzB,CAAC,SAAS,IAAI,CAAC,OAAO,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;QAChD,CAAC,SAAS,IAAI,CAAC,KAAK,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;QAC5C,CAAC,SAAS,IAAI,CAAC,IAAI,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;OAC3C,IAED,eAAa,CACR,EACP;GACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;","names":["CatBadge"],"sources":["./src/components/cat-badge/cat-badge.scss?tag=cat-badge&encapsulation=shadow","./src/components/cat-badge/cat-badge.tsx"],"sourcesContent":["@use 'variables' as *;\n@use 'mixins' as *;\n@use 'sass:map';\n\n:host {\n display: inline-flex;\n max-width: 100%;\n vertical-align: baseline;\n}\n\n:host([hidden]) {\n display: none;\n}\n\n.badge {\n font: inherit;\n flex: 1 1 auto;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n border-radius: cat-border-radius('s');\n text-decoration: none;\n width: 100%;\n box-sizing: border-box;\n line-height: 1;\n white-space: nowrap;\n\n slot {\n display: inline-block;\n @include cat-ellipsis;\n }\n}\n\n// ----- round\n\n.badge-round {\n border-radius: 10rem;\n}\n\n// ----- theme\n\n.badge-filled {\n background-color: cat-token-wrap(var(--bg));\n color: cat-token-wrap(var(--fill));\n font-weight: 600;\n @include cat-font-smooth;\n}\n\n$-outline: inset 0 0 0 1px cat-token-wrap(var(--border), $alpha: 0.2);\n\n.badge-outlined {\n background-color: cat-token('color.ui.background.body');\n box-shadow: $-outline;\n color: cat-token-wrap(var(--text));\n}\n\n@mixin theme($theme) {\n .badge-#{$theme} {\n --bg: #{cat-token('color.theme.#{$theme}.bg', $wrap: false)};\n --fill: #{cat-token('color.theme.#{$theme}.fill', $wrap: false)};\n --text: #{cat-token('color.theme.#{$theme}.text', $wrap: false)};\n @if $theme == 'secondary' {\n --border: #{cat-token('color.theme.#{$theme}.bg', $wrap: false)};\n } @else {\n --border: #{cat-token('color.theme.#{$theme}.text', $wrap: false)};\n }\n }\n}\n\n@include theme('primary');\n@include theme('secondary');\n@include theme('success');\n@include theme('warning');\n@include theme('danger');\n\n// ----- size\n\n@mixin size($size, $fontSize) {\n .badge-#{$size} {\n height: cat-token('size.badge.height.#{$size}');\n min-width: cat-token('size.badge.height.#{$size}');\n font-size: cat-token('size.badge.font.#{$size}');\n padding: 0 cat-token('size.badge.padding.horizontal.#{$size}');\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\n// ----- pulse\n\n$-pulse-0: 0 0 0 0 cat-token-wrap(var(--bg));\n$-pulse-70: transparent 0 0 0 0.5rem;\n$-pulse-100: transparent 0 0 0 0;\n\n.badge-pulse {\n &.badge-filled {\n animation: 1.5s ease 0s infinite normal none running pulse;\n }\n\n &.badge-outlined {\n animation: 1.5s ease 0s infinite normal none running pulse-outlined;\n }\n}\n\n@keyframes pulse {\n 0% {\n box-shadow: $-pulse-0;\n }\n\n 70% {\n box-shadow: $-pulse-70;\n }\n\n 100% {\n box-shadow: $-pulse-100;\n }\n}\n\n@keyframes pulse-outlined {\n 0% {\n box-shadow: $-pulse-0, $-outline;\n }\n\n 70% {\n box-shadow: $-pulse-70, $-outline;\n }\n\n 100% {\n box-shadow: $-pulse-100, $-outline;\n }\n}\n","import { Component, h, Prop } from '@stencil/core';\n\n/**\n * Badges are used to inform users of the status of an object or of an action\n * that’s been taken.\n *\n * @part badge - The badge element.\n */\n@Component({\n tag: 'cat-badge',\n styleUrl: 'cat-badge.scss',\n shadow: true\n})\nexport class CatBadge {\n /**\n * The rendering style of the badge.\n */\n @Prop() variant: 'filled' | 'outlined' = 'filled';\n\n /**\n * The color palette of the badge.\n */\n @Prop() color: 'primary' | 'secondary' | 'danger' | 'success' | 'warning' = 'primary';\n\n /**\n * The size of the badge.\n */\n @Prop() size: 'xs' | 's' | 'm' | 'l' | 'xl' = 'm';\n\n /**\n * Use round badge edges.\n */\n @Prop() round = false;\n\n /**\n * Draw attention to the badge with a subtle animation.\n */\n @Prop() pulse = false;\n\n render() {\n return (\n <span\n part=\"badge\"\n class={{\n badge: true,\n 'badge-round': this.round,\n 'badge-pulse': this.pulse,\n [`badge-${this.variant}`]: Boolean(this.variant),\n [`badge-${this.color}`]: Boolean(this.color),\n [`badge-${this.size}`]: Boolean(this.size)\n }}\n >\n <slot></slot>\n </span>\n );\n }\n}\n"],"version":3}
1
+ {"file":"cat-badge.js","mappings":";;AAAA,MAAM,WAAW,GAAG,onEAAonE;;MCa3nEA,UAAQ;EALrB;;;;;;;IASU,YAAO,GAA0B,QAAQ,CAAC;;;;IAK1C,UAAK,GAA+D,SAAS,CAAC;;;;IAK9E,SAAI,GAAkC,GAAG,CAAC;;;;IAK1C,UAAK,GAAG,KAAK,CAAC;;;;IAKd,UAAK,GAAG,KAAK,CAAC;GAmBvB;EAjBC,MAAM;IACJ,QACE,YACE,IAAI,EAAC,OAAO,EACZ,KAAK,EAAE;QACL,KAAK,EAAE,IAAI;QACX,aAAa,EAAE,IAAI,CAAC,KAAK;QACzB,aAAa,EAAE,IAAI,CAAC,KAAK;QACzB,CAAC,SAAS,IAAI,CAAC,OAAO,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;QAChD,CAAC,SAAS,IAAI,CAAC,KAAK,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;QAC5C,CAAC,SAAS,IAAI,CAAC,IAAI,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;OAC3C,IAED,eAAa,CACR,EACP;GACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;","names":["CatBadge"],"sources":["./src/components/cat-badge/cat-badge.scss?tag=cat-badge&encapsulation=shadow","./src/components/cat-badge/cat-badge.tsx"],"sourcesContent":["@use 'variables' as *;\n@use 'mixins' as *;\n@use 'sass:map';\n\n// -----\n\n$-sizes: (\n 'xl': 3rem,\n 'l': 2.5rem,\n 'm': 2rem,\n 's': 1.5rem,\n 'xs': 1rem\n);\n$-paddings: (\n 'xl': 0 1rem,\n 'l': 0 1rem,\n 'm': 0 0.75rem,\n 's': 0 0.5rem,\n 'xs': 0 0.25rem\n);\n\n// -----\n\n:host {\n display: inline-block;\n max-width: 100%;\n vertical-align: baseline;\n}\n\n:host([hidden]) {\n display: none;\n}\n\n.badge {\n font: inherit;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n border-radius: cat-border-radius('s');\n text-decoration: none;\n box-sizing: border-box;\n width: 100%;\n line-height: 1;\n\n slot {\n display: inline-block;\n @include cat-ellipsis;\n }\n}\n\n// ----- round\n\n.badge-round {\n border-radius: 10rem;\n}\n\n// ----- theme\n\n.badge-filled {\n background-color: cat-token-wrap(var(--bg));\n color: cat-token-wrap(var(--fill));\n font-weight: 600;\n @include cat-font-smooth;\n}\n\n$-outline: inset 0 0 0 1px cat-token-wrap(var(--border), $alpha: 0.2);\n\n.badge-outlined {\n background-color: cat-token('color.ui.background.body');\n box-shadow: $-outline;\n color: cat-token-wrap(var(--text));\n}\n\n@mixin theme($theme) {\n .badge-#{$theme} {\n --bg: #{cat-token('color.theme.#{$theme}.bg', $wrap: false)};\n --fill: #{cat-token('color.theme.#{$theme}.fill', $wrap: false)};\n --text: #{cat-token('color.theme.#{$theme}.text', $wrap: false)};\n @if $theme == 'secondary' {\n --border: #{cat-token('color.theme.#{$theme}.bg', $wrap: false)};\n } @else {\n --border: #{cat-token('color.theme.#{$theme}.text', $wrap: false)};\n }\n }\n}\n\n@include theme('primary');\n@include theme('secondary');\n@include theme('success');\n@include theme('warning');\n@include theme('danger');\n\n// ----- size\n\n@mixin size($size, $fontSize) {\n .badge-#{$size} {\n height: map.get($-sizes, $size);\n min-width: map.get($-sizes, $size);\n font-size: cat-body-font-size($fontSize);\n padding: map.get($-paddings, $size);\n }\n}\n\n@include size('xs', 'xs');\n@include size('s', 'xs');\n@include size('m', 's');\n@include size('l', 'm');\n@include size('xl', 'l');\n\n// ----- pulse\n\n$-pulse-0: 0 0 0 0 cat-token-wrap(var(--bg));\n$-pulse-70: transparent 0 0 0 0.5rem;\n$-pulse-100: transparent 0 0 0 0;\n\n.badge-pulse {\n &.badge-filled {\n animation: 1.5s ease 0s infinite normal none running pulse;\n }\n\n &.badge-outlined {\n animation: 1.5s ease 0s infinite normal none running pulse-outlined;\n }\n}\n\n@keyframes pulse {\n 0% {\n box-shadow: $-pulse-0;\n }\n\n 70% {\n box-shadow: $-pulse-70;\n }\n\n 100% {\n box-shadow: $-pulse-100;\n }\n}\n\n@keyframes pulse-outlined {\n 0% {\n box-shadow: $-pulse-0, $-outline;\n }\n\n 70% {\n box-shadow: $-pulse-70, $-outline;\n }\n\n 100% {\n box-shadow: $-pulse-100, $-outline;\n }\n}\n","import { Component, h, Prop } from '@stencil/core';\n\n/**\n * Badges are used to inform users of the status of an object or of an action\n * that’s been taken.\n *\n * @part badge - The badge element.\n */\n@Component({\n tag: 'cat-badge',\n styleUrl: 'cat-badge.scss',\n shadow: true\n})\nexport class CatBadge {\n /**\n * The rendering style of the badge.\n */\n @Prop() variant: 'filled' | 'outlined' = 'filled';\n\n /**\n * The color palette of the badge.\n */\n @Prop() color: 'primary' | 'secondary' | 'danger' | 'success' | 'warning' = 'primary';\n\n /**\n * The size of the badge.\n */\n @Prop() size: 'xs' | 's' | 'm' | 'l' | 'xl' = 'm';\n\n /**\n * Use round badge edges.\n */\n @Prop() round = false;\n\n /**\n * Draw attention to the badge with a subtle animation.\n */\n @Prop() pulse = false;\n\n render() {\n return (\n <span\n part=\"badge\"\n class={{\n badge: true,\n 'badge-round': this.round,\n 'badge-pulse': this.pulse,\n [`badge-${this.variant}`]: Boolean(this.variant),\n [`badge-${this.color}`]: Boolean(this.color),\n [`badge-${this.size}`]: Boolean(this.size)\n }}\n >\n <slot></slot>\n </span>\n );\n }\n}\n"],"version":3}