@ebrains/react 0.4.0-alpha.0 → 0.5.0-alpha.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 (76) hide show
  1. package/analytics-1cde8e4a.esm.js +47 -0
  2. package/color-2554aad6.esm.js +122 -0
  3. package/color-primary-palette_6.entry.esm.js +106 -106
  4. package/correct-use-of-colors.entry.esm.js +33 -33
  5. package/eds-accordion.entry.esm.js +126 -0
  6. package/eds-alert_17.entry.esm.js +187 -0
  7. package/eds-avatar_4.entry.esm.js +193 -0
  8. package/eds-card-generic.entry.esm.js +124 -0
  9. package/eds-card-project.entry.esm.js +12 -11
  10. package/eds-card-section.entry.esm.js +2 -2
  11. package/eds-card-tags.entry.esm.js +1 -1
  12. package/eds-card-tool.entry.esm.js +5 -6
  13. package/eds-card-wrapper.entry.esm.js +4 -4
  14. package/eds-code-block.entry.esm.js +8 -8
  15. package/eds-components-section.entry.esm.js +14 -2
  16. package/eds-docs-palettes.entry.esm.js +1 -1
  17. package/eds-docs-tokens.entry.esm.js +1 -1
  18. package/eds-dropdown_2.entry.esm.js +235 -0
  19. package/eds-form.entry.esm.js +410 -0
  20. package/eds-frame.entry.esm.js +117 -0
  21. package/eds-icon-arrow-diagonal.entry.esm.js +1 -1
  22. package/eds-icon-arrow-right.entry.esm.js +1 -1
  23. package/eds-icon-bluesky.entry.esm.js +1 -1
  24. package/eds-icon-chevron-down.entry.esm.js +1 -1
  25. package/eds-icon-chevron-left.entry.esm.js +1 -1
  26. package/eds-icon-chevron-right.entry.esm.js +1 -1
  27. package/eds-icon-chevron-up.entry.esm.js +1 -1
  28. package/eds-icon-close.entry.esm.js +1 -1
  29. package/eds-icon-copy.entry.esm.js +1 -1
  30. package/eds-icon-eu.entry.esm.js +1 -1
  31. package/eds-icon-facebook.entry.esm.js +1 -1
  32. package/eds-icon-gitlab.entry.esm.js +1 -1
  33. package/eds-icon-linkedin.entry.esm.js +1 -1
  34. package/eds-icon-loader.entry.esm.js +1 -1
  35. package/eds-icon-mastodon.entry.esm.js +1 -1
  36. package/eds-icon-menu.entry.esm.js +1 -1
  37. package/eds-icon-more.entry.esm.js +1 -1
  38. package/eds-icon-search.entry.esm.js +1 -1
  39. package/eds-icon-success.entry.esm.js +1 -1
  40. package/eds-icon-twitter.entry.esm.js +1 -1
  41. package/eds-icon-user.entry.esm.js +1 -1
  42. package/eds-icon-youtube.entry.esm.js +1 -1
  43. package/eds-input_7.entry.esm.js +529 -0
  44. package/eds-login.entry.esm.js +66 -45
  45. package/eds-logo-variations.entry.esm.js +1 -1
  46. package/eds-matomo-notice.entry.esm.js +1 -2
  47. package/eds-modal.entry.esm.js +129 -0
  48. package/eds-navigator.entry.esm.js +5 -5
  49. package/eds-pagination_2.entry.esm.js +15 -16
  50. package/eds-progress-bar.entry.esm.js +7 -2
  51. package/eds-section-core_2.entry.esm.js +5 -5
  52. package/eds-svg-repository.entry.esm.js +1 -1
  53. package/eds-tab.entry.esm.js +1 -1
  54. package/eds-tabs-content.entry.esm.js +5 -5
  55. package/eds-tabs.entry.esm.js +4 -4
  56. package/eds-timeline.entry.esm.js +4 -4
  57. package/eds-tooltip.entry.esm.js +4 -5
  58. package/eds-trl.entry.esm.js +2 -2
  59. package/eds-user.entry.esm.js +118 -0
  60. package/eds-vertical-stepper.entry.esm.js +81 -0
  61. package/incorrect-use-of-colors.entry.esm.js +7 -7
  62. package/index.esm.js +1 -1
  63. package/index.esm2.js +37 -7
  64. package/{keycloak-13893af6.esm.js → keycloak-d502ec16.esm.js} +219 -168
  65. package/logo-space.entry.esm.js +4 -4
  66. package/logo-variations-horizontal_2.entry.esm.js +26 -26
  67. package/logo-wrong-usage.entry.esm.js +37 -37
  68. package/package.json +1 -1
  69. package/src/components.d.ts +3 -0
  70. package/token-list_3.entry.esm.js +5 -5
  71. package/token-ratios.entry.esm.js +3 -3
  72. package/token-spacing.entry.esm.js +26 -26
  73. package/token-typography.entry.esm.js +2 -2
  74. package/color-bb472c37.esm.js +0 -423
  75. package/eds-accordion_33.entry.esm.js +0 -369
  76. package/eds-rating.entry.esm.js +0 -69
