@arvea/components 0.0.2 → 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/arvea-sidebar-DWEHmLOH.d.cts +2956 -0
- package/dist/arvea-sidebar-DWEHmLOH.d.ts +2956 -0
- package/dist/chunk-4XSNFOEW.cjs +21 -0
- package/dist/chunk-4XSNFOEW.cjs.map +1 -0
- package/dist/chunk-7AZWKBZW.js +18 -0
- package/dist/chunk-7AZWKBZW.js.map +1 -0
- package/dist/chunk-PRGVQSDD.cjs +17173 -0
- package/dist/chunk-PRGVQSDD.cjs.map +1 -0
- package/dist/chunk-ZFNUBDJZ.js +17034 -0
- package/dist/chunk-ZFNUBDJZ.js.map +1 -0
- package/dist/index.cjs +773 -17249
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +24 -2972
- package/dist/index.d.ts +24 -2972
- package/dist/index.js +3 -17113
- package/dist/index.js.map +1 -1
- package/dist/react/index.cjs +730 -0
- package/dist/react/index.cjs.map +1 -0
- package/dist/react/index.d.cts +175 -0
- package/dist/react/index.d.ts +175 -0
- package/dist/react/index.js +435 -0
- package/dist/react/index.js.map +1 -0
- package/dist/tokens/tailwind-preset.cjs +2 -0
- package/dist/tokens/tailwind-preset.cjs.map +1 -1
- package/dist/tokens/tailwind-preset.js +2 -0
- package/dist/tokens/tailwind-preset.js.map +1 -1
- package/package.json +35 -19
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/icons/svg/layout-bottom.ts","../src/icons/svg/wifi-02.ts","../src/icons/svg/user.ts","../src/icons/svg/setting-02.ts","../src/icons/svg/lock.ts","../src/icons/svg/globe.ts","../src/icons/svg/chevron-down.ts","../src/icons/svg/fingerprint.ts","../src/icons/svg/flag.ts","../src/icons/svg/map-pin.ts","../src/icons/svg/mail.ts","../src/icons/svg/id-card.ts","../src/icons/svg/check.ts","../src/icons/svg/eye.ts","../src/icons/svg/eye-slash.ts","../src/icons/svg/plus.ts","../src/icons/svg/shopping-bag.ts","../src/icons/svg/gift.ts","../src/icons/svg/ticket.ts","../src/icons/svg/shopping-cart.ts","../src/icons/svg/map.ts","../src/icons/svg/file-text.ts","../src/icons/svg/truck.ts","../src/icons/svg/refresh-cw.ts","../src/icons/svg/archive.ts","../src/icons/svg/tag.ts","../src/icons/svg/package.ts","../src/icons/svg/layers.ts","../src/icons/svg/grid.ts","../src/icons/svg/zap.ts","../src/icons/svg/file.ts","../src/icons/svg/shield.ts","../src/icons/svg/chevron-right.ts","../src/icons/svg/bell.ts","../src/icons/svg/settings.ts","../src/icons/svg/arrow-right.ts","../src/icons/svg/google.ts","../src/icons/svg/log-out.ts","../src/icons/svg/search.ts","../src/icons/svg/home.ts","../src/icons/svg/clipboard.ts","../src/icons/index.ts","../src/components/arvea-icon/arvea-icon.styles.ts","../src/icons/icon.types.ts","../src/components/arvea-icon/arvea-icon.ts","../src/tokens/tokens.styles.ts","../src/components/arvea-button/arvea-button.styles.ts","../src/components/arvea-button/arvea-button.ts","../src/components/arvea-badge/arvea-badge.styles.ts","../src/components/arvea-badge/arvea-badge.ts","../src/components/arvea-toggle/arvea-toggle.styles.ts","../src/components/arvea-toggle/arvea-toggle.ts","../src/components/arvea-checkbox/arvea-checkbox.styles.ts","../src/components/arvea-checkbox/arvea-checkbox.ts","../src/components/arvea-radio/arvea-radio.styles.ts","../src/components/arvea-radio/arvea-radio.ts","../src/components/arvea-slider/arvea-slider.styles.ts","../src/components/arvea-slider/arvea-slider.ts","../src/components/arvea-input/arvea-input.styles.ts","../src/components/arvea-input/arvea-input.ts","../src/components/arvea-phone-number/arvea-phone-number.styles.ts","../src/components/arvea-phone-number/countries.ts","../src/components/arvea-phone-number/arvea-phone-number.ts","../src/components/arvea-textarea/arvea-textarea.styles.ts","../src/components/arvea-textarea/arvea-textarea.ts","../src/components/arvea-select/arvea-select.styles.ts","../src/components/arvea-select/arvea-select.ts","../src/components/arvea-tag/arvea-tag.styles.ts","../src/components/arvea-tag/arvea-tag.ts","../src/components/arvea-spinner/arvea-spinner.styles.ts","../src/components/arvea-spinner/arvea-spinner.ts","../src/components/arvea-tooltip/arvea-tooltip.styles.ts","../src/components/arvea-tooltip/arvea-tooltip.ts","../src/components/arvea-card/arvea-card.styles.ts","../src/components/arvea-card/arvea-card.ts","../src/components/arvea-card/arvea-media-card.styles.ts","../src/components/arvea-card/arvea-media-card.ts","../src/components/arvea-product-card/arvea-product-card.styles.ts","../src/components/arvea-product-card/arvea-product-card.ts","../src/components/arvea-action-button/arvea-action-button.styles.ts","../src/components/arvea-action-button/arvea-action-button.ts","../src/components/arvea-avatar/arvea-avatar.styles.ts","../src/components/arvea-avatar/arvea-avatar.ts","../src/components/arvea-progress-bar/arvea-progress-bar.styles.ts","../src/components/arvea-progress-bar/arvea-progress-bar.ts","../src/components/arvea-skeleton/arvea-skeleton.styles.ts","../src/components/arvea-skeleton/arvea-skeleton.ts","../src/components/arvea-skeleton-card/arvea-skeleton-card.styles.ts","../src/components/arvea-skeleton-card/arvea-skeleton-card.ts","../src/components/arvea-carousel/arvea-carousel.styles.ts","../src/components/arvea-carousel/arvea-carousel.ts","../src/components/arvea-dialog/arvea-dialog.styles.ts","../src/components/arvea-dialog/arvea-dialog.ts","../src/components/arvea-toast/arvea-toast.styles.ts","../src/components/arvea-toast/arvea-toast.ts","../src/components/arvea-toast/arvea-toast-container.ts","../src/components/arvea-tabs/arvea-tabs.styles.ts","../src/components/arvea-tabs/arvea-tabs.ts","../src/components/arvea-accordion/arvea-accordion.styles.ts","../src/components/arvea-accordion/arvea-accordion-item.ts","../src/components/arvea-accordion/arvea-accordion.ts","../src/components/arvea-alert/arvea-alert.styles.ts","../src/components/arvea-alert/arvea-alert.ts","../src/components/arvea-divider/arvea-divider.styles.ts","../src/components/arvea-divider/arvea-divider.ts","../src/components/arvea-form-field/arvea-form-field.styles.ts","../src/components/arvea-form-field/arvea-form-field.ts","../src/components/arvea-breadcrumb/arvea-breadcrumb.styles.ts","../src/components/arvea-breadcrumb/arvea-breadcrumb.ts","../src/components/arvea-pagination/arvea-pagination.styles.ts","../src/components/arvea-pagination/arvea-pagination.ts","../src/components/arvea-dropdown-menu/arvea-dropdown-menu.styles.ts","../src/components/arvea-dropdown-menu/arvea-dropdown-menu.ts","../src/components/arvea-search-bar/arvea-search-bar.styles.ts","../src/components/arvea-search-bar/arvea-search-bar.ts","../src/components/arvea-rating/arvea-rating.styles.ts","../src/components/arvea-rating/arvea-rating.ts","../src/components/arvea-quantity-selector/arvea-quantity-selector.styles.ts","../src/components/arvea-quantity-selector/arvea-quantity-selector.ts","../src/components/arvea-stepper/arvea-stepper.styles.ts","../src/components/arvea-stepper/arvea-stepper.ts","../src/components/arvea-empty-state/arvea-empty-state.styles.ts","../src/components/arvea-empty-state/arvea-empty-state.ts","../src/components/arvea-data-table/arvea-data-table.styles.ts","../src/components/arvea-data-table/arvea-data-table.ts","../src/components/arvea-lightbox/arvea-lightbox.styles.ts","../src/components/arvea-lightbox/arvea-lightbox.ts","../src/components/arvea-table/arvea-table.styles.ts","../src/components/arvea-table/arvea-table.ts","../src/components/arvea-popover/arvea-popover.styles.ts","../src/components/arvea-popover/arvea-popover.ts","../src/components/arvea-popconfirm/arvea-popconfirm.styles.ts","../src/components/arvea-popconfirm/arvea-popconfirm.ts","../src/components/arvea-drawer/arvea-drawer.styles.ts","../src/components/arvea-drawer/arvea-drawer.ts","../src/components/arvea-segmented-control/arvea-segmented-control.styles.ts","../src/components/arvea-segmented-control/arvea-segmented-control.ts","../src/components/arvea-tags-input/arvea-tags-input.styles.ts","../src/components/arvea-tags-input/arvea-tags-input.ts","../src/components/arvea-otp-input/arvea-otp-input.styles.ts","../src/components/arvea-otp-input/arvea-otp-input.ts","../src/components/arvea-file-upload/arvea-file-upload.styles.ts","../src/components/arvea-file-upload/arvea-file-upload.ts","../src/components/arvea-image/arvea-image.styles.ts","../src/components/arvea-image/arvea-image.ts","../src/components/arvea-date-picker/arvea-date-picker.styles.ts","../src/components/arvea-date-picker/arvea-date-picker.ts","../src/components/arvea-time-select/arvea-time-select.styles.ts","../src/components/arvea-time-select/arvea-time-select.ts","../src/components/arvea-tree/arvea-tree.styles.ts","../src/components/arvea-tree/arvea-tree.ts","../src/components/arvea-sidebar/arvea-sidebar.styles.ts","../src/components/arvea-sidebar/arvea-sidebar.ts"],"names":["css","LitElement","html","property","customElement","styleMap","unsafeSVG","range","nothing","state","query","svg","_id","ICONS","v"],"mappings":"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A;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAAA;;;ACPpB,IAAM,iBAAA,GAAoB;AAAA,EAC7B,WAAA;AAAA,EACAA,GAAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA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BN,IAAM,gBAAA,GAAmB;AAAA,EAC9B,WAAA;AAAA,EACAJ,GAAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAA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A;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;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","file":"chunk-ZFNUBDJZ.js","sourcesContent":["/**\n * @icon layout-bottom\n * Auto-generated by scripts/generate-icon.mjs — do not edit manually.\n * To regenerate: npm run icon -- layout-bottom\n */\n\nexport const layoutBottomOutlineIcon = `\n <path d=\"M20.1088 3.89124C21.5 5.28249 21.5 7.52166 21.5 12C21.5 16.4783 21.5 18.7175 20.1088 20.1088C18.7175 21.5 16.4783 21.5 12 21.5C7.52166 21.5 5.28248 21.5 3.89124 20.1088C2.5 18.7175 2.5 16.4783 2.5 12C2.5 7.52166 2.5 5.28248 3.89124 3.89124C5.28249 2.5 7.52166 2.5 12 2.5C16.4783 2.5 18.7175 2.5 20.1088 3.89124Z\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n<path d=\"M21.5 15L2.5 15\" stroke=\"currentColor\" stroke-width=\"1.5\"/>\n`;\n\nexport const layoutBottomFilledIcon = `\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M1.5 11.9257V12.0746C1.5 12.3958 1.49999 12.7074 1.50058 13.0096C1.50148 13.4751 1.50193 13.7079 1.64832 13.854C1.79471 14.0001 2.02855 14.0001 2.49623 14.0001L21.5038 14.0001C21.9715 14.0001 22.2053 14.0001 22.3517 13.854C22.4981 13.7079 22.4985 13.4751 22.4994 13.0096C22.5 12.7074 22.5 12.3958 22.5 12.0745V11.9257C22.5 9.74969 22.5 8.01496 22.3172 6.65482C22.1284 5.25044 21.7283 4.09663 20.8159 3.18424C19.9035 2.27185 18.7497 1.87174 17.3453 1.68293C15.9851 1.50007 14.2504 1.50008 12.0744 1.50011L11.9256 1.50011C9.74959 1.50008 8.01485 1.50007 6.65471 1.68293C5.25033 1.87175 4.09653 2.27185 3.18414 3.18424C2.27175 4.09663 1.87164 5.25044 1.68282 6.65482C1.49996 8.01496 1.49998 9.74968 1.5 11.9257Z\" fill=\"currentColor\"/>\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M22.3532 17.0537C22.4069 16.5735 22.4337 16.3335 22.2847 16.1668C22.1356 16.0001 21.8842 16.0001 21.3813 16.0001L2.61895 16.0001C2.1161 16.0001 1.86468 16.0001 1.71561 16.1668C1.56653 16.3335 1.5934 16.5735 1.64712 17.0537C1.65821 17.1528 1.67014 17.25 1.68296 17.3454C1.87178 18.7498 2.27188 19.9036 3.18427 20.816C4.09666 21.7284 5.25047 22.1285 6.65485 22.3173C8.01499 22.5002 9.74971 22.5001 11.9257 22.5001H12.0746C14.2506 22.5001 15.9853 22.5002 17.3454 22.3173C18.7498 22.1285 19.9036 21.7284 20.816 20.816C21.7284 19.9036 22.1285 18.7498 22.3173 17.3454C22.3301 17.25 22.3421 17.1528 22.3532 17.0537Z\" fill=\"currentColor\"/>\n`;\n","/**\n * @icon wifi-02\n * Auto-generated by scripts/generate-icon.mjs — do not edit manually.\n * To regenerate: npm run icon -- wifi-02\n */\n\nexport const wifi02OutlineIcon = `\n <path d=\"M12 18.5H12.0118\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n<path d=\"M8.25 15.5C10.25 13.5 13.75 13.5 15.75 15.5\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n<path d=\"M18.5 12.5C14.7324 9.16667 9.5 9.16667 5.5 12.5\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n<path d=\"M2 9.5C8.31579 4.16669 15.6842 4.16668 22 9.49989\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n`;\n\nexport const wifi02FilledIcon = `\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M10.5 18.5C10.5 17.6716 11.1716 17 12 17H12.0118C12.8402 17 13.5118 17.6716 13.5118 18.5C13.5118 19.3284 12.8402 20 12.0118 20H12C11.1716 20 10.5 19.3284 10.5 18.5Z\" fill=\"currentColor\"/>\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M7.54289 14.7929C9.93342 12.4024 14.0666 12.4024 16.4571 14.7929C16.8476 15.1834 16.8476 15.8166 16.4571 16.2071C16.0666 16.5976 15.4334 16.5976 15.0429 16.2071C13.4334 14.5976 10.5666 14.5976 8.95711 16.2071C8.56658 16.5976 7.93342 16.5976 7.54289 16.2071C7.15237 15.8166 7.15237 15.1834 7.54289 14.7929Z\" fill=\"currentColor\"/>\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M4.85984 11.7318C9.21914 8.09903 15.0058 8.07336 19.1626 11.751C19.5763 12.117 19.6149 12.749 19.249 13.1626C18.883 13.5763 18.251 13.6149 17.8374 13.249C14.459 10.26 9.78091 10.2343 6.14021 13.2682C5.71593 13.6218 5.08537 13.5645 4.7318 13.1402C4.37824 12.7159 4.43556 12.0853 4.85984 11.7318Z\" fill=\"currentColor\"/>\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M12 4.5C15.695 4.49998 19.3379 5.94312 22.6452 8.73585C23.0672 9.09217 23.1204 9.72309 22.7641 10.1451C22.4077 10.567 21.7768 10.6202 21.3548 10.2639C18.3463 7.72345 15.1472 6.49999 12 6.5C8.85288 6.50001 5.65374 7.7235 2.6452 10.264C2.22324 10.6204 1.59231 10.5671 1.23599 10.1452C0.879668 9.72322 0.93288 9.09229 1.35484 8.73597C4.6621 5.94319 8.30506 4.50002 12 4.5Z\" fill=\"currentColor\"/>\n`;\n","/**\n * @icon user\n * Auto-generated by scripts/generate-icon.mjs — do not edit manually.\n * To regenerate: npm run icon -- user\n */\n\nexport const userOutlineIcon = `\n <path d=\"M6.57757 15.4816C5.1628 16.324 1.45336 18.0441 3.71266 20.1966C4.81631 21.248 6.04549 22 7.59087 22H16.4091C17.9545 22 19.1837 21.248 20.2873 20.1966C22.5466 18.0441 18.8372 16.324 17.4224 15.4816C14.1048 13.5061 9.89519 13.5061 6.57757 15.4816Z\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n<path d=\"M16.5 6.5C16.5 8.98528 14.4853 11 12 11C9.51472 11 7.5 8.98528 7.5 6.5C7.5 4.01472 9.51472 2 12 2C14.4853 2 16.5 4.01472 16.5 6.5Z\" stroke=\"currentColor\" stroke-width=\"1.5\"/>\n`;\n\nexport const userFilledIcon = `\n <path d=\"M17.8063 14.8372C17.9226 14.9064 18.0663 14.9875 18.229 15.0793C18.9418 15.4814 20.0193 16.0893 20.7575 16.8118C21.2191 17.2637 21.6578 17.8592 21.7375 18.5888C21.8223 19.3646 21.4839 20.0927 20.8048 20.7396C19.6334 21.8556 18.2276 22.75 16.4093 22.75H7.59104C5.77274 22.75 4.36695 21.8556 3.1955 20.7396C2.51649 20.0927 2.17802 19.3646 2.26283 18.5888C2.34257 17.8592 2.78123 17.2637 3.2429 16.8118C3.98106 16.0893 5.05857 15.4814 5.77139 15.0793C5.93404 14.9875 6.07773 14.9064 6.19404 14.8372C9.74809 12.7209 14.2523 12.7209 17.8063 14.8372Z\" fill=\"currentColor\"/>\n<path d=\"M6.75018 6.5C6.75018 3.6005 9.10068 1.25 12.0002 1.25C14.8997 1.25 17.2502 3.6005 17.2502 6.5C17.2502 9.39949 14.8997 11.75 12.0002 11.75C9.10068 11.75 6.75018 9.39949 6.75018 6.5Z\" fill=\"currentColor\"/>\n`;\n","/**\n * @icon setting-02\n * Auto-generated by scripts/generate-icon.mjs — do not edit manually.\n * To regenerate: npm run icon -- setting-02\n */\n\nexport const setting02OutlineIcon = `\n <path d=\"M15.5 12C15.5 13.933 13.933 15.5 12 15.5C10.067 15.5 8.5 13.933 8.5 12C8.5 10.067 10.067 8.5 12 8.5C13.933 8.5 15.5 10.067 15.5 12Z\" stroke=\"currentColor\" stroke-width=\"1.5\"/>\n<path d=\"M21.011 14.0965C21.5329 13.9558 21.7939 13.8854 21.8969 13.7508C22 13.6163 22 13.3998 22 12.9669V11.0332C22 10.6003 22 10.3838 21.8969 10.2493C21.7938 10.1147 21.5329 10.0443 21.011 9.90358C19.0606 9.37759 17.8399 7.33851 18.3433 5.40087C18.4817 4.86799 18.5509 4.60156 18.4848 4.44529C18.4187 4.28902 18.2291 4.18134 17.8497 3.96596L16.125 2.98673C15.7528 2.77539 15.5667 2.66972 15.3997 2.69222C15.2326 2.71472 15.0442 2.90273 14.6672 3.27873C13.208 4.73448 10.7936 4.73442 9.33434 3.27864C8.95743 2.90263 8.76898 2.71463 8.60193 2.69212C8.43489 2.66962 8.24877 2.77529 7.87653 2.98663L6.15184 3.96587C5.77253 4.18123 5.58287 4.28891 5.51678 4.44515C5.45068 4.6014 5.51987 4.86787 5.65825 5.4008C6.16137 7.3385 4.93972 9.37763 2.98902 9.9036C2.46712 10.0443 2.20617 10.1147 2.10308 10.2492C2 10.3838 2 10.6003 2 11.0332V12.9669C2 13.3998 2 13.6163 2.10308 13.7508C2.20615 13.8854 2.46711 13.9558 2.98902 14.0965C4.9394 14.6225 6.16008 16.6616 5.65672 18.5992C5.51829 19.1321 5.44907 19.3985 5.51516 19.5548C5.58126 19.7111 5.77092 19.8188 6.15025 20.0341L7.87495 21.0134C8.24721 21.2247 8.43334 21.3304 8.6004 21.3079C8.76746 21.2854 8.95588 21.0973 9.33271 20.7213C10.7927 19.2644 13.2088 19.2643 14.6689 20.7212C15.0457 21.0973 15.2341 21.2853 15.4012 21.3078C15.5682 21.3303 15.7544 21.2246 16.1266 21.0133L17.8513 20.034C18.2307 19.8187 18.4204 19.711 18.4864 19.5547C18.5525 19.3984 18.4833 19.132 18.3448 18.5991C17.8412 16.6616 19.0609 14.6226 21.011 14.0965Z\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"/>\n`;\n\nexport const setting02FilledIcon = `\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M15.2979 2.00965C15.5823 1.97157 15.8221 2.05366 15.9854 2.12489C16.1354 2.19036 16.3046 2.28608 16.4688 2.3788L18.7178 3.66688C18.8635 3.77 19.0607 3.93451 19.1738 4.20008C19.2973 4.49018 19.2579 4.78292 19.2285 4.95204C19.1968 5.13501 19.1304 5.38677 19.0674 5.62782C18.6712 7.14457 19.6393 8.77617 21.2061 9.19618L21.2334 9.20399C21.4705 9.2675 21.6935 9.3269 21.8672 9.38954C22.0298 9.44817 22.301 9.55841 22.4922 9.80653C22.6681 10.0347 22.7151 10.2848 22.7334 10.4618C22.7503 10.6251 22.75 10.8206 22.75 11.0106V12.9891C22.75 13.1791 22.7503 13.3747 22.7334 13.538C22.7151 13.715 22.668 13.9651 22.4922 14.1932C22.301 14.4414 22.0298 14.5516 21.8672 14.6102C21.6935 14.6729 21.2061 14.8036 21.2061 14.8036C19.6399 15.2236 18.6729 16.855 19.0693 18.372C19.0725 18.3842 19.1981 18.867 19.2295 19.0477C19.2588 19.2169 19.2992 19.5096 19.1758 19.7997C19.0627 20.0653 18.8655 20.2298 18.7197 20.3329L16.4707 21.621C16.3067 21.7136 16.1372 21.8094 15.9873 21.8749C15.8241 21.9461 15.5841 22.0281 15.2998 21.9901C14.9906 21.9487 14.7607 21.7722 14.6289 21.662C14.4903 21.546 14.1451 21.2035 14.1377 21.1962C13.5543 20.6175 12.7771 20.3282 12 20.328C11.2229 20.3282 10.4457 20.6175 9.86231 21.1962C9.85494 21.2035 9.50972 21.546 9.3711 21.662C9.23932 21.7722 9.00938 21.9487 8.7002 21.9901C8.41595 22.0281 8.17587 21.9461 8.0127 21.8749C7.86277 21.8094 7.69336 21.7136 7.5293 21.621L5.28028 20.3329C5.13449 20.2298 4.93732 20.0653 4.82423 19.7997C4.70078 19.5096 4.74117 19.2169 4.77051 19.0477C4.80189 18.867 4.92748 18.3842 4.93067 18.372C5.32714 16.855 4.36011 15.2236 2.79395 14.8036C2.79395 14.8036 2.30654 14.6729 2.13282 14.6102C1.97026 14.5516 1.69905 14.4414 1.50782 14.1932C1.33198 13.9651 1.28495 13.715 1.26661 13.538C1.2497 13.3747 1.24996 13.1791 1.25001 12.9891V11.0106C1.24996 10.8206 1.24969 10.6251 1.26661 10.4618C1.28496 10.2848 1.33195 10.0347 1.50782 9.80653C1.69905 9.55841 1.97025 9.44817 2.13282 9.38954C2.30654 9.3269 2.52955 9.2675 2.76661 9.20399L2.79395 9.19618C4.3607 8.77617 5.32885 7.14457 4.93262 5.62782C4.86963 5.38677 4.80323 5.13501 4.77149 4.95204C4.74216 4.78292 4.70272 4.49018 4.82618 4.20008C4.93928 3.93451 5.13647 3.77 5.28223 3.66688L7.53126 2.3788C7.69546 2.28608 7.86463 2.19036 8.01466 2.12489C8.17788 2.05366 8.41776 1.97157 8.70216 2.00965C9.01128 2.05107 9.24031 2.22762 9.37208 2.33778C9.51202 2.45478 9.86426 2.8036 9.86426 2.8036C10.4473 3.38166 11.2236 3.67057 12 3.67079C12.7764 3.67057 13.5527 3.38166 14.1357 2.8036C14.1357 2.8036 14.488 2.45478 14.6279 2.33778C14.7597 2.22762 14.9887 2.05107 15.2979 2.00965ZM12 8.49989C10.067 8.49989 8.50001 10.0669 8.50001 11.9999C8.50001 13.9329 10.067 15.4999 12 15.4999C13.933 15.4999 15.5 13.9329 15.5 11.9999C15.5 10.0669 13.933 8.49989 12 8.49989Z\" fill=\"currentColor\"/>\n`;\n","/**\n * @icon lock\n * Auto-generated by scripts/generate-icon.mjs — do not edit manually.\n * To regenerate: npm run icon -- lock\n */\n\nexport const lockOutlineIcon = `\n <path d=\"M12 16.5V14.5\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"/>\n<path d=\"M4.26781 18.8447C4.49269 20.515 5.87613 21.8235 7.55966 21.9009C8.97627 21.966 10.4153 22 12 22C13.5847 22 15.0237 21.966 16.4403 21.9009C18.1239 21.8235 19.5073 20.515 19.7322 18.8447C19.879 17.7547 20 16.6376 20 15.5C20 14.3624 19.879 13.2453 19.7322 12.1553C19.5073 10.485 18.1239 9.17649 16.4403 9.09909C15.0237 9.03397 13.5847 9 12 9C10.4153 9 8.97627 9.03397 7.55966 9.09909C5.87613 9.17649 4.49269 10.485 4.26781 12.1553C4.12104 13.2453 4 14.3624 4 15.5C4 16.6376 4.12104 17.7547 4.26781 18.8447Z\" stroke=\"currentColor\" stroke-width=\"1.5\"/>\n<path d=\"M7.5 9V6.5C7.5 4.01472 9.51472 2 12 2C14.4853 2 16.5 4.01472 16.5 6.5V9\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n`;\n\nexport const lockFilledIcon = `\n <path d=\"M12 1.25C15.0376 1.25 17.5 3.71243 17.5 6.75V8.52734C19.0676 9.0071 20.2509 10.3866 20.4756 12.0557C20.6237 13.1559 20.75 14.312 20.75 15.5C20.75 16.688 20.6237 17.8441 20.4756 18.9443C20.204 20.9613 18.5327 22.5558 16.4746 22.6504C15.0462 22.7161 13.5958 22.75 12 22.75C10.4042 22.75 8.95376 22.7161 7.52539 22.6504C5.46733 22.5558 3.79598 20.9613 3.52441 18.9443C3.37629 17.8441 3.25 16.688 3.25 15.5C3.25 14.312 3.37629 13.1559 3.52441 12.0557C3.74914 10.3866 4.93236 9.0071 6.5 8.52734V6.75C6.5 3.71243 8.96243 1.25 12 1.25ZM12 13.5C11.4477 13.5 11 13.9477 11 14.5V16.5C11 17.0523 11.4477 17.5 12 17.5C12.5523 17.5 13 17.0523 13 16.5V14.5C13 13.9477 12.5523 13.5 12 13.5ZM12 3.25C10.067 3.25 8.5 4.817 8.5 6.75V8.31055C9.61773 8.27087 10.7654 8.25 12 8.25C13.2346 8.25 14.3823 8.27087 15.5 8.31055V6.75C15.5 4.817 13.933 3.25 12 3.25Z\" fill=\"currentColor\"/>\n`;\n","/**\n * @icon globe\n * Auto-generated by scripts/generate-icon.mjs — do not edit manually.\n * To regenerate: npm run icon -- globe\n */\n\nexport const globeOutlineIcon = `\n <circle cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" stroke-width=\"1.5\"/>\n<path d=\"M2 12h20\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"/>\n<path d=\"M12 2C9.5 5.5 8 8.6 8 12s1.5 6.5 4 10c2.5-3.5 4-6.6 4-10s-1.5-6.5-4-10z\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n`;\n\nexport const globeFilledIcon = `\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M12 1.25C6.06294 1.25 1.25 6.06294 1.25 12C1.25 17.9371 6.06294 22.75 12 22.75C17.9371 22.75 22.75 17.9371 22.75 12C22.75 6.06294 17.9371 1.25 12 1.25ZM8.51755 3.42264C7.19343 5.11202 6.25 7.45226 6.25 10.25H2.81218C3.6932 7.08478 5.77534 4.43137 8.51755 3.42264ZM2.81218 13.75H6.25C6.25 16.5477 7.19343 18.888 8.51755 20.5774C5.77534 19.5686 3.6932 16.9152 2.81218 13.75ZM9.75 10.25C9.75 7.30776 10.7596 4.88205 12 3.59635C13.2404 4.88205 14.25 7.30776 14.25 10.25H9.75ZM14.25 13.75H9.75C9.75 16.6922 10.7596 19.1179 12 20.4036C13.2404 19.1179 14.25 16.6922 14.25 13.75ZM17.75 13.75C17.75 16.5477 16.8066 18.888 15.4824 20.5774C18.2247 19.5686 20.3068 16.9152 21.1878 13.75H17.75ZM21.1878 10.25H17.75C17.75 7.45226 16.8066 5.11202 15.4824 3.42264C18.2247 4.43137 20.3068 7.08478 21.1878 10.25Z\" fill=\"currentColor\"/>\n`;\n","/**\n * @icon chevron-down\n * Auto-generated by scripts/generate-icon.mjs — do not edit manually.\n * To regenerate: npm run icon -- chevron-down\n */\n\nexport const chevronDownOutlineIcon = `\n <path d=\"M6 9L12 15L18 9\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n`;\n\nexport const chevronDownFilledIcon = `\n <path d=\"M6 9L12 15L18 9\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n`;\n","/**\n * @icon fingerprint\n * Auto-generated by scripts/generate-icon.mjs — do not edit manually.\n * To regenerate: npm run icon -- fingerprint\n */\n\nexport const fingerprintOutlineIcon = `\n <path d=\"M17.5 5.5C16 4 14.1 3 12 3C7.58 3 4 6.58 4 11C4 13.2 4.78 15.22 6.08 16.8\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"/>\n<path d=\"M20.5 8.5C21.45 9.77 22 11.32 22 13C22 15.36 21 17.49 19.38 19\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"/>\n<path d=\"M7.5 9.5C8.15 8.03 9.96 7 12 7C14.76 7 17 9.24 17 12C17 14.26 15.6 16.5 14 18\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"/>\n<path d=\"M10.5 11.5C10.5 11.5 10.5 14.5 10.5 16.5C10.5 17.88 11.34 19 12.5 19\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"/>\n<path d=\"M13.5 13C13.5 12.17 12.83 11.5 12 11.5C11.17 11.5 10.5 12.17 10.5 13\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"/>\n`;\n\nexport const fingerprintFilledIcon = `\n <path d=\"M17.5 5.5C16 4 14.1 3 12 3C7.58 3 4 6.58 4 11C4 13.2 4.78 15.22 6.08 16.8\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"/>\n<path d=\"M20.5 8.5C21.45 9.77 22 11.32 22 13C22 15.36 21 17.49 19.38 19\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"/>\n<path d=\"M7.5 9.5C8.15 8.03 9.96 7 12 7C14.76 7 17 9.24 17 12C17 14.26 15.6 16.5 14 18\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"/>\n<path d=\"M10.5 11.5C10.5 11.5 10.5 14.5 10.5 16.5C10.5 17.88 11.34 19 12.5 19\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"/>\n<path d=\"M13.5 13C13.5 12.17 12.83 11.5 12 11.5C11.17 11.5 10.5 12.17 10.5 13\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"/>\n`;\n","/**\n * @icon flag\n * Auto-generated by scripts/generate-icon.mjs — do not edit manually.\n * To regenerate: npm run icon -- flag\n */\n\nexport const flagOutlineIcon = `\n <path d=\"M5 21V4\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"/>\n<path d=\"M5 4C7.5 3 9.5 3 12 4C14.5 5 16.5 5 19 4V13C16.5 14 14.5 14 12 13C9.5 12 7.5 12 5 13V4Z\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linejoin=\"round\"/>\n`;\n\nexport const flagFilledIcon = `\n <path d=\"M5 21V4\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"/>\n<path d=\"M5 4C7.5 3 9.5 3 12 4C14.5 5 16.5 5 19 4V13C16.5 14 14.5 14 12 13C9.5 12 7.5 12 5 13V4Z\" fill=\"currentColor\"/>\n`;\n","/**\n * @icon map-pin\n * Auto-generated by scripts/generate-icon.mjs — do not edit manually.\n * To regenerate: npm run icon -- map-pin\n */\n\nexport const mapPinOutlineIcon = `\n <path d=\"M12 21C12 21 5 14.5 5 9C5 5.686 8.134 3 12 3C15.866 3 19 5.686 19 9C19 14.5 12 21 12 21Z\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linejoin=\"round\"/>\n<circle cx=\"12\" cy=\"9\" r=\"2.5\" stroke=\"currentColor\" stroke-width=\"1.5\"/>\n`;\n\nexport const mapPinFilledIcon = `\n <path d=\"M12 21C12 21 5 14.5 5 9C5 5.686 8.134 3 12 3C15.866 3 19 5.686 19 9C19 14.5 12 21 12 21Z\" fill=\"currentColor\"/>\n<circle cx=\"12\" cy=\"9\" r=\"2.5\" fill=\"white\"/>\n`;\n","/**\n * @icon mail\n * Auto-generated by scripts/generate-icon.mjs — do not edit manually.\n * To regenerate: npm run icon -- mail\n */\n\nexport const mailOutlineIcon = `\n <rect x=\"2\" y=\"4\" width=\"20\" height=\"16\" rx=\"2\" stroke=\"currentColor\" stroke-width=\"1.5\"/>\n<path d=\"M2 8L10.16 13.12C11.26 13.82 12.74 13.82 13.84 13.12L22 8\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"/>\n`;\n\nexport const mailFilledIcon = `\n <rect x=\"2\" y=\"4\" width=\"20\" height=\"16\" rx=\"2\" fill=\"currentColor\"/>\n<path d=\"M2 8L10.16 13.12C11.26 13.82 12.74 13.82 13.84 13.12L22 8\" stroke=\"white\" stroke-width=\"1.5\" stroke-linecap=\"round\"/>\n`;\n","/**\n * @icon id-card\n * Auto-generated by scripts/generate-icon.mjs — do not edit manually.\n * To regenerate: npm run icon -- id-card\n */\n\nexport const idCardOutlineIcon = `\n <rect x=\"2\" y=\"5\" width=\"20\" height=\"14\" rx=\"2\" stroke=\"currentColor\" stroke-width=\"1.5\"/>\n<circle cx=\"8\" cy=\"12\" r=\"2.5\" stroke=\"currentColor\" stroke-width=\"1.5\"/>\n<path d=\"M13 10H19\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"/>\n<path d=\"M13 14H17\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"/>\n`;\n\nexport const idCardFilledIcon = `\n <rect x=\"2\" y=\"5\" width=\"20\" height=\"14\" rx=\"2\" fill=\"currentColor\"/>\n<circle cx=\"8\" cy=\"12\" r=\"2.5\" fill=\"white\"/>\n<path d=\"M13 10H19\" stroke=\"white\" stroke-width=\"1.5\" stroke-linecap=\"round\"/>\n<path d=\"M13 14H17\" stroke=\"white\" stroke-width=\"1.5\" stroke-linecap=\"round\"/>\n`;\n","/**\n * @icon check\n * Auto-generated by scripts/generate-icon.mjs — do not edit manually.\n * To regenerate: npm run icon -- check\n */\n\nexport const checkOutlineIcon = `\n <path d=\"M5 13L9 17L19 7\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n`;\n\nexport const checkFilledIcon = `\n <path d=\"M5 13L9 17L19 7\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n`;\n","/**\n * @icon eye\n * Auto-generated by scripts/generate-icon.mjs — do not edit manually.\n * To regenerate: npm run icon -- eye\n */\n\nexport const eyeOutlineIcon = `\n <path d=\"M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linejoin=\"round\"/>\n<circle cx=\"12\" cy=\"12\" r=\"3\" stroke=\"currentColor\" stroke-width=\"1.5\"/>\n`;\n\nexport const eyeFilledIcon = `\n <path d=\"M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z\" fill=\"currentColor\"/>\n<circle cx=\"12\" cy=\"12\" r=\"3\" fill=\"white\"/>\n`;\n","/**\n * @icon eye-slash\n * Auto-generated by scripts/generate-icon.mjs — do not edit manually.\n * To regenerate: npm run icon -- eye-slash\n */\n\nexport const eyeSlashOutlineIcon = `\n <path d=\"M17.94 17.94A10.07 10.07 0 0 1 12 20c-7 0-11-8-11-8a18.45 18.45 0 0 1 5.06-5.94M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 11 8 11 8a18.5 18.5 0 0 1-2.16 3.19m-6.72-1.07a3 3 0 1 1-4.24-4.24\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n<line x1=\"1\" y1=\"1\" x2=\"23\" y2=\"23\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"/>\n`;\n\nexport const eyeSlashFilledIcon = `\n <path d=\"M17.94 17.94A10.07 10.07 0 0 1 12 20c-7 0-11-8-11-8a18.45 18.45 0 0 1 5.06-5.94M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 11 8 11 8a18.5 18.5 0 0 1-2.16 3.19m-6.72-1.07a3 3 0 1 1-4.24-4.24\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n<line x1=\"1\" y1=\"1\" x2=\"23\" y2=\"23\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"/>\n`;\n","/**\n * @icon plus\n * Auto-generated by scripts/generate-icon.mjs — do not edit manually.\n * To regenerate: npm run icon -- plus\n */\n\nexport const plusOutlineIcon = `\n <path d=\"M10.75 6.75V14.75M14.75 10.75L6.75 10.75\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n<path d=\"M20.75 10.75C20.75 5.22715 16.2728 0.75 10.75 0.75C5.22715 0.75 0.75 5.22715 0.75 10.75C0.75 16.2728 5.22715 20.75 10.75 20.75C16.2728 20.75 20.75 16.2728 20.75 10.75Z\" stroke=\"currentColor\" stroke-width=\"1.5\"/>\n`;\n\nexport const plusFilledIcon = `\n <path d=\"M10.75 0C16.6871 0 21.5 4.81294 21.5 10.75C21.5 16.6871 16.6871 21.5 10.75 21.5C4.81294 21.5 0 16.6871 0 10.75C0 4.81294 4.81294 0 10.75 0ZM10.75 5.75C10.1977 5.75 9.75 6.19772 9.75 6.75V9.75H6.75C6.19772 9.75 5.75 10.1977 5.75 10.75C5.75 11.3023 6.19772 11.75 6.75 11.75H9.75V14.75C9.75 15.3023 10.1977 15.75 10.75 15.75C11.3023 15.75 11.75 15.3023 11.75 14.75V11.75H14.75C15.3023 11.75 15.75 11.3023 15.75 10.75C15.75 10.1977 15.3023 9.75 14.75 9.75H11.75V6.75C11.75 6.19772 11.3023 5.75 10.75 5.75Z\" fill=\"currentColor\"/>\n`;\n","/**\n * @icon shopping-bag\n * Auto-generated by scripts/generate-icon.mjs — do not edit manually.\n * To regenerate: npm run icon -- shopping-bag\n */\n\nexport const shoppingBagOutlineIcon = `\n <path d=\"M6 2 3 6v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V6l-3-4z\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n<line x1=\"3\" y1=\"6\" x2=\"21\" y2=\"6\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"/>\n<path d=\"M16 10a4 4 0 0 1-8 0\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n`;\n\nexport const shoppingBagFilledIcon = `\n <path d=\"M21.822 5.539 18.8 1.8A2 2 0 0 0 17.2 1H6.8a2 2 0 0 0-1.6.8L2.178 5.539A1 1 0 0 0 2 6.1V20a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V6.1a1 1 0 0 0-.178-.561zM16 11a4 4 0 0 1-8 0 1 1 0 1 1 2 0 2 2 0 0 0 4 0 1 1 0 1 1 2 0z\" fill=\"currentColor\"/>\n`;\n","/**\n * @icon gift\n * Auto-generated by scripts/generate-icon.mjs — do not edit manually.\n * To regenerate: npm run icon -- gift\n */\n\nexport const giftOutlineIcon = `\n <polyline points=\"20 12 20 22 4 22 4 12\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n<rect x=\"2\" y=\"7\" width=\"20\" height=\"5\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n<line x1=\"12\" y1=\"22\" x2=\"12\" y2=\"7\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"/>\n<path d=\"M12 7H7.5a2.5 2.5 0 0 1 0-5C11 2 12 7 12 7z\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n<path d=\"M12 7h4.5a2.5 2.5 0 0 0 0-5C13 2 12 7 12 7z\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n`;\n\nexport const giftFilledIcon = `\n <path d=\"M22 7h-3.382A3.5 3.5 0 0 0 12 4.354 3.5 3.5 0 0 0 5.382 7H2a1 1 0 0 0-1 1v4a1 1 0 0 0 1 1h1v8a1 1 0 0 0 1 1h16a1 1 0 0 0 1-1v-8h1a1 1 0 0 0 1-1V8a1 1 0 0 0-1-1zm-9.5-1a1.5 1.5 0 1 1 0 3 1.5 1.5 0 0 1 0-3zm-1 3h1v12h-1V9zm-3-3a1.5 1.5 0 1 1 3 0 1.5 1.5 0 0 1-3 0zM13 21V9h1v12h-1z\" fill=\"currentColor\"/>\n`;\n","/**\n * @icon ticket\n * Auto-generated by scripts/generate-icon.mjs — do not edit manually.\n * To regenerate: npm run icon -- ticket\n */\n\nexport const ticketOutlineIcon = `\n <path d=\"M2 9a3 3 0 1 1 0 6v2a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-2a3 3 0 1 1 0-6V7a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v2z\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n<line x1=\"13\" y1=\"5\" x2=\"13\" y2=\"19\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-dasharray=\"2 2\"/>\n`;\n\nexport const ticketFilledIcon = `\n <path d=\"M22 10.27V7a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v3.27a3 3 0 0 1 0 5.46V19a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-3.27a3 3 0 0 1 0-5.46zM14 18h-4v-2h4v2zm0-4h-4v-2h4v2zm0-4h-4V8h4v2z\" fill=\"currentColor\"/>\n`;\n","/**\n * @icon shopping-cart\n * Auto-generated by scripts/generate-icon.mjs — do not edit manually.\n * To regenerate: npm run icon -- shopping-cart\n */\n\nexport const shoppingCartOutlineIcon = `\n <circle cx=\"9\" cy=\"21\" r=\"1\" stroke=\"currentColor\" stroke-width=\"1.5\"/>\n<circle cx=\"20\" cy=\"21\" r=\"1\" stroke=\"currentColor\" stroke-width=\"1.5\"/>\n<path d=\"M1 1h4l2.68 13.39a2 2 0 0 0 2 1.61h9.72a2 2 0 0 0 2-1.61L23 6H6\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n`;\n\nexport const shoppingCartFilledIcon = `\n <path d=\"M22.713 4.077A1 1 0 0 0 22 4H6.333L5.18.805A1 1 0 0 0 4.217 0H1a1 1 0 0 0 0 2h2.531l4.715 13.384A3 3 0 1 0 12 17h5.027a3 3 0 1 0 2.706-1.697L8.237 6H22a1 1 0 0 0 .953-1.31l-.24-.613z\" fill=\"currentColor\"/>\n`;\n","/**\n * @icon map\n * Auto-generated by scripts/generate-icon.mjs — do not edit manually.\n * To regenerate: npm run icon -- map\n */\n\nexport const mapOutlineIcon = `\n <polygon points=\"1 6 1 22 8 18 16 22 23 18 23 2 16 6 8 2 1 6\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n<line x1=\"8\" y1=\"2\" x2=\"8\" y2=\"18\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"/>\n<line x1=\"16\" y1=\"6\" x2=\"16\" y2=\"22\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"/>\n`;\n\nexport const mapFilledIcon = `\n <path d=\"M.643 5.234A1 1 0 0 0 0 6.143v15.714A.143.143 0 0 0 .226 23l7.774-4 8 4 7.357-3.673A1 1 0 0 0 24 18.43V2.714A.143.143 0 0 0 23.774 2L16 6 8 2 .643 5.234zM9 4.236l6 3v12.528l-6-3V4.236z\" fill=\"currentColor\"/>\n`;\n","/**\n * @icon file-text\n * Auto-generated by scripts/generate-icon.mjs — do not edit manually.\n * To regenerate: npm run icon -- file-text\n */\n\nexport const fileTextOutlineIcon = `\n <path d=\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n<polyline points=\"14 2 14 8 20 8\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n<line x1=\"16\" y1=\"13\" x2=\"8\" y2=\"13\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"/>\n<line x1=\"16\" y1=\"17\" x2=\"8\" y2=\"17\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"/>\n<line x1=\"10\" y1=\"9\" x2=\"8\" y2=\"9\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"/>\n`;\n\nexport const fileTextFilledIcon = `\n <path d=\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8l-6-6zm-1 1.5L18.5 9H13V3.5zM8 13h8v1.5H8V13zm0 3.5h8V18H8v-1.5zm0-7h2v1.5H8V9.5z\" fill=\"currentColor\"/>\n`;\n","/**\n * @icon truck\n * Auto-generated by scripts/generate-icon.mjs — do not edit manually.\n * To regenerate: npm run icon -- truck\n */\n\nexport const truckOutlineIcon = `\n <rect x=\"1\" y=\"3\" width=\"15\" height=\"13\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n<polygon points=\"16 8 20 8 23 11 23 16 16 16 16 8\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n<circle cx=\"5.5\" cy=\"18.5\" r=\"2.5\" stroke=\"currentColor\" stroke-width=\"1.5\"/>\n<circle cx=\"18.5\" cy=\"18.5\" r=\"2.5\" stroke=\"currentColor\" stroke-width=\"1.5\"/>\n`;\n\nexport const truckFilledIcon = `\n <path d=\"M23.5 14.5l-3-4A1 1 0 0 0 19.75 10H17V7a1 1 0 0 0-1-1H1a1 1 0 0 0-1 1v11a1 1 0 0 0 1 1h1.341a3.5 3.5 0 0 0 6.318 0h5.682a3.5 3.5 0 0 0 6.318 0H22a1 1 0 0 0 1-1v-3a.997.997 0 0 0-.5-.5zM5.5 20.5a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3zm13 0a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3z\" fill=\"currentColor\"/>\n`;\n","/**\n * @icon refresh-cw\n * Auto-generated by scripts/generate-icon.mjs — do not edit manually.\n * To regenerate: npm run icon -- refresh-cw\n */\n\nexport const refreshCwOutlineIcon = `\n <polyline points=\"23 4 23 10 17 10\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n<polyline points=\"1 20 1 14 7 14\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n<path d=\"M3.51 9a9 9 0 0 1 14.85-3.36L23 10M1 14l4.64 4.36A9 9 0 0 0 20.49 15\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n`;\n\nexport const refreshCwFilledIcon = `\n <path d=\"M12 4a8 8 0 0 1 6.854 3.893l-1.76 1.055A6 6 0 1 0 18 12h-2l2.5-4 2.5 4h-2a8 8 0 1 1-7-12z\" fill=\"currentColor\"/>\n`;\n","/**\n * @icon archive\n * Auto-generated by scripts/generate-icon.mjs — do not edit manually.\n * To regenerate: npm run icon -- archive\n */\n\nexport const archiveOutlineIcon = `\n <polyline points=\"21 8 21 21 3 21 3 8\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n<rect x=\"1\" y=\"3\" width=\"22\" height=\"5\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n<line x1=\"10\" y1=\"12\" x2=\"14\" y2=\"12\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"/>\n`;\n\nexport const archiveFilledIcon = `\n <path d=\"M23 4a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v4a1 1 0 0 0 1 1h1v12a1 1 0 0 0 1 1h16a1 1 0 0 0 1-1V9h1a1 1 0 0 0 1-1V4zm-9 9h-4a1 1 0 0 1 0-2h4a1 1 0 0 1 0 2z\" fill=\"currentColor\"/>\n`;\n","/**\n * @icon tag\n * Auto-generated by scripts/generate-icon.mjs — do not edit manually.\n * To regenerate: npm run icon -- tag\n */\n\nexport const tagOutlineIcon = `\n <path d=\"M20.59 13.41l-7.17 7.17a2 2 0 0 1-2.83 0L2 12V2h10l8.59 8.59a2 2 0 0 1 0 2.82z\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n<line x1=\"7\" y1=\"7\" x2=\"7.01\" y2=\"7\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"/>\n`;\n\nexport const tagFilledIcon = `\n <path d=\"M21.41 11.58l-9-9A2 2 0 0 0 11 2H4a2 2 0 0 0-2 2v7a2 2 0 0 0 .59 1.42l9 9A2 2 0 0 0 13 22a2 2 0 0 0 1.41-.59l7-7A2 2 0 0 0 22 13a2 2 0 0 0-.59-1.42zM6.5 8a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3z\" fill=\"currentColor\"/>\n`;\n","/**\n * @icon package\n * Auto-generated by scripts/generate-icon.mjs — do not edit manually.\n * To regenerate: npm run icon -- package\n */\n\nexport const packageOutlineIcon = `\n <line x1=\"16.5\" y1=\"9.4\" x2=\"7.5\" y2=\"4.21\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"/>\n<path d=\"M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n<polyline points=\"3.27 6.96 12 12.01 20.73 6.96\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n<line x1=\"12\" y1=\"22.08\" x2=\"12\" y2=\"12\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"/>\n`;\n\nexport const packageFilledIcon = `\n <path d=\"M12.5 1.134a2 2 0 0 0-1 0L4.268 5.163 12 9.443l7.732-4.28L12.5 1.134zM21 7.308l-8 4.43V22.8l7.5-4.166A2 2 0 0 0 21 16.9V7.308zM11 21.8V11.738L3 7.308V16.9a2 2 0 0 0 1.5 1.734L11 21.8z\" fill=\"currentColor\"/>\n`;\n","/**\n * @icon layers\n * Auto-generated by scripts/generate-icon.mjs — do not edit manually.\n * To regenerate: npm run icon -- layers\n */\n\nexport const layersOutlineIcon = `\n <polygon points=\"12 2 2 7 12 12 22 7 12 2\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n<polyline points=\"2 17 12 22 22 17\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n<polyline points=\"2 12 12 17 22 12\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n`;\n\nexport const layersFilledIcon = `\n <path d=\"m12.89 1.45 8 4A2 2 0 0 1 22 7.24v9.53a2 2 0 0 1-1.11 1.79l-8 4a2 2 0 0 1-1.78 0l-8-4a2 2 0 0 1-1.11-1.8V7.24a2 2 0 0 1 1.11-1.79l8-4a2 2 0 0 1 1.78 0z\" fill=\"currentColor\"/>\n`;\n","/**\n * @icon grid\n * Auto-generated by scripts/generate-icon.mjs — do not edit manually.\n * To regenerate: npm run icon -- grid\n */\n\nexport const gridOutlineIcon = `\n <rect x=\"3\" y=\"3\" width=\"7\" height=\"7\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n<rect x=\"14\" y=\"3\" width=\"7\" height=\"7\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n<rect x=\"14\" y=\"14\" width=\"7\" height=\"7\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n<rect x=\"3\" y=\"14\" width=\"7\" height=\"7\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n`;\n\nexport const gridFilledIcon = `\n <path d=\"M10 2H3a1 1 0 0 0-1 1v7a1 1 0 0 0 1 1h7a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1zm0 11H3a1 1 0 0 0-1 1v7a1 1 0 0 0 1 1h7a1 1 0 0 0 1-1v-7a1 1 0 0 0-1-1zm11-11h-7a1 1 0 0 0-1 1v7a1 1 0 0 0 1 1h7a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1zm0 11h-7a1 1 0 0 0-1 1v7a1 1 0 0 0 1 1h7a1 1 0 0 0 1-1v-7a1 1 0 0 0-1-1z\" fill=\"currentColor\"/>\n`;\n","/**\n * @icon zap\n * Auto-generated by scripts/generate-icon.mjs — do not edit manually.\n * To regenerate: npm run icon -- zap\n */\n\nexport const zapOutlineIcon = `\n <polygon points=\"13 2 3 14 12 14 11 22 21 10 12 10 13 2\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n`;\n\nexport const zapFilledIcon = `\n <path d=\"M13 2 3 14h9l-1 8 10-12h-9l1-8z\" fill=\"currentColor\"/>\n`;\n","/**\n * @icon file\n * Auto-generated by scripts/generate-icon.mjs — do not edit manually.\n * To regenerate: npm run icon -- file\n */\n\nexport const fileOutlineIcon = `\n <path d=\"M13 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9z\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n<polyline points=\"13 2 13 9 20 9\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n`;\n\nexport const fileFilledIcon = `\n <path d=\"M13 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9l-7-7zm1 1.5L18.5 9H14V3.5z\" fill=\"currentColor\"/>\n`;\n","/**\n * @icon shield\n * Auto-generated by scripts/generate-icon.mjs — do not edit manually.\n * To regenerate: npm run icon -- shield\n */\n\nexport const shieldOutlineIcon = `\n <path d=\"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n`;\n\nexport const shieldFilledIcon = `\n <path d=\"M20 4.37 12.5 2l-7.5 2.37A1 1 0 0 0 4 5.32v6.42C4 17.56 12.5 22 12.5 22S21 17.56 21 11.74V5.32a1 1 0 0 0-.7-.95z\" fill=\"currentColor\"/>\n`;\n","/**\n * @icon chevron-right\n * Auto-generated by scripts/generate-icon.mjs — do not edit manually.\n * To regenerate: npm run icon -- chevron-right\n */\n\nexport const chevronRightOutlineIcon = `\n <polyline points=\"9 18 15 12 9 6\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n`;\n\nexport const chevronRightFilledIcon = `\n <path d=\"M9.293 18.707a1 1 0 0 1 0-1.414L14.586 12 9.293 6.707a1 1 0 0 1 1.414-1.414l6 6a1 1 0 0 1 0 1.414l-6 6a1 1 0 0 1-1.414 0z\" fill=\"currentColor\"/>\n`;\n","/**\n * @icon bell\n * Auto-generated by scripts/generate-icon.mjs — do not edit manually.\n * To regenerate: npm run icon -- bell\n */\n\nexport const bellOutlineIcon = `\n <path d=\"M18 8A6 6 0 0 0 6 8c0 7-3 9-3 9h18s-3-2-3-9\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n<path d=\"M13.73 21a2 2 0 0 1-3.46 0\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n`;\n\nexport const bellFilledIcon = `\n <path d=\"M20.52 15.21 19 13.7V10a7 7 0 0 0-6-6.92V2a1 1 0 0 0-2 0v1.08A7 7 0 0 0 5 10v3.7l-1.52 1.51A1 1 0 0 0 3 16v1a1 1 0 0 0 1 1h5a3 3 0 0 0 6 0h5a1 1 0 0 0 1-1v-1a1 1 0 0 0-.48-.79zM12 20a1 1 0 0 1-1-1h2a1 1 0 0 1-1 1z\" fill=\"currentColor\"/>\n`;\n","/**\n * @icon settings\n * Auto-generated by scripts/generate-icon.mjs — do not edit manually.\n * To regenerate: npm run icon -- settings\n */\n\nexport const settingsOutlineIcon = `\n <circle cx=\"12\" cy=\"12\" r=\"3\" stroke=\"currentColor\" stroke-width=\"1.5\"/>\n<path d=\"M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1-2.83 2.83l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-4 0v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83-2.83l.06-.06A1.65 1.65 0 0 0 4.68 15a1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1 0-4h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 2.83-2.83l.06.06A1.65 1.65 0 0 0 9 4.68a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 4 0v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 2.83l-.06.06A1.65 1.65 0 0 0 19.4 9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 0 4h-.09a1.65 1.65 0 0 0-1.51 1z\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n`;\n\nexport const settingsFilledIcon = `\n <path d=\"M12 15.5a3.5 3.5 0 1 1 0-7 3.5 3.5 0 0 1 0 7zm7.43-1.22c.04-.32.07-.64.07-.97 0-.33-.03-.66-.07-1l2.11-1.63c.19-.15.24-.42.12-.64l-2-3.46c-.12-.22-.39-.3-.61-.22l-2.49 1c-.52-.4-1.08-.73-1.69-.98l-.38-2.65C14.46 2.18 14.25 2 14 2h-4c-.25 0-.46.18-.49.42l-.38 2.65c-.61.25-1.17.59-1.69.98l-2.49-1c-.23-.09-.49 0-.61.22l-2 3.46c-.13.22-.07.49.12.64L4.57 12c-.04.34-.07.67-.07 1s.03.65.07.97l-2.11 1.66c-.19.15-.24.42-.12.64l2 3.46c.12.22.39.3.61.22l2.49-1.01c.52.4 1.08.73 1.69.98l.38 2.65c.03.24.24.42.49.42h4c.25 0 .46-.18.49-.42l.38-2.65c.61-.25 1.17-.58 1.69-.98l2.49 1.01c.22.08.49 0 .61-.22l2-3.46c.12-.22.07-.49-.12-.64l-2.11-1.66z\" fill=\"currentColor\"/>\n`;\n","/**\n * @icon arrow-right\n * Auto-generated by scripts/generate-icon.mjs — do not edit manually.\n * To regenerate: npm run icon -- arrow-right\n */\n\nexport const arrowRightOutlineIcon = `\n <path d=\"M18.5 12L5 12\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n<path d=\"M13 18C13 18 19 13.5811 19 12C19 10.4188 13 6 13 6\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n`;\n\nexport const arrowRightFilledIcon = `\n <path d=\"M18.5 12L5 12\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n<path d=\"M13 18C13 18 19 13.5811 19 12C19 10.4188 13 6 13 6\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n`;\n","/**\n * @icon google\n * Colored Google \"G\" brand icon — colors are intentionally fixed (not currentColor).\n */\n\nexport const googleOutlineIcon = `\n <path fill=\"#4285F4\" d=\"M22.01 10.67H12v3.24h5.74c-.25 1.36-1 2.51-2.13 3.27v2.72h3.45c2.01-1.85 3.17-4.58 3.17-7.99 0-.77-.07-.9-.22-1.24z\"/>\n <path fill=\"#34A853\" d=\"M12 23c2.88 0 5.3-.96 7.07-2.6l-3.45-2.72c-.96.65-2.18 1.03-3.62 1.03a6.39 6.39 0 0 1-5.96-4.37H2.47v2.81A10.66 10.66 0 0 0 12 23z\"/>\n <path fill=\"#FBBC05\" d=\"M6.04 14.34a6.44 6.44 0 0 1 0-4.68V6.85H2.47a10.67 10.67 0 0 0 0 10.3l3.57-2.81z\"/>\n <path fill=\"#EA4335\" d=\"M12 5.61c1.62 0 3.07.56 4.21 1.65l3.16-3.16A10.55 10.55 0 0 0 12 1 10.66 10.66 0 0 0 2.47 6.85l3.57 2.81A6.39 6.39 0 0 1 12 5.61z\"/>\n`;\n\nexport const googleFilledIcon = googleOutlineIcon;\n","/**\n * @icon log-out\n * Auto-generated by scripts/generate-icon.mjs — do not edit manually.\n * To regenerate: npm run icon -- log-out\n */\n\nexport const logOutOutlineIcon = `\n <path d=\"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <polyline points=\"16 17 21 12 16 7\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <line x1=\"21\" y1=\"12\" x2=\"9\" y2=\"12\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"/>\n`;\n\nexport const logOutFilledIcon = `\n <path d=\"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <polyline points=\"16 17 21 12 16 7\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <line x1=\"21\" y1=\"12\" x2=\"9\" y2=\"12\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"/>\n`;\n","/**\n * @icon search\n */\n\nexport const searchOutlineIcon = `\n <circle cx=\"11\" cy=\"11\" r=\"8\" stroke=\"currentColor\" stroke-width=\"1.5\"/>\n <path d=\"M21 21l-4.35-4.35\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n`;\n\nexport const searchFilledIcon = `\n <circle cx=\"11\" cy=\"11\" r=\"8\" fill=\"currentColor\" opacity=\"0.15\"/>\n <circle cx=\"11\" cy=\"11\" r=\"8\" stroke=\"currentColor\" stroke-width=\"1.5\"/>\n <path d=\"M21 21l-4.35-4.35\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n`;\n","/**\n * @icon home\n * Auto-generated by scripts/generate-icon.mjs — do not edit manually.\n * To regenerate: npm run icon -- home\n */\n\nexport const homeOutlineIcon = `\n <path d=\"M3 9.5L12 3l9 6.5V20a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V9.5z\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M9 21V12h6v9\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n`;\n\nexport const homeFilledIcon = `\n <path d=\"M12 2.1L1 12h3v9h6v-6h4v6h6v-9h3L12 2.1z\" fill=\"currentColor\"/>\n`;\n","/**\n * @icon clipboard\n * Auto-generated by scripts/generate-icon.mjs — do not edit manually.\n * To regenerate: npm run icon -- clipboard\n */\n\nexport const clipboardOutlineIcon = `\n <rect x=\"8\" y=\"2\" width=\"8\" height=\"4\" rx=\"1\" ry=\"1\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n<path d=\"M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n`;\n\nexport const clipboardFilledIcon = `\n <path d=\"M9 2a1 1 0 0 0-1 1v1H6a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2h-2V3a1 1 0 0 0-1-1H9zm0 1.5h6V6H9V3.5z\" fill=\"currentColor\"/>\n`;\n","/**\n * @file index.ts\n * @description Barrel export for all icons.\n */\n\n// Icons\nexport * from './svg/layout-bottom';\nexport * from './svg/wifi-02';\nexport * from './svg/user';\nexport * from './svg/setting-02';\nexport * from './svg/lock';\nexport * from './svg/globe';\nexport * from './svg/chevron-down';\nexport * from './svg/fingerprint';\nexport * from './svg/flag';\nexport * from './svg/map-pin';\nexport * from './svg/mail';\nexport * from './svg/id-card';\nexport * from './svg/check';\nexport * from './svg/eye';\nexport * from './svg/eye-slash';\nexport * from './svg/plus';\nexport * from './svg/shopping-bag';\nexport * from './svg/gift';\nexport * from './svg/ticket';\nexport * from './svg/shopping-cart';\nexport * from './svg/map';\nexport * from './svg/file-text';\nexport * from './svg/truck';\nexport * from './svg/refresh-cw';\nexport * from './svg/archive';\nexport * from './svg/tag';\nexport * from './svg/package';\nexport * from './svg/layers';\nexport * from './svg/grid';\nexport * from './svg/zap';\nexport * from './svg/file';\nexport * from './svg/shield';\nexport * from './svg/chevron-right';\nexport * from './svg/bell';\nexport * from './svg/settings';\nexport * from './svg/arrow-right';\nexport * from './svg/google';\nexport * from './svg/log-out';\nexport * from './svg/search';\nexport * from './svg/home';\nexport * from './svg/clipboard';\n","import { css } from 'lit';\n\nexport const arveaIconStyles = css`\n :host {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n line-height: 0;\n }\n\n svg {\n display: block;\n fill: none;\n }\n`;","/**\n * @file icon.types.ts\n * @description All available icon names, sizes and variants.\n */\n\nexport type IconName =\n | 'user'\n | 'layout-bottom'\n | 'wifi-02'\n | 'setting-02'\n | 'lock'\n | 'globe'\n | 'chevron-down'\n | 'fingerprint'\n | 'flag'\n | 'map-pin'\n | 'mail'\n | 'id-card'\n | 'check'\n | 'eye'\n | 'eye-slash'\n | 'plus'\n | 'shopping-bag'\n | 'gift'\n | 'ticket'\n | 'shopping-cart'\n | 'map'\n | 'file-text'\n | 'truck'\n | 'refresh-cw'\n | 'archive'\n | 'tag'\n | 'package'\n | 'layers'\n | 'grid'\n | 'zap'\n | 'file'\n | 'shield'\n | 'chevron-right'\n | 'bell'\n | 'settings'\n | 'arrow-right'\n | 'google'\n | 'log-out'\n | 'home'\n | 'clipboard'\n;\n\nexport type IconVariant = 'outline' | 'filled';\n\nexport type IconSize = 'sm' | 'md' | 'lg' | 'xl';\n\nexport const ICON_SIZES: Record<IconSize, string> = {\n sm: '16px',\n md: '20px',\n lg: '24px',\n xl: '32px',\n};","import { LitElement, html } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { unsafeSVG } from 'lit/directives/unsafe-svg.js';\n\nimport { arveaIconStyles } from './arvea-icon.styles';\nimport type { IconName, IconSize } from '../../icons/icon.types';\nimport { ICON_SIZES } from '../../icons/icon.types';\nimport * as Icons from '../../icons';\nimport { styleMap } from 'lit/directives/style-map.js';\n\n// ── Helper to get icon paths from the Icons namespace ─────────\nfunction getIcon(name: IconName, outline: boolean): string {\n const camel = name.replace(/-([a-z0-9])/g, (_, c) => c.toUpperCase());\n const variant = outline ? 'OutlineIcon' : 'FilledIcon';\n const key = `${camel}${variant}` as keyof typeof Icons;\n return (Icons[key] as string) ?? '';\n}\n\n/**\n * @element arvea-icon\n *\n * @prop {IconName} name - Icon name e.g. 'user', 'view'\n * @prop {IconSize} size - 'sm' | 'md' | 'lg' | 'xl'\n * @prop {boolean} outline - true = outline, false = filled\n * @prop {string} color - any CSS color value\n *\n * @example\n * <arvea-icon name=\"user\" size=\"md\" outline></arvea-icon>\n * <arvea-icon name=\"user\" size=\"lg\"></arvea-icon>\n */\n@customElement('arvea-icon')\nexport class ArveaIcon extends LitElement {\n static styles = arveaIconStyles;\n\n @property({ type: String, reflect: true })\n name: IconName = 'user';\n\n @property({ type: String, reflect: true })\n size: IconSize = 'md';\n\n @property({ type: Boolean, reflect: true })\n outline = false;\n\n @property({ type: String })\n color?: string;\n\n render() {\n const paths = getIcon(this.name, this.outline);\n const px = ICON_SIZES[this.size];\n\n if (!paths) {\n console.warn(`[arvea-icon] Unknown icon: \"${this.name}\"`);\n return html``;\n }\n\n return html`\n <svg\n part=\"svg\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"${px}\"\n height=\"${px}\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n aria-hidden=\"true\"\n style=${styleMap(this.color ? { color: this.color } : {})}\n >\n ${unsafeSVG(paths)}\n </svg>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'arvea-icon': ArveaIcon;\n }\n}","/**\n * @file tokens.styles.ts\n * @description Lit CSS template containing all design tokens as CSS custom properties.\n * Injected into Web Component shadow roots so tokens are available inside Shadow DOM.\n *\n * Generated automatically — edit tokens.css, then run: npm run tokens\n */\n\nimport { css } from 'lit';\n\nexport const tokenStyles = css`\n :host {\n --colors-arvea-50: #F2FBFA;\n --colors-arvea-100: #D3F4F2;\n --colors-arvea-200: #A7E8E5;\n --colors-arvea-300: #73D5D4;\n --colors-arvea-400: #52BEC0;\n --colors-arvea-500: #2C9CA0;\n --colors-arvea-600: #217B80;\n --colors-arvea-700: #1E6267;\n --colors-arvea-800: #1C4F53;\n --colors-arvea-900: #1C4245;\n --colors-arvea-950: #0A2529;\n --action-btn-validate-bg: #2C9CA0;\n --action-btn-edit-bg: #F97316;\n --action-btn-payment-bg: #64748B;\n --action-btn-order-bg: #F97316;\n --action-btn-price-bg: #F97316;\n --action-btn-delete-bg: #EF4444;\n --action-btn-view-bg: #22C55E;\n --action-btn-pdf-bg: #3B82F6;\n --action-btn-pause-bg: #F59E0B;\n --action-btn-download-bg: #6366F1;\n --action-btn-upload-bg: #8B5CF6;\n --action-btn-copy-bg: #0EA5E9;\n --action-btn-print-bg: #64748B;\n --action-btn-settings-bg: #475569;\n --action-btn-archive-bg: #78716C;\n --action-btn-restore-bg: #2C9CA0;\n --action-btn-fg: #FFFFFF;\n --colors-slate-50: #F8FAFC;\n --colors-slate-100: #F1F5F9;\n --colors-slate-200: #E2E8F0;\n --colors-slate-300: #CBD5E1;\n --colors-slate-400: #94A3B8;\n --colors-slate-500: #64748B;\n --colors-slate-600: #475569;\n --colors-slate-700: #334155;\n --colors-slate-800: #1E293B;\n --colors-slate-900: #0F172A;\n --colors-slate-950: #020617;\n --spacing-0: 0px;\n --spacing-px: 1px;\n --spacing-0-5: 0.125rem;\n --spacing-1: 0.25rem;\n --spacing-1-5: 0.375rem;\n --spacing-2: 0.5rem;\n --spacing-2-5: 0.625rem;\n --spacing-3: 0.75rem;\n --spacing-3-5: 0.875rem;\n --spacing-4: 1rem;\n --spacing-5: 1.25rem;\n --spacing-6: 1.5rem;\n --spacing-7: 1.75rem;\n --spacing-8: 2rem;\n --spacing-9: 2.25rem;\n --spacing-10: 2.5rem;\n --spacing-11: 2.75rem;\n --spacing-12: 3rem;\n --spacing-14: 3.5rem;\n --spacing-16: 4rem;\n --spacing-20: 5rem;\n --spacing-24: 6rem;\n --spacing-28: 7rem;\n --spacing-32: 8rem;\n --spacing-36: 9rem;\n --spacing-40: 10rem;\n --spacing-44: 11rem;\n --spacing-48: 12rem;\n --spacing-52: 13rem;\n --spacing-56: 14rem;\n --spacing-60: 15rem;\n --spacing-64: 16rem;\n --spacing-72: 18rem;\n --spacing-80: 20rem;\n --spacing-96: 24rem;\n --font-family: 'Inter', system-ui, -apple-system, sans-serif;\n --font-size-xs: 0.75rem;\n --font-size-sm: 0.875rem;\n --font-size-base: 1rem;\n --font-size-lg: 1.125rem;\n --font-size-xl: 1.25rem;\n --font-size-2xl: 1.5rem;\n --font-size-3xl: 1.875rem;\n --font-size-4xl: 2.25rem;\n --font-size-5xl: 3rem;\n --font-weight-regular: 400;\n --font-weight-medium: 500;\n --font-weight-semibold: 600;\n --button-default-bg: #217B80;\n --button-default-bg-hover: #1E6267;\n --button-default-bg-disabled: #E2E8F0;\n --button-outline-bg: #FFFFFF;\n --button-outline-bg-hover: #F1F5F9;\n --button-secondary-bg: #F8FAFC;\n --button-secondary-bg-hover: #E2E8F0;\n --button-danger-bg: #E7000B;\n --button-danger-bg-hover: #B91C1C;\n --button-link-bg: transparent;\n --button-outline-border: #E2E8F0;\n --button-outline-shadow: 0px 1px 2px rgba(0, 0, 0, 0.05);\n --button-text-default: #FFFFFF;\n --button-text-outline: #334155;\n --button-text-secondary: #334155;\n --button-text-danger: #FFFFFF;\n --button-text-link: #217B80;\n --button-text-link-hover: #1E6267;\n --button-text-disabled: #94A3B8;\n --button-radius: 8px;\n --button-gap: 6px;\n --button-padding-default: 8px 16px;\n --button-height-default: 36px;\n --button-padding-sm: 0px 12px;\n --button-height-sm: 32px;\n --button-padding-lg: 0px 24px;\n --button-height-lg: 40px;\n --button-padding-icon: 0px;\n --button-size-icon: 40px;\n --loader-color-default: #FFFFFF;\n --loader-color-subtle-default: rgba(255, 255, 255, 0.4);\n --loader-color-outline: #334155;\n --loader-color-subtle-outline: rgba(51, 65, 85, 0.4);\n --loader-color-secondary: #334155;\n --loader-color-subtle-secondary: rgba(51, 65, 85, 0.4);\n --loader-color-danger: #FFFFFF;\n --loader-color-subtle-danger: rgba(255, 255, 255, 0.4);\n --badge-success-bg: #F0FDF4;\n --badge-success-text: #15803D;\n --badge-success-icon: #15803D;\n --badge-error-bg: #FEE2E2;\n --badge-error-text: #DC2626;\n --badge-error-icon: #DC2626;\n --badge-warning-bg: #FEF9C3;\n --badge-warning-text: #A16207;\n --badge-warning-icon: #A16207;\n --badge-info-bg: #DBEAFE;\n --badge-info-text: #2563EB;\n --badge-info-icon: #2563EB;\n --badge-pending-bg: #FED7AA;\n --badge-pending-text: #7C2D12;\n --badge-pending-icon: #7C2D12;\n --badge-active-bg: #1D4ED8;\n --badge-active-text: #EFF6FF;\n --badge-active-icon: #EFF6FF;\n --badge-inactive-bg: #F1F5F9;\n --badge-inactive-text: #475569;\n --badge-inactive-icon: #475569;\n --badge-radius: 4px;\n --badge-padding: 3px 8px;\n --badge-gap: 4px;\n --badge-font-size: 12px;\n --badge-font-weight: 600;\n --badge-line-height: 16px;\n --badge-height: 22px;\n --badge-label-default-bg: #155DFC;\n --badge-label-default-border: #155DFC;\n --badge-label-default-text: #F8FAFC;\n --badge-label-destructive-bg: #E7000B;\n --badge-label-destructive-border: #E7000B;\n --badge-label-destructive-text: #F8FAFC;\n --badge-label-secondary-bg: #F1F5F9;\n --badge-label-secondary-border: #F1F5F9;\n --badge-label-secondary-text: #0F172B;\n --badge-label-outline-bg: transparent;\n --badge-label-outline-border: #E2E8F0;\n --badge-label-outline-text: #020618;\n --badge-label-radius: 8px;\n --badge-label-padding: 2px 8px;\n --badge-label-gap: 8px;\n --badge-label-height: 20px;\n --badge-label-font-size: 12px;\n --badge-label-font-weight: 600;\n --badge-label-line-height: 16px;\n --toggle-checked-bg: #217B80;\n --toggle-unchecked-bg: #E2E8F0;\n --toggle-width: 44px;\n --toggle-height: 24px;\n --toggle-padding: 2px;\n --toggle-radius: 9999px;\n --toggle-thumb-size: 20px;\n --toggle-thumb-bg: #FFFFFF;\n --checkbox-size: 16px;\n --checkbox-radius: 4px;\n --checkbox-border: #217B80;\n --checkbox-checked-bg: #217B80;\n --checkbox-unchecked-bg: #FFFFFF;\n --checkbox-disabled-opacity: 0.5;\n --checkbox-check-size: 12px;\n --checkbox-check-color: #FFFFFF;\n --radio-size: 16px;\n --radio-radius: 9999px;\n --radio-border: #217B80;\n --radio-checked-bg: #FFFFFF;\n --radio-unchecked-bg: #FFFFFF;\n --radio-dot-size: 8px;\n --radio-dot-color: #217B80;\n --radio-disabled-opacity: 0.5;\n --radio-gap: 8px;\n --radio-label-size: 14px;\n --radio-label-weight: 500;\n --radio-label-color: #020618;\n --slider-track-height: 8px;\n --slider-track-bg: #F1F5F9;\n --slider-track-filled-bg: #217B80;\n --slider-track-radius: 9999px;\n --slider-thumb-size: 20px;\n --slider-thumb-bg: #FFFFFF;\n --slider-thumb-border: #217B80;\n --slider-thumb-border-width: 2px;\n --slider-thumb-shadow-focus: 0 0 0 4px rgba(33, 123, 128, 0.18);\n --slider-label-color: #334155;\n --slider-label-size: 13px;\n --slider-label-weight: 500;\n --slider-value-color: #217B80;\n --slider-value-size: 13px;\n --slider-tick-color: #94A3B8;\n --slider-tick-size: 4px;\n --slider-disabled-opacity: 0.5;\n --input-bg: #FFFFFF;\n --input-bg-disabled: #F1F5F9;\n --input-text: #0F172A;\n --input-placeholder: #94A3B8;\n --input-border: #CBD5E1;\n --input-border-hover: #94A3B8;\n --input-border-focus: #217B80;\n --input-border-invalid: #DC2626;\n --input-border-warning: #A16207;\n --input-radius: 8px;\n --input-padding-x: 12px;\n --input-padding-y: 8px;\n --input-height: 36px;\n --input-font-size: 14px;\n --input-label-color: #334155;\n --input-label-size: 13px;\n --input-label-weight: 500;\n --input-hint-color: #64748B;\n --input-hint-color-invalid: #DC2626;\n --input-hint-color-warning: #A16207;\n --input-hint-color-valid: #15803D;\n --input-hint-size: 12px;\n --input-shadow-focus: 0 0 0 3px rgba(33, 123, 128, 0.15);\n --select-bg: #FFFFFF;\n --select-bg-disabled: #F1F5F9;\n --select-text: #0F172A;\n --select-placeholder: #94A3B8;\n --select-border: #CBD5E1;\n --select-border-focus: #217B80;\n --select-border-invalid: #DC2626;\n --select-radius: 8px;\n --select-padding-x: 12px;\n --select-padding-y: 8px;\n --select-height: 36px;\n --select-font-size: 14px;\n --select-chevron-color: #64748B;\n --tag-bg: #FFFFFF;\n --tag-bg-hover: #F8FAFC;\n --tag-bg-selected: #217B80;\n --tag-text: #334155;\n --tag-text-selected: #FFFFFF;\n --tag-border: #E2E8F0;\n --tag-border-selected: #217B80;\n --tag-radius: 9999px;\n --tag-padding: 4px 10px;\n --tag-gap: 6px;\n --tag-font-size: 12px;\n --tag-font-weight: 500;\n --tag-height: 24px;\n --tag-remove-color: #64748B;\n --tag-remove-color-selected: #FFFFFF;\n --tag-remove-hover-bg: rgba(15, 23, 42, 0.08);\n --spinner-color: #217B80;\n --spinner-track-color: rgba(33, 123, 128, 0.2);\n --spinner-size-sm: 16px;\n --spinner-size-md: 24px;\n --spinner-size-lg: 32px;\n --spinner-border-sm: 2px;\n --spinner-border-md: 3px;\n --spinner-border-lg: 4px;\n --tooltip-bg: #1E293B;\n --tooltip-text: #F8FAFC;\n --tooltip-radius: 6px;\n --tooltip-padding: 6px 10px;\n --tooltip-font-size: 12px;\n --tooltip-font-weight: 500;\n --tooltip-arrow-size: 6px;\n --tooltip-offset: 8px;\n --tooltip-max-width: 240px;\n --card-bg: #FFFFFF;\n --card-border: #E2E8F0;\n --card-radius: 12px;\n --card-padding: 16px;\n --card-shadow: 0 1px 2px rgba(15, 23, 42, 0.04);\n --card-shadow-elevated: 0 8px 24px rgba(15, 23, 42, 0.08);\n --avatar-bg-identity: #217B80;\n --avatar-bg-object: #F1F5F9;\n --avatar-text-identity: #FFFFFF;\n --avatar-text-object: #334155;\n --avatar-border-radius-identity: 9999px;\n --avatar-border-radius-object: 8px;\n --avatar-size-sm: 24px;\n --avatar-size-md: 40px;\n --avatar-size-lg: 64px;\n --avatar-font-sm: 10px;\n --avatar-font-md: 14px;\n --avatar-font-lg: 22px;\n --avatar-font-weight: 600;\n --avatar-letter-spacing: 0.02em;\n --progress-track-bg: #E2E8F0;\n --progress-fill-bg: #217B80;\n --progress-radius: 9999px;\n --progress-height-sm: 4px;\n --progress-height-md: 8px;\n --progress-height-lg: 12px;\n --progress-label-color: #334155;\n --progress-label-size: 12px;\n --skeleton-bg: #E2E8F0;\n --skeleton-highlight: #F8FAFC;\n --skeleton-radius: 6px;\n --skeleton-radius-sm: 4px;\n --skeleton-radius-lg: 12px;\n --skeleton-pulse-width: 8rem;\n --skeleton-duration: 1.6s;\n --carousel-gap: 12px;\n --carousel-radius: 12px;\n --carousel-transition: transform 0.4s cubic-bezier(0.22, 1, 0.36, 1);\n --carousel-arrow-size: 36px;\n --carousel-arrow-bg: #FFFFFF;\n --carousel-arrow-bg-hover: #F8FAFC;\n --carousel-arrow-border: #E2E8F0;\n --carousel-arrow-color: #334155;\n --carousel-arrow-shadow: 0 2px 8px rgba(15, 23, 42, 0.12);\n --carousel-arrow-offset: 12px;\n --carousel-arrow-disabled-opacity: 0.4;\n --carousel-dot-size: 8px;\n --carousel-dot-size-active: 20px;\n --carousel-dot-bg: #CBD5E1;\n --carousel-dot-bg-active: #217B80;\n --carousel-dot-gap: 6px;\n --carousel-dot-row-margin: 12px;\n --dialog-overlay-bg: rgba(15, 23, 42, 0.5);\n --dialog-bg: #FFFFFF;\n --dialog-radius: 12px;\n --dialog-shadow: 0 24px 48px rgba(15, 23, 42, 0.18);\n --dialog-padding: 20px;\n --dialog-max-width: 480px;\n --dialog-title-size: 18px;\n --dialog-title-weight: 600;\n --dialog-title-color: #0F172A;\n --dialog-body-color: #334155;\n --dialog-close-color: #64748B;\n --dialog-close-hover-bg: rgba(15, 23, 42, 0.06);\n --toast-bg: #1E293B;\n --toast-text: #F8FAFC;\n --toast-radius: 10px;\n --toast-padding: 12px 16px;\n --toast-shadow: 0 10px 32px rgba(15, 23, 42, 0.24);\n --toast-gap: 12px;\n --toast-min-width: 280px;\n --toast-max-width: 400px;\n --toast-success-bg: #15803D;\n --toast-error-bg: #DC2626;\n --toast-warning-bg: #A16207;\n --toast-info-bg: #2563EB;\n --tabs-list-border: #E2E8F0;\n --tabs-tab-color: #64748B;\n --tabs-tab-color-active: #217B80;\n --tabs-tab-color-hover: #334155;\n --tabs-tab-padding: 10px 16px;\n --tabs-tab-radius: 8px;\n --tabs-tab-font-size: 14px;\n --tabs-tab-font-weight: 500;\n --tabs-indicator-color: #217B80;\n --tabs-indicator-height: 2px;\n --tabs-disabled-opacity: 0.5;\n --tabs-pill-bg-active: #217B80;\n --tabs-pill-text-active: #FFFFFF;\n --accordion-bg: #FFFFFF;\n --accordion-border: #E2E8F0;\n --accordion-radius: 10px;\n --accordion-header-padding: 14px 16px;\n --accordion-header-bg: transparent;\n --accordion-header-bg-hover: #F8FAFC;\n --accordion-header-radius: 0;\n --accordion-body-padding: 0 16px 14px;\n --accordion-body-size: 14px;\n --accordion-body-line-height: 1.5;\n --accordion-body-max-height: 1000px;\n --accordion-title-color: #0F172A;\n --accordion-title-size: 14px;\n --accordion-title-weight: 500;\n --accordion-body-color: #475569;\n --accordion-chevron-color: #64748B;\n --accordion-transition: 0.2s ease;\n --alert-radius: 10px;\n --alert-padding: 12px 14px;\n --alert-gap: 10px;\n --alert-title-weight: 600;\n --alert-title-size: 14px;\n --alert-body-size: 13px;\n --alert-close-size: 22px;\n --alert-close-opacity: 0.7;\n --alert-close-hover-bg: rgba(15, 23, 42, 0.06);\n --alert-transition: 0.15s ease;\n --alert-info-bg: #EFF6FF;\n --alert-info-border: #BFDBFE;\n --alert-info-text: #1E3A8A;\n --alert-info-icon: #2563EB;\n --alert-success-bg: #F0FDF4;\n --alert-success-border: #BBF7D0;\n --alert-success-text: #14532D;\n --alert-success-icon: #15803D;\n --alert-warning-bg: #FEFCE8;\n --alert-warning-border: #FEF08A;\n --alert-warning-text: #713F12;\n --alert-warning-icon: #A16207;\n --alert-danger-bg: #FEF2F2;\n --alert-danger-border: #FECACA;\n --alert-danger-text: #7F1D1D;\n --alert-danger-icon: #DC2626;\n --divider-color: #E2E8F0;\n --divider-color-strong: #CBD5E1;\n --divider-thickness: 1px;\n --divider-spacing: 16px;\n --divider-text-color: #64748B;\n --divider-text-size: 12px;\n --divider-text-padding: 12px;\n --breadcrumb-color: #475569;\n --breadcrumb-color-hover: #217B80;\n --breadcrumb-color-current: #0F172A;\n --breadcrumb-separator-color: #94A3B8;\n --breadcrumb-font-size: 13px;\n --breadcrumb-gap: 6px;\n --pagination-bg: #FFFFFF;\n --pagination-bg-hover: #F1F5F9;\n --pagination-bg-active: #217B80;\n --pagination-border: #E2E8F0;\n --pagination-border-hover: #CBD5E1;\n --pagination-border-active: #217B80;\n --pagination-color: #334155;\n --pagination-color-active: #FFFFFF;\n --pagination-radius: 8px;\n --pagination-gap: 4px;\n --pagination-size-sm: 28px;\n --pagination-size-md: 36px;\n --pagination-size-lg: 42px;\n --pagination-font-size: 13px;\n --pagination-shadow-focus: 0 0 0 3px rgba(33, 123, 128, 0.15);\n --dropdown-bg: #FFFFFF;\n --dropdown-border: #E2E8F0;\n --dropdown-radius: 8px;\n --dropdown-shadow: 0 12px 32px rgba(15, 23, 42, 0.12);\n --dropdown-padding: 4px;\n --dropdown-min-width: 180px;\n --dropdown-max-width: 320px;\n --dropdown-trigger-bg: #FFFFFF;\n --dropdown-trigger-bg-hover: #F8FAFC;\n --dropdown-trigger-border: #E2E8F0;\n --dropdown-trigger-color: #334155;\n --dropdown-shadow-focus: 0 0 0 3px rgba(33, 123, 128, 0.15);\n --dropdown-item-color: #0F172A;\n --dropdown-item-color-disabled: #94A3B8;\n --dropdown-item-color-destructive: #DC2626;\n --dropdown-item-bg-hover: #F1F5F9;\n --dropdown-item-bg-destructive-hover: #FEE2E2;\n --dropdown-item-padding: 8px 10px;\n --dropdown-divider: #E2E8F0;\n --searchbar-bg: #FFFFFF;\n --searchbar-bg-disabled: #F1F5F9;\n --searchbar-color: #0F172A;\n --searchbar-placeholder: #94A3B8;\n --searchbar-icon: #64748B;\n --searchbar-border: #CBD5E1;\n --searchbar-border-hover: #94A3B8;\n --searchbar-border-focus: #217B80;\n --searchbar-radius: 8px;\n --searchbar-padding-x: 12px;\n --searchbar-height-sm: 32px;\n --searchbar-height-md: 40px;\n --searchbar-height-lg: 48px;\n --searchbar-shadow: 0 8px 24px rgba(15, 23, 42, 0.08);\n --searchbar-shadow-focus: 0 0 0 3px rgba(33, 123, 128, 0.15);\n --searchbar-suggestion-bg-hover: #F1F5F9;\n --rating-color-filled: #F59E0B;\n --rating-color-empty: #E2E8F0;\n --rating-label-color: #334155;\n --rating-gap: 2px;\n --rating-size-sm: 16px;\n --rating-size-md: 22px;\n --rating-size-lg: 28px;\n --qty-bg: #FFFFFF;\n --qty-border: #E2E8F0;\n --qty-radius: 8px;\n --qty-button-bg: transparent;\n --qty-button-bg-hover: #F1F5F9;\n --qty-button-color: #334155;\n --qty-input-color: #0F172A;\n --qty-button-size-sm: 28px;\n --qty-button-size-md: 36px;\n --qty-button-size-lg: 44px;\n --qty-input-width-sm: 40px;\n --qty-input-width-md: 52px;\n --qty-input-width-lg: 64px;\n --qty-shadow-focus: 0 0 0 3px rgba(33, 123, 128, 0.18);\n --stepper-circle-size: 32px;\n --stepper-circle-bg: #FFFFFF;\n --stepper-circle-bg-active: #FFFFFF;\n --stepper-circle-bg-complete: #217B80;\n --stepper-circle-border: #CBD5E1;\n --stepper-circle-border-active: #217B80;\n --stepper-circle-border-complete: #217B80;\n --stepper-circle-color: #64748B;\n --stepper-circle-color-active: #217B80;\n --stepper-circle-color-complete: #FFFFFF;\n --stepper-connector-bg: #E2E8F0;\n --stepper-connector-bg-complete: #217B80;\n --stepper-label-color: #64748B;\n --stepper-label-color-active: #0F172A;\n --stepper-description-color: #64748B;\n --stepper-shadow-active: 0 0 0 4px rgba(33, 123, 128, 0.15);\n --table-bg: #FFFFFF;\n --table-border: #E2E8F0;\n --table-radius: 10px;\n --table-header-bg: #217B80;\n --table-header-color: #FFFFFF;\n --table-row-border: #F1F5F9;\n --table-row-bg-hover: #F8FAFC;\n --table-cell-color: #0F172A;\n --table-cell-padding-x: 14px;\n --table-cell-padding-y: 12px;\n --table-sort-active: #FFFFFF;\n --table-empty-color: #64748B;\n --lightbox-overlay-bg: rgba(2, 6, 23, 0.92);\n --lightbox-radius: 12px;\n --lightbox-shadow: 0 24px 60px rgba(0, 0, 0, 0.5);\n --lightbox-button-bg: rgba(255, 255, 255, 0.12);\n --lightbox-button-color: #F8FAFC;\n --lightbox-text-color: #F1F5F9;\n --lightbox-thumb-border-active: #2C9CA0;\n --select-popup-bg: #ffffff;\n --select-popup-border: #e2e8f0;\n --select-popup-shadow: 0 8px 24px rgba(15, 23, 42, 0.12);\n --select-popup-radius: 8px;\n --select-popup-z: 9999;\n --select-option-hover-bg: #f8fafc;\n --select-option-active-bg: #f1f5f9;\n --select-option-selected-bg: #eff6ff;\n --select-option-selected-fg: #1d4ed8;\n --select-tag-bg: #f1f5f9;\n --select-tag-fg: #334155;\n --select-tag-radius: 4px;\n --popover-bg: #ffffff;\n --popover-border: #e2e8f0;\n --popover-shadow: 0 8px 24px rgba(15, 23, 42, 0.12);\n --popover-radius: 8px;\n --popover-z: 9999;\n --table-row-selected-bg: #eff6ff;\n --table-row-hover-bg: #f8fafc;\n --table-filter-row-bg: #f8fafc;\n --table-resizer-color: #3b82f6;\n --drawer-bg: #ffffff;\n --drawer-overlay-bg: rgba(15, 23, 42, 0.45);\n --drawer-shadow: 0 12px 32px rgba(15, 23, 42, 0.18);\n --drawer-transition: 260ms ease;\n --datepicker-cell-size: 36px;\n --datepicker-cell-radius: 6px;\n --datepicker-today-ring: #217B80;\n --datepicker-selected-bg: #217B80;\n --datepicker-range-bg: #F1F5F9;\n --otp-cell-size: 40px;\n --otp-cell-gap: 8px;\n --otp-cell-border: #e2e8f0;\n --otp-cell-focus-ring: 0 0 0 3px rgba(59, 130, 246, 0.18);\n --upload-border: #cbd5e1;\n --upload-border-active: #3b82f6;\n --upload-bg: #f8fafc;\n --upload-bg-active: #eff6ff;\n --segmented-track-bg: #f1f5f9;\n --segmented-thumb-bg: #ffffff;\n --segmented-thumb-shadow: 0 1px 2px rgba(15, 23, 42, 0.08),;\n --tree-line-color: #e2e8f0;\n --tree-row-hover-bg: #f8fafc;\n --tree-row-selected-bg: #eff6ff;\n --tree-indent: 20px;\n }\n\n /* Read --font-family set by a parent class or inline style.\n CSS custom properties cross shadow DOM boundaries, so setting\n --font-family on any ancestor element changes the font for all components. */\n :host {\n font-family: var(--font-family, 'Inter', system-ui, -apple-system, sans-serif);\n }\n`;\n","import { css } from 'lit';\nimport { tokenStyles } from '../../tokens/tokens.styles';\n\nexport const arveaButtonStyles = [\n tokenStyles,\n css`\n :host {\n display: inline-flex;\n }\n\n button {\n display: inline-flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n gap: var(--button-gap);\n border: none;\n cursor: pointer;\n font-family: inherit;\n font-size: 0.875rem;\n font-weight: 500;\n border-radius: var(--button-radius);\n transition: background 0.2s ease, color 0.2s ease, border-color 0.2s ease;\n outline: none;\n text-decoration: none;\n white-space: nowrap;\n }\n\n /* ── Sizes ─────────────────────────────────────────── */\n :host([size='default']) button,\n button {\n padding: var(--button-padding-default);\n height: var(--button-height-default);\n }\n\n :host([size='sm']) button {\n padding: var(--button-padding-sm);\n height: var(--button-height-sm);\n }\n\n :host([size='lg']) button {\n padding: var(--button-padding-lg);\n height: var(--button-height-lg);\n }\n\n :host([size='icon']) button {\n padding: var(--button-padding-icon);\n width: var(--button-size-icon);\n height: var(--button-size-icon);\n }\n\n /* ── Variants ──────────────────────────────────────── */\n\n /* Default */\n :host([variant='default']) button,\n button {\n background: var(--button-default-bg);\n color: var(--button-text-default);\n }\n :host([variant='default']) button:hover {\n background: var(--button-default-bg-hover);\n }\n\n /* Outline — inset shadow keeps dimensions identical to other variants */\n :host([variant='outline']) button {\n background: var(--button-outline-bg);\n color: var(--button-text-outline);\n box-shadow: inset 0 0 0 1px var(--button-outline-border), var(--button-outline-shadow, none);\n }\n :host([variant='outline']) button:hover {\n background: var(--button-outline-bg-hover);\n }\n\n /* Secondary */\n :host([variant='secondary']) button {\n background: var(--button-secondary-bg);\n color: var(--button-text-secondary);\n }\n :host([variant='secondary']) button:hover {\n background: var(--button-secondary-bg-hover);\n }\n\n /* Danger */\n :host([variant='danger']) button {\n background: var(--button-danger-bg);\n color: var(--button-text-danger);\n }\n :host([variant='danger']) button:hover {\n background: var(--button-danger-bg-hover);\n }\n\n /* Link */\n :host([variant='link']) button {\n background: var(--button-link-bg);\n color: var(--button-text-link);\n text-decoration: var(--button-link-decoration, none);\n text-underline-offset: 3px;\n }\n :host([variant='link']) button:hover {\n color: var(--button-text-link-hover);\n }\n\n /* ── Shape ────────────────────────────────────────── */\n :host([shape='pill']) button {\n border-radius: 999px;\n }\n\n /* ── Full width ───────────────────────────────────── */\n :host([full-width]) {\n display: block;\n width: 100%;\n }\n :host([full-width]) button {\n width: 100%;\n }\n\n /* ── Loading — icon-only, force square shape ───────── */\n :host([loading]) button {\n aspect-ratio: 1;\n padding: 0;\n }\n\n /* ── Disabled ──────────────────────────────────────── */\n :host([disabled]) button,\n button:disabled {\n background: var(--button-default-bg-disabled);\n color: var(--button-text-disabled);\n pointer-events: none;\n box-shadow: none;\n border: none;\n }\n\n /* Danger disabled — overrides generic disabled */\n :host([variant='danger'][disabled]) button,\n :host([variant='danger']) button:disabled {\n background: var(--button-danger-bg);\n color: var(--button-text-danger);\n opacity: 0.5;\n }\n\n /* ── Focus ─────────────────────────────────────────── */\n button:focus-visible {\n outline: 2px solid var(--button-default-bg);\n outline-offset: 2px;\n }\n\n /* ── Loader ─────────────────────────────────────────── */\n.loader {\n width: 16px;\n height: 16px;\n border: 2px solid var(--loader-color-subtle);\n border-top-color: var(--loader-color);\n border-radius: 50%;\n animation: spin 0.7s linear infinite;\n}\n\n:host([variant='default']) {\n --loader-color: var(--loader-color-default);\n --loader-color-subtle: var(--loader-color-subtle-default);\n}\n\n:host([variant='outline']) {\n --loader-color: var(--loader-color-outline);\n --loader-color-subtle: var(--loader-color-subtle-outline);\n}\n\n:host([variant='secondary']) {\n --loader-color: var(--loader-color-secondary);\n --loader-color-subtle: var(--loader-color-subtle-secondary);\n}\n\n:host([variant='danger']) {\n --loader-color: var(--loader-color-danger);\n --loader-color-subtle: var(--loader-color-subtle-danger);\n}\n\n@keyframes spin {\n to { transform: rotate(360deg); }\n}\n`,\n\n\n];","import { LitElement, html } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { arveaButtonStyles } from './arvea-button.styles';\nimport type { ButtonVariant, ArveaButtonSize, ArveaButtonShape } from './arvea-button.types';\n\n/**\n * @element arvea-button\n *\n * @prop {ButtonVariant} variant - 'default' | 'outline' | 'secondary' | 'danger' | 'link'\n * @prop {ArveaButtonSize} size - 'sm' | 'default' | 'lg' | 'icon'\n * @prop {boolean} disabled - disables the button\n * @prop {boolean} loading - shows a spinner (ignored for link variant)\n * @prop {string} type - 'button' | 'submit' | 'reset'\n *\n * @slot - Default slot for button content (text or icon)\n *\n * @example\n * <arvea-button variant=\"default\" size=\"default\">Button</arvea-button>\n * <arvea-button variant=\"danger\" size=\"sm\">Delete</arvea-button>\n * <arvea-button variant=\"outline\" disabled>Disabled</arvea-button>\n * <arvea-button variant=\"default\" loading>Loading...</arvea-button>\n * <arvea-button variant=\"default\" size=\"icon\"><arvea-icon name=\"user\"></arvea-icon></arvea-button>\n */\n@customElement('arvea-button')\nexport class ArveaButton extends LitElement {\n static styles = arveaButtonStyles;\n\n @property({ type: String, reflect: true })\n variant: ButtonVariant = 'default';\n\n @property({ type: String, reflect: true })\n size: ArveaButtonSize = 'default';\n\n @property({ type: String, reflect: true })\n shape: ArveaButtonShape = 'default';\n\n @property({ type: Boolean, reflect: true })\n disabled = false;\n\n @property({ type: String })\n type: 'button' | 'submit' | 'reset' = 'button';\n\n @property({ type: Boolean, reflect: true })\n loading = false;\n\n @property({ type: Boolean, reflect: true, attribute: 'full-width' })\n fullWidth = false;\n\n \n\n private get _isLoading() {\n return this.loading && this.variant !== 'link';\n }\n\n private _handleClick(e: MouseEvent) {\n if (this.disabled || this._isLoading) {\n e.stopImmediatePropagation();\n e.preventDefault();\n return;\n }\n}\n\n\n render() {\n return html`\n <button\n part=\"base\"\n type=${this.type}\n ?disabled=${this.disabled || this._isLoading}\n aria-busy=${this._isLoading ? 'true' : 'false'}\n @click=${this._handleClick}\n >\n ${this._isLoading\n ? html`<span part=\"loader\" class=\"loader\"></span>`\n : html`<slot></slot>`}\n </button>\n `;\n}\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'arvea-button': ArveaButton;\n }\n}","import { css } from 'lit';\nimport { tokenStyles } from '../../tokens/tokens.styles';\n\nexport const arveaBadgeStyles = [\n tokenStyles,\n css`\n :host {\n display: inline-flex;\n }\n\n .badge {\n display: inline-flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n padding: var(--badge-padding);\n gap: var(--badge-gap);\n height: var(--badge-height);\n border-radius: var(--badge-radius);\n font-size: var(--badge-font-size);\n font-weight: var(--badge-font-weight);\n line-height: var(--badge-line-height);\n font-family: inherit;\n white-space: nowrap;\n }\n\n :host([variant='success']) .badge { background: var(--badge-success-bg); color: var(--badge-success-text); }\n :host([variant='error']) .badge { background: var(--badge-error-bg); color: var(--badge-error-text); }\n :host([variant='warning']) .badge { background: var(--badge-warning-bg); color: var(--badge-warning-text); }\n :host([variant='info']) .badge { background: var(--badge-info-bg); color: var(--badge-info-text); }\n :host([variant='pending']) .badge { background: var(--badge-pending-bg); color: var(--badge-pending-text); }\n :host([variant='active']) .badge { background: var(--badge-active-bg); color: var(--badge-active-text); }\n :host([variant='inactive']) .badge { background: var(--badge-inactive-bg); color: var(--badge-inactive-text); }\n\n :host([variant='default']) .badge {\n background: var(--badge-label-default-bg);\n border: 1px solid var(--badge-label-default-border);\n color: var(--badge-label-default-text);\n }\n :host([variant='destructive']) .badge {\n background: var(--badge-label-destructive-bg);\n border: 1px solid var(--badge-label-destructive-border);\n color: var(--badge-label-destructive-text);\n }\n :host([variant='secondary']) .badge {\n background: var(--badge-label-secondary-bg);\n border: 1px solid var(--badge-label-secondary-border);\n color: var(--badge-label-secondary-text);\n }\n :host([variant='outline']) .badge {\n background: var(--badge-label-outline-bg);\n border: 1px solid var(--badge-label-outline-border);\n color: var(--badge-label-outline-text);\n }\n\n .icon {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 16px;\n height: 16px;\n flex-shrink: 0;\n }\n\n .badge.no-bg {\n background: transparent;\n padding: 0;\n height: auto;\n }\n\n :host(:not([selected])) .badge {\n opacity: 0.4;\n }\n `,\n];","import { LitElement, html, nothing } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { styleMap } from 'lit/directives/style-map.js';\nimport { unsafeSVG } from 'lit/directives/unsafe-svg.js';\nimport { arveaBadgeStyles } from './arvea-badge.styles';\nimport type { BadgeVariant } from './arvea-badge.types';\n\nconst BADGE_ICONS: Record<BadgeVariant, string> = {\n success: `<svg width=\"15\" height=\"15\" viewBox=\"0 0 15 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M11.827 11.8333H11.8333M11.827 11.8333C11.4119 12.245 10.6595 12.1425 10.132 12.1425C9.48434 12.1425 9.17248 12.2691 8.71029 12.7313C8.31673 13.1249 7.78915 13.8333 7.16668 13.8333C6.5442 13.8333 6.01662 13.1249 5.62305 12.7313C5.16086 12.2691 4.84899 12.1425 4.20138 12.1425C3.67379 12.1425 2.92146 12.245 2.50633 11.8333C2.08787 11.4184 2.19085 10.6629 2.19085 10.1319C2.19085 9.46094 2.0441 9.15239 1.56625 8.67456C0.855425 7.96374 0.500011 7.6083 0.5 7.16665C0.500006 6.72501 0.855416 6.3696 1.56624 5.65878C1.9928 5.23221 2.19085 4.80952 2.19085 4.20137C2.19085 3.67377 2.08833 2.92143 2.5 2.5063C2.91495 2.08786 3.6704 2.19084 4.20139 2.19084C4.80952 2.19084 5.23221 1.9928 5.65877 1.56625C6.3696 0.855415 6.72501 0.5 7.16667 0.5C7.60832 0.5 7.96374 0.855415 8.67457 1.56625C9.10103 1.99271 9.52364 2.19084 10.1319 2.19084C10.6596 2.19084 11.4119 2.08831 11.827 2.5C12.2455 2.91495 12.1425 3.67039 12.1425 4.20137C12.1425 4.87239 12.2892 5.18092 12.7671 5.65878C13.4779 6.3696 13.8333 6.72501 13.8333 7.16665C13.8333 7.6083 13.4779 7.96374 12.7671 8.67456C12.2892 9.15238 12.1425 9.46095 12.1425 10.1319C12.1425 10.6629 12.2455 11.4184 11.827 11.8333Z\" stroke=\"currentColor\"/><path d=\"M5.1665 7.7619L6.3665 8.83333L9.1665 5.5\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>`,\n error: `<svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M9.99957 10L6 6M6.00043 10L10 6\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M14.6668 7.99984C14.6668 4.31794 11.6821 1.33317 8.00016 1.33317C4.31826 1.33317 1.3335 4.31794 1.3335 7.99984C1.3335 11.6817 4.31826 14.6665 8.00016 14.6665C11.6821 14.6665 14.6668 11.6817 14.6668 7.99984Z\" stroke=\"currentColor\"/></svg>`,\n warning: `<svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M3.54797 6.45512C5.15709 3.60783 5.96165 2.18418 7.06567 1.81771C7.67304 1.6161 8.32729 1.6161 8.93466 1.81771C10.0387 2.18418 10.8432 3.60783 12.4524 6.45512C14.0615 9.30242 14.866 10.7261 14.6247 11.8861C14.4919 12.5242 14.1648 13.1031 13.6902 13.5396C12.8275 14.3332 11.2184 14.3332 8.00016 14.3332C4.78193 14.3332 3.17281 14.3332 2.31014 13.5396C1.83555 13.1031 1.50842 12.5242 1.37565 11.8861C1.13429 10.7261 1.93885 9.30242 3.54797 6.45512Z\" stroke=\"currentColor\"/><path d=\"M7.9945 10.6665H8.00049\" stroke=\"currentColor\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M8 8.6665L8 5.99984\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>`,\n info: `<svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M14.6668 7.99984C14.6668 4.31794 11.6821 1.33317 8.00016 1.33317C4.31826 1.33317 1.3335 4.31794 1.3335 7.99984C1.3335 11.6817 4.31826 14.6665 8.00016 14.6665C11.6821 14.6665 14.6668 11.6817 14.6668 7.99984Z\" stroke=\"currentColor\"/><path d=\"M8.1613 11.333V7.99967C8.1613 7.6854 8.1613 7.52827 8.06366 7.43064C7.96603 7.33301 7.8089 7.33301 7.49463 7.33301\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M7.9945 5.33301H8.00049\" stroke=\"currentColor\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>`,\n pending: `<svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M8.00014 14.6668C4.31824 14.6668 1.3335 11.6821 1.3335 8.00016C1.3335 4.31826 4.31826 1.3335 8.00016 1.3335C10.9853 1.3335 13.484 3.29542 14.3335 6.00016H12.6668\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M8 5.3335V8.00016L9.33333 9.3335\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M14.6367 8.66667C14.6565 8.44724 14.6667 8.22486 14.6667 8M10 14.6667C10.2277 14.5917 10.4502 14.5043 10.6667 14.4052M13.8604 11.3333C13.989 11.0856 14.1036 10.8288 14.2034 10.5641M12.1283 13.4862C12.358 13.2961 12.5754 13.0905 12.7792 12.871\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>`,\n active: `<svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M12.6605 12.6668H12.6668M12.6605 12.6668C12.2454 13.0785 11.493 12.976 10.9655 12.976C10.3178 12.976 10.006 13.1026 9.54378 13.5648C9.15023 13.9584 8.62265 14.6668 8.00018 14.6668C7.37769 14.6668 6.85011 13.9584 6.45654 13.5648C5.99435 13.1026 5.68249 12.976 5.03487 12.976C4.50728 12.976 3.75495 13.0785 3.33982 12.6668C2.92137 12.2519 3.02435 11.4964 3.02435 10.9654C3.02435 10.2944 2.8776 9.98589 2.39975 9.50805C1.68892 8.79724 1.33351 8.44179 1.3335 8.00015C1.3335 7.5585 1.68891 7.20309 2.39973 6.49227C2.8263 6.06571 3.02435 5.64301 3.02435 5.03487C3.02435 4.50727 2.92183 3.75492 3.3335 3.33979C3.74845 2.92135 4.5039 3.02433 5.03488 3.02433C5.64301 3.02433 6.06571 2.8263 6.49226 2.39974C7.20309 1.68891 7.55851 1.3335 8.00016 1.3335C8.44182 1.3335 8.79723 1.68891 9.50806 2.39974C9.93453 2.82621 10.3571 3.02433 10.9654 3.02433C11.493 3.02433 12.2454 2.92181 12.6605 3.3335C13.079 3.74845 12.976 4.50389 12.976 5.03487C12.976 5.70588 13.1227 6.01441 13.6006 6.49227C14.3114 7.20309 14.6668 7.5585 14.6668 8.00015C14.6668 8.44179 14.3114 8.79724 13.6006 9.50805C13.1227 9.98588 12.976 10.2944 12.976 10.9654C12.976 11.4964 13.079 12.2519 12.6605 12.6668Z\" stroke=\"currentColor\"/><path d=\"M6 8.5954L7.2 9.66683L10 6.3335\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>`,\n inactive: `<svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M3.33317 3.33301L12.6665 12.6663\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M14.6668 7.99984C14.6668 4.31794 11.6821 1.33317 8.00016 1.33317C4.31826 1.33317 1.3335 4.31794 1.3335 7.99984C1.3335 11.6817 4.31826 14.6665 8.00016 14.6665C11.6821 14.6665 14.6668 11.6817 14.6668 7.99984Z\" stroke=\"currentColor\"/></svg>`,\n default: '',\n destructive: '',\n secondary: '',\n outline: '',\n};\n\n/**\n * @element arvea-badge\n *\n * @prop {BadgeVariant} variant - 'success' | 'error' | 'warning' | 'info' | 'pending' | 'active' | 'inactive'\n * @prop {string} label - Text label displayed in the badge\n * @prop {string} color - Custom background color (overrides variant color)\n * @prop {string} textColor - Custom text/icon color (overrides variant color)\n * @prop {string} icon - Icon name from arvea-icon (overrides the variant icon)\n * @prop {boolean} noBg - Removes background and padding for a transparent look\n *\n * @example\n * <arvea-badge variant=\"success\" label=\"Vérifié\"></arvea-badge>\n * <arvea-badge icon=\"check-circle\" label=\"Vérifié\" no-bg text-color=\"#10b981\"></arvea-badge>\n * <arvea-badge label=\"Custom\" color=\"#e0f2fe\" text-color=\"#0369a1\"></arvea-badge>\n */\n@customElement('arvea-badge')\nexport class ArveaBadge extends LitElement {\n static styles = arveaBadgeStyles;\n\n @property({ type: String, reflect: true })\n variant: BadgeVariant = 'info';\n\n @property({ type: String })\n label = '';\n\n @property({ type: String })\n color = '';\n\n @property({ type: String, attribute: 'text-color' })\n textColor = '';\n\n @property({ type: String })\n icon = '';\n\n @property({ type: Boolean, reflect: true, attribute: 'no-bg' })\n noBg = false;\n\n @property({ type: Boolean, reflect: true, attribute: 'hide-icon' })\n hideIcon = false;\n\n @property({ type: Boolean, reflect: true })\n selected = true;\n\n private static STATUS_VARIANTS = new Set([\n 'success', 'error', 'warning', 'info', 'pending', 'active', 'inactive',\n ]);\n\n render() {\n const isStatus = ArveaBadge.STATUS_VARIANTS.has(this.variant);\n const customStyles = styleMap({\n ...(this.color ? { background: this.color } : {}),\n ...(this.textColor ? { color: this.textColor } : {}),\n });\n\n const showIcon = !this.hideIcon && (this.icon || isStatus);\n const iconTpl = showIcon\n ? this.icon\n ? html`<arvea-icon part=\"icon\" class=\"icon\" name=${this.icon} size=\"sm\"></arvea-icon>`\n : html`<span part=\"icon\" class=\"icon\">${unsafeSVG(BADGE_ICONS[this.variant])}</span>`\n : nothing;\n\n return html`\n <span\n part=\"base\"\n class=\"badge ${this.noBg ? 'no-bg' : ''}\"\n style=${this.color || this.textColor ? customStyles : nothing}\n >\n ${iconTpl}\n <span part=\"label\">${this.label}</span>\n </span>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'arvea-badge': ArveaBadge;\n }\n}","import { css } from 'lit';\nimport { tokenStyles } from '../../tokens/tokens.styles';\n\nexport const arveaToggleStyles = [\n tokenStyles,\n css`\n :host {\n display: inline-flex;\n align-items: center;\n gap: 8px;\n }\n\n .track {\n display: flex;\n flex-direction: row;\n align-items: center;\n padding: var(--toggle-padding);\n width: var(--toggle-width);\n height: var(--toggle-height);\n border-radius: var(--toggle-radius);\n background: var(--toggle-unchecked-bg);\n transition: background 0.2s ease;\n position: relative;\n cursor: pointer;\n }\n\n .thumb {\n width: var(--toggle-thumb-size);\n height: var(--toggle-thumb-size);\n background: var(--toggle-thumb-bg);\n border-radius: var(--toggle-radius);\n transition: transform 0.2s ease;\n transform: translateX(0);\n box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.2);\n }\n\n :host([checked]) .track {\n background: var(--toggle-checked-bg);\n justify-content: flex-end;\n }\n\n :host([checked]) .thumb {\n transform: translateX(0);\n }\n\n /* ── Disabled ──────────────────────────────────────── */\n :host([disabled]) {\n opacity: 0.5;\n pointer-events: none;\n }\n\n /* ── Label ─────────────────────────────────────────── */\n .label {\n font-size: 0.875rem;\n font-weight: 500;\n color: #334155;\n user-select: none;\n }\n `,\n];","import { LitElement, html } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { arveaToggleStyles } from './arvea-toggle.styles';\n\n/**\n * @element arvea-toggle\n *\n * @prop {boolean} checked - Whether the toggle is checked\n * @prop {boolean} disabled - Whether the toggle is disabled\n * @prop {string} label - Optional label next to the toggle\n *\n * @fires arvea-change - Fired when the toggle is clicked with detail: { checked: boolean }\n *\n * @example\n * <arvea-toggle></arvea-toggle>\n * <arvea-toggle checked></arvea-toggle>\n * <arvea-toggle disabled></arvea-toggle>\n * <arvea-toggle label=\"Dark mode\"></arvea-toggle>\n */\n@customElement('arvea-toggle')\nexport class ArveaToggle extends LitElement {\n static styles = arveaToggleStyles;\n\n @property({ type: Boolean, reflect: true })\n checked = false;\n\n @property({ type: Boolean, reflect: true })\n disabled = false;\n\n @property({ type: String })\n label = '';\n\n private _handleClick(e: MouseEvent) {\n if (this.disabled) {\n e.stopImmediatePropagation();\n e.preventDefault();\n return;\n }\n this.checked = !this.checked;\n this.dispatchEvent(new Event('input', { bubbles: true, composed: true }));\n this.dispatchEvent(new Event('change', { bubbles: true, composed: true }));\n}\n\nrender() {\n return html`\n <div\n part=\"track\"\n class=\"track\"\n role=\"switch\"\n aria-checked=${this.checked ? 'true' : 'false'}\n tabindex=${this.disabled ? '-1' : '0'}\n @click=${this._handleClick}\n @keydown=${(e: KeyboardEvent) =>\n e.key === ' ' || e.key === 'Enter' ? this._handleClick(e as unknown as MouseEvent) : null}\n >\n <div part=\"thumb\" class=\"thumb\"></div>\n </div>\n ${this.label ? html`<span part=\"label\" class=\"label\">${this.label}</span>` : ''}\n `;\n}\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'arvea-toggle': ArveaToggle;\n }\n}","import { css } from 'lit';\nimport { tokenStyles } from '../../tokens/tokens.styles';\n\nexport const arveaCheckboxStyles = [\n tokenStyles,\n css`\n :host {\n display: inline-flex;\n align-items: center;\n gap: 8px;\n cursor: pointer;\n }\n\n .checkbox {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n width: var(--checkbox-size);\n height: var(--checkbox-size);\n background: var(--checkbox-unchecked-bg);\n background-clip: padding-box;\n border: 1px solid var(--checkbox-border);\n border-radius: var(--checkbox-radius);\n box-sizing: border-box;\n transition: background 0.2s ease, border-color 0.2s ease;\n flex-shrink: 0;\n }\n\n :host([checked]) .checkbox,\n :host([indeterminate]) .checkbox {\n background: var(--checkbox-checked-bg);\n }\n\n :host([disabled]) {\n cursor: not-allowed;\n pointer-events: none;\n }\n\n :host([disabled]) .checkbox {\n background: #E2E8F0;\n border-color: #94A3B8;\n }\n\n :host([disabled][checked]) .checkbox,\n :host([disabled][indeterminate]) .checkbox {\n background: #217B80;\n border-color: #217B80;\n opacity: 0.45;\n }\n\n :host([disabled]) .label {\n color: #94A3B8;\n }\n\n .check-icon,\n .indeterminate-icon {\n visibility: hidden;\n width: var(--checkbox-check-size);\n height: var(--checkbox-check-size);\n flex-shrink: 0;\n }\n\n :host([checked]:not([indeterminate])) .check-icon {\n visibility: visible;\n }\n\n :host([indeterminate]) .indeterminate-icon {\n visibility: visible;\n }\n\n .label {\n font-size: 0.875rem;\n font-weight: 500;\n color: var(--colors-slate-700);\n user-select: none;\n }\n `,\n];","import { LitElement, html } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { arveaCheckboxStyles } from './arvea-checkbox.styles';\n\n/**\n * @element arvea-checkbox\n *\n * @prop {boolean} checked - Whether the checkbox is checked\n * @prop {boolean} indeterminate - Tri-state mixed state (overrides check visual)\n * @prop {boolean} disabled - Whether the checkbox is disabled\n * @prop {string} label - Optional label next to the checkbox\n *\n * @fires arvea-change - { detail: { checked, indeterminate } }\n *\n * @example\n * <arvea-checkbox></arvea-checkbox>\n * <arvea-checkbox checked></arvea-checkbox>\n * <arvea-checkbox indeterminate></arvea-checkbox>\n */\n@customElement('arvea-checkbox')\nexport class ArveaCheckbox extends LitElement {\n static styles = arveaCheckboxStyles;\n\n @property({ type: Boolean, reflect: true })\n checked = false;\n\n @property({ type: Boolean, reflect: true })\n indeterminate = false;\n\n @property({ type: Boolean, reflect: true })\n disabled = false;\n\n @property({ type: String })\n label = '';\n\n private _ariaChecked() {\n if (this.indeterminate) return 'mixed';\n return this.checked ? 'true' : 'false';\n }\n\n private _toggle() {\n if (this.disabled) return;\n if (this.indeterminate) {\n this.indeterminate = false;\n this.checked = true;\n } else {\n this.checked = !this.checked;\n }\n this.dispatchEvent(new Event('input', { bubbles: true, composed: true }));\n this.dispatchEvent(new Event('change', { bubbles: true, composed: true }));\n }\n\n private _handleClick(e: MouseEvent) {\n if (this.disabled) {\n e.stopImmediatePropagation();\n e.preventDefault();\n return;\n }\n this._toggle();\n }\n\n private _handleKey(e: KeyboardEvent) {\n if (e.key === ' ' || e.key === 'Enter') {\n e.preventDefault();\n this._toggle();\n }\n }\n\n render() {\n return html`\n <div\n part=\"base\"\n class=\"checkbox\"\n role=\"checkbox\"\n aria-checked=${this._ariaChecked()}\n tabindex=${this.disabled ? '-1' : '0'}\n @click=${this._handleClick}\n @keydown=${this._handleKey}\n >\n ${this.indeterminate\n ? html`<svg\n class=\"indeterminate-icon\"\n viewBox=\"0 0 12 12\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M2.5 6H9.5\"\n stroke=\"var(--checkbox-check-color)\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n />\n </svg>`\n : html`<svg\n class=\"check-icon\"\n viewBox=\"0 0 12 12\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M2 6L5 9L10 3\"\n stroke=\"var(--checkbox-check-color)\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>`}\n </div>\n ${this.label ? html`<span part=\"label\" class=\"label\">${this.label}</span>` : ''}\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'arvea-checkbox': ArveaCheckbox;\n }\n}\n","import { css } from 'lit';\nimport { tokenStyles } from '../../tokens/tokens.styles';\n\nexport const arveaRadioStyles = [\n tokenStyles,\n css`\n :host {\n display: inline-flex;\n align-items: center;\n gap: var(--radio-gap);\n }\n\n .radio {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n width: var(--radio-size);\n height: var(--radio-size);\n background: var(--radio-unchecked-bg);\n background-clip: padding-box;\n border: 1px solid var(--radio-border);\n border-radius: var(--radio-radius);\n box-sizing: border-box;\n flex-shrink: 0;\n cursor: pointer;\n transition: background 0.2s ease, border-color 0.2s ease;\n }\n\n .dot {\n visibility: hidden;\n width: var(--radio-dot-size);\n height: var(--radio-dot-size);\n background: var(--radio-dot-color);\n border-radius: var(--radio-radius);\n flex-shrink: 0;\n }\n\n :host([checked]) .dot {\n visibility: visible;\n }\n\n :host([disabled]) {\n pointer-events: none;\n }\n\n :host([disabled]:not([checked])) .radio {\n background: #E2E8F0;\n border-color: #94A3B8;\n }\n\n :host([disabled][checked]) .radio {\n background: #FFFFFF;\n border-color: #217B80;\n opacity: 0.45;\n }\n\n :host([disabled][checked]) .dot {\n background: #217B80;\n }\n\n :host([disabled]) .label {\n color: #94A3B8;\n }\n\n .label {\n font-size: var(--radio-label-size);\n font-weight: var(--radio-label-weight);\n color: var(--radio-label-color);\n user-select: none;\n }\n `,\n];","import { LitElement, html } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { arveaRadioStyles } from './arvea-radio.styles';\n\n/**\n * @element arvea-radio\n *\n * @prop {boolean} checked - Whether the radio is checked\n * @prop {boolean} disabled - Whether the radio is disabled\n * @prop {string} label - Optional label next to the radio\n * @prop {string} value - Value of the radio button\n * @prop {string} name - Name of the radio group\n *\n * @example\n * <arvea-radio label=\"Option 1\" name=\"group\" value=\"1\"></arvea-radio>\n * <arvea-radio label=\"Option 2\" name=\"group\" value=\"2\" checked></arvea-radio>\n * <arvea-radio label=\"Option 3\" name=\"group\" value=\"3\" disabled></arvea-radio>\n */\n@customElement('arvea-radio')\nexport class ArveaRadio extends LitElement {\n static styles = arveaRadioStyles;\n\n @property({ type: Boolean, reflect: true })\n checked = false;\n\n @property({ type: Boolean, reflect: true })\n disabled = false;\n\n @property({ type: String })\n label = '';\n\n\n private _handleClick(e: MouseEvent) {\n if (this.disabled) {\n e.stopImmediatePropagation();\n e.preventDefault();\n return;\n }\n if (!this.checked) {\n this.checked = true;\n this.dispatchEvent(new Event('input', { bubbles: true, composed: true }));\n this.dispatchEvent(new Event('change', { bubbles: true, composed: true }));\n }\n }\n\n render() {\n return html`\n <div\n part=\"base\"\n class=\"radio\"\n role=\"radio\"\n aria-checked=${this.checked ? 'true' : 'false'}\n tabindex=${this.disabled ? '-1' : '0'}\n @click=${this._handleClick}\n @keydown=${(e: KeyboardEvent) =>\n e.key === ' ' || e.key === 'Enter'\n ? this._handleClick(e as unknown as MouseEvent)\n : null}\n >\n <div part=\"dot\" class=\"dot\"></div>\n </div>\n ${this.label ? html`<span part=\"label\" class=\"label\">${this.label}</span>` : ''}\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'arvea-radio': ArveaRadio;\n }\n}","import { css } from 'lit';\nimport { tokenStyles } from '../../tokens/tokens.styles';\n\nexport const arveaSliderStyles = [\n tokenStyles,\n css`\n :host {\n display: block;\n width: 100%;\n font-family: inherit;\n }\n\n .field {\n display: flex;\n flex-direction: column;\n gap: 8px;\n }\n\n .head {\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: 12px;\n }\n\n .label {\n font-size: var(--slider-label-size);\n font-weight: var(--slider-label-weight);\n color: var(--slider-label-color);\n }\n\n .value {\n font-size: var(--slider-value-size);\n font-weight: var(--font-weight-semibold);\n color: var(--slider-value-color);\n font-variant-numeric: tabular-nums;\n }\n\n .slider-wrapper {\n position: relative;\n display: flex;\n align-items: center;\n width: 100%;\n height: var(--slider-thumb-size);\n }\n\n .track {\n position: absolute;\n width: 100%;\n height: var(--slider-track-height);\n background: var(--slider-track-bg);\n border-radius: var(--slider-track-radius);\n overflow: hidden;\n }\n\n .fill {\n height: 100%;\n background: var(--slider-track-filled-bg);\n border-radius: var(--slider-track-radius);\n transition: width 0.1s ease;\n }\n\n .thumb {\n position: absolute;\n width: var(--slider-thumb-size);\n height: var(--slider-thumb-size);\n background: var(--slider-thumb-bg);\n border: var(--slider-thumb-border-width) solid var(--slider-thumb-border);\n border-radius: 9999px;\n box-sizing: border-box;\n transform: translateX(-50%);\n transition: left 0.1s ease, box-shadow 0.15s ease;\n z-index: 1;\n pointer-events: none;\n }\n\n :host([focused]) .thumb {\n box-shadow: var(--slider-thumb-shadow-focus);\n }\n\n /* ── Tick marks ─────────────────────────────────────── */\n .ticks {\n position: relative;\n width: 100%;\n height: var(--slider-tick-size);\n margin-top: 2px;\n }\n\n .tick {\n position: absolute;\n top: 0;\n width: 2px;\n height: var(--slider-tick-size);\n background: var(--slider-tick-color);\n border-radius: 1px;\n transform: translateX(-50%);\n }\n\n .scale {\n display: flex;\n justify-content: space-between;\n font-size: var(--font-size-xs);\n color: var(--input-hint-color);\n margin-top: 2px;\n }\n\n /* ── Native input overlay ──────────────────────────── */\n input[type='range'] {\n position: absolute;\n width: 100%;\n height: 100%;\n opacity: 0;\n margin: 0;\n padding: 0;\n z-index: 2;\n cursor: pointer;\n }\n\n /* ── Disabled ──────────────────────────────────────── */\n :host([disabled]) {\n opacity: var(--slider-disabled-opacity);\n pointer-events: none;\n }\n\n :host([disabled]) .thumb {\n cursor: not-allowed;\n }\n `,\n];\n","import { LitElement, html, nothing } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { arveaSliderStyles } from './arvea-slider.styles';\n\n/**\n * @element arvea-slider\n *\n * @prop {number} value - Current value of the slider\n * @prop {number} min - Minimum value (default: 0)\n * @prop {number} max - Maximum value (default: 100)\n * @prop {number} step - Step increment (default: 1)\n * @prop {boolean} disabled - Disables the slider\n * @prop {string} label - Visible label above the track\n * @prop {boolean} showValue - Shows the current value in the head row\n * @prop {string} valuePrefix - Prepended to the displayed value (e.g. '$')\n * @prop {string} valueSuffix - Appended to the displayed value (e.g. '%')\n * @prop {number} tickStep - When >0, draws tick marks at every N units\n * @prop {string} name - Form name\n *\n * @fires arvea-input - Live updates while dragging (detail: { value })\n * @fires arvea-change - When the value is committed (detail: { value })\n * @fires change - Back-compat: dispatched alongside arvea-input\n *\n * @example\n * <arvea-slider label=\"Volume\" show-value value-suffix=\"%\"></arvea-slider>\n * <arvea-slider min=\"-50\" max=\"50\" step=\"5\" tick-step=\"10\"></arvea-slider>\n */\n@customElement('arvea-slider')\nexport class ArveaSlider extends LitElement {\n static styles = arveaSliderStyles;\n\n @property({ type: Number, reflect: true }) value = 0;\n @property({ type: Number }) min = 0;\n @property({ type: Number }) max = 100;\n @property({ type: Number }) step = 1;\n @property({ type: Boolean, reflect: true }) disabled = false;\n @property({ type: String }) label = '';\n @property({ type: Boolean, attribute: 'show-value' }) showValue = false;\n @property({ type: String, attribute: 'value-prefix' }) valuePrefix = '';\n @property({ type: String, attribute: 'value-suffix' }) valueSuffix = '';\n @property({ type: Number, attribute: 'tick-step' }) tickStep = 0;\n @property({ type: String }) name = '';\n\n @state() private _focused = false;\n\n private get _percentage(): number {\n const range = this.max - this.min;\n if (range <= 0) return 0;\n const clamped = Math.max(this.min, Math.min(this.value, this.max));\n return ((clamped - this.min) / range) * 100;\n }\n\n private _ticks(): number[] {\n if (!this.tickStep || this.tickStep <= 0) return [];\n const out: number[] = [];\n for (let v = this.min; v <= this.max; v += this.tickStep) out.push(v);\n return out;\n }\n\n private _tickPercent(v: number): number {\n const range = this.max - this.min;\n if (range <= 0) return 0;\n return ((v - this.min) / range) * 100;\n }\n\n private _formatValue(): string {\n return `${this.valuePrefix}${this.value}${this.valueSuffix}`;\n }\n\n private _handleInput = (e: Event) => {\n if (this.disabled) return;\n const input = e.target as HTMLInputElement;\n this.value = Number(input.value);\n\n this.dispatchEvent(new Event('input', { bubbles: true, composed: true }));\n };\n\n private _handleChange = () => {\n this.dispatchEvent(new Event('change', { bubbles: true, composed: true }));\n };\n\n private _handleFocus = () => {\n this._focused = true;\n this.setAttribute('focused', '');\n };\n\n private _handleBlur = () => {\n this._focused = false;\n this.removeAttribute('focused');\n };\n\n render() {\n const pct = this._percentage;\n const showHead = this.label || this.showValue;\n const ticks = this._ticks();\n\n return html`\n <div class=\"field\">\n ${showHead\n ? html`\n <div class=\"head\">\n <span class=\"label\">${this.label}</span>\n ${this.showValue\n ? html`<span class=\"value\">${this._formatValue()}</span>`\n : nothing}\n </div>\n `\n : nothing}\n\n <div class=\"slider-wrapper\">\n <div part=\"track\" class=\"track\">\n <div part=\"fill\" class=\"fill\" style=\"width: ${pct}%\"></div>\n </div>\n <div part=\"thumb\" class=\"thumb\" style=\"left: ${pct}%\"></div>\n <input\n type=\"range\"\n min=${this.min}\n max=${this.max}\n step=${this.step}\n name=${this.name || nothing}\n .value=${String(this.value)}\n aria-label=${this.label || 'Slider'}\n aria-valuemin=${this.min}\n aria-valuemax=${this.max}\n aria-valuenow=${this.value}\n aria-valuetext=${this._formatValue()}\n ?disabled=${this.disabled}\n @input=${this._handleInput}\n @change=${this._handleChange}\n @focus=${this._handleFocus}\n @blur=${this._handleBlur}\n />\n </div>\n\n ${ticks.length\n ? html`\n <div class=\"ticks\" aria-hidden=\"true\">\n ${ticks.map(\n (t) => html`\n <span\n class=\"tick\"\n style=\"left: ${this._tickPercent(t)}%\"\n ></span>\n `,\n )}\n </div>\n `\n : nothing}\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'arvea-slider': ArveaSlider;\n }\n}\n","import { css } from 'lit';\nimport { tokenStyles } from '../../tokens/tokens.styles';\n\nexport const arveaInputStyles = [\n tokenStyles,\n css`\n :host {\n display: block;\n font-family: inherit;\n width: 100%;\n }\n\n .field {\n position: relative;\n display: flex;\n flex-direction: column;\n gap: 6px;\n }\n\n .label {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n font-size: var(--input-label-size);\n font-weight: var(--input-label-weight);\n color: var(--input-label-color);\n }\n\n .label.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n }\n\n .optional {\n color: var(--input-hint-color);\n font-weight: var(--font-weight-regular);\n }\n\n .required {\n color: var(--input-border-invalid);\n }\n\n .wrapper {\n position: relative;\n display: inline-flex;\n isolation: isolate;\n align-items: center;\n width: 100%;\n }\n\n .prefix,\n .suffix {\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n display: inline-flex;\n align-items: center;\n justify-content: center;\n color: var(--input-hint-color);\n pointer-events: none;\n }\n\n .suffix ::slotted(*) {\n pointer-events: auto;\n }\n\n .prefix {\n left: 10px;\n }\n\n .suffix {\n right: 10px;\n }\n\n input {\n width: 100%;\n height: var(--input-height);\n padding: var(--input-padding-y) var(--input-padding-x);\n font-family: inherit;\n font-size: var(--input-font-size);\n color: var(--input-text);\n background: var(--input-bg);\n border: 1px solid var(--input-border);\n border-radius: var(--input-radius);\n outline: none;\n transition: border-color 0.15s ease, box-shadow 0.15s ease;\n box-sizing: border-box;\n }\n\n :host([textalign='right']) input {\n text-align: right;\n }\n\n .has-prefix input {\n padding-inline-start: 36px;\n }\n\n .has-suffix input {\n padding-inline-end: 36px;\n }\n\n /* auto status icon reserves right padding when no user suffix */\n .has-auto-icon input {\n padding-inline-end: 36px;\n }\n\n .auto-suffix {\n position: absolute;\n right: 10px;\n top: 50%;\n transform: translateY(-50%);\n display: inline-flex;\n align-items: center;\n pointer-events: none;\n }\n\n .auto-suffix--clear {\n pointer-events: auto;\n cursor: pointer;\n background: none;\n border: none;\n padding: 0;\n line-height: 0;\n }\n\n .auto-suffix--clear:focus-visible {\n outline: 2px solid var(--input-border-focus);\n outline-offset: 2px;\n border-radius: 50%;\n }\n\n .auto-suffix svg {\n width: 18px;\n height: 18px;\n }\n\n :host([invalid]) .auto-suffix { color: var(--input-hint-color-invalid); }\n :host([show-valid]) .auto-suffix { color: var(--input-hint-color-valid); }\n :host([has-warning]) .auto-suffix { color: var(--input-hint-color-warning); }\n\n input::placeholder {\n color: var(--input-placeholder);\n }\n\n input:hover:not(:disabled):not(:focus) {\n border-color: var(--input-border-hover);\n }\n\n\n :host([invalid]) input {\n border-color: var(--input-border-invalid);\n }\n :host([invalid]) input:focus-visible {\n box-shadow: 0 0 0 3px rgba(220, 38, 38, 0.15);\n }\n\n :host([has-warning]) input {\n border-color: var(--input-border-warning);\n }\n\n :host([show-valid]) input {\n border-color: var(--input-border-valid);\n }\n\n input:disabled,\n :host([disabled]) input {\n background: var(--input-bg-disabled);\n color: var(--input-placeholder);\n cursor: not-allowed;\n }\n\n input[readonly] {\n background: var(--input-bg-disabled);\n }\n\n .hint {\n flex: 1;\n font-size: var(--input-hint-size);\n color: var(--input-hint-color);\n min-height: 1em;\n text-align: start;\n white-space: nowrap;\n }\n :host([invalid]) .hint {\n color: var(--input-hint-color-invalid);\n }\n :host([has-warning]) .hint {\n color: var(--input-hint-color-warning);\n }\n :host([show-valid]) .hint {\n color: var(--input-hint-color-valid);\n }\n\n /* ── Phone prefix ─────────────────────────────────── */\n .wrapper.has-phone {\n display: flex;\n align-items: stretch;\n height: var(--input-height);\n border: 1px solid var(--input-border);\n border-radius: var(--input-radius);\n overflow: visible;\n background: var(--input-bg);\n transition: border-color 0.15s ease, box-shadow 0.15s ease;\n }\n\n .wrapper.has-phone:hover:not(:focus-within) {\n border-color: var(--input-border-hover);\n }\n\n .wrapper.has-phone:focus-within {\n border-color: var(--input-border-focus);\n box-shadow: var(--input-shadow-focus);\n }\n\n :host([invalid]) .wrapper.has-phone {\n border-color: var(--input-border-invalid);\n }\n\n .wrapper.has-phone input {\n border: none !important;\n border-radius: 0 !important;\n box-shadow: none !important;\n background: transparent;\n flex: 1;\n min-width: 0;\n width: auto;\n height: 100%;\n padding: var(--input-padding-y) var(--input-padding-x);\n }\n\n .wrapper.has-phone input:focus-visible {\n border: none !important;\n box-shadow: none !important;\n outline: none;\n }\n\n .phone-prefix {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 0 12px;\n border-right: 1px solid var(--input-border);\n border-radius: var(--input-radius) 0 0 var(--input-radius);\n background: var(--input-bg-disabled);\n flex-shrink: 0;\n user-select: none;\n }\n\n .phone-prefix--selectable {\n cursor: pointer;\n }\n\n .phone-prefix--selectable:hover {\n background: #e9eaeb;\n }\n\n .phone-chevron {\n width: 10px;\n height: 6px;\n color: var(--input-hint-color);\n transition: transform 0.15s ease;\n }\n\n .phone-chevron--open {\n transform: rotate(180deg);\n }\n\n .country-dropdown {\n position: absolute;\n top: calc(var(--input-height) + 4px);\n left: 0;\n right: 0;\n z-index: 100;\n list-style: none;\n margin: 0;\n padding: 4px 0;\n background: #fff;\n border: 1px solid var(--input-border);\n border-radius: 8px;\n box-shadow: 0 8px 24px rgba(0, 0, 0, 0.12);\n max-height: 220px;\n overflow-y: auto;\n }\n\n .country-option {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 9px 14px;\n cursor: pointer;\n font-size: 0.875rem;\n color: var(--input-text);\n transition: background 0.1s ease;\n }\n\n .country-option:hover {\n background: #f5f5f5;\n }\n\n .country-option--active {\n background: #f0f0f0;\n font-weight: 600;\n }\n\n .country-flag {\n width: 22px;\n height: 15px;\n object-fit: cover;\n border-radius: 2px;\n flex-shrink: 0;\n }\n\n .country-name {\n color: var(--input-text);\n }\n\n .country-dial {\n color: var(--input-hint-color);\n font-size: 0.875rem;\n }\n\n .phone-flag {\n width: 20px;\n height: 14px;\n object-fit: cover;\n border-radius: 2px;\n flex-shrink: 0;\n }\n\n .phone-dial {\n font-size: var(--input-font-size);\n font-weight: 500;\n color: var(--input-text);\n white-space: nowrap;\n }\n\n /* ── Hints row ─────────────────────────────────────── */\n .hints-row {\n display: flex;\n align-items: center;\n justify-content: space-between;\n min-height: 1em;\n }\n\n .hint-end {\n color: var(--input-hint-color);\n text-align: right;\n }\n\n /* ── Underline variant ─────────────────────────────── */\n :host([variant='underline']) input {\n background: transparent;\n border: none;\n border-bottom: 1.5px solid var(--input-border);\n border-radius: 0;\n padding-inline: 0;\n box-shadow: none;\n }\n\n :host([variant='underline']) input:hover:not(:disabled):not(:focus) {\n border-bottom-color: var(--input-border-hover);\n }\n\n :host([variant='underline']) input:focus-visible {\n border-bottom-color: var(--input-border-focus);\n box-shadow: none;\n }\n\n :host([variant='underline'][invalid]) input {\n border-bottom-color: var(--input-border-invalid);\n }\n\n :host([variant='underline']) .prefix { left: 0; }\n :host([variant='underline']) .suffix { right: 0; }\n\n :host([variant='underline']) .has-prefix input { padding-inline-start: 28px; }\n :host([variant='underline']) .has-suffix input { padding-inline-end: 28px; }\n\n `,\n];\n","import { LitElement, html, nothing } from 'lit';\nimport { customElement, property, query, state } from 'lit/decorators.js';\nimport { arveaInputStyles } from './arvea-input.styles';\nimport type { ArveaInputType, ArveaInputTextAlign, ArveaInputVariant, CountryOption } from './arvea-input.types';\n\n/**\n * @element arvea-input\n *\n * @prop {string} label - Visible label for the input\n * @prop {boolean} hideLabel - Visually hides the label (still accessible)\n * @prop {string} type - text | email | password | number | tel | url | search\n * @prop {string} name - Form name\n * @prop {string} value - Current value\n * @prop {string} placeholder - Placeholder text\n * @prop {boolean} disabled\n * @prop {boolean} readonly\n * @prop {boolean} required\n * @prop {boolean} invalid - Triggers error styles\n * @prop {boolean} hasWarning - Triggers warning styles\n * @prop {boolean} showValid - Triggers valid styles\n * @prop {string} validationHint - Helper / error message below the input\n * @prop {string} optionalLabel - Text shown next to label when not required\n * @prop {'left'|'right'} textAlign\n * @prop {CountryOption[]} countries - List of country options for phone prefix dropdown\n *\n * @slot prefix - Left-aligned content (icon)\n * @slot suffix - Right-aligned content (icon)\n *\n * @fires arvea-input - When value changes (detail: { value })\n * @fires arvea-change - When the input is committed (detail: { value })\n * @fires arvea-country-change - When a country is selected (detail: CountryOption)\n */\n@customElement('arvea-input')\nexport class ArveaInput extends LitElement {\n static styles = arveaInputStyles;\n\n @property({ type: String }) label = '';\n @property({ type: Boolean, attribute: 'hide-label' }) hideLabel = false;\n @property({ type: String }) type: ArveaInputType = 'text';\n @property({ type: String, reflect: true }) variant: ArveaInputVariant = 'default';\n @property({ type: String }) name = '';\n @property({ type: String }) value = '';\n @property({ type: String }) placeholder = '';\n @property({ type: Boolean, reflect: true }) disabled = false;\n @property({ type: Boolean, reflect: true }) readonly = false;\n @property({ type: Boolean, reflect: true }) required = false;\n @property({ type: Boolean, reflect: true }) invalid = false;\n @property({ type: Boolean, reflect: true, attribute: 'has-warning' })\n hasWarning = false;\n @property({ type: Boolean, reflect: true, attribute: 'show-valid' })\n showValid = false;\n @property({ type: String, attribute: 'validation-hint' }) validationHint = '';\n @property({ type: String, attribute: 'optional-label' }) optionalLabel = '';\n @property({ type: String, reflect: true }) textAlign: ArveaInputTextAlign = 'left';\n\n @property({ type: String, attribute: 'flag-src' }) flagSrc = '';\n @property({ type: String, attribute: 'dial-code' }) dialCode = '';\n @property({ type: String, attribute: 'hint-end' }) hintEnd = '';\n @property({ type: Boolean, attribute: 'digits-only' }) digitsOnly = false;\n @property({ attribute: false }) countries: CountryOption[] = [];\n\n @state() private _open = false;\n\n @query('input') private _input!: HTMLInputElement;\n\n private _hasPrefix = false;\n private _hasSuffix = false;\n private _closeHandler: ((e: Event) => void) | null = null;\n\n private _onInput = (e: Event) => {\n const target = e.target as HTMLInputElement;\n if (this.digitsOnly) {\n const cleaned = target.value.replace(/\\D/g, '');\n if (target.value !== cleaned) {\n const pos = target.selectionStart ?? 0;\n const removed = target.value.length - cleaned.length;\n target.value = cleaned;\n target.setSelectionRange(Math.max(0, pos - removed), Math.max(0, pos - removed));\n }\n this.value = cleaned;\n } else {\n this.value = target.value;\n }\n this.dispatchEvent(\n new CustomEvent('arvea-input', {\n detail: { value: this.value },\n bubbles: true,\n composed: true,\n }),\n );\n };\n\n private _onChange = () => {\n // Native `change` so Angular's `(change)` binds on the host.\n this.dispatchEvent(new Event('change', { bubbles: true, composed: true }));\n };\n\n private _onSlotChange = (slotName: 'prefix' | 'suffix') => (e: Event) => {\n const nodes = (e.target as HTMLSlotElement).assignedNodes({\n flatten: true,\n });\n const has = nodes.some(\n (n) =>\n n.nodeType === Node.ELEMENT_NODE ||\n (n.nodeType === Node.TEXT_NODE && n.textContent?.trim()),\n );\n if (slotName === 'prefix') this._hasPrefix = has;\n else this._hasSuffix = has;\n this.requestUpdate();\n };\n\n /** Focuses the inner input. */\n focus() {\n this._input?.focus();\n }\n\n private _clear() {\n this.value = '';\n this._input.value = '';\n this.dispatchEvent(\n new CustomEvent('arvea-input', {\n detail: { value: '' },\n bubbles: true,\n composed: true,\n }),\n );\n this._input.focus();\n }\n\n private _toggleDropdown() {\n this._open = !this._open;\n if (this._open) {\n this._closeHandler = (e: Event) => {\n if (!e.composedPath().includes(this)) {\n this._open = false;\n this._removeCloseHandler();\n }\n };\n document.addEventListener('click', this._closeHandler);\n } else {\n this._removeCloseHandler();\n }\n }\n\n private _removeCloseHandler() {\n if (this._closeHandler) {\n document.removeEventListener('click', this._closeHandler);\n this._closeHandler = null;\n }\n }\n\n private _selectCountry(country: CountryOption) {\n this.flagSrc = country.flag;\n this.dialCode = country.dialCode;\n this._open = false;\n this._removeCloseHandler();\n this.dispatchEvent(\n new CustomEvent('arvea-country-change', {\n detail: country,\n bubbles: true,\n composed: true,\n }),\n );\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n this._removeCloseHandler();\n }\n\n private _renderAutoIcon() {\n if (this._hasSuffix) return nothing;\n if (this.invalid) return html`<button type=\"button\" class=\"auto-suffix auto-suffix--clear\" aria-label=\"Effacer\" @click=${this._clear}>\n <svg viewBox=\"0 0 20 20\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <circle cx=\"10\" cy=\"10\" r=\"8.25\"/>\n <path d=\"m7 7 6 6M13 7l-6 6\"/>\n </svg>\n </button>`;\n if (this.showValid) return html`<span class=\"auto-suffix\" aria-hidden=\"true\">\n <svg viewBox=\"0 0 20 20\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <circle cx=\"10\" cy=\"10\" r=\"8.25\"/>\n <path d=\"m6.5 10.5 2.5 2.5 4.5-5\"/>\n </svg>\n </span>`;\n if (this.hasWarning) return html`<span class=\"auto-suffix\" aria-hidden=\"true\">\n <svg viewBox=\"0 0 20 20\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path d=\"M9.13 3.18 2.37 14.5A1 1 0 0 0 3.24 16h13.52a1 1 0 0 0 .87-1.5L10.87 3.18a1 1 0 0 0-1.74 0Z\"/>\n <path d=\"M10 8v3.5M10 13.5v.5\"/>\n </svg>\n </span>`;\n return nothing;\n }\n\n private _renderCountryDropdown() {\n if (!this._open || !this.countries.length) return nothing;\n return html`\n <ul class=\"country-dropdown\" role=\"listbox\">\n ${this.countries.map(c => html`\n <li\n class=\"country-option ${c.dialCode === this.dialCode ? 'country-option--active' : ''}\"\n role=\"option\"\n aria-selected=${c.dialCode === this.dialCode}\n @click=${() => this._selectCountry(c)}\n >\n <img class=\"country-flag\" src=${c.flag} alt=\"\" />\n <span class=\"country-name\">${c.name}</span>\n <span class=\"country-dial\">${c.dialCode}</span>\n </li>\n `)}\n </ul>\n `;\n }\n\n render() {\n const hasSuffix = this._hasSuffix;\n const showHint = !!this.validationHint;\n const hasPhone = !!(this.flagSrc || this.dialCode);\n const hasAutoIcon = !hasSuffix && (this.invalid || this.showValid || this.hasWarning);\n const hasCountries = this.countries.length > 0;\n\n return html`\n <div part=\"field\" class=\"field\">\n ${this.label\n ? html`\n <label part=\"label\" class=\"label ${this.hideLabel ? 'sr-only' : ''}\">\n ${this.label}\n ${this.required\n ? html`<span class=\"required\" aria-hidden=\"true\">*</span>`\n : this.optionalLabel\n ? html`<span class=\"optional\">(${this.optionalLabel})</span>`\n : nothing}\n </label>\n `\n : nothing}\n <div\n part=\"wrapper\"\n class=\"wrapper ${this._hasPrefix ? 'has-prefix' : ''} ${hasSuffix ? 'has-suffix' : ''} ${hasPhone ? 'has-phone' : ''} ${hasAutoIcon ? 'has-auto-icon' : ''}\"\n >\n ${hasPhone ? html`\n <div\n part=\"phone-prefix\"\n class=\"phone-prefix ${hasCountries ? 'phone-prefix--selectable' : ''}\"\n @click=${hasCountries ? this._toggleDropdown : nothing}\n >\n ${this.flagSrc ? html`<img class=\"phone-flag\" src=${this.flagSrc} alt=\"\" />` : nothing}\n ${this.dialCode ? html`<span class=\"phone-dial\">${this.dialCode}</span>` : nothing}\n ${hasCountries ? html`\n <svg class=\"phone-chevron ${this._open ? 'phone-chevron--open' : ''}\" viewBox=\"0 0 10 6\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path d=\"M1 1l4 4 4-4\"/>\n </svg>\n ` : nothing}\n </div>\n ` : html`\n <span part=\"prefix\" class=\"prefix\">\n <slot name=\"prefix\" @slotchange=${this._onSlotChange('prefix')}></slot>\n </span>\n `}\n <input\n part=\"input\"\n .value=${this.value}\n type=${this.type}\n name=${this.name || nothing}\n placeholder=${this.placeholder || nothing}\n ?disabled=${this.disabled}\n ?readonly=${this.readonly}\n ?required=${this.required}\n aria-invalid=${this.invalid ? 'true' : 'false'}\n aria-label=${this.hideLabel && this.label ? this.label : nothing}\n @input=${this._onInput}\n @change=${this._onChange}\n />\n <span part=\"suffix\" class=\"suffix\">\n <slot name=\"suffix\" @slotchange=${this._onSlotChange('suffix')}></slot>\n </span>\n ${this._renderAutoIcon()}\n </div>\n ${this._renderCountryDropdown()}\n ${showHint || this.hintEnd ? html`\n <div class=\"hints-row\">\n ${showHint ? html`<span part=\"hint\" class=\"hint\">${this.validationHint}</span>` : html`<span></span>`}\n ${this.hintEnd ? html`<span part=\"hint-end\" class=\"hint hint-end\">${this.hintEnd}</span>` : nothing}\n </div>` : nothing}\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'arvea-input': ArveaInput;\n }\n}\n","import { css } from 'lit';\nimport { tokenStyles } from '../../tokens/tokens.styles';\n\nexport const arveaPhoneNumberStyles = [\n tokenStyles,\n css`\n :host {\n display: block;\n font-family: inherit;\n width: 100%;\n }\n\n .field {\n display: flex;\n flex-direction: column;\n gap: 6px;\n position: relative;\n }\n\n .label {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n font-size: var(--input-label-size);\n font-weight: var(--input-label-weight);\n color: var(--input-label-color);\n }\n .label.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n }\n .required {\n color: var(--input-border-invalid, #ef4444);\n }\n\n /* ── Control ──────────────────────────────────────────── */\n .control-wrap {\n position: relative;\n }\n .control {\n display: flex;\n align-items: stretch;\n height: var(--input-height, 38px);\n background: var(--input-bg, #fff);\n border: 1px solid var(--input-border, #e2e8f0);\n border-radius: var(--input-radius, 6px);\n overflow: hidden;\n transition: border-color 0.15s ease, box-shadow 0.15s ease;\n }\n .control:focus-within {\n border-color: var(--input-border-focus, #3b82f6);\n box-shadow: var(--input-shadow-focus);\n }\n :host([invalid]) .control {\n border-color: var(--input-border-invalid, #ef4444);\n }\n :host([disabled]) .control {\n background: var(--input-bg-disabled, #f1f5f9);\n cursor: not-allowed;\n }\n\n /* ── Prefix (flag + dial) ─────────────────────────────── */\n .prefix {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 0 10px;\n border-right: 1px solid var(--input-border, #e2e8f0);\n background: var(--input-bg-disabled, #f8fafc);\n cursor: pointer;\n user-select: none;\n flex-shrink: 0;\n }\n .prefix:hover {\n background: #eef2f6;\n }\n :host([disabled]) .prefix {\n cursor: not-allowed;\n pointer-events: none;\n }\n .flag {\n width: 20px;\n height: 14px;\n object-fit: cover;\n border-radius: 2px;\n flex-shrink: 0;\n }\n .dial {\n font-size: 0.875rem;\n color: var(--input-text, #0f172a);\n white-space: nowrap;\n }\n .chevron {\n width: 10px;\n height: 6px;\n color: var(--input-hint-color, #94a3b8);\n transition: transform 0.15s ease;\n flex-shrink: 0;\n }\n .chevron--open {\n transform: rotate(180deg);\n }\n\n /* ── Number input ─────────────────────────────────────── */\n input.number {\n flex: 1 1 auto;\n min-width: 0;\n border: none;\n outline: none;\n background: transparent;\n padding: 0 12px;\n font: inherit;\n font-size: var(--input-font-size, 0.875rem);\n color: var(--input-text, #0f172a);\n }\n input.number::placeholder {\n color: var(--input-placeholder, #94a3b8);\n }\n input.number:disabled {\n cursor: not-allowed;\n }\n\n /* ── Popup ────────────────────────────────────────────── */\n .popup {\n position: absolute;\n top: calc(100% + 4px);\n left: 0;\n right: 0;\n z-index: var(--select-popup-z, 9999);\n /* width: 320px; */\n /* max-width: 90vw; */\n width: 100%;\n background: #fff;\n border: 1px solid var(--input-border, #e2e8f0);\n border-radius: 8px;\n box-shadow: 0 12px 32px rgba(15, 23, 42, 0.16);\n overflow: hidden;\n }\n .search {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 10px;\n border-bottom: 1px solid var(--input-border, #e2e8f0);\n }\n .search svg {\n width: 16px;\n height: 16px;\n color: var(--input-hint-color, #94a3b8);\n flex-shrink: 0;\n }\n .search input {\n flex: 1 1 auto;\n min-width: 0;\n border: none;\n outline: none;\n background: transparent;\n font: inherit;\n font-size: 0.875rem;\n color: var(--input-text, #0f172a);\n }\n .list {\n list-style: none;\n margin: 0;\n padding: 4px 0;\n max-height: 260px;\n overflow-y: auto;\n }\n .option {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 8px 12px;\n cursor: pointer;\n font-size: 0.875rem;\n color: var(--input-text, #0f172a);\n }\n .option:hover,\n .option[data-active='true'] {\n background: var(--colors-slate-100, #f1f5f9);\n }\n .option--selected {\n font-weight: 600;\n }\n .option .name {\n flex: 1 1 auto;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n .option .opt-dial {\n color: var(--input-hint-color, #94a3b8);\n flex-shrink: 0;\n /* keep dial codes left-to-right even when the list is RTL (Arabic) */\n direction: ltr;\n unicode-bidi: isolate;\n }\n .empty {\n padding: 14px 12px;\n text-align: center;\n color: var(--input-hint-color, #94a3b8);\n font-size: 0.875rem;\n }\n\n /* ── Hint ─────────────────────────────────────────────── */\n .hint {\n font-size: var(--input-hint-size, 0.75rem);\n color: var(--input-hint-color, #94a3b8);\n }\n :host([invalid]) .hint {\n color: var(--input-hint-color-invalid, #ef4444);\n }\n `,\n];\n","/**\n * @file countries.ts\n * @description Full country dataset for arvea-phone-number.\n *\n * - `iso2` : lowercase ISO 3166-1 alpha-2 code (used for the flag image).\n * - `name` : English country name.\n * - `dialCode` : international calling code (without the leading \"+\").\n * - `maxLength`: maximum national significant number length (digits, excluding\n * the dial code) — based on intl-tel-input / libphonenumber\n * metadata. e.g. Tunisia = 8, Algeria = 9.\n *\n * Flags are served from https://flagcdn.com/w20/<iso2>.png (same source the\n * rest of the kit already uses).\n */\n\nexport interface PhoneCountry {\n iso2: string;\n name: string;\n dialCode: string;\n /** Maximum national number length (digits). Used as input cap and, when minLength is absent, as the exact valid length. */\n maxLength: number;\n /** Minimum national number length (digits). Only set for countries where valid numbers are shorter than maxLength. */\n minLength?: number;\n}\n\n/** Supported display languages for country names. */\nexport type PhoneLanguage = 'en' | 'fr' | 'ar';\n\nexport const flagUrl = (iso2: string): string =>\n `https://flagcdn.com/w20/${iso2}.png`;\n\nexport const COUNTRIES: PhoneCountry[] = [\n { iso2: 'af', name: 'Afghanistan', dialCode: '93', maxLength: 9 },\n { iso2: 'al', name: 'Albania', dialCode: '355', maxLength: 9 },\n { iso2: 'dz', name: 'Algeria', dialCode: '213', maxLength: 9 },\n { iso2: 'as', name: 'American Samoa', dialCode: '1', maxLength: 10 },\n { iso2: 'ad', name: 'Andorra', dialCode: '376', maxLength: 6 },\n { iso2: 'ao', name: 'Angola', dialCode: '244', maxLength: 9 },\n { iso2: 'ai', name: 'Anguilla', dialCode: '1', maxLength: 10 },\n { iso2: 'ag', name: 'Antigua and Barbuda', dialCode: '1', maxLength: 10 },\n { iso2: 'ar', name: 'Argentina', dialCode: '54', maxLength: 10 },\n { iso2: 'am', name: 'Armenia', dialCode: '374', maxLength: 8 },\n { iso2: 'aw', name: 'Aruba', dialCode: '297', maxLength: 7 },\n { iso2: 'au', name: 'Australia', dialCode: '61', maxLength: 9 },\n { iso2: 'at', name: 'Austria', dialCode: '43', maxLength: 13, minLength: 4 },\n { iso2: 'az', name: 'Azerbaijan', dialCode: '994', maxLength: 9 },\n { iso2: 'bs', name: 'Bahamas', dialCode: '1', maxLength: 10 },\n { iso2: 'bh', name: 'Bahrain', dialCode: '973', maxLength: 8 },\n { iso2: 'bd', name: 'Bangladesh', dialCode: '880', maxLength: 10 },\n { iso2: 'bb', name: 'Barbados', dialCode: '1', maxLength: 10 },\n { iso2: 'by', name: 'Belarus', dialCode: '375', maxLength: 9 },\n { iso2: 'be', name: 'Belgium', dialCode: '32', maxLength: 9 },\n { iso2: 'bz', name: 'Belize', dialCode: '501', maxLength: 7 },\n { iso2: 'bj', name: 'Benin', dialCode: '229', maxLength: 8 },\n { iso2: 'bm', name: 'Bermuda', dialCode: '1', maxLength: 10 },\n { iso2: 'bt', name: 'Bhutan', dialCode: '975', maxLength: 8 },\n { iso2: 'bo', name: 'Bolivia', dialCode: '591', maxLength: 8 },\n { iso2: 'ba', name: 'Bosnia and Herzegovina', dialCode: '387', maxLength: 8 },\n { iso2: 'bw', name: 'Botswana', dialCode: '267', maxLength: 8 },\n { iso2: 'br', name: 'Brazil', dialCode: '55', maxLength: 11 },\n { iso2: 'io', name: 'British Indian Ocean Territory', dialCode: '246', maxLength: 7 },\n { iso2: 'vg', name: 'British Virgin Islands', dialCode: '1', maxLength: 10 },\n { iso2: 'bn', name: 'Brunei', dialCode: '673', maxLength: 7 },\n { iso2: 'bg', name: 'Bulgaria', dialCode: '359', maxLength: 9 },\n { iso2: 'bf', name: 'Burkina Faso', dialCode: '226', maxLength: 8 },\n { iso2: 'bi', name: 'Burundi', dialCode: '257', maxLength: 8 },\n { iso2: 'kh', name: 'Cambodia', dialCode: '855', maxLength: 9 },\n { iso2: 'cm', name: 'Cameroon', dialCode: '237', maxLength: 9 },\n { iso2: 'ca', name: 'Canada', dialCode: '1', maxLength: 10 },\n { iso2: 'cv', name: 'Cape Verde', dialCode: '238', maxLength: 7 },\n { iso2: 'ky', name: 'Cayman Islands', dialCode: '1', maxLength: 10 },\n { iso2: 'cf', name: 'Central African Republic', dialCode: '236', maxLength: 8 },\n { iso2: 'td', name: 'Chad', dialCode: '235', maxLength: 8 },\n { iso2: 'cl', name: 'Chile', dialCode: '56', maxLength: 9 },\n { iso2: 'cn', name: 'China', dialCode: '86', maxLength: 11 },\n { iso2: 'co', name: 'Colombia', dialCode: '57', maxLength: 10 },\n { iso2: 'km', name: 'Comoros', dialCode: '269', maxLength: 7 },\n { iso2: 'cd', name: 'Congo (DRC)', dialCode: '243', maxLength: 9 },\n { iso2: 'cg', name: 'Congo (Republic)', dialCode: '242', maxLength: 9 },\n { iso2: 'ck', name: 'Cook Islands', dialCode: '682', maxLength: 5 },\n { iso2: 'cr', name: 'Costa Rica', dialCode: '506', maxLength: 8 },\n { iso2: 'ci', name: \"Côte d'Ivoire\", dialCode: '225', maxLength: 10 },\n { iso2: 'hr', name: 'Croatia', dialCode: '385', maxLength: 9 },\n { iso2: 'cu', name: 'Cuba', dialCode: '53', maxLength: 8 },\n { iso2: 'cw', name: 'Curaçao', dialCode: '599', maxLength: 7 },\n { iso2: 'cy', name: 'Cyprus', dialCode: '357', maxLength: 8 },\n { iso2: 'cz', name: 'Czech Republic', dialCode: '420', maxLength: 9 },\n { iso2: 'dk', name: 'Denmark', dialCode: '45', maxLength: 8 },\n { iso2: 'dj', name: 'Djibouti', dialCode: '253', maxLength: 8 },\n { iso2: 'dm', name: 'Dominica', dialCode: '1', maxLength: 10 },\n { iso2: 'do', name: 'Dominican Republic', dialCode: '1', maxLength: 10 },\n { iso2: 'ec', name: 'Ecuador', dialCode: '593', maxLength: 9 },\n { iso2: 'eg', name: 'Egypt', dialCode: '20', maxLength: 10 },\n { iso2: 'sv', name: 'El Salvador', dialCode: '503', maxLength: 8 },\n { iso2: 'gq', name: 'Equatorial Guinea', dialCode: '240', maxLength: 9 },\n { iso2: 'er', name: 'Eritrea', dialCode: '291', maxLength: 7 },\n { iso2: 'ee', name: 'Estonia', dialCode: '372', maxLength: 8 },\n { iso2: 'sz', name: 'Eswatini', dialCode: '268', maxLength: 8 },\n { iso2: 'et', name: 'Ethiopia', dialCode: '251', maxLength: 9 },\n { iso2: 'fk', name: 'Falkland Islands', dialCode: '500', maxLength: 5 },\n { iso2: 'fo', name: 'Faroe Islands', dialCode: '298', maxLength: 6 },\n { iso2: 'fj', name: 'Fiji', dialCode: '679', maxLength: 7 },\n { iso2: 'fi', name: 'Finland', dialCode: '358', maxLength: 12, minLength: 5 },\n { iso2: 'fr', name: 'France', dialCode: '33', maxLength: 9 },\n { iso2: 'gf', name: 'French Guiana', dialCode: '594', maxLength: 9 },\n { iso2: 'pf', name: 'French Polynesia', dialCode: '689', maxLength: 8 },\n { iso2: 'ga', name: 'Gabon', dialCode: '241', maxLength: 8 },\n { iso2: 'gm', name: 'Gambia', dialCode: '220', maxLength: 7 },\n { iso2: 'ge', name: 'Georgia', dialCode: '995', maxLength: 9 },\n { iso2: 'de', name: 'Germany', dialCode: '49', maxLength: 11, minLength: 3 },\n { iso2: 'gh', name: 'Ghana', dialCode: '233', maxLength: 9 },\n { iso2: 'gi', name: 'Gibraltar', dialCode: '350', maxLength: 8 },\n { iso2: 'gr', name: 'Greece', dialCode: '30', maxLength: 10 },\n { iso2: 'gl', name: 'Greenland', dialCode: '299', maxLength: 6 },\n { iso2: 'gd', name: 'Grenada', dialCode: '1', maxLength: 10 },\n { iso2: 'gp', name: 'Guadeloupe', dialCode: '590', maxLength: 9 },\n { iso2: 'gu', name: 'Guam', dialCode: '1', maxLength: 10 },\n { iso2: 'gt', name: 'Guatemala', dialCode: '502', maxLength: 8 },\n { iso2: 'gn', name: 'Guinea', dialCode: '224', maxLength: 9 },\n { iso2: 'gw', name: 'Guinea-Bissau', dialCode: '245', maxLength: 7 },\n { iso2: 'gy', name: 'Guyana', dialCode: '592', maxLength: 7 },\n { iso2: 'ht', name: 'Haiti', dialCode: '509', maxLength: 8 },\n { iso2: 'hn', name: 'Honduras', dialCode: '504', maxLength: 8 },\n { iso2: 'hk', name: 'Hong Kong', dialCode: '852', maxLength: 8 },\n { iso2: 'hu', name: 'Hungary', dialCode: '36', maxLength: 9 },\n { iso2: 'is', name: 'Iceland', dialCode: '354', maxLength: 9 },\n { iso2: 'in', name: 'India', dialCode: '91', maxLength: 10 },\n { iso2: 'id', name: 'Indonesia', dialCode: '62', maxLength: 11 },\n { iso2: 'ir', name: 'Iran', dialCode: '98', maxLength: 10 },\n { iso2: 'iq', name: 'Iraq', dialCode: '964', maxLength: 10 },\n { iso2: 'ie', name: 'Ireland', dialCode: '353', maxLength: 9 },\n { iso2: 'il', name: 'Israel', dialCode: '972', maxLength: 9 },\n { iso2: 'it', name: 'Italy', dialCode: '39', maxLength: 11, minLength: 6 },\n { iso2: 'jm', name: 'Jamaica', dialCode: '1', maxLength: 10 },\n { iso2: 'jp', name: 'Japan', dialCode: '81', maxLength: 10 },\n { iso2: 'jo', name: 'Jordan', dialCode: '962', maxLength: 9 },\n { iso2: 'kz', name: 'Kazakhstan', dialCode: '7', maxLength: 10 },\n { iso2: 'ke', name: 'Kenya', dialCode: '254', maxLength: 9 },\n { iso2: 'ki', name: 'Kiribati', dialCode: '686', maxLength: 8 },\n { iso2: 'xk', name: 'Kosovo', dialCode: '383', maxLength: 8 },\n { iso2: 'kw', name: 'Kuwait', dialCode: '965', maxLength: 8 },\n { iso2: 'kg', name: 'Kyrgyzstan', dialCode: '996', maxLength: 9 },\n { iso2: 'la', name: 'Laos', dialCode: '856', maxLength: 10 },\n { iso2: 'lv', name: 'Latvia', dialCode: '371', maxLength: 8 },\n { iso2: 'lb', name: 'Lebanon', dialCode: '961', maxLength: 8 },\n { iso2: 'ls', name: 'Lesotho', dialCode: '266', maxLength: 8 },\n { iso2: 'lr', name: 'Liberia', dialCode: '231', maxLength: 9 },\n { iso2: 'ly', name: 'Libya', dialCode: '218', maxLength: 9 },\n { iso2: 'li', name: 'Liechtenstein', dialCode: '423', maxLength: 7 },\n { iso2: 'lt', name: 'Lithuania', dialCode: '370', maxLength: 8 },\n { iso2: 'lu', name: 'Luxembourg', dialCode: '352', maxLength: 9 },\n { iso2: 'mo', name: 'Macau', dialCode: '853', maxLength: 8 },\n { iso2: 'mg', name: 'Madagascar', dialCode: '261', maxLength: 9 },\n { iso2: 'mw', name: 'Malawi', dialCode: '265', maxLength: 9 },\n { iso2: 'my', name: 'Malaysia', dialCode: '60', maxLength: 9 },\n { iso2: 'mv', name: 'Maldives', dialCode: '960', maxLength: 7 },\n { iso2: 'ml', name: 'Mali', dialCode: '223', maxLength: 8 },\n { iso2: 'mt', name: 'Malta', dialCode: '356', maxLength: 8 },\n { iso2: 'mh', name: 'Marshall Islands', dialCode: '692', maxLength: 7 },\n { iso2: 'mq', name: 'Martinique', dialCode: '596', maxLength: 9 },\n { iso2: 'mr', name: 'Mauritania', dialCode: '222', maxLength: 8 },\n { iso2: 'mu', name: 'Mauritius', dialCode: '230', maxLength: 8 },\n { iso2: 'mx', name: 'Mexico', dialCode: '52', maxLength: 10 },\n { iso2: 'fm', name: 'Micronesia', dialCode: '691', maxLength: 7 },\n { iso2: 'md', name: 'Moldova', dialCode: '373', maxLength: 8 },\n { iso2: 'mc', name: 'Monaco', dialCode: '377', maxLength: 9 },\n { iso2: 'mn', name: 'Mongolia', dialCode: '976', maxLength: 8 },\n { iso2: 'me', name: 'Montenegro', dialCode: '382', maxLength: 8 },\n { iso2: 'ms', name: 'Montserrat', dialCode: '1', maxLength: 10 },\n { iso2: 'ma', name: 'Morocco', dialCode: '212', maxLength: 9 },\n { iso2: 'mz', name: 'Mozambique', dialCode: '258', maxLength: 9 },\n { iso2: 'mm', name: 'Myanmar', dialCode: '95', maxLength: 9 },\n { iso2: 'na', name: 'Namibia', dialCode: '264', maxLength: 9 },\n { iso2: 'nr', name: 'Nauru', dialCode: '674', maxLength: 7 },\n { iso2: 'np', name: 'Nepal', dialCode: '977', maxLength: 10 },\n { iso2: 'nl', name: 'Netherlands', dialCode: '31', maxLength: 9 },\n { iso2: 'nc', name: 'New Caledonia', dialCode: '687', maxLength: 6 },\n { iso2: 'nz', name: 'New Zealand', dialCode: '64', maxLength: 10 },\n { iso2: 'ni', name: 'Nicaragua', dialCode: '505', maxLength: 8 },\n { iso2: 'ne', name: 'Niger', dialCode: '227', maxLength: 8 },\n { iso2: 'ng', name: 'Nigeria', dialCode: '234', maxLength: 10 },\n { iso2: 'nu', name: 'Niue', dialCode: '683', maxLength: 4 },\n { iso2: 'kp', name: 'North Korea', dialCode: '850', maxLength: 10 },\n { iso2: 'mk', name: 'North Macedonia', dialCode: '389', maxLength: 8 },\n { iso2: 'mp', name: 'Northern Mariana Islands', dialCode: '1', maxLength: 10 },\n { iso2: 'no', name: 'Norway', dialCode: '47', maxLength: 8 },\n { iso2: 'om', name: 'Oman', dialCode: '968', maxLength: 8 },\n { iso2: 'pk', name: 'Pakistan', dialCode: '92', maxLength: 10 },\n { iso2: 'pw', name: 'Palau', dialCode: '680', maxLength: 7 },\n { iso2: 'ps', name: 'Palestine', dialCode: '970', maxLength: 9 },\n { iso2: 'pa', name: 'Panama', dialCode: '507', maxLength: 8 },\n { iso2: 'pg', name: 'Papua New Guinea', dialCode: '675', maxLength: 8 },\n { iso2: 'py', name: 'Paraguay', dialCode: '595', maxLength: 9 },\n { iso2: 'pe', name: 'Peru', dialCode: '51', maxLength: 9 },\n { iso2: 'ph', name: 'Philippines', dialCode: '63', maxLength: 10 },\n { iso2: 'pl', name: 'Poland', dialCode: '48', maxLength: 9 },\n { iso2: 'pt', name: 'Portugal', dialCode: '351', maxLength: 9 },\n { iso2: 'pr', name: 'Puerto Rico', dialCode: '1', maxLength: 10 },\n { iso2: 'qa', name: 'Qatar', dialCode: '974', maxLength: 8 },\n { iso2: 're', name: 'Réunion', dialCode: '262', maxLength: 9 },\n { iso2: 'ro', name: 'Romania', dialCode: '40', maxLength: 9 },\n { iso2: 'ru', name: 'Russia', dialCode: '7', maxLength: 10 },\n { iso2: 'rw', name: 'Rwanda', dialCode: '250', maxLength: 9 },\n { iso2: 'ws', name: 'Samoa', dialCode: '685', maxLength: 7 },\n { iso2: 'sm', name: 'San Marino', dialCode: '378', maxLength: 10 },\n { iso2: 'st', name: 'São Tomé and Príncipe', dialCode: '239', maxLength: 7 },\n { iso2: 'sa', name: 'Saudi Arabia', dialCode: '966', maxLength: 9 },\n { iso2: 'sn', name: 'Senegal', dialCode: '221', maxLength: 9 },\n { iso2: 'rs', name: 'Serbia', dialCode: '381', maxLength: 9 },\n { iso2: 'sc', name: 'Seychelles', dialCode: '248', maxLength: 7 },\n { iso2: 'sl', name: 'Sierra Leone', dialCode: '232', maxLength: 8 },\n { iso2: 'sg', name: 'Singapore', dialCode: '65', maxLength: 8 },\n { iso2: 'sx', name: 'Sint Maarten', dialCode: '1', maxLength: 10 },\n { iso2: 'sk', name: 'Slovakia', dialCode: '421', maxLength: 9 },\n { iso2: 'si', name: 'Slovenia', dialCode: '386', maxLength: 8 },\n { iso2: 'sb', name: 'Solomon Islands', dialCode: '677', maxLength: 7 },\n { iso2: 'so', name: 'Somalia', dialCode: '252', maxLength: 8 },\n { iso2: 'za', name: 'South Africa', dialCode: '27', maxLength: 9 },\n { iso2: 'kr', name: 'South Korea', dialCode: '82', maxLength: 10 },\n { iso2: 'ss', name: 'South Sudan', dialCode: '211', maxLength: 9 },\n { iso2: 'es', name: 'Spain', dialCode: '34', maxLength: 9 },\n { iso2: 'lk', name: 'Sri Lanka', dialCode: '94', maxLength: 9 },\n { iso2: 'kn', name: 'St. Kitts and Nevis', dialCode: '1', maxLength: 10 },\n { iso2: 'lc', name: 'St. Lucia', dialCode: '1', maxLength: 10 },\n { iso2: 'vc', name: 'St. Vincent and the Grenadines', dialCode: '1', maxLength: 10 },\n { iso2: 'sd', name: 'Sudan', dialCode: '249', maxLength: 9 },\n { iso2: 'sr', name: 'Suriname', dialCode: '597', maxLength: 7 },\n { iso2: 'se', name: 'Sweden', dialCode: '46', maxLength: 9 },\n { iso2: 'ch', name: 'Switzerland', dialCode: '41', maxLength: 9 },\n { iso2: 'sy', name: 'Syria', dialCode: '963', maxLength: 9 },\n { iso2: 'tw', name: 'Taiwan', dialCode: '886', maxLength: 9 },\n { iso2: 'tj', name: 'Tajikistan', dialCode: '992', maxLength: 9 },\n { iso2: 'tz', name: 'Tanzania', dialCode: '255', maxLength: 9 },\n { iso2: 'th', name: 'Thailand', dialCode: '66', maxLength: 9 },\n { iso2: 'tl', name: 'Timor-Leste', dialCode: '670', maxLength: 8 },\n { iso2: 'tg', name: 'Togo', dialCode: '228', maxLength: 8 },\n { iso2: 'to', name: 'Tonga', dialCode: '676', maxLength: 7 },\n { iso2: 'tt', name: 'Trinidad and Tobago', dialCode: '1', maxLength: 10 },\n { iso2: 'tn', name: 'Tunisia', dialCode: '216', maxLength: 8 },\n { iso2: 'tr', name: 'Turkey', dialCode: '90', maxLength: 10 },\n { iso2: 'tm', name: 'Turkmenistan', dialCode: '993', maxLength: 8 },\n { iso2: 'tc', name: 'Turks and Caicos Islands', dialCode: '1', maxLength: 10 },\n { iso2: 'tv', name: 'Tuvalu', dialCode: '688', maxLength: 6 },\n { iso2: 'ug', name: 'Uganda', dialCode: '256', maxLength: 9 },\n { iso2: 'ua', name: 'Ukraine', dialCode: '380', maxLength: 9 },\n { iso2: 'ae', name: 'United Arab Emirates', dialCode: '971', maxLength: 9 },\n { iso2: 'gb', name: 'United Kingdom', dialCode: '44', maxLength: 10, minLength: 7 },\n { iso2: 'us', name: 'United States', dialCode: '1', maxLength: 10 },\n { iso2: 'uy', name: 'Uruguay', dialCode: '598', maxLength: 8 },\n { iso2: 'uz', name: 'Uzbekistan', dialCode: '998', maxLength: 9 },\n { iso2: 'vu', name: 'Vanuatu', dialCode: '678', maxLength: 7 },\n { iso2: 'va', name: 'Vatican City', dialCode: '39', maxLength: 11 },\n { iso2: 've', name: 'Venezuela', dialCode: '58', maxLength: 10 },\n { iso2: 'vn', name: 'Vietnam', dialCode: '84', maxLength: 9 },\n { iso2: 'ye', name: 'Yemen', dialCode: '967', maxLength: 9 },\n { iso2: 'zm', name: 'Zambia', dialCode: '260', maxLength: 9 },\n { iso2: 'zw', name: 'Zimbabwe', dialCode: '263', maxLength: 9 },\n];\n\n/**\n * National-number group sizes per country, used for as-you-type spacing\n * (e.g. Afghanistan 231491321 → \"23 149 1321\"). Based on intl-tel-input /\n * libphonenumber national formats. Countries not listed are shown ungrouped.\n */\nexport const NUMBER_FORMATS: Record<string, number[]> = {\n af: [2, 3, 4],\n tn: [2, 3, 3],\n fr: [1, 2, 2, 2, 2],\n ma: [3, 2, 2, 2],\n eg: [2, 4, 4],\n ly: [2, 3, 4],\n sa: [2, 3, 4],\n ae: [2, 3, 4],\n qa: [4, 4],\n kw: [4, 4],\n bh: [4, 4],\n om: [4, 4],\n jo: [1, 4, 4],\n lb: [2, 3, 3],\n us: [3, 3, 4],\n ca: [3, 3, 4],\n gb: [4, 6],\n de: [4, 7],\n es: [3, 3, 3],\n it: [3, 3, 4],\n pt: [3, 3, 3],\n be: [3, 2, 2, 2],\n nl: [1, 8],\n ch: [2, 3, 2, 2],\n at: [3, 7],\n se: [2, 3, 2, 2],\n no: [3, 2, 3],\n dk: [2, 2, 2, 2],\n pl: [3, 3, 3],\n ru: [3, 3, 2, 2],\n ua: [2, 3, 2, 2],\n tr: [3, 3, 2, 2],\n in: [5, 5],\n cn: [3, 4, 4],\n jp: [2, 4, 4],\n kr: [2, 4, 4],\n br: [2, 5, 4],\n mx: [2, 4, 4],\n au: [3, 3, 3],\n za: [2, 3, 4],\n ng: [3, 3, 4],\n ke: [3, 3, 3],\n sn: [2, 3, 2, 2],\n ci: [2, 2, 2, 2, 2],\n ml: [2, 2, 2, 2],\n cm: [1, 4, 4],\n bf: [2, 2, 2, 2],\n};\n\n/** Group sizes for a country's national number (undefined → no grouping). */\nexport const getFormat = (iso2: string): number[] | undefined =>\n NUMBER_FORMATS[iso2];\n\n/** Look up a country by its ISO2 code (case-insensitive). */\nexport const findCountry = (iso2: string): PhoneCountry | undefined =>\n COUNTRIES.find((c) => c.iso2 === iso2.toLowerCase());\n\n/**\n * Resolve a country from a full name (e.g. \"Tunisia\", \"tunisia\") or, as a\n * fallback, an ISO2 code (e.g. \"tn\"). Case-insensitive.\n */\nexport const resolveCountry = (value: string): PhoneCountry | undefined => {\n if (!value) return undefined;\n const v = value.trim().toLowerCase();\n return (\n COUNTRIES.find((c) => c.name.toLowerCase() === v) ??\n COUNTRIES.find((c) => c.iso2 === v)\n );\n};\n\n/**\n * Localized country names via the platform `Intl.DisplayNames` API — no manual\n * translation tables needed. One `Intl.DisplayNames` instance is built per\n * language and cached. Falls back to the English `name` when the locale or the\n * region code is unsupported (a `null` cache entry marks an unusable locale so\n * we don't retry constructing it).\n */\nconst _displayNamesCache = new Map<string, Intl.DisplayNames | null>();\n\nexport const localizedName = (\n iso2: string,\n language: string,\n fallback: string,\n): string => {\n let dn = _displayNamesCache.get(language);\n if (dn === undefined) {\n try {\n dn = new Intl.DisplayNames([language], { type: 'region' });\n } catch {\n dn = null;\n }\n _displayNamesCache.set(language, dn);\n }\n if (!dn) return fallback;\n try {\n return dn.of(iso2.toUpperCase()) ?? fallback;\n } catch {\n return fallback;\n }\n};\n","import { LitElement, html, nothing } from 'lit';\nimport { customElement, property, state, query } from 'lit/decorators.js';\nimport { arveaPhoneNumberStyles } from './arvea-phone-number.styles';\nimport {\n COUNTRIES,\n resolveCountry,\n getFormat,\n flagUrl,\n localizedName,\n type PhoneCountry,\n type PhoneLanguage,\n} from './countries';\n\n/**\n * @element arvea-phone-number\n *\n * International phone number input: selectable country flag + dial code with a\n * searchable dropdown of all countries, and a number field whose length is\n * capped to the selected country's national number length.\n *\n * @prop {string} country - Selected country: ISO2 code or full name (stored/reflected as ISO2; default 'tn')\n * @prop {string} language - Country-name display language: 'en' | 'fr' | 'ar' (default 'en')\n * @prop {string} value - National number digits (no dial code)\n * @prop {string} label - Field label\n * @prop {string} placeholder - Number input placeholder\n * @prop {string} search-placeholder - Dropdown search placeholder\n * @prop {boolean} disabled\n * @prop {boolean} required\n * @prop {boolean} invalid - Reflected; forces the error style\n * @prop {string} validation-hint - Hint text shown under the field\n *\n * @fires arvea-input { value } - on every keystroke\n * @fires arvea-change { iso2, dialCode, nationalNumber, e164, valid, country }\n * @fires arvea-country-change { country } - when the country changes\n */\n@customElement('arvea-phone-number')\nexport class ArveaPhoneNumber extends LitElement {\n static styles = arveaPhoneNumberStyles;\n\n @property({ type: String, reflect: true }) country = 'tn';\n @property({ type: String, reflect: true }) language: PhoneLanguage = 'en';\n @property({ type: String }) value = '';\n @property({ type: String }) label = '';\n @property({ type: String }) placeholder = '20 123 456';\n @property({ type: String, attribute: 'search-placeholder' })\n searchPlaceholder = '';\n @property({ type: String, attribute: 'no-results-text' })\n noResultsText = '';\n @property({ type: Boolean, reflect: true }) disabled = false;\n @property({ type: Boolean, reflect: true }) required = false;\n @property({ type: Boolean, reflect: true }) invalid = false;\n @property({ type: String, attribute: 'validation-hint' })\n validationHint = '';\n @property({ type: String }) name = '';\n\n /**\n * Countries pinned to the top of the dropdown (by name or ISO2). Accepts a\n * comma-separated attribute (`preferred-countries=\"tn,dz,...\"`) or an array\n * property. Defaults to a North/West-Africa suggestion set.\n */\n @property({\n attribute: 'preferred-countries',\n converter: {\n fromAttribute: (v: string | null) =>\n v ? v.split(',').map((s) => s.trim()).filter(Boolean) : [],\n toAttribute: (v: string[]) => (Array.isArray(v) ? v.join(',') : ''),\n },\n })\n preferredCountries: string[] = ['tn', 'dz', 'ly', 'ci', 'eg', 'bf'];\n\n @state() private _open = false;\n @state() private _query = '';\n @state() private _activeIndex = 0;\n\n @query('.search input') private _searchInput?: HTMLInputElement;\n @query('.prefix') private _prefixBtn?: HTMLElement;\n\n private _onDocPointer = (e: PointerEvent) => {\n if (!this._open) return;\n if (e.composedPath().includes(this)) return;\n this._close(false);\n };\n\n connectedCallback() {\n super.connectedCallback();\n document.addEventListener('pointerdown', this._onDocPointer);\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n document.removeEventListener('pointerdown', this._onDocPointer);\n }\n\n // ── Derived ───────────────────────────────────────────────\n private get _country(): PhoneCountry {\n return resolveCountry(this.country) ?? COUNTRIES.find((c) => c.iso2 === 'tn')!;\n }\n\n /** Country name in the active language (English fallback). */\n private _label(c: PhoneCountry): string {\n return localizedName(c.iso2, this.language, c.name);\n }\n\n /** Is the active language right-to-left? */\n private get _rtl(): boolean {\n return this.language === 'ar';\n }\n\n private static readonly _i18n: Record<string, { search: string; noResults: string }> = {\n en: { search: 'Search', noResults: 'No results' },\n fr: { search: 'Rechercher', noResults: 'Aucun résultat' },\n ar: { search: 'بحث', noResults: 'لا توجد نتائج' },\n };\n\n private get _searchPlaceholder(): string {\n return this.searchPlaceholder || ArveaPhoneNumber._i18n[this.language]?.search || 'Search';\n }\n\n private get _noResultsText(): string {\n return this.noResultsText || ArveaPhoneNumber._i18n[this.language]?.noResults || 'No results';\n }\n\n /**\n * Full list localized and re-sorted for the active language, cached so the\n * (relatively expensive) localize + `Intl.Collator` sort runs once per\n * language rather than on every render.\n */\n private _localizedCache?: { lang: string; list: PhoneCountry[] };\n\n private get _localizedCountries(): PhoneCountry[] {\n if (this._localizedCache?.lang !== this.language) {\n const collator = new Intl.Collator(this.language, { sensitivity: 'base' });\n const list = [...COUNTRIES].sort((a, b) =>\n collator.compare(this._label(a), this._label(b)),\n );\n this._localizedCache = { lang: this.language, list };\n }\n return this._localizedCache.list;\n }\n\n private get _filtered(): PhoneCountry[] {\n const q = this._query.trim().toLowerCase();\n // if (!q) return COUNTRIES;\n if (!q) return this._localizedCountries;\n return this._localizedCountries.filter(\n (c) =>\n this._label(c).toLowerCase().includes(q) ||\n c.name.toLowerCase().includes(q) ||\n c.dialCode.includes(q.replace(/^\\+/, '')) ||\n c.iso2 === q,\n );\n }\n\n /** Resolved, de-duplicated preferred countries. */\n private get _preferred(): PhoneCountry[] {\n const seen = new Set<string>();\n const out: PhoneCountry[] = [];\n for (const id of this.preferredCountries ?? []) {\n const c = resolveCountry(id);\n if (c && !seen.has(c.iso2)) {\n seen.add(c.iso2);\n out.push(c);\n }\n }\n return out;\n }\n\n /** Flat list as rendered/navigated: preferred-first when not searching. */\n private get _visibleList(): PhoneCountry[] {\n if (this._query.trim()) return this._filtered;\n const preferredIso2 = new Set(this._preferred.map((c) => c.iso2));\n return [...this._preferred, ...this._localizedCountries.filter((c) => !preferredIso2.has(c.iso2))];\n }\n\n /** Digits-only view of `value` — guards against programmatic assignment of formatted strings. */\n private get _digits(): string {\n return this.value.replace(/\\D/g, '');\n }\n\n /** True when the number length is within the country's valid range. */\n get valid(): boolean {\n const { maxLength, minLength = maxLength } = this._country;\n const len = this._digits.length;\n return len >= minLength && len <= maxLength;\n }\n\n get e164(): string {\n return this._digits ? `+${this._country.dialCode}${this._digits}` : '';\n }\n\n /** Insert spaces into the national number per the country's group pattern. */\n private _formatNational(raw: string): string {\n const digits = raw.replace(/\\D/g, '');\n const groups = getFormat(this._country.iso2);\n if (!groups || !digits) return digits;\n const out: string[] = [];\n let idx = 0;\n for (const size of groups) {\n if (idx >= digits.length) break;\n out.push(digits.slice(idx, idx + size));\n idx += size;\n }\n if (idx < digits.length) out.push(digits.slice(idx));\n return out.join(' ');\n }\n\n // ── Number input ──────────────────────────────────────────\n private _onNumberInput = (e: Event) => {\n const target = e.target as HTMLInputElement;\n // digits only, hard-capped to the country's max length\n const digits = target.value.replace(/\\D/g, '').slice(0, this._country.maxLength);\n this.value = digits;\n // reflect the spaced/grouped display, keep the caret at the end\n target.value = this._formatNational(digits);\n if (this.required) this.invalid = !this.valid;\n this.dispatchEvent(\n new CustomEvent('arvea-input', {\n detail: { value: this.value },\n bubbles: true,\n composed: true,\n }),\n );\n this._emitChange();\n };\n\n private _emitChange() {\n const c = this._country;\n this.dispatchEvent(\n new CustomEvent('arvea-change', {\n detail: {\n iso2: c.iso2,\n dialCode: c.dialCode,\n nationalNumber: this._digits,\n e164: this.e164,\n valid: this.valid,\n country: c,\n },\n bubbles: true,\n composed: true,\n }),\n );\n }\n\n // ── Dropdown ──────────────────────────────────────────────\n private _toggle = () => {\n if (this.disabled) return;\n if (this._open) this._close();\n else this._openDropdown();\n };\n\n private _openDropdown() {\n this._open = true;\n this._query = '';\n const currentIso2 = this._country.iso2;\n this._activeIndex = Math.max(\n 0,\n this._visibleList.findIndex((c) => c.iso2 === currentIso2),\n );\n queueMicrotask(() => this._searchInput?.focus());\n }\n\n private _close(restoreFocus = true) {\n this._open = false;\n this._query = '';\n if (restoreFocus) queueMicrotask(() => this._prefixBtn?.focus());\n }\n\n private _onSearch = (e: Event) => {\n this._query = (e.target as HTMLInputElement).value;\n this._activeIndex = 0;\n };\n\n private _selectCountry(c: PhoneCountry) {\n const changed = c.iso2 !== this._country.iso2;\n this.country = c.iso2;\n // re-clamp the existing number to the new country's max length\n this.value = this.value.slice(0, c.maxLength);\n if (this.required) this.invalid = !this.valid;\n this._close();\n if (changed) {\n this.dispatchEvent(\n new CustomEvent('arvea-country-change', {\n detail: { country: c },\n bubbles: true,\n composed: true,\n }),\n );\n }\n this._emitChange();\n }\n\n private _onSearchKey = (e: KeyboardEvent) => {\n const list = this._visibleList;\n if (e.key === 'ArrowDown') {\n e.preventDefault();\n this._activeIndex = Math.min(this._activeIndex + 1, list.length - 1);\n } else if (e.key === 'ArrowUp') {\n e.preventDefault();\n this._activeIndex = Math.max(this._activeIndex - 1, 0);\n } else if (e.key === 'Enter') {\n e.preventDefault();\n const c = list[this._activeIndex];\n if (c) this._selectCountry(c);\n } else if (e.key === 'Escape') {\n this._close();\n } else if (e.key === 'Tab') {\n this._close(false);\n }\n };\n\n // ── Render ────────────────────────────────────────────────\n render() {\n const c = this._country;\n return html`\n <div class=\"field\">\n ${this.label\n ? html`<label class=\"label\" for=\"phone-input\">\n ${this.label}\n ${this.required\n ? html`<span class=\"required\" aria-hidden=\"true\">*</span>`\n : nothing}\n </label>`\n : nothing}\n\n <div class=\"control-wrap\" dir=${this._rtl ? 'rtl' : 'ltr'}>\n <div class=\"control\">\n <div\n class=\"prefix\"\n role=\"button\"\n aria-haspopup=\"listbox\"\n aria-expanded=${this._open ? 'true' : 'false'}\n tabindex=${this.disabled ? '-1' : '0'}\n @click=${this._toggle}\n @keydown=${(e: KeyboardEvent) =>\n (e.key === 'Enter' || e.key === ' ') &&\n (e.preventDefault(), this._toggle())}\n >\n <img class=\"flag\" src=${flagUrl(c.iso2)} alt=${this._label(c)} />\n <span class=\"dial\">+${c.dialCode}</span>\n <svg\n class=\"chevron ${this._open ? 'chevron--open' : ''}\"\n viewBox=\"0 0 10 6\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n >\n <path d=\"M1 1l4 4 4-4\" />\n </svg>\n </div>\n\n <input\n id=\"phone-input\"\n class=\"number\"\n type=\"tel\"\n inputmode=\"numeric\"\n dir=\"ltr\"\n name=${this.name || nothing}\n .value=${this._formatNational(this.value)}\n placeholder=${this.placeholder}\n ?disabled=${this.disabled}\n aria-invalid=${this.invalid ? 'true' : 'false'}\n @input=${this._onNumberInput}\n />\n </div>\n\n ${this._open ? this._renderPopup() : nothing}\n </div>\n\n ${this.validationHint\n ? html`<span class=\"hint\">${this.validationHint}</span>`\n : nothing}\n </div>\n `;\n }\n\n private _renderPopup() {\n const list = this._visibleList;\n return html`\n <div class=\"popup\" dir=${this._rtl ? 'rtl' : 'ltr'}>\n <div class=\"search\">\n <svg viewBox=\"0 0 20 20\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <circle cx=\"9\" cy=\"9\" r=\"6.25\" />\n <path d=\"m14 14 3.5 3.5\" />\n </svg>\n <input\n type=\"text\"\n role=\"combobox\"\n aria-autocomplete=\"list\"\n aria-expanded=\"true\"\n aria-controls=\"country-listbox\"\n aria-activedescendant=${this._visibleList[this._activeIndex]\n ? `option-${this._visibleList[this._activeIndex].iso2}`\n : nothing}\n placeholder=${this._searchPlaceholder}\n .value=${this._query}\n @input=${this._onSearch}\n @keydown=${this._onSearchKey}\n />\n </div>\n ${list.length === 0\n ? html`<div class=\"empty\">${this._noResultsText}</div>`\n : html`<ul id=\"country-listbox\" class=\"list\" role=\"listbox\">\n ${list.map((c, i) => {\n const selected = c.iso2 === this._country.iso2;\n return html`\n <li\n id=\"option-${c.iso2}\"\n class=\"option ${selected ? 'option--selected' : ''}\"\n role=\"option\"\n aria-selected=${selected ? 'true' : 'false'}\n data-active=${i === this._activeIndex ? 'true' : 'false'}\n @pointerenter=${() => (this._activeIndex = i)}\n @click=${() => this._selectCountry(c)}\n >\n <img class=\"flag\" src=${flagUrl(c.iso2)} alt=\"\" />\n <!-- <span class=\"name\">${c.name}</span> -->\n <span class=\"name\">${this._label(c)}</span>\n <span class=\"opt-dial\">+${c.dialCode}</span>\n </li>\n `;\n })}\n </ul>`}\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'arvea-phone-number': ArveaPhoneNumber;\n }\n}\n","import { css } from 'lit';\nimport { tokenStyles } from '../../tokens/tokens.styles';\n\nexport const arveaTextareaStyles = [\n tokenStyles,\n css`\n :host {\n display: block;\n font-family: inherit;\n width: 100%;\n }\n\n .field {\n display: flex;\n flex-direction: column;\n gap: 6px;\n }\n\n .label {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n font-size: var(--input-label-size);\n font-weight: var(--input-label-weight);\n color: var(--input-label-color);\n }\n\n .label.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n }\n\n .optional {\n color: var(--input-hint-color);\n font-weight: var(--font-weight-regular);\n }\n\n .required {\n color: var(--input-border-invalid);\n }\n\n textarea {\n width: 100%;\n min-height: 88px;\n padding: var(--input-padding-y) var(--input-padding-x);\n font-family: inherit;\n font-size: var(--input-font-size);\n color: var(--input-text);\n background: var(--input-bg);\n border: 1px solid var(--input-border);\n border-radius: var(--input-radius);\n outline: none;\n resize: vertical;\n transition: border-color 0.15s ease, box-shadow 0.15s ease;\n box-sizing: border-box;\n }\n\n :host([auto-resize]) textarea {\n resize: none;\n overflow: hidden;\n }\n\n textarea::placeholder {\n color: var(--input-placeholder);\n }\n\n textarea:hover:not(:disabled):not(:focus) {\n border-color: var(--input-border-hover);\n }\n\n textarea:focus-visible {\n border-color: var(--input-border-focus);\n box-shadow: var(--input-shadow-focus);\n }\n\n :host([invalid]) textarea {\n border-color: var(--input-border-invalid);\n }\n :host([invalid]) textarea:focus-visible {\n box-shadow: 0 0 0 3px rgba(220, 38, 38, 0.15);\n }\n\n :host([haswarning]) textarea {\n border-color: var(--input-border-warning);\n }\n\n textarea:disabled,\n :host([disabled]) textarea {\n background: var(--input-bg-disabled);\n color: var(--input-placeholder);\n cursor: not-allowed;\n }\n\n textarea[readonly] {\n background: var(--input-bg-disabled);\n }\n\n .hint-row {\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: 8px;\n }\n\n .hint {\n font-size: var(--input-hint-size);\n color: var(--input-hint-color);\n min-height: 1em;\n }\n :host([invalid]) .hint {\n color: var(--input-hint-color-invalid);\n }\n :host([haswarning]) .hint {\n color: var(--input-hint-color-warning);\n }\n :host([showvalid]) .hint {\n color: var(--input-hint-color-valid);\n }\n\n .counter {\n font-size: var(--input-hint-size);\n color: var(--input-hint-color);\n margin-left: auto;\n }\n `,\n];\n","import { LitElement, html, nothing, PropertyValues } from 'lit';\nimport { customElement, property, query } from 'lit/decorators.js';\nimport { arveaTextareaStyles } from './arvea-textarea.styles';\n\n/**\n * @element arvea-textarea\n *\n * Multi-line text input with label, validation, and optional auto-resize.\n *\n * @fires arvea-input - On every keystroke (detail: { value })\n * @fires arvea-change - On commit (detail: { value })\n */\n@customElement('arvea-textarea')\nexport class ArveaTextarea extends LitElement {\n static styles = arveaTextareaStyles;\n\n @property({ type: String }) label = '';\n @property({ type: Boolean, attribute: 'hide-label' }) hideLabel = false;\n @property({ type: String }) name = '';\n @property({ type: String }) value = '';\n @property({ type: String }) placeholder = '';\n @property({ type: Boolean, reflect: true }) disabled = false;\n @property({ type: Boolean, reflect: true }) readonly = false;\n @property({ type: Boolean, reflect: true }) required = false;\n @property({ type: Boolean, reflect: true }) invalid = false;\n @property({ type: Boolean, reflect: true, attribute: 'has-warning' })\n hasWarning = false;\n @property({ type: Boolean, reflect: true, attribute: 'show-valid' })\n showValid = false;\n @property({ type: String, attribute: 'validation-hint' }) validationHint = '';\n @property({ type: String, attribute: 'optional-label' }) optionalLabel = '';\n @property({ type: Number }) rows = 4;\n @property({ type: Number, attribute: 'max-length' }) maxLength?: number;\n @property({ type: Boolean, reflect: true, attribute: 'auto-resize' })\n autoResize = false;\n\n @query('textarea') private _ta!: HTMLTextAreaElement;\n\n focus() {\n this._ta?.focus();\n }\n\n private _resize() {\n if (!this.autoResize || !this._ta) return;\n this._ta.style.height = 'auto';\n this._ta.style.height = `${this._ta.scrollHeight}px`;\n }\n\n private _onInput = (e: Event) => {\n this.value = (e.target as HTMLTextAreaElement).value;\n this._resize();\n this.dispatchEvent(\n new CustomEvent('arvea-input', {\n detail: { value: this.value },\n bubbles: true,\n composed: true,\n }),\n );\n };\n\n private _onChange = () => {\n this.dispatchEvent(new Event('change', { bubbles: true, composed: true }));\n };\n\n updated(changed: PropertyValues) {\n if (changed.has('value') || changed.has('autoResize')) this._resize();\n }\n\n render() {\n const showHint = this.validationHint && this.validationHint.length > 0;\n const showCounter = typeof this.maxLength === 'number';\n return html`\n <div part=\"base\" class=\"field\">\n ${this.label\n ? html`\n <label part=\"label\" class=\"label ${this.hideLabel ? 'sr-only' : ''}\">\n ${this.label}\n ${this.required\n ? html`<span class=\"required\" aria-hidden=\"true\">*</span>`\n : this.optionalLabel\n ? html`<span class=\"optional\">(${this.optionalLabel})</span>`\n : nothing}\n </label>\n `\n : nothing}\n <textarea\n part=\"textarea\"\n .value=${this.value}\n name=${this.name || nothing}\n placeholder=${this.placeholder || nothing}\n rows=${this.rows}\n maxlength=${this.maxLength ?? nothing}\n ?disabled=${this.disabled}\n ?readonly=${this.readonly}\n ?required=${this.required}\n aria-invalid=${this.invalid ? 'true' : 'false'}\n aria-label=${this.hideLabel && this.label ? this.label : nothing}\n @input=${this._onInput}\n @change=${this._onChange}\n ></textarea>\n ${showHint || showCounter\n ? html`\n <div part=\"hint-row\" class=\"hint-row\">\n ${showHint ? html`<span part=\"hint\" class=\"hint\">${this.validationHint}</span>` : html`<span></span>`}\n ${showCounter\n ? html`<span class=\"counter\"\n >${this.value.length}/${this.maxLength}</span\n >`\n : nothing}\n </div>\n `\n : nothing}\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'arvea-textarea': ArveaTextarea;\n }\n}\n","import { css } from 'lit';\nimport { tokenStyles } from '../../tokens/tokens.styles';\n\nexport const arveaSelectStyles = [\n tokenStyles,\n css`\n :host {\n display: block;\n font-family: inherit;\n width: 100%;\n position: relative;\n }\n\n .field {\n display: flex;\n flex-direction: column;\n gap: 6px;\n width: 100%;\n }\n\n .label {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n font-size: var(--input-label-size);\n font-weight: var(--input-label-weight);\n color: var(--input-label-color);\n }\n\n .label.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n }\n\n .optional {\n color: var(--input-hint-color);\n font-weight: var(--font-weight-regular);\n }\n\n .required {\n color: var(--select-border-invalid);\n }\n\n .combobox {\n position: relative;\n display: flex;\n align-items: center;\n gap: 6px;\n width: 100%;\n min-height: var(--select-height);\n padding: 4px calc(var(--select-padding-x) + 36px) 4px\n var(--select-padding-x);\n background: var(--select-bg);\n border: 1px solid var(--select-border);\n border-radius: var(--select-radius);\n color: var(--select-text);\n font-size: var(--select-font-size);\n cursor: text;\n box-sizing: border-box;\n transition:\n border-color 0.15s ease,\n box-shadow 0.15s ease;\n flex-wrap: wrap;\n }\n\n :host([open]) .combobox,\n .combobox:focus-within {\n border-color: var(--select-border-focus);\n box-shadow: var(--input-shadow-focus);\n }\n\n :host([invalid]) .combobox {\n border-color: var(--select-border-invalid);\n }\n\n :host([disabled]) .combobox {\n background: var(--select-bg-disabled);\n color: var(--input-placeholder);\n cursor: not-allowed;\n }\n\n .placeholder {\n color: var(--select-placeholder);\n pointer-events: none;\n }\n\n .select-flag {\n flex: 0 0 auto;\n width: 20px;\n height: 14px;\n margin-right: 8px;\n border-radius: 2px;\n object-fit: cover;\n }\n\n .single-value {\n flex: 1 1 auto;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .tags {\n display: contents;\n }\n\n .tag {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 2px 6px 2px 8px;\n background: var(--select-tag-bg, var(--colors-slate-100, #f1f5f9));\n color: var(--select-tag-fg, var(--colors-slate-700, #334155));\n border-radius: var(--select-tag-radius, 4px);\n font-size: 0.8125rem;\n line-height: 1.4;\n max-width: 100%;\n }\n\n .tag-label {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .tag-remove {\n background: transparent;\n border: 0;\n padding: 0;\n color: inherit;\n cursor: pointer;\n display: inline-flex;\n opacity: 0.7;\n }\n .tag-remove:hover {\n opacity: 1;\n }\n\n .tag-more {\n font-size: 0.75rem;\n color: var(--input-hint-color);\n }\n\n .search {\n flex: 1 1 60px;\n min-width: 60px;\n border: 0;\n outline: 0;\n background: transparent;\n font: inherit;\n color: inherit;\n padding: 0;\n }\n .search::placeholder {\n color: var(--select-placeholder);\n }\n\n .clear,\n .chevron {\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n color: var(--select-chevron-color);\n display: inline-flex;\n pointer-events: none;\n }\n .chevron {\n right: 10px;\n transition: transform 0.15s ease;\n }\n :host([open]) .chevron {\n transform: translateY(-50%) rotate(180deg);\n }\n\n .clear {\n right: 30px;\n pointer-events: auto;\n background: transparent;\n border: 0;\n padding: 0;\n cursor: pointer;\n opacity: 0.7;\n }\n .clear:hover {\n opacity: 1;\n }\n\n .popup {\n position: absolute;\n top: calc(100% + 4px);\n left: 0;\n right: 0;\n z-index: var(--select-popup-z, 9999);\n background: var(--select-popup-bg, #ffffff);\n border: 1px solid var(--select-popup-border, #e2e8f0);\n border-radius: var(--select-popup-radius, 8px);\n box-shadow:\n var(--select-popup-shadow, 0 8px 24px rgba(15, 23, 42, 0.12));\n padding: 0;\n margin: 0;\n max-height: 280px;\n overflow: hidden;\n display: none;\n flex-direction: column;\n }\n\n :host([data-flip-up]) .popup {\n top: auto;\n bottom: calc(100% + 4px);\n }\n\n .popup[data-open] {\n display: flex;\n }\n\n .popup-search {\n flex-shrink: 0;\n background: var(--select-popup-bg, #ffffff);\n padding: 4px;\n border-bottom: 1px solid var(--select-popup-border, #e2e8f0);\n }\n\n .popup-search input {\n width: 100%;\n box-sizing: border-box;\n padding: 6px 8px;\n border: 1px solid var(--select-border);\n border-radius: var(--select-radius);\n font: inherit;\n outline: 0;\n }\n .popup-search input:focus-visible {\n border-color: var(--select-border-focus);\n box-shadow: var(--input-shadow-focus);\n }\n\n .listbox {\n list-style: none;\n margin: 0;\n padding: 4px;\n overflow-y: auto;\n flex: 1 1 auto;\n min-height: 0;\n }\n\n .group-label {\n padding: 6px 10px 2px;\n font-size: 0.75rem;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.04em;\n color: var(--input-hint-color);\n }\n\n .option {\n padding: 6px 10px;\n border-radius: 4px;\n cursor: pointer;\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 0.875rem;\n line-height: 1.4;\n }\n .option[aria-disabled='true'] {\n opacity: 0.5;\n cursor: not-allowed;\n }\n .option:hover:not([aria-disabled='true']) {\n background: var(--select-option-hover-bg, var(--colors-slate-50, #f8fafc));\n }\n .option[data-active='true'] {\n background: var(\n --select-option-active-bg,\n var(--colors-slate-100, #f1f5f9)\n );\n }\n .option[aria-selected='true'] {\n background: var(\n --select-option-selected-bg,\n var(--colors-primary-50, #eff6ff)\n );\n color: var(--select-option-selected-fg, var(--colors-primary-700, #1d4ed8));\n font-weight: 500;\n }\n\n .option-desc {\n font-size: 0.75rem;\n color: var(--input-hint-color);\n margin-top: 2px;\n }\n\n .empty,\n .loading,\n .error {\n padding: 12px;\n text-align: center;\n color: var(--input-hint-color);\n font-size: 0.875rem;\n }\n\n .error {\n color: var(--select-border-invalid);\n }\n\n .hint {\n font-size: var(--input-hint-size);\n color: var(--input-hint-color);\n }\n :host([invalid]) .hint {\n color: var(--input-hint-color-invalid);\n }\n\n /* ── Size variants ─────────────────────────────── */\n /* size only affects height and font — width is always 100% of the container */\n :host([size='sm']) .combobox {\n min-height: 28px;\n padding-top: 2px;\n padding-bottom: 2px;\n font-size: 12px;\n }\n :host([size='sm']) .search {\n font-size: 12px;\n }\n\n :host([size='lg']) .combobox {\n min-height: 44px;\n padding-top: 8px;\n padding-bottom: 8px;\n font-size: 15px;\n }\n :host([size='lg']) .search {\n font-size: 15px;\n }\n `,\n];\n","import { LitElement, html, nothing, type TemplateResult } from 'lit';\nimport {\n customElement,\n property,\n query,\n state,\n} from 'lit/decorators.js';\nimport { arveaSelectStyles } from './arvea-select.styles';\nimport type {\n ArveaSelectOption,\n ArveaSelectFetchFn,\n ArveaSelectFilterFn,\n ArveaSelectGroupBy,\n} from './arvea-select.types';\n\ninterface OptionState {\n selected: boolean;\n active: boolean;\n}\n\n/**\n * @element arvea-select\n *\n * Select2-style combobox: searchable, multi-select, async, grouped, createable,\n * keyboard navigable, with custom item rendering.\n *\n * @fires arvea-change { value, selectedOptions }\n * @fires arvea-select-open\n * @fires arvea-select-close\n * @fires arvea-search { query }\n * @fires arvea-fetch-error { error, query }\n * @fires arvea-create { label, value }\n * @fires arvea-clear\n */\n@customElement('arvea-select')\nexport class ArveaSelect extends LitElement {\n static styles = arveaSelectStyles;\n static formAssociated = true;\n\n // ------- existing props (back-compat) -------------------------------------\n @property({ type: String }) label = '';\n @property({ type: Boolean, attribute: 'hide-label' }) hideLabel = false;\n @property({ type: String }) name = '';\n @property() value: string | string[] = '';\n @property({ type: String }) placeholder = '';\n @property({ type: Array }) options: ArveaSelectOption[] = [];\n @property({ type: Boolean, reflect: true }) disabled = false;\n @property({ type: Boolean, reflect: true }) required = false;\n @property({ type: Boolean, reflect: true }) invalid = false;\n @property({ type: String, attribute: 'validation-hint' })\n validationHint = '';\n @property({ type: String, attribute: 'optional-label' }) optionalLabel = '';\n /** Leading flag/image shown in the trigger (e.g. default country flag for the placeholder state). */\n @property({ type: String, attribute: 'flag-src' }) flagSrc = '';\n\n // ------- new props --------------------------------------------------------\n @property({ type: Boolean, reflect: true }) searchable = true;\n @property({ type: Boolean, reflect: true }) multiple = false;\n @property({ type: Boolean, reflect: true }) clearable = false;\n @property({ type: Boolean, reflect: true }) loading = false;\n @property({ attribute: false }) fetchOptions?: ArveaSelectFetchFn;\n @property({ type: Number, attribute: 'debounce-ms' }) debounceMs = 250;\n @property({ type: String, attribute: 'no-results-text' })\n noResultsText = 'No results';\n @property({ type: String, attribute: 'loading-text' })\n loadingText = 'Loading…';\n @property({ type: Number, attribute: 'max-tag-count' }) maxTagCount = 0;\n @property({ attribute: false }) groupBy?: ArveaSelectGroupBy;\n @property({ type: Boolean }) createable = false;\n @property({ attribute: false }) filterFn?: ArveaSelectFilterFn;\n @property({ type: Boolean, reflect: true }) open = false;\n @property({ type: String, reflect: true }) size: 'sm' | 'md' | 'lg' = 'md';\n @property({ attribute: false })\n renderOption?: (\n option: ArveaSelectOption,\n state: OptionState,\n ) => TemplateResult;\n\n // ------- internal state ---------------------------------------------------\n @state() private _query = '';\n @state() private _activeIndex = -1;\n @state() private _asyncResults: ArveaSelectOption[] | null = null;\n @state() private _fetchError: Error | null = null;\n\n @query('.popup') private _popupEl?: HTMLDivElement;\n @query('.popup-search input') private _popupSearchInput?: HTMLInputElement;\n @query('.search') private _searchInput?: HTMLInputElement;\n\n private _internals?: ElementInternals;\n private _debounceTimer?: number;\n private _abort?: AbortController;\n\n private _onDocPointer = (e: PointerEvent) => {\n if (!this.open) return;\n const path = e.composedPath();\n if (path.includes(this)) return;\n this._close();\n };\n\n private _onWinReflow = () => {\n if (this.open) this._positionPopup();\n };\n\n constructor() {\n super();\n if ('attachInternals' in this) {\n try {\n this._internals = this.attachInternals();\n } catch {\n // ElementInternals unavailable in this environment.\n }\n }\n }\n\n connectedCallback() {\n super.connectedCallback();\n document.addEventListener('pointerdown', this._onDocPointer);\n window.addEventListener('resize', this._onWinReflow);\n window.addEventListener('scroll', this._onWinReflow, true);\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n document.removeEventListener('pointerdown', this._onDocPointer);\n window.removeEventListener('resize', this._onWinReflow);\n window.removeEventListener('scroll', this._onWinReflow, true);\n this._abort?.abort();\n if (this._debounceTimer) window.clearTimeout(this._debounceTimer);\n }\n\n updated(changed: Map<string, unknown>) {\n if (changed.has('open')) {\n if (this.open) this._afterOpen();\n }\n if (changed.has('value') || changed.has('required')) {\n this._syncFormState();\n }\n }\n\n // ------- public API -------------------------------------------------------\n get form() {\n return this._internals?.form ?? null;\n }\n get validity() {\n return this._internals?.validity;\n }\n get validationMessage() {\n return this._internals?.validationMessage ?? '';\n }\n checkValidity() {\n return this._internals?.checkValidity() ?? true;\n }\n reportValidity() {\n return this._internals?.reportValidity() ?? true;\n }\n\n // ------- derived helpers --------------------------------------------------\n private get _valueArray(): string[] {\n if (Array.isArray(this.value)) return this.value;\n return this.value ? [String(this.value)] : [];\n }\n\n private get _allOptions(): ArveaSelectOption[] {\n return this._asyncResults ?? this.options ?? [];\n }\n\n private get _filtered(): ArveaSelectOption[] {\n const q = this._query.trim();\n if (!q || this.fetchOptions) return this._allOptions;\n const fn =\n this.filterFn ??\n ((query: string, o: ArveaSelectOption) =>\n o.label.toLowerCase().includes(query.toLowerCase()));\n return this._allOptions.filter((o) => fn(q, o));\n }\n\n private get _groups(): Array<{ name: string; options: ArveaSelectOption[] }> {\n const list = this._filtered;\n if (!this.groupBy) {\n return [{ name: '', options: list }];\n }\n const getKey =\n typeof this.groupBy === 'function'\n ? this.groupBy\n : (o: ArveaSelectOption) =>\n String(\n (o as unknown as Record<string, unknown>)[\n this.groupBy as string\n ] ??\n o.group ??\n '',\n );\n const buckets = new Map<string, ArveaSelectOption[]>();\n for (const o of list) {\n const key = getKey(o) || '';\n if (!buckets.has(key)) buckets.set(key, []);\n buckets.get(key)!.push(o);\n }\n return [...buckets.entries()].map(([name, options]) => ({ name, options }));\n }\n\n private get _flatVisible(): ArveaSelectOption[] {\n return this._groups.flatMap((g) => g.options);\n }\n\n // Labels for values that have scrolled out of the current options/fetch\n // pool (e.g. a prior async search matched them but a later one didn't)\n // are remembered here so selected tags don't regress to showing raw ids.\n private readonly _knownOptions = new Map<string, ArveaSelectOption>();\n\n private get _selectedOptions(): ArveaSelectOption[] {\n for (const o of this._allOptions) {\n this._knownOptions.set(o.value, o);\n }\n return this._valueArray.map(\n (v) => this._knownOptions.get(v) ?? { value: v, label: v },\n );\n }\n\n // ------- event handlers ---------------------------------------------------\n private _onTriggerPointer = (e: PointerEvent) => {\n if (this.disabled) return;\n const target = e.target as HTMLElement;\n if (target.closest('.tag-remove') || target.closest('.clear')) return;\n if (!this.open) this._open();\n if (this.searchable) this._focusSearchSoon();\n };\n\n private _focusSearchSoon() {\n queueMicrotask(() => {\n (this._popupSearchInput ?? this._searchInput)?.focus();\n });\n }\n\n private _onKeydown = (e: KeyboardEvent) => {\n if (this.disabled) return;\n if (!this.open && (e.key === 'ArrowDown' || e.key === 'Enter')) {\n e.preventDefault();\n this._open();\n return;\n }\n switch (e.key) {\n case 'ArrowDown':\n e.preventDefault();\n this._moveActive(1);\n break;\n case 'ArrowUp':\n e.preventDefault();\n this._moveActive(-1);\n break;\n case 'Home':\n e.preventDefault();\n this._activeIndex = this._firstSelectable();\n break;\n case 'End':\n e.preventDefault();\n this._activeIndex = this._lastSelectable();\n break;\n case 'Enter': {\n e.preventDefault();\n const opt = this._flatVisible[this._activeIndex];\n if (opt) this._toggleOption(opt);\n else if (this.createable && this._query.trim())\n this._createTag(this._query.trim());\n break;\n }\n case 'Escape':\n if (this.open) {\n e.preventDefault();\n this._close();\n } else if (this.clearable && !this.multiple) {\n this._clear();\n }\n break;\n case 'Backspace':\n if (this.multiple && !this._query && this._valueArray.length > 0) {\n this._setValue(this._valueArray.slice(0, -1));\n }\n break;\n case 'Tab':\n if (this.open) this._close();\n break;\n }\n };\n\n private _onSearchInput = (e: Event) => {\n const target = e.target as HTMLInputElement;\n this._query = target.value;\n this._activeIndex = this._firstSelectable();\n if (this.fetchOptions) this._scheduleFetch();\n this.dispatchEvent(\n new CustomEvent('arvea-search', {\n detail: { query: this._query },\n bubbles: true,\n composed: true,\n }),\n );\n };\n\n private _scheduleFetch() {\n if (this._debounceTimer) window.clearTimeout(this._debounceTimer);\n this._debounceTimer = window.setTimeout(() => {\n void this._runFetch(this._query);\n }, this.debounceMs);\n }\n\n private async _runFetch(q: string) {\n if (!this.fetchOptions) return;\n this._abort?.abort();\n this._abort = new AbortController();\n const localAbort = this._abort;\n this.loading = true;\n this._fetchError = null;\n try {\n const results = await this.fetchOptions(q);\n if (localAbort.signal.aborted) return;\n this._asyncResults = results;\n } catch (err) {\n if ((err as DOMException)?.name === 'AbortError') return;\n this._fetchError = err as Error;\n this.dispatchEvent(\n new CustomEvent('arvea-fetch-error', {\n detail: { error: err, query: q },\n bubbles: true,\n composed: true,\n }),\n );\n } finally {\n if (!localAbort.signal.aborted) this.loading = false;\n }\n }\n\n private _firstSelectable() {\n return this._flatVisible.findIndex((o) => !o.disabled);\n }\n\n private _lastSelectable() {\n const list = this._flatVisible;\n for (let i = list.length - 1; i >= 0; i--)\n if (!list[i].disabled) return i;\n return -1;\n }\n\n private _moveActive(delta: number) {\n const list = this._flatVisible;\n if (list.length === 0) {\n this._activeIndex = -1;\n return;\n }\n let i = this._activeIndex;\n for (let step = 0; step < list.length; step++) {\n i = (i + delta + list.length) % list.length;\n if (!list[i].disabled) {\n this._activeIndex = i;\n return;\n }\n }\n }\n\n // ------- selection / form -------------------------------------------------\n private _toggleOption(opt: ArveaSelectOption) {\n if (opt.disabled) return;\n if (this.multiple) {\n const set = new Set(this._valueArray);\n if (set.has(opt.value)) set.delete(opt.value);\n else set.add(opt.value);\n this._setValue([...set]);\n this._query = '';\n if (this.searchable) this._focusSearchSoon();\n } else {\n this._setValue(opt.value);\n this._close();\n }\n }\n\n private _createTag(label: string) {\n const value = label;\n const exists = this._allOptions.some(\n (o) => o.value.toLowerCase() === value.toLowerCase(),\n );\n if (!exists) {\n this.options = [...this.options, { value, label }];\n }\n this.dispatchEvent(\n new CustomEvent('arvea-create', {\n detail: { label, value },\n bubbles: true,\n composed: true,\n }),\n );\n this._toggleOption({ value, label });\n }\n\n private _setValue(next: string | string[]) {\n this.value = next;\n this.dispatchEvent(new Event('input', { bubbles: true, composed: true }));\n this.dispatchEvent(new Event('change', { bubbles: true, composed: true }));\n }\n\n private _syncFormState() {\n if (!this._internals) return;\n const v = this.value;\n if (Array.isArray(v)) {\n const fd = new FormData();\n for (const item of v) fd.append(this.name || 'value', String(item));\n this._internals.setFormValue(fd);\n } else {\n this._internals.setFormValue(v ?? '');\n }\n const empty = Array.isArray(v) ? v.length === 0 : !v;\n if (this.required && empty) {\n this._internals.setValidity(\n { valueMissing: true },\n 'Please select an option',\n );\n } else {\n this._internals.setValidity({});\n }\n }\n\n private _clear = (e?: Event) => {\n e?.stopPropagation();\n this._setValue(this.multiple ? [] : '');\n this._query = '';\n this.dispatchEvent(\n new CustomEvent('arvea-clear', { bubbles: true, composed: true }),\n );\n };\n\n // ------- open/close + positioning ----------------------------------------\n private _open() {\n if (this.disabled) return;\n this.open = true;\n if (this.fetchOptions && this._asyncResults === null) {\n void this._runFetch('');\n }\n this.dispatchEvent(\n new CustomEvent('arvea-select-open', { bubbles: true, composed: true }),\n );\n }\n\n private _close() {\n if (!this.open) return;\n this.open = false;\n this._activeIndex = -1;\n this.dispatchEvent(\n new CustomEvent('arvea-select-close', { bubbles: true, composed: true }),\n );\n }\n\n private _afterOpen() {\n if (this._activeIndex < 0) this._activeIndex = this._firstSelectable();\n queueMicrotask(() => this._positionPopup());\n }\n\n // Next node in the flat (composed) tree: a slotted element's flat-tree parent\n // is the <slot> it's assigned to (which lives inside another shadow root),\n // not its light-DOM .parentElement — so assignedSlot has to be checked first\n // to actually cross into an ancestor like <arvea-dialog>'s shadow DOM.\n private _flatParent(node: Element): Element | null {\n if (node.assignedSlot) return node.assignedSlot;\n if (node.parentElement) return node.parentElement;\n const root = node.getRootNode();\n return root instanceof ShadowRoot ? root.host : null;\n }\n\n // Walks up the composed tree to find the nearest scrollable ancestor, e.g.\n // an <arvea-dialog>'s own scrolling body. Clamping the popup to that box's\n // bounds keeps it from overflowing it, which would otherwise show up as a\n // phantom scrollbar on the ancestor.\n private _findScrollBounds(): { top: number; bottom: number } {\n let node: Element | null = this._flatParent(this);\n while (node) {\n const overflowY = getComputedStyle(node).overflowY;\n if (overflowY === 'auto' || overflowY === 'scroll') {\n const rect = node.getBoundingClientRect();\n return { top: rect.top, bottom: rect.bottom };\n }\n node = this._flatParent(node);\n }\n return { top: 0, bottom: window.innerHeight };\n }\n\n private _positionPopup() {\n const popup = this._popupEl;\n if (!popup) return;\n const trigger = this.shadowRoot?.querySelector(\n '.combobox',\n ) as HTMLElement | null;\n if (!trigger) return;\n const triggerRect = trigger.getBoundingClientRect();\n const bounds = this._findScrollBounds();\n const spaceBelow = bounds.bottom - triggerRect.bottom;\n const spaceAbove = triggerRect.top - bounds.top;\n const desiredHeight = popup.scrollHeight || 280;\n const flipUp = spaceBelow < desiredHeight + 12 && spaceAbove > spaceBelow;\n this.toggleAttribute('data-flip-up', flipUp);\n const available = (flipUp ? spaceAbove : spaceBelow) - 12;\n popup.style.maxHeight = `${Math.max(120, Math.min(280, available))}px`;\n }\n\n // ------- render -----------------------------------------------------------\n render() {\n const hasValue = this._valueArray.length > 0;\n const showClear = this.clearable && hasValue && !this.disabled;\n\n return html`\n <div part=\"base\" class=\"field\">\n ${this.label && !this.hideLabel\n ? html`<label part=\"label\" class=\"label\">\n ${this.label}\n ${this.required\n ? html`<span class=\"required\">*</span>`\n : this.optionalLabel\n ? html`<span class=\"optional\">(${this.optionalLabel})</span>`\n : nothing}\n </label>`\n : this.label\n ? html`<span part=\"label\" class=\"label sr-only\">${this.label}</span>`\n : nothing}\n\n <div\n part=\"combobox\"\n class=\"combobox\"\n role=\"combobox\"\n aria-haspopup=\"listbox\"\n aria-expanded=${this.open ? 'true' : 'false'}\n tabindex=${this.disabled ? '-1' : '0'}\n @pointerdown=${this._onTriggerPointer}\n @keydown=${this._onKeydown}\n >\n ${this._renderTrigger()}\n ${showClear\n ? html`<button\n type=\"button\"\n class=\"clear\"\n aria-label=\"Clear\"\n @click=${this._clear}\n >\n ${this._iconX()}\n </button>`\n : nothing}\n <span class=\"chevron\" aria-hidden=\"true\">${this._iconChevron()}</span>\n </div>\n\n ${this.validationHint\n ? html`<span part=\"hint\" class=\"hint\">${this.validationHint}</span>`\n : nothing}\n </div>\n\n ${this._renderPopup()}\n `;\n }\n\n private _renderTrigger() {\n const selected = this._selectedOptions;\n\n if (this.multiple) {\n const maxN =\n this.maxTagCount > 0 ? this.maxTagCount : selected.length;\n const visible = selected.slice(0, maxN);\n const overflow = selected.length - visible.length;\n return html`\n <span class=\"tags\">\n ${visible.map(\n (o) => html`\n <span class=\"tag\">\n <span class=\"tag-label\">${o.label}</span>\n <button\n type=\"button\"\n class=\"tag-remove\"\n aria-label=\"Remove ${o.label}\"\n @click=${(e: Event) => {\n e.stopPropagation();\n this._toggleOption(o);\n }}\n >\n ${this._iconX()}\n </button>\n </span>\n `,\n )}\n ${overflow > 0\n ? html`<span class=\"tag-more\">+${overflow}</span>`\n : nothing}\n </span>\n ${this.searchable\n ? html`<input\n class=\"search\"\n type=\"text\"\n .value=${this._query}\n placeholder=${selected.length === 0 ? this.placeholder : ''}\n ?disabled=${this.disabled}\n @input=${this._onSearchInput}\n />`\n : selected.length === 0\n ? html`<span class=\"placeholder\">${this.placeholder}</span>`\n : nothing}\n `;\n }\n\n // Show the selected option's flag if it has one, otherwise fall back to the\n // element-level flag (lets the placeholder state still display a default flag).\n const triggerFlag = selected.length\n ? selected[0].flagSrc || this.flagSrc\n : this.flagSrc;\n\n return html`\n ${this._renderFlag(triggerFlag)}\n ${selected.length\n ? html`<span class=\"single-value\">${selected[0].label}</span>`\n : html`<span class=\"placeholder\">${this.placeholder}</span>`}\n `;\n }\n\n private _renderFlag(src?: string) {\n return src\n ? html`<img class=\"select-flag\" src=${src} alt=\"\" aria-hidden=\"true\" />`\n : nothing;\n }\n\n private _renderPopup() {\n if (!this.open) return nothing;\n const groups = this._groups;\n const showPopupSearch =\n this.searchable && (!this.multiple || !!this.fetchOptions);\n\n return html`\n <div part=\"popup\" class=\"popup\" data-open role=\"listbox\">\n ${showPopupSearch\n ? html`<div class=\"popup-search\">\n <input\n type=\"search\"\n .value=${this._query}\n placeholder=\"Search…\"\n @input=${this._onSearchInput}\n @keydown=${this._onKeydown}\n />\n </div>`\n : nothing}\n ${this.loading\n ? html`<div class=\"loading\">${this.loadingText}</div>`\n : this._fetchError\n ? html`<div class=\"error\">${this._fetchError.message}</div>`\n : groups.length === 0 ||\n groups.every((g) => g.options.length === 0)\n ? this.createable && this._query.trim()\n ? html`<ul class=\"listbox\">\n <li\n class=\"option\"\n data-active=\"true\"\n role=\"option\"\n @click=${() => this._createTag(this._query.trim())}\n >\n Create \"${this._query.trim()}\"\n </li>\n </ul>`\n : html`<div class=\"empty\">${this.noResultsText}</div>`\n : html`<ul class=\"listbox\">\n ${groups.map((g) => this._renderGroup(g))}\n </ul>`}\n </div>\n `;\n }\n\n private _renderGroup(g: { name: string; options: ArveaSelectOption[] }) {\n const valueSet = new Set(this._valueArray);\n const flat = this._flatVisible;\n return html`\n ${g.name\n ? html`<li class=\"group-label\" role=\"presentation\">${g.name}</li>`\n : nothing}\n ${g.options.map((o) => {\n const idx = flat.indexOf(o);\n const selected = valueSet.has(o.value);\n const active = idx === this._activeIndex;\n return html`\n <li\n class=\"option\"\n role=\"option\"\n aria-selected=${selected ? 'true' : 'false'}\n aria-disabled=${o.disabled ? 'true' : 'false'}\n data-active=${active ? 'true' : 'false'}\n @pointerenter=${() => (this._activeIndex = idx)}\n @click=${() => this._toggleOption(o)}\n >\n ${this.renderOption\n ? this.renderOption(o, { selected, active })\n : html`\n ${this._renderFlag(o.flagSrc)}\n <div>\n <div>${o.label}</div>\n ${o.description\n ? html`<div class=\"option-desc\">${o.description}</div>`\n : nothing}\n </div>\n `}\n </li>\n `;\n })}\n `;\n }\n\n private _iconChevron() {\n return html`<svg\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M4 6l4 4 4-4\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>`;\n }\n\n private _iconX() {\n return html`<svg\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 12 12\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M3 3l6 6M9 3l-6 6\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n />\n </svg>`;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'arvea-select': ArveaSelect;\n }\n}\n","import { css } from 'lit';\nimport { tokenStyles } from '../../tokens/tokens.styles';\n\nexport const arveaTagStyles = [\n tokenStyles,\n css`\n :host {\n display: inline-flex;\n vertical-align: middle;\n }\n\n .tag {\n display: inline-flex;\n align-items: center;\n gap: var(--tag-gap);\n height: var(--tag-height);\n padding: var(--tag-padding);\n background: var(--tag-bg);\n color: var(--tag-text);\n border: 1px solid var(--tag-border);\n border-radius: var(--tag-radius);\n font-size: var(--tag-font-size);\n font-weight: var(--tag-font-weight);\n font-family: inherit;\n line-height: 1;\n cursor: default;\n transition: background 0.15s ease, color 0.15s ease, border-color 0.15s ease;\n box-sizing: border-box;\n }\n\n :host([clickable]) .tag {\n cursor: pointer;\n }\n\n :host([clickable]) .tag:hover {\n background: var(--tag-bg-hover);\n }\n\n :host([selected]) .tag {\n background: var(--tag-bg-selected);\n color: var(--tag-text-selected);\n border-color: var(--tag-border-selected);\n }\n\n :host([selected][clickable]) .tag:hover {\n background: var(--tag-bg-selected-hover, #1a6368);\n border-color: var(--tag-border-selected);\n }\n\n :host([disabled]) .tag {\n opacity: 0.5;\n pointer-events: none;\n }\n\n .remove {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 14px;\n height: 14px;\n padding: 0;\n margin-left: 2px;\n border: 0;\n background: transparent;\n color: var(--tag-remove-color);\n border-radius: 9999px;\n cursor: pointer;\n transition: background 0.15s ease;\n }\n\n .remove:hover {\n background: var(--tag-remove-hover-bg);\n }\n\n :host([selected]) .remove {\n color: var(--tag-remove-color-selected);\n }\n\n ::slotted([slot='prefix']),\n ::slotted([slot='suffix']) {\n display: inline-flex;\n align-items: center;\n }\n\n button.tag {\n font-family: inherit;\n border-width: 1px;\n }\n button.tag:focus-visible {\n outline: 2px solid var(--input-border-focus);\n outline-offset: 2px;\n }\n `,\n];\n","import { LitElement, html, nothing, svg } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { arveaTagStyles } from './arvea-tag.styles';\n\n/**\n * @element arvea-tag\n *\n * @prop {boolean} selected - Renders selected styles\n * @prop {boolean} clickable - Renders as a <button> and dispatches click\n * @prop {boolean} removable - Renders a close button on the right\n * @prop {boolean} disabled\n *\n * @slot prefix - Leading icon\n * @slot - Default slot for tag text\n * @slot suffix - Trailing icon\n *\n * @fires arvea-remove - When the remove button is clicked\n */\n@customElement('arvea-tag')\nexport class ArveaTag extends LitElement {\n static styles = arveaTagStyles;\n\n @property({ type: Boolean, reflect: true }) selected = false;\n @property({ type: Boolean, reflect: true }) clickable = false;\n @property({ type: Boolean, reflect: true }) removable = false;\n @property({ type: Boolean, reflect: true }) disabled = false;\n\n private _onRemove = (e: MouseEvent) => {\n e.stopPropagation();\n this.dispatchEvent(\n new CustomEvent('arvea-remove', { bubbles: true, composed: true }),\n );\n };\n\n private _renderInner() {\n return html`\n <slot name=\"prefix\"></slot>\n <slot></slot>\n <slot name=\"suffix\"></slot>\n ${this.removable\n ? html`\n <button\n part=\"remove\"\n class=\"remove\"\n type=\"button\"\n aria-label=\"Remove\"\n ?disabled=${this.disabled}\n @click=${this._onRemove}\n >\n ${svg`<svg width=\"10\" height=\"10\" viewBox=\"0 0 10 10\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M1.5 1.5L8.5 8.5M8.5 1.5L1.5 8.5\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"/>\n </svg>`}\n </button>\n `\n : nothing}\n `;\n }\n\n render() {\n return this.clickable\n ? html`\n <button\n part=\"base\"\n class=\"tag\"\n type=\"button\"\n ?disabled=${this.disabled}\n aria-pressed=${this.selected ? 'true' : 'false'}\n >\n ${this._renderInner()}\n </button>\n `\n : html`<span part=\"base\" class=\"tag\" role=\"status\">${this._renderInner()}</span>`;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'arvea-tag': ArveaTag;\n }\n}\n","import { css } from 'lit';\nimport { tokenStyles } from '../../tokens/tokens.styles';\n\nexport const arveaSpinnerStyles = [\n tokenStyles,\n css`\n :host {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n color: var(--spinner-color);\n }\n\n .spinner {\n display: inline-block;\n border-radius: 50%;\n border-style: solid;\n border-color: var(--spinner-track-color);\n border-top-color: var(--spinner-color);\n animation: arvea-spin 0.7s linear infinite;\n }\n\n :host([size='sm']) .spinner,\n .spinner {\n width: var(--spinner-size-sm);\n height: var(--spinner-size-sm);\n border-width: var(--spinner-border-sm);\n }\n\n :host([size='md']) .spinner {\n width: var(--spinner-size-md);\n height: var(--spinner-size-md);\n border-width: var(--spinner-border-md);\n }\n\n :host([size='lg']) .spinner {\n width: var(--spinner-size-lg);\n height: var(--spinner-size-lg);\n border-width: var(--spinner-border-lg);\n }\n\n .label {\n font-size: var(--spinner-label-size, 0.875rem);\n font-weight: 500;\n color: var(--spinner-label-color, currentColor);\n margin-inline-start: 8px;\n }\n\n @keyframes arvea-spin {\n to {\n transform: rotate(360deg);\n }\n }\n\n @media (prefers-reduced-motion: reduce) {\n .spinner {\n animation-duration: 2s;\n }\n }\n `,\n];\n","import { LitElement, html } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { arveaSpinnerStyles } from './arvea-spinner.styles';\nimport type { ArveaSpinnerSize } from './arvea-spinner.types';\n\n/**\n * @element arvea-spinner\n *\n * @prop {'sm'|'md'|'lg'} size - Spinner size (default: 'md')\n * @prop {string} label - Accessible loading label (default: 'Loading')\n */\n@customElement('arvea-spinner')\nexport class ArveaSpinner extends LitElement {\n static styles = arveaSpinnerStyles;\n\n @property({ type: String, reflect: true }) size: ArveaSpinnerSize = 'md';\n @property({ type: String }) label = 'Loading';\n\n render() {\n return html`\n <span\n part=\"base\"\n class=\"spinner\"\n role=\"status\"\n aria-live=\"polite\"\n aria-label=${this.label}\n ></span>\n ${this.label ? html`<span part=\"label\" class=\"label\">${this.label}</span>` : ''}\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'arvea-spinner': ArveaSpinner;\n }\n}\n","import { css } from 'lit';\nimport { tokenStyles } from '../../tokens/tokens.styles';\n\nexport const arveaTooltipStyles = [\n tokenStyles,\n css`\n :host {\n display: inline-block;\n position: relative;\n }\n\n .tooltip {\n position: absolute;\n z-index: 1000;\n max-width: var(--tooltip-max-width);\n padding: var(--tooltip-padding);\n background: var(--tooltip-bg);\n color: var(--tooltip-text);\n border-radius: var(--tooltip-radius);\n font-family: inherit;\n font-size: var(--tooltip-font-size);\n font-weight: var(--tooltip-font-weight);\n line-height: 1.4;\n pointer-events: none;\n opacity: 0;\n transform: scale(0.95);\n transition: opacity 0.12s ease, transform 0.12s ease;\n white-space: normal;\n width: max-content;\n }\n\n :host([open]) .tooltip {\n opacity: 1;\n transform: scale(1);\n }\n\n /* Placement: top */\n :host([placement='top']) .tooltip,\n .tooltip {\n bottom: calc(100% + var(--tooltip-offset));\n left: 50%;\n transform: translateX(-50%) scale(0.95);\n }\n :host([placement='top'][open]) .tooltip,\n :host([open]) .tooltip {\n transform: translateX(-50%) scale(1);\n }\n\n /* Placement: bottom */\n :host([placement='bottom']) .tooltip {\n bottom: auto;\n top: calc(100% + var(--tooltip-offset));\n left: 50%;\n transform: translateX(-50%) scale(0.95);\n }\n :host([placement='bottom'][open]) .tooltip {\n transform: translateX(-50%) scale(1);\n }\n\n /* Placement: left */\n :host([placement='left']) .tooltip {\n bottom: auto;\n top: 50%;\n left: auto;\n right: calc(100% + var(--tooltip-offset));\n transform: translateY(-50%) scale(0.95);\n }\n :host([placement='left'][open]) .tooltip {\n transform: translateY(-50%) scale(1);\n }\n\n /* Placement: right */\n :host([placement='right']) .tooltip {\n bottom: auto;\n top: 50%;\n left: calc(100% + var(--tooltip-offset));\n transform: translateY(-50%) scale(0.95);\n }\n :host([placement='right'][open]) .tooltip {\n transform: translateY(-50%) scale(1);\n }\n\n /* Arrow */\n .arrow {\n position: absolute;\n width: 0;\n height: 0;\n border: var(--tooltip-arrow-size) solid transparent;\n }\n :host([placement='top']) .arrow,\n .arrow {\n bottom: calc(-2 * var(--tooltip-arrow-size));\n left: 50%;\n transform: translateX(-50%);\n border-top-color: var(--tooltip-bg);\n }\n :host([placement='bottom']) .arrow {\n bottom: auto;\n top: calc(-2 * var(--tooltip-arrow-size));\n left: 50%;\n transform: translateX(-50%);\n border-top-color: transparent;\n border-bottom-color: var(--tooltip-bg);\n }\n :host([placement='left']) .arrow {\n bottom: auto;\n top: 50%;\n left: auto;\n right: calc(-2 * var(--tooltip-arrow-size));\n transform: translateY(-50%);\n border-top-color: transparent;\n border-left-color: var(--tooltip-bg);\n }\n :host([placement='right']) .arrow {\n bottom: auto;\n top: 50%;\n left: calc(-2 * var(--tooltip-arrow-size));\n transform: translateY(-50%);\n border-top-color: transparent;\n border-right-color: var(--tooltip-bg);\n }\n `,\n];\n","import { LitElement, html, nothing } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { arveaTooltipStyles } from './arvea-tooltip.styles';\nimport type { ArveaTooltipPlacement } from './arvea-tooltip.types';\n\nlet _id = 0;\n\n/**\n * @element arvea-tooltip\n *\n * Wrap a trigger element with this component to display a tooltip on\n * hover / focus.\n *\n * @prop {string} content - Tooltip text\n * @prop {'top'|'right'|'bottom'|'left'} placement - Default 'top'\n * @prop {boolean} open - Force open\n * @prop {boolean} disabled - Disables tooltip\n * @prop {number} delay - Show delay in ms (default 100)\n *\n * @slot - The trigger element\n * @slot content - Rich content alternative to the `content` attribute\n */\n@customElement('arvea-tooltip')\nexport class ArveaTooltip extends LitElement {\n static styles = arveaTooltipStyles;\n\n @property({ type: String }) content = '';\n @property({ type: String, reflect: true })\n placement: ArveaTooltipPlacement = 'top';\n @property({ type: Boolean, reflect: true }) open = false;\n @property({ type: Boolean, reflect: true }) disabled = false;\n @property({ type: Number }) delay = 100;\n\n private _showTimer?: number;\n private _hideTimer?: number;\n private _id = `arvea-tooltip-${++_id}`;\n\n connectedCallback(): void {\n super.connectedCallback();\n this.addEventListener('mouseenter', this._show);\n this.addEventListener('mouseleave', this._hide);\n this.addEventListener('focusin', this._show);\n this.addEventListener('focusout', this._hide);\n }\n\n disconnectedCallback(): void {\n super.disconnectedCallback();\n this.removeEventListener('mouseenter', this._show);\n this.removeEventListener('mouseleave', this._hide);\n this.removeEventListener('focusin', this._show);\n this.removeEventListener('focusout', this._hide);\n window.clearTimeout(this._showTimer);\n window.clearTimeout(this._hideTimer);\n }\n\n private _show = () => {\n if (this.disabled) return;\n window.clearTimeout(this._hideTimer);\n this._showTimer = window.setTimeout(() => {\n this.open = true;\n }, this.delay);\n };\n\n private _hide = () => {\n window.clearTimeout(this._showTimer);\n this._hideTimer = window.setTimeout(() => {\n this.open = false;\n }, 60);\n };\n\n render() {\n return html`\n <slot aria-describedby=${this._id}></slot>\n ${this.disabled\n ? nothing\n : html`\n <span part=\"tooltip\" class=\"tooltip\" role=\"tooltip\" id=${this._id}>\n ${this.content || html`<slot name=\"content\"></slot>`}\n <span part=\"arrow\" class=\"arrow\" aria-hidden=\"true\"></span>\n </span>\n `}\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'arvea-tooltip': ArveaTooltip;\n }\n}\n","import { css } from 'lit';\nimport { tokenStyles } from '../../tokens/tokens.styles';\n\nexport const arveaCardStyles = [\n tokenStyles,\n css`\n :host {\n display: block;\n font-family: inherit;\n color: var(--colors-slate-900);\n }\n\n .card {\n display: flex;\n flex-direction: column;\n gap: 8px;\n background: var(--card-bg);\n border: 1px solid var(--card-border);\n border-radius: var(--card-radius);\n padding: var(--card-padding);\n box-shadow: var(--card-shadow);\n transition: box-shadow 0.15s ease, transform 0.15s ease;\n box-sizing: border-box;\n }\n\n /* Variants */\n :host([variant='elevated']) .card {\n border-color: transparent;\n box-shadow: var(--card-shadow-elevated);\n }\n\n :host([variant='outline']) .card {\n box-shadow: none;\n }\n\n /* Padding */\n :host([padding='none']) .card {\n padding: 0;\n }\n :host([padding='sm']) .card {\n padding: 8px;\n }\n :host([padding='md']) .card,\n .card {\n padding: var(--card-padding);\n }\n :host([padding='lg']) .card {\n padding: 24px;\n }\n\n /* Interactive */\n :host([interactive]) .card {\n cursor: pointer;\n }\n :host([interactive]) .card:hover {\n box-shadow: var(--card-shadow-elevated);\n transform: translateY(-1px);\n }\n :host([interactive]) .card:focus-visible {\n outline: 2px solid var(--input-border-focus);\n outline-offset: 2px;\n }\n\n ::slotted([slot='header']) {\n font-weight: var(--font-weight-semibold);\n font-size: var(--font-size-base);\n }\n\n ::slotted([slot='footer']) {\n margin-top: 8px;\n display: flex;\n justify-content: flex-end;\n gap: 8px;\n }\n `,\n];\n","import { LitElement, html } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { arveaCardStyles } from './arvea-card.styles';\nimport type { ArveaCardVariant } from './arvea-card.types';\n\n/**\n * @element arvea-card\n *\n * Generic container with three variants and four padding options.\n *\n * @prop {'default'|'elevated'|'outline'} variant\n * @prop {'none'|'sm'|'md'|'lg'} padding\n * @prop {boolean} interactive - hover/focus styles\n *\n * @slot header\n * @slot - main content\n * @slot footer\n */\n@customElement('arvea-card')\nexport class ArveaCard extends LitElement {\n static styles = arveaCardStyles;\n\n @property({ type: String, reflect: true })\n variant: ArveaCardVariant = 'default';\n @property({ type: String, reflect: true })\n padding: 'none' | 'sm' | 'md' | 'lg' = 'md';\n @property({ type: Boolean, reflect: true }) interactive = false;\n\n render() {\n return html`\n <div\n part=\"base\"\n class=\"card\"\n tabindex=${this.interactive ? '0' : -1}\n role=${this.interactive ? 'button' : 'region'}\n >\n <slot name=\"header\"></slot>\n <slot></slot>\n <slot name=\"footer\"></slot>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'arvea-card': ArveaCard;\n }\n}\n","import { css } from 'lit';\nimport { tokenStyles } from '../../tokens/tokens.styles';\n\nexport const arveaMediaCardStyles = [\n tokenStyles,\n css`\n :host {\n display: block;\n }\n\n /* ── Base card ─────────────────────────────────────────── */\n .card {\n position: relative;\n width: 100%;\n height: 100%;\n min-height: 180px;\n overflow: hidden;\n background-size: cover;\n background-position: center;\n background-repeat: no-repeat;\n\n /* defaults driven by host attributes */\n border-radius: var(--media-card-radius, 14px);\n }\n\n /* ── Size ──────────────────────────────────────────────── */\n :host([size='sm']) .card { min-height: 120px; }\n :host([size='md']) .card { min-height: 180px; }\n :host([size='lg']) .card { min-height: 260px; }\n :host([size='xl']) .card { min-height: 360px; }\n\n /* ── Radius ────────────────────────────────────────────── */\n :host([radius='sm']) .card { border-radius: 6px; }\n :host([radius='md']) .card { border-radius: 14px; }\n :host([radius='lg']) .card { border-radius: 22px; }\n :host([radius='full']) .card { border-radius: 32px; }\n\n /* ── Overlay gradient ──────────────────────────────────── */\n .overlay {\n position: absolute;\n inset: 0;\n pointer-events: none;\n transition: background 0.2s ease;\n }\n\n /* bottom-anchored gradient (default — label-position=bottom) */\n :host(:not([label-position='top'])) .overlay {\n background: linear-gradient(\n to top,\n rgba(0, 0, 0, var(--overlay-stop, 0.55)) 0%,\n rgba(0, 0, 0, calc(var(--overlay-stop, 0.55) * 0.18)) 50%,\n transparent 100%\n );\n }\n\n /* top-anchored gradient when label is at top */\n :host([label-position='top']) .overlay {\n background: linear-gradient(\n to bottom,\n rgba(0, 0, 0, var(--overlay-stop, 0.55)) 0%,\n rgba(0, 0, 0, calc(var(--overlay-stop, 0.55) * 0.18)) 50%,\n transparent 100%\n );\n }\n\n :host([overlay='none']) { --overlay-stop: 0; }\n :host([overlay='light']) { --overlay-stop: 0.30; }\n :host([overlay='medium']) { --overlay-stop: 0.55; }\n :host([overlay='dark']) { --overlay-stop: 0.80; }\n\n /* ── Footer (label + arrow) ────────────────────────────── */\n .footer {\n position: absolute;\n left: 0;\n right: 0;\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 8px;\n padding: 14px 14px 14px 16px;\n }\n\n .footer--bottom {\n bottom: 0;\n }\n\n .footer--top {\n top: 0;\n }\n\n /* ── Label ─────────────────────────────────────────────── */\n .label {\n font-family: var(--font-family, 'Inter', system-ui, sans-serif);\n font-size: 0.8rem;\n font-weight: 700;\n letter-spacing: 0.06em;\n text-transform: uppercase;\n color: #ffffff;\n line-height: 1.2;\n flex: 1;\n }\n\n /* ── Arrow button ──────────────────────────────────────── */\n .arrow {\n flex-shrink: 0;\n width: 36px;\n height: 36px;\n border-radius: 10px;\n border: none;\n background: #ffffff;\n color: #0f172a;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n transition:\n background 0.15s ease,\n transform 0.15s ease;\n }\n\n .arrow:hover {\n background: #f1f5f9;\n transform: scale(1.08);\n }\n\n .arrow:focus-visible {\n outline: 2px solid #ffffff;\n outline-offset: 2px;\n }\n `,\n];\n","import { LitElement, html } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { arveaMediaCardStyles } from './arvea-media-card.styles';\n\n/**\n * @element arvea-media-card\n *\n * Full-bleed image card with an uppercase label and a clickable arrow button.\n *\n * @prop {'sm'|'md'|'lg'|'xl'} size - Card height (default: md)\n * @prop {'sm'|'md'|'lg'|'full'} radius - Border-radius (default: md)\n * @prop {'none'|'light'|'medium'|'dark'} overlay - Gradient darkness (default: medium)\n * @prop {'bottom'|'top'} label-position - Where the label & arrow sit (default: bottom)\n * @prop {string} src - Background image URL\n * @prop {string} label - Category / title text (displayed uppercase)\n * @prop {string} href - URL the arrow button navigates to\n * @prop {string} target - Link target (default: _blank)\n *\n * @fires arvea-media-card-click - { href } fired when the arrow button is clicked\n */\n@customElement('arvea-media-card')\nexport class ArveaMediaCard extends LitElement {\n static styles = arveaMediaCardStyles;\n\n @property({ type: String }) src = '';\n @property({ type: String }) label = '';\n @property({ type: String }) href = '';\n @property({ type: String }) target = '_blank';\n\n @property({ type: String, reflect: true }) size: 'sm' | 'md' | 'lg' | 'xl' = 'md';\n @property({ type: String, reflect: true }) radius: 'sm' | 'md' | 'lg' | 'full' = 'md';\n @property({ type: String, reflect: true }) overlay: 'none' | 'light' | 'medium' | 'dark' = 'medium';\n @property({ type: String, reflect: true, attribute: 'label-position' })\n labelPosition: 'bottom' | 'top' = 'bottom';\n\n private _navigate(e: Event) {\n e.stopPropagation();\n this.dispatchEvent(\n new CustomEvent('arvea-media-card-click', {\n detail: { href: this.href },\n bubbles: true,\n composed: true,\n }),\n );\n if (this.href) window.open(this.href, this.target);\n }\n\n render() {\n return html`\n <div\n part=\"base\"\n class=\"card\"\n style=\"background-image: url('${this.src}')\"\n role=\"img\"\n aria-label=${this.label}\n >\n <div part=\"overlay\" class=\"overlay\"></div>\n <div part=\"footer\" class=\"footer footer--${this.labelPosition}\">\n <span part=\"label\" class=\"label\">${this.label}</span>\n <button\n part=\"arrow\"\n class=\"arrow\"\n type=\"button\"\n aria-label=\"Go to ${this.label}\"\n @click=${this._navigate}\n >\n <svg\n width=\"18\"\n height=\"18\"\n viewBox=\"0 0 18 18\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n >\n <path\n d=\"M4.5 13.5L13.5 4.5M13.5 4.5H7.5M13.5 4.5V10.5\"\n stroke=\"currentColor\"\n stroke-width=\"1.6\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </button>\n </div>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'arvea-media-card': ArveaMediaCard;\n }\n}\n","import { css } from 'lit';\nimport { tokenStyles } from '../../tokens/tokens.styles';\n\nexport const arveaProductCardStyles = [\n tokenStyles,\n css`\n :host {\n display: block;\n align-self: start;\n }\n\n /* ── Wrapper ───────────────────────────────────────────── */\n .card {\n display: flex;\n flex-direction: column;\n font-family: var(--font-family, 'Inter', system-ui, sans-serif);\n }\n\n /* ── Image area ────────────────────────────────────────── */\n .image-wrapper {\n position: relative;\n width: 100%;\n background: var(--product-card-image-bg, #f0f0f0);\n aspect-ratio: 4 / 5;\n border-radius: var(--product-card-radius, 12px);\n overflow: hidden;\n }\n\n .image {\n width: 100%;\n height: 100%;\n object-fit: contain;\n object-position: center;\n display: block;\n }\n\n /* ── Badge ─────────────────────────────────────────────── */\n .badge {\n position: absolute;\n top: 12px;\n left: 12px;\n padding: 5px 12px;\n font-size: 0.65rem;\n font-weight: 700;\n letter-spacing: 0.08em;\n text-transform: uppercase;\n color: #ffffff;\n white-space: nowrap;\n border-radius: 4px;\n pointer-events: none;\n }\n\n /* ── Cart button ───────────────────────────────────────── */\n .cart-btn {\n position: absolute;\n bottom: 12px;\n left: 12px;\n width: 36px;\n height: 36px;\n border-radius: 50%;\n border: none;\n background: var(--product-card-btn-bg, #ffffff);\n color: var(--product-card-btn-color, #0f172a);\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.12);\n transition: color 0.15s ease;\n }\n\n .cart-btn:hover {\n color: var(--product-card-accent, #ee100c);\n }\n\n .cart-btn:focus-visible {\n outline: 2px solid var(--product-card-accent, #e53935);\n outline-offset: 2px;\n }\n\n /* ── Info section ──────────────────────────────────────── */\n .info {\n padding: 10px 0 0;\n display: flex;\n flex-direction: column;\n gap: 4px;\n }\n\n /* ── Product name ──────────────────────────────────────── */\n .name {\n font-size: var(--product-card-name-size, 0.72rem);\n font-weight: var(--product-card-name-weight, 700);\n letter-spacing: 0.05em;\n text-transform: uppercase;\n color: var(--product-card-name-color, #374151);\n line-height: 1.3;\n margin: 0;\n cursor: default;\n transition: color 0.15s ease;\n\n /* Single line — truncate with … if too long */\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n .name:hover {\n color: var(--product-card-accent, #1edfd5);\n }\n\n /* ── Price ─────────────────────────────────────────────── */\n .price {\n font-size: var(--product-card-price-size, 0.9rem);\n font-weight: var(--product-card-price-weight, 700);\n color: var(--product-card-price-color, #0f172a);\n line-height: 1.2;\n margin: 0;\n }\n `,\n];\n","import { LitElement, html, nothing } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { arveaProductCardStyles } from './arvea-product-card.styles';\n\n/**\n * @element arvea-product-card\n *\n * E-commerce product card with image, add-to-cart button, name and price.\n *\n * @prop {string} src - Product image URL\n * @prop {string} name - Product name (displayed uppercase)\n * @prop {string} price - Formatted price (e.g. \"16,900\")\n * @prop {string} currency - Currency label shown after the price (e.g. \"TND\")\n * @prop {string} alt - Alt text for the product image (defaults to name)\n * @prop {string} badge - Optional badge text (e.g. \"BIENTÔT DISPONIBLE\")\n * @prop {string} badge-color - Badge background color (default: #e53935)\n *\n * @fires arvea-product-card-add - Fired when the cart button is clicked\n *\n * @csspart card - The outer wrapper\n * @csspart image-wrapper - The image container\n * @csspart image - The <img> element\n * @csspart badge - The badge label\n * @csspart cart-btn - The circular add-to-cart button\n * @csspart info - The text section below the image\n * @csspart name - The product name element\n * @csspart price - The price element\n */\n@customElement('arvea-product-card')\nexport class ArveaProductCard extends LitElement {\n static styles = arveaProductCardStyles;\n\n @property({ type: String }) src = '';\n @property({ type: String }) name = '';\n @property({ type: String }) price = '';\n @property({ type: String }) currency = '';\n @property({ type: String }) alt = '';\n @property({ type: String }) badge = '';\n @property({ type: String, attribute: 'badge-color' }) badgeColor = '#e53935';\n\n private _onAdd(e: Event) {\n e.stopPropagation();\n this.dispatchEvent(\n new CustomEvent('arvea-product-card-add', {\n detail: { name: this.name, price: this.price, currency: this.currency },\n bubbles: true,\n composed: true,\n }),\n );\n }\n\n render() {\n const priceLabel = this.currency\n ? `${this.price} ${this.currency}`\n : this.price;\n\n return html`\n <div part=\"card\" class=\"card\">\n <div part=\"image-wrapper\" class=\"image-wrapper\">\n <img\n part=\"image\"\n class=\"image\"\n src=${this.src}\n alt=${this.alt || this.name}\n loading=\"lazy\"\n decoding=\"async\"\n />\n ${this.badge\n ? html`<span\n part=\"badge\"\n class=\"badge\"\n style=\"background:${this.badgeColor}\"\n >${this.badge}</span>`\n : nothing}\n <button\n part=\"cart-btn\"\n class=\"cart-btn\"\n type=\"button\"\n aria-label=\"Ajouter au panier — ${this.name}\"\n @click=${this._onAdd}\n >\n <svg\n width=\"17\"\n height=\"17\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"1.8\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n aria-hidden=\"true\"\n >\n <circle cx=\"9\" cy=\"21\" r=\"1\" />\n <circle cx=\"20\" cy=\"21\" r=\"1\" />\n <path d=\"M1 1h4l2.68 13.39a2 2 0 0 0 2 1.61h9.72a2 2 0 0 0 2-1.61L23 6H6\" />\n </svg>\n </button>\n </div>\n\n <div part=\"info\" class=\"info\">\n <p part=\"name\" class=\"name\">${this.name}</p>\n <p part=\"price\" class=\"price\">${priceLabel}</p>\n </div>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'arvea-product-card': ArveaProductCard;\n }\n}\n","import { css } from 'lit';\nimport { tokenStyles } from '../../tokens/tokens.styles';\n\nexport const arveaActionButtonStyles = [\n tokenStyles,\n css`\n :host {\n display: inline-block;\n position: relative;\n }\n\n /* ── Button ─────────────────────────────────────────────── */\n .button {\n position: relative;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n border: none;\n border-radius: var(--action-btn-radius, 12px);\n cursor: pointer;\n font-family: var(--font-family, 'Inter', system-ui, sans-serif);\n transition: opacity 0.15s ease, transform 0.15s ease;\n outline: none;\n\n /* color & bg come from inline style set by the component */\n background: var(--action-btn-bg, #2c9ca0);\n color: var(--action-btn-color, #ffffff);\n }\n\n .button:focus-visible {\n outline: 2px solid currentColor;\n outline-offset: 3px;\n }\n\n .button:disabled {\n background: var(--action-btn-disabled-bg, #e2e8f0) !important;\n color: var(--action-btn-disabled-color, #94a3b8) !important;\n cursor: not-allowed;\n }\n\n :host([variant='delete']) .button:disabled {\n background: var(--action-btn-delete-bg, #e53935) !important;\n color: var(--action-btn-fg, #ffffff) !important;\n opacity: 0.45;\n }\n\n /* ── Sizes ──────────────────────────────────────────────── */\n\n /* default — square button per design system standards */\n :host([size='default']) .button,\n :host(:not([size])) .button {\n width: var(--action-btn-size-default, 40px);\n height: var(--action-btn-size-default, 40px);\n }\n\n :host([size='sm']) .button {\n width: var(--action-btn-size-sm, 32px);\n height: var(--action-btn-size-sm, 32px);\n }\n\n :host([size='md']) .button {\n width: var(--action-btn-size-md, 44px);\n height: var(--action-btn-size-md, 44px);\n }\n\n :host([size='lg']) .button {\n width: var(--action-btn-size-lg, 54px);\n height: var(--action-btn-size-lg, 54px);\n }\n\n /* ── Icon ───────────────────────────────────────────────── */\n .icon {\n display: flex;\n align-items: center;\n justify-content: center;\n pointer-events: none;\n }\n\n :host([size='sm']) .icon svg { width: 14px; height: 14px; }\n :host([size='lg']) .icon svg { width: 22px; height: 22px; }\n .icon svg { width: 20px; height: 20px; }\n\n /* ── Tooltip ────────────────────────────────────────────── */\n .tooltip {\n position: absolute;\n bottom: calc(100% + 8px);\n left: 50%;\n transform: translateX(-50%);\n white-space: nowrap;\n background: var(--action-btn-tooltip-bg, #1e293b);\n color: var(--action-btn-tooltip-color, #ffffff);\n font-size: var(--action-btn-tooltip-size, 0.72rem);\n font-weight: 500;\n padding: 4px 10px;\n border-radius: var(--action-btn-tooltip-radius, 6px);\n pointer-events: none;\n opacity: 0;\n transition: opacity 0.15s ease, transform 0.15s ease;\n transform: translateX(-50%) translateY(4px);\n z-index: 10;\n }\n\n /* small arrow below tooltip */\n .tooltip::after {\n content: '';\n position: absolute;\n top: 100%;\n left: 50%;\n transform: translateX(-50%);\n border: 5px solid transparent;\n border-top-color: var(--action-btn-tooltip-bg, #1e293b);\n }\n\n :host(:hover) .tooltip,\n .button:focus-visible ~ .tooltip {\n opacity: 1;\n transform: translateX(-50%) translateY(0);\n }\n\n :host([disabled]) .tooltip {\n display: none;\n }\n `,\n];\n","import { LitElement, html, nothing } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { unsafeSVG } from 'lit/directives/unsafe-svg.js';\nimport { arveaActionButtonStyles } from './arvea-action-button.styles';\nimport type { ArveaActionButtonSize, ArveaActionButtonVariant, ArveaActionButtonVariantConfig } from './arvea-action-button.types';\n\nconst SVG = {\n validate: `<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polyline points=\"20 6 9 17 4 12\"/></svg>`,\n edit: `<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"/><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"/></svg>`,\n payment: `<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"1\" y=\"4\" width=\"22\" height=\"16\" rx=\"2\"/><line x1=\"1\" y1=\"10\" x2=\"23\" y2=\"10\"/></svg>`,\n order: `<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M6 2 3 6v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V6l-3-4z\"/><line x1=\"3\" y1=\"6\" x2=\"21\" y2=\"6\"/><path d=\"M16 10a4 4 0 0 1-8 0\"/></svg>`,\n price: `<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><line x1=\"12\" y1=\"1\" x2=\"12\" y2=\"23\"/><path d=\"M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6\"/></svg>`,\n delete: `<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polyline points=\"3 6 5 6 21 6\"/><path d=\"M19 6l-1 14a2 2 0 0 1-2 2H8a2 2 0 0 1-2-2L5 6\"/><path d=\"M10 11v6\"/><path d=\"M14 11v6\"/><path d=\"M9 6V4a1 1 0 0 1 1-1h4a1 1 0 0 1 1 1v2\"/></svg>`,\n view: `<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z\"/><circle cx=\"12\" cy=\"12\" r=\"3\"/></svg>`,\n pdf: `<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\"/><polyline points=\"14 2 14 8 20 8\"/><line x1=\"16\" y1=\"13\" x2=\"8\" y2=\"13\"/><line x1=\"16\" y1=\"17\" x2=\"8\" y2=\"17\"/><polyline points=\"10 9 9 9 8 9\"/></svg>`,\n pause: `<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"6\" y=\"4\" width=\"4\" height=\"16\"/><rect x=\"14\" y=\"4\" width=\"4\" height=\"16\"/></svg>`,\n download: `<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\"/><polyline points=\"7 10 12 15 17 10\"/><line x1=\"12\" y1=\"15\" x2=\"12\" y2=\"3\"/></svg>`,\n upload: `<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\"/><polyline points=\"17 8 12 3 7 8\"/><line x1=\"12\" y1=\"3\" x2=\"12\" y2=\"15\"/></svg>`,\n copy: `<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"9\" y=\"9\" width=\"13\" height=\"13\" rx=\"2\"/><path d=\"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1\"/></svg>`,\n print: `<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polyline points=\"6 9 6 2 18 2 18 9\"/><path d=\"M6 18H4a2 2 0 0 1-2-2v-5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2h-2\"/><rect x=\"6\" y=\"14\" width=\"12\" height=\"8\"/></svg>`,\n settings: `<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><circle cx=\"12\" cy=\"12\" r=\"3\"/><path d=\"M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1-2.83 2.83l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-4 0v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83-2.83l.06-.06A1.65 1.65 0 0 0 4.68 15a1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1 0-4h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 2.83-2.83l.06.06A1.65 1.65 0 0 0 9 4.68a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 4 0v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 2.83l-.06.06A1.65 1.65 0 0 0 19.4 9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 0 4h-.09a1.65 1.65 0 0 0-1.51 1z\"/></svg>`,\n archive: `<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polyline points=\"21 8 21 21 3 21 3 8\"/><rect x=\"1\" y=\"3\" width=\"22\" height=\"5\"/><line x1=\"10\" y1=\"12\" x2=\"14\" y2=\"12\"/></svg>`,\n restore: `<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polyline points=\"1 4 1 10 7 10\"/><path d=\"M3.51 15a9 9 0 1 0 .49-3.5\"/></svg>`,\n};\n\nconst VARIANT_MAP: Record<ArveaActionButtonVariant, ArveaActionButtonVariantConfig> = {\n validate: { icon: SVG.validate, bgColor: 'var(--action-btn-validate-bg)', color: 'var(--action-btn-fg)' },\n edit: { icon: SVG.edit, bgColor: 'var(--action-btn-edit-bg)', color: 'var(--action-btn-fg)' },\n payment: { icon: SVG.payment, bgColor: 'var(--action-btn-payment-bg)', color: 'var(--action-btn-fg)' },\n order: { icon: SVG.order, bgColor: 'var(--action-btn-order-bg)', color: 'var(--action-btn-fg)' },\n price: { icon: SVG.price, bgColor: 'var(--action-btn-price-bg)', color: 'var(--action-btn-fg)' },\n delete: { icon: SVG.delete, bgColor: 'var(--action-btn-delete-bg)', color: 'var(--action-btn-fg)' },\n view: { icon: SVG.view, bgColor: 'var(--action-btn-view-bg)', color: 'var(--action-btn-fg)' },\n pdf: { icon: SVG.pdf, bgColor: 'var(--action-btn-pdf-bg)', color: 'var(--action-btn-fg)' },\n pause: { icon: SVG.pause, bgColor: 'var(--action-btn-pause-bg)', color: 'var(--action-btn-fg)' },\n download: { icon: SVG.download, bgColor: 'var(--action-btn-download-bg)', color: 'var(--action-btn-fg)' },\n upload: { icon: SVG.upload, bgColor: 'var(--action-btn-upload-bg)', color: 'var(--action-btn-fg)' },\n copy: { icon: SVG.copy, bgColor: 'var(--action-btn-copy-bg)', color: 'var(--action-btn-fg)' },\n print: { icon: SVG.print, bgColor: 'var(--action-btn-print-bg)', color: 'var(--action-btn-fg)' },\n settings: { icon: SVG.settings, bgColor: 'var(--action-btn-settings-bg)', color: 'var(--action-btn-fg)' },\n archive: { icon: SVG.archive, bgColor: 'var(--action-btn-archive-bg)', color: 'var(--action-btn-fg)' },\n restore: { icon: SVG.restore, bgColor: 'var(--action-btn-restore-bg)', color: 'var(--action-btn-fg)' },\n};\n\n/**\n * @element arvea-action-button\n *\n * Icon action button with a configurable background color, icon color,\n * and a tooltip label that appears on hover.\n *\n * @prop {ArveaActionButtonVariant} variant - Preset that sets icon + colors automatically\n * @prop {string} icon - SVG markup (overrides variant icon)\n * @prop {string} label - Tooltip text shown on hover (also used as aria-label)\n * @prop {string} bg-color - Background color (overrides variant color)\n * @prop {string} color - Icon/foreground color (overrides variant color)\n * @prop {'sm'|'md'|'lg'} size - Button size (default: md)\n * @prop {boolean} disabled - Disables the button\n *\n * @fires arvea-action-click - Fired on click — detail: { label }\n *\n * @csspart button - The <button> element\n * @csspart icon - The icon wrapper\n * @csspart tooltip - The tooltip label\n */\n@customElement('arvea-action-button')\nexport class ArveaActionButton extends LitElement {\n static styles = arveaActionButtonStyles;\n\n @property({ type: String, reflect: true }) variant: ArveaActionButtonVariant | '' = '';\n @property({ type: String }) icon = '';\n @property({ type: String }) label = '';\n @property({ type: String, attribute: 'bg-color' }) bgColor = '';\n @property({ type: String }) color = '';\n @property({ type: String, reflect: true }) size: ArveaActionButtonSize = 'default';\n @property({ type: Boolean, reflect: true }) disabled = false;\n\n private get _resolved(): { icon: string; bgColor: string; color: string } {\n const preset = this.variant ? VARIANT_MAP[this.variant] : null;\n return {\n icon: this.icon || preset?.icon || '',\n bgColor: this.bgColor || preset?.bgColor || '',\n color: this.color || preset?.color || '',\n };\n }\n\n private _onClick() {\n if (this.disabled) return;\n this.dispatchEvent(\n new CustomEvent('arvea-action-click', {\n detail: { label: this.label },\n bubbles: true,\n composed: true,\n }),\n );\n }\n\n private get _buttonStyle() {\n const { bgColor, color } = this._resolved;\n const parts: string[] = [];\n if (bgColor) parts.push(`background:${bgColor}`);\n if (color) parts.push(`color:${color}`);\n return parts.join(';') || undefined;\n }\n\n render() {\n const { icon } = this._resolved;\n return html`\n <button\n part=\"button\"\n class=\"button\"\n type=\"button\"\n style=${this._buttonStyle ?? nothing}\n ?disabled=${this.disabled}\n aria-label=${this.label || nothing}\n @click=${this._onClick}\n >\n ${icon\n ? html`<span part=\"icon\" class=\"icon\">${unsafeSVG(icon)}</span>`\n : nothing}\n </button>\n ${this.label\n ? html`<span part=\"tooltip\" class=\"tooltip\">${this.label}</span>`\n : nothing}\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'arvea-action-button': ArveaActionButton;\n }\n}\n","import { css } from 'lit';\nimport { tokenStyles } from '../../tokens/tokens.styles';\n\nexport const arveaAvatarStyles = [\n tokenStyles,\n css`\n :host {\n display: inline-flex;\n flex-shrink: 0;\n font-family: inherit;\n }\n\n .avatar {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n overflow: hidden;\n user-select: none;\n font-weight: var(--avatar-font-weight, var(--font-weight-semibold));\n letter-spacing: var(--avatar-letter-spacing, 0.02em);\n box-sizing: border-box;\n }\n\n /* Variants */\n :host([variant='identity']) .avatar,\n .avatar {\n background: var(--avatar-bg-identity);\n color: var(--avatar-text-identity);\n border-radius: var(--avatar-border-radius-identity);\n }\n\n :host([variant='object']) .avatar {\n background: var(--avatar-bg-object);\n color: var(--avatar-text-object);\n border-radius: var(--avatar-border-radius-object);\n }\n\n /* Sizes */\n :host([size='sm']) .avatar {\n width: var(--avatar-size-sm);\n height: var(--avatar-size-sm);\n font-size: var(--avatar-font-sm);\n }\n :host([size='md']) .avatar,\n .avatar {\n width: var(--avatar-size-md);\n height: var(--avatar-size-md);\n font-size: var(--avatar-font-md);\n }\n :host([size='lg']) .avatar {\n width: var(--avatar-size-lg);\n height: var(--avatar-size-lg);\n font-size: var(--avatar-font-lg);\n }\n\n img {\n width: 100%;\n height: 100%;\n object-fit: cover;\n display: block;\n }\n `,\n];\n","import { LitElement, html, nothing } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { arveaAvatarStyles } from './arvea-avatar.styles';\nimport type { ArveaAvatarSize, ArveaAvatarVariant } from './arvea-avatar.types';\n\n/**\n * @element arvea-avatar\n *\n * @prop {string} src - Image URL\n * @prop {string} alt - Image alt text\n * @prop {string} initials - Fallback initials (1-2 chars)\n * @prop {'sm'|'md'|'lg'} size - default 'md'\n * @prop {'identity'|'object'} variant - 'identity' = round, 'object' = square\n */\n@customElement('arvea-avatar')\nexport class ArveaAvatar extends LitElement {\n static styles = arveaAvatarStyles;\n\n @property({ type: String }) src = '';\n @property({ type: String }) alt = '';\n @property({ type: String }) initials = '';\n @property({ type: String, reflect: true }) size: ArveaAvatarSize = 'md';\n @property({ type: String, reflect: true })\n variant: ArveaAvatarVariant = 'identity';\n\n @state() private _imageFailed = false;\n\n private _onError = () => {\n this._imageFailed = true;\n };\n\n private _formatInitials() {\n return this.initials.slice(0, 2).toUpperCase();\n }\n\n render() {\n const showImage = this.src && !this._imageFailed;\n return html`\n <span\n part=\"avatar\"\n class=\"avatar\"\n role=\"img\"\n aria-label=${this.alt || this.initials || nothing}\n >\n ${showImage\n ? html`<img\n part=\"image\"\n src=${this.src}\n alt=${this.alt}\n @error=${this._onError}\n />`\n : this.initials\n ? html`<span part=\"initials\">${this._formatInitials()}</span>`\n : nothing}\n </span>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'arvea-avatar': ArveaAvatar;\n }\n}\n","import { css } from 'lit';\nimport { tokenStyles } from '../../tokens/tokens.styles';\n\nexport const arveaProgressBarStyles = [\n tokenStyles,\n css`\n :host {\n display: block;\n font-family: inherit;\n width: 100%;\n }\n\n .row {\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: 8px;\n margin-bottom: 6px;\n color: var(--progress-label-color);\n font-size: var(--progress-label-size);\n }\n\n .track {\n width: 100%;\n background: var(--progress-track-bg);\n border-radius: var(--progress-radius);\n overflow: hidden;\n position: relative;\n }\n\n :host([size='sm']) .track,\n .track {\n height: var(--progress-height-sm);\n }\n :host([size='md']) .track {\n height: var(--progress-height-md);\n }\n :host([size='lg']) .track {\n height: var(--progress-height-lg);\n }\n\n .fill {\n height: 100%;\n background: var(--progress-fill-bg);\n border-radius: var(--progress-radius);\n transition: width 0.25s ease;\n }\n\n :host([indeterminate]) .fill {\n width: 40% !important;\n animation: arvea-progress-indeterminate 1.2s ease-in-out infinite;\n }\n\n @keyframes arvea-progress-indeterminate {\n 0% {\n transform: translateX(-100%);\n }\n 100% {\n transform: translateX(250%);\n }\n }\n\n @media (prefers-reduced-motion: reduce) {\n .fill {\n transition: none;\n }\n :host([indeterminate]) .fill {\n animation-duration: 3s;\n }\n }\n `,\n];\n","import { LitElement, html, nothing } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { arveaProgressBarStyles } from './arvea-progress-bar.styles';\nimport type { ArveaProgressSize } from './arvea-progress-bar.types';\n\n/**\n * @element arvea-progress-bar\n *\n * @prop {number} value - current value (0..max)\n * @prop {number} max - max value (default 100)\n * @prop {'sm'|'md'|'lg'} size - default 'md'\n * @prop {string} label - label shown above the bar\n * @prop {boolean} showValue - show percentage on the right\n * @prop {boolean} indeterminate - looping animation, ignores value\n */\n@customElement('arvea-progress-bar')\nexport class ArveaProgressBar extends LitElement {\n static styles = arveaProgressBarStyles;\n\n @property({ type: Number }) value = 0;\n @property({ type: Number }) max = 100;\n @property({ type: String, reflect: true }) size: ArveaProgressSize = 'md';\n @property({ type: String }) label = '';\n @property({ type: Boolean, attribute: 'show-value' }) showValue = false;\n @property({ type: Boolean, reflect: true }) indeterminate = false;\n\n private get _percent() {\n if (!this.max) return 0;\n const clamped = Math.max(0, Math.min(this.value, this.max));\n return (clamped / this.max) * 100;\n }\n\n render() {\n const pct = this._percent;\n const hasRow = this.label || this.showValue;\n return html`\n ${hasRow\n ? html`\n <div class=\"row\">\n <span>${this.label}</span>\n ${this.showValue && !this.indeterminate\n ? html`<span>${Math.round(pct)}%</span>`\n : nothing}\n </div>\n `\n : nothing}\n <div\n part=\"track\"\n class=\"track\"\n role=\"progressbar\"\n aria-label=${this.label || 'Progress'}\n aria-valuenow=${this.indeterminate ? nothing : Math.round(pct)}\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n >\n <div\n part=\"fill\"\n class=\"fill\"\n style=\"width: ${this.indeterminate ? 40 : pct}%;\"\n ></div>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'arvea-progress-bar': ArveaProgressBar;\n }\n}\n","import { css } from 'lit';\nimport { tokenStyles } from '../../tokens/tokens.styles';\n\nexport const arveaSkeletonStyles = [\n tokenStyles,\n css`\n :host {\n display: inline-block;\n vertical-align: middle;\n width: 100%;\n }\n\n :host([shape='circle']),\n :host([shape='pill']) {\n width: auto;\n }\n\n .placeholder {\n display: block;\n width: 100%;\n height: 100%;\n background-color: var(--skeleton-bg);\n background-image: linear-gradient(\n 90deg,\n var(--skeleton-bg) 0%,\n var(--skeleton-highlight) 50%,\n var(--skeleton-bg) 100%\n );\n background-repeat: no-repeat;\n background-size: var(--skeleton-pulse-width) 100%;\n background-position: calc(-1 * var(--skeleton-pulse-width)) 0;\n border-radius: var(--skeleton-radius);\n animation: arvea-shimmer var(--skeleton-duration) ease-in-out infinite;\n }\n\n :host([shape='circle']) .placeholder {\n border-radius: 9999px;\n }\n\n :host([shape='pill']) .placeholder {\n border-radius: 9999px;\n }\n\n :host([shape='text']) .placeholder {\n border-radius: var(--skeleton-radius-sm);\n }\n\n .lines {\n display: flex;\n flex-direction: column;\n gap: 8px;\n width: 100%;\n }\n\n .lines .placeholder {\n height: 12px;\n border-radius: var(--skeleton-radius-sm);\n }\n\n .lines .placeholder:last-child {\n width: 70%;\n }\n\n @keyframes arvea-shimmer {\n 0% {\n background-position: calc(-1 * var(--skeleton-pulse-width)) 0;\n }\n 100% {\n background-position: calc(var(--skeleton-pulse-width) + 100%) 0;\n }\n }\n\n @media (prefers-reduced-motion: reduce) {\n .placeholder {\n animation: none;\n background-image: none;\n }\n }\n\n /* Loading=false: render slotted content normally */\n .content {\n display: contents;\n }\n `,\n];\n","import { LitElement, html, nothing } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { styleMap } from 'lit/directives/style-map.js';\nimport { arveaSkeletonStyles } from './arvea-skeleton.styles';\nimport type { ArveaSkeletonShape } from './arvea-skeleton.types';\n\n/**\n * @element arvea-skeleton\n *\n * A shimmer placeholder used while content is loading.\n *\n * @prop {'rect'|'circle'|'text'|'pill'} shape - default 'rect'\n * @prop {string} width - CSS width (e.g. '120px', '60%')\n * @prop {string} height - CSS height\n * @prop {string} radius - Custom border-radius\n * @prop {number} lines - When >0, renders a stack of text lines\n * @prop {boolean} loading - When false, renders the default slot instead\n *\n * @slot - Real content rendered when loading=false\n *\n * @example\n * <arvea-skeleton width=\"200px\" height=\"16px\"></arvea-skeleton>\n * <arvea-skeleton shape=\"circle\" width=\"40px\" height=\"40px\"></arvea-skeleton>\n * <arvea-skeleton lines=\"3\"></arvea-skeleton>\n */\n@customElement('arvea-skeleton')\nexport class ArveaSkeleton extends LitElement {\n static styles = arveaSkeletonStyles;\n\n @property({ type: String, reflect: true }) shape: ArveaSkeletonShape = 'rect';\n @property({ type: String }) width = '';\n @property({ type: String }) height = '';\n @property({ type: String }) radius = '';\n @property({ type: Number }) lines = 0;\n @property({ type: Boolean, reflect: true }) loading = true;\n\n private _hostStyle() {\n const s: Record<string, string> = {};\n if (this.width) s.width = this.width;\n if (this.height) s.height = this.height;\n if (this.radius) s.borderRadius = this.radius;\n return s;\n }\n\n render() {\n if (!this.loading) {\n return html`<span part=\"content\" class=\"content\"><slot></slot></span>`;\n }\n\n if (this.lines && this.lines > 0) {\n return html`\n <div\n part=\"lines\"\n class=\"lines\"\n aria-hidden=\"true\"\n role=\"status\"\n aria-live=\"polite\"\n aria-busy=\"true\"\n >\n ${Array.from({ length: this.lines }).map(\n () => html`<span class=\"placeholder\"></span>`,\n )}\n </div>\n `;\n }\n\n const style = this._hostStyle();\n const inline = this.height || this.shape === 'circle' ? '' : 'height: 1em;';\n return html`\n <span\n part=\"placeholder\"\n class=\"placeholder\"\n role=\"status\"\n aria-busy=\"true\"\n aria-hidden=\"true\"\n style=${styleMap(style)}\n >\n ${inline ? html`<span style=\"display:inline-block; ${inline}\"></span>` : nothing}\n </span>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'arvea-skeleton': ArveaSkeleton;\n }\n}\n","import { css } from 'lit';\nimport { tokenStyles } from '../../tokens/tokens.styles';\n\nexport const arveaSkeletonCardStyles = [\n tokenStyles,\n css`\n :host {\n display: block;\n font-family: inherit;\n width: 100%;\n }\n\n .card {\n display: flex;\n flex-direction: column;\n gap: 16px;\n background: var(--card-bg);\n border: 1px solid var(--card-border);\n border-radius: var(--card-radius);\n padding: var(--card-padding);\n box-shadow: var(--card-shadow);\n box-sizing: border-box;\n overflow: hidden;\n }\n\n :host([variant='elevated']) .card {\n border-color: transparent;\n box-shadow: var(--card-shadow-elevated);\n }\n :host([variant='outline']) .card {\n box-shadow: none;\n }\n\n :host([padding='none']) .card {\n padding: 0;\n }\n :host([padding='sm']) .card {\n padding: 8px;\n }\n :host([padding='lg']) .card {\n padding: 24px;\n }\n\n /* Shimmer block primitive used directly inside this component\n (keeps it independent of arvea-skeleton internals) */\n .ph {\n display: block;\n background-color: var(--skeleton-bg);\n background-image: linear-gradient(\n 90deg,\n var(--skeleton-bg) 0%,\n var(--skeleton-highlight) 50%,\n var(--skeleton-bg) 100%\n );\n background-repeat: no-repeat;\n background-size: var(--skeleton-pulse-width) 100%;\n background-position: calc(-1 * var(--skeleton-pulse-width)) 0;\n border-radius: var(--skeleton-radius);\n animation: arvea-card-shimmer var(--skeleton-duration) ease-in-out infinite;\n }\n\n .ph.circle {\n border-radius: 9999px;\n }\n\n .ph.pill {\n border-radius: 9999px;\n height: 24px;\n width: 80px;\n }\n\n .ph.text {\n height: 12px;\n border-radius: var(--skeleton-radius-sm);\n }\n\n .row {\n display: flex;\n align-items: center;\n gap: 12px;\n }\n\n .stack {\n display: flex;\n flex-direction: column;\n gap: 8px;\n flex: 1;\n min-width: 0;\n }\n\n .lines {\n display: flex;\n flex-direction: column;\n gap: 8px;\n }\n .lines .ph {\n height: 12px;\n border-radius: var(--skeleton-radius-sm);\n }\n .lines .ph:last-child {\n width: 65%;\n }\n\n .actions {\n display: flex;\n gap: 8px;\n margin-top: 4px;\n }\n\n /* Preset: media — image on top, then heading + lines + actions */\n .media-image {\n width: 100%;\n height: 160px;\n border-radius: var(--skeleton-radius-lg);\n }\n\n /* Preset: profile — avatar + two short lines */\n .avatar {\n width: 40px;\n height: 40px;\n border-radius: 9999px;\n flex-shrink: 0;\n }\n\n /* Preset: product — square image + side content */\n .product-grid {\n display: grid;\n grid-template-columns: 96px 1fr;\n gap: 12px;\n }\n .product-image {\n width: 96px;\n height: 96px;\n border-radius: var(--skeleton-radius-lg);\n }\n\n /* Preset: list — repeated rows */\n .list-rows {\n display: flex;\n flex-direction: column;\n gap: 12px;\n }\n .list-row {\n display: flex;\n gap: 12px;\n align-items: center;\n }\n\n @keyframes arvea-card-shimmer {\n 0% {\n background-position: calc(-1 * var(--skeleton-pulse-width)) 0;\n }\n 100% {\n background-position: calc(var(--skeleton-pulse-width) + 100%) 0;\n }\n }\n\n @media (prefers-reduced-motion: reduce) {\n .ph {\n animation: none;\n background-image: none;\n }\n }\n `,\n];\n","import { LitElement, html } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { arveaSkeletonCardStyles } from './arvea-skeleton-card.styles';\nimport type {\n ArveaSkeletonCardPreset,\n ArveaSkeletonCardVariant,\n} from './arvea-skeleton-card.types';\n\n/**\n * @element arvea-skeleton-card\n *\n * A shimmering card placeholder with several common layout presets.\n * Renders slotted real content once `loading` is false.\n *\n * @prop {'article'|'media'|'profile'|'product'|'list'} preset - default 'article'\n * @prop {'default'|'elevated'|'outline'} variant - default 'default'\n * @prop {'none'|'sm'|'md'|'lg'} padding - default 'md'\n * @prop {number} lines - number of text lines (article preset)\n * @prop {boolean} loading - when false, renders slotted content\n *\n * @slot - Real content rendered when loading=false\n *\n * @example\n * <arvea-skeleton-card preset=\"media\" ?loading=${isLoading}>\n * <h3>Loaded!</h3><p>Real content here.</p>\n * </arvea-skeleton-card>\n */\n@customElement('arvea-skeleton-card')\nexport class ArveaSkeletonCard extends LitElement {\n static styles = arveaSkeletonCardStyles;\n\n @property({ type: String, reflect: true })\n preset: ArveaSkeletonCardPreset = 'article';\n @property({ type: String, reflect: true })\n variant: ArveaSkeletonCardVariant = 'default';\n @property({ type: String, reflect: true })\n padding: 'none' | 'sm' | 'md' | 'lg' = 'md';\n @property({ type: Number }) lines = 3;\n @property({ type: Boolean, reflect: true }) loading = true;\n\n private _article() {\n return html`\n <span class=\"ph text\" style=\"width: 60%; height: 16px;\"></span>\n <div class=\"lines\">\n ${Array.from({ length: this.lines }).map(\n () => html`<span class=\"ph\"></span>`,\n )}\n </div>\n <div class=\"actions\">\n <span class=\"ph pill\"></span>\n <span class=\"ph pill\" style=\"width: 64px;\"></span>\n </div>\n `;\n }\n\n private _media() {\n return html`\n <span class=\"ph media-image\"></span>\n <span class=\"ph text\" style=\"width: 70%; height: 16px;\"></span>\n <div class=\"lines\">\n ${Array.from({ length: this.lines }).map(\n () => html`<span class=\"ph\"></span>`,\n )}\n </div>\n `;\n }\n\n private _profile() {\n return html`\n <div class=\"row\">\n <span class=\"ph avatar\"></span>\n <div class=\"stack\">\n <span class=\"ph text\" style=\"width: 50%;\"></span>\n <span class=\"ph text\" style=\"width: 35%; height: 10px;\"></span>\n </div>\n </div>\n <div class=\"lines\">\n ${Array.from({ length: Math.max(2, this.lines) }).map(\n () => html`<span class=\"ph\"></span>`,\n )}\n </div>\n `;\n }\n\n private _product() {\n return html`\n <div class=\"product-grid\">\n <span class=\"ph product-image\"></span>\n <div class=\"stack\">\n <span class=\"ph text\" style=\"width: 70%; height: 14px;\"></span>\n <span class=\"ph text\" style=\"width: 90%;\"></span>\n <span class=\"ph text\" style=\"width: 40%;\"></span>\n <div style=\"flex:1\"></div>\n <span class=\"ph pill\" style=\"width: 72px;\"></span>\n </div>\n </div>\n `;\n }\n\n private _list() {\n const rows = Math.max(1, this.lines || 3);\n return html`\n <div class=\"list-rows\">\n ${Array.from({ length: rows }).map(\n () => html`\n <div class=\"list-row\">\n <span class=\"ph avatar\"></span>\n <div class=\"stack\">\n <span class=\"ph text\" style=\"width: 60%;\"></span>\n <span class=\"ph text\" style=\"width: 40%; height: 10px;\"></span>\n </div>\n <span class=\"ph pill\"></span>\n </div>\n `,\n )}\n </div>\n `;\n }\n\n private _renderPreset() {\n switch (this.preset) {\n case 'media':\n return this._media();\n case 'profile':\n return this._profile();\n case 'product':\n return this._product();\n case 'list':\n return this._list();\n default:\n return this._article();\n }\n }\n\n render() {\n return html`\n <div\n part=\"card\"\n class=\"card\"\n role=\"status\"\n aria-busy=${this.loading ? 'true' : 'false'}\n aria-live=\"polite\"\n >\n ${this.loading\n ? this._renderPreset()\n : html`<slot></slot>`}\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'arvea-skeleton-card': ArveaSkeletonCard;\n }\n}\n","import { css } from 'lit';\nimport { tokenStyles } from '../../tokens/tokens.styles';\n\nexport const arveaCarouselStyles = [\n tokenStyles,\n css`\n :host {\n display: block;\n font-family: inherit;\n width: 100%;\n position: relative;\n --_gap: var(--carousel-gap);\n --_slides: 1;\n }\n\n .viewport {\n position: relative;\n overflow: hidden;\n border-radius: var(--carousel-radius);\n touch-action: pan-y;\n /* Padding + negative margin lets card shadows/effects render\n without being clipped, while slides still clip correctly */\n padding: var(--carousel-overflow-offset, 16px);\n margin: calc(-1 * var(--carousel-overflow-offset, 16px));\n }\n\n .track {\n display: flex;\n gap: var(--_gap);\n transition: var(--carousel-transition);\n will-change: transform;\n }\n\n /* While dragging, disable the transition for 1:1 finger tracking */\n :host([dragging]) .track {\n transition: none;\n }\n\n /* Each slotted slide becomes a flex item with computed width */\n ::slotted(*) {\n flex: 0 0\n calc(\n (100% - (var(--_slides) - 1) * var(--_gap)) / var(--_slides)\n );\n min-width: 0;\n box-sizing: border-box;\n user-select: none;\n }\n\n /* ── Arrows ───────────────────────────────────────── */\n .arrow {\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n width: var(--carousel-arrow-size);\n height: var(--carousel-arrow-size);\n display: inline-flex;\n align-items: center;\n justify-content: center;\n padding: 0;\n border: 1px solid var(--carousel-arrow-border);\n background: var(--carousel-arrow-bg);\n color: var(--carousel-arrow-color);\n border-radius: 9999px;\n box-shadow: var(--carousel-arrow-shadow);\n cursor: pointer;\n z-index: 2;\n transition: background 0.15s ease, transform 0.15s ease, opacity 0.15s ease;\n }\n .arrow:hover:not(:disabled) {\n background: var(--carousel-arrow-bg-hover);\n }\n .arrow:focus-visible {\n outline: 2px solid var(--input-border-focus);\n outline-offset: 2px;\n }\n .arrow:disabled {\n opacity: var(--carousel-arrow-disabled-opacity);\n cursor: not-allowed;\n }\n\n .arrow.prev {\n left: var(--carousel-arrow-offset);\n }\n .arrow.next {\n right: var(--carousel-arrow-offset);\n }\n\n :host([arrow-position='outside']) .arrow.prev {\n left: calc(-1 * (var(--carousel-arrow-size) + var(--carousel-arrow-offset)));\n }\n :host([arrow-position='outside']) .arrow.next {\n right: calc(-1 * (var(--carousel-arrow-size) + var(--carousel-arrow-offset)));\n }\n\n /* ── Dots ─────────────────────────────────────────── */\n .dots {\n display: flex;\n justify-content: center;\n align-items: center;\n gap: var(--carousel-dot-gap);\n margin-top: var(--carousel-dot-row-margin);\n }\n\n .dot {\n width: var(--carousel-dot-size);\n height: var(--carousel-dot-size);\n padding: 0;\n border: 0;\n background: var(--carousel-dot-bg);\n border-radius: 9999px;\n cursor: pointer;\n transition: width 0.2s ease, background 0.2s ease;\n }\n .dot[aria-current='true'] {\n width: var(--carousel-dot-size-active);\n background: var(--carousel-dot-bg-active);\n }\n .dot:focus-visible {\n outline: 2px solid var(--input-border-focus);\n outline-offset: 2px;\n }\n\n @media (prefers-reduced-motion: reduce) {\n .track {\n transition: none;\n }\n }\n `,\n];\n","import { LitElement, html, svg, nothing, PropertyValues } from 'lit';\nimport { customElement, property, query, state } from 'lit/decorators.js';\nimport { arveaCarouselStyles } from './arvea-carousel.styles';\nimport type { ArveaCarouselArrowPosition } from './arvea-carousel.types';\n\n/**\n * @element arvea-carousel\n *\n * Slot any number of child elements as slides. The carousel handles\n * navigation (arrows, dots, keyboard), autoplay, looping, and pointer\n * swipe gestures.\n *\n * @prop {number} index - Active slide index (default: 0)\n * @prop {number} slidesPerView - Slides visible at once (default: 1)\n * @prop {string} gap - CSS gap between slides (default: '12px')\n * @prop {boolean} loop - Loop from last to first and vice-versa\n * @prop {boolean} autoplay - Auto-advance slides\n * @prop {number} interval - Autoplay interval in ms (default: 4000)\n * @prop {boolean} showArrows - Show prev/next arrows (default: true)\n * @prop {boolean} showDots - Show pagination dots (default: true)\n * @prop {'inside'|'outside'} arrowPosition - Arrow placement (default: 'inside')\n * @prop {string} ariaLabel - Accessible label for the carousel region\n *\n * @slot - Slides (any number of HTMLElement children)\n *\n * @fires arvea-change - When the active index changes (detail: { index })\n */\n@customElement('arvea-carousel')\nexport class ArveaCarousel extends LitElement {\n static styles = arveaCarouselStyles;\n\n @property({ type: Number, reflect: true }) index = 0;\n @property({ type: Number, attribute: 'slides-per-view' }) slidesPerView = 1;\n @property({ type: String }) gap = '12px';\n @property({ type: Boolean, reflect: true }) loop = false;\n @property({ type: Boolean, reflect: true }) autoplay = false;\n @property({ type: Number }) interval = 4000;\n @property({ type: Boolean, attribute: 'show-arrows' }) showArrows = true;\n @property({ type: Boolean, attribute: 'show-dots' }) showDots = true;\n @property({ type: String, reflect: true, attribute: 'arrow-position' })\n arrowPosition: ArveaCarouselArrowPosition = 'inside';\n @property({ type: String, attribute: 'aria-label' }) ariaLabel = 'Carousel';\n\n @state() private _slideCount = 0;\n @state() private _dragOffsetPx = 0;\n\n @query('.viewport') private _viewport!: HTMLElement;\n\n private _timer?: number;\n private _pointerId?: number;\n private _dragStartX = 0;\n private _dragStartY = 0;\n private _isDragging = false;\n private _dragAxis: 'x' | 'y' | undefined;\n\n connectedCallback(): void {\n super.connectedCallback();\n this.setAttribute('role', 'region');\n this.setAttribute('aria-roledescription', 'carousel');\n this.addEventListener('keydown', this._onKeyDown);\n this.addEventListener('mouseenter', this._stopTimer);\n this.addEventListener('mouseleave', this._maybeStartTimer);\n this.addEventListener('focusin', this._stopTimer);\n this.addEventListener('focusout', this._maybeStartTimer);\n }\n\n disconnectedCallback(): void {\n super.disconnectedCallback();\n this.removeEventListener('keydown', this._onKeyDown);\n this.removeEventListener('mouseenter', this._stopTimer);\n this.removeEventListener('mouseleave', this._maybeStartTimer);\n this.removeEventListener('focusin', this._stopTimer);\n this.removeEventListener('focusout', this._maybeStartTimer);\n this._stopTimer();\n }\n\n firstUpdated() {\n this._maybeStartTimer();\n }\n\n updated(changed: PropertyValues): void {\n if (changed.has('autoplay') || changed.has('interval')) {\n this._stopTimer();\n this._maybeStartTimer();\n }\n if (changed.has('index') && changed.get('index') !== this.index) {\n this.dispatchEvent(\n new CustomEvent('arvea-change', {\n detail: { index: this.index },\n bubbles: true,\n composed: true,\n }),\n );\n }\n }\n\n private get _maxIndex(): number {\n return Math.max(0, this._slideCount - this.slidesPerView);\n }\n\n private _onSlotChange = (e: Event) => {\n const nodes = (e.target as HTMLSlotElement)\n .assignedElements()\n .filter((n) => n.nodeType === Node.ELEMENT_NODE);\n this._slideCount = nodes.length;\n if (this.index > this._maxIndex) this.index = this._maxIndex;\n };\n\n /** Navigate to a specific index, clamping or looping as configured. */\n goTo(i: number) {\n if (this._slideCount === 0) return;\n const max = this._maxIndex;\n if (this.loop) {\n const count = max + 1;\n this.index = ((i % count) + count) % count;\n } else {\n this.index = Math.max(0, Math.min(i, max));\n }\n }\n\n next() {\n this.goTo(this.index + 1);\n }\n\n prev() {\n this.goTo(this.index - 1);\n }\n\n private _stopTimer = () => {\n if (this._timer) {\n window.clearInterval(this._timer);\n this._timer = undefined;\n }\n };\n\n private _maybeStartTimer = () => {\n if (!this.autoplay || this.interval <= 0) return;\n this._stopTimer();\n this._timer = window.setInterval(() => {\n if (!this.loop && this.index >= this._maxIndex) {\n this.index = 0;\n } else {\n this.next();\n }\n }, this.interval);\n };\n\n private _onKeyDown = (e: KeyboardEvent) => {\n if (e.target instanceof HTMLInputElement || e.target instanceof HTMLTextAreaElement) {\n return;\n }\n if (e.key === 'ArrowRight') {\n e.preventDefault();\n this.next();\n } else if (e.key === 'ArrowLeft') {\n e.preventDefault();\n this.prev();\n } else if (e.key === 'Home') {\n e.preventDefault();\n this.goTo(0);\n } else if (e.key === 'End') {\n e.preventDefault();\n this.goTo(this._maxIndex);\n }\n };\n\n /* ── Pointer / swipe ───────────────────────────────── */\n private _onPointerDown = (e: PointerEvent) => {\n if (e.button !== 0 && e.pointerType === 'mouse') return;\n this._pointerId = e.pointerId;\n this._dragStartX = e.clientX;\n this._dragStartY = e.clientY;\n this._isDragging = true;\n this._dragAxis = undefined;\n this._dragOffsetPx = 0;\n this.setAttribute('dragging', '');\n this._stopTimer();\n };\n\n private _onPointerMove = (e: PointerEvent) => {\n if (!this._isDragging || e.pointerId !== this._pointerId) return;\n const dx = e.clientX - this._dragStartX;\n const dy = e.clientY - this._dragStartY;\n if (!this._dragAxis) {\n if (Math.abs(dx) < 5 && Math.abs(dy) < 5) return;\n this._dragAxis = Math.abs(dx) > Math.abs(dy) ? 'x' : 'y';\n if (this._dragAxis === 'x') {\n try {\n this._viewport?.setPointerCapture(e.pointerId);\n } catch {\n /* ignore */\n }\n }\n }\n if (this._dragAxis !== 'x') return;\n e.preventDefault();\n this._dragOffsetPx = dx;\n };\n\n private _endDrag = () => {\n if (!this._isDragging) return;\n this._isDragging = false;\n this.removeAttribute('dragging');\n\n if (this._dragAxis === 'x' && this._viewport) {\n const slideWidth = this._viewport.clientWidth / this.slidesPerView;\n const threshold = slideWidth * 0.2;\n if (this._dragOffsetPx <= -threshold) this.next();\n else if (this._dragOffsetPx >= threshold) this.prev();\n }\n\n this._dragOffsetPx = 0;\n this._dragAxis = undefined;\n this._pointerId = undefined;\n this._maybeStartTimer();\n };\n\n /* ── Render ───────────────────────────────────────── */\n private _trackTransform(): string {\n const base = `calc(-${this.index} * (100% + ${this.gap}) / ${this.slidesPerView})`;\n if (this._isDragging) {\n return `translate(calc(${base} + ${this._dragOffsetPx}px), 0)`;\n }\n return `translateX(${base})`;\n }\n\n render() {\n const atStart = !this.loop && this.index <= 0;\n const atEnd = !this.loop && this.index >= this._maxIndex;\n const dotCount = Math.max(1, this._maxIndex + 1);\n\n return html`\n <div\n part=\"viewport\"\n class=\"viewport\"\n @pointerdown=${this._onPointerDown}\n @pointermove=${this._onPointerMove}\n @pointerup=${this._endDrag}\n @pointercancel=${this._endDrag}\n @pointerleave=${this._endDrag}\n aria-label=${this.ariaLabel}\n aria-live=${this.autoplay ? 'off' : 'polite'}\n style=\"--_slides: ${this.slidesPerView}; --_gap: ${this.gap};\"\n >\n <div part=\"track\" class=\"track\" style=\"transform: ${this._trackTransform()}\">\n <slot @slotchange=${this._onSlotChange}></slot>\n </div>\n\n ${this.showArrows && this._slideCount > this.slidesPerView\n ? html`\n <button\n part=\"arrow arrow-prev\"\n class=\"arrow prev\"\n type=\"button\"\n aria-label=\"Previous slide\"\n ?disabled=${atStart}\n @click=${() => this.prev()}\n >\n ${svg`<svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M10 12L6 8L10 4\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>`}\n </button>\n <button\n part=\"arrow arrow-next\"\n class=\"arrow next\"\n type=\"button\"\n aria-label=\"Next slide\"\n ?disabled=${atEnd}\n @click=${() => this.next()}\n >\n ${svg`<svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M6 4L10 8L6 12\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>`}\n </button>\n `\n : nothing}\n </div>\n\n ${this.showDots && this._slideCount > this.slidesPerView\n ? html`\n <div part=\"dots\" class=\"dots\" role=\"tablist\">\n ${Array.from({ length: dotCount }).map(\n (_, i) => html`\n <button\n class=\"dot\"\n type=\"button\"\n role=\"tab\"\n aria-current=${i === this.index ? 'true' : 'false'}\n aria-label=\"Go to slide ${i + 1}\"\n @click=${() => this.goTo(i)}\n ></button>\n `,\n )}\n </div>\n `\n : nothing}\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'arvea-carousel': ArveaCarousel;\n }\n}\n","import { css } from 'lit';\nimport { tokenStyles } from '../../tokens/tokens.styles';\n\nexport const arveaDialogStyles = [\n tokenStyles,\n css`\n :host {\n position: fixed;\n inset: 0;\n z-index: 1000;\n display: none;\n font-family: inherit;\n }\n\n :host([open]) {\n display: block;\n }\n\n .overlay {\n position: absolute;\n inset: 0;\n background: var(--dialog-overlay-bg);\n opacity: 0;\n transition: opacity 0.2s ease;\n }\n\n :host([open]) .overlay {\n opacity: 1;\n }\n\n .dialog {\n position: relative;\n margin: 5vh auto;\n max-width: var(--dialog-max-width);\n width: calc(100% - 32px);\n background: var(--dialog-bg);\n border-radius: var(--dialog-radius);\n box-shadow: var(--dialog-shadow);\n padding: var(--dialog-padding);\n max-height: 90vh;\n overflow: visible;\n transform: translateY(-8px) scale(0.98);\n opacity: 0;\n transition: opacity 0.2s ease, transform 0.2s ease;\n box-sizing: border-box;\n }\n\n :host([open]) .dialog {\n transform: translateY(0) scale(1);\n opacity: 1;\n }\n\n :host([size='sm']) .dialog {\n max-width: 360px;\n }\n :host([size='lg']) .dialog {\n max-width: 720px;\n }\n :host([size='fullscreen']) .dialog {\n max-width: none;\n width: 100%;\n height: 100%;\n max-height: 100%;\n margin: 0;\n border-radius: 0;\n }\n\n .header {\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n gap: 12px;\n margin-bottom: 12px;\n }\n\n .title {\n font-size: var(--dialog-title-size);\n font-weight: var(--dialog-title-weight);\n color: var(--dialog-title-color);\n margin: 0;\n }\n\n .description {\n margin: -4px 0 12px;\n color: var(--dialog-body-color);\n font-size: 14px;\n line-height: 1.5;\n }\n\n .body {\n color: var(--dialog-body-color);\n font-size: 14px;\n line-height: 1.5;\n }\n\n .footer {\n display: flex;\n justify-content: flex-end;\n gap: 8px;\n margin-top: 20px;\n }\n\n ::slotted([slot='footer']) {\n margin-top: 20px;\n }\n\n .close {\n flex-shrink: 0;\n width: 28px;\n height: 28px;\n border-radius: 9999px;\n border: 0;\n background: transparent;\n color: var(--dialog-close-color);\n display: inline-flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n transition: background 0.15s ease;\n }\n .close:hover {\n background: var(--dialog-close-hover-bg);\n }\n .close:focus-visible {\n outline: 2px solid var(--input-border-focus);\n outline-offset: 2px;\n }\n\n @media (prefers-reduced-motion: reduce) {\n .overlay,\n .dialog {\n transition: none;\n }\n }\n `,\n];\n","import { LitElement, html, nothing, svg, PropertyValues } from 'lit';\nimport { customElement, property, query } from 'lit/decorators.js';\nimport { arveaDialogStyles } from './arvea-dialog.styles';\nimport type { ArveaDialogSize } from './arvea-dialog.types';\n\nconst FOCUSABLE_SELECTOR =\n 'a[href], button:not([disabled]), textarea:not([disabled]), input:not([disabled]), select:not([disabled]), [tabindex]:not([tabindex=\"-1\"])';\n\n/**\n * @element arvea-dialog\n *\n * Accessible modal dialog with overlay, focus trap, and Esc-to-close.\n *\n * @prop {boolean} open\n * @prop {string} title\n * @prop {string} description\n * @prop {'sm'|'md'|'lg'|'fullscreen'} size\n * @prop {boolean} closeOnOverlayClick - default true\n * @prop {boolean} closeOnEsc - default true\n * @prop {boolean} hideClose - hide the X button\n * @prop {boolean} preventScroll - lock body scroll while open (default true)\n *\n * @slot header - Overrides the default header (title + close)\n * @slot - Main body content\n * @slot footer - Footer with action buttons\n *\n * @fires arvea-open\n * @fires arvea-close\n */\n@customElement('arvea-dialog')\nexport class ArveaDialog extends LitElement {\n static styles = arveaDialogStyles;\n\n @property({ type: Boolean, reflect: true }) open = false;\n @property({ type: String }) title = '';\n @property({ type: String }) description = '';\n @property({ type: String, reflect: true }) size: ArveaDialogSize = 'md';\n @property({ type: Boolean, attribute: 'close-on-overlay-click' })\n closeOnOverlayClick = true;\n @property({ type: Boolean, attribute: 'close-on-esc' }) closeOnEsc = true;\n @property({ type: Boolean, attribute: 'hide-close' }) hideClose = false;\n @property({ type: Boolean, attribute: 'prevent-scroll' }) preventScroll = true;\n\n @query('.dialog') private _dialog!: HTMLElement;\n\n private _previouslyFocused: Element | null = null;\n\n connectedCallback(): void {\n super.connectedCallback();\n this.setAttribute('role', 'dialog');\n this.setAttribute('aria-modal', 'true');\n document.addEventListener('keydown', this._onDocKeyDown);\n }\n\n disconnectedCallback(): void {\n super.disconnectedCallback();\n document.removeEventListener('keydown', this._onDocKeyDown);\n this._restoreScroll();\n }\n\n updated(changed: PropertyValues): void {\n if (changed.has('open')) {\n if (this.open) this._handleOpen();\n else this._handleClose(changed.get('open') === true);\n }\n }\n\n /** Public API: show the dialog. */\n show() {\n this.open = true;\n }\n\n /** Public API: hide the dialog. */\n hide() {\n this.open = false;\n }\n\n private _handleOpen() {\n this._previouslyFocused = document.activeElement;\n if (this.preventScroll) {\n document.body.style.overflow = 'hidden';\n }\n this.dispatchEvent(\n new CustomEvent('arvea-open', { bubbles: true, composed: true }),\n );\n // Move focus into the dialog\n queueMicrotask(() => {\n const focusable = this._dialog?.querySelector<HTMLElement>(\n FOCUSABLE_SELECTOR,\n );\n (focusable || this._dialog)?.focus({ preventScroll: true });\n });\n }\n\n private _handleClose(wasOpen: boolean) {\n this._restoreScroll();\n if (wasOpen) {\n this.dispatchEvent(\n new CustomEvent('arvea-close', { bubbles: true, composed: true }),\n );\n if (this._previouslyFocused instanceof HTMLElement) {\n this._previouslyFocused.focus({ preventScroll: true });\n }\n }\n }\n\n private _restoreScroll() {\n if (this.preventScroll) {\n document.body.style.overflow = '';\n }\n }\n\n private _onDocKeyDown = (e: KeyboardEvent) => {\n if (!this.open) return;\n if (e.key === 'Escape' && this.closeOnEsc) {\n e.preventDefault();\n this.hide();\n } else if (e.key === 'Tab') {\n this._trapFocus(e);\n }\n };\n\n private _trapFocus(e: KeyboardEvent) {\n if (!this._dialog) return;\n const focusables = Array.from(\n this._dialog.querySelectorAll<HTMLElement>(FOCUSABLE_SELECTOR),\n ).filter((el) => !el.hasAttribute('aria-hidden'));\n if (focusables.length === 0) {\n e.preventDefault();\n return;\n }\n const first = focusables[0];\n const last = focusables[focusables.length - 1];\n const active = this.shadowRoot?.activeElement || document.activeElement;\n if (e.shiftKey && active === first) {\n e.preventDefault();\n last.focus();\n } else if (!e.shiftKey && active === last) {\n e.preventDefault();\n first.focus();\n }\n }\n\n private _onOverlayClick = (e: MouseEvent) => {\n if (!this.closeOnOverlayClick) return;\n if (e.target === e.currentTarget) {\n this.hide();\n }\n };\n\n render() {\n return html`\n <div part=\"overlay\" class=\"overlay\" @click=${this._onOverlayClick}>\n <div\n part=\"panel\"\n class=\"dialog\"\n tabindex=\"-1\"\n aria-labelledby=${this.title ? 'arvea-dialog-title' : nothing}\n aria-describedby=${this.description ? 'arvea-dialog-desc' : nothing}\n @click=${(e: Event) => e.stopPropagation()}\n >\n <slot name=\"header\">\n ${this.title || !this.hideClose\n ? html`\n <div part=\"header\" class=\"header\">\n ${this.title\n ? html`<h2 part=\"title\" class=\"title\" id=\"arvea-dialog-title\">${this.title}</h2>`\n : html`<span></span>`}\n ${!this.hideClose\n ? html`\n <button\n part=\"close\"\n class=\"close\"\n type=\"button\"\n aria-label=\"Close dialog\"\n @click=${() => this.hide()}\n >\n ${svg`<svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M1.5 1.5L12.5 12.5M12.5 1.5L1.5 12.5\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"/>\n </svg>`}\n </button>\n `\n : nothing}\n </div>\n `\n : nothing}\n </slot>\n ${this.description\n ? html`<p class=\"description\" id=\"arvea-dialog-desc\">\n ${this.description}\n </p>`\n : nothing}\n <div part=\"body\" class=\"body\"><slot></slot></div>\n <slot name=\"footer\">\n <div class=\"footer\" hidden><slot name=\"actions\"></slot></div>\n </slot>\n </div>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'arvea-dialog': ArveaDialog;\n }\n}\n","import { css } from 'lit';\nimport { tokenStyles } from '../../tokens/tokens.styles';\n\nexport const arveaToastStyles = [\n tokenStyles,\n css`\n :host {\n display: block;\n font-family: inherit;\n }\n\n .toast {\n display: inline-flex;\n align-items: center;\n gap: var(--toast-gap);\n min-width: var(--toast-min-width);\n max-width: var(--toast-max-width);\n padding: var(--toast-padding);\n background: var(--toast-bg);\n color: var(--toast-text);\n border-radius: var(--toast-radius);\n box-shadow: var(--toast-shadow);\n font-size: 14px;\n box-sizing: border-box;\n opacity: 0;\n transform: translateY(-8px);\n transition: opacity 0.18s ease, transform 0.18s ease;\n }\n\n :host([open]) .toast {\n opacity: 1;\n transform: translateY(0);\n }\n\n :host([variant='success']) .toast {\n background: var(--toast-success-bg);\n }\n :host([variant='error']) .toast {\n background: var(--toast-error-bg);\n }\n :host([variant='warning']) .toast {\n background: var(--toast-warning-bg);\n }\n :host([variant='info']) .toast {\n background: var(--toast-info-bg);\n }\n\n .icon {\n display: inline-flex;\n flex-shrink: 0;\n align-items: center;\n justify-content: center;\n }\n\n .message {\n flex: 1;\n min-width: 0;\n line-height: 1.4;\n }\n\n .close {\n flex-shrink: 0;\n width: 22px;\n height: 22px;\n padding: 0;\n border: 0;\n border-radius: 9999px;\n background: transparent;\n color: inherit;\n opacity: 0.85;\n cursor: pointer;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n transition: opacity 0.15s ease, background 0.15s ease;\n }\n .close:hover {\n opacity: 1;\n background: rgba(255, 255, 255, 0.12);\n }\n .close:focus-visible {\n outline: 2px solid rgba(255, 255, 255, 0.6);\n outline-offset: 2px;\n }\n `,\n];\n","import { LitElement, html, nothing, svg, PropertyValues } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { arveaToastStyles } from './arvea-toast.styles';\nimport type { ArveaToastVariant } from './arvea-toast.types';\n\nconst ICONS: Record<ArveaToastVariant, ReturnType<typeof svg> | null> = {\n success: svg`<svg width=\"18\" height=\"18\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M16.5 6L8 14.5L4 10.5\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>`,\n error: svg`<svg width=\"18\" height=\"18\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M5 5L15 15M15 5L5 15\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"/>\n </svg>`,\n warning: svg`<svg width=\"18\" height=\"18\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M10 7V11M10 14V14.01\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"/>\n <circle cx=\"10\" cy=\"10\" r=\"8\" stroke=\"currentColor\" stroke-width=\"2\"/>\n </svg>`,\n info: svg`<svg width=\"18\" height=\"18\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M10 9V14M10 6.01V6\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"/>\n <circle cx=\"10\" cy=\"10\" r=\"8\" stroke=\"currentColor\" stroke-width=\"2\"/>\n </svg>`,\n default: null,\n};\n\n/**\n * @element arvea-toast\n *\n * Single toast notification. For multi-toast UX, use `arvea-toast-container`.\n *\n * @prop {boolean} open\n * @prop {'default'|'success'|'error'|'warning'|'info'} variant\n * @prop {string} message\n * @prop {number} duration - auto-dismiss in ms (0 = no auto-dismiss)\n * @prop {boolean} closable - shows the close button (default true)\n *\n * @slot - rich content alternative to `message`\n *\n * @fires arvea-open\n * @fires arvea-close\n */\n@customElement('arvea-toast')\nexport class ArveaToast extends LitElement {\n static styles = arveaToastStyles;\n\n @property({ type: Boolean, reflect: true }) open = false;\n @property({ type: String, reflect: true })\n variant: ArveaToastVariant = 'default';\n @property({ type: String }) message = '';\n @property({ type: Number }) duration = 4000;\n @property({ type: Boolean }) closable = true;\n\n private _timer?: number;\n\n show() {\n this.open = true;\n }\n\n hide() {\n this.open = false;\n }\n\n updated(changed: PropertyValues): void {\n if (changed.has('open')) {\n window.clearTimeout(this._timer);\n if (this.open) {\n this.dispatchEvent(\n new CustomEvent('arvea-open', { bubbles: true, composed: true }),\n );\n if (this.duration > 0) {\n this._timer = window.setTimeout(() => this.hide(), this.duration);\n }\n } else if (changed.get('open') === true) {\n this.dispatchEvent(\n new CustomEvent('arvea-close', { bubbles: true, composed: true }),\n );\n }\n }\n }\n\n disconnectedCallback(): void {\n super.disconnectedCallback();\n window.clearTimeout(this._timer);\n }\n\n render() {\n const icon = ICONS[this.variant];\n return html`\n <div part=\"base\" class=\"toast\" role=\"status\" aria-live=\"polite\">\n ${icon ? html`<span part=\"icon\" class=\"icon\" aria-hidden=\"true\">${icon}</span>` : nothing}\n <span part=\"message\" class=\"message\">${this.message || html`<slot></slot>`}</span>\n ${this.closable\n ? html`\n <button\n part=\"close\"\n class=\"close\"\n type=\"button\"\n aria-label=\"Dismiss\"\n @click=${() => this.hide()}\n >\n ${svg`<svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M1.5 1.5L10.5 10.5M10.5 1.5L1.5 10.5\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"/>\n </svg>`}\n </button>\n `\n : nothing}\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'arvea-toast': ArveaToast;\n }\n}\n","import { LitElement, html, css } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { tokenStyles } from '../../tokens/tokens.styles';\nimport './arvea-toast';\nimport type {\n ArveaToastOptions,\n ArveaToastPosition,\n ArveaToastVariant,\n} from './arvea-toast.types';\n\ninterface ToastEntry {\n id: number;\n message: string;\n variant: ArveaToastVariant;\n duration: number;\n closable: boolean;\n}\n\nlet _id = 0;\n\n/**\n * @element arvea-toast-container\n *\n * Container that stacks toasts in a fixed corner of the viewport.\n * Use the imperative `toast()` method (or static `ArveaToastContainer.notify()`)\n * to push new toasts.\n *\n * @prop {ArveaToastPosition} position - default 'top-right'\n * @prop {number} max - max simultaneous toasts (default 5)\n *\n * @example\n * <arvea-toast-container id=\"toasts\"></arvea-toast-container>\n * document.getElementById('toasts').toast({ message: 'Saved!', variant: 'success' });\n */\n@customElement('arvea-toast-container')\nexport class ArveaToastContainer extends LitElement {\n static styles = [\n tokenStyles,\n css`\n :host {\n position: fixed;\n z-index: 1100;\n display: flex;\n flex-direction: column;\n gap: 10px;\n pointer-events: none;\n font-family: inherit;\n }\n\n :host([position='top-right']),\n :host {\n top: 16px;\n right: 16px;\n align-items: flex-end;\n }\n :host([position='top-left']) {\n top: 16px;\n left: 16px;\n align-items: flex-start;\n }\n :host([position='top-center']) {\n top: 16px;\n left: 50%;\n transform: translateX(-50%);\n align-items: center;\n }\n :host([position='bottom-right']) {\n bottom: 16px;\n right: 16px;\n align-items: flex-end;\n flex-direction: column-reverse;\n }\n :host([position='bottom-left']) {\n bottom: 16px;\n left: 16px;\n align-items: flex-start;\n flex-direction: column-reverse;\n }\n :host([position='bottom-center']) {\n bottom: 16px;\n left: 50%;\n transform: translateX(-50%);\n align-items: center;\n flex-direction: column-reverse;\n }\n\n arvea-toast {\n pointer-events: auto;\n }\n `,\n ];\n\n @property({ type: String, reflect: true })\n position: ArveaToastPosition = 'top-right';\n @property({ type: Number }) max = 5;\n\n @state() private _toasts: ToastEntry[] = [];\n\n /** Push a new toast. Returns the toast id. */\n toast(opts: ArveaToastOptions): number {\n const id = ++_id;\n const entry: ToastEntry = {\n id,\n message: opts.message,\n variant: opts.variant ?? 'default',\n duration: opts.duration ?? 4000,\n closable: opts.closable ?? true,\n };\n this._toasts = [...this._toasts, entry].slice(-this.max);\n return id;\n }\n\n /** Convenience helpers. */\n success(message: string, duration?: number) {\n return this.toast({ message, variant: 'success', duration });\n }\n error(message: string, duration?: number) {\n return this.toast({ message, variant: 'error', duration });\n }\n warning(message: string, duration?: number) {\n return this.toast({ message, variant: 'warning', duration });\n }\n info(message: string, duration?: number) {\n return this.toast({ message, variant: 'info', duration });\n }\n\n /** Remove a specific toast by id. */\n dismiss(id: number) {\n this._toasts = this._toasts.filter((t) => t.id !== id);\n }\n\n /** Clear all toasts. */\n clear() {\n this._toasts = [];\n }\n\n private _onClose(id: number) {\n // Defer removal so the closing animation can play\n window.setTimeout(() => this.dismiss(id), 200);\n }\n\n render() {\n return html`\n ${this._toasts.map(\n (t) => html`\n <arvea-toast\n open\n .variant=${t.variant}\n .message=${t.message}\n .duration=${t.duration}\n ?closable=${t.closable}\n @arvea-close=${() => this._onClose(t.id)}\n ></arvea-toast>\n `,\n )}\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'arvea-toast-container': ArveaToastContainer;\n }\n}\n","import { css } from 'lit';\nimport { tokenStyles } from '../../tokens/tokens.styles';\n\nexport const arveaTabsStyles = [\n tokenStyles,\n css`\n :host {\n display: block;\n font-family: inherit;\n width: 100%;\n }\n\n .tablist {\n position: relative;\n display: flex;\n gap: 4px;\n border-bottom: 1px solid var(--tabs-list-border);\n }\n\n :host([variant='pill']) .tablist {\n border-bottom: 0;\n background: var(--colors-slate-100);\n padding: 4px;\n border-radius: 10px;\n gap: 2px;\n }\n\n :host([full-width]) .tablist {\n width: 100%;\n }\n :host([full-width]) .tab {\n flex: 1;\n justify-content: center;\n }\n\n .tab {\n position: relative;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: var(--tabs-tab-padding);\n border: 0;\n background: transparent;\n color: var(--tabs-tab-color);\n font-family: inherit;\n font-size: var(--tabs-tab-font-size);\n font-weight: var(--tabs-tab-font-weight);\n cursor: pointer;\n border-radius: var(--tabs-tab-radius);\n transition: color 0.15s ease, background 0.15s ease;\n white-space: nowrap;\n }\n\n .tab:hover:not([disabled]):not([aria-selected='true']) {\n color: var(--tabs-tab-color-hover);\n }\n\n .tab[aria-selected='true'] {\n color: var(--tabs-tab-color-active);\n }\n\n :host([variant='pill']) .tab[aria-selected='true'] {\n background: var(--tabs-pill-bg-active);\n color: var(--tabs-pill-text-active);\n }\n\n .tab[disabled] {\n opacity: var(--tabs-disabled-opacity);\n cursor: not-allowed;\n }\n\n .tab:focus-visible {\n outline: 2px solid var(--input-border-focus);\n outline-offset: 2px;\n }\n\n .indicator {\n position: absolute;\n bottom: -1px;\n height: var(--tabs-indicator-height);\n background: var(--tabs-indicator-color);\n border-radius: 2px;\n transition: left 0.2s ease, width 0.2s ease;\n pointer-events: none;\n }\n :host([variant='pill']) .indicator {\n display: none;\n }\n\n .panels {\n padding-top: 16px;\n }\n\n ::slotted([slot='panel']) {\n display: none;\n }\n ::slotted([slot='panel'][active]) {\n display: block;\n }\n `,\n];\n","import { LitElement, html, nothing, PropertyValues } from 'lit';\nimport { customElement, property, query, state } from 'lit/decorators.js';\nimport { styleMap } from 'lit/directives/style-map.js';\nimport { arveaTabsStyles } from './arvea-tabs.styles';\nimport type { ArveaTabItem, ArveaTabsVariant } from './arvea-tabs.types';\n\n/**\n * @element arvea-tabs\n *\n * Tabs with two display variants:\n * - 'underline' (default) — bottom border + animated indicator\n * - 'pill' — segmented control style\n *\n * Tabs can be provided via the `items` array OR via slotted panels\n * (`<div slot=\"panel\" data-value=\"x\" data-label=\"Label\">…</div>`).\n *\n * @prop {string} value - Active tab value (controlled)\n * @prop {ArveaTabItem[]} items - Tab definitions (optional)\n * @prop {'underline'|'pill'} variant\n * @prop {boolean} fullWidth\n * @prop {string} ariaLabel\n *\n * @slot panel - One panel per tab; first matching data-value is shown\n *\n * @fires arvea-change - { value }\n */\n@customElement('arvea-tabs')\nexport class ArveaTabs extends LitElement {\n static styles = arveaTabsStyles;\n\n @property({ type: String }) value = '';\n @property({ type: Array }) items: ArveaTabItem[] = [];\n @property({ type: String, reflect: true }) variant: ArveaTabsVariant =\n 'underline';\n @property({ type: Boolean, reflect: true, attribute: 'full-width' })\n fullWidth = false;\n @property({ type: String, attribute: 'aria-label' }) ariaLabel = 'Tabs';\n\n @state() private _slotItems: ArveaTabItem[] = [];\n @state() private _indicatorStyle: Record<string, string> = {};\n\n @query('.tablist') private _tablist!: HTMLElement;\n\n private get _items(): ArveaTabItem[] {\n return this.items.length ? this.items : this._slotItems;\n }\n\n connectedCallback(): void {\n super.connectedCallback();\n }\n\n firstUpdated() {\n if (!this.value && this._items.length) this.value = this._items[0].value;\n this._updateIndicator();\n }\n\n updated(changed: PropertyValues): void {\n if (changed.has('value') || changed.has('items')) {\n this._updateIndicator();\n this._syncPanels();\n if (changed.has('value') && changed.get('value') !== undefined) {\n this.dispatchEvent(\n new CustomEvent('arvea-change', {\n detail: { value: this.value },\n bubbles: true,\n composed: true,\n }),\n );\n }\n }\n }\n\n private _onPanelsSlotChange = (e: Event) => {\n const slot = e.target as HTMLSlotElement;\n const nodes = slot.assignedElements().filter((n) => n instanceof HTMLElement) as HTMLElement[];\n this._slotItems = nodes.map((n) => ({\n value: n.dataset.value || '',\n label: n.dataset.label || n.dataset.value || '',\n disabled: n.hasAttribute('disabled'),\n }));\n if (!this.value && this._slotItems.length) {\n this.value = this._slotItems[0].value;\n }\n this._syncPanels();\n };\n\n private _syncPanels() {\n const panels = Array.from(\n this.querySelectorAll<HTMLElement>('[slot=\"panel\"]'),\n );\n panels.forEach((p) => {\n if (p.dataset.value === this.value) p.setAttribute('active', '');\n else p.removeAttribute('active');\n });\n }\n\n private _onTabClick(item: ArveaTabItem) {\n if (item.disabled) return;\n this.value = item.value;\n }\n\n private _onKeyDown = (e: KeyboardEvent) => {\n const items = this._items.filter((i) => !i.disabled);\n if (!items.length) return;\n const idx = items.findIndex((i) => i.value === this.value);\n if (e.key === 'ArrowRight') {\n e.preventDefault();\n this.value = items[(idx + 1) % items.length].value;\n } else if (e.key === 'ArrowLeft') {\n e.preventDefault();\n this.value = items[(idx - 1 + items.length) % items.length].value;\n } else if (e.key === 'Home') {\n e.preventDefault();\n this.value = items[0].value;\n } else if (e.key === 'End') {\n e.preventDefault();\n this.value = items[items.length - 1].value;\n }\n };\n\n private _updateIndicator() {\n if (!this._tablist || this.variant === 'pill') return;\n queueMicrotask(() => {\n const active = this._tablist?.querySelector<HTMLElement>(\n '.tab[aria-selected=\"true\"]',\n );\n if (!active) {\n this._indicatorStyle = { left: '0', width: '0' };\n return;\n }\n this._indicatorStyle = {\n left: `${active.offsetLeft}px`,\n width: `${active.offsetWidth}px`,\n };\n });\n }\n\n render() {\n const items = this._items;\n return html`\n <div\n part=\"tablist\"\n class=\"tablist\"\n role=\"tablist\"\n aria-label=${this.ariaLabel}\n @keydown=${this._onKeyDown}\n >\n ${items.map(\n (item) => html`\n <button\n part=\"tab\"\n class=\"tab\"\n type=\"button\"\n role=\"tab\"\n ?disabled=${item.disabled ?? false}\n aria-selected=${item.value === this.value ? 'true' : 'false'}\n tabindex=${item.value === this.value ? '0' : '-1'}\n @click=${() => this._onTabClick(item)}\n >\n ${item.label}\n </button>\n `,\n )}\n ${this.variant === 'underline'\n ? html`<span part=\"indicator\" class=\"indicator\" style=${styleMap(this._indicatorStyle)}></span>`\n : nothing}\n </div>\n <div part=\"panels\" class=\"panels\">\n <slot name=\"panel\" @slotchange=${this._onPanelsSlotChange}></slot>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'arvea-tabs': ArveaTabs;\n }\n}\n","import { css } from 'lit';\nimport { tokenStyles } from '../../tokens/tokens.styles';\n\nexport const arveaAccordionStyles = [\n tokenStyles,\n css`\n :host {\n display: block;\n width: 100%;\n }\n\n :host([bordered]) {\n border: 1px solid var(--accordion-border);\n border-radius: var(--accordion-radius);\n overflow: hidden;\n }\n `,\n];\n\nexport const arveaAccordionItemStyles = [\n tokenStyles,\n css`\n :host {\n display: block;\n background: var(--accordion-bg);\n border-bottom: 1px solid var(--accordion-border);\n }\n :host(:last-of-type) {\n border-bottom: 0;\n }\n\n .header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 12px;\n width: 100%;\n padding: var(--accordion-header-padding);\n background: var(--accordion-header-bg, transparent);\n border: 0;\n border-radius: var(--accordion-header-radius, 0);\n cursor: pointer;\n text-align: left;\n font-family: var(--accordion-title-font, inherit);\n font-size: var(--accordion-title-size);\n font-weight: var(--accordion-title-weight);\n color: var(--accordion-title-color);\n transition: background var(--accordion-transition, 0.15s ease);\n }\n\n .header:hover:not([disabled]) {\n background: var(--accordion-header-bg-hover, var(--colors-slate-50));\n }\n .header:focus-visible {\n outline: 2px solid var(--input-border-focus);\n outline-offset: -2px;\n }\n .header[disabled] {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n .chevron {\n flex-shrink: 0;\n color: var(--accordion-chevron-color);\n transition: transform var(--accordion-transition, 0.2s ease);\n }\n :host([open]) .chevron {\n transform: rotate(180deg);\n }\n\n .body {\n overflow: hidden;\n max-height: 0;\n transition: max-height var(--accordion-transition, 0.25s ease);\n }\n :host([open]) .body {\n max-height: var(--accordion-body-max-height, 1000px);\n }\n\n .body-inner {\n padding: var(--accordion-body-padding);\n color: var(--accordion-body-color);\n font-family: var(--accordion-body-font, inherit);\n font-size: var(--accordion-body-size, 14px);\n line-height: var(--accordion-body-line-height, 1.5);\n }\n\n @media (prefers-reduced-motion: reduce) {\n .body,\n .chevron {\n transition: none;\n }\n }\n `,\n];\n","import { LitElement, html, nothing, svg } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { arveaAccordionItemStyles } from './arvea-accordion.styles';\n\n/**\n * @element arvea-accordion-item\n *\n * Single collapsible row. Place inside `<arvea-accordion>` (optional).\n *\n * @prop {boolean} open\n * @prop {string} title\n * @prop {boolean} disabled\n *\n * @slot title - Custom title (overrides `title` attr)\n * @slot - Body content\n *\n * @fires arvea-toggle - { open }\n */\n@customElement('arvea-accordion-item')\nexport class ArveaAccordionItem extends LitElement {\n static styles = arveaAccordionItemStyles;\n\n @property({ type: Boolean, reflect: true }) open = false;\n @property({ type: String }) title = '';\n @property({ type: Boolean, reflect: true }) disabled = false;\n\n toggle() {\n if (this.disabled) return;\n this.open = !this.open;\n this.dispatchEvent(\n new CustomEvent('arvea-toggle', {\n detail: { open: this.open },\n bubbles: true,\n composed: true,\n }),\n );\n }\n\n render() {\n return html`\n <button\n part=\"header\"\n class=\"header\"\n type=\"button\"\n aria-expanded=${this.open ? 'true' : 'false'}\n ?disabled=${this.disabled}\n @click=${() => this.toggle()}\n >\n <span part=\"title\"><slot name=\"title\">${this.title || nothing}</slot></span>\n <span part=\"chevron\" class=\"chevron\" aria-hidden=\"true\">\n ${svg`<svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M4 6L8 10L12 6\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>`}\n </span>\n </button>\n <div part=\"body\" class=\"body\" role=\"region\">\n <div part=\"body-inner\" class=\"body-inner\"><slot></slot></div>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'arvea-accordion-item': ArveaAccordionItem;\n }\n}\n","import { LitElement, html } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { arveaAccordionStyles } from './arvea-accordion.styles';\nimport './arvea-accordion-item';\nimport type { ArveaAccordionItem } from './arvea-accordion-item';\n\n/**\n * @element arvea-accordion\n *\n * Container for `<arvea-accordion-item>` elements. By default, opening\n * one item closes the others. Set `multiple` to allow multiple open items.\n *\n * @prop {boolean} multiple - Allow multiple open items\n * @prop {boolean} bordered - Render with a single rounded border\n *\n * @slot - One or more `<arvea-accordion-item>` elements\n */\n@customElement('arvea-accordion')\nexport class ArveaAccordion extends LitElement {\n static styles = arveaAccordionStyles;\n\n @property({ type: Boolean, reflect: true }) multiple = false;\n @property({ type: Boolean, reflect: true }) bordered = false;\n\n connectedCallback(): void {\n super.connectedCallback();\n this.addEventListener('arvea-toggle', this._onItemToggle as EventListener);\n }\n\n disconnectedCallback(): void {\n super.disconnectedCallback();\n this.removeEventListener('arvea-toggle', this._onItemToggle as EventListener);\n }\n\n private _onItemToggle = (e: CustomEvent<{ open: boolean }>) => {\n if (this.multiple || !e.detail.open) return;\n const items = this.querySelectorAll<ArveaAccordionItem>('arvea-accordion-item');\n items.forEach((item) => {\n if (item !== e.target) item.open = false;\n });\n };\n\n render() {\n return html`<slot></slot>`;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'arvea-accordion': ArveaAccordion;\n }\n}\n","import { css } from 'lit';\nimport { tokenStyles } from '../../tokens/tokens.styles';\n\nexport const arveaAlertStyles = [\n tokenStyles,\n css`\n :host {\n display: block;\n font-family: inherit;\n }\n\n .alert {\n display: flex;\n align-items: flex-start;\n gap: var(--alert-gap);\n padding: var(--alert-padding);\n border-radius: var(--alert-radius);\n border: 1px solid transparent;\n box-sizing: border-box;\n }\n\n :host([variant='info']) .alert,\n .alert {\n background: var(--alert-info-bg);\n border-color: var(--alert-info-border);\n color: var(--alert-info-text);\n }\n :host([variant='success']) .alert {\n background: var(--alert-success-bg);\n border-color: var(--alert-success-border);\n color: var(--alert-success-text);\n }\n :host([variant='warning']) .alert {\n background: var(--alert-warning-bg);\n border-color: var(--alert-warning-border);\n color: var(--alert-warning-text);\n }\n :host([variant='danger']) .alert {\n background: var(--alert-danger-bg);\n border-color: var(--alert-danger-border);\n color: var(--alert-danger-text);\n }\n\n .icon {\n flex-shrink: 0;\n width: 18px;\n height: 18px;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n margin-top: 1px;\n }\n :host([variant='info']) .icon,\n .icon {\n color: var(--alert-info-icon);\n }\n :host([variant='success']) .icon {\n color: var(--alert-success-icon);\n }\n :host([variant='warning']) .icon {\n color: var(--alert-warning-icon);\n }\n :host([variant='danger']) .icon {\n color: var(--alert-danger-icon);\n }\n\n .content {\n flex: 1;\n min-width: 0;\n }\n\n .title {\n font-weight: var(--alert-title-weight);\n font-size: var(--alert-title-size);\n margin: 0 0 2px;\n }\n\n .body {\n font-size: var(--alert-body-size);\n line-height: 1.5;\n }\n\n .close {\n flex-shrink: 0;\n width: var(--alert-close-size, 22px);\n height: var(--alert-close-size, 22px);\n padding: 0;\n border: 0;\n border-radius: 9999px;\n background: transparent;\n color: inherit;\n opacity: var(--alert-close-opacity, 0.7);\n cursor: pointer;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n transition: opacity var(--alert-transition, 0.15s ease), background var(--alert-transition, 0.15s ease);\n }\n .close:hover {\n opacity: 1;\n background: var(--alert-close-hover-bg, rgba(15, 23, 42, 0.06));\n }\n .close:focus-visible {\n outline: 2px solid currentColor;\n outline-offset: 1px;\n }\n `,\n];\n","import { LitElement, html, nothing, svg } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { arveaAlertStyles } from './arvea-alert.styles';\nimport type { ArveaAlertVariant } from './arvea-alert.types';\n\nconst ICONS: Record<ArveaAlertVariant, ReturnType<typeof svg>> = {\n info: svg`<svg width=\"18\" height=\"18\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"10\" cy=\"10\" r=\"8\" stroke=\"currentColor\" stroke-width=\"1.75\"/>\n <path d=\"M10 9V14M10 6.01V6\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"/>\n </svg>`,\n success: svg`<svg width=\"18\" height=\"18\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"10\" cy=\"10\" r=\"8\" stroke=\"currentColor\" stroke-width=\"1.75\"/>\n <path d=\"M6.5 10.25L9 12.75L13.5 7.75\" stroke=\"currentColor\" stroke-width=\"1.75\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>`,\n warning: svg`<svg width=\"18\" height=\"18\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M10 2L18.5 17H1.5L10 2Z\" stroke=\"currentColor\" stroke-width=\"1.75\" stroke-linejoin=\"round\"/>\n <path d=\"M10 8V12M10 14.5V14.51\" stroke=\"currentColor\" stroke-width=\"1.75\" stroke-linecap=\"round\"/>\n </svg>`,\n danger: svg`<svg width=\"18\" height=\"18\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"10\" cy=\"10\" r=\"8\" stroke=\"currentColor\" stroke-width=\"1.75\"/>\n <path d=\"M10 6V11M10 13.5V13.51\" stroke=\"currentColor\" stroke-width=\"1.75\" stroke-linecap=\"round\"/>\n </svg>`,\n};\n\n/**\n * @element arvea-alert\n *\n * Inline notification with four variants. Use the default slot for body\n * content; `title` for the bold heading.\n *\n * @prop {'info'|'success'|'warning'|'danger'} variant - default 'info'\n * @prop {string} title\n * @prop {boolean} closable - shows a close button (dismisses the alert)\n * @prop {boolean} hideIcon\n *\n * @slot - body content\n * @slot icon - override the default icon\n * @slot action - trailing action (button/link) placed before the close button\n *\n * @fires arvea-close\n */\n@customElement('arvea-alert')\nexport class ArveaAlert extends LitElement {\n static styles = arveaAlertStyles;\n\n @property({ type: String, reflect: true })\n variant: ArveaAlertVariant = 'info';\n @property({ type: String }) title = '';\n @property({ type: Boolean }) closable = false;\n @property({ type: Boolean, attribute: 'hide-icon' }) hideIcon = false;\n\n @state() private _dismissed = false;\n\n private _close = () => {\n this._dismissed = true;\n this.dispatchEvent(\n new CustomEvent('arvea-close', { bubbles: true, composed: true }),\n );\n };\n\n render() {\n if (this._dismissed) return nothing;\n return html`\n <div part=\"alert\" class=\"alert\" role=\"alert\">\n ${!this.hideIcon\n ? html`<span part=\"icon\" class=\"icon\"><slot name=\"icon\">${ICONS[this.variant]}</slot></span>`\n : nothing}\n <div part=\"content\" class=\"content\">\n ${this.title ? html`<p part=\"title\" class=\"title\">${this.title}</p>` : nothing}\n <div part=\"body\" class=\"body\"><slot></slot></div>\n </div>\n <slot name=\"action\"></slot>\n ${this.closable\n ? html`\n <button\n part=\"close\"\n class=\"close\"\n type=\"button\"\n aria-label=\"Dismiss\"\n @click=${this._close}\n >\n ${svg`<svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M1.5 1.5L10.5 10.5M10.5 1.5L1.5 10.5\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"/>\n </svg>`}\n </button>\n `\n : nothing}\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'arvea-alert': ArveaAlert;\n }\n}\n","import { css } from 'lit';\nimport { tokenStyles } from '../../tokens/tokens.styles';\n\nexport const arveaDividerStyles = [\n tokenStyles,\n css`\n :host {\n display: block;\n font-family: inherit;\n --_color: var(--divider-color);\n --_style: solid;\n }\n :host([emphasis='strong']) {\n --_color: var(--divider-color-strong);\n }\n :host([variant='dashed']) {\n --_style: dashed;\n }\n :host([variant='dotted']) {\n --_style: dotted;\n }\n\n /* ── Horizontal ─────────────────────────────────────── */\n :host(:not([orientation='vertical'])) {\n width: 100%;\n margin: var(--_spacing, var(--divider-spacing)) 0;\n }\n\n .line {\n width: 100%;\n border-top: var(--divider-thickness) var(--_style) var(--_color);\n }\n\n .with-text {\n display: flex;\n align-items: center;\n gap: var(--divider-text-padding);\n }\n\n .with-text::before,\n .with-text::after {\n content: '';\n flex: 1;\n border-top: var(--divider-thickness) var(--_style) var(--_color);\n }\n\n :host([align='start']) .with-text::before {\n flex: 0 0 var(--divider-text-padding);\n }\n :host([align='end']) .with-text::after {\n flex: 0 0 var(--divider-text-padding);\n }\n\n .label {\n color: var(--divider-text-color);\n font-size: var(--divider-text-size);\n font-weight: var(--font-weight-medium);\n text-transform: uppercase;\n letter-spacing: 0.04em;\n white-space: nowrap;\n }\n\n /* ── Vertical ───────────────────────────────────────── */\n :host([orientation='vertical']) {\n display: inline-block;\n width: 1px;\n align-self: stretch;\n margin: 0 var(--_spacing, var(--divider-spacing));\n border-left: var(--divider-thickness) var(--_style) var(--_color);\n }\n :host([orientation='vertical']) .line,\n :host([orientation='vertical']) .with-text {\n display: none;\n }\n `,\n];\n","import { LitElement, html, nothing } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { arveaDividerStyles } from './arvea-divider.styles';\nimport type {\n ArveaDividerAlign,\n ArveaDividerEmphasis,\n ArveaDividerOrientation,\n ArveaDividerVariant,\n} from './arvea-divider.types';\n\n/**\n * @element arvea-divider\n *\n * Visual separator. Use orientation=\"vertical\" inside flex containers, or\n * pass `text` (or slot content) for a labeled horizontal divider.\n *\n * @prop {'horizontal'|'vertical'} orientation - default 'horizontal'\n * @prop {'solid'|'dashed'|'dotted'} variant\n * @prop {'subtle'|'strong'} emphasis\n * @prop {'start'|'center'|'end'} align - text alignment\n * @prop {string} text - optional label\n * @prop {string} spacing - CSS margin override\n *\n * @slot - Alternative to the `text` attribute\n */\n@customElement('arvea-divider')\nexport class ArveaDivider extends LitElement {\n static styles = arveaDividerStyles;\n\n @property({ type: String, reflect: true })\n orientation: ArveaDividerOrientation = 'horizontal';\n @property({ type: String, reflect: true })\n variant: ArveaDividerVariant = 'solid';\n @property({ type: String, reflect: true })\n emphasis: ArveaDividerEmphasis = 'subtle';\n @property({ type: String, reflect: true })\n align: ArveaDividerAlign = 'center';\n @property({ type: String }) text = '';\n @property({ type: String }) spacing = '';\n\n connectedCallback(): void {\n super.connectedCallback();\n this.setAttribute('role', 'separator');\n if (this.orientation === 'vertical') {\n this.setAttribute('aria-orientation', 'vertical');\n }\n }\n\n render() {\n if (this.spacing) {\n this.style.setProperty('--_spacing', this.spacing);\n }\n if (this.orientation === 'vertical') return nothing;\n const hasText =\n this.text || (this.children && this.children.length > 0);\n if (!hasText) return html`<div part=\"line\" class=\"line\"></div>`;\n return html`\n <div part=\"base\" class=\"with-text\">\n <span part=\"label\" class=\"label\">${this.text || html`<slot></slot>`}</span>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'arvea-divider': ArveaDivider;\n }\n}\n","import { css } from 'lit';\nimport { tokenStyles } from '../../tokens/tokens.styles';\n\nexport const arveaFormFieldStyles = [\n tokenStyles,\n css`\n :host {\n display: block;\n font-family: inherit;\n width: 100%;\n }\n\n .label {\n display: flex;\n align-items: center;\n gap: 4px;\n color: var(--input-label-color);\n font-size: var(--input-label-size);\n font-weight: var(--input-label-weight);\n margin-bottom: 6px;\n }\n\n .required {\n color: var(--input-border-invalid);\n }\n\n .optional {\n color: var(--input-hint-color);\n font-weight: 400;\n }\n\n ::slotted(*) {\n width: 100%;\n }\n\n .hint {\n margin-top: 6px;\n font-size: var(--input-hint-size);\n color: var(--input-hint-color);\n display: flex;\n align-items: center;\n gap: 6px;\n }\n\n :host([status='invalid']) .hint {\n color: var(--input-hint-color-invalid);\n }\n :host([status='warning']) .hint {\n color: var(--input-hint-color-warning);\n }\n :host([status='valid']) .hint {\n color: var(--input-hint-color-valid);\n }\n\n .hint svg {\n width: 14px;\n height: 14px;\n flex-shrink: 0;\n }\n `,\n];\n","import { LitElement, html, nothing } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { arveaFormFieldStyles } from './arvea-form-field.styles';\nimport type { ArveaFormFieldStatus } from './arvea-form-field.types';\n\n/**\n * @element arvea-form-field\n *\n * Wraps a form control (input, textarea, select, etc.) with a label and hint/error message.\n *\n * @prop {string} label - Label text shown above the control\n * @prop {string} hint - Helper text shown below the control\n * @prop {string} error - Error message (forces status='invalid' when present)\n * @prop {boolean} required - Mark the field as required (renders an asterisk)\n * @prop {boolean} optional - Render an \"(optional)\" suffix on the label\n * @prop {ArveaFormFieldStatus} status - 'default' | 'invalid' | 'warning' | 'valid'\n * @prop {string} htmlFor - Associates the label with a control via id\n *\n * @slot default - Place a form control here (input, select, textarea, ...)\n */\n@customElement('arvea-form-field')\nexport class ArveaFormField extends LitElement {\n static styles = arveaFormFieldStyles;\n\n @property({ type: String }) label = '';\n @property({ type: String }) hint = '';\n @property({ type: String }) error = '';\n @property({ type: Boolean, reflect: true }) required = false;\n @property({ type: Boolean, reflect: true }) optional = false;\n @property({ type: String, reflect: true }) status: ArveaFormFieldStatus =\n 'default';\n @property({ type: String, attribute: 'html-for' }) htmlFor = '';\n\n private get _resolvedStatus(): ArveaFormFieldStatus {\n return this.error ? 'invalid' : this.status;\n }\n\n private get _message(): string {\n return this.error || this.hint;\n }\n\n willUpdate() {\n if (this._resolvedStatus !== this.status) {\n this.setAttribute('status', this._resolvedStatus);\n }\n this._syncInputState();\n }\n\n private _syncInputState() {\n const input = this.querySelector('arvea-input') as HTMLElement & {\n invalid: boolean;\n hasWarning: boolean;\n showValid: boolean;\n };\n if (!input) return;\n const s = this._resolvedStatus;\n input.invalid = s === 'invalid';\n input.hasWarning = s === 'warning';\n input.showValid = s === 'valid';\n }\n\n render() {\n return html`\n ${this.label\n ? html`<label part=\"label\" class=\"label\" for=${this.htmlFor || nothing}>\n <span>${this.label}</span>\n ${this.required\n ? html`<span class=\"required\" aria-hidden=\"true\">*</span>`\n : nothing}\n ${this.optional && !this.required\n ? html`<span class=\"optional\">(optional)</span>`\n : nothing}\n </label>`\n : nothing}\n\n <slot></slot>\n\n ${this._message\n ? html`<div\n part=\"hint\"\n class=\"hint\"\n role=${this._resolvedStatus === 'invalid' ? 'alert' : 'status'}\n >\n <span>${this._message}</span>\n </div>`\n : nothing}\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'arvea-form-field': ArveaFormField;\n }\n}\n","import { css } from 'lit';\nimport { tokenStyles } from '../../tokens/tokens.styles';\n\nexport const arveaBreadcrumbStyles = [\n tokenStyles,\n css`\n :host {\n display: block;\n font-family: inherit;\n }\n\n nav {\n display: flex;\n }\n\n ol {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--breadcrumb-gap);\n list-style: none;\n padding: 0;\n margin: 0;\n }\n\n li {\n display: inline-flex;\n align-items: center;\n gap: var(--breadcrumb-gap);\n font-size: var(--breadcrumb-font-size);\n }\n\n a,\n button.crumb,\n span.crumb {\n color: var(--breadcrumb-color);\n text-decoration: none;\n border-radius: 4px;\n padding: 2px 4px;\n background: none;\n border: 0;\n cursor: pointer;\n font: inherit;\n }\n\n a:hover,\n button.crumb:hover {\n color: var(--breadcrumb-color-hover);\n text-decoration: underline;\n }\n\n li[aria-current='page'] .crumb,\n li[aria-current='page'] {\n color: var(--breadcrumb-color-current);\n font-weight: 600;\n cursor: default;\n }\n\n .sep {\n color: var(--breadcrumb-separator-color);\n display: inline-flex;\n align-items: center;\n user-select: none;\n }\n\n .sep svg {\n width: 14px;\n height: 14px;\n }\n\n .ellipsis {\n color: var(--breadcrumb-color);\n padding: 0 4px;\n }\n `,\n];\n","import { LitElement, html, nothing, TemplateResult } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { arveaBreadcrumbStyles } from './arvea-breadcrumb.styles';\nimport type {\n ArveaBreadcrumbItem,\n ArveaBreadcrumbSeparator,\n} from './arvea-breadcrumb.types';\n\n/**\n * @element arvea-breadcrumb\n *\n * @prop {ArveaBreadcrumbItem[]} items - Crumbs to display\n * @prop {'chevron'|'slash'|'dot'} separator - Visual separator (default 'chevron')\n * @prop {number} maxItems - Collapse to ellipsis if items exceed this number (0 = never)\n *\n * @fires arvea-breadcrumb-navigate - { detail: { item, index } } when a non-current crumb is clicked\n */\n@customElement('arvea-breadcrumb')\nexport class ArveaBreadcrumb extends LitElement {\n static styles = arveaBreadcrumbStyles;\n\n @property({ type: Array }) items: ArveaBreadcrumbItem[] = [];\n @property({ type: String }) separator: ArveaBreadcrumbSeparator = 'chevron';\n @property({ type: Number, attribute: 'max-items' }) maxItems = 0;\n\n private _renderSeparator(): TemplateResult | typeof nothing {\n if (this.separator === 'slash') {\n return html`<span part=\"separator\" class=\"sep\" aria-hidden=\"true\">/</span>`;\n }\n if (this.separator === 'dot') {\n return html`<span part=\"separator\" class=\"sep\" aria-hidden=\"true\">•</span>`;\n }\n return html`<span part=\"separator\" class=\"sep\" aria-hidden=\"true\">\n <svg viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\">\n <path d=\"m6 4 4 4-4 4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n </span>`;\n }\n\n private _onClick(e: Event, item: ArveaBreadcrumbItem, index: number) {\n if (item.current) return;\n this.dispatchEvent(\n new CustomEvent('arvea-breadcrumb-navigate', {\n detail: { item, index },\n bubbles: true,\n composed: true,\n }),\n );\n if (!item.href) e.preventDefault();\n }\n\n private _renderCrumb(item: ArveaBreadcrumbItem, index: number) {\n const isCurrent = !!item.current;\n const inner = isCurrent\n ? html`<span part=\"crumb current\" class=\"crumb\" aria-current=\"page\">${item.label}</span>`\n : item.href\n ? html`<a\n part=\"\n \"\n class=\"crumb\"\n href=${item.href}\n @click=${(e: Event) => this._onClick(e, item, index)}\n >${item.label}</a\n >`\n : html`<button\n type=\"button\"\n part=\"crumb button\"\n class=\"crumb\"\n @click=${(e: Event) => this._onClick(e, item, index)}\n >\n ${item.label}\n </button>`;\n return html`<li aria-current=${isCurrent ? 'page' : nothing}>${inner}</li>`;\n }\n\n private _visibleItems(): (ArveaBreadcrumbItem | { ellipsis: true })[] {\n const items = this.items ?? [];\n if (!this.maxItems || items.length <= this.maxItems) return items;\n // Keep first, ellipsis, then last (maxItems - 2)\n const tailCount = Math.max(1, this.maxItems - 2);\n return [\n items[0],\n { ellipsis: true } as const,\n ...items.slice(items.length - tailCount),\n ];\n }\n\n render() {\n const visible = this._visibleItems();\n return html`\n <nav part=\"base\" aria-label=\"Breadcrumb\">\n <ol part=\"list\">\n ${visible.map((item, i) => {\n const isLast = i === visible.length - 1;\n if ('ellipsis' in item) {\n return html`<li>\n <span class=\"ellipsis\" aria-hidden=\"true\">…</span>\n </li>\n ${!isLast ? this._renderSeparator() : nothing}`;\n }\n return html`${this._renderCrumb(item, i)}\n ${!isLast ? this._renderSeparator() : nothing}`;\n })}\n </ol>\n </nav>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'arvea-breadcrumb': ArveaBreadcrumb;\n }\n}\n","import { css } from 'lit';\nimport { tokenStyles } from '../../tokens/tokens.styles';\n\nexport const arveaPaginationStyles = [\n tokenStyles,\n css`\n :host {\n display: inline-block;\n font-family: inherit;\n }\n\n nav {\n display: flex;\n align-items: center;\n gap: var(--pagination-gap);\n }\n\n button {\n min-width: var(--pagination-size-md);\n height: var(--pagination-size-md);\n padding: 0 8px;\n border-radius: var(--pagination-radius);\n border: 1px solid var(--pagination-border);\n background: var(--pagination-bg);\n color: var(--pagination-color);\n font: inherit;\n font-size: var(--pagination-font-size);\n cursor: pointer;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n transition:\n background 0.15s,\n border-color 0.15s,\n color 0.15s;\n }\n\n button svg {\n width: 14px;\n height: 14px;\n }\n\n button:hover:not(:disabled):not([aria-current]) {\n background: var(--pagination-bg-hover);\n border-color: var(--pagination-border-hover);\n }\n\n button:focus-visible {\n outline: none;\n box-shadow: var(--pagination-shadow-focus);\n }\n\n button[aria-current='page'] {\n background: var(--pagination-bg-active);\n border-color: var(--pagination-border-active);\n color: var(--pagination-color-active);\n cursor: default;\n }\n\n button:disabled {\n opacity: 0.45;\n cursor: not-allowed;\n }\n\n .ellipsis {\n color: var(--pagination-color);\n padding: 0 4px;\n user-select: none;\n }\n\n :host([size='sm']) button {\n min-width: var(--pagination-size-sm);\n height: var(--pagination-size-sm);\n font-size: 12px;\n }\n :host([size='lg']) button {\n min-width: var(--pagination-size-lg);\n height: var(--pagination-size-lg);\n font-size: 15px;\n }\n\n .page-size,\n .jump-to {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n font-size: var(--pagination-font-size);\n color: var(--pagination-color);\n margin: 0 4px;\n white-space: nowrap;\n }\n\n .page-size select,\n .jump-to input {\n height: var(--pagination-size-md);\n padding: 0 8px;\n border-radius: var(--pagination-radius);\n border: 1px solid var(--pagination-border);\n background: var(--pagination-bg);\n color: var(--pagination-color);\n font: inherit;\n }\n\n .jump-to input {\n width: 64px;\n }\n\n .page-size select:focus-visible,\n .jump-to input:focus-visible {\n outline: none;\n box-shadow: var(--pagination-shadow-focus);\n }\n `,\n];\n","import { LitElement, html, nothing } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { arveaPaginationStyles } from './arvea-pagination.styles';\nimport type { ArveaPaginationSize } from './arvea-pagination.types';\n\ntype Token = number | 'ellipsis';\n\n/**\n * @element arvea-pagination\n *\n * @prop {number} page - current page (1-based)\n * @prop {number} total - total number of pages\n * @prop {number} siblings - pages shown around current (default 1)\n * @prop {number} boundaries - pages always shown at start/end (default 1)\n * @prop {ArveaPaginationSize} size - 'sm' | 'md' | 'lg'\n * @prop {boolean} disabled\n * @prop {boolean} showFirstLast - render first/last buttons\n * @prop {number} pageSize - optional rows-per-page (renders a selector when pageSizeOptions provided)\n * @prop {number[]} pageSizeOptions - choices for the page-size selector\n * @prop {boolean} showJumpTo - render a \"Go to\" input for direct page entry\n *\n * @fires arvea-page-change - { detail: { page } }\n * @fires arvea-page-size-change - { detail: { pageSize } }\n */\n@customElement('arvea-pagination')\nexport class ArveaPagination extends LitElement {\n static styles = arveaPaginationStyles;\n\n @property({ type: Number }) page = 1;\n @property({ type: Number }) total = 1;\n @property({ type: Number }) siblings = 1;\n @property({ type: Number }) boundaries = 1;\n @property({ type: String, reflect: true }) size: ArveaPaginationSize = 'md';\n @property({ type: Boolean, reflect: true }) disabled = false;\n @property({ type: Boolean, attribute: 'show-first-last' })\n showFirstLast = false;\n @property({ type: Number, attribute: 'page-size' }) pageSize?: number;\n @property({ type: Array, attribute: 'page-size-options' })\n pageSizeOptions: number[] = [10, 25, 50, 100];\n @property({ type: Boolean, attribute: 'show-jump-to' }) showJumpTo = false;\n\n private _go(page: number) {\n if (this.disabled) return;\n const clamped = Math.max(1, Math.min(this.total, page));\n if (clamped === this.page) return;\n this.page = clamped;\n this.dispatchEvent(\n new CustomEvent('arvea-page-change', {\n detail: { page: clamped },\n bubbles: true,\n composed: true,\n }),\n );\n }\n\n private _range(): Token[] {\n const total = Math.max(1, this.total);\n const current = Math.max(1, Math.min(this.page, total));\n const siblings = Math.max(0, this.siblings);\n const boundaries = Math.max(1, this.boundaries);\n\n const totalShown = boundaries * 2 + siblings * 2 + 3;\n if (total <= totalShown) {\n return Array.from({ length: total }, (_, i) => i + 1);\n }\n\n const startPages = Array.from({ length: boundaries }, (_, i) => i + 1);\n const endPages = Array.from(\n { length: boundaries },\n (_, i) => total - boundaries + i + 1,\n );\n\n const left = Math.max(current - siblings, boundaries + 2);\n const right = Math.min(current + siblings, total - boundaries - 1);\n\n const items: Token[] = [...startPages];\n items.push(left > boundaries + 2 ? 'ellipsis' : boundaries + 1);\n for (let p = left; p <= right; p++) items.push(p);\n items.push(\n right < total - boundaries - 1 ? 'ellipsis' : total - boundaries,\n );\n items.push(...endPages);\n\n // Dedup\n const seen = new Set<Token>();\n return items.filter((t) => {\n if (t === 'ellipsis') return true;\n if (seen.has(t)) return false;\n seen.add(t);\n return true;\n });\n }\n\n private _onPageSizeChange = (e: Event) => {\n const sel = e.target as HTMLSelectElement;\n const next = Number(sel.value);\n if (!Number.isFinite(next) || next <= 0) return;\n this.pageSize = next;\n this.dispatchEvent(\n new CustomEvent('arvea-page-size-change', {\n detail: { pageSize: next },\n bubbles: true,\n composed: true,\n }),\n );\n };\n\n private _onJumpKey = (e: KeyboardEvent) => {\n if (e.key !== 'Enter') return;\n const input = e.target as HTMLInputElement;\n const n = parseInt(input.value, 10);\n if (Number.isFinite(n)) this._go(n);\n input.value = '';\n };\n\n private _arrow(dir: 'left' | 'right' | 'first' | 'last') {\n if (dir === 'left')\n return html`<svg viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"><path d=\"m10 4-4 4 4 4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>`;\n if (dir === 'right')\n return html`<svg viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"><path d=\"m6 4 4 4-4 4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>`;\n if (dir === 'first')\n return html`<svg viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"><path d=\"m11 4-4 4 4 4M5 4v8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>`;\n return html`<svg viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"><path d=\"m5 4 4 4-4 4M11 4v8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>`;\n }\n\n render() {\n const tokens = this._range();\n const atFirst = this.page <= 1;\n const atLast = this.page >= this.total;\n const showPageSize =\n this.pageSize != null && this.pageSizeOptions.length > 0;\n return html`\n <nav part=\"base\" aria-label=\"Pagination\">\n ${showPageSize\n ? html`<label class=\"page-size\">\n <span class=\"page-size-label\">Rows</span>\n <select\n aria-label=\"Rows per page\"\n ?disabled=${this.disabled}\n @change=${this._onPageSizeChange}\n >\n ${this.pageSizeOptions.map(\n (n) => html`<option\n value=${n}\n ?selected=${n === this.pageSize}\n >\n ${n}\n </option>`,\n )}\n </select>\n </label>`\n : nothing}\n ${this.showFirstLast\n ? html`<button\n type=\"button\"\n aria-label=\"First page\"\n ?disabled=${this.disabled || atFirst}\n @click=${() => this._go(1)}\n >\n ${this._arrow('first')}\n </button>`\n : nothing}\n <button\n type=\"button\"\n aria-label=\"Previous page\"\n ?disabled=${this.disabled || atFirst}\n @click=${() => this._go(this.page - 1)}\n >\n ${this._arrow('left')}\n </button>\n ${tokens.map((t) =>\n t === 'ellipsis'\n ? html`<span class=\"ellipsis\" aria-hidden=\"true\">…</span>`\n : html`<button\n type=\"button\"\n aria-label=\"Page ${t}\"\n aria-current=${t === this.page ? 'page' : nothing}\n ?disabled=${this.disabled}\n @click=${() => this._go(t as number)}\n >\n ${t}\n </button>`,\n )}\n <button\n type=\"button\"\n aria-label=\"Next page\"\n ?disabled=${this.disabled || atLast}\n @click=${() => this._go(this.page + 1)}\n >\n ${this._arrow('right')}\n </button>\n ${this.showFirstLast\n ? html`<button\n type=\"button\"\n aria-label=\"Last page\"\n ?disabled=${this.disabled || atLast}\n @click=${() => this._go(this.total)}\n >\n ${this._arrow('last')}\n </button>`\n : nothing}\n ${this.showJumpTo\n ? html`<label class=\"jump-to\">\n <span class=\"jump-to-label\">Go to</span>\n <input\n type=\"number\"\n min=\"1\"\n max=${this.total}\n ?disabled=${this.disabled}\n @keydown=${this._onJumpKey}\n aria-label=\"Jump to page\"\n />\n </label>`\n : nothing}\n </nav>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'arvea-pagination': ArveaPagination;\n }\n}\n","import { css } from 'lit';\nimport { tokenStyles } from '../../tokens/tokens.styles';\n\nexport const arveaDropdownMenuStyles = [\n tokenStyles,\n css`\n :host {\n display: inline-block;\n position: relative;\n font-family: inherit;\n }\n\n .trigger {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 8px 12px;\n background: var(--dropdown-trigger-bg);\n color: var(--dropdown-trigger-color);\n border: 1px solid var(--dropdown-trigger-border);\n border-radius: var(--dropdown-radius);\n font: inherit;\n font-size: 14px;\n cursor: pointer;\n }\n\n .trigger:hover {\n background: var(--dropdown-trigger-bg-hover);\n }\n\n .trigger:focus-visible {\n outline: none;\n box-shadow: var(--dropdown-shadow-focus);\n }\n\n .chevron {\n width: 14px;\n height: 14px;\n transition: transform 0.18s ease;\n }\n\n :host([open]) .chevron {\n transform: rotate(180deg);\n }\n\n .menu-wrapper {\n position: absolute;\n z-index: 30;\n min-width: var(--dropdown-min-width);\n max-width: var(--dropdown-max-width);\n background: var(--dropdown-bg);\n border: 1px solid var(--dropdown-border);\n border-radius: var(--dropdown-radius);\n box-shadow: var(--dropdown-shadow);\n padding: var(--dropdown-padding);\n display: none;\n }\n\n :host([open]) .menu-wrapper {\n display: flex;\n flex-direction: column;\n }\n\n :host([placement='bottom-start']) .menu-wrapper {\n top: calc(100% + 6px);\n left: 0;\n }\n :host([placement='bottom-end']) .menu-wrapper {\n top: calc(100% + 6px);\n right: 0;\n }\n :host([placement='top-start']) .menu-wrapper {\n bottom: calc(100% + 6px);\n left: 0;\n }\n :host([placement='top-end']) .menu-wrapper {\n bottom: calc(100% + 6px);\n right: 0;\n }\n\n .menu {\n list-style: none;\n margin: 0;\n padding: 0;\n flex: 1 1 auto;\n min-width: 0;\n }\n\n .item {\n display: flex;\n width: 100%;\n align-items: center;\n gap: 8px;\n padding: var(--dropdown-item-padding);\n background: transparent;\n border: 0;\n border-radius: 6px;\n color: var(--dropdown-item-color);\n font: inherit;\n font-size: 14px;\n text-align: left;\n cursor: pointer;\n }\n\n .item:hover:not(:disabled),\n .item:focus-visible,\n .item.active {\n background: var(--dropdown-item-bg-hover);\n outline: none;\n }\n\n .item:disabled {\n color: var(--dropdown-item-color-disabled);\n cursor: not-allowed;\n }\n\n .item.destructive {\n color: var(--dropdown-item-color-destructive);\n }\n\n .item.destructive:hover {\n background: var(--dropdown-item-bg-destructive-hover);\n }\n\n .divider {\n height: 1px;\n background: var(--dropdown-divider);\n margin: 4px 0;\n }\n\n .menu-search {\n padding: 6px 6px 4px;\n border-bottom: 1px solid var(--dropdown-divider);\n }\n .menu-search input {\n width: 100%;\n box-sizing: border-box;\n padding: 6px 8px;\n border: 1px solid var(--input-border, var(--colors-slate-200, #e2e8f0));\n border-radius: 6px;\n font: inherit;\n outline: none;\n }\n .menu-search input:focus-visible {\n border-color: var(--input-border-focus, var(--colors-primary-500, #3b82f6));\n }\n\n .empty {\n padding: 10px 12px;\n font-size: 13px;\n color: var(--dropdown-item-color-disabled, #94a3b8);\n text-align: center;\n list-style: none;\n }\n\n /* ── Flag + checkmark (locale mode) ──────────────── */\n .flag-img {\n width: 22px;\n height: 15px;\n object-fit: cover;\n border-radius: 2px;\n flex-shrink: 0;\n display: block;\n }\n\n .item-label {\n flex: 1;\n text-align: left;\n }\n\n .check-icon {\n width: 14px;\n height: 14px;\n color: var(--colors-primary-600, #2563eb);\n flex-shrink: 0;\n }\n\n /* ── Hover trigger mode ───────────────────────────── */\n :host([trigger-mode='hover']) {\n display: inline-block;\n position: relative;\n }\n\n /*\n * Invisible bridge fills the gap between the trigger bottom edge\n * and the dropdown top so the host stays hovered while the cursor\n * moves across the gap.\n */\n :host([trigger-mode='hover'])::after {\n content: '';\n position: absolute;\n top: 100%;\n left: -8px;\n right: -8px;\n height: 12px;\n pointer-events: auto;\n }\n\n :host([trigger-mode='hover'][open]) .menu-wrapper {\n display: flex;\n flex-direction: column;\n }\n `,\n];\n","import { LitElement, html, nothing } from 'lit';\nimport { customElement, property, query, state } from 'lit/decorators.js';\nimport { arveaDropdownMenuStyles } from './arvea-dropdown-menu.styles';\nimport type {\n ArveaDropdownItem,\n ArveaDropdownPlacement,\n} from './arvea-dropdown-menu.types';\n\n/**\n * @element arvea-dropdown-menu\n *\n * @prop {ArveaDropdownItem[]} items - Menu items (support flagSrc, value, divider, icon)\n * @prop {boolean} open - Controlled open state (reflected)\n * @prop {string} value - Currently selected item value (shows checkmark)\n * @prop {ArveaDropdownPlacement} placement - 'bottom-start' (default), 'bottom-end', 'top-start', 'top-end'\n * @prop {string} triggerLabel - Text for default trigger; ignored when slot[name=trigger] is used\n * @prop {'click'|'hover'} triggerMode - How the dropdown opens (default 'click')\n *\n * @slot trigger - Custom trigger element (replaces default button)\n * @slot - Custom items (alternative to .items property)\n *\n * @fires arvea-dropdown-select - { detail: { item } } on item click\n * @fires arvea-dropdown-open\n * @fires arvea-dropdown-close\n */\n@customElement('arvea-dropdown-menu')\nexport class ArveaDropdownMenu extends LitElement {\n static styles = arveaDropdownMenuStyles;\n\n @property({ type: Array }) items: ArveaDropdownItem[] = [];\n @property({ type: Boolean, reflect: true }) open = false;\n @property({ type: String }) value = '';\n @property({ type: String, reflect: true })\n placement: ArveaDropdownPlacement = 'bottom-start';\n @property({ type: String, attribute: 'trigger-label' })\n triggerLabel = 'Menu';\n @property({ type: String, attribute: 'trigger-mode', reflect: true })\n triggerMode: 'click' | 'hover' = 'click';\n @property({ type: Boolean, reflect: true }) searchable = false;\n @property({ type: String, attribute: 'search-placeholder' })\n searchPlaceholder = 'Search…';\n @property({ type: String, attribute: 'no-results-text' })\n noResultsText = 'No results';\n\n @state() private _hasTriggerSlot = false;\n @state() private _hasContentSlot = false;\n @state() private _query = '';\n @state() private _activeIndex = -1;\n\n @query('.menu-search input')\n private _searchInput?: HTMLInputElement;\n\n private _mouseLeaveTimer?: ReturnType<typeof setTimeout>;\n\n private get _visibleItems(): ArveaDropdownItem[] {\n const list = this.items;\n if (!this.searchable || !this._query.trim()) return list;\n const q = this._query.toLowerCase();\n return list.filter((it) => !it.divider && it.label.toLowerCase().includes(q));\n }\n\n private _focusableItems(): ArveaDropdownItem[] {\n return this._visibleItems.filter((it) => !it.divider && !it.disabled);\n }\n\n private _outsideHandler = (e: MouseEvent) => {\n if (!this.open) return;\n const path = e.composedPath();\n if (!path.includes(this)) this._close();\n };\n\n private _keyHandler = (e: KeyboardEvent) => {\n if (!this.open) return;\n if (e.key === 'Escape') {\n e.stopPropagation();\n this._close();\n return;\n }\n if (e.key === 'ArrowDown' || e.key === 'ArrowUp') {\n const focusables = this._focusableItems();\n if (focusables.length === 0) return;\n e.preventDefault();\n const direction = e.key === 'ArrowDown' ? 1 : -1;\n this._activeIndex =\n (this._activeIndex + direction + focusables.length) % focusables.length;\n } else if (e.key === 'Enter' && this._activeIndex >= 0) {\n const item = this._focusableItems()[this._activeIndex];\n if (item) {\n e.preventDefault();\n this._pick(item);\n }\n }\n };\n\n private _onHostMouseEnter = () => {\n if (this.triggerMode !== 'hover') return;\n clearTimeout(this._mouseLeaveTimer);\n if (!this.open) this._openMenu();\n };\n\n private _onHostMouseLeave = () => {\n if (this.triggerMode !== 'hover') return;\n this._mouseLeaveTimer = setTimeout(() => this._close(), 150);\n };\n\n connectedCallback() {\n super.connectedCallback();\n document.addEventListener('click', this._outsideHandler);\n document.addEventListener('keydown', this._keyHandler);\n this.addEventListener('mouseenter', this._onHostMouseEnter);\n this.addEventListener('mouseleave', this._onHostMouseLeave);\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n document.removeEventListener('click', this._outsideHandler);\n document.removeEventListener('keydown', this._keyHandler);\n this.removeEventListener('mouseenter', this._onHostMouseEnter);\n this.removeEventListener('mouseleave', this._onHostMouseLeave);\n clearTimeout(this._mouseLeaveTimer);\n }\n\n private _toggle() {\n if (this.open) { this._close(); } else { this._openMenu(); }\n }\n\n private _openMenu() {\n if (this.open) return;\n this.open = true;\n this._activeIndex = -1;\n this.dispatchEvent(new CustomEvent('arvea-dropdown-open'));\n if (this.searchable) {\n queueMicrotask(() => this._searchInput?.focus());\n }\n }\n\n private _close() {\n if (!this.open) return;\n this.open = false;\n this._query = '';\n this._activeIndex = -1;\n this.dispatchEvent(new CustomEvent('arvea-dropdown-close'));\n }\n\n private _onSearchInput = (e: Event) => {\n this._query = (e.target as HTMLInputElement).value;\n this._activeIndex = -1;\n };\n\n private _pick(item: ArveaDropdownItem) {\n if (item.disabled || item.divider) return;\n this.value = item.value ?? item.id;\n this.dispatchEvent(\n new CustomEvent('arvea-dropdown-select', {\n detail: { item },\n bubbles: true,\n composed: true,\n }),\n );\n this._close();\n }\n\n private _onTriggerSlotChange(e: Event) {\n const slot = e.target as HTMLSlotElement;\n this._hasTriggerSlot = slot.assignedElements().length > 0;\n }\n\n private _onContentSlotChange(e: Event) {\n const slot = e.target as HTMLSlotElement;\n this._hasContentSlot = slot.assignedElements().length > 0;\n }\n\n private _renderItems() {\n const items = this._visibleItems;\n if (items.length === 0) {\n return html`<li class=\"empty\" role=\"presentation\">\n ${this.noResultsText}\n </li>`;\n }\n const focusables = this._focusableItems();\n return items.map((item) => {\n if (item.divider) {\n return html`<li role=\"separator\" class=\"divider\"></li>`;\n }\n const focusIndex = focusables.indexOf(item);\n const active = focusIndex >= 0 && focusIndex === this._activeIndex;\n const isSelected = this.value !== '' && (item.value ?? item.id) === this.value;\n return html`<li role=\"none\">\n <button\n class=\"item ${item.destructive ? 'destructive' : ''} ${active ? 'active' : ''}\"\n role=\"menuitem\"\n ?disabled=${item.disabled}\n @click=${() => this._pick(item)}\n @mouseenter=${() => {\n if (focusIndex >= 0) this._activeIndex = focusIndex;\n }}\n >\n ${item.flagSrc\n ? html`<img class=\"flag-img\" src=${item.flagSrc} alt=\"\" aria-hidden=\"true\" loading=\"lazy\" />`\n : item.icon\n ? html`<span aria-hidden=\"true\">${item.icon}</span>`\n : nothing}\n <span class=\"item-label\">${item.label}</span>\n ${isSelected\n ? html`\n <svg class=\"check-icon\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-label=\"Sélectionné\">\n <polyline points=\"2 8 6 12 14 4\"/>\n </svg>`\n : nothing}\n </button>\n </li>`;\n });\n }\n\n render() {\n return html`\n <slot\n name=\"trigger\"\n @slotchange=${this._onTriggerSlotChange}\n @click=${() => this._toggle()}\n >\n ${!this._hasTriggerSlot\n ? html`<button\n part=\"trigger\"\n class=\"trigger\"\n type=\"button\"\n aria-haspopup=\"menu\"\n aria-expanded=${this.open ? 'true' : 'false'}\n >\n <span>${this.triggerLabel}</span>\n <svg class=\"chevron\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\">\n <path d=\"m4 6 4 4 4-4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n </button>`\n : nothing}\n </slot>\n\n <div part=\"menu-wrapper\" class=\"menu-wrapper\">\n <slot\n name=\"content\"\n @slotchange=${this._onContentSlotChange}\n style=${this._hasContentSlot ? '' : 'display:none'}\n ></slot>\n\n ${!this._hasContentSlot\n ? html`\n ${this.searchable\n ? html`<div part=\"search\" class=\"menu-search\">\n <input\n type=\"search\"\n .value=${this._query}\n placeholder=${this.searchPlaceholder}\n @input=${this._onSearchInput}\n />\n </div>`\n : nothing}\n <ul part=\"menu\" class=\"menu\" role=\"menu\">\n ${this.items.length ? this._renderItems() : html`<slot></slot>`}\n </ul>`\n : nothing}\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'arvea-dropdown-menu': ArveaDropdownMenu;\n }\n}\n","import { css } from 'lit';\nimport { tokenStyles } from '../../tokens/tokens.styles';\n\nexport const arveaSearchBarStyles = [\n tokenStyles,\n css`\n :host {\n display: block;\n position: relative;\n font-family: inherit;\n width: 100%;\n }\n\n .wrapper {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 0 var(--searchbar-padding-x);\n height: var(--searchbar-height-md);\n background: var(--searchbar-bg);\n border: 1px solid var(--searchbar-border);\n border-radius: var(--searchbar-radius);\n transition:\n border-color 0.15s,\n box-shadow 0.15s;\n }\n\n :host([size='sm']) .wrapper {\n height: var(--searchbar-height-sm);\n }\n :host([size='lg']) .wrapper {\n height: var(--searchbar-height-lg);\n }\n\n .wrapper:hover {\n border-color: var(--searchbar-border-hover);\n }\n\n .wrapper:focus-within {\n border-color: var(--searchbar-border-focus);\n box-shadow: var(--searchbar-shadow-focus);\n }\n\n :host([disabled]) .wrapper {\n background: var(--searchbar-bg-disabled);\n pointer-events: none;\n }\n\n input {\n flex: 1;\n min-width: 0;\n border: 0;\n outline: 0;\n background: transparent;\n font: inherit;\n font-size: 14px;\n color: var(--searchbar-color);\n }\n\n input::placeholder {\n color: var(--searchbar-placeholder);\n }\n\n .icon-search,\n .icon-clear,\n .icon-loading {\n flex-shrink: 0;\n color: var(--searchbar-icon);\n width: 16px;\n height: 16px;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n }\n\n .icon-clear {\n cursor: pointer;\n border: 0;\n background: transparent;\n padding: 2px;\n border-radius: 4px;\n color: var(--searchbar-icon);\n }\n\n .icon-clear:hover {\n background: rgba(15, 23, 42, 0.06);\n }\n\n .icon-loading svg {\n animation: arvea-search-spin 0.8s linear infinite;\n }\n\n @keyframes arvea-search-spin {\n to {\n transform: rotate(360deg);\n }\n }\n\n .suggestions {\n position: absolute;\n top: calc(100% + 4px);\n left: 0;\n right: 0;\n background: var(--searchbar-bg);\n border: 1px solid var(--searchbar-border);\n border-radius: var(--searchbar-radius);\n box-shadow: var(--searchbar-shadow);\n list-style: none;\n padding: 4px;\n margin: 0;\n max-height: 280px;\n overflow: auto;\n z-index: 20;\n }\n\n .suggestion {\n display: flex;\n flex-direction: column;\n padding: 8px 10px;\n border-radius: 6px;\n cursor: pointer;\n color: var(--searchbar-color);\n font-size: 14px;\n }\n\n .suggestion:hover,\n .suggestion[aria-selected='true'] {\n background: var(--searchbar-suggestion-bg-hover);\n }\n\n .suggestion .hint {\n color: var(--searchbar-placeholder);\n font-size: 12px;\n }\n `,\n];\n","import { LitElement, html, nothing } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { arveaSearchBarStyles } from './arvea-search-bar.styles';\nimport type {\n ArveaSearchSize,\n ArveaSearchSuggestion,\n} from './arvea-search-bar.types';\n\n/**\n * @element arvea-search-bar\n *\n * @prop {string} value - input value\n * @prop {string} placeholder\n * @prop {ArveaSearchSize} size - 'sm' | 'md' | 'lg'\n * @prop {boolean} disabled\n * @prop {boolean} loading - show spinner instead of search icon\n * @prop {boolean} clearable - show a clear (×) button when value is non-empty\n * @prop {ArveaSearchSuggestion[]} suggestions - autocomplete suggestions\n * @prop {number} debounce - ms before firing arvea-search-input (default 200)\n *\n * @fires arvea-search-input - debounced input event, { detail: { value } }\n * @fires arvea-search-submit - Enter pressed, { detail: { value } }\n * @fires arvea-search-select - suggestion selected, { detail: { suggestion } }\n * @fires arvea-search-clear\n */\n@customElement('arvea-search-bar')\nexport class ArveaSearchBar extends LitElement {\n static styles = arveaSearchBarStyles;\n\n @property({ type: String }) value = '';\n @property({ type: String }) placeholder = 'Search…';\n @property({ type: String, reflect: true }) size: ArveaSearchSize = 'md';\n @property({ type: Boolean, reflect: true }) disabled = false;\n @property({ type: Boolean, reflect: true }) loading = false;\n @property({ type: Boolean }) clearable = true;\n @property({ type: Array }) suggestions: ArveaSearchSuggestion[] = [];\n @property({ type: Number }) debounce = 200;\n\n @state() private _activeIndex = -1;\n @state() private _showSuggestions = false;\n\n private _debounceTimer: ReturnType<typeof setTimeout> | null = null;\n\n private _emitInput(value: string) {\n if (this._debounceTimer) clearTimeout(this._debounceTimer);\n this._debounceTimer = setTimeout(() => {\n this.dispatchEvent(\n new CustomEvent('arvea-search-input', {\n detail: { value },\n bubbles: true,\n composed: true,\n }),\n );\n }, this.debounce);\n }\n\n private _onInput(e: Event) {\n this.value = (e.target as HTMLInputElement).value;\n this._showSuggestions = true;\n this._activeIndex = -1;\n this._emitInput(this.value);\n }\n\n private _onKey(e: KeyboardEvent) {\n if (e.key === 'Enter') {\n this.dispatchEvent(\n new CustomEvent('arvea-search-submit', {\n detail: { value: this.value },\n bubbles: true,\n composed: true,\n }),\n );\n if (\n this._showSuggestions &&\n this._activeIndex >= 0 &&\n this.suggestions[this._activeIndex]\n ) {\n this._pick(this.suggestions[this._activeIndex]);\n }\n } else if (e.key === 'ArrowDown') {\n e.preventDefault();\n this._showSuggestions = true;\n this._activeIndex = Math.min(\n this.suggestions.length - 1,\n this._activeIndex + 1,\n );\n } else if (e.key === 'ArrowUp') {\n e.preventDefault();\n this._activeIndex = Math.max(-1, this._activeIndex - 1);\n } else if (e.key === 'Escape') {\n this._showSuggestions = false;\n }\n }\n\n private _clear() {\n this.value = '';\n this._showSuggestions = false;\n this.dispatchEvent(new CustomEvent('arvea-search-clear'));\n this._emitInput('');\n }\n\n private _pick(s: ArveaSearchSuggestion) {\n this.value = s.label;\n this._showSuggestions = false;\n this.dispatchEvent(\n new CustomEvent('arvea-search-select', {\n detail: { suggestion: s },\n bubbles: true,\n composed: true,\n }),\n );\n }\n\n private _onBlur() {\n // Delay so click on a suggestion fires first.\n setTimeout(() => (this._showSuggestions = false), 120);\n }\n\n render() {\n const hasSuggestions =\n this._showSuggestions && !this.disabled && this.suggestions.length > 0;\n return html`\n <div part=\"wrapper\" class=\"wrapper\">\n ${this.loading\n ? html`<span part=\"icon\" class=\"icon-loading\" aria-hidden=\"true\">\n <svg viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\n <path d=\"M8 1.5a6.5 6.5 0 1 0 6.5 6.5\" stroke-linecap=\"round\"/>\n </svg>\n </span>`\n : html`<span part=\"icon\" class=\"icon-search\" aria-hidden=\"true\">\n <svg viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\">\n <circle cx=\"7\" cy=\"7\" r=\"4.5\"/>\n <path d=\"m10.5 10.5 3 3\" stroke-linecap=\"round\"/>\n </svg>\n </span>`}\n <input\n type=\"text\"\n .value=${this.value}\n placeholder=${this.placeholder}\n ?disabled=${this.disabled}\n role=\"combobox\"\n aria-expanded=${hasSuggestions ? 'true' : 'false'}\n aria-autocomplete=\"list\"\n @input=${this._onInput}\n @keydown=${this._onKey}\n @focus=${() => (this._showSuggestions = true)}\n @blur=${this._onBlur}\n />\n ${this.clearable && this.value && !this.disabled\n ? html`<button\n part=\"clear\"\n class=\"icon-clear\"\n type=\"button\"\n aria-label=\"Clear search\"\n @click=${this._clear}\n >\n <svg viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\">\n <path d=\"m4 4 8 8M12 4l-8 8\" stroke-linecap=\"round\"/>\n </svg>\n </button>`\n : nothing}\n </div>\n\n ${hasSuggestions\n ? html`<ul part=\"suggestions\" class=\"suggestions\" role=\"listbox\">\n ${this.suggestions.map(\n (s, i) => html`<li\n class=\"suggestion\"\n role=\"option\"\n aria-selected=${i === this._activeIndex ? 'true' : 'false'}\n @mousedown=${(e: Event) => e.preventDefault()}\n @click=${() => this._pick(s)}\n >\n <span>${s.label}</span>\n ${s.hint ? html`<span class=\"hint\">${s.hint}</span>` : nothing}\n </li>`,\n )}\n </ul>`\n : nothing}\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'arvea-search-bar': ArveaSearchBar;\n }\n}\n","import { css } from 'lit';\nimport { tokenStyles } from '../../tokens/tokens.styles';\n\nexport const arveaRatingStyles = [\n tokenStyles,\n css`\n :host {\n display: inline-flex;\n align-items: center;\n gap: 8px;\n font-family: inherit;\n }\n\n .stars {\n display: inline-flex;\n gap: var(--rating-gap);\n }\n\n .star {\n position: relative;\n width: var(--rating-size-md);\n height: var(--rating-size-md);\n background: transparent;\n border: 0;\n padding: 0;\n cursor: pointer;\n color: var(--rating-color-empty);\n display: inline-flex;\n align-items: center;\n justify-content: center;\n }\n\n :host([size='sm']) .star {\n width: var(--rating-size-sm);\n height: var(--rating-size-sm);\n }\n :host([size='lg']) .star {\n width: var(--rating-size-lg);\n height: var(--rating-size-lg);\n }\n\n :host([readonly]) .star {\n cursor: default;\n }\n\n .star svg {\n width: 100%;\n height: 100%;\n display: block;\n }\n\n .filled {\n color: var(--rating-color-filled);\n }\n\n .half {\n color: var(--rating-color-empty);\n }\n\n .half-mask {\n position: absolute;\n inset: 0;\n color: var(--rating-color-filled);\n clip-path: inset(0 50% 0 0);\n }\n\n .star:focus-visible {\n outline: 2px solid var(--rating-color-filled);\n outline-offset: 2px;\n border-radius: 4px;\n }\n\n .score {\n color: var(--rating-label-color);\n font-size: 14px;\n font-weight: 700;\n letter-spacing: 0.01em;\n }\n\n .label {\n color: var(--rating-label-color);\n font-size: 12px;\n font-weight: 400;\n opacity: 0.7;\n }\n `,\n];\n","import { LitElement, html, nothing } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { arveaRatingStyles } from './arvea-rating.styles';\nimport type { ArveaRatingSize } from './arvea-rating.types';\n\nconst STAR = html`<svg viewBox=\"0 0 20 20\" fill=\"currentColor\">\n <path d=\"M10 1.5 12.6 7l6 .55-4.55 4.05L15.4 18 10 14.85 4.6 18l1.35-6.4L1.4 7.55 7.4 7Z\"/>\n</svg>`;\n\n/**\n * @element arvea-rating\n *\n * @prop {number} value - current value (0..max)\n * @prop {number} max - max stars (default 5)\n * @prop {ArveaRatingSize} size - 'sm' | 'md' | 'lg'\n * @prop {boolean} readonly - display-only mode\n * @prop {boolean} allowHalf - allow half-star values in display\n * @prop {string} label - text shown next to the stars (e.g. \"4.2/5\")\n *\n * @fires arvea-rating-change - { detail: { value } }\n */\n@customElement('arvea-rating')\nexport class ArveaRating extends LitElement {\n static styles = arveaRatingStyles;\n\n @property({ type: Number }) value = 0;\n @property({ type: Number }) max = 5;\n @property({ type: String, reflect: true }) size: ArveaRatingSize = 'md';\n @property({ type: Boolean, reflect: true }) readonly = false;\n @property({ type: Boolean, attribute: 'allow-half' }) allowHalf = false;\n @property({ type: String }) label = '';\n @property({ type: String }) score = '';\n\n private _set(value: number) {\n if (this.readonly) return;\n this.value = value;\n this.dispatchEvent(new Event('input', { bubbles: true, composed: true }));\n this.dispatchEvent(new Event('change', { bubbles: true, composed: true }));\n }\n\n private _onKey(e: KeyboardEvent) {\n if (this.readonly) return;\n if (e.key === 'ArrowRight' || e.key === 'ArrowUp') {\n e.preventDefault();\n this._set(Math.min(this.max, this.value + 1));\n } else if (e.key === 'ArrowLeft' || e.key === 'ArrowDown') {\n e.preventDefault();\n this._set(Math.max(0, this.value - 1));\n }\n }\n\n render() {\n const stars = [];\n for (let i = 1; i <= this.max; i++) {\n const filled = this.value >= i;\n const half = this.allowHalf && !filled && this.value >= i - 0.5;\n stars.push(html`\n <button\n part=\"star\"\n class=\"star ${filled ? 'filled' : half ? 'half' : ''}\"\n type=\"button\"\n role=\"radio\"\n aria-checked=${this.value === i ? 'true' : 'false'}\n aria-label=\"${i} of ${this.max}\"\n tabindex=${this.value === i || (this.value === 0 && i === 1)\n ? '0'\n : '-1'}\n ?disabled=${this.readonly}\n @click=${() => this._set(i)}\n @keydown=${this._onKey}\n >\n ${STAR}\n ${half\n ? html`<span class=\"half-mask\" aria-hidden=\"true\">${STAR}</span>`\n : nothing}\n </button>\n `);\n }\n return html`\n <div part=\"stars\" class=\"stars\" role=\"radiogroup\" aria-label=\"Rating\">${stars}</div>\n ${this.score ? html`<span part=\"score\" class=\"score\">${this.score}</span>` : nothing}\n ${this.label ? html`<span part=\"label\" class=\"label\">${this.label}</span>` : nothing}\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'arvea-rating': ArveaRating;\n }\n}\n","import { css } from 'lit';\nimport { tokenStyles } from '../../tokens/tokens.styles';\n\nexport const arveaQuantitySelectorStyles = [\n tokenStyles,\n css`\n :host {\n display: inline-flex;\n font-family: inherit;\n }\n\n .group {\n display: inline-flex;\n align-items: stretch;\n border: 1px solid var(--qty-border);\n border-radius: var(--qty-radius);\n overflow: hidden;\n background: var(--qty-bg);\n }\n\n button {\n width: var(--qty-button-size-md);\n height: var(--qty-button-size-md);\n border: 0;\n background: var(--qty-button-bg);\n color: var(--qty-button-color);\n font: inherit;\n font-size: 18px;\n cursor: pointer;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n transition: background 0.15s;\n }\n\n button:hover:not(:disabled) {\n background: var(--qty-button-bg-hover);\n }\n\n button:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n button:focus-visible {\n outline: none;\n box-shadow: var(--qty-shadow-focus);\n z-index: 1;\n }\n\n input {\n width: var(--qty-input-width-md);\n text-align: center;\n border: 0;\n border-left: 1px solid var(--qty-border);\n border-right: 1px solid var(--qty-border);\n background: transparent;\n font: inherit;\n font-size: 14px;\n color: var(--qty-input-color);\n -moz-appearance: textfield;\n }\n\n input::-webkit-outer-spin-button,\n input::-webkit-inner-spin-button {\n -webkit-appearance: none;\n margin: 0;\n }\n\n input:focus-visible {\n outline: none;\n }\n\n :host([size='sm']) button {\n width: var(--qty-button-size-sm);\n height: var(--qty-button-size-sm);\n font-size: 16px;\n }\n :host([size='sm']) input {\n width: var(--qty-input-width-sm);\n }\n :host([size='lg']) button {\n width: var(--qty-button-size-lg);\n height: var(--qty-button-size-lg);\n font-size: 20px;\n }\n :host([size='lg']) input {\n width: var(--qty-input-width-lg);\n }\n\n :host([disabled]) .group {\n opacity: 0.55;\n pointer-events: none;\n }\n `,\n];\n","import { LitElement, html } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { arveaQuantitySelectorStyles } from './arvea-quantity-selector.styles';\nimport type { ArveaQuantitySize } from './arvea-quantity-selector.types';\n\n/**\n * @element arvea-quantity-selector\n *\n * @prop {number} value - current value\n * @prop {number} min - default 1\n * @prop {number} max - default Infinity\n * @prop {number} step - default 1\n * @prop {ArveaQuantitySize} size - 'sm' | 'md' | 'lg'\n * @prop {boolean} disabled\n *\n * @fires arvea-quantity-change - { detail: { value } }\n */\n@customElement('arvea-quantity-selector')\nexport class ArveaQuantitySelector extends LitElement {\n static styles = arveaQuantitySelectorStyles;\n\n @property({ type: Number }) value = 1;\n @property({ type: Number }) min = 1;\n @property({ type: Number }) max = Number.POSITIVE_INFINITY;\n @property({ type: Number }) step = 1;\n @property({ type: String, reflect: true }) size: ArveaQuantitySize = 'md';\n @property({ type: Boolean, reflect: true }) disabled = false;\n\n private _set(next: number) {\n const clamped = Math.max(this.min, Math.min(this.max, next));\n if (clamped === this.value) return;\n this.value = clamped;\n this.dispatchEvent(new Event('input', { bubbles: true, composed: true }));\n this.dispatchEvent(new Event('change', { bubbles: true, composed: true }));\n }\n\n private _onInput(e: Event) {\n const raw = (e.target as HTMLInputElement).value;\n const num = Number(raw);\n if (Number.isFinite(num)) this._set(num);\n }\n\n render() {\n const atMin = this.value <= this.min;\n const atMax = this.value >= this.max;\n return html`\n <div part=\"base\" class=\"group\">\n <button\n part=\"decrease\"\n type=\"button\"\n aria-label=\"Decrease\"\n ?disabled=${this.disabled || atMin}\n @click=${() => this._set(this.value - this.step)}\n >\n −\n </button>\n <input\n part=\"input\"\n type=\"number\"\n .value=${String(this.value)}\n min=${this.min}\n max=${this.max === Number.POSITIVE_INFINITY ? '' : this.max}\n step=${this.step}\n aria-label=\"Quantity\"\n ?disabled=${this.disabled}\n @input=${this._onInput}\n />\n <button\n part=\"increase\"\n type=\"button\"\n aria-label=\"Increase\"\n ?disabled=${this.disabled || atMax}\n @click=${() => this._set(this.value + this.step)}\n >\n +\n </button>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'arvea-quantity-selector': ArveaQuantitySelector;\n }\n}\n","import { css } from 'lit';\nimport { tokenStyles } from '../../tokens/tokens.styles';\n\nexport const arveaStepperStyles = [\n tokenStyles,\n css`\n :host {\n display: block;\n font-family: inherit;\n }\n\n ol {\n list-style: none;\n margin: 0;\n padding: 0;\n display: flex;\n align-items: flex-start;\n gap: 0;\n }\n\n :host([orientation='vertical']) ol {\n flex-direction: column;\n gap: 16px;\n }\n\n .step {\n flex: 1;\n display: flex;\n flex-direction: column;\n align-items: center;\n position: relative;\n cursor: default;\n background: transparent;\n border: 0;\n padding: 0;\n font: inherit;\n color: var(--stepper-label-color);\n }\n\n :host([clickable]) .step:not([data-state='upcoming']) {\n cursor: pointer;\n }\n\n :host([orientation='vertical']) .step {\n flex-direction: row;\n align-items: flex-start;\n width: 100%;\n gap: 12px;\n text-align: left;\n }\n\n .circle {\n width: var(--stepper-circle-size);\n height: var(--stepper-circle-size);\n border-radius: 9999px;\n background: var(--stepper-circle-bg);\n border: 2px solid var(--stepper-circle-border);\n color: var(--stepper-circle-color);\n display: inline-flex;\n align-items: center;\n justify-content: center;\n font-weight: 600;\n font-size: 13px;\n flex-shrink: 0;\n transition:\n background 0.18s,\n border-color 0.18s,\n color 0.18s;\n }\n\n .step[data-state='active'] .circle {\n background: var(--stepper-circle-bg-active);\n border-color: var(--stepper-circle-border-active);\n color: var(--stepper-circle-color-active);\n box-shadow: var(--stepper-shadow-active);\n }\n\n .step[data-state='complete'] .circle {\n background: var(--stepper-circle-bg-complete);\n border-color: var(--stepper-circle-border-complete);\n color: var(--stepper-circle-color-complete);\n }\n\n .check {\n width: 16px;\n height: 16px;\n }\n\n .meta {\n margin-top: 8px;\n text-align: center;\n }\n\n :host([orientation='vertical']) .meta {\n margin-top: 0;\n text-align: left;\n }\n\n .label {\n display: block;\n font-weight: 500;\n font-size: 14px;\n color: var(--stepper-label-color);\n }\n\n .step[data-state='active'] .label,\n .step[data-state='complete'] .label {\n color: var(--stepper-label-color-active);\n }\n\n .description {\n display: block;\n margin-top: 2px;\n font-size: 12px;\n color: var(--stepper-description-color);\n }\n\n .connector {\n flex: 1;\n height: 2px;\n background: var(--stepper-connector-bg);\n margin: calc(var(--stepper-circle-size) / 2) 4px 0;\n align-self: flex-start;\n }\n\n .connector.complete {\n background: var(--stepper-connector-bg-complete);\n }\n\n :host([orientation='vertical']) .connector {\n width: 2px;\n height: auto;\n min-height: 24px;\n margin: 4px 0 4px calc(var(--stepper-circle-size) / 2 - 1px);\n align-self: stretch;\n }\n `,\n];\n","import { LitElement, html, nothing } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { arveaStepperStyles } from './arvea-stepper.styles';\nimport type {\n ArveaStepperOrientation,\n ArveaStepperStep,\n} from './arvea-stepper.types';\n\ntype State = 'complete' | 'active' | 'upcoming';\n\n/**\n * @element arvea-stepper\n *\n * @prop {ArveaStepperStep[]} steps - Step definitions\n * @prop {number} active - 0-based index of the active step\n * @prop {ArveaStepperOrientation} orientation - 'horizontal' (default) | 'vertical'\n * @prop {boolean} clickable - allow clicking complete/active steps to navigate\n *\n * @fires arvea-stepper-change - { detail: { active, step } }\n */\n@customElement('arvea-stepper')\nexport class ArveaStepper extends LitElement {\n static styles = arveaStepperStyles;\n\n @property({ type: Array }) steps: ArveaStepperStep[] = [];\n @property({ type: Number }) active = 0;\n @property({ type: String, reflect: true })\n orientation: ArveaStepperOrientation = 'horizontal';\n @property({ type: Boolean, reflect: true }) clickable = false;\n\n private _stateOf(i: number): State {\n if (i < this.active) return 'complete';\n if (i === this.active) return 'active';\n return 'upcoming';\n }\n\n private _onStepClick(i: number) {\n if (!this.clickable) return;\n if (i > this.active) return; // only allow back-navigation by default\n if (i === this.active) return;\n this.active = i;\n this.dispatchEvent(\n new CustomEvent('arvea-stepper-change', {\n detail: { active: i, step: this.steps[i] },\n bubbles: true,\n composed: true,\n }),\n );\n }\n\n private _renderCircle(i: number, state: State) {\n if (state === 'complete') {\n return html`<span part=\"circle\" class=\"circle\">\n <svg class=\"check\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\n <path d=\"m3.5 8.5 3 3 6-7\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n </span>`;\n }\n return html`<span part=\"circle\" class=\"circle\">${i + 1}</span>`;\n }\n\n render() {\n return html`\n <ol part=\"base\" aria-label=\"Progress\">\n ${this.steps.map((step, i) => {\n const state = this._stateOf(i);\n const isLast = i === this.steps.length - 1;\n const stepEl = html`<button\n part=\"step\"\n class=\"step\"\n type=\"button\"\n data-state=${state}\n aria-current=${state === 'active' ? 'step' : nothing}\n ?disabled=${!this.clickable || state === 'upcoming'}\n @click=${() => this._onStepClick(i)}\n >\n ${this._renderCircle(i, state)}\n <span part=\"meta\" class=\"meta\">\n <span part=\"label\" class=\"label\">${step.label}</span>\n ${step.description\n ? html`<span part=\"description\" class=\"description\">${step.description}</span>`\n : nothing}\n </span>\n </button>`;\n const connector = isLast\n ? nothing\n : html`<span\n part=\"connector\"\n class=\"connector ${state === 'complete' ? 'complete' : ''}\"\n aria-hidden=\"true\"\n ></span>`;\n return html`<li\n style=\"display:contents;\"\n >${stepEl}</li>${connector}`;\n })}\n </ol>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'arvea-stepper': ArveaStepper;\n }\n}\n","import { css } from 'lit';\nimport { tokenStyles } from '../../tokens/tokens.styles';\n\nexport const arveaEmptyStateStyles = [\n tokenStyles,\n css`\n :host {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n text-align: center;\n gap: 12px;\n padding: 32px 16px;\n color: var(--colors-slate-600, #475569);\n font-family: inherit;\n }\n\n .icon {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n color: var(--colors-slate-400, #94a3b8);\n }\n\n :host([size='sm']) .icon svg {\n width: 32px;\n height: 32px;\n }\n :host([size='md']) .icon svg,\n :host(:not([size])) .icon svg {\n width: 48px;\n height: 48px;\n }\n :host([size='lg']) .icon svg {\n width: 72px;\n height: 72px;\n }\n\n .title {\n font-weight: 600;\n color: var(--colors-slate-800, #1e293b);\n margin: 0;\n }\n\n :host([size='sm']) .title {\n font-size: 0.875rem;\n }\n :host([size='md']) .title,\n :host(:not([size])) .title {\n font-size: 1rem;\n }\n :host([size='lg']) .title {\n font-size: 1.25rem;\n }\n\n .description {\n max-width: 42ch;\n font-size: 0.875rem;\n line-height: 1.5;\n margin: 0;\n color: var(--colors-slate-500, #64748b);\n }\n\n .actions {\n margin-top: 4px;\n display: inline-flex;\n gap: 8px;\n justify-content: center;\n flex-wrap: wrap;\n }\n\n .actions:empty {\n display: none;\n }\n `,\n];\n","import { LitElement, html, nothing } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { unsafeSVG } from 'lit/directives/unsafe-svg.js';\nimport { arveaEmptyStateStyles } from './arvea-empty-state.styles';\nimport type { ArveaEmptyStateSize } from './arvea-empty-state.types';\n\nconst DEFAULT_ICON = `<svg viewBox=\"0 0 64 64\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <rect x=\"10\" y=\"14\" width=\"44\" height=\"36\" rx=\"4\" stroke=\"currentColor\" stroke-width=\"2\"/>\n <path d=\"M10 24h44\" stroke=\"currentColor\" stroke-width=\"2\"/>\n <circle cx=\"18\" cy=\"19\" r=\"1.5\" fill=\"currentColor\"/>\n <circle cx=\"24\" cy=\"19\" r=\"1.5\" fill=\"currentColor\"/>\n <path d=\"M22 36h20M22 42h12\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"/>\n</svg>`;\n\n/**\n * @element arvea-empty-state\n *\n * Placeholder block for empty lists, no-results, error pages, and the empty\n * state inside data tables.\n *\n * @prop {string} icon - SVG string. Falls back to a generic illustration.\n * @prop {string} title - Headline text\n * @prop {string} description - Helper sentence under the title\n * @prop {'sm'|'md'|'lg'} size\n *\n * @slot icon - Custom icon element (overrides the `icon` prop)\n * @slot - Default slot for replacing title/description with rich content\n * @slot actions - Buttons or links shown below the description\n */\n@customElement('arvea-empty-state')\nexport class ArveaEmptyState extends LitElement {\n static styles = arveaEmptyStateStyles;\n\n @property({ type: String }) icon?: string;\n @property({ type: String }) title = '';\n @property({ type: String }) description = '';\n @property({ type: String, reflect: true }) size: ArveaEmptyStateSize = 'md';\n\n render() {\n const svg = this.icon ?? DEFAULT_ICON;\n return html`\n <div part=\"icon\" class=\"icon\" aria-hidden=\"true\">\n <slot name=\"icon\">${unsafeSVG(svg)}</slot>\n </div>\n ${this.title\n ? html`<p part=\"title\" class=\"title\">${this.title}</p>`\n : nothing}\n ${this.description\n ? html`<p part=\"description\" class=\"description\">${this.description}</p>`\n : nothing}\n <slot></slot>\n <div part=\"actions\" class=\"actions\">\n <slot name=\"actions\"></slot>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'arvea-empty-state': ArveaEmptyState;\n }\n}\n","import { css } from 'lit';\nimport { tokenStyles } from '../../tokens/tokens.styles';\n\nexport const arveaDataTableStyles = [\n tokenStyles,\n css`\n :host {\n display: block;\n font-family: inherit;\n width: 100%;\n }\n\n .wrapper {\n width: 100%;\n overflow: hidden;\n background: var(--table-bg);\n border: 1px solid var(--table-border);\n border-radius: var(--table-radius);\n }\n\n table {\n width: 100%;\n border-collapse: collapse;\n font-size: 14px;\n }\n\n th,\n td {\n padding: var(--table-cell-padding-y) var(--table-cell-padding-x);\n text-align: left;\n vertical-align: middle;\n }\n\n :host([density='compact']) th,\n :host([density='compact']) td {\n padding: 6px 12px;\n }\n\n th {\n background: var(--table-header-bg);\n color: var(--table-header-color);\n font-weight: 600;\n font-size: 13px;\n border-bottom: 1px solid var(--table-border);\n white-space: nowrap;\n }\n\n tbody tr {\n border-bottom: 1px solid var(--table-row-border);\n }\n\n tbody tr:last-child {\n border-bottom: 0;\n }\n\n :host([hoverable]) tbody tr:hover {\n background: var(--table-row-bg-hover);\n }\n\n td {\n color: var(--table-cell-color);\n }\n\n .align-center {\n text-align: center;\n }\n\n .align-right {\n text-align: right;\n }\n\n .sort-btn {\n background: none;\n border: 0;\n padding: 0;\n margin: 0;\n font: inherit;\n color: inherit;\n cursor: pointer;\n display: inline-flex;\n align-items: center;\n gap: 4px;\n }\n\n .sort-btn svg {\n width: 12px;\n height: 12px;\n opacity: 0.5;\n }\n\n .sort-btn[data-direction='asc'] svg,\n .sort-btn[data-direction='desc'] svg {\n opacity: 1;\n color: var(--table-sort-active);\n }\n\n .empty,\n .loading {\n padding: 16px 16px;\n text-align: center;\n color: var(--table-empty-color);\n }\n\n .selection-col {\n width: 36px;\n text-align: center;\n }\n\n .cell-image {\n display: block;\n width: 36px;\n height: 36px;\n border-radius: 6px;\n object-fit: cover;\n }\n\n /* Real thumbnails are clickable (preview/enlarge); the empty placeholder is not. */\n img.cell-image {\n cursor: pointer;\n }\n\n .cell-image--empty {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n background: var(--colors-slate-100, #f1f5f9);\n color: var(--colors-slate-400, #94a3b8);\n }\n\n .action-btns {\n display: flex;\n align-items: center;\n gap: 6px;\n }\n\n .filters th {\n padding: 6px 10px;\n background: var(--table-filter-row-bg, var(--colors-slate-50, #f8fafc));\n text-transform: none;\n letter-spacing: normal;\n font-weight: 400;\n }\n\n tbody tr.selected {\n background: var(\n --table-row-selected-bg,\n var(--colors-primary-50, #eff6ff)\n );\n }\n\n :host([sticky-header]) thead th {\n position: sticky;\n top: 0;\n z-index: 1;\n }\n\n th {\n position: relative;\n }\n\n .resizer {\n position: absolute;\n right: 0;\n top: 0;\n bottom: 0;\n width: 5px;\n cursor: col-resize;\n user-select: none;\n background: transparent;\n transition: background 0.15s ease;\n }\n .resizer:hover,\n .resizer:active {\n background: var(--table-resizer-color, var(--colors-primary-500, #3b82f6));\n }\n\n .scroll-area {\n width: 100%;\n overflow-x: auto;\n }\n\n :host([sticky-header]) .scroll-area {\n overflow-y: auto;\n max-height: var(--table-max-height, 400px);\n }\n\n .footer {\n display: flex;\n justify-content: flex-end;\n padding: 8px 12px;\n border-top: 1px solid var(--table-border);\n }\n\n /* Toolbar */\n .toolbar {\n display: flex;\n align-items: center;\n justify-content: flex-end;\n gap: 8px;\n padding: 8px 12px;\n border-bottom: 1px solid var(--table-border);\n }\n\n .page-size-label {\n font-size: 13px;\n color: var(--colors-slate-600, #475569);\n }\n\n .page-size-select {\n appearance: auto;\n font-size: 13px;\n padding: 2px 4px;\n border: 1px solid var(--table-border, #e2e8f0);\n border-radius: 4px;\n background: #fff;\n color: var(--colors-slate-700, #334155);\n cursor: pointer;\n outline: none;\n }\n\n .page-size-select:focus {\n border-color: var(--colors-primary-400, #60a5fa);\n }\n\n /* Caption */\n .caption {\n padding: 12px 16px;\n border-bottom: 1px solid var(--table-border);\n font-weight: 600;\n color: var(--colors-slate-800, #1e293b);\n }\n\n /* Sizes */\n :host([size='sm']) th,\n :host([size='sm']) td {\n padding: 4px 8px;\n font-size: 12px;\n }\n :host([size='lg']) th,\n :host([size='lg']) td {\n padding: 14px 18px;\n font-size: 15px;\n }\n\n /* Striped */\n :host([striped]) tbody tr:nth-child(even):not(.selected):not(.expanded-row) {\n background: var(--colors-slate-50, #f8fafc);\n }\n\n /* Bordered */\n :host([bordered]) th,\n :host([bordered]) td {\n border-right: 1px solid var(--table-border);\n }\n :host([bordered]) th:last-child,\n :host([bordered]) td:last-child {\n border-right: 0;\n }\n\n\n /* No-wrap */\n :host([no-wrap]) td,\n :host([no-wrap]) th {\n white-space: nowrap;\n }\n\n /* Sort icon stack */\n .sort-stack {\n display: inline-flex;\n flex-direction: column;\n gap: 1px;\n color: var(--colors-slate-400, #94a3b8);\n margin-left: 2px;\n }\n .sort-stack .arr {\n width: 8px;\n height: 5px;\n display: block;\n }\n .sort-stack .arr.active {\n color: var(--table-sort-active, var(--colors-primary-600, #2563eb));\n }\n .sort-btn[data-direction='asc'] .sort-stack,\n .sort-btn[data-direction='desc'] .sort-stack {\n color: var(--colors-slate-400, #94a3b8);\n }\n\n /* Expandable */\n .expand-col {\n width: 32px;\n text-align: center;\n }\n .expand-btn {\n background: transparent;\n border: 0;\n padding: 4px;\n cursor: pointer;\n color: var(--colors-slate-500, #64748b);\n border-radius: 4px;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n transition: transform 0.15s ease;\n }\n .expand-btn:hover {\n background: var(--colors-slate-100, #f1f5f9);\n color: var(--colors-slate-900, #0f172a);\n }\n .expand-btn.open {\n transform: rotate(-180deg);\n }\n tr.expanded-row td {\n background: var(--colors-slate-50, #f8fafc);\n padding: 12px 16px;\n }\n\n /* Responsive: stack\n At narrow widths, each <td> becomes its own row with its column label\n rendered as a leading pseudo-element from data-label. */\n @media (max-width: 720px) {\n :host([responsive='stack']) thead {\n display: none;\n }\n\n :host([responsive='cards']) thead {\n display: none;\n }\n\n :host([responsive='cards']) table {\n display: block;\n width: 100%;\n min-width: 0;\n }\n\n :host([responsive='cards']) tbody {\n display: block;\n width: 100%;\n }\n\n :host([responsive='cards']) tbody tr {\n display: block;\n width: 100%;\n box-sizing: border-box;\n border: 1px solid var(--table-border);\n border-radius: 8px;\n padding: 4px 12px;\n margin: 8px 0;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);\n }\n\n :host([responsive='cards']) tbody td {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 8px 0;\n border: 0 !important;\n text-align: left !important;\n white-space: normal;\n overflow: visible;\n width: 100%;\n box-sizing: border-box;\n }\n\n :host([responsive='cards']) tbody td:not(:last-child) {\n border-bottom: 1px solid var(--table-row-border) !important;\n }\n\n :host([responsive='cards']) tbody td::before {\n content: attr(data-label);\n font-weight: 600;\n color: var(--colors-slate-500, #64748b);\n text-transform: uppercase;\n font-size: 0.7rem;\n letter-spacing: 0.04em;\n flex-shrink: 0;\n width: 90px;\n }\n\n /* Value area: fill remaining space */\n :host([responsive='cards']) tbody td > *:not(.action-btns) {\n flex: 1;\n min-width: 0;\n }\n\n :host([responsive='cards']) tbody td.selection-col::before,\n :host([responsive='cards']) tbody td.expand-col::before {\n content: '';\n width: 0;\n }\n\n /* Action buttons: 2×2 grid in cards mode */\n :host([responsive='cards']) .action-btns {\n display: flex !important;\n flex-wrap: wrap !important;\n gap: 6px;\n width: calc(2 * 44px + 6px);\n }\n\n :host([responsive='cards']) arvea-action-button {\n --action-btn-w-default: 44px;\n --action-btn-h-default: 40px;\n }\n\n /* Actions row: label on left, buttons on right */\n :host([responsive='cards']) tbody td[data-label='Action'] {\n justify-content: space-between;\n padding-top: 10px;\n padding-bottom: 10px;\n border-top: 1px solid var(--table-border) !important;\n }\n }\n `,\n];\n","import { LitElement, html, nothing, type TemplateResult } from 'lit';\nimport { customElement, property, query, state } from 'lit/decorators.js';\nimport '../arvea-action-button/arvea-action-button';\nimport '../arvea-badge/arvea-badge';\nimport '../arvea-checkbox/arvea-checkbox';\nimport '../arvea-radio/arvea-radio';\nimport '../arvea-icon/arvea-icon';\nimport '../arvea-input/arvea-input';\nimport '../arvea-select/arvea-select';\nimport '../arvea-pagination/arvea-pagination';\nimport '../arvea-empty-state/arvea-empty-state';\nimport { arveaDataTableStyles } from './arvea-data-table.styles';\nimport type {\n ArveaDataTableAction,\n ArveaDataTableBadge,\n ArveaDataTableColumn,\n ArveaDataTablePagination,\n ArveaDataTableResponsive,\n ArveaDataTableRowSelection,\n ArveaDataTableSize,\n ArveaDataTableSort,\n ArveaDataTableSortDirection,\n} from './arvea-data-table.types';\n\ntype Row = Record<string, unknown>;\nconst OVERSCAN = 5;\n\n/**\n * @element arvea-data-table\n *\n * @fires arvea-table-sort - { key, direction }\n * @fires arvea-table-row-click - { row, index }\n * @fires arvea-table-selection-change - { selectedKeys, selectedRows }\n * @fires arvea-table-filter-change - { filterValues }\n * @fires arvea-table-column-resize - { key, width }\n * @fires arvea-table-page-change - { page, pageSize }\n * @fires arvea-table-action - { id, row, index }\n */\n@customElement('arvea-data-table')\nexport class ArveaDataTable extends LitElement {\n static styles = arveaDataTableStyles;\n\n /*\n * `any` rather than the default `Record<string, unknown>` row: `render`/`badge`\n * take the row as a parameter, so `ArveaDataTableColumn<Order>` is NOT assignable\n * to `ArveaDataTableColumn<Record<string, unknown>>` (contravariance). Without\n * this widening every typed consumer — every React one especially, since the\n * binding surfaces this property directly — has to cast its own columns.\n * `ArveaDataTableProps<T>` stays precise; this is only the element's own slot.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n @property({ type: Array }) columns: ArveaDataTableColumn<any>[] = [];\n @property({ type: Array }) rows: Row[] = [];\n @property({ type: Boolean, reflect: true }) loading = false;\n @property({ type: String, attribute: 'empty-text' })\n emptyText = 'No data to display';\n @property({ type: String, attribute: 'row-key' }) rowKey = 'id';\n @property({ type: Object }) sort: ArveaDataTableSort | null = null;\n @property({ type: String, reflect: true })\n density: 'compact' | 'normal' = 'normal';\n\n @property({ type: String, attribute: 'row-selection' })\n rowSelection: ArveaDataTableRowSelection = 'none';\n @property({ type: Array, attribute: 'selected-keys' })\n selectedKeys: string[] = [];\n @property({ type: Object, attribute: 'filter-values' })\n filterValues: Record<string, unknown> = {};\n @property({ type: Boolean, attribute: 'resizable-columns' })\n resizableColumns = false;\n @property({ type: Boolean, reflect: true }) virtualized = false;\n @property({ type: Number, attribute: 'estimated-row-height' })\n estimatedRowHeight = 40;\n @property({ type: Object }) pagination: ArveaDataTablePagination | null = null;\n @property({ type: Array, attribute: 'page-size-options' })\n pageSizeOptions: number[] = [10, 25, 50, 100];\n @property({ type: Boolean, attribute: 'hide-toolbar' }) hideToolbar = false;\n @property({ type: Boolean, attribute: 'sticky-header', reflect: true })\n stickyHeader = false;\n @property({ type: Boolean, attribute: 'manual-sort' })\n manualSort = false;\n @property({ type: Boolean, attribute: 'manual-pagination' })\n manualPagination = false;\n @property({ type: String, reflect: true })\n size: ArveaDataTableSize = 'md';\n @property({ type: Boolean, reflect: true }) striped = false;\n @property({ type: Boolean, reflect: true }) bordered = false;\n @property({ type: Boolean, reflect: true }) hoverable = true;\n @property({ type: Boolean, reflect: true, attribute: 'no-wrap' })\n noWrap = false;\n @property({ type: String, reflect: true })\n responsive: ArveaDataTableResponsive = 'scroll';\n @property({ type: String, attribute: 'global-filter' })\n globalFilter = '';\n @property({ type: String }) caption = '';\n @property({ type: Boolean, reflect: true }) expandable = false;\n @property({ type: Array, attribute: 'expanded-keys' })\n expandedKeys: string[] = [];\n @property({ attribute: false })\n renderExpanded?: (row: Row, index: number) => unknown;\n\n @state() private _columnWidths: Record<string, number> = {};\n @state() private _scrollTop = 0;\n @state() private _viewportHeight = 0;\n\n @query('.scroll-area') private _scrollEl?: HTMLDivElement;\n\n private _resizeKey: string | null = null;\n private _resizeStartX = 0;\n private _resizeStartW = 0;\n\n // ------- derived ---------------------------------------------------------\n private get _activeFilters(): Array<{ key: string; value: unknown }> {\n return Object.entries(this.filterValues)\n .filter(([, v]) => v != null && v !== '')\n .map(([key, value]) => ({ key, value }));\n }\n\n private _matchesFilters(row: Row): boolean {\n if (this._activeFilters.length === 0) return true;\n for (const { key, value } of this._activeFilters) {\n const cell = row[key];\n if (cell == null) return false;\n const cellStr = String(cell).toLowerCase();\n if (Array.isArray(value)) {\n if (!value.includes(cell)) return false;\n } else {\n const v = String(value).toLowerCase();\n if (!cellStr.includes(v)) return false;\n }\n }\n return true;\n }\n\n private _matchesGlobalFilter(row: Row): boolean {\n const q = this.globalFilter.trim().toLowerCase();\n if (!q) return true;\n for (const col of this.columns) {\n const v = row[col.key];\n if (v != null && String(v).toLowerCase().includes(q)) return true;\n }\n return false;\n }\n\n private get _filteredRows(): Row[] {\n return this.rows.filter(\n (r) => this._matchesFilters(r) && this._matchesGlobalFilter(r),\n );\n }\n\n private _compare(a: unknown, b: unknown): number {\n if (a == null && b == null) return 0;\n if (a == null) return -1;\n if (b == null) return 1;\n if (typeof a === 'number' && typeof b === 'number') return a - b;\n if (a instanceof Date && b instanceof Date) return a.getTime() - b.getTime();\n const an = Number(a);\n const bn = Number(b);\n if (\n Number.isFinite(an) &&\n Number.isFinite(bn) &&\n String(a).trim() !== '' &&\n String(b).trim() !== ''\n ) {\n return an - bn;\n }\n return String(a).localeCompare(String(b), undefined, {\n numeric: true,\n sensitivity: 'base',\n });\n }\n\n private get _sortedRows(): Row[] {\n const rows = this._filteredRows;\n if (this.manualSort || !this.sort || !this.sort.direction) return rows;\n const { key, direction } = this.sort;\n const factor = direction === 'asc' ? 1 : -1;\n return rows.slice().sort((a, b) => factor * this._compare(a[key], b[key]));\n }\n\n private get _paginatedRows(): Row[] {\n const sorted = this._sortedRows;\n if (this.manualPagination || !this.pagination) return sorted;\n const { page, pageSize } = this.pagination;\n const start = (page - 1) * pageSize;\n return sorted.slice(start, start + pageSize);\n }\n\n private get _rowKeyValue() {\n return (row: Row) => String(row[this.rowKey] ?? '');\n }\n\n private get _selectedSet(): Set<string> {\n return new Set(this.selectedKeys);\n }\n\n private get _visibleKeys(): string[] {\n return this._paginatedRows.map((r) => this._rowKeyValue(r));\n }\n\n private get _headerSelectState(): 'none' | 'some' | 'all' {\n const visible = this._visibleKeys;\n if (visible.length === 0) return 'none';\n const sel = this._selectedSet;\n const inSelection = visible.filter((k) => sel.has(k)).length;\n if (inSelection === 0) return 'none';\n if (inSelection === visible.length) return 'all';\n return 'some';\n }\n\n private get _virtualizationActive(): boolean {\n return this.virtualized && this._paginatedRows.length >= 50;\n }\n\n // ------- lifecycle -------------------------------------------------------\n connectedCallback() {\n super.connectedCallback();\n this._viewportHeight = 320;\n }\n\n // ------- sort + click ---------------------------------------------------\n private _toggleSort(col: ArveaDataTableColumn) {\n if (!col.sortable) return;\n let direction: ArveaDataTableSortDirection = 'asc';\n if (this.sort?.key === col.key) {\n direction =\n this.sort.direction === 'asc'\n ? 'desc'\n : this.sort.direction === 'desc'\n ? null\n : 'asc';\n }\n this.sort = direction ? { key: col.key, direction } : null;\n this.dispatchEvent(\n new CustomEvent('arvea-table-sort', {\n detail: { key: col.key, direction },\n bubbles: true,\n composed: true,\n }),\n );\n }\n\n private _onRowClick(row: Row, index: number) {\n this.dispatchEvent(\n new CustomEvent('arvea-table-row-click', {\n detail: { row, index },\n bubbles: true,\n composed: true,\n }),\n );\n }\n\n private _onAction(action: ArveaDataTableAction, row: Row, index: number) {\n this.dispatchEvent(\n new CustomEvent('arvea-table-action', {\n detail: { id: action.id, row, index },\n bubbles: true,\n composed: true,\n }),\n );\n }\n\n // ------- selection -------------------------------------------------------\n private _toggleRow(row: Row) {\n if (this.rowSelection === 'none') return;\n const key = this._rowKeyValue(row);\n let next: string[];\n if (this.rowSelection === 'single') {\n next = this._selectedSet.has(key) ? [] : [key];\n } else {\n const set = new Set(this.selectedKeys);\n if (set.has(key)) set.delete(key);\n else set.add(key);\n next = [...set];\n }\n this.selectedKeys = next;\n this.dispatchEvent(\n new CustomEvent('arvea-table-selection-change', {\n detail: {\n selectedKeys: next,\n selectedRows: this.rows.filter((r) =>\n next.includes(this._rowKeyValue(r)),\n ),\n },\n bubbles: true,\n composed: true,\n }),\n );\n }\n\n private _toggleAllVisible() {\n if (this.rowSelection !== 'multiple') return;\n const visible = this._visibleKeys;\n const set = new Set(this.selectedKeys);\n if (this._headerSelectState === 'all') {\n visible.forEach((k) => set.delete(k));\n } else {\n visible.forEach((k) => set.add(k));\n }\n this.selectedKeys = [...set];\n this.dispatchEvent(\n new CustomEvent('arvea-table-selection-change', {\n detail: {\n selectedKeys: this.selectedKeys,\n selectedRows: this.rows.filter((r) =>\n this.selectedKeys.includes(this._rowKeyValue(r)),\n ),\n },\n bubbles: true,\n composed: true,\n }),\n );\n }\n\n // ------- filters ---------------------------------------------------------\n private _onFilterChange(key: string, value: unknown) {\n const next = { ...this.filterValues, [key]: value };\n if (value == null || value === '') delete next[key];\n this.filterValues = next;\n this.dispatchEvent(\n new CustomEvent('arvea-table-filter-change', {\n detail: { filterValues: next },\n bubbles: true,\n composed: true,\n }),\n );\n }\n\n // ------- pagination ------------------------------------------------------\n private _onPageChange = (e: CustomEvent) => {\n if (!this.pagination) return;\n const next: ArveaDataTablePagination = {\n ...this.pagination,\n page: e.detail.page,\n };\n this.pagination = next;\n this.dispatchEvent(\n new CustomEvent('arvea-table-page-change', {\n detail: next,\n bubbles: true,\n composed: true,\n }),\n );\n };\n\n private _onPageSizeChange = (e: CustomEvent) => {\n if (!this.pagination) return;\n const next: ArveaDataTablePagination = {\n ...this.pagination,\n pageSize: e.detail.pageSize,\n page: 1,\n };\n this.pagination = next;\n this.dispatchEvent(\n new CustomEvent('arvea-table-page-change', {\n detail: next,\n bubbles: true,\n composed: true,\n }),\n );\n };\n\n private _onPageSizeSelectChange = (e: Event) => {\n if (!this.pagination) return;\n const size = Number((e.target as HTMLSelectElement).value);\n const next: ArveaDataTablePagination = { ...this.pagination, pageSize: size, page: 1 };\n this.pagination = next;\n this.dispatchEvent(\n new CustomEvent('arvea-table-page-change', {\n detail: next,\n bubbles: true,\n composed: true,\n }),\n );\n };\n\n // ------- column resize ---------------------------------------------------\n private _onResizeStart = (e: PointerEvent, col: ArveaDataTableColumn) => {\n if (!(this.resizableColumns || col.resizable)) return;\n e.preventDefault();\n e.stopPropagation();\n const target = e.target as HTMLElement;\n target.setPointerCapture(e.pointerId);\n this._resizeKey = col.key;\n this._resizeStartX = e.clientX;\n this._resizeStartW =\n this._columnWidths[col.key] ??\n (target.closest('th') as HTMLElement | null)?.getBoundingClientRect()\n .width ??\n 120;\n target.addEventListener('pointermove', this._onResizeMove);\n target.addEventListener('pointerup', this._onResizeEnd);\n };\n\n private _onResizeMove = (e: PointerEvent) => {\n if (!this._resizeKey) return;\n const col = this.columns.find((c) => c.key === this._resizeKey);\n const min = col?.minWidth ?? 60;\n const next = Math.max(min, this._resizeStartW + (e.clientX - this._resizeStartX));\n this._columnWidths = { ...this._columnWidths, [this._resizeKey]: next };\n };\n\n private _onResizeEnd = (e: PointerEvent) => {\n if (!this._resizeKey) return;\n const target = e.target as HTMLElement;\n target.releasePointerCapture?.(e.pointerId);\n target.removeEventListener('pointermove', this._onResizeMove);\n target.removeEventListener('pointerup', this._onResizeEnd);\n this.dispatchEvent(\n new CustomEvent('arvea-table-column-resize', {\n detail: {\n key: this._resizeKey,\n width: this._columnWidths[this._resizeKey],\n },\n bubbles: true,\n composed: true,\n }),\n );\n this._resizeKey = null;\n };\n\n // ------- helpers ---------------------------------------------------------\n private _alignClass(align?: string) {\n if (align === 'center') return 'align-center';\n if (align === 'right') return 'align-right';\n return '';\n }\n\n private _colClass(col: ArveaDataTableColumn): string {\n const classes: string[] = [];\n if (col.hideMobile) classes.push('hide-mobile');\n if (col.hideTablet) classes.push('hide-tablet');\n const align = this._alignClass(col.align);\n if (align) classes.push(align);\n return classes.join(' ');\n }\n\n private _renderCell(col: ArveaDataTableColumn, row: Row, index: number) {\n if (col.image) return this._renderImageCell(row[col.key] as string | null | undefined);\n if (col.badge) return this._renderBadgeCell(col.badge(row, index));\n if (col.actions) return this._renderActionsCell(col.actions(row, index), row, index);\n if (col.render) return col.render(row, index);\n const v = row[col.key];\n return v == null ? '' : String(v);\n }\n\n private _renderBadgeCell(badge: ArveaDataTableBadge | null): TemplateResult | typeof nothing {\n if (!badge) return nothing;\n return html`<arvea-badge\n variant=${badge.variant ?? nothing}\n label=${badge.label ?? nothing}\n color=${badge.color ?? nothing}\n text-color=${badge.textColor ?? nothing}\n icon=${badge.icon ?? nothing}\n ?no-bg=${badge.noBg ?? false}\n ?hide-icon=${badge.hideIcon ?? false}\n ></arvea-badge>`;\n }\n\n private _renderImageCell(src?: string | null): TemplateResult {\n return src\n ? html`<img class=\"cell-image\" src=${src} alt=\"\" loading=\"lazy\" />`\n : html`<span class=\"cell-image cell-image--empty\" aria-hidden=\"true\">\n <arvea-icon name=\"file\" size=\"sm\" outline></arvea-icon>\n </span>`;\n }\n\n private _renderActionsCell(\n actions: ArveaDataTableAction[],\n row: Row,\n index: number,\n ): TemplateResult | typeof nothing {\n if (!actions.length) return nothing;\n return html`<div class=\"action-btns\" @click=${(e: Event) => e.stopPropagation()}>\n ${actions.map(\n (action) => html`<arvea-action-button\n variant=${action.variant ?? nothing}\n icon=${action.icon ?? nothing}\n bg-color=${action.bgColor ?? nothing}\n color=${action.color ?? nothing}\n label=${action.label ?? nothing}\n ?disabled=${action.disabled}\n @arvea-action-click=${() => this._onAction(action, row, index)}\n ></arvea-action-button>`,\n )}\n </div>`;\n }\n\n private _sortIcon(direction: ArveaDataTableSortDirection) {\n const upClass = direction === 'asc' ? 'arr active' : 'arr';\n const downClass = direction === 'desc' ? 'arr active' : 'arr';\n return html`<span class=\"sort-stack\" aria-hidden=\"true\">\n <svg\n class=${upClass}\n viewBox=\"0 0 8 5\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M1 4l3-3 3 3\"\n stroke=\"currentColor\"\n stroke-width=\"1.2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n <svg\n class=${downClass}\n viewBox=\"0 0 8 5\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M1 1l3 3 3-3\"\n stroke=\"currentColor\"\n stroke-width=\"1.2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </span>`;\n }\n\n private _onScroll = (e: Event) => {\n this._scrollTop = (e.currentTarget as HTMLDivElement).scrollTop;\n };\n\n private _columnStyle(col: ArveaDataTableColumn): string {\n const w = this._columnWidths[col.key];\n if (w != null) return `width:${w}px;min-width:${w}px;`;\n if (col.width) return `width:${col.width};`;\n return '';\n }\n\n // ------- render ----------------------------------------------------------\n render() {\n const hasFilters = this.columns.some((c) => !!c.filter);\n const rows = this._paginatedRows;\n const selectionColumn = this.rowSelection !== 'none';\n const totalCols =\n this.columns.length +\n (selectionColumn ? 1 : 0) +\n (this.expandable ? 1 : 0);\n\n return html`\n <div part=\"base\" class=\"wrapper\">\n ${this.caption\n ? html`<div part=\"caption\" class=\"caption\">${this.caption}</div>`\n : nothing}\n ${this.pagination && !this.hideToolbar\n ? html`<div part=\"toolbar\" class=\"toolbar\">\n <span class=\"page-size-label\">Display</span>\n <select class=\"page-size-select\" @change=${this._onPageSizeSelectChange}>\n ${this.pageSizeOptions.map(\n (n) => html`<option value=${n} ?selected=${n === this.pagination!.pageSize}>${n}</option>`,\n )}\n </select>\n <span class=\"page-size-label\">items</span>\n </div>`\n : nothing}\n <div\n part=\"scroll-area\"\n class=\"scroll-area\"\n style=${this._virtualizationActive\n ? `max-height:${this._viewportHeight}px;overflow:auto;`\n : ''}\n @scroll=${this._virtualizationActive ? this._onScroll : null}\n >\n <table part=\"table\">\n <thead part=\"head\">\n <tr>\n ${this.expandable\n ? html`<th class=\"expand-col\"></th>`\n : nothing}\n ${selectionColumn\n ? html`<th class=\"selection-col\">\n ${this.rowSelection === 'multiple'\n ? html`<arvea-checkbox\n ?checked=${this._headerSelectState === 'all'}\n ?indeterminate=${this._headerSelectState === 'some'}\n @change=${() => this._toggleAllVisible()}\n ></arvea-checkbox>`\n : nothing}\n </th>`\n : nothing}\n ${this.columns.map((col) => this._renderHeaderCell(col))}\n </tr>\n ${hasFilters\n ? html`<tr class=\"filters\">\n ${this.expandable ? html`<th></th>` : nothing}\n ${selectionColumn ? html`<th></th>` : nothing}\n ${this.columns.map((col) =>\n this._renderFilterCell(col),\n )}\n </tr>`\n : nothing}\n </thead>\n ${this._renderBody(rows, totalCols)}\n </table>\n </div>\n ${this.pagination\n ? html`<div part=\"footer\" class=\"footer\">\n <arvea-pagination\n .page=${this.pagination.page}\n .total=${Math.max(\n 1,\n Math.ceil(\n (this.pagination.total ?? this._filteredRows.length) /\n this.pagination.pageSize,\n ),\n )}\n .pageSize=${this.pagination.pageSize}\n show-jump-to\n @arvea-page-change=${this._onPageChange}\n @arvea-page-size-change=${this._onPageSizeChange}\n ></arvea-pagination>\n </div>`\n : nothing}\n </div>\n `;\n }\n\n private _renderHeaderCell(col: ArveaDataTableColumn) {\n const dir = this.sort?.key === col.key ? this.sort.direction : null;\n const resizable = !!(col.resizable ?? this.resizableColumns);\n return html`<th\n style=${this._columnStyle(col)}\n class=${this._colClass(col)}\n scope=\"col\"\n aria-sort=${dir === 'asc'\n ? 'ascending'\n : dir === 'desc'\n ? 'descending'\n : nothing}\n >\n ${col.sortable\n ? html`<button\n class=\"sort-btn\"\n data-direction=${dir || ''}\n @click=${() => this._toggleSort(col)}\n >\n <span>${col.label}</span>\n ${this._sortIcon(dir)}\n </button>`\n : html`<span>${col.label}</span>`}\n ${resizable\n ? html`<span\n class=\"resizer\"\n @pointerdown=${(e: PointerEvent) => this._onResizeStart(e, col)}\n ></span>`\n : nothing}\n </th>`;\n }\n\n private _renderFilterCell(col: ArveaDataTableColumn) {\n if (!col.filter) return html`<th></th>`;\n const value = this.filterValues[col.key] ?? '';\n if (col.filter.type === 'select' && col.filter.options) {\n return html`<th>\n <arvea-select\n searchable\n clearable\n .options=${col.filter.options}\n .value=${value as string}\n placeholder=${col.filter.placeholder ?? 'Filter'}\n @change=${(e: Event) =>\n this._onFilterChange(col.key, (e.target as HTMLInputElement).value)}\n ></arvea-select>\n </th>`;\n }\n return html`<th>\n <arvea-input\n type=${col.filter.type === 'date' ? 'date' : 'text'}\n .value=${value as string}\n placeholder=${col.filter.placeholder ?? 'Filter'}\n @input=${(e: Event) =>\n this._onFilterChange(col.key, (e.target as HTMLInputElement).value)}\n ></arvea-input>\n </th>`;\n }\n\n private _renderBody(rows: Row[], totalCols: number): TemplateResult {\n if (this.loading) {\n return html`<tbody>\n <tr>\n <td class=\"loading\" colspan=${totalCols}>Loading…</td>\n </tr>\n </tbody>`;\n }\n if (rows.length === 0) {\n return html`<tbody>\n <tr>\n <td class=\"empty\" colspan=${totalCols}>\n <arvea-empty-state\n size=\"sm\"\n title=${this.emptyText}\n ></arvea-empty-state>\n </td>\n </tr>\n </tbody>`;\n }\n if (this._virtualizationActive) {\n return this._renderVirtualizedBody(rows, totalCols);\n }\n return html`<tbody>\n ${rows.map((row, i) => this._renderRow(row, i))}\n </tbody>`;\n }\n\n private _renderVirtualizedBody(rows: Row[], totalCols: number): TemplateResult {\n const h = this.estimatedRowHeight;\n const start = Math.max(0, Math.floor(this._scrollTop / h) - OVERSCAN);\n const visibleCount = Math.ceil(this._viewportHeight / h) + OVERSCAN * 2;\n const end = Math.min(rows.length, start + visibleCount);\n const topSpacer = start * h;\n const bottomSpacer = (rows.length - end) * h;\n return html`<tbody>\n ${topSpacer > 0\n ? html`<tr style=${`height:${topSpacer}px`}>\n <td colspan=${totalCols}></td>\n </tr>`\n : nothing}\n ${rows.slice(start, end).map((row, i) => this._renderRow(row, start + i))}\n ${bottomSpacer > 0\n ? html`<tr style=${`height:${bottomSpacer}px`}>\n <td colspan=${totalCols}></td>\n </tr>`\n : nothing}\n </tbody>`;\n }\n\n private _toggleExpand(key: string) {\n const set = new Set(this.expandedKeys);\n if (set.has(key)) set.delete(key);\n else set.add(key);\n this.expandedKeys = [...set];\n this.dispatchEvent(\n new CustomEvent('arvea-table-expand', {\n detail: { expandedKeys: this.expandedKeys, key },\n bubbles: true,\n composed: true,\n }),\n );\n }\n\n private _renderRow(row: Row, i: number): TemplateResult {\n const key = this._rowKeyValue(row);\n const selected = this._selectedSet.has(key);\n const expanded = this.expandable && this.expandedKeys.includes(key);\n const totalCols =\n this.columns.length +\n (this.rowSelection !== 'none' ? 1 : 0) +\n (this.expandable ? 1 : 0);\n return html`<tr\n class=${selected ? 'selected' : ''}\n @click=${() => this._onRowClick(row, i)}\n >\n ${this.expandable\n ? html`<td class=\"expand-col\" @click=${(e: Event) => e.stopPropagation()}>\n <button\n type=\"button\"\n class=${expanded ? 'expand-btn open' : 'expand-btn'}\n aria-label=${expanded ? 'Collapse row' : 'Expand row'}\n @click=${() => this._toggleExpand(key)}\n >\n <svg viewBox=\"0 0 12 12\" width=\"10\" height=\"10\" fill=\"none\">\n <path\n d=\"M3 5l3 3 3-3\"\n stroke=\"currentColor\"\n stroke-width=\"1.4\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </button>\n </td>`\n : nothing}\n ${this.rowSelection === 'multiple'\n ? html`<td class=\"selection-col\" @click=${(e: Event) => e.stopPropagation()}>\n <arvea-checkbox\n ?checked=${selected}\n @change=${() => this._toggleRow(row)}\n ></arvea-checkbox>\n </td>`\n : this.rowSelection === 'single'\n ? html`<td class=\"selection-col\" @click=${(e: Event) =>\n e.stopPropagation()}>\n <arvea-radio\n ?checked=${selected}\n name=\"data-table-${this.rowKey}\"\n @change=${() => this._toggleRow(row)}\n ></arvea-radio>\n </td>`\n : nothing}\n ${this.columns.map(\n (col) => html`<td\n style=${this._columnStyle(col)}\n class=${this._colClass(col)}\n data-label=${col.label}\n >\n ${this._renderCell(col, row, i)}\n </td>`,\n )}\n </tr>\n ${expanded && this.renderExpanded\n ? html`<tr class=\"expanded-row\">\n <td colspan=${totalCols}>${this.renderExpanded(row, i)}</td>\n </tr>`\n : nothing}`;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'arvea-data-table': ArveaDataTable;\n }\n}\n","import { css } from 'lit';\nimport { tokenStyles } from '../../tokens/tokens.styles';\n\nexport const arveaLightboxStyles = [\n tokenStyles,\n css`\n :host {\n display: contents;\n font-family: inherit;\n }\n\n .overlay {\n position: fixed;\n inset: 0;\n background: var(--lightbox-overlay-bg);\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n z-index: 9000;\n padding: 24px;\n box-sizing: border-box;\n }\n\n :host(:not([open])) .overlay {\n display: none;\n }\n\n .stage {\n flex: 1;\n width: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n position: relative;\n }\n\n .stage img {\n max-width: 100%;\n max-height: 80vh;\n border-radius: var(--lightbox-radius);\n box-shadow: var(--lightbox-shadow);\n object-fit: contain;\n background: #000;\n }\n\n .arrow {\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n width: 44px;\n height: 44px;\n border-radius: 9999px;\n border: 0;\n background: var(--lightbox-button-bg);\n color: var(--lightbox-button-color);\n cursor: pointer;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n backdrop-filter: blur(8px);\n }\n\n .arrow.prev {\n left: 16px;\n }\n\n .arrow.next {\n right: 16px;\n }\n\n .arrow:disabled {\n opacity: 0.35;\n cursor: not-allowed;\n }\n\n .arrow svg {\n width: 22px;\n height: 22px;\n }\n\n .close {\n position: absolute;\n top: 12px;\n right: 12px;\n width: 36px;\n height: 36px;\n border-radius: 9999px;\n border: 0;\n background: var(--lightbox-button-bg);\n color: var(--lightbox-button-color);\n cursor: pointer;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n }\n\n .close svg {\n width: 18px;\n height: 18px;\n }\n\n .counter {\n position: absolute;\n top: 18px;\n left: 50%;\n transform: translateX(-50%);\n color: var(--lightbox-text-color);\n font-size: 13px;\n background: var(--lightbox-button-bg);\n padding: 4px 10px;\n border-radius: 9999px;\n }\n\n .caption {\n color: var(--lightbox-text-color);\n font-size: 14px;\n margin-top: 12px;\n text-align: center;\n max-width: 800px;\n }\n\n .thumbs {\n margin-top: 16px;\n display: flex;\n gap: 8px;\n flex-wrap: wrap;\n justify-content: center;\n }\n\n .thumb {\n width: 56px;\n height: 56px;\n border-radius: 6px;\n overflow: hidden;\n border: 2px solid transparent;\n padding: 0;\n cursor: pointer;\n background: #000;\n }\n\n .thumb img {\n width: 100%;\n height: 100%;\n object-fit: cover;\n display: block;\n }\n\n .thumb[aria-current='true'] {\n border-color: var(--lightbox-thumb-border-active);\n }\n `,\n];\n","import { LitElement, html, nothing } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { arveaLightboxStyles } from './arvea-lightbox.styles';\nimport type { ArveaLightboxItem } from './arvea-lightbox.types';\n\n/**\n * @element arvea-lightbox\n *\n * @prop {ArveaLightboxItem[]} items - Media items\n * @prop {number} index - currently displayed item (0-based)\n * @prop {boolean} open - controls visibility\n * @prop {boolean} showThumbnails - show thumbnail strip\n * @prop {boolean} showCounter - show \"1 / N\" counter\n *\n * @fires arvea-lightbox-change - { detail: { index, item } }\n * @fires arvea-lightbox-close\n */\n@customElement('arvea-lightbox')\nexport class ArveaLightbox extends LitElement {\n static styles = arveaLightboxStyles;\n\n @property({ type: Array }) items: ArveaLightboxItem[] = [];\n @property({ type: Number }) index = 0;\n @property({ type: Boolean, reflect: true }) open = false;\n @property({ type: Boolean, attribute: 'show-thumbnails' })\n showThumbnails = true;\n @property({ type: Boolean, attribute: 'show-counter' }) showCounter = true;\n\n private _keyHandler = (e: KeyboardEvent) => {\n if (!this.open) return;\n if (e.key === 'Escape') this._close();\n else if (e.key === 'ArrowRight') this._go(this.index + 1);\n else if (e.key === 'ArrowLeft') this._go(this.index - 1);\n };\n\n connectedCallback() {\n super.connectedCallback();\n document.addEventListener('keydown', this._keyHandler);\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n document.removeEventListener('keydown', this._keyHandler);\n }\n\n private _go(next: number) {\n if (next < 0 || next >= this.items.length || next === this.index) return;\n this.index = next;\n this.dispatchEvent(\n new CustomEvent('arvea-lightbox-change', {\n detail: { index: next, item: this.items[next] },\n bubbles: true,\n composed: true,\n }),\n );\n }\n\n private _close() {\n this.open = false;\n this.dispatchEvent(\n new CustomEvent('arvea-lightbox-close', {\n bubbles: true,\n composed: true,\n }),\n );\n }\n\n private _onOverlayClick(e: MouseEvent) {\n if (e.target === e.currentTarget) this._close();\n }\n\n render() {\n const current = this.items[this.index];\n if (!current) return nothing;\n const atFirst = this.index <= 0;\n const atLast = this.index >= this.items.length - 1;\n return html`\n <div\n part=\"overlay\"\n class=\"overlay\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label=\"Image viewer\"\n @click=${this._onOverlayClick}\n >\n ${this.showCounter\n ? html`<div part=\"counter\" class=\"counter\">\n ${this.index + 1} / ${this.items.length}\n </div>`\n : nothing}\n <button\n part=\"close\"\n class=\"close\"\n type=\"button\"\n aria-label=\"Close\"\n @click=${this._close}\n >\n <svg viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\n <path d=\"m4 4 8 8M12 4l-8 8\" stroke-linecap=\"round\"/>\n </svg>\n </button>\n\n <div part=\"stage\" class=\"stage\">\n ${this.items.length > 1\n ? html`<button\n part=\"arrow arrow-prev\"\n class=\"arrow prev\"\n type=\"button\"\n aria-label=\"Previous\"\n ?disabled=${atFirst}\n @click=${() => this._go(this.index - 1)}\n >\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\n <path d=\"m15 6-6 6 6 6\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n </button>`\n : nothing}\n <img src=${current.src} alt=${current.alt || ''} />\n ${this.items.length > 1\n ? html`<button\n part=\"arrow arrow-next\"\n class=\"arrow next\"\n type=\"button\"\n aria-label=\"Next\"\n ?disabled=${atLast}\n @click=${() => this._go(this.index + 1)}\n >\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\n <path d=\"m9 6 6 6-6 6\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n </button>`\n : nothing}\n </div>\n\n ${current.caption\n ? html`<div part=\"caption\" class=\"caption\">${current.caption}</div>`\n : nothing}\n ${this.showThumbnails && this.items.length > 1\n ? html`<div part=\"thumbs\" class=\"thumbs\">\n ${this.items.map(\n (it, i) => html`<button\n class=\"thumb\"\n type=\"button\"\n aria-current=${i === this.index ? 'true' : 'false'}\n aria-label=\"Image ${i + 1}\"\n @click=${() => this._go(i)}\n >\n <img src=${it.src} alt=${it.alt || ''} />\n </button>`,\n )}\n </div>`\n : nothing}\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'arvea-lightbox': ArveaLightbox;\n }\n}\n","import { css } from 'lit';\nimport { tokenStyles } from '../../tokens/tokens.styles';\n\nexport const arveaTableStyles = [\n tokenStyles,\n css`\n :host {\n display: block;\n width: 100%;\n }\n\n .container {\n display: flex;\n flex-direction: column;\n align-items: center;\n padding: var(--table-padding);\n gap: var(--table-gap);\n background: var(--table-bg);\n width: 100%;\n box-sizing: border-box;\n }\n\n /* ── Table ─────────────────────────────────────────── */\n .table-wrapper {\n width: 100%;\n border: 1px solid var(--table-border);\n border-radius: var(--table-border-radius);\n box-sizing: border-box;\n }\n\n table {\n width: 100%;\n border-collapse: collapse;\n font-size: 0.875rem;\n font-family: inherit;\n }\n\n thead {\n background: var(--colors-slate-50);\n }\n\n th {\n padding: 12px 16px;\n text-align: left;\n font-weight: 500;\n color: var(--colors-slate-700);\n border-bottom: 1px solid var(--table-border);\n white-space: nowrap;\n }\n\n td {\n padding: 12px 16px;\n color: var(--colors-slate-700);\n border-bottom: 1px solid var(--table-border);\n }\n\n tr:last-child td {\n border-bottom: none;\n }\n\n td.empty {\n padding: 0;\n border-bottom: none;\n text-align: center;\n }\n\n tr:hover td {\n background: var(--colors-slate-50);\n }\n\n /* ── Footer ────────────────────────────────────────── */\n .footer {\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n align-items: center;\n width: 100%;\n height: var(--table-footer-height);\n gap: var(--table-gap);\n }\n\n .footer-text {\n font-size: var(--table-footer-font-size);\n color: var(--table-footer-text);\n }\n\n .pagination {\n display: flex;\n flex-direction: row;\n gap: var(--table-gap);\n align-items: center;\n }\n\n .pagination-btn {\n display: flex;\n justify-content: center;\n align-items: center;\n padding: 6px 12px;\n height: var(--table-footer-height);\n background: var(--table-btn-bg);\n border: 1px solid var(--table-btn-border);\n box-shadow: var(--table-btn-shadow);\n border-radius: var(--table-btn-radius);\n font-size: 0.875rem;\n font-weight: 500;\n cursor: pointer;\n font-family: inherit;\n }\n\n .pagination-btn:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n /* ══════════════════════════════════════════════════════\n RESPONSIVE — SCROLL MODE\n Desktop: full table\n Tablet/Mobile: horizontal scroll\n ══════════════════════════════════════════════════════ */\n :host([responsive='scroll']) .table-wrapper {\n overflow-x: auto;\n }\n\n /* ══════════════════════════════════════════════════════\n RESPONSIVE — HIDE MODE\n Desktop ≥ 1024px: all columns visible\n Tablet 768px–1023px: hide hideTablet columns\n Mobile < 768px: hide hideMobile + hideTablet columns\n ══════════════════════════════════════════════════════ */\n :host([responsive='hide']) .table-wrapper {\n overflow: hidden;\n }\n\n @media (max-width: 1023px) {\n :host([responsive='hide']) .hide-tablet {\n display: none;\n }\n }\n\n @media (max-width: 767px) {\n :host([responsive='hide']) .hide-mobile {\n display: none;\n }\n }\n\n /* ══════════════════════════════════════════════════════\n RESPONSIVE — CARDS MODE\n Desktop/Tablet: normal table\n Mobile < 768px: each row becomes a card\n ══════════════════════════════════════════════════════ */\n :host([responsive='cards']) .table-wrapper {\n overflow: hidden;\n }\n\n @media (max-width: 767px) {\n :host([responsive='cards']) table,\n :host([responsive='cards']) tbody,\n :host([responsive='cards']) tr,\n :host([responsive='cards']) td {\n display: block;\n width: 100%;\n }\n\n :host([responsive='cards']) thead {\n display: none;\n }\n\n :host([responsive='cards']) tr {\n border: 1px solid var(--table-border);\n border-radius: var(--table-border-radius);\n margin-bottom: 8px;\n padding: 8px;\n box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.05);\n }\n\n :host([responsive='cards']) tr:last-child {\n margin-bottom: 0;\n }\n\n :host([responsive='cards']) td {\n display: flex;\n justify-content: flex-start;\n align-items: center;\n padding: 8px 12px;\n border-bottom: 1px solid var(--table-border);\n font-size: 0.875rem;\n gap: 8px;\n }\n\n :host([responsive='cards']) td:last-child {\n border-bottom: none;\n }\n\n :host([responsive='cards']) td::before {\n content: attr(data-label);\n font-weight: 600;\n color: var(--colors-slate-700);\n flex-shrink: 0;\n margin-right: 8px;\n }\n }\n `,\n];","import { LitElement, html } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { arveaTableStyles } from './arvea-table.styles';\nimport type { TableColumn, ArveaTableRow as TableRow, TableResponsive } from './arvea-table.types';\nimport '../arvea-empty-state/arvea-empty-state';\n\n@customElement('arvea-table')\nexport class ArveaTable extends LitElement {\n static styles = arveaTableStyles;\n\n @property({ type: Array })\n columns: TableColumn[] = [];\n\n @property({ type: Array })\n rows: TableRow[] = [];\n\n @property({ type: Number })\n pageSize = 5;\n\n @property({ type: String, reflect: true })\n responsive: TableResponsive = 'scroll';\n\n @property({ type: String, attribute: 'empty-text' })\n emptyText = 'No data to display';\n\n @state()\n private _page = 0;\n\n private get _pagedRows() {\n const start = this._page * this.pageSize;\n return this.rows.slice(start, start + this.pageSize);\n }\n\n private _getColClass(col: TableColumn) {\n const classes = [];\n if (col.hideMobile) classes.push('hide-mobile');\n if (col.hideTablet) classes.push('hide-tablet');\n return classes.join(' ');\n }\n\n render() {\n const total = this.rows.length;\n const start = this._page * this.pageSize;\n const end = Math.min(start + this.pageSize, total);\n\n return html`\n <div part=\"base\" class=\"container\">\n <div part=\"table-wrapper\" class=\"table-wrapper\">\n <table part=\"table\">\n <thead>\n <tr>\n ${this.columns.map(col => html`\n <th class=${this._getColClass(col)}>${col.label}</th>\n `)}\n </tr>\n </thead>\n <tbody>\n ${this.rows.length === 0\n ? html`\n <tr>\n <td class=\"empty\" colspan=${this.columns.length}>\n <arvea-empty-state\n title=${this.emptyText}\n ></arvea-empty-state>\n </td>\n </tr>\n `\n : this._pagedRows.map(row => html`\n <tr>\n ${this.columns.map(col => html`\n <td\n class=${this._getColClass(col)}\n data-label=${col.label}\n >\n ${row[col.key] ?? ''}\n </td>\n `)}\n </tr>\n `)\n }\n </tbody>\n </table>\n </div>\n\n <div part=\"footer\" class=\"footer\">\n <span class=\"footer-text\">${start} of ${total} row(s) selected.</span>\n <div class=\"pagination\">\n <button\n class=\"pagination-btn\"\n ?disabled=${this._page === 0}\n @click=${() => this._page--}\n >\n Previous\n </button>\n <button\n class=\"pagination-btn\"\n ?disabled=${end >= total}\n @click=${() => this._page++}\n >\n Next\n </button>\n </div>\n </div>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'arvea-table': ArveaTable;\n }\n}","import { css } from 'lit';\nimport { tokenStyles } from '../../tokens/tokens.styles';\n\nexport const arveaPopoverStyles = [\n tokenStyles,\n css`\n :host {\n display: inline-block;\n position: relative;\n font-family: inherit;\n }\n\n .trigger {\n display: inline-flex;\n }\n\n .popup {\n position: fixed;\n z-index: var(--popover-z, 9999);\n background: var(--popover-bg, #ffffff);\n color: inherit;\n border: 1px solid var(--popover-border, #e2e8f0);\n border-radius: var(--popover-radius, 8px);\n box-shadow: var(--popover-shadow, 0 8px 24px rgba(15, 23, 42, 0.12));\n padding: 0;\n margin: 0;\n opacity: 0;\n transform: scale(0.98);\n transition:\n opacity 120ms ease,\n transform 120ms ease;\n pointer-events: none;\n max-width: calc(100vw - 16px);\n }\n\n .popup[data-open] {\n opacity: 1;\n transform: scale(1);\n pointer-events: auto;\n }\n\n /* When the runtime supports the Popover API, the popup is in the top\n * layer; we still want the same visual treatment. */\n .popup:popover-open {\n opacity: 1;\n transform: scale(1);\n pointer-events: auto;\n }\n `,\n];\n","import { LitElement, html } from 'lit';\nimport { customElement, property, query, state } from 'lit/decorators.js';\nimport { arveaPopoverStyles } from './arvea-popover.styles';\nimport type {\n ArveaPopoverPlacement,\n ArveaPopoverTrigger,\n} from './arvea-popover.types';\n\n/**\n * @element arvea-popover\n *\n * Anchored popover primitive. Renders an absolutely-positioned popup next to\n * a trigger element, with viewport-aware flipping and click-outside handling.\n * Used as the positioning foundation for tooltips, dropdowns, popconfirms,\n * date-pickers and selects.\n *\n * @prop {boolean} open\n * @prop {ArveaPopoverPlacement} placement\n * @prop {number} offset\n * @prop {ArveaPopoverTrigger} trigger\n * @prop {boolean} disabled\n * @prop {boolean} matchTriggerWidth\n *\n * @slot trigger - The element that triggers the popover\n * @slot - Popover body content\n *\n * @fires arvea-popover-open\n * @fires arvea-popover-close\n */\n@customElement('arvea-popover')\nexport class ArveaPopover extends LitElement {\n static styles = arveaPopoverStyles;\n\n @property({ type: Boolean, reflect: true }) open = false;\n @property({ type: String, reflect: true })\n placement: ArveaPopoverPlacement = 'bottom';\n @property({ type: Number }) offset = 8;\n @property({ type: String, reflect: true })\n trigger: ArveaPopoverTrigger = 'click';\n @property({ type: Boolean, reflect: true }) disabled = false;\n @property({ type: Boolean, attribute: 'match-trigger-width' })\n matchTriggerWidth = false;\n\n @query('.trigger') private _triggerEl!: HTMLElement;\n @query('.popup') private _popupEl!: HTMLElement;\n\n @state() private _resolvedPlacement: ArveaPopoverPlacement = 'bottom';\n\n private _onScroll = () => this._position();\n private _onResize = () => this._position();\n private _onDocPointer = (e: PointerEvent) => {\n if (!this.open) return;\n const path = e.composedPath();\n if (path.includes(this) || path.includes(this._popupEl)) return;\n this.hide();\n };\n private _onKey = (e: KeyboardEvent) => {\n if (e.key === 'Escape' && this.open) {\n this.hide();\n }\n };\n\n connectedCallback() {\n super.connectedCallback();\n this._resolvedPlacement = this.placement;\n window.addEventListener('scroll', this._onScroll, true);\n window.addEventListener('resize', this._onResize);\n document.addEventListener('pointerdown', this._onDocPointer);\n document.addEventListener('keydown', this._onKey);\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n window.removeEventListener('scroll', this._onScroll, true);\n window.removeEventListener('resize', this._onResize);\n document.removeEventListener('pointerdown', this._onDocPointer);\n document.removeEventListener('keydown', this._onKey);\n }\n\n updated(changed: Map<string, unknown>) {\n if (changed.has('open')) {\n if (this.open) {\n this._show();\n } else {\n this._hide();\n }\n }\n if (changed.has('placement')) {\n this._resolvedPlacement = this.placement;\n if (this.open) this._position();\n }\n }\n\n show() {\n if (this.disabled) return;\n this.open = true;\n }\n\n hide() {\n this.open = false;\n }\n\n toggle() {\n if (this.open) this.hide();\n else this.show();\n }\n\n private _show() {\n const popup = this._popupEl;\n if (!popup) return;\n popup.setAttribute('data-open', '');\n if ('showPopover' in popup) {\n try {\n (popup as HTMLElement & { showPopover: () => void }).showPopover();\n } catch {\n // Already showing or unsupported in this state — ignore.\n }\n }\n this._position();\n this.dispatchEvent(\n new CustomEvent('arvea-popover-open', { bubbles: true, composed: true }),\n );\n }\n\n private _hide() {\n const popup = this._popupEl;\n if (!popup) return;\n popup.removeAttribute('data-open');\n if ('hidePopover' in popup) {\n try {\n (popup as HTMLElement & { hidePopover: () => void }).hidePopover();\n } catch {\n // Already hidden — ignore.\n }\n }\n this.dispatchEvent(\n new CustomEvent('arvea-popover-close', { bubbles: true, composed: true }),\n );\n }\n\n private _position() {\n const popup = this._popupEl;\n const trigger = this._triggerEl;\n if (!popup || !trigger || !this.open) return;\n\n const triggerRect = trigger.getBoundingClientRect();\n if (this.matchTriggerWidth) {\n popup.style.minWidth = `${triggerRect.width}px`;\n }\n\n // Measure popup after possible width sync.\n const popupRect = popup.getBoundingClientRect();\n const vw = window.innerWidth;\n const vh = window.innerHeight;\n const off = this.offset;\n\n const [side, align = 'center'] = this._resolvedPlacement.split(\n '-',\n ) as ['top' | 'bottom' | 'left' | 'right', 'start' | 'center' | 'end'];\n\n // Auto-flip when there isn't enough room.\n const flipped = this._flipIfNeeded(side, triggerRect, popupRect, vw, vh);\n const finalSide = flipped;\n\n let top = 0;\n let left = 0;\n\n if (finalSide === 'bottom') {\n top = triggerRect.bottom + off;\n } else if (finalSide === 'top') {\n top = triggerRect.top - popupRect.height - off;\n } else if (finalSide === 'right') {\n left = triggerRect.right + off;\n } else if (finalSide === 'left') {\n left = triggerRect.left - popupRect.width - off;\n }\n\n if (finalSide === 'bottom' || finalSide === 'top') {\n if (align === 'start') left = triggerRect.left;\n else if (align === 'end') left = triggerRect.right - popupRect.width;\n else left = triggerRect.left + (triggerRect.width - popupRect.width) / 2;\n } else {\n if (align === 'start') top = triggerRect.top;\n else if (align === 'end') top = triggerRect.bottom - popupRect.height;\n else top = triggerRect.top + (triggerRect.height - popupRect.height) / 2;\n }\n\n // Clip to viewport with 8px gutter.\n left = Math.min(Math.max(8, left), vw - popupRect.width - 8);\n top = Math.min(Math.max(8, top), vh - popupRect.height - 8);\n\n popup.style.left = `${left}px`;\n popup.style.top = `${top}px`;\n this._resolvedPlacement = (align === 'center'\n ? finalSide\n : `${finalSide}-${align}`) as ArveaPopoverPlacement;\n }\n\n private _flipIfNeeded(\n side: 'top' | 'bottom' | 'left' | 'right',\n trigger: DOMRect,\n popup: DOMRect,\n vw: number,\n vh: number,\n ): 'top' | 'bottom' | 'left' | 'right' {\n if (side === 'bottom' && trigger.bottom + popup.height + this.offset > vh) {\n if (trigger.top - popup.height - this.offset >= 0) return 'top';\n }\n if (side === 'top' && trigger.top - popup.height - this.offset < 0) {\n if (trigger.bottom + popup.height + this.offset <= vh) return 'bottom';\n }\n if (side === 'right' && trigger.right + popup.width + this.offset > vw) {\n if (trigger.left - popup.width - this.offset >= 0) return 'left';\n }\n if (side === 'left' && trigger.left - popup.width - this.offset < 0) {\n if (trigger.right + popup.width + this.offset <= vw) return 'right';\n }\n return side;\n }\n\n private _onTriggerClick = () => {\n if (this.trigger !== 'click') return;\n this.toggle();\n };\n\n private _onTriggerEnter = () => {\n if (this.trigger !== 'hover') return;\n this.show();\n };\n\n private _onTriggerLeave = () => {\n if (this.trigger !== 'hover') return;\n this.hide();\n };\n\n private _onTriggerFocusIn = () => {\n if (this.trigger !== 'focus') return;\n this.show();\n };\n\n private _onTriggerFocusOut = () => {\n if (this.trigger !== 'focus') return;\n this.hide();\n };\n\n render() {\n return html`\n <span\n part=\"trigger\"\n class=\"trigger\"\n @click=${this._onTriggerClick}\n @mouseenter=${this._onTriggerEnter}\n @mouseleave=${this._onTriggerLeave}\n @focusin=${this._onTriggerFocusIn}\n @focusout=${this._onTriggerFocusOut}\n >\n <slot name=\"trigger\"></slot>\n </span>\n <div part=\"popup\" class=\"popup\" popover=\"manual\" role=\"dialog\">\n <slot></slot>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'arvea-popover': ArveaPopover;\n }\n}\n","import { css } from 'lit';\nimport { tokenStyles } from '../../tokens/tokens.styles';\n\nexport const arveaPopconfirmStyles = [\n tokenStyles,\n css`\n :host {\n display: inline-block;\n }\n\n .body {\n min-width: 220px;\n max-width: 320px;\n padding: 12px 14px;\n }\n\n .title {\n font-weight: 600;\n font-size: 0.9375rem;\n margin: 0 0 4px;\n color: var(--colors-slate-800, #1e293b);\n }\n\n .description {\n font-size: 0.8125rem;\n color: var(--colors-slate-600, #475569);\n margin: 0 0 10px;\n line-height: 1.4;\n }\n\n .actions {\n display: flex;\n gap: 6px;\n justify-content: flex-end;\n }\n\n button {\n font: inherit;\n font-size: 0.8125rem;\n padding: 4px 10px;\n border-radius: 6px;\n cursor: pointer;\n border: 1px solid transparent;\n transition: background 0.15s ease, border-color 0.15s ease;\n }\n\n button.cancel {\n background: transparent;\n color: var(--colors-slate-700, #334155);\n border-color: var(--colors-slate-200, #e2e8f0);\n }\n button.cancel:hover {\n background: var(--colors-slate-50, #f8fafc);\n }\n\n button.confirm {\n background: var(--colors-primary-600, #2563eb);\n color: white;\n border-color: var(--colors-primary-600, #2563eb);\n }\n button.confirm:hover {\n background: var(--colors-primary-700, #1d4ed8);\n border-color: var(--colors-primary-700, #1d4ed8);\n }\n\n :host([variant='destructive']) button.confirm {\n background: var(--colors-red-600, #dc2626);\n border-color: var(--colors-red-600, #dc2626);\n }\n :host([variant='destructive']) button.confirm:hover {\n background: var(--colors-red-700, #b91c1c);\n border-color: var(--colors-red-700, #b91c1c);\n }\n `,\n];\n","import { LitElement, html, nothing } from 'lit';\nimport { customElement, property, query } from 'lit/decorators.js';\nimport '../arvea-popover/arvea-popover';\nimport type { ArveaPopover } from '../arvea-popover/arvea-popover';\nimport { arveaPopconfirmStyles } from './arvea-popconfirm.styles';\nimport type { ArveaPopconfirmVariant } from './arvea-popconfirm.types';\n\n/**\n * @element arvea-popconfirm\n *\n * Inline \"Are you sure?\" popover for destructive or impactful actions. Uses\n * <arvea-popover> for positioning.\n *\n * @slot trigger - The element that triggers the confirmation (button, icon, etc.)\n *\n * @fires arvea-confirm\n * @fires arvea-cancel\n */\n@customElement('arvea-popconfirm')\nexport class ArveaPopconfirm extends LitElement {\n static styles = arveaPopconfirmStyles;\n\n @property({ type: String }) title = 'Are you sure?';\n @property({ type: String }) description = '';\n @property({ type: String, attribute: 'confirm-text' }) confirmText = 'Confirm';\n @property({ type: String, attribute: 'cancel-text' }) cancelText = 'Cancel';\n @property({ type: String, reflect: true })\n variant: ArveaPopconfirmVariant = 'default';\n @property({ type: Boolean, reflect: true }) disabled = false;\n @property({ type: Boolean, reflect: true }) open = false;\n\n @query('arvea-popover') private _popover?: ArveaPopover;\n\n private _onConfirm = () => {\n this.dispatchEvent(\n new CustomEvent('arvea-confirm', { bubbles: true, composed: true }),\n );\n this._popover?.hide();\n };\n\n private _onCancel = () => {\n this.dispatchEvent(\n new CustomEvent('arvea-cancel', { bubbles: true, composed: true }),\n );\n this._popover?.hide();\n };\n\n private _onPopoverChange = (e: Event) => {\n if (e.type === 'arvea-popover-open') this.open = true;\n else this.open = false;\n };\n\n render() {\n return html`\n <arvea-popover\n placement=\"top\"\n trigger=\"click\"\n ?disabled=${this.disabled}\n @arvea-popover-open=${this._onPopoverChange}\n @arvea-popover-close=${this._onPopoverChange}\n >\n <span slot=\"trigger\"><slot name=\"trigger\"></slot></span>\n <div part=\"body\" class=\"body\" role=\"alertdialog\">\n ${this.title ? html`<p part=\"title\" class=\"title\">${this.title}</p>` : nothing}\n ${this.description\n ? html`<p part=\"description\" class=\"description\">${this.description}</p>`\n : nothing}\n <div part=\"actions\" class=\"actions\">\n <button type=\"button\" part=\"cancel\" class=\"cancel\" @click=${this._onCancel}>\n ${this.cancelText}\n </button>\n <button type=\"button\" part=\"confirm\" class=\"confirm\" @click=${this._onConfirm}>\n ${this.confirmText}\n </button>\n </div>\n </div>\n </arvea-popover>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'arvea-popconfirm': ArveaPopconfirm;\n }\n}\n","import { css } from 'lit';\nimport { tokenStyles } from '../../tokens/tokens.styles';\n\nexport const arveaDrawerStyles = [\n tokenStyles,\n css`\n :host {\n position: fixed;\n inset: 0;\n z-index: 1000;\n pointer-events: none;\n font-family: inherit;\n }\n\n :host([open]) {\n pointer-events: auto;\n }\n\n .overlay {\n position: fixed;\n inset: 0;\n background: var(--drawer-overlay-bg, rgba(15, 23, 42, 0.45));\n opacity: 0;\n transition: opacity var(--drawer-transition, 260ms ease);\n }\n\n :host([open]) .overlay {\n opacity: 1;\n }\n\n :host([hide-overlay]) .overlay {\n display: none;\n }\n\n .panel {\n position: fixed;\n background: var(--drawer-bg, #ffffff);\n box-shadow: var(--drawer-shadow, 0 12px 32px rgba(15, 23, 42, 0.18));\n display: flex;\n flex-direction: column;\n transition: transform var(--drawer-transition, 260ms ease);\n overflow: hidden;\n }\n\n :host([placement='right']) .panel {\n top: 0;\n right: 0;\n height: 100%;\n width: var(--drawer-w, 360px);\n transform: translateX(100%);\n }\n :host([placement='left']) .panel {\n top: 0;\n left: 0;\n height: 100%;\n width: var(--drawer-w, 360px);\n transform: translateX(-100%);\n }\n :host([placement='top']) .panel {\n top: 0;\n left: 0;\n width: 100%;\n height: var(--drawer-w, 320px);\n transform: translateY(-100%);\n }\n :host([placement='bottom']) .panel {\n bottom: 0;\n left: 0;\n width: 100%;\n height: var(--drawer-w, 320px);\n transform: translateY(100%);\n }\n\n :host([open]) .panel {\n transform: translate(0, 0);\n }\n\n :host([size='sm']) {\n --drawer-w: 280px;\n }\n :host([size='md']) {\n --drawer-w: 360px;\n }\n :host([size='lg']) {\n --drawer-w: 480px;\n }\n :host([size='full']) {\n --drawer-w: 100vw;\n }\n\n .header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 16px 20px;\n border-bottom: 1px solid var(--colors-slate-200, #e2e8f0);\n gap: 12px;\n }\n\n .title {\n font-weight: 600;\n font-size: 1rem;\n margin: 0;\n color: var(--colors-slate-900, #0f172a);\n }\n\n .close {\n background: transparent;\n border: 0;\n padding: 4px;\n cursor: pointer;\n color: var(--colors-slate-500, #64748b);\n border-radius: 4px;\n display: inline-flex;\n }\n .close:hover {\n background: var(--colors-slate-100, #f1f5f9);\n color: var(--colors-slate-900, #0f172a);\n }\n\n .body {\n flex: 1 1 auto;\n overflow: auto;\n padding: 20px;\n }\n\n .footer {\n border-top: 1px solid var(--colors-slate-200, #e2e8f0);\n padding: 12px 20px;\n }\n\n .footer:empty {\n display: none;\n }\n `,\n];\n","import { LitElement, html, nothing } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { arveaDrawerStyles } from './arvea-drawer.styles';\nimport type {\n ArveaDrawerPlacement,\n ArveaDrawerSize,\n} from './arvea-drawer.types';\n\n/**\n * @element arvea-drawer\n *\n * Side-sliding panel for cart drawers, filter sidebars, settings, etc.\n * Companion to <arvea-dialog> for non-centered overlays.\n *\n * @slot header\n * @slot - default body\n * @slot footer\n *\n * @fires arvea-drawer-open\n * @fires arvea-drawer-close\n */\n@customElement('arvea-drawer')\nexport class ArveaDrawer extends LitElement {\n static styles = arveaDrawerStyles;\n\n @property({ type: Boolean, reflect: true }) open = false;\n @property({ type: String, reflect: true })\n placement: ArveaDrawerPlacement = 'right';\n @property({ type: String, reflect: true }) size: ArveaDrawerSize = 'md';\n @property({ type: String }) title = '';\n @property({ type: Boolean, attribute: 'close-on-overlay-click' })\n closeOnOverlayClick = true;\n @property({ type: Boolean, attribute: 'close-on-esc' })\n closeOnEsc = true;\n @property({ type: Boolean, attribute: 'prevent-scroll' })\n preventScroll = true;\n @property({ type: Boolean, reflect: true, attribute: 'hide-overlay' })\n hideOverlay = false;\n\n private _previouslyFocused: Element | null = null;\n\n private _onKey = (e: KeyboardEvent) => {\n if (!this.open) return;\n if (e.key === 'Escape' && this.closeOnEsc) {\n e.stopPropagation();\n this.close();\n } else if (e.key === 'Tab') {\n this._trapFocus(e);\n }\n };\n\n connectedCallback() {\n super.connectedCallback();\n document.addEventListener('keydown', this._onKey);\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n document.removeEventListener('keydown', this._onKey);\n if (this.preventScroll) document.body.style.overflow = '';\n }\n\n updated(changed: Map<string, unknown>) {\n if (changed.has('open')) {\n if (this.open) {\n this._previouslyFocused = document.activeElement;\n if (this.preventScroll) document.body.style.overflow = 'hidden';\n queueMicrotask(() => this._focusFirst());\n this.dispatchEvent(\n new CustomEvent('arvea-drawer-open', {\n bubbles: true,\n composed: true,\n }),\n );\n } else {\n if (this.preventScroll) document.body.style.overflow = '';\n (this._previouslyFocused as HTMLElement | null)?.focus?.();\n this.dispatchEvent(\n new CustomEvent('arvea-drawer-close', {\n bubbles: true,\n composed: true,\n }),\n );\n }\n }\n }\n\n show() {\n this.open = true;\n }\n\n close() {\n this.open = false;\n }\n\n toggle() {\n this.open = !this.open;\n }\n\n private _focusableElements(): HTMLElement[] {\n const panel = this.shadowRoot?.querySelector('.panel');\n if (!panel) return [];\n return Array.from(\n panel.querySelectorAll<HTMLElement>(\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])',\n ),\n ).filter((el) => !el.hasAttribute('disabled'));\n }\n\n private _focusFirst() {\n const items = this._focusableElements();\n (items[0] ?? this.shadowRoot?.querySelector('.panel'))?.focus?.();\n }\n\n private _trapFocus(e: KeyboardEvent) {\n const items = this._focusableElements();\n if (items.length === 0) return;\n const first = items[0];\n const last = items[items.length - 1];\n const active = (this.shadowRoot?.activeElement ??\n document.activeElement) as HTMLElement | null;\n if (e.shiftKey && active === first) {\n e.preventDefault();\n last.focus();\n } else if (!e.shiftKey && active === last) {\n e.preventDefault();\n first.focus();\n }\n }\n\n private _onOverlayClick = () => {\n if (this.closeOnOverlayClick) this.close();\n };\n\n render() {\n return html`\n <div\n part=\"overlay\"\n class=\"overlay\"\n @click=${this._onOverlayClick}\n aria-hidden=\"true\"\n ></div>\n <div\n part=\"panel\"\n class=\"panel\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label=${this.title || 'Drawer'}\n tabindex=\"-1\"\n >\n ${this.title || this.querySelector('[slot=\"header\"]')\n ? html`<div part=\"header\" class=\"header\">\n <slot name=\"header\">\n <h2 part=\"title\" class=\"title\">${this.title}</h2>\n </slot>\n <button\n part=\"close\"\n type=\"button\"\n class=\"close\"\n aria-label=\"Close\"\n @click=${() => this.close()}\n >\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M5 5l10 10M15 5L5 15\"\n stroke=\"currentColor\"\n stroke-width=\"1.6\"\n stroke-linecap=\"round\"\n />\n </svg>\n </button>\n </div>`\n : nothing}\n <div part=\"body\" class=\"body\">\n <slot></slot>\n </div>\n <div part=\"footer\" class=\"footer\">\n <slot name=\"footer\"></slot>\n </div>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'arvea-drawer': ArveaDrawer;\n }\n}\n","import { css } from 'lit';\nimport { tokenStyles } from '../../tokens/tokens.styles';\n\nexport const arveaSegmentedControlStyles = [\n tokenStyles,\n css`\n :host {\n display: inline-block;\n font-family: inherit;\n }\n\n :host([full-width]) {\n display: block;\n }\n\n .track {\n display: inline-flex;\n align-items: stretch;\n background: var(--segmented-track-bg, var(--colors-slate-100, #f1f5f9));\n border-radius: 8px;\n padding: 4px;\n gap: 2px;\n position: relative;\n }\n\n :host([full-width]) .track {\n display: flex;\n width: 100%;\n }\n\n .segment {\n flex: 0 0 auto;\n padding: 6px 14px;\n border: 0;\n background: transparent;\n color: var(--colors-slate-700, #334155);\n font: inherit;\n font-size: 0.875rem;\n border-radius: 6px;\n cursor: pointer;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 6px;\n transition:\n background 0.18s ease,\n color 0.18s ease,\n box-shadow 0.18s ease;\n white-space: nowrap;\n }\n\n :host([full-width]) .segment {\n flex: 1 1 0;\n }\n\n :host([size='sm']) .segment {\n padding: 4px 10px;\n font-size: 0.8125rem;\n }\n :host([size='lg']) .segment {\n padding: 8px 18px;\n font-size: 0.9375rem;\n }\n\n .segment[aria-pressed='true'] {\n background: var(--segmented-thumb-bg, #ffffff);\n color: var(--colors-slate-900, #0f172a);\n box-shadow: var(\n --segmented-thumb-shadow,\n 0 1px 2px rgba(15, 23, 42, 0.08),\n 0 0 0 1px rgba(15, 23, 42, 0.04)\n );\n }\n\n .segment:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n .segment:focus-visible {\n outline: 2px solid var(--colors-primary-500, #3b82f6);\n outline-offset: 2px;\n }\n\n .icon {\n display: inline-flex;\n align-items: center;\n }\n .icon svg {\n width: 14px;\n height: 14px;\n }\n `,\n];\n","import { LitElement, html, nothing } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { unsafeSVG } from 'lit/directives/unsafe-svg.js';\nimport { arveaSegmentedControlStyles } from './arvea-segmented-control.styles';\nimport type {\n ArveaSegmentedControlItem,\n ArveaSegmentedControlSize,\n} from './arvea-segmented-control.types';\n\n/**\n * @element arvea-segmented-control\n *\n * Pill-style segmented selector. Useful as a single-choice alternative to\n * radio groups (view-mode toggles, sort selectors).\n *\n * @fires arvea-segmented-change - { value }\n */\n@customElement('arvea-segmented-control')\nexport class ArveaSegmentedControl extends LitElement {\n static styles = arveaSegmentedControlStyles;\n\n @property({ type: Array }) items: ArveaSegmentedControlItem[] = [];\n @property({ type: String }) value = '';\n @property({ type: String, reflect: true })\n size: ArveaSegmentedControlSize = 'md';\n @property({ type: Boolean, reflect: true }) disabled = false;\n @property({ type: Boolean, reflect: true, attribute: 'full-width' })\n fullWidth = false;\n\n private _select(item: ArveaSegmentedControlItem) {\n if (this.disabled || item.disabled || item.value === this.value) return;\n this.value = item.value;\n this.dispatchEvent(new Event('input', { bubbles: true, composed: true }));\n this.dispatchEvent(new Event('change', { bubbles: true, composed: true }));\n }\n\n private _onKey = (e: KeyboardEvent, index: number) => {\n if (e.key !== 'ArrowLeft' && e.key !== 'ArrowRight') return;\n const enabled = this.items\n .map((it, i) => ({ it, i }))\n .filter(({ it }) => !it.disabled);\n if (enabled.length === 0) return;\n const currentEnabled = enabled.findIndex(({ i }) => i === index);\n const direction = e.key === 'ArrowRight' ? 1 : -1;\n const next =\n enabled[\n (currentEnabled + direction + enabled.length) % enabled.length\n ];\n if (next) {\n e.preventDefault();\n this._select(next.it);\n const btn = this.shadowRoot?.querySelectorAll<HTMLButtonElement>(\n '.segment',\n )[next.i];\n btn?.focus();\n }\n };\n\n render() {\n return html`\n <div part=\"base\" class=\"track\" role=\"tablist\">\n ${this.items.map(\n (item, i) => html`\n <button\n type=\"button\"\n part=\"segment\"\n class=\"segment\"\n role=\"tab\"\n aria-pressed=${item.value === this.value ? 'true' : 'false'}\n ?disabled=${this.disabled || item.disabled}\n tabindex=${item.value === this.value ? '0' : '-1'}\n @click=${() => this._select(item)}\n @keydown=${(e: KeyboardEvent) => this._onKey(e, i)}\n >\n ${item.icon\n ? html`<span class=\"icon\">${unsafeSVG(item.icon)}</span>`\n : nothing}\n <span>${item.label}</span>\n </button>\n `,\n )}\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'arvea-segmented-control': ArveaSegmentedControl;\n }\n}\n","import { css } from 'lit';\nimport { tokenStyles } from '../../tokens/tokens.styles';\n\nexport const arveaTagsInputStyles = [\n tokenStyles,\n css`\n :host {\n display: block;\n font-family: inherit;\n width: 100%;\n position: relative;\n }\n\n .field {\n display: flex;\n flex-direction: column;\n gap: 6px;\n }\n\n .label {\n font-size: var(--input-label-size);\n font-weight: var(--input-label-weight);\n color: var(--input-label-color);\n }\n\n .wrapper {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: 4px;\n min-height: var(--input-height, 38px);\n padding: 4px 8px;\n background: var(--input-bg, #ffffff);\n border: 1px solid var(--input-border, #e2e8f0);\n border-radius: var(--input-radius, 6px);\n transition:\n border-color 0.15s ease,\n box-shadow 0.15s ease;\n }\n\n .wrapper:focus-within {\n border-color: var(--input-border-focus, #3b82f6);\n box-shadow: var(--input-shadow-focus);\n }\n\n :host([invalid]) .wrapper {\n border-color: var(--select-border-invalid, #ef4444);\n }\n\n :host([disabled]) .wrapper {\n background: var(--input-bg-disabled, #f1f5f9);\n cursor: not-allowed;\n }\n\n .tag {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 2px 6px 2px 8px;\n background: var(--select-tag-bg, var(--colors-slate-100, #f1f5f9));\n color: var(--select-tag-fg, var(--colors-slate-700, #334155));\n border-radius: 4px;\n font-size: 0.8125rem;\n max-width: 100%;\n }\n\n .tag.invalid {\n background: var(--colors-red-100, #fee2e2);\n color: var(--colors-red-700, #b91c1c);\n }\n\n .tag-label {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .tag-remove {\n background: transparent;\n border: 0;\n padding: 0;\n color: inherit;\n cursor: pointer;\n opacity: 0.7;\n display: inline-flex;\n }\n .tag-remove:hover {\n opacity: 1;\n }\n\n input {\n flex: 1 1 80px;\n min-width: 80px;\n border: 0;\n outline: 0;\n background: transparent;\n font: inherit;\n color: inherit;\n padding: 4px 0;\n }\n\n .hint {\n font-size: var(--input-hint-size);\n color: var(--input-hint-color);\n }\n :host([invalid]) .hint {\n color: var(--input-hint-color-invalid);\n }\n\n .suggestions {\n position: absolute;\n z-index: 10;\n left: 0;\n right: 0;\n top: 100%;\n margin-top: 4px;\n background: #fff;\n border: 1px solid var(--input-border, #e2e8f0);\n border-radius: 6px;\n max-height: 200px;\n overflow: auto;\n box-shadow: 0 8px 24px rgba(15, 23, 42, 0.12);\n padding: 4px;\n }\n\n .suggestion {\n padding: 6px 10px;\n border-radius: 4px;\n cursor: pointer;\n font-size: 0.875rem;\n }\n .suggestion:hover,\n .suggestion[data-active='true'] {\n background: var(--colors-slate-100, #f1f5f9);\n }\n `,\n];\n","import { LitElement, html, nothing } from 'lit';\nimport { customElement, property, query, state } from 'lit/decorators.js';\nimport { arveaTagsInputStyles } from './arvea-tags-input.styles';\nimport type { ArveaTagValidator } from './arvea-tags-input.types';\n\n/**\n * @element arvea-tags-input\n *\n * Multi-tag entry input. Typed values are committed as chips on Enter or on\n * any of the configured separator characters. Supports optional autocomplete\n * suggestions, max-tags limit, duplicate prevention and per-tag validation.\n *\n * @fires arvea-tags-change { value: string[] }\n * @fires arvea-tag-add { tag: string }\n * @fires arvea-tag-remove { tag: string }\n */\n@customElement('arvea-tags-input')\nexport class ArveaTagsInput extends LitElement {\n static styles = arveaTagsInputStyles;\n\n @property({ type: Array }) value: string[] = [];\n @property({ type: String }) placeholder = '';\n @property({ type: Number, attribute: 'max-tags' }) maxTags?: number;\n @property({ type: Boolean, attribute: 'allow-duplicates' })\n allowDuplicates = false;\n @property({ attribute: false }) separator: string | RegExp = /[,\\n]/;\n @property({ attribute: false }) validateTag?: ArveaTagValidator;\n @property({ type: Boolean, reflect: true }) disabled = false;\n @property({ type: String }) label = '';\n @property({ type: Array }) suggestions: string[] = [];\n @property({ type: Boolean, reflect: true }) invalid = false;\n @property({ type: String, attribute: 'validation-hint' })\n validationHint = '';\n\n @state() private _query = '';\n @state() private _activeSuggestion = -1;\n @state() private _errorMessage = '';\n\n @query('input') private _input?: HTMLInputElement;\n\n private get _suggestions(): string[] {\n const q = this._query.trim().toLowerCase();\n if (!q) return [];\n const taken = new Set(this.value.map((v) => v.toLowerCase()));\n return this.suggestions\n .filter((s) => s.toLowerCase().includes(q) && !taken.has(s.toLowerCase()))\n .slice(0, 8);\n }\n\n private _commit(raw: string) {\n const tag = raw.trim();\n if (!tag) return;\n if (this.maxTags != null && this.value.length >= this.maxTags) {\n this._errorMessage = `Maximum ${this.maxTags} tags`;\n return;\n }\n if (\n !this.allowDuplicates &&\n this.value.some((v) => v.toLowerCase() === tag.toLowerCase())\n ) {\n this._errorMessage = 'Already added';\n return;\n }\n if (this.validateTag) {\n const result = this.validateTag(tag);\n if (result !== true) {\n this._errorMessage =\n typeof result === 'string' ? result : 'Invalid tag';\n return;\n }\n }\n this._errorMessage = '';\n this.value = [...this.value, tag];\n this.dispatchEvent(\n new CustomEvent('arvea-tag-add', {\n detail: { tag },\n bubbles: true,\n composed: true,\n }),\n );\n this._emitChange();\n }\n\n private _remove(tag: string) {\n this.value = this.value.filter((v) => v !== tag);\n this.dispatchEvent(\n new CustomEvent('arvea-tag-remove', {\n detail: { tag },\n bubbles: true,\n composed: true,\n }),\n );\n this._emitChange();\n }\n\n private _emitChange() {\n this.dispatchEvent(new Event('change', { bubbles: true, composed: true }));\n }\n\n private _onInput = (e: Event) => {\n const target = e.target as HTMLInputElement;\n this._query = target.value;\n this._activeSuggestion = -1;\n this._errorMessage = '';\n if (this.separator) {\n const sep = this.separator;\n const re =\n typeof sep === 'string'\n ? new RegExp(sep.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&'))\n : sep;\n if (re.test(this._query)) {\n const parts = this._query.split(re);\n const last = parts.pop() ?? '';\n for (const p of parts) this._commit(p);\n target.value = last;\n this._query = last;\n }\n }\n };\n\n private _onKeydown = (e: KeyboardEvent) => {\n const sug = this._suggestions;\n if (e.key === 'Enter') {\n e.preventDefault();\n if (this._activeSuggestion >= 0 && sug[this._activeSuggestion]) {\n this._commit(sug[this._activeSuggestion]);\n } else {\n this._commit(this._query);\n }\n if (this._input) this._input.value = '';\n this._query = '';\n } else if (e.key === 'Backspace' && !this._query && this.value.length) {\n this._remove(this.value[this.value.length - 1]);\n } else if (e.key === 'ArrowDown' && sug.length) {\n e.preventDefault();\n this._activeSuggestion =\n (this._activeSuggestion + 1) % sug.length;\n } else if (e.key === 'ArrowUp' && sug.length) {\n e.preventDefault();\n this._activeSuggestion =\n (this._activeSuggestion - 1 + sug.length) % sug.length;\n } else if (e.key === 'Escape') {\n this._activeSuggestion = -1;\n }\n };\n\n render() {\n const sug = this._suggestions;\n return html`\n <div part=\"base\" class=\"field\">\n ${this.label ? html`<label part=\"label\" class=\"label\">${this.label}</label>` : nothing}\n <div part=\"wrapper\" class=\"wrapper\">\n ${this.value.map(\n (tag) => html`\n <span part=\"tag\" class=\"tag\">\n <span part=\"tag-label\" class=\"tag-label\">${tag}</span>\n <button\n type=\"button\"\n part=\"tag-remove\"\n class=\"tag-remove\"\n aria-label=\"Remove ${tag}\"\n ?disabled=${this.disabled}\n @click=${() => this._remove(tag)}\n >\n <svg\n width=\"10\"\n height=\"10\"\n viewBox=\"0 0 12 12\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M3 3l6 6M9 3l-6 6\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n />\n </svg>\n </button>\n </span>\n `,\n )}\n <input\n type=\"text\"\n placeholder=${this.value.length === 0 ? this.placeholder : ''}\n ?disabled=${this.disabled}\n @input=${this._onInput}\n @keydown=${this._onKeydown}\n />\n </div>\n ${sug.length > 0\n ? html`<div part=\"suggestions\" class=\"suggestions\" role=\"listbox\">\n ${sug.map(\n (s, i) => html`\n <div\n class=\"suggestion\"\n role=\"option\"\n data-active=${i === this._activeSuggestion\n ? 'true'\n : 'false'}\n @pointerdown=${(e: Event) => {\n e.preventDefault();\n this._commit(s);\n if (this._input) this._input.value = '';\n this._query = '';\n }}\n >\n ${s}\n </div>\n `,\n )}\n </div>`\n : nothing}\n ${this._errorMessage || this.validationHint\n ? html`<span part=\"hint\" class=\"hint\">\n ${this._errorMessage || this.validationHint}\n </span>`\n : nothing}\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'arvea-tags-input': ArveaTagsInput;\n }\n}\n","import { css } from 'lit';\nimport { tokenStyles } from '../../tokens/tokens.styles';\n\nexport const arveaOtpInputStyles = [\n tokenStyles,\n css`\n :host {\n display: inline-block;\n font-family: inherit;\n }\n\n .field {\n display: flex;\n flex-direction: column;\n gap: 6px;\n }\n\n .label {\n font-size: var(--input-label-size);\n font-weight: var(--input-label-weight);\n color: var(--input-label-color);\n }\n\n .cells {\n display: inline-flex;\n gap: var(--otp-cell-gap, 8px);\n }\n\n input.cell {\n width: var(--otp-cell-size, 40px);\n height: var(--otp-cell-size, 48px);\n text-align: center;\n font-size: 1.25rem;\n font-family: inherit;\n border: 1px solid var(--otp-cell-border, var(--input-border, #e2e8f0));\n border-radius: 8px;\n background: var(--input-bg, #ffffff);\n color: var(--colors-slate-900, #0f172a);\n box-sizing: border-box;\n transition:\n border-color 0.15s ease,\n box-shadow 0.15s ease;\n }\n\n input.cell:focus {\n outline: none;\n border-color: var(--colors-primary-500, #3b82f6);\n box-shadow: var(\n --otp-cell-focus-ring,\n 0 0 0 3px rgba(59, 130, 246, 0.18)\n );\n }\n\n :host([invalid]) input.cell {\n border-color: var(--colors-red-500, #ef4444);\n }\n\n input.cell:disabled {\n background: var(--input-bg-disabled, #f1f5f9);\n cursor: not-allowed;\n }\n `,\n];\n","import { LitElement, html, nothing } from 'lit';\nimport { customElement, property, queryAll } from 'lit/decorators.js';\nimport { arveaOtpInputStyles } from './arvea-otp-input.styles';\nimport type { ArveaOtpType } from './arvea-otp-input.types';\n\n/**\n * @element arvea-otp-input\n *\n * Segmented one-time-code / PIN input. Auto-advances cells, supports paste,\n * backspace navigation, arrow keys, masking, and a configurable character\n * class (numeric / alphanumeric).\n *\n * @fires arvea-otp-input { value }\n * @fires arvea-otp-complete { value } (only when all cells filled)\n */\n@customElement('arvea-otp-input')\nexport class ArveaOtpInput extends LitElement {\n static styles = arveaOtpInputStyles;\n\n @property({ type: Number }) length = 6;\n @property({ type: String }) value = '';\n @property({ type: String }) type: ArveaOtpType = 'numeric';\n @property({ type: Boolean }) mask = false;\n @property({ type: Boolean, attribute: 'auto-focus' }) autoFocus = false;\n @property({ type: Boolean, reflect: true }) disabled = false;\n @property({ type: Boolean, reflect: true }) invalid = false;\n @property({ type: String }) label = '';\n\n @queryAll('input.cell') private _cells!: NodeListOf<HTMLInputElement>;\n\n private get _allowedRegex(): RegExp {\n return this.type === 'alphanumeric' ? /^[A-Za-z0-9]$/ : /^[0-9]$/;\n }\n\n private get _digits(): string[] {\n const arr: string[] = [];\n for (let i = 0; i < this.length; i++) arr.push(this.value[i] ?? '');\n return arr;\n }\n\n firstUpdated() {\n if (this.autoFocus) this._cells[0]?.focus();\n }\n\n private _setChar(index: number, char: string) {\n const arr = this._digits.slice();\n arr[index] = char;\n this.value = arr.join('').slice(0, this.length);\n this.dispatchEvent(new Event('input', { bubbles: true, composed: true }));\n if (this.value.length === this.length) {\n this.dispatchEvent(\n new CustomEvent('arvea-otp-complete', {\n detail: { value: this.value },\n bubbles: true,\n composed: true,\n }),\n );\n }\n }\n\n private _onInput = (e: InputEvent, index: number) => {\n const target = e.target as HTMLInputElement;\n const ch = target.value.slice(-1);\n if (!ch) {\n this._setChar(index, '');\n return;\n }\n if (!this._allowedRegex.test(ch)) {\n target.value = this._digits[index] ?? '';\n return;\n }\n this._setChar(index, ch);\n if (index < this.length - 1) {\n this._cells[index + 1]?.focus();\n this._cells[index + 1]?.select();\n }\n };\n\n private _onKey = (e: KeyboardEvent, index: number) => {\n if (e.key === 'Backspace') {\n if (this._digits[index]) {\n this._setChar(index, '');\n } else if (index > 0) {\n e.preventDefault();\n this._cells[index - 1]?.focus();\n this._setChar(index - 1, '');\n }\n } else if (e.key === 'ArrowLeft' && index > 0) {\n e.preventDefault();\n this._cells[index - 1]?.focus();\n } else if (e.key === 'ArrowRight' && index < this.length - 1) {\n e.preventDefault();\n this._cells[index + 1]?.focus();\n }\n };\n\n private _onPaste = (e: ClipboardEvent) => {\n e.preventDefault();\n const text = (e.clipboardData?.getData('text') ?? '').trim();\n if (!text) return;\n const re =\n this.type === 'alphanumeric'\n ? /[^A-Za-z0-9]/g\n : /[^0-9]/g;\n const cleaned = text.replace(re, '').slice(0, this.length);\n if (!cleaned) return;\n this.value = cleaned.padEnd(this.length, '').slice(0, this.length).replace(\n / +$/,\n '',\n );\n this.dispatchEvent(new Event('input', { bubbles: true, composed: true }));\n if (this.value.length === this.length) {\n this.dispatchEvent(\n new CustomEvent('arvea-otp-complete', {\n detail: { value: this.value },\n bubbles: true,\n composed: true,\n }),\n );\n }\n const idx = Math.min(this.value.length, this.length - 1);\n queueMicrotask(() => this._cells[idx]?.focus());\n };\n\n private _cellChar(c: string) {\n if (!c) return '';\n return this.mask ? '•' : c;\n }\n\n render() {\n return html`\n <div part=\"base\" class=\"field\">\n ${this.label ? html`<label part=\"label\" class=\"label\">${this.label}</label>` : nothing}\n <div part=\"cells\" class=\"cells\" @paste=${this._onPaste}>\n ${Array.from({ length: this.length }, (_, i) => i).map(\n (i) => html`\n <input\n part=\"cell\"\n class=\"cell\"\n type=${this.mask ? 'password' : 'text'}\n inputmode=${this.type === 'numeric' ? 'numeric' : 'text'}\n autocomplete=\"one-time-code\"\n maxlength=\"1\"\n .value=${this._cellChar(this._digits[i])}\n ?disabled=${this.disabled}\n aria-label=${`Digit ${i + 1}`}\n @input=${(e: InputEvent) => this._onInput(e, i)}\n @keydown=${(e: KeyboardEvent) => this._onKey(e, i)}\n @focus=${(e: FocusEvent) =>\n (e.target as HTMLInputElement).select()}\n />\n `,\n )}\n </div>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'arvea-otp-input': ArveaOtpInput;\n }\n}\n","import { css } from 'lit';\nimport { tokenStyles } from '../../tokens/tokens.styles';\n\nexport const arveaFileUploadStyles = [\n tokenStyles,\n css`\n :host {\n display: block;\n font-family: inherit;\n width: 100%;\n }\n\n .field {\n display: flex;\n flex-direction: column;\n gap: 10px;\n }\n\n .dropzone {\n position: relative;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n min-height: 180px;\n box-sizing: border-box;\n padding: 24px 16px;\n gap: 6px;\n text-align: center;\n border: 2px dashed\n var(--upload-border, var(--colors-slate-300, #cbd5e1));\n border-radius: 10px;\n background: var(--upload-bg, var(--colors-slate-50, #f8fafc));\n cursor: pointer;\n transition:\n border-color 0.15s ease,\n background 0.15s ease;\n color: var(--colors-slate-600, #475569);\n }\n\n .dropzone--has-image {\n padding: 0;\n border-style: solid;\n overflow: hidden;\n }\n\n .dropzone[data-active] {\n border-color: var(\n --upload-border-active,\n var(--colors-primary-500, #3b82f6)\n );\n background: var(\n --upload-bg-active,\n var(--colors-primary-50, #eff6ff)\n );\n }\n\n :host([disabled]) .dropzone {\n opacity: 0.6;\n cursor: not-allowed;\n }\n\n .label {\n font-weight: 600;\n color: var(--colors-slate-800, #1e293b);\n }\n\n .description {\n font-size: 0.875rem;\n }\n\n .browse {\n color: var(--colors-primary-600, #2563eb);\n text-decoration: underline;\n cursor: pointer;\n }\n\n input[type='file'] {\n display: none;\n }\n\n .list {\n display: flex;\n flex-direction: column;\n gap: 6px;\n margin: 0;\n padding: 0;\n list-style: none;\n }\n\n .list-item {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 8px 10px;\n border: 1px solid var(--colors-slate-200, #e2e8f0);\n border-radius: 8px;\n background: #ffffff;\n }\n\n .preview {\n width: 36px;\n height: 36px;\n border-radius: 6px;\n object-fit: cover;\n background: var(--colors-slate-100, #f1f5f9);\n flex-shrink: 0;\n }\n\n .file-icon {\n width: 36px;\n height: 36px;\n border-radius: 6px;\n background: var(--colors-slate-100, #f1f5f9);\n display: inline-flex;\n align-items: center;\n justify-content: center;\n color: var(--colors-slate-500, #64748b);\n flex-shrink: 0;\n }\n\n .file-meta {\n flex: 1 1 auto;\n min-width: 0;\n }\n\n .file-name {\n font-size: 0.875rem;\n font-weight: 500;\n color: var(--colors-slate-800, #1e293b);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .file-size {\n font-size: 0.75rem;\n color: var(--colors-slate-500, #64748b);\n }\n\n .progress {\n height: 4px;\n background: var(--colors-slate-100, #f1f5f9);\n border-radius: 2px;\n overflow: hidden;\n margin-top: 4px;\n }\n .progress-bar {\n height: 100%;\n background: var(--colors-primary-500, #3b82f6);\n transition: width 0.2s ease;\n }\n\n .remove {\n background: transparent;\n border: 0;\n padding: 4px;\n cursor: pointer;\n color: var(--colors-slate-500, #64748b);\n border-radius: 4px;\n }\n .remove:hover {\n background: var(--colors-slate-100, #f1f5f9);\n color: var(--colors-slate-900, #0f172a);\n }\n\n .dropzone-image {\n display: block;\n position: absolute;\n inset: 0;\n width: 100%;\n height: 100%;\n object-fit: cover;\n }\n\n .dropzone-overlay {\n position: absolute;\n inset: 0;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: 6px;\n padding: 8px;\n text-align: center;\n font-size: 0.8125rem;\n color: #ffffff;\n background: rgba(15, 23, 42, 0);\n opacity: 0;\n transition:\n opacity 0.15s ease,\n background 0.15s ease;\n }\n\n .dropzone--has-image:hover .dropzone-overlay {\n opacity: 1;\n background: rgba(15, 23, 42, 0.55);\n }\n\n .dropzone-remove {\n position: absolute;\n top: 8px;\n right: 8px;\n width: 28px;\n height: 28px;\n border-radius: 50%;\n border: 0;\n background: rgba(15, 23, 42, 0.65);\n color: #ffffff;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n opacity: 0;\n z-index: 1;\n transition:\n opacity 0.15s ease,\n background 0.15s ease;\n }\n\n .dropzone--has-image:hover .dropzone-remove,\n .dropzone-remove:focus-visible {\n opacity: 1;\n }\n\n .dropzone-remove:hover {\n background: var(--colors-danger-600, #dc2626);\n }\n\n .dropzone-progress {\n position: absolute;\n left: 0;\n right: 0;\n bottom: 0;\n height: 4px;\n background: rgba(255, 255, 255, 0.4);\n }\n .dropzone-progress .progress-bar {\n height: 100%;\n background: var(--colors-primary-500, #3b82f6);\n }\n\n .preview--zoomable {\n cursor: zoom-in;\n transition: opacity 0.15s ease;\n }\n .preview--zoomable:hover {\n opacity: 0.85;\n }\n\n .zoom-overlay {\n position: fixed;\n inset: 0;\n z-index: 9999;\n background: rgba(0, 0, 0, 0.85);\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: 12px;\n cursor: zoom-out;\n }\n\n .zoom-img {\n max-width: 90vw;\n max-height: 80vh;\n object-fit: contain;\n border-radius: 8px;\n box-shadow: 0 24px 64px rgba(0,0,0,0.6);\n cursor: default;\n }\n\n .zoom-name {\n color: rgba(255, 255, 255, 0.75);\n font-size: 0.875rem;\n }\n\n .zoom-close {\n position: fixed;\n top: 20px;\n right: 20px;\n width: 40px;\n height: 40px;\n border-radius: 50%;\n border: 0;\n background: rgba(255, 255, 255, 0.15);\n color: #ffffff;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n transition: background 0.15s ease;\n }\n .zoom-close:hover {\n background: rgba(255, 255, 255, 0.3);\n }\n `,\n];\n","import { LitElement, html, nothing } from 'lit';\nimport { customElement, property, query, state } from 'lit/decorators.js';\nimport { arveaFileUploadStyles } from './arvea-file-upload.styles';\nimport type { ArveaFileRejectReason } from './arvea-file-upload.types';\n\nconst formatBytes = (bytes: number): string => {\n if (bytes < 1024) return `${bytes} B`;\n if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`;\n if (bytes < 1024 * 1024 * 1024) return `${(bytes / 1024 / 1024).toFixed(1)} MB`;\n return `${(bytes / 1024 / 1024 / 1024).toFixed(1)} GB`;\n};\n\n/**\n * @element arvea-file-upload\n *\n * Drop-zone + click-to-browse file input. Supports type filtering, size and\n * count limits, image previews, and externally-fed progress.\n *\n * @fires arvea-files-change { files: File[] }\n * @fires arvea-file-rejected { file, reason }\n * @fires arvea-existing-remove fired when the existingImageUrl preview is removed\n */\n@customElement('arvea-file-upload')\nexport class ArveaFileUpload extends LitElement {\n static styles = arveaFileUploadStyles;\n\n @property({ type: String }) accept?: string;\n @property({ type: Boolean, reflect: true }) multiple = false;\n @property({ type: Number, attribute: 'max-size' }) maxSize?: number;\n @property({ type: Number, attribute: 'max-files' }) maxFiles?: number;\n @property({ type: Boolean, reflect: true }) disabled = false;\n @property({ type: String }) label = 'Upload files';\n @property({ type: String }) description = 'Drag and drop or click to browse';\n @property({ attribute: false }) files: File[] = [];\n @property({ type: Boolean, attribute: 'show-preview' }) showPreview = true;\n @property({ attribute: false }) progress: Record<string, number> = {};\n @property({ type: String, attribute: 'existing-image-url' }) existingImageUrl?: string;\n\n @state() private _dragActive = false;\n @state() private _previews = new Map<string, string>();\n\n @query('input[type=\"file\"]') private _input?: HTMLInputElement;\n\n disconnectedCallback() {\n super.disconnectedCallback();\n for (const url of this._previews.values()) URL.revokeObjectURL(url);\n this._closeZoom();\n }\n\n private _accepts(file: File): boolean {\n if (!this.accept) return true;\n const list = this.accept.split(',').map((s) => s.trim().toLowerCase());\n const name = file.name.toLowerCase();\n const type = file.type.toLowerCase();\n return list.some((rule) => {\n if (rule.startsWith('.')) return name.endsWith(rule);\n if (rule.endsWith('/*')) return type.startsWith(rule.slice(0, -1));\n return type === rule;\n });\n }\n\n private _reject(file: File, reason: ArveaFileRejectReason) {\n this.dispatchEvent(\n new CustomEvent('arvea-file-rejected', {\n detail: { file, reason },\n bubbles: true,\n composed: true,\n }),\n );\n }\n\n private _processFiles(incoming: File[]) {\n if (this.disabled) {\n for (const f of incoming) this._reject(f, 'disabled');\n return;\n }\n const accepted: File[] = [];\n for (const f of incoming) {\n if (!this._accepts(f)) {\n this._reject(f, 'type');\n continue;\n }\n if (this.maxSize != null && f.size > this.maxSize) {\n this._reject(f, 'max-size');\n continue;\n }\n accepted.push(f);\n }\n let next = this.multiple ? [...this.files, ...accepted] : accepted.slice(-1);\n if (this.maxFiles != null && next.length > this.maxFiles) {\n const overflow = next.slice(this.maxFiles);\n for (const f of overflow) this._reject(f, 'max-files');\n next = next.slice(0, this.maxFiles);\n }\n this.files = next;\n this._refreshPreviews();\n this.dispatchEvent(\n new CustomEvent('arvea-files-change', {\n detail: { files: this.files },\n bubbles: true,\n composed: true,\n }),\n );\n }\n\n private _refreshPreviews() {\n if (!this.showPreview) return;\n const keep = new Set<string>();\n for (const f of this.files) {\n const key = `${f.name}:${f.size}:${f.lastModified}`;\n keep.add(key);\n if (!this._previews.has(key) && f.type.startsWith('image/')) {\n this._previews.set(key, URL.createObjectURL(f));\n }\n }\n for (const [key, url] of this._previews) {\n if (!keep.has(key)) {\n URL.revokeObjectURL(url);\n this._previews.delete(key);\n }\n }\n this.requestUpdate();\n }\n\n private _onSelect = (e: Event) => {\n const target = e.target as HTMLInputElement;\n if (target.files) this._processFiles(Array.from(target.files));\n target.value = '';\n };\n\n private _onDrop = (e: DragEvent) => {\n e.preventDefault();\n this._dragActive = false;\n const dt = e.dataTransfer;\n if (!dt) return;\n this._processFiles(Array.from(dt.files));\n };\n\n private _onDragOver = (e: DragEvent) => {\n e.preventDefault();\n if (!this.disabled) this._dragActive = true;\n };\n\n private _onDragLeave = () => {\n this._dragActive = false;\n };\n\n private _remove(i: number) {\n const removed = this.files[i];\n const key = removed\n ? `${removed.name}:${removed.size}:${removed.lastModified}`\n : '';\n const url = this._previews.get(key);\n if (url) {\n URL.revokeObjectURL(url);\n this._previews.delete(key);\n }\n this.files = this.files.filter((_, idx) => idx !== i);\n this.dispatchEvent(\n new CustomEvent('arvea-files-change', {\n detail: { files: this.files },\n bubbles: true,\n composed: true,\n }),\n );\n }\n\n private _open() {\n if (!this.disabled) this._input?.click();\n }\n\n private _zoomEl: HTMLDivElement | null = null;\n\n private _openZoom(url: string, name: string, index: number) {\n this._closeZoom();\n\n const overlay = document.createElement('div');\n overlay.style.cssText = `\n position:fixed;inset:0;z-index:9999;\n background:rgba(0,0,0,0.88);\n display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;\n cursor:zoom-out;\n `;\n\n const img = document.createElement('img');\n img.src = url;\n img.alt = name;\n img.style.cssText = `\n max-width:90vw;max-height:72vh;object-fit:contain;\n border-radius:8px;box-shadow:0 24px 64px rgba(0,0,0,0.6);\n cursor:default;\n `;\n img.addEventListener('click', (e) => e.stopPropagation());\n\n const caption = document.createElement('div');\n caption.textContent = name;\n caption.style.cssText = `color:rgba(255,255,255,0.7);font-size:0.875rem;font-family:inherit;`;\n\n // action buttons row — positioned top-right next to close button\n const actions = document.createElement('div');\n actions.style.cssText = `\n position:fixed;top:20px;right:72px;\n display:flex;gap:8px;align-items:center;\n `;\n actions.addEventListener('click', (e) => e.stopPropagation());\n\n const btnStyle = `\n display:inline-flex;align-items:center;justify-content:center;\n width:40px;height:40px;border-radius:50%;border:0;\n cursor:pointer;transition:opacity 0.15s;\n `;\n\n // Edit button\n const editBtn = document.createElement('button');\n editBtn.innerHTML = `<svg width=\"18\" height=\"18\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M11.5 2.5a1.414 1.414 0 012 2L5 13H3v-2L11.5 2.5z\"/></svg>`;\n editBtn.style.cssText = btnStyle + `background:#fff;color:#1e293b;`;\n editBtn.addEventListener('mouseenter', () => { editBtn.style.opacity = '0.85'; });\n editBtn.addEventListener('mouseleave', () => { editBtn.style.opacity = '1'; });\n editBtn.addEventListener('click', () => {\n const input = document.createElement('input');\n input.type = 'file';\n input.accept = this.accept ?? '';\n input.addEventListener('change', () => {\n if (input.files?.[0]) {\n this._replaceFile(index, input.files[0]);\n this._closeZoom();\n }\n });\n input.click();\n });\n\n // Delete button\n const deleteBtn = document.createElement('button');\n deleteBtn.innerHTML = `<svg width=\"18\" height=\"18\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polyline points=\"2 4 14 4\"/><path d=\"M5 4V2h6v2M6 7v5M10 7v5\"/><rect x=\"3\" y=\"4\" width=\"10\" height=\"10\" rx=\"1\"/></svg>`;\n deleteBtn.style.cssText = btnStyle + `background:#DC2626;color:#fff;`;\n deleteBtn.addEventListener('mouseenter', () => { deleteBtn.style.opacity = '0.85'; });\n deleteBtn.addEventListener('mouseleave', () => { deleteBtn.style.opacity = '1'; });\n deleteBtn.addEventListener('click', () => {\n this._remove(index);\n this._closeZoom();\n });\n\n actions.appendChild(editBtn);\n actions.appendChild(deleteBtn);\n\n // Close button\n const closeBtn = document.createElement('button');\n closeBtn.innerHTML = `<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\"><path d=\"M4 4l12 12M16 4L4 16\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"/></svg>`;\n closeBtn.style.cssText = `\n position:fixed;top:20px;right:20px;width:40px;height:40px;\n border-radius:50%;border:0;background:rgba(255,255,255,0.15);\n color:#fff;display:flex;align-items:center;justify-content:center;\n cursor:pointer;\n `;\n closeBtn.addEventListener('click', () => this._closeZoom());\n\n overlay.appendChild(img);\n overlay.appendChild(caption);\n overlay.appendChild(actions);\n overlay.appendChild(closeBtn);\n overlay.addEventListener('click', () => this._closeZoom());\n\n document.body.appendChild(overlay);\n this._zoomEl = overlay;\n document.addEventListener('keydown', this._onZoomKey);\n }\n\n private _replaceFile(index: number, newFile: File) {\n if (!this._accepts(newFile)) { this._reject(newFile, 'type'); return; }\n if (this.maxSize != null && newFile.size > this.maxSize) { this._reject(newFile, 'max-size'); return; }\n const old = this.files[index];\n if (old) {\n const key = `${old.name}:${old.size}:${old.lastModified}`;\n const url = this._previews.get(key);\n if (url) { URL.revokeObjectURL(url); this._previews.delete(key); }\n }\n const next = [...this.files];\n next[index] = newFile;\n this.files = next;\n this._refreshPreviews();\n this.dispatchEvent(new CustomEvent('arvea-files-change', { detail: { files: this.files }, bubbles: true, composed: true }));\n }\n\n private _closeZoom() {\n if (this._zoomEl) {\n this._zoomEl.remove();\n this._zoomEl = null;\n }\n document.removeEventListener('keydown', this._onZoomKey);\n }\n\n private _onZoomKey = (e: KeyboardEvent) => {\n if (e.key === 'Escape') this._closeZoom();\n };\n\n // Single-select image pickers (avatars, product photos) read better as one big\n // preview replacing the dropzone than as a 36px thumbnail in a file-list row.\n // Multi-file mode, and single-file-but-non-image mode, keep the list treatment.\n private _singleImagePreview(): { url: string; alt: string; onRemove: () => void } | undefined {\n if (this.multiple || this.files.length !== 1 || !this.showPreview) return undefined;\n const file = this.files[0]!;\n if (!file.type.startsWith('image/')) return undefined;\n const key = `${file.name}:${file.size}:${file.lastModified}`;\n const url = this._previews.get(key);\n return url ? { url, alt: file.name, onRemove: () => this._remove(0) } : undefined;\n }\n\n private _removeExisting() {\n this.existingImageUrl = undefined;\n this.dispatchEvent(\n new CustomEvent('arvea-existing-remove', { bubbles: true, composed: true }),\n );\n }\n\n // A newly picked file always wins over the existing remote image — once the\n // user selects something, that's what will actually get uploaded.\n private _boxPreview(): { url: string; alt: string; onRemove: () => void } | undefined {\n const picked = this._singleImagePreview();\n if (picked) return picked;\n if (!this.multiple && this.files.length === 0 && this.existingImageUrl) {\n return { url: this.existingImageUrl, alt: '', onRemove: () => this._removeExisting() };\n }\n return undefined;\n }\n\n render() {\n const boxPreview = this._boxPreview();\n\n return html`\n <div part=\"base\" class=\"field\">\n <div\n part=\"dropzone\"\n class=\"dropzone ${boxPreview ? 'dropzone--has-image' : ''}\"\n ?data-active=${this._dragActive}\n @click=${this._open}\n @dragover=${this._onDragOver}\n @dragleave=${this._onDragLeave}\n @drop=${this._onDrop}\n >\n <input\n type=\"file\"\n accept=${this.accept ?? ''}\n ?multiple=${this.multiple}\n ?disabled=${this.disabled}\n @change=${this._onSelect}\n />\n ${boxPreview\n ? this._renderBoxImage(boxPreview.url, boxPreview.alt, boxPreview.onRemove)\n : html`\n <svg\n width=\"32\"\n height=\"32\"\n viewBox=\"0 0 32 32\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n >\n <path\n d=\"M16 22V8m0 0l-5 5m5-5l5 5\"\n stroke=\"currentColor\"\n stroke-width=\"1.6\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M6 22v2a2 2 0 002 2h16a2 2 0 002-2v-2\"\n stroke=\"currentColor\"\n stroke-width=\"1.6\"\n stroke-linecap=\"round\"\n />\n </svg>\n <div part=\"label\" class=\"label\">${this.label}</div>\n <div part=\"description\" class=\"description\">\n ${this.description}\n ${this.accept\n ? html` · <span>${this.accept}</span>`\n : nothing}\n ${this.maxSize\n ? html` · max ${formatBytes(this.maxSize)}`\n : nothing}\n </div>\n `}\n </div>\n\n ${!boxPreview && this.files.length > 0\n ? html`<ul part=\"list\" class=\"list\">\n ${this.files.map((f, i) => this._renderFile(f, i))}\n </ul>`\n : nothing}\n </div>\n `;\n }\n\n private _renderBoxImage(url: string, alt: string, onRemove: () => void) {\n const pct = alt ? this.progress[alt] : undefined;\n return html`\n <img class=\"dropzone-image\" src=${url} alt=${alt} />\n <div class=\"dropzone-overlay\">\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 32 32\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n >\n <path\n d=\"M16 22V8m0 0l-5 5m5-5l5 5\"\n stroke=\"currentColor\"\n stroke-width=\"1.6\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M6 22v2a2 2 0 002 2h16a2 2 0 002-2v-2\"\n stroke=\"currentColor\"\n stroke-width=\"1.6\"\n stroke-linecap=\"round\"\n />\n </svg>\n <span>Drag and drop or click to replace</span>\n </div>\n <button\n type=\"button\"\n class=\"dropzone-remove\"\n aria-label=\"Remove image\"\n @click=${(e: Event) => {\n e.stopPropagation();\n onRemove();\n }}\n >\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M4 4l8 8M12 4l-8 8\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" />\n </svg>\n </button>\n ${pct != null\n ? html`<div class=\"dropzone-progress\">\n <div class=\"progress-bar\" style=${`width:${Math.max(0, Math.min(100, pct))}%`}></div>\n </div>`\n : nothing}\n `;\n }\n\n private _renderFile(f: File, i: number) {\n const key = `${f.name}:${f.size}:${f.lastModified}`;\n const previewUrl =\n this.showPreview && f.type.startsWith('image/')\n ? this._previews.get(key)\n : undefined;\n const pct = this.progress[f.name];\n return html`\n <li class=\"list-item\">\n ${previewUrl\n ? html`<img\n class=\"preview preview--zoomable\"\n src=${previewUrl}\n alt=${f.name}\n title=\"Click to zoom\"\n @click=${(e: Event) => { e.stopPropagation(); this._openZoom(previewUrl, f.name, i); }}\n />`\n : html`<span class=\"file-icon\">\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M6 2h6l4 4v10a2 2 0 01-2 2H6a2 2 0 01-2-2V4a2 2 0 012-2z\"\n stroke=\"currentColor\"\n stroke-width=\"1.4\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M12 2v4h4\"\n stroke=\"currentColor\"\n stroke-width=\"1.4\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </span>`}\n <div class=\"file-meta\">\n <div class=\"file-name\" title=${f.name}>${f.name}</div>\n <div class=\"file-size\">${formatBytes(f.size)}</div>\n ${pct != null\n ? html`<div class=\"progress\">\n <div\n class=\"progress-bar\"\n style=${`width:${Math.max(0, Math.min(100, pct))}%`}\n ></div>\n </div>`\n : nothing}\n </div>\n <button\n type=\"button\"\n class=\"remove\"\n aria-label=\"Remove ${f.name}\"\n @click=${(e: Event) => {\n e.stopPropagation();\n this._remove(i);\n }}\n >\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M4 4l8 8M12 4l-8 8\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n />\n </svg>\n </button>\n </li>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'arvea-file-upload': ArveaFileUpload;\n }\n}\n","import { css } from 'lit';\nimport { tokenStyles } from '../../tokens/tokens.styles';\n\nexport const arveaImageStyles = [\n tokenStyles,\n css`\n :host {\n display: inline-block;\n }\n\n .wrapper {\n position: relative;\n display: inline-flex;\n overflow: hidden;\n border-radius: var(--image-radius, 0px);\n background: var(--colors-slate-100, #f1f5f9);\n line-height: 0;\n }\n\n img {\n display: block;\n width: var(--image-width, 100%);\n height: var(--image-height, auto);\n object-fit: var(--image-fit, cover);\n border-radius: inherit;\n transition: transform 0.2s ease;\n }\n\n :host([zoomable]) .wrapper {\n cursor: zoom-in;\n }\n\n :host([zoomable]) .wrapper:hover img {\n transform: scale(1.04);\n }\n\n :host([zoomable]) .wrapper:hover .zoom-hint {\n opacity: 1;\n }\n\n .zoom-hint {\n position: absolute;\n inset: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n opacity: 0;\n transition: opacity 0.2s ease;\n background: rgba(0, 0, 0, 0.28);\n border-radius: inherit;\n pointer-events: none;\n color: #ffffff;\n }\n\n .zoom-hint svg {\n filter: drop-shadow(0 2px 4px rgba(0,0,0,0.4));\n }\n\n .caption {\n display: block;\n margin-top: 6px;\n font-size: 0.8125rem;\n color: var(--colors-slate-500, #64748b);\n text-align: center;\n line-height: 1.4;\n }\n `,\n];\n","import { LitElement, html, nothing, svg } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { styleMap } from 'lit/directives/style-map.js';\nimport { arveaImageStyles } from './arvea-image.styles';\nimport type { ArveaImageFit } from './arvea-image.types';\n\n/**\n * @element arvea-image\n *\n * Displays an image with an optional click-to-zoom lightbox.\n *\n * @prop {string} src - Image URL\n * @prop {string} alt - Alt text\n * @prop {string} width - CSS width of the image (e.g. \"320px\", \"100%\")\n * @prop {string} height - CSS height of the image (e.g. \"200px\")\n * @prop {ArveaImageFit} fit - object-fit value (cover | contain | fill | none)\n * @prop {string} radius - Border radius (e.g. \"8px\", \"50%\")\n * @prop {boolean} zoomable - Enable click-to-zoom lightbox (default true)\n * @prop {string} caption - Optional caption shown below the image\n */\n@customElement('arvea-image')\nexport class ArveaImage extends LitElement {\n static styles = arveaImageStyles;\n\n @property({ type: String }) src = '';\n @property({ type: String }) alt = '';\n @property({ type: String }) width = '';\n @property({ type: String }) height = '';\n @property({ type: String }) fit: ArveaImageFit = 'cover';\n @property({ type: String }) radius = '';\n @property({ type: Boolean, reflect: true }) zoomable = true;\n @property({ type: String }) caption = '';\n\n private _lightboxEl: HTMLDivElement | null = null;\n\n disconnectedCallback() {\n super.disconnectedCallback();\n this._closeLightbox();\n }\n\n private _openLightbox() {\n if (!this.zoomable || !this.src) return;\n this._closeLightbox();\n\n const overlay = document.createElement('div');\n overlay.style.cssText = `\n position:fixed;inset:0;z-index:9999;\n background:rgba(0,0,0,0.9);\n display:flex;flex-direction:column;\n align-items:center;justify-content:center;gap:16px;\n cursor:zoom-out;\n animation: arvea-fade-in 0.18s ease;\n `;\n\n const style = document.createElement('style');\n style.textContent = `@keyframes arvea-fade-in { from { opacity:0 } to { opacity:1 } }`;\n overlay.appendChild(style);\n\n const img = document.createElement('img');\n img.src = this.src;\n img.alt = this.alt;\n img.style.cssText = `\n max-width:90vw;max-height:82vh;\n object-fit:contain;\n border-radius:6px;\n box-shadow:0 32px 80px rgba(0,0,0,0.7);\n cursor:default;\n animation: arvea-zoom-in 0.18s ease;\n `;\n style.textContent += `@keyframes arvea-zoom-in { from { transform:scale(0.93);opacity:0 } to { transform:scale(1);opacity:1 } }`;\n img.addEventListener('click', (e) => e.stopPropagation());\n\n if (this.caption) {\n const caption = document.createElement('p');\n caption.textContent = this.caption;\n caption.style.cssText = `\n margin:0;color:rgba(255,255,255,0.65);\n font-size:0.875rem;font-family:inherit;text-align:center;\n `;\n overlay.appendChild(img);\n overlay.appendChild(caption);\n } else {\n overlay.appendChild(img);\n }\n\n const closeBtn = document.createElement('button');\n closeBtn.setAttribute('aria-label', 'Close');\n closeBtn.innerHTML = `<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\"><path d=\"M3 3l12 12M15 3L3 15\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"/></svg>`;\n closeBtn.style.cssText = `\n position:fixed;top:18px;right:18px;\n width:38px;height:38px;border-radius:50%;border:0;\n background:rgba(255,255,255,0.12);color:#fff;\n display:flex;align-items:center;justify-content:center;\n cursor:pointer;transition:background 0.15s;\n `;\n closeBtn.addEventListener('mouseenter', () => { closeBtn.style.background = 'rgba(255,255,255,0.25)'; });\n closeBtn.addEventListener('mouseleave', () => { closeBtn.style.background = 'rgba(255,255,255,0.12)'; });\n closeBtn.addEventListener('click', (e) => { e.stopPropagation(); this._closeLightbox(); });\n\n overlay.appendChild(closeBtn);\n overlay.addEventListener('click', () => this._closeLightbox());\n\n document.body.appendChild(overlay);\n this._lightboxEl = overlay;\n document.addEventListener('keydown', this._onKey);\n }\n\n private _closeLightbox() {\n this._lightboxEl?.remove();\n this._lightboxEl = null;\n document.removeEventListener('keydown', this._onKey);\n }\n\n private _onKey = (e: KeyboardEvent) => {\n if (e.key === 'Escape') this._closeLightbox();\n };\n\n render() {\n const wrapperStyle = styleMap({\n ...(this.width ? { width: this.width } : {}),\n ...(this.height ? { height: this.height } : {}),\n ...(this.radius ? { borderRadius: this.radius } : {}),\n });\n\n const imgStyle = styleMap({\n objectFit: this.fit,\n ...(this.width ? { width: this.width } : {}),\n ...(this.height ? { height: this.height } : {}),\n });\n\n return html`\n <div\n part=\"wrapper\"\n class=\"wrapper\"\n style=${wrapperStyle}\n @click=${this._openLightbox}\n >\n <img part=\"image\" src=${this.src} alt=${this.alt} style=${imgStyle} />\n ${this.zoomable\n ? html`\n <span part=\"zoom-hint\" class=\"zoom-hint\" aria-hidden=\"true\">\n ${svg`<svg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\">\n <circle cx=\"14\" cy=\"14\" r=\"8\" stroke=\"white\" stroke-width=\"2\"/>\n <path d=\"M20 20l5 5\" stroke=\"white\" stroke-width=\"2\" stroke-linecap=\"round\"/>\n <path d=\"M11 14h6M14 11v6\" stroke=\"white\" stroke-width=\"2\" stroke-linecap=\"round\"/>\n </svg>`}\n </span>\n `\n : nothing}\n </div>\n ${this.caption\n ? html`<span part=\"caption\" class=\"caption\">${this.caption}</span>`\n : nothing}\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'arvea-image': ArveaImage;\n }\n}\n","import { css } from 'lit';\nimport { tokenStyles } from '../../tokens/tokens.styles';\n\nexport const arveaDatePickerStyles = [\n tokenStyles,\n css`\n :host {\n display: block;\n font-family: inherit;\n position: relative;\n width: 100%;\n }\n\n .field {\n display: flex;\n flex-direction: column;\n gap: 6px;\n }\n\n .label {\n font-size: var(--input-label-size);\n font-weight: var(--input-label-weight);\n color: var(--input-label-color);\n }\n\n .trigger {\n position: relative;\n display: flex;\n align-items: center;\n cursor: pointer;\n }\n\n .trigger input {\n width: 100%;\n box-sizing: border-box;\n height: var(--input-height, 38px);\n padding: 0 36px 0 12px;\n font: inherit;\n color: inherit;\n background: var(--input-bg, #fff);\n border: 1px solid var(--input-border, #e2e8f0);\n border-radius: var(--input-radius, 6px);\n cursor: pointer;\n }\n .trigger input:focus-visible {\n outline: none;\n border-color: var(--input-border-focus, #3b82f6);\n box-shadow: var(--input-shadow-focus);\n }\n .trigger input::placeholder {\n color: var(--input-placeholder);\n }\n :host([invalid]) .trigger input {\n border-color: var(--select-border-invalid, #ef4444);\n }\n :host([disabled]) .trigger input {\n cursor: not-allowed;\n background: var(--input-bg-disabled, #f1f5f9);\n }\n\n .icon {\n position: absolute;\n right: 10px;\n top: 50%;\n transform: translateY(-50%);\n pointer-events: none;\n color: var(--colors-slate-500, #64748b);\n }\n\n .popup {\n position: absolute;\n top: calc(100% + 4px);\n left: 0;\n z-index: var(--popover-z, 9999);\n background: #fff;\n border: 1px solid var(--colors-slate-200, #e2e8f0);\n border-radius: 10px;\n box-shadow: 0 12px 32px rgba(15, 23, 42, 0.18);\n padding: 12px;\n display: none;\n min-width: 280px;\n }\n :host([data-flip-up]) .popup {\n top: auto;\n bottom: calc(100% + 4px);\n }\n :host([open]) .popup {\n display: block;\n }\n\n .calendar-head {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: 6px;\n gap: 6px;\n }\n\n .month-label {\n font-weight: 600;\n font-size: 0.9375rem;\n background: transparent;\n border: 0;\n padding: 4px 8px;\n border-radius: 6px;\n cursor: pointer;\n color: inherit;\n font-family: inherit;\n }\n .month-label:hover:not(:disabled) {\n background: var(--colors-slate-100, #f1f5f9);\n }\n .month-label:disabled {\n cursor: default;\n }\n\n .nav-btn {\n background: transparent;\n border: 0;\n padding: 4px;\n border-radius: 6px;\n cursor: pointer;\n color: var(--colors-slate-600, #475569);\n }\n .nav-btn:hover {\n background: var(--colors-slate-100, #f1f5f9);\n color: var(--colors-slate-900, #0f172a);\n }\n\n .grid {\n display: grid;\n grid-template-columns: repeat(7, var(--datepicker-cell-size, 36px));\n gap: 2px;\n text-align: center;\n }\n\n .dow {\n font-size: 0.7rem;\n font-weight: 600;\n color: var(--colors-slate-500, #64748b);\n text-transform: uppercase;\n padding: 4px 0;\n }\n\n .day {\n height: var(--datepicker-cell-size, 36px);\n border: 0;\n background: transparent;\n border-radius: var(--datepicker-cell-radius, 6px);\n font: inherit;\n cursor: pointer;\n color: var(--colors-slate-800, #1e293b);\n }\n .day:hover:not(:disabled) {\n background: var(--colors-slate-100, #f1f5f9);\n color: var(--colors-slate-900, #0f172a);\n }\n .day.muted {\n color: var(--colors-slate-400, #94a3b8);\n }\n .day.today {\n box-shadow: inset 0 0 0 1px\n var(--datepicker-today-ring, var(--colors-arvea-600, #217B80));\n }\n .day.selected {\n background: var(\n --datepicker-selected-bg,\n var(--colors-arvea-600, #217B80)\n );\n color: #fff;\n }\n .day.in-range {\n background: var(--datepicker-range-bg, #F1F5F9);\n color: var(--colors-slate-800, #1e293b);\n border-radius: 0;\n }\n .day:disabled {\n opacity: 0.4;\n cursor: not-allowed;\n }\n\n .month-grid,\n .year-grid {\n display: grid;\n grid-template-columns: repeat(3, 1fr);\n gap: 6px;\n padding: 4px 0;\n }\n\n .cell {\n height: 40px;\n border: 0;\n background: transparent;\n border-radius: var(--datepicker-cell-radius, 6px);\n font: inherit;\n cursor: pointer;\n color: var(--colors-slate-800, #1e293b);\n }\n .cell:hover:not(:disabled) {\n background: var(--colors-slate-100, #f1f5f9);\n color: var(--colors-slate-900, #0f172a);\n }\n .cell.today {\n box-shadow: inset 0 0 0 1px\n var(--datepicker-today-ring, var(--colors-arvea-600, #217B80));\n }\n .cell.selected {\n background: var(\n --datepicker-selected-bg,\n var(--colors-arvea-600, #217B80)\n );\n color: #fff;\n }\n .cell:disabled {\n opacity: 0.4;\n cursor: not-allowed;\n }\n\n .hint {\n font-size: var(--input-hint-size);\n color: var(--input-hint-color);\n }\n :host([invalid]) .hint {\n color: var(--input-hint-color-invalid);\n }\n `,\n];\n","import { LitElement, html, nothing } from 'lit';\nimport { customElement, property, query, state } from 'lit/decorators.js';\nimport { arveaDatePickerStyles } from './arvea-date-picker.styles';\nimport type {\n ArveaDatePickerMode,\n ArveaDatePickerValue,\n ArveaDateRange,\n} from './arvea-date-picker.types';\n\nconst toISO = (d: Date): string => {\n const y = d.getFullYear();\n const m = String(d.getMonth() + 1).padStart(2, '0');\n const day = String(d.getDate()).padStart(2, '0');\n return `${y}-${m}-${day}`;\n};\n\nconst parseISO = (s?: string | null): Date | null => {\n if (!s) return null;\n const m = /^(\\d{4})-(\\d{2})-(\\d{2})$/.exec(s);\n if (!m) return null;\n const d = new Date(Number(m[1]), Number(m[2]) - 1, Number(m[3]));\n return Number.isNaN(d.getTime()) ? null : d;\n};\n\nconst sameDay = (a: Date, b: Date) =>\n a.getFullYear() === b.getFullYear() &&\n a.getMonth() === b.getMonth() &&\n a.getDate() === b.getDate();\n\nconst startOfMonth = (d: Date) => new Date(d.getFullYear(), d.getMonth(), 1);\nconst addMonths = (d: Date, n: number) =>\n new Date(d.getFullYear(), d.getMonth() + n, 1);\nconst addYears = (d: Date, n: number) =>\n new Date(d.getFullYear() + n, d.getMonth(), 1);\n\nconst YEAR_GRID_SIZE = 12;\n\ntype ArveaDatePickerViewLevel = 'days' | 'months' | 'years';\n\n/**\n * @element arvea-date-picker\n *\n * Single-date or range date picker. ISO-8601 (YYYY-MM-DD) strings on the wire,\n * localized labels in the calendar via Intl.\n *\n * @fires arvea-date-change { value }\n */\n@customElement('arvea-date-picker')\nexport class ArveaDatePicker extends LitElement {\n static styles = arveaDatePickerStyles;\n\n @property({ type: String }) label = '';\n @property({ type: Boolean, attribute: 'hide-label' }) hideLabel = false;\n @property({ attribute: false }) value?: ArveaDatePickerValue;\n @property({ type: String, reflect: true }) mode: ArveaDatePickerMode = 'single';\n @property({ type: String }) min?: string;\n @property({ type: String }) max?: string;\n @property({ type: Boolean, reflect: true }) disabled = false;\n @property({ type: Boolean, reflect: true }) required = false;\n @property({ type: Boolean, reflect: true }) invalid = false;\n @property({ type: String }) locale?: string;\n @property({ type: Number, attribute: 'first-day-of-week' })\n firstDayOfWeek = 1;\n @property({ type: String }) format?: string;\n @property({ type: String }) placeholder = 'Select date';\n @property({ type: String, attribute: 'validation-hint' })\n validationHint = '';\n @property({ attribute: false }) disabledDates?: (d: Date) => boolean;\n @property({ type: Boolean, reflect: true }) open = false;\n @property({ type: Boolean, attribute: 'close-on-select' }) closeOnSelect = false;\n\n @state() private _viewMonth: Date = startOfMonth(new Date());\n @state() private _viewLevel: ArveaDatePickerViewLevel = 'days';\n @state() private _rangeAnchor: Date | null = null;\n @state() private _hoverDate: Date | null = null;\n\n @query('.popup') private _popup?: HTMLDivElement;\n\n private _onDocPointer = (e: PointerEvent) => {\n if (!this.open) return;\n const path = e.composedPath();\n if (path.includes(this)) return;\n this._close();\n };\n\n private _onWinResize = () => {\n if (this.open) this._positionPopup();\n };\n\n connectedCallback() {\n super.connectedCallback();\n document.addEventListener('pointerdown', this._onDocPointer);\n window.addEventListener('resize', this._onWinResize);\n window.addEventListener('scroll', this._onWinResize, true);\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n document.removeEventListener('pointerdown', this._onDocPointer);\n window.removeEventListener('resize', this._onWinResize);\n window.removeEventListener('scroll', this._onWinResize, true);\n }\n\n updated(changed: Map<string, unknown>) {\n if (changed.has('open') && this.open) {\n queueMicrotask(() => this._positionPopup());\n }\n if (changed.has('value') && this.value) {\n const ref = this._refDate();\n if (ref) this._viewMonth = startOfMonth(ref);\n }\n }\n\n private _refDate(): Date | null {\n if (!this.value) return null;\n if (this.mode === 'range') {\n const v = this.value as ArveaDateRange;\n return parseISO(v.from) ?? parseISO(v.to);\n }\n return parseISO(this.value as string);\n }\n\n private _open() {\n if (this.disabled) return;\n this.open = true;\n }\n\n private _close() {\n if (this.open) this.open = false;\n this._viewLevel = 'days';\n }\n\n private _positionPopup() {\n const popup = this._popup;\n const trigger = this.shadowRoot?.querySelector(\n '.trigger',\n ) as HTMLElement | null;\n if (!popup || !trigger) return;\n const rect = trigger.getBoundingClientRect();\n const popupHeight = popup.offsetHeight || 320;\n const spaceBelow = window.innerHeight - rect.bottom;\n if (spaceBelow < popupHeight + 12 && rect.top > popupHeight + 12) {\n this.setAttribute('data-flip-up', '');\n } else {\n this.removeAttribute('data-flip-up');\n }\n }\n\n private get _localeFormatter(): Intl.DateTimeFormat {\n return new Intl.DateTimeFormat(this.locale ?? undefined, {\n year: 'numeric',\n month: 'short',\n day: 'numeric',\n });\n }\n\n private _formatValue(): string {\n if (!this.value) return '';\n if (this.mode === 'range') {\n const v = this.value as ArveaDateRange;\n const a = parseISO(v.from);\n const b = parseISO(v.to);\n const fmt = this._localeFormatter;\n if (a && b) return `${fmt.format(a)} – ${fmt.format(b)}`;\n if (a) return fmt.format(a);\n return '';\n }\n const d = parseISO(this.value as string);\n return d ? this._localeFormatter.format(d) : '';\n }\n\n private _isDisabled(d: Date): boolean {\n const iso = toISO(d);\n if (this.min && iso < this.min) return true;\n if (this.max && iso > this.max) return true;\n if (this.disabledDates && this.disabledDates(d)) return true;\n return false;\n }\n\n private _isMonthDisabled(year: number, month: number): boolean {\n const first = new Date(year, month, 1);\n const last = new Date(year, month + 1, 0);\n if (this.min && toISO(last) < this.min) return true;\n if (this.max && toISO(first) > this.max) return true;\n return false;\n }\n\n private _isYearDisabled(year: number): boolean {\n const first = new Date(year, 0, 1);\n const last = new Date(year, 11, 31);\n if (this.min && toISO(last) < this.min) return true;\n if (this.max && toISO(first) > this.max) return true;\n return false;\n }\n\n private _selected(d: Date): { selected: boolean; inRange: boolean } {\n if (this.mode === 'range') {\n const v = (this.value as ArveaDateRange) ?? {};\n const a = parseISO(v.from);\n const b = parseISO(v.to);\n\n let inRange = false;\n\n if (a && b) {\n // Confirmed range\n const min = a <= b ? a : b;\n const max = a <= b ? b : a;\n inRange = d > min && d < max;\n } else if (a && !b && this._hoverDate) {\n // Hover preview: anchor set, no end date yet\n const min = a <= this._hoverDate ? a : this._hoverDate;\n const max = a <= this._hoverDate ? this._hoverDate : a;\n inRange = d > min && d < max;\n }\n\n const hoverEndSelected =\n !!a && !b && !!this._hoverDate && sameDay(d, this._hoverDate);\n const selected =\n (!!a && sameDay(d, a)) || (!!b && sameDay(d, b)) || hoverEndSelected;\n\n return { selected, inRange };\n }\n const v = parseISO(this.value as string);\n return { selected: !!v && sameDay(d, v), inRange: false };\n }\n\n private _pick(d: Date) {\n if (this._isDisabled(d)) return;\n if (this.mode === 'single') {\n this.value = toISO(d);\n this._emit();\n if (this.closeOnSelect) this._close();\n return;\n }\n // range\n if (!this._rangeAnchor) {\n this._rangeAnchor = d;\n this.value = { from: toISO(d) };\n } else {\n const a = this._rangeAnchor;\n const from = a <= d ? a : d;\n const to = a <= d ? d : a;\n this.value = { from: toISO(from), to: toISO(to) };\n this._rangeAnchor = null;\n this._hoverDate = null;\n this._emit();\n if (this.closeOnSelect) this._close();\n }\n }\n\n private _emit() {\n this.dispatchEvent(new Event('input', { bubbles: true, composed: true }));\n this.dispatchEvent(new Event('change', { bubbles: true, composed: true }));\n this.dispatchEvent(\n new CustomEvent('arvea-date-change', {\n detail: { value: this.value },\n bubbles: true,\n composed: true,\n }),\n );\n }\n\n private _headerLabel(): string {\n const view = this._viewMonth;\n if (this._viewLevel === 'months') {\n return new Intl.DateTimeFormat(this.locale ?? undefined, {\n year: 'numeric',\n }).format(view);\n }\n if (this._viewLevel === 'years') {\n const start = this._yearGridStart();\n return `${start} – ${start + YEAR_GRID_SIZE - 1}`;\n }\n return new Intl.DateTimeFormat(this.locale ?? undefined, {\n month: 'long',\n year: 'numeric',\n }).format(view);\n }\n\n private _yearGridStart(): number {\n const year = this._viewMonth.getFullYear();\n return Math.floor(year / YEAR_GRID_SIZE) * YEAR_GRID_SIZE;\n }\n\n private _navPrev() {\n if (this._viewLevel === 'months') {\n this._viewMonth = addYears(this._viewMonth, -1);\n } else if (this._viewLevel === 'years') {\n this._viewMonth = addYears(this._viewMonth, -YEAR_GRID_SIZE);\n } else {\n this._viewMonth = addMonths(this._viewMonth, -1);\n }\n }\n\n private _navNext() {\n if (this._viewLevel === 'months') {\n this._viewMonth = addYears(this._viewMonth, 1);\n } else if (this._viewLevel === 'years') {\n this._viewMonth = addYears(this._viewMonth, YEAR_GRID_SIZE);\n } else {\n this._viewMonth = addMonths(this._viewMonth, 1);\n }\n }\n\n private _headerLabelClick() {\n if (this._viewLevel === 'days') this._viewLevel = 'months';\n else if (this._viewLevel === 'months') this._viewLevel = 'years';\n }\n\n private _renderHeader() {\n const navLabel =\n this._viewLevel === 'months'\n ? 'year'\n : this._viewLevel === 'years'\n ? `${YEAR_GRID_SIZE} years`\n : 'month';\n\n return html`\n <div part=\"calendar-head\" class=\"calendar-head\">\n <button\n type=\"button\"\n class=\"nav-btn\"\n aria-label=\"Previous ${navLabel}\"\n @click=${() => this._navPrev()}\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n <path\n d=\"M10 4l-4 4 4 4\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </button>\n <button\n type=\"button\"\n part=\"month-label\"\n class=\"month-label\"\n ?disabled=${this._viewLevel === 'years'}\n @click=${() => this._headerLabelClick()}\n >\n ${this._headerLabel()}\n </button>\n <button\n type=\"button\"\n class=\"nav-btn\"\n aria-label=\"Next ${navLabel}\"\n @click=${() => this._navNext()}\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n <path\n d=\"M6 4l4 4-4 4\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </button>\n </div>\n `;\n }\n\n private _renderDays() {\n const view = this._viewMonth;\n const dow: string[] = [];\n const ref = new Date(2024, 0, 7); // a known Sunday for reliable rotation\n const fmtDow = new Intl.DateTimeFormat(this.locale ?? undefined, {\n weekday: 'short',\n });\n for (let i = 0; i < 7; i++) {\n const day = new Date(ref);\n day.setDate(ref.getDate() + i + this.firstDayOfWeek);\n dow.push(fmtDow.format(day));\n }\n\n const first = startOfMonth(view);\n const firstDay = first.getDay();\n const leading = (firstDay - this.firstDayOfWeek + 7) % 7;\n const cells: Date[] = [];\n const start = new Date(first);\n start.setDate(start.getDate() - leading);\n for (let i = 0; i < 42; i++) {\n cells.push(new Date(start.getFullYear(), start.getMonth(), start.getDate() + i));\n }\n\n const today = new Date();\n const month = view.getMonth();\n\n return html`\n <div part=\"grid\" class=\"grid\">\n ${dow.map((d) => html`<div class=\"dow\">${d}</div>`)}\n ${cells.map((d) => {\n const { selected, inRange } = this._selected(d);\n const muted = d.getMonth() !== month;\n const isToday = sameDay(d, today);\n const disabled = this._isDisabled(d);\n const cls = [\n 'day',\n muted ? 'muted' : '',\n isToday ? 'today' : '',\n selected ? 'selected' : '',\n inRange ? 'in-range' : '',\n ]\n .filter(Boolean)\n .join(' ');\n return html`<button\n type=\"button\"\n class=${cls}\n ?disabled=${disabled}\n @click=${() => this._pick(d)}\n @mouseenter=${() => { if (this.mode === 'range' && this._rangeAnchor) this._hoverDate = d; }}\n @mouseleave=${() => { this._hoverDate = null; }}\n >\n ${d.getDate()}\n </button>`;\n })}\n </div>\n `;\n }\n\n private _renderMonths() {\n const view = this._viewMonth;\n const year = view.getFullYear();\n const currentMonth = view.getMonth();\n const today = new Date();\n const fmtMonth = new Intl.DateTimeFormat(this.locale ?? undefined, {\n month: 'short',\n });\n\n const months = Array.from({ length: 12 }, (_, i) => i);\n\n return html`\n <div part=\"month-grid\" class=\"month-grid\">\n ${months.map((m) => {\n const disabled = this._isMonthDisabled(year, m);\n const isCurrent = m === currentMonth;\n const isToday = year === today.getFullYear() && m === today.getMonth();\n const cls = [\n 'cell',\n isCurrent ? 'selected' : '',\n isToday ? 'today' : '',\n ]\n .filter(Boolean)\n .join(' ');\n return html`<button\n type=\"button\"\n class=${cls}\n ?disabled=${disabled}\n @click=${() => {\n this._viewMonth = new Date(year, m, 1);\n this._viewLevel = 'days';\n }}\n >\n ${fmtMonth.format(new Date(year, m, 1))}\n </button>`;\n })}\n </div>\n `;\n }\n\n private _renderYears() {\n const view = this._viewMonth;\n const currentYear = view.getFullYear();\n const currentMonth = view.getMonth();\n const today = new Date();\n const start = this._yearGridStart();\n const years = Array.from({ length: YEAR_GRID_SIZE }, (_, i) => start + i);\n\n return html`\n <div part=\"year-grid\" class=\"year-grid\">\n ${years.map((y) => {\n const disabled = this._isYearDisabled(y);\n const isCurrent = y === currentYear;\n const isToday = y === today.getFullYear();\n const cls = [\n 'cell',\n isCurrent ? 'selected' : '',\n isToday ? 'today' : '',\n ]\n .filter(Boolean)\n .join(' ');\n return html`<button\n type=\"button\"\n class=${cls}\n ?disabled=${disabled}\n @click=${() => {\n this._viewMonth = new Date(y, currentMonth, 1);\n this._viewLevel = 'months';\n }}\n >\n ${y}\n </button>`;\n })}\n </div>\n `;\n }\n\n private _renderCalendar() {\n return html`\n ${this._renderHeader()}\n ${this._viewLevel === 'months'\n ? this._renderMonths()\n : this._viewLevel === 'years'\n ? this._renderYears()\n : this._renderDays()}\n `;\n }\n\n render() {\n return html`\n <div part=\"base\" class=\"field\">\n ${this.label && !this.hideLabel\n ? html`<label part=\"label\" class=\"label\">${this.label}</label>`\n : nothing}\n <div part=\"trigger\" class=\"trigger\" @click=${() => this._open()}>\n <input\n type=\"text\"\n readonly\n placeholder=${this.placeholder}\n .value=${this._formatValue()}\n ?disabled=${this.disabled}\n aria-haspopup=\"dialog\"\n aria-expanded=${this.open ? 'true' : 'false'}\n />\n <span class=\"icon\" aria-hidden=\"true\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n <rect\n x=\"2\"\n y=\"3\"\n width=\"12\"\n height=\"11\"\n rx=\"2\"\n stroke=\"currentColor\"\n stroke-width=\"1.4\"\n />\n <path\n d=\"M2 6h12M5 2v3M11 2v3\"\n stroke=\"currentColor\"\n stroke-width=\"1.4\"\n stroke-linecap=\"round\"\n />\n </svg>\n </span>\n </div>\n ${this.validationHint\n ? html`<span part=\"hint\" class=\"hint\">${this.validationHint}</span>`\n : nothing}\n </div>\n <div part=\"popup\" class=\"popup\" role=\"dialog\" aria-label=\"Date picker\">\n ${this._renderCalendar()}\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'arvea-date-picker': ArveaDatePicker;\n }\n}\n","import { css } from 'lit';\nimport { tokenStyles } from '../../tokens/tokens.styles';\n\nexport const arveaTimeSelectStyles = [\n tokenStyles,\n css`\n :host {\n display: block;\n font-family: inherit;\n width: 100%;\n }\n\n .field {\n display: flex;\n flex-direction: column;\n gap: 6px;\n }\n\n .label {\n font-size: var(--input-label-size);\n font-weight: var(--input-label-weight);\n color: var(--input-label-color);\n }\n\n .segments {\n display: flex;\n align-items: center;\n gap: 4px;\n }\n\n .sep {\n font-weight: 600;\n color: var(--colors-slate-400, #94a3b8);\n }\n\n .segment {\n position: relative;\n flex: 1;\n min-width: 0;\n }\n\n .segment-trigger {\n width: 100%;\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 6px;\n height: var(--input-height, 38px);\n padding: 0 10px;\n font: inherit;\n color: inherit;\n background: var(--input-bg, #fff);\n border: 1px solid var(--input-border, #e2e8f0);\n border-radius: var(--input-radius, 6px);\n cursor: pointer;\n }\n .segment-trigger:hover:not(:disabled) {\n border-color: var(--input-border-hover, #cbd5e1);\n }\n .segment-trigger:focus-visible {\n outline: none;\n border-color: var(--input-border-focus, #3b82f6);\n box-shadow: var(--input-shadow-focus);\n }\n :host([invalid]) .segment-trigger {\n border-color: var(--select-border-invalid, #ef4444);\n }\n .segment-trigger:disabled {\n cursor: not-allowed;\n background: var(--input-bg-disabled, #f1f5f9);\n }\n\n .chevron {\n flex-shrink: 0;\n color: var(--colors-slate-500, #64748b);\n }\n\n .segment-popup {\n position: absolute;\n top: calc(100% + 4px);\n left: 0;\n right: 0;\n z-index: var(--popover-z, 9999);\n background: #fff;\n border: 1px solid var(--colors-slate-200, #e2e8f0);\n border-radius: 10px;\n box-shadow: 0 12px 32px rgba(15, 23, 42, 0.18);\n padding: 6px;\n max-height: 220px;\n overflow-y: auto;\n display: flex;\n flex-direction: column;\n }\n .segment-popup.flip-up {\n top: auto;\n bottom: calc(100% + 4px);\n }\n\n .option {\n display: block;\n width: 100%;\n box-sizing: border-box;\n flex-shrink: 0;\n height: 32px;\n border: 0;\n background: transparent;\n border-radius: var(--datepicker-cell-radius, 6px);\n font: inherit;\n text-align: center;\n cursor: pointer;\n color: var(--colors-slate-800, #1e293b);\n }\n .option:hover:not(:disabled) {\n background: var(--colors-slate-100, #f1f5f9);\n color: var(--colors-slate-900, #0f172a);\n }\n .option.selected {\n background: var(\n --datepicker-selected-bg,\n var(--colors-arvea-600, #217b80)\n );\n color: #fff;\n }\n .option:disabled {\n opacity: 0.4;\n cursor: not-allowed;\n }\n\n .hint {\n font-size: var(--input-hint-size);\n color: var(--input-hint-color);\n }\n :host([invalid]) .hint {\n color: var(--input-hint-color-invalid);\n }\n `,\n];\n","import { LitElement, html, nothing } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { arveaTimeSelectStyles } from './arvea-time-select.styles';\n\nconst pad = (n: number): string => String(n).padStart(2, '0');\n\ntype Segment = 'h' | 'm' | 's';\n\ninterface TimeParts {\n h: number;\n m: number;\n s: number;\n}\n\nconst parseTime = (value?: string | null): TimeParts | null => {\n if (!value) return null;\n const match = /^(\\d{2}):(\\d{2})(?::(\\d{2}))?$/.exec(value);\n if (!match) return null;\n const h = Number(match[1]);\n const m = Number(match[2]);\n const s = match[3] !== undefined ? Number(match[3]) : 0;\n if (h > 23 || m > 59 || s > 59) return null;\n return { h, m, s };\n};\n\nconst formatTime = (parts: TimeParts, showSeconds: boolean): string => {\n const out = [pad(parts.h), pad(parts.m)];\n if (showSeconds) out.push(pad(parts.s));\n return out.join(':');\n};\n\n// Pads a \"HH:mm\"/\"HH:mm:ss\" bound out to full \"HH:mm:ss\" so lexical string\n// comparison doubles as numeric time comparison.\nconst normalizeBound = (value: string): string => {\n const parts = parseTime(value);\n return parts ? formatTime(parts, true) : value;\n};\n\nconst range = (max: number, step: number): number[] => {\n const out: number[] = [];\n for (let i = 0; i <= max; i += step > 0 ? step : 1) out.push(i);\n return out;\n};\n\nconst SEGMENT_LABEL: Record<Segment, string> = { h: 'Hour', m: 'Minute', s: 'Second' };\n\n/**\n * @element arvea-time-select\n *\n * Time-of-day picker made of independent hour/minute/second selects — each\n * segment opens and closes its own dropdown, rather than one shared popup or\n * free typing. \"HH:mm\" (or \"HH:mm:ss\" with `show-seconds`) 24h strings on the wire.\n *\n * @fires arvea-time-change { value }\n */\n@customElement('arvea-time-select')\nexport class ArveaTimeSelect extends LitElement {\n static styles = arveaTimeSelectStyles;\n\n @property({ type: String }) label = '';\n @property({ type: Boolean, attribute: 'hide-label' }) hideLabel = false;\n @property({ type: String }) value = '';\n @property({ type: Boolean, attribute: 'show-seconds' }) showSeconds = false;\n @property({ type: Number, attribute: 'hour-step' }) hourStep = 1;\n @property({ type: Number, attribute: 'minute-step' }) minuteStep = 1;\n @property({ type: Number, attribute: 'second-step' }) secondStep = 1;\n @property({ type: String }) min?: string;\n @property({ type: String }) max?: string;\n @property({ type: Boolean, reflect: true }) disabled = false;\n @property({ type: Boolean, reflect: true }) required = false;\n @property({ type: Boolean, reflect: true }) invalid = false;\n @property({ type: String, attribute: 'validation-hint' })\n validationHint = '';\n\n // Only one segment's dropdown can be open at a time — opening another\n // segment implicitly closes whichever was open, same as native <select>s.\n @state() private _openSegment: Segment | null = null;\n @state() private _flipUp = false;\n\n private _onDocPointer = (e: PointerEvent) => {\n if (!this._openSegment) return;\n const path = e.composedPath();\n if (path.includes(this)) return;\n this._openSegment = null;\n };\n\n connectedCallback() {\n super.connectedCallback();\n document.addEventListener('pointerdown', this._onDocPointer);\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n document.removeEventListener('pointerdown', this._onDocPointer);\n }\n\n private _toggle(segment: Segment) {\n if (this.disabled) return;\n this._openSegment = this._openSegment === segment ? null : segment;\n if (this._openSegment) queueMicrotask(() => this._positionAndScroll());\n }\n\n private _positionAndScroll() {\n const popup = this.shadowRoot?.querySelector('.segment-popup') as HTMLElement | null;\n const trigger = popup?.parentElement?.querySelector('.segment-trigger') as HTMLElement | null;\n if (trigger && popup) {\n const rect = trigger.getBoundingClientRect();\n const popupHeight = popup.offsetHeight || 220;\n const spaceBelow = window.innerHeight - rect.bottom;\n this._flipUp = spaceBelow < popupHeight + 12 && rect.top > popupHeight + 12;\n }\n popup?.querySelector('.option.selected')?.scrollIntoView({ block: 'center' });\n }\n\n // Falls back to midnight for whichever segments haven't been picked yet, so\n // every segment always has concrete \"other two segments\" to validate against.\n private _current(): TimeParts {\n return parseTime(this.value) ?? { h: 0, m: 0, s: 0 };\n }\n\n // Segments finer than `segment` haven't been picked yet and default to 0 in\n // `parts`. Against `min`, 0 is the worst case for those — e.g. picking hour\n // 13 at 13:43 would otherwise look disabled because 13:00 < 13:43, even\n // though 13:43-13:59 are still open. Bump them to their max (59) so the min\n // check asks \"does *any* completion of this partial pick still work?\".\n private _bestCase(parts: TimeParts, segment: Segment): TimeParts {\n const order: Segment[] = ['h', 'm', 's'];\n const idx = order.indexOf(segment);\n return {\n h: parts.h,\n m: idx >= 1 ? parts.m : 59,\n s: idx >= 2 ? parts.s : 59,\n };\n }\n\n private _isDisabled(parts: TimeParts, segment: Segment): boolean {\n if (this.max && formatTime(parts, true) > normalizeBound(this.max)) return true;\n if (this.min) {\n const best = formatTime(this._bestCase(parts, segment), true);\n if (best < normalizeBound(this.min)) return true;\n }\n return false;\n }\n\n private _pick(segment: Segment, value: number) {\n const current = this._current();\n const next: TimeParts = { ...current, [segment]: value };\n if (this._isDisabled(next, segment)) return;\n this.value = formatTime(next, this.showSeconds);\n this._openSegment = null;\n this._emit();\n }\n\n private _emit() {\n this.dispatchEvent(new Event('input', { bubbles: true, composed: true }));\n this.dispatchEvent(new Event('change', { bubbles: true, composed: true }));\n this.dispatchEvent(\n new CustomEvent('arvea-time-change', {\n detail: { value: this.value },\n bubbles: true,\n composed: true,\n }),\n );\n }\n\n private _renderSegment(segment: Segment) {\n const label = SEGMENT_LABEL[segment];\n const max = segment === 'h' ? 23 : 59;\n const step = segment === 'h' ? this.hourStep : segment === 'm' ? this.minuteStep : this.secondStep;\n const parts = parseTime(this.value);\n const current = this._current();\n const isOpen = this._openSegment === segment;\n\n return html`\n <div class=\"segment\">\n <button\n type=\"button\"\n class=\"segment-trigger\"\n aria-label=${label}\n aria-haspopup=\"listbox\"\n aria-expanded=${isOpen ? 'true' : 'false'}\n ?disabled=${this.disabled}\n @click=${() => this._toggle(segment)}\n >\n <span>${parts ? pad(parts[segment]) : '--'}</span>\n <svg class=\"chevron\" width=\"10\" height=\"10\" viewBox=\"0 0 10 10\" fill=\"none\" aria-hidden=\"true\">\n <path\n d=\"M2 3.5l3 3 3-3\"\n stroke=\"currentColor\"\n stroke-width=\"1.3\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </button>\n ${isOpen\n ? html`\n <div\n class=\"segment-popup${this._flipUp ? ' flip-up' : ''}\"\n role=\"listbox\"\n aria-label=${label}\n >\n ${range(max, step).map((n) => {\n const isSelected = parts ? parts[segment] === n : false;\n const optDisabled = this._isDisabled({ ...current, [segment]: n }, segment);\n return html`<button\n type=\"button\"\n role=\"option\"\n aria-selected=${isSelected ? 'true' : 'false'}\n class=\"option${isSelected ? ' selected' : ''}\"\n ?disabled=${optDisabled}\n @click=${() => this._pick(segment, n)}\n >\n ${pad(n)}\n </button>`;\n })}\n </div>\n `\n : nothing}\n </div>\n `;\n }\n\n render() {\n return html`\n <div part=\"base\" class=\"field\">\n ${this.label && !this.hideLabel\n ? html`<label part=\"label\" class=\"label\">${this.label}</label>`\n : nothing}\n <div part=\"segments\" class=\"segments\">\n ${this._renderSegment('h')}\n <span class=\"sep\" aria-hidden=\"true\">:</span>\n ${this._renderSegment('m')}\n ${this.showSeconds\n ? html`<span class=\"sep\" aria-hidden=\"true\">:</span>${this._renderSegment('s')}`\n : nothing}\n </div>\n ${this.validationHint\n ? html`<span part=\"hint\" class=\"hint\">${this.validationHint}</span>`\n : nothing}\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'arvea-time-select': ArveaTimeSelect;\n }\n}\n","import { css } from 'lit';\nimport { tokenStyles } from '../../tokens/tokens.styles';\n\nexport const arveaTreeStyles = [\n tokenStyles,\n css`\n :host {\n display: block;\n font-family: inherit;\n font-size: 0.875rem;\n color: var(--colors-slate-800, #1e293b);\n }\n\n .tree,\n .group {\n list-style: none;\n margin: 0;\n padding: 0;\n }\n\n .group {\n padding-left: var(--tree-indent, 20px);\n }\n\n :host([show-line]) .group {\n border-left: 1px dashed var(--tree-line-color, var(--colors-slate-200, #e2e8f0));\n margin-left: 10px;\n padding-left: calc(var(--tree-indent, 20px) - 10px);\n }\n\n .node-row {\n display: flex;\n align-items: center;\n gap: 4px;\n padding: 4px 6px;\n border-radius: 6px;\n cursor: pointer;\n user-select: none;\n }\n\n .node-row:hover {\n background: var(--tree-row-hover-bg, var(--colors-slate-50, #f8fafc));\n }\n\n .node-row.selected {\n background: var(\n --tree-row-selected-bg,\n var(--colors-primary-50, #eff6ff)\n );\n color: var(--colors-primary-700, #1d4ed8);\n font-weight: 500;\n }\n\n .node-row.disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n .toggle {\n width: 16px;\n height: 16px;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n color: var(--colors-slate-500, #64748b);\n background: transparent;\n border: 0;\n padding: 0;\n cursor: pointer;\n transition: transform 0.18s ease;\n }\n .toggle[data-expanded='true'] {\n transform: rotate(90deg);\n }\n .toggle.placeholder {\n visibility: hidden;\n }\n\n .label {\n flex: 1 1 auto;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .icon {\n display: inline-flex;\n color: var(--colors-slate-500, #64748b);\n }\n\n .loading {\n font-size: 0.75rem;\n color: var(--colors-slate-500, #64748b);\n padding-left: 28px;\n }\n `,\n];\n","import { LitElement, html, nothing, type TemplateResult } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { unsafeSVG } from 'lit/directives/unsafe-svg.js';\nimport '../arvea-checkbox/arvea-checkbox';\nimport { arveaTreeStyles } from './arvea-tree.styles';\nimport type { ArveaTreeNode, ArveaTreeSelection } from './arvea-tree.types';\n\n/**\n * @element arvea-tree\n *\n * Collapsible tree with optional checkboxes and async children loading.\n *\n * @fires arvea-tree-expand { key, expanded }\n * @fires arvea-tree-select { selectedKeys, node }\n * @fires arvea-tree-check { checkedKeys, node }\n */\n@customElement('arvea-tree')\nexport class ArveaTree extends LitElement {\n static styles = arveaTreeStyles;\n\n @property({ type: Array }) nodes: ArveaTreeNode[] = [];\n @property({ type: Array, attribute: 'expanded-keys' })\n expandedKeys: string[] = [];\n @property({ type: Array, attribute: 'selected-keys' })\n selectedKeys: string[] = [];\n @property({ type: Array, attribute: 'checked-keys' })\n checkedKeys: string[] = [];\n @property({ type: String, reflect: true })\n selectable: ArveaTreeSelection = 'single';\n @property({ type: Boolean, reflect: true }) checkable = false;\n @property({ attribute: false })\n loadChildren?: (node: ArveaTreeNode) => Promise<ArveaTreeNode[]>;\n @property({ type: Boolean, reflect: true }) disabled = false;\n @property({ type: Boolean, reflect: true, attribute: 'show-line' })\n showLine = false;\n\n @state() private _loadingKeys = new Set<string>();\n @state() private _loadedChildren = new Map<string, ArveaTreeNode[]>();\n\n private _expandedSet = new Set<string>();\n private _selectedSet = new Set<string>();\n private _checkedSet = new Set<string>();\n\n willUpdate() {\n this._expandedSet = new Set(this.expandedKeys);\n this._selectedSet = new Set(this.selectedKeys);\n this._checkedSet = new Set(this.checkedKeys);\n }\n\n private _hasChildren(node: ArveaTreeNode): boolean {\n if (node.children && node.children.length > 0) return true;\n if (this._loadedChildren.get(node.key)?.length) return true;\n if (this.loadChildren && !node.isLeaf) return true;\n return false;\n }\n\n private _childrenOf(node: ArveaTreeNode): ArveaTreeNode[] {\n return this._loadedChildren.get(node.key) ?? node.children ?? [];\n }\n\n private async _toggleExpand(node: ArveaTreeNode) {\n if (!this._hasChildren(node)) return;\n const expanded = this._expandedSet.has(node.key);\n if (expanded) {\n this._expandedSet.delete(node.key);\n this.expandedKeys = [...this._expandedSet];\n this.dispatchEvent(\n new CustomEvent('arvea-tree-expand', {\n detail: { key: node.key, expanded: false },\n bubbles: true,\n composed: true,\n }),\n );\n return;\n }\n this._expandedSet.add(node.key);\n this.expandedKeys = [...this._expandedSet];\n this.dispatchEvent(\n new CustomEvent('arvea-tree-expand', {\n detail: { key: node.key, expanded: true },\n bubbles: true,\n composed: true,\n }),\n );\n if (\n this.loadChildren &&\n !(node.children?.length || this._loadedChildren.has(node.key))\n ) {\n this._loadingKeys = new Set([...this._loadingKeys, node.key]);\n this.requestUpdate();\n try {\n const result = await this.loadChildren(node);\n this._loadedChildren.set(node.key, result);\n } finally {\n this._loadingKeys.delete(node.key);\n this.requestUpdate();\n }\n }\n }\n\n private _select(node: ArveaTreeNode) {\n if (this.selectable === 'none' || node.disabled || this.disabled) return;\n let next: string[];\n if (this.selectable === 'single') {\n next = this._selectedSet.has(node.key) ? [] : [node.key];\n } else {\n const s = new Set(this._selectedSet);\n if (s.has(node.key)) s.delete(node.key);\n else s.add(node.key);\n next = [...s];\n }\n this.selectedKeys = next;\n this.dispatchEvent(\n new CustomEvent('arvea-tree-select', {\n detail: { selectedKeys: next, node },\n bubbles: true,\n composed: true,\n }),\n );\n }\n\n private _flattenChildKeys(node: ArveaTreeNode, acc: string[] = []): string[] {\n for (const c of this._childrenOf(node)) {\n acc.push(c.key);\n this._flattenChildKeys(c, acc);\n }\n return acc;\n }\n\n private _checkState(node: ArveaTreeNode): 'none' | 'some' | 'all' {\n const own = this._checkedSet.has(node.key);\n const children = this._flattenChildKeys(node);\n if (children.length === 0) return own ? 'all' : 'none';\n const checkedCount = children.filter((k) => this._checkedSet.has(k))\n .length;\n if (checkedCount === 0 && !own) return 'none';\n if (checkedCount === children.length) return 'all';\n return 'some';\n }\n\n private _toggleCheck(node: ArveaTreeNode) {\n const set = new Set(this._checkedSet);\n const childKeys = this._flattenChildKeys(node);\n const state = this._checkState(node);\n if (state === 'all') {\n set.delete(node.key);\n childKeys.forEach((k) => set.delete(k));\n } else {\n set.add(node.key);\n childKeys.forEach((k) => set.add(k));\n }\n this.checkedKeys = [...set];\n this.dispatchEvent(\n new CustomEvent('arvea-tree-check', {\n detail: { checkedKeys: this.checkedKeys, node },\n bubbles: true,\n composed: true,\n }),\n );\n }\n\n private _renderNode(node: ArveaTreeNode, depth: number): TemplateResult {\n const expanded = this._expandedSet.has(node.key);\n const hasChildren = this._hasChildren(node);\n const selected = this._selectedSet.has(node.key);\n const checkState = this._checkState(node);\n\n return html`\n <li role=\"treeitem\" aria-expanded=${hasChildren ? expanded : nothing}>\n <div\n class=${[\n 'node-row',\n selected ? 'selected' : '',\n node.disabled ? 'disabled' : '',\n ]\n .filter(Boolean)\n .join(' ')}\n @click=${() => this._select(node)}\n >\n ${hasChildren\n ? html`<button\n type=\"button\"\n part=\"toggle\"\n class=\"toggle\"\n data-expanded=${expanded ? 'true' : 'false'}\n aria-label=${expanded ? 'Collapse' : 'Expand'}\n @click=${(e: Event) => {\n e.stopPropagation();\n void this._toggleExpand(node);\n }}\n >\n <svg width=\"10\" height=\"10\" viewBox=\"0 0 10 10\" fill=\"none\">\n <path\n d=\"M3 2l4 3-4 3z\"\n fill=\"currentColor\"\n />\n </svg>\n </button>`\n : html`<span class=\"toggle placeholder\"></span>`}\n ${this.checkable\n ? html`<arvea-checkbox\n ?checked=${checkState === 'all'}\n ?indeterminate=${checkState === 'some'}\n ?disabled=${node.disabled || this.disabled}\n @click=${(e: Event) => e.stopPropagation()}\n @change=${() => this._toggleCheck(node)}\n ></arvea-checkbox>`\n : nothing}\n ${node.icon\n ? html`<span class=\"icon\">${unsafeSVG(node.icon)}</span>`\n : nothing}\n <span part=\"node-label\" class=\"label\">${node.label}</span>\n </div>\n ${expanded && hasChildren\n ? html`<ul class=\"group\" role=\"group\">\n ${this._loadingKeys.has(node.key) &&\n !this._loadedChildren.has(node.key)\n ? html`<li class=\"loading\">Loading…</li>`\n : this._childrenOf(node).map((c) =>\n this._renderNode(c, depth + 1),\n )}\n </ul>`\n : nothing}\n </li>\n `;\n }\n\n render() {\n return html`\n <ul part=\"base\" class=\"tree\" role=\"tree\">\n ${this.nodes.map((n) => this._renderNode(n, 0))}\n </ul>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'arvea-tree': ArveaTree;\n }\n}\n","import { css } from 'lit';\nimport { tokenStyles } from '../../tokens/tokens.styles';\n\nexport const arveaSidebarStyles = [\n tokenStyles,\n css`\n :host {\n display: flex;\n flex-direction: column;\n width: var(--sidebar-width, 300px);\n min-width: var(--sidebar-width, 300px);\n height: 100vh;\n background: var(--colors-base-white, rgba(255, 255, 255, 0.8));\n border-right: 1px solid var(--colors-slate-100, #f1f5f9) !important;\n backdrop-filter: blur(56.9px);\n font-family: inherit;\n overflow: hidden;\n position: sticky;\n top: 0;\n z-index: 1;\n transition: width 0.2s ease, min-width 0.2s ease;\n }\n\n :host([collapsed]) {\n width: var(--sidebar-width-collapsed, 72px);\n min-width: var(--sidebar-width-collapsed, 72px);\n }\n\n @media (max-width: 767px) {\n :host {\n width: 100%;\n min-width: 100%;\n }\n }\n\n /* ── Teal header ───────────────────────────────── */\n .sidebar-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 0 16px;\n height: 60px;\n min-height: 60px;\n flex-shrink: 0;\n gap: 8px;\n }\n\n :host([collapsed]) .sidebar-header {\n justify-content: center;\n padding: 0 8px;\n }\n\n :host([collapsed]) .sidebar-header__logo,\n :host([collapsed]) slot[name='actions'] {\n display: none;\n }\n\n .sidebar-header__logo {\n display: flex;\n align-items: center;\n overflow: hidden;\n }\n\n .sidebar-header__logo img {\n height: var(--sidebar-logo-height, 28px);\n max-width: var(--sidebar-logo-max-width, 120px);\n width: auto;\n object-fit: contain;\n }\n\n /* ── Collapse toggle ───────────────────────────── */\n .collapse-toggle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: 28px;\n height: 28px;\n background: none;\n border: none;\n border-radius: 6px;\n color: #9ca3af;\n cursor: pointer;\n transition: transform 0.2s ease, background 0.15s;\n }\n\n .collapse-toggle:hover {\n background: #f5f5f5;\n color: #374151;\n }\n\n :host(:not([collapsed])) .collapse-toggle {\n transform: rotate(180deg);\n }\n\n /* ── Scrollable body ───────────────────────────── */\n .sidebar-body {\n flex: 1;\n overflow-y: auto;\n overflow-x: hidden;\n padding: 8px 10px;\n }\n\n .sidebar-body::-webkit-scrollbar {\n width: 3px;\n }\n .sidebar-body::-webkit-scrollbar-track {\n background: transparent;\n }\n .sidebar-body::-webkit-scrollbar-thumb {\n background: #e2e8f0;\n border-radius: 4px;\n }\n\n /* ── Section title ─────────────────────────────── */\n .sidebar-title {\n padding: 14px 8px 6px;\n font-size: 0.68rem;\n font-weight: 700;\n letter-spacing: 0.1em;\n text-transform: uppercase;\n color: #94a3b8;\n user-select: none;\n }\n\n :host([collapsed]) .sidebar-title {\n display: none;\n }\n\n /* ── User card slot ────────────────────────────── */\n .sidebar-user {\n display: none;\n padding: 12px 12px 0;\n }\n .sidebar-user.has-content {\n display: block;\n }\n :host([collapsed]) .sidebar-user {\n display: none;\n }\n\n /* ── Nav item ──────────────────────────────────── */\n .nav-item {\n display: flex;\n align-items: center;\n gap: 10px;\n width: 100%;\n height: 44px;\n padding: 0 10px;\n background: none;\n border: none;\n border-radius: 8px;\n font: inherit;\n font-size: 0.875rem;\n color: #374151;\n cursor: pointer;\n text-align: start;\n transition: background 0.15s;\n box-sizing: border-box;\n }\n\n .nav-item:hover {\n background: #f5f5f5;\n }\n .nav-item.active {\n background: #eeeeee;\n }\n\n .nav-item.disabled {\n opacity: 0.45;\n cursor: not-allowed;\n pointer-events: none;\n }\n\n :host([collapsed]) .nav-item {\n justify-content: center;\n padding: 0;\n gap: 0;\n }\n\n .nav-item__icon {\n display: inline-flex;\n flex-shrink: 0;\n color: #9ca3af;\n }\n\n .nav-item.active .nav-item__icon,\n .nav-item.has-active-child .nav-item__icon {\n color: #374151;\n }\n\n .nav-item__label {\n flex: 1;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n font-weight: 400;\n }\n\n .nav-item.active .nav-item__label,\n .nav-item.has-active-child .nav-item__label {\n font-weight: 600;\n }\n\n :host([collapsed]) .nav-item__label {\n display: none;\n }\n\n /* ── Badge ─────────────────────────────────────── */\n .badge {\n flex-shrink: 0;\n font-size: 0.65rem;\n font-weight: 700;\n padding: 2px 7px;\n border-radius: 999px;\n letter-spacing: 0.02em;\n }\n\n :host([collapsed]) .badge {\n display: none;\n }\n\n .badge--new {\n background: #ec4899;\n color: #fff;\n }\n .badge--warning {\n background: #f59e0b;\n color: #fff;\n }\n .badge--default {\n background: #3ecacd;\n color: #fff;\n }\n\n /* ── Chevron ───────────────────────────────────── */\n .nav-item__chevron {\n display: inline-flex;\n flex-shrink: 0;\n color: #d1d5db;\n transition: transform 0.2s ease;\n }\n\n .nav-item__chevron.open {\n transform: rotate(180deg);\n }\n\n :host([collapsed]) .nav-item__chevron {\n display: none;\n }\n\n /* ── Sub-items ─────────────────────────────────── */\n .sub-list {\n overflow: hidden;\n max-height: 0;\n transition: max-height 0.25s ease;\n }\n\n :host([collapsed]) .sub-list {\n display: none;\n }\n\n .sub-list.open {\n max-height: 2000px;\n }\n\n .sub-item {\n display: flex;\n align-items: center;\n gap: 10px;\n width: 100%;\n height: 40px;\n padding-block: 0;\n padding-inline: 34px 10px;\n background: none;\n border: none;\n border-radius: 8px;\n font: inherit;\n font-size: 0.82rem;\n color: #6b7280;\n cursor: pointer;\n text-align: start;\n transition: background 0.15s;\n box-sizing: border-box;\n }\n\n .sub-item:hover {\n background: #f5f5f5;\n }\n\n .sub-item.active {\n background: #eeeeee;\n color: #374151;\n font-weight: 500;\n }\n\n .sub-item.disabled {\n opacity: 0.45;\n cursor: not-allowed;\n pointer-events: none;\n }\n\n .sub-item__icon {\n display: inline-flex;\n flex-shrink: 0;\n color: #d1d5db;\n }\n\n .sub-item.active .sub-item__icon {\n color: #9ca3af;\n }\n\n .sub-item__label {\n flex: 1;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n `,\n];\n","import { LitElement, html, nothing } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { arveaSidebarStyles } from './arvea-sidebar.styles';\nimport type { ArveaSidebarItem, ArveaSidebarSection } from './arvea-sidebar.types';\nimport '../arvea-icon/arvea-icon';\n\n/**\n * @element arvea-sidebar\n *\n * @prop {string} logo-src - URL of the logo image shown in the teal header\n * @prop {string} title - Section title shown above nav items (e.g. \"ADMIN\")\n * @prop {ArveaSidebarItem[]} items - Flat array of nav items (each may have children)\n *\n * @slot logo - Custom logo content (overrides logo-src)\n * @slot actions - Right side of the header (e.g. settings icon)\n * @slot user - User profile card shown below the header, above the nav items (hidden while collapsed)\n *\n * @prop {string} active-id - Externally-controlled active item id (syncs highlight + auto-expands its group)\n *\n * @fires arvea-sidebar-select - { detail: { item: ArveaSidebarItem } }\n * @fires arvea-sidebar-toggle - { detail: { collapsed: boolean } }\n *\n * @cssprop --sidebar-width - Sidebar width when open (default 300px)\n * @cssprop --sidebar-width-collapsed - Sidebar width when closed, icons only (default 72px)\n * @cssprop --sidebar-logo-height - Logo image height (default 28px)\n * @cssprop --sidebar-logo-max-width - Logo image max-width (default 120px)\n */\n@customElement('arvea-sidebar')\nexport class ArveaSidebar extends LitElement {\n static styles = arveaSidebarStyles;\n\n @property({ type: String, attribute: 'logo-src' }) logoSrc = '';\n @property({ type: String }) title = '';\n @property({ type: Array }) items: ArveaSidebarItem[] = [];\n @property({ type: Array }) sections: ArveaSidebarSection[] = [];\n @property({ type: Boolean, reflect: true }) collapsed = false;\n @property({ type: String, attribute: 'active-id' }) activeId = '';\n\n @state() private _activeId = '';\n @state() private _expanded = new Set<string>();\n @state() private _hasLogoSlot = false;\n @state() private _hasUserSlot = false;\n\n willUpdate(changed: Map<string, unknown>) {\n if (changed.has('activeId') && this.activeId !== this._activeId) {\n this._activeId = this.activeId;\n this._expandGroupContaining(this.activeId);\n }\n }\n\n private _expandGroupContaining(id: string) {\n for (const parent of this.items) {\n if (parent.children?.some((c) => c.id === id)) {\n this._expanded = new Set([...this._expanded, parent.id]);\n }\n }\n }\n\n private _toggle(id: string) {\n if (this.collapsed) return;\n const next = new Set(this._expanded);\n if (next.has(id)) { next.delete(id); } else { next.add(id); }\n this._expanded = next;\n }\n\n private _toggleCollapsed() {\n this.collapsed = !this.collapsed;\n this.dispatchEvent(\n new CustomEvent('arvea-sidebar-toggle', {\n detail: { collapsed: this.collapsed },\n bubbles: true,\n composed: true,\n }),\n );\n }\n\n private _onNavItemClick(item: ArveaSidebarItem) {\n const hasChildren = !!item.children?.length;\n const wasCollapsed = this.collapsed;\n if (wasCollapsed) this._toggleCollapsed();\n\n if (!hasChildren) {\n this._select(item);\n return;\n }\n if (wasCollapsed) {\n this._expanded = new Set([...this._expanded, item.id]);\n } else {\n this._toggle(item.id);\n }\n }\n\n private _select(item: ArveaSidebarItem) {\n if (item.disabled) return;\n this._activeId = item.id;\n this.activeId = item.id;\n this._expandGroupContaining(item.id);\n this.dispatchEvent(\n new CustomEvent('arvea-sidebar-select', {\n detail: { item },\n bubbles: true,\n composed: true,\n }),\n );\n }\n\n private _onLogoSlotChange(e: Event) {\n const slot = e.target as HTMLSlotElement;\n this._hasLogoSlot = slot.assignedElements().length > 0;\n }\n\n private _onUserSlotChange(e: Event) {\n const slot = e.target as HTMLSlotElement;\n this._hasUserSlot = slot.assignedElements().length > 0;\n }\n\n private _renderBadge(item: ArveaSidebarItem) {\n if (!item.badge) return nothing;\n const variant = item.badgeVariant ?? 'new';\n return html`<span class=\"badge badge--${variant}\">${item.badge}</span>`;\n }\n\n private _renderSubItem(child: ArveaSidebarItem) {\n const isActive = this._activeId === child.id;\n const useFilled = isActive || child.iconVariant === 'filled';\n return html`\n <button\n class=\"sub-item ${isActive ? 'active' : ''} ${child.disabled ? 'disabled' : ''}\"\n @click=${() => this._select(child)}\n >\n ${child.icon\n ? html`<span class=\"sub-item__icon\">\n <arvea-icon name=${child.icon} size=\"sm\" ?outline=${!useFilled}></arvea-icon>\n </span>`\n : nothing}\n <span class=\"sub-item__label\">${child.label}</span>\n ${this._renderBadge(child)}\n </button>\n `;\n }\n\n private _renderItem(item: ArveaSidebarItem) {\n const isActive = this._activeId === item.id;\n const hasChildren = !!item.children?.length;\n const isExpanded = this._expanded.has(item.id);\n const hasActiveChild = !!item.children?.some((c) => c.id === this._activeId);\n const useFilled = isActive || isExpanded || hasActiveChild || item.iconVariant === 'filled';\n\n return html`\n <button\n class=\"nav-item ${isActive ? 'active' : ''} ${hasActiveChild ? 'has-active-child' : ''} ${item.disabled ? 'disabled' : ''}\"\n @click=${() => this._onNavItemClick(item)}\n >\n ${item.icon\n ? html`<span class=\"nav-item__icon\">\n <arvea-icon name=${item.icon} size=\"sm\" ?outline=${!useFilled}></arvea-icon>\n </span>`\n : nothing}\n <span class=\"nav-item__label\">${item.label}</span>\n ${this._renderBadge(item)}\n ${hasChildren\n ? html`<span class=\"nav-item__chevron ${isExpanded ? 'open' : ''}\">\n <arvea-icon name=\"chevron-down\" size=\"sm\" outline></arvea-icon>\n </span>`\n : nothing}\n </button>\n\n ${hasChildren\n ? html`<div class=\"sub-list ${isExpanded ? 'open' : ''}\">\n ${item.children!.map((c) => this._renderSubItem(c))}\n </div>`\n : nothing}\n `;\n }\n\n render() {\n return html`\n <div class=\"sidebar-header\">\n <span class=\"sidebar-header__logo\">\n <slot name=\"logo\" @slotchange=${this._onLogoSlotChange}>\n ${!this._hasLogoSlot && this.logoSrc\n ? html`<img src=${this.logoSrc} alt=\"logo\" />`\n : nothing}\n </slot>\n </span>\n <slot name=\"actions\"></slot>\n <button\n type=\"button\"\n class=\"collapse-toggle\"\n aria-label=${this.collapsed ? 'Expand sidebar' : 'Collapse sidebar'}\n aria-expanded=${this.collapsed ? 'false' : 'true'}\n @click=${() => this._toggleCollapsed()}\n >\n <arvea-icon name=\"chevron-right\" size=\"sm\" outline></arvea-icon>\n </button>\n </div>\n\n <div class=\"sidebar-user ${this._hasUserSlot ? 'has-content' : ''}\">\n <slot name=\"user\" @slotchange=${this._onUserSlotChange}></slot>\n </div>\n\n <div class=\"sidebar-body\">\n ${this.sections.length\n ? this.sections.map((section) => html`\n ${section.title\n ? html`<div class=\"sidebar-title\">${section.title}</div>`\n : nothing}\n ${section.items.map((item) => this._renderItem(item))}\n `)\n : html`\n ${this.title\n ? html`<div class=\"sidebar-title\">${this.title}</div>`\n : nothing}\n ${this.items.map((item) => this._renderItem(item))}\n `}\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'arvea-sidebar': ArveaSidebar;\n }\n}\n"]}
|