From 8d0f8abfa867a69ee86e43458c5865e96f8e7aef Mon Sep 17 00:00:00 2001 From: Kertu Ilves Date: Wed, 5 Jul 2023 11:38:06 +0300 Subject: [PATCH] feat: add dashboard lightweight card https://app.clickup.com/t/861n0qm47 --- packages/cxl-lumo-styles/src/icons.js | 6 ++ packages/cxl-ui/scss/global/cxl-card.scss | 54 ++++++++++++++++++ .../cxl-card/[theme=cxl-course].stories.js | 57 +++++++++++++++++++ 3 files changed, 117 insertions(+) create mode 100644 packages/storybook/cxl-ui/cxl-card/[theme=cxl-course].stories.js diff --git a/packages/cxl-lumo-styles/src/icons.js b/packages/cxl-lumo-styles/src/icons.js index 677423744..83668e554 100644 --- a/packages/cxl-lumo-styles/src/icons.js +++ b/packages/cxl-lumo-styles/src/icons.js @@ -53,6 +53,12 @@ $documentContainer.innerHTML = ` + + + + + + diff --git a/packages/cxl-ui/scss/global/cxl-card.scss b/packages/cxl-ui/scss/global/cxl-card.scss index 1ae5ad441..aff81d02d 100644 --- a/packages/cxl-ui/scss/global/cxl-card.scss +++ b/packages/cxl-ui/scss/global/cxl-card.scss @@ -24,4 +24,58 @@ cxl-card { display: block; } } + + &[theme~="cxl-course"] { + .entry-header { + display: flex; + align-items: flex-start; + justify-content: space-between; + + > vaadin-icon { + position: absolute; + top: calc(var(--lumo-space-m) * -1); + right: 0; + width: calc(var(--lumo-space-m) * 2); + height: calc(var(--lumo-space-m) * 2); + padding: 6px; + color: var(--lumo-primary-contrast-color); + background-color: var(--lumo-primary-color); + border-radius: 100%; + } + + .thumbnail { + width: calc(var(--lumo-icon-size-s) * 4); + height: calc(var(--lumo-icon-size-s) * 4); + margin: 0 0 0 var(--lumo-space-s); + border: 0; + } + } + + .entry-title { + font-weight: 600; + + > vaadin-icon { + margin-top: calc(var(--lumo-space-xs) * -1); + color: var(--lumo-primary-color); + } + } + + .entry-byline { + color: var(--lumo-contrast-70pct); + + > div { + display: flex; + align-items: center; + } + + vaadin-icon { + margin-right: var(--lumo-space-xs); + font-size: var(--lumo-font-size-m); + } + } + } + + &[theme~="cxl-course"][theme~="cxl-course-completed"] { + opacity: 0.6; + } } diff --git a/packages/storybook/cxl-ui/cxl-card/[theme=cxl-course].stories.js b/packages/storybook/cxl-ui/cxl-card/[theme=cxl-course].stories.js new file mode 100644 index 000000000..45f3b29fa --- /dev/null +++ b/packages/storybook/cxl-ui/cxl-card/[theme=cxl-course].stories.js @@ -0,0 +1,57 @@ +import { html } from 'lit'; +import '@conversionxl/cxl-ui/src/components/cxl-card.js'; +import '@conversionxl/cxl-lumo-styles'; + +export default { + title: 'CXL UI/cxl-card', +}; + +const Template = ({ el, State }) => html` + +
+ ${State === 'new' + ? html`` + : html``} +
+
+ Account based marketing + ${State === 'completed' + ? html`` + : html``} +
+ +
+ +
+
+`; + +export const CXLCourse = Template.bind({}); + +CXLCourse.args = { + el: { cxl_hybrid_attr_post: { '@attributes': {} } }, + State: 'default', +}; + +CXLCourse.argTypes = { + State: { + control: { + options: ['default', 'new', 'completed'], + type: 'inline-radio', + }, + }, +}; + +CXLCourse.story = { + name: '[theme=cxl-course]', +};