@@ -0,0 +1,193 @@
1
+ import { r as registerInstance, h } from './index.esm2.js';
2
+ import { g as gradientBGColorVariants } from './color-2554aad6.esm.js';
3
+ import { c as cva } from './index-39c58238.esm.js';
4
+ import 'react';
5
+ import 'react/jsx-runtime';
6
+ import 'react-dom';
7
+
8
+ const edsAvatarCss = ".border-inside {\n position: relative;\n\n &::after {\n pointer-events: none;\n }\n\n &::after {\n position: absolute;\n }\n\n &::after {\n inset: 0rem;\n }\n\n &::after {\n z-index: 1;\n }\n\n &::after {\n border-radius: 8px;\n }\n\n &::after {\n border-width: 1px;\n }\n\n &::after {\n border-width: 2px;\n }\n\n &::after {\n border: 2px solid rgba(0, 0, 0, .1);\n }\n\n &::after {\n content: '';\n }\n}\n\n.border-inside-pill {\n &::after {\n border-radius: 100px;\n }\n\n &::after {\n content: '';\n }\n}\n\n.border-inside-inverse {\n &::after {\n border: 2px solid rgba(255, 255, 255, 0.3);\n }\n\n &::after {\n content: '';\n }\n}\n\n.aspect-1x1 {\n aspect-ratio: 1/1;\n}\n\n.flex {\n display: flex;\n}\n\n.inline-flex {\n display: inline-flex;\n}\n\n.items-center {\n align-items: center;\n}\n\n.justify-center {\n justify-content: center;\n}\n\n.overflow-hidden {\n overflow: hidden;\n}\n\n.px-4 {\n padding-left: 0.25rem;\n padding-right: 0.25rem;\n}\n\n.rounded-pill {\n border-radius: 100px;\n}\n\n.rounded-sm {\n border-radius: 8px;\n}\n\n.rounded-xs {\n border-radius: 4px;\n}\n\n\n.bg-dark {\n background-color: var(--grey-300);\n}\n\n.bg-darker {\n background-color: var(--grey-400);\n}\n\n.bg-stronger {\n background-color: var(--grey-900);\n}\n\n.bg-strongest {\n background-color: var(--black);\n}\n\n.text-accent {\n color: var(--green-500);\n}\n\n.text-default {\n color: var(--black);\n}\n\n.\\!no-underline {\n text-decoration-line: none !important;\n}\n\n.f-ui-01 {\n font-family: var(--f-ui-01-fontFamily);\n font-weight: var(--f-ui-01-fontWeight);\n font-size: var(--f-ui-01-fontSize);\n line-height: var(--f-ui-01-lineHeight);\n letter-spacing: var(--f-ui-01-letterSpacing);\n}\n\n.w-32 {\n width: 2rem;\n}\n\n.w-44 {\n width: 2.75rem;\n}\n\n.w-\\[54px\\] {\n width: 54px;\n}";
9
+ const EdsAvatarStyle0 = edsAvatarCss;
10
+ const EdsAvatar = class {
11
+ constructor(hostRef) {
12
+ registerInstance(this, hostRef);
13
+ this.firstName = 'User';
14
+ this.lastName = 'Avatar';
15
+ this.picture = undefined;
16
+ this.initials = undefined;
17
+ this.color = undefined;
18
+ this.rounded = false;
19
+ this.initialsStrong = false;
20
+ }
21
+ /**
22
+ * Computed initials based on the provided `initials` prop or derived from `firstName` and `lastName`.
23
+ * @returns {string | undefined} Initials for display in the avatar.
24
+ */
25
+ get computedInitials() {
26
+ if (this.initials) {
27
+ return (this.initials.match(/.{1,3}/g) || [])[0] || '';
28
+ } else if (this.firstName && this.lastName) {
29
+ return `${this.firstName.charAt(0)}${this.lastName.charAt(0)}`.toUpperCase();
30
+ }
31
+ return undefined;
32
+ }
33
+ /**
34
+ * Computes the CSS classes for the avatar container based on provided props like `rounded`, `color`, and `picture`.
35
+ * @returns {string} List of CSS classes to apply to the avatar container.
36
+ */
37
+ get containerClasses() {
38
+ return ['border-inside', 'aspect-1x1', 'flex', 'items-center', 'justify-center', 'overflow-hidden', this.picture ? '' : 'px-4', this.rounded ? 'rounded-pill border-inside-pill w-32' : 'w-[54px] rounded-sm', this.color ? 'border-inside-inverse' : '', this.color === 'grey' ? 'bg-dark' : this.color && !this.picture ? gradientBGColorVariants({
39
+ color: this.color,
40
+ direction: 'top',
41
+ pseudo: false
42
+ }) : !this.picture ? 'bg-strongest text-accent' : ''].join(' ');
43
+ }
44
+ /**
45
+ * Renders the avatar component. Displays either an image using `eds-img` or initials depending on whether `picture` or `computedInitials` is set.
46
+ * @returns {JSX.Element} The rendered avatar component.
47
+ */
48
+ render() {
49
+ return h("div", {
50
+ key: '47ee5ffd12c0f90c536dea77b3ffa9120d67f37f',
51
+ class: this.containerClasses
52
+ }, this.picture ? h("eds-img", {
53
+ src: this.picture,
54
+ width: 54,
55
+ height: 54,
56
+ sizes: "120px",
57
+ alt: `${this.firstName} ${this.lastName}`,
58
+ lazyload: true,
59
+ withBg: true
60
+ }) : h("abbr", {
61
+ title: this.computedInitials || `${this.firstName} ${this.lastName}`,
62
+ class: "!no-underline f-ui-01"
63
+ }, this.computedInitials));
64
+ }
65
+ };
66
+ EdsAvatar.style = EdsAvatarStyle0;
67
+ const edsCardDescCss = ".f-ui-02-light{font-family:var(--f-ui-02-light-fontFamily);font-weight:var(--f-ui-02-light-fontWeight);font-size:var(--f-ui-02-light-fontSize);line-height:var(--f-ui-02-light-lineHeight);letter-spacing:var(--f-ui-02-light-letterSpacing)}.f-ui-03-light{font-family:var(--f-ui-03-light-fontFamily);font-weight:var(--f-ui-03-light-fontWeight);font-size:var(--f-ui-03-light-fontSize);line-height:var(--f-ui-03-light-lineHeight);letter-spacing:var(--f-ui-03-light-letterSpacing)}.text-light{color:var(--grey-700)}.line-clamp-1{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1}.line-clamp-2{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}.line-clamp-3{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3}.line-clamp-4{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:4}";
68
+ const EdsCardDescStyle0 = edsCardDescCss;
69
+ const EdsCardDesc = class {
70
+ constructor(hostRef) {
71
+ registerInstance(this, hostRef);
72
+ this.description = undefined;
73
+ this.descClass = 'f-ui-03-light';
74
+ this.truncate = true;
75
+ this.truncateLines = '3';
76
+ }
77
+ getTruncateClass() {
78
+ return this.truncate && this.truncateLines ? `line-clamp-${this.truncateLines}` : '';
79
+ }
80
+ render() {
81
+ return h("p", {
82
+ key: '71495cbd6ef4e7d66c4c22a37f8120624ecf57fb',
83
+ class: `text-light ${this.descClass}`
84
+ }, h("span", {
85
+ key: '8708178f7b48cc1f31aac749f50fe92b72c39ab8',
86
+ class: this.getTruncateClass()
87
+ }, this.description));
88
+ }
89
+ };
90
+ EdsCardDesc.style = EdsCardDescStyle0;
91
+ const edsCardTitleCss = "a{all:unset;display:inline;color:inherit;text-decoration:none;cursor:pointer}h1,h2,h3,h4,h5,h6{margin:0}.f-heading-01{font-family:var(--f-heading-01-fontFamily);font-weight:var(--f-heading-01-fontWeight);font-size:var(--f-heading-01-fontSize);line-height:var(--f-heading-01-lineHeight);letter-spacing:var(--f-heading-01-letterSpacing)}.f-heading-02{font-family:var(--f-heading-02-fontFamily);font-weight:var(--f-heading-02-fontWeight);font-size:var(--f-heading-02-fontSize);line-height:var(--f-heading-02-lineHeight);letter-spacing:var(--f-heading-02-letterSpacing)}.f-heading-03{font-family:var(--f-heading-03-fontFamily);font-weight:var(--f-heading-03-fontWeight);font-size:var(--f-heading-03-fontSize);line-height:var(--f-heading-03-lineHeight);letter-spacing:var(--f-heading-03-letterSpacing)}.f-heading-04{font-family:var(--f-heading-04-fontFamily);font-weight:var(--f-heading-04-fontWeight);font-size:var(--f-heading-04-fontSize);line-height:var(--f-heading-04-lineHeight);letter-spacing:var(--f-heading-04-letterSpacing)}.f-heading-05{font-family:var(--f-heading-05-fontFamily);font-weight:var(--f-heading-05-fontWeight);font-size:var(--f-heading-05-fontSize);line-height:var(--f-heading-05-lineHeight);letter-spacing:var(--f-heading-05-letterSpacing)}.f-heading-06{font-family:var(--f-heading-06-fontFamily);font-weight:var(--f-heading-06-fontWeight);font-size:var(--f-heading-06-fontSize);line-height:var(--f-heading-06-lineHeight);letter-spacing:var(--f-heading-06-letterSpacing)}.break-words{overflow-wrap:break-word}.after\\:absolute::after{position:absolute}.after\\:inset-0::after{inset:0rem}.after\\:z-10::after{z-index:10}.after\\:content-\\[\\'\\'\\]::after{--tw-content:'';content:var(--tw-content)}.focus\\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}";
92
+ const EdsCardTitleStyle0 = edsCardTitleCss;
93
+ const EdsCardTitle = class {
94
+ constructor(hostRef) {
95
+ registerInstance(this, hostRef);
96
+ this.url = undefined;
97
+ this.titleClass = undefined;
98
+ this.headingLevel = 'h3';
99
+ this.externalLink = false;
100
+ this.cardTitle = undefined;
101
+ this.hierarchy = true;
102
+ }
103
+ /**
104
+ * Dynamically generate the title class based on the heading level.
105
+ */
106
+ getTitleClass() {
107
+ const levelMap = this.hierarchy ? {
108
+ h1: '05',
109
+ h2: '05',
110
+ h3: '05',
111
+ h4: '05',
112
+ h5: '05',
113
+ h6: '06'
114
+ } : {
115
+ h1: '01',
116
+ h2: '02',
117
+ h3: '03',
118
+ h4: '04',
119
+ h5: '05',
120
+ h6: '06'
121
+ };
122
+ return `f-heading-${levelMap[this.headingLevel]}`;
123
+ }
124
+ /*private getTag() {
125
+ if (this.url) {
126
+ return 'a';
127
+ }
128
+ return 'span';
129
+ }*/
130
+ render() {
131
+ //const Tag = this.getTag();
132
+ const Heading = this.headingLevel;
133
+ return h(Heading, {
134
+ key: 'bb97dc6dd53adda14ef251b2ec32952791438986',
135
+ class: this.getTitleClass()
136
+ }, h("a", {
137
+ key: '37b6ac0668257d27fb3f03a6225a2d48e1fd1f79',
138
+ class: "break-words after:absolute after:inset-0 after:z-10 after:content-[''] focus:outline-none",
139
+ href: this.url,
140
+ target: this.externalLink ? '_blank' : undefined,
141
+ rel: this.externalLink ? 'noopener noreferrer' : undefined
142
+ }, this.cardTitle));
143
+ }
144
+ };
145
+ EdsCardTitle.style = EdsCardTitleStyle0;
146
+ const edsTagCss = ".f-ui-05{font-family:var(--f-ui-05-fontFamily);font-weight:var(--f-ui-05-fontWeight);font-size:var(--f-ui-05-fontSize);line-height:var(--f-ui-05-lineHeight);letter-spacing:var(--f-ui-05-letterSpacing)}.py-1{padding-top:0.0625rem;padding-bottom:0.0625rem}.px-4{padding-left:0.25rem;padding-right:0.25rem}.border-2{border-width:2px}.rounded-pill{border-radius:100px}.border-default{border:2px solid var(--black)}.text-inverse{color:var(--white)}.bg-strongest{background-color:var(--black)}.text-\\[\\#0034CB\\]{--tw-text-opacity:1;color:rgb(0 52 203 / var(--tw-text-opacity))}.border-\\[\\#0034CB\\]{--tw-border-opacity:1;border:2px solid rgb(0 52 203 / var(--tw-border-opacity))}.text-light{color:var(--grey-700)}.bg-strongest-soft{background-color:rgba(0, 0, 0, .05)}.border-transparent{border-color:var(--transparent)}.border-inverse{border-color:var(--white)}.bg-inverse{background-color:var(--white)}.text-lighter{color:var(--grey-600)}";
147
+ const EdsTagStyle0 = edsTagCss;
148
+
149
+ // Define the CVA for the tag styles
150
+ const tagStyles = cva(['f-ui-05 py-1 px-4 border-2 rounded-pill'],
151
+ // Base classes
152
+ {
153
+ variants: {
154
+ intent: {
155
+ default: 'border-default',
156
+ strong: 'text-inverse bg-strongest border-default',
157
+ accent: 'text-[#0034CB] border-[#0034CB]',
158
+ weak: 'text-light bg-strongest-soft border-transparent',
159
+ inverse: 'border-inverse text-inverse',
160
+ 'inverse-strong': 'bg-inverse border-inverse text-lighter'
161
+ }
162
+ },
163
+ defaultVariants: {
164
+ intent: 'default'
165
+ }
166
+ });
167
+ const EdsTag = class {
168
+ constructor(hostRef) {
169
+ registerInstance(this, hostRef);
170
+ this.label = undefined;
171
+ this.ariaLabel = '';
172
+ this.intent = 'default';
173
+ }
174
+ /**
175
+ * Render the component.
176
+ * @returns The rendered HTML for the tag component with the applied styles and label.
177
+ */
178
+ render() {
179
+ var _a;
180
+ const classes = tagStyles({
181
+ intent: this.intent
182
+ });
183
+ const accessibleLabel = ((_a = this.ariaLabel) === null || _a === void 0 ? void 0 : _a.length) ? this.ariaLabel : this.label;
184
+ return h("span", {
185
+ key: '6a517f42aeb641c95d96ecd6c3090a317a3195c6',
186
+ class: classes,
187
+ "aria-label": accessibleLabel
188
+ }, this.label);
189
+ }
190
+ };
191
+ EdsTag.style = EdsTagStyle0;
192
+
193
+ export { EdsAvatar as eds_avatar, EdsCardDesc as eds_card_desc, EdsCardTitle as eds_card_title, EdsTag as eds_tag };
@@ -0,0 +1,124 @@
1
+ import { r as registerInstance, h, g as getElement } from './index.esm2.js';
2
+ import { s as sendAnalytics } from './analytics-1cde8e4a.esm.js';
3
+ import 'react';
4
+ import 'react/jsx-runtime';
5
+ import 'react-dom';
6
+
7
+ const edsCardGenericCss = ".h-auto{height:auto}.h-full{height:100%}.\\!min-h-20{min-height:1.25rem !important}.min-h-120{min-height:120px}.min-h-156{min-height:156px}.bg-default{background-color:var(--grey-200)}.bg-inverse{background-color:var(--white)}.effect-shadow{transition-property:box-shadow;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:300ms;transition-timing-function:cubic-bezier(0, 0, 0.2, 1)}.hover\\:shadow-hover:hover{--tw-shadow:0px 0px 16px rgba(0, 0, 0, 0.2);--tw-shadow-colored:0px 0px 16px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow)}.cursor-pointer{cursor:pointer}.border-soft{border-color:rgba(0, 0, 0, .15 )}.border-softer{border:2px solid rgba(0, 0, 0, .1 )}.effect-focus-within{outline-width:3px;outline-offset:2px;outline-color:var(--green-500)}.effect-focus-within:focus-within{outline-style:solid}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.grow{flex-grow:1}.flex-col{flex-direction:column}.rounded-lg{border-radius:16px}.border-2{border-width:2px}.p-12{padding:0.75rem}.p-16{padding:1rem}.mt-6{margin-top:0.375rem}.mt-8{margin-top:0.5rem}.gap-y-4{row-gap:0.25rem}.order-first{order:-9999}.mb-10{margin-bottom:0.625rem}.mb-12{margin-bottom:0.75rem}";
8
+ const EdsCardGenericStyle0 = edsCardGenericCss;
9
+ const EdsCardGeneric = class {
10
+ constructor(hostRef) {
11
+ registerInstance(this, hostRef);
12
+ this.parentContext = null; // Accepts the entire event detail or null
13
+ this.cardTitle = undefined;
14
+ this.url = undefined;
15
+ this.description = undefined;
16
+ this.image = undefined;
17
+ this.avatar = undefined;
18
+ this.shortAbbreviation = undefined;
19
+ this.headingLevel = 'h3';
20
+ this.tags = [];
21
+ this.tiny = false;
22
+ this.bg = true;
23
+ this.withHover = true;
24
+ this.hierarchy = true;
25
+ this.parsedImage = null;
26
+ }
27
+ componentWillLoad() {
28
+ if (this.image) {
29
+ try {
30
+ if (typeof this.image === 'object') {
31
+ // If image is already an object, assign it directly
32
+ this.parsedImage = this.image;
33
+ } else if (typeof this.image === 'string') {
34
+ // If image is a string, try to parse it
35
+ this.parsedImage = JSON.parse(this.image);
36
+ }
37
+ } catch (error) {
38
+ // eslint-disable-next-line
39
+ console.error('Error parsing image prop:', error);
40
+ this.parsedImage = {}; // Assign a fallback empty object in case of an error
41
+ }
42
+ }
43
+ }
44
+ handleParentContext(event) {
45
+ if (event.target !== this.el) {
46
+ // Ignore the event if it's not targeted at this specific instance
47
+ return;
48
+ }
49
+ //console.log(event.detail);
50
+ this.parentContext = event.detail;
51
+ event.stopPropagation();
52
+ }
53
+ /**
54
+ * Parses the `tags` prop into an array of link objects.
55
+ * Returns an empty array if parsing fails or if `tags` is not a valid JSON string or object.
56
+ *
57
+ * @returns {any[]} Array of parsed link objects
58
+ */
59
+ get parsedTags() {
60
+ if (typeof this.tags === 'object') {
61
+ return this.tags;
62
+ } else if (typeof this.tags === 'string') {
63
+ try {
64
+ return JSON.parse(this.tags);
65
+ } catch (e) {
66
+ // eslint-disable-next-line
67
+ console.error('Error parsing tags prop:', e);
68
+ return [];
69
+ }
70
+ }
71
+ return [];
72
+ }
73
+ articleClasses() {
74
+ return [this.description ? this.tiny ? 'min-h-120' : 'min-h-156' : 'h-auto', this.bg ? 'bg-inverse' : 'bg-default', this.withHover ? 'effect-shadow hover:shadow-hover cursor-pointer' : '', 'border-softer effect-focus-within relative flex grow flex-col rounded-lg border-2 p-16'].join(' ');
75
+ }
76
+ handleClick() {
77
+ var _a;
78
+ sendAnalytics({
79
+ category: 'ui-component',
80
+ parentContext: this.parentContext,
81
+ tag: this.el.tagName.toLowerCase(),
82
+ name: ((_a = this.cardTitle) === null || _a === void 0 ? void 0 : _a.toLowerCase()) || '',
83
+ action: 'click'
84
+ });
85
+ }
86
+ render() {
87
+ return h("article", {
88
+ key: 'dcb7cea87bfb52f8886f7ee3dbc3484d615bc00c',
89
+ class: this.articleClasses(),
90
+ onClick: () => this.handleClick()
91
+ }, h("eds-card-title", {
92
+ key: '94dd6ff2679ce9ac4d25ec921cd1162b1584e4fd',
93
+ "heading-level": this.headingLevel,
94
+ titleClass: this.image ? 'f-ui-01' : undefined,
95
+ "card-title": this.cardTitle,
96
+ url: this.url,
97
+ hierarchy: this.hierarchy
98
+ }), this.description && h("eds-card-desc", {
99
+ key: '433c4fe3a518153d89d48af54455286fa415a688',
100
+ class: "mt-8",
101
+ "truncate-lines": "3",
102
+ description: this.description
103
+ }), this.parsedImage ? h("eds-img", Object.assign({
104
+ class: "mt-8"
105
+ }, this.parsedImage)) : this.avatar || this.shortAbbreviation ? h("eds-avatar", {
106
+ class: "order-first mb-12",
107
+ picture: this.avatar,
108
+ initials: this.shortAbbreviation
109
+ }) : null, h("div", {
110
+ key: '97b75afb4b8de1183d4b212054ff556ba3db8fcb',
111
+ class: "flex flex-wrap gap-y-4"
112
+ }, this.parsedTags.map((tag, index) => h("eds-tag", {
113
+ key: index,
114
+ intent: tag.style,
115
+ label: tag.label
116
+ }))), ' ');
117
+ }
118
+ get el() {
119
+ return getElement(this);
120
+ }
121
+ };
122
+ EdsCardGeneric.style = EdsCardGenericStyle0;
123
+
124
+ export { EdsCardGeneric as eds_card_generic };
@@ -1,5 +1,6 @@
1
1
  import { r as registerInstance, h, g as getElement } from './index.esm2.js';
