@ebrains/react 0.0.1-alpha.0 → 0.2.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.
- package/README.md +4 -48
- package/arrow-diagonal-black-8f0494c3.esm.js +3 -0
- package/arrow-right-9322ba8a.esm.js +5 -0
- package/bluesky-cc5edd2d.esm.js +14 -0
- package/chevron-down-6144c823.esm.js +12 -0
- package/chevron-left-ca6c66e1.esm.js +11 -0
- package/chevron-right-b88ed2d4.esm.js +5 -0
- package/chevron-up-c66bd477.esm.js +12 -0
- package/close-87fc0d63.esm.js +5 -0
- package/color-0ba8ed56.esm.js +423 -0
- package/color-primary-palette_6.entry.esm.js +756 -0
- package/copy-03b72cb6.esm.js +5 -0
- package/correct-use-of-colors.entry.esm.js +243 -0
- package/eds-accordion.entry.esm.js +132 -0
- package/eds-alert_28.entry.esm.js +227 -0
- package/eds-block-break.entry.esm.js +22 -0
- package/eds-breadcrumb.entry.esm.js +169 -0
- package/eds-card-project.entry.esm.js +92 -0
- package/eds-card-section.entry.esm.js +60 -0
- package/eds-card-tags.entry.esm.js +27 -0
- package/eds-card-tool.entry.esm.js +106 -0
- package/eds-card-wrapper.entry.esm.js +39 -0
- package/eds-code-block.entry.esm.js +2243 -0
- package/eds-components-section.entry.esm.js +113 -0
- package/eds-docs-palettes.entry.esm.js +29 -0
- package/eds-docs-tokens.entry.esm.js +45 -0
- package/eds-footer.entry.esm.js +110 -0
- package/eds-frame.entry.esm.js +117 -0
- package/eds-fullscreen-menu.entry.esm.js +143 -0
- package/eds-icon-arrow-diagonal.entry.esm.js +21 -0
- package/eds-icon-arrow-right.entry.esm.js +21 -0
- package/eds-icon-bluesky.entry.esm.js +21 -0
- package/eds-icon-chevron-down.entry.esm.js +21 -0
- package/eds-icon-chevron-left.entry.esm.js +21 -0
- package/eds-icon-chevron-right.entry.esm.js +21 -0
- package/eds-icon-chevron-up.entry.esm.js +21 -0
- package/eds-icon-close.entry.esm.js +21 -0
- package/eds-icon-copy.entry.esm.js +21 -0
- package/eds-icon-eu.entry.esm.js +21 -0
- package/eds-icon-facebook.entry.esm.js +21 -0
- package/eds-icon-gitlab.entry.esm.js +21 -0
- package/eds-icon-linkedin.entry.esm.js +21 -0
- package/eds-icon-loader.entry.esm.js +21 -0
- package/eds-icon-mastodon.entry.esm.js +21 -0
- package/eds-icon-menu.entry.esm.js +21 -0
- package/eds-icon-more.entry.esm.js +21 -0
- package/eds-icon-search.entry.esm.js +21 -0
- package/eds-icon-success.entry.esm.js +21 -0
- package/eds-icon-twitter.entry.esm.js +21 -0
- package/eds-icon-user.entry.esm.js +21 -0
- package/eds-icon-youtube.entry.esm.js +21 -0
- package/eds-login.entry.esm.js +84 -0
- package/eds-matomo-notice.entry.esm.js +129 -0
- package/eds-modal.entry.esm.js +114 -0
- package/eds-navigator.entry.esm.js +72 -0
- package/eds-pagination.entry.esm.js +258 -0
- package/eds-rating.entry.esm.js +71 -0
- package/eds-section-core_2.entry.esm.js +69 -0
- package/eds-social-networks.entry.esm.js +74 -0
- package/eds-svg-repository.entry.esm.js +316 -0
- package/eds-tab.entry.esm.js +41 -0
- package/eds-table.entry.esm.js +196 -0
- package/eds-tabs-content.entry.esm.js +145 -0
- package/eds-tabs.entry.esm.js +136 -0
- package/eds-tooltip.entry.esm.js +116 -0
- package/eu-9ddde93a.esm.js +30 -0
- package/facebook-9cb5c17f.esm.js +14 -0
- package/incorrect-use-of-colors.entry.esm.js +70 -0
- package/index-39c58238.esm.js +58 -0
- package/index.esm.js +3 -2668
- package/index.esm2.js +4783 -0
- package/keycloak-13893af6.esm.js +1594 -0
- package/linkedin-e8650abb.esm.js +28 -0
- package/loader-c9628637.esm.js +30 -0
- package/logo-color-7f1fd803.esm.js +115 -0
- package/logo-color-margins-ff8ce71b.esm.js +118 -0
- package/logo-space.entry.esm.js +32 -0
- package/logo-variations-horizontal.entry.esm.js +50 -0
- package/logo-variations-vertical.entry.esm.js +53 -0
- package/logo-white-no-bg-f382f86f.esm.js +1021 -0
- package/logo-wrong-usage.entry.esm.js +137 -0
- package/mastodon-3703ec61.esm.js +14 -0
- package/menu-340ea948.esm.js +11 -0
- package/mono-53f70232.esm.js +11 -0
- package/more-4449d549.esm.js +13 -0
- package/package.json +1 -1
- package/search-fbcd79c2.esm.js +12 -0
- package/src/components.d.ts +38 -0
- package/src/index.d.ts +1 -1
- package/src/react-component-lib/attachProps.d.ts +16 -0
- package/src/react-component-lib/case.d.ts +2 -0
- package/src/react-component-lib/createComponent.d.ts +10 -0
- package/src/react-component-lib/createOverlayComponent.d.ts +21 -0
- package/src/react-component-lib/dev.d.ts +2 -0
- package/src/react-component-lib/index.d.ts +2 -0
- package/src/react-component-lib/interfaces.d.ts +29 -0
- package/src/react-component-lib/utils/attachProps.d.ts +16 -0
- package/src/react-component-lib/utils/case.d.ts +2 -0
- package/src/react-component-lib/utils/index.d.ts +10 -0
- package/success-443809da.esm.js +18 -0
- package/toastManager-d9eee791.esm.js +34 -0
- package/token-list_3.entry.esm.js +385 -0
- package/token-ratios.entry.esm.js +49 -0
- package/token-spacing.entry.esm.js +93 -0
- package/token-typography.entry.esm.js +264 -0
- package/twitter-ac21b505.esm.js +14 -0
- package/user-71ebdc15.esm.js +16 -0
- package/youtube-efbfbdc4.esm.js +14 -0
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { r as registerInstance, h } from './index.esm2.js';
|
|
2
|
+
import 'react';
|
|
3
|
+
import 'react/jsx-runtime';
|
|
4
|
+
import 'react-dom';
|
|
5
|
+
|
|
6
|
+
const edsBlockBreakCss = ".border-soft{border-color:rgba(0, 0, 0, .15)}.border-softer{border-color:rgba(0, 0, 0, .1)}.border-softest{border-color:rgba(0, 0, 0, .05)}.my-16{margin-top:1rem;margin-bottom:1rem}.my-20{margin-top:1.25rem;margin-bottom:1.25rem}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.w-full{width:100%}.border-t-2{border-top-width:2px}";
|
|
7
|
+
const EdsBlockBreakStyle0 = edsBlockBreakCss;
|
|
8
|
+
const EdsBlockBreak = class {
|
|
9
|
+
constructor(hostRef) {
|
|
10
|
+
registerInstance(this, hostRef);
|
|
11
|
+
this.extraClass = '';
|
|
12
|
+
}
|
|
13
|
+
render() {
|
|
14
|
+
return h("hr", {
|
|
15
|
+
key: '85b5253d4abb77072424452d2ff6a0d631e67652',
|
|
16
|
+
class: `border-softer my-20 inline-block w-full border-t-2 ${this.extraClass}`
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
EdsBlockBreak.style = EdsBlockBreakStyle0;
|
|
21
|
+
|
|
22
|
+
export { EdsBlockBreak as eds_block_break };
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
import { r as registerInstance, h, g as getElement } from './index.esm2.js';
|
|
2
|
+
import 'react';
|
|
3
|
+
import 'react/jsx-runtime';
|
|
4
|
+
import 'react-dom';
|
|
5
|
+
|
|
6
|
+
const edsBreadcrumbCss = "blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}.hidden{display:none}.block{display:block}.inline-block{display:inline-block}.flex{display:flex}.inline-flex{display:inline-flex}.items-center{align-items:center}.justify-center{justify-content:center}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(0.125rem * var(--tw-space-x-reverse));margin-left:calc(0.125rem * calc(1 - var(--tw-space-x-reverse)))}.px-2{padding-left:0.125rem;padding-right:0.125rem}.w-20{width:1.25rem}.w-28{width:1.75rem}.w-32{width:2rem}.w-44{width:2.75rem}.h-20{height:1.25rem}.h-24{height:1.5rem}.h-28{height:1.75rem}.h-32{height:2rem}@media (min-width: 750px){.md\\:block{display:block}}";
|
|
7
|
+
const EdsBreadcrumbStyle0 = edsBreadcrumbCss;
|
|
8
|
+
const EdsBreadcrumb = class {
|
|
9
|
+
constructor(hostRef) {
|
|
10
|
+
registerInstance(this, hostRef);
|
|
11
|
+
/**
|
|
12
|
+
* Updates the maximum number of visible items and tracks if the screen is small.
|
|
13
|
+
*/
|
|
14
|
+
this.updateScreenSize = () => {
|
|
15
|
+
const width = window.innerWidth;
|
|
16
|
+
if (width < 769) {
|
|
17
|
+
this.maxVisibleItems = 3;
|
|
18
|
+
this.isSmallScreen = true;
|
|
19
|
+
} else if (width <= 1024) {
|
|
20
|
+
this.maxVisibleItems = 4;
|
|
21
|
+
this.isSmallScreen = true;
|
|
22
|
+
} else {
|
|
23
|
+
this.maxVisibleItems = 6;
|
|
24
|
+
this.isSmallScreen = false;
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
this.items = [];
|
|
28
|
+
this.intent = 'ghost';
|
|
29
|
+
this.parsedItems = [];
|
|
30
|
+
this.isSmallScreen = false;
|
|
31
|
+
this.maxVisibleItems = 6;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Watch for changes to the `items` prop and parse it when it changes.
|
|
35
|
+
* Converts the `items` string into an array of objects if it is a JSON string.
|
|
36
|
+
* If the format is invalid, it logs an error and sets an empty array.
|
|
37
|
+
*
|
|
38
|
+
* @param newValue - The new value for the `items` prop.
|
|
39
|
+
*/
|
|
40
|
+
parseItems(newValue) {
|
|
41
|
+
try {
|
|
42
|
+
if (typeof newValue === 'string') {
|
|
43
|
+
this.parsedItems = JSON.parse(newValue);
|
|
44
|
+
} else {
|
|
45
|
+
this.parsedItems = newValue;
|
|
46
|
+
}
|
|
47
|
+
} catch (e) {
|
|
48
|
+
this.parsedItems = [];
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Lifecycle method that runs when the component is about to be loaded.
|
|
53
|
+
* It parses the initial `items` prop value.
|
|
54
|
+
*/
|
|
55
|
+
componentWillLoad() {
|
|
56
|
+
this.parseItems(this.items);
|
|
57
|
+
this.updateScreenSize();
|
|
58
|
+
window.addEventListener('resize', this.updateScreenSize);
|
|
59
|
+
}
|
|
60
|
+
disconnectedCallback() {
|
|
61
|
+
window.removeEventListener('resize', this.updateScreenSize);
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Lifecycle method that runs when the component has fully loaded.
|
|
65
|
+
* It emits a custom event for each `eds-link` element contained within the breadcrumb.
|
|
66
|
+
*/
|
|
67
|
+
componentDidLoad() {
|
|
68
|
+
// Emit context for each eds-link element after the component is fully loaded
|
|
69
|
+
const links = this.el.shadowRoot.querySelectorAll('eds-link');
|
|
70
|
+
links.forEach(link => {
|
|
71
|
+
this.emitContext(link);
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Emits a custom event called `parentContext` for a given link element.
|
|
76
|
+
* This event provides context information about the breadcrumb component.
|
|
77
|
+
*
|
|
78
|
+
* @param linkElement - The link element to which the event will be dispatched.
|
|
79
|
+
*/
|
|
80
|
+
emitContext(linkElement) {
|
|
81
|
+
const event = new CustomEvent('parentContext', {
|
|
82
|
+
detail: {
|
|
83
|
+
componentName: this.el.tagName.toLowerCase(),
|
|
84
|
+
identifier: null
|
|
85
|
+
}
|
|
86
|
+
});
|
|
87
|
+
linkElement.dispatchEvent(event);
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Truncates breadcrumb items based on the maxVisibleItems value.
|
|
91
|
+
* Truncates `label` to 10 characters if `isSmallScreen` is true, except for the last label.
|
|
92
|
+
*/
|
|
93
|
+
getTruncatedItems() {
|
|
94
|
+
const totalItems = this.parsedItems.length;
|
|
95
|
+
if (totalItems > this.maxVisibleItems) {
|
|
96
|
+
const firstItem = this.parsedItems[0];
|
|
97
|
+
const lastItems = this.parsedItems.slice(-2);
|
|
98
|
+
const ellipsis = {
|
|
99
|
+
label: '...',
|
|
100
|
+
url: '',
|
|
101
|
+
isHidden: true
|
|
102
|
+
};
|
|
103
|
+
if (this.maxVisibleItems === 3) {
|
|
104
|
+
return [this.truncateLabel(firstItem), ellipsis, ...lastItems.map((item, index) => index === lastItems.length - 1 ? item : this.truncateLabel(item))];
|
|
105
|
+
} else if (this.maxVisibleItems === 4) {
|
|
106
|
+
const middleItem = this.parsedItems[Math.floor(totalItems / 2)];
|
|
107
|
+
return [this.truncateLabel(firstItem), this.truncateLabel(middleItem), ellipsis, ...lastItems.map((item, index) => index === lastItems.length - 1 ? item : this.truncateLabel(item))];
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
return this.parsedItems.map((item, index) => index === this.parsedItems.length - 1 ? item : this.truncateLabel(item));
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Truncates the label of a breadcrumb item to a maximum of 10 characters
|
|
114
|
+
* if the screen is small.
|
|
115
|
+
*/
|
|
116
|
+
truncateLabel(item) {
|
|
117
|
+
if (item.label.length > 15) {
|
|
118
|
+
return Object.assign(Object.assign({}, item), {
|
|
119
|
+
label: `${item.label.slice(0, 15)}...`
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
return item;
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Render method for the breadcrumb component.
|
|
126
|
+
* It creates a navigation element with an ordered list of breadcrumb links.
|
|
127
|
+
* The last link is disabled and marked as the current page.
|
|
128
|
+
*/
|
|
129
|
+
render() {
|
|
130
|
+
const itemsToRender = this.getTruncatedItems();
|
|
131
|
+
return h("nav", {
|
|
132
|
+
key: 'b3f515670374a7451981638d658f8e37f07ab10c',
|
|
133
|
+
"aria-label": "Breadcrumb"
|
|
134
|
+
}, h("ol", {
|
|
135
|
+
key: '999b2035f3c996016e753be3826881a11054e184',
|
|
136
|
+
class: "flex items-center space-x-2"
|
|
137
|
+
}, itemsToRender.map((item, index) => {
|
|
138
|
+
const isLast = index === itemsToRender.length - 1;
|
|
139
|
+
return h("li", {
|
|
140
|
+
class: "flex items-center"
|
|
141
|
+
}, !item.isHidden ? h("eds-link", {
|
|
142
|
+
label: item.label,
|
|
143
|
+
url: item.url,
|
|
144
|
+
intent: this.intent,
|
|
145
|
+
current: isLast,
|
|
146
|
+
"aria-label": item.label,
|
|
147
|
+
size: "small",
|
|
148
|
+
"icon-small": "false"
|
|
149
|
+
}) : h("span", {
|
|
150
|
+
class: "truncate px-2 ",
|
|
151
|
+
"aria-hidden": "true"
|
|
152
|
+
}, "..."), !isLast && !item.isHidden && h("eds-icon-wrapper", {
|
|
153
|
+
icon: "chevron-right",
|
|
154
|
+
class: "w-20 h-20"
|
|
155
|
+
}));
|
|
156
|
+
})));
|
|
157
|
+
}
|
|
158
|
+
get el() {
|
|
159
|
+
return getElement(this);
|
|
160
|
+
}
|
|
161
|
+
static get watchers() {
|
|
162
|
+
return {
|
|
163
|
+
"items": ["parseItems"]
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
};
|
|
167
|
+
EdsBreadcrumb.style = EdsBreadcrumbStyle0;
|
|
168
|
+
|
|
169
|
+
export { EdsBreadcrumb as eds_breadcrumb };
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { r as registerInstance, h, g as getElement } from './index.esm2.js';
|
|
2
|
+
import { s as sendAnalytics, g as gradientBGColorVariants } from './color-0ba8ed56.esm.js';
|
|
3
|
+
import 'react';
|
|
4
|
+
import 'react/jsx-runtime';
|
|
5
|
+
import 'react-dom';
|
|
6
|
+
import './index-39c58238.esm.js';
|
|
7
|
+
|
|
8
|
+
const EdsCardProject = class {
|
|
9
|
+
constructor(hostRef) {
|
|
10
|
+
registerInstance(this, hostRef);
|
|
11
|
+
this.image = undefined;
|
|
12
|
+
this.editorialTitle = undefined;
|
|
13
|
+
this.headingLevel = 'h3';
|
|
14
|
+
this.categoryTitle = undefined;
|
|
15
|
+
this.color = undefined;
|
|
16
|
+
this.bgOnHover = false;
|
|
17
|
+
this.vertical = false;
|
|
18
|
+
this.titleProject = undefined;
|
|
19
|
+
this.url = undefined;
|
|
20
|
+
this.parsedImage = null;
|
|
21
|
+
}
|
|
22
|
+
componentWillLoad() {
|
|
23
|
+
// Parse the image prop if it's provided
|
|
24
|
+
if (this.image) {
|
|
25
|
+
try {
|
|
26
|
+
this.parsedImage = JSON.parse(this.image);
|
|
27
|
+
//console.log(this.parsedImage);
|
|
28
|
+
} catch (error) {
|
|
29
|
+
//console.error('Error parsing image prop:', error);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
handleClick(event) {
|
|
34
|
+
var _a;
|
|
35
|
+
event.preventDefault();
|
|
36
|
+
sendAnalytics({
|
|
37
|
+
category: 'ui-component',
|
|
38
|
+
tag: this.el.tagName.toLowerCase(),
|
|
39
|
+
name: ((_a = this.titleProject) === null || _a === void 0 ? void 0 : _a.toLowerCase()) || '',
|
|
40
|
+
action: 'click'
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
render() {
|
|
44
|
+
var _a;
|
|
45
|
+
const cardClasses = ['min-h-156 border-inside after:border-softest @container overflow-hidden border-0 after:rounded-lg', this.color ? gradientBGColorVariants({
|
|
46
|
+
color: this.color,
|
|
47
|
+
hover: this.bgOnHover,
|
|
48
|
+
class: 'before:border-2 before:rounded-lg before:border-softest'
|
|
49
|
+
}) : '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
|
+
const imageClasses = this.vertical ? '' : 'max-w-120 @md:max-w-192 order-first w-full lg:order-last';
|
|
51
|
+
return h("article", {
|
|
52
|
+
key: '6af49754300ded8748ac3f40175e262480054969',
|
|
53
|
+
class: cardClasses,
|
|
54
|
+
onClick: event => this.handleClick(event)
|
|
55
|
+
}, h("div", {
|
|
56
|
+
key: '91e8501312957c44d9dc075f2ec3a9e5a5d425cb',
|
|
57
|
+
class: `flex grow flex-col ${this.vertical ? 'min-h-156' : ''}`
|
|
58
|
+
}, h("div", {
|
|
59
|
+
key: '44e3cf2d67255bb5669b6c721741ed060ba599e7',
|
|
60
|
+
class: "lg:max-w-[720px]"
|
|
61
|
+
}, h("eds-card-title", {
|
|
62
|
+
key: '0cf1d124b975e4d7223bab58db0d5861d348ceb2',
|
|
63
|
+
"heading-level": this.headingLevel,
|
|
64
|
+
titleClass: this.image ? 'f-ui-01' : undefined,
|
|
65
|
+
"card-title": this.titleProject,
|
|
66
|
+
url: this.url
|
|
67
|
+
}), this.editorialTitle && h("span", {
|
|
68
|
+
key: '85e1158691ae876bc0f3c6d0c5557f394ae935cb',
|
|
69
|
+
class: `block ${this.vertical ? 'f-ui-02' : 'mt-4 f-heading-06'}`
|
|
70
|
+
}, this.editorialTitle)), this.categoryTitle && h("div", {
|
|
71
|
+
key: '9ffdc9f14709600b623c3a5f878b2700864ced79',
|
|
72
|
+
class: "mt-auto flex items-center gap-x-12 pt-12"
|
|
73
|
+
}, ((_a = this.categoryTitle) === null || _a === void 0 ? void 0 : _a.length) && h("eds-tag", {
|
|
74
|
+
key: 'ecc5e55430df355c13420add9969855d1d54c27f',
|
|
75
|
+
label: this.categoryTitle
|
|
76
|
+
}))), this.parsedImage && h("div", {
|
|
77
|
+
key: '97de7a06a13d9843cb18fe4eb19303f436e2ce16',
|
|
78
|
+
class: imageClasses
|
|
79
|
+
}, h("div", {
|
|
80
|
+
key: '532d3c8252316a68976b4587c3d5b63167c0c598',
|
|
81
|
+
class: "aspect-1x1 w-full"
|
|
82
|
+
}, h("eds-img", Object.assign({
|
|
83
|
+
key: '37ee3dbbc99ec8c9139b0a89f9c725768eac5f6d',
|
|
84
|
+
sizes: this.vertical ? this.parsedImage.sizes || '' : '192px'
|
|
85
|
+
}, this.parsedImage)))));
|
|
86
|
+
}
|
|
87
|
+
get el() {
|
|
88
|
+
return getElement(this);
|
|
89
|
+
}
|
|
90
|
+
};
|
|
91
|
+
|
|
92
|
+
export { EdsCardProject as eds_card_project };
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { r as registerInstance, h } from './index.esm2.js';
|
|
2
|
+
import 'react';
|
|
3
|
+
import 'react/jsx-runtime';
|
|
4
|
+
import 'react-dom';
|
|
5
|
+
|
|
6
|
+
const edsCardSectionCss = ".w-full{width:100%}.grid-layout{display:grid;grid-template-columns:repeat(var(--container-grid-columns, var(--grid-columns)), 1fr);grid-gap:var(--inner-gutter)}.grid-col-span-12{--container-grid-columns:12;grid-column:span 12 / span 12}.gap-y-4{row-gap:0.25rem}.gap-y-8{row-gap:0.5rem}.flex-row{flex-direction:row}.flex-row-reverse{flex-direction:row-reverse}.flex-col{flex-direction:column}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}@media (min-width: 750px){.md\\:flex{display:flex}.md\\:hidden{display:none}.md\\:gap-y-12{row-gap:0.75rem}.md\\:pt-28{padding-top:1.75rem}}@media (min-width: 750px){.md\\:grid-col-span-4{--container-grid-columns:4;grid-column:span 4 / span 4}.md\\:grid-col-span-6{--container-grid-columns:6;grid-column:span 6 / span 6}.md\\:w-10-cols{width:calc(((10 / var(--container-grid-columns, var(--grid-columns))) * 100%) - (var(--inner-gutter) - (10 / var(--container-grid-columns, var(--grid-columns)) * var(--inner-gutter))))}.cols-container>.md\\:w-10-cols{width:calc(((10 / var(--container-grid-columns, var(--grid-columns))) * (100% - var(--inner-gutter))) - (var(--inner-gutter) - (10 / var(--container-grid-columns, var(--grid-columns)) * var(--inner-gutter))))}.md\\:w-10-cols>*{--container-grid-columns:10}}@media (min-width: 900px){.lg\\:grid-col-span-5{--container-grid-columns:5;grid-column:span 5 / span 5}.lg\\:grid-col-span-6{--container-grid-columns:6;grid-column:span 6 / span 6}.lg\\:grid-col-start-7{grid-column-start:7}.lg\\:w-8-cols{width:calc(((8 / var(--container-grid-columns, var(--grid-columns))) * 100%) - (var(--inner-gutter) - (8 / var(--container-grid-columns, var(--grid-columns)) * var(--inner-gutter))))}.cols-container>.lg\\:w-8-cols{width:calc(((8 / var(--container-grid-columns, var(--grid-columns))) * (100% - var(--inner-gutter))) - (var(--inner-gutter) - (8 / var(--container-grid-columns, var(--grid-columns)) * var(--inner-gutter))))}.lg\\:w-8-cols>*{--container-grid-columns:8}.lg\\:w-10-cols{width:calc(((10 / var(--container-grid-columns, var(--grid-columns))) * 100%) - (var(--inner-gutter) - (10 / var(--container-grid-columns, var(--grid-columns)) * var(--inner-gutter))))}.cols-container>.lg\\:w-10-cols{width:calc(((10 / var(--container-grid-columns, var(--grid-columns))) * (100% - var(--inner-gutter))) - (var(--inner-gutter) - (10 / var(--container-grid-columns, var(--grid-columns)) * var(--inner-gutter))))}.lg\\:w-10-cols>*{--container-grid-columns:10}}@media (min-width: 900px){.lg\\:order-last{order:9999}.lg\\:order-none{order:0}.lg\\:mt-0{margin-top:0rem}.lg\\:block{display:block}.lg\\:flex{display:flex}.lg\\:hidden{display:none}.lg\\:w-\\[150px\\]{width:150px}.lg\\:w-auto{width:auto}.lg\\:max-w-\\[720px\\]{max-width:720px}.lg\\:flex-row{flex-direction:row}.lg\\:flex-nowrap{flex-wrap:nowrap}.lg\\:gap-y-16{row-gap:1rem}.lg\\:px-28{padding-left:1.75rem;padding-right:1.75rem}.lg\\:\\!pl-12{padding-left:0.75rem !important}.lg\\:\\!pr-12{padding-right:0.75rem !important}}";
|
|
7
|
+
const EdsCardSectionStyle0 = edsCardSectionCss;
|
|
8
|
+
const EdsCardSection = class {
|
|
9
|
+
constructor(hostRef) {
|
|
10
|
+
registerInstance(this, hostRef);
|
|
11
|
+
this.cards = undefined;
|
|
12
|
+
this.cols = 4;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Parses the `cards` JSON string prop into an array of card objects.
|
|
16
|
+
* If parsing fails, returns an empty array.
|
|
17
|
+
*
|
|
18
|
+
* @returns {any[]} An array of parsed card objects.
|
|
19
|
+
*/
|
|
20
|
+
get parsedCards() {
|
|
21
|
+
try {
|
|
22
|
+
return JSON.parse(this.cards);
|
|
23
|
+
} catch (e) {
|
|
24
|
+
//console.error('Error parsing links JSON', e);
|
|
25
|
+
return [];
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Renders the card section as a grid layout.
|
|
30
|
+
* Each parsed card object is mapped to an `<eds-card-generic>` component,
|
|
31
|
+
* displaying card details such as title, description, avatar, etc.
|
|
32
|
+
*
|
|
33
|
+
* @returns {JSX.Element} The rendered section containing a list of cards.
|
|
34
|
+
*/
|
|
35
|
+
render() {
|
|
36
|
+
return h("section", {
|
|
37
|
+
key: 'f8e6a03e37677623fad3c53327f6260920a5e914',
|
|
38
|
+
class: "w-full"
|
|
39
|
+
}, h("ul", {
|
|
40
|
+
key: '1da1bc3a5aecadd52b4d025d7d02dc252e47b34a',
|
|
41
|
+
class: "grid-layout gap-y-8 md:gap-y-12 lg:gap-y-16"
|
|
42
|
+
}, this.parsedCards.map(card => h("li", {
|
|
43
|
+
class: `grid-col-span-12 md:grid-col-span-${this.cols} flex flex-col`
|
|
44
|
+
}, h("eds-card-generic", {
|
|
45
|
+
cardTitle: card.title,
|
|
46
|
+
description: card.description,
|
|
47
|
+
avatar: card.avatar,
|
|
48
|
+
headingLevel: card.headingLevel,
|
|
49
|
+
tags: card.tags,
|
|
50
|
+
url: card.url,
|
|
51
|
+
bg: card.bg,
|
|
52
|
+
tiny: card.tiny,
|
|
53
|
+
image: card.image,
|
|
54
|
+
withHover: card.withHover
|
|
55
|
+
})))));
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
EdsCardSection.style = EdsCardSectionStyle0;
|
|
59
|
+
|
|
60
|
+
export { EdsCardSection as eds_card_section };
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { r as registerInstance, h } from './index.esm2.js';
|
|
2
|
+
import 'react';
|
|
3
|
+
import 'react/jsx-runtime';
|
|
4
|
+
import 'react-dom';
|
|
5
|
+
|
|
6
|
+
const edsCardTagsCss = ".flex{display:flex}.flex-wrap{flex-wrap:wrap}.gap-y-4{row-gap:0.25rem}";
|
|
7
|
+
const EdsCardTagsStyle0 = edsCardTagsCss;
|
|
8
|
+
const EdsCardTags = class {
|
|
9
|
+
constructor(hostRef) {
|
|
10
|
+
registerInstance(this, hostRef);
|
|
11
|
+
this.accent = false;
|
|
12
|
+
this.tags = [];
|
|
13
|
+
}
|
|
14
|
+
render() {
|
|
15
|
+
return h("div", {
|
|
16
|
+
key: 'b201dc6df5e809d828a055fb5f01fe798e228361',
|
|
17
|
+
class: "flex flex-wrap gap-y-4"
|
|
18
|
+
}, this.tags.map((tag, index) => h("eds-tag", {
|
|
19
|
+
key: index,
|
|
20
|
+
intent: this.accent ? 'accent' : 'default',
|
|
21
|
+
label: tag
|
|
22
|
+
})));
|
|
23
|
+
}
|
|
24
|
+
};
|
|
25
|
+
EdsCardTags.style = EdsCardTagsStyle0;
|
|
26
|
+
|
|
27
|
+
export { EdsCardTags as eds_card_tags };
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { r as registerInstance, h, g as getElement } from './index.esm2.js';
|
|
2
|
+
import { s as sendAnalytics } from './color-0ba8ed56.esm.js';
|
|
3
|
+
import 'react';
|
|
4
|
+
import 'react/jsx-runtime';
|
|
5
|
+
import 'react-dom';
|
|
6
|
+
import './index-39c58238.esm.js';
|
|
7
|
+
|
|
8
|
+
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
|
+
const EdsCardToolStyle0 = edsCardToolCss;
|
|
10
|
+
const EdsCardTool = class {
|
|
11
|
+
constructor(hostRef) {
|
|
12
|
+
registerInstance(this, hostRef);
|
|
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 = 'h5';
|
|
20
|
+
this.tags = '';
|
|
21
|
+
this.tiny = false;
|
|
22
|
+
this.bg = true;
|
|
23
|
+
this.withHover = true;
|
|
24
|
+
this.external = false;
|
|
25
|
+
this.hierarchy = true;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Parses the `tags` prop into an array of link objects.
|
|
29
|
+
* Returns an empty array if parsing fails or if `tags` is not a valid JSON string or object.
|
|
30
|
+
*
|
|
31
|
+
* @returns {any[]} Array of parsed link objects
|
|
32
|
+
*/
|
|
33
|
+
get parsedTags() {
|
|
34
|
+
if (typeof this.tags === 'object') {
|
|
35
|
+
return this.tags;
|
|
36
|
+
} else if (typeof this.tags === 'string') {
|
|
37
|
+
try {
|
|
38
|
+
return JSON.parse(this.tags);
|
|
39
|
+
} catch (e) {
|
|
40
|
+
// eslint-disable-next-line
|
|
41
|
+
console.error('Error parsing links prop:', e);
|
|
42
|
+
return [];
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
return [];
|
|
46
|
+
}
|
|
47
|
+
componentWillLoad() {}
|
|
48
|
+
parseTags() {
|
|
49
|
+
return this.tags.split(',');
|
|
50
|
+
}
|
|
51
|
+
articleClasses() {
|
|
52
|
+
return [this.tiny ? 'min-h-120' : 'min-h-156', 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(' ');
|
|
53
|
+
}
|
|
54
|
+
handleClick() {
|
|
55
|
+
var _a;
|
|
56
|
+
//event.preventDefault();
|
|
57
|
+
sendAnalytics({
|
|
58
|
+
category: 'ui-component',
|
|
59
|
+
tag: this.el.tagName.toLowerCase(),
|
|
60
|
+
name: ((_a = this.cardTitle) === null || _a === void 0 ? void 0 : _a.toLowerCase()) || '',
|
|
61
|
+
action: 'click'
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
render() {
|
|
65
|
+
return h("article", {
|
|
66
|
+
key: 'b46c0464688e45ab29f5b58b6cd2e22ed28e1034',
|
|
67
|
+
class: `${this.el.tagName.toLowerCase()} ${this.articleClasses()}`,
|
|
68
|
+
onClick: () => this.handleClick()
|
|
69
|
+
}, h("eds-card-title", {
|
|
70
|
+
key: 'a4da791280db14754b445b1a52e33cc9a25f765e',
|
|
71
|
+
"heading-level": this.headingLevel,
|
|
72
|
+
titleClass: this.image ? 'f-ui-01' : undefined,
|
|
73
|
+
"card-title": this.cardTitle,
|
|
74
|
+
url: this.url,
|
|
75
|
+
"external-link": this.external,
|
|
76
|
+
hierarchy: this.hierarchy
|
|
77
|
+
}), this.description && h("eds-card-desc", {
|
|
78
|
+
key: '86f7c6c80b83f244ba7d07d820d5793e1dda2933',
|
|
79
|
+
class: "mt-8",
|
|
80
|
+
"truncate-lines": "3",
|
|
81
|
+
description: this.description
|
|
82
|
+
}), this.image ? h("eds-img", {
|
|
83
|
+
src: this.image,
|
|
84
|
+
alt: "Sample Image",
|
|
85
|
+
width: 200,
|
|
86
|
+
height: 150
|
|
87
|
+
}) : this.avatar || this.shortAbbreviation ? h("eds-avatar", {
|
|
88
|
+
class: "order-first mb-12",
|
|
89
|
+
picture: this.avatar,
|
|
90
|
+
initials: this.shortAbbreviation
|
|
91
|
+
}) : null, h("div", {
|
|
92
|
+
key: '46307b57160f908aa7066b2a636c4db38e0e7a8e',
|
|
93
|
+
class: "flex flex-wrap gap-y-4"
|
|
94
|
+
}, this.parsedTags.map((tag, index) => h("eds-tag", {
|
|
95
|
+
key: index,
|
|
96
|
+
intent: tag.style,
|
|
97
|
+
label: tag.label
|
|
98
|
+
}))));
|
|
99
|
+
}
|
|
100
|
+
get el() {
|
|
101
|
+
return getElement(this);
|
|
102
|
+
}
|
|
103
|
+
};
|
|
104
|
+
EdsCardTool.style = EdsCardToolStyle0;
|
|
105
|
+
|
|
106
|
+
export { EdsCardTool as eds_card_tool };
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { r as registerInstance, h, g as getElement } from './index.esm2.js';
|
|
2
|
+
import 'react';
|
|
3
|
+
import 'react/jsx-runtime';
|
|
4
|
+
import 'react-dom';
|
|
5
|
+
|
|
6
|
+
const EdsCardWrapper = class {
|
|
7
|
+
constructor(hostRef) {
|
|
8
|
+
registerInstance(this, hostRef);
|
|
9
|
+
this.tiny = false;
|
|
10
|
+
this.withBg = true;
|
|
11
|
+
this.withHover = true;
|
|
12
|
+
}
|
|
13
|
+
hasSlot(name) {
|
|
14
|
+
if (name) {
|
|
15
|
+
return !!this.el.querySelector(`[slot="${name}"]`);
|
|
16
|
+
}
|
|
17
|
+
return !!this.el.querySelector(':not([slot])');
|
|
18
|
+
}
|
|
19
|
+
render() {
|
|
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
|
+
return h("article", {
|
|
22
|
+
key: 'c52f6ad7873050c052b8c0e68b2c812d74f2ddf1',
|
|
23
|
+
class: articleClasses
|
|
24
|
+
}, h("slot", {
|
|
25
|
+
key: 'dac6f9fe339c8baa191ee2fd622332ddf25ec08d'
|
|
26
|
+
}), this.hasSlot('footer') && h("div", {
|
|
27
|
+
key: '301862515ba88f320d1af722bec6120bc3e7d723',
|
|
28
|
+
class: "mt-auto"
|
|
29
|
+
}, h("slot", {
|
|
30
|
+
key: '85d939150663a4586934413c9965aa92a9babeef',
|
|
31
|
+
name: "footer"
|
|
32
|
+
})));
|
|
33
|
+
}
|
|
34
|
+
get el() {
|
|
35
|
+
return getElement(this);
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
export { EdsCardWrapper as eds_card_wrapper };
|