customer-riverside/web/modules/custom/riverside_pt/js/components/rpt-toggle.js
Philip Peterson 4232cded55
All checks were successful
Build and push image / build (push) Successful in 20m26s
wip
2026-05-25 00:32:23 -07:00

34 lines
957 B
JavaScript

import { h, render } from 'https://esm.sh/preact@10';
import { useState } from 'https://esm.sh/preact@10/hooks';
import { html } from 'https://esm.sh/htm@3/preact';
function Toggle({ label = 'Toggle' }) {
const [checked, setChecked] = useState(false);
return html`
<button
onClick=${() => {
setChecked(c => !c)
}}
aria-pressed=${checked}
class=${`flex items-center gap-2 px-4 py-2 rounded-full border-2 border-[#306f8e] text-sm font-medium cursor-pointer transition-colors ${
checked ? 'bg-[#306f8e] text-white' : 'bg-transparent text-[#306f8e]'
}`}
>
<span class="w-3 h-3 rounded-full bg-current"></span>
${label}
</button>
`;
}
class RptToggle extends HTMLElement {
connectedCallback() {
render(html`<${Toggle} label=${this.getAttribute('label')} />`, this);
}
disconnectedCallback() {
render(null, this);
}
}
customElements.define('rpt-toggle', RptToggle);