2
- import { s as sendAnalytics, g as gradientBGColorVariants } from './color-bb472c37.esm.js';
2
+ import { s as sendAnalytics } from './analytics-1cde8e4a.esm.js';
3
+ import { g as gradientBGColorVariants } from './color-2554aad6.esm.js';
3
4
  import 'react';
4
5
  import 'react/jsx-runtime';
5
6
  import 'react-dom';
@@ -49,38 +50,38 @@ const EdsCardProject = class {
49
50
  }) : 'bg-default', this.bgOnHover && this.color ? 'effect-background bg-default focus-within:bg-transparent hover:bg-transparent' : 'effect-background hover:bg-default', this.vertical ? 'flex-col gap-y-16' : 'flex-col gap-x-16 gap-y-12 lg:flex-row'].join(' ');
50
51
  const imageClasses = this.vertical ? '' : 'max-w-120 @md:max-w-192 order-first w-full lg:order-last';
51
52
  return h("article", {
52
- key: '6af49754300ded8748ac3f40175e262480054969',
53
+ key: '98c5dbd033ec05d08965559e00f32d9fe18698ef',
53
54
  class: cardClasses,
54
55
  onClick: event => this.handleClick(event)
55
56
  }, h("div", {
56
- key: '91e8501312957c44d9dc075f2ec3a9e5a5d425cb',
57
+ key: 'e083c43e38c3c24fcd996a90267f7cd92d3651b3',
57
58
  class: `flex grow flex-col ${this.vertical ? 'min-h-156' : ''}`
58
59
  }, h("div", {
59
- key: '44e3cf2d67255bb5669b6c721741ed060ba599e7',
60
+ key: '37de1e46023b533fd8595a3077c4e68c11fb01af',
60
61
  class: "lg:max-w-[720px]"
61
62
  }, h("eds-card-title", {
62
- key: '0cf1d124b975e4d7223bab58db0d5861d348ceb2',
63
+ key: 'ee31ae2804d2c17c82e8f4c0c3269ac8254331df',
63
64
  "heading-level": this.headingLevel,
64
65
  titleClass: this.image ? 'f-ui-01' : undefined,
65
66
  "card-title": this.titleProject,
66
67
  url: this.url
67
68
  }), this.editorialTitle && h("span", {
68
- key: '85e1158691ae876bc0f3c6d0c5557f394ae935cb',
69
+ key: 'c6f74ba9b5b522f713e25d3339f541efa68cdddd',
69
70
  class: `block ${this.vertical ? 'f-ui-02' : 'mt-4 f-heading-06'}`
70
71
  }, this.editorialTitle)), this.categoryTitle && h("div", {
71
- key: '9ffdc9f14709600b623c3a5f878b2700864ced79',
72
+ key: 'ab18e55046777cf4a4f58ebd057641db9b9e0328',
72
73
  class: "mt-auto flex items-center gap-x-12 pt-12"
73
74
  }, ((_a = this.categoryTitle) === null || _a === void 0 ? void 0 : _a.length) && h("eds-tag", {
74
- key: 'ecc5e55430df355c13420add9969855d1d54c27f',
75
+ key: '3714ee86a74dce7f33a8f953fd726db349ba9271',
75
76
  label: this.categoryTitle
76
77
  }))), this.parsedImage && h("div", {
77
- key: '97de7a06a13d9843cb18fe4eb19303f436e2ce16',
78
+ key: '2818d15f7ab671b7b2dfb34ec3085b390150f38d',
78
79
  class: imageClasses
79
80
  }, h("div", {
80
- key: '532d3c8252316a68976b4587c3d5b63167c0c598',
81
+ key: '5166feef3674631298f699449b956655f38f0db9',
81
82
  class: "aspect-1x1 w-full"
82
83
  }, h("eds-img", Object.assign({
83
- key: '37ee3dbbc99ec8c9139b0a89f9c725768eac5f6d',
84
+ key: '86555a43491da5b2aa3b287e539e603a2c2adaf3',
84
85
  sizes: this.vertical ? this.parsedImage.sizes || '' : '192px'
85
86
  }, this.parsedImage)))));
