@sebgroup/green-core 1.15.1 → 1.17.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 (124) hide show
  1. package/README.md +101 -7
  2. package/chunks/chunk.2LQSDOD4.js +29 -0
  3. package/chunks/chunk.2ND5EWHE.js +65 -0
  4. package/chunks/chunk.2OOTOCUG.js +420 -0
  5. package/chunks/chunk.2WO4NHJ2.js +34 -0
  6. package/chunks/chunk.2Y3BHFKO.js +154 -0
  7. package/chunks/chunk.375BWME4.js +29 -0
  8. package/chunks/chunk.5VURDMKE.js +75 -0
  9. package/chunks/chunk.63RKNI5K.js +244 -0
  10. package/chunks/chunk.6NM7ENKA.js +31 -0
  11. package/chunks/chunk.6UA66KQU.js +153 -0
  12. package/chunks/chunk.7TCXY7BP.js +0 -0
  13. package/chunks/chunk.AQGTMWG4.js +101 -0
  14. package/chunks/chunk.D7H7CUS4.js +55 -0
  15. package/chunks/chunk.DFYMYEGD.js +78 -0
  16. package/chunks/chunk.EUQ5DOQM.js +560 -0
  17. package/chunks/chunk.HS7ICQNA.js +0 -0
  18. package/chunks/chunk.IYCENQZG.js +28 -0
  19. package/chunks/chunk.KC32OWZE.js +274 -0
  20. package/chunks/chunk.LUHCF4BJ.js +64 -0
  21. package/chunks/chunk.MAD5DQMN.js +161 -0
  22. package/chunks/chunk.MI4A2C2A.js +0 -0
  23. package/chunks/chunk.Q2T57HE7.js +0 -0
  24. package/chunks/chunk.QONSFT2N.js +4653 -0
  25. package/chunks/chunk.TMBQL2RO.js +0 -0
  26. package/chunks/chunk.TN6ZYAH3.js +74 -0
  27. package/chunks/chunk.TSDZQZBY.js +0 -0
  28. package/chunks/chunk.TX64TTBN.js +0 -0
  29. package/chunks/chunk.U4DPJ4QU.js +96 -0
  30. package/chunks/chunk.UF6IEONX.js +0 -0
  31. package/chunks/chunk.VOYMQ322.js +61 -0
  32. package/chunks/chunk.VYK7D6QO.js +64 -0
  33. package/chunks/chunk.WDZ2JTCP.js +360 -0
  34. package/chunks/chunk.WJDR7FTS.js +193 -0
  35. package/chunks/chunk.WM7HBMMV.js +54 -0
  36. package/chunks/chunk.XD5R3ZU3.js +460 -0
  37. package/chunks/chunk.XHTJVQUJ.js +140 -0
  38. package/chunks/chunk.XI4H54TV.js +39 -0
  39. package/chunks/chunk.XMPBXAGB.js +80 -0
  40. package/chunks/chunk.XU4HZLJL.js +0 -0
  41. package/chunks/chunk.YIQIH4RW.js +139 -0
  42. package/chunks/chunk.YJHAKLGR.js +54 -0
  43. package/chunks/chunk.YO24ZYAD.js +0 -0
  44. package/chunks/chunk.ZTE73BY2.js +655 -0
  45. package/chunks/chunk.ZYQWZMVY.js +467 -0
  46. package/components/badge/badge.js +245 -0
  47. package/components/button/button.d.ts +5 -5
  48. package/components/button/button.js +18 -0
  49. package/components/button/button.trans.styles.d.ts +2 -0
  50. package/components/button/index.d.ts +1 -0
  51. package/components/button/index.js +18 -0
  52. package/components/checkbox/checkbox.js +219 -0
  53. package/components/context-menu/context-menu.d.ts +2 -1
  54. package/components/context-menu/context-menu.js +22 -0
  55. package/components/context-menu/index.d.ts +3 -0
  56. package/components/context-menu/index.js +29 -0
  57. package/components/datepicker/date-part-spinner.js +10 -0
  58. package/components/datepicker/datepicker.d.ts +3 -2
  59. package/components/datepicker/datepicker.js +29 -0
  60. package/components/datepicker/index.d.ts +1 -0
  61. package/components/datepicker/index.js +29 -0
  62. package/components/dropdown/dropdown.d.ts +2 -2
  63. package/components/dropdown/dropdown.js +22 -0
  64. package/components/dropdown/index.d.ts +3 -0
  65. package/components/dropdown/index.js +30 -0
  66. package/components/form-control.js +12 -0
  67. package/components/grid/grid.d.ts +2 -2
  68. package/components/grid/grid.js +11 -0
  69. package/components/grid/grid.style.css.js +7 -0
  70. package/components/grid/index.d.ts +1 -0
  71. package/components/grid/index.js +11 -0
  72. package/components/grouped-list/grouped-list.js +14 -0
  73. package/components/grouped-list/index.d.ts +2 -0
  74. package/components/grouped-list/index.js +17 -0
  75. package/components/grouped-list/list-item.js +10 -0
  76. package/components/icon/icon.d.ts +2 -2
  77. package/components/icon/icon.js +10 -0
  78. package/components/icon/index.d.ts +1 -0
  79. package/components/icon/index.js +10 -0
  80. package/components/index.d.ts +4 -3
  81. package/components/index.js +81 -0
  82. package/components/input/input.js +682 -0
  83. package/components/radio/radio-group.js +9 -0
  84. package/components/radio/radio.js +240 -0
  85. package/components/segmented-control/index.d.ts +1 -0
  86. package/components/segmented-control/index.js +15 -0
  87. package/components/segmented-control/segment/index.d.ts +1 -0
  88. package/components/segmented-control/segment/index.js +13 -0
  89. package/components/segmented-control/segment/segment.js +12 -0
  90. package/components/segmented-control/segmented-control.d.ts +1 -1
  91. package/components/segmented-control/segmented-control.js +15 -0
  92. package/components/switch/switch.js +164 -0
  93. package/components/theme/index.d.ts +1 -0
  94. package/components/theme/index.js +11 -0
  95. package/components/theme/theme.js +11 -0
  96. package/components/tooltip/tooltip.js +252 -0
  97. package/index.js +72 -4291
  98. package/localization.js +3 -5
  99. package/package.json +7 -16
  100. package/primitives/calendar/calendar.js +13 -0
  101. package/primitives/calendar/functions.js +7 -0
  102. package/primitives/calendar/index.d.ts +1 -0
  103. package/primitives/calendar/index.js +14 -0
  104. package/primitives/listbox/index.d.ts +0 -1
  105. package/primitives/listbox/index.js +17 -0
  106. package/primitives/listbox/listbox.d.ts +2 -1
  107. package/primitives/listbox/listbox.js +16 -0
  108. package/primitives/listbox/option.js +14 -0
  109. package/primitives/menu/index.d.ts +1 -0
  110. package/primitives/menu/index.js +15 -0
  111. package/primitives/menu/menu-heading.js +11 -0
  112. package/primitives/menu/menu-item.d.ts +1 -2
  113. package/primitives/menu/menu-item.js +12 -0
  114. package/primitives/menu/menu.d.ts +2 -1
  115. package/primitives/menu/menu.js +14 -0
  116. package/primitives/popover/index.js +14 -0
  117. package/primitives/popover/popover.js +13 -0
  118. package/primitives/ripple/index.d.ts +1 -0
  119. package/primitives/ripple/index.js +11 -0
  120. package/primitives/ripple/ripple.d.ts +1 -1
  121. package/primitives/ripple/ripple.js +10 -0
  122. package/scoping.d.ts +1 -0
  123. package/scoping.js +18 -0
  124. package/transitional-styles.js +6 -4275
