@reliability-design/web 1.0.2

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 (60) hide show
  1. package/dist/components/rel-accordion/rel-accordion.stories.ts +313 -0
  2. package/dist/components/rel-accordion/rel-accordion.ts +114 -0
  3. package/dist/components/rel-alert/rel-alert.stories.ts +412 -0
  4. package/dist/components/rel-alert/rel-alert.ts +194 -0
  5. package/dist/components/rel-avatar/rel-avatar.stories.ts +327 -0
  6. package/dist/components/rel-avatar/rel-avatar.ts +100 -0
  7. package/dist/components/rel-badge/rel-badge.stories.ts +350 -0
  8. package/dist/components/rel-badge/rel-badge.ts +70 -0
  9. package/dist/components/rel-breadcrumb/rel-breadcrumb.stories.ts +306 -0
  10. package/dist/components/rel-breadcrumb/rel-breadcrumb.ts +97 -0
  11. package/dist/components/rel-button/rel-button.stories.ts +356 -0
  12. package/dist/components/rel-button/rel-button.ts +204 -0
  13. package/dist/components/rel-card/rel-card.stories.ts +299 -0
  14. package/dist/components/rel-card/rel-card.ts +33 -0
  15. package/dist/components/rel-cardmedia/rel-cardmedia.stories.ts +368 -0
  16. package/dist/components/rel-cardmedia/rel-cardmedia.ts +80 -0
  17. package/dist/components/rel-checkbox/rel-checkbox.stories.ts +414 -0
  18. package/dist/components/rel-checkbox/rel-checkbox.ts +164 -0
  19. package/dist/components/rel-chip/rel-chip.stories.ts +552 -0
  20. package/dist/components/rel-chip/rel-chip.ts +261 -0
  21. package/dist/components/rel-container/rel-container.stories.ts +239 -0
  22. package/dist/components/rel-container/rel-container.ts +74 -0
  23. package/dist/components/rel-divider/rel-divider.stories.ts +229 -0
  24. package/dist/components/rel-divider/rel-divider.ts +44 -0
  25. package/dist/components/rel-layout/rel-layout.stories.ts +713 -0
  26. package/dist/components/rel-layout/rel-layout.ts +60 -0
  27. package/dist/components/rel-menu/rel-menu.stories.ts +910 -0
  28. package/dist/components/rel-menu/rel-menu.ts +319 -0
  29. package/dist/components/rel-progress/rel-progress.stories.ts +817 -0
  30. package/dist/components/rel-progress/rel-progress.ts +182 -0
  31. package/dist/components/rel-radio/rel-radio.stories.ts +1048 -0
  32. package/dist/components/rel-radio/rel-radio.ts +187 -0
  33. package/dist/components/rel-segmented-button/rel-segmented-button.stories.ts +1079 -0
  34. package/dist/components/rel-segmented-button/rel-segmented-button.ts +150 -0
  35. package/dist/components/rel-select/rel-select.stories.ts +1201 -0
  36. package/dist/components/rel-select/rel-select.ts +261 -0
  37. package/dist/components/rel-slider/rel-slider.stories.ts +730 -0
  38. package/dist/components/rel-slider/rel-slider.ts +440 -0
  39. package/dist/components/rel-snackbar/rel-snackbar.stories.ts +808 -0
  40. package/dist/components/rel-snackbar/rel-snackbar.ts +212 -0
  41. package/dist/components/rel-stepper/rel-stepper.stories.ts +752 -0
  42. package/dist/components/rel-stepper/rel-stepper.ts +425 -0
  43. package/dist/components/rel-switch/rel-switch.stories.ts +441 -0
  44. package/dist/components/rel-switch/rel-switch.ts +161 -0
  45. package/dist/components/rel-tab/rel-tab.stories.ts +492 -0
  46. package/dist/components/rel-tab/rel-tab.ts +145 -0
  47. package/dist/components/rel-textfield/rel-textfield.stories.ts +710 -0
  48. package/dist/components/rel-textfield/rel-textfield.ts +224 -0
  49. package/dist/components/rel-toast/rel-toast.stories.ts +394 -0
  50. package/dist/components/rel-toast/rel-toast.ts +154 -0
  51. package/dist/components/rel-tooltip/rel-tooltip.stories.ts +364 -0
  52. package/dist/components/rel-tooltip/rel-tooltip.ts +80 -0
  53. package/dist/index.d.mts +372 -0
  54. package/dist/index.d.ts +372 -0
  55. package/dist/index.js +4593 -0
  56. package/dist/index.js.map +1 -0
  57. package/dist/index.mjs +4544 -0
  58. package/dist/index.mjs.map +1 -0
  59. package/dist/styles/vars.css +184 -0
  60. package/package.json +32 -0
