@getflip/swirl-components 0.97.0 → 0.98.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 (61) hide show
  1. package/components.json +395 -3
  2. package/dist/cjs/index-506fe4ea.js +20 -8
  3. package/dist/cjs/loader.cjs.js +1 -1
  4. package/dist/cjs/swirl-accordion-item.cjs.entry.js +76 -0
  5. package/dist/cjs/swirl-accordion.cjs.entry.js +34 -0
  6. package/dist/cjs/swirl-app-layout_7.cjs.entry.js +2 -75
  7. package/dist/cjs/swirl-color-input.cjs.entry.js +78 -0
  8. package/dist/cjs/swirl-components.cjs.js +1 -1
  9. package/dist/cjs/swirl-modal.cjs.entry.js +1 -1
  10. package/dist/cjs/v4-8e8d6fbc.js +77 -0
  11. package/dist/collection/collection-manifest.json +4 -1
  12. package/dist/collection/components/swirl-accordion/swirl-accordion.css +7 -0
  13. package/dist/collection/components/swirl-accordion/swirl-accordion.js +33 -0
  14. package/dist/collection/components/swirl-accordion/swirl-accordion.spec.js +67 -0
  15. package/dist/collection/components/swirl-accordion/swirl-accordion.stories.js +64 -0
  16. package/dist/collection/components/swirl-accordion-item/swirl-accordion-item.css +155 -0
  17. package/dist/collection/components/swirl-accordion-item/swirl-accordion-item.js +246 -0
  18. package/dist/collection/components/swirl-accordion-item/swirl-accordion-item.spec.js +87 -0
  19. package/dist/collection/components/swirl-accordion-item/swirl-accordion-item.stories.js +34 -0
  20. package/dist/collection/components/swirl-color-input/swirl-color-input.css +68 -0
  21. package/dist/collection/components/swirl-color-input/swirl-color-input.js +292 -0
  22. package/dist/collection/components/swirl-color-input/swirl-color-input.spec.js +62 -0
  23. package/dist/collection/components/swirl-color-input/swirl-color-input.stories.js +22 -0
  24. package/dist/collection/components/swirl-modal/swirl-modal.css +4 -0
  25. package/dist/components/swirl-accordion-item.d.ts +11 -0
  26. package/dist/components/swirl-accordion-item.js +113 -0
  27. package/dist/components/swirl-accordion.d.ts +11 -0
  28. package/dist/components/swirl-accordion.js +49 -0
  29. package/dist/components/swirl-color-input.d.ts +11 -0
  30. package/dist/components/swirl-color-input.js +102 -0
  31. package/dist/components/swirl-icon.js +1 -35
  32. package/dist/components/swirl-icon2.js +37 -0
  33. package/dist/components/swirl-modal.js +1 -1
  34. package/dist/components/swirl-resource-list-item2.js +1 -74
  35. package/dist/components/v4.js +75 -0
  36. package/dist/esm/index-99d0060d.js +20 -8
  37. package/dist/esm/loader.js +1 -1
  38. package/dist/esm/swirl-accordion-item.entry.js +72 -0
  39. package/dist/esm/swirl-accordion.entry.js +30 -0
  40. package/dist/esm/swirl-app-layout_7.entry.js +1 -74
  41. package/dist/esm/swirl-color-input.entry.js +74 -0
  42. package/dist/esm/swirl-components.js +1 -1
  43. package/dist/esm/swirl-modal.entry.js +1 -1
  44. package/dist/esm/v4-fa4bb814.js +75 -0
  45. package/dist/swirl-components/p-19b890a3.js +1 -0
  46. package/dist/swirl-components/p-230745da.entry.js +1 -0
  47. package/dist/swirl-components/p-244a747a.entry.js +1 -0
  48. package/dist/swirl-components/{p-0fc0cd2c.entry.js → p-342bb04d.entry.js} +1 -1
  49. package/dist/swirl-components/p-b1648433.entry.js +1 -0
  50. package/dist/swirl-components/p-e8231bad.entry.js +1 -0
  51. package/dist/swirl-components/swirl-components.esm.js +1 -1
  52. package/dist/types/components/swirl-accordion/swirl-accordion.d.ts +6 -0
  53. package/dist/types/components/swirl-accordion/swirl-accordion.stories.d.ts +14 -0
  54. package/dist/types/components/swirl-accordion-item/swirl-accordion-item.d.ts +30 -0
  55. package/dist/types/components/swirl-accordion-item/swirl-accordion-item.stories.d.ts +14 -0
  56. package/dist/types/components/swirl-color-input/swirl-color-input.d.ts +24 -0
  57. package/dist/types/components/swirl-color-input/swirl-color-input.stories.d.ts +14 -0
  58. package/dist/types/components.d.ts +97 -4
  59. package/package.json +1 -1
  60. package/vscode-data.json +82 -0
  61. package/dist/swirl-components/p-8a00faee.entry.js +0 -1
@@ -0,0 +1,64 @@
1
+ import { generateStoryElement } from "../../utils";
2
+ import Docs from "./swirl-accordion.mdx";
3
+ export default {
4
+ component: "swirl-accordion",
5
+ tags: ["autodocs"],
6
+ parameters: {
7
+ docs: {
8
+ page: Docs,
9
+ },
10
+ },
11
+ title: "Components/SwirlAccordion",
12
+ };
13
+ const Template = (args) => {
14
+ const element = generateStoryElement("swirl-accordion", args);
15
+ element.innerHTML = `
16
+ <swirl-accordion-item description="Lorem ipsum dolor sit amet, consectetur adipiscing elit." heading="Accordion item 1" initially-open>
17
+ <swirl-stack spacing="16">
18
+ <swirl-text size="sm">
19
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed euismod
20
+ euismod libero, nec sollicitudin diam ultricies ut. Donec eget
21
+ consectetur libero. Donec et mi non mauris fermentum dictum. Sed
22
+ scelerisque, sapien vitae fringilla aliquam, quam sapien aliquet.
23
+ </swirl-text>
24
+ <swirl-button label="A button" variant="flat"></swirl-button>
25
+ </swirl-stack>
26
+ </swirl-accordion-item>
27
+ <swirl-accordion-item description="Lorem ipsum dolor sit amet, consectetur adipiscing elit." heading="Accordion item 2">
28
+ <swirl-stack spacing="16">
29
+ <swirl-text size="sm">
30
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed euismod
31
+ euismod libero, nec sollicitudin diam ultricies ut. Donec eget
32
+ consectetur libero. Donec et mi non mauris fermentum dictum. Sed
33
+ scelerisque, sapien vitae fringilla aliquam, quam sapien aliquet.
34
+ </swirl-text>
35
+ <swirl-button label="A button" variant="flat"></swirl-button>
36
+ </swirl-stack>
37
+ </swirl-accordion-item>
38
+ <swirl-accordion-item description="Lorem ipsum dolor sit amet, consectetur adipiscing elit." heading="Accordion item 3">
39
+ <swirl-stack spacing="16">
40
+ <swirl-text size="sm">
41
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed euismod
42
+ euismod libero, nec sollicitudin diam ultricies ut. Donec eget
43
+ consectetur libero. Donec et mi non mauris fermentum dictum. Sed
44
+ scelerisque, sapien vitae fringilla aliquam, quam sapien aliquet.
45
+ </swirl-text>
46
+ <swirl-button label="A button" variant="flat"></swirl-button>
47
+ </swirl-stack>
48
+ </swirl-accordion-item>
49
+ <swirl-accordion-item description="Lorem ipsum dolor sit amet, consectetur adipiscing elit." disabled heading="Accordion item 4">
50
+ <swirl-stack spacing="16">
51
+ <swirl-text size="sm">
52
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed euismod
53
+ euismod libero, nec sollicitudin diam ultricies ut. Donec eget
54
+ consectetur libero. Donec et mi non mauris fermentum dictum. Sed
55
+ scelerisque, sapien vitae fringilla aliquam, quam sapien aliquet.
56
+ </swirl-text>
57
+ <swirl-button label="A button" variant="flat"></swirl-button>
58
+ </swirl-stack>
59
+ </swirl-accordion-item>
60
+ `;
61
+ return element;
62
+ };
63
+ export const SwirlAccordion = Template.bind({});
64
+ SwirlAccordion.args = {};
@@ -0,0 +1,155 @@
1
+ :host {
2
+ display: block;
3
+ }
4
+
5
+ :host * {
6
+ box-sizing: border-box;
7
+ }
8
+
9
+ :host(:last-child) .accordion-item {
10
+ border-bottom: 0.0625rem solid var(--s-border-default);
11
+ }
12
+
13
+ .accordion-item {
14
+ display: grid;
15
+ align-content: start;
16
+ border-top: 0.0625rem solid var(--s-border-default);
17
+ transition: grid-template-rows 0.15s;
18
+ grid-template-rows: auto 0fr;
19
+ will-change: grid-template-rows;
20
+ }
21
+
22
+ @media (prefers-reduced-motion) {
23
+
24
+ .accordion-item {
25
+ transition: none
26
+ }
27
+ }
28
+
29
+ .accordion-item--expanded {
30
+ grid-template-rows: auto 1fr;
31
+ }
32
+
33
+ .accordion-item--expanded .accordion-item__content {
34
+ padding-top: var(--s-space-16);
35
+ padding-bottom: var(--s-space-16);
36
+ animation: accordion-overflow 0.01s;
37
+ animation-delay: 0.15s;
38
+ animation-fill-mode: forwards;
39
+ }
40
+
41
+ @media (min-width: 992px) and (max-width: 1439px) and (hover: hover),(min-width: 1440px) {
42
+
43
+ .accordion-item--expanded .accordion-item__content {
44
+ padding-top: var(--s-space-8)
45
+ }
46
+ }
47
+
48
+ .accordion-item__heading {
49
+ margin: 0;
50
+ padding: 0;
51
+ font-size: var(--s-font-size-base);
52
+ font-weight: var(--s-font-weight-semibold);
53
+ }
54
+
55
+ @media (min-width: 992px) and (max-width: 1439px) and (hover: hover),(min-width: 1440px) {
56
+
57
+ .accordion-item__heading {
58
+ font-size: var(--s-font-size-sm)
59
+ }
60
+ }
61
+
62
+ .accordion-item__toggle {
63
+ display: flex;
64
+ width: 100%;
65
+ padding: 0;
66
+ padding-top: var(--s-space-16);
67
+ padding-bottom: var(--s-space-16);
68
+ align-items: center;
69
+ border: none;
70
+ color: var(--s-text-default);
71
+ background-color: var(--s-surface-default);
72
+ font: inherit;
73
+ line-height: var(--s-line-height-lg);
74
+ text-align: start;
75
+ cursor: pointer;
76
+ gap: var(--s-space-16);
77
+ }
78
+
79
+ .accordion-item__toggle:hover {
80
+ background-color: var(--s-surface-hovered);
81
+ }
82
+
83
+ .accordion-item__toggle:active {
84
+ background-color: var(--s-surface-pressed);
85
+ }
86
+
87
+ .accordion-item__toggle:disabled {
88
+ color: var(--s-text-disabled);
89
+ background-color: var(--s-surface-default);
90
+ cursor: default;
91
+ }
92
+
93
+ .accordion-item__toggle:disabled .text {
94
+ color: var(--s-text-disabled);
95
+ }
96
+
97
+ .accordion-item__toggle:focus:not(:focus-visible) {
98
+ outline: none;
99
+ }
100
+
101
+ .accordion-item__toggle:focus-visible {
102
+ outline-color: var(--s-focus-default);
103
+ }
104
+
105
+ @media (min-width: 992px) and (max-width: 1439px) and (hover: hover),(min-width: 1440px) {
106
+
107
+ .accordion-item__toggle {
108
+ line-height: var(--s-line-height-sm)
109
+ }
110
+ }
111
+
112
+ .accordion-item__toggle-text {
113
+ flex-grow: 1;
114
+ }
115
+
116
+ .accordion-item__icon {
117
+ display: inline-flex;
118
+ padding-right: var(--s-space-8);
119
+ flex-shrink: 0;
120
+ }
121
+
122
+ .accordion-item__content {
123
+ overflow: hidden;
124
+ padding-top: 0;
125
+ padding-bottom: 0;
126
+ transition: padding-top 0.15s, padding-bottom 0.15s;
127
+ animation: accordion-display 0.01s;
128
+ animation-delay: 0.15s;
129
+ animation-fill-mode: forwards;
130
+ }
131
+
132
+ @media (prefers-reduced-motion) {
133
+
134
+ .accordion-item__content {
135
+ transition: none
136
+ }
137
+ }
138
+
139
+ @keyframes accordion-overflow {
140
+ from {
141
+ overflow: hidden;
142
+ }
143
+ to {
144
+ overflow: visible;
145
+ }
146
+ }
147
+
148
+ @keyframes accordion-display {
149
+ from {
150
+ display: block;
151
+ }
152
+ to {
153
+ display: none;
154
+ }
155
+ }
@@ -0,0 +1,246 @@
1
+ import { h, Host, } from "@stencil/core";
2
+ import { v4 as uuid } from "uuid";
3
+ import classnames from "classnames";
4
+ export class SwirlAccordionItem {
5
+ constructor() {
6
+ this.id = `accordion-item-${uuid()}`;
7
+ this.headingId = `${this.id}-heading`;
8
+ this.onHeadingClick = () => {
9
+ this.toggle();
10
+ };
11
+ this.description = undefined;
12
+ this.disabled = undefined;
13
+ this.heading = undefined;
14
+ this.headingLevel = 2;
15
+ this.initiallyOpen = undefined;
16
+ this.expanded = false;
17
+ }
18
+ componentWillLoad() {
19
+ this.accordion = this.el.closest("swirl-accordion");
20
+ this.expanded = (this.initiallyOpen && !this.disabled) || false;
21
+ if (!Boolean(this.accordion)) {
22
+ throw new Error("[Swirl] swirl-accordion-item must be a child of a swirl-accordion.");
23
+ }
24
+ }
25
+ /**
26
+ * Collapsed the accordion item.
27
+ */
28
+ async collapse() {
29
+ if (!this.expanded || this.disabled) {
30
+ return;
31
+ }
32
+ this.expanded = false;
33
+ this.expansionChange.emit(this.expanded);
34
+ }
35
+ /**
36
+ * Expands the accordion item.
37
+ */
38
+ async expand() {
39
+ if (this.expanded || this.disabled) {
40
+ return;
41
+ }
42
+ this.expanded = true;
43
+ this.expansionChange.emit(this.expanded);
44
+ }
45
+ /**
46
+ * Toggles the accordion item.
47
+ */
48
+ async toggle() {
49
+ if (this.expanded) {
50
+ this.collapse();
51
+ }
52
+ else {
53
+ this.expand();
54
+ }
55
+ }
56
+ render() {
57
+ const HeadingTag = `h${this.headingLevel}`;
58
+ const className = classnames("accordion-item", {
59
+ "accordion-item--expanded": this.expanded,
60
+ });
61
+ return (h(Host, null, h("div", { class: className }, h(HeadingTag, { class: "accordion-item__heading" }, h("button", { "aria-controls": this.id, "aria-expanded": String(this.expanded), class: "accordion-item__toggle", disabled: this.disabled, id: this.headingId, onClick: this.onHeadingClick, type: "button" }, h("span", { class: "accordion-item__toggle-text" }, this.heading, this.description && (h("swirl-text", { as: "span", color: "subdued", size: "sm" }, this.description))), h("span", { class: "accordion-item__icon" }, !this.expanded && (h("swirl-icon", { glyph: "chevron-right", size: 20 })), this.expanded && (h("swirl-icon", { glyph: "expand-more", size: 20 }))))), h("div", { "aria-labelledby": this.headingId, class: "accordion-item__content", id: this.id, role: "region" }, h("slot", null)))));
62
+ }
63
+ static get is() { return "swirl-accordion-item"; }
64
+ static get encapsulation() { return "shadow"; }
65
+ static get originalStyleUrls() {
66
+ return {
67
+ "$": ["swirl-accordion-item.css"]
68
+ };
69
+ }
70
+ static get styleUrls() {
71
+ return {
72
+ "$": ["swirl-accordion-item.css"]
73
+ };
74
+ }
75
+ static get properties() {
76
+ return {
77
+ "description": {
78
+ "type": "string",
79
+ "mutable": false,
80
+ "complexType": {
81
+ "original": "string",
82
+ "resolved": "string",
83
+ "references": {}
84
+ },
85
+ "required": false,
86
+ "optional": true,
87
+ "docs": {
88
+ "tags": [],
89
+ "text": ""
90
+ },
91
+ "attribute": "description",
92
+ "reflect": false
93
+ },
94
+ "disabled": {
95
+ "type": "boolean",
96
+ "mutable": false,
97
+ "complexType": {
98
+ "original": "boolean",
99
+ "resolved": "boolean",
100
+ "references": {}
101
+ },
102
+ "required": false,
103
+ "optional": true,
104
+ "docs": {
105
+ "tags": [],
106
+ "text": ""
107
+ },
108
+ "attribute": "disabled",
109
+ "reflect": false
110
+ },
111
+ "heading": {
112
+ "type": "string",
113
+ "mutable": false,
114
+ "complexType": {
115
+ "original": "string",
116
+ "resolved": "string",
117
+ "references": {}
118
+ },
119
+ "required": true,
120
+ "optional": false,
121
+ "docs": {
122
+ "tags": [],
123
+ "text": ""
124
+ },
125
+ "attribute": "heading",
126
+ "reflect": false
127
+ },
128
+ "headingLevel": {
129
+ "type": "number",
130
+ "mutable": false,
131
+ "complexType": {
132
+ "original": "SwirlHeadingLevel",
133
+ "resolved": "1 | 2 | 3 | 4 | 5 | 6",
134
+ "references": {
135
+ "SwirlHeadingLevel": {
136
+ "location": "import",
137
+ "path": "../swirl-heading/swirl-heading"
138
+ }
139
+ }
140
+ },
141
+ "required": false,
142
+ "optional": true,
143
+ "docs": {
144
+ "tags": [],
145
+ "text": ""
146
+ },
147
+ "attribute": "heading-level",
148
+ "reflect": false,
149
+ "defaultValue": "2"
150
+ },
151
+ "initiallyOpen": {
152
+ "type": "boolean",
153
+ "mutable": false,
154
+ "complexType": {
155
+ "original": "boolean",
156
+ "resolved": "boolean",
157
+ "references": {}
158
+ },
159
+ "required": false,
160
+ "optional": true,
161
+ "docs": {
162
+ "tags": [],
163
+ "text": ""
164
+ },
165
+ "attribute": "initially-open",
166
+ "reflect": false
167
+ }
168
+ };
169
+ }
170
+ static get states() {
171
+ return {
172
+ "expanded": {}
173
+ };
174
+ }
175
+ static get events() {
176
+ return [{
177
+ "method": "expansionChange",
178
+ "name": "expansionChange",
179
+ "bubbles": true,
180
+ "cancelable": true,
181
+ "composed": true,
182
+ "docs": {
183
+ "tags": [],
184
+ "text": ""
185
+ },
186
+ "complexType": {
187
+ "original": "boolean",
188
+ "resolved": "boolean",
189
+ "references": {}
190
+ }
191
+ }];
192
+ }
193
+ static get methods() {
194
+ return {
195
+ "collapse": {
196
+ "complexType": {
197
+ "signature": "() => Promise<void>",
198
+ "parameters": [],
199
+ "references": {
200
+ "Promise": {
201
+ "location": "global"
202
+ }
203
+ },
204
+ "return": "Promise<void>"
205
+ },
206
+ "docs": {
207
+ "text": "Collapsed the accordion item.",
208
+ "tags": []
209
+ }
210
+ },
211
+ "expand": {
212
+ "complexType": {
213
+ "signature": "() => Promise<void>",
214
+ "parameters": [],
215
+ "references": {
216
+ "Promise": {
217
+ "location": "global"
218
+ }
219
+ },
220
+ "return": "Promise<void>"
221
+ },
222
+ "docs": {
223
+ "text": "Expands the accordion item.",
224
+ "tags": []
225
+ }
226
+ },
227
+ "toggle": {
228
+ "complexType": {
229
+ "signature": "() => Promise<void>",
230
+ "parameters": [],
231
+ "references": {
232
+ "Promise": {
233
+ "location": "global"
234
+ }
235
+ },
236
+ "return": "Promise<void>"
237
+ },
238
+ "docs": {
239
+ "text": "Toggles the accordion item.",
240
+ "tags": []
241
+ }
242
+ }
243
+ };
244
+ }
245
+ static get elementRef() { return "el"; }
246
+ }
@@ -0,0 +1,87 @@
1
+ import { newSpecPage } from "@stencil/core/testing";
2
+ import { SwirlAccordionItem } from "./swirl-accordion-item";
3
+ describe("swirl-accordion-item", () => {
4
+ it("renders heading and description", async () => {
5
+ const page = await newSpecPage({
6
+ components: [SwirlAccordionItem],
7
+ html: `
8
+ <swirl-accordion>
9
+ <swirl-accordion-item description="Description" heading="heading">
10
+ Content
11
+ </swirl-accordion-item>
12
+ </swirl-accordion>
13
+ `,
14
+ });
15
+ const id = page.root.shadowRoot.querySelector(".accordion-item__content").id;
16
+ expect(page.root).toEqualHtml(`
17
+ <swirl-accordion-item description="Description" heading="heading">
18
+ <mock:shadow-root>
19
+ <div class="accordion-item">
20
+ <h2 class="accordion-item__heading">
21
+ <button aria-controls="${id}" aria-expanded="false" class="accordion-item__toggle" id="${id}-heading" type="button">
22
+ <span class="accordion-item__toggle-text">
23
+ heading
24
+ <swirl-text as="span" color="subdued" size="sm">
25
+ Description
26
+ </swirl-text>
27
+ </span>
28
+ <span class="accordion-item__icon">
29
+ <swirl-icon glyph="chevron-right" size="20"></swirl-icon>
30
+ </span>
31
+ </button>
32
+ </h2>
33
+ <div aria-labelledby="${id}-heading" class="accordion-item__content" id="${id}" role="region">
34
+ <slot></slot>
35
+ </div>
36
+ </div>
37
+ </mock:shadow-root>
38
+ Content
39
+ </swirl-accordion-item>
40
+ `);
41
+ });
42
+ it("can be toggled", async () => {
43
+ const page = await newSpecPage({
44
+ components: [SwirlAccordionItem],
45
+ html: `
46
+ <swirl-accordion>
47
+ <swirl-accordion-item description="Description" heading="heading">
48
+ Content
49
+ </swirl-accordion-item>
50
+ </swirl-accordion>
51
+ `,
52
+ });
53
+ expect(page.root.shadowRoot
54
+ .querySelector(".accordion-item")
55
+ .classList.contains("accordion-item--expanded")).toBe(false);
56
+ const toggle = page.root.shadowRoot.querySelector(".accordion-item__toggle");
57
+ toggle.click();
58
+ await page.waitForChanges();
59
+ expect(page.root.shadowRoot
60
+ .querySelector(".accordion-item")
61
+ .classList.contains("accordion-item--expanded")).toBe(true);
62
+ toggle.click();
63
+ await page.waitForChanges();
64
+ expect(page.root.shadowRoot
65
+ .querySelector(".accordion-item")
66
+ .classList.contains("accordion-item--expanded")).toBe(false);
67
+ });
68
+ it("fires expansionChange events", async () => {
69
+ const page = await newSpecPage({
70
+ components: [SwirlAccordionItem],
71
+ html: `
72
+ <swirl-accordion>
73
+ <swirl-accordion-item description="Description" heading="heading">
74
+ Content
75
+ </swirl-accordion-item>
76
+ </swirl-accordion>
77
+ `,
78
+ });
79
+ const spy = jest.fn();
80
+ page.root.addEventListener("expansionChange", spy);
81
+ const toggle = page.root.shadowRoot.querySelector(".accordion-item__toggle");
82
+ toggle.click();
83
+ expect(spy.mock.calls[0][0].detail).toBe(true);
84
+ toggle.click();
85
+ expect(spy.mock.calls[1][0].detail).toBe(false);
86
+ });
87
+ });
@@ -0,0 +1,34 @@
1
+ import { generateStoryElement } from "../../utils";
2
+ import Docs from "./swirl-accordion-item.mdx";
3
+ export default {
4
+ component: "swirl-accordion-item",
5
+ tags: ["autodocs"],
6
+ parameters: {
7
+ docs: {
8
+ page: Docs,
9
+ },
10
+ },
11
+ title: "Components/SwirlAccordionItem",
12
+ };
13
+ const Template = (args) => {
14
+ const container = document.createElement("swirl-accordion");
15
+ const element = generateStoryElement("swirl-accordion-item", args);
16
+ element.innerHTML = `
17
+ <swirl-stack spacing="16">
18
+ <swirl-text size="sm">
19
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed euismod
20
+ euismod libero, nec sollicitudin diam ultricies ut. Donec eget
21
+ consectetur libero. Donec et mi non mauris fermentum dictum. Sed
22
+ scelerisque, sapien vitae fringilla aliquam, quam sapien aliquet.
23
+ </swirl-text>
24
+ <swirl-button label="A button" variant="flat"></swirl-button>
25
+ </swirl-stack>
26
+ `;
27
+ container.append("\n ", element, "\n");
28
+ return container;
29
+ };
30
+ export const SwirlAccordionItem = Template.bind({});
31
+ SwirlAccordionItem.args = {
32
+ description: "Lorem ipsum dolor sit amet, consectetur adipiscing elit.",
33
+ heading: "Accordion item",
34
+ };
@@ -0,0 +1,68 @@
1
+ :host {
2
+ display: block;
3
+ width: 100%;
4
+ }
5
+
6
+ :host * {
7
+ box-sizing: border-box;
8
+ }
9
+
10
+ .color-input {
11
+ position: relative;
12
+ display: flex;
13
+ width: 100%;
14
+ align-items: center;
15
+ color: var(--s-text-default);
16
+ font: inherit;
17
+ line-height: var(--s-line-height-sm);
18
+ cursor: text;
19
+ }
20
+
21
+ .color-input--inline .color-input__preview {
22
+ width: 1.5rem;
23
+ height: 1.5rem;
24
+ margin-top: -0.125rem;
25
+ margin-bottom: -0.125rem;
26
+ margin-right: -0.25rem;
27
+ }
28
+
29
+ .color-input__input {
30
+ display: inline-flex;
31
+ width: 100%;
32
+ margin: 0;
33
+ padding: 0;
34
+ flex-grow: 1;
35
+ border: none;
36
+ color: var(--s-text-default);
37
+ background-color: transparent;
38
+ font: inherit;
39
+ font-size: var(--s-font-size-base);
40
+ line-height: var(--s-line-height-base);
41
+ caret-color: var(--s-border-highlight);
42
+ }
43
+
44
+ .color-input__input:focus {
45
+ outline: none;
46
+ }
47
+
48
+ .color-input__input:disabled {
49
+ color: var(--s-text-disabled);
50
+ background-color: transparent;
51
+ }
52
+
53
+ @media (min-width: 992px) and (max-width: 1439px) and (hover: hover),(min-width: 1440px) {
54
+
55
+ .color-input__input {
56
+ font-size: var(--s-font-size-sm);
57
+ line-height: var(--s-line-height-sm)
58
+ }
59
+ }
60
+
61
+ .color-input__preview {
62
+ width: 2.75rem;
63
+ height: 2.75rem;
64
+ margin-top: -1.25rem;
65
+ flex-shrink: 0;
66
+ border: 0.0625rem solid var(--s-border-default);
67
+ border-radius: var(--s-border-radius-s);
68
+ }