@@ -0,0 +1,467 @@
1
+ import {
2
+ GdsFormControlElement
3
+ } from "./chunk.YIQIH4RW.js";
4
+ import {
5
+ tokens
6
+ } from "./chunk.EUQ5DOQM.js";
7
+ import {
8
+ TransitionalStyles
9
+ } from "./chunk.QONSFT2N.js";
10
+ import {
11
+ constrainSlots
12
+ } from "./chunk.6NM7ENKA.js";
13
+ import {
14
+ gdsCustomElement,
15
+ html
16
+ } from "./chunk.VOYMQ322.js";
17
+ import {
18
+ __decorateClass,
19
+ __privateAdd,
20
+ __privateGet,
21
+ __privateSet
22
+ } from "./chunk.5VURDMKE.js";
23
+
24
+ // libs/core/src/components/button/button.ts
25
+ import { unsafeCSS } from "lit";
26
+ import { property, query } from "lit/decorators.js";
27
+ import { when } from "lit/directives/when.js";
28
+ import { classMap } from "lit/directives/class-map.js";
29
+
30
+ // libs/core/src/components/button/button.style.css
31
+ var button_style_default = `@layer tokens, a11y, core, ranks, sizes, variants, disabled;
32
+
33
+ @layer tokens {
34
+ :host {
35
+ --_gap: var(--gds-sys-space-spacer-m);
36
+
37
+ --_transition: var(--gds-sys-transition);
38
+
39
+ --_padding-inline: var(--gds-sys-space-padding-l);
40
+ --_padding-block: var(--gds-sys-space-padding-m);
41
+
42
+ --_border-radius: var(--gds-sys-radii-full);
43
+ --_border-width: 1px;
44
+ --_border-style: solid;
45
+
46
+ --_color-bg: var(--gds-sys-color-content-content);
47
+ --_color-text: var(--gds-sys-color-content-content-inverse);
48
+ --_color-border: var(--gds-sys-color-stroke-stroke);
49
+
50
+ --_color-outline-alpha: 60%;
51
+ --_color-outline: var(--_color-border);
52
+
53
+ /* These state layer variables can be variant to the correct state layer token in
54
+ * the rank and variant specific styles. It will be blended with \`--_color-bg\`
55
+ * for the \`background-color\` rule. */
56
+ --_state-layer-hover: var(--gds-sys-color-state-layers-state-black);
57
+ --_state-layer-active: var(--gds-sys-color-state-layers-state-black-shade);
58
+
59
+ --gds-sys-transition-properties: color;
60
+
61
+ contain: layout;
62
+ display: inline-block;
63
+ isolation: isolate;
64
+ max-width: 100%;
65
+ }
66
+ }
67
+
68
+ @layer a11y {
69
+ @media (prefers-color-scheme: dark) {
70
+ /* TODO */
71
+ }
72
+ @media (prefers-reduced-motion: reduce) {
73
+ :host {
74
+ --_transition: none;
75
+ }
76
+ }
77
+ }
78
+
79
+ @layer core {
80
+ button {
81
+ --gds-sys-transition-properties: color !important;
82
+
83
+ align-items: center;
84
+ background-color: var(--_color-bg);
85
+ block-size: 100%;
86
+ border-color: var(--_color-border);
87
+ border-radius: var(--_border-radius);
88
+ border-style: var(--_border-style);
89
+ border-width: var(--_border-width);
90
+ box-sizing: border-box;
91
+ color: var(--_color-text);
92
+ color-scheme: dark light;
93
+ cursor: pointer;
94
+ display: inline-flex;
95
+ font-family: inherit;
96
+ font-size: 1rem;
97
+ font-weight: 400;
98
+ gap: var(--_gap);
99
+ height: var(--_size);
100
+ inline-size: 100%;
101
+ justify-content: space-between;
102
+ justify-items: center;
103
+ line-height: 1.25;
104
+ outline-color: transparent;
105
+ outline-offset: 2px;
106
+ outline-style: solid;
107
+ outline-width: 2px;
108
+ padding-block: var(--_padding-block);
109
+ padding-inline: var(--_padding-inline);
110
+ position: relative;
111
+ transition: var(--_transition);
112
+ transition-property: color, border-color;
113
+
114
+ &:focus {
115
+ outline-color: color-mix(
116
+ in srgb,
117
+ var(--_color-outline),
118
+ transparent var(--_color-outline-alpha)
119
+ );
120
+
121
+ &:not(:focus-visible) {
122
+ outline-color: transparent;
123
+ }
124
+ }
125
+
126
+ &:hover {
127
+ background-color: color-mix(
128
+ in srgb,
129
+ var(--_color-bg),
130
+ var(--_state-layer-hover)
131
+ );
132
+ border-color: color-mix(
133
+ in srgb,
134
+ var(--_color-border),
135
+ var(--_state-layer-hover)
136
+ );
137
+ }
138
+
139
+ &:active {
140
+ background-color: color-mix(
141
+ in srgb,
142
+ var(--_color-bg),
143
+ var(--_state-layer-active)
144
+ );
145
+ border-color: color-mix(
146
+ in srgb,
147
+ var(--_color-border),
148
+ var(--_state-layer-active)
149
+ );
150
+ }
151
+ }
152
+
153
+ button slot:not([name]) {
154
+ display: inline-block;
155
+ overflow: hidden;
156
+ text-overflow: ellipsis;
157
+ white-space: nowrap;
158
+ }
159
+ }
160
+
161
+ @layer ranks {
162
+ :host([rank*='secondary']) button {
163
+ --_color-bg: var(--gds-sys-color-content-content-inverse);
164
+ --_color-text: var(--gds-sys-color-content-content);
165
+ --_color-border: var(--gds-sys-color-stroke-stroke);
166
+
167
+ &:active {
168
+ --_state-layer-active: var(--gds-sys-color-state-layers-state-black-dim1);
169
+ }
170
+ }
171
+
172
+ :host([rank*='tertiary']) button {
173
+ --_color-bg: transparent;
174
+ --_color-text: var(--gds-sys-color-content-content);
175
+ --_color-border: transparent;
176
+
177
+ &:hover {
178
+ --_color-border: var(--gds-sys-color-stroke-stroke);
179
+ }
180
+
181
+ &:active {
182
+ --_state-layer-active: var(--gds-sys-color-state-layers-state-black-dim1);
183
+ --_color-border: var(--gds-sys-color-stroke-stroke);
184
+ }
185
+ }
186
+
187
+ button.circle {
188
+ align-items: center;
189
+ aspect-ratio: 1/1;
190
+ height: var(--_size);
191
+ justify-content: center;
192
+ padding: 0;
193
+ width: var(--_size);
194
+
195
+ &::slotted(gds-icon) {
196
+ align-items: center;
197
+ display: flex;
198
+ height: 24px;
199
+ justify-content: center;
200
+ width: 24px;
201
+ }
202
+ }
203
+ }
204
+
205
+ @layer sizes {
206
+ :host([size='small']) button {
207
+ --_padding-inline: var(--gds-sys-space-padding-l);
208
+ --_padding-block: var(--gds-sys-space-padding-s);
209
+ --_size: 2rem;
210
+ font-size: 0.875rem;
211
+ }
212
+
213
+ :host([size='medium']) button {
214
+ --_padding-inline: var(--gds-sys-space-padding-l);
215
+ --_padding-block: var(--gds-sys-space-padding-m);
216
+ --_size: 2.5rem;
217
+ }
218
+
219
+ :host([size='large']) button {
220
+ --_padding-inline: var(--gds-sys-space-padding-xl);
221
+ --_padding-block: var(--gds-sys-space-padding-m);
222
+ --_size: 3rem;
223
+ }
224
+ }
225
+
226
+ @layer variants {
227
+ :host([rank='primary'][variant='positive']) button {
228
+ --_bg: var(--gds-sys-color-container-container-positive);
229
+ --_color-bg: var(--_bg);
230
+ --_color-border: var(--_bg);
231
+
232
+ &:hover {
233
+ --_state-layer-hover: var(--gds-sys-color-state-layers-state-black-dim1);
234
+ }
235
+
236
+ &:active {
237
+ --_state-layer-active: var(--gds-sys-color-state-layers-state-black-dim2);
238
+ }
239
+
240
+ &:focus {
241
+ --_color-outline: var(--_bg);
242
+ }
243
+ }
244
+
245
+ :host([rank='secondary'][variant='positive']) button {
246
+ --_color-bg: var(--gds-sys-color-content-content-inverse);
247
+ --_color-text: var(--gds-sys-color-content-content-positive);
248
+ --_color-border: var(--gds-sys-color-stroke-stroke-positive);
249
+
250
+ &:hover {
251
+ --_state-layer-hover: var(--gds-sys-color-state-layers-state-positive);
252
+ }
253
+
254
+ &:active {
255
+ --_state-layer-active: var(
256
+ --gds-sys-color-state-layers-state-positive-dim
257
+ );
258
+ }
259
+ }
260
+
261
+ :host([rank='tertiary'][variant='positive']) button {
262
+ --_color-bg: transparent;
263
+ --_color-text: var(--gds-sys-color-content-content-positive);
264
+ --_color-border: transparent;
265
+
266
+ &:hover {
267
+ --_state-layer-hover: var(--gds-sys-color-state-layers-state-positive);
268
+ --_color-border: var(--gds-sys-color-stroke-stroke-positive);
269
+ }
270
+
271
+ &:active {
272
+ --_state-layer-active: var(
273
+ --gds-sys-color-state-layers-state-positive-dim
274
+ );
275
+ --_color-border: var(--gds-sys-color-stroke-stroke-positive);
276
+ }
277
+ }
278
+
279
+ :host([rank='primary'][variant='negative']) button {
280
+ --_bg: var(--gds-sys-color-container-container-negative);
281
+ --_color-bg: var(--_bg);
282
+ --_color-text: var(--gds-sys-color-status-negative-on-negative);
283
+ --_color-border: var(--_bg);
284
+
285
+ &:hover {
286
+ --_state-layer-hover: var(--gds-sys-color-state-layers-state-black-dim1);
287
+ }
288
+
289
+ &:active {
290
+ --_state-layer-active: var(--gds-sys-color-state-layers-state-black-dim2);
291
+ }
292
+
293
+ &:focus {
294
+ --_color-outline: var(--_bg);
295
+ }
296
+ }
297
+
298
+ :host([rank='secondary'][variant='negative']) button {
299
+ --_color-bg: var(--gds-sys-color-content-content-inverse);
300
+ --_color-text: var(--gds-sys-color-content-content-negative);
301
+ --_color-border: var(--gds-sys-color-stroke-stroke-negative);
302
+
303
+ &:hover {
304
+ --_state-layer-hover: var(--gds-sys-color-state-layers-state-negative);
305
+ }
306
+
307
+ &:active {
308
+ --_state-layer-active: var(
309
+ --gds-sys-color-state-layers-state-negative-dim
310
+ );
311
+ }
312
+ }
313
+
314
+ :host([rank='tertiary'][variant='negative']) button {
315
+ --_color-bg: transparent;
316
+ --_color-text: var(--gds-sys-color-content-content-negative);
317
+ --_color-border: transparent;
318
+
319
+ &:hover {
320
+ --_state-layer-hover: var(--gds-sys-color-state-layers-state-negative);
321
+ --_color-border: var(--gds-sys-color-stroke-stroke-negative);
322
+ }
323
+
324
+ &:active {
325
+ --_state-layer-active: var(
326
+ --gds-sys-color-state-layers-state-negative-dim
327
+ );
328
+ --_color-border: var(--gds-sys-color-stroke-stroke-negative);
329
+ }
330
+ }
331
+ }
332
+
333
+ @layer disabled {
334
+ button:disabled {
335
+ --_color-bg: var(--gds-sys-color-container-container-disabled);
336
+ border-color: var(--_color-bg);
337
+ color: var(--gds-sys-color-content-content-disabled);
338
+ pointer-events: none;
339
+ }
340
+ }
341
+ `;
342
+
343
+ // libs/core/src/utils/helpers/strip-white-space.ts
344
+ var templateCache = /* @__PURE__ */ new WeakMap();
345
+ function stripWhitespace(extendedTag) {
346
+ return (strings, ...values) => {
347
+ let modstrings = templateCache.get(strings);
348
+ if (!modstrings) {
349
+ modstrings = strings.map((s) => s.replace(/\n[\s]+</gm, "<"));
350
+ modstrings.raw = strings.raw;
351
+ templateCache.set(strings, modstrings);
352
+ }
353
+ return extendedTag(modstrings, ...values);
354
+ };
355
+ }
356
+
357
+ // libs/core/src/components/button/button.ts
358
+ var html2 = stripWhitespace(html);
359
+ var _isIconButton, _mainSlotChange, _handleClick;
360
+ var GdsButton = class extends GdsFormControlElement {
361
+ constructor() {
362
+ super();
363
+ this.disabled = false;
364
+ this.rank = "primary";
365
+ this.variant = "default";
366
+ this.size = "medium";
367
+ this.label = "";
368
+ __privateAdd(this, _isIconButton, false);
369
+ // Check if the button is an icon button.
370
+ __privateAdd(this, _mainSlotChange, () => {
371
+ var _a, _b;
372
+ const assignedNodes = (_b = (_a = this._mainSlot) == null ? void 0 : _a.assignedNodes()) != null ? _b : [];
373
+ __privateSet(this, _isIconButton, assignedNodes.length === 1 && assignedNodes.some((node) => node.gdsElementName === "gds-icon"));
374
+ this.requestUpdate();
375
+ });
376
+ __privateAdd(this, _handleClick, (e) => {
377
+ this.dispatchEvent(
378
+ new CustomEvent("gds-click", {
379
+ bubbles: true,
380
+ composed: true,
381
+ detail: e
382
+ })
383
+ );
384
+ if (this.form) {
385
+ if (this.type === "submit") {
386
+ this.form.requestSubmit();
387
+ } else if (this.type === "reset") {
388
+ this.form.reset();
389
+ }
390
+ }
391
+ });
392
+ constrainSlots(this);
393
+ }
394
+ connectedCallback() {
395
+ super.connectedCallback();
396
+ TransitionalStyles.instance.apply(this, "gds-button");
397
+ }
398
+ render() {
399
+ const buttonClasses = {
400
+ circle: __privateGet(this, _isIconButton),
401
+ icon: __privateGet(this, _isIconButton),
402
+ small: this.size === "small",
403
+ large: this.size === "large",
404
+ positive: this.variant === "positive",
405
+ negative: this.variant === "negative",
406
+ primary: this.rank === "primary",
407
+ secondary: this.rank === "secondary",
408
+ tertiary: this.rank === "tertiary"
409
+ };
410
+ return html2`
411
+ <button
412
+ class=${classMap(buttonClasses)}
413
+ ?type="${this.type}"
414
+ ?disabled="${this.disabled}"
415
+ @click="${__privateGet(this, _handleClick)}"
416
+ aria-label="${this.label}"
417
+ >
418
+ <slot name="lead" gds-allow="gds-icon"></slot>
419
+ <slot
420
+ @slotchange=${__privateGet(this, _mainSlotChange)}
421
+ gds-allow="#text gds-icon"
422
+ ></slot>
423
+ <slot name="trail" gds-allow="gds-icon"></slot>
424
+ ${when(
425
+ !this._isUsingTransitionalStyles,
426
+ () => html2`<gds-ripple></gds-ripple>`
427
+ )}
428
+ </button>
429
+ `;
430
+ }
431
+ };
432
+ _isIconButton = new WeakMap();
433
+ _mainSlotChange = new WeakMap();
434
+ _handleClick = new WeakMap();
435
+ GdsButton.styles = [tokens, unsafeCSS(button_style_default)];
436
+ GdsButton.shadowRootOptions = {
437
+ mode: "open",
438
+ delegatesFocus: true
439
+ };
440
+ __decorateClass([
441
+ property({ type: Boolean, reflect: true })
442
+ ], GdsButton.prototype, "disabled", 2);
443
+ __decorateClass([
444
+ property({ reflect: true })
445
+ ], GdsButton.prototype, "type", 2);
446
+ __decorateClass([
447
+ property({ reflect: true })
448
+ ], GdsButton.prototype, "rank", 2);
449
+ __decorateClass([
450
+ property({ reflect: true })
451
+ ], GdsButton.prototype, "variant", 2);
452
+ __decorateClass([
453
+ property({ reflect: true })
454
+ ], GdsButton.prototype, "size", 2);
455
+ __decorateClass([
456
+ property()
457
+ ], GdsButton.prototype, "label", 2);
458
+ __decorateClass([
459
+ query("slot:not([name])")
460
+ ], GdsButton.prototype, "_mainSlot", 2);
461
+ GdsButton = __decorateClass([
462
+ gdsCustomElement("gds-button")
463
+ ], GdsButton);
464
+
465
+ export {
466
+ GdsButton
467
+ };
@@ -0,0 +1,245 @@
1
+ import "../../chunks/chunk.7TCXY7BP.js";
2
+ import {
3
+ constrainSlots
4
+ } from "../../chunks/chunk.6NM7ENKA.js";
5
+ import {
6
+ __decorateClass,
7
+ __privateAdd,
8
+ __privateSet
9
+ } from "../../chunks/chunk.5VURDMKE.js";
10
+
11
+ // libs/core/src/components/badge/badge.ts
12
+ import { LitElement, html, unsafeCSS } from "lit";
13
+ import { customElement, property } from "lit/decorators.js";
14
+ import { when } from "lit/directives/when.js";
15
+
16
+ // libs/core/src/components/badge/style/badge.styles.css
17
+ var badge_styles_default = `@layer gds-badge, shell, tokens, a11y, variants, types;
18
+
19
+ @layer gds-badge {
20
+ @layer tokens {
21
+ :host {
22
+ --gds-badge-cl: rgba(53, 53, 49, 1);
23
+ --gds-badge-bg: rgba(243, 243, 242, 1);
24
+
25
+ --gds-badge-cl-information: rgba(53, 53, 49, 1);
26
+ --gds-badge-bg-information: rgba(243, 243, 242, 1);
27
+
28
+ --gds-badge-cl-success: rgba(0, 109, 49, 1);
29
+ --gds-badge-bg-success: rgba(234, 255, 232, 1);
30
+
31
+ --gds-badge-cl-warning: rgba(125, 87, 0, 1);
32
+ --gds-badge-bg-warning: rgba(255, 238, 217, 1);
33
+
34
+ --gds-badge-cl-error: rgba(186, 29, 0, 1);
35
+ --gds-badge-bg-error: rgba(255, 237, 233, 1);
36
+
37
+ --gds-badge-cl-disabled: rgba(157, 157, 149, 1);
38
+ --gds-badge-bg-disabled: rgba(249, 249, 249, 1);
39
+
40
+ --gds-badge-cl-surface: rgba(106, 106, 98, 1);
41
+ --gds-badge-bg-surface: rgba(255, 255, 255, 1);
42
+
43
+ /* Dark Mode */
44
+ --gds-badge-cl-dark: rgba(53, 53, 49, 1);
45
+ --gds-badge-bg-dark: rgba(243, 243, 242, 1);
46
+
47
+ --gds-badge-cl-information-dark: rgba(53, 53, 49, 1);
48
+ --gds-badge-bg-information-dark: rgba(243, 243, 242, 1);
49
+
50
+ --gds-badge-cl-success-dark: rgba(0, 109, 49, 1);
51
+ --gds-badge-bg-success-dark: rgba(234, 255, 232, 1);
52
+
53
+ --gds-badge-cl-warning-dark: rgba(125, 87, 0, 1);
54
+ --gds-badge-bg-warning-dark: rgba(255, 238, 217, 1);
55
+
56
+ --gds-badge-cl-error-dark: rgba(186, 29, 0, 1);
57
+ --gds-badge-bg-error-dark: rgba(255, 237, 233, 1);
58
+
59
+ --gds-badge-cl-disabled-dark: rgba(157, 157, 149, 1);
60
+ --gds-badge-bg-disabled-dark: rgba(249, 249, 249, 1);
61
+
62
+ --gds-badge-cl-surface-dark: rgba(106, 106, 98, 1);
63
+ --gds-badge-bg-surface-dark: rgba(255, 255, 255, 1);
64
+
65
+ --gds-badge-radii: 4px;
66
+
67
+ --gds-badge-fs: 12px;
68
+ --gds-badge-lh: 1;
69
+ --gds-badge-fw: 500;
70
+ --gds-badge-inline-padding: 10px;
71
+ --gds-badge-block-padding: 6px;
72
+ }
73
+ }
74
+ @layer a11y {
75
+ @media (prefers-color-scheme: dark) {
76
+ :host {
77
+ --gds-badge-cl: var(--gds-badge-cl-dark);
78
+ --gds-badge-bg: var(--gds-badge-bg-dark);
79
+
80
+ --gds-badge-cl-information: var(--gds-badge-cl-information-dark);
81
+ --gds-badge-bg-information: var(--gds-badge-bg-information-dark);
82
+
83
+ --gds-badge-cl-success: var(--gds-badge-cl-success-dark);
84
+ --gds-badge-bg-success: var(--gds-badge-bg-success-dark);
85
+
86
+ --gds-badge-cl-warning: var(--gds-badge-cl-warning-dark);
87
+ --gds-badge-bg-warning: var(--gds-badge-bg-warning-dark);
88
+
89
+ --gds-badge-cl-error: var(--gds-badge-cl-error-dark);
90
+ --gds-badge-bg-error: var(--gds-badge-bg-error-dark);
91
+
92
+ --gds-badge-cl-disabled: var(--gds-badge-cl-disabled-dark);
93
+ --gds-badge-bg-disabled: var(--gds-badge-bg-disabled-dark);
94
+
95
+ --gds-badge-cl-surface: var(--gds-badge-cl-surface-dark);
96
+ --gds-badge-bg-surface: var(--gds-badge-bg-surface-dark);
97
+ }
98
+ }
99
+
100
+ @media (prefers-reduced-motion: reduce) {
101
+ :host {
102
+ --gds-badge-motion: 0;
103
+ }
104
+ }
105
+
106
+ @media (prefers-reduced-transparency: reduce) {
107
+ :host {
108
+ --gds-badge-transparency: 1;
109
+ }
110
+ }
111
+
112
+ @media (prefers-contrast: more) {
113
+ :root {
114
+ --gds-badge-contrast: 1;
115
+ }
116
+ }
117
+ }
118
+
119
+ @layer shell {
120
+ .gds-badge {
121
+ align-items: center;
122
+ background-color: var(--gds-badge-bg);
123
+ border-radius: var(--gds-badge-radii);
124
+ color: var(--gds-badge-cl);
125
+ display: flex;
126
+ font-size: var(--gds-badge-fs);
127
+ font-weight: var(--gds-badge-fw);
128
+ gap: 1ch;
129
+ height: 1lh;
130
+ justify-content: center;
131
+ letter-spacing: normal;
132
+ line-height: var(--gds-badge-lh);
133
+ max-width: -moz-max-content;
134
+ max-width: max-content;
135
+ padding-block: var(--gds-badge-block-padding);
136
+ padding-inline: var(--gds-badge-inline-padding);
137
+ text-overflow: ellipsis;
138
+ text-transform: uppercase;
139
+ white-space: nowrap;
140
+
141
+ @layer variants {
142
+ :host([variant='information']) & {
143
+ --gds-badge-cl: var(--gds-badge-cl-information);
144
+ --gds-badge-bg: var(--gds-badge-bg-information);
145
+ }
146
+
147
+ :host([variant='success']) & {
148
+ --gds-badge-cl: var(--gds-badge-cl-success);
149
+ --gds-badge-bg: var(--gds-badge-bg-success);
150
+ }
151
+
152
+ :host([variant='warning']) & {
153
+ --gds-badge-cl: var(--gds-badge-cl-warning);
154
+ --gds-badge-bg: var(--gds-badge-bg-warning);
155
+ }
156
+
157
+ :host([variant='error']) & {
158
+ --gds-badge-cl: var(--gds-badge-cl-error);
159
+ --gds-badge-bg: var(--gds-badge-bg-error);
160
+ }
161
+
162
+ :host([variant='disabled']) & {
163
+ --gds-badge-cl: var(--gds-badge-cl-disabled);
164
+ --gds-badge-bg: var(--gds-badge-bg-disabled);
165
+ pointer-events: none;
166
+ }
167
+
168
+ :host([variant='surface']) & {
169
+ --gds-badge-cl: var(--gds-badge-cl-surface);
170
+ --gds-badge-bg: var(--gds-badge-bg-surface);
171
+ }
172
+ }
173
+
174
+ @layer types {
175
+ :host([type='counter']) & {
176
+ max-width: var(--gds-badge-counter-max-width);
177
+ }
178
+ }
179
+ }
180
+ }
181
+ }
182
+ `;
183
+
184
+ // libs/core/src/components/badge/badge.ts
185
+ var _internals;
186
+ var GdsBadge = class extends LitElement {
187
+ constructor() {
188
+ super();
189
+ // Private members
190
+ __privateAdd(this, _internals, void 0);
191
+ this.variant = "";
192
+ this.type = "";
193
+ this.icon = "";
194
+ __privateSet(this, _internals, this.attachInternals());
195
+ constrainSlots(this);
196
+ }
197
+ slotIcon() {
198
+ return html` <slot name="icon" gds-allow="gds-icon"></slot> `;
199
+ }
200
+ slotLabel() {
201
+ var _a;
202
+ const content = ((_a = this.textContent) == null ? void 0 : _a.trim()) || "";
203
+ const hasLabel = content !== "";
204
+ let label = content;
205
+ if (this.type.toLowerCase() === "counter" && label.length > 4) {
206
+ label = label.substring(0, 4);
207
+ return hasLabel ? html`${label}` : "";
208
+ }
209
+ return hasLabel ? html`<slot part="label" gds-allow="#text"></slot>` : "";
210
+ }
211
+ // slotLabel() {
212
+ // return this.textContent
213
+ // ? html`<slot part="label" gds-allow="#text"></slot>`
214
+ // : ''
215
+ // }
216
+ render() {
217
+ const hasIconSlot = this.querySelector('[slot="icon"]') !== null;
218
+ const content = html`${when(
219
+ hasIconSlot,
220
+ () => html`<slot name="icon" gds-allow="gds-icon"></slot>`
221
+ )}${this.slotLabel()}`;
222
+ return html`<div class="gds-badge">${content}</div>`;
223
+ }
224
+ };
225
+ _internals = new WeakMap();
226
+ GdsBadge.styles = unsafeCSS(badge_styles_default);
227
+ GdsBadge.shadowRootOptions = {
228
+ mode: "open",
229
+ delegatesFocus: true
230
+ };
231
+ __decorateClass([
232
+ property({ type: String, reflect: true, attribute: "variant" })
233
+ ], GdsBadge.prototype, "variant", 2);
234
+ __decorateClass([
235
+ property({ type: String, reflect: true, attribute: "type" })
236
+ ], GdsBadge.prototype, "type", 2);
237
+ __decorateClass([
238
+ property({ type: String, reflect: true, attribute: "icon" })
239
+ ], GdsBadge.prototype, "icon", 2);
240
+ GdsBadge = __decorateClass([
241
+ customElement("gds-badge")
242
+ ], GdsBadge);
243
+ export {
244
+ GdsBadge
245
+ };