@arvea/components 0.0.1 → 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.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/tokens/tokens.ts","../src/icons/index.ts","../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/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-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","ArveaIcon","LitElement","html","styleMap","unsafeSVG","property","customElement","ArveaButton","ArveaBadge","nothing","ArveaToggle","ArveaCheckbox","ArveaRadio","ArveaSlider","input","state","ArveaInput","query","ArveaPhoneNumber","ArveaTextarea","ArveaSelect","ArveaTag","svg","ArveaSpinner","ArveaTooltip","ArveaCard","ArveaMediaCard","ArveaProductCard","ArveaActionButton","ArveaAvatar","ArveaProgressBar","ArveaSkeleton","ArveaSkeletonCard","ArveaCarousel","ArveaDialog","ArveaToast","_id","ArveaToastContainer","ArveaTabs","ArveaAccordionItem","ArveaAccordion","ICONS","ArveaAlert","ArveaDivider","ArveaFormField","ArveaBreadcrumb","ArveaPagination","ArveaDropdownMenu","ArveaSearchBar","ArveaRating","ArveaQuantitySelector","ArveaStepper","ArveaEmptyState","ArveaDataTable","action","ArveaLightbox","ArveaTable","ArveaPopover","ArveaPopconfirm","ArveaDrawer","ArveaSegmentedControl","ArveaTagsInput","tag","ArveaOtpInput","queryAll","ArveaFileUpload","ArveaImage","ArveaDatePicker","v","ArveaTree","ArveaSidebar"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAaO,IAAM,aAAA,GAAiB;AACvB,IAAM,cAAA,GAAiB;AACvB,IAAM,cAAA,GAAiB;AACvB,IAAM,cAAA,GAAiB;AACvB,IAAM,cAAA,GAAiB;AACvB,IAAM,cAAA,GAAiB;AACvB,IAAM,cAAA,GAAiB;AACvB,IAAM,cAAA,GAAiB;AACvB,IAAM,cAAA,GAAiB;AACvB,IAAM,cAAA,GAAiB;AACvB,IAAM,cAAA,GAAiB;AAEvB,IAAM,WAAA,GAAc;AAAA,EACzB,EAAA,EAAK,aAAA;AAAA,EACL,GAAA,EAAK,cAAA;AAAA,EACL,GAAA,EAAK,cAAA;AAAA,EACL,GAAA,EAAK,cAAA;AAAA,EACL,GAAA,EAAK,cAAA;AAAA,EACL,GAAA,EAAK,cAAA;AAAA,EACL,GAAA,EAAK,cAAA;AAAA,EACL,GAAA,EAAK,cAAA;AAAA,EACL,GAAA,EAAK,cAAA;AAAA,EACL,GAAA,EAAK,cAAA;AAAA,EACL,GAAA,EAAK;AACP;AAEO,IAAM,aAAA,GAAiB;AACvB,IAAM,cAAA,GAAiB;AACvB,IAAM,cAAA,GAAiB;AACvB,IAAM,cAAA,GAAiB;AACvB,IAAM,cAAA,GAAiB;AACvB,IAAM,cAAA,GAAiB;AACvB,IAAM,cAAA,GAAiB;AACvB,IAAM,cAAA,GAAiB;AACvB,IAAM,cAAA,GAAiB;AACvB,IAAM,cAAA,GAAiB;AACvB,IAAM,cAAA,GAAiB;AAEvB,IAAM,WAAA,GAAc;AAAA,EACzB,EAAA,EAAK,aAAA;AAAA,EACL,GAAA,EAAK,cAAA;AAAA,EACL,GAAA,EAAK,cAAA;AAAA,EACL,GAAA,EAAK,cAAA;AAAA,EACL,GAAA,EAAK,cAAA;AAAA,EACL,GAAA,EAAK,cAAA;AAAA,EACL,GAAA,EAAK,cAAA;AAAA,EACL,GAAA,EAAK,cAAA;AAAA,EACL,GAAA,EAAK,cAAA;AAAA,EACL,GAAA,EAAK,cAAA;AAAA,EACL,GAAA,EAAK;AACP;AAEO,IAAM,MAAA,GAAS;AAAA,EACpB,KAAA,EAAO,WAAA;AAAA,EACP,KAAA,EAAO;AACT;AAMO,IAAM,mBAAA,GAAsB;AAE5B,IAAM,iBAAA,GAAoB;AAAA,EAC/B,EAAA,EAAI;AACN;AAEO,IAAM,eAAA,GAAkB;AAExB,IAAM,aAAA,GAAgB;AAAA,EAC3B,EAAA,EAAI;AACN;AAEO,IAAM,kBAAA,GAAqB;AAE3B,IAAM,gBAAA,GAAmB;AAAA,EAC9B,EAAA,EAAI;AACN;AAEO,IAAM,gBAAA,GAAmB;AAEzB,IAAM,cAAA,GAAiB;AAAA,EAC5B,EAAA,EAAI;AACN;AAEO,IAAM,gBAAA,GAAmB;AAEzB,IAAM,cAAA,GAAiB;AAAA,EAC5B,EAAA,EAAI;AACN;AAEO,IAAM,iBAAA,GAAoB;AAE1B,IAAM,eAAA,GAAkB;AAAA,EAC7B,EAAA,EAAI;AACN;AAEO,IAAM,eAAA,GAAkB;AAExB,IAAM,aAAA,GAAgB;AAAA,EAC3B,EAAA,EAAI;AACN;AAEO,IAAM,cAAA,GAAiB;AAEvB,IAAM,YAAA,GAAe;AAAA,EAC1B,EAAA,EAAI;AACN;AAEO,IAAM,gBAAA,GAAmB;AAEzB,IAAM,cAAA,GAAiB;AAAA,EAC5B,EAAA,EAAI;AACN;AAEO,IAAM,mBAAA,GAAsB;AAE5B,IAAM,iBAAA,GAAoB;AAAA,EAC/B,EAAA,EAAI;AACN;AAEO,IAAM,iBAAA,GAAoB;AAE1B,IAAM,eAAA,GAAkB;AAAA,EAC7B,EAAA,EAAI;AACN;AAEO,IAAM,eAAA,GAAkB;AAExB,IAAM,aAAA,GAAgB;AAAA,EAC3B,EAAA,EAAI;AACN;AAEO,IAAM,gBAAA,GAAmB;AAEzB,IAAM,cAAA,GAAiB;AAAA,EAC5B,EAAA,EAAI;AACN;AAEO,IAAM,mBAAA,GAAsB;AAE5B,IAAM,iBAAA,GAAoB;AAAA,EAC/B,EAAA,EAAI;AACN;AAEO,IAAM,kBAAA,GAAqB;AAE3B,IAAM,gBAAA,GAAmB;AAAA,EAC9B,EAAA,EAAI;AACN;AAEO,IAAM,kBAAA,GAAqB;AAE3B,IAAM,gBAAA,GAAmB;AAAA,EAC9B,EAAA,EAAI;AACN;AACO,IAAM,WAAA,GAAc;AAEpB,IAAM,SAAA,GAAY;AAAA,EACvB,QAAA,EAAU,iBAAA;AAAA,EACV,IAAA,EAAU,aAAA;AAAA,EACV,OAAA,EAAU,gBAAA;AAAA,EACV,KAAA,EAAU,cAAA;AAAA,EACV,KAAA,EAAU,cAAA;AAAA,EACV,MAAA,EAAU,eAAA;AAAA,EACV,IAAA,EAAU,aAAA;AAAA,EACV,GAAA,EAAU,YAAA;AAAA,EACV,KAAA,EAAU,cAAA;AAAA,EACV,QAAA,EAAU,iBAAA;AAAA,EACV,MAAA,EAAU,eAAA;AAAA,EACV,IAAA,EAAU,aAAA;AAAA,EACV,KAAA,EAAU,cAAA;AAAA,EACV,QAAA,EAAU,iBAAA;AAAA,EACV,OAAA,EAAU,gBAAA;AAAA,EACV,OAAA,EAAU,gBAAA;AAAA,EACV,EAAA,EAAU;AACZ;AAEO,IAAM,MAAA,GAAS;AAAA,EACpB,GAAA,EAAK;AACP;AAMO,IAAM,SAAA,GAAY;AAElB,IAAM,QAAA,GAAW;AAAA,EACtB,CAAA,EAAG;AACL;AAEO,IAAM,SAAA,GAAY;AAElB,IAAM,QAAA,GAAW;AAAA,EACtB,CAAA,EAAG;AACL;AAEO,IAAM,SAAA,GAAY;AAElB,IAAM,QAAA,GAAW;AAAA,EACtB,CAAA,EAAG;AACL;AAEO,IAAM,SAAA,GAAY;AAElB,IAAM,QAAA,GAAW;AAAA,EACtB,CAAA,EAAG;AACL;AACO,IAAM,QAAA,GAAW;AACjB,IAAM,QAAA,GAAW;AACjB,IAAM,QAAA,GAAW;AACjB,IAAM,QAAA,GAAW;AACjB,IAAM,QAAA,GAAW;AACjB,IAAM,QAAA,GAAW;AACjB,IAAM,SAAA,GAAY;AAClB,IAAM,SAAA,GAAY;AAClB,IAAM,SAAA,GAAY;AAClB,IAAM,SAAA,GAAY;AAClB,IAAM,SAAA,GAAY;AAClB,IAAM,SAAA,GAAY;AAClB,IAAM,SAAA,GAAY;AAClB,IAAM,SAAA,GAAY;AAClB,IAAM,SAAA,GAAY;AAClB,IAAM,SAAA,GAAY;AAClB,IAAM,SAAA,GAAY;AAClB,IAAM,SAAA,GAAY;AAClB,IAAM,SAAA,GAAY;AAClB,IAAM,SAAA,GAAY;AAClB,IAAM,SAAA,GAAY;AAClB,IAAM,SAAA,GAAY;AAClB,IAAM,SAAA,GAAY;AAClB,IAAM,SAAA,GAAY;AAClB,IAAM,SAAA,GAAY;AAClB,IAAM,SAAA,GAAY;AAClB,IAAM,SAAA,GAAY;AAElB,IAAM,OAAA,GAAU;AAAA,EACrB,CAAA,EAAI,QAAA;AAAA,EACJ,CAAA,EAAI,QAAA;AAAA,EACJ,CAAA,EAAI,QAAA;AAAA,EACJ,CAAA,EAAI,QAAA;AAAA,EACJ,CAAA,EAAI,QAAA;AAAA,EACJ,CAAA,EAAI,QAAA;AAAA,EACJ,CAAA,EAAI,QAAA;AAAA,EACJ,CAAA,EAAI,QAAA;AAAA,EACJ,CAAA,EAAI,QAAA;AAAA,EACJ,CAAA,EAAI,QAAA;AAAA,EACJ,EAAA,EAAI,SAAA;AAAA,EACJ,EAAA,EAAI,SAAA;AAAA,EACJ,EAAA,EAAI,SAAA;AAAA,EACJ,EAAA,EAAI,SAAA;AAAA,EACJ,EAAA,EAAI,SAAA;AAAA,EACJ,EAAA,EAAI,SAAA;AAAA,EACJ,EAAA,EAAI,SAAA;AAAA,EACJ,EAAA,EAAI,SAAA;AAAA,EACJ,EAAA,EAAI,SAAA;AAAA,EACJ,EAAA,EAAI,SAAA;AAAA,EACJ,EAAA,EAAI,SAAA;AAAA,EACJ,EAAA,EAAI,SAAA;AAAA,EACJ,EAAA,EAAI,SAAA;AAAA,EACJ,EAAA,EAAI,SAAA;AAAA,EACJ,EAAA,EAAI,SAAA;AAAA,EACJ,EAAA,EAAI,SAAA;AAAA,EACJ,EAAA,EAAI,SAAA;AAAA,EACJ,EAAA,EAAI,SAAA;AAAA,EACJ,EAAA,EAAI,SAAA;AAAA,EACJ,EAAA,EAAI,SAAA;AAAA,EACJ,EAAA,EAAI;AACN;AAKO,IAAM,UAAA,GAAa;AAEnB,IAAM,UAAA,GAAe;AACrB,IAAM,UAAA,GAAe;AACrB,IAAM,YAAA,GAAe;AACrB,IAAM,UAAA,GAAe;AACrB,IAAM,UAAA,GAAe;AACrB,IAAM,WAAA,GAAe;AACrB,IAAM,WAAA,GAAe;AACrB,IAAM,WAAA,GAAe;AACrB,IAAM,WAAA,GAAe;AAErB,IAAM,QAAA,GAAW;AAAA,EACtB,EAAA,EAAM,UAAA;AAAA,EACN,EAAA,EAAM,UAAA;AAAA,EACN,IAAA,EAAM,YAAA;AAAA,EACN,EAAA,EAAM,UAAA;AAAA,EACN,EAAA,EAAM,UAAA;AAAA,EACN,KAAA,EAAQ,WAAA;AAAA,EACR,KAAA,EAAQ,WAAA;AAAA,EACR,KAAA,EAAQ,WAAA;AAAA,EACR,KAAA,EAAQ;AACV;AAEO,IAAM,iBAAA,GAAqB;AAC3B,IAAM,gBAAA,GAAqB;AAC3B,IAAM,kBAAA,GAAqB;AAE3B,IAAM,UAAA,GAAa;AAAA,EACxB,OAAA,EAAU,iBAAA;AAAA,EACV,MAAA,EAAU,gBAAA;AAAA,EACV,QAAA,EAAU;AACZ;AAEO,IAAM,IAAA,GAAO;AAAA,EAClB,MAAA,EAAQ,UAAA;AAAA,EACR,IAAA,EAAQ,QAAA;AAAA,EACR,MAAA,EAAQ;AACV;AAMO,IAAM,oBAAA,GAA0B;AAChC,IAAM,uBAAA,GAA0B;AAEhC,IAAM,eAAA,GAAkB;AAAA,EAC7B,KAAA,EAAU,oBAAA;AAAA,EACV,QAAA,EAAU;AACZ;AAEO,IAAM,aAAA,GAAgB;AAAA,EAC3B,EAAA,EAAI;AACN;AAEO,IAAM,oBAAA,GAAuB;AAE7B,IAAM,eAAA,GAAkB;AAAA,EAC7B,KAAA,EAAO;AACT;AACO,IAAM,mBAAA,GAAsB;AAC5B,IAAM,mBAAA,GAAsB;AAE5B,IAAM,aAAA,GAAgB;AAAA,EAC3B,EAAA,EAAQ,eAAA;AAAA,EACR,MAAA,EAAQ,mBAAA;AAAA,EACR,MAAA,EAAQ;AACV;AAEO,IAAM,sBAAA,GAAyB;AAE/B,IAAM,iBAAA,GAAoB;AAAA,EAC/B,KAAA,EAAO;AACT;AAEO,IAAM,eAAA,GAAkB;AAAA,EAC7B,EAAA,EAAI;AACN;AAEO,IAAM,mBAAA,GAAsB;AAE5B,IAAM,cAAA,GAAiB;AAAA,EAC5B,KAAA,EAAO;AACT;AAEO,IAAM,YAAA,GAAe;AAAA,EAC1B,EAAA,EAAI;AACN;AAEO,IAAM,YAAA,GAAe;AAErB,IAAM,UAAA,GAAa;AAAA,EACxB,EAAA,EAAI;AACN;AACO,IAAM,iBAAA,GAAoB;AAC1B,IAAM,iBAAA,GAAoB;AAC1B,IAAM,mBAAA,GAAsB;AAC5B,IAAM,gBAAA,GAAmB;AAEzB,IAAM,mBAAA,GAAsB;AAE5B,IAAM,cAAA,GAAiB;AAAA,EAC5B,KAAA,EAAO;AACT;AACO,IAAM,kBAAA,GAAqB;AAE3B,IAAM,UAAA,GAAa;AAAA,EACxB,OAAA,EAAW,iBAAA;AAAA,EACX,OAAA,EAAW,iBAAA;AAAA,EACX,SAAA,EAAW,mBAAA;AAAA,EACX,MAAA,EAAW,gBAAA;AAAA,EACX,IAAA,EAAW,cAAA;AAAA,EACX,QAAA,EAAW;AACb;AACO,IAAM,YAAA,GAAe;AACrB,IAAM,SAAA,GAAY;AAElB,IAAM,oBAAA,GAAuB;AAC7B,IAAM,eAAA,GAAuB;AAC7B,IAAM,eAAA,GAAuB;AAC7B,IAAM,iBAAA,GAAuB;AAE7B,IAAM,aAAA,GAAgB;AAAA,EAC3B,OAAA,EAAS,oBAAA;AAAA,EACT,EAAA,EAAS,eAAA;AAAA,EACT,EAAA,EAAS,eAAA;AAAA,EACT,IAAA,EAAS;AACX;AAEO,IAAM,mBAAA,GAAsB;AAC5B,IAAM,cAAA,GAAsB;AAC5B,IAAM,cAAA,GAAsB;AAE5B,IAAM,YAAA,GAAe;AAAA,EAC1B,OAAA,EAAS,mBAAA;AAAA,EACT,EAAA,EAAS,cAAA;AAAA,EACT,EAAA,EAAS;AACX;AAEO,IAAM,cAAA,GAAiB;AAEvB,IAAM,UAAA,GAAa;AAAA,EACxB,IAAA,EAAM;AACR;AAEO,IAAM,MAAA,GAAS;AAAA,EACpB,OAAA,EAAW,aAAA;AAAA,EACX,OAAA,EAAW,aAAA;AAAA,EACX,SAAA,EAAW,eAAA;AAAA,EACX,MAAA,EAAW,YAAA;AAAA,EACX,IAAA,EAAW,UAAA;AAAA,EACX,IAAA,EAAW,UAAA;AAAA,EACX,MAAA,EAAW,YAAA;AAAA,EACX,GAAA,EAAW,SAAA;AAAA,EACX,OAAA,EAAW,aAAA;AAAA,EACX,MAAA,EAAW,YAAA;AAAA,EACX,IAAA,EAAW;AACb;AAKO,IAAM,kBAAA,GAAqB;AAE3B,IAAM,wBAAA,GAA6B;AACnC,IAAM,wBAAA,GAA6B;AACnC,IAAM,0BAAA,GAA6B;AACnC,IAAM,uBAAA,GAA6B;AAEnC,IAAM,iBAAA,GAAoB;AAAA,EAC/B,OAAA,EAAW,wBAAA;AAAA,EACX,OAAA,EAAW,wBAAA;AAAA,EACX,SAAA,EAAW,0BAAA;AAAA,EACX,MAAA,EAAW;AACb;AACO,IAAM,kBAAA,GAAqB;AAC3B,IAAM,oBAAA,GAAuB;AAC7B,IAAM,iBAAA,GAAoB;AAE1B,IAAM,WAAA,GAAc;AAAA,EACzB,OAAA,EAAW,kBAAA;AAAA,EACX,MAAA,EAAW,iBAAA;AAAA,EACX,OAAA,EAAW,kBAAA;AAAA,EACX,SAAA,EAAW,oBAAA;AAAA,EACX,MAAA,EAAW;AACb;AAEO,IAAM,MAAA,GAAS;AAAA,EACpB,KAAA,EAAO;AACT;AAMO,IAAM,cAAA,GAAmB;AACzB,IAAM,gBAAA,GAAmB;AACzB,IAAM,gBAAA,GAAmB;AAEzB,IAAM,YAAA,GAAe;AAAA,EAC1B,EAAA,EAAM,cAAA;AAAA,EACN,IAAA,EAAM,gBAAA;AAAA,EACN,IAAA,EAAM;AACR;AAEO,IAAM,YAAA,GAAiB;AACvB,IAAM,cAAA,GAAiB;AACvB,IAAM,cAAA,GAAiB;AAEvB,IAAM,UAAA,GAAa;AAAA,EACxB,EAAA,EAAM,YAAA;AAAA,EACN,IAAA,EAAM,cAAA;AAAA,EACN,IAAA,EAAM;AACR;AAEO,IAAM,cAAA,GAAmB;AACzB,IAAM,gBAAA,GAAmB;AACzB,IAAM,gBAAA,GAAmB;AAEzB,IAAM,YAAA,GAAe;AAAA,EAC1B,EAAA,EAAM,cAAA;AAAA,EACN,IAAA,EAAM,gBAAA;AAAA,EACN,IAAA,EAAM;AACR;AAEO,IAAM,WAAA,GAAgB;AACtB,IAAM,aAAA,GAAgB;AACtB,IAAM,aAAA,GAAgB;AAEtB,IAAM,SAAA,GAAY;AAAA,EACvB,EAAA,EAAM,WAAA;AAAA,EACN,IAAA,EAAM,aAAA;AAAA,EACN,IAAA,EAAM;AACR;AAEO,IAAM,cAAA,GAAmB;AACzB,IAAM,gBAAA,GAAmB;AACzB,IAAM,gBAAA,GAAmB;AAEzB,IAAM,YAAA,GAAe;AAAA,EAC1B,EAAA,EAAM,cAAA;AAAA,EACN,IAAA,EAAM,gBAAA;AAAA,EACN,IAAA,EAAM;AACR;AAEO,IAAM,aAAA,GAAkB;AACxB,IAAM,eAAA,GAAkB;AACxB,IAAM,eAAA,GAAkB;AAExB,IAAM,WAAA,GAAc;AAAA,EACzB,EAAA,EAAM,aAAA;AAAA,EACN,IAAA,EAAM,eAAA;AAAA,EACN,IAAA,EAAM;AACR;AAEO,IAAM,eAAA,GAAoB;AAC1B,IAAM,iBAAA,GAAoB;AAC1B,IAAM,iBAAA,GAAoB;AAE1B,IAAM,aAAA,GAAgB;AAAA,EAC3B,EAAA,EAAM,eAAA;AAAA,EACN,IAAA,EAAM,iBAAA;AAAA,EACN,IAAA,EAAM;AACR;AACO,IAAM,WAAA,GAAc;AACpB,IAAM,YAAA,GAAe;AACrB,IAAM,QAAA,GAAW;AAEjB,IAAM,aAAA,GAAkB;AACxB,IAAM,eAAA,GAAkB;AAExB,IAAM,SAAA,GAAY;AAAA,EACvB,IAAA,EAAQ,aAAA;AAAA,EACR,MAAA,EAAQ;AACV;AAEO,IAAM,eAAA,GAAkB;AAExB,IAAM,SAAA,GAAY;AAAA,EACvB,MAAA,EAAQ;AACV;AACO,IAAM,WAAA,GAAc;AAEpB,IAAM,mBAAA,GAA0B;AAChC,IAAM,uBAAA,GAA0B;AAChC,IAAM,qBAAA,GAA0B;AAEhC,IAAM,iBAAA,GAAoB;AAAA,EAC/B,EAAA,EAAQ,mBAAA;AAAA,EACR,MAAA,EAAQ,uBAAA;AAAA,EACR,IAAA,EAAQ;AACV;AAEO,IAAM,uBAAA,GAA8B;AACpC,IAAM,2BAAA,GAA8B;AACpC,IAAM,yBAAA,GAA8B;AAEpC,IAAM,qBAAA,GAAwB;AAAA,EACnC,EAAA,EAAQ,uBAAA;AAAA,EACR,MAAA,EAAQ,2BAAA;AAAA,EACR,IAAA,EAAQ;AACV;AAEO,IAAM,qBAAA,GAA4B;AAClC,IAAM,yBAAA,GAA4B;AAClC,IAAM,uBAAA,GAA4B;AAElC,IAAM,mBAAA,GAAsB;AAAA,EACjC,EAAA,EAAQ,qBAAA;AAAA,EACR,MAAA,EAAQ,yBAAA;AAAA,EACR,IAAA,EAAQ;AACV;AAEO,IAAM,mBAAA,GAA0B;AAChC,IAAM,uBAAA,GAA0B;AAChC,IAAM,qBAAA,GAA0B;AAEhC,IAAM,iBAAA,GAAoB;AAAA,EAC/B,EAAA,EAAQ,mBAAA;AAAA,EACR,MAAA,EAAQ,uBAAA;AAAA,EACR,IAAA,EAAQ;AACV;AACO,IAAM,gBAAA,GAAmB;AACzB,IAAM,iBAAA,GAAoB;AAC1B,IAAM,aAAA,GAAgB;AACtB,IAAM,gBAAA,GAAmB;AAEzB,IAAM,kBAAA,GAAuB;AAC7B,IAAM,oBAAA,GAAuB;AAE7B,IAAM,cAAA,GAAiB;AAAA,EAC5B,IAAA,EAAQ,kBAAA;AAAA,EACR,MAAA,EAAQ;AACV;AAEO,IAAM,oBAAA,GAAuB;AAE7B,IAAM,cAAA,GAAiB;AAAA,EAC5B,MAAA,EAAQ;AACV;AAEO,IAAM,UAAA,GAAa;AAAA,EACxB,OAAA,EAAa,iBAAA;AAAA,EACb,WAAA,EAAa,qBAAA;AAAA,EACb,SAAA,EAAa,mBAAA;AAAA,EACb,OAAA,EAAa,iBAAA;AAAA,EACb,MAAA,EAAa,gBAAA;AAAA,EACb,OAAA,EAAa,iBAAA;AAAA,EACb,GAAA,EAAa,aAAA;AAAA,EACb,MAAA,EAAa,gBAAA;AAAA,EACb,IAAA,EAAa,cAAA;AAAA,EACb,IAAA,EAAa;AACf;AAEO,IAAM,KAAA,GAAQ;AAAA,EACnB,OAAA,EAAU,YAAA;AAAA,EACV,KAAA,EAAU,UAAA;AAAA,EACV,OAAA,EAAU,YAAA;AAAA,EACV,IAAA,EAAU,SAAA;AAAA,EACV,OAAA,EAAU,YAAA;AAAA,EACV,MAAA,EAAU,WAAA;AAAA,EACV,QAAA,EAAU,aAAA;AAAA,EACV,MAAA,EAAU,WAAA;AAAA,EACV,OAAA,EAAU,YAAA;AAAA,EACV,GAAA,EAAU,QAAA;AAAA,EACV,IAAA,EAAU,SAAA;AAAA,EACV,IAAA,EAAU,SAAA;AAAA,EACV,MAAA,EAAU,WAAA;AAAA,EACV,KAAA,EAAU;AACZ;AAMO,IAAM,eAAA,GAAkB;AAExB,IAAM,aAAA,GAAgB;AAAA,EAC3B,EAAA,EAAI;AACN;AAEO,IAAM,iBAAA,GAAoB;AAE1B,IAAM,eAAA,GAAkB;AAAA,EAC7B,EAAA,EAAI;AACN;AACO,IAAM,WAAA,GAAc;AACpB,IAAM,YAAA,GAAe;AACrB,IAAM,aAAA,GAAgB;AACtB,IAAM,YAAA,GAAe;AAErB,IAAM,eAAA,GAAkB;AACxB,IAAM,aAAA,GAAkB;AAExB,IAAM,WAAA,GAAc;AAAA,EACzB,IAAA,EAAM,eAAA;AAAA,EACN,EAAA,EAAM;AACR;AAEO,IAAM,MAAA,GAAS;AAAA,EACpB,OAAA,EAAW,aAAA;AAAA,EACX,SAAA,EAAW,eAAA;AAAA,EACX,KAAA,EAAW,WAAA;AAAA,EACX,MAAA,EAAW,YAAA;AAAA,EACX,OAAA,EAAW,aAAA;AAAA,EACX,MAAA,EAAW,YAAA;AAAA,EACX,KAAA,EAAW;AACb;AAKO,IAAM,YAAA,GAAe;AACrB,IAAM,cAAA,GAAiB;AACvB,IAAM,cAAA,GAAiB;AAEvB,IAAM,iBAAA,GAAoB;AAE1B,IAAM,eAAA,GAAkB;AAAA,EAC7B,EAAA,EAAI;AACN;AAEO,IAAM,mBAAA,GAAsB;AAE5B,IAAM,iBAAA,GAAoB;AAAA,EAC/B,EAAA,EAAI;AACN;AAEO,IAAM,uBAAA,GAA0B;AAEhC,IAAM,gBAAA,GAAmB;AAAA,EAC9B,OAAA,EAAS;AACX;AAEO,IAAM,iBAAA,GAAqB;AAC3B,IAAM,kBAAA,GAAqB;AAE3B,IAAM,aAAA,GAAgB;AAAA,EAC3B,IAAA,EAAO,iBAAA;AAAA,EACP,KAAA,EAAO;AACT;AAEO,IAAM,QAAA,GAAW;AAAA,EACtB,IAAA,EAAW,YAAA;AAAA,EACX,MAAA,EAAW,cAAA;AAAA,EACX,MAAA,EAAW,cAAA;AAAA,EACX,OAAA,EAAW,eAAA;AAAA,EACX,SAAA,EAAW,iBAAA;AAAA,EACX,QAAA,EAAW,gBAAA;AAAA,EACX,KAAA,EAAW;AACb;AAKO,IAAM,SAAA,GAAY;AAClB,IAAM,WAAA,GAAc;AACpB,IAAM,WAAA,GAAc;AAEpB,IAAM,cAAA,GAAiB;AAEvB,IAAM,YAAA,GAAe;AAAA,EAC1B,EAAA,EAAI;AACN;AAEO,IAAM,gBAAA,GAAmB;AAEzB,IAAM,cAAA,GAAiB;AAAA,EAC5B,EAAA,EAAI;AACN;AAEO,IAAM,YAAA,GAAgB;AACtB,IAAM,aAAA,GAAgB;AAEtB,IAAM,QAAA,GAAW;AAAA,EACtB,IAAA,EAAO,YAAA;AAAA,EACP,KAAA,EAAO;AACT;AAEO,IAAM,oBAAA,GAAuB;AAE7B,IAAM,aAAA,GAAgB;AAAA,EAC3B,OAAA,EAAS;AACX;AACO,IAAM,QAAA,GAAW;AAEjB,IAAM,cAAA,GAAmB;AACzB,IAAM,gBAAA,GAAmB;AACzB,IAAM,eAAA,GAAmB;AAEzB,IAAM,UAAA,GAAa;AAAA,EACxB,IAAA,EAAQ,cAAA;AAAA,EACR,MAAA,EAAQ,gBAAA;AAAA,EACR,KAAA,EAAQ;AACV;AAEO,IAAM,KAAA,GAAQ;AAAA,EACnB,IAAA,EAAW,SAAA;AAAA,EACX,MAAA,EAAW,WAAA;AAAA,EACX,MAAA,EAAW,WAAA;AAAA,EACX,OAAA,EAAW,YAAA;AAAA,EACX,SAAA,EAAW,cAAA;AAAA,EACX,GAAA,EAAW,QAAA;AAAA,EACX,QAAA,EAAW,aAAA;AAAA,EACX,GAAA,EAAW,QAAA;AAAA,EACX,KAAA,EAAW;AACb;AAKO,IAAM,iBAAA,GAAoB;AAC1B,IAAM,aAAA,GAAgB;AAEtB,IAAM,mBAAA,GAAsB;AAE5B,IAAM,iBAAA,GAAoB;AAAA,EAC/B,EAAA,EAAI;AACN;AACO,IAAM,iBAAA,GAAoB;AAE1B,IAAM,WAAA,GAAc;AAAA,EACzB,MAAA,EAAQ,iBAAA;AAAA,EACR,EAAA,EAAQ,aAAA;AAAA,EACR,MAAA,EAAQ,iBAAA;AAAA,EACR,MAAA,EAAQ;AACV;AACO,IAAM,eAAA,GAAkB;AACxB,IAAM,aAAA,GAAgB;AAEtB,IAAM,sBAAA,GAAyB;AAE/B,IAAM,iBAAA,GAAoB;AAAA,EAC/B,KAAA,EAAO;AACT;AAEO,IAAM,sBAAA,GAAyB;AAE/B,IAAM,iBAAA,GAAoB;AAAA,EAC/B,KAAA,EAAO;AACT;AAEO,IAAM,WAAA,GAAc;AAAA,EACzB,IAAA,EAAQ,eAAA;AAAA,EACR,EAAA,EAAQ,aAAA;AAAA,EACR,MAAA,EAAQ,iBAAA;AAAA,EACR,MAAA,EAAQ;AACV;AAEO,IAAM,gBAAA,GAAoB;AAC1B,IAAM,eAAA,GAAoB;AAC1B,IAAM,iBAAA,GAAoB;AAE1B,IAAM,WAAA,GAAc;AAAA,EACzB,KAAA,EAAQ,gBAAA;AAAA,EACR,IAAA,EAAQ,eAAA;AAAA,EACR,MAAA,EAAQ;AACV;AAEO,IAAM,gBAAA,GAAmB;AACzB,IAAM,eAAA,GAAmB;AAEzB,IAAM,WAAA,GAAc;AAAA,EACzB,KAAA,EAAO,gBAAA;AAAA,EACP,IAAA,EAAO;AACT;AAEO,IAAM,eAAA,GAAkB;AACxB,IAAM,cAAA,GAAkB;AAExB,IAAM,UAAA,GAAa;AAAA,EACxB,KAAA,EAAO,eAAA;AAAA,EACP,IAAA,EAAO;AACT;AAEO,IAAM,qBAAA,GAAwB;AAE9B,IAAM,cAAA,GAAiB;AAAA,EAC5B,OAAA,EAAS;AACX;AAEO,IAAM,MAAA,GAAS;AAAA,EACpB,KAAA,EAAU,WAAA;AAAA,EACV,KAAA,EAAU,WAAA;AAAA,EACV,KAAA,EAAU,WAAA;AAAA,EACV,KAAA,EAAU,WAAA;AAAA,EACV,IAAA,EAAU,UAAA;AAAA,EACV,QAAA,EAAU;AACZ;AAMO,IAAM,eAAA,GAAkB;AAExB,IAAM,OAAA,GAAU;AAAA,EACrB,QAAA,EAAU;AACZ;AACO,IAAM,SAAA,GAAY;AAClB,IAAM,gBAAA,GAAmB;AAEzB,IAAM,gBAAA,GAAqB;AAC3B,IAAM,gBAAA,GAAqB;AAC3B,IAAM,kBAAA,GAAqB;AAC3B,IAAM,kBAAA,GAAqB;AAE3B,IAAM,WAAA,GAAc;AAAA,EACzB,KAAA,EAAS,gBAAA;AAAA,EACT,KAAA,EAAS,gBAAA;AAAA,EACT,OAAA,EAAS,kBAAA;AAAA,EACT,OAAA,EAAS;AACX;AACO,IAAM,WAAA,GAAc;AAEpB,IAAM,aAAA,GAAgB;AACtB,IAAM,aAAA,GAAgB;AAEtB,IAAM,YAAA,GAAe;AAAA,EAC1B,CAAA,EAAG,aAAA;AAAA,EACH,CAAA,EAAG;AACL;AACO,IAAM,WAAA,GAAc;AAEpB,IAAM,aAAA,GAAgB;AAEtB,IAAM,SAAA,GAAY;AAAA,EACvB,IAAA,EAAM;AACR;AAEO,IAAM,eAAA,GAAmB;AACzB,IAAM,cAAA,GAAmB;AACzB,IAAM,gBAAA,GAAmB;AAEzB,IAAM,UAAA,GAAa;AAAA,EACxB,KAAA,EAAQ,eAAA;AAAA,EACR,IAAA,EAAQ,cAAA;AAAA,EACR,MAAA,EAAQ;AACV;AAEO,IAAM,qBAAA,GAAwB;AAC9B,IAAM,qBAAA,GAAwB;AAC9B,IAAM,mBAAA,GAAwB;AAE9B,IAAM,cAAA,GAAiB;AAAA,EAC5B,OAAA,EAAS,qBAAA;AAAA,EACT,OAAA,EAAS,qBAAA;AAAA,EACT,KAAA,EAAS;AACX;AACO,IAAM,aAAA,GAAgB;AAEtB,IAAM,SAAA,GAAY;AAAA,EACvB,KAAA,EAAO,cAAA;AAAA,EACP,IAAA,EAAO;AACT;AAEO,IAAM,gBAAA,GAAmB;AAEzB,IAAM,WAAA,GAAc;AAAA,EACzB,KAAA,EAAO;AACT;AAEO,IAAM,KAAA,GAAQ;AAAA,EACnB,EAAA,EAAa,OAAA;AAAA,EACb,IAAA,EAAa,SAAA;AAAA,EACb,WAAA,EAAa,gBAAA;AAAA,EACb,MAAA,EAAa,WAAA;AAAA,EACb,MAAA,EAAa,WAAA;AAAA,EACb,OAAA,EAAa,YAAA;AAAA,EACb,MAAA,EAAa,WAAA;AAAA,EACb,IAAA,EAAa,SAAA;AAAA,EACb,KAAA,EAAa,UAAA;AAAA,EACb,IAAA,EAAa,SAAA;AAAA,EACb,MAAA,EAAa;AACf;AAMO,IAAM,gBAAA,GAAmB;AAEzB,IAAM,QAAA,GAAW;AAAA,EACtB,QAAA,EAAU;AACZ;AACO,IAAM,UAAA,GAAa;AACnB,IAAM,iBAAA,GAAoB;AAE1B,IAAM,iBAAA,GAAsB;AAC5B,IAAM,mBAAA,GAAsB;AAE5B,IAAM,YAAA,GAAe;AAAA,EAC1B,KAAA,EAAS,iBAAA;AAAA,EACT,OAAA,EAAS;AACX;AACO,IAAM,YAAA,GAAe;AAErB,IAAM,cAAA,GAAiB;AACvB,IAAM,cAAA,GAAiB;AAEvB,IAAM,aAAA,GAAgB;AAAA,EAC3B,CAAA,EAAG,cAAA;AAAA,EACH,CAAA,EAAG;AACL;AACO,IAAM,YAAA,GAAe;AAErB,IAAM,cAAA,GAAiB;AAEvB,IAAM,UAAA,GAAa;AAAA,EACxB,IAAA,EAAM;AACR;AAEO,IAAM,kBAAA,GAAqB;AAE3B,IAAM,aAAA,GAAgB;AAAA,EAC3B,KAAA,EAAO;AACT;AAEO,IAAM,aAAA,GAAoB;AAC1B,IAAM,iBAAA,GAAoB;AAC1B,IAAM,iBAAA,GAAoB;AAC1B,IAAM,iBAAA,GAAoB;AAC1B,IAAM,YAAA,GAAoB;AAE1B,IAAM,WAAA,GAAc;AAAA,EACzB,EAAA,EAAQ,aAAA;AAAA,EACR,MAAA,EAAQ,iBAAA;AAAA,EACR,MAAA,EAAQ,iBAAA;AAAA,EACR,MAAA,EAAQ,iBAAA;AAAA,EACR,CAAA,EAAQ;AACV;AAEO,IAAM,mBAAA,GAAsB;AAE5B,IAAM,iBAAA,GAAoB;AAAA,EAC/B,EAAA,EAAI;AACN;AAEO,IAAM,oBAAA,GAAuB;AAE7B,IAAM,kBAAA,GAAqB;AAAA,EAChC,EAAA,EAAI;AACN;AAEO,IAAM,sBAAA,GAAyB;AAC/B,IAAM,sBAAA,GAAyB;AAE/B,IAAM,oBAAA,GAAuB;AAAA,EAClC,EAAA,EAAI,sBAAA;AAAA,EACJ,EAAA,EAAI;AACN;AAEO,IAAM,YAAA,GAAe;AAAA,EAC1B,KAAA,EAAU,iBAAA;AAAA,EACV,MAAA,EAAU,kBAAA;AAAA,EACV,QAAA,EAAU;AACZ;AAEO,IAAM,WAAA,GAAkB;AACxB,IAAM,WAAA,GAAkB;AACxB,IAAM,eAAA,GAAkB;AAExB,IAAM,SAAA,GAAY;AAAA,EACvB,EAAA,EAAQ,WAAA;AAAA,EACR,EAAA,EAAQ,WAAA;AAAA,EACR,MAAA,EAAQ;AACV;AAEO,IAAM,MAAA,GAAS;AAAA,EACpB,EAAA,EAAa,QAAA;AAAA,EACb,IAAA,EAAa,UAAA;AAAA,EACb,WAAA,EAAa,iBAAA;AAAA,EACb,MAAA,EAAa,YAAA;AAAA,EACb,MAAA,EAAa,YAAA;AAAA,EACb,OAAA,EAAa,aAAA;AAAA,EACb,MAAA,EAAa,YAAA;AAAA,EACb,IAAA,EAAa,UAAA;AAAA,EACb,OAAA,EAAa,aAAA;AAAA,EACb,KAAA,EAAa,WAAA;AAAA,EACb,MAAA,EAAa,YAAA;AAAA,EACb,GAAA,EAAa;AACf;AAMO,IAAM,UAAA,GAAgB;AACtB,IAAM,aAAA,GAAgB;AAEtB,IAAM,KAAA,GAAQ;AAAA,EACnB,KAAA,EAAU,UAAA;AAAA,EACV,QAAA,EAAU;AACZ;AAEO,IAAM,eAAA,GAAkB;AAExB,IAAM,OAAA,GAAU;AAAA,EACrB,QAAA,EAAU;AACZ;AAEO,IAAM,iBAAA,GAAoB;AAE1B,IAAM,SAAA,GAAY;AAAA,EACvB,QAAA,EAAU;AACZ;AACO,IAAM,SAAA,GAAY;AAClB,IAAM,UAAA,GAAa;AACnB,IAAM,MAAA,GAAS;AAEf,IAAM,WAAA,GAAgB;AACtB,IAAM,aAAA,GAAgB;AAEtB,IAAM,OAAA,GAAU;AAAA,EACrB,IAAA,EAAQ,WAAA;AAAA,EACR,MAAA,EAAQ;AACV;AACO,IAAM,SAAA,GAAY;AAElB,IAAM,sBAAA,GAAyB;AAE/B,IAAM,cAAA,GAAiB;AAAA,EAC5B,QAAA,EAAU;AACZ;AAEO,IAAM,gBAAA,GAAmB;AAEzB,IAAM,cAAA,GAAiB;AAAA,EAC5B,EAAA,EAAI;AACN;AAEO,IAAM,SAAA,GAAY;AAAA,EACvB,KAAA,EAAO,cAAA;AAAA,EACP,KAAA,EAAO;AACT;AAEO,IAAM,GAAA,GAAM;AAAA,EACjB,EAAA,EAAS,KAAA;AAAA,EACT,IAAA,EAAS,OAAA;AAAA,EACT,MAAA,EAAS,SAAA;AAAA,EACT,MAAA,EAAS,SAAA;AAAA,EACT,OAAA,EAAS,UAAA;AAAA,EACT,GAAA,EAAS,MAAA;AAAA,EACT,IAAA,EAAS,OAAA;AAAA,EACT,MAAA,EAAS,SAAA;AAAA,EACT,MAAA,EAAS;AACX;AAKO,IAAM,YAAA,GAAe;AAErB,IAAM,iBAAA,GAAoB;AAE1B,IAAM,YAAA,GAAe;AAAA,EAC1B,KAAA,EAAO;AACT;AAEO,IAAM,aAAA,GAAgB;AACtB,IAAM,aAAA,GAAgB;AACtB,IAAM,aAAA,GAAgB;AAEtB,IAAM,WAAA,GAAc;AAAA,EACzB,EAAA,EAAI,aAAA;AAAA,EACJ,EAAA,EAAI,aAAA;AAAA,EACJ,EAAA,EAAI;AACN;AAEO,IAAM,eAAA,GAAkB;AACxB,IAAM,eAAA,GAAkB;AACxB,IAAM,eAAA,GAAkB;AAExB,IAAM,aAAA,GAAgB;AAAA,EAC3B,EAAA,EAAI,eAAA;AAAA,EACJ,EAAA,EAAI,eAAA;AAAA,EACJ,EAAA,EAAI;AACN;AAEO,IAAM,OAAA,GAAU;AAAA,EACrB,KAAA,EAAQ,YAAA;AAAA,EACR,KAAA,EAAQ,YAAA;AAAA,EACR,IAAA,EAAQ,WAAA;AAAA,EACR,MAAA,EAAQ;AACV;AAKO,IAAM,SAAA,GAAY;AAClB,IAAM,WAAA,GAAc;AACpB,IAAM,aAAA,GAAgB;AACtB,IAAM,cAAA,GAAiB;AAEvB,IAAM,eAAA,GAAoB;AAC1B,IAAM,iBAAA,GAAoB;AAE1B,IAAM,WAAA,GAAc;AAAA,EACzB,IAAA,EAAQ,eAAA;AAAA,EACR,MAAA,EAAQ;AACV;AAEO,IAAM,gBAAA,GAAmB;AAEzB,IAAM,YAAA,GAAe;AAAA,EAC1B,IAAA,EAAM;AACR;AACO,IAAM,aAAA,GAAgB;AAEtB,IAAM,eAAA,GAAkB;AAExB,IAAM,UAAA,GAAa;AAAA,EACxB,KAAA,EAAO;AACT;AAEO,IAAM,OAAA,GAAU;AAAA,EACrB,EAAA,EAAS,SAAA;AAAA,EACT,IAAA,EAAS,WAAA;AAAA,EACT,MAAA,EAAS,aAAA;AAAA,EACT,OAAA,EAAS,cAAA;AAAA,EACT,IAAA,EAAS,WAAA;AAAA,EACT,KAAA,EAAS,YAAA;AAAA,EACT,MAAA,EAAS,aAAA;AAAA,EACT,GAAA,EAAS;AACX;AAKO,IAAM,MAAA,GAAS;AACf,IAAM,UAAA,GAAa;AACnB,IAAM,UAAA,GAAa;AACnB,IAAM,WAAA,GAAc;AAEpB,IAAM,kBAAA,GAAqB;AAE3B,IAAM,UAAA,GAAa;AAAA,EACxB,QAAA,EAAU;AACZ;AAEO,IAAM,IAAA,GAAO;AAAA,EAClB,EAAA,EAAS,MAAA;AAAA,EACT,MAAA,EAAS,UAAA;AAAA,EACT,MAAA,EAAS,UAAA;AAAA,EACT,OAAA,EAAS,WAAA;AAAA,EACT,MAAA,EAAS;AACX;AAMO,IAAM,gBAAA,GAAmB;AACzB,IAAM,cAAA,GAAmB;AAEzB,IAAM,QAAA,GAAW;AAAA,EACtB,QAAA,EAAU,gBAAA;AAAA,EACV,MAAA,EAAU;AACZ;AAEO,IAAM,kBAAA,GAAqB;AAC3B,IAAM,gBAAA,GAAqB;AAE3B,IAAM,UAAA,GAAa;AAAA,EACxB,QAAA,EAAU,kBAAA;AAAA,EACV,MAAA,EAAU;AACZ;AAEO,IAAM,0BAAA,GAA6B;AACnC,IAAM,wBAAA,GAA6B;AAEnC,IAAM,kBAAA,GAAqB;AAAA,EAChC,QAAA,EAAU,0BAAA;AAAA,EACV,MAAA,EAAU;AACZ;AAEO,IAAM,YAAA,GAAe;AAAA,EAC1B,MAAA,EAAQ;AACV;AAEO,IAAM,YAAA,GAAe;AACrB,IAAM,YAAA,GAAe;AACrB,IAAM,YAAA,GAAe;AAErB,IAAM,UAAA,GAAa;AAAA,EACxB,EAAA,EAAI,YAAA;AAAA,EACJ,EAAA,EAAI,YAAA;AAAA,EACJ,EAAA,EAAI;AACN;AAEO,IAAM,YAAA,GAAmB;AACzB,IAAM,YAAA,GAAmB;AACzB,IAAM,YAAA,GAAmB;AACzB,IAAM,gBAAA,GAAmB;AAEzB,IAAM,UAAA,GAAa;AAAA,EACxB,EAAA,EAAQ,YAAA;AAAA,EACR,EAAA,EAAQ,YAAA;AAAA,EACR,EAAA,EAAQ,YAAA;AAAA,EACR,MAAA,EAAQ;AACV;AAEO,IAAM,mBAAA,GAAsB;AAE5B,IAAM,YAAA,GAAe;AAAA,EAC1B,OAAA,EAAS;AACX;AAEO,IAAM,MAAA,GAAS;AAAA,EACpB,EAAA,EAAQ,QAAA;AAAA,EACR,IAAA,EAAQ,UAAA;AAAA,EACR,MAAA,EAAQ,YAAA;AAAA,EACR,IAAA,EAAQ,UAAA;AAAA,EACR,IAAA,EAAQ,UAAA;AAAA,EACR,MAAA,EAAQ;AACV;AAMO,IAAM,eAAA,GAAkB;AAExB,IAAM,aAAA,GAAgB;AAAA,EAC3B,EAAA,EAAI;AACN;AAEO,IAAM,cAAA,GAAiB;AAEvB,IAAM,YAAA,GAAe;AAAA,EAC1B,EAAA,EAAI;AACN;AACO,IAAM,cAAA,GAAiB;AAEvB,IAAM,gBAAA,GAAmB;AACzB,IAAM,gBAAA,GAAmB;AACzB,IAAM,gBAAA,GAAmB;AAEzB,IAAM,cAAA,GAAiB;AAAA,EAC5B,EAAA,EAAI,gBAAA;AAAA,EACJ,EAAA,EAAI,gBAAA;AAAA,EACJ,EAAA,EAAI;AACN;AAEO,IAAM,kBAAA,GAAqB;AAC3B,IAAM,iBAAA,GAAqB;AAE3B,IAAM,aAAA,GAAgB;AAAA,EAC3B,KAAA,EAAO,kBAAA;AAAA,EACP,IAAA,EAAO;AACT;AAEO,IAAM,QAAA,GAAW;AAAA,EACtB,KAAA,EAAQ,aAAA;AAAA,EACR,IAAA,EAAQ,YAAA;AAAA,EACR,MAAA,EAAQ,cAAA;AAAA,EACR,MAAA,EAAQ,cAAA;AAAA,EACR,KAAA,EAAQ;AACV;AAKO,IAAM,UAAA,GAAa;AACnB,IAAM,iBAAA,GAAoB;AAE1B,IAAM,gBAAA,GAAmB;AACzB,IAAM,gBAAA,GAAmB;AAEzB,IAAM,cAAA,GAAiB;AAAA,EAC5B,EAAA,EAAI,gBAAA;AAAA,EACJ,EAAA,EAAI;AACN;AAEO,IAAM,kBAAA,GAAqB;AAE3B,IAAM,aAAA,GAAgB;AAAA,EAC3B,KAAA,EAAO;AACT;AACO,IAAM,gBAAA,GAAmB;AAEzB,IAAM,QAAA,GAAW;AAAA,EACtB,EAAA,EAAW,UAAA;AAAA,EACX,SAAA,EAAW,iBAAA;AAAA,EACX,MAAA,EAAW,cAAA;AAAA,EACX,KAAA,EAAW,aAAA;AAAA,EACX,QAAA,EAAW;AACb;AAKO,IAAM,WAAA,GAAc;AACpB,IAAM,cAAA,GAAiB;AACvB,IAAM,kBAAA,GAAqB;AAC3B,IAAM,iBAAA,GAAoB;AAE1B,IAAM,oBAAA,GAAuB;AAE7B,IAAM,eAAA,GAAkB;AAAA,EAC7B,KAAA,EAAO;AACT;AACO,IAAM,mBAAA,GAAsB;AAC5B,IAAM,kBAAA,GAAqB;AAC3B,IAAM,mBAAA,GAAsB;AAC5B,IAAM,mBAAA,GAAsB;AAE5B,IAAM,4BAAA,GAA+B;AAErC,IAAM,qBAAA,GAAwB;AAAA,EACnC,OAAA,EAAS;AACX;AAEO,IAAM,aAAA,GAAgB;AAAA,EAC3B,IAAA,EAAU,iBAAA;AAAA,EACV,EAAA,EAAU,eAAA;AAAA,EACV,MAAA,EAAU,mBAAA;AAAA,EACV,KAAA,EAAU,kBAAA;AAAA,EACV,MAAA,EAAU,mBAAA;AAAA,EACV,MAAA,EAAU,mBAAA;AAAA,EACV,QAAA,EAAU;AACZ;AAEO,IAAM,qBAAA,GAAwB;AAE9B,IAAM,eAAA,GAAkB;AAAA,EAC7B,MAAA,EAAQ;AACV;AAEO,IAAM,mBAAA,GAAsB;AAE5B,IAAM,aAAA,GAAgB;AAAA,EAC3B,MAAA,EAAQ;AACV;AACO,IAAM,cAAA,GAAiB;AAEvB,IAAM,oBAAA,GAAuB;AAE7B,IAAM,cAAA,GAAiB;AAAA,EAC5B,MAAA,EAAQ;AACV;AAEO,IAAM,WAAA,GAAc;AAAA,EACzB,IAAA,EAAM,eAAA;AAAA,EACN,EAAA,EAAM,aAAA;AAAA,EACN,GAAA,EAAM,cAAA;AAAA,EACN,GAAA,EAAM;AACR;AAEO,IAAM,QAAA,GAAW;AAAA,EACtB,GAAA,EAAY,WAAA;AAAA,EACZ,MAAA,EAAY,cAAA;AAAA,EACZ,UAAA,EAAY,kBAAA;AAAA,EACZ,KAAA,EAAY,aAAA;AAAA,EACZ,GAAA,EAAY;AACd;AAMO,IAAM,eAAA,GAAkB;AAExB,IAAM,aAAA,GAAgB;AAAA,EAC3B,EAAA,EAAI;AACN;AACO,IAAM,QAAA,GAAW;AACjB,IAAM,YAAA,GAAe;AACrB,IAAM,YAAA,GAAe;AACrB,IAAM,aAAA,GAAgB;AAEtB,IAAM,cAAA,GAAiB;AAEvB,IAAM,SAAA,GAAY;AAAA,EACvB,KAAA,EAAO;AACT;AAEO,IAAM,eAAA,GAAoB;AAC1B,IAAM,iBAAA,GAAoB;AAC1B,IAAM,gBAAA,GAAoB;AAE1B,IAAM,WAAA,GAAc;AAAA,EACzB,IAAA,EAAQ,eAAA;AAAA,EACR,MAAA,EAAQ,iBAAA;AAAA,EACR,KAAA,EAAQ;AACV;AAEO,IAAM,eAAA,GAAkB;AAExB,IAAM,UAAA,GAAa;AAAA,EACxB,KAAA,EAAO;AACT;AACO,IAAM,gBAAA,GAAmB;AAEzB,IAAM,kBAAA,GAAqB;AAE3B,IAAM,gBAAA,GAAmB;AAAA,EAC9B,EAAA,EAAI;AACN;AAEO,IAAM,WAAA,GAAc;AAAA,EACzB,KAAA,EAAO,gBAAA;AAAA,EACP,KAAA,EAAO;AACT;AAEO,IAAM,MAAA,GAAS;AAAA,EACpB,OAAA,EAAS,aAAA;AAAA,EACT,EAAA,EAAS,QAAA;AAAA,EACT,MAAA,EAAS,YAAA;AAAA,EACT,MAAA,EAAS,YAAA;AAAA,EACT,OAAA,EAAS,aAAA;AAAA,EACT,GAAA,EAAS,SAAA;AAAA,EACT,KAAA,EAAS,WAAA;AAAA,EACT,IAAA,EAAS,UAAA;AAAA,EACT,KAAA,EAAS;AACX;AAKO,IAAM,OAAA,GAAU;AAChB,IAAM,SAAA,GAAY;AAClB,IAAM,WAAA,GAAc;AACpB,IAAM,YAAA,GAAe;AACrB,IAAM,WAAA,GAAc;AACpB,IAAM,QAAA,GAAW;AAEjB,IAAM,aAAA,GAAgB;AAEtB,IAAM,QAAA,GAAW;AAAA,EACtB,KAAA,EAAO;AACT;AAEO,IAAM,aAAA,GAAgB;AAEtB,IAAM,QAAA,GAAW;AAAA,EACtB,KAAA,EAAO;AACT;AAEO,IAAM,cAAA,GAAiB;AAEvB,IAAM,YAAA,GAAe;AAAA,EAC1B,EAAA,EAAI;AACN;AAEO,IAAM,YAAA,GAAe;AAErB,IAAM,UAAA,GAAa;AAAA,EACxB,EAAA,EAAI;AACN;AAEO,IAAM,cAAA,GAAiB;AAEvB,IAAM,YAAA,GAAe;AAAA,EAC1B,EAAA,EAAI;AACN;AAEO,IAAM,WAAA,GAAc;AAEpB,IAAM,SAAA,GAAY;AAAA,EACvB,EAAA,EAAI;AACN;AAEO,IAAM,KAAA,GAAQ;AAAA,EACnB,EAAA,EAAS,OAAA;AAAA,EACT,IAAA,EAAS,SAAA;AAAA,EACT,MAAA,EAAS,WAAA;AAAA,EACT,OAAA,EAAS,YAAA;AAAA,EACT,MAAA,EAAS,WAAA;AAAA,EACT,GAAA,EAAS,QAAA;AAAA,EACT,GAAA,EAAS,QAAA;AAAA,EACT,GAAA,EAAS,QAAA;AAAA,EACT,OAAA,EAAS,YAAA;AAAA,EACT,KAAA,EAAS,UAAA;AAAA,EACT,OAAA,EAAS,YAAA;AAAA,EACT,IAAA,EAAS;AACX;AAMO,IAAM,cAAA,GAAiB;AAEvB,IAAM,QAAA,GAAW;AAAA,EACtB,MAAA,EAAQ;AACV;AAEO,IAAM,kBAAA,GAAqB;AAC3B,IAAM,iBAAA,GAAqB;AAE3B,IAAM,YAAA,GAAe;AAAA,EAC1B,MAAA,EAAQ,kBAAA;AAAA,EACR,KAAA,EAAQ;AACV;AACO,IAAM,cAAA,GAAiB;AACvB,IAAM,aAAA,GAAgB;AAEtB,IAAM,eAAA,GAAoB;AAC1B,IAAM,iBAAA,GAAoB;AAE1B,IAAM,WAAA,GAAc;AAAA,EACzB,IAAA,EAAQ,eAAA;AAAA,EACR,MAAA,EAAQ;AACV;AAEO,IAAM,OAAA,GAAU;AAAA,EACrB,KAAA,EAAS,YAAA;AAAA,EACT,OAAA,EAAS,cAAA;AAAA,EACT,MAAA,EAAS,aAAA;AAAA,EACT,IAAA,EAAS;AACX;AAEO,IAAM,kBAAA,GAAsB;AAC5B,IAAM,mBAAA,GAAsB;AAE5B,IAAM,aAAA,GAAgB;AAAA,EAC3B,KAAA,EAAQ,kBAAA;AAAA,EACR,MAAA,EAAQ;AACV;AAEO,IAAM,mBAAA,GAAsB;AAE5B,IAAM,YAAA,GAAe;AAAA,EAC1B,OAAA,EAAS;AACX;AAEO,IAAM,gBAAA,GAAmB;AAEzB,IAAM,UAAA,GAAa;AAAA,EACxB,MAAA,EAAQ;AACV;AAEO,IAAM,kBAAA,GAAqB;AAE3B,IAAM,YAAA,GAAe;AAAA,EAC1B,MAAA,EAAQ;AACV;AAEO,IAAM,QAAA,GAAW;AAAA,EACtB,EAAA,EAAM,UAAA;AAAA,EACN,IAAA,EAAM;AACR;AAEO,IAAM,IAAA,GAAO;AAAA,EAClB,IAAA,EAAW,QAAA;AAAA,EACX,GAAA,EAAW,OAAA;AAAA,EACX,SAAA,EAAW,aAAA;AAAA,EACX,QAAA,EAAW,YAAA;AAAA,EACX,IAAA,EAAW;AACb;AAKO,IAAM,WAAA,GAAc;AACpB,IAAM,eAAA,GAAkB;AACxB,IAAM,eAAA,GAAkB;AACxB,IAAM,sBAAA,GAAyB;AAE/B,IAAM,sBAAA,GAAyB;AAE/B,IAAM,iBAAA,GAAoB;AAAA,EAC/B,KAAA,EAAO;AACT;AACO,IAAM,qBAAA,GAAwB;AAE9B,IAAM,eAAA,GAAkB;AAAA,EAC7B,OAAA,EAAS,sBAAA;AAAA,EACT,EAAA,EAAS,iBAAA;AAAA,EACT,MAAA,EAAS;AACX;AACO,IAAM,oBAAA,GAAuB;AAC7B,IAAM,iBAAA,GAAoB;AAE1B,IAAM,uBAAA,GAA0B;AAEhC,IAAM,iBAAA,GAAoB;AAAA,EAC/B,MAAA,EAAQ;AACV;AAEO,IAAM,sBAAA,GAAyB;AAE/B,IAAM,gBAAA,GAAmB;AAAA,EAC9B,MAAA,EAAQ;AACV;AACO,IAAM,kBAAA,GAAqB;AAE3B,IAAM,aAAA,GAAgB;AAAA,EAC3B,OAAA,EAAS,oBAAA;AAAA,EACT,IAAA,EAAS,iBAAA;AAAA,EACT,IAAA,EAAS,iBAAA;AAAA,EACT,GAAA,EAAS,gBAAA;AAAA,EACT,KAAA,EAAS;AACX;AAEO,IAAM,mBAAA,GAAuB;AAC7B,IAAM,kBAAA,GAAuB;AAC7B,IAAM,oBAAA,GAAuB;AAE7B,IAAM,cAAA,GAAiB;AAAA,EAC5B,KAAA,EAAQ,mBAAA;AAAA,EACR,IAAA,EAAQ,kBAAA;AAAA,EACR,MAAA,EAAQ;AACV;AAEO,IAAM,qBAAA,GAAwB;AAE9B,IAAM,gBAAA,GAAmB;AAAA,EAC9B,KAAA,EAAO;AACT;AACO,IAAM,mBAAA,GAAsB;AAE5B,IAAM,SAAA,GAAY;AAAA,EACvB,EAAA,EAAY,WAAA;AAAA,EACZ,MAAA,EAAY,eAAA;AAAA,EACZ,MAAA,EAAY,eAAA;AAAA,EACZ,MAAA,EAAY,eAAA;AAAA,EACZ,IAAA,EAAY,aAAA;AAAA,EACZ,KAAA,EAAY,cAAA;AAAA,EACZ,OAAA,EAAY,gBAAA;AAAA,EACZ,UAAA,EAAY;AACd;AAKO,IAAM,WAAA,GAAc;AACpB,IAAM,YAAA,GAAe;AACrB,IAAM,QAAA,GAAW;AAEjB,IAAM,gBAAA,GAAmB;AACzB,IAAM,cAAA,GAAmB;AAEzB,IAAM,UAAA,GAAa;AAAA,EACxB,MAAA,EAAQ,gBAAA;AAAA,EACR,IAAA,EAAQ;AACV;AAEO,IAAM,aAAA,GAAgB;AAEtB,IAAM,SAAA,GAAY;AAAA,EACvB,IAAA,EAAM;AACR;AACO,IAAM,cAAA,GAAiB;AACvB,IAAM,iBAAA,GAAoB;AAE1B,IAAM,iBAAA,GAAoB;AAE1B,IAAM,eAAA,GAAkB;AAAA,EAC7B,EAAA,EAAI;AACN;AAEO,IAAM,UAAA,GAAa;AAAA,EACxB,IAAA,EAAS,cAAA;AAAA,EACT,OAAA,EAAS,iBAAA;AAAA,EACT,KAAA,EAAS;AACX;AACO,IAAM,eAAA,GAAkB;AAExB,IAAM,WAAA,GAAkB;AACxB,IAAM,eAAA,GAAkB;AACxB,IAAM,aAAA,GAAkB;AACxB,IAAM,aAAA,GAAkB;AAExB,IAAM,SAAA,GAAY;AAAA,EACvB,EAAA,EAAQ,WAAA;AAAA,EACR,MAAA,EAAQ,eAAA;AAAA,EACR,IAAA,EAAQ,aAAA;AAAA,EACR,IAAA,EAAQ;AACV;AAEO,IAAM,cAAA,GAAqB;AAC3B,IAAM,kBAAA,GAAqB;AAC3B,IAAM,gBAAA,GAAqB;AAC3B,IAAM,gBAAA,GAAqB;AAE3B,IAAM,YAAA,GAAe;AAAA,EAC1B,EAAA,EAAQ,cAAA;AAAA,EACR,MAAA,EAAQ,kBAAA;AAAA,EACR,IAAA,EAAQ,gBAAA;AAAA,EACR,IAAA,EAAQ;AACV;AAEO,IAAM,cAAA,GAAqB;AAC3B,IAAM,kBAAA,GAAqB;AAC3B,IAAM,gBAAA,GAAqB;AAC3B,IAAM,gBAAA,GAAqB;AAE3B,IAAM,YAAA,GAAe;AAAA,EAC1B,EAAA,EAAQ,cAAA;AAAA,EACR,MAAA,EAAQ,kBAAA;AAAA,EACR,IAAA,EAAQ,gBAAA;AAAA,EACR,IAAA,EAAQ;AACV;AAEO,IAAM,aAAA,GAAoB;AAC1B,IAAM,iBAAA,GAAoB;AAC1B,IAAM,eAAA,GAAoB;AAC1B,IAAM,eAAA,GAAoB;AAE1B,IAAM,WAAA,GAAc;AAAA,EACzB,EAAA,EAAQ,aAAA;AAAA,EACR,MAAA,EAAQ,iBAAA;AAAA,EACR,IAAA,EAAQ,eAAA;AAAA,EACR,IAAA,EAAQ;AACV;AAEO,IAAM,KAAA,GAAQ;AAAA,EACnB,MAAA,EAAY,WAAA;AAAA,EACZ,OAAA,EAAY,YAAA;AAAA,EACZ,GAAA,EAAY,QAAA;AAAA,EACZ,KAAA,EAAY,UAAA;AAAA,EACZ,IAAA,EAAY,SAAA;AAAA,EACZ,KAAA,EAAY,UAAA;AAAA,EACZ,UAAA,EAAY,eAAA;AAAA,EACZ,IAAA,EAAY,SAAA;AAAA,EACZ,OAAA,EAAY,YAAA;AAAA,EACZ,OAAA,EAAY,YAAA;AAAA,EACZ,MAAA,EAAY;AACd;AAMO,IAAM,kBAAA,GAAqB;AAE3B,IAAM,YAAA,GAAe;AAAA,EAC1B,MAAA,EAAQ;AACV;AACO,IAAM,gBAAA,GAAmB;AACzB,IAAM,cAAA,GAAiB;AAEvB,IAAM,gBAAA,GAAqB;AAC3B,IAAM,eAAA,GAAqB;AAC3B,IAAM,kBAAA,GAAqB;AAE3B,IAAM,WAAA,GAAc;AAAA,EACzB,KAAA,EAAS,gBAAA;AAAA,EACT,IAAA,EAAS,eAAA;AAAA,EACT,OAAA,EAAS;AACX;AAEO,IAAM,OAAA,GAAU;AAAA,EACrB,KAAA,EAAW,YAAA;AAAA,EACX,SAAA,EAAW,gBAAA;AAAA,EACX,OAAA,EAAW,cAAA;AAAA,EACX,IAAA,EAAW;AACb;AAMO,IAAM,oBAAA,GAAyB;AAC/B,IAAM,sBAAA,GAAyB;AAE/B,IAAM,eAAA,GAAkB;AAAA,EAC7B,KAAA,EAAS,oBAAA;AAAA,EACT,OAAA,EAAS;AACX;AAEO,IAAM,wBAAA,GAA2B;AAEjC,IAAM,mBAAA,GAAsB;AAAA,EACjC,KAAA,EAAO;AACT;AAEO,IAAM,kBAAA,GAAqB;AAE3B,IAAM,cAAA,GAAiB;AAAA,EAC5B,IAAA,EAAM;AACR;AACO,IAAM,aAAA,GAAgB;AAEtB,IAAM,UAAA,GAAa;AAAA,EACxB,KAAA,EAAW,eAAA;AAAA,EACX,SAAA,EAAW,mBAAA;AAAA,EACX,IAAA,EAAW,cAAA;AAAA,EACX,GAAA,EAAW;AACb;AAMO,IAAM,iBAAA,GAAqB;AAC3B,IAAM,kBAAA,GAAqB;AAE3B,IAAM,YAAA,GAAe;AAAA,EAC1B,KAAA,EAAQ,iBAAA;AAAA,EACR,MAAA,EAAQ;AACV;AAEO,IAAM,qBAAA,GAAyB;AAC/B,IAAM,sBAAA,GAAyB;AAE/B,IAAM,gBAAA,GAAmB;AAAA,EAC9B,KAAA,EAAQ,qBAAA;AAAA,EACR,MAAA,EAAQ;AACV;AAEO,IAAM,qBAAA,GAAwB;AAE9B,IAAM,eAAA,GAAkB;AAAA,EAC7B,MAAA,EAAQ;AACV;AACO,IAAM,gBAAA,GAAmB;AACzB,IAAM,aAAA,GAAgB;AAEtB,IAAM,gBAAA,GAAmB;AACzB,IAAM,gBAAA,GAAmB;AACzB,IAAM,gBAAA,GAAmB;AAEzB,IAAM,cAAA,GAAiB;AAAA,EAC5B,EAAA,EAAI,gBAAA;AAAA,EACJ,EAAA,EAAI,gBAAA;AAAA,EACJ,EAAA,EAAI;AACN;AAEO,IAAM,kBAAA,GAAqB;AAE3B,IAAM,cAAA,GAAiB;AAAA,EAC5B,IAAA,EAAM;AACR;AAEO,IAAM,qBAAA,GAAwB;AAE9B,IAAM,gBAAA,GAAmB;AAAA,EAC9B,KAAA,EAAO;AACT;AAEO,IAAM,UAAA,GAAa;AAAA,EACxB,EAAA,EAAQ,YAAA;AAAA,EACR,MAAA,EAAQ,gBAAA;AAAA,EACR,KAAA,EAAQ,eAAA;AAAA,EACR,MAAA,EAAQ,gBAAA;AAAA,EACR,GAAA,EAAQ,aAAA;AAAA,EACR,IAAA,EAAQ,cAAA;AAAA,EACR,IAAA,EAAQ,cAAA;AAAA,EACR,MAAA,EAAQ;AACV;AAKO,IAAM,UAAA,GAAa;AACnB,IAAM,cAAA,GAAiB;AACvB,IAAM,cAAA,GAAiB;AAEvB,IAAM,mBAAA,GAAsB;AAE5B,IAAM,cAAA,GAAiB;AAAA,EAC5B,KAAA,EAAO;AACT;AACO,IAAM,eAAA,GAAkB;AAExB,IAAM,gBAAA,GAAmB;AAEzB,IAAM,WAAA,GAAc;AAAA,EACzB,KAAA,EAAO;AACT;AAEO,IAAM,gBAAA,GAAmB;AAEzB,IAAM,WAAA,GAAc;AAAA,EACzB,KAAA,EAAO;AACT;AAEO,IAAM,sBAAA,GAAyB;AAE/B,IAAM,iBAAA,GAAoB;AAAA,EAC/B,KAAA,EAAO;AACT;AACO,IAAM,qBAAA,GAAwB;AAC9B,IAAM,oBAAA,GAAuB;AAE7B,IAAM,eAAA,GAAkB;AAAA,EAC7B,EAAA,EAAQ,iBAAA;AAAA,EACR,MAAA,EAAQ,qBAAA;AAAA,EACR,KAAA,EAAQ;AACV;AAEO,IAAM,yBAAA,GAA+B;AACrC,IAAM,4BAAA,GAA+B;AAErC,IAAM,iBAAA,GAAoB;AAAA,EAC/B,QAAA,EAAa,yBAAA;AAAA,EACb,WAAA,EAAa;AACf;AACO,IAAM,mBAAA,GAAsB;AAE5B,IAAM,8BAAA,GAAiC;AAEvC,IAAM,yBAAA,GAA4B;AAAA,EACvC,KAAA,EAAO;AACT;AAEO,IAAM,cAAA,GAAiB;AAAA,EAC5B,KAAA,EAAa,mBAAA;AAAA,EACb,WAAA,EAAa;AACf;AACO,IAAM,mBAAA,GAAsB;AAE5B,IAAM,YAAA,GAAe;AAAA,EAC1B,KAAA,EAAS,iBAAA;AAAA,EACT,EAAA,EAAS,cAAA;AAAA,EACT,OAAA,EAAS;AACX;AACO,IAAM,eAAA,GAAkB;AAExB,IAAM,QAAA,GAAW;AAAA,EACtB,EAAA,EAAS,UAAA;AAAA,EACT,MAAA,EAAS,cAAA;AAAA,EACT,MAAA,EAAS,cAAA;AAAA,EACT,MAAA,EAAS,cAAA;AAAA,EACT,OAAA,EAAS,eAAA;AAAA,EACT,GAAA,EAAS,WAAA;AAAA,EACT,GAAA,EAAS,WAAA;AAAA,EACT,OAAA,EAAS,eAAA;AAAA,EACT,IAAA,EAAS,YAAA;AAAA,EACT,OAAA,EAAS;AACX;AAMO,IAAM,mBAAA,GAAsB;AAE5B,IAAM,WAAA,GAAc;AAAA,EACzB,QAAA,EAAU;AACZ;AACO,IAAM,cAAA,GAAiB;AACvB,IAAM,oBAAA,GAAuB;AAC7B,IAAM,aAAA,GAAgB;AAEtB,IAAM,oBAAA,GAAuB;AAC7B,IAAM,oBAAA,GAAuB;AAE7B,IAAM,eAAA,GAAkB;AAAA,EAC7B,KAAA,EAAO,oBAAA;AAAA,EACP,KAAA,EAAO;AACT;AACO,IAAM,eAAA,GAAkB;AAExB,IAAM,iBAAA,GAAoB;AAE1B,IAAM,gBAAA,GAAmB;AAAA,EAC9B,CAAA,EAAG;AACL;AAEO,IAAM,iBAAA,GAAoB;AAC1B,IAAM,iBAAA,GAAoB;AAC1B,IAAM,iBAAA,GAAoB;AAE1B,IAAM,eAAA,GAAkB;AAAA,EAC7B,EAAA,EAAI,iBAAA;AAAA,EACJ,EAAA,EAAI,iBAAA;AAAA,EACJ,EAAA,EAAI;AACN;AAEO,IAAM,oBAAA,GAAuB;AAE7B,IAAM,eAAA,GAAkB;AAAA,EAC7B,KAAA,EAAO;AACT;AAEO,IAAM,0BAAA,GAA6B;AAEnC,IAAM,qBAAA,GAAwB;AAAA,EACnC,KAAA,EAAO;AACT;AAEO,IAAM,mBAAA,GAAsB;AAAA,EACjC,EAAA,EAAI;AACN;AAEO,IAAM,SAAA,GAAY;AAAA,EACvB,EAAA,EAAa,WAAA;AAAA,EACb,KAAA,EAAa,cAAA;AAAA,EACb,WAAA,EAAa,oBAAA;AAAA,EACb,IAAA,EAAa,aAAA;AAAA,EACb,MAAA,EAAa,eAAA;AAAA,EACb,MAAA,EAAa,eAAA;AAAA,EACb,OAAA,EAAa,gBAAA;AAAA,EACb,MAAA,EAAa,eAAA;AAAA,EACb,MAAA,EAAa,eAAA;AAAA,EACb,UAAA,EAAa;AACf;AAMO,IAAM,iBAAA,GAAoB;AAC1B,IAAM,gBAAA,GAAoB;AAE1B,IAAM,WAAA,GAAc;AAAA,EACzB,MAAA,EAAQ,iBAAA;AAAA,EACR,KAAA,EAAQ;AACV;AAEO,IAAM,gBAAA,GAAmB;AAEzB,IAAM,WAAA,GAAc;AAAA,EACzB,KAAA,EAAO;AACT;AACO,IAAM,SAAA,GAAY;AAElB,IAAM,YAAA,GAAe;AACrB,IAAM,YAAA,GAAe;AACrB,IAAM,YAAA,GAAe;AAErB,IAAM,UAAA,GAAa;AAAA,EACxB,EAAA,EAAI,YAAA;AAAA,EACJ,EAAA,EAAI,YAAA;AAAA,EACJ,EAAA,EAAI;AACN;AAEO,IAAM,MAAA,GAAS;AAAA,EACpB,KAAA,EAAO,WAAA;AAAA,EACP,KAAA,EAAO,WAAA;AAAA,EACP,GAAA,EAAO,SAAA;AAAA,EACP,IAAA,EAAO;AACT;AAKO,IAAM,KAAA,GAAQ;AACd,IAAM,SAAA,GAAY;AAClB,IAAM,SAAA,GAAY;AAElB,IAAM,gBAAA,GAAmB;AAEzB,IAAM,WAAA,GAAc;AAAA,EACzB,KAAA,EAAO;AACT;AACO,IAAM,cAAA,GAAiB;AAEvB,IAAM,eAAA,GAAkB;AACxB,IAAM,eAAA,GAAkB;AACxB,IAAM,eAAA,GAAkB;AAExB,IAAM,aAAA,GAAgB;AAAA,EAC3B,EAAA,EAAI,eAAA;AAAA,EACJ,EAAA,EAAI,eAAA;AAAA,EACJ,EAAA,EAAI;AACN;AAEO,IAAM,SAAA,GAAY;AAAA,EACvB,EAAA,EAAO,WAAA;AAAA,EACP,KAAA,EAAO,cAAA;AAAA,EACP,IAAA,EAAO;AACT;AACO,IAAM,aAAA,GAAgB;AAEtB,IAAM,eAAA,GAAkB;AACxB,IAAM,eAAA,GAAkB;AACxB,IAAM,eAAA,GAAkB;AAExB,IAAM,aAAA,GAAgB;AAAA,EAC3B,EAAA,EAAI,eAAA;AAAA,EACJ,EAAA,EAAI,eAAA;AAAA,EACJ,EAAA,EAAI;AACN;AAEO,IAAM,QAAA,GAAW;AAAA,EACtB,KAAA,EAAO,aAAA;AAAA,EACP,KAAA,EAAO;AACT;AAEO,IAAM,cAAA,GAAiB;AAEvB,IAAM,SAAA,GAAY;AAAA,EACvB,KAAA,EAAO;AACT;AAEO,IAAM,GAAA,GAAM;AAAA,EACjB,EAAA,EAAQ,KAAA;AAAA,EACR,MAAA,EAAQ,SAAA;AAAA,EACR,MAAA,EAAQ,SAAA;AAAA,EACR,MAAA,EAAQ,SAAA;AAAA,EACR,KAAA,EAAQ,QAAA;AAAA,EACR,MAAA,EAAQ;AACV;AAKO,IAAM,iBAAA,GAAoB;AAE1B,IAAM,qBAAA,GAA0B;AAChC,IAAM,uBAAA,GAA0B;AAEhC,IAAM,eAAA,GAAkB;AAAA,EAC7B,MAAA,EAAU,qBAAA;AAAA,EACV,QAAA,EAAU;AACZ;AAEO,IAAM,yBAAA,GAA8B;AACpC,IAAM,2BAAA,GAA8B;AAEpC,IAAM,mBAAA,GAAsB;AAAA,EACjC,MAAA,EAAU,yBAAA;AAAA,EACV,QAAA,EAAU;AACZ;AAEO,IAAM,wBAAA,GAA6B;AACnC,IAAM,0BAAA,GAA6B;AAEnC,IAAM,kBAAA,GAAqB;AAAA,EAChC,MAAA,EAAU,wBAAA;AAAA,EACV,QAAA,EAAU;AACZ;AAEO,IAAM,aAAA,GAAgB;AAAA,EAC3B,IAAA,EAAQ,iBAAA;AAAA,EACR,EAAA,EAAQ,eAAA;AAAA,EACR,MAAA,EAAQ,mBAAA;AAAA,EACR,KAAA,EAAQ;AACV;AAEO,IAAM,0BAAA,GAA6B;AAEnC,IAAM,kBAAA,GAAqB;AAAA,EAChC,QAAA,EAAU;AACZ;AAEO,IAAM,gBAAA,GAAmB;AAAA,EAC9B,EAAA,EAAI;AACN;AAEO,IAAM,uBAAA,GAA0B;AAEhC,IAAM,iBAAA,GAAoB;AAAA,EAC/B,MAAA,EAAQ;AACV;AAEO,IAAM,YAAA,GAAe;AAAA,EAC1B,KAAA,EAAO;AACT;AAEO,IAAM,uBAAA,GAA0B;AAEhC,IAAM,kBAAA,GAAqB;AAAA,EAChC,KAAA,EAAO;AACT;AAEO,IAAM,mBAAA,GAAsB;AAE5B,IAAM,aAAA,GAAgB;AAAA,EAC3B,MAAA,EAAQ;AACV;AAEO,IAAM,OAAA,GAAU;AAAA,EACrB,MAAA,EAAa,aAAA;AAAA,EACb,SAAA,EAAa,gBAAA;AAAA,EACb,KAAA,EAAa,YAAA;AAAA,EACb,WAAA,EAAa,kBAAA;AAAA,EACb,MAAA,EAAa;AACf;AAKO,IAAM,OAAA,GAAU;AAChB,IAAM,WAAA,GAAc;AACpB,IAAM,WAAA,GAAc;AAEpB,IAAM,aAAA,GAAmB;AACzB,IAAM,gBAAA,GAAmB;AAEzB,IAAM,WAAA,GAAc;AAAA,EACzB,EAAA,EAAO,aAAA;AAAA,EACP,KAAA,EAAO;AACT;AACO,IAAM,cAAA,GAAiB;AAEvB,IAAM,eAAA,GAAkB;AAExB,IAAM,UAAA,GAAa;AAAA,EACxB,KAAA,EAAO;AACT;AAEO,IAAM,kBAAA,GAAqB;AAE3B,IAAM,gBAAA,GAAmB;AAAA,EAC9B,EAAA,EAAI;AACN;AAEO,IAAM,eAAA,GAAkB;AAExB,IAAM,aAAA,GAAgB;AAAA,EAC3B,EAAA,EAAI;AACN;AAEO,IAAM,QAAA,GAAW;AAAA,EACtB,MAAA,EAAU,cAAA;AAAA,EACV,EAAA,EAAU,UAAA;AAAA,EACV,QAAA,EAAU,gBAAA;AAAA,EACV,KAAA,EAAU;AACZ;AACO,IAAM,cAAA,GAAiB;AAEvB,IAAM,iBAAA,GAAoB;AAC1B,IAAM,iBAAA,GAAoB;AAE1B,IAAM,gBAAA,GAAmB;AAAA,EAC9B,CAAA,EAAG,iBAAA;AAAA,EACH,CAAA,EAAG;AACL;AAEO,IAAM,SAAA,GAAY;AAAA,EACvB,KAAA,EAAS,cAAA;AAAA,EACT,OAAA,EAAS;AACX;AAEO,IAAM,eAAA,GAAkB;AAExB,IAAM,SAAA,GAAY;AAAA,EACvB,MAAA,EAAQ;AACV;AAEO,IAAM,eAAA,GAAkB;AAExB,IAAM,UAAA,GAAa;AAAA,EACxB,KAAA,EAAO;AACT;AAEO,IAAM,gBAAA,GAAmB;AAEzB,IAAM,cAAA,GAAiB;AAAA,EAC5B,EAAA,EAAI;AACN;AAEO,IAAM,WAAA,GAAc;AAAA,EACzB,GAAA,EAAK;AACP;AAEO,IAAM,iBAAA,GAAoB;AAE1B,IAAM,YAAA,GAAe;AAAA,EAC1B,KAAA,EAAO;AACT;AAEO,IAAM,KAAA,GAAQ;AAAA,EACnB,EAAA,EAAS,OAAA;AAAA,EACT,MAAA,EAAS,WAAA;AAAA,EACT,MAAA,EAAS,WAAA;AAAA,EACT,MAAA,EAAS,WAAA;AAAA,EACT,GAAA,EAAS,QAAA;AAAA,EACT,IAAA,EAAS,SAAA;AAAA,EACT,IAAA,EAAS,SAAA;AAAA,EACT,KAAA,EAAS,UAAA;AAAA,EACT,MAAA,EAAS,WAAA;AAAA,EACT,OAAA,EAAS;AACX;AAMO,IAAM,iBAAA,GAAoB;AAE1B,IAAM,eAAA,GAAkB;AAAA,EAC7B,EAAA,EAAI;AACN;AACO,IAAM,cAAA,GAAiB;AACvB,IAAM,cAAA,GAAiB;AAEvB,IAAM,gBAAA,GAAsB;AAC5B,IAAM,mBAAA,GAAsB;AAE5B,IAAM,cAAA,GAAiB;AAAA,EAC5B,EAAA,EAAO,gBAAA;AAAA,EACP,KAAA,EAAO;AACT;AAEO,IAAM,iBAAA,GAAoB;AAE1B,IAAM,YAAA,GAAe;AAAA,EAC1B,KAAA,EAAO;AACT;AAEO,IAAM,yBAAA,GAA4B;AAElC,IAAM,mBAAA,GAAsB;AAAA,EACjC,MAAA,EAAQ;AACV;AAEO,IAAM,aAAA,GAAgB;AAAA,EAC3B,MAAA,EAAQ;AACV;AAEO,IAAM,QAAA,GAAW;AAAA,EACtB,OAAA,EAAS,eAAA;AAAA,EACT,MAAA,EAAS,cAAA;AAAA,EACT,MAAA,EAAS,cAAA;AAAA,EACT,MAAA,EAAS,cAAA;AAAA,EACT,IAAA,EAAS,YAAA;AAAA,EACT,KAAA,EAAS;AACX;AAMO,IAAM,SAAA,GAAgB;AACtB,IAAM,aAAA,GAAgB;AACtB,IAAM,aAAA,GAAgB;AACtB,IAAM,aAAA,GAAgB;AACtB,IAAM,QAAA,GAAgB;AAEtB,IAAM,OAAA,GAAU;AAAA,EACrB,EAAA,EAAQ,SAAA;AAAA,EACR,MAAA,EAAQ,aAAA;AAAA,EACR,MAAA,EAAQ,aAAA;AAAA,EACR,MAAA,EAAQ,aAAA;AAAA,EACR,CAAA,EAAQ;AACV;AAKO,IAAM,QAAA,GAAW;AAEjB,IAAM,eAAA,GAAkB;AAExB,IAAM,aAAA,GAAgB;AAAA,EAC3B,EAAA,EAAI;AACN;AACO,IAAM,YAAA,GAAe;AACrB,IAAM,gBAAA,GAAmB;AAEzB,IAAM,MAAA,GAAS;AAAA,EACpB,EAAA,EAAY,QAAA;AAAA,EACZ,OAAA,EAAY,aAAA;AAAA,EACZ,MAAA,EAAY,YAAA;AAAA,EACZ,UAAA,EAAY;AACd;AAMO,IAAM,kBAAA,GAAuB;AAC7B,IAAM,oBAAA,GAAuB;AAE7B,IAAM,cAAA,GAAiB;AAAA,EAC5B,IAAA,EAAQ,kBAAA;AAAA,EACR,MAAA,EAAQ;AACV;AAEO,IAAM,mBAAA,GAAsB;AAE5B,IAAM,eAAA,GAAkB;AAAA,EAC7B,IAAA,EAAM;AACR;AAEO,IAAM,oBAAA,GAAuB;AAE7B,IAAM,kBAAA,GAAqB;AAAA,EAChC,EAAA,EAAI;AACN;AAEO,IAAM,iBAAA,GAAoB;AAE1B,IAAM,eAAA,GAAkB;AAAA,EAC7B,EAAA,EAAI;AACN;AAEO,IAAM,UAAA,GAAa;AAAA,EACxB,IAAA,EAAU,cAAA;AAAA,EACV,KAAA,EAAU,eAAA;AAAA,EACV,QAAA,EAAU,kBAAA;AAAA,EACV,KAAA,EAAU;AACZ;AAKO,IAAM,WAAA,GAAc;AACpB,IAAM,UAAA,GAAa;AACnB,IAAM,aAAA,GAAgB;AAEtB,IAAM,gBAAA,GAAmB;AAEzB,IAAM,YAAA,GAAe;AAAA,EAC1B,IAAA,EAAM;AACR;AAEO,IAAM,OAAA,GAAU;AAAA,EACrB,IAAA,EAAQ,WAAA;AAAA,EACR,GAAA,EAAQ,UAAA;AAAA,EACR,MAAA,EAAQ,aAAA;AAAA,EACR,KAAA,EAAQ;AACV;AAEO,IAAM,GAAA,GAAM;AAAA,EACjB,IAAA,EAAM;AACR;AAMO,IAAM,kBAAA,GAAqB;AAE3B,IAAM,YAAA,GAAe;AAAA,EAC1B,MAAA,EAAQ;AACV;AAEO,IAAM,cAAA,GAAiB;AAEvB,IAAM,QAAA,GAAW;AAAA,EACtB,MAAA,EAAQ;AACV;AAEO,IAAM,MAAA,GAAS;AAAA,EACpB,MAAA,EAAQ,YAAA;AAAA,EACR,EAAA,EAAQ;AACV;AAMO,IAAM,gBAAA,GAAmB;AAEzB,IAAM,cAAA,GAAiB;AAAA,EAC5B,EAAA,EAAI;AACN;AAEO,IAAM,gBAAA,GAAuB;AAC7B,IAAM,oBAAA,GAAuB;AAE7B,IAAM,cAAA,GAAiB;AAAA,EAC5B,EAAA,EAAQ,gBAAA;AAAA,EACR,MAAA,EAAQ;AACV;AAEO,IAAM,SAAA,GAAY;AAAA,EACvB,KAAA,EAAO,cAAA;AAAA,EACP,KAAA,EAAO;AACT;AAMO,IAAM,aAAA,GAAgB;AAEtB,IAAM,QAAA,GAAW;AAAA,EACtB,KAAA,EAAO;AACT;AAEO,IAAM,cAAA,GAAiB;AAEvB,IAAM,YAAA,GAAe;AAAA,EAC1B,EAAA,EAAI;AACN;AAEO,IAAM,iBAAA,GAAoB;AAE1B,IAAM,eAAA,GAAkB;AAAA,EAC7B,EAAA,EAAI;AACN;AAEO,IAAM,OAAA,GAAU;AAAA,EACrB,KAAA,EAAU,YAAA;AAAA,EACV,QAAA,EAAU;AACZ;AACO,IAAM,UAAA,GAAa;AAEnB,IAAM,IAAA,GAAO;AAAA,EAClB,IAAA,EAAQ,QAAA;AAAA,EACR,GAAA,EAAQ,OAAA;AAAA,EACR,MAAA,EAAQ;AACV;;;ACzgFA,IAAA,aAAA,GAAA,EAAA;AAAA,QAAA,CAAA,aAAA,EAAA;AAAA,EAAA,iBAAA,EAAA,MAAA,iBAAA;AAAA,EAAA,kBAAA,EAAA,MAAA,kBAAA;AAAA,EAAA,oBAAA,EAAA,MAAA,oBAAA;AAAA,EAAA,qBAAA,EAAA,MAAA,qBAAA;AAAA,EAAA,cAAA,EAAA,MAAA,cAAA;AAAA,EAAA,eAAA,EAAA,MAAA,eAAA;AAAA,EAAA,eAAA,EAAA,MAAA,eAAA;AAAA,EAAA,gBAAA,EAAA,MAAA,gBAAA;AAAA,EAAA,qBAAA,EAAA,MAAA,qBAAA;AAAA,EAAA,sBAAA,EAAA,MAAA,sBAAA;AAAA,EAAA,sBAAA,EAAA,MAAA,sBAAA;AAAA,EAAA,uBAAA,EAAA,MAAA,uBAAA;AAAA,EAAA,mBAAA,EAAA,MAAA,mBAAA;AAAA,EAAA,oBAAA,EAAA,MAAA,oBAAA;AAAA,EAAA,aAAA,EAAA,MAAA,aAAA;AAAA,EAAA,cAAA,EAAA,MAAA,cAAA;AAAA,EAAA,kBAAA,EAAA,MAAA,kBAAA;AAAA,EAAA,mBAAA,EAAA,MAAA,mBAAA;AAAA,EAAA,cAAA,EAAA,MAAA,cAAA;AAAA,EAAA,eAAA,EAAA,MAAA,eAAA;AAAA,EAAA,kBAAA,EAAA,MAAA,kBAAA;AAAA,EAAA,mBAAA,EAAA,MAAA,mBAAA;AAAA,EAAA,qBAAA,EAAA,MAAA,qBAAA;AAAA,EAAA,sBAAA,EAAA,MAAA,sBAAA;AAAA,EAAA,cAAA,EAAA,MAAA,cAAA;AAAA,EAAA,eAAA,EAAA,MAAA,eAAA;AAAA,EAAA,cAAA,EAAA,MAAA,cAAA;AAAA,EAAA,eAAA,EAAA,MAAA,eAAA;AAAA,EAAA,eAAA,EAAA,MAAA,eAAA;AAAA,EAAA,gBAAA,EAAA,MAAA,gBAAA;AAAA,EAAA,gBAAA,EAAA,MAAA,gBAAA;AAAA,EAAA,iBAAA,EAAA,MAAA,iBAAA;AAAA,EAAA,cAAA,EAAA,MAAA,cAAA;AAAA,EAAA,eAAA,EAAA,MAAA,eAAA;AAAA,EAAA,cAAA,EAAA,MAAA,cAAA;AAAA,EAAA,eAAA,EAAA,MAAA,eAAA;AAAA,EAAA,gBAAA,EAAA,MAAA,gBAAA;AAAA,EAAA,iBAAA,EAAA,MAAA,iBAAA;AAAA,EAAA,gBAAA,EAAA,MAAA,gBAAA;AAAA,EAAA,iBAAA,EAAA,MAAA,iBAAA;AAAA,EAAA,sBAAA,EAAA,MAAA,sBAAA;AAAA,EAAA,uBAAA,EAAA,MAAA,uBAAA;AAAA,EAAA,cAAA,EAAA,MAAA,cAAA;AAAA,EAAA,eAAA,EAAA,MAAA,eAAA;AAAA,EAAA,gBAAA,EAAA,MAAA,gBAAA;AAAA,EAAA,iBAAA,EAAA,MAAA,iBAAA;AAAA,EAAA,cAAA,EAAA,MAAA,cAAA;AAAA,EAAA,eAAA,EAAA,MAAA,eAAA;AAAA,EAAA,aAAA,EAAA,MAAA,aAAA;AAAA,EAAA,cAAA,EAAA,MAAA,cAAA;AAAA,EAAA,gBAAA,EAAA,MAAA,gBAAA;AAAA,EAAA,iBAAA,EAAA,MAAA,iBAAA;AAAA,EAAA,iBAAA,EAAA,MAAA,iBAAA;AAAA,EAAA,kBAAA,EAAA,MAAA,kBAAA;AAAA,EAAA,cAAA,EAAA,MAAA,cAAA;AAAA,EAAA,eAAA,EAAA,MAAA,eAAA;AAAA,EAAA,mBAAA,EAAA,MAAA,mBAAA;AAAA,EAAA,oBAAA,EAAA,MAAA,oBAAA;AAAA,EAAA,gBAAA,EAAA,MAAA,gBAAA;AAAA,EAAA,iBAAA,EAAA,MAAA,iBAAA;AAAA,EAAA,mBAAA,EAAA,MAAA,mBAAA;AAAA,EAAA,oBAAA,EAAA,MAAA,oBAAA;AAAA,EAAA,kBAAA,EAAA,MAAA,kBAAA;AAAA,EAAA,mBAAA,EAAA,MAAA,mBAAA;AAAA,EAAA,gBAAA,EAAA,MAAA,gBAAA;AAAA,EAAA,iBAAA,EAAA,MAAA,iBAAA;AAAA,EAAA,qBAAA,EAAA,MAAA,qBAAA;AAAA,EAAA,sBAAA,EAAA,MAAA,sBAAA;AAAA,EAAA,sBAAA,EAAA,MAAA,sBAAA;AAAA,EAAA,uBAAA,EAAA,MAAA,uBAAA;AAAA,EAAA,aAAA,EAAA,MAAA,aAAA;AAAA,EAAA,cAAA,EAAA,MAAA,cAAA;AAAA,EAAA,gBAAA,EAAA,MAAA,gBAAA;AAAA,EAAA,iBAAA,EAAA,MAAA,iBAAA;AAAA,EAAA,eAAA,EAAA,MAAA,eAAA;AAAA,EAAA,gBAAA,EAAA,MAAA,gBAAA;AAAA,EAAA,cAAA,EAAA,MAAA,cAAA;AAAA,EAAA,eAAA,EAAA,MAAA,eAAA;AAAA,EAAA,gBAAA,EAAA,MAAA,gBAAA;AAAA,EAAA,iBAAA,EAAA,MAAA,iBAAA;AAAA,EAAA,aAAA,EAAA,MAAA,aAAA;AAAA,EAAA,cAAA,EAAA,MAAA;AAAA,CAAA,CAAA;;;ACMO,IAAM,uBAAA,GAA0B;AAAA;AAAA;AAAA;AAKhC,IAAM,sBAAA,GAAyB;AAAA;AAAA;AAAA;;;ACL/B,IAAM,iBAAA,GAAoB;AAAA;AAAA;AAAA;AAAA;AAAA;AAO1B,IAAM,gBAAA,GAAmB;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACPzB,IAAM,eAAA,GAAkB;AAAA;AAAA;AAAA;AAKxB,IAAM,cAAA,GAAiB;AAAA;AAAA;AAAA;;;ACLvB,IAAM,oBAAA,GAAuB;AAAA;AAAA;AAAA;AAK7B,IAAM,mBAAA,GAAsB;AAAA;AAAA;;;ACL5B,IAAM,eAAA,GAAkB;AAAA;AAAA;AAAA;AAAA;AAMxB,IAAM,cAAA,GAAiB;AAAA;AAAA;;;ACNvB,IAAM,gBAAA,GAAmB;AAAA;AAAA;AAAA;AAAA;AAMzB,IAAM,eAAA,GAAkB;AAAA;AAAA;;;ACNxB,IAAM,sBAAA,GAAyB;AAAA;AAAA;AAI/B,IAAM,qBAAA,GAAwB;AAAA;AAAA;;;ACJ9B,IAAM,sBAAA,GAAyB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAQ/B,IAAM,qBAAA,GAAwB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACR9B,IAAM,eAAA,GAAkB;AAAA;AAAA;AAAA;AAKxB,IAAM,cAAA,GAAiB;AAAA;AAAA;AAAA;;;ACLvB,IAAM,iBAAA,GAAoB;AAAA;AAAA;AAAA;AAK1B,IAAM,gBAAA,GAAmB;AAAA;AAAA;AAAA;;;ACLzB,IAAM,eAAA,GAAkB;AAAA;AAAA;AAAA;AAKxB,IAAM,cAAA,GAAiB;AAAA;AAAA;AAAA;;;ACLvB,IAAM,iBAAA,GAAoB;AAAA;AAAA;AAAA;AAAA;AAAA;AAO1B,IAAM,gBAAA,GAAmB;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACPzB,IAAM,gBAAA,GAAmB;AAAA;AAAA;AAIzB,IAAM,eAAA,GAAkB;AAAA;AAAA;;;ACJxB,IAAM,cAAA,GAAiB;AAAA;AAAA;AAAA;AAKvB,IAAM,aAAA,GAAgB;AAAA;AAAA;AAAA;;;ACLtB,IAAM,mBAAA,GAAsB;AAAA;AAAA;AAAA;AAK5B,IAAM,kBAAA,GAAqB;AAAA;AAAA;AAAA;;;ACL3B,IAAM,eAAA,GAAkB;AAAA;AAAA;AAAA;AAKxB,IAAM,cAAA,GAAiB;AAAA;AAAA;;;ACLvB,IAAM,sBAAA,GAAyB;AAAA;AAAA;AAAA;AAAA;AAM/B,IAAM,qBAAA,GAAwB;AAAA;AAAA;;;ACN9B,IAAM,eAAA,GAAkB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAQxB,IAAM,cAAA,GAAiB;AAAA;AAAA;;;ACRvB,IAAM,iBAAA,GAAoB;AAAA;AAAA;AAAA;AAK1B,IAAM,gBAAA,GAAmB;AAAA;AAAA;;;ACLzB,IAAM,uBAAA,GAA0B;AAAA;AAAA;AAAA;AAAA;AAMhC,IAAM,sBAAA,GAAyB;AAAA;AAAA;;;ACN/B,IAAM,cAAA,GAAiB;AAAA;AAAA;AAAA;AAAA;AAMvB,IAAM,aAAA,GAAgB;AAAA;AAAA;;;ACNtB,IAAM,mBAAA,GAAsB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAQ5B,IAAM,kBAAA,GAAqB;AAAA;AAAA;;;ACR3B,IAAM,gBAAA,GAAmB;AAAA;AAAA;AAAA;AAAA;AAAA;AAOzB,IAAM,eAAA,GAAkB;AAAA;AAAA;;;ACPxB,IAAM,oBAAA,GAAuB;AAAA;AAAA;AAAA;AAAA;AAM7B,IAAM,mBAAA,GAAsB;AAAA;AAAA;;;ACN5B,IAAM,kBAAA,GAAqB;AAAA;AAAA;AAAA;AAAA;AAM3B,IAAM,iBAAA,GAAoB;AAAA;AAAA;;;ACN1B,IAAM,cAAA,GAAiB;AAAA;AAAA;AAAA;AAKvB,IAAM,aAAA,GAAgB;AAAA;AAAA;;;ACLtB,IAAM,kBAAA,GAAqB;AAAA;AAAA;AAAA;AAAA;AAAA;AAO3B,IAAM,iBAAA,GAAoB;AAAA;AAAA;;;ACP1B,IAAM,iBAAA,GAAoB;AAAA;AAAA;AAAA;AAAA;AAM1B,IAAM,gBAAA,GAAmB;AAAA;AAAA;;;ACNzB,IAAM,eAAA,GAAkB;AAAA;AAAA;AAAA;AAAA;AAAA;AAOxB,IAAM,cAAA,GAAiB;AAAA;AAAA;;;ACPvB,IAAM,cAAA,GAAiB;AAAA;AAAA;AAIvB,IAAM,aAAA,GAAgB;AAAA;AAAA;;;ACJtB,IAAM,eAAA,GAAkB;AAAA;AAAA;AAAA;AAKxB,IAAM,cAAA,GAAiB;AAAA;AAAA;;;ACLvB,IAAM,iBAAA,GAAoB;AAAA;AAAA;AAI1B,IAAM,gBAAA,GAAmB;AAAA;AAAA;;;ACJzB,IAAM,uBAAA,GAA0B;AAAA;AAAA;AAIhC,IAAM,sBAAA,GAAyB;AAAA;AAAA;;;ACJ/B,IAAM,eAAA,GAAkB;AAAA;AAAA;AAAA;AAKxB,IAAM,cAAA,GAAiB;AAAA;AAAA;;;ACLvB,IAAM,mBAAA,GAAsB;AAAA;AAAA;AAAA;AAK5B,IAAM,kBAAA,GAAqB;AAAA;AAAA;;;ACL3B,IAAM,qBAAA,GAAwB;AAAA;AAAA;AAAA;AAK9B,IAAM,oBAAA,GAAuB;AAAA;AAAA;AAAA;;;ACN7B,IAAM,iBAAA,GAAoB;AAAA;AAAA;AAAA;AAAA;AAAA;AAO1B,IAAM,gBAAA,GAAmB;;;ACNzB,IAAM,iBAAA,GAAoB;AAAA;AAAA;AAAA;AAAA;AAM1B,IAAM,gBAAA,GAAmB;AAAA;AAAA;AAAA;AAAA;;;ACRzB,IAAM,iBAAA,GAAoB;AAAA;AAAA;AAAA;AAK1B,IAAM,gBAAA,GAAmB;AAAA;AAAA;AAAA;AAAA;;;ACHzB,IAAM,eAAA,GAAkB;AAAA;AAAA;AAAA;AAKxB,IAAM,cAAA,GAAiB;AAAA;AAAA;;;ACLvB,IAAM,oBAAA,GAAuB;AAAA;AAAA;AAAA;AAK7B,IAAM,mBAAA,GAAsB;AAAA;AAAA;ACT5B,IAAM,eAAA,GAAkBA,OAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACkDxB,IAAM,UAAA,GAAuC;AAAA,EAClD,EAAA,EAAI,MAAA;AAAA,EACJ,EAAA,EAAI,MAAA;AAAA,EACJ,EAAA,EAAI,MAAA;AAAA,EACJ,EAAA,EAAI;AACN,CAAA;AC9CA,SAAS,OAAA,CAAQ,MAAgB,OAAA,EAA0B;AACzD,EAAA,MAAM,KAAA,GAAQ,KAAK,OAAA,CAAQ,cAAA,EAAgB,CAAC,CAAA,EAAG,CAAA,KAAM,CAAA,CAAE,WAAA,EAAa,CAAA;AACpE,EAAA,MAAM,OAAA,GAAU,UAAU,aAAA,GAAgB,YAAA;AAC1C,EAAA,MAAM,GAAA,GAAM,CAAA,EAAG,KAAK,CAAA,EAAG,OAAO,CAAA,CAAA;AAC9B,EAAA,OAAQ,aAAA,CAAM,GAAG,CAAA,IAAgB,EAAA;AACnC;AAeaC,iBAAA,GAAN,wBAAwBC,cAAA,CAAW;AAAA,EAAnC,WAAA,GAAA;AAAA,IAAA,KAAA,CAAA,GAAA,SAAA,CAAA;AAIL,IAAA,IAAA,CAAA,IAAA,GAAiB,MAAA;AAGjB,IAAA,IAAA,CAAA,IAAA,GAAiB,IAAA;AAGjB,IAAA,IAAA,CAAA,OAAA,GAAU,KAAA;AAAA,EAAA;AAAA,EAKV,MAAA,GAAS;AACP,IAAA,MAAM,KAAA,GAAQ,OAAA,CAAQ,IAAA,CAAK,IAAA,EAAM,KAAK,OAAO,CAAA;AAC7C,IAAA,MAAM,EAAA,GAAQ,UAAA,CAAW,IAAA,CAAK,IAAI,CAAA;AAElC,IAAA,IAAI,CAAC,KAAA,EAAO;AACV,MAAA,OAAA,CAAQ,IAAA,CAAK,CAAA,4BAAA,EAA+B,IAAA,CAAK,IAAI,CAAA,CAAA,CAAG,CAAA;AACxD,MAAA,OAAOC,QAAA,CAAA,CAAA;AAAA,IACT;AAEA,IAAA,OAAOA,QAAA;AAAA;AAAA;AAAA;AAAA,eAAA,EAIM,EAAE,CAAA;AAAA,gBAAA,EACD,EAAE,CAAA;AAAA;AAAA;AAAA;AAAA,cAAA,EAIJC,oBAAA,CAAS,IAAA,CAAK,KAAA,GAAQ,EAAE,KAAA,EAAO,KAAK,KAAA,EAAM,GAAI,EAAE,CAAC;AAAA;AAAA,QAAA,EAEvDC,sBAAA,CAAU,KAAK,CAAC;AAAA;AAAA,IAAA,CAAA;AAAA,EAGxB;AACF;AAvCaJ,iBAAA,CACJ,MAAA,GAAS,eAAA;AAGhB,eAAA,CAAA;AAAA,EADCK,uBAAS,EAAE,IAAA,EAAM,MAAA,EAAQ,OAAA,EAAS,MAAM;AAAA,CAAA,EAH9BL,iBAAA,CAIX,SAAA,EAAA,MAAA,EAAA,CAAA,CAAA;AAGA,eAAA,CAAA;AAAA,EADCK,uBAAS,EAAE,IAAA,EAAM,MAAA,EAAQ,OAAA,EAAS,MAAM;AAAA,CAAA,EAN9BL,iBAAA,CAOX,SAAA,EAAA,MAAA,EAAA,CAAA,CAAA;AAGA,eAAA,CAAA;AAAA,EADCK,uBAAS,EAAE,IAAA,EAAM,OAAA,EAAS,OAAA,EAAS,MAAM;AAAA,CAAA,EAT/BL,iBAAA,CAUX,SAAA,EAAA,SAAA,EAAA,CAAA,CAAA;AAGA,eAAA,CAAA;AAAA,EADCK,sBAAA,CAAS,EAAE,IAAA,EAAM,MAAA,EAAQ;AAAA,CAAA,EAZfL,iBAAA,CAaX,SAAA,EAAA,OAAA,EAAA,CAAA,CAAA;AAbWA,iBAAA,GAAN,eAAA,CAAA;AAAA,EADNM,4BAAc,YAAY;AAAA,CAAA,EACdN,iBAAA,CAAA;ACrBN,IAAM,WAAA,GAAcD,OAAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;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,OAAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;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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AA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;A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","file":"index.cjs","sourcesContent":["/**\n * @file tokens.ts\n * @description TypeScript mirror of tokens.css.\n * Exports all design token values as typed constants.\n * Used internally by components — not a public API.\n *\n * Generated automatically — edit tokens.css, then run: npm run tokens\n */\n\n// ============================================================\n// COLORS\n// ============================================================\n\nexport const colorsArvea50 = '#F2FBFA' as const;\nexport const colorsArvea100 = '#D3F4F2' as const;\nexport const colorsArvea200 = '#A7E8E5' as const;\nexport const colorsArvea300 = '#73D5D4' as const;\nexport const colorsArvea400 = '#52BEC0' as const;\nexport const colorsArvea500 = '#2C9CA0' as const;\nexport const colorsArvea600 = '#217B80' as const;\nexport const colorsArvea700 = '#1E6267' as const;\nexport const colorsArvea800 = '#1C4F53' as const;\nexport const colorsArvea900 = '#1C4245' as const;\nexport const colorsArvea950 = '#0A2529' as const;\n\nexport const colorsArvea = {\n 50: colorsArvea50,\n 100: colorsArvea100,\n 200: colorsArvea200,\n 300: colorsArvea300,\n 400: colorsArvea400,\n 500: colorsArvea500,\n 600: colorsArvea600,\n 700: colorsArvea700,\n 800: colorsArvea800,\n 900: colorsArvea900,\n 950: colorsArvea950,\n} as const;\n\nexport const colorsSlate50 = '#F8FAFC' as const;\nexport const colorsSlate100 = '#F1F5F9' as const;\nexport const colorsSlate200 = '#E2E8F0' as const;\nexport const colorsSlate300 = '#CBD5E1' as const;\nexport const colorsSlate400 = '#94A3B8' as const;\nexport const colorsSlate500 = '#64748B' as const;\nexport const colorsSlate600 = '#475569' as const;\nexport const colorsSlate700 = '#334155' as const;\nexport const colorsSlate800 = '#1E293B' as const;\nexport const colorsSlate900 = '#0F172A' as const;\nexport const colorsSlate950 = '#020617' as const;\n\nexport const colorsSlate = {\n 50: colorsSlate50,\n 100: colorsSlate100,\n 200: colorsSlate200,\n 300: colorsSlate300,\n 400: colorsSlate400,\n 500: colorsSlate500,\n 600: colorsSlate600,\n 700: colorsSlate700,\n 800: colorsSlate800,\n 900: colorsSlate900,\n 950: colorsSlate950,\n} as const;\n\nexport const colors = {\n arvea: colorsArvea,\n slate: colorsSlate,\n} as const;\n\n// ============================================================\n// ACTION\n// ============================================================\n\nexport const actionBtnValidateBg = '#2C9CA0' as const;\n\nexport const actionBtnValidate = {\n bg: actionBtnValidateBg,\n} as const;\n\nexport const actionBtnEditBg = '#F97316' as const;\n\nexport const actionBtnEdit = {\n bg: actionBtnEditBg,\n} as const;\n\nexport const actionBtnPaymentBg = '#64748B' as const;\n\nexport const actionBtnPayment = {\n bg: actionBtnPaymentBg,\n} as const;\n\nexport const actionBtnOrderBg = '#F97316' as const;\n\nexport const actionBtnOrder = {\n bg: actionBtnOrderBg,\n} as const;\n\nexport const actionBtnPriceBg = '#F97316' as const;\n\nexport const actionBtnPrice = {\n bg: actionBtnPriceBg,\n} as const;\n\nexport const actionBtnDeleteBg = '#EF4444' as const;\n\nexport const actionBtnDelete = {\n bg: actionBtnDeleteBg,\n} as const;\n\nexport const actionBtnViewBg = '#22C55E' as const;\n\nexport const actionBtnView = {\n bg: actionBtnViewBg,\n} as const;\n\nexport const actionBtnPdfBg = '#3B82F6' as const;\n\nexport const actionBtnPdf = {\n bg: actionBtnPdfBg,\n} as const;\n\nexport const actionBtnPauseBg = '#F59E0B' as const;\n\nexport const actionBtnPause = {\n bg: actionBtnPauseBg,\n} as const;\n\nexport const actionBtnDownloadBg = '#6366F1' as const;\n\nexport const actionBtnDownload = {\n bg: actionBtnDownloadBg,\n} as const;\n\nexport const actionBtnUploadBg = '#8B5CF6' as const;\n\nexport const actionBtnUpload = {\n bg: actionBtnUploadBg,\n} as const;\n\nexport const actionBtnCopyBg = '#0EA5E9' as const;\n\nexport const actionBtnCopy = {\n bg: actionBtnCopyBg,\n} as const;\n\nexport const actionBtnPrintBg = '#64748B' as const;\n\nexport const actionBtnPrint = {\n bg: actionBtnPrintBg,\n} as const;\n\nexport const actionBtnSettingsBg = '#475569' as const;\n\nexport const actionBtnSettings = {\n bg: actionBtnSettingsBg,\n} as const;\n\nexport const actionBtnArchiveBg = '#78716C' as const;\n\nexport const actionBtnArchive = {\n bg: actionBtnArchiveBg,\n} as const;\n\nexport const actionBtnRestoreBg = '#2C9CA0' as const;\n\nexport const actionBtnRestore = {\n bg: actionBtnRestoreBg,\n} as const;\nexport const actionBtnFg = '#FFFFFF' as const;\n\nexport const actionBtn = {\n validate: actionBtnValidate,\n edit: actionBtnEdit,\n payment: actionBtnPayment,\n order: actionBtnOrder,\n price: actionBtnPrice,\n delete: actionBtnDelete,\n view: actionBtnView,\n pdf: actionBtnPdf,\n pause: actionBtnPause,\n download: actionBtnDownload,\n upload: actionBtnUpload,\n copy: actionBtnCopy,\n print: actionBtnPrint,\n settings: actionBtnSettings,\n archive: actionBtnArchive,\n restore: actionBtnRestore,\n fg: actionBtnFg,\n} as const;\n\nexport const action = {\n btn: actionBtn,\n} as const;\n\n// ============================================================\n// SPACING\n// ============================================================\n\nexport const spacing05 = '0.125rem' as const;\n\nexport const spacing0 = {\n 5: spacing05,\n} as const;\n\nexport const spacing15 = '0.375rem' as const;\n\nexport const spacing1 = {\n 5: spacing15,\n} as const;\n\nexport const spacing25 = '0.625rem' as const;\n\nexport const spacing2 = {\n 5: spacing25,\n} as const;\n\nexport const spacing35 = '0.875rem' as const;\n\nexport const spacing3 = {\n 5: spacing35,\n} as const;\nexport const spacing4 = '1rem' as const;\nexport const spacing5 = '1.25rem' as const;\nexport const spacing6 = '1.5rem' as const;\nexport const spacing7 = '1.75rem' as const;\nexport const spacing8 = '2rem' as const;\nexport const spacing9 = '2.25rem' as const;\nexport const spacing10 = '2.5rem' as const;\nexport const spacing11 = '2.75rem' as const;\nexport const spacing12 = '3rem' as const;\nexport const spacing14 = '3.5rem' as const;\nexport const spacing16 = '4rem' as const;\nexport const spacing20 = '5rem' as const;\nexport const spacing24 = '6rem' as const;\nexport const spacing28 = '7rem' as const;\nexport const spacing32 = '8rem' as const;\nexport const spacing36 = '9rem' as const;\nexport const spacing40 = '10rem' as const;\nexport const spacing44 = '11rem' as const;\nexport const spacing48 = '12rem' as const;\nexport const spacing52 = '13rem' as const;\nexport const spacing56 = '14rem' as const;\nexport const spacing60 = '15rem' as const;\nexport const spacing64 = '16rem' as const;\nexport const spacing72 = '18rem' as const;\nexport const spacing80 = '20rem' as const;\nexport const spacing96 = '24rem' as const;\nexport const spacingPx = '1px' as const;\n\nexport const spacing = {\n 0: spacing0,\n 1: spacing1,\n 2: spacing2,\n 3: spacing3,\n 4: spacing4,\n 5: spacing5,\n 6: spacing6,\n 7: spacing7,\n 8: spacing8,\n 9: spacing9,\n 10: spacing10,\n 11: spacing11,\n 12: spacing12,\n 14: spacing14,\n 16: spacing16,\n 20: spacing20,\n 24: spacing24,\n 28: spacing28,\n 32: spacing32,\n 36: spacing36,\n 40: spacing40,\n 44: spacing44,\n 48: spacing48,\n 52: spacing52,\n 56: spacing56,\n 60: spacing60,\n 64: spacing64,\n 72: spacing72,\n 80: spacing80,\n 96: spacing96,\n px: spacingPx,\n} as const;\n\n// ============================================================\n// FONT\n// ============================================================\nexport const fontFamily = '\\'Inter\\', system-ui, -apple-system, sans-serif' as const;\n\nexport const fontSizeXs = '0.75rem' as const;\nexport const fontSizeSm = '0.875rem' as const;\nexport const fontSizeBase = '1rem' as const;\nexport const fontSizeLg = '1.125rem' as const;\nexport const fontSizeXl = '1.25rem' as const;\nexport const fontSize2xl = '1.5rem' as const;\nexport const fontSize3xl = '1.875rem' as const;\nexport const fontSize4xl = '2.25rem' as const;\nexport const fontSize5xl = '3rem' as const;\n\nexport const fontSize = {\n xs: fontSizeXs,\n sm: fontSizeSm,\n base: fontSizeBase,\n lg: fontSizeLg,\n xl: fontSizeXl,\n '2xl': fontSize2xl,\n '3xl': fontSize3xl,\n '4xl': fontSize4xl,\n '5xl': fontSize5xl,\n} as const;\n\nexport const fontWeightRegular = '400' as const;\nexport const fontWeightMedium = '500' as const;\nexport const fontWeightSemibold = '600' as const;\n\nexport const fontWeight = {\n regular: fontWeightRegular,\n medium: fontWeightMedium,\n semibold: fontWeightSemibold,\n} as const;\n\nexport const font = {\n family: fontFamily,\n size: fontSize,\n weight: fontWeight,\n} as const;\n\n// ============================================================\n// BUTTON\n// ============================================================\n\nexport const buttonDefaultBgHover = '#1E6267' as const;\nexport const buttonDefaultBgDisabled = '#E2E8F0' as const;\n\nexport const buttonDefaultBg = {\n hover: buttonDefaultBgHover,\n disabled: buttonDefaultBgDisabled,\n} as const;\n\nexport const buttonDefault = {\n bg: buttonDefaultBg,\n} as const;\n\nexport const buttonOutlineBgHover = '#F1F5F9' as const;\n\nexport const buttonOutlineBg = {\n hover: buttonOutlineBgHover,\n} as const;\nexport const buttonOutlineBorder = '#E2E8F0' as const;\nexport const buttonOutlineShadow = '0px 1px 2px rgba(0, 0, 0, 0.05)' as const;\n\nexport const buttonOutline = {\n bg: buttonOutlineBg,\n border: buttonOutlineBorder,\n shadow: buttonOutlineShadow,\n} as const;\n\nexport const buttonSecondaryBgHover = '#E2E8F0' as const;\n\nexport const buttonSecondaryBg = {\n hover: buttonSecondaryBgHover,\n} as const;\n\nexport const buttonSecondary = {\n bg: buttonSecondaryBg,\n} as const;\n\nexport const buttonDangerBgHover = '#B91C1C' as const;\n\nexport const buttonDangerBg = {\n hover: buttonDangerBgHover,\n} as const;\n\nexport const buttonDanger = {\n bg: buttonDangerBg,\n} as const;\n\nexport const buttonLinkBg = 'transparent' as const;\n\nexport const buttonLink = {\n bg: buttonLinkBg,\n} as const;\nexport const buttonTextDefault = '#FFFFFF' as const;\nexport const buttonTextOutline = '#334155' as const;\nexport const buttonTextSecondary = '#334155' as const;\nexport const buttonTextDanger = '#FFFFFF' as const;\n\nexport const buttonTextLinkHover = '#1E6267' as const;\n\nexport const buttonTextLink = {\n hover: buttonTextLinkHover,\n} as const;\nexport const buttonTextDisabled = '#94A3B8' as const;\n\nexport const buttonText = {\n default: buttonTextDefault,\n outline: buttonTextOutline,\n secondary: buttonTextSecondary,\n danger: buttonTextDanger,\n link: buttonTextLink,\n disabled: buttonTextDisabled,\n} as const;\nexport const buttonRadius = '8px' as const;\nexport const buttonGap = '6px' as const;\n\nexport const buttonPaddingDefault = '8px 16px' as const;\nexport const buttonPaddingSm = '0px 12px' as const;\nexport const buttonPaddingLg = '0px 24px' as const;\nexport const buttonPaddingIcon = '0px' as const;\n\nexport const buttonPadding = {\n default: buttonPaddingDefault,\n sm: buttonPaddingSm,\n lg: buttonPaddingLg,\n icon: buttonPaddingIcon,\n} as const;\n\nexport const buttonHeightDefault = '36px' as const;\nexport const buttonHeightSm = '32px' as const;\nexport const buttonHeightLg = '40px' as const;\n\nexport const buttonHeight = {\n default: buttonHeightDefault,\n sm: buttonHeightSm,\n lg: buttonHeightLg,\n} as const;\n\nexport const buttonSizeIcon = '40px' as const;\n\nexport const buttonSize = {\n icon: buttonSizeIcon,\n} as const;\n\nexport const button = {\n default: buttonDefault,\n outline: buttonOutline,\n secondary: buttonSecondary,\n danger: buttonDanger,\n link: buttonLink,\n text: buttonText,\n radius: buttonRadius,\n gap: buttonGap,\n padding: buttonPadding,\n height: buttonHeight,\n size: buttonSize,\n} as const;\n\n// ============================================================\n// LOADER\n// ============================================================\nexport const loaderColorDefault = '#FFFFFF' as const;\n\nexport const loaderColorSubtleDefault = 'rgba(255, 255, 255, 0.4)' as const;\nexport const loaderColorSubtleOutline = 'rgba(51, 65, 85, 0.4)' as const;\nexport const loaderColorSubtleSecondary = 'rgba(51, 65, 85, 0.4)' as const;\nexport const loaderColorSubtleDanger = 'rgba(255, 255, 255, 0.4)' as const;\n\nexport const loaderColorSubtle = {\n default: loaderColorSubtleDefault,\n outline: loaderColorSubtleOutline,\n secondary: loaderColorSubtleSecondary,\n danger: loaderColorSubtleDanger,\n} as const;\nexport const loaderColorOutline = '#334155' as const;\nexport const loaderColorSecondary = '#334155' as const;\nexport const loaderColorDanger = '#FFFFFF' as const;\n\nexport const loaderColor = {\n default: loaderColorDefault,\n subtle: loaderColorSubtle,\n outline: loaderColorOutline,\n secondary: loaderColorSecondary,\n danger: loaderColorDanger,\n} as const;\n\nexport const loader = {\n color: loaderColor,\n} as const;\n\n// ============================================================\n// BADGE\n// ============================================================\n\nexport const badgeSuccessBg = '#F0FDF4' as const;\nexport const badgeSuccessText = '#15803D' as const;\nexport const badgeSuccessIcon = '#15803D' as const;\n\nexport const badgeSuccess = {\n bg: badgeSuccessBg,\n text: badgeSuccessText,\n icon: badgeSuccessIcon,\n} as const;\n\nexport const badgeErrorBg = '#FEE2E2' as const;\nexport const badgeErrorText = '#DC2626' as const;\nexport const badgeErrorIcon = '#DC2626' as const;\n\nexport const badgeError = {\n bg: badgeErrorBg,\n text: badgeErrorText,\n icon: badgeErrorIcon,\n} as const;\n\nexport const badgeWarningBg = '#FEF9C3' as const;\nexport const badgeWarningText = '#A16207' as const;\nexport const badgeWarningIcon = '#A16207' as const;\n\nexport const badgeWarning = {\n bg: badgeWarningBg,\n text: badgeWarningText,\n icon: badgeWarningIcon,\n} as const;\n\nexport const badgeInfoBg = '#DBEAFE' as const;\nexport const badgeInfoText = '#2563EB' as const;\nexport const badgeInfoIcon = '#2563EB' as const;\n\nexport const badgeInfo = {\n bg: badgeInfoBg,\n text: badgeInfoText,\n icon: badgeInfoIcon,\n} as const;\n\nexport const badgePendingBg = '#FED7AA' as const;\nexport const badgePendingText = '#7C2D12' as const;\nexport const badgePendingIcon = '#7C2D12' as const;\n\nexport const badgePending = {\n bg: badgePendingBg,\n text: badgePendingText,\n icon: badgePendingIcon,\n} as const;\n\nexport const badgeActiveBg = '#1D4ED8' as const;\nexport const badgeActiveText = '#EFF6FF' as const;\nexport const badgeActiveIcon = '#EFF6FF' as const;\n\nexport const badgeActive = {\n bg: badgeActiveBg,\n text: badgeActiveText,\n icon: badgeActiveIcon,\n} as const;\n\nexport const badgeInactiveBg = '#F1F5F9' as const;\nexport const badgeInactiveText = '#475569' as const;\nexport const badgeInactiveIcon = '#475569' as const;\n\nexport const badgeInactive = {\n bg: badgeInactiveBg,\n text: badgeInactiveText,\n icon: badgeInactiveIcon,\n} as const;\nexport const badgeRadius = '4px' as const;\nexport const badgePadding = '3px 8px' as const;\nexport const badgeGap = '4px' as const;\n\nexport const badgeFontSize = '12px' as const;\nexport const badgeFontWeight = '600' as const;\n\nexport const badgeFont = {\n size: badgeFontSize,\n weight: badgeFontWeight,\n} as const;\n\nexport const badgeLineHeight = '16px' as const;\n\nexport const badgeLine = {\n height: badgeLineHeight,\n} as const;\nexport const badgeHeight = '22px' as const;\n\nexport const badgeLabelDefaultBg = '#155DFC' as const;\nexport const badgeLabelDefaultBorder = '#155DFC' as const;\nexport const badgeLabelDefaultText = '#F8FAFC' as const;\n\nexport const badgeLabelDefault = {\n bg: badgeLabelDefaultBg,\n border: badgeLabelDefaultBorder,\n text: badgeLabelDefaultText,\n} as const;\n\nexport const badgeLabelDestructiveBg = '#E7000B' as const;\nexport const badgeLabelDestructiveBorder = '#E7000B' as const;\nexport const badgeLabelDestructiveText = '#F8FAFC' as const;\n\nexport const badgeLabelDestructive = {\n bg: badgeLabelDestructiveBg,\n border: badgeLabelDestructiveBorder,\n text: badgeLabelDestructiveText,\n} as const;\n\nexport const badgeLabelSecondaryBg = '#F1F5F9' as const;\nexport const badgeLabelSecondaryBorder = '#F1F5F9' as const;\nexport const badgeLabelSecondaryText = '#0F172B' as const;\n\nexport const badgeLabelSecondary = {\n bg: badgeLabelSecondaryBg,\n border: badgeLabelSecondaryBorder,\n text: badgeLabelSecondaryText,\n} as const;\n\nexport const badgeLabelOutlineBg = 'transparent' as const;\nexport const badgeLabelOutlineBorder = '#E2E8F0' as const;\nexport const badgeLabelOutlineText = '#020618' as const;\n\nexport const badgeLabelOutline = {\n bg: badgeLabelOutlineBg,\n border: badgeLabelOutlineBorder,\n text: badgeLabelOutlineText,\n} as const;\nexport const badgeLabelRadius = '8px' as const;\nexport const badgeLabelPadding = '2px 8px' as const;\nexport const badgeLabelGap = '8px' as const;\nexport const badgeLabelHeight = '20px' as const;\n\nexport const badgeLabelFontSize = '12px' as const;\nexport const badgeLabelFontWeight = '600' as const;\n\nexport const badgeLabelFont = {\n size: badgeLabelFontSize,\n weight: badgeLabelFontWeight,\n} as const;\n\nexport const badgeLabelLineHeight = '16px' as const;\n\nexport const badgeLabelLine = {\n height: badgeLabelLineHeight,\n} as const;\n\nexport const badgeLabel = {\n default: badgeLabelDefault,\n destructive: badgeLabelDestructive,\n secondary: badgeLabelSecondary,\n outline: badgeLabelOutline,\n radius: badgeLabelRadius,\n padding: badgeLabelPadding,\n gap: badgeLabelGap,\n height: badgeLabelHeight,\n font: badgeLabelFont,\n line: badgeLabelLine,\n} as const;\n\nexport const badge = {\n success: badgeSuccess,\n error: badgeError,\n warning: badgeWarning,\n info: badgeInfo,\n pending: badgePending,\n active: badgeActive,\n inactive: badgeInactive,\n radius: badgeRadius,\n padding: badgePadding,\n gap: badgeGap,\n font: badgeFont,\n line: badgeLine,\n height: badgeHeight,\n label: badgeLabel,\n} as const;\n\n// ============================================================\n// TOGGLE\n// ============================================================\n\nexport const toggleCheckedBg = '#217B80' as const;\n\nexport const toggleChecked = {\n bg: toggleCheckedBg,\n} as const;\n\nexport const toggleUncheckedBg = '#E2E8F0' as const;\n\nexport const toggleUnchecked = {\n bg: toggleUncheckedBg,\n} as const;\nexport const toggleWidth = '44px' as const;\nexport const toggleHeight = '24px' as const;\nexport const togglePadding = '2px' as const;\nexport const toggleRadius = '9999px' as const;\n\nexport const toggleThumbSize = '20px' as const;\nexport const toggleThumbBg = '#FFFFFF' as const;\n\nexport const toggleThumb = {\n size: toggleThumbSize,\n bg: toggleThumbBg,\n} as const;\n\nexport const toggle = {\n checked: toggleChecked,\n unchecked: toggleUnchecked,\n width: toggleWidth,\n height: toggleHeight,\n padding: togglePadding,\n radius: toggleRadius,\n thumb: toggleThumb,\n} as const;\n\n// ============================================================\n// CHECKBOX\n// ============================================================\nexport const checkboxSize = '16px' as const;\nexport const checkboxRadius = '4px' as const;\nexport const checkboxBorder = '#217B80' as const;\n\nexport const checkboxCheckedBg = '#217B80' as const;\n\nexport const checkboxChecked = {\n bg: checkboxCheckedBg,\n} as const;\n\nexport const checkboxUncheckedBg = '#FFFFFF' as const;\n\nexport const checkboxUnchecked = {\n bg: checkboxUncheckedBg,\n} as const;\n\nexport const checkboxDisabledOpacity = '0.5' as const;\n\nexport const checkboxDisabled = {\n opacity: checkboxDisabledOpacity,\n} as const;\n\nexport const checkboxCheckSize = '12px' as const;\nexport const checkboxCheckColor = '#FFFFFF' as const;\n\nexport const checkboxCheck = {\n size: checkboxCheckSize,\n color: checkboxCheckColor,\n} as const;\n\nexport const checkbox = {\n size: checkboxSize,\n radius: checkboxRadius,\n border: checkboxBorder,\n checked: checkboxChecked,\n unchecked: checkboxUnchecked,\n disabled: checkboxDisabled,\n check: checkboxCheck,\n} as const;\n\n// ============================================================\n// RADIO\n// ============================================================\nexport const radioSize = '16px' as const;\nexport const radioRadius = '9999px' as const;\nexport const radioBorder = '#217B80' as const;\n\nexport const radioCheckedBg = '#FFFFFF' as const;\n\nexport const radioChecked = {\n bg: radioCheckedBg,\n} as const;\n\nexport const radioUncheckedBg = '#FFFFFF' as const;\n\nexport const radioUnchecked = {\n bg: radioUncheckedBg,\n} as const;\n\nexport const radioDotSize = '8px' as const;\nexport const radioDotColor = '#217B80' as const;\n\nexport const radioDot = {\n size: radioDotSize,\n color: radioDotColor,\n} as const;\n\nexport const radioDisabledOpacity = '0.5' as const;\n\nexport const radioDisabled = {\n opacity: radioDisabledOpacity,\n} as const;\nexport const radioGap = '8px' as const;\n\nexport const radioLabelSize = '14px' as const;\nexport const radioLabelWeight = '500' as const;\nexport const radioLabelColor = '#020618' as const;\n\nexport const radioLabel = {\n size: radioLabelSize,\n weight: radioLabelWeight,\n color: radioLabelColor,\n} as const;\n\nexport const radio = {\n size: radioSize,\n radius: radioRadius,\n border: radioBorder,\n checked: radioChecked,\n unchecked: radioUnchecked,\n dot: radioDot,\n disabled: radioDisabled,\n gap: radioGap,\n label: radioLabel,\n} as const;\n\n// ============================================================\n// SLIDER\n// ============================================================\nexport const sliderTrackHeight = '8px' as const;\nexport const sliderTrackBg = '#F1F5F9' as const;\n\nexport const sliderTrackFilledBg = '#217B80' as const;\n\nexport const sliderTrackFilled = {\n bg: sliderTrackFilledBg,\n} as const;\nexport const sliderTrackRadius = '9999px' as const;\n\nexport const sliderTrack = {\n height: sliderTrackHeight,\n bg: sliderTrackBg,\n filled: sliderTrackFilled,\n radius: sliderTrackRadius,\n} as const;\nexport const sliderThumbSize = '20px' as const;\nexport const sliderThumbBg = '#FFFFFF' as const;\n\nexport const sliderThumbBorderWidth = '2px' as const;\n\nexport const sliderThumbBorder = {\n width: sliderThumbBorderWidth,\n} as const;\n\nexport const sliderThumbShadowFocus = '0 0 0 4px rgba(33, 123, 128, 0.18)' as const;\n\nexport const sliderThumbShadow = {\n focus: sliderThumbShadowFocus,\n} as const;\n\nexport const sliderThumb = {\n size: sliderThumbSize,\n bg: sliderThumbBg,\n border: sliderThumbBorder,\n shadow: sliderThumbShadow,\n} as const;\n\nexport const sliderLabelColor = '#334155' as const;\nexport const sliderLabelSize = '13px' as const;\nexport const sliderLabelWeight = '500' as const;\n\nexport const sliderLabel = {\n color: sliderLabelColor,\n size: sliderLabelSize,\n weight: sliderLabelWeight,\n} as const;\n\nexport const sliderValueColor = '#217B80' as const;\nexport const sliderValueSize = '13px' as const;\n\nexport const sliderValue = {\n color: sliderValueColor,\n size: sliderValueSize,\n} as const;\n\nexport const sliderTickColor = '#94A3B8' as const;\nexport const sliderTickSize = '4px' as const;\n\nexport const sliderTick = {\n color: sliderTickColor,\n size: sliderTickSize,\n} as const;\n\nexport const sliderDisabledOpacity = '0.5' as const;\n\nexport const sliderDisabled = {\n opacity: sliderDisabledOpacity,\n} as const;\n\nexport const slider = {\n track: sliderTrack,\n thumb: sliderThumb,\n label: sliderLabel,\n value: sliderValue,\n tick: sliderTick,\n disabled: sliderDisabled,\n} as const;\n\n// ============================================================\n// INPUT\n// ============================================================\n\nexport const inputBgDisabled = '#F1F5F9' as const;\n\nexport const inputBg = {\n disabled: inputBgDisabled,\n} as const;\nexport const inputText = '#0F172A' as const;\nexport const inputPlaceholder = '#94A3B8' as const;\n\nexport const inputBorderHover = '#94A3B8' as const;\nexport const inputBorderFocus = '#217B80' as const;\nexport const inputBorderInvalid = '#DC2626' as const;\nexport const inputBorderWarning = '#A16207' as const;\n\nexport const inputBorder = {\n hover: inputBorderHover,\n focus: inputBorderFocus,\n invalid: inputBorderInvalid,\n warning: inputBorderWarning,\n} as const;\nexport const inputRadius = '8px' as const;\n\nexport const inputPaddingX = '12px' as const;\nexport const inputPaddingY = '8px' as const;\n\nexport const inputPadding = {\n x: inputPaddingX,\n y: inputPaddingY,\n} as const;\nexport const inputHeight = '36px' as const;\n\nexport const inputFontSize = '14px' as const;\n\nexport const inputFont = {\n size: inputFontSize,\n} as const;\n\nexport const inputLabelColor = '#334155' as const;\nexport const inputLabelSize = '13px' as const;\nexport const inputLabelWeight = '500' as const;\n\nexport const inputLabel = {\n color: inputLabelColor,\n size: inputLabelSize,\n weight: inputLabelWeight,\n} as const;\n\nexport const inputHintColorInvalid = '#DC2626' as const;\nexport const inputHintColorWarning = '#A16207' as const;\nexport const inputHintColorValid = '#15803D' as const;\n\nexport const inputHintColor = {\n invalid: inputHintColorInvalid,\n warning: inputHintColorWarning,\n valid: inputHintColorValid,\n} as const;\nexport const inputHintSize = '12px' as const;\n\nexport const inputHint = {\n color: inputHintColor,\n size: inputHintSize,\n} as const;\n\nexport const inputShadowFocus = '0 0 0 3px rgba(33, 123, 128, 0.15)' as const;\n\nexport const inputShadow = {\n focus: inputShadowFocus,\n} as const;\n\nexport const input = {\n bg: inputBg,\n text: inputText,\n placeholder: inputPlaceholder,\n border: inputBorder,\n radius: inputRadius,\n padding: inputPadding,\n height: inputHeight,\n font: inputFont,\n label: inputLabel,\n hint: inputHint,\n shadow: inputShadow,\n} as const;\n\n// ============================================================\n// SELECT\n// ============================================================\n\nexport const selectBgDisabled = '#F1F5F9' as const;\n\nexport const selectBg = {\n disabled: selectBgDisabled,\n} as const;\nexport const selectText = '#0F172A' as const;\nexport const selectPlaceholder = '#94A3B8' as const;\n\nexport const selectBorderFocus = '#217B80' as const;\nexport const selectBorderInvalid = '#DC2626' as const;\n\nexport const selectBorder = {\n focus: selectBorderFocus,\n invalid: selectBorderInvalid,\n} as const;\nexport const selectRadius = '8px' as const;\n\nexport const selectPaddingX = '12px' as const;\nexport const selectPaddingY = '8px' as const;\n\nexport const selectPadding = {\n x: selectPaddingX,\n y: selectPaddingY,\n} as const;\nexport const selectHeight = '36px' as const;\n\nexport const selectFontSize = '14px' as const;\n\nexport const selectFont = {\n size: selectFontSize,\n} as const;\n\nexport const selectChevronColor = '#64748B' as const;\n\nexport const selectChevron = {\n color: selectChevronColor,\n} as const;\n\nexport const selectPopupBg = '#ffffff' as const;\nexport const selectPopupBorder = '#e2e8f0' as const;\nexport const selectPopupShadow = '0 8px 24px rgba(15, 23, 42, 0.12)' as const;\nexport const selectPopupRadius = '8px' as const;\nexport const selectPopupZ = '9999' as const;\n\nexport const selectPopup = {\n bg: selectPopupBg,\n border: selectPopupBorder,\n shadow: selectPopupShadow,\n radius: selectPopupRadius,\n z: selectPopupZ,\n} as const;\n\nexport const selectOptionHoverBg = '#f8fafc' as const;\n\nexport const selectOptionHover = {\n bg: selectOptionHoverBg,\n} as const;\n\nexport const selectOptionActiveBg = '#f1f5f9' as const;\n\nexport const selectOptionActive = {\n bg: selectOptionActiveBg,\n} as const;\n\nexport const selectOptionSelectedBg = '#eff6ff' as const;\nexport const selectOptionSelectedFg = '#1d4ed8' as const;\n\nexport const selectOptionSelected = {\n bg: selectOptionSelectedBg,\n fg: selectOptionSelectedFg,\n} as const;\n\nexport const selectOption = {\n hover: selectOptionHover,\n active: selectOptionActive,\n selected: selectOptionSelected,\n} as const;\n\nexport const selectTagBg = '#f1f5f9' as const;\nexport const selectTagFg = '#334155' as const;\nexport const selectTagRadius = '4px' as const;\n\nexport const selectTag = {\n bg: selectTagBg,\n fg: selectTagFg,\n radius: selectTagRadius,\n} as const;\n\nexport const select = {\n bg: selectBg,\n text: selectText,\n placeholder: selectPlaceholder,\n border: selectBorder,\n radius: selectRadius,\n padding: selectPadding,\n height: selectHeight,\n font: selectFont,\n chevron: selectChevron,\n popup: selectPopup,\n option: selectOption,\n tag: selectTag,\n} as const;\n\n// ============================================================\n// TAG\n// ============================================================\n\nexport const tagBgHover = '#F8FAFC' as const;\nexport const tagBgSelected = '#217B80' as const;\n\nexport const tagBg = {\n hover: tagBgHover,\n selected: tagBgSelected,\n} as const;\n\nexport const tagTextSelected = '#FFFFFF' as const;\n\nexport const tagText = {\n selected: tagTextSelected,\n} as const;\n\nexport const tagBorderSelected = '#217B80' as const;\n\nexport const tagBorder = {\n selected: tagBorderSelected,\n} as const;\nexport const tagRadius = '9999px' as const;\nexport const tagPadding = '4px 10px' as const;\nexport const tagGap = '6px' as const;\n\nexport const tagFontSize = '12px' as const;\nexport const tagFontWeight = '500' as const;\n\nexport const tagFont = {\n size: tagFontSize,\n weight: tagFontWeight,\n} as const;\nexport const tagHeight = '24px' as const;\n\nexport const tagRemoveColorSelected = '#FFFFFF' as const;\n\nexport const tagRemoveColor = {\n selected: tagRemoveColorSelected,\n} as const;\n\nexport const tagRemoveHoverBg = 'rgba(15, 23, 42, 0.08)' as const;\n\nexport const tagRemoveHover = {\n bg: tagRemoveHoverBg,\n} as const;\n\nexport const tagRemove = {\n color: tagRemoveColor,\n hover: tagRemoveHover,\n} as const;\n\nexport const tag = {\n bg: tagBg,\n text: tagText,\n border: tagBorder,\n radius: tagRadius,\n padding: tagPadding,\n gap: tagGap,\n font: tagFont,\n height: tagHeight,\n remove: tagRemove,\n} as const;\n\n// ============================================================\n// SPINNER\n// ============================================================\nexport const spinnerColor = '#217B80' as const;\n\nexport const spinnerTrackColor = 'rgba(33, 123, 128, 0.2)' as const;\n\nexport const spinnerTrack = {\n color: spinnerTrackColor,\n} as const;\n\nexport const spinnerSizeSm = '16px' as const;\nexport const spinnerSizeMd = '24px' as const;\nexport const spinnerSizeLg = '32px' as const;\n\nexport const spinnerSize = {\n sm: spinnerSizeSm,\n md: spinnerSizeMd,\n lg: spinnerSizeLg,\n} as const;\n\nexport const spinnerBorderSm = '2px' as const;\nexport const spinnerBorderMd = '3px' as const;\nexport const spinnerBorderLg = '4px' as const;\n\nexport const spinnerBorder = {\n sm: spinnerBorderSm,\n md: spinnerBorderMd,\n lg: spinnerBorderLg,\n} as const;\n\nexport const spinner = {\n color: spinnerColor,\n track: spinnerTrack,\n size: spinnerSize,\n border: spinnerBorder,\n} as const;\n\n// ============================================================\n// TOOLTIP\n// ============================================================\nexport const tooltipBg = '#1E293B' as const;\nexport const tooltipText = '#F8FAFC' as const;\nexport const tooltipRadius = '6px' as const;\nexport const tooltipPadding = '6px 10px' as const;\n\nexport const tooltipFontSize = '12px' as const;\nexport const tooltipFontWeight = '500' as const;\n\nexport const tooltipFont = {\n size: tooltipFontSize,\n weight: tooltipFontWeight,\n} as const;\n\nexport const tooltipArrowSize = '6px' as const;\n\nexport const tooltipArrow = {\n size: tooltipArrowSize,\n} as const;\nexport const tooltipOffset = '8px' as const;\n\nexport const tooltipMaxWidth = '240px' as const;\n\nexport const tooltipMax = {\n width: tooltipMaxWidth,\n} as const;\n\nexport const tooltip = {\n bg: tooltipBg,\n text: tooltipText,\n radius: tooltipRadius,\n padding: tooltipPadding,\n font: tooltipFont,\n arrow: tooltipArrow,\n offset: tooltipOffset,\n max: tooltipMax,\n} as const;\n\n// ============================================================\n// CARD\n// ============================================================\nexport const cardBg = '#FFFFFF' as const;\nexport const cardBorder = '#E2E8F0' as const;\nexport const cardRadius = '12px' as const;\nexport const cardPadding = '16px' as const;\n\nexport const cardShadowElevated = '0 8px 24px rgba(15, 23, 42, 0.08)' as const;\n\nexport const cardShadow = {\n elevated: cardShadowElevated,\n} as const;\n\nexport const card = {\n bg: cardBg,\n border: cardBorder,\n radius: cardRadius,\n padding: cardPadding,\n shadow: cardShadow,\n} as const;\n\n// ============================================================\n// AVATAR\n// ============================================================\n\nexport const avatarBgIdentity = '#217B80' as const;\nexport const avatarBgObject = '#F1F5F9' as const;\n\nexport const avatarBg = {\n identity: avatarBgIdentity,\n object: avatarBgObject,\n} as const;\n\nexport const avatarTextIdentity = '#FFFFFF' as const;\nexport const avatarTextObject = '#334155' as const;\n\nexport const avatarText = {\n identity: avatarTextIdentity,\n object: avatarTextObject,\n} as const;\n\nexport const avatarBorderRadiusIdentity = '9999px' as const;\nexport const avatarBorderRadiusObject = '8px' as const;\n\nexport const avatarBorderRadius = {\n identity: avatarBorderRadiusIdentity,\n object: avatarBorderRadiusObject,\n} as const;\n\nexport const avatarBorder = {\n radius: avatarBorderRadius,\n} as const;\n\nexport const avatarSizeSm = '24px' as const;\nexport const avatarSizeMd = '40px' as const;\nexport const avatarSizeLg = '64px' as const;\n\nexport const avatarSize = {\n sm: avatarSizeSm,\n md: avatarSizeMd,\n lg: avatarSizeLg,\n} as const;\n\nexport const avatarFontSm = '10px' as const;\nexport const avatarFontMd = '14px' as const;\nexport const avatarFontLg = '22px' as const;\nexport const avatarFontWeight = '600' as const;\n\nexport const avatarFont = {\n sm: avatarFontSm,\n md: avatarFontMd,\n lg: avatarFontLg,\n weight: avatarFontWeight,\n} as const;\n\nexport const avatarLetterSpacing = '0.02em' as const;\n\nexport const avatarLetter = {\n spacing: avatarLetterSpacing,\n} as const;\n\nexport const avatar = {\n bg: avatarBg,\n text: avatarText,\n border: avatarBorder,\n size: avatarSize,\n font: avatarFont,\n letter: avatarLetter,\n} as const;\n\n// ============================================================\n// PROGRESS\n// ============================================================\n\nexport const progressTrackBg = '#E2E8F0' as const;\n\nexport const progressTrack = {\n bg: progressTrackBg,\n} as const;\n\nexport const progressFillBg = '#217B80' as const;\n\nexport const progressFill = {\n bg: progressFillBg,\n} as const;\nexport const progressRadius = '9999px' as const;\n\nexport const progressHeightSm = '4px' as const;\nexport const progressHeightMd = '8px' as const;\nexport const progressHeightLg = '12px' as const;\n\nexport const progressHeight = {\n sm: progressHeightSm,\n md: progressHeightMd,\n lg: progressHeightLg,\n} as const;\n\nexport const progressLabelColor = '#334155' as const;\nexport const progressLabelSize = '12px' as const;\n\nexport const progressLabel = {\n color: progressLabelColor,\n size: progressLabelSize,\n} as const;\n\nexport const progress = {\n track: progressTrack,\n fill: progressFill,\n radius: progressRadius,\n height: progressHeight,\n label: progressLabel,\n} as const;\n\n// ============================================================\n// SKELETON\n// ============================================================\nexport const skeletonBg = '#E2E8F0' as const;\nexport const skeletonHighlight = '#F8FAFC' as const;\n\nexport const skeletonRadiusSm = '4px' as const;\nexport const skeletonRadiusLg = '12px' as const;\n\nexport const skeletonRadius = {\n sm: skeletonRadiusSm,\n lg: skeletonRadiusLg,\n} as const;\n\nexport const skeletonPulseWidth = '8rem' as const;\n\nexport const skeletonPulse = {\n width: skeletonPulseWidth,\n} as const;\nexport const skeletonDuration = '1.6s' as const;\n\nexport const skeleton = {\n bg: skeletonBg,\n highlight: skeletonHighlight,\n radius: skeletonRadius,\n pulse: skeletonPulse,\n duration: skeletonDuration,\n} as const;\n\n// ============================================================\n// CAROUSEL\n// ============================================================\nexport const carouselGap = '12px' as const;\nexport const carouselRadius = '12px' as const;\nexport const carouselTransition = 'transform 0.4s cubic-bezier(0.22, 1, 0.36, 1)' as const;\nexport const carouselArrowSize = '36px' as const;\n\nexport const carouselArrowBgHover = '#F8FAFC' as const;\n\nexport const carouselArrowBg = {\n hover: carouselArrowBgHover,\n} as const;\nexport const carouselArrowBorder = '#E2E8F0' as const;\nexport const carouselArrowColor = '#334155' as const;\nexport const carouselArrowShadow = '0 2px 8px rgba(15, 23, 42, 0.12)' as const;\nexport const carouselArrowOffset = '12px' as const;\n\nexport const carouselArrowDisabledOpacity = '0.4' as const;\n\nexport const carouselArrowDisabled = {\n opacity: carouselArrowDisabledOpacity,\n} as const;\n\nexport const carouselArrow = {\n size: carouselArrowSize,\n bg: carouselArrowBg,\n border: carouselArrowBorder,\n color: carouselArrowColor,\n shadow: carouselArrowShadow,\n offset: carouselArrowOffset,\n disabled: carouselArrowDisabled,\n} as const;\n\nexport const carouselDotSizeActive = '20px' as const;\n\nexport const carouselDotSize = {\n active: carouselDotSizeActive,\n} as const;\n\nexport const carouselDotBgActive = '#217B80' as const;\n\nexport const carouselDotBg = {\n active: carouselDotBgActive,\n} as const;\nexport const carouselDotGap = '6px' as const;\n\nexport const carouselDotRowMargin = '12px' as const;\n\nexport const carouselDotRow = {\n margin: carouselDotRowMargin,\n} as const;\n\nexport const carouselDot = {\n size: carouselDotSize,\n bg: carouselDotBg,\n gap: carouselDotGap,\n row: carouselDotRow,\n} as const;\n\nexport const carousel = {\n gap: carouselGap,\n radius: carouselRadius,\n transition: carouselTransition,\n arrow: carouselArrow,\n dot: carouselDot,\n} as const;\n\n// ============================================================\n// DIALOG\n// ============================================================\n\nexport const dialogOverlayBg = 'rgba(15, 23, 42, 0.5)' as const;\n\nexport const dialogOverlay = {\n bg: dialogOverlayBg,\n} as const;\nexport const dialogBg = '#FFFFFF' as const;\nexport const dialogRadius = '12px' as const;\nexport const dialogShadow = '0 24px 48px rgba(15, 23, 42, 0.18)' as const;\nexport const dialogPadding = '20px' as const;\n\nexport const dialogMaxWidth = '480px' as const;\n\nexport const dialogMax = {\n width: dialogMaxWidth,\n} as const;\n\nexport const dialogTitleSize = '18px' as const;\nexport const dialogTitleWeight = '600' as const;\nexport const dialogTitleColor = '#0F172A' as const;\n\nexport const dialogTitle = {\n size: dialogTitleSize,\n weight: dialogTitleWeight,\n color: dialogTitleColor,\n} as const;\n\nexport const dialogBodyColor = '#334155' as const;\n\nexport const dialogBody = {\n color: dialogBodyColor,\n} as const;\nexport const dialogCloseColor = '#64748B' as const;\n\nexport const dialogCloseHoverBg = 'rgba(15, 23, 42, 0.06)' as const;\n\nexport const dialogCloseHover = {\n bg: dialogCloseHoverBg,\n} as const;\n\nexport const dialogClose = {\n color: dialogCloseColor,\n hover: dialogCloseHover,\n} as const;\n\nexport const dialog = {\n overlay: dialogOverlay,\n bg: dialogBg,\n radius: dialogRadius,\n shadow: dialogShadow,\n padding: dialogPadding,\n max: dialogMax,\n title: dialogTitle,\n body: dialogBody,\n close: dialogClose,\n} as const;\n\n// ============================================================\n// TOAST\n// ============================================================\nexport const toastBg = '#1E293B' as const;\nexport const toastText = '#F8FAFC' as const;\nexport const toastRadius = '10px' as const;\nexport const toastPadding = '12px 16px' as const;\nexport const toastShadow = '0 10px 32px rgba(15, 23, 42, 0.24)' as const;\nexport const toastGap = '12px' as const;\n\nexport const toastMinWidth = '280px' as const;\n\nexport const toastMin = {\n width: toastMinWidth,\n} as const;\n\nexport const toastMaxWidth = '400px' as const;\n\nexport const toastMax = {\n width: toastMaxWidth,\n} as const;\n\nexport const toastSuccessBg = '#15803D' as const;\n\nexport const toastSuccess = {\n bg: toastSuccessBg,\n} as const;\n\nexport const toastErrorBg = '#DC2626' as const;\n\nexport const toastError = {\n bg: toastErrorBg,\n} as const;\n\nexport const toastWarningBg = '#A16207' as const;\n\nexport const toastWarning = {\n bg: toastWarningBg,\n} as const;\n\nexport const toastInfoBg = '#2563EB' as const;\n\nexport const toastInfo = {\n bg: toastInfoBg,\n} as const;\n\nexport const toast = {\n bg: toastBg,\n text: toastText,\n radius: toastRadius,\n padding: toastPadding,\n shadow: toastShadow,\n gap: toastGap,\n min: toastMin,\n max: toastMax,\n success: toastSuccess,\n error: toastError,\n warning: toastWarning,\n info: toastInfo,\n} as const;\n\n// ============================================================\n// TABS\n// ============================================================\n\nexport const tabsListBorder = '#E2E8F0' as const;\n\nexport const tabsList = {\n border: tabsListBorder,\n} as const;\n\nexport const tabsTabColorActive = '#217B80' as const;\nexport const tabsTabColorHover = '#334155' as const;\n\nexport const tabsTabColor = {\n active: tabsTabColorActive,\n hover: tabsTabColorHover,\n} as const;\nexport const tabsTabPadding = '10px 16px' as const;\nexport const tabsTabRadius = '8px' as const;\n\nexport const tabsTabFontSize = '14px' as const;\nexport const tabsTabFontWeight = '500' as const;\n\nexport const tabsTabFont = {\n size: tabsTabFontSize,\n weight: tabsTabFontWeight,\n} as const;\n\nexport const tabsTab = {\n color: tabsTabColor,\n padding: tabsTabPadding,\n radius: tabsTabRadius,\n font: tabsTabFont,\n} as const;\n\nexport const tabsIndicatorColor = '#217B80' as const;\nexport const tabsIndicatorHeight = '2px' as const;\n\nexport const tabsIndicator = {\n color: tabsIndicatorColor,\n height: tabsIndicatorHeight,\n} as const;\n\nexport const tabsDisabledOpacity = '0.5' as const;\n\nexport const tabsDisabled = {\n opacity: tabsDisabledOpacity,\n} as const;\n\nexport const tabsPillBgActive = '#217B80' as const;\n\nexport const tabsPillBg = {\n active: tabsPillBgActive,\n} as const;\n\nexport const tabsPillTextActive = '#FFFFFF' as const;\n\nexport const tabsPillText = {\n active: tabsPillTextActive,\n} as const;\n\nexport const tabsPill = {\n bg: tabsPillBg,\n text: tabsPillText,\n} as const;\n\nexport const tabs = {\n list: tabsList,\n tab: tabsTab,\n indicator: tabsIndicator,\n disabled: tabsDisabled,\n pill: tabsPill,\n} as const;\n\n// ============================================================\n// ACCORDION\n// ============================================================\nexport const accordionBg = '#FFFFFF' as const;\nexport const accordionBorder = '#E2E8F0' as const;\nexport const accordionRadius = '10px' as const;\nexport const accordionHeaderPadding = '14px 16px' as const;\n\nexport const accordionHeaderBgHover = '#F8FAFC' as const;\n\nexport const accordionHeaderBg = {\n hover: accordionHeaderBgHover,\n} as const;\nexport const accordionHeaderRadius = '0' as const;\n\nexport const accordionHeader = {\n padding: accordionHeaderPadding,\n bg: accordionHeaderBg,\n radius: accordionHeaderRadius,\n} as const;\nexport const accordionBodyPadding = '0 16px 14px' as const;\nexport const accordionBodySize = '14px' as const;\n\nexport const accordionBodyLineHeight = '1.5' as const;\n\nexport const accordionBodyLine = {\n height: accordionBodyLineHeight,\n} as const;\n\nexport const accordionBodyMaxHeight = '1000px' as const;\n\nexport const accordionBodyMax = {\n height: accordionBodyMaxHeight,\n} as const;\nexport const accordionBodyColor = '#475569' as const;\n\nexport const accordionBody = {\n padding: accordionBodyPadding,\n size: accordionBodySize,\n line: accordionBodyLine,\n max: accordionBodyMax,\n color: accordionBodyColor,\n} as const;\n\nexport const accordionTitleColor = '#0F172A' as const;\nexport const accordionTitleSize = '14px' as const;\nexport const accordionTitleWeight = '500' as const;\n\nexport const accordionTitle = {\n color: accordionTitleColor,\n size: accordionTitleSize,\n weight: accordionTitleWeight,\n} as const;\n\nexport const accordionChevronColor = '#64748B' as const;\n\nexport const accordionChevron = {\n color: accordionChevronColor,\n} as const;\nexport const accordionTransition = '0.2s ease' as const;\n\nexport const accordion = {\n bg: accordionBg,\n border: accordionBorder,\n radius: accordionRadius,\n header: accordionHeader,\n body: accordionBody,\n title: accordionTitle,\n chevron: accordionChevron,\n transition: accordionTransition,\n} as const;\n\n// ============================================================\n// ALERT\n// ============================================================\nexport const alertRadius = '10px' as const;\nexport const alertPadding = '12px 14px' as const;\nexport const alertGap = '10px' as const;\n\nexport const alertTitleWeight = '600' as const;\nexport const alertTitleSize = '14px' as const;\n\nexport const alertTitle = {\n weight: alertTitleWeight,\n size: alertTitleSize,\n} as const;\n\nexport const alertBodySize = '13px' as const;\n\nexport const alertBody = {\n size: alertBodySize,\n} as const;\nexport const alertCloseSize = '22px' as const;\nexport const alertCloseOpacity = '0.7' as const;\n\nexport const alertCloseHoverBg = 'rgba(15, 23, 42, 0.06)' as const;\n\nexport const alertCloseHover = {\n bg: alertCloseHoverBg,\n} as const;\n\nexport const alertClose = {\n size: alertCloseSize,\n opacity: alertCloseOpacity,\n hover: alertCloseHover,\n} as const;\nexport const alertTransition = '0.15s ease' as const;\n\nexport const alertInfoBg = '#EFF6FF' as const;\nexport const alertInfoBorder = '#BFDBFE' as const;\nexport const alertInfoText = '#1E3A8A' as const;\nexport const alertInfoIcon = '#2563EB' as const;\n\nexport const alertInfo = {\n bg: alertInfoBg,\n border: alertInfoBorder,\n text: alertInfoText,\n icon: alertInfoIcon,\n} as const;\n\nexport const alertSuccessBg = '#F0FDF4' as const;\nexport const alertSuccessBorder = '#BBF7D0' as const;\nexport const alertSuccessText = '#14532D' as const;\nexport const alertSuccessIcon = '#15803D' as const;\n\nexport const alertSuccess = {\n bg: alertSuccessBg,\n border: alertSuccessBorder,\n text: alertSuccessText,\n icon: alertSuccessIcon,\n} as const;\n\nexport const alertWarningBg = '#FEFCE8' as const;\nexport const alertWarningBorder = '#FEF08A' as const;\nexport const alertWarningText = '#713F12' as const;\nexport const alertWarningIcon = '#A16207' as const;\n\nexport const alertWarning = {\n bg: alertWarningBg,\n border: alertWarningBorder,\n text: alertWarningText,\n icon: alertWarningIcon,\n} as const;\n\nexport const alertDangerBg = '#FEF2F2' as const;\nexport const alertDangerBorder = '#FECACA' as const;\nexport const alertDangerText = '#7F1D1D' as const;\nexport const alertDangerIcon = '#DC2626' as const;\n\nexport const alertDanger = {\n bg: alertDangerBg,\n border: alertDangerBorder,\n text: alertDangerText,\n icon: alertDangerIcon,\n} as const;\n\nexport const alert = {\n radius: alertRadius,\n padding: alertPadding,\n gap: alertGap,\n title: alertTitle,\n body: alertBody,\n close: alertClose,\n transition: alertTransition,\n info: alertInfo,\n success: alertSuccess,\n warning: alertWarning,\n danger: alertDanger,\n} as const;\n\n// ============================================================\n// DIVIDER\n// ============================================================\n\nexport const dividerColorStrong = '#CBD5E1' as const;\n\nexport const dividerColor = {\n strong: dividerColorStrong,\n} as const;\nexport const dividerThickness = '1px' as const;\nexport const dividerSpacing = '16px' as const;\n\nexport const dividerTextColor = '#64748B' as const;\nexport const dividerTextSize = '12px' as const;\nexport const dividerTextPadding = '12px' as const;\n\nexport const dividerText = {\n color: dividerTextColor,\n size: dividerTextSize,\n padding: dividerTextPadding,\n} as const;\n\nexport const divider = {\n color: dividerColor,\n thickness: dividerThickness,\n spacing: dividerSpacing,\n text: dividerText,\n} as const;\n\n// ============================================================\n// BREADCRUMB\n// ============================================================\n\nexport const breadcrumbColorHover = '#217B80' as const;\nexport const breadcrumbColorCurrent = '#0F172A' as const;\n\nexport const breadcrumbColor = {\n hover: breadcrumbColorHover,\n current: breadcrumbColorCurrent,\n} as const;\n\nexport const breadcrumbSeparatorColor = '#94A3B8' as const;\n\nexport const breadcrumbSeparator = {\n color: breadcrumbSeparatorColor,\n} as const;\n\nexport const breadcrumbFontSize = '13px' as const;\n\nexport const breadcrumbFont = {\n size: breadcrumbFontSize,\n} as const;\nexport const breadcrumbGap = '6px' as const;\n\nexport const breadcrumb = {\n color: breadcrumbColor,\n separator: breadcrumbSeparator,\n font: breadcrumbFont,\n gap: breadcrumbGap,\n} as const;\n\n// ============================================================\n// PAGINATION\n// ============================================================\n\nexport const paginationBgHover = '#F1F5F9' as const;\nexport const paginationBgActive = '#217B80' as const;\n\nexport const paginationBg = {\n hover: paginationBgHover,\n active: paginationBgActive,\n} as const;\n\nexport const paginationBorderHover = '#CBD5E1' as const;\nexport const paginationBorderActive = '#217B80' as const;\n\nexport const paginationBorder = {\n hover: paginationBorderHover,\n active: paginationBorderActive,\n} as const;\n\nexport const paginationColorActive = '#FFFFFF' as const;\n\nexport const paginationColor = {\n active: paginationColorActive,\n} as const;\nexport const paginationRadius = '8px' as const;\nexport const paginationGap = '4px' as const;\n\nexport const paginationSizeSm = '28px' as const;\nexport const paginationSizeMd = '36px' as const;\nexport const paginationSizeLg = '42px' as const;\n\nexport const paginationSize = {\n sm: paginationSizeSm,\n md: paginationSizeMd,\n lg: paginationSizeLg,\n} as const;\n\nexport const paginationFontSize = '13px' as const;\n\nexport const paginationFont = {\n size: paginationFontSize,\n} as const;\n\nexport const paginationShadowFocus = '0 0 0 3px rgba(33, 123, 128, 0.15)' as const;\n\nexport const paginationShadow = {\n focus: paginationShadowFocus,\n} as const;\n\nexport const pagination = {\n bg: paginationBg,\n border: paginationBorder,\n color: paginationColor,\n radius: paginationRadius,\n gap: paginationGap,\n size: paginationSize,\n font: paginationFont,\n shadow: paginationShadow,\n} as const;\n\n// ============================================================\n// DROPDOWN\n// ============================================================\nexport const dropdownBg = '#FFFFFF' as const;\nexport const dropdownBorder = '#E2E8F0' as const;\nexport const dropdownRadius = '8px' as const;\n\nexport const dropdownShadowFocus = '0 0 0 3px rgba(33, 123, 128, 0.15)' as const;\n\nexport const dropdownShadow = {\n focus: dropdownShadowFocus,\n} as const;\nexport const dropdownPadding = '4px' as const;\n\nexport const dropdownMinWidth = '180px' as const;\n\nexport const dropdownMin = {\n width: dropdownMinWidth,\n} as const;\n\nexport const dropdownMaxWidth = '320px' as const;\n\nexport const dropdownMax = {\n width: dropdownMaxWidth,\n} as const;\n\nexport const dropdownTriggerBgHover = '#F8FAFC' as const;\n\nexport const dropdownTriggerBg = {\n hover: dropdownTriggerBgHover,\n} as const;\nexport const dropdownTriggerBorder = '#E2E8F0' as const;\nexport const dropdownTriggerColor = '#334155' as const;\n\nexport const dropdownTrigger = {\n bg: dropdownTriggerBg,\n border: dropdownTriggerBorder,\n color: dropdownTriggerColor,\n} as const;\n\nexport const dropdownItemColorDisabled = '#94A3B8' as const;\nexport const dropdownItemColorDestructive = '#DC2626' as const;\n\nexport const dropdownItemColor = {\n disabled: dropdownItemColorDisabled,\n destructive: dropdownItemColorDestructive,\n} as const;\nexport const dropdownItemBgHover = '#F1F5F9' as const;\n\nexport const dropdownItemBgDestructiveHover = '#FEE2E2' as const;\n\nexport const dropdownItemBgDestructive = {\n hover: dropdownItemBgDestructiveHover,\n} as const;\n\nexport const dropdownItemBg = {\n hover: dropdownItemBgHover,\n destructive: dropdownItemBgDestructive,\n} as const;\nexport const dropdownItemPadding = '8px 10px' as const;\n\nexport const dropdownItem = {\n color: dropdownItemColor,\n bg: dropdownItemBg,\n padding: dropdownItemPadding,\n} as const;\nexport const dropdownDivider = '#E2E8F0' as const;\n\nexport const dropdown = {\n bg: dropdownBg,\n border: dropdownBorder,\n radius: dropdownRadius,\n shadow: dropdownShadow,\n padding: dropdownPadding,\n min: dropdownMin,\n max: dropdownMax,\n trigger: dropdownTrigger,\n item: dropdownItem,\n divider: dropdownDivider,\n} as const;\n\n// ============================================================\n// SEARCHBAR\n// ============================================================\n\nexport const searchbarBgDisabled = '#F1F5F9' as const;\n\nexport const searchbarBg = {\n disabled: searchbarBgDisabled,\n} as const;\nexport const searchbarColor = '#0F172A' as const;\nexport const searchbarPlaceholder = '#94A3B8' as const;\nexport const searchbarIcon = '#64748B' as const;\n\nexport const searchbarBorderHover = '#94A3B8' as const;\nexport const searchbarBorderFocus = '#217B80' as const;\n\nexport const searchbarBorder = {\n hover: searchbarBorderHover,\n focus: searchbarBorderFocus,\n} as const;\nexport const searchbarRadius = '8px' as const;\n\nexport const searchbarPaddingX = '12px' as const;\n\nexport const searchbarPadding = {\n x: searchbarPaddingX,\n} as const;\n\nexport const searchbarHeightSm = '32px' as const;\nexport const searchbarHeightMd = '40px' as const;\nexport const searchbarHeightLg = '48px' as const;\n\nexport const searchbarHeight = {\n sm: searchbarHeightSm,\n md: searchbarHeightMd,\n lg: searchbarHeightLg,\n} as const;\n\nexport const searchbarShadowFocus = '0 0 0 3px rgba(33, 123, 128, 0.15)' as const;\n\nexport const searchbarShadow = {\n focus: searchbarShadowFocus,\n} as const;\n\nexport const searchbarSuggestionBgHover = '#F1F5F9' as const;\n\nexport const searchbarSuggestionBg = {\n hover: searchbarSuggestionBgHover,\n} as const;\n\nexport const searchbarSuggestion = {\n bg: searchbarSuggestionBg,\n} as const;\n\nexport const searchbar = {\n bg: searchbarBg,\n color: searchbarColor,\n placeholder: searchbarPlaceholder,\n icon: searchbarIcon,\n border: searchbarBorder,\n radius: searchbarRadius,\n padding: searchbarPadding,\n height: searchbarHeight,\n shadow: searchbarShadow,\n suggestion: searchbarSuggestion,\n} as const;\n\n// ============================================================\n// RATING\n// ============================================================\n\nexport const ratingColorFilled = '#F59E0B' as const;\nexport const ratingColorEmpty = '#E2E8F0' as const;\n\nexport const ratingColor = {\n filled: ratingColorFilled,\n empty: ratingColorEmpty,\n} as const;\n\nexport const ratingLabelColor = '#334155' as const;\n\nexport const ratingLabel = {\n color: ratingLabelColor,\n} as const;\nexport const ratingGap = '2px' as const;\n\nexport const ratingSizeSm = '16px' as const;\nexport const ratingSizeMd = '22px' as const;\nexport const ratingSizeLg = '28px' as const;\n\nexport const ratingSize = {\n sm: ratingSizeSm,\n md: ratingSizeMd,\n lg: ratingSizeLg,\n} as const;\n\nexport const rating = {\n color: ratingColor,\n label: ratingLabel,\n gap: ratingGap,\n size: ratingSize,\n} as const;\n\n// ============================================================\n// QTY\n// ============================================================\nexport const qtyBg = '#FFFFFF' as const;\nexport const qtyBorder = '#E2E8F0' as const;\nexport const qtyRadius = '8px' as const;\n\nexport const qtyButtonBgHover = '#F1F5F9' as const;\n\nexport const qtyButtonBg = {\n hover: qtyButtonBgHover,\n} as const;\nexport const qtyButtonColor = '#334155' as const;\n\nexport const qtyButtonSizeSm = '28px' as const;\nexport const qtyButtonSizeMd = '36px' as const;\nexport const qtyButtonSizeLg = '44px' as const;\n\nexport const qtyButtonSize = {\n sm: qtyButtonSizeSm,\n md: qtyButtonSizeMd,\n lg: qtyButtonSizeLg,\n} as const;\n\nexport const qtyButton = {\n bg: qtyButtonBg,\n color: qtyButtonColor,\n size: qtyButtonSize,\n} as const;\nexport const qtyInputColor = '#0F172A' as const;\n\nexport const qtyInputWidthSm = '40px' as const;\nexport const qtyInputWidthMd = '52px' as const;\nexport const qtyInputWidthLg = '64px' as const;\n\nexport const qtyInputWidth = {\n sm: qtyInputWidthSm,\n md: qtyInputWidthMd,\n lg: qtyInputWidthLg,\n} as const;\n\nexport const qtyInput = {\n color: qtyInputColor,\n width: qtyInputWidth,\n} as const;\n\nexport const qtyShadowFocus = '0 0 0 3px rgba(33, 123, 128, 0.18)' as const;\n\nexport const qtyShadow = {\n focus: qtyShadowFocus,\n} as const;\n\nexport const qty = {\n bg: qtyBg,\n border: qtyBorder,\n radius: qtyRadius,\n button: qtyButton,\n input: qtyInput,\n shadow: qtyShadow,\n} as const;\n\n// ============================================================\n// STEPPER\n// ============================================================\nexport const stepperCircleSize = '32px' as const;\n\nexport const stepperCircleBgActive = '#FFFFFF' as const;\nexport const stepperCircleBgComplete = '#217B80' as const;\n\nexport const stepperCircleBg = {\n active: stepperCircleBgActive,\n complete: stepperCircleBgComplete,\n} as const;\n\nexport const stepperCircleBorderActive = '#217B80' as const;\nexport const stepperCircleBorderComplete = '#217B80' as const;\n\nexport const stepperCircleBorder = {\n active: stepperCircleBorderActive,\n complete: stepperCircleBorderComplete,\n} as const;\n\nexport const stepperCircleColorActive = '#217B80' as const;\nexport const stepperCircleColorComplete = '#FFFFFF' as const;\n\nexport const stepperCircleColor = {\n active: stepperCircleColorActive,\n complete: stepperCircleColorComplete,\n} as const;\n\nexport const stepperCircle = {\n size: stepperCircleSize,\n bg: stepperCircleBg,\n border: stepperCircleBorder,\n color: stepperCircleColor,\n} as const;\n\nexport const stepperConnectorBgComplete = '#217B80' as const;\n\nexport const stepperConnectorBg = {\n complete: stepperConnectorBgComplete,\n} as const;\n\nexport const stepperConnector = {\n bg: stepperConnectorBg,\n} as const;\n\nexport const stepperLabelColorActive = '#0F172A' as const;\n\nexport const stepperLabelColor = {\n active: stepperLabelColorActive,\n} as const;\n\nexport const stepperLabel = {\n color: stepperLabelColor,\n} as const;\n\nexport const stepperDescriptionColor = '#64748B' as const;\n\nexport const stepperDescription = {\n color: stepperDescriptionColor,\n} as const;\n\nexport const stepperShadowActive = '0 0 0 4px rgba(33, 123, 128, 0.15)' as const;\n\nexport const stepperShadow = {\n active: stepperShadowActive,\n} as const;\n\nexport const stepper = {\n circle: stepperCircle,\n connector: stepperConnector,\n label: stepperLabel,\n description: stepperDescription,\n shadow: stepperShadow,\n} as const;\n\n// ============================================================\n// TABLE\n// ============================================================\nexport const tableBg = '#FFFFFF' as const;\nexport const tableBorder = '#E2E8F0' as const;\nexport const tableRadius = '10px' as const;\n\nexport const tableHeaderBg = '#217B80' as const;\nexport const tableHeaderColor = '#FFFFFF' as const;\n\nexport const tableHeader = {\n bg: tableHeaderBg,\n color: tableHeaderColor,\n} as const;\nexport const tableRowBorder = '#F1F5F9' as const;\n\nexport const tableRowBgHover = '#F8FAFC' as const;\n\nexport const tableRowBg = {\n hover: tableRowBgHover,\n} as const;\n\nexport const tableRowSelectedBg = '#eff6ff' as const;\n\nexport const tableRowSelected = {\n bg: tableRowSelectedBg,\n} as const;\n\nexport const tableRowHoverBg = '#f8fafc' as const;\n\nexport const tableRowHover = {\n bg: tableRowHoverBg,\n} as const;\n\nexport const tableRow = {\n border: tableRowBorder,\n bg: tableRowBg,\n selected: tableRowSelected,\n hover: tableRowHover,\n} as const;\nexport const tableCellColor = '#0F172A' as const;\n\nexport const tableCellPaddingX = '14px' as const;\nexport const tableCellPaddingY = '12px' as const;\n\nexport const tableCellPadding = {\n x: tableCellPaddingX,\n y: tableCellPaddingY,\n} as const;\n\nexport const tableCell = {\n color: tableCellColor,\n padding: tableCellPadding,\n} as const;\n\nexport const tableSortActive = '#FFFFFF' as const;\n\nexport const tableSort = {\n active: tableSortActive,\n} as const;\n\nexport const tableEmptyColor = '#64748B' as const;\n\nexport const tableEmpty = {\n color: tableEmptyColor,\n} as const;\n\nexport const tableFilterRowBg = '#f8fafc' as const;\n\nexport const tableFilterRow = {\n bg: tableFilterRowBg,\n} as const;\n\nexport const tableFilter = {\n row: tableFilterRow,\n} as const;\n\nexport const tableResizerColor = '#3b82f6' as const;\n\nexport const tableResizer = {\n color: tableResizerColor,\n} as const;\n\nexport const table = {\n bg: tableBg,\n border: tableBorder,\n radius: tableRadius,\n header: tableHeader,\n row: tableRow,\n cell: tableCell,\n sort: tableSort,\n empty: tableEmpty,\n filter: tableFilter,\n resizer: tableResizer,\n} as const;\n\n// ============================================================\n// LIGHTBOX\n// ============================================================\n\nexport const lightboxOverlayBg = 'rgba(2, 6, 23, 0.92)' as const;\n\nexport const lightboxOverlay = {\n bg: lightboxOverlayBg,\n} as const;\nexport const lightboxRadius = '12px' as const;\nexport const lightboxShadow = '0 24px 60px rgba(0, 0, 0, 0.5)' as const;\n\nexport const lightboxButtonBg = 'rgba(255, 255, 255, 0.12)' as const;\nexport const lightboxButtonColor = '#F8FAFC' as const;\n\nexport const lightboxButton = {\n bg: lightboxButtonBg,\n color: lightboxButtonColor,\n} as const;\n\nexport const lightboxTextColor = '#F1F5F9' as const;\n\nexport const lightboxText = {\n color: lightboxTextColor,\n} as const;\n\nexport const lightboxThumbBorderActive = '#2C9CA0' as const;\n\nexport const lightboxThumbBorder = {\n active: lightboxThumbBorderActive,\n} as const;\n\nexport const lightboxThumb = {\n border: lightboxThumbBorder,\n} as const;\n\nexport const lightbox = {\n overlay: lightboxOverlay,\n radius: lightboxRadius,\n shadow: lightboxShadow,\n button: lightboxButton,\n text: lightboxText,\n thumb: lightboxThumb,\n} as const;\n\n// ============================================================\n// POPOVER\n// ============================================================\n\nexport const popoverBg = '#ffffff' as const;\nexport const popoverBorder = '#e2e8f0' as const;\nexport const popoverShadow = '0 8px 24px rgba(15, 23, 42, 0.12)' as const;\nexport const popoverRadius = '8px' as const;\nexport const popoverZ = '9999' as const;\n\nexport const popover = {\n bg: popoverBg,\n border: popoverBorder,\n shadow: popoverShadow,\n radius: popoverRadius,\n z: popoverZ,\n} as const;\n\n// ============================================================\n// DRAWER\n// ============================================================\nexport const drawerBg = '#ffffff' as const;\n\nexport const drawerOverlayBg = 'rgba(15, 23, 42, 0.45)' as const;\n\nexport const drawerOverlay = {\n bg: drawerOverlayBg,\n} as const;\nexport const drawerShadow = '0 12px 32px rgba(15, 23, 42, 0.18)' as const;\nexport const drawerTransition = '260ms ease' as const;\n\nexport const drawer = {\n bg: drawerBg,\n overlay: drawerOverlay,\n shadow: drawerShadow,\n transition: drawerTransition,\n} as const;\n\n// ============================================================\n// DATEPICKER\n// ============================================================\n\nexport const datepickerCellSize = '36px' as const;\nexport const datepickerCellRadius = '6px' as const;\n\nexport const datepickerCell = {\n size: datepickerCellSize,\n radius: datepickerCellRadius,\n} as const;\n\nexport const datepickerTodayRing = '#217B80' as const;\n\nexport const datepickerToday = {\n ring: datepickerTodayRing,\n} as const;\n\nexport const datepickerSelectedBg = '#217B80' as const;\n\nexport const datepickerSelected = {\n bg: datepickerSelectedBg,\n} as const;\n\nexport const datepickerRangeBg = '#F1F5F9' as const;\n\nexport const datepickerRange = {\n bg: datepickerRangeBg,\n} as const;\n\nexport const datepicker = {\n cell: datepickerCell,\n today: datepickerToday,\n selected: datepickerSelected,\n range: datepickerRange,\n} as const;\n\n// ============================================================\n// OTP\n// ============================================================\nexport const otpCellSize = '40px' as const;\nexport const otpCellGap = '8px' as const;\nexport const otpCellBorder = '#e2e8f0' as const;\n\nexport const otpCellFocusRing = '0 0 0 3px rgba(59, 130, 246, 0.18)' as const;\n\nexport const otpCellFocus = {\n ring: otpCellFocusRing,\n} as const;\n\nexport const otpCell = {\n size: otpCellSize,\n gap: otpCellGap,\n border: otpCellBorder,\n focus: otpCellFocus,\n} as const;\n\nexport const otp = {\n cell: otpCell,\n} as const;\n\n// ============================================================\n// UPLOAD\n// ============================================================\n\nexport const uploadBorderActive = '#3b82f6' as const;\n\nexport const uploadBorder = {\n active: uploadBorderActive,\n} as const;\n\nexport const uploadBgActive = '#eff6ff' as const;\n\nexport const uploadBg = {\n active: uploadBgActive,\n} as const;\n\nexport const upload = {\n border: uploadBorder,\n bg: uploadBg,\n} as const;\n\n// ============================================================\n// SEGMENTED\n// ============================================================\n\nexport const segmentedTrackBg = '#f1f5f9' as const;\n\nexport const segmentedTrack = {\n bg: segmentedTrackBg,\n} as const;\n\nexport const segmentedThumbBg = '#ffffff' as const;\nexport const segmentedThumbShadow = '0 1px 2px rgba(15, 23, 42, 0.08),' as const;\n\nexport const segmentedThumb = {\n bg: segmentedThumbBg,\n shadow: segmentedThumbShadow,\n} as const;\n\nexport const segmented = {\n track: segmentedTrack,\n thumb: segmentedThumb,\n} as const;\n\n// ============================================================\n// TREE\n// ============================================================\n\nexport const treeLineColor = '#e2e8f0' as const;\n\nexport const treeLine = {\n color: treeLineColor,\n} as const;\n\nexport const treeRowHoverBg = '#f8fafc' as const;\n\nexport const treeRowHover = {\n bg: treeRowHoverBg,\n} as const;\n\nexport const treeRowSelectedBg = '#eff6ff' as const;\n\nexport const treeRowSelected = {\n bg: treeRowSelectedBg,\n} as const;\n\nexport const treeRow = {\n hover: treeRowHover,\n selected: treeRowSelected,\n} as const;\nexport const treeIndent = '20px' as const;\n\nexport const tree = {\n line: treeLine,\n row: treeRow,\n indent: treeIndent,\n} as const;\n// ============================================================\n// TypeScript types\n// ============================================================\nexport type ColorsArvea = keyof typeof colorsArvea;\nexport type ColorsSlate = keyof typeof colorsSlate;\nexport type Colors = keyof typeof colors;\nexport type ActionBtnValidate = keyof typeof actionBtnValidate;\nexport type ActionBtnEdit = keyof typeof actionBtnEdit;\nexport type ActionBtnPayment = keyof typeof actionBtnPayment;\nexport type ActionBtnOrder = keyof typeof actionBtnOrder;\nexport type ActionBtnPrice = keyof typeof actionBtnPrice;\nexport type ActionBtnDelete = keyof typeof actionBtnDelete;\nexport type ActionBtnView = keyof typeof actionBtnView;\nexport type ActionBtnPdf = keyof typeof actionBtnPdf;\nexport type ActionBtnPause = keyof typeof actionBtnPause;\nexport type ActionBtnDownload = keyof typeof actionBtnDownload;\nexport type ActionBtnUpload = keyof typeof actionBtnUpload;\nexport type ActionBtnCopy = keyof typeof actionBtnCopy;\nexport type ActionBtnPrint = keyof typeof actionBtnPrint;\nexport type ActionBtnSettings = keyof typeof actionBtnSettings;\nexport type ActionBtnArchive = keyof typeof actionBtnArchive;\nexport type ActionBtnRestore = keyof typeof actionBtnRestore;\nexport type ActionBtn = keyof typeof actionBtn;\nexport type Action = keyof typeof action;\nexport type Spacing0 = keyof typeof spacing0;\nexport type Spacing1 = keyof typeof spacing1;\nexport type Spacing2 = keyof typeof spacing2;\nexport type Spacing3 = keyof typeof spacing3;\nexport type Spacing = keyof typeof spacing;\nexport type FontSize = keyof typeof fontSize;\nexport type FontWeight = keyof typeof fontWeight;\nexport type Font = keyof typeof font;\nexport type ButtonDefaultBg = keyof typeof buttonDefaultBg;\nexport type ButtonDefault = keyof typeof buttonDefault;\nexport type ButtonOutlineBg = keyof typeof buttonOutlineBg;\nexport type ButtonOutline = keyof typeof buttonOutline;\nexport type ButtonSecondaryBg = keyof typeof buttonSecondaryBg;\nexport type ButtonSecondary = keyof typeof buttonSecondary;\nexport type ButtonDangerBg = keyof typeof buttonDangerBg;\nexport type ButtonDanger = keyof typeof buttonDanger;\nexport type ButtonLink = keyof typeof buttonLink;\nexport type ButtonTextLink = keyof typeof buttonTextLink;\nexport type ButtonText = keyof typeof buttonText;\nexport type ButtonPadding = keyof typeof buttonPadding;\nexport type ButtonHeight = keyof typeof buttonHeight;\nexport type ButtonSize = keyof typeof buttonSize;\nexport type Button = keyof typeof button;\nexport type LoaderColorSubtle = keyof typeof loaderColorSubtle;\nexport type LoaderColor = keyof typeof loaderColor;\nexport type Loader = keyof typeof loader;\nexport type BadgeSuccess = keyof typeof badgeSuccess;\nexport type BadgeError = keyof typeof badgeError;\nexport type BadgeWarning = keyof typeof badgeWarning;\nexport type BadgeInfo = keyof typeof badgeInfo;\nexport type BadgePending = keyof typeof badgePending;\nexport type BadgeActive = keyof typeof badgeActive;\nexport type BadgeInactive = keyof typeof badgeInactive;\nexport type BadgeFont = keyof typeof badgeFont;\nexport type BadgeLine = keyof typeof badgeLine;\nexport type BadgeLabelDefault = keyof typeof badgeLabelDefault;\nexport type BadgeLabelDestructive = keyof typeof badgeLabelDestructive;\nexport type BadgeLabelSecondary = keyof typeof badgeLabelSecondary;\nexport type BadgeLabelOutline = keyof typeof badgeLabelOutline;\nexport type BadgeLabelFont = keyof typeof badgeLabelFont;\nexport type BadgeLabelLine = keyof typeof badgeLabelLine;\nexport type BadgeLabel = keyof typeof badgeLabel;\nexport type Badge = keyof typeof badge;\nexport type ToggleChecked = keyof typeof toggleChecked;\nexport type ToggleUnchecked = keyof typeof toggleUnchecked;\nexport type ToggleThumb = keyof typeof toggleThumb;\nexport type Toggle = keyof typeof toggle;\nexport type CheckboxChecked = keyof typeof checkboxChecked;\nexport type CheckboxUnchecked = keyof typeof checkboxUnchecked;\nexport type CheckboxDisabled = keyof typeof checkboxDisabled;\nexport type CheckboxCheck = keyof typeof checkboxCheck;\nexport type Checkbox = keyof typeof checkbox;\nexport type RadioChecked = keyof typeof radioChecked;\nexport type RadioUnchecked = keyof typeof radioUnchecked;\nexport type RadioDot = keyof typeof radioDot;\nexport type RadioDisabled = keyof typeof radioDisabled;\nexport type RadioLabel = keyof typeof radioLabel;\nexport type Radio = keyof typeof radio;\nexport type SliderTrackFilled = keyof typeof sliderTrackFilled;\nexport type SliderTrack = keyof typeof sliderTrack;\nexport type SliderThumbBorder = keyof typeof sliderThumbBorder;\nexport type SliderThumbShadow = keyof typeof sliderThumbShadow;\nexport type SliderThumb = keyof typeof sliderThumb;\nexport type SliderLabel = keyof typeof sliderLabel;\nexport type SliderValue = keyof typeof sliderValue;\nexport type SliderTick = keyof typeof sliderTick;\nexport type SliderDisabled = keyof typeof sliderDisabled;\nexport type Slider = keyof typeof slider;\nexport type InputBg = keyof typeof inputBg;\nexport type InputBorder = keyof typeof inputBorder;\nexport type InputPadding = keyof typeof inputPadding;\nexport type InputFont = keyof typeof inputFont;\nexport type InputLabel = keyof typeof inputLabel;\nexport type InputHintColor = keyof typeof inputHintColor;\nexport type InputHint = keyof typeof inputHint;\nexport type InputShadow = keyof typeof inputShadow;\nexport type Input = keyof typeof input;\nexport type SelectBg = keyof typeof selectBg;\nexport type SelectBorder = keyof typeof selectBorder;\nexport type SelectPadding = keyof typeof selectPadding;\nexport type SelectFont = keyof typeof selectFont;\nexport type SelectChevron = keyof typeof selectChevron;\nexport type SelectPopup = keyof typeof selectPopup;\nexport type SelectOptionHover = keyof typeof selectOptionHover;\nexport type SelectOptionActive = keyof typeof selectOptionActive;\nexport type SelectOptionSelected = keyof typeof selectOptionSelected;\nexport type SelectOption = keyof typeof selectOption;\nexport type SelectTag = keyof typeof selectTag;\nexport type Select = keyof typeof select;\nexport type TagBg = keyof typeof tagBg;\nexport type TagText = keyof typeof tagText;\nexport type TagBorder = keyof typeof tagBorder;\nexport type TagFont = keyof typeof tagFont;\nexport type TagRemoveColor = keyof typeof tagRemoveColor;\nexport type TagRemoveHover = keyof typeof tagRemoveHover;\nexport type TagRemove = keyof typeof tagRemove;\nexport type Tag = keyof typeof tag;\nexport type SpinnerTrack = keyof typeof spinnerTrack;\nexport type SpinnerSize = keyof typeof spinnerSize;\nexport type SpinnerBorder = keyof typeof spinnerBorder;\nexport type Spinner = keyof typeof spinner;\nexport type TooltipFont = keyof typeof tooltipFont;\nexport type TooltipArrow = keyof typeof tooltipArrow;\nexport type TooltipMax = keyof typeof tooltipMax;\nexport type Tooltip = keyof typeof tooltip;\nexport type CardShadow = keyof typeof cardShadow;\nexport type Card = keyof typeof card;\nexport type AvatarBg = keyof typeof avatarBg;\nexport type AvatarText = keyof typeof avatarText;\nexport type AvatarBorderRadius = keyof typeof avatarBorderRadius;\nexport type AvatarBorder = keyof typeof avatarBorder;\nexport type AvatarSize = keyof typeof avatarSize;\nexport type AvatarFont = keyof typeof avatarFont;\nexport type AvatarLetter = keyof typeof avatarLetter;\nexport type Avatar = keyof typeof avatar;\nexport type ProgressTrack = keyof typeof progressTrack;\nexport type ProgressFill = keyof typeof progressFill;\nexport type ProgressHeight = keyof typeof progressHeight;\nexport type ProgressLabel = keyof typeof progressLabel;\nexport type Progress = keyof typeof progress;\nexport type SkeletonRadius = keyof typeof skeletonRadius;\nexport type SkeletonPulse = keyof typeof skeletonPulse;\nexport type Skeleton = keyof typeof skeleton;\nexport type CarouselArrowBg = keyof typeof carouselArrowBg;\nexport type CarouselArrowDisabled = keyof typeof carouselArrowDisabled;\nexport type CarouselArrow = keyof typeof carouselArrow;\nexport type CarouselDotSize = keyof typeof carouselDotSize;\nexport type CarouselDotBg = keyof typeof carouselDotBg;\nexport type CarouselDotRow = keyof typeof carouselDotRow;\nexport type CarouselDot = keyof typeof carouselDot;\nexport type Carousel = keyof typeof carousel;\nexport type DialogOverlay = keyof typeof dialogOverlay;\nexport type DialogMax = keyof typeof dialogMax;\nexport type DialogTitle = keyof typeof dialogTitle;\nexport type DialogBody = keyof typeof dialogBody;\nexport type DialogCloseHover = keyof typeof dialogCloseHover;\nexport type DialogClose = keyof typeof dialogClose;\nexport type Dialog = keyof typeof dialog;\nexport type ToastMin = keyof typeof toastMin;\nexport type ToastMax = keyof typeof toastMax;\nexport type ToastSuccess = keyof typeof toastSuccess;\nexport type ToastError = keyof typeof toastError;\nexport type ToastWarning = keyof typeof toastWarning;\nexport type ToastInfo = keyof typeof toastInfo;\nexport type Toast = keyof typeof toast;\nexport type TabsList = keyof typeof tabsList;\nexport type TabsTabColor = keyof typeof tabsTabColor;\nexport type TabsTabFont = keyof typeof tabsTabFont;\nexport type TabsTab = keyof typeof tabsTab;\nexport type TabsIndicator = keyof typeof tabsIndicator;\nexport type TabsDisabled = keyof typeof tabsDisabled;\nexport type TabsPillBg = keyof typeof tabsPillBg;\nexport type TabsPillText = keyof typeof tabsPillText;\nexport type TabsPill = keyof typeof tabsPill;\nexport type Tabs = keyof typeof tabs;\nexport type AccordionHeaderBg = keyof typeof accordionHeaderBg;\nexport type AccordionHeader = keyof typeof accordionHeader;\nexport type AccordionBodyLine = keyof typeof accordionBodyLine;\nexport type AccordionBodyMax = keyof typeof accordionBodyMax;\nexport type AccordionBody = keyof typeof accordionBody;\nexport type AccordionTitle = keyof typeof accordionTitle;\nexport type AccordionChevron = keyof typeof accordionChevron;\nexport type Accordion = keyof typeof accordion;\nexport type AlertTitle = keyof typeof alertTitle;\nexport type AlertBody = keyof typeof alertBody;\nexport type AlertCloseHover = keyof typeof alertCloseHover;\nexport type AlertClose = keyof typeof alertClose;\nexport type AlertInfo = keyof typeof alertInfo;\nexport type AlertSuccess = keyof typeof alertSuccess;\nexport type AlertWarning = keyof typeof alertWarning;\nexport type AlertDanger = keyof typeof alertDanger;\nexport type Alert = keyof typeof alert;\nexport type DividerColor = keyof typeof dividerColor;\nexport type DividerText = keyof typeof dividerText;\nexport type Divider = keyof typeof divider;\nexport type BreadcrumbColor = keyof typeof breadcrumbColor;\nexport type BreadcrumbSeparator = keyof typeof breadcrumbSeparator;\nexport type BreadcrumbFont = keyof typeof breadcrumbFont;\nexport type Breadcrumb = keyof typeof breadcrumb;\nexport type PaginationBg = keyof typeof paginationBg;\nexport type PaginationBorder = keyof typeof paginationBorder;\nexport type PaginationColor = keyof typeof paginationColor;\nexport type PaginationSize = keyof typeof paginationSize;\nexport type PaginationFont = keyof typeof paginationFont;\nexport type PaginationShadow = keyof typeof paginationShadow;\nexport type Pagination = keyof typeof pagination;\nexport type DropdownShadow = keyof typeof dropdownShadow;\nexport type DropdownMin = keyof typeof dropdownMin;\nexport type DropdownMax = keyof typeof dropdownMax;\nexport type DropdownTriggerBg = keyof typeof dropdownTriggerBg;\nexport type DropdownTrigger = keyof typeof dropdownTrigger;\nexport type DropdownItemColor = keyof typeof dropdownItemColor;\nexport type DropdownItemBgDestructive = keyof typeof dropdownItemBgDestructive;\nexport type DropdownItemBg = keyof typeof dropdownItemBg;\nexport type DropdownItem = keyof typeof dropdownItem;\nexport type Dropdown = keyof typeof dropdown;\nexport type SearchbarBg = keyof typeof searchbarBg;\nexport type SearchbarBorder = keyof typeof searchbarBorder;\nexport type SearchbarPadding = keyof typeof searchbarPadding;\nexport type SearchbarHeight = keyof typeof searchbarHeight;\nexport type SearchbarShadow = keyof typeof searchbarShadow;\nexport type SearchbarSuggestionBg = keyof typeof searchbarSuggestionBg;\nexport type SearchbarSuggestion = keyof typeof searchbarSuggestion;\nexport type Searchbar = keyof typeof searchbar;\nexport type RatingColor = keyof typeof ratingColor;\nexport type RatingLabel = keyof typeof ratingLabel;\nexport type RatingSize = keyof typeof ratingSize;\nexport type Rating = keyof typeof rating;\nexport type QtyButtonBg = keyof typeof qtyButtonBg;\nexport type QtyButtonSize = keyof typeof qtyButtonSize;\nexport type QtyButton = keyof typeof qtyButton;\nexport type QtyInputWidth = keyof typeof qtyInputWidth;\nexport type QtyInput = keyof typeof qtyInput;\nexport type QtyShadow = keyof typeof qtyShadow;\nexport type Qty = keyof typeof qty;\nexport type StepperCircleBg = keyof typeof stepperCircleBg;\nexport type StepperCircleBorder = keyof typeof stepperCircleBorder;\nexport type StepperCircleColor = keyof typeof stepperCircleColor;\nexport type StepperCircle = keyof typeof stepperCircle;\nexport type StepperConnectorBg = keyof typeof stepperConnectorBg;\nexport type StepperConnector = keyof typeof stepperConnector;\nexport type StepperLabelColor = keyof typeof stepperLabelColor;\nexport type StepperLabel = keyof typeof stepperLabel;\nexport type StepperDescription = keyof typeof stepperDescription;\nexport type StepperShadow = keyof typeof stepperShadow;\nexport type Stepper = keyof typeof stepper;\nexport type TableHeader = keyof typeof tableHeader;\nexport type TableRowBg = keyof typeof tableRowBg;\nexport type TableRowSelected = keyof typeof tableRowSelected;\nexport type TableRowHover = keyof typeof tableRowHover;\nexport type TableRow = keyof typeof tableRow;\nexport type TableCellPadding = keyof typeof tableCellPadding;\nexport type TableCell = keyof typeof tableCell;\nexport type TableSort = keyof typeof tableSort;\nexport type TableEmpty = keyof typeof tableEmpty;\nexport type TableFilterRow = keyof typeof tableFilterRow;\nexport type TableFilter = keyof typeof tableFilter;\nexport type TableResizer = keyof typeof tableResizer;\nexport type Table = keyof typeof table;\nexport type LightboxOverlay = keyof typeof lightboxOverlay;\nexport type LightboxButton = keyof typeof lightboxButton;\nexport type LightboxText = keyof typeof lightboxText;\nexport type LightboxThumbBorder = keyof typeof lightboxThumbBorder;\nexport type LightboxThumb = keyof typeof lightboxThumb;\nexport type Lightbox = keyof typeof lightbox;\nexport type Popover = keyof typeof popover;\nexport type DrawerOverlay = keyof typeof drawerOverlay;\nexport type Drawer = keyof typeof drawer;\nexport type DatepickerCell = keyof typeof datepickerCell;\nexport type DatepickerToday = keyof typeof datepickerToday;\nexport type DatepickerSelected = keyof typeof datepickerSelected;\nexport type DatepickerRange = keyof typeof datepickerRange;\nexport type Datepicker = keyof typeof datepicker;\nexport type OtpCellFocus = keyof typeof otpCellFocus;\nexport type OtpCell = keyof typeof otpCell;\nexport type Otp = keyof typeof otp;\nexport type UploadBorder = keyof typeof uploadBorder;\nexport type UploadBg = keyof typeof uploadBg;\nexport type Upload = keyof typeof upload;\nexport type SegmentedTrack = keyof typeof segmentedTrack;\nexport type SegmentedThumb = keyof typeof segmentedThumb;\nexport type Segmented = keyof typeof segmented;\nexport type TreeLine = keyof typeof treeLine;\nexport type TreeRowHover = keyof typeof treeRowHover;\nexport type TreeRowSelected = keyof typeof treeRowSelected;\nexport type TreeRow = keyof typeof treeRow;\nexport type Tree = keyof typeof tree;\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","/**\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","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 })\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.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 }\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 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 private get _selectedOptions(): ArveaSelectOption[] {\n const values = this._valueArray;\n const pool = this._allOptions;\n const seen = new Map<string, ArveaSelectOption>();\n for (const o of pool) {\n if (!seen.has(o.value)) seen.set(o.value, o);\n }\n return values.map((v) => seen.get(v) ?? { value: v, label: v });\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-y: auto;\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 .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 }\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 .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-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 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 @property({ type: Array }) columns: ArveaDataTableColumn[] = [];\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.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 _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` &middot; <span>${this.accept}</span>`\n : nothing}\n ${this.maxSize\n ? html` &middot; 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 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 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"]}
1
+ {"version":3,"sources":["../src/tokens/tokens.ts"],"names":[],"mappings":"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","file":"index.cjs","sourcesContent":["/**\n * @file tokens.ts\n * @description TypeScript mirror of tokens.css.\n * Exports all design token values as typed constants.\n * Used internally by components — not a public API.\n *\n * Generated automatically — edit tokens.css, then run: npm run tokens\n */\n\n// ============================================================\n// COLORS\n// ============================================================\n\nexport const colorsArvea50 = '#F2FBFA' as const;\nexport const colorsArvea100 = '#D3F4F2' as const;\nexport const colorsArvea200 = '#A7E8E5' as const;\nexport const colorsArvea300 = '#73D5D4' as const;\nexport const colorsArvea400 = '#52BEC0' as const;\nexport const colorsArvea500 = '#2C9CA0' as const;\nexport const colorsArvea600 = '#217B80' as const;\nexport const colorsArvea700 = '#1E6267' as const;\nexport const colorsArvea800 = '#1C4F53' as const;\nexport const colorsArvea900 = '#1C4245' as const;\nexport const colorsArvea950 = '#0A2529' as const;\n\nexport const colorsArvea = {\n 50: colorsArvea50,\n 100: colorsArvea100,\n 200: colorsArvea200,\n 300: colorsArvea300,\n 400: colorsArvea400,\n 500: colorsArvea500,\n 600: colorsArvea600,\n 700: colorsArvea700,\n 800: colorsArvea800,\n 900: colorsArvea900,\n 950: colorsArvea950,\n} as const;\n\nexport const colorsSlate50 = '#F8FAFC' as const;\nexport const colorsSlate100 = '#F1F5F9' as const;\nexport const colorsSlate200 = '#E2E8F0' as const;\nexport const colorsSlate300 = '#CBD5E1' as const;\nexport const colorsSlate400 = '#94A3B8' as const;\nexport const colorsSlate500 = '#64748B' as const;\nexport const colorsSlate600 = '#475569' as const;\nexport const colorsSlate700 = '#334155' as const;\nexport const colorsSlate800 = '#1E293B' as const;\nexport const colorsSlate900 = '#0F172A' as const;\nexport const colorsSlate950 = '#020617' as const;\n\nexport const colorsSlate = {\n 50: colorsSlate50,\n 100: colorsSlate100,\n 200: colorsSlate200,\n 300: colorsSlate300,\n 400: colorsSlate400,\n 500: colorsSlate500,\n 600: colorsSlate600,\n 700: colorsSlate700,\n 800: colorsSlate800,\n 900: colorsSlate900,\n 950: colorsSlate950,\n} as const;\n\nexport const colors = {\n arvea: colorsArvea,\n slate: colorsSlate,\n} as const;\n\n// ============================================================\n// ACTION\n// ============================================================\n\nexport const actionBtnValidateBg = '#2C9CA0' as const;\n\nexport const actionBtnValidate = {\n bg: actionBtnValidateBg,\n} as const;\n\nexport const actionBtnEditBg = '#F97316' as const;\n\nexport const actionBtnEdit = {\n bg: actionBtnEditBg,\n} as const;\n\nexport const actionBtnPaymentBg = '#64748B' as const;\n\nexport const actionBtnPayment = {\n bg: actionBtnPaymentBg,\n} as const;\n\nexport const actionBtnOrderBg = '#F97316' as const;\n\nexport const actionBtnOrder = {\n bg: actionBtnOrderBg,\n} as const;\n\nexport const actionBtnPriceBg = '#F97316' as const;\n\nexport const actionBtnPrice = {\n bg: actionBtnPriceBg,\n} as const;\n\nexport const actionBtnDeleteBg = '#EF4444' as const;\n\nexport const actionBtnDelete = {\n bg: actionBtnDeleteBg,\n} as const;\n\nexport const actionBtnViewBg = '#22C55E' as const;\n\nexport const actionBtnView = {\n bg: actionBtnViewBg,\n} as const;\n\nexport const actionBtnPdfBg = '#3B82F6' as const;\n\nexport const actionBtnPdf = {\n bg: actionBtnPdfBg,\n} as const;\n\nexport const actionBtnPauseBg = '#F59E0B' as const;\n\nexport const actionBtnPause = {\n bg: actionBtnPauseBg,\n} as const;\n\nexport const actionBtnDownloadBg = '#6366F1' as const;\n\nexport const actionBtnDownload = {\n bg: actionBtnDownloadBg,\n} as const;\n\nexport const actionBtnUploadBg = '#8B5CF6' as const;\n\nexport const actionBtnUpload = {\n bg: actionBtnUploadBg,\n} as const;\n\nexport const actionBtnCopyBg = '#0EA5E9' as const;\n\nexport const actionBtnCopy = {\n bg: actionBtnCopyBg,\n} as const;\n\nexport const actionBtnPrintBg = '#64748B' as const;\n\nexport const actionBtnPrint = {\n bg: actionBtnPrintBg,\n} as const;\n\nexport const actionBtnSettingsBg = '#475569' as const;\n\nexport const actionBtnSettings = {\n bg: actionBtnSettingsBg,\n} as const;\n\nexport const actionBtnArchiveBg = '#78716C' as const;\n\nexport const actionBtnArchive = {\n bg: actionBtnArchiveBg,\n} as const;\n\nexport const actionBtnRestoreBg = '#2C9CA0' as const;\n\nexport const actionBtnRestore = {\n bg: actionBtnRestoreBg,\n} as const;\nexport const actionBtnFg = '#FFFFFF' as const;\n\nexport const actionBtn = {\n validate: actionBtnValidate,\n edit: actionBtnEdit,\n payment: actionBtnPayment,\n order: actionBtnOrder,\n price: actionBtnPrice,\n delete: actionBtnDelete,\n view: actionBtnView,\n pdf: actionBtnPdf,\n pause: actionBtnPause,\n download: actionBtnDownload,\n upload: actionBtnUpload,\n copy: actionBtnCopy,\n print: actionBtnPrint,\n settings: actionBtnSettings,\n archive: actionBtnArchive,\n restore: actionBtnRestore,\n fg: actionBtnFg,\n} as const;\n\nexport const action = {\n btn: actionBtn,\n} as const;\n\n// ============================================================\n// SPACING\n// ============================================================\n\nexport const spacing05 = '0.125rem' as const;\n\nexport const spacing0 = {\n 5: spacing05,\n} as const;\n\nexport const spacing15 = '0.375rem' as const;\n\nexport const spacing1 = {\n 5: spacing15,\n} as const;\n\nexport const spacing25 = '0.625rem' as const;\n\nexport const spacing2 = {\n 5: spacing25,\n} as const;\n\nexport const spacing35 = '0.875rem' as const;\n\nexport const spacing3 = {\n 5: spacing35,\n} as const;\nexport const spacing4 = '1rem' as const;\nexport const spacing5 = '1.25rem' as const;\nexport const spacing6 = '1.5rem' as const;\nexport const spacing7 = '1.75rem' as const;\nexport const spacing8 = '2rem' as const;\nexport const spacing9 = '2.25rem' as const;\nexport const spacing10 = '2.5rem' as const;\nexport const spacing11 = '2.75rem' as const;\nexport const spacing12 = '3rem' as const;\nexport const spacing14 = '3.5rem' as const;\nexport const spacing16 = '4rem' as const;\nexport const spacing20 = '5rem' as const;\nexport const spacing24 = '6rem' as const;\nexport const spacing28 = '7rem' as const;\nexport const spacing32 = '8rem' as const;\nexport const spacing36 = '9rem' as const;\nexport const spacing40 = '10rem' as const;\nexport const spacing44 = '11rem' as const;\nexport const spacing48 = '12rem' as const;\nexport const spacing52 = '13rem' as const;\nexport const spacing56 = '14rem' as const;\nexport const spacing60 = '15rem' as const;\nexport const spacing64 = '16rem' as const;\nexport const spacing72 = '18rem' as const;\nexport const spacing80 = '20rem' as const;\nexport const spacing96 = '24rem' as const;\nexport const spacingPx = '1px' as const;\n\nexport const spacing = {\n 0: spacing0,\n 1: spacing1,\n 2: spacing2,\n 3: spacing3,\n 4: spacing4,\n 5: spacing5,\n 6: spacing6,\n 7: spacing7,\n 8: spacing8,\n 9: spacing9,\n 10: spacing10,\n 11: spacing11,\n 12: spacing12,\n 14: spacing14,\n 16: spacing16,\n 20: spacing20,\n 24: spacing24,\n 28: spacing28,\n 32: spacing32,\n 36: spacing36,\n 40: spacing40,\n 44: spacing44,\n 48: spacing48,\n 52: spacing52,\n 56: spacing56,\n 60: spacing60,\n 64: spacing64,\n 72: spacing72,\n 80: spacing80,\n 96: spacing96,\n px: spacingPx,\n} as const;\n\n// ============================================================\n// FONT\n// ============================================================\nexport const fontFamily = '\\'Inter\\', system-ui, -apple-system, sans-serif' as const;\n\nexport const fontSizeXs = '0.75rem' as const;\nexport const fontSizeSm = '0.875rem' as const;\nexport const fontSizeBase = '1rem' as const;\nexport const fontSizeLg = '1.125rem' as const;\nexport const fontSizeXl = '1.25rem' as const;\nexport const fontSize2xl = '1.5rem' as const;\nexport const fontSize3xl = '1.875rem' as const;\nexport const fontSize4xl = '2.25rem' as const;\nexport const fontSize5xl = '3rem' as const;\n\nexport const fontSize = {\n xs: fontSizeXs,\n sm: fontSizeSm,\n base: fontSizeBase,\n lg: fontSizeLg,\n xl: fontSizeXl,\n '2xl': fontSize2xl,\n '3xl': fontSize3xl,\n '4xl': fontSize4xl,\n '5xl': fontSize5xl,\n} as const;\n\nexport const fontWeightRegular = '400' as const;\nexport const fontWeightMedium = '500' as const;\nexport const fontWeightSemibold = '600' as const;\n\nexport const fontWeight = {\n regular: fontWeightRegular,\n medium: fontWeightMedium,\n semibold: fontWeightSemibold,\n} as const;\n\nexport const font = {\n family: fontFamily,\n size: fontSize,\n weight: fontWeight,\n} as const;\n\n// ============================================================\n// BUTTON\n// ============================================================\n\nexport const buttonDefaultBgHover = '#1E6267' as const;\nexport const buttonDefaultBgDisabled = '#E2E8F0' as const;\n\nexport const buttonDefaultBg = {\n hover: buttonDefaultBgHover,\n disabled: buttonDefaultBgDisabled,\n} as const;\n\nexport const buttonDefault = {\n bg: buttonDefaultBg,\n} as const;\n\nexport const buttonOutlineBgHover = '#F1F5F9' as const;\n\nexport const buttonOutlineBg = {\n hover: buttonOutlineBgHover,\n} as const;\nexport const buttonOutlineBorder = '#E2E8F0' as const;\nexport const buttonOutlineShadow = '0px 1px 2px rgba(0, 0, 0, 0.05)' as const;\n\nexport const buttonOutline = {\n bg: buttonOutlineBg,\n border: buttonOutlineBorder,\n shadow: buttonOutlineShadow,\n} as const;\n\nexport const buttonSecondaryBgHover = '#E2E8F0' as const;\n\nexport const buttonSecondaryBg = {\n hover: buttonSecondaryBgHover,\n} as const;\n\nexport const buttonSecondary = {\n bg: buttonSecondaryBg,\n} as const;\n\nexport const buttonDangerBgHover = '#B91C1C' as const;\n\nexport const buttonDangerBg = {\n hover: buttonDangerBgHover,\n} as const;\n\nexport const buttonDanger = {\n bg: buttonDangerBg,\n} as const;\n\nexport const buttonLinkBg = 'transparent' as const;\n\nexport const buttonLink = {\n bg: buttonLinkBg,\n} as const;\nexport const buttonTextDefault = '#FFFFFF' as const;\nexport const buttonTextOutline = '#334155' as const;\nexport const buttonTextSecondary = '#334155' as const;\nexport const buttonTextDanger = '#FFFFFF' as const;\n\nexport const buttonTextLinkHover = '#1E6267' as const;\n\nexport const buttonTextLink = {\n hover: buttonTextLinkHover,\n} as const;\nexport const buttonTextDisabled = '#94A3B8' as const;\n\nexport const buttonText = {\n default: buttonTextDefault,\n outline: buttonTextOutline,\n secondary: buttonTextSecondary,\n danger: buttonTextDanger,\n link: buttonTextLink,\n disabled: buttonTextDisabled,\n} as const;\nexport const buttonRadius = '8px' as const;\nexport const buttonGap = '6px' as const;\n\nexport const buttonPaddingDefault = '8px 16px' as const;\nexport const buttonPaddingSm = '0px 12px' as const;\nexport const buttonPaddingLg = '0px 24px' as const;\nexport const buttonPaddingIcon = '0px' as const;\n\nexport const buttonPadding = {\n default: buttonPaddingDefault,\n sm: buttonPaddingSm,\n lg: buttonPaddingLg,\n icon: buttonPaddingIcon,\n} as const;\n\nexport const buttonHeightDefault = '36px' as const;\nexport const buttonHeightSm = '32px' as const;\nexport const buttonHeightLg = '40px' as const;\n\nexport const buttonHeight = {\n default: buttonHeightDefault,\n sm: buttonHeightSm,\n lg: buttonHeightLg,\n} as const;\n\nexport const buttonSizeIcon = '40px' as const;\n\nexport const buttonSize = {\n icon: buttonSizeIcon,\n} as const;\n\nexport const button = {\n default: buttonDefault,\n outline: buttonOutline,\n secondary: buttonSecondary,\n danger: buttonDanger,\n link: buttonLink,\n text: buttonText,\n radius: buttonRadius,\n gap: buttonGap,\n padding: buttonPadding,\n height: buttonHeight,\n size: buttonSize,\n} as const;\n\n// ============================================================\n// LOADER\n// ============================================================\nexport const loaderColorDefault = '#FFFFFF' as const;\n\nexport const loaderColorSubtleDefault = 'rgba(255, 255, 255, 0.4)' as const;\nexport const loaderColorSubtleOutline = 'rgba(51, 65, 85, 0.4)' as const;\nexport const loaderColorSubtleSecondary = 'rgba(51, 65, 85, 0.4)' as const;\nexport const loaderColorSubtleDanger = 'rgba(255, 255, 255, 0.4)' as const;\n\nexport const loaderColorSubtle = {\n default: loaderColorSubtleDefault,\n outline: loaderColorSubtleOutline,\n secondary: loaderColorSubtleSecondary,\n danger: loaderColorSubtleDanger,\n} as const;\nexport const loaderColorOutline = '#334155' as const;\nexport const loaderColorSecondary = '#334155' as const;\nexport const loaderColorDanger = '#FFFFFF' as const;\n\nexport const loaderColor = {\n default: loaderColorDefault,\n subtle: loaderColorSubtle,\n outline: loaderColorOutline,\n secondary: loaderColorSecondary,\n danger: loaderColorDanger,\n} as const;\n\nexport const loader = {\n color: loaderColor,\n} as const;\n\n// ============================================================\n// BADGE\n// ============================================================\n\nexport const badgeSuccessBg = '#F0FDF4' as const;\nexport const badgeSuccessText = '#15803D' as const;\nexport const badgeSuccessIcon = '#15803D' as const;\n\nexport const badgeSuccess = {\n bg: badgeSuccessBg,\n text: badgeSuccessText,\n icon: badgeSuccessIcon,\n} as const;\n\nexport const badgeErrorBg = '#FEE2E2' as const;\nexport const badgeErrorText = '#DC2626' as const;\nexport const badgeErrorIcon = '#DC2626' as const;\n\nexport const badgeError = {\n bg: badgeErrorBg,\n text: badgeErrorText,\n icon: badgeErrorIcon,\n} as const;\n\nexport const badgeWarningBg = '#FEF9C3' as const;\nexport const badgeWarningText = '#A16207' as const;\nexport const badgeWarningIcon = '#A16207' as const;\n\nexport const badgeWarning = {\n bg: badgeWarningBg,\n text: badgeWarningText,\n icon: badgeWarningIcon,\n} as const;\n\nexport const badgeInfoBg = '#DBEAFE' as const;\nexport const badgeInfoText = '#2563EB' as const;\nexport const badgeInfoIcon = '#2563EB' as const;\n\nexport const badgeInfo = {\n bg: badgeInfoBg,\n text: badgeInfoText,\n icon: badgeInfoIcon,\n} as const;\n\nexport const badgePendingBg = '#FED7AA' as const;\nexport const badgePendingText = '#7C2D12' as const;\nexport const badgePendingIcon = '#7C2D12' as const;\n\nexport const badgePending = {\n bg: badgePendingBg,\n text: badgePendingText,\n icon: badgePendingIcon,\n} as const;\n\nexport const badgeActiveBg = '#1D4ED8' as const;\nexport const badgeActiveText = '#EFF6FF' as const;\nexport const badgeActiveIcon = '#EFF6FF' as const;\n\nexport const badgeActive = {\n bg: badgeActiveBg,\n text: badgeActiveText,\n icon: badgeActiveIcon,\n} as const;\n\nexport const badgeInactiveBg = '#F1F5F9' as const;\nexport const badgeInactiveText = '#475569' as const;\nexport const badgeInactiveIcon = '#475569' as const;\n\nexport const badgeInactive = {\n bg: badgeInactiveBg,\n text: badgeInactiveText,\n icon: badgeInactiveIcon,\n} as const;\nexport const badgeRadius = '4px' as const;\nexport const badgePadding = '3px 8px' as const;\nexport const badgeGap = '4px' as const;\n\nexport const badgeFontSize = '12px' as const;\nexport const badgeFontWeight = '600' as const;\n\nexport const badgeFont = {\n size: badgeFontSize,\n weight: badgeFontWeight,\n} as const;\n\nexport const badgeLineHeight = '16px' as const;\n\nexport const badgeLine = {\n height: badgeLineHeight,\n} as const;\nexport const badgeHeight = '22px' as const;\n\nexport const badgeLabelDefaultBg = '#155DFC' as const;\nexport const badgeLabelDefaultBorder = '#155DFC' as const;\nexport const badgeLabelDefaultText = '#F8FAFC' as const;\n\nexport const badgeLabelDefault = {\n bg: badgeLabelDefaultBg,\n border: badgeLabelDefaultBorder,\n text: badgeLabelDefaultText,\n} as const;\n\nexport const badgeLabelDestructiveBg = '#E7000B' as const;\nexport const badgeLabelDestructiveBorder = '#E7000B' as const;\nexport const badgeLabelDestructiveText = '#F8FAFC' as const;\n\nexport const badgeLabelDestructive = {\n bg: badgeLabelDestructiveBg,\n border: badgeLabelDestructiveBorder,\n text: badgeLabelDestructiveText,\n} as const;\n\nexport const badgeLabelSecondaryBg = '#F1F5F9' as const;\nexport const badgeLabelSecondaryBorder = '#F1F5F9' as const;\nexport const badgeLabelSecondaryText = '#0F172B' as const;\n\nexport const badgeLabelSecondary = {\n bg: badgeLabelSecondaryBg,\n border: badgeLabelSecondaryBorder,\n text: badgeLabelSecondaryText,\n} as const;\n\nexport const badgeLabelOutlineBg = 'transparent' as const;\nexport const badgeLabelOutlineBorder = '#E2E8F0' as const;\nexport const badgeLabelOutlineText = '#020618' as const;\n\nexport const badgeLabelOutline = {\n bg: badgeLabelOutlineBg,\n border: badgeLabelOutlineBorder,\n text: badgeLabelOutlineText,\n} as const;\nexport const badgeLabelRadius = '8px' as const;\nexport const badgeLabelPadding = '2px 8px' as const;\nexport const badgeLabelGap = '8px' as const;\nexport const badgeLabelHeight = '20px' as const;\n\nexport const badgeLabelFontSize = '12px' as const;\nexport const badgeLabelFontWeight = '600' as const;\n\nexport const badgeLabelFont = {\n size: badgeLabelFontSize,\n weight: badgeLabelFontWeight,\n} as const;\n\nexport const badgeLabelLineHeight = '16px' as const;\n\nexport const badgeLabelLine = {\n height: badgeLabelLineHeight,\n} as const;\n\nexport const badgeLabel = {\n default: badgeLabelDefault,\n destructive: badgeLabelDestructive,\n secondary: badgeLabelSecondary,\n outline: badgeLabelOutline,\n radius: badgeLabelRadius,\n padding: badgeLabelPadding,\n gap: badgeLabelGap,\n height: badgeLabelHeight,\n font: badgeLabelFont,\n line: badgeLabelLine,\n} as const;\n\nexport const badge = {\n success: badgeSuccess,\n error: badgeError,\n warning: badgeWarning,\n info: badgeInfo,\n pending: badgePending,\n active: badgeActive,\n inactive: badgeInactive,\n radius: badgeRadius,\n padding: badgePadding,\n gap: badgeGap,\n font: badgeFont,\n line: badgeLine,\n height: badgeHeight,\n label: badgeLabel,\n} as const;\n\n// ============================================================\n// TOGGLE\n// ============================================================\n\nexport const toggleCheckedBg = '#217B80' as const;\n\nexport const toggleChecked = {\n bg: toggleCheckedBg,\n} as const;\n\nexport const toggleUncheckedBg = '#E2E8F0' as const;\n\nexport const toggleUnchecked = {\n bg: toggleUncheckedBg,\n} as const;\nexport const toggleWidth = '44px' as const;\nexport const toggleHeight = '24px' as const;\nexport const togglePadding = '2px' as const;\nexport const toggleRadius = '9999px' as const;\n\nexport const toggleThumbSize = '20px' as const;\nexport const toggleThumbBg = '#FFFFFF' as const;\n\nexport const toggleThumb = {\n size: toggleThumbSize,\n bg: toggleThumbBg,\n} as const;\n\nexport const toggle = {\n checked: toggleChecked,\n unchecked: toggleUnchecked,\n width: toggleWidth,\n height: toggleHeight,\n padding: togglePadding,\n radius: toggleRadius,\n thumb: toggleThumb,\n} as const;\n\n// ============================================================\n// CHECKBOX\n// ============================================================\nexport const checkboxSize = '16px' as const;\nexport const checkboxRadius = '4px' as const;\nexport const checkboxBorder = '#217B80' as const;\n\nexport const checkboxCheckedBg = '#217B80' as const;\n\nexport const checkboxChecked = {\n bg: checkboxCheckedBg,\n} as const;\n\nexport const checkboxUncheckedBg = '#FFFFFF' as const;\n\nexport const checkboxUnchecked = {\n bg: checkboxUncheckedBg,\n} as const;\n\nexport const checkboxDisabledOpacity = '0.5' as const;\n\nexport const checkboxDisabled = {\n opacity: checkboxDisabledOpacity,\n} as const;\n\nexport const checkboxCheckSize = '12px' as const;\nexport const checkboxCheckColor = '#FFFFFF' as const;\n\nexport const checkboxCheck = {\n size: checkboxCheckSize,\n color: checkboxCheckColor,\n} as const;\n\nexport const checkbox = {\n size: checkboxSize,\n radius: checkboxRadius,\n border: checkboxBorder,\n checked: checkboxChecked,\n unchecked: checkboxUnchecked,\n disabled: checkboxDisabled,\n check: checkboxCheck,\n} as const;\n\n// ============================================================\n// RADIO\n// ============================================================\nexport const radioSize = '16px' as const;\nexport const radioRadius = '9999px' as const;\nexport const radioBorder = '#217B80' as const;\n\nexport const radioCheckedBg = '#FFFFFF' as const;\n\nexport const radioChecked = {\n bg: radioCheckedBg,\n} as const;\n\nexport const radioUncheckedBg = '#FFFFFF' as const;\n\nexport const radioUnchecked = {\n bg: radioUncheckedBg,\n} as const;\n\nexport const radioDotSize = '8px' as const;\nexport const radioDotColor = '#217B80' as const;\n\nexport const radioDot = {\n size: radioDotSize,\n color: radioDotColor,\n} as const;\n\nexport const radioDisabledOpacity = '0.5' as const;\n\nexport const radioDisabled = {\n opacity: radioDisabledOpacity,\n} as const;\nexport const radioGap = '8px' as const;\n\nexport const radioLabelSize = '14px' as const;\nexport const radioLabelWeight = '500' as const;\nexport const radioLabelColor = '#020618' as const;\n\nexport const radioLabel = {\n size: radioLabelSize,\n weight: radioLabelWeight,\n color: radioLabelColor,\n} as const;\n\nexport const radio = {\n size: radioSize,\n radius: radioRadius,\n border: radioBorder,\n checked: radioChecked,\n unchecked: radioUnchecked,\n dot: radioDot,\n disabled: radioDisabled,\n gap: radioGap,\n label: radioLabel,\n} as const;\n\n// ============================================================\n// SLIDER\n// ============================================================\nexport const sliderTrackHeight = '8px' as const;\nexport const sliderTrackBg = '#F1F5F9' as const;\n\nexport const sliderTrackFilledBg = '#217B80' as const;\n\nexport const sliderTrackFilled = {\n bg: sliderTrackFilledBg,\n} as const;\nexport const sliderTrackRadius = '9999px' as const;\n\nexport const sliderTrack = {\n height: sliderTrackHeight,\n bg: sliderTrackBg,\n filled: sliderTrackFilled,\n radius: sliderTrackRadius,\n} as const;\nexport const sliderThumbSize = '20px' as const;\nexport const sliderThumbBg = '#FFFFFF' as const;\n\nexport const sliderThumbBorderWidth = '2px' as const;\n\nexport const sliderThumbBorder = {\n width: sliderThumbBorderWidth,\n} as const;\n\nexport const sliderThumbShadowFocus = '0 0 0 4px rgba(33, 123, 128, 0.18)' as const;\n\nexport const sliderThumbShadow = {\n focus: sliderThumbShadowFocus,\n} as const;\n\nexport const sliderThumb = {\n size: sliderThumbSize,\n bg: sliderThumbBg,\n border: sliderThumbBorder,\n shadow: sliderThumbShadow,\n} as const;\n\nexport const sliderLabelColor = '#334155' as const;\nexport const sliderLabelSize = '13px' as const;\nexport const sliderLabelWeight = '500' as const;\n\nexport const sliderLabel = {\n color: sliderLabelColor,\n size: sliderLabelSize,\n weight: sliderLabelWeight,\n} as const;\n\nexport const sliderValueColor = '#217B80' as const;\nexport const sliderValueSize = '13px' as const;\n\nexport const sliderValue = {\n color: sliderValueColor,\n size: sliderValueSize,\n} as const;\n\nexport const sliderTickColor = '#94A3B8' as const;\nexport const sliderTickSize = '4px' as const;\n\nexport const sliderTick = {\n color: sliderTickColor,\n size: sliderTickSize,\n} as const;\n\nexport const sliderDisabledOpacity = '0.5' as const;\n\nexport const sliderDisabled = {\n opacity: sliderDisabledOpacity,\n} as const;\n\nexport const slider = {\n track: sliderTrack,\n thumb: sliderThumb,\n label: sliderLabel,\n value: sliderValue,\n tick: sliderTick,\n disabled: sliderDisabled,\n} as const;\n\n// ============================================================\n// INPUT\n// ============================================================\n\nexport const inputBgDisabled = '#F1F5F9' as const;\n\nexport const inputBg = {\n disabled: inputBgDisabled,\n} as const;\nexport const inputText = '#0F172A' as const;\nexport const inputPlaceholder = '#94A3B8' as const;\n\nexport const inputBorderHover = '#94A3B8' as const;\nexport const inputBorderFocus = '#217B80' as const;\nexport const inputBorderInvalid = '#DC2626' as const;\nexport const inputBorderWarning = '#A16207' as const;\n\nexport const inputBorder = {\n hover: inputBorderHover,\n focus: inputBorderFocus,\n invalid: inputBorderInvalid,\n warning: inputBorderWarning,\n} as const;\nexport const inputRadius = '8px' as const;\n\nexport const inputPaddingX = '12px' as const;\nexport const inputPaddingY = '8px' as const;\n\nexport const inputPadding = {\n x: inputPaddingX,\n y: inputPaddingY,\n} as const;\nexport const inputHeight = '36px' as const;\n\nexport const inputFontSize = '14px' as const;\n\nexport const inputFont = {\n size: inputFontSize,\n} as const;\n\nexport const inputLabelColor = '#334155' as const;\nexport const inputLabelSize = '13px' as const;\nexport const inputLabelWeight = '500' as const;\n\nexport const inputLabel = {\n color: inputLabelColor,\n size: inputLabelSize,\n weight: inputLabelWeight,\n} as const;\n\nexport const inputHintColorInvalid = '#DC2626' as const;\nexport const inputHintColorWarning = '#A16207' as const;\nexport const inputHintColorValid = '#15803D' as const;\n\nexport const inputHintColor = {\n invalid: inputHintColorInvalid,\n warning: inputHintColorWarning,\n valid: inputHintColorValid,\n} as const;\nexport const inputHintSize = '12px' as const;\n\nexport const inputHint = {\n color: inputHintColor,\n size: inputHintSize,\n} as const;\n\nexport const inputShadowFocus = '0 0 0 3px rgba(33, 123, 128, 0.15)' as const;\n\nexport const inputShadow = {\n focus: inputShadowFocus,\n} as const;\n\nexport const input = {\n bg: inputBg,\n text: inputText,\n placeholder: inputPlaceholder,\n border: inputBorder,\n radius: inputRadius,\n padding: inputPadding,\n height: inputHeight,\n font: inputFont,\n label: inputLabel,\n hint: inputHint,\n shadow: inputShadow,\n} as const;\n\n// ============================================================\n// SELECT\n// ============================================================\n\nexport const selectBgDisabled = '#F1F5F9' as const;\n\nexport const selectBg = {\n disabled: selectBgDisabled,\n} as const;\nexport const selectText = '#0F172A' as const;\nexport const selectPlaceholder = '#94A3B8' as const;\n\nexport const selectBorderFocus = '#217B80' as const;\nexport const selectBorderInvalid = '#DC2626' as const;\n\nexport const selectBorder = {\n focus: selectBorderFocus,\n invalid: selectBorderInvalid,\n} as const;\nexport const selectRadius = '8px' as const;\n\nexport const selectPaddingX = '12px' as const;\nexport const selectPaddingY = '8px' as const;\n\nexport const selectPadding = {\n x: selectPaddingX,\n y: selectPaddingY,\n} as const;\nexport const selectHeight = '36px' as const;\n\nexport const selectFontSize = '14px' as const;\n\nexport const selectFont = {\n size: selectFontSize,\n} as const;\n\nexport const selectChevronColor = '#64748B' as const;\n\nexport const selectChevron = {\n color: selectChevronColor,\n} as const;\n\nexport const selectPopupBg = '#ffffff' as const;\nexport const selectPopupBorder = '#e2e8f0' as const;\nexport const selectPopupShadow = '0 8px 24px rgba(15, 23, 42, 0.12)' as const;\nexport const selectPopupRadius = '8px' as const;\nexport const selectPopupZ = '9999' as const;\n\nexport const selectPopup = {\n bg: selectPopupBg,\n border: selectPopupBorder,\n shadow: selectPopupShadow,\n radius: selectPopupRadius,\n z: selectPopupZ,\n} as const;\n\nexport const selectOptionHoverBg = '#f8fafc' as const;\n\nexport const selectOptionHover = {\n bg: selectOptionHoverBg,\n} as const;\n\nexport const selectOptionActiveBg = '#f1f5f9' as const;\n\nexport const selectOptionActive = {\n bg: selectOptionActiveBg,\n} as const;\n\nexport const selectOptionSelectedBg = '#eff6ff' as const;\nexport const selectOptionSelectedFg = '#1d4ed8' as const;\n\nexport const selectOptionSelected = {\n bg: selectOptionSelectedBg,\n fg: selectOptionSelectedFg,\n} as const;\n\nexport const selectOption = {\n hover: selectOptionHover,\n active: selectOptionActive,\n selected: selectOptionSelected,\n} as const;\n\nexport const selectTagBg = '#f1f5f9' as const;\nexport const selectTagFg = '#334155' as const;\nexport const selectTagRadius = '4px' as const;\n\nexport const selectTag = {\n bg: selectTagBg,\n fg: selectTagFg,\n radius: selectTagRadius,\n} as const;\n\nexport const select = {\n bg: selectBg,\n text: selectText,\n placeholder: selectPlaceholder,\n border: selectBorder,\n radius: selectRadius,\n padding: selectPadding,\n height: selectHeight,\n font: selectFont,\n chevron: selectChevron,\n popup: selectPopup,\n option: selectOption,\n tag: selectTag,\n} as const;\n\n// ============================================================\n// TAG\n// ============================================================\n\nexport const tagBgHover = '#F8FAFC' as const;\nexport const tagBgSelected = '#217B80' as const;\n\nexport const tagBg = {\n hover: tagBgHover,\n selected: tagBgSelected,\n} as const;\n\nexport const tagTextSelected = '#FFFFFF' as const;\n\nexport const tagText = {\n selected: tagTextSelected,\n} as const;\n\nexport const tagBorderSelected = '#217B80' as const;\n\nexport const tagBorder = {\n selected: tagBorderSelected,\n} as const;\nexport const tagRadius = '9999px' as const;\nexport const tagPadding = '4px 10px' as const;\nexport const tagGap = '6px' as const;\n\nexport const tagFontSize = '12px' as const;\nexport const tagFontWeight = '500' as const;\n\nexport const tagFont = {\n size: tagFontSize,\n weight: tagFontWeight,\n} as const;\nexport const tagHeight = '24px' as const;\n\nexport const tagRemoveColorSelected = '#FFFFFF' as const;\n\nexport const tagRemoveColor = {\n selected: tagRemoveColorSelected,\n} as const;\n\nexport const tagRemoveHoverBg = 'rgba(15, 23, 42, 0.08)' as const;\n\nexport const tagRemoveHover = {\n bg: tagRemoveHoverBg,\n} as const;\n\nexport const tagRemove = {\n color: tagRemoveColor,\n hover: tagRemoveHover,\n} as const;\n\nexport const tag = {\n bg: tagBg,\n text: tagText,\n border: tagBorder,\n radius: tagRadius,\n padding: tagPadding,\n gap: tagGap,\n font: tagFont,\n height: tagHeight,\n remove: tagRemove,\n} as const;\n\n// ============================================================\n// SPINNER\n// ============================================================\nexport const spinnerColor = '#217B80' as const;\n\nexport const spinnerTrackColor = 'rgba(33, 123, 128, 0.2)' as const;\n\nexport const spinnerTrack = {\n color: spinnerTrackColor,\n} as const;\n\nexport const spinnerSizeSm = '16px' as const;\nexport const spinnerSizeMd = '24px' as const;\nexport const spinnerSizeLg = '32px' as const;\n\nexport const spinnerSize = {\n sm: spinnerSizeSm,\n md: spinnerSizeMd,\n lg: spinnerSizeLg,\n} as const;\n\nexport const spinnerBorderSm = '2px' as const;\nexport const spinnerBorderMd = '3px' as const;\nexport const spinnerBorderLg = '4px' as const;\n\nexport const spinnerBorder = {\n sm: spinnerBorderSm,\n md: spinnerBorderMd,\n lg: spinnerBorderLg,\n} as const;\n\nexport const spinner = {\n color: spinnerColor,\n track: spinnerTrack,\n size: spinnerSize,\n border: spinnerBorder,\n} as const;\n\n// ============================================================\n// TOOLTIP\n// ============================================================\nexport const tooltipBg = '#1E293B' as const;\nexport const tooltipText = '#F8FAFC' as const;\nexport const tooltipRadius = '6px' as const;\nexport const tooltipPadding = '6px 10px' as const;\n\nexport const tooltipFontSize = '12px' as const;\nexport const tooltipFontWeight = '500' as const;\n\nexport const tooltipFont = {\n size: tooltipFontSize,\n weight: tooltipFontWeight,\n} as const;\n\nexport const tooltipArrowSize = '6px' as const;\n\nexport const tooltipArrow = {\n size: tooltipArrowSize,\n} as const;\nexport const tooltipOffset = '8px' as const;\n\nexport const tooltipMaxWidth = '240px' as const;\n\nexport const tooltipMax = {\n width: tooltipMaxWidth,\n} as const;\n\nexport const tooltip = {\n bg: tooltipBg,\n text: tooltipText,\n radius: tooltipRadius,\n padding: tooltipPadding,\n font: tooltipFont,\n arrow: tooltipArrow,\n offset: tooltipOffset,\n max: tooltipMax,\n} as const;\n\n// ============================================================\n// CARD\n// ============================================================\nexport const cardBg = '#FFFFFF' as const;\nexport const cardBorder = '#E2E8F0' as const;\nexport const cardRadius = '12px' as const;\nexport const cardPadding = '16px' as const;\n\nexport const cardShadowElevated = '0 8px 24px rgba(15, 23, 42, 0.08)' as const;\n\nexport const cardShadow = {\n elevated: cardShadowElevated,\n} as const;\n\nexport const card = {\n bg: cardBg,\n border: cardBorder,\n radius: cardRadius,\n padding: cardPadding,\n shadow: cardShadow,\n} as const;\n\n// ============================================================\n// AVATAR\n// ============================================================\n\nexport const avatarBgIdentity = '#217B80' as const;\nexport const avatarBgObject = '#F1F5F9' as const;\n\nexport const avatarBg = {\n identity: avatarBgIdentity,\n object: avatarBgObject,\n} as const;\n\nexport const avatarTextIdentity = '#FFFFFF' as const;\nexport const avatarTextObject = '#334155' as const;\n\nexport const avatarText = {\n identity: avatarTextIdentity,\n object: avatarTextObject,\n} as const;\n\nexport const avatarBorderRadiusIdentity = '9999px' as const;\nexport const avatarBorderRadiusObject = '8px' as const;\n\nexport const avatarBorderRadius = {\n identity: avatarBorderRadiusIdentity,\n object: avatarBorderRadiusObject,\n} as const;\n\nexport const avatarBorder = {\n radius: avatarBorderRadius,\n} as const;\n\nexport const avatarSizeSm = '24px' as const;\nexport const avatarSizeMd = '40px' as const;\nexport const avatarSizeLg = '64px' as const;\n\nexport const avatarSize = {\n sm: avatarSizeSm,\n md: avatarSizeMd,\n lg: avatarSizeLg,\n} as const;\n\nexport const avatarFontSm = '10px' as const;\nexport const avatarFontMd = '14px' as const;\nexport const avatarFontLg = '22px' as const;\nexport const avatarFontWeight = '600' as const;\n\nexport const avatarFont = {\n sm: avatarFontSm,\n md: avatarFontMd,\n lg: avatarFontLg,\n weight: avatarFontWeight,\n} as const;\n\nexport const avatarLetterSpacing = '0.02em' as const;\n\nexport const avatarLetter = {\n spacing: avatarLetterSpacing,\n} as const;\n\nexport const avatar = {\n bg: avatarBg,\n text: avatarText,\n border: avatarBorder,\n size: avatarSize,\n font: avatarFont,\n letter: avatarLetter,\n} as const;\n\n// ============================================================\n// PROGRESS\n// ============================================================\n\nexport const progressTrackBg = '#E2E8F0' as const;\n\nexport const progressTrack = {\n bg: progressTrackBg,\n} as const;\n\nexport const progressFillBg = '#217B80' as const;\n\nexport const progressFill = {\n bg: progressFillBg,\n} as const;\nexport const progressRadius = '9999px' as const;\n\nexport const progressHeightSm = '4px' as const;\nexport const progressHeightMd = '8px' as const;\nexport const progressHeightLg = '12px' as const;\n\nexport const progressHeight = {\n sm: progressHeightSm,\n md: progressHeightMd,\n lg: progressHeightLg,\n} as const;\n\nexport const progressLabelColor = '#334155' as const;\nexport const progressLabelSize = '12px' as const;\n\nexport const progressLabel = {\n color: progressLabelColor,\n size: progressLabelSize,\n} as const;\n\nexport const progress = {\n track: progressTrack,\n fill: progressFill,\n radius: progressRadius,\n height: progressHeight,\n label: progressLabel,\n} as const;\n\n// ============================================================\n// SKELETON\n// ============================================================\nexport const skeletonBg = '#E2E8F0' as const;\nexport const skeletonHighlight = '#F8FAFC' as const;\n\nexport const skeletonRadiusSm = '4px' as const;\nexport const skeletonRadiusLg = '12px' as const;\n\nexport const skeletonRadius = {\n sm: skeletonRadiusSm,\n lg: skeletonRadiusLg,\n} as const;\n\nexport const skeletonPulseWidth = '8rem' as const;\n\nexport const skeletonPulse = {\n width: skeletonPulseWidth,\n} as const;\nexport const skeletonDuration = '1.6s' as const;\n\nexport const skeleton = {\n bg: skeletonBg,\n highlight: skeletonHighlight,\n radius: skeletonRadius,\n pulse: skeletonPulse,\n duration: skeletonDuration,\n} as const;\n\n// ============================================================\n// CAROUSEL\n// ============================================================\nexport const carouselGap = '12px' as const;\nexport const carouselRadius = '12px' as const;\nexport const carouselTransition = 'transform 0.4s cubic-bezier(0.22, 1, 0.36, 1)' as const;\nexport const carouselArrowSize = '36px' as const;\n\nexport const carouselArrowBgHover = '#F8FAFC' as const;\n\nexport const carouselArrowBg = {\n hover: carouselArrowBgHover,\n} as const;\nexport const carouselArrowBorder = '#E2E8F0' as const;\nexport const carouselArrowColor = '#334155' as const;\nexport const carouselArrowShadow = '0 2px 8px rgba(15, 23, 42, 0.12)' as const;\nexport const carouselArrowOffset = '12px' as const;\n\nexport const carouselArrowDisabledOpacity = '0.4' as const;\n\nexport const carouselArrowDisabled = {\n opacity: carouselArrowDisabledOpacity,\n} as const;\n\nexport const carouselArrow = {\n size: carouselArrowSize,\n bg: carouselArrowBg,\n border: carouselArrowBorder,\n color: carouselArrowColor,\n shadow: carouselArrowShadow,\n offset: carouselArrowOffset,\n disabled: carouselArrowDisabled,\n} as const;\n\nexport const carouselDotSizeActive = '20px' as const;\n\nexport const carouselDotSize = {\n active: carouselDotSizeActive,\n} as const;\n\nexport const carouselDotBgActive = '#217B80' as const;\n\nexport const carouselDotBg = {\n active: carouselDotBgActive,\n} as const;\nexport const carouselDotGap = '6px' as const;\n\nexport const carouselDotRowMargin = '12px' as const;\n\nexport const carouselDotRow = {\n margin: carouselDotRowMargin,\n} as const;\n\nexport const carouselDot = {\n size: carouselDotSize,\n bg: carouselDotBg,\n gap: carouselDotGap,\n row: carouselDotRow,\n} as const;\n\nexport const carousel = {\n gap: carouselGap,\n radius: carouselRadius,\n transition: carouselTransition,\n arrow: carouselArrow,\n dot: carouselDot,\n} as const;\n\n// ============================================================\n// DIALOG\n// ============================================================\n\nexport const dialogOverlayBg = 'rgba(15, 23, 42, 0.5)' as const;\n\nexport const dialogOverlay = {\n bg: dialogOverlayBg,\n} as const;\nexport const dialogBg = '#FFFFFF' as const;\nexport const dialogRadius = '12px' as const;\nexport const dialogShadow = '0 24px 48px rgba(15, 23, 42, 0.18)' as const;\nexport const dialogPadding = '20px' as const;\n\nexport const dialogMaxWidth = '480px' as const;\n\nexport const dialogMax = {\n width: dialogMaxWidth,\n} as const;\n\nexport const dialogTitleSize = '18px' as const;\nexport const dialogTitleWeight = '600' as const;\nexport const dialogTitleColor = '#0F172A' as const;\n\nexport const dialogTitle = {\n size: dialogTitleSize,\n weight: dialogTitleWeight,\n color: dialogTitleColor,\n} as const;\n\nexport const dialogBodyColor = '#334155' as const;\n\nexport const dialogBody = {\n color: dialogBodyColor,\n} as const;\nexport const dialogCloseColor = '#64748B' as const;\n\nexport const dialogCloseHoverBg = 'rgba(15, 23, 42, 0.06)' as const;\n\nexport const dialogCloseHover = {\n bg: dialogCloseHoverBg,\n} as const;\n\nexport const dialogClose = {\n color: dialogCloseColor,\n hover: dialogCloseHover,\n} as const;\n\nexport const dialog = {\n overlay: dialogOverlay,\n bg: dialogBg,\n radius: dialogRadius,\n shadow: dialogShadow,\n padding: dialogPadding,\n max: dialogMax,\n title: dialogTitle,\n body: dialogBody,\n close: dialogClose,\n} as const;\n\n// ============================================================\n// TOAST\n// ============================================================\nexport const toastBg = '#1E293B' as const;\nexport const toastText = '#F8FAFC' as const;\nexport const toastRadius = '10px' as const;\nexport const toastPadding = '12px 16px' as const;\nexport const toastShadow = '0 10px 32px rgba(15, 23, 42, 0.24)' as const;\nexport const toastGap = '12px' as const;\n\nexport const toastMinWidth = '280px' as const;\n\nexport const toastMin = {\n width: toastMinWidth,\n} as const;\n\nexport const toastMaxWidth = '400px' as const;\n\nexport const toastMax = {\n width: toastMaxWidth,\n} as const;\n\nexport const toastSuccessBg = '#15803D' as const;\n\nexport const toastSuccess = {\n bg: toastSuccessBg,\n} as const;\n\nexport const toastErrorBg = '#DC2626' as const;\n\nexport const toastError = {\n bg: toastErrorBg,\n} as const;\n\nexport const toastWarningBg = '#A16207' as const;\n\nexport const toastWarning = {\n bg: toastWarningBg,\n} as const;\n\nexport const toastInfoBg = '#2563EB' as const;\n\nexport const toastInfo = {\n bg: toastInfoBg,\n} as const;\n\nexport const toast = {\n bg: toastBg,\n text: toastText,\n radius: toastRadius,\n padding: toastPadding,\n shadow: toastShadow,\n gap: toastGap,\n min: toastMin,\n max: toastMax,\n success: toastSuccess,\n error: toastError,\n warning: toastWarning,\n info: toastInfo,\n} as const;\n\n// ============================================================\n// TABS\n// ============================================================\n\nexport const tabsListBorder = '#E2E8F0' as const;\n\nexport const tabsList = {\n border: tabsListBorder,\n} as const;\n\nexport const tabsTabColorActive = '#217B80' as const;\nexport const tabsTabColorHover = '#334155' as const;\n\nexport const tabsTabColor = {\n active: tabsTabColorActive,\n hover: tabsTabColorHover,\n} as const;\nexport const tabsTabPadding = '10px 16px' as const;\nexport const tabsTabRadius = '8px' as const;\n\nexport const tabsTabFontSize = '14px' as const;\nexport const tabsTabFontWeight = '500' as const;\n\nexport const tabsTabFont = {\n size: tabsTabFontSize,\n weight: tabsTabFontWeight,\n} as const;\n\nexport const tabsTab = {\n color: tabsTabColor,\n padding: tabsTabPadding,\n radius: tabsTabRadius,\n font: tabsTabFont,\n} as const;\n\nexport const tabsIndicatorColor = '#217B80' as const;\nexport const tabsIndicatorHeight = '2px' as const;\n\nexport const tabsIndicator = {\n color: tabsIndicatorColor,\n height: tabsIndicatorHeight,\n} as const;\n\nexport const tabsDisabledOpacity = '0.5' as const;\n\nexport const tabsDisabled = {\n opacity: tabsDisabledOpacity,\n} as const;\n\nexport const tabsPillBgActive = '#217B80' as const;\n\nexport const tabsPillBg = {\n active: tabsPillBgActive,\n} as const;\n\nexport const tabsPillTextActive = '#FFFFFF' as const;\n\nexport const tabsPillText = {\n active: tabsPillTextActive,\n} as const;\n\nexport const tabsPill = {\n bg: tabsPillBg,\n text: tabsPillText,\n} as const;\n\nexport const tabs = {\n list: tabsList,\n tab: tabsTab,\n indicator: tabsIndicator,\n disabled: tabsDisabled,\n pill: tabsPill,\n} as const;\n\n// ============================================================\n// ACCORDION\n// ============================================================\nexport const accordionBg = '#FFFFFF' as const;\nexport const accordionBorder = '#E2E8F0' as const;\nexport const accordionRadius = '10px' as const;\nexport const accordionHeaderPadding = '14px 16px' as const;\n\nexport const accordionHeaderBgHover = '#F8FAFC' as const;\n\nexport const accordionHeaderBg = {\n hover: accordionHeaderBgHover,\n} as const;\nexport const accordionHeaderRadius = '0' as const;\n\nexport const accordionHeader = {\n padding: accordionHeaderPadding,\n bg: accordionHeaderBg,\n radius: accordionHeaderRadius,\n} as const;\nexport const accordionBodyPadding = '0 16px 14px' as const;\nexport const accordionBodySize = '14px' as const;\n\nexport const accordionBodyLineHeight = '1.5' as const;\n\nexport const accordionBodyLine = {\n height: accordionBodyLineHeight,\n} as const;\n\nexport const accordionBodyMaxHeight = '1000px' as const;\n\nexport const accordionBodyMax = {\n height: accordionBodyMaxHeight,\n} as const;\nexport const accordionBodyColor = '#475569' as const;\n\nexport const accordionBody = {\n padding: accordionBodyPadding,\n size: accordionBodySize,\n line: accordionBodyLine,\n max: accordionBodyMax,\n color: accordionBodyColor,\n} as const;\n\nexport const accordionTitleColor = '#0F172A' as const;\nexport const accordionTitleSize = '14px' as const;\nexport const accordionTitleWeight = '500' as const;\n\nexport const accordionTitle = {\n color: accordionTitleColor,\n size: accordionTitleSize,\n weight: accordionTitleWeight,\n} as const;\n\nexport const accordionChevronColor = '#64748B' as const;\n\nexport const accordionChevron = {\n color: accordionChevronColor,\n} as const;\nexport const accordionTransition = '0.2s ease' as const;\n\nexport const accordion = {\n bg: accordionBg,\n border: accordionBorder,\n radius: accordionRadius,\n header: accordionHeader,\n body: accordionBody,\n title: accordionTitle,\n chevron: accordionChevron,\n transition: accordionTransition,\n} as const;\n\n// ============================================================\n// ALERT\n// ============================================================\nexport const alertRadius = '10px' as const;\nexport const alertPadding = '12px 14px' as const;\nexport const alertGap = '10px' as const;\n\nexport const alertTitleWeight = '600' as const;\nexport const alertTitleSize = '14px' as const;\n\nexport const alertTitle = {\n weight: alertTitleWeight,\n size: alertTitleSize,\n} as const;\n\nexport const alertBodySize = '13px' as const;\n\nexport const alertBody = {\n size: alertBodySize,\n} as const;\nexport const alertCloseSize = '22px' as const;\nexport const alertCloseOpacity = '0.7' as const;\n\nexport const alertCloseHoverBg = 'rgba(15, 23, 42, 0.06)' as const;\n\nexport const alertCloseHover = {\n bg: alertCloseHoverBg,\n} as const;\n\nexport const alertClose = {\n size: alertCloseSize,\n opacity: alertCloseOpacity,\n hover: alertCloseHover,\n} as const;\nexport const alertTransition = '0.15s ease' as const;\n\nexport const alertInfoBg = '#EFF6FF' as const;\nexport const alertInfoBorder = '#BFDBFE' as const;\nexport const alertInfoText = '#1E3A8A' as const;\nexport const alertInfoIcon = '#2563EB' as const;\n\nexport const alertInfo = {\n bg: alertInfoBg,\n border: alertInfoBorder,\n text: alertInfoText,\n icon: alertInfoIcon,\n} as const;\n\nexport const alertSuccessBg = '#F0FDF4' as const;\nexport const alertSuccessBorder = '#BBF7D0' as const;\nexport const alertSuccessText = '#14532D' as const;\nexport const alertSuccessIcon = '#15803D' as const;\n\nexport const alertSuccess = {\n bg: alertSuccessBg,\n border: alertSuccessBorder,\n text: alertSuccessText,\n icon: alertSuccessIcon,\n} as const;\n\nexport const alertWarningBg = '#FEFCE8' as const;\nexport const alertWarningBorder = '#FEF08A' as const;\nexport const alertWarningText = '#713F12' as const;\nexport const alertWarningIcon = '#A16207' as const;\n\nexport const alertWarning = {\n bg: alertWarningBg,\n border: alertWarningBorder,\n text: alertWarningText,\n icon: alertWarningIcon,\n} as const;\n\nexport const alertDangerBg = '#FEF2F2' as const;\nexport const alertDangerBorder = '#FECACA' as const;\nexport const alertDangerText = '#7F1D1D' as const;\nexport const alertDangerIcon = '#DC2626' as const;\n\nexport const alertDanger = {\n bg: alertDangerBg,\n border: alertDangerBorder,\n text: alertDangerText,\n icon: alertDangerIcon,\n} as const;\n\nexport const alert = {\n radius: alertRadius,\n padding: alertPadding,\n gap: alertGap,\n title: alertTitle,\n body: alertBody,\n close: alertClose,\n transition: alertTransition,\n info: alertInfo,\n success: alertSuccess,\n warning: alertWarning,\n danger: alertDanger,\n} as const;\n\n// ============================================================\n// DIVIDER\n// ============================================================\n\nexport const dividerColorStrong = '#CBD5E1' as const;\n\nexport const dividerColor = {\n strong: dividerColorStrong,\n} as const;\nexport const dividerThickness = '1px' as const;\nexport const dividerSpacing = '16px' as const;\n\nexport const dividerTextColor = '#64748B' as const;\nexport const dividerTextSize = '12px' as const;\nexport const dividerTextPadding = '12px' as const;\n\nexport const dividerText = {\n color: dividerTextColor,\n size: dividerTextSize,\n padding: dividerTextPadding,\n} as const;\n\nexport const divider = {\n color: dividerColor,\n thickness: dividerThickness,\n spacing: dividerSpacing,\n text: dividerText,\n} as const;\n\n// ============================================================\n// BREADCRUMB\n// ============================================================\n\nexport const breadcrumbColorHover = '#217B80' as const;\nexport const breadcrumbColorCurrent = '#0F172A' as const;\n\nexport const breadcrumbColor = {\n hover: breadcrumbColorHover,\n current: breadcrumbColorCurrent,\n} as const;\n\nexport const breadcrumbSeparatorColor = '#94A3B8' as const;\n\nexport const breadcrumbSeparator = {\n color: breadcrumbSeparatorColor,\n} as const;\n\nexport const breadcrumbFontSize = '13px' as const;\n\nexport const breadcrumbFont = {\n size: breadcrumbFontSize,\n} as const;\nexport const breadcrumbGap = '6px' as const;\n\nexport const breadcrumb = {\n color: breadcrumbColor,\n separator: breadcrumbSeparator,\n font: breadcrumbFont,\n gap: breadcrumbGap,\n} as const;\n\n// ============================================================\n// PAGINATION\n// ============================================================\n\nexport const paginationBgHover = '#F1F5F9' as const;\nexport const paginationBgActive = '#217B80' as const;\n\nexport const paginationBg = {\n hover: paginationBgHover,\n active: paginationBgActive,\n} as const;\n\nexport const paginationBorderHover = '#CBD5E1' as const;\nexport const paginationBorderActive = '#217B80' as const;\n\nexport const paginationBorder = {\n hover: paginationBorderHover,\n active: paginationBorderActive,\n} as const;\n\nexport const paginationColorActive = '#FFFFFF' as const;\n\nexport const paginationColor = {\n active: paginationColorActive,\n} as const;\nexport const paginationRadius = '8px' as const;\nexport const paginationGap = '4px' as const;\n\nexport const paginationSizeSm = '28px' as const;\nexport const paginationSizeMd = '36px' as const;\nexport const paginationSizeLg = '42px' as const;\n\nexport const paginationSize = {\n sm: paginationSizeSm,\n md: paginationSizeMd,\n lg: paginationSizeLg,\n} as const;\n\nexport const paginationFontSize = '13px' as const;\n\nexport const paginationFont = {\n size: paginationFontSize,\n} as const;\n\nexport const paginationShadowFocus = '0 0 0 3px rgba(33, 123, 128, 0.15)' as const;\n\nexport const paginationShadow = {\n focus: paginationShadowFocus,\n} as const;\n\nexport const pagination = {\n bg: paginationBg,\n border: paginationBorder,\n color: paginationColor,\n radius: paginationRadius,\n gap: paginationGap,\n size: paginationSize,\n font: paginationFont,\n shadow: paginationShadow,\n} as const;\n\n// ============================================================\n// DROPDOWN\n// ============================================================\nexport const dropdownBg = '#FFFFFF' as const;\nexport const dropdownBorder = '#E2E8F0' as const;\nexport const dropdownRadius = '8px' as const;\n\nexport const dropdownShadowFocus = '0 0 0 3px rgba(33, 123, 128, 0.15)' as const;\n\nexport const dropdownShadow = {\n focus: dropdownShadowFocus,\n} as const;\nexport const dropdownPadding = '4px' as const;\n\nexport const dropdownMinWidth = '180px' as const;\n\nexport const dropdownMin = {\n width: dropdownMinWidth,\n} as const;\n\nexport const dropdownMaxWidth = '320px' as const;\n\nexport const dropdownMax = {\n width: dropdownMaxWidth,\n} as const;\n\nexport const dropdownTriggerBgHover = '#F8FAFC' as const;\n\nexport const dropdownTriggerBg = {\n hover: dropdownTriggerBgHover,\n} as const;\nexport const dropdownTriggerBorder = '#E2E8F0' as const;\nexport const dropdownTriggerColor = '#334155' as const;\n\nexport const dropdownTrigger = {\n bg: dropdownTriggerBg,\n border: dropdownTriggerBorder,\n color: dropdownTriggerColor,\n} as const;\n\nexport const dropdownItemColorDisabled = '#94A3B8' as const;\nexport const dropdownItemColorDestructive = '#DC2626' as const;\n\nexport const dropdownItemColor = {\n disabled: dropdownItemColorDisabled,\n destructive: dropdownItemColorDestructive,\n} as const;\nexport const dropdownItemBgHover = '#F1F5F9' as const;\n\nexport const dropdownItemBgDestructiveHover = '#FEE2E2' as const;\n\nexport const dropdownItemBgDestructive = {\n hover: dropdownItemBgDestructiveHover,\n} as const;\n\nexport const dropdownItemBg = {\n hover: dropdownItemBgHover,\n destructive: dropdownItemBgDestructive,\n} as const;\nexport const dropdownItemPadding = '8px 10px' as const;\n\nexport const dropdownItem = {\n color: dropdownItemColor,\n bg: dropdownItemBg,\n padding: dropdownItemPadding,\n} as const;\nexport const dropdownDivider = '#E2E8F0' as const;\n\nexport const dropdown = {\n bg: dropdownBg,\n border: dropdownBorder,\n radius: dropdownRadius,\n shadow: dropdownShadow,\n padding: dropdownPadding,\n min: dropdownMin,\n max: dropdownMax,\n trigger: dropdownTrigger,\n item: dropdownItem,\n divider: dropdownDivider,\n} as const;\n\n// ============================================================\n// SEARCHBAR\n// ============================================================\n\nexport const searchbarBgDisabled = '#F1F5F9' as const;\n\nexport const searchbarBg = {\n disabled: searchbarBgDisabled,\n} as const;\nexport const searchbarColor = '#0F172A' as const;\nexport const searchbarPlaceholder = '#94A3B8' as const;\nexport const searchbarIcon = '#64748B' as const;\n\nexport const searchbarBorderHover = '#94A3B8' as const;\nexport const searchbarBorderFocus = '#217B80' as const;\n\nexport const searchbarBorder = {\n hover: searchbarBorderHover,\n focus: searchbarBorderFocus,\n} as const;\nexport const searchbarRadius = '8px' as const;\n\nexport const searchbarPaddingX = '12px' as const;\n\nexport const searchbarPadding = {\n x: searchbarPaddingX,\n} as const;\n\nexport const searchbarHeightSm = '32px' as const;\nexport const searchbarHeightMd = '40px' as const;\nexport const searchbarHeightLg = '48px' as const;\n\nexport const searchbarHeight = {\n sm: searchbarHeightSm,\n md: searchbarHeightMd,\n lg: searchbarHeightLg,\n} as const;\n\nexport const searchbarShadowFocus = '0 0 0 3px rgba(33, 123, 128, 0.15)' as const;\n\nexport const searchbarShadow = {\n focus: searchbarShadowFocus,\n} as const;\n\nexport const searchbarSuggestionBgHover = '#F1F5F9' as const;\n\nexport const searchbarSuggestionBg = {\n hover: searchbarSuggestionBgHover,\n} as const;\n\nexport const searchbarSuggestion = {\n bg: searchbarSuggestionBg,\n} as const;\n\nexport const searchbar = {\n bg: searchbarBg,\n color: searchbarColor,\n placeholder: searchbarPlaceholder,\n icon: searchbarIcon,\n border: searchbarBorder,\n radius: searchbarRadius,\n padding: searchbarPadding,\n height: searchbarHeight,\n shadow: searchbarShadow,\n suggestion: searchbarSuggestion,\n} as const;\n\n// ============================================================\n// RATING\n// ============================================================\n\nexport const ratingColorFilled = '#F59E0B' as const;\nexport const ratingColorEmpty = '#E2E8F0' as const;\n\nexport const ratingColor = {\n filled: ratingColorFilled,\n empty: ratingColorEmpty,\n} as const;\n\nexport const ratingLabelColor = '#334155' as const;\n\nexport const ratingLabel = {\n color: ratingLabelColor,\n} as const;\nexport const ratingGap = '2px' as const;\n\nexport const ratingSizeSm = '16px' as const;\nexport const ratingSizeMd = '22px' as const;\nexport const ratingSizeLg = '28px' as const;\n\nexport const ratingSize = {\n sm: ratingSizeSm,\n md: ratingSizeMd,\n lg: ratingSizeLg,\n} as const;\n\nexport const rating = {\n color: ratingColor,\n label: ratingLabel,\n gap: ratingGap,\n size: ratingSize,\n} as const;\n\n// ============================================================\n// QTY\n// ============================================================\nexport const qtyBg = '#FFFFFF' as const;\nexport const qtyBorder = '#E2E8F0' as const;\nexport const qtyRadius = '8px' as const;\n\nexport const qtyButtonBgHover = '#F1F5F9' as const;\n\nexport const qtyButtonBg = {\n hover: qtyButtonBgHover,\n} as const;\nexport const qtyButtonColor = '#334155' as const;\n\nexport const qtyButtonSizeSm = '28px' as const;\nexport const qtyButtonSizeMd = '36px' as const;\nexport const qtyButtonSizeLg = '44px' as const;\n\nexport const qtyButtonSize = {\n sm: qtyButtonSizeSm,\n md: qtyButtonSizeMd,\n lg: qtyButtonSizeLg,\n} as const;\n\nexport const qtyButton = {\n bg: qtyButtonBg,\n color: qtyButtonColor,\n size: qtyButtonSize,\n} as const;\nexport const qtyInputColor = '#0F172A' as const;\n\nexport const qtyInputWidthSm = '40px' as const;\nexport const qtyInputWidthMd = '52px' as const;\nexport const qtyInputWidthLg = '64px' as const;\n\nexport const qtyInputWidth = {\n sm: qtyInputWidthSm,\n md: qtyInputWidthMd,\n lg: qtyInputWidthLg,\n} as const;\n\nexport const qtyInput = {\n color: qtyInputColor,\n width: qtyInputWidth,\n} as const;\n\nexport const qtyShadowFocus = '0 0 0 3px rgba(33, 123, 128, 0.18)' as const;\n\nexport const qtyShadow = {\n focus: qtyShadowFocus,\n} as const;\n\nexport const qty = {\n bg: qtyBg,\n border: qtyBorder,\n radius: qtyRadius,\n button: qtyButton,\n input: qtyInput,\n shadow: qtyShadow,\n} as const;\n\n// ============================================================\n// STEPPER\n// ============================================================\nexport const stepperCircleSize = '32px' as const;\n\nexport const stepperCircleBgActive = '#FFFFFF' as const;\nexport const stepperCircleBgComplete = '#217B80' as const;\n\nexport const stepperCircleBg = {\n active: stepperCircleBgActive,\n complete: stepperCircleBgComplete,\n} as const;\n\nexport const stepperCircleBorderActive = '#217B80' as const;\nexport const stepperCircleBorderComplete = '#217B80' as const;\n\nexport const stepperCircleBorder = {\n active: stepperCircleBorderActive,\n complete: stepperCircleBorderComplete,\n} as const;\n\nexport const stepperCircleColorActive = '#217B80' as const;\nexport const stepperCircleColorComplete = '#FFFFFF' as const;\n\nexport const stepperCircleColor = {\n active: stepperCircleColorActive,\n complete: stepperCircleColorComplete,\n} as const;\n\nexport const stepperCircle = {\n size: stepperCircleSize,\n bg: stepperCircleBg,\n border: stepperCircleBorder,\n color: stepperCircleColor,\n} as const;\n\nexport const stepperConnectorBgComplete = '#217B80' as const;\n\nexport const stepperConnectorBg = {\n complete: stepperConnectorBgComplete,\n} as const;\n\nexport const stepperConnector = {\n bg: stepperConnectorBg,\n} as const;\n\nexport const stepperLabelColorActive = '#0F172A' as const;\n\nexport const stepperLabelColor = {\n active: stepperLabelColorActive,\n} as const;\n\nexport const stepperLabel = {\n color: stepperLabelColor,\n} as const;\n\nexport const stepperDescriptionColor = '#64748B' as const;\n\nexport const stepperDescription = {\n color: stepperDescriptionColor,\n} as const;\n\nexport const stepperShadowActive = '0 0 0 4px rgba(33, 123, 128, 0.15)' as const;\n\nexport const stepperShadow = {\n active: stepperShadowActive,\n} as const;\n\nexport const stepper = {\n circle: stepperCircle,\n connector: stepperConnector,\n label: stepperLabel,\n description: stepperDescription,\n shadow: stepperShadow,\n} as const;\n\n// ============================================================\n// TABLE\n// ============================================================\nexport const tableBg = '#FFFFFF' as const;\nexport const tableBorder = '#E2E8F0' as const;\nexport const tableRadius = '10px' as const;\n\nexport const tableHeaderBg = '#217B80' as const;\nexport const tableHeaderColor = '#FFFFFF' as const;\n\nexport const tableHeader = {\n bg: tableHeaderBg,\n color: tableHeaderColor,\n} as const;\nexport const tableRowBorder = '#F1F5F9' as const;\n\nexport const tableRowBgHover = '#F8FAFC' as const;\n\nexport const tableRowBg = {\n hover: tableRowBgHover,\n} as const;\n\nexport const tableRowSelectedBg = '#eff6ff' as const;\n\nexport const tableRowSelected = {\n bg: tableRowSelectedBg,\n} as const;\n\nexport const tableRowHoverBg = '#f8fafc' as const;\n\nexport const tableRowHover = {\n bg: tableRowHoverBg,\n} as const;\n\nexport const tableRow = {\n border: tableRowBorder,\n bg: tableRowBg,\n selected: tableRowSelected,\n hover: tableRowHover,\n} as const;\nexport const tableCellColor = '#0F172A' as const;\n\nexport const tableCellPaddingX = '14px' as const;\nexport const tableCellPaddingY = '12px' as const;\n\nexport const tableCellPadding = {\n x: tableCellPaddingX,\n y: tableCellPaddingY,\n} as const;\n\nexport const tableCell = {\n color: tableCellColor,\n padding: tableCellPadding,\n} as const;\n\nexport const tableSortActive = '#FFFFFF' as const;\n\nexport const tableSort = {\n active: tableSortActive,\n} as const;\n\nexport const tableEmptyColor = '#64748B' as const;\n\nexport const tableEmpty = {\n color: tableEmptyColor,\n} as const;\n\nexport const tableFilterRowBg = '#f8fafc' as const;\n\nexport const tableFilterRow = {\n bg: tableFilterRowBg,\n} as const;\n\nexport const tableFilter = {\n row: tableFilterRow,\n} as const;\n\nexport const tableResizerColor = '#3b82f6' as const;\n\nexport const tableResizer = {\n color: tableResizerColor,\n} as const;\n\nexport const table = {\n bg: tableBg,\n border: tableBorder,\n radius: tableRadius,\n header: tableHeader,\n row: tableRow,\n cell: tableCell,\n sort: tableSort,\n empty: tableEmpty,\n filter: tableFilter,\n resizer: tableResizer,\n} as const;\n\n// ============================================================\n// LIGHTBOX\n// ============================================================\n\nexport const lightboxOverlayBg = 'rgba(2, 6, 23, 0.92)' as const;\n\nexport const lightboxOverlay = {\n bg: lightboxOverlayBg,\n} as const;\nexport const lightboxRadius = '12px' as const;\nexport const lightboxShadow = '0 24px 60px rgba(0, 0, 0, 0.5)' as const;\n\nexport const lightboxButtonBg = 'rgba(255, 255, 255, 0.12)' as const;\nexport const lightboxButtonColor = '#F8FAFC' as const;\n\nexport const lightboxButton = {\n bg: lightboxButtonBg,\n color: lightboxButtonColor,\n} as const;\n\nexport const lightboxTextColor = '#F1F5F9' as const;\n\nexport const lightboxText = {\n color: lightboxTextColor,\n} as const;\n\nexport const lightboxThumbBorderActive = '#2C9CA0' as const;\n\nexport const lightboxThumbBorder = {\n active: lightboxThumbBorderActive,\n} as const;\n\nexport const lightboxThumb = {\n border: lightboxThumbBorder,\n} as const;\n\nexport const lightbox = {\n overlay: lightboxOverlay,\n radius: lightboxRadius,\n shadow: lightboxShadow,\n button: lightboxButton,\n text: lightboxText,\n thumb: lightboxThumb,\n} as const;\n\n// ============================================================\n// POPOVER\n// ============================================================\n\nexport const popoverBg = '#ffffff' as const;\nexport const popoverBorder = '#e2e8f0' as const;\nexport const popoverShadow = '0 8px 24px rgba(15, 23, 42, 0.12)' as const;\nexport const popoverRadius = '8px' as const;\nexport const popoverZ = '9999' as const;\n\nexport const popover = {\n bg: popoverBg,\n border: popoverBorder,\n shadow: popoverShadow,\n radius: popoverRadius,\n z: popoverZ,\n} as const;\n\n// ============================================================\n// DRAWER\n// ============================================================\nexport const drawerBg = '#ffffff' as const;\n\nexport const drawerOverlayBg = 'rgba(15, 23, 42, 0.45)' as const;\n\nexport const drawerOverlay = {\n bg: drawerOverlayBg,\n} as const;\nexport const drawerShadow = '0 12px 32px rgba(15, 23, 42, 0.18)' as const;\nexport const drawerTransition = '260ms ease' as const;\n\nexport const drawer = {\n bg: drawerBg,\n overlay: drawerOverlay,\n shadow: drawerShadow,\n transition: drawerTransition,\n} as const;\n\n// ============================================================\n// DATEPICKER\n// ============================================================\n\nexport const datepickerCellSize = '36px' as const;\nexport const datepickerCellRadius = '6px' as const;\n\nexport const datepickerCell = {\n size: datepickerCellSize,\n radius: datepickerCellRadius,\n} as const;\n\nexport const datepickerTodayRing = '#217B80' as const;\n\nexport const datepickerToday = {\n ring: datepickerTodayRing,\n} as const;\n\nexport const datepickerSelectedBg = '#217B80' as const;\n\nexport const datepickerSelected = {\n bg: datepickerSelectedBg,\n} as const;\n\nexport const datepickerRangeBg = '#F1F5F9' as const;\n\nexport const datepickerRange = {\n bg: datepickerRangeBg,\n} as const;\n\nexport const datepicker = {\n cell: datepickerCell,\n today: datepickerToday,\n selected: datepickerSelected,\n range: datepickerRange,\n} as const;\n\n// ============================================================\n// OTP\n// ============================================================\nexport const otpCellSize = '40px' as const;\nexport const otpCellGap = '8px' as const;\nexport const otpCellBorder = '#e2e8f0' as const;\n\nexport const otpCellFocusRing = '0 0 0 3px rgba(59, 130, 246, 0.18)' as const;\n\nexport const otpCellFocus = {\n ring: otpCellFocusRing,\n} as const;\n\nexport const otpCell = {\n size: otpCellSize,\n gap: otpCellGap,\n border: otpCellBorder,\n focus: otpCellFocus,\n} as const;\n\nexport const otp = {\n cell: otpCell,\n} as const;\n\n// ============================================================\n// UPLOAD\n// ============================================================\n\nexport const uploadBorderActive = '#3b82f6' as const;\n\nexport const uploadBorder = {\n active: uploadBorderActive,\n} as const;\n\nexport const uploadBgActive = '#eff6ff' as const;\n\nexport const uploadBg = {\n active: uploadBgActive,\n} as const;\n\nexport const upload = {\n border: uploadBorder,\n bg: uploadBg,\n} as const;\n\n// ============================================================\n// SEGMENTED\n// ============================================================\n\nexport const segmentedTrackBg = '#f1f5f9' as const;\n\nexport const segmentedTrack = {\n bg: segmentedTrackBg,\n} as const;\n\nexport const segmentedThumbBg = '#ffffff' as const;\nexport const segmentedThumbShadow = '0 1px 2px rgba(15, 23, 42, 0.08),' as const;\n\nexport const segmentedThumb = {\n bg: segmentedThumbBg,\n shadow: segmentedThumbShadow,\n} as const;\n\nexport const segmented = {\n track: segmentedTrack,\n thumb: segmentedThumb,\n} as const;\n\n// ============================================================\n// TREE\n// ============================================================\n\nexport const treeLineColor = '#e2e8f0' as const;\n\nexport const treeLine = {\n color: treeLineColor,\n} as const;\n\nexport const treeRowHoverBg = '#f8fafc' as const;\n\nexport const treeRowHover = {\n bg: treeRowHoverBg,\n} as const;\n\nexport const treeRowSelectedBg = '#eff6ff' as const;\n\nexport const treeRowSelected = {\n bg: treeRowSelectedBg,\n} as const;\n\nexport const treeRow = {\n hover: treeRowHover,\n selected: treeRowSelected,\n} as const;\nexport const treeIndent = '20px' as const;\n\nexport const tree = {\n line: treeLine,\n row: treeRow,\n indent: treeIndent,\n} as const;\n// ============================================================\n// TypeScript types\n// ============================================================\nexport type ColorsArvea = keyof typeof colorsArvea;\nexport type ColorsSlate = keyof typeof colorsSlate;\nexport type Colors = keyof typeof colors;\nexport type ActionBtnValidate = keyof typeof actionBtnValidate;\nexport type ActionBtnEdit = keyof typeof actionBtnEdit;\nexport type ActionBtnPayment = keyof typeof actionBtnPayment;\nexport type ActionBtnOrder = keyof typeof actionBtnOrder;\nexport type ActionBtnPrice = keyof typeof actionBtnPrice;\nexport type ActionBtnDelete = keyof typeof actionBtnDelete;\nexport type ActionBtnView = keyof typeof actionBtnView;\nexport type ActionBtnPdf = keyof typeof actionBtnPdf;\nexport type ActionBtnPause = keyof typeof actionBtnPause;\nexport type ActionBtnDownload = keyof typeof actionBtnDownload;\nexport type ActionBtnUpload = keyof typeof actionBtnUpload;\nexport type ActionBtnCopy = keyof typeof actionBtnCopy;\nexport type ActionBtnPrint = keyof typeof actionBtnPrint;\nexport type ActionBtnSettings = keyof typeof actionBtnSettings;\nexport type ActionBtnArchive = keyof typeof actionBtnArchive;\nexport type ActionBtnRestore = keyof typeof actionBtnRestore;\nexport type ActionBtn = keyof typeof actionBtn;\nexport type Action = keyof typeof action;\nexport type Spacing0 = keyof typeof spacing0;\nexport type Spacing1 = keyof typeof spacing1;\nexport type Spacing2 = keyof typeof spacing2;\nexport type Spacing3 = keyof typeof spacing3;\nexport type Spacing = keyof typeof spacing;\nexport type FontSize = keyof typeof fontSize;\nexport type FontWeight = keyof typeof fontWeight;\nexport type Font = keyof typeof font;\nexport type ButtonDefaultBg = keyof typeof buttonDefaultBg;\nexport type ButtonDefault = keyof typeof buttonDefault;\nexport type ButtonOutlineBg = keyof typeof buttonOutlineBg;\nexport type ButtonOutline = keyof typeof buttonOutline;\nexport type ButtonSecondaryBg = keyof typeof buttonSecondaryBg;\nexport type ButtonSecondary = keyof typeof buttonSecondary;\nexport type ButtonDangerBg = keyof typeof buttonDangerBg;\nexport type ButtonDanger = keyof typeof buttonDanger;\nexport type ButtonLink = keyof typeof buttonLink;\nexport type ButtonTextLink = keyof typeof buttonTextLink;\nexport type ButtonText = keyof typeof buttonText;\nexport type ButtonPadding = keyof typeof buttonPadding;\nexport type ButtonHeight = keyof typeof buttonHeight;\nexport type ButtonSize = keyof typeof buttonSize;\nexport type Button = keyof typeof button;\nexport type LoaderColorSubtle = keyof typeof loaderColorSubtle;\nexport type LoaderColor = keyof typeof loaderColor;\nexport type Loader = keyof typeof loader;\nexport type BadgeSuccess = keyof typeof badgeSuccess;\nexport type BadgeError = keyof typeof badgeError;\nexport type BadgeWarning = keyof typeof badgeWarning;\nexport type BadgeInfo = keyof typeof badgeInfo;\nexport type BadgePending = keyof typeof badgePending;\nexport type BadgeActive = keyof typeof badgeActive;\nexport type BadgeInactive = keyof typeof badgeInactive;\nexport type BadgeFont = keyof typeof badgeFont;\nexport type BadgeLine = keyof typeof badgeLine;\nexport type BadgeLabelDefault = keyof typeof badgeLabelDefault;\nexport type BadgeLabelDestructive = keyof typeof badgeLabelDestructive;\nexport type BadgeLabelSecondary = keyof typeof badgeLabelSecondary;\nexport type BadgeLabelOutline = keyof typeof badgeLabelOutline;\nexport type BadgeLabelFont = keyof typeof badgeLabelFont;\nexport type BadgeLabelLine = keyof typeof badgeLabelLine;\nexport type BadgeLabel = keyof typeof badgeLabel;\nexport type Badge = keyof typeof badge;\nexport type ToggleChecked = keyof typeof toggleChecked;\nexport type ToggleUnchecked = keyof typeof toggleUnchecked;\nexport type ToggleThumb = keyof typeof toggleThumb;\nexport type Toggle = keyof typeof toggle;\nexport type CheckboxChecked = keyof typeof checkboxChecked;\nexport type CheckboxUnchecked = keyof typeof checkboxUnchecked;\nexport type CheckboxDisabled = keyof typeof checkboxDisabled;\nexport type CheckboxCheck = keyof typeof checkboxCheck;\nexport type Checkbox = keyof typeof checkbox;\nexport type RadioChecked = keyof typeof radioChecked;\nexport type RadioUnchecked = keyof typeof radioUnchecked;\nexport type RadioDot = keyof typeof radioDot;\nexport type RadioDisabled = keyof typeof radioDisabled;\nexport type RadioLabel = keyof typeof radioLabel;\nexport type Radio = keyof typeof radio;\nexport type SliderTrackFilled = keyof typeof sliderTrackFilled;\nexport type SliderTrack = keyof typeof sliderTrack;\nexport type SliderThumbBorder = keyof typeof sliderThumbBorder;\nexport type SliderThumbShadow = keyof typeof sliderThumbShadow;\nexport type SliderThumb = keyof typeof sliderThumb;\nexport type SliderLabel = keyof typeof sliderLabel;\nexport type SliderValue = keyof typeof sliderValue;\nexport type SliderTick = keyof typeof sliderTick;\nexport type SliderDisabled = keyof typeof sliderDisabled;\nexport type Slider = keyof typeof slider;\nexport type InputBg = keyof typeof inputBg;\nexport type InputBorder = keyof typeof inputBorder;\nexport type InputPadding = keyof typeof inputPadding;\nexport type InputFont = keyof typeof inputFont;\nexport type InputLabel = keyof typeof inputLabel;\nexport type InputHintColor = keyof typeof inputHintColor;\nexport type InputHint = keyof typeof inputHint;\nexport type InputShadow = keyof typeof inputShadow;\nexport type Input = keyof typeof input;\nexport type SelectBg = keyof typeof selectBg;\nexport type SelectBorder = keyof typeof selectBorder;\nexport type SelectPadding = keyof typeof selectPadding;\nexport type SelectFont = keyof typeof selectFont;\nexport type SelectChevron = keyof typeof selectChevron;\nexport type SelectPopup = keyof typeof selectPopup;\nexport type SelectOptionHover = keyof typeof selectOptionHover;\nexport type SelectOptionActive = keyof typeof selectOptionActive;\nexport type SelectOptionSelected = keyof typeof selectOptionSelected;\nexport type SelectOption = keyof typeof selectOption;\nexport type SelectTag = keyof typeof selectTag;\nexport type Select = keyof typeof select;\nexport type TagBg = keyof typeof tagBg;\nexport type TagText = keyof typeof tagText;\nexport type TagBorder = keyof typeof tagBorder;\nexport type TagFont = keyof typeof tagFont;\nexport type TagRemoveColor = keyof typeof tagRemoveColor;\nexport type TagRemoveHover = keyof typeof tagRemoveHover;\nexport type TagRemove = keyof typeof tagRemove;\nexport type Tag = keyof typeof tag;\nexport type SpinnerTrack = keyof typeof spinnerTrack;\nexport type SpinnerSize = keyof typeof spinnerSize;\nexport type SpinnerBorder = keyof typeof spinnerBorder;\nexport type Spinner = keyof typeof spinner;\nexport type TooltipFont = keyof typeof tooltipFont;\nexport type TooltipArrow = keyof typeof tooltipArrow;\nexport type TooltipMax = keyof typeof tooltipMax;\nexport type Tooltip = keyof typeof tooltip;\nexport type CardShadow = keyof typeof cardShadow;\nexport type Card = keyof typeof card;\nexport type AvatarBg = keyof typeof avatarBg;\nexport type AvatarText = keyof typeof avatarText;\nexport type AvatarBorderRadius = keyof typeof avatarBorderRadius;\nexport type AvatarBorder = keyof typeof avatarBorder;\nexport type AvatarSize = keyof typeof avatarSize;\nexport type AvatarFont = keyof typeof avatarFont;\nexport type AvatarLetter = keyof typeof avatarLetter;\nexport type Avatar = keyof typeof avatar;\nexport type ProgressTrack = keyof typeof progressTrack;\nexport type ProgressFill = keyof typeof progressFill;\nexport type ProgressHeight = keyof typeof progressHeight;\nexport type ProgressLabel = keyof typeof progressLabel;\nexport type Progress = keyof typeof progress;\nexport type SkeletonRadius = keyof typeof skeletonRadius;\nexport type SkeletonPulse = keyof typeof skeletonPulse;\nexport type Skeleton = keyof typeof skeleton;\nexport type CarouselArrowBg = keyof typeof carouselArrowBg;\nexport type CarouselArrowDisabled = keyof typeof carouselArrowDisabled;\nexport type CarouselArrow = keyof typeof carouselArrow;\nexport type CarouselDotSize = keyof typeof carouselDotSize;\nexport type CarouselDotBg = keyof typeof carouselDotBg;\nexport type CarouselDotRow = keyof typeof carouselDotRow;\nexport type CarouselDot = keyof typeof carouselDot;\nexport type Carousel = keyof typeof carousel;\nexport type DialogOverlay = keyof typeof dialogOverlay;\nexport type DialogMax = keyof typeof dialogMax;\nexport type DialogTitle = keyof typeof dialogTitle;\nexport type DialogBody = keyof typeof dialogBody;\nexport type DialogCloseHover = keyof typeof dialogCloseHover;\nexport type DialogClose = keyof typeof dialogClose;\nexport type Dialog = keyof typeof dialog;\nexport type ToastMin = keyof typeof toastMin;\nexport type ToastMax = keyof typeof toastMax;\nexport type ToastSuccess = keyof typeof toastSuccess;\nexport type ToastError = keyof typeof toastError;\nexport type ToastWarning = keyof typeof toastWarning;\nexport type ToastInfo = keyof typeof toastInfo;\nexport type Toast = keyof typeof toast;\nexport type TabsList = keyof typeof tabsList;\nexport type TabsTabColor = keyof typeof tabsTabColor;\nexport type TabsTabFont = keyof typeof tabsTabFont;\nexport type TabsTab = keyof typeof tabsTab;\nexport type TabsIndicator = keyof typeof tabsIndicator;\nexport type TabsDisabled = keyof typeof tabsDisabled;\nexport type TabsPillBg = keyof typeof tabsPillBg;\nexport type TabsPillText = keyof typeof tabsPillText;\nexport type TabsPill = keyof typeof tabsPill;\nexport type Tabs = keyof typeof tabs;\nexport type AccordionHeaderBg = keyof typeof accordionHeaderBg;\nexport type AccordionHeader = keyof typeof accordionHeader;\nexport type AccordionBodyLine = keyof typeof accordionBodyLine;\nexport type AccordionBodyMax = keyof typeof accordionBodyMax;\nexport type AccordionBody = keyof typeof accordionBody;\nexport type AccordionTitle = keyof typeof accordionTitle;\nexport type AccordionChevron = keyof typeof accordionChevron;\nexport type Accordion = keyof typeof accordion;\nexport type AlertTitle = keyof typeof alertTitle;\nexport type AlertBody = keyof typeof alertBody;\nexport type AlertCloseHover = keyof typeof alertCloseHover;\nexport type AlertClose = keyof typeof alertClose;\nexport type AlertInfo = keyof typeof alertInfo;\nexport type AlertSuccess = keyof typeof alertSuccess;\nexport type AlertWarning = keyof typeof alertWarning;\nexport type AlertDanger = keyof typeof alertDanger;\nexport type Alert = keyof typeof alert;\nexport type DividerColor = keyof typeof dividerColor;\nexport type DividerText = keyof typeof dividerText;\nexport type Divider = keyof typeof divider;\nexport type BreadcrumbColor = keyof typeof breadcrumbColor;\nexport type BreadcrumbSeparator = keyof typeof breadcrumbSeparator;\nexport type BreadcrumbFont = keyof typeof breadcrumbFont;\nexport type Breadcrumb = keyof typeof breadcrumb;\nexport type PaginationBg = keyof typeof paginationBg;\nexport type PaginationBorder = keyof typeof paginationBorder;\nexport type PaginationColor = keyof typeof paginationColor;\nexport type PaginationSize = keyof typeof paginationSize;\nexport type PaginationFont = keyof typeof paginationFont;\nexport type PaginationShadow = keyof typeof paginationShadow;\nexport type Pagination = keyof typeof pagination;\nexport type DropdownShadow = keyof typeof dropdownShadow;\nexport type DropdownMin = keyof typeof dropdownMin;\nexport type DropdownMax = keyof typeof dropdownMax;\nexport type DropdownTriggerBg = keyof typeof dropdownTriggerBg;\nexport type DropdownTrigger = keyof typeof dropdownTrigger;\nexport type DropdownItemColor = keyof typeof dropdownItemColor;\nexport type DropdownItemBgDestructive = keyof typeof dropdownItemBgDestructive;\nexport type DropdownItemBg = keyof typeof dropdownItemBg;\nexport type DropdownItem = keyof typeof dropdownItem;\nexport type Dropdown = keyof typeof dropdown;\nexport type SearchbarBg = keyof typeof searchbarBg;\nexport type SearchbarBorder = keyof typeof searchbarBorder;\nexport type SearchbarPadding = keyof typeof searchbarPadding;\nexport type SearchbarHeight = keyof typeof searchbarHeight;\nexport type SearchbarShadow = keyof typeof searchbarShadow;\nexport type SearchbarSuggestionBg = keyof typeof searchbarSuggestionBg;\nexport type SearchbarSuggestion = keyof typeof searchbarSuggestion;\nexport type Searchbar = keyof typeof searchbar;\nexport type RatingColor = keyof typeof ratingColor;\nexport type RatingLabel = keyof typeof ratingLabel;\nexport type RatingSize = keyof typeof ratingSize;\nexport type Rating = keyof typeof rating;\nexport type QtyButtonBg = keyof typeof qtyButtonBg;\nexport type QtyButtonSize = keyof typeof qtyButtonSize;\nexport type QtyButton = keyof typeof qtyButton;\nexport type QtyInputWidth = keyof typeof qtyInputWidth;\nexport type QtyInput = keyof typeof qtyInput;\nexport type QtyShadow = keyof typeof qtyShadow;\nexport type Qty = keyof typeof qty;\nexport type StepperCircleBg = keyof typeof stepperCircleBg;\nexport type StepperCircleBorder = keyof typeof stepperCircleBorder;\nexport type StepperCircleColor = keyof typeof stepperCircleColor;\nexport type StepperCircle = keyof typeof stepperCircle;\nexport type StepperConnectorBg = keyof typeof stepperConnectorBg;\nexport type StepperConnector = keyof typeof stepperConnector;\nexport type StepperLabelColor = keyof typeof stepperLabelColor;\nexport type StepperLabel = keyof typeof stepperLabel;\nexport type StepperDescription = keyof typeof stepperDescription;\nexport type StepperShadow = keyof typeof stepperShadow;\nexport type Stepper = keyof typeof stepper;\nexport type TableHeader = keyof typeof tableHeader;\nexport type TableRowBg = keyof typeof tableRowBg;\nexport type TableRowSelected = keyof typeof tableRowSelected;\nexport type TableRowHover = keyof typeof tableRowHover;\nexport type TableRow = keyof typeof tableRow;\nexport type TableCellPadding = keyof typeof tableCellPadding;\nexport type TableCell = keyof typeof tableCell;\nexport type TableSort = keyof typeof tableSort;\nexport type TableEmpty = keyof typeof tableEmpty;\nexport type TableFilterRow = keyof typeof tableFilterRow;\nexport type TableFilter = keyof typeof tableFilter;\nexport type TableResizer = keyof typeof tableResizer;\nexport type Table = keyof typeof table;\nexport type LightboxOverlay = keyof typeof lightboxOverlay;\nexport type LightboxButton = keyof typeof lightboxButton;\nexport type LightboxText = keyof typeof lightboxText;\nexport type LightboxThumbBorder = keyof typeof lightboxThumbBorder;\nexport type LightboxThumb = keyof typeof lightboxThumb;\nexport type Lightbox = keyof typeof lightbox;\nexport type Popover = keyof typeof popover;\nexport type DrawerOverlay = keyof typeof drawerOverlay;\nexport type Drawer = keyof typeof drawer;\nexport type DatepickerCell = keyof typeof datepickerCell;\nexport type DatepickerToday = keyof typeof datepickerToday;\nexport type DatepickerSelected = keyof typeof datepickerSelected;\nexport type DatepickerRange = keyof typeof datepickerRange;\nexport type Datepicker = keyof typeof datepicker;\nexport type OtpCellFocus = keyof typeof otpCellFocus;\nexport type OtpCell = keyof typeof otpCell;\nexport type Otp = keyof typeof otp;\nexport type UploadBorder = keyof typeof uploadBorder;\nexport type UploadBg = keyof typeof uploadBg;\nexport type Upload = keyof typeof upload;\nexport type SegmentedTrack = keyof typeof segmentedTrack;\nexport type SegmentedThumb = keyof typeof segmentedThumb;\nexport type Segmented = keyof typeof segmented;\nexport type TreeLine = keyof typeof treeLine;\nexport type TreeRowHover = keyof typeof treeRowHover;\nexport type TreeRowSelected = keyof typeof treeRowSelected;\nexport type TreeRow = keyof typeof treeRow;\nexport type Tree = keyof typeof tree;\n"]}