@sebgroup/green-core 3.8.1 → 3.10.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 (43) hide show
  1. package/components/card/card.styles.js +1 -0
  2. package/components/card-linked/card-linked.styles.js +1 -1
  3. package/components/table/table.component.d.ts +27 -7
  4. package/components/table/table.component.js +730 -101
  5. package/components/table/table.imports.js +8 -0
  6. package/components/table/table.stories.data.d.ts +8 -5
  7. package/components/table/table.stories.data.js +705 -31
  8. package/components/table/table.styles.js +409 -189
  9. package/components/table/table.types.d.ts +97 -11
  10. package/custom-elements.json +4838 -4724
  11. package/gds-element.js +1 -1
  12. package/generated/locales/da.d.ts +4 -1
  13. package/generated/locales/da.js +4 -1
  14. package/generated/locales/de.d.ts +4 -1
  15. package/generated/locales/de.js +4 -1
  16. package/generated/locales/fi.d.ts +4 -1
  17. package/generated/locales/fi.js +4 -1
  18. package/generated/locales/fr.d.ts +4 -1
  19. package/generated/locales/fr.js +4 -1
  20. package/generated/locales/it.d.ts +4 -1
  21. package/generated/locales/it.js +4 -1
  22. package/generated/locales/nl.d.ts +4 -1
  23. package/generated/locales/nl.js +4 -1
  24. package/generated/locales/no.d.ts +4 -1
  25. package/generated/locales/no.js +4 -1
  26. package/generated/locales/sv.d.ts +4 -1
  27. package/generated/locales/sv.js +4 -1
  28. package/generated/mcp/card-pattern-01/api.md +2 -1
  29. package/generated/mcp/components.json +1 -1
  30. package/generated/mcp/icons.json +1 -1
  31. package/generated/mcp/index.json +1 -1
  32. package/generated/mcp/table/angular.md +1 -0
  33. package/generated/mcp/table/api.md +32 -2
  34. package/generated/mcp/table/react.md +1 -0
  35. package/generated/mcp/tokens.json +1 -1
  36. package/generated/react/index.d.ts +9 -9
  37. package/generated/react/index.js +9 -9
  38. package/generated/react/table/index.d.ts +10 -4
  39. package/package.json +1 -1
  40. package/patterns/card-pattern-01/card-pattern-01.component.d.ts +2 -1
  41. package/patterns/card-pattern-01/card-pattern-01.component.js +49 -25
  42. package/shared-styles/rbcb-toggle.style.js +1 -1
  43. package/utils/helpers/custom-element-scoping.js +1 -1
@@ -1,16 +1,16 @@
1
1
  export * from './alert/index.js';
2
- export * from './badge/index.js';
3
2
  export * from './avatar/index.js';
4
3
  export * from './blur/index.js';
4
+ export * from './badge/index.js';
5
5
  export * from './breadcrumbs/index.js';
6
6
  export * from './button/index.js';
7
7
  export * from './calendar/index.js';
8
8
  export * from './card/index.js';
9
- export * from './checkbox/index.js';
10
9
  export * from './card-linked/index.js';
10
+ export * from './checkbox/index.js';
11
11
  export * from './coachmark/index.js';
12
- export * from './context-menu/index.js';
13
12
  export * from './datepicker/index.js';
13
+ export * from './context-menu/index.js';
14
14
  export * from './details/index.js';
15
15
  export * from './dialog/index.js';
16
16
  export * from './div/index.js';
@@ -18,28 +18,28 @@ export * from './divider/index.js';
18
18
  export * from './dropdown/index.js';
19
19
  export * from './fab/index.js';
20
20
  export * from './filter-chips/index.js';
21
- export * from './flex/index.js';
22
21
  export * from './form-summary/index.js';
22
+ export * from './flex/index.js';
23
23
  export * from './grid/index.js';
24
24
  export * from './grouped-list/index.js';
25
25
  export * from './list-item/index.js';
26
- export * from './img/index.js';
27
26
  export * from './input/index.js';
