kemet-ui 5.0.2 → 5.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (72) hide show
  1. package/custom-elements.json +1389 -1393
  2. package/dist/{constants-CHvA2ed5.d.ts → constants-C4-3KYlX.d.ts} +1 -2
  3. package/dist/elements/alert/index.d.ts +1 -1
  4. package/dist/elements/alert/index.js +4 -4
  5. package/dist/elements/alert/index.js.map +1 -1
  6. package/dist/elements/alert/styles.css.js +4 -4
  7. package/dist/elements/alert/styles.css.js.map +1 -1
  8. package/dist/elements/avatar/index.d.ts +1 -1
  9. package/dist/elements/badge/index.d.ts +1 -1
  10. package/dist/elements/badge/index.js +1 -1
  11. package/dist/elements/badge/index.js.map +1 -1
  12. package/dist/elements/badge/styles.css.js +1 -1
  13. package/dist/elements/badge/styles.css.js.map +1 -1
  14. package/dist/elements/button/index.d.ts +1 -1
  15. package/dist/elements/button/index.js +4 -4
  16. package/dist/elements/button/index.js.map +1 -1
  17. package/dist/elements/button/styles.css.js +4 -4
  18. package/dist/elements/button/styles.css.js.map +1 -1
  19. package/dist/elements/card/index.d.ts +1 -1
  20. package/dist/elements/checkbox/index.d.ts +1 -1
  21. package/dist/elements/checkbox/index.js +7 -4
  22. package/dist/elements/checkbox/index.js.map +1 -1
  23. package/dist/elements/checkbox/styles.css.js +1 -1
  24. package/dist/elements/checkbox/styles.css.js.map +1 -1
  25. package/dist/elements/combo/index.d.ts +1 -1
  26. package/dist/elements/count/index.d.ts +1 -1
  27. package/dist/elements/dialog/index.d.ts +1 -1
  28. package/dist/elements/fab/index.d.ts +1 -1
  29. package/dist/elements/fab/index.js +1 -1
  30. package/dist/elements/fab/index.js.map +1 -1
  31. package/dist/elements/fab/styles.css.js +1 -1
  32. package/dist/elements/fab/styles.css.js.map +1 -1
  33. package/dist/elements/field/index.d.ts +1 -1
  34. package/dist/elements/flipcard/index.d.ts +1 -1
  35. package/dist/elements/input/index.d.ts +1 -1
  36. package/dist/elements/input/index.js +8 -5
  37. package/dist/elements/input/index.js.map +1 -1
  38. package/dist/elements/input/styles.css.js +2 -2
  39. package/dist/elements/input/styles.css.js.map +1 -1
  40. package/dist/elements/input-combo/index.d.ts +1 -1
  41. package/dist/elements/input-combo/index.js +2 -2
  42. package/dist/elements/input-combo/index.js.map +1 -1
  43. package/dist/elements/input-combo/styles.css.js +2 -2
  44. package/dist/elements/input-combo/styles.css.js.map +1 -1
  45. package/dist/elements/loader/index.d.ts +1 -1
  46. package/dist/elements/loader/index.js +1 -1
  47. package/dist/elements/loader/index.js.map +1 -1
  48. package/dist/elements/password/index.d.ts +1 -1
  49. package/dist/elements/radio/index.js +2 -8
  50. package/dist/elements/radio/index.js.map +1 -1
  51. package/dist/elements/radio/styles.css.js +1 -1
  52. package/dist/elements/radio/styles.css.js.map +1 -1
  53. package/dist/elements/radios/index.d.ts +1 -2
  54. package/dist/elements/radios/index.js +7 -21
  55. package/dist/elements/radios/index.js.map +1 -1
  56. package/dist/elements/select/index.d.ts +1 -1
  57. package/dist/elements/select/index.js +8 -5
  58. package/dist/elements/select/index.js.map +1 -1
  59. package/dist/elements/select/styles.css.js +2 -2
  60. package/dist/elements/select/styles.css.js.map +1 -1
  61. package/dist/elements/tabs/index.d.ts +1 -1
  62. package/dist/elements/textarea/index.d.ts +1 -1
  63. package/dist/elements/textarea/index.js +8 -5
  64. package/dist/elements/textarea/index.js.map +1 -1
  65. package/dist/elements/textarea/styles.css.js +2 -2
  66. package/dist/elements/textarea/styles.css.js.map +1 -1
  67. package/dist/elements/toggle/index.js +6 -3
  68. package/dist/elements/toggle/index.js.map +1 -1
  69. package/dist/wrappers/react.d.ts +1 -1
  70. package/dist/wrappers/react.js +26 -46
  71. package/dist/wrappers/react.js.map +1 -1
  72. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/elements/toggle/index.ts","../../../src/utilities/decorators.ts","../../../src/utilities/form-controller.ts","../../../src/utilities/events.ts","../../../src/elements/toggle/styles.css.ts"],"sourcesContent":["import { html, LitElement, unsafeCSS } from 'lit';\nimport { customElement, property, state } from '../../utilities/decorators';\nimport { FormSubmitController } from '../../utilities/form-controller';\nimport { emitEvent } from '../../utilities/events';\nimport styles from './styles.css.ts';\n\n/**\n * @since 1.0.0\n * @status stable\n *\n * @tagname kemet-toggle\n * @summary A toggle switch for forms.\n * @ssrsafe yes\n *\n * @prop {string} name - The name on the input field\n * @prop {boolean} checked - Determines whether the toggle is checked\n * @prop {boolean} disabled - Determines whether the toggle is disabled\n * @prop {string} label - A description of the toggle's purpose\n * @prop {boolean} show - Determines whether to show text options\n * @prop {boolean} squared - Displays the toggle as squared instead of rounded\n * @prop {string} optionChecked - The checked option text\n * @prop {string} optionUnchecked - The unchecked option text\n * @prop {'light' | 'dark'} polarity - Determines if the component has a dark or light background\n * @prop {string} dom - The status of dom initalization.\n *\n * @csspart label - The label element.\n * @csspart control - The control element.\n * @csspart text - The label text.\n * @csspart checked - The checked text.\n * @csspart unchecked - The unchecked text.\n *\n * @cssproperty --kemet-toggle-width - The width of the entire toggle.\n * @cssproperty --kemet-toggle-height - The height of the entire toggle.\n * @cssproperty --kemet-toggle-handle-diameter - The diameter of the handle.\n * @cssproperty --kemet-toggle-track-border - The border of the track.\n * @cssproperty --kemet-toggle-track-color - The color of the track.\n * @cssproperty --kemet-toggle-track-shadow - The shadow on the track.\n * @cssproperty --kemet-toggle-handle-border - The border on the handle.\n * @cssproperty --kemet-toggle-handle-color - The color of the handle.\n * @cssproperty --kemet-toggle-handle-shadow - The shadow on the handle.\n *\n * @event kemet-toggle-change - Fires when the toggle changes state\n *\n * @fires kemet-toggle-mounted - Fired when the toggle is mounted to the DOM\n * @detail {HTMLElement} element - The toggle element\n *\n */\n\n@customElement('kemet-toggle')\nexport default class KemetToggle extends LitElement {\n formSubmitController: FormSubmitController;\n\n static styles = [styles];\n\n @property({ type: String })\n name: string = 'toggle-switch';\n\n @property({ type: Boolean, reflect: true })\n checked: boolean = false;\n\n @property({ type: Boolean })\n disabled: boolean = false;\n\n @property({ type: String })\n label: string = '';\n\n @property({ type: Boolean })\n show: boolean = false;\n\n @property({ type: Boolean })\n squared: boolean = false;\n\n @property({ type: String, attribute: 'option-checked' })\n optionChecked: string = 'on';\n\n @property({ type: String, attribute: 'option-unchecked' })\n optionUnchecked: string = 'off';\n\n @property({ type: String, reflect: true })\n polarity?: 'light' | 'dark';\n\n @property({ type: String, reflect: true })\n dom: string = 'initializing';\n\n @state()\n value: string | boolean = this.checked ? this.optionChecked : this.optionUnchecked;\n\n constructor() {\n super();\n\n /** @internal */\n this.formSubmitController = new FormSubmitController(this);\n }\n\n firstUpdated() {\n emitEvent(this, 'kemet-toggle-mounted', {\n bubbles: true,\n composed: true,\n detail: {\n element: this,\n },\n });\n this.dom = 'mounted';\n }\n\n render() {\n return html`\n <label part=\"label\">\n ${this.makeUncheckedOption()}\n <span part=\"control\">\n <span part=\"track\"></span>\n <span part=\"handle\"></span>\n </span>\n <input\n role=\"switch\"\n type=\"checkbox\"\n name=\"${this.name}\"\n aria-label=\"${this.label}\"\n aria-checked=${this.checked ? 'true' : 'false'}\n ?disabled=${this.disabled}\n ?checked=${this.checked}\n @change=${this.handleChange}\n />\n ${this.makeCheckedOption()}\n <span part=\"text\">${this.label}</span>\n </label>\n `;\n }\n\n handleChange() {\n this.checked = !this.checked;\n this.value = this.checked ? this.optionChecked : this.optionUnchecked;\n emitEvent(this, 'kemet-toggle-change', { element: this });\n }\n\n makeUncheckedOption() {\n if (this.show) {\n return html`<span class=\"option\" part=\"unchecked\">${this.optionUnchecked}</span>`;\n }\n\n return null;\n }\n\n makeCheckedOption() {\n if (this.show) {\n return html`<span class=\"option\" part=\"checked\">${this.optionChecked}</span>`;\n }\n\n return null;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'kemet-toggle': KemetToggle\n }\n}\n","export { property, state, query, queryAll } from 'lit/decorators.js';\nimport { customElement as litCustomElement } from 'lit/decorators.js';\n\n/**\n * A drop-in replacement for lit's `customElement` decorator that is safe under\n * hot-module-replacement / live-reload environments where the module may be\n * re-evaluated.\n */\nexport const customElement = (tagName: string) => (classOrDescriptor: any) =>\n typeof customElements !== 'undefined' && !customElements.get(tagName)\n ? litCustomElement(tagName)(classOrDescriptor)\n : classOrDescriptor;\n","export class FormSubmitController {\n host: any;\n form: HTMLFormElement | null | undefined;\n options: {\n form: (input: any) => HTMLFormElement | null | undefined;\n name: (input: any) => string;\n value: (input: any) => any;\n disabled: (input: any) => boolean;\n };\n\n constructor(host: any, options: Partial<{\n form: (input: any) => HTMLFormElement | null | undefined;\n name: (input: any) => string;\n value: (input: any) => any;\n disabled: (input: any) => boolean;\n }> = {}) {\n (this.host = host).addController(this);\n\n this.options = {\n form: (input: any) => input.closest('form'),\n name: (input: any) => input.name,\n value: (input: any) => input.value,\n disabled: (input: any) => input.disabled,\n ...options,\n };\n\n this.handleFormData = this.handleFormData.bind(this);\n this.handleFormSubmit = this.handleFormSubmit.bind(this);\n }\n\n hostConnected() {\n this.form = this.options.form(this.host);\n\n if (this.form) {\n this.form.addEventListener('formdata', this.handleFormData);\n this.form.addEventListener('submit', this.handleFormSubmit);\n }\n }\n\n hostDisconnected() {\n if (this.form) {\n this.form.removeEventListener('formdata', this.handleFormData);\n this.form.removeEventListener('submit', this.handleFormSubmit);\n this.form = undefined;\n }\n }\n\n handleFormData(event: FormDataEvent) {\n const disabled = this.options.disabled(this.host);\n const name = this.options.name(this.host);\n const value = this.options.value(this.host);\n\n if (!disabled && typeof name === 'string' && typeof value !== 'undefined') {\n // TODO recreate a scenario where value will be an array\n // if (Array.isArray(value)) {\n // value.forEach((val) => {\n // event.formData?.append(name, val.toString());\n // });\n // } else {\n // event.formData?.append(name, value.toString());\n // }\n event.formData?.append(name, value.toString());\n }\n }\n\n handleFormSubmit(event: SubmitEvent) {\n event.preventDefault();\n event.stopImmediatePropagation();\n\n const disabled = this.options.disabled(this.host);\n this.form = this.options.form(this.host);\n\n if (this.form && !disabled) {\n const components = this.form.querySelectorAll('kemet-input, kemet-textarea, kemet-select, kemet-checkbox, kemet-radios');\n\n components.forEach((component: any) => {\n if (component.checkValidity) {\n component.checkValidity();\n\n if (!component.checkValidity()) {\n component.status = 'error';\n component.invalid = true;\n\n component.dispatchEvent(\n new CustomEvent('kemet-input-status', {\n bubbles: true,\n composed: true,\n detail: {\n status: 'error',\n validity: component.validity ? component.validity : {},\n element: component,\n },\n }),\n );\n }\n\n if (component.checkLimitValidity && !component.checkLimitValidity()) {\n component.status = 'error';\n component.invalid = true;\n\n component.dispatchEvent(\n new CustomEvent('kemet-input-status', {\n bubbles: true,\n composed: true,\n detail: {\n status: 'error',\n validity: { passedLimit: true },\n element: component,\n },\n }),\n );\n }\n }\n });\n }\n }\n\n submit() {\n const button = document.createElement('button');\n\n if (this.form) {\n button.type = 'submit';\n button.style.position = 'absolute';\n button.style.width = '0';\n button.style.height = '0';\n button.style.clip = 'rect(0 0 0 0)';\n button.style.clipPath = 'inset(50%)';\n button.style.overflow = 'hidden';\n button.style.whiteSpace = 'nowrap';\n this.form.append(button);\n button.click();\n button.remove();\n }\n }\n}\n","export const emitEvent = (element, name, detail, bubbles = true, composed = true) => {\n element.dispatchEvent(\n new CustomEvent(name, { bubbles, composed, detail }),\n );\n};\n","import { css } from 'lit';\n\nexport default css`:host {\n --kemet-toggle-width: 3.5rem;\n --kemet-toggle-height: 2rem;\n --kemet-toggle-handle-diameter: 1.6rem;\n --kemet-toggle-handle-margin: calc((var(--kemet-toggle-height) - var(--kemet-toggle-handle-diameter)) / 2);\n --kemet-toggle-track-border: none;\n --kemet-toggle-track-color: var(--kemet-color-background-base);\n --kemet-toggle-track-shadow: inset 0 0.4rem 0.7rem 0 rgb(0 0 0 / 15%), inset 0 -0.2rem 0.4rem 0 rgb(0 0 0 / 5%);\n --kemet-toggle-handle-border: none;\n --kemet-toggle-handle-color: var(--kemet-color-font-active);\n --kemet-toggle-handle-shadow: 0 0.5rem 0.5rem 0 rgb(0 0 0 / 10%), 0 0.5rem 0.5rem 0 rgb(0 0 0 / 20%);\n\n display: flex;\n align-items: center;\n}\n\n:host([disabled]) {\n opacity: 0.5;\n}\n\nlabel {\n cursor: pointer;\n display: flex;\n align-items: center;\n gap: 1rem;\n font-size: inherit;\n color: inherit;\n}\n\n:host([disabled]) label {\n cursor: not-allowed;\n}\n\ninput {\n display: none;\n}\n\n[part='control'] {\n position: relative;\n display: inline-flex;\n margin: 0;\n width: var(--kemet-toggle-width);\n height: var(--kemet-toggle-height);\n}\n\n[part='control'] > span {\n transition: 300ms ease-in-out;\n}\n\n[part='track'] {\n width: var(--kemet-toggle-width);\n height: var(--kemet-toggle-height);\n border: var(--kemet-toggle-track-border);\n border-radius: var(--kemet-toggle-height);\n background-color: var(--kemet-toggle-track-color);\n box-shadow: var(--kemet-toggle-track-shadow);\n}\n\n:host([squared]) [part='track'] {\n border-radius: 0;\n}\n\n[part='handle'] {\n position: absolute;\n top: var(--kemet-toggle-handle-margin);\n left: var(--kemet-toggle-handle-margin);\n width: var(--kemet-toggle-handle-diameter);\n height: var(--kemet-toggle-handle-diameter);\n transform: translateX(0);\n border: var(--kemet-toggle-handle-border);\n border-radius: var(--kemet-toggle-handle-diameter);\n background-color: var(--kemet-toggle-handle-color);\n box-shadow: var(--kemet-toggle-handle-shadow);\n}\n\n:host([squared]) [part='handle'] {\n border-radius: 0;\n}\n\n:host([checked]) [part='handle'] {\n transform: translateX(calc(var(--kemet-toggle-width) - var(--kemet-toggle-handle-diameter) - var(--kemet-toggle-handle-margin) * 2));\n}\n\n.option {\n font-size: 90%;\n}\n`;\n"],"mappings":";;;;;;;;;;;;AAAA,SAAS,MAAM,kBAA6B;;;ACA5C,SAAS,UAAU,OAAO,OAAO,gBAAgB;AACjD,SAAS,iBAAiB,wBAAwB;AAO3C,IAAM,gBAAgB,CAAC,YAAoB,CAAC,sBACjD,OAAO,mBAAmB,eAAe,CAAC,eAAe,IAAI,OAAO,IAChE,iBAAiB,OAAO,EAAE,iBAAiB,IAC3C;;;ACXC,IAAM,uBAAN,MAA2B;AAAA,EAUhC,YAAY,MAAW,UAKlB,CAAC,GAAG;AACP,KAAC,KAAK,OAAO,MAAM,cAAc,IAAI;AAErC,SAAK,UAAU;AAAA,MACb,MAAM,CAAC,UAAe,MAAM,QAAQ,MAAM;AAAA,MAC1C,MAAM,CAAC,UAAe,MAAM;AAAA,MAC5B,OAAO,CAAC,UAAe,MAAM;AAAA,MAC7B,UAAU,CAAC,UAAe,MAAM;AAAA,MAChC,GAAG;AAAA,IACL;AAEA,SAAK,iBAAiB,KAAK,eAAe,KAAK,IAAI;AACnD,SAAK,mBAAmB,KAAK,iBAAiB,KAAK,IAAI;AAAA,EACzD;AAAA,EAEA,gBAAgB;AACd,SAAK,OAAO,KAAK,QAAQ,KAAK,KAAK,IAAI;AAEvC,QAAI,KAAK,MAAM;AACb,WAAK,KAAK,iBAAiB,YAAY,KAAK,cAAc;AAC1D,WAAK,KAAK,iBAAiB,UAAU,KAAK,gBAAgB;AAAA,IAC5D;AAAA,EACF;AAAA,EAEA,mBAAmB;AACjB,QAAI,KAAK,MAAM;AACb,WAAK,KAAK,oBAAoB,YAAY,KAAK,cAAc;AAC7D,WAAK,KAAK,oBAAoB,UAAU,KAAK,gBAAgB;AAC7D,WAAK,OAAO;AAAA,IACd;AAAA,EACF;AAAA,EAEA,eAAe,OAAsB;AACnC,UAAM,WAAW,KAAK,QAAQ,SAAS,KAAK,IAAI;AAChD,UAAM,OAAO,KAAK,QAAQ,KAAK,KAAK,IAAI;AACxC,UAAM,QAAQ,KAAK,QAAQ,MAAM,KAAK,IAAI;AAE1C,QAAI,CAAC,YAAY,OAAO,SAAS,YAAY,OAAO,UAAU,aAAa;AASzE,YAAM,UAAU,OAAO,MAAM,MAAM,SAAS,CAAC;AAAA,IAC/C;AAAA,EACF;AAAA,EAEA,iBAAiB,OAAoB;AACnC,UAAM,eAAe;AACrB,UAAM,yBAAyB;AAE/B,UAAM,WAAW,KAAK,QAAQ,SAAS,KAAK,IAAI;AAChD,SAAK,OAAO,KAAK,QAAQ,KAAK,KAAK,IAAI;AAEvC,QAAI,KAAK,QAAQ,CAAC,UAAU;AAC1B,YAAM,aAAa,KAAK,KAAK,iBAAiB,yEAAyE;AAEvH,iBAAW,QAAQ,CAAC,cAAmB;AACrC,YAAI,UAAU,eAAe;AAC3B,oBAAU,cAAc;AAExB,cAAI,CAAC,UAAU,cAAc,GAAG;AAC9B,sBAAU,SAAS;AACnB,sBAAU,UAAU;AAEpB,sBAAU;AAAA,cACR,IAAI,YAAY,sBAAsB;AAAA,gBACpC,SAAS;AAAA,gBACT,UAAU;AAAA,gBACV,QAAQ;AAAA,kBACN,QAAQ;AAAA,kBACR,UAAU,UAAU,WAAW,UAAU,WAAW,CAAC;AAAA,kBACrD,SAAS;AAAA,gBACX;AAAA,cACF,CAAC;AAAA,YACH;AAAA,UACF;AAEA,cAAI,UAAU,sBAAsB,CAAC,UAAU,mBAAmB,GAAG;AACnE,sBAAU,SAAS;AACnB,sBAAU,UAAU;AAEpB,sBAAU;AAAA,cACR,IAAI,YAAY,sBAAsB;AAAA,gBACpC,SAAS;AAAA,gBACT,UAAU;AAAA,gBACV,QAAQ;AAAA,kBACN,QAAQ;AAAA,kBACR,UAAU,EAAE,aAAa,KAAK;AAAA,kBAC9B,SAAS;AAAA,gBACX;AAAA,cACF,CAAC;AAAA,YACH;AAAA,UACF;AAAA,QACF;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EAEA,SAAS;AACP,UAAM,SAAS,SAAS,cAAc,QAAQ;AAE9C,QAAI,KAAK,MAAM;AACb,aAAO,OAAO;AACd,aAAO,MAAM,WAAW;AACxB,aAAO,MAAM,QAAQ;AACrB,aAAO,MAAM,SAAS;AACtB,aAAO,MAAM,OAAO;AACpB,aAAO,MAAM,WAAW;AACxB,aAAO,MAAM,WAAW;AACxB,aAAO,MAAM,aAAa;AAC1B,WAAK,KAAK,OAAO,MAAM;AACvB,aAAO,MAAM;AACb,aAAO,OAAO;AAAA,IAChB;AAAA,EACF;AACF;;;ACtIO,IAAM,YAAY,CAAC,SAAS,MAAM,QAAQ,UAAU,MAAM,WAAW,SAAS;AACnF,UAAQ;AAAA,IACN,IAAI,YAAY,MAAM,EAAE,SAAS,UAAU,OAAO,CAAC;AAAA,EACrD;AACF;;;ACJA,SAAS,WAAW;AAEpB,IAAO,qBAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;AJ+Cf,IAAqB,cAArB,cAAyC,WAAW;AAAA,EAsClD,cAAc;AACZ,UAAM;AAjCR,gBAAe;AAGf,mBAAmB;AAGnB,oBAAoB;AAGpB,iBAAgB;AAGhB,gBAAgB;AAGhB,mBAAmB;AAGnB,yBAAwB;AAGxB,2BAA0B;AAM1B,eAAc;AAGd,iBAA0B,KAAK,UAAU,KAAK,gBAAgB,KAAK;AAMjE,SAAK,uBAAuB,IAAI,qBAAqB,IAAI;AAAA,EAC3D;AAAA,EAEA,eAAe;AACb,cAAU,MAAM,wBAAwB;AAAA,MACtC,SAAS;AAAA,MACT,UAAU;AAAA,MACV,QAAQ;AAAA,QACN,SAAS;AAAA,MACX;AAAA,IACF,CAAC;AACD,SAAK,MAAM;AAAA,EACb;AAAA,EAEA,SAAS;AACP,WAAO;AAAA;AAAA,UAED,KAAK,oBAAoB,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAQlB,KAAK,IAAI;AAAA,wBACH,KAAK,KAAK;AAAA,yBACT,KAAK,UAAU,SAAS,OAAO;AAAA,sBAClC,KAAK,QAAQ;AAAA,qBACd,KAAK,OAAO;AAAA,oBACb,KAAK,YAAY;AAAA;AAAA,UAE3B,KAAK,kBAAkB,CAAC;AAAA,4BACN,KAAK,KAAK;AAAA;AAAA;AAAA,EAGpC;AAAA,EAEA,eAAe;AACb,SAAK,UAAU,CAAC,KAAK;AACrB,SAAK,QAAQ,KAAK,UAAU,KAAK,gBAAgB,KAAK;AACtD,cAAU,MAAM,uBAAuB,EAAE,SAAS,KAAK,CAAC;AAAA,EAC1D;AAAA,EAEA,sBAAsB;AACpB,QAAI,KAAK,MAAM;AACb,aAAO,6CAA6C,KAAK,eAAe;AAAA,IAC1E;AAEA,WAAO;AAAA,EACT;AAAA,EAEA,oBAAoB;AAClB,QAAI,KAAK,MAAM;AACb,aAAO,2CAA2C,KAAK,aAAa;AAAA,IACtE;AAEA,WAAO;AAAA,EACT;AACF;AArGqB,YAGZ,SAAS,CAAC,kBAAM;AAGvB;AAAA,EADC,SAAS,EAAE,MAAM,OAAO,CAAC;AAAA,GALP,YAMnB;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,SAAS,SAAS,KAAK,CAAC;AAAA,GARvB,YASnB;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,QAAQ,CAAC;AAAA,GAXR,YAYnB;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,OAAO,CAAC;AAAA,GAdP,YAenB;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,QAAQ,CAAC;AAAA,GAjBR,YAkBnB;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,QAAQ,CAAC;AAAA,GApBR,YAqBnB;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,QAAQ,WAAW,iBAAiB,CAAC;AAAA,GAvBpC,YAwBnB;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,QAAQ,WAAW,mBAAmB,CAAC;AAAA,GA1BtC,YA2BnB;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,QAAQ,SAAS,KAAK,CAAC;AAAA,GA7BtB,YA8BnB;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,QAAQ,SAAS,KAAK,CAAC;AAAA,GAhCtB,YAiCnB;AAGA;AAAA,EADC,MAAM;AAAA,GAnCY,YAoCnB;AApCmB,cAArB;AAAA,EADC,cAAc,cAAc;AAAA,GACR;","names":[]}
1
+ {"version":3,"sources":["../../../src/elements/toggle/index.ts","../../../src/utilities/decorators.ts","../../../src/utilities/form-controller.ts","../../../src/utilities/events.ts","../../../src/elements/toggle/styles.css.ts"],"sourcesContent":["import { html, LitElement, unsafeCSS } from 'lit';\nimport { customElement, property, state } from '../../utilities/decorators';\nimport { FormSubmitController } from '../../utilities/form-controller';\nimport { emitEvent } from '../../utilities/events';\nimport styles from './styles.css.ts';\n\n/**\n * @since 1.0.0\n * @status stable\n *\n * @tagname kemet-toggle\n * @summary A toggle switch for forms.\n * @ssrsafe yes\n *\n * @prop {string} name - The name on the input field\n * @prop {boolean} checked - Determines whether the toggle is checked\n * @prop {boolean} disabled - Determines whether the toggle is disabled\n * @prop {string} label - A description of the toggle's purpose\n * @prop {boolean} show - Determines whether to show text options\n * @prop {boolean} squared - Displays the toggle as squared instead of rounded\n * @prop {string} optionChecked - The checked option text\n * @prop {string} optionUnchecked - The unchecked option text\n * @prop {'light' | 'dark'} polarity - Determines if the component has a dark or light background\n * @prop {string} dom - The status of dom initalization.\n *\n * @csspart label - The label element.\n * @csspart control - The control element.\n * @csspart text - The label text.\n * @csspart checked - The checked text.\n * @csspart unchecked - The unchecked text.\n *\n * @cssproperty --kemet-toggle-width - The width of the entire toggle.\n * @cssproperty --kemet-toggle-height - The height of the entire toggle.\n * @cssproperty --kemet-toggle-handle-diameter - The diameter of the handle.\n * @cssproperty --kemet-toggle-track-border - The border of the track.\n * @cssproperty --kemet-toggle-track-color - The color of the track.\n * @cssproperty --kemet-toggle-track-shadow - The shadow on the track.\n * @cssproperty --kemet-toggle-handle-border - The border on the handle.\n * @cssproperty --kemet-toggle-handle-color - The color of the handle.\n * @cssproperty --kemet-toggle-handle-shadow - The shadow on the handle.\n *\n * @event kemet-toggle-change - Fires when the toggle changes state\n *\n * @fires kemet-toggle-mounted - Fired when the toggle is mounted to the DOM\n * @detail {HTMLElement} element - The toggle element\n *\n */\n\n@customElement('kemet-toggle')\nexport default class KemetToggle extends LitElement {\n formSubmitController: FormSubmitController;\n\n static styles = [styles];\n\n @property({ type: String })\n name: string = 'toggle-switch';\n\n @property({ type: Boolean, reflect: true })\n checked: boolean = false;\n\n @property({ type: Boolean })\n disabled: boolean = false;\n\n @property({ type: String })\n label: string = '';\n\n @property({ type: Boolean })\n show: boolean = false;\n\n @property({ type: Boolean })\n squared: boolean = false;\n\n @property({ type: String, attribute: 'option-checked' })\n optionChecked: string = 'on';\n\n @property({ type: String, attribute: 'option-unchecked' })\n optionUnchecked: string = 'off';\n\n @property({ type: String, reflect: true })\n polarity?: 'light' | 'dark';\n\n @property({ type: String, reflect: true })\n dom: string = 'initializing';\n\n @state()\n value: string | boolean = this.checked ? this.optionChecked : this.optionUnchecked;\n\n constructor() {\n super();\n\n /** @internal */\n this.formSubmitController = new FormSubmitController(this);\n }\n\n firstUpdated() {\n emitEvent(this, 'kemet-toggle-mounted', {\n bubbles: true,\n composed: true,\n detail: {\n element: this,\n },\n });\n this.dom = 'mounted';\n }\n\n render() {\n return html`\n <label part=\"label\">\n ${this.makeUncheckedOption()}\n <span part=\"control\">\n <span part=\"track\"></span>\n <span part=\"handle\"></span>\n </span>\n <input\n role=\"switch\"\n type=\"checkbox\"\n name=\"${this.name}\"\n aria-label=\"${this.label}\"\n aria-checked=${this.checked ? 'true' : 'false'}\n ?disabled=${this.disabled}\n ?checked=${this.checked}\n @change=${this.handleChange}\n />\n ${this.makeCheckedOption()}\n <span part=\"text\">${this.label}</span>\n </label>\n `;\n }\n\n handleChange() {\n this.checked = !this.checked;\n this.value = this.checked ? this.optionChecked : this.optionUnchecked;\n emitEvent(this, 'kemet-toggle-change', { element: this });\n }\n\n makeUncheckedOption() {\n if (this.show) {\n return html`<span class=\"option\" part=\"unchecked\">${this.optionUnchecked}</span>`;\n }\n\n return null;\n }\n\n makeCheckedOption() {\n if (this.show) {\n return html`<span class=\"option\" part=\"checked\">${this.optionChecked}</span>`;\n }\n\n return null;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'kemet-toggle': KemetToggle\n }\n}\n","export { property, state, query, queryAll } from 'lit/decorators.js';\nimport { customElement as litCustomElement } from 'lit/decorators.js';\n\n/**\n * A drop-in replacement for lit's `customElement` decorator that is safe under\n * hot-module-replacement / live-reload environments where the module may be\n * re-evaluated.\n */\nexport const customElement = (tagName: string) => (classOrDescriptor: any) =>\n typeof customElements !== 'undefined' && !customElements.get(tagName)\n ? litCustomElement(tagName)(classOrDescriptor)\n : classOrDescriptor;\n","import { EnumAppearances } from \"./constants\";\n\nexport class FormSubmitController {\n host: any;\n form: HTMLFormElement | null | undefined;\n options: {\n form: (input: any) => HTMLFormElement | null | undefined;\n name: (input: any) => string;\n value: (input: any) => any;\n disabled: (input: any) => boolean;\n };\n\n constructor(host: any, options: Partial<{\n form: (input: any) => HTMLFormElement | null | undefined;\n name: (input: any) => string;\n value: (input: any) => any;\n disabled: (input: any) => boolean;\n }> = {}) {\n (this.host = host).addController(this);\n\n this.options = {\n form: (input: any) => input.closest('form'),\n name: (input: any) => input.name,\n value: (input: any) => input.value,\n disabled: (input: any) => input.disabled,\n ...options,\n };\n\n this.handleFormData = this.handleFormData.bind(this);\n this.handleFormSubmit = this.handleFormSubmit.bind(this);\n\n\n }\n\n hostConnected() {\n console.log('what?!');\n this.form = this.options.form(this.host);\n\n if (this.form) {\n console.log('Adding form listeners');\n this.form.addEventListener('formdata', this.handleFormData);\n this.form.addEventListener('submit', this.handleFormSubmit);\n }\n }\n\n hostDisconnected() {\n if (this.form) {\n this.form.removeEventListener('formdata', this.handleFormData);\n this.form.removeEventListener('submit', this.handleFormSubmit);\n this.form = undefined;\n }\n }\n\n handleFormData(event: FormDataEvent) {\n const disabled = this.options.disabled(this.host);\n const name = this.options.name(this.host);\n const value = this.options.value(this.host);\n\n if (!disabled && typeof name === 'string' && typeof value !== 'undefined') {\n // TODO recreate a scenario where value will be an array\n // if (Array.isArray(value)) {\n // value.forEach((val) => {\n // event.formData?.append(name, val.toString());\n // });\n // } else {\n // event.formData?.append(name, value.toString());\n // }\n event.formData?.append(name, value.toString());\n }\n }\n\n handleFormSubmit(event: SubmitEvent) {\n console.log('~~Form submitted~~');\n event.preventDefault();\n event.stopImmediatePropagation();\n\n const disabled = this.options.disabled(this.host);\n this.form = this.options.form(this.host);\n\n if (this.form && !disabled) {\n const components = this.form.querySelectorAll('kemet-input, kemet-textarea, kemet-select, kemet-checkbox, kemet-radios');\n\n components.forEach((component: any) => {\n if (component.checkValidity) {\n component.checkValidity();\n\n if (!component.checkValidity()) {\n component.appearance = EnumAppearances.Error;\n component.invalid = true;\n\n component.dispatchEvent(\n new CustomEvent('kemet-input-status', {\n bubbles: true,\n composed: true,\n detail: {\n status: EnumAppearances.Error,\n validity: component.validity ? component.validity : {},\n element: component,\n },\n }),\n );\n }\n\n if (component.checkLimitValidity && !component.checkLimitValidity()) {\n component.appearance = EnumAppearances.Error;\n component.invalid = true;\n\n component.dispatchEvent(\n new CustomEvent('kemet-input-status', {\n bubbles: true,\n composed: true,\n detail: {\n status: 'error',\n validity: { passedLimit: true },\n element: component,\n },\n }),\n );\n }\n }\n });\n }\n }\n\n submit() {\n const button = document.createElement('button');\n\n if (this.form) {\n button.type = 'submit';\n button.style.position = 'absolute';\n button.style.width = '0';\n button.style.height = '0';\n button.style.clip = 'rect(0 0 0 0)';\n button.style.clipPath = 'inset(50%)';\n button.style.overflow = 'hidden';\n button.style.whiteSpace = 'nowrap';\n this.form.append(button);\n button.click();\n button.remove();\n }\n }\n}\n","export const emitEvent = (element, name, detail, bubbles = true, composed = true) => {\n element.dispatchEvent(\n new CustomEvent(name, { bubbles, composed, detail }),\n );\n};\n","import { css } from 'lit';\n\nexport default css`:host {\n --kemet-toggle-width: 3.5rem;\n --kemet-toggle-height: 2rem;\n --kemet-toggle-handle-diameter: 1.6rem;\n --kemet-toggle-handle-margin: calc((var(--kemet-toggle-height) - var(--kemet-toggle-handle-diameter)) / 2);\n --kemet-toggle-track-border: none;\n --kemet-toggle-track-color: var(--kemet-color-background-base);\n --kemet-toggle-track-shadow: inset 0 0.4rem 0.7rem 0 rgb(0 0 0 / 15%), inset 0 -0.2rem 0.4rem 0 rgb(0 0 0 / 5%);\n --kemet-toggle-handle-border: none;\n --kemet-toggle-handle-color: var(--kemet-color-font-active);\n --kemet-toggle-handle-shadow: 0 0.5rem 0.5rem 0 rgb(0 0 0 / 10%), 0 0.5rem 0.5rem 0 rgb(0 0 0 / 20%);\n\n display: flex;\n align-items: center;\n}\n\n:host([disabled]) {\n opacity: 0.5;\n}\n\nlabel {\n cursor: pointer;\n display: flex;\n align-items: center;\n gap: 1rem;\n font-size: inherit;\n color: inherit;\n}\n\n:host([disabled]) label {\n cursor: not-allowed;\n}\n\ninput {\n display: none;\n}\n\n[part='control'] {\n position: relative;\n display: inline-flex;\n margin: 0;\n width: var(--kemet-toggle-width);\n height: var(--kemet-toggle-height);\n}\n\n[part='control'] > span {\n transition: 300ms ease-in-out;\n}\n\n[part='track'] {\n width: var(--kemet-toggle-width);\n height: var(--kemet-toggle-height);\n border: var(--kemet-toggle-track-border);\n border-radius: var(--kemet-toggle-height);\n background-color: var(--kemet-toggle-track-color);\n box-shadow: var(--kemet-toggle-track-shadow);\n}\n\n:host([squared]) [part='track'] {\n border-radius: 0;\n}\n\n[part='handle'] {\n position: absolute;\n top: var(--kemet-toggle-handle-margin);\n left: var(--kemet-toggle-handle-margin);\n width: var(--kemet-toggle-handle-diameter);\n height: var(--kemet-toggle-handle-diameter);\n transform: translateX(0);\n border: var(--kemet-toggle-handle-border);\n border-radius: var(--kemet-toggle-handle-diameter);\n background-color: var(--kemet-toggle-handle-color);\n box-shadow: var(--kemet-toggle-handle-shadow);\n}\n\n:host([squared]) [part='handle'] {\n border-radius: 0;\n}\n\n:host([checked]) [part='handle'] {\n transform: translateX(calc(var(--kemet-toggle-width) - var(--kemet-toggle-handle-diameter) - var(--kemet-toggle-handle-margin) * 2));\n}\n\n.option {\n font-size: 90%;\n}\n`;\n"],"mappings":"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","names":[]}
@@ -9,7 +9,7 @@ import KemetAvatars$1 from '../elements/avatars/index.js';
9
9
  import KemetBadge$1 from '../elements/badge/index.js';
10
10
  import KemetCard$1 from '../elements/card/index.js';
11
11
  import KemetCheckbox$1 from '../elements/checkbox/index.js';
12
- import { K as KemetCombo$1, I as InterfaceKemetSelectionEvent, a as KemetCount$1, b as InterfaceInputDetails, H as HTMLKemetFieldElement, c as HTMLKemetInputElement } from '../constants-CHvA2ed5.js';
12
+ import { K as KemetCombo$1, I as InterfaceKemetSelectionEvent, a as KemetCount$1, b as InterfaceInputDetails, H as HTMLKemetFieldElement, c as HTMLKemetInputElement } from '../constants-C4-3KYlX.js';
13
13
  import KemetDrawer$1 from '../elements/drawer/index.js';
14
14
  import KemetFAB from '../elements/fab/index.js';
15
15
  import KemetFlipcard$1 from '../elements/flipcard/index.js';
@@ -470,7 +470,7 @@ var styles_css_default3 = css3`:host {
470
470
  }
471
471
 
472
472
  :host([appearance=brand]:not([disabled]):not([variant=text]):not([variant=outlined]):not([variant=plain])) {
473
- --_kemet-button-background-color: var(--kemet-color-brand-primary-base);
473
+ --_kemet-button-background-color: var(--kemet-color-brand-primary-darker);
474
474
  }
475
475
 
476
476
  :host([appearance=success]:not([disabled]):not([variant=text]):not([variant=outlined]):not([variant=plain])) {
@@ -495,7 +495,7 @@ var styles_css_default3 = css3`:host {
495
495
 
496
496
  :host([variant=text][appearance=brand]:not([disabled])),
497
497
  :host([variant=plain][appearance=brand]:not([disabled])) {
498
- --_kemet-button-font-color: var(--kemet-color-brand-primary-base);
498
+ --_kemet-button-font-color: var(--kemet-color-brand-primary-darker);
499
499
  }
500
500
 
501
501
  :host([variant=text][appearance=success]:not([disabled])),
@@ -560,9 +560,9 @@ var styles_css_default3 = css3`:host {
560
560
  }
561
561
 
562
562
  :host([variant=outlined][appearance=brand]:not([disabled])) {
563
- --_kemet-button-font-color: var(--kemet-color-brand-primary-base);
563
+ --_kemet-button-font-color: var(--kemet-color-brand-primary-darker);
564
564
  --_kemet-button-background-color: transparent;
565
- --_kemet-button-border-color: var(--kemet-color-brand-primary-base);
565
+ --_kemet-button-border-color: var(--kemet-color-brand-primary-darker);
566
566
  --_kemet-button-border: var(--kemet-button-border-width) var(--kemet-button-border-style) var(--_kemet-button-border-color);
567
567
  }
568
568
 
@@ -900,8 +900,8 @@ var styles_css_default4 = css4`:host {
900
900
  --_kemet-alert-appearance-color: var(--kemet-color-background-inverse);
901
901
  }
902
902
 
903
- :host([filled][appearance="brand"]) {
904
- --_kemet-alert-appearance-color: var(--kemet-color-brand-primary-base);
903
+ :host([filled][appearance=brand]) {
904
+ --_kemet-alert-appearance-color: var(--kemet-color-brand-primary-darker);
905
905
  }
906
906
 
907
907
  :host([filled][appearance="success"]) {
@@ -944,8 +944,8 @@ var styles_css_default4 = css4`:host {
944
944
  border-left: var(--kemet-alert-border-thickness) solid var(--_kemet-alert-appearance-color);
945
945
  }
946
946
 
947
- :host([appearance="brand"]) {
948
- --_kemet-alert-appearance-color: var(--kemet-color-brand-primary-base);
947
+ :host([appearance=brand]) {
948
+ --_kemet-alert-appearance-color: var(--kemet-color-brand-primary-darker);
949
949
  }
950
950
 
951
951
  :host([appearance="success"]) {
@@ -1384,7 +1384,7 @@ var styles_css_default7 = css7`:host {
1384
1384
  }
1385
1385
 
1386
1386
  :host([appearance=brand]) {
1387
- --_kemet-badge-color: var(--kemet-color-brand-primary-base);
1387
+ --_kemet-badge-color: var(--kemet-color-brand-primary-darker);
1388
1388
  }
1389
1389
 
1390
1390
  :host([appearance=success]) {
@@ -1742,8 +1742,10 @@ var FormSubmitController = class {
1742
1742
  this.handleFormSubmit = this.handleFormSubmit.bind(this);
1743
1743
  }
1744
1744
  hostConnected() {
1745
+ console.log("what?!");
1745
1746
  this.form = this.options.form(this.host);
1746
1747
  if (this.form) {
1748
+ console.log("Adding form listeners");
1747
1749
  this.form.addEventListener("formdata", this.handleFormData);
1748
1750
  this.form.addEventListener("submit", this.handleFormSubmit);
1749
1751
  }
@@ -1764,6 +1766,7 @@ var FormSubmitController = class {
1764
1766
  }
1765
1767
  }
1766
1768
  handleFormSubmit(event) {
1769
+ console.log("~~Form submitted~~");
1767
1770
  event.preventDefault();
1768
1771
  event.stopImmediatePropagation();
1769
1772
  const disabled = this.options.disabled(this.host);
@@ -1774,14 +1777,14 @@ var FormSubmitController = class {
1774
1777
  if (component.checkValidity) {
1775
1778
  component.checkValidity();
1776
1779
  if (!component.checkValidity()) {
1777
- component.status = "error";
1780
+ component.appearance = "error" /* Error */;
1778
1781
  component.invalid = true;
1779
1782
  component.dispatchEvent(
1780
1783
  new CustomEvent("kemet-input-status", {
1781
1784
  bubbles: true,
1782
1785
  composed: true,
1783
1786
  detail: {
1784
- status: "error",
1787
+ status: "error" /* Error */,
1785
1788
  validity: component.validity ? component.validity : {},
1786
1789
  element: component
1787
1790
  }
@@ -1789,7 +1792,7 @@ var FormSubmitController = class {
1789
1792
  );
1790
1793
  }
1791
1794
  if (component.checkLimitValidity && !component.checkLimitValidity()) {
1792
- component.status = "error";
1795
+ component.appearance = "error" /* Error */;
1793
1796
  component.invalid = true;
1794
1797
  component.dispatchEvent(
1795
1798
  new CustomEvent("kemet-input-status", {
@@ -1909,7 +1912,7 @@ button {
1909
1912
  }
1910
1913
 
1911
1914
  :host([appearance=brand]) {
1912
- --kemet-checkbox-color: var(--kemet-color-brand-primary-base);
1915
+ --kemet-checkbox-color: var(--kemet-color-brand-primary-darker);
1913
1916
  }
1914
1917
 
1915
1918
  :host([appearance=error]) {
@@ -2873,7 +2876,7 @@ button {
2873
2876
  }
2874
2877
 
2875
2878
  :host([appearance=brand]:not([disabled])) {
2876
- --kemet-fab-color: var(--kemet-color-brand-primary-base);
2879
+ --kemet-fab-color: var(--kemet-color-brand-primary-darker);
2877
2880
  }
2878
2881
 
2879
2882
  :host([appearance=error]:not([disabled])) {
@@ -3740,7 +3743,7 @@ input[type=search]::-webkit-search-results-decoration {
3740
3743
 
3741
3744
 
3742
3745
  :host([appearance=brand]) {
3743
- --kemet-input-color: var(--kemet-color-brand-primary-base);
3746
+ --kemet-input-color: var(--kemet-color-brand-primary-darker);
3744
3747
  }
3745
3748
 
3746
3749
  :host([appearance=error]) {
@@ -3761,7 +3764,7 @@ input[type=search]::-webkit-search-results-decoration {
3761
3764
 
3762
3765
 
3763
3766
  :host([appearance=brand][filled]) {
3764
- --_kemet-input-background-color: var(--kemet-color-brand-primary-base);
3767
+ --_kemet-input-background-color: var(--kemet-color-brand-primary-darker);
3765
3768
  }
3766
3769
 
3767
3770
  :host([appearance=error][filled]) {
@@ -4730,7 +4733,7 @@ input {
4730
4733
  }
4731
4734
 
4732
4735
  :host([appearance=brand]) {
4733
- --kemet-input-combo-color: var(--kemet-color-brand-primary-base);
4736
+ --kemet-input-combo-color: var(--kemet-color-brand-primary-darker);
4734
4737
  }
4735
4738
 
4736
4739
  :host([appearance=error]) {
@@ -4750,7 +4753,7 @@ input {
4750
4753
  }
4751
4754
 
4752
4755
  :host([appearance=brand][filled]) {
4753
- --_kemet-input-combo-background-color: var(--kemet-color-brand-primary-base);
4756
+ --_kemet-input-combo-background-color: var(--kemet-color-brand-primary-darker);
4754
4757
  }
4755
4758
 
4756
4759
  :host([appearance=error][filled]) {
@@ -5340,7 +5343,7 @@ input {
5340
5343
  opacity: 0;
5341
5344
  }
5342
5345
 
5343
- button {
5346
+ [part=button] {
5344
5347
  display: inline-flex;
5345
5348
  align-items: center;
5346
5349
  justify-content: center;
@@ -5386,12 +5389,6 @@ var KemetRadio = class extends LitElement23 {
5386
5389
  const radiosElement = this.closest("kemet-radios");
5387
5390
  this.name = radiosElement.name || "radio-button";
5388
5391
  this.input = this.shadowRoot?.querySelector("input");
5389
- this.setAttribute("role", "radio");
5390
- if (this.checked) {
5391
- this.setAttribute("aria-checked", "true");
5392
- } else {
5393
- this.setAttribute("aria-checked", "false");
5394
- }
5395
5392
  emitEvent(this, "kemet-radio-mounted", {
5396
5393
  bubbles: true,
5397
5394
  composed: true,
@@ -5413,7 +5410,7 @@ var KemetRadio = class extends LitElement23 {
5413
5410
  @blur=${() => this.handleBlur()}
5414
5411
  @focus=${() => this.handleFocus()}
5415
5412
  />
5416
- <button part="button" aria-label=${this.label}>${this.makeDot()}</button>
5413
+ <button part="button">${this.makeDot()}</button>
5417
5414
  <span part="text">${this.label}</span>
5418
5415
  </label>
5419
5416
  `;
@@ -5549,7 +5546,6 @@ var KemetRadios = class extends LitElement24 {
5549
5546
  }
5550
5547
  firstUpdated() {
5551
5548
  this.radios = this.querySelectorAll("kemet-radio");
5552
- this.setAttribute("role", "radiogroup");
5553
5549
  emitEvent(this, "kemet-radios-mounted", {
5554
5550
  bubbles: true,
5555
5551
  composed: true,
@@ -5563,18 +5559,13 @@ var KemetRadios = class extends LitElement24 {
5563
5559
  return html24`
5564
5560
  <fieldset part="fieldset">
5565
5561
  ${this.legend !== "" ? html24`<legend part="legend">${this.legend}</legend>` : null}
5566
- <slot @click=${(event) => this.handleClick(event)} @keydown=${(event) => this.handleKeyDown(event)} @slotchange=${() => this.handleSlotChange()}></slot>
5562
+ <slot @click=${(event) => this.handleClick(event)} @keydown=${(event) => this.handleKeyDown(event)}></slot>
5567
5563
  </fieldset>
5568
5564
  ${this.makeMessage()}
5569
5565
  `;
5570
5566
  }
5571
5567
  handleClick(event) {
5572
5568
  const target = event.target;
5573
- this.radios.forEach((radio) => {
5574
- radio.checked = false;
5575
- radio.tabIndex = radio === target ? 0 : -1;
5576
- radio.setAttribute("aria-checked", "false");
5577
- });
5578
5569
  if (!target.disabled) {
5579
5570
  target.checked = true;
5580
5571
  target.setAttribute("aria-checked", "true");
@@ -5614,17 +5605,6 @@ var KemetRadios = class extends LitElement24 {
5614
5605
  }
5615
5606
  }
5616
5607
  }
5617
- handleSlotChange() {
5618
- const radios = Array.from(this.radios);
5619
- const checkedRadio = radios.find((radio) => radio.checked);
5620
- this.radios.forEach((radio) => {
5621
- radio.tabIndex = -1;
5622
- radio.input.tabIndex = -1;
5623
- });
5624
- if (checkedRadio) {
5625
- checkedRadio.tabIndex = 0;
5626
- }
5627
- }
5628
5608
  makeMessage() {
5629
5609
  if (this.appearance === "error" || this.appearance === "warning") {
5630
5610
  return html24`<span part="message">${this.message}</span>`;
@@ -5915,7 +5895,7 @@ option {
5915
5895
  }
5916
5896
 
5917
5897
  :host([appearance=brand]) {
5918
- --kemet-select-color: var(--kemet-color-brand-primary-base);
5898
+ --kemet-select-color: var(--kemet-color-brand-primary-darker);
5919
5899
  }
5920
5900
 
5921
5901
  :host([appearance=error]) {
@@ -5971,7 +5951,7 @@ option {
5971
5951
 
5972
5952
 
5973
5953
  :host([appearance=brand][filled]) {
5974
- --_kemet-select-background-color: var(--kemet-color-brand-primary-base);
5954
+ --_kemet-select-background-color: var(--kemet-color-brand-primary-darker);
5975
5955
  }
5976
5956
 
5977
5957
  :host([appearance=error][filled]) {