@reliability-design/web 1.0.2 → 1.0.3
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/dist/components/rel-accordion/rel-accordion.ts +27 -22
- package/dist/components/rel-alert/rel-alert.ts +98 -66
- package/dist/components/rel-avatar/rel-avatar.ts +8 -15
- package/dist/components/rel-badge/rel-badge.ts +23 -16
- package/dist/components/rel-breadcrumb/rel-breadcrumb.ts +12 -12
- package/dist/components/rel-button/rel-button.ts +39 -59
- package/dist/components/rel-card/rel-card.ts +11 -10
- package/dist/components/rel-cardmedia/rel-cardmedia.ts +11 -17
- package/dist/components/rel-checkbox/rel-checkbox.ts +18 -35
- package/dist/components/rel-chip/rel-chip.ts +37 -128
- package/dist/components/rel-container/rel-container.ts +1 -6
- package/dist/components/rel-divider/rel-divider.ts +37 -37
- package/dist/components/rel-layout/rel-layout.ts +12 -14
- package/dist/components/rel-progress/rel-progress.ts +26 -15
- package/dist/components/rel-radio/rel-radio.ts +32 -72
- package/dist/components/rel-snackbar/rel-snackbar.ts +6 -0
- package/dist/components/rel-stepper/rel-stepper.ts +23 -2
- package/dist/components/rel-switch/rel-switch.ts +7 -5
- package/dist/components/rel-tab/rel-tab.ts +10 -8
- package/dist/components/rel-textfield/rel-textfield.ts +2 -2
- package/dist/index.d.mts +11 -7
- package/dist/index.d.ts +11 -7
- package/dist/index.js +367 -475
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +383 -489
- package/dist/index.mjs.map +1 -1
- package/dist/vars-6ZIUPIU4.css +184 -0
- package/package.json +2 -2
- package/dist/components/rel-accordion/rel-accordion.stories.ts +0 -313
- package/dist/components/rel-alert/rel-alert.stories.ts +0 -412
- package/dist/components/rel-avatar/rel-avatar.stories.ts +0 -327
- package/dist/components/rel-badge/rel-badge.stories.ts +0 -350
- package/dist/components/rel-breadcrumb/rel-breadcrumb.stories.ts +0 -306
- package/dist/components/rel-button/rel-button.stories.ts +0 -356
- package/dist/components/rel-card/rel-card.stories.ts +0 -299
- package/dist/components/rel-cardmedia/rel-cardmedia.stories.ts +0 -368
- package/dist/components/rel-checkbox/rel-checkbox.stories.ts +0 -414
- package/dist/components/rel-chip/rel-chip.stories.ts +0 -552
- package/dist/components/rel-container/rel-container.stories.ts +0 -239
- package/dist/components/rel-divider/rel-divider.stories.ts +0 -229
- package/dist/components/rel-layout/rel-layout.stories.ts +0 -713
- package/dist/components/rel-menu/rel-menu.stories.ts +0 -910
- package/dist/components/rel-progress/rel-progress.stories.ts +0 -817
- package/dist/components/rel-radio/rel-radio.stories.ts +0 -1048
- package/dist/components/rel-segmented-button/rel-segmented-button.stories.ts +0 -1079
- package/dist/components/rel-select/rel-select.stories.ts +0 -1201
- package/dist/components/rel-slider/rel-slider.stories.ts +0 -730
- package/dist/components/rel-snackbar/rel-snackbar.stories.ts +0 -808
- package/dist/components/rel-stepper/rel-stepper.stories.ts +0 -752
- package/dist/components/rel-switch/rel-switch.stories.ts +0 -441
- package/dist/components/rel-tab/rel-tab.stories.ts +0 -492
- package/dist/components/rel-textfield/rel-textfield.stories.ts +0 -710
- package/dist/components/rel-toast/rel-toast.stories.ts +0 -394
- package/dist/components/rel-tooltip/rel-tooltip.stories.ts +0 -364
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/rel-accordion/rel-accordion.ts","../src/components/rel-alert/rel-alert.ts","../src/components/rel-avatar/rel-avatar.ts","../src/components/rel-badge/rel-badge.ts","../src/components/rel-breadcrumb/rel-breadcrumb.ts","../src/components/rel-button/rel-button.ts","../src/components/rel-card/rel-card.ts","../src/components/rel-cardmedia/rel-cardmedia.ts","../src/components/rel-checkbox/rel-checkbox.ts","../src/components/rel-chip/rel-chip.ts","../src/components/rel-container/rel-container.ts","../src/components/rel-divider/rel-divider.ts","../src/components/rel-layout/rel-layout.ts","../src/components/rel-menu/rel-menu.ts","../src/components/rel-progress/rel-progress.ts","../src/components/rel-radio/rel-radio.ts","../src/components/rel-segmented-button/rel-segmented-button.ts","../src/components/rel-select/rel-select.ts","../src/components/rel-slider/rel-slider.ts","../src/components/rel-snackbar/rel-snackbar.ts","../src/components/rel-stepper/rel-stepper.ts","../src/components/rel-switch/rel-switch.ts","../src/components/rel-tab/rel-tab.ts","../src/components/rel-textfield/rel-textfield.ts","../src/components/rel-toast/rel-toast.ts","../src/components/rel-tooltip/rel-tooltip.ts"],"sourcesContent":["import { LitElement, html, css } from \"lit\";\r\nimport { customElement, property, state } from \"lit/decorators.js\";\r\n\r\n@customElement(\"rel-accordion\")\r\nexport class RelAccordion extends LitElement {\r\n @property({ type: String }) title = \"Accordion\";\r\n @property({ type: Boolean }) open = false;\r\n\r\n static styles = css`\r\n :host {\r\n display: block;\r\n width: 100%;\r\n font-family: var(--rel-fontFamilies-primary);\r\n }\r\n\r\n .accordion {\r\n background: var(--rel-colors-white);\r\n border: 1px solid var(--rel-border-default);\r\n border-radius: var(--rel-borders-radius-border-radius-200); /* 8px */\r\n box-shadow: var(--rel-shadows-shadow-100);\r\n transition: all 0.2s ease;\r\n overflow: hidden;\r\n }\r\n\r\n /* HEADER --------------------------------------------------- */\r\n .header {\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n padding: var(--rel-spacing-space-md); /* 16px */\r\n cursor: pointer;\r\n user-select: none;\r\n }\r\n\r\n .title {\r\n font-size: var(--rel-fontSizes-lg); /* 20px */\r\n font-weight: var(--rel-fontWeights-medium);\r\n color: var(--rel-colors-black);\r\n }\r\n\r\n /* ICON ----------------------------------------------------- */\r\n .icon {\r\n width: 20px;\r\n height: 20px;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n transition: transform 0.25s ease;\r\n }\r\n\r\n .icon svg {\r\n width: 20px;\r\n height: 20px;\r\n stroke: var(--rel-colors-gray-primary);\r\n stroke-width: 2;\r\n fill: none;\r\n stroke-linecap: round;\r\n stroke-linejoin: round;\r\n }\r\n\r\n .rotated {\r\n transform: rotate(180deg);\r\n }\r\n\r\n /* BODY ------------------------------------------------------ */\r\n .body {\r\n padding: var(--rel-spacing-space-xl) var(--rel-spacing-space-md)\r\n var(--rel-spacing-space-lg);\r\n /* 24px 16px 20px */\r\n font-size: var(--rel-fontSizes-lg); /* 20px */\r\n color: var(--rel-colors-gray-primary);\r\n animation: fadeIn 0.2s ease;\r\n }\r\n\r\n @keyframes fadeIn {\r\n from {\r\n opacity: 0;\r\n transform: translateY(-4px);\r\n }\r\n to {\r\n opacity: 1;\r\n transform: translateY(0);\r\n }\r\n }\r\n `;\r\n\r\n private toggle() {\r\n this.open = !this.open;\r\n }\r\n\r\n private chevron() {\r\n return html`\r\n <svg viewBox=\"0 0 24 24\">\r\n <polyline points=\"6 9 12 15 18 9\"></polyline>\r\n </svg>\r\n `;\r\n }\r\n\r\n render() {\r\n return html`\r\n <div class=\"accordion\">\r\n <div class=\"header\" @click=${this.toggle}>\r\n <div class=\"title\">${this.title}</div>\r\n\r\n <div class=\"icon ${this.open ? \"rotated\" : \"\"}\">\r\n ${this.chevron()}\r\n </div>\r\n </div>\r\n\r\n ${this.open ? html`<div class=\"body\"><slot></slot></div>` : \"\"}\r\n </div>\r\n `;\r\n }\r\n}\r\n","import { LitElement, html, css } from \"lit\";\r\nimport { customElement, property } from \"lit/decorators.js\";\r\n\r\n@customElement(\"rel-alert\")\r\nexport class RelAlert extends LitElement {\r\n @property({ type: String }) type:\r\n | \"info\"\r\n | \"success\"\r\n | \"warning\"\r\n | \"error\"\r\n | \"neutral\" = \"neutral\";\r\n\r\n @property({ type: String }) message1 = \"\";\r\n @property({ type: String }) message2?: string;\r\n\r\n @property({ type: String }) urlText?: string;\r\n @property({ type: String }) urlHref?: string;\r\n\r\n @property({ type: Boolean }) dismissible = true;\r\n @property({ type: Boolean }) dismissed = false;\r\n\r\n static styles = css`\r\n :host {\r\n display: block;\r\n font-family: var(--rel-fontFamilies-primary);\r\n }\r\n\r\n .rel-alert {\r\n display: flex;\r\n align-items: center;\r\n gap: var(--rel-spacing-space-xs); /* 8px */\r\n padding: var(--rel-spacing-space-sm) var(--rel-spacing-space-md);\r\n /* 12px vertical, 16px horizontal */\r\n border-radius: var(--rel-borders-radius-border-radius-200); /* 8px */\r\n width: fit-content;\r\n min-width: 360px;\r\n box-sizing: border-box;\r\n }\r\n\r\n .rel-content {\r\n display: flex;\r\n flex-direction: column;\r\n gap: 4px;\r\n }\r\n\r\n .rel-message1 {\r\n display: flex;\r\n align-items: center;\r\n margin: 0;\r\n font-size: var(--rel-fontSizes-md);\r\n font-weight: var(--rel-fontWeights-medium);\r\n }\r\n\r\n .rel-message2 {\r\n margin: 0;\r\n font-size: var(--rel-fontSizes-sm);\r\n font-weight: var(--rel-fontWeights-regular);\r\n opacity: 0.9;\r\n }\r\n\r\n .rel-icon {\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n }\r\n\r\n .rel-icon svg {\r\n width: 16px;\r\n height: 16px;\r\n }\r\n\r\n .rel-link {\r\n font-size: var(--rel-fontSizes-sm);\r\n font-weight: var(--rel-fontWeights-medium);\r\n text-decoration: underline;\r\n margin-top: 2px;\r\n color: inherit;\r\n }\r\n\r\n .rel-close {\r\n margin-left: auto;\r\n background: none;\r\n border: none;\r\n cursor: pointer;\r\n width: 16px;\r\n height: 16px;\r\n opacity: 0.6;\r\n padding: 0;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n }\r\n\r\n .rel-close:hover {\r\n opacity: 1;\r\n }\r\n\r\n /* COLORS — using token system */\r\n\r\n .alert-info {\r\n background: var(--rel-background-info);\r\n color: var(--rel-text-info);\r\n }\r\n\r\n .alert-success {\r\n background: var(--rel-background-success);\r\n color: var(--rel-text-success);\r\n }\r\n\r\n .alert-warning {\r\n background: var(--rel-background-warning);\r\n color: var(--rel-text-warning);\r\n }\r\n\r\n .alert-error {\r\n background: var(--rel-background-error);\r\n color: var(--rel-text-error);\r\n }\r\n\r\n .alert-neutral {\r\n background: var(--rel-colors-white);\r\n color: var(--rel-text-primary);\r\n border: 1px solid var(--rel-border-default);\r\n }\r\n `;\r\n\r\n private get iconSvg() {\r\n switch (this.type) {\r\n case \"info\":\r\n return html`<svg viewBox=\"0 0 18 18\" fill=\"none\">\r\n <path\r\n d=\"M9 4.75c-.24 0-.44.08-.61.25-.16.16-.24.36-.24.6 0 .24.08.44.24.61.17.17.37.25.61.25.24 0 .44-.08.61-.25.17-.16.24-.36.24-.61 0-.24-.08-.44-.24-.6-.17-.17-.37-.25-.61-.25Zm.85 3.4h-1.7v5.1h1.7V8.15ZM9 .5c1.18 0 2.29.22 3.32.67 1.03.45 1.93 1.05 2.69 1.81.75.76 1.35 1.66 1.8 2.69.46 1.03.68 2.14.68 3.33 0 1.18-.22 2.29-.68 3.32-.45 1.04-1.05 1.93-1.8 2.69-.76.75-1.66 1.35-2.69 1.8-1.04.46-2.15.68-3.32.68-1.18 0-2.29-.22-3.32-.68-1.04-.45-1.93-1.05-2.69-1.8-.75-.76-1.35-1.66-1.8-2.69C1.92 11.28 1.7 10.17 1.7 9c0-1.18.22-2.29.68-3.32.45-1.04 1.05-1.93 1.8-2.69.76-.75 1.66-1.35 2.69-1.8C6.71.73 7.82.5 9 .5Z\"\r\n fill=\"#4A90E2\"\r\n />\r\n </svg>`;\r\n case \"success\":\r\n return html`<svg viewBox=\"0 0 18 18\" fill=\"none\">\r\n <path\r\n d=\"M7.81 12.91 13.8 6.92l-1.19-1.19L7.81 10.53 5.39 8.11 4.2 9.3l3.61 3.61ZM9 17.5a8.49 8.49 0 1 1 0-17 8.49 8.49 0 0 1 0 17Z\"\r\n fill=\"#4CAA47\"\r\n />\r\n </svg>`;\r\n case \"warning\":\r\n return html`<svg viewBox=\"0 0 16 14\" fill=\"none\">\r\n <path\r\n d=\"M0 14 8 0l8 14H0Zm2.51-1.47h10.98L8 2.95 2.51 12.53ZM8 11.79c.21 0 .38-.07.52-.21.14-.14.21-.31.21-.52 0-.21-.07-.38-.21-.52A.7.7 0 0 0 8 10.32a.7.7 0 0 0-.52.21c-.14.14-.21.31-.21.52 0 .21.07.38.21.52.14.14.31.21.52.21Zm-.73-2.21h1.46V5.89H7.27v3.69Z\"\r\n fill=\"#FF6D00\"\r\n />\r\n </svg>`;\r\n case \"error\":\r\n return html`<svg viewBox=\"0 0 18 18\" fill=\"none\">\r\n <path\r\n d=\"M9 13.25c.24 0 .44-.08.61-.24.17-.17.24-.38.24-.61 0-.24-.08-.44-.24-.61-.17-.16-.37-.24-.61-.24-.24 0-.44.08-.61.24-.17.17-.24.37-.24.61 0 .24.08.44.24.61.17.16.37.24.61.24Zm-.85-3.4h1.7V4.75h-1.7v5.1ZM9 17.5c-1.18 0-2.29-.23-3.32-.68C4.64 16.37 3.74 15.77 2.99 15.02c-.75-.75-1.35-1.65-1.8-2.69C.73 11.29.5 10.18.5 9c0-1.18.23-2.29.68-3.32.45-1.03 1.05-1.93 1.8-2.69C5.03 1.23 5.94.63 6.97.18 8 .72 9.12.5 10.3.5c1.17 0 2.28.23 3.32.68 1.03.45 1.93 1.05 2.68 1.8.75.76 1.35 1.66 1.8 2.69.46 1.03.68 2.14.68 3.33 0 1.18-.22 2.29-.68 3.32-.45 1.04-1.05 1.93-1.8 2.69-.76.75-1.66 1.35-2.69 1.8-1.04.46-2.15.68-3.32.68Z\"\r\n fill=\"#C62828\"\r\n />\r\n </svg>`;\r\n default:\r\n return html``;\r\n }\r\n }\r\n\r\n private dismissAlert() {\r\n this.dismissed = true;\r\n }\r\n\r\n render() {\r\n if (this.dismissed) return null;\r\n\r\n return html`\r\n <div class=\"rel-alert alert-${this.type}\">\r\n <div class=\"rel-icon\">${this.iconSvg}</div>\r\n\r\n <div class=\"rel-content\">\r\n <p class=\"rel-message1\">${this.message1}</p>\r\n\r\n ${this.message2\r\n ? html`<p class=\"rel-message2\">${this.message2}</p>`\r\n : \"\"}\r\n ${this.urlText && this.urlHref\r\n ? html`<a class=\"rel-link\" href=\"${this.urlHref}\"\r\n >${this.urlText}</a\r\n >`\r\n : \"\"}\r\n </div>\r\n\r\n ${this.dismissible\r\n ? html`<button class=\"rel-close\" @click=${this.dismissAlert}>\r\n ✕\r\n </button>`\r\n : \"\"}\r\n </div>\r\n `;\r\n }\r\n}\r\n","import { LitElement, html, css } from \"lit\";\r\nimport { customElement, property } from \"lit/decorators.js\";\r\n\r\n@customElement(\"rel-avatar\")\r\nexport class RelAvatar extends LitElement {\r\n @property({ type: String }) size: \"lg\" | \"md\" | \"sm\" | \"xs\" = \"md\";\r\n @property({ type: String }) type: \"image\" | \"text\" | \"icon\" = \"image\";\r\n\r\n @property({ type: String }) src = \"\";\r\n @property({ type: String }) text = \"\";\r\n @property({ type: String }) alt = \"Avatar\";\r\n\r\n static styles = css`\r\n :host {\r\n display: inline-flex;\r\n font-family: var(--rel-fontFamilies-primary);\r\n }\r\n\r\n .avatar {\r\n display: inline-flex;\r\n align-items: center;\r\n justify-content: center;\r\n border-radius: 50%;\r\n overflow: hidden;\r\n\r\n background-color: var(--rel-colors-gray-heading);\r\n color: var(--rel-colors-white);\r\n font-weight: var(--rel-fontWeights-bold);\r\n\r\n user-select: none;\r\n text-transform: uppercase;\r\n }\r\n\r\n /* -------------------------\r\n CORRECTED SIZE CLASSES\r\n ------------------------- */\r\n .avatar-lg {\r\n width: 40px;\r\n height: 40px;\r\n font-size: var(--rel-fontSizes-xl);\r\n line-height: 38px;\r\n }\r\n\r\n .avatar-md {\r\n width: 32px;\r\n height: 32px;\r\n font-size: var(--rel-fontSizes-lg);\r\n line-height: 32px;\r\n }\r\n\r\n .avatar-sm {\r\n width: 24px;\r\n height: 24px;\r\n font-size: var(--rel-fontSizes-md);\r\n line-height: 24px;\r\n }\r\n\r\n .avatar-xs {\r\n width: 18px;\r\n height: 18px;\r\n font-size: var(--rel-fontSizes-xs);\r\n line-height: 18px;\r\n }\r\n\r\n img {\r\n width: 100%;\r\n height: 100%;\r\n object-fit: cover;\r\n }\r\n\r\n .icon-slot {\r\n width: 100%;\r\n height: 100%;\r\n display: inline-flex;\r\n align-items: center;\r\n justify-content: center;\r\n }\r\n\r\n .icon-slot ::slotted(*) {\r\n font-size: var(--rel-fontSizes-md);\r\n }\r\n\r\n .icon-slot ::slotted(svg) {\r\n width: 50%;\r\n height: 50%;\r\n }\r\n `;\r\n\r\n render() {\r\n return html`\r\n <div class=\"avatar avatar-${this.size}\">\r\n ${this.type === \"image\"\r\n ? html`<img src=${this.src!} alt=${this.alt} />`\r\n : this.type === \"text\"\r\n ? html`<span>${this.text}</span>`\r\n : html`<span class=\"icon-slot\"><slot></slot></span>`}\r\n </div>\r\n `;\r\n }\r\n}\r\n","import { LitElement, html, css } from \"lit\";\r\nimport { customElement, property } from \"lit/decorators.js\";\r\n\r\n@customElement(\"rel-badge\")\r\nexport class RelBadge extends LitElement {\r\n @property({ type: String }) number = \"\";\r\n @property({ type: String }) size: \"sm\" | \"md\" | \"lg\" = \"md\";\r\n @property({ type: String }) variant: \"dot\" | \"number\" = \"number\";\r\n\r\n static styles = css`\r\n :host {\r\n display: inline-flex;\r\n }\r\n\r\n .badge {\r\n display: inline-flex;\r\n align-items: center;\r\n justify-content: center;\r\n font-family: \"Poppins\", sans-serif;\r\n font-weight: 600;\r\n background-color: var(--rel-colors-red-primary);\r\n color: var(--rel-colors-white);\r\n border-radius: 50%;\r\n }\r\n\r\n /* PERFECT CIRCLES — FIXED SIZES */\r\n .badge-sm {\r\n width: 20px;\r\n height: 20px;\r\n font-size: 12px;\r\n }\r\n\r\n .badge-md {\r\n width: 28px;\r\n height: 28px;\r\n font-size: 14px;\r\n }\r\n\r\n .badge-lg {\r\n width: 40px;\r\n height: 40px;\r\n font-size: 20px;\r\n }\r\n\r\n /* DOT — smaller circle */\r\n .badge-dot {\r\n width: 10px !important;\r\n height: 10px !important;\r\n padding: 0 !important;\r\n }\r\n\r\n .badge-number {\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n }\r\n `;\r\n\r\n private get classes() {\r\n return [\"badge\", `badge-${this.size}`, `badge-${this.variant}`].join(\" \");\r\n }\r\n\r\n render() {\r\n const isDot = this.variant === \"dot\";\r\n\r\n return html`\r\n <span class=\"${this.classes}\">${isDot ? \"\" : this.number}</span>\r\n `;\r\n }\r\n}\r\n","import { LitElement, html, css } from \"lit\";\r\nimport { customElement, property } from \"lit/decorators.js\";\r\n\r\ninterface BreadcrumbItem {\r\n label: string;\r\n url?: string;\r\n}\r\n\r\n@customElement(\"rel-breadcrumbs\")\r\nexport class RelBreadcrumbs extends LitElement {\r\n @property({ type: Array }) items: BreadcrumbItem[] = [];\r\n\r\n static styles = css`\r\n :host {\r\n display: block;\r\n font-family: var(--rel-fontFamilies-primary);\r\n font-size: var(--rel-fontSizes-md);\r\n color: var(--rel-colors-gray-text);\r\n }\r\n\r\n nav {\r\n display: block;\r\n width: 100%;\r\n }\r\n\r\n ol {\r\n display: flex;\r\n flex-wrap: wrap;\r\n padding: 0;\r\n margin: 0;\r\n list-style: none;\r\n }\r\n\r\n li {\r\n display: flex;\r\n align-items: center;\r\n }\r\n\r\n a {\r\n text-decoration: none;\r\n font-weight: var(--rel-fontWeights-medium);\r\n color: var(--rel-colors-gray-heading);\r\n transition: color 0.2s ease;\r\n }\r\n\r\n a:hover {\r\n text-decoration: underline;\r\n color: var(--rel-colors-primary);\r\n }\r\n\r\n .current {\r\n font-weight: var(--rel-fontWeights-bold);\r\n color: var(--rel-colors-black);\r\n cursor: default;\r\n }\r\n\r\n svg {\r\n stroke: var(--rel-colors-gray-text);\r\n width: 16px;\r\n height: 16px;\r\n margin: 0 10px;\r\n }\r\n `;\r\n\r\n render() {\r\n return html`\r\n <nav aria-label=\"Breadcrumb\">\r\n <ol>\r\n ${this.items.map((item, index) => {\r\n const last = index === this.items.length - 1;\r\n return html`\r\n <li>\r\n ${item.url && !last\r\n ? html`<a href=\"${item.url}\">${item.label}</a>`\r\n : html`<span class=\"current\">${item.label}</span>`}\r\n ${!last\r\n ? html`\r\n <svg viewBox=\"0 0 24 24\">\r\n <polyline\r\n points=\"9 18 15 12 9 6\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n ></polyline>\r\n </svg>\r\n `\r\n : \"\"}\r\n </li>\r\n `;\r\n })}\r\n </ol>\r\n </nav>\r\n `;\r\n }\r\n}\r\n","import { LitElement, html, css } from \"lit\";\r\nimport { customElement, property } from \"lit/decorators.js\";\r\n\r\n@customElement(\"rel-button\")\r\nexport class RelButton extends LitElement {\r\n @property({ type: String }) variant:\r\n | \"default\"\r\n | \"primary\"\r\n | \"secondary\"\r\n | \"text\"\r\n | \"link\"\r\n | \"icon\" = \"default\";\r\n\r\n @property({ type: String }) tone: \"default\" | \"critical\" | \"success\" =\r\n \"default\";\r\n\r\n @property({ type: String }) size: \"small\" | \"medium\" | \"large\" = \"medium\";\r\n\r\n @property({ type: String }) border:\r\n | \"corner-radius\"\r\n | \"small-corner-radius\"\r\n | \"no-corner-radius\" = \"corner-radius\";\r\n\r\n @property({ type: Boolean, reflect: true }) disabled = false;\r\n\r\n static styles = css`\r\n :host {\r\n display: inline-flex;\r\n }\r\n\r\n button {\r\n font-family: var(--rel-fontFamilies-primary);\r\n font-weight: var(--rel-fontWeights-semibold);\r\n cursor: pointer;\r\n border: none;\r\n transition: all 0.15s ease;\r\n display: inline-flex;\r\n align-items: center;\r\n justify-content: center;\r\n gap: var(--rel-spacing-space-2xs);\r\n outline: none;\r\n }\r\n\r\n /* -------------------------\r\n SIZES (Figma)\r\n -------------------------- */\r\n .size-small {\r\n height: 32px;\r\n padding: 0 var(--rel-spacing-space-md);\r\n font-size: var(--rel-fontSizes-sm);\r\n }\r\n\r\n .size-medium {\r\n height: 40px;\r\n padding: 0 var(--rel-spacing-space-lg);\r\n font-size: var(--rel-fontSizes-md);\r\n }\r\n\r\n .size-large {\r\n height: 48px;\r\n padding: 0 var(--rel-spacing-space-xl);\r\n font-size: var(--rel-fontSizes-lg);\r\n }\r\n\r\n /* -------------------------\r\n BORDER RADII (Tokens)\r\n -------------------------- */\r\n .border-corner-radius {\r\n border-radius: var(--rel-borders-radius-border-radius-500);\r\n }\r\n\r\n .border-small-corner-radius {\r\n border-radius: var(--rel-borders-radius-border-radius-200);\r\n }\r\n\r\n .border-no-corner-radius {\r\n border-radius: var(--rel-borders-radius-border-radius-0);\r\n }\r\n\r\n /* -------------------------\r\n DISABLED STATE\r\n -------------------------- */\r\n :host([disabled]) button,\r\n button:disabled {\r\n cursor: not-allowed;\r\n background-color: var(--rel-colors-gray-border) !important;\r\n color: var(--rel-colors-gray-disabled-text) !important;\r\n border-color: var(--rel-colors-gray-border) !important;\r\n opacity: 1;\r\n pointer-events: none;\r\n }\r\n\r\n /* -------------------------\r\n VARIANTS & TONES\r\n -------------------------- */\r\n\r\n /* DEFAULT */\r\n .btn-default.tone-default {\r\n background: var(--rel-colors-gray-primary);\r\n color: var(--rel-colors-white);\r\n }\r\n .btn-default.tone-critical {\r\n background: var(--rel-colors-red-primary);\r\n color: var(--rel-colors-white);\r\n }\r\n .btn-default.tone-success {\r\n background: var(--rel-colors-green-success);\r\n color: var(--rel-colors-white);\r\n }\r\n\r\n /* PRIMARY */\r\n .btn-primary.tone-default {\r\n background: var(--rel-colors-green-primary);\r\n color: var(--rel-colors-black);\r\n }\r\n .btn-primary.tone-critical {\r\n background: var(--rel-colors-red-primary);\r\n color: var(--rel-colors-white);\r\n }\r\n .btn-primary.tone-success {\r\n background: var(--rel-colors-green-success);\r\n color: var(--rel-colors-white);\r\n }\r\n\r\n /* SECONDARY */\r\n .btn-secondary {\r\n background: var(--rel-colors-white);\r\n border: 1px solid var(--rel-colors-black);\r\n color: var(--rel-colors-black);\r\n }\r\n\r\n /* TEXT */\r\n .btn-text {\r\n background: transparent;\r\n color: var(--rel-colors-black);\r\n }\r\n\r\n /* LINK */\r\n .btn-link {\r\n background: transparent;\r\n color: var(--rel-colors-blue-primary);\r\n text-decoration: underline;\r\n }\r\n\r\n /* ICON */\r\n .btn-icon {\r\n width: 40px;\r\n height: 40px;\r\n padding: 0;\r\n border-radius: 50%;\r\n background: var(--rel-colors-gray-light);\r\n color: var(--rel-colors-black);\r\n }\r\n\r\n /* -------------------------\r\n STATES: Hover / Active\r\n -------------------------- */\r\n button:hover:not(.btn-disabled) {\r\n filter: brightness(0.92);\r\n }\r\n\r\n button:active:not(.btn-disabled) {\r\n transform: scale(0.97);\r\n }\r\n\r\n /* TEXT BUTTON — hover border */\r\n .btn-text:not(.btn-disabled):hover {\r\n border: 1px solid var(--rel-colors-black);\r\n text-decoration: none;\r\n }\r\n\r\n /* LINK BUTTON — hover border */\r\n .btn-link:not(.btn-disabled):hover {\r\n border: 1px solid var(--rel-colors-blue-primary);\r\n text-decoration: underline;\r\n }\r\n\r\n /* -------------------------\r\n FOCUS RING\r\n -------------------------- */\r\n button:focus-visible {\r\n outline: 2px solid var(--rel-colors-blue-primary);\r\n outline-offset: 2px;\r\n }\r\n `;\r\n\r\n private get classes() {\r\n return [\r\n `btn-${this.variant}`,\r\n `tone-${this.tone}`,\r\n `size-${this.size}`,\r\n `border-${this.border}`,\r\n this.disabled ? \"btn-disabled\" : \"\",\r\n ].join(\" \");\r\n }\r\n\r\n render() {\r\n return html`\r\n <button class=\"${this.classes}\" ?disabled=${this.disabled}>\r\n <slot></slot>\r\n </button>\r\n `;\r\n }\r\n}\r\n","import { LitElement, html, css } from \"lit\";\r\nimport { customElement } from \"lit/decorators.js\";\r\n\r\n@customElement(\"rel-card\")\r\nexport class RelCard extends LitElement {\r\n static styles = css`\r\n :host {\r\n display: block;\r\n }\r\n\r\n .card {\r\n background-color: var(--rel-colors-white, #ffffff);\r\n border-radius: var(--rel-borderRadius-lg, 12px);\r\n padding: var(--rel-spacing-space-md, 16px);\r\n\r\n box-shadow: 0px 3px 3px rgba(0, 0, 0, 0.3),\r\n 0px 6px 10px 4px rgba(0, 0, 0, 0.15);\r\n\r\n font-family: var(--rel-fontFamilies-primary);\r\n transition: transform 0.2s ease, box-shadow 0.2s ease;\r\n }\r\n\r\n .card:hover {\r\n transform: translateY(-3px);\r\n box-shadow: 0px 4px 8px rgba(0, 0, 0, 0.35),\r\n 0px 8px 14px 4px rgba(0, 0, 0, 0.2);\r\n }\r\n `;\r\n\r\n render() {\r\n return html` <div class=\"card\"><slot></slot></div> `;\r\n }\r\n}\r\n","import { LitElement, html, css } from \"lit\";\r\nimport { customElement, property } from \"lit/decorators.js\";\r\n\r\n@customElement(\"rel-card-media\")\r\nexport class RelCardMedia extends LitElement {\r\n @property({ type: String }) imageSrc = \"\";\r\n @property({ type: String }) imageAlt = \"Card image\";\r\n @property({ type: String }) title = \"\";\r\n @property({ type: String }) subtitle = \"\";\r\n\r\n static styles = css`\r\n :host {\r\n display: block;\r\n font-family: var(--rel-fontFamilies-primary);\r\n }\r\n\r\n .card-media {\r\n background-color: var(--rel-colors-white, #ffffff);\r\n border-radius: var(--rel-borderRadius-lg, 12px);\r\n overflow: hidden;\r\n\r\n box-shadow: 0px 4px 4px rgba(0, 0, 0, 0.3),\r\n 0px 8px 12px 6px rgba(0, 0, 0, 0.15);\r\n\r\n transition: transform 0.2s ease, box-shadow 0.2s ease;\r\n }\r\n\r\n .card-media:hover {\r\n transform: translateY(-4px);\r\n box-shadow: 0px 6px 10px rgba(0, 0, 0, 0.35),\r\n 0px 10px 16px 6px rgba(0, 0, 0, 0.2);\r\n }\r\n\r\n .card-image img {\r\n display: block;\r\n width: 100%;\r\n height: auto;\r\n object-fit: cover;\r\n }\r\n\r\n .card-content {\r\n padding: var(--rel-spacing-space-md, 16px);\r\n }\r\n\r\n .card-content h3 {\r\n margin: 0 0 4px 0;\r\n font-size: var(--rel-fontSizes-md, 16px);\r\n font-weight: var(--rel-fontWeights-semibold, 600);\r\n color: var(--rel-colors-gray-heading, #2b2b2b);\r\n }\r\n\r\n .card-content p {\r\n margin: 0 0 8px 0;\r\n font-size: var(--rel-fontSizes-sm, 14px);\r\n color: var(--rel-colors-gray-text, #555);\r\n }\r\n `;\r\n\r\n render() {\r\n return html`\r\n <div class=\"card-media\">\r\n ${this.imageSrc\r\n ? html`\r\n <div class=\"card-image\">\r\n <img src=\"${this.imageSrc}\" alt=\"${this.imageAlt}\" />\r\n </div>\r\n `\r\n : null}\r\n\r\n <div class=\"card-content\">\r\n ${this.title ? html`<h3>${this.title}</h3>` : null}\r\n ${this.subtitle ? html`<p>${this.subtitle}</p>` : null}\r\n\r\n <!-- Slot for extra content such as buttons, descriptions, etc -->\r\n <slot></slot>\r\n </div>\r\n </div>\r\n `;\r\n }\r\n}\r\n","import { LitElement, html, css } from \"lit\";\r\nimport { customElement, property } from \"lit/decorators.js\";\r\n\r\ntype CheckboxState = \"default\" | \"error\" | \"disabled\";\r\ntype CheckboxStatus = \"unchecked\" | \"checked\" | \"indeterminate\";\r\n\r\n@customElement(\"rel-checkbox\")\r\nexport class RelCheckbox extends LitElement {\r\n @property({ type: String }) label = \"Label\";\r\n @property({ type: String }) supportingtext = \"\";\r\n @property({ type: String }) state: CheckboxState = \"default\";\r\n @property({ type: String }) status: CheckboxStatus = \"unchecked\";\r\n\r\n static styles = css`\r\n :host {\r\n display: block;\r\n font-family: var(--rel-fontFamilies-primary);\r\n }\r\n\r\n .wrapper {\r\n display: flex;\r\n flex-direction: column;\r\n gap: 4px;\r\n }\r\n\r\n .row {\r\n display: flex;\r\n align-items: center;\r\n gap: 10px;\r\n cursor: pointer;\r\n }\r\n\r\n input {\r\n position: absolute;\r\n opacity: 0;\r\n pointer-events: none;\r\n }\r\n\r\n .box {\r\n width: 18px;\r\n height: 18px;\r\n border-radius: 4px;\r\n border: 2px solid var(--rel-colors-gray-heading);\r\n background: var(--rel-colors-white);\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n transition: all 0.2s;\r\n }\r\n\r\n /* ICONS FIXED SIZE */\r\n svg {\r\n width: 12px;\r\n height: 12px;\r\n display: none;\r\n pointer-events: none;\r\n }\r\n\r\n /* CHECKED */\r\n .checked .box {\r\n background: var(--rel-colors-gray-heading);\r\n border-color: var(--rel-colors-gray-heading);\r\n }\r\n .checked .check-icon {\r\n display: block;\r\n }\r\n\r\n /* INDETERMINATE */\r\n .indeterminate .box {\r\n background: var(--rel-colors-gray-heading);\r\n border-color: var(--rel-colors-gray-heading);\r\n }\r\n .indeterminate .indeterminate-icon {\r\n display: block;\r\n }\r\n\r\n /* ERROR */\r\n .error .box {\r\n border-color: var(--rel-colors-red-primary);\r\n }\r\n .error.checked .box,\r\n .error.indeterminate .box {\r\n background: var(--rel-colors-red-primary);\r\n border-color: var(--rel-colors-red-primary);\r\n }\r\n .error .label,\r\n .error .text {\r\n color: var(--rel-colors-red-primary);\r\n }\r\n\r\n /* DISABLED */\r\n .disabled {\r\n opacity: 0.55;\r\n cursor: not-allowed !important;\r\n }\r\n\r\n .label {\r\n font-size: var(--rel-fontSizes-md);\r\n color: var(--rel-colors-gray-heading);\r\n font-weight: var(--rel-fontWeights-medium);\r\n }\r\n\r\n .text {\r\n font-size: var(--rel-fontSizes-sm);\r\n color: var(--rel-colors-gray-text);\r\n }\r\n\r\n /* Focus ring */\r\n input:focus-visible + .box {\r\n outline: 2px solid var(--rel-colors-blue-primary);\r\n outline-offset: 2px;\r\n }\r\n `;\r\n\r\n private toggle() {\r\n if (this.state === \"disabled\") return;\r\n\r\n if (this.status === \"unchecked\") this.status = \"checked\";\r\n else if (this.status === \"checked\") this.status = \"indeterminate\";\r\n else this.status = \"unchecked\";\r\n\r\n this.dispatchEvent(new CustomEvent(\"changed\", { detail: this.status }));\r\n }\r\n\r\n render() {\r\n const className = `\r\n wrapper\r\n ${this.state}\r\n ${this.status}\r\n `;\r\n\r\n return html`\r\n <div class=\"${className}\">\r\n <label class=\"row\">\r\n <input\r\n type=\"checkbox\"\r\n @change=${this.toggle}\r\n ?disabled=${this.state === \"disabled\"}\r\n />\r\n\r\n <span class=\"box\">\r\n <!-- CHECK ICON -->\r\n <svg class=\"check-icon\" viewBox=\"0 0 18 14\" fill=\"white\">\r\n <path\r\n d=\"M6.44479 14L0.5 7.36383L1.9862 5.70478L6.44479 10.6819L16.0138 0L17.5 1.65904L6.44479 14Z\"\r\n />\r\n </svg>\r\n\r\n <!-- INDETERMINATE ICON -->\r\n <svg class=\"indeterminate-icon\" viewBox=\"0 0 16 2\" fill=\"white\">\r\n <rect width=\"16\" height=\"2\" />\r\n </svg>\r\n </span>\r\n\r\n <span class=\"label\">${this.label}</span>\r\n </label>\r\n\r\n ${this.supportingtext\r\n ? html`<span class=\"text\">${this.supportingtext}</span>`\r\n : null}\r\n </div>\r\n `;\r\n }\r\n}\r\n","import { LitElement, html, css } from \"lit\";\r\nimport { customElement, property, state } from \"lit/decorators.js\";\r\n\r\n@customElement(\"rel-chip\")\r\nexport class RelChip extends LitElement {\r\n @property({ type: String }) label: string = \"Label\";\r\n\r\n @property({ type: String }) tone: \"default\" | \"blue\" | \"yellow\" | \"red\" | \"green\" = \"default\";\r\n\r\n @property({ type: String }) leadingIcon?: string;\r\n\r\n @property({ type: String }) trailingIcon?: string;\r\n\r\n @property({ type: String }) avatar?: string;\r\n\r\n @property({ type: Boolean }) removable: boolean = false;\r\n\r\n @property({ type: Boolean }) outline: boolean = false;\r\n\r\n @state() private removed: boolean = false;\r\n\r\n static styles = css`\r\n :host {\r\n display: inline-block;\r\n }\r\n\r\n :host([removed]) {\r\n display: none;\r\n }\r\n\r\n .chip {\r\n display: inline-flex;\r\n align-items: center;\r\n font-family: var(--rel-fontFamilies-primary);\r\n font-size: var(--rel-fontSizes-md);\r\n font-weight: var(--rel-fontWeights-medium);\r\n border-radius: var(--rel-borders-radius-border-radius-500);\r\n padding: var(--rel-spacing-space-2xs) var(--rel-spacing-space-sm);\r\n gap: var(--rel-spacing-space-2xs);\r\n cursor: pointer;\r\n transition: all 0.2s ease-in-out;\r\n border: var(--rel-borders-width-stroke-100) solid transparent;\r\n user-select: none;\r\n white-space: nowrap;\r\n }\r\n\r\n .chip:hover {\r\n filter: brightness(0.92);\r\n transform: translateY(-1px);\r\n box-shadow: var(--rel-shadows-shadow-100);\r\n }\r\n\r\n .chip:focus:not(:focus-visible) {\r\n outline: none;\r\n }\r\n\r\n .chip:active {\r\n transform: scale(0.97) translateY(0);\r\n box-shadow: none;\r\n filter: brightness(0.88);\r\n }\r\n\r\n /* Tone Variants - Filled */\r\n .chip-default {\r\n background: var(--rel-colors-gray-border);\r\n color: var(--rel-colors-black);\r\n }\r\n\r\n .chip-default:focus {\r\n outline: var(--rel-borders-width-stroke-200) solid var(--rel-colors-gray-primary);\r\n outline-offset: var(--rel-spacing-space-3xs);\r\n }\r\n\r\n .chip-blue {\r\n background: var(--rel-colors-blue-tertiary);\r\n color: var(--rel-colors-white);\r\n }\r\n\r\n .chip-blue:focus {\r\n outline: var(--rel-borders-width-stroke-200) solid var(--rel-colors-blue-tertiary);\r\n outline-offset: var(--rel-spacing-space-3xs);\r\n }\r\n\r\n .chip-yellow {\r\n background: var(--rel-colors-yellow-pending);\r\n color: var(--rel-colors-black);\r\n }\r\n\r\n .chip-yellow:focus {\r\n outline: var(--rel-borders-width-stroke-200) solid var(--rel-colors-yellow-pending);\r\n outline-offset: var(--rel-spacing-space-3xs);\r\n }\r\n\r\n .chip-red {\r\n background: var(--rel-colors-red-secondary);\r\n color: var(--rel-colors-white);\r\n }\r\n\r\n .chip-red:focus {\r\n outline: var(--rel-borders-width-stroke-200) solid var(--rel-colors-red-secondary);\r\n outline-offset: var(--rel-spacing-space-3xs);\r\n }\r\n\r\n .chip-green {\r\n background: var(--rel-colors-green-success);\r\n color: var(--rel-colors-white);\r\n }\r\n\r\n .chip-green:focus {\r\n outline: var(--rel-borders-width-stroke-200) solid var(--rel-colors-green-success);\r\n outline-offset: var(--rel-spacing-space-3xs);\r\n }\r\n\r\n /* Outline Variants */\r\n .chip-outline.chip-default {\r\n background: transparent;\r\n border-color: var(--rel-colors-gray-border);\r\n color: var(--rel-colors-black);\r\n }\r\n\r\n .chip-outline.chip-blue {\r\n background: transparent;\r\n border-color: var(--rel-colors-blue-tertiary);\r\n color: var(--rel-colors-blue-tertiary);\r\n }\r\n\r\n .chip-outline.chip-yellow {\r\n background: transparent;\r\n border-color: var(--rel-colors-yellow-pending);\r\n color: var(--rel-colors-yellow-pending);\r\n }\r\n\r\n .chip-outline.chip-red {\r\n background: transparent;\r\n border-color: var(--rel-colors-red-secondary);\r\n color: var(--rel-colors-red-secondary);\r\n }\r\n\r\n .chip-outline.chip-green {\r\n background: transparent;\r\n border-color: var(--rel-colors-green-success);\r\n color: var(--rel-colors-green-success);\r\n }\r\n\r\n .chip-avatar {\r\n width: 20px;\r\n height: 20px;\r\n border-radius: var(--rel-borders-radius-border-radius-500);\r\n object-fit: cover;\r\n }\r\n\r\n .chip-icon {\r\n display: flex;\r\n align-items: center;\r\n line-height: 0;\r\n }\r\n\r\n .chip-icon ::slotted(svg),\r\n .chip-icon svg {\r\n width: 16px;\r\n height: 16px;\r\n fill: currentColor;\r\n }\r\n\r\n .chip-label {\r\n line-height: var(--rel-lineHeights-md);\r\n }\r\n\r\n .chip-remove {\r\n background: transparent;\r\n border: none;\r\n color: inherit;\r\n font-size: var(--rel-fontSizes-md);\r\n cursor: pointer;\r\n display: flex;\r\n align-items: center;\r\n padding: 0;\r\n margin-left: var(--rel-spacing-space-3xs);\r\n }\r\n\r\n .chip-remove:hover {\r\n opacity: 0.6;\r\n }\r\n `;\r\n\r\n private get classes() {\r\n return [\r\n \"chip\",\r\n `chip-${this.tone}`,\r\n this.outline ? \"chip-outline\" : \"\",\r\n ].join(\" \");\r\n }\r\n\r\n private handleRemove(event: Event) {\r\n event.stopPropagation();\r\n this.removed = true;\r\n this.dispatchEvent(\r\n new CustomEvent(\"removed\", {\r\n bubbles: true,\r\n composed: true,\r\n })\r\n );\r\n }\r\n\r\n private handleKeyDown(event: KeyboardEvent) {\r\n if (!this.removable) return;\r\n\r\n if (event.key === \"Backspace\" || event.key === \"Delete\") {\r\n event.preventDefault();\r\n this.handleRemove(event);\r\n }\r\n }\r\n\r\n render() {\r\n if (this.removed) {\r\n return null;\r\n }\r\n\r\n return html`\r\n <button\r\n class=\"${this.classes}\"\r\n type=\"button\"\r\n role=\"button\"\r\n aria-label=\"${this.label}\"\r\n @keydown=${this.handleKeyDown}\r\n tabindex=\"0\"\r\n >\r\n ${this.avatar\r\n ? html`<img src=\"${this.avatar}\" alt=\"avatar\" class=\"chip-avatar\" />`\r\n : \"\"}\r\n ${this.leadingIcon\r\n ? html`<span class=\"chip-icon leading\">\r\n <slot name=\"leading-icon\">${this.renderIcon(this.leadingIcon)}</slot>\r\n </span>`\r\n : \"\"}\r\n <span class=\"chip-label\">${this.label}</span>\r\n ${this.trailingIcon\r\n ? html`<span class=\"chip-icon trailing\">\r\n <slot name=\"trailing-icon\">${this.renderIcon(this.trailingIcon)}</slot>\r\n </span>`\r\n : \"\"}\r\n ${this.removable\r\n ? html`<button\r\n type=\"button\"\r\n class=\"chip-remove\"\r\n @click=${this.handleRemove}\r\n aria-label=\"Remove chip\"\r\n >\r\n \u0015\r\n </button>`\r\n : \"\"}\r\n </button>\r\n `;\r\n }\r\n\r\n private renderIcon(iconString: string) {\r\n const template = document.createElement(\"template\");\r\n template.innerHTML = iconString.trim();\r\n return html`${template.content.cloneNode(true)}`;\r\n }\r\n}\r\n","import { LitElement, html, css } from \"lit\";\r\nimport { customElement, property } from \"lit/decorators.js\";\r\n\r\n@customElement(\"rel-container\")\r\nexport class RelContainer extends LitElement {\r\n @property({ type: String }) padding: \"sm\" | \"md\" | \"lg\" = \"md\";\r\n\r\n @property({ type: Boolean }) shadow: boolean = false;\r\n\r\n @property({ type: String }) background: \"light\" | \"white\" | \"none\" = \"white\";\r\n\r\n static styles = css`\r\n :host {\r\n display: block;\r\n width: 100%;\r\n box-sizing: border-box;\r\n }\r\n\r\n .reliability-container {\r\n border-radius: var(--rel-borders-radius-border-radius-200);\r\n display: block;\r\n width: 100%;\r\n box-sizing: border-box;\r\n }\r\n\r\n /* Background Variants */\r\n .bg-white {\r\n background-color: var(--rel-colors-white);\r\n }\r\n\r\n .bg-light {\r\n background-color: var(--rel-colors-gray-light);\r\n }\r\n\r\n .bg-none {\r\n background: transparent;\r\n }\r\n\r\n /* Padding Variants */\r\n .padding-sm {\r\n padding: var(--rel-spacing-space-xs);\r\n }\r\n\r\n .padding-md {\r\n padding: var(--rel-spacing-space-md);\r\n }\r\n\r\n .padding-lg {\r\n padding: var(--rel-spacing-space-2xl);\r\n }\r\n\r\n /* Shadow */\r\n .shadow {\r\n box-shadow: var(--rel-shadows-shadow-300);\r\n }\r\n `;\r\n\r\n private get classes() {\r\n return [\r\n \"reliability-container\",\r\n `bg-${this.background}`,\r\n `padding-${this.padding}`,\r\n this.shadow ? \"shadow\" : \"\",\r\n ].join(\" \");\r\n }\r\n\r\n render() {\r\n return html`\r\n <div class=\"${this.classes}\">\r\n <slot></slot>\r\n </div>\r\n `;\r\n }\r\n}\r\n","import { LitElement, html, css } from \"lit\";\r\nimport { customElement, property } from \"lit/decorators.js\";\r\n\r\n@customElement(\"rel-divider\")\r\nexport class RelDivider extends LitElement {\r\n @property({ type: String }) orientation: \"horizontal\" | \"vertical\" = \"horizontal\";\r\n\r\n static styles = css`\r\n :host {\r\n display: block;\r\n }\r\n\r\n .rel-divider {\r\n position: relative;\r\n display: flex;\r\n background: transparent;\r\n font-family: var(--rel-fontFamilies-primary);\r\n color: var(--rel-colors-gray-primary);\r\n }\r\n\r\n /* Horizontal */\r\n .rel-divider.horizontal {\r\n width: 100%;\r\n height: var(--rel-borders-width-stroke-100);\r\n background-color: var(--rel-colors-gray-border);\r\n margin: var(--rel-spacing-space-md) 0;\r\n }\r\n\r\n /* Vertical */\r\n .rel-divider.vertical {\r\n width: var(--rel-borders-width-stroke-100);\r\n background-color: var(--rel-colors-gray-border);\r\n margin: 0 var(--rel-spacing-space-md);\r\n align-self: stretch;\r\n height: 100%;\r\n }\r\n `;\r\n\r\n render() {\r\n return html`\r\n <div class=\"rel-divider ${this.orientation}\" role=\"separator\"></div>\r\n `;\r\n }\r\n}\r\n","import { LitElement, html, css } from \"lit\";\r\nimport { customElement, property } from \"lit/decorators.js\";\r\n\r\n@customElement(\"rel-layout\")\r\nexport class RelLayout extends LitElement {\r\n @property({ type: String }) gap: string = \"1rem\";\r\n\r\n @property({ type: Number }) columns: number = 4;\r\n\r\n @property({ type: Boolean }) responsive: boolean = true;\r\n\r\n static styles = css`\r\n :host {\r\n display: block;\r\n width: 100%;\r\n }\r\n\r\n .layout-grid {\r\n display: grid;\r\n width: 100%;\r\n font-family: var(--rel-fontFamilies-primary);\r\n }\r\n\r\n /* Responsive breakpoints - only applied when responsive is true */\r\n :host([responsive]) .layout-grid {\r\n /* Default: use columns property */\r\n }\r\n\r\n @media (max-width: 1024px) {\r\n :host([responsive]) .layout-grid {\r\n grid-template-columns: repeat(3, 1fr) !important;\r\n }\r\n }\r\n\r\n @media (max-width: 768px) {\r\n :host([responsive]) .layout-grid {\r\n grid-template-columns: repeat(2, 1fr) !important;\r\n }\r\n }\r\n\r\n @media (max-width: 480px) {\r\n :host([responsive]) .layout-grid {\r\n grid-template-columns: 1fr !important;\r\n }\r\n }\r\n `;\r\n\r\n render() {\r\n const gridStyle = `\r\n gap: ${this.gap};\r\n grid-template-columns: repeat(${this.columns}, 1fr);\r\n `;\r\n\r\n return html`\r\n <div class=\"layout-grid\" style=\"${gridStyle}\">\r\n <slot></slot>\r\n </div>\r\n `;\r\n }\r\n}\r\n","import { LitElement, html, css } from \"lit\";\r\nimport { customElement, property, state } from \"lit/decorators.js\";\r\n\r\nexport type MenuType = \"default\" | \"checkbox\" | \"arrow\";\r\n\r\nexport interface MenuItem {\r\n label: string;\r\n active?: boolean;\r\n checked?: boolean;\r\n disabled?: boolean;\r\n submenu?: MenuItem[];\r\n open?: boolean;\r\n}\r\n\r\n@customElement(\"rel-menu\")\r\nexport class RelMenu extends LitElement {\r\n @property({ type: String }) type: MenuType = \"default\";\r\n\r\n @property({ type: Array }) items: MenuItem[] = [];\r\n\r\n @state() private focusedIndex: number = 0;\r\n\r\n static styles = css`\r\n :host {\r\n display: inline-block;\r\n }\r\n\r\n .rel-menu {\r\n position: relative;\r\n display: inline-block;\r\n background: var(--rel-colors-white);\r\n border-radius: var(--rel-borders-radius-border-radius-300);\r\n box-shadow: var(--rel-shadows-shadow-300);\r\n min-width: 220px;\r\n font-family: var(--rel-fontFamilies-primary);\r\n font-size: var(--rel-fontSizes-sm);\r\n padding: var(--rel-spacing-space-3xs) 0;\r\n outline: none;\r\n }\r\n\r\n .rel-menu-item {\r\n position: relative;\r\n display: flex;\r\n align-items: center;\r\n gap: var(--rel-spacing-space-xs);\r\n padding: var(--rel-spacing-space-xs) var(--rel-spacing-space-sm);\r\n line-height: var(--rel-lineHeights-sm);\r\n cursor: pointer;\r\n transition: background 0.15s ease, color 0.15s ease;\r\n user-select: none;\r\n }\r\n\r\n .rel-menu-item:hover {\r\n background: var(--rel-colors-gray-border);\r\n }\r\n\r\n .rel-menu-item:active {\r\n background: var(--rel-colors-gray-tertiary);\r\n }\r\n\r\n .rel-menu-item.active {\r\n background: var(--rel-colors-gray-tertiary);\r\n }\r\n\r\n .rel-menu-item.disabled {\r\n background-color: var(--rel-colors-gray-light);\r\n color: var(--rel-colors-gray-placeholder);\r\n cursor: not-allowed;\r\n }\r\n\r\n .rel-menu-item[data-focused=\"true\"] {\r\n border-top: var(--rel-borders-width-stroke-200) solid var(--rel-colors-gray-primary);\r\n border-bottom: var(--rel-borders-width-stroke-200) solid var(--rel-colors-gray-primary);\r\n }\r\n\r\n .menu-check-row {\r\n display: inline-flex;\r\n align-items: center;\r\n gap: var(--rel-spacing-space-2xs);\r\n width: 100%;\r\n }\r\n\r\n .menu-checkbox {\r\n width: 16px;\r\n height: 16px;\r\n cursor: pointer;\r\n }\r\n\r\n .menu-checkbox:disabled {\r\n cursor: not-allowed;\r\n }\r\n\r\n .menu-label {\r\n flex: 1 1 auto;\r\n }\r\n\r\n .chevron {\r\n font-size: var(--rel-fontSizes-lg);\r\n opacity: 0.75;\r\n transform: translateY(1px);\r\n }\r\n\r\n .rel-submenu {\r\n position: absolute;\r\n top: calc(-1 * var(--rel-spacing-space-3xs));\r\n left: calc(100% + var(--rel-spacing-space-2xs));\r\n min-width: 200px;\r\n background: var(--rel-colors-white);\r\n border-radius: var(--rel-borders-radius-border-radius-300);\r\n box-shadow: var(--rel-shadows-shadow-300);\r\n padding: var(--rel-spacing-space-3xs) 0;\r\n display: none;\r\n z-index: 20;\r\n }\r\n\r\n .rel-submenu.visible {\r\n display: block;\r\n }\r\n\r\n .rel-submenu .rel-menu-item {\r\n padding: var(--rel-spacing-space-xs) var(--rel-spacing-space-sm);\r\n }\r\n `;\r\n\r\n connectedCallback() {\r\n super.connectedCallback();\r\n document.addEventListener(\"click\", this.handleDocumentClick);\r\n }\r\n\r\n disconnectedCallback() {\r\n super.disconnectedCallback();\r\n document.removeEventListener(\"click\", this.handleDocumentClick);\r\n }\r\n\r\n private handleDocumentClick = (e: MouseEvent) => {\r\n const path = e.composedPath() as HTMLElement[];\r\n const hit = path.some((n) => n?.classList?.contains(\"rel-menu\"));\r\n if (!hit) {\r\n this.items.forEach((i) => (i.open = false));\r\n this.requestUpdate();\r\n }\r\n };\r\n\r\n private onItemEnter(item: MenuItem) {\r\n if (this.type === \"arrow\" && item.submenu?.length) {\r\n this.items.forEach((i) => {\r\n if (i !== item) i.open = false;\r\n });\r\n item.open = true;\r\n this.requestUpdate();\r\n }\r\n }\r\n\r\n private onItemLeave(_item: MenuItem) {\r\n // Keep open so user can move into submenu\r\n }\r\n\r\n private onItemClick(item: MenuItem, index: number, ev?: Event) {\r\n ev?.stopPropagation();\r\n if (item.disabled) return;\r\n\r\n this.focusedIndex = index;\r\n\r\n if (this.type === \"checkbox\") {\r\n item.checked = !item.checked;\r\n this.dispatchEvent(\r\n new CustomEvent(\"item-checked\", {\r\n detail: { item, checked: item.checked },\r\n bubbles: true,\r\n composed: true,\r\n })\r\n );\r\n this.requestUpdate();\r\n return;\r\n }\r\n\r\n if (this.type === \"arrow\" && item.submenu?.length) {\r\n const next = !item.open;\r\n this.items.forEach((i) => (i.open = false));\r\n item.open = next;\r\n this.requestUpdate();\r\n return;\r\n }\r\n\r\n // Default: set active\r\n this.items.forEach((i) => (i.active = false));\r\n item.active = true;\r\n this.dispatchEvent(\r\n new CustomEvent(\"item-selected\", {\r\n detail: { item },\r\n bubbles: true,\r\n composed: true,\r\n })\r\n );\r\n this.requestUpdate();\r\n }\r\n\r\n private onSubClick(parent: MenuItem, sub: MenuItem, ev?: Event) {\r\n ev?.stopPropagation();\r\n this.items.forEach((i) => {\r\n i.active = false;\r\n i.submenu?.forEach((s) => (s.active = false));\r\n });\r\n sub.active = true;\r\n parent.open = false;\r\n this.dispatchEvent(\r\n new CustomEvent(\"submenu-selected\", {\r\n detail: { parent, sub },\r\n bubbles: true,\r\n composed: true,\r\n })\r\n );\r\n this.requestUpdate();\r\n }\r\n\r\n private toggleCheckbox(item: MenuItem, ev: Event) {\r\n ev.stopPropagation();\r\n if (!item.disabled) {\r\n item.checked = !item.checked;\r\n this.dispatchEvent(\r\n new CustomEvent(\"item-checked\", {\r\n detail: { item, checked: item.checked },\r\n bubbles: true,\r\n composed: true,\r\n })\r\n );\r\n this.requestUpdate();\r\n }\r\n }\r\n\r\n private onKeydown(ev: KeyboardEvent) {\r\n const last = this.items.length - 1;\r\n\r\n if (ev.key === \"ArrowDown\") {\r\n this.focusedIndex = Math.min(last, this.focusedIndex + 1);\r\n ev.preventDefault();\r\n } else if (ev.key === \"ArrowUp\") {\r\n this.focusedIndex = Math.max(0, this.focusedIndex - 1);\r\n ev.preventDefault();\r\n } else if (ev.key === \"ArrowRight\") {\r\n const item = this.items[this.focusedIndex];\r\n if (this.type === \"arrow\" && item?.submenu?.length) {\r\n item.open = true;\r\n this.requestUpdate();\r\n }\r\n } else if (ev.key === \"ArrowLeft\" || ev.key === \"Escape\") {\r\n this.items.forEach((i) => (i.open = false));\r\n this.requestUpdate();\r\n } else if (ev.key === \"Enter\" || ev.key === \" \") {\r\n const item = this.items[this.focusedIndex];\r\n this.onItemClick(item, this.focusedIndex);\r\n ev.preventDefault();\r\n }\r\n }\r\n\r\n private renderMenuItem(item: MenuItem, index: number) {\r\n const isFocused = this.focusedIndex === index;\r\n\r\n return html`\r\n <div\r\n class=\"rel-menu-item ${item.active ? \"active\" : \"\"} ${item.disabled ? \"disabled\" : \"\"}\"\r\n role=\"menuitem\"\r\n ?data-focused=\"${isFocused}\"\r\n @mouseenter=\"${() => this.onItemEnter(item)}\"\r\n @mouseleave=\"${() => this.onItemLeave(item)}\"\r\n @click=\"${(e: Event) => this.onItemClick(item, index, e)}\">\r\n ${this.type === \"checkbox\"\r\n ? html`\r\n <div class=\"menu-check-row\">\r\n <input\r\n class=\"menu-checkbox\"\r\n type=\"checkbox\"\r\n .checked=\"${item.checked || false}\"\r\n ?disabled=\"${item.disabled}\"\r\n @click=\"${(e: Event) => this.toggleCheckbox(item, e)}\" />\r\n <span class=\"menu-label\">${item.label}</span>\r\n </div>\r\n `\r\n : html`\r\n <span class=\"menu-label\">${item.label}</span>\r\n ${this.type === \"arrow\" && item.submenu?.length\r\n ? html`<span class=\"chevron\">▸</span>`\r\n : \"\"}\r\n `}\r\n ${this.type === \"arrow\" && item.submenu?.length\r\n ? html`\r\n <div\r\n class=\"rel-submenu ${item.open ? \"visible\" : \"\"}\"\r\n @click=\"${(e: Event) => e.stopPropagation()}\">\r\n ${item.submenu.map(\r\n (sub) => html`\r\n <div\r\n class=\"rel-menu-item ${sub.active ? \"active\" : \"\"}\"\r\n role=\"menuitem\"\r\n @click=\"${(e: Event) => this.onSubClick(item, sub, e)}\">\r\n <span class=\"menu-label\">${sub.label}</span>\r\n </div>\r\n `\r\n )}\r\n </div>\r\n `\r\n : \"\"}\r\n </div>\r\n `;\r\n }\r\n\r\n render() {\r\n return html`\r\n <div\r\n class=\"rel-menu\"\r\n role=\"menu\"\r\n tabindex=\"0\"\r\n @keydown=\"${this.onKeydown}\"\r\n @click=\"${(e: Event) => e.stopPropagation()}\">\r\n ${this.items.map((item, index) => this.renderMenuItem(item, index))}\r\n </div>\r\n `;\r\n }\r\n}\r\n","import { LitElement, html, css } from \"lit\";\r\nimport { customElement, property } from \"lit/decorators.js\";\r\n\r\nexport type ProgressMode =\r\n | \"linear-determinate\"\r\n | \"linear-indeterminate\"\r\n | \"circular-determinate\"\r\n | \"circular-indeterminate\";\r\n\r\n@customElement(\"rel-progress\")\r\nexport class RelProgress extends LitElement {\r\n @property({ type: String }) mode: ProgressMode = \"linear-determinate\";\r\n\r\n @property({ type: Number }) value: number = 0;\r\n\r\n private radius = 15.9155;\r\n private circumference = 2 * Math.PI * this.radius;\r\n\r\n static styles = css`\r\n :host {\r\n display: block;\r\n font-family: var(--rel-fontFamilies-primary);\r\n }\r\n\r\n :host([mode*=\"circular\"]) {\r\n display: inline-block;\r\n }\r\n\r\n /* Linear Progress */\r\n .linear-track {\r\n background: var(--rel-colors-gray-border);\r\n border-radius: var(--rel-borders-radius-border-radius-200);\r\n height: 6px;\r\n overflow: hidden;\r\n width: 100%;\r\n }\r\n\r\n .linear-bar {\r\n background: var(--rel-colors-black);\r\n height: 100%;\r\n transition: width 0.3s ease;\r\n }\r\n\r\n .linear-bar.indeterminate {\r\n width: 30%;\r\n animation: linear-indeterminate 1.5s infinite;\r\n }\r\n\r\n @keyframes linear-indeterminate {\r\n 0% {\r\n margin-left: -30%;\r\n }\r\n 50% {\r\n margin-left: 50%;\r\n }\r\n 100% {\r\n margin-left: 100%;\r\n }\r\n }\r\n\r\n /* Circular Progress */\r\n .circular {\r\n display: inline-block;\r\n width: 48px;\r\n height: 48px;\r\n }\r\n\r\n .circular-svg {\r\n transform: rotate(-90deg);\r\n width: 100%;\r\n height: 100%;\r\n }\r\n\r\n .circular-bg {\r\n fill: none;\r\n stroke: var(--rel-colors-gray-border);\r\n stroke-width: 3;\r\n }\r\n\r\n .circular-progress {\r\n fill: none;\r\n stroke: var(--rel-colors-black);\r\n stroke-width: 3;\r\n stroke-linecap: round;\r\n transition: stroke-dashoffset 0.35s;\r\n transform: rotate(0deg);\r\n transform-origin: center;\r\n }\r\n\r\n /* Circular Indeterminate Spinner */\r\n .spinner {\r\n animation: rotate 2s linear infinite;\r\n }\r\n\r\n .spinner-path {\r\n stroke: var(--rel-colors-black);\r\n stroke-linecap: round;\r\n animation: dash 1.5s ease-in-out infinite;\r\n }\r\n\r\n @keyframes rotate {\r\n 100% {\r\n transform: rotate(360deg);\r\n }\r\n }\r\n\r\n @keyframes dash {\r\n 0% {\r\n stroke-dasharray: 1, 150;\r\n stroke-dashoffset: 0;\r\n }\r\n 50% {\r\n stroke-dasharray: 90, 150;\r\n stroke-dashoffset: -35;\r\n }\r\n 100% {\r\n stroke-dasharray: 90, 150;\r\n stroke-dashoffset: -124;\r\n }\r\n }\r\n `;\r\n\r\n private renderLinearDeterminate() {\r\n return html`\r\n <div class=\"linear-track\">\r\n <div class=\"linear-bar\" style=\"width: ${this.value}%\"></div>\r\n </div>\r\n `;\r\n }\r\n\r\n private renderLinearIndeterminate() {\r\n return html`\r\n <div class=\"linear-track\">\r\n <div class=\"linear-bar indeterminate\"></div>\r\n </div>\r\n `;\r\n }\r\n\r\n private renderCircularDeterminate() {\r\n const offset = this.circumference - (this.value / 100) * this.circumference;\r\n\r\n return html`\r\n <div class=\"circular\">\r\n <svg viewBox=\"0 0 36 36\" class=\"circular-svg\">\r\n <circle class=\"circular-bg\" cx=\"18\" cy=\"18\" r=\"15.9155\" />\r\n <circle\r\n class=\"circular-progress\"\r\n cx=\"18\"\r\n cy=\"18\"\r\n r=\"15.9155\"\r\n stroke-dasharray=\"${this.circumference}\"\r\n stroke-dashoffset=\"${offset}\" />\r\n </svg>\r\n </div>\r\n `;\r\n }\r\n\r\n private renderCircularIndeterminate() {\r\n return html`\r\n <div class=\"circular\">\r\n <svg viewBox=\"0 0 50 50\" class=\"spinner\">\r\n <circle class=\"spinner-path\" cx=\"25\" cy=\"25\" r=\"20\" fill=\"none\" stroke-width=\"4\" />\r\n </svg>\r\n </div>\r\n `;\r\n }\r\n\r\n render() {\r\n switch (this.mode) {\r\n case \"linear-determinate\":\r\n return this.renderLinearDeterminate();\r\n case \"linear-indeterminate\":\r\n return this.renderLinearIndeterminate();\r\n case \"circular-determinate\":\r\n return this.renderCircularDeterminate();\r\n case \"circular-indeterminate\":\r\n return this.renderCircularIndeterminate();\r\n default:\r\n return this.renderLinearDeterminate();\r\n }\r\n }\r\n}\r\n","import { LitElement, html, css } from \"lit\";\r\nimport { customElement, property } from \"lit/decorators.js\";\r\n\r\nexport interface RadioOption {\r\n value: string;\r\n label: string;\r\n supportingText?: string;\r\n disabled?: boolean;\r\n error?: boolean;\r\n}\r\n\r\n@customElement(\"rel-radio\")\r\nexport class RelRadio extends LitElement {\r\n @property({ type: Array }) options: RadioOption[] = [];\r\n\r\n @property({ type: String }) name: string = \"radio-group\";\r\n\r\n @property({ type: String }) selectedValue: string | null = null;\r\n\r\n static styles = css`\r\n :host {\r\n display: block;\r\n font-family: var(--rel-fontFamilies-primary);\r\n }\r\n\r\n .rel-radio-group {\r\n display: flex;\r\n flex-direction: column;\r\n gap: var(--rel-spacing-space-xs);\r\n }\r\n\r\n .rel-radio-option {\r\n display: flex;\r\n flex-direction: column;\r\n align-items: flex-start;\r\n gap: var(--rel-spacing-space-3xs);\r\n cursor: pointer;\r\n position: relative;\r\n }\r\n\r\n .radio-main {\r\n display: flex;\r\n align-items: center;\r\n gap: var(--rel-spacing-space-2xs);\r\n }\r\n\r\n .rel-radio-option input {\r\n position: absolute;\r\n opacity: 0;\r\n pointer-events: none;\r\n }\r\n\r\n .radio-custom {\r\n width: 20px;\r\n height: 20px;\r\n border: 2px solid var(--rel-colors-black);\r\n border-radius: 50%;\r\n display: inline-block;\r\n position: relative;\r\n flex-shrink: 0;\r\n transition: all 0.2s ease-in-out;\r\n }\r\n\r\n .rel-radio-option input:focus + .radio-custom {\r\n outline: var(--rel-borders-width-stroke-200) solid var(--rel-colors-black);\r\n outline-offset: var(--rel-spacing-space-3xs);\r\n }\r\n\r\n .rel-radio-option input:checked + .radio-custom::after {\r\n content: \"\";\r\n position: absolute;\r\n top: 50%;\r\n left: 50%;\r\n width: 10px;\r\n height: 10px;\r\n background-color: var(--rel-colors-black);\r\n border-radius: 50%;\r\n transform: translate(-50%, -50%);\r\n }\r\n\r\n /* Error state */\r\n .rel-radio-option.error .radio-custom {\r\n border-color: var(--rel-colors-red-secondary);\r\n }\r\n\r\n .rel-radio-option.error input:checked + .radio-custom::after {\r\n background-color: var(--rel-colors-red-secondary);\r\n }\r\n\r\n .rel-radio-option.error .radio-label,\r\n .rel-radio-option.error .radio-supporting {\r\n color: var(--rel-colors-red-secondary);\r\n }\r\n\r\n .rel-radio-option.error input:focus + .radio-custom {\r\n outline: var(--rel-borders-width-stroke-200) solid var(--rel-colors-red-secondary);\r\n }\r\n\r\n /* Disabled state */\r\n .rel-radio-option.disabled {\r\n opacity: 0.6;\r\n cursor: not-allowed !important;\r\n }\r\n\r\n .rel-radio-option.disabled .radio-label,\r\n .rel-radio-option.disabled .radio-supporting {\r\n cursor: not-allowed !important;\r\n }\r\n\r\n /* Text styles */\r\n .radio-label {\r\n font-size: var(--rel-fontSizes-sm);\r\n font-weight: var(--rel-fontWeights-medium);\r\n color: var(--rel-colors-gray-heading);\r\n line-height: var(--rel-lineHeights-sm);\r\n }\r\n\r\n .radio-supporting {\r\n font-size: var(--rel-fontSizes-xs);\r\n color: var(--rel-colors-gray-placeholder);\r\n margin-left: 28px;\r\n line-height: var(--rel-lineHeights-xs);\r\n }\r\n\r\n .radio-supporting.error-text {\r\n color: var(--rel-colors-red-secondary);\r\n }\r\n `;\r\n\r\n private onChange(value: string) {\r\n this.selectedValue = value;\r\n this.dispatchEvent(\r\n new CustomEvent(\"changed\", {\r\n detail: { value },\r\n bubbles: true,\r\n composed: true,\r\n })\r\n );\r\n }\r\n\r\n private isChecked(value: string): boolean {\r\n return this.selectedValue === value;\r\n }\r\n\r\n private renderOption(option: RadioOption) {\r\n const isChecked = this.isChecked(option.value);\r\n const classes = [\r\n \"rel-radio-option\",\r\n option.disabled ? \"disabled\" : \"\",\r\n option.error ? \"error\" : \"\",\r\n ]\r\n .filter(Boolean)\r\n .join(\" \");\r\n\r\n return html`\r\n <label class=\"${classes}\">\r\n <div class=\"radio-main\">\r\n <input\r\n type=\"radio\"\r\n name=\"${this.name}\"\r\n .value=\"${option.value}\"\r\n .checked=\"${isChecked}\"\r\n ?disabled=\"${option.disabled}\"\r\n @change=\"${() => !option.disabled && this.onChange(option.value)}\" />\r\n <span class=\"radio-custom\"></span>\r\n <span class=\"radio-label\">${option.label}</span>\r\n </div>\r\n\r\n ${option.supportingText\r\n ? html`\r\n <div class=\"radio-supporting ${option.error ? \"error-text\" : \"\"}\">\r\n ${option.supportingText}\r\n </div>\r\n `\r\n : \"\"}\r\n </label>\r\n `;\r\n }\r\n\r\n render() {\r\n return html`\r\n <div class=\"rel-radio-group\">\r\n ${this.options.map((option) => this.renderOption(option))}\r\n </div>\r\n `;\r\n }\r\n}\r\n","import { LitElement, html, css } from \"lit\";\r\nimport { customElement, property } from \"lit/decorators.js\";\r\n\r\nexport type SegmentSize = \"small\" | \"medium\";\r\nexport type SegmentAlign = \"left\" | \"middle\" | \"right\";\r\n\r\nexport interface SegmentOption {\r\n label: string;\r\n value: string;\r\n disabled?: boolean;\r\n}\r\n\r\n@customElement(\"rel-segmented-button\")\r\nexport class RelSegmentedButton extends LitElement {\r\n @property({ type: Array }) options: SegmentOption[] = [];\r\n\r\n @property({ type: String }) active: string = \"\";\r\n\r\n @property({ type: String }) size: SegmentSize = \"medium\";\r\n\r\n @property({ type: String }) align: SegmentAlign = \"left\";\r\n\r\n static styles = css`\r\n :host {\r\n display: inline-block;\r\n font-family: var(--rel-fontFamilies-primary);\r\n }\r\n\r\n .segmented-buttons {\r\n display: inline-flex;\r\n border: 2px solid var(--rel-colors-gray-border);\r\n border-radius: var(--rel-borders-radius-border-radius-300);\r\n overflow: hidden;\r\n }\r\n\r\n /* Alignment */\r\n .align-left {\r\n justify-content: flex-start;\r\n }\r\n\r\n .align-middle {\r\n justify-content: center;\r\n }\r\n\r\n .align-right {\r\n justify-content: flex-end;\r\n }\r\n\r\n /* Base segment styling */\r\n .segment {\r\n background: var(--rel-colors-white);\r\n border: none;\r\n cursor: pointer;\r\n font-weight: var(--rel-fontWeights-medium);\r\n border-right: 2px solid var(--rel-colors-gray-border);\r\n transition: all 0.2s ease-in-out;\r\n color: var(--rel-colors-gray-heading);\r\n font-family: var(--rel-fontFamilies-primary);\r\n outline: none;\r\n }\r\n\r\n .segment:last-child {\r\n border-right: none;\r\n }\r\n\r\n /* Hover */\r\n .segment:hover:not(.disabled):not(.active) {\r\n background: var(--rel-colors-gray-bg);\r\n }\r\n\r\n /* Active */\r\n .segment.active {\r\n background: var(--rel-colors-black);\r\n color: var(--rel-colors-white);\r\n }\r\n\r\n .segment.active:hover:not(.disabled) {\r\n background: var(--rel-colors-black);\r\n color: var(--rel-colors-white);\r\n }\r\n\r\n /* Disabled */\r\n .segment.disabled,\r\n .segment:disabled {\r\n cursor: not-allowed;\r\n opacity: 0.5;\r\n background: var(--rel-colors-gray-bg);\r\n color: var(--rel-colors-gray-placeholder);\r\n pointer-events: none;\r\n }\r\n\r\n /* Sizes */\r\n .segmented-buttons.small .segment {\r\n padding: var(--rel-spacing-space-3xs) var(--rel-spacing-space-xs);\r\n font-size: var(--rel-fontSizes-xs);\r\n }\r\n\r\n .segmented-buttons.medium .segment {\r\n padding: var(--rel-spacing-space-2xs) var(--rel-spacing-space-sm);\r\n font-size: var(--rel-fontSizes-sm);\r\n }\r\n `;\r\n\r\n private setActive(option: SegmentOption) {\r\n if (!option.disabled) {\r\n this.active = option.value;\r\n this.dispatchEvent(\r\n new CustomEvent(\"changed\", {\r\n detail: { value: option.value },\r\n bubbles: true,\r\n composed: true,\r\n })\r\n );\r\n }\r\n }\r\n\r\n private renderSegment(option: SegmentOption) {\r\n const isActive = this.active === option.value;\r\n const classes = [\r\n \"segment\",\r\n isActive ? \"active\" : \"\",\r\n option.disabled ? \"disabled\" : \"\",\r\n ]\r\n .filter(Boolean)\r\n .join(\" \");\r\n\r\n return html`\r\n <button\r\n class=\"${classes}\"\r\n ?disabled=\"${option.disabled}\"\r\n @click=\"${() => this.setActive(option)}\">\r\n ${option.label}\r\n </button>\r\n `;\r\n }\r\n\r\n render() {\r\n const containerClasses = [\r\n \"segmented-buttons\",\r\n this.size,\r\n `align-${this.align}`,\r\n ].join(\" \");\r\n\r\n return html`\r\n <div class=\"${containerClasses}\">\r\n ${this.options.map((option) => this.renderSegment(option))}\r\n </div>\r\n `;\r\n }\r\n}\r\n","import { LitElement, html, css } from \"lit\";\r\nimport { customElement, property } from \"lit/decorators.js\";\r\n\r\nexport type SelectState = \"default\" | \"error\" | \"disabled\";\r\nexport type SelectSize = \"small\" | \"medium\" | \"large\";\r\nexport type SelectBorder = \"rounded\" | \"sharp\";\r\n\r\n@customElement(\"rel-select\")\r\nexport class RelSelect extends LitElement {\r\n @property({ type: String }) label: string = \"\";\r\n\r\n @property({ type: Array }) options: string[] = [];\r\n\r\n @property({ type: String }) selected: string = \"\";\r\n\r\n @property({ type: String }) state: SelectState = \"default\";\r\n\r\n @property({ type: String }) supportingText: string = \"\";\r\n\r\n @property({ type: String }) size: SelectSize = \"medium\";\r\n\r\n @property({ type: String }) border: SelectBorder = \"rounded\";\r\n\r\n @property({ type: String }) leftIcon: string = \"\";\r\n\r\n @property({ type: String }) rightIcon: string = \"\";\r\n\r\n static styles = css`\r\n :host {\r\n display: block;\r\n font-family: var(--rel-fontFamilies-primary);\r\n width: 100%;\r\n }\r\n\r\n .select-wrapper {\r\n display: flex;\r\n flex-direction: column;\r\n width: 100%;\r\n }\r\n\r\n .select-label {\r\n font-size: var(--rel-fontSizes-sm);\r\n margin-bottom: var(--rel-spacing-space-3xs);\r\n font-weight: var(--rel-fontWeights-medium);\r\n color: var(--rel-colors-gray-heading);\r\n }\r\n\r\n .select-container {\r\n position: relative;\r\n display: flex;\r\n align-items: center;\r\n }\r\n\r\n .icon {\r\n position: absolute;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n pointer-events: none;\r\n top: 50%;\r\n transform: translateY(-50%);\r\n font-size: 16px;\r\n color: var(--rel-colors-gray-primary);\r\n }\r\n\r\n .icon.left {\r\n left: 12px;\r\n }\r\n\r\n .icon.right {\r\n right: 36px;\r\n }\r\n\r\n select {\r\n flex: 1;\r\n appearance: none;\r\n border: 1px solid var(--rel-colors-gray-border);\r\n background-color: var(--rel-colors-white);\r\n background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%23666' d='M6 9L1 4h10z'/%3E%3C/svg%3E\");\r\n background-repeat: no-repeat;\r\n background-position: right 12px center;\r\n font-family: var(--rel-fontFamilies-primary);\r\n cursor: pointer;\r\n transition: all 0.2s ease-in-out;\r\n color: var(--rel-colors-gray-heading);\r\n width: 100%;\r\n outline: none;\r\n }\r\n\r\n select:hover:not(:disabled) {\r\n border-color: var(--rel-colors-gray-primary);\r\n }\r\n\r\n select:focus:not(:disabled) {\r\n border-color: var(--rel-colors-black);\r\n box-shadow: 0 0 0 3px rgba(0, 0, 0, 0.1);\r\n }\r\n\r\n /* States */\r\n select.error {\r\n border-color: var(--rel-colors-red-secondary);\r\n }\r\n\r\n select.error:focus {\r\n box-shadow: 0 0 0 3px rgba(213, 0, 0, 0.1);\r\n }\r\n\r\n select:disabled {\r\n background-color: var(--rel-colors-gray-bg);\r\n border-color: var(--rel-colors-gray-border);\r\n color: var(--rel-colors-gray-placeholder);\r\n cursor: not-allowed;\r\n opacity: 0.6;\r\n }\r\n\r\n /* Sizes */\r\n .select-small select {\r\n font-size: var(--rel-fontSizes-xs);\r\n padding: var(--rel-spacing-space-3xs) var(--rel-spacing-space-lg)\r\n var(--rel-spacing-space-3xs) var(--rel-spacing-space-2xs);\r\n }\r\n\r\n .select-medium select {\r\n font-size: var(--rel-fontSizes-sm);\r\n padding: var(--rel-spacing-space-2xs) var(--rel-spacing-space-xl)\r\n var(--rel-spacing-space-2xs) var(--rel-spacing-space-xs);\r\n }\r\n\r\n .select-large select {\r\n font-size: var(--rel-fontSizes-md);\r\n padding: var(--rel-spacing-space-xs) var(--rel-spacing-space-2xl)\r\n var(--rel-spacing-space-xs) var(--rel-spacing-space-sm);\r\n }\r\n\r\n /* With icons */\r\n .with-left-icon.select-small select {\r\n padding-left: var(--rel-spacing-space-xl);\r\n }\r\n\r\n .with-left-icon.select-medium select {\r\n padding-left: var(--rel-spacing-space-2xl);\r\n }\r\n\r\n .with-left-icon.select-large select {\r\n padding-left: var(--rel-spacing-space-3xl);\r\n }\r\n\r\n .with-right-icon.select-small select {\r\n padding-right: var(--rel-spacing-space-2xl);\r\n }\r\n\r\n .with-right-icon.select-medium select {\r\n padding-right: var(--rel-spacing-space-3xl);\r\n }\r\n\r\n .with-right-icon.select-large select {\r\n padding-right: 4rem;\r\n }\r\n\r\n /* Border */\r\n .border-rounded select {\r\n border-radius: var(--rel-borders-radius-border-radius-300);\r\n }\r\n\r\n .border-sharp select {\r\n border-radius: 0;\r\n }\r\n\r\n /* Supporting text */\r\n .supporting-text {\r\n font-size: var(--rel-fontSizes-xs);\r\n margin-top: var(--rel-spacing-space-3xs);\r\n color: var(--rel-colors-gray-placeholder);\r\n }\r\n\r\n .error-text {\r\n color: var(--rel-colors-red-secondary);\r\n }\r\n `;\r\n\r\n private onChange(event: Event) {\r\n const value = (event.target as HTMLSelectElement).value;\r\n this.selected = value;\r\n this.dispatchEvent(\r\n new CustomEvent(\"changed\", {\r\n detail: { value },\r\n bubbles: true,\r\n composed: true,\r\n })\r\n );\r\n }\r\n\r\n render() {\r\n const containerClasses = [\r\n \"select-container\",\r\n this.leftIcon ? \"with-left-icon\" : \"\",\r\n this.rightIcon ? \"with-right-icon\" : \"\",\r\n `select-${this.size}`,\r\n ]\r\n .filter(Boolean)\r\n .join(\" \");\r\n\r\n const wrapperClasses = [\r\n \"select-wrapper\",\r\n `select-${this.state}`,\r\n `border-${this.border}`,\r\n ].join(\" \");\r\n\r\n const selectClasses = [this.state === \"error\" ? \"error\" : \"\"]\r\n .filter(Boolean)\r\n .join(\" \");\r\n\r\n const isDisabled = this.state === \"disabled\";\r\n\r\n return html`\r\n <div class=\"${wrapperClasses}\">\r\n ${this.label\r\n ? html`<label class=\"select-label\">${this.label}</label>`\r\n : \"\"}\r\n\r\n <div class=\"${containerClasses}\">\r\n ${this.leftIcon\r\n ? html`<span class=\"icon left\">${this.leftIcon}</span>`\r\n : \"\"}\r\n\r\n <select\r\n class=\"${selectClasses}\"\r\n ?disabled=\"${isDisabled}\"\r\n @change=\"${this.onChange}\"\r\n .value=\"${this.selected}\">\r\n <option value=\"\" disabled ?selected=\"${!this.selected}\" hidden>\r\n Select Option\r\n </option>\r\n ${this.options.map(\r\n (option) => html`\r\n <option value=\"${option}\" ?selected=\"${option === this.selected}\">\r\n ${option}\r\n </option>\r\n `\r\n )}\r\n </select>\r\n\r\n ${this.rightIcon\r\n ? html`<span class=\"icon right\">${this.rightIcon}</span>`\r\n : \"\"}\r\n </div>\r\n\r\n ${this.supportingText\r\n ? html`\r\n <span\r\n class=\"supporting-text ${this.state === \"error\"\r\n ? \"error-text\"\r\n : \"\"}\">\r\n ${this.supportingText}\r\n </span>\r\n `\r\n : \"\"}\r\n </div>\r\n `;\r\n }\r\n}\r\n","import { LitElement, html, css } from \"lit\";\r\nimport { customElement, property, state } from \"lit/decorators.js\";\r\n\r\nexport type SliderType = \"continuous\" | \"discrete\";\r\nexport type TrackStyle = \"solid\" | \"dotted\";\r\n\r\n@customElement(\"rel-slider\")\r\nexport class RelSlider extends LitElement {\r\n @property({ type: String }) type: SliderType = \"continuous\";\r\n\r\n @property({ type: Number }) min: number = 0;\r\n\r\n @property({ type: Number }) max: number = 100;\r\n\r\n @property({ type: Number }) step: number = 1;\r\n\r\n @property({ type: Boolean }) disabled: boolean = false;\r\n\r\n @property({ type: String }) track: TrackStyle = \"solid\";\r\n\r\n @property({ type: Boolean }) showTickLabels: boolean = false;\r\n\r\n @property({ type: Boolean }) showBubble: boolean = true; \r\n\r\n @property({ type: Number }) value: number = 0;\r\n\r\n @state() private ticks: number[] = [];\r\n\r\n static styles = css`\r\n :host {\r\n --track-height: 5px;\r\n --thumb-size: 10px;\r\n --thumb-stroke: 7px;\r\n --thumb-halo-color: rgba(224, 222, 222, 0.8);\r\n --tick-size: 4px;\r\n --shadow: 0 2px 4px rgba(0, 0, 0, 0.25);\r\n --halo: 0 2px 0 #e9e9e9, 0 6px 10px rgba(0, 0, 0, 0.07);\r\n --marker-width: 24px;\r\n --marker-height: 28px;\r\n\r\n display: block;\r\n font-family: var(--rel-fontFamilies-primary);\r\n }\r\n\r\n .rel-slider {\r\n position: relative;\r\n width: 100%;\r\n height: 60px;\r\n user-select: none;\r\n }\r\n\r\n /* Track */\r\n .track {\r\n position: absolute;\r\n top: 50%;\r\n left: 0;\r\n width: 100%;\r\n height: var(--track-height);\r\n background: var(--rel-colors-gray-border);\r\n border-radius: 2px;\r\n transform: translateY(-50%);\r\n pointer-events: none;\r\n }\r\n\r\n .track-active {\r\n position: absolute;\r\n top: 50%;\r\n left: 0;\r\n height: var(--track-height);\r\n background: var(--rel-colors-black);\r\n border-radius: 2px;\r\n transform: translateY(-50%);\r\n pointer-events: none;\r\n }\r\n\r\n .track-active.dotted {\r\n background: radial-gradient(\r\n circle,\r\n var(--rel-colors-white) 0 1px,\r\n transparent 1px\r\n )\r\n center/12px 4px repeat-x,\r\n var(--rel-colors-black);\r\n }\r\n\r\n /* Input */\r\n .slider-input {\r\n -webkit-appearance: none;\r\n appearance: none;\r\n position: absolute;\r\n top: 0;\r\n width: 100%;\r\n left: 0;\r\n height: 100%;\r\n background: transparent;\r\n outline: none;\r\n cursor: pointer;\r\n z-index: 2;\r\n margin: 0;\r\n padding: 0;\r\n }\r\n\r\n .slider-input::-webkit-slider-runnable-track {\r\n background: transparent;\r\n height: 100%;\r\n border: none;\r\n }\r\n\r\n .slider-input::-moz-range-track {\r\n background: transparent;\r\n height: 100%;\r\n border: none;\r\n }\r\n\r\n /* Hide native thumb */\r\n .slider-input::-webkit-slider-thumb {\r\n -webkit-appearance: none;\r\n appearance: none;\r\n width: 1px;\r\n height: 1px;\r\n background: transparent;\r\n border: none;\r\n cursor: pointer;\r\n }\r\n\r\n .slider-input::-moz-range-thumb {\r\n width: 1px;\r\n height: 1px;\r\n background: transparent;\r\n border: none;\r\n cursor: pointer;\r\n }\r\n\r\n /* Custom Thumb Container */\r\n .thumb-container {\r\n position: absolute;\r\n left: 0;\r\n top: 23.5%;\r\n transform: translate(-50%, -50%);\r\n pointer-events: none;\r\n z-index: 5;\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n gap: 0;\r\n }\r\n\r\n /* Value Marker */\r\n .value-marker {\r\n width: var(--marker-width);\r\n height: var(--marker-height);\r\n margin-bottom: 4px;\r\n }\r\n\r\n .value-marker svg {\r\n width: 100%;\r\n height: 100%;\r\n display: block;\r\n }\r\n\r\n /* Custom Thumb */\r\n .custom-thumb {\r\n width: var(--thumb-size);\r\n height: var(--thumb-size);\r\n background: var(--rel-colors-black);\r\n border-radius: 50%;\r\n transition: box-shadow 0.15s ease;\r\n }\r\n\r\n .slider-input:active ~ .thumb-container .custom-thumb {\r\n box-shadow: 0 0 0 var(--thumb-stroke) var(--thumb-halo-color),\r\n var(--shadow), var(--halo);\r\n }\r\n\r\n /* Ticks */\r\n .ticks {\r\n position: absolute;\r\n top: 50%;\r\n left: 0;\r\n width: 100%;\r\n transform: translateY(-50%);\r\n pointer-events: none;\r\n }\r\n\r\n .tick {\r\n position: absolute;\r\n width: var(--tick-size);\r\n height: var(--tick-size);\r\n background: var(--rel-colors-gray-primary);\r\n border-radius: 50%;\r\n transform: translate(-50%, -50%);\r\n transition: background 0.2s;\r\n z-index: 3;\r\n }\r\n\r\n .tick.active {\r\n background: var(--rel-colors-white);\r\n }\r\n\r\n /* Tick labels */\r\n .tick-labels {\r\n position: absolute;\r\n top: calc(50% + var(--tick-size) + 6px);\r\n left: 0;\r\n width: 100%;\r\n font-size: var(--rel-fontSizes-xs);\r\n color: var(--rel-colors-gray-heading);\r\n pointer-events: none;\r\n }\r\n\r\n .tick-label {\r\n position: absolute;\r\n transform: translateX(-50%);\r\n }\r\n\r\n /* Disabled State */\r\n .rel-slider.disabled .track {\r\n background: var(--rel-colors-gray-primary);\r\n }\r\n\r\n .rel-slider.disabled .track-active {\r\n background: var(--rel-colors-gray-placeholder);\r\n }\r\n\r\n .rel-slider.disabled .track-active.dotted {\r\n background: radial-gradient(\r\n circle,\r\n #eaeaea 0 1px,\r\n transparent 1px\r\n )\r\n center/12px 4px repeat-x,\r\n var(--rel-colors-gray-placeholder);\r\n }\r\n\r\n .rel-slider.disabled .tick {\r\n background: var(--rel-colors-gray-placeholder);\r\n }\r\n\r\n .rel-slider.disabled .tick-label {\r\n color: var(--rel-colors-gray-placeholder);\r\n }\r\n\r\n .rel-slider.disabled .slider-input {\r\n cursor: not-allowed;\r\n }\r\n\r\n .rel-slider.disabled .custom-thumb {\r\n background: var(--rel-colors-gray-placeholder);\r\n box-shadow: 0 0 0 var(--thumb-stroke) #f5f5f5;\r\n }\r\n\r\n .rel-slider.disabled .value-marker svg path {\r\n fill: var(--rel-colors-gray-placeholder);\r\n }\r\n `;\r\n\r\n connectedCallback() {\r\n super.connectedCallback();\r\n this.setupTicks();\r\n }\r\n\r\n updated(changedProperties: Map<string, any>) {\r\n if (\r\n changedProperties.has(\"type\") ||\r\n changedProperties.has(\"min\") ||\r\n changedProperties.has(\"max\") ||\r\n changedProperties.has(\"step\")\r\n ) {\r\n this.setupTicks();\r\n }\r\n if (changedProperties.has(\"value\")) {\r\n this.updateActiveWidth();\r\n }\r\n }\r\n\r\n private get percentage(): number {\r\n if (this.max === this.min) return 0;\r\n return ((this.value - this.min) / (this.max - this.min)) * 100;\r\n }\r\n\r\n private setupTicks() {\r\n if (this.type !== \"discrete\") {\r\n this.ticks = [];\r\n return;\r\n }\r\n\r\n const step = Math.max(1, this.step);\r\n const ticks: number[] = [];\r\n for (let v = this.min; v <= this.max; v += step) {\r\n ticks.push(v);\r\n }\r\n if (ticks[ticks.length - 1] !== this.max) {\r\n ticks.push(this.max);\r\n }\r\n this.ticks = ticks;\r\n }\r\n\r\n private getTickLeftPct(tick: number): number {\r\n const pct = ((tick - this.min) / (this.max - this.min)) * 100;\r\n return Math.round(pct * 1000) / 1000;\r\n }\r\n\r\n private isTickActive(tick: number): boolean {\r\n return tick <= this.value;\r\n }\r\n\r\n private onInput(ev: Event) {\r\n const el = ev.target as HTMLInputElement;\r\n let next = Number(el.value);\r\n\r\n if (this.type === \"discrete\") {\r\n const snapped =\r\n Math.round((next - this.min) / this.step) * this.step + this.min;\r\n next = Math.min(this.max, Math.max(this.min, snapped));\r\n el.value = String(next);\r\n }\r\n\r\n this.value = next;\r\n this.updateActiveWidth();\r\n this.dispatchEvent(\r\n new CustomEvent(\"valueChange\", {\r\n detail: { value: this.value },\r\n bubbles: true,\r\n composed: true,\r\n })\r\n );\r\n }\r\n\r\n private updateActiveWidth() {\r\n const activeEl = this.shadowRoot?.querySelector(\".track-active\") as HTMLDivElement;\r\n if (activeEl) {\r\n if (this.type === \"discrete\") {\r\n const stepPercent = (this.step / (this.max - this.min)) * 100;\r\n const snappedPct = Math.round(this.percentage / stepPercent) * stepPercent;\r\n activeEl.style.width = `${snappedPct}%`;\r\n } else {\r\n activeEl.style.width = `${this.percentage}%`;\r\n }\r\n }\r\n }\r\n\r\n private renderThumbContainer() {\r\n return html`\r\n <div class=\"thumb-container\" style=\"left: ${this.percentage}%\">\r\n ${this.showBubble ? html`\r\n <div class=\"value-marker\">\r\n <svg viewBox=\"0 0 24 32\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M12 0C18.6274 0 24 5.37258 24 12C24 21 12 32 12 32C12 32 0 21 0 12C0 5.37258 5.37258 0 12 0Z\"\r\n fill=\"black\" />\r\n <text\r\n x=\"12\"\r\n y=\"16\"\r\n text-anchor=\"middle\"\r\n fill=\"white\"\r\n font-size=\"12\"\r\n font-family=\"Poppins\"\r\n font-weight=\"600\">\r\n ${this.value}\r\n </text>\r\n </svg>\r\n </div>\r\n ` : \"\"}\r\n <div class=\"custom-thumb\"></div>\r\n </div>\r\n `;\r\n }\r\n\r\n private renderTicks() {\r\n if (this.type !== \"discrete\") return \"\";\r\n\r\n return html`\r\n <div class=\"ticks\">\r\n ${this.ticks.map(\r\n (tick) => html`\r\n <div\r\n class=\"tick ${this.isTickActive(tick) ? \"active\" : \"\"}\"\r\n style=\"left: ${this.getTickLeftPct(tick)}%\"></div>\r\n `\r\n )}\r\n </div>\r\n `;\r\n }\r\n\r\n private renderTickLabels() {\r\n if (this.type !== \"discrete\" || !this.showTickLabels) return \"\";\r\n\r\n return html`\r\n <div class=\"tick-labels\">\r\n ${this.ticks.map(\r\n (tick) => html`\r\n <div\r\n class=\"tick-label\"\r\n style=\"left: ${this.getTickLeftPct(tick)}%\">\r\n ${tick}\r\n </div>\r\n `\r\n )}\r\n </div>\r\n `;\r\n }\r\n\r\n render() {\r\n const sliderClasses = [\r\n \"rel-slider\",\r\n this.disabled ? \"disabled\" : \"\",\r\n this.type === \"discrete\" ? \"has-ticks\" : \"\",\r\n ]\r\n .filter(Boolean)\r\n .join(\" \");\r\n\r\n const trackActiveClasses = [\r\n \"track-active\",\r\n this.track === \"dotted\" ? \"dotted\" : \"\",\r\n ]\r\n .filter(Boolean)\r\n .join(\" \");\r\n\r\n return html`\r\n <div class=\"${sliderClasses}\">\r\n <div class=\"track\"></div>\r\n <div class=\"${trackActiveClasses}\"></div>\r\n\r\n <input\r\n class=\"slider-input\"\r\n type=\"range\"\r\n .min=\"${String(this.min)}\"\r\n .max=\"${String(this.max)}\"\r\n .step=\"${this.type === 'discrete' ? String(this.step) : '1'}\"\r\n .value=\"${String(this.value)}\"\r\n ?disabled=\"${this.disabled}\"\r\n @input=\"${this.onInput}\" />\r\n\r\n ${this.renderThumbContainer()}\r\n ${this.renderTicks()}\r\n ${this.renderTickLabels()}\r\n </div>\r\n `;\r\n }\r\n}\r\n","import { LitElement, html, css } from \"lit\";\r\nimport { customElement, property, state } from \"lit/decorators.js\";\r\n\r\nexport type SnackbarLines = \"single\" | \"double\";\r\n\r\n@customElement(\"rel-snackbar\")\r\nexport class RelSnackbar extends LitElement {\r\n @property({ type: String }) message: string = \"This is a snackbar message\";\r\n\r\n @property({ type: String }) action?: string;\r\n\r\n @property({ type: Boolean }) longerAction: boolean = false;\r\n\r\n @property({ type: Boolean }) iconClose: boolean = true;\r\n\r\n @property({ type: String }) lines: SnackbarLines = \"single\";\r\n\r\n @property({ type: Number }) duration: number = 4000;\r\n\r\n @state() private visible: boolean = true;\r\n\r\n private timeout: number | null = null;\r\n\r\n static styles = css`\r\n :host {\r\n display: block;\r\n font-family: var(--rel-fontFamilies-primary);\r\n }\r\n\r\n .snackbar {\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n min-width: 280px;\r\n max-width: 500px;\r\n margin: 0;\r\n padding: 12px 16px;\r\n border-radius: var(--rel-borders-radius-border-radius-200);\r\n background-color: var(--rel-colors-black);\r\n color: var(--rel-colors-white);\r\n font-family: var(--rel-fontFamilies-primary);\r\n box-shadow: var(--rel-shadows-shadow-300);\r\n animation: slide-up 0.3s ease-out;\r\n }\r\n\r\n .snackbar.two-line {\r\n flex-direction: column;\r\n align-items: stretch;\r\n }\r\n\r\n .snackbar.hidden {\r\n display: none;\r\n }\r\n\r\n .snackbar-message {\r\n font-size: var(--rel-fontSizes-sm);\r\n line-height: var(--rel-lineHeights-lineheight-200);\r\n margin-right: 12px;\r\n flex: 1;\r\n }\r\n\r\n .snackbar.two-line .snackbar-message {\r\n margin-right: 0;\r\n margin-bottom: 8px;\r\n flex: none;\r\n }\r\n\r\n .snackbar-actions {\r\n display: flex;\r\n align-items: center;\r\n gap: var(--rel-spacing-space-2xs);\r\n flex-shrink: 0;\r\n align-self: center;\r\n }\r\n\r\n .snackbar.two-line .snackbar-actions {\r\n align-self: flex-end;\r\n }\r\n\r\n .snackbar-action {\r\n background: none;\r\n border: none;\r\n color: var(--rel-colors-green-secondary);\r\n font-weight: var(--rel-fontWeights-semibold);\r\n font-size: var(--rel-fontSizes-sm);\r\n font-family: var(--rel-fontFamilies-primary);\r\n cursor: pointer;\r\n padding: 0;\r\n transition: opacity 0.2s ease;\r\n }\r\n\r\n .snackbar-action:hover {\r\n opacity: 0.8;\r\n }\r\n\r\n .snackbar-action:active {\r\n opacity: 0.6;\r\n }\r\n\r\n .snackbar-close {\r\n background: none;\r\n border: none;\r\n color: var(--rel-colors-white);\r\n cursor: pointer;\r\n font-size: 16px;\r\n padding: 0;\r\n width: 20px;\r\n height: 20px;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n transition: opacity 0.2s ease;\r\n }\r\n\r\n .snackbar-close:hover {\r\n opacity: 0.8;\r\n }\r\n\r\n .snackbar-close:active {\r\n opacity: 0.6;\r\n }\r\n\r\n @keyframes slide-up {\r\n from {\r\n transform: translateY(50px);\r\n opacity: 0;\r\n }\r\n to {\r\n transform: translateY(0);\r\n opacity: 1;\r\n }\r\n }\r\n `;\r\n\r\n connectedCallback() {\r\n super.connectedCallback();\r\n this.setAutoDismiss();\r\n }\r\n\r\n disconnectedCallback() {\r\n super.disconnectedCallback();\r\n this.clearTimeout();\r\n }\r\n\r\n private setAutoDismiss() {\r\n if (this.duration > 0) {\r\n this.clearTimeout();\r\n const delay = this.longerAction ? this.duration * 2 : this.duration;\r\n this.timeout = window.setTimeout(() => this.dismiss(), delay);\r\n }\r\n }\r\n\r\n private clearTimeout() {\r\n if (this.timeout !== null) {\r\n window.clearTimeout(this.timeout);\r\n this.timeout = null;\r\n }\r\n }\r\n\r\n private onActionClick() {\r\n this.dispatchEvent(\r\n new CustomEvent(\"actionClick\", {\r\n bubbles: true,\r\n composed: true,\r\n })\r\n );\r\n this.dismiss();\r\n }\r\n\r\n private dismiss() {\r\n this.visible = false;\r\n this.dispatchEvent(\r\n new CustomEvent(\"close\", {\r\n bubbles: true,\r\n composed: true,\r\n })\r\n );\r\n }\r\n\r\n render() {\r\n const snackbarClasses = [\r\n \"snackbar\",\r\n this.lines === \"double\" ? \"two-line\" : \"\",\r\n !this.visible ? \"hidden\" : \"\",\r\n ]\r\n .filter(Boolean)\r\n .join(\" \");\r\n\r\n return html`\r\n <div class=\"${snackbarClasses}\">\r\n <div class=\"snackbar-message\">${this.message}</div>\r\n\r\n <div class=\"snackbar-actions\">\r\n ${this.action\r\n ? html`\r\n <button class=\"snackbar-action\" @click=\"${this.onActionClick}\">\r\n ${this.action}\r\n </button>\r\n `\r\n : \"\"}\r\n ${this.iconClose\r\n ? html`\r\n <button class=\"snackbar-close\" @click=\"${this.dismiss}\">\r\n ✖\r\n </button>\r\n `\r\n : \"\"}\r\n </div>\r\n </div>\r\n `;\r\n }\r\n}\r\n","import { LitElement, html, css } from \"lit\";\r\nimport { customElement, property } from \"lit/decorators.js\";\r\n\r\nexport type StepStatus = \"done\" | \"progress\" | \"disabled\";\r\nexport type TextAlign = \"right\" | \"below\";\r\nexport type Orientation = \"horizontal\" | \"vertical\";\r\nexport type StepperSize = \"small\" | \"large\";\r\n\r\nexport interface Step {\r\n title: string;\r\n status: StepStatus;\r\n}\r\n\r\n@customElement(\"rel-stepper\")\r\nexport class RelStepper extends LitElement {\r\n @property({ type: Array }) steps: Step[] = [];\r\n\r\n @property({ type: String }) textAlign: TextAlign = \"below\";\r\n\r\n @property({ type: String }) orientation: Orientation = \"horizontal\";\r\n\r\n @property({ type: String }) size: StepperSize = \"large\";\r\n\r\n static styles = css`\r\n :host {\r\n display: block;\r\n font-family: var(--rel-fontFamilies-primary);\r\n }\r\n\r\n /********************************************\r\n * Base Stepper Styles\r\n ********************************************/\r\n .rel-stepper {\r\n display: flex;\r\n font-family: var(--rel-fontFamilies-primary);\r\n width: 100%;\r\n position: relative;\r\n }\r\n\r\n /* Orientation */\r\n .rel-stepper.horizontal {\r\n flex-direction: row;\r\n align-items: flex-start;\r\n justify-content: center;\r\n }\r\n\r\n .rel-stepper.vertical.text-below {\r\n flex-direction: column;\r\n align-items: center;\r\n justify-content: start;\r\n }\r\n\r\n .rel-stepper.vertical.text-right {\r\n flex-direction: column;\r\n align-items: flex-start;\r\n justify-content: start;\r\n }\r\n\r\n /********************************************\r\n * Step Container\r\n ********************************************/\r\n .rel-step {\r\n display: flex;\r\n position: relative;\r\n }\r\n\r\n .rel-stepper.horizontal.text-below .rel-step {\r\n flex-direction: column;\r\n align-items: center;\r\n text-align: center;\r\n position: relative;\r\n flex: 0;\r\n }\r\n\r\n .rel-stepper.horizontal.text-right .rel-step {\r\n flex-direction: row;\r\n align-items: center;\r\n position: relative;\r\n flex: 0;\r\n gap: var(--rel-spacing-space-2xs);\r\n }\r\n\r\n /* Vertical layout variants */\r\n .rel-stepper.vertical.text-below .rel-step {\r\n flex-direction: column;\r\n align-items: center;\r\n justify-content: start;\r\n position: relative;\r\n }\r\n\r\n .rel-stepper.vertical.text-right .rel-step {\r\n flex-direction: row;\r\n align-items: flex-start;\r\n justify-content: center;\r\n position: relative;\r\n gap: var(--rel-spacing-space-2xs);\r\n }\r\n\r\n /* Wrapper for indicator and connector */\r\n .indicator-wrapper {\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n position: relative;\r\n }\r\n\r\n /* Wrapper for indicator and label (text-below only) */\r\n .step-content {\r\n display: flex;\r\n align-items: center;\r\n gap: var(--rel-spacing-space-2xs);\r\n }\r\n\r\n .text-below-content {\r\n flex-direction: column;\r\n }\r\n\r\n .text-right-content {\r\n flex-direction: row;\r\n }\r\n\r\n /********************************************\r\n * Indicator\r\n ********************************************/\r\n .indicator {\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n width: 22px;\r\n height: 22px;\r\n border: 2px solid var(--rel-colors-gray-border);\r\n background: var(--rel-colors-white);\r\n border-radius: 50%;\r\n font-size: var(--rel-fontSizes-sm);\r\n font-weight: var(--rel-fontWeights-medium);\r\n position: relative;\r\n z-index: 2;\r\n transition: all 0.2s ease;\r\n flex-shrink: 0;\r\n }\r\n\r\n .indicator svg {\r\n width: 12px;\r\n height: auto;\r\n display: block;\r\n }\r\n\r\n /********************************************\r\n * Labels\r\n ********************************************/\r\n .step-label {\r\n white-space: nowrap;\r\n font-size: var(--rel-fontSizes-sm);\r\n color: var(--rel-colors-gray-paragraph);\r\n }\r\n\r\n /* Horizontal text-below specific */\r\n .rel-stepper.horizontal.text-below .step-label {\r\n margin-top: var(--rel-spacing-space-2xs);\r\n text-align: center;\r\n }\r\n\r\n /* Horizontal text-right specific */\r\n .rel-stepper.horizontal.text-right .step-label {\r\n margin-top: 0;\r\n margin-left: 0;\r\n margin-right: var(--rel-spacing-space-xs);\r\n text-align: left;\r\n }\r\n\r\n /* Vertical text-right specific */\r\n .rel-stepper.vertical.text-right .step-label {\r\n margin-top: 0;\r\n margin-left: 0;\r\n text-align: left;\r\n }\r\n\r\n /* Vertical text-below specific */\r\n .rel-stepper.vertical.text-below .step-label {\r\n margin-top: 0;\r\n margin-left: 0;\r\n text-align: center;\r\n }\r\n\r\n /********************************************\r\n * Connector Lines\r\n ********************************************/\r\n .connector {\r\n position: absolute;\r\n background: var(--rel-colors-gray-border);\r\n z-index: 1;\r\n }\r\n\r\n /* Horizontal connector */\r\n .rel-stepper.horizontal .connector {\r\n top: 50%;\r\n left: 100%;\r\n transform: translateY(-50%);\r\n height: 2px;\r\n position: absolute;\r\n background: var(--rel-colors-gray-border);\r\n }\r\n\r\n .rel-stepper.horizontal .rel-step:last-child .connector {\r\n display: none;\r\n }\r\n\r\n /* Vertical connectors */\r\n .rel-stepper.vertical.text-below .connector {\r\n top: 100%;\r\n left: 50%;\r\n transform: translateX(-50%);\r\n width: 2px;\r\n position: absolute;\r\n }\r\n\r\n .rel-stepper.vertical.text-right .connector {\r\n top: 100%;\r\n left: 50%;\r\n transform: translateX(-50%);\r\n width: 2px;\r\n position: absolute;\r\n }\r\n\r\n .rel-stepper.vertical .rel-step:last-child .connector {\r\n display: none;\r\n }\r\n\r\n .rel-stepper.vertical.text-right .rel-step:last-child .indicator-wrapper .connector {\r\n display: none;\r\n }\r\n\r\n /********************************************\r\n * Step States\r\n ********************************************/\r\n .rel-step.done .indicator {\r\n background: var(--rel-colors-black);\r\n border-color: var(--rel-colors-black);\r\n color: var(--rel-colors-white);\r\n }\r\n\r\n .rel-step.progress .indicator {\r\n border-color: var(--rel-colors-black);\r\n color: var(--rel-colors-black);\r\n background: var(--rel-colors-white);\r\n }\r\n\r\n .rel-step.disabled .indicator {\r\n background: var(--rel-colors-gray-bg-subtle);\r\n border-color: var(--rel-colors-gray-border);\r\n color: var(--rel-colors-gray-disabled);\r\n }\r\n\r\n .rel-step.done .connector {\r\n background: var(--rel-colors-black);\r\n }\r\n\r\n .rel-step.progress .connector {\r\n background: var(--rel-colors-black);\r\n }\r\n\r\n .rel-step.done .step-label {\r\n color: var(--rel-colors-black);\r\n font-weight: var(--rel-fontWeights-semibold);\r\n }\r\n\r\n .rel-step.progress .step-label {\r\n color: var(--rel-colors-black);\r\n font-weight: var(--rel-fontWeights-semibold);\r\n }\r\n\r\n .rel-step.disabled .step-label {\r\n color: var(--rel-colors-gray-disabled);\r\n }\r\n\r\n /********************************************\r\n * Size Property — controls connector length\r\n ********************************************/\r\n /* Horizontal */\r\n .rel-stepper.large.horizontal {\r\n gap: 86px;\r\n }\r\n\r\n .rel-stepper.small.horizontal {\r\n gap: 60px;\r\n }\r\n\r\n .rel-stepper.large.horizontal .connector {\r\n width: 86px;\r\n }\r\n\r\n .rel-stepper.small.horizontal .connector {\r\n width: 60px;\r\n }\r\n\r\n /* Vertical */\r\n .rel-stepper.large.vertical .connector {\r\n height: 86px;\r\n }\r\n\r\n .rel-stepper.large.vertical {\r\n gap: 86px;\r\n }\r\n\r\n .rel-stepper.small.vertical .connector {\r\n height: 42px;\r\n }\r\n\r\n .rel-stepper.small.vertical {\r\n gap: 42px;\r\n }\r\n `;\r\n\r\n private isDone(step: Step): boolean {\r\n return step.status === \"done\";\r\n }\r\n\r\n private isProgress(step: Step): boolean {\r\n return step.status === \"progress\";\r\n }\r\n\r\n private isDisabled(step: Step): boolean {\r\n return step.status === \"disabled\";\r\n }\r\n\r\n private getStepClasses(step: Step): string {\r\n const classes = [\"rel-step\"];\r\n if (this.isDone(step)) classes.push(\"done\");\r\n if (this.isProgress(step)) classes.push(\"progress\");\r\n if (this.isDisabled(step)) classes.push(\"disabled\");\r\n return classes.join(\" \");\r\n }\r\n\r\n private renderIndicator(step: Step, index: number) {\r\n if (step.status === \"done\") {\r\n return html`\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"14\"\r\n height=\"10\"\r\n viewBox=\"0 0 18 14\"\r\n fill=\"none\"\r\n class=\"check-icon\"\r\n >\r\n <path\r\n d=\"M6.44479 14L0.5 7.36383L1.9862 5.70478L6.44479 10.6819L16.0138 0L17.5 1.65904L6.44479 14Z\"\r\n fill=\"white\"\r\n />\r\n </svg>\r\n `;\r\n }\r\n return html`<span>${index + 1}</span>`;\r\n }\r\n\r\n render() {\r\n const stepperClasses = [\r\n \"rel-stepper\",\r\n this.orientation === \"vertical\" ? \"vertical\" : \"horizontal\",\r\n this.textAlign === \"below\" ? \"text-below\" : \"text-right\",\r\n this.size === \"small\" ? \"small\" : \"large\",\r\n ]\r\n .filter(Boolean)\r\n .join(\" \");\r\n\r\n const isVertical = this.orientation === \"vertical\";\r\n const isTextRight = this.textAlign === \"right\";\r\n\r\n return html`\r\n <div class=\"${stepperClasses}\">\r\n ${this.steps.map(\r\n (step, idx) => html`\r\n <div class=\"${this.getStepClasses(step)}\">\r\n ${isVertical && isTextRight\r\n ? html`\r\n <!-- Indicator with connector below -->\r\n <div class=\"indicator-wrapper\">\r\n <div class=\"indicator\">\r\n ${this.renderIndicator(step, idx)}\r\n </div>\r\n ${idx < this.steps.length - 1\r\n ? html`<div class=\"connector\"></div>`\r\n : \"\"}\r\n </div>\r\n\r\n <!-- Step Label to the right -->\r\n <div class=\"step-label\">${step.title}</div>\r\n `\r\n : isVertical\r\n ? html`\r\n <div class=\"step-content text-below-content\">\r\n <!-- Step Indicator -->\r\n <div class=\"indicator\">\r\n ${this.renderIndicator(step, idx)}\r\n </div>\r\n\r\n <!-- Step Label -->\r\n <div class=\"step-label\">${step.title}</div>\r\n </div>\r\n\r\n <!-- Connector -->\r\n ${idx < this.steps.length - 1\r\n ? html`<div class=\"connector\"></div>`\r\n : \"\"}\r\n `\r\n : html`\r\n <!-- Step Indicator -->\r\n <div class=\"indicator\">\r\n ${this.renderIndicator(step, idx)}\r\n </div>\r\n\r\n <!-- Step Label -->\r\n <div class=\"step-label\">${step.title}</div>\r\n\r\n <!-- Connector (for horizontal only) -->\r\n ${!isVertical && idx < this.steps.length - 1\r\n ? html`<div class=\"connector\"></div>`\r\n : \"\"}\r\n `}\r\n </div>\r\n `\r\n )}\r\n </div>\r\n `;\r\n }\r\n}\r\n","import { LitElement, html, css } from \"lit\";\r\nimport { customElement, property, state } from \"lit/decorators.js\";\r\n\r\n@customElement(\"rel-switch\")\r\nexport class RelSwitch extends LitElement {\r\n @property({ type: Boolean }) checked = false;\r\n @property({ type: Boolean }) disabled = false;\r\n\r\n @state() private isFocused = false;\r\n @state() private isPressed = false;\r\n\r\n static styles = css`\r\n :host {\r\n --switch-track: #7e8186;\r\n --switch-knob-on: #000000;\r\n --switch-knob-off: #ffffff;\r\n --switch-halo: rgba(224, 224, 224, 0.8);\r\n --switch-disabled: #d1d5db;\r\n display: inline-block;\r\n }\r\n\r\n /* Wrapper */\r\n .switch-wrapper {\r\n position: relative;\r\n display: inline-block;\r\n width: 42px;\r\n height: 22px;\r\n cursor: pointer;\r\n }\r\n\r\n .switch-wrapper.switch-disabled {\r\n cursor: not-allowed;\r\n opacity: 0.5;\r\n }\r\n\r\n /* Hide native checkbox */\r\n .switch-wrapper input {\r\n opacity: 0;\r\n width: 0;\r\n height: 0;\r\n }\r\n\r\n /* Track */\r\n .switch-slider {\r\n position: absolute;\r\n top: 50%;\r\n left: 4px;\r\n right: 4px;\r\n height: 12px;\r\n background-color: var(--switch-track);\r\n border-radius: 999px;\r\n transform: translateY(-50%);\r\n transition: background-color 0.25s ease;\r\n }\r\n\r\n /* Knob */\r\n .switch-slider::before {\r\n content: \"\";\r\n position: absolute;\r\n top: 50%;\r\n left: -2px;\r\n transform: translateY(-50%);\r\n height: 18px;\r\n width: 18px;\r\n background-color: var(--switch-knob-off);\r\n border-radius: 50%;\r\n transition: transform 0.25s ease, background-color 0.25s ease,\r\n box-shadow 0.2s ease;\r\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3);\r\n }\r\n\r\n /* ON state */\r\n input:checked + .switch-slider::before {\r\n background-color: var(--switch-knob-on);\r\n transform: translateY(-50%) translateX(22px);\r\n }\r\n\r\n /* Hover */\r\n .switch-wrapper:hover:not(.switch-disabled) .switch-slider {\r\n background-color: #666;\r\n }\r\n\r\n /* Focus halo */\r\n .switch-focused .switch-slider::before {\r\n box-shadow: 0 0 0 6px var(--switch-halo);\r\n }\r\n\r\n /* Pressed */\r\n .switch-pressed .switch-slider::before {\r\n transform: scale(0.9) translateY(-50%);\r\n }\r\n .switch-pressed input:checked + .switch-slider::before {\r\n transform: scale(0.9) translateY(-50%) translateX(22px);\r\n }\r\n\r\n /* Disabled */\r\n .switch-disabled .switch-slider {\r\n background-color: var(--switch-disabled);\r\n }\r\n .switch-disabled .switch-slider::before {\r\n background-color: var(--switch-disabled);\r\n }\r\n `;\r\n\r\n private toggle() {\r\n if (this.disabled) return;\r\n this.checked = !this.checked;\r\n this.requestUpdate();\r\n this.dispatchEvent(\r\n new CustomEvent(\"changed\", {\r\n detail: this.checked,\r\n bubbles: true,\r\n composed: true,\r\n })\r\n );\r\n }\r\n\r\n private handleFocus() {\r\n this.isFocused = true;\r\n }\r\n\r\n private handleBlur() {\r\n this.isFocused = false;\r\n this.isPressed = false;\r\n }\r\n\r\n private handleMouseDown() {\r\n if (!this.disabled) this.isPressed = true;\r\n }\r\n\r\n private handleMouseUp() {\r\n if (!this.disabled) this.isPressed = false;\r\n }\r\n\r\n render() {\r\n const wrapperClasses = [\r\n \"switch-wrapper\",\r\n this.disabled && \"switch-disabled\",\r\n this.isFocused && \"switch-focused\",\r\n this.isPressed && \"switch-pressed\",\r\n ]\r\n .filter(Boolean)\r\n .join(\" \");\r\n\r\n return html`\r\n <label class=\"${wrapperClasses}\">\r\n <input\r\n type=\"checkbox\"\r\n ?disabled=${this.disabled}\r\n .checked=${this.checked}\r\n @change=${this.toggle}\r\n @focus=${this.handleFocus}\r\n @blur=${this.handleBlur}\r\n @mousedown=${this.handleMouseDown}\r\n @mouseup=${this.handleMouseUp}\r\n />\r\n <span class=\"switch-slider\"></span>\r\n </label>\r\n `;\r\n }\r\n}\r\n","import { LitElement, html, css } from \"lit\";\r\nimport { customElement, property } from \"lit/decorators.js\";\r\n\r\nexport interface TabItem {\r\n label: string;\r\n badge?: number;\r\n disabled?: boolean;\r\n}\r\n\r\n@customElement(\"rel-tab\")\r\nexport class RelTab extends LitElement {\r\n @property({ type: Array }) tabs: TabItem[] = [];\r\n @property({ type: Number }) activeIndex: number = 0;\r\n\r\n static styles = css`\r\n :host {\r\n --tab-active-color: #00f49c;\r\n --tab-text-default: #111;\r\n --tab-text-disabled: #a5a7aa;\r\n --tab-text-hover: #000;\r\n --tab-underline-height: 3px;\r\n --tab-hover-color: #f3f3f3;\r\n display: block;\r\n font-family: var(--rel-fontFamilies-primary);\r\n }\r\n\r\n .tabs-wrapper {\r\n display: flex;\r\n border-bottom: 1px solid #e5e5e5;\r\n font-family: var(--rel-fontFamilies-primary);\r\n user-select: none;\r\n }\r\n\r\n .tab {\r\n position: relative;\r\n padding: 0.75rem 1rem;\r\n cursor: pointer;\r\n color: var(--tab-text-default);\r\n font-size: 0.9rem;\r\n font-weight: 500;\r\n transition: color 0.2s ease;\r\n display: flex;\r\n align-items: center;\r\n gap: 6px;\r\n }\r\n\r\n .tab:hover:not(.disabled) .tab-label {\r\n color: var(--tab-text-hover);\r\n }\r\n\r\n .tab.disabled {\r\n color: var(--tab-text-disabled);\r\n cursor: not-allowed;\r\n }\r\n\r\n /* Underline */\r\n .tab-underline {\r\n position: absolute;\r\n left: 0;\r\n bottom: 0;\r\n height: var(--tab-underline-height);\r\n width: 100%;\r\n background-color: transparent;\r\n transition: background-color 0.2s ease, transform 0.2s ease;\r\n }\r\n\r\n .tab.active .tab-underline {\r\n background-color: var(--tab-active-color);\r\n }\r\n\r\n .tab:hover:not(.disabled):not(.active) {\r\n background-color: var(--tab-hover-color);\r\n }\r\n\r\n /* Badge */\r\n .tab-badge {\r\n display: inline-flex;\r\n justify-content: center;\r\n align-items: center;\r\n background: #ff0400;\r\n color: #fff;\r\n border-radius: 50%;\r\n font-size: 11px;\r\n font-weight: 600;\r\n min-width: 16px;\r\n text-align: center;\r\n height: 16px;\r\n padding: 2px;\r\n }\r\n\r\n /* Tab content */\r\n .tab-content {\r\n padding: 1rem 0;\r\n }\r\n `;\r\n\r\n private selectTab(index: number) {\r\n if (this.tabs[index]?.disabled) return;\r\n this.activeIndex = index;\r\n this.dispatchEvent(\r\n new CustomEvent(\"tab-change\", {\r\n detail: { index },\r\n bubbles: true,\r\n composed: true,\r\n })\r\n );\r\n }\r\n\r\n private onKeyDown(event: KeyboardEvent, index: number) {\r\n if (this.tabs[index]?.disabled) return;\r\n if (event.key === \"Enter\" || event.key === \" \") {\r\n event.preventDefault();\r\n this.selectTab(index);\r\n }\r\n }\r\n\r\n render() {\r\n return html`\r\n <div class=\"tabs-wrapper\">\r\n ${this.tabs.map(\r\n (tab, i) => html`\r\n <div\r\n class=\"tab ${i === this.activeIndex ? \"active\" : \"\"} ${tab.disabled\r\n ? \"disabled\"\r\n : \"\"}\"\r\n role=\"tab\"\r\n tabindex=\"${tab.disabled ? -1 : 0}\"\r\n @click=\"${() => this.selectTab(i)}\"\r\n @keydown=\"${(e: KeyboardEvent) => this.onKeyDown(e, i)}\"\r\n >\r\n <span class=\"tab-label\">${tab.label}</span>\r\n ${tab.badge\r\n ? html`<span class=\"tab-badge\">${tab.badge}</span>`\r\n : \"\"}\r\n <span class=\"tab-underline\"></span>\r\n </div>\r\n `\r\n )}\r\n </div>\r\n <div class=\"tab-content\">\r\n <slot></slot>\r\n </div>\r\n `;\r\n }\r\n}\r\n","import { LitElement, html, css } from \"lit\";\r\nimport { customElement, property, state } from \"lit/decorators.js\";\r\n\r\nexport type TextFieldState = \"default\" | \"focused\" | \"error\" | \"disabled\";\r\nexport type TextFieldSize = \"small\" | \"medium\" | \"large\";\r\n\r\n@customElement(\"rel-textfield\")\r\nexport class RelTextfield extends LitElement {\r\n @property({ type: String }) label?: string;\r\n @property({ type: String }) placeholder: string = \"\";\r\n @property({ type: String }) type: string = \"text\";\r\n @property({ type: String }) value: string = \"\";\r\n @property({ type: String }) leftIcon?: string;\r\n @property({ type: String }) rightIcon?: string;\r\n @property({ type: String }) supportingText?: string;\r\n @property({ type: String }) state: TextFieldState = \"default\";\r\n @property({ type: String }) size: TextFieldSize = \"medium\";\r\n\r\n @state() private internalState: TextFieldState = \"default\";\r\n\r\n static styles = css`\r\n :host {\r\n display: block;\r\n font-family: var(--rel-fontFamilies-primary);\r\n }\r\n\r\n /* Wrapper */\r\n .textfield-wrapper {\r\n display: flex;\r\n flex-direction: column;\r\n gap: 4px;\r\n width: 100%;\r\n }\r\n\r\n /* Label */\r\n .textfield-label {\r\n font-size: 0.85rem;\r\n font-weight: 500;\r\n color: #111;\r\n }\r\n\r\n /* Container */\r\n .textfield-container {\r\n display: flex;\r\n align-items: center;\r\n position: relative;\r\n border: 1px solid #ccc;\r\n border-radius: 6px;\r\n background: white;\r\n transition: border 0.2s;\r\n }\r\n\r\n .textfield-container.disabled {\r\n background: #f5f5f5;\r\n cursor: not-allowed;\r\n }\r\n\r\n /* Input */\r\n .textfield-input {\r\n flex: 1;\r\n border: none;\r\n outline: none;\r\n font-size: 0.9rem;\r\n padding: 0.5rem 0.75rem;\r\n background: transparent;\r\n font-family: var(--rel-fontFamilies-primary);\r\n }\r\n\r\n .textfield-input:disabled {\r\n cursor: not-allowed;\r\n color: #999;\r\n }\r\n\r\n .icon {\r\n position: absolute;\r\n display: flex;\r\n pointer-events: none;\r\n color: #7e8186;\r\n }\r\n\r\n .icon.left {\r\n left: 8px;\r\n }\r\n\r\n .icon.right {\r\n right: 8px;\r\n }\r\n\r\n .textfield-wrapper.small .textfield-input {\r\n padding: 0.5rem 1rem;\r\n font-size: 0.9rem;\r\n }\r\n\r\n .textfield-wrapper.medium .textfield-input {\r\n padding: 0.688rem 1rem;\r\n font-size: 1rem;\r\n }\r\n\r\n .textfield-wrapper.large .textfield-input {\r\n padding: 0.875rem 1rem;\r\n font-size: 1.1rem;\r\n }\r\n\r\n /* Adjust padding when icons are present */\r\n .textfield-wrapper .textfield-input.has-left-icon {\r\n padding-left: 2.5rem;\r\n }\r\n\r\n .textfield-wrapper .textfield-input.has-right-icon {\r\n padding-right: 2.5rem;\r\n }\r\n\r\n /* States */\r\n .textfield-wrapper.focused .textfield-container {\r\n border-color: #111;\r\n }\r\n\r\n .textfield-wrapper.error .textfield-container {\r\n border-color: #d50000;\r\n }\r\n\r\n .textfield-wrapper.disabled .textfield-container {\r\n border-color: #d7d9db;\r\n }\r\n\r\n /* Supporting text */\r\n .textfield-support {\r\n font-size: 0.75rem;\r\n color: #666;\r\n }\r\n\r\n .textfield-support.error {\r\n color: #d50000;\r\n }\r\n `;\r\n\r\n private get currentState(): TextFieldState {\r\n return this.state !== \"default\" ? this.state : this.internalState;\r\n }\r\n\r\n private handleFocus() {\r\n if (this.state !== \"disabled\" && this.state !== \"error\") {\r\n this.internalState = \"focused\";\r\n }\r\n }\r\n\r\n private handleBlur() {\r\n if (this.internalState === \"focused\") {\r\n this.internalState = \"default\";\r\n }\r\n }\r\n\r\n private handleInput(e: Event) {\r\n const input = e.target as HTMLInputElement;\r\n this.value = input.value;\r\n this.dispatchEvent(\r\n new CustomEvent(\"input-change\", {\r\n detail: { value: this.value },\r\n bubbles: true,\r\n composed: true,\r\n })\r\n );\r\n }\r\n\r\n render() {\r\n const wrapperClasses = [\r\n \"textfield-wrapper\",\r\n this.size,\r\n this.currentState,\r\n ].join(\" \");\r\n\r\n const inputClasses = [\r\n \"textfield-input\",\r\n this.leftIcon ? \"has-left-icon\" : \"\",\r\n this.rightIcon ? \"has-right-icon\" : \"\",\r\n ]\r\n .filter(Boolean)\r\n .join(\" \");\r\n\r\n return html`\r\n <div class=\"${wrapperClasses}\">\r\n ${this.label\r\n ? html`<label class=\"textfield-label\">${this.label}</label>`\r\n : \"\"}\r\n\r\n <div\r\n class=\"textfield-container ${this.state === \"disabled\"\r\n ? \"disabled\"\r\n : \"\"}\"\r\n >\r\n ${this.leftIcon\r\n ? html`<span class=\"icon left\">${this.leftIcon}</span>`\r\n : \"\"}\r\n\r\n <input\r\n type=\"${this.type}\"\r\n class=\"${inputClasses}\"\r\n placeholder=\"${this.placeholder}\"\r\n .value=\"${this.value}\"\r\n ?disabled=\"${this.state === \"disabled\"}\"\r\n aria-invalid=\"${this.state === \"error\"}\"\r\n @focus=\"${this.handleFocus}\"\r\n @blur=\"${this.handleBlur}\"\r\n @input=\"${this.handleInput}\"\r\n />\r\n\r\n ${this.rightIcon\r\n ? html`<span class=\"icon right\">${this.rightIcon}</span>`\r\n : \"\"}\r\n </div>\r\n\r\n ${this.supportingText\r\n ? html`<div\r\n class=\"textfield-support ${this.state === \"error\"\r\n ? \"error\"\r\n : \"\"}\"\r\n >\r\n ${this.supportingText}\r\n </div>`\r\n : \"\"}\r\n </div>\r\n `;\r\n }\r\n}\r\n","import { LitElement, html, css } from \"lit\";\r\nimport { customElement, property, state } from \"lit/decorators.js\";\r\n\r\nexport type ToastType = \"default\" | \"error\";\r\n\r\n@customElement(\"rel-toast\")\r\nexport class RelToast extends LitElement {\r\n @property({ type: String }) message: string = \"\";\r\n @property({ type: String }) type: ToastType = \"default\";\r\n @property({ type: String }) actionLabel?: string;\r\n @property({ type: Number }) duration: number = 4000;\r\n\r\n @state() private visible: boolean = false;\r\n private timeoutId?: number;\r\n\r\n static styles = css`\r\n :host {\r\n position: fixed;\r\n bottom: 24px;\r\n left: 50%;\r\n transform: translateX(-50%);\r\n display: flex;\r\n justify-content: center;\r\n width: 100%;\r\n pointer-events: none;\r\n z-index: 1000;\r\n font-family: var(--rel-fontFamilies-primary);\r\n }\r\n\r\n /* Toast container */\r\n .toast {\r\n display: inline-flex;\r\n align-items: center;\r\n gap: 12px;\r\n background-color: #111;\r\n color: #fff;\r\n font-family: var(--rel-fontFamilies-primary);\r\n font-size: 0.9rem;\r\n border-radius: 8px;\r\n padding: 1rem 1rem;\r\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\r\n pointer-events: all;\r\n animation: fadeInUp 0.25s ease;\r\n }\r\n\r\n .toast.error {\r\n background-color: #d50000;\r\n }\r\n\r\n .toast.hidden {\r\n display: none;\r\n }\r\n\r\n /* Message */\r\n .toast-message {\r\n flex: 1;\r\n }\r\n\r\n /* Action button */\r\n .toast-action {\r\n background: transparent;\r\n border: none;\r\n color: #0edb90;\r\n font-weight: 600;\r\n font-size: 0.85rem;\r\n cursor: pointer;\r\n transition: opacity 0.2s;\r\n font-family: var(--rel-fontFamilies-primary);\r\n }\r\n\r\n .toast-action:hover {\r\n opacity: 0.75;\r\n }\r\n\r\n /* Close button */\r\n .toast-close {\r\n background: transparent;\r\n border: none;\r\n color: inherit;\r\n font-size: 1rem;\r\n cursor: pointer;\r\n line-height: 1;\r\n padding: 0;\r\n margin-left: 4px;\r\n }\r\n\r\n .toast-close:hover {\r\n opacity: 0.75;\r\n }\r\n\r\n /* Animations */\r\n @keyframes fadeInUp {\r\n from {\r\n opacity: 0;\r\n transform: translateY(20px);\r\n }\r\n to {\r\n opacity: 1;\r\n transform: translateY(0);\r\n }\r\n }\r\n `;\r\n\r\n show() {\r\n this.visible = true;\r\n\r\n if (this.duration > 0) {\r\n this.timeoutId = window.setTimeout(() => this.close(), this.duration);\r\n }\r\n }\r\n\r\n close() {\r\n this.visible = false;\r\n this.dispatchEvent(\r\n new CustomEvent(\"dismissed\", {\r\n bubbles: true,\r\n composed: true,\r\n })\r\n );\r\n if (this.timeoutId) {\r\n clearTimeout(this.timeoutId);\r\n }\r\n }\r\n\r\n private handleActionClick(event: Event) {\r\n event.stopPropagation();\r\n this.dispatchEvent(\r\n new CustomEvent(\"action\", {\r\n bubbles: true,\r\n composed: true,\r\n })\r\n );\r\n this.close();\r\n }\r\n\r\n render() {\r\n return html`\r\n <div class=\"toast ${this.type} ${this.visible ? \"\" : \"hidden\"}\">\r\n <span class=\"toast-message\">${this.message}</span>\r\n\r\n ${this.actionLabel\r\n ? html`<button\r\n class=\"toast-action\"\r\n @click=\"${this.handleActionClick}\"\r\n >\r\n ${this.actionLabel}\r\n </button>`\r\n : \"\"}\r\n\r\n <button class=\"toast-close\" @click=\"${this.close}\">✕</button>\r\n </div>\r\n `;\r\n }\r\n}\r\n","import { LitElement, html, css } from \"lit\";\r\nimport { customElement, property } from \"lit/decorators.js\";\r\n\r\nexport type TooltipPosition = \"above\" | \"below\";\r\n\r\n@customElement(\"rel-tooltip\")\r\nexport class RelTooltip extends LitElement {\r\n @property({ type: String }) text: string = \"\";\r\n @property({ type: String }) position: TooltipPosition = \"above\";\r\n @property({ type: Boolean }) showTail: boolean = false;\r\n\r\n static styles = css`\r\n :host {\r\n display: inline-block;\r\n position: relative;\r\n }\r\n\r\n /* Tooltip container */\r\n .tooltip-bubble {\r\n position: absolute;\r\n left: 50%;\r\n transform: translateX(-50%);\r\n background-color: #111;\r\n color: #fff;\r\n padding: 0.5rem 0.75rem;\r\n border-radius: 6px;\r\n font-size: 0.875rem;\r\n font-family: var(--rel-fontFamilies-primary);\r\n white-space: nowrap;\r\n z-index: 1000;\r\n opacity: 0;\r\n pointer-events: none;\r\n transition: opacity 0.2s ease;\r\n }\r\n\r\n :host(:hover) .tooltip-bubble {\r\n opacity: 1;\r\n }\r\n\r\n /* Positioning */\r\n .tooltip-bubble.above {\r\n bottom: calc(100% + 8px);\r\n }\r\n\r\n .tooltip-bubble.below {\r\n top: calc(100% + 8px);\r\n }\r\n\r\n /* Tail/Arrow */\r\n .tooltip-tail {\r\n position: absolute;\r\n left: 50%;\r\n transform: translateX(-50%);\r\n width: 0;\r\n height: 0;\r\n border-left: 6px solid transparent;\r\n border-right: 6px solid transparent;\r\n }\r\n\r\n .tooltip-bubble.above .tooltip-tail {\r\n bottom: -6px;\r\n border-top: 6px solid #111;\r\n }\r\n\r\n .tooltip-bubble.below .tooltip-tail {\r\n top: -6px;\r\n border-bottom: 6px solid #111;\r\n }\r\n `;\r\n\r\n render() {\r\n return html`\r\n <slot></slot>\r\n <div class=\"tooltip-bubble ${this.position}\">\r\n ${this.text}\r\n ${this.showTail ? html`<span class=\"tooltip-tail\"></span>` : \"\"}\r\n </div>\r\n `;\r\n }\r\n}\r\n"],"mappings":"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AAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;A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","names":["LitElement","html","css","customElement","property","LitElement","html","css","property","customElement","LitElement","html","css","customElement","property","LitElement","html","css","property","customElement","LitElement","html","css","customElement","property","LitElement","html","css","property","customElement","LitElement","html","css","customElement","property","LitElement","html","css","property","customElement","LitElement","html","css","customElement","property","LitElement","html","css","property","customElement","LitElement","html","css","customElement","LitElement","html","css","customElement","LitElement","html","css","customElement","property","LitElement","html","css","property","customElement","LitElement","html","css","customElement","property","LitElement","html","css","property","customElement","LitElement","html","css","customElement","property","state","LitElement","html","css","property","state","customElement","LitElement","html","css","customElement","property","LitElement","html","css","property","customElement","LitElement","html","css","customElement","property","LitElement","html","css","property","customElement","LitElement","html","css","customElement","property","LitElement","html","css","property","customElement","LitElement","html","css","customElement","property","state","LitElement","html","css","property","state","customElement","LitElement","html","css","customElement","property","LitElement","html","css","property","customElement","LitElement","html","css","customElement","property","LitElement","html","css","property","customElement","LitElement","html","css","customElement","property","LitElement","html","css","property","customElement","LitElement","html","css","customElement","property","LitElement","html","css","property","customElement","LitElement","html","css","customElement","property","state","LitElement","html","css","property","state","customElement","LitElement","html","css","customElement","property","state","LitElement","html","css","property","state","customElement","LitElement","html","css","customElement","property","LitElement","html","css","property","customElement","LitElement","html","css","customElement","property","state","LitElement","html","css","property","state","customElement","LitElement","html","css","customElement","property","LitElement","html","css","property","customElement","LitElement","html","css","customElement","property","state","LitElement","html","css","property","state","customElement","LitElement","html","css","customElement","property","state","LitElement","html","css","property","state","customElement","LitElement","html","css","customElement","property","LitElement","html","css","property","customElement"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/components/rel-accordion/rel-accordion.ts","../src/components/rel-alert/rel-alert.ts","../src/components/rel-avatar/rel-avatar.ts","../src/components/rel-badge/rel-badge.ts","../src/components/rel-breadcrumb/rel-breadcrumb.ts","../src/components/rel-button/rel-button.ts","../src/components/rel-card/rel-card.ts","../src/components/rel-cardmedia/rel-cardmedia.ts","../src/components/rel-checkbox/rel-checkbox.ts","../src/components/rel-chip/rel-chip.ts","../src/components/rel-container/rel-container.ts","../src/components/rel-divider/rel-divider.ts","../src/components/rel-layout/rel-layout.ts","../src/components/rel-menu/rel-menu.ts","../src/components/rel-progress/rel-progress.ts","../src/components/rel-radio/rel-radio.ts","../src/components/rel-segmented-button/rel-segmented-button.ts","../src/components/rel-select/rel-select.ts","../src/components/rel-slider/rel-slider.ts","../src/components/rel-snackbar/rel-snackbar.ts","../src/components/rel-stepper/rel-stepper.ts","../src/components/rel-switch/rel-switch.ts","../src/components/rel-tab/rel-tab.ts","../src/components/rel-textfield/rel-textfield.ts","../src/components/rel-toast/rel-toast.ts","../src/components/rel-tooltip/rel-tooltip.ts"],"sourcesContent":["// ✅ MUST be first\r\nimport \"./styles/vars.css\";\r\n\r\n/* Web components */\r\nexport * from \"./components/rel-accordion/rel-accordion\";\r\nexport * from \"./components/rel-alert/rel-alert\";\r\nexport * from \"./components/rel-avatar/rel-avatar\";\r\nexport * from \"./components/rel-badge/rel-badge\";\r\nexport * from \"./components/rel-breadcrumb/rel-breadcrumb\";\r\nexport * from \"./components/rel-button/rel-button\";\r\nexport * from \"./components/rel-card/rel-card\";\r\nexport * from \"./components/rel-cardmedia/rel-cardmedia\";\r\nexport * from \"./components/rel-checkbox/rel-checkbox\";\r\nexport * from \"./components/rel-chip/rel-chip\";\r\nexport * from \"./components/rel-container/rel-container\";\r\nexport * from \"./components/rel-divider/rel-divider\";\r\nexport * from \"./components/rel-layout/rel-layout\";\r\nexport * from \"./components/rel-menu/rel-menu\";\r\nexport * from \"./components/rel-progress/rel-progress\";\r\nexport * from \"./components/rel-radio/rel-radio\";\r\nexport * from \"./components/rel-segmented-button/rel-segmented-button\";\r\nexport * from \"./components/rel-select/rel-select\";\r\nexport * from \"./components/rel-slider/rel-slider\";\r\nexport * from \"./components/rel-snackbar/rel-snackbar\";\r\nexport * from \"./components/rel-stepper/rel-stepper\";\r\nexport * from \"./components/rel-switch/rel-switch\";\r\nexport * from \"./components/rel-tab/rel-tab\";\r\nexport * from \"./components/rel-textfield/rel-textfield\";\r\nexport * from \"./components/rel-toast/rel-toast\";\r\nexport * from \"./components/rel-tooltip/rel-tooltip\";\r\n","import { LitElement, html, css } from \"lit\";\r\nimport { customElement, property } from \"lit/decorators.js\";\r\n\r\n@customElement(\"rel-accordion\")\r\nexport class RelAccordion extends LitElement {\r\n @property({ type: String }) title = \"Accordion\";\r\n @property({ type: Boolean, reflect: true }) open = false;\r\n\r\n static styles = css`\r\n :host {\r\n display: block;\r\n width: 100%;\r\n font-family: var(--rel-fontFamilies-primary);\r\n }\r\n\r\n .accordion {\r\n background: var(--rel-colors-white);\r\n border: 1px solid var(--rel-border-default);\r\n border-radius: var(--rel-borders-radius-border-radius-200);\r\n box-shadow: var(--rel-shadows-shadow-100);\r\n overflow: hidden;\r\n }\r\n\r\n /* HEADER --------------------------------------------------- */\r\n .header {\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n padding: var(--rel-spacing-space-md);\r\n cursor: pointer;\r\n user-select: none;\r\n }\r\n\r\n .title {\r\n font-size: var(--rel-fontSizes-lg);\r\n font-weight: var(--rel-fontWeights-medium);\r\n color: var(--rel-colors-black);\r\n }\r\n\r\n /* ICON ----------------------------------------------------- */\r\n .icon {\r\n width: 20px;\r\n height: 20px;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n transition: transform 0.25s ease;\r\n }\r\n\r\n .icon svg {\r\n width: 20px;\r\n height: 20px;\r\n stroke: var(--rel-colors-gray-primary);\r\n stroke-width: 2;\r\n fill: none;\r\n stroke-linecap: round;\r\n stroke-linejoin: round;\r\n }\r\n\r\n .icon.rotated {\r\n transform: rotate(180deg);\r\n }\r\n\r\n /* BODY ------------------------------------------------------ */\r\n .body {\r\n overflow: hidden;\r\n max-height: 0;\r\n padding: 0 var(--rel-spacing-space-md);\r\n font-size: var(--rel-fontSizes-lg);\r\n color: var(--rel-colors-gray-primary);\r\n transition: max-height 0.25s ease, padding 0.2s ease;\r\n }\r\n\r\n .body.open {\r\n max-height: 1000px; /* sufficiently large */\r\n padding: var(--rel-spacing-space-xl) var(--rel-spacing-space-md)\r\n var(--rel-spacing-space-lg);\r\n }\r\n `;\r\n\r\n private toggle() {\r\n this.open = !this.open;\r\n\r\n this.dispatchEvent(\r\n new CustomEvent<boolean>(\"open-change\", {\r\n detail: this.open,\r\n bubbles: true,\r\n composed: true,\r\n })\r\n );\r\n }\r\n\r\n private chevron() {\r\n return html`\r\n <svg viewBox=\"0 0 24 24\">\r\n <polyline points=\"6 9 12 15 18 9\"></polyline>\r\n </svg>\r\n `;\r\n }\r\n\r\n render() {\r\n return html`\r\n <div class=\"accordion\">\r\n <div class=\"header\" @click=${this.toggle}>\r\n <div class=\"title\">${this.title}</div>\r\n\r\n <div class=\"icon ${this.open ? \"rotated\" : \"\"}\">\r\n ${this.chevron()}\r\n </div>\r\n </div>\r\n\r\n <!-- IMPORTANT: slot is ALWAYS rendered -->\r\n <div class=\"body ${this.open ? \"open\" : \"\"}\">\r\n <slot></slot>\r\n </div>\r\n </div>\r\n `;\r\n }\r\n}\r\n","import { LitElement, html, css } from \"lit\";\r\nimport { customElement, property } from \"lit/decorators.js\";\r\n\r\n@customElement(\"rel-alert\")\r\nexport class RelAlert extends LitElement {\r\n @property({ type: String })\r\n type: \"info\" | \"success\" | \"warning\" | \"error\" | \"neutral\" = \"neutral\";\r\n\r\n @property({ type: String }) message1 = \"\";\r\n @property({ type: String }) message2?: string;\r\n\r\n @property({ type: String }) urlText?: string;\r\n @property({ type: String }) urlHref?: string;\r\n\r\n @property({ type: Boolean }) dismissible = true;\r\n @property({ type: Boolean, reflect: true }) dismissed = false;\r\n\r\n static styles = css`\r\n :host {\r\n display: block;\r\n font-family: var(--rel-fontFamilies-primary);\r\n }\r\n\r\n :host([dismissed]) {\r\n display: none;\r\n }\r\n\r\n .rel-alert {\r\n display: flex;\r\n align-items: center;\r\n gap: var(--rel-spacing-space-xs);\r\n padding: var(--rel-spacing-space-sm) var(--rel-spacing-space-md);\r\n border-radius: var(--rel-borders-radius-border-radius-200);\r\n min-width: 360px;\r\n box-sizing: border-box;\r\n }\r\n\r\n .rel-content {\r\n display: flex;\r\n flex-direction: column;\r\n gap: 4px;\r\n }\r\n\r\n .rel-message1 {\r\n margin: 0;\r\n font-size: var(--rel-fontSizes-md);\r\n font-weight: var(--rel-fontWeights-medium);\r\n }\r\n\r\n .rel-message2 {\r\n margin: 0;\r\n font-size: var(--rel-fontSizes-sm);\r\n opacity: 0.9;\r\n }\r\n\r\n .rel-icon svg {\r\n width: 16px;\r\n height: 16px;\r\n }\r\n\r\n .rel-link {\r\n font-size: var(--rel-fontSizes-sm);\r\n font-weight: var(--rel-fontWeights-medium);\r\n text-decoration: underline;\r\n color: inherit;\r\n margin-top: 2px;\r\n }\r\n\r\n .rel-close {\r\n margin-left: auto;\r\n background: none;\r\n border: none;\r\n cursor: pointer;\r\n opacity: 0.6;\r\n }\r\n\r\n .rel-close:hover {\r\n opacity: 1;\r\n }\r\n\r\n /* COLORS */\r\n .alert-info {\r\n background: var(--rel-background-info);\r\n color: var(--rel-text-info);\r\n }\r\n\r\n .alert-success {\r\n background: var(--rel-background-success);\r\n color: var(--rel-text-success);\r\n }\r\n\r\n .alert-warning {\r\n background: var(--rel-background-warning);\r\n color: var(--rel-text-warning);\r\n }\r\n\r\n .alert-error {\r\n background: var(--rel-background-error);\r\n color: var(--rel-text-error);\r\n }\r\n\r\n .alert-neutral {\r\n background: var(--rel-colors-white);\r\n color: var(--rel-text-primary);\r\n border: 1px solid var(--rel-border-default);\r\n }\r\n `;\r\n\r\n private dismissAlert() {\r\n this.dismissed = true;\r\n\r\n this.dispatchEvent(\r\n new CustomEvent(\"dismiss\", {\r\n bubbles: true,\r\n composed: true,\r\n })\r\n );\r\n }\r\n\r\n private get iconSvg() {\r\n switch (this.type) {\r\n case \"info\":\r\n return html`\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"18\"\r\n height=\"18\"\r\n viewBox=\"0 0 18 18\"\r\n fill=\"none\"\r\n >\r\n <path\r\n d=\"M9 4.75C8.75917 4.75 8.55715 4.8316 8.39395 4.9948C8.23132 5.15743 8.15 5.35917 8.15 5.6C8.15 5.84083 8.23132 6.04285 8.39395 6.20605C8.55715 6.36868 8.75917 6.45 9 6.45C9.24083 6.45 9.44257 6.36868 9.6052 6.20605C9.7684 6.04285 9.85 5.84083 9.85 5.6C9.85 5.35917 9.7684 5.15743 9.6052 4.9948C9.44257 4.8316 9.24083 4.75 9 4.75ZM9.85 8.15L8.15 8.15L8.15 13.25L9.85 13.25L9.85 8.15ZM9 0.499999C10.1758 0.499999 11.2808 0.723266 12.315 1.1698C13.3492 1.61633 14.2488 2.22182 15.0138 2.98625C15.7788 3.75068 16.3842 4.65027 16.8302 5.685C17.2762 6.71973 17.4994 7.82473 17.5 9C17.5006 10.1753 17.2773 11.2803 16.8302 12.315C16.3842 13.3492 15.7787 14.2487 15.0137 15.0137C14.2487 15.7787 13.3492 16.3845 12.315 16.831C11.2808 17.2776 10.1758 17.5006 9 17.5C7.82417 17.4994 6.71917 17.2764 5.685 16.831C4.65083 16.3845 3.75125 15.7787 2.98625 15.0137C2.22125 14.2487 1.61577 13.3492 1.1698 12.315C0.723834 11.2808 0.500567 10.1758 0.500001 9C0.499434 7.82417 0.722701 6.71917 1.1698 5.685C1.61577 4.65083 2.22125 3.75125 2.98625 2.98625C3.75125 2.22125 4.65084 1.61577 5.685 1.1698C6.71917 0.723832 7.82417 0.500566 9 0.499999ZM9 2.2C7.10167 2.2 5.49375 2.85875 4.17625 4.17625C2.85875 5.49375 2.2 7.10167 2.2 9C2.2 10.8983 2.85875 12.5062 4.17625 13.8237C5.49375 15.1412 7.10167 15.8 9 15.8C10.8983 15.8 12.5062 15.1412 13.8237 13.8237C15.1412 12.5062 15.8 10.8983 15.8 9C15.8 7.10167 15.1413 5.49375 13.8238 4.17625C12.5063 2.85875 10.8983 2.2 9 2.2Z\"\r\n fill=\"#4A90E2\"\r\n />\r\n </svg>\r\n `;\r\n case \"success\":\r\n return html`\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"18\"\r\n height=\"18\"\r\n viewBox=\"0 0 18 18\"\r\n fill=\"none\"\r\n >\r\n <path\r\n d=\"M7.81 12.91L13.8025 6.9175L12.6125 5.7275L7.81 10.53L5.3875 8.1075L4.1975 9.2975L7.81 12.91ZM9 17.5C7.82417 17.5 6.71917 17.2767 5.685 16.8302C4.65083 16.3837 3.75125 15.7782 2.98625 15.0138C2.22125 14.2493 1.61577 13.3497 1.1698 12.315C0.723834 11.2803 0.500568 10.1753 0.500001 9C0.499434 7.82473 0.722701 6.71973 1.1698 5.685C1.61577 4.65083 2.22125 3.75125 2.98625 2.98625C3.75125 2.22125 4.65083 1.61548 5.685 1.16895C6.71917 0.722418 7.82417 0.499434 9 0.500001C10.1758 0.500568 11.2808 0.723551 12.315 1.16895C13.3492 1.61548 14.2488 2.22125 15.0138 2.98625C15.7788 3.75125 16.3842 4.65083 16.8302 5.685C17.2762 6.71917 17.4994 7.82417 17.5 9C17.5006 10.1758 17.2773 11.2808 16.8302 12.315C16.3842 13.3492 15.7788 14.2488 15.0138 15.0138C14.2488 15.7788 13.3492 16.3842 12.315 16.8302C11.2808 17.2762 10.1758 17.4994 9 17.5ZM9 15.8C10.8983 15.8 12.5062 15.1412 13.8237 13.8237C15.1412 12.5062 15.8 10.8983 15.8 9C15.8 7.10167 15.1412 5.49375 13.8237 4.17625C12.5062 2.85875 10.8983 2.2 9 2.2C7.10167 2.2 5.49375 2.85875 4.17625 4.17625C2.85875 5.49375 2.2 7.10167 2.2 9C2.2 10.8983 2.85875 12.5062 4.17625 13.8237C5.49375 15.1412 7.10167 15.8 9 15.8Z\"\r\n fill=\"#4CAA47\"\r\n />\r\n </svg>\r\n `;\r\n case \"warning\":\r\n return html`\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"16\"\r\n height=\"14\"\r\n viewBox=\"0 0 16 14\"\r\n fill=\"none\"\r\n >\r\n <path\r\n d=\"M0 14L8 0L16 14H0ZM2.50909 12.5263H13.4909L8 2.94737L2.50909 12.5263ZM8 11.7895C8.20606 11.7895 8.37891 11.7187 8.51855 11.5773C8.6577 11.4363 8.72727 11.2614 8.72727 11.0526C8.72727 10.8439 8.6577 10.669 8.51855 10.528C8.37891 10.3865 8.20606 10.3158 8 10.3158C7.79394 10.3158 7.62133 10.3865 7.48218 10.528C7.34255 10.669 7.27273 10.8439 7.27273 11.0526C7.27273 11.2614 7.34255 11.4363 7.48218 11.5773C7.62133 11.7187 7.79394 11.7895 8 11.7895ZM7.27273 9.57895H8.72727V5.89474H7.27273V9.57895Z\"\r\n fill=\"#FF6D00\"\r\n />\r\n </svg>\r\n `;\r\n case \"error\":\r\n return html`\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"18\"\r\n height=\"18\"\r\n viewBox=\"0 0 18 18\"\r\n fill=\"none\"\r\n >\r\n <path\r\n d=\"M9 13.25C9.24083 13.25 9.44285 13.1684 9.60605 13.0052C9.76868 12.8426 9.85 12.6408 9.85 12.4C9.85 12.1592 9.76868 11.9571 9.60605 11.7939C9.44285 11.6313 9.24083 11.55 9 11.55C8.75917 11.55 8.55743 11.6313 8.3948 11.7939C8.2316 11.9571 8.15 12.1592 8.15 12.4C8.15 12.6408 8.2316 12.8426 8.3948 13.0052C8.55743 13.1684 8.75917 13.25 9 13.25ZM8.15 9.85H9.85V4.75H8.15V9.85ZM9 17.5C7.82417 17.5 6.71917 17.2767 5.685 16.8302C4.65083 16.3837 3.75125 15.7782 2.98625 15.0138C2.22125 14.2493 1.61577 13.3497 1.1698 12.315C0.723834 11.2803 0.500568 10.1753 0.500001 9C0.499434 7.82473 0.722701 6.71973 1.1698 5.685C1.61577 4.65083 2.22125 3.75125 2.98625 2.98625C3.75125 2.22125 4.65083 1.61548 5.685 1.16895C6.71917 0.722418 7.82417 0.499434 9 0.500001C10.1758 0.500568 11.2808 0.723551 12.315 1.16895C13.3492 1.61548 14.2488 2.22125 15.0138 2.98625C15.7788 3.75125 16.3842 4.65083 16.8302 5.685C17.2762 6.71917 17.4994 7.82417 17.5 9C17.5006 10.1758 17.2773 11.2808 16.8302 12.315C16.3842 13.3492 15.7788 14.2488 15.0138 15.0138C14.2488 15.7788 13.3492 16.3842 12.315 16.8302C11.2808 17.2762 10.1758 17.4994 9 17.5ZM9 15.8C10.8983 15.8 12.5062 15.1412 13.8237 13.8237C15.1412 12.5062 15.8 10.8983 15.8 9C15.8 7.10167 15.1412 5.49375 13.8237 4.17625C12.5062 2.85875 10.8983 2.2 9 2.2C7.10167 2.2 5.49375 2.85875 4.17625 4.17625C2.85875 5.49375 2.2 7.10167 2.2 9C2.2 10.8983 2.85875 12.5062 4.17625 13.8237C5.49375 15.1412 7.10167 15.8 9 15.8Z\"\r\n fill=\"#C62828\"\r\n />\r\n </svg>\r\n `;\r\n default:\r\n return html`\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"18\"\r\n height=\"18\"\r\n viewBox=\"0 0 18 18\"\r\n fill=\"none\"\r\n >\r\n <path\r\n d=\"M9 4.75C8.75917 4.75 8.55715 4.8316 8.39395 4.9948C8.23132 5.15743 8.15 5.35917 8.15 5.6C8.15 5.84083 8.23132 6.04285 8.39395 6.20605C8.55715 6.36868 8.75917 6.45 9 6.45C9.24083 6.45 9.44257 6.36868 9.6052 6.20605C9.7684 6.04285 9.85 5.84083 9.85 5.6C9.85 5.35917 9.7684 5.15743 9.6052 4.9948C9.44257 4.8316 9.24083 4.75 9 4.75ZM9.85 8.15L8.15 8.15L8.15 13.25L9.85 13.25L9.85 8.15ZM9 0.499999C10.1758 0.499999 11.2808 0.723266 12.315 1.1698C13.3492 1.61633 14.2488 2.22182 15.0138 2.98625C15.7788 3.75068 16.3842 4.65027 16.8302 5.685C17.2762 6.71973 17.4994 7.82473 17.5 9C17.5006 10.1753 17.2773 11.2803 16.8302 12.315C16.3842 13.3492 15.7787 14.2487 15.0137 15.0137C14.2487 15.7787 13.3492 16.3845 12.315 16.831C11.2808 17.2776 10.1758 17.5006 9 17.5C7.82417 17.4994 6.71917 17.2764 5.685 16.831C4.65083 16.3845 3.75125 15.7787 2.98625 15.0137C2.22125 14.2487 1.61577 13.3492 1.1698 12.315C0.723834 11.2808 0.500567 10.1758 0.500001 9C0.499434 7.82417 0.722701 6.71917 1.1698 5.685C1.61577 4.65083 2.22125 3.75125 2.98625 2.98625C3.75125 2.22125 4.65084 1.61577 5.685 1.1698C6.71917 0.723832 7.82417 0.500566 9 0.499999ZM9 2.2C7.10167 2.2 5.49375 2.85875 4.17625 4.17625C2.85875 5.49375 2.2 7.10167 2.2 9C2.2 10.8983 2.85875 12.5062 4.17625 13.8237C5.49375 15.1412 7.10167 15.8 9 15.8C10.8983 15.8 12.5062 15.1412 13.8237 13.8237C15.1412 12.5062 15.8 10.8983 15.8 9C15.8 7.10167 15.1413 5.49375 13.8238 4.17625C12.5063 2.85875 10.8983 2.2 9 2.2Z\"\r\n fill=\"black\"\r\n />\r\n </svg>\r\n `;\r\n }\r\n }\r\n\r\n render() {\r\n return html`\r\n <div class=\"rel-alert alert-${this.type}\">\r\n <div class=\"rel-icon\">${this.iconSvg}</div>\r\n\r\n <div class=\"rel-content\">\r\n <p class=\"rel-message1\">${this.message1}</p>\r\n\r\n ${this.message2\r\n ? html`<p class=\"rel-message2\">${this.message2}</p>`\r\n : null}\r\n ${this.urlText && this.urlHref\r\n ? html`<a class=\"rel-link\" href=${this.urlHref}>\r\n ${this.urlText}\r\n </a>`\r\n : null}\r\n </div>\r\n\r\n ${this.dismissible\r\n ? html`<button class=\"rel-close\" @click=${this.dismissAlert}>\r\n ✕\r\n </button>`\r\n : null}\r\n </div>\r\n `;\r\n }\r\n}\r\n","import { LitElement, html, css } from \"lit\";\r\nimport { customElement, property } from \"lit/decorators.js\";\r\n\r\n@customElement(\"rel-avatar\")\r\nexport class RelAvatar extends LitElement {\r\n @property({ type: String, reflect: true })\r\n size: \"lg\" | \"md\" | \"sm\" | \"xs\" = \"md\";\r\n\r\n @property({ type: String, reflect: true })\r\n type: \"image\" | \"text\" | \"icon\" = \"image\";\r\n\r\n @property({ type: String }) src = \"\";\r\n @property({ type: String }) text = \"\";\r\n @property({ type: String }) alt = \"Avatar\";\r\n\r\n static styles = css`\r\n :host {\r\n display: inline-flex;\r\n font-family: var(--rel-fontFamilies-primary);\r\n }\r\n\r\n .avatar {\r\n display: inline-flex;\r\n align-items: center;\r\n justify-content: center;\r\n border-radius: 50%;\r\n overflow: hidden;\r\n\r\n background-color: var(--rel-colors-gray-heading);\r\n color: var(--rel-colors-white);\r\n font-weight: var(--rel-fontWeights-bold);\r\n\r\n user-select: none;\r\n text-transform: uppercase;\r\n }\r\n\r\n /* Sizes */\r\n .avatar-lg {\r\n width: 40px;\r\n height: 40px;\r\n font-size: var(--rel-fontSizes-xl);\r\n }\r\n\r\n .avatar-md {\r\n width: 32px;\r\n height: 32px;\r\n font-size: var(--rel-fontSizes-lg);\r\n }\r\n\r\n .avatar-sm {\r\n width: 24px;\r\n height: 24px;\r\n font-size: var(--rel-fontSizes-md);\r\n }\r\n\r\n .avatar-xs {\r\n width: 18px;\r\n height: 18px;\r\n font-size: var(--rel-fontSizes-xs);\r\n }\r\n\r\n img {\r\n width: 100%;\r\n height: 100%;\r\n object-fit: cover;\r\n }\r\n\r\n .icon-slot {\r\n width: 100%;\r\n height: 100%;\r\n display: inline-flex;\r\n align-items: center;\r\n justify-content: center;\r\n }\r\n\r\n .icon-slot ::slotted(svg) {\r\n width: 50%;\r\n height: 50%;\r\n }\r\n `;\r\n\r\n render() {\r\n return html`\r\n <div class=\"avatar avatar-${this.size}\">\r\n ${this.type === \"image\" && this.src\r\n ? html`<img src=${this.src} alt=${this.alt} />`\r\n : this.type === \"text\"\r\n ? html`<span>${this.text}</span>`\r\n : html`<span class=\"icon-slot\"><slot></slot></span>`}\r\n </div>\r\n `;\r\n }\r\n}\r\n","import { LitElement, html, css } from \"lit\";\r\nimport { customElement, property } from \"lit/decorators.js\";\r\n\r\n@customElement(\"rel-badge\")\r\nexport class RelBadge extends LitElement {\r\n @property({ type: String }) number = \"\";\r\n\r\n @property({ type: String, reflect: true })\r\n size: \"sm\" | \"md\" | \"lg\" = \"md\";\r\n\r\n @property({ type: String, reflect: true })\r\n variant: \"dot\" | \"number\" = \"number\";\r\n\r\n static styles = css`\r\n :host {\r\n display: inline-flex;\r\n }\r\n\r\n .badge {\r\n display: inline-flex;\r\n align-items: center;\r\n justify-content: center;\r\n font-family: var(--rel-fontFamilies-primary);\r\n font-weight: 600;\r\n background-color: var(--rel-colors-red-primary);\r\n color: var(--rel-colors-white);\r\n border-radius: 50%;\r\n }\r\n\r\n /* NUMBER BADGES */\r\n .badge-sm {\r\n width: 20px;\r\n height: 20px;\r\n font-size: 12px;\r\n }\r\n\r\n .badge-md {\r\n width: 28px;\r\n height: 28px;\r\n font-size: 14px;\r\n }\r\n\r\n .badge-lg {\r\n width: 40px;\r\n height: 40px;\r\n font-size: 20px;\r\n }\r\n\r\n /* DOT BADGES */\r\n .badge-dot.badge-sm {\r\n width: 8px;\r\n height: 8px;\r\n }\r\n\r\n .badge-dot.badge-md {\r\n width: 10px;\r\n height: 10px;\r\n }\r\n\r\n .badge-dot.badge-lg {\r\n width: 12px;\r\n height: 12px;\r\n }\r\n `;\r\n\r\n private get classes() {\r\n return [\"badge\", `badge-${this.size}`, `badge-${this.variant}`].join(\" \");\r\n }\r\n\r\n render() {\r\n return html`\r\n <span class=\"${this.classes}\">\r\n ${this.variant === \"number\" ? this.number : null}\r\n </span>\r\n `;\r\n }\r\n}\r\n","import { LitElement, html, css } from \"lit\";\r\nimport { customElement, property } from \"lit/decorators.js\";\r\n\r\nexport interface BreadcrumbItem {\r\n label: string;\r\n url?: string;\r\n}\r\n\r\n@customElement(\"rel-breadcrumbs\")\r\nexport class RelBreadcrumbs extends LitElement {\r\n @property({ type: Array })\r\n items: BreadcrumbItem[] = [];\r\n\r\n static styles = css`\r\n :host {\r\n display: block;\r\n font-family: var(--rel-fontFamilies-primary);\r\n font-size: var(--rel-fontSizes-md);\r\n color: var(--rel-colors-gray-text);\r\n }\r\n\r\n nav {\r\n width: 100%;\r\n }\r\n\r\n ol {\r\n display: flex;\r\n flex-wrap: wrap;\r\n padding: 0;\r\n margin: 0;\r\n list-style: none;\r\n }\r\n\r\n li {\r\n display: flex;\r\n align-items: center;\r\n }\r\n\r\n a {\r\n text-decoration: none;\r\n font-weight: var(--rel-fontWeights-medium);\r\n color: var(--rel-colors-gray-heading);\r\n transition: color 0.2s ease;\r\n }\r\n\r\n a:hover {\r\n text-decoration: underline;\r\n color: var(--rel-colors-primary);\r\n }\r\n\r\n .current {\r\n font-weight: var(--rel-fontWeights-bold);\r\n color: var(--rel-colors-black);\r\n cursor: default;\r\n }\r\n\r\n svg {\r\n stroke: currentColor;\r\n width: 16px;\r\n height: 16px;\r\n margin: 0 10px;\r\n }\r\n `;\r\n\r\n render() {\r\n return html`\r\n <nav aria-label=\"Breadcrumb\">\r\n <ol>\r\n ${this.items.map((item, index) => {\r\n const isLast = index === this.items.length - 1;\r\n\r\n return html`\r\n <li>\r\n ${item.url && !isLast\r\n ? html`<a href=${item.url}>${item.label}</a>`\r\n : html`<span class=\"current\">${item.label}</span>`}\r\n ${!isLast\r\n ? html`\r\n <svg viewBox=\"0 0 24 24\" aria-hidden=\"true\">\r\n <polyline\r\n points=\"9 18 15 12 9 6\"\r\n fill=\"none\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </svg>\r\n `\r\n : null}\r\n </li>\r\n `;\r\n })}\r\n </ol>\r\n </nav>\r\n `;\r\n }\r\n}\r\n","import { LitElement, html, css } from \"lit\";\r\nimport { customElement, property } from \"lit/decorators.js\";\r\n\r\n@customElement(\"rel-button\")\r\nexport class RelButton extends LitElement {\r\n @property({ type: String })\r\n variant: \"default\" | \"primary\" | \"secondary\" | \"text\" | \"link\" | \"icon\" =\r\n \"default\";\r\n\r\n @property({ type: String })\r\n tone: \"default\" | \"critical\" | \"success\" = \"default\";\r\n\r\n @property({ type: String })\r\n size: \"small\" | \"medium\" | \"large\" = \"medium\";\r\n\r\n @property({ type: String })\r\n border: \"corner-radius\" | \"small-corner-radius\" | \"no-corner-radius\" =\r\n \"corner-radius\";\r\n\r\n @property({ type: Boolean, reflect: true }) disabled = false;\r\n\r\n static styles = css`\r\n :host {\r\n display: inline-flex;\r\n }\r\n\r\n button {\r\n font-family: var(--rel-fontFamilies-primary);\r\n font-weight: var(--rel-fontWeights-semibold);\r\n cursor: pointer;\r\n border: none;\r\n transition: all 0.15s ease;\r\n display: inline-flex;\r\n align-items: center;\r\n justify-content: center;\r\n gap: var(--rel-spacing-space-2xs);\r\n outline: none;\r\n }\r\n\r\n /* Sizes */\r\n .size-small {\r\n height: 32px;\r\n padding: 0 var(--rel-spacing-space-md);\r\n font-size: var(--rel-fontSizes-sm);\r\n }\r\n\r\n .size-medium {\r\n height: 40px;\r\n padding: 0 var(--rel-spacing-space-lg);\r\n font-size: var(--rel-fontSizes-md);\r\n }\r\n\r\n .size-large {\r\n height: 48px;\r\n padding: 0 var(--rel-spacing-space-xl);\r\n font-size: var(--rel-fontSizes-lg);\r\n }\r\n\r\n /* Borders */\r\n .border-corner-radius {\r\n border-radius: var(--rel-borders-radius-border-radius-500);\r\n }\r\n\r\n .border-small-corner-radius {\r\n border-radius: var(--rel-borders-radius-border-radius-200);\r\n }\r\n\r\n .border-no-corner-radius {\r\n border-radius: var(--rel-borders-radius-border-radius-0);\r\n }\r\n\r\n /* Disabled */\r\n :host([disabled]) button {\r\n cursor: not-allowed;\r\n background-color: var(--rel-colors-gray-border) !important;\r\n color: var(--rel-colors-gray-disabled-text) !important;\r\n pointer-events: none;\r\n }\r\n\r\n /* Variants & tones (unchanged) */\r\n .btn-default.tone-default {\r\n background: var(--rel-colors-gray-primary);\r\n color: var(--rel-colors-white);\r\n }\r\n .btn-default.tone-critical {\r\n background: var(--rel-colors-red-primary);\r\n color: var(--rel-colors-white);\r\n }\r\n .btn-default.tone-success {\r\n background: var(--rel-colors-green-success);\r\n color: var(--rel-colors-white);\r\n }\r\n\r\n .btn-primary.tone-default {\r\n background: var(--rel-colors-green-primary);\r\n color: var(--rel-colors-black);\r\n }\r\n .btn-primary.tone-critical {\r\n background: var(--rel-colors-red-primary);\r\n color: var(--rel-colors-white);\r\n }\r\n .btn-primary.tone-success {\r\n background: var(--rel-colors-green-success);\r\n color: var(--rel-colors-white);\r\n }\r\n\r\n .btn-secondary {\r\n background: var(--rel-colors-white);\r\n border: 1px solid var(--rel-colors-black);\r\n color: var(--rel-colors-black);\r\n }\r\n\r\n .btn-text {\r\n background: transparent;\r\n color: var(--rel-colors-black);\r\n }\r\n\r\n .btn-link {\r\n background: transparent;\r\n color: var(--rel-colors-blue-primary);\r\n text-decoration: underline;\r\n }\r\n\r\n .btn-icon {\r\n width: 40px;\r\n height: 40px;\r\n padding: 0;\r\n border-radius: 50%;\r\n background: var(--rel-colors-gray-light);\r\n color: var(--rel-colors-black);\r\n }\r\n\r\n button:hover:not(:disabled) {\r\n filter: brightness(0.92);\r\n }\r\n\r\n button:active:not(:disabled) {\r\n transform: scale(0.97);\r\n }\r\n\r\n button:focus-visible {\r\n outline: 2px solid var(--rel-colors-blue-primary);\r\n outline-offset: 2px;\r\n }\r\n `;\r\n\r\n private get classes() {\r\n return [\r\n `btn-${this.variant}`,\r\n `tone-${this.tone}`,\r\n `size-${this.size}`,\r\n `border-${this.border}`,\r\n ].join(\" \");\r\n }\r\n\r\n private handleClick(e: MouseEvent) {\r\n if (this.disabled) {\r\n e.preventDefault();\r\n e.stopImmediatePropagation();\r\n return;\r\n }\r\n\r\n // Re-emit click from host (Angular-friendly)\r\n this.dispatchEvent(\r\n new MouseEvent(\"click\", {\r\n bubbles: true,\r\n composed: true,\r\n })\r\n );\r\n }\r\n\r\n render() {\r\n return html`\r\n <button\r\n class=\"${this.classes}\"\r\n ?disabled=${this.disabled}\r\n @click=${this.handleClick}\r\n aria-disabled=${this.disabled}\r\n >\r\n <slot></slot>\r\n </button>\r\n `;\r\n }\r\n}\r\n","import { LitElement, html, css } from \"lit\";\r\nimport { customElement } from \"lit/decorators.js\";\r\n\r\n@customElement(\"rel-card\")\r\nexport class RelCard extends LitElement {\r\n static styles = css`\r\n :host {\r\n display: block;\r\n font-family: var(--rel-fontFamilies-primary);\r\n }\r\n\r\n .card {\r\n background-color: var(--rel-colors-white);\r\n border-radius: var(--rel-borders-radius-border-radius-300);\r\n padding: var(--rel-spacing-space-md);\r\n\r\n box-shadow: var(--rel-shadows-shadow-200);\r\n transition: transform 0.2s ease, box-shadow 0.2s ease;\r\n }\r\n\r\n .card:hover {\r\n transform: translateY(-3px);\r\n box-shadow: var(--rel-shadows-shadow-300);\r\n }\r\n `;\r\n\r\n render() {\r\n return html`\r\n <div class=\"card\">\r\n <slot></slot>\r\n </div>\r\n `;\r\n }\r\n}\r\n","import { LitElement, html, css } from \"lit\";\r\nimport { customElement, property } from \"lit/decorators.js\";\r\n\r\n@customElement(\"rel-card-media\")\r\nexport class RelCardMedia extends LitElement {\r\n @property({ type: String }) imageSrc = \"\";\r\n @property({ type: String }) imageAlt = \"Card image\";\r\n @property({ type: String }) title = \"\";\r\n @property({ type: String }) subtitle = \"\";\r\n\r\n static styles = css`\r\n :host {\r\n display: block;\r\n font-family: var(--rel-fontFamilies-primary);\r\n }\r\n\r\n .card-media {\r\n background-color: var(--rel-colors-white);\r\n border-radius: var(--rel-borders-radius-border-radius-300);\r\n overflow: hidden;\r\n box-shadow: var(--rel-shadows-shadow-200);\r\n transition: transform 0.2s ease, box-shadow 0.2s ease;\r\n }\r\n\r\n .card-media:hover {\r\n transform: translateY(-4px);\r\n box-shadow: var(--rel-shadows-shadow-300);\r\n }\r\n\r\n .card-image img {\r\n display: block;\r\n width: 100%;\r\n height: auto;\r\n object-fit: cover;\r\n }\r\n\r\n .card-content {\r\n padding: var(--rel-spacing-space-md);\r\n }\r\n\r\n .card-content h3 {\r\n margin: 0 0 4px 0;\r\n font-size: var(--rel-fontSizes-md);\r\n font-weight: var(--rel-fontWeights-semibold);\r\n color: var(--rel-colors-gray-heading);\r\n }\r\n\r\n .card-content p {\r\n margin: 0 0 8px 0;\r\n font-size: var(--rel-fontSizes-sm);\r\n color: var(--rel-colors-gray-text);\r\n }\r\n `;\r\n\r\n render() {\r\n return html`\r\n <div class=\"card-media\">\r\n ${this.imageSrc\r\n ? html`\r\n <div class=\"card-image\">\r\n <img src=${this.imageSrc} alt=${this.imageAlt} />\r\n </div>\r\n `\r\n : null}\r\n\r\n <div class=\"card-content\">\r\n ${this.title ? html`<h3>${this.title}</h3>` : null}\r\n ${this.subtitle ? html`<p>${this.subtitle}</p>` : null}\r\n <slot></slot>\r\n </div>\r\n </div>\r\n `;\r\n }\r\n}\r\n","import { LitElement, html, css } from \"lit\";\r\nimport { customElement, property } from \"lit/decorators.js\";\r\n\r\ntype CheckboxState = \"default\" | \"error\" | \"disabled\";\r\ntype CheckboxStatus = \"unchecked\" | \"checked\" | \"indeterminate\";\r\n\r\n@customElement(\"rel-checkbox\")\r\nexport class RelCheckbox extends LitElement {\r\n @property({ type: String }) label = \"Label\";\r\n @property({ type: String }) supportingtext = \"\";\r\n @property({ type: String }) state: CheckboxState = \"default\";\r\n @property({ type: String }) status: CheckboxStatus = \"unchecked\";\r\n\r\n static styles = css`\r\n :host {\r\n display: block;\r\n font-family: var(--rel-fontFamilies-primary);\r\n }\r\n\r\n .wrapper {\r\n display: flex;\r\n flex-direction: column;\r\n gap: 4px;\r\n }\r\n\r\n .row {\r\n display: flex;\r\n align-items: center;\r\n gap: 10px;\r\n cursor: pointer;\r\n }\r\n\r\n input {\r\n position: absolute;\r\n opacity: 0;\r\n pointer-events: none;\r\n }\r\n\r\n .box {\r\n width: 18px;\r\n height: 18px;\r\n border-radius: 4px;\r\n border: 2px solid var(--rel-colors-gray-heading);\r\n background: var(--rel-colors-white);\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n transition: all 0.2s;\r\n }\r\n\r\n svg {\r\n width: 12px;\r\n height: 12px;\r\n display: none;\r\n }\r\n\r\n .checked .box,\r\n .indeterminate .box {\r\n background: var(--rel-colors-gray-heading);\r\n border-color: var(--rel-colors-gray-heading);\r\n }\r\n\r\n .checked .check-icon {\r\n display: block;\r\n }\r\n\r\n .indeterminate .indeterminate-icon {\r\n display: block;\r\n }\r\n\r\n .error .box {\r\n border-color: var(--rel-colors-red-primary);\r\n }\r\n\r\n .error.checked .box,\r\n .error.indeterminate .box {\r\n background: var(--rel-colors-red-primary);\r\n border-color: var(--rel-colors-red-primary);\r\n }\r\n\r\n .disabled {\r\n opacity: 0.55;\r\n cursor: not-allowed;\r\n }\r\n\r\n .label {\r\n font-size: var(--rel-fontSizes-md);\r\n font-weight: var(--rel-fontWeights-medium);\r\n }\r\n\r\n .text {\r\n font-size: var(--rel-fontSizes-sm);\r\n color: var(--rel-colors-gray-text);\r\n }\r\n `;\r\n\r\n private toggle() {\r\n if (this.state === \"disabled\") return;\r\n\r\n if (this.status === \"unchecked\") this.status = \"checked\";\r\n else if (this.status === \"checked\") this.status = \"indeterminate\";\r\n else this.status = \"unchecked\";\r\n\r\n this.dispatchEvent(\r\n new CustomEvent(\"change\", {\r\n detail: {\r\n checked: this.status === \"checked\",\r\n indeterminate: this.status === \"indeterminate\",\r\n },\r\n bubbles: true,\r\n composed: true,\r\n })\r\n );\r\n }\r\n\r\n render() {\r\n return html`\r\n <div class=\"wrapper ${this.state} ${this.status}\">\r\n <label class=\"row\">\r\n <input\r\n type=\"checkbox\"\r\n @click=${this.toggle}\r\n ?disabled=${this.state === \"disabled\"}\r\n />\r\n\r\n <span class=\"box\">\r\n <svg class=\"check-icon\" viewBox=\"0 0 18 14\" fill=\"white\">\r\n <path\r\n d=\"M6.44 14L0.5 7.36l1.49-1.66L6.44 10.68 16.01 0 17.5 1.66z\"\r\n />\r\n </svg>\r\n\r\n <svg class=\"indeterminate-icon\" viewBox=\"0 0 16 2\" fill=\"white\">\r\n <rect width=\"16\" height=\"2\" />\r\n </svg>\r\n </span>\r\n\r\n <span class=\"label\">${this.label}</span>\r\n </label>\r\n\r\n ${this.supportingtext\r\n ? html`<span class=\"text\">${this.supportingtext}</span>`\r\n : null}\r\n </div>\r\n `;\r\n }\r\n}\r\n","import { LitElement, html, css } from \"lit\";\r\nimport { customElement, property } from \"lit/decorators.js\";\r\n\r\n@customElement(\"rel-chip\")\r\nexport class RelChip extends LitElement {\r\n @property({ type: String }) label = \"Label\";\r\n\r\n @property({ type: String })\r\n tone: \"default\" | \"blue\" | \"yellow\" | \"red\" | \"green\" = \"default\";\r\n\r\n @property({ type: String }) leadingIcon?: string;\r\n @property({ type: String }) trailingIcon?: string;\r\n @property({ type: String }) avatar?: string;\r\n\r\n @property({ type: Boolean }) removable = false;\r\n @property({ type: Boolean }) outline = false;\r\n\r\n /** IMPORTANT: reflected so CSS + Angular can see it */\r\n @property({ type: Boolean, reflect: true }) removed = false;\r\n\r\n static styles = css`\r\n :host {\r\n display: inline-block;\r\n }\r\n\r\n :host([removed]) {\r\n display: none;\r\n }\r\n\r\n .chip {\r\n display: inline-flex;\r\n align-items: center;\r\n font-family: var(--rel-fontFamilies-primary);\r\n font-size: var(--rel-fontSizes-md);\r\n font-weight: var(--rel-fontWeights-medium);\r\n border-radius: var(--rel-borders-radius-border-radius-500);\r\n padding: var(--rel-spacing-space-2xs) var(--rel-spacing-space-sm);\r\n gap: var(--rel-spacing-space-2xs);\r\n cursor: pointer;\r\n border: var(--rel-borders-width-stroke-100) solid transparent;\r\n user-select: none;\r\n white-space: nowrap;\r\n background: transparent;\r\n }\r\n\r\n .chip:hover {\r\n filter: brightness(0.92);\r\n box-shadow: var(--rel-shadows-shadow-100);\r\n }\r\n\r\n /* TONES */\r\n .chip-default {\r\n background: var(--rel-colors-gray-border);\r\n color: var(--rel-colors-black);\r\n }\r\n\r\n .chip-blue {\r\n background: var(--rel-colors-blue-tertiary);\r\n color: var(--rel-colors-white);\r\n }\r\n\r\n .chip-yellow {\r\n background: var(--rel-colors-yellow-pending);\r\n color: var(--rel-colors-black);\r\n }\r\n\r\n .chip-red {\r\n background: var(--rel-colors-red-secondary);\r\n color: var(--rel-colors-white);\r\n }\r\n\r\n .chip-green {\r\n background: var(--rel-colors-green-success);\r\n color: var(--rel-colors-white);\r\n }\r\n\r\n /* OUTLINE */\r\n .chip-outline {\r\n background: transparent;\r\n }\r\n\r\n .chip-avatar {\r\n width: 20px;\r\n height: 20px;\r\n border-radius: 50%;\r\n object-fit: cover;\r\n }\r\n\r\n .chip-icon ::slotted(svg),\r\n .chip-icon svg {\r\n width: 16px;\r\n height: 16px;\r\n fill: currentColor;\r\n }\r\n\r\n .chip-remove {\r\n margin-left: var(--rel-spacing-space-3xs);\r\n cursor: pointer;\r\n opacity: 0.7;\r\n }\r\n\r\n .chip-remove:hover {\r\n opacity: 1;\r\n }\r\n `;\r\n\r\n private get classes() {\r\n return [\r\n \"chip\",\r\n `chip-${this.tone}`,\r\n this.outline ? \"chip-outline\" : \"\",\r\n ].join(\" \");\r\n }\r\n\r\n private handleRemove(event: Event) {\r\n event.stopPropagation();\r\n this.removed = true;\r\n\r\n this.dispatchEvent(\r\n new CustomEvent(\"removed\", {\r\n bubbles: true,\r\n composed: true,\r\n })\r\n );\r\n }\r\n\r\n render() {\r\n return html`\r\n <span\r\n class=\"${this.classes}\"\r\n role=\"button\"\r\n tabindex=\"0\"\r\n aria-label=\"${this.label}\"\r\n >\r\n ${this.avatar\r\n ? html`<img src=${this.avatar} alt=\"\" class=\"chip-avatar\" />`\r\n : null}\r\n ${this.leadingIcon\r\n ? html`<span class=\"chip-icon\">\r\n ${this.renderIcon(this.leadingIcon)}\r\n </span>`\r\n : null}\r\n\r\n <span class=\"chip-label\">${this.label}</span>\r\n\r\n ${this.trailingIcon\r\n ? html`<span class=\"chip-icon\">\r\n ${this.renderIcon(this.trailingIcon)}\r\n </span>`\r\n : null}\r\n ${this.removable\r\n ? html`<span\r\n class=\"chip-remove\"\r\n role=\"button\"\r\n aria-label=\"Remove chip\"\r\n @click=${this.handleRemove}\r\n >\r\n ✕\r\n </span>`\r\n : null}\r\n </span>\r\n `;\r\n }\r\n\r\n private renderIcon(iconString: string) {\r\n const template = document.createElement(\"template\");\r\n template.innerHTML = iconString.trim();\r\n return template.content.cloneNode(true);\r\n }\r\n}\r\n","import { LitElement, html, css } from \"lit\";\r\nimport { customElement, property } from \"lit/decorators.js\";\r\n\r\n@customElement(\"rel-container\")\r\nexport class RelContainer extends LitElement {\r\n @property({ type: String }) padding: \"sm\" | \"md\" | \"lg\" = \"md\";\r\n @property({ type: Boolean }) shadow = false;\r\n @property({ type: String }) background: \"light\" | \"white\" | \"none\" = \"white\";\r\n\r\n static styles = css`\r\n :host {\r\n display: block;\r\n width: 100%;\r\n box-sizing: border-box;\r\n }\r\n\r\n .reliability-container {\r\n border-radius: var(--rel-borders-radius-border-radius-200);\r\n display: block;\r\n width: 100%;\r\n box-sizing: border-box;\r\n }\r\n\r\n .bg-white {\r\n background-color: var(--rel-colors-white);\r\n }\r\n\r\n .bg-light {\r\n background-color: var(--rel-colors-gray-light);\r\n }\r\n\r\n .bg-none {\r\n background: transparent;\r\n }\r\n\r\n .padding-sm {\r\n padding: var(--rel-spacing-space-xs);\r\n }\r\n\r\n .padding-md {\r\n padding: var(--rel-spacing-space-md);\r\n }\r\n\r\n .padding-lg {\r\n padding: var(--rel-spacing-space-2xl);\r\n }\r\n\r\n .shadow {\r\n box-shadow: var(--rel-shadows-shadow-300);\r\n }\r\n `;\r\n\r\n private get classes() {\r\n return [\r\n \"reliability-container\",\r\n `bg-${this.background}`,\r\n `padding-${this.padding}`,\r\n this.shadow ? \"shadow\" : \"\",\r\n ].join(\" \");\r\n }\r\n\r\n render() {\r\n return html`\r\n <div class=\"${this.classes}\">\r\n <slot></slot>\r\n </div>\r\n `;\r\n }\r\n}\r\n"," import { LitElement, html, css } from \"lit\";\r\n import { customElement, property } from \"lit/decorators.js\";\r\n\r\n @customElement(\"rel-divider\")\r\n export class RelDivider extends LitElement {\r\n @property({ type: String }) orientation: \"horizontal\" | \"vertical\" = \"horizontal\";\r\n\r\n static styles = css`\r\n :host {\r\n display: block;\r\n }\r\n\r\n .rel-divider {\r\n position: relative;\r\n display: flex;\r\n background: transparent;\r\n font-family: var(--rel-fontFamilies-primary);\r\n color: var(--rel-colors-gray-primary);\r\n }\r\n\r\n /* Horizontal */\r\n .rel-divider.horizontal {\r\n width: 100%;\r\n height: var(--rel-borders-width-stroke-100);\r\n background-color: var(--rel-colors-gray-border);\r\n margin: var(--rel-spacing-space-md) 0;\r\n }\r\n\r\n /* Vertical */\r\n .rel-divider.vertical {\r\n width: var(--rel-borders-width-stroke-100);\r\n background-color: var(--rel-colors-gray-border);\r\n margin: 0 var(--rel-spacing-space-md);\r\n align-self: stretch;\r\n height: 100%;\r\n }\r\n `;\r\n\r\n render() {\r\n return html`\r\n <div class=\"rel-divider ${this.orientation}\" role=\"separator\"></div>\r\n `;\r\n }\r\n }\r\n","import { LitElement, html, css } from \"lit\";\r\nimport { customElement, property } from \"lit/decorators.js\";\r\n\r\n@customElement(\"rel-layout\")\r\nexport class RelLayout extends LitElement {\r\n @property({ type: String }) gap = \"1rem\";\r\n\r\n @property({ type: Number }) columns = 4;\r\n\r\n // 🔥 IMPORTANT: reflect so CSS selectors work\r\n @property({ type: Boolean, reflect: true }) responsive = true;\r\n\r\n static styles = css`\r\n :host {\r\n display: block;\r\n width: 100%;\r\n }\r\n\r\n .layout-grid {\r\n display: grid;\r\n width: 100%;\r\n font-family: var(--rel-fontFamilies-primary);\r\n }\r\n\r\n /* Responsive breakpoints — only when attribute exists */\r\n @media (max-width: 1024px) {\r\n :host([responsive]) .layout-grid {\r\n grid-template-columns: repeat(3, 1fr) !important;\r\n }\r\n }\r\n\r\n @media (max-width: 768px) {\r\n :host([responsive]) .layout-grid {\r\n grid-template-columns: repeat(2, 1fr) !important;\r\n }\r\n }\r\n\r\n @media (max-width: 480px) {\r\n :host([responsive]) .layout-grid {\r\n grid-template-columns: 1fr !important;\r\n }\r\n }\r\n `;\r\n\r\n render() {\r\n return html`\r\n <div\r\n class=\"layout-grid\"\r\n style=\"\r\n gap: ${this.gap};\r\n grid-template-columns: repeat(${this.columns}, 1fr);\r\n \"\r\n >\r\n <slot></slot>\r\n </div>\r\n `;\r\n }\r\n}\r\n","import { LitElement, html, css } from \"lit\";\r\nimport { customElement, property, state } from \"lit/decorators.js\";\r\n\r\nexport type MenuType = \"default\" | \"checkbox\" | \"arrow\";\r\n\r\nexport interface MenuItem {\r\n label: string;\r\n active?: boolean;\r\n checked?: boolean;\r\n disabled?: boolean;\r\n submenu?: MenuItem[];\r\n open?: boolean;\r\n}\r\n\r\n@customElement(\"rel-menu\")\r\nexport class RelMenu extends LitElement {\r\n @property({ type: String }) type: MenuType = \"default\";\r\n\r\n @property({ type: Array }) items: MenuItem[] = [];\r\n\r\n @state() private focusedIndex: number = 0;\r\n\r\n static styles = css`\r\n :host {\r\n display: inline-block;\r\n }\r\n\r\n .rel-menu {\r\n position: relative;\r\n display: inline-block;\r\n background: var(--rel-colors-white);\r\n border-radius: var(--rel-borders-radius-border-radius-300);\r\n box-shadow: var(--rel-shadows-shadow-300);\r\n min-width: 220px;\r\n font-family: var(--rel-fontFamilies-primary);\r\n font-size: var(--rel-fontSizes-sm);\r\n padding: var(--rel-spacing-space-3xs) 0;\r\n outline: none;\r\n }\r\n\r\n .rel-menu-item {\r\n position: relative;\r\n display: flex;\r\n align-items: center;\r\n gap: var(--rel-spacing-space-xs);\r\n padding: var(--rel-spacing-space-xs) var(--rel-spacing-space-sm);\r\n line-height: var(--rel-lineHeights-sm);\r\n cursor: pointer;\r\n transition: background 0.15s ease, color 0.15s ease;\r\n user-select: none;\r\n }\r\n\r\n .rel-menu-item:hover {\r\n background: var(--rel-colors-gray-border);\r\n }\r\n\r\n .rel-menu-item:active {\r\n background: var(--rel-colors-gray-tertiary);\r\n }\r\n\r\n .rel-menu-item.active {\r\n background: var(--rel-colors-gray-tertiary);\r\n }\r\n\r\n .rel-menu-item.disabled {\r\n background-color: var(--rel-colors-gray-light);\r\n color: var(--rel-colors-gray-placeholder);\r\n cursor: not-allowed;\r\n }\r\n\r\n .rel-menu-item[data-focused=\"true\"] {\r\n border-top: var(--rel-borders-width-stroke-200) solid var(--rel-colors-gray-primary);\r\n border-bottom: var(--rel-borders-width-stroke-200) solid var(--rel-colors-gray-primary);\r\n }\r\n\r\n .menu-check-row {\r\n display: inline-flex;\r\n align-items: center;\r\n gap: var(--rel-spacing-space-2xs);\r\n width: 100%;\r\n }\r\n\r\n .menu-checkbox {\r\n width: 16px;\r\n height: 16px;\r\n cursor: pointer;\r\n }\r\n\r\n .menu-checkbox:disabled {\r\n cursor: not-allowed;\r\n }\r\n\r\n .menu-label {\r\n flex: 1 1 auto;\r\n }\r\n\r\n .chevron {\r\n font-size: var(--rel-fontSizes-lg);\r\n opacity: 0.75;\r\n transform: translateY(1px);\r\n }\r\n\r\n .rel-submenu {\r\n position: absolute;\r\n top: calc(-1 * var(--rel-spacing-space-3xs));\r\n left: calc(100% + var(--rel-spacing-space-2xs));\r\n min-width: 200px;\r\n background: var(--rel-colors-white);\r\n border-radius: var(--rel-borders-radius-border-radius-300);\r\n box-shadow: var(--rel-shadows-shadow-300);\r\n padding: var(--rel-spacing-space-3xs) 0;\r\n display: none;\r\n z-index: 20;\r\n }\r\n\r\n .rel-submenu.visible {\r\n display: block;\r\n }\r\n\r\n .rel-submenu .rel-menu-item {\r\n padding: var(--rel-spacing-space-xs) var(--rel-spacing-space-sm);\r\n }\r\n `;\r\n\r\n connectedCallback() {\r\n super.connectedCallback();\r\n document.addEventListener(\"click\", this.handleDocumentClick);\r\n }\r\n\r\n disconnectedCallback() {\r\n super.disconnectedCallback();\r\n document.removeEventListener(\"click\", this.handleDocumentClick);\r\n }\r\n\r\n private handleDocumentClick = (e: MouseEvent) => {\r\n const path = e.composedPath() as HTMLElement[];\r\n const hit = path.some((n) => n?.classList?.contains(\"rel-menu\"));\r\n if (!hit) {\r\n this.items.forEach((i) => (i.open = false));\r\n this.requestUpdate();\r\n }\r\n };\r\n\r\n private onItemEnter(item: MenuItem) {\r\n if (this.type === \"arrow\" && item.submenu?.length) {\r\n this.items.forEach((i) => {\r\n if (i !== item) i.open = false;\r\n });\r\n item.open = true;\r\n this.requestUpdate();\r\n }\r\n }\r\n\r\n private onItemLeave(_item: MenuItem) {\r\n // Keep open so user can move into submenu\r\n }\r\n\r\n private onItemClick(item: MenuItem, index: number, ev?: Event) {\r\n ev?.stopPropagation();\r\n if (item.disabled) return;\r\n\r\n this.focusedIndex = index;\r\n\r\n if (this.type === \"checkbox\") {\r\n item.checked = !item.checked;\r\n this.dispatchEvent(\r\n new CustomEvent(\"item-checked\", {\r\n detail: { item, checked: item.checked },\r\n bubbles: true,\r\n composed: true,\r\n })\r\n );\r\n this.requestUpdate();\r\n return;\r\n }\r\n\r\n if (this.type === \"arrow\" && item.submenu?.length) {\r\n const next = !item.open;\r\n this.items.forEach((i) => (i.open = false));\r\n item.open = next;\r\n this.requestUpdate();\r\n return;\r\n }\r\n\r\n // Default: set active\r\n this.items.forEach((i) => (i.active = false));\r\n item.active = true;\r\n this.dispatchEvent(\r\n new CustomEvent(\"item-selected\", {\r\n detail: { item },\r\n bubbles: true,\r\n composed: true,\r\n })\r\n );\r\n this.requestUpdate();\r\n }\r\n\r\n private onSubClick(parent: MenuItem, sub: MenuItem, ev?: Event) {\r\n ev?.stopPropagation();\r\n this.items.forEach((i) => {\r\n i.active = false;\r\n i.submenu?.forEach((s) => (s.active = false));\r\n });\r\n sub.active = true;\r\n parent.open = false;\r\n this.dispatchEvent(\r\n new CustomEvent(\"submenu-selected\", {\r\n detail: { parent, sub },\r\n bubbles: true,\r\n composed: true,\r\n })\r\n );\r\n this.requestUpdate();\r\n }\r\n\r\n private toggleCheckbox(item: MenuItem, ev: Event) {\r\n ev.stopPropagation();\r\n if (!item.disabled) {\r\n item.checked = !item.checked;\r\n this.dispatchEvent(\r\n new CustomEvent(\"item-checked\", {\r\n detail: { item, checked: item.checked },\r\n bubbles: true,\r\n composed: true,\r\n })\r\n );\r\n this.requestUpdate();\r\n }\r\n }\r\n\r\n private onKeydown(ev: KeyboardEvent) {\r\n const last = this.items.length - 1;\r\n\r\n if (ev.key === \"ArrowDown\") {\r\n this.focusedIndex = Math.min(last, this.focusedIndex + 1);\r\n ev.preventDefault();\r\n } else if (ev.key === \"ArrowUp\") {\r\n this.focusedIndex = Math.max(0, this.focusedIndex - 1);\r\n ev.preventDefault();\r\n } else if (ev.key === \"ArrowRight\") {\r\n const item = this.items[this.focusedIndex];\r\n if (this.type === \"arrow\" && item?.submenu?.length) {\r\n item.open = true;\r\n this.requestUpdate();\r\n }\r\n } else if (ev.key === \"ArrowLeft\" || ev.key === \"Escape\") {\r\n this.items.forEach((i) => (i.open = false));\r\n this.requestUpdate();\r\n } else if (ev.key === \"Enter\" || ev.key === \" \") {\r\n const item = this.items[this.focusedIndex];\r\n this.onItemClick(item, this.focusedIndex);\r\n ev.preventDefault();\r\n }\r\n }\r\n\r\n private renderMenuItem(item: MenuItem, index: number) {\r\n const isFocused = this.focusedIndex === index;\r\n\r\n return html`\r\n <div\r\n class=\"rel-menu-item ${item.active ? \"active\" : \"\"} ${item.disabled ? \"disabled\" : \"\"}\"\r\n role=\"menuitem\"\r\n ?data-focused=\"${isFocused}\"\r\n @mouseenter=\"${() => this.onItemEnter(item)}\"\r\n @mouseleave=\"${() => this.onItemLeave(item)}\"\r\n @click=\"${(e: Event) => this.onItemClick(item, index, e)}\">\r\n ${this.type === \"checkbox\"\r\n ? html`\r\n <div class=\"menu-check-row\">\r\n <input\r\n class=\"menu-checkbox\"\r\n type=\"checkbox\"\r\n .checked=\"${item.checked || false}\"\r\n ?disabled=\"${item.disabled}\"\r\n @click=\"${(e: Event) => this.toggleCheckbox(item, e)}\" />\r\n <span class=\"menu-label\">${item.label}</span>\r\n </div>\r\n `\r\n : html`\r\n <span class=\"menu-label\">${item.label}</span>\r\n ${this.type === \"arrow\" && item.submenu?.length\r\n ? html`<span class=\"chevron\">▸</span>`\r\n : \"\"}\r\n `}\r\n ${this.type === \"arrow\" && item.submenu?.length\r\n ? html`\r\n <div\r\n class=\"rel-submenu ${item.open ? \"visible\" : \"\"}\"\r\n @click=\"${(e: Event) => e.stopPropagation()}\">\r\n ${item.submenu.map(\r\n (sub) => html`\r\n <div\r\n class=\"rel-menu-item ${sub.active ? \"active\" : \"\"}\"\r\n role=\"menuitem\"\r\n @click=\"${(e: Event) => this.onSubClick(item, sub, e)}\">\r\n <span class=\"menu-label\">${sub.label}</span>\r\n </div>\r\n `\r\n )}\r\n </div>\r\n `\r\n : \"\"}\r\n </div>\r\n `;\r\n }\r\n\r\n render() {\r\n return html`\r\n <div\r\n class=\"rel-menu\"\r\n role=\"menu\"\r\n tabindex=\"0\"\r\n @keydown=\"${this.onKeydown}\"\r\n @click=\"${(e: Event) => e.stopPropagation()}\">\r\n ${this.items.map((item, index) => this.renderMenuItem(item, index))}\r\n </div>\r\n `;\r\n }\r\n}\r\n","import { LitElement, html, css } from \"lit\";\r\nimport { customElement, property } from \"lit/decorators.js\";\r\n\r\nexport type ProgressMode =\r\n | \"linear-determinate\"\r\n | \"linear-indeterminate\"\r\n | \"circular-determinate\"\r\n | \"circular-indeterminate\";\r\n\r\n@customElement(\"rel-progress\")\r\nexport class RelProgress extends LitElement {\r\n @property({ type: String, reflect: true })\r\n mode: ProgressMode = \"linear-determinate\";\r\n\r\n @property({ type: Number })\r\n value = 0;\r\n\r\n private radius = 15.9155;\r\n private circumference = 2 * Math.PI * this.radius;\r\n\r\n static styles = css`\r\n :host {\r\n display: block;\r\n font-family: var(--rel-fontFamilies-primary);\r\n }\r\n\r\n :host([mode*=\"circular\"]) {\r\n display: inline-block;\r\n }\r\n\r\n /* Linear */\r\n .linear-track {\r\n background: var(--rel-colors-gray-border);\r\n border-radius: var(--rel-borders-radius-border-radius-200);\r\n height: 6px;\r\n overflow: hidden;\r\n width: 100%;\r\n }\r\n\r\n .linear-bar {\r\n background: var(--rel-colors-black);\r\n height: 100%;\r\n transition: width 0.3s ease;\r\n }\r\n\r\n .linear-bar.indeterminate {\r\n width: 30%;\r\n animation: linear-indeterminate 1.5s infinite;\r\n }\r\n\r\n @keyframes linear-indeterminate {\r\n 0% {\r\n margin-left: -30%;\r\n }\r\n 50% {\r\n margin-left: 50%;\r\n }\r\n 100% {\r\n margin-left: 100%;\r\n }\r\n }\r\n\r\n /* Circular */\r\n .circular {\r\n display: inline-block;\r\n width: 48px;\r\n height: 48px;\r\n }\r\n\r\n .circular-svg {\r\n transform: rotate(-90deg);\r\n width: 100%;\r\n height: 100%;\r\n }\r\n\r\n .circular-bg {\r\n fill: none;\r\n stroke: var(--rel-colors-gray-border);\r\n stroke-width: 3;\r\n }\r\n\r\n .circular-progress {\r\n fill: none;\r\n stroke: var(--rel-colors-black);\r\n stroke-width: 3;\r\n stroke-linecap: round;\r\n transition: stroke-dashoffset 0.35s;\r\n }\r\n\r\n /* Spinner */\r\n .spinner {\r\n animation: rotate 2s linear infinite;\r\n }\r\n\r\n .spinner-path {\r\n stroke: var(--rel-colors-black);\r\n stroke-linecap: round;\r\n animation: dash 1.5s ease-in-out infinite;\r\n }\r\n\r\n @keyframes rotate {\r\n 100% {\r\n transform: rotate(360deg);\r\n }\r\n }\r\n\r\n @keyframes dash {\r\n 0% {\r\n stroke-dasharray: 1, 150;\r\n stroke-dashoffset: 0;\r\n }\r\n 50% {\r\n stroke-dasharray: 90, 150;\r\n stroke-dashoffset: -35;\r\n }\r\n 100% {\r\n stroke-dasharray: 90, 150;\r\n stroke-dashoffset: -124;\r\n }\r\n }\r\n `;\r\n\r\n private get safeValue() {\r\n return Math.min(100, Math.max(0, this.value));\r\n }\r\n\r\n private renderLinearDeterminate() {\r\n return html`\r\n <div class=\"linear-track\">\r\n <div class=\"linear-bar\" style=\"width: ${this.safeValue}%\"></div>\r\n </div>\r\n `;\r\n }\r\n\r\n private renderLinearIndeterminate() {\r\n return html`\r\n <div class=\"linear-track\">\r\n <div class=\"linear-bar indeterminate\"></div>\r\n </div>\r\n `;\r\n }\r\n\r\n private renderCircularDeterminate() {\r\n const offset =\r\n this.circumference - (this.safeValue / 100) * this.circumference;\r\n\r\n return html`\r\n <div class=\"circular\">\r\n <svg viewBox=\"0 0 36 36\" class=\"circular-svg\">\r\n <circle class=\"circular-bg\" cx=\"18\" cy=\"18\" r=\"${this.radius}\" />\r\n <circle\r\n class=\"circular-progress\"\r\n cx=\"18\"\r\n cy=\"18\"\r\n r=\"${this.radius}\"\r\n stroke-dasharray=\"${this.circumference}\"\r\n stroke-dashoffset=\"${offset}\"\r\n />\r\n </svg>\r\n </div>\r\n `;\r\n }\r\n\r\n private renderCircularIndeterminate() {\r\n return html`\r\n <div class=\"circular\">\r\n <svg viewBox=\"0 0 50 50\" class=\"spinner\">\r\n <circle\r\n class=\"spinner-path\"\r\n cx=\"25\"\r\n cy=\"25\"\r\n r=\"20\"\r\n fill=\"none\"\r\n stroke-width=\"4\"\r\n />\r\n </svg>\r\n </div>\r\n `;\r\n }\r\n\r\n render() {\r\n switch (this.mode) {\r\n case \"linear-indeterminate\":\r\n return this.renderLinearIndeterminate();\r\n case \"circular-determinate\":\r\n return this.renderCircularDeterminate();\r\n case \"circular-indeterminate\":\r\n return this.renderCircularIndeterminate();\r\n default:\r\n return this.renderLinearDeterminate();\r\n }\r\n }\r\n}\r\n","import { LitElement, html, css } from \"lit\";\r\nimport { customElement, property } from \"lit/decorators.js\";\r\n\r\nexport interface RadioOption {\r\n value: string;\r\n label: string;\r\n supportingText?: string;\r\n disabled?: boolean;\r\n error?: boolean;\r\n}\r\n\r\n@customElement(\"rel-radio\")\r\nexport class RelRadio extends LitElement {\r\n @property({ type: Array }) options: RadioOption[] = [];\r\n\r\n @property({ type: String }) name = \"radio-group\";\r\n\r\n @property({ type: String, reflect: true })\r\n selectedValue: string | null = null;\r\n\r\n @property({ type: Boolean })\r\n disabled = false;\r\n\r\n static styles = css`\r\n :host {\r\n display: block;\r\n font-family: var(--rel-fontFamilies-primary);\r\n }\r\n\r\n .rel-radio-group {\r\n display: flex;\r\n flex-direction: column;\r\n gap: var(--rel-spacing-space-xs);\r\n }\r\n\r\n .rel-radio-option {\r\n display: flex;\r\n flex-direction: column;\r\n gap: var(--rel-spacing-space-3xs);\r\n cursor: pointer;\r\n }\r\n\r\n .rel-radio-option.disabled {\r\n opacity: 0.6;\r\n cursor: not-allowed !important;\r\n }\r\n\r\n .radio-main {\r\n display: flex;\r\n align-items: center;\r\n gap: var(--rel-spacing-space-2xs);\r\n }\r\n\r\n input {\r\n position: absolute;\r\n opacity: 0;\r\n pointer-events: none;\r\n }\r\n\r\n .radio-custom {\r\n width: 20px;\r\n height: 20px;\r\n border: 2px solid var(--rel-colors-black);\r\n border-radius: 50%;\r\n position: relative;\r\n }\r\n\r\n input:checked + .radio-custom::after {\r\n content: \"\";\r\n position: absolute;\r\n inset: 4px;\r\n background: var(--rel-colors-black);\r\n border-radius: 50%;\r\n }\r\n\r\n .radio-label {\r\n font-size: var(--rel-fontSizes-sm);\r\n font-weight: var(--rel-fontWeights-medium);\r\n }\r\n\r\n .radio-supporting {\r\n font-size: var(--rel-fontSizes-xs);\r\n margin-left: 28px;\r\n }\r\n\r\n .error .radio-custom {\r\n border-color: var(--rel-colors-red-secondary);\r\n }\r\n\r\n .error input:checked + .radio-custom::after {\r\n background: var(--rel-colors-red-secondary);\r\n }\r\n `;\r\n\r\n private onChange(value: string) {\r\n if (this.disabled) return;\r\n\r\n this.selectedValue = value;\r\n this.dispatchEvent(\r\n new CustomEvent(\"changed\", {\r\n bubbles: true,\r\n composed: true,\r\n })\r\n );\r\n }\r\n\r\n private renderOption(option: RadioOption) {\r\n const isChecked = this.selectedValue === option.value;\r\n const isDisabled = this.disabled || option.disabled;\r\n\r\n const classes = [\r\n \"rel-radio-option\",\r\n isDisabled ? \"disabled\" : \"\",\r\n option.error ? \"error\" : \"\",\r\n ]\r\n .filter(Boolean)\r\n .join(\" \");\r\n\r\n return html`\r\n <label class=\"${classes}\">\r\n <div class=\"radio-main\">\r\n <input\r\n type=\"radio\"\r\n name=\"${this.name}\"\r\n .checked=\"${isChecked}\"\r\n ?disabled=\"${isDisabled}\"\r\n @change=\"${() => this.onChange(option.value)}\"\r\n />\r\n <span class=\"radio-custom\"></span>\r\n <span class=\"radio-label\">${option.label}</span>\r\n </div>\r\n\r\n ${option.supportingText\r\n ? html`<div class=\"radio-supporting\">${option.supportingText}</div>`\r\n : \"\"}\r\n </label>\r\n `;\r\n }\r\n\r\n render() {\r\n return html`\r\n <div class=\"rel-radio-group\">\r\n ${this.options.map((o) => this.renderOption(o))}\r\n </div>\r\n `;\r\n }\r\n}\r\n","import { LitElement, html, css } from \"lit\";\r\nimport { customElement, property } from \"lit/decorators.js\";\r\n\r\nexport type SegmentSize = \"small\" | \"medium\";\r\nexport type SegmentAlign = \"left\" | \"middle\" | \"right\";\r\n\r\nexport interface SegmentOption {\r\n label: string;\r\n value: string;\r\n disabled?: boolean;\r\n}\r\n\r\n@customElement(\"rel-segmented-button\")\r\nexport class RelSegmentedButton extends LitElement {\r\n @property({ type: Array }) options: SegmentOption[] = [];\r\n\r\n @property({ type: String }) active: string = \"\";\r\n\r\n @property({ type: String }) size: SegmentSize = \"medium\";\r\n\r\n @property({ type: String }) align: SegmentAlign = \"left\";\r\n\r\n static styles = css`\r\n :host {\r\n display: inline-block;\r\n font-family: var(--rel-fontFamilies-primary);\r\n }\r\n\r\n .segmented-buttons {\r\n display: inline-flex;\r\n border: 2px solid var(--rel-colors-gray-border);\r\n border-radius: var(--rel-borders-radius-border-radius-300);\r\n overflow: hidden;\r\n }\r\n\r\n /* Alignment */\r\n .align-left {\r\n justify-content: flex-start;\r\n }\r\n\r\n .align-middle {\r\n justify-content: center;\r\n }\r\n\r\n .align-right {\r\n justify-content: flex-end;\r\n }\r\n\r\n /* Base segment styling */\r\n .segment {\r\n background: var(--rel-colors-white);\r\n border: none;\r\n cursor: pointer;\r\n font-weight: var(--rel-fontWeights-medium);\r\n border-right: 2px solid var(--rel-colors-gray-border);\r\n transition: all 0.2s ease-in-out;\r\n color: var(--rel-colors-gray-heading);\r\n font-family: var(--rel-fontFamilies-primary);\r\n outline: none;\r\n }\r\n\r\n .segment:last-child {\r\n border-right: none;\r\n }\r\n\r\n /* Hover */\r\n .segment:hover:not(.disabled):not(.active) {\r\n background: var(--rel-colors-gray-bg);\r\n }\r\n\r\n /* Active */\r\n .segment.active {\r\n background: var(--rel-colors-black);\r\n color: var(--rel-colors-white);\r\n }\r\n\r\n .segment.active:hover:not(.disabled) {\r\n background: var(--rel-colors-black);\r\n color: var(--rel-colors-white);\r\n }\r\n\r\n /* Disabled */\r\n .segment.disabled,\r\n .segment:disabled {\r\n cursor: not-allowed;\r\n opacity: 0.5;\r\n background: var(--rel-colors-gray-bg);\r\n color: var(--rel-colors-gray-placeholder);\r\n pointer-events: none;\r\n }\r\n\r\n /* Sizes */\r\n .segmented-buttons.small .segment {\r\n padding: var(--rel-spacing-space-3xs) var(--rel-spacing-space-xs);\r\n font-size: var(--rel-fontSizes-xs);\r\n }\r\n\r\n .segmented-buttons.medium .segment {\r\n padding: var(--rel-spacing-space-2xs) var(--rel-spacing-space-sm);\r\n font-size: var(--rel-fontSizes-sm);\r\n }\r\n `;\r\n\r\n private setActive(option: SegmentOption) {\r\n if (!option.disabled) {\r\n this.active = option.value;\r\n this.dispatchEvent(\r\n new CustomEvent(\"changed\", {\r\n detail: { value: option.value },\r\n bubbles: true,\r\n composed: true,\r\n })\r\n );\r\n }\r\n }\r\n\r\n private renderSegment(option: SegmentOption) {\r\n const isActive = this.active === option.value;\r\n const classes = [\r\n \"segment\",\r\n isActive ? \"active\" : \"\",\r\n option.disabled ? \"disabled\" : \"\",\r\n ]\r\n .filter(Boolean)\r\n .join(\" \");\r\n\r\n return html`\r\n <button\r\n class=\"${classes}\"\r\n ?disabled=\"${option.disabled}\"\r\n @click=\"${() => this.setActive(option)}\">\r\n ${option.label}\r\n </button>\r\n `;\r\n }\r\n\r\n render() {\r\n const containerClasses = [\r\n \"segmented-buttons\",\r\n this.size,\r\n `align-${this.align}`,\r\n ].join(\" \");\r\n\r\n return html`\r\n <div class=\"${containerClasses}\">\r\n ${this.options.map((option) => this.renderSegment(option))}\r\n </div>\r\n `;\r\n }\r\n}\r\n","import { LitElement, html, css } from \"lit\";\r\nimport { customElement, property } from \"lit/decorators.js\";\r\n\r\nexport type SelectState = \"default\" | \"error\" | \"disabled\";\r\nexport type SelectSize = \"small\" | \"medium\" | \"large\";\r\nexport type SelectBorder = \"rounded\" | \"sharp\";\r\n\r\n@customElement(\"rel-select\")\r\nexport class RelSelect extends LitElement {\r\n @property({ type: String }) label: string = \"\";\r\n\r\n @property({ type: Array }) options: string[] = [];\r\n\r\n @property({ type: String }) selected: string = \"\";\r\n\r\n @property({ type: String }) state: SelectState = \"default\";\r\n\r\n @property({ type: String }) supportingText: string = \"\";\r\n\r\n @property({ type: String }) size: SelectSize = \"medium\";\r\n\r\n @property({ type: String }) border: SelectBorder = \"rounded\";\r\n\r\n @property({ type: String }) leftIcon: string = \"\";\r\n\r\n @property({ type: String }) rightIcon: string = \"\";\r\n\r\n static styles = css`\r\n :host {\r\n display: block;\r\n font-family: var(--rel-fontFamilies-primary);\r\n width: 100%;\r\n }\r\n\r\n .select-wrapper {\r\n display: flex;\r\n flex-direction: column;\r\n width: 100%;\r\n }\r\n\r\n .select-label {\r\n font-size: var(--rel-fontSizes-sm);\r\n margin-bottom: var(--rel-spacing-space-3xs);\r\n font-weight: var(--rel-fontWeights-medium);\r\n color: var(--rel-colors-gray-heading);\r\n }\r\n\r\n .select-container {\r\n position: relative;\r\n display: flex;\r\n align-items: center;\r\n }\r\n\r\n .icon {\r\n position: absolute;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n pointer-events: none;\r\n top: 50%;\r\n transform: translateY(-50%);\r\n font-size: 16px;\r\n color: var(--rel-colors-gray-primary);\r\n }\r\n\r\n .icon.left {\r\n left: 12px;\r\n }\r\n\r\n .icon.right {\r\n right: 36px;\r\n }\r\n\r\n select {\r\n flex: 1;\r\n appearance: none;\r\n border: 1px solid var(--rel-colors-gray-border);\r\n background-color: var(--rel-colors-white);\r\n background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%23666' d='M6 9L1 4h10z'/%3E%3C/svg%3E\");\r\n background-repeat: no-repeat;\r\n background-position: right 12px center;\r\n font-family: var(--rel-fontFamilies-primary);\r\n cursor: pointer;\r\n transition: all 0.2s ease-in-out;\r\n color: var(--rel-colors-gray-heading);\r\n width: 100%;\r\n outline: none;\r\n }\r\n\r\n select:hover:not(:disabled) {\r\n border-color: var(--rel-colors-gray-primary);\r\n }\r\n\r\n select:focus:not(:disabled) {\r\n border-color: var(--rel-colors-black);\r\n box-shadow: 0 0 0 3px rgba(0, 0, 0, 0.1);\r\n }\r\n\r\n /* States */\r\n select.error {\r\n border-color: var(--rel-colors-red-secondary);\r\n }\r\n\r\n select.error:focus {\r\n box-shadow: 0 0 0 3px rgba(213, 0, 0, 0.1);\r\n }\r\n\r\n select:disabled {\r\n background-color: var(--rel-colors-gray-bg);\r\n border-color: var(--rel-colors-gray-border);\r\n color: var(--rel-colors-gray-placeholder);\r\n cursor: not-allowed;\r\n opacity: 0.6;\r\n }\r\n\r\n /* Sizes */\r\n .select-small select {\r\n font-size: var(--rel-fontSizes-xs);\r\n padding: var(--rel-spacing-space-3xs) var(--rel-spacing-space-lg)\r\n var(--rel-spacing-space-3xs) var(--rel-spacing-space-2xs);\r\n }\r\n\r\n .select-medium select {\r\n font-size: var(--rel-fontSizes-sm);\r\n padding: var(--rel-spacing-space-2xs) var(--rel-spacing-space-xl)\r\n var(--rel-spacing-space-2xs) var(--rel-spacing-space-xs);\r\n }\r\n\r\n .select-large select {\r\n font-size: var(--rel-fontSizes-md);\r\n padding: var(--rel-spacing-space-xs) var(--rel-spacing-space-2xl)\r\n var(--rel-spacing-space-xs) var(--rel-spacing-space-sm);\r\n }\r\n\r\n /* With icons */\r\n .with-left-icon.select-small select {\r\n padding-left: var(--rel-spacing-space-xl);\r\n }\r\n\r\n .with-left-icon.select-medium select {\r\n padding-left: var(--rel-spacing-space-2xl);\r\n }\r\n\r\n .with-left-icon.select-large select {\r\n padding-left: var(--rel-spacing-space-3xl);\r\n }\r\n\r\n .with-right-icon.select-small select {\r\n padding-right: var(--rel-spacing-space-2xl);\r\n }\r\n\r\n .with-right-icon.select-medium select {\r\n padding-right: var(--rel-spacing-space-3xl);\r\n }\r\n\r\n .with-right-icon.select-large select {\r\n padding-right: 4rem;\r\n }\r\n\r\n /* Border */\r\n .border-rounded select {\r\n border-radius: var(--rel-borders-radius-border-radius-300);\r\n }\r\n\r\n .border-sharp select {\r\n border-radius: 0;\r\n }\r\n\r\n /* Supporting text */\r\n .supporting-text {\r\n font-size: var(--rel-fontSizes-xs);\r\n margin-top: var(--rel-spacing-space-3xs);\r\n color: var(--rel-colors-gray-placeholder);\r\n }\r\n\r\n .error-text {\r\n color: var(--rel-colors-red-secondary);\r\n }\r\n `;\r\n\r\n private onChange(event: Event) {\r\n const value = (event.target as HTMLSelectElement).value;\r\n this.selected = value;\r\n this.dispatchEvent(\r\n new CustomEvent(\"changed\", {\r\n detail: { value },\r\n bubbles: true,\r\n composed: true,\r\n })\r\n );\r\n }\r\n\r\n render() {\r\n const containerClasses = [\r\n \"select-container\",\r\n this.leftIcon ? \"with-left-icon\" : \"\",\r\n this.rightIcon ? \"with-right-icon\" : \"\",\r\n `select-${this.size}`,\r\n ]\r\n .filter(Boolean)\r\n .join(\" \");\r\n\r\n const wrapperClasses = [\r\n \"select-wrapper\",\r\n `select-${this.state}`,\r\n `border-${this.border}`,\r\n ].join(\" \");\r\n\r\n const selectClasses = [this.state === \"error\" ? \"error\" : \"\"]\r\n .filter(Boolean)\r\n .join(\" \");\r\n\r\n const isDisabled = this.state === \"disabled\";\r\n\r\n return html`\r\n <div class=\"${wrapperClasses}\">\r\n ${this.label\r\n ? html`<label class=\"select-label\">${this.label}</label>`\r\n : \"\"}\r\n\r\n <div class=\"${containerClasses}\">\r\n ${this.leftIcon\r\n ? html`<span class=\"icon left\">${this.leftIcon}</span>`\r\n : \"\"}\r\n\r\n <select\r\n class=\"${selectClasses}\"\r\n ?disabled=\"${isDisabled}\"\r\n @change=\"${this.onChange}\"\r\n .value=\"${this.selected}\">\r\n <option value=\"\" disabled ?selected=\"${!this.selected}\" hidden>\r\n Select Option\r\n </option>\r\n ${this.options.map(\r\n (option) => html`\r\n <option value=\"${option}\" ?selected=\"${option === this.selected}\">\r\n ${option}\r\n </option>\r\n `\r\n )}\r\n </select>\r\n\r\n ${this.rightIcon\r\n ? html`<span class=\"icon right\">${this.rightIcon}</span>`\r\n : \"\"}\r\n </div>\r\n\r\n ${this.supportingText\r\n ? html`\r\n <span\r\n class=\"supporting-text ${this.state === \"error\"\r\n ? \"error-text\"\r\n : \"\"}\">\r\n ${this.supportingText}\r\n </span>\r\n `\r\n : \"\"}\r\n </div>\r\n `;\r\n }\r\n}\r\n","import { LitElement, html, css } from \"lit\";\r\nimport { customElement, property, state } from \"lit/decorators.js\";\r\n\r\nexport type SliderType = \"continuous\" | \"discrete\";\r\nexport type TrackStyle = \"solid\" | \"dotted\";\r\n\r\n@customElement(\"rel-slider\")\r\nexport class RelSlider extends LitElement {\r\n @property({ type: String }) type: SliderType = \"continuous\";\r\n\r\n @property({ type: Number }) min: number = 0;\r\n\r\n @property({ type: Number }) max: number = 100;\r\n\r\n @property({ type: Number }) step: number = 1;\r\n\r\n @property({ type: Boolean }) disabled: boolean = false;\r\n\r\n @property({ type: String }) track: TrackStyle = \"solid\";\r\n\r\n @property({ type: Boolean }) showTickLabels: boolean = false;\r\n\r\n @property({ type: Boolean }) showBubble: boolean = true; \r\n\r\n @property({ type: Number }) value: number = 0;\r\n\r\n @state() private ticks: number[] = [];\r\n\r\n static styles = css`\r\n :host {\r\n --track-height: 5px;\r\n --thumb-size: 10px;\r\n --thumb-stroke: 7px;\r\n --thumb-halo-color: rgba(224, 222, 222, 0.8);\r\n --tick-size: 4px;\r\n --shadow: 0 2px 4px rgba(0, 0, 0, 0.25);\r\n --halo: 0 2px 0 #e9e9e9, 0 6px 10px rgba(0, 0, 0, 0.07);\r\n --marker-width: 24px;\r\n --marker-height: 28px;\r\n\r\n display: block;\r\n font-family: var(--rel-fontFamilies-primary);\r\n }\r\n\r\n .rel-slider {\r\n position: relative;\r\n width: 100%;\r\n height: 60px;\r\n user-select: none;\r\n }\r\n\r\n /* Track */\r\n .track {\r\n position: absolute;\r\n top: 50%;\r\n left: 0;\r\n width: 100%;\r\n height: var(--track-height);\r\n background: var(--rel-colors-gray-border);\r\n border-radius: 2px;\r\n transform: translateY(-50%);\r\n pointer-events: none;\r\n }\r\n\r\n .track-active {\r\n position: absolute;\r\n top: 50%;\r\n left: 0;\r\n height: var(--track-height);\r\n background: var(--rel-colors-black);\r\n border-radius: 2px;\r\n transform: translateY(-50%);\r\n pointer-events: none;\r\n }\r\n\r\n .track-active.dotted {\r\n background: radial-gradient(\r\n circle,\r\n var(--rel-colors-white) 0 1px,\r\n transparent 1px\r\n )\r\n center/12px 4px repeat-x,\r\n var(--rel-colors-black);\r\n }\r\n\r\n /* Input */\r\n .slider-input {\r\n -webkit-appearance: none;\r\n appearance: none;\r\n position: absolute;\r\n top: 0;\r\n width: 100%;\r\n left: 0;\r\n height: 100%;\r\n background: transparent;\r\n outline: none;\r\n cursor: pointer;\r\n z-index: 2;\r\n margin: 0;\r\n padding: 0;\r\n }\r\n\r\n .slider-input::-webkit-slider-runnable-track {\r\n background: transparent;\r\n height: 100%;\r\n border: none;\r\n }\r\n\r\n .slider-input::-moz-range-track {\r\n background: transparent;\r\n height: 100%;\r\n border: none;\r\n }\r\n\r\n /* Hide native thumb */\r\n .slider-input::-webkit-slider-thumb {\r\n -webkit-appearance: none;\r\n appearance: none;\r\n width: 1px;\r\n height: 1px;\r\n background: transparent;\r\n border: none;\r\n cursor: pointer;\r\n }\r\n\r\n .slider-input::-moz-range-thumb {\r\n width: 1px;\r\n height: 1px;\r\n background: transparent;\r\n border: none;\r\n cursor: pointer;\r\n }\r\n\r\n /* Custom Thumb Container */\r\n .thumb-container {\r\n position: absolute;\r\n left: 0;\r\n top: 23.5%;\r\n transform: translate(-50%, -50%);\r\n pointer-events: none;\r\n z-index: 5;\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n gap: 0;\r\n }\r\n\r\n /* Value Marker */\r\n .value-marker {\r\n width: var(--marker-width);\r\n height: var(--marker-height);\r\n margin-bottom: 4px;\r\n }\r\n\r\n .value-marker svg {\r\n width: 100%;\r\n height: 100%;\r\n display: block;\r\n }\r\n\r\n /* Custom Thumb */\r\n .custom-thumb {\r\n width: var(--thumb-size);\r\n height: var(--thumb-size);\r\n background: var(--rel-colors-black);\r\n border-radius: 50%;\r\n transition: box-shadow 0.15s ease;\r\n }\r\n\r\n .slider-input:active ~ .thumb-container .custom-thumb {\r\n box-shadow: 0 0 0 var(--thumb-stroke) var(--thumb-halo-color),\r\n var(--shadow), var(--halo);\r\n }\r\n\r\n /* Ticks */\r\n .ticks {\r\n position: absolute;\r\n top: 50%;\r\n left: 0;\r\n width: 100%;\r\n transform: translateY(-50%);\r\n pointer-events: none;\r\n }\r\n\r\n .tick {\r\n position: absolute;\r\n width: var(--tick-size);\r\n height: var(--tick-size);\r\n background: var(--rel-colors-gray-primary);\r\n border-radius: 50%;\r\n transform: translate(-50%, -50%);\r\n transition: background 0.2s;\r\n z-index: 3;\r\n }\r\n\r\n .tick.active {\r\n background: var(--rel-colors-white);\r\n }\r\n\r\n /* Tick labels */\r\n .tick-labels {\r\n position: absolute;\r\n top: calc(50% + var(--tick-size) + 6px);\r\n left: 0;\r\n width: 100%;\r\n font-size: var(--rel-fontSizes-xs);\r\n color: var(--rel-colors-gray-heading);\r\n pointer-events: none;\r\n }\r\n\r\n .tick-label {\r\n position: absolute;\r\n transform: translateX(-50%);\r\n }\r\n\r\n /* Disabled State */\r\n .rel-slider.disabled .track {\r\n background: var(--rel-colors-gray-primary);\r\n }\r\n\r\n .rel-slider.disabled .track-active {\r\n background: var(--rel-colors-gray-placeholder);\r\n }\r\n\r\n .rel-slider.disabled .track-active.dotted {\r\n background: radial-gradient(\r\n circle,\r\n #eaeaea 0 1px,\r\n transparent 1px\r\n )\r\n center/12px 4px repeat-x,\r\n var(--rel-colors-gray-placeholder);\r\n }\r\n\r\n .rel-slider.disabled .tick {\r\n background: var(--rel-colors-gray-placeholder);\r\n }\r\n\r\n .rel-slider.disabled .tick-label {\r\n color: var(--rel-colors-gray-placeholder);\r\n }\r\n\r\n .rel-slider.disabled .slider-input {\r\n cursor: not-allowed;\r\n }\r\n\r\n .rel-slider.disabled .custom-thumb {\r\n background: var(--rel-colors-gray-placeholder);\r\n box-shadow: 0 0 0 var(--thumb-stroke) #f5f5f5;\r\n }\r\n\r\n .rel-slider.disabled .value-marker svg path {\r\n fill: var(--rel-colors-gray-placeholder);\r\n }\r\n `;\r\n\r\n connectedCallback() {\r\n super.connectedCallback();\r\n this.setupTicks();\r\n }\r\n\r\n updated(changedProperties: Map<string, any>) {\r\n if (\r\n changedProperties.has(\"type\") ||\r\n changedProperties.has(\"min\") ||\r\n changedProperties.has(\"max\") ||\r\n changedProperties.has(\"step\")\r\n ) {\r\n this.setupTicks();\r\n }\r\n if (changedProperties.has(\"value\")) {\r\n this.updateActiveWidth();\r\n }\r\n }\r\n\r\n private get percentage(): number {\r\n if (this.max === this.min) return 0;\r\n return ((this.value - this.min) / (this.max - this.min)) * 100;\r\n }\r\n\r\n private setupTicks() {\r\n if (this.type !== \"discrete\") {\r\n this.ticks = [];\r\n return;\r\n }\r\n\r\n const step = Math.max(1, this.step);\r\n const ticks: number[] = [];\r\n for (let v = this.min; v <= this.max; v += step) {\r\n ticks.push(v);\r\n }\r\n if (ticks[ticks.length - 1] !== this.max) {\r\n ticks.push(this.max);\r\n }\r\n this.ticks = ticks;\r\n }\r\n\r\n private getTickLeftPct(tick: number): number {\r\n const pct = ((tick - this.min) / (this.max - this.min)) * 100;\r\n return Math.round(pct * 1000) / 1000;\r\n }\r\n\r\n private isTickActive(tick: number): boolean {\r\n return tick <= this.value;\r\n }\r\n\r\n private onInput(ev: Event) {\r\n const el = ev.target as HTMLInputElement;\r\n let next = Number(el.value);\r\n\r\n if (this.type === \"discrete\") {\r\n const snapped =\r\n Math.round((next - this.min) / this.step) * this.step + this.min;\r\n next = Math.min(this.max, Math.max(this.min, snapped));\r\n el.value = String(next);\r\n }\r\n\r\n this.value = next;\r\n this.updateActiveWidth();\r\n this.dispatchEvent(\r\n new CustomEvent(\"valueChange\", {\r\n detail: { value: this.value },\r\n bubbles: true,\r\n composed: true,\r\n })\r\n );\r\n }\r\n\r\n private updateActiveWidth() {\r\n const activeEl = this.shadowRoot?.querySelector(\".track-active\") as HTMLDivElement;\r\n if (activeEl) {\r\n if (this.type === \"discrete\") {\r\n const stepPercent = (this.step / (this.max - this.min)) * 100;\r\n const snappedPct = Math.round(this.percentage / stepPercent) * stepPercent;\r\n activeEl.style.width = `${snappedPct}%`;\r\n } else {\r\n activeEl.style.width = `${this.percentage}%`;\r\n }\r\n }\r\n }\r\n\r\n private renderThumbContainer() {\r\n return html`\r\n <div class=\"thumb-container\" style=\"left: ${this.percentage}%\">\r\n ${this.showBubble ? html`\r\n <div class=\"value-marker\">\r\n <svg viewBox=\"0 0 24 32\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M12 0C18.6274 0 24 5.37258 24 12C24 21 12 32 12 32C12 32 0 21 0 12C0 5.37258 5.37258 0 12 0Z\"\r\n fill=\"black\" />\r\n <text\r\n x=\"12\"\r\n y=\"16\"\r\n text-anchor=\"middle\"\r\n fill=\"white\"\r\n font-size=\"12\"\r\n font-family=\"Poppins\"\r\n font-weight=\"600\">\r\n ${this.value}\r\n </text>\r\n </svg>\r\n </div>\r\n ` : \"\"}\r\n <div class=\"custom-thumb\"></div>\r\n </div>\r\n `;\r\n }\r\n\r\n private renderTicks() {\r\n if (this.type !== \"discrete\") return \"\";\r\n\r\n return html`\r\n <div class=\"ticks\">\r\n ${this.ticks.map(\r\n (tick) => html`\r\n <div\r\n class=\"tick ${this.isTickActive(tick) ? \"active\" : \"\"}\"\r\n style=\"left: ${this.getTickLeftPct(tick)}%\"></div>\r\n `\r\n )}\r\n </div>\r\n `;\r\n }\r\n\r\n private renderTickLabels() {\r\n if (this.type !== \"discrete\" || !this.showTickLabels) return \"\";\r\n\r\n return html`\r\n <div class=\"tick-labels\">\r\n ${this.ticks.map(\r\n (tick) => html`\r\n <div\r\n class=\"tick-label\"\r\n style=\"left: ${this.getTickLeftPct(tick)}%\">\r\n ${tick}\r\n </div>\r\n `\r\n )}\r\n </div>\r\n `;\r\n }\r\n\r\n render() {\r\n const sliderClasses = [\r\n \"rel-slider\",\r\n this.disabled ? \"disabled\" : \"\",\r\n this.type === \"discrete\" ? \"has-ticks\" : \"\",\r\n ]\r\n .filter(Boolean)\r\n .join(\" \");\r\n\r\n const trackActiveClasses = [\r\n \"track-active\",\r\n this.track === \"dotted\" ? \"dotted\" : \"\",\r\n ]\r\n .filter(Boolean)\r\n .join(\" \");\r\n\r\n return html`\r\n <div class=\"${sliderClasses}\">\r\n <div class=\"track\"></div>\r\n <div class=\"${trackActiveClasses}\"></div>\r\n\r\n <input\r\n class=\"slider-input\"\r\n type=\"range\"\r\n .min=\"${String(this.min)}\"\r\n .max=\"${String(this.max)}\"\r\n .step=\"${this.type === 'discrete' ? String(this.step) : '1'}\"\r\n .value=\"${String(this.value)}\"\r\n ?disabled=\"${this.disabled}\"\r\n @input=\"${this.onInput}\" />\r\n\r\n ${this.renderThumbContainer()}\r\n ${this.renderTicks()}\r\n ${this.renderTickLabels()}\r\n </div>\r\n `;\r\n }\r\n}\r\n","import { LitElement, html, css } from \"lit\";\r\nimport { customElement, property, state } from \"lit/decorators.js\";\r\n\r\nexport type SnackbarLines = \"single\" | \"double\";\r\n\r\n@customElement(\"rel-snackbar\")\r\nexport class RelSnackbar extends LitElement {\r\n @property({ type: String }) message: string = \"This is a snackbar message\";\r\n\r\n @property({ type: String }) action?: string;\r\n\r\n @property({ type: Boolean }) longerAction: boolean = false;\r\n\r\n @property({ type: Boolean }) iconClose: boolean = true;\r\n\r\n @property({ type: String }) lines: SnackbarLines = \"single\";\r\n\r\n @property({ type: Number }) duration: number = 4000;\r\n\r\n @state() private visible: boolean = true;\r\n\r\n private timeout: number | null = null;\r\n\r\n static styles = css`\r\n :host {\r\n display: block;\r\n font-family: var(--rel-fontFamilies-primary);\r\n }\r\n\r\n .snackbar {\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n min-width: 280px;\r\n max-width: 500px;\r\n margin: 0;\r\n padding: 12px 16px;\r\n border-radius: var(--rel-borders-radius-border-radius-200);\r\n background-color: var(--rel-colors-black);\r\n color: var(--rel-colors-white);\r\n font-family: var(--rel-fontFamilies-primary);\r\n box-shadow: var(--rel-shadows-shadow-300);\r\n animation: slide-up 0.3s ease-out;\r\n }\r\n\r\n .snackbar.two-line {\r\n flex-direction: column;\r\n align-items: stretch;\r\n }\r\n\r\n .snackbar.hidden {\r\n display: none;\r\n }\r\n\r\n .snackbar-message {\r\n font-size: var(--rel-fontSizes-sm);\r\n line-height: var(--rel-lineHeights-lineheight-200);\r\n margin-right: 12px;\r\n flex: 1;\r\n }\r\n\r\n .snackbar.two-line .snackbar-message {\r\n margin-right: 0;\r\n margin-bottom: 8px;\r\n flex: none;\r\n }\r\n\r\n .snackbar-actions {\r\n display: flex;\r\n align-items: center;\r\n gap: var(--rel-spacing-space-2xs);\r\n flex-shrink: 0;\r\n align-self: center;\r\n }\r\n\r\n .snackbar.two-line .snackbar-actions {\r\n align-self: flex-end;\r\n }\r\n\r\n .snackbar-action {\r\n background: none;\r\n border: none;\r\n color: var(--rel-colors-green-secondary);\r\n font-weight: var(--rel-fontWeights-semibold);\r\n font-size: var(--rel-fontSizes-sm);\r\n font-family: var(--rel-fontFamilies-primary);\r\n cursor: pointer;\r\n padding: 0;\r\n transition: opacity 0.2s ease;\r\n }\r\n\r\n .snackbar-action:hover {\r\n opacity: 0.8;\r\n }\r\n\r\n .snackbar-action:active {\r\n opacity: 0.6;\r\n }\r\n\r\n .snackbar-close {\r\n background: none;\r\n border: none;\r\n color: var(--rel-colors-white);\r\n cursor: pointer;\r\n font-size: 16px;\r\n padding: 0;\r\n width: 20px;\r\n height: 20px;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n transition: opacity 0.2s ease;\r\n }\r\n\r\n .snackbar-close:hover {\r\n opacity: 0.8;\r\n }\r\n\r\n .snackbar-close:active {\r\n opacity: 0.6;\r\n }\r\n\r\n @keyframes slide-up {\r\n from {\r\n transform: translateY(50px);\r\n opacity: 0;\r\n }\r\n to {\r\n transform: translateY(0);\r\n opacity: 1;\r\n }\r\n }\r\n `;\r\n\r\n connectedCallback() {\r\n super.connectedCallback();\r\n this.setAutoDismiss();\r\n }\r\n\r\n updated(changed: Map<string, unknown>) {\r\n if (changed.has(\"duration\") || changed.has(\"longerAction\")) {\r\n this.setAutoDismiss();\r\n }\r\n }\r\n\r\n disconnectedCallback() {\r\n super.disconnectedCallback();\r\n this.clearTimeout();\r\n }\r\n\r\n private setAutoDismiss() {\r\n if (this.duration > 0) {\r\n this.clearTimeout();\r\n const delay = this.longerAction ? this.duration * 2 : this.duration;\r\n this.timeout = window.setTimeout(() => this.dismiss(), delay);\r\n }\r\n }\r\n\r\n private clearTimeout() {\r\n if (this.timeout !== null) {\r\n window.clearTimeout(this.timeout);\r\n this.timeout = null;\r\n }\r\n }\r\n\r\n private onActionClick() {\r\n this.dispatchEvent(\r\n new CustomEvent(\"actionClick\", {\r\n bubbles: true,\r\n composed: true,\r\n })\r\n );\r\n this.dismiss();\r\n }\r\n\r\n private dismiss() {\r\n this.visible = false;\r\n this.dispatchEvent(\r\n new CustomEvent(\"close\", {\r\n bubbles: true,\r\n composed: true,\r\n })\r\n );\r\n }\r\n\r\n render() {\r\n const snackbarClasses = [\r\n \"snackbar\",\r\n this.lines === \"double\" ? \"two-line\" : \"\",\r\n !this.visible ? \"hidden\" : \"\",\r\n ]\r\n .filter(Boolean)\r\n .join(\" \");\r\n\r\n return html`\r\n <div class=\"${snackbarClasses}\">\r\n <div class=\"snackbar-message\">${this.message}</div>\r\n\r\n <div class=\"snackbar-actions\">\r\n ${this.action\r\n ? html`\r\n <button class=\"snackbar-action\" @click=\"${this.onActionClick}\">\r\n ${this.action}\r\n </button>\r\n `\r\n : \"\"}\r\n ${this.iconClose\r\n ? html`\r\n <button class=\"snackbar-close\" @click=\"${this.dismiss}\">\r\n ✖\r\n </button>\r\n `\r\n : \"\"}\r\n </div>\r\n </div>\r\n `;\r\n }\r\n}\r\n","import { LitElement, html, css } from \"lit\";\r\nimport { customElement, property } from \"lit/decorators.js\";\r\n\r\nexport type StepStatus = \"done\" | \"progress\" | \"disabled\";\r\nexport type TextAlign = \"right\" | \"below\";\r\nexport type Orientation = \"horizontal\" | \"vertical\";\r\nexport type StepperSize = \"small\" | \"large\";\r\n\r\nexport interface Step {\r\n title: string;\r\n status: StepStatus;\r\n}\r\n\r\n@customElement(\"rel-stepper\")\r\nexport class RelStepper extends LitElement {\r\n @property({ type: Array }) steps: Step[] = [];\r\n\r\n @property({ type: String }) textAlign: TextAlign = \"below\";\r\n\r\n @property({ type: String }) orientation: Orientation = \"horizontal\";\r\n\r\n @property({ type: String }) size: StepperSize = \"large\";\r\n\r\n static styles = css`\r\n :host {\r\n display: block;\r\n font-family: var(--rel-fontFamilies-primary);\r\n }\r\n\r\n /********************************************\r\n * Base Stepper Styles\r\n ********************************************/\r\n .rel-stepper {\r\n display: flex;\r\n font-family: var(--rel-fontFamilies-primary);\r\n width: 100%;\r\n position: relative;\r\n }\r\n\r\n /* Orientation */\r\n .rel-stepper.horizontal {\r\n flex-direction: row;\r\n align-items: flex-start;\r\n justify-content: center;\r\n }\r\n\r\n .rel-stepper.vertical.text-below {\r\n flex-direction: column;\r\n align-items: center;\r\n justify-content: start;\r\n }\r\n\r\n .rel-stepper.vertical.text-right {\r\n flex-direction: column;\r\n align-items: flex-start;\r\n justify-content: start;\r\n }\r\n\r\n /********************************************\r\n * Step Container\r\n ********************************************/\r\n .rel-step {\r\n display: flex;\r\n position: relative;\r\n }\r\n\r\n .rel-stepper.horizontal.text-below .rel-step {\r\n flex-direction: column;\r\n align-items: center;\r\n text-align: center;\r\n position: relative;\r\n flex: 0;\r\n }\r\n\r\n .rel-stepper.horizontal.text-right .rel-step {\r\n flex-direction: row;\r\n align-items: center;\r\n position: relative;\r\n flex: 0;\r\n gap: var(--rel-spacing-space-2xs);\r\n }\r\n\r\n /* Vertical layout variants */\r\n .rel-stepper.vertical.text-below .rel-step {\r\n flex-direction: column;\r\n align-items: center;\r\n justify-content: start;\r\n position: relative;\r\n }\r\n\r\n .rel-stepper.vertical.text-right .rel-step {\r\n flex-direction: row;\r\n align-items: flex-start;\r\n justify-content: center;\r\n position: relative;\r\n gap: var(--rel-spacing-space-2xs);\r\n }\r\n\r\n /* Wrapper for indicator and connector */\r\n .indicator-wrapper {\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n position: relative;\r\n }\r\n\r\n /* Wrapper for indicator and label (text-below only) */\r\n .step-content {\r\n display: flex;\r\n align-items: center;\r\n gap: var(--rel-spacing-space-2xs);\r\n }\r\n\r\n .text-below-content {\r\n flex-direction: column;\r\n }\r\n\r\n .text-right-content {\r\n flex-direction: row;\r\n }\r\n\r\n /********************************************\r\n * Indicator\r\n ********************************************/\r\n .indicator {\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n width: 22px;\r\n height: 22px;\r\n border: 2px solid var(--rel-colors-gray-border);\r\n background: var(--rel-colors-white);\r\n border-radius: 50%;\r\n font-size: var(--rel-fontSizes-sm);\r\n font-weight: var(--rel-fontWeights-medium);\r\n position: relative;\r\n z-index: 2;\r\n transition: all 0.2s ease;\r\n flex-shrink: 0;\r\n }\r\n\r\n .indicator svg {\r\n width: 12px;\r\n height: auto;\r\n display: block;\r\n }\r\n\r\n /********************************************\r\n * Labels\r\n ********************************************/\r\n .step-label {\r\n white-space: nowrap;\r\n font-size: var(--rel-fontSizes-sm);\r\n color: var(--rel-colors-gray-paragraph);\r\n }\r\n\r\n /* Horizontal text-below specific */\r\n .rel-stepper.horizontal.text-below .step-label {\r\n margin-top: var(--rel-spacing-space-2xs);\r\n text-align: center;\r\n }\r\n\r\n /* Horizontal text-right specific */\r\n .rel-stepper.horizontal.text-right .step-label {\r\n margin-top: 0;\r\n margin-left: 0;\r\n margin-right: var(--rel-spacing-space-xs);\r\n text-align: left;\r\n }\r\n\r\n /* Vertical text-right specific */\r\n .rel-stepper.vertical.text-right .step-label {\r\n margin-top: 0;\r\n margin-left: 0;\r\n text-align: left;\r\n }\r\n\r\n /* Vertical text-below specific */\r\n .rel-stepper.vertical.text-below .step-label {\r\n margin-top: 0;\r\n margin-left: 0;\r\n text-align: center;\r\n }\r\n\r\n /********************************************\r\n * Connector Lines\r\n ********************************************/\r\n .connector {\r\n position: absolute;\r\n background: var(--rel-colors-gray-border);\r\n z-index: 1;\r\n }\r\n\r\n /* Horizontal connector */\r\n .rel-stepper.horizontal .connector {\r\n top: 50%;\r\n left: 100%;\r\n transform: translateY(-50%);\r\n height: 2px;\r\n position: absolute;\r\n background: var(--rel-colors-gray-border);\r\n }\r\n\r\n .rel-stepper.horizontal .rel-step:last-child .connector {\r\n display: none;\r\n }\r\n\r\n /* Vertical connectors */\r\n .rel-stepper.vertical.text-below .connector {\r\n top: 100%;\r\n left: 50%;\r\n transform: translateX(-50%);\r\n width: 2px;\r\n position: absolute;\r\n }\r\n\r\n .rel-stepper.vertical.text-right .connector {\r\n top: 100%;\r\n left: 50%;\r\n transform: translateX(-50%);\r\n width: 2px;\r\n position: absolute;\r\n }\r\n\r\n .rel-stepper.vertical .rel-step:last-child .connector {\r\n display: none;\r\n }\r\n\r\n .rel-stepper.vertical.text-right\r\n .rel-step:last-child\r\n .indicator-wrapper\r\n .connector {\r\n display: none;\r\n }\r\n\r\n /********************************************\r\n * Step States\r\n ********************************************/\r\n .rel-step.done .indicator {\r\n background: var(--rel-colors-black);\r\n border-color: var(--rel-colors-black);\r\n color: var(--rel-colors-white);\r\n }\r\n\r\n .rel-step.progress .indicator {\r\n border-color: var(--rel-colors-black);\r\n color: var(--rel-colors-black);\r\n background: var(--rel-colors-white);\r\n }\r\n\r\n .rel-step.disabled .indicator {\r\n background: var(--rel-colors-gray-bg-subtle);\r\n border-color: var(--rel-colors-gray-border);\r\n color: var(--rel-colors-gray-disabled);\r\n }\r\n\r\n .rel-step.done .connector {\r\n background: var(--rel-colors-black);\r\n }\r\n\r\n .rel-step.progress .connector {\r\n background: var(--rel-colors-black);\r\n }\r\n\r\n .rel-step.done .step-label {\r\n color: var(--rel-colors-black);\r\n font-weight: var(--rel-fontWeights-semibold);\r\n }\r\n\r\n .rel-step.progress .step-label {\r\n color: var(--rel-colors-black);\r\n font-weight: var(--rel-fontWeights-semibold);\r\n }\r\n\r\n .rel-step.disabled .step-label {\r\n color: var(--rel-colors-gray-disabled);\r\n }\r\n\r\n /********************************************\r\n * Size Property — controls connector length\r\n ********************************************/\r\n /* Horizontal */\r\n .rel-stepper.large.horizontal {\r\n gap: 86px;\r\n }\r\n\r\n .rel-stepper.small.horizontal {\r\n gap: 60px;\r\n }\r\n\r\n .rel-stepper.large.horizontal .connector {\r\n width: 86px;\r\n }\r\n\r\n .rel-stepper.small.horizontal .connector {\r\n width: 60px;\r\n }\r\n\r\n /* Vertical */\r\n .rel-stepper.large.vertical .connector {\r\n height: 86px;\r\n }\r\n\r\n .rel-stepper.large.vertical {\r\n gap: 86px;\r\n }\r\n\r\n .rel-stepper.small.vertical .connector {\r\n height: 42px;\r\n }\r\n\r\n .rel-stepper.small.vertical {\r\n gap: 42px;\r\n }\r\n `;\r\n\r\n private isDone(step: Step): boolean {\r\n return step.status === \"done\";\r\n }\r\n\r\n private isProgress(step: Step): boolean {\r\n return step.status === \"progress\";\r\n }\r\n\r\n private isDisabled(step: Step): boolean {\r\n return step.status === \"disabled\";\r\n }\r\n\r\n private getStepClasses(step: Step): string {\r\n const classes = [\"rel-step\"];\r\n if (this.isDone(step)) classes.push(\"done\");\r\n if (this.isProgress(step)) classes.push(\"progress\");\r\n if (this.isDisabled(step)) classes.push(\"disabled\");\r\n return classes.join(\" \");\r\n }\r\n\r\n private onStepClick(step: Step, index: number) {\r\n if (step.status === \"disabled\") return;\r\n\r\n this.dispatchEvent(\r\n new CustomEvent(\"step-change\", {\r\n detail: {\r\n index,\r\n step,\r\n },\r\n bubbles: true,\r\n composed: true,\r\n })\r\n );\r\n }\r\n\r\n private renderIndicator(step: Step, index: number) {\r\n if (step.status === \"done\") {\r\n return html`\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"14\"\r\n height=\"10\"\r\n viewBox=\"0 0 18 14\"\r\n fill=\"none\"\r\n class=\"check-icon\"\r\n >\r\n <path\r\n d=\"M6.44479 14L0.5 7.36383L1.9862 5.70478L6.44479 10.6819L16.0138 0L17.5 1.65904L6.44479 14Z\"\r\n fill=\"white\"\r\n />\r\n </svg>\r\n `;\r\n }\r\n return html`<span>${index + 1}</span>`;\r\n }\r\n\r\n render() {\r\n const stepperClasses = [\r\n \"rel-stepper\",\r\n this.orientation === \"vertical\" ? \"vertical\" : \"horizontal\",\r\n this.textAlign === \"below\" ? \"text-below\" : \"text-right\",\r\n this.size === \"small\" ? \"small\" : \"large\",\r\n ]\r\n .filter(Boolean)\r\n .join(\" \");\r\n\r\n const isVertical = this.orientation === \"vertical\";\r\n const isTextRight = this.textAlign === \"right\";\r\n\r\n return html`\r\n <div class=\"${stepperClasses}\">\r\n ${this.steps.map(\r\n (step, idx) => html`\r\n <div\r\n class=\"${this.getStepClasses(step)}\"\r\n @click=\"${() => this.onStepClick(step, idx)}\"\r\n >\r\n ${isVertical && isTextRight\r\n ? html`\r\n <!-- Indicator with connector below -->\r\n <div class=\"indicator-wrapper\">\r\n <div class=\"indicator\">\r\n ${this.renderIndicator(step, idx)}\r\n </div>\r\n ${idx < this.steps.length - 1\r\n ? html`<div class=\"connector\"></div>`\r\n : \"\"}\r\n </div>\r\n\r\n <!-- Step Label to the right -->\r\n <div class=\"step-label\">${step.title}</div>\r\n `\r\n : isVertical\r\n ? html`\r\n <div class=\"step-content text-below-content\">\r\n <!-- Step Indicator -->\r\n <div class=\"indicator\">\r\n ${this.renderIndicator(step, idx)}\r\n </div>\r\n\r\n <!-- Step Label -->\r\n <div class=\"step-label\">${step.title}</div>\r\n </div>\r\n\r\n <!-- Connector -->\r\n ${idx < this.steps.length - 1\r\n ? html`<div class=\"connector\"></div>`\r\n : \"\"}\r\n `\r\n : html`\r\n <!-- Step Indicator -->\r\n <div class=\"indicator\">\r\n ${this.renderIndicator(step, idx)}\r\n </div>\r\n\r\n <!-- Step Label -->\r\n <div class=\"step-label\">${step.title}</div>\r\n\r\n <!-- Connector (for horizontal only) -->\r\n ${!isVertical && idx < this.steps.length - 1\r\n ? html`<div class=\"connector\"></div>`\r\n : \"\"}\r\n `}\r\n </div>\r\n `\r\n )}\r\n </div>\r\n `;\r\n }\r\n}\r\n","import { LitElement, html, css } from \"lit\";\r\nimport { customElement, property, state } from \"lit/decorators.js\";\r\n\r\n@customElement(\"rel-switch\")\r\nexport class RelSwitch extends LitElement {\r\n @property({ type: Boolean }) checked = false;\r\n @property({ type: Boolean }) disabled = false;\r\n\r\n @state() private isFocused = false;\r\n @state() private isPressed = false;\r\n\r\n static styles = css`\r\n :host {\r\n --switch-track: #7e8186;\r\n --switch-knob-on: #000000;\r\n --switch-knob-off: #ffffff;\r\n --switch-halo: rgba(224, 224, 224, 0.8);\r\n --switch-disabled: #d1d5db;\r\n display: inline-block;\r\n }\r\n\r\n /* Wrapper */\r\n .switch-wrapper {\r\n position: relative;\r\n display: inline-block;\r\n width: 42px;\r\n height: 22px;\r\n cursor: pointer;\r\n }\r\n\r\n .switch-wrapper.switch-disabled {\r\n cursor: not-allowed;\r\n opacity: 0.5;\r\n }\r\n\r\n /* Hide native checkbox */\r\n .switch-wrapper input {\r\n opacity: 0;\r\n width: 0;\r\n height: 0;\r\n }\r\n\r\n /* Track */\r\n .switch-slider {\r\n position: absolute;\r\n top: 50%;\r\n left: 4px;\r\n right: 4px;\r\n height: 12px;\r\n background-color: var(--switch-track);\r\n border-radius: 999px;\r\n transform: translateY(-50%);\r\n transition: background-color 0.25s ease;\r\n }\r\n\r\n /* Knob */\r\n .switch-slider::before {\r\n content: \"\";\r\n position: absolute;\r\n top: 50%;\r\n left: -2px;\r\n transform: translateY(-50%);\r\n height: 18px;\r\n width: 18px;\r\n background-color: var(--switch-knob-off);\r\n border-radius: 50%;\r\n transition: transform 0.25s ease, background-color 0.25s ease,\r\n box-shadow 0.2s ease;\r\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3);\r\n }\r\n\r\n /* ON state */\r\n input:checked + .switch-slider::before {\r\n background-color: var(--switch-knob-on);\r\n transform: translateY(-50%) translateX(22px);\r\n }\r\n\r\n /* Hover */\r\n .switch-wrapper:hover:not(.switch-disabled) .switch-slider {\r\n background-color: #666;\r\n }\r\n\r\n /* Focus halo */\r\n .switch-focused .switch-slider::before {\r\n box-shadow: 0 0 0 6px var(--switch-halo);\r\n }\r\n\r\n /* Pressed */\r\n .switch-pressed .switch-slider::before {\r\n transform: scale(0.9) translateY(-50%);\r\n }\r\n .switch-pressed input:checked + .switch-slider::before {\r\n transform: scale(0.9) translateY(-50%) translateX(22px);\r\n }\r\n\r\n /* Disabled */\r\n .switch-disabled .switch-slider {\r\n background-color: var(--switch-disabled);\r\n }\r\n .switch-disabled .switch-slider::before {\r\n background-color: var(--switch-disabled);\r\n }\r\n `;\r\n\r\n private toggle(ev: Event) {\r\n if (this.disabled) return;\r\n\r\n const input = ev.target as HTMLInputElement;\r\n this.checked = input.checked;\r\n\r\n this.dispatchEvent(\r\n new CustomEvent<boolean>(\"changed\", {\r\n detail: this.checked,\r\n bubbles: true,\r\n composed: true,\r\n })\r\n );\r\n }\r\n\r\n private handleFocus() {\r\n this.isFocused = true;\r\n }\r\n\r\n private handleBlur() {\r\n this.isFocused = false;\r\n this.isPressed = false;\r\n }\r\n\r\n private handleMouseDown() {\r\n if (!this.disabled) this.isPressed = true;\r\n }\r\n\r\n private handleMouseUp() {\r\n if (!this.disabled) this.isPressed = false;\r\n }\r\n\r\n render() {\r\n const wrapperClasses = [\r\n \"switch-wrapper\",\r\n this.disabled && \"switch-disabled\",\r\n this.isFocused && \"switch-focused\",\r\n this.isPressed && \"switch-pressed\",\r\n ]\r\n .filter(Boolean)\r\n .join(\" \");\r\n\r\n return html`\r\n <label class=\"${wrapperClasses}\">\r\n <input\r\n type=\"checkbox\"\r\n ?disabled=${this.disabled}\r\n .checked=${this.checked}\r\n @change=${(e: Event) => this.toggle(e)}\r\n @focus=${this.handleFocus}\r\n @blur=${this.handleBlur}\r\n @mousedown=${this.handleMouseDown}\r\n @mouseup=${this.handleMouseUp}\r\n />\r\n <span class=\"switch-slider\"></span>\r\n </label>\r\n `;\r\n }\r\n}\r\n","import { LitElement, html, css } from \"lit\";\r\nimport { customElement, property } from \"lit/decorators.js\";\r\n\r\nexport interface TabItem {\r\n label: string;\r\n badge?: number;\r\n disabled?: boolean;\r\n}\r\n\r\n@customElement(\"rel-tab\")\r\nexport class RelTab extends LitElement {\r\n @property({ type: Array }) tabs: TabItem[] = [];\r\n @property({ type: Number, reflect: true }) activeIndex = 0;\r\n\r\n static styles = css`\r\n :host {\r\n --tab-active-color: #00f49c;\r\n --tab-text-default: #111;\r\n --tab-text-disabled: #a5a7aa;\r\n --tab-text-hover: #000;\r\n --tab-underline-height: 3px;\r\n --tab-hover-color: #f3f3f3;\r\n display: block;\r\n font-family: var(--rel-fontFamilies-primary);\r\n }\r\n\r\n .tabs-wrapper {\r\n display: flex;\r\n border-bottom: 1px solid #e5e5e5;\r\n font-family: var(--rel-fontFamilies-primary);\r\n user-select: none;\r\n }\r\n\r\n .tab {\r\n position: relative;\r\n padding: 0.75rem 1rem;\r\n cursor: pointer;\r\n color: var(--tab-text-default);\r\n font-size: 0.9rem;\r\n font-weight: 500;\r\n transition: color 0.2s ease;\r\n display: flex;\r\n align-items: center;\r\n gap: 6px;\r\n }\r\n\r\n .tab:hover:not(.disabled) .tab-label {\r\n color: var(--tab-text-hover);\r\n }\r\n\r\n .tab.disabled {\r\n color: var(--tab-text-disabled);\r\n cursor: not-allowed;\r\n }\r\n\r\n /* Underline */\r\n .tab-underline {\r\n position: absolute;\r\n left: 0;\r\n bottom: 0;\r\n height: var(--tab-underline-height);\r\n width: 100%;\r\n background-color: transparent;\r\n transition: background-color 0.2s ease, transform 0.2s ease;\r\n }\r\n\r\n .tab.active .tab-underline {\r\n background-color: var(--tab-active-color);\r\n }\r\n\r\n .tab:hover:not(.disabled):not(.active) {\r\n background-color: var(--tab-hover-color);\r\n }\r\n\r\n /* Badge */\r\n .tab-badge {\r\n display: inline-flex;\r\n justify-content: center;\r\n align-items: center;\r\n background: #ff0400;\r\n color: #fff;\r\n border-radius: 50%;\r\n font-size: 11px;\r\n font-weight: 600;\r\n min-width: 16px;\r\n text-align: center;\r\n height: 16px;\r\n padding: 2px;\r\n }\r\n\r\n /* Tab content */\r\n .tab-content {\r\n padding: 1rem 0;\r\n }\r\n `;\r\n\r\n private selectTab(index: number) {\r\n if (this.tabs[index]?.disabled) return;\r\n this.activeIndex = index;\r\n this.dispatchEvent(\r\n new CustomEvent<number>(\"tab-change\", {\r\n detail: index,\r\n bubbles: true,\r\n composed: true,\r\n })\r\n );\r\n }\r\n\r\n private onKeyDown(event: KeyboardEvent, index: number) {\r\n if (this.tabs[index]?.disabled) return;\r\n if (event.key === \"Enter\" || event.key === \" \") {\r\n event.preventDefault();\r\n this.selectTab(index);\r\n }\r\n }\r\n\r\n render() {\r\n return html`\r\n <div class=\"tabs-wrapper\" role=\"tablist\">\r\n ${this.tabs.map(\r\n (tab, i) => html`\r\n <div\r\n class=\"tab ${i === this.activeIndex\r\n ? \"active\"\r\n : \"\"} ${tab.disabled ? \"disabled\" : \"\"}\"\r\n role=\"tab\"\r\n aria-selected=\"${i === this.activeIndex}\"\r\n aria-disabled=\"${tab.disabled ?? false}\"\r\n tabindex=\"${tab.disabled ? -1 : i === this.activeIndex ? 0 : -1}\"\r\n @click=\"${() => this.selectTab(i)}\"\r\n @keydown=\"${(e: KeyboardEvent) => this.onKeyDown(e, i)}\"\r\n >\r\n <span class=\"tab-label\">${tab.label}</span>\r\n ${tab.badge\r\n ? html`<span class=\"tab-badge\">${tab.badge}</span>`\r\n : \"\"}\r\n <span class=\"tab-underline\"></span>\r\n </div>\r\n `\r\n )}\r\n </div>\r\n <div class=\"tab-content\">\r\n <slot></slot>\r\n </div>\r\n `;\r\n }\r\n}\r\n","import { LitElement, html, css } from \"lit\";\r\nimport { customElement, property, state } from \"lit/decorators.js\";\r\n\r\nexport type TextFieldState = \"default\" | \"focused\" | \"error\" | \"disabled\";\r\nexport type TextFieldSize = \"small\" | \"medium\" | \"large\";\r\n\r\n@customElement(\"rel-textfield\")\r\nexport class RelTextfield extends LitElement {\r\n @property({ type: String }) label?: string;\r\n @property({ type: String }) placeholder: string = \"\";\r\n @property({ type: String }) type: string = \"text\";\r\n @property({ type: String }) value: string = \"\";\r\n @property({ type: String }) leftIcon?: string;\r\n @property({ type: String }) rightIcon?: string;\r\n @property({ type: String }) supportingText?: string;\r\n @property({ type: String }) state: TextFieldState = \"default\";\r\n @property({ type: String }) size: TextFieldSize = \"medium\";\r\n\r\n @state() private internalState: TextFieldState = \"default\";\r\n\r\n static styles = css`\r\n :host {\r\n display: block;\r\n font-family: var(--rel-fontFamilies-primary);\r\n }\r\n\r\n /* Wrapper */\r\n .textfield-wrapper {\r\n display: flex;\r\n flex-direction: column;\r\n gap: 4px;\r\n width: 100%;\r\n }\r\n\r\n /* Label */\r\n .textfield-label {\r\n font-size: 0.85rem;\r\n font-weight: 500;\r\n color: #111;\r\n }\r\n\r\n /* Container */\r\n .textfield-container {\r\n display: flex;\r\n align-items: center;\r\n position: relative;\r\n border: 1px solid #ccc;\r\n border-radius: 6px;\r\n background: white;\r\n transition: border 0.2s;\r\n }\r\n\r\n .textfield-container.disabled {\r\n background: #f5f5f5;\r\n cursor: not-allowed;\r\n }\r\n\r\n /* Input */\r\n .textfield-input {\r\n flex: 1;\r\n border: none;\r\n outline: none;\r\n font-size: 0.9rem;\r\n padding: 0.5rem 0.75rem;\r\n background: transparent;\r\n font-family: var(--rel-fontFamilies-primary);\r\n }\r\n\r\n .textfield-input:disabled {\r\n cursor: not-allowed;\r\n color: #999;\r\n }\r\n\r\n .icon {\r\n position: absolute;\r\n display: flex;\r\n pointer-events: none;\r\n color: #7e8186;\r\n }\r\n\r\n .icon.left {\r\n left: 8px;\r\n }\r\n\r\n .icon.right {\r\n right: 8px;\r\n }\r\n\r\n .textfield-wrapper.small .textfield-input {\r\n padding: 0.5rem 1rem;\r\n font-size: 0.9rem;\r\n }\r\n\r\n .textfield-wrapper.medium .textfield-input {\r\n padding: 0.688rem 1rem;\r\n font-size: 1rem;\r\n }\r\n\r\n .textfield-wrapper.large .textfield-input {\r\n padding: 0.875rem 1rem;\r\n font-size: 1.1rem;\r\n }\r\n\r\n /* Adjust padding when icons are present */\r\n .textfield-wrapper .textfield-input.has-left-icon {\r\n padding-left: 2.5rem;\r\n }\r\n\r\n .textfield-wrapper .textfield-input.has-right-icon {\r\n padding-right: 2.5rem;\r\n }\r\n\r\n /* States */\r\n .textfield-wrapper.focused .textfield-container {\r\n border-color: #111;\r\n }\r\n\r\n .textfield-wrapper.error .textfield-container {\r\n border-color: #d50000;\r\n }\r\n\r\n .textfield-wrapper.disabled .textfield-container {\r\n border-color: #d7d9db;\r\n }\r\n\r\n /* Supporting text */\r\n .textfield-support {\r\n font-size: 0.75rem;\r\n color: #666;\r\n }\r\n\r\n .textfield-support.error {\r\n color: #d50000;\r\n }\r\n `;\r\n\r\n private get currentState(): TextFieldState {\r\n return this.state !== \"default\" ? this.state : this.internalState;\r\n }\r\n\r\n private handleFocus() {\r\n if (this.state !== \"disabled\" && this.state !== \"error\") {\r\n this.internalState = \"focused\";\r\n }\r\n }\r\n\r\n private handleBlur() {\r\n if (this.internalState === \"focused\") {\r\n this.internalState = \"default\";\r\n }\r\n }\r\n\r\n private handleInput(e: Event) {\r\n const input = e.target as HTMLInputElement;\r\n this.value = input.value;\r\n this.dispatchEvent(\r\n new CustomEvent<string>(\"input-change\", {\r\n detail: this.value,\r\n bubbles: true,\r\n composed: true,\r\n })\r\n );\r\n }\r\n\r\n render() {\r\n const wrapperClasses = [\r\n \"textfield-wrapper\",\r\n this.size,\r\n this.currentState,\r\n ].join(\" \");\r\n\r\n const inputClasses = [\r\n \"textfield-input\",\r\n this.leftIcon ? \"has-left-icon\" : \"\",\r\n this.rightIcon ? \"has-right-icon\" : \"\",\r\n ]\r\n .filter(Boolean)\r\n .join(\" \");\r\n\r\n return html`\r\n <div class=\"${wrapperClasses}\">\r\n ${this.label\r\n ? html`<label class=\"textfield-label\">${this.label}</label>`\r\n : \"\"}\r\n\r\n <div\r\n class=\"textfield-container ${this.state === \"disabled\"\r\n ? \"disabled\"\r\n : \"\"}\"\r\n >\r\n ${this.leftIcon\r\n ? html`<span class=\"icon left\">${this.leftIcon}</span>`\r\n : \"\"}\r\n\r\n <input\r\n type=\"${this.type}\"\r\n class=\"${inputClasses}\"\r\n placeholder=\"${this.placeholder}\"\r\n .value=\"${this.value}\"\r\n ?disabled=\"${this.state === \"disabled\"}\"\r\n aria-invalid=\"${this.state === \"error\"}\"\r\n @focus=\"${this.handleFocus}\"\r\n @blur=\"${this.handleBlur}\"\r\n @input=\"${this.handleInput}\"\r\n />\r\n\r\n ${this.rightIcon\r\n ? html`<span class=\"icon right\">${this.rightIcon}</span>`\r\n : \"\"}\r\n </div>\r\n\r\n ${this.supportingText\r\n ? html`<div\r\n class=\"textfield-support ${this.state === \"error\"\r\n ? \"error\"\r\n : \"\"}\"\r\n >\r\n ${this.supportingText}\r\n </div>`\r\n : \"\"}\r\n </div>\r\n `;\r\n }\r\n}\r\n","import { LitElement, html, css } from \"lit\";\r\nimport { customElement, property, state } from \"lit/decorators.js\";\r\n\r\nexport type ToastType = \"default\" | \"error\";\r\n\r\n@customElement(\"rel-toast\")\r\nexport class RelToast extends LitElement {\r\n @property({ type: String }) message: string = \"\";\r\n @property({ type: String }) type: ToastType = \"default\";\r\n @property({ type: String }) actionLabel?: string;\r\n @property({ type: Number }) duration: number = 4000;\r\n\r\n @state() private visible: boolean = false;\r\n private timeoutId?: number;\r\n\r\n static styles = css`\r\n :host {\r\n position: fixed;\r\n bottom: 24px;\r\n left: 50%;\r\n transform: translateX(-50%);\r\n display: flex;\r\n justify-content: center;\r\n width: 100%;\r\n pointer-events: none;\r\n z-index: 1000;\r\n font-family: var(--rel-fontFamilies-primary);\r\n }\r\n\r\n /* Toast container */\r\n .toast {\r\n display: inline-flex;\r\n align-items: center;\r\n gap: 12px;\r\n background-color: #111;\r\n color: #fff;\r\n font-family: var(--rel-fontFamilies-primary);\r\n font-size: 0.9rem;\r\n border-radius: 8px;\r\n padding: 1rem 1rem;\r\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\r\n pointer-events: all;\r\n animation: fadeInUp 0.25s ease;\r\n }\r\n\r\n .toast.error {\r\n background-color: #d50000;\r\n }\r\n\r\n .toast.hidden {\r\n display: none;\r\n }\r\n\r\n /* Message */\r\n .toast-message {\r\n flex: 1;\r\n }\r\n\r\n /* Action button */\r\n .toast-action {\r\n background: transparent;\r\n border: none;\r\n color: #0edb90;\r\n font-weight: 600;\r\n font-size: 0.85rem;\r\n cursor: pointer;\r\n transition: opacity 0.2s;\r\n font-family: var(--rel-fontFamilies-primary);\r\n }\r\n\r\n .toast-action:hover {\r\n opacity: 0.75;\r\n }\r\n\r\n /* Close button */\r\n .toast-close {\r\n background: transparent;\r\n border: none;\r\n color: inherit;\r\n font-size: 1rem;\r\n cursor: pointer;\r\n line-height: 1;\r\n padding: 0;\r\n margin-left: 4px;\r\n }\r\n\r\n .toast-close:hover {\r\n opacity: 0.75;\r\n }\r\n\r\n /* Animations */\r\n @keyframes fadeInUp {\r\n from {\r\n opacity: 0;\r\n transform: translateY(20px);\r\n }\r\n to {\r\n opacity: 1;\r\n transform: translateY(0);\r\n }\r\n }\r\n `;\r\n\r\n show() {\r\n this.visible = true;\r\n\r\n if (this.duration > 0) {\r\n this.timeoutId = window.setTimeout(() => this.close(), this.duration);\r\n }\r\n }\r\n\r\n close() {\r\n this.visible = false;\r\n this.dispatchEvent(\r\n new CustomEvent(\"dismissed\", {\r\n bubbles: true,\r\n composed: true,\r\n })\r\n );\r\n if (this.timeoutId) {\r\n clearTimeout(this.timeoutId);\r\n }\r\n }\r\n\r\n private handleActionClick(event: Event) {\r\n event.stopPropagation();\r\n this.dispatchEvent(\r\n new CustomEvent(\"action\", {\r\n bubbles: true,\r\n composed: true,\r\n })\r\n );\r\n this.close();\r\n }\r\n\r\n render() {\r\n return html`\r\n <div class=\"toast ${this.type} ${this.visible ? \"\" : \"hidden\"}\">\r\n <span class=\"toast-message\">${this.message}</span>\r\n\r\n ${this.actionLabel\r\n ? html`<button\r\n class=\"toast-action\"\r\n @click=\"${this.handleActionClick}\"\r\n >\r\n ${this.actionLabel}\r\n </button>`\r\n : \"\"}\r\n\r\n <button class=\"toast-close\" @click=\"${this.close}\">✕</button>\r\n </div>\r\n `;\r\n }\r\n}\r\n","import { LitElement, html, css } from \"lit\";\r\nimport { customElement, property } from \"lit/decorators.js\";\r\n\r\nexport type TooltipPosition = \"above\" | \"below\";\r\n\r\n@customElement(\"rel-tooltip\")\r\nexport class RelTooltip extends LitElement {\r\n @property({ type: String }) text: string = \"\";\r\n @property({ type: String }) position: TooltipPosition = \"above\";\r\n @property({ type: Boolean }) showTail: boolean = false;\r\n\r\n static styles = css`\r\n :host {\r\n display: inline-block;\r\n position: relative;\r\n }\r\n\r\n /* Tooltip container */\r\n .tooltip-bubble {\r\n position: absolute;\r\n left: 50%;\r\n transform: translateX(-50%);\r\n background-color: #111;\r\n color: #fff;\r\n padding: 0.5rem 0.75rem;\r\n border-radius: 6px;\r\n font-size: 0.875rem;\r\n font-family: var(--rel-fontFamilies-primary);\r\n white-space: nowrap;\r\n z-index: 1000;\r\n opacity: 0;\r\n pointer-events: none;\r\n transition: opacity 0.2s ease;\r\n }\r\n\r\n :host(:hover) .tooltip-bubble {\r\n opacity: 1;\r\n }\r\n\r\n /* Positioning */\r\n .tooltip-bubble.above {\r\n bottom: calc(100% + 8px);\r\n }\r\n\r\n .tooltip-bubble.below {\r\n top: calc(100% + 8px);\r\n }\r\n\r\n /* Tail/Arrow */\r\n .tooltip-tail {\r\n position: absolute;\r\n left: 50%;\r\n transform: translateX(-50%);\r\n width: 0;\r\n height: 0;\r\n border-left: 6px solid transparent;\r\n border-right: 6px solid transparent;\r\n }\r\n\r\n .tooltip-bubble.above .tooltip-tail {\r\n bottom: -6px;\r\n border-top: 6px solid #111;\r\n }\r\n\r\n .tooltip-bubble.below .tooltip-tail {\r\n top: -6px;\r\n border-bottom: 6px solid #111;\r\n }\r\n `;\r\n\r\n render() {\r\n return html`\r\n <slot></slot>\r\n <div class=\"tooltip-bubble ${this.position}\">\r\n ${this.text}\r\n ${this.showTail ? html`<span class=\"tooltip-tail\"></span>` : \"\"}\r\n </div>\r\n `;\r\n }\r\n}\r\n"],"mappings":"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AA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AARW;AAAA,EAA1BC,WAAS,EAAE,MAAM,MAAM,CAAC;AAAA,GADd,WACgB;AAEC;AAAA,EAA3BA,WAAS,EAAE,MAAM,OAAO,CAAC;AAAA,GAHf,WAGiB;AAEA;AAAA,EAA3BA,WAAS,EAAE,MAAM,OAAO,CAAC;AAAA,GALf,WAKiB;AAEA;AAAA,EAA3BA,WAAS,EAAE,MAAM,OAAO,CAAC;AAAA,GAPf,WAOiB;AAPjB,aAAN;AAAA,EADNC,gBAAc,aAAa;AAAA,GACf;;;ACdb,SAAS,cAAAC,cAAY,QAAAC,QAAM,OAAAC,aAAW;AACtC,SAAS,iBAAAC,iBAAe,YAAAC,YAAU,SAAAC,cAAa;AAGxC,IAAM,YAAN,cAAwBC,aAAW;AAAA,EAAnC;AAAA;AACwB,mBAAU;AACV,oBAAW;AAE/B,SAAQ,YAAY;AACpB,SAAQ,YAAY;AAAA;AAAA,EA+FrB,OAAO,IAAW;AACxB,QAAI,KAAK,SAAU;AAEnB,UAAM,QAAQ,GAAG;AACjB,SAAK,UAAU,MAAM;AAErB,SAAK;AAAA,MACH,IAAI,YAAqB,WAAW;AAAA,QAClC,QAAQ,KAAK;AAAA,QACb,SAAS;AAAA,QACT,UAAU;AAAA,MACZ,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EAEQ,cAAc;AACpB,SAAK,YAAY;AAAA,EACnB;AAAA,EAEQ,aAAa;AACnB,SAAK,YAAY;AACjB,SAAK,YAAY;AAAA,EACnB;AAAA,EAEQ,kBAAkB;AACxB,QAAI,CAAC,KAAK,SAAU,MAAK,YAAY;AAAA,EACvC;AAAA,EAEQ,gBAAgB;AACtB,QAAI,CAAC,KAAK,SAAU,MAAK,YAAY;AAAA,EACvC;AAAA,EAEA,SAAS;AACP,UAAM,iBAAiB;AAAA,MACrB;AAAA,MACA,KAAK,YAAY;AAAA,MACjB,KAAK,aAAa;AAAA,MAClB,KAAK,aAAa;AAAA,IACpB,EACG,OAAO,OAAO,EACd,KAAK,GAAG;AAEX,WAAOC;AAAA,sBACW,cAAc;AAAA;AAAA;AAAA,sBAGd,KAAK,QAAQ;AAAA,qBACd,KAAK,OAAO;AAAA,oBACb,CAAC,MAAa,KAAK,OAAO,CAAC,CAAC;AAAA,mBAC7B,KAAK,WAAW;AAAA,kBACjB,KAAK,UAAU;AAAA,uBACV,KAAK,eAAe;AAAA,qBACtB,KAAK,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA,EAKrC;AACF;AA9Ja,UAOJ,SAASC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AANa;AAAA,EAA5BC,WAAS,EAAE,MAAM,QAAQ,CAAC;AAAA,GADhB,UACkB;AACA;AAAA,EAA5BA,WAAS,EAAE,MAAM,QAAQ,CAAC;AAAA,GAFhB,UAEkB;AAEZ;AAAA,EAAhBC,OAAM;AAAA,GAJI,UAIM;AACA;AAAA,EAAhBA,OAAM;AAAA,GALI,UAKM;AALN,YAAN;AAAA,EADNC,gBAAc,YAAY;AAAA,GACd;;;ACJb,SAAS,cAAAC,cAAY,QAAAC,QAAM,OAAAC,aAAW;AACtC,SAAS,iBAAAC,iBAAe,YAAAC,kBAAgB;AASjC,IAAM,SAAN,cAAqBC,aAAW;AAAA,EAAhC;AAAA;AACsB,gBAAkB,CAAC;AACH,uBAAc;AAAA;AAAA,EAoFjD,UAAU,OAAe;AAC/B,QAAI,KAAK,KAAK,KAAK,GAAG,SAAU;AAChC,SAAK,cAAc;AACnB,SAAK;AAAA,MACH,IAAI,YAAoB,cAAc;AAAA,QACpC,QAAQ;AAAA,QACR,SAAS;AAAA,QACT,UAAU;AAAA,MACZ,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EAEQ,UAAU,OAAsB,OAAe;AACrD,QAAI,KAAK,KAAK,KAAK,GAAG,SAAU;AAChC,QAAI,MAAM,QAAQ,WAAW,MAAM,QAAQ,KAAK;AAC9C,YAAM,eAAe;AACrB,WAAK,UAAU,KAAK;AAAA,IACtB;AAAA,EACF;AAAA,EAEA,SAAS;AACP,WAAOC;AAAA;AAAA,UAED,KAAK,KAAK;AAAA,MACV,CAAC,KAAK,MAAMA;AAAA;AAAA,2BAEK,MAAM,KAAK,cACpB,WACA,EAAE,IAAI,IAAI,WAAW,aAAa,EAAE;AAAA;AAAA,+BAEvB,MAAM,KAAK,WAAW;AAAA,+BACtB,IAAI,YAAY,KAAK;AAAA,0BAC1B,IAAI,WAAW,KAAK,MAAM,KAAK,cAAc,IAAI,EAAE;AAAA,wBACrD,MAAM,KAAK,UAAU,CAAC,CAAC;AAAA,0BACrB,CAAC,MAAqB,KAAK,UAAU,GAAG,CAAC,CAAC;AAAA;AAAA,wCAE5B,IAAI,KAAK;AAAA,gBACjC,IAAI,QACFA,iCAA+B,IAAI,KAAK,YACxC,EAAE;AAAA;AAAA;AAAA;AAAA,IAIZ,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMP;AACF;AAxIa,OAIJ,SAASC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAHW;AAAA,EAA1BC,WAAS,EAAE,MAAM,MAAM,CAAC;AAAA,GADd,OACgB;AACgB;AAAA,EAA1CA,WAAS,EAAE,MAAM,QAAQ,SAAS,KAAK,CAAC;AAAA,GAF9B,OAEgC;AAFhC,SAAN;AAAA,EADNC,gBAAc,SAAS;AAAA,GACX;;;ACVb,SAAS,cAAAC,cAAY,QAAAC,QAAM,OAAAC,aAAW;AACtC,SAAS,iBAAAC,iBAAe,YAAAC,YAAU,SAAAC,cAAa;AAMxC,IAAM,eAAN,cAA2BC,aAAW;AAAA,EAAtC;AAAA;AAEuB,uBAAsB;AACtB,gBAAe;AACf,iBAAgB;AAIhB,iBAAwB;AACxB,gBAAsB;AAEzC,SAAQ,gBAAgC;AAAA;AAAA,EAsHjD,IAAY,eAA+B;AACzC,WAAO,KAAK,UAAU,YAAY,KAAK,QAAQ,KAAK;AAAA,EACtD;AAAA,EAEQ,cAAc;AACpB,QAAI,KAAK,UAAU,cAAc,KAAK,UAAU,SAAS;AACvD,WAAK,gBAAgB;AAAA,IACvB;AAAA,EACF;AAAA,EAEQ,aAAa;AACnB,QAAI,KAAK,kBAAkB,WAAW;AACpC,WAAK,gBAAgB;AAAA,IACvB;AAAA,EACF;AAAA,EAEQ,YAAY,GAAU;AAC5B,UAAM,QAAQ,EAAE;AAChB,SAAK,QAAQ,MAAM;AACnB,SAAK;AAAA,MACH,IAAI,YAAoB,gBAAgB;AAAA,QACtC,QAAQ,KAAK;AAAA,QACb,SAAS;AAAA,QACT,UAAU;AAAA,MACZ,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EAEA,SAAS;AACP,UAAM,iBAAiB;AAAA,MACrB;AAAA,MACA,KAAK;AAAA,MACL,KAAK;AAAA,IACP,EAAE,KAAK,GAAG;AAEV,UAAM,eAAe;AAAA,MACnB;AAAA,MACA,KAAK,WAAW,kBAAkB;AAAA,MAClC,KAAK,YAAY,mBAAmB;AAAA,IACtC,EACG,OAAO,OAAO,EACd,KAAK,GAAG;AAEX,WAAOC;AAAA,oBACS,cAAc;AAAA,UACxB,KAAK,QACHA,wCAAsC,KAAK,KAAK,aAChD,EAAE;AAAA;AAAA;AAAA,uCAGyB,KAAK,UAAU,aACxC,aACA,EAAE;AAAA;AAAA,YAEJ,KAAK,WACHA,iCAA+B,KAAK,QAAQ,YAC5C,EAAE;AAAA;AAAA;AAAA,oBAGI,KAAK,IAAI;AAAA,qBACR,YAAY;AAAA,2BACN,KAAK,WAAW;AAAA,sBACrB,KAAK,KAAK;AAAA,yBACP,KAAK,UAAU,UAAU;AAAA,4BACtB,KAAK,UAAU,OAAO;AAAA,sBAC5B,KAAK,WAAW;AAAA,qBACjB,KAAK,UAAU;AAAA,sBACd,KAAK,WAAW;AAAA;AAAA;AAAA,YAG1B,KAAK,YACHA,kCAAgC,KAAK,SAAS,YAC9C,EAAE;AAAA;AAAA;AAAA,UAGN,KAAK,iBACHA;AAAA,yCAC6B,KAAK,UAAU,UACtC,UACA,EAAE;AAAA;AAAA,gBAEJ,KAAK,cAAc;AAAA,sBAEvB,EAAE;AAAA;AAAA;AAAA,EAGZ;AACF;AAxNa,aAaJ,SAASC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAZY;AAAA,EAA3BC,WAAS,EAAE,MAAM,OAAO,CAAC;AAAA,GADf,aACiB;AACA;AAAA,EAA3BA,WAAS,EAAE,MAAM,OAAO,CAAC;AAAA,GAFf,aAEiB;AACA;AAAA,EAA3BA,WAAS,EAAE,MAAM,OAAO,CAAC;AAAA,GAHf,aAGiB;AACA;AAAA,EAA3BA,WAAS,EAAE,MAAM,OAAO,CAAC;AAAA,GAJf,aAIiB;AACA;AAAA,EAA3BA,WAAS,EAAE,MAAM,OAAO,CAAC;AAAA,GALf,aAKiB;AACA;AAAA,EAA3BA,WAAS,EAAE,MAAM,OAAO,CAAC;AAAA,GANf,aAMiB;AACA;AAAA,EAA3BA,WAAS,EAAE,MAAM,OAAO,CAAC;AAAA,GAPf,aAOiB;AACA;AAAA,EAA3BA,WAAS,EAAE,MAAM,OAAO,CAAC;AAAA,GARf,aAQiB;AACA;AAAA,EAA3BA,WAAS,EAAE,MAAM,OAAO,CAAC;AAAA,GATf,aASiB;AAEX;AAAA,EAAhBC,OAAM;AAAA,GAXI,aAWM;AAXN,eAAN;AAAA,EADNC,gBAAc,eAAe;AAAA,GACjB;;;ACPb,SAAS,cAAAC,cAAY,QAAAC,QAAM,OAAAC,aAAW;AACtC,SAAS,iBAAAC,iBAAe,YAAAC,YAAU,SAAAC,cAAa;AAKxC,IAAM,WAAN,cAAuBC,aAAW;AAAA,EAAlC;AAAA;AACuB,mBAAkB;AAClB,gBAAkB;AAElB,oBAAmB;AAEtC,SAAQ,UAAmB;AAAA;AAAA,EA2FpC,OAAO;AACL,SAAK,UAAU;AAEf,QAAI,KAAK,WAAW,GAAG;AACrB,WAAK,YAAY,OAAO,WAAW,MAAM,KAAK,MAAM,GAAG,KAAK,QAAQ;AAAA,IACtE;AAAA,EACF;AAAA,EAEA,QAAQ;AACN,SAAK,UAAU;AACf,SAAK;AAAA,MACH,IAAI,YAAY,aAAa;AAAA,QAC3B,SAAS;AAAA,QACT,UAAU;AAAA,MACZ,CAAC;AAAA,IACH;AACA,QAAI,KAAK,WAAW;AAClB,mBAAa,KAAK,SAAS;AAAA,IAC7B;AAAA,EACF;AAAA,EAEQ,kBAAkB,OAAc;AACtC,UAAM,gBAAgB;AACtB,SAAK;AAAA,MACH,IAAI,YAAY,UAAU;AAAA,QACxB,SAAS;AAAA,QACT,UAAU;AAAA,MACZ,CAAC;AAAA,IACH;AACA,SAAK,MAAM;AAAA,EACb;AAAA,EAEA,SAAS;AACP,WAAOC;AAAA,0BACe,KAAK,IAAI,IAAI,KAAK,UAAU,KAAK,QAAQ;AAAA,sCAC7B,KAAK,OAAO;AAAA;AAAA,UAExC,KAAK,cACHA;AAAA;AAAA,wBAEY,KAAK,iBAAiB;AAAA;AAAA,gBAE9B,KAAK,WAAW;AAAA,yBAEpB,EAAE;AAAA;AAAA,8CAEgC,KAAK,KAAK;AAAA;AAAA;AAAA,EAGtD;AACF;AAnJa,SASJ,SAASC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AARY;AAAA,EAA3BC,WAAS,EAAE,MAAM,OAAO,CAAC;AAAA,GADf,SACiB;AACA;AAAA,EAA3BA,WAAS,EAAE,MAAM,OAAO,CAAC;AAAA,GAFf,SAEiB;AACA;AAAA,EAA3BA,WAAS,EAAE,MAAM,OAAO,CAAC;AAAA,GAHf,SAGiB;AACA;AAAA,EAA3BA,WAAS,EAAE,MAAM,OAAO,CAAC;AAAA,GAJf,SAIiB;AAEX;AAAA,EAAhBC,OAAM;AAAA,GANI,SAMM;AANN,WAAN;AAAA,EADNC,gBAAc,WAAW;AAAA,GACb;;;ACNb,SAAS,cAAAC,cAAY,QAAAC,QAAM,OAAAC,aAAW;AACtC,SAAS,iBAAAC,iBAAe,YAAAC,kBAAgB;AAKjC,IAAM,aAAN,cAAyBC,aAAW;AAAA,EAApC;AAAA;AACuB,gBAAe;AACf,oBAA4B;AAC3B,oBAAoB;AAAA;AAAA,EA6DjD,SAAS;AACP,WAAOC;AAAA;AAAA,mCAEwB,KAAK,QAAQ;AAAA,UACtC,KAAK,IAAI;AAAA,UACT,KAAK,WAAWA,6CAA2C,EAAE;AAAA;AAAA;AAAA,EAGrE;AACF;AAzEa,WAKJ,SAASC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAJY;AAAA,EAA3BC,WAAS,EAAE,MAAM,OAAO,CAAC;AAAA,GADf,WACiB;AACA;AAAA,EAA3BA,WAAS,EAAE,MAAM,OAAO,CAAC;AAAA,GAFf,WAEiB;AACC;AAAA,EAA5BA,WAAS,EAAE,MAAM,QAAQ,CAAC;AAAA,GAHhB,WAGkB;AAHlB,aAAN;AAAA,EADNC,gBAAc,aAAa;AAAA,GACf;","names":["LitElement","html","css","customElement","property","LitElement","html","css","property","customElement","LitElement","html","css","customElement","property","LitElement","html","css","property","customElement","LitElement","html","css","customElement","property","LitElement","html","css","property","customElement","LitElement","html","css","customElement","property","LitElement","html","css","property","customElement","LitElement","html","css","customElement","property","LitElement","html","css","property","customElement","LitElement","html","css","customElement","LitElement","html","css","customElement","LitElement","html","css","customElement","property","LitElement","html","css","property","customElement","LitElement","html","css","customElement","property","LitElement","html","css","property","customElement","LitElement","html","css","customElement","property","LitElement","html","css","property","customElement","LitElement","html","css","customElement","property","LitElement","html","css","property","customElement","LitElement","html","css","customElement","property","LitElement","html","css","property","customElement","LitElement","html","css","customElement","property","LitElement","html","css","property","customElement","LitElement","html","css","customElement","property","LitElement","html","css","property","customElement","LitElement","html","css","customElement","property","LitElement","html","css","property","customElement","LitElement","html","css","customElement","property","LitElement","html","css","property","customElement","LitElement","html","css","customElement","property","LitElement","html","css","property","customElement","LitElement","html","css","customElement","property","LitElement","html","css","property","customElement","LitElement","html","css","customElement","property","state","LitElement","html","css","property","state","customElement","LitElement","html","css","customElement","property","state","LitElement","html","css","property","state","customElement","LitElement","html","css","customElement","property","LitElement","html","css","property","customElement","LitElement","html","css","customElement","property","state","LitElement","html","css","property","state","customElement","LitElement","html","css","customElement","property","LitElement","html","css","property","customElement","LitElement","html","css","customElement","property","state","LitElement","html","css","property","state","customElement","LitElement","html","css","customElement","property","state","LitElement","html","css","property","state","customElement","LitElement","html","css","customElement","property","LitElement","html","css","property","customElement"]}
|