27
+ export * from './img/index.js';
28
28
  export * from './link/index.js';
29
29
  export * from './mask/index.js';
30
30
  export * from './menu-button/index.js';
31
31
  export * from './pagination/index.js';
32
- export * from './radio/index.js';
33
32
  export * from './backdrop/index.js';
34
33
  export * from './popover/index.js';
34
+ export * from './radio/index.js';
35
35
  export * from './rich-text/index.js';
36
36
  export * from './segmented-control/index.js';
37
37
  export * from './select/index.js';
38
38
  export * from './signal/index.js';
39
39
  export * from './spinner/index.js';
40
- export * from './switch/index.js';
41
40
  export * from './table/index.js';
42
41
  export * from './text/index.js';
42
+ export * from './switch/index.js';
43
43
  export * from './textarea/index.js';
44
44
  export * from './theme/index.js';
45
45
  export * from './video/index.js';
@@ -49,14 +49,14 @@ export * from './breadcrumb/index.js';
49
49
  export * from './checkbox-group/index.js';
50
50
  export * from './icons/icon-details/index.js';
51
51
  export * from './filter-chip/index.js';
52
+ export * from './formatted-account/index.js';
52
53
  export * from './formatted-date/index.js';
53
54
  export * from './formatted-number/index.js';
54
- export * from './formatted-account/index.js';
55
55
  export * from './radio-group/index.js';
56
56
  export * from './segment/index.js';
57
57
  export * from './sensitive-account/index.js';
58
- export * from './sensitive-number/index.js';
59
58
  export * from './sensitive-date/index.js';
59
+ export * from './sensitive-number/index.js';
60
60
  export * from './icons/icon-ai/index.js';
61
61
  export * from './icons/icon-airplane-up/index.js';
62
62
  export * from './icons/icon-archive/index.js';
@@ -1,16 +1,16 @@
1
1
  export * from "./alert/index.js";
2
- export * from "./badge/index.js";
3
2
  export * from "./avatar/index.js";
4
3
  export * from "./blur/index.js";
4
+ export * from "./badge/index.js";
5
5
  export * from "./breadcrumbs/index.js";
6
6
  export * from "./button/index.js";
7
7
  export * from "./calendar/index.js";
8
8
  export * from "./card/index.js";
9
- export * from "./checkbox/index.js";
10
9
  export * from "./card-linked/index.js";
10
+ export * from "./checkbox/index.js";
11
11
  export * from "./coachmark/index.js";
12
- export * from "./context-menu/index.js";
13
12
  export * from "./datepicker/index.js";
13
+ export * from "./context-menu/index.js";
14
14
  export * from "./details/index.js";
15
15
  export * from "./dialog/index.js";
16
16
  export * from "./div/index.js";
@@ -18,28 +18,28 @@ export * from "./divider/index.js";
18
18
  export * from "./dropdown/index.js";
19
19
  export * from "./fab/index.js";
20
20
  export * from "./filter-chips/index.js";
21
- export * from "./flex/index.js";
22
21
  export * from "./form-summary/index.js";
22
+ export * from "./flex/index.js";
23
23
  export * from "./grid/index.js";
24
24
  export * from "./grouped-list/index.js";
25
25
  export * from "./list-item/index.js";
26
- export * from "./img/index.js";
27
26
  export * from "./input/index.js";
27
+ export * from "./img/index.js";
28
28
  export * from "./link/index.js";
29
29
  export * from "./mask/index.js";
30
30
  export * from "./menu-button/index.js";
31
31
  export * from "./pagination/index.js";
32
- export * from "./radio/index.js";
33
32
  export * from "./backdrop/index.js";
34
33
  export * from "./popover/index.js";
34
+ export * from "./radio/index.js";
35
35
  export * from "./rich-text/index.js";
36
36
  export * from "./segmented-control/index.js";
37
37
  export * from "./select/index.js";
38
38
  export * from "./signal/index.js";
39
39
  export * from "./spinner/index.js";
40
- export * from "./switch/index.js";
41
40
  export * from "./table/index.js";