86
87
  }
@@ -44,10 +44,10 @@ const EdsCardSection = class {
44
44
  */
45
45
  render() {
46
46
  return h("section", {
47
- key: 'da139da167230819e494a6426c2431f209a2e557',
47
+ key: '1f221e1ec7c3cdd0e3aed18f6f930c2c5456c64b',
48
48
  class: "w-full"
49
49
  }, h("ul", {
50
- key: '3e8affe5c9aee91c4487480c72c437339265101a',
50
+ key: '36f984994bb2dc247475c20422f7e6e7da7d058d',
51
51
  class: "grid-layout gap-y-8 md:gap-y-12 lg:gap-y-16"
52
52
  }, this.parsedCards.map(card => h("li", {
53
53
  class: `grid-col-span-12 md:grid-col-span-${this.cols} flex flex-col`
@@ -13,7 +13,7 @@ const EdsCardTags = class {
13
13
  }
14
14
  render() {
15
15
  return h("div", {
16
- key: '60a129de62d45736eba0884cc24c9738f3a0f55c',
16
+ key: '272d53abb9be9086881cb2f8e99f7fb7aae1bb59',
17
17
  class: "flex flex-wrap gap-y-4"
18
18
  }, this.tags.map((tag, index) => h("eds-tag", {
19
19
  key: index,
@@ -1,9 +1,8 @@
1
1
  import { r as registerInstance, h, g as getElement } from './index.esm2.js';
2
- import { s as sendAnalytics } from './color-bb472c37.esm.js';
2
+ import { s as sendAnalytics } from './analytics-1cde8e4a.esm.js';
3
3
  import 'react';
4
4
  import 'react/jsx-runtime';
5
5
  import 'react-dom';
6
- import './index-39c58238.esm.js';
7
6
 
8
7
  const edsCardToolCss = ".h-auto{height:auto}.h-full{height:100%}.\\!min-h-20{min-height:1.25rem !important}.min-h-120{min-height:120px}.min-h-156{min-height:156px}.bg-default{background-color:var(--grey-200)}.bg-inverse{background-color:var(--white)}.effect-shadow{transition-property:box-shadow;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:300ms;transition-timing-function:cubic-bezier(0, 0, 0.2, 1)}.hover\\:shadow-hover:hover{--tw-shadow:0px 0px 16px rgba(0, 0, 0, 0.2);--tw-shadow-colored:0px 0px 16px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow)}.cursor-pointer{cursor:pointer}.border-soft{border-color:rgba(0, 0, 0, .15 )}.border-softer{border:2px solid rgba(0, 0, 0, .1 )}.effect-focus-within{outline-width:3px;outline-offset:2px;outline-color:var(--green-500)}.effect-focus-within:focus-within{outline-style:solid}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.grow{flex-grow:1}.flex-col{flex-direction:column}.rounded-lg{border-radius:16px}.border-2{border-width:2px}.p-12{padding:0.75rem}.p-16{padding:1rem}.mt-6{margin-top:0.375rem}.mt-8{margin-top:0.5rem}.gap-y-4{row-gap:0.25rem}.order-first{order:-9999}.mb-10{margin-bottom:0.625rem}.mb-12{margin-bottom:0.75rem}";
9
8
  const EdsCardToolStyle0 = edsCardToolCss;
@@ -63,11 +62,11 @@ const EdsCardTool = class {
63
62
  }
64
63
  render() {
65
64
  return h("article", {
66
- key: 'b46c0464688e45ab29f5b58b6cd2e22ed28e1034',
65
+ key: 'da61b384e966b148cd1f77eec59671bc4d92e259',
67
66
  class: `${this.el.tagName.toLowerCase()} ${this.articleClasses()}`,
68
67
  onClick: () => this.handleClick()
69
68
  }, h("eds-card-title", {
70
- key: 'a4da791280db14754b445b1a52e33cc9a25f765e',
69
+ key: '00702d032bc25f52b2a2c98255ceb60a1d314f4d',
71
70
  "heading-level": this.headingLevel,
72
71
  titleClass: this.image ? 'f-ui-01' : undefined,
73
72
  "card-title": this.cardTitle,
@@ -75,7 +74,7 @@ const EdsCardTool = class {
75
74
  "external-link": this.external,
76
75
  hierarchy: this.hierarchy
77
76
  }), this.description && h("eds-card-desc", {
78
- key: '86f7c6c80b83f244ba7d07d820d5793e1dda2933',
77
+ key: 'd2b135ed422fb64f142af71330dc666e2f0c2b1f',
79
78
  class: "mt-8",
80
79
  "truncate-lines": "3",
81
80
  description: this.description
@@ -89,7 +88,7 @@ const EdsCardTool = class {
89
88
  picture: this.avatar,
90
89
  initials: this.shortAbbreviation
91
90
  }) : null, h("div", {
92
- key: '46307b57160f908aa7066b2a636c4db38e0e7a8e',
91
+ key: '54111e90175754cb0c1f2eb339e86926914ca0e7',
93
92
  class: "flex flex-wrap gap-y-4"
94
93
  }, this.parsedTags.map((tag, index) => h("eds-tag", {
95
94
  key: index,
@@ -19,15 +19,15 @@ const EdsCardWrapper = class {
19
19
  render() {
20
20
  const articleClasses = [this.tiny ? 'min-h-120' : 'min-h-156', this.withBg ? 'bg-inverse' : 'bg-default', this.withHover ? 'effect-shadow hover:shadow-hover cursor-pointer' : '', 'border-softer effect-focus-within relative flex grow flex-col rounded-lg border-2 p-16'].join(' ');
21
21
  return h("article", {
22
- key: '7c12b1d147f061e189b5dda5d517ec4eae0c3691',
22
+ key: 'f21cc9703011026652765b399e2b87b1ef80d220',
23
23
  class: articleClasses
24
24
  }, h("slot", {
25
- key: 'f506bad73ed38ae36931f88f7d7c5f5d94705e4f'
25
+ key: '9a37adad73d2d49edcc9ca9222d5b188202c5612'
26
26
  }), this.hasSlot('footer') && h("div", {
27
- key: '783f480be269e4a2f61aa8d4396e757fe41bfcc6',
27
+ key: '87addfc052ed4ae33736724fbd8fbc8aca873b4d',
28
28
  class: "mt-auto"
29
29
  }, h("slot", {
30
- key: 'f07ddaa2d930518a5c8ac82efab3cb0dd6647bdd',
30
+ key: '2e48677f42ac2aa951bc1a82afa9291fea3ddd72',
31
31
  name: "footer"
32
32
  })));
33
33
  }
@@ -2242,15 +2242,15 @@ const EdsCodeBlock = class {
2242
2242
  return Prism$1.highlight(this.code, Prism$1.languages[this.language], this.language);
2243
2243
  }
2244
2244
  // eslint-disable-next-line
2245
- console.warn(`Unsupported or missing language: ${this.language}`);
2245
+ //console.warn(`Unsupported or missing language: ${this.language}`);
2246
2246
  return this.code; // Fallback if language is not provided or unsupported
2247
2247
  }
2248
2248
  render() {
2249
2249
  return h("div", {
2250
- key: '00eba9265ee17605f699d1e5606013b68e900b29',
2250
+ key: 'cb379e82bcf71345945b0b88397650ecd4992770',
2251
2251
  class: "relative bg-stronger rounded-sm"
2252
2252
  }, h("div", {
2253
- key: '1192584f04de5ff74e91c88597a3360b92053456',
2253
+ key: '945046d4fd747cd64a83155b421a897e380cc612',
2254
2254
  class: "text-inverse flex justify-between items-center p-8"
2255
2255
  }, this.language ? h("span", {
2256
2256
  class: "f-ui-03"
@@ -2261,23 +2261,23 @@ const EdsCodeBlock = class {
2261
2261
  }, h("code", {
2262
2262
  innerHTML: this.getHighlightedCode()
2263
2263
  })), h("span", {
2264
- key: '3666b6529a16a8cc64f448527db4ddee08f977a3',
2264
+ key: '3f6c7e996101f0bb83fb8c9e6991a205a0b268c8',
2265
2265
  "aria-hidden": "true",
2266
2266
  class: "w-20 h-20 mt-8"
2267
2267
  }, h("eds-icon-wrapper", {
2268
- key: 'f222d95a2e548429f6c4de96a7646e3cef1f360f',
2268
+ key: '8ad9beb61058f29e688f6777233c61f7fb3ccfe8',
2269
2269
  icon: this.copied ? 'success' : 'copy',
2270
2270
  onClick: () => this.copyToClipboard()
2271
2271
  })), h("span", {
2272
- key: '8c539deda773909c01a41eb04ee51380c0a9c4bb',
2272
+ key: 'a4f9a07906e1c2d9febb7ae789a3eed76dc422e9',
2273
2273
  class: "sr-only"
2274
2274
  }, "Copy Code")), this.language && h("pre", {
2275
- key: '99541dedb32c543da5e780ffee4460333fbb3724',
2275
+ key: 'e31339126dd3cc885511aaa2bdf6f06f3a113c74',
2276
2276
  class: `language-${this.language} bg-stronger pl-8 pb-8`,
2277
2277
  role: "region",
2278
2278
  "aria-label": `Code block in ${this.language}`
2279
2279
  }, h("code", {
2280
- key: '4e6ae6fcfae3de8c1fe5ad9d22309e0c8bee0c2c',
2280
+ key: '7efacd276f26a00f0f61793f6b8748259e1614b5',
2281
2281
  innerHTML: this.getHighlightedCode()
2282
2282
  })));
2283
2283
  }
@@ -45,6 +45,18 @@ const EdsDocsInstallation = () => h("div", null, h("p", null, "Before proceeding
45
45
  code: "npm install @ebrains/react",
46
46
  language: "html",
47
47
  "copy-label": "Copy Code"
48
+ })), h("div", {
49
+ class: "my-8"
50
+ }, h("eds-code-block", {
51
+ code: "npm install @ebrains/vue",
52
+ language: "html",
53
+ "copy-label": "Copy Code"
54
+ })), h("div", {
55
+ class: "my-8"
56
+ }, h("eds-code-block", {
57
+ code: "npm install @ebrains/angular",
58
+ language: "html",
59
+ "copy-label": "Copy Code"
48
60
  })));
49
61
  const EdsDocsReact = () => h("div", null, h("h2", null, "React Wrappers"), h("p", null, "Learn how to use our components in a React Application.Simple install the package below and check out the examples"), h("div", {
50
62
  class: "my-8"
@@ -56,7 +68,7 @@ const EdsDocsReact = () => h("div", null, h("h2", null, "React Wrappers"), h("p"
56
68
  "section-title": "Example React App",
57
69
  "heading-level": "h3"
58
70
  }, h("eds-code-block", {
59
- code: '\nimport { EdsHeader } from "@ebrains/react";\n\ninterface User {\n firstname: string;\n lastname: string;\n}\n\ninterface AuthStatus {\n authenticated: boolean;\n user: User | null;\n}\n\nimport { useEffect, useState } from "react";\n\nexport function App() {\n\n const [authStatus, setAuthStatus] = useState<AuthStatus>({\n authenticated: false,\n user: null,\n });\n \n const [activeTabIndex, setActiveTabIndex] = useState<number>(0);\n\n // Use useEffect to render Stencil components dynamically after the component mounts\n useEffect(() => {\n \n const handleAuthStatusChange = (event: CustomEvent) => {\n console.log(event.detail);\n setAuthStatus(event.detail); // Set the entire object\n };\n\n const handleTabChange = (\n event: CustomEvent<{ index: number; name: string }>,\n ) => {\n console.log(event.detail);\n setActiveTabIndex(event.detail.index);\n };\n\n document.addEventListener(\n "authStatusChanged",\n handleAuthStatusChange as EventListener,\n );\n document.addEventListener("tabChange", handleTabChange as EventListener);\n\n return () => {\n document.removeEventListener(\n "authStatusChanged",\n handleAuthStatusChange as EventListener,\n );\n document.removeEventListener(\n "tabChange",\n handleTabChange as EventListener,\n );\n };\n }, []); // Empty dependency array ensures this runs only once after mounting\n\n return (\n <div id="main">\n <EdsHeader\n home-url="/"\n user-feature={false}\n keycloak-url="http://localhost:8080"\n keycloak-realm="nigeor-realm"\n keycloak-client-id="stencil-app"\n links="[\n { "label": "About", "url": "/about" },\n { "label": "Focus Areas", "url": "/focus-areas" },\n { "label": "News & Events", "url": "/news-and-events" },\n { "label": "Contact", "url": "/contact" }\n ]"\n ></EdsHeader>\n\n <div> \n User is{" "} {authStatus.authenticated ? "authenticated" : "not authenticated"}\n </div>\n {authStatus.user && <div>Welcome, {authStatus.user.firstname}</div>}\n </div>\n </div>\n );\n}\n\nexport default App;\n',
71
+ code: '\nimport {\n EdsHeader,\n EdsFullscreenMenu,\n EdsUser\n} from "@ebrains/react";\n\ninterface User {\n firstname: string;\n lastname: string;\n // Add any other properties your user object might have\n}\n\ninterface AuthStatus {\n authenticated: boolean;\n user: User | null;\n}\n\nimport { useEffect, useState } from "react";\n\nexport function App() {\n const [authStatus, setAuthStatus] = useState<AuthStatus>({\n authenticated: false,\n user: null,\n });\n const [activeTabIndex, setActiveTabIndex] = useState<number>(0);\n\n // Use useEffect to render Stencil components dynamically after the component mounts\n useEffect(() => {\n const handleAuthStatusChange = (event: CustomEvent) => {\n console.log(event.detail);\n setAuthStatus(event.detail); // Set the entire object\n };\n\n document.addEventListener(\n "authStatusChanged",\n handleAuthStatusChange as EventListener,\n );\n\n return () => {\n document.removeEventListener(\n "authStatusChanged",\n handleAuthStatusChange as EventListener,\n );\n };\n }, []);\n\n return (\n <div>\n <EdsHeader\n homeUrl="/"\n menuEnabled={true}\n inverseHeader={false}\n links={[\n { label: "About", url: "#" },\n { label: "Focus Areas", url: "#" },\n { label: "News & Events", url: "#" },\n { label: "Contact", url: "#" }\n ]}\n >\n <div className="px-16">\n <EdsUser\n keycloak-url="http://localhost:8080"\n keycloak-realm="nigeor-realm"\n keycloak-client-id="stencil-app"\n ></EdsUser>\n </div>\n </EdsHeader>\n\n <EdsFullscreenMenu\n home-url="/"\n links={[\n { label: "About", url: "#" },\n { label: "Focus Areas", url: "#" },\n { label: "News & Events", url: "#" },\n { label: "Contact", url: "#" }\n ]}\n ></EdsFullscreenMenu>\n \n <div>\n User is{" "}\n {authStatus.authenticated ? "authenticated" : "not authenticated"}\n </div>\n {authStatus.user && <div>Welcome, {authStatus.user.firstname}</div>}\n\n <div id="main"></div>\n </div>\n );\n}\n\nexport default App;\n\n',
60
72
  language: "javascript",
61
73
  "copy-label": "Copy Code"
62
74
  })));
@@ -137,7 +149,7 @@ const EdsComponentsSection = class {
137
149
  }
138
150
  render() {
139
151
  return h("div", {
140
- key: 'ce34514ab73daa5baa011bda56a13d6197f8bfd0',
152
+ key: '7e582a0eeafc2687229454532b5a7f66f91c1856',
141
153
  class: "container"
142
154
  }, this.renderContent());
143
155
  }
@@ -20,7 +20,7 @@ const EdsDocsPalettes = class {
20
20
  }
21
21
  render() {
22
22
  return h("div", {
23
- key: '42f0a4598c64661d98054522e88366ec591a2cb3',
23
+ key: 'e8cd71caa7b23cc4dc28c694ecb9f13e3fd4170a',
24
24
  class: "container"
25
25
  }, this.renderContent());
26
26
  }
@@ -36,7 +36,7 @@ const EdsDocsContent = class {
36
36
  }
37
37
  render() {
38
38
  return h("div", {
39
- key: '10708d591c4077e4e1fe94073322f01121253bdb',
39
+ key: 'b140f7650e5e01711dc0778b04af83f9d004efc7',
40
40
  class: "container"
41
41
  }, this.renderContent());
42
42
  }