@@ -0,0 +1,261 @@
1
+ import { LitElement, html, css } from "lit";
2
+ import { customElement, property, state } from "lit/decorators.js";
3
+
4
+ @customElement("rel-chip")
5
+ export class RelChip extends LitElement {
6
+ @property({ type: String }) label: string = "Label";
7
+
8
+ @property({ type: String }) tone: "default" | "blue" | "yellow" | "red" | "green" = "default";
9
+
10
+ @property({ type: String }) leadingIcon?: string;
11
+
12
+ @property({ type: String }) trailingIcon?: string;
13
+
14
+ @property({ type: String }) avatar?: string;
15
+
16
+ @property({ type: Boolean }) removable: boolean = false;
17
+
18
+ @property({ type: Boolean }) outline: boolean = false;
19
+
20
+ @state() private removed: boolean = false;
21
+
22
+ static styles = css`
23
+ :host {
24
+ display: inline-block;
25
+ }
26
+
27
+ :host([removed]) {
28
+ display: none;
29
+ }
30
+
31
+ .chip {
32
+ display: inline-flex;
33
+ align-items: center;
34
+ font-family: var(--rel-fontFamilies-primary);
35
+ font-size: var(--rel-fontSizes-md);
36
+ font-weight: var(--rel-fontWeights-medium);
37
+ border-radius: var(--rel-borders-radius-border-radius-500);
38
+ padding: var(--rel-spacing-space-2xs) var(--rel-spacing-space-sm);
39
+ gap: var(--rel-spacing-space-2xs);
40
+ cursor: pointer;
41
+ transition: all 0.2s ease-in-out;
42
+ border: var(--rel-borders-width-stroke-100) solid transparent;
43
+ user-select: none;
44
+ white-space: nowrap;
45
+ }
46
+
47
+ .chip:hover {
48
+ filter: brightness(0.92);
49
+ transform: translateY(-1px);
50
+ box-shadow: var(--rel-shadows-shadow-100);
51
+ }
52
+
53
+ .chip:focus:not(:focus-visible) {
54
+ outline: none;
55
+ }
56
+
57
+ .chip:active {
58
+ transform: scale(0.97) translateY(0);
59
+ box-shadow: none;
60
+ filter: brightness(0.88);
61
+ }
62
+
63
+ /* Tone Variants - Filled */
64
+ .chip-default {
65
+ background: var(--rel-colors-gray-border);
66
+ color: var(--rel-colors-black);
67
+ }
68
+
69
+ .chip-default:focus {
70
+ outline: var(--rel-borders-width-stroke-200) solid var(--rel-colors-gray-primary);
71
+ outline-offset: var(--rel-spacing-space-3xs);
72
+ }
73
+
74
+ .chip-blue {
75
+ background: var(--rel-colors-blue-tertiary);
76
+ color: var(--rel-colors-white);
77
+ }
78
+
79
+ .chip-blue:focus {
80
+ outline: var(--rel-borders-width-stroke-200) solid var(--rel-colors-blue-tertiary);
81
+ outline-offset: var(--rel-spacing-space-3xs);
82
+ }
83
+
84
+ .chip-yellow {
85
+ background: var(--rel-colors-yellow-pending);
86
+ color: var(--rel-colors-black);
87
+ }
88
+
89
+ .chip-yellow:focus {
90
+ outline: var(--rel-borders-width-stroke-200) solid var(--rel-colors-yellow-pending);
91
+ outline-offset: var(--rel-spacing-space-3xs);
92
+ }
93
+
94
+ .chip-red {
95
+ background: var(--rel-colors-red-secondary);
96
+ color: var(--rel-colors-white);
97
+ }
98
+
99
+ .chip-red:focus {
100
+ outline: var(--rel-borders-width-stroke-200) solid var(--rel-colors-red-secondary);
101
+ outline-offset: var(--rel-spacing-space-3xs);
102
+ }
103
+
104
+ .chip-green {
105
+ background: var(--rel-colors-green-success);
106
+ color: var(--rel-colors-white);
107
+ }
108
+
109
+ .chip-green:focus {
110
+ outline: var(--rel-borders-width-stroke-200) solid var(--rel-colors-green-success);
111
+ outline-offset: var(--rel-spacing-space-3xs);
112
+ }
113
+
114
+ /* Outline Variants */
115
+ .chip-outline.chip-default {
116
+ background: transparent;
117
+ border-color: var(--rel-colors-gray-border);
118
+ color: var(--rel-colors-black);
119
+ }
120
+
121
+ .chip-outline.chip-blue {
122
+ background: transparent;
123
+ border-color: var(--rel-colors-blue-tertiary);
124
+ color: var(--rel-colors-blue-tertiary);
125
+ }
126
+
127
+ .chip-outline.chip-yellow {
128
+ background: transparent;
129
+ border-color: var(--rel-colors-yellow-pending);
130
+ color: var(--rel-colors-yellow-pending);
131
+ }
132
+
133
+ .chip-outline.chip-red {
134
+ background: transparent;
135
+ border-color: var(--rel-colors-red-secondary);
136
+ color: var(--rel-colors-red-secondary);
137
+ }
138
+
139
+ .chip-outline.chip-green {
140
+ background: transparent;
141
+ border-color: var(--rel-colors-green-success);
142
+ color: var(--rel-colors-green-success);
143
+ }
144
+
145
+ .chip-avatar {
146
+ width: 20px;
147
+ height: 20px;
148
+ border-radius: var(--rel-borders-radius-border-radius-500);
149
+ object-fit: cover;
150
+ }
151
+
152
+ .chip-icon {
153
+ display: flex;
154
+ align-items: center;
155
+ line-height: 0;
156
+ }
157
+
158
+ .chip-icon ::slotted(svg),
159
+ .chip-icon svg {
160
+ width: 16px;
161
+ height: 16px;
162
+ fill: currentColor;
163
+ }
164
+
165
+ .chip-label {
166
+ line-height: var(--rel-lineHeights-md);
167
+ }
168
+
169
+ .chip-remove {
170
+ background: transparent;
171
+ border: none;
172
+ color: inherit;
173
+ font-size: var(--rel-fontSizes-md);
174
+ cursor: pointer;
175
+ display: flex;
176
+ align-items: center;
177
+ padding: 0;
178
+ margin-left: var(--rel-spacing-space-3xs);
179
+ }
180
+
181
+ .chip-remove:hover {
182
+ opacity: 0.6;
183
+ }
184
+ `;
185
+
186
+ private get classes() {
187
+ return [
188
+ "chip",
189
+ `chip-${this.tone}`,
190
+ this.outline ? "chip-outline" : "",
191
+ ].join(" ");
192
+ }
193
+
194
+ private handleRemove(event: Event) {
195
+ event.stopPropagation();
196
+ this.removed = true;
197
+ this.dispatchEvent(
198
+ new CustomEvent("removed", {
199
+ bubbles: true,
200
+ composed: true,
201
+ })
202
+ );
203
+ }
204
+
205
+ private handleKeyDown(event: KeyboardEvent) {
206
+ if (!this.removable) return;
207
+
208
+ if (event.key === "Backspace" || event.key === "Delete") {
209
+ event.preventDefault();
210
+ this.handleRemove(event);
211
+ }
212
+ }
213
+
214
+ render() {
215
+ if (this.removed) {
216
+ return null;
217
+ }
218
+
219
+ return html`
220
+ <button
221
+ class="${this.classes}"
222
+ type="button"
223
+ role="button"
224
+ aria-label="${this.label}"
225
+ @keydown=${this.handleKeyDown}
226
+ tabindex="0"
227
+ >
228
+ ${this.avatar
229
+ ? html`<img src="${this.avatar}" alt="avatar" class="chip-avatar" />`
230
+ : ""}
231
+ ${this.leadingIcon
232
+ ? html`<span class="chip-icon leading">
233
+ <slot name="leading-icon">${this.renderIcon(this.leadingIcon)}</slot>
234
+ </span>`
235
+ : ""}
236
+ <span class="chip-label">${this.label}</span>
237
+ ${this.trailingIcon
238
+ ? html`<span class="chip-icon trailing">
239
+ <slot name="trailing-icon">${this.renderIcon(this.trailingIcon)}</slot>
240
+ </span>`
241
+ : ""}
242
+ ${this.removable
243
+ ? html`<button
244
+ type="button"
245
+ class="chip-remove"
246
+ @click=${this.handleRemove}
247
+ aria-label="Remove chip"
248
+ >
249
+ 
250
+ </button>`
251
+ : ""}
252
+ </button>
253
+ `;
254
+ }
255
+
256
+ private renderIcon(iconString: string) {
257
+ const template = document.createElement("template");
258
+ template.innerHTML = iconString.trim();
259
+ return html`${template.content.cloneNode(true)}`;
260
+ }
261
+ }
@@ -0,0 +1,239 @@
1
+ import type { Meta, StoryObj } from '@storybook/web-components-vite';
2
+ import { html } from 'lit';
3
+ import './rel-container';
4
+
5
+ /**
6
+ * The Container component is a flexible layout wrapper with customizable padding, background, and shadow.
7
+ * Built with Lit web components for framework-agnostic usage with full token support.
8
+ *
9
+ * ## Features
10
+ * - **3 Padding Sizes**: sm (8px), md (16px), lg (32px)
11
+ * - **3 Background Options**: white, light, none (transparent)
12
+ * - **Optional Shadow**: Elevation shadow for depth
13
+ * - **Fully Token-Driven**: Uses design system tokens
14
+ * - **Flexible Content**: Accepts any slotted content
15
+ */
16
+ const meta: Meta = {
17
+ title: 'Components/Container',
18
+ tags: ['autodocs'],
19
+ component: 'rel-container',
20
+ argTypes: {
21
+ padding: {
22
+ control: { type: 'select' },
23
+ options: ['sm', 'md', 'lg'],
24
+ description: 'Padding size',
25
+ table: {
26
+ defaultValue: { summary: 'md' },
27
+ type: { summary: 'string' },
28
+ },
29
+ },
30
+ background: {
31
+ control: { type: 'select' },
32
+ options: ['white', 'light', 'none'],
33
+ description: 'Background color variant',
34
+ table: {
35
+ defaultValue: { summary: 'white' },
36
+ type: { summary: 'string' },
37
+ },
38
+ },
39
+ shadow: {
40
+ control: 'boolean',
41
+ description: 'Apply elevation shadow',
42
+ table: {
43
+ defaultValue: { summary: false },
44
+ type: { summary: 'boolean' },
45
+ },
46
+ },
47
+ },
48
+ render: (args) => html`
49
+ <rel-container
50
+ padding="${args.padding || 'md'}"
51
+ background="${args.background || 'white'}"
52
+ ?shadow="${args.shadow}"
53
+ >
54
+ <p style="margin: 0; color: #333;">
55
+ This is content inside the container. The container provides padding, background, and optional shadow.
56
+ </p>
57
+ </rel-container>
58
+ `,
59
+ };
60
+
61
+ export default meta;
62
+ type Story = StoryObj;
63
+
64
+ /**
65
+ * Default container with white background and medium padding
66
+ */
67
+ export const Default: Story = {
68
+ args: {
69
+ padding: 'md',
70
+ background: 'white',
71
+ shadow: false,
72
+ },
73
+ };
74
+
75
+ /**
76
+ * Container with shadow for elevation effect
77
+ */
78
+ export const WithShadow: Story = {
79
+ args: {
80
+ padding: 'md',
81
+ background: 'white',
82
+ shadow: true,
83
+ },
84
+ };
85
+
86
+ /**
87
+ * All padding sizes comparison
88
+ */
89
+ export const PaddingSizes: Story = {
90
+ render: () => html`
91
+ <div style="display: flex; flex-direction: column; gap: 24px; background: #e0e0e0; padding: 24px;">
92
+ <div>
93
+ <h3 style="margin-bottom: 12px; font-size: 16px; font-weight: 600;">Small Padding (8px)</h3>
94
+ <rel-container padding="sm" background="white" shadow>
95
+ <p style="margin: 0; color: #333;">Small padding content</p>
96
+ </rel-container>
97
+ </div>
98
+
99
+ <div>
100
+ <h3 style="margin-bottom: 12px; font-size: 16px; font-weight: 600;">Medium Padding (16px)</h3>
101
+ <rel-container padding="md" background="white" shadow>
102
+ <p style="margin: 0; color: #333;">Medium padding content</p>
103
+ </rel-container>
104
+ </div>
105
+
106
+ <div>
107
+ <h3 style="margin-bottom: 12px; font-size: 16px; font-weight: 600;">Large Padding (32px)</h3>
108
+ <rel-container padding="lg" background="white" shadow>
109
+ <p style="margin: 0; color: #333;">Large padding content</p>
110
+ </rel-container>
111
+ </div>
112
+ </div>
113
+ `,
114
+ };
115
+
116
+ /**
117
+ * All background variants comparison
118
+ */
119
+ export const BackgroundVariants: Story = {
120
+ render: () => html`
121
+ <div style="display: flex; flex-direction: column; gap: 24px; background: #e0e0e0; padding: 24px;">
122
+ <div>
123
+ <h3 style="margin-bottom: 12px; font-size: 16px; font-weight: 600;">White Background</h3>
124
+ <rel-container padding="md" background="white" shadow>
125
+ <p style="margin: 0; color: #333;">White background container</p>
126
+ </rel-container>
127
+ </div>
128
+
129
+ <div>
130
+ <h3 style="margin-bottom: 12px; font-size: 16px; font-weight: 600;">Light Background</h3>
131
+ <rel-container padding="md" background="light" shadow>
132
+ <p style="margin: 0; color: #333;">Light gray background container</p>
133
+ </rel-container>
134
+ </div>
135
+
136
+ <div>
137
+ <h3 style="margin-bottom: 12px; font-size: 16px; font-weight: 600;">No Background (Transparent)</h3>
138
+ <rel-container padding="md" background="none">
139
+ <p style="margin: 0; color: #333; background: white; padding: 8px; border-radius: 4px;">
140
+ Transparent background container (content has its own background for visibility)
141
+ </p>
142
+ </rel-container>
143
+ </div>
144
+ </div>
145
+ `,
146
+ };
147
+
148
+ /**
149
+ * Container with complex nested content
150
+ */
151
+ export const ComplexContent: Story = {
152
+ render: () => html`
153
+ <div style="background: #e0e0e0; padding: 24px;">
154
+ <rel-container padding="lg" background="white" shadow>
155
+ <h2 style="margin: 0 0 16px 0; font-size: 24px; font-weight: 600; color: #333;">User Profile</h2>
156
+ <div style="display: flex; gap: 16px; align-items: center; margin-bottom: 16px;">
157
+ <img src="/assets/dummy 1.jpeg" alt="User" style="width: 60px; height: 60px; border-radius: 50%; object-fit: cover;" />
158
+ <div>
159
+ <h3 style="margin: 0 0 4px 0; font-size: 18px; font-weight: 600; color: #333;">John Doe</h3>
160
+ <p style="margin: 0; color: #666; font-size: 14px;">Software Engineer</p>
161
+ </div>
162
+ </div>
163
+ <p style="margin: 0; color: #555; line-height: 1.6;">
164
+ This container holds complex content including headings, images, and text.
165
+ The container provides consistent spacing and visual structure.
166
+ </p>
167
+ </rel-container>
168
+ </div>
169
+ `,
170
+ };
171
+
172
+ /**
173
+ * Nested containers for card-like layouts
174
+ */
175
+ export const NestedContainers: Story = {
176
+ render: () => html`
177
+ <div style="background: #e0e0e0; padding: 24px;">
178
+ <rel-container padding="lg" background="light">
179
+ <h2 style="margin: 0 0 16px 0; font-size: 20px; font-weight: 600; color: #333;">Dashboard</h2>
180
+
181
+ <div style="display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: 16px;">
182
+ <rel-container padding="md" background="white" shadow>
183
+ <h3 style="margin: 0 0 8px 0; font-size: 16px; font-weight: 600; color: #333;">Total Users</h3>
184
+ <p style="margin: 0; font-size: 32px; font-weight: 700; color: #0059F4;">1,234</p>
185
+ </rel-container>
186
+
187
+ <rel-container padding="md" background="white" shadow>
188
+ <h3 style="margin: 0 0 8px 0; font-size: 16px; font-weight: 600; color: #333;">Revenue</h3>
189
+ <p style="margin: 0; font-size: 32px; font-weight: 700; color: #00A86B;">$56,789</p>
190
+ </rel-container>
191
+
192
+ <rel-container padding="md" background="white" shadow>
193
+ <h3 style="margin: 0 0 8px 0; font-size: 16px; font-weight: 600; color: #333;">Active Sessions</h3>
194
+ <p style="margin: 0; font-size: 32px; font-weight: 700; color: #FFB020;">89</p>
195
+ </rel-container>
196
+ </div>
197
+ </rel-container>
198
+ </div>
199
+ `,
200
+ };
201
+
202
+ /**
203
+ * All combinations showcase
204
+ */
205
+ export const AllCombinations: Story = {
206
+ render: () => html`
207
+ <div style="display: flex; flex-direction: column; gap: 32px; background: #e0e0e0; padding: 24px;">
208
+ <div>
209
+ <h2 style="margin-bottom: 16px; font-size: 20px; font-weight: 600;">Without Shadow</h2>
210
+ <div style="display: flex; flex-direction: column; gap: 16px;">
211
+ <rel-container padding="sm" background="white">
212
+ <p style="margin: 0; color: #333;">Small padding, white background, no shadow</p>
213
+ </rel-container>
214
+ <rel-container padding="md" background="light">
215
+ <p style="margin: 0; color: #333;">Medium padding, light background, no shadow</p>
216
+ </rel-container>
217
+ <rel-container padding="lg" background="white">
218
+ <p style="margin: 0; color: #333;">Large padding, white background, no shadow</p>
219
+ </rel-container>
220
+ </div>
221
+ </div>
222
+
223
+ <div>
224
+ <h2 style="margin-bottom: 16px; font-size: 20px; font-weight: 600;">With Shadow</h2>
225
+ <div style="display: flex; flex-direction: column; gap: 16px;">
226
+ <rel-container padding="sm" background="white" shadow>
227
+ <p style="margin: 0; color: #333;">Small padding, white background, with shadow</p>
228
+ </rel-container>
229
+ <rel-container padding="md" background="light" shadow>
230
+ <p style="margin: 0; color: #333;">Medium padding, light background, with shadow</p>
231
+ </rel-container>
232
+ <rel-container padding="lg" background="white" shadow>
233
+ <p style="margin: 0; color: #333;">Large padding, white background, with shadow</p>
234
+ </rel-container>
235
+ </div>
236
+ </div>
237
+ </div>
238
+ `,
239
+ };
@@ -0,0 +1,74 @@
1
+ import { LitElement, html, css } from "lit";
2
+ import { customElement, property } from "lit/decorators.js";
3
+
4
+ @customElement("rel-container")
5
+ export class RelContainer extends LitElement {
6
+ @property({ type: String }) padding: "sm" | "md" | "lg" = "md";
7
+
8
+ @property({ type: Boolean }) shadow: boolean = false;
9
+
10
+ @property({ type: String }) background: "light" | "white" | "none" = "white";
11
+
12
+ static styles = css`
13
+ :host {
14
+ display: block;
15
+ width: 100%;
16
+ box-sizing: border-box;
17
+ }
18
+
19
+ .reliability-container {
20
+ border-radius: var(--rel-borders-radius-border-radius-200);
21
+ display: block;
22
+ width: 100%;
23
+ box-sizing: border-box;
24
+ }
25
+
26
+ /* Background Variants */
27
+ .bg-white {
28
+ background-color: var(--rel-colors-white);
29
+ }
30
+
31
+ .bg-light {
32
+ background-color: var(--rel-colors-gray-light);
33
+ }
34
+
35
+ .bg-none {
36
+ background: transparent;
37
+ }
38
+
39
+ /* Padding Variants */
40
+ .padding-sm {
41
+ padding: var(--rel-spacing-space-xs);
42
+ }
43
+
44
+ .padding-md {
45
+ padding: var(--rel-spacing-space-md);
46
+ }
47
+
48
+ .padding-lg {
49
+ padding: var(--rel-spacing-space-2xl);
50
+ }
51
+
52
+ /* Shadow */
53
+ .shadow {
54
+ box-shadow: var(--rel-shadows-shadow-300);
55
+ }
56
+ `;
57
+
58
+ private get classes() {
59
+ return [
60
+ "reliability-container",
61
+ `bg-${this.background}`,
62
+ `padding-${this.padding}`,
63
+ this.shadow ? "shadow" : "",
64
+ ].join(" ");
65
+ }
66
+
67
+ render() {
68
+ return html`
69
+ <div class="${this.classes}">
70
+ <slot></slot>
71
+ </div>
72
+ `;
73
+ }
74
+ }