42
41
  export * from "./text/index.js";
42
+ export * from "./switch/index.js";
43
43
  export * from "./textarea/index.js";
44
44
  export * from "./theme/index.js";
45
45
  export * from "./video/index.js";
@@ -49,14 +49,14 @@ export * from "./breadcrumb/index.js";
49
49
  export * from "./checkbox-group/index.js";
50
50
  export * from "./icons/icon-details/index.js";
51
51
  export * from "./filter-chip/index.js";
52
+ export * from "./formatted-account/index.js";
52
53
  export * from "./formatted-date/index.js";
53
54
  export * from "./formatted-number/index.js";
54
- export * from "./formatted-account/index.js";
55
55
  export * from "./radio-group/index.js";
56
56
  export * from "./segment/index.js";
57
57
  export * from "./sensitive-account/index.js";
58
- export * from "./sensitive-number/index.js";
59
58
  export * from "./sensitive-date/index.js";
59
+ export * from "./sensitive-number/index.js";
60
60
  export * from "./icons/icon-ai/index.js";
61
61
  export * from "./icons/icon-airplane-up/index.js";
62
62
  export * from "./icons/icon-archive/index.js";
@@ -13,6 +13,8 @@ type GdsTableProps = React.ComponentProps<ReturnType<typeof getReactComponent<Gd
13
13
  onGdsTableDataError?: (event: CustomEvent<any>) => void;
14
14
  /** Fired when row selection changes. */
15
15
  onGdsTableSelection?: (event: CustomEvent<any>) => void;
16
+ /** Fired when row expansion changes. Detail: `{ index: number, row: T, expanded: boolean, expandedIndices: number[] }` */
17
+ onGdsTableExpandChange?: (event: CustomEvent<any>) => void;
16
18
  };
17
19
  export declare const GdsTable: {
18
20
  (props: GdsTableProps & {
@@ -26,7 +28,7 @@ export declare const GdsTable: {
26
28
  page?: number | undefined;
27
29
  rows?: number | undefined;
28
30
  columns?: import("../../../components/table/table.types").Column[] | undefined;
29
- data?: ((request: import("../../../components/table/table.types").Request) => Promise<import("../../../components/table/table.types").Response<import("../../../components/table/table.types").Row>>) | undefined;
31
+ data?: ((request: import("../../../components/table/table.types").Request) => Promise<import("../../../components/table/table.types").Response<import("../../../components/table/table.types").Row<Record<string, unknown>>>>) | undefined;
30
32
  density?: import("../../../components/table/table.types").Density | undefined;
31
33
  selectable?: boolean | undefined;
32
34
  disableSelectAll?: boolean | undefined;
@@ -35,21 +37,25 @@ export declare const GdsTable: {
35
37
  searchable?: boolean | undefined;
36
38
  settings?: boolean | undefined;
37
39
  striped?: boolean | undefined;
38
- actions?: import("../../../components/table/table.types").Actions | ((row: import("../../../components/table/table.types").Row, index: number) => any) | undefined;
39
40
  nocache?: boolean | undefined;
40
41
  tfoot?: import("../../../components/table/table.types").Tfoot | undefined;
41
42
  dataLoadKey?: string | undefined;
42
43
  height?: string | undefined;
43
- variant?: Omit<import("../../../components/card/card.types").Variant, "brand-01" | "brand-02"> | undefined;
44
+ variant?: ("neutral-01" | "neutral-02" | "neutral-02-outlined") | undefined;
44
45
  connectedCallback?: (() => void) | undefined;
46
+ updated?: ((changedProperties: Map<string, unknown>) => void) | undefined;
45
47
  render?: (() => any) | undefined;
46
48
  clearSelection?: (() => void) | undefined;
47
49
  selectAll?: (() => void) | undefined;
48
50
  setSelection?: ((indices: number[]) => void) | undefined;
49
51
  getSelection?: (() => {
50
52
  indices: number[];
51
- data: import("../../../components/table/table.types").Row[];
53
+ data: import("../../../components/table/table.types").Row<Record<string, unknown>>[];
52
54
  }) | undefined;
55
+ expandRow?: ((index: number) => Promise<boolean>) | undefined;
56
+ collapseRow?: ((index: number) => boolean) | undefined;
57
+ toggleRowExpansion?: ((index: number, rowOverride?: import("../../../components/table/table.types").Row<Record<string, unknown>> | undefined) => Promise<boolean>) | undefined;
58
+ getExpandedIndices?: (() => number[]) | undefined;
53
59
  readonly semanticVersion?: "__GDS_SEM_VER__" | undefined;
54
60
  syncFirstRender?: boolean | undefined;
55
61
  gdsElementName?: string | undefined;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@sebgroup/green-core",
3
3
  "description": "A carefully crafted set of Web Components, laying the foundation of the Green Design System.",
4
- "version": "3.8.1",
4
+ "version": "3.10.0",
5
5
  "main": "index.js",
6
6
  "module": "index.js",
7
7
  "type": "module",
@@ -6,7 +6,8 @@ declare const GdsCardPattern01_base: (new (...args: any[]) => import("../../util
6
6
  * @element gds-card-pattern-01
7
7
  * @status beta
8
8
  *
9
- * @slot header - Custom header content
9
+ * @slot media - Custom media content rendered in the card media area (when no src image is provided).
10
+ * @slot header - Custom header content rendered only when neither src nor media slot content is present.
10
11
  * @slot footer - Action items (buttons, links)
11
12
  *
12
13
  */
@@ -3,7 +3,7 @@ import {
3
3
  __privateAdd,
4
4
  __privateMethod
5
5
  } from "../../chunks/chunk.CAV4X6PU.js";
6
- var _hasFooterContent, hasFooterContent_fn, _getClasses, getClasses_fn, _renderLinkedCard, renderLinkedCard_fn, _renderLinkedFooter, renderLinkedFooter_fn, _renderStaticCard, renderStaticCard_fn, _renderStaticFooter, renderStaticFooter_fn, _renderCardContent, renderCardContent_fn;
6
+ var _hasFooterContent, hasFooterContent_fn, _getClasses, getClasses_fn, _hasMediaSlotContent, hasMediaSlotContent_fn, _renderMedia, renderMedia_fn, _renderLinkedCard, renderLinkedCard_fn, _renderLinkedFooter, renderLinkedFooter_fn, _renderStaticCard, renderStaticCard_fn, _renderStaticFooter, renderStaticFooter_fn, _renderCardContent, renderCardContent_fn;
7
7
  import { property } from "lit/decorators.js";
8
8
  import { classMap } from "lit/directives/class-map.js";
9
9
  import { ifDefined } from "lit/directives/if-defined.js";
@@ -42,6 +42,8 @@ let GdsCardPattern01 = class extends withSizeXProps(
42
42
  */
43
43
  __privateAdd(this, _hasFooterContent);
44
44
  __privateAdd(this, _getClasses);
45
+ __privateAdd(this, _hasMediaSlotContent);
46
+ __privateAdd(this, _renderMedia);
45
47
  /**
46
48
  * Renders linked version of the card
47
49
  * Includes href, target, and rel attributes
@@ -65,7 +67,7 @@ let GdsCardPattern01 = class extends withSizeXProps(
65
67
  /**
66
68
  * Renders card content structure
67
69
  * Includes media, header slot, title/excerpt, and footer
68
- * Header slot only shows when no media is present
70
+ * Header slot only shows when no image media is present
69
71
  */
70
72
  __privateAdd(this, _renderCardContent);
71
73
  this.title = "";
@@ -100,6 +102,46 @@ getClasses_fn = function(type) {
100
102
  [`ratio-${this.ratio}`]: true
101
103
  });
102
104
  };
105
+ _hasMediaSlotContent = new WeakSet();
106
+ hasMediaSlotContent_fn = function() {
107
+ return !!this.querySelector('[slot="media"]');
108
+ };
109
+ _renderMedia = new WeakSet();
110
+ renderMedia_fn = function() {
111
+ if (this.src) {
112
+ return html`
113
+ <gds-flex padding="xs xs 0 xs">
114
+ <gds-img
115
+ src=${ifDefined(this.src)}
116
+ srcset=${ifDefined(this.srcset)}
117
+ sizes=${ifDefined(this.sizes)}
118
+ width="100%"
119
+ height="100%"
120
+ object-fit="cover"
121
+ object-position="center"
122
+ border-radius="xs"
123
+ aspect-ratio=${this.ratio === "square" ? "1/1" : "16/9"}
124
+ loading=${ifDefined(this.loading)}
125
+ decoding=${ifDefined(this.decoding)}
126
+ alt=${ifDefined(this.alt)}
127
+ class="card-media"
128
+ ></gds-img>
129
+ </gds-flex>
130
+ `;
131
+ }
132
+ if (__privateMethod(this, _hasMediaSlotContent, hasMediaSlotContent_fn).call(this)) {
133
+ return html`
134
+ <gds-flex
135
+ padding="xs xs 0 xs"
136
+ flex="1"
137
+ aspect-ratio=${this.ratio === "square" ? "1/1" : "16/9"}
138
+ >
139
+ <slot name="media"></slot>
140
+ </gds-flex>
141
+ `;
142
+ }
143
+ return null;
144
+ };
103
145
  _renderLinkedCard = new WeakSet();
104
146
  renderLinkedCard_fn = function() {
105
147
  return html`
@@ -170,30 +212,12 @@ renderStaticFooter_fn = function() {
170
212
  _renderCardContent = new WeakSet();
171
213
  renderCardContent_fn = function() {
172
214
  return html`
173
- ${when(
174
- this.src,
175
- () => html`
176
- <gds-flex padding="xs xs 0 xs">
177
- <gds-img
178
- src=${ifDefined(this.src)}
179
- srcset=${ifDefined(this.srcset)}
180
- sizes=${ifDefined(this.sizes)}
181
- width="100%"
182
- height="100%"
183
- object-fit="cover"
184
- object-position="center"
185
- border-radius="xs"
186
- aspect-ratio=${this.ratio === "square" ? "1/1" : "16/9"}
187
- loading=${ifDefined(this.loading)}
188
- decoding=${ifDefined(this.decoding)}
189
- alt=${ifDefined(this.alt)}
190
- class="card-media"
191
- ></gds-img>
192
- </gds-flex>
193
- `
194
- )}
215
+ ${__privateMethod(this, _renderMedia, renderMedia_fn).call(this)}
195
216
  <gds-flex flex-direction="column" gap="xl" padding="xl">
196
- ${when(!this.src, () => html`<slot name="header"></slot>`)}
217
+ ${when(
218
+ !this.src && !__privateMethod(this, _hasMediaSlotContent, hasMediaSlotContent_fn).call(this),
219
+ () => html`<slot name="header"></slot>`
220
+ )}
197
221
  ${when(
198
222
  this.title || this.excerpt,
199
223
  () => html`
@@ -42,7 +42,7 @@ var rbcb_toggle_style_default = css`
42
42
  border-radius: var(--_toggle-radius);
43
43
  box-shadow: inset 0 0 0 var(--gds-sys-space-5xs)
44
44
  var(--gds-sys-color-border-neutral-01);
45
- background-color: transparent;
45
+ background-color: var(--gds-sys-color-l1-neutral-01);
46
46
  box-sizing: border-box;
47
47
  transition-property: box-shadow, background-color;
48
48
  transition-duration: var(--gds-sys-motion-duration-fastest);
@@ -1,6 +1,6 @@
1
1
  import "../../chunks/chunk.CAV4X6PU.js";
2
2
  import { html as litHtml } from "lit";
3
- const VER_SUFFIX = "-40b7b5";
3
+ const VER_SUFFIX = "-15bd72";
4
4
  class ScopedElementRegistry {
5
5
  static get instance() {
6
6
  if (!globalThis.__gdsElementLookupTable?.[VER_SUFFIX])