@phcdevworks/spectre-components 1.19.0 → 1.21.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +770 -125
- package/dist/accordion-item.cjs +540 -0
- package/dist/accordion-item.cjs.map +1 -0
- package/dist/accordion-item.d.cts +59 -0
- package/dist/accordion-item.d.ts +59 -0
- package/dist/accordion-item.js +537 -0
- package/dist/accordion-item.js.map +1 -0
- package/dist/accordion.cjs +468 -0
- package/dist/accordion.cjs.map +1 -0
- package/dist/accordion.d.cts +38 -0
- package/dist/accordion.d.ts +38 -0
- package/dist/accordion.js +465 -0
- package/dist/accordion.js.map +1 -0
- package/dist/alert.cjs +166 -65
- package/dist/alert.cjs.map +1 -1
- package/dist/alert.d.cts +41 -8
- package/dist/alert.d.ts +41 -8
- package/dist/alert.js +168 -67
- package/dist/alert.js.map +1 -1
- package/dist/avatar.cjs +27 -1
- package/dist/avatar.cjs.map +1 -1
- package/dist/avatar.d.cts +19 -3
- package/dist/avatar.d.ts +19 -3
- package/dist/avatar.js +27 -1
- package/dist/avatar.js.map +1 -1
- package/dist/badge.cjs +83 -3
- package/dist/badge.cjs.map +1 -1
- package/dist/badge.d.cts +51 -3
- package/dist/badge.d.ts +51 -3
- package/dist/badge.js +83 -3
- package/dist/badge.js.map +1 -1
- package/dist/breadcrumb.cjs +464 -0
- package/dist/breadcrumb.cjs.map +1 -0
- package/dist/breadcrumb.d.cts +32 -0
- package/dist/breadcrumb.d.ts +32 -0
- package/dist/breadcrumb.js +461 -0
- package/dist/breadcrumb.js.map +1 -0
- package/dist/button.cjs +32 -2
- package/dist/button.cjs.map +1 -1
- package/dist/button.d.cts +19 -3
- package/dist/button.d.ts +19 -3
- package/dist/button.js +32 -2
- package/dist/button.js.map +1 -1
- package/dist/card-bleed.cjs +458 -0
- package/dist/card-bleed.cjs.map +1 -0
- package/dist/card-bleed.d.cts +37 -0
- package/dist/card-bleed.d.ts +37 -0
- package/dist/card-bleed.js +455 -0
- package/dist/card-bleed.js.map +1 -0
- package/dist/card.cjs +61 -1
- package/dist/card.cjs.map +1 -1
- package/dist/card.d.cts +33 -4
- package/dist/card.d.ts +33 -4
- package/dist/card.js +60 -2
- package/dist/card.js.map +1 -1
- package/dist/carousel.cjs +655 -0
- package/dist/carousel.cjs.map +1 -0
- package/dist/carousel.d.cts +79 -0
- package/dist/carousel.d.ts +79 -0
- package/dist/carousel.js +652 -0
- package/dist/carousel.js.map +1 -0
- package/dist/checkbox.cjs +3 -1
- package/dist/checkbox.cjs.map +1 -1
- package/dist/checkbox.js +3 -1
- package/dist/checkbox.js.map +1 -1
- package/dist/choice-card.cjs +524 -0
- package/dist/choice-card.cjs.map +1 -0
- package/dist/choice-card.d.cts +81 -0
- package/dist/choice-card.d.ts +81 -0
- package/dist/choice-card.js +521 -0
- package/dist/choice-card.js.map +1 -0
- package/dist/container.cjs +23 -6
- package/dist/container.cjs.map +1 -1
- package/dist/container.d.cts +9 -3
- package/dist/container.d.ts +9 -3
- package/dist/container.js +23 -7
- package/dist/container.js.map +1 -1
- package/dist/datepicker.cjs +580 -0
- package/dist/datepicker.cjs.map +1 -0
- package/dist/datepicker.d.cts +78 -0
- package/dist/datepicker.d.ts +78 -0
- package/dist/datepicker.js +577 -0
- package/dist/datepicker.js.map +1 -0
- package/dist/dom-CX9bgbcQ.d.cts +3 -0
- package/dist/dom-CX9bgbcQ.d.ts +3 -0
- package/dist/dropdown.cjs +66 -3
- package/dist/dropdown.cjs.map +1 -1
- package/dist/dropdown.d.cts +22 -2
- package/dist/dropdown.d.ts +22 -2
- package/dist/dropdown.js +67 -4
- package/dist/dropdown.js.map +1 -1
- package/dist/external-auth-button.cjs +494 -0
- package/dist/external-auth-button.cjs.map +1 -0
- package/dist/external-auth-button.d.cts +71 -0
- package/dist/external-auth-button.d.ts +71 -0
- package/dist/external-auth-button.js +491 -0
- package/dist/external-auth-button.js.map +1 -0
- package/dist/fieldset.cjs +3 -1
- package/dist/fieldset.cjs.map +1 -1
- package/dist/fieldset.js +3 -1
- package/dist/fieldset.js.map +1 -1
- package/dist/file-input.cjs +371 -0
- package/dist/file-input.cjs.map +1 -0
- package/dist/file-input.d.cts +96 -0
- package/dist/file-input.d.ts +96 -0
- package/dist/file-input.js +367 -0
- package/dist/file-input.js.map +1 -0
- package/dist/footer-chip.cjs +22 -2
- package/dist/footer-chip.cjs.map +1 -1
- package/dist/footer-chip.d.cts +12 -1
- package/dist/footer-chip.d.ts +12 -1
- package/dist/footer-chip.js +22 -2
- package/dist/footer-chip.js.map +1 -1
- package/dist/footer-link.cjs +19 -1
- package/dist/footer-link.cjs.map +1 -1
- package/dist/footer-link.d.cts +12 -1
- package/dist/footer-link.d.ts +12 -1
- package/dist/footer-link.js +19 -1
- package/dist/footer-link.js.map +1 -1
- package/dist/footer.cjs +62 -1
- package/dist/footer.cjs.map +1 -1
- package/dist/footer.d.cts +15 -0
- package/dist/footer.d.ts +15 -0
- package/dist/footer.js +63 -2
- package/dist/footer.js.map +1 -1
- package/dist/{form-TvtLcoW0.d.cts → form-CVO7mlDa.d.cts} +42 -9
- package/dist/{form-TvtLcoW0.d.ts → form-CVO7mlDa.d.ts} +42 -9
- package/dist/grid.cjs +35 -1
- package/dist/grid.cjs.map +1 -1
- package/dist/grid.d.cts +9 -3
- package/dist/grid.d.ts +9 -3
- package/dist/grid.js +35 -2
- package/dist/grid.js.map +1 -1
- package/dist/icon-box.cjs +27 -1
- package/dist/icon-box.cjs.map +1 -1
- package/dist/icon-box.d.cts +19 -3
- package/dist/icon-box.d.ts +19 -3
- package/dist/icon-box.js +27 -1
- package/dist/icon-box.js.map +1 -1
- package/dist/index.cjs +3849 -109
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +26 -1
- package/dist/index.d.ts +26 -1
- package/dist/index.js +3787 -112
- package/dist/index.js.map +1 -1
- package/dist/input-group.cjs +471 -0
- package/dist/input-group.cjs.map +1 -0
- package/dist/input-group.d.cts +31 -0
- package/dist/input-group.d.ts +31 -0
- package/dist/input-group.js +468 -0
- package/dist/input-group.js.map +1 -0
- package/dist/input.cjs +96 -4
- package/dist/input.cjs.map +1 -1
- package/dist/input.d.cts +45 -6
- package/dist/input.d.ts +45 -6
- package/dist/input.js +98 -6
- package/dist/input.js.map +1 -1
- package/dist/label.cjs +3 -1
- package/dist/label.cjs.map +1 -1
- package/dist/label.js +3 -1
- package/dist/label.js.map +1 -1
- package/dist/list-group-item.cjs +367 -0
- package/dist/list-group-item.cjs.map +1 -0
- package/dist/list-group-item.d.cts +73 -0
- package/dist/list-group-item.d.ts +73 -0
- package/dist/list-group-item.js +364 -0
- package/dist/list-group-item.js.map +1 -0
- package/dist/list-group.cjs +610 -0
- package/dist/list-group.cjs.map +1 -0
- package/dist/list-group.d.cts +58 -0
- package/dist/list-group.d.ts +58 -0
- package/dist/list-group.js +607 -0
- package/dist/list-group.js.map +1 -0
- package/dist/modal.cjs +70 -35
- package/dist/modal.cjs.map +1 -1
- package/dist/modal.d.cts +14 -2
- package/dist/modal.d.ts +14 -2
- package/dist/modal.js +70 -35
- package/dist/modal.js.map +1 -1
- package/dist/nav-item.cjs +107 -4
- package/dist/nav-item.cjs.map +1 -1
- package/dist/nav-item.d.cts +52 -2
- package/dist/nav-item.d.ts +52 -2
- package/dist/nav-item.js +108 -5
- package/dist/nav-item.js.map +1 -1
- package/dist/nav.cjs +57 -1
- package/dist/nav.cjs.map +1 -1
- package/dist/nav.d.cts +15 -1
- package/dist/nav.d.ts +15 -1
- package/dist/nav.js +58 -2
- package/dist/nav.js.map +1 -1
- package/dist/offcanvas.cjs +621 -0
- package/dist/offcanvas.cjs.map +1 -0
- package/dist/offcanvas.d.cts +61 -0
- package/dist/offcanvas.d.ts +61 -0
- package/dist/offcanvas.js +617 -0
- package/dist/offcanvas.js.map +1 -0
- package/dist/pagination.cjs +452 -0
- package/dist/pagination.cjs.map +1 -0
- package/dist/pagination.d.cts +69 -0
- package/dist/pagination.d.ts +69 -0
- package/dist/pagination.js +448 -0
- package/dist/pagination.js.map +1 -0
- package/dist/popover.cjs +534 -0
- package/dist/popover.cjs.map +1 -0
- package/dist/popover.d.cts +59 -0
- package/dist/popover.d.ts +59 -0
- package/dist/popover.js +530 -0
- package/dist/popover.js.map +1 -0
- package/dist/pricing-card.cjs +153 -64
- package/dist/pricing-card.cjs.map +1 -1
- package/dist/pricing-card.d.cts +34 -6
- package/dist/pricing-card.d.ts +34 -6
- package/dist/pricing-card.js +154 -65
- package/dist/pricing-card.js.map +1 -1
- package/dist/progress.cjs +403 -0
- package/dist/progress.cjs.map +1 -0
- package/dist/progress.d.cts +70 -0
- package/dist/progress.d.ts +70 -0
- package/dist/progress.js +398 -0
- package/dist/progress.js.map +1 -0
- package/dist/prose.cjs +425 -0
- package/dist/prose.cjs.map +1 -0
- package/dist/prose.d.cts +21 -0
- package/dist/prose.d.ts +21 -0
- package/dist/prose.js +422 -0
- package/dist/prose.js.map +1 -0
- package/dist/radio.cjs +3 -1
- package/dist/radio.cjs.map +1 -1
- package/dist/radio.js +3 -1
- package/dist/radio.js.map +1 -1
- package/dist/range.cjs +381 -0
- package/dist/range.cjs.map +1 -0
- package/dist/range.d.cts +76 -0
- package/dist/range.d.ts +76 -0
- package/dist/range.js +378 -0
- package/dist/range.js.map +1 -0
- package/dist/rating.cjs +33 -0
- package/dist/rating.cjs.map +1 -1
- package/dist/rating.d.cts +38 -3
- package/dist/rating.d.ts +38 -3
- package/dist/rating.js +33 -0
- package/dist/rating.js.map +1 -1
- package/dist/section.cjs +27 -3
- package/dist/section.cjs.map +1 -1
- package/dist/section.d.cts +16 -1
- package/dist/section.d.ts +16 -1
- package/dist/section.js +27 -4
- package/dist/section.js.map +1 -1
- package/dist/select.cjs +6 -1
- package/dist/select.cjs.map +1 -1
- package/dist/select.d.cts +7 -1
- package/dist/select.d.ts +7 -1
- package/dist/select.js +6 -1
- package/dist/select.js.map +1 -1
- package/dist/sidebar-link.cjs +19 -1
- package/dist/sidebar-link.cjs.map +1 -1
- package/dist/sidebar-link.d.cts +13 -2
- package/dist/sidebar-link.d.ts +13 -2
- package/dist/sidebar-link.js +19 -1
- package/dist/sidebar-link.js.map +1 -1
- package/dist/sidebar-toggle.cjs +3 -1
- package/dist/sidebar-toggle.cjs.map +1 -1
- package/dist/sidebar-toggle.js +3 -1
- package/dist/sidebar-toggle.js.map +1 -1
- package/dist/sidebar.cjs +33 -1
- package/dist/sidebar.cjs.map +1 -1
- package/dist/sidebar.d.cts +1 -0
- package/dist/sidebar.d.ts +1 -0
- package/dist/sidebar.js +34 -2
- package/dist/sidebar.js.map +1 -1
- package/dist/spinner.cjs +2 -1
- package/dist/spinner.cjs.map +1 -1
- package/dist/spinner.d.cts +2 -2
- package/dist/spinner.d.ts +2 -2
- package/dist/spinner.js +2 -1
- package/dist/spinner.js.map +1 -1
- package/dist/stack.cjs +4 -2
- package/dist/stack.cjs.map +1 -1
- package/dist/stack.d.cts +2 -2
- package/dist/stack.d.ts +2 -2
- package/dist/stack.js +4 -2
- package/dist/stack.js.map +1 -1
- package/dist/states-Bgzwu_XZ.d.cts +9 -0
- package/dist/states-Bgzwu_XZ.d.ts +9 -0
- package/dist/stepper.cjs +495 -0
- package/dist/stepper.cjs.map +1 -0
- package/dist/stepper.d.cts +40 -0
- package/dist/stepper.d.ts +40 -0
- package/dist/stepper.js +491 -0
- package/dist/stepper.js.map +1 -0
- package/dist/switch.cjs +492 -0
- package/dist/switch.cjs.map +1 -0
- package/dist/switch.d.cts +82 -0
- package/dist/switch.d.ts +82 -0
- package/dist/switch.js +488 -0
- package/dist/switch.js.map +1 -0
- package/dist/tab-panel.cjs +465 -0
- package/dist/tab-panel.cjs.map +1 -0
- package/dist/tab-panel.d.cts +48 -0
- package/dist/tab-panel.d.ts +48 -0
- package/dist/tab-panel.js +462 -0
- package/dist/tab-panel.js.map +1 -0
- package/dist/table.cjs +506 -0
- package/dist/table.cjs.map +1 -0
- package/dist/table.d.cts +54 -0
- package/dist/table.d.ts +54 -0
- package/dist/table.js +501 -0
- package/dist/table.js.map +1 -0
- package/dist/tabs.cjs +596 -0
- package/dist/tabs.cjs.map +1 -0
- package/dist/tabs.d.cts +65 -0
- package/dist/tabs.d.ts +65 -0
- package/dist/tabs.js +592 -0
- package/dist/tabs.js.map +1 -0
- package/dist/tag.cjs +27 -1
- package/dist/tag.cjs.map +1 -1
- package/dist/tag.d.cts +19 -3
- package/dist/tag.d.ts +19 -3
- package/dist/tag.js +27 -1
- package/dist/tag.js.map +1 -1
- package/dist/testimonial.cjs +162 -64
- package/dist/testimonial.cjs.map +1 -1
- package/dist/testimonial.d.cts +36 -8
- package/dist/testimonial.d.ts +36 -8
- package/dist/testimonial.js +163 -65
- package/dist/testimonial.js.map +1 -1
- package/dist/text.cjs +65 -6
- package/dist/text.cjs.map +1 -1
- package/dist/text.d.cts +24 -3
- package/dist/text.d.ts +24 -3
- package/dist/text.js +64 -8
- package/dist/text.js.map +1 -1
- package/dist/textarea.cjs +3 -0
- package/dist/textarea.cjs.map +1 -1
- package/dist/textarea.d.cts +7 -1
- package/dist/textarea.d.ts +7 -1
- package/dist/textarea.js +3 -0
- package/dist/textarea.js.map +1 -1
- package/dist/toast.cjs +34 -1
- package/dist/toast.cjs.map +1 -1
- package/dist/toast.d.cts +15 -2
- package/dist/toast.d.ts +15 -2
- package/dist/toast.js +34 -1
- package/dist/toast.js.map +1 -1
- package/dist/tooltip.cjs +32 -0
- package/dist/tooltip.cjs.map +1 -1
- package/dist/tooltip.d.cts +15 -2
- package/dist/tooltip.d.ts +15 -2
- package/dist/tooltip.js +32 -0
- package/dist/tooltip.js.map +1 -1
- package/package.json +130 -15
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/utils/form.ts","../src/utils/base.ts","../src/utils/dom.ts","../src/utils/projectable.ts","../src/components/button/sp-button.ts","../src/components/input/sp-input.ts","../src/components/textarea/sp-textarea.ts","../src/components/select/sp-select.ts","../src/components/checkbox/sp-checkbox.ts","../src/components/radio/sp-radio.ts","../src/components/label/sp-label.ts","../src/components/fieldset/sp-fieldset.ts","../src/components/badge/sp-badge.ts","../src/components/card/sp-card.ts","../src/components/icon-box/sp-icon-box.ts","../src/components/rating/sp-rating.ts","../src/components/testimonial/sp-testimonial.ts","../src/components/alert/sp-alert.ts","../src/components/avatar/sp-avatar.ts","../src/components/spinner/sp-spinner.ts","../src/components/tag/sp-tag.ts","../src/components/pricing-card/sp-pricing-card.ts","../src/components/container/sp-container.ts","../src/components/grid/sp-grid.ts","../src/components/section/sp-section.ts","../src/components/stack/sp-stack.ts","../src/components/dropdown/sp-dropdown.ts","../src/components/footer/sp-footer.ts","../src/components/footer-chip/sp-footer-chip.ts","../src/components/footer-link/sp-footer-link.ts","../src/components/modal/sp-modal.ts","../src/components/nav/sp-nav.ts","../src/components/nav-item/sp-nav-item.ts","../src/components/sidebar/sp-sidebar.ts","../src/components/sidebar-link/sp-sidebar-link.ts","../src/components/sidebar-toggle/sp-sidebar-toggle.ts","../src/components/toast/sp-toast.ts","../src/components/tooltip/sp-tooltip.ts","../src/components/text/sp-text.ts","../src/index.ts"],"names":["LitElement","getButtonClasses","html","getInputLabelClasses","nothing","ifDefined","getInputClasses","live","getTextareaClasses","getSelectClasses","getCheckboxClasses","getRadioClasses","getLabelClasses","getFieldsetLegendClasses","getFieldsetClasses","getBadgeClasses","getCardClasses","getIconBoxClasses","getRatingClasses","getRatingStarClasses","getRatingStarsClasses","getRatingTextClasses","getTestimonialClasses","getAlertClasses","getAvatarClasses","getSpinnerClasses","getTagClasses","getPricingCardClasses","getContainerClasses","getGridClasses","getSectionClasses","getStackClasses","getDropdownClasses","getDropdownMenuClasses","getFooterClasses","getFooterChipClasses","getFooterLinkClasses","getModalOverlayClasses","getModalClasses","getNavClasses","getNavLinkClasses","getSidebarClasses","getSidebarToggleClasses","getSidebarBackdropClasses","getSidebarLinkClasses","getToastClasses","getToastIconClasses","getTooltipClasses","literal","getTextClasses","staticHtml"],"mappings":"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","file":"index.cjs","sourcesContent":["import {\n type ButtonSize,\n type ButtonVariant,\n type InputSize\n} from '@phcdevworks/spectre-ui'\n\nexport const spectreInputSizes = ['sm', 'md', 'lg'] as const\nexport type SpectreInputSize = (typeof spectreInputSizes)[number]\n\nexport function isInputSize(value: unknown): value is InputSize | ButtonSize {\n return (spectreInputSizes as readonly string[]).includes(value as string)\n}\n\nexport const spectreButtonVariants = [\n 'primary',\n 'secondary',\n 'ghost',\n 'danger',\n 'success',\n 'cta',\n 'accent',\n 'inverse'\n] as const\n\nexport type SpectreButtonVariant = (typeof spectreButtonVariants)[number]\n\nexport function isButtonVariant(value: unknown): value is ButtonVariant {\n return (spectreButtonVariants as readonly string[]).includes(value as string)\n}\n\nexport const spectreButtonTypes = ['button', 'submit', 'reset'] as const\n\nexport type SpectreButtonType = (typeof spectreButtonTypes)[number]\n\nexport function isButtonType(value: unknown): value is SpectreButtonType {\n return (spectreButtonTypes as readonly string[]).includes(value as string)\n}\n\nexport const spectreInputTypes = [\n 'text',\n 'email',\n 'password',\n 'search',\n 'tel',\n 'url',\n 'number',\n 'date',\n 'datetime-local',\n 'month',\n 'time',\n 'week'\n] as const\n\nexport type SpectreInputType = (typeof spectreInputTypes)[number]\n\nexport function isInputType(value: unknown): value is SpectreInputType {\n return (spectreInputTypes as readonly string[]).includes(value as string)\n}\n\nexport const spectreBadgeVariants = [\n 'primary',\n 'secondary',\n 'success',\n 'warning',\n 'danger',\n 'neutral',\n 'info',\n 'ghost',\n 'outline',\n 'accent',\n 'cta',\n 'inverse'\n] as const\n\nexport type SpectreBadgeVariant = (typeof spectreBadgeVariants)[number]\n\nexport function isBadgeVariant(value: unknown): value is SpectreBadgeVariant {\n return (spectreBadgeVariants as readonly string[]).includes(value as string)\n}\n\nexport const spectreAlertVariants = [\n 'info',\n 'success',\n 'warning',\n 'danger',\n 'neutral'\n] as const\n\nexport type SpectreAlertVariant = (typeof spectreAlertVariants)[number]\n\nexport function isAlertVariant(value: unknown): value is SpectreAlertVariant {\n return (spectreAlertVariants as readonly string[]).includes(value as string)\n}\n\nexport const spectreCardVariants = [\n 'elevated',\n 'flat',\n 'outline',\n 'ghost'\n] as const\n\nexport type SpectreCardVariant = (typeof spectreCardVariants)[number]\n\nexport function isCardVariant(value: unknown): value is SpectreCardVariant {\n return (spectreCardVariants as readonly string[]).includes(value as string)\n}\n\nexport const spectreCardPaddingSizes = ['sm', 'md', 'lg'] as const\n\nexport type SpectreCardPaddingSize = (typeof spectreCardPaddingSizes)[number]\n\nexport function isCardPaddingSize(\n value: unknown\n): value is SpectreCardPaddingSize {\n return (spectreCardPaddingSizes as readonly string[]).includes(\n value as string\n )\n}\n\nexport const spectreIconBoxVariants = [\n 'primary',\n 'secondary',\n 'success',\n 'warning',\n 'danger',\n 'info',\n 'neutral',\n 'ghost',\n 'accent',\n 'cta',\n 'outline'\n] as const\n\nexport type SpectreIconBoxVariant = (typeof spectreIconBoxVariants)[number]\n\nexport function isIconBoxVariant(\n value: unknown\n): value is SpectreIconBoxVariant {\n return (spectreIconBoxVariants as readonly string[]).includes(value as string)\n}\n\nexport const spectreTestimonialVariants = [\n 'elevated',\n 'flat',\n 'outline',\n 'ghost'\n] as const\n\nexport type SpectreTestimonialVariant =\n (typeof spectreTestimonialVariants)[number]\n\nexport function isTestimonialVariant(\n value: unknown\n): value is SpectreTestimonialVariant {\n return (spectreTestimonialVariants as readonly string[]).includes(\n value as string\n )\n}\n\nexport const spectreSpinnerVariants = [\n 'primary',\n 'secondary',\n 'success',\n 'warning',\n 'danger',\n 'info',\n 'neutral',\n 'accent',\n 'cta'\n] as const\n\nexport type SpectreSpinnerVariant = (typeof spectreSpinnerVariants)[number]\n\nexport function isSpinnerVariant(\n value: unknown\n): value is SpectreSpinnerVariant {\n return (spectreSpinnerVariants as readonly string[]).includes(value as string)\n}\n\nexport const spectreTagVariants = [\n 'default',\n 'primary',\n 'secondary',\n 'success',\n 'warning',\n 'danger',\n 'info',\n 'neutral',\n 'accent',\n 'cta',\n 'outline',\n 'ghost'\n] as const\n\nexport type SpectreTagVariant = (typeof spectreTagVariants)[number]\n\nexport function isTagVariant(value: unknown): value is SpectreTagVariant {\n return (spectreTagVariants as readonly string[]).includes(value as string)\n}\n\nexport const spectreAvatarSizes = ['xs', 'sm', 'md', 'lg', 'xl'] as const\n\nexport type SpectreAvatarSize = (typeof spectreAvatarSizes)[number]\n\nexport function isAvatarSize(value: unknown): value is SpectreAvatarSize {\n return (spectreAvatarSizes as readonly string[]).includes(value as string)\n}\n\nexport const spectreAvatarShapes = ['circle', 'square'] as const\n\nexport type SpectreAvatarShape = (typeof spectreAvatarShapes)[number]\n\nexport function isAvatarShape(value: unknown): value is SpectreAvatarShape {\n return (spectreAvatarShapes as readonly string[]).includes(value as string)\n}\n\nexport const spectreContainerMaxWidths = ['prose'] as const\n\nexport type SpectreContainerMaxWidth =\n (typeof spectreContainerMaxWidths)[number]\n\nexport function isContainerMaxWidth(\n value: unknown\n): value is SpectreContainerMaxWidth {\n return (spectreContainerMaxWidths as readonly string[]).includes(\n value as string\n )\n}\n\nexport const spectreGridColumns = [1, 2, 3, 4, 6, 12] as const\n\nexport type SpectreGridColumns = (typeof spectreGridColumns)[number]\n\nexport function isGridColumns(value: unknown): value is SpectreGridColumns {\n return (spectreGridColumns as readonly number[]).includes(value as number)\n}\n\nexport const spectreGridGaps = ['sm', 'md', 'lg'] as const\n\nexport type SpectreGridGap = (typeof spectreGridGaps)[number]\n\nexport function isGridGap(value: unknown): value is SpectreGridGap {\n return (spectreGridGaps as readonly string[]).includes(value as string)\n}\n\nexport const spectreGridAligns = [\n 'start',\n 'center',\n 'end',\n 'baseline',\n 'stretch'\n] as const\n\nexport type SpectreGridAlign = (typeof spectreGridAligns)[number]\n\nexport function isGridAlign(value: unknown): value is SpectreGridAlign {\n return (spectreGridAligns as readonly string[]).includes(value as string)\n}\n\nexport const spectreGridSpans = [\n 1,\n 2,\n 3,\n 4,\n 5,\n 6,\n 7,\n 8,\n 9,\n 10,\n 11,\n 12,\n 'full'\n] as const\n\nexport type SpectreGridSpan = (typeof spectreGridSpans)[number]\n\nexport function isGridSpan(value: unknown): value is SpectreGridSpan {\n return (spectreGridSpans as readonly (number | string)[]).includes(\n value as number | string\n )\n}\n\nexport interface SpectreGridSpanOptions {\n base?: SpectreGridSpan\n md?: SpectreGridSpan\n lg?: SpectreGridSpan\n}\n\nexport function isGridSpanOptions(\n value: unknown\n): value is SpectreGridSpanOptions {\n if (typeof value !== 'object' || value === null) {\n return false\n }\n const candidate = value as Record<string, unknown>\n return (\n (candidate.base === undefined || isGridSpan(candidate.base)) &&\n (candidate.md === undefined || isGridSpan(candidate.md)) &&\n (candidate.lg === undefined || isGridSpan(candidate.lg))\n )\n}\n\nexport const spectreGridOffsets = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11\n] as const\n\nexport type SpectreGridOffset = (typeof spectreGridOffsets)[number]\n\nexport function isGridOffset(value: unknown): value is SpectreGridOffset {\n return (spectreGridOffsets as readonly number[]).includes(value as number)\n}\n\nexport interface SpectreGridOffsetOptions {\n base?: SpectreGridOffset\n md?: SpectreGridOffset\n lg?: SpectreGridOffset\n}\n\nexport function isGridOffsetOptions(\n value: unknown\n): value is SpectreGridOffsetOptions {\n if (typeof value !== 'object' || value === null) {\n return false\n }\n const candidate = value as Record<string, unknown>\n return (\n (candidate.base === undefined || isGridOffset(candidate.base)) &&\n (candidate.md === undefined || isGridOffset(candidate.md)) &&\n (candidate.lg === undefined || isGridOffset(candidate.lg))\n )\n}\n\nexport const spectreGridOrders = [\n 'first',\n 'last',\n 'none',\n 1,\n 2,\n 3,\n 4,\n 5,\n 6,\n 7,\n 8,\n 9,\n 10,\n 11,\n 12\n] as const\n\nexport type SpectreGridOrder = (typeof spectreGridOrders)[number]\n\nexport function isGridOrder(value: unknown): value is SpectreGridOrder {\n return (spectreGridOrders as readonly (number | string)[]).includes(\n value as number | string\n )\n}\n\nexport interface SpectreGridOrderOptions {\n base?: SpectreGridOrder\n md?: SpectreGridOrder\n lg?: SpectreGridOrder\n}\n\nexport function isGridOrderOptions(\n value: unknown\n): value is SpectreGridOrderOptions {\n if (typeof value !== 'object' || value === null) {\n return false\n }\n const candidate = value as Record<string, unknown>\n return (\n (candidate.base === undefined || isGridOrder(candidate.base)) &&\n (candidate.md === undefined || isGridOrder(candidate.md)) &&\n (candidate.lg === undefined || isGridOrder(candidate.lg))\n )\n}\n\nexport const spectreGridLeadingWeights = [1.5, 1.6, 2, 2.5, 3] as const\n\nexport type SpectreGridLeadingWeight =\n (typeof spectreGridLeadingWeights)[number]\n\nexport function isGridLeadingWeight(\n value: unknown\n): value is SpectreGridLeadingWeight {\n return (spectreGridLeadingWeights as readonly number[]).includes(\n value as number\n )\n}\n\nexport interface SpectreGridLeadingWeightOptions {\n base?: SpectreGridLeadingWeight\n md?: SpectreGridLeadingWeight\n lg?: SpectreGridLeadingWeight\n}\n\nexport function isGridLeadingWeightOptions(\n value: unknown\n): value is SpectreGridLeadingWeightOptions {\n if (typeof value !== 'object' || value === null) {\n return false\n }\n const candidate = value as Record<string, unknown>\n return (\n (candidate.base === undefined || isGridLeadingWeight(candidate.base)) &&\n (candidate.md === undefined || isGridLeadingWeight(candidate.md)) &&\n (candidate.lg === undefined || isGridLeadingWeight(candidate.lg))\n )\n}\n\nexport interface SpectreGridLeadingTracksOptions {\n weight: SpectreGridLeadingWeight | SpectreGridLeadingWeightOptions\n}\n\nexport function isGridLeadingTracksOptions(\n value: unknown\n): value is SpectreGridLeadingTracksOptions {\n if (typeof value !== 'object' || value === null) {\n return false\n }\n const candidate = value as Record<string, unknown>\n return (\n isGridLeadingWeight(candidate.weight) ||\n isGridLeadingWeightOptions(candidate.weight)\n )\n}\n\nexport const spectreGridFixedTrackCounts = [1, 2, 3, 4] as const\n\nexport type SpectreGridFixedTrackCount =\n (typeof spectreGridFixedTrackCounts)[number]\n\nexport function isGridFixedTrackCount(\n value: unknown\n): value is SpectreGridFixedTrackCount {\n return (spectreGridFixedTrackCounts as readonly number[]).includes(\n value as number\n )\n}\n\nexport interface SpectreGridFixedTracksOptions {\n count: SpectreGridFixedTrackCount\n}\n\nexport function isGridFixedTracksOptions(\n value: unknown\n): value is SpectreGridFixedTracksOptions {\n if (typeof value !== 'object' || value === null) {\n return false\n }\n const candidate = value as Record<string, unknown>\n return isGridFixedTrackCount(candidate.count)\n}\n\nexport const spectreGridTemplates = [\n 'edge-fluid-edge',\n 'label-fluid-fluid'\n] as const\n\nexport type SpectreGridTemplate = (typeof spectreGridTemplates)[number]\n\nexport function isGridTemplate(value: unknown): value is SpectreGridTemplate {\n return (spectreGridTemplates as readonly string[]).includes(value as string)\n}\n\nexport interface SpectreGridExplicitTemplateOptions {\n template: SpectreGridTemplate\n weight?: SpectreGridLeadingWeight\n}\n\nexport function isGridExplicitTemplateOptions(\n value: unknown\n): value is SpectreGridExplicitTemplateOptions {\n if (typeof value !== 'object' || value === null) {\n return false\n }\n const candidate = value as Record<string, unknown>\n return (\n isGridTemplate(candidate.template) &&\n (candidate.weight === undefined || isGridLeadingWeight(candidate.weight))\n )\n}\n\nexport const spectreStackDirections = ['vertical', 'horizontal'] as const\n\nexport type SpectreStackDirection = (typeof spectreStackDirections)[number]\n\nexport function isStackDirection(\n value: unknown\n): value is SpectreStackDirection {\n return (spectreStackDirections as readonly string[]).includes(value as string)\n}\n\nexport const spectreStackBases = ['sidebar'] as const\n\nexport type SpectreStackBasis = (typeof spectreStackBases)[number]\n\nexport function isStackBasis(value: unknown): value is SpectreStackBasis {\n return (spectreStackBases as readonly string[]).includes(value as string)\n}\n\nexport const spectreNavAligns = ['start', 'center', 'end'] as const\n\nexport type SpectreNavAlign = (typeof spectreNavAligns)[number]\n\nexport function isNavAlign(value: unknown): value is SpectreNavAlign {\n return (spectreNavAligns as readonly string[]).includes(value as string)\n}\n\nexport const spectreStackAligns = ['center', 'stretch'] as const\n\nexport type SpectreStackAlign = (typeof spectreStackAligns)[number]\n\nexport function isStackAlign(value: unknown): value is SpectreStackAlign {\n return (spectreStackAligns as readonly string[]).includes(value as string)\n}\n\nexport const spectreStackGaps = ['sm', 'md', 'lg'] as const\n\nexport type SpectreStackGap = (typeof spectreStackGaps)[number]\n\nexport function isStackGap(value: unknown): value is SpectreStackGap {\n return (spectreStackGaps as readonly string[]).includes(value as string)\n}\n\nexport const spectreDropdownPlacements = [\n 'bottom-start',\n 'bottom-end',\n 'top-start',\n 'top-end'\n] as const\n\nexport type SpectreDropdownPlacement =\n (typeof spectreDropdownPlacements)[number]\n\nexport function isDropdownPlacement(\n value: unknown\n): value is SpectreDropdownPlacement {\n return (spectreDropdownPlacements as readonly string[]).includes(\n value as string\n )\n}\n\nexport const spectreToastVariants = [\n 'info',\n 'success',\n 'warning',\n 'danger'\n] as const\n\nexport type SpectreToastVariant = (typeof spectreToastVariants)[number]\n\nexport function isToastVariant(value: unknown): value is SpectreToastVariant {\n return (spectreToastVariants as readonly string[]).includes(value as string)\n}\n\nexport const spectreSidebarLinkLevels = ['parent', 'child'] as const\n\nexport type SpectreSidebarLinkLevel = (typeof spectreSidebarLinkLevels)[number]\n\nexport function isSidebarLinkLevel(\n value: unknown\n): value is SpectreSidebarLinkLevel {\n return (spectreSidebarLinkLevels as readonly string[]).includes(\n value as string\n )\n}\n\nexport const spectreTooltipPlacements = [\n 'top',\n 'bottom',\n 'left',\n 'right'\n] as const\n\nexport type SpectreTooltipPlacement = (typeof spectreTooltipPlacements)[number]\n\nexport function isTooltipPlacement(\n value: unknown\n): value is SpectreTooltipPlacement {\n return (spectreTooltipPlacements as readonly string[]).includes(\n value as string\n )\n}\n\nexport const spectreTextSizes = [\n 'xs',\n 'sm',\n 'md',\n 'lg',\n 'xl',\n '2xl',\n '3xl',\n '4xl',\n '5xl',\n '6xl'\n] as const\n\nexport type SpectreTextSize = (typeof spectreTextSizes)[number]\n\nexport function isTextSize(value: unknown): value is SpectreTextSize {\n return (spectreTextSizes as readonly string[]).includes(value as string)\n}\n\nexport const spectreTextVariants = [\n 'default',\n 'muted',\n 'subtle',\n 'meta',\n 'brand',\n 'onInverse',\n 'onInverseMuted'\n] as const\n\nexport type SpectreTextVariant = (typeof spectreTextVariants)[number]\n\nexport function isTextVariant(value: unknown): value is SpectreTextVariant {\n return (spectreTextVariants as readonly string[]).includes(value as string)\n}\n\nexport const spectreTextFamilies = ['sans', 'serif', 'mono'] as const\n\nexport type SpectreTextFamily = (typeof spectreTextFamilies)[number]\n\nexport function isTextFamily(value: unknown): value is SpectreTextFamily {\n return (spectreTextFamilies as readonly string[]).includes(value as string)\n}\n\nexport const spectreTextLevels = [\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'p',\n 'span'\n] as const\n\nexport type SpectreTextLevel = (typeof spectreTextLevels)[number]\n\nexport function isTextLevel(value: unknown): value is SpectreTextLevel {\n return (spectreTextLevels as readonly string[]).includes(value as string)\n}\n\nexport const spectreTextTransforms = [\n 'none',\n 'uppercase',\n 'lowercase',\n 'capitalize'\n] as const\n\nexport type SpectreTextTransform = (typeof spectreTextTransforms)[number]\n\nexport function isTextTransform(value: unknown): value is SpectreTextTransform {\n return (spectreTextTransforms as readonly string[]).includes(value as string)\n}\n\nexport function normalizeInt(\n value: unknown,\n fallback: number | undefined,\n min = 0\n): number | undefined {\n if (\n value == null ||\n typeof value !== 'number' ||\n !Number.isInteger(value) ||\n value < min\n ) {\n return fallback\n }\n return value\n}\n\nconst spectreUtilityClassPattern =\n /^sp-[a-z0-9]+(?:-[a-z0-9]+)*(?:__[a-z0-9]+(?:-[a-z0-9]+)*)?(?:--[a-z0-9]+(?:-[a-z0-9]+)*)?$/\n\nexport function sanitizeUtilityClasses(\n value: string | null | undefined\n): string {\n if (!value) {\n return ''\n }\n return value\n .split(/\\s+/)\n .filter((token) => spectreUtilityClassPattern.test(token))\n .join(' ')\n}\n","import { LitElement, type PropertyDeclarations } from 'lit'\n\nexport class SpectreBaseElement extends LitElement {\n static properties: PropertyDeclarations = {}\n\n private _ariaLabel: string | null = null\n private _ariaLabelledBy: string | null = null\n private _ariaDescribedBy: string | null = null\n private _autocapitalize = ''\n private _autofocus = false\n private _spellcheck: boolean | null = null\n private _title = ''\n private _id = ''\n\n get ariaLabel(): string | null {\n return this._ariaLabel\n }\n\n set ariaLabel(value: string | null) {\n if (this._ariaLabel === value) {\n return\n }\n this._ariaLabel = value\n this._removeHostAttribute('aria-label')\n this.requestUpdate()\n }\n\n get ariaLabelledBy(): string | null {\n return this._ariaLabelledBy\n }\n\n set ariaLabelledBy(value: string | null) {\n if (this._ariaLabelledBy === value) {\n return\n }\n this._ariaLabelledBy = value\n this._removeHostAttribute('aria-labelledby')\n this.requestUpdate()\n }\n\n get ariaDescribedBy(): string | null {\n return this._ariaDescribedBy\n }\n\n set ariaDescribedBy(value: string | null) {\n if (this._ariaDescribedBy === value) {\n return\n }\n this._ariaDescribedBy = value\n this._removeHostAttribute('aria-describedby')\n this.requestUpdate()\n }\n\n override get autocapitalize(): string {\n return this._autocapitalize\n }\n\n override set autocapitalize(value: string | undefined | null) {\n const normalizedValue = value ?? ''\n if (this._autocapitalize === normalizedValue) {\n return\n }\n this._autocapitalize = normalizedValue\n this._removeHostAttribute('autocapitalize')\n this.requestUpdate()\n }\n\n override get spellcheck(): boolean {\n return this._spellcheck ?? super.spellcheck\n }\n\n override set spellcheck(value: boolean | undefined | null) {\n if (this._spellcheck === value) {\n return\n }\n this._spellcheck = value ?? null\n this._removeHostAttribute('spellcheck')\n this.requestUpdate()\n }\n\n override get title(): string {\n return this._title\n }\n\n override set title(value: string | undefined | null) {\n const normalizedValue = value ?? ''\n if (this._title === normalizedValue) {\n return\n }\n this._title = normalizedValue\n this._removeHostAttribute('title')\n this.requestUpdate()\n }\n\n override get id(): string {\n return this._id\n }\n\n override set id(value: string | undefined | null) {\n const normalizedValue = value ?? ''\n if (this._id === normalizedValue) {\n return\n }\n this._id = normalizedValue\n this._removeHostAttribute('id')\n this.requestUpdate()\n }\n\n override get autofocus(): boolean {\n return this._autofocus\n }\n\n override set autofocus(value: boolean | undefined | null) {\n const normalizedValue = !!value\n if (this._autofocus === normalizedValue) {\n return\n }\n this._autofocus = normalizedValue\n this._removeHostAttribute('autofocus')\n this.requestUpdate()\n }\n\n // Spectre components intentionally render in light DOM so the global\n // `@phcdevworks/spectre-ui` styling contract can apply directly.\n createRenderRoot(): this {\n return this\n }\n\n override connectedCallback(): void {\n super.connectedCallback()\n\n const proxiedAttributes = [\n 'id',\n 'title',\n 'autocapitalize',\n 'autofocus',\n 'spellcheck',\n 'aria-label',\n 'aria-labelledby',\n 'aria-describedby'\n ]\n\n proxiedAttributes.forEach((attr) => {\n const value = super.getAttribute(attr)\n if (value !== null) {\n this.setAttribute(attr, value)\n }\n })\n }\n\n override getAttribute(qualifiedName: string): string | null {\n switch (qualifiedName) {\n case 'id':\n return this.id || null\n case 'title':\n return this.title || null\n case 'autocapitalize':\n return this.autocapitalize || null\n case 'autofocus':\n return this.autofocus ? '' : null\n case 'spellcheck':\n return this._spellcheck !== null ? String(this._spellcheck) : null\n case 'aria-label':\n return this.ariaLabel\n case 'aria-labelledby':\n return this.ariaLabelledBy\n case 'aria-describedby':\n return this.ariaDescribedBy\n default:\n return super.getAttribute(qualifiedName)\n }\n }\n\n override hasAttribute(qualifiedName: string): boolean {\n switch (qualifiedName) {\n case 'id':\n return this.id !== ''\n case 'title':\n return this.title !== ''\n case 'autocapitalize':\n return this.autocapitalize !== ''\n case 'autofocus':\n return this.autofocus\n case 'spellcheck':\n return this._spellcheck !== null\n case 'aria-label':\n return this.ariaLabel !== null\n case 'aria-labelledby':\n return this.ariaLabelledBy !== null\n case 'aria-describedby':\n return this.ariaDescribedBy !== null\n default:\n return super.hasAttribute(qualifiedName)\n }\n }\n\n override setAttribute(qualifiedName: string, value: string): void {\n switch (qualifiedName) {\n case 'id':\n this.id = value\n break\n case 'title':\n this.title = value\n break\n case 'autocapitalize':\n this.autocapitalize = value\n break\n case 'autofocus':\n this.autofocus = true\n break\n case 'spellcheck':\n this.spellcheck = value !== 'false'\n break\n case 'aria-label':\n this.ariaLabel = value\n break\n case 'aria-labelledby':\n this.ariaLabelledBy = value\n break\n case 'aria-describedby':\n this.ariaDescribedBy = value\n break\n default:\n super.setAttribute(qualifiedName, value)\n }\n }\n\n override removeAttribute(qualifiedName: string): void {\n switch (qualifiedName) {\n case 'id':\n this.id = ''\n break\n case 'title':\n this.title = ''\n break\n case 'autocapitalize':\n this.autocapitalize = ''\n break\n case 'autofocus':\n this.autofocus = false\n break\n case 'spellcheck':\n this.spellcheck = null\n break\n case 'aria-label':\n this.ariaLabel = null\n break\n case 'aria-labelledby':\n this.ariaLabelledBy = null\n break\n case 'aria-describedby':\n this.ariaDescribedBy = null\n break\n default:\n super.removeAttribute(qualifiedName)\n }\n }\n\n private _removeHostAttribute(name: string): void {\n const host = this as unknown as HTMLElement\n if (HTMLElement.prototype.hasAttribute.call(host, name)) {\n // Use the native removeAttribute to avoid our own overridden version\n // which would reset the internal state.\n HTMLElement.prototype.removeAttribute.call(host, name)\n }\n }\n\n protected get forwardedAriaLabel(): string | undefined {\n const value = this.ariaLabel?.trim()\n return value ? value : undefined\n }\n\n protected get forwardedAriaLabelledBy(): string | undefined {\n const value = this.ariaLabelledBy?.trim()\n return value ? value : undefined\n }\n\n protected get forwardedAriaDescribedBy(): string | undefined {\n const value = this.ariaDescribedBy?.trim()\n return value ? value : undefined\n }\n\n // Subclasses that expose `disabled`/`loading` properties get this disabled\n // calculation for free instead of redeclaring it per component.\n protected get isDisabled(): boolean {\n const self = this as unknown as { disabled?: boolean; loading?: boolean }\n return (self.disabled ?? false) || (self.loading ?? false)\n }\n\n // Subclasses get this for free instead of redeclaring it per component.\n protected get hasForwardedLabel(): boolean {\n return Boolean(this.forwardedAriaLabel || this.forwardedAriaLabelledBy)\n }\n}\n","export function hasMeaningfulContent(nodes: readonly Node[]): boolean {\n return nodes.some((node) => {\n if (node.nodeType === Node.ELEMENT_NODE) {\n return true;\n }\n\n if (node.nodeType === Node.TEXT_NODE) {\n return (node.textContent?.trim().length ?? 0) > 0;\n }\n\n return false;\n });\n}\n","import { SpectreBaseElement } from './base';\nimport { hasMeaningfulContent } from './dom';\n\nexport abstract class SpectreProjectableElement extends SpectreBaseElement {\n protected projectedContent: Node[] = [];\n private contentObserver?: MutationObserver | undefined;\n\n // Return the native container whose existing children are also treated as\n // projected content sources (e.g. the rendered <button>, <select>, <label>).\n protected abstract getContentContainer(): Element | null;\n\n // Return true if the node was rendered by this component and should not be\n // treated as external projected content.\n protected abstract isInternalNode(node: Node): boolean;\n\n protected get hasProjectedContent(): boolean {\n return hasMeaningfulContent(this.projectedContent);\n }\n\n override connectedCallback(): void {\n super.connectedCallback();\n this.syncProjectedContent();\n this.startContentObserver();\n }\n\n override disconnectedCallback(): void {\n this.stopContentObserver();\n super.disconnectedCallback();\n }\n\n protected override update(changedProperties: Map<PropertyKey, unknown>): void {\n this.stopContentObserver();\n super.update(changedProperties);\n this.startContentObserver();\n }\n\n protected syncProjectedContent(): boolean {\n const nextProjectedContent: Node[] = [];\n const sourceNodes = [\n ...this.childNodes,\n ...(this.getContentContainer()?.childNodes ?? []),\n ];\n\n sourceNodes.forEach((node) => {\n if (!this.isInternalNode(node) && !nextProjectedContent.includes(node)) {\n nextProjectedContent.push(node);\n }\n });\n\n const hasChanged =\n nextProjectedContent.length !== this.projectedContent.length ||\n nextProjectedContent.some((node, index) => node !== this.projectedContent[index]);\n\n if (hasChanged) {\n this.projectedContent = nextProjectedContent;\n }\n\n return hasChanged;\n }\n\n private startContentObserver(): void {\n if (this.contentObserver) {\n return;\n }\n\n this.contentObserver = new MutationObserver((mutations) => {\n const isInternalMovement = mutations.every((mutation) =>\n [...mutation.removedNodes].every(\n (node) => this.isInternalNode(node) || this.contains(node),\n ) &&\n [...mutation.addedNodes].every((node) => this.isInternalNode(node)),\n );\n\n if (isInternalMovement) {\n return;\n }\n\n if (this.syncProjectedContent()) {\n this.requestUpdate();\n }\n });\n\n this.contentObserver.observe(this, { childList: true });\n }\n\n private stopContentObserver(): void {\n this.contentObserver?.disconnect();\n this.contentObserver = undefined;\n }\n}\n","import { html, nothing, type TemplateResult } from 'lit'\nimport { ifDefined } from 'lit/directives/if-defined.js'\n\nimport { SpectreProjectableElement } from '../../utils/projectable'\nimport {\n isButtonType,\n isButtonVariant,\n isInputSize,\n sanitizeUtilityClasses,\n type SpectreButtonType,\n type SpectreButtonVariant,\n type SpectreInputSize\n} from '../../utils/form'\n\nimport {\n getButtonClasses,\n getInputLabelClasses,\n type ButtonSize,\n type ButtonVariant\n} from '@phcdevworks/spectre-ui'\n\nexport type SpectreButtonTarget = '_blank' | '_self' | '_parent' | '_top'\n\nexport interface SpectreButtonProps {\n ariaLabel?: string | null\n ariaLabelledBy?: string | null\n ariaDescribedBy?: string | null\n autofocus?: boolean | null | undefined\n compact?: boolean | undefined\n disabled?: boolean | undefined\n form?: string | undefined\n fullWidth?: boolean | undefined\n href?: string | undefined\n iconOnly?: boolean | undefined\n id?: string | null | undefined\n innerClass?: string | undefined\n label?: string | undefined\n loading?: boolean | undefined\n loadingLabel?: string | undefined\n name?: string | undefined\n pill?: boolean | undefined\n rel?: string | undefined\n size?: SpectreInputSize | undefined\n target?: SpectreButtonTarget | undefined\n title?: string | null | undefined\n type?: SpectreButtonType | undefined\n variant?: SpectreButtonVariant | undefined\n value?: string | undefined\n}\n\nexport class SpectreButtonElement\n extends SpectreProjectableElement\n implements SpectreButtonProps\n{\n static properties = {\n compact: { type: Boolean, reflect: true },\n disabled: { type: Boolean, reflect: true },\n form: { type: String },\n fullWidth: { attribute: 'full-width', type: Boolean, reflect: true },\n href: { type: String, reflect: true },\n iconOnly: { attribute: 'icon-only', type: Boolean, reflect: true },\n innerClass: { attribute: 'inner-class', type: String },\n label: { type: String, reflect: true },\n loading: { type: Boolean, reflect: true },\n loadingLabel: { attribute: 'loading-label', type: String, reflect: true },\n name: { type: String, reflect: true },\n pill: { type: Boolean, reflect: true },\n rel: { type: String },\n size: { type: String, reflect: true },\n target: { type: String },\n type: { type: String, reflect: true },\n variant: { type: String, reflect: true },\n value: { type: String }\n }\n\n compact: boolean | undefined = false\n disabled: boolean | undefined = false\n form: string | undefined\n fullWidth: boolean | undefined = false\n href: string | undefined\n iconOnly: boolean | undefined = false\n innerClass: string | undefined = undefined\n label: string | undefined\n loading: boolean | undefined = false\n loadingLabel: string | undefined = 'Loading'\n name: string | undefined\n pill: boolean | undefined = false\n rel: string | undefined\n size: SpectreInputSize | undefined = 'md'\n target: SpectreButtonTarget | undefined\n type: SpectreButtonType | undefined = 'button'\n variant: SpectreButtonVariant | undefined = 'primary'\n value: string | undefined = ''\n\n override get id(): string {\n return super.id\n }\n\n override set id(value: string | null | undefined) {\n super.id = value\n }\n\n override get title(): string {\n return super.title\n }\n\n override set title(value: string | null | undefined) {\n super.title = value\n }\n\n override get autofocus(): boolean {\n return super.autofocus\n }\n\n override set autofocus(value: boolean | undefined | null) {\n super.autofocus = value\n }\n\n private get isLink(): boolean {\n return Boolean(this.href) && !this.isDisabled\n }\n\n protected override getContentContainer(): Element | null {\n return this.querySelector('[data-sp-button-native]')\n }\n\n protected override isInternalNode(node: Node): boolean {\n if (node.nodeType !== Node.ELEMENT_NODE) {\n return false\n }\n\n const el = node as Element\n return (\n el.hasAttribute('data-sp-button-native') ||\n el.hasAttribute('data-sp-button-loading-label') ||\n el.hasAttribute('data-sp-button-label-fallback')\n )\n }\n\n protected override willUpdate(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n if (changedProperties.has('compact') && this.compact == null) {\n this.compact = false\n }\n\n if (changedProperties.has('disabled') && this.disabled == null) {\n this.disabled = false\n }\n\n if (changedProperties.has('fullWidth') && this.fullWidth == null) {\n this.fullWidth = false\n }\n\n if (changedProperties.has('iconOnly') && this.iconOnly == null) {\n this.iconOnly = false\n }\n\n if (changedProperties.has('loading') && this.loading == null) {\n this.loading = false\n }\n\n if (changedProperties.has('pill') && this.pill == null) {\n this.pill = false\n }\n\n if (\n changedProperties.has('variant') &&\n (this.variant == null || !isButtonVariant(this.variant))\n ) {\n this.variant = 'primary'\n }\n\n if (\n changedProperties.has('size') &&\n (this.size == null || !isInputSize(this.size))\n ) {\n this.size = 'md'\n }\n\n if (\n changedProperties.has('type') &&\n (this.type == null || !isButtonType(this.type))\n ) {\n this.type = 'button'\n }\n\n if (changedProperties.has('loadingLabel')) {\n if (this.loadingLabel == null || this.loadingLabel.trim() === '') {\n this.loadingLabel = 'Loading'\n }\n }\n\n if (changedProperties.has('value') && this.value == null) {\n this.value = ''\n }\n }\n\n private get buttonClasses(): string {\n const recipeClasses = getButtonClasses({\n compact: this.compact ?? false,\n disabled: this.isDisabled,\n fullWidth: this.fullWidth ?? false,\n iconOnly: this.iconOnly ?? false,\n loading: this.loading ?? false,\n pill: this.pill ?? false,\n size: this.size as ButtonSize,\n variant: this.variant as ButtonVariant\n })\n const utilityClasses = sanitizeUtilityClasses(this.innerClass)\n return utilityClasses ? `${recipeClasses} ${utilityClasses}` : recipeClasses\n }\n\n private get visibleLabelFallback(): string | undefined {\n const trimmedLabel = this.label?.trim()\n return trimmedLabel ? trimmedLabel : undefined\n }\n\n override focus(options?: FocusOptions): void {\n ;(\n this.getContentContainer() as HTMLButtonElement | HTMLAnchorElement | null\n )?.focus(options)\n }\n\n override blur(): void {\n ;(\n this.getContentContainer() as HTMLButtonElement | HTMLAnchorElement | null\n )?.blur()\n }\n\n private renderButtonContent(): TemplateResult | Node[] | typeof nothing {\n if (this.loading) {\n return html`<span\n class=\"${getInputLabelClasses({ disabled: this.isDisabled })}\"\n data-sp-button-loading-label\n >${this.loadingLabel}</span\n >`\n }\n\n if (this.hasProjectedContent) {\n return this.projectedContent\n }\n\n return this.visibleLabelFallback\n ? html`<span\n class=\"${getInputLabelClasses({ disabled: this.isDisabled })}\"\n data-sp-button-label-fallback\n >${this.visibleLabelFallback}</span\n >`\n : nothing\n }\n\n override render() {\n if (this.isLink) {\n return html`<a\n aria-busy=\"${this.loading ? 'true' : 'false'}\"\n aria-describedby=\"${ifDefined(this.forwardedAriaDescribedBy)}\"\n aria-label=\"${ifDefined(this.forwardedAriaLabel)}\"\n aria-labelledby=\"${ifDefined(this.forwardedAriaLabelledBy)}\"\n class=\"${this.buttonClasses}\"\n data-sp-button-native\n href=\"${ifDefined(this.href)}\"\n id=\"${ifDefined(this.id || undefined)}\"\n rel=\"${ifDefined(this.rel || undefined)}\"\n target=\"${ifDefined(this.target || undefined)}\"\n title=\"${ifDefined(this.title || undefined)}\"\n >\n ${this.renderButtonContent()}\n </a>`\n }\n\n return html`<button\n aria-busy=\"${this.loading ? 'true' : 'false'}\"\n aria-describedby=\"${ifDefined(this.forwardedAriaDescribedBy)}\"\n aria-label=\"${ifDefined(this.forwardedAriaLabel)}\"\n aria-labelledby=\"${ifDefined(this.forwardedAriaLabelledBy)}\"\n ?autofocus=\"${this.autofocus}\"\n aria-disabled=\"${ifDefined(this.href && this.isDisabled ? 'true' : undefined)}\"\n class=\"${this.buttonClasses}\"\n data-sp-button-native\n ?disabled=\"${this.isDisabled}\"\n form=\"${ifDefined(this.form || undefined)}\"\n id=\"${ifDefined(this.id || undefined)}\"\n name=\"${ifDefined(this.name || undefined)}\"\n title=\"${ifDefined(this.title || undefined)}\"\n type=\"${this.type}\"\n value=\"${ifDefined(this.value)}\"\n >\n ${this.renderButtonContent()}\n </button>`\n }\n}\n\nexport function defineSpectreButton(\n tagName = 'sp-button'\n): typeof SpectreButtonElement {\n const existingElement = customElements.get(tagName)\n\n if (existingElement) {\n return existingElement as unknown as typeof SpectreButtonElement\n }\n\n customElements.define(tagName, SpectreButtonElement)\n return SpectreButtonElement\n}\n","import { html } from 'lit'\nimport { live } from 'lit/directives/live.js'\nimport { ifDefined } from 'lit/directives/if-defined.js'\n\nimport { SpectreBaseElement } from '../../utils/base'\nimport {\n spectreInputSizes,\n isInputSize,\n type SpectreInputSize,\n spectreInputTypes,\n isInputType,\n type SpectreInputType,\n normalizeInt\n} from '../../utils/form'\n\nimport { getInputClasses } from '@phcdevworks/spectre-ui'\n\nexport {\n spectreInputSizes,\n type SpectreInputSize,\n spectreInputTypes,\n type SpectreInputType\n}\n\nexport interface SpectreInputProps {\n ariaLabel?: string | null\n ariaLabelledBy?: string | null\n ariaDescribedBy?: string | null\n autocapitalize?: string | null | undefined\n autocomplete?: string | undefined\n autofocus?: boolean | null | undefined\n disabled?: boolean | undefined\n enterkeyhint?: string | undefined\n form?: string | undefined\n fullWidth?: boolean | undefined\n id?: string | null | undefined\n inputmode?: string | undefined\n invalid?: boolean | undefined\n list?: string | undefined\n loading?: boolean | undefined\n max?: string | undefined\n maxlength?: number | undefined\n min?: string | undefined\n minlength?: number | undefined\n name?: string | undefined\n pattern?: string | undefined\n pill?: boolean | undefined\n placeholder?: string | undefined\n readonly?: boolean | undefined\n required?: boolean | undefined\n size?: SpectreInputSize | undefined\n spellcheck?: boolean | null | undefined\n step?: string | undefined\n success?: boolean | undefined\n title?: string | null | undefined\n type?: SpectreInputType | undefined\n value?: string | undefined\n}\n\nexport class SpectreInputElement\n extends SpectreBaseElement\n implements SpectreInputProps\n{\n static properties = {\n autocomplete: { type: String, reflect: true },\n disabled: { type: Boolean, reflect: true },\n enterkeyhint: { type: String, reflect: true },\n form: { type: String },\n fullWidth: { attribute: 'full-width', type: Boolean, reflect: true },\n inputmode: { type: String, reflect: true },\n invalid: { type: Boolean, reflect: true },\n list: { type: String, reflect: true },\n loading: { type: Boolean, reflect: true },\n max: { type: String, reflect: true },\n maxlength: { type: Number, reflect: true },\n min: { type: String, reflect: true },\n minlength: { type: Number, reflect: true },\n name: { type: String, reflect: true },\n pattern: { type: String, reflect: true },\n pill: { type: Boolean, reflect: true },\n placeholder: { type: String, reflect: true },\n readonly: { type: Boolean, reflect: true },\n required: { type: Boolean, reflect: true },\n size: { type: String, reflect: true },\n step: { type: String, reflect: true },\n success: { type: Boolean, reflect: true },\n type: { type: String, reflect: true },\n value: { type: String }\n }\n\n override get autocapitalize(): string {\n return super.autocapitalize\n }\n\n override set autocapitalize(value: string | null | undefined) {\n super.autocapitalize = value\n }\n\n override get autofocus(): boolean {\n return super.autofocus\n }\n\n override set autofocus(value: boolean | undefined | null) {\n super.autofocus = value\n }\n\n autocomplete: string | undefined\n disabled: boolean | undefined = false\n enterkeyhint: string | undefined\n form: string | undefined\n fullWidth: boolean | undefined = false\n\n override get id(): string {\n return super.id\n }\n\n override set id(value: string | null | undefined) {\n super.id = value\n }\n\n inputmode: string | undefined\n invalid: boolean | undefined = false\n list: string | undefined\n loading: boolean | undefined = false\n max: string | undefined\n maxlength: number | undefined\n min: string | undefined\n minlength: number | undefined\n name: string | undefined\n pattern: string | undefined\n pill: boolean | undefined = false\n placeholder: string | undefined\n readonly: boolean | undefined = false\n required: boolean | undefined = false\n size: SpectreInputSize | undefined = 'md'\n\n override get spellcheck(): boolean {\n return super.spellcheck\n }\n\n override set spellcheck(value: boolean | null | undefined) {\n super.spellcheck = value\n }\n\n step: string | undefined\n success: boolean | undefined = false\n\n override get title(): string {\n return super.title\n }\n\n override set title(value: string | null | undefined) {\n super.title = value\n }\n\n type: SpectreInputType | undefined = 'text'\n value: string | undefined = ''\n\n protected override willUpdate(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n if (changedProperties.has('disabled') && this.disabled == null) {\n this.disabled = false\n }\n\n if (changedProperties.has('fullWidth') && this.fullWidth == null) {\n this.fullWidth = false\n }\n\n if (changedProperties.has('invalid') && this.invalid == null) {\n this.invalid = false\n }\n\n if (changedProperties.has('loading') && this.loading == null) {\n this.loading = false\n }\n\n if (changedProperties.has('pill') && this.pill == null) {\n this.pill = false\n }\n\n if (changedProperties.has('readonly') && this.readonly == null) {\n this.readonly = false\n }\n\n if (changedProperties.has('required') && this.required == null) {\n this.required = false\n }\n\n if (changedProperties.has('success') && this.success == null) {\n this.success = false\n }\n\n if (\n changedProperties.has('size') &&\n (this.size == null || !isInputSize(this.size))\n ) {\n this.size = 'md'\n }\n\n if (\n changedProperties.has('type') &&\n (this.type == null || !isInputType(this.type))\n ) {\n this.type = 'text'\n }\n\n if (changedProperties.has('value') && this.value == null) {\n this.value = ''\n }\n\n if (changedProperties.has('maxlength')) {\n this.maxlength = normalizeInt(this.maxlength, undefined)\n }\n\n if (changedProperties.has('minlength')) {\n this.minlength = normalizeInt(this.minlength, undefined)\n }\n }\n\n private get inputClasses(): string {\n return getInputClasses({\n fullWidth: this.fullWidth ?? false,\n pill: this.pill ?? false,\n size: this.size as SpectreInputSize,\n state: this.isDisabled\n ? this.disabled\n ? 'disabled'\n : 'loading'\n : this.invalid\n ? 'error'\n : this.success\n ? 'success'\n : 'default'\n })\n }\n\n private get nativeInput(): HTMLInputElement | null {\n return this.querySelector('[data-sp-input-native]')\n }\n\n private handleInput(event: Event): void {\n const input = event.currentTarget as HTMLInputElement\n this.value = input.value\n }\n\n private handleChange(event: Event): void {\n const input = event.currentTarget as HTMLInputElement\n this.value = input.value\n }\n\n override focus(options?: FocusOptions): void {\n this.nativeInput?.focus(options)\n }\n\n override blur(): void {\n this.nativeInput?.blur()\n }\n\n override render() {\n return html`<input\n aria-busy=\"${this.loading ? 'true' : 'false'}\"\n aria-describedby=\"${ifDefined(this.forwardedAriaDescribedBy)}\"\n aria-invalid=\"${ifDefined(this.invalid ? 'true' : undefined)}\"\n aria-label=\"${ifDefined(this.forwardedAriaLabel)}\"\n aria-labelledby=\"${ifDefined(this.forwardedAriaLabelledBy)}\"\n autocapitalize=\"${ifDefined(this.autocapitalize || undefined)}\"\n autocomplete=\"${ifDefined(this.autocomplete || undefined)}\"\n ?autofocus=\"${this.autofocus}\"\n class=\"${this.inputClasses}\"\n data-sp-input-native\n ?disabled=\"${this.isDisabled}\"\n enterkeyhint=\"${ifDefined(this.enterkeyhint || undefined)}\"\n form=\"${ifDefined(this.form || undefined)}\"\n ?readonly=\"${this.readonly}\"\n ?required=\"${this.required}\"\n id=\"${ifDefined(this.id || undefined)}\"\n inputmode=\"${ifDefined(this.inputmode || undefined)}\"\n list=\"${ifDefined(this.list || undefined)}\"\n max=\"${ifDefined(this.max || undefined)}\"\n maxlength=\"${ifDefined(this.maxlength)}\"\n min=\"${ifDefined(this.min || undefined)}\"\n minlength=\"${ifDefined(this.minlength)}\"\n name=\"${ifDefined(this.name || undefined)}\"\n pattern=\"${ifDefined(this.pattern || undefined)}\"\n placeholder=\"${ifDefined(this.placeholder || undefined)}\"\n spellcheck=\"${ifDefined(this.getAttribute('spellcheck') ?? undefined)}\"\n step=\"${ifDefined(this.step || undefined)}\"\n title=\"${ifDefined(this.title || undefined)}\"\n type=\"${this.type}\"\n .value=\"${live(this.value)}\"\n @change=\"${this.handleChange}\"\n @input=\"${this.handleInput}\"\n />`\n }\n}\n\nexport function defineSpectreInput(\n tagName = 'sp-input'\n): typeof SpectreInputElement {\n const existingElement = customElements.get(tagName)\n\n if (existingElement) {\n return existingElement as unknown as typeof SpectreInputElement\n }\n\n customElements.define(tagName, SpectreInputElement)\n return SpectreInputElement\n}\n","import { html } from 'lit'\nimport { live } from 'lit/directives/live.js'\nimport { ifDefined } from 'lit/directives/if-defined.js'\n\nimport { SpectreBaseElement } from '../../utils/base'\nimport {\n isInputSize,\n type SpectreInputSize,\n normalizeInt\n} from '../../utils/form'\n\nimport { getTextareaClasses } from '@phcdevworks/spectre-ui'\n\nexport interface SpectreTextareaProps {\n ariaLabel?: string | null\n ariaLabelledBy?: string | null\n ariaDescribedBy?: string | null\n autocapitalize?: string | null | undefined\n autocomplete?: string | undefined\n autofocus?: boolean | null | undefined\n disabled?: boolean | undefined\n enterkeyhint?: string | undefined\n form?: string | undefined\n fullWidth?: boolean | undefined\n id?: string | null | undefined\n inputmode?: string | undefined\n invalid?: boolean | undefined\n loading?: boolean | undefined\n maxlength?: number | undefined\n minlength?: number | undefined\n name?: string | undefined\n pill?: boolean | undefined\n placeholder?: string | undefined\n readonly?: boolean | undefined\n required?: boolean | undefined\n rows?: number | undefined\n size?: SpectreInputSize | undefined\n spellcheck?: boolean | null | undefined\n success?: boolean | undefined\n title?: string | null | undefined\n value?: string | undefined\n}\n\nconst DEFAULT_ROWS = 2\n\nexport class SpectreTextareaElement\n extends SpectreBaseElement\n implements SpectreTextareaProps\n{\n static properties = {\n autocomplete: { type: String, reflect: true },\n disabled: { type: Boolean, reflect: true },\n enterkeyhint: { type: String, reflect: true },\n form: { type: String },\n fullWidth: { attribute: 'full-width', type: Boolean, reflect: true },\n inputmode: { type: String, reflect: true },\n invalid: { type: Boolean, reflect: true },\n loading: { type: Boolean, reflect: true },\n maxlength: { type: Number, reflect: true },\n minlength: { type: Number, reflect: true },\n name: { type: String, reflect: true },\n pill: { type: Boolean, reflect: true },\n placeholder: { type: String, reflect: true },\n readonly: { type: Boolean, reflect: true },\n required: { type: Boolean, reflect: true },\n rows: { type: Number, reflect: true },\n size: { type: String, reflect: true },\n success: { type: Boolean, reflect: true },\n value: { type: String }\n }\n\n override get autocapitalize(): string {\n return super.autocapitalize\n }\n\n override set autocapitalize(value: string | null | undefined) {\n super.autocapitalize = value\n }\n\n override get autofocus(): boolean {\n return super.autofocus\n }\n\n override set autofocus(value: boolean | undefined | null) {\n super.autofocus = value\n }\n\n autocomplete: string | undefined\n disabled: boolean | undefined = false\n enterkeyhint: string | undefined\n form: string | undefined\n fullWidth: boolean | undefined = false\n\n override get id(): string {\n return super.id\n }\n\n override set id(value: string | null | undefined) {\n super.id = value\n }\n\n inputmode: string | undefined\n invalid: boolean | undefined = false\n loading: boolean | undefined = false\n maxlength: number | undefined\n minlength: number | undefined\n name: string | undefined\n pill: boolean | undefined = false\n placeholder: string | undefined\n readonly: boolean | undefined = false\n required: boolean | undefined = false\n rows: number | undefined = DEFAULT_ROWS\n size: SpectreInputSize | undefined = 'md'\n\n override get spellcheck(): boolean {\n return super.spellcheck\n }\n\n override set spellcheck(value: boolean | null | undefined) {\n super.spellcheck = value\n }\n\n success: boolean | undefined = false\n\n override get title(): string {\n return super.title\n }\n\n override set title(value: string | null | undefined) {\n super.title = value\n }\n\n value: string | undefined = ''\n\n protected override willUpdate(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n if (changedProperties.has('disabled') && this.disabled == null) {\n this.disabled = false\n }\n\n if (changedProperties.has('fullWidth') && this.fullWidth == null) {\n this.fullWidth = false\n }\n\n if (changedProperties.has('invalid') && this.invalid == null) {\n this.invalid = false\n }\n\n if (changedProperties.has('loading') && this.loading == null) {\n this.loading = false\n }\n\n if (changedProperties.has('pill') && this.pill == null) {\n this.pill = false\n }\n\n if (changedProperties.has('readonly') && this.readonly == null) {\n this.readonly = false\n }\n\n if (changedProperties.has('required') && this.required == null) {\n this.required = false\n }\n\n if (changedProperties.has('success') && this.success == null) {\n this.success = false\n }\n\n if (\n changedProperties.has('size') &&\n (this.size == null || !isInputSize(this.size))\n ) {\n this.size = 'md'\n }\n\n if (changedProperties.has('rows')) {\n this.rows = normalizeInt(this.rows, DEFAULT_ROWS, 1) as number\n }\n\n if (changedProperties.has('value') && this.value == null) {\n this.value = ''\n }\n\n if (changedProperties.has('maxlength')) {\n this.maxlength = normalizeInt(this.maxlength, undefined)\n }\n\n if (changedProperties.has('minlength')) {\n this.minlength = normalizeInt(this.minlength, undefined)\n }\n }\n\n private get textareaClasses(): string {\n return getTextareaClasses({\n fullWidth: this.fullWidth ?? false,\n pill: this.pill ?? false,\n size: this.size as SpectreInputSize,\n disabled: this.disabled ?? false,\n loading: this.loading ?? false,\n state: this.invalid ? 'invalid' : this.success ? 'success' : 'default'\n })\n }\n\n private get nativeTextarea(): HTMLTextAreaElement | null {\n return this.querySelector('[data-sp-textarea-native]')\n }\n\n private handleInput(event: Event): void {\n const textarea = event.currentTarget as HTMLTextAreaElement\n this.value = textarea.value\n }\n\n private handleChange(event: Event): void {\n const textarea = event.currentTarget as HTMLTextAreaElement\n this.value = textarea.value\n }\n\n override focus(options?: FocusOptions): void {\n this.nativeTextarea?.focus(options)\n }\n\n override blur(): void {\n this.nativeTextarea?.blur()\n }\n\n override render() {\n return html`<textarea\n aria-busy=\"${this.loading ? 'true' : 'false'}\"\n aria-describedby=\"${ifDefined(this.forwardedAriaDescribedBy)}\"\n aria-invalid=\"${ifDefined(this.invalid ? 'true' : undefined)}\"\n aria-label=\"${ifDefined(this.forwardedAriaLabel)}\"\n aria-labelledby=\"${ifDefined(this.forwardedAriaLabelledBy)}\"\n autocapitalize=\"${ifDefined(this.autocapitalize || undefined)}\"\n autocomplete=\"${ifDefined(this.autocomplete || undefined)}\"\n ?autofocus=\"${this.autofocus}\"\n class=\"${this.textareaClasses}\"\n data-sp-textarea-native\n ?disabled=\"${this.isDisabled}\"\n enterkeyhint=\"${ifDefined(this.enterkeyhint || undefined)}\"\n form=\"${ifDefined(this.form || undefined)}\"\n inputmode=\"${ifDefined(this.inputmode || undefined)}\"\n ?readonly=\"${this.readonly}\"\n ?required=\"${this.required}\"\n id=\"${ifDefined(this.id || undefined)}\"\n maxlength=\"${ifDefined(this.maxlength)}\"\n minlength=\"${ifDefined(this.minlength)}\"\n name=\"${ifDefined(this.name || undefined)}\"\n placeholder=\"${ifDefined(this.placeholder || undefined)}\"\n rows=\"${this.rows}\"\n spellcheck=\"${ifDefined(this.getAttribute('spellcheck') ?? undefined)}\"\n title=\"${ifDefined(this.title || undefined)}\"\n .value=\"${live(this.value)}\"\n @change=\"${this.handleChange}\"\n @input=\"${this.handleInput}\"\n ></textarea>`\n }\n}\n\nexport function defineSpectreTextarea(\n tagName = 'sp-textarea'\n): typeof SpectreTextareaElement {\n const existingElement = customElements.get(tagName)\n\n if (existingElement) {\n return existingElement as unknown as typeof SpectreTextareaElement\n }\n\n customElements.define(tagName, SpectreTextareaElement)\n return SpectreTextareaElement\n}\n","import { html, nothing } from 'lit'\nimport { live } from 'lit/directives/live.js'\nimport { ifDefined } from 'lit/directives/if-defined.js'\n\nimport { SpectreProjectableElement } from '../../utils/projectable'\nimport { isInputSize, type SpectreInputSize } from '../../utils/form'\n\nimport { getSelectClasses } from '@phcdevworks/spectre-ui'\n\nexport interface SpectreSelectProps {\n ariaLabel?: string | null\n ariaLabelledBy?: string | null\n ariaDescribedBy?: string | null\n autocapitalize?: string | null | undefined\n autocomplete?: string | undefined\n autofocus?: boolean | null | undefined\n disabled?: boolean | undefined\n form?: string | undefined\n fullWidth?: boolean | undefined\n id?: string | null | undefined\n invalid?: boolean | undefined\n loading?: boolean | undefined\n name?: string | undefined\n pill?: boolean | undefined\n required?: boolean | undefined\n size?: SpectreInputSize | undefined\n spellcheck?: boolean | null | undefined\n success?: boolean | undefined\n title?: string | null | undefined\n value?: string | undefined\n}\n\nexport class SpectreSelectElement\n extends SpectreProjectableElement\n implements SpectreSelectProps\n{\n static properties = {\n autocomplete: { type: String, reflect: true },\n disabled: { type: Boolean, reflect: true },\n form: { type: String },\n fullWidth: { attribute: 'full-width', type: Boolean, reflect: true },\n invalid: { type: Boolean, reflect: true },\n loading: { type: Boolean, reflect: true },\n name: { type: String, reflect: true },\n pill: { type: Boolean, reflect: true },\n required: { type: Boolean, reflect: true },\n size: { type: String, reflect: true },\n success: { type: Boolean, reflect: true },\n value: { type: String }\n }\n\n autocomplete: string | undefined\n disabled: boolean | undefined = false\n form: string | undefined\n fullWidth: boolean | undefined = false\n invalid: boolean | undefined = false\n loading: boolean | undefined = false\n name: string | undefined\n pill: boolean | undefined = false\n required: boolean | undefined = false\n size: SpectreInputSize | undefined = 'md'\n success: boolean | undefined = false\n\n override get id(): string {\n return super.id\n }\n\n override set id(value: string | null | undefined) {\n super.id = value\n }\n\n override get title(): string {\n return super.title\n }\n\n override set title(value: string | null | undefined) {\n super.title = value\n }\n\n override get autocapitalize(): string {\n return super.autocapitalize\n }\n\n override set autocapitalize(value: string | null | undefined) {\n super.autocapitalize = value\n }\n\n override get autofocus(): boolean {\n return super.autofocus\n }\n\n override set autofocus(value: boolean | undefined | null) {\n super.autofocus = value\n }\n\n override get spellcheck(): boolean {\n return super.spellcheck\n }\n\n override set spellcheck(value: boolean | null | undefined) {\n super.spellcheck = value\n }\n\n value: string | undefined = ''\n\n protected override getContentContainer(): Element | null {\n return this.querySelector('[data-sp-select-native]')\n }\n\n protected override isInternalNode(node: Node): boolean {\n if (node.nodeType !== Node.ELEMENT_NODE) {\n return false\n }\n\n const el = node as Element\n return el.hasAttribute('data-sp-select-native')\n }\n\n protected override willUpdate(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n if (changedProperties.has('disabled') && this.disabled == null) {\n this.disabled = false\n }\n\n if (changedProperties.has('fullWidth') && this.fullWidth == null) {\n this.fullWidth = false\n }\n\n if (changedProperties.has('invalid') && this.invalid == null) {\n this.invalid = false\n }\n\n if (changedProperties.has('loading') && this.loading == null) {\n this.loading = false\n }\n\n if (changedProperties.has('pill') && this.pill == null) {\n this.pill = false\n }\n\n if (changedProperties.has('required') && this.required == null) {\n this.required = false\n }\n\n if (changedProperties.has('success') && this.success == null) {\n this.success = false\n }\n\n if (\n changedProperties.has('size') &&\n (this.size == null || !isInputSize(this.size))\n ) {\n this.size = 'md'\n }\n\n if (changedProperties.has('value') && this.value == null) {\n this.value = ''\n }\n }\n\n protected override updated(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n super.updated(changedProperties)\n\n const nativeSelect = this.getContentContainer() as HTMLSelectElement | null\n if (!nativeSelect) {\n return\n }\n\n const valueChanged = changedProperties.has('value')\n const oldValue = changedProperties.get('value')\n\n if (\n valueChanged &&\n this.value !== undefined &&\n (this.value !== '' ||\n oldValue !== undefined ||\n this.hasAttribute('value'))\n ) {\n if (nativeSelect.value !== this.value) {\n nativeSelect.value = this.value\n }\n }\n\n if (this.value === '' && !this.hasAttribute('value')) {\n const nativeValue = nativeSelect.value ?? ''\n if (nativeValue !== '' && nativeValue !== this.value) {\n this.updateComplete.then(() => {\n if (this.value === '' && !this.hasAttribute('value')) {\n this.value = nativeValue\n }\n })\n }\n }\n }\n\n private get selectClasses(): string {\n return getSelectClasses({\n fullWidth: this.fullWidth ?? false,\n pill: this.pill ?? false,\n size: this.size as SpectreInputSize,\n disabled: this.disabled ?? false,\n loading: this.loading ?? false,\n state: this.invalid ? 'invalid' : this.success ? 'success' : 'default'\n })\n }\n\n private handleInput(event: Event): void {\n const select = event.currentTarget as HTMLSelectElement\n this.value = select.value\n }\n\n private handleChange(event: Event): void {\n const select = event.currentTarget as HTMLSelectElement\n this.value = select.value\n }\n\n override focus(options?: FocusOptions): void {\n ;(this.getContentContainer() as HTMLSelectElement | null)?.focus(options)\n }\n\n override blur(): void {\n ;(this.getContentContainer() as HTMLSelectElement | null)?.blur()\n }\n\n override render() {\n return html`<select\n aria-busy=\"${this.loading ? 'true' : 'false'}\"\n aria-describedby=\"${ifDefined(this.forwardedAriaDescribedBy)}\"\n aria-invalid=\"${ifDefined(this.invalid ? 'true' : undefined)}\"\n aria-label=\"${ifDefined(this.forwardedAriaLabel)}\"\n aria-labelledby=\"${ifDefined(this.forwardedAriaLabelledBy)}\"\n autocapitalize=\"${ifDefined(this.autocapitalize || undefined)}\"\n autocomplete=\"${ifDefined(this.autocomplete || undefined)}\"\n ?autofocus=\"${this.autofocus}\"\n class=\"${this.selectClasses}\"\n data-sp-select-native\n ?disabled=\"${this.isDisabled}\"\n form=\"${ifDefined(this.form || undefined)}\"\n id=\"${ifDefined(this.id || undefined)}\"\n name=\"${ifDefined(this.name || undefined)}\"\n ?required=\"${this.required}\"\n spellcheck=\"${ifDefined(this.getAttribute('spellcheck') ?? undefined)}\"\n title=\"${ifDefined(this.title || undefined)}\"\n .value=\"${live(this.value)}\"\n @change=\"${this.handleChange}\"\n @input=\"${this.handleInput}\"\n >\n ${this.hasProjectedContent ? this.projectedContent : nothing}\n </select>`\n }\n}\n\nexport function defineSpectreSelect(\n tagName = 'sp-select'\n): typeof SpectreSelectElement {\n const existingElement = customElements.get(tagName)\n\n if (existingElement) {\n return existingElement as unknown as typeof SpectreSelectElement\n }\n\n customElements.define(tagName, SpectreSelectElement)\n return SpectreSelectElement\n}\n","import { html, nothing } from 'lit'\nimport { live } from 'lit/directives/live.js'\nimport { ifDefined } from 'lit/directives/if-defined.js'\n\nimport { SpectreProjectableElement } from '../../utils/projectable'\n\nimport { getCheckboxClasses, getInputLabelClasses } from '@phcdevworks/spectre-ui'\n\nexport interface SpectreCheckboxProps {\n ariaLabel?: string | null\n ariaLabelledBy?: string | null\n ariaDescribedBy?: string | null\n autofocus?: boolean | null | undefined\n checked?: boolean | undefined\n disabled?: boolean | undefined\n form?: string | undefined\n id?: string | null | undefined\n invalid?: boolean | undefined\n loading?: boolean | undefined\n label?: string | undefined\n name?: string | undefined\n required?: boolean | undefined\n success?: boolean | undefined\n title?: string | null | undefined\n value?: string | undefined\n}\n\nexport class SpectreCheckboxElement\n extends SpectreProjectableElement\n implements SpectreCheckboxProps\n{\n static properties = {\n checked: { type: Boolean, reflect: true },\n disabled: { type: Boolean, reflect: true },\n form: { type: String },\n invalid: { type: Boolean, reflect: true },\n loading: { type: Boolean, reflect: true },\n label: { type: String, reflect: true },\n name: { type: String, reflect: true },\n required: { type: Boolean, reflect: true },\n success: { type: Boolean, reflect: true },\n value: { type: String }\n }\n\n checked: boolean | undefined = false\n disabled: boolean | undefined = false\n form: string | undefined\n invalid: boolean | undefined = false\n loading: boolean | undefined = false\n label: string | undefined\n name: string | undefined\n required: boolean | undefined = false\n success: boolean | undefined = false\n\n override get id(): string {\n return super.id\n }\n\n override set id(value: string | null | undefined) {\n super.id = value\n }\n\n override get title(): string {\n return super.title\n }\n\n override set title(value: string | null | undefined) {\n super.title = value\n }\n\n override get autofocus(): boolean {\n return super.autofocus\n }\n\n override set autofocus(value: boolean | undefined | null) {\n super.autofocus = value\n }\n\n value: string | undefined = 'on'\n\n protected override getContentContainer(): Element | null {\n return this.querySelector('[data-sp-checkbox-label]')\n }\n\n protected override isInternalNode(node: Node): boolean {\n if (node.nodeType !== Node.ELEMENT_NODE) {\n return false\n }\n\n const el = node as Element\n return (\n el.hasAttribute('data-sp-checkbox-label') ||\n el.hasAttribute('data-sp-checkbox-native') ||\n el.hasAttribute('data-sp-checkbox-label-fallback') ||\n el.hasAttribute('data-sp-checkbox-indicator')\n )\n }\n\n protected override willUpdate(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n if (changedProperties.has('checked') && this.checked == null) {\n this.checked = false\n }\n\n if (changedProperties.has('disabled') && this.disabled == null) {\n this.disabled = false\n }\n\n if (changedProperties.has('invalid') && this.invalid == null) {\n this.invalid = false\n }\n\n if (changedProperties.has('loading') && this.loading == null) {\n this.loading = false\n }\n\n if (changedProperties.has('required') && this.required == null) {\n this.required = false\n }\n\n if (changedProperties.has('success') && this.success == null) {\n this.success = false\n }\n\n if (changedProperties.has('value') && this.value == null) {\n this.value = 'on'\n }\n }\n\n private get nativeInput(): HTMLInputElement | null {\n return this.querySelector('[data-sp-checkbox-native]')\n }\n\n private get visibleLabelFallback(): string | undefined {\n const trimmedLabel = this.label?.trim()\n return trimmedLabel ? trimmedLabel : undefined\n }\n\n private handleInput(event: Event): void {\n const input = event.currentTarget as HTMLInputElement\n this.checked = input.checked\n }\n\n private handleChange(event: Event): void {\n const input = event.currentTarget as HTMLInputElement\n this.checked = input.checked\n }\n\n override focus(options?: FocusOptions): void {\n this.nativeInput?.focus(options)\n }\n\n override blur(): void {\n this.nativeInput?.blur()\n }\n\n override render() {\n const labelContent = this.hasProjectedContent\n ? this.projectedContent\n : this.visibleLabelFallback\n ? html`<span\n class=\"${getInputLabelClasses({ disabled: this.isDisabled })}\"\n data-sp-checkbox-label-fallback\n >${this.visibleLabelFallback}</span\n >`\n : nothing\n\n return html`<label data-sp-checkbox-label>\n <input\n aria-busy=\"${this.loading ? 'true' : 'false'}\"\n aria-describedby=\"${ifDefined(this.forwardedAriaDescribedBy)}\"\n aria-invalid=\"${ifDefined(this.invalid ? 'true' : undefined)}\"\n aria-label=\"${ifDefined(this.forwardedAriaLabel)}\"\n aria-labelledby=\"${ifDefined(this.forwardedAriaLabelledBy)}\"\n ?autofocus=\"${this.autofocus}\"\n data-sp-checkbox-native\n .checked=\"${live(this.checked)}\"\n ?disabled=\"${this.isDisabled}\"\n form=\"${ifDefined(this.form || undefined)}\"\n id=\"${ifDefined(this.id || undefined)}\"\n name=\"${ifDefined(this.name || undefined)}\"\n ?required=\"${this.required}\"\n title=\"${ifDefined(this.title || undefined)}\"\n type=\"checkbox\"\n value=\"${ifDefined(this.value)}\"\n @change=\"${this.handleChange}\"\n @input=\"${this.handleInput}\"\n />\n <span\n class=\"${getCheckboxClasses({ checked: this.checked ?? false, disabled: this.isDisabled })}\"\n data-sp-checkbox-indicator\n ></span>\n ${labelContent}\n </label>`\n }\n}\n\nexport function defineSpectreCheckbox(\n tagName = 'sp-checkbox'\n): typeof SpectreCheckboxElement {\n const existingElement = customElements.get(tagName)\n\n if (existingElement) {\n return existingElement as unknown as typeof SpectreCheckboxElement\n }\n\n customElements.define(tagName, SpectreCheckboxElement)\n return SpectreCheckboxElement\n}\n","import { html, nothing } from 'lit'\nimport { live } from 'lit/directives/live.js'\nimport { ifDefined } from 'lit/directives/if-defined.js'\n\nimport { SpectreProjectableElement } from '../../utils/projectable'\n\nimport { getInputLabelClasses, getRadioClasses } from '@phcdevworks/spectre-ui'\n\nexport interface SpectreRadioProps {\n ariaLabel?: string | null\n ariaLabelledBy?: string | null\n ariaDescribedBy?: string | null\n autofocus?: boolean | null | undefined\n checked?: boolean | undefined\n disabled?: boolean | undefined\n form?: string | undefined\n id?: string | null | undefined\n invalid?: boolean | undefined\n loading?: boolean | undefined\n label?: string | undefined\n name?: string | undefined\n required?: boolean | undefined\n success?: boolean | undefined\n title?: string | null | undefined\n value?: string | undefined\n}\n\nexport class SpectreRadioElement\n extends SpectreProjectableElement\n implements SpectreRadioProps\n{\n static properties = {\n checked: { type: Boolean, reflect: true },\n disabled: { type: Boolean, reflect: true },\n form: { type: String },\n invalid: { type: Boolean, reflect: true },\n loading: { type: Boolean, reflect: true },\n label: { type: String, reflect: true },\n name: { type: String, reflect: true },\n required: { type: Boolean, reflect: true },\n success: { type: Boolean, reflect: true },\n value: { type: String }\n }\n\n checked: boolean | undefined = false\n disabled: boolean | undefined = false\n form: string | undefined\n invalid: boolean | undefined = false\n loading: boolean | undefined = false\n label: string | undefined\n name: string | undefined\n required: boolean | undefined = false\n success: boolean | undefined = false\n\n override get id(): string {\n return super.id\n }\n\n override set id(value: string | null | undefined) {\n super.id = value\n }\n\n override get title(): string {\n return super.title\n }\n\n override set title(value: string | null | undefined) {\n super.title = value\n }\n\n override get autofocus(): boolean {\n return super.autofocus\n }\n\n override set autofocus(value: boolean | undefined | null) {\n super.autofocus = value\n }\n\n value: string | undefined = 'on'\n\n protected override getContentContainer(): Element | null {\n return this.querySelector('[data-sp-radio-label]')\n }\n\n protected override isInternalNode(node: Node): boolean {\n if (node.nodeType !== Node.ELEMENT_NODE) {\n return false\n }\n\n const el = node as Element\n return (\n el.hasAttribute('data-sp-radio-label') ||\n el.hasAttribute('data-sp-radio-native') ||\n el.hasAttribute('data-sp-radio-label-fallback') ||\n el.hasAttribute('data-sp-radio-indicator')\n )\n }\n\n protected override willUpdate(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n if (changedProperties.has('checked') && this.checked == null) {\n this.checked = false\n }\n\n if (changedProperties.has('disabled') && this.disabled == null) {\n this.disabled = false\n }\n\n if (changedProperties.has('invalid') && this.invalid == null) {\n this.invalid = false\n }\n\n if (changedProperties.has('loading') && this.loading == null) {\n this.loading = false\n }\n\n if (changedProperties.has('required') && this.required == null) {\n this.required = false\n }\n\n if (changedProperties.has('success') && this.success == null) {\n this.success = false\n }\n\n if (changedProperties.has('value') && this.value == null) {\n this.value = 'on'\n }\n }\n\n private get nativeInput(): HTMLInputElement | null {\n return this.querySelector('[data-sp-radio-native]')\n }\n\n private get visibleLabelFallback(): string | undefined {\n const trimmedLabel = this.label?.trim()\n return trimmedLabel ? trimmedLabel : undefined\n }\n\n private handleInput(event: Event): void {\n const input = event.currentTarget as HTMLInputElement\n this.checked = input.checked\n }\n\n private handleChange(event: Event): void {\n const input = event.currentTarget as HTMLInputElement\n this.checked = input.checked\n }\n\n protected override updated(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n super.updated(changedProperties)\n\n if (\n (changedProperties.has('checked') ||\n changedProperties.has('name') ||\n changedProperties.has('form')) &&\n this.checked &&\n this.name\n ) {\n this.syncGroup()\n }\n }\n\n private syncGroup(): void {\n if (!this.name || !this.checked) {\n return\n }\n\n const root = this.getRootNode() as ShadowRoot | Document\n const radios = root.querySelectorAll(\n 'sp-radio'\n ) as NodeListOf<SpectreRadioElement>\n\n const form = this.nativeInput?.form\n radios.forEach((radio) => {\n if (\n radio !== this &&\n radio.name === this.name &&\n radio.nativeInput?.form === form &&\n radio.checked\n ) {\n radio.checked = false\n }\n })\n }\n\n override focus(options?: FocusOptions): void {\n this.nativeInput?.focus(options)\n }\n\n override blur(): void {\n this.nativeInput?.blur()\n }\n\n override render() {\n const labelContent = this.hasProjectedContent\n ? this.projectedContent\n : this.visibleLabelFallback\n ? html`<span\n class=\"${getInputLabelClasses({ disabled: this.isDisabled })}\"\n data-sp-radio-label-fallback\n >${this.visibleLabelFallback}</span\n >`\n : nothing\n\n return html`<label data-sp-radio-label>\n <input\n aria-busy=\"${this.loading ? 'true' : 'false'}\"\n aria-describedby=\"${ifDefined(this.forwardedAriaDescribedBy)}\"\n aria-invalid=\"${ifDefined(this.invalid ? 'true' : undefined)}\"\n aria-label=\"${ifDefined(this.forwardedAriaLabel)}\"\n aria-labelledby=\"${ifDefined(this.forwardedAriaLabelledBy)}\"\n ?autofocus=\"${this.autofocus}\"\n data-sp-radio-native\n .checked=\"${live(this.checked)}\"\n ?disabled=\"${this.isDisabled}\"\n form=\"${ifDefined(this.form || undefined)}\"\n id=\"${ifDefined(this.id || undefined)}\"\n name=\"${ifDefined(this.name || undefined)}\"\n ?required=\"${this.required}\"\n title=\"${ifDefined(this.title || undefined)}\"\n type=\"radio\"\n value=\"${ifDefined(this.value)}\"\n @change=\"${this.handleChange}\"\n @input=\"${this.handleInput}\"\n />\n <span\n class=\"${getRadioClasses({ checked: this.checked ?? false, disabled: this.isDisabled })}\"\n data-sp-radio-indicator\n ></span>\n ${labelContent}\n </label>`\n }\n}\n\nexport function defineSpectreRadio(\n tagName = 'sp-radio'\n): typeof SpectreRadioElement {\n const existingElement = customElements.get(tagName)\n\n if (existingElement) {\n return existingElement as unknown as typeof SpectreRadioElement\n }\n\n customElements.define(tagName, SpectreRadioElement)\n return SpectreRadioElement\n}\n","import { html, nothing } from 'lit'\nimport { ifDefined } from 'lit/directives/if-defined.js'\n\nimport { SpectreProjectableElement } from '../../utils/projectable'\n\nimport { getLabelClasses } from '@phcdevworks/spectre-ui'\n\nexport interface SpectreLabelProps {\n ariaLabel?: string | null\n ariaLabelledBy?: string | null\n ariaDescribedBy?: string | null\n disabled?: boolean | undefined\n id?: string | null | undefined\n htmlFor?: string | undefined\n required?: boolean | undefined\n title?: string | null | undefined\n}\n\nexport class SpectreLabelElement\n extends SpectreProjectableElement\n implements SpectreLabelProps\n{\n static properties = {\n disabled: { type: Boolean, reflect: true },\n htmlFor: { attribute: 'for', type: String, reflect: true },\n required: { type: Boolean, reflect: true }\n }\n\n disabled: boolean | undefined = false\n htmlFor: string | undefined\n required: boolean | undefined = false\n\n protected override willUpdate(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n if (changedProperties.has('disabled') && this.disabled == null) {\n this.disabled = false\n }\n\n if (changedProperties.has('required') && this.required == null) {\n this.required = false\n }\n }\n\n protected override get isDisabled(): boolean {\n return this.disabled ?? false\n }\n\n override get id(): string {\n return super.id\n }\n\n override set id(value: string | null | undefined) {\n super.id = value\n }\n\n override get title(): string {\n return super.title\n }\n\n override set title(value: string | null | undefined) {\n super.title = value\n }\n\n protected override getContentContainer(): Element | null {\n return this.querySelector('[data-sp-label-native]')\n }\n\n protected override isInternalNode(node: Node): boolean {\n if (node.nodeType !== Node.ELEMENT_NODE) {\n return false\n }\n\n const el = node as Element\n return el.hasAttribute('data-sp-label-native')\n }\n\n override focus(options?: FocusOptions): void {\n ;(this.getContentContainer() as HTMLLabelElement | null)?.focus(options)\n }\n\n override blur(): void {\n ;(this.getContentContainer() as HTMLLabelElement | null)?.blur()\n }\n\n override render() {\n return html`<label\n aria-describedby=\"${ifDefined(this.forwardedAriaDescribedBy)}\"\n aria-label=\"${ifDefined(this.forwardedAriaLabel)}\"\n aria-labelledby=\"${ifDefined(this.forwardedAriaLabelledBy)}\"\n class=\"${getLabelClasses({ disabled: this.isDisabled, required: this.required ?? false })}\"\n data-sp-label-native\n for=\"${ifDefined(this.htmlFor || undefined)}\"\n id=\"${ifDefined(this.id || undefined)}\"\n title=\"${ifDefined(this.title || undefined)}\"\n >\n ${this.hasProjectedContent ? this.projectedContent : nothing}\n </label>`\n }\n}\n\nexport function defineSpectreLabel(\n tagName = 'sp-label'\n): typeof SpectreLabelElement {\n const existingElement = customElements.get(tagName)\n\n if (existingElement) {\n return existingElement as unknown as typeof SpectreLabelElement\n }\n\n customElements.define(tagName, SpectreLabelElement)\n return SpectreLabelElement\n}\n","import { html, nothing } from 'lit'\nimport { ifDefined } from 'lit/directives/if-defined.js'\n\nimport { SpectreProjectableElement } from '../../utils/projectable'\n\nimport { getFieldsetClasses, getFieldsetLegendClasses } from '@phcdevworks/spectre-ui'\n\nexport interface SpectreFieldsetProps {\n ariaLabel?: string | null\n ariaLabelledBy?: string | null\n ariaDescribedBy?: string | null\n autocapitalize?: string | null | undefined\n autofocus?: boolean | null | undefined\n disabled?: boolean | undefined\n form?: string | undefined\n id?: string | null | undefined\n invalid?: boolean | undefined\n legend?: string | undefined\n loading?: boolean | undefined\n name?: string | undefined\n spellcheck?: boolean | null | undefined\n success?: boolean | undefined\n title?: string | null | undefined\n}\n\nexport class SpectreFieldsetElement\n extends SpectreProjectableElement\n implements SpectreFieldsetProps\n{\n static properties = {\n disabled: { type: Boolean, reflect: true },\n form: { type: String },\n invalid: { type: Boolean, reflect: true },\n legend: { type: String, reflect: true },\n loading: { type: Boolean, reflect: true },\n name: { type: String, reflect: true },\n success: { type: Boolean, reflect: true }\n }\n\n disabled: boolean | undefined = false\n form: string | undefined\n invalid: boolean | undefined = false\n legend: string | undefined\n loading: boolean | undefined = false\n name: string | undefined\n success: boolean | undefined = false\n\n override get id(): string {\n return super.id\n }\n\n override set id(value: string | null | undefined) {\n super.id = value\n }\n\n override get title(): string {\n return super.title\n }\n\n override set title(value: string | null | undefined) {\n super.title = value\n }\n\n override get autocapitalize(): string {\n return super.autocapitalize\n }\n\n override set autocapitalize(value: string | null | undefined) {\n super.autocapitalize = value\n }\n\n override get autofocus(): boolean {\n return super.autofocus\n }\n\n override set autofocus(value: boolean | undefined | null) {\n super.autofocus = value\n }\n\n override get spellcheck(): boolean {\n return super.spellcheck\n }\n\n override set spellcheck(value: boolean | null | undefined) {\n super.spellcheck = value\n }\n\n private get visibleLegend(): string | undefined {\n const trimmedLegend = this.legend?.trim()\n return trimmedLegend ? trimmedLegend : undefined\n }\n\n protected override getContentContainer(): Element | null {\n return this.querySelector('[data-sp-fieldset-native]')\n }\n\n protected override isInternalNode(node: Node): boolean {\n if (node.nodeType !== Node.ELEMENT_NODE) {\n return false\n }\n\n const el = node as Element\n return (\n el.hasAttribute('data-sp-fieldset-native') ||\n el.hasAttribute('data-sp-fieldset-legend')\n )\n }\n\n protected override willUpdate(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n if (changedProperties.has('disabled') && this.disabled == null) {\n this.disabled = false\n }\n\n if (changedProperties.has('invalid') && this.invalid == null) {\n this.invalid = false\n }\n\n if (changedProperties.has('loading') && this.loading == null) {\n this.loading = false\n }\n\n if (changedProperties.has('success') && this.success == null) {\n this.success = false\n }\n }\n\n override focus(options?: FocusOptions): void {\n ;(this.getContentContainer() as HTMLFieldSetElement | null)?.focus(options)\n }\n\n override blur(): void {\n ;(this.getContentContainer() as HTMLFieldSetElement | null)?.blur()\n }\n\n override render() {\n const legendClasses = getFieldsetLegendClasses()\n const legendContent = this.visibleLegend\n ? html`<legend class=\"${legendClasses}\" data-sp-fieldset-legend>\n ${this.visibleLegend}\n </legend>`\n : nothing\n\n return html`<fieldset\n aria-busy=\"${this.loading ? 'true' : 'false'}\"\n aria-describedby=\"${ifDefined(this.forwardedAriaDescribedBy)}\"\n aria-invalid=\"${ifDefined(this.invalid ? 'true' : undefined)}\"\n aria-label=\"${ifDefined(this.forwardedAriaLabel)}\"\n aria-labelledby=\"${ifDefined(this.forwardedAriaLabelledBy)}\"\n autocapitalize=\"${ifDefined(this.autocapitalize || undefined)}\"\n ?autofocus=\"${this.autofocus}\"\n class=\"${getFieldsetClasses({ disabled: this.isDisabled })}\"\n data-sp-fieldset-native\n ?disabled=\"${this.isDisabled}\"\n form=\"${ifDefined(this.form || undefined)}\"\n id=\"${ifDefined(this.id || undefined)}\"\n name=\"${ifDefined(this.name || undefined)}\"\n spellcheck=\"${ifDefined(this.getAttribute('spellcheck') ?? undefined)}\"\n title=\"${ifDefined(this.title || undefined)}\"\n >\n ${legendContent}\n ${this.hasProjectedContent ? this.projectedContent : nothing}\n </fieldset>`\n }\n}\n\nexport function defineSpectreFieldset(\n tagName = 'sp-fieldset'\n): typeof SpectreFieldsetElement {\n const existingElement = customElements.get(tagName)\n\n if (existingElement) {\n return existingElement as unknown as typeof SpectreFieldsetElement\n }\n\n customElements.define(tagName, SpectreFieldsetElement)\n return SpectreFieldsetElement\n}\n","import { html, nothing } from 'lit'\nimport { ifDefined } from 'lit/directives/if-defined.js'\n\nimport { SpectreProjectableElement } from '../../utils/projectable'\nimport {\n isBadgeVariant,\n isInputSize,\n type SpectreBadgeVariant,\n type SpectreInputSize\n} from '../../utils/form'\n\nimport {\n getBadgeClasses,\n type BadgeVariant,\n type BadgeSize\n} from '@phcdevworks/spectre-ui'\n\nexport interface SpectreBadgeProps {\n ariaLabel?: string | null\n ariaLabelledBy?: string | null\n ariaDescribedBy?: string | null\n disabled?: boolean | undefined\n fullWidth?: boolean | undefined\n id?: string | null | undefined\n loading?: boolean | undefined\n size?: SpectreInputSize | undefined\n title?: string | null | undefined\n variant?: SpectreBadgeVariant | undefined\n}\n\nexport class SpectreBadgeElement\n extends SpectreProjectableElement\n implements SpectreBadgeProps\n{\n static properties = {\n disabled: { type: Boolean, reflect: true },\n fullWidth: { attribute: 'full-width', type: Boolean, reflect: true },\n loading: { type: Boolean, reflect: true },\n size: { type: String, reflect: true },\n variant: { type: String, reflect: true }\n }\n\n disabled: boolean | undefined = false\n fullWidth: boolean | undefined = false\n loading: boolean | undefined = false\n size: SpectreInputSize | undefined = 'md'\n variant: SpectreBadgeVariant | undefined = 'primary'\n\n override get id(): string {\n return super.id\n }\n\n override set id(value: string | null | undefined) {\n super.id = value\n }\n\n override get title(): string {\n return super.title\n }\n\n override set title(value: string | null | undefined) {\n super.title = value\n }\n\n protected override getContentContainer(): Element | null {\n return this.querySelector('[data-sp-badge-native]')\n }\n\n protected override isInternalNode(node: Node): boolean {\n if (node.nodeType !== Node.ELEMENT_NODE) {\n return false\n }\n const el = node as Element\n return el.hasAttribute('data-sp-badge-native')\n }\n\n protected override willUpdate(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n if (changedProperties.has('disabled') && this.disabled == null) {\n this.disabled = false\n }\n if (changedProperties.has('fullWidth') && this.fullWidth == null) {\n this.fullWidth = false\n }\n if (changedProperties.has('loading') && this.loading == null) {\n this.loading = false\n }\n if (\n changedProperties.has('variant') &&\n (this.variant == null || !isBadgeVariant(this.variant))\n ) {\n this.variant = 'primary'\n }\n if (\n changedProperties.has('size') &&\n (this.size == null || !isInputSize(this.size))\n ) {\n this.size = 'md'\n }\n }\n\n private get badgeClasses(): string {\n return getBadgeClasses({\n disabled: this.isDisabled,\n fullWidth: this.fullWidth ?? false,\n loading: this.loading ?? false,\n size: this.size as BadgeSize,\n variant: this.variant as BadgeVariant\n })\n }\n\n override render() {\n return html`<span\n aria-busy=\"${this.loading ? 'true' : 'false'}\"\n aria-describedby=\"${ifDefined(this.forwardedAriaDescribedBy)}\"\n aria-label=\"${ifDefined(this.forwardedAriaLabel)}\"\n aria-labelledby=\"${ifDefined(this.forwardedAriaLabelledBy)}\"\n class=\"${this.badgeClasses}\"\n data-sp-badge-native\n id=\"${ifDefined(this.id || undefined)}\"\n role=\"${ifDefined(this.hasForwardedLabel ? 'group' : undefined)}\"\n title=\"${ifDefined(this.title || undefined)}\"\n >\n ${this.hasProjectedContent ? this.projectedContent : nothing}\n </span>`\n }\n}\n\nexport function defineSpectreBadge(\n tagName = 'sp-badge'\n): typeof SpectreBadgeElement {\n const existingElement = customElements.get(tagName)\n\n if (existingElement) {\n return existingElement as unknown as typeof SpectreBadgeElement\n }\n\n customElements.define(tagName, SpectreBadgeElement)\n return SpectreBadgeElement\n}\n","import { html, nothing } from 'lit'\nimport { ifDefined } from 'lit/directives/if-defined.js'\n\nimport { SpectreProjectableElement } from '../../utils/projectable'\nimport {\n isCardPaddingSize,\n isCardVariant,\n sanitizeUtilityClasses,\n type SpectreCardPaddingSize,\n type SpectreCardVariant\n} from '../../utils/form'\n\nimport { getCardClasses, type CardVariant } from '@phcdevworks/spectre-ui'\n\ntype SpectreCardPadded = boolean | SpectreCardPaddingSize\n\nconst paddedConverter = {\n fromAttribute(value: string | null): SpectreCardPadded {\n if (value === 'false') {\n return false\n }\n if (value != null && isCardPaddingSize(value)) {\n return value\n }\n return true\n },\n toAttribute(value: SpectreCardPadded): string | null {\n if (value === false) {\n return 'false'\n }\n if (value === true) {\n return null\n }\n return value\n }\n}\n\nexport interface SpectreCardProps {\n ariaLabel?: string | null\n ariaLabelledBy?: string | null\n ariaDescribedBy?: string | null\n disabled?: boolean | undefined\n fullHeight?: boolean | undefined\n id?: string | null | undefined\n innerClass?: string | undefined\n interactive?: boolean | undefined\n loading?: boolean | undefined\n padded?: SpectreCardPadded | undefined\n title?: string | null | undefined\n variant?: SpectreCardVariant | undefined\n}\n\nexport class SpectreCardElement\n extends SpectreProjectableElement\n implements SpectreCardProps\n{\n static properties = {\n disabled: { type: Boolean, reflect: true },\n fullHeight: { attribute: 'full-height', type: Boolean, reflect: true },\n innerClass: { attribute: 'inner-class', type: String },\n interactive: { type: Boolean, reflect: true },\n loading: { type: Boolean, reflect: true },\n padded: { converter: paddedConverter, reflect: true },\n variant: { type: String, reflect: true }\n }\n\n disabled: boolean | undefined = false\n fullHeight: boolean | undefined = false\n innerClass: string | undefined = undefined\n interactive: boolean | undefined = false\n loading: boolean | undefined = false\n padded: SpectreCardPadded | undefined = true\n variant: SpectreCardVariant | undefined = 'elevated'\n\n override get id(): string {\n return super.id\n }\n\n override set id(value: string | null | undefined) {\n super.id = value\n }\n\n override get title(): string {\n return super.title\n }\n\n override set title(value: string | null | undefined) {\n super.title = value\n }\n\n protected override getContentContainer(): Element | null {\n return this.querySelector('[data-sp-card-native]')\n }\n\n protected override isInternalNode(node: Node): boolean {\n if (node.nodeType !== Node.ELEMENT_NODE) {\n return false\n }\n const el = node as Element\n return el.hasAttribute('data-sp-card-native')\n }\n\n protected override willUpdate(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n if (changedProperties.has('disabled') && this.disabled == null) {\n this.disabled = false\n }\n if (changedProperties.has('fullHeight') && this.fullHeight == null) {\n this.fullHeight = false\n }\n if (changedProperties.has('interactive') && this.interactive == null) {\n this.interactive = false\n }\n if (changedProperties.has('loading') && this.loading == null) {\n this.loading = false\n }\n if (\n changedProperties.has('padded') &&\n (this.padded == null ||\n (typeof this.padded !== 'boolean' && !isCardPaddingSize(this.padded)))\n ) {\n this.padded = true\n }\n if (\n changedProperties.has('variant') &&\n (this.variant == null || !isCardVariant(this.variant))\n ) {\n this.variant = 'elevated'\n }\n }\n\n private get cardClasses(): string {\n const recipeClasses = getCardClasses({\n disabled: this.isDisabled,\n fullHeight: this.fullHeight ?? false,\n interactive: this.interactive ?? false,\n loading: this.loading ?? false,\n padded: this.padded ?? true,\n variant: this.variant as CardVariant\n })\n const utilityClasses = sanitizeUtilityClasses(this.innerClass)\n return utilityClasses ? `${recipeClasses} ${utilityClasses}` : recipeClasses\n }\n\n override render() {\n return html`<div\n aria-busy=\"${this.loading ? 'true' : 'false'}\"\n aria-describedby=\"${ifDefined(this.forwardedAriaDescribedBy)}\"\n aria-label=\"${ifDefined(this.forwardedAriaLabel)}\"\n aria-labelledby=\"${ifDefined(this.forwardedAriaLabelledBy)}\"\n class=\"${this.cardClasses}\"\n data-sp-card-native\n id=\"${ifDefined(this.id || undefined)}\"\n role=\"${ifDefined(this.hasForwardedLabel ? 'group' : undefined)}\"\n title=\"${ifDefined(this.title || undefined)}\"\n >\n ${this.hasProjectedContent ? this.projectedContent : nothing}\n </div>`\n }\n}\n\nexport function defineSpectreCard(\n tagName = 'sp-card'\n): typeof SpectreCardElement {\n const existingElement = customElements.get(tagName)\n\n if (existingElement) {\n return existingElement as unknown as typeof SpectreCardElement\n }\n\n customElements.define(tagName, SpectreCardElement)\n return SpectreCardElement\n}\n","import { html, nothing } from 'lit'\nimport { ifDefined } from 'lit/directives/if-defined.js'\n\nimport { SpectreProjectableElement } from '../../utils/projectable'\nimport {\n isIconBoxVariant,\n isInputSize,\n type SpectreIconBoxVariant,\n type SpectreInputSize\n} from '../../utils/form'\n\nimport {\n getIconBoxClasses,\n type IconBoxVariant,\n type IconBoxSize\n} from '@phcdevworks/spectre-ui'\n\nexport interface SpectreIconBoxProps {\n ariaLabel?: string | null\n ariaLabelledBy?: string | null\n ariaDescribedBy?: string | null\n disabled?: boolean | undefined\n fullWidth?: boolean | undefined\n id?: string | null | undefined\n interactive?: boolean | undefined\n loading?: boolean | undefined\n pill?: boolean | undefined\n size?: SpectreInputSize | undefined\n title?: string | null | undefined\n variant?: SpectreIconBoxVariant | undefined\n}\n\nexport class SpectreIconBoxElement\n extends SpectreProjectableElement\n implements SpectreIconBoxProps\n{\n static properties = {\n disabled: { type: Boolean, reflect: true },\n fullWidth: { attribute: 'full-width', type: Boolean, reflect: true },\n interactive: { type: Boolean, reflect: true },\n loading: { type: Boolean, reflect: true },\n pill: { type: Boolean, reflect: true },\n size: { type: String, reflect: true },\n variant: { type: String, reflect: true }\n }\n\n disabled: boolean | undefined = false\n fullWidth: boolean | undefined = false\n interactive: boolean | undefined = false\n loading: boolean | undefined = false\n pill: boolean | undefined = false\n size: SpectreInputSize | undefined = 'md'\n variant: SpectreIconBoxVariant | undefined = 'primary'\n\n override get id(): string {\n return super.id\n }\n\n override set id(value: string | null | undefined) {\n super.id = value\n }\n\n override get title(): string {\n return super.title\n }\n\n override set title(value: string | null | undefined) {\n super.title = value\n }\n\n protected override getContentContainer(): Element | null {\n return this.querySelector('[data-sp-icon-box-native]')\n }\n\n protected override isInternalNode(node: Node): boolean {\n if (node.nodeType !== Node.ELEMENT_NODE) {\n return false\n }\n const el = node as Element\n return el.hasAttribute('data-sp-icon-box-native')\n }\n\n protected override willUpdate(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n if (changedProperties.has('disabled') && this.disabled == null) {\n this.disabled = false\n }\n if (changedProperties.has('fullWidth') && this.fullWidth == null) {\n this.fullWidth = false\n }\n if (changedProperties.has('interactive') && this.interactive == null) {\n this.interactive = false\n }\n if (changedProperties.has('loading') && this.loading == null) {\n this.loading = false\n }\n if (changedProperties.has('pill') && this.pill == null) {\n this.pill = false\n }\n if (\n changedProperties.has('variant') &&\n (this.variant == null || !isIconBoxVariant(this.variant))\n ) {\n this.variant = 'primary'\n }\n if (\n changedProperties.has('size') &&\n (this.size == null || !isInputSize(this.size))\n ) {\n this.size = 'md'\n }\n }\n\n private get iconBoxClasses(): string {\n return getIconBoxClasses({\n disabled: this.isDisabled,\n fullWidth: this.fullWidth ?? false,\n interactive: this.interactive ?? false,\n loading: this.loading ?? false,\n pill: this.pill ?? false,\n size: this.size as IconBoxSize,\n variant: this.variant as IconBoxVariant\n })\n }\n\n override render() {\n return html`<div\n aria-busy=\"${this.loading ? 'true' : 'false'}\"\n aria-describedby=\"${ifDefined(this.forwardedAriaDescribedBy)}\"\n aria-label=\"${ifDefined(this.forwardedAriaLabel)}\"\n aria-labelledby=\"${ifDefined(this.forwardedAriaLabelledBy)}\"\n class=\"${this.iconBoxClasses}\"\n data-sp-icon-box-native\n id=\"${ifDefined(this.id || undefined)}\"\n role=\"${ifDefined(this.hasForwardedLabel ? 'group' : undefined)}\"\n title=\"${ifDefined(this.title || undefined)}\"\n >\n ${this.hasProjectedContent ? this.projectedContent : nothing}\n </div>`\n }\n}\n\nexport function defineSpectreIconBox(\n tagName = 'sp-icon-box'\n): typeof SpectreIconBoxElement {\n const existingElement = customElements.get(tagName)\n\n if (existingElement) {\n return existingElement as unknown as typeof SpectreIconBoxElement\n }\n\n customElements.define(tagName, SpectreIconBoxElement)\n return SpectreIconBoxElement\n}\n","import { html, nothing } from 'lit'\nimport { ifDefined } from 'lit/directives/if-defined.js'\n\nimport { SpectreBaseElement } from '../../utils/base'\nimport {\n isInputSize,\n normalizeInt,\n type SpectreInputSize\n} from '../../utils/form'\n\nimport {\n getRatingClasses,\n getRatingStarsClasses,\n getRatingStarClasses,\n getRatingTextClasses,\n type RatingSize\n} from '@phcdevworks/spectre-ui'\n\nexport interface SpectreRatingProps {\n ariaLabel?: string | null\n ariaLabelledBy?: string | null\n ariaDescribedBy?: string | null\n disabled?: boolean | undefined\n id?: string | null | undefined\n label?: string | undefined\n loading?: boolean | undefined\n max?: number | undefined\n size?: SpectreInputSize | undefined\n title?: string | null | undefined\n value?: number | undefined\n}\n\nexport class SpectreRatingElement\n extends SpectreBaseElement\n implements SpectreRatingProps\n{\n static properties = {\n disabled: { type: Boolean, reflect: true },\n label: { type: String, reflect: true },\n loading: { type: Boolean, reflect: true },\n max: { type: Number, reflect: true },\n size: { type: String, reflect: true },\n value: { type: Number, reflect: true }\n }\n\n disabled: boolean | undefined = false\n label: string | undefined\n loading: boolean | undefined = false\n max: number | undefined = 5\n size: SpectreInputSize | undefined = 'md'\n value: number | undefined = 0\n\n override get id(): string {\n return super.id\n }\n\n override set id(value: string | null | undefined) {\n super.id = value\n }\n\n override get title(): string {\n return super.title\n }\n\n override set title(value: string | null | undefined) {\n super.title = value\n }\n\n protected override willUpdate(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n if (changedProperties.has('disabled') && this.disabled == null) {\n this.disabled = false\n }\n if (changedProperties.has('loading') && this.loading == null) {\n this.loading = false\n }\n if (\n changedProperties.has('size') &&\n (this.size == null || !isInputSize(this.size))\n ) {\n this.size = 'md'\n }\n if (changedProperties.has('max')) {\n this.max = normalizeInt(this.max, 5, 1) ?? 5\n }\n if (changedProperties.has('value')) {\n const safeMax = this.max ?? 5\n const normalized = normalizeInt(this.value, 0, 0)\n this.value = normalized == null ? 0 : Math.min(normalized, safeMax)\n }\n }\n\n private get ratingClasses(): string {\n return getRatingClasses({\n disabled: this.isDisabled,\n loading: this.loading ?? false,\n size: this.size as RatingSize\n })\n }\n\n private get effectiveMax(): number {\n return this.max ?? 5\n }\n\n private get effectiveValue(): number {\n return this.value ?? 0\n }\n\n private get computedAriaLabel(): string {\n const base = this.forwardedAriaLabel\n if (base) return base\n return `Rating: ${this.effectiveValue} out of ${this.effectiveMax}`\n }\n\n private renderStars() {\n const stars = []\n for (let i = 1; i <= this.effectiveMax; i++) {\n stars.push(\n html`<span\n class=\"${getRatingStarClasses(i <= this.effectiveValue)}\"\n ></span>`\n )\n }\n return stars\n }\n\n override render() {\n const trimmedLabel = this.label?.trim()\n\n return html`<div\n aria-busy=\"${this.loading ? 'true' : 'false'}\"\n aria-describedby=\"${ifDefined(this.forwardedAriaDescribedBy)}\"\n aria-label=\"${this.computedAriaLabel}\"\n aria-labelledby=\"${ifDefined(this.forwardedAriaLabelledBy)}\"\n class=\"${this.ratingClasses}\"\n data-sp-rating-native\n id=\"${ifDefined(this.id || undefined)}\"\n role=\"img\"\n title=\"${ifDefined(this.title || undefined)}\"\n >\n <div class=\"${getRatingStarsClasses()}\">${this.renderStars()}</div>\n ${\n trimmedLabel\n ? html`<span\n class=\"${getRatingTextClasses({ disabled: this.isDisabled })}\"\n >${trimmedLabel}</span\n >`\n : nothing\n }\n </div>`\n }\n}\n\nexport function defineSpectreRating(\n tagName = 'sp-rating'\n): typeof SpectreRatingElement {\n const existingElement = customElements.get(tagName)\n\n if (existingElement) {\n return existingElement as unknown as typeof SpectreRatingElement\n }\n\n customElements.define(tagName, SpectreRatingElement)\n return SpectreRatingElement\n}\n","import { html, nothing } from 'lit'\nimport { ifDefined } from 'lit/directives/if-defined.js'\n\nimport { SpectreProjectableElement } from '../../utils/projectable'\nimport {\n isTestimonialVariant,\n type SpectreTestimonialVariant\n} from '../../utils/form'\n\nimport {\n getTestimonialClasses,\n type TestimonialRecipeOptions\n} from '@phcdevworks/spectre-ui'\n\nexport interface SpectreTestimonialProps {\n ariaLabel?: string | null\n ariaLabelledBy?: string | null\n ariaDescribedBy?: string | null\n disabled?: boolean | undefined\n fullHeight?: boolean | undefined\n id?: string | null | undefined\n interactive?: boolean | undefined\n loading?: boolean | undefined\n title?: string | null | undefined\n variant?: SpectreTestimonialVariant | undefined\n}\n\nexport class SpectreTestimonialElement\n extends SpectreProjectableElement\n implements SpectreTestimonialProps\n{\n static properties = {\n disabled: { type: Boolean, reflect: true },\n fullHeight: { attribute: 'full-height', type: Boolean, reflect: true },\n interactive: { type: Boolean, reflect: true },\n loading: { type: Boolean, reflect: true },\n variant: { type: String, reflect: true }\n }\n\n disabled: boolean | undefined = false\n fullHeight: boolean | undefined = false\n interactive: boolean | undefined = false\n loading: boolean | undefined = false\n variant: SpectreTestimonialVariant | undefined = 'elevated'\n\n override get id(): string {\n return super.id\n }\n\n override set id(value: string | null | undefined) {\n super.id = value\n }\n\n override get title(): string {\n return super.title\n }\n\n override set title(value: string | null | undefined) {\n super.title = value\n }\n\n protected override getContentContainer(): Element | null {\n return this.querySelector('[data-sp-testimonial-native]')\n }\n\n protected override isInternalNode(node: Node): boolean {\n if (node.nodeType !== Node.ELEMENT_NODE) {\n return false\n }\n const el = node as Element\n return el.hasAttribute('data-sp-testimonial-native')\n }\n\n protected override willUpdate(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n if (changedProperties.has('disabled') && this.disabled == null) {\n this.disabled = false\n }\n if (changedProperties.has('fullHeight') && this.fullHeight == null) {\n this.fullHeight = false\n }\n if (changedProperties.has('interactive') && this.interactive == null) {\n this.interactive = false\n }\n if (changedProperties.has('loading') && this.loading == null) {\n this.loading = false\n }\n if (\n changedProperties.has('variant') &&\n (this.variant == null || !isTestimonialVariant(this.variant))\n ) {\n this.variant = 'elevated'\n }\n }\n\n private get testimonialClasses(): string {\n return getTestimonialClasses({\n disabled: this.isDisabled,\n fullHeight: this.fullHeight ?? false,\n interactive: this.interactive ?? false,\n loading: this.loading ?? false,\n variant: this.variant as NonNullable<TestimonialRecipeOptions['variant']>\n })\n }\n\n override render() {\n return html`<div\n aria-busy=\"${this.loading ? 'true' : 'false'}\"\n aria-describedby=\"${ifDefined(this.forwardedAriaDescribedBy)}\"\n aria-label=\"${ifDefined(this.forwardedAriaLabel)}\"\n aria-labelledby=\"${ifDefined(this.forwardedAriaLabelledBy)}\"\n class=\"${this.testimonialClasses}\"\n data-sp-testimonial-native\n id=\"${ifDefined(this.id || undefined)}\"\n role=\"${ifDefined(this.hasForwardedLabel ? 'group' : undefined)}\"\n title=\"${ifDefined(this.title || undefined)}\"\n >\n ${this.hasProjectedContent ? this.projectedContent : nothing}\n </div>`\n }\n}\n\nexport function defineSpectreTestimonial(\n tagName = 'sp-testimonial'\n): typeof SpectreTestimonialElement {\n const existingElement = customElements.get(tagName)\n\n if (existingElement) {\n return existingElement as unknown as typeof SpectreTestimonialElement\n }\n\n customElements.define(tagName, SpectreTestimonialElement)\n return SpectreTestimonialElement\n}\n","import { html, nothing } from 'lit'\nimport { ifDefined } from 'lit/directives/if-defined.js'\n\nimport { SpectreProjectableElement } from '../../utils/projectable'\nimport {\n isAlertVariant,\n isInputSize,\n type SpectreAlertVariant,\n type SpectreInputSize\n} from '../../utils/form'\n\nimport {\n getAlertClasses,\n type AlertVariant,\n type AlertSize\n} from '@phcdevworks/spectre-ui'\n\nexport interface SpectreAlertProps {\n ariaLabel?: string | null\n ariaLabelledBy?: string | null\n ariaDescribedBy?: string | null\n dismissed?: boolean | undefined\n disabled?: boolean | undefined\n fullWidth?: boolean | undefined\n id?: string | null | undefined\n loading?: boolean | undefined\n size?: SpectreInputSize | undefined\n title?: string | null | undefined\n variant?: SpectreAlertVariant | undefined\n}\n\nexport class SpectreAlertElement\n extends SpectreProjectableElement\n implements SpectreAlertProps\n{\n static properties = {\n dismissed: { type: Boolean, reflect: true },\n disabled: { type: Boolean, reflect: true },\n fullWidth: { attribute: 'full-width', type: Boolean, reflect: true },\n loading: { type: Boolean, reflect: true },\n size: { type: String, reflect: true },\n variant: { type: String, reflect: true }\n }\n\n dismissed: boolean | undefined = false\n disabled: boolean | undefined = false\n fullWidth: boolean | undefined = false\n loading: boolean | undefined = false\n size: SpectreInputSize | undefined = 'md'\n variant: SpectreAlertVariant | undefined = 'info'\n\n override get id(): string {\n return super.id\n }\n\n override set id(value: string | null | undefined) {\n super.id = value\n }\n\n override get title(): string {\n return super.title\n }\n\n override set title(value: string | null | undefined) {\n super.title = value\n }\n\n protected override getContentContainer(): Element | null {\n return this.querySelector('[data-sp-alert-native]')\n }\n\n protected override isInternalNode(node: Node): boolean {\n if (node.nodeType !== Node.ELEMENT_NODE) {\n return false\n }\n const el = node as Element\n return el.hasAttribute('data-sp-alert-native')\n }\n\n protected override willUpdate(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n if (changedProperties.has('dismissed') && this.dismissed == null) {\n this.dismissed = false\n }\n if (changedProperties.has('disabled') && this.disabled == null) {\n this.disabled = false\n }\n if (changedProperties.has('fullWidth') && this.fullWidth == null) {\n this.fullWidth = false\n }\n if (changedProperties.has('loading') && this.loading == null) {\n this.loading = false\n }\n if (\n changedProperties.has('variant') &&\n (this.variant == null || !isAlertVariant(this.variant))\n ) {\n this.variant = 'info'\n }\n if (\n changedProperties.has('size') &&\n (this.size == null || !isInputSize(this.size))\n ) {\n this.size = 'md'\n }\n }\n\n private get alertClasses(): string {\n return getAlertClasses({\n disabled: this.isDisabled,\n dismissed: this.dismissed ?? false,\n fullWidth: this.fullWidth ?? false,\n loading: this.loading ?? false,\n size: this.size as AlertSize,\n variant: this.variant as AlertVariant\n })\n }\n\n override render() {\n return html`<div\n aria-busy=\"${this.loading ? 'true' : 'false'}\"\n aria-describedby=\"${ifDefined(this.forwardedAriaDescribedBy)}\"\n aria-label=\"${ifDefined(this.forwardedAriaLabel)}\"\n aria-labelledby=\"${ifDefined(this.forwardedAriaLabelledBy)}\"\n class=\"${this.alertClasses}\"\n data-sp-alert-native\n id=\"${ifDefined(this.id || undefined)}\"\n role=\"alert\"\n title=\"${ifDefined(this.title || undefined)}\"\n >\n ${this.hasProjectedContent ? this.projectedContent : nothing}\n </div>`\n }\n}\n\nexport function defineSpectreAlert(\n tagName = 'sp-alert'\n): typeof SpectreAlertElement {\n const existingElement = customElements.get(tagName)\n\n if (existingElement) {\n return existingElement as unknown as typeof SpectreAlertElement\n }\n\n customElements.define(tagName, SpectreAlertElement)\n return SpectreAlertElement\n}\n","import { html, nothing } from 'lit'\nimport { ifDefined } from 'lit/directives/if-defined.js'\n\nimport { SpectreProjectableElement } from '../../utils/projectable'\nimport {\n isAvatarShape,\n isAvatarSize,\n type SpectreAvatarShape,\n type SpectreAvatarSize\n} from '../../utils/form'\n\nimport {\n getAvatarClasses,\n type AvatarShape,\n type AvatarSize\n} from '@phcdevworks/spectre-ui'\n\nexport interface SpectreAvatarProps {\n ariaLabel?: string | null\n ariaLabelledBy?: string | null\n ariaDescribedBy?: string | null\n disabled?: boolean | undefined\n fullWidth?: boolean | undefined\n id?: string | null | undefined\n interactive?: boolean | undefined\n loading?: boolean | undefined\n placeholder?: boolean | undefined\n shape?: SpectreAvatarShape | undefined\n size?: SpectreAvatarSize | undefined\n title?: string | null | undefined\n}\n\nexport class SpectreAvatarElement\n extends SpectreProjectableElement\n implements SpectreAvatarProps\n{\n static properties = {\n disabled: { type: Boolean, reflect: true },\n fullWidth: { attribute: 'full-width', type: Boolean, reflect: true },\n interactive: { type: Boolean, reflect: true },\n loading: { type: Boolean, reflect: true },\n placeholder: { type: Boolean, reflect: true },\n shape: { type: String, reflect: true },\n size: { type: String, reflect: true }\n }\n\n disabled: boolean | undefined = false\n fullWidth: boolean | undefined = false\n interactive: boolean | undefined = false\n loading: boolean | undefined = false\n placeholder: boolean | undefined = false\n shape: SpectreAvatarShape | undefined = 'circle'\n size: SpectreAvatarSize | undefined = 'md'\n\n override get id(): string {\n return super.id\n }\n\n override set id(value: string | null | undefined) {\n super.id = value\n }\n\n override get title(): string {\n return super.title\n }\n\n override set title(value: string | null | undefined) {\n super.title = value\n }\n\n protected override getContentContainer(): Element | null {\n return this.querySelector('[data-sp-avatar-native]')\n }\n\n protected override isInternalNode(node: Node): boolean {\n if (node.nodeType !== Node.ELEMENT_NODE) {\n return false\n }\n const el = node as Element\n return el.hasAttribute('data-sp-avatar-native')\n }\n\n protected override willUpdate(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n if (changedProperties.has('disabled') && this.disabled == null) {\n this.disabled = false\n }\n if (changedProperties.has('fullWidth') && this.fullWidth == null) {\n this.fullWidth = false\n }\n if (changedProperties.has('interactive') && this.interactive == null) {\n this.interactive = false\n }\n if (changedProperties.has('loading') && this.loading == null) {\n this.loading = false\n }\n if (changedProperties.has('placeholder') && this.placeholder == null) {\n this.placeholder = false\n }\n if (\n changedProperties.has('shape') &&\n (this.shape == null || !isAvatarShape(this.shape))\n ) {\n this.shape = 'circle'\n }\n if (\n changedProperties.has('size') &&\n (this.size == null || !isAvatarSize(this.size))\n ) {\n this.size = 'md'\n }\n }\n\n private get avatarClasses(): string {\n return getAvatarClasses({\n disabled: this.isDisabled,\n fullWidth: this.fullWidth ?? false,\n interactive: this.interactive ?? false,\n loading: this.loading ?? false,\n placeholder: this.placeholder ?? false,\n shape: this.shape as AvatarShape,\n size: this.size as AvatarSize\n })\n }\n\n override render() {\n return html`<div\n aria-busy=\"${this.loading ? 'true' : 'false'}\"\n aria-describedby=\"${ifDefined(this.forwardedAriaDescribedBy)}\"\n aria-label=\"${ifDefined(this.forwardedAriaLabel)}\"\n aria-labelledby=\"${ifDefined(this.forwardedAriaLabelledBy)}\"\n class=\"${this.avatarClasses}\"\n data-sp-avatar-native\n id=\"${ifDefined(this.id || undefined)}\"\n role=\"${ifDefined(this.hasForwardedLabel ? 'group' : undefined)}\"\n title=\"${ifDefined(this.title || undefined)}\"\n >\n ${this.hasProjectedContent ? this.projectedContent : nothing}\n </div>`\n }\n}\n\nexport function defineSpectreAvatar(\n tagName = 'sp-avatar'\n): typeof SpectreAvatarElement {\n const existingElement = customElements.get(tagName)\n\n if (existingElement) {\n return existingElement as unknown as typeof SpectreAvatarElement\n }\n\n customElements.define(tagName, SpectreAvatarElement)\n return SpectreAvatarElement\n}\n","import { html } from 'lit'\nimport { ifDefined } from 'lit/directives/if-defined.js'\n\nimport { SpectreBaseElement } from '../../utils/base'\nimport {\n isInputSize,\n isSpinnerVariant,\n type SpectreInputSize,\n type SpectreSpinnerVariant\n} from '../../utils/form'\n\nimport {\n getSpinnerClasses,\n type SpinnerSize,\n type SpinnerVariant\n} from '@phcdevworks/spectre-ui'\n\nexport interface SpectreSpinnerProps {\n ariaLabel?: string | null\n ariaLabelledBy?: string | null\n ariaDescribedBy?: string | null\n disabled?: boolean | undefined\n id?: string | null | undefined\n loading?: boolean | undefined\n size?: SpectreInputSize | undefined\n title?: string | null | undefined\n variant?: SpectreSpinnerVariant | undefined\n}\n\nexport class SpectreSpinnerElement\n extends SpectreBaseElement\n implements SpectreSpinnerProps\n{\n static properties = {\n disabled: { type: Boolean, reflect: true },\n loading: { type: Boolean, reflect: true },\n size: { type: String, reflect: true },\n variant: { type: String, reflect: true }\n }\n\n disabled: boolean | undefined = false\n loading: boolean | undefined = true\n size: SpectreInputSize | undefined = 'md'\n variant: SpectreSpinnerVariant | undefined\n\n override get id(): string {\n return super.id\n }\n\n override set id(value: string | null | undefined) {\n super.id = value\n }\n\n override get title(): string {\n return super.title\n }\n\n override set title(value: string | null | undefined) {\n super.title = value\n }\n\n protected override willUpdate(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n if (changedProperties.has('disabled') && this.disabled == null) {\n this.disabled = false\n }\n if (changedProperties.has('loading') && this.loading == null) {\n this.loading = true\n }\n if (\n changedProperties.has('size') &&\n (this.size == null || !isInputSize(this.size))\n ) {\n this.size = 'md'\n }\n if (\n changedProperties.has('variant') &&\n this.variant != null &&\n !isSpinnerVariant(this.variant)\n ) {\n this.variant = undefined\n }\n }\n\n private get spinnerClasses(): string {\n return getSpinnerClasses({\n disabled: this.disabled ?? false,\n loading: this.loading ?? true,\n size: this.size as SpinnerSize,\n ...(this.variant != null\n ? { variant: this.variant as SpinnerVariant }\n : {})\n })\n }\n\n private get computedAriaLabel(): string {\n return this.forwardedAriaLabel ?? 'Loading'\n }\n\n override render() {\n return html`<div\n aria-busy=\"${this.loading ? 'true' : 'false'}\"\n aria-describedby=\"${ifDefined(this.forwardedAriaDescribedBy)}\"\n aria-label=\"${this.computedAriaLabel}\"\n aria-labelledby=\"${ifDefined(this.forwardedAriaLabelledBy)}\"\n class=\"${this.spinnerClasses}\"\n data-sp-spinner-native\n id=\"${ifDefined(this.id || undefined)}\"\n role=\"status\"\n title=\"${ifDefined(this.title || undefined)}\"\n ></div>`\n }\n}\n\nexport function defineSpectreSpinner(\n tagName = 'sp-spinner'\n): typeof SpectreSpinnerElement {\n const existingElement = customElements.get(tagName)\n\n if (existingElement) {\n return existingElement as unknown as typeof SpectreSpinnerElement\n }\n\n customElements.define(tagName, SpectreSpinnerElement)\n return SpectreSpinnerElement\n}\n","import { html, nothing } from 'lit'\nimport { ifDefined } from 'lit/directives/if-defined.js'\n\nimport { SpectreProjectableElement } from '../../utils/projectable'\nimport {\n isInputSize,\n isTagVariant,\n type SpectreInputSize,\n type SpectreTagVariant\n} from '../../utils/form'\n\nimport {\n getTagClasses,\n type TagVariant,\n type TagSize\n} from '@phcdevworks/spectre-ui'\n\nexport interface SpectreTagProps {\n ariaLabel?: string | null\n ariaLabelledBy?: string | null\n ariaDescribedBy?: string | null\n dismissible?: boolean | undefined\n disabled?: boolean | undefined\n fullWidth?: boolean | undefined\n id?: string | null | undefined\n interactive?: boolean | undefined\n loading?: boolean | undefined\n selected?: boolean | undefined\n size?: SpectreInputSize | undefined\n title?: string | null | undefined\n variant?: SpectreTagVariant | undefined\n}\n\nexport class SpectreTagElement\n extends SpectreProjectableElement\n implements SpectreTagProps\n{\n static properties = {\n dismissible: { type: Boolean, reflect: true },\n disabled: { type: Boolean, reflect: true },\n fullWidth: { attribute: 'full-width', type: Boolean, reflect: true },\n interactive: { type: Boolean, reflect: true },\n loading: { type: Boolean, reflect: true },\n selected: { type: Boolean, reflect: true },\n size: { type: String, reflect: true },\n variant: { type: String, reflect: true }\n }\n\n dismissible: boolean | undefined = false\n disabled: boolean | undefined = false\n fullWidth: boolean | undefined = false\n interactive: boolean | undefined = false\n loading: boolean | undefined = false\n selected: boolean | undefined = false\n size: SpectreInputSize | undefined = 'md'\n variant: SpectreTagVariant | undefined = 'default'\n\n override get id(): string {\n return super.id\n }\n\n override set id(value: string | null | undefined) {\n super.id = value\n }\n\n override get title(): string {\n return super.title\n }\n\n override set title(value: string | null | undefined) {\n super.title = value\n }\n\n protected override getContentContainer(): Element | null {\n return this.querySelector('[data-sp-tag-native]')\n }\n\n protected override isInternalNode(node: Node): boolean {\n if (node.nodeType !== Node.ELEMENT_NODE) {\n return false\n }\n const el = node as Element\n return el.hasAttribute('data-sp-tag-native')\n }\n\n protected override willUpdate(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n if (changedProperties.has('dismissible') && this.dismissible == null) {\n this.dismissible = false\n }\n if (changedProperties.has('disabled') && this.disabled == null) {\n this.disabled = false\n }\n if (changedProperties.has('fullWidth') && this.fullWidth == null) {\n this.fullWidth = false\n }\n if (changedProperties.has('interactive') && this.interactive == null) {\n this.interactive = false\n }\n if (changedProperties.has('loading') && this.loading == null) {\n this.loading = false\n }\n if (changedProperties.has('selected') && this.selected == null) {\n this.selected = false\n }\n if (\n changedProperties.has('size') &&\n (this.size == null || !isInputSize(this.size))\n ) {\n this.size = 'md'\n }\n if (\n changedProperties.has('variant') &&\n (this.variant == null || !isTagVariant(this.variant))\n ) {\n this.variant = 'default'\n }\n }\n\n private get tagClasses(): string {\n return getTagClasses({\n disabled: this.isDisabled,\n dismissible: this.dismissible ?? false,\n fullWidth: this.fullWidth ?? false,\n interactive: this.interactive ?? false,\n loading: this.loading ?? false,\n selected: this.selected ?? false,\n size: this.size as TagSize,\n variant: this.variant as TagVariant\n })\n }\n\n override render() {\n return html`<span\n aria-busy=\"${this.loading ? 'true' : 'false'}\"\n aria-describedby=\"${ifDefined(this.forwardedAriaDescribedBy)}\"\n aria-label=\"${ifDefined(this.forwardedAriaLabel)}\"\n aria-labelledby=\"${ifDefined(this.forwardedAriaLabelledBy)}\"\n class=\"${this.tagClasses}\"\n data-sp-tag-native\n id=\"${ifDefined(this.id || undefined)}\"\n role=\"${ifDefined(this.hasForwardedLabel ? 'group' : undefined)}\"\n title=\"${ifDefined(this.title || undefined)}\"\n >\n ${this.hasProjectedContent ? this.projectedContent : nothing}\n </span>`\n }\n}\n\nexport function defineSpectreTag(tagName = 'sp-tag'): typeof SpectreTagElement {\n const existingElement = customElements.get(tagName)\n\n if (existingElement) {\n return existingElement as unknown as typeof SpectreTagElement\n }\n\n customElements.define(tagName, SpectreTagElement)\n return SpectreTagElement\n}\n","import { html, nothing } from 'lit'\nimport { ifDefined } from 'lit/directives/if-defined.js'\n\nimport { SpectreProjectableElement } from '../../utils/projectable'\n\nimport { getPricingCardClasses } from '@phcdevworks/spectre-ui'\n\nexport interface SpectrePricingCardProps {\n ariaLabel?: string | null\n ariaLabelledBy?: string | null\n ariaDescribedBy?: string | null\n disabled?: boolean | undefined\n featured?: boolean | undefined\n fullHeight?: boolean | undefined\n id?: string | null | undefined\n interactive?: boolean | undefined\n loading?: boolean | undefined\n title?: string | null | undefined\n}\n\nexport class SpectrePricingCardElement\n extends SpectreProjectableElement\n implements SpectrePricingCardProps\n{\n static properties = {\n disabled: { type: Boolean, reflect: true },\n featured: { type: Boolean, reflect: true },\n fullHeight: { attribute: 'full-height', type: Boolean, reflect: true },\n interactive: { type: Boolean, reflect: true },\n loading: { type: Boolean, reflect: true }\n }\n\n disabled: boolean | undefined = false\n featured: boolean | undefined = false\n fullHeight: boolean | undefined = false\n interactive: boolean | undefined = false\n loading: boolean | undefined = false\n\n override get id(): string {\n return super.id\n }\n\n override set id(value: string | null | undefined) {\n super.id = value\n }\n\n override get title(): string {\n return super.title\n }\n\n override set title(value: string | null | undefined) {\n super.title = value\n }\n\n protected override getContentContainer(): Element | null {\n return this.querySelector('[data-sp-pricing-card-native]')\n }\n\n protected override isInternalNode(node: Node): boolean {\n if (node.nodeType !== Node.ELEMENT_NODE) {\n return false\n }\n const el = node as Element\n return el.hasAttribute('data-sp-pricing-card-native')\n }\n\n protected override willUpdate(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n if (changedProperties.has('disabled') && this.disabled == null) {\n this.disabled = false\n }\n if (changedProperties.has('featured') && this.featured == null) {\n this.featured = false\n }\n if (changedProperties.has('fullHeight') && this.fullHeight == null) {\n this.fullHeight = false\n }\n if (changedProperties.has('interactive') && this.interactive == null) {\n this.interactive = false\n }\n if (changedProperties.has('loading') && this.loading == null) {\n this.loading = false\n }\n }\n\n private get pricingCardClasses(): string {\n return getPricingCardClasses({\n disabled: this.isDisabled,\n featured: this.featured ?? false,\n fullHeight: this.fullHeight ?? false,\n interactive: this.interactive ?? false,\n loading: this.loading ?? false\n })\n }\n\n override render() {\n return html`<div\n aria-busy=\"${this.loading ? 'true' : 'false'}\"\n aria-describedby=\"${ifDefined(this.forwardedAriaDescribedBy)}\"\n aria-label=\"${ifDefined(this.forwardedAriaLabel)}\"\n aria-labelledby=\"${ifDefined(this.forwardedAriaLabelledBy)}\"\n class=\"${this.pricingCardClasses}\"\n data-sp-pricing-card-native\n id=\"${ifDefined(this.id || undefined)}\"\n role=\"${ifDefined(this.hasForwardedLabel ? 'group' : undefined)}\"\n title=\"${ifDefined(this.title || undefined)}\"\n >\n ${this.hasProjectedContent ? this.projectedContent : nothing}\n </div>`\n }\n}\n\nexport function defineSpectrePricingCard(\n tagName = 'sp-pricing-card'\n): typeof SpectrePricingCardElement {\n const existingElement = customElements.get(tagName)\n\n if (existingElement) {\n return existingElement as unknown as typeof SpectrePricingCardElement\n }\n\n customElements.define(tagName, SpectrePricingCardElement)\n return SpectrePricingCardElement\n}\n","import { html, nothing } from 'lit'\nimport { ifDefined } from 'lit/directives/if-defined.js'\n\nimport { SpectreProjectableElement } from '../../utils/projectable'\nimport {\n isContainerMaxWidth,\n sanitizeUtilityClasses,\n type SpectreContainerMaxWidth\n} from '../../utils/form'\n\nimport {\n getContainerClasses,\n type ContainerMaxWidth\n} from '@phcdevworks/spectre-ui'\n\nexport interface SpectreContainerProps {\n ariaLabel?: string | null\n ariaLabelledBy?: string | null\n ariaDescribedBy?: string | null\n id?: string | null | undefined\n innerClass?: string | undefined\n maxWidth?: SpectreContainerMaxWidth | undefined\n title?: string | null | undefined\n}\n\nexport class SpectreContainerElement\n extends SpectreProjectableElement\n implements SpectreContainerProps\n{\n static properties = {\n innerClass: { attribute: 'inner-class', type: String },\n maxWidth: { attribute: 'max-width', type: String, reflect: true }\n }\n\n innerClass: string | undefined = undefined\n maxWidth: SpectreContainerMaxWidth | undefined = undefined\n\n override get id(): string {\n return super.id\n }\n\n override set id(value: string | null | undefined) {\n super.id = value\n }\n\n override get title(): string {\n return super.title\n }\n\n override set title(value: string | null | undefined) {\n super.title = value\n }\n\n override connectedCallback(): void {\n super.connectedCallback()\n this.style.display ||= 'block'\n }\n\n protected override getContentContainer(): Element | null {\n return this.querySelector('[data-sp-container-native]')\n }\n\n protected override isInternalNode(node: Node): boolean {\n if (node.nodeType !== Node.ELEMENT_NODE) {\n return false\n }\n const el = node as Element\n return el.hasAttribute('data-sp-container-native')\n }\n\n protected override willUpdate(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n if (\n changedProperties.has('maxWidth') &&\n this.maxWidth != null &&\n !isContainerMaxWidth(this.maxWidth)\n ) {\n this.maxWidth = undefined\n }\n }\n\n private get containerClasses(): string {\n const recipeClasses = getContainerClasses(\n this.maxWidth != null\n ? { maxWidth: this.maxWidth as ContainerMaxWidth }\n : {}\n )\n const utilityClasses = sanitizeUtilityClasses(this.innerClass)\n return utilityClasses\n ? `${recipeClasses} ${utilityClasses}`\n : recipeClasses\n }\n\n override render() {\n return html`<div\n aria-describedby=\"${ifDefined(this.forwardedAriaDescribedBy)}\"\n aria-label=\"${ifDefined(this.forwardedAriaLabel)}\"\n aria-labelledby=\"${ifDefined(this.forwardedAriaLabelledBy)}\"\n class=\"${this.containerClasses}\"\n data-sp-container-native\n id=\"${ifDefined(this.id || undefined)}\"\n title=\"${ifDefined(this.title || undefined)}\"\n >\n ${this.hasProjectedContent ? this.projectedContent : nothing}\n </div>`\n }\n}\n\nexport function defineSpectreContainer(\n tagName = 'sp-container'\n): typeof SpectreContainerElement {\n const existingElement = customElements.get(tagName)\n\n if (existingElement) {\n return existingElement as unknown as typeof SpectreContainerElement\n }\n\n customElements.define(tagName, SpectreContainerElement)\n return SpectreContainerElement\n}\n","import { html, nothing } from 'lit'\nimport { ifDefined } from 'lit/directives/if-defined.js'\n\nimport { SpectreProjectableElement } from '../../utils/projectable'\nimport {\n isGridAlign,\n isGridColumns,\n isGridExplicitTemplateOptions,\n isGridFixedTracksOptions,\n isGridGap,\n isGridLeadingTracksOptions,\n isGridOffset,\n isGridOffsetOptions,\n isGridOrder,\n isGridOrderOptions,\n isGridSpan,\n isGridSpanOptions,\n sanitizeUtilityClasses,\n type SpectreGridAlign,\n type SpectreGridColumns,\n type SpectreGridExplicitTemplateOptions,\n type SpectreGridFixedTracksOptions,\n type SpectreGridGap,\n type SpectreGridLeadingTracksOptions,\n type SpectreGridOffset,\n type SpectreGridOffsetOptions,\n type SpectreGridOrder,\n type SpectreGridOrderOptions,\n type SpectreGridSpan,\n type SpectreGridSpanOptions\n} from '../../utils/form'\n\nimport {\n getGridClasses,\n type GridAlign,\n type GridColumns,\n type GridExplicitTemplateOptions,\n type GridFixedTracksOptions,\n type GridGap,\n type GridLeadingTracksOptions,\n type GridOffset,\n type GridOffsetOptions,\n type GridOrder,\n type GridOrderOptions,\n type GridSpan,\n type GridSpanOptions\n} from '@phcdevworks/spectre-ui'\nimport { normalizeInt } from '../../utils/form'\n\nexport interface SpectreGridProps {\n align?: SpectreGridAlign | undefined\n ariaLabel?: string | null\n ariaLabelledBy?: string | null\n ariaDescribedBy?: string | null\n columns?: SpectreGridColumns | undefined\n columnGap?: SpectreGridGap | undefined\n explicitTemplate?: SpectreGridExplicitTemplateOptions | undefined\n fixedTracks?: SpectreGridFixedTracksOptions | undefined\n gap?: SpectreGridGap | undefined\n id?: string | null | undefined\n innerClass?: string | undefined\n leadingTracks?: SpectreGridLeadingTracksOptions | undefined\n offset?: SpectreGridOffset | SpectreGridOffsetOptions | undefined\n order?: SpectreGridOrder | SpectreGridOrderOptions | undefined\n role?: string | null | undefined\n rowGap?: SpectreGridGap | undefined\n rowOffset?: SpectreGridOffset | SpectreGridOffsetOptions | undefined\n rowSpan?: SpectreGridSpan | SpectreGridSpanOptions | undefined\n span?: SpectreGridSpan | SpectreGridSpanOptions | undefined\n title?: string | null | undefined\n}\n\nexport class SpectreGridElement\n extends SpectreProjectableElement\n implements SpectreGridProps\n{\n static properties = {\n align: { type: String, reflect: true },\n columns: { type: Number, reflect: true },\n columnGap: { attribute: 'column-gap', type: String, reflect: true },\n explicitTemplate: { attribute: 'explicit-template', type: Object },\n fixedTracks: { attribute: 'fixed-tracks', type: Object },\n gap: { type: String, reflect: true },\n innerClass: { attribute: 'inner-class', type: String },\n leadingTracks: { attribute: 'leading-tracks', type: Object },\n offset: { type: Object },\n order: { type: Object },\n rowGap: { attribute: 'row-gap', type: String, reflect: true },\n rowOffset: { attribute: 'row-offset', type: Object },\n rowSpan: { attribute: 'row-span', type: Object },\n span: { type: Object }\n }\n\n align: SpectreGridAlign | undefined = undefined\n columns: SpectreGridColumns | undefined = 1\n columnGap: SpectreGridGap | undefined = undefined\n explicitTemplate: SpectreGridExplicitTemplateOptions | undefined = undefined\n fixedTracks: SpectreGridFixedTracksOptions | undefined = undefined\n gap: SpectreGridGap | undefined = 'md'\n innerClass: string | undefined = undefined\n leadingTracks: SpectreGridLeadingTracksOptions | undefined = undefined\n offset: SpectreGridOffset | SpectreGridOffsetOptions | undefined\n order: SpectreGridOrder | SpectreGridOrderOptions | undefined\n rowGap: SpectreGridGap | undefined = undefined\n rowOffset: SpectreGridOffset | SpectreGridOffsetOptions | undefined\n rowSpan: SpectreGridSpan | SpectreGridSpanOptions | undefined\n span: SpectreGridSpan | SpectreGridSpanOptions | undefined\n\n override get id(): string {\n return super.id\n }\n\n override set id(value: string | null | undefined) {\n super.id = value\n }\n\n override get title(): string {\n return super.title\n }\n\n override set title(value: string | null | undefined) {\n super.title = value\n }\n\n private _role: string | null = null\n\n override get role(): string | null {\n return this._role\n }\n\n override set role(value: string | null | undefined) {\n const normalizedValue = value?.trim() || null\n if (this._role === normalizedValue) {\n return\n }\n this._role = normalizedValue\n if (HTMLElement.prototype.hasAttribute.call(this, 'role')) {\n HTMLElement.prototype.removeAttribute.call(this, 'role')\n }\n this.requestUpdate()\n }\n\n override getAttribute(qualifiedName: string): string | null {\n if (qualifiedName === 'role') {\n return this.role\n }\n return super.getAttribute(qualifiedName)\n }\n\n override hasAttribute(qualifiedName: string): boolean {\n if (qualifiedName === 'role') {\n return this.role !== null\n }\n return super.hasAttribute(qualifiedName)\n }\n\n override setAttribute(qualifiedName: string, value: string): void {\n if (qualifiedName === 'role') {\n this.role = value\n return\n }\n super.setAttribute(qualifiedName, value)\n }\n\n override removeAttribute(qualifiedName: string): void {\n if (qualifiedName === 'role') {\n this.role = null\n return\n }\n super.removeAttribute(qualifiedName)\n }\n\n override connectedCallback(): void {\n const initialRole = HTMLElement.prototype.getAttribute.call(this, 'role')\n if (initialRole !== null) {\n HTMLElement.prototype.removeAttribute.call(this, 'role')\n }\n super.connectedCallback()\n if (initialRole !== null) {\n this.role = initialRole\n }\n this.style.display ||= 'block'\n }\n\n protected override getContentContainer(): Element | null {\n return this.querySelector('[data-sp-grid-native]')\n }\n\n protected override isInternalNode(node: Node): boolean {\n if (node.nodeType !== Node.ELEMENT_NODE) {\n return false\n }\n const el = node as Element\n return el.hasAttribute('data-sp-grid-native')\n }\n\n protected override willUpdate(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n if (\n changedProperties.has('align') &&\n this.align != null &&\n !isGridAlign(this.align)\n ) {\n this.align = undefined\n }\n if (changedProperties.has('columns')) {\n const normalized = normalizeInt(this.columns, undefined, 1)\n this.columns =\n normalized != null && isGridColumns(normalized)\n ? (normalized as SpectreGridColumns)\n : 1\n }\n if (\n changedProperties.has('gap') &&\n (this.gap == null || !isGridGap(this.gap))\n ) {\n this.gap = 'md'\n }\n if (\n changedProperties.has('columnGap') &&\n this.columnGap != null &&\n !isGridGap(this.columnGap)\n ) {\n this.columnGap = undefined\n }\n if (\n changedProperties.has('rowGap') &&\n this.rowGap != null &&\n !isGridGap(this.rowGap)\n ) {\n this.rowGap = undefined\n }\n if (\n changedProperties.has('span') &&\n this.span !== undefined &&\n !isGridSpan(this.span) &&\n !isGridSpanOptions(this.span)\n ) {\n this.span = undefined\n }\n if (\n changedProperties.has('offset') &&\n this.offset !== undefined &&\n !isGridOffset(this.offset) &&\n !isGridOffsetOptions(this.offset)\n ) {\n this.offset = undefined\n }\n if (\n changedProperties.has('rowSpan') &&\n this.rowSpan !== undefined &&\n !isGridSpan(this.rowSpan) &&\n !isGridSpanOptions(this.rowSpan)\n ) {\n this.rowSpan = undefined\n }\n if (\n changedProperties.has('rowOffset') &&\n this.rowOffset !== undefined &&\n !isGridOffset(this.rowOffset) &&\n !isGridOffsetOptions(this.rowOffset)\n ) {\n this.rowOffset = undefined\n }\n if (\n changedProperties.has('order') &&\n this.order !== undefined &&\n !isGridOrder(this.order) &&\n !isGridOrderOptions(this.order)\n ) {\n this.order = undefined\n }\n if (\n changedProperties.has('leadingTracks') &&\n this.leadingTracks !== undefined &&\n !isGridLeadingTracksOptions(this.leadingTracks)\n ) {\n this.leadingTracks = undefined\n }\n if (\n changedProperties.has('fixedTracks') &&\n this.fixedTracks !== undefined &&\n !isGridFixedTracksOptions(this.fixedTracks)\n ) {\n this.fixedTracks = undefined\n }\n if (\n changedProperties.has('explicitTemplate') &&\n this.explicitTemplate !== undefined &&\n !isGridExplicitTemplateOptions(this.explicitTemplate)\n ) {\n this.explicitTemplate = undefined\n }\n }\n\n private get gridClasses(): string {\n const recipeClasses = getGridClasses({\n columns: this.columns as GridColumns,\n gap: this.gap as GridGap,\n ...(this.align !== undefined && { align: this.align as GridAlign }),\n ...(this.columnGap !== undefined && {\n columnGap: this.columnGap as GridGap\n }),\n ...(this.rowGap !== undefined && { rowGap: this.rowGap as GridGap }),\n ...(this.span !== undefined && {\n span: this.span as GridSpan | GridSpanOptions\n }),\n ...(this.offset !== undefined && {\n offset: this.offset as GridOffset | GridOffsetOptions\n }),\n ...(this.rowSpan !== undefined && {\n rowSpan: this.rowSpan as GridSpan | GridSpanOptions\n }),\n ...(this.rowOffset !== undefined && {\n rowOffset: this.rowOffset as GridOffset | GridOffsetOptions\n }),\n ...(this.order !== undefined && {\n order: this.order as GridOrder | GridOrderOptions\n }),\n ...(this.leadingTracks !== undefined && {\n leadingTracks: this.leadingTracks as GridLeadingTracksOptions\n }),\n ...(this.fixedTracks !== undefined && {\n fixedTracks: this.fixedTracks as GridFixedTracksOptions\n }),\n ...(this.explicitTemplate !== undefined && {\n explicitTemplate: this.explicitTemplate as GridExplicitTemplateOptions\n })\n })\n const utilityClasses = sanitizeUtilityClasses(this.innerClass)\n return utilityClasses ? `${recipeClasses} ${utilityClasses}` : recipeClasses\n }\n\n override render() {\n return html`<div\n aria-describedby=\"${ifDefined(this.forwardedAriaDescribedBy)}\"\n aria-label=\"${ifDefined(this.forwardedAriaLabel)}\"\n aria-labelledby=\"${ifDefined(this.forwardedAriaLabelledBy)}\"\n class=\"${this.gridClasses}\"\n data-sp-grid-native\n id=\"${ifDefined(this.id || undefined)}\"\n role=\"${ifDefined(this.role ?? undefined)}\"\n title=\"${ifDefined(this.title || undefined)}\"\n >\n ${this.hasProjectedContent ? this.projectedContent : nothing}\n </div>`\n }\n}\n\nexport function defineSpectreGrid(\n tagName = 'sp-grid'\n): typeof SpectreGridElement {\n const existingElement = customElements.get(tagName)\n\n if (existingElement) {\n return existingElement as unknown as typeof SpectreGridElement\n }\n\n customElements.define(tagName, SpectreGridElement)\n return SpectreGridElement\n}\n","import { html, nothing } from 'lit'\nimport { ifDefined } from 'lit/directives/if-defined.js'\n\nimport { SpectreProjectableElement } from '../../utils/projectable'\nimport { sanitizeUtilityClasses } from '../../utils/form'\n\nimport { getSectionClasses } from '@phcdevworks/spectre-ui'\n\nexport interface SpectreSectionProps {\n ariaLabel?: string | null\n ariaLabelledBy?: string | null\n ariaDescribedBy?: string | null\n id?: string | null | undefined\n innerClass?: string | undefined\n title?: string | null | undefined\n}\n\nexport class SpectreSectionElement\n extends SpectreProjectableElement\n implements SpectreSectionProps\n{\n static properties = {\n innerClass: { attribute: 'inner-class', type: String }\n }\n\n innerClass: string | undefined = undefined\n\n override get id(): string {\n return super.id\n }\n\n override set id(value: string | null | undefined) {\n super.id = value\n }\n\n override get title(): string {\n return super.title\n }\n\n override set title(value: string | null | undefined) {\n super.title = value\n }\n\n override connectedCallback(): void {\n super.connectedCallback()\n this.style.display ||= 'block'\n }\n\n protected override getContentContainer(): Element | null {\n return this.querySelector('[data-sp-section-native]')\n }\n\n protected override isInternalNode(node: Node): boolean {\n if (node.nodeType !== Node.ELEMENT_NODE) {\n return false\n }\n const el = node as Element\n return el.hasAttribute('data-sp-section-native')\n }\n\n private get sectionClasses(): string {\n const recipeClasses = getSectionClasses({})\n const utilityClasses = sanitizeUtilityClasses(this.innerClass)\n return utilityClasses\n ? `${recipeClasses} ${utilityClasses}`\n : recipeClasses\n }\n\n override render() {\n return html`<section\n aria-describedby=\"${ifDefined(this.forwardedAriaDescribedBy)}\"\n aria-label=\"${ifDefined(this.forwardedAriaLabel)}\"\n aria-labelledby=\"${ifDefined(this.forwardedAriaLabelledBy)}\"\n class=\"${this.sectionClasses}\"\n data-sp-section-native\n id=\"${ifDefined(this.id || undefined)}\"\n title=\"${ifDefined(this.title || undefined)}\"\n >\n ${this.hasProjectedContent ? this.projectedContent : nothing}\n </section>`\n }\n}\n\nexport function defineSpectreSection(\n tagName = 'sp-section'\n): typeof SpectreSectionElement {\n const existingElement = customElements.get(tagName)\n\n if (existingElement) {\n return existingElement as unknown as typeof SpectreSectionElement\n }\n\n customElements.define(tagName, SpectreSectionElement)\n return SpectreSectionElement\n}\n","import { html, nothing } from 'lit'\nimport { ifDefined } from 'lit/directives/if-defined.js'\n\nimport { SpectreProjectableElement } from '../../utils/projectable'\nimport {\n isStackAlign,\n isStackBasis,\n isStackDirection,\n isStackGap,\n sanitizeUtilityClasses,\n type SpectreStackAlign,\n type SpectreStackBasis,\n type SpectreStackDirection,\n type SpectreStackGap\n} from '../../utils/form'\n\nimport {\n getStackClasses,\n type StackAlign,\n type StackBasis,\n type StackDirection,\n type StackGap\n} from '@phcdevworks/spectre-ui'\n\nexport interface SpectreStackProps {\n align?: SpectreStackAlign | undefined\n ariaLabel?: string | null\n ariaLabelledBy?: string | null\n ariaDescribedBy?: string | null\n basis?: SpectreStackBasis | undefined\n direction?: SpectreStackDirection | undefined\n gap?: SpectreStackGap | undefined\n id?: string | null | undefined\n innerClass?: string | undefined\n title?: string | null | undefined\n}\n\nexport class SpectreStackElement\n extends SpectreProjectableElement\n implements SpectreStackProps\n{\n static properties = {\n align: { type: String, reflect: true },\n basis: { type: String, reflect: true },\n direction: { type: String, reflect: true },\n gap: { type: String, reflect: true },\n innerClass: { attribute: 'inner-class', type: String }\n }\n\n align: SpectreStackAlign | undefined = 'center'\n basis: SpectreStackBasis | undefined = undefined\n direction: SpectreStackDirection | undefined = 'vertical'\n gap: SpectreStackGap | undefined = 'md'\n innerClass: string | undefined = undefined\n\n override get id(): string {\n return super.id\n }\n\n override set id(value: string | null | undefined) {\n super.id = value\n }\n\n override get title(): string {\n return super.title\n }\n\n override set title(value: string | null | undefined) {\n super.title = value\n }\n\n override connectedCallback(): void {\n super.connectedCallback()\n this.style.display ||= 'block'\n }\n\n protected override getContentContainer(): Element | null {\n return this.querySelector('[data-sp-stack-native]')\n }\n\n protected override isInternalNode(node: Node): boolean {\n if (node.nodeType !== Node.ELEMENT_NODE) {\n return false\n }\n const el = node as Element\n return el.hasAttribute('data-sp-stack-native')\n }\n\n protected override willUpdate(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n if (\n changedProperties.has('direction') &&\n (this.direction == null || !isStackDirection(this.direction))\n ) {\n this.direction = 'vertical'\n }\n if (\n changedProperties.has('basis') &&\n this.basis != null &&\n !isStackBasis(this.basis)\n ) {\n this.basis = undefined\n }\n if (\n changedProperties.has('align') &&\n (this.align == null || !isStackAlign(this.align))\n ) {\n this.align = 'center'\n }\n if (\n changedProperties.has('gap') &&\n (this.gap == null || !isStackGap(this.gap))\n ) {\n this.gap = 'md'\n }\n }\n\n private get stackClasses(): string {\n const recipeClasses = getStackClasses({\n align: this.align as StackAlign,\n direction: this.direction as StackDirection,\n gap: this.gap as StackGap,\n ...(this.basis != null ? { basis: this.basis as StackBasis } : {})\n })\n const utilityClasses = sanitizeUtilityClasses(this.innerClass)\n return utilityClasses ? `${recipeClasses} ${utilityClasses}` : recipeClasses\n }\n\n override render() {\n return html`<div\n aria-describedby=\"${ifDefined(this.forwardedAriaDescribedBy)}\"\n aria-label=\"${ifDefined(this.forwardedAriaLabel)}\"\n aria-labelledby=\"${ifDefined(this.forwardedAriaLabelledBy)}\"\n class=\"${this.stackClasses}\"\n data-sp-stack-native\n id=\"${ifDefined(this.id || undefined)}\"\n title=\"${ifDefined(this.title || undefined)}\"\n >\n ${this.hasProjectedContent ? this.projectedContent : nothing}\n </div>`\n }\n}\n\nexport function defineSpectreStack(\n tagName = 'sp-stack'\n): typeof SpectreStackElement {\n const existingElement = customElements.get(tagName)\n\n if (existingElement) {\n return existingElement as unknown as typeof SpectreStackElement\n }\n\n customElements.define(tagName, SpectreStackElement)\n return SpectreStackElement\n}\n","import { html, nothing } from 'lit'\nimport { ifDefined } from 'lit/directives/if-defined.js'\n\nimport { SpectreBaseElement } from '../../utils/base'\nimport { hasMeaningfulContent } from '../../utils/dom'\nimport {\n isDropdownPlacement,\n type SpectreDropdownPlacement\n} from '../../utils/form'\n\nimport {\n getDropdownClasses,\n getDropdownMenuClasses\n} from '@phcdevworks/spectre-ui'\n\nexport interface SpectreDropdownProps {\n ariaLabel?: string | null\n fullWidth?: boolean | undefined\n id?: string | null | undefined\n mega?: boolean | undefined\n open?: boolean | undefined\n placement?: SpectreDropdownPlacement | undefined\n title?: string | null | undefined\n triggerLabel?: string | undefined\n}\n\nexport class SpectreDropdownElement\n extends SpectreBaseElement\n implements SpectreDropdownProps\n{\n static properties = {\n fullWidth: { attribute: 'full-width', type: Boolean, reflect: true },\n mega: { type: Boolean, reflect: true },\n open: { type: Boolean, reflect: true },\n placement: { type: String, reflect: true },\n triggerLabel: { attribute: 'trigger-label', type: String }\n }\n\n fullWidth: boolean | undefined = false\n mega: boolean | undefined = false\n open: boolean | undefined = false\n placement: SpectreDropdownPlacement | undefined = 'bottom-start'\n triggerLabel: string | undefined = 'Toggle menu'\n\n private triggerContent: Node[] = []\n private menuContent: Node[] = []\n private contentObserver?: MutationObserver | undefined\n\n override get id(): string {\n return super.id\n }\n\n override set id(value: string | null | undefined) {\n super.id = value\n }\n\n override get title(): string {\n return super.title\n }\n\n override set title(value: string | null | undefined) {\n super.title = value\n }\n\n private isInternalNode(node: Node): boolean {\n if (node.nodeType !== Node.ELEMENT_NODE) {\n return false\n }\n const el = node as Element\n return (\n el.hasAttribute('data-sp-dropdown-native') ||\n el.hasAttribute('data-sp-dropdown-menu') ||\n el.hasAttribute('data-sp-dropdown-trigger')\n )\n }\n\n private syncProjectedContent(): boolean {\n const nextTriggerContent: Node[] = []\n const nextMenuContent: Node[] = []\n\n // Retain authored nodes already projected into native containers. Reading\n // those containers wholesale would also capture Lit's own template nodes.\n const sourceNodes = [\n ...this.triggerContent.filter((node) => this.contains(node)),\n ...this.menuContent.filter((node) => this.contains(node)),\n ...Array.from(this.childNodes).filter(\n (node) =>\n !this.hasUpdated ||\n node.nodeType !== Node.TEXT_NODE ||\n node.textContent?.trim()\n )\n ]\n\n new Set(sourceNodes).forEach((node) => {\n if (node.nodeType === Node.COMMENT_NODE || this.isInternalNode(node)) {\n return\n }\n const isTriggerSlot =\n node.nodeType === Node.ELEMENT_NODE &&\n (node as Element).getAttribute('slot') === 'trigger'\n if (isTriggerSlot) {\n nextTriggerContent.push(node)\n } else {\n nextMenuContent.push(node)\n }\n })\n\n const changed =\n nextTriggerContent.length !== this.triggerContent.length ||\n nextTriggerContent.some((n, i) => n !== this.triggerContent[i]) ||\n nextMenuContent.length !== this.menuContent.length ||\n nextMenuContent.some((n, i) => n !== this.menuContent[i])\n\n if (changed) {\n this.triggerContent = nextTriggerContent\n this.menuContent = nextMenuContent\n }\n\n return changed\n }\n\n private get hasTriggerContent(): boolean {\n return hasMeaningfulContent(this.triggerContent)\n }\n\n private get hasMenuContent(): boolean {\n return hasMeaningfulContent(this.menuContent)\n }\n\n override connectedCallback(): void {\n super.connectedCallback()\n this.syncProjectedContent()\n this.startContentObserver()\n document.addEventListener('click', this.handleDocumentClick)\n document.addEventListener('keydown', this.handleDocumentKeydown)\n }\n\n override disconnectedCallback(): void {\n this.stopContentObserver()\n document.removeEventListener('click', this.handleDocumentClick)\n document.removeEventListener('keydown', this.handleDocumentKeydown)\n super.disconnectedCallback()\n }\n\n protected override update(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n this.stopContentObserver()\n super.update(changedProperties)\n this.startContentObserver()\n }\n\n private startContentObserver(): void {\n if (this.contentObserver) {\n return\n }\n this.contentObserver = new MutationObserver(() => {\n if (this.syncProjectedContent()) {\n this.requestUpdate()\n }\n })\n this.contentObserver.observe(this, { childList: true })\n }\n\n private stopContentObserver(): void {\n this.contentObserver?.disconnect()\n this.contentObserver = undefined\n }\n\n protected override willUpdate(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n if (changedProperties.has('fullWidth') && this.fullWidth == null) {\n this.fullWidth = false\n }\n if (changedProperties.has('mega') && this.mega == null) {\n this.mega = false\n }\n if (changedProperties.has('open') && this.open == null) {\n this.open = false\n }\n if (\n changedProperties.has('placement') &&\n (this.placement == null || !isDropdownPlacement(this.placement))\n ) {\n this.placement = 'bottom-start'\n }\n if (changedProperties.has('triggerLabel') && !this.triggerLabel) {\n this.triggerLabel = 'Toggle menu'\n }\n }\n\n private handleDocumentClick = (event: MouseEvent): void => {\n if (!this.open) {\n return\n }\n if (!event.composedPath().includes(this)) {\n this.close()\n }\n }\n\n private handleDocumentKeydown = (event: KeyboardEvent): void => {\n if (event.key === 'Escape' && this.open) {\n this.close()\n this.triggerElement?.focus()\n }\n }\n\n private get triggerElement(): HTMLButtonElement | null {\n return this.querySelector('[data-sp-dropdown-trigger]')\n }\n\n private toggle(): void {\n if (this.open) {\n this.close()\n } else {\n this.openMenu()\n }\n }\n\n private openMenu(): void {\n if (this.open) {\n return\n }\n this.open = true\n this.dispatchEvent(new CustomEvent('sp-open', { bubbles: true }))\n }\n\n private close(): void {\n if (!this.open) {\n return\n }\n this.open = false\n this.dispatchEvent(new CustomEvent('sp-close', { bubbles: true }))\n }\n\n private get dropdownClasses(): string {\n return getDropdownClasses({\n fullWidth: this.fullWidth ?? false,\n mega: this.mega ?? false\n })\n }\n\n private get menuClasses(): string {\n return getDropdownMenuClasses({\n mega: this.mega ?? false,\n open: this.open ?? false,\n placement: this.placement as SpectreDropdownPlacement\n })\n }\n\n override render() {\n return html`<div\n class=\"${this.dropdownClasses}\"\n data-sp-dropdown-native\n id=\"${ifDefined(this.id || undefined)}\"\n title=\"${ifDefined(this.title || undefined)}\"\n >\n <button\n aria-expanded=\"${this.open ? 'true' : 'false'}\"\n aria-haspopup=\"true\"\n aria-label=\"${ifDefined(this.forwardedAriaLabel ?? this.triggerLabel)}\"\n class=\"sp-dropdown__trigger\"\n data-sp-dropdown-trigger\n type=\"button\"\n @click=\"${() => this.toggle()}\"\n >\n ${this.hasTriggerContent ? this.triggerContent : this.triggerLabel}\n </button>\n <div class=\"${this.menuClasses}\" data-sp-dropdown-menu>\n ${this.hasMenuContent ? this.menuContent : nothing}\n </div>\n </div>`\n }\n}\n\nexport function defineSpectreDropdown(\n tagName = 'sp-dropdown'\n): typeof SpectreDropdownElement {\n const existingElement = customElements.get(tagName)\n\n if (existingElement) {\n return existingElement as unknown as typeof SpectreDropdownElement\n }\n\n customElements.define(tagName, SpectreDropdownElement)\n return SpectreDropdownElement\n}\n","import { html, nothing } from 'lit'\nimport { ifDefined } from 'lit/directives/if-defined.js'\n\nimport { SpectreProjectableElement } from '../../utils/projectable'\nimport { sanitizeUtilityClasses } from '../../utils/form'\n\nimport { getFooterClasses } from '@phcdevworks/spectre-ui'\n\nexport interface SpectreFooterProps {\n ariaLabel?: string | null\n bordered?: boolean | undefined\n fullWidth?: boolean | undefined\n id?: string | null | undefined\n innerClass?: string | undefined\n title?: string | null | undefined\n}\n\nexport class SpectreFooterElement\n extends SpectreProjectableElement\n implements SpectreFooterProps\n{\n static properties = {\n bordered: { type: Boolean, reflect: true },\n fullWidth: { attribute: 'full-width', type: Boolean, reflect: true },\n innerClass: { attribute: 'inner-class', type: String }\n }\n\n bordered: boolean | undefined = false\n fullWidth: boolean | undefined = false\n innerClass: string | undefined = undefined\n\n override get id(): string {\n return super.id\n }\n\n override set id(value: string | null | undefined) {\n super.id = value\n }\n\n override get title(): string {\n return super.title\n }\n\n override set title(value: string | null | undefined) {\n super.title = value\n }\n\n override connectedCallback(): void {\n super.connectedCallback()\n this.style.display ||= 'block'\n }\n\n protected override getContentContainer(): Element | null {\n return this.querySelector('[data-sp-footer-native]')\n }\n\n protected override isInternalNode(node: Node): boolean {\n if (node.nodeType !== Node.ELEMENT_NODE) {\n return false\n }\n const el = node as Element\n return el.hasAttribute('data-sp-footer-native')\n }\n\n protected override willUpdate(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n if (changedProperties.has('bordered') && this.bordered == null) {\n this.bordered = false\n }\n if (changedProperties.has('fullWidth') && this.fullWidth == null) {\n this.fullWidth = false\n }\n }\n\n private get footerClasses(): string {\n const recipeClasses = getFooterClasses({\n bordered: this.bordered ?? false,\n fullWidth: this.fullWidth ?? false\n })\n const utilityClasses = sanitizeUtilityClasses(this.innerClass)\n return utilityClasses\n ? `${recipeClasses} ${utilityClasses}`\n : recipeClasses\n }\n\n override render() {\n return html`<footer\n aria-label=\"${ifDefined(this.forwardedAriaLabel)}\"\n class=\"${this.footerClasses}\"\n data-sp-footer-native\n id=\"${ifDefined(this.id || undefined)}\"\n title=\"${ifDefined(this.title || undefined)}\"\n >\n ${this.hasProjectedContent ? this.projectedContent : nothing}\n </footer>`\n }\n}\n\nexport function defineSpectreFooter(\n tagName = 'sp-footer'\n): typeof SpectreFooterElement {\n const existingElement = customElements.get(tagName)\n\n if (existingElement) {\n return existingElement as unknown as typeof SpectreFooterElement\n }\n\n customElements.define(tagName, SpectreFooterElement)\n return SpectreFooterElement\n}\n","import { html, nothing } from 'lit'\nimport { ifDefined } from 'lit/directives/if-defined.js'\n\nimport { SpectreProjectableElement } from '../../utils/projectable'\n\nimport { getFooterChipClasses } from '@phcdevworks/spectre-ui'\n\nexport interface SpectreFooterChipProps {\n ariaLabel?: string | null\n disabled?: boolean | undefined\n id?: string | null | undefined\n title?: string | null | undefined\n}\n\nexport class SpectreFooterChipElement\n extends SpectreProjectableElement\n implements SpectreFooterChipProps\n{\n static properties = {\n disabled: { type: Boolean, reflect: true }\n }\n\n disabled: boolean | undefined = false\n\n override get id(): string {\n return super.id\n }\n\n override set id(value: string | null | undefined) {\n super.id = value\n }\n\n override get title(): string {\n return super.title\n }\n\n override set title(value: string | null | undefined) {\n super.title = value\n }\n\n protected override getContentContainer(): Element | null {\n return this.querySelector('[data-sp-footer-chip-native]')\n }\n\n protected override isInternalNode(node: Node): boolean {\n if (node.nodeType !== Node.ELEMENT_NODE) {\n return false\n }\n const el = node as Element\n return el.hasAttribute('data-sp-footer-chip-native')\n }\n\n protected override willUpdate(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n if (changedProperties.has('disabled') && this.disabled == null) {\n this.disabled = false\n }\n }\n\n private get footerChipClasses(): string {\n return getFooterChipClasses({ disabled: this.disabled ?? false })\n }\n\n override render() {\n return html`<span\n aria-disabled=\"${ifDefined(this.disabled ? 'true' : undefined)}\"\n aria-label=\"${ifDefined(this.forwardedAriaLabel)}\"\n class=\"${this.footerChipClasses}\"\n data-sp-footer-chip-native\n id=\"${ifDefined(this.id || undefined)}\"\n title=\"${ifDefined(this.title || undefined)}\"\n >\n ${this.hasProjectedContent ? this.projectedContent : nothing}\n </span>`\n }\n}\n\nexport function defineSpectreFooterChip(\n tagName = 'sp-footer-chip'\n): typeof SpectreFooterChipElement {\n const existingElement = customElements.get(tagName)\n\n if (existingElement) {\n return existingElement as unknown as typeof SpectreFooterChipElement\n }\n\n customElements.define(tagName, SpectreFooterChipElement)\n return SpectreFooterChipElement\n}\n","import { html, nothing } from 'lit'\nimport { ifDefined } from 'lit/directives/if-defined.js'\n\nimport { SpectreProjectableElement } from '../../utils/projectable'\n\nimport { getFooterLinkClasses } from '@phcdevworks/spectre-ui'\n\nexport interface SpectreFooterLinkProps {\n active?: boolean | undefined\n ariaLabel?: string | null\n disabled?: boolean | undefined\n href?: string | undefined\n id?: string | null | undefined\n title?: string | null | undefined\n}\n\nexport class SpectreFooterLinkElement\n extends SpectreProjectableElement\n implements SpectreFooterLinkProps\n{\n static properties = {\n active: { type: Boolean, reflect: true },\n disabled: { type: Boolean, reflect: true },\n href: { type: String }\n }\n\n active: boolean | undefined = false\n disabled: boolean | undefined = false\n href: string | undefined = undefined\n\n override get id(): string {\n return super.id\n }\n\n override set id(value: string | null | undefined) {\n super.id = value\n }\n\n override get title(): string {\n return super.title\n }\n\n override set title(value: string | null | undefined) {\n super.title = value\n }\n\n protected override getContentContainer(): Element | null {\n return this.querySelector('[data-sp-footer-link-native]')\n }\n\n protected override isInternalNode(node: Node): boolean {\n if (node.nodeType !== Node.ELEMENT_NODE) {\n return false\n }\n const el = node as Element\n return el.hasAttribute('data-sp-footer-link-native')\n }\n\n protected override willUpdate(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n if (changedProperties.has('active') && this.active == null) {\n this.active = false\n }\n if (changedProperties.has('disabled') && this.disabled == null) {\n this.disabled = false\n }\n }\n\n private get footerLinkClasses(): string {\n return getFooterLinkClasses({\n active: this.active ?? false,\n disabled: this.disabled ?? false\n })\n }\n\n override render() {\n return html`<a\n aria-current=\"${ifDefined(this.active ? 'page' : undefined)}\"\n aria-disabled=\"${ifDefined(this.disabled ? 'true' : undefined)}\"\n aria-label=\"${ifDefined(this.forwardedAriaLabel)}\"\n class=\"${this.footerLinkClasses}\"\n data-sp-footer-link-native\n href=\"${ifDefined(this.disabled ? undefined : this.href)}\"\n id=\"${ifDefined(this.id || undefined)}\"\n tabindex=\"${ifDefined(this.disabled ? -1 : undefined)}\"\n title=\"${ifDefined(this.title || undefined)}\"\n >\n ${this.hasProjectedContent ? this.projectedContent : nothing}\n </a>`\n }\n}\n\nexport function defineSpectreFooterLink(\n tagName = 'sp-footer-link'\n): typeof SpectreFooterLinkElement {\n const existingElement = customElements.get(tagName)\n\n if (existingElement) {\n return existingElement as unknown as typeof SpectreFooterLinkElement\n }\n\n customElements.define(tagName, SpectreFooterLinkElement)\n return SpectreFooterLinkElement\n}\n","import { html, nothing } from 'lit'\nimport { ifDefined } from 'lit/directives/if-defined.js'\n\nimport { SpectreProjectableElement } from '../../utils/projectable'\n\nimport {\n getModalClasses,\n getModalOverlayClasses\n} from '@phcdevworks/spectre-ui'\n\nconst FOCUSABLE_SELECTOR = [\n 'a[href]',\n 'button:not([disabled])',\n 'input:not([disabled])',\n 'select:not([disabled])',\n 'textarea:not([disabled])',\n '[tabindex]:not([tabindex=\"-1\"])'\n].join(',')\n\nexport interface SpectreModalProps {\n ariaLabel?: string | null\n ariaLabelledBy?: string | null\n ariaDescribedBy?: string | null\n fullWidth?: boolean | undefined\n id?: string | null | undefined\n open?: boolean | undefined\n title?: string | null | undefined\n}\n\nexport class SpectreModalElement\n extends SpectreProjectableElement\n implements SpectreModalProps\n{\n static properties = {\n fullWidth: { attribute: 'full-width', type: Boolean, reflect: true },\n open: { type: Boolean, reflect: true }\n }\n\n fullWidth: boolean | undefined = false\n open: boolean | undefined = false\n\n private previouslyFocusedElement: HTMLElement | null = null\n\n override get id(): string {\n return super.id\n }\n\n override set id(value: string | null | undefined) {\n super.id = value\n }\n\n override get title(): string {\n return super.title\n }\n\n override set title(value: string | null | undefined) {\n super.title = value\n }\n\n protected override getContentContainer(): Element | null {\n return this.querySelector('[data-sp-modal-native]')\n }\n\n protected override isInternalNode(node: Node): boolean {\n if (node.nodeType !== Node.ELEMENT_NODE) {\n return false\n }\n const el = node as Element\n return (\n el.hasAttribute('data-sp-modal-native') ||\n el.hasAttribute('data-sp-modal-overlay')\n )\n }\n\n protected override willUpdate(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n if (changedProperties.has('fullWidth') && this.fullWidth == null) {\n this.fullWidth = false\n }\n if (changedProperties.has('open') && this.open == null) {\n this.open = false\n }\n }\n\n protected override updated(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n super.updated(changedProperties)\n\n if (!changedProperties.has('open')) {\n return\n }\n\n if (this.open) {\n this.previouslyFocusedElement = document.activeElement as HTMLElement\n this.focusFirstElement()\n } else if (this.previouslyFocusedElement) {\n this.previouslyFocusedElement.focus()\n this.previouslyFocusedElement = null\n }\n }\n\n override connectedCallback(): void {\n super.connectedCallback()\n document.addEventListener('keydown', this.handleDocumentKeydown)\n }\n\n override disconnectedCallback(): void {\n document.removeEventListener('keydown', this.handleDocumentKeydown)\n super.disconnectedCallback()\n }\n\n private get modalElement(): HTMLElement | null {\n return this.querySelector('[data-sp-modal-native]')\n }\n\n private get focusableElements(): HTMLElement[] {\n const modal = this.modalElement\n if (!modal) {\n return []\n }\n return Array.from(modal.querySelectorAll<HTMLElement>(FOCUSABLE_SELECTOR))\n }\n\n private focusFirstElement(): void {\n const [first] = this.focusableElements\n ;(first ?? this.modalElement)?.focus()\n }\n\n private handleDocumentKeydown = (event: KeyboardEvent): void => {\n if (!this.open) {\n return\n }\n\n if (event.key === 'Escape') {\n this.close()\n return\n }\n\n if (event.key === 'Tab') {\n this.trapFocus(event)\n }\n }\n\n private trapFocus(event: KeyboardEvent): void {\n const focusable = this.focusableElements\n if (focusable.length === 0) {\n event.preventDefault()\n return\n }\n\n const first = focusable[0]\n const last = focusable[focusable.length - 1]\n const active = document.activeElement\n\n if (event.shiftKey && active === first) {\n event.preventDefault()\n last?.focus()\n } else if (!event.shiftKey && active === last) {\n event.preventDefault()\n first?.focus()\n }\n }\n\n private close(): void {\n if (!this.open) {\n return\n }\n this.open = false\n this.dispatchEvent(new CustomEvent('sp-close', { bubbles: true }))\n }\n\n private get overlayClasses(): string {\n return getModalOverlayClasses({ open: this.open ?? false })\n }\n\n private get modalClasses(): string {\n return getModalClasses({\n open: this.open ?? false,\n fullWidth: this.fullWidth ?? false\n })\n }\n\n override render() {\n const isHidden = !this.open\n\n return html`<div\n aria-hidden=\"${ifDefined(isHidden ? 'true' : undefined)}\"\n class=\"${this.overlayClasses}\"\n data-sp-modal-overlay\n @click=\"${(event: Event) => {\n if (event.target === event.currentTarget) {\n this.close()\n }\n }}\"\n >\n <div\n aria-describedby=\"${ifDefined(this.forwardedAriaDescribedBy)}\"\n aria-hidden=\"${ifDefined(isHidden ? 'true' : undefined)}\"\n aria-label=\"${ifDefined(this.forwardedAriaLabel)}\"\n aria-labelledby=\"${ifDefined(this.forwardedAriaLabelledBy)}\"\n aria-modal=\"true\"\n class=\"${this.modalClasses}\"\n data-sp-modal-native\n id=\"${ifDefined(this.id || undefined)}\"\n role=\"dialog\"\n tabindex=\"-1\"\n title=\"${ifDefined(this.title || undefined)}\"\n >\n ${this.hasProjectedContent ? this.projectedContent : nothing}\n </div>\n </div>`\n }\n}\n\nexport function defineSpectreModal(\n tagName = 'sp-modal'\n): typeof SpectreModalElement {\n const existingElement = customElements.get(tagName)\n\n if (existingElement) {\n return existingElement as unknown as typeof SpectreModalElement\n }\n\n customElements.define(tagName, SpectreModalElement)\n return SpectreModalElement\n}\n","import { html, nothing } from 'lit'\nimport { ifDefined } from 'lit/directives/if-defined.js'\n\nimport { SpectreProjectableElement } from '../../utils/projectable'\nimport {\n isNavAlign,\n sanitizeUtilityClasses,\n type SpectreNavAlign\n} from '../../utils/form'\n\nimport { getNavClasses, type NavAlign } from '@phcdevworks/spectre-ui'\n\nexport interface SpectreNavProps {\n align?: SpectreNavAlign | undefined\n ariaLabel?: string | null\n bordered?: boolean | undefined\n fullWidth?: boolean | undefined\n id?: string | null | undefined\n innerClass?: string | undefined\n sticky?: boolean | undefined\n title?: string | null | undefined\n}\n\nexport class SpectreNavElement\n extends SpectreProjectableElement\n implements SpectreNavProps\n{\n static properties = {\n align: { type: String, reflect: true },\n bordered: { type: Boolean, reflect: true },\n fullWidth: { attribute: 'full-width', type: Boolean, reflect: true },\n innerClass: { attribute: 'inner-class', type: String },\n sticky: { type: Boolean, reflect: true }\n }\n\n align: SpectreNavAlign | undefined = undefined\n bordered: boolean | undefined = false\n fullWidth: boolean | undefined = false\n innerClass: string | undefined = undefined\n sticky: boolean | undefined = false\n\n override get id(): string {\n return super.id\n }\n\n override set id(value: string | null | undefined) {\n super.id = value\n }\n\n override get title(): string {\n return super.title\n }\n\n override set title(value: string | null | undefined) {\n super.title = value\n }\n\n override connectedCallback(): void {\n super.connectedCallback()\n this.style.display ||= 'block'\n }\n\n protected override getContentContainer(): Element | null {\n return this.querySelector('[data-sp-nav-native]')\n }\n\n protected override isInternalNode(node: Node): boolean {\n if (node.nodeType !== Node.ELEMENT_NODE) {\n return false\n }\n const el = node as Element\n return el.hasAttribute('data-sp-nav-native')\n }\n\n protected override willUpdate(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n if (changedProperties.has('bordered') && this.bordered == null) {\n this.bordered = false\n }\n if (changedProperties.has('fullWidth') && this.fullWidth == null) {\n this.fullWidth = false\n }\n if (changedProperties.has('sticky') && this.sticky == null) {\n this.sticky = false\n }\n if (\n changedProperties.has('align') &&\n this.align != null &&\n !isNavAlign(this.align)\n ) {\n this.align = undefined\n }\n }\n\n private get navClasses(): string {\n const recipeClasses = getNavClasses({\n bordered: this.bordered ?? false,\n fullWidth: this.fullWidth ?? false,\n sticky: this.sticky ?? false,\n ...(this.align !== undefined && { align: this.align as NavAlign })\n })\n const utilityClasses = sanitizeUtilityClasses(this.innerClass)\n return utilityClasses ? `${recipeClasses} ${utilityClasses}` : recipeClasses\n }\n\n override render() {\n return html`<nav\n aria-label=\"${ifDefined(this.forwardedAriaLabel)}\"\n class=\"${this.navClasses}\"\n data-sp-nav-native\n id=\"${ifDefined(this.id || undefined)}\"\n title=\"${ifDefined(this.title || undefined)}\"\n >\n ${this.hasProjectedContent ? this.projectedContent : nothing}\n </nav>`\n }\n}\n\nexport function defineSpectreNav(tagName = 'sp-nav'): typeof SpectreNavElement {\n const existingElement = customElements.get(tagName)\n\n if (existingElement) {\n return existingElement as unknown as typeof SpectreNavElement\n }\n\n customElements.define(tagName, SpectreNavElement)\n return SpectreNavElement\n}\n","import { html, nothing } from 'lit'\nimport { ifDefined } from 'lit/directives/if-defined.js'\n\nimport { SpectreBaseElement } from '../../utils/base'\nimport { hasMeaningfulContent } from '../../utils/dom'\nimport {\n isDropdownPlacement,\n type SpectreDropdownPlacement\n} from '../../utils/form'\n\nimport {\n getDropdownClasses,\n getDropdownMenuClasses,\n getNavLinkClasses\n} from '@phcdevworks/spectre-ui'\n\nexport interface SpectreNavItemProps {\n ariaLabel?: string | null\n dropdown?: boolean | undefined\n href?: string | undefined\n id?: string | null | undefined\n label?: string | undefined\n mega?: boolean | undefined\n open?: boolean | undefined\n placement?: SpectreDropdownPlacement | undefined\n title?: string | null | undefined\n}\n\nexport class SpectreNavItemElement\n extends SpectreBaseElement\n implements SpectreNavItemProps\n{\n static properties = {\n dropdown: { type: Boolean, reflect: true },\n href: { type: String },\n label: { type: String },\n mega: { type: Boolean, reflect: true },\n open: { type: Boolean, reflect: true },\n placement: { type: String, reflect: true }\n }\n\n dropdown: boolean | undefined = false\n href: string | undefined = undefined\n label: string | undefined = undefined\n mega: boolean | undefined = false\n open: boolean | undefined = false\n placement: SpectreDropdownPlacement | undefined = 'bottom-start'\n\n private triggerContent: Node[] = []\n private menuContent: Node[] = []\n private contentObserver?: MutationObserver | undefined\n\n override get id(): string {\n return super.id\n }\n\n override set id(value: string | null | undefined) {\n super.id = value\n }\n\n override get title(): string {\n return super.title\n }\n\n override set title(value: string | null | undefined) {\n super.title = value\n }\n\n private isInternalNode(node: Node): boolean {\n if (node.nodeType !== Node.ELEMENT_NODE) {\n return false\n }\n const el = node as Element\n return (\n el.hasAttribute('data-sp-nav-item-menu') ||\n el.hasAttribute('data-sp-nav-item-trigger')\n )\n }\n\n private syncProjectedContent(): boolean {\n const nextTriggerContent: Node[] = []\n const nextMenuContent: Node[] = []\n\n this.childNodes.forEach((node) => {\n if (this.isInternalNode(node)) {\n return\n }\n const isTriggerSlot =\n node.nodeType === Node.ELEMENT_NODE &&\n (node as Element).getAttribute('slot') === 'trigger'\n if (isTriggerSlot) {\n nextTriggerContent.push(node)\n } else {\n nextMenuContent.push(node)\n }\n })\n\n const changed =\n nextTriggerContent.length !== this.triggerContent.length ||\n nextTriggerContent.some((n, i) => n !== this.triggerContent[i]) ||\n nextMenuContent.length !== this.menuContent.length ||\n nextMenuContent.some((n, i) => n !== this.menuContent[i])\n\n if (changed) {\n this.triggerContent = nextTriggerContent\n this.menuContent = nextMenuContent\n }\n\n return changed\n }\n\n private get hasTriggerContent(): boolean {\n return hasMeaningfulContent(this.triggerContent)\n }\n\n private get hasMenuContent(): boolean {\n return hasMeaningfulContent(this.menuContent)\n }\n\n override connectedCallback(): void {\n super.connectedCallback()\n this.syncProjectedContent()\n this.startContentObserver()\n document.addEventListener('click', this.handleDocumentClick)\n document.addEventListener('keydown', this.handleDocumentKeydown)\n }\n\n override disconnectedCallback(): void {\n this.stopContentObserver()\n document.removeEventListener('click', this.handleDocumentClick)\n document.removeEventListener('keydown', this.handleDocumentKeydown)\n super.disconnectedCallback()\n }\n\n protected override update(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n this.stopContentObserver()\n super.update(changedProperties)\n this.startContentObserver()\n }\n\n private startContentObserver(): void {\n if (this.contentObserver) {\n return\n }\n this.contentObserver = new MutationObserver(() => {\n if (this.syncProjectedContent()) {\n this.requestUpdate()\n }\n })\n this.contentObserver.observe(this, { childList: true })\n }\n\n private stopContentObserver(): void {\n this.contentObserver?.disconnect()\n this.contentObserver = undefined\n }\n\n protected override willUpdate(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n if (changedProperties.has('dropdown') && this.dropdown == null) {\n this.dropdown = false\n }\n if (changedProperties.has('mega') && this.mega == null) {\n this.mega = false\n }\n if (changedProperties.has('open') && this.open == null) {\n this.open = false\n }\n if (\n changedProperties.has('placement') &&\n (this.placement == null || !isDropdownPlacement(this.placement))\n ) {\n this.placement = 'bottom-start'\n }\n }\n\n private handleDocumentClick = (event: MouseEvent): void => {\n if (!this.open) {\n return\n }\n if (!event.composedPath().includes(this)) {\n this.close()\n }\n }\n\n private handleDocumentKeydown = (event: KeyboardEvent): void => {\n if (event.key === 'Escape' && this.open) {\n this.close()\n this.triggerElement?.focus()\n }\n }\n\n private get triggerElement(): HTMLButtonElement | null {\n return this.querySelector('[data-sp-nav-item-trigger]')\n }\n\n private toggle(): void {\n if (this.open) {\n this.close()\n } else {\n this.openMenu()\n }\n }\n\n private openMenu(): void {\n if (this.open) {\n return\n }\n this.open = true\n this.dispatchEvent(new CustomEvent('sp-open', { bubbles: true }))\n }\n\n private close(): void {\n if (!this.open) {\n return\n }\n this.open = false\n this.dispatchEvent(new CustomEvent('sp-close', { bubbles: true }))\n }\n\n private get wrapperClasses(): string {\n return getDropdownClasses({ mega: this.mega ?? false })\n }\n\n private get menuClasses(): string {\n return getDropdownMenuClasses({\n mega: this.mega ?? false,\n open: this.open ?? false,\n placement: this.placement as SpectreDropdownPlacement\n })\n }\n\n private get navLinkClasses(): string {\n return getNavLinkClasses()\n }\n\n private renderLink() {\n return html`<a\n aria-label=\"${ifDefined(this.forwardedAriaLabel)}\"\n class=\"${this.navLinkClasses}\"\n href=\"${ifDefined(this.href)}\"\n id=\"${ifDefined(this.id || undefined)}\"\n title=\"${ifDefined(this.title || undefined)}\"\n >${this.hasMenuContent ? this.menuContent : this.label}</a\n >`\n }\n\n private renderDropdown() {\n return html`<div\n class=\"${this.wrapperClasses}\"\n id=\"${ifDefined(this.id || undefined)}\"\n title=\"${ifDefined(this.title || undefined)}\"\n >\n <button\n aria-expanded=\"${this.open ? 'true' : 'false'}\"\n aria-haspopup=\"true\"\n aria-label=\"${ifDefined(this.forwardedAriaLabel ?? this.label)}\"\n class=\"${this.navLinkClasses}\"\n data-sp-nav-item-trigger\n type=\"button\"\n @click=\"${() => this.toggle()}\"\n >\n ${this.hasTriggerContent ? this.triggerContent : this.label}\n </button>\n <div class=\"${this.menuClasses}\" data-sp-nav-item-menu>\n ${this.hasMenuContent ? this.menuContent : nothing}\n </div>\n </div>`\n }\n\n override render() {\n return this.dropdown ? this.renderDropdown() : this.renderLink()\n }\n}\n\nexport function defineSpectreNavItem(\n tagName = 'sp-nav-item'\n): typeof SpectreNavItemElement {\n const existingElement = customElements.get(tagName)\n\n if (existingElement) {\n return existingElement as unknown as typeof SpectreNavItemElement\n }\n\n customElements.define(tagName, SpectreNavItemElement)\n return SpectreNavItemElement\n}\n","import { html, nothing } from 'lit'\nimport { ifDefined } from 'lit/directives/if-defined.js'\n\nimport { SpectreProjectableElement } from '../../utils/projectable'\n\nimport {\n getSidebarBackdropClasses,\n getSidebarClasses,\n getSidebarToggleClasses\n} from '@phcdevworks/spectre-ui'\n\nexport interface SpectreSidebarProps {\n ariaLabel?: string | null\n bordered?: boolean | undefined\n hideToggle?: boolean | undefined\n id?: string | null | undefined\n open?: boolean | undefined\n title?: string | null | undefined\n toggleLabel?: string | undefined\n}\n\nexport class SpectreSidebarElement\n extends SpectreProjectableElement\n implements SpectreSidebarProps\n{\n static properties = {\n bordered: { type: Boolean, reflect: true },\n hideToggle: { attribute: 'hide-toggle', type: Boolean, reflect: true },\n open: { type: Boolean, reflect: false },\n toggleLabel: { attribute: 'toggle-label', type: String }\n }\n\n bordered: boolean | undefined = false\n hideToggle: boolean | undefined = false\n open: boolean | undefined = false\n toggleLabel: string | undefined = 'Toggle sidebar'\n\n override get id(): string {\n return super.id\n }\n\n override set id(value: string | null | undefined) {\n super.id = value\n }\n\n override get title(): string {\n return super.title\n }\n\n override set title(value: string | null | undefined) {\n super.title = value\n }\n\n protected override getContentContainer(): Element | null {\n return this.querySelector('[data-sp-sidebar-native]')\n }\n\n protected override isInternalNode(node: Node): boolean {\n if (node.nodeType !== Node.ELEMENT_NODE) {\n return false\n }\n const el = node as Element\n return (\n el.hasAttribute('data-sp-sidebar-native') ||\n el.hasAttribute('data-sp-sidebar-toggle') ||\n el.hasAttribute('data-sp-sidebar-backdrop')\n )\n }\n\n protected override willUpdate(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n if (changedProperties.has('bordered') && this.bordered == null) {\n this.bordered = false\n }\n if (changedProperties.has('hideToggle') && this.hideToggle == null) {\n this.hideToggle = false\n }\n if (changedProperties.has('open') && this.open == null) {\n this.open = false\n }\n if (changedProperties.has('toggleLabel') && !this.toggleLabel) {\n this.toggleLabel = 'Toggle sidebar'\n }\n if (changedProperties.has('open')) {\n HTMLElement.prototype.setAttribute.call(\n this,\n 'data-sidebar-open',\n this.open ? 'true' : 'false'\n )\n }\n }\n\n override connectedCallback(): void {\n super.connectedCallback()\n HTMLElement.prototype.setAttribute.call(\n this,\n 'data-sidebar-open',\n this.open ? 'true' : 'false'\n )\n document.addEventListener('keydown', this.handleDocumentKeydown)\n }\n\n override disconnectedCallback(): void {\n document.removeEventListener('keydown', this.handleDocumentKeydown)\n super.disconnectedCallback()\n }\n\n private handleDocumentKeydown = (event: KeyboardEvent): void => {\n if (event.key === 'Escape' && this.open) {\n this.close()\n }\n }\n\n private toggle(): void {\n if (this.open) {\n this.close()\n } else {\n this.openSidebar()\n }\n }\n\n private openSidebar(): void {\n if (this.open) {\n return\n }\n this.open = true\n this.dispatchEvent(new CustomEvent('sp-open', { bubbles: true }))\n }\n\n private close(): void {\n if (!this.open) {\n return\n }\n this.open = false\n this.dispatchEvent(new CustomEvent('sp-close', { bubbles: true }))\n }\n\n private get sidebarClasses(): string {\n return getSidebarClasses({ bordered: this.bordered ?? false })\n }\n\n override render() {\n return html`${\n this.hideToggle\n ? nothing\n : html`<button\n aria-expanded=\"${this.open ? 'true' : 'false'}\"\n aria-label=\"${ifDefined(this.toggleLabel)}\"\n class=\"${getSidebarToggleClasses()}\"\n data-sp-sidebar-toggle\n type=\"button\"\n @click=\"${() => this.toggle()}\"\n >\n ☰\n </button>`\n }\n <div\n class=\"${getSidebarBackdropClasses()}\"\n data-sp-sidebar-backdrop\n @click=\"${() => this.close()}\"\n ></div>\n <aside\n aria-label=\"${ifDefined(this.forwardedAriaLabel)}\"\n class=\"${this.sidebarClasses}\"\n data-sp-sidebar-native\n id=\"${ifDefined(this.id || undefined)}\"\n title=\"${ifDefined(this.title || undefined)}\"\n >\n ${this.hasProjectedContent ? this.projectedContent : nothing}\n </aside>`\n }\n}\n\nexport function defineSpectreSidebar(\n tagName = 'sp-sidebar'\n): typeof SpectreSidebarElement {\n const existingElement = customElements.get(tagName)\n\n if (existingElement) {\n return existingElement as unknown as typeof SpectreSidebarElement\n }\n\n customElements.define(tagName, SpectreSidebarElement)\n return SpectreSidebarElement\n}\n","import { html, nothing } from 'lit'\nimport { ifDefined } from 'lit/directives/if-defined.js'\n\nimport { SpectreProjectableElement } from '../../utils/projectable'\nimport {\n isSidebarLinkLevel,\n type SpectreSidebarLinkLevel\n} from '../../utils/form'\n\nimport {\n getSidebarLinkClasses,\n type SidebarLinkLevel\n} from '@phcdevworks/spectre-ui'\n\nexport interface SpectreSidebarLinkProps {\n active?: boolean | undefined\n ariaLabel?: string | null\n disabled?: boolean | undefined\n href?: string | undefined\n id?: string | null | undefined\n level?: SpectreSidebarLinkLevel | undefined\n title?: string | null | undefined\n}\n\nexport class SpectreSidebarLinkElement\n extends SpectreProjectableElement\n implements SpectreSidebarLinkProps\n{\n static properties = {\n active: { type: Boolean, reflect: true },\n disabled: { type: Boolean, reflect: true },\n href: { type: String },\n level: { type: String, reflect: true }\n }\n\n active: boolean | undefined = false\n disabled: boolean | undefined = false\n href: string | undefined = undefined\n level: SpectreSidebarLinkLevel | undefined = 'parent'\n\n override get id(): string {\n return super.id\n }\n\n override set id(value: string | null | undefined) {\n super.id = value\n }\n\n override get title(): string {\n return super.title\n }\n\n override set title(value: string | null | undefined) {\n super.title = value\n }\n\n protected override getContentContainer(): Element | null {\n return this.querySelector('[data-sp-sidebar-link-native]')\n }\n\n protected override isInternalNode(node: Node): boolean {\n if (node.nodeType !== Node.ELEMENT_NODE) {\n return false\n }\n const el = node as Element\n return el.hasAttribute('data-sp-sidebar-link-native')\n }\n\n protected override willUpdate(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n if (changedProperties.has('active') && this.active == null) {\n this.active = false\n }\n if (changedProperties.has('disabled') && this.disabled == null) {\n this.disabled = false\n }\n if (\n changedProperties.has('level') &&\n (this.level == null || !isSidebarLinkLevel(this.level))\n ) {\n this.level = 'parent'\n }\n }\n\n private get sidebarLinkClasses(): string {\n return getSidebarLinkClasses({\n active: this.active ?? false,\n disabled: this.disabled ?? false,\n level: this.level as SidebarLinkLevel\n })\n }\n\n override render() {\n return html`<a\n aria-current=\"${ifDefined(this.active ? 'page' : undefined)}\"\n aria-disabled=\"${ifDefined(this.disabled ? 'true' : undefined)}\"\n aria-label=\"${ifDefined(this.forwardedAriaLabel)}\"\n class=\"${this.sidebarLinkClasses}\"\n data-sp-sidebar-link-native\n href=\"${ifDefined(this.disabled ? undefined : this.href)}\"\n id=\"${ifDefined(this.id || undefined)}\"\n tabindex=\"${ifDefined(this.disabled ? -1 : undefined)}\"\n title=\"${ifDefined(this.title || undefined)}\"\n >\n ${this.hasProjectedContent ? this.projectedContent : nothing}\n </a>`\n }\n}\n\nexport function defineSpectreSidebarLink(\n tagName = 'sp-sidebar-link'\n): typeof SpectreSidebarLinkElement {\n const existingElement = customElements.get(tagName)\n\n if (existingElement) {\n return existingElement as unknown as typeof SpectreSidebarLinkElement\n }\n\n customElements.define(tagName, SpectreSidebarLinkElement)\n return SpectreSidebarLinkElement\n}\n","import { html } from 'lit'\nimport { ifDefined } from 'lit/directives/if-defined.js'\n\nimport { SpectreProjectableElement } from '../../utils/projectable'\n\nimport { getSidebarToggleClasses } from '@phcdevworks/spectre-ui'\n\ninterface SpectreSidebarTarget extends HTMLElement {\n open?: boolean\n}\n\nexport interface SpectreSidebarToggleProps {\n ariaLabel?: string | null\n for?: string | undefined\n id?: string | null | undefined\n label?: string | undefined\n title?: string | null | undefined\n}\n\nexport class SpectreSidebarToggleElement\n extends SpectreProjectableElement\n implements SpectreSidebarToggleProps\n{\n static properties = {\n for: { type: String },\n label: { type: String }\n }\n\n for: string | undefined = undefined\n label: string | undefined = 'Toggle sidebar'\n\n private expanded = false\n\n override get id(): string {\n return super.id\n }\n\n override set id(value: string | null | undefined) {\n super.id = value\n }\n\n override get title(): string {\n return super.title\n }\n\n override set title(value: string | null | undefined) {\n super.title = value\n }\n\n protected override getContentContainer(): Element | null {\n return this.querySelector('[data-sp-sidebar-toggle-native]')\n }\n\n protected override isInternalNode(node: Node): boolean {\n if (node.nodeType !== Node.ELEMENT_NODE) {\n return false\n }\n const el = node as Element\n return el.hasAttribute('data-sp-sidebar-toggle-native')\n }\n\n protected override willUpdate(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n if (changedProperties.has('label') && !this.label) {\n this.label = 'Toggle sidebar'\n }\n }\n\n override connectedCallback(): void {\n super.connectedCallback()\n document.addEventListener('sp-open', this.handleTargetToggle)\n document.addEventListener('sp-close', this.handleTargetToggle)\n this.syncExpanded()\n }\n\n override disconnectedCallback(): void {\n document.removeEventListener('sp-open', this.handleTargetToggle)\n document.removeEventListener('sp-close', this.handleTargetToggle)\n super.disconnectedCallback()\n }\n\n protected override updated(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n super.updated(changedProperties)\n if (changedProperties.has('for')) {\n this.syncExpanded()\n }\n }\n\n private get targetElement(): SpectreSidebarTarget | null {\n if (!this.for) {\n return null\n }\n const native = document.getElementById(this.for)\n return (\n (native?.closest('sp-sidebar') as SpectreSidebarTarget | null) ?? null\n )\n }\n\n private handleTargetToggle = (event: Event): void => {\n if (event.target !== this.targetElement) {\n return\n }\n this.syncExpanded()\n }\n\n private syncExpanded(): void {\n const next = Boolean(this.targetElement?.open)\n if (next !== this.expanded) {\n this.expanded = next\n this.requestUpdate()\n }\n }\n\n private handleClick(): void {\n const target = this.targetElement\n if (!target) {\n return\n }\n const nextOpen = !target.open\n target.open = nextOpen\n target.dispatchEvent(\n new CustomEvent(nextOpen ? 'sp-open' : 'sp-close', { bubbles: true })\n )\n }\n\n private get toggleClasses(): string {\n return getSidebarToggleClasses()\n }\n\n override render() {\n return html`<button\n aria-controls=\"${ifDefined(this.for)}\"\n aria-expanded=\"${this.expanded ? 'true' : 'false'}\"\n aria-label=\"${ifDefined(this.forwardedAriaLabel ?? this.label)}\"\n class=\"${this.toggleClasses}\"\n data-sp-sidebar-toggle-native\n id=\"${ifDefined(this.id || undefined)}\"\n title=\"${ifDefined(this.title || undefined)}\"\n type=\"button\"\n @click=\"${() => this.handleClick()}\"\n >\n ${this.hasProjectedContent ? this.projectedContent : html`☰`}\n </button>`\n }\n}\n\nexport function defineSpectreSidebarToggle(\n tagName = 'sp-sidebar-toggle'\n): typeof SpectreSidebarToggleElement {\n const existingElement = customElements.get(tagName)\n\n if (existingElement) {\n return existingElement as unknown as typeof SpectreSidebarToggleElement\n }\n\n customElements.define(tagName, SpectreSidebarToggleElement)\n return SpectreSidebarToggleElement\n}\n","import { html, nothing } from 'lit'\nimport { ifDefined } from 'lit/directives/if-defined.js'\n\nimport { SpectreBaseElement } from '../../utils/base'\nimport { hasMeaningfulContent } from '../../utils/dom'\nimport {\n isToastVariant,\n normalizeInt,\n type SpectreToastVariant\n} from '../../utils/form'\n\nimport { getToastClasses, getToastIconClasses } from '@phcdevworks/spectre-ui'\n\nexport interface SpectreToastProps {\n ariaLabel?: string | null\n autoDismiss?: number | undefined\n dismissed?: boolean | undefined\n fullWidth?: boolean | undefined\n id?: string | null | undefined\n title?: string | null | undefined\n variant?: SpectreToastVariant | undefined\n}\n\nexport class SpectreToastElement\n extends SpectreBaseElement\n implements SpectreToastProps\n{\n static properties = {\n autoDismiss: { attribute: 'auto-dismiss', type: Number },\n dismissed: { type: Boolean, reflect: true },\n fullWidth: { attribute: 'full-width', type: Boolean, reflect: true },\n variant: { type: String, reflect: true }\n }\n\n autoDismiss: number | undefined\n dismissed: boolean | undefined = false\n fullWidth: boolean | undefined = false\n variant: SpectreToastVariant | undefined = 'info'\n\n private iconContent: Node[] = []\n private bodyContent: Node[] = []\n private contentObserver?: MutationObserver | undefined\n private autoDismissTimer?: ReturnType<typeof setTimeout> | undefined\n\n override get id(): string {\n return super.id\n }\n\n override set id(value: string | null | undefined) {\n super.id = value\n }\n\n override get title(): string {\n return super.title\n }\n\n override set title(value: string | null | undefined) {\n super.title = value\n }\n\n private isInternalNode(node: Node): boolean {\n if (node.nodeType !== Node.ELEMENT_NODE) {\n return false\n }\n const el = node as Element\n return (\n el.hasAttribute('data-sp-toast-native') ||\n el.hasAttribute('data-sp-toast-icon')\n )\n }\n\n private syncProjectedContent(): boolean {\n const nextIconContent: Node[] = []\n const nextBodyContent: Node[] = []\n\n this.childNodes.forEach((node) => {\n if (this.isInternalNode(node)) {\n return\n }\n const isIconSlot =\n node.nodeType === Node.ELEMENT_NODE &&\n (node as Element).getAttribute('slot') === 'icon'\n if (isIconSlot) {\n nextIconContent.push(node)\n } else {\n nextBodyContent.push(node)\n }\n })\n\n const changed =\n nextIconContent.length !== this.iconContent.length ||\n nextIconContent.some((n, i) => n !== this.iconContent[i]) ||\n nextBodyContent.length !== this.bodyContent.length ||\n nextBodyContent.some((n, i) => n !== this.bodyContent[i])\n\n if (changed) {\n this.iconContent = nextIconContent\n this.bodyContent = nextBodyContent\n }\n\n return changed\n }\n\n private get hasIconContent(): boolean {\n return hasMeaningfulContent(this.iconContent)\n }\n\n private get hasBodyContent(): boolean {\n return hasMeaningfulContent(this.bodyContent)\n }\n\n override connectedCallback(): void {\n super.connectedCallback()\n this.syncProjectedContent()\n this.startContentObserver()\n }\n\n override disconnectedCallback(): void {\n this.stopContentObserver()\n this.clearAutoDismissTimer()\n super.disconnectedCallback()\n }\n\n protected override update(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n this.stopContentObserver()\n super.update(changedProperties)\n this.startContentObserver()\n }\n\n private startContentObserver(): void {\n if (this.contentObserver) {\n return\n }\n this.contentObserver = new MutationObserver(() => {\n if (this.syncProjectedContent()) {\n this.requestUpdate()\n }\n })\n this.contentObserver.observe(this, { childList: true })\n }\n\n private stopContentObserver(): void {\n this.contentObserver?.disconnect()\n this.contentObserver = undefined\n }\n\n protected override willUpdate(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n if (changedProperties.has('dismissed') && this.dismissed == null) {\n this.dismissed = false\n }\n if (changedProperties.has('fullWidth') && this.fullWidth == null) {\n this.fullWidth = false\n }\n if (\n changedProperties.has('variant') &&\n (this.variant == null || !isToastVariant(this.variant))\n ) {\n this.variant = 'info'\n }\n if (changedProperties.has('autoDismiss')) {\n this.autoDismiss = normalizeInt(this.autoDismiss, undefined, 0)\n }\n }\n\n protected override updated(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n super.updated(changedProperties)\n\n if (\n changedProperties.has('dismissed') ||\n changedProperties.has('autoDismiss')\n ) {\n this.clearAutoDismissTimer()\n if (!this.dismissed && this.autoDismiss) {\n this.autoDismissTimer = setTimeout(() => {\n this.dismiss()\n }, this.autoDismiss)\n }\n }\n }\n\n private clearAutoDismissTimer(): void {\n if (this.autoDismissTimer) {\n clearTimeout(this.autoDismissTimer)\n this.autoDismissTimer = undefined\n }\n }\n\n show(): void {\n if (!this.dismissed) {\n return\n }\n this.dismissed = false\n this.dispatchEvent(new CustomEvent('sp-show', { bubbles: true }))\n }\n\n dismiss(): void {\n if (this.dismissed) {\n return\n }\n this.dismissed = true\n this.dispatchEvent(new CustomEvent('sp-dismiss', { bubbles: true }))\n }\n\n private get toastClasses(): string {\n return getToastClasses({\n variant: this.variant as SpectreToastVariant,\n dismissed: this.dismissed ?? false,\n fullWidth: this.fullWidth ?? false\n })\n }\n\n private get iconClasses(): string {\n return getToastIconClasses({ variant: this.variant as SpectreToastVariant })\n }\n\n override render() {\n return html`<div\n aria-atomic=\"true\"\n aria-label=\"${ifDefined(this.forwardedAriaLabel)}\"\n aria-live=\"polite\"\n class=\"${this.toastClasses}\"\n data-sp-toast-native\n id=\"${ifDefined(this.id || undefined)}\"\n role=\"status\"\n title=\"${ifDefined(this.title || undefined)}\"\n >\n ${\n this.hasIconContent\n ? html`<div class=\"${this.iconClasses}\" data-sp-toast-icon>\n ${this.iconContent}\n </div>`\n : nothing\n }\n ${this.hasBodyContent ? this.bodyContent : nothing}\n </div>`\n }\n}\n\nexport function defineSpectreToast(\n tagName = 'sp-toast'\n): typeof SpectreToastElement {\n const existingElement = customElements.get(tagName)\n\n if (existingElement) {\n return existingElement as unknown as typeof SpectreToastElement\n }\n\n customElements.define(tagName, SpectreToastElement)\n return SpectreToastElement\n}\n","import { html, nothing } from 'lit'\nimport { ifDefined } from 'lit/directives/if-defined.js'\n\nimport { SpectreBaseElement } from '../../utils/base'\nimport { hasMeaningfulContent } from '../../utils/dom'\nimport {\n isTooltipPlacement,\n type SpectreTooltipPlacement\n} from '../../utils/form'\n\nimport { getTooltipClasses } from '@phcdevworks/spectre-ui'\n\nexport interface SpectreTooltipProps {\n ariaLabel?: string | null\n id?: string | null | undefined\n placement?: SpectreTooltipPlacement | undefined\n title?: string | null | undefined\n visible?: boolean | undefined\n}\n\nexport class SpectreTooltipElement\n extends SpectreBaseElement\n implements SpectreTooltipProps\n{\n static properties = {\n placement: { type: String, reflect: true },\n visible: { type: Boolean, reflect: true }\n }\n\n placement: SpectreTooltipPlacement | undefined = 'top'\n visible: boolean | undefined = false\n\n private triggerContent: Node[] = []\n private tooltipContent: Node[] = []\n private contentObserver?: MutationObserver | undefined\n\n override get id(): string {\n return super.id\n }\n\n override set id(value: string | null | undefined) {\n super.id = value\n }\n\n override get title(): string {\n return super.title\n }\n\n override set title(value: string | null | undefined) {\n super.title = value\n }\n\n private isInternalNode(node: Node): boolean {\n if (node.nodeType !== Node.ELEMENT_NODE) {\n return false\n }\n const el = node as Element\n return (\n el.hasAttribute('data-sp-tooltip-native') ||\n el.hasAttribute('data-sp-tooltip-trigger')\n )\n }\n\n private syncProjectedContent(): boolean {\n const nextTooltipContent: Node[] = []\n const nextTriggerContent: Node[] = []\n\n // Retain authored nodes already projected into native containers. Reading\n // those containers wholesale would also capture Lit's own template nodes.\n const sourceNodes = [\n ...this.triggerContent.filter((node) => this.contains(node)),\n ...this.tooltipContent.filter((node) => this.contains(node)),\n ...Array.from(this.childNodes).filter(\n (node) =>\n !this.hasUpdated ||\n node.nodeType !== Node.TEXT_NODE ||\n node.textContent?.trim()\n )\n ]\n\n new Set(sourceNodes).forEach((node) => {\n if (node.nodeType === Node.COMMENT_NODE || this.isInternalNode(node)) {\n return\n }\n const isTooltipSlot =\n node.nodeType === Node.ELEMENT_NODE &&\n (node as Element).getAttribute('slot') === 'tooltip'\n if (isTooltipSlot) {\n nextTooltipContent.push(node)\n } else {\n nextTriggerContent.push(node)\n }\n })\n\n const changed =\n nextTooltipContent.length !== this.tooltipContent.length ||\n nextTooltipContent.some((n, i) => n !== this.tooltipContent[i]) ||\n nextTriggerContent.length !== this.triggerContent.length ||\n nextTriggerContent.some((n, i) => n !== this.triggerContent[i])\n\n if (changed) {\n this.tooltipContent = nextTooltipContent\n this.triggerContent = nextTriggerContent\n }\n\n return changed\n }\n\n private get hasTooltipContent(): boolean {\n return hasMeaningfulContent(this.tooltipContent)\n }\n\n override connectedCallback(): void {\n super.connectedCallback()\n this.syncProjectedContent()\n this.startContentObserver()\n this.style.position ||= 'relative'\n this.style.display ||= 'inline-block'\n }\n\n override disconnectedCallback(): void {\n this.stopContentObserver()\n super.disconnectedCallback()\n }\n\n protected override update(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n this.stopContentObserver()\n super.update(changedProperties)\n this.startContentObserver()\n }\n\n private startContentObserver(): void {\n if (this.contentObserver) {\n return\n }\n this.contentObserver = new MutationObserver(() => {\n if (this.syncProjectedContent()) {\n this.requestUpdate()\n }\n })\n this.contentObserver.observe(this, { childList: true })\n }\n\n private stopContentObserver(): void {\n this.contentObserver?.disconnect()\n this.contentObserver = undefined\n }\n\n protected override willUpdate(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n if (\n changedProperties.has('placement') &&\n (this.placement == null || !isTooltipPlacement(this.placement))\n ) {\n this.placement = 'top'\n }\n if (changedProperties.has('visible') && this.visible == null) {\n this.visible = false\n }\n }\n\n private show(): void {\n if (this.visible) {\n return\n }\n this.visible = true\n this.dispatchEvent(new CustomEvent('sp-show', { bubbles: true }))\n }\n\n private hide(): void {\n if (!this.visible) {\n return\n }\n this.visible = false\n this.dispatchEvent(new CustomEvent('sp-hide', { bubbles: true }))\n }\n\n private get tooltipClasses(): string {\n return getTooltipClasses({\n placement: this.placement as SpectreTooltipPlacement,\n visible: this.visible ?? false\n })\n }\n\n override render() {\n return html`<span\n data-sp-tooltip-trigger\n @focusin=\"${() => this.show()}\"\n @focusout=\"${() => this.hide()}\"\n @mouseenter=\"${() => this.show()}\"\n @mouseleave=\"${() => this.hide()}\"\n >\n ${this.triggerContent}\n </span>\n <span\n aria-label=\"${ifDefined(this.forwardedAriaLabel)}\"\n class=\"${this.tooltipClasses}\"\n data-sp-tooltip-native\n id=\"${ifDefined(this.id || undefined)}\"\n role=\"tooltip\"\n title=\"${ifDefined(this.title || undefined)}\"\n >\n ${this.hasTooltipContent ? this.tooltipContent : nothing}\n </span>`\n }\n}\n\nexport function defineSpectreTooltip(\n tagName = 'sp-tooltip'\n): typeof SpectreTooltipElement {\n const existingElement = customElements.get(tagName)\n\n if (existingElement) {\n return existingElement as unknown as typeof SpectreTooltipElement\n }\n\n customElements.define(tagName, SpectreTooltipElement)\n return SpectreTooltipElement\n}\n","import { nothing } from 'lit'\nimport { ifDefined } from 'lit/directives/if-defined.js'\nimport { literal, html as staticHtml } from 'lit/static-html.js'\n\nimport { SpectreProjectableElement } from '../../utils/projectable'\nimport {\n isTextFamily,\n isTextLevel,\n isTextSize,\n isTextTransform,\n isTextVariant,\n type SpectreTextFamily,\n type SpectreTextLevel,\n type SpectreTextSize,\n type SpectreTextTransform,\n type SpectreTextVariant\n} from '../../utils/form'\n\nimport { getTextClasses } from '@phcdevworks/spectre-ui'\n\nconst LEVEL_TAGS: Record<SpectreTextLevel, ReturnType<typeof literal>> = {\n h1: literal`h1`,\n h2: literal`h2`,\n h3: literal`h3`,\n h4: literal`h4`,\n h5: literal`h5`,\n h6: literal`h6`,\n p: literal`p`,\n span: literal`span`\n}\n\nexport interface SpectreTextProps {\n ariaLabel?: string | null\n ariaLabelledBy?: string | null\n ariaDescribedBy?: string | null\n family?: SpectreTextFamily | undefined\n id?: string | null | undefined\n level?: SpectreTextLevel | undefined\n size?: SpectreTextSize | undefined\n title?: string | null | undefined\n transform?: SpectreTextTransform | undefined\n variant?: SpectreTextVariant | undefined\n}\n\nexport class SpectreTextElement\n extends SpectreProjectableElement\n implements SpectreTextProps\n{\n static properties = {\n family: { type: String, reflect: true },\n level: { type: String, reflect: true },\n size: { type: String, reflect: true },\n transform: { type: String, reflect: true },\n variant: { type: String, reflect: true }\n }\n\n family: SpectreTextFamily | undefined\n level: SpectreTextLevel | undefined = 'p'\n size: SpectreTextSize | undefined = 'md'\n transform: SpectreTextTransform | undefined\n variant: SpectreTextVariant | undefined = 'default'\n\n protected override willUpdate(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n if (changedProperties.has('family') && !isTextFamily(this.family)) {\n this.family = undefined\n }\n\n if (changedProperties.has('level') && !isTextLevel(this.level)) {\n this.level = 'p'\n }\n\n if (changedProperties.has('size') && !isTextSize(this.size)) {\n this.size = 'md'\n }\n\n if (changedProperties.has('variant') && !isTextVariant(this.variant)) {\n this.variant = 'default'\n }\n\n if (\n changedProperties.has('transform') &&\n this.transform !== undefined &&\n !isTextTransform(this.transform)\n ) {\n this.transform = undefined\n }\n }\n\n override get id(): string {\n return super.id\n }\n\n override set id(value: string | null | undefined) {\n super.id = value\n }\n\n override get title(): string {\n return super.title\n }\n\n override set title(value: string | null | undefined) {\n super.title = value\n }\n\n protected override getContentContainer(): Element | null {\n return this.querySelector('[data-sp-text-native]')\n }\n\n protected override isInternalNode(node: Node): boolean {\n if (node.nodeType !== Node.ELEMENT_NODE) {\n return false\n }\n\n const el = node as Element\n return el.hasAttribute('data-sp-text-native')\n }\n\n override render() {\n const tag = LEVEL_TAGS[this.level ?? 'p']\n const textClasses = getTextClasses({\n ...(this.family !== undefined && { family: this.family }),\n size: this.size ?? 'md',\n ...(this.transform !== undefined && { transform: this.transform }),\n variant: this.variant ?? 'default'\n })\n\n return staticHtml`<${tag}\n aria-describedby=\"${ifDefined(this.forwardedAriaDescribedBy)}\"\n aria-label=\"${ifDefined(this.forwardedAriaLabel)}\"\n aria-labelledby=\"${ifDefined(this.forwardedAriaLabelledBy)}\"\n class=\"${textClasses}\"\n data-sp-text-native\n id=\"${ifDefined(this.id || undefined)}\"\n title=\"${ifDefined(this.title || undefined)}\"\n >${this.hasProjectedContent ? this.projectedContent : nothing}</${tag}>`\n }\n}\n\nexport function defineSpectreText(\n tagName = 'sp-text'\n): typeof SpectreTextElement {\n const existingElement = customElements.get(tagName)\n\n if (existingElement) {\n return existingElement as unknown as typeof SpectreTextElement\n }\n\n customElements.define(tagName, SpectreTextElement)\n return SpectreTextElement\n}\n","export * from './components'\n\nimport { defineSpectreButton } from './components/button'\nimport { defineSpectreInput } from './components/input'\nimport { defineSpectreTextarea } from './components/textarea'\nimport { defineSpectreSelect } from './components/select'\nimport { defineSpectreCheckbox } from './components/checkbox'\nimport { defineSpectreRadio } from './components/radio'\nimport { defineSpectreLabel } from './components/label'\nimport { defineSpectreFieldset } from './components/fieldset'\nimport { defineSpectreBadge } from './components/badge'\nimport { defineSpectreCard } from './components/card'\nimport { defineSpectreIconBox } from './components/icon-box'\nimport { defineSpectreRating } from './components/rating'\nimport { defineSpectreTestimonial } from './components/testimonial'\nimport { defineSpectreAlert } from './components/alert'\nimport { defineSpectreAvatar } from './components/avatar'\nimport { defineSpectreSpinner } from './components/spinner'\nimport { defineSpectreTag } from './components/tag'\nimport { defineSpectrePricingCard } from './components/pricing-card'\nimport { defineSpectreContainer } from './components/container'\nimport { defineSpectreGrid } from './components/grid'\nimport { defineSpectreSection } from './components/section'\nimport { defineSpectreStack } from './components/stack'\nimport { defineSpectreDropdown } from './components/dropdown'\nimport { defineSpectreFooter } from './components/footer'\nimport { defineSpectreFooterChip } from './components/footer-chip'\nimport { defineSpectreFooterLink } from './components/footer-link'\nimport { defineSpectreModal } from './components/modal'\nimport { defineSpectreNav } from './components/nav'\nimport { defineSpectreNavItem } from './components/nav-item'\nimport { defineSpectreSidebar } from './components/sidebar'\nimport { defineSpectreSidebarLink } from './components/sidebar-link'\nimport { defineSpectreSidebarToggle } from './components/sidebar-toggle'\nimport { defineSpectreToast } from './components/toast'\nimport { defineSpectreTooltip } from './components/tooltip'\nimport { defineSpectreText } from './components/text'\n\nexport function defineSpectreComponents(): void {\n defineSpectreButton()\n defineSpectreInput()\n defineSpectreTextarea()\n defineSpectreSelect()\n defineSpectreCheckbox()\n defineSpectreRadio()\n defineSpectreLabel()\n defineSpectreFieldset()\n defineSpectreBadge()\n defineSpectreCard()\n defineSpectreIconBox()\n defineSpectreRating()\n defineSpectreTestimonial()\n defineSpectreAlert()\n defineSpectreAvatar()\n defineSpectreSpinner()\n defineSpectreTag()\n defineSpectrePricingCard()\n defineSpectreContainer()\n defineSpectreGrid()\n defineSpectreSection()\n defineSpectreStack()\n defineSpectreDropdown()\n defineSpectreFooter()\n defineSpectreFooterChip()\n defineSpectreFooterLink()\n defineSpectreModal()\n defineSpectreNav()\n defineSpectreNavItem()\n defineSpectreSidebar()\n defineSpectreSidebarLink()\n defineSpectreSidebarToggle()\n defineSpectreToast()\n defineSpectreTooltip()\n defineSpectreText()\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/utils/form.ts","../src/utils/base.ts","../src/utils/dom.ts","../src/utils/projectable.ts","../src/utils/states.ts","../src/components/button/sp-button.ts","../src/components/input/sp-input.ts","../src/components/textarea/sp-textarea.ts","../src/components/select/sp-select.ts","../src/components/checkbox/sp-checkbox.ts","../src/components/radio/sp-radio.ts","../src/components/label/sp-label.ts","../src/components/fieldset/sp-fieldset.ts","../src/components/badge/sp-badge.ts","../src/components/card/sp-card.ts","../src/components/icon-box/sp-icon-box.ts","../src/components/rating/sp-rating.ts","../src/utils/projection.ts","../src/components/testimonial/sp-testimonial.ts","../src/utils/icons.ts","../src/components/alert/sp-alert.ts","../src/components/avatar/sp-avatar.ts","../src/components/spinner/sp-spinner.ts","../src/components/tag/sp-tag.ts","../src/components/pricing-card/sp-pricing-card.ts","../src/components/container/sp-container.ts","../src/components/grid/sp-grid.ts","../src/components/section/sp-section.ts","../src/components/stack/sp-stack.ts","../src/utils/parts.ts","../src/components/dropdown/sp-dropdown.ts","../src/components/footer/sp-footer.ts","../src/components/footer-chip/sp-footer-chip.ts","../src/components/footer-link/sp-footer-link.ts","../src/utils/focus.ts","../src/components/modal/sp-modal.ts","../src/components/nav/sp-nav.ts","../src/components/nav-item/sp-nav-item.ts","../src/components/sidebar/sp-sidebar.ts","../src/components/sidebar-link/sp-sidebar-link.ts","../src/components/sidebar-toggle/sp-sidebar-toggle.ts","../src/components/toast/sp-toast.ts","../src/components/tooltip/sp-tooltip.ts","../src/components/text/sp-text.ts","../src/components/tabs/sp-tabs.ts","../src/components/tab-panel/sp-tab-panel.ts","../src/components/accordion/sp-accordion.ts","../src/components/accordion-item/sp-accordion-item.ts","../src/components/breadcrumb/sp-breadcrumb.ts","../src/components/list-group/sp-list-group.ts","../src/components/list-group-item/sp-list-group-item.ts","../src/components/offcanvas/sp-offcanvas.ts","../src/components/carousel/sp-carousel.ts","../src/components/table/sp-table.ts","../src/components/pagination/sp-pagination.ts","../src/components/stepper/sp-stepper.ts","../src/components/card-bleed/sp-card-bleed.ts","../src/components/prose/sp-prose.ts","../src/components/progress/sp-progress.ts","../src/components/switch/sp-switch.ts","../src/components/range/sp-range.ts","../src/components/file-input/sp-file-input.ts","../src/components/external-auth-button/sp-external-auth-button.ts","../src/components/choice-card/sp-choice-card.ts","../src/components/input-group/sp-input-group.ts","../src/components/popover/sp-popover.ts","../src/components/datepicker/sp-datepicker.ts","../src/index.ts"],"names":["LitElement","getButtonClasses","html","getInputLabelClasses","nothing","ifDefined","getInputClasses","getInputErrorMessageClasses","getInputHelperTextClasses","getInputWrapperClasses","live","getTextareaClasses","getSelectClasses","getCheckboxClasses","getRadioClasses","getLabelClasses","getFieldsetLegendClasses","getFieldsetClasses","getBadgeClasses","getCardClasses","getIconBoxClasses","getRatingClasses","getRatingStarClasses","getRatingStarsClasses","getRatingTextClasses","getTestimonialClasses","getTestimonialAuthorClasses","getTestimonialAuthorInfoClasses","getTestimonialAuthorNameClasses","getTestimonialAuthorTitleClasses","getTestimonialQuoteClasses","svg","getAlertClasses","getAlertIconClasses","getAlertDismissClasses","getAvatarClasses","getSpinnerClasses","getTagClasses","getPricingCardClasses","getPricingCardBadgeClasses","getPricingCardPriceContainerClasses","getPricingCardPriceClasses","getPricingCardDescriptionClasses","_a","getContainerClasses","getGridClasses","getSectionClasses","getStackClasses","getDropdownDividerClasses","getDropdownHeaderClasses","getDropdownItemClasses","getDropdownClasses","getDropdownMenuClasses","getFooterClasses","getFooterDividerClasses","getFooterHeadingClasses","getFooterLinksClasses","getFooterMutedClasses","getFooterTextClasses","getFooterChipClasses","getFooterLinkClasses","getModalOverlayClasses","getModalClasses","getNavClasses","getNavLinksClasses","getNavLinkClasses","getSidebarClasses","getSidebarGroupClasses","getSidebarHeaderClasses","getSidebarGroupSummaryClasses","getSidebarToggleClasses","getSidebarBackdropClasses","getSidebarLinkClasses","getToastClasses","getToastIconClasses","_b","getTooltipClasses","literal","getHeadingClasses","getDisplayClasses","getLeadClasses","getTextClasses","staticHtml","getTabsClasses","getTabsListClasses","getTabsItemClasses","getTabsPanelClasses","getAccordionClasses","getAccordionItemClasses","getAccordionHeaderClasses","getAccordionIconClasses","getAccordionPanelClasses","getBreadcrumbLinkClasses","getBreadcrumbClasses","getBreadcrumbItemClasses","getBreadcrumbSeparatorClasses","getListGroupItemHeadingClasses","getListGroupItemTextClasses","getListGroupClasses","getListGroupItemClasses","getOffcanvasBackdropClasses","getOffcanvasClasses","getOffcanvasHeaderClasses","getOffcanvasBodyClasses","getOffcanvasFooterClasses","slide","getCarouselCaptionClasses","getCarouselClasses","getCarouselViewportClasses","getCarouselSlideClasses","getCarouselControlClasses","getCarouselIndicatorsClasses","getCarouselIndicatorClasses","getTableClasses","getTableRowClasses","getTableWrapperClasses","getPaginationItemClasses","getPaginationClasses","getPaginationEllipsisClasses","getStepperClasses","getStepperStepClasses","getStepperIndicatorClasses","getStepperLabelClasses","getCardBleedClasses","getProseClasses","getProgressLabelClasses","getProgressClasses","getProgressBarClasses","styleMap","getSwitchClasses","getRangeClasses","getFileInputClasses","getExternalAuthButtonClasses","getExternalAuthButtonIconClasses","getChoiceCardClasses","getInputGroupAddonClasses","getInputGroupClasses","getPopoverClasses","getPopoverArrowClasses","getPopoverHeaderClasses","getPopoverBodyClasses","getDayClasses","getDatepickerClasses","getDatepickerHeaderClasses","getDatepickerGridClasses","getDatepickerWeekdayClasses"],"mappings":"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","file":"index.cjs","sourcesContent":["import {\n type ButtonSize,\n type ButtonVariant,\n type InputSize\n} from '@phcdevworks/spectre-ui'\n\nexport const spectreInputSizes = ['sm', 'md', 'lg'] as const\nexport type SpectreInputSize = (typeof spectreInputSizes)[number]\n\nexport function isInputSize(value: unknown): value is InputSize | ButtonSize {\n return (spectreInputSizes as readonly string[]).includes(value as string)\n}\n\nexport const spectreButtonVariants = [\n 'primary',\n 'secondary',\n 'ghost',\n 'danger',\n 'success',\n 'cta',\n 'accent',\n 'inverse',\n 'warning',\n 'link',\n 'light',\n 'dark'\n] as const\n\nexport type SpectreButtonVariant = (typeof spectreButtonVariants)[number]\n\nexport function isButtonVariant(value: unknown): value is ButtonVariant {\n return (spectreButtonVariants as readonly string[]).includes(value as string)\n}\n\nexport const spectreButtonTypes = ['button', 'submit', 'reset'] as const\n\nexport type SpectreButtonType = (typeof spectreButtonTypes)[number]\n\nexport function isButtonType(value: unknown): value is SpectreButtonType {\n return (spectreButtonTypes as readonly string[]).includes(value as string)\n}\n\nexport const spectreInputTypes = [\n 'text',\n 'email',\n 'password',\n 'search',\n 'tel',\n 'url',\n 'number',\n 'date',\n 'datetime-local',\n 'month',\n 'time',\n 'week'\n] as const\n\nexport type SpectreInputType = (typeof spectreInputTypes)[number]\n\nexport function isInputType(value: unknown): value is SpectreInputType {\n return (spectreInputTypes as readonly string[]).includes(value as string)\n}\n\nexport const spectreBadgeVariants = [\n 'primary',\n 'secondary',\n 'success',\n 'warning',\n 'danger',\n 'neutral',\n 'info',\n 'ghost',\n 'outline',\n 'accent',\n 'cta',\n 'inverse',\n 'brand'\n] as const\n\nexport type SpectreBadgeVariant = (typeof spectreBadgeVariants)[number]\n\nexport function isBadgeVariant(value: unknown): value is SpectreBadgeVariant {\n return (spectreBadgeVariants as readonly string[]).includes(value as string)\n}\n\nexport const spectreAlertVariants = [\n 'info',\n 'success',\n 'warning',\n 'danger',\n 'neutral',\n 'brand'\n] as const\n\nexport type SpectreAlertVariant = (typeof spectreAlertVariants)[number]\n\nexport function isAlertVariant(value: unknown): value is SpectreAlertVariant {\n return (spectreAlertVariants as readonly string[]).includes(value as string)\n}\n\nexport const spectreCardVariants = [\n 'elevated',\n 'flat',\n 'outline',\n 'ghost'\n] as const\n\nexport type SpectreCardVariant = (typeof spectreCardVariants)[number]\n\nexport function isCardVariant(value: unknown): value is SpectreCardVariant {\n return (spectreCardVariants as readonly string[]).includes(value as string)\n}\n\nexport const spectreCardPaddingSizes = ['sm', 'md', 'lg'] as const\n\nexport type SpectreCardPaddingSize = (typeof spectreCardPaddingSizes)[number]\n\nexport function isCardPaddingSize(\n value: unknown\n): value is SpectreCardPaddingSize {\n return (spectreCardPaddingSizes as readonly string[]).includes(\n value as string\n )\n}\n\nexport const spectreAccentEdges = ['top', 'right', 'bottom', 'left'] as const\n\nexport type SpectreAccentEdge = (typeof spectreAccentEdges)[number]\n\nexport function isAccentEdge(value: unknown): value is SpectreAccentEdge {\n return (spectreAccentEdges as readonly string[]).includes(value as string)\n}\n\nexport const spectreAccentColors = [\n 'neutral',\n 'brand',\n 'info',\n 'success',\n 'warning',\n 'danger',\n 'cta'\n] as const\n\nexport type SpectreAccentColor = (typeof spectreAccentColors)[number]\n\nexport function isAccentColor(value: unknown): value is SpectreAccentColor {\n return (spectreAccentColors as readonly string[]).includes(value as string)\n}\n\nexport const spectreIconBoxVariants = [\n 'primary',\n 'secondary',\n 'success',\n 'warning',\n 'danger',\n 'info',\n 'neutral',\n 'ghost',\n 'accent',\n 'cta',\n 'outline'\n] as const\n\nexport type SpectreIconBoxVariant = (typeof spectreIconBoxVariants)[number]\n\nexport function isIconBoxVariant(\n value: unknown\n): value is SpectreIconBoxVariant {\n return (spectreIconBoxVariants as readonly string[]).includes(value as string)\n}\n\nexport const spectreTestimonialVariants = [\n 'elevated',\n 'flat',\n 'outline',\n 'ghost'\n] as const\n\nexport type SpectreTestimonialVariant =\n (typeof spectreTestimonialVariants)[number]\n\nexport function isTestimonialVariant(\n value: unknown\n): value is SpectreTestimonialVariant {\n return (spectreTestimonialVariants as readonly string[]).includes(\n value as string\n )\n}\n\nexport const spectreSpinnerVariants = [\n 'primary',\n 'secondary',\n 'success',\n 'warning',\n 'danger',\n 'info',\n 'neutral',\n 'accent',\n 'cta',\n 'inverse'\n] as const\n\nexport type SpectreSpinnerVariant = (typeof spectreSpinnerVariants)[number]\n\nexport function isSpinnerVariant(\n value: unknown\n): value is SpectreSpinnerVariant {\n return (spectreSpinnerVariants as readonly string[]).includes(value as string)\n}\n\nexport const spectreTagVariants = [\n 'default',\n 'primary',\n 'secondary',\n 'success',\n 'warning',\n 'danger',\n 'info',\n 'neutral',\n 'accent',\n 'cta',\n 'outline',\n 'ghost'\n] as const\n\nexport type SpectreTagVariant = (typeof spectreTagVariants)[number]\n\nexport function isTagVariant(value: unknown): value is SpectreTagVariant {\n return (spectreTagVariants as readonly string[]).includes(value as string)\n}\n\nexport const spectreAvatarSizes = ['xs', 'sm', 'md', 'lg', 'xl'] as const\n\nexport type SpectreAvatarSize = (typeof spectreAvatarSizes)[number]\n\nexport function isAvatarSize(value: unknown): value is SpectreAvatarSize {\n return (spectreAvatarSizes as readonly string[]).includes(value as string)\n}\n\nexport const spectreAvatarShapes = ['circle', 'square'] as const\n\nexport type SpectreAvatarShape = (typeof spectreAvatarShapes)[number]\n\nexport function isAvatarShape(value: unknown): value is SpectreAvatarShape {\n return (spectreAvatarShapes as readonly string[]).includes(value as string)\n}\n\nexport const spectreContainerMaxWidths = ['none', 'prose', 'wide'] as const\n\nexport type SpectreContainerMaxWidth =\n (typeof spectreContainerMaxWidths)[number]\n\nexport function isContainerMaxWidth(\n value: unknown\n): value is SpectreContainerMaxWidth {\n return (spectreContainerMaxWidths as readonly string[]).includes(\n value as string\n )\n}\n\nexport const spectreGridColumns = [1, 2, 3, 4, 6, 12] as const\n\nexport type SpectreGridColumns = (typeof spectreGridColumns)[number]\n\nexport function isGridColumns(value: unknown): value is SpectreGridColumns {\n return (spectreGridColumns as readonly number[]).includes(value as number)\n}\n\nexport const spectreGridGaps = ['sm', 'md', 'lg'] as const\n\nexport type SpectreGridGap = (typeof spectreGridGaps)[number]\n\nexport function isGridGap(value: unknown): value is SpectreGridGap {\n return (spectreGridGaps as readonly string[]).includes(value as string)\n}\n\nexport const spectreGridAligns = [\n 'start',\n 'center',\n 'end',\n 'baseline',\n 'stretch'\n] as const\n\nexport type SpectreGridAlign = (typeof spectreGridAligns)[number]\n\nexport function isGridAlign(value: unknown): value is SpectreGridAlign {\n return (spectreGridAligns as readonly string[]).includes(value as string)\n}\n\nexport const spectreGridSpans = [\n 1,\n 2,\n 3,\n 4,\n 5,\n 6,\n 7,\n 8,\n 9,\n 10,\n 11,\n 12,\n 'full'\n] as const\n\nexport type SpectreGridSpan = (typeof spectreGridSpans)[number]\n\nexport function isGridSpan(value: unknown): value is SpectreGridSpan {\n return (spectreGridSpans as readonly (number | string)[]).includes(\n value as number | string\n )\n}\n\nexport interface SpectreGridSpanOptions {\n base?: SpectreGridSpan\n md?: SpectreGridSpan\n lg?: SpectreGridSpan\n}\n\nexport function isGridSpanOptions(\n value: unknown\n): value is SpectreGridSpanOptions {\n if (typeof value !== 'object' || value === null) {\n return false\n }\n const candidate = value as Record<string, unknown>\n return (\n (candidate.base === undefined || isGridSpan(candidate.base)) &&\n (candidate.md === undefined || isGridSpan(candidate.md)) &&\n (candidate.lg === undefined || isGridSpan(candidate.lg))\n )\n}\n\nexport const spectreGridOffsets = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11\n] as const\n\nexport type SpectreGridOffset = (typeof spectreGridOffsets)[number]\n\nexport function isGridOffset(value: unknown): value is SpectreGridOffset {\n return (spectreGridOffsets as readonly number[]).includes(value as number)\n}\n\nexport interface SpectreGridOffsetOptions {\n base?: SpectreGridOffset\n md?: SpectreGridOffset\n lg?: SpectreGridOffset\n}\n\nexport function isGridOffsetOptions(\n value: unknown\n): value is SpectreGridOffsetOptions {\n if (typeof value !== 'object' || value === null) {\n return false\n }\n const candidate = value as Record<string, unknown>\n return (\n (candidate.base === undefined || isGridOffset(candidate.base)) &&\n (candidate.md === undefined || isGridOffset(candidate.md)) &&\n (candidate.lg === undefined || isGridOffset(candidate.lg))\n )\n}\n\nexport const spectreGridOrders = [\n 'first',\n 'last',\n 'none',\n 1,\n 2,\n 3,\n 4,\n 5,\n 6,\n 7,\n 8,\n 9,\n 10,\n 11,\n 12\n] as const\n\nexport type SpectreGridOrder = (typeof spectreGridOrders)[number]\n\nexport function isGridOrder(value: unknown): value is SpectreGridOrder {\n return (spectreGridOrders as readonly (number | string)[]).includes(\n value as number | string\n )\n}\n\nexport interface SpectreGridOrderOptions {\n base?: SpectreGridOrder\n md?: SpectreGridOrder\n lg?: SpectreGridOrder\n}\n\nexport function isGridOrderOptions(\n value: unknown\n): value is SpectreGridOrderOptions {\n if (typeof value !== 'object' || value === null) {\n return false\n }\n const candidate = value as Record<string, unknown>\n return (\n (candidate.base === undefined || isGridOrder(candidate.base)) &&\n (candidate.md === undefined || isGridOrder(candidate.md)) &&\n (candidate.lg === undefined || isGridOrder(candidate.lg))\n )\n}\n\nexport const spectreGridLeadingWeights = [1.5, 1.6, 2, 2.5, 3] as const\n\nexport type SpectreGridLeadingWeight =\n (typeof spectreGridLeadingWeights)[number]\n\nexport function isGridLeadingWeight(\n value: unknown\n): value is SpectreGridLeadingWeight {\n return (spectreGridLeadingWeights as readonly number[]).includes(\n value as number\n )\n}\n\nexport interface SpectreGridLeadingWeightOptions {\n base?: SpectreGridLeadingWeight\n md?: SpectreGridLeadingWeight\n lg?: SpectreGridLeadingWeight\n}\n\nexport function isGridLeadingWeightOptions(\n value: unknown\n): value is SpectreGridLeadingWeightOptions {\n if (typeof value !== 'object' || value === null) {\n return false\n }\n const candidate = value as Record<string, unknown>\n return (\n (candidate.base === undefined || isGridLeadingWeight(candidate.base)) &&\n (candidate.md === undefined || isGridLeadingWeight(candidate.md)) &&\n (candidate.lg === undefined || isGridLeadingWeight(candidate.lg))\n )\n}\n\nexport interface SpectreGridLeadingTracksOptions {\n weight: SpectreGridLeadingWeight | SpectreGridLeadingWeightOptions\n}\n\nexport function isGridLeadingTracksOptions(\n value: unknown\n): value is SpectreGridLeadingTracksOptions {\n if (typeof value !== 'object' || value === null) {\n return false\n }\n const candidate = value as Record<string, unknown>\n return (\n isGridLeadingWeight(candidate.weight) ||\n isGridLeadingWeightOptions(candidate.weight)\n )\n}\n\nexport const spectreGridFixedTrackCounts = [1, 2, 3, 4] as const\n\nexport type SpectreGridFixedTrackCount =\n (typeof spectreGridFixedTrackCounts)[number]\n\nexport function isGridFixedTrackCount(\n value: unknown\n): value is SpectreGridFixedTrackCount {\n return (spectreGridFixedTrackCounts as readonly number[]).includes(\n value as number\n )\n}\n\nexport interface SpectreGridFixedTracksOptions {\n count: SpectreGridFixedTrackCount\n}\n\nexport function isGridFixedTracksOptions(\n value: unknown\n): value is SpectreGridFixedTracksOptions {\n if (typeof value !== 'object' || value === null) {\n return false\n }\n const candidate = value as Record<string, unknown>\n return isGridFixedTrackCount(candidate.count)\n}\n\nexport const spectreGridTemplates = [\n 'edge-fluid-edge',\n 'label-fluid-fluid'\n] as const\n\nexport type SpectreGridTemplate = (typeof spectreGridTemplates)[number]\n\nexport function isGridTemplate(value: unknown): value is SpectreGridTemplate {\n return (spectreGridTemplates as readonly string[]).includes(value as string)\n}\n\nexport interface SpectreGridExplicitTemplateOptions {\n template: SpectreGridTemplate\n weight?: SpectreGridLeadingWeight\n}\n\nexport function isGridExplicitTemplateOptions(\n value: unknown\n): value is SpectreGridExplicitTemplateOptions {\n if (typeof value !== 'object' || value === null) {\n return false\n }\n const candidate = value as Record<string, unknown>\n return (\n isGridTemplate(candidate.template) &&\n (candidate.weight === undefined || isGridLeadingWeight(candidate.weight))\n )\n}\n\nexport const spectreStackDirections = ['vertical', 'horizontal'] as const\n\nexport type SpectreStackDirection = (typeof spectreStackDirections)[number]\n\nexport function isStackDirection(\n value: unknown\n): value is SpectreStackDirection {\n return (spectreStackDirections as readonly string[]).includes(value as string)\n}\n\nexport const spectreStackBases = ['none', 'sidebar'] as const\n\nexport type SpectreStackBasis = (typeof spectreStackBases)[number]\n\nexport function isStackBasis(value: unknown): value is SpectreStackBasis {\n return (spectreStackBases as readonly string[]).includes(value as string)\n}\n\nexport const spectreNavAligns = ['start', 'center', 'end'] as const\n\nexport type SpectreNavAlign = (typeof spectreNavAligns)[number]\n\nexport function isNavAlign(value: unknown): value is SpectreNavAlign {\n return (spectreNavAligns as readonly string[]).includes(value as string)\n}\n\nexport const spectreStackAligns = ['center', 'stretch'] as const\n\nexport type SpectreStackAlign = (typeof spectreStackAligns)[number]\n\nexport function isStackAlign(value: unknown): value is SpectreStackAlign {\n return (spectreStackAligns as readonly string[]).includes(value as string)\n}\n\nexport const spectreStackGaps = ['sm', 'md', 'lg'] as const\n\nexport type SpectreStackGap = (typeof spectreStackGaps)[number]\n\nexport function isStackGap(value: unknown): value is SpectreStackGap {\n return (spectreStackGaps as readonly string[]).includes(value as string)\n}\n\nexport const spectreDropdownPlacements = [\n 'bottom-start',\n 'bottom-end',\n 'top-start',\n 'top-end'\n] as const\n\nexport type SpectreDropdownPlacement =\n (typeof spectreDropdownPlacements)[number]\n\nexport function isDropdownPlacement(\n value: unknown\n): value is SpectreDropdownPlacement {\n return (spectreDropdownPlacements as readonly string[]).includes(\n value as string\n )\n}\n\nexport const spectreToastVariants = [\n 'info',\n 'success',\n 'warning',\n 'danger',\n 'neutral'\n] as const\n\nexport type SpectreToastVariant = (typeof spectreToastVariants)[number]\n\nexport function isToastVariant(value: unknown): value is SpectreToastVariant {\n return (spectreToastVariants as readonly string[]).includes(value as string)\n}\n\nexport const spectreSidebarLinkLevels = ['parent', 'child'] as const\n\nexport type SpectreSidebarLinkLevel = (typeof spectreSidebarLinkLevels)[number]\n\nexport function isSidebarLinkLevel(\n value: unknown\n): value is SpectreSidebarLinkLevel {\n return (spectreSidebarLinkLevels as readonly string[]).includes(\n value as string\n )\n}\n\nexport const spectreTooltipPlacements = [\n 'top',\n 'bottom',\n 'left',\n 'right'\n] as const\n\nexport type SpectreTooltipPlacement = (typeof spectreTooltipPlacements)[number]\n\nexport function isTooltipPlacement(\n value: unknown\n): value is SpectreTooltipPlacement {\n return (spectreTooltipPlacements as readonly string[]).includes(\n value as string\n )\n}\n\nexport const spectreTextSizes = [\n 'xs',\n 'sm',\n 'md',\n 'lg',\n 'xl',\n '2xl',\n '3xl',\n '4xl',\n '5xl',\n '6xl'\n] as const\n\nexport type SpectreTextSize = (typeof spectreTextSizes)[number]\n\nexport function isTextSize(value: unknown): value is SpectreTextSize {\n return (spectreTextSizes as readonly string[]).includes(value as string)\n}\n\nexport const spectreTextVariants = [\n 'default',\n 'muted',\n 'subtle',\n 'meta',\n 'brand',\n 'onInverse',\n 'onInverseMuted',\n 'onSurface',\n 'onSurfaceMuted',\n 'onSurfaceSubtle',\n 'onSurfaceMeta',\n 'onSurfaceBrand'\n] as const\n\nexport type SpectreTextVariant = (typeof spectreTextVariants)[number]\n\nexport function isTextVariant(value: unknown): value is SpectreTextVariant {\n return (spectreTextVariants as readonly string[]).includes(value as string)\n}\n\nexport const spectreTextFamilies = ['sans', 'serif', 'mono'] as const\n\nexport type SpectreTextFamily = (typeof spectreTextFamilies)[number]\n\nexport function isTextFamily(value: unknown): value is SpectreTextFamily {\n return (spectreTextFamilies as readonly string[]).includes(value as string)\n}\n\nexport const spectreTextLevels = [\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'p',\n 'span'\n] as const\n\nexport type SpectreTextLevel = (typeof spectreTextLevels)[number]\n\nexport function isTextLevel(value: unknown): value is SpectreTextLevel {\n return (spectreTextLevels as readonly string[]).includes(value as string)\n}\n\nexport const spectreTextTransforms = [\n 'none',\n 'uppercase',\n 'lowercase',\n 'capitalize'\n] as const\n\nexport type SpectreTextTransform = (typeof spectreTextTransforms)[number]\n\nexport function isTextTransform(value: unknown): value is SpectreTextTransform {\n return (spectreTextTransforms as readonly string[]).includes(value as string)\n}\n\nexport const spectreTabsVariants = ['line', 'pill'] as const\n\nexport type SpectreTabsVariant = (typeof spectreTabsVariants)[number]\n\nexport function isTabsVariant(value: unknown): value is SpectreTabsVariant {\n return (spectreTabsVariants as readonly string[]).includes(value as string)\n}\n\nexport const spectreOffcanvasPlacements = [\n 'start',\n 'end',\n 'top',\n 'bottom'\n] as const\n\nexport type SpectreOffcanvasPlacement =\n (typeof spectreOffcanvasPlacements)[number]\n\nexport function isOffcanvasPlacement(\n value: unknown\n): value is SpectreOffcanvasPlacement {\n return (spectreOffcanvasPlacements as readonly string[]).includes(\n value as string\n )\n}\n\nexport const spectreTableSizes = ['sm', 'md'] as const\n\nexport type SpectreTableSize = (typeof spectreTableSizes)[number]\n\nexport function isTableSize(value: unknown): value is SpectreTableSize {\n return (spectreTableSizes as readonly string[]).includes(value as string)\n}\n\nexport const spectreStepperOrientations = ['horizontal', 'vertical'] as const\n\nexport type SpectreStepperOrientation =\n (typeof spectreStepperOrientations)[number]\n\nexport function isStepperOrientation(\n value: unknown\n): value is SpectreStepperOrientation {\n return (spectreStepperOrientations as readonly string[]).includes(\n value as string\n )\n}\n\nexport const spectreSpacingScale = ['sm', 'md', 'lg'] as const\n\nexport type SpectreSpacingStep = (typeof spectreSpacingScale)[number]\n\nexport function isSpacingStep(value: unknown): value is SpectreSpacingStep {\n return (spectreSpacingScale as readonly string[]).includes(value as string)\n}\n\nexport const spectreGridColStarts = [\n 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12\n] as const\n\nexport type SpectreGridColStart = (typeof spectreGridColStarts)[number]\n\nexport function isGridColStart(value: unknown): value is SpectreGridColStart {\n return (spectreGridColStarts as readonly number[]).includes(value as number)\n}\n\nexport interface SpectreGridColStartOptions {\n base?: SpectreGridColStart\n md?: SpectreGridColStart\n lg?: SpectreGridColStart\n}\n\nexport function isGridColStartOptions(\n value: unknown\n): value is SpectreGridColStartOptions {\n if (typeof value !== 'object' || value === null) {\n return false\n }\n const candidate = value as Record<string, unknown>\n return (\n (candidate.base === undefined || isGridColStart(candidate.base)) &&\n (candidate.md === undefined || isGridColStart(candidate.md)) &&\n (candidate.lg === undefined || isGridColStart(candidate.lg))\n )\n}\n\nexport const spectrePopoverPlacements = [\n 'top',\n 'bottom',\n 'left',\n 'right'\n] as const\n\nexport type SpectrePopoverPlacement = (typeof spectrePopoverPlacements)[number]\n\nexport function isPopoverPlacement(\n value: unknown\n): value is SpectrePopoverPlacement {\n return (spectrePopoverPlacements as readonly string[]).includes(\n value as string\n )\n}\n\nexport const spectreProgressVariants = [\n 'brand',\n 'neutral',\n 'info',\n 'success',\n 'warning',\n 'danger'\n] as const\n\nexport type SpectreProgressVariant = (typeof spectreProgressVariants)[number]\n\nexport function isProgressVariant(\n value: unknown\n): value is SpectreProgressVariant {\n return (spectreProgressVariants as readonly string[]).includes(\n value as string\n )\n}\n\nexport const spectreTextPresets = ['heading', 'display', 'lead'] as const\n\nexport type SpectreTextPreset = (typeof spectreTextPresets)[number]\n\nexport function isTextPreset(value: unknown): value is SpectreTextPreset {\n return (spectreTextPresets as readonly string[]).includes(value as string)\n}\n\nexport const spectreHeadingLevels = [\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6'\n] as const\n\nexport type SpectreHeadingLevel = (typeof spectreHeadingLevels)[number]\n\nexport function isHeadingLevel(value: unknown): value is SpectreHeadingLevel {\n return (spectreHeadingLevels as readonly string[]).includes(value as string)\n}\n\nexport const spectreDisplayLevels = [1, 2, 3, 4, 5, 6] as const\n\nexport type SpectreDisplayLevel = (typeof spectreDisplayLevels)[number]\n\nexport function isDisplayLevel(value: unknown): value is SpectreDisplayLevel {\n return (spectreDisplayLevels as readonly number[]).includes(value as number)\n}\n\nexport const spectreTableRowVariants = [\n 'neutral',\n 'info',\n 'success',\n 'warning',\n 'danger'\n] as const\n\nexport type SpectreTableRowVariant = (typeof spectreTableRowVariants)[number]\n\nexport function isTableRowVariant(\n value: unknown\n): value is SpectreTableRowVariant {\n return (spectreTableRowVariants as readonly string[]).includes(\n value as string\n )\n}\n\nexport function normalizeInt(\n value: unknown,\n fallback: number | undefined,\n min = 0\n): number | undefined {\n if (\n value == null ||\n typeof value !== 'number' ||\n !Number.isInteger(value) ||\n value < min\n ) {\n return fallback\n }\n return value\n}\n\nconst spectreUtilityClassPattern =\n /^sp-[a-z0-9]+(?:-[a-z0-9]+)*(?:__[a-z0-9]+(?:-[a-z0-9]+)*)?(?:--[a-z0-9]+(?:-[a-z0-9]+)*)?$/\n\nexport function sanitizeUtilityClasses(\n value: string | null | undefined\n): string {\n if (!value) {\n return ''\n }\n return value\n .split(/\\s+/)\n .filter((token) => spectreUtilityClassPattern.test(token))\n .join(' ')\n}\n","import { LitElement, type PropertyDeclarations } from 'lit'\n\nexport class SpectreBaseElement extends LitElement {\n static properties: PropertyDeclarations = {}\n\n private _ariaLabel: string | null = null\n private _ariaLabelledBy: string | null = null\n private _ariaDescribedBy: string | null = null\n private _autocapitalize = ''\n private _autofocus = false\n private _spellcheck: boolean | null = null\n private _title = ''\n private _id = ''\n\n get ariaLabel(): string | null {\n return this._ariaLabel\n }\n\n set ariaLabel(value: string | null) {\n if (this._ariaLabel === value) {\n return\n }\n this._ariaLabel = value\n this._removeHostAttribute('aria-label')\n this.requestUpdate()\n }\n\n get ariaLabelledBy(): string | null {\n return this._ariaLabelledBy\n }\n\n set ariaLabelledBy(value: string | null) {\n if (this._ariaLabelledBy === value) {\n return\n }\n this._ariaLabelledBy = value\n this._removeHostAttribute('aria-labelledby')\n this.requestUpdate()\n }\n\n get ariaDescribedBy(): string | null {\n return this._ariaDescribedBy\n }\n\n set ariaDescribedBy(value: string | null) {\n if (this._ariaDescribedBy === value) {\n return\n }\n this._ariaDescribedBy = value\n this._removeHostAttribute('aria-describedby')\n this.requestUpdate()\n }\n\n override get autocapitalize(): string {\n return this._autocapitalize\n }\n\n override set autocapitalize(value: string | undefined | null) {\n const normalizedValue = value ?? ''\n if (this._autocapitalize === normalizedValue) {\n return\n }\n this._autocapitalize = normalizedValue\n this._removeHostAttribute('autocapitalize')\n this.requestUpdate()\n }\n\n override get spellcheck(): boolean {\n return this._spellcheck ?? super.spellcheck\n }\n\n override set spellcheck(value: boolean | undefined | null) {\n if (this._spellcheck === value) {\n return\n }\n this._spellcheck = value ?? null\n this._removeHostAttribute('spellcheck')\n this.requestUpdate()\n }\n\n override get title(): string {\n return this._title\n }\n\n override set title(value: string | undefined | null) {\n const normalizedValue = value ?? ''\n if (this._title === normalizedValue) {\n return\n }\n this._title = normalizedValue\n this._removeHostAttribute('title')\n this.requestUpdate()\n }\n\n override get id(): string {\n return this._id\n }\n\n override set id(value: string | undefined | null) {\n const normalizedValue = value ?? ''\n if (this._id === normalizedValue) {\n return\n }\n this._id = normalizedValue\n this._removeHostAttribute('id')\n this.requestUpdate()\n }\n\n override get autofocus(): boolean {\n return this._autofocus\n }\n\n override set autofocus(value: boolean | undefined | null) {\n const normalizedValue = !!value\n if (this._autofocus === normalizedValue) {\n return\n }\n this._autofocus = normalizedValue\n this._removeHostAttribute('autofocus')\n this.requestUpdate()\n }\n\n // Spectre components intentionally render in light DOM so the global\n // `@phcdevworks/spectre-ui` styling contract can apply directly.\n createRenderRoot(): this {\n return this\n }\n\n override connectedCallback(): void {\n super.connectedCallback()\n\n const proxiedAttributes = [\n 'id',\n 'title',\n 'autocapitalize',\n 'autofocus',\n 'spellcheck',\n 'aria-label',\n 'aria-labelledby',\n 'aria-describedby'\n ]\n\n proxiedAttributes.forEach((attr) => {\n const value = super.getAttribute(attr)\n if (value !== null) {\n this.setAttribute(attr, value)\n }\n })\n }\n\n override getAttribute(qualifiedName: string): string | null {\n switch (qualifiedName) {\n case 'id':\n return this.id || null\n case 'title':\n return this.title || null\n case 'autocapitalize':\n return this.autocapitalize || null\n case 'autofocus':\n return this.autofocus ? '' : null\n case 'spellcheck':\n return this._spellcheck !== null ? String(this._spellcheck) : null\n case 'aria-label':\n return this.ariaLabel\n case 'aria-labelledby':\n return this.ariaLabelledBy\n case 'aria-describedby':\n return this.ariaDescribedBy\n default:\n return super.getAttribute(qualifiedName)\n }\n }\n\n override hasAttribute(qualifiedName: string): boolean {\n switch (qualifiedName) {\n case 'id':\n return this.id !== ''\n case 'title':\n return this.title !== ''\n case 'autocapitalize':\n return this.autocapitalize !== ''\n case 'autofocus':\n return this.autofocus\n case 'spellcheck':\n return this._spellcheck !== null\n case 'aria-label':\n return this.ariaLabel !== null\n case 'aria-labelledby':\n return this.ariaLabelledBy !== null\n case 'aria-describedby':\n return this.ariaDescribedBy !== null\n default:\n return super.hasAttribute(qualifiedName)\n }\n }\n\n override setAttribute(qualifiedName: string, value: string): void {\n switch (qualifiedName) {\n case 'id':\n this.id = value\n break\n case 'title':\n this.title = value\n break\n case 'autocapitalize':\n this.autocapitalize = value\n break\n case 'autofocus':\n this.autofocus = true\n break\n case 'spellcheck':\n this.spellcheck = value !== 'false'\n break\n case 'aria-label':\n this.ariaLabel = value\n break\n case 'aria-labelledby':\n this.ariaLabelledBy = value\n break\n case 'aria-describedby':\n this.ariaDescribedBy = value\n break\n default:\n super.setAttribute(qualifiedName, value)\n }\n }\n\n override removeAttribute(qualifiedName: string): void {\n switch (qualifiedName) {\n case 'id':\n this.id = ''\n break\n case 'title':\n this.title = ''\n break\n case 'autocapitalize':\n this.autocapitalize = ''\n break\n case 'autofocus':\n this.autofocus = false\n break\n case 'spellcheck':\n this.spellcheck = null\n break\n case 'aria-label':\n this.ariaLabel = null\n break\n case 'aria-labelledby':\n this.ariaLabelledBy = null\n break\n case 'aria-describedby':\n this.ariaDescribedBy = null\n break\n default:\n super.removeAttribute(qualifiedName)\n }\n }\n\n private _removeHostAttribute(name: string): void {\n const host = this as unknown as HTMLElement\n if (HTMLElement.prototype.hasAttribute.call(host, name)) {\n // Use the native removeAttribute to avoid our own overridden version\n // which would reset the internal state.\n HTMLElement.prototype.removeAttribute.call(host, name)\n }\n }\n\n protected get forwardedAriaLabel(): string | undefined {\n const value = this.ariaLabel?.trim()\n return value ? value : undefined\n }\n\n protected get forwardedAriaLabelledBy(): string | undefined {\n const value = this.ariaLabelledBy?.trim()\n return value ? value : undefined\n }\n\n protected get forwardedAriaDescribedBy(): string | undefined {\n const value = this.ariaDescribedBy?.trim()\n return value ? value : undefined\n }\n\n // Subclasses that expose `disabled`/`loading` properties get this disabled\n // calculation for free instead of redeclaring it per component.\n protected get isDisabled(): boolean {\n const self = this as unknown as { disabled?: boolean; loading?: boolean }\n return (self.disabled ?? false) || (self.loading ?? false)\n }\n\n // Subclasses get this for free instead of redeclaring it per component.\n protected get hasForwardedLabel(): boolean {\n return Boolean(this.forwardedAriaLabel || this.forwardedAriaLabelledBy)\n }\n}\n","export function hasMeaningfulContent(nodes: readonly Node[]): boolean {\n return nodes.some((node) => {\n if (node.nodeType === Node.ELEMENT_NODE) {\n return true\n }\n\n if (node.nodeType === Node.TEXT_NODE) {\n return (node.textContent?.trim().length ?? 0) > 0\n }\n\n return false\n })\n}\n\nlet idCounter = 0\n\nexport function createUniqueId(prefix: string): string {\n idCounter += 1\n return `${prefix}-${idCounter}`\n}\n\n// Swaps the recipe classes this component previously applied to `element`\n// without touching classes the author set.\nexport function replaceClasses(\n element: Element,\n previous: string,\n next: string\n): void {\n const nextTokens = next.split(/\\s+/).filter(Boolean)\n previous\n .split(/\\s+/)\n .filter((token) => token && !nextTokens.includes(token))\n .forEach((token) => element.classList.remove(token))\n element.classList.add(...nextTokens)\n}\n\n// Parent/child component pairs identify each other through a global symbol\n// rather than `instanceof`, because every subpath entry bundles its own copy\n// of the child class.\nexport const spectreKindKey: unique symbol = Symbol.for(\n 'phcdevworks.spectre-components.kind'\n)\n\nexport function isSpectreKind<T extends Element>(\n node: Node,\n kind: string\n): node is T {\n return (node as { [spectreKindKey]?: string })[spectreKindKey] === kind\n}\n","import { SpectreBaseElement } from './base'\nimport { hasMeaningfulContent } from './dom'\n\nexport abstract class SpectreProjectableElement extends SpectreBaseElement {\n protected projectedContent: Node[] = []\n private contentObserver?: MutationObserver | undefined\n\n // Return the native container whose existing children are also treated as\n // projected content sources (e.g. the rendered <button>, <select>, <label>).\n protected abstract getContentContainer(): Element | null\n\n // Return true if the node was rendered by this component and should not be\n // treated as external projected content.\n protected abstract isInternalNode(node: Node): boolean\n\n protected get hasProjectedContent(): boolean {\n return hasMeaningfulContent(this.projectedContent)\n }\n\n override connectedCallback(): void {\n super.connectedCallback()\n this.syncProjectedContent()\n this.startContentObserver()\n }\n\n override disconnectedCallback(): void {\n this.stopContentObserver()\n super.disconnectedCallback()\n }\n\n protected override update(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n this.stopContentObserver()\n super.update(changedProperties)\n this.startContentObserver()\n }\n\n protected syncProjectedContent(): boolean {\n const nextProjectedContent: Node[] = []\n const sourceNodes = [\n ...this.childNodes,\n ...(this.getContentContainer()?.childNodes ?? [])\n ]\n\n sourceNodes.forEach((node) => {\n if (!this.isInternalNode(node) && !nextProjectedContent.includes(node)) {\n nextProjectedContent.push(node)\n }\n })\n\n const hasChanged =\n nextProjectedContent.length !== this.projectedContent.length ||\n nextProjectedContent.some(\n (node, index) => node !== this.projectedContent[index]\n )\n\n if (hasChanged) {\n this.projectedContent = nextProjectedContent\n }\n\n return hasChanged\n }\n\n private startContentObserver(): void {\n if (this.contentObserver) {\n return\n }\n\n this.contentObserver = new MutationObserver((mutations) => {\n const isInternalMovement = mutations.every(\n (mutation) =>\n [...mutation.removedNodes].every(\n (node) => this.isInternalNode(node) || this.contains(node)\n ) &&\n [...mutation.addedNodes].every((node) => this.isInternalNode(node))\n )\n\n if (isInternalMovement) {\n return\n }\n\n if (this.syncProjectedContent()) {\n this.requestUpdate()\n }\n })\n\n this.contentObserver.observe(this, { childList: true })\n }\n\n private stopContentObserver(): void {\n this.contentObserver?.disconnect()\n this.contentObserver = undefined\n }\n}\n","// Recipe-forced interaction states. Real interaction is styled by native\n// pseudo-classes; these force the look for documentation, previews, and\n// visual tests.\nexport const hoverFocusStateProperties = {\n focused: { type: Boolean, reflect: true },\n hovered: { type: Boolean, reflect: true }\n} as const\n\nexport const interactionStateProperties = {\n ...hoverFocusStateProperties,\n active: { type: Boolean, reflect: true }\n} as const\n\nexport interface SpectreHoverFocusStateProps {\n focused?: boolean | undefined\n hovered?: boolean | undefined\n}\n\nexport interface SpectreInteractionStateProps extends SpectreHoverFocusStateProps {\n active?: boolean | undefined\n}\n\nexport function hoverFocusStates(element: SpectreHoverFocusStateProps): {\n focused: boolean\n hovered: boolean\n} {\n return {\n focused: element.focused ?? false,\n hovered: element.hovered ?? false\n }\n}\n\nexport function interactionStates(element: SpectreInteractionStateProps): {\n active: boolean\n focused: boolean\n hovered: boolean\n} {\n return { ...hoverFocusStates(element), active: element.active ?? false }\n}\n","import { html, nothing, type TemplateResult } from 'lit'\nimport { ifDefined } from 'lit/directives/if-defined.js'\n\nimport { SpectreProjectableElement } from '../../utils/projectable'\nimport {\n isButtonType,\n isButtonVariant,\n isInputSize,\n sanitizeUtilityClasses,\n type SpectreButtonType,\n type SpectreButtonVariant,\n type SpectreInputSize\n} from '../../utils/form'\n\nimport {\n interactionStateProperties,\n interactionStates,\n type SpectreInteractionStateProps\n} from '../../utils/states'\n\nimport {\n getButtonClasses,\n getInputLabelClasses,\n type ButtonSize,\n type ButtonVariant\n} from '@phcdevworks/spectre-ui'\n\nexport type SpectreButtonTarget = '_blank' | '_self' | '_parent' | '_top'\n\nexport interface SpectreButtonProps extends SpectreInteractionStateProps {\n ariaLabel?: string | null\n ariaLabelledBy?: string | null\n ariaDescribedBy?: string | null\n autofocus?: boolean | null | undefined\n compact?: boolean | undefined\n disabled?: boolean | undefined\n form?: string | undefined\n fullWidth?: boolean | undefined\n href?: string | undefined\n iconOnly?: boolean | undefined\n id?: string | null | undefined\n innerClass?: string | undefined\n label?: string | undefined\n loading?: boolean | undefined\n loadingLabel?: string | undefined\n name?: string | undefined\n pill?: boolean | undefined\n rel?: string | undefined\n size?: SpectreInputSize | undefined\n target?: SpectreButtonTarget | undefined\n title?: string | null | undefined\n type?: SpectreButtonType | undefined\n variant?: SpectreButtonVariant | undefined\n value?: string | undefined\n}\n\nexport class SpectreButtonElement\n extends SpectreProjectableElement\n implements SpectreButtonProps\n{\n static properties = {\n ...interactionStateProperties,\n compact: { type: Boolean, reflect: true },\n disabled: { type: Boolean, reflect: true },\n form: { type: String },\n fullWidth: { attribute: 'full-width', type: Boolean, reflect: true },\n href: { type: String, reflect: true },\n iconOnly: { attribute: 'icon-only', type: Boolean, reflect: true },\n innerClass: { attribute: 'inner-class', type: String },\n label: { type: String, reflect: true },\n loading: { type: Boolean, reflect: true },\n loadingLabel: { attribute: 'loading-label', type: String, reflect: true },\n name: { type: String, reflect: true },\n pill: { type: Boolean, reflect: true },\n rel: { type: String },\n size: { type: String, reflect: true },\n target: { type: String },\n type: { type: String, reflect: true },\n variant: { type: String, reflect: true },\n value: { type: String }\n }\n\n active: boolean | undefined = false\n focused: boolean | undefined = false\n hovered: boolean | undefined = false\n\n compact: boolean | undefined = false\n disabled: boolean | undefined = false\n form: string | undefined\n fullWidth: boolean | undefined = false\n href: string | undefined\n iconOnly: boolean | undefined = false\n innerClass: string | undefined = undefined\n label: string | undefined\n loading: boolean | undefined = false\n loadingLabel: string | undefined = 'Loading'\n name: string | undefined\n pill: boolean | undefined = false\n rel: string | undefined\n size: SpectreInputSize | undefined = 'md'\n target: SpectreButtonTarget | undefined\n type: SpectreButtonType | undefined = 'button'\n variant: SpectreButtonVariant | undefined = 'primary'\n value: string | undefined = ''\n\n override get id(): string {\n return super.id\n }\n\n override set id(value: string | null | undefined) {\n super.id = value\n }\n\n override get title(): string {\n return super.title\n }\n\n override set title(value: string | null | undefined) {\n super.title = value\n }\n\n override get autofocus(): boolean {\n return super.autofocus\n }\n\n override set autofocus(value: boolean | undefined | null) {\n super.autofocus = value\n }\n\n private get isLink(): boolean {\n return Boolean(this.href) && !this.isDisabled\n }\n\n protected override getContentContainer(): Element | null {\n return this.querySelector('[data-sp-button-native]')\n }\n\n protected override isInternalNode(node: Node): boolean {\n if (node.nodeType !== Node.ELEMENT_NODE) {\n return false\n }\n\n const el = node as Element\n return (\n el.hasAttribute('data-sp-button-native') ||\n el.hasAttribute('data-sp-button-loading-label') ||\n el.hasAttribute('data-sp-button-label-fallback')\n )\n }\n\n protected override willUpdate(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n if (changedProperties.has('compact') && this.compact == null) {\n this.compact = false\n }\n\n if (changedProperties.has('disabled') && this.disabled == null) {\n this.disabled = false\n }\n\n if (changedProperties.has('fullWidth') && this.fullWidth == null) {\n this.fullWidth = false\n }\n\n if (changedProperties.has('iconOnly') && this.iconOnly == null) {\n this.iconOnly = false\n }\n\n if (changedProperties.has('loading') && this.loading == null) {\n this.loading = false\n }\n\n if (changedProperties.has('pill') && this.pill == null) {\n this.pill = false\n }\n\n if (\n changedProperties.has('variant') &&\n (this.variant == null || !isButtonVariant(this.variant))\n ) {\n this.variant = 'primary'\n }\n\n if (\n changedProperties.has('size') &&\n (this.size == null || !isInputSize(this.size))\n ) {\n this.size = 'md'\n }\n\n if (\n changedProperties.has('type') &&\n (this.type == null || !isButtonType(this.type))\n ) {\n this.type = 'button'\n }\n\n if (changedProperties.has('loadingLabel')) {\n if (this.loadingLabel == null || this.loadingLabel.trim() === '') {\n this.loadingLabel = 'Loading'\n }\n }\n\n if (changedProperties.has('value') && this.value == null) {\n this.value = ''\n }\n }\n\n private get buttonClasses(): string {\n const recipeClasses = getButtonClasses({\n ...interactionStates(this),\n compact: this.compact ?? false,\n disabled: this.isDisabled,\n fullWidth: this.fullWidth ?? false,\n iconOnly: this.iconOnly ?? false,\n loading: this.loading ?? false,\n pill: this.pill ?? false,\n size: this.size as ButtonSize,\n variant: this.variant as ButtonVariant\n })\n const utilityClasses = sanitizeUtilityClasses(this.innerClass)\n return utilityClasses ? `${recipeClasses} ${utilityClasses}` : recipeClasses\n }\n\n private get visibleLabelFallback(): string | undefined {\n const trimmedLabel = this.label?.trim()\n return trimmedLabel ? trimmedLabel : undefined\n }\n\n override focus(options?: FocusOptions): void {\n ;(\n this.getContentContainer() as HTMLButtonElement | HTMLAnchorElement | null\n )?.focus(options)\n }\n\n override blur(): void {\n ;(\n this.getContentContainer() as HTMLButtonElement | HTMLAnchorElement | null\n )?.blur()\n }\n\n private renderButtonContent(): TemplateResult | Node[] | typeof nothing {\n if (this.loading) {\n return html`<span\n class=\"${getInputLabelClasses({ disabled: this.isDisabled })}\"\n data-sp-button-loading-label\n >${this.loadingLabel}</span\n >`\n }\n\n if (this.hasProjectedContent) {\n return this.projectedContent\n }\n\n return this.visibleLabelFallback\n ? html`<span\n class=\"${getInputLabelClasses({ disabled: this.isDisabled })}\"\n data-sp-button-label-fallback\n >${this.visibleLabelFallback}</span\n >`\n : nothing\n }\n\n override render() {\n if (this.isLink) {\n return html`<a\n aria-busy=\"${this.loading ? 'true' : 'false'}\"\n aria-describedby=\"${ifDefined(this.forwardedAriaDescribedBy)}\"\n aria-label=\"${ifDefined(this.forwardedAriaLabel)}\"\n aria-labelledby=\"${ifDefined(this.forwardedAriaLabelledBy)}\"\n class=\"${this.buttonClasses}\"\n data-sp-button-native\n href=\"${ifDefined(this.href)}\"\n id=\"${ifDefined(this.id || undefined)}\"\n rel=\"${ifDefined(this.rel || undefined)}\"\n target=\"${ifDefined(this.target || undefined)}\"\n title=\"${ifDefined(this.title || undefined)}\"\n >\n ${this.renderButtonContent()}\n </a>`\n }\n\n return html`<button\n aria-busy=\"${this.loading ? 'true' : 'false'}\"\n aria-describedby=\"${ifDefined(this.forwardedAriaDescribedBy)}\"\n aria-label=\"${ifDefined(this.forwardedAriaLabel)}\"\n aria-labelledby=\"${ifDefined(this.forwardedAriaLabelledBy)}\"\n ?autofocus=\"${this.autofocus}\"\n aria-disabled=\"${ifDefined(this.href && this.isDisabled ? 'true' : undefined)}\"\n class=\"${this.buttonClasses}\"\n data-sp-button-native\n ?disabled=\"${this.isDisabled}\"\n form=\"${ifDefined(this.form || undefined)}\"\n id=\"${ifDefined(this.id || undefined)}\"\n name=\"${ifDefined(this.name || undefined)}\"\n title=\"${ifDefined(this.title || undefined)}\"\n type=\"${this.type}\"\n value=\"${ifDefined(this.value)}\"\n >\n ${this.renderButtonContent()}\n </button>`\n }\n}\n\nexport function defineSpectreButton(\n tagName = 'sp-button'\n): typeof SpectreButtonElement {\n const existingElement = customElements.get(tagName)\n\n if (existingElement) {\n return existingElement as unknown as typeof SpectreButtonElement\n }\n\n customElements.define(tagName, SpectreButtonElement)\n return SpectreButtonElement\n}\n","import { html, nothing, type TemplateResult } from 'lit'\nimport { live } from 'lit/directives/live.js'\nimport { ifDefined } from 'lit/directives/if-defined.js'\n\nimport { SpectreBaseElement } from '../../utils/base'\nimport { createUniqueId } from '../../utils/dom'\nimport {\n spectreInputSizes,\n isInputSize,\n type SpectreInputSize,\n spectreInputTypes,\n isInputType,\n type SpectreInputType,\n normalizeInt\n} from '../../utils/form'\n\nimport {\n interactionStateProperties,\n interactionStates,\n type SpectreInteractionStateProps\n} from '../../utils/states'\n\nimport {\n getInputClasses,\n getInputErrorMessageClasses,\n getInputHelperTextClasses,\n getInputLabelClasses,\n getInputWrapperClasses\n} from '@phcdevworks/spectre-ui'\n\nexport {\n spectreInputSizes,\n type SpectreInputSize,\n spectreInputTypes,\n type SpectreInputType\n}\n\nexport interface SpectreInputProps extends SpectreInteractionStateProps {\n ariaLabel?: string | null\n ariaLabelledBy?: string | null\n ariaDescribedBy?: string | null\n autocapitalize?: string | null | undefined\n autocomplete?: string | undefined\n autofocus?: boolean | null | undefined\n disabled?: boolean | undefined\n enterkeyhint?: string | undefined\n errorMessage?: string | undefined\n form?: string | undefined\n fullWidth?: boolean | undefined\n helperText?: string | undefined\n id?: string | null | undefined\n inputmode?: string | undefined\n invalid?: boolean | undefined\n label?: string | undefined\n list?: string | undefined\n loading?: boolean | undefined\n max?: string | undefined\n maxlength?: number | undefined\n min?: string | undefined\n minlength?: number | undefined\n name?: string | undefined\n pattern?: string | undefined\n pill?: boolean | undefined\n placeholder?: string | undefined\n readonly?: boolean | undefined\n required?: boolean | undefined\n size?: SpectreInputSize | undefined\n spellcheck?: boolean | null | undefined\n step?: string | undefined\n success?: boolean | undefined\n title?: string | null | undefined\n type?: SpectreInputType | undefined\n value?: string | undefined\n}\n\nexport class SpectreInputElement\n extends SpectreBaseElement\n implements SpectreInputProps\n{\n static properties = {\n ...interactionStateProperties,\n autocomplete: { type: String, reflect: true },\n disabled: { type: Boolean, reflect: true },\n enterkeyhint: { type: String, reflect: true },\n errorMessage: { attribute: 'error-message', type: String },\n helperText: { attribute: 'helper-text', type: String },\n label: { type: String },\n form: { type: String },\n fullWidth: { attribute: 'full-width', type: Boolean, reflect: true },\n inputmode: { type: String, reflect: true },\n invalid: { type: Boolean, reflect: true },\n list: { type: String, reflect: true },\n loading: { type: Boolean, reflect: true },\n max: { type: String, reflect: true },\n maxlength: { type: Number, reflect: true },\n min: { type: String, reflect: true },\n minlength: { type: Number, reflect: true },\n name: { type: String, reflect: true },\n pattern: { type: String, reflect: true },\n pill: { type: Boolean, reflect: true },\n placeholder: { type: String, reflect: true },\n readonly: { type: Boolean, reflect: true },\n required: { type: Boolean, reflect: true },\n size: { type: String, reflect: true },\n step: { type: String, reflect: true },\n success: { type: Boolean, reflect: true },\n type: { type: String, reflect: true },\n value: { type: String }\n }\n\n active: boolean | undefined = false\n focused: boolean | undefined = false\n hovered: boolean | undefined = false\n\n override get autocapitalize(): string {\n return super.autocapitalize\n }\n\n override set autocapitalize(value: string | null | undefined) {\n super.autocapitalize = value\n }\n\n override get autofocus(): boolean {\n return super.autofocus\n }\n\n override set autofocus(value: boolean | undefined | null) {\n super.autofocus = value\n }\n\n autocomplete: string | undefined\n disabled: boolean | undefined = false\n enterkeyhint: string | undefined\n form: string | undefined\n fullWidth: boolean | undefined = false\n\n override get id(): string {\n return super.id\n }\n\n override set id(value: string | null | undefined) {\n super.id = value\n }\n\n inputmode: string | undefined\n invalid: boolean | undefined = false\n list: string | undefined\n loading: boolean | undefined = false\n max: string | undefined\n maxlength: number | undefined\n min: string | undefined\n minlength: number | undefined\n name: string | undefined\n pattern: string | undefined\n pill: boolean | undefined = false\n placeholder: string | undefined\n readonly: boolean | undefined = false\n required: boolean | undefined = false\n size: SpectreInputSize | undefined = 'md'\n\n override get spellcheck(): boolean {\n return super.spellcheck\n }\n\n override set spellcheck(value: boolean | null | undefined) {\n super.spellcheck = value\n }\n\n step: string | undefined\n success: boolean | undefined = false\n\n override get title(): string {\n return super.title\n }\n\n override set title(value: string | null | undefined) {\n super.title = value\n }\n\n type: SpectreInputType | undefined = 'text'\n value: string | undefined = ''\n\n protected override willUpdate(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n if (changedProperties.has('disabled') && this.disabled == null) {\n this.disabled = false\n }\n\n if (changedProperties.has('fullWidth') && this.fullWidth == null) {\n this.fullWidth = false\n }\n\n if (changedProperties.has('invalid') && this.invalid == null) {\n this.invalid = false\n }\n\n if (changedProperties.has('loading') && this.loading == null) {\n this.loading = false\n }\n\n if (changedProperties.has('pill') && this.pill == null) {\n this.pill = false\n }\n\n if (changedProperties.has('readonly') && this.readonly == null) {\n this.readonly = false\n }\n\n if (changedProperties.has('required') && this.required == null) {\n this.required = false\n }\n\n if (changedProperties.has('success') && this.success == null) {\n this.success = false\n }\n\n if (\n changedProperties.has('size') &&\n (this.size == null || !isInputSize(this.size))\n ) {\n this.size = 'md'\n }\n\n if (\n changedProperties.has('type') &&\n (this.type == null || !isInputType(this.type))\n ) {\n this.type = 'text'\n }\n\n if (changedProperties.has('value') && this.value == null) {\n this.value = ''\n }\n\n if (changedProperties.has('maxlength')) {\n this.maxlength = normalizeInt(this.maxlength, undefined)\n }\n\n if (changedProperties.has('minlength')) {\n this.minlength = normalizeInt(this.minlength, undefined)\n }\n }\n\n private get inputClasses(): string {\n return getInputClasses({\n ...interactionStates(this),\n fullWidth: this.fullWidth ?? false,\n pill: this.pill ?? false,\n size: this.size as SpectreInputSize,\n state: this.isDisabled\n ? this.disabled\n ? 'disabled'\n : 'loading'\n : this.invalid || this.errorMessage\n ? 'error'\n : this.success\n ? 'success'\n : 'default'\n })\n }\n\n errorMessage: string | undefined = undefined\n helperText: string | undefined = undefined\n label: string | undefined = undefined\n\n private readonly generatedId = createUniqueId('sp-input')\n\n private get inputId(): string {\n return this.id || this.generatedId\n }\n\n private get hasFieldChrome(): boolean {\n return Boolean(this.label || this.helperText || this.errorMessage)\n }\n\n // An error message replaces the helper text while it is shown.\n private get messageId(): string | undefined {\n if (this.errorMessage) {\n return `${this.inputId}-error`\n }\n return this.helperText ? `${this.inputId}-helper` : undefined\n }\n\n private get describedBy(): string | undefined {\n const ids = [this.forwardedAriaDescribedBy, this.messageId].filter(Boolean)\n return ids.length > 0 ? ids.join(' ') : undefined\n }\n\n private get nativeInput(): HTMLInputElement | null {\n return this.querySelector('[data-sp-input-native]')\n }\n\n private handleInput(event: Event): void {\n const input = event.currentTarget as HTMLInputElement\n this.value = input.value\n }\n\n private handleChange(event: Event): void {\n const input = event.currentTarget as HTMLInputElement\n this.value = input.value\n }\n\n override focus(options?: FocusOptions): void {\n this.nativeInput?.focus(options)\n }\n\n override blur(): void {\n this.nativeInput?.blur()\n }\n\n private renderMessage(): TemplateResult | typeof nothing {\n if (this.errorMessage) {\n return html`<p\n aria-atomic=\"true\"\n aria-live=\"polite\"\n class=\"${getInputErrorMessageClasses()}\"\n id=\"${this.inputId}-error\"\n >\n ${this.errorMessage}\n </p>`\n }\n if (this.helperText) {\n return html`<p\n class=\"${getInputHelperTextClasses({ disabled: this.isDisabled })}\"\n id=\"${this.inputId}-helper\"\n >\n ${this.helperText}\n </p>`\n }\n return nothing\n }\n\n // Without a label or message the native input renders alone, as before.\n override render() {\n if (!this.hasFieldChrome) {\n return this.renderInput()\n }\n return html`<div class=\"${getInputWrapperClasses()}\" data-sp-input-wrapper>\n ${\n this.label\n ? html`<label\n class=\"${getInputLabelClasses({ disabled: this.isDisabled })}\"\n for=\"${this.inputId}\"\n >${this.label}</label\n >`\n : nothing\n }\n ${this.renderInput()} ${this.renderMessage()}\n </div>`\n }\n\n private renderInput(): TemplateResult {\n return html`<input\n aria-busy=\"${this.loading ? 'true' : 'false'}\"\n aria-describedby=\"${ifDefined(this.describedBy)}\"\n aria-invalid=\"${ifDefined(\n this.invalid || this.errorMessage ? 'true' : undefined\n )}\"\n aria-label=\"${ifDefined(this.forwardedAriaLabel)}\"\n aria-labelledby=\"${ifDefined(this.forwardedAriaLabelledBy)}\"\n autocapitalize=\"${ifDefined(this.autocapitalize || undefined)}\"\n autocomplete=\"${ifDefined(this.autocomplete || undefined)}\"\n ?autofocus=\"${this.autofocus}\"\n class=\"${this.inputClasses}\"\n data-sp-input-native\n ?disabled=\"${this.isDisabled}\"\n enterkeyhint=\"${ifDefined(this.enterkeyhint || undefined)}\"\n form=\"${ifDefined(this.form || undefined)}\"\n ?readonly=\"${this.readonly}\"\n ?required=\"${this.required}\"\n id=\"${ifDefined(this.hasFieldChrome ? this.inputId : this.id || undefined)}\"\n inputmode=\"${ifDefined(this.inputmode || undefined)}\"\n list=\"${ifDefined(this.list || undefined)}\"\n max=\"${ifDefined(this.max || undefined)}\"\n maxlength=\"${ifDefined(this.maxlength)}\"\n min=\"${ifDefined(this.min || undefined)}\"\n minlength=\"${ifDefined(this.minlength)}\"\n name=\"${ifDefined(this.name || undefined)}\"\n pattern=\"${ifDefined(this.pattern || undefined)}\"\n placeholder=\"${ifDefined(this.placeholder || undefined)}\"\n spellcheck=\"${ifDefined(this.getAttribute('spellcheck') ?? undefined)}\"\n step=\"${ifDefined(this.step || undefined)}\"\n title=\"${ifDefined(this.title || undefined)}\"\n type=\"${this.type}\"\n .value=\"${live(this.value)}\"\n @change=\"${this.handleChange}\"\n @input=\"${this.handleInput}\"\n />`\n }\n}\n\nexport function defineSpectreInput(\n tagName = 'sp-input'\n): typeof SpectreInputElement {\n const existingElement = customElements.get(tagName)\n\n if (existingElement) {\n return existingElement as unknown as typeof SpectreInputElement\n }\n\n customElements.define(tagName, SpectreInputElement)\n return SpectreInputElement\n}\n","import { html } from 'lit'\nimport { live } from 'lit/directives/live.js'\nimport { ifDefined } from 'lit/directives/if-defined.js'\n\nimport { SpectreBaseElement } from '../../utils/base'\nimport {\n isInputSize,\n type SpectreInputSize,\n normalizeInt\n} from '../../utils/form'\n\nimport { getTextareaClasses } from '@phcdevworks/spectre-ui'\n\nexport interface SpectreTextareaProps {\n focused?: boolean | undefined\n ariaLabel?: string | null\n ariaLabelledBy?: string | null\n ariaDescribedBy?: string | null\n autocapitalize?: string | null | undefined\n autocomplete?: string | undefined\n autofocus?: boolean | null | undefined\n disabled?: boolean | undefined\n enterkeyhint?: string | undefined\n form?: string | undefined\n fullWidth?: boolean | undefined\n id?: string | null | undefined\n inputmode?: string | undefined\n invalid?: boolean | undefined\n loading?: boolean | undefined\n maxlength?: number | undefined\n minlength?: number | undefined\n name?: string | undefined\n pill?: boolean | undefined\n placeholder?: string | undefined\n readonly?: boolean | undefined\n required?: boolean | undefined\n rows?: number | undefined\n size?: SpectreInputSize | undefined\n spellcheck?: boolean | null | undefined\n success?: boolean | undefined\n title?: string | null | undefined\n value?: string | undefined\n}\n\nconst DEFAULT_ROWS = 2\n\nexport class SpectreTextareaElement\n extends SpectreBaseElement\n implements SpectreTextareaProps\n{\n static properties = {\n focused: { type: Boolean, reflect: true },\n autocomplete: { type: String, reflect: true },\n disabled: { type: Boolean, reflect: true },\n enterkeyhint: { type: String, reflect: true },\n form: { type: String },\n fullWidth: { attribute: 'full-width', type: Boolean, reflect: true },\n inputmode: { type: String, reflect: true },\n invalid: { type: Boolean, reflect: true },\n loading: { type: Boolean, reflect: true },\n maxlength: { type: Number, reflect: true },\n minlength: { type: Number, reflect: true },\n name: { type: String, reflect: true },\n pill: { type: Boolean, reflect: true },\n placeholder: { type: String, reflect: true },\n readonly: { type: Boolean, reflect: true },\n required: { type: Boolean, reflect: true },\n rows: { type: Number, reflect: true },\n size: { type: String, reflect: true },\n success: { type: Boolean, reflect: true },\n value: { type: String }\n }\n\n focused: boolean | undefined = false\n\n override get autocapitalize(): string {\n return super.autocapitalize\n }\n\n override set autocapitalize(value: string | null | undefined) {\n super.autocapitalize = value\n }\n\n override get autofocus(): boolean {\n return super.autofocus\n }\n\n override set autofocus(value: boolean | undefined | null) {\n super.autofocus = value\n }\n\n autocomplete: string | undefined\n disabled: boolean | undefined = false\n enterkeyhint: string | undefined\n form: string | undefined\n fullWidth: boolean | undefined = false\n\n override get id(): string {\n return super.id\n }\n\n override set id(value: string | null | undefined) {\n super.id = value\n }\n\n inputmode: string | undefined\n invalid: boolean | undefined = false\n loading: boolean | undefined = false\n maxlength: number | undefined\n minlength: number | undefined\n name: string | undefined\n pill: boolean | undefined = false\n placeholder: string | undefined\n readonly: boolean | undefined = false\n required: boolean | undefined = false\n rows: number | undefined = DEFAULT_ROWS\n size: SpectreInputSize | undefined = 'md'\n\n override get spellcheck(): boolean {\n return super.spellcheck\n }\n\n override set spellcheck(value: boolean | null | undefined) {\n super.spellcheck = value\n }\n\n success: boolean | undefined = false\n\n override get title(): string {\n return super.title\n }\n\n override set title(value: string | null | undefined) {\n super.title = value\n }\n\n value: string | undefined = ''\n\n protected override willUpdate(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n if (changedProperties.has('disabled') && this.disabled == null) {\n this.disabled = false\n }\n\n if (changedProperties.has('fullWidth') && this.fullWidth == null) {\n this.fullWidth = false\n }\n\n if (changedProperties.has('invalid') && this.invalid == null) {\n this.invalid = false\n }\n\n if (changedProperties.has('loading') && this.loading == null) {\n this.loading = false\n }\n\n if (changedProperties.has('pill') && this.pill == null) {\n this.pill = false\n }\n\n if (changedProperties.has('readonly') && this.readonly == null) {\n this.readonly = false\n }\n\n if (changedProperties.has('required') && this.required == null) {\n this.required = false\n }\n\n if (changedProperties.has('success') && this.success == null) {\n this.success = false\n }\n\n if (\n changedProperties.has('size') &&\n (this.size == null || !isInputSize(this.size))\n ) {\n this.size = 'md'\n }\n\n if (changedProperties.has('rows')) {\n this.rows = normalizeInt(this.rows, DEFAULT_ROWS, 1) as number\n }\n\n if (changedProperties.has('value') && this.value == null) {\n this.value = ''\n }\n\n if (changedProperties.has('maxlength')) {\n this.maxlength = normalizeInt(this.maxlength, undefined)\n }\n\n if (changedProperties.has('minlength')) {\n this.minlength = normalizeInt(this.minlength, undefined)\n }\n }\n\n private get textareaClasses(): string {\n return getTextareaClasses({\n focused: this.focused ?? false,\n fullWidth: this.fullWidth ?? false,\n pill: this.pill ?? false,\n size: this.size as SpectreInputSize,\n disabled: this.disabled ?? false,\n loading: this.loading ?? false,\n state: this.invalid ? 'invalid' : this.success ? 'success' : 'default'\n })\n }\n\n private get nativeTextarea(): HTMLTextAreaElement | null {\n return this.querySelector('[data-sp-textarea-native]')\n }\n\n private handleInput(event: Event): void {\n const textarea = event.currentTarget as HTMLTextAreaElement\n this.value = textarea.value\n }\n\n private handleChange(event: Event): void {\n const textarea = event.currentTarget as HTMLTextAreaElement\n this.value = textarea.value\n }\n\n override focus(options?: FocusOptions): void {\n this.nativeTextarea?.focus(options)\n }\n\n override blur(): void {\n this.nativeTextarea?.blur()\n }\n\n override render() {\n return html`<textarea\n aria-busy=\"${this.loading ? 'true' : 'false'}\"\n aria-describedby=\"${ifDefined(this.forwardedAriaDescribedBy)}\"\n aria-invalid=\"${ifDefined(this.invalid ? 'true' : undefined)}\"\n aria-label=\"${ifDefined(this.forwardedAriaLabel)}\"\n aria-labelledby=\"${ifDefined(this.forwardedAriaLabelledBy)}\"\n autocapitalize=\"${ifDefined(this.autocapitalize || undefined)}\"\n autocomplete=\"${ifDefined(this.autocomplete || undefined)}\"\n ?autofocus=\"${this.autofocus}\"\n class=\"${this.textareaClasses}\"\n data-sp-textarea-native\n ?disabled=\"${this.isDisabled}\"\n enterkeyhint=\"${ifDefined(this.enterkeyhint || undefined)}\"\n form=\"${ifDefined(this.form || undefined)}\"\n inputmode=\"${ifDefined(this.inputmode || undefined)}\"\n ?readonly=\"${this.readonly}\"\n ?required=\"${this.required}\"\n id=\"${ifDefined(this.id || undefined)}\"\n maxlength=\"${ifDefined(this.maxlength)}\"\n minlength=\"${ifDefined(this.minlength)}\"\n name=\"${ifDefined(this.name || undefined)}\"\n placeholder=\"${ifDefined(this.placeholder || undefined)}\"\n rows=\"${this.rows}\"\n spellcheck=\"${ifDefined(this.getAttribute('spellcheck') ?? undefined)}\"\n title=\"${ifDefined(this.title || undefined)}\"\n .value=\"${live(this.value)}\"\n @change=\"${this.handleChange}\"\n @input=\"${this.handleInput}\"\n ></textarea>`\n }\n}\n\nexport function defineSpectreTextarea(\n tagName = 'sp-textarea'\n): typeof SpectreTextareaElement {\n const existingElement = customElements.get(tagName)\n\n if (existingElement) {\n return existingElement as unknown as typeof SpectreTextareaElement\n }\n\n customElements.define(tagName, SpectreTextareaElement)\n return SpectreTextareaElement\n}\n","import { html, nothing } from 'lit'\nimport { live } from 'lit/directives/live.js'\nimport { ifDefined } from 'lit/directives/if-defined.js'\n\nimport { SpectreProjectableElement } from '../../utils/projectable'\nimport { isInputSize, type SpectreInputSize } from '../../utils/form'\n\nimport { getSelectClasses } from '@phcdevworks/spectre-ui'\n\nexport interface SpectreSelectProps {\n focused?: boolean | undefined\n ariaLabel?: string | null\n ariaLabelledBy?: string | null\n ariaDescribedBy?: string | null\n autocapitalize?: string | null | undefined\n autocomplete?: string | undefined\n autofocus?: boolean | null | undefined\n disabled?: boolean | undefined\n form?: string | undefined\n fullWidth?: boolean | undefined\n id?: string | null | undefined\n invalid?: boolean | undefined\n loading?: boolean | undefined\n name?: string | undefined\n pill?: boolean | undefined\n required?: boolean | undefined\n size?: SpectreInputSize | undefined\n spellcheck?: boolean | null | undefined\n success?: boolean | undefined\n title?: string | null | undefined\n value?: string | undefined\n}\n\nexport class SpectreSelectElement\n extends SpectreProjectableElement\n implements SpectreSelectProps\n{\n static properties = {\n focused: { type: Boolean, reflect: true },\n autocomplete: { type: String, reflect: true },\n disabled: { type: Boolean, reflect: true },\n form: { type: String },\n fullWidth: { attribute: 'full-width', type: Boolean, reflect: true },\n invalid: { type: Boolean, reflect: true },\n loading: { type: Boolean, reflect: true },\n name: { type: String, reflect: true },\n pill: { type: Boolean, reflect: true },\n required: { type: Boolean, reflect: true },\n size: { type: String, reflect: true },\n success: { type: Boolean, reflect: true },\n value: { type: String }\n }\n\n focused: boolean | undefined = false\n\n autocomplete: string | undefined\n disabled: boolean | undefined = false\n form: string | undefined\n fullWidth: boolean | undefined = false\n invalid: boolean | undefined = false\n loading: boolean | undefined = false\n name: string | undefined\n pill: boolean | undefined = false\n required: boolean | undefined = false\n size: SpectreInputSize | undefined = 'md'\n success: boolean | undefined = false\n\n override get id(): string {\n return super.id\n }\n\n override set id(value: string | null | undefined) {\n super.id = value\n }\n\n override get title(): string {\n return super.title\n }\n\n override set title(value: string | null | undefined) {\n super.title = value\n }\n\n override get autocapitalize(): string {\n return super.autocapitalize\n }\n\n override set autocapitalize(value: string | null | undefined) {\n super.autocapitalize = value\n }\n\n override get autofocus(): boolean {\n return super.autofocus\n }\n\n override set autofocus(value: boolean | undefined | null) {\n super.autofocus = value\n }\n\n override get spellcheck(): boolean {\n return super.spellcheck\n }\n\n override set spellcheck(value: boolean | null | undefined) {\n super.spellcheck = value\n }\n\n value: string | undefined = ''\n\n protected override getContentContainer(): Element | null {\n return this.querySelector('[data-sp-select-native]')\n }\n\n protected override isInternalNode(node: Node): boolean {\n if (node.nodeType !== Node.ELEMENT_NODE) {\n return false\n }\n\n const el = node as Element\n return el.hasAttribute('data-sp-select-native')\n }\n\n protected override willUpdate(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n if (changedProperties.has('disabled') && this.disabled == null) {\n this.disabled = false\n }\n\n if (changedProperties.has('fullWidth') && this.fullWidth == null) {\n this.fullWidth = false\n }\n\n if (changedProperties.has('invalid') && this.invalid == null) {\n this.invalid = false\n }\n\n if (changedProperties.has('loading') && this.loading == null) {\n this.loading = false\n }\n\n if (changedProperties.has('pill') && this.pill == null) {\n this.pill = false\n }\n\n if (changedProperties.has('required') && this.required == null) {\n this.required = false\n }\n\n if (changedProperties.has('success') && this.success == null) {\n this.success = false\n }\n\n if (\n changedProperties.has('size') &&\n (this.size == null || !isInputSize(this.size))\n ) {\n this.size = 'md'\n }\n\n if (changedProperties.has('value') && this.value == null) {\n this.value = ''\n }\n }\n\n protected override updated(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n super.updated(changedProperties)\n\n const nativeSelect = this.getContentContainer() as HTMLSelectElement | null\n if (!nativeSelect) {\n return\n }\n\n const valueChanged = changedProperties.has('value')\n const oldValue = changedProperties.get('value')\n\n if (\n valueChanged &&\n this.value !== undefined &&\n (this.value !== '' ||\n oldValue !== undefined ||\n this.hasAttribute('value'))\n ) {\n if (nativeSelect.value !== this.value) {\n nativeSelect.value = this.value\n }\n }\n\n if (this.value === '' && !this.hasAttribute('value')) {\n const nativeValue = nativeSelect.value ?? ''\n if (nativeValue !== '' && nativeValue !== this.value) {\n this.updateComplete.then(() => {\n if (this.value === '' && !this.hasAttribute('value')) {\n this.value = nativeValue\n }\n })\n }\n }\n }\n\n private get selectClasses(): string {\n return getSelectClasses({\n focused: this.focused ?? false,\n fullWidth: this.fullWidth ?? false,\n pill: this.pill ?? false,\n size: this.size as SpectreInputSize,\n disabled: this.disabled ?? false,\n loading: this.loading ?? false,\n state: this.invalid ? 'invalid' : this.success ? 'success' : 'default'\n })\n }\n\n private handleInput(event: Event): void {\n const select = event.currentTarget as HTMLSelectElement\n this.value = select.value\n }\n\n private handleChange(event: Event): void {\n const select = event.currentTarget as HTMLSelectElement\n this.value = select.value\n }\n\n override focus(options?: FocusOptions): void {\n ;(this.getContentContainer() as HTMLSelectElement | null)?.focus(options)\n }\n\n override blur(): void {\n ;(this.getContentContainer() as HTMLSelectElement | null)?.blur()\n }\n\n override render() {\n return html`<select\n aria-busy=\"${this.loading ? 'true' : 'false'}\"\n aria-describedby=\"${ifDefined(this.forwardedAriaDescribedBy)}\"\n aria-invalid=\"${ifDefined(this.invalid ? 'true' : undefined)}\"\n aria-label=\"${ifDefined(this.forwardedAriaLabel)}\"\n aria-labelledby=\"${ifDefined(this.forwardedAriaLabelledBy)}\"\n autocapitalize=\"${ifDefined(this.autocapitalize || undefined)}\"\n autocomplete=\"${ifDefined(this.autocomplete || undefined)}\"\n ?autofocus=\"${this.autofocus}\"\n class=\"${this.selectClasses}\"\n data-sp-select-native\n ?disabled=\"${this.isDisabled}\"\n form=\"${ifDefined(this.form || undefined)}\"\n id=\"${ifDefined(this.id || undefined)}\"\n name=\"${ifDefined(this.name || undefined)}\"\n ?required=\"${this.required}\"\n spellcheck=\"${ifDefined(this.getAttribute('spellcheck') ?? undefined)}\"\n title=\"${ifDefined(this.title || undefined)}\"\n .value=\"${live(this.value)}\"\n @change=\"${this.handleChange}\"\n @input=\"${this.handleInput}\"\n >\n ${this.hasProjectedContent ? this.projectedContent : nothing}\n </select>`\n }\n}\n\nexport function defineSpectreSelect(\n tagName = 'sp-select'\n): typeof SpectreSelectElement {\n const existingElement = customElements.get(tagName)\n\n if (existingElement) {\n return existingElement as unknown as typeof SpectreSelectElement\n }\n\n customElements.define(tagName, SpectreSelectElement)\n return SpectreSelectElement\n}\n","import { html, nothing } from 'lit'\nimport { live } from 'lit/directives/live.js'\nimport { ifDefined } from 'lit/directives/if-defined.js'\n\nimport { SpectreProjectableElement } from '../../utils/projectable'\n\nimport {\n getCheckboxClasses,\n getInputLabelClasses\n} from '@phcdevworks/spectre-ui'\n\nexport interface SpectreCheckboxProps {\n ariaLabel?: string | null\n ariaLabelledBy?: string | null\n ariaDescribedBy?: string | null\n autofocus?: boolean | null | undefined\n checked?: boolean | undefined\n disabled?: boolean | undefined\n form?: string | undefined\n id?: string | null | undefined\n invalid?: boolean | undefined\n loading?: boolean | undefined\n label?: string | undefined\n name?: string | undefined\n required?: boolean | undefined\n success?: boolean | undefined\n title?: string | null | undefined\n value?: string | undefined\n}\n\nexport class SpectreCheckboxElement\n extends SpectreProjectableElement\n implements SpectreCheckboxProps\n{\n static properties = {\n checked: { type: Boolean, reflect: true },\n disabled: { type: Boolean, reflect: true },\n form: { type: String },\n invalid: { type: Boolean, reflect: true },\n loading: { type: Boolean, reflect: true },\n label: { type: String, reflect: true },\n name: { type: String, reflect: true },\n required: { type: Boolean, reflect: true },\n success: { type: Boolean, reflect: true },\n value: { type: String }\n }\n\n checked: boolean | undefined = false\n disabled: boolean | undefined = false\n form: string | undefined\n invalid: boolean | undefined = false\n loading: boolean | undefined = false\n label: string | undefined\n name: string | undefined\n required: boolean | undefined = false\n success: boolean | undefined = false\n\n override get id(): string {\n return super.id\n }\n\n override set id(value: string | null | undefined) {\n super.id = value\n }\n\n override get title(): string {\n return super.title\n }\n\n override set title(value: string | null | undefined) {\n super.title = value\n }\n\n override get autofocus(): boolean {\n return super.autofocus\n }\n\n override set autofocus(value: boolean | undefined | null) {\n super.autofocus = value\n }\n\n value: string | undefined = 'on'\n\n protected override getContentContainer(): Element | null {\n return this.querySelector('[data-sp-checkbox-label]')\n }\n\n protected override isInternalNode(node: Node): boolean {\n if (node.nodeType !== Node.ELEMENT_NODE) {\n return false\n }\n\n const el = node as Element\n return (\n el.hasAttribute('data-sp-checkbox-label') ||\n el.hasAttribute('data-sp-checkbox-native') ||\n el.hasAttribute('data-sp-checkbox-label-fallback') ||\n el.hasAttribute('data-sp-checkbox-indicator')\n )\n }\n\n protected override willUpdate(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n if (changedProperties.has('checked') && this.checked == null) {\n this.checked = false\n }\n\n if (changedProperties.has('disabled') && this.disabled == null) {\n this.disabled = false\n }\n\n if (changedProperties.has('invalid') && this.invalid == null) {\n this.invalid = false\n }\n\n if (changedProperties.has('loading') && this.loading == null) {\n this.loading = false\n }\n\n if (changedProperties.has('required') && this.required == null) {\n this.required = false\n }\n\n if (changedProperties.has('success') && this.success == null) {\n this.success = false\n }\n\n if (changedProperties.has('value') && this.value == null) {\n this.value = 'on'\n }\n }\n\n private get nativeInput(): HTMLInputElement | null {\n return this.querySelector('[data-sp-checkbox-native]')\n }\n\n private get visibleLabelFallback(): string | undefined {\n const trimmedLabel = this.label?.trim()\n return trimmedLabel ? trimmedLabel : undefined\n }\n\n private handleInput(event: Event): void {\n const input = event.currentTarget as HTMLInputElement\n this.checked = input.checked\n }\n\n private handleChange(event: Event): void {\n const input = event.currentTarget as HTMLInputElement\n this.checked = input.checked\n }\n\n override focus(options?: FocusOptions): void {\n this.nativeInput?.focus(options)\n }\n\n override blur(): void {\n this.nativeInput?.blur()\n }\n\n override render() {\n const labelContent = this.hasProjectedContent\n ? this.projectedContent\n : this.visibleLabelFallback\n ? html`<span\n class=\"${getInputLabelClasses({ disabled: this.isDisabled })}\"\n data-sp-checkbox-label-fallback\n >${this.visibleLabelFallback}</span\n >`\n : nothing\n\n return html`<label data-sp-checkbox-label>\n <input\n aria-busy=\"${this.loading ? 'true' : 'false'}\"\n aria-describedby=\"${ifDefined(this.forwardedAriaDescribedBy)}\"\n aria-invalid=\"${ifDefined(this.invalid ? 'true' : undefined)}\"\n aria-label=\"${ifDefined(this.forwardedAriaLabel)}\"\n aria-labelledby=\"${ifDefined(this.forwardedAriaLabelledBy)}\"\n ?autofocus=\"${this.autofocus}\"\n data-sp-checkbox-native\n .checked=\"${live(this.checked)}\"\n ?disabled=\"${this.isDisabled}\"\n form=\"${ifDefined(this.form || undefined)}\"\n id=\"${ifDefined(this.id || undefined)}\"\n name=\"${ifDefined(this.name || undefined)}\"\n ?required=\"${this.required}\"\n title=\"${ifDefined(this.title || undefined)}\"\n type=\"checkbox\"\n value=\"${ifDefined(this.value)}\"\n @change=\"${this.handleChange}\"\n @input=\"${this.handleInput}\"\n />\n <span\n class=\"${getCheckboxClasses({ checked: this.checked ?? false, disabled: this.isDisabled })}\"\n data-sp-checkbox-indicator\n ></span>\n ${labelContent}\n </label>`\n }\n}\n\nexport function defineSpectreCheckbox(\n tagName = 'sp-checkbox'\n): typeof SpectreCheckboxElement {\n const existingElement = customElements.get(tagName)\n\n if (existingElement) {\n return existingElement as unknown as typeof SpectreCheckboxElement\n }\n\n customElements.define(tagName, SpectreCheckboxElement)\n return SpectreCheckboxElement\n}\n","import { html, nothing } from 'lit'\nimport { live } from 'lit/directives/live.js'\nimport { ifDefined } from 'lit/directives/if-defined.js'\n\nimport { SpectreProjectableElement } from '../../utils/projectable'\n\nimport { getInputLabelClasses, getRadioClasses } from '@phcdevworks/spectre-ui'\n\nexport interface SpectreRadioProps {\n ariaLabel?: string | null\n ariaLabelledBy?: string | null\n ariaDescribedBy?: string | null\n autofocus?: boolean | null | undefined\n checked?: boolean | undefined\n disabled?: boolean | undefined\n form?: string | undefined\n id?: string | null | undefined\n invalid?: boolean | undefined\n loading?: boolean | undefined\n label?: string | undefined\n name?: string | undefined\n required?: boolean | undefined\n success?: boolean | undefined\n title?: string | null | undefined\n value?: string | undefined\n}\n\nexport class SpectreRadioElement\n extends SpectreProjectableElement\n implements SpectreRadioProps\n{\n static properties = {\n checked: { type: Boolean, reflect: true },\n disabled: { type: Boolean, reflect: true },\n form: { type: String },\n invalid: { type: Boolean, reflect: true },\n loading: { type: Boolean, reflect: true },\n label: { type: String, reflect: true },\n name: { type: String, reflect: true },\n required: { type: Boolean, reflect: true },\n success: { type: Boolean, reflect: true },\n value: { type: String }\n }\n\n checked: boolean | undefined = false\n disabled: boolean | undefined = false\n form: string | undefined\n invalid: boolean | undefined = false\n loading: boolean | undefined = false\n label: string | undefined\n name: string | undefined\n required: boolean | undefined = false\n success: boolean | undefined = false\n\n override get id(): string {\n return super.id\n }\n\n override set id(value: string | null | undefined) {\n super.id = value\n }\n\n override get title(): string {\n return super.title\n }\n\n override set title(value: string | null | undefined) {\n super.title = value\n }\n\n override get autofocus(): boolean {\n return super.autofocus\n }\n\n override set autofocus(value: boolean | undefined | null) {\n super.autofocus = value\n }\n\n value: string | undefined = 'on'\n\n protected override getContentContainer(): Element | null {\n return this.querySelector('[data-sp-radio-label]')\n }\n\n protected override isInternalNode(node: Node): boolean {\n if (node.nodeType !== Node.ELEMENT_NODE) {\n return false\n }\n\n const el = node as Element\n return (\n el.hasAttribute('data-sp-radio-label') ||\n el.hasAttribute('data-sp-radio-native') ||\n el.hasAttribute('data-sp-radio-label-fallback') ||\n el.hasAttribute('data-sp-radio-indicator')\n )\n }\n\n protected override willUpdate(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n if (changedProperties.has('checked') && this.checked == null) {\n this.checked = false\n }\n\n if (changedProperties.has('disabled') && this.disabled == null) {\n this.disabled = false\n }\n\n if (changedProperties.has('invalid') && this.invalid == null) {\n this.invalid = false\n }\n\n if (changedProperties.has('loading') && this.loading == null) {\n this.loading = false\n }\n\n if (changedProperties.has('required') && this.required == null) {\n this.required = false\n }\n\n if (changedProperties.has('success') && this.success == null) {\n this.success = false\n }\n\n if (changedProperties.has('value') && this.value == null) {\n this.value = 'on'\n }\n }\n\n private get nativeInput(): HTMLInputElement | null {\n return this.querySelector('[data-sp-radio-native]')\n }\n\n private get visibleLabelFallback(): string | undefined {\n const trimmedLabel = this.label?.trim()\n return trimmedLabel ? trimmedLabel : undefined\n }\n\n private handleInput(event: Event): void {\n const input = event.currentTarget as HTMLInputElement\n this.checked = input.checked\n }\n\n private handleChange(event: Event): void {\n const input = event.currentTarget as HTMLInputElement\n this.checked = input.checked\n }\n\n protected override updated(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n super.updated(changedProperties)\n\n if (\n (changedProperties.has('checked') ||\n changedProperties.has('name') ||\n changedProperties.has('form')) &&\n this.checked &&\n this.name\n ) {\n this.syncGroup()\n }\n }\n\n private syncGroup(): void {\n if (!this.name || !this.checked) {\n return\n }\n\n const root = this.getRootNode() as ShadowRoot | Document\n const radios = root.querySelectorAll(\n 'sp-radio'\n ) as NodeListOf<SpectreRadioElement>\n\n const form = this.nativeInput?.form\n radios.forEach((radio) => {\n if (\n radio !== this &&\n radio.name === this.name &&\n radio.nativeInput?.form === form &&\n radio.checked\n ) {\n radio.checked = false\n }\n })\n }\n\n override focus(options?: FocusOptions): void {\n this.nativeInput?.focus(options)\n }\n\n override blur(): void {\n this.nativeInput?.blur()\n }\n\n override render() {\n const labelContent = this.hasProjectedContent\n ? this.projectedContent\n : this.visibleLabelFallback\n ? html`<span\n class=\"${getInputLabelClasses({ disabled: this.isDisabled })}\"\n data-sp-radio-label-fallback\n >${this.visibleLabelFallback}</span\n >`\n : nothing\n\n return html`<label data-sp-radio-label>\n <input\n aria-busy=\"${this.loading ? 'true' : 'false'}\"\n aria-describedby=\"${ifDefined(this.forwardedAriaDescribedBy)}\"\n aria-invalid=\"${ifDefined(this.invalid ? 'true' : undefined)}\"\n aria-label=\"${ifDefined(this.forwardedAriaLabel)}\"\n aria-labelledby=\"${ifDefined(this.forwardedAriaLabelledBy)}\"\n ?autofocus=\"${this.autofocus}\"\n data-sp-radio-native\n .checked=\"${live(this.checked)}\"\n ?disabled=\"${this.isDisabled}\"\n form=\"${ifDefined(this.form || undefined)}\"\n id=\"${ifDefined(this.id || undefined)}\"\n name=\"${ifDefined(this.name || undefined)}\"\n ?required=\"${this.required}\"\n title=\"${ifDefined(this.title || undefined)}\"\n type=\"radio\"\n value=\"${ifDefined(this.value)}\"\n @change=\"${this.handleChange}\"\n @input=\"${this.handleInput}\"\n />\n <span\n class=\"${getRadioClasses({ checked: this.checked ?? false, disabled: this.isDisabled })}\"\n data-sp-radio-indicator\n ></span>\n ${labelContent}\n </label>`\n }\n}\n\nexport function defineSpectreRadio(\n tagName = 'sp-radio'\n): typeof SpectreRadioElement {\n const existingElement = customElements.get(tagName)\n\n if (existingElement) {\n return existingElement as unknown as typeof SpectreRadioElement\n }\n\n customElements.define(tagName, SpectreRadioElement)\n return SpectreRadioElement\n}\n","import { html, nothing } from 'lit'\nimport { ifDefined } from 'lit/directives/if-defined.js'\n\nimport { SpectreProjectableElement } from '../../utils/projectable'\n\nimport { getLabelClasses } from '@phcdevworks/spectre-ui'\n\nexport interface SpectreLabelProps {\n ariaLabel?: string | null\n ariaLabelledBy?: string | null\n ariaDescribedBy?: string | null\n disabled?: boolean | undefined\n id?: string | null | undefined\n htmlFor?: string | undefined\n required?: boolean | undefined\n title?: string | null | undefined\n}\n\nexport class SpectreLabelElement\n extends SpectreProjectableElement\n implements SpectreLabelProps\n{\n static properties = {\n disabled: { type: Boolean, reflect: true },\n htmlFor: { attribute: 'for', type: String, reflect: true },\n required: { type: Boolean, reflect: true }\n }\n\n disabled: boolean | undefined = false\n htmlFor: string | undefined\n required: boolean | undefined = false\n\n protected override willUpdate(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n if (changedProperties.has('disabled') && this.disabled == null) {\n this.disabled = false\n }\n\n if (changedProperties.has('required') && this.required == null) {\n this.required = false\n }\n }\n\n protected override get isDisabled(): boolean {\n return this.disabled ?? false\n }\n\n override get id(): string {\n return super.id\n }\n\n override set id(value: string | null | undefined) {\n super.id = value\n }\n\n override get title(): string {\n return super.title\n }\n\n override set title(value: string | null | undefined) {\n super.title = value\n }\n\n protected override getContentContainer(): Element | null {\n return this.querySelector('[data-sp-label-native]')\n }\n\n protected override isInternalNode(node: Node): boolean {\n if (node.nodeType !== Node.ELEMENT_NODE) {\n return false\n }\n\n const el = node as Element\n return el.hasAttribute('data-sp-label-native')\n }\n\n override focus(options?: FocusOptions): void {\n ;(this.getContentContainer() as HTMLLabelElement | null)?.focus(options)\n }\n\n override blur(): void {\n ;(this.getContentContainer() as HTMLLabelElement | null)?.blur()\n }\n\n override render() {\n return html`<label\n aria-describedby=\"${ifDefined(this.forwardedAriaDescribedBy)}\"\n aria-label=\"${ifDefined(this.forwardedAriaLabel)}\"\n aria-labelledby=\"${ifDefined(this.forwardedAriaLabelledBy)}\"\n class=\"${getLabelClasses({ disabled: this.isDisabled, required: this.required ?? false })}\"\n data-sp-label-native\n for=\"${ifDefined(this.htmlFor || undefined)}\"\n id=\"${ifDefined(this.id || undefined)}\"\n title=\"${ifDefined(this.title || undefined)}\"\n >\n ${this.hasProjectedContent ? this.projectedContent : nothing}\n </label>`\n }\n}\n\nexport function defineSpectreLabel(\n tagName = 'sp-label'\n): typeof SpectreLabelElement {\n const existingElement = customElements.get(tagName)\n\n if (existingElement) {\n return existingElement as unknown as typeof SpectreLabelElement\n }\n\n customElements.define(tagName, SpectreLabelElement)\n return SpectreLabelElement\n}\n","import { html, nothing } from 'lit'\nimport { ifDefined } from 'lit/directives/if-defined.js'\n\nimport { SpectreProjectableElement } from '../../utils/projectable'\n\nimport {\n getFieldsetClasses,\n getFieldsetLegendClasses\n} from '@phcdevworks/spectre-ui'\n\nexport interface SpectreFieldsetProps {\n ariaLabel?: string | null\n ariaLabelledBy?: string | null\n ariaDescribedBy?: string | null\n autocapitalize?: string | null | undefined\n autofocus?: boolean | null | undefined\n disabled?: boolean | undefined\n form?: string | undefined\n id?: string | null | undefined\n invalid?: boolean | undefined\n legend?: string | undefined\n loading?: boolean | undefined\n name?: string | undefined\n spellcheck?: boolean | null | undefined\n success?: boolean | undefined\n title?: string | null | undefined\n}\n\nexport class SpectreFieldsetElement\n extends SpectreProjectableElement\n implements SpectreFieldsetProps\n{\n static properties = {\n disabled: { type: Boolean, reflect: true },\n form: { type: String },\n invalid: { type: Boolean, reflect: true },\n legend: { type: String, reflect: true },\n loading: { type: Boolean, reflect: true },\n name: { type: String, reflect: true },\n success: { type: Boolean, reflect: true }\n }\n\n disabled: boolean | undefined = false\n form: string | undefined\n invalid: boolean | undefined = false\n legend: string | undefined\n loading: boolean | undefined = false\n name: string | undefined\n success: boolean | undefined = false\n\n override get id(): string {\n return super.id\n }\n\n override set id(value: string | null | undefined) {\n super.id = value\n }\n\n override get title(): string {\n return super.title\n }\n\n override set title(value: string | null | undefined) {\n super.title = value\n }\n\n override get autocapitalize(): string {\n return super.autocapitalize\n }\n\n override set autocapitalize(value: string | null | undefined) {\n super.autocapitalize = value\n }\n\n override get autofocus(): boolean {\n return super.autofocus\n }\n\n override set autofocus(value: boolean | undefined | null) {\n super.autofocus = value\n }\n\n override get spellcheck(): boolean {\n return super.spellcheck\n }\n\n override set spellcheck(value: boolean | null | undefined) {\n super.spellcheck = value\n }\n\n private get visibleLegend(): string | undefined {\n const trimmedLegend = this.legend?.trim()\n return trimmedLegend ? trimmedLegend : undefined\n }\n\n protected override getContentContainer(): Element | null {\n return this.querySelector('[data-sp-fieldset-native]')\n }\n\n protected override isInternalNode(node: Node): boolean {\n if (node.nodeType !== Node.ELEMENT_NODE) {\n return false\n }\n\n const el = node as Element\n return (\n el.hasAttribute('data-sp-fieldset-native') ||\n el.hasAttribute('data-sp-fieldset-legend')\n )\n }\n\n protected override willUpdate(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n if (changedProperties.has('disabled') && this.disabled == null) {\n this.disabled = false\n }\n\n if (changedProperties.has('invalid') && this.invalid == null) {\n this.invalid = false\n }\n\n if (changedProperties.has('loading') && this.loading == null) {\n this.loading = false\n }\n\n if (changedProperties.has('success') && this.success == null) {\n this.success = false\n }\n }\n\n override focus(options?: FocusOptions): void {\n ;(this.getContentContainer() as HTMLFieldSetElement | null)?.focus(options)\n }\n\n override blur(): void {\n ;(this.getContentContainer() as HTMLFieldSetElement | null)?.blur()\n }\n\n override render() {\n const legendClasses = getFieldsetLegendClasses()\n const legendContent = this.visibleLegend\n ? html`<legend class=\"${legendClasses}\" data-sp-fieldset-legend>\n ${this.visibleLegend}\n </legend>`\n : nothing\n\n return html`<fieldset\n aria-busy=\"${this.loading ? 'true' : 'false'}\"\n aria-describedby=\"${ifDefined(this.forwardedAriaDescribedBy)}\"\n aria-invalid=\"${ifDefined(this.invalid ? 'true' : undefined)}\"\n aria-label=\"${ifDefined(this.forwardedAriaLabel)}\"\n aria-labelledby=\"${ifDefined(this.forwardedAriaLabelledBy)}\"\n autocapitalize=\"${ifDefined(this.autocapitalize || undefined)}\"\n ?autofocus=\"${this.autofocus}\"\n class=\"${getFieldsetClasses({ disabled: this.isDisabled })}\"\n data-sp-fieldset-native\n ?disabled=\"${this.isDisabled}\"\n form=\"${ifDefined(this.form || undefined)}\"\n id=\"${ifDefined(this.id || undefined)}\"\n name=\"${ifDefined(this.name || undefined)}\"\n spellcheck=\"${ifDefined(this.getAttribute('spellcheck') ?? undefined)}\"\n title=\"${ifDefined(this.title || undefined)}\"\n >\n ${legendContent}\n ${this.hasProjectedContent ? this.projectedContent : nothing}\n </fieldset>`\n }\n}\n\nexport function defineSpectreFieldset(\n tagName = 'sp-fieldset'\n): typeof SpectreFieldsetElement {\n const existingElement = customElements.get(tagName)\n\n if (existingElement) {\n return existingElement as unknown as typeof SpectreFieldsetElement\n }\n\n customElements.define(tagName, SpectreFieldsetElement)\n return SpectreFieldsetElement\n}\n","import { html, nothing } from 'lit'\nimport { ifDefined } from 'lit/directives/if-defined.js'\n\nimport { SpectreProjectableElement } from '../../utils/projectable'\nimport {\n isAccentColor,\n isAccentEdge,\n isBadgeVariant,\n isInputSize,\n sanitizeUtilityClasses,\n type SpectreAccentColor,\n type SpectreAccentEdge,\n type SpectreBadgeVariant,\n type SpectreInputSize\n} from '../../utils/form'\n\nimport {\n interactionStateProperties,\n interactionStates,\n type SpectreInteractionStateProps\n} from '../../utils/states'\n\nimport {\n getBadgeClasses,\n type BadgeAccentRailColor,\n type BadgeAccentRailEdge,\n type BadgeVariant,\n type BadgeSize\n} from '@phcdevworks/spectre-ui'\n\nexport interface SpectreBadgeProps extends SpectreInteractionStateProps {\n dot?: boolean | undefined\n interactive?: boolean | undefined\n accentRail?: SpectreAccentEdge | undefined\n accentRailColor?: SpectreAccentColor | undefined\n ariaLabel?: string | null\n ariaLabelledBy?: string | null\n ariaDescribedBy?: string | null\n disabled?: boolean | undefined\n fullWidth?: boolean | undefined\n id?: string | null | undefined\n innerClass?: string | undefined\n loading?: boolean | undefined\n size?: SpectreInputSize | undefined\n title?: string | null | undefined\n variant?: SpectreBadgeVariant | undefined\n}\n\nexport class SpectreBadgeElement\n extends SpectreProjectableElement\n implements SpectreBadgeProps\n{\n static properties = {\n dot: { type: Boolean, reflect: true },\n interactive: { type: Boolean, reflect: true },\n ...interactionStateProperties,\n accentRail: { attribute: 'accent-rail', type: String, reflect: true },\n accentRailColor: {\n attribute: 'accent-rail-color',\n type: String,\n reflect: true\n },\n disabled: { type: Boolean, reflect: true },\n fullWidth: { attribute: 'full-width', type: Boolean, reflect: true },\n innerClass: { attribute: 'inner-class', type: String },\n loading: { type: Boolean, reflect: true },\n size: { type: String, reflect: true },\n variant: { type: String, reflect: true }\n }\n\n dot: boolean | undefined = false\n\n interactive: boolean | undefined = false\n\n active: boolean | undefined = false\n focused: boolean | undefined = false\n hovered: boolean | undefined = false\n\n accentRail: SpectreAccentEdge | undefined = undefined\n accentRailColor: SpectreAccentColor | undefined = undefined\n disabled: boolean | undefined = false\n fullWidth: boolean | undefined = false\n innerClass: string | undefined = undefined\n loading: boolean | undefined = false\n size: SpectreInputSize | undefined = 'md'\n variant: SpectreBadgeVariant | undefined = 'primary'\n\n override get id(): string {\n return super.id\n }\n\n override set id(value: string | null | undefined) {\n super.id = value\n }\n\n override get title(): string {\n return super.title\n }\n\n override set title(value: string | null | undefined) {\n super.title = value\n }\n\n protected override getContentContainer(): Element | null {\n return this.querySelector('[data-sp-badge-native]')\n }\n\n protected override isInternalNode(node: Node): boolean {\n if (node.nodeType !== Node.ELEMENT_NODE) {\n return false\n }\n const el = node as Element\n return el.hasAttribute('data-sp-badge-native')\n }\n\n protected override willUpdate(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n if (\n changedProperties.has('accentRail') &&\n this.accentRail != null &&\n !isAccentEdge(this.accentRail)\n ) {\n this.accentRail = undefined\n }\n if (\n changedProperties.has('accentRailColor') &&\n this.accentRailColor != null &&\n !isAccentColor(this.accentRailColor)\n ) {\n this.accentRailColor = undefined\n }\n if (changedProperties.has('disabled') && this.disabled == null) {\n this.disabled = false\n }\n if (changedProperties.has('fullWidth') && this.fullWidth == null) {\n this.fullWidth = false\n }\n if (changedProperties.has('loading') && this.loading == null) {\n this.loading = false\n }\n if (\n changedProperties.has('variant') &&\n (this.variant == null || !isBadgeVariant(this.variant))\n ) {\n this.variant = 'primary'\n }\n if (\n changedProperties.has('size') &&\n (this.size == null || !isInputSize(this.size))\n ) {\n this.size = 'md'\n }\n }\n\n private get badgeClasses(): string {\n const recipeClasses = getBadgeClasses({\n dot: this.dot ?? false,\n interactive: this.interactive ?? false,\n ...interactionStates(this),\n ...(this.accentRail !== undefined && {\n accentRail: this.accentRail as BadgeAccentRailEdge\n }),\n ...(this.accentRailColor !== undefined && {\n accentRailColor: this.accentRailColor as BadgeAccentRailColor\n }),\n disabled: this.isDisabled,\n fullWidth: this.fullWidth ?? false,\n loading: this.loading ?? false,\n size: this.size as BadgeSize,\n variant: this.variant as BadgeVariant\n })\n const utilityClasses = sanitizeUtilityClasses(this.innerClass)\n return utilityClasses ? `${recipeClasses} ${utilityClasses}` : recipeClasses\n }\n\n override render() {\n return html`<span\n aria-busy=\"${this.loading ? 'true' : 'false'}\"\n aria-describedby=\"${ifDefined(this.forwardedAriaDescribedBy)}\"\n aria-label=\"${ifDefined(this.forwardedAriaLabel)}\"\n aria-labelledby=\"${ifDefined(this.forwardedAriaLabelledBy)}\"\n class=\"${this.badgeClasses}\"\n data-sp-badge-native\n id=\"${ifDefined(this.id || undefined)}\"\n role=\"${ifDefined(this.hasForwardedLabel ? 'group' : undefined)}\"\n title=\"${ifDefined(this.title || undefined)}\"\n >\n ${this.hasProjectedContent ? this.projectedContent : nothing}\n </span>`\n }\n}\n\nexport function defineSpectreBadge(\n tagName = 'sp-badge'\n): typeof SpectreBadgeElement {\n const existingElement = customElements.get(tagName)\n\n if (existingElement) {\n return existingElement as unknown as typeof SpectreBadgeElement\n }\n\n customElements.define(tagName, SpectreBadgeElement)\n return SpectreBadgeElement\n}\n","import { html, nothing } from 'lit'\nimport { ifDefined } from 'lit/directives/if-defined.js'\n\nimport { SpectreProjectableElement } from '../../utils/projectable'\nimport {\n isAccentColor,\n isAccentEdge,\n isCardPaddingSize,\n isCardVariant,\n sanitizeUtilityClasses,\n type SpectreAccentColor,\n type SpectreAccentEdge,\n type SpectreCardPaddingSize,\n type SpectreCardVariant\n} from '../../utils/form'\n\nimport {\n interactionStateProperties,\n interactionStates,\n type SpectreInteractionStateProps\n} from '../../utils/states'\n\nimport {\n getCardClasses,\n type CardAccentColor,\n type CardAccentEdge,\n type CardVariant\n} from '@phcdevworks/spectre-ui'\n\ntype SpectreCardPadded = boolean | SpectreCardPaddingSize\n\nconst paddedConverter = {\n fromAttribute(value: string | null): SpectreCardPadded {\n if (value === 'false') {\n return false\n }\n if (value != null && isCardPaddingSize(value)) {\n return value\n }\n return true\n },\n toAttribute(value: SpectreCardPadded): string | null {\n if (value === false) {\n return 'false'\n }\n if (value === true) {\n return null\n }\n return value\n }\n}\n\nexport interface SpectreCardProps extends SpectreInteractionStateProps {\n accent?: SpectreAccentEdge | undefined\n accentColor?: SpectreAccentColor | undefined\n ariaLabel?: string | null\n ariaLabelledBy?: string | null\n ariaDescribedBy?: string | null\n disabled?: boolean | undefined\n fullHeight?: boolean | undefined\n id?: string | null | undefined\n innerClass?: string | undefined\n interactive?: boolean | undefined\n loading?: boolean | undefined\n padded?: SpectreCardPadded | undefined\n title?: string | null | undefined\n variant?: SpectreCardVariant | undefined\n}\n\nexport class SpectreCardElement\n extends SpectreProjectableElement\n implements SpectreCardProps\n{\n static properties = {\n ...interactionStateProperties,\n accent: { type: String, reflect: true },\n accentColor: { attribute: 'accent-color', type: String, reflect: true },\n disabled: { type: Boolean, reflect: true },\n fullHeight: { attribute: 'full-height', type: Boolean, reflect: true },\n innerClass: { attribute: 'inner-class', type: String },\n interactive: { type: Boolean, reflect: true },\n loading: { type: Boolean, reflect: true },\n padded: { converter: paddedConverter, reflect: true },\n variant: { type: String, reflect: true }\n }\n\n active: boolean | undefined = false\n focused: boolean | undefined = false\n hovered: boolean | undefined = false\n\n accent: SpectreAccentEdge | undefined = undefined\n accentColor: SpectreAccentColor | undefined = undefined\n disabled: boolean | undefined = false\n fullHeight: boolean | undefined = false\n innerClass: string | undefined = undefined\n interactive: boolean | undefined = false\n loading: boolean | undefined = false\n padded: SpectreCardPadded | undefined = true\n variant: SpectreCardVariant | undefined = 'elevated'\n\n override get id(): string {\n return super.id\n }\n\n override set id(value: string | null | undefined) {\n super.id = value\n }\n\n override get title(): string {\n return super.title\n }\n\n override set title(value: string | null | undefined) {\n super.title = value\n }\n\n protected override getContentContainer(): Element | null {\n return this.querySelector('[data-sp-card-native]')\n }\n\n protected override isInternalNode(node: Node): boolean {\n if (node.nodeType !== Node.ELEMENT_NODE) {\n return false\n }\n const el = node as Element\n return el.hasAttribute('data-sp-card-native')\n }\n\n protected override willUpdate(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n if (\n changedProperties.has('accent') &&\n this.accent != null &&\n !isAccentEdge(this.accent)\n ) {\n this.accent = undefined\n }\n if (\n changedProperties.has('accentColor') &&\n this.accentColor != null &&\n !isAccentColor(this.accentColor)\n ) {\n this.accentColor = undefined\n }\n if (changedProperties.has('disabled') && this.disabled == null) {\n this.disabled = false\n }\n if (changedProperties.has('fullHeight') && this.fullHeight == null) {\n this.fullHeight = false\n }\n if (changedProperties.has('interactive') && this.interactive == null) {\n this.interactive = false\n }\n if (changedProperties.has('loading') && this.loading == null) {\n this.loading = false\n }\n if (\n changedProperties.has('padded') &&\n (this.padded == null ||\n (typeof this.padded !== 'boolean' && !isCardPaddingSize(this.padded)))\n ) {\n this.padded = true\n }\n if (\n changedProperties.has('variant') &&\n (this.variant == null || !isCardVariant(this.variant))\n ) {\n this.variant = 'elevated'\n }\n }\n\n private get cardClasses(): string {\n const recipeClasses = getCardClasses({\n ...interactionStates(this),\n ...(this.accent !== undefined && {\n accent: this.accent as CardAccentEdge\n }),\n ...(this.accentColor !== undefined && {\n accentColor: this.accentColor as CardAccentColor\n }),\n disabled: this.isDisabled,\n fullHeight: this.fullHeight ?? false,\n interactive: this.interactive ?? false,\n loading: this.loading ?? false,\n padded: this.padded ?? true,\n variant: this.variant as CardVariant\n })\n const utilityClasses = sanitizeUtilityClasses(this.innerClass)\n return utilityClasses ? `${recipeClasses} ${utilityClasses}` : recipeClasses\n }\n\n override render() {\n return html`<div\n aria-busy=\"${this.loading ? 'true' : 'false'}\"\n aria-describedby=\"${ifDefined(this.forwardedAriaDescribedBy)}\"\n aria-label=\"${ifDefined(this.forwardedAriaLabel)}\"\n aria-labelledby=\"${ifDefined(this.forwardedAriaLabelledBy)}\"\n class=\"${this.cardClasses}\"\n data-sp-card-native\n id=\"${ifDefined(this.id || undefined)}\"\n role=\"${ifDefined(this.hasForwardedLabel ? 'group' : undefined)}\"\n title=\"${ifDefined(this.title || undefined)}\"\n >\n ${this.hasProjectedContent ? this.projectedContent : nothing}\n </div>`\n }\n}\n\nexport function defineSpectreCard(\n tagName = 'sp-card'\n): typeof SpectreCardElement {\n const existingElement = customElements.get(tagName)\n\n if (existingElement) {\n return existingElement as unknown as typeof SpectreCardElement\n }\n\n customElements.define(tagName, SpectreCardElement)\n return SpectreCardElement\n}\n","import { html, nothing } from 'lit'\nimport { ifDefined } from 'lit/directives/if-defined.js'\n\nimport { SpectreProjectableElement } from '../../utils/projectable'\nimport {\n isIconBoxVariant,\n isInputSize,\n type SpectreIconBoxVariant,\n type SpectreInputSize\n} from '../../utils/form'\n\nimport {\n interactionStateProperties,\n interactionStates,\n type SpectreInteractionStateProps\n} from '../../utils/states'\n\nimport {\n getIconBoxClasses,\n type IconBoxVariant,\n type IconBoxSize\n} from '@phcdevworks/spectre-ui'\n\nexport interface SpectreIconBoxProps extends SpectreInteractionStateProps {\n ariaLabel?: string | null\n ariaLabelledBy?: string | null\n ariaDescribedBy?: string | null\n disabled?: boolean | undefined\n fullWidth?: boolean | undefined\n id?: string | null | undefined\n interactive?: boolean | undefined\n loading?: boolean | undefined\n pill?: boolean | undefined\n size?: SpectreInputSize | undefined\n title?: string | null | undefined\n variant?: SpectreIconBoxVariant | undefined\n}\n\nexport class SpectreIconBoxElement\n extends SpectreProjectableElement\n implements SpectreIconBoxProps\n{\n static properties = {\n ...interactionStateProperties,\n disabled: { type: Boolean, reflect: true },\n fullWidth: { attribute: 'full-width', type: Boolean, reflect: true },\n interactive: { type: Boolean, reflect: true },\n loading: { type: Boolean, reflect: true },\n pill: { type: Boolean, reflect: true },\n size: { type: String, reflect: true },\n variant: { type: String, reflect: true }\n }\n\n active: boolean | undefined = false\n focused: boolean | undefined = false\n hovered: boolean | undefined = false\n\n disabled: boolean | undefined = false\n fullWidth: boolean | undefined = false\n interactive: boolean | undefined = false\n loading: boolean | undefined = false\n pill: boolean | undefined = false\n size: SpectreInputSize | undefined = 'md'\n variant: SpectreIconBoxVariant | undefined = 'primary'\n\n override get id(): string {\n return super.id\n }\n\n override set id(value: string | null | undefined) {\n super.id = value\n }\n\n override get title(): string {\n return super.title\n }\n\n override set title(value: string | null | undefined) {\n super.title = value\n }\n\n protected override getContentContainer(): Element | null {\n return this.querySelector('[data-sp-icon-box-native]')\n }\n\n protected override isInternalNode(node: Node): boolean {\n if (node.nodeType !== Node.ELEMENT_NODE) {\n return false\n }\n const el = node as Element\n return el.hasAttribute('data-sp-icon-box-native')\n }\n\n protected override willUpdate(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n if (changedProperties.has('disabled') && this.disabled == null) {\n this.disabled = false\n }\n if (changedProperties.has('fullWidth') && this.fullWidth == null) {\n this.fullWidth = false\n }\n if (changedProperties.has('interactive') && this.interactive == null) {\n this.interactive = false\n }\n if (changedProperties.has('loading') && this.loading == null) {\n this.loading = false\n }\n if (changedProperties.has('pill') && this.pill == null) {\n this.pill = false\n }\n if (\n changedProperties.has('variant') &&\n (this.variant == null || !isIconBoxVariant(this.variant))\n ) {\n this.variant = 'primary'\n }\n if (\n changedProperties.has('size') &&\n (this.size == null || !isInputSize(this.size))\n ) {\n this.size = 'md'\n }\n }\n\n private get iconBoxClasses(): string {\n return getIconBoxClasses({\n ...interactionStates(this),\n disabled: this.isDisabled,\n fullWidth: this.fullWidth ?? false,\n interactive: this.interactive ?? false,\n loading: this.loading ?? false,\n pill: this.pill ?? false,\n size: this.size as IconBoxSize,\n variant: this.variant as IconBoxVariant\n })\n }\n\n override render() {\n return html`<div\n aria-busy=\"${this.loading ? 'true' : 'false'}\"\n aria-describedby=\"${ifDefined(this.forwardedAriaDescribedBy)}\"\n aria-label=\"${ifDefined(this.forwardedAriaLabel)}\"\n aria-labelledby=\"${ifDefined(this.forwardedAriaLabelledBy)}\"\n class=\"${this.iconBoxClasses}\"\n data-sp-icon-box-native\n id=\"${ifDefined(this.id || undefined)}\"\n role=\"${ifDefined(this.hasForwardedLabel ? 'group' : undefined)}\"\n title=\"${ifDefined(this.title || undefined)}\"\n >\n ${this.hasProjectedContent ? this.projectedContent : nothing}\n </div>`\n }\n}\n\nexport function defineSpectreIconBox(\n tagName = 'sp-icon-box'\n): typeof SpectreIconBoxElement {\n const existingElement = customElements.get(tagName)\n\n if (existingElement) {\n return existingElement as unknown as typeof SpectreIconBoxElement\n }\n\n customElements.define(tagName, SpectreIconBoxElement)\n return SpectreIconBoxElement\n}\n","import { html, nothing } from 'lit'\nimport { ifDefined } from 'lit/directives/if-defined.js'\n\nimport { SpectreBaseElement } from '../../utils/base'\nimport {\n isInputSize,\n normalizeInt,\n type SpectreInputSize\n} from '../../utils/form'\n\nimport {\n interactionStateProperties,\n interactionStates,\n type SpectreInteractionStateProps\n} from '../../utils/states'\n\nimport {\n getRatingClasses,\n getRatingStarsClasses,\n getRatingStarClasses,\n getRatingTextClasses,\n type RatingSize\n} from '@phcdevworks/spectre-ui'\n\nexport interface SpectreRatingProps extends SpectreInteractionStateProps {\n fullWidth?: boolean | undefined\n pill?: boolean | undefined\n interactive?: boolean | undefined\n ariaLabel?: string | null\n ariaLabelledBy?: string | null\n ariaDescribedBy?: string | null\n disabled?: boolean | undefined\n id?: string | null | undefined\n label?: string | undefined\n loading?: boolean | undefined\n max?: number | undefined\n size?: SpectreInputSize | undefined\n title?: string | null | undefined\n value?: number | undefined\n}\n\nexport class SpectreRatingElement\n extends SpectreBaseElement\n implements SpectreRatingProps\n{\n static properties = {\n fullWidth: { attribute: 'full-width', type: Boolean, reflect: true },\n pill: { type: Boolean, reflect: true },\n interactive: { type: Boolean, reflect: true },\n ...interactionStateProperties,\n disabled: { type: Boolean, reflect: true },\n label: { type: String, reflect: true },\n loading: { type: Boolean, reflect: true },\n max: { type: Number, reflect: true },\n size: { type: String, reflect: true },\n value: { type: Number, reflect: true }\n }\n\n fullWidth: boolean | undefined = false\n\n pill: boolean | undefined = false\n\n interactive: boolean | undefined = false\n\n active: boolean | undefined = false\n focused: boolean | undefined = false\n hovered: boolean | undefined = false\n\n disabled: boolean | undefined = false\n label: string | undefined\n loading: boolean | undefined = false\n max: number | undefined = 5\n size: SpectreInputSize | undefined = 'md'\n value: number | undefined = 0\n\n override get id(): string {\n return super.id\n }\n\n override set id(value: string | null | undefined) {\n super.id = value\n }\n\n override get title(): string {\n return super.title\n }\n\n override set title(value: string | null | undefined) {\n super.title = value\n }\n\n protected override willUpdate(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n if (changedProperties.has('disabled') && this.disabled == null) {\n this.disabled = false\n }\n if (changedProperties.has('loading') && this.loading == null) {\n this.loading = false\n }\n if (\n changedProperties.has('size') &&\n (this.size == null || !isInputSize(this.size))\n ) {\n this.size = 'md'\n }\n if (changedProperties.has('max')) {\n this.max = normalizeInt(this.max, 5, 1) ?? 5\n }\n if (changedProperties.has('value')) {\n const safeMax = this.max ?? 5\n const normalized = normalizeInt(this.value, 0, 0)\n this.value = normalized == null ? 0 : Math.min(normalized, safeMax)\n }\n }\n\n private get ratingClasses(): string {\n return getRatingClasses({\n fullWidth: this.fullWidth ?? false,\n pill: this.pill ?? false,\n interactive: this.interactive ?? false,\n ...interactionStates(this),\n disabled: this.isDisabled,\n loading: this.loading ?? false,\n size: this.size as RatingSize\n })\n }\n\n private get effectiveMax(): number {\n return this.max ?? 5\n }\n\n private get effectiveValue(): number {\n return this.value ?? 0\n }\n\n private get computedAriaLabel(): string {\n const base = this.forwardedAriaLabel\n if (base) return base\n return `Rating: ${this.effectiveValue} out of ${this.effectiveMax}`\n }\n\n private renderStars() {\n const stars = []\n for (let i = 1; i <= this.effectiveMax; i++) {\n stars.push(\n html`<span\n class=\"${getRatingStarClasses(i <= this.effectiveValue)}\"\n ></span>`\n )\n }\n return stars\n }\n\n override render() {\n const trimmedLabel = this.label?.trim()\n\n return html`<div\n aria-busy=\"${this.loading ? 'true' : 'false'}\"\n aria-describedby=\"${ifDefined(this.forwardedAriaDescribedBy)}\"\n aria-label=\"${this.computedAriaLabel}\"\n aria-labelledby=\"${ifDefined(this.forwardedAriaLabelledBy)}\"\n class=\"${this.ratingClasses}\"\n data-sp-rating-native\n id=\"${ifDefined(this.id || undefined)}\"\n role=\"img\"\n title=\"${ifDefined(this.title || undefined)}\"\n >\n <div class=\"${getRatingStarsClasses()}\">${this.renderStars()}</div>\n ${\n trimmedLabel\n ? html`<span\n class=\"${getRatingTextClasses({ disabled: this.isDisabled })}\"\n >${trimmedLabel}</span\n >`\n : nothing\n }\n </div>`\n }\n}\n\nexport function defineSpectreRating(\n tagName = 'sp-rating'\n): typeof SpectreRatingElement {\n const existingElement = customElements.get(tagName)\n\n if (existingElement) {\n return existingElement as unknown as typeof SpectreRatingElement\n }\n\n customElements.define(tagName, SpectreRatingElement)\n return SpectreRatingElement\n}\n","import type { ReactiveController, ReactiveControllerHost } from 'lit'\n\nimport { hasMeaningfulContent } from './dom'\n\ntype ProjectionHost = ReactiveControllerHost & HTMLElement\n\nfunction slotOf(node: Node): string | undefined {\n if (node.nodeType !== Node.ELEMENT_NODE) {\n return undefined\n }\n return (node as Element).getAttribute('slot') ?? undefined\n}\n\n// Tracks authored light-DOM nodes for components that project content into\n// more than one rendered container, partitioned by their `slot` attribute.\nexport class ProjectionController implements ReactiveController {\n private projected: Node[] = []\n private observer: MutationObserver | undefined\n\n constructor(\n private readonly host: ProjectionHost,\n private readonly internalAttributes: readonly string[]\n ) {\n host.addController(this)\n }\n\n hostConnected(): void {\n this.sync()\n this.observe()\n }\n\n hostDisconnected(): void {\n this.disconnect()\n }\n\n hostUpdate(): void {\n this.sync()\n this.disconnect()\n }\n\n hostUpdated(): void {\n this.observe()\n }\n\n // Every projected node in authored order, regardless of slot.\n all(): Node[] {\n return [...this.projected]\n }\n\n // Omitting `slot` returns the nodes without a slot attribute.\n nodes(slot?: string): Node[] {\n return this.projected.filter((node) => slotOf(node) === slot)\n }\n\n elements(slot?: string): Element[] {\n return this.nodes(slot).filter(\n (node): node is Element => node.nodeType === Node.ELEMENT_NODE\n )\n }\n\n has(slot?: string): boolean {\n return hasMeaningfulContent(this.nodes(slot))\n }\n\n private isInternalNode(node: Node): boolean {\n return (\n node.nodeType === Node.ELEMENT_NODE &&\n this.internalAttributes.some((name) =>\n (node as Element).hasAttribute(name)\n )\n )\n }\n\n private isProjectable(node: Node): boolean {\n if (node.nodeType === Node.COMMENT_NODE || this.isInternalNode(node)) {\n return false\n }\n // After the first render, whitespace between rendered siblings belongs to\n // the template, not the author.\n if (node.nodeType === Node.TEXT_NODE && this.hostHasRendered) {\n return Boolean(node.textContent?.trim())\n }\n return true\n }\n\n private get hostHasRendered(): boolean {\n return (this.host as unknown as { hasUpdated: boolean }).hasUpdated\n }\n\n private sync(): boolean {\n // Authored nodes already moved into rendered containers are retained;\n // re-reading those containers would also capture Lit's own nodes.\n const next = [\n ...new Set([\n ...this.projected.filter((node) => this.host.contains(node)),\n ...Array.from(this.host.childNodes).filter((node) =>\n this.isProjectable(node)\n )\n ])\n ]\n\n const changed =\n next.length !== this.projected.length ||\n next.some((node, index) => node !== this.projected[index])\n\n if (changed) {\n this.projected = next\n }\n return changed\n }\n\n private observe(): void {\n if (this.observer || !this.host.isConnected) {\n return\n }\n this.observer = new MutationObserver(() => {\n if (this.sync()) {\n this.host.requestUpdate()\n }\n })\n this.observer.observe(this.host, { childList: true })\n }\n\n private disconnect(): void {\n this.observer?.disconnect()\n this.observer = undefined\n }\n}\n","import { html, nothing } from 'lit'\nimport { ifDefined } from 'lit/directives/if-defined.js'\n\nimport { SpectreBaseElement } from '../../utils/base'\nimport { ProjectionController } from '../../utils/projection'\nimport {\n isAccentColor,\n isAccentEdge,\n isTestimonialVariant,\n type SpectreAccentColor,\n type SpectreAccentEdge,\n type SpectreTestimonialVariant\n} from '../../utils/form'\n\nimport {\n interactionStateProperties,\n interactionStates,\n type SpectreInteractionStateProps\n} from '../../utils/states'\n\nimport {\n getTestimonialAuthorClasses,\n getTestimonialAuthorInfoClasses,\n getTestimonialAuthorNameClasses,\n getTestimonialAuthorTitleClasses,\n getTestimonialQuoteClasses,\n getTestimonialClasses,\n type TestimonialAccentColor,\n type TestimonialAccentEdge,\n type TestimonialRecipeOptions\n} from '@phcdevworks/spectre-ui'\n\nexport interface SpectreTestimonialProps extends SpectreInteractionStateProps {\n accent?: SpectreAccentEdge | undefined\n accentColor?: SpectreAccentColor | undefined\n ariaLabel?: string | null\n ariaLabelledBy?: string | null\n ariaDescribedBy?: string | null\n disabled?: boolean | undefined\n fullHeight?: boolean | undefined\n id?: string | null | undefined\n interactive?: boolean | undefined\n loading?: boolean | undefined\n title?: string | null | undefined\n variant?: SpectreTestimonialVariant | undefined\n}\n\nexport class SpectreTestimonialElement\n extends SpectreBaseElement\n implements SpectreTestimonialProps\n{\n static properties = {\n ...interactionStateProperties,\n accent: { type: String, reflect: true },\n accentColor: { attribute: 'accent-color', type: String, reflect: true },\n disabled: { type: Boolean, reflect: true },\n fullHeight: { attribute: 'full-height', type: Boolean, reflect: true },\n interactive: { type: Boolean, reflect: true },\n loading: { type: Boolean, reflect: true },\n variant: { type: String, reflect: true }\n }\n\n active: boolean | undefined = false\n focused: boolean | undefined = false\n hovered: boolean | undefined = false\n\n accent: SpectreAccentEdge | undefined = undefined\n accentColor: SpectreAccentColor | undefined = undefined\n disabled: boolean | undefined = false\n fullHeight: boolean | undefined = false\n interactive: boolean | undefined = false\n loading: boolean | undefined = false\n variant: SpectreTestimonialVariant | undefined = 'elevated'\n\n override get id(): string {\n return super.id\n }\n\n override set id(value: string | null | undefined) {\n super.id = value\n }\n\n override get title(): string {\n return super.title\n }\n\n override set title(value: string | null | undefined) {\n super.title = value\n }\n\n private readonly projection = new ProjectionController(this, [\n 'data-sp-testimonial-native'\n ])\n\n protected override willUpdate(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n if (\n changedProperties.has('accent') &&\n this.accent != null &&\n !isAccentEdge(this.accent)\n ) {\n this.accent = undefined\n }\n if (\n changedProperties.has('accentColor') &&\n this.accentColor != null &&\n !isAccentColor(this.accentColor)\n ) {\n this.accentColor = undefined\n }\n if (changedProperties.has('disabled') && this.disabled == null) {\n this.disabled = false\n }\n if (changedProperties.has('fullHeight') && this.fullHeight == null) {\n this.fullHeight = false\n }\n if (changedProperties.has('interactive') && this.interactive == null) {\n this.interactive = false\n }\n if (changedProperties.has('loading') && this.loading == null) {\n this.loading = false\n }\n if (\n changedProperties.has('variant') &&\n (this.variant == null || !isTestimonialVariant(this.variant))\n ) {\n this.variant = 'elevated'\n }\n }\n\n private get testimonialClasses(): string {\n return getTestimonialClasses({\n ...interactionStates(this),\n ...(this.accent !== undefined && {\n accent: this.accent as TestimonialAccentEdge\n }),\n ...(this.accentColor !== undefined && {\n accentColor: this.accentColor as TestimonialAccentColor\n }),\n disabled: this.isDisabled,\n fullHeight: this.fullHeight ?? false,\n interactive: this.interactive ?? false,\n loading: this.loading ?? false,\n variant: this.variant as NonNullable<TestimonialRecipeOptions['variant']>\n })\n }\n\n private renderAuthor() {\n const hasName = this.projection.has('author-name')\n const hasTitle = this.projection.has('author-title')\n if (!this.projection.has('author-image') && !hasName && !hasTitle) {\n return nothing\n }\n return html`<div class=\"${getTestimonialAuthorClasses()}\">\n ${this.projection.nodes('author-image')}\n ${\n hasName || hasTitle\n ? html`<div class=\"${getTestimonialAuthorInfoClasses()}\">\n ${\n hasName\n ? html`<div class=\"${getTestimonialAuthorNameClasses()}\">\n ${this.projection.nodes('author-name')}\n </div>`\n : nothing\n }\n ${\n hasTitle\n ? html`<div class=\"${getTestimonialAuthorTitleClasses()}\">\n ${this.projection.nodes('author-title')}\n </div>`\n : nothing\n }\n </div>`\n : nothing\n }\n </div>`\n }\n\n override render() {\n return html`<div\n aria-busy=\"${this.loading ? 'true' : 'false'}\"\n aria-describedby=\"${ifDefined(this.forwardedAriaDescribedBy)}\"\n aria-label=\"${ifDefined(this.forwardedAriaLabel)}\"\n aria-labelledby=\"${ifDefined(this.forwardedAriaLabelledBy)}\"\n class=\"${this.testimonialClasses}\"\n data-sp-testimonial-native\n id=\"${ifDefined(this.id || undefined)}\"\n role=\"${ifDefined(this.hasForwardedLabel ? 'group' : undefined)}\"\n title=\"${ifDefined(this.title || undefined)}\"\n >\n ${\n this.projection.has('quote')\n ? html`<div class=\"${getTestimonialQuoteClasses()}\">\n ${this.projection.nodes('quote')}\n </div>`\n : nothing\n }\n ${this.projection.nodes()} ${this.renderAuthor()}\n </div>`\n }\n}\n\nexport function defineSpectreTestimonial(\n tagName = 'sp-testimonial'\n): typeof SpectreTestimonialElement {\n const existingElement = customElements.get(tagName)\n\n if (existingElement) {\n return existingElement as unknown as typeof SpectreTestimonialElement\n }\n\n customElements.define(tagName, SpectreTestimonialElement)\n return SpectreTestimonialElement\n}\n","import { html, svg, type TemplateResult } from 'lit'\n\nconst paths = {\n check: svg`<path d=\"M3 8.5l3 3 7-7\" />`,\n chevronDown: svg`<path d=\"M4 6l4 4 4-4\" />`,\n chevronLeft: svg`<path d=\"M10 4l-4 4 4 4\" />`,\n chevronRight: svg`<path d=\"M6 4l4 4-4 4\" />`,\n close: svg`<path d=\"M4 4l8 8M12 4l-8 8\" />`\n}\n\nexport type SpectreIconName = keyof typeof paths\n\n// Decorative stroke icons; sizing comes from an `sp-icon-*` utility class.\nexport function renderIcon(\n name: SpectreIconName,\n sizeClass = 'sp-icon-sm'\n): TemplateResult {\n return html`<svg\n aria-hidden=\"true\"\n class=\"${sizeClass}\"\n fill=\"none\"\n focusable=\"false\"\n stroke=\"currentColor\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-width=\"2\"\n viewBox=\"0 0 16 16\"\n >\n ${paths[name]}\n </svg>`\n}\n","import { html, nothing } from 'lit'\nimport { ifDefined } from 'lit/directives/if-defined.js'\n\nimport { SpectreBaseElement } from '../../utils/base'\nimport {\n isAlertVariant,\n isInputSize,\n type SpectreAlertVariant,\n type SpectreInputSize\n} from '../../utils/form'\nimport { renderIcon } from '../../utils/icons'\nimport { ProjectionController } from '../../utils/projection'\n\nimport {\n interactionStateProperties,\n interactionStates,\n type SpectreInteractionStateProps\n} from '../../utils/states'\n\nimport {\n getAlertClasses,\n getAlertDismissClasses,\n getAlertIconClasses,\n type AlertVariant,\n type AlertSize\n} from '@phcdevworks/spectre-ui'\n\nexport interface SpectreAlertProps extends SpectreInteractionStateProps {\n interactive?: boolean | undefined\n ariaLabel?: string | null\n ariaLabelledBy?: string | null\n ariaDescribedBy?: string | null\n dismissLabel?: string | undefined\n dismissed?: boolean | undefined\n dismissible?: boolean | undefined\n disabled?: boolean | undefined\n fullWidth?: boolean | undefined\n id?: string | null | undefined\n loading?: boolean | undefined\n size?: SpectreInputSize | undefined\n title?: string | null | undefined\n variant?: SpectreAlertVariant | undefined\n}\n\nexport class SpectreAlertElement\n extends SpectreBaseElement\n implements SpectreAlertProps\n{\n static properties = {\n interactive: { type: Boolean, reflect: true },\n ...interactionStateProperties,\n dismissLabel: { attribute: 'dismiss-label', type: String },\n dismissed: { type: Boolean, reflect: true },\n dismissible: { type: Boolean, reflect: true },\n disabled: { type: Boolean, reflect: true },\n fullWidth: { attribute: 'full-width', type: Boolean, reflect: true },\n loading: { type: Boolean, reflect: true },\n size: { type: String, reflect: true },\n variant: { type: String, reflect: true }\n }\n\n interactive: boolean | undefined = false\n\n active: boolean | undefined = false\n focused: boolean | undefined = false\n hovered: boolean | undefined = false\n\n dismissLabel: string | undefined = 'Dismiss'\n dismissed: boolean | undefined = false\n dismissible: boolean | undefined = false\n disabled: boolean | undefined = false\n fullWidth: boolean | undefined = false\n loading: boolean | undefined = false\n size: SpectreInputSize | undefined = 'md'\n variant: SpectreAlertVariant | undefined = 'info'\n\n override get id(): string {\n return super.id\n }\n\n override set id(value: string | null | undefined) {\n super.id = value\n }\n\n override get title(): string {\n return super.title\n }\n\n override set title(value: string | null | undefined) {\n super.title = value\n }\n\n private readonly projection = new ProjectionController(this, [\n 'data-sp-alert-native'\n ])\n\n protected override willUpdate(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n if (changedProperties.has('dismissLabel') && !this.dismissLabel) {\n this.dismissLabel = 'Dismiss'\n }\n if (changedProperties.has('dismissed') && this.dismissed == null) {\n this.dismissed = false\n }\n if (changedProperties.has('dismissible') && this.dismissible == null) {\n this.dismissible = false\n }\n if (changedProperties.has('disabled') && this.disabled == null) {\n this.disabled = false\n }\n if (changedProperties.has('fullWidth') && this.fullWidth == null) {\n this.fullWidth = false\n }\n if (changedProperties.has('loading') && this.loading == null) {\n this.loading = false\n }\n if (\n changedProperties.has('variant') &&\n (this.variant == null || !isAlertVariant(this.variant))\n ) {\n this.variant = 'info'\n }\n if (\n changedProperties.has('size') &&\n (this.size == null || !isInputSize(this.size))\n ) {\n this.size = 'md'\n }\n }\n\n private dismiss(): void {\n if (this.dismissed) {\n return\n }\n this.dismissed = true\n this.dispatchEvent(new CustomEvent('sp-dismiss', { bubbles: true }))\n }\n\n private get alertClasses(): string {\n return getAlertClasses({\n interactive: this.interactive ?? false,\n ...interactionStates(this),\n disabled: this.isDisabled,\n dismissed: this.dismissed ?? false,\n dismissible: this.dismissible ?? false,\n fullWidth: this.fullWidth ?? false,\n loading: this.loading ?? false,\n size: this.size as AlertSize,\n variant: this.variant as AlertVariant\n })\n }\n\n override render() {\n return html`<div\n aria-busy=\"${this.loading ? 'true' : 'false'}\"\n aria-describedby=\"${ifDefined(this.forwardedAriaDescribedBy)}\"\n aria-label=\"${ifDefined(this.forwardedAriaLabel)}\"\n aria-labelledby=\"${ifDefined(this.forwardedAriaLabelledBy)}\"\n class=\"${this.alertClasses}\"\n data-sp-alert-native\n id=\"${ifDefined(this.id || undefined)}\"\n role=\"alert\"\n title=\"${ifDefined(this.title || undefined)}\"\n >\n ${\n this.projection.has('icon')\n ? html`<span class=\"${getAlertIconClasses()}\"\n >${this.projection.nodes('icon')}</span\n >`\n : nothing\n }\n ${this.projection.has() ? this.projection.nodes() : nothing}\n ${\n this.dismissible\n ? html`<button\n aria-label=\"${this.dismissLabel ?? 'Dismiss'}\"\n class=\"${getAlertDismissClasses()}\"\n data-sp-alert-dismiss\n type=\"button\"\n @click=\"${() => this.dismiss()}\"\n >\n ${renderIcon('close')}\n </button>`\n : nothing\n }\n </div>`\n }\n}\n\nexport function defineSpectreAlert(\n tagName = 'sp-alert'\n): typeof SpectreAlertElement {\n const existingElement = customElements.get(tagName)\n\n if (existingElement) {\n return existingElement as unknown as typeof SpectreAlertElement\n }\n\n customElements.define(tagName, SpectreAlertElement)\n return SpectreAlertElement\n}\n","import { html, nothing } from 'lit'\nimport { ifDefined } from 'lit/directives/if-defined.js'\n\nimport { SpectreProjectableElement } from '../../utils/projectable'\nimport {\n isAvatarShape,\n isAvatarSize,\n type SpectreAvatarShape,\n type SpectreAvatarSize\n} from '../../utils/form'\n\nimport {\n interactionStateProperties,\n interactionStates,\n type SpectreInteractionStateProps\n} from '../../utils/states'\n\nimport {\n getAvatarClasses,\n type AvatarShape,\n type AvatarSize\n} from '@phcdevworks/spectre-ui'\n\nexport interface SpectreAvatarProps extends SpectreInteractionStateProps {\n ariaLabel?: string | null\n ariaLabelledBy?: string | null\n ariaDescribedBy?: string | null\n disabled?: boolean | undefined\n fullWidth?: boolean | undefined\n id?: string | null | undefined\n interactive?: boolean | undefined\n loading?: boolean | undefined\n placeholder?: boolean | undefined\n shape?: SpectreAvatarShape | undefined\n size?: SpectreAvatarSize | undefined\n title?: string | null | undefined\n}\n\nexport class SpectreAvatarElement\n extends SpectreProjectableElement\n implements SpectreAvatarProps\n{\n static properties = {\n ...interactionStateProperties,\n disabled: { type: Boolean, reflect: true },\n fullWidth: { attribute: 'full-width', type: Boolean, reflect: true },\n interactive: { type: Boolean, reflect: true },\n loading: { type: Boolean, reflect: true },\n placeholder: { type: Boolean, reflect: true },\n shape: { type: String, reflect: true },\n size: { type: String, reflect: true }\n }\n\n active: boolean | undefined = false\n focused: boolean | undefined = false\n hovered: boolean | undefined = false\n\n disabled: boolean | undefined = false\n fullWidth: boolean | undefined = false\n interactive: boolean | undefined = false\n loading: boolean | undefined = false\n placeholder: boolean | undefined = false\n shape: SpectreAvatarShape | undefined = 'circle'\n size: SpectreAvatarSize | undefined = 'md'\n\n override get id(): string {\n return super.id\n }\n\n override set id(value: string | null | undefined) {\n super.id = value\n }\n\n override get title(): string {\n return super.title\n }\n\n override set title(value: string | null | undefined) {\n super.title = value\n }\n\n protected override getContentContainer(): Element | null {\n return this.querySelector('[data-sp-avatar-native]')\n }\n\n protected override isInternalNode(node: Node): boolean {\n if (node.nodeType !== Node.ELEMENT_NODE) {\n return false\n }\n const el = node as Element\n return el.hasAttribute('data-sp-avatar-native')\n }\n\n protected override willUpdate(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n if (changedProperties.has('disabled') && this.disabled == null) {\n this.disabled = false\n }\n if (changedProperties.has('fullWidth') && this.fullWidth == null) {\n this.fullWidth = false\n }\n if (changedProperties.has('interactive') && this.interactive == null) {\n this.interactive = false\n }\n if (changedProperties.has('loading') && this.loading == null) {\n this.loading = false\n }\n if (changedProperties.has('placeholder') && this.placeholder == null) {\n this.placeholder = false\n }\n if (\n changedProperties.has('shape') &&\n (this.shape == null || !isAvatarShape(this.shape))\n ) {\n this.shape = 'circle'\n }\n if (\n changedProperties.has('size') &&\n (this.size == null || !isAvatarSize(this.size))\n ) {\n this.size = 'md'\n }\n }\n\n private get avatarClasses(): string {\n return getAvatarClasses({\n ...interactionStates(this),\n disabled: this.isDisabled,\n fullWidth: this.fullWidth ?? false,\n interactive: this.interactive ?? false,\n loading: this.loading ?? false,\n placeholder: this.placeholder ?? false,\n shape: this.shape as AvatarShape,\n size: this.size as AvatarSize\n })\n }\n\n override render() {\n return html`<div\n aria-busy=\"${this.loading ? 'true' : 'false'}\"\n aria-describedby=\"${ifDefined(this.forwardedAriaDescribedBy)}\"\n aria-label=\"${ifDefined(this.forwardedAriaLabel)}\"\n aria-labelledby=\"${ifDefined(this.forwardedAriaLabelledBy)}\"\n class=\"${this.avatarClasses}\"\n data-sp-avatar-native\n id=\"${ifDefined(this.id || undefined)}\"\n role=\"${ifDefined(this.hasForwardedLabel ? 'group' : undefined)}\"\n title=\"${ifDefined(this.title || undefined)}\"\n >\n ${this.hasProjectedContent ? this.projectedContent : nothing}\n </div>`\n }\n}\n\nexport function defineSpectreAvatar(\n tagName = 'sp-avatar'\n): typeof SpectreAvatarElement {\n const existingElement = customElements.get(tagName)\n\n if (existingElement) {\n return existingElement as unknown as typeof SpectreAvatarElement\n }\n\n customElements.define(tagName, SpectreAvatarElement)\n return SpectreAvatarElement\n}\n","import { html } from 'lit'\nimport { ifDefined } from 'lit/directives/if-defined.js'\n\nimport { SpectreBaseElement } from '../../utils/base'\nimport {\n isInputSize,\n isSpinnerVariant,\n type SpectreInputSize,\n type SpectreSpinnerVariant\n} from '../../utils/form'\n\nimport {\n getSpinnerClasses,\n type SpinnerSize,\n type SpinnerVariant\n} from '@phcdevworks/spectre-ui'\n\nexport interface SpectreSpinnerProps {\n ariaLabel?: string | null\n ariaLabelledBy?: string | null\n ariaDescribedBy?: string | null\n disabled?: boolean | undefined\n id?: string | null | undefined\n loading?: boolean | undefined\n size?: SpectreInputSize | undefined\n title?: string | null | undefined\n variant?: SpectreSpinnerVariant | undefined\n}\n\nexport class SpectreSpinnerElement\n extends SpectreBaseElement\n implements SpectreSpinnerProps\n{\n static properties = {\n disabled: { type: Boolean, reflect: true },\n loading: { type: Boolean, reflect: true },\n size: { type: String, reflect: true },\n variant: { type: String, reflect: true }\n }\n\n disabled: boolean | undefined = false\n loading: boolean | undefined = true\n size: SpectreInputSize | undefined = 'md'\n variant: SpectreSpinnerVariant | undefined\n\n override get id(): string {\n return super.id\n }\n\n override set id(value: string | null | undefined) {\n super.id = value\n }\n\n override get title(): string {\n return super.title\n }\n\n override set title(value: string | null | undefined) {\n super.title = value\n }\n\n protected override willUpdate(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n if (changedProperties.has('disabled') && this.disabled == null) {\n this.disabled = false\n }\n if (changedProperties.has('loading') && this.loading == null) {\n this.loading = true\n }\n if (\n changedProperties.has('size') &&\n (this.size == null || !isInputSize(this.size))\n ) {\n this.size = 'md'\n }\n if (\n changedProperties.has('variant') &&\n this.variant != null &&\n !isSpinnerVariant(this.variant)\n ) {\n this.variant = undefined\n }\n }\n\n private get spinnerClasses(): string {\n return getSpinnerClasses({\n disabled: this.disabled ?? false,\n loading: this.loading ?? true,\n size: this.size as SpinnerSize,\n ...(this.variant != null\n ? { variant: this.variant as SpinnerVariant }\n : {})\n })\n }\n\n private get computedAriaLabel(): string {\n return this.forwardedAriaLabel ?? 'Loading'\n }\n\n override render() {\n return html`<div\n aria-busy=\"${this.loading ? 'true' : 'false'}\"\n aria-describedby=\"${ifDefined(this.forwardedAriaDescribedBy)}\"\n aria-label=\"${this.computedAriaLabel}\"\n aria-labelledby=\"${ifDefined(this.forwardedAriaLabelledBy)}\"\n class=\"${this.spinnerClasses}\"\n data-sp-spinner-native\n id=\"${ifDefined(this.id || undefined)}\"\n role=\"status\"\n title=\"${ifDefined(this.title || undefined)}\"\n ></div>`\n }\n}\n\nexport function defineSpectreSpinner(\n tagName = 'sp-spinner'\n): typeof SpectreSpinnerElement {\n const existingElement = customElements.get(tagName)\n\n if (existingElement) {\n return existingElement as unknown as typeof SpectreSpinnerElement\n }\n\n customElements.define(tagName, SpectreSpinnerElement)\n return SpectreSpinnerElement\n}\n","import { html, nothing } from 'lit'\nimport { ifDefined } from 'lit/directives/if-defined.js'\n\nimport { SpectreProjectableElement } from '../../utils/projectable'\nimport {\n isInputSize,\n isTagVariant,\n type SpectreInputSize,\n type SpectreTagVariant\n} from '../../utils/form'\n\nimport {\n interactionStateProperties,\n interactionStates,\n type SpectreInteractionStateProps\n} from '../../utils/states'\n\nimport {\n getTagClasses,\n type TagVariant,\n type TagSize\n} from '@phcdevworks/spectre-ui'\n\nexport interface SpectreTagProps extends SpectreInteractionStateProps {\n ariaLabel?: string | null\n ariaLabelledBy?: string | null\n ariaDescribedBy?: string | null\n dismissible?: boolean | undefined\n disabled?: boolean | undefined\n fullWidth?: boolean | undefined\n id?: string | null | undefined\n interactive?: boolean | undefined\n loading?: boolean | undefined\n selected?: boolean | undefined\n size?: SpectreInputSize | undefined\n title?: string | null | undefined\n variant?: SpectreTagVariant | undefined\n}\n\nexport class SpectreTagElement\n extends SpectreProjectableElement\n implements SpectreTagProps\n{\n static properties = {\n ...interactionStateProperties,\n dismissible: { type: Boolean, reflect: true },\n disabled: { type: Boolean, reflect: true },\n fullWidth: { attribute: 'full-width', type: Boolean, reflect: true },\n interactive: { type: Boolean, reflect: true },\n loading: { type: Boolean, reflect: true },\n selected: { type: Boolean, reflect: true },\n size: { type: String, reflect: true },\n variant: { type: String, reflect: true }\n }\n\n active: boolean | undefined = false\n focused: boolean | undefined = false\n hovered: boolean | undefined = false\n\n dismissible: boolean | undefined = false\n disabled: boolean | undefined = false\n fullWidth: boolean | undefined = false\n interactive: boolean | undefined = false\n loading: boolean | undefined = false\n selected: boolean | undefined = false\n size: SpectreInputSize | undefined = 'md'\n variant: SpectreTagVariant | undefined = 'default'\n\n override get id(): string {\n return super.id\n }\n\n override set id(value: string | null | undefined) {\n super.id = value\n }\n\n override get title(): string {\n return super.title\n }\n\n override set title(value: string | null | undefined) {\n super.title = value\n }\n\n protected override getContentContainer(): Element | null {\n return this.querySelector('[data-sp-tag-native]')\n }\n\n protected override isInternalNode(node: Node): boolean {\n if (node.nodeType !== Node.ELEMENT_NODE) {\n return false\n }\n const el = node as Element\n return el.hasAttribute('data-sp-tag-native')\n }\n\n protected override willUpdate(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n if (changedProperties.has('dismissible') && this.dismissible == null) {\n this.dismissible = false\n }\n if (changedProperties.has('disabled') && this.disabled == null) {\n this.disabled = false\n }\n if (changedProperties.has('fullWidth') && this.fullWidth == null) {\n this.fullWidth = false\n }\n if (changedProperties.has('interactive') && this.interactive == null) {\n this.interactive = false\n }\n if (changedProperties.has('loading') && this.loading == null) {\n this.loading = false\n }\n if (changedProperties.has('selected') && this.selected == null) {\n this.selected = false\n }\n if (\n changedProperties.has('size') &&\n (this.size == null || !isInputSize(this.size))\n ) {\n this.size = 'md'\n }\n if (\n changedProperties.has('variant') &&\n (this.variant == null || !isTagVariant(this.variant))\n ) {\n this.variant = 'default'\n }\n }\n\n private get tagClasses(): string {\n return getTagClasses({\n ...interactionStates(this),\n disabled: this.isDisabled,\n dismissible: this.dismissible ?? false,\n fullWidth: this.fullWidth ?? false,\n interactive: this.interactive ?? false,\n loading: this.loading ?? false,\n selected: this.selected ?? false,\n size: this.size as TagSize,\n variant: this.variant as TagVariant\n })\n }\n\n override render() {\n return html`<span\n aria-busy=\"${this.loading ? 'true' : 'false'}\"\n aria-describedby=\"${ifDefined(this.forwardedAriaDescribedBy)}\"\n aria-label=\"${ifDefined(this.forwardedAriaLabel)}\"\n aria-labelledby=\"${ifDefined(this.forwardedAriaLabelledBy)}\"\n class=\"${this.tagClasses}\"\n data-sp-tag-native\n id=\"${ifDefined(this.id || undefined)}\"\n role=\"${ifDefined(this.hasForwardedLabel ? 'group' : undefined)}\"\n title=\"${ifDefined(this.title || undefined)}\"\n >\n ${this.hasProjectedContent ? this.projectedContent : nothing}\n </span>`\n }\n}\n\nexport function defineSpectreTag(tagName = 'sp-tag'): typeof SpectreTagElement {\n const existingElement = customElements.get(tagName)\n\n if (existingElement) {\n return existingElement as unknown as typeof SpectreTagElement\n }\n\n customElements.define(tagName, SpectreTagElement)\n return SpectreTagElement\n}\n","import { html, nothing } from 'lit'\nimport { ifDefined } from 'lit/directives/if-defined.js'\n\nimport { SpectreBaseElement } from '../../utils/base'\nimport { ProjectionController } from '../../utils/projection'\nimport {\n isAccentColor,\n isAccentEdge,\n type SpectreAccentColor,\n type SpectreAccentEdge\n} from '../../utils/form'\n\nimport {\n interactionStateProperties,\n interactionStates,\n type SpectreInteractionStateProps\n} from '../../utils/states'\n\nimport {\n getPricingCardBadgeClasses,\n getPricingCardDescriptionClasses,\n getPricingCardPriceClasses,\n getPricingCardPriceContainerClasses,\n getPricingCardClasses,\n type PricingCardAccentColor,\n type PricingCardAccentEdge\n} from '@phcdevworks/spectre-ui'\n\nexport interface SpectrePricingCardProps extends SpectreInteractionStateProps {\n accent?: SpectreAccentEdge | undefined\n accentColor?: SpectreAccentColor | undefined\n ariaLabel?: string | null\n ariaLabelledBy?: string | null\n ariaDescribedBy?: string | null\n disabled?: boolean | undefined\n featured?: boolean | undefined\n fullHeight?: boolean | undefined\n id?: string | null | undefined\n interactive?: boolean | undefined\n loading?: boolean | undefined\n title?: string | null | undefined\n}\n\nexport class SpectrePricingCardElement\n extends SpectreBaseElement\n implements SpectrePricingCardProps\n{\n static properties = {\n ...interactionStateProperties,\n accent: { type: String, reflect: true },\n accentColor: { attribute: 'accent-color', type: String, reflect: true },\n disabled: { type: Boolean, reflect: true },\n featured: { type: Boolean, reflect: true },\n fullHeight: { attribute: 'full-height', type: Boolean, reflect: true },\n interactive: { type: Boolean, reflect: true },\n loading: { type: Boolean, reflect: true }\n }\n\n active: boolean | undefined = false\n focused: boolean | undefined = false\n hovered: boolean | undefined = false\n\n accent: SpectreAccentEdge | undefined = undefined\n accentColor: SpectreAccentColor | undefined = undefined\n disabled: boolean | undefined = false\n featured: boolean | undefined = false\n fullHeight: boolean | undefined = false\n interactive: boolean | undefined = false\n loading: boolean | undefined = false\n\n override get id(): string {\n return super.id\n }\n\n override set id(value: string | null | undefined) {\n super.id = value\n }\n\n override get title(): string {\n return super.title\n }\n\n override set title(value: string | null | undefined) {\n super.title = value\n }\n\n private readonly projection = new ProjectionController(this, [\n 'data-sp-pricing-card-native'\n ])\n\n protected override willUpdate(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n if (\n changedProperties.has('accent') &&\n this.accent != null &&\n !isAccentEdge(this.accent)\n ) {\n this.accent = undefined\n }\n if (\n changedProperties.has('accentColor') &&\n this.accentColor != null &&\n !isAccentColor(this.accentColor)\n ) {\n this.accentColor = undefined\n }\n if (changedProperties.has('disabled') && this.disabled == null) {\n this.disabled = false\n }\n if (changedProperties.has('featured') && this.featured == null) {\n this.featured = false\n }\n if (changedProperties.has('fullHeight') && this.fullHeight == null) {\n this.fullHeight = false\n }\n if (changedProperties.has('interactive') && this.interactive == null) {\n this.interactive = false\n }\n if (changedProperties.has('loading') && this.loading == null) {\n this.loading = false\n }\n }\n\n private get pricingCardClasses(): string {\n return getPricingCardClasses({\n ...interactionStates(this),\n ...(this.accent !== undefined && {\n accent: this.accent as PricingCardAccentEdge\n }),\n ...(this.accentColor !== undefined && {\n accentColor: this.accentColor as PricingCardAccentColor\n }),\n disabled: this.isDisabled,\n featured: this.featured ?? false,\n fullHeight: this.fullHeight ?? false,\n interactive: this.interactive ?? false,\n loading: this.loading ?? false\n })\n }\n\n override render() {\n return html`<div\n aria-busy=\"${this.loading ? 'true' : 'false'}\"\n aria-describedby=\"${ifDefined(this.forwardedAriaDescribedBy)}\"\n aria-label=\"${ifDefined(this.forwardedAriaLabel)}\"\n aria-labelledby=\"${ifDefined(this.forwardedAriaLabelledBy)}\"\n class=\"${this.pricingCardClasses}\"\n data-sp-pricing-card-native\n id=\"${ifDefined(this.id || undefined)}\"\n role=\"${ifDefined(this.hasForwardedLabel ? 'group' : undefined)}\"\n title=\"${ifDefined(this.title || undefined)}\"\n >\n ${this.projection.nodes('header')}\n ${\n this.projection.has('badge')\n ? html`<div class=\"${getPricingCardBadgeClasses()}\">\n ${this.projection.nodes('badge')}\n </div>`\n : nothing\n }\n ${\n this.projection.has('price')\n ? html`<div class=\"${getPricingCardPriceContainerClasses()}\">\n <div class=\"${getPricingCardPriceClasses()}\">\n ${this.projection.nodes('price')}\n </div>\n </div>`\n : nothing\n }\n ${\n this.projection.has('description')\n ? html`<div class=\"${getPricingCardDescriptionClasses()}\">\n ${this.projection.nodes('description')}\n </div>`\n : nothing\n }\n ${this.projection.nodes()} ${this.projection.nodes('footer')}\n </div>`\n }\n}\n\nexport function defineSpectrePricingCard(\n tagName = 'sp-pricing-card'\n): typeof SpectrePricingCardElement {\n const existingElement = customElements.get(tagName)\n\n if (existingElement) {\n return existingElement as unknown as typeof SpectrePricingCardElement\n }\n\n customElements.define(tagName, SpectrePricingCardElement)\n return SpectrePricingCardElement\n}\n","import { html, nothing } from 'lit'\nimport { ifDefined } from 'lit/directives/if-defined.js'\n\nimport { SpectreProjectableElement } from '../../utils/projectable'\nimport {\n isContainerMaxWidth,\n isSpacingStep,\n sanitizeUtilityClasses,\n type SpectreContainerMaxWidth,\n type SpectreSpacingStep\n} from '../../utils/form'\n\nimport {\n getContainerClasses,\n type ContainerMaxWidth,\n type ContainerPadding\n} from '@phcdevworks/spectre-ui'\n\nexport interface SpectreContainerProps {\n ariaLabel?: string | null\n ariaLabelledBy?: string | null\n ariaDescribedBy?: string | null\n id?: string | null | undefined\n innerClass?: string | undefined\n maxWidth?: SpectreContainerMaxWidth | undefined\n padding?: SpectreSpacingStep | undefined\n title?: string | null | undefined\n}\n\nexport class SpectreContainerElement\n extends SpectreProjectableElement\n implements SpectreContainerProps\n{\n static properties = {\n innerClass: { attribute: 'inner-class', type: String },\n maxWidth: { attribute: 'max-width', type: String, reflect: true },\n padding: { type: String, reflect: true }\n }\n\n innerClass: string | undefined = undefined\n maxWidth: SpectreContainerMaxWidth | undefined = undefined\n padding: SpectreSpacingStep | undefined = undefined\n\n override get id(): string {\n return super.id\n }\n\n override set id(value: string | null | undefined) {\n super.id = value\n }\n\n override get title(): string {\n return super.title\n }\n\n override set title(value: string | null | undefined) {\n super.title = value\n }\n\n override connectedCallback(): void {\n super.connectedCallback()\n this.style.display ||= 'block'\n }\n\n protected override getContentContainer(): Element | null {\n return this.querySelector('[data-sp-container-native]')\n }\n\n protected override isInternalNode(node: Node): boolean {\n if (node.nodeType !== Node.ELEMENT_NODE) {\n return false\n }\n const el = node as Element\n return el.hasAttribute('data-sp-container-native')\n }\n\n protected override willUpdate(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n if (\n changedProperties.has('maxWidth') &&\n this.maxWidth != null &&\n !isContainerMaxWidth(this.maxWidth)\n ) {\n this.maxWidth = undefined\n }\n if (\n changedProperties.has('padding') &&\n this.padding != null &&\n !isSpacingStep(this.padding)\n ) {\n this.padding = undefined\n }\n }\n\n private get containerClasses(): string {\n const recipeClasses = getContainerClasses({\n ...(this.maxWidth != null && {\n maxWidth: this.maxWidth as ContainerMaxWidth\n }),\n ...(this.padding != null && {\n padding: this.padding as ContainerPadding\n })\n })\n const utilityClasses = sanitizeUtilityClasses(this.innerClass)\n return utilityClasses ? `${recipeClasses} ${utilityClasses}` : recipeClasses\n }\n\n override render() {\n return html`<div\n aria-describedby=\"${ifDefined(this.forwardedAriaDescribedBy)}\"\n aria-label=\"${ifDefined(this.forwardedAriaLabel)}\"\n aria-labelledby=\"${ifDefined(this.forwardedAriaLabelledBy)}\"\n class=\"${this.containerClasses}\"\n data-sp-container-native\n id=\"${ifDefined(this.id || undefined)}\"\n title=\"${ifDefined(this.title || undefined)}\"\n >\n ${this.hasProjectedContent ? this.projectedContent : nothing}\n </div>`\n }\n}\n\nexport function defineSpectreContainer(\n tagName = 'sp-container'\n): typeof SpectreContainerElement {\n const existingElement = customElements.get(tagName)\n\n if (existingElement) {\n return existingElement as unknown as typeof SpectreContainerElement\n }\n\n customElements.define(tagName, SpectreContainerElement)\n return SpectreContainerElement\n}\n","import { html, nothing } from 'lit'\nimport { ifDefined } from 'lit/directives/if-defined.js'\n\nimport { SpectreProjectableElement } from '../../utils/projectable'\nimport {\n isGridAlign,\n isGridColStart,\n isGridColStartOptions,\n isGridColumns,\n isGridExplicitTemplateOptions,\n isGridFixedTracksOptions,\n isGridGap,\n isGridLeadingTracksOptions,\n isGridOffset,\n isGridOffsetOptions,\n isGridOrder,\n isGridOrderOptions,\n isGridSpan,\n isGridSpanOptions,\n sanitizeUtilityClasses,\n type SpectreGridAlign,\n type SpectreGridColStart,\n type SpectreGridColStartOptions,\n type SpectreGridColumns,\n type SpectreGridExplicitTemplateOptions,\n type SpectreGridFixedTracksOptions,\n type SpectreGridGap,\n type SpectreGridLeadingTracksOptions,\n type SpectreGridOffset,\n type SpectreGridOffsetOptions,\n type SpectreGridOrder,\n type SpectreGridOrderOptions,\n type SpectreGridSpan,\n type SpectreGridSpanOptions\n} from '../../utils/form'\n\nimport {\n getGridClasses,\n type GridAlign,\n type GridColStart,\n type GridColStartOptions,\n type GridColumns,\n type GridExplicitTemplateOptions,\n type GridFixedTracksOptions,\n type GridGap,\n type GridLeadingTracksOptions,\n type GridOffset,\n type GridOffsetOptions,\n type GridOrder,\n type GridOrderOptions,\n type GridSpan,\n type GridSpanOptions\n} from '@phcdevworks/spectre-ui'\nimport { normalizeInt } from '../../utils/form'\n\nexport interface SpectreGridProps {\n align?: SpectreGridAlign | undefined\n ariaLabel?: string | null\n ariaLabelledBy?: string | null\n ariaDescribedBy?: string | null\n colStart?: SpectreGridColStart | SpectreGridColStartOptions | undefined\n columns?: SpectreGridColumns | undefined\n columnGap?: SpectreGridGap | undefined\n explicitTemplate?: SpectreGridExplicitTemplateOptions | undefined\n fixedTracks?: SpectreGridFixedTracksOptions | undefined\n gap?: SpectreGridGap | undefined\n id?: string | null | undefined\n innerClass?: string | undefined\n leadingTracks?: SpectreGridLeadingTracksOptions | undefined\n offset?: SpectreGridOffset | SpectreGridOffsetOptions | undefined\n order?: SpectreGridOrder | SpectreGridOrderOptions | undefined\n role?: string | null | undefined\n rowGap?: SpectreGridGap | undefined\n rowOffset?: SpectreGridOffset | SpectreGridOffsetOptions | undefined\n rowSpan?: SpectreGridSpan | SpectreGridSpanOptions | undefined\n span?: SpectreGridSpan | SpectreGridSpanOptions | undefined\n title?: string | null | undefined\n}\n\nexport class SpectreGridElement\n extends SpectreProjectableElement\n implements SpectreGridProps\n{\n static properties = {\n align: { type: String, reflect: true },\n colStart: { attribute: 'col-start', type: Object },\n columns: { type: Number, reflect: true },\n columnGap: { attribute: 'column-gap', type: String, reflect: true },\n explicitTemplate: { attribute: 'explicit-template', type: Object },\n fixedTracks: { attribute: 'fixed-tracks', type: Object },\n gap: { type: String, reflect: true },\n innerClass: { attribute: 'inner-class', type: String },\n leadingTracks: { attribute: 'leading-tracks', type: Object },\n offset: { type: Object },\n order: { type: Object },\n rowGap: { attribute: 'row-gap', type: String, reflect: true },\n rowOffset: { attribute: 'row-offset', type: Object },\n rowSpan: { attribute: 'row-span', type: Object },\n span: { type: Object }\n }\n\n align: SpectreGridAlign | undefined = undefined\n colStart: SpectreGridColStart | SpectreGridColStartOptions | undefined\n columns: SpectreGridColumns | undefined = 1\n columnGap: SpectreGridGap | undefined = undefined\n explicitTemplate: SpectreGridExplicitTemplateOptions | undefined = undefined\n fixedTracks: SpectreGridFixedTracksOptions | undefined = undefined\n gap: SpectreGridGap | undefined = 'md'\n innerClass: string | undefined = undefined\n leadingTracks: SpectreGridLeadingTracksOptions | undefined = undefined\n offset: SpectreGridOffset | SpectreGridOffsetOptions | undefined\n order: SpectreGridOrder | SpectreGridOrderOptions | undefined\n rowGap: SpectreGridGap | undefined = undefined\n rowOffset: SpectreGridOffset | SpectreGridOffsetOptions | undefined\n rowSpan: SpectreGridSpan | SpectreGridSpanOptions | undefined\n span: SpectreGridSpan | SpectreGridSpanOptions | undefined\n\n override get id(): string {\n return super.id\n }\n\n override set id(value: string | null | undefined) {\n super.id = value\n }\n\n override get title(): string {\n return super.title\n }\n\n override set title(value: string | null | undefined) {\n super.title = value\n }\n\n private _role: string | null = null\n\n override get role(): string | null {\n return this._role\n }\n\n override set role(value: string | null | undefined) {\n const normalizedValue = value?.trim() || null\n if (this._role === normalizedValue) {\n return\n }\n this._role = normalizedValue\n if (HTMLElement.prototype.hasAttribute.call(this, 'role')) {\n HTMLElement.prototype.removeAttribute.call(this, 'role')\n }\n this.requestUpdate()\n }\n\n override getAttribute(qualifiedName: string): string | null {\n if (qualifiedName === 'role') {\n return this.role\n }\n return super.getAttribute(qualifiedName)\n }\n\n override hasAttribute(qualifiedName: string): boolean {\n if (qualifiedName === 'role') {\n return this.role !== null\n }\n return super.hasAttribute(qualifiedName)\n }\n\n override setAttribute(qualifiedName: string, value: string): void {\n if (qualifiedName === 'role') {\n this.role = value\n return\n }\n super.setAttribute(qualifiedName, value)\n }\n\n override removeAttribute(qualifiedName: string): void {\n if (qualifiedName === 'role') {\n this.role = null\n return\n }\n super.removeAttribute(qualifiedName)\n }\n\n override connectedCallback(): void {\n const initialRole = HTMLElement.prototype.getAttribute.call(this, 'role')\n if (initialRole !== null) {\n HTMLElement.prototype.removeAttribute.call(this, 'role')\n }\n super.connectedCallback()\n if (initialRole !== null) {\n this.role = initialRole\n }\n this.style.display ||= 'block'\n }\n\n protected override getContentContainer(): Element | null {\n return this.querySelector('[data-sp-grid-native]')\n }\n\n protected override isInternalNode(node: Node): boolean {\n if (node.nodeType !== Node.ELEMENT_NODE) {\n return false\n }\n const el = node as Element\n return el.hasAttribute('data-sp-grid-native')\n }\n\n protected override willUpdate(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n if (\n changedProperties.has('align') &&\n this.align != null &&\n !isGridAlign(this.align)\n ) {\n this.align = undefined\n }\n if (changedProperties.has('columns')) {\n const normalized = normalizeInt(this.columns, undefined, 1)\n this.columns =\n normalized != null && isGridColumns(normalized)\n ? (normalized as SpectreGridColumns)\n : 1\n }\n if (\n changedProperties.has('gap') &&\n (this.gap == null || !isGridGap(this.gap))\n ) {\n this.gap = 'md'\n }\n if (\n changedProperties.has('columnGap') &&\n this.columnGap != null &&\n !isGridGap(this.columnGap)\n ) {\n this.columnGap = undefined\n }\n if (\n changedProperties.has('rowGap') &&\n this.rowGap != null &&\n !isGridGap(this.rowGap)\n ) {\n this.rowGap = undefined\n }\n if (\n changedProperties.has('span') &&\n this.span !== undefined &&\n !isGridSpan(this.span) &&\n !isGridSpanOptions(this.span)\n ) {\n this.span = undefined\n }\n if (\n changedProperties.has('offset') &&\n this.offset !== undefined &&\n !isGridOffset(this.offset) &&\n !isGridOffsetOptions(this.offset)\n ) {\n this.offset = undefined\n }\n if (\n changedProperties.has('colStart') &&\n this.colStart !== undefined &&\n !isGridColStart(this.colStart) &&\n !isGridColStartOptions(this.colStart)\n ) {\n this.colStart = undefined\n }\n if (\n changedProperties.has('rowSpan') &&\n this.rowSpan !== undefined &&\n !isGridSpan(this.rowSpan) &&\n !isGridSpanOptions(this.rowSpan)\n ) {\n this.rowSpan = undefined\n }\n if (\n changedProperties.has('rowOffset') &&\n this.rowOffset !== undefined &&\n !isGridOffset(this.rowOffset) &&\n !isGridOffsetOptions(this.rowOffset)\n ) {\n this.rowOffset = undefined\n }\n if (\n changedProperties.has('order') &&\n this.order !== undefined &&\n !isGridOrder(this.order) &&\n !isGridOrderOptions(this.order)\n ) {\n this.order = undefined\n }\n if (\n changedProperties.has('leadingTracks') &&\n this.leadingTracks !== undefined &&\n !isGridLeadingTracksOptions(this.leadingTracks)\n ) {\n this.leadingTracks = undefined\n }\n if (\n changedProperties.has('fixedTracks') &&\n this.fixedTracks !== undefined &&\n !isGridFixedTracksOptions(this.fixedTracks)\n ) {\n this.fixedTracks = undefined\n }\n if (\n changedProperties.has('explicitTemplate') &&\n this.explicitTemplate !== undefined &&\n !isGridExplicitTemplateOptions(this.explicitTemplate)\n ) {\n this.explicitTemplate = undefined\n }\n }\n\n private get gridClasses(): string {\n const recipeClasses = getGridClasses({\n columns: this.columns as GridColumns,\n gap: this.gap as GridGap,\n ...(this.align !== undefined && { align: this.align as GridAlign }),\n ...(this.columnGap !== undefined && {\n columnGap: this.columnGap as GridGap\n }),\n ...(this.rowGap !== undefined && { rowGap: this.rowGap as GridGap }),\n ...(this.span !== undefined && {\n span: this.span as GridSpan | GridSpanOptions\n }),\n ...(this.offset !== undefined && {\n offset: this.offset as GridOffset | GridOffsetOptions\n }),\n ...(this.colStart !== undefined && {\n colStart: this.colStart as GridColStart | GridColStartOptions\n }),\n ...(this.rowSpan !== undefined && {\n rowSpan: this.rowSpan as GridSpan | GridSpanOptions\n }),\n ...(this.rowOffset !== undefined && {\n rowOffset: this.rowOffset as GridOffset | GridOffsetOptions\n }),\n ...(this.order !== undefined && {\n order: this.order as GridOrder | GridOrderOptions\n }),\n ...(this.leadingTracks !== undefined && {\n leadingTracks: this.leadingTracks as GridLeadingTracksOptions\n }),\n ...(this.fixedTracks !== undefined && {\n fixedTracks: this.fixedTracks as GridFixedTracksOptions\n }),\n ...(this.explicitTemplate !== undefined && {\n explicitTemplate: this.explicitTemplate as GridExplicitTemplateOptions\n })\n })\n const utilityClasses = sanitizeUtilityClasses(this.innerClass)\n return utilityClasses ? `${recipeClasses} ${utilityClasses}` : recipeClasses\n }\n\n override render() {\n return html`<div\n aria-describedby=\"${ifDefined(this.forwardedAriaDescribedBy)}\"\n aria-label=\"${ifDefined(this.forwardedAriaLabel)}\"\n aria-labelledby=\"${ifDefined(this.forwardedAriaLabelledBy)}\"\n class=\"${this.gridClasses}\"\n data-sp-grid-native\n id=\"${ifDefined(this.id || undefined)}\"\n role=\"${ifDefined(this.role ?? undefined)}\"\n title=\"${ifDefined(this.title || undefined)}\"\n >\n ${this.hasProjectedContent ? this.projectedContent : nothing}\n </div>`\n }\n}\n\nexport function defineSpectreGrid(\n tagName = 'sp-grid'\n): typeof SpectreGridElement {\n const existingElement = customElements.get(tagName)\n\n if (existingElement) {\n return existingElement as unknown as typeof SpectreGridElement\n }\n\n customElements.define(tagName, SpectreGridElement)\n return SpectreGridElement\n}\n","import { html, nothing } from 'lit'\nimport { ifDefined } from 'lit/directives/if-defined.js'\n\nimport { SpectreProjectableElement } from '../../utils/projectable'\nimport {\n isSpacingStep,\n sanitizeUtilityClasses,\n type SpectreSpacingStep\n} from '../../utils/form'\n\nimport {\n getSectionClasses,\n type SectionGap,\n type SectionSpacing\n} from '@phcdevworks/spectre-ui'\n\nexport interface SpectreSectionProps {\n ariaLabel?: string | null\n ariaLabelledBy?: string | null\n ariaDescribedBy?: string | null\n gap?: SpectreSpacingStep | undefined\n id?: string | null | undefined\n innerClass?: string | undefined\n spacing?: SpectreSpacingStep | undefined\n title?: string | null | undefined\n}\n\nexport class SpectreSectionElement\n extends SpectreProjectableElement\n implements SpectreSectionProps\n{\n static properties = {\n gap: { type: String, reflect: true },\n innerClass: { attribute: 'inner-class', type: String },\n spacing: { type: String, reflect: true }\n }\n\n gap: SpectreSpacingStep | undefined = undefined\n innerClass: string | undefined = undefined\n spacing: SpectreSpacingStep | undefined = undefined\n\n override get id(): string {\n return super.id\n }\n\n override set id(value: string | null | undefined) {\n super.id = value\n }\n\n override get title(): string {\n return super.title\n }\n\n override set title(value: string | null | undefined) {\n super.title = value\n }\n\n override connectedCallback(): void {\n super.connectedCallback()\n this.style.display ||= 'block'\n }\n\n protected override getContentContainer(): Element | null {\n return this.querySelector('[data-sp-section-native]')\n }\n\n protected override isInternalNode(node: Node): boolean {\n if (node.nodeType !== Node.ELEMENT_NODE) {\n return false\n }\n const el = node as Element\n return el.hasAttribute('data-sp-section-native')\n }\n\n protected override willUpdate(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n if (\n changedProperties.has('gap') &&\n this.gap != null &&\n !isSpacingStep(this.gap)\n ) {\n this.gap = undefined\n }\n if (\n changedProperties.has('spacing') &&\n this.spacing != null &&\n !isSpacingStep(this.spacing)\n ) {\n this.spacing = undefined\n }\n }\n\n private get sectionClasses(): string {\n const recipeClasses = getSectionClasses({\n ...(this.gap != null && { gap: this.gap as SectionGap }),\n ...(this.spacing != null && {\n spacing: this.spacing as SectionSpacing\n })\n })\n const utilityClasses = sanitizeUtilityClasses(this.innerClass)\n return utilityClasses ? `${recipeClasses} ${utilityClasses}` : recipeClasses\n }\n\n override render() {\n return html`<section\n aria-describedby=\"${ifDefined(this.forwardedAriaDescribedBy)}\"\n aria-label=\"${ifDefined(this.forwardedAriaLabel)}\"\n aria-labelledby=\"${ifDefined(this.forwardedAriaLabelledBy)}\"\n class=\"${this.sectionClasses}\"\n data-sp-section-native\n id=\"${ifDefined(this.id || undefined)}\"\n title=\"${ifDefined(this.title || undefined)}\"\n >\n ${this.hasProjectedContent ? this.projectedContent : nothing}\n </section>`\n }\n}\n\nexport function defineSpectreSection(\n tagName = 'sp-section'\n): typeof SpectreSectionElement {\n const existingElement = customElements.get(tagName)\n\n if (existingElement) {\n return existingElement as unknown as typeof SpectreSectionElement\n }\n\n customElements.define(tagName, SpectreSectionElement)\n return SpectreSectionElement\n}\n","import { html, nothing } from 'lit'\nimport { ifDefined } from 'lit/directives/if-defined.js'\n\nimport { SpectreProjectableElement } from '../../utils/projectable'\nimport {\n isStackAlign,\n isStackBasis,\n isStackDirection,\n isStackGap,\n sanitizeUtilityClasses,\n type SpectreStackAlign,\n type SpectreStackBasis,\n type SpectreStackDirection,\n type SpectreStackGap\n} from '../../utils/form'\n\nimport {\n getStackClasses,\n type StackAlign,\n type StackBasis,\n type StackDirection,\n type StackGap\n} from '@phcdevworks/spectre-ui'\n\nexport interface SpectreStackProps {\n align?: SpectreStackAlign | undefined\n ariaLabel?: string | null\n ariaLabelledBy?: string | null\n ariaDescribedBy?: string | null\n basis?: SpectreStackBasis | undefined\n direction?: SpectreStackDirection | undefined\n gap?: SpectreStackGap | undefined\n id?: string | null | undefined\n innerClass?: string | undefined\n title?: string | null | undefined\n}\n\nexport class SpectreStackElement\n extends SpectreProjectableElement\n implements SpectreStackProps\n{\n static properties = {\n align: { type: String, reflect: true },\n basis: { type: String, reflect: true },\n direction: { type: String, reflect: true },\n gap: { type: String, reflect: true },\n innerClass: { attribute: 'inner-class', type: String }\n }\n\n align: SpectreStackAlign | undefined = 'center'\n basis: SpectreStackBasis | undefined = undefined\n direction: SpectreStackDirection | undefined = 'vertical'\n gap: SpectreStackGap | undefined = 'md'\n innerClass: string | undefined = undefined\n\n override get id(): string {\n return super.id\n }\n\n override set id(value: string | null | undefined) {\n super.id = value\n }\n\n override get title(): string {\n return super.title\n }\n\n override set title(value: string | null | undefined) {\n super.title = value\n }\n\n override connectedCallback(): void {\n super.connectedCallback()\n this.style.display ||= 'block'\n }\n\n protected override getContentContainer(): Element | null {\n return this.querySelector('[data-sp-stack-native]')\n }\n\n protected override isInternalNode(node: Node): boolean {\n if (node.nodeType !== Node.ELEMENT_NODE) {\n return false\n }\n const el = node as Element\n return el.hasAttribute('data-sp-stack-native')\n }\n\n protected override willUpdate(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n if (\n changedProperties.has('direction') &&\n (this.direction == null || !isStackDirection(this.direction))\n ) {\n this.direction = 'vertical'\n }\n if (\n changedProperties.has('basis') &&\n this.basis != null &&\n !isStackBasis(this.basis)\n ) {\n this.basis = undefined\n }\n if (\n changedProperties.has('align') &&\n (this.align == null || !isStackAlign(this.align))\n ) {\n this.align = 'center'\n }\n if (\n changedProperties.has('gap') &&\n (this.gap == null || !isStackGap(this.gap))\n ) {\n this.gap = 'md'\n }\n }\n\n private get stackClasses(): string {\n const recipeClasses = getStackClasses({\n align: this.align as StackAlign,\n direction: this.direction as StackDirection,\n gap: this.gap as StackGap,\n ...(this.basis != null ? { basis: this.basis as StackBasis } : {})\n })\n const utilityClasses = sanitizeUtilityClasses(this.innerClass)\n return utilityClasses ? `${recipeClasses} ${utilityClasses}` : recipeClasses\n }\n\n override render() {\n return html`<div\n aria-describedby=\"${ifDefined(this.forwardedAriaDescribedBy)}\"\n aria-label=\"${ifDefined(this.forwardedAriaLabel)}\"\n aria-labelledby=\"${ifDefined(this.forwardedAriaLabelledBy)}\"\n class=\"${this.stackClasses}\"\n data-sp-stack-native\n id=\"${ifDefined(this.id || undefined)}\"\n title=\"${ifDefined(this.title || undefined)}\"\n >\n ${this.hasProjectedContent ? this.projectedContent : nothing}\n </div>`\n }\n}\n\nexport function defineSpectreStack(\n tagName = 'sp-stack'\n): typeof SpectreStackElement {\n const existingElement = customElements.get(tagName)\n\n if (existingElement) {\n return existingElement as unknown as typeof SpectreStackElement\n }\n\n customElements.define(tagName, SpectreStackElement)\n return SpectreStackElement\n}\n","// Adds a recipe's part classes to authored elements that opt in with\n// `slot=\"<part>\"`. The elements stay where they were authored, so free-form\n// layouts (footer columns, menu groups) keep their order.\nexport function applyPartClasses(\n elements: Iterable<Element>,\n parts: Readonly<Record<string, string>>\n): void {\n for (const element of elements) {\n const part = element.getAttribute('slot')\n const classes = part ? parts[part] : undefined\n if (classes) {\n element.classList.add(...classes.split(/\\s+/).filter(Boolean))\n }\n }\n}\n\nexport function childElements(nodes: readonly Node[]): Element[] {\n return nodes.filter(\n (node): node is Element => node.nodeType === Node.ELEMENT_NODE\n )\n}\n","import { html, nothing } from 'lit'\nimport { ifDefined } from 'lit/directives/if-defined.js'\n\nimport { SpectreBaseElement } from '../../utils/base'\nimport { hasMeaningfulContent } from '../../utils/dom'\nimport { applyPartClasses, childElements } from '../../utils/parts'\nimport {\n isAccentColor,\n isAccentEdge,\n isDropdownPlacement,\n type SpectreAccentColor,\n type SpectreAccentEdge,\n type SpectreDropdownPlacement\n} from '../../utils/form'\n\nimport {\n getDropdownClasses,\n getDropdownDividerClasses,\n getDropdownHeaderClasses,\n getDropdownItemClasses,\n getDropdownMenuClasses,\n type DropdownAccentColor,\n type DropdownAccentEdge\n} from '@phcdevworks/spectre-ui'\n\nexport interface SpectreDropdownProps {\n accent?: SpectreAccentEdge | undefined\n accentColor?: SpectreAccentColor | undefined\n ariaLabel?: string | null\n fullWidth?: boolean | undefined\n id?: string | null | undefined\n mega?: boolean | undefined\n open?: boolean | undefined\n placement?: SpectreDropdownPlacement | undefined\n title?: string | null | undefined\n triggerLabel?: string | undefined\n viewport?: boolean | undefined\n}\n\nexport class SpectreDropdownElement\n extends SpectreBaseElement\n implements SpectreDropdownProps\n{\n static properties = {\n accent: { type: String, reflect: true },\n accentColor: { attribute: 'accent-color', type: String, reflect: true },\n fullWidth: { attribute: 'full-width', type: Boolean, reflect: true },\n mega: { type: Boolean, reflect: true },\n open: { type: Boolean, reflect: true },\n placement: { type: String, reflect: true },\n triggerLabel: { attribute: 'trigger-label', type: String },\n viewport: { type: Boolean, reflect: true }\n }\n\n accent: SpectreAccentEdge | undefined = undefined\n accentColor: SpectreAccentColor | undefined = undefined\n fullWidth: boolean | undefined = false\n mega: boolean | undefined = false\n open: boolean | undefined = false\n placement: SpectreDropdownPlacement | undefined = 'bottom-start'\n triggerLabel: string | undefined = 'Toggle menu'\n viewport: boolean | undefined = false\n\n private triggerContent: Node[] = []\n private menuContent: Node[] = []\n private contentObserver?: MutationObserver | undefined\n\n override get id(): string {\n return super.id\n }\n\n override set id(value: string | null | undefined) {\n super.id = value\n }\n\n override get title(): string {\n return super.title\n }\n\n override set title(value: string | null | undefined) {\n super.title = value\n }\n\n private isInternalNode(node: Node): boolean {\n if (node.nodeType !== Node.ELEMENT_NODE) {\n return false\n }\n const el = node as Element\n return (\n el.hasAttribute('data-sp-dropdown-native') ||\n el.hasAttribute('data-sp-dropdown-menu') ||\n el.hasAttribute('data-sp-dropdown-trigger')\n )\n }\n\n private syncProjectedContent(): boolean {\n const nextTriggerContent: Node[] = []\n const nextMenuContent: Node[] = []\n\n // Retain authored nodes already projected into native containers. Reading\n // those containers wholesale would also capture Lit's own template nodes.\n const sourceNodes = [\n ...this.triggerContent.filter((node) => this.contains(node)),\n ...this.menuContent.filter((node) => this.contains(node)),\n ...Array.from(this.childNodes).filter(\n (node) =>\n !this.hasUpdated ||\n node.nodeType !== Node.TEXT_NODE ||\n node.textContent?.trim()\n )\n ]\n\n new Set(sourceNodes).forEach((node) => {\n if (node.nodeType === Node.COMMENT_NODE || this.isInternalNode(node)) {\n return\n }\n const isTriggerSlot =\n node.nodeType === Node.ELEMENT_NODE &&\n (node as Element).getAttribute('slot') === 'trigger'\n if (isTriggerSlot) {\n nextTriggerContent.push(node)\n } else {\n nextMenuContent.push(node)\n }\n })\n\n const changed =\n nextTriggerContent.length !== this.triggerContent.length ||\n nextTriggerContent.some((n, i) => n !== this.triggerContent[i]) ||\n nextMenuContent.length !== this.menuContent.length ||\n nextMenuContent.some((n, i) => n !== this.menuContent[i])\n\n if (changed) {\n this.triggerContent = nextTriggerContent\n this.menuContent = nextMenuContent\n }\n\n return changed\n }\n\n private get hasTriggerContent(): boolean {\n return hasMeaningfulContent(this.triggerContent)\n }\n\n private get hasMenuContent(): boolean {\n return hasMeaningfulContent(this.menuContent)\n }\n\n override connectedCallback(): void {\n super.connectedCallback()\n this.syncProjectedContent()\n this.startContentObserver()\n document.addEventListener('click', this.handleDocumentClick)\n document.addEventListener('keydown', this.handleDocumentKeydown)\n }\n\n override disconnectedCallback(): void {\n this.stopContentObserver()\n document.removeEventListener('click', this.handleDocumentClick)\n document.removeEventListener('keydown', this.handleDocumentKeydown)\n super.disconnectedCallback()\n }\n\n protected override update(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n this.stopContentObserver()\n super.update(changedProperties)\n this.startContentObserver()\n }\n\n private startContentObserver(): void {\n if (this.contentObserver) {\n return\n }\n this.contentObserver = new MutationObserver(() => {\n if (this.syncProjectedContent()) {\n this.requestUpdate()\n }\n })\n this.contentObserver.observe(this, { childList: true })\n }\n\n private stopContentObserver(): void {\n this.contentObserver?.disconnect()\n this.contentObserver = undefined\n }\n\n protected override willUpdate(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n if (\n changedProperties.has('accent') &&\n this.accent != null &&\n !isAccentEdge(this.accent)\n ) {\n this.accent = undefined\n }\n if (\n changedProperties.has('accentColor') &&\n this.accentColor != null &&\n !isAccentColor(this.accentColor)\n ) {\n this.accentColor = undefined\n }\n if (changedProperties.has('fullWidth') && this.fullWidth == null) {\n this.fullWidth = false\n }\n if (changedProperties.has('mega') && this.mega == null) {\n this.mega = false\n }\n if (changedProperties.has('open') && this.open == null) {\n this.open = false\n }\n if (\n changedProperties.has('placement') &&\n (this.placement == null || !isDropdownPlacement(this.placement))\n ) {\n this.placement = 'bottom-start'\n }\n if (changedProperties.has('triggerLabel') && !this.triggerLabel) {\n this.triggerLabel = 'Toggle menu'\n }\n if (changedProperties.has('viewport') && this.viewport == null) {\n this.viewport = false\n }\n }\n\n protected override updated(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n super.updated(changedProperties)\n applyPartClasses(childElements(this.menuContent), {\n divider: getDropdownDividerClasses(),\n header: getDropdownHeaderClasses(),\n item: getDropdownItemClasses()\n })\n }\n\n private handleDocumentClick = (event: MouseEvent): void => {\n if (!this.open) {\n return\n }\n if (!event.composedPath().includes(this)) {\n this.close()\n }\n }\n\n private handleDocumentKeydown = (event: KeyboardEvent): void => {\n if (event.key === 'Escape' && this.open) {\n this.close()\n this.triggerElement?.focus()\n }\n }\n\n private get triggerElement(): HTMLButtonElement | null {\n return this.querySelector('[data-sp-dropdown-trigger]')\n }\n\n private toggle(): void {\n if (this.open) {\n this.close()\n } else {\n this.openMenu()\n }\n }\n\n private openMenu(): void {\n if (this.open) {\n return\n }\n this.open = true\n this.dispatchEvent(new CustomEvent('sp-open', { bubbles: true }))\n }\n\n private close(): void {\n if (!this.open) {\n return\n }\n this.open = false\n this.dispatchEvent(new CustomEvent('sp-close', { bubbles: true }))\n }\n\n private get dropdownClasses(): string {\n return getDropdownClasses({\n fullWidth: this.fullWidth ?? false,\n mega: this.mega ?? false,\n viewport: this.viewport ?? false\n })\n }\n\n private get menuClasses(): string {\n return getDropdownMenuClasses({\n ...(this.accent !== undefined && {\n accent: this.accent as DropdownAccentEdge\n }),\n ...(this.accentColor !== undefined && {\n accentColor: this.accentColor as DropdownAccentColor\n }),\n mega: this.mega ?? false,\n open: this.open ?? false,\n placement: this.placement as SpectreDropdownPlacement,\n viewport: this.viewport ?? false\n })\n }\n\n override render() {\n return html`<div\n class=\"${this.dropdownClasses}\"\n data-sp-dropdown-native\n id=\"${ifDefined(this.id || undefined)}\"\n title=\"${ifDefined(this.title || undefined)}\"\n >\n <button\n aria-expanded=\"${this.open ? 'true' : 'false'}\"\n aria-haspopup=\"true\"\n aria-label=\"${ifDefined(this.forwardedAriaLabel ?? this.triggerLabel)}\"\n class=\"sp-dropdown__trigger\"\n data-sp-dropdown-trigger\n type=\"button\"\n @click=\"${() => this.toggle()}\"\n >\n ${this.hasTriggerContent ? this.triggerContent : this.triggerLabel}\n </button>\n <div class=\"${this.menuClasses}\" data-sp-dropdown-menu>\n ${this.hasMenuContent ? this.menuContent : nothing}\n </div>\n </div>`\n }\n}\n\nexport function defineSpectreDropdown(\n tagName = 'sp-dropdown'\n): typeof SpectreDropdownElement {\n const existingElement = customElements.get(tagName)\n\n if (existingElement) {\n return existingElement as unknown as typeof SpectreDropdownElement\n }\n\n customElements.define(tagName, SpectreDropdownElement)\n return SpectreDropdownElement\n}\n","import { html, nothing } from 'lit'\nimport { ifDefined } from 'lit/directives/if-defined.js'\n\nimport { applyPartClasses } from '../../utils/parts'\nimport { SpectreProjectableElement } from '../../utils/projectable'\nimport {\n isAccentColor,\n isAccentEdge,\n sanitizeUtilityClasses,\n type SpectreAccentColor,\n type SpectreAccentEdge\n} from '../../utils/form'\n\nimport {\n getFooterClasses,\n getFooterDividerClasses,\n getFooterHeadingClasses,\n getFooterLinksClasses,\n getFooterMutedClasses,\n getFooterTextClasses,\n type FooterAccentColor,\n type FooterAccentEdge\n} from '@phcdevworks/spectre-ui'\n\nexport interface SpectreFooterProps {\n accent?: SpectreAccentEdge | undefined\n accentColor?: SpectreAccentColor | undefined\n ariaLabel?: string | null\n bordered?: boolean | undefined\n fullWidth?: boolean | undefined\n id?: string | null | undefined\n innerClass?: string | undefined\n title?: string | null | undefined\n}\n\nexport class SpectreFooterElement\n extends SpectreProjectableElement\n implements SpectreFooterProps\n{\n static properties = {\n accent: { type: String, reflect: true },\n accentColor: { attribute: 'accent-color', type: String, reflect: true },\n bordered: { type: Boolean, reflect: true },\n fullWidth: { attribute: 'full-width', type: Boolean, reflect: true },\n innerClass: { attribute: 'inner-class', type: String }\n }\n\n accent: SpectreAccentEdge | undefined = undefined\n accentColor: SpectreAccentColor | undefined = undefined\n bordered: boolean | undefined = false\n fullWidth: boolean | undefined = false\n innerClass: string | undefined = undefined\n\n override get id(): string {\n return super.id\n }\n\n override set id(value: string | null | undefined) {\n super.id = value\n }\n\n override get title(): string {\n return super.title\n }\n\n override set title(value: string | null | undefined) {\n super.title = value\n }\n\n override connectedCallback(): void {\n super.connectedCallback()\n this.style.display ||= 'block'\n }\n\n protected override getContentContainer(): Element | null {\n return this.querySelector('[data-sp-footer-native]')\n }\n\n protected override isInternalNode(node: Node): boolean {\n if (node.nodeType !== Node.ELEMENT_NODE) {\n return false\n }\n const el = node as Element\n return el.hasAttribute('data-sp-footer-native')\n }\n\n protected override willUpdate(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n if (\n changedProperties.has('accent') &&\n this.accent != null &&\n !isAccentEdge(this.accent)\n ) {\n this.accent = undefined\n }\n if (\n changedProperties.has('accentColor') &&\n this.accentColor != null &&\n !isAccentColor(this.accentColor)\n ) {\n this.accentColor = undefined\n }\n if (changedProperties.has('bordered') && this.bordered == null) {\n this.bordered = false\n }\n if (changedProperties.has('fullWidth') && this.fullWidth == null) {\n this.fullWidth = false\n }\n }\n\n private get footerClasses(): string {\n const recipeClasses = getFooterClasses({\n ...(this.accent !== undefined && {\n accent: this.accent as FooterAccentEdge\n }),\n ...(this.accentColor !== undefined && {\n accentColor: this.accentColor as FooterAccentColor\n }),\n bordered: this.bordered ?? false,\n fullWidth: this.fullWidth ?? false\n })\n const utilityClasses = sanitizeUtilityClasses(this.innerClass)\n return utilityClasses ? `${recipeClasses} ${utilityClasses}` : recipeClasses\n }\n\n // Footer parts usually sit inside authored columns, so markers are matched\n // at any depth.\n protected override updated(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n super.updated(changedProperties)\n const native = this.querySelector('[data-sp-footer-native]')\n if (!native) {\n return\n }\n applyPartClasses(native.querySelectorAll('[slot]'), {\n divider: getFooterDividerClasses(),\n heading: getFooterHeadingClasses(),\n links: getFooterLinksClasses(),\n muted: getFooterMutedClasses(),\n text: getFooterTextClasses()\n })\n }\n\n override render() {\n return html`<footer\n aria-label=\"${ifDefined(this.forwardedAriaLabel)}\"\n class=\"${this.footerClasses}\"\n data-sp-footer-native\n id=\"${ifDefined(this.id || undefined)}\"\n title=\"${ifDefined(this.title || undefined)}\"\n >\n ${this.hasProjectedContent ? this.projectedContent : nothing}\n </footer>`\n }\n}\n\nexport function defineSpectreFooter(\n tagName = 'sp-footer'\n): typeof SpectreFooterElement {\n const existingElement = customElements.get(tagName)\n\n if (existingElement) {\n return existingElement as unknown as typeof SpectreFooterElement\n }\n\n customElements.define(tagName, SpectreFooterElement)\n return SpectreFooterElement\n}\n","import { html, nothing } from 'lit'\nimport { ifDefined } from 'lit/directives/if-defined.js'\n\nimport { SpectreProjectableElement } from '../../utils/projectable'\n\nimport {\n hoverFocusStateProperties,\n hoverFocusStates,\n type SpectreHoverFocusStateProps\n} from '../../utils/states'\n\nimport { getFooterChipClasses } from '@phcdevworks/spectre-ui'\n\nexport interface SpectreFooterChipProps extends SpectreHoverFocusStateProps {\n ariaLabel?: string | null\n disabled?: boolean | undefined\n id?: string | null | undefined\n title?: string | null | undefined\n}\n\nexport class SpectreFooterChipElement\n extends SpectreProjectableElement\n implements SpectreFooterChipProps\n{\n static properties = {\n ...hoverFocusStateProperties,\n disabled: { type: Boolean, reflect: true }\n }\n\n focused: boolean | undefined = false\n hovered: boolean | undefined = false\n\n disabled: boolean | undefined = false\n\n override get id(): string {\n return super.id\n }\n\n override set id(value: string | null | undefined) {\n super.id = value\n }\n\n override get title(): string {\n return super.title\n }\n\n override set title(value: string | null | undefined) {\n super.title = value\n }\n\n protected override getContentContainer(): Element | null {\n return this.querySelector('[data-sp-footer-chip-native]')\n }\n\n protected override isInternalNode(node: Node): boolean {\n if (node.nodeType !== Node.ELEMENT_NODE) {\n return false\n }\n const el = node as Element\n return el.hasAttribute('data-sp-footer-chip-native')\n }\n\n protected override willUpdate(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n if (changedProperties.has('disabled') && this.disabled == null) {\n this.disabled = false\n }\n }\n\n private get footerChipClasses(): string {\n return getFooterChipClasses({\n ...hoverFocusStates(this),\n disabled: this.disabled ?? false\n })\n }\n\n override render() {\n return html`<span\n aria-disabled=\"${ifDefined(this.disabled ? 'true' : undefined)}\"\n aria-label=\"${ifDefined(this.forwardedAriaLabel)}\"\n class=\"${this.footerChipClasses}\"\n data-sp-footer-chip-native\n id=\"${ifDefined(this.id || undefined)}\"\n title=\"${ifDefined(this.title || undefined)}\"\n >\n ${this.hasProjectedContent ? this.projectedContent : nothing}\n </span>`\n }\n}\n\nexport function defineSpectreFooterChip(\n tagName = 'sp-footer-chip'\n): typeof SpectreFooterChipElement {\n const existingElement = customElements.get(tagName)\n\n if (existingElement) {\n return existingElement as unknown as typeof SpectreFooterChipElement\n }\n\n customElements.define(tagName, SpectreFooterChipElement)\n return SpectreFooterChipElement\n}\n","import { html, nothing } from 'lit'\nimport { ifDefined } from 'lit/directives/if-defined.js'\n\nimport { SpectreProjectableElement } from '../../utils/projectable'\n\nimport {\n hoverFocusStateProperties,\n hoverFocusStates,\n type SpectreHoverFocusStateProps\n} from '../../utils/states'\n\nimport { getFooterLinkClasses } from '@phcdevworks/spectre-ui'\n\nexport interface SpectreFooterLinkProps extends SpectreHoverFocusStateProps {\n active?: boolean | undefined\n ariaLabel?: string | null\n disabled?: boolean | undefined\n href?: string | undefined\n id?: string | null | undefined\n title?: string | null | undefined\n}\n\nexport class SpectreFooterLinkElement\n extends SpectreProjectableElement\n implements SpectreFooterLinkProps\n{\n static properties = {\n ...hoverFocusStateProperties,\n active: { type: Boolean, reflect: true },\n disabled: { type: Boolean, reflect: true },\n href: { type: String }\n }\n\n focused: boolean | undefined = false\n hovered: boolean | undefined = false\n\n active: boolean | undefined = false\n disabled: boolean | undefined = false\n href: string | undefined = undefined\n\n override get id(): string {\n return super.id\n }\n\n override set id(value: string | null | undefined) {\n super.id = value\n }\n\n override get title(): string {\n return super.title\n }\n\n override set title(value: string | null | undefined) {\n super.title = value\n }\n\n protected override getContentContainer(): Element | null {\n return this.querySelector('[data-sp-footer-link-native]')\n }\n\n protected override isInternalNode(node: Node): boolean {\n if (node.nodeType !== Node.ELEMENT_NODE) {\n return false\n }\n const el = node as Element\n return el.hasAttribute('data-sp-footer-link-native')\n }\n\n protected override willUpdate(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n if (changedProperties.has('active') && this.active == null) {\n this.active = false\n }\n if (changedProperties.has('disabled') && this.disabled == null) {\n this.disabled = false\n }\n }\n\n private get footerLinkClasses(): string {\n return getFooterLinkClasses({\n ...hoverFocusStates(this),\n active: this.active ?? false,\n disabled: this.disabled ?? false\n })\n }\n\n override render() {\n return html`<a\n aria-current=\"${ifDefined(this.active ? 'page' : undefined)}\"\n aria-disabled=\"${ifDefined(this.disabled ? 'true' : undefined)}\"\n aria-label=\"${ifDefined(this.forwardedAriaLabel)}\"\n class=\"${this.footerLinkClasses}\"\n data-sp-footer-link-native\n href=\"${ifDefined(this.disabled ? undefined : this.href)}\"\n id=\"${ifDefined(this.id || undefined)}\"\n tabindex=\"${ifDefined(this.disabled ? -1 : undefined)}\"\n title=\"${ifDefined(this.title || undefined)}\"\n >\n ${this.hasProjectedContent ? this.projectedContent : nothing}\n </a>`\n }\n}\n\nexport function defineSpectreFooterLink(\n tagName = 'sp-footer-link'\n): typeof SpectreFooterLinkElement {\n const existingElement = customElements.get(tagName)\n\n if (existingElement) {\n return existingElement as unknown as typeof SpectreFooterLinkElement\n }\n\n customElements.define(tagName, SpectreFooterLinkElement)\n return SpectreFooterLinkElement\n}\n","const FOCUSABLE_SELECTOR = [\n 'a[href]',\n 'button:not([disabled])',\n 'input:not([disabled])',\n 'select:not([disabled])',\n 'textarea:not([disabled])',\n '[tabindex]:not([tabindex=\"-1\"])'\n].join(',')\n\nexport function getFocusableElements(root: Element | null): HTMLElement[] {\n if (!root) {\n return []\n }\n return Array.from(root.querySelectorAll<HTMLElement>(FOCUSABLE_SELECTOR))\n}\n\n// Keeps Tab/Shift+Tab cycling inside `root` while a dialog surface is open.\nexport function trapFocus(event: KeyboardEvent, root: Element | null): void {\n const focusable = getFocusableElements(root)\n if (focusable.length === 0) {\n event.preventDefault()\n return\n }\n\n const first = focusable[0]\n const last = focusable[focusable.length - 1]\n const active = document.activeElement\n\n if (event.shiftKey && active === first) {\n event.preventDefault()\n last?.focus()\n } else if (!event.shiftKey && active === last) {\n event.preventDefault()\n first?.focus()\n }\n}\n","import { html, nothing } from 'lit'\nimport { ifDefined } from 'lit/directives/if-defined.js'\n\nimport { getFocusableElements, trapFocus } from '../../utils/focus'\nimport { SpectreProjectableElement } from '../../utils/projectable'\nimport {\n isAccentColor,\n isAccentEdge,\n type SpectreAccentColor,\n type SpectreAccentEdge\n} from '../../utils/form'\n\nimport {\n getModalClasses,\n getModalOverlayClasses,\n type ModalAccentColor,\n type ModalAccentEdge\n} from '@phcdevworks/spectre-ui'\n\nexport interface SpectreModalProps {\n accent?: SpectreAccentEdge | undefined\n accentColor?: SpectreAccentColor | undefined\n ariaLabel?: string | null\n ariaLabelledBy?: string | null\n ariaDescribedBy?: string | null\n fullWidth?: boolean | undefined\n id?: string | null | undefined\n open?: boolean | undefined\n title?: string | null | undefined\n}\n\nexport class SpectreModalElement\n extends SpectreProjectableElement\n implements SpectreModalProps\n{\n static properties = {\n accent: { type: String, reflect: true },\n accentColor: { attribute: 'accent-color', type: String, reflect: true },\n fullWidth: { attribute: 'full-width', type: Boolean, reflect: true },\n open: { type: Boolean, reflect: true }\n }\n\n accent: SpectreAccentEdge | undefined = undefined\n accentColor: SpectreAccentColor | undefined = undefined\n fullWidth: boolean | undefined = false\n open: boolean | undefined = false\n\n private previouslyFocusedElement: HTMLElement | null = null\n\n override get id(): string {\n return super.id\n }\n\n override set id(value: string | null | undefined) {\n super.id = value\n }\n\n override get title(): string {\n return super.title\n }\n\n override set title(value: string | null | undefined) {\n super.title = value\n }\n\n protected override getContentContainer(): Element | null {\n return this.querySelector('[data-sp-modal-native]')\n }\n\n protected override isInternalNode(node: Node): boolean {\n if (node.nodeType !== Node.ELEMENT_NODE) {\n return false\n }\n const el = node as Element\n return (\n el.hasAttribute('data-sp-modal-native') ||\n el.hasAttribute('data-sp-modal-overlay')\n )\n }\n\n protected override willUpdate(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n if (\n changedProperties.has('accent') &&\n this.accent != null &&\n !isAccentEdge(this.accent)\n ) {\n this.accent = undefined\n }\n if (\n changedProperties.has('accentColor') &&\n this.accentColor != null &&\n !isAccentColor(this.accentColor)\n ) {\n this.accentColor = undefined\n }\n if (changedProperties.has('fullWidth') && this.fullWidth == null) {\n this.fullWidth = false\n }\n if (changedProperties.has('open') && this.open == null) {\n this.open = false\n }\n }\n\n protected override updated(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n super.updated(changedProperties)\n\n if (!changedProperties.has('open')) {\n return\n }\n\n if (this.open) {\n this.previouslyFocusedElement = document.activeElement as HTMLElement\n this.focusFirstElement()\n } else if (this.previouslyFocusedElement) {\n this.previouslyFocusedElement.focus()\n this.previouslyFocusedElement = null\n }\n }\n\n override connectedCallback(): void {\n super.connectedCallback()\n document.addEventListener('keydown', this.handleDocumentKeydown)\n }\n\n override disconnectedCallback(): void {\n document.removeEventListener('keydown', this.handleDocumentKeydown)\n super.disconnectedCallback()\n }\n\n private get modalElement(): HTMLElement | null {\n return this.querySelector('[data-sp-modal-native]')\n }\n\n private focusFirstElement(): void {\n const [first] = getFocusableElements(this.modalElement)\n ;(first ?? this.modalElement)?.focus()\n }\n\n private handleDocumentKeydown = (event: KeyboardEvent): void => {\n if (!this.open) {\n return\n }\n\n if (event.key === 'Escape') {\n this.close()\n return\n }\n\n if (event.key === 'Tab') {\n trapFocus(event, this.modalElement)\n }\n }\n\n private close(): void {\n if (!this.open) {\n return\n }\n this.open = false\n this.dispatchEvent(new CustomEvent('sp-close', { bubbles: true }))\n }\n\n private get overlayClasses(): string {\n return getModalOverlayClasses({ open: this.open ?? false })\n }\n\n private get modalClasses(): string {\n return getModalClasses({\n ...(this.accent !== undefined && {\n accent: this.accent as ModalAccentEdge\n }),\n ...(this.accentColor !== undefined && {\n accentColor: this.accentColor as ModalAccentColor\n }),\n open: this.open ?? false,\n fullWidth: this.fullWidth ?? false\n })\n }\n\n override render() {\n const isHidden = !this.open\n\n return html`<div\n aria-hidden=\"${ifDefined(isHidden ? 'true' : undefined)}\"\n class=\"${this.overlayClasses}\"\n data-sp-modal-overlay\n @click=\"${(event: Event) => {\n if (event.target === event.currentTarget) {\n this.close()\n }\n }}\"\n >\n <div\n aria-describedby=\"${ifDefined(this.forwardedAriaDescribedBy)}\"\n aria-hidden=\"${ifDefined(isHidden ? 'true' : undefined)}\"\n aria-label=\"${ifDefined(this.forwardedAriaLabel)}\"\n aria-labelledby=\"${ifDefined(this.forwardedAriaLabelledBy)}\"\n aria-modal=\"true\"\n class=\"${this.modalClasses}\"\n data-sp-modal-native\n id=\"${ifDefined(this.id || undefined)}\"\n role=\"dialog\"\n tabindex=\"-1\"\n title=\"${ifDefined(this.title || undefined)}\"\n >\n ${this.hasProjectedContent ? this.projectedContent : nothing}\n </div>\n </div>`\n }\n}\n\nexport function defineSpectreModal(\n tagName = 'sp-modal'\n): typeof SpectreModalElement {\n const existingElement = customElements.get(tagName)\n\n if (existingElement) {\n return existingElement as unknown as typeof SpectreModalElement\n }\n\n customElements.define(tagName, SpectreModalElement)\n return SpectreModalElement\n}\n","import { html, nothing } from 'lit'\nimport { ifDefined } from 'lit/directives/if-defined.js'\n\nimport { applyPartClasses, childElements } from '../../utils/parts'\nimport { SpectreProjectableElement } from '../../utils/projectable'\nimport {\n isAccentColor,\n isAccentEdge,\n isNavAlign,\n sanitizeUtilityClasses,\n type SpectreAccentColor,\n type SpectreAccentEdge,\n type SpectreNavAlign\n} from '../../utils/form'\n\nimport {\n getNavClasses,\n getNavLinksClasses,\n type NavAccentColor,\n type NavAccentEdge,\n type NavAlign\n} from '@phcdevworks/spectre-ui'\n\nexport interface SpectreNavProps {\n accent?: SpectreAccentEdge | undefined\n accentColor?: SpectreAccentColor | undefined\n align?: SpectreNavAlign | undefined\n ariaLabel?: string | null\n bordered?: boolean | undefined\n fullWidth?: boolean | undefined\n id?: string | null | undefined\n innerClass?: string | undefined\n sticky?: boolean | undefined\n title?: string | null | undefined\n}\n\nexport class SpectreNavElement\n extends SpectreProjectableElement\n implements SpectreNavProps\n{\n static properties = {\n accent: { type: String, reflect: true },\n accentColor: { attribute: 'accent-color', type: String, reflect: true },\n align: { type: String, reflect: true },\n bordered: { type: Boolean, reflect: true },\n fullWidth: { attribute: 'full-width', type: Boolean, reflect: true },\n innerClass: { attribute: 'inner-class', type: String },\n sticky: { type: Boolean, reflect: true }\n }\n\n accent: SpectreAccentEdge | undefined = undefined\n accentColor: SpectreAccentColor | undefined = undefined\n align: SpectreNavAlign | undefined = undefined\n bordered: boolean | undefined = false\n fullWidth: boolean | undefined = false\n innerClass: string | undefined = undefined\n sticky: boolean | undefined = false\n\n override get id(): string {\n return super.id\n }\n\n override set id(value: string | null | undefined) {\n super.id = value\n }\n\n override get title(): string {\n return super.title\n }\n\n override set title(value: string | null | undefined) {\n super.title = value\n }\n\n override connectedCallback(): void {\n super.connectedCallback()\n this.style.display ||= 'block'\n }\n\n protected override getContentContainer(): Element | null {\n return this.querySelector('[data-sp-nav-native]')\n }\n\n protected override isInternalNode(node: Node): boolean {\n if (node.nodeType !== Node.ELEMENT_NODE) {\n return false\n }\n const el = node as Element\n return el.hasAttribute('data-sp-nav-native')\n }\n\n protected override willUpdate(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n if (\n changedProperties.has('accent') &&\n this.accent != null &&\n !isAccentEdge(this.accent)\n ) {\n this.accent = undefined\n }\n if (\n changedProperties.has('accentColor') &&\n this.accentColor != null &&\n !isAccentColor(this.accentColor)\n ) {\n this.accentColor = undefined\n }\n if (changedProperties.has('bordered') && this.bordered == null) {\n this.bordered = false\n }\n if (changedProperties.has('fullWidth') && this.fullWidth == null) {\n this.fullWidth = false\n }\n if (changedProperties.has('sticky') && this.sticky == null) {\n this.sticky = false\n }\n if (\n changedProperties.has('align') &&\n this.align != null &&\n !isNavAlign(this.align)\n ) {\n this.align = undefined\n }\n }\n\n private get navClasses(): string {\n const recipeClasses = getNavClasses({\n ...(this.accent !== undefined && {\n accent: this.accent as NavAccentEdge\n }),\n ...(this.accentColor !== undefined && {\n accentColor: this.accentColor as NavAccentColor\n }),\n bordered: this.bordered ?? false,\n fullWidth: this.fullWidth ?? false,\n sticky: this.sticky ?? false,\n ...(this.align !== undefined && { align: this.align as NavAlign })\n })\n const utilityClasses = sanitizeUtilityClasses(this.innerClass)\n return utilityClasses ? `${recipeClasses} ${utilityClasses}` : recipeClasses\n }\n\n protected override updated(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n super.updated(changedProperties)\n applyPartClasses(childElements(this.projectedContent), {\n links: getNavLinksClasses()\n })\n }\n\n override render() {\n return html`<nav\n aria-label=\"${ifDefined(this.forwardedAriaLabel)}\"\n class=\"${this.navClasses}\"\n data-sp-nav-native\n id=\"${ifDefined(this.id || undefined)}\"\n title=\"${ifDefined(this.title || undefined)}\"\n >\n ${this.hasProjectedContent ? this.projectedContent : nothing}\n </nav>`\n }\n}\n\nexport function defineSpectreNav(tagName = 'sp-nav'): typeof SpectreNavElement {\n const existingElement = customElements.get(tagName)\n\n if (existingElement) {\n return existingElement as unknown as typeof SpectreNavElement\n }\n\n customElements.define(tagName, SpectreNavElement)\n return SpectreNavElement\n}\n","import { html, nothing } from 'lit'\nimport { ifDefined } from 'lit/directives/if-defined.js'\n\nimport { SpectreBaseElement } from '../../utils/base'\nimport { hasMeaningfulContent } from '../../utils/dom'\nimport { applyPartClasses, childElements } from '../../utils/parts'\nimport {\n isAccentColor,\n isAccentEdge,\n isDropdownPlacement,\n type SpectreAccentColor,\n type SpectreAccentEdge,\n type SpectreDropdownPlacement\n} from '../../utils/form'\nimport {\n hoverFocusStateProperties,\n hoverFocusStates,\n type SpectreHoverFocusStateProps\n} from '../../utils/states'\n\nimport {\n getDropdownClasses,\n getDropdownDividerClasses,\n getDropdownHeaderClasses,\n getDropdownItemClasses,\n getDropdownMenuClasses,\n getNavLinkClasses,\n type DropdownAccentColor,\n type DropdownAccentEdge\n} from '@phcdevworks/spectre-ui'\n\nexport interface SpectreNavItemProps extends SpectreHoverFocusStateProps {\n accent?: SpectreAccentEdge | undefined\n accentColor?: SpectreAccentColor | undefined\n active?: boolean | undefined\n ariaLabel?: string | null\n disabled?: boolean | undefined\n dropdown?: boolean | undefined\n fullWidth?: boolean | undefined\n href?: string | undefined\n id?: string | null | undefined\n label?: string | undefined\n mega?: boolean | undefined\n open?: boolean | undefined\n placement?: SpectreDropdownPlacement | undefined\n title?: string | null | undefined\n viewport?: boolean | undefined\n}\n\nexport class SpectreNavItemElement\n extends SpectreBaseElement\n implements SpectreNavItemProps\n{\n static properties = {\n ...hoverFocusStateProperties,\n accent: { type: String, reflect: true },\n accentColor: { attribute: 'accent-color', type: String, reflect: true },\n active: { type: Boolean, reflect: true },\n disabled: { type: Boolean, reflect: true },\n dropdown: { type: Boolean, reflect: true },\n fullWidth: { attribute: 'full-width', type: Boolean, reflect: true },\n href: { type: String },\n label: { type: String },\n mega: { type: Boolean, reflect: true },\n open: { type: Boolean, reflect: true },\n placement: { type: String, reflect: true },\n viewport: { type: Boolean, reflect: true }\n }\n\n focused: boolean | undefined = false\n hovered: boolean | undefined = false\n\n accent: SpectreAccentEdge | undefined = undefined\n accentColor: SpectreAccentColor | undefined = undefined\n active: boolean | undefined = false\n disabled: boolean | undefined = false\n dropdown: boolean | undefined = false\n fullWidth: boolean | undefined = false\n href: string | undefined = undefined\n label: string | undefined = undefined\n mega: boolean | undefined = false\n open: boolean | undefined = false\n placement: SpectreDropdownPlacement | undefined = 'bottom-start'\n viewport: boolean | undefined = false\n\n private triggerContent: Node[] = []\n private menuContent: Node[] = []\n private contentObserver?: MutationObserver | undefined\n\n override get id(): string {\n return super.id\n }\n\n override set id(value: string | null | undefined) {\n super.id = value\n }\n\n override get title(): string {\n return super.title\n }\n\n override set title(value: string | null | undefined) {\n super.title = value\n }\n\n private isInternalNode(node: Node): boolean {\n if (node.nodeType !== Node.ELEMENT_NODE) {\n return false\n }\n const el = node as Element\n return (\n el.hasAttribute('data-sp-nav-item-menu') ||\n el.hasAttribute('data-sp-nav-item-trigger')\n )\n }\n\n private syncProjectedContent(): boolean {\n const nextTriggerContent: Node[] = []\n const nextMenuContent: Node[] = []\n\n this.childNodes.forEach((node) => {\n if (this.isInternalNode(node)) {\n return\n }\n const isTriggerSlot =\n node.nodeType === Node.ELEMENT_NODE &&\n (node as Element).getAttribute('slot') === 'trigger'\n if (isTriggerSlot) {\n nextTriggerContent.push(node)\n } else {\n nextMenuContent.push(node)\n }\n })\n\n const changed =\n nextTriggerContent.length !== this.triggerContent.length ||\n nextTriggerContent.some((n, i) => n !== this.triggerContent[i]) ||\n nextMenuContent.length !== this.menuContent.length ||\n nextMenuContent.some((n, i) => n !== this.menuContent[i])\n\n if (changed) {\n this.triggerContent = nextTriggerContent\n this.menuContent = nextMenuContent\n }\n\n return changed\n }\n\n private get hasTriggerContent(): boolean {\n return hasMeaningfulContent(this.triggerContent)\n }\n\n private get hasMenuContent(): boolean {\n return hasMeaningfulContent(this.menuContent)\n }\n\n override connectedCallback(): void {\n super.connectedCallback()\n this.syncProjectedContent()\n this.startContentObserver()\n document.addEventListener('click', this.handleDocumentClick)\n document.addEventListener('keydown', this.handleDocumentKeydown)\n }\n\n override disconnectedCallback(): void {\n this.stopContentObserver()\n document.removeEventListener('click', this.handleDocumentClick)\n document.removeEventListener('keydown', this.handleDocumentKeydown)\n super.disconnectedCallback()\n }\n\n protected override update(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n this.stopContentObserver()\n super.update(changedProperties)\n this.startContentObserver()\n }\n\n private startContentObserver(): void {\n if (this.contentObserver) {\n return\n }\n this.contentObserver = new MutationObserver(() => {\n if (this.syncProjectedContent()) {\n this.requestUpdate()\n }\n })\n this.contentObserver.observe(this, { childList: true })\n }\n\n private stopContentObserver(): void {\n this.contentObserver?.disconnect()\n this.contentObserver = undefined\n }\n\n protected override willUpdate(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n if (\n changedProperties.has('accent') &&\n this.accent != null &&\n !isAccentEdge(this.accent)\n ) {\n this.accent = undefined\n }\n if (\n changedProperties.has('accentColor') &&\n this.accentColor != null &&\n !isAccentColor(this.accentColor)\n ) {\n this.accentColor = undefined\n }\n if (changedProperties.has('active') && this.active == null) {\n this.active = false\n }\n if (changedProperties.has('disabled') && this.disabled == null) {\n this.disabled = false\n }\n if (changedProperties.has('fullWidth') && this.fullWidth == null) {\n this.fullWidth = false\n }\n if (changedProperties.has('viewport') && this.viewport == null) {\n this.viewport = false\n }\n if (changedProperties.has('dropdown') && this.dropdown == null) {\n this.dropdown = false\n }\n if (changedProperties.has('mega') && this.mega == null) {\n this.mega = false\n }\n if (changedProperties.has('open') && this.open == null) {\n this.open = false\n }\n if (\n changedProperties.has('placement') &&\n (this.placement == null || !isDropdownPlacement(this.placement))\n ) {\n this.placement = 'bottom-start'\n }\n }\n\n protected override updated(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n super.updated(changedProperties)\n applyPartClasses(childElements(this.menuContent), {\n divider: getDropdownDividerClasses(),\n header: getDropdownHeaderClasses(),\n item: getDropdownItemClasses()\n })\n }\n\n private handleDocumentClick = (event: MouseEvent): void => {\n if (!this.open) {\n return\n }\n if (!event.composedPath().includes(this)) {\n this.close()\n }\n }\n\n private handleDocumentKeydown = (event: KeyboardEvent): void => {\n if (event.key === 'Escape' && this.open) {\n this.close()\n this.triggerElement?.focus()\n }\n }\n\n private get triggerElement(): HTMLButtonElement | null {\n return this.querySelector('[data-sp-nav-item-trigger]')\n }\n\n private toggle(): void {\n if (this.open) {\n this.close()\n } else {\n this.openMenu()\n }\n }\n\n private openMenu(): void {\n if (this.open) {\n return\n }\n this.open = true\n this.dispatchEvent(new CustomEvent('sp-open', { bubbles: true }))\n }\n\n private close(): void {\n if (!this.open) {\n return\n }\n this.open = false\n this.dispatchEvent(new CustomEvent('sp-close', { bubbles: true }))\n }\n\n private get wrapperClasses(): string {\n return getDropdownClasses({\n fullWidth: this.fullWidth ?? false,\n mega: this.mega ?? false,\n viewport: this.viewport ?? false\n })\n }\n\n private get menuClasses(): string {\n return getDropdownMenuClasses({\n ...(this.accent !== undefined && {\n accent: this.accent as DropdownAccentEdge\n }),\n ...(this.accentColor !== undefined && {\n accentColor: this.accentColor as DropdownAccentColor\n }),\n mega: this.mega ?? false,\n viewport: this.viewport ?? false,\n open: this.open ?? false,\n placement: this.placement as SpectreDropdownPlacement\n })\n }\n\n private get navLinkClasses(): string {\n return getNavLinkClasses({\n ...hoverFocusStates(this),\n active: this.active ?? false,\n disabled: this.disabled ?? false\n })\n }\n\n private renderLink() {\n return html`<a\n aria-current=\"${ifDefined(this.active ? 'page' : undefined)}\"\n aria-disabled=\"${ifDefined(this.disabled ? 'true' : undefined)}\"\n aria-label=\"${ifDefined(this.forwardedAriaLabel)}\"\n class=\"${this.navLinkClasses}\"\n href=\"${ifDefined(this.disabled ? undefined : this.href)}\"\n id=\"${ifDefined(this.id || undefined)}\"\n title=\"${ifDefined(this.title || undefined)}\"\n >${this.hasMenuContent ? this.menuContent : this.label}</a\n >`\n }\n\n private renderDropdown() {\n return html`<div\n class=\"${this.wrapperClasses}\"\n id=\"${ifDefined(this.id || undefined)}\"\n title=\"${ifDefined(this.title || undefined)}\"\n >\n <button\n aria-expanded=\"${this.open ? 'true' : 'false'}\"\n aria-haspopup=\"true\"\n aria-label=\"${ifDefined(this.forwardedAriaLabel ?? this.label)}\"\n class=\"${this.navLinkClasses}\"\n data-sp-nav-item-trigger\n ?disabled=\"${this.disabled ?? false}\"\n type=\"button\"\n @click=\"${() => this.toggle()}\"\n >\n ${this.hasTriggerContent ? this.triggerContent : this.label}\n </button>\n <div class=\"${this.menuClasses}\" data-sp-nav-item-menu>\n ${this.hasMenuContent ? this.menuContent : nothing}\n </div>\n </div>`\n }\n\n override render() {\n return this.dropdown ? this.renderDropdown() : this.renderLink()\n }\n}\n\nexport function defineSpectreNavItem(\n tagName = 'sp-nav-item'\n): typeof SpectreNavItemElement {\n const existingElement = customElements.get(tagName)\n\n if (existingElement) {\n return existingElement as unknown as typeof SpectreNavItemElement\n }\n\n customElements.define(tagName, SpectreNavItemElement)\n return SpectreNavItemElement\n}\n","import { html, nothing } from 'lit'\nimport { ifDefined } from 'lit/directives/if-defined.js'\n\nimport { applyPartClasses, childElements } from '../../utils/parts'\nimport { SpectreProjectableElement } from '../../utils/projectable'\n\nimport {\n getSidebarBackdropClasses,\n getSidebarClasses,\n getSidebarGroupClasses,\n getSidebarGroupSummaryClasses,\n getSidebarHeaderClasses,\n getSidebarToggleClasses\n} from '@phcdevworks/spectre-ui'\n\nexport interface SpectreSidebarProps {\n ariaLabel?: string | null\n bordered?: boolean | undefined\n hideToggle?: boolean | undefined\n id?: string | null | undefined\n open?: boolean | undefined\n title?: string | null | undefined\n toggleLabel?: string | undefined\n}\n\nexport class SpectreSidebarElement\n extends SpectreProjectableElement\n implements SpectreSidebarProps\n{\n static properties = {\n bordered: { type: Boolean, reflect: true },\n hideToggle: { attribute: 'hide-toggle', type: Boolean, reflect: true },\n open: { type: Boolean, reflect: false },\n toggleLabel: { attribute: 'toggle-label', type: String }\n }\n\n bordered: boolean | undefined = false\n hideToggle: boolean | undefined = false\n open: boolean | undefined = false\n toggleLabel: string | undefined = 'Toggle sidebar'\n\n override get id(): string {\n return super.id\n }\n\n override set id(value: string | null | undefined) {\n super.id = value\n }\n\n override get title(): string {\n return super.title\n }\n\n override set title(value: string | null | undefined) {\n super.title = value\n }\n\n protected override getContentContainer(): Element | null {\n return this.querySelector('[data-sp-sidebar-native]')\n }\n\n protected override isInternalNode(node: Node): boolean {\n if (node.nodeType !== Node.ELEMENT_NODE) {\n return false\n }\n const el = node as Element\n return (\n el.hasAttribute('data-sp-sidebar-native') ||\n el.hasAttribute('data-sp-sidebar-toggle') ||\n el.hasAttribute('data-sp-sidebar-backdrop')\n )\n }\n\n protected override willUpdate(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n if (changedProperties.has('bordered') && this.bordered == null) {\n this.bordered = false\n }\n if (changedProperties.has('hideToggle') && this.hideToggle == null) {\n this.hideToggle = false\n }\n if (changedProperties.has('open') && this.open == null) {\n this.open = false\n }\n if (changedProperties.has('toggleLabel') && !this.toggleLabel) {\n this.toggleLabel = 'Toggle sidebar'\n }\n if (changedProperties.has('open')) {\n HTMLElement.prototype.setAttribute.call(\n this,\n 'data-sidebar-open',\n this.open ? 'true' : 'false'\n )\n }\n }\n\n override connectedCallback(): void {\n super.connectedCallback()\n HTMLElement.prototype.setAttribute.call(\n this,\n 'data-sidebar-open',\n this.open ? 'true' : 'false'\n )\n document.addEventListener('keydown', this.handleDocumentKeydown)\n }\n\n override disconnectedCallback(): void {\n document.removeEventListener('keydown', this.handleDocumentKeydown)\n super.disconnectedCallback()\n }\n\n private handleDocumentKeydown = (event: KeyboardEvent): void => {\n if (event.key === 'Escape' && this.open) {\n this.close()\n }\n }\n\n private toggle(): void {\n if (this.open) {\n this.close()\n } else {\n this.openSidebar()\n }\n }\n\n private openSidebar(): void {\n if (this.open) {\n return\n }\n this.open = true\n this.dispatchEvent(new CustomEvent('sp-open', { bubbles: true }))\n }\n\n private close(): void {\n if (!this.open) {\n return\n }\n this.open = false\n this.dispatchEvent(new CustomEvent('sp-close', { bubbles: true }))\n }\n\n private get sidebarClasses(): string {\n return getSidebarClasses({ bordered: this.bordered ?? false })\n }\n\n protected override updated(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n super.updated(changedProperties)\n const elements = childElements(this.projectedContent)\n applyPartClasses(elements, {\n group: getSidebarGroupClasses(),\n header: getSidebarHeaderClasses()\n })\n elements\n .filter((element) => element.getAttribute('slot') === 'group')\n .forEach((group) => {\n const summary = group.querySelector(':scope > summary')\n summary?.classList.add(\n ...getSidebarGroupSummaryClasses().split(/\\s+/).filter(Boolean)\n )\n })\n }\n\n override render() {\n return html`${\n this.hideToggle\n ? nothing\n : html`<button\n aria-expanded=\"${this.open ? 'true' : 'false'}\"\n aria-label=\"${ifDefined(this.toggleLabel)}\"\n class=\"${getSidebarToggleClasses()}\"\n data-sp-sidebar-toggle\n type=\"button\"\n @click=\"${() => this.toggle()}\"\n >\n ☰\n </button>`\n }\n <div\n class=\"${getSidebarBackdropClasses()}\"\n data-sp-sidebar-backdrop\n @click=\"${() => this.close()}\"\n ></div>\n <aside\n aria-label=\"${ifDefined(this.forwardedAriaLabel)}\"\n class=\"${this.sidebarClasses}\"\n data-sp-sidebar-native\n id=\"${ifDefined(this.id || undefined)}\"\n title=\"${ifDefined(this.title || undefined)}\"\n >\n ${this.hasProjectedContent ? this.projectedContent : nothing}\n </aside>`\n }\n}\n\nexport function defineSpectreSidebar(\n tagName = 'sp-sidebar'\n): typeof SpectreSidebarElement {\n const existingElement = customElements.get(tagName)\n\n if (existingElement) {\n return existingElement as unknown as typeof SpectreSidebarElement\n }\n\n customElements.define(tagName, SpectreSidebarElement)\n return SpectreSidebarElement\n}\n","import { html, nothing } from 'lit'\nimport { ifDefined } from 'lit/directives/if-defined.js'\n\nimport { SpectreProjectableElement } from '../../utils/projectable'\nimport {\n isSidebarLinkLevel,\n type SpectreSidebarLinkLevel\n} from '../../utils/form'\n\nimport {\n hoverFocusStateProperties,\n hoverFocusStates,\n type SpectreHoverFocusStateProps\n} from '../../utils/states'\n\nimport {\n getSidebarLinkClasses,\n type SidebarLinkLevel\n} from '@phcdevworks/spectre-ui'\n\nexport interface SpectreSidebarLinkProps extends SpectreHoverFocusStateProps {\n active?: boolean | undefined\n ariaLabel?: string | null\n disabled?: boolean | undefined\n href?: string | undefined\n id?: string | null | undefined\n level?: SpectreSidebarLinkLevel | undefined\n title?: string | null | undefined\n}\n\nexport class SpectreSidebarLinkElement\n extends SpectreProjectableElement\n implements SpectreSidebarLinkProps\n{\n static properties = {\n ...hoverFocusStateProperties,\n active: { type: Boolean, reflect: true },\n disabled: { type: Boolean, reflect: true },\n href: { type: String },\n level: { type: String, reflect: true }\n }\n\n focused: boolean | undefined = false\n hovered: boolean | undefined = false\n\n active: boolean | undefined = false\n disabled: boolean | undefined = false\n href: string | undefined = undefined\n level: SpectreSidebarLinkLevel | undefined = 'parent'\n\n override get id(): string {\n return super.id\n }\n\n override set id(value: string | null | undefined) {\n super.id = value\n }\n\n override get title(): string {\n return super.title\n }\n\n override set title(value: string | null | undefined) {\n super.title = value\n }\n\n protected override getContentContainer(): Element | null {\n return this.querySelector('[data-sp-sidebar-link-native]')\n }\n\n protected override isInternalNode(node: Node): boolean {\n if (node.nodeType !== Node.ELEMENT_NODE) {\n return false\n }\n const el = node as Element\n return el.hasAttribute('data-sp-sidebar-link-native')\n }\n\n protected override willUpdate(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n if (changedProperties.has('active') && this.active == null) {\n this.active = false\n }\n if (changedProperties.has('disabled') && this.disabled == null) {\n this.disabled = false\n }\n if (\n changedProperties.has('level') &&\n (this.level == null || !isSidebarLinkLevel(this.level))\n ) {\n this.level = 'parent'\n }\n }\n\n private get sidebarLinkClasses(): string {\n return getSidebarLinkClasses({\n ...hoverFocusStates(this),\n active: this.active ?? false,\n disabled: this.disabled ?? false,\n level: this.level as SidebarLinkLevel\n })\n }\n\n override render() {\n return html`<a\n aria-current=\"${ifDefined(this.active ? 'page' : undefined)}\"\n aria-disabled=\"${ifDefined(this.disabled ? 'true' : undefined)}\"\n aria-label=\"${ifDefined(this.forwardedAriaLabel)}\"\n class=\"${this.sidebarLinkClasses}\"\n data-sp-sidebar-link-native\n href=\"${ifDefined(this.disabled ? undefined : this.href)}\"\n id=\"${ifDefined(this.id || undefined)}\"\n tabindex=\"${ifDefined(this.disabled ? -1 : undefined)}\"\n title=\"${ifDefined(this.title || undefined)}\"\n >\n ${this.hasProjectedContent ? this.projectedContent : nothing}\n </a>`\n }\n}\n\nexport function defineSpectreSidebarLink(\n tagName = 'sp-sidebar-link'\n): typeof SpectreSidebarLinkElement {\n const existingElement = customElements.get(tagName)\n\n if (existingElement) {\n return existingElement as unknown as typeof SpectreSidebarLinkElement\n }\n\n customElements.define(tagName, SpectreSidebarLinkElement)\n return SpectreSidebarLinkElement\n}\n","import { html } from 'lit'\nimport { ifDefined } from 'lit/directives/if-defined.js'\n\nimport { SpectreProjectableElement } from '../../utils/projectable'\n\nimport { getSidebarToggleClasses } from '@phcdevworks/spectre-ui'\n\ninterface SpectreSidebarTarget extends HTMLElement {\n open?: boolean\n}\n\nexport interface SpectreSidebarToggleProps {\n ariaLabel?: string | null\n for?: string | undefined\n id?: string | null | undefined\n label?: string | undefined\n title?: string | null | undefined\n}\n\nexport class SpectreSidebarToggleElement\n extends SpectreProjectableElement\n implements SpectreSidebarToggleProps\n{\n static properties = {\n for: { type: String },\n label: { type: String }\n }\n\n for: string | undefined = undefined\n label: string | undefined = 'Toggle sidebar'\n\n private expanded = false\n\n override get id(): string {\n return super.id\n }\n\n override set id(value: string | null | undefined) {\n super.id = value\n }\n\n override get title(): string {\n return super.title\n }\n\n override set title(value: string | null | undefined) {\n super.title = value\n }\n\n protected override getContentContainer(): Element | null {\n return this.querySelector('[data-sp-sidebar-toggle-native]')\n }\n\n protected override isInternalNode(node: Node): boolean {\n if (node.nodeType !== Node.ELEMENT_NODE) {\n return false\n }\n const el = node as Element\n return el.hasAttribute('data-sp-sidebar-toggle-native')\n }\n\n protected override willUpdate(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n if (changedProperties.has('label') && !this.label) {\n this.label = 'Toggle sidebar'\n }\n }\n\n override connectedCallback(): void {\n super.connectedCallback()\n document.addEventListener('sp-open', this.handleTargetToggle)\n document.addEventListener('sp-close', this.handleTargetToggle)\n this.syncExpanded()\n }\n\n override disconnectedCallback(): void {\n document.removeEventListener('sp-open', this.handleTargetToggle)\n document.removeEventListener('sp-close', this.handleTargetToggle)\n super.disconnectedCallback()\n }\n\n protected override updated(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n super.updated(changedProperties)\n if (changedProperties.has('for')) {\n this.syncExpanded()\n }\n }\n\n private get targetElement(): SpectreSidebarTarget | null {\n if (!this.for) {\n return null\n }\n const native = document.getElementById(this.for)\n return (\n (native?.closest('sp-sidebar') as SpectreSidebarTarget | null) ?? null\n )\n }\n\n private handleTargetToggle = (event: Event): void => {\n if (event.target !== this.targetElement) {\n return\n }\n this.syncExpanded()\n }\n\n private syncExpanded(): void {\n const next = Boolean(this.targetElement?.open)\n if (next !== this.expanded) {\n this.expanded = next\n this.requestUpdate()\n }\n }\n\n private handleClick(): void {\n const target = this.targetElement\n if (!target) {\n return\n }\n const nextOpen = !target.open\n target.open = nextOpen\n target.dispatchEvent(\n new CustomEvent(nextOpen ? 'sp-open' : 'sp-close', { bubbles: true })\n )\n }\n\n private get toggleClasses(): string {\n return getSidebarToggleClasses()\n }\n\n override render() {\n return html`<button\n aria-controls=\"${ifDefined(this.for)}\"\n aria-expanded=\"${this.expanded ? 'true' : 'false'}\"\n aria-label=\"${ifDefined(this.forwardedAriaLabel ?? this.label)}\"\n class=\"${this.toggleClasses}\"\n data-sp-sidebar-toggle-native\n id=\"${ifDefined(this.id || undefined)}\"\n title=\"${ifDefined(this.title || undefined)}\"\n type=\"button\"\n @click=\"${() => this.handleClick()}\"\n >\n ${this.hasProjectedContent ? this.projectedContent : html`☰`}\n </button>`\n }\n}\n\nexport function defineSpectreSidebarToggle(\n tagName = 'sp-sidebar-toggle'\n): typeof SpectreSidebarToggleElement {\n const existingElement = customElements.get(tagName)\n\n if (existingElement) {\n return existingElement as unknown as typeof SpectreSidebarToggleElement\n }\n\n customElements.define(tagName, SpectreSidebarToggleElement)\n return SpectreSidebarToggleElement\n}\n","import { html, nothing } from 'lit'\nimport { ifDefined } from 'lit/directives/if-defined.js'\n\nimport { SpectreBaseElement } from '../../utils/base'\nimport { hasMeaningfulContent } from '../../utils/dom'\nimport {\n isAccentColor,\n isAccentEdge,\n isToastVariant,\n normalizeInt,\n type SpectreAccentColor,\n type SpectreAccentEdge,\n type SpectreToastVariant\n} from '../../utils/form'\n\nimport {\n getToastClasses,\n getToastIconClasses,\n type ToastAccentColor,\n type ToastAccentEdge\n} from '@phcdevworks/spectre-ui'\n\nexport interface SpectreToastProps {\n accent?: SpectreAccentEdge | undefined\n accentColor?: SpectreAccentColor | undefined\n ariaLabel?: string | null\n autoDismiss?: number | undefined\n dismissed?: boolean | undefined\n fullWidth?: boolean | undefined\n id?: string | null | undefined\n title?: string | null | undefined\n variant?: SpectreToastVariant | undefined\n}\n\nexport class SpectreToastElement\n extends SpectreBaseElement\n implements SpectreToastProps\n{\n static properties = {\n accent: { type: String, reflect: true },\n accentColor: { attribute: 'accent-color', type: String, reflect: true },\n autoDismiss: { attribute: 'auto-dismiss', type: Number },\n dismissed: { type: Boolean, reflect: true },\n fullWidth: { attribute: 'full-width', type: Boolean, reflect: true },\n variant: { type: String, reflect: true }\n }\n\n accent: SpectreAccentEdge | undefined = undefined\n accentColor: SpectreAccentColor | undefined = undefined\n autoDismiss: number | undefined\n dismissed: boolean | undefined = false\n fullWidth: boolean | undefined = false\n variant: SpectreToastVariant | undefined = 'info'\n\n private iconContent: Node[] = []\n private bodyContent: Node[] = []\n private contentObserver?: MutationObserver | undefined\n private autoDismissTimer?: ReturnType<typeof setTimeout> | undefined\n\n override get id(): string {\n return super.id\n }\n\n override set id(value: string | null | undefined) {\n super.id = value\n }\n\n override get title(): string {\n return super.title\n }\n\n override set title(value: string | null | undefined) {\n super.title = value\n }\n\n private isInternalNode(node: Node): boolean {\n if (node.nodeType !== Node.ELEMENT_NODE) {\n return false\n }\n const el = node as Element\n return (\n el.hasAttribute('data-sp-toast-native') ||\n el.hasAttribute('data-sp-toast-icon')\n )\n }\n\n private syncProjectedContent(): boolean {\n const nextIconContent: Node[] = []\n const nextBodyContent: Node[] = []\n\n this.childNodes.forEach((node) => {\n if (this.isInternalNode(node)) {\n return\n }\n const isIconSlot =\n node.nodeType === Node.ELEMENT_NODE &&\n (node as Element).getAttribute('slot') === 'icon'\n if (isIconSlot) {\n nextIconContent.push(node)\n } else {\n nextBodyContent.push(node)\n }\n })\n\n const changed =\n nextIconContent.length !== this.iconContent.length ||\n nextIconContent.some((n, i) => n !== this.iconContent[i]) ||\n nextBodyContent.length !== this.bodyContent.length ||\n nextBodyContent.some((n, i) => n !== this.bodyContent[i])\n\n if (changed) {\n this.iconContent = nextIconContent\n this.bodyContent = nextBodyContent\n }\n\n return changed\n }\n\n private get hasIconContent(): boolean {\n return hasMeaningfulContent(this.iconContent)\n }\n\n private get hasBodyContent(): boolean {\n return hasMeaningfulContent(this.bodyContent)\n }\n\n override connectedCallback(): void {\n super.connectedCallback()\n this.syncProjectedContent()\n this.startContentObserver()\n }\n\n override disconnectedCallback(): void {\n this.stopContentObserver()\n this.clearAutoDismissTimer()\n super.disconnectedCallback()\n }\n\n protected override update(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n this.stopContentObserver()\n super.update(changedProperties)\n this.startContentObserver()\n }\n\n private startContentObserver(): void {\n if (this.contentObserver) {\n return\n }\n this.contentObserver = new MutationObserver(() => {\n if (this.syncProjectedContent()) {\n this.requestUpdate()\n }\n })\n this.contentObserver.observe(this, { childList: true })\n }\n\n private stopContentObserver(): void {\n this.contentObserver?.disconnect()\n this.contentObserver = undefined\n }\n\n protected override willUpdate(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n if (\n changedProperties.has('accent') &&\n this.accent != null &&\n !isAccentEdge(this.accent)\n ) {\n this.accent = undefined\n }\n if (\n changedProperties.has('accentColor') &&\n this.accentColor != null &&\n !isAccentColor(this.accentColor)\n ) {\n this.accentColor = undefined\n }\n if (changedProperties.has('dismissed') && this.dismissed == null) {\n this.dismissed = false\n }\n if (changedProperties.has('fullWidth') && this.fullWidth == null) {\n this.fullWidth = false\n }\n if (\n changedProperties.has('variant') &&\n (this.variant == null || !isToastVariant(this.variant))\n ) {\n this.variant = 'info'\n }\n if (changedProperties.has('autoDismiss')) {\n this.autoDismiss = normalizeInt(this.autoDismiss, undefined, 0)\n }\n }\n\n protected override updated(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n super.updated(changedProperties)\n\n if (\n changedProperties.has('dismissed') ||\n changedProperties.has('autoDismiss')\n ) {\n this.clearAutoDismissTimer()\n if (!this.dismissed && this.autoDismiss) {\n this.autoDismissTimer = setTimeout(() => {\n this.dismiss()\n }, this.autoDismiss)\n }\n }\n }\n\n private clearAutoDismissTimer(): void {\n if (this.autoDismissTimer) {\n clearTimeout(this.autoDismissTimer)\n this.autoDismissTimer = undefined\n }\n }\n\n show(): void {\n if (!this.dismissed) {\n return\n }\n this.dismissed = false\n this.dispatchEvent(new CustomEvent('sp-show', { bubbles: true }))\n }\n\n dismiss(): void {\n if (this.dismissed) {\n return\n }\n this.dismissed = true\n this.dispatchEvent(new CustomEvent('sp-dismiss', { bubbles: true }))\n }\n\n private get toastClasses(): string {\n return getToastClasses({\n ...(this.accent !== undefined && {\n accent: this.accent as ToastAccentEdge\n }),\n ...(this.accentColor !== undefined && {\n accentColor: this.accentColor as ToastAccentColor\n }),\n variant: this.variant as SpectreToastVariant,\n dismissed: this.dismissed ?? false,\n fullWidth: this.fullWidth ?? false\n })\n }\n\n private get iconClasses(): string {\n return getToastIconClasses({ variant: this.variant as SpectreToastVariant })\n }\n\n override render() {\n return html`<div\n aria-atomic=\"true\"\n aria-label=\"${ifDefined(this.forwardedAriaLabel)}\"\n aria-live=\"polite\"\n class=\"${this.toastClasses}\"\n data-sp-toast-native\n id=\"${ifDefined(this.id || undefined)}\"\n role=\"status\"\n title=\"${ifDefined(this.title || undefined)}\"\n >\n ${\n this.hasIconContent\n ? html`<div class=\"${this.iconClasses}\" data-sp-toast-icon>\n ${this.iconContent}\n </div>`\n : nothing\n }\n ${this.hasBodyContent ? this.bodyContent : nothing}\n </div>`\n }\n}\n\nexport function defineSpectreToast(\n tagName = 'sp-toast'\n): typeof SpectreToastElement {\n const existingElement = customElements.get(tagName)\n\n if (existingElement) {\n return existingElement as unknown as typeof SpectreToastElement\n }\n\n customElements.define(tagName, SpectreToastElement)\n return SpectreToastElement\n}\n","import { html, nothing } from 'lit'\nimport { ifDefined } from 'lit/directives/if-defined.js'\n\nimport { SpectreBaseElement } from '../../utils/base'\nimport { hasMeaningfulContent } from '../../utils/dom'\nimport {\n isAccentColor,\n isAccentEdge,\n isTooltipPlacement,\n type SpectreAccentColor,\n type SpectreAccentEdge,\n type SpectreTooltipPlacement\n} from '../../utils/form'\n\nimport {\n getTooltipClasses,\n type TooltipAccentColor,\n type TooltipAccentEdge\n} from '@phcdevworks/spectre-ui'\n\nexport interface SpectreTooltipProps {\n accent?: SpectreAccentEdge | undefined\n accentColor?: SpectreAccentColor | undefined\n ariaLabel?: string | null\n id?: string | null | undefined\n placement?: SpectreTooltipPlacement | undefined\n title?: string | null | undefined\n visible?: boolean | undefined\n}\n\nexport class SpectreTooltipElement\n extends SpectreBaseElement\n implements SpectreTooltipProps\n{\n static properties = {\n accent: { type: String, reflect: true },\n accentColor: { attribute: 'accent-color', type: String, reflect: true },\n placement: { type: String, reflect: true },\n visible: { type: Boolean, reflect: true }\n }\n\n accent: SpectreAccentEdge | undefined = undefined\n accentColor: SpectreAccentColor | undefined = undefined\n placement: SpectreTooltipPlacement | undefined = 'top'\n visible: boolean | undefined = false\n\n private triggerContent: Node[] = []\n private tooltipContent: Node[] = []\n private contentObserver?: MutationObserver | undefined\n\n override get id(): string {\n return super.id\n }\n\n override set id(value: string | null | undefined) {\n super.id = value\n }\n\n override get title(): string {\n return super.title\n }\n\n override set title(value: string | null | undefined) {\n super.title = value\n }\n\n private isInternalNode(node: Node): boolean {\n if (node.nodeType !== Node.ELEMENT_NODE) {\n return false\n }\n const el = node as Element\n return (\n el.hasAttribute('data-sp-tooltip-native') ||\n el.hasAttribute('data-sp-tooltip-trigger')\n )\n }\n\n private syncProjectedContent(): boolean {\n const nextTooltipContent: Node[] = []\n const nextTriggerContent: Node[] = []\n\n // Retain authored nodes already projected into native containers. Reading\n // those containers wholesale would also capture Lit's own template nodes.\n const sourceNodes = [\n ...this.triggerContent.filter((node) => this.contains(node)),\n ...this.tooltipContent.filter((node) => this.contains(node)),\n ...Array.from(this.childNodes).filter(\n (node) =>\n !this.hasUpdated ||\n node.nodeType !== Node.TEXT_NODE ||\n node.textContent?.trim()\n )\n ]\n\n new Set(sourceNodes).forEach((node) => {\n if (node.nodeType === Node.COMMENT_NODE || this.isInternalNode(node)) {\n return\n }\n const isTooltipSlot =\n node.nodeType === Node.ELEMENT_NODE &&\n (node as Element).getAttribute('slot') === 'tooltip'\n if (isTooltipSlot) {\n nextTooltipContent.push(node)\n } else {\n nextTriggerContent.push(node)\n }\n })\n\n const changed =\n nextTooltipContent.length !== this.tooltipContent.length ||\n nextTooltipContent.some((n, i) => n !== this.tooltipContent[i]) ||\n nextTriggerContent.length !== this.triggerContent.length ||\n nextTriggerContent.some((n, i) => n !== this.triggerContent[i])\n\n if (changed) {\n this.tooltipContent = nextTooltipContent\n this.triggerContent = nextTriggerContent\n }\n\n return changed\n }\n\n private get hasTooltipContent(): boolean {\n return hasMeaningfulContent(this.tooltipContent)\n }\n\n override connectedCallback(): void {\n super.connectedCallback()\n this.syncProjectedContent()\n this.startContentObserver()\n this.style.position ||= 'relative'\n this.style.display ||= 'inline-block'\n }\n\n override disconnectedCallback(): void {\n this.stopContentObserver()\n super.disconnectedCallback()\n }\n\n protected override update(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n this.stopContentObserver()\n super.update(changedProperties)\n this.startContentObserver()\n }\n\n private startContentObserver(): void {\n if (this.contentObserver) {\n return\n }\n this.contentObserver = new MutationObserver(() => {\n if (this.syncProjectedContent()) {\n this.requestUpdate()\n }\n })\n this.contentObserver.observe(this, { childList: true })\n }\n\n private stopContentObserver(): void {\n this.contentObserver?.disconnect()\n this.contentObserver = undefined\n }\n\n protected override willUpdate(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n if (\n changedProperties.has('accent') &&\n this.accent != null &&\n !isAccentEdge(this.accent)\n ) {\n this.accent = undefined\n }\n if (\n changedProperties.has('accentColor') &&\n this.accentColor != null &&\n !isAccentColor(this.accentColor)\n ) {\n this.accentColor = undefined\n }\n if (\n changedProperties.has('placement') &&\n (this.placement == null || !isTooltipPlacement(this.placement))\n ) {\n this.placement = 'top'\n }\n if (changedProperties.has('visible') && this.visible == null) {\n this.visible = false\n }\n }\n\n private show(): void {\n if (this.visible) {\n return\n }\n this.visible = true\n this.dispatchEvent(new CustomEvent('sp-show', { bubbles: true }))\n }\n\n private hide(): void {\n if (!this.visible) {\n return\n }\n this.visible = false\n this.dispatchEvent(new CustomEvent('sp-hide', { bubbles: true }))\n }\n\n private get tooltipClasses(): string {\n return getTooltipClasses({\n ...(this.accent !== undefined && {\n accent: this.accent as TooltipAccentEdge\n }),\n ...(this.accentColor !== undefined && {\n accentColor: this.accentColor as TooltipAccentColor\n }),\n placement: this.placement as SpectreTooltipPlacement,\n visible: this.visible ?? false\n })\n }\n\n override render() {\n return html`<span\n data-sp-tooltip-trigger\n @focusin=\"${() => this.show()}\"\n @focusout=\"${() => this.hide()}\"\n @mouseenter=\"${() => this.show()}\"\n @mouseleave=\"${() => this.hide()}\"\n >\n ${this.triggerContent}\n </span>\n <span\n aria-label=\"${ifDefined(this.forwardedAriaLabel)}\"\n class=\"${this.tooltipClasses}\"\n data-sp-tooltip-native\n id=\"${ifDefined(this.id || undefined)}\"\n role=\"tooltip\"\n title=\"${ifDefined(this.title || undefined)}\"\n >\n ${this.hasTooltipContent ? this.tooltipContent : nothing}\n </span>`\n }\n}\n\nexport function defineSpectreTooltip(\n tagName = 'sp-tooltip'\n): typeof SpectreTooltipElement {\n const existingElement = customElements.get(tagName)\n\n if (existingElement) {\n return existingElement as unknown as typeof SpectreTooltipElement\n }\n\n customElements.define(tagName, SpectreTooltipElement)\n return SpectreTooltipElement\n}\n","import { nothing } from 'lit'\nimport { ifDefined } from 'lit/directives/if-defined.js'\nimport { literal, html as staticHtml } from 'lit/static-html.js'\n\nimport { SpectreProjectableElement } from '../../utils/projectable'\nimport {\n isDisplayLevel,\n isHeadingLevel,\n isTextFamily,\n isTextPreset,\n isTextLevel,\n isTextSize,\n isTextTransform,\n isTextVariant,\n type SpectreDisplayLevel,\n type SpectreHeadingLevel,\n type SpectreTextFamily,\n type SpectreTextPreset,\n type SpectreTextLevel,\n type SpectreTextSize,\n type SpectreTextTransform,\n type SpectreTextVariant\n} from '../../utils/form'\n\nimport {\n getDisplayClasses,\n getHeadingClasses,\n getLeadClasses,\n getTextClasses\n} from '@phcdevworks/spectre-ui'\n\nconst LEVEL_TAGS: Record<SpectreTextLevel, ReturnType<typeof literal>> = {\n h1: literal`h1`,\n h2: literal`h2`,\n h3: literal`h3`,\n h4: literal`h4`,\n h5: literal`h5`,\n h6: literal`h6`,\n p: literal`p`,\n span: literal`span`\n}\n\nexport interface SpectreTextProps {\n ariaLabel?: string | null\n ariaLabelledBy?: string | null\n ariaDescribedBy?: string | null\n displayLevel?: SpectreDisplayLevel | undefined\n family?: SpectreTextFamily | undefined\n headingLevel?: SpectreHeadingLevel | undefined\n id?: string | null | undefined\n level?: SpectreTextLevel | undefined\n preset?: SpectreTextPreset | undefined\n size?: SpectreTextSize | undefined\n title?: string | null | undefined\n transform?: SpectreTextTransform | undefined\n variant?: SpectreTextVariant | undefined\n}\n\nexport class SpectreTextElement\n extends SpectreProjectableElement\n implements SpectreTextProps\n{\n static properties = {\n displayLevel: { attribute: 'display-level', type: Number, reflect: true },\n family: { type: String, reflect: true },\n headingLevel: { attribute: 'heading-level', type: String, reflect: true },\n level: { type: String, reflect: true },\n preset: { type: String, reflect: true },\n size: { type: String, reflect: true },\n transform: { type: String, reflect: true },\n variant: { type: String, reflect: true }\n }\n\n displayLevel: SpectreDisplayLevel | undefined = undefined\n family: SpectreTextFamily | undefined\n headingLevel: SpectreHeadingLevel | undefined = undefined\n level: SpectreTextLevel | undefined = 'p'\n preset: SpectreTextPreset | undefined = undefined\n size: SpectreTextSize | undefined = 'md'\n transform: SpectreTextTransform | undefined\n variant: SpectreTextVariant | undefined = 'default'\n\n protected override willUpdate(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n if (\n changedProperties.has('displayLevel') &&\n this.displayLevel != null &&\n !isDisplayLevel(this.displayLevel)\n ) {\n this.displayLevel = undefined\n }\n\n if (\n changedProperties.has('headingLevel') &&\n this.headingLevel != null &&\n !isHeadingLevel(this.headingLevel)\n ) {\n this.headingLevel = undefined\n }\n\n if (\n changedProperties.has('preset') &&\n this.preset != null &&\n !isTextPreset(this.preset)\n ) {\n this.preset = undefined\n }\n\n if (changedProperties.has('family') && !isTextFamily(this.family)) {\n this.family = undefined\n }\n\n if (changedProperties.has('level') && !isTextLevel(this.level)) {\n this.level = 'p'\n }\n\n if (changedProperties.has('size') && !isTextSize(this.size)) {\n this.size = 'md'\n }\n\n if (changedProperties.has('variant') && !isTextVariant(this.variant)) {\n this.variant = 'default'\n }\n\n if (\n changedProperties.has('transform') &&\n this.transform !== undefined &&\n !isTextTransform(this.transform)\n ) {\n this.transform = undefined\n }\n }\n\n override get id(): string {\n return super.id\n }\n\n override set id(value: string | null | undefined) {\n super.id = value\n }\n\n override get title(): string {\n return super.title\n }\n\n override set title(value: string | null | undefined) {\n super.title = value\n }\n\n protected override getContentContainer(): Element | null {\n return this.querySelector('[data-sp-text-native]')\n }\n\n protected override isInternalNode(node: Node): boolean {\n if (node.nodeType !== Node.ELEMENT_NODE) {\n return false\n }\n\n const el = node as Element\n return el.hasAttribute('data-sp-text-native')\n }\n\n // A typography preset replaces the text recipe: each sets its own size,\n // weight, and color.\n private get textClasses(): string {\n const level = this.level ?? 'p'\n switch (this.preset) {\n case 'heading':\n return getHeadingClasses({\n level: this.headingLevel ?? (isHeadingLevel(level) ? level : 'h2')\n })\n case 'display':\n return getDisplayClasses({ level: this.displayLevel ?? 1 })\n case 'lead':\n return getLeadClasses()\n }\n return getTextClasses({\n ...(this.family !== undefined && { family: this.family }),\n size: this.size ?? 'md',\n ...(this.transform !== undefined && { transform: this.transform }),\n variant: this.variant ?? 'default'\n })\n }\n\n override render() {\n const tag = LEVEL_TAGS[this.level ?? 'p']\n\n return staticHtml`<${tag}\n aria-describedby=\"${ifDefined(this.forwardedAriaDescribedBy)}\"\n aria-label=\"${ifDefined(this.forwardedAriaLabel)}\"\n aria-labelledby=\"${ifDefined(this.forwardedAriaLabelledBy)}\"\n class=\"${this.textClasses}\"\n data-sp-text-native\n id=\"${ifDefined(this.id || undefined)}\"\n title=\"${ifDefined(this.title || undefined)}\"\n >${this.hasProjectedContent ? this.projectedContent : nothing}</${tag}>`\n }\n}\n\nexport function defineSpectreText(\n tagName = 'sp-text'\n): typeof SpectreTextElement {\n const existingElement = customElements.get(tagName)\n\n if (existingElement) {\n return existingElement as unknown as typeof SpectreTextElement\n }\n\n customElements.define(tagName, SpectreTextElement)\n return SpectreTextElement\n}\n","import { html } from 'lit'\nimport { ifDefined } from 'lit/directives/if-defined.js'\n\nimport { SpectreBaseElement } from '../../utils/base'\nimport { createUniqueId, isSpectreKind } from '../../utils/dom'\nimport {\n isTabsVariant,\n normalizeInt,\n type SpectreTabsVariant\n} from '../../utils/form'\nimport { ProjectionController } from '../../utils/projection'\nimport type { SpectreTabPanelElement } from '../tab-panel/sp-tab-panel'\n\nimport {\n getTabsClasses,\n getTabsItemClasses,\n getTabsListClasses,\n type TabsVariant\n} from '@phcdevworks/spectre-ui'\n\nexport interface SpectreTabsProps {\n ariaLabel?: string | null\n ariaLabelledBy?: string | null\n fullWidth?: boolean | undefined\n id?: string | null | undefined\n selectedIndex?: number | undefined\n title?: string | null | undefined\n variant?: SpectreTabsVariant | undefined\n vertical?: boolean | undefined\n}\n\nexport class SpectreTabsElement\n extends SpectreBaseElement\n implements SpectreTabsProps\n{\n static properties = {\n fullWidth: { attribute: 'full-width', type: Boolean, reflect: true },\n selectedIndex: { attribute: 'selected-index', type: Number, reflect: true },\n variant: { type: String, reflect: true },\n vertical: { type: Boolean, reflect: true }\n }\n\n fullWidth: boolean | undefined = false\n selectedIndex: number | undefined = 0\n variant: SpectreTabsVariant | undefined = 'line'\n vertical: boolean | undefined = false\n\n private readonly baseId = createUniqueId('sp-tabs')\n private readonly projection = new ProjectionController(this, [\n 'data-sp-tabs-native'\n ])\n\n override get id(): string {\n return super.id\n }\n\n override set id(value: string | null | undefined) {\n super.id = value\n }\n\n override get title(): string {\n return super.title\n }\n\n override set title(value: string | null | undefined) {\n super.title = value\n }\n\n override connectedCallback(): void {\n super.connectedCallback()\n this.style.display ||= 'block'\n this.addEventListener('sp-tab-panel-change', this.handlePanelChange)\n }\n\n override disconnectedCallback(): void {\n this.removeEventListener('sp-tab-panel-change', this.handlePanelChange)\n super.disconnectedCallback()\n }\n\n protected override willUpdate(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n if (changedProperties.has('fullWidth') && this.fullWidth == null) {\n this.fullWidth = false\n }\n if (changedProperties.has('selectedIndex')) {\n this.selectedIndex = normalizeInt(this.selectedIndex, 0)\n }\n if (\n changedProperties.has('variant') &&\n (this.variant == null || !isTabsVariant(this.variant))\n ) {\n this.variant = 'line'\n }\n if (changedProperties.has('vertical') && this.vertical == null) {\n this.vertical = false\n }\n }\n\n protected override updated(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n super.updated(changedProperties)\n const activeIndex = this.activeIndex\n this.panels.forEach((panel, index) => {\n panel.selected = index === activeIndex\n panel.tabId = this.tabId(index)\n })\n }\n\n private handlePanelChange = (event: Event): void => {\n event.stopPropagation()\n this.requestUpdate()\n }\n\n private get panels(): SpectreTabPanelElement[] {\n return this.projection\n .elements()\n .filter((element): element is SpectreTabPanelElement =>\n isSpectreKind(element, 'tab-panel')\n )\n }\n\n // Falls back to the first enabled panel when the requested one is missing\n // or disabled; -1 when every panel is disabled.\n private get activeIndex(): number {\n const panels = this.panels\n const index = this.selectedIndex ?? 0\n if (panels[index] && !panels[index].disabled) {\n return index\n }\n return panels.findIndex((panel) => !panel.disabled)\n }\n\n private tabId(index: number): string {\n return `${this.baseId}-tab-${index}`\n }\n\n private get tabButtons(): HTMLButtonElement[] {\n return Array.from(\n this.querySelectorAll<HTMLButtonElement>('[data-sp-tabs-tab]')\n ).filter(\n (button) => button.closest('[data-sp-tabs-native]') === this.native\n )\n }\n\n private get native(): Element | null {\n return this.querySelector('[data-sp-tabs-native]')\n }\n\n private select(index: number): void {\n const panel = this.panels[index]\n if (!panel || panel.disabled || index === this.activeIndex) {\n return\n }\n this.selectedIndex = index\n this.dispatchEvent(\n new CustomEvent('sp-change', { bubbles: true, detail: { index } })\n )\n }\n\n private handleKeydown = async (event: KeyboardEvent): Promise<void> => {\n const enabled = this.panels\n .map((panel, index) => (panel.disabled ? -1 : index))\n .filter((index) => index >= 0)\n if (enabled.length === 0) {\n return\n }\n\n const position = enabled.indexOf(this.activeIndex)\n const previousKey = this.vertical ? 'ArrowUp' : 'ArrowLeft'\n const nextKey = this.vertical ? 'ArrowDown' : 'ArrowRight'\n let target: number | undefined\n\n switch (event.key) {\n case previousKey:\n target = enabled[(position - 1 + enabled.length) % enabled.length]\n break\n case nextKey:\n target = enabled[(position + 1) % enabled.length]\n break\n case 'Home':\n target = enabled[0]\n break\n case 'End':\n target = enabled[enabled.length - 1]\n break\n default:\n return\n }\n\n if (target === undefined) {\n return\n }\n event.preventDefault()\n this.select(target)\n await this.updateComplete\n this.tabButtons[target]?.focus()\n }\n\n private get tabsClasses(): string {\n return getTabsClasses({\n fullWidth: this.fullWidth ?? false,\n variant: this.variant as TabsVariant,\n vertical: this.vertical ?? false\n })\n }\n\n override render() {\n const panels = this.panels\n const activeIndex = this.activeIndex\n\n return html`<div\n class=\"${this.tabsClasses}\"\n data-sp-tabs-native\n id=\"${ifDefined(this.id || undefined)}\"\n title=\"${ifDefined(this.title || undefined)}\"\n >\n <div\n aria-label=\"${ifDefined(this.forwardedAriaLabel)}\"\n aria-labelledby=\"${ifDefined(this.forwardedAriaLabelledBy)}\"\n aria-orientation=\"${ifDefined(this.vertical ? 'vertical' : undefined)}\"\n class=\"${getTabsListClasses()}\"\n role=\"tablist\"\n @keydown=\"${this.handleKeydown}\"\n >\n ${panels.map((panel, index) => {\n const active = index === activeIndex\n return html`<button\n aria-controls=\"${panel.panelId}\"\n aria-selected=\"${active ? 'true' : 'false'}\"\n class=\"${getTabsItemClasses({\n active,\n disabled: panel.disabled ?? false\n })}\"\n data-sp-tabs-tab\n ?disabled=\"${panel.disabled ?? false}\"\n id=\"${this.tabId(index)}\"\n role=\"tab\"\n tabindex=\"${active ? '0' : '-1'}\"\n type=\"button\"\n @click=\"${() => this.select(index)}\"\n >\n ${panel.label ?? ''}\n </button>`\n })}\n </div>\n ${this.projection.nodes()}\n </div>`\n }\n}\n\nexport function defineSpectreTabs(\n tagName = 'sp-tabs'\n): typeof SpectreTabsElement {\n const existingElement = customElements.get(tagName)\n\n if (existingElement) {\n return existingElement as unknown as typeof SpectreTabsElement\n }\n\n customElements.define(tagName, SpectreTabsElement)\n return SpectreTabsElement\n}\n","import { html } from 'lit'\nimport { ifDefined } from 'lit/directives/if-defined.js'\n\nimport { SpectreBaseElement } from '../../utils/base'\nimport { createUniqueId, spectreKindKey } from '../../utils/dom'\nimport { ProjectionController } from '../../utils/projection'\n\nimport { getTabsPanelClasses } from '@phcdevworks/spectre-ui'\n\nexport interface SpectreTabPanelProps {\n disabled?: boolean | undefined\n id?: string | null | undefined\n label?: string | undefined\n title?: string | null | undefined\n}\n\nexport class SpectreTabPanelElement\n extends SpectreBaseElement\n implements SpectreTabPanelProps\n{\n static properties = {\n disabled: { type: Boolean, reflect: true },\n label: { type: String },\n selected: { type: Boolean, reflect: true },\n tabId: { attribute: false }\n }\n\n readonly [spectreKindKey] = 'tab-panel'\n\n disabled: boolean | undefined = false\n label: string | undefined = undefined\n // Owned by the parent `sp-tabs`, which sets it from its `selectedIndex`.\n selected = false\n tabId: string | undefined = undefined\n\n private readonly generatedId = createUniqueId('sp-tab-panel')\n private readonly projection = new ProjectionController(this, [\n 'data-sp-tab-panel-native'\n ])\n\n override get id(): string {\n return super.id\n }\n\n override set id(value: string | null | undefined) {\n super.id = value\n }\n\n override get title(): string {\n return super.title\n }\n\n override set title(value: string | null | undefined) {\n super.title = value\n }\n\n get panelId(): string {\n return this.id || this.generatedId\n }\n\n override connectedCallback(): void {\n super.connectedCallback()\n // The rendered panel must be a direct flex child of the tabs container.\n this.style.display ||= 'contents'\n }\n\n protected override willUpdate(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n if (changedProperties.has('disabled') && this.disabled == null) {\n this.disabled = false\n }\n }\n\n protected override updated(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n super.updated(changedProperties)\n if (changedProperties.has('label') || changedProperties.has('disabled')) {\n this.dispatchEvent(\n new CustomEvent('sp-tab-panel-change', { bubbles: true })\n )\n }\n }\n\n override render() {\n return html`<div\n aria-labelledby=\"${ifDefined(this.tabId)}\"\n class=\"${getTabsPanelClasses()}\"\n data-sp-tab-panel-native\n ?hidden=\"${!this.selected}\"\n id=\"${this.panelId}\"\n role=\"tabpanel\"\n tabindex=\"0\"\n title=\"${ifDefined(this.title || undefined)}\"\n >\n ${this.projection.nodes()}\n </div>`\n }\n}\n\nexport function defineSpectreTabPanel(\n tagName = 'sp-tab-panel'\n): typeof SpectreTabPanelElement {\n const existingElement = customElements.get(tagName)\n\n if (existingElement) {\n return existingElement as unknown as typeof SpectreTabPanelElement\n }\n\n customElements.define(tagName, SpectreTabPanelElement)\n return SpectreTabPanelElement\n}\n","import { html } from 'lit'\nimport { ifDefined } from 'lit/directives/if-defined.js'\n\nimport { SpectreBaseElement } from '../../utils/base'\nimport { isSpectreKind } from '../../utils/dom'\nimport { ProjectionController } from '../../utils/projection'\nimport type { SpectreAccordionItemElement } from '../accordion-item/sp-accordion-item'\n\nimport { getAccordionClasses } from '@phcdevworks/spectre-ui'\n\nexport interface SpectreAccordionProps {\n flush?: boolean | undefined\n id?: string | null | undefined\n multiple?: boolean | undefined\n title?: string | null | undefined\n}\n\nexport class SpectreAccordionElement\n extends SpectreBaseElement\n implements SpectreAccordionProps\n{\n static properties = {\n flush: { type: Boolean, reflect: true },\n multiple: { type: Boolean, reflect: true }\n }\n\n flush: boolean | undefined = false\n multiple: boolean | undefined = false\n\n private readonly projection = new ProjectionController(this, [\n 'data-sp-accordion-native'\n ])\n\n override get id(): string {\n return super.id\n }\n\n override set id(value: string | null | undefined) {\n super.id = value\n }\n\n override get title(): string {\n return super.title\n }\n\n override set title(value: string | null | undefined) {\n super.title = value\n }\n\n override connectedCallback(): void {\n super.connectedCallback()\n this.style.display ||= 'block'\n this.addEventListener('sp-open', this.handleItemOpen)\n }\n\n override disconnectedCallback(): void {\n this.removeEventListener('sp-open', this.handleItemOpen)\n super.disconnectedCallback()\n }\n\n protected override willUpdate(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n if (changedProperties.has('flush') && this.flush == null) {\n this.flush = false\n }\n if (changedProperties.has('multiple') && this.multiple == null) {\n this.multiple = false\n }\n }\n\n private get items(): SpectreAccordionItemElement[] {\n return this.projection\n .elements()\n .filter((element): element is SpectreAccordionItemElement =>\n isSpectreKind(element, 'accordion-item')\n )\n }\n\n private handleItemOpen = (event: Event): void => {\n if (this.multiple) {\n return\n }\n const items = this.items\n const opened = items.find((item) => item === event.target)\n if (!opened) {\n return\n }\n items.forEach((item) => {\n if (item !== opened) {\n item.open = false\n }\n })\n }\n\n override render() {\n return html`<div\n class=\"${getAccordionClasses({ flush: this.flush ?? false })}\"\n data-sp-accordion-native\n id=\"${ifDefined(this.id || undefined)}\"\n title=\"${ifDefined(this.title || undefined)}\"\n >\n ${this.projection.nodes()}\n </div>`\n }\n}\n\nexport function defineSpectreAccordion(\n tagName = 'sp-accordion'\n): typeof SpectreAccordionElement {\n const existingElement = customElements.get(tagName)\n\n if (existingElement) {\n return existingElement as unknown as typeof SpectreAccordionElement\n }\n\n customElements.define(tagName, SpectreAccordionElement)\n return SpectreAccordionElement\n}\n","import { html } from 'lit'\nimport { ifDefined } from 'lit/directives/if-defined.js'\n\nimport { SpectreBaseElement } from '../../utils/base'\nimport { createUniqueId, replaceClasses, spectreKindKey } from '../../utils/dom'\nimport { renderIcon } from '../../utils/icons'\nimport { ProjectionController } from '../../utils/projection'\nimport {\n hoverFocusStateProperties,\n hoverFocusStates,\n type SpectreHoverFocusStateProps\n} from '../../utils/states'\n\nimport {\n getAccordionHeaderClasses,\n getAccordionIconClasses,\n getAccordionItemClasses,\n getAccordionPanelClasses\n} from '@phcdevworks/spectre-ui'\n\nexport interface SpectreAccordionItemProps extends SpectreHoverFocusStateProps {\n ariaLabel?: string | null\n disabled?: boolean | undefined\n id?: string | null | undefined\n label?: string | undefined\n open?: boolean | undefined\n title?: string | null | undefined\n}\n\nexport class SpectreAccordionItemElement\n extends SpectreBaseElement\n implements SpectreAccordionItemProps\n{\n static properties = {\n ...hoverFocusStateProperties,\n disabled: { type: Boolean, reflect: true },\n label: { type: String },\n open: { type: Boolean, reflect: true }\n }\n\n readonly [spectreKindKey] = 'accordion-item'\n\n focused: boolean | undefined = false\n hovered: boolean | undefined = false\n disabled: boolean | undefined = false\n label: string | undefined = undefined\n open: boolean | undefined = false\n\n private readonly generatedId = createUniqueId('sp-accordion-item')\n private appliedHostClasses = ''\n private readonly projection = new ProjectionController(this, [\n 'data-sp-accordion-item-header',\n 'data-sp-accordion-item-panel'\n ])\n\n override get id(): string {\n return super.id\n }\n\n override set id(value: string | null | undefined) {\n super.id = value\n }\n\n override get title(): string {\n return super.title\n }\n\n override set title(value: string | null | undefined) {\n super.title = value\n }\n\n override connectedCallback(): void {\n super.connectedCallback()\n this.style.display ||= 'block'\n }\n\n protected override willUpdate(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n if (changedProperties.has('disabled') && this.disabled == null) {\n this.disabled = false\n }\n if (changedProperties.has('open') && this.open == null) {\n this.open = false\n }\n\n // The host is the item so the recipe's `item + item` divider applies\n // between sibling accordion items.\n const hostClasses = getAccordionItemClasses({\n disabled: this.disabled ?? false,\n expanded: this.open ?? false\n })\n replaceClasses(this, this.appliedHostClasses, hostClasses)\n this.appliedHostClasses = hostClasses\n }\n\n private get headerId(): string {\n return this.id || `${this.generatedId}-header`\n }\n\n private get panelId(): string {\n return `${this.generatedId}-panel`\n }\n\n private toggle(): void {\n if (this.disabled) {\n return\n }\n this.open = !this.open\n this.dispatchEvent(\n new CustomEvent(this.open ? 'sp-open' : 'sp-close', { bubbles: true })\n )\n }\n\n override render() {\n const expanded = this.open ?? false\n const disabled = this.disabled ?? false\n\n return html`<button\n aria-controls=\"${this.panelId}\"\n aria-expanded=\"${expanded ? 'true' : 'false'}\"\n aria-label=\"${ifDefined(this.forwardedAriaLabel)}\"\n class=\"${getAccordionHeaderClasses({\n ...hoverFocusStates(this),\n disabled,\n expanded\n })}\"\n data-sp-accordion-item-header\n ?disabled=\"${disabled}\"\n id=\"${this.headerId}\"\n title=\"${ifDefined(this.title || undefined)}\"\n type=\"button\"\n @click=\"${() => this.toggle()}\"\n >\n ${\n this.projection.has('header')\n ? this.projection.nodes('header')\n : (this.label ?? '')\n }\n <span class=\"${getAccordionIconClasses({ expanded })}\"\n >${renderIcon('chevronDown')}</span\n >\n </button>\n <div\n aria-labelledby=\"${this.headerId}\"\n class=\"${getAccordionPanelClasses({ expanded })}\"\n data-sp-accordion-item-panel\n ?hidden=\"${!expanded}\"\n id=\"${this.panelId}\"\n role=\"region\"\n >\n ${this.projection.nodes()}\n </div>`\n }\n}\n\nexport function defineSpectreAccordionItem(\n tagName = 'sp-accordion-item'\n): typeof SpectreAccordionItemElement {\n const existingElement = customElements.get(tagName)\n\n if (existingElement) {\n return existingElement as unknown as typeof SpectreAccordionItemElement\n }\n\n customElements.define(tagName, SpectreAccordionItemElement)\n return SpectreAccordionItemElement\n}\n","import { html, nothing } from 'lit'\nimport { ifDefined } from 'lit/directives/if-defined.js'\n\nimport { SpectreBaseElement } from '../../utils/base'\nimport { hasMeaningfulContent } from '../../utils/dom'\nimport { ProjectionController } from '../../utils/projection'\n\nimport {\n getBreadcrumbClasses,\n getBreadcrumbItemClasses,\n getBreadcrumbLinkClasses,\n getBreadcrumbSeparatorClasses\n} from '@phcdevworks/spectre-ui'\n\nexport interface SpectreBreadcrumbProps {\n ariaLabel?: string | null\n ariaLabelledBy?: string | null\n id?: string | null | undefined\n separator?: string | undefined\n title?: string | null | undefined\n}\n\nexport class SpectreBreadcrumbElement\n extends SpectreBaseElement\n implements SpectreBreadcrumbProps\n{\n static properties = {\n separator: { type: String }\n }\n\n separator: string | undefined = undefined\n\n private readonly projection = new ProjectionController(this, [\n 'data-sp-breadcrumb-native'\n ])\n\n override get id(): string {\n return super.id\n }\n\n override set id(value: string | null | undefined) {\n super.id = value\n }\n\n override get title(): string {\n return super.title\n }\n\n override set title(value: string | null | undefined) {\n super.title = value\n }\n\n override connectedCallback(): void {\n super.connectedCallback()\n this.style.display ||= 'block'\n }\n\n protected override updated(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n super.updated(changedProperties)\n const linkClasses = getBreadcrumbLinkClasses()\n this.crumbs.forEach((crumb) => {\n if (crumb instanceof HTMLAnchorElement) {\n crumb.classList.add(linkClasses)\n }\n })\n }\n\n private get crumbs(): Node[] {\n return this.projection\n .nodes()\n .filter((node) => hasMeaningfulContent([node]))\n }\n\n private get navLabel(): string | undefined {\n if (this.forwardedAriaLabel) {\n return this.forwardedAriaLabel\n }\n return this.forwardedAriaLabelledBy ? undefined : 'Breadcrumb'\n }\n\n override render() {\n const crumbs = this.crumbs\n const separator = this.separator?.trim()\n\n return html`<nav\n aria-label=\"${ifDefined(this.navLabel)}\"\n aria-labelledby=\"${ifDefined(this.forwardedAriaLabelledBy)}\"\n data-sp-breadcrumb-native\n id=\"${ifDefined(this.id || undefined)}\"\n title=\"${ifDefined(this.title || undefined)}\"\n >\n <ol\n class=\"${getBreadcrumbClasses({ customSeparator: Boolean(separator) })}\"\n >\n ${crumbs.map((crumb, index) => {\n const current = index === crumbs.length - 1\n return html`<li\n aria-current=\"${ifDefined(current ? 'page' : undefined)}\"\n class=\"${getBreadcrumbItemClasses({ current })}\"\n >\n ${\n separator && index > 0\n ? html`<span\n aria-hidden=\"true\"\n class=\"${getBreadcrumbSeparatorClasses()}\"\n >${separator}</span\n >`\n : nothing\n }${crumb}\n </li>`\n })}\n </ol>\n </nav>`\n }\n}\n\nexport function defineSpectreBreadcrumb(\n tagName = 'sp-breadcrumb'\n): typeof SpectreBreadcrumbElement {\n const existingElement = customElements.get(tagName)\n\n if (existingElement) {\n return existingElement as unknown as typeof SpectreBreadcrumbElement\n }\n\n customElements.define(tagName, SpectreBreadcrumbElement)\n return SpectreBreadcrumbElement\n}\n","import { html, type TemplateResult } from 'lit'\nimport { ifDefined } from 'lit/directives/if-defined.js'\n\nimport { SpectreBaseElement } from '../../utils/base'\nimport { isSpectreKind } from '../../utils/dom'\nimport {\n isAccentColor,\n isAccentEdge,\n type SpectreAccentColor,\n type SpectreAccentEdge\n} from '../../utils/form'\nimport { applyPartClasses } from '../../utils/parts'\nimport { ProjectionController } from '../../utils/projection'\nimport { hoverFocusStates } from '../../utils/states'\nimport type { SpectreListGroupItemElement } from '../list-group-item/sp-list-group-item'\n\nimport {\n getListGroupClasses,\n getListGroupItemClasses,\n getListGroupItemHeadingClasses,\n getListGroupItemTextClasses,\n type ListGroupAccentColor,\n type ListGroupAccentEdge\n} from '@phcdevworks/spectre-ui'\n\nexport interface SpectreListGroupProps {\n accent?: SpectreAccentEdge | undefined\n accentColor?: SpectreAccentColor | undefined\n ariaLabel?: string | null\n ariaLabelledBy?: string | null\n flush?: boolean | undefined\n horizontal?: boolean | undefined\n id?: string | null | undefined\n title?: string | null | undefined\n}\n\nfunction isInteractiveItem(item: SpectreListGroupItemElement): boolean {\n return Boolean(item.href) || (item.interactive ?? false)\n}\n\nexport class SpectreListGroupElement\n extends SpectreBaseElement\n implements SpectreListGroupProps\n{\n static properties = {\n accent: { type: String, reflect: true },\n accentColor: { attribute: 'accent-color', type: String, reflect: true },\n flush: { type: Boolean, reflect: true },\n horizontal: { type: Boolean, reflect: true }\n }\n\n accent: SpectreAccentEdge | undefined = undefined\n accentColor: SpectreAccentColor | undefined = undefined\n flush: boolean | undefined = false\n horizontal: boolean | undefined = false\n\n private readonly projection = new ProjectionController(this, [\n 'data-sp-list-group-native'\n ])\n\n override get id(): string {\n return super.id\n }\n\n override set id(value: string | null | undefined) {\n super.id = value\n }\n\n override get title(): string {\n return super.title\n }\n\n override set title(value: string | null | undefined) {\n super.title = value\n }\n\n override connectedCallback(): void {\n super.connectedCallback()\n this.style.display ||= 'block'\n this.addEventListener('sp-list-group-item-change', this.handleItemChange)\n }\n\n override disconnectedCallback(): void {\n this.removeEventListener('sp-list-group-item-change', this.handleItemChange)\n super.disconnectedCallback()\n }\n\n protected override willUpdate(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n if (\n changedProperties.has('accent') &&\n this.accent != null &&\n !isAccentEdge(this.accent)\n ) {\n this.accent = undefined\n }\n if (\n changedProperties.has('accentColor') &&\n this.accentColor != null &&\n !isAccentColor(this.accentColor)\n ) {\n this.accentColor = undefined\n }\n if (changedProperties.has('flush') && this.flush == null) {\n this.flush = false\n }\n if (changedProperties.has('horizontal') && this.horizontal == null) {\n this.horizontal = false\n }\n }\n\n protected override updated(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n super.updated(changedProperties)\n this.items.forEach((item) => {\n applyPartClasses(item.children, {\n heading: getListGroupItemHeadingClasses(),\n text: getListGroupItemTextClasses()\n })\n })\n }\n\n private handleItemChange = (event: Event): void => {\n event.stopPropagation()\n this.requestUpdate()\n }\n\n private get items(): SpectreListGroupItemElement[] {\n return this.projection\n .elements()\n .filter((element): element is SpectreListGroupItemElement =>\n isSpectreKind(element, 'list-group-item')\n )\n }\n\n private get listClasses(): string {\n return getListGroupClasses({\n ...(this.accent !== undefined && {\n accent: this.accent as ListGroupAccentEdge\n }),\n ...(this.accentColor !== undefined && {\n accentColor: this.accentColor as ListGroupAccentColor\n }),\n flush: this.flush ?? false,\n horizontal: this.horizontal ?? false\n })\n }\n\n private itemClasses(item: SpectreListGroupItemElement): string {\n return getListGroupItemClasses({\n ...hoverFocusStates(item),\n active: item.active ?? false,\n disabled: item.disabled ?? false,\n interactive: isInteractiveItem(item),\n selected: item.selected ?? false\n })\n }\n\n private select(item: SpectreListGroupItemElement): void {\n item.dispatchEvent(new CustomEvent('sp-select', { bubbles: true }))\n }\n\n private renderRow(item: SpectreListGroupItemElement): TemplateResult {\n const classes = this.itemClasses(item)\n const current = item.active ? 'true' : undefined\n const disabled = item.disabled ?? false\n const id = item.id || undefined\n const label = item.ariaLabel?.trim() || undefined\n const title = item.title || undefined\n\n if (item.href) {\n return html`<a\n aria-current=\"${ifDefined(current)}\"\n aria-disabled=\"${ifDefined(disabled ? 'true' : undefined)}\"\n aria-label=\"${ifDefined(label)}\"\n class=\"${classes}\"\n data-sp-list-group-row\n href=\"${ifDefined(disabled ? undefined : item.href)}\"\n id=\"${ifDefined(id)}\"\n target=\"${ifDefined(item.target)}\"\n title=\"${ifDefined(title)}\"\n @click=\"${() => this.select(item)}\"\n >${item}</a\n >`\n }\n\n if (item.interactive) {\n return html`<button\n aria-current=\"${ifDefined(current)}\"\n aria-label=\"${ifDefined(label)}\"\n class=\"${classes}\"\n data-sp-list-group-row\n ?disabled=\"${disabled}\"\n id=\"${ifDefined(id)}\"\n title=\"${ifDefined(title)}\"\n type=\"button\"\n @click=\"${() => this.select(item)}\"\n >\n ${item}\n </button>`\n }\n\n return html`<div\n aria-current=\"${ifDefined(current)}\"\n aria-label=\"${ifDefined(label)}\"\n class=\"${classes}\"\n data-sp-list-group-row\n id=\"${ifDefined(id)}\"\n title=\"${ifDefined(title)}\"\n >\n ${item}\n </div>`\n }\n\n override render() {\n const items = this.items\n\n // Static rows keep list semantics; actionable rows follow the native\n // link/button model instead.\n if (!items.some(isInteractiveItem)) {\n return html`<ul\n aria-label=\"${ifDefined(this.forwardedAriaLabel)}\"\n aria-labelledby=\"${ifDefined(this.forwardedAriaLabelledBy)}\"\n class=\"${this.listClasses}\"\n data-sp-list-group-native\n id=\"${ifDefined(this.id || undefined)}\"\n title=\"${ifDefined(this.title || undefined)}\"\n >\n ${items.map(\n (item) =>\n html`<li\n aria-current=\"${ifDefined(item.active ? 'true' : undefined)}\"\n aria-label=\"${ifDefined(item.ariaLabel?.trim() || undefined)}\"\n class=\"${this.itemClasses(item)}\"\n data-sp-list-group-row\n id=\"${ifDefined(item.id || undefined)}\"\n title=\"${ifDefined(item.title || undefined)}\"\n >\n ${item}\n </li>`\n )}\n </ul>`\n }\n\n return html`<div\n aria-label=\"${ifDefined(this.forwardedAriaLabel)}\"\n aria-labelledby=\"${ifDefined(this.forwardedAriaLabelledBy)}\"\n class=\"${this.listClasses}\"\n data-sp-list-group-native\n id=\"${ifDefined(this.id || undefined)}\"\n title=\"${ifDefined(this.title || undefined)}\"\n >\n ${items.map((item) => this.renderRow(item))}\n </div>`\n }\n}\n\nexport function defineSpectreListGroup(\n tagName = 'sp-list-group'\n): typeof SpectreListGroupElement {\n const existingElement = customElements.get(tagName)\n\n if (existingElement) {\n return existingElement as unknown as typeof SpectreListGroupElement\n }\n\n customElements.define(tagName, SpectreListGroupElement)\n return SpectreListGroupElement\n}\n","import { nothing } from 'lit'\n\nimport { SpectreBaseElement } from '../../utils/base'\nimport { spectreKindKey } from '../../utils/dom'\nimport {\n hoverFocusStateProperties,\n type SpectreHoverFocusStateProps\n} from '../../utils/states'\n\nexport interface SpectreListGroupItemProps extends SpectreHoverFocusStateProps {\n active?: boolean | undefined\n ariaLabel?: string | null\n disabled?: boolean | undefined\n href?: string | undefined\n id?: string | null | undefined\n interactive?: boolean | undefined\n selected?: boolean | undefined\n target?: string | undefined\n title?: string | null | undefined\n}\n\n// Carries row state and content only. The parent `sp-list-group` renders the\n// native row and moves this host inside it, so rows stay direct siblings for\n// the recipe's `item + item` dividers.\nexport class SpectreListGroupItemElement\n extends SpectreBaseElement\n implements SpectreListGroupItemProps\n{\n static properties = {\n ...hoverFocusStateProperties,\n active: { type: Boolean, reflect: true },\n disabled: { type: Boolean, reflect: true },\n href: { type: String },\n interactive: { type: Boolean, reflect: true },\n selected: { type: Boolean, reflect: true },\n target: { type: String }\n }\n\n readonly [spectreKindKey] = 'list-group-item'\n\n focused: boolean | undefined = false\n hovered: boolean | undefined = false\n active: boolean | undefined = false\n disabled: boolean | undefined = false\n href: string | undefined = undefined\n interactive: boolean | undefined = false\n selected: boolean | undefined = false\n target: string | undefined = undefined\n\n override get id(): string {\n return super.id\n }\n\n override set id(value: string | null | undefined) {\n super.id = value\n }\n\n override get title(): string {\n return super.title\n }\n\n override set title(value: string | null | undefined) {\n super.title = value\n }\n\n private contentObserver: MutationObserver | undefined\n\n override connectedCallback(): void {\n super.connectedCallback()\n this.style.display ||= 'contents'\n // Content edits restyle marked heading/text parts through the parent.\n this.contentObserver = new MutationObserver(() => this.notifyParent())\n this.contentObserver.observe(this, { childList: true })\n }\n\n override disconnectedCallback(): void {\n this.contentObserver?.disconnect()\n this.contentObserver = undefined\n super.disconnectedCallback()\n }\n\n private notifyParent(): void {\n this.dispatchEvent(\n new CustomEvent('sp-list-group-item-change', { bubbles: true })\n )\n }\n\n protected override willUpdate(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n if (changedProperties.has('active') && this.active == null) {\n this.active = false\n }\n if (changedProperties.has('disabled') && this.disabled == null) {\n this.disabled = false\n }\n if (changedProperties.has('interactive') && this.interactive == null) {\n this.interactive = false\n }\n if (changedProperties.has('selected') && this.selected == null) {\n this.selected = false\n }\n }\n\n protected override updated(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n super.updated(changedProperties)\n this.notifyParent()\n }\n\n override render() {\n return nothing\n }\n}\n\nexport function defineSpectreListGroupItem(\n tagName = 'sp-list-group-item'\n): typeof SpectreListGroupItemElement {\n const existingElement = customElements.get(tagName)\n\n if (existingElement) {\n return existingElement as unknown as typeof SpectreListGroupItemElement\n }\n\n customElements.define(tagName, SpectreListGroupItemElement)\n return SpectreListGroupItemElement\n}\n","import { html, nothing } from 'lit'\nimport { ifDefined } from 'lit/directives/if-defined.js'\n\nimport { SpectreBaseElement } from '../../utils/base'\nimport { createUniqueId } from '../../utils/dom'\nimport { getFocusableElements, trapFocus } from '../../utils/focus'\nimport {\n isOffcanvasPlacement,\n type SpectreOffcanvasPlacement\n} from '../../utils/form'\nimport { renderIcon } from '../../utils/icons'\nimport { ProjectionController } from '../../utils/projection'\n\nimport {\n getButtonClasses,\n getOffcanvasBackdropClasses,\n getOffcanvasBodyClasses,\n getOffcanvasClasses,\n getOffcanvasFooterClasses,\n getOffcanvasHeaderClasses,\n type OffcanvasPlacement\n} from '@phcdevworks/spectre-ui'\n\nexport interface SpectreOffcanvasProps {\n ariaLabel?: string | null\n ariaLabelledBy?: string | null\n ariaDescribedBy?: string | null\n closeLabel?: string | undefined\n id?: string | null | undefined\n label?: string | undefined\n open?: boolean | undefined\n placement?: SpectreOffcanvasPlacement | undefined\n title?: string | null | undefined\n}\n\nexport class SpectreOffcanvasElement\n extends SpectreBaseElement\n implements SpectreOffcanvasProps\n{\n static properties = {\n closeLabel: { attribute: 'close-label', type: String },\n label: { type: String },\n open: { type: Boolean, reflect: true },\n placement: { type: String, reflect: true }\n }\n\n closeLabel: string | undefined = 'Close'\n label: string | undefined = undefined\n open: boolean | undefined = false\n placement: SpectreOffcanvasPlacement | undefined = 'start'\n\n private previouslyFocusedElement: HTMLElement | null = null\n private readonly titleId = `${createUniqueId('sp-offcanvas')}-title`\n private readonly projection = new ProjectionController(this, [\n 'data-sp-offcanvas-backdrop',\n 'data-sp-offcanvas-native'\n ])\n\n override get id(): string {\n return super.id\n }\n\n override set id(value: string | null | undefined) {\n super.id = value\n }\n\n override get title(): string {\n return super.title\n }\n\n override set title(value: string | null | undefined) {\n super.title = value\n }\n\n override connectedCallback(): void {\n super.connectedCallback()\n document.addEventListener('keydown', this.handleDocumentKeydown)\n }\n\n override disconnectedCallback(): void {\n document.removeEventListener('keydown', this.handleDocumentKeydown)\n super.disconnectedCallback()\n }\n\n protected override willUpdate(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n if (changedProperties.has('closeLabel') && !this.closeLabel) {\n this.closeLabel = 'Close'\n }\n if (changedProperties.has('open') && this.open == null) {\n this.open = false\n }\n if (\n changedProperties.has('placement') &&\n (this.placement == null || !isOffcanvasPlacement(this.placement))\n ) {\n this.placement = 'start'\n }\n }\n\n protected override updated(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n super.updated(changedProperties)\n\n if (!changedProperties.has('open')) {\n return\n }\n\n if (this.open) {\n this.previouslyFocusedElement = document.activeElement as HTMLElement\n this.focusPanel()\n } else if (this.previouslyFocusedElement) {\n this.previouslyFocusedElement.focus()\n this.previouslyFocusedElement = null\n }\n }\n\n private get panelElement(): HTMLElement | null {\n return this.querySelector('[data-sp-offcanvas-native]')\n }\n\n // The panel's `visibility` transitions in from `hidden`, so it cannot take\n // focus until the slide-in finishes unless motion is disabled.\n private focusPanel(): void {\n const panel = this.panelElement\n const focusFirst = () => {\n const [first] = getFocusableElements(panel)\n ;(first ?? panel)?.focus()\n }\n focusFirst()\n if (panel && !panel.contains(document.activeElement)) {\n panel.addEventListener(\n 'transitionend',\n () => {\n if (this.open) {\n focusFirst()\n }\n },\n { once: true }\n )\n }\n }\n\n private handleDocumentKeydown = (event: KeyboardEvent): void => {\n if (!this.open) {\n return\n }\n if (event.key === 'Escape') {\n this.close()\n } else if (event.key === 'Tab') {\n trapFocus(event, this.panelElement)\n }\n }\n\n private close(): void {\n if (!this.open) {\n return\n }\n this.open = false\n this.dispatchEvent(new CustomEvent('sp-close', { bubbles: true }))\n }\n\n private get hasHeading(): boolean {\n return this.projection.has('header') || Boolean(this.label)\n }\n\n private get labelledBy(): string | undefined {\n if (this.forwardedAriaLabelledBy) {\n return this.forwardedAriaLabelledBy\n }\n return this.hasHeading && !this.forwardedAriaLabel\n ? this.titleId\n : undefined\n }\n\n override render() {\n const open = this.open ?? false\n\n return html`<div\n aria-hidden=\"true\"\n class=\"${getOffcanvasBackdropClasses({ open })}\"\n data-sp-offcanvas-backdrop\n @click=\"${() => this.close()}\"\n ></div>\n <div\n aria-describedby=\"${ifDefined(this.forwardedAriaDescribedBy)}\"\n aria-label=\"${ifDefined(this.forwardedAriaLabel)}\"\n aria-labelledby=\"${ifDefined(this.labelledBy)}\"\n aria-modal=\"true\"\n class=\"${getOffcanvasClasses({\n open,\n placement: this.placement as OffcanvasPlacement\n })}\"\n data-sp-offcanvas-native\n id=\"${ifDefined(this.id || undefined)}\"\n ?inert=\"${!open}\"\n role=\"dialog\"\n tabindex=\"-1\"\n title=\"${ifDefined(this.title || undefined)}\"\n >\n <div class=\"${getOffcanvasHeaderClasses()}\">\n <div id=\"${ifDefined(this.hasHeading ? this.titleId : undefined)}\">\n ${\n this.projection.has('header')\n ? this.projection.nodes('header')\n : (this.label ?? nothing)\n }\n </div>\n <button\n aria-label=\"${this.closeLabel ?? 'Close'}\"\n class=\"${getButtonClasses({ size: 'sm', variant: 'ghost' })}\"\n data-sp-offcanvas-close\n type=\"button\"\n @click=\"${() => this.close()}\"\n >\n ${renderIcon('close')}\n </button>\n </div>\n <div class=\"${getOffcanvasBodyClasses()}\">\n ${this.projection.nodes()}\n </div>\n ${\n this.projection.has('footer')\n ? html`<div class=\"${getOffcanvasFooterClasses()}\">\n ${this.projection.nodes('footer')}\n </div>`\n : nothing\n }\n </div>`\n }\n}\n\nexport function defineSpectreOffcanvas(\n tagName = 'sp-offcanvas'\n): typeof SpectreOffcanvasElement {\n const existingElement = customElements.get(tagName)\n\n if (existingElement) {\n return existingElement as unknown as typeof SpectreOffcanvasElement\n }\n\n customElements.define(tagName, SpectreOffcanvasElement)\n return SpectreOffcanvasElement\n}\n","import { html, nothing } from 'lit'\nimport { ifDefined } from 'lit/directives/if-defined.js'\n\nimport { SpectreBaseElement } from '../../utils/base'\nimport { normalizeInt } from '../../utils/form'\nimport { renderIcon } from '../../utils/icons'\nimport { applyPartClasses } from '../../utils/parts'\nimport { ProjectionController } from '../../utils/projection'\n\nimport {\n getCarouselCaptionClasses,\n getCarouselClasses,\n getCarouselControlClasses,\n getCarouselIndicatorClasses,\n getCarouselIndicatorsClasses,\n getCarouselSlideClasses,\n getCarouselViewportClasses\n} from '@phcdevworks/spectre-ui'\n\nexport interface SpectreCarouselProps {\n ariaLabel?: string | null\n ariaLabelledBy?: string | null\n fade?: boolean | undefined\n hideControls?: boolean | undefined\n hideIndicators?: boolean | undefined\n id?: string | null | undefined\n index?: number | undefined\n loop?: boolean | undefined\n nextLabel?: string | undefined\n previousLabel?: string | undefined\n title?: string | null | undefined\n}\n\nexport class SpectreCarouselElement\n extends SpectreBaseElement\n implements SpectreCarouselProps\n{\n static properties = {\n fade: { type: Boolean, reflect: true },\n hideControls: { attribute: 'hide-controls', type: Boolean, reflect: true },\n hideIndicators: {\n attribute: 'hide-indicators',\n type: Boolean,\n reflect: true\n },\n index: { type: Number, reflect: true },\n loop: { type: Boolean, reflect: true },\n nextLabel: { attribute: 'next-label', type: String },\n previousLabel: { attribute: 'previous-label', type: String }\n }\n\n fade: boolean | undefined = false\n hideControls: boolean | undefined = false\n hideIndicators: boolean | undefined = false\n index: number | undefined = 0\n loop: boolean | undefined = false\n nextLabel: string | undefined = 'Next slide'\n previousLabel: string | undefined = 'Previous slide'\n\n private indexFromScroll = false\n private readonly projection = new ProjectionController(this, [\n 'data-sp-carousel-native'\n ])\n\n override get id(): string {\n return super.id\n }\n\n override set id(value: string | null | undefined) {\n super.id = value\n }\n\n override get title(): string {\n return super.title\n }\n\n override set title(value: string | null | undefined) {\n super.title = value\n }\n\n override connectedCallback(): void {\n super.connectedCallback()\n this.style.display ||= 'block'\n }\n\n protected override willUpdate(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n if (changedProperties.has('fade') && this.fade == null) {\n this.fade = false\n }\n if (changedProperties.has('hideControls') && this.hideControls == null) {\n this.hideControls = false\n }\n if (\n changedProperties.has('hideIndicators') &&\n this.hideIndicators == null\n ) {\n this.hideIndicators = false\n }\n if (changedProperties.has('index')) {\n this.index = normalizeInt(this.index, 0)\n }\n if (changedProperties.has('loop') && this.loop == null) {\n this.loop = false\n }\n if (changedProperties.has('nextLabel') && !this.nextLabel) {\n this.nextLabel = 'Next slide'\n }\n if (changedProperties.has('previousLabel') && !this.previousLabel) {\n this.previousLabel = 'Previous slide'\n }\n }\n\n protected override updated(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n super.updated(changedProperties)\n this.slides.forEach((slide) => {\n applyPartClasses(slide.querySelectorAll('[slot]'), {\n caption: getCarouselCaptionClasses()\n })\n })\n const scrolledByUser = this.indexFromScroll\n this.indexFromScroll = false\n if (this.fade || scrolledByUser || !changedProperties.has('index')) {\n return\n }\n const slide = this.slideWrappers[this.activeIndex]\n if (slide && typeof this.viewport?.scrollTo === 'function') {\n this.viewport.scrollTo({ left: slide.offsetLeft })\n }\n }\n\n private get slides(): Element[] {\n return this.projection.elements()\n }\n\n private get activeIndex(): number {\n const last = this.slides.length - 1\n return Math.max(0, Math.min(this.index ?? 0, last))\n }\n\n private get viewport(): HTMLElement | null {\n return this.querySelector('[data-sp-carousel-viewport]')\n }\n\n private get slideWrappers(): HTMLElement[] {\n const viewport = this.viewport\n if (!viewport) {\n return []\n }\n return Array.from(viewport.children).filter((child): child is HTMLElement =>\n child.hasAttribute('data-sp-carousel-slide')\n )\n }\n\n private goTo(target: number): void {\n const count = this.slides.length\n if (count === 0) {\n return\n }\n let next = target\n if (this.loop) {\n next = ((target % count) + count) % count\n } else if (target < 0 || target >= count) {\n return\n }\n if (next === this.activeIndex) {\n return\n }\n this.index = next\n this.dispatchEvent(\n new CustomEvent('sp-change', { bubbles: true, detail: { index: next } })\n )\n }\n\n private handleKeydown = (event: KeyboardEvent): void => {\n if (event.key === 'ArrowLeft') {\n event.preventDefault()\n this.goTo(this.activeIndex - 1)\n } else if (event.key === 'ArrowRight') {\n event.preventDefault()\n this.goTo(this.activeIndex + 1)\n }\n }\n\n // Native swipes and scroll-snap move the viewport directly; follow them so\n // the indicators and controls stay in sync.\n private handleScroll = (event: Event): void => {\n const viewport = event.currentTarget as HTMLElement\n if (this.fade || viewport.clientWidth === 0) {\n return\n }\n const target = Math.round(viewport.scrollLeft / viewport.clientWidth)\n if (target === this.activeIndex || target >= this.slides.length) {\n return\n }\n this.indexFromScroll = true\n this.index = target\n this.dispatchEvent(\n new CustomEvent('sp-change', { bubbles: true, detail: { index: target } })\n )\n }\n\n private get regionLabel(): string | undefined {\n if (this.forwardedAriaLabel) {\n return this.forwardedAriaLabel\n }\n return this.forwardedAriaLabelledBy ? undefined : 'Carousel'\n }\n\n override render() {\n const slides = this.slides\n const count = slides.length\n const active = this.activeIndex\n const loop = this.loop ?? false\n\n return html`<div\n aria-label=\"${ifDefined(this.regionLabel)}\"\n aria-labelledby=\"${ifDefined(this.forwardedAriaLabelledBy)}\"\n aria-roledescription=\"carousel\"\n class=\"${getCarouselClasses({ fade: this.fade ?? false })}\"\n data-sp-carousel-native\n id=\"${ifDefined(this.id || undefined)}\"\n role=\"region\"\n title=\"${ifDefined(this.title || undefined)}\"\n @keydown=\"${this.handleKeydown}\"\n >\n <div\n aria-live=\"polite\"\n class=\"${getCarouselViewportClasses()}\"\n data-sp-carousel-viewport\n @scroll=\"${this.handleScroll}\"\n >\n ${slides.map(\n (slide, index) =>\n html`<div\n aria-label=\"${index + 1} of ${count}\"\n aria-roledescription=\"slide\"\n class=\"${getCarouselSlideClasses({ active: index === active })}\"\n data-sp-carousel-slide\n role=\"group\"\n >\n ${slide}\n </div>`\n )}\n </div>\n ${\n !this.hideControls && count > 1\n ? html`<button\n aria-label=\"${this.previousLabel ?? 'Previous slide'}\"\n class=\"${getCarouselControlClasses({ direction: 'prev' })}\"\n data-sp-carousel-prev\n ?disabled=\"${!loop && active === 0}\"\n type=\"button\"\n @click=\"${() => this.goTo(active - 1)}\"\n >\n ${renderIcon('chevronLeft', 'sp-icon-md')}\n </button>\n <button\n aria-label=\"${this.nextLabel ?? 'Next slide'}\"\n class=\"${getCarouselControlClasses({ direction: 'next' })}\"\n data-sp-carousel-next\n ?disabled=\"${!loop && active === count - 1}\"\n type=\"button\"\n @click=\"${() => this.goTo(active + 1)}\"\n >\n ${renderIcon('chevronRight', 'sp-icon-md')}\n </button>`\n : nothing\n }\n ${\n !this.hideIndicators && count > 1\n ? html`<div class=\"${getCarouselIndicatorsClasses()}\">\n ${slides.map(\n (_, index) =>\n html`<button\n aria-current=\"${ifDefined(\n index === active ? 'true' : undefined\n )}\"\n aria-label=\"Go to slide ${index + 1}\"\n class=\"${getCarouselIndicatorClasses({\n active: index === active\n })}\"\n data-sp-carousel-indicator\n type=\"button\"\n @click=\"${() => this.goTo(index)}\"\n ></button>`\n )}\n </div>`\n : nothing\n }\n </div>`\n }\n}\n\nexport function defineSpectreCarousel(\n tagName = 'sp-carousel'\n): typeof SpectreCarouselElement {\n const existingElement = customElements.get(tagName)\n\n if (existingElement) {\n return existingElement as unknown as typeof SpectreCarouselElement\n }\n\n customElements.define(tagName, SpectreCarouselElement)\n return SpectreCarouselElement\n}\n","import { html } from 'lit'\nimport { ifDefined } from 'lit/directives/if-defined.js'\n\nimport { SpectreBaseElement } from '../../utils/base'\nimport { replaceClasses } from '../../utils/dom'\nimport {\n isTableRowVariant,\n isTableSize,\n type SpectreTableSize\n} from '../../utils/form'\nimport { ProjectionController } from '../../utils/projection'\n\nimport {\n getTableClasses,\n getTableRowClasses,\n getTableWrapperClasses,\n type TableRowVariant,\n type TableSize\n} from '@phcdevworks/spectre-ui'\n\nexport interface SpectreTableProps {\n ariaLabel?: string | null\n ariaLabelledBy?: string | null\n bordered?: boolean | undefined\n hoverable?: boolean | undefined\n id?: string | null | undefined\n size?: SpectreTableSize | undefined\n striped?: boolean | undefined\n title?: string | null | undefined\n}\n\nexport class SpectreTableElement\n extends SpectreBaseElement\n implements SpectreTableProps\n{\n static properties = {\n bordered: { type: Boolean, reflect: true },\n hoverable: { type: Boolean, reflect: true },\n size: { type: String, reflect: true },\n striped: { type: Boolean, reflect: true }\n }\n\n bordered: boolean | undefined = false\n hoverable: boolean | undefined = false\n size: SpectreTableSize | undefined = 'md'\n striped: boolean | undefined = false\n\n private readonly appliedTableClasses = new WeakMap<Element, string>()\n private readonly projection = new ProjectionController(this, [\n 'data-sp-table-native'\n ])\n\n override get id(): string {\n return super.id\n }\n\n override set id(value: string | null | undefined) {\n super.id = value\n }\n\n override get title(): string {\n return super.title\n }\n\n override set title(value: string | null | undefined) {\n super.title = value\n }\n\n override connectedCallback(): void {\n super.connectedCallback()\n this.style.display ||= 'block'\n }\n\n protected override willUpdate(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n if (changedProperties.has('bordered') && this.bordered == null) {\n this.bordered = false\n }\n if (changedProperties.has('hoverable') && this.hoverable == null) {\n this.hoverable = false\n }\n if (\n changedProperties.has('size') &&\n (this.size == null || !isTableSize(this.size))\n ) {\n this.size = 'md'\n }\n if (changedProperties.has('striped') && this.striped == null) {\n this.striped = false\n }\n }\n\n // The authored <table> is styled in place: the HTML parser drops table\n // parts that are not inside a <table>, so the component cannot render one.\n protected override updated(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n super.updated(changedProperties)\n const classes = getTableClasses({\n bordered: this.bordered ?? false,\n hoverable: this.hoverable ?? false,\n size: this.size as TableSize,\n striped: this.striped ?? false\n })\n this.projection\n .elements()\n .filter((element) => element instanceof HTMLTableElement)\n .forEach((table) => {\n replaceClasses(\n table,\n this.appliedTableClasses.get(table) ?? '',\n classes\n )\n this.appliedTableClasses.set(table, classes)\n table.querySelectorAll('tr').forEach((row) => this.styleRow(row))\n })\n }\n\n // Contextual rows opt in with `data-variant`; `aria-selected` is styled by\n // the recipe CSS directly.\n private styleRow(row: HTMLTableRowElement): void {\n const variant = row.dataset.variant\n const classes = isTableRowVariant(variant)\n ? getTableRowClasses({ variant: variant as TableRowVariant })\n : ''\n replaceClasses(row, this.appliedTableClasses.get(row) ?? '', classes)\n this.appliedTableClasses.set(row, classes)\n }\n\n override render() {\n const labelled = Boolean(\n this.forwardedAriaLabel || this.forwardedAriaLabelledBy\n )\n\n return html`<div\n aria-label=\"${ifDefined(this.forwardedAriaLabel)}\"\n aria-labelledby=\"${ifDefined(this.forwardedAriaLabelledBy)}\"\n class=\"${getTableWrapperClasses()}\"\n data-sp-table-native\n id=\"${ifDefined(this.id || undefined)}\"\n role=\"${ifDefined(labelled ? 'region' : undefined)}\"\n tabindex=\"${ifDefined(labelled ? '0' : undefined)}\"\n title=\"${ifDefined(this.title || undefined)}\"\n >\n ${this.projection.nodes()}\n </div>`\n }\n}\n\nexport function defineSpectreTable(\n tagName = 'sp-table'\n): typeof SpectreTableElement {\n const existingElement = customElements.get(tagName)\n\n if (existingElement) {\n return existingElement as unknown as typeof SpectreTableElement\n }\n\n customElements.define(tagName, SpectreTableElement)\n return SpectreTableElement\n}\n","import { html, type TemplateResult } from 'lit'\nimport { ifDefined } from 'lit/directives/if-defined.js'\n\nimport { SpectreBaseElement } from '../../utils/base'\nimport {\n isInputSize,\n normalizeInt,\n type SpectreInputSize\n} from '../../utils/form'\n\nimport {\n getPaginationClasses,\n getPaginationEllipsisClasses,\n getPaginationItemClasses,\n type PaginationSize\n} from '@phcdevworks/spectre-ui'\n\nexport interface SpectrePaginationProps {\n ariaLabel?: string | null\n ariaLabelledBy?: string | null\n hrefTemplate?: string | undefined\n id?: string | null | undefined\n nextLabel?: string | undefined\n page?: number | undefined\n previousLabel?: string | undefined\n siblings?: number | undefined\n size?: SpectreInputSize | undefined\n title?: string | null | undefined\n total?: number | undefined\n}\n\ntype PageEntry = number | 'ellipsis'\n\n// Always shows the first and last page plus `siblings` pages either side of\n// the current one; an ellipsis only replaces a gap of two or more pages.\nfunction pageRange(page: number, total: number, siblings: number): PageEntry[] {\n const pages = (from: number, to: number): number[] =>\n Array.from({ length: to - from + 1 }, (_, index) => from + index)\n\n if (total <= siblings * 2 + 5) {\n return pages(1, total)\n }\n\n const left = Math.max(page - siblings, 1)\n const right = Math.min(page + siblings, total)\n const leftGap = left > 3\n const rightGap = right < total - 2\n const edgeCount = siblings * 2 + 3\n\n if (!leftGap) {\n return [...pages(1, edgeCount), 'ellipsis', total]\n }\n if (!rightGap) {\n return [1, 'ellipsis', ...pages(total - edgeCount + 1, total)]\n }\n return [1, 'ellipsis', ...pages(left, right), 'ellipsis', total]\n}\n\ninterface ItemOptions {\n active?: boolean\n disabled?: boolean\n label?: string\n}\n\nexport class SpectrePaginationElement\n extends SpectreBaseElement\n implements SpectrePaginationProps\n{\n static properties = {\n hrefTemplate: { attribute: 'href-template', type: String },\n nextLabel: { attribute: 'next-label', type: String },\n page: { type: Number, reflect: true },\n previousLabel: { attribute: 'previous-label', type: String },\n siblings: { type: Number },\n size: { type: String, reflect: true },\n total: { type: Number, reflect: true }\n }\n\n hrefTemplate: string | undefined = undefined\n nextLabel: string | undefined = 'Next'\n page: number | undefined = 1\n previousLabel: string | undefined = 'Previous'\n siblings: number | undefined = 1\n size: SpectreInputSize | undefined = 'md'\n total: number | undefined = 1\n\n override get id(): string {\n return super.id\n }\n\n override set id(value: string | null | undefined) {\n super.id = value\n }\n\n override get title(): string {\n return super.title\n }\n\n override set title(value: string | null | undefined) {\n super.title = value\n }\n\n override connectedCallback(): void {\n super.connectedCallback()\n this.style.display ||= 'block'\n }\n\n protected override willUpdate(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n if (changedProperties.has('total')) {\n this.total = normalizeInt(this.total, 1, 1)\n }\n if (changedProperties.has('page') || changedProperties.has('total')) {\n const page = normalizeInt(this.page, 1, 1) ?? 1\n this.page = Math.min(page, this.total ?? 1)\n }\n if (changedProperties.has('siblings')) {\n this.siblings = normalizeInt(this.siblings, 1)\n }\n if (\n changedProperties.has('size') &&\n (this.size == null || !isInputSize(this.size))\n ) {\n this.size = 'md'\n }\n if (changedProperties.has('previousLabel') && !this.previousLabel) {\n this.previousLabel = 'Previous'\n }\n if (changedProperties.has('nextLabel') && !this.nextLabel) {\n this.nextLabel = 'Next'\n }\n }\n\n private get navLabel(): string | undefined {\n if (this.forwardedAriaLabel) {\n return this.forwardedAriaLabel\n }\n return this.forwardedAriaLabelledBy ? undefined : 'Pagination'\n }\n\n private goTo(target: number): void {\n if (target === this.page || target < 1 || target > (this.total ?? 1)) {\n return\n }\n this.page = target\n this.dispatchEvent(\n new CustomEvent('sp-change', { bubbles: true, detail: { page: target } })\n )\n }\n\n private renderItem(\n target: number,\n content: string | number,\n { active = false, disabled = false, label }: ItemOptions\n ): TemplateResult {\n const classes = getPaginationItemClasses({ active, disabled })\n const current = active ? 'page' : undefined\n\n if (this.hrefTemplate) {\n if (disabled) {\n return html`<a aria-disabled=\"true\" class=\"${classes}\">${content}</a>`\n }\n return html`<a\n aria-current=\"${ifDefined(current)}\"\n aria-label=\"${ifDefined(label)}\"\n class=\"${classes}\"\n href=\"${this.hrefTemplate.split('{page}').join(String(target))}\"\n @click=\"${() => this.goTo(target)}\"\n >${content}</a\n >`\n }\n\n return html`<button\n aria-current=\"${ifDefined(current)}\"\n aria-label=\"${ifDefined(label)}\"\n class=\"${classes}\"\n ?disabled=\"${disabled}\"\n type=\"button\"\n @click=\"${() => this.goTo(target)}\"\n >\n ${content}\n </button>`\n }\n\n override render() {\n const page = this.page ?? 1\n const total = this.total ?? 1\n\n return html`<nav\n aria-label=\"${ifDefined(this.navLabel)}\"\n aria-labelledby=\"${ifDefined(this.forwardedAriaLabelledBy)}\"\n data-sp-pagination-native\n id=\"${ifDefined(this.id || undefined)}\"\n title=\"${ifDefined(this.title || undefined)}\"\n >\n <ul\n class=\"${getPaginationClasses({ size: this.size as PaginationSize })}\"\n >\n <li>\n ${this.renderItem(page - 1, this.previousLabel ?? 'Previous', {\n disabled: page <= 1\n })}\n </li>\n ${pageRange(page, total, this.siblings ?? 1).map((entry) =>\n entry === 'ellipsis'\n ? html`<li>\n <span\n aria-hidden=\"true\"\n class=\"${getPaginationEllipsisClasses()}\"\n >…</span\n >\n </li>`\n : html`<li>\n ${this.renderItem(entry, entry, {\n active: entry === page,\n label: `Page ${entry}`\n })}\n </li>`\n )}\n <li>\n ${this.renderItem(page + 1, this.nextLabel ?? 'Next', {\n disabled: page >= total\n })}\n </li>\n </ul>\n </nav>`\n }\n}\n\nexport function defineSpectrePagination(\n tagName = 'sp-pagination'\n): typeof SpectrePaginationElement {\n const existingElement = customElements.get(tagName)\n\n if (existingElement) {\n return existingElement as unknown as typeof SpectrePaginationElement\n }\n\n customElements.define(tagName, SpectrePaginationElement)\n return SpectrePaginationElement\n}\n","import { html } from 'lit'\nimport { ifDefined } from 'lit/directives/if-defined.js'\n\nimport { SpectreBaseElement } from '../../utils/base'\nimport {\n isStepperOrientation,\n normalizeInt,\n type SpectreStepperOrientation\n} from '../../utils/form'\nimport { renderIcon } from '../../utils/icons'\nimport { ProjectionController } from '../../utils/projection'\n\nimport {\n getStepperClasses,\n getStepperIndicatorClasses,\n getStepperLabelClasses,\n getStepperStepClasses,\n type StepperStepState\n} from '@phcdevworks/spectre-ui'\n\nexport interface SpectreStepperProps {\n ariaLabel?: string | null\n ariaLabelledBy?: string | null\n current?: number | undefined\n id?: string | null | undefined\n orientation?: SpectreStepperOrientation | undefined\n title?: string | null | undefined\n}\n\nexport class SpectreStepperElement\n extends SpectreBaseElement\n implements SpectreStepperProps\n{\n static properties = {\n current: { type: Number, reflect: true },\n orientation: { type: String, reflect: true }\n }\n\n current: number | undefined = 0\n orientation: SpectreStepperOrientation | undefined = 'horizontal'\n\n private readonly projection = new ProjectionController(this, [\n 'data-sp-stepper-native'\n ])\n\n override get id(): string {\n return super.id\n }\n\n override set id(value: string | null | undefined) {\n super.id = value\n }\n\n override get title(): string {\n return super.title\n }\n\n override set title(value: string | null | undefined) {\n super.title = value\n }\n\n override connectedCallback(): void {\n super.connectedCallback()\n this.style.display ||= 'block'\n }\n\n protected override willUpdate(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n if (changedProperties.has('current')) {\n this.current = normalizeInt(this.current, 0)\n }\n if (\n changedProperties.has('orientation') &&\n (this.orientation == null || !isStepperOrientation(this.orientation))\n ) {\n this.orientation = 'horizontal'\n }\n }\n\n private stateFor(index: number): StepperStepState {\n const current = this.current ?? 0\n if (index < current) {\n return 'done'\n }\n return index === current ? 'active' : 'pending'\n }\n\n override render() {\n return html`<ol\n aria-label=\"${ifDefined(this.forwardedAriaLabel)}\"\n aria-labelledby=\"${ifDefined(this.forwardedAriaLabelledBy)}\"\n class=\"${getStepperClasses({\n orientation: this.orientation as SpectreStepperOrientation\n })}\"\n data-sp-stepper-native\n id=\"${ifDefined(this.id || undefined)}\"\n title=\"${ifDefined(this.title || undefined)}\"\n >\n ${this.projection.elements().map((step, index) => {\n const state = this.stateFor(index)\n return html`<li\n aria-current=\"${ifDefined(state === 'active' ? 'step' : undefined)}\"\n class=\"${getStepperStepClasses({ state })}\"\n data-state=\"${state}\"\n >\n <span aria-hidden=\"true\" class=\"${getStepperIndicatorClasses()}\"\n >${state === 'done' ? renderIcon('check') : index + 1}</span\n >\n <span class=\"${getStepperLabelClasses()}\">${step}</span>\n </li>`\n })}\n </ol>`\n }\n}\n\nexport function defineSpectreStepper(\n tagName = 'sp-stepper'\n): typeof SpectreStepperElement {\n const existingElement = customElements.get(tagName)\n\n if (existingElement) {\n return existingElement as unknown as typeof SpectreStepperElement\n }\n\n customElements.define(tagName, SpectreStepperElement)\n return SpectreStepperElement\n}\n","import { html } from 'lit'\nimport { ifDefined } from 'lit/directives/if-defined.js'\n\nimport { SpectreBaseElement } from '../../utils/base'\nimport {\n isAccentEdge,\n isSpacingStep,\n type SpectreAccentEdge,\n type SpectreSpacingStep\n} from '../../utils/form'\nimport { ProjectionController } from '../../utils/projection'\n\nimport {\n getCardBleedClasses,\n type CardBleedEdge,\n type CardBleedPaddingSize\n} from '@phcdevworks/spectre-ui'\n\nexport interface SpectreCardBleedProps {\n edges?: string | undefined\n id?: string | null | undefined\n padded?: SpectreSpacingStep | undefined\n title?: string | null | undefined\n}\n\n// Media or a full-width band inside `sp-card` that runs flush through the\n// card's padding on the chosen edges.\nexport class SpectreCardBleedElement\n extends SpectreBaseElement\n implements SpectreCardBleedProps\n{\n static properties = {\n edges: { type: String, reflect: true },\n padded: { type: String, reflect: true }\n }\n\n edges: string | undefined = undefined\n padded: SpectreSpacingStep | undefined = undefined\n\n private readonly projection = new ProjectionController(this, [\n 'data-sp-card-bleed-native'\n ])\n\n override get id(): string {\n return super.id\n }\n\n override set id(value: string | null | undefined) {\n super.id = value\n }\n\n override get title(): string {\n return super.title\n }\n\n override set title(value: string | null | undefined) {\n super.title = value\n }\n\n override connectedCallback(): void {\n super.connectedCallback()\n this.style.display ||= 'block'\n }\n\n protected override willUpdate(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n // A bare `padded` attribute means the card's default padding step.\n if (changedProperties.has('padded') && this.padded != null) {\n const padded = this.padded as string\n this.padded =\n padded === '' ? 'md' : isSpacingStep(padded) ? padded : undefined\n }\n }\n\n // `edges` is a space-separated list of edges, or `all`.\n private get bleedEdges(): CardBleedEdge[] | 'all' {\n const tokens = (this.edges ?? '').split(/\\s+/).filter(Boolean)\n if (tokens.includes('all')) {\n return 'all'\n }\n return tokens.filter((token): token is SpectreAccentEdge =>\n isAccentEdge(token)\n ) as CardBleedEdge[]\n }\n\n override render() {\n return html`<div\n class=\"${getCardBleedClasses({\n edges: this.bleedEdges,\n ...(this.padded != null && {\n padded: this.padded as CardBleedPaddingSize\n })\n })}\"\n data-sp-card-bleed-native\n id=\"${ifDefined(this.id || undefined)}\"\n title=\"${ifDefined(this.title || undefined)}\"\n >\n ${this.projection.nodes()}\n </div>`\n }\n}\n\nexport function defineSpectreCardBleed(\n tagName = 'sp-card-bleed'\n): typeof SpectreCardBleedElement {\n const existingElement = customElements.get(tagName)\n\n if (existingElement) {\n return existingElement as unknown as typeof SpectreCardBleedElement\n }\n\n customElements.define(tagName, SpectreCardBleedElement)\n return SpectreCardBleedElement\n}\n","import { html } from 'lit'\nimport { ifDefined } from 'lit/directives/if-defined.js'\n\nimport { SpectreBaseElement } from '../../utils/base'\nimport { ProjectionController } from '../../utils/projection'\n\nimport { getProseClasses } from '@phcdevworks/spectre-ui'\n\nexport interface SpectreProseProps {\n ariaLabel?: string | null\n id?: string | null | undefined\n title?: string | null | undefined\n}\n\n// Styles authored long-form HTML (headings, lists, code, quotes, rules).\nexport class SpectreProseElement\n extends SpectreBaseElement\n implements SpectreProseProps\n{\n private readonly projection = new ProjectionController(this, [\n 'data-sp-prose-native'\n ])\n\n override get id(): string {\n return super.id\n }\n\n override set id(value: string | null | undefined) {\n super.id = value\n }\n\n override get title(): string {\n return super.title\n }\n\n override set title(value: string | null | undefined) {\n super.title = value\n }\n\n override connectedCallback(): void {\n super.connectedCallback()\n this.style.display ||= 'block'\n }\n\n override render() {\n return html`<div\n aria-label=\"${ifDefined(this.forwardedAriaLabel)}\"\n class=\"${getProseClasses()}\"\n data-sp-prose-native\n id=\"${ifDefined(this.id || undefined)}\"\n role=\"${ifDefined(this.forwardedAriaLabel ? 'region' : undefined)}\"\n title=\"${ifDefined(this.title || undefined)}\"\n >\n ${this.projection.nodes()}\n </div>`\n }\n}\n\nexport function defineSpectreProse(\n tagName = 'sp-prose'\n): typeof SpectreProseElement {\n const existingElement = customElements.get(tagName)\n\n if (existingElement) {\n return existingElement as unknown as typeof SpectreProseElement\n }\n\n customElements.define(tagName, SpectreProseElement)\n return SpectreProseElement\n}\n","import { html, nothing } from 'lit'\nimport { ifDefined } from 'lit/directives/if-defined.js'\nimport { styleMap } from 'lit/directives/style-map.js'\n\nimport { SpectreBaseElement } from '../../utils/base'\nimport { createUniqueId } from '../../utils/dom'\nimport {\n isInputSize,\n isProgressVariant,\n type SpectreInputSize,\n type SpectreProgressVariant\n} from '../../utils/form'\n\nimport {\n getProgressBarClasses,\n getProgressClasses,\n getProgressLabelClasses,\n type ProgressBarVariant,\n type ProgressSize\n} from '@phcdevworks/spectre-ui'\n\nexport interface SpectreProgressProps {\n ariaLabel?: string | null\n ariaLabelledBy?: string | null\n id?: string | null | undefined\n indeterminate?: boolean | undefined\n label?: string | undefined\n max?: number | undefined\n size?: SpectreInputSize | undefined\n title?: string | null | undefined\n value?: number | undefined\n valueText?: string | undefined\n variant?: SpectreProgressVariant | undefined\n}\n\nexport class SpectreProgressElement\n extends SpectreBaseElement\n implements SpectreProgressProps\n{\n static properties = {\n indeterminate: { type: Boolean, reflect: true },\n label: { type: String },\n max: { type: Number, reflect: true },\n size: { type: String, reflect: true },\n value: { type: Number, reflect: true },\n valueText: { attribute: 'value-text', type: String },\n variant: { type: String, reflect: true }\n }\n\n indeterminate: boolean | undefined = false\n label: string | undefined = undefined\n max: number | undefined = 100\n size: SpectreInputSize | undefined = 'md'\n value: number | undefined = 0\n valueText: string | undefined = undefined\n variant: SpectreProgressVariant | undefined = 'brand'\n\n private readonly labelId = `${createUniqueId('sp-progress')}-label`\n\n override get id(): string {\n return super.id\n }\n\n override set id(value: string | null | undefined) {\n super.id = value\n }\n\n override get title(): string {\n return super.title\n }\n\n override set title(value: string | null | undefined) {\n super.title = value\n }\n\n override connectedCallback(): void {\n super.connectedCallback()\n this.style.display ||= 'block'\n }\n\n protected override willUpdate(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n if (changedProperties.has('indeterminate') && this.indeterminate == null) {\n this.indeterminate = false\n }\n if (\n changedProperties.has('max') &&\n (typeof this.max !== 'number' || !(this.max > 0))\n ) {\n this.max = 100\n }\n if (changedProperties.has('value') || changedProperties.has('max')) {\n const value = typeof this.value === 'number' ? this.value : 0\n this.value = Math.min(Math.max(value, 0), this.max ?? 100)\n }\n if (\n changedProperties.has('size') &&\n (this.size == null || !isInputSize(this.size))\n ) {\n this.size = 'md'\n }\n if (\n changedProperties.has('variant') &&\n (this.variant == null || !isProgressVariant(this.variant))\n ) {\n this.variant = 'brand'\n }\n }\n\n private get percent(): number {\n return ((this.value ?? 0) / (this.max ?? 100)) * 100\n }\n\n private get labelledBy(): string | undefined {\n if (this.forwardedAriaLabelledBy) {\n return this.forwardedAriaLabelledBy\n }\n return this.label && !this.forwardedAriaLabel ? this.labelId : undefined\n }\n\n override render() {\n const indeterminate = this.indeterminate ?? false\n\n return html`${\n this.label\n ? html`<span class=\"${getProgressLabelClasses()}\" id=\"${this.labelId}\"\n >${this.label}</span\n >`\n : nothing\n }\n <div\n aria-label=\"${ifDefined(this.forwardedAriaLabel)}\"\n aria-labelledby=\"${ifDefined(this.labelledBy)}\"\n aria-valuemax=\"${this.max ?? 100}\"\n aria-valuemin=\"0\"\n aria-valuenow=\"${ifDefined(indeterminate ? undefined : this.value)}\"\n aria-valuetext=\"${ifDefined(this.valueText || undefined)}\"\n class=\"${getProgressClasses({ size: this.size as ProgressSize })}\"\n data-sp-progress-native\n id=\"${ifDefined(this.id || undefined)}\"\n role=\"progressbar\"\n title=\"${ifDefined(this.title || undefined)}\"\n >\n <div\n class=\"${getProgressBarClasses({\n indeterminate,\n variant: this.variant as ProgressBarVariant\n })}\"\n data-sp-progress-bar\n style=\"${styleMap(indeterminate ? {} : { width: `${this.percent}%` })}\"\n ></div>\n </div>`\n }\n}\n\nexport function defineSpectreProgress(\n tagName = 'sp-progress'\n): typeof SpectreProgressElement {\n const existingElement = customElements.get(tagName)\n\n if (existingElement) {\n return existingElement as unknown as typeof SpectreProgressElement\n }\n\n customElements.define(tagName, SpectreProgressElement)\n return SpectreProgressElement\n}\n","import { html, nothing } from 'lit'\nimport { ifDefined } from 'lit/directives/if-defined.js'\nimport { live } from 'lit/directives/live.js'\n\nimport { SpectreBaseElement } from '../../utils/base'\nimport { ProjectionController } from '../../utils/projection'\nimport { isInputSize, type SpectreInputSize } from '../../utils/form'\n\nimport {\n getInputLabelClasses,\n getSwitchClasses,\n type SwitchSize\n} from '@phcdevworks/spectre-ui'\n\nexport interface SpectreSwitchProps {\n ariaLabel?: string | null\n ariaLabelledBy?: string | null\n ariaDescribedBy?: string | null\n checked?: boolean | undefined\n disabled?: boolean | undefined\n focused?: boolean | undefined\n form?: string | undefined\n id?: string | null | undefined\n label?: string | undefined\n name?: string | undefined\n required?: boolean | undefined\n size?: SpectreInputSize | undefined\n title?: string | null | undefined\n value?: string | undefined\n}\n\n// A native `<input type=\"checkbox\" role=\"switch\">`, so it submits with its\n// form and announces on/off state.\nexport class SpectreSwitchElement\n extends SpectreBaseElement\n implements SpectreSwitchProps\n{\n static properties = {\n checked: { type: Boolean, reflect: true },\n disabled: { type: Boolean, reflect: true },\n focused: { type: Boolean, reflect: true },\n form: { type: String },\n label: { type: String },\n name: { type: String, reflect: true },\n required: { type: Boolean, reflect: true },\n size: { type: String, reflect: true },\n value: { type: String }\n }\n\n checked: boolean | undefined = false\n disabled: boolean | undefined = false\n focused: boolean | undefined = false\n form: string | undefined = undefined\n label: string | undefined = undefined\n name: string | undefined = undefined\n required: boolean | undefined = false\n size: SpectreInputSize | undefined = 'md'\n value: string | undefined = 'on'\n\n override get id(): string {\n return super.id\n }\n\n override set id(value: string | null | undefined) {\n super.id = value\n }\n\n override get title(): string {\n return super.title\n }\n\n override set title(value: string | null | undefined) {\n super.title = value\n }\n\n private readonly projection = new ProjectionController(this, [\n 'data-sp-switch-label'\n ])\n\n protected override willUpdate(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n if (changedProperties.has('checked') && this.checked == null) {\n this.checked = false\n }\n if (changedProperties.has('disabled') && this.disabled == null) {\n this.disabled = false\n }\n if (changedProperties.has('required') && this.required == null) {\n this.required = false\n }\n if (\n changedProperties.has('size') &&\n (this.size == null || !isInputSize(this.size))\n ) {\n this.size = 'md'\n }\n }\n\n private get nativeInput(): HTMLInputElement | null {\n return this.querySelector('[data-sp-switch-native]')\n }\n\n override focus(options?: FocusOptions): void {\n this.nativeInput?.focus(options)\n }\n\n override blur(): void {\n this.nativeInput?.blur()\n }\n\n private handleChange(event: Event): void {\n this.checked = (event.currentTarget as HTMLInputElement).checked\n }\n\n override render() {\n const disabled = this.disabled ?? false\n const labelContent = this.projection.has()\n ? this.projection.nodes()\n : this.label\n ? html`<span\n class=\"${getInputLabelClasses({ disabled })}\"\n data-sp-switch-label-fallback\n >${this.label}</span\n >`\n : nothing\n\n return html`<label data-sp-switch-label>\n <input\n aria-describedby=\"${ifDefined(this.forwardedAriaDescribedBy)}\"\n aria-label=\"${ifDefined(this.forwardedAriaLabel)}\"\n aria-labelledby=\"${ifDefined(this.forwardedAriaLabelledBy)}\"\n .checked=\"${live(this.checked ?? false)}\"\n class=\"${getSwitchClasses({\n focused: this.focused ?? false,\n size: this.size as SwitchSize\n })}\"\n data-sp-switch-native\n ?disabled=\"${disabled}\"\n form=\"${ifDefined(this.form || undefined)}\"\n id=\"${ifDefined(this.id || undefined)}\"\n name=\"${ifDefined(this.name || undefined)}\"\n ?required=\"${this.required ?? false}\"\n role=\"switch\"\n title=\"${ifDefined(this.title || undefined)}\"\n type=\"checkbox\"\n value=\"${ifDefined(this.value)}\"\n @change=\"${this.handleChange}\"\n />\n ${labelContent}\n </label>`\n }\n}\n\nexport function defineSpectreSwitch(\n tagName = 'sp-switch'\n): typeof SpectreSwitchElement {\n const existingElement = customElements.get(tagName)\n\n if (existingElement) {\n return existingElement as unknown as typeof SpectreSwitchElement\n }\n\n customElements.define(tagName, SpectreSwitchElement)\n return SpectreSwitchElement\n}\n","import { html } from 'lit'\nimport { ifDefined } from 'lit/directives/if-defined.js'\nimport { live } from 'lit/directives/live.js'\n\nimport { SpectreBaseElement } from '../../utils/base'\n\nimport { getRangeClasses } from '@phcdevworks/spectre-ui'\n\nexport interface SpectreRangeProps {\n ariaLabel?: string | null\n ariaLabelledBy?: string | null\n ariaDescribedBy?: string | null\n disabled?: boolean | undefined\n focused?: boolean | undefined\n form?: string | undefined\n id?: string | null | undefined\n max?: number | undefined\n min?: number | undefined\n name?: string | undefined\n step?: number | undefined\n title?: string | null | undefined\n value?: number | undefined\n}\n\nexport class SpectreRangeElement\n extends SpectreBaseElement\n implements SpectreRangeProps\n{\n static properties = {\n disabled: { type: Boolean, reflect: true },\n focused: { type: Boolean, reflect: true },\n form: { type: String },\n max: { type: Number, reflect: true },\n min: { type: Number, reflect: true },\n name: { type: String, reflect: true },\n step: { type: Number, reflect: true },\n value: { type: Number, reflect: true }\n }\n\n disabled: boolean | undefined = false\n focused: boolean | undefined = false\n form: string | undefined = undefined\n max: number | undefined = 100\n min: number | undefined = 0\n name: string | undefined = undefined\n step: number | undefined = 1\n value: number | undefined = 50\n\n override get id(): string {\n return super.id\n }\n\n override set id(value: string | null | undefined) {\n super.id = value\n }\n\n override get title(): string {\n return super.title\n }\n\n override set title(value: string | null | undefined) {\n super.title = value\n }\n\n protected override willUpdate(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n if (changedProperties.has('disabled') && this.disabled == null) {\n this.disabled = false\n }\n if (changedProperties.has('min') && typeof this.min !== 'number') {\n this.min = 0\n }\n if (\n changedProperties.has('max') &&\n (typeof this.max !== 'number' || this.max <= (this.min ?? 0))\n ) {\n this.max = (this.min ?? 0) + 100\n }\n if (\n changedProperties.has('value') ||\n changedProperties.has('min') ||\n changedProperties.has('max')\n ) {\n const value = typeof this.value === 'number' ? this.value : 0\n this.value = Math.min(Math.max(value, this.min ?? 0), this.max ?? 100)\n }\n }\n\n // WebKit/Blink paint the filled track from this recipe-defined variable;\n // Firefox fills natively.\n protected override updated(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n super.updated(changedProperties)\n const min = this.min ?? 0\n const span = (this.max ?? 100) - min\n const percent = span > 0 ? (((this.value ?? min) - min) / span) * 100 : 0\n this.nativeInput?.style.setProperty(\n '--sp-component-range-value',\n `${percent}%`\n )\n }\n\n private get nativeInput(): HTMLInputElement | null {\n return this.querySelector('[data-sp-range-native]')\n }\n\n override focus(options?: FocusOptions): void {\n this.nativeInput?.focus(options)\n }\n\n override blur(): void {\n this.nativeInput?.blur()\n }\n\n private handleInput(event: Event): void {\n this.value = (event.currentTarget as HTMLInputElement).valueAsNumber\n }\n\n override render() {\n return html`<input\n aria-describedby=\"${ifDefined(this.forwardedAriaDescribedBy)}\"\n aria-label=\"${ifDefined(this.forwardedAriaLabel)}\"\n aria-labelledby=\"${ifDefined(this.forwardedAriaLabelledBy)}\"\n class=\"${getRangeClasses({\n disabled: this.disabled ?? false,\n focused: this.focused ?? false\n })}\"\n data-sp-range-native\n ?disabled=\"${this.disabled ?? false}\"\n form=\"${ifDefined(this.form || undefined)}\"\n id=\"${ifDefined(this.id || undefined)}\"\n max=\"${this.max ?? 100}\"\n min=\"${this.min ?? 0}\"\n name=\"${ifDefined(this.name || undefined)}\"\n step=\"${this.step ?? 1}\"\n title=\"${ifDefined(this.title || undefined)}\"\n type=\"range\"\n .value=\"${live(String(this.value ?? 0))}\"\n @change=\"${this.handleInput}\"\n @input=\"${this.handleInput}\"\n />`\n }\n}\n\nexport function defineSpectreRange(\n tagName = 'sp-range'\n): typeof SpectreRangeElement {\n const existingElement = customElements.get(tagName)\n\n if (existingElement) {\n return existingElement as unknown as typeof SpectreRangeElement\n }\n\n customElements.define(tagName, SpectreRangeElement)\n return SpectreRangeElement\n}\n","import { html } from 'lit'\nimport { ifDefined } from 'lit/directives/if-defined.js'\n\nimport { SpectreBaseElement } from '../../utils/base'\nimport { isInputSize, type SpectreInputSize } from '../../utils/form'\n\nimport {\n getFileInputClasses,\n type FileInputSize\n} from '@phcdevworks/spectre-ui'\n\nexport interface SpectreFileInputProps {\n accept?: string | undefined\n ariaLabel?: string | null\n ariaLabelledBy?: string | null\n ariaDescribedBy?: string | null\n disabled?: boolean | undefined\n focused?: boolean | undefined\n form?: string | undefined\n fullWidth?: boolean | undefined\n id?: string | null | undefined\n invalid?: boolean | undefined\n multiple?: boolean | undefined\n name?: string | undefined\n required?: boolean | undefined\n size?: SpectreInputSize | undefined\n success?: boolean | undefined\n title?: string | null | undefined\n}\n\nexport class SpectreFileInputElement\n extends SpectreBaseElement\n implements SpectreFileInputProps\n{\n static properties = {\n accept: { type: String, reflect: true },\n disabled: { type: Boolean, reflect: true },\n focused: { type: Boolean, reflect: true },\n form: { type: String },\n fullWidth: { attribute: 'full-width', type: Boolean, reflect: true },\n invalid: { type: Boolean, reflect: true },\n multiple: { type: Boolean, reflect: true },\n name: { type: String, reflect: true },\n required: { type: Boolean, reflect: true },\n size: { type: String, reflect: true },\n success: { type: Boolean, reflect: true }\n }\n\n accept: string | undefined = undefined\n disabled: boolean | undefined = false\n focused: boolean | undefined = false\n form: string | undefined = undefined\n fullWidth: boolean | undefined = false\n invalid: boolean | undefined = false\n multiple: boolean | undefined = false\n name: string | undefined = undefined\n required: boolean | undefined = false\n size: SpectreInputSize | undefined = 'md'\n success: boolean | undefined = false\n\n override get id(): string {\n return super.id\n }\n\n override set id(value: string | null | undefined) {\n super.id = value\n }\n\n override get title(): string {\n return super.title\n }\n\n override set title(value: string | null | undefined) {\n super.title = value\n }\n\n protected override willUpdate(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n if (\n changedProperties.has('size') &&\n (this.size == null || !isInputSize(this.size))\n ) {\n this.size = 'md'\n }\n }\n\n private get nativeInput(): HTMLInputElement | null {\n return this.querySelector('[data-sp-file-input-native]')\n }\n\n get files(): FileList | null {\n return this.nativeInput?.files ?? null\n }\n\n override focus(options?: FocusOptions): void {\n this.nativeInput?.focus(options)\n }\n\n override blur(): void {\n this.nativeInput?.blur()\n }\n\n override render() {\n const state = this.invalid\n ? 'invalid'\n : this.success\n ? 'success'\n : 'default'\n\n return html`<input\n accept=\"${ifDefined(this.accept || undefined)}\"\n aria-describedby=\"${ifDefined(this.forwardedAriaDescribedBy)}\"\n aria-invalid=\"${ifDefined(this.invalid ? 'true' : undefined)}\"\n aria-label=\"${ifDefined(this.forwardedAriaLabel)}\"\n aria-labelledby=\"${ifDefined(this.forwardedAriaLabelledBy)}\"\n class=\"${getFileInputClasses({\n disabled: this.disabled ?? false,\n focused: this.focused ?? false,\n fullWidth: this.fullWidth ?? false,\n size: this.size as FileInputSize,\n state\n })}\"\n data-sp-file-input-native\n ?disabled=\"${this.disabled ?? false}\"\n form=\"${ifDefined(this.form || undefined)}\"\n id=\"${ifDefined(this.id || undefined)}\"\n ?multiple=\"${this.multiple ?? false}\"\n name=\"${ifDefined(this.name || undefined)}\"\n ?required=\"${this.required ?? false}\"\n title=\"${ifDefined(this.title || undefined)}\"\n type=\"file\"\n />`\n }\n}\n\nexport function defineSpectreFileInput(\n tagName = 'sp-file-input'\n): typeof SpectreFileInputElement {\n const existingElement = customElements.get(tagName)\n\n if (existingElement) {\n return existingElement as unknown as typeof SpectreFileInputElement\n }\n\n customElements.define(tagName, SpectreFileInputElement)\n return SpectreFileInputElement\n}\n","import { html, nothing } from 'lit'\nimport { ifDefined } from 'lit/directives/if-defined.js'\n\nimport { SpectreBaseElement } from '../../utils/base'\nimport { ProjectionController } from '../../utils/projection'\nimport {\n interactionStateProperties,\n interactionStates,\n type SpectreInteractionStateProps\n} from '../../utils/states'\n\nimport {\n getExternalAuthButtonClasses,\n getExternalAuthButtonIconClasses\n} from '@phcdevworks/spectre-ui'\n\nexport interface SpectreExternalAuthButtonProps extends SpectreInteractionStateProps {\n ariaLabel?: string | null\n disabled?: boolean | undefined\n fullWidth?: boolean | undefined\n href?: string | undefined\n id?: string | null | undefined\n loading?: boolean | undefined\n title?: string | null | undefined\n type?: 'button' | 'submit' | undefined\n}\n\n// One neutral treatment for every third-party sign-in provider; the provider\n// logo goes in `slot=\"icon\"` and the label in the default slot.\nexport class SpectreExternalAuthButtonElement\n extends SpectreBaseElement\n implements SpectreExternalAuthButtonProps\n{\n static properties = {\n ...interactionStateProperties,\n disabled: { type: Boolean, reflect: true },\n fullWidth: { attribute: 'full-width', type: Boolean, reflect: true },\n href: { type: String },\n loading: { type: Boolean, reflect: true },\n type: { type: String }\n }\n\n active: boolean | undefined = false\n focused: boolean | undefined = false\n hovered: boolean | undefined = false\n\n disabled: boolean | undefined = false\n fullWidth: boolean | undefined = false\n href: string | undefined = undefined\n loading: boolean | undefined = false\n type: 'button' | 'submit' | undefined = 'button'\n\n private readonly projection = new ProjectionController(this, [\n 'data-sp-external-auth-button-native'\n ])\n\n override get id(): string {\n return super.id\n }\n\n override set id(value: string | null | undefined) {\n super.id = value\n }\n\n override get title(): string {\n return super.title\n }\n\n override set title(value: string | null | undefined) {\n super.title = value\n }\n\n protected override willUpdate(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n if (\n changedProperties.has('type') &&\n this.type !== 'button' &&\n this.type !== 'submit'\n ) {\n this.type = 'button'\n }\n }\n\n private get nativeElement(): HTMLElement | null {\n return this.querySelector('[data-sp-external-auth-button-native]')\n }\n\n override focus(options?: FocusOptions): void {\n this.nativeElement?.focus(options)\n }\n\n override blur(): void {\n this.nativeElement?.blur()\n }\n\n // A submit button inside a light-DOM form submits natively.\n override render() {\n const classes = getExternalAuthButtonClasses({\n ...interactionStates(this),\n disabled: this.isDisabled,\n fullWidth: this.fullWidth ?? false,\n loading: this.loading ?? false\n })\n const content = html`${\n this.projection.has('icon')\n ? html`<span class=\"${getExternalAuthButtonIconClasses()}\"\n >${this.projection.nodes('icon')}</span\n >`\n : nothing\n }${this.projection.nodes()}`\n\n if (this.href) {\n return html`<a\n aria-busy=\"${ifDefined(this.loading ? 'true' : undefined)}\"\n aria-disabled=\"${ifDefined(this.isDisabled ? 'true' : undefined)}\"\n aria-label=\"${ifDefined(this.forwardedAriaLabel)}\"\n class=\"${classes}\"\n data-sp-external-auth-button-native\n href=\"${ifDefined(this.isDisabled ? undefined : this.href)}\"\n id=\"${ifDefined(this.id || undefined)}\"\n title=\"${ifDefined(this.title || undefined)}\"\n >${content}</a\n >`\n }\n\n return html`<button\n aria-busy=\"${ifDefined(this.loading ? 'true' : undefined)}\"\n aria-label=\"${ifDefined(this.forwardedAriaLabel)}\"\n class=\"${classes}\"\n data-sp-external-auth-button-native\n ?disabled=\"${this.isDisabled}\"\n id=\"${ifDefined(this.id || undefined)}\"\n title=\"${ifDefined(this.title || undefined)}\"\n type=\"${this.type ?? 'button'}\"\n >\n ${content}\n </button>`\n }\n}\n\nexport function defineSpectreExternalAuthButton(\n tagName = 'sp-external-auth-button'\n): typeof SpectreExternalAuthButtonElement {\n const existingElement = customElements.get(tagName)\n\n if (existingElement) {\n return existingElement as unknown as typeof SpectreExternalAuthButtonElement\n }\n\n customElements.define(tagName, SpectreExternalAuthButtonElement)\n return SpectreExternalAuthButtonElement\n}\n","import { html } from 'lit'\nimport { ifDefined } from 'lit/directives/if-defined.js'\nimport { live } from 'lit/directives/live.js'\n\nimport { SpectreBaseElement } from '../../utils/base'\nimport { isSpectreKind, spectreKindKey } from '../../utils/dom'\nimport { ProjectionController } from '../../utils/projection'\nimport {\n hoverFocusStateProperties,\n hoverFocusStates,\n type SpectreHoverFocusStateProps\n} from '../../utils/states'\n\nimport { getChoiceCardClasses } from '@phcdevworks/spectre-ui'\n\nexport interface SpectreChoiceCardProps extends SpectreHoverFocusStateProps {\n ariaDescribedBy?: string | null\n checked?: boolean | undefined\n disabled?: boolean | undefined\n form?: string | undefined\n id?: string | null | undefined\n name?: string | undefined\n required?: boolean | undefined\n title?: string | null | undefined\n type?: 'radio' | 'checkbox' | undefined\n value?: string | undefined\n}\n\nfunction owningCard(input: Element): SpectreChoiceCardElement | null {\n let node: Element | null = input.parentElement\n while (\n node &&\n !isSpectreKind<SpectreChoiceCardElement>(node, 'choice-card')\n ) {\n node = node.parentElement\n }\n return node\n}\n\n// A whole-card hit target: a `<label>` wrapping a native radio or checkbox,\n// so selection, focus, and form submission stay native.\nexport class SpectreChoiceCardElement\n extends SpectreBaseElement\n implements SpectreChoiceCardProps\n{\n static properties = {\n ...hoverFocusStateProperties,\n checked: { type: Boolean, reflect: true },\n disabled: { type: Boolean, reflect: true },\n form: { type: String },\n name: { type: String, reflect: true },\n required: { type: Boolean, reflect: true },\n type: { type: String, reflect: true },\n value: { type: String }\n }\n\n readonly [spectreKindKey] = 'choice-card'\n\n focused: boolean | undefined = false\n hovered: boolean | undefined = false\n\n checked: boolean | undefined = false\n disabled: boolean | undefined = false\n form: string | undefined = undefined\n name: string | undefined = undefined\n required: boolean | undefined = false\n type: 'radio' | 'checkbox' | undefined = 'radio'\n value: string | undefined = undefined\n\n private readonly projection = new ProjectionController(this, [\n 'data-sp-choice-card-native'\n ])\n\n override get id(): string {\n return super.id\n }\n\n override set id(value: string | null | undefined) {\n super.id = value\n }\n\n override get title(): string {\n return super.title\n }\n\n override set title(value: string | null | undefined) {\n super.title = value\n }\n\n override connectedCallback(): void {\n super.connectedCallback()\n this.style.display ||= 'block'\n }\n\n protected override willUpdate(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n if (changedProperties.has('checked') && this.checked == null) {\n this.checked = false\n }\n if (changedProperties.has('disabled') && this.disabled == null) {\n this.disabled = false\n }\n if (\n changedProperties.has('type') &&\n this.type !== 'radio' &&\n this.type !== 'checkbox'\n ) {\n this.type = 'radio'\n }\n }\n\n private get nativeInput(): HTMLInputElement | null {\n return this.querySelector('[data-sp-choice-card-input]')\n }\n\n override focus(options?: FocusOptions): void {\n this.nativeInput?.focus(options)\n }\n\n override blur(): void {\n this.nativeInput?.blur()\n }\n\n // Checking a radio unchecks its group natively; mirror that onto the other\n // cards' `checked` properties.\n private handleChange(event: Event): void {\n const input = event.currentTarget as HTMLInputElement\n this.checked = input.checked\n if (this.type !== 'radio' || !this.name) {\n return\n }\n const root = this.getRootNode() as Document | ShadowRoot\n root\n .querySelectorAll<HTMLInputElement>('input[data-sp-choice-card-input]')\n .forEach((other) => {\n if (other === input || other.name !== this.name) {\n return\n }\n const card = owningCard(other)\n if (card) {\n card.checked = other.checked\n }\n })\n }\n\n override render() {\n return html`<label\n class=\"${getChoiceCardClasses({\n ...hoverFocusStates(this),\n disabled: this.disabled ?? false\n })}\"\n data-sp-choice-card-native\n title=\"${ifDefined(this.title || undefined)}\"\n >\n <input\n aria-describedby=\"${ifDefined(this.forwardedAriaDescribedBy)}\"\n .checked=\"${live(this.checked ?? false)}\"\n data-sp-choice-card-input\n ?disabled=\"${this.disabled ?? false}\"\n form=\"${ifDefined(this.form || undefined)}\"\n id=\"${ifDefined(this.id || undefined)}\"\n name=\"${ifDefined(this.name || undefined)}\"\n ?required=\"${this.required ?? false}\"\n type=\"${this.type ?? 'radio'}\"\n value=\"${ifDefined(this.value)}\"\n @change=\"${this.handleChange}\"\n />\n <span data-sp-choice-card-content>${this.projection.nodes()}</span>\n </label>`\n }\n}\n\nexport function defineSpectreChoiceCard(\n tagName = 'sp-choice-card'\n): typeof SpectreChoiceCardElement {\n const existingElement = customElements.get(tagName)\n\n if (existingElement) {\n return existingElement as unknown as typeof SpectreChoiceCardElement\n }\n\n customElements.define(tagName, SpectreChoiceCardElement)\n return SpectreChoiceCardElement\n}\n","import { html } from 'lit'\nimport { ifDefined } from 'lit/directives/if-defined.js'\n\nimport { SpectreBaseElement } from '../../utils/base'\nimport { applyPartClasses } from '../../utils/parts'\nimport { ProjectionController } from '../../utils/projection'\n\nimport {\n getButtonClasses,\n getFileInputClasses,\n getInputClasses,\n getInputGroupAddonClasses,\n getInputGroupClasses,\n getSelectClasses\n} from '@phcdevworks/spectre-ui'\n\nexport interface SpectreInputGroupProps {\n ariaLabel?: string | null\n ariaLabelledBy?: string | null\n disabled?: boolean | undefined\n id?: string | null | undefined\n title?: string | null | undefined\n}\n\nfunction controlClasses(element: Element): string | undefined {\n if (element instanceof HTMLInputElement) {\n return element.type === 'file' ? getFileInputClasses() : getInputClasses()\n }\n if (element instanceof HTMLSelectElement) {\n return getSelectClasses()\n }\n if (element instanceof HTMLButtonElement) {\n return getButtonClasses({ variant: 'secondary' })\n }\n return undefined\n}\n\n// The recipe fuses its *direct* children (`> :first-child` radii, overlapping\n// borders), so it takes native controls rather than `sp-*` wrapper hosts.\nexport class SpectreInputGroupElement\n extends SpectreBaseElement\n implements SpectreInputGroupProps\n{\n static properties = {\n disabled: { type: Boolean, reflect: true }\n }\n\n disabled: boolean | undefined = false\n\n private readonly projection = new ProjectionController(this, [\n 'data-sp-input-group-native'\n ])\n\n override get id(): string {\n return super.id\n }\n\n override set id(value: string | null | undefined) {\n super.id = value\n }\n\n override get title(): string {\n return super.title\n }\n\n override set title(value: string | null | undefined) {\n super.title = value\n }\n\n override connectedCallback(): void {\n super.connectedCallback()\n this.style.display ||= 'block'\n }\n\n // Native controls without an author-chosen `sp-*` class get their recipe\n // class; `slot=\"addon\"` children become addons.\n protected override updated(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n super.updated(changedProperties)\n this.projection.elements().forEach((element) => {\n const styled = Array.from(element.classList).some((name) =>\n name.startsWith('sp-')\n )\n const classes = styled ? undefined : controlClasses(element)\n if (classes) {\n element.classList.add(...classes.split(/\\s+/).filter(Boolean))\n }\n })\n applyPartClasses(this.projection.elements('addon'), {\n addon: getInputGroupAddonClasses()\n })\n }\n\n override render() {\n return html`<div\n aria-disabled=\"${ifDefined(this.disabled ? 'true' : undefined)}\"\n aria-label=\"${ifDefined(this.forwardedAriaLabel)}\"\n aria-labelledby=\"${ifDefined(this.forwardedAriaLabelledBy)}\"\n class=\"${getInputGroupClasses({ disabled: this.disabled ?? false })}\"\n data-sp-input-group-native\n id=\"${ifDefined(this.id || undefined)}\"\n role=\"group\"\n title=\"${ifDefined(this.title || undefined)}\"\n >\n ${this.projection.all()}\n </div>`\n }\n}\n\nexport function defineSpectreInputGroup(\n tagName = 'sp-input-group'\n): typeof SpectreInputGroupElement {\n const existingElement = customElements.get(tagName)\n\n if (existingElement) {\n return existingElement as unknown as typeof SpectreInputGroupElement\n }\n\n customElements.define(tagName, SpectreInputGroupElement)\n return SpectreInputGroupElement\n}\n","import { html, nothing } from 'lit'\nimport { ifDefined } from 'lit/directives/if-defined.js'\n\nimport { SpectreBaseElement } from '../../utils/base'\nimport { createUniqueId } from '../../utils/dom'\nimport {\n isPopoverPlacement,\n type SpectrePopoverPlacement\n} from '../../utils/form'\nimport { ProjectionController } from '../../utils/projection'\n\nimport {\n getPopoverArrowClasses,\n getPopoverBodyClasses,\n getPopoverClasses,\n getPopoverHeaderClasses,\n type PopoverPlacement\n} from '@phcdevworks/spectre-ui'\n\nexport interface SpectrePopoverProps {\n ariaLabel?: string | null\n id?: string | null | undefined\n label?: string | undefined\n open?: boolean | undefined\n placement?: SpectrePopoverPlacement | undefined\n title?: string | null | undefined\n triggerLabel?: string | undefined\n}\n\n// A click-toggled, non-modal dialog anchored to its trigger. Unlike\n// `sp-tooltip` it stays open for interaction until dismissed.\nexport class SpectrePopoverElement\n extends SpectreBaseElement\n implements SpectrePopoverProps\n{\n static properties = {\n label: { type: String },\n open: { type: Boolean, reflect: true },\n placement: { type: String, reflect: true },\n triggerLabel: { attribute: 'trigger-label', type: String }\n }\n\n label: string | undefined = undefined\n open: boolean | undefined = false\n placement: SpectrePopoverPlacement | undefined = 'bottom'\n triggerLabel: string | undefined = 'Show details'\n\n private readonly baseId = createUniqueId('sp-popover')\n private readonly projection = new ProjectionController(this, [\n 'data-sp-popover-trigger',\n 'data-sp-popover-native'\n ])\n\n override get id(): string {\n return super.id\n }\n\n override set id(value: string | null | undefined) {\n super.id = value\n }\n\n override get title(): string {\n return super.title\n }\n\n override set title(value: string | null | undefined) {\n super.title = value\n }\n\n override connectedCallback(): void {\n super.connectedCallback()\n this.style.position ||= 'relative'\n this.style.display ||= 'inline-block'\n document.addEventListener('click', this.handleDocumentClick)\n document.addEventListener('keydown', this.handleDocumentKeydown)\n }\n\n override disconnectedCallback(): void {\n document.removeEventListener('click', this.handleDocumentClick)\n document.removeEventListener('keydown', this.handleDocumentKeydown)\n super.disconnectedCallback()\n }\n\n protected override willUpdate(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n if (changedProperties.has('open') && this.open == null) {\n this.open = false\n }\n if (\n changedProperties.has('placement') &&\n (this.placement == null || !isPopoverPlacement(this.placement))\n ) {\n this.placement = 'bottom'\n }\n if (changedProperties.has('triggerLabel') && !this.triggerLabel) {\n this.triggerLabel = 'Show details'\n }\n }\n\n private get triggerElement(): HTMLButtonElement | null {\n return this.querySelector('[data-sp-popover-trigger]')\n }\n\n private get panelId(): string {\n return this.id || `${this.baseId}-panel`\n }\n\n private get headerId(): string {\n return `${this.baseId}-header`\n }\n\n private get hasHeader(): boolean {\n return this.projection.has('header') || Boolean(this.label)\n }\n\n private handleDocumentClick = (event: MouseEvent): void => {\n if (this.open && !event.composedPath().includes(this)) {\n this.setOpen(false)\n }\n }\n\n private handleDocumentKeydown = (event: KeyboardEvent): void => {\n if (event.key === 'Escape' && this.open) {\n this.setOpen(false)\n this.triggerElement?.focus()\n }\n }\n\n private setOpen(open: boolean): void {\n if (this.open === open) {\n return\n }\n this.open = open\n this.dispatchEvent(\n new CustomEvent(open ? 'sp-open' : 'sp-close', { bubbles: true })\n )\n }\n\n private get dialogLabelledBy(): string | undefined {\n if (this.forwardedAriaLabel) {\n return undefined\n }\n return this.hasHeader ? this.headerId : `${this.baseId}-trigger`\n }\n\n override render() {\n const open = this.open ?? false\n\n return html`<button\n aria-controls=\"${this.panelId}\"\n aria-expanded=\"${open ? 'true' : 'false'}\"\n aria-haspopup=\"dialog\"\n data-sp-popover-trigger\n id=\"${this.baseId}-trigger\"\n type=\"button\"\n @click=\"${() => this.setOpen(!open)}\"\n >\n ${\n this.projection.has('trigger')\n ? this.projection.nodes('trigger')\n : this.triggerLabel\n }\n </button>\n <div\n aria-label=\"${ifDefined(this.forwardedAriaLabel)}\"\n aria-labelledby=\"${ifDefined(this.dialogLabelledBy)}\"\n class=\"${getPopoverClasses({\n open,\n placement: this.placement as PopoverPlacement\n })}\"\n data-sp-popover-native\n id=\"${this.panelId}\"\n role=\"dialog\"\n title=\"${ifDefined(this.title || undefined)}\"\n >\n <span aria-hidden=\"true\" class=\"${getPopoverArrowClasses()}\"></span>\n ${\n this.hasHeader\n ? html`<div\n class=\"${getPopoverHeaderClasses()}\"\n id=\"${this.headerId}\"\n >\n ${\n this.projection.has('header')\n ? this.projection.nodes('header')\n : this.label\n }\n </div>`\n : nothing\n }\n <div class=\"${getPopoverBodyClasses()}\">${this.projection.nodes()}</div>\n </div>`\n }\n}\n\nexport function defineSpectrePopover(\n tagName = 'sp-popover'\n): typeof SpectrePopoverElement {\n const existingElement = customElements.get(tagName)\n\n if (existingElement) {\n return existingElement as unknown as typeof SpectrePopoverElement\n }\n\n customElements.define(tagName, SpectrePopoverElement)\n return SpectrePopoverElement\n}\n","import { html, nothing } from 'lit'\nimport { ifDefined } from 'lit/directives/if-defined.js'\n\nimport { SpectreBaseElement } from '../../utils/base'\nimport { createUniqueId } from '../../utils/dom'\nimport { normalizeInt } from '../../utils/form'\nimport { renderIcon } from '../../utils/icons'\n\nimport {\n getButtonClasses,\n getDatepickerClasses,\n getDatepickerGridClasses,\n getDatepickerHeaderClasses,\n getDatepickerWeekdayClasses,\n getDayClasses\n} from '@phcdevworks/spectre-ui'\n\nexport interface SpectreDatepickerProps {\n ariaLabel?: string | null\n id?: string | null | undefined\n locale?: string | undefined\n max?: string | undefined\n min?: string | undefined\n name?: string | undefined\n nextLabel?: string | undefined\n previousLabel?: string | undefined\n title?: string | null | undefined\n value?: string | undefined\n weekStart?: number | undefined\n}\n\nconst ISO_DATE = /^(\\d{4})-(\\d{2})-(\\d{2})$/\n\nfunction pad(value: number): string {\n return String(value).padStart(2, '0')\n}\n\nfunction toIsoDate(date: Date): string {\n return `${date.getFullYear()}-${pad(date.getMonth() + 1)}-${pad(date.getDate())}`\n}\n\n// Local calendar dates only: `YYYY-MM-DD` with no time zone shift.\nfunction parseIsoDate(value: string | null | undefined): Date | undefined {\n const match = value ? ISO_DATE.exec(value) : null\n if (!match) {\n return undefined\n }\n const [year, month, day] = [\n Number(match[1]),\n Number(match[2]),\n Number(match[3])\n ]\n const date = new Date(year, month - 1, day)\n return date.getMonth() === month - 1 && date.getDate() === day\n ? date\n : undefined\n}\n\nfunction addDays(date: Date, days: number): Date {\n return new Date(date.getFullYear(), date.getMonth(), date.getDate() + days)\n}\n\n// Keeps the day of month where possible, clamping to the target month's end.\nfunction addMonths(date: Date, months: number): Date {\n const target = new Date(date.getFullYear(), date.getMonth() + months, 1)\n const lastDay = new Date(\n target.getFullYear(),\n target.getMonth() + 1,\n 0\n ).getDate()\n target.setDate(Math.min(date.getDate(), lastDay))\n return target\n}\n\nfunction today(): Date {\n const now = new Date()\n return new Date(now.getFullYear(), now.getMonth(), now.getDate())\n}\n\n// An inline calendar grid. Values are local ISO dates (`YYYY-MM-DD`).\nexport class SpectreDatepickerElement\n extends SpectreBaseElement\n implements SpectreDatepickerProps\n{\n static properties = {\n activeDate: { state: true },\n locale: { type: String },\n max: { type: String },\n min: { type: String },\n name: { type: String },\n nextLabel: { attribute: 'next-label', type: String },\n previousLabel: { attribute: 'previous-label', type: String },\n value: { type: String, reflect: true },\n weekStart: { attribute: 'week-start', type: Number }\n }\n\n locale: string | undefined = undefined\n max: string | undefined = undefined\n min: string | undefined = undefined\n name: string | undefined = undefined\n nextLabel: string | undefined = 'Next month'\n previousLabel: string | undefined = 'Previous month'\n value: string | undefined = undefined\n weekStart: number | undefined = 0\n\n // The roving-focus day; its month is the one on display.\n private activeDate: Date = today()\n private readonly titleId = `${createUniqueId('sp-datepicker')}-title`\n\n override get id(): string {\n return super.id\n }\n\n override set id(value: string | null | undefined) {\n super.id = value\n }\n\n override get title(): string {\n return super.title\n }\n\n override set title(value: string | null | undefined) {\n super.title = value\n }\n\n override connectedCallback(): void {\n super.connectedCallback()\n this.style.display ||= 'inline-block'\n }\n\n protected override willUpdate(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n if (changedProperties.has('value')) {\n const parsed = parseIsoDate(this.value)\n if (this.value && !parsed) {\n this.value = undefined\n } else if (parsed) {\n this.activeDate = parsed\n }\n }\n if (changedProperties.has('min') && !parseIsoDate(this.min)) {\n this.min = undefined\n }\n if (changedProperties.has('max') && !parseIsoDate(this.max)) {\n this.max = undefined\n }\n if (changedProperties.has('weekStart')) {\n const weekStart = normalizeInt(this.weekStart, 0) ?? 0\n this.weekStart = weekStart > 6 ? 0 : weekStart\n }\n if (changedProperties.has('nextLabel') && !this.nextLabel) {\n this.nextLabel = 'Next month'\n }\n if (changedProperties.has('previousLabel') && !this.previousLabel) {\n this.previousLabel = 'Previous month'\n }\n }\n\n private isOutOfRange(date: Date): boolean {\n const iso = toIsoDate(date)\n return (\n (this.min !== undefined && iso < this.min) ||\n (this.max !== undefined && iso > this.max)\n )\n }\n\n private get visibleDays(): Date[] {\n const first = new Date(\n this.activeDate.getFullYear(),\n this.activeDate.getMonth(),\n 1\n )\n const daysInMonth = new Date(\n first.getFullYear(),\n first.getMonth() + 1,\n 0\n ).getDate()\n const leading = (first.getDay() - (this.weekStart ?? 0) + 7) % 7\n const count = Math.ceil((leading + daysInMonth) / 7) * 7\n const start = addDays(first, -leading)\n return Array.from({ length: count }, (_, index) => addDays(start, index))\n }\n\n private select(date: Date): void {\n if (this.isOutOfRange(date)) {\n return\n }\n this.activeDate = date\n const value = toIsoDate(date)\n if (value === this.value) {\n return\n }\n this.value = value\n this.dispatchEvent(\n new CustomEvent('sp-change', { bubbles: true, detail: { value } })\n )\n }\n\n private showMonth(offset: number): void {\n this.activeDate = addMonths(this.activeDate, offset)\n }\n\n private handleKeydown = async (event: KeyboardEvent): Promise<void> => {\n const active = this.activeDate\n const weekday = (active.getDay() - (this.weekStart ?? 0) + 7) % 7\n const moves: Record<string, () => Date> = {\n ArrowLeft: () => addDays(active, -1),\n ArrowRight: () => addDays(active, 1),\n ArrowUp: () => addDays(active, -7),\n ArrowDown: () => addDays(active, 7),\n Home: () => addDays(active, -weekday),\n End: () => addDays(active, 6 - weekday),\n PageUp: () => addMonths(active, event.shiftKey ? -12 : -1),\n PageDown: () => addMonths(active, event.shiftKey ? 12 : 1)\n }\n const move = moves[event.key]\n if (!move) {\n return\n }\n event.preventDefault()\n this.activeDate = move()\n await this.updateComplete\n this.querySelector<HTMLButtonElement>(\n `[data-sp-day=\"${toIsoDate(this.activeDate)}\"]`\n )?.focus()\n }\n\n private renderDay(date: Date) {\n const iso = toIsoDate(date)\n const selected = iso === this.value\n const isToday = iso === toIsoDate(today())\n const disabled = this.isOutOfRange(date)\n const label = new Intl.DateTimeFormat(this.locale, {\n dateStyle: 'full'\n }).format(date)\n\n return html`<button\n aria-current=\"${ifDefined(isToday ? 'date' : undefined)}\"\n aria-label=\"${label}\"\n aria-pressed=\"${selected ? 'true' : 'false'}\"\n class=\"${getDayClasses({\n disabled,\n outsideMonth: date.getMonth() !== this.activeDate.getMonth(),\n selected,\n today: isToday\n })}\"\n data-sp-day=\"${iso}\"\n ?disabled=\"${disabled}\"\n tabindex=\"${iso === toIsoDate(this.activeDate) ? '0' : '-1'}\"\n type=\"button\"\n @click=\"${() => this.select(date)}\"\n >\n ${date.getDate()}\n </button>`\n }\n\n override render() {\n const days = this.visibleDays\n const weekdayFormat = new Intl.DateTimeFormat(this.locale, {\n weekday: 'short'\n })\n const navClasses = getButtonClasses({\n iconOnly: true,\n size: 'sm',\n variant: 'ghost'\n })\n\n return html`<div\n aria-label=\"${ifDefined(this.forwardedAriaLabel)}\"\n aria-labelledby=\"${ifDefined(\n this.forwardedAriaLabel ? undefined : this.titleId\n )}\"\n class=\"${getDatepickerClasses()}\"\n data-sp-datepicker-native\n id=\"${ifDefined(this.id || undefined)}\"\n role=\"group\"\n title=\"${ifDefined(this.title || undefined)}\"\n >\n <div class=\"${getDatepickerHeaderClasses()}\">\n <button\n aria-label=\"${this.previousLabel ?? 'Previous month'}\"\n class=\"${navClasses}\"\n data-sp-datepicker-prev\n type=\"button\"\n @click=\"${() => this.showMonth(-1)}\"\n >\n ${renderIcon('chevronLeft')}\n </button>\n <span aria-live=\"polite\" id=\"${this.titleId}\"\n >${new Intl.DateTimeFormat(this.locale, {\n month: 'long',\n year: 'numeric'\n }).format(this.activeDate)}</span\n >\n <button\n aria-label=\"${this.nextLabel ?? 'Next month'}\"\n class=\"${navClasses}\"\n data-sp-datepicker-next\n type=\"button\"\n @click=\"${() => this.showMonth(1)}\"\n >\n ${renderIcon('chevronRight')}\n </button>\n </div>\n <div\n class=\"${getDatepickerGridClasses()}\"\n data-sp-datepicker-grid\n @keydown=\"${this.handleKeydown}\"\n >\n ${days\n .slice(0, 7)\n .map(\n (date) =>\n html`<span\n aria-hidden=\"true\"\n class=\"${getDatepickerWeekdayClasses()}\"\n >${weekdayFormat.format(date)}</span\n >`\n )}\n ${days.map((date) => this.renderDay(date))}\n </div>\n ${\n this.name\n ? html`<input\n name=\"${this.name}\"\n type=\"hidden\"\n .value=\"${this.value ?? ''}\"\n />`\n : nothing\n }\n </div>`\n }\n}\n\nexport function defineSpectreDatepicker(\n tagName = 'sp-datepicker'\n): typeof SpectreDatepickerElement {\n const existingElement = customElements.get(tagName)\n\n if (existingElement) {\n return existingElement as unknown as typeof SpectreDatepickerElement\n }\n\n customElements.define(tagName, SpectreDatepickerElement)\n return SpectreDatepickerElement\n}\n","export * from './components'\n\nimport { defineSpectreButton } from './components/button'\nimport { defineSpectreInput } from './components/input'\nimport { defineSpectreTextarea } from './components/textarea'\nimport { defineSpectreSelect } from './components/select'\nimport { defineSpectreCheckbox } from './components/checkbox'\nimport { defineSpectreRadio } from './components/radio'\nimport { defineSpectreLabel } from './components/label'\nimport { defineSpectreFieldset } from './components/fieldset'\nimport { defineSpectreBadge } from './components/badge'\nimport { defineSpectreCard } from './components/card'\nimport { defineSpectreIconBox } from './components/icon-box'\nimport { defineSpectreRating } from './components/rating'\nimport { defineSpectreTestimonial } from './components/testimonial'\nimport { defineSpectreAlert } from './components/alert'\nimport { defineSpectreAvatar } from './components/avatar'\nimport { defineSpectreSpinner } from './components/spinner'\nimport { defineSpectreTag } from './components/tag'\nimport { defineSpectrePricingCard } from './components/pricing-card'\nimport { defineSpectreContainer } from './components/container'\nimport { defineSpectreGrid } from './components/grid'\nimport { defineSpectreSection } from './components/section'\nimport { defineSpectreStack } from './components/stack'\nimport { defineSpectreDropdown } from './components/dropdown'\nimport { defineSpectreFooter } from './components/footer'\nimport { defineSpectreFooterChip } from './components/footer-chip'\nimport { defineSpectreFooterLink } from './components/footer-link'\nimport { defineSpectreModal } from './components/modal'\nimport { defineSpectreNav } from './components/nav'\nimport { defineSpectreNavItem } from './components/nav-item'\nimport { defineSpectreSidebar } from './components/sidebar'\nimport { defineSpectreSidebarLink } from './components/sidebar-link'\nimport { defineSpectreSidebarToggle } from './components/sidebar-toggle'\nimport { defineSpectreToast } from './components/toast'\nimport { defineSpectreTooltip } from './components/tooltip'\nimport { defineSpectreText } from './components/text'\nimport { defineSpectreTabs } from './components/tabs'\nimport { defineSpectreTabPanel } from './components/tab-panel'\nimport { defineSpectreAccordion } from './components/accordion'\nimport { defineSpectreAccordionItem } from './components/accordion-item'\nimport { defineSpectreBreadcrumb } from './components/breadcrumb'\nimport { defineSpectreListGroup } from './components/list-group'\nimport { defineSpectreListGroupItem } from './components/list-group-item'\nimport { defineSpectreOffcanvas } from './components/offcanvas'\nimport { defineSpectreCarousel } from './components/carousel'\nimport { defineSpectreTable } from './components/table'\nimport { defineSpectrePagination } from './components/pagination'\nimport { defineSpectreStepper } from './components/stepper'\nimport { defineSpectreCardBleed } from './components/card-bleed'\nimport { defineSpectreProse } from './components/prose'\nimport { defineSpectreProgress } from './components/progress'\nimport { defineSpectreSwitch } from './components/switch'\nimport { defineSpectreRange } from './components/range'\nimport { defineSpectreFileInput } from './components/file-input'\nimport { defineSpectreExternalAuthButton } from './components/external-auth-button'\nimport { defineSpectreChoiceCard } from './components/choice-card'\nimport { defineSpectreInputGroup } from './components/input-group'\nimport { defineSpectrePopover } from './components/popover'\nimport { defineSpectreDatepicker } from './components/datepicker'\n\nexport function defineSpectreComponents(): void {\n defineSpectreButton()\n defineSpectreInput()\n defineSpectreTextarea()\n defineSpectreSelect()\n defineSpectreCheckbox()\n defineSpectreRadio()\n defineSpectreLabel()\n defineSpectreFieldset()\n defineSpectreBadge()\n defineSpectreCard()\n defineSpectreIconBox()\n defineSpectreRating()\n defineSpectreTestimonial()\n defineSpectreAlert()\n defineSpectreAvatar()\n defineSpectreSpinner()\n defineSpectreTag()\n defineSpectrePricingCard()\n defineSpectreContainer()\n defineSpectreGrid()\n defineSpectreSection()\n defineSpectreStack()\n defineSpectreDropdown()\n defineSpectreFooter()\n defineSpectreFooterChip()\n defineSpectreFooterLink()\n defineSpectreModal()\n defineSpectreNav()\n defineSpectreNavItem()\n defineSpectreSidebar()\n defineSpectreSidebarLink()\n defineSpectreSidebarToggle()\n defineSpectreToast()\n defineSpectreTooltip()\n defineSpectreText()\n defineSpectreTabs()\n defineSpectreTabPanel()\n defineSpectreAccordion()\n defineSpectreAccordionItem()\n defineSpectreBreadcrumb()\n defineSpectreListGroup()\n defineSpectreListGroupItem()\n defineSpectreOffcanvas()\n defineSpectreCarousel()\n defineSpectreTable()\n defineSpectrePagination()\n defineSpectreStepper()\n defineSpectreCardBleed()\n defineSpectreProse()\n defineSpectreProgress()\n defineSpectreSwitch()\n defineSpectreRange()\n defineSpectreFileInput()\n defineSpectreExternalAuthButton()\n defineSpectreChoiceCard()\n defineSpectreInputGroup()\n defineSpectrePopover()\n defineSpectreDatepicker()\n}\